ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDQ5Mjk5ZWUuLjU5ZDM4MzIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsMTEgKzE1LDEzIEBACiBEb2MvdG9vbHMvcHlnbWVudHMvCiBEb2MvdG9vbHMvc3BoaW54LwogTGliL2xpYjJ0bzMvKi5waWNrbGUKK0xpYi90ZXN0L2RhdGEvKgogTGliL19zeXNjb25maWdkYXRhLnB5CiBMaWIvcGxhdC1tYWMvZXJyb3JzLnJzcmMuZGYucnNyYwogTWFrZWZpbGUKIE1ha2VmaWxlLnByZQogTWlzYy9weXRob24ucGMKK01pc2MvcHl0aG9uLWNvbmZpZy5zaAogTW9kdWxlcy9TZXR1cAogTW9kdWxlcy9TZXR1cC5jb25maWcKIE1vZHVsZXMvU2V0dXAubG9jYWwKQEAgLTU3LDYgKzU5LDggQEAKIHB5YnVpbGRkaXIudHh0CiBweWNvbmZpZy5oCiBweXRob24KK3B5dGhvbi1jb25maWcKK3B5dGhvbi1jb25maWcucHkKIHB5dGhvbi5leGUKIHB5dGhvbi1nZGIucHkKIHB5dGhvbi5leGUtZ2RiLnB5CmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggNDJhYjA0MC4uNzNlMWU1NiAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtMTgsNiArMTgsOCBAQAogcHljb25maWcuaCQKIHB5dGhvbiQKIHB5dGhvbi5leGUkCitweXRob24tY29uZmlnJAorcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAogTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKQEAgLTI3LDEyICsyOSwxNCBAQAogRG9jL3Rvb2xzL2ppbmphMi8KIERvYy90b29scy9weWdtZW50cy8KIE1pc2MvcHl0aG9uLnBjCitNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJAogTW9kdWxlcy9TZXR1cC5jb25maWcKIE1vZHVsZXMvU2V0dXAubG9jYWwKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCitebGNvdi1yZXBvcnQvCiBeY29yZQogXnB5dGhvbi1nZGIucHkKIF5weXRob24uZXhlLWdkYi5weQpAQCAtODgsMyArOTIsNyBAQAogLmNvdmVyYWdlCiBjb3ZlcmFnZS8KIGh0bWxjb3YvCisqLmdjZGEKKyouZ2NubworKi5nY292Citjb3ZlcmFnZS5pbmZvCmRpZmYgLS1naXQgYS8uaGd0YWdzIGIvLmhndGFncwppbmRleCAxYmNiMTBlLi44M2E5MWM5IDEwMDY0NAotLS0gYS8uaGd0YWdzCisrKyBiLy5oZ3RhZ3MKQEAgLTExNCwzICsxMTQsNCBAQAogOTJjMmNmYjkyNDA1NWNlNjhjNGY3OGY4MzZkY2ZlNjg4NDM3Y2ViOCB2My4zLjFyYzEKIGQ5ODkzZDEzYzYyODlhYTAzZDMzNTU5ZWM2N2Y5N2RjYmY1YzllM2MgdjMuMy4xCiBkMDQ3OTI4YWUzZjYzMTRhMTNiNjEzNzA1MTMxNTQ1M2QwYWU4OWI2IHYzLjMuMgorNDY1MzVmNjVlN2YzYmNkY2YxNzZmMzZkMzRiYzFmZWQ3MTlmZmQyYiB2My40LjBhMQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2RpY3QucnN0IGIvRG9jL2MtYXBpL2RpY3QucnN0CmluZGV4IDZiYWNjMzIuLjFmNTk5ZmUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9kaWN0LnJzdAorKysgYi9Eb2MvYy1hcGkvZGljdC5yc3QKQEAgLTExMCw2ICsxMTAsMTUgQEAKICAgIDpjOnR5cGU6YGNoYXJcKmAsIHJhdGhlciB0aGFuIGEgOmM6dHlwZTpgUHlPYmplY3RcKmAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeURpY3RfU2V0RGVmYXVsdChQeU9iamVjdCAqcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHQpCisKKyAgIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIFB5dGhvbi1sZXZlbCA6bWV0aDpgZGljdC5zZXRkZWZhdWx0YC4gIElmIHByZXNlbnQsIGl0CisgICByZXR1cm5zIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvICprZXkqIGZyb20gdGhlIGRpY3Rpb25hcnkgKnAqLiAgSWYgdGhlIGtleQorICAgaXMgbm90IGluIHRoZSBkaWN0LCBpdCBpcyBpbnNlcnRlZCB3aXRoIHZhbHVlICpkZWZhdWx0b2JqKiBhbmQgKmRlZmF1bHRvYmoqCisgICBpcyByZXR1cm5lZC4gIFRoaXMgZnVuY3Rpb24gZXZhbHVhdGVzIHRoZSBoYXNoIGZ1bmN0aW9uIG9mICprZXkqIG9ubHkgb25jZSwKKyAgIGluc3RlYWQgb2YgZXZhbHVhdGluZyBpdCBpbmRlcGVuZGVudGx5IGZvciB0aGUgbG9va3VwIGFuZCB0aGUgaW5zZXJ0aW9uLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEaWN0X0l0ZW1zKFB5T2JqZWN0ICpwKQogCiAgICBSZXR1cm4gYSA6Yzp0eXBlOmBQeUxpc3RPYmplY3RgIGNvbnRhaW5pbmcgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBkaWN0aW9uYXJ5LgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2luaXQucnN0IGIvRG9jL2MtYXBpL2luaXQucnN0CmluZGV4IDk1ZmY0ZWUuLjMyMDA3ZDUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbml0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKQEAgLTMyOSw3ICszMjksMTEgQEAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlTeXNfU2V0QXJndihpbnQgYXJnYywgd2NoYXJfdCAqKmFyZ3YpCiAKLSAgIFRoaXMgZnVuY3Rpb24gd29ya3MgbGlrZSA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIHdpdGggKnVwZGF0ZXBhdGgqIHNldCB0byAxLgorICAgVGhpcyBmdW5jdGlvbiB3b3JrcyBsaWtlIDpjOmZ1bmM6YFB5U3lzX1NldEFyZ3ZFeGAgd2l0aCAqdXBkYXRlcGF0aCogc2V0CisgICB0byAxIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUKKyAgIDpvcHRpb246YC1JYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgVGhlICp1cGRhdGVwYXRoKiB2YWx1ZSBkZXBlbmRzIG9uIDpvcHRpb246YC1JYC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9TZXRQeXRob25Ib21lKHdjaGFyX3QgKmhvbWUpCkBAIC02NTQsNiArNjU4LDIwIEBACiAgICBtYWRlIG9uIHRoZSBtYWluIHRocmVhZC4gIFRoaXMgaXMgbWFpbmx5IGEgaGVscGVyL2RpYWdub3N0aWMgZnVuY3Rpb24uCiAKIAorLi4gYzpmdW5jdGlvbjo6IGludCBQeUdJTFN0YXRlX0NoZWNrKCkKKworICAgUmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGhvbGRpbmcgdGhlIEdJTCBhbmQgMCBvdGhlcndpc2UuCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkIGF0IGFueSB0aW1lLgorICAgT25seSBpZiBpdCBoYXMgaGFkIGl0cyBQeXRob24gdGhyZWFkIHN0YXRlIGluaXRpYWxpemVkIGFuZCBjdXJyZW50bHkgaXMKKyAgIGhvbGRpbmcgdGhlIEdJTCB3aWxsIGl0IHJldHVybiAxLgorICAgVGhpcyBpcyBtYWlubHkgYSBoZWxwZXIvZGlhZ25vc3RpYyBmdW5jdGlvbi4gIEl0IGNhbiBiZSB1c2VmdWwKKyAgIGZvciBleGFtcGxlIGluIGNhbGxiYWNrIGNvbnRleHRzIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB3aGVuCisgICBrbm93aW5nIHRoYXQgdGhlIEdJTCBpcyBsb2NrZWQgY2FuIGFsbG93IHRoZSBjYWxsZXIgdG8gcGVyZm9ybSBzZW5zaXRpdmUKKyAgIGFjdGlvbnMgb3Igb3RoZXJ3aXNlIGJlaGF2ZSBkaWZmZXJlbnRseS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogVGhlIGZvbGxvd2luZyBtYWNyb3MgYXJlIG5vcm1hbGx5IHVzZWQgd2l0aG91dCBhIHRyYWlsaW5nIHNlbWljb2xvbjsgbG9vayBmb3IKIGV4YW1wbGUgdXNhZ2UgaW4gdGhlIFB5dGhvbiBzb3VyY2UgZGlzdHJpYnV0aW9uLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CmluZGV4IDhhZmE1NmEuLmU0YTc1OWIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnkucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CkBAIC04NCw2ICs4NCw0OCBAQAogZm9yIHRoZSBJL08gYnVmZmVyIGVzY2FwZXMgY29tcGxldGVseSB0aGUgUHl0aG9uIG1lbW9yeSBtYW5hZ2VyLgogCiAKK1JhdyBNZW1vcnkgSW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNldHMgYXJlIHdyYXBwZXJzIHRvIHRoZSBzeXN0ZW0gYWxsb2NhdG9yLiBUaGVzZQorZnVuY3Rpb25zIGFyZSB0aHJlYWQtc2FmZSwgdGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgZG9lcyBub3QKK25lZWQgdG8gYmUgaGVsZC4KKworVGhlIGRlZmF1bHQgcmF3IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKzpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbCBgYG1hbGxvYygxKWBgIHdoZW4KK3JlcXVlc3RpbmcgemVybyBieXRlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9SYXdNYWxsb2Moc2l6ZV90IG4pCisKKyAgIEFsbG9jYXRlcyAqbiogYnl0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUKKyAgIGFsbG9jYXRlZCBtZW1vcnksIG9yICpOVUxMKiBpZiB0aGUgcmVxdWVzdCBmYWlscy4gUmVxdWVzdGluZyB6ZXJvIGJ5dGVzCisgICByZXR1cm5zIGEgZGlzdGluY3Qgbm9uLSpOVUxMKiBwb2ludGVyIGlmIHBvc3NpYmxlLCBhcyBpZgorICAgYGBQeU1lbV9SYXdNYWxsb2MoMSlgYCBoYWQgYmVlbiBjYWxsZWQgaW5zdGVhZC4gVGhlIG1lbW9yeSB3aWxsIG5vdCBoYXZlCisgICBiZWVuIGluaXRpYWxpemVkIGluIGFueSB3YXkuCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCisKKyAgIFJlc2l6ZXMgdGhlIG1lbW9yeSBibG9jayBwb2ludGVkIHRvIGJ5ICpwKiB0byAqbiogYnl0ZXMuIFRoZSBjb250ZW50cyB3aWxsCisgICBiZSB1bmNoYW5nZWQgdG8gdGhlIG1pbmltdW0gb2YgdGhlIG9sZCBhbmQgdGhlIG5ldyBzaXplcy4gSWYgKnAqIGlzICpOVUxMKiwKKyAgIHRoZSBjYWxsIGlzIGVxdWl2YWxlbnQgdG8gYGBQeU1lbV9SYXdNYWxsb2MobilgYDsgZWxzZSBpZiAqbiogaXMgZXF1YWwgdG8KKyAgIHplcm8sIHRoZSBtZW1vcnkgYmxvY2sgaXMgcmVzaXplZCBidXQgaXMgbm90IGZyZWVkLCBhbmQgdGhlIHJldHVybmVkIHBvaW50ZXIKKyAgIGlzIG5vbi0qTlVMTCouIFVubGVzcyAqcCogaXMgKk5VTEwqLCBpdCBtdXN0IGhhdmUgYmVlbiByZXR1cm5lZCBieSBhCisgICBwcmV2aW91cyBjYWxsIHRvIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2Agb3IgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AuIElmCisgICB0aGUgcmVxdWVzdCBmYWlscywgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AgcmV0dXJucyAqTlVMTCogYW5kICpwKiByZW1haW5zCisgICBhIHZhbGlkIHBvaW50ZXIgdG8gdGhlIHByZXZpb3VzIG1lbW9yeSBhcmVhLgorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1Jhd0ZyZWUodm9pZCAqcCkKKworICAgRnJlZXMgdGhlIG1lbW9yeSBibG9jayBwb2ludGVkIHRvIGJ5ICpwKiwgd2hpY2ggbXVzdCBoYXZlIGJlZW4gcmV0dXJuZWQgYnkgYQorICAgcHJldmlvdXMgY2FsbCB0byA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgIG9yIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLgorICAgT3RoZXJ3aXNlLCBvciBpZiBgYFB5TWVtX0ZyZWUocClgYCBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB1bmRlZmluZWQKKyAgIGJlaGF2aW9yIG9jY3Vycy4gSWYgKnAqIGlzICpOVUxMKiwgbm8gb3BlcmF0aW9uIGlzIHBlcmZvcm1lZC4KKworCiAuLiBfbWVtb3J5aW50ZXJmYWNlOgogCiBNZW1vcnkgSW50ZXJmYWNlCkBAIC05MSw4ICsxMzMsMTYgQEAKIAogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBzZXRzLCBtb2RlbGVkIGFmdGVyIHRoZSBBTlNJIEMgc3RhbmRhcmQsIGJ1dCBzcGVjaWZ5aW5nCiBiZWhhdmlvciB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcywgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgcmVsZWFzaW5nCi1tZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXA6CittZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXAuCiAKK1RoZSBkZWZhdWx0IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKzpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbCBgYG1hbGxvYygxKWBgIHdoZW4KK3JlcXVlc3RpbmcgemVybyBieXRlcy4KKworLi4gd2FybmluZzo6CisKKyAgIFRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIG11c3QgYmUgaGVsZCB3aGVuIHVzaW5nIHRoZXNlCisgICBmdW5jdGlvbnMuCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9NYWxsb2Moc2l6ZV90IG4pCiAKQEAgLTE1NSw2ICsyMDUsMTI1IEBACiA6YzpmdW5jOmBQeU1lbV9ORVdgLCA6YzpmdW5jOmBQeU1lbV9SRVNJWkVgLCA6YzpmdW5jOmBQeU1lbV9ERUxgLgogCiAKK0N1c3RvbWl6ZSBNZW1vcnkgQWxsb2NhdG9ycworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisuLiBjOnR5cGU6OiBQeU1lbUFsbG9jYXRvcgorCisgICBTdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhIG1lbW9yeSBibG9jayBhbGxvY2F0b3IuIFRoZSBzdHJ1Y3R1cmUgaGFzCisgICBmb3VyIGZpZWxkczoKKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBGaWVsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCBgYHZvaWQgKmN0eGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVzZXIgY29udGV4dCBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYHZvaWQqIG1hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKWBgICAgICAgICAgICAgICAgICB8IGFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYHZvaWQqIHJlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSlgYCB8IGFsbG9jYXRlIG9yIHJlc2l6ZSBhIG1lbW9yeSBibG9jayAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYHZvaWQgZnJlZSh2b2lkICpjdHgsIHZvaWQgKnB0cilgYCAgICAgICAgICAgICAgICAgICAgICB8IGZyZWUgYSBtZW1vcnkgYmxvY2sgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisuLiBjOnR5cGU6OiBQeU1lbUFsbG9jYXRvckRvbWFpbgorCisgICBFbnVtIHVzZWQgdG8gaWRlbnRpZnkgYW4gYWxsb2NhdG9yIGRvbWFpbi4gRG9tYWluczoKKworICAgKiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYDogZnVuY3Rpb25zIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsCisgICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGFuZCA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorICAgKiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYDogZnVuY3Rpb25zIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCisgICAgIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgIGFuZCA6YzpmdW5jOmBQeU1lbV9GcmVlYAorICAgKiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYDogZnVuY3Rpb25zIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AsCisgICAgIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgIGFuZCA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYAorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCisKKyAgIEdldCB0aGUgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciBvZiB0aGUgc3BlY2lmaWVkIGRvbWFpbi4KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKQorCisgICBTZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCisKKyAgIFRoZSBuZXcgYWxsb2NhdG9yIG11c3QgcmV0dXJuIGEgZGlzdGluY3Qgbm9uLU5VTEwgcG9pbnRlciB3aGVuIHJlcXVlc3RpbmcKKyAgIHplcm8gYnl0ZXMuCisKKyAgIEZvciB0aGUgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2AgZG9tYWluLCB0aGUgYWxsb2NhdG9yIG11c3QgYmUKKyAgIHRocmVhZC1zYWZlOiB0aGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBpcyBub3QgaGVsZCB3aGVuIHRoZQorICAgYWxsb2NhdG9yIGlzIGNhbGxlZC4KKworICAgSWYgdGhlIG5ldyBhbGxvY2F0b3IgaXMgbm90IGEgaG9vayAoZG9lcyBub3QgY2FsbCB0aGUgcHJldmlvdXMgYWxsb2NhdG9yKSwKKyAgIHRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHRvIHJlaW5zdGFsbCB0aGUKKyAgIGRlYnVnIGhvb2tzIG9uIHRvcCBvbiB0aGUgbmV3IGFsbG9jYXRvci4KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKKworICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgorICAgZnVuY3Rpb25zOgorCisgICAtIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLAorICAgICA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorICAgLSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKyAgIC0gOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsCisgICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisKKyAgIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweENCYGAsIGZyZWVkIG1lbW9yeSBpcworICAgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAuIEFkZGl0aW9ubmFsIGNoZWNrczoKKworICAgLSBkZXRlY3QgQVBJIHZpb2xhdGlvbnMsIGV4OiA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYCBjYWxsZWQgb24gYSBidWZmZXIKKyAgICAgYWxsb2NhdGVkIGJ5IDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AKKyAgIC0gZGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gZGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorCisgICBUaGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgY29tcGlsZWQgaXMgZGVidWcgbW9kZS4KKworCitDdXN0b21pemUgUHlPYmplY3QgQXJlbmEgQWxsb2NhdG9yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1B5dGhvbiBoYXMgYSAqcHltYWxsb2MqIGFsbG9jYXRvciBmb3IgYWxsb2NhdGlvbnMgc21hbGxlciB0aGFuIDUxMiBieXRlcy4gVGhpcworYWxsb2NhdG9yIGlzIG9wdGltaXplZCBmb3Igc21hbGwgb2JqZWN0cyB3aXRoIGEgc2hvcnQgbGlmZXRpbWUuIEl0IHVzZXMgbWVtb3J5CittYXBwaW5ncyBjYWxsZWQgImFyZW5hcyIgd2l0aCBhIGZpeGVkIHNpemUgb2YgMjU2IEtCLiBJdCBmYWxscyBiYWNrIHRvCis6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGFuZCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCBmb3IgYWxsb2NhdGlvbnMgbGFyZ2VyIHRoYW4KKzUxMiBieXRlcy4gICpweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIHVzZWQgYnkKKzpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AuCisKK1RoZSBkZWZhdWx0IGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCisqIDpjOmZ1bmM6YFZpcnR1YWxBbGxvY2AgYW5kIDpjOmZ1bmM6YFZpcnR1YWxGcmVlYCBvbiBXaW5kb3dzLAorKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCisqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KKworLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGM6dHlwZTo6IFB5T2JqZWN0QXJlbmFBbGxvY2F0b3IKKworICAgU3RydWN0dXJlIHVzZWQgdG8gZGVzY3JpYmUgYW4gYXJlbmEgYWxsb2NhdG9yLiBUaGUgc3RydWN0dXJlIGhhcworICAgdGhyZWUgZmllbGRzOgorCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBGaWVsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IGBgdm9pZCAqY3R4YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVzZXIgY29udGV4dCBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGB2b2lkKiBhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKWBgICAgICAgICAgIHwgYWxsb2NhdGUgYW4gYXJlbmEgb2Ygc2l6ZSBieXRlcyAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYHZvaWQgZnJlZSh2b2lkICpjdHgsIHNpemVfdCBzaXplLCB2b2lkICpwdHIpYGAgfCBmcmVlIGFuIGFyZW5hICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdF9HZXRBcmVuYUFsbG9jYXRvcihQeU9iamVjdEFyZW5hQWxsb2NhdG9yICphbGxvY2F0b3IpCisKKyAgIEdldCB0aGUgYXJlbmEgYWxsb2NhdG9yLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3RfU2V0QXJlbmFBbGxvY2F0b3IoUHlPYmplY3RBcmVuYUFsbG9jYXRvciAqYWxsb2NhdG9yKQorCisgICBTZXQgdGhlIGFyZW5hIGFsbG9jYXRvci4KKworCiAuLiBfbWVtb3J5ZXhhbXBsZXM6CiAKIEV4YW1wbGVzCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdCBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CmluZGV4IGU4MGUwZWEuLjI2YzQzODQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tb2R1bGUucnN0CisrKyBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CkBAIC0zNSwxMyArMzUsMjAgQEAKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAgICAgICBzaW5nbGU6IF9fZG9jX18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAgICAgICBzaW5nbGU6IF9fZmlsZV9fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX3BhY2thZ2VfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19sb2FkZXJfXyAobW9kdWxlIGF0dHJpYnV0ZSkKIAogICAgUmV0dXJuIGEgbmV3IG1vZHVsZSBvYmplY3Qgd2l0aCB0aGUgOmF0dHI6YF9fbmFtZV9fYCBhdHRyaWJ1dGUgc2V0IHRvICpuYW1lKi4KLSAgIE9ubHkgdGhlIG1vZHVsZSdzIDphdHRyOmBfX2RvY19fYCBhbmQgOmF0dHI6YF9fbmFtZV9fYCBhdHRyaWJ1dGVzIGFyZSBmaWxsZWQgaW47Ci0gICB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgYSA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZS4KKyAgIFRoZSBtb2R1bGUncyA6YXR0cjpgX19uYW1lX19gLCA6YXR0cjpgX19kb2NfX2AsIDphdHRyOmBfX3BhY2thZ2VfX2AsIGFuZAorICAgOmF0dHI6YF9fbG9hZGVyX19gIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCBpbiAoYWxsIGJ1dCA6YXR0cjpgX19uYW1lX19gIGFyZSBzZXQKKyAgIHRvIGBgTm9uZWBgKTsgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGEgOmF0dHI6YF9fZmlsZV9fYAorICAgYXR0cmlidXRlLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYW5kIDphdHRyOmBfX2xvYWRlcl9fYCBhcmUgc2V0IHRvIGBgTm9uZWBgLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfTmV3KGNvbnN0IGNoYXIgKm5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9vYmplY3QucnN0IGIvRG9jL2MtYXBpL29iamVjdC5yc3QKaW5kZXggYTQ3MTgzYy4uNzkxY2RiYiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL29iamVjdC5yc3QKKysrIGIvRG9jL2MtYXBpL29iamVjdC5yc3QKQEAgLTI0MCw3ICsyNDAsNyBAQAogICAgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uIGBgY2FsbGFibGVfb2JqZWN0KCphcmdzKWBgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5T2JqZWN0ICpjYWxsYWJsZSwgY2hhciAqZm9ybWF0LCAuLi4pCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogCiAgICBDYWxsIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdCAqY2FsbGFibGUqLCB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIEMgYXJndW1lbnRzLgogICAgVGhlIEMgYXJndW1lbnRzIGFyZSBkZXNjcmliZWQgdXNpbmcgYSA6YzpmdW5jOmBQeV9CdWlsZFZhbHVlYCBzdHlsZSBmb3JtYXQKQEAgLTI1MCw4ICsyNTAsMTEgQEAKICAgIHBhc3MgOmM6dHlwZTpgUHlPYmplY3QgXCpgIGFyZ3MsIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3NgIGlzIGEKICAgIGZhc3RlciBhbHRlcm5hdGl2ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFRoZSB0eXBlIG9mICpmb3JtYXQqIHdhcyBjaGFuZ2VkIGZyb20gYGBjaGFyICpgYC4KIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9iamVjdF9DYWxsTWV0aG9kKFB5T2JqZWN0ICpvLCBjaGFyICptZXRob2QsIGNoYXIgKmZvcm1hdCwgLi4uKQorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIgKm1ldGhvZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAKICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCAqbWV0aG9kKiBvZiBvYmplY3QgKm8qIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YgQwogICAgYXJndW1lbnRzLiAgVGhlIEMgYXJndW1lbnRzIGFyZSBkZXNjcmliZWQgYnkgYSA6YzpmdW5jOmBQeV9CdWlsZFZhbHVlYCBmb3JtYXQKQEAgLTI2MSw2ICsyNjQsOSBAQAogICAgTm90ZSB0aGF0IGlmIHlvdSBvbmx5IHBhc3MgOmM6dHlwZTpgUHlPYmplY3QgXCpgIGFyZ3MsCiAgICA6YzpmdW5jOmBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJnc2AgaXMgYSBmYXN0ZXIgYWx0ZXJuYXRpdmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBUaGUgdHlwZXMgb2YgKm1ldGhvZCogYW5kICpmb3JtYXQqIHdlcmUgY2hhbmdlZCBmcm9tIGBgY2hhciAqYGAuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uLCBOVUxMKQogCkBAIC0zNDIsNiArMzQ4LDE1IEBACiAgICByZXR1cm5lZC4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgdG8gdGhlIFB5dGhvbiBleHByZXNzaW9uIGBgbGVuKG8pYGAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlPYmplY3RfTGVuZ3RoSGludChQeU9iamVjdCAqbywgUHlfc3NpemVfdCBkZWZhdWx0KQorCisgICBSZXR1cm4gYW4gZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAqbyouIEZpcnN0IHRyeWluZyB0byByZXR1cm4gaXRzCisgICBhY3R1YWwgbGVuZ3RoLCB0aGVuIGFuIGVzdGltYXRlIHVzaW5nIGBgX19sZW5ndGhfaGludF9fYGAsIGFuZCBmaW5hbGx5CisgICByZXR1cm5pbmcgdGhlIGRlZmF1bHQgdmFsdWUuIE9uIGVycm9yIGBgLTFgYCBpcyByZXR1cm5lZC4gVGhpcyBpcyB0aGUKKyAgIGVxdWl2YWxlbnQgdG8gdGhlIFB5dGhvbiBleHByZXNzaW9uIGBgb3BlcmF0b3IubGVuZ3RoX2hpbnQobywgZGVmYXVsdClgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlPYmplY3RfR2V0SXRlbShQeU9iamVjdCAqbywgUHlPYmplY3QgKmtleSkKIAogICAgUmV0dXJuIGVsZW1lbnQgb2YgKm8qIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9iamVjdCAqa2V5KiBvciAqTlVMTCogb24gZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS90eXBlb2JqLnJzdCBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdAppbmRleCBmODQ4M2M3Li45Yjk0YzE5IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKKysrIGIvRG9jL2MtYXBpL3R5cGVvYmoucnN0CkBAIC00NjUsNiArNDY1LDE0IEBACiAgICAgICA6Y29uc3Q6YFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBR2AuCiAKIAorICAgLi4gZGF0YTo6IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRQorCisgICAgICBUaGlzIGJpdCBpcyBzZXQgd2hlbiB0aGUgOmM6bWVtYmVyOmB+UHlUeXBlT2JqZWN0LnRwX2ZpbmFsaXplYCBzbG90IGlzIHByZXNlbnQgaW4gdGhlCisgICAgICB0eXBlIHN0cnVjdHVyZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gYzptZW1iZXI6OiBjaGFyKiBQeVR5cGVPYmplY3QudHBfZG9jCiAKICAgIEFuIG9wdGlvbmFsIHBvaW50ZXIgdG8gYSBOVUwtdGVybWluYXRlZCBDIHN0cmluZyBnaXZpbmcgdGhlIGRvY3N0cmluZyBmb3IgdGhpcwpAQCAtOTY4LDYgKzk3Niw0NyBAQAogICAgVGhpcyBmaWVsZCBpcyBub3QgaW5oZXJpdGVkOyBpdCBpcyBjYWxjdWxhdGVkIGZyZXNoIGJ5IDpjOmZ1bmM6YFB5VHlwZV9SZWFkeWAuCiAKIAorLi4gYzptZW1iZXI6OiBkZXN0cnVjdG9yIFB5VHlwZU9iamVjdC50cF9maW5hbGl6ZQorCisgICBBbiBvcHRpb25hbCBwb2ludGVyIHRvIGFuIGluc3RhbmNlIGZpbmFsaXphdGlvbiBmdW5jdGlvbi4gIEl0cyBzaWduYXR1cmUgaXMKKyAgIDpjOnR5cGU6YGRlc3RydWN0b3JgOjoKKworICAgICAgdm9pZCB0cF9maW5hbGl6ZShQeU9iamVjdCAqKQorCisgICBJZiA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfZmluYWxpemVgIGlzIHNldCwgdGhlIGludGVycHJldGVyIGNhbGxzIGl0IG9uY2Ugd2hlbgorICAgZmluYWxpemluZyBhbiBpbnN0YW5jZS4gIEl0IGlzIGNhbGxlZCBlaXRoZXIgZnJvbSB0aGUgZ2FyYmFnZQorICAgY29sbGVjdG9yIChpZiB0aGUgaW5zdGFuY2UgaXMgcGFydCBvZiBhbiBpc29sYXRlZCByZWZlcmVuY2UgY3ljbGUpIG9yCisgICBqdXN0IGJlZm9yZSB0aGUgb2JqZWN0IGlzIGRlYWxsb2NhdGVkLiAgRWl0aGVyIHdheSwgaXQgaXMgZ3VhcmFudGVlZAorICAgdG8gYmUgY2FsbGVkIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMsIGVuc3VyaW5nCisgICB0aGF0IGl0IGZpbmRzIHRoZSBvYmplY3QgaW4gYSBzYW5lIHN0YXRlLgorCisgICA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfZmluYWxpemVgIHNob3VsZCBub3QgbXV0YXRlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiBzdGF0dXM7CisgICB0aGVyZWZvcmUsIGEgcmVjb21tZW5kZWQgd2F5IHRvIHdyaXRlIGEgbm9uLXRyaXZpYWwgZmluYWxpemVyIGlzOjoKKworICAgICAgc3RhdGljIHZvaWQKKyAgICAgIGxvY2FsX2ZpbmFsaXplKFB5T2JqZWN0ICpzZWxmKQorICAgICAgeworICAgICAgICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAgICAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgICAgICAgLyogLi4uICovCisKKyAgICAgICAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKyAgICAgIH0KKworICAgRm9yIHRoaXMgZmllbGQgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IChldmVuIHRocm91Z2ggaW5oZXJpdGFuY2UpLAorICAgeW91IG11c3QgYWxzbyBzZXQgdGhlIDpjb25zdDpgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFYCBmbGFncyBiaXQuCisKKyAgIFRoaXMgZmllbGQgaXMgaW5oZXJpdGVkIGJ5IHN1YnR5cGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworICAgLi4gc2VlYWxzbzo6ICJTYWZlIG9iamVjdCBmaW5hbGl6YXRpb24iICg6cGVwOmA0NDJgKQorCisKIC4uIGM6bWVtYmVyOjogUHlPYmplY3QqIFB5VHlwZU9iamVjdC50cF9jYWNoZQogCiAgICBVbnVzZWQuICBOb3QgaW5oZXJpdGVkLiAgSW50ZXJuYWwgdXNlIG9ubHkuCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdW5pY29kZS5yc3QgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKaW5kZXggNmNjOGNjZS4uMjE2MDg4ZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0CisrKyBiL0RvYy9jLWFwaS91bmljb2RlLnJzdApAQCAtNTI2LDEyICs1MjYsMjMgQEAKICAgICAgIFRoZSBgIiVsbGQiYCBhbmQgYCIlbGx1ImAgZm9ybWF0IHNwZWNpZmllcnMgYXJlIG9ubHkgYXZhaWxhYmxlCiAgICAgICB3aGVuIDpjb25zdDpgSEFWRV9MT05HX0xPTkdgIGlzIGRlZmluZWQuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgVGhlIHdpZHRoIGZvcm1hdHRlciB1bml0IGlzIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIGJ5dGVzLgorICAgICAgVGhlIHByZWNpc2lvbiBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgYnl0ZXMgZm9yIGBgIiVzImBgIGFuZAorICAgICAgYGAiJVYiYGAgKGlmIHRoZSBgYFB5T2JqZWN0KmBgIGFyZ3VtZW50IGlzIE5VTEwpLCBhbmQgYSBudW1iZXIgb2YKKyAgICAgIGNoYXJhY3RlcnMgZm9yIGBgIiVBImBgLCBgYCIlVSJgYCwgYGAiJVMiYGAsIGBgIiVSImBgIGFuZCBgYCIlViJgYAorICAgICAgKGlmIHRoZSBgYFB5T2JqZWN0KmBgIGFyZ3VtZW50IGlzIG5vdCBOVUxMKS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIGBgIiVsbGQiYGAgYW5kIGBgIiVsbHUiYGAgYWRkZWQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBTdXBwb3J0IGZvciBgYCIlbGkiYGAsIGBgIiVsbGkiYGAgYW5kIGBgIiV6aSJgYCBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFN1cHBvcnQgd2lkdGggYW5kIHByZWNpc2lvbiBmb3JtYXR0ZXIgZm9yIGBgIiVzImBgLCBgYCIlQSJgYCwgYGAiJVUiYGAsCisgICAgICBgYCIlViJgYCwgYGAiJVMiYGAsIGBgIiVSImBgIGFkZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdCBiL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKaW5kZXggNDk5ZWIzZS4uMjg0ZWVlOCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdAorKysgYi9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CkBAIC0xNDQsNiArMTQ0LDI5IEBACiAgICAoOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmdgKS4gIFJldHVybnMgYGAwYGAgYXQgRU9GLgogCiAKKy4uIGM6dmFyOjogaW50ICgqUHlPU19JbnB1dEhvb2spKHZvaWQpCisKKyAgIENhbiBiZSBzZXQgdG8gcG9pbnQgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZSBwcm90b3R5cGUKKyAgIGBgaW50IGZ1bmModm9pZClgYC4gIFRoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIFB5dGhvbidzCisgICBpbnRlcnByZXRlciBwcm9tcHQgaXMgYWJvdXQgdG8gYmVjb21lIGlkbGUgYW5kIHdhaXQgZm9yIHVzZXIgaW5wdXQKKyAgIGZyb20gdGhlIHRlcm1pbmFsLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLiAgT3ZlcnJpZGluZyB0aGlzCisgICBob29rIGNhbiBiZSB1c2VkIHRvIGludGVncmF0ZSB0aGUgaW50ZXJwcmV0ZXIncyBwcm9tcHQgd2l0aCBvdGhlcgorICAgZXZlbnQgbG9vcHMsIGFzIGRvbmUgaW4gdGhlIDpmaWxlOmBNb2R1bGVzL190a2ludGVyLmNgIGluIHRoZQorICAgUHl0aG9uIHNvdXJjZSBjb2RlLgorCisKKy4uIGM6dmFyOjogY2hhciogKCpQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyKShGSUxFICosIEZJTEUgKiwgY2hhciAqKQorCisgICBDYW4gYmUgc2V0IHRvIHBvaW50IHRvIGEgZnVuY3Rpb24gd2l0aCB0aGUgcHJvdG90eXBlCisgICBgYGNoYXIgKmZ1bmMoRklMRSAqc3RkaW4sIEZJTEUgKnN0ZG91dCwgY2hhciAqcHJvbXB0KWBgLAorICAgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBmdW5jdGlvbiB1c2VkIHRvIHJlYWQgYSBzaW5nbGUgbGluZSBvZiBpbnB1dAorICAgYXQgdGhlIGludGVycHJldGVyJ3MgcHJvbXB0LiAgVGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIG91dHB1dAorICAgdGhlIHN0cmluZyAqcHJvbXB0KiBpZiBpdCdzIG5vdCAqTlVMTCosIGFuZCB0aGVuIHJlYWQgYSBsaW5lIG9mCisgICBpbnB1dCBmcm9tIHRoZSBwcm92aWRlZCBzdGFuZGFyZCBpbnB1dCBmaWxlLCByZXR1cm5pbmcgdGhlCisgICByZXN1bHRpbmcgc3RyaW5nLiAgRm9yIGV4YW1wbGUsIFRoZSA6bW9kOmByZWFkbGluZWAgbW9kdWxlIHNldHMKKyAgIHRoaXMgaG9vayB0byBwcm92aWRlIGxpbmUtZWRpdGluZyBhbmQgdGFiLWNvbXBsZXRpb24gZmVhdHVyZXMuCisKKwogLi4gYzpmdW5jdGlvbjo6IHN0cnVjdCBfbm9kZSogUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmcoY29uc3QgY2hhciAqc3RyLCBpbnQgc3RhcnQpCiAKICAgIFRoaXMgaXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0bwpAQCAtMzM4LDQgKzM2MSwzIEBACiAKICAgIFRoaXMgYml0IGNhbiBiZSBzZXQgaW4gKmZsYWdzKiB0byBjYXVzZSBkaXZpc2lvbiBvcGVyYXRvciBgYC9gYCB0byBiZQogICAgaW50ZXJwcmV0ZWQgYXMgInRydWUgZGl2aXNpb24iIGFjY29yZGluZyB0byA6cGVwOmAyMzhgLgotCmRpZmYgLS1naXQgYS9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0IGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdAppbmRleCBhNDI1ODRjLi44M2YyM2ViIDEwMDY0NAotLS0gYS9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CisrKyBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKQEAgLTIyMCw2ICsyMjAsMTEgQEAKIFB5RGljdF9HZXRJdGVtU3RyaW5nOlB5T2JqZWN0KjpwOjA6CiBQeURpY3RfR2V0SXRlbVN0cmluZzpjb25zdCBjaGFyKjprZXk6OgogCitQeURpY3RfU2V0RGVmYXVsdDpQeU9iamVjdCo6OjA6CitQeURpY3RfU2V0RGVmYXVsdDpQeU9iamVjdCo6cDowOgorUHlEaWN0X1NldERlZmF1bHQ6UHlPYmplY3QqOmtleTowOmNvbmRpdGlvbmFsbHkgKzEgaWYgaW5zZXJ0ZWQgaW50byB0aGUgZGljdAorUHlEaWN0X1NldERlZmF1bHQ6UHlPYmplY3QqOmRlZmF1bHQ6MDpjb25kaXRpb25hbGx5ICsxIGlmIGluc2VydGVkIGludG8gdGhlIGRpY3QKKwogUHlEaWN0X0l0ZW1zOlB5T2JqZWN0Kjo6KzE6CiBQeURpY3RfSXRlbXM6UHlPYmplY3QqOnA6MDoKIApAQCAtOTEyLDcgKzkxNyw3IEBACiAKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbjpQeU9iamVjdCo6OisxOgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uOlB5T2JqZWN0KjpjYWxsYWJsZV9vYmplY3Q6MDoKLVB5T2JqZWN0X0NhbGxGdW5jdGlvbjpjaGFyKjpmb3JtYXQ6OgorUHlPYmplY3RfQ2FsbEZ1bmN0aW9uOmNvbnN0IGNoYXIqOmZvcm1hdDo6CiBQeU9iamVjdF9DYWxsRnVuY3Rpb246Oi4uLjo6CiAKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M6UHlPYmplY3QqOjorMToKQEAgLTkyMSw4ICs5MjYsOCBAQAogCiBQeU9iamVjdF9DYWxsTWV0aG9kOlB5T2JqZWN0Kjo6KzE6CiBQeU9iamVjdF9DYWxsTWV0aG9kOlB5T2JqZWN0KjpvOjA6Ci1QeU9iamVjdF9DYWxsTWV0aG9kOmNoYXIqOm06OgotUHlPYmplY3RfQ2FsbE1ldGhvZDpjaGFyKjpmb3JtYXQ6OgorUHlPYmplY3RfQ2FsbE1ldGhvZDpjb25zdCBjaGFyKjptOjoKK1B5T2JqZWN0X0NhbGxNZXRob2Q6Y29uc3QgY2hhcio6Zm9ybWF0OjoKIFB5T2JqZWN0X0NhbGxNZXRob2Q6Oi4uLjo6CiAKIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzOlB5T2JqZWN0Kjo6KzE6CmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggYmQ2NjA4Ni4uNmNiNjg2YSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtMjg1LDE0ICsyODUsMTQgQEAKICogYGBweXRob25YLlktY29uZmlnIC0tY2ZsYWdzYGAgd2lsbCBnaXZlIHlvdSB0aGUgcmVjb21tZW5kZWQgZmxhZ3Mgd2hlbgogICBjb21waWxpbmc6OgogCi0gICAkIC9vcHQvYmluL3B5dGhvbjMuMy1jb25maWcgLS1jZmxhZ3MKLSAgIC1JL29wdC9pbmNsdWRlL3B5dGhvbjMuM20gLUkvb3B0L2luY2x1ZGUvcHl0aG9uMy4zbSAtRE5ERUJVRyAtZyAtZndyYXB2IC1PMyAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzCisgICAkIC9vcHQvYmluL3B5dGhvbjMuNC1jb25maWcgLS1jZmxhZ3MKKyAgIC1JL29wdC9pbmNsdWRlL3B5dGhvbjMuNG0gLUkvb3B0L2luY2x1ZGUvcHl0aG9uMy40bSAtRE5ERUJVRyAtZyAtZndyYXB2IC1PMyAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzCiAKICogYGBweXRob25YLlktY29uZmlnIC0tbGRmbGFnc2BgIHdpbGwgZ2l2ZSB5b3UgdGhlIHJlY29tbWVuZGVkIGZsYWdzIHdoZW4KICAgbGlua2luZzo6CiAKLSAgICQgL29wdC9iaW4vcHl0aG9uMy4zLWNvbmZpZyAtLWxkZmxhZ3MKLSAgIC1ML29wdC9saWIvcHl0aG9uMy4zL2NvbmZpZy0zLjNtIC1scHRocmVhZCAtbGRsIC1sdXRpbCAtbG0gLWxweXRob24zLjNtIC1YbGlua2VyIC1leHBvcnQtZHluYW1pYworICAgJCAvb3B0L2Jpbi9weXRob24zLjQtY29uZmlnIC0tbGRmbGFncworICAgLUwvb3B0L2xpYi9weXRob24zLjQvY29uZmlnLTMuNG0gLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbHB5dGhvbjMuNG0gLVhsaW5rZXIgLWV4cG9ydC1keW5hbWljCiAKIC4uIG5vdGU6OgogICAgVG8gYXZvaWQgY29uZnVzaW9uIGJldHdlZW4gc2V2ZXJhbCBQeXRob24gaW5zdGFsbGF0aW9ucyAoYW5kIGVzcGVjaWFsbHkKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0IGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKaW5kZXggZjY1YzE4My4uZjk4MTY4NCAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKQEAgLTE1Nyw3ICsxNTcsOCBAQAogICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgLyogdHBfZmxhZ3MgKi8KIAogQWxsIHR5cGVzIHNob3VsZCBpbmNsdWRlIHRoaXMgY29uc3RhbnQgaW4gdGhlaXIgZmxhZ3MuICBJdCBlbmFibGVzIGFsbCBvZiB0aGUKLW1lbWJlcnMgZGVmaW5lZCBieSB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIFB5dGhvbi4KK21lbWJlcnMgZGVmaW5lZCB1bnRpbCBhdCBsZWFzdCBQeXRob24gMy4zLiAgSWYgeW91IG5lZWQgZnVydGhlciBtZW1iZXJzLAoreW91IHdpbGwgbmVlZCB0byBPUiB0aGUgY29ycmVzcG9uZGluZyBmbGFncy4KIAogV2UgcHJvdmlkZSBhIGRvYyBzdHJpbmcgZm9yIHRoZSB0eXBlIGluIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9kb2NgLiA6OgogCkBAIC05MjgsOCArOTI5LDkgQEAKIAogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBpbnN0YW5jZSBvZiB5b3VyIHR5cGUgaXMKIHJlZHVjZWQgdG8gemVybyBhbmQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB3YW50cyB0byByZWNsYWltIGl0LiAgSWYgeW91ciB0eXBlCi1oYXMgbWVtb3J5IHRvIGZyZWUgb3Igb3RoZXIgY2xlYW4tdXAgdG8gcGVyZm9ybSwgcHV0IGl0IGhlcmUuICBUaGUgb2JqZWN0IGl0c2VsZgotbmVlZHMgdG8gYmUgZnJlZWQgaGVyZSBhcyB3ZWxsLiAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIHRoaXMgZnVuY3Rpb246OgoraGFzIG1lbW9yeSB0byBmcmVlIG9yIG90aGVyIGNsZWFuLXVwIHRvIHBlcmZvcm0sIHlvdSBjYW4gcHV0IGl0IGhlcmUuICBUaGUKK29iamVjdCBpdHNlbGYgbmVlZHMgdG8gYmUgZnJlZWQgaGVyZSBhcyB3ZWxsLiAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIHRoaXMKK2Z1bmN0aW9uOjoKIAogICAgc3RhdGljIHZvaWQKICAgIG5ld2RhdGF0eXBlX2RlYWxsb2MobmV3ZGF0YXR5cGVvYmplY3QgKiBvYmopCkBAIC05ODAsNiArOTgyLDIyIEBACiAgICAgICAgUHlfVFlQRShvYmopLT50cF9mcmVlKChQeU9iamVjdCopc2VsZik7CiAgICB9CiAKKy4uIG5vdGU6OgorICAgVGhlcmUgYXJlIGxpbWl0YXRpb25zIHRvIHdoYXQgeW91IGNhbiBzYWZlbHkgZG8gaW4gYSBkZWFsbG9jYXRvciBmdW5jdGlvbi4KKyAgIEZpcnN0LCBpZiB5b3VyIHR5cGUgc3VwcG9ydHMgZ2FyYmFnZSBjb2xsZWN0aW9uICh1c2luZyA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfdHJhdmVyc2VgCisgICBhbmQvb3IgOmM6bWVtYmVyOmB+UHlUeXBlT2JqZWN0LnRwX2NsZWFyYCksIHNvbWUgb2YgdGhlIG9iamVjdCdzIG1lbWJlcnMgY2FuIGhhdmUgYmVlbgorICAgY2xlYXJlZCBvciBmaW5hbGl6ZWQgYnkgdGhlIHRpbWUgOmM6bWVtYmVyOmB+UHlUeXBlT2JqZWN0LnRwX2RlYWxsb2NgIGlzIGNhbGxlZC4gIFNlY29uZCwgaW4KKyAgIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9kZWFsbG9jYCwgeW91ciBvYmplY3QgaXMgaW4gYW4gdW5zdGFibGUgc3RhdGU6IGl0cyByZWZlcmVuY2UKKyAgIGNvdW50IGlzIGVxdWFsIHRvIHplcm8uICBBbnkgY2FsbCB0byBhIG5vbi10cml2aWFsIG9iamVjdCBvciBBUEkgKGFzIGluIHRoZQorICAgZXhhbXBsZSBhYm92ZSkgbWlnaHQgZW5kIHVwIGNhbGxpbmcgOmM6bWVtYmVyOmB+UHlUeXBlT2JqZWN0LnRwX2RlYWxsb2NgIGFnYWluLCBjYXVzaW5nIGEKKyAgIGRvdWJsZSBmcmVlIGFuZCBhIGNyYXNoLgorCisgICBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0IGlzIHJlY29tbWVuZGVkIG5vdCB0byBwdXQgYW55IGNvbXBsZXgKKyAgIGZpbmFsaXphdGlvbiBjb2RlIGluIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9kZWFsbG9jYCwgYW5kIGluc3RlYWQgdXNlIHRoZSBuZXcKKyAgIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9maW5hbGl6ZWAgdHlwZSBtZXRob2QuCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgOnBlcDpgNDQyYCBleHBsYWlucyB0aGUgbmV3IGZpbmFsaXphdGlvbiBzY2hlbWUuCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogc3RyaW5nOyBvYmplY3QgcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL0RvYy9mYXEvbGlicmFyeS5yc3QgYi9Eb2MvZmFxL2xpYnJhcnkucnN0CmluZGV4IGM4ZWY5ZTcuLjhiZDc3NGIgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvbGlicmFyeS5yc3QKKysrIGIvRG9jL2ZhcS9saWJyYXJ5LnJzdApAQCAtMjExLDcgKzIxMSw3IEBACiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGMgPSBzeXMuc3RkaW4ucmVhZCgxKQogICAgICAgICAgICAgICAgcHJpbnQoIkdvdCBjaGFyYWN0ZXIiLCByZXByKGMpKQotICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICBmaW5hbGx5OgogICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0ZXJtaW9zLlRDU0FGTFVTSCwgb2xkdGVybSkKQEAgLTIyNCw3ICsyMjQsMTEgQEAKICAgIDpmdW5jOmB0ZXJtaW9zLnRjc2V0YXR0cmAgdHVybnMgb2ZmIHN0ZGluJ3MgZWNob2luZyBhbmQgZGlzYWJsZXMgY2Fub25pY2FsCiAgICBtb2RlLiAgOmZ1bmM6YGZjbnRsLmZuY3RsYCBpcyB1c2VkIHRvIG9idGFpbiBzdGRpbidzIGZpbGUgZGVzY3JpcHRvciBmbGFncwogICAgYW5kIG1vZGlmeSB0aGVtIGZvciBub24tYmxvY2tpbmcgbW9kZS4gIFNpbmNlIHJlYWRpbmcgc3RkaW4gd2hlbiBpdCBpcyBlbXB0eQotICAgcmVzdWx0cyBpbiBhbiA6ZXhjOmBJT0Vycm9yYCwgdGhpcyBlcnJvciBpcyBjYXVnaHQgYW5kIGlnbm9yZWQuCisgICByZXN1bHRzIGluIGFuIDpleGM6YE9TRXJyb3JgLCB0aGlzIGVycm9yIGlzIGNhdWdodCBhbmQgaWdub3JlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzeXMuc3RkaW4ucmVhZCogdXNlZCB0byByYWlzZSA6ZXhjOmBJT0Vycm9yYC4gU3RhcnRpbmcgZnJvbSBQeXRob24gMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCBpcyBhbGlhcyBmb3IgOmV4YzpgT1NFcnJvcmAuCiAKIAogVGhyZWFkcwpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QgYi9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdAppbmRleCAyZmJlOTJhLi5iZjczOTM1IDEwMDY0NAotLS0gYS9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdAorKysgYi9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdApAQCAtMTczOSwxMiArMTczOSwxMiBAQAogRm9yIHJlYXNvbnMgb2YgZWZmaWNpZW5jeSBhcyB3ZWxsIGFzIGNvbnNpc3RlbmN5LCBQeXRob24gb25seSByZWFkcyB0aGUgbW9kdWxlCiBmaWxlIG9uIHRoZSBmaXJzdCB0aW1lIGEgbW9kdWxlIGlzIGltcG9ydGVkLiAgSWYgaXQgZGlkbid0LCBpbiBhIHByb2dyYW0KIGNvbnNpc3Rpbmcgb2YgbWFueSBtb2R1bGVzIHdoZXJlIGVhY2ggb25lIGltcG9ydHMgdGhlIHNhbWUgYmFzaWMgbW9kdWxlLCB0aGUKLWJhc2ljIG1vZHVsZSB3b3VsZCBiZSBwYXJzZWQgYW5kIHJlLXBhcnNlZCBtYW55IHRpbWVzLiAgVG8gZm9yY2UgcmVyZWFkaW5nIG9mIGEKK2Jhc2ljIG1vZHVsZSB3b3VsZCBiZSBwYXJzZWQgYW5kIHJlLXBhcnNlZCBtYW55IHRpbWVzLiAgVG8gZm9yY2UgcmUtcmVhZGluZyBvZiBhCiBjaGFuZ2VkIG1vZHVsZSwgZG8gdGhpczo6CiAKLSAgIGltcG9ydCBpbXAKKyAgIGltcG9ydCBpbXBvcnRsaWIKICAgIGltcG9ydCBtb2RuYW1lCi0gICBpbXAucmVsb2FkKG1vZG5hbWUpCisgICBpbXBvcnRsaWIucmVsb2FkKG1vZG5hbWUpCiAKIFdhcm5pbmc6IHRoaXMgdGVjaG5pcXVlIGlzIG5vdCAxMDAlIGZvb2wtcHJvb2YuICBJbiBwYXJ0aWN1bGFyLCBtb2R1bGVzCiBjb250YWluaW5nIHN0YXRlbWVudHMgbGlrZSA6OgpAQCAtMTc1NiwxMCArMTc1NiwxMCBAQAogdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBjbGFzcyBkZWZpbml0aW9uLiAgVGhpcyBjYW4gcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcKIHBhcmFkb3hpY2FsIGJlaGF2aW91cjoKIAotICAgPj4+IGltcG9ydCBpbXAKKyAgID4+PiBpbXBvcnQgaW1wb3J0bGliCiAgICA+Pj4gaW1wb3J0IGNscwogICAgPj4+IGMgPSBjbHMuQygpICAgICAgICAgICAgICAgICMgQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEMKLSAgID4+PiBpbXAucmVsb2FkKGNscykKKyAgID4+PiBpbXBvcnRsaWIucmVsb2FkKGNscykKICAgIDxtb2R1bGUgJ2NscycgZnJvbSAnY2xzLnB5Jz4KICAgID4+PiBpc2luc3RhbmNlKGMsIGNscy5DKSAgICAgICAjIGlzaW5zdGFuY2UgaXMgZmFsc2U/IT8KICAgIEZhbHNlCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCA2M2YxMDIxLi4wZDNhNWY1IDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTMwMiw2ICszMDIsMTUgQEAKICAgICAgICAgID4+PiBzdW0oaSppIGZvciBpIGluIHJhbmdlKDEwKSkgICAgICAgICAjIHN1bSBvZiBzcXVhcmVzIDAsIDEsIDQsIC4uLiA4MQogICAgICAgICAgMjg1CiAKKyAgIGdlbmVyaWMgZnVuY3Rpb24KKyAgICAgIEEgZnVuY3Rpb24gY29tcG9zZWQgb2YgbXVsdGlwbGUgZnVuY3Rpb25zIGltcGxlbWVudGluZyB0aGUgc2FtZSBvcGVyYXRpb24KKyAgICAgIGZvciBkaWZmZXJlbnQgdHlwZXMuIFdoaWNoIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSB1c2VkIGR1cmluZyBhIGNhbGwgaXMKKyAgICAgIGRldGVybWluZWQgYnkgdGhlIGRpc3BhdGNoIGFsZ29yaXRobS4KKworICAgICAgU2VlIGFsc28gdGhlIDp0ZXJtOmBzaW5nbGUgZGlzcGF0Y2hgIGdsb3NzYXJ5IGVudHJ5LCB0aGUKKyAgICAgIDpmdW5jOmBmdW5jdG9vbHMuc2luZ2xlZGlzcGF0Y2hgIGRlY29yYXRvciwgYW5kIDpwZXA6YDQ0M2AuCisKKwogICAgR0lMCiAgICAgICBTZWUgOnRlcm06YGdsb2JhbCBpbnRlcnByZXRlciBsb2NrYC4KIApAQCAtNzQ1LDYgKzc1NCwxMCBAQAogICAgICAgbWFwcGluZyByYXRoZXIgdGhhbiBhIHNlcXVlbmNlIGJlY2F1c2UgdGhlIGxvb2t1cHMgdXNlIGFyYml0cmFyeQogICAgICAgOnRlcm06YGltbXV0YWJsZWAga2V5cyByYXRoZXIgdGhhbiBpbnRlZ2Vycy4KIAorICAgc2luZ2xlIGRpc3BhdGNoCisgICAgICBBIGZvcm0gb2YgOnRlcm06YGdlbmVyaWMgZnVuY3Rpb25gIGRpc3BhdGNoIHdoZXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBpcworICAgICAgY2hvc2VuIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGEgc2luZ2xlIGFyZ3VtZW50LgorCiAgICBzbGljZQogICAgICAgQW4gb2JqZWN0IHVzdWFsbHkgY29udGFpbmluZyBhIHBvcnRpb24gb2YgYSA6dGVybTpgc2VxdWVuY2VgLiAgQSBzbGljZSBpcwogICAgICAgY3JlYXRlZCB1c2luZyB0aGUgc3Vic2NyaXB0IG5vdGF0aW9uLCBgYFtdYGAgd2l0aCBjb2xvbnMgYmV0d2VlbiBudW1iZXJzCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKaW5kZXggZDI0MWYxYS4uMGY0YzRlNCAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CisrKyBiL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdApAQCAtMyw3ICszLDcgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIDpBdXRob3I6IEEuIE0uIEt1Y2hsaW5nCi06UmVsZWFzZTogMC4zMQorOlJlbGVhc2U6IDAuMzIKIAogSW4gdGhpcyBkb2N1bWVudCwgd2UnbGwgdGFrZSBhIHRvdXIgb2YgUHl0aG9uJ3MgZmVhdHVyZXMgc3VpdGFibGUgZm9yCiBpbXBsZW1lbnRpbmcgcHJvZ3JhbXMgaW4gYSBmdW5jdGlvbmFsIHN0eWxlLiAgQWZ0ZXIgYW4gaW50cm9kdWN0aW9uIHRvIHRoZQpAQCAtMTUsOSArMTUsOSBAQAogSW50cm9kdWN0aW9uCiA9PT09PT09PT09PT0KIAotVGhpcyBzZWN0aW9uIGV4cGxhaW5zIHRoZSBiYXNpYyBjb25jZXB0IG9mIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmc7IGlmIHlvdSdyZQotanVzdCBpbnRlcmVzdGVkIGluIGxlYXJuaW5nIGFib3V0IFB5dGhvbiBsYW5ndWFnZSBmZWF0dXJlcywgc2tpcCB0byB0aGUgbmV4dAotc2VjdGlvbi4KK1RoaXMgc2VjdGlvbiBleHBsYWlucyB0aGUgYmFzaWMgY29uY2VwdCBvZiBmdW5jdGlvbmFsIHByb2dyYW1taW5nOyBpZgoreW91J3JlIGp1c3QgaW50ZXJlc3RlZCBpbiBsZWFybmluZyBhYm91dCBQeXRob24gbGFuZ3VhZ2UgZmVhdHVyZXMsCitza2lwIHRvIHRoZSBuZXh0IHNlY3Rpb24gb24gOnJlZjpgZnVuY3Rpb25hbC1ob3d0by1pdGVyYXRvcnNgLgogCiBQcm9ncmFtbWluZyBsYW5ndWFnZXMgc3VwcG9ydCBkZWNvbXBvc2luZyBwcm9ibGVtcyBpbiBzZXZlcmFsIGRpZmZlcmVudCB3YXlzOgogCkBAIC0xNzMsNiArMTczLDggQEAKIGEgZmV3IGZ1bmN0aW9ucyBzcGVjaWFsaXplZCBmb3IgdGhlIGN1cnJlbnQgdGFzay4KIAogCisuLiBfZnVuY3Rpb25hbC1ob3d0by1pdGVyYXRvcnM6CisKIEl0ZXJhdG9ycwogPT09PT09PT09CiAKQEAgLTY3MCw3ICs2NzIsNyBAQAogCiA6ZnVuYzpgc29ydGVkKGl0ZXJhYmxlLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgPHNvcnRlZD5gIGNvbGxlY3RzIGFsbCB0aGUKIGVsZW1lbnRzIG9mIHRoZSBpdGVyYWJsZSBpbnRvIGEgbGlzdCwgc29ydHMgdGhlIGxpc3QsIGFuZCByZXR1cm5zIHRoZSBzb3J0ZWQKLXJlc3VsdC4gIFRoZSAqa2V5KiwgYW5kICpyZXZlcnNlKiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZQorcmVzdWx0LiAgVGhlICprZXkqIGFuZCAqcmV2ZXJzZSogYXJndW1lbnRzIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUKIGNvbnN0cnVjdGVkIGxpc3QncyA6bWV0aDpgfmxpc3Quc29ydGAgbWV0aG9kLiA6OgogCiAgICAgPj4+IGltcG9ydCByYW5kb20KQEAgLTgzNiw3ICs4MzgsOCBAQAogcHJlZGljYXRlLgogCiA6ZnVuYzpgaXRlcnRvb2xzLmZpbHRlcmZhbHNlKHByZWRpY2F0ZSwgaXRlcikgPGl0ZXJ0b29scy5maWx0ZXJmYWxzZT5gIGlzIHRoZQotb3Bwb3NpdGUsIHJldHVybmluZyBhbGwgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcmVkaWNhdGUgcmV0dXJucyBmYWxzZTo6CitvcHBvc2l0ZSBvZiA6ZnVuYzpgZmlsdGVyYCwgcmV0dXJuaW5nIGFsbCBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByZWRpY2F0ZQorcmV0dXJucyBmYWxzZTo6CiAKICAgICBpdGVydG9vbHMuZmlsdGVyZmFsc2UoaXNfZXZlbiwgaXRlcnRvb2xzLmNvdW50KCkpID0+CiAgICAgICAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAuLi4KQEAgLTg2NCw2ICs4NjcsNzcgQEAKICAgICBpdGVydG9vbHMuZHJvcHdoaWxlKGlzX2V2ZW4sIGl0ZXJ0b29scy5jb3VudCgpKSA9PgogICAgICAgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIC4uLgogCis6ZnVuYzpgaXRlcnRvb2xzLmNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykgPGl0ZXJ0b29scy5jb21wcmVzcz5gIHRha2VzIHR3bworaXRlcmF0b3JzIGFuZCByZXR1cm5zIG9ubHkgdGhvc2UgZWxlbWVudHMgb2YgKmRhdGEqIGZvciB3aGljaCB0aGUgY29ycmVzcG9uZGluZworZWxlbWVudCBvZiAqc2VsZWN0b3JzKiBpcyB0cnVlLCBzdG9wcGluZyB3aGVuZXZlciBlaXRoZXIgb25lIGlzIGV4aGF1c3RlZDo6CisKKyAgICBpdGVydG9vbHMuY29tcHJlc3MoWzEsMiwzLDQsNV0sIFtUcnVlLCBUcnVlLCBGYWxzZSwgRmFsc2UsIFRydWVdKSA9PgorICAgICAgIDEsIDIsIDUKKworCitDb21iaW5hdG9yaWMgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhpdGVyYWJsZSwgcikgPGl0ZXJ0b29scy5jb21iaW5hdGlvbnM+YAorcmV0dXJucyBhbiBpdGVyYXRvciBnaXZpbmcgYWxsIHBvc3NpYmxlICpyKi10dXBsZSBjb21iaW5hdGlvbnMgb2YgdGhlCitlbGVtZW50cyBjb250YWluZWQgaW4gKml0ZXJhYmxlKi4gIDo6CisKKyAgICBpdGVydG9vbHMuY29tYmluYXRpb25zKFsxLCAyLCAzLCA0LCA1XSwgMikgPT4KKyAgICAgICgxLCAyKSwgKDEsIDMpLCAoMSwgNCksICgxLCA1KSwKKyAgICAgICgyLCAzKSwgKDIsIDQpLCAoMiwgNSksCisgICAgICAoMywgNCksICgzLCA1KSwKKyAgICAgICg0LCA1KQorCisgICAgaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhbMSwgMiwgMywgNCwgNV0sIDMpID0+CisgICAgICAoMSwgMiwgMyksICgxLCAyLCA0KSwgKDEsIDIsIDUpLCAoMSwgMywgNCksICgxLCAzLCA1KSwgKDEsIDQsIDUpLAorICAgICAgKDIsIDMsIDQpLCAoMiwgMywgNSksICgyLCA0LCA1KSwKKyAgICAgICgzLCA0LCA1KQorCitUaGUgZWxlbWVudHMgd2l0aGluIGVhY2ggdHVwbGUgcmVtYWluIGluIHRoZSBzYW1lIG9yZGVyIGFzCisqaXRlcmFibGUqIHJldHVybmVkIHRoZW0uICBGb3IgZXhhbXBsZSwgdGhlIG51bWJlciAxIGlzIGFsd2F5cyBiZWZvcmUKKzIsIDMsIDQsIG9yIDUgaW4gdGhlIGV4YW1wbGVzIGFib3ZlLiAgQSBzaW1pbGFyIGZ1bmN0aW9uLAorOmZ1bmM6YGl0ZXJ0b29scy5wZXJtdXRhdGlvbnMoaXRlcmFibGUsIHI9Tm9uZSkgPGl0ZXJ0b29scy5wZXJtdXRhdGlvbnM+YCwKK3JlbW92ZXMgdGhpcyBjb25zdHJhaW50IG9uIHRoZSBvcmRlciwgcmV0dXJuaW5nIGFsbCBwb3NzaWJsZQorYXJyYW5nZW1lbnRzIG9mIGxlbmd0aCAqcio6OgorCisgICAgaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhbMSwgMiwgMywgNCwgNV0sIDIpID0+CisgICAgICAoMSwgMiksICgxLCAzKSwgKDEsIDQpLCAoMSwgNSksCisgICAgICAoMiwgMSksICgyLCAzKSwgKDIsIDQpLCAoMiwgNSksCisgICAgICAoMywgMSksICgzLCAyKSwgKDMsIDQpLCAoMywgNSksCisgICAgICAoNCwgMSksICg0LCAyKSwgKDQsIDMpLCAoNCwgNSksCisgICAgICAoNSwgMSksICg1LCAyKSwgKDUsIDMpLCAoNSwgNCkKKworICAgIGl0ZXJ0b29scy5wZXJtdXRhdGlvbnMoWzEsIDIsIDMsIDQsIDVdKSA9PgorICAgICAgKDEsIDIsIDMsIDQsIDUpLCAoMSwgMiwgMywgNSwgNCksICgxLCAyLCA0LCAzLCA1KSwKKyAgICAgIC4uLgorICAgICAgKDUsIDQsIDMsIDIsIDEpCisKK0lmIHlvdSBkb24ndCBzdXBwbHkgYSB2YWx1ZSBmb3IgKnIqIHRoZSBsZW5ndGggb2YgdGhlIGl0ZXJhYmxlIGlzIHVzZWQsCittZWFuaW5nIHRoYXQgYWxsIHRoZSBlbGVtZW50cyBhcmUgcGVybXV0ZWQuCisKK05vdGUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgcHJvZHVjZSBhbGwgb2YgdGhlIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBieQorcG9zaXRpb24gYW5kIGRvbid0IHJlcXVpcmUgdGhhdCB0aGUgY29udGVudHMgb2YgKml0ZXJhYmxlKiBhcmUgdW5pcXVlOjoKKworICAgIGl0ZXJ0b29scy5wZXJtdXRhdGlvbnMoJ2FiYScsIDMpID0+CisgICAgICAoJ2EnLCAnYicsICdhJyksICgnYScsICdhJywgJ2InKSwgKCdiJywgJ2EnLCAnYScpLAorICAgICAgKCdiJywgJ2EnLCAnYScpLCAoJ2EnLCAnYScsICdiJyksICgnYScsICdiJywgJ2EnKQorCitUaGUgaWRlbnRpY2FsIHR1cGxlIGBgKCdhJywgJ2EnLCAnYicpYGAgb2NjdXJzIHR3aWNlLCBidXQgdGhlIHR3byAnYScKK3N0cmluZ3MgY2FtZSBmcm9tIGRpZmZlcmVudCBwb3NpdGlvbnMuCisKK1RoZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KGl0ZXJhYmxlLCByKSA8aXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50PmAKK2Z1bmN0aW9uIHJlbGF4ZXMgYSBkaWZmZXJlbnQgY29uc3RyYWludDogZWxlbWVudHMgY2FuIGJlIHJlcGVhdGVkCit3aXRoaW4gYSBzaW5nbGUgdHVwbGUuICBDb25jZXB0dWFsbHkgYW4gZWxlbWVudCBpcyBzZWxlY3RlZCBmb3IgdGhlCitmaXJzdCBwb3NpdGlvbiBvZiBlYWNoIHR1cGxlIGFuZCB0aGVuIGlzIHJlcGxhY2VkIGJlZm9yZSB0aGUgc2Vjb25kCitlbGVtZW50IGlzIHNlbGVjdGVkLiAgOjoKKworICAgIGl0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudChbMSwgMiwgMywgNCwgNV0sIDIpID0+CisgICAgICAoMSwgMSksICgxLCAyKSwgKDEsIDMpLCAoMSwgNCksICgxLCA1KSwKKyAgICAgICgyLCAyKSwgKDIsIDMpLCAoMiwgNCksICgyLCA1KSwKKyAgICAgICgzLCAzKSwgKDMsIDQpLCAoMywgNSksCisgICAgICAoNCwgNCksICg0LCA1KSwKKyAgICAgICg1LCA1KQorCiAKIEdyb3VwaW5nIGVsZW1lbnRzCiAtLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTg2LDYgKzEwNjAsMTcgQEAKICAgIGZvciBpIGluIFsxLDIsM106CiAgICAgICAgcHJvZHVjdCAqPSBpCiAKK0EgcmVsYXRlZCBmdW5jdGlvbiBpcyBgaXRlcnRvb2xzLmFjY3VtdWxhdGUoaXRlcmFibGUsIGZ1bmM9b3BlcmF0b3IuYWRkKSA8aXRlcnRvb2xzLmFjY3VtdWxhdGVgLgorSXQgcGVyZm9ybXMgdGhlIHNhbWUgY2FsY3VsYXRpb24sIGJ1dCBpbnN0ZWFkIG9mIHJldHVybmluZyBvbmx5IHRoZQorZmluYWwgcmVzdWx0LCA6ZnVuYzpgYWNjdW11bGF0ZWAgcmV0dXJucyBhbiBpdGVyYXRvciB0aGF0IGFsc28geWllbGRzCitlYWNoIHBhcnRpYWwgcmVzdWx0OjoKKworICAgIGl0ZXJ0b29scy5hY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSA9PgorICAgICAgMSwgMywgNiwgMTAsIDE1CisKKyAgICBpdGVydG9vbHMuYWNjdW11bGF0ZShbMSwyLDMsNCw1XSwgb3BlcmF0b3IubXVsKSA9PgorICAgICAgMSwgMiwgNiwgMjQsIDEyMAorCiAKIFRoZSBvcGVyYXRvciBtb2R1bGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExNTksNTEgKzEyNDQsNiBAQAogCiAuLiBjb21tZW50CiAKLSAgICBUb3BpY3MgdG8gcGxhY2UKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgWFhYIG9zLndhbGsoKQotCi0gICAgWFhYIE5lZWQgYSBsYXJnZSBleGFtcGxlLgotCi0gICAgQnV0IHdpbGwgYW4gZXhhbXBsZSBhZGQgbXVjaD8gIEknbGwgcG9zdCBhIGZpcnN0IGRyYWZ0IGFuZCBzZWUKLSAgICB3aGF0IHRoZSBjb21tZW50cyBzYXkuCi0KLS4uIGNvbW1lbnQKLQotICAgIE9yaWdpbmFsIG91dGxpbmU6Ci0gICAgSW50cm9kdWN0aW9uCi0gICAgICAgICAgICBJZGVhIG9mIEZQCi0gICAgICAgICAgICAgICAgICAgIFByb2dyYW1zIGJ1aWx0IG91dCBvZiBmdW5jdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIGFyZSBzdHJpY3RseSBpbnB1dC1vdXRwdXQsIG5vIGludGVybmFsIHN0YXRlCi0gICAgICAgICAgICBPcHBvc2VkIHRvIE9PIHByb2dyYW1taW5nLCB3aGVyZSBvYmplY3RzIGhhdmUgc3RhdGUKLQotICAgICAgICAgICAgV2h5IEZQPwotICAgICAgICAgICAgICAgICAgICBGb3JtYWwgcHJvdmFiaWxpdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25tZW50IGlzIGRpZmZpY3VsdCB0byByZWFzb24gYWJvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgdmVyeSByZWxldmFudCB0byBQeXRob24KLSAgICAgICAgICAgICAgICAgICAgTW9kdWxhcml0eQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsIGZ1bmN0aW9ucyB0aGF0IGRvIG9uZSB0aGluZwotICAgICAgICAgICAgICAgICAgICBEZWJ1Z2dhYmlsaXR5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVhc3kgdG8gdGVzdCBkdWUgdG8gbGFjayBvZiBzdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVhc3kgdG8gdmVyaWZ5IG91dHB1dCBmcm9tIGludGVybWVkaWF0ZSBzdGVwcwotICAgICAgICAgICAgICAgICAgICBDb21wb3NhYmlsaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGFzc2VtYmxlIGEgdG9vbGJveCBvZiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgbWl4ZWQKLQotICAgIFRhY2tsaW5nIGEgcHJvYmxlbQotICAgICAgICAgICAgTmVlZCBhIHNpZ25pZmljYW50IGV4YW1wbGUKLQotICAgIEl0ZXJhdG9ycwotICAgIEdlbmVyYXRvcnMKLSAgICBUaGUgaXRlcnRvb2xzIG1vZHVsZQotICAgIExpc3QgY29tcHJlaGVuc2lvbnMKLSAgICBTbWFsbCBmdW5jdGlvbnMgYW5kIHRoZSBsYW1iZGEgc3RhdGVtZW50Ci0gICAgQnVpbHQtaW4gZnVuY3Rpb25zCi0gICAgICAgICAgICBtYXAKLSAgICAgICAgICAgIGZpbHRlcgotCi0uLiBjb21tZW50Ci0KICAgICBIYW5keSBsaXR0bGUgZnVuY3Rpb24gZm9yIHByaW50aW5nIHBhcnQgb2YgYW4gaXRlcmF0b3IgLS0gdXNlZAogICAgIHdoaWxlIHdyaXRpbmcgdGhpcyBkb2N1bWVudC4KIApAQCAtMTIxNCw1ICsxMjU0LDMgQEAKICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHN0cihlbGVtKSkKICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcsICcpCiAgICAgICAgIHByaW50KGVsZW1bLTFdKQotCi0KZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdCBiL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAppbmRleCBhY2Y4MGI5Li4zZTAxZTRhIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKKysrIGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CkBAIC03MDMsOSArNzAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihyZWNvcmQubmFtZSkKICAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKHJlY29yZCkgIyBObyBsZXZlbCBvciBmaWx0ZXIgbG9naWMgYXBwbGllZCAtIGp1c3QgZG8gaXQhCi0gICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBpbXBvcnQgc3lzLCB0cmFjZWJhY2sKICAgICAgICAgICAgICAgICBwcmludCgnV2hvb3BzISBQcm9ibGVtOicsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by91cmxsaWIyLnJzdCBiL0RvYy9ob3d0by91cmxsaWIyLnJzdAppbmRleCA3YWZlOWE2Li5iNjgzYWI2IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QKKysrIGIvRG9jL2hvd3RvL3VybGxpYjIucnN0CkBAIC01MDcsNyArNTA3LDcgQEAKICAgICAtLSBgYFByb3h5SGFuZGxlcmBgIChpZiBhIHByb3h5IHNldHRpbmcgc3VjaCBhcyBhbiA6ZW52dmFyOmBodHRwX3Byb3h5YAogICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCksIGBgVW5rbm93bkhhbmRsZXJgYCwgYGBIVFRQSGFuZGxlcmBgLAogICAgIGBgSFRUUERlZmF1bHRFcnJvckhhbmRsZXJgYCwgYGBIVFRQUmVkaXJlY3RIYW5kbGVyYGAsIGBgRlRQSGFuZGxlcmBgLAotICAgIGBgRmlsZUhhbmRsZXJgYCwgYGBIVFRQRXJyb3JQcm9jZXNzb3JgYC4KKyAgICBgYEZpbGVIYW5kbGVyYGAsIGBgRGF0YUhhbmRsZXJgYCwgYGBIVFRQRXJyb3JQcm9jZXNzb3JgYC4KIAogYGB0b3BfbGV2ZWxfdXJsYGAgaXMgaW4gZmFjdCAqZWl0aGVyKiBhIGZ1bGwgVVJMIChpbmNsdWRpbmcgdGhlICdodHRwOicgc2NoZW1lCiBjb21wb25lbnQgYW5kIHRoZSBob3N0bmFtZSBhbmQgb3B0aW9uYWxseSB0aGUgcG9ydCBudW1iZXIpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdHlwZXN0cnVjdC5oIGIvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaAppbmRleCAzMjY0N2MwLi5mY2I4NDZhIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdHlwZXN0cnVjdC5oCisrKyBiL0RvYy9pbmNsdWRlcy90eXBlc3RydWN0LmgKQEAgLTcwLDQgKzcwLDExIEBACiAgICAgUHlPYmplY3QgKnRwX3N1YmNsYXNzZXM7CiAgICAgUHlPYmplY3QgKnRwX3dlYWtsaXN0OwogCisgICAgZGVzdHJ1Y3RvciB0cF9kZWw7CisKKyAgICAvKiBUeXBlIGF0dHJpYnV0ZSBjYWNoZSB2ZXJzaW9uIHRhZy4gQWRkZWQgaW4gdmVyc2lvbiAyLjYgKi8KKyAgICB1bnNpZ25lZCBpbnQgdHBfdmVyc2lvbl90YWc7CisKKyAgICBkZXN0cnVjdG9yIHRwX2ZpbmFsaXplOworCiB9IFB5VHlwZU9iamVjdDsKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5LzJ0bzMucnN0IGIvRG9jL2xpYnJhcnkvMnRvMy5yc3QKaW5kZXggOTdlNjkyZi4uMTU4YjNiZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvMnRvMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvMnRvMy5yc3QKQEAgLTM0Miw2ICszNDIsMTAgQEAKIAogICAgSGFuZGxlcyB0aGUgbW92ZSBvZiA6ZnVuYzpgcmVkdWNlYCB0byA6ZnVuYzpgZnVuY3Rvb2xzLnJlZHVjZWAuCiAKKy4uIDJ0bzNmaXhlcjo6IHJlbG9hZAorCisgICBDb252ZXJ0cyA6ZnVuYzpgcmVsb2FkYCB0byA6ZnVuYzpgaW1wLnJlbG9hZGAuCisKIC4uIDJ0bzNmaXhlcjo6IHJlbmFtZXMKIAogICAgQ2hhbmdlcyA6ZGF0YTpgc3lzLm1heGludGAgdG8gOmRhdGE6YHN5cy5tYXhzaXplYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FiYy5yc3QgYi9Eb2MvbGlicmFyeS9hYmMucnN0CmluZGV4IDZmMjM1OTYuLjFmMjFiNTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FiYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYWJjLnJzdApAQCAtMTIsOSArMTIsOSBAQAogLS0tLS0tLS0tLS0tLS0KIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGluZnJhc3RydWN0dXJlIGZvciBkZWZpbmluZyA6dGVybTpgYWJzdHJhY3QgYmFzZQotY2xhc3NlcyA8YWJzdHJhY3QgYmFzZSBjbGFzcz5gIChBQkNzKSBpbiBQeXRob24sIGFzIG91dGxpbmVkIGluIDpwZXA6YDMxMTlgOyBzZWUgdGhlIFBFUCBmb3Igd2h5IHRoaXMKLXdhcyBhZGRlZCB0byBQeXRob24uIChTZWUgYWxzbyA6cGVwOmAzMTQxYCBhbmQgdGhlIDptb2Q6YG51bWJlcnNgIG1vZHVsZQotcmVnYXJkaW5nIGEgdHlwZSBoaWVyYXJjaHkgZm9yIG51bWJlcnMgYmFzZWQgb24gQUJDcy4pCitjbGFzc2VzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmAgKEFCQ3MpIGluIFB5dGhvbiwgYXMgb3V0bGluZWQgaW4gOnBlcDpgMzExOWA7CitzZWUgdGhlIFBFUCBmb3Igd2h5IHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbi4gKFNlZSBhbHNvIDpwZXA6YDMxNDFgIGFuZCB0aGUKKzptb2Q6YG51bWJlcnNgIG1vZHVsZSByZWdhcmRpbmcgYSB0eXBlIGhpZXJhcmNoeSBmb3IgbnVtYmVycyBiYXNlZCBvbiBBQkNzLikKIAogVGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgY29uY3JldGUgY2xhc3NlcyB0aGF0IGRlcml2ZSBmcm9tCiBBQkNzOyB0aGVzZSBjYW4sIG9mIGNvdXJzZSwgYmUgZnVydGhlciBkZXJpdmVkLiBJbiBhZGRpdGlvbiB0aGUKQEAgLTIzLDcgKzIzLDcgQEAKIGhhc2hhYmxlIG9yIGEgbWFwcGluZy4KIAogCi1UaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNsYXNzOgorVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IEFCQ01ldGEKIApAQCAtNTgsNiArNTgsMTAgQEAKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICAgICBSZXR1cm5zIHRoZSByZWdpc3RlcmVkIHN1YmNsYXNzLCB0byBhbGxvdyB1c2FnZSBhcyBhIGNsYXNzIGRlY29yYXRvci4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgIFRvIGRldGVjdCBjYWxscyB0byA6bWV0aDpgcmVnaXN0ZXJgLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgIDpmdW5jOmBnZXRfY2FjaGVfdG9rZW5gIGZ1bmN0aW9uLgorCiAgICBZb3UgY2FuIGFsc28gb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4gYW4gYWJzdHJhY3QgYmFzZSBjbGFzczoKIAogICAgLi4gbWV0aG9kOjogX19zdWJjbGFzc2hvb2tfXyhzdWJjbGFzcykKQEAgLTEyNyw2ICsxMzEsMTkgQEAKICAgIGF2YWlsYWJsZSBhcyBhIG1ldGhvZCBvZiBgYEZvb2BgLCBzbyBpdCBpcyBwcm92aWRlZCBzZXBhcmF0ZWx5LgogCiAKKy4uIGNsYXNzOjogQUJDCisKKyAgIEEgaGVscGVyIGNsYXNzIHRoYXQgaGFzIDpjbGFzczpgQUJDTWV0YWAgYXMgaXRzIG1ldGFjbGFzcy4gIFdpdGggdGhpcyBjbGFzcywKKyAgIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgY2FuIGJlIGNyZWF0ZWQgYnkgc2ltcGx5IGRlcml2aW5nIGZyb20gOmNsYXNzOmBBQkNgLAorICAgYXZvaWRpbmcgc29tZXRpbWVzIGNvbmZ1c2luZyBtZXRhY2xhc3MgdXNhZ2UuCisKKyAgIE5vdGUgdGhhdCB0aGUgdHlwZSBvZiA6Y2xhc3M6YEFCQ2AgaXMgc3RpbGwgOmNsYXNzOmBBQkNNZXRhYCwgdGhlcmVmb3JlCisgICBpbmhlcml0aW5nIGZyb20gOmNsYXNzOmBBQkNgIHJlcXVpcmVzIHRoZSB1c3VhbCBwcmVjYXV0aW9ucyByZWdhcmRpbmcgbWV0YWNsYXNzCisgICB1c2FnZSwgYXMgbXVsdGlwbGUgaW5oZXJpdGFuY2UgbWF5IGxlYWQgdG8gbWV0YWNsYXNzIGNvbmZsaWN0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogVGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkZWNvcmF0b3JzOgogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdG1ldGhvZApAQCAtMjk1LDYgKzMxMiwxOSBAQAogICAgICAgIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAsIG1ha2luZyB0aGlzIGRlY29yYXRvciByZWR1bmRhbnQuCiAKIAorVGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CisKKy4uIGZ1bmN0aW9uOjogZ2V0X2NhY2hlX3Rva2VuKCkKKworICAgUmV0dXJucyB0aGUgY3VycmVudCBhYnN0cmFjdCBiYXNlIGNsYXNzIGNhY2hlIHRva2VuLgorCisgICBUaGUgdG9rZW4gaXMgYW4gb3BhcXVlIGludGVnZXIgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUKKyAgIGFic3RyYWN0IGJhc2UgY2xhc3MgY2FjaGUgZm9yIHZpcnR1YWwgc3ViY2xhc3Nlcy4gVGhpcyBudW1iZXIgY2hhbmdlcworICAgd2l0aCBldmVyeSBjYWxsIHRvIDptZXRoOmBBQkNNZXRhLnJlZ2lzdGVyYCBvbiBhbnkgQUJDLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAogLi4gWyNdIEMrKyBwcm9ncmFtbWVycyBzaG91bGQgbm90ZSB0aGF0IFB5dGhvbidzIHZpcnR1YWwgYmFzZSBjbGFzcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYWlmYy5yc3QgYi9Eb2MvbGlicmFyeS9haWZjLnJzdAppbmRleCA5OTliYWQ4Li40NGEwYTI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9haWZjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9haWZjLnJzdApAQCAtNTEsNiArNTEsMTEgQEAKICAgIHVzZWQgZm9yIHdyaXRpbmcsIHRoZSBmaWxlIG9iamVjdCBzaG91bGQgYmUgc2Vla2FibGUsIHVubGVzcyB5b3Uga25vdyBhaGVhZCBvZgogICAgdGltZSBob3cgbWFueSBzYW1wbGVzIHlvdSBhcmUgZ29pbmcgdG8gd3JpdGUgaW4gdG90YWwgYW5kIHVzZQogICAgOm1ldGg6YHdyaXRlZnJhbWVzcmF3YCBhbmQgOm1ldGg6YHNldG5mcmFtZXNgLgorICAgVGhlIDpmdW5jOmAub3BlbmAgZnVuY3Rpb24gbWF5IGJlIHVzZWQgaW4gYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgV2hlbgorICAgdGhlIDprZXl3b3JkOmB3aXRoYCBibG9jayBjb21wbGV0ZXMsIHRoZSA6bWV0aDpgfmFpZmMuY2xvc2VgIG1ldGhvZCBpcyBjYWxsZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICBTdXBwb3J0IGZvciB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCB3YXMgYWRkZWQuCiAKIE9iamVjdHMgcmV0dXJuZWQgYnkgOmZ1bmM6YC5vcGVuYCB3aGVuIGEgZmlsZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgaGF2ZSB0aGUKIGZvbGxvd2luZyBtZXRob2RzOgpAQCAtOTIsNyArOTcsOSBAQAogCiAuLiBtZXRob2Q6OiBhaWZjLmdldHBhcmFtcygpCiAKLSAgIFJldHVybiBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgYWxsIG9mIHRoZSBhYm92ZSB2YWx1ZXMgaW4gdGhlIGFib3ZlIG9yZGVyLgorICAgUmV0dXJucyBhIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAgYGAobmNoYW5uZWxzLCBzYW1wd2lkdGgsCisgICBmcmFtZXJhdGUsIG5mcmFtZXMsIGNvbXB0eXBlLCBjb21wbmFtZSlgYCwgZXF1aXZhbGVudCB0byBvdXRwdXQgb2YgdGhlCisgICA6bWV0aDpgZ2V0XCpgIG1ldGhvZHMuCiAKIAogLi4gbWV0aG9kOjogYWlmYy5nZXRtYXJrZXJzKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAppbmRleCA3MjY3YWU0Li5mM2ViOWRkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CkBAIC05NzcsOSArOTc3LDkgQEAKIGBgdHlwZWBgIGFyZ3VtZW50IGlzIGFwcGxpZWQgdG8gZGVmYXVsdCBhcmd1bWVudHMuCiAKIFRvIGVhc2UgdGhlIHVzZSBvZiB2YXJpb3VzIHR5cGVzIG9mIGZpbGVzLCB0aGUgYXJncGFyc2UgbW9kdWxlIHByb3ZpZGVzIHRoZQotZmFjdG9yeSBGaWxlVHlwZSB3aGljaCB0YWtlcyB0aGUgYGBtb2RlPWBgIGFuZCBgYGJ1ZnNpemU9YGAgYXJndW1lbnRzIG9mIHRoZQotOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uLiAgRm9yIGV4YW1wbGUsIGBgRmlsZVR5cGUoJ3cnKWBgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhCi13cml0YWJsZSBmaWxlOjoKK2ZhY3RvcnkgRmlsZVR5cGUgd2hpY2ggdGFrZXMgdGhlIGBgbW9kZT1gYCwgYGBidWZzaXplPWBgLCBgYGVuY29kaW5nPWBgIGFuZAorYGBlcnJvcnM9YGAgYXJndW1lbnRzIG9mIHRoZSA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24uICBGb3IgZXhhbXBsZSwKK2BgRmlsZVR5cGUoJ3cnKWBgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHdyaXRhYmxlIGZpbGU6OgogCiAgICA+Pj4gcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJ2JhcicsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3cnKSkKQEAgLTE2MTksMTcgKzE2MTksMTkgQEAKIEZpbGVUeXBlIG9iamVjdHMKIF5eXl5eXl5eXl5eXl5eXl4KIAotLi4gY2xhc3M6OiBGaWxlVHlwZShtb2RlPSdyJywgYnVmc2l6ZT1Ob25lKQorLi4gY2xhc3M6OiBGaWxlVHlwZShtb2RlPSdyJywgYnVmc2l6ZT0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCiAKICAgIFRoZSA6Y2xhc3M6YEZpbGVUeXBlYCBmYWN0b3J5IGNyZWF0ZXMgb2JqZWN0cyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIHR5cGUKICAgIGFyZ3VtZW50IG9mIDptZXRoOmBBcmd1bWVudFBhcnNlci5hZGRfYXJndW1lbnRgLiAgQXJndW1lbnRzIHRoYXQgaGF2ZQotICAgOmNsYXNzOmBGaWxlVHlwZWAgb2JqZWN0cyBhcyB0aGVpciB0eXBlIHdpbGwgb3BlbiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGFzIGZpbGVzCi0gICB3aXRoIHRoZSByZXF1ZXN0ZWQgbW9kZXMgYW5kIGJ1ZmZlciBzaXplczo6CisgICA6Y2xhc3M6YEZpbGVUeXBlYCBvYmplY3RzIGFzIHRoZWlyIHR5cGUgd2lsbCBvcGVuIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgYXMKKyAgIGZpbGVzIHdpdGggdGhlIHJlcXVlc3RlZCBtb2RlcywgYnVmZmVyIHNpemVzLCBlbmNvZGluZ3MgYW5kIGVycm9yIGhhbmRsaW5nCisgICAoc2VlIHRoZSA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24gZm9yIG1vcmUgZGV0YWlscyk6OgogCiAgICAgICA+Pj4gcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQotICAgICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgnd2InLCAwKSkKLSAgICAgID4+PiBwYXJzZXIucGFyc2VfYXJncyhbJy0tb3V0cHV0JywgJ291dCddKQotICAgICAgTmFtZXNwYWNlKG91dHB1dD08X2lvLkJ1ZmZlcmVkV3JpdGVyIG5hbWU9J291dCc+KQorICAgICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmF3JywgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgnd2InLCAwKSkKKyAgICAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCdvdXQnLCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCd3JywgZW5jb2Rpbmc9J1VURi04JykpCisgICAgICA+Pj4gcGFyc2VyLnBhcnNlX2FyZ3MoWyctLXJhdycsICdyYXcuZGF0JywgJ2ZpbGUudHh0J10pCisgICAgICBOYW1lc3BhY2Uob3V0PTxfaW8uVGV4dElPV3JhcHBlciBuYW1lPSdmaWxlLnR4dCcgbW9kZT0ndycgZW5jb2Rpbmc9J1VURi04Jz4sIHJhdz08X2lvLkZpbGVJTyBuYW1lPSdyYXcuZGF0JyBtb2RlPSd3Yic+KQogCiAgICBGaWxlVHlwZSBvYmplY3RzIHVuZGVyc3RhbmQgdGhlIHBzZXVkby1hcmd1bWVudCBgYCctJ2BgIGFuZCBhdXRvbWF0aWNhbGx5CiAgICBjb252ZXJ0IHRoaXMgaW50byBgYHN5cy5zdGRpbmBgIGZvciByZWFkYWJsZSA6Y2xhc3M6YEZpbGVUeXBlYCBvYmplY3RzIGFuZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IGE2NWZlNWIuLjk2YzVhZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTc2LDE0ICs3NiwxOSBAQAogICAgICAgICBiZSBtb2RpZmllZCB0byBjaGFuZ2Ugd2hpY2ggbWFwcGluZ3MgYXJlIHNlYXJjaGVkLiAgVGhlIGxpc3Qgc2hvdWxkCiAgICAgICAgIGFsd2F5cyBjb250YWluIGF0IGxlYXN0IG9uZSBtYXBwaW5nLgogCi0gICAgLi4gbWV0aG9kOjogbmV3X2NoaWxkKCkKKyAgICAuLiBtZXRob2Q6OiBuZXdfY2hpbGQobT1Ob25lKQogCi0gICAgICAgIFJldHVybnMgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhIG5ldyA6Y2xhc3M6YGRpY3RgIGZvbGxvd2VkIGJ5Ci0gICAgICAgIGFsbCBvZiB0aGUgbWFwcyBpbiB0aGUgY3VycmVudCBpbnN0YW5jZS4gIEEgY2FsbCB0byBgYGQubmV3X2NoaWxkKClgYCBpcwotICAgICAgICBlcXVpdmFsZW50IHRvOiBgYENoYWluTWFwKHt9LCAqZC5tYXBzKWBgLiAgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IKKyAgICAgICAgUmV0dXJucyBhIG5ldyA6Y2xhc3M6YENoYWluTWFwYCBjb250YWluaW5nIGEgbmV3IG1hcCBmb2xsb3dlZCBieQorICAgICAgICBhbGwgb2YgdGhlIG1hcHMgaW4gdGhlIGN1cnJlbnQgaW5zdGFuY2UuICBJZiBgYG1gYCBpcyBzcGVjaWZpZWQsCisgICAgICAgIGl0IGJlY29tZXMgdGhlIG5ldyBtYXAgYXQgdGhlIGZyb250IG9mIHRoZSBsaXN0IG9mIG1hcHBpbmdzOyBpZiBub3QKKyAgICAgICAgc3BlY2lmaWVkLCBhbiBlbXB0eSBkaWN0IGlzIHVzZWQsIHNvIHRoYXQgYSBjYWxsIHRvIGBgZC5uZXdfY2hpbGQoKWBgCisgICAgICAgIGlzIGVxdWl2YWxlbnQgdG86IGBgQ2hhaW5NYXAoe30sICpkLm1hcHMpYGAuICBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvcgogICAgICAgICBjcmVhdGluZyBzdWJjb250ZXh0cyB0aGF0IGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgYWx0ZXJpbmcgdmFsdWVzIGluIGFueQogICAgICAgICBvZiB0aGUgcGFyZW50IG1hcHBpbmdzLgogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICAgIFRoZSBvcHRpb25hbCBgYG1gYCBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAgICAgLi4gYXR0cmlidXRlOjogcGFyZW50cwogCiAgICAgICAgIFByb3BlcnR5IHJldHVybmluZyBhIG5ldyA6Y2xhc3M6YENoYWluTWFwYCBjb250YWluaW5nIGFsbCBvZiB0aGUgbWFwcyBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCBmYmE0OGY0Li4zNDliODA1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtOTQsNiArOTQsMjYgQEAKICAgIHdpdGhvdXQgbmVlZGluZyB0byBleHBsaWNpdGx5IGNsb3NlIGBgcGFnZWBgLiAgRXZlbiBpZiBhbiBlcnJvciBvY2N1cnMsCiAgICBgYHBhZ2UuY2xvc2UoKWBgIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIDprZXl3b3JkOmB3aXRoYCBibG9jayBpcyBleGl0ZWQuCiAKKy4uIGZ1bmN0aW9uOjogaWdub3JlZCgqZXhjZXB0aW9ucykKKworICAgUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgaWdub3JlcyB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbnMgaWYgdGhleQorICAgb2NjdXIgaW4gdGhlIGJvZHkgb2YgYSB3aXRoLXN0YXRlbWVudC4KKworICAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBpZ25vcmVkCisKKyAgICAgICB3aXRoIGlnbm9yZWQoT1NFcnJvcik6CisgICAgICAgICAgIG9zLnJlbW92ZSgnc29tZWZpbGUudG1wJykKKworICAgVGhpcyBjb2RlIGlzIGVxdWl2YWxlbnQgdG86OgorCisgICAgICAgdHJ5OgorICAgICAgICAgICBvcy5yZW1vdmUoJ3NvbWVmaWxlLnRtcCcpCisgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHBhc3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIC4uIGNsYXNzOjogQ29udGV4dERlY29yYXRvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CmluZGV4IGQwMzgyZTAuLjQ4YWYwODIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdApAQCAtMzAsMyArMzAsNCBAQAogICAgY29weS5yc3QKICAgIHBwcmludC5yc3QKICAgIHJlcHJsaWIucnN0CisgICBlbnVtLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDlkMGFmNjcuLjViY2FjNDcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTE3MCwxMCArMTcwLDEyIEBACiAgICAqIGBgMCA8PSBzZWNvbmRzIDwgMzYwMCoyNGBgICh0aGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gb25lIGRheSkKICAgICogYGAtOTk5OTk5OTk5IDw9IGRheXMgPD0gOTk5OTk5OTk5YGAKIAotICAgSWYgYW55IGFyZ3VtZW50IGlzIGEgZmxvYXQgYW5kIHRoZXJlIGFyZSBmcmFjdGlvbmFsIG1pY3Jvc2Vjb25kcywgdGhlIGZyYWN0aW9uYWwKLSAgIG1pY3Jvc2Vjb25kcyBsZWZ0IG92ZXIgZnJvbSBhbGwgYXJndW1lbnRzIGFyZSBjb21iaW5lZCBhbmQgdGhlaXIgc3VtIGlzIHJvdW5kZWQKLSAgIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAgSWYgbm8gYXJndW1lbnQgaXMgYSBmbG9hdCwgdGhlIGNvbnZlcnNpb24gYW5kCi0gICBub3JtYWxpemF0aW9uIHByb2Nlc3NlcyBhcmUgZXhhY3QgKG5vIGluZm9ybWF0aW9uIGlzIGxvc3QpLgorICAgSWYgYW55IGFyZ3VtZW50IGlzIGEgZmxvYXQgYW5kIHRoZXJlIGFyZSBmcmFjdGlvbmFsIG1pY3Jvc2Vjb25kcywKKyAgIHRoZSBmcmFjdGlvbmFsIG1pY3Jvc2Vjb25kcyBsZWZ0IG92ZXIgZnJvbSBhbGwgYXJndW1lbnRzIGFyZQorICAgY29tYmluZWQgYW5kIHRoZWlyIHN1bSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kIHVzaW5nCisgICByb3VuZC1oYWxmLXRvLWV2ZW4gdGllYnJlYWtlci4gIElmIG5vIGFyZ3VtZW50IGlzIGEgZmxvYXQsIHRoZQorICAgY29udmVyc2lvbiBhbmQgbm9ybWFsaXphdGlvbiBwcm9jZXNzZXMgYXJlIGV4YWN0IChubyBpbmZvcm1hdGlvbiBpcworICAgbG9zdCkuCiAKICAgIElmIHRoZSBub3JtYWxpemVkIHZhbHVlIG9mIGRheXMgbGllcyBvdXRzaWRlIHRoZSBpbmRpY2F0ZWQgcmFuZ2UsCiAgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpcyByYWlzZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCA0MzM5ZjU1Li40NjhjZTkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTI2LDcgKzI2LDggQEAKICAgIGRlZiBteWZ1bmMoYWxpc3QpOgogICAgICAgIHJldHVybiBsZW4oYWxpc3QpCiAKLXRoZSBmb2xsb3dpbmcgY29tbWFuZCBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIGRpc2Fzc2VtYmx5IG9mIDpmdW5jOmBteWZ1bmNgOjoKK3RoZSBmb2xsb3dpbmcgY29tbWFuZCBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IHRoZSBkaXNhc3NlbWJseSBvZgorOmZ1bmM6YG15ZnVuY2A6OgogCiAgICA+Pj4gZGlzLmRpcyhteWZ1bmMpCiAgICAgIDIgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKGxlbikKQEAgLTM2LDggKzM3LDYyIEBACiAKIChUaGUgIjIiIGlzIGEgbGluZSBudW1iZXIpLgogCi1UaGUgOm1vZDpgZGlzYCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgY29uc3RhbnRzOgorQnl0ZWNvZGUgYW5hbHlzaXMKKy0tLS0tLS0tLS0tLS0tLS0tCiAKK1RoZSBieXRlY29kZSBhbmFseXNpcyBBUEkgYWxsb3dzIHBpZWNlcyBvZiBQeXRob24gY29kZSB0byBiZSB3cmFwcGVkIGluIGEKKzpjbGFzczpgQnl0ZWNvZGVgIG9iamVjdCB0aGF0IHByb3ZpZGVzIGVhc3kgYWNjZXNzIHRvIGRldGFpbHMgb2YgdGhlCitjb21waWxlZCBjb2RlLgorCisuLiBjbGFzczo6IEJ5dGVjb2RlCisKKyAgIFRoZSBieXRlY29kZSBvcGVyYXRpb25zIG9mIGEgcGllY2Ugb2YgY29kZQorCisgICBUaGlzIGlzIGEgY29udmVuaWVudCB3cmFwcGVyIGFyb3VuZCBtYW55IG9mIHRoZSBmdW5jdGlvbnMgbGlzdGVkIGJlbG93LgorICAgSW5zdGFudGlhdGUgaXQgd2l0aCBhIGZ1bmN0aW9uLCBtZXRob2QsIHN0cmluZyBvZiBjb2RlLCBvciBhIGNvZGUgb2JqZWN0CisgICAoYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGNvbXBpbGVgKS4KKworICAgSXRlcmF0aW5nIG92ZXIgdGhpcyB5aWVsZHMgdGhlIGJ5dGVjb2RlIG9wZXJhdGlvbnMgYXMgOmNsYXNzOmBJbnN0cnVjdGlvbmAKKyAgIGluc3RhbmNlcy4KKworICAgLi4gZGF0YTo6IGNvZGVvYmoKKworICAgICAgVGhlIGNvbXBpbGVkIGNvZGUgb2JqZWN0LgorCisgICAuLiBtZXRob2Q6OiBkaXNwbGF5X2NvZGUoKiwgZmlsZT1Ob25lKQorCisgICAgICBQcmludCBhIGZvcm1hdHRlZCB2aWV3IG9mIHRoZSBieXRlY29kZSBvcGVyYXRpb25zLCBsaWtlIDpmdW5jOmBkaXNgLgorCisgICAuLiBtZXRob2Q6OiBpbmZvKCkKKworICAgICAgUmV0dXJuIGEgZm9ybWF0dGVkIG11bHRpLWxpbmUgc3RyaW5nIHdpdGggZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICBjb2RlIG9iamVjdCwgbGlrZSA6ZnVuYzpgY29kZV9pbmZvYC4KKworICAgLi4gbWV0aG9kOjogc2hvd19pbmZvKCosIGZpbGU9Tm9uZSkKKworICAgICAgUHJpbnQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2RlIG9iamVjdCBhcyByZXR1cm5lZCBieSA6bWV0aDpgaW5mb2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCitFeGFtcGxlOjoKKworICAgID4+PiBieXRlY29kZSA9IGRpcy5CeXRlY29kZShteWZ1bmMpCisgICAgPj4+IGZvciBpbnN0ciBpbiBieXRlY29kZToKKyAgICAuLi4gICAgIHByaW50KGluc3RyLm9wbmFtZSkKKyAgICAuLi4KKyAgICBMT0FEX0dMT0JBTAorICAgIExPQURfRkFTVAorICAgIENBTExfRlVOQ1RJT04KKyAgICBSRVRVUk5fVkFMVUUKKworCitBbmFseXNpcyBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgZGlzYCBtb2R1bGUgYWxzbyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgYW5hbHlzaXMgZnVuY3Rpb25zIHRoYXQKK2NvbnZlcnQgdGhlIGlucHV0IGRpcmVjdGx5IHRvIHRoZSBkZXNpcmVkIG91dHB1dC4gVGhleSBjYW4gYmUgdXNlZnVsIGlmCitvbmx5IGEgc2luZ2xlIG9wZXJhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQsIHNvIHRoZSBpbnRlcm1lZGlhdGUgYW5hbHlzaXMKK29iamVjdCBpc24ndCB1c2VmdWw6CiAKIC4uIGZ1bmN0aW9uOjogY29kZV9pbmZvKHgpCiAKQEAgLTUxLDE3ICsxMDYsMjEgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGZ1bmN0aW9uOjogc2hvd19jb2RlKHgpCisuLiBmdW5jdGlvbjo6IHNob3dfY29kZSh4LCAqLCBmaWxlPU5vbmUpCiAKICAgIFByaW50IGRldGFpbGVkIGNvZGUgb2JqZWN0IGluZm9ybWF0aW9uIGZvciB0aGUgc3VwcGxpZWQgZnVuY3Rpb24sIG1ldGhvZCwKICAgIHNvdXJjZSBjb2RlIHN0cmluZyBvciBjb2RlIG9iamVjdCB0byBzdGRvdXQuCiAKLSAgIFRoaXMgaXMgYSBjb252ZW5pZW50IHNob3J0aGFuZCBmb3IgYGBwcmludChjb2RlX2luZm8oeCkpYGAsIGludGVuZGVkIGZvcgotICAgaW50ZXJhY3RpdmUgZXhwbG9yYXRpb24gYXQgdGhlIGludGVycHJldGVyIHByb21wdC4KKyAgIFRoaXMgaXMgYSBjb252ZW5pZW50IHNob3J0aGFuZCBmb3IgYGBwcmludChjb2RlX2luZm8oeCksIGZpbGU9ZmlsZSlgYCwKKyAgIGludGVuZGVkIGZvciBpbnRlcmFjdGl2ZSBleHBsb3JhdGlvbiBhdCB0aGUgaW50ZXJwcmV0ZXIgcHJvbXB0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotLi4gZnVuY3Rpb246OiBkaXMoeD1Ob25lKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIEFkZGVkIGBgZmlsZWBgIHBhcmFtZXRlcgorCisKKy4uIGZ1bmN0aW9uOjogZGlzKHg9Tm9uZSwgKiwgZmlsZT1Ob25lKQogCiAgICBEaXNhc3NlbWJsZSB0aGUgKngqIG9iamVjdC4gICp4KiBjYW4gZGVub3RlIGVpdGhlciBhIG1vZHVsZSwgYSBjbGFzcywgYQogICAgbWV0aG9kLCBhIGZ1bmN0aW9uLCBhIGNvZGUgb2JqZWN0LCBhIHN0cmluZyBvZiBzb3VyY2UgY29kZSBvciBhIGJ5dGUgc2VxdWVuY2UKQEAgLTcyLDE2ICsxMzEsMjggQEAKICAgIGRpc2Fzc2VtYmxlZC4gIElmIG5vIG9iamVjdCBpcyBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiBkaXNhc3NlbWJsZXMgdGhlIGxhc3QKICAgIHRyYWNlYmFjay4KIAorICAgVGhlIGRpc2Fzc2VtYmx5IGlzIHdyaXR0ZW4gYXMgdGV4dCB0byB0aGUgc3VwcGxpZWQgYGBmaWxlYGAgYXJndW1lbnQgaWYKKyAgIHByb3ZpZGVkIGFuZCB0byBgYHN5cy5zdGRvdXRgYCBvdGhlcndpc2UuCiAKLS4uIGZ1bmN0aW9uOjogZGlzdGIodGI9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBBZGRlZCBgYGZpbGVgYCBwYXJhbWV0ZXIKKworCisuLiBmdW5jdGlvbjo6IGRpc3RiKHRiPU5vbmUsICosIGZpbGU9Tm9uZSkKIAogICAgRGlzYXNzZW1ibGUgdGhlIHRvcC1vZi1zdGFjayBmdW5jdGlvbiBvZiBhIHRyYWNlYmFjaywgdXNpbmcgdGhlIGxhc3QKICAgIHRyYWNlYmFjayBpZiBub25lIHdhcyBwYXNzZWQuICBUaGUgaW5zdHJ1Y3Rpb24gY2F1c2luZyB0aGUgZXhjZXB0aW9uIGlzCiAgICBpbmRpY2F0ZWQuCiAKKyAgIFRoZSBkaXNhc3NlbWJseSBpcyB3cml0dGVuIGFzIHRleHQgdG8gdGhlIHN1cHBsaWVkIGBgZmlsZWBgIGFyZ3VtZW50IGlmCisgICBwcm92aWRlZCBhbmQgdG8gYGBzeXMuc3Rkb3V0YGAgb3RoZXJ3aXNlLgogCi0uLiBmdW5jdGlvbjo6IGRpc2Fzc2VtYmxlKGNvZGUsIGxhc3RpPS0xKQotICAgICAgICAgICAgICBkaXNjbyhjb2RlLCBsYXN0aT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBBZGRlZCBgYGZpbGVgYCBwYXJhbWV0ZXIKKworCisuLiBmdW5jdGlvbjo6IGRpc2Fzc2VtYmxlKGNvZGUsIGxhc3RpPS0xLCAqLCBmaWxlPU5vbmUpCisgICAgICAgICAgICAgIGRpc2NvKGNvZGUsIGxhc3RpPS0xLCAqLCBmaWxlPU5vbmUpCiAKICAgIERpc2Fzc2VtYmxlIGEgY29kZSBvYmplY3QsIGluZGljYXRpbmcgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gaWYgKmxhc3RpKiB3YXMKICAgIHByb3ZpZGVkLiAgVGhlIG91dHB1dCBpcyBkaXZpZGVkIGluIHRoZSBmb2xsb3dpbmcgY29sdW1uczoKQEAgLTk3LDYgKzE2OCwyNiBAQAogICAgVGhlIHBhcmFtZXRlciBpbnRlcnByZXRhdGlvbiByZWNvZ25pemVzIGxvY2FsIGFuZCBnbG9iYWwgdmFyaWFibGUgbmFtZXMsCiAgICBjb25zdGFudCB2YWx1ZXMsIGJyYW5jaCB0YXJnZXRzLCBhbmQgY29tcGFyZSBvcGVyYXRvcnMuCiAKKyAgIFRoZSBkaXNhc3NlbWJseSBpcyB3cml0dGVuIGFzIHRleHQgdG8gdGhlIHN1cHBsaWVkIGBgZmlsZWBgIGFyZ3VtZW50IGlmCisgICBwcm92aWRlZCBhbmQgdG8gYGBzeXMuc3Rkb3V0YGAgb3RoZXJ3aXNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgQWRkZWQgYGBmaWxlYGAgcGFyYW1ldGVyCisKKworLi4gZnVuY3Rpb246OiBnZXRfaW5zdHJ1Y3Rpb25zKHgsICosIGxpbmVfb2Zmc2V0PTApCisKKyAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIHN1cHBsaWVkIGZ1bmN0aW9uLCBtZXRob2QsCisgICBzb3VyY2UgY29kZSBzdHJpbmcgb3IgY29kZSBvYmplY3QuCisKKyAgIFRoZSBpdGVyYXRvciBnZW5lcmF0ZXMgYSBzZXJpZXMgb2YgOmNsYXNzOmBJbnN0cnVjdGlvbmAgbmFtZWQgdHVwbGVzCisgICBnaXZpbmcgdGhlIGRldGFpbHMgb2YgZWFjaCBvcGVyYXRpb24gaW4gdGhlIHN1cHBsaWVkIGNvZGUuCisKKyAgIFRoZSBnaXZlbiAqbGluZV9vZmZzZXQqIGlzIGFkZGVkIHRvIHRoZSBgYHN0YXJ0c19saW5lYGAgYXR0cmlidXRlIG9mIGFueQorICAgaW5zdHJ1Y3Rpb25zIHRoYXQgc3RhcnQgYSBuZXcgbGluZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIAogLi4gZnVuY3Rpb246OiBmaW5kbGluZXN0YXJ0cyhjb2RlKQogCkBAIC0xMTAsNjIgKzIwMSw2MSBAQAogICAgRGV0ZWN0IGFsbCBvZmZzZXRzIGluIHRoZSBjb2RlIG9iamVjdCAqY29kZSogd2hpY2ggYXJlIGp1bXAgdGFyZ2V0cywgYW5kCiAgICByZXR1cm4gYSBsaXN0IG9mIHRoZXNlIG9mZnNldHMuCiAKLQotLi4gZGF0YTo6IG9wbmFtZQotCi0gICBTZXF1ZW5jZSBvZiBvcGVyYXRpb24gbmFtZXMsIGluZGV4YWJsZSB1c2luZyB0aGUgYnl0ZWNvZGUuCi0KLQotLi4gZGF0YTo6IG9wbWFwCi0KLSAgIERpY3Rpb25hcnkgbWFwcGluZyBvcGVyYXRpb24gbmFtZXMgdG8gYnl0ZWNvZGVzLgotCi0KLS4uIGRhdGE6OiBjbXBfb3AKLQotICAgU2VxdWVuY2Ugb2YgYWxsIGNvbXBhcmUgb3BlcmF0aW9uIG5hbWVzLgotCi0KLS4uIGRhdGE6OiBoYXNjb25zdAotCi0gICBTZXF1ZW5jZSBvZiBieXRlY29kZXMgdGhhdCBoYXZlIGEgY29uc3RhbnQgcGFyYW1ldGVyLgotCi0KLS4uIGRhdGE6OiBoYXNmcmVlCi0KLSAgIFNlcXVlbmNlIG9mIGJ5dGVjb2RlcyB0aGF0IGFjY2VzcyBhIGZyZWUgdmFyaWFibGUuCi0KLQotLi4gZGF0YTo6IGhhc25hbWUKLQotICAgU2VxdWVuY2Ugb2YgYnl0ZWNvZGVzIHRoYXQgYWNjZXNzIGFuIGF0dHJpYnV0ZSBieSBuYW1lLgotCi0KLS4uIGRhdGE6OiBoYXNqcmVsCi0KLSAgIFNlcXVlbmNlIG9mIGJ5dGVjb2RlcyB0aGF0IGhhdmUgYSByZWxhdGl2ZSBqdW1wIHRhcmdldC4KLQotCi0uLiBkYXRhOjogaGFzamFicwotCi0gICBTZXF1ZW5jZSBvZiBieXRlY29kZXMgdGhhdCBoYXZlIGFuIGFic29sdXRlIGp1bXAgdGFyZ2V0LgotCi0KLS4uIGRhdGE6OiBoYXNsb2NhbAotCi0gICBTZXF1ZW5jZSBvZiBieXRlY29kZXMgdGhhdCBhY2Nlc3MgYSBsb2NhbCB2YXJpYWJsZS4KLQotCi0uLiBkYXRhOjogaGFzY29tcGFyZQotCi0gICBTZXF1ZW5jZSBvZiBieXRlY29kZXMgb2YgQm9vbGVhbiBvcGVyYXRpb25zLgotCi0KIC4uIF9ieXRlY29kZXM6CiAKIFB5dGhvbiBCeXRlY29kZSBJbnN0cnVjdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorVGhlIDpmdW5jOmBnZXRfaW5zdHJ1Y3Rpb25zYCBmdW5jdGlvbiBhbmQgOmNsYXNzOmBCeXRlY29kZWAgY2xhc3MgcHJvdmlkZQorZGV0YWlscyBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnMgYXMgOmNsYXNzOmBJbnN0cnVjdGlvbmAgaW5zdGFuY2VzOgorCisuLiBjbGFzczo6IEluc3RydWN0aW9uCisKKyAgIERldGFpbHMgZm9yIGEgYnl0ZWNvZGUgb3BlcmF0aW9uCisKKyAgIC4uIGRhdGE6OiBvcGNvZGUKKworICAgICAgbnVtZXJpYyBjb2RlIGZvciBvcGVyYXRpb24sIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9wY29kZSB2YWx1ZXMgbGlzdGVkCisgICAgICBiZWxvdyBhbmQgdGhlIGJ5dGVjb2RlIHZhbHVlcyBpbiB0aGUgOnJlZjpgb3Bjb2RlX2NvbGxlY3Rpb25zYC4KKworCisgICAuLiBkYXRhOjogb3BuYW1lCisKKyAgICAgIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIG9wZXJhdGlvbgorCisKKyAgIC4uIGRhdGE6OiBhcmcKKworICAgICAgbnVtZXJpYyBhcmd1bWVudCB0byBvcGVyYXRpb24gKGlmIGFueSksIG90aGVyd2lzZSBOb25lCisKKworICAgLi4gZGF0YTo6IGFyZ3ZhbAorCisgICAgICByZXNvbHZlZCBhcmcgdmFsdWUgKGlmIGtub3duKSwgb3RoZXJ3aXNlIHNhbWUgYXMgYXJnCisKKworICAgLi4gZGF0YTo6IGFyZ3JlcHIKKworICAgICAgaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygb3BlcmF0aW9uIGFyZ3VtZW50CisKKworICAgLi4gZGF0YTo6IG9mZnNldAorCisgICAgICBzdGFydCBpbmRleCBvZiBvcGVyYXRpb24gd2l0aGluIGJ5dGVjb2RlIHNlcXVlbmNlCisKKworICAgLi4gZGF0YTo6IHN0YXJ0c19saW5lCisKKyAgICAgIGxpbmUgc3RhcnRlZCBieSB0aGlzIG9wY29kZSAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUKKworCisgICAuLiBkYXRhOjogaXNfanVtcF90YXJnZXQKKworICAgICAgVHJ1ZSBpZiBvdGhlciBjb2RlIGp1bXBzIHRvIGhlcmUsIG90aGVyd2lzZSBGYWxzZQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiBUaGUgUHl0aG9uIGNvbXBpbGVyIGN1cnJlbnRseSBnZW5lcmF0ZXMgdGhlIGZvbGxvd2luZyBieXRlY29kZSBpbnN0cnVjdGlvbnMuCiAKIApAQCAtNTA2LDEyICs1OTYsNiBAQAogICAgLi4gWFhYIGV4cGxhaW4gdGhlIFdIWSBzdHVmZiEKIAogCi0uLiBvcGNvZGU6OiBTVE9SRV9MT0NBTFMKLQotICAgUG9wcyBUT1MgZnJvbSB0aGUgc3RhY2sgYW5kIHN0b3JlcyBpdCBhcyB0aGUgY3VycmVudCBmcmFtZSdzIGBgZl9sb2NhbHNgYC4KLSAgIFRoaXMgaXMgdXNlZCBpbiBjbGFzcyBjb25zdHJ1Y3Rpb24uCi0KLQogQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyBleHBlY3QgYXJndW1lbnRzLiAgQW4gYXJndW1lbnQgaXMgdHdvIGJ5dGVzLCB3aXRoCiB0aGUgbW9yZSBzaWduaWZpY2FudCBieXRlIGxhc3QuCiAKQEAgLTcyMiw2ICs4MDYsMTMgQEAKICAgIFB1c2hlcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHRoZSBjZWxsIGNvbnRhaW5zIG9uIHRoZSBzdGFjay4KIAogCisuLiBvcGNvZGU6OiBMT0FEX0NMQVNTREVSRUYgKGkpCisKKyAgIE11Y2ggbGlrZSA6b3Bjb2RlOmBMT0FEX0RFUkVGYCBidXQgZmlyc3QgY2hlY2tzIHRoZSBsb2NhbHMgZGljdGlvbmFyeSBiZWZvcmUKKyAgIGNvbnN1bHRpbmcgdGhlIGNlbGwuICBUaGlzIGlzIHVzZWQgZm9yIGxvYWRpbmcgZnJlZSB2YXJpYWJsZXMgaW4gY2xhc3MKKyAgIGJvZGllcy4KKworCiAuLiBvcGNvZGU6OiBTVE9SRV9ERVJFRiAoaSkKIAogICAgU3RvcmVzIFRPUyBpbnRvIHRoZSBjZWxsIGNvbnRhaW5lZCBpbiBzbG90ICppKiBvZiB0aGUgY2VsbCBhbmQgZnJlZSB2YXJpYWJsZQpAQCAtODEzLDMgKzkwNCw2MiBAQAogICAgd2hpY2ggZG9uJ3QgdGFrZSBhcmd1bWVudHMgYGA8IEhBVkVfQVJHVU1FTlRgYCBhbmQgdGhvc2Ugd2hpY2ggZG8gYGA+PQogICAgSEFWRV9BUkdVTUVOVGBgLgogCisuLiBfb3Bjb2RlX2NvbGxlY3Rpb25zOgorCitPcGNvZGUgY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBjb2xsZWN0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGF1dG9tYXRpYyBpbnRyb3NwZWN0aW9uIG9mIGJ5dGVjb2RlCitpbnN0cnVjdGlvbnM6CisKKy4uIGRhdGE6OiBvcG5hbWUKKworICAgU2VxdWVuY2Ugb2Ygb3BlcmF0aW9uIG5hbWVzLCBpbmRleGFibGUgdXNpbmcgdGhlIGJ5dGVjb2RlLgorCisKKy4uIGRhdGE6OiBvcG1hcAorCisgICBEaWN0aW9uYXJ5IG1hcHBpbmcgb3BlcmF0aW9uIG5hbWVzIHRvIGJ5dGVjb2Rlcy4KKworCisuLiBkYXRhOjogY21wX29wCisKKyAgIFNlcXVlbmNlIG9mIGFsbCBjb21wYXJlIG9wZXJhdGlvbiBuYW1lcy4KKworCisuLiBkYXRhOjogaGFzY29uc3QKKworICAgU2VxdWVuY2Ugb2YgYnl0ZWNvZGVzIHRoYXQgaGF2ZSBhIGNvbnN0YW50IHBhcmFtZXRlci4KKworCisuLiBkYXRhOjogaGFzZnJlZQorCisgICBTZXF1ZW5jZSBvZiBieXRlY29kZXMgdGhhdCBhY2Nlc3MgYSBmcmVlIHZhcmlhYmxlIChub3RlIHRoYXQgJ2ZyZWUnIGluCisgICB0aGlzIGNvbnRleHQgcmVmZXJzIHRvIG5hbWVzIGluIHRoZSBjdXJyZW50IHNjb3BlIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkKKyAgIGlubmVyIHNjb3BlcyBvciBuYW1lcyBpbiBvdXRlciBzY29wZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBmcm9tIHRoaXMgc2NvcGUuCisgICBJdCBkb2VzICpub3QqIGluY2x1ZGUgcmVmZXJlbmNlcyB0byBnbG9iYWwgb3IgYnVpbHRpbiBzY29wZXMpLgorCisKKy4uIGRhdGE6OiBoYXNuYW1lCisKKyAgIFNlcXVlbmNlIG9mIGJ5dGVjb2RlcyB0aGF0IGFjY2VzcyBhbiBhdHRyaWJ1dGUgYnkgbmFtZS4KKworCisuLiBkYXRhOjogaGFzanJlbAorCisgICBTZXF1ZW5jZSBvZiBieXRlY29kZXMgdGhhdCBoYXZlIGEgcmVsYXRpdmUganVtcCB0YXJnZXQuCisKKworLi4gZGF0YTo6IGhhc2phYnMKKworICAgU2VxdWVuY2Ugb2YgYnl0ZWNvZGVzIHRoYXQgaGF2ZSBhbiBhYnNvbHV0ZSBqdW1wIHRhcmdldC4KKworCisuLiBkYXRhOjogaGFzbG9jYWwKKworICAgU2VxdWVuY2Ugb2YgYnl0ZWNvZGVzIHRoYXQgYWNjZXNzIGEgbG9jYWwgdmFyaWFibGUuCisKKworLi4gZGF0YTo6IGhhc2NvbXBhcmUKKworICAgU2VxdWVuY2Ugb2YgYnl0ZWNvZGVzIG9mIEJvb2xlYW4gb3BlcmF0aW9ucy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKaW5kZXggMjIyYzcxOS4uNjEzOGUzMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKQEAgLTQ5NSw3ICs0OTUsMTAgQEAKIEEgbnVtYmVyIG9mIG9wdGlvbiBmbGFncyBjb250cm9sIHZhcmlvdXMgYXNwZWN0cyBvZiBkb2N0ZXN0J3MgYmVoYXZpb3IuCiBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWdzIGFyZSBzdXBwbGllZCBhcyBtb2R1bGUgY29uc3RhbnRzLCB3aGljaCBjYW4gYmUKIG9yJ2VkIHRvZ2V0aGVyIGFuZCBwYXNzZWQgdG8gdmFyaW91cyBmdW5jdGlvbnMuICBUaGUgbmFtZXMgY2FuIGFsc28gYmUgdXNlZCBpbgotOnJlZjpgZG9jdGVzdCBkaXJlY3RpdmVzIDxkb2N0ZXN0LWRpcmVjdGl2ZXM+YC4KKzpyZWY6YGRvY3Rlc3QgZGlyZWN0aXZlcyA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAsIGFuZCBtYXkgYmUgcGFzc2VkIHRvIHRoZQorZG9jdGVzdCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIHZpYSB0aGUgYGAtb2BgIG9wdGlvbi4KKworLi4gdmVyc2lvbmFkZGVkOjogMy40IHRoZSBgYC1vYGAgY29tbWFuZCBsaW5lIG9wdGlvbgogCiBUaGUgZmlyc3QgZ3JvdXAgb2Ygb3B0aW9ucyBkZWZpbmUgdGVzdCBzZW1hbnRpY3MsIGNvbnRyb2xsaW5nIGFzcGVjdHMgb2YgaG93CiBkb2N0ZXN0IGRlY2lkZXMgd2hldGhlciBhY3R1YWwgb3V0cHV0IG1hdGNoZXMgYW4gZXhhbXBsZSdzIGV4cGVjdGVkIG91dHB1dDoKQEAgLTYzMyw2ICs2MzYsMTkgQEAKICAgIHRoZSBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KIAogCisuLiBkYXRhOjogRkFJTF9GQVNUCisKKyAgIFdoZW4gc3BlY2lmaWVkLCBleGl0IGFmdGVyIHRoZSBmaXJzdCBmYWlsaW5nIGV4YW1wbGUgYW5kIGRvbid0IGF0dGVtcHQgdG8gcnVuCisgICB0aGUgcmVtYWluaW5nIGV4YW1wbGVzLiBUaHVzLCB0aGUgbnVtYmVyIG9mIGZhaWx1cmVzIHJlcG9ydGVkIHdpbGwgYmUgYXQgbW9zdAorICAgMS4gIFRoaXMgZmxhZyBtYXkgYmUgdXNlZnVsIGR1cmluZyBkZWJ1Z2dpbmcsIHNpbmNlIGV4YW1wbGVzIGFmdGVyIHRoZSBmaXJzdAorICAgZmFpbHVyZSB3b24ndCBldmVuIHByb2R1Y2UgZGVidWdnaW5nIG91dHB1dC4KKworICAgVGhlIGRvY3Rlc3QgY29tbWFuZCBsaW5lIGFjY2VwdHMgdGhlIG9wdGlvbiBgYC1mYGAgYXMgYSBzaG9ydGhhbmQgZm9yIGBgLW8KKyAgIEZBSUxfRkFTVGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBkYXRhOjogUkVQT1JUSU5HX0ZMQUdTCiAKICAgIEEgYml0bWFzayBvcidpbmcgdG9nZXRoZXIgYWxsIHRoZSByZXBvcnRpbmcgZmxhZ3MgYWJvdmUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CmluZGV4IDJkMDdhMGEuLjdhNzQyMjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CkBAIC00MiwxNCArNDIsMjEgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogCi0gICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj0wKQorICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCi0gICAgICBpcyBgYFRydWVgYCwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgotICAgICAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyCi0gICAgICBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvCi0gICAgICBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5Ci0gICAgICBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorICAgICAgaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgorICAgICAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eSByZWFzb25zLAorICAgICAgKm1heGhlYWRlcmxlbiogZGVmYXVsdHMgdG8gYGAwYGAsIHNvIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IHZhbHVlIHlvdQorICAgICAgbXVzdCBvdmVycmlkZSBpdCBleHBsaWNpdGx5ICh0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciAqbWF4X2xpbmVfbGVuZ3RoKiBpbgorICAgICAgdGhlIHBvbGljeSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhpcyBtZXRob2QpLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQorICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgYEdlbmVyYXRvcmBgLgorCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKKyAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZworICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKICAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwogICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCkBAIC02NSwxMCArNzIsNTcgQEAKICAgICAgICAgIGcuZmxhdHRlbihtc2cpCiAgICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQogCisgICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKKyAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCisgICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKIAotICAgICAgRXF1aXZhbGVudCB0byBgYGFzX3N0cmluZyh1bml4ZnJvbT1UcnVlKWBgLgorICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCisgICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisKKworICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIGJ5dGVzIG9iamVjdC4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQorICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQorICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKKyAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZworICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cworICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCisgICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCisgICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCisgICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgQnl0ZXNHZW5lcmF0b3IKKyAgICAgICAgIGZwID0gQnl0ZXNJTygpCisgICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCisgICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKKworICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQorICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCiAgICAuLiBtZXRob2Q6OiBpc19tdWx0aXBhcnQoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKaW5kZXggOTk4MDZlZS4uOTNjNTM1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC05Nyw2ICs5NywxNyBAQAogYGBzZW5kbWFpbCdzYGAgYGBzdGRpbmBgLCB3aGVyZSB0aGUgZGVmYXVsdCBwb2xpY3kgd291bGQgdXNlIGBgXG5gYCBsaW5lCiBzZXBhcmF0b3JzLgogCitTb21lIGVtYWlsIHBhY2thZ2UgbWV0aG9kcyBhY2NlcHQgYSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50LCBhbGxvd2luZyB0aGUKK3BvbGljeSB0byBiZSBvdmVycmlkZGVuIGZvciB0aGF0IG1ldGhvZC4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgdXNlcwordGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AgbWV0aG9kIG9mIHRoZSAqbXNnKiBvYmplY3QgZnJvbQordGhlIHByZXZpb3VzIGV4YW1wbGUgYW5kIHdyaXRlcyB0aGUgbWVzc2FnZSB0byBhIGZpbGUgdXNpbmcgdGhlIG5hdGl2ZSBsaW5lCitzZXBhcmF0b3JzIGZvciB0aGUgcGxhdGZvcm0gb24gd2hpY2ggaXQgaXMgcnVubmluZzo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiB3aXRoIG9wZW4oJ2NvbnZlcnRlZC50eHQnLCAnd2InKSBhcyBmOgorICAgLi4uICAgICBmLndyaXRlKG1zZy5hc19ieXRlcyhwb2xpY3k9bXNnLnBvbGljeS5jbG9uZShsaW5lc2VwPW9zLmxpbmVzZXApKSkKKyAgIDE3CisKIFBvbGljeSBvYmplY3RzIGNhbiBhbHNvIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBhZGRpdGlvbiBvcGVyYXRvciwgcHJvZHVjaW5nIGEKIHBvbGljeSBvYmplY3Qgd2hvc2Ugc2V0dGluZ3MgYXJlIGEgY29tYmluYXRpb24gb2YgdGhlIG5vbi1kZWZhdWx0IHZhbHVlcyBvZiB0aGUKIHN1bW1lZCBvYmplY3RzOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VudW0ucnN0IGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg2NDcwNQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CkBAIC0wLDAgKzEsNTkzIEBACis6bW9kOmBlbnVtYCAtLS0gU3VwcG9ydCBmb3IgZW51bWVyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGVudW0KKyAgIDpzeW5vcHNpczogSW1wbGVtZW50YXRpb24gb2YgYW4gZW51bWVyYXRpb24gY2xhc3MuCisKKy4uIDptb2R1bGVhdXRob3I6OiBFdGhhbiBGdXJtYW4gPGV0aGFuQHN0b25lbGVhZi51cz4KKy4uIDpzZWN0aW9uYXV0aG9yOjogQmFycnkgV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPiwKKy4uIDpzZWN0aW9uYXV0aG9yOjogRWxpIEJlbmRlcnNreSA8ZWxpYmVuQGdtYWlsLmNvbT4sCisuLiA6c2VjdGlvbmF1dGhvcjo6IEV0aGFuIEZ1cm1hbiA8ZXRoYW5Ac3RvbmVsZWFmLnVzPgorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbnVtLnB5YAorCistLS0tLS0tLS0tLS0tLS0tCisKK0FuIGVudW1lcmF0aW9uIGlzIGEgc2V0IG9mIHN5bWJvbGljIG5hbWVzIChtZW1iZXJzKSBib3VuZCB0byB1bmlxdWUsIGNvbnN0YW50Cit2YWx1ZXMuICBXaXRoaW4gYW4gZW51bWVyYXRpb24sIHRoZSBtZW1iZXJzIGNhbiBiZSBjb21wYXJlZCBieSBpZGVudGl0eSwgYW5kCit0aGUgZW51bWVyYXRpb24gaXRzZWxmIGNhbiBiZSBpdGVyYXRlZCBvdmVyLgorCitUaGlzIG1vZHVsZSBkZWZpbmVzIHR3byBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQorc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gLiAgSXQgYWxzbyBkZWZpbmVzCitvbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYCwgdGhhdCBlbnN1cmVzIG9ubHkgdW5pcXVlIG1lbWJlciB2YWx1ZXMgYXJlCitwcmVzZW50IGluIGFuIGVudW1lcmF0aW9uLgorCisKK0NyZWF0aW5nIGFuIEVudW0KKy0tLS0tLS0tLS0tLS0tLS0KKworRW51bWVyYXRpb25zIGFyZSBjcmVhdGVkIHVzaW5nIHRoZSA6a2V5d29yZDpgY2xhc3NgIHN5bnRheCwgd2hpY2ggbWFrZXMgdGhlbQorZWFzeSB0byByZWFkIGFuZCB3cml0ZS4gIEFuIGFsdGVybmF0aXZlIGNyZWF0aW9uIG1ldGhvZCBpcyBkZXNjcmliZWQgaW4KK2BGdW5jdGlvbmFsIEFQSWBfLiAgVG8gZGVmaW5lIGFuIGVudW1lcmF0aW9uLCBzdWJjbGFzcyA6Y2xhc3M6YEVudW1gIGFzCitmb2xsb3dzOjoKKworICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEVudW0KKyAgICA+Pj4gY2xhc3MgQ29sb3IoRW51bSk6CisgICAgLi4uICAgICByZWQgPSAxCisgICAgLi4uICAgICBncmVlbiA9IDIKKyAgICAuLi4gICAgIGJsdWUgPSAzCisKKyoqQSBub3RlIG9uIG5vbWVuY2xhdHVyZSoqOiB3ZSBjYWxsIDpjbGFzczpgQ29sb3JgIGFuICplbnVtZXJhdGlvbiogKG9yICplbnVtKikKK2FuZCA6YXR0cjpgQ29sb3IucmVkYCwgOmF0dHI6YENvbG9yLmdyZWVuYCBhcmUgKmVudW1lcmF0aW9uIG1lbWJlcnMqIChvcgorKmVudW0gbWVtYmVycyopLiAgRW51bWVyYXRpb24gbWVtYmVycyBhbHNvIGhhdmUgKnZhbHVlcyogKHRoZSB2YWx1ZSBvZgorOmF0dHI6YENvbG9yLnJlZGAgaXMgYGAxYGAsIGV0Yy4pCisKK0VudW1lcmF0aW9uIG1lbWJlcnMgaGF2ZSBodW1hbiByZWFkYWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb25zOjoKKworICAgID4+PiBwcmludChDb2xvci5yZWQpCisgICAgQ29sb3IucmVkCisKKy4uLndoaWxlIHRoZWlyIGBgcmVwcmBgIGhhcyBtb3JlIGluZm9ybWF0aW9uOjoKKworICAgID4+PiBwcmludChyZXByKENvbG9yLnJlZCkpCisgICAgPENvbG9yLnJlZDogMT4KKworVGhlICp0eXBlKiBvZiBhbiBlbnVtZXJhdGlvbiBtZW1iZXIgaXMgdGhlIGVudW1lcmF0aW9uIGl0IGJlbG9uZ3MgdG86OgorCisgICAgPj4+IHR5cGUoQ29sb3IucmVkKQorICAgIDxlbnVtICdDb2xvcic+CisgICAgPj4+IGlzaW5zdGFuY2UoQ29sb3IuZ3JlZW4sIENvbG9yKQorICAgIFRydWUKKyAgICA+Pj4KKworRW51bSBtZW1iZXJzIGFsc28gaGF2ZSBhIHByb3BlcnR5IHRoYXQgY29udGFpbnMganVzdCB0aGVpciBpdGVtIG5hbWU6OgorCisgICAgPj4+IHByaW50KENvbG9yLnJlZC5uYW1lKQorICAgIHJlZAorCitFbnVtZXJhdGlvbnMgc3VwcG9ydCBpdGVyYXRpb24sIGluIGRlZmluaXRpb24gb3JkZXI6OgorCisgICAgPj4+IGNsYXNzIFNoYWtlKEVudW0pOgorICAgIC4uLiAgIHZhbmlsbGEgPSA3CisgICAgLi4uICAgY2hvY29sYXRlID0gNAorICAgIC4uLiAgIGNvb2tpZXMgPSA5CisgICAgLi4uICAgbWludCA9IDMKKyAgICAuLi4KKyAgICA+Pj4gZm9yIHNoYWtlIGluIFNoYWtlOgorICAgIC4uLiAgIHByaW50KHNoYWtlKQorICAgIC4uLgorICAgIFNoYWtlLnZhbmlsbGEKKyAgICBTaGFrZS5jaG9jb2xhdGUKKyAgICBTaGFrZS5jb29raWVzCisgICAgU2hha2UubWludAorCitFbnVtZXJhdGlvbiBtZW1iZXJzIGFyZSBoYXNoYWJsZSwgc28gdGhleSBjYW4gYmUgdXNlZCBpbiBkaWN0aW9uYXJpZXMgYW5kIHNldHM6OgorCisgICAgPj4+IGFwcGxlcyA9IHt9CisgICAgPj4+IGFwcGxlc1tDb2xvci5yZWRdID0gJ3JlZCBkZWxpY2lvdXMnCisgICAgPj4+IGFwcGxlc1tDb2xvci5ncmVlbl0gPSAnZ3Jhbm55IHNtaXRoJworICAgID4+PiBhcHBsZXMgPT0ge0NvbG9yLnJlZDogJ3JlZCBkZWxpY2lvdXMnLCBDb2xvci5ncmVlbjogJ2dyYW5ueSBzbWl0aCd9CisgICAgVHJ1ZQorCisKK1Byb2dyYW1tYXRpYyBhY2Nlc3MgdG8gZW51bWVyYXRpb24gbWVtYmVycyBhbmQgdGhlaXIgYXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyBpdCdzIHVzZWZ1bCB0byBhY2Nlc3MgbWVtYmVycyBpbiBlbnVtZXJhdGlvbnMgcHJvZ3JhbW1hdGljYWxseSAoaS5lLgorc2l0dWF0aW9ucyB3aGVyZSBgYENvbG9yLnJlZGBgIHdvbid0IGRvIGJlY2F1c2UgdGhlIGV4YWN0IGNvbG9yIGlzIG5vdCBrbm93bgorYXQgcHJvZ3JhbS13cml0aW5nIHRpbWUpLiAgYGBFbnVtYGAgYWxsb3dzIHN1Y2ggYWNjZXNzOjoKKworICAgID4+PiBDb2xvcigxKQorICAgIDxDb2xvci5yZWQ6IDE+CisgICAgPj4+IENvbG9yKDMpCisgICAgPENvbG9yLmJsdWU6IDM+CisKK0lmIHlvdSB3YW50IHRvIGFjY2VzcyBlbnVtIG1lbWJlcnMgYnkgKm5hbWUqLCB1c2UgaXRlbSBhY2Nlc3M6OgorCisgICAgPj4+IENvbG9yWydyZWQnXQorICAgIDxDb2xvci5yZWQ6IDE+CisgICAgPj4+IENvbG9yWydncmVlbiddCisgICAgPENvbG9yLmdyZWVuOiAyPgorCitJZiBoYXZlIGFuIGVudW0gbWVtYmVyIGFuZCBuZWVkIGl0cyA6YXR0cjpgbmFtZWAgb3IgOmF0dHI6YHZhbHVlYDo6CisKKyAgICA+Pj4gbWVtYmVyID0gQ29sb3IucmVkCisgICAgPj4+IG1lbWJlci5uYW1lCisgICAgJ3JlZCcKKyAgICA+Pj4gbWVtYmVyLnZhbHVlCisgICAgMQorCisKK0R1cGxpY2F0aW5nIGVudW0gbWVtYmVycyBhbmQgdmFsdWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIYXZpbmcgdHdvIGVudW0gbWVtYmVycyB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgaW52YWxpZDo6CisKKyAgICA+Pj4gY2xhc3MgU2hhcGUoRW51bSk6CisgICAgLi4uICAgc3F1YXJlID0gMgorICAgIC4uLiAgIHNxdWFyZSA9IDMKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gcmV1c2Uga2V5OiAnc3F1YXJlJworCitIb3dldmVyLCB0d28gZW51bSBtZW1iZXJzIGFyZSBhbGxvd2VkIHRvIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBHaXZlbiB0d28gbWVtYmVycworQSBhbmQgQiB3aXRoIHRoZSBzYW1lIHZhbHVlIChhbmQgQSBkZWZpbmVkIGZpcnN0KSwgQiBpcyBhbiBhbGlhcyB0byBBLiAgQnktdmFsdWUKK2xvb2t1cCBvZiB0aGUgdmFsdWUgb2YgQSBhbmQgQiB3aWxsIHJldHVybiBBLiAgQnktbmFtZSBsb29rdXAgb2YgQiB3aWxsIGFsc28KK3JldHVybiBBOjoKKworICAgID4+PiBjbGFzcyBTaGFwZShFbnVtKToKKyAgICAuLi4gICBzcXVhcmUgPSAyCisgICAgLi4uICAgZGlhbW9uZCA9IDEKKyAgICAuLi4gICBjaXJjbGUgPSAzCisgICAgLi4uICAgYWxpYXNfZm9yX3NxdWFyZSA9IDIKKyAgICAuLi4KKyAgICA+Pj4gU2hhcGUuc3F1YXJlCisgICAgPFNoYXBlLnNxdWFyZTogMj4KKyAgICA+Pj4gU2hhcGUuYWxpYXNfZm9yX3NxdWFyZQorICAgIDxTaGFwZS5zcXVhcmU6IDI+CisgICAgPj4+IFNoYXBlKDIpCisgICAgPFNoYXBlLnNxdWFyZTogMj4KKworCitFbnN1cmluZyB1bmlxdWUgZW51bWVyYXRpb24gdmFsdWVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J5IGRlZmF1bHQsIGVudW1lcmF0aW9ucyBhbGxvdyBtdWx0aXBsZSBuYW1lcyBhcyBhbGlhc2VzIGZvciB0aGUgc2FtZSB2YWx1ZS4KK1doZW4gdGhpcyBiZWhhdmlvciBpc24ndCBkZXNpcmVkLCB0aGUgZm9sbG93aW5nIGRlY29yYXRvciBjYW4gYmUgdXNlZCB0bworZW5zdXJlIGVhY2ggdmFsdWUgaXMgdXNlZCBvbmx5IG9uY2UgaW4gdGhlIGVudW1lcmF0aW9uOgorCisuLiBkZWNvcmF0b3I6OiB1bmlxdWUKKworQSA6a2V5d29yZDpgY2xhc3NgIGRlY29yYXRvciBzcGVjaWZpY2FsbHkgZm9yIGVudW1lcmF0aW9ucy4gIEl0IHNlYXJjaGVzIGFuCitlbnVtZXJhdGlvbidzIDphdHRyOmBfX21lbWJlcnNfX2AgZ2F0aGVyaW5nIGFueSBhbGlhc2VzIGl0IGZpbmRzOyBpZiBhbnkgYXJlCitmb3VuZCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgd2l0aCB0aGUgZGV0YWlsczo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCB1bmlxdWUKKyAgICA+Pj4gQHVuaXF1ZQorICAgIC4uLiBjbGFzcyBNaXN0YWtlKEVudW0pOgorICAgIC4uLiAgIG9uZSA9IDEKKyAgICAuLi4gICB0d28gPSAyCisgICAgLi4uICAgdGhyZWUgPSAzCisgICAgLi4uICAgZm91ciA9IDMKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVmFsdWVFcnJvcjogZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVlCisKKworSXRlcmF0aW9uCis9PT09PT09PT0KKworSXRlcmF0aW5nIG92ZXIgdGhlIG1lbWJlcnMgb2YgYW4gZW51bSBkb2VzIG5vdCBwcm92aWRlIHRoZSBhbGlhc2VzOjoKKworICAgID4+PiBsaXN0KFNoYXBlKQorICAgIFs8U2hhcGUuc3F1YXJlOiAyPiwgPFNoYXBlLmRpYW1vbmQ6IDE+LCA8U2hhcGUuY2lyY2xlOiAzPl0KKworVGhlIHNwZWNpYWwgYXR0cmlidXRlIGBgX19tZW1iZXJzX19gYCBpcyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcwordG8gbWVtYmVycy4gIEl0IGluY2x1ZGVzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZSBlbnVtZXJhdGlvbiwgaW5jbHVkaW5nIHRoZQorYWxpYXNlczo6CisKKyAgICA+Pj4gZm9yIG5hbWUsIG1lbWJlciBpbiBTaGFwZS5fX21lbWJlcnNfXy5pdGVtcygpOgorICAgIC4uLiAgIG5hbWUsIG1lbWJlcgorICAgIC4uLgorICAgICgnc3F1YXJlJywgPFNoYXBlLnNxdWFyZTogMj4pCisgICAgKCdkaWFtb25kJywgPFNoYXBlLmRpYW1vbmQ6IDE+KQorICAgICgnY2lyY2xlJywgPFNoYXBlLmNpcmNsZTogMz4pCisgICAgKCdhbGlhc19mb3Jfc3F1YXJlJywgPFNoYXBlLnNxdWFyZTogMj4pCisKK1RoZSBgYF9fbWVtYmVyc19fYGAgYXR0cmlidXRlIGNhbiBiZSB1c2VkIGZvciBkZXRhaWxlZCBwcm9ncmFtbWF0aWMgYWNjZXNzIHRvCit0aGUgZW51bWVyYXRpb24gbWVtYmVycy4gIEZvciBleGFtcGxlLCBmaW5kaW5nIGFsbCB0aGUgYWxpYXNlczo6CisKKyAgICA+Pj4gW25hbWUgZm9yIG5hbWUsIG1lbWJlciBpbiBTaGFwZS5fX21lbWJlcnNfXy5pdGVtcygpIGlmIG1lbWJlci5uYW1lICE9IG5hbWVdCisgICAgWydhbGlhc19mb3Jfc3F1YXJlJ10KKworCitDb21wYXJpc29ucworLS0tLS0tLS0tLS0KKworRW51bWVyYXRpb24gbWVtYmVycyBhcmUgY29tcGFyZWQgYnkgaWRlbnRpdHk6OgorCisgICAgPj4+IENvbG9yLnJlZCBpcyBDb2xvci5yZWQKKyAgICBUcnVlCisgICAgPj4+IENvbG9yLnJlZCBpcyBDb2xvci5ibHVlCisgICAgRmFsc2UKKyAgICA+Pj4gQ29sb3IucmVkIGlzIG5vdCBDb2xvci5ibHVlCisgICAgVHJ1ZQorCitPcmRlcmVkIGNvbXBhcmlzb25zIGJldHdlZW4gZW51bWVyYXRpb24gdmFsdWVzIGFyZSAqbm90KiBzdXBwb3J0ZWQuICBFbnVtCittZW1iZXJzIGFyZSBub3QgaW50ZWdlcnMgKGJ1dCBzZWUgYEludEVudW1gXyBiZWxvdyk6OgorCisgICAgPj4+IENvbG9yLnJlZCA8IENvbG9yLmJsdWUKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IENvbG9yKCkgPCBDb2xvcigpCisKK0VxdWFsaXR5IGNvbXBhcmlzb25zIGFyZSBkZWZpbmVkIHRob3VnaDo6CisKKyAgICA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5yZWQKKyAgICBGYWxzZQorICAgID4+PiBDb2xvci5ibHVlICE9IENvbG9yLnJlZAorICAgIFRydWUKKyAgICA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5ibHVlCisgICAgVHJ1ZQorCitDb21wYXJpc29ucyBhZ2FpbnN0IG5vbi1lbnVtZXJhdGlvbiB2YWx1ZXMgd2lsbCBhbHdheXMgY29tcGFyZSBub3QgZXF1YWwKKyhhZ2FpbiwgY2xhc3M6YEludEVudW1gIHdhcyBleHBsaWNpdGx5IGRlc2lnbmVkIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSwgc2VlCitiZWxvdyk6OgorCisgICAgPj4+IENvbG9yLmJsdWUgPT0gMgorICAgIEZhbHNlCisKKworQWxsb3dlZCBtZW1iZXJzIGFuZCBhdHRyaWJ1dGVzIG9mIGVudW1lcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZXhhbXBsZXMgYWJvdmUgdXNlIGludGVnZXJzIGZvciBlbnVtZXJhdGlvbiB2YWx1ZXMuICBVc2luZyBpbnRlZ2VycyBpcworc2hvcnQgYW5kIGhhbmR5IChhbmQgcHJvdmlkZWQgYnkgZGVmYXVsdCBieSB0aGUgYEZ1bmN0aW9uYWwgQVBJYF8pLCBidXQgbm90CitzdHJpY3RseSBlbmZvcmNlZC4gIEluIHRoZSB2YXN0IG1ham9yaXR5IG9mIHVzZS1jYXNlcywgb25lIGRvZXNuJ3QgY2FyZSB3aGF0Cit0aGUgYWN0dWFsIHZhbHVlIG9mIGFuIGVudW1lcmF0aW9uIGlzLiAgQnV0IGlmIHRoZSB2YWx1ZSAqaXMqIGltcG9ydGFudCwKK2VudW1lcmF0aW9ucyBjYW4gaGF2ZSBhcmJpdHJhcnkgdmFsdWVzLgorCitFbnVtZXJhdGlvbnMgYXJlIFB5dGhvbiBjbGFzc2VzLCBhbmQgY2FuIGhhdmUgbWV0aG9kcyBhbmQgc3BlY2lhbCBtZXRob2RzIGFzCit1c3VhbC4gIElmIHdlIGhhdmUgdGhpcyBlbnVtZXJhdGlvbjo6CisKKyAgICA+Pj4gY2xhc3MgTW9vZChFbnVtKToKKyAgICAuLi4gICBmdW5reSA9IDEKKyAgICAuLi4gICBoYXBweSA9IDMKKyAgICAuLi4KKyAgICAuLi4gICBkZWYgZGVzY3JpYmUoc2VsZik6CisgICAgLi4uICAgICAjIHNlbGYgaXMgdGhlIG1lbWJlciBoZXJlCisgICAgLi4uICAgICByZXR1cm4gc2VsZi5uYW1lLCBzZWxmLnZhbHVlCisgICAgLi4uCisgICAgLi4uICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgLi4uICAgICByZXR1cm4gJ215IGN1c3RvbSBzdHIhIHswfScuZm9ybWF0KHNlbGYudmFsdWUpCisgICAgLi4uCisgICAgLi4uICAgQGNsYXNzbWV0aG9kCisgICAgLi4uICAgZGVmIGZhdm9yaXRlX21vb2QoY2xzKToKKyAgICAuLi4gICAgICMgY2xzIGhlcmUgaXMgdGhlIGVudW1lcmF0aW9uCisgICAgLi4uICAgICByZXR1cm4gY2xzLmhhcHB5CisKK1RoZW46OgorCisgICAgPj4+IE1vb2QuZmF2b3JpdGVfbW9vZCgpCisgICAgPE1vb2QuaGFwcHk6IDM+CisgICAgPj4+IE1vb2QuaGFwcHkuZGVzY3JpYmUoKQorICAgICgnaGFwcHknLCAzKQorICAgID4+PiBzdHIoTW9vZC5mdW5reSkKKyAgICAnbXkgY3VzdG9tIHN0ciEgMScKKworVGhlIHJ1bGVzIGZvciB3aGF0IGlzIGFsbG93ZWQgYXJlIGFzIGZvbGxvd3M6IF9zdW5kZXJfIG5hbWVzIChzdGFydGluZyBhbmQKK2VuZGluZyB3aXRoIGEgc2luZ2xlIHVuZGVyc2NvcmUpIGFyZSByZXNlcnZlZCBieSBlbnVtIGFuZCBjYW5ub3QgYmUgdXNlZDsKK2FsbCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgd2l0aGluIGFuIGVudW1lcmF0aW9uIHdpbGwgYmVjb21lIG1lbWJlcnMgb2YgdGhpcworZW51bWVyYXRpb24sIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiAqX19kdW5kZXJfXyogbmFtZXMgYW5kIGRlc2NyaXB0b3JzIChtZXRob2RzCithcmUgYWxzbyBkZXNjcmlwdG9ycykuCisKK05vdGU6ICBpZiB5b3VyIGVudW1lcmF0aW9uIGRlZmluZXMgOm1ldGg6YF9fbmV3X19gIGFuZC9vciA6bWV0aDpgX19pbml0X19gIHRoZW4KK3doYXRldmVyIHZhbHVlKHMpIHdlcmUgZ2l2ZW4gdG8gdGhlIGVudW0gbWVtYmVyIHdpbGwgYmUgcGFzc2VkIGludG8gdGhvc2UKK21ldGhvZHMuICBTZWUgYFBsYW5ldGBfIGZvciBhbiBleGFtcGxlLgorCisKK1Jlc3RyaWN0ZWQgc3ViY2xhc3Npbmcgb2YgZW51bWVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTdWJjbGFzc2luZyBhbiBlbnVtZXJhdGlvbiBpcyBhbGxvd2VkIG9ubHkgaWYgdGhlIGVudW1lcmF0aW9uIGRvZXMgbm90IGRlZmluZQorYW55IG1lbWJlcnMuICBTbyB0aGlzIGlzIGZvcmJpZGRlbjo6CisKKyAgICA+Pj4gY2xhc3MgTW9yZUNvbG9yKENvbG9yKToKKyAgICAuLi4gICBwaW5rID0gMTcKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiBDYW5ub3QgZXh0ZW5kIGVudW1lcmF0aW9ucworCitCdXQgdGhpcyBpcyBhbGxvd2VkOjoKKworICAgID4+PiBjbGFzcyBGb28oRW51bSk6CisgICAgLi4uICAgZGVmIHNvbWVfYmVoYXZpb3Ioc2VsZik6CisgICAgLi4uICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IGNsYXNzIEJhcihGb28pOgorICAgIC4uLiAgIGhhcHB5ID0gMQorICAgIC4uLiAgIHNhZCA9IDIKKyAgICAuLi4KKworQWxsb3dpbmcgc3ViY2xhc3Npbmcgb2YgZW51bXMgdGhhdCBkZWZpbmUgbWVtYmVycyB3b3VsZCBsZWFkIHRvIGEgdmlvbGF0aW9uIG9mCitzb21lIGltcG9ydGFudCBpbnZhcmlhbnRzIG9mIHR5cGVzIGFuZCBpbnN0YW5jZXMuICBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgbWFrZXMKK3NlbnNlIHRvIGFsbG93IHNoYXJpbmcgc29tZSBjb21tb24gYmVoYXZpb3IgYmV0d2VlbiBhIGdyb3VwIG9mIGVudW1lcmF0aW9ucy4KKyhTZWUgYE9yZGVyZWRFbnVtYF8gZm9yIGFuIGV4YW1wbGUuKQorCisKK1BpY2tsaW5nCistLS0tLS0tLQorCitFbnVtZXJhdGlvbnMgY2FuIGJlIHBpY2tsZWQgYW5kIHVucGlja2xlZDo6CisKKyAgICA+Pj4gZnJvbSB0ZXN0LnRlc3RfZW51bSBpbXBvcnQgRnJ1aXQKKyAgICA+Pj4gZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXBzLCBsb2FkcworICAgID4+PiBGcnVpdC50b21hdG8gaXMgbG9hZHMoZHVtcHMoRnJ1aXQudG9tYXRvKSkKKyAgICBUcnVlCisKK1RoZSB1c3VhbCByZXN0cmljdGlvbnMgZm9yIHBpY2tsaW5nIGFwcGx5OiBwaWNrbGFibGUgZW51bXMgbXVzdCBiZSBkZWZpbmVkIGluCit0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLCBzaW5jZSB1bnBpY2tsaW5nIHJlcXVpcmVzIHRoZW0gdG8gYmUgaW1wb3J0YWJsZQorZnJvbSB0aGF0IG1vZHVsZS4KKworLi4gd2FybmluZzo6CisKKyAgICBJbiBvcmRlciB0byBzdXBwb3J0IHRoZSBzaW5nbGV0b24gbmF0dXJlIG9mIGVudW1lcmF0aW9uIG1lbWJlcnMsIHBpY2tsZQorICAgIHByb3RvY29sIHZlcnNpb24gMiBvciBoaWdoZXIgbXVzdCBiZSB1c2VkLgorCisKK0Z1bmN0aW9uYWwgQVBJCistLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBFbnVtYCBjbGFzcyBpcyBjYWxsYWJsZSwgcHJvdmlkaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbCBBUEk6OgorCisgICAgPj4+IEFuaW1hbCA9IEVudW0oJ0FuaW1hbCcsICdhbnQgYmVlIGNhdCBkb2cnKQorICAgID4+PiBBbmltYWwKKyAgICA8ZW51bSAnQW5pbWFsJz4KKyAgICA+Pj4gQW5pbWFsLmFudAorICAgIDxBbmltYWwuYW50OiAxPgorICAgID4+PiBBbmltYWwuYW50LnZhbHVlCisgICAgMQorICAgID4+PiBsaXN0KEFuaW1hbCkKKyAgICBbPEFuaW1hbC5hbnQ6IDE+LCA8QW5pbWFsLmJlZTogMj4sIDxBbmltYWwuY2F0OiAzPiwgPEFuaW1hbC5kb2c6IDQ+XQorCitUaGUgc2VtYW50aWNzIG9mIHRoaXMgQVBJIHJlc2VtYmxlIDpjbGFzczpgbmFtZWR0dXBsZWAuIFRoZSBmaXJzdCBhcmd1bWVudAorb2YgdGhlIGNhbGwgdG8gOmNsYXNzOmBFbnVtYCBpcyB0aGUgbmFtZSBvZiB0aGUgZW51bWVyYXRpb24uCisKK1RoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlICpzb3VyY2UqIG9mIGVudW1lcmF0aW9uIG1lbWJlciBuYW1lcy4gIEl0IGNhbiBiZSBhCit3aGl0ZXNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgb2YgbmFtZXMsIGEgc2VxdWVuY2Ugb2YgbmFtZXMsIGEgc2VxdWVuY2Ugb2YKKzItdHVwbGVzIHdpdGgga2V5L3ZhbHVlIHBhaXJzLCBvciBhIG1hcHBpbmcgKGUuZy4gZGljdGlvbmFyeSkgb2YgbmFtZXMgdG8KK3ZhbHVlcy4gIFRoZSBsYXN0IHR3byBvcHRpb25zIGVuYWJsZSBhc3NpZ25pbmcgYXJiaXRyYXJ5IHZhbHVlcyB0bworZW51bWVyYXRpb25zOyB0aGUgb3RoZXJzIGF1dG8tYXNzaWduIGluY3JlYXNpbmcgaW50ZWdlcnMgc3RhcnRpbmcgd2l0aCAxLiAgQQorbmV3IGNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YEVudW1gIGlzIHJldHVybmVkLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBhYm92ZQorYXNzaWdubWVudCB0byA6Y2xhc3M6YEFuaW1hbGAgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICA+Pj4gY2xhc3MgQW5pbWFscyhFbnVtKToKKyAgICAuLi4gICBhbnQgPSAxCisgICAgLi4uICAgYmVlID0gMgorICAgIC4uLiAgIGNhdCA9IDMKKyAgICAuLi4gICBkb2cgPSA0CisKK1RoZSByZWFzb24gZm9yIGRlZmF1bHRpbmcgdG8gYGAxYGAgYXMgdGhlIHN0YXJ0aW5nIG51bWJlciBhbmQgbm90IGBgMGBgIGlzCit0aGF0IGBgMGBgIGlzIGBgRmFsc2VgYCBpbiBhIGJvb2xlYW4gc2Vuc2UsIGJ1dCBlbnVtIG1lbWJlcnMgYWxsIGV2YWx1YXRlCit0byBgYFRydWVgYC4KKworUGlja2xpbmcgZW51bXMgY3JlYXRlZCB3aXRoIHRoZSBmdW5jdGlvbmFsIEFQSSBjYW4gYmUgdHJpY2t5IGFzIGZyYW1lIHN0YWNrCitpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSB1c2VkIHRvIHRyeSBhbmQgZmlndXJlIG91dCB3aGljaCBtb2R1bGUgdGhlCitlbnVtZXJhdGlvbiBpcyBiZWluZyBjcmVhdGVkIGluIChlLmcuIGl0IHdpbGwgZmFpbCBpZiB5b3UgdXNlIGEgdXRpbGl0eQorZnVuY3Rpb24gaW4gc2VwYXJhdGUgbW9kdWxlLCBhbmQgYWxzbyBtYXkgbm90IHdvcmsgb24gSXJvblB5dGhvbiBvciBKeXRob24pLgorVGhlIHNvbHV0aW9uIGlzIHRvIHNwZWNpZnkgdGhlIG1vZHVsZSBuYW1lIGV4cGxpY2l0bHkgYXMgZm9sbG93czo6CisKKyAgICA+Pj4gQW5pbWFscyA9IEVudW0oJ0FuaW1hbHMnLCAnYW50IGJlZSBjYXQgZG9nJywgbW9kdWxlPV9fbmFtZV9fKQorCitEZXJpdmVkIEVudW1lcmF0aW9ucworPT09PT09PT09PT09PT09PT09PT0KKworSW50RW51bQorLS0tLS0tLQorCitBIHZhcmlhdGlvbiBvZiA6Y2xhc3M6YEVudW1gIGlzIHByb3ZpZGVkIHdoaWNoIGlzIGFsc28gYSBzdWJjbGFzcyBvZgorOmNsYXNzOmBpbnRgLiAgTWVtYmVycyBvZiBhbiA6Y2xhc3M6YEludEVudW1gIGNhbiBiZSBjb21wYXJlZCB0byBpbnRlZ2VyczsKK2J5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5cGVzIGNhbiBhbHNvIGJlIGNvbXBhcmVkCit0byBlYWNoIG90aGVyOjoKKworICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEludEVudW0KKyAgICA+Pj4gY2xhc3MgU2hhcGUoSW50RW51bSk6CisgICAgLi4uICAgY2lyY2xlID0gMQorICAgIC4uLiAgIHNxdWFyZSA9IDIKKyAgICAuLi4KKyAgICA+Pj4gY2xhc3MgUmVxdWVzdChJbnRFbnVtKToKKyAgICAuLi4gICBwb3N0ID0gMQorICAgIC4uLiAgIGdldCA9IDIKKyAgICAuLi4KKyAgICA+Pj4gU2hhcGUgPT0gMQorICAgIEZhbHNlCisgICAgPj4+IFNoYXBlLmNpcmNsZSA9PSAxCisgICAgVHJ1ZQorICAgID4+PiBTaGFwZS5jaXJjbGUgPT0gUmVxdWVzdC5wb3N0CisgICAgVHJ1ZQorCitIb3dldmVyLCB0aGV5IHN0aWxsIGNhbid0IGJlIGNvbXBhcmVkIHRvIHN0YW5kYXJkIDpjbGFzczpgRW51bWAgZW51bWVyYXRpb25zOjoKKworICAgID4+PiBjbGFzcyBTaGFwZShJbnRFbnVtKToKKyAgICAuLi4gICBjaXJjbGUgPSAxCisgICAgLi4uICAgc3F1YXJlID0gMgorICAgIC4uLgorICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAuLi4gICByZWQgPSAxCisgICAgLi4uICAgZ3JlZW4gPSAyCisgICAgLi4uCisgICAgPj4+IFNoYXBlLmNpcmNsZSA9PSBDb2xvci5yZWQKKyAgICBGYWxzZQorCis6Y2xhc3M6YEludEVudW1gIHZhbHVlcyBiZWhhdmUgbGlrZSBpbnRlZ2VycyBpbiBvdGhlciB3YXlzIHlvdSdkIGV4cGVjdDo6CisKKyAgICA+Pj4gaW50KFNoYXBlLmNpcmNsZSkKKyAgICAxCisgICAgPj4+IFsnYScsICdiJywgJ2MnXVtTaGFwZS5jaXJjbGVdCisgICAgJ2InCisgICAgPj4+IFtpIGZvciBpIGluIHJhbmdlKFNoYXBlLnNxdWFyZSldCisgICAgWzAsIDFdCisKK0ZvciB0aGUgdmFzdCBtYWpvcml0eSBvZiBjb2RlLCA6Y2xhc3M6YEVudW1gIGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkLAorc2luY2UgOmNsYXNzOmBJbnRFbnVtYCBicmVha3Mgc29tZSBzZW1hbnRpYyBwcm9taXNlcyBvZiBhbiBlbnVtZXJhdGlvbiAoYnkKK2JlaW5nIGNvbXBhcmFibGUgdG8gaW50ZWdlcnMsIGFuZCB0aHVzIGJ5IHRyYW5zaXRpdml0eSB0byBvdGhlcgordW5yZWxhdGVkIGVudW1lcmF0aW9ucykuICBJdCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIHNwZWNpYWwgY2FzZXMgd2hlcmUKK3RoZXJlJ3Mgbm8gb3RoZXIgY2hvaWNlOyBmb3IgZXhhbXBsZSwgd2hlbiBpbnRlZ2VyIGNvbnN0YW50cyBhcmUKK3JlcGxhY2VkIHdpdGggZW51bWVyYXRpb25zIGFuZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCB3aXRoIGNvZGUKK3RoYXQgc3RpbGwgZXhwZWN0cyBpbnRlZ2Vycy4KKworCitPdGhlcnMKKy0tLS0tLQorCitXaGlsZSA6Y2xhc3M6YEludEVudW1gIGlzIHBhcnQgb2YgdGhlIDptb2Q6YGVudW1gIG1vZHVsZSwgaXQgd291bGQgYmUgdmVyeQorc2ltcGxlIHRvIGltcGxlbWVudCBpbmRlcGVuZGVudGx5OjoKKworICAgIGNsYXNzIEludEVudW0oaW50LCBFbnVtKToKKyAgICAgICAgcGFzcworCitUaGlzIGRlbW9uc3RyYXRlcyBob3cgc2ltaWxhciBkZXJpdmVkIGVudW1lcmF0aW9ucyBjYW4gYmUgZGVmaW5lZDsgZm9yIGV4YW1wbGUKK2EgOmNsYXNzOmBTdHJFbnVtYCB0aGF0IG1peGVzIGluIDpjbGFzczpgc3RyYCBpbnN0ZWFkIG9mIDpjbGFzczpgaW50YC4KKworU29tZSBydWxlczoKKworMS4gV2hlbiBzdWJjbGFzc2luZyA6Y2xhc3M6YEVudW1gLCBtaXgtaW4gdHlwZXMgbXVzdCBhcHBlYXIgYmVmb3JlCisgICA6Y2xhc3M6YEVudW1gIGl0c2VsZiBpbiB0aGUgc2VxdWVuY2Ugb2YgYmFzZXMsIGFzIGluIHRoZSA6Y2xhc3M6YEludEVudW1gCisgICBleGFtcGxlIGFib3ZlLgorMi4gV2hpbGUgOmNsYXNzOmBFbnVtYCBjYW4gaGF2ZSBtZW1iZXJzIG9mIGFueSB0eXBlLCBvbmNlIHlvdSBtaXggaW4gYW4KKyAgIGFkZGl0aW9uYWwgdHlwZSwgYWxsIHRoZSBtZW1iZXJzIG11c3QgaGF2ZSB2YWx1ZXMgb2YgdGhhdCB0eXBlLCBlLmcuCisgICA6Y2xhc3M6YGludGAgYWJvdmUuICBUaGlzIHJlc3RyaWN0aW9uIGRvZXMgbm90IGFwcGx5IHRvIG1peC1pbnMgd2hpY2ggb25seQorICAgYWRkIG1ldGhvZHMgYW5kIGRvbid0IHNwZWNpZnkgYW5vdGhlciBkYXRhIHR5cGUgc3VjaCBhcyA6Y2xhc3M6YGludGAgb3IKKyAgIDpjbGFzczpgc3RyYC4KKzMuIFdoZW4gYW5vdGhlciBkYXRhIHR5cGUgaXMgbWl4ZWQgaW4sIHRoZSA6YXR0cjpgdmFsdWVgIGF0dHJpYnV0ZSBpcyAqbm90IHRoZQorICAgc2FtZSogYXMgdGhlIGVudW0gbWVtYmVyIGl0c2VsZiwgYWx0aG91Z2ggaXQgaXMgZXF1aXZhbGFudCBhbmQgd2lsbCBjb21wYXJlCisgICBlcXVhbC4KKworCitJbnRlcmVzdGluZyBleGFtcGxlcworPT09PT09PT09PT09PT09PT09PT0KKworV2hpbGUgOmNsYXNzOmBFbnVtYCBhbmQgOmNsYXNzOmBJbnRFbnVtYCBhcmUgZXhwZWN0ZWQgdG8gY292ZXIgdGhlIG1ham9yaXR5IG9mCit1c2UtY2FzZXMsIHRoZXkgY2Fubm90IGNvdmVyIHRoZW0gYWxsLiAgSGVyZSBhcmUgcmVjaXBlcyBmb3Igc29tZSBkaWZmZXJlbnQKK3R5cGVzIG9mIGVudW1lcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGRpcmVjdGx5LCBvciBhcyBleGFtcGxlcyBmb3IgY3JlYXRpbmcKK29uZSdzIG93bi4KKworCitBdXRvTnVtYmVyCistLS0tLS0tLS0tCisKK0F2b2lkcyBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgdmFsdWUgZm9yIGVhY2ggZW51bWVyYXRpb24gbWVtYmVyOjoKKworICAgID4+PiBjbGFzcyBBdXRvTnVtYmVyKEVudW0pOgorICAgIC4uLiAgICAgZGVmIF9fbmV3X18oY2xzKToKKyAgICAuLi4gICAgICAgICB2YWx1ZSA9IGxlbihjbHMuX19tZW1iZXJzX18pICsgMQorICAgIC4uLiAgICAgICAgIG9iaiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAuLi4gICAgICAgICBvYmouX3ZhbHVlXyA9IHZhbHVlCisgICAgLi4uICAgICAgICAgcmV0dXJuIG9iagorICAgIC4uLgorICAgID4+PiBjbGFzcyBDb2xvcihBdXRvTnVtYmVyKToKKyAgICAuLi4gICAgIHJlZCA9ICgpCisgICAgLi4uICAgICBncmVlbiA9ICgpCisgICAgLi4uICAgICBibHVlID0gKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUgPT0gMgorICAgIFRydWUKKworCitPcmRlcmVkRW51bQorLS0tLS0tLS0tLS0KKworQW4gb3JkZXJlZCBlbnVtZXJhdGlvbiB0aGF0IGlzIG5vdCBiYXNlZCBvbiA6Y2xhc3M6YEludEVudW1gIGFuZCBzbyBtYWludGFpbnMKK3RoZSBub3JtYWwgOmNsYXNzOmBFbnVtYCBpbnZhcmlhbnRzIChzdWNoIGFzIG5vdCBiZWluZyBjb21wYXJhYmxlIHRvIG90aGVyCitlbnVtZXJhdGlvbnMpOjoKKworICAgID4+PiBjbGFzcyBPcmRlcmVkRW51bShFbnVtKToKKyAgICAuLi4gICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgIC4uLiAgICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIG90aGVyLl9fY2xhc3NfXzoKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPj0gb3RoZXIudmFsdWUKKyAgICAuLi4gICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAuLi4gICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgIC4uLiAgICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIG90aGVyLl9fY2xhc3NfXzoKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPiBvdGhlci52YWx1ZQorICAgIC4uLiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgIC4uLiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICAgICAgaWYgc2VsZi5fX2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA8PSBvdGhlci52YWx1ZQorICAgIC4uLiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgIC4uLiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICAgICAgaWYgc2VsZi5fX2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA8IG90aGVyLnZhbHVlCisgICAgLi4uICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgLi4uCisgICAgPj4+IGNsYXNzIEdyYWRlKE9yZGVyZWRFbnVtKToKKyAgICAuLi4gICAgIEEgPSA1CisgICAgLi4uICAgICBCID0gNAorICAgIC4uLiAgICAgQyA9IDMKKyAgICAuLi4gICAgIEQgPSAyCisgICAgLi4uICAgICBGID0gMQorICAgIC4uLgorICAgID4+PiBHcmFkZS5DIDwgR3JhZGUuQQorICAgIFRydWUKKworCitEdXBsaWNhdGVGcmVlRW51bQorLS0tLS0tLS0tLS0tLS0tLS0KKworUmFpc2VzIGFuIGVycm9yIGlmIGEgZHVwbGljYXRlIG1lbWJlciBuYW1lIGlzIGZvdW5kIGluc3RlYWQgb2YgY3JlYXRpbmcgYW4KK2FsaWFzOjoKKworICAgID4+PiBjbGFzcyBEdXBsaWNhdGVGcmVlRW51bShFbnVtKToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgLi4uICAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAuLi4gICAgICAgICBpZiBhbnkoc2VsZi52YWx1ZSA9PSBlLnZhbHVlIGZvciBlIGluIGNscyk6CisgICAgLi4uICAgICAgICAgICAgIGEgPSBzZWxmLm5hbWUKKyAgICAuLi4gICAgICAgICAgICAgZSA9IGNscyhzZWxmLnZhbHVlKS5uYW1lCisgICAgLi4uICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgLi4uICAgICAgICAgICAgICAgICAiYWxpYXNlcyBub3QgYWxsb3dlZCBpbiBEdXBsaWNhdGVGcmVlRW51bTogICVyIC0tPiAlciIKKyAgICAuLi4gICAgICAgICAgICAgICAgICUgKGEsIGUpKQorICAgIC4uLgorICAgID4+PiBjbGFzcyBDb2xvcihEdXBsaWNhdGVGcmVlRW51bSk6CisgICAgLi4uICAgICByZWQgPSAxCisgICAgLi4uICAgICBncmVlbiA9IDIKKyAgICAuLi4gICAgIGJsdWUgPSAzCisgICAgLi4uICAgICBncmVuZSA9IDIKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVmFsdWVFcnJvcjogYWxpYXNlcyBub3QgYWxsb3dlZCBpbiBEdXBsaWNhdGVGcmVlRW51bTogICdncmVuZScgLS0+ICdncmVlbicKKworLi4gbm90ZTo6CisKKyAgICBUaGlzIGlzIGEgdXNlZnVsIGV4YW1wbGUgZm9yIHN1YmNsYXNzaW5nIEVudW0gdG8gYWRkIG9yIGNoYW5nZSBvdGhlcgorICAgIGJlaGF2aW9ycyBhcyB3ZWxsIGFzIGRpc2FsbG93aW5nIGFsaWFzZXMuICBJZiB0aGUgb25seSBjaGFuZ2UgZGVzaXJlZCBpcworICAgIG5vIGFsaWFzZXMgYWxsb3dlZCB0aGUgOmZ1bmM6YHVuaXF1ZWAgZGVjb3JhdG9yIGNhbiBiZSB1c2VkIGluc3RlYWQuCisKKworUGxhbmV0CistLS0tLS0KKworSWYgOm1ldGg6YF9fbmV3X19gIG9yIDptZXRoOmBfX2luaXRfX2AgaXMgZGVmaW5lZCB0aGUgdmFsdWUgb2YgdGhlIGVudW0gbWVtYmVyCit3aWxsIGJlIHBhc3NlZCB0byB0aG9zZSBtZXRob2RzOjoKKworICAgID4+PiBjbGFzcyBQbGFuZXQoRW51bSk6CisgICAgLi4uICAgICBNRVJDVVJZID0gKDMuMzAzZSsyMywgMi40Mzk3ZTYpCisgICAgLi4uICAgICBWRU5VUyAgID0gKDQuODY5ZSsyNCwgNi4wNTE4ZTYpCisgICAgLi4uICAgICBFQVJUSCAgID0gKDUuOTc2ZSsyNCwgNi4zNzgxNGU2KQorICAgIC4uLiAgICAgTUFSUyAgICA9ICg2LjQyMWUrMjMsIDMuMzk3MmU2KQorICAgIC4uLiAgICAgSlVQSVRFUiA9ICgxLjllKzI3LCAgIDcuMTQ5MmU3KQorICAgIC4uLiAgICAgU0FUVVJOICA9ICg1LjY4OGUrMjYsIDYuMDI2OGU3KQorICAgIC4uLiAgICAgVVJBTlVTICA9ICg4LjY4NmUrMjUsIDIuNTU1OWU3KQorICAgIC4uLiAgICAgTkVQVFVORSA9ICgxLjAyNGUrMjYsIDIuNDc0NmU3KQorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3MsIHJhZGl1cyk6CisgICAgLi4uICAgICAgICAgc2VsZi5tYXNzID0gbWFzcyAgICAgICAjIGluIGtpbG9ncmFtcworICAgIC4uLiAgICAgICAgIHNlbGYucmFkaXVzID0gcmFkaXVzICAgIyBpbiBtZXRlcnMKKyAgICAuLi4gICAgIEBwcm9wZXJ0eQorICAgIC4uLiAgICAgZGVmIHN1cmZhY2VfZ3Jhdml0eShzZWxmKToKKyAgICAuLi4gICAgICAgICAjIHVuaXZlcnNhbCBncmF2aXRhdGlvbmFsIGNvbnN0YW50ICAobTMga2ctMSBzLTIpCisgICAgLi4uICAgICAgICAgRyA9IDYuNjczMDBFLTExCisgICAgLi4uICAgICAgICAgcmV0dXJuIEcgKiBzZWxmLm1hc3MgLyAoc2VsZi5yYWRpdXMgKiBzZWxmLnJhZGl1cykKKyAgICAuLi4KKyAgICA+Pj4gUGxhbmV0LkVBUlRILnZhbHVlCisgICAgKDUuOTc2ZSsyNCwgNjM3ODE0MC4wKQorICAgID4+PiBQbGFuZXQuRUFSVEguc3VyZmFjZV9ncmF2aXR5CisgICAgOS44MDI2NTI3NDMzMzcxMjkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKaW5kZXggOTU5NTIyMS4uZWNlMDM1ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKQEAgLTI2MCw2ICsyNjAsMTIgQEAKICAgICAgIDpleGM6YFZNU0Vycm9yYCwgOmV4Yzpgc29ja2V0LmVycm9yYCwgOmV4Yzpgc2VsZWN0LmVycm9yYCBhbmQKICAgICAgIDpleGM6YG1tYXAuZXJyb3JgIGhhdmUgYmVlbiBtZXJnZWQgaW50byA6ZXhjOmBPU0Vycm9yYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKworICAgICAgVGhlIDphdHRyOmBmaWxlbmFtZWAgYXR0cmlidXRlIGlzIG5vdyB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lIHBhc3NlZCB0bworICAgICAgdGhlIGZ1bmN0aW9uLCBpbnN0ZWFkIG9mIHRoZSBuYW1lIGVuY29kZWQgdG8gb3IgZGVjb2RlZCBmcm9tIHRoZQorICAgICAgZmlsZXN5c3RlbSBlbmNvZGluZy4KKwogCiAuLiBleGNlcHRpb246OiBPdmVyZmxvd0Vycm9yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZpbGVjbXAucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QKaW5kZXggOGE4OGY4Yy4uODQ3MWE3MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QKQEAgLTI3LDYgKzI3LDEwIEBACiAgICBOb3RlIHRoYXQgbm8gZXh0ZXJuYWwgcHJvZ3JhbXMgYXJlIGNhbGxlZCBmcm9tIHRoaXMgZnVuY3Rpb24sIGdpdmluZyBpdAogICAgcG9ydGFiaWxpdHkgYW5kIGVmZmljaWVuY3kuCiAKKyAgIFRoaXMgZnVuY3Rpb24gdXNlcyBhIGNhY2hlIGZvciBwYXN0IGNvbXBhcmlzb25zIGFuZCB0aGUgcmVzdWx0cywKKyAgIHdpdGggYSBjYWNoZSBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIHJlbHlpbmcgb24gc3RhbGUgc2lnbmF0dXJlcworICAgb3IgYnkgZXhwbGljaXRseSBjYWxsaW5nIDpmdW5jOmBjbGVhcl9jYWNoZWAuCisKIAogLi4gZnVuY3Rpb246OiBjbXBmaWxlcyhkaXIxLCBkaXIyLCBjb21tb24sIHNoYWxsb3c9VHJ1ZSkKIApAQCAtNDgsNiArNTIsMTUgQEAKICAgIG9uZSBvZiB0aGUgdGhyZWUgcmV0dXJuZWQgbGlzdHMuCiAKIAorLi4gZnVuY3Rpb246OiBjbGVhcl9jYWNoZSgpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisgICBDbGVhciB0aGUgZmlsZWNtcCBjYWNoZS4gVGhpcyBtYXkgYmUgdXNlZnVsIGlmIGEgZmlsZSBpcyBjb21wYXJlZCBzbyBxdWlja2x5CisgICBhZnRlciBpdCBpcyBtb2RpZmllZCB0aGF0IGl0IGlzIHdpdGhpbiB0aGUgbXRpbWUgcmVzb2x1dGlvbiBvZgorICAgdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbS4KKworCiAuLiBfZGlyY21wLW9iamVjdHM6CiAKIFRoZSA6Y2xhc3M6YGRpcmNtcGAgY2xhc3MKQEAgLTU1LDI4ICs2OCwyNSBAQAogCiAuLiBjbGFzczo6IGRpcmNtcChhLCBiLCBpZ25vcmU9Tm9uZSwgaGlkZT1Ob25lKQogCi0gICBDb25zdHJ1Y3QgYSBuZXcgZGlyZWN0b3J5IGNvbXBhcmlzb24gb2JqZWN0LCB0byBjb21wYXJlIHRoZSBkaXJlY3RvcmllcyAqYSogYW5kCi0gICAqYiouICppZ25vcmUqIGlzIGEgbGlzdCBvZiBuYW1lcyB0byBpZ25vcmUsIGFuZCBkZWZhdWx0cyB0byBgYFsnUkNTJywgJ0NWUycsCi0gICAndGFncyddYGAuICpoaWRlKiBpcyBhIGxpc3Qgb2YgbmFtZXMgdG8gaGlkZSwgYW5kIGRlZmF1bHRzIHRvIGBgW29zLmN1cmRpciwKLSAgIG9zLnBhcmRpcl1gYC4KKyAgIENvbnN0cnVjdCBhIG5ldyBkaXJlY3RvcnkgY29tcGFyaXNvbiBvYmplY3QsIHRvIGNvbXBhcmUgdGhlIGRpcmVjdG9yaWVzICphKgorICAgYW5kICpiKi4gICppZ25vcmUqIGlzIGEgbGlzdCBvZiBuYW1lcyB0byBpZ25vcmUsIGFuZCBkZWZhdWx0cyB0bworICAgOmF0dHI6YGZpbGVjbXAuREVGQVVMVF9JR05PUkVTYC4gICpoaWRlKiBpcyBhIGxpc3Qgb2YgbmFtZXMgdG8gaGlkZSwgYW5kCisgICBkZWZhdWx0cyB0byBgYFtvcy5jdXJkaXIsIG9zLnBhcmRpcl1gYC4KIAogICAgVGhlIDpjbGFzczpgZGlyY21wYCBjbGFzcyBjb21wYXJlcyBmaWxlcyBieSBkb2luZyAqc2hhbGxvdyogY29tcGFyaXNvbnMKICAgIGFzIGRlc2NyaWJlZCBmb3IgOmZ1bmM6YGZpbGVjbXAuY21wYC4KIAogICAgVGhlIDpjbGFzczpgZGlyY21wYCBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKLQogICAgLi4gbWV0aG9kOjogcmVwb3J0KCkKIAogICAgICAgUHJpbnQgKHRvIDpkYXRhOmBzeXMuc3Rkb3V0YCkgYSBjb21wYXJpc29uIGJldHdlZW4gKmEqIGFuZCAqYiouCiAKLQogICAgLi4gbWV0aG9kOjogcmVwb3J0X3BhcnRpYWxfY2xvc3VyZSgpCiAKICAgICAgIFByaW50IGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqIGFuZCBjb21tb24gaW1tZWRpYXRlCiAgICAgICBzdWJkaXJlY3Rvcmllcy4KIAotCiAgICAuLiBtZXRob2Q6OiByZXBvcnRfZnVsbF9jbG9zdXJlKCkKIAogICAgICAgUHJpbnQgYSBjb21wYXJpc29uIGJldHdlZW4gKmEqIGFuZCAqYiogYW5kIGNvbW1vbiBzdWJkaXJlY3RvcmllcwpAQCAtMTMzLDcgKzE0Myw3IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNvbW1vbl9maWxlcwogCi0gICAgICBGaWxlcyBpbiBib3RoICphKiBhbmQgKmIqCisgICAgICBGaWxlcyBpbiBib3RoICphKiBhbmQgKmIqLgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNvbW1vbl9mdW5ueQpAQCAtMTY0LDYgKzE3NCwxMiBAQAogICAgICAgQSBkaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMgaW4gOmF0dHI6YGNvbW1vbl9kaXJzYCB0byA6Y2xhc3M6YGRpcmNtcGAKICAgICAgIG9iamVjdHMuCiAKKy4uIGF0dHJpYnV0ZTo6IERFRkFVTFRfSUdOT1JFUworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworICAgTGlzdCBvZiBkaXJlY3RvcmllcyBpZ25vcmVkIGJ5IDpjbGFzczpgZGlyY21wYCBieSBkZWZhdWx0LgorCiAKIEhlcmUgaXMgYSBzaW1wbGlmaWVkIGV4YW1wbGUgb2YgdXNpbmcgdGhlIGBgc3ViZGlyc2BgIGF0dHJpYnV0ZSB0byBzZWFyY2gKIHJlY3Vyc2l2ZWx5IHRocm91Z2ggdHdvIGRpcmVjdG9yaWVzIHRvIHNob3cgY29tbW9uIGRpZmZlcmVudCBmaWxlczo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAppbmRleCBiOTRjNDM0Li5hMzdkNDk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKQEAgLTU0Myw2ICs1NDMsMTAgQEAKICAgIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgbWV0aG9kIGlzIG5vdCBmb3VuZCBvciBpZiBlaXRoZXIKICAgIHRoZSAqZm9ybWF0X3NwZWMqIG9yIHRoZSByZXR1cm4gdmFsdWUgYXJlIG5vdCBzdHJpbmdzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIGBgb2JqZWN0KCkuX19mb3JtYXRfXyhmb3JtYXRfc3BlYylgYCByYWlzZXMgOmV4YzpgVHlwZUVycm9yYAorICAgICAgaWYgKmZvcm1hdF9zcGVjKiBpcyBub3QgZW1wdHkgc3RyaW5nLgorCiAKIC4uIF9mdW5jLWZyb3plbnNldDoKIC4uIGZ1bmN0aW9uOjogZnJvemVuc2V0KFtpdGVyYWJsZV0pCkBAIC02NjYsNiArNjcwLDEyIEBACiAKICAgIFRoZSBpbnRlZ2VyIHR5cGUgaXMgZGVzY3JpYmVkIGluIDpyZWY6YHR5cGVzbnVtZXJpY2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBJZiAqYmFzZSogaXMgbm90IGFuIGluc3RhbmNlIG9mIDpjbGFzczpgaW50YCBhbmQgdGhlICpiYXNlKiBvYmplY3QgaGFzIGEKKyAgICAgIDptZXRoOmBiYXNlLl9faW5kZXhfXyA8b2JqZWN0Ll9faW5kZXhfXz5gIG1ldGhvZCwgdGhhdCBtZXRob2QgaXMgY2FsbGVkCisgICAgICB0byBvYnRhaW4gYW4gaW50ZWdlciBmb3IgdGhlIGJhc2UuICBQcmV2aW91cyB2ZXJzaW9ucyB1c2VkCisgICAgICA6bWV0aDpgYmFzZS5fX2ludF9fIDxvYmplY3QuX19pbnRfXz5gIGluc3RlYWQgb2YgOm1ldGg6YGJhc2UuX19pbmRleF9fCisgICAgICA8b2JqZWN0Ll9faW5kZXhfXz5gLgogCiAuLiBmdW5jdGlvbjo6IGlzaW5zdGFuY2Uob2JqZWN0LCBjbGFzc2luZm8pCiAKQEAgLTc0OCwxOSArNzU4LDIyIEBACiAgICBhbHJlYWR5IGFycmFuZ2VkIGludG8gYXJndW1lbnQgdHVwbGVzLCBzZWUgOmZ1bmM6YGl0ZXJ0b29scy5zdGFybWFwYFwuCiAKIAotLi4gZnVuY3Rpb246OiBtYXgoaXRlcmFibGUsICpbLCBrZXldKQorLi4gZnVuY3Rpb246OiBtYXgoaXRlcmFibGUsICpbLCBkZWZhdWx0LCBrZXldKQogICAgICAgICAgICAgICBtYXgoYXJnMSwgYXJnMiwgKmFyZ3NbLCBrZXldKQogCiAgICBSZXR1cm4gdGhlIGxhcmdlc3QgaXRlbSBpbiBhbiBpdGVyYWJsZSBvciB0aGUgbGFyZ2VzdCBvZiB0d28gb3IgbW9yZQogICAgYXJndW1lbnRzLgogCi0gICBJZiBvbmUgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBwcm92aWRlZCwgKml0ZXJhYmxlKiBtdXN0IGJlIGEgbm9uLWVtcHR5Ci0gICBpdGVyYWJsZSAoc3VjaCBhcyBhIG5vbi1lbXB0eSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgVGhlIGxhcmdlc3QgaXRlbQotICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHJldHVybmVkLiAgSWYgdHdvIG9yIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlCi0gICBwcm92aWRlZCwgdGhlIGxhcmdlc3Qgb2YgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGlzIHJldHVybmVkLgorICAgSWYgb25lIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgcHJvdmlkZWQsIGl0IHNob3VsZCBiZSBhbiA6dGVybTpgaXRlcmFibGVgLgorICAgVGhlIGxhcmdlc3QgaXRlbSBpbiB0aGUgaXRlcmFibGUgaXMgcmV0dXJuZWQuICBJZiB0d28gb3IgbW9yZSBwb3NpdGlvbmFsCisgICBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgc21hbGxlc3Qgb2YgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGlzCisgICByZXR1cm5lZC4KIAotICAgVGhlIG9wdGlvbmFsIGtleXdvcmQtb25seSAqa2V5KiBhcmd1bWVudCBzcGVjaWZpZXMgYSBvbmUtYXJndW1lbnQgb3JkZXJpbmcKLSAgIGZ1bmN0aW9uIGxpa2UgdGhhdCB1c2VkIGZvciA6bWV0aDpgbGlzdC5zb3J0YC4KKyAgIFRoZXJlIGFyZSB0d28gb3B0aW9uYWwga2V5d29yZC1vbmx5IGFyZ3VtZW50cy4gVGhlICprZXkqIGFyZ3VtZW50IHNwZWNpZmllcworICAgYSBvbmUtYXJndW1lbnQgb3JkZXJpbmcgZnVuY3Rpb24gbGlrZSB0aGF0IHVzZWQgZm9yIDptZXRoOmBsaXN0LnNvcnRgLiBUaGUKKyAgICpkZWZhdWx0KiBhcmd1bWVudCBzcGVjaWZpZXMgYW4gb2JqZWN0IHRvIHJldHVybiBpZiB0aGUgcHJvdmlkZWQgaXRlcmFibGUgaXMKKyAgIGVtcHR5LiBJZiB0aGUgaXRlcmFibGUgaXMgZW1wdHkgYW5kICpkZWZhdWx0KiBpcyBub3QgcHJvdmlkZWQsIGEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgSWYgbXVsdGlwbGUgaXRlbXMgYXJlIG1heGltYWwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBmaXJzdCBvbmUKICAgIGVuY291bnRlcmVkLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgc29ydC1zdGFiaWxpdHkgcHJlc2VydmluZyB0b29scwpAQCAtNzc2LDE5ICs3ODksMjIgQEAKICAgIDpyZWY6YHR5cGVtZW1vcnl2aWV3YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCi0uLiBmdW5jdGlvbjo6IG1pbihpdGVyYWJsZSwgKlssIGtleV0pCisuLiBmdW5jdGlvbjo6IG1pbihpdGVyYWJsZSwgKlssIGRlZmF1bHQsIGtleV0pCiAgICAgICAgICAgICAgIG1pbihhcmcxLCBhcmcyLCAqYXJnc1ssIGtleV0pCiAKICAgIFJldHVybiB0aGUgc21hbGxlc3QgaXRlbSBpbiBhbiBpdGVyYWJsZSBvciB0aGUgc21hbGxlc3Qgb2YgdHdvIG9yIG1vcmUKICAgIGFyZ3VtZW50cy4KIAotICAgSWYgb25lIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgcHJvdmlkZWQsICppdGVyYWJsZSogbXVzdCBiZSBhIG5vbi1lbXB0eQotICAgaXRlcmFibGUgKHN1Y2ggYXMgYSBub24tZW1wdHkgc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFRoZSBzbWFsbGVzdCBpdGVtCi0gICBpbiB0aGUgaXRlcmFibGUgaXMgcmV0dXJuZWQuICBJZiB0d28gb3IgbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUKLSAgIHByb3ZpZGVkLCB0aGUgc21hbGxlc3Qgb2YgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGlzIHJldHVybmVkLgorICAgSWYgb25lIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgcHJvdmlkZWQsIGl0IHNob3VsZCBiZSBhbiA6dGVybTpgaXRlcmFibGVgLgorICAgVGhlIHNtYWxsZXN0IGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIGlzIHJldHVybmVkLiAgSWYgdHdvIG9yIG1vcmUgcG9zaXRpb25hbAorICAgYXJndW1lbnRzIGFyZSBwcm92aWRlZCwgdGhlIHNtYWxsZXN0IG9mIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpcworICAgcmV0dXJuZWQuCiAKLSAgIFRoZSBvcHRpb25hbCBrZXl3b3JkLW9ubHkgKmtleSogYXJndW1lbnQgc3BlY2lmaWVzIGEgb25lLWFyZ3VtZW50IG9yZGVyaW5nCi0gICBmdW5jdGlvbiBsaWtlIHRoYXQgdXNlZCBmb3IgOm1ldGg6YGxpc3Quc29ydGAuCisgICBUaGVyZSBhcmUgdHdvIG9wdGlvbmFsIGtleXdvcmQtb25seSBhcmd1bWVudHMuIFRoZSAqa2V5KiBhcmd1bWVudCBzcGVjaWZpZXMKKyAgIGEgb25lLWFyZ3VtZW50IG9yZGVyaW5nIGZ1bmN0aW9uIGxpa2UgdGhhdCB1c2VkIGZvciA6bWV0aDpgbGlzdC5zb3J0YC4gVGhlCisgICAqZGVmYXVsdCogYXJndW1lbnQgc3BlY2lmaWVzIGFuIG9iamVjdCB0byByZXR1cm4gaWYgdGhlIHByb3ZpZGVkIGl0ZXJhYmxlIGlzCisgICBlbXB0eS4gSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5IGFuZCAqZGVmYXVsdCogaXMgbm90IHByb3ZpZGVkLCBhCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgIElmIG11bHRpcGxlIGl0ZW1zIGFyZSBtaW5pbWFsLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgZmlyc3Qgb25lCiAgICBlbmNvdW50ZXJlZC4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIG90aGVyIHNvcnQtc3RhYmlsaXR5IHByZXNlcnZpbmcgdG9vbHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CmluZGV4IGQ4ZmNmMGYuLjJmNmQ5YWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdApAQCAtNiw2ICs2LDcgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFBldGVyIEhhcnJpcyA8c2NhdkBibHVleW9uZGVyLmNvLnVrPgogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbkByY24uY29tPgogLi4gbW9kdWxlYXV0aG9yOjogTmljayBDb2dobGFuIDxuY29naGxhbkBnbWFpbC5jb20+CisuLiBtb2R1bGVhdXRob3I6OiDFgXVrYXN6IExhbmdhIDxsdWthc3pAbGFuZ2EucGw+CiAuLiBzZWN0aW9uYXV0aG9yOjogUGV0ZXIgSGFycmlzIDxzY2F2QGJsdWV5b25kZXIuY28udWs+CiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2Z1bmN0b29scy5weWAKQEAgLTE4Niw2ICsxODcsMTExIEBACiAgICAqc2VxdWVuY2UqIGNvbnRhaW5zIG9ubHkgb25lIGl0ZW0sIHRoZSBmaXJzdCBpdGVtIGlzIHJldHVybmVkLgogCiAKKy4uIGRlY29yYXRvcjo6IHNpbmdsZWRpc3BhdGNoKGRlZmF1bHQpCisKKyAgIFRyYW5zZm9ybXMgYSBmdW5jdGlvbiBpbnRvIGEgOnRlcm06YHNpbmdsZS1kaXNwYXRjaCA8c2luZ2xlCisgICBkaXNwYXRjaD5gIDp0ZXJtOmBnZW5lcmljIGZ1bmN0aW9uYC4KKworICAgVG8gZGVmaW5lIGEgZ2VuZXJpYyBmdW5jdGlvbiwgZGVjb3JhdGUgaXQgd2l0aCB0aGUgYGBAc2luZ2xlZGlzcGF0Y2hgYAorICAgZGVjb3JhdG9yLiBOb3RlIHRoYXQgdGhlIGRpc3BhdGNoIGhhcHBlbnMgb24gdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LAorICAgY3JlYXRlIHlvdXIgZnVuY3Rpb24gYWNjb3JkaW5nbHk6OgorCisgICAgID4+PiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgc2luZ2xlZGlzcGF0Y2gKKyAgICAgPj4+IEBzaW5nbGVkaXNwYXRjaAorICAgICAuLi4gZGVmIGZ1bihhcmcsIHZlcmJvc2U9RmFsc2UpOgorICAgICAuLi4gICAgIGlmIHZlcmJvc2U6CisgICAgIC4uLiAgICAgICAgIHByaW50KCJMZXQgbWUganVzdCBzYXksIiwgZW5kPSIgIikKKyAgICAgLi4uICAgICBwcmludChhcmcpCisKKyAgIFRvIGFkZCBvdmVybG9hZGVkIGltcGxlbWVudGF0aW9ucyB0byB0aGUgZnVuY3Rpb24sIHVzZSB0aGUgOmZ1bmM6YHJlZ2lzdGVyYAorICAgYXR0cmlidXRlIG9mIHRoZSBnZW5lcmljIGZ1bmN0aW9uLiAgSXQgaXMgYSBkZWNvcmF0b3IsIHRha2luZyBhIHR5cGUKKyAgIHBhcmFtZXRlciBhbmQgZGVjb3JhdGluZyBhIGZ1bmN0aW9uIGltcGxlbWVudGluZyB0aGUgb3BlcmF0aW9uIGZvciB0aGF0CisgICB0eXBlOjoKKworICAgICA+Pj4gQGZ1bi5yZWdpc3RlcihpbnQpCisgICAgIC4uLiBkZWYgXyhhcmcsIHZlcmJvc2U9RmFsc2UpOgorICAgICAuLi4gICAgIGlmIHZlcmJvc2U6CisgICAgIC4uLiAgICAgICAgIHByaW50KCJTdHJlbmd0aCBpbiBudW1iZXJzLCBlaD8iLCBlbmQ9IiAiKQorICAgICAuLi4gICAgIHByaW50KGFyZykKKyAgICAgLi4uCisgICAgID4+PiBAZnVuLnJlZ2lzdGVyKGxpc3QpCisgICAgIC4uLiBkZWYgXyhhcmcsIHZlcmJvc2U9RmFsc2UpOgorICAgICAuLi4gICAgIGlmIHZlcmJvc2U6CisgICAgIC4uLiAgICAgICAgIHByaW50KCJFbnVtZXJhdGUgdGhpczoiKQorICAgICAuLi4gICAgIGZvciBpLCBlbGVtIGluIGVudW1lcmF0ZShhcmcpOgorICAgICAuLi4gICAgICAgICBwcmludChpLCBlbGVtKQorCisgICBUbyBlbmFibGUgcmVnaXN0ZXJpbmcgbGFtYmRhcyBhbmQgcHJlLWV4aXN0aW5nIGZ1bmN0aW9ucywgdGhlCisgICA6ZnVuYzpgcmVnaXN0ZXJgIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCBpbiBhIGZ1bmN0aW9uYWwgZm9ybTo6CisKKyAgICAgPj4+IGRlZiBub3RoaW5nKGFyZywgdmVyYm9zZT1GYWxzZSk6CisgICAgIC4uLiAgICAgcHJpbnQoIk5vdGhpbmcuIikKKyAgICAgLi4uCisgICAgID4+PiBmdW4ucmVnaXN0ZXIodHlwZShOb25lKSwgbm90aGluZykKKworICAgVGhlIDpmdW5jOmByZWdpc3RlcmAgYXR0cmlidXRlIHJldHVybnMgdGhlIHVuZGVjb3JhdGVkIGZ1bmN0aW9uIHdoaWNoCisgICBlbmFibGVzIGRlY29yYXRvciBzdGFja2luZywgcGlja2xpbmcsIGFzIHdlbGwgYXMgY3JlYXRpbmcgdW5pdCB0ZXN0cyBmb3IKKyAgIGVhY2ggdmFyaWFudCBpbmRlcGVuZGVudGx5OjoKKworICAgICA+Pj4gQGZ1bi5yZWdpc3RlcihmbG9hdCkKKyAgICAgLi4uIEBmdW4ucmVnaXN0ZXIoRGVjaW1hbCkKKyAgICAgLi4uIGRlZiBmdW5fbnVtKGFyZywgdmVyYm9zZT1GYWxzZSk6CisgICAgIC4uLiAgICAgaWYgdmVyYm9zZToKKyAgICAgLi4uICAgICAgICAgcHJpbnQoIkhhbGYgb2YgeW91ciBudW1iZXI6IiwgZW5kPSIgIikKKyAgICAgLi4uICAgICBwcmludChhcmcgLyAyKQorICAgICAuLi4KKyAgICAgPj4+IGZ1bl9udW0gaXMgZnVuCisgICAgIEZhbHNlCisKKyAgIFdoZW4gY2FsbGVkLCB0aGUgZ2VuZXJpYyBmdW5jdGlvbiBkaXNwYXRjaGVzIG9uIHRoZSB0eXBlIG9mIHRoZSBmaXJzdAorICAgYXJndW1lbnQ6OgorCisgICAgID4+PiBmdW4oIkhlbGxvLCB3b3JsZC4iKQorICAgICBIZWxsbywgd29ybGQuCisgICAgID4+PiBmdW4oInRlc3QuIiwgdmVyYm9zZT1UcnVlKQorICAgICBMZXQgbWUganVzdCBzYXksIHRlc3QuCisgICAgID4+PiBmdW4oNDIsIHZlcmJvc2U9VHJ1ZSkKKyAgICAgU3RyZW5ndGggaW4gbnVtYmVycywgZWg/IDQyCisgICAgID4+PiBmdW4oWydzcGFtJywgJ3NwYW0nLCAnZWdncycsICdzcGFtJ10sIHZlcmJvc2U9VHJ1ZSkKKyAgICAgRW51bWVyYXRlIHRoaXM6CisgICAgIDAgc3BhbQorICAgICAxIHNwYW0KKyAgICAgMiBlZ2dzCisgICAgIDMgc3BhbQorICAgICA+Pj4gZnVuKE5vbmUpCisgICAgIE5vdGhpbmcuCisgICAgID4+PiBmdW4oMS4yMykKKyAgICAgMC42MTUKKworICAgV2hlcmUgdGhlcmUgaXMgbm8gcmVnaXN0ZXJlZCBpbXBsZW1lbnRhdGlvbiBmb3IgYSBzcGVjaWZpYyB0eXBlLCBpdHMKKyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGlzIHVzZWQgdG8gZmluZCBhIG1vcmUgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbi4KKyAgIFRoZSBvcmlnaW5hbCBmdW5jdGlvbiBkZWNvcmF0ZWQgd2l0aCBgYEBzaW5nbGVkaXNwYXRjaGBgIGlzIHJlZ2lzdGVyZWQKKyAgIGZvciB0aGUgYmFzZSBgYG9iamVjdGBgIHR5cGUsIHdoaWNoIG1lYW5zIGl0IGlzIHVzZWQgaWYgbm8gYmV0dGVyCisgICBpbXBsZW1lbnRhdGlvbiBpcyBmb3VuZC4KKworICAgVG8gY2hlY2sgd2hpY2ggaW1wbGVtZW50YXRpb24gd2lsbCB0aGUgZ2VuZXJpYyBmdW5jdGlvbiBjaG9vc2UgZm9yCisgICBhIGdpdmVuIHR5cGUsIHVzZSB0aGUgYGBkaXNwYXRjaCgpYGAgYXR0cmlidXRlOjoKKworICAgICA+Pj4gZnVuLmRpc3BhdGNoKGZsb2F0KQorICAgICA8ZnVuY3Rpb24gZnVuX251bSBhdCAweDEwMzVhMjg0MD4KKyAgICAgPj4+IGZ1bi5kaXNwYXRjaChkaWN0KSAgICAjIG5vdGU6IGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAgPGZ1bmN0aW9uIGZ1biBhdCAweDEwM2ZlMDAwMD4KKworICAgVG8gYWNjZXNzIGFsbCByZWdpc3RlcmVkIGltcGxlbWVudGF0aW9ucywgdXNlIHRoZSByZWFkLW9ubHkgYGByZWdpc3RyeWBgCisgICBhdHRyaWJ1dGU6OgorCisgICAgPj4+IGZ1bi5yZWdpc3RyeS5rZXlzKCkKKyAgICBkaWN0X2tleXMoWzxjbGFzcyAnTm9uZVR5cGUnPiwgPGNsYXNzICdpbnQnPiwgPGNsYXNzICdvYmplY3QnPiwKKyAgICAgICAgICAgICAgPGNsYXNzICdkZWNpbWFsLkRlY2ltYWwnPiwgPGNsYXNzICdsaXN0Jz4sCisgICAgICAgICAgICAgIDxjbGFzcyAnZmxvYXQnPl0pCisgICAgPj4+IGZ1bi5yZWdpc3RyeVtmbG9hdF0KKyAgICA8ZnVuY3Rpb24gZnVuX251bSBhdCAweDEwMzVhMjg0MD4KKyAgICA+Pj4gZnVuLnJlZ2lzdHJ5W29iamVjdF0KKyAgICA8ZnVuY3Rpb24gZnVuIGF0IDB4MTAzZmUwMDAwPgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBmdW5jdGlvbjo6IHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHdyYXBwZWQsIGFzc2lnbmVkPVdSQVBQRVJfQVNTSUdOTUVOVFMsIHVwZGF0ZWQ9V1JBUFBFUl9VUERBVEVTKQogCiAgICBVcGRhdGUgYSAqd3JhcHBlciogZnVuY3Rpb24gdG8gbG9vayBsaWtlIHRoZSAqd3JhcHBlZCogZnVuY3Rpb24uIFRoZSBvcHRpb25hbApAQCAtMjAwLDggKzMwNiw4IEBACiAKICAgIFRvIGFsbG93IGFjY2VzcyB0byB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gZm9yIGludHJvc3BlY3Rpb24gYW5kIG90aGVyIHB1cnBvc2VzCiAgICAoZS5nLiBieXBhc3NpbmcgYSBjYWNoaW5nIGRlY29yYXRvciBzdWNoIGFzIDpmdW5jOmBscnVfY2FjaGVgKSwgdGhpcyBmdW5jdGlvbgotICAgYXV0b21hdGljYWxseSBhZGRzIGEgX193cmFwcGVkX18gYXR0cmlidXRlIHRvIHRoZSB3cmFwcGVyIHRoYXQgcmVmZXJzIHRvCi0gICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uCisgICBhdXRvbWF0aWNhbGx5IGFkZHMgYSBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlIHRvIHRoZSB3cmFwcGVyIHRoYXQgcmVmZXJzIHRvCisgICB0aGUgZnVuY3Rpb24gYmVpbmcgd3JhcHBlZC4KIAogICAgVGhlIG1haW4gaW50ZW5kZWQgdXNlIGZvciB0aGlzIGZ1bmN0aW9uIGlzIGluIDp0ZXJtOmBkZWNvcmF0b3JgIGZ1bmN0aW9ucyB3aGljaAogICAgd3JhcCB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGFuZCByZXR1cm4gdGhlIHdyYXBwZXIuIElmIHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGlzCkBAIC0yMjQsNiArMzMwLDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgTWlzc2luZyBhdHRyaWJ1dGVzIG5vIGxvbmdlciB0cmlnZ2VyIGFuIDpleGM6YEF0dHJpYnV0ZUVycm9yYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFRoZSBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlIG5vdyBhbHdheXMgcmVmZXJzIHRvIHRoZSB3cmFwcGVkCisgICAgICBmdW5jdGlvbiwgZXZlbiBpZiB0aGF0IGZ1bmN0aW9uIGRlZmluZWQgYSBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlLgorICAgICAgKHNlZSA6aXNzdWU6YDE3NDgyYCkKKwogCiAuLiBkZWNvcmF0b3I6OiB3cmFwcyh3cmFwcGVkLCBhc3NpZ25lZD1XUkFQUEVSX0FTU0lHTk1FTlRTLCB1cGRhdGVkPVdSQVBQRVJfVVBEQVRFUykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2MucnN0IGIvRG9jL2xpYnJhcnkvZ2MucnN0CmluZGV4IDU4NzhkYTUuLjhlM2E0YmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2djLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nYy5yc3QKQEAgLTY3LDYgKzY3LDI0IEBACiAgICByZXR1cm5lZC4KIAogCisuLiBmdW5jdGlvbjo6IGdldF9zdGF0cygpCisKKyAgIFJldHVybiBhIGxpc3Qgb2YgMyBwZXItZ2VuZXJhdGlvbiBkaWN0aW9uYXJpZXMgY29udGFpbmluZyBjb2xsZWN0aW9uCisgICBzdGF0aXN0aWNzIHNpbmNlIGludGVycHJldGVyIHN0YXJ0LiAgQXQgdGhpcyBtb21lbnQsIGVhY2ggZGljdGlvbmFyeSB3aWxsCisgICBjb250YWluIHRoZSBmb2xsb3dpbmcgaXRlbXM6CisKKyAgICogYGBjb2xsZWN0aW9uc2BgIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhpcyBnZW5lcmF0aW9uIHdhcyBjb2xsZWN0ZWQ7CisKKyAgICogYGBjb2xsZWN0ZWRgYCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIG9iamVjdHMgY29sbGVjdGVkIGluc2lkZSB0aGlzCisgICAgIGdlbmVyYXRpb247CisKKyAgICogYGB1bmNvbGxlY3RhYmxlYGAgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBvYmplY3RzIHdoaWNoIHdlcmUgZm91bmQKKyAgICAgdG8gYmUgdW5jb2xsZWN0YWJsZSAoYW5kIHdlcmUgdGhlcmVmb3JlIG1vdmVkIHRvIHRoZSA6ZGF0YTpgZ2FyYmFnZWAKKyAgICAgbGlzdCkgaW5zaWRlIHRoaXMgZ2VuZXJhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gZnVuY3Rpb246OiBzZXRfdGhyZXNob2xkKHRocmVzaG9sZDBbLCB0aHJlc2hvbGQxWywgdGhyZXNob2xkMl1dKQogCiAgICBTZXQgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiB0aHJlc2hvbGRzICh0aGUgY29sbGVjdGlvbiBmcmVxdWVuY3kpLiBTZXR0aW5nCkBAIC0xNTgsMjQgKzE3NiwxMyBAQAogCiAuLiBkYXRhOjogZ2FyYmFnZQogCi0gICBBIGxpc3Qgb2Ygb2JqZWN0cyB3aGljaCB0aGUgY29sbGVjdG9yIGZvdW5kIHRvIGJlIHVucmVhY2hhYmxlIGJ1dCBjb3VsZCBub3QgYmUKLSAgIGZyZWVkICh1bmNvbGxlY3RhYmxlIG9iamVjdHMpLiAgQnkgZGVmYXVsdCwgdGhpcyBsaXN0IGNvbnRhaW5zIG9ubHkgb2JqZWN0cyB3aXRoCi0gICA6bWV0aDpgX19kZWxfX2AgbWV0aG9kcy4gT2JqZWN0cyB0aGF0IGhhdmUgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMgYW5kIGFyZQotICAgcGFydCBvZiBhIHJlZmVyZW5jZSBjeWNsZSBjYXVzZSB0aGUgZW50aXJlIHJlZmVyZW5jZSBjeWNsZSB0byBiZSB1bmNvbGxlY3RhYmxlLAotICAgaW5jbHVkaW5nIG9iamVjdHMgbm90IG5lY2Vzc2FyaWx5IGluIHRoZSBjeWNsZSBidXQgcmVhY2hhYmxlIG9ubHkgZnJvbSBpdC4KLSAgIFB5dGhvbiBkb2Vzbid0IGNvbGxlY3Qgc3VjaCBjeWNsZXMgYXV0b21hdGljYWxseSBiZWNhdXNlLCBpbiBnZW5lcmFsLCBpdCBpc24ndAotICAgcG9zc2libGUgZm9yIFB5dGhvbiB0byBndWVzcyBhIHNhZmUgb3JkZXIgaW4gd2hpY2ggdG8gcnVuIHRoZSA6bWV0aDpgX19kZWxfX2AKLSAgIG1ldGhvZHMuICBJZiB5b3Uga25vdyBhIHNhZmUgb3JkZXIsIHlvdSBjYW4gZm9yY2UgdGhlIGlzc3VlIGJ5IGV4YW1pbmluZyB0aGUKLSAgICpnYXJiYWdlKiBsaXN0LCBhbmQgZXhwbGljaXRseSBicmVha2luZyBjeWNsZXMgZHVlIHRvIHlvdXIgb2JqZWN0cyB3aXRoaW4gdGhlCi0gICBsaXN0LiAgTm90ZSB0aGF0IHRoZXNlIG9iamVjdHMgYXJlIGtlcHQgYWxpdmUgZXZlbiBzbyBieSB2aXJ0dWUgb2YgYmVpbmcgaW4gdGhlCi0gICAqZ2FyYmFnZSogbGlzdCwgc28gdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tICpnYXJiYWdlKiB0b28uICBGb3IgZXhhbXBsZSwKLSAgIGFmdGVyIGJyZWFraW5nIGN5Y2xlcywgZG8gYGBkZWwgZ2MuZ2FyYmFnZVs6XWBgIHRvIGVtcHR5IHRoZSBsaXN0LiAgSXQncwotICAgZ2VuZXJhbGx5IGJldHRlciB0byBhdm9pZCB0aGUgaXNzdWUgYnkgbm90IGNyZWF0aW5nIGN5Y2xlcyBjb250YWluaW5nIG9iamVjdHMKLSAgIHdpdGggOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMsIGFuZCAqZ2FyYmFnZSogY2FuIGJlIGV4YW1pbmVkIGluIHRoYXQgY2FzZSB0bwotICAgdmVyaWZ5IHRoYXQgbm8gc3VjaCBjeWNsZXMgYXJlIGJlaW5nIGNyZWF0ZWQuCisgICBBIGxpc3Qgb2Ygb2JqZWN0cyB3aGljaCB0aGUgY29sbGVjdG9yIGZvdW5kIHRvIGJlIHVucmVhY2hhYmxlIGJ1dCBjb3VsZAorICAgbm90IGJlIGZyZWVkICh1bmNvbGxlY3RhYmxlIG9iamVjdHMpLiAgU3RhcnRpbmcgd2l0aCBQeXRob24gMy40LCB0aGlzCisgICBsaXN0IHNob3VsZCBiZSBlbXB0eSBtb3N0IG9mIHRoZSB0aW1lLCBleGNlcHQgd2hlbiB1c2luZyBpbnN0YW5jZXMgb2YKKyAgIEMgZXh0ZW5zaW9uIHR5cGVzIHdpdGggYSBub24tTlVMTCBgYHRwX2RlbGBgIHNsb3QuCiAKLSAgIElmIDpjb25zdDpgREVCVUdfU0FWRUFMTGAgaXMgc2V0LCB0aGVuIGFsbCB1bnJlYWNoYWJsZSBvYmplY3RzIHdpbGwgYmUgYWRkZWQKLSAgIHRvIHRoaXMgbGlzdCByYXRoZXIgdGhhbiBmcmVlZC4KKyAgIElmIDpjb25zdDpgREVCVUdfU0FWRUFMTGAgaXMgc2V0LCB0aGVuIGFsbCB1bnJlYWNoYWJsZSBvYmplY3RzIHdpbGwgYmUKKyAgIGFkZGVkIHRvIHRoaXMgbGlzdCByYXRoZXIgdGhhbiBmcmVlZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIElmIHRoaXMgbGlzdCBpcyBub24tZW1wdHkgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24sIGEKQEAgLTE4Myw2ICsxOTAsMTAgQEAKICAgICAgIDpjb25zdDpgREVCVUdfVU5DT0xMRUNUQUJMRWAgaXMgc2V0LCBpbiBhZGRpdGlvbiBhbGwgdW5jb2xsZWN0YWJsZSBvYmplY3RzCiAgICAgICBhcmUgcHJpbnRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIEZvbGxvd2luZyA6cGVwOmA0NDJgLCBvYmplY3RzIHdpdGggYSA6bWV0aDpgX19kZWxfX2AgbWV0aG9kIGRvbid0IGVuZAorICAgICAgdXAgaW4gOmF0dHI6YGdjLmdhcmJhZ2VgIGFueW1vcmUuCisKIC4uIGRhdGE6OiBjYWxsYmFja3MKIAogICAgQSBsaXN0IG9mIGNhbGxiYWNrcyB0aGF0IHdpbGwgYmUgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgYmVmb3JlIGFuZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAppbmRleCAwYTFiMjA4Li5kYjQxZGI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdApAQCAtNTEsOSArNTEsMTMgQEAKIC4uIGluZGV4Ojogc2luZ2xlOiBPcGVuU1NMOyAodXNlIGluIG1vZHVsZSBoYXNobGliKQogCiBDb25zdHJ1Y3RvcnMgZm9yIGhhc2ggYWxnb3JpdGhtcyB0aGF0IGFyZSBhbHdheXMgcHJlc2VudCBpbiB0aGlzIG1vZHVsZSBhcmUKLTpmdW5jOmBtZDVgLCA6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsIGFuZAotOmZ1bmM6YHNoYTUxMmAuICBBZGRpdGlvbmFsIGFsZ29yaXRobXMgbWF5IGFsc28gYmUgYXZhaWxhYmxlIGRlcGVuZGluZyB1cG9uIHRoZQotT3BlblNTTCBsaWJyYXJ5IHRoYXQgUHl0aG9uIHVzZXMgb24geW91ciBwbGF0Zm9ybS4KKzpmdW5jOmBtZDVgLCA6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsCis6ZnVuYzpgc2hhNTEyYCwgOmZ1bmM6YHNoYTNfMjI0YCwgOmZ1bmM6YHNoYTNfMjU2YCwgOmZ1bmM6YHNoYTNfMzg0YCwgYW5kCis6ZnVuYzpgc2hhM181MTJgLiBBZGRpdGlvbmFsIGFsZ29yaXRobXMgbWF5IGFsc28gYmUgYXZhaWxhYmxlIGRlcGVuZGluZyB1cG9uCit0aGUgT3BlblNTTCBsaWJyYXJ5IHRoYXQgUHl0aG9uIHVzZXMgb24geW91ciBwbGF0Zm9ybS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIEFkZCBzaGEzIGZhbWlseSBvZiBoYXNoIGFsZ29yaXRobXMuCiAKIEZvciBleGFtcGxlLCB0byBvYnRhaW4gdGhlIGRpZ2VzdCBvZiB0aGUgYnl0ZSBzdHJpbmcgYGBiJ05vYm9keSBpbnNwZWN0cyB0aGUKIHNwYW1taXNoIHJlcGV0aXRpb24nYGA6OgpAQCAtMTIwLDYgKzEyNCwxOCBAQAogCiAgICBUaGUgaW50ZXJuYWwgYmxvY2sgc2l6ZSBvZiB0aGUgaGFzaCBhbGdvcml0aG0gaW4gYnl0ZXMuCiAKK0EgaGFzaCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworLi4gYXR0cmlidXRlOjogaGFzaC5uYW1lCisKKyAgIFRoZSBjYW5vbmljYWwgbmFtZSBvZiB0aGlzIGhhc2gsIGFsd2F5cyBsb3dlcmNhc2UgYW5kIGFsd2F5cyBzdWl0YWJsZSBhcyBhCisgICBwYXJhbWV0ZXIgdG8gOmZ1bmM6YG5ld2AgdG8gY3JlYXRlIGFub3RoZXIgaGFzaCBvZiB0aGlzIHR5cGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBUaGUgbmFtZSBhdHRyaWJ1dGUgaGFzIGJlZW4gcHJlc2VudCBpbiBDUHl0aG9uIHNpbmNlIGl0cyBpbmNlcHRpb24sIGJ1dAorICAgICAgdW50aWwgUHl0aG9uIDMuNCB3YXMgbm90IGZvcm1hbGx5IHNwZWNpZmllZCwgc28gbWF5IG5vdCBleGlzdCBvbiBzb21lCisgICAgICBwbGF0Zm9ybXMuCisKIEEgaGFzaCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9obWFjLnJzdCBiL0RvYy9saWJyYXJ5L2htYWMucnN0CmluZGV4IGMyMDY2YTcuLjRjNzA3ZTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2htYWMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2htYWMucnN0CkBAIC0xNiwyMCArMTYsMjYgQEAKIAogLi4gZnVuY3Rpb246OiBuZXcoa2V5LCBtc2c9Tm9uZSwgZGlnZXN0bW9kPU5vbmUpCiAKLSAgIFJldHVybiBhIG5ldyBobWFjIG9iamVjdC4gICprZXkqIGlzIGEgYnl0ZXMgb2JqZWN0IGdpdmluZyB0aGUgc2VjcmV0IGtleS4gIElmCi0gICAqbXNnKiBpcyBwcmVzZW50LCB0aGUgbWV0aG9kIGNhbGwgYGB1cGRhdGUobXNnKWBgIGlzIG1hZGUuICAqZGlnZXN0bW9kKiBpcwotICAgdGhlIGRpZ2VzdCBjb25zdHJ1Y3RvciBvciBtb2R1bGUgZm9yIHRoZSBITUFDIG9iamVjdCB0byB1c2UuIEl0IGRlZmF1bHRzIHRvCi0gICB0aGUgOmZ1bmM6YGhhc2hsaWIubWQ1YCBjb25zdHJ1Y3Rvci4KKyAgIFJldHVybiBhIG5ldyBobWFjIG9iamVjdC4gICprZXkqIGlzIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCBnaXZpbmcgdGhlCisgICBzZWNyZXQga2V5LiAgSWYgKm1zZyogaXMgcHJlc2VudCwgdGhlIG1ldGhvZCBjYWxsIGBgdXBkYXRlKG1zZylgYCBpcyBtYWRlLgorICAgKmRpZ2VzdG1vZCogaXMgdGhlIGRpZ2VzdCBjb25zdHJ1Y3RvciBvciBtb2R1bGUgZm9yIHRoZSBITUFDIG9iamVjdCB0byB1c2UuCisgICBJdCBkZWZhdWx0cyB0byB0aGUgOmZ1bmM6YGhhc2hsaWIubWQ1YCBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFBhcmFtZXRlciAqa2V5KiBjYW4gYmUgYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LiBQYXJhbWV0ZXIgKm1zZyogY2FuCisgICAgICBiZSBvZiBhbnkgdHlwZSBzdXBwb3J0ZWQgYnkgOm1vZDpgaGFzaGxpYmAuCiAKIEFuIEhNQUMgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKIC4uIG1ldGhvZDo6IEhNQUMudXBkYXRlKG1zZykKIAotICAgVXBkYXRlIHRoZSBobWFjIG9iamVjdCB3aXRoIHRoZSBieXRlcyBvYmplY3QgKm1zZyouICBSZXBlYXRlZCBjYWxscyBhcmUKLSAgIGVxdWl2YWxlbnQgdG8gYSBzaW5nbGUgY2FsbCB3aXRoIHRoZSBjb25jYXRlbmF0aW9uIG9mIGFsbCB0aGUgYXJndW1lbnRzOgorICAgVXBkYXRlIHRoZSBobWFjIG9iamVjdCB3aXRoICptc2cqLiAgUmVwZWF0ZWQgY2FsbHMgYXJlIGVxdWl2YWxlbnQgdG8gYQorICAgc2luZ2xlIGNhbGwgd2l0aCB0aGUgY29uY2F0ZW5hdGlvbiBvZiBhbGwgdGhlIGFyZ3VtZW50czoKICAgIGBgbS51cGRhdGUoYSk7IG0udXBkYXRlKGIpYGAgaXMgZXF1aXZhbGVudCB0byBgYG0udXBkYXRlKGEgKyBiKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgUGFyYW1ldGVyICptc2cqIGNhbiBiZSBvZiBhbnkgdHlwZSBzdXBwb3J0ZWQgYnkgOm1vZDpgaGFzaGxpYmAuCisKIAogLi4gbWV0aG9kOjogSE1BQy5kaWdlc3QoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKaW5kZXggODEzNzU3My4uMGZhZDU2NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdApAQCAtMjcsNyArMjcsNyBAQAogVGhlIG1vZHVsZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CiAKIAotLi4gY2xhc3M6OiBIVFRQQ29ubmVjdGlvbihob3N0LCBwb3J0PU5vbmVbLCBzdHJpY3RdWywgdGltZW91dF0sIFwKKy4uIGNsYXNzOjogSFRUUENvbm5lY3Rpb24oaG9zdCwgcG9ydD1Ob25lWywgdGltZW91dF0sIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQW4gOmNsYXNzOmBIVFRQQ29ubmVjdGlvbmAgaW5zdGFuY2UgcmVwcmVzZW50cyBvbmUgdHJhbnNhY3Rpb24gd2l0aCBhbiBIVFRQCkBAIC01MSwxMyArNTEsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAqc291cmNlX2FkZHJlc3MqIHdhcyBhZGRlZC4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4yIDMuNAotICAgICAgVGhlICpzdHJpY3QqIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLiAgSFRUUCAwLjktc3R5bGUgIlNpbXBsZSBSZXNwb25zZXMiCi0gICAgICBhcmUgbm90IHN1cHBvcnRlZCBhbnltb3JlLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFRoZSAgKnN0cmljdCogcGFyYW1ldGVyIGlzIHJlbW92ZWQuIEhUVFAgMC45LXN0eWxlICJTaW1wbGUgUmVzcG9uc2VzIiBhcmUKKyAgICAgIG5vdCBzdXBwb3J0ZWQuCiAKIAogLi4gY2xhc3M6OiBIVFRQU0Nvbm5lY3Rpb24oaG9zdCwgcG9ydD1Ob25lLCBrZXlfZmlsZT1Ob25lLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X2ZpbGU9Tm9uZVssIHN0cmljdF1bLCB0aW1lb3V0XSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9maWxlPU5vbmVbLCB0aW1lb3V0XSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSwgKiwgY29udGV4dD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1Ob25lKQogCkBAIC04OSwxOSArODksMTkgQEAKICAgICAgIFRoaXMgY2xhc3Mgbm93IHN1cHBvcnRzIEhUVFBTIHZpcnR1YWwgaG9zdHMgaWYgcG9zc2libGUgKHRoYXQgaXMsCiAgICAgICBpZiA6ZGF0YTpgc3NsLkhBU19TTklgIGlzIHRydWUpLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjIgMy40Ci0gICAgICBUaGUgKnN0cmljdCogcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuICBIVFRQIDAuOS1zdHlsZSAiU2ltcGxlIFJlc3BvbnNlcyIKLSAgICAgIGFyZSBub3Qgc3VwcG9ydGVkIGFueW1vcmUuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgVGhlICpzdHJpY3QqIHBhcmFtZXRlciBpcyByZW1vdmVkLiBIVFRQIDAuOS1zdHlsZSAiU2ltcGxlIFJlc3BvbnNlcyIgYXJlCisgICAgICBub3Qgc3VwcG9ydGVkIGFueW1vcmUuCiAKIAotLi4gY2xhc3M6OiBIVFRQUmVzcG9uc2Uoc29jaywgZGVidWdsZXZlbD0wWywgc3RyaWN0XSwgbWV0aG9kPU5vbmUsIHVybD1Ob25lKQorLi4gY2xhc3M6OiBIVFRQUmVzcG9uc2Uoc29jaywgZGVidWdsZXZlbD0wLCBtZXRob2Q9Tm9uZSwgdXJsPU5vbmUpCiAKICAgIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgdXBvbiBzdWNjZXNzZnVsIGNvbm5lY3Rpb24uICBOb3QKICAgIGluc3RhbnRpYXRlZCBkaXJlY3RseSBieSB1c2VyLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjIgMy40Ci0gICAgICBUaGUgKnN0cmljdCogcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuICBIVFRQIDAuOS1zdHlsZSAiU2ltcGxlIFJlc3BvbnNlcyIKLSAgICAgIGFyZSBub3Qgc3VwcG9ydGVkIGFueW1vcmUuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgVGhlICpzdHJpY3QqIHBhcmFtZXRlciBpcyByZW1vdmVkLiBIVFRQIDAuOSBzdHlsZSAiU2ltcGxlIFJlc3BvbnNlcyIgYXJlCisgICAgICBub3Qgc3VwcG9ydGVkIGFueW1vcmUuCiAKIAogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSByYWlzZWQgYXMgYXBwcm9wcmlhdGU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKaW5kZXggY2JhZDNlZC4uNTMxMzlhMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdApAQCAtMTcwLDEyICsxNzAsMTkgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIG1ldGhvZDo6IHNlbmRfZXJyb3IoY29kZSwgbWVzc2FnZT1Ob25lKQorICAgLi4gbWV0aG9kOjogc2VuZF9lcnJvcihjb2RlLCBtZXNzYWdlPU5vbmUsIGV4cGxhaW49Tm9uZSkKIAogICAgICAgU2VuZHMgYW5kIGxvZ3MgYSBjb21wbGV0ZSBlcnJvciByZXBseSB0byB0aGUgY2xpZW50LiBUaGUgbnVtZXJpYyAqY29kZSoKLSAgICAgIHNwZWNpZmllcyB0aGUgSFRUUCBlcnJvciBjb2RlLCB3aXRoICptZXNzYWdlKiBhcyBvcHRpb25hbCwgbW9yZSBzcGVjaWZpYyB0ZXh0LiBBCi0gICAgICBjb21wbGV0ZSBzZXQgb2YgaGVhZGVycyBpcyBzZW50LCBmb2xsb3dlZCBieSB0ZXh0IGNvbXBvc2VkIHVzaW5nIHRoZQotICAgICAgOmF0dHI6YGVycm9yX21lc3NhZ2VfZm9ybWF0YCBjbGFzcyB2YXJpYWJsZS4KKyAgICAgIHNwZWNpZmllcyB0aGUgSFRUUCBlcnJvciBjb2RlLCB3aXRoICptZXNzYWdlKiBhcyBvcHRpb25hbCwgbW9yZSBzcGVjaWZpYworICAgICAgdGV4dCwgdXN1YWxseSByZWZlcnJpbmcgdG8gc2hvcnQgbWVzc2FnZSByZXNwb25zZS4gIFRoZSAqZXhwbGFpbioKKyAgICAgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHNlbmQgYSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IgaW4KKyAgICAgIHJlc3BvbnNlIGNvbnRlbnQgYm9keS4gIEEgY29tcGxldGUgc2V0IG9mIGhlYWRlcnMgaXMgc2VudCwgZm9sbG93ZWQgYnkKKyAgICAgIHRleHQgY29tcG9zZWQgdXNpbmcgdGhlIDphdHRyOmBlcnJvcl9tZXNzYWdlX2Zvcm1hdGAgY2xhc3MgdmFyaWFibGUuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICBUaGUgZXJyb3IgcmVzcG9uc2UgaW5jbHVkZXMgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIuCisgICAgICAgICBBZGRlZCB0aGUgKmV4cGxhaW4qIGFyZ3VtZW50LgorCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2UoY29kZSwgbWVzc2FnZT1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pZGxlLnJzdCBiL0RvYy9saWJyYXJ5L2lkbGUucnN0CmluZGV4IDM2ZDc4YjAuLjI3MThjZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lkbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lkbGUucnN0CkBAIC0xNiw3MCArMTYsODIgQEAKIAogKiBjb2RlZCBpbiAxMDAlIHB1cmUgUHl0aG9uLCB1c2luZyB0aGUgOm1vZDpgdGtpbnRlcmAgR1VJIHRvb2xraXQKIAotKiBjcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cyBhbmQgVW5peAorKiBjcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cywgVW5peCwgYW5kIE1hYyBPUyBYCiAKLSogbXVsdGktd2luZG93IHRleHQgZWRpdG9yIHdpdGggbXVsdGlwbGUgdW5kbywgUHl0aG9uIGNvbG9yaXppbmcgYW5kIG1hbnkgb3RoZXIKLSAgZmVhdHVyZXMsIGUuZy4gc21hcnQgaW5kZW50IGFuZCBjYWxsIHRpcHMKKyogbXVsdGktd2luZG93IHRleHQgZWRpdG9yIHdpdGggbXVsdGlwbGUgdW5kbywgUHl0aG9uIGNvbG9yaXppbmcsCisgIHNtYXJ0IGluZGVudCwgY2FsbCB0aXBzLCBhbmQgbWFueSBvdGhlciBmZWF0dXJlcwogCiAqIFB5dGhvbiBzaGVsbCB3aW5kb3cgKGEuay5hLiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlcikKIAotKiBkZWJ1Z2dlciAobm90IGNvbXBsZXRlLCBidXQgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMsIHZpZXcgIGFuZCBzdGVwKQorKiBkZWJ1Z2dlciAobm90IGNvbXBsZXRlLCBidXQgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMsIHZpZXcgYW5kIHN0ZXApCiAKIAogTWVudXMKIC0tLS0tCiAKK0lETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMsIHRoZSBTaGVsbCB3aW5kb3cgYW5kIHRoZSBFZGl0b3Igd2luZG93LiBJdCBpcworcG9zc2libGUgdG8gaGF2ZSBtdWx0aXBsZSBlZGl0b3Igd2luZG93cyBzaW11bHRhbmVvdXNseS4gSURMRSdzCittZW51cyBkeW5hbWljYWxseSBjaGFuZ2UgYmFzZWQgb24gd2hpY2ggd2luZG93IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gRWFjaCBtZW51Citkb2N1bWVudGVkIGJlbG93IGluZGljYXRlcyB3aGljaCB3aW5kb3cgdHlwZSBpdCBpcyBhc3NvY2lhdGVkIHdpdGguIENsaWNrIG9uCit0aGUgZG90dGVkIGxpbmUgYXQgdGhlIHRvcCBvZiBhIG1lbnUgdG8gInRlYXIgaXQgb2ZmIjogYSBzZXBhcmF0ZSB3aW5kb3cKK2NvbnRhaW5pbmcgdGhlIG1lbnUgaXMgY3JlYXRlZCAoZm9yIFVuaXggYW5kIFdpbmRvd3Mgb25seSkuCiAKLUZpbGUgbWVudQotXl5eXl5eXl5eCitGaWxlIG1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIE5ldyBmaWxlCi0gICBjcmVhdGUgYSBuZXcgZmlsZSBlZGl0aW5nIHdpbmRvdworICAgQ3JlYXRlIGEgbmV3IGZpbGUgZWRpdGluZyB3aW5kb3cKIAogT3Blbi4uLgotICAgb3BlbiBhbiBleGlzdGluZyBmaWxlCisgICBPcGVuIGFuIGV4aXN0aW5nIGZpbGUKIAogT3BlbiBtb2R1bGUuLi4KLSAgIG9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKKyAgIE9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKKworUmVjZW50IEZpbGVzCisgICBPcGVuIGEgbGlzdCBvZiByZWNlbnQgZmlsZXMKIAogQ2xhc3MgYnJvd3NlcgotICAgc2hvdyBjbGFzc2VzIGFuZCBtZXRob2RzIGluIGN1cnJlbnQgZmlsZQorICAgU2hvdyBjbGFzc2VzIGFuZCBtZXRob2RzIGluIGN1cnJlbnQgZmlsZQogCiBQYXRoIGJyb3dzZXIKLSAgIHNob3cgc3lzLnBhdGggZGlyZWN0b3JpZXMsIG1vZHVsZXMsIGNsYXNzZXMgYW5kIG1ldGhvZHMKKyAgIFNob3cgc3lzLnBhdGggZGlyZWN0b3JpZXMsIG1vZHVsZXMsIGNsYXNzZXMgYW5kIG1ldGhvZHMKIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBDbGFzcyBicm93c2VyCiAgICBzaW5nbGU6IFBhdGggYnJvd3NlcgogCiBTYXZlCi0gICBzYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQgd2luZG93cyBoYXZlIGEgXCogYmVmb3JlIGFuZAotICAgYWZ0ZXIgdGhlIHdpbmRvdyB0aXRsZSkKKyAgIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gdGhlIGFzc29jaWF0ZWQgZmlsZSAodW5zYXZlZCB3aW5kb3dzIGhhdmUgYQorICAgXCogYmVmb3JlIGFuZCBhZnRlciB0aGUgd2luZG93IHRpdGxlKQogCiBTYXZlIEFzLi4uCi0gICBzYXZlIGN1cnJlbnQgd2luZG93IHRvIG5ldyBmaWxlLCB3aGljaCBiZWNvbWVzIHRoZSBhc3NvY2lhdGVkIGZpbGUKKyAgIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gbmV3IGZpbGUsIHdoaWNoIGJlY29tZXMgdGhlIGFzc29jaWF0ZWQgZmlsZQogCiBTYXZlIENvcHkgQXMuLi4KLSAgIHNhdmUgY3VycmVudCB3aW5kb3cgdG8gZGlmZmVyZW50IGZpbGUgd2l0aG91dCBjaGFuZ2luZyB0aGUgYXNzb2NpYXRlZCBmaWxlCisgICBTYXZlIGN1cnJlbnQgd2luZG93IHRvIGRpZmZlcmVudCBmaWxlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGFzc29jaWF0ZWQgZmlsZQorCitQcmludCBXaW5kb3cKKyAgIFByaW50IHRoZSBjdXJyZW50IHdpbmRvdwogCiBDbG9zZQotICAgY2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQorICAgQ2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQogCiBFeGl0Ci0gICBjbG9zZSBhbGwgd2luZG93cyBhbmQgcXVpdCBJRExFIChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKKyAgIENsb3NlIGFsbCB3aW5kb3dzIGFuZCBxdWl0IElETEUgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQogCiAKLUVkaXQgbWVudQotXl5eXl5eXl5eCitFZGl0IG1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIFVuZG8KLSAgIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cgKG1heCAxMDAwIGNoYW5nZXMpCisgICBVbmRvIGxhc3QgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93IChhIG1heGltdW0gb2YgMTAwMCBjaGFuZ2VzIG1heSBiZSB1bmRvbmUpCiAKIFJlZG8KICAgIFJlZG8gbGFzdCB1bmRvbmUgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93CiAKIEN1dAotICAgQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQ7IHRoZW4gZGVsZXRlIHNlbGVjdGlvbgorICAgQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQ7IHRoZW4gZGVsZXRlIHRoZSBzZWxlY3Rpb24KIAogQ29weQogICAgQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKQEAgLTEwOCwxMSArMTIwLDMwIEBACiBHbyB0byBsaW5lCiAgICBBc2sgZm9yIGEgbGluZSBudW1iZXIgYW5kIHNob3cgdGhhdCBsaW5lCiAKK0V4cGFuZCB3b3JkCisgICBFeHBhbmQgdGhlIHdvcmQgeW91IGhhdmUgdHlwZWQgdG8gbWF0Y2ggYW5vdGhlciB3b3JkIGluIHRoZSBzYW1lIGJ1ZmZlcjsKKyAgIHJlcGVhdCB0byBnZXQgYSBkaWZmZXJlbnQgZXhwYW5zaW9uCisKK1Nob3cgY2FsbCB0aXAKKyAgIEFmdGVyIGFuIHVuY2xvc2VkIHBhcmVudGhlc2lzIGZvciBhIGZ1bmN0aW9uLCBvcGVuIGEgc21hbGwgd2luZG93IHdpdGgKKyAgIGZ1bmN0aW9uIHBhcmFtZXRlciBoaW50cworCitTaG93IHN1cnJvdW5kaW5nIHBhcmVucworICAgSGlnaGxpZ2h0IHRoZSBzdXJyb3VuZGluZyBwYXJlbnRoZXNpcworCitTaG93IENvbXBsZXRpb25zCisgICBPcGVuIGEgc2Nyb2xsIHdpbmRvdyBhbGxvd2luZyBzZWxlY3Rpb24ga2V5d29yZHMgYW5kIGF0dHJpYnV0ZXMuIFNlZQorICAgQ29tcGxldGlvbnMgYmVsb3cuCisKKworRm9ybWF0IG1lbnUgKEVkaXRvciB3aW5kb3cgb25seSkKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKIEluZGVudCByZWdpb24KLSAgIFNoaWZ0IHNlbGVjdGVkIGxpbmVzIHJpZ2h0IDQgc3BhY2VzCisgICBTaGlmdCBzZWxlY3RlZCBsaW5lcyByaWdodCBieSB0aGUgaW5kZW50IHdpZHRoIChkZWZhdWx0IDQgc3BhY2VzKQogCiBEZWRlbnQgcmVnaW9uCi0gICBTaGlmdCBzZWxlY3RlZCBsaW5lcyBsZWZ0IDQgc3BhY2VzCisgICBTaGlmdCBzZWxlY3RlZCBsaW5lcyBsZWZ0IGJ5IHRoZSBpbmRlbnQgd2lkdGggKGRlZmF1bHQgNCBzcGFjZXMpCiAKIENvbW1lbnQgb3V0IHJlZ2lvbgogICAgSW5zZXJ0ICMjIGluIGZyb250IG9mIHNlbGVjdGVkIGxpbmVzCkBAIC0xMjEsNjcgKzE1MiwxMjEgQEAKICAgIFJlbW92ZSBsZWFkaW5nICMgb3IgIyMgZnJvbSBzZWxlY3RlZCBsaW5lcwogCiBUYWJpZnkgcmVnaW9uCi0gICBUdXJucyAqbGVhZGluZyogc3RyZXRjaGVzIG9mIHNwYWNlcyBpbnRvIHRhYnMKKyAgIFR1cm5zICpsZWFkaW5nKiBzdHJldGNoZXMgb2Ygc3BhY2VzIGludG8gdGFicy4gKE5vdGU6IFdlIHJlY29tbWVuZCB1c2luZworICAgNCBzcGFjZSBibG9ja3MgdG8gaW5kZW50IFB5dGhvbiBjb2RlLikKIAogVW50YWJpZnkgcmVnaW9uCi0gICBUdXJuICphbGwqIHRhYnMgaW50byB0aGUgcmlnaHQgbnVtYmVyIG9mIHNwYWNlcworICAgVHVybiAqYWxsKiB0YWJzIGludG8gdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHNwYWNlcwogCi1FeHBhbmQgd29yZAotICAgRXhwYW5kIHRoZSB3b3JkIHlvdSBoYXZlIHR5cGVkIHRvIG1hdGNoIGFub3RoZXIgd29yZCBpbiB0aGUgc2FtZSBidWZmZXI7IHJlcGVhdAotICAgdG8gZ2V0IGEgZGlmZmVyZW50IGV4cGFuc2lvbgorVG9nZ2xlIHRhYnMKKyAgIE9wZW4gYSBkaWFsb2cgdG8gc3dpdGNoIGJldHdlZW4gaW5kZW50aW5nIHdpdGggc3BhY2VzIGFuZCB0YWJzLgorCitOZXcgSW5kZW50IFdpZHRoCisgICBPcGVuIGEgZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGguIFRoZSBhY2NlcHRlZCBkZWZhdWx0IGJ5IHRoZSBQeXRob24KKyAgIGNvbW11bml0eSBpcyA0IHNwYWNlcy4KIAogRm9ybWF0IFBhcmFncmFwaAotICAgUmVmb3JtYXQgdGhlIGN1cnJlbnQgYmxhbmstbGluZS1zZXBhcmF0ZWQgcGFyYWdyYXBoCisgICBSZWZvcm1hdCB0aGUgY3VycmVudCBibGFuay1saW5lLXNlcGFyYXRlZCBwYXJhZ3JhcGguIEFsbCBsaW5lcyBpbiB0aGUKKyAgIHBhcmFncmFwaCB3aWxsIGJlIGZvcm1hdHRlZCB0byBsZXNzIHRoYW4gODAgY29sdW1ucy4KIAotSW1wb3J0IG1vZHVsZQotICAgSW1wb3J0IG9yIHJlbG9hZCB0aGUgY3VycmVudCBtb2R1bGUKLQotUnVuIHNjcmlwdAotICAgRXhlY3V0ZSB0aGUgY3VycmVudCBmaWxlIGluIHRoZSBfX21haW5fXyBuYW1lc3BhY2UKK1N0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UKKyAgIFJlbW92ZXMgYW55IHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGFzdCBub24tc3BhY2UgY2hhcmFjdGVyCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogSW1wb3J0IG1vZHVsZQogICAgc2luZ2xlOiBSdW4gc2NyaXB0CiAKIAotV2luZG93cyBtZW51Ci1eXl5eXl5eXl5eXl4KK1J1biBtZW51IChFZGl0b3Igd2luZG93IG9ubHkpCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi1ab29tIEhlaWdodAotICAgdG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDI0eDgwKSBhbmQgbWF4aW11bSBoZWlnaHQuCitQeXRob24gU2hlbGwKKyAgIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdwogCi1UaGUgcmVzdCBvZiB0aGlzIG1lbnUgbGlzdHMgdGhlIG5hbWVzIG9mIGFsbCBvcGVuIHdpbmRvd3M7IHNlbGVjdCBvbmUgdG8gYnJpbmcKLWl0IHRvIHRoZSBmb3JlZ3JvdW5kIChkZWljb25pZnlpbmcgaXQgaWYgbmVjZXNzYXJ5KS4KK0NoZWNrIG1vZHVsZQorICAgQ2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgbW9kdWxlIGN1cnJlbnRseSBvcGVuIGluIHRoZSBFZGl0b3Igd2luZG93LiBJZiB0aGUKKyAgIG1vZHVsZSBoYXMgbm90IGJlZW4gc2F2ZWQgSURMRSB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZSBjb2RlLgogCitSdW4gbW9kdWxlCisgICBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQsIHRoZW4gZXhlY3V0ZSB0aGUgY3VycmVudGx5CisgICBvcGVuIG1vZHVsZS4gIElmIHRoZSBtb2R1bGUgaGFzIG5vdCBiZWVuIHNhdmVkIElETEUgd2lsbCBwcm9tcHQgdGhlIHVzZXIKKyAgIHRvIHNhdmUgdGhlIGNvZGUuCiAKLURlYnVnIG1lbnUKLV5eXl5eXl5eXl4KK1NoZWxsIG1lbnUgKFNoZWxsIHdpbmRvdyBvbmx5KQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLSogaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgb25seQorVmlldyBMYXN0IFJlc3RhcnQKKyAgU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAorCitSZXN0YXJ0IFNoZWxsCisgIFJlc3RhcnQgdGhlIHNoZWxsIHRvIGNsZWFuIHRoZSBlbnZpcm9ubWVudAorCitEZWJ1ZyBtZW51IChTaGVsbCB3aW5kb3cgb25seSkKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBHbyB0byBmaWxlL2xpbmUKICAgIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLAogICAgYW5kIHNob3cgdGhlIGxpbmUuICBVc2VmdWwgdG8gdmlldyB0aGUgc291cmNlIGxpbmVzIHJlZmVyZW5jZWQgaW4gYW4KLSAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suCisgICBleGNlcHRpb24gdHJhY2ViYWNrLiBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgogCi1EZWJ1Z2dlcgotICAgUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUgZGVidWdnZXIuCitEZWJ1Z2dlciAodG9nZ2xlKQorICAgVGhpcyBmZWF0dXJlIGlzIG5vdCBjb21wbGV0ZSBhbmQgY29uc2lkZXJlZCBleHBlcmltZW50YWwuIFJ1biBjb21tYW5kcyBpbgorICAgdGhlIHNoZWxsIHVuZGVyIHRoZSBkZWJ1Z2dlcgogCiBTdGFjayB2aWV3ZXIKLSAgIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24uCisgICBTaG93IHRoZSBzdGFjayB0cmFjZWJhY2sgb2YgdGhlIGxhc3QgZXhjZXB0aW9uCiAKIEF1dG8tb3BlbiBTdGFjayBWaWV3ZXIKLSAgIE9wZW4gc3RhY2sgdmlld2VyIG9uIHRyYWNlYmFjay4KKyAgIFRvZ2dsZSBhdXRvbWF0aWNhbGx5IG9wZW5pbmcgdGhlIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQgZXhjZXB0aW9uCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogc3RhY2sgdmlld2VyCiAgICBzaW5nbGU6IGRlYnVnZ2VyCiAKK09wdGlvbnMgbWVudSAoU2hlbGwgYW5kIEVkaXRvcikKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotRWRpdCBjb250ZXh0IG1lbnUKLV5eXl5eXl5eXl5eXl5eXl5eCitDb25maWd1cmUgSURMRQorICAgT3BlbiBhIGNvbmZpZ3VyYXRpb24gZGlhbG9nLiAgRm9udHMsIGluZGVudGF0aW9uLCBrZXliaW5kaW5ncywgYW5kIGNvbG9yCisgICB0aGVtZXMgbWF5IGJlIGFsdGVyZWQuICBTdGFydHVwIFByZWZlcmVuY2VzIG1heSBiZSBzZXQsIGFuZCBhZGRpdGlvbmFsCisgICBoZWxwIHNvdXJjZXMgY2FuIGJlIHNwZWNpZmllZC4KIAotKiBSaWdodC1jbGljayBpbiBFZGl0IHdpbmRvdyAoQ29udHJvbC1jbGljayBvbiBPUyBYKQorQ29kZSBDb250ZXh0ICh0b2dnbGUpKEVkaXRvciBXaW5kb3cgb25seSkKKyAgIE9wZW4gYSBwYW5lIGF0IHRoZSB0b3Agb2YgdGhlIGVkaXQgd2luZG93IHdoaWNoIHNob3dzIHRoZSBibG9jayBjb250ZXh0CisgICBvZiB0aGUgc2VjdGlvbiBvZiBjb2RlIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvZiB0aGUgd2luZG93LgorCitXaW5kb3dzIG1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1pvb20gSGVpZ2h0CisgICBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBub3JtYWwgc2l6ZSAoNDB4ODAgaW5pdGlhbCBzZXR0aW5nKSBhbmQgbWF4aW11bQorICAgaGVpZ2h0LiBUaGUgaW5pdGlhbCBzaXplIGlzIGluIHRoZSBDb25maWd1cmUgSURMRSBkaWFsb2cgdW5kZXIgdGhlIGdlbmVyYWwKKyAgIHRhYi4KKworVGhlIHJlc3Qgb2YgdGhpcyBtZW51IGxpc3RzIHRoZSBuYW1lcyBvZiBhbGwgb3BlbiB3aW5kb3dzOyBzZWxlY3Qgb25lIHRvIGJyaW5nCitpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmIG5lY2Vzc2FyeSkuCisKK0hlbHAgbWVudSAoU2hlbGwgYW5kIEVkaXRvcikKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQWJvdXQgSURMRQorICAgVmVyc2lvbiwgY29weXJpZ2h0LCBsaWNlbnNlLCBjcmVkaXRzCisKK0lETEUgSGVscAorICAgRGlzcGxheSBhIGhlbHAgZmlsZSBmb3IgSURMRSBkZXRhaWxpbmcgdGhlIG1lbnUgb3B0aW9ucywgYmFzaWMgZWRpdGluZyBhbmQKKyAgIG5hdmlnYXRpb24sIGFuZCBvdGhlciB0aXBzLgorCitQeXRob24gRG9jcworICAgQWNjZXNzIGxvY2FsIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBpZiBpbnN0YWxsZWQuIE9yIHdpbGwgc3RhcnQgYSB3ZWIgYnJvd3NlcgorICAgYW5kIG9wZW4gZG9jcy5weXRob24ub3JnIHNob3dpbmcgdGhlIGxhdGVzdCBQeXRob24gZG9jdW1lbnRhdGlvbi4KKworQWRkaXRpb25hbCBoZWxwIHNvdXJjZXMgbWF5IGJlIGFkZGVkIGhlcmUgd2l0aCB0aGUgQ29uZmlndXJlIElETEUgZGlhbG9nIHVuZGVyCit0aGUgR2VuZXJhbCB0YWIuCisKK0VkaXRvciBXaW5kb3cgY29udGV4dCBtZW51CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCisqIFJpZ2h0LWNsaWNrIGluIEVkaXRvciB3aW5kb3cgKENvbnRyb2wtY2xpY2sgb24gT1MgWCkKIAogQ3V0CiAgICBDb3B5IHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZDsgdGhlbiBkZWxldGUgc2VsZWN0aW9uCkBAIC0yMDcsOCArMjkyLDggQEAKICAgIHNpbmdsZTogYnJlYWtwb2ludHMKIAogCi1TaGVsbCBjb250ZXh0IG1lbnUKLV5eXl5eXl5eXl5eXl5eXl5eXgorU2hlbGwgV2luZG93IGNvbnRleHQgbWVudQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiAqIFJpZ2h0LWNsaWNrIGluIFB5dGhvbiBTaGVsbCB3aW5kb3cgKENvbnRyb2wtY2xpY2sgb24gT1MgWCkKIApAQCAtMjI1LDE5ICszMTAsNDQgQEAKICAgIFNhbWUgYXMgaW4gRGVidWcgbWVudS4KIAogCi1CYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitFZGl0aW5nIGFuZCBuYXZpZ2F0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICogOmtiZDpgQmFja3NwYWNlYCBkZWxldGVzIHRvIHRoZSBsZWZ0OyA6a2JkOmBEZWxgIGRlbGV0ZXMgdG8gdGhlIHJpZ2h0CiAKKyogOmtiZDpgQy1CYWNrc3BhY2VgIGRlbGV0ZSB3b3JkIGxlZnQ7IDprYmQ6YEMtRGVsYCBkZWxldGUgd29yZCB0byB0aGUgcmlnaHQKKwogKiBBcnJvdyBrZXlzIGFuZCA6a2JkOmBQYWdlIFVwYC86a2JkOmBQYWdlIERvd25gIHRvIG1vdmUgYXJvdW5kCiAKKyogOmtiZDpgQy1MZWZ0QXJyb3dgIGFuZCA6a2JkOmBDLVJpZ2h0QXJyb3dgIG1vdmVzIGJ5IHdvcmRzCisKICogOmtiZDpgSG9tZWAvOmtiZDpgRW5kYCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZQogCiAqIDprYmQ6YEMtSG9tZWAvOmtiZDpgQy1FbmRgIGdvIHRvIGJlZ2luL2VuZCBvZiBmaWxlCiAKLSogU29tZSA6cHJvZ3JhbTpgRW1hY3NgIGJpbmRpbmdzIG1heSBhbHNvIHdvcmssIGluY2x1ZGluZyA6a2JkOmBDLUJgLAotICA6a2JkOmBDLVBgLCA6a2JkOmBDLUFgLCA6a2JkOmBDLUVgLCA6a2JkOmBDLURgLCA6a2JkOmBDLUxgCisqIFNvbWUgdXNlZnVsIEVtYWNzIGJpbmRpbmdzIGFyZSBpbmhlcml0ZWQgZnJvbSBUY2wvVGs6CisKKyAgICogOmtiZDpgQy1hYCBiZWdpbm5pbmcgb2YgbGluZQorCisgICAqIDprYmQ6YEMtZWAgZW5kIG9mIGxpbmUKKworICAgKiA6a2JkOmBDLWtgIGtpbGwgbGluZSAoYnV0IGRvZXNuJ3QgcHV0IGl0IGluIGNsaXBib2FyZCkKKworICAgKiA6a2JkOmBDLWxgIGNlbnRlciB3aW5kb3cgYXJvdW5kIHRoZSBpbnNlcnRpb24gcG9pbnQKKworICAgKiA6a2JkOmBDLWJgIGdvIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyIHdpdGhvdXQgZGVsZXRpbmcgKHVzdWFsbHkgeW91IGNhbgorICAgICBhbHNvIHVzZSB0aGUgY3Vyc29yIGtleSBmb3IgdGhpcykKKworICAgKiA6a2JkOmBDLWZgIGdvIGZvcndhcmQgb25lIGNoYXJhY3RlciB3aXRob3V0IGRlbGV0aW5nICh1c3VhbGx5IHlvdSBjYW4KKyAgICAgYWxzbyB1c2UgdGhlIGN1cnNvciBrZXkgZm9yIHRoaXMpCisKKyAgICogOmtiZDpgQy1wYCBnbyB1cCBvbmUgbGluZSAodXN1YWxseSB5b3UgY2FuIGFsc28gdXNlIHRoZSBjdXJzb3Iga2V5IGZvcgorICAgICB0aGlzKQorCisgICAqIDprYmQ6YEMtZGAgZGVsZXRlIG5leHQgY2hhcmFjdGVyCisKK1N0YW5kYXJkIGtleWJpbmRpbmdzIChsaWtlIDprYmQ6YEMtY2AgdG8gY29weSBhbmQgOmtiZDpgQy12YCB0byBwYXN0ZSkKK21heSB3b3JrLiAgS2V5YmluZGluZ3MgYXJlIHNlbGVjdGVkIGluIHRoZSBDb25maWd1cmUgSURMRSBkaWFsb2cuCiAKIAogQXV0b21hdGljIGluZGVudGF0aW9uCkBAIC0yNDYsMjcgKzM1Niw3NiBAQAogQWZ0ZXIgYSBibG9jay1vcGVuaW5nIHN0YXRlbWVudCwgdGhlIG5leHQgbGluZSBpcyBpbmRlbnRlZCBieSA0IHNwYWNlcyAoaW4gdGhlCiBQeXRob24gU2hlbGwgd2luZG93IGJ5IG9uZSB0YWIpLiAgQWZ0ZXIgY2VydGFpbiBrZXl3b3JkcyAoYnJlYWssIHJldHVybiBldGMuKQogdGhlIG5leHQgbGluZSBpcyBkZWRlbnRlZC4gIEluIGxlYWRpbmcgaW5kZW50YXRpb24sIDprYmQ6YEJhY2tzcGFjZWAgZGVsZXRlcyB1cAotdG8gNCBzcGFjZXMgaWYgdGhleSBhcmUgdGhlcmUuIDprYmQ6YFRhYmAgaW5zZXJ0cyAxLTQgc3BhY2VzIChpbiB0aGUgUHl0aG9uCi1TaGVsbCB3aW5kb3cgb25lIHRhYikuIFNlZSBhbHNvIHRoZSBpbmRlbnQvZGVkZW50IHJlZ2lvbiBjb21tYW5kcyBpbiB0aGUgZWRpdAotbWVudS4KK3RvIDQgc3BhY2VzIGlmIHRoZXkgYXJlIHRoZXJlLiA6a2JkOmBUYWJgIGluc2VydHMgc3BhY2VzIChpbiB0aGUgUHl0aG9uCitTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uIEluZGVudCB3aWR0aC4gQ3VycmVudGx5IHRhYnMKK2FyZSByZXN0cmljdGVkIHRvIGZvdXIgc3BhY2VzIGR1ZSB0byBUY2wvVGsgbGltaXRhdGlvbnMuCiAKK1NlZSBhbHNvIHRoZSBpbmRlbnQvZGVkZW50IHJlZ2lvbiBjb21tYW5kcyBpbiB0aGUgZWRpdCBtZW51LgorCitDb21wbGV0aW9ucworXl5eXl5eXl5eXl4KKworQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mIGNsYXNzZXMsCitib3RoIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQuIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkIGZvcgorZmlsZW5hbWVzLgorCitUaGUgQXV0b0NvbXBsZXRlV2luZG93IChBQ1cpIHdpbGwgb3BlbiBhZnRlciBhIHByZWRlZmluZWQgZGVsYXkgKGRlZmF1bHQgaXMKK3R3byBzZWNvbmRzKSBhZnRlciBhICcuJyBvciAoaW4gYSBzdHJpbmcpIGFuIG9zLnNlcCBpcyB0eXBlZC4gSWYgYWZ0ZXIgb25lCitvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlciBjaGFyYWN0ZXJzKSBhIHRhYiBpcyB0eXBlZAordGhlIEFDVyB3aWxsIG9wZW4gaW1tZWRpYXRlbHkgaWYgYSBwb3NzaWJsZSBjb250aW51YXRpb24gaXMgZm91bmQuCisKK0lmIHRoZXJlIGlzIG9ubHkgb25lIHBvc3NpYmxlIGNvbXBsZXRpb24gZm9yIHRoZSBjaGFyYWN0ZXJzIGVudGVyZWQsIGEKKzprYmQ6YFRhYmAgd2lsbCBzdXBwbHkgdGhhdCBjb21wbGV0aW9uIHdpdGhvdXQgb3BlbmluZyB0aGUgQUNXLgorCisnU2hvdyBDb21wbGV0aW9ucycgd2lsbCBmb3JjZSBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LCBieSBkZWZhdWx0IHRoZQorOmtiZDpgQy1zcGFjZWAgd2lsbCBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LiBJbiBhbiBlbXB0eQorc3RyaW5nLCB0aGlzIHdpbGwgY29udGFpbiB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBPbiBhCitibGFuayBsaW5lLCBpdCB3aWxsIGNvbnRhaW4gdGhlIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAorY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gSWYgc29tZQorY2hhcmFjdGVycyBoYXZlIGJlZW4gZW50ZXJlZCwgdGhlIEFDVyB3aWxsIGF0dGVtcHQgdG8gYmUgbW9yZSBzcGVjaWZpYy4KKworSWYgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQorZW50cnkgbW9zdCBjbG9zZWx5IG1hdGNoaW5nIHRob3NlIGNoYXJhY3RlcnMuICBFbnRlcmluZyBhIDprYmQ6YHRhYmAgd2lsbAorY2F1c2UgdGhlIGxvbmdlc3Qgbm9uLWFtYmlndW91cyBtYXRjaCB0byBiZSBlbnRlcmVkIGluIHRoZSBFZGl0b3Igd2luZG93IG9yCitTaGVsbC4gIFR3byA6a2JkOmB0YWJgIGluIGEgcm93IHdpbGwgc3VwcGx5IHRoZSBjdXJyZW50IEFDVyBzZWxlY3Rpb24sIGFzCit3aWxsIHJldHVybiBvciBhIGRvdWJsZSBjbGljay4gIEN1cnNvciBrZXlzLCBQYWdlIFVwL0Rvd24sIG1vdXNlIHNlbGVjdGlvbiwKK2FuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCisKKyJIaWRkZW4iIGF0dHJpYnV0ZXMgY2FuIGJlIGFjY2Vzc2VkIGJ5IHR5cGluZyB0aGUgYmVnaW5uaW5nIG9mIGhpZGRlbgorbmFtZSBhZnRlciBhICcuJywgZS5nLiAnXycuIFRoaXMgYWxsb3dzIGFjY2VzcyB0byBtb2R1bGVzIHdpdGgKK2BgX19hbGxfX2BgIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgorCitDb21wbGV0aW9ucyBhbmQgdGhlICdFeHBhbmQgV29yZCcgZmFjaWxpdHkgY2FuIHNhdmUgYSBsb3Qgb2YgdHlwaW5nIQorCitDb21wbGV0aW9ucyBhcmUgY3VycmVudGx5IGxpbWl0ZWQgdG8gdGhvc2UgaW4gdGhlIG5hbWVzcGFjZXMuIE5hbWVzIGluCithbiBFZGl0b3Igd2luZG93IHdoaWNoIGFyZSBub3QgdmlhIGBgX19tYWluX19gYCBhbmQgOmRhdGE6YHN5cy5tb2R1bGVzYCB3aWxsCitub3QgYmUgZm91bmQuICBSdW4gdGhlIG1vZHVsZSBvbmNlIHdpdGggeW91ciBpbXBvcnRzIHRvIGNvcnJlY3QgdGhpcyBzaXR1YXRpb24uCitOb3RlIHRoYXQgSURMRSBpdHNlbGYgcGxhY2VzIHF1aXRlIGEgZmV3IG1vZHVsZXMgaW4gc3lzLm1vZHVsZXMsIHNvCittdWNoIGNhbiBiZSBmb3VuZCBieSBkZWZhdWx0LCBlLmcuIHRoZSByZSBtb2R1bGUuCisKK0lmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5Citsb25nZXIgb3IgZGlzYWJsZSB0aGUgZXh0ZW5zaW9uLiAgT3IgYW5vdGhlciBvcHRpb24gaXMgdGhlIGRlbGF5IGNvdWxkCitiZSBzZXQgdG8gemVyby4gQW5vdGhlciBhbHRlcm5hdGl2ZSB0byBwcmV2ZW50aW5nIEFDVyBwb3B1cHMgaXMgdG8KK2Rpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCiAKIFB5dGhvbiBTaGVsbCB3aW5kb3cKIF5eXl5eXl5eXl5eXl5eXl5eXl4KIAotKiA6a2JkOmBDLUNgIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQKKyogOmtiZDpgQy1jYCBpbnRlcnJ1cHRzIGV4ZWN1dGluZyBjb21tYW5kCiAKLSogOmtiZDpgQy1EYCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCBhIGBgPj4+YGAgcHJvbXB0CisqIDprYmQ6YEMtZGAgc2VuZHMgZW5kLW9mLWZpbGU7IGNsb3NlcyB3aW5kb3cgaWYgdHlwZWQgYXQgYSBgYD4+PmBgIHByb21wdAorICAodGhpcyBpcyA6a2JkOmBDLXpgIG9uIFdpbmRvd3MpLgogCi0qIDprYmQ6YEFsdC1wYCByZXRyaWV2ZXMgcHJldmlvdXMgY29tbWFuZCBtYXRjaGluZyB3aGF0IHlvdSBoYXZlIHR5cGVkCisqIDprYmQ6YEFsdC0vYCAoRXhwYW5kIHdvcmQpIGlzIGFsc28gdXNlZnVsIHRvIHJlZHVjZSB0eXBpbmcKIAotKiA6a2JkOmBBbHQtbmAgcmV0cmlldmVzIG5leHQKKyAgQ29tbWFuZCBoaXN0b3J5CiAKLSogOmtiZDpgUmV0dXJuYCB3aGlsZSBvbiBhbnkgcHJldmlvdXMgY29tbWFuZCByZXRyaWV2ZXMgdGhhdCBjb21tYW5kCisgICogOmtiZDpgQWx0LXBgIHJldHJpZXZlcyBwcmV2aW91cyBjb21tYW5kIG1hdGNoaW5nIHdoYXQgeW91IGhhdmUgdHlwZWQuIE9uCisgICAgT1MgWCB1c2UgOmtiZDpgQy1wYC4KIAotKiA6a2JkOmBBbHQtL2AgKEV4cGFuZCB3b3JkKSBpcyBhbHNvIHVzZWZ1bCBoZXJlCisgICogOmtiZDpgQWx0LW5gIHJldHJpZXZlcyBuZXh0LiBPbiBPUyBYIHVzZSA6a2JkOmBDLW5gLgogCi0uLiBpbmRleDo6IHNpbmdsZTogaW5kZW50YXRpb24KKyAgKiA6a2JkOmBSZXR1cm5gIHdoaWxlIG9uIGFueSBwcmV2aW91cyBjb21tYW5kIHJldHJpZXZlcyB0aGF0IGNvbW1hbmQKIAogCiBTeW50YXggY29sb3JzCkBAIC0zMDgsMTcgKzQ2NywxNyBAQAogCiBVcG9uIHN0YXJ0dXAgd2l0aCB0aGUgYGAtc2BgIG9wdGlvbiwgSURMRSB3aWxsIGV4ZWN1dGUgdGhlIGZpbGUgcmVmZXJlbmNlZCBieQogdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyA6ZW52dmFyOmBJRExFU1RBUlRVUGAgb3IgOmVudnZhcjpgUFlUSE9OU1RBUlRVUGAuCi1JZGxlIGZpcnN0IGNoZWNrcyBmb3IgYGBJRExFU1RBUlRVUGBgOyBpZiBgYElETEVTVEFSVFVQYGAgaXMgcHJlc2VudCB0aGUgZmlsZQotcmVmZXJlbmNlZCBpcyBydW4uICBJZiBgYElETEVTVEFSVFVQYGAgaXMgbm90IHByZXNlbnQsIElkbGUgY2hlY2tzIGZvcgorSURMRSBmaXJzdCBjaGVja3MgZm9yIGBgSURMRVNUQVJUVVBgYDsgaWYgYGBJRExFU1RBUlRVUGBgIGlzIHByZXNlbnQgdGhlIGZpbGUKK3JlZmVyZW5jZWQgaXMgcnVuLiAgSWYgYGBJRExFU1RBUlRVUGBgIGlzIG5vdCBwcmVzZW50LCBJRExFIGNoZWNrcyBmb3IKIGBgUFlUSE9OU1RBUlRVUGBgLiAgRmlsZXMgcmVmZXJlbmNlZCBieSB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlCi1jb252ZW5pZW50IHBsYWNlcyB0byBzdG9yZSBmdW5jdGlvbnMgdGhhdCBhcmUgdXNlZCBmcmVxdWVudGx5IGZyb20gdGhlIElkbGUKK2NvbnZlbmllbnQgcGxhY2VzIHRvIHN0b3JlIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkIGZyZXF1ZW50bHkgZnJvbSB0aGUgSURMRQogc2hlbGwsIG9yIGZvciBleGVjdXRpbmcgaW1wb3J0IHN0YXRlbWVudHMgdG8gaW1wb3J0IGNvbW1vbiBtb2R1bGVzLgogCiBJbiBhZGRpdGlvbiwgYGBUa2BgIGFsc28gbG9hZHMgYSBzdGFydHVwIGZpbGUgaWYgaXQgaXMgcHJlc2VudC4gIE5vdGUgdGhhdCB0aGUKIFRrIGZpbGUgaXMgbG9hZGVkIHVuY29uZGl0aW9uYWxseS4gIFRoaXMgYWRkaXRpb25hbCBmaWxlIGlzIGBgLklkbGUucHlgYCBhbmQgaXMKIGxvb2tlZCBmb3IgaW4gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeS4gIFN0YXRlbWVudHMgaW4gdGhpcyBmaWxlIHdpbGwgYmUKIGV4ZWN1dGVkIGluIHRoZSBUayBuYW1lc3BhY2UsIHNvIHRoaXMgZmlsZSBpcyBub3QgdXNlZnVsIGZvciBpbXBvcnRpbmcgZnVuY3Rpb25zCi10byBiZSB1c2VkIGZyb20gSWRsZSdzIFB5dGhvbiBzaGVsbC4KK3RvIGJlIHVzZWQgZnJvbSBJRExFJ3MgUHl0aG9uIHNoZWxsLgogCiAKIENvbW1hbmQgbGluZSB1c2FnZQpAQCAtMzQ5LDMgKzUwOCw0NSBAQAogICAgdGhlIGFyZ3VtZW50cyBhcmUgc3RpbGwgYXZhaWxhYmxlIGluIGBgc3lzLmFyZ3ZgYC4KIAogCitBZGRpdGlvbmFsIGhlbHAgc291cmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSURMRSBpbmNsdWRlcyBhIGhlbHAgbWVudSBlbnRyeSBjYWxsZWQgIlB5dGhvbiBEb2NzIiB0aGF0IHdpbGwgb3BlbiB0aGUKK2V4dGVuc2l2ZSBzb3VyY2VzIG9mIGhlbHAsIGluY2x1ZGluZyB0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCBkb2NzLnB5dGhvbi5vcmcuCitTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZCBvciByZW1vdmVkIGZyb20gdGhlIGhlbHAgbWVudSBhdCBhbnkgdGltZSB1c2luZyB0aGUKK0NvbmZpZ3VyZSBJRExFIGRpYWxvZy4gU2VlIHRoZSBJRExFIGhlbHAgb3B0aW9uIGluIHRoZSBoZWxwIG1lbnUgb2YgSURMRSBmb3IKK21vcmUgaW5mb3JtYXRpb24uCisKKworT3RoZXIgcHJlZmVyZW5jZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb250IHByZWZlcmVuY2VzLCBoaWdobGlnaHRpbmcsIGtleXMsIGFuZCBnZW5lcmFsIHByZWZlcmVuY2VzIGNhbiBiZQorY2hhbmdlZCB2aWEgdGhlIENvbmZpZ3VyZSBJRExFIG1lbnUgb3B0aW9uLiAgQmUgc3VyZSB0byBub3RlIHRoYXQKK2tleXMgY2FuIGJlIHVzZXIgZGVmaW5lZCwgSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQgaW4ga2V5IHNldHMuIEluCithZGRpdGlvbiBhIHVzZXIgY2FuIGNyZWF0ZSBhIGN1c3RvbSBrZXkgc2V0IGluIHRoZSBDb25maWd1cmUgSURMRSBkaWFsb2cKK3VuZGVyIHRoZSBrZXlzIHRhYi4KKworRXh0ZW5zaW9ucworLS0tLS0tLS0tLQorCitJRExFIGNvbnRhaW5zIGFuIGV4dGVuc2lvbiBmYWNpbGl0eS4gIFNlZSB0aGUgYmVnaW5uaW5nIG9mCitjb25maWctZXh0ZW5zaW9ucy5kZWYgaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLiAgVGhlCitkZWZhdWx0IGV4dGVuc2lvbnMgYXJlIGN1cnJlbnRseToKKworKiBGb3JtYXRQYXJhZ3JhcGgKKworKiBBdXRvRXhwYW5kCisKKyogWm9vbUhlaWdodAorCisqIFNjcmlwdEJpbmRpbmcKKworKiBDYWxsVGlwcworCisqIFBhcmVuTWF0Y2gKKworKiBBdXRvQ29tcGxldGUKKworKiBDb2RlQ29udGV4dAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXAucnN0IGIvRG9jL2xpYnJhcnkvaW1wLnJzdAppbmRleCBhZjk4NDg5Li41MjUzZTY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKQEAgLTEsNiArMSw5IEBACiA6bW9kOmBpbXBgIC0tLSBBY2Nlc3MgdGhlIDpyZWY6YGltcG9ydCA8aW1wb3J0c3lzdGVtPmAgaW50ZXJuYWxzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjQKKyAgIFRoZSA6bW9kOmBpbXBgIHBhY2thZ2UgaXMgcGVuZGluZyBkZXByZWNhdGlvbiBpbiBmYXZvciBvZiA6bW9kOmBpbXBvcnRsaWJgLgorCiAuLiBtb2R1bGU6OiBpbXAKICAgIDpzeW5vcHNpczogQWNjZXNzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW1wb3J0IHN0YXRlbWVudC4KIApAQCAtMTEsMTAgKzE0LDYgQEAKIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4gIEl0IGRlZmluZXMgdGhlIGZvbGxvd2luZyBjb25zdGFudHMgYW5kIGZ1bmN0aW9uczoKIAogCi0uLiBub3RlOjoKLSAgIE5ldyBwcm9ncmFtcyBzaG91bGQgdXNlIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gdGhpcyBtb2R1bGUuCi0KLQogLi4gZnVuY3Rpb246OiBnZXRfbWFnaWMoKQogCiAgICAuLiBpbmRleDo6IHBhaXI6IGZpbGU7IGJ5dGUtY29kZQpAQCAtMjIsNiArMjEsOSBAQAogICAgUmV0dXJuIHRoZSBtYWdpYyBzdHJpbmcgdmFsdWUgdXNlZCB0byByZWNvZ25pemUgYnl0ZS1jb21waWxlZCBjb2RlIGZpbGVzCiAgICAoOmZpbGU6YC5weWNgIGZpbGVzKS4gIChUaGlzIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggUHl0aG9uIHZlcnNpb24uKQogCisgICAuLiBkZXByZWNhdGVkOjogMy40CisgICAgICAgVXNlIDphdHRyOmBpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVJgIGluc3RlYWQuCisKIAogLi4gZnVuY3Rpb246OiBnZXRfc3VmZml4ZXMoKQogCkBAIC0xMDEsOCArMTAzLDEwIEBACiAgICB1c2luZyBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgc3RhdGVtZW50LgogCiAgICAuLiBkZXByZWNhdGVkOjogMy4zCi0gICAgICBVbm5lZWRlZCBhcyBsb2FkZXJzIHNob3VsZCBiZSB1c2VkIHRvIGxvYWQgbW9kdWxlcyBhbmQKLSAgICAgIDpmdW5jOmBmaW5kX21vZHVsZWAgaXMgZGVwcmVjYXRlZC4KKyAgICAgIElmIHByZXZpb3VzbHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDpmdW5jOmBpbXAuZmluZF9tb2R1bGVgIHRoZW4KKyAgICAgIGNhbGwgYGBsb2FkX21vZHVsZSgpYGAgb24gdGhlIHJldHVybmVkIGxvYWRlci4gSWYgeW91IHdpc2ggdG8gbG9hZCBhCisgICAgICBtb2R1bGUgZnJvbSBhIHNwZWNpZmljIGZpbGUsIHRoZW4gdXNlIG9uZSBvZiB0aGUgZmlsZS1iYXNlZCBsb2FkZXJzIGZvdW5kCisgICAgICBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YC4KIAogCiAuLiBmdW5jdGlvbjo6IG5ld19tb2R1bGUobmFtZSkKQEAgLTExMCw2ICsxMTQsOSBAQAogICAgUmV0dXJuIGEgbmV3IGVtcHR5IG1vZHVsZSBvYmplY3QgY2FsbGVkICpuYW1lKi4gIFRoaXMgb2JqZWN0IGlzICpub3QqIGluc2VydGVkCiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKKyAgICAgIFVzZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIGluc3RlYWQuCisKIAogLi4gZnVuY3Rpb246OiByZWxvYWQobW9kdWxlKQogCkBAIC0xNzIsNiArMTc5LDkgQEAKICAgIHRoZSBjbGFzcyBkb2VzIG5vdCBhZmZlY3QgdGhlIG1ldGhvZCBkZWZpbml0aW9ucyBvZiB0aGUgaW5zdGFuY2VzIC0tLSB0aGV5CiAgICBjb250aW51ZSB0byB1c2UgdGhlIG9sZCBjbGFzcyBkZWZpbml0aW9uLiAgVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgZGVyaXZlZCBjbGFzc2VzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy40CisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi5yZWxvYWRgIGluc3RlYWQuCisKIAogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIGNvbnZlbmllbmNlcyBmb3IgaGFuZGxpbmcgOnBlcDpgMzE0N2AgYnl0ZS1jb21waWxlZAogZmlsZSBwYXRocy4KQEAgLTE5Nyw2ICsyMDcsOSBAQAogICAgICAgSWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIGBgTm9uZWBgLCB0aGVuCiAgICAgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKKyAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2VgIGluc3RlYWQuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCkBAIC0yMTIsMTQgKzIyNSwxNyBAQAogICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2hlbgogICAgICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLgogCisgICAuLiBkZXByZWNhdGVkOjogMy40CisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlYCBpbnN0ZWFkLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3RhZygpCiAKICAgIFJldHVybiB0aGUgOnBlcDpgMzE0N2AgbWFnaWMgdGFnIHN0cmluZyBtYXRjaGluZyB0aGlzIHZlcnNpb24gb2YgUHl0aG9uJ3MKICAgIG1hZ2ljIG51bWJlciwgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGdldF9tYWdpY2AuCiAKLSAgIC4uIG5vdGU6OgotICAgICAgWW91IG1heSB1c2UgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGRpcmVjdGx5IHN0YXJ0aW5nCisgICAuLiBkZXByZWNhdGVkOjogMy40CisgICAgICBVc2UgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGRpcmVjdGx5IHN0YXJ0aW5nCiAgICAgICBpbiBQeXRob24gMy4zLgogCiAKQEAgLTI0Nyw2ICsyNjMsOCBAQAogICAgdGhlIG1vc3QgcGFydC4gIEEgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGtlcHQgZm9yIHNvbWUgY3JpdGljYWwgdGFza3MsCiAgICBzdWNoIGFzIGluaXRpYWxpemluZyB0aGUgcGVyLW1vZHVsZSBsb2Nrcy4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNAorCiAKIC4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKIApAQCAtMjY1LDYgKzI4Myw4IEBACiAgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKICAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgogCisuLiBkZXByZWNhdGVkOjogMy40CisKIAogLi4gZnVuY3Rpb246OiByZWxlYXNlX2xvY2soKQogCkBAIC0yNzYsNiArMjk2LDggQEAKICAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAogICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjQKKwogCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3aXRoIGludGVnZXIgdmFsdWVzLCBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLCBhcmUgdXNlZAogdG8gaW5kaWNhdGUgdGhlIHNlYXJjaCByZXN1bHQgb2YgOmZ1bmM6YGZpbmRfbW9kdWxlYC4KQEAgLTM0MSw2ICszNjMsOSBAQAogICAgICAgYGBOb25lYGAgaXMgaW5zZXJ0ZWQgaW50byBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgaW5zdGVhZCBvZiBhbgogICAgICAgaW5zdGFuY2Ugb2YgOmNsYXNzOmBOdWxsSW1wb3J0ZXJgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy40CisgICAgICBJbnNlcnQgYGBOb25lYGAgaW50byBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgaW5zdGVhZC4KKwogCiAuLiBfZXhhbXBsZXMtaW1wOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAppbmRleCBlZmQwMjdiLi4xYzBlZmY3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKQEAgLTkwLDcgKzkwLDcgQEAKIAogICAgRmluZCB0aGUgbG9hZGVyIGZvciBhIG1vZHVsZSwgb3B0aW9uYWxseSB3aXRoaW4gdGhlIHNwZWNpZmllZCAqcGF0aCouIElmIHRoZQogICAgbW9kdWxlIGlzIGluIDphdHRyOmBzeXMubW9kdWxlc2AsIHRoZW4gYGBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fYGAgaXMKLSAgIHJldHVybmVkICh1bmxlc3MgdGhlIGxvYWRlciB3b3VsZCBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQorICAgcmV0dXJuZWQgKHVubGVzcyB0aGUgbG9hZGVyIHdvdWxkIGJlIGBgTm9uZWBgIG9yIGlzIG5vdCBzZXQsIGluIHdoaWNoIGNhc2UKICAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCkuIE90aGVyd2lzZSBhIHNlYXJjaCB1c2luZyA6YXR0cjpgc3lzLm1ldGFfcGF0aGAKICAgIGlzIGRvbmUuIGBgTm9uZWBgIGlzIHJldHVybmVkIGlmIG5vIGxvYWRlciBpcyBmb3VuZC4KIApAQCAtOTksNiArOTksMTIgQEAKICAgIHdpbGwgbmVlZCB0byBpbXBvcnQgYWxsIHBhcmVudCBwYWNrYWdlcyBvZiB0aGUgc3VibW9kdWxlIGFuZCB1c2UgdGhlIGNvcnJlY3QKICAgIGFyZ3VtZW50IHRvICpwYXRoKi4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBJZiBgYF9fbG9hZGVyX19gYCBpcyBub3Qgc2V0LCByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwganVzdCBsaWtlIHdoZW4gdGhlCisgICAgICBhdHRyaWJ1dGUgaXMgc2V0IHRvIGBgTm9uZWBgLgorCiAuLiBmdW5jdGlvbjo6IGludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgSW52YWxpZGF0ZSB0aGUgaW50ZXJuYWwgY2FjaGVzIG9mIGZpbmRlcnMgc3RvcmVkIGF0CkBAIC0xMDksNiArMTE1LDczIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBmdW5jdGlvbjo6IHJlbG9hZChtb2R1bGUpCisKKyAgIFJlbG9hZCBhIHByZXZpb3VzbHkgaW1wb3J0ZWQgKm1vZHVsZSouICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG1vZHVsZSBvYmplY3QsCisgICBzbyBpdCBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91CisgICBoYXZlIGVkaXRlZCB0aGUgbW9kdWxlIHNvdXJjZSBmaWxlIHVzaW5nIGFuIGV4dGVybmFsIGVkaXRvciBhbmQgd2FudCB0byB0cnkKKyAgIG91dCB0aGUgbmV3IHZlcnNpb24gd2l0aG91dCBsZWF2aW5nIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGUgcmV0dXJuIHZhbHVlCisgICBpcyB0aGUgbW9kdWxlIG9iamVjdCAodGhlIHNhbWUgYXMgdGhlICptb2R1bGUqIGFyZ3VtZW50KS4KKworICAgV2hlbiA6ZnVuYzpgLnJlbG9hZGAgaXMgZXhlY3V0ZWQ6CisKKyAgICogUHl0aG9uIG1vZHVsZXMnIGNvZGUgaXMgcmVjb21waWxlZCBhbmQgdGhlIG1vZHVsZS1sZXZlbCBjb2RlIHJlLWV4ZWN1dGVkLAorICAgICBkZWZpbmluZyBhIG5ldyBzZXQgb2Ygb2JqZWN0cyB3aGljaCBhcmUgYm91bmQgdG8gbmFtZXMgaW4gdGhlIG1vZHVsZSdzCisgICAgIGRpY3Rpb25hcnkgYnkgcmV1c2luZyB0aGUgOnRlcm06YGxvYWRlcmAgd2hpY2ggb3JpZ2luYWxseSBsb2FkZWQgdGhlCisgICAgIG1vZHVsZS4gIFRoZSBgYGluaXRgYCBmdW5jdGlvbiBvZiBleHRlbnNpb24gbW9kdWxlcyBpcyBub3QgY2FsbGVkIGEgc2Vjb25kCisgICAgIHRpbWUuCisKKyAgICogQXMgd2l0aCBhbGwgb3RoZXIgb2JqZWN0cyBpbiBQeXRob24gdGhlIG9sZCBvYmplY3RzIGFyZSBvbmx5IHJlY2xhaW1lZAorICAgICBhZnRlciB0aGVpciByZWZlcmVuY2UgY291bnRzIGRyb3AgdG8gemVyby4KKworICAgKiBUaGUgbmFtZXMgaW4gdGhlIG1vZHVsZSBuYW1lc3BhY2UgYXJlIHVwZGF0ZWQgdG8gcG9pbnQgdG8gYW55IG5ldyBvcgorICAgICBjaGFuZ2VkIG9iamVjdHMuCisKKyAgICogT3RoZXIgcmVmZXJlbmNlcyB0byB0aGUgb2xkIG9iamVjdHMgKHN1Y2ggYXMgbmFtZXMgZXh0ZXJuYWwgdG8gdGhlIG1vZHVsZSkgYXJlCisgICAgIG5vdCByZWJvdW5kIHRvIHJlZmVyIHRvIHRoZSBuZXcgb2JqZWN0cyBhbmQgbXVzdCBiZSB1cGRhdGVkIGluIGVhY2ggbmFtZXNwYWNlCisgICAgIHdoZXJlIHRoZXkgb2NjdXIgaWYgdGhhdCBpcyBkZXNpcmVkLgorCisgICBUaGVyZSBhcmUgYSBudW1iZXIgb2Ygb3RoZXIgY2F2ZWF0czoKKworICAgSWYgYSBtb2R1bGUgaXMgc3ludGFjdGljYWxseSBjb3JyZWN0IGJ1dCBpdHMgaW5pdGlhbGl6YXRpb24gZmFpbHMsIHRoZSBmaXJzdAorICAgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZvciBpdCBkb2VzIG5vdCBiaW5kIGl0cyBuYW1lIGxvY2FsbHksIGJ1dCBkb2VzCisgICBzdG9yZSBhIChwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQpIG1vZHVsZSBvYmplY3QgaW4gYGBzeXMubW9kdWxlc2BgLiAgVG8gcmVsb2FkCisgICB0aGUgbW9kdWxlIHlvdSBtdXN0IGZpcnN0IDprZXl3b3JkOmBpbXBvcnRgIGl0IGFnYWluICh0aGlzIHdpbGwgYmluZCB0aGUgbmFtZQorICAgdG8gdGhlIHBhcnRpYWxseSBpbml0aWFsaXplZCBtb2R1bGUgb2JqZWN0KSBiZWZvcmUgeW91IGNhbiA6ZnVuYzpgcmVsb2FkYCBpdC4KKworICAgV2hlbiBhIG1vZHVsZSBpcyByZWxvYWRlZCwgaXRzIGRpY3Rpb25hcnkgKGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIGdsb2JhbAorICAgdmFyaWFibGVzKSBpcyByZXRhaW5lZC4gIFJlZGVmaW5pdGlvbnMgb2YgbmFtZXMgd2lsbCBvdmVycmlkZSB0aGUgb2xkCisgICBkZWZpbml0aW9ucywgc28gdGhpcyBpcyBnZW5lcmFsbHkgbm90IGEgcHJvYmxlbS4gIElmIHRoZSBuZXcgdmVyc2lvbiBvZiBhCisgICBtb2R1bGUgZG9lcyBub3QgZGVmaW5lIGEgbmFtZSB0aGF0IHdhcyBkZWZpbmVkIGJ5IHRoZSBvbGQgdmVyc2lvbiwgdGhlIG9sZAorICAgZGVmaW5pdGlvbiByZW1haW5zLiAgVGhpcyBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIHRoZSBtb2R1bGUncyBhZHZhbnRhZ2UgaWYgaXQKKyAgIG1haW50YWlucyBhIGdsb2JhbCB0YWJsZSBvciBjYWNoZSBvZiBvYmplY3RzIC0tLSB3aXRoIGEgOmtleXdvcmQ6YHRyeWAKKyAgIHN0YXRlbWVudCBpdCBjYW4gdGVzdCBmb3IgdGhlIHRhYmxlJ3MgcHJlc2VuY2UgYW5kIHNraXAgaXRzIGluaXRpYWxpemF0aW9uIGlmCisgICBkZXNpcmVkOjoKKworICAgICAgdHJ5OgorICAgICAgICAgIGNhY2hlCisgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgIGNhY2hlID0ge30KKworICAgSXQgaXMgbGVnYWwgdGhvdWdoIGdlbmVyYWxseSBub3QgdmVyeSB1c2VmdWwgdG8gcmVsb2FkIGJ1aWx0LWluIG9yCisgICBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyAodGhpcyBpcyBub3QgdHJ1ZSBmb3IgZS5nLiA6bW9kOmBzeXNgLAorICAgOm1vZDpgX19tYWluX19gLCA6bW9kOmBfX2J1aWx0aW5fX2AgYW5kIG90aGVyIGtleSBtb2R1bGVzIHdoZXJlIHJlbG9hZGluZyBpcworICAgZnJvd25lZCB1cG9uKS4gSW4gbWFueSBjYXNlcywgaG93ZXZlciwgZXh0ZW5zaW9uIG1vZHVsZXMgYXJlIG5vdCBkZXNpZ25lZCB0bworICAgYmUgaW5pdGlhbGl6ZWQgbW9yZSB0aGFuIG9uY2UsIGFuZCBtYXkgZmFpbCBpbiBhcmJpdHJhcnkgd2F5cyB3aGVuIHJlbG9hZGVkLgorCisgICBJZiBhIG1vZHVsZSBpbXBvcnRzIG9iamVjdHMgZnJvbSBhbm90aGVyIG1vZHVsZSB1c2luZyA6a2V5d29yZDpgZnJvbWAgLi4uCisgICA6a2V5d29yZDpgaW1wb3J0YCAuLi4sIGNhbGxpbmcgOmZ1bmM6YHJlbG9hZGAgZm9yIHRoZSBvdGhlciBtb2R1bGUgZG9lcyBub3QKKyAgIHJlZGVmaW5lIHRoZSBvYmplY3RzIGltcG9ydGVkIGZyb20gaXQgLS0tIG9uZSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8KKyAgIHJlLWV4ZWN1dGUgdGhlIDprZXl3b3JkOmBmcm9tYCBzdGF0ZW1lbnQsIGFub3RoZXIgaXMgdG8gdXNlIDprZXl3b3JkOmBpbXBvcnRgCisgICBhbmQgcXVhbGlmaWVkIG5hbWVzICgqbW9kdWxlLm5hbWUqKSBpbnN0ZWFkLgorCisgICBJZiBhIG1vZHVsZSBpbnN0YW50aWF0ZXMgaW5zdGFuY2VzIG9mIGEgY2xhc3MsIHJlbG9hZGluZyB0aGUgbW9kdWxlIHRoYXQKKyAgIGRlZmluZXMgdGhlIGNsYXNzIGRvZXMgbm90IGFmZmVjdCB0aGUgbWV0aG9kIGRlZmluaXRpb25zIG9mIHRoZSBpbnN0YW5jZXMgLS0tCisgICB0aGV5IGNvbnRpbnVlIHRvIHVzZSB0aGUgb2xkIGNsYXNzIGRlZmluaXRpb24uICBUaGUgc2FtZSBpcyB0cnVlIGZvciBkZXJpdmVkCisgICBjbGFzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKwogCiA6bW9kOmBpbXBvcnRsaWIuYWJjYCAtLSBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgcmVsYXRlZCB0byBpbXBvcnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTMyLDggKzIwNSw2IEBACiAgICAgICAgICAgICAgICArLS0gRXhlY3V0aW9uTG9hZGVyIC0tKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBGaWxlTG9hZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFNvdXJjZUxvYWRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5TG9hZGVyIChkZXByZWNhdGVkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5UHljTG9hZGVyIChkZXByZWNhdGVkKQogCiAKIC4uIGNsYXNzOjogRmluZGVyCkBAIC0xNDksNiArMjIwLDEwIEBACiAgICAgICBtb2R1bGUuICBPcmlnaW5hbGx5IHNwZWNpZmllZCBpbiA6cGVwOmAzMDJgLCB0aGlzIG1ldGhvZCB3YXMgbWVhbnQKICAgICAgIGZvciB1c2UgaW4gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGFuZCBpbiB0aGUgcGF0aC1iYXNlZCBpbXBvcnQgc3Vic3lzdGVtLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgICAgUmV0dXJucyBgYE5vbmVgYCB3aGVuIGNhbGxlZCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgICAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAKIC4uIGNsYXNzOjogTWV0YVBhdGhGaW5kZXIKIApAQCAtMTY1LDEyICsyNDAsMTkgQEAKICAgICAgIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUgcGFyZW50CiAgICAgICBwYWNrYWdlLiBJZiBhIGxvYWRlciBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgICAgUmV0dXJucyBgYE5vbmVgYCB3aGVuIGNhbGxlZCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgICAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAgICAuLiBtZXRob2Q6OiBpbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICAgIEFuIG9wdGlvbmFsIG1ldGhvZCB3aGljaCwgd2hlbiBjYWxsZWQsIHNob3VsZCBpbnZhbGlkYXRlIGFueSBpbnRlcm5hbAogICAgICAgY2FjaGUgdXNlZCBieSB0aGUgZmluZGVyLiBVc2VkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgCiAgICAgICB3aGVuIGludmFsaWRhdGluZyB0aGUgY2FjaGVzIG9mIGFsbCBmaW5kZXJzIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgIFJldHVybnMgYGBOb25lYGAgd2hlbiBjYWxsZWQgaW5zdGVhZCBvZiBgYE5vdEltcGxlbWVudGVkYGAuCisKIAogLi4gY2xhc3M6OiBQYXRoRW50cnlGaW5kZXIKIApAQCAtMTc4LDcgKzI2MCw3IEBACiAgICBpdCBiZWFycyBzb21lIHNpbWlsYXJpdGllcyB0byA6Y2xhc3M6YE1ldGFQYXRoRmluZGVyYCwgYGBQYXRoRW50cnlGaW5kZXJgYAogICAgaXMgbWVhbnQgZm9yIHVzZSBvbmx5IHdpdGhpbiB0aGUgcGF0aC1iYXNlZCBpbXBvcnQgc3Vic3lzdGVtIHByb3ZpZGVkCiAgICBieSA6Y2xhc3M6YFBhdGhGaW5kZXJgLiBUaGlzIEFCQyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgRmluZGVyYCBmb3IKLSAgIGNvbXBhdGliaWxpdHkuCisgICBjb21wYXRpYmlsaXR5IHJlYXNvbnMgb25seS4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKQEAgLTE5MCw5ICsyNzIsMTIgQEAKICAgICAgIHBhY2thZ2UuIFRoZSBsb2FkZXIgbWF5IGJlIGBgTm9uZWBgIHdoaWxlIHNwZWNpZnlpbmcgYGBwb3J0aW9uYGAgdG8KICAgICAgIHNpZ25pZnkgdGhlIGNvbnRyaWJ1dGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gbG9jYXRpb25zIHRvIGEgbmFtZXNwYWNlCiAgICAgICBwYWNrYWdlLiBBbiBlbXB0eSBsaXN0IGNhbiBiZSB1c2VkIGZvciBgYHBvcnRpb25gYCB0byBzaWduaWZ5IHRoZSBsb2FkZXIKLSAgICAgIGlzIG5vdCBwYXJ0IG9mIGEgcGFja2FnZS4gSWYgYGBsb2FkZXJgYCBpcyBgYE5vbmVgYCBhbmQgYGBwb3J0aW9uYGAgaXMKLSAgICAgIHRoZSBlbXB0eSBsaXN0IHRoZW4gbm8gbG9hZGVyIG9yIGxvY2F0aW9uIGZvciBhIG5hbWVzcGFjZSBwYWNrYWdlIHdlcmUKLSAgICAgIGZvdW5kIChpLmUuIGZhaWx1cmUgdG8gZmluZCBhbnl0aGluZyBmb3IgdGhlIG1vZHVsZSkuCisgICAgICBpcyBub3QgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiBJZiBgYGxvYWRlcmBgIGlzIGBgTm9uZWBgIGFuZAorICAgICAgYGBwb3J0aW9uYGAgaXMgdGhlIGVtcHR5IGxpc3QgdGhlbiBubyBsb2FkZXIgb3IgbG9jYXRpb24gZm9yIGEgbmFtZXNwYWNlCisgICAgICBwYWNrYWdlIHdlcmUgZm91bmQgKGkuZS4gZmFpbHVyZSB0byBmaW5kIGFueXRoaW5nIGZvciB0aGUgbW9kdWxlKS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgIFJldHVybnMgYGAoTm9uZSwgW10pYGAgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSkKIApAQCAtMjI0LDEyICszMDksMTEgQEAKICAgICAgICAgZnJvbSB0aGUgaW1wb3J0LiBJZiB0aGUgbG9hZGVyIGluc2VydGVkIGEgbW9kdWxlIGFuZCB0aGUgbG9hZCBmYWlscywgaXQKICAgICAgICAgbXVzdCBiZSByZW1vdmVkIGJ5IHRoZSBsb2FkZXIgZnJvbSA6ZGF0YTpgc3lzLm1vZHVsZXNgOyBtb2R1bGVzIGFscmVhZHkKICAgICAgICAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBiZWZvcmUgdGhlIGxvYWRlciBiZWdhbiBleGVjdXRpb24gc2hvdWxkIGJlIGxlZnQKLSAgICAgICAgYWxvbmUuIFRoZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXJgIGRlY29yYXRvciBoYW5kbGVzCi0gICAgICAgIGFsbCBvZiB0aGVzZSBkZXRhaWxzLgorICAgICAgICBhbG9uZSAoc2VlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5tb2R1bGVfdG9fbG9hZGApLgogCiAgICAgICAgIFRoZSBsb2FkZXIgc2hvdWxkIHNldCBzZXZlcmFsIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZS4KICAgICAgICAgKE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIGF0dHJpYnV0ZXMgY2FuIGNoYW5nZSB3aGVuIGEgbW9kdWxlIGlzCi0gICAgICAgIHJlbG9hZGVkLikKKyAgICAgICAgcmVsb2FkZWQ7IHNlZSA6bWV0aDpgaW5pdF9tb2R1bGVfYXR0cnNgKToKIAogICAgICAgICAtIDphdHRyOmBfX25hbWVfX2AKICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuCkBAIC0yNDksMjAgKzMzMywzOSBAQAogICAgICAgICAtIDphdHRyOmBfX3BhY2thZ2VfX2AKICAgICAgICAgICAgIFRoZSBwYXJlbnQgcGFja2FnZSBmb3IgdGhlIG1vZHVsZS9wYWNrYWdlLiBJZiB0aGUgbW9kdWxlIGlzCiAgICAgICAgICAgICB0b3AtbGV2ZWwgdGhlbiBpdCBoYXMgYSB2YWx1ZSBvZiB0aGUgZW1wdHkgc3RyaW5nLiBUaGUKLSAgICAgICAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5zZXRfcGFja2FnZWAgZGVjb3JhdG9yIGNhbiBoYW5kbGUgdGhlIGRldGFpbHMKLSAgICAgICAgICAgIGZvciA6YXR0cjpgX19wYWNrYWdlX19gLgorICAgICAgICAgICAgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyYCBkZWNvcmF0b3IgY2FuIGhhbmRsZSB0aGUKKyAgICAgICAgICAgIGRldGFpbHMgZm9yIDphdHRyOmBfX3BhY2thZ2VfX2AuCiAKICAgICAgICAgLSA6YXR0cjpgX19sb2FkZXJfX2AKLSAgICAgICAgICAgIFRoZSBsb2FkZXIgdXNlZCB0byBsb2FkIHRoZSBtb2R1bGUuCi0gICAgICAgICAgICAoVGhpcyBpcyBub3Qgc2V0IGJ5IHRoZSBidWlsdC1pbiBpbXBvcnQgbWFjaGluZXJ5LAotICAgICAgICAgICAgYnV0IGl0IHNob3VsZCBiZSBzZXQgd2hlbmV2ZXIgYSA6dGVybTpgbG9hZGVyYCBpcyB1c2VkLikKKyAgICAgICAgICAgIFRoZSBsb2FkZXIgdXNlZCB0byBsb2FkIHRoZSBtb2R1bGUuIFRoZQorICAgICAgICAgICAgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyYCBkZWNvcmF0b3IgY2FuIGhhbmRsZSB0aGUKKyAgICAgICAgICAgIGRldGFpbHMgZm9yIDphdHRyOmBfX3BhY2thZ2VfX2AuCisKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgICAgUmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIHdoZW4gY2FsbGVkIGluc3RlYWQgb2YKKyAgICAgICAgICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKICAgICAuLiBtZXRob2Q6OiBtb2R1bGVfcmVwcihtb2R1bGUpCiAKLSAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUKLSAgICAgICAgZ2l2ZW4gbW9kdWxlJ3MgcmVwciwgYXMgYSBzdHJpbmcuCisgICAgICAgIEFuIG9wdGlvbmFsIG1ldGhvZCB3aGljaCB3aGVuIGltcGxlbWVudGVkIGNhbGN1bGF0ZXMgYW5kIHJldHVybnMgdGhlCisgICAgICAgIGdpdmVuIG1vZHVsZSdzIHJlcHIsIGFzIGEgc3RyaW5nLiBUaGUgbW9kdWxlIHR5cGUncyBkZWZhdWx0IHJlcHIoKSB3aWxsCisgICAgICAgIHVzZSB0aGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kIGFzIGFwcHJvcHJpYXRlLgogCi0gICAgICAgIC4uIHZlcnNpb25hZGRlZDogMy4zCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICAgIE1hZGUgb3B0aW9uYWwgaW5zdGVhZCBvZiBhbiBhYnN0cmFjdG1ldGhvZC4KKworICAgIC4uIG1ldGhvZDo6IGluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKworICAgICAgICBTZXQgdGhlIDphdHRyOmBfX2xvYWRlcl9fYCBhdHRyaWJ1dGUgb24gdGhlIG1vZHVsZS4KKworICAgICAgICBTdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgc2hvdWxkIHNldCB3aGF0ZXZlciBhcHByb3ByaWF0ZQorICAgICAgICBhdHRyaWJ1dGVzIGl0IGNhbiwgZ2V0dGluZyB0aGUgbW9kdWxlJ3MgbmFtZSBmcm9tIDphdHRyOmBfX25hbWVfX2Agd2hlbgorICAgICAgICBuZWVkZWQuIEFsbCB2YWx1ZXMgc2hvdWxkIGFsc28gYmUgb3ZlcnJpZGRlbiBzbyB0aGF0IHJlbG9hZGluZyB3b3JrcyBhcworICAgICAgICBleHBlY3RlZC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCiAuLiBjbGFzczo6IFJlc291cmNlTG9hZGVyCkBAIC0yODEsNiArMzg0LDkgQEAKICAgICAgICAgYmUgZm91bmQuIFRoZSAqcGF0aCogaXMgZXhwZWN0ZWQgdG8gYmUgY29uc3RydWN0ZWQgdXNpbmcgYSBtb2R1bGUncwogICAgICAgICA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZSBvciBhbiBpdGVtIGZyb20gYSBwYWNrYWdlJ3MgOmF0dHI6YF9fcGF0aF9fYC4KIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgICAgICBSYWlzZXMgOmV4YzpgSU9FcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogCiAuLiBjbGFzczo6IEluc3BlY3RMb2FkZXIKIApAQCAtMjg5LDE0ICszOTUsMjEgQEAKIAogICAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQogCi0gICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0byByZXR1cm4gdGhlIDpjbGFzczpgY29kZWAgb2JqZWN0IGZvciBhIG1vZHVsZS4KLSAgICAgICAgYGBOb25lYGAgaXMgcmV0dXJuZWQgaWYgdGhlIG1vZHVsZSBkb2VzIG5vdCBoYXZlIGEgY29kZSBvYmplY3QKKyAgICAgICAgUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBmb3IgYSBtb2R1bGUuCisgICAgICAgIGBgTm9uZWBgIHNob3VsZCBiZSByZXR1cm5lZCBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGhhdmUgYSBjb2RlIG9iamVjdAogICAgICAgICAoZS5nLiBidWlsdC1pbiBtb2R1bGUpLiAgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZCBpZiBsb2FkZXIgY2Fubm90CiAgICAgICAgIGZpbmQgdGhlIHJlcXVlc3RlZCBtb2R1bGUuCiAKKyAgICAgICAgLi4gbm90ZTo6CisgICAgICAgICAgIFdoaWxlIHRoZSBtZXRob2QgaGFzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgaXQgaXMgc3VnZ2VzdGVkIHRoYXQKKyAgICAgICAgICAgaXQgYmUgb3ZlcnJpZGRlbiBpZiBwb3NzaWJsZSBmb3IgcGVyZm9ybWFuY2UuCisKICAgICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmdldF9zb3VyY2UgbWV0aG9kCiAKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgICAgTm8gbG9uZ2VyIGFic3RyYWN0IGFuZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkLgorCiAgICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKIAogICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgdG8gcmV0dXJuIHRoZSBzb3VyY2Ugb2YgYSBtb2R1bGUuIEl0IGlzIHJldHVybmVkIGFzCkBAIC0zMDUsMTIgKzQxOCw0MSBAQAogICAgICAgICBpZiBubyBzb3VyY2UgaXMgYXZhaWxhYmxlIChlLmcuIGEgYnVpbHQtaW4gbW9kdWxlKS4gUmFpc2VzCiAgICAgICAgIDpleGM6YEltcG9ydEVycm9yYCBpZiB0aGUgbG9hZGVyIGNhbm5vdCBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkLgogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICAgIFJhaXNlcyA6ZXhjOmBJbXBvcnRFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKICAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHRvIHJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIGEKICAgICAgICAgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgICA6dGVybTpgbG9hZGVyYCBjYW5ub3QgZmluZCB0aGUgbW9kdWxlLgogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICAgIFJhaXNlcyA6ZXhjOmBJbXBvcnRFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworICAgIC4uIG1ldGhvZDo6IHNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGg9JzxzdHJpbmc+JykKKworICAgICAgICBDcmVhdGUgYSBjb2RlIG9iamVjdCBmcm9tIFB5dGhvbiBzb3VyY2UuCisKKyAgICAgICAgVGhlICpkYXRhKiBhcmd1bWVudCBjYW4gYmUgd2hhdGV2ZXIgdGhlIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbgorICAgICAgICBzdXBwb3J0cyAoaS5lLiBzdHJpbmcgb3IgYnl0ZXMpLiBUaGUgKnBhdGgqIGFyZ3VtZW50IHNob3VsZCBiZQorICAgICAgICB0aGUgInBhdGgiIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBvcmlnaW5hdGVkIGZyb20sIHdoaWNoIGNhbiBiZSBhbgorICAgICAgICBhYnN0cmFjdCBjb25jZXB0IChlLmcuIGxvY2F0aW9uIGluIGEgemlwIGZpbGUpLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisgICAgLi4gbWV0aG9kOjogaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorCisgICAgICAgIFNldCB0aGUgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgYW5kIDphdHRyOmBfX3BhdGhfX2AgYXR0cmlidXRlIHRvCisgICAgICAgIHRoZSBlbXB0eSBsaXN0IGlmIGFwcHJvcHJpYXRlIGFsb25nIHdpdGggd2hhdAorICAgICAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnNgIHNldHMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKyAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgTG9hZGVyLmxvYWRfbW9kdWxlYC4KKwogCiAuLiBjbGFzczo6IEV4ZWN1dGlvbkxvYWRlcgogCkBAIC0zMjgsNiArNDcwLDE4IEBACiAgICAgICAgIHRoZSBzb3VyY2UgZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgYnl0ZWNvZGUgd2FzIHVzZWQgdG8gbG9hZCB0aGUKICAgICAgICAgbW9kdWxlLgogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICAgIFJhaXNlcyA6ZXhjOmBJbXBvcnRFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworICAgIC4uIG1ldGhvZDo6IGluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKworICAgICAgICBTZXQgOmF0dHI6YF9fZmlsZV9fYCBhbmQgaWYgaW5pdGlhbGl6aW5nIGEgcGFja2FnZSB0aGVuIHNldAorICAgICAgICA6YXR0cjpgX19wYXRoX19gIHRvIGBgW29zLnBhdGguZGlybmFtZShfX2ZpbGVfXyldYGAgYWxvbmcgd2l0aAorICAgICAgICBhbGwgYXR0cmlidXRlcyBzZXQgYnkKKyAgICAgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5pbml0X21vZHVsZV9hdHRyc2AuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIAogLi4gY2xhc3M6OiBGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC0zNTgsNyArNTEyLDcgQEAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aCkKIAotICAgICAgUmV0dXJucyB0aGUgb3BlbiwgYmluYXJ5IGZpbGUgZm9yICpwYXRoKi4KKyAgICAgIFJlYWRzICpwYXRoKiBhcyBhIGJpbmFyeSBmaWxlIGFuZCByZXR1cm5zIHRoZSBieXRlcyBmcm9tIGl0LgogCiAKIC4uIGNsYXNzOjogU291cmNlTG9hZGVyCkBAIC0zNzMsNyArNTI3LDggQEAKICAgICAgICAgICBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQuCiAKICAgICBUaGUgYWJzdHJhY3QgbWV0aG9kcyBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgYXJlIHRvIGFkZCBvcHRpb25hbCBieXRlY29kZQotICAgIGZpbGUgc3VwcG9ydC4gTm90IGltcGxlbWVudGluZyB0aGVzZSBvcHRpb25hbCBtZXRob2RzIGNhdXNlcyB0aGUgbG9hZGVyIHRvCisgICAgZmlsZSBzdXBwb3J0LiBOb3QgaW1wbGVtZW50aW5nIHRoZXNlIG9wdGlvbmFsIG1ldGhvZHMgKG9yIGNhdXNpbmcgdGhlbSB0bworICAgIHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgKSBjYXVzZXMgdGhlIGxvYWRlciB0bwogICAgIG9ubHkgd29yayB3aXRoIHNvdXJjZSBjb2RlLiBJbXBsZW1lbnRpbmcgdGhlIG1ldGhvZHMgYWxsb3dzIHRoZSBsb2FkZXIgdG8KICAgICB3b3JrIHdpdGggc291cmNlICphbmQqIGJ5dGVjb2RlIGZpbGVzOyBpdCBkb2VzIG5vdCBhbGxvdyBmb3IgKnNvdXJjZWxlc3MqCiAgICAgbG9hZGluZyB3aGVyZSBvbmx5IGJ5dGVjb2RlIGlzIHByb3ZpZGVkLiAgQnl0ZWNvZGUgZmlsZXMgYXJlIGFuCkBAIC0zOTAsMTAgKzU0NSwxMyBAQAogICAgICAgICAtIGBgJ3NpemUnYGAgKG9wdGlvbmFsKTogdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgogCiAgICAgICAgIEFueSBvdGhlciBrZXlzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLCB0byBhbGxvdyBmb3IgZnV0dXJlCi0gICAgICAgIGV4dGVuc2lvbnMuCisgICAgICAgIGV4dGVuc2lvbnMuIElmIHRoZSBwYXRoIGNhbm5vdCBiZSBoYW5kbGVkLCA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCiAKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgICAgUmFpc2UgOmV4YzpgSU9FcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogICAgIC4uIG1ldGhvZDo6IHBhdGhfbXRpbWUocGF0aCkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZQpAQCAtNDAyLDcgKzU2MCwxMCBAQAogICAgICAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIDptZXRoOmBwYXRoX3N0YXRzYC4gIFlvdSBkb24ndAogICAgICAgICAgICBoYXZlIHRvIGltcGxlbWVudCBpdCwgYnV0IGl0IGlzIHN0aWxsIGF2YWlsYWJsZSBmb3IgY29tcGF0aWJpbGl0eQotICAgICAgICAgICBwdXJwb3Nlcy4KKyAgICAgICAgICAgcHVycG9zZXMuIFJhaXNlIDpleGM6YElPRXJyb3JgIGlmIHRoZSBwYXRoIGNhbm5vdCBiZSBoYW5kbGVkLgorCisgICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgICAgICBSYWlzZSA6ZXhjOmBJT0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCiAgICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKIApAQCAtNDE0LDYgKzU3NSw5IEBACiAgICAgICAgICg6YXR0cjpgZXJybm8uRUFDQ0VTYC86ZXhjOmBQZXJtaXNzaW9uRXJyb3JgKSwgZG8gbm90IHByb3BhZ2F0ZSB0aGUKICAgICAgICAgZXhjZXB0aW9uLgogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICAgIE5vIGxvbmdlciByYWlzZXMgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2hlbiBjYWxsZWQuCisKICAgICAuLiBtZXRob2Q6OiBnZXRfY29kZShmdWxsbmFtZSkKIAogICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgSW5zcGVjdExvYWRlci5nZXRfY29kZWAuCkBAIC00MzQsMTQxICs1OTgsMTMgQEAKICAgICAgICAgYGBfX2luaXRfX2BgIHdoZW4gdGhlIGZpbGUgZXh0ZW5zaW9uIGlzIHJlbW92ZWQgKiphbmQqKiB0aGUgbW9kdWxlIG5hbWUKICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGVuZCBpbiBgYF9faW5pdF9fYGAuCiAKKyAgICAuLiBtZXRob2Q6OiBpbml0X21vZHVsZV9hdHRyKG1vZHVsZSkKIAotLi4gY2xhc3M6OiBQeUxvYWRlcgorICAgICAgICBTZXQgOmF0dHI6YF9fY2FjaGVkX19gIHVzaW5nIDpmdW5jOmBpbXAuY2FjaGVfZnJvbV9zb3VyY2VgLiBPdGhlcgorICAgICAgICBhdHRyaWJ1dGVzIHNldCBieQorICAgICAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5FeGVjdXRpb25Mb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnNgLgogCi0gICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBpbmhlcml0aW5nIGZyb20KLSAgICA6Y2xhc3M6YEV4ZWN1dGlvbkxvYWRlcmAgYW5kCi0gICAgOmNsYXNzOmBSZXNvdXJjZUxvYWRlcmAgZGVzaWduZWQgdG8gZWFzZSB0aGUgbG9hZGluZyBvZgotICAgIFB5dGhvbiBzb3VyY2UgbW9kdWxlcyAoYnl0ZWNvZGUgaXMgbm90IGhhbmRsZWQ7IHNlZQotICAgIDpjbGFzczpgU291cmNlTG9hZGVyYCBmb3IgYSBzb3VyY2UvYnl0ZWNvZGUgQUJDKS4gQSBzdWJjbGFzcwotICAgIGltcGxlbWVudGluZyB0aGlzIEFCQyB3aWxsIG9ubHkgbmVlZCB0byB3b3JyeSBhYm91dCBleHBvc2luZyBob3cgdGhlIHNvdXJjZQotICAgIGNvZGUgaXMgc3RvcmVkOyBhbGwgb3RoZXIgZGV0YWlscyBmb3IgbG9hZGluZyBQeXRob24gc291cmNlIGNvZGUgd2lsbCBiZQotICAgIGhhbmRsZWQgYnkgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiBrZXkgbWV0aG9kcy4KLQotICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLSAgICAgICAgVGhpcyBjbGFzcyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIDpjbGFzczpgU291cmNlTG9hZGVyYCBhbmQgaXMKLSAgICAgICAgc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjQuIFNlZSBiZWxvdyBmb3IgaG93IHRvIGNyZWF0ZSBhCi0gICAgICAgIHN1YmNsYXNzIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkcy4KLQotICAgIElmIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4xIGlzIHJlcXVpcmVkLCB0aGVuIHVzZSB0aGUgZm9sbG93aW5nIGlkaW9tCi0gICAgdG8gaW1wbGVtZW50IGEgc3ViY2xhc3MgdGhhdCB3aWxsIHdvcmsgd2l0aCBQeXRob24gMy4xIG9ud2FyZHMgKG1ha2Ugc3VyZQotICAgIHRvIGltcGxlbWVudCA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWApOjoKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmcm9tIGltcG9ydGxpYi5hYmMgaW1wb3J0IFNvdXJjZUxvYWRlcgotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBmcm9tIGltcG9ydGxpYi5hYmMgaW1wb3J0IFB5TG9hZGVyIGFzIFNvdXJjZUxvYWRlcgotCi0KLSAgICAgICAgY2xhc3MgQ3VzdG9tTG9hZGVyKFNvdXJjZUxvYWRlcik6Ci0gICAgICAgICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlLiIiIgotICAgICAgICAgICAgICAgICMgSW1wbGVtZW50IC4uLgotCi0gICAgICAgICAgICBkZWYgc291cmNlX3BhdGgoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAgICAgICAgICIiIkltcGxlbWVudCBzb3VyY2VfcGF0aCBpbiB0ZXJtcyBvZiBnZXRfZmlsZW5hbWUuIiIiCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICAgICAgICAgIiIiSW1wbGVtZW50IGlzX3BhY2thZ2UgYnkgbG9va2luZyBmb3IgYW4gX19pbml0X18gZmlsZQotICAgICAgICAgICAgICAgIG5hbWUgYXMgcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lLiIiIgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdID09ICdfX2luaXRfXycKLQotCi0gICAgLi4gbWV0aG9kOjogc291cmNlX3BhdGgoZnVsbG5hbWUpCi0KLSAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUgc291cmNlIGNvZGUgZm9yIGEKLSAgICAgICAgbW9kdWxlLiBTaG91bGQgcmV0dXJuIGBgTm9uZWBgIGlmIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLgotICAgICAgICBSYWlzZXMgOmV4YzpgSW1wb3J0RXJyb3JgIGlmIHRoZSBsb2FkZXIga25vd3MgaXQgY2Fubm90IGhhbmRsZSB0aGUKLSAgICAgICAgbW9kdWxlLgotCi0gICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotCi0gICAgICAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YKLSAgICAgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWAgdGhhdAotICAgICAgICByZWxpZXMgb24gOm1ldGg6YHNvdXJjZV9wYXRoYC4gSWYgOm1ldGg6YHNvdXJjZV9wYXRoYCByZXR1cm5zCi0gICAgICAgIGBgTm9uZWBgLCB0aGVuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCi0KLSAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgICAgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAKLSAgICAgICAgdGhhdCBsb2FkcyBQeXRob24gc291cmNlIGNvZGUuIEFsbCBuZWVkZWQgaW5mb3JtYXRpb24gY29tZXMgZnJvbSB0aGUKLSAgICAgICAgYWJzdHJhY3QgbWV0aG9kcyByZXF1aXJlZCBieSB0aGlzIEFCQy4gVGhlIG9ubHkgcGVydGluZW50IGFzc3VtcHRpb24KLSAgICAgICAgbWFkZSBieSB0aGlzIG1ldGhvZCBpcyB0aGF0IHdoZW4gbG9hZGluZyBhIHBhY2thZ2UKLSAgICAgICAgOmF0dHI6YF9fcGF0aF9fYCBpcyBzZXQgdG8gYGBbb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKV1gYC4KLQotICAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQotCi0gICAgICAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YKLSAgICAgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5nZXRfY29kZWAgdGhhdCBjcmVhdGVzIGNvZGUgb2JqZWN0cwotICAgICAgICBmcm9tIFB5dGhvbiBzb3VyY2UgY29kZSwgYnkgcmVxdWVzdGluZyB0aGUgc291cmNlIGNvZGUgKHVzaW5nCi0gICAgICAgIDptZXRoOmBzb3VyY2VfcGF0aGAgYW5kIDptZXRoOmBnZXRfZGF0YWApIGFuZCBjb21waWxpbmcgaXQgd2l0aCB0aGUKLSAgICAgICAgYnVpbHQtaW4gOmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLgotCi0gICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKLQotICAgICAgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgIDptZXRoOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZWAuIFVzZXMKLSAgICAgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuUmVzb3VyY2VMb2FkZXIuZ2V0X2RhdGFgIGFuZCA6bWV0aDpgc291cmNlX3BhdGhgCi0gICAgICAgIHRvIGdldCB0aGUgc291cmNlIGNvZGUuICBJdCB0cmllcyB0byBndWVzcyB0aGUgc291cmNlIGVuY29kaW5nIHVzaW5nCi0gICAgICAgIDpmdW5jOmB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmdgLgotCi0KLS4uIGNsYXNzOjogUHlQeWNMb2FkZXIKLQotICAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgaW5oZXJpdGluZyBmcm9tIDpjbGFzczpgUHlMb2FkZXJgLgotICAgIFRoaXMgQUJDIGlzIG1lYW50IHRvIGhlbHAgaW4gY3JlYXRpbmcgbG9hZGVycyB0aGF0IHN1cHBvcnQgYm90aCBQeXRob24KLSAgICBzb3VyY2UgYW5kIGJ5dGVjb2RlLgotCi0gICAgLi4gZGVwcmVjYXRlZDo6IDMuMgotICAgICAgICBUaGlzIGNsYXNzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgOmNsYXNzOmBTb3VyY2VMb2FkZXJgIGFuZCB0bwotICAgICAgICBwcm9wZXJseSBzdXBwb3J0IDpwZXA6YDMxNDdgLiBJZiBjb21wYXRpYmlsaXR5IGlzIHJlcXVpcmVkIHdpdGgKLSAgICAgICAgUHl0aG9uIDMuMSwgaW1wbGVtZW50IGJvdGggOmNsYXNzOmBTb3VyY2VMb2FkZXJgIGFuZCA6Y2xhc3M6YFB5TG9hZGVyYDsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBkbyBzbyBhcmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yCi0gICAgICAgIDpjbGFzczpgUHlMb2FkZXJgLiBEbyBub3RlIHRoYXQgdGhpcyBzb2x1dGlvbiB3aWxsIG5vdCBzdXBwb3J0Ci0gICAgICAgIHNvdXJjZWxlc3MvYnl0ZWNvZGUtb25seSBsb2FkaW5nOyBvbmx5IHNvdXJjZSAqYW5kKiBieXRlY29kZSBsb2FkaW5nLgotCi0gICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgICBVcGRhdGVkIHRvIHBhcnNlIChidXQgbm90IHVzZSkgdGhlIG5ldyBzb3VyY2Ugc2l6ZSBmaWVsZCBpbiBieXRlY29kZQotICAgICAgIGZpbGVzIHdoZW4gcmVhZGluZyBhbmQgdG8gd3JpdGUgb3V0IHRoZSBmaWVsZCBwcm9wZXJseSB3aGVuIHdyaXRpbmcuCi0KLSAgICAuLiBtZXRob2Q6OiBzb3VyY2VfbXRpbWUoZnVsbG5hbWUpCi0KLSAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgc291cmNlCi0gICAgICAgIGNvZGUgb2YgdGhlIHNwZWNpZmllZCBtb2R1bGUuIFRoZSBtb2RpZmljYXRpb24gdGltZSBzaG91bGQgYmUgYW4KLSAgICAgICAgaW50ZWdlci4gSWYgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUsIHJldHVybiBgYE5vbmVgYC4gSWYgdGhlCi0gICAgICAgIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgdGhlbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgotCi0gICAgLi4gbWV0aG9kOjogYnl0ZWNvZGVfcGF0aChmdWxsbmFtZSkKLQotICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgcGF0aCB0byB0aGUgYnl0ZWNvZGUgZm9yIHRoZQotICAgICAgICBzcGVjaWZpZWQgbW9kdWxlLCBpZiBpdCBleGlzdHMuIEl0IHJldHVybnMgYGBOb25lYGAKLSAgICAgICAgaWYgbm8gYnl0ZWNvZGUgZXhpc3RzICh5ZXQpLgotICAgICAgICBSYWlzZXMgOmV4YzpgSW1wb3J0RXJyb3JgIGlmIHRoZSBsb2FkZXIga25vd3MgaXQgY2Fubm90IGhhbmRsZSB0aGUKLSAgICAgICAgbW9kdWxlLgotCi0gICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotCi0gICAgICAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YKLSAgICAgICAgOm1ldGg6YEV4ZWN1dGlvbkxvYWRlci5nZXRfZmlsZW5hbWVgIHRoYXQgcmVsaWVzIG9uCi0gICAgICAgIDptZXRoOmBQeUxvYWRlci5zb3VyY2VfcGF0aGAgYW5kIDptZXRoOmBieXRlY29kZV9wYXRoYC4KLSAgICAgICAgSWYgOm1ldGg6YHNvdXJjZV9wYXRoYCByZXR1cm5zIGEgcGF0aCwgdGhlbiB0aGF0IHZhbHVlIGlzIHJldHVybmVkLgotICAgICAgICBFbHNlIGlmIDptZXRoOmBieXRlY29kZV9wYXRoYCByZXR1cm5zIGEgcGF0aCwgdGhhdCBwYXRoIHdpbGwgYmUKLSAgICAgICAgcmV0dXJuZWQuIElmIGEgcGF0aCBpcyBub3QgYXZhaWxhYmxlIGZyb20gYm90aCBtZXRob2RzLAotICAgICAgICA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgotCi0gICAgLi4gbWV0aG9kOjogd3JpdGVfYnl0ZWNvZGUoZnVsbG5hbWUsIGJ5dGVjb2RlKQotCi0gICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCBoYXMgdGhlIGxvYWRlciB3cml0ZSAqYnl0ZWNvZGUqIGZvciBmdXR1cmUKLSAgICAgICAgdXNlLiBJZiB0aGUgYnl0ZWNvZGUgaXMgd3JpdHRlbiwgcmV0dXJuIGBgVHJ1ZWBgLiBSZXR1cm4KLSAgICAgICAgYGBGYWxzZWBgIGlmIHRoZSBieXRlY29kZSBjb3VsZCBub3QgYmUgd3JpdHRlbi4gVGhpcyBtZXRob2QKLSAgICAgICAgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaWYgOmRhdGE6YHN5cy5kb250X3dyaXRlX2J5dGVjb2RlYCBpcyB0cnVlLgotICAgICAgICBUaGUgKmJ5dGVjb2RlKiBhcmd1bWVudCBzaG91bGQgYmUgYSBieXRlcyBzdHJpbmcgb3IgYnl0ZXMgYXJyYXkuCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKIDptb2Q6YGltcG9ydGxpYi5tYWNoaW5lcnlgIC0tIEltcG9ydGVycyBhbmQgcGF0aCBob29rcwpAQCAtODQ0LDYgKzg4MCw1MSBAQAogVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIHZhcmlvdXMgb2JqZWN0cyB0aGF0IGhlbHAgaW4gdGhlIGNvbnN0cnVjdGlvbiBvZgogYW4gOnRlcm06YGltcG9ydGVyYC4KIAorLi4gYXR0cmlidXRlOjogTUFHSUNfTlVNQkVSCisKKyAgIFRoZSBieXRlcyB3aGljaCByZXByZXNlbnQgdGhlIGJ5dGVjb2RlIHZlcnNpb24gbnVtYmVyLiBJZiB5b3UgbmVlZCBoZWxwIHdpdGgKKyAgIGxvYWRpbmcvd3JpdGluZyBieXRlY29kZSB0aGVuIGNvbnNpZGVyIDpjbGFzczpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gZnVuY3Rpb246OiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKQorCisgICBSZXR1cm4gdGhlIDpwZXA6YDMxNDdgIHBhdGggdG8gdGhlIGJ5dGUtY29tcGlsZWQgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICBzb3VyY2UgKnBhdGgqLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcyBgYC9mb28vYmFyL2Jhei5weWBgIHRoZSByZXR1cm4KKyAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCisgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKKyAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCisgICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgVHJ1ZSBvciBgYC5weW9gYCBmb3IgYW4gb3B0aW1pemVkIFB5dGhvbgorICAgKGkuZS4gYGBfX2RlYnVnX19gYCBpcyBGYWxzZSkuICBCeSBwYXNzaW5nIGluIFRydWUgb3IgRmFsc2UgZm9yCisgICAqZGVidWdfb3ZlcnJpZGUqIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgIGZvcgorICAgZXh0ZW5zaW9uIHNlbGVjdGlvbi4KKworICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCisuLiBmdW5jdGlvbjo6IHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCisKKyAgIEdpdmVuIHRoZSAqcGF0aCogdG8gYSA6cGVwOmAzMTQ3YCBmaWxlIG5hbWUsIHJldHVybiB0aGUgYXNzb2NpYXRlZCBzb3VyY2UgY29kZQorICAgZmlsZSBwYXRoLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcworICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCB0aGUgcmV0dXJuZWQgcGF0aCB3b3VsZCBiZQorICAgYGAvZm9vL2Jhci9iYXoucHlgYC4gICpwYXRoKiBuZWVkIG5vdCBleGlzdCwgaG93ZXZlciBpZiBpdCBkb2VzIG5vdCBjb25mb3JtCisgICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiBJZgorICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLAorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gZnVuY3Rpb246OiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcykKKworICAgRGVjb2RlIHRoZSBnaXZlbiBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiBpdCBhcyBhIHN0cmluZworICAgd2l0aCB1bml2ZXJzYWwgbmV3bGluZXMgKGFzIHJlcXVpcmVkIGJ5CisgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmdldF9zb3VyY2VgKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIC4uIGZ1bmN0aW9uOjogcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpCiAKICAgIFJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuCkBAIC04NjAsOSArOTQxLDIzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBmdW5jdGlvbjo6IG1vZHVsZV90b19sb2FkKG5hbWUsICosIHJlc2V0X25hbWU9VHJ1ZSkKKworICAgIFJldHVybnMgYSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCB3aGljaCBwcm92aWRlcyB0aGUgbW9kdWxlIHRvIGxvYWQuIFRoZQorICAgIG1vZHVsZSB3aWxsIGVpdGhlciBjb21lIGZyb20gOmF0dHI6YHN5cy5tb2R1bGVzYCBpbiB0aGUgY2FzZSBvZiByZWxvYWRpbmcgb3IKKyAgICBhIGZyZXNoIG1vZHVsZSBpZiBsb2FkaW5nIGEgbmV3IG1vZHVsZS4gUHJvcGVyIGNsZWFudXAgb2YKKyAgICA6YXR0cjpgc3lzLm1vZHVsZXNgIG9jY3VycyBpZiB0aGUgbW9kdWxlIHdhcyBuZXcgYW5kIGFuIGV4Y2VwdGlvbiB3YXMKKyAgICByYWlzZWQuCisKKyAgICBJZiAqKnJlc2V0X25hbWUqKiBpcyB0cnVlIGFuZCB0aGUgbW9kdWxlIHJlcXVlc3RlZCBpcyBiZWluZyByZWxvYWRlZCB0aGVuCisgICAgdGhlIG1vZHVsZSdzIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHdpbGwKKyAgICBiZSByZXNldCB0byAqKm5hbWUqKiwgZWxzZSBpdCB3aWxsIGJlIGxlZnQgdW50b3VjaGVkLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKLSAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciBhIDp0ZXJtOmBsb2FkZXJgIG1ldGhvZCwKKyAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgCiAgICAgdG8gaGFuZGxlIHNlbGVjdGluZyB0aGUgcHJvcGVyCiAgICAgbW9kdWxlIG9iamVjdCB0byBsb2FkIHdpdGguIFRoZSBkZWNvcmF0ZWQgbWV0aG9kIGlzIGV4cGVjdGVkIHRvIGhhdmUgYSBjYWxsCiAgICAgc2lnbmF0dXJlIHRha2luZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMKQEAgLTg3Myw1NSArOTY4LDU0IEBACiAKICAgICBUaGUgZGVjb3JhdGVkIG1ldGhvZCB3aWxsIHRha2UgaW4gdGhlICoqbmFtZSoqIG9mIHRoZSBtb2R1bGUgdG8gYmUgbG9hZGVkCiAgICAgYXMgZXhwZWN0ZWQgZm9yIGEgOnRlcm06YGxvYWRlcmAuIElmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluCi0gICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGEgbmV3IG9uZSBpcyBjb25zdHJ1Y3RlZCB3aXRoIGl0cwotICAgIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHNldCB0byAqKm5hbWUqKiwgOmF0dHI6YF9fbG9hZGVyX19gIHNldCB0bwotICAgICoqc2VsZioqLCBhbmQgOmF0dHI6YF9fcGFja2FnZV9fYCBzZXQgaWYKLSAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2VgIGlzIGRlZmluZWQgZm9yICoqc2VsZioqIGFuZAotICAgIGRvZXMgbm90IHJhaXNlIDpleGM6YEltcG9ydEVycm9yYCBmb3IgKipuYW1lKiouIElmIGEgbmV3IG1vZHVsZSBpcyBub3QKLSAgICBuZWVkZWQgdGhlbiB0aGUgbW9kdWxlIGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2Agd2lsbCBiZSBwYXNzZWQgaW50byB0aGUKLSAgICBtZXRob2QuCisgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGEgbmV3IG9uZSBpcyBjb25zdHJ1Y3RlZC4gUmVnYXJkbGVzcyBvZiB3aGVyZSB0aGUKKyAgICBtb2R1bGUgY2FtZSBmcm9tLCA6YXR0cjpgX19sb2FkZXJfX2Agc2V0IHRvICoqc2VsZioqIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gCisgICAgaXMgc2V0IGJhc2VkIG9uIHdoYXQgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5pc19wYWNrYWdlYCByZXR1cm5zCisgICAgKGlmIGF2YWlsYWJsZSkuIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNldCB1bmNvbmRpdGlvbmFsbHkgdG8gc3VwcG9ydAorICAgIHJlbG9hZGluZy4KIAogICAgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgdGhlIGRlY29yYXRlZCBtZXRob2QgYW5kIGEgbW9kdWxlIHdhcyBhZGRlZCB0bwogICAgIDpkYXRhOmBzeXMubW9kdWxlc2AgaXQgd2lsbCBiZSByZW1vdmVkIHRvIHByZXZlbnQgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKICAgICBtb2R1bGUgZnJvbSBiZWluZyBpbiBsZWZ0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AuIElmIHRoZSBtb2R1bGUgd2FzIGFscmVhZHkKICAgICBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHRoZW4gaXQgaXMgbGVmdCBhbG9uZS4KIAotICAgIFVzZSBvZiB0aGlzIGRlY29yYXRvciBoYW5kbGVzIGFsbCB0aGUgZGV0YWlscyBvZiB3aGljaCBtb2R1bGUgb2JqZWN0IGEKLSAgICBsb2FkZXIgc2hvdWxkIGluaXRpYWxpemUgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDMwMmAgYXMgYmVzdCBhcyBwb3NzaWJsZS4KLQogICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICAgOmF0dHI6YF9fbG9hZGVyX19gIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gIGFyZSBhdXRvbWF0aWNhbGx5IHNldAogICAgICAgICh3aGVuIHBvc3NpYmxlKS4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgU2V0IDphdHRyOmBfX25hbWVfX2AsIDphdHRyOmBfX2xvYWRlcl9fYCA6YXR0cjpgX19wYWNrYWdlX19gCisgICAgICAgdW5jb25kaXRpb25hbGx5IHRvIHN1cHBvcnQgcmVsb2FkaW5nLgorCisgICAgLi4gZGVwcmVjYXRlZDo6IDMuNAorICAgICAgICBGb3IgdGhlIGJlbmVmaXQgb2YgOnRlcm06YGxvYWRlcmAgc3ViY2xhc3NlcywgcGxlYXNlIHVzZQorICAgICAgICA6ZnVuYzpgbW9kdWxlX3RvX2xvYWRgIGFuZAorICAgICAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnNgIGluc3RlYWQuCisKIC4uIGRlY29yYXRvcjo6IHNldF9sb2FkZXIKIAotICAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIGEgOnRlcm06YGxvYWRlcmAgbWV0aG9kLAotICAgIHRvIHNldCB0aGUgOmF0dHI6YF9fbG9hZGVyX19gCi0gICAgYXR0cmlidXRlIG9uIGxvYWRlZCBtb2R1bGVzLiBJZiB0aGUgYXR0cmlidXRlIGlzIGFscmVhZHkgc2V0IHRoZSBkZWNvcmF0b3IKLSAgICBkb2VzIG5vdGhpbmcuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudCB0byB0aGUKLSAgICB3cmFwcGVkIG1ldGhvZCAoaS5lLiBgYHNlbGZgYCkgaXMgd2hhdCA6YXR0cjpgX19sb2FkZXJfX2Agc2hvdWxkIGJlIHNldCB0by4KKyAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAKKyAgIHRvIHNldCB0aGUgOmF0dHI6YF9fbG9hZGVyX19gCisgICBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBhbHJlYWR5IHNldCB0aGUKKyAgIGRlY29yYXRvciBkb2VzIG5vdGhpbmcuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudCB0bworICAgdGhlIHdyYXBwZWQgbWV0aG9kIChpLmUuIGBgc2VsZmBgKSBpcyB3aGF0IDphdHRyOmBfX2xvYWRlcl9fYCBzaG91bGQgYmUgc2V0CisgICB0by4KIAogICAgLi4gbm90ZTo6CisgICAgICBBcyB0aGlzIGRlY29yYXRvciBzZXRzIDphdHRyOmBfX2xvYWRlcl9fYCBhZnRlciBsb2FkaW5nIHRoZSBtb2R1bGUsIGl0IGlzCisgICAgICByZWNvbW1lbmRlZCB0byB1c2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzYCBpbnN0ZWFkCisgICAgICB3aGVuIGFwcHJvcHJpYXRlLgogCi0gICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKLSAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCi0KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBTZXQgYGBfX2xvYWRlcl9fYGAgaWYgc2V0IHRvIGBgTm9uZWBgLCBhcyBpZiB0aGUgYXR0cmlidXRlIGRvZXMgbm90CisgICAgICBleGlzdC4KIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIAotICAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIGEgOnRlcm06YGxvYWRlcmAgdG8gc2V0IHRoZSA6YXR0cjpgX19wYWNrYWdlX19gCi0gICAgYXR0cmlidXRlIG9uIHRoZSBtb2R1bGUgcmV0dXJuZWQgYnkgdGhlIGxvYWRlci4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYCBpcwotICAgIHNldCBhbmQgaGFzIGEgdmFsdWUgb3RoZXIgdGhhbiBgYE5vbmVgYCBpdCB3aWxsIG5vdCBiZSBjaGFuZ2VkLgotICAgIE5vdGUgdGhhdCB0aGUgbW9kdWxlIHJldHVybmVkIGJ5IHRoZSBsb2FkZXIgaXMgd2hhdCBoYXMgdGhlIGF0dHJpYnV0ZQotICAgIHNldCBvbiBhbmQgbm90IHRoZSBtb2R1bGUgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KLQotICAgIFJlbGlhbmNlIG9uIHRoaXMgZGVjb3JhdG9yIGlzIGRpc2NvdXJhZ2VkIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gc2V0Ci0gICAgOmF0dHI6YF9fcGFja2FnZV9fYCBiZWZvcmUgaW1wb3J0aW5nLiBCeQotICAgIHNldHRpbmcgaXQgYmVmb3JlaGFuZCB0aGUgY29kZSBmb3IgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCB3aXRoIHRoZQotICAgIGF0dHJpYnV0ZSBzZXQgYW5kIHRodXMgY2FuIGJlIHVzZWQgYnkgZ2xvYmFsIGxldmVsIGNvZGUgZHVyaW5nCi0gICAgaW5pdGlhbGl6YXRpb24uCisgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHRvIHNldCB0aGUgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAorICAgaXMgc2V0IGFuZCBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgIGl0IHdpbGwgbm90IGJlIGNoYW5nZWQuCiAKICAgIC4uIG5vdGU6OgotCi0gICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKLSAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgICBBcyB0aGlzIGRlY29yYXRvciBzZXRzIDphdHRyOmBfX3BhY2thZ2VfX2AgYWZ0ZXIgbG9hZGluZyB0aGUgbW9kdWxlLCBpdCBpcworICAgICAgcmVjb21tZW5kZWQgdG8gdXNlIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5pbml0X21vZHVsZV9hdHRyc2AgaW5zdGVhZAorICAgICAgd2hlbiBhcHByb3ByaWF0ZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0IGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKaW5kZXggNDBmNDgyYi4uOWY3ODRmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKQEAgLTc5Nyw2ICs3OTcsMjMgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKKy4uIGZ1bmN0aW9uOjogdW53cmFwKGZ1bmMsICosIHN0b3A9Tm9uZSkKKworICAgR2V0IHRoZSBvYmplY3Qgd3JhcHBlZCBieSAqZnVuYyouIEl0IGZvbGxvd3MgdGhlIGNoYWluIG9mIDphdHRyOmBfX3dyYXBwZWRfX2AKKyAgIGF0dHJpYnV0ZXMgcmV0dXJuaW5nIHRoZSBsYXN0IG9iamVjdCBpbiB0aGUgY2hhaW4uCisKKyAgICpzdG9wKiBpcyBhbiBvcHRpb25hbCBjYWxsYmFjayBhY2NlcHRpbmcgYW4gb2JqZWN0IGluIHRoZSB3cmFwcGVyIGNoYWluCisgICBhcyBpdHMgc29sZSBhcmd1bWVudCB0aGF0IGFsbG93cyB0aGUgdW53cmFwcGluZyB0byBiZSB0ZXJtaW5hdGVkIGVhcmx5IGlmCisgICB0aGUgY2FsbGJhY2sgcmV0dXJucyBhIHRydWUgdmFsdWUuIElmIHRoZSBjYWxsYmFjayBuZXZlciByZXR1cm5zIGEgdHJ1ZQorICAgdmFsdWUsIHRoZSBsYXN0IG9iamVjdCBpbiB0aGUgY2hhaW4gaXMgcmV0dXJuZWQgYXMgdXN1YWwuIEZvciBleGFtcGxlLAorICAgOmZ1bmM6YHNpZ25hdHVyZWAgdXNlcyB0aGlzIHRvIHN0b3AgdW53cmFwcGluZyBpZiBhbnkgb2JqZWN0IGluIHRoZQorICAgY2hhaW4gaGFzIGEgYGBfX3NpZ25hdHVyZV9fYGAgYXR0cmlidXRlIGRlZmluZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBhIGN5Y2xlIGlzIGVuY291bnRlcmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBfaW5zcGVjdC1zdGFjazoKIAogVGhlIGludGVycHJldGVyIHN0YWNrCkBAIC04MjksNiArODQ2LDEwIEBACiAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgZGVsIGZyYW1lCiAKKyAgIElmIHlvdSB3YW50IHRvIGtlZXAgdGhlIGZyYW1lIGFyb3VuZCAoZm9yIGV4YW1wbGUgdG8gcHJpbnQgYSB0cmFjZWJhY2sKKyAgIGxhdGVyKSwgeW91IGNhbiBhbHNvIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgYnkgdXNpbmcgdGhlCisgICA6bWV0aDpgZnJhbWUuY2xlYXJgIG1ldGhvZC4KKwogVGhlIG9wdGlvbmFsICpjb250ZXh0KiBhcmd1bWVudCBzdXBwb3J0ZWQgYnkgbW9zdCBvZiB0aGVzZSBmdW5jdGlvbnMgc3BlY2lmaWVzCiB0aGUgbnVtYmVyIG9mIGxpbmVzIG9mIGNvbnRleHQgdG8gcmV0dXJuLCB3aGljaCBhcmUgY2VudGVyZWQgYXJvdW5kIHRoZSBjdXJyZW50CiBsaW5lLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvanNvbi5yc3QgYi9Eb2MvbGlicmFyeS9qc29uLnJzdAppbmRleCA0MzNmOTQ4Li42OGFlZjIxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9qc29uLnJzdAorKysgYi9Eb2MvbGlicmFyeS9qc29uLnJzdApAQCAtNDIsOCArNDIsNyBAQAogUHJldHR5IHByaW50aW5nOjoKIAogICAgID4+PiBpbXBvcnQganNvbgotICAgID4+PiBwcmludChqc29uLmR1bXBzKHsnNCc6IDUsICc2JzogN30sIHNvcnRfa2V5cz1UcnVlLAotICAgIC4uLiAgICAgICAgICAgICAgICAgIGluZGVudD00LCBzZXBhcmF0b3JzPSgnLCcsICc6ICcpKSkKKyAgICA+Pj4gcHJpbnQoanNvbi5kdW1wcyh7JzQnOiA1LCAnNic6IDd9LCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpKQogICAgIHsKICAgICAgICAgIjQiOiA1LAogICAgICAgICAiNiI6IDcKQEAgLTE1OCwxNSArMTU3LDEzIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWxsb3cgc3RyaW5ncyBmb3IgKmluZGVudCogaW4gYWRkaXRpb24gdG8gaW50ZWdlcnMuCiAKLSAgIC4uIG5vdGU6OgorICAgSWYgc3BlY2lmaWVkLCAqc2VwYXJhdG9ycyogc2hvdWxkIGJlIGFuIGBgKGl0ZW1fc2VwYXJhdG9yLCBrZXlfc2VwYXJhdG9yKWBgCisgICB0dXBsZS4gIFRoZSBkZWZhdWx0IGlzIGBgKCcsICcsICc6ICcpYGAgaWYgKmluZGVudCogaXMgYGBOb25lYGAgYW5kCisgICBgYCgnLCcsICc6ICcpYGAgb3RoZXJ3aXNlLiAgVG8gZ2V0IHRoZSBtb3N0IGNvbXBhY3QgSlNPTiByZXByZXNlbnRhdGlvbiwKKyAgIHlvdSBzaG91bGQgc3BlY2lmeSBgYCgnLCcsICc6JylgYCB0byBlbGltaW5hdGUgd2hpdGVzcGFjZS4KIAotICAgICAgU2luY2UgdGhlIGRlZmF1bHQgaXRlbSBzZXBhcmF0b3IgaXMgYGAnLCAnYGAsICB0aGUgb3V0cHV0IG1pZ2h0IGluY2x1ZGUKLSAgICAgIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2hlbiAqaW5kZW50KiBpcyBzcGVjaWZpZWQuICBZb3UgY2FuIHVzZQotICAgICAgYGBzZXBhcmF0b3JzPSgnLCcsICc6ICcpYGAgdG8gYXZvaWQgdGhpcy4KLQotICAgSWYgKnNlcGFyYXRvcnMqIGlzIGFuIGBgKGl0ZW1fc2VwYXJhdG9yLCBkaWN0X3NlcGFyYXRvcilgYCB0dXBsZSwgdGhlbiBpdAotICAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgYGAoJywgJywgJzogJylgYCBzZXBhcmF0b3JzLiAgYGAoJywnLAotICAgJzonKWBgIGlzIHRoZSBtb3N0IGNvbXBhY3QgSlNPTiByZXByZXNlbnRhdGlvbi4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBVc2UgYGAoJywnLCAnOiAnKWBgIGFzIGRlZmF1bHQgaWYgKmluZGVudCogaXMgbm90IGBgTm9uZWBgLgogCiAgICAqZGVmYXVsdChvYmopKiBpcyBhIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHJldHVybiBhIHNlcmlhbGl6YWJsZSB2ZXJzaW9uIG9mCiAgICAqb2JqKiBvciByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLiAgVGhlIGRlZmF1bHQgc2ltcGx5IHJhaXNlcyA6ZXhjOmBUeXBlRXJyb3JgLgpAQCAtMzUyLDIzICszNDksMjYgQEAKIAogICAgLi4gX3B5LXRvLWpzb24tdGFibGU6CiAKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgUHl0aG9uICAgICAgICAgICAgfCBKU09OICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PSsKLSAgIHwgZGljdCAgICAgICAgICAgICAgfCBvYmplY3QgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgbGlzdCwgdHVwbGUgICAgICAgfCBhcnJheSAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgc3RyICAgICAgICAgICAgICAgfCBzdHJpbmcgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgaW50LCBmbG9hdCAgICAgICAgfCBudW1iZXIgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgVHJ1ZSAgICAgICAgICAgICAgfCB0cnVlICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgRmFsc2UgICAgICAgICAgICAgfCBmYWxzZSAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgTm9uZSAgICAgICAgICAgICAgfCBudWxsICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgUHl0aG9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBKU09OICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PSsKKyAgIHwgZGljdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvYmplY3QgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgbGlzdCwgdHVwbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgc3RyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgaW50LCBmbG9hdCwgaW50LSAmIGZsb2F0LWRlcml2ZWQgRW51bXMgfCBudW1iZXIgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgVHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cnVlICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgRmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmYWxzZSAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBudWxsICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGludC0gYW5kIGZsb2F0LWRlcml2ZWQgRW51bSBjbGFzc2VzLgogCiAgICBUbyBleHRlbmQgdGhpcyB0byByZWNvZ25pemUgb3RoZXIgb2JqZWN0cywgc3ViY2xhc3MgYW5kIGltcGxlbWVudCBhCiAgICA6bWV0aDpgZGVmYXVsdGAgbWV0aG9kIHdpdGggYW5vdGhlciBtZXRob2QgdGhhdCByZXR1cm5zIGEgc2VyaWFsaXphYmxlIG9iamVjdApAQCAtNDA4LDE1ICs0MDgsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBbGxvdyBzdHJpbmdzIGZvciAqaW5kZW50KiBpbiBhZGRpdGlvbiB0byBpbnRlZ2Vycy4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFNpbmNlIHRoZSBkZWZhdWx0IGl0ZW0gc2VwYXJhdG9yIGlzIGBgJywgJ2BgLCAgdGhlIG91dHB1dCBtaWdodCBpbmNsdWRlCi0gICAgICB0cmFpbGluZyB3aGl0ZXNwYWNlIHdoZW4gKmluZGVudCogaXMgc3BlY2lmaWVkLiAgWW91IGNhbiB1c2UKLSAgICAgIGBgc2VwYXJhdG9ycz0oJywnLCAnOiAnKWBgIHRvIGF2b2lkIHRoaXMuCi0KICAgIElmIHNwZWNpZmllZCwgKnNlcGFyYXRvcnMqIHNob3VsZCBiZSBhbiBgYChpdGVtX3NlcGFyYXRvciwga2V5X3NlcGFyYXRvcilgYAotICAgdHVwbGUuICBUaGUgZGVmYXVsdCBpcyBgYCgnLCAnLCAnOiAnKWBgLiAgVG8gZ2V0IHRoZSBtb3N0IGNvbXBhY3QgSlNPTgotICAgcmVwcmVzZW50YXRpb24sIHlvdSBzaG91bGQgc3BlY2lmeSBgYCgnLCcsICc6JylgYCB0byBlbGltaW5hdGUgd2hpdGVzcGFjZS4KKyAgIHR1cGxlLiAgVGhlIGRlZmF1bHQgaXMgYGAoJywgJywgJzogJylgYCBpZiAqaW5kZW50KiBpcyBgYE5vbmVgYCBhbmQKKyAgIGBgKCcsJywgJzogJylgYCBvdGhlcndpc2UuICBUbyBnZXQgdGhlIG1vc3QgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uLAorICAgeW91IHNob3VsZCBzcGVjaWZ5IGBgKCcsJywgJzonKWBgIHRvIGVsaW1pbmF0ZSB3aGl0ZXNwYWNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgVXNlIGBgKCcsJywgJzogJylgYCBhcyBkZWZhdWx0IGlmICppbmRlbnQqIGlzIG5vdCBgYE5vbmVgYC4KIAogICAgSWYgc3BlY2lmaWVkLCAqZGVmYXVsdCogaXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgY2FuJ3QKICAgIG90aGVyd2lzZSBiZSBzZXJpYWxpemVkLiAgSXQgc2hvdWxkIHJldHVybiBhIEpTT04gZW5jb2RhYmxlIHZlcnNpb24gb2YgdGhlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmNvbmZpZy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmNvbmZpZy5yc3QKaW5kZXggMTM5MWVkMi4uMTZkMzI5NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5jb25maWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLnJzdApAQCAtNzYsMTEgKzc2LDIzIEBACiAKIC4uIGZ1bmN0aW9uOjogZmlsZUNvbmZpZyhmbmFtZSwgZGVmYXVsdHM9Tm9uZSwgZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzPVRydWUpCiAKLSAgIFJlYWRzIHRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBhIDptb2Q6YGNvbmZpZ3BhcnNlcmBcLWZvcm1hdCBmaWxlCi0gICBuYW1lZCAqZm5hbWUqLiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcyBmcm9tIGFuCi0gICBhcHBsaWNhdGlvbiwgYWxsb3dpbmcgYW4gZW5kIHVzZXIgdG8gc2VsZWN0IGZyb20gdmFyaW91cyBwcmUtY2FubmVkCi0gICBjb25maWd1cmF0aW9ucyAoaWYgdGhlIGRldmVsb3BlciBwcm92aWRlcyBhIG1lY2hhbmlzbSB0byBwcmVzZW50IHRoZSBjaG9pY2VzCi0gICBhbmQgbG9hZCB0aGUgY2hvc2VuIGNvbmZpZ3VyYXRpb24pLgorICAgUmVhZHMgdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmcm9tIGEgOm1vZDpgY29uZmlncGFyc2VyYFwtZm9ybWF0IGZpbGUuCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcyBmcm9tIGFuIGFwcGxpY2F0aW9uLCBhbGxvd2luZyBhbgorICAgZW5kIHVzZXIgdG8gc2VsZWN0IGZyb20gdmFyaW91cyBwcmUtY2FubmVkIGNvbmZpZ3VyYXRpb25zIChpZiB0aGUgZGV2ZWxvcGVyCisgICBwcm92aWRlcyBhIG1lY2hhbmlzbSB0byBwcmVzZW50IHRoZSBjaG9pY2VzIGFuZCBsb2FkIHRoZSBjaG9zZW4KKyAgIGNvbmZpZ3VyYXRpb24pLgorCisgICA6cGFyYW0gZm5hbWU6IEEgZmlsZW5hbWUsIG9yIGEgZmlsZS1saWtlIG9iamVjdCwgb3IgYW4gaW5zdGFuY2UgZGVyaXZlZAorICAgICAgICAgICAgICAgICBmcm9tIDpjbGFzczpgfmNvbmZpZ3BhcnNlci5SYXdDb25maWdQYXJzZXJgLiBJZiBhCisgICAgICAgICAgICAgICAgIGBgUmF3Q29uZmlnUGFyc2VyYGAtZGVyaXZlZCBpbnN0YW5jZSBpcyBwYXNzZWQsIGl0IGlzIHVzZWQgYXMKKyAgICAgICAgICAgICAgICAgaXMuIE90aGVyd2lzZSwgYSA6Y2xhc3M6YH5jb25maWdwYXJzZXIuQ29uZmlncGFyc2VyYCBpcworICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZWQsIGFuZCB0aGUgY29uZmlndXJhdGlvbiByZWFkIGJ5IGl0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgIG9iamVjdCBwYXNzZWQgaW4gYGBmbmFtZWBgLiBJZiB0aGF0IGhhcyBhIDptZXRoOmByZWFkbGluZWAKKyAgICAgICAgICAgICAgICAgbWV0aG9kLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGEgZmlsZS1saWtlIG9iamVjdCBhbmQgcmVhZCB1c2luZworICAgICAgICAgICAgICAgICA6bWV0aDpgfmNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIucmVhZF9maWxlYDsgb3RoZXJ3aXNlLAorICAgICAgICAgICAgICAgICBpdCBpcyBhc3N1bWVkIHRvIGJlIGEgZmlsZW5hbWUgYW5kIHBhc3NlZCB0bworICAgICAgICAgICAgICAgICA6bWV0aDpgfmNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIucmVhZGAuCisKIAogICAgOnBhcmFtIGRlZmF1bHRzOiBEZWZhdWx0cyB0byBiZSBwYXNzZWQgdG8gdGhlIENvbmZpZ1BhcnNlciBjYW4gYmUgc3BlY2lmaWVkCiAgICAgICAgICAgICAgICAgICAgIGluIHRoaXMgYXJndW1lbnQuCkBAIC05NCw4ICsxMDYsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIGFuY2VzdG9ycyBhcmUgZXhwbGljaXRseSBuYW1lZCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIEFuIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB+Y29uZmlncGFyc2VyLlJhd0NvbmZpZ1BhcnNlcmAgaXMKKyAgICAgIG5vdyBhY2NlcHRlZCBhcyBhIHZhbHVlIGZvciBgYGZuYW1lYGAuIFRoaXMgZmFjaWxpdGF0ZXM6CiAKLS4uIGZ1bmN0aW9uOjogbGlzdGVuKHBvcnQ9REVGQVVMVF9MT0dHSU5HX0NPTkZJR19QT1JUKQorICAgICAgKiBVc2Ugb2YgYSBjb25maWd1cmF0aW9uIGZpbGUgd2hlcmUgbG9nZ2luZyBjb25maWd1cmF0aW9uIGlzIGp1c3QgcGFydAorICAgICAgICBvZiB0aGUgb3ZlcmFsbCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLgorICAgICAgKiBVc2Ugb2YgYSBjb25maWd1cmF0aW9uIHJlYWQgZnJvbSBhIGZpbGUsIGFuZCB0aGVuIG1vZGlmaWVkIGJ5IHRoZSB1c2luZworICAgICAgICBhcHBsaWNhdGlvbiAoZS5nLiBiYXNlZCBvbiBjb21tYW5kLWxpbmUgcGFyYW1ldGVycyBvciBvdGhlciBhc3BlY3RzCisgICAgICAgIG9mIHRoZSBydW50aW1lIGVudmlyb25tZW50KSBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIGBgZmlsZUNvbmZpZ2BgLgorCisuLiBmdW5jdGlvbjo6IGxpc3Rlbihwb3J0PURFRkFVTFRfTE9HR0lOR19DT05GSUdfUE9SVCwgdmVyaWZ5PU5vbmUpCiAKICAgIFN0YXJ0cyB1cCBhIHNvY2tldCBzZXJ2ZXIgb24gdGhlIHNwZWNpZmllZCBwb3J0LCBhbmQgbGlzdGVucyBmb3IgbmV3CiAgICBjb25maWd1cmF0aW9ucy4gSWYgbm8gcG9ydCBpcyBzcGVjaWZpZWQsIHRoZSBtb2R1bGUncyBkZWZhdWx0CkBAIC0xMDUsNiArMTI2LDE3IEBACiAgICBzZXJ2ZXIsIGFuZCB3aGljaCB5b3UgY2FuIDptZXRoOmBqb2luYCB3aGVuIGFwcHJvcHJpYXRlLiBUbyBzdG9wIHRoZSBzZXJ2ZXIsCiAgICBjYWxsIDpmdW5jOmBzdG9wTGlzdGVuaW5nYC4KIAorICAgVGhlIGBgdmVyaWZ5YGAgYXJndW1lbnQsIGlmIHNwZWNpZmllZCwgc2hvdWxkIGJlIGEgY2FsbGFibGUgd2hpY2ggc2hvdWxkCisgICB2ZXJpZnkgd2hldGhlciBieXRlcyByZWNlaXZlZCBhY3Jvc3MgdGhlIHNvY2tldCBhcmUgdmFsaWQgYW5kIHNob3VsZCBiZQorICAgcHJvY2Vzc2VkLiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgZW5jcnlwdGluZyBhbmQvb3Igc2lnbmluZyB3aGF0IGlzIHNlbnQKKyAgIGFjcm9zcyB0aGUgc29ja2V0LCBzdWNoIHRoYXQgdGhlIGBgdmVyaWZ5YGAgY2FsbGFibGUgY2FuIHBlcmZvcm0KKyAgIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kL29yIGRlY3J5cHRpb24uIFRoZSBgYHZlcmlmeWBgIGNhbGxhYmxlIGlzIGNhbGxlZAorICAgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBieXRlcyByZWNlaXZlZCBhY3Jvc3MgdGhlIHNvY2tldCAtIGFuZCBzaG91bGQKKyAgIHJldHVybiB0aGUgYnl0ZXMgdG8gYmUgcHJvY2Vzc2VkLCBvciBOb25lIHRvIGluZGljYXRlIHRoYXQgdGhlIGJ5dGVzIHNob3VsZAorICAgYmUgZGlzY2FyZGVkLiBUaGUgcmV0dXJuZWQgYnl0ZXMgY291bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHBhc3NlZCBpbiBieXRlcworICAgKGUuZy4gd2hlbiBvbmx5IHZlcmlmaWNhdGlvbiBpcyBkb25lKSwgb3IgdGhleSBjb3VsZCBiZSBjb21wbGV0ZWx5IGRpZmZlcmVudAorICAgKHBlcmhhcHMgaWYgZGVjcnlwdGlvbiB3ZXJlIHBlcmZvcm1lZCkuCisKICAgIFRvIHNlbmQgYSBjb25maWd1cmF0aW9uIHRvIHRoZSBzb2NrZXQsIHJlYWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQKICAgIHNlbmQgaXQgdG8gdGhlIHNvY2tldCBhcyBhIHN0cmluZyBvZiBieXRlcyBwcmVjZWRlZCBieSBhIGZvdXItYnl0ZSBsZW5ndGgKICAgIHN0cmluZyBwYWNrZWQgaW4gYmluYXJ5IHVzaW5nIGBgc3RydWN0LnBhY2soJz5MJywgbilgYC4KQEAgLTEyMSw3ICsxNTMsMTIgQEAKICAgICAgIDpmdW5jOmBsaXN0ZW5gIHNvY2tldCBhbmQgc2VuZGluZyBhIGNvbmZpZ3VyYXRpb24gd2hpY2ggcnVucyB3aGF0ZXZlcgogICAgICAgY29kZSB0aGUgYXR0YWNrZXIgd2FudHMgdG8gaGF2ZSBleGVjdXRlZCBpbiB0aGUgdmljdGltJ3MgcHJvY2Vzcy4gVGhpcyBpcwogICAgICAgZXNwZWNpYWxseSBlYXN5IHRvIGRvIGlmIHRoZSBkZWZhdWx0IHBvcnQgaXMgdXNlZCwgYnV0IG5vdCBoYXJkIGV2ZW4gaWYgYQotICAgICAgZGlmZmVyZW50IHBvcnQgaXMgdXNlZCkuCisgICAgICBkaWZmZXJlbnQgcG9ydCBpcyB1c2VkKS4gVG8gYXZvaWQgdGhlIHJpc2sgb2YgdGhpcyBoYXBwZW5pbmcsIHVzZSB0aGUKKyAgICAgIGBgdmVyaWZ5YGAgYXJndW1lbnQgdG8gOmZ1bmM6YGxpc3RlbmAgdG8gcHJldmVudCB1bnJlY29nbmlzZWQKKyAgICAgIGNvbmZpZ3VyYXRpb25zIGZyb20gYmVpbmcgYXBwbGllZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuCisgICAgICBUaGUgYGB2ZXJpZnlgYCBhcmd1bWVudCB3YXMgYWRkZWQuCiAKIC4uIGZ1bmN0aW9uOjogc3RvcExpc3RlbmluZygpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggMzBmOWUwMy4uOTA5YTY3OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTI5Niw3ICsyOTYsNyBAQAogdGltZWQgaW50ZXJ2YWxzLgogCiAKLS4uIGNsYXNzOjogVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKGZpbGVuYW1lLCB3aGVuPSdoJywgaW50ZXJ2YWw9MSwgYmFja3VwQ291bnQ9MCwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UsIHV0Yz1GYWxzZSkKKy4uIGNsYXNzOjogVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKGZpbGVuYW1lLCB3aGVuPSdoJywgaW50ZXJ2YWw9MSwgYmFja3VwQ291bnQ9MCwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UsIHV0Yz1GYWxzZSwgYXRUaW1lPU5vbmUpCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyYCBjbGFzcy4gVGhlCiAgICBzcGVjaWZpZWQgZmlsZSBpcyBvcGVuZWQgYW5kIHVzZWQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4gT24gcm90YXRpbmcgaXQgYWxzbwpAQCAtMzQ2LDYgKzM0NiwxMiBAQAogICAgSWYgKmRlbGF5KiBpcyB0cnVlLCB0aGVuIGZpbGUgb3BlbmluZyBpcyBkZWZlcnJlZCB1bnRpbCB0aGUgZmlyc3QgY2FsbCB0bwogICAgOm1ldGg6YGVtaXRgLgogCisgICBJZiAqYXRUaW1lKiBpcyBub3QgYGBOb25lYGAsIGl0IG11c3QgYmUgYSBgYGRhdGV0aW1lLnRpbWVgYCBpbnN0YW5jZSB3aGljaAorICAgc3BlY2lmaWVzIHRoZSB0aW1lIG9mIGRheSB3aGVuIHJvbGxvdmVyIG9jY3VycywgZm9yIHRoZSBjYXNlcyB3aGVyZSByb2xsb3ZlcgorICAgaXMgc2V0IHRvIGhhcHBlbiAiYXQgbWlkbmlnaHQiIG9yICJvbiBhIHBhcnRpY3VsYXIgd2Vla2RheSIuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAqYXRUaW1lKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAgICAuLiBtZXRob2Q6OiBkb1JvbGxvdmVyKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWFyc2hhbC5yc3QgYi9Eb2MvbGlicmFyeS9tYXJzaGFsLnJzdAppbmRleCAzYjllM2QyLi4xMjRlYjYxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXJzaGFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXJzaGFsLnJzdApAQCAtNDAsMTAgKzQwLDExIEBACiBwb2ludCBudW1iZXJzLCBjb21wbGV4IG51bWJlcnMsIHN0cmluZ3MsIGJ5dGVzLCBieXRlYXJyYXlzLCB0dXBsZXMsIGxpc3RzLCBzZXRzLAogZnJvemVuc2V0cywgZGljdGlvbmFyaWVzLCBhbmQgY29kZSBvYmplY3RzLCB3aGVyZSBpdCBzaG91bGQgYmUgdW5kZXJzdG9vZCB0aGF0CiB0dXBsZXMsIGxpc3RzLCBzZXRzLCBmcm96ZW5zZXRzIGFuZCBkaWN0aW9uYXJpZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGFzIGxvbmcgYXMKLXRoZSB2YWx1ZXMgY29udGFpbmVkIHRoZXJlaW4gYXJlIHRoZW1zZWx2ZXMgc3VwcG9ydGVkOyBhbmQgcmVjdXJzaXZlIGxpc3RzLCBzZXRzCi1hbmQgZGljdGlvbmFyaWVzIHNob3VsZCBub3QgYmUgd3JpdHRlbiAodGhleSB3aWxsIGNhdXNlIGluZmluaXRlIGxvb3BzKS4gIFRoZQordGhlIHZhbHVlcyBjb250YWluZWQgdGhlcmVpbiBhcmUgdGhlbXNlbHZlcyBzdXBwb3J0ZWQuCiBzaW5nbGV0b25zIDpjb25zdDpgTm9uZWAsIDpjb25zdDpgRWxsaXBzaXNgIGFuZCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBjYW4gYWxzbyBiZQogbWFyc2hhbGxlZCBhbmQgdW5tYXJzaGFsbGVkLgorRm9yIGZvcm1hdCAqdmVyc2lvbiogbG93ZXIgdGhhbiAzLCByZWN1cnNpdmUgbGlzdHMsIHNldHMgYW5kIGRpY3Rpb25hcmllcyBjYW5ub3QKK2JlIHdyaXR0ZW4gKHNlZSBiZWxvdykuCiAKIFRoZXJlIGFyZSBmdW5jdGlvbnMgdGhhdCByZWFkL3dyaXRlIGZpbGVzIGFzIHdlbGwgYXMgZnVuY3Rpb25zIG9wZXJhdGluZyBvbgogc3RyaW5ncy4KQEAgLTEwMyw3ICsxMDQsOSBAQAogCiAgICBJbmRpY2F0ZXMgdGhlIGZvcm1hdCB0aGF0IHRoZSBtb2R1bGUgdXNlcy4gVmVyc2lvbiAwIGlzIHRoZSBoaXN0b3JpY2FsCiAgICBmb3JtYXQsIHZlcnNpb24gMSBzaGFyZXMgaW50ZXJuZWQgc3RyaW5ncyBhbmQgdmVyc2lvbiAyIHVzZXMgYSBiaW5hcnkgZm9ybWF0Ci0gICBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIGN1cnJlbnQgdmVyc2lvbiBpcyAyLgorICAgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuCisgICBWZXJzaW9uIDMgYWRkcyBzdXBwb3J0IGZvciBvYmplY3QgaW5zdGFuY2luZyBhbmQgcmVjdXJzaW9uLgorICAgVGhlIGN1cnJlbnQgdmVyc2lvbiBpcyAzLgogCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggMDNiZTkyOC4uZjY1OWVhYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC03MzAsNiArNzMwLDkgQEAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gIE1heSByYWlzZQogICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKKyAgIC4uIHNlZWFsc286OgorICAgICAgOmZ1bmM6YG9zLmNwdV9jb3VudGAKKwogLi4gZnVuY3Rpb246OiBjdXJyZW50X3Byb2Nlc3MoKQogCiAgICBSZXR1cm4gdGhlIDpjbGFzczpgUHJvY2Vzc2Agb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KQEAgLTE2NzEsNyArMTY3NCw3IEBACiAgICBjYWxsYmFja3MgYW5kIGhhcyBhIHBhcmFsbGVsIG1hcCBpbXBsZW1lbnRhdGlvbi4KIAogICAgKnByb2Nlc3NlcyogaXMgdGhlIG51bWJlciBvZiB3b3JrZXIgcHJvY2Vzc2VzIHRvIHVzZS4gIElmICpwcm9jZXNzZXMqIGlzCi0gICBgYE5vbmVgYCB0aGVuIHRoZSBudW1iZXIgcmV0dXJuZWQgYnkgOmZ1bmM6YGNwdV9jb3VudGAgaXMgdXNlZC4gIElmCisgICBgYE5vbmVgYCB0aGVuIHRoZSBudW1iZXIgcmV0dXJuZWQgYnkgOmZ1bmM6YG9zLmNwdV9jb3VudGAgaXMgdXNlZC4gIElmCiAgICAqaW5pdGlhbGl6ZXIqIGlzIG5vdCBgYE5vbmVgYCB0aGVuIGVhY2ggd29ya2VyIHByb2Nlc3Mgd2lsbCBjYWxsCiAgICBgYGluaXRpYWxpemVyKCppbml0YXJncylgYCB3aGVuIGl0IHN0YXJ0cy4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdAppbmRleCAxZDFhYTQwLi43M2I1MWMwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9ubnRwbGliLnJzdApAQCAtMSw0ICsxLDMgQEAKLQogOm1vZDpgbm50cGxpYmAgLS0tIE5OVFAgcHJvdG9jb2wgY2xpZW50CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtNzEsNyArNzAsNyBAQAogICAgcmVhZGVyLXNwZWNpZmljIGNvbW1hbmRzLCBzdWNoIGFzIGBgZ3JvdXBgYC4gIElmIHlvdSBnZXQgdW5leHBlY3RlZAogICAgOmV4YzpgTk5UUFBlcm1hbmVudEVycm9yYFwgcywgeW91IG1pZ2h0IG5lZWQgdG8gc2V0ICpyZWFkZXJtb2RlKi4KICAgIDpjbGFzczpgTk5UUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgdG8KLSAgIHVuY29uZGl0aW9uYWxseSBjb25zdW1lIDpleGM6YHNvY2tldC5lcnJvcmAgZXhjZXB0aW9ucyBhbmQgdG8gY2xvc2UgdGhlIE5OVFAKKyAgIHVuY29uZGl0aW9uYWxseSBjb25zdW1lIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbnMgYW5kIHRvIGNsb3NlIHRoZSBOTlRQCiAgICBjb25uZWN0aW9uIHdoZW4gZG9uZS4gSGVyZSBpcyBhIHNhbXBsZSBvbiBob3cgdXNpbmcgaXQ6CiAKICAgICA+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QKaW5kZXggZGU3YTU0Mi4uZDAxZDMzYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L29wZXJhdG9yLnJzdApAQCAtMTEsNiArMTEsOSBAQAogICAgaW1wb3J0IG9wZXJhdG9yCiAgICBmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyLCBpYWRkCiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL29wZXJhdG9yLnB5YAorCistLS0tLS0tLS0tLS0tLQogCiBUaGUgOm1vZDpgb3BlcmF0b3JgIG1vZHVsZSBleHBvcnRzIGEgc2V0IG9mIGVmZmljaWVudCBmdW5jdGlvbnMgY29ycmVzcG9uZGluZyB0bwogdGhlIGludHJpbnNpYyBvcGVyYXRvcnMgb2YgUHl0aG9uLiAgRm9yIGV4YW1wbGUsIGBgb3BlcmF0b3IuYWRkKHgsIHkpYGAgaXMKQEAgLTIzNSw2ICsyMzgsMTQgQEAKIAogLi4gWFhYOiBmaW5kIGEgYmV0dGVyLCByZWFkYWJsZSwgZXhhbXBsZQogCisuLiBmdW5jdGlvbjo6IGxlbmd0aF9oaW50KG9iaiwgZGVmYXVsdD0wKQorCisgICBSZXR1cm4gYW4gZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAqbyouIEZpcnN0IHRyeWluZyB0byByZXR1cm4gaXRzCisgICBhY3R1YWwgbGVuZ3RoLCB0aGVuIGFuIGVzdGltYXRlIHVzaW5nIDptZXRoOmBvYmplY3QuX19sZW5ndGhfaGludF9fYCwgYW5kCisgICBmaW5hbGx5IHJldHVybmluZyB0aGUgZGVmYXVsdCB2YWx1ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIFRoZSA6bW9kOmBvcGVyYXRvcmAgbW9kdWxlIGFsc28gZGVmaW5lcyB0b29scyBmb3IgZ2VuZXJhbGl6ZWQgYXR0cmlidXRlIGFuZCBpdGVtCiBsb29rdXBzLiAgVGhlc2UgYXJlIHVzZWZ1bCBmb3IgbWFraW5nIGZhc3QgZmllbGQgZXh0cmFjdG9ycyBhcyBhcmd1bWVudHMgZm9yCiA6ZnVuYzpgbWFwYCwgOmZ1bmM6YHNvcnRlZGAsIDptZXRoOmBpdGVydG9vbHMuZ3JvdXBieWAsIG9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdCBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CmluZGV4IDFkNDZiZjIuLmEwZjAwNmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CkBAIC00Miw3ICs0Miw2IEBACiAgICAqIDptb2Q6YHBvc2l4cGF0aGAgZm9yIFVOSVgtc3R5bGUgcGF0aHMKICAgICogOm1vZDpgbnRwYXRoYCBmb3IgV2luZG93cyBwYXRocwogICAgKiA6bW9kOmBtYWNwYXRoYCBmb3Igb2xkLXN0eWxlIE1hY09TIHBhdGhzCi0gICAqIDptb2Q6YG9zMmVteHBhdGhgIGZvciBPUy8yIEVNWCBwYXRocwogCiAKIC4uIGZ1bmN0aW9uOjogYWJzcGF0aChwYXRoKQpAQCAtMjUwLDE1ICsyNDksMTQgQEAKICAgIE9uIFVuaXgsIHRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZGV2aWNlIG51bWJlciBhbmQgaS1ub2RlIG51bWJlciBhbmQgcmFpc2VzIGFuCiAgICBleGNlcHRpb24gaWYgYSA6ZnVuYzpgb3Muc3RhdGAgY2FsbCBvbiBlaXRoZXIgcGF0aG5hbWUgZmFpbHMuCiAKLSAgIE9uIFdpbmRvd3MsIHR3byBmaWxlcyBhcmUgdGhlIHNhbWUgaWYgdGhleSByZXNvbHZlIHRvIHRoZSBzYW1lIGZpbmFsIHBhdGgKLSAgIG5hbWUgdXNpbmcgdGhlIFdpbmRvd3MgQVBJIGNhbGwgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlLiBUaGlzIGZ1bmN0aW9uCi0gICByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIGhhbmRsZXMgY2Fubm90IGJlIG9idGFpbmVkIHRvIGVpdGhlciBmaWxlLgotCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBXaW5kb3dzIG5vdyB1c2VzIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIGFsbCBvdGhlciBwbGF0Zm9ybXMuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lb3BlbmZpbGUoZnAxLCBmcDIpCiAKQEAgLTI3Nyw3ICsyNzUsMTAgQEAKICAgIDpmdW5jOmBzdGF0YC4gIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgdW5kZXJseWluZyBjb21wYXJpc29uIHVzZWQgYnkKICAgIDpmdW5jOmBzYW1lZmlsZWAgYW5kIDpmdW5jOmBzYW1lb3BlbmZpbGVgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBzcGxpdChwYXRoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucnN0IGIvRG9jL2xpYnJhcnkvb3MucnN0CmluZGV4IDhiYmIyZWMuLjVkOGVjZmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5yc3QKQEAgLTU0LDcgKzU0LDcgQEAKIAogICAgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZSBpbXBvcnRlZC4gIFRoZSBmb2xsb3dpbmcKICAgIG5hbWVzIGhhdmUgY3VycmVudGx5IGJlZW4gcmVnaXN0ZXJlZDogYGAncG9zaXgnYGAsIGBgJ250J2BgLCBgYCdtYWMnYGAsCi0gICBgYCdvczInYGAsIGBgJ2NlJ2BgLCBgYCdqYXZhJ2BgLgorICAgYGAnY2UnYGAsIGBgJ2phdmEnYGAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmF0dHI6YHN5cy5wbGF0Zm9ybWAgaGFzIGEgZmluZXIgZ3JhbnVsYXJpdHkuICA6ZnVuYzpgb3MudW5hbWVgIGdpdmVzCkBAIC04NTEsMTEgKzg1MSwxMSBAQAogCiAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmxhZyBhbmQgbW9kZSB2YWx1ZXMsIHNlZSB0aGUgQyBydW4tdGltZSBkb2N1bWVudGF0aW9uOwogICAgZmxhZyBjb25zdGFudHMgKGxpa2UgOmNvbnN0OmBPX1JET05MWWAgYW5kIDpjb25zdDpgT19XUk9OTFlgKSBhcmUgZGVmaW5lZCBpbgotICAgdGhpcyBtb2R1bGUgdG9vIChzZWUgOnJlZjpgb3Blbi1jb25zdGFudHNgKS4gIEluIHBhcnRpY3VsYXIsIG9uIFdpbmRvd3MgYWRkaW5nCisgICB0aGUgOm1vZDpgb3NgIG1vZHVsZS4gIEluIHBhcnRpY3VsYXIsIG9uIFdpbmRvd3MgYWRkaW5nCiAgICA6Y29uc3Q6YE9fQklOQVJZYCBpcyBuZWVkZWQgdG8gb3BlbiBmaWxlcyBpbiBiaW5hcnkgbW9kZS4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKLSAgIDxkaXJfZmQ+YC4KKyAgIDxkaXJfZmQ+YCB3aXRoIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIApAQCAtODY5LDYgKzg2OSw2MCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKK1RoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBvcHRpb25zIGZvciB0aGUgKmZsYWdzKiBwYXJhbWV0ZXIgdG8gdGhlCis6ZnVuYzpgfm9zLm9wZW5gIGZ1bmN0aW9uLiAgVGhleSBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3IKK2BgfGBgLiAgU29tZSBvZiB0aGVtIGFyZSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBGb3IgZGVzY3JpcHRpb25zIG9mCit0aGVpciBhdmFpbGFiaWxpdHkgYW5kIHVzZSwgY29uc3VsdCB0aGUgOm1hbnBhZ2U6YG9wZW4oMilgIG1hbnVhbCBwYWdlIG9uIFVuaXgKK29yIGB0aGUgTVNETiA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3owa2M4ZTN6LmFzcHg+YF8gb24gV2luZG93cy4KKworCisuLiBkYXRhOjogT19SRE9OTFkKKyAgICAgICAgICBPX1dST05MWQorICAgICAgICAgIE9fUkRXUgorICAgICAgICAgIE9fQVBQRU5ECisgICAgICAgICAgT19DUkVBVAorICAgICAgICAgIE9fRVhDTAorICAgICAgICAgIE9fVFJVTkMKKworICAgVGhlc2UgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUgb24gVW5peCBhbmQgV2luZG93cy4KKworCisuLiBkYXRhOjogT19EU1lOQworICAgICAgICAgIE9fUlNZTkMKKyAgICAgICAgICBPX1NZTkMKKyAgICAgICAgICBPX05ERUxBWQorICAgICAgICAgIE9fTk9OQkxPQ0sKKyAgICAgICAgICBPX05PQ1RUWQorICAgICAgICAgIE9fU0hMT0NLCisgICAgICAgICAgT19FWExPQ0sKKyAgICAgICAgICBPX0NMT0VYRUMKKworICAgVGhlc2UgY29uc3RhbnRzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBVbml4LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkIDpkYXRhOmBPX0NMT0VYRUNgIGNvbnN0YW50LgorCisuLiBkYXRhOjogT19CSU5BUlkKKyAgICAgICAgICBPX05PSU5IRVJJVAorICAgICAgICAgIE9fU0hPUlRfTElWRUQKKyAgICAgICAgICBPX1RFTVBPUkFSWQorICAgICAgICAgIE9fUkFORE9NCisgICAgICAgICAgT19TRVFVRU5USUFMCisgICAgICAgICAgT19URVhUCisKKyAgIFRoZXNlIGNvbnN0YW50cyBhcmUgb25seSBhdmFpbGFibGUgb24gV2luZG93cy4KKworCisuLiBkYXRhOjogT19BU1lOQworICAgICAgICAgIE9fRElSRUNUCisgICAgICAgICAgT19ESVJFQ1RPUlkKKyAgICAgICAgICBPX05PRk9MTE9XCisgICAgICAgICAgT19OT0FUSU1FCisgICAgICAgICAgT19QQVRICisKKyAgIFRoZXNlIGNvbnN0YW50cyBhcmUgR05VIGV4dGVuc2lvbnMgYW5kIG5vdCBwcmVzZW50IGlmIHRoZXkgYXJlIG5vdCBkZWZpbmVkIGJ5CisgICB0aGUgQyBsaWJyYXJ5LgorCiAKIC4uIGZ1bmN0aW9uOjogb3BlbnB0eSgpCiAKQEAgLTEwODIsNzggKzExMzYsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gX29wZW4tY29uc3RhbnRzOgotCi1gYG9wZW4oKWBgIGZsYWcgY29uc3RhbnRzCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBvcHRpb25zIGZvciB0aGUgKmZsYWdzKiBwYXJhbWV0ZXIgdG8gdGhlCi06ZnVuYzpgfm9zLm9wZW5gIGZ1bmN0aW9uLiAgVGhleSBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3IKLWBgfGBgLiAgU29tZSBvZiB0aGVtIGFyZSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBGb3IgZGVzY3JpcHRpb25zIG9mCi10aGVpciBhdmFpbGFiaWxpdHkgYW5kIHVzZSwgY29uc3VsdCB0aGUgOm1hbnBhZ2U6YG9wZW4oMilgIG1hbnVhbCBwYWdlIG9uIFVuaXgKLW9yIGB0aGUgTVNETiA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3owa2M4ZTN6LmFzcHg+YF8gb24gV2luZG93cy4KLQotCi0uLiBkYXRhOjogT19SRE9OTFkKLSAgICAgICAgICBPX1dST05MWQotICAgICAgICAgIE9fUkRXUgotICAgICAgICAgIE9fQVBQRU5ECi0gICAgICAgICAgT19DUkVBVAotICAgICAgICAgIE9fRVhDTAotICAgICAgICAgIE9fVFJVTkMKLQotICAgVGhlc2UgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUgb24gVW5peCBhbmQgV2luZG93cy4KLQotCi0uLiBkYXRhOjogT19EU1lOQwotICAgICAgICAgIE9fUlNZTkMKLSAgICAgICAgICBPX1NZTkMKLSAgICAgICAgICBPX05ERUxBWQotICAgICAgICAgIE9fTk9OQkxPQ0sKLSAgICAgICAgICBPX05PQ1RUWQotICAgICAgICAgIE9fU0hMT0NLCi0gICAgICAgICAgT19FWExPQ0sKLSAgICAgICAgICBPX0NMT0VYRUMKLQotICAgVGhlc2UgY29uc3RhbnRzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBVbml4LgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgQWRkIDpkYXRhOmBPX0NMT0VYRUNgIGNvbnN0YW50LgotCi0uLiBkYXRhOjogT19CSU5BUlkKLSAgICAgICAgICBPX05PSU5IRVJJVAotICAgICAgICAgIE9fU0hPUlRfTElWRUQKLSAgICAgICAgICBPX1RFTVBPUkFSWQotICAgICAgICAgIE9fUkFORE9NCi0gICAgICAgICAgT19TRVFVRU5USUFMCi0gICAgICAgICAgT19URVhUCi0KLSAgIFRoZXNlIGNvbnN0YW50cyBhcmUgb25seSBhdmFpbGFibGUgb24gV2luZG93cy4KLQotCi0uLiBkYXRhOjogT19BU1lOQwotICAgICAgICAgIE9fRElSRUNUCi0gICAgICAgICAgT19ESVJFQ1RPUlkKLSAgICAgICAgICBPX05PRk9MTE9XCi0gICAgICAgICAgT19OT0FUSU1FCi0KLSAgIFRoZXNlIGNvbnN0YW50cyBhcmUgR05VIGV4dGVuc2lvbnMgYW5kIG5vdCBwcmVzZW50IGlmIHRoZXkgYXJlIG5vdCBkZWZpbmVkIGJ5Ci0gICB0aGUgQyBsaWJyYXJ5LgotCi0KLS4uIGRhdGE6OiBSVExEX0xBWlkKLSAgICAgICAgICBSVExEX05PVwotICAgICAgICAgIFJUTERfR0xPQkFMCi0gICAgICAgICAgUlRMRF9MT0NBTAotICAgICAgICAgIFJUTERfTk9ERUxFVEUKLSAgICAgICAgICBSVExEX05PTE9BRAotICAgICAgICAgIFJUTERfREVFUEJJTkQKLQotICAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlIDptYW5wYWdlOmBkbG9wZW4oMylgLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotCiAuLiBfdGVybWluYWwtc2l6ZToKIAogUXVlcnlpbmcgdGhlIHNpemUgb2YgYSB0ZXJtaW5hbApAQCAtMzA0Nyw3ICszMDI5LDcgQEAKIAogLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLVRoZSBmb2xsb3dpbmcgc2NoZWR1bGluZyBwb2xpY2llcyBhcmUgZXhwb3NlZCBpZiB0aGV5IGFyZSBhIHN1cHBvcnRlZCBieSB0aGUKK1RoZSBmb2xsb3dpbmcgc2NoZWR1bGluZyBwb2xpY2llcyBhcmUgZXhwb3NlZCBpZiB0aGV5IGFyZSBzdXBwb3J0ZWQgYnkgdGhlCiBvcGVyYXRpbmcgc3lzdGVtLgogCiAuLiBkYXRhOjogU0NIRURfT1RIRVIKQEAgLTMxNTYsMTAgKzMxMzgsNiBAQAogICAgUmV0dXJuIHRoZSBzZXQgb2YgQ1BVcyB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcwogICAgaWYgemVybykgaXMgcmVzdHJpY3RlZCB0by4KIAotICAgLi4gc2VlYWxzbzo6Ci0gICAgICA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlCi0gICAgICBzeXN0ZW0uCi0KIAogLi4gX29zLXBhdGg6CiAKQEAgLTMxOTcsNiArMzE3NSwxMyBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogY3B1X2NvdW50KCkKKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLiBSZXR1cm5zIE5vbmUgaWYgdW5kZXRlcm1pbmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBmdW5jdGlvbjo6IGdldGxvYWRhdmcoKQogCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgaW4gdGhlIHN5c3RlbSBydW4gcXVldWUgYXZlcmFnZWQgb3ZlciB0aGUgbGFzdApAQCAtMzI5NCw2ICszMjc5LDE5IEBACiAgICBUaGUgZmlsZSBwYXRoIG9mIHRoZSBudWxsIGRldmljZS4gRm9yIGV4YW1wbGU6IGBgJy9kZXYvbnVsbCdgYCBmb3IKICAgIFBPU0lYLCBgYCdudWwnYGAgZm9yIFdpbmRvd3MuICBBbHNvIGF2YWlsYWJsZSB2aWEgOm1vZDpgb3MucGF0aGAuCiAKKy4uIGRhdGE6OiBSVExEX0xBWlkKKyAgICAgICAgICBSVExEX05PVworICAgICAgICAgIFJUTERfR0xPQkFMCisgICAgICAgICAgUlRMRF9MT0NBTAorICAgICAgICAgIFJUTERfTk9ERUxFVEUKKyAgICAgICAgICBSVExEX05PTE9BRAorICAgICAgICAgIFJUTERfREVFUEJJTkQKKworICAgRmxhZ3MgZm9yIHVzZSB3aXRoIHRoZSA6ZnVuYzpgfnN5cy5zZXRkbG9wZW5mbGFnc2AgYW5kCisgICA6ZnVuYzpgfnN5cy5nZXRkbG9wZW5mbGFnc2AgZnVuY3Rpb25zLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlCisgICA6bWFucGFnZTpgZGxvcGVuKDMpYCBmb3Igd2hhdCB0aGUgZGlmZmVyZW50IGZsYWdzIG1lYW4uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBfb3MtbWlzY2Z1bmM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CmluZGV4IGI0MDgwZDYuLmUyNDhkNmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdApAQCAtMTMsOCArMTMsMTEgQEAKIC0tLS0tLS0tLS0tLS0tCiAKIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjbGFzcywgOmNsYXNzOmBQT1AzYCwgd2hpY2ggZW5jYXBzdWxhdGVzIGEgY29ubmVjdGlvbiB0byBhCi1QT1AzIHNlcnZlciBhbmQgaW1wbGVtZW50cyB0aGUgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiA6cmZjOmAxNzI1YC4gIFRoZQotOmNsYXNzOmBQT1AzYCBjbGFzcyBzdXBwb3J0cyBib3RoIHRoZSBtaW5pbWFsIGFuZCBvcHRpb25hbCBjb21tYW5kIHNldHMuCitQT1AzIHNlcnZlciBhbmQgaW1wbGVtZW50cyB0aGUgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiA6cmZjOmAxOTM5YC4gVGhlCis6Y2xhc3M6YFBPUDNgIGNsYXNzIHN1cHBvcnRzIGJvdGggdGhlIG1pbmltYWwgYW5kIG9wdGlvbmFsIGNvbW1hbmQgc2V0cyBmcm9tCis6cmZjOmAxOTM5YC4gVGhlIDpjbGFzczpgUE9QM2AgY2xhc3MgYWxzbyBzdXBwb3J0cyB0aGUgYFNUTFNgIGNvbW1hbmQgaW50cm9kdWNlZAoraW4gOnJmYzpgMjU5NWAgdG8gZW5hYmxlIGVuY3J5cHRlZCBjb21tdW5pY2F0aW9uIG9uIGFuIGFscmVhZHkgZXN0YWJsaXNoZWQgY29ubmVjdGlvbi4KKwogQWRkaXRpb25hbGx5LCB0aGlzIG1vZHVsZSBwcm92aWRlcyBhIGNsYXNzIDpjbGFzczpgUE9QM19TU0xgLCB3aGljaCBwcm92aWRlcwogc3VwcG9ydCBmb3IgY29ubmVjdGluZyB0byBQT1AzIHNlcnZlcnMgdGhhdCB1c2UgU1NMIGFzIGFuIHVuZGVybHlpbmcgcHJvdG9jb2wKIGxheWVyLgpAQCAtOTcsNiArMTAwLDE0IEBACiAgICBSZXR1cm5zIHRoZSBncmVldGluZyBzdHJpbmcgc2VudCBieSB0aGUgUE9QMyBzZXJ2ZXIuCiAKIAorLi4gbWV0aG9kOjogUE9QMy5jYXBhKCkKKworICAgUXVlcnkgdGhlIHNlcnZlcidzIGNhcGFiaWxpdGllcyBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgMjQ0OWAuCisgICBSZXR1cm5zIGEgZGljdGlvbmFyeSBpbiB0aGUgZm9ybSBgYHsnbmFtZSc6IFsncGFyYW0nLi4uXX1gYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gbWV0aG9kOjogUE9QMy51c2VyKHVzZXJuYW1lKQogCiAgICBTZW5kIHVzZXIgY29tbWFuZCwgcmVzcG9uc2Ugc2hvdWxkIGluZGljYXRlIHRoYXQgYSBwYXNzd29yZCBpcyByZXF1aXJlZC4KQEAgLTE3Niw2ICsxODcsMTggQEAKICAgIHRoZSB1bmlxdWUgaWQgZm9yIHRoYXQgbWVzc2FnZSBpbiB0aGUgZm9ybSBgYCdyZXNwb25zZSBtZXNnbnVtIHVpZGBgLCBvdGhlcndpc2UKICAgIHJlc3VsdCBpcyBsaXN0IGBgKHJlc3BvbnNlLCBbJ21lc2dudW0gdWlkJywgLi4uXSwgb2N0ZXRzKWBgLgogCisuLiBtZXRob2Q6OiBQT1AzLnN0bHMoY29udGV4dD1Ob25lKQorCisgICBTdGFydCBhIFRMUyBzZXNzaW9uIG9uIHRoZSBhY3RpdmUgY29ubmVjdGlvbiBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgMjU5NWAuCisgICBUaGlzIGlzIG9ubHkgYWxsb3dlZCBiZWZvcmUgdXNlciBhdXRoZW50aWNhdGlvbgorCisgICAqY29udGV4dCogcGFyYW1ldGVyIGlzIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cworICAgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50bworICAgYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogSW5zdGFuY2VzIG9mIDpjbGFzczpgUE9QM19TU0xgIGhhdmUgbm8gYWRkaXRpb25hbCBtZXRob2RzLiBUaGUgaW50ZXJmYWNlIG9mIHRoaXMKIHN1YmNsYXNzIGlzIGlkZW50aWNhbCB0byBpdHMgcGFyZW50LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wcHJpbnQucnN0IGIvRG9jL2xpYnJhcnkvcHByaW50LnJzdAppbmRleCAzYTg2MzMxLi44ZDU3YzVkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wcHJpbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BwcmludC5yc3QKQEAgLTE0LDggKzE0LDggQEAKIFB5dGhvbiBkYXRhIHN0cnVjdHVyZXMgaW4gYSBmb3JtIHdoaWNoIGNhbiBiZSB1c2VkIGFzIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlci4KIElmIHRoZSBmb3JtYXR0ZWQgc3RydWN0dXJlcyBpbmNsdWRlIG9iamVjdHMgd2hpY2ggYXJlIG5vdCBmdW5kYW1lbnRhbCBQeXRob24KIHR5cGVzLCB0aGUgcmVwcmVzZW50YXRpb24gbWF5IG5vdCBiZSBsb2FkYWJsZS4gIFRoaXMgbWF5IGJlIHRoZSBjYXNlIGlmIG9iamVjdHMKLXN1Y2ggYXMgZmlsZXMsIHNvY2tldHMsIGNsYXNzZXMsIG9yIGluc3RhbmNlcyBhcmUgaW5jbHVkZWQsIGFzIHdlbGwgYXMgbWFueQotb3RoZXIgYnVpbHQtaW4gb2JqZWN0cyB3aGljaCBhcmUgbm90IHJlcHJlc2VudGFibGUgYXMgUHl0aG9uIGNvbnN0YW50cy4KK3N1Y2ggYXMgZmlsZXMsIHNvY2tldHMgb3IgY2xhc3NlcyBhcmUgaW5jbHVkZWQsIGFzIHdlbGwgYXMgbWFueSBvdGhlcgorb2JqZWN0cyB3aGljaCBhcmUgbm90IHJlcHJlc2VudGFibGUgYXMgUHl0aG9uIGxpdGVyYWxzLgogCiBUaGUgZm9ybWF0dGVkIHJlcHJlc2VudGF0aW9uIGtlZXBzIG9iamVjdHMgb24gYSBzaW5nbGUgbGluZSBpZiBpdCBjYW4sIGFuZAogYnJlYWtzIHRoZW0gb250byBtdWx0aXBsZSBsaW5lcyBpZiB0aGV5IGRvbid0IGZpdCB3aXRoaW4gdGhlIGFsbG93ZWQgd2lkdGguCkBAIC02NSw3ICs2NSw3IEBACiAgICAgICAoJ3NwYW0nLCAoJ2VnZ3MnLCAoJ2x1bWJlcmphY2snLCAoJ2tuaWdodHMnLCAoJ25pJywgKCdkZWFkJywgKC4uLikpKSkpKSkKIAogCi1UaGUgOmNsYXNzOmBQcmV0dHlQcmludGVyYCBjbGFzcyBzdXBwb3J0cyBzZXZlcmFsIGRlcml2YXRpdmUgZnVuY3Rpb25zOgorVGhlIDptb2Q6YHBwcmludGAgbW9kdWxlIGFsc28gcHJvdmlkZXMgc2V2ZXJhbCBzaG9ydGN1dCBmdW5jdGlvbnM6CiAKIC4uIGZ1bmN0aW9uOjogcGZvcm1hdChvYmplY3QsIGluZGVudD0xLCB3aWR0aD04MCwgZGVwdGg9Tm9uZSkKIApAQCAtMTkzLDEwMSArMTkzLDE0MSBAQAogLS0tLS0tLQogCiBUbyBkZW1vbnN0cmF0ZSBzZXZlcmFsIHVzZXMgb2YgdGhlIDpmdW5jOmBwcHJpbnRgIGZ1bmN0aW9uIGFuZCBpdHMgcGFyYW1ldGVycywKLWxldCdzIGZldGNoIGluZm9ybWF0aW9uIGFib3V0IGEgcHJvamVjdCBmcm9tIFB5UEk6OgorbGV0J3MgZmV0Y2ggaW5mb3JtYXRpb24gYWJvdXQgYSBwcm9qZWN0IGZyb20gYFB5UEkgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnPmBfOjoKIAogICAgPj4+IGltcG9ydCBqc29uCiAgICA+Pj4gaW1wb3J0IHBwcmludAogICAgPj4+IGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KLSAgID4+PiB3aXRoIHVybG9wZW4oJ2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jb25maWdwYXJzZXIvanNvbicpIGFzIHVybDoKKyAgID4+PiB3aXRoIHVybG9wZW4oJ2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9Ud2lzdGVkL2pzb24nKSBhcyB1cmw6CiAgICAuLi4gICAgIGh0dHBfaW5mbyA9IHVybC5pbmZvKCkKICAgIC4uLiAgICAgcmF3X2RhdGEgPSB1cmwucmVhZCgpLmRlY29kZShodHRwX2luZm8uZ2V0X2NvbnRlbnRfY2hhcnNldCgpKQogICAgPj4+IHByb2plY3RfaW5mbyA9IGpzb24ubG9hZHMocmF3X2RhdGEpCi0gICA+Pj4gcmVzdWx0ID0geydoZWFkZXJzJzogaHR0cF9pbmZvLml0ZW1zKCksICdib2R5JzogcHJvamVjdF9pbmZvfQogCiBJbiBpdHMgYmFzaWMgZm9ybSwgOmZ1bmM6YHBwcmludGAgc2hvd3MgdGhlIHdob2xlIG9iamVjdDo6CiAKLSAgID4+PiBwcHJpbnQucHByaW50KHJlc3VsdCkKLSAgIHsnYm9keSc6IHsnaW5mbyc6IHsnX3B5cGlfaGlkZGVuJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgJ19weXBpX29yZGVyaW5nJzogMTIsCi0gICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBPUyBJbmRlcGVuZGVudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMgOjogUHl0aG9uIE1vZHVsZXMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLAotICAgICAgICAgICAgICAgICAgICAgICdob21lX3BhZ2UnOiAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy9weTNrL2xpYnJhcnkvY29uZmlncGFyc2VyLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6ICdjb25maWdwYXJzZXIgaW5pIHBhcnNpbmcgY29uZiBjZmcgY29uZmlndXJhdGlvbiBmaWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAnbGljZW5zZSc6ICdNSVQnLAotICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2NvbmZpZ3BhcnNlcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ3BhY2thZ2VfdXJsJzogJ2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jb25maWdwYXJzZXInLAotICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdhbnknLAotICAgICAgICAgICAgICAgICAgICAgICdyZWxlYXNlX3VybCc6ICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY29uZmlncGFyc2VyLzMuMi4wcjMnLAotICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlc19weXRob24nOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICdzdGFibGVfdmVyc2lvbic6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgJ3N1bW1hcnknOiAnVGhpcyBsaWJyYXJ5IGJyaW5ncyB0aGUgdXBkYXRlZCBjb25maWdwYXJzZXIgZnJvbSBQeXRob24gMy4yKyB0byBQeXRob24gMi42LTIuNy4nLAotICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzMuMi4wcjMnfSwKLSAgICAgICAgICAgJ3VybHMnOiBbeydjb21tZW50X3RleHQnOiAnJywKLSAgICAgICAgICAgICAgICAgICAgICdkb3dubG9hZHMnOiA0NywKLSAgICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdjb25maWdwYXJzZXItMy4yLjByMy50YXIuZ3onLAotICAgICAgICAgICAgICAgICAgICAgJ2hhc19zaWcnOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICdtZDVfZGlnZXN0JzogJzg1MDBmZDg3YzYxYWMwZGUzMjhmYzk5NmZjZTY5Yjk2JywKLSAgICAgICAgICAgICAgICAgICAgICdwYWNrYWdldHlwZSc6ICdzZGlzdCcsCi0gICAgICAgICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24nOiAnc291cmNlJywKLSAgICAgICAgICAgICAgICAgICAgICdzaXplJzogMzIyODEsCi0gICAgICAgICAgICAgICAgICAgICAndXBsb2FkX3RpbWUnOiAnMjAxMS0wNS0xMFQxNjoyODo1MCcsCi0gICAgICAgICAgICAgICAgICAgICAndXJsJzogJ2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL2MvY29uZmlncGFyc2VyL2NvbmZpZ3BhcnNlci0zLjIuMHIzLnRhci5neid9XX0sCi0gICAnaGVhZGVycyc6IFsoJ0RhdGUnLCAnU2F0LCAxNCBNYXkgMjAxMSAxMjo0ODo1MiBHTVQnKSwKLSAgICAgICAgICAgICAgICgnU2VydmVyJywgJ0FwYWNoZS8yLjIuMTYgKERlYmlhbiknKSwKLSAgICAgICAgICAgICAgICgnQ29udGVudC1EaXNwb3NpdGlvbicsICdpbmxpbmUnKSwKLSAgICAgICAgICAgICAgICgnQ29ubmVjdGlvbicsICdjbG9zZScpLAotICAgICAgICAgICAgICAgKCdUcmFuc2Zlci1FbmNvZGluZycsICdjaHVua2VkJyksCi0gICAgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PSJVVEYtOCInKV19CisgICA+Pj4gcHByaW50LnBwcmludChwcm9qZWN0X2luZm8pCisgICB7J2luZm8nOiB7J19weXBpX2hpZGRlbic6IEZhbHNlLAorICAgICAgICAgICAgICdfcHlwaV9vcmRlcmluZyc6IDEyNSwKKyAgICAgICAgICAgICAnYXV0aG9yJzogJ0dseXBoIExlZmtvd2l0eicsCisgICAgICAgICAgICAgJ2F1dGhvcl9lbWFpbCc6ICdnbHlwaEB0d2lzdGVkbWF0cml4LmNvbScsCisgICAgICAgICAgICAgJ2J1Z3RyYWNrX3VybCc6ICcnLAorICAgICAgICAgICAgICdjaGVlc2VjYWtlX2NvZGVfa3dhbGl0ZWVfaWQnOiBOb25lLAorICAgICAgICAgICAgICdjaGVlc2VjYWtlX2RvY3VtZW50YXRpb25faWQnOiBOb25lLAorICAgICAgICAgICAgICdjaGVlc2VjYWtlX2luc3RhbGxhYmlsaXR5X2lkJzogTm9uZSwKKyAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMiA6OiBPbmx5J10sCisgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgZnJhbWV3b3JrIGZvciBQeXRob24gcHJvZ3JhbW1pbmcsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBzcGVjaWFsIGZvY3VzXHJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayBwcm9ncmFtbWluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXByb3RvY29sIGludGVncmF0aW9uLicsCisgICAgICAgICAgICAgJ2RvY3NfdXJsJzogJycsCisgICAgICAgICAgICAgJ2Rvd25sb2FkX3VybCc6ICdVTktOT1dOJywKKyAgICAgICAgICAgICAnaG9tZV9wYWdlJzogJ2h0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS8nLAorICAgICAgICAgICAgICdrZXl3b3Jkcyc6ICcnLAorICAgICAgICAgICAgICdsaWNlbnNlJzogJ01JVCcsCisgICAgICAgICAgICAgJ21haW50YWluZXInOiAnJywKKyAgICAgICAgICAgICAnbWFpbnRhaW5lcl9lbWFpbCc6ICcnLAorICAgICAgICAgICAgICduYW1lJzogJ1R3aXN0ZWQnLAorICAgICAgICAgICAgICdwYWNrYWdlX3VybCc6ICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvVHdpc3RlZCcsCisgICAgICAgICAgICAgJ3BsYXRmb3JtJzogJ1VOS05PV04nLAorICAgICAgICAgICAgICdyZWxlYXNlX3VybCc6ICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvVHdpc3RlZC8xMi4zLjAnLAorICAgICAgICAgICAgICdyZXF1aXJlc19weXRob24nOiBOb25lLAorICAgICAgICAgICAgICdzdGFibGVfdmVyc2lvbic6IE5vbmUsCisgICAgICAgICAgICAgJ3N1bW1hcnknOiAnQW4gYXN5bmNocm9ub3VzIG5ldHdvcmtpbmcgZnJhbWV3b3JrIHdyaXR0ZW4gaW4gUHl0aG9uJywKKyAgICAgICAgICAgICAndmVyc2lvbic6ICcxMi4zLjAnfSwKKyAgICAndXJscyc6IFt7J2NvbW1lbnRfdGV4dCc6ICcnLAorICAgICAgICAgICAgICAnZG93bmxvYWRzJzogNzE4NDQsCisgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdUd2lzdGVkLTEyLjMuMC50YXIuYnoyJywKKyAgICAgICAgICAgICAgJ2hhc19zaWcnOiBGYWxzZSwKKyAgICAgICAgICAgICAgJ21kNV9kaWdlc3QnOiAnNmUyODk4MjVmM2JmNTU5MWNmZDY3MDg3NGNjMDg2MmQnLAorICAgICAgICAgICAgICAncGFja2FnZXR5cGUnOiAnc2Rpc3QnLAorICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24nOiAnc291cmNlJywKKyAgICAgICAgICAgICAgJ3NpemUnOiAyNjE1NzMzLAorICAgICAgICAgICAgICAndXBsb2FkX3RpbWUnOiAnMjAxMi0xMi0yNlQxMjo0NzowMycsCisgICAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL1QvVHdpc3RlZC9Ud2lzdGVkLTEyLjMuMC50YXIuYnoyJ30sCisgICAgICAgICAgICAgeydjb21tZW50X3RleHQnOiAnJywKKyAgICAgICAgICAgICAgJ2Rvd25sb2Fkcyc6IDUyMjQsCisgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdUd2lzdGVkLTEyLjMuMC53aW4zMi1weTIuNy5tc2knLAorICAgICAgICAgICAgICAnaGFzX3NpZyc6IEZhbHNlLAorICAgICAgICAgICAgICAnbWQ1X2RpZ2VzdCc6ICc2Yjc3OGY1MjAxYjYyMmE1NTE5YTJhY2ExYTJmZTUxMicsCisgICAgICAgICAgICAgICdwYWNrYWdldHlwZSc6ICdiZGlzdF9tc2knLAorICAgICAgICAgICAgICAncHl0aG9uX3ZlcnNpb24nOiAnMi43JywKKyAgICAgICAgICAgICAgJ3NpemUnOiAyOTE2MzUyLAorICAgICAgICAgICAgICAndXBsb2FkX3RpbWUnOiAnMjAxMi0xMi0yNlQxMjo0ODoxNScsCisgICAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvMi43L1QvVHdpc3RlZC9Ud2lzdGVkLTEyLjMuMC53aW4zMi1weTIuNy5tc2knfV19CiAKIFRoZSByZXN1bHQgY2FuIGJlIGxpbWl0ZWQgdG8gYSBjZXJ0YWluICpkZXB0aCogKGVsbGlwc2lzIGlzIHVzZWQgZm9yIGRlZXBlcgogY29udGVudHMpOjoKIAotICAgPj4+IHBwcmludC5wcHJpbnQocmVzdWx0LCBkZXB0aD0zKQotICAgeydib2R5JzogeydpbmZvJzogeydfcHlwaV9oaWRkZW4nOiBGYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAnX3B5cGlfb3JkZXJpbmcnOiAxMiwKLSAgICAgICAgICAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbLi4uXSwKLSAgICAgICAgICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLAotICAgICAgICAgICAgICAgICAgICAgICdob21lX3BhZ2UnOiAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy9weTNrL2xpYnJhcnkvY29uZmlncGFyc2VyLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICdrZXl3b3Jkcyc6ICdjb25maWdwYXJzZXIgaW5pIHBhcnNpbmcgY29uZiBjZmcgY29uZmlndXJhdGlvbiBmaWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAnbGljZW5zZSc6ICdNSVQnLAotICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2NvbmZpZ3BhcnNlcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ3BhY2thZ2VfdXJsJzogJ2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jb25maWdwYXJzZXInLAotICAgICAgICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdhbnknLAotICAgICAgICAgICAgICAgICAgICAgICdyZWxlYXNlX3VybCc6ICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY29uZmlncGFyc2VyLzMuMi4wcjMnLAotICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlc19weXRob24nOiBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICdzdGFibGVfdmVyc2lvbic6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgJ3N1bW1hcnknOiAnVGhpcyBsaWJyYXJ5IGJyaW5ncyB0aGUgdXBkYXRlZCBjb25maWdwYXJzZXIgZnJvbSBQeXRob24gMy4yKyB0byBQeXRob24gMi42LTIuNy4nLAotICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzMuMi4wcjMnfSwKLSAgICAgICAgICAgJ3VybHMnOiBbey4uLn1dfSwKLSAgICdoZWFkZXJzJzogWygnRGF0ZScsICdTYXQsIDE0IE1heSAyMDExIDEyOjQ4OjUyIEdNVCcpLAotICAgICAgICAgICAgICAgKCdTZXJ2ZXInLCAnQXBhY2hlLzIuMi4xNiAoRGViaWFuKScpLAotICAgICAgICAgICAgICAgKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2lubGluZScpLAotICAgICAgICAgICAgICAgKCdDb25uZWN0aW9uJywgJ2Nsb3NlJyksCi0gICAgICAgICAgICAgICAoJ1RyYW5zZmVyLUVuY29kaW5nJywgJ2NodW5rZWQnKSwKLSAgICAgICAgICAgICAgICgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9IlVURi04IicpXX0KKyAgID4+PiBwcHJpbnQucHByaW50KHByb2plY3RfaW5mbywgZGVwdGg9MikKKyAgIHsnaW5mbyc6IHsnX3B5cGlfaGlkZGVuJzogRmFsc2UsCisgICAgICAgICAgICAgJ19weXBpX29yZGVyaW5nJzogMTI1LAorICAgICAgICAgICAgICdhdXRob3InOiAnR2x5cGggTGVma293aXR6JywKKyAgICAgICAgICAgICAnYXV0aG9yX2VtYWlsJzogJ2dseXBoQHR3aXN0ZWRtYXRyaXguY29tJywKKyAgICAgICAgICAgICAnYnVndHJhY2tfdXJsJzogJycsCisgICAgICAgICAgICAgJ2NoZWVzZWNha2VfY29kZV9rd2FsaXRlZV9pZCc6IE5vbmUsCisgICAgICAgICAgICAgJ2NoZWVzZWNha2VfZG9jdW1lbnRhdGlvbl9pZCc6IE5vbmUsCisgICAgICAgICAgICAgJ2NoZWVzZWNha2VfaW5zdGFsbGFiaWxpdHlfaWQnOiBOb25lLAorICAgICAgICAgICAgICdjbGFzc2lmaWVycyc6IFsuLi5dLAorICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICdBbiBleHRlbnNpYmxlIGZyYW1ld29yayBmb3IgUHl0aG9uIHByb2dyYW1taW5nLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggc3BlY2lhbCBmb2N1c1xyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkIG5ldHdvcmsgcHJvZ3JhbW1pbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwcm90b2NvbCBpbnRlZ3JhdGlvbi4nLAorICAgICAgICAgICAgICdkb2NzX3VybCc6ICcnLAorICAgICAgICAgICAgICdkb3dubG9hZF91cmwnOiAnVU5LTk9XTicsCisgICAgICAgICAgICAgJ2hvbWVfcGFnZSc6ICdodHRwOi8vdHdpc3RlZG1hdHJpeC5jb20vJywKKyAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKKyAgICAgICAgICAgICAnbGljZW5zZSc6ICdNSVQnLAorICAgICAgICAgICAgICdtYWludGFpbmVyJzogJycsCisgICAgICAgICAgICAgJ21haW50YWluZXJfZW1haWwnOiAnJywKKyAgICAgICAgICAgICAnbmFtZSc6ICdUd2lzdGVkJywKKyAgICAgICAgICAgICAncGFja2FnZV91cmwnOiAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1R3aXN0ZWQnLAorICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdVTktOT1dOJywKKyAgICAgICAgICAgICAncmVsZWFzZV91cmwnOiAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1R3aXN0ZWQvMTIuMy4wJywKKyAgICAgICAgICAgICAncmVxdWlyZXNfcHl0aG9uJzogTm9uZSwKKyAgICAgICAgICAgICAnc3RhYmxlX3ZlcnNpb24nOiBOb25lLAorICAgICAgICAgICAgICdzdW1tYXJ5JzogJ0FuIGFzeW5jaHJvbm91cyBuZXR3b3JraW5nIGZyYW1ld29yayB3cml0dGVuIGluIFB5dGhvbicsCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMTIuMy4wJ30sCisgICAgJ3VybHMnOiBbey4uLn0sIHsuLi59XX0KIAotQWRkaXRpb25hbGx5LCBtYXhpbXVtICp3aWR0aCogY2FuIGJlIHN1Z2dlc3RlZC4gSWYgYSBsb25nIG9iamVjdCBjYW5ub3QgYmUKLXNwbGl0LCB0aGUgc3BlY2lmaWVkIHdpZHRoIHdpbGwgYmUgZXhjZWVkZWQ6OgorQWRkaXRpb25hbGx5LCBtYXhpbXVtIGNoYXJhY3RlciAqd2lkdGgqIGNhbiBiZSBzdWdnZXN0ZWQuIElmIGEgbG9uZyBvYmplY3QKK2Nhbm5vdCBiZSBzcGxpdCwgdGhlIHNwZWNpZmllZCB3aWR0aCB3aWxsIGJlIGV4Y2VlZGVkOjoKIAotICAgPj4+IHBwcmludC5wcHJpbnQocmVzdWx0WydoZWFkZXJzJ10sIHdpZHRoPTMwKQotICAgWygnRGF0ZScsCi0gICAgICdTYXQsIDE0IE1heSAyMDExIDEyOjQ4OjUyIEdNVCcpLAotICAgICgnU2VydmVyJywKLSAgICAgJ0FwYWNoZS8yLjIuMTYgKERlYmlhbiknKSwKLSAgICAoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLAotICAgICAnaW5saW5lJyksCi0gICAgKCdDb25uZWN0aW9uJywgJ2Nsb3NlJyksCi0gICAgKCdUcmFuc2Zlci1FbmNvZGluZycsCi0gICAgICdjaHVua2VkJyksCi0gICAgKCdDb250ZW50LVR5cGUnLAotICAgICAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0iVVRGLTgiJyldCisgICA+Pj4gcHByaW50LnBwcmludChwcm9qZWN0X2luZm8sIGRlcHRoPTIsIHdpZHRoPTUwKQorICAgeydpbmZvJzogeydfcHlwaV9oaWRkZW4nOiBGYWxzZSwKKyAgICAgICAgICAgICAnX3B5cGlfb3JkZXJpbmcnOiAxMjUsCisgICAgICAgICAgICAgJ2F1dGhvcic6ICdHbHlwaCBMZWZrb3dpdHonLAorICAgICAgICAgICAgICdhdXRob3JfZW1haWwnOiAnZ2x5cGhAdHdpc3RlZG1hdHJpeC5jb20nLAorICAgICAgICAgICAgICdidWd0cmFja191cmwnOiAnJywKKyAgICAgICAgICAgICAnY2hlZXNlY2FrZV9jb2RlX2t3YWxpdGVlX2lkJzogTm9uZSwKKyAgICAgICAgICAgICAnY2hlZXNlY2FrZV9kb2N1bWVudGF0aW9uX2lkJzogTm9uZSwKKyAgICAgICAgICAgICAnY2hlZXNlY2FrZV9pbnN0YWxsYWJpbGl0eV9pZCc6IE5vbmUsCisgICAgICAgICAgICAgJ2NsYXNzaWZpZXJzJzogWy4uLl0sCisgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXdvcmsgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIHByb2dyYW1taW5nLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvY3VzXHJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrIHByb2dyYW1taW5nICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIG11bHRpcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JhdGlvbi4nLAorICAgICAgICAgICAgICdkb2NzX3VybCc6ICcnLAorICAgICAgICAgICAgICdkb3dubG9hZF91cmwnOiAnVU5LTk9XTicsCisgICAgICAgICAgICAgJ2hvbWVfcGFnZSc6ICdodHRwOi8vdHdpc3RlZG1hdHJpeC5jb20vJywKKyAgICAgICAgICAgICAna2V5d29yZHMnOiAnJywKKyAgICAgICAgICAgICAnbGljZW5zZSc6ICdNSVQnLAorICAgICAgICAgICAgICdtYWludGFpbmVyJzogJycsCisgICAgICAgICAgICAgJ21haW50YWluZXJfZW1haWwnOiAnJywKKyAgICAgICAgICAgICAnbmFtZSc6ICdUd2lzdGVkJywKKyAgICAgICAgICAgICAncGFja2FnZV91cmwnOiAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1R3aXN0ZWQnLAorICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICdVTktOT1dOJywKKyAgICAgICAgICAgICAncmVsZWFzZV91cmwnOiAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1R3aXN0ZWQvMTIuMy4wJywKKyAgICAgICAgICAgICAncmVxdWlyZXNfcHl0aG9uJzogTm9uZSwKKyAgICAgICAgICAgICAnc3RhYmxlX3ZlcnNpb24nOiBOb25lLAorICAgICAgICAgICAgICdzdW1tYXJ5JzogJ0FuIGFzeW5jaHJvbm91cyAnCisgICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya2luZyBmcmFtZXdvcmsgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gaW4gUHl0aG9uJywKKyAgICAgICAgICAgICAndmVyc2lvbic6ICcxMi4zLjAnfSwKKyAgICAndXJscyc6IFt7Li4ufSwgey4uLn1dfQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcHR5LnJzdCBiL0RvYy9saWJyYXJ5L3B0eS5yc3QKaW5kZXggMmI5Mzg1Yi4uOTBiYWVjNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHR5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9wdHkucnN0CkBAIC00NSw2ICs0NSw5IEBACiAgICBhIGZpbGUgZGVzY3JpcHRvci4gVGhlIGRlZmF1bHRzIHRyeSB0byByZWFkIDEwMjQgYnl0ZXMgZWFjaCB0aW1lIHRoZXkgYXJlCiAgICBjYWxsZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICA6ZnVuYzpgc3Bhd25gIG5vdyByZXR1cm5zIHRoZSBzdGF0dXMgdmFsdWUgZnJvbSA6ZnVuYzpgb3Mud2FpdHBpZGAKKyAgICAgIG9uIHRoZSBjaGlsZCBwcm9jZXNzLgogCiBFeGFtcGxlCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdCBiL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0CmluZGV4IDA3ZGRjMjUuLmJhZTg0NTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0CkBAIC0yOCw3ICsyOCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lLCBkb3JhaXNlPUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQ29tcGlsZSBhIHNvdXJjZSBmaWxlIHRvIGJ5dGUtY29kZSBhbmQgd3JpdGUgb3V0IHRoZSBieXRlLWNvZGUgY2FjaGUgIGZpbGUuCisgICBDb21waWxlIGEgc291cmNlIGZpbGUgdG8gYnl0ZS1jb2RlIGFuZCB3cml0ZSBvdXQgdGhlIGJ5dGUtY29kZSBjYWNoZSBmaWxlLgogICAgVGhlIHNvdXJjZSBjb2RlIGlzIGxvYWRlZCBmcm9tIHRoZSBmaWxlIG5hbWUgKmZpbGUqLiAgVGhlICBieXRlLWNvZGUgaXMKICAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpQRVA6YDMxNDdgIHBhdGgsIGVuZGluZyBpbgogICAgYGAucHljYGAgKGBgLnB5b2BgIGlmIG9wdGltaXphdGlvbiBpcyBlbmFibGVkIGluIHRoZSBjdXJyZW50IGludGVycHJldGVyKS4KQEAgLTQxLDYgKzQxLDEzIEBACiAgICBpcyByYWlzZWQuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHBhdGggdG8gYnl0ZS1jb21waWxlZCBmaWxlLCBpLmUuCiAgICB3aGF0ZXZlciAqY2ZpbGUqIHZhbHVlIHdhcyB1c2VkLgogCisgICBJZiB0aGUgcGF0aCB0aGF0ICpjZmlsZSogYmVjb21lcyAoZWl0aGVyIGV4cGxpY2l0bHkgc3BlY2lmaWVkIG9yIGNvbXB1dGVkKQorICAgaXMgYSBzeW1saW5rIG9yIG5vbi1yZWd1bGFyIGZpbGUsIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICBUaGlzIGlzIHRvIGFjdCBhcyBhIHdhcm5pbmcgdGhhdCBpbXBvcnQgd2lsbCB0dXJuIHRob3NlIHBhdGhzIGludG8gcmVndWxhcgorICAgZmlsZXMgaWYgaXQgaXMgYWxsb3dlZCB0byB3cml0ZSBieXRlLWNvbXBpbGVkIGZpbGVzIHRvIHRob3NlIHBhdGhzLiBUaGlzIGlzCisgICBhIHNpZGUtZWZmZWN0IG9mIGltcG9ydCB1c2luZyBmaWxlIHJlbmFtaW5nIHRvIHBsYWNlIHRoZSBmaW5hbCBieXRlLWNvbXBpbGVkCisgICBmaWxlIGludG8gcGxhY2UgdG8gcHJldmVudCBjb25jdXJyZW50IGZpbGUgd3JpdGluZyBpc3N1ZXMuCisKICAgICpvcHRpbWl6ZSogY29udHJvbHMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBhbmQgaXMgcGFzc2VkIHRvIHRoZSBidWlsdC1pbgogICAgOmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgb2YgYGAtMWBgIHNlbGVjdHMgdGhlIG9wdGltaXphdGlvbgogICAgbGV2ZWwgb2YgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuCkBAIC01MCw2ICs1NywxMyBAQAogICAgICAgZGVmYXVsdCB3YXMgKmZpbGUqICsgYGAnYydgYCAoYGAnbydgYCBpZiBvcHRpbWl6YXRpb24gd2FzIGVuYWJsZWQpLgogICAgICAgQWxzbyBhZGRlZCB0aGUgKm9wdGltaXplKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBDaGFuZ2VkIGNvZGUgdG8gdXNlIDptb2Q6YGltcG9ydGxpYmAgZm9yIHRoZSBieXRlLWNvZGUgY2FjaGUgZmlsZSB3cml0aW5nLgorICAgICAgVGhpcyBtZWFucyBmaWxlIGNyZWF0aW9uL3dyaXRpbmcgc2VtYW50aWNzIG5vdyBtYXRjaCB3aGF0IDptb2Q6YGltcG9ydGxpYmAKKyAgICAgIGRvZXMsIGUuZy4gcGVybWlzc2lvbnMsIHdyaXRlLWFuZC1tb3ZlIHNlbWFudGljcywgZXRjLiBBbHNvIGFkZGVkIHRoZQorICAgICAgY2F2ZWF0IHRoYXQgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcyByYWlzZWQgaWYgKmNmaWxlKiBpcyBhIHN5bWxpbmsgb3IKKyAgICAgIG5vbi1yZWd1bGFyIGZpbGUuCisKIAogLi4gZnVuY3Rpb246OiBtYWluKGFyZ3M9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0IGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CmluZGV4IDExMzQ2MTkuLjY5MjMxMGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKQEAgLTE5MCwyOCArMTkwLDMyIEBACiAKIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaG93IHRvIHVzZSB0aGUgOm1vZDpgcmVhZGxpbmVgIG1vZHVsZSdzCiBoaXN0b3J5IHJlYWRpbmcgYW5kIHdyaXRpbmcgZnVuY3Rpb25zIHRvIGF1dG9tYXRpY2FsbHkgbG9hZCBhbmQgc2F2ZSBhIGhpc3RvcnkKLWZpbGUgbmFtZWQgOmZpbGU6YC5weWhpc3RgIGZyb20gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeS4gIFRoZSBjb2RlIGJlbG93IHdvdWxkCi1ub3JtYWxseSBiZSBleGVjdXRlZCBhdXRvbWF0aWNhbGx5IGR1cmluZyBpbnRlcmFjdGl2ZSBzZXNzaW9ucyBmcm9tIHRoZSB1c2VyJ3MKLTplbnZ2YXI6YFBZVEhPTlNUQVJUVVBgIGZpbGUuIDo6CitmaWxlIG5hbWVkIDpmaWxlOmAucHl0aG9uX2hpc3RvcnlgIGZyb20gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeS4gIFRoZSBjb2RlCitiZWxvdyB3b3VsZCBub3JtYWxseSBiZSBleGVjdXRlZCBhdXRvbWF0aWNhbGx5IGR1cmluZyBpbnRlcmFjdGl2ZSBzZXNzaW9ucworZnJvbSB0aGUgdXNlcidzIDplbnZ2YXI6YFBZVEhPTlNUQVJUVVBgIGZpbGUuIDo6CiAKKyAgIGltcG9ydCBhdGV4aXQKICAgIGltcG9ydCBvcwogICAgaW1wb3J0IHJlYWRsaW5lCi0gICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weWhpc3QiKQorCisgICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weXRob25faGlzdG9yeSIpCiAgICB0cnk6CiAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCiAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgcGFzcwotICAgaW1wb3J0IGF0ZXhpdAorCiAgICBhdGV4aXQucmVnaXN0ZXIocmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlLCBoaXN0ZmlsZSkKLSAgIGRlbCBvcywgaGlzdGZpbGUKKworVGhpcyBjb2RlIGlzIGFjdHVhbGx5IGF1dG9tYXRpY2FsbHkgcnVuIHdoZW4gUHl0aG9uIGlzIHJ1biBpbgorOnJlZjpgaW50ZXJhY3RpdmUgbW9kZSA8dHV0LWludGVyYWN0aXZlPmAgKHNlZSA6cmVmOmBybGNvbXBsZXRlci1jb25maWdgKS4KIAogVGhlIGZvbGxvd2luZyBleGFtcGxlIGV4dGVuZHMgdGhlIDpjbGFzczpgY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGVgIGNsYXNzIHRvCiBzdXBwb3J0IGhpc3Rvcnkgc2F2ZS9yZXN0b3JlLiA6OgogCi0gICBpbXBvcnQgY29kZQotICAgaW1wb3J0IHJlYWRsaW5lCiAgICBpbXBvcnQgYXRleGl0CisgICBpbXBvcnQgY29kZQogICAgaW1wb3J0IG9zCisgICBpbXBvcnQgcmVhZGxpbmUKIAogICAgY2xhc3MgSGlzdG9yeUNvbnNvbGUoY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUpOgogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbHM9Tm9uZSwgZmlsZW5hbWU9Ijxjb25zb2xlPiIsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9ybGNvbXBsZXRlci5yc3QgYi9Eb2MvbGlicmFyeS9ybGNvbXBsZXRlci5yc3QKaW5kZXggNjMzMDg4ZC4uOWVkMDFjNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmxjb21wbGV0ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JsY29tcGxldGVyLnJzdApAQCAtMjcsMTggKzI3LDEwIEBACiAgICByZWFkbGluZS5fX25hbWVfXyAgICAgICAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKAogICAgPj4+IHJlYWRsaW5lLgogCi1UaGUgOm1vZDpgcmxjb21wbGV0ZXJgIG1vZHVsZSBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggUHl0aG9uJ3MgaW50ZXJhY3RpdmUKLW1vZGUuICBBIHVzZXIgY2FuIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIGhpcyBvciBoZXIgaW5pdGlhbGl6YXRpb24gZmlsZQotKGlkZW50aWZpZWQgYnkgdGhlIDplbnZ2YXI6YFBZVEhPTlNUQVJUVVBgIGVudmlyb25tZW50IHZhcmlhYmxlKSB0byBnZXQKLWF1dG9tYXRpYyA6a2JkOmBUYWJgIGNvbXBsZXRpb246OgotCi0gICB0cnk6Ci0gICAgICAgaW1wb3J0IHJlYWRsaW5lCi0gICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgcHJpbnQoIk1vZHVsZSByZWFkbGluZSBub3QgYXZhaWxhYmxlLiIpCi0gICBlbHNlOgotICAgICAgIGltcG9ydCBybGNvbXBsZXRlcgotICAgICAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKCJ0YWI6IGNvbXBsZXRlIikKK1RoZSA6bW9kOmBybGNvbXBsZXRlcmAgbW9kdWxlIGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBQeXRob24ncworOnJlZjpgaW50ZXJhY3RpdmUgbW9kZSA8dHV0LWludGVyYWN0aXZlPmAuICBVbmxlc3MgUHl0aG9uIGlzIHJ1biB3aXRoIHRoZQorOm9wdGlvbjpgLVNgIG9wdGlvbiwgdGhlIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIGFuZCBjb25maWd1cmVkCisoc2VlIDpyZWY6YHJsY29tcGxldGVyLWNvbmZpZ2ApLgogCiBPbiBwbGF0Zm9ybXMgd2l0aG91dCA6bW9kOmByZWFkbGluZWAsIHRoZSA6Y2xhc3M6YENvbXBsZXRlcmAgY2xhc3MgZGVmaW5lZCBieQogdGhpcyBtb2R1bGUgY2FuIHN0aWxsIGJlIHVzZWQgZm9yIGN1c3RvbSBwdXJwb3Nlcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CmluZGV4IDRlNjBmNGEuLmI3M2YxMWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdApAQCAtNDcsMTEgKzQ3LDE0IEBACiAgICB0byA6Y29uc3Q6YEVQT0xMX0NMT0VYRUNgLCB3aGljaCBjYXVzZXMgdGhlIGVwb2xsIGRlc2NyaXB0b3IgdG8gYmUgY2xvc2VkCiAgICBhdXRvbWF0aWNhbGx5IHdoZW4gOmZ1bmM6YG9zLmV4ZWN2ZWAgaXMgY2FsbGVkLiBTZWUgc2VjdGlvbgogICAgOnJlZjpgZXBvbGwtb2JqZWN0c2AgYmVsb3cgZm9yIHRoZSBtZXRob2RzIHN1cHBvcnRlZCBieSBlcG9sbGluZyBvYmplY3RzLgotCisgICBUaGV5IGFsc28gc3VwcG9ydCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqZmxhZ3MqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHBvbGwoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaGVsdmUucnN0IGIvRG9jL2xpYnJhcnkvc2hlbHZlLnJzdAppbmRleCA5ZDdkNTA0Li5iNjBhNTQ4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaGVsdmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NoZWx2ZS5yc3QKQEAgLTQ0LDggKzQ0LDExIEBACiAgICAuLiBub3RlOjoKIAogICAgICAgRG8gbm90IHJlbHkgb24gdGhlIHNoZWxmIGJlaW5nIGNsb3NlZCBhdXRvbWF0aWNhbGx5OyBhbHdheXMgY2FsbAotICAgICAgOm1ldGg6YGNsb3NlYCBleHBsaWNpdGx5IHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55IG1vcmUsIG9yIHVzZSBhCi0gICAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdpdGggOmZ1bmM6YGNvbnRleHRsaWIuY2xvc2luZ2AuCisgICAgICA6bWV0aDpgflNoZWxmLmNsb3NlYCBleHBsaWNpdGx5IHdoZW4geW91IGRvbid0IG5lZWQgaXQgYW55IG1vcmUsIG9yCisgICAgICB1c2UgOmZ1bmM6YHNoZWx2ZS5vcGVuYCBhcyBhIGNvbnRleHQgbWFuYWdlcjo6CisKKyAgICAgICAgICB3aXRoIHNoZWx2ZS5vcGVuKCdzcGFtJykgYXMgZGI6CisgICAgICAgICAgICAgIGRiWydlZ2dzJ10gPSAnZWdncycKIAogLi4gd2FybmluZzo6CiAKQEAgLTExOCwxMCArMTIxLDE1IEBACiAgICBUaGUgKmtleWVuY29kaW5nKiBwYXJhbWV0ZXIgaXMgdGhlIGVuY29kaW5nIHVzZWQgdG8gZW5jb2RlIGtleXMgYmVmb3JlIHRoZXkKICAgIGFyZSB1c2VkIHdpdGggdGhlIHVuZGVybHlpbmcgZGljdC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAgICBUaGUgKmtleWVuY29kaW5nKiBwYXJhbWV0ZXI7IHByZXZpb3VzbHksIGtleXMgd2VyZSBhbHdheXMgZW5jb2RlZCBpbgorICAgOmNsYXNzOmBTaGVsZmAgb2JqZWN0cyBjYW4gYWxzbyBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdlcnMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCB0aGUgKmtleWVuY29kaW5nKiBwYXJhbWV0ZXI7IHByZXZpb3VzbHksIGtleXMgd2VyZSBhbHdheXMgZW5jb2RlZCBpbgogICAgICAgVVRGLTguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBBZGRlZCBjb250ZXh0IG1hbmFnZXIgc3VwcG9ydC4KKwogCiAuLiBjbGFzczo6IEJzZERiU2hlbGYoZGljdCwgcHJvdG9jb2w9Tm9uZSwgd3JpdGViYWNrPUZhbHNlLCBrZXllbmNvZGluZz0ndXRmLTgnKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0IGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAppbmRleCBhMTQ1N2QwLi5lNGYzNDhjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKQEAgLTUzLDcgKzUzLDcgQEAKICAgICpkc3QqIGFuZCByZXR1cm4gKmRzdCouICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KICAgICpkc3QqIG11c3QgYmUgdGhlIGNvbXBsZXRlIHRhcmdldCBmaWxlIG5hbWU7IGxvb2sgYXQgOmZ1bmM6YHNodXRpbC5jb3B5YAogICAgZm9yIGEgY29weSB0aGF0IGFjY2VwdHMgYSB0YXJnZXQgZGlyZWN0b3J5IHBhdGguICBJZiAqc3JjKiBhbmQgKmRzdCoKLSAgIHNwZWNpZnkgdGhlIHNhbWUgZmlsZSwgOmV4YzpgRXJyb3JgIGlzIHJhaXNlZC4KKyAgIHNwZWNpZnkgdGhlIHNhbWUgZmlsZSwgOmV4YzpgU2FtZUZpbGVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICBUaGUgZGVzdGluYXRpb24gbG9jYXRpb24gbXVzdCBiZSB3cml0YWJsZTsgb3RoZXJ3aXNlLCBhbiA6ZXhjOmBPU0Vycm9yYAogICAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBJZiAqZHN0KiBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXBsYWNlZC4KQEAgLTY5LDYgKzY5LDE5IEBACiAgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KICAgICAgIE5vdyByZXR1cm5zICpkc3QqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgUmFpc2UgOmV4YzpgU2FtZUZpbGVFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBFcnJvcmAuICBTaW5jZSB0aGUgZm9ybWVyIGlzCisgICAgICBhIHN1YmNsYXNzIG9mIHRoZSBsYXR0ZXIsIHRoaXMgY2hhbmdlIGlzIGJhY2t3YXJkIGNvbXBhdGlibGUuCisKKworLi4gZXhjZXB0aW9uOjogU2FtZUZpbGVFcnJvcgorCisgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBpbiA6ZnVuYzpgY29weWZpbGVgCisgICBhcmUgdGhlIHNhbWUgZmlsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gZnVuY3Rpb246OiBjb3B5bW9kZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIENvcHkgdGhlIHBlcm1pc3Npb24gYml0cyBmcm9tICpzcmMqIHRvICpkc3QqLiAgVGhlIGZpbGUgY29udGVudHMsIG93bmVyLCBhbmQKQEAgLTM4MCwxMSArMzkzLDEwIEBACiAgICAgICAgICAgICAgICBlcnJvcnMuZXh0ZW5kKGVyci5hcmdzWzBdKQogICAgICAgIHRyeToKICAgICAgICAgICAgY29weXN0YXQoc3JjLCBkc3QpCi0gICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKLSAgICAgICAgICAgIyBjYW4ndCBjb3B5IGZpbGUgYWNjZXNzIHRpbWVzIG9uIFdpbmRvd3MKLSAgICAgICAgICAgcGFzcwogICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKLSAgICAgICAgICAgZXJyb3JzLmV4dGVuZCgoc3JjLCBkc3QsIHN0cih3aHkpKSkKKyAgICAgICAgICAgIyBjYW4ndCBjb3B5IGZpbGUgYWNjZXNzIHRpbWVzIG9uIFdpbmRvd3MKKyAgICAgICAgICAgaWYgd2h5LndpbmVycm9yIGlzIE5vbmU6CisgICAgICAgICAgICAgICBlcnJvcnMuZXh0ZW5kKChzcmMsIGRzdCwgc3RyKHdoeSkpKQogICAgICAgIGlmIGVycm9yczoKICAgICAgICAgICAgcmFpc2UgRXJyb3IoZXJyb3JzKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaXRlLnJzdCBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CmluZGV4IDM2YjgwYzMuLjIxNzVjM2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpdGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CkBAIC0xMTEsNiArMTExLDIzIEBACiA6bW9kOmBzaXRlY3VzdG9taXplYCBhbmQgOm1vZDpgdXNlcmN1c3RvbWl6ZWAgaXMgc3RpbGwgYXR0ZW1wdGVkLgogCiAKKy4uIF9ybGNvbXBsZXRlci1jb25maWc6CisKK1JlYWRsaW5lIGNvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgOm1vZDpgcmVhZGxpbmVgLCB0aGlzIG1vZHVsZSB3aWxsIGFsc28gaW1wb3J0IGFuZAorY29uZmlndXJlIHRoZSA6bW9kOmBybGNvbXBsZXRlcmAgbW9kdWxlLCBpZiBQeXRob24gaXMgc3RhcnRlZCBpbgorOnJlZjpgaW50ZXJhY3RpdmUgbW9kZSA8dHV0LWludGVyYWN0aXZlPmAgYW5kIHdpdGhvdXQgdGhlIDpvcHRpb246YC1TYCBvcHRpb24uCitUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyBlbmFibGUgdGFiLWNvbXBsZXRpb24gYW5kIHRvIHVzZQorOmZpbGU6YH4vLnB5dGhvbl9oaXN0b3J5YCBhcyB0aGUgaGlzdG9yeSBzYXZlIGZpbGUuICBUbyBkaXNhYmxlIGl0LCBvdmVycmlkZQordGhlIDpkYXRhOmBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfX2AgYXR0cmlidXRlIGluIHlvdXIgOm1vZDpgc2l0ZWN1c3RvbWl6ZWAKK29yIDptb2Q6YHVzZXJjdXN0b21pemVgIG1vZHVsZSBvciB5b3VyIDplbnZ2YXI6YFBZVEhPTlNUQVJUVVBgIGZpbGUuCisKKworTW9kdWxlIGNvbnRlbnRzCistLS0tLS0tLS0tLS0tLS0KKwogLi4gZGF0YTo6IFBSRUZJWEVTCiAKICAgIEEgbGlzdCBvZiBwcmVmaXhlcyBmb3Igc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcmllcy4KQEAgLTE1Myw4ICsxNzAsNyBAQAogCiAgICBBZGRzIGFsbCB0aGUgc3RhbmRhcmQgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgbW9kdWxlIHNlYXJjaAogICAgcGF0aC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKLSAgIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgOm9wdGlvbjpgLVNgCi0gICBmbGFnLgorICAgdW5sZXNzIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgOm9wdGlvbjpgLVNgIGZsYWcuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gYmUgY2FsbGVkIHVuY29uZGl0aW9ubmFsbHkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKaW5kZXggMmNhNzFmZi4uMmMyZGY4YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdApAQCAtMjcsNyArMjcsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyKQorLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLAorICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgSXQKQEAgLTM4LDYgKzM5LDggQEAKICAgIGFjY2VwdGVkIGluIGEgYGBEQVRBYGAgY29tbWFuZC4gIEEgdmFsdWUgb2YgYGBOb25lYGAgb3IgYGAwYGAgbWVhbnMgbm8KICAgIGxpbWl0LgogCisgICBBIGRpY3Rpb25hcnkgY2FuIGJlIHNwZWNpZmllZCBpbiAqbWFwKiB0byBhdm9pZCB1c2luZyBhIGdsb2JhbCBzb2NrZXQgbWFwLgorCiAgICAuLiBtZXRob2Q6OiBwcm9jZXNzX21lc3NhZ2UocGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpCiAKICAgICAgIFJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGV4Y2VwdGlvbi4gT3ZlcnJpZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvCkBAIC01Myw2ICs1Niw5IEBACiAgICAgICBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8gdXNlIGEgY3VzdG9tIDpjbGFzczpgU01UUENoYW5uZWxgIGZvcgogICAgICAgbWFuYWdpbmcgU01UUCBjbGllbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgVGhlICptYXAqIGFyZ3VtZW50IHdhcyBhZGRlZC4KKwogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTkwLDExICs5NiwyMCBAQAogU01UUENoYW5uZWwgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBjbGFzczo6IFNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKKy4uIGNsYXNzOjogU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsCisgICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lKSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgogCisgICAqY29ubiogYW5kICphZGRyKiBhcmUgYXMgcGVyIHRoZSBpbnN0YW5jZSB2YXJpYWJsZXMgZGVzY3JpYmVkIGJlbG93LgorCisgICAqZGF0YV9zaXplX2xpbWl0KiBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCBiZQorICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubworICAgbGltaXQuCisKKyAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCisKICAgIFRvIHVzZSBhIGN1c3RvbSBTTVRQQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUKICAgIDphdHRyOmBTTVRQU2VydmVyLmNoYW5uZWxfY2xhc3NgIG9mIHlvdXIgOmNsYXNzOmBTTVRQU2VydmVyYC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAppbmRleCBjMDA0NzZlLi5kNWJkOTA2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdApAQCAtMTEwLDggKzExMCw4IEBACiAKIC4uIGV4Y2VwdGlvbjo6IFNNVFBFeGNlcHRpb24KIAotICAgVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGZvciBhbGwgdGhlIG90aGVyIGV4Y3BldGlvbnMgcHJvdmlkZWQgYnkgdGhpcwotICAgbW9kdWxlLgorICAgU3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgdGhhdCBpcyB0aGUgYmFzZSBleGNlcHRpb24gY2xhc3MgZm9yIGFsbAorICAgdGhlIG90aGVyIGV4Y3BldGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUuCiAKIAogLi4gZXhjZXB0aW9uOjogU01UUFNlcnZlckRpc2Nvbm5lY3RlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKaW5kZXggYjQ0MmI3Yy4uZWRkMTk2YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CkBAIC0xMDcsOCArMTA3LDggQEAKIAogICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotLSBDZXJ0YWluIG90aGVyIGFkZHJlc3MgZmFtaWxpZXMgKDpjb25zdDpgQUZfQkxVRVRPT1RIYCwgOmNvbnN0OmBBRl9QQUNLRVRgKQotICBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KKy0gQ2VydGFpbiBvdGhlciBhZGRyZXNzIGZhbWlsaWVzICg6Y29uc3Q6YEFGX0JMVUVUT09USGAsIDpjb25zdDpgQUZfUEFDS0VUYCwKKyAgOmNvbnN0OmBBRl9DQU5gKSBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KIAogICAuLiBYWFggZG9jdW1lbnQgdGhlbSEKIApAQCAtMjU3LDYgKzI1NywxNiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gZGF0YTo6IENBTl9CQ00KKyAgICAgICAgICBDQU5fQkNNXyoKKworICAgQ0FOX0JDTSwgaW4gdGhlIENBTiBwcm90b2NvbCBmYW1pbHksIGlzIHRoZSBicm9hZGNhc3QgbWFuYWdlciAoQkNNKSBwcm90b2NvbC4KKyAgIEJyb2FkY2FzdCBtYW5hZ2VyIGNvbnN0YW50cywgZG9jdW1lbnRlZCBpbiB0aGUgTGludXggZG9jdW1lbnRhdGlvbiwgYXJlIGFsc28KKyAgIGRlZmluZWQgaW4gdGhlIHNvY2tldCBtb2R1bGUuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjI1LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gZGF0YTo6IEFGX1JEUwogICAgICAgICAgIFBGX1JEUwpAQCAtMjgzLDYgKzI5MywxMSBAQAogICAgVElQQyByZWxhdGVkIGNvbnN0YW50cywgbWF0Y2hpbmcgdGhlIG9uZXMgZXhwb3J0ZWQgYnkgdGhlIEMgc29ja2V0IEFQSS4gU2VlCiAgICB0aGUgVElQQyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisuLiBkYXRhOjogQUZfTElOSworCisgIEF2YWlsYWJpbGl0eTogQlNELCBPU1guCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIC4uIGRhdGE6OiBoYXNfaXB2NgogCkBAIC00NTIsMTMgKzQ2NywxNiBAQAogICAgOmNvbnN0OmBBRl9JTkVUNmAsIDpjb25zdDpgQUZfVU5JWGAsIDpjb25zdDpgQUZfQ0FOYCBvciA6Y29uc3Q6YEFGX1JEU2AuIFRoZQogICAgc29ja2V0IHR5cGUgc2hvdWxkIGJlIDpjb25zdDpgU09DS19TVFJFQU1gICh0aGUgZGVmYXVsdCksCiAgICA6Y29uc3Q6YFNPQ0tfREdSQU1gLCA6Y29uc3Q6YFNPQ0tfUkFXYCBvciBwZXJoYXBzIG9uZSBvZiB0aGUgb3RoZXIgYGBTT0NLX2BgCi0gICBjb25zdGFudHMuIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUgb21pdHRlZCBpbiB0aGF0Ci0gICBjYXNlIG9yIDpjb25zdDpgQ0FOX1JBV2AgaW4gY2FzZSB0aGUgYWRkcmVzcyBmYW1pbHkgaXMgOmNvbnN0OmBBRl9DQU5gLgorICAgY29uc3RhbnRzLiBUaGUgcHJvdG9jb2wgbnVtYmVyIGlzIHVzdWFsbHkgemVybyBhbmQgbWF5IGJlIG9taXR0ZWQgb3IgaW4gdGhlCisgICBjYXNlIHdoZXJlIHRoZSBhZGRyZXNzIGZhbWlseSBpcyA6Y29uc3Q6YEFGX0NBTmAgdGhlIHByb3RvY29sIHNob3VsZCBiZSBvbmUKKyAgIG9mIDpjb25zdDpgQ0FOX1JBV2Agb3IgOmNvbnN0OmBDQU5fQkNNYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFRoZSBBRl9DQU4gZmFtaWx5IHdhcyBhZGRlZC4KICAgICAgIFRoZSBBRl9SRFMgZmFtaWx5IHdhcyBhZGRlZC4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgVGhlIENBTl9CQ00gcHJvdG9jb2wgd2FzIGFkZGVkLgogCiAuLiBmdW5jdGlvbjo6IHNvY2tldHBhaXIoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkKIApAQCAtMTMzMSw3ICsxMzQ5LDE2IEBACiAgICBzLmlvY3RsKHNvY2tldC5TSU9fUkNWQUxMLCBzb2NrZXQuUkNWQUxMX09GRikKIAogVGhlIGxhc3QgZXhhbXBsZSBzaG93cyBob3cgdG8gdXNlIHRoZSBzb2NrZXQgaW50ZXJmYWNlIHRvIGNvbW11bmljYXRlIHRvIGEgQ0FOCi1uZXR3b3JrLiBUaGlzIGV4YW1wbGUgbWlnaHQgcmVxdWlyZSBzcGVjaWFsIHByaXZpbGVkZ2U6OgorbmV0d29yayB1c2luZyB0aGUgcmF3IHNvY2tldCBwcm90b2NvbC4gVG8gdXNlIENBTiB3aXRoIHRoZSBicm9hZGNhc3QKK21hbmFnZXIgcHJvdG9jb2wgaW5zdGVhZCwgb3BlbiBhIHNvY2tldCB3aXRoOjoKKworICAgIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0NBTiwgc29ja2V0LlNPQ0tfREdSQU0sIHNvY2tldC5DQU5fQkNNKQorCitBZnRlciBiaW5kaW5nICg6Y29uc3Q6YENBTl9SQVdgKSBvciBjb25uZWN0aW5nICg6Y29uc3Q6YENBTl9CQ01gKSB0aGUgc29ja2V0LCB5b3UKK2NhbiB1c2UgdGhlIDptZXRoOmBzb2NrZXQuc2VuZGAsIGFuZCB0aGUgOm1ldGg6YHNvY2tldC5yZWN2YCBvcGVyYXRpb25zIChhbmQKK3RoZWlyIGNvdW50ZXJwYXJ0cykgb24gdGhlIHNvY2tldCBvYmplY3QgYXMgdXN1YWwuCisKK1RoaXMgZXhhbXBsZSBtaWdodCByZXF1aXJlIHNwZWNpYWwgcHJpdmlsZWRnZTo6CiAKICAgIGltcG9ydCBzb2NrZXQKICAgIGltcG9ydCBzdHJ1Y3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0IGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKaW5kZXggMDhlM2EyZS4uNTI5ZGM5NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgZmlyc3QgYmxhbmsgZm9yIHRoZSBjb2x1bW4gbmFtZTogdGhlIGNvbHVtbiBuYW1lIHdvdWxkIHNpbXBseSBiZSAieCIuCiAKIAotLi4gZnVuY3Rpb246OiBjb25uZWN0KGRhdGFiYXNlWywgdGltZW91dCwgZGV0ZWN0X3R5cGVzLCBpc29sYXRpb25fbGV2ZWwsIGNoZWNrX3NhbWVfdGhyZWFkLCBmYWN0b3J5LCBjYWNoZWRfc3RhdGVtZW50c10pCisuLiBmdW5jdGlvbjo6IGNvbm5lY3QoZGF0YWJhc2VbLCB0aW1lb3V0LCBkZXRlY3RfdHlwZXMsIGlzb2xhdGlvbl9sZXZlbCwgY2hlY2tfc2FtZV90aHJlYWQsIGZhY3RvcnksIGNhY2hlZF9zdGF0ZW1lbnRzLCB1cmldKQogCiAgICBPcGVucyBhIGNvbm5lY3Rpb24gdG8gdGhlIFNRTGl0ZSBkYXRhYmFzZSBmaWxlICpkYXRhYmFzZSouIFlvdSBjYW4gdXNlCiAgICBgYCI6bWVtb3J5OiJgYCB0byBvcGVuIGEgZGF0YWJhc2UgY29ubmVjdGlvbiB0byBhIGRhdGFiYXNlIHRoYXQgcmVzaWRlcyBpbiBSQU0KQEAgLTE5NSw2ICsxOTUsMTggQEAKICAgIGZvciB0aGUgY29ubmVjdGlvbiwgeW91IGNhbiBzZXQgdGhlICpjYWNoZWRfc3RhdGVtZW50cyogcGFyYW1ldGVyLiBUaGUgY3VycmVudGx5CiAgICBpbXBsZW1lbnRlZCBkZWZhdWx0IGlzIHRvIGNhY2hlIDEwMCBzdGF0ZW1lbnRzLgogCisgICBJZiAqdXJpKiBpcyB0cnVlLCAqZGF0YWJhc2UqIGlzIGludGVycHJldGVkIGFzIGEgVVJJLiBUaGlzIGFsbG93cyB5b3UKKyAgIHRvIHNwZWNpZnkgb3B0aW9ucy4gRm9yIGV4YW1wbGUsIHRvIG9wZW4gYSBkYXRhYmFzZSBpbiByZWFkLW9ubHkgbW9kZQorICAgeW91IGNhbiB1c2U6OgorCisgICAgICAgZGIgPSBzcWxpdGUzLmNvbm5lY3QoJ2ZpbGU6cGF0aC90by9kYXRhYmFzZT9tb2RlPXJvJywgdXJpPVRydWUpCisKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBmZWF0dXJlLCBpbmNsdWRpbmcgYSBsaXN0IG9mIHJlY29nbml6ZWQgb3B0aW9ucywgY2FuCisgICBiZSBmb3VuZCBpbiB0aGUgYFNRTGl0ZSBVUkkgZG9jdW1lbnRhdGlvbiA8aHR0cDovL3d3dy5zcWxpdGUub3JnL3VyaS5odG1sPmBfLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgQWRkZWQgdGhlICp1cmkqIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX2NvbnZlcnRlcih0eXBlbmFtZSwgY2FsbGFibGUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CmluZGV4IGFiYjk1YzMuLjk4M2MxNDQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdApAQCAtMjYsNyArMjYsOCBAQAogCiAgICBTb21lIGJlaGF2aW9yIG1heSBiZSBwbGF0Zm9ybSBkZXBlbmRlbnQsIHNpbmNlIGNhbGxzIGFyZSBtYWRlIHRvIHRoZQogICAgb3BlcmF0aW5nIHN5c3RlbSBzb2NrZXQgQVBJcy4gIFRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIG1heSBhbHNvCi0gICBjYXVzZSB2YXJpYXRpb25zIGluIGJlaGF2aW9yLgorICAgY2F1c2UgdmFyaWF0aW9ucyBpbiBiZWhhdmlvci4gRm9yIGV4YW1wbGUsIFRMU3YxLjEgYW5kIFRMU3YxLjIgY29tZSB3aXRoCisgICBvcGVuc3NsIHZlcnNpb24gMS4wLjEuCiAKIFRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG9iamVjdHMgYW5kIGZ1bmN0aW9ucyBpbiB0aGUgYGBzc2xgYCBtb2R1bGU7IGZvciBtb3JlCiBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IFRMUywgU1NMLCBhbmQgY2VydGlmaWNhdGVzLCB0aGUgcmVhZGVyIGlzIHJlZmVycmVkIHRvCkBAIC0xNzcsMTQgKzE3OCwxNiBAQAogCiAgICAgIC4uIHRhYmxlOjoKIAotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PQotICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAqKlNTTHYzKiogICoqU1NMdjIzKiogICoqVExTdjEqKgotICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQotICAgICAgICAqU1NMdjIqICAgICAgICAgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8KLSAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIG5vCi0gICAgICAgICpTU0x2MjMqICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubwotICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgeWVzCi0gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PSAgPT09PT09PT09CisgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICAgKmNsaWVudCogLyAqKnNlcnZlcioqICAgICoqU1NMdjIqKiAgKipTU0x2MyoqICAqKlNTTHYyMyoqICAqKlRMU3YxKiogICoqVExTdjEuMSoqICAqKlRMU3YxLjIqKgorICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCisgICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqU1NMdjIzKiAgICAgICAgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubworICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcworICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CiAKICAgIC4uIG5vdGU6OgogCkBAIC0zNDAsNiArMzQzLDM3IEBACiAgICBHaXZlbiBhIGNlcnRpZmljYXRlIGFzIGFuIEFTQ0lJIFBFTSBzdHJpbmcsIHJldHVybnMgYSBERVItZW5jb2RlZCBzZXF1ZW5jZSBvZgogICAgYnl0ZXMgZm9yIHRoYXQgc2FtZSBjZXJ0aWZpY2F0ZS4KIAorLi4gZnVuY3Rpb246OiBnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQorCisgICBSZXR1cm5zIGEgbmFtZWQgdHVwbGUgd2l0aCBwYXRocyB0byBPcGVuU1NMJ3MgZGVmYXVsdCBjYWZpbGUgYW5kIGNhcGF0aC4KKyAgIFRoZSBwYXRocyBhcmUgdGhlIHNhbWUgYXMgdXNlZCBieQorICAgOm1ldGg6YFNTTENvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzYC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhCisgICA6dGVybTpgbmFtZWQgdHVwbGVgIGBgRGVmYXVsdFZlcmlmeVBhdGhzYGA6CisKKyAgICogOmF0dHI6YGNhZmlsZWAgLSByZXNvbHZlZCBwYXRoIHRvIGNhZmlsZSBvciBOb25lIGlmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsCisgICAqIDphdHRyOmBjYXBhdGhgIC0gcmVzb2x2ZWQgcGF0aCB0byBjYXBhdGggb3IgTm9uZSBpZiB0aGUgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QsCisgICAqIDphdHRyOmBvcGVuc3NsX2NhZmlsZV9lbnZgIC0gT3BlblNTTCdzIGVudmlyb25tZW50IGtleSB0aGF0IHBvaW50cyB0byBhIGNhZmlsZSwKKyAgICogOmF0dHI6YG9wZW5zc2xfY2FmaWxlYCAtIGhhcmQgY29kZWQgcGF0aCB0byBhIGNhZmlsZSwKKyAgICogOmF0dHI6YG9wZW5zc2xfY2FwYXRoX2VudmAgLSBPcGVuU1NMJ3MgZW52aXJvbm1lbnQga2V5IHRoYXQgcG9pbnRzIHRvIGEgY2FwYXRoLAorICAgKiA6YXR0cjpgb3BlbnNzbF9jYXBhdGhgIC0gaGFyZCBjb2RlZCBwYXRoIHRvIGEgY2FwYXRoIGRpcmVjdG9yeQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gZnVuY3Rpb246OiBlbnVtX2NlcnRfc3RvcmUoc3RvcmVfbmFtZSwgY2VydF90eXBlPSdjZXJ0aWZpY2F0ZScpCisKKyAgIFJldHJpZXZlIGNlcnRpZmljYXRlcyBmcm9tIFdpbmRvd3MnIHN5c3RlbSBjZXJ0IHN0b3JlLiAqc3RvcmVfbmFtZSogbWF5IGJlCisgICBvbmUgb2YgYGBDQWBgLCBgYFJPT1RgYCBvciBgYE1ZYGAuIFdpbmRvd3MgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBjZXJ0CisgICBzdG9yZXMsIHRvby4gKmNlcnRfdHlwZSogaXMgZWl0aGVyIGBgY2VydGlmaWNhdGVgYCBmb3IgWC41MDkgY2VydGlmaWNhdGVzCisgICBvciBgYGNybGBgIGZvciBYLjUwOSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzLgorCisgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLCBlbmNvZGluZ190eXBlKSB0dXBsZXMuIFRoZQorICAgZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoIDpjb25zdDpgWDUwOV9BU05fRU5DT0RJTkdgIG9yCisgICA6Y29uc3Q6YFBLQ1NfN19BU05fRU5DT0RJTkdgLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiBDb25zdGFudHMKIF5eXl5eXl5eXgogCkBAIC00MDEsOSArNDM1LDI1IEBACiAKIC4uIGRhdGE6OiBQUk9UT0NPTF9UTFN2MQogCi0gICBTZWxlY3RzIFRMUyB2ZXJzaW9uIDEgYXMgdGhlIGNoYW5uZWwgZW5jcnlwdGlvbiBwcm90b2NvbC4gIFRoaXMgaXMgdGhlIG1vc3QKKyAgIFNlbGVjdHMgVExTIHZlcnNpb24gMS4wIGFzIHRoZSBjaGFubmVsIGVuY3J5cHRpb24gcHJvdG9jb2wuCisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFN2MV8xCisKKworICAgU2VsZWN0cyBUTFMgdmVyc2lvbiAxLjEgYXMgdGhlIGNoYW5uZWwgZW5jcnlwdGlvbiBwcm90b2NvbC4KKyAgIEF2YWlsYWJsZSBvbmx5IHdpdGggb3BlbnNzbCB2ZXJzaW9uIDEuMC4xKy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFN2MV8yCisKKworICAgU2VsZWN0cyBUTFMgdmVyc2lvbiAxLjIgYXMgdGhlIGNoYW5uZWwgZW5jcnlwdGlvbiBwcm90b2NvbC4gVGhpcyBpcyB0aGUgbW9zdAogICAgbW9kZXJuIHZlcnNpb24sIGFuZCBwcm9iYWJseSB0aGUgYmVzdCBjaG9pY2UgZm9yIG1heGltdW0gcHJvdGVjdGlvbiwgaWYgYm90aAogICAgc2lkZXMgY2FuIHNwZWFrIGl0LgorICAgQXZhaWxhYmxlIG9ubHkgd2l0aCBvcGVuc3NsIHZlcnNpb24gMS4wLjErLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gZGF0YTo6IE9QX0FMTAogCkBAIC00MzcsNiArNDg3LDIyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBkYXRhOjogT1BfTk9fVExTdjFfMQorCisgICBQcmV2ZW50cyBhIFRMU3YxLjEgY29ubmVjdGlvbi4gVGhpcyBvcHRpb24gaXMgb25seSBhcHBsaWNhYmxlIGluIGNvbmp1bmN0aW9uCisgICB3aXRoIDpjb25zdDpgUFJPVE9DT0xfU1NMdjIzYC4gSXQgcHJldmVudHMgdGhlIHBlZXJzIGZyb20gY2hvb3NpbmcgVExTdjEuMSBhcworICAgdGhlIHByb3RvY29sIHZlcnNpb24uIEF2YWlsYWJsZSBvbmx5IHdpdGggb3BlbnNzbCB2ZXJzaW9uIDEuMC4xKy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGRhdGE6OiBPUF9OT19UTFN2MV8yCisKKyAgIFByZXZlbnRzIGEgVExTdjEuMiBjb25uZWN0aW9uLiBUaGlzIG9wdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgaW4gY29uanVuY3Rpb24KKyAgIHdpdGggOmNvbnN0OmBQUk9UT0NPTF9TU0x2MjNgLiBJdCBwcmV2ZW50cyB0aGUgcGVlcnMgZnJvbSBjaG9vc2luZyBUTFN2MS4yIGFzCisgICB0aGUgcHJvdG9jb2wgdmVyc2lvbi4gQXZhaWxhYmxlIG9ubHkgd2l0aCBvcGVuc3NsIHZlcnNpb24gMS4wLjErLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKwogLi4gZGF0YTo6IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQogCiAgICBVc2UgdGhlIHNlcnZlcidzIGNpcGhlciBvcmRlcmluZyBwcmVmZXJlbmNlLCByYXRoZXIgdGhhbiB0aGUgY2xpZW50J3MuCkBAIC01MzMsNiArNTk5LDI4IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBkYXRhOjogQUxFUlRfREVTQ1JJUFRJT05fSEFORFNIQUtFX0ZBSUxVUkUKKyAgICAgICAgICBBTEVSVF9ERVNDUklQVElPTl9JTlRFUk5BTF9FUlJPUgorICAgICAgICAgIEFMRVJUX0RFU0NSSVBUSU9OXyoKKworICAgQWxlcnQgRGVzY3JpcHRpb25zIGZyb20gOnJmYzpgNTI0NmAgYW5kIG90aGVycy4gVGhlIGBJQU5BIFRMUyBBbGVydCBSZWdpc3RyeQorICAgPGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvdGxzLXBhcmFtZXRlcnMvdGxzLXBhcmFtZXRlcnMueG1sI3Rscy1wYXJhbWV0ZXJzLTY+YF8KKyAgIGNvbnRhaW5zIHRoaXMgbGlzdCBhbmQgcmVmZXJlbmNlcyB0byB0aGUgUkZDcyB3aGVyZSB0aGVpciBtZWFuaW5nIGlzIGRlZmluZWQuCisKKyAgIFVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gaW4KKyAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGRhdGE6OiBYNTA5X0FTTl9FTkNPRElORworICAgICAgICAgIFBLQ1NfN19BU05fRU5DT0RJTkcKKworICAgRW5jb2RpbmcgZmxhZ3MgZm9yIDpmdW5jOmBlbnVtX2NlcnRfc3RvcmVgLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIFNTTCBTb2NrZXRzCiAtLS0tLS0tLS0tLQpAQCAtNzAzLDYgKzc5MSwxOSBAQAogCiA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuY2VydF9zdG9yZV9zdGF0cygpCisKKyAgIEdldCBzdGF0aXN0aWNzIGFib3V0IHF1YW50aXRpZXMgb2YgbG9hZGVkIFguNTA5IGNlcnRpZmljYXRlcywgY291bnQgb2YKKyAgIFguNTA5IGNlcnRpZmljYXRlcyBmbGFnZ2VkIGFzIENBIGNlcnRpZmljYXRlcyBhbmQgY2VydGlmaWNhdGUgcmV2b2NhdGlvbgorICAgbGlzdHMgYXMgZGljdGlvbmFyeS4KKworICAgRXhhbXBsZSBmb3IgYSBjb250ZXh0IHdpdGggb25lIENBIGNlcnQgYW5kIG9uZSBvdGhlciBjZXJ0OjoKKworICAgICAgPj4+IGNvbnRleHQuY2VydF9zdG9yZV9zdGF0cygpCisgICAgICB7J2NybCc6IDAsICd4NTA5X2NhJzogMSwgJ3g1MDknOiAyfQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSkKIAogICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBjZXJ0aWZpY2F0ZS4gIFRoZSAqY2VydGZpbGUqCkBAIC03NDksNiArODUwLDE3IEBACiAgICBmb2xsb3dpbmcgYW4gYE9wZW5TU0wgc3BlY2lmaWMgbGF5b3V0CiAgICA8aHR0cDovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL3NzbC9TU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucy5odG1sPmBfLgogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmdldF9jYV9jZXJ0cyhiaW5hcnlfZm9ybT1GYWxzZSkKKworICAgR2V0IGEgbGlzdCBvZiBsb2FkZWQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcy4gSWYgdGhlCisgICBgYGJpbmFyeV9mb3JtYGAgcGFyYW1ldGVyIGlzIDpjb25zdDpgRmFsc2VgIGVhY2ggbGlzdAorICAgZW50cnkgaXMgYSBkaWN0IGxpa2UgdGhlIG91dHB1dCBvZiA6bWV0aDpgU1NMU29ja2V0LmdldHBlZXJjZXJ0YC4gT3RoZXJ3aXNlCisgICB0aGUgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIERFUi1lbmNvZGVkIGNlcnRpZmljYXRlcy4gVGhlIHJldHVybmVkIGxpc3QKKyAgIGRvZXMgbm90IGNvbnRhaW4gY2VydGlmaWNhdGVzIGZyb20gKmNhcGF0aCogdW5sZXNzIGEgY2VydGlmaWNhdGUgd2FzCisgICByZXF1ZXN0ZWQgYW5kIGxvYWRlZCBieSBhIFNTTCBjb25uZWN0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCiAgICBMb2FkIGEgc2V0IG9mIGRlZmF1bHQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyBmcm9tCkBAIC03ODYsNiArODk4LDU2IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKHNlcnZlcl9uYW1lX2NhbGxiYWNrKQorCisgICBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIFRMUyBDbGllbnQgSGVsbG8KKyAgIGhhbmRzaGFrZSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IHRoZSBTU0wvVExTIHNlcnZlciB3aGVuIHRoZSBUTFMgY2xpZW50CisgICBzcGVjaWZpZXMgYSBzZXJ2ZXIgbmFtZSBpbmRpY2F0aW9uLiBUaGUgc2VydmVyIG5hbWUgaW5kaWNhdGlvbiBtZWNoYW5pc20KKyAgIGlzIHNwZWNpZmllZCBpbiA6cmZjOmA2MDY2YCBzZWN0aW9uIDMgLSBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uLgorCisgICBPbmx5IG9uZSBjYWxsYmFjayBjYW4gYmUgc2V0IHBlciBgYFNTTENvbnRleHRgYC4gIElmICpzZXJ2ZXJfbmFtZV9jYWxsYmFjayoKKyAgIGlzIGBgTm9uZWBgIHRoZW4gdGhlIGNhbGxiYWNrIGlzIGRpc2FibGVkLiBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gYQorICAgc3Vic2VxdWVudCB0aW1lIHdpbGwgZGlzYWJsZSB0aGUgcHJldmlvdXNseSByZWdpc3RlcmVkIGNhbGxiYWNrLgorCisgICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24sICpzZXJ2ZXJfbmFtZV9jYWxsYmFjayosIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhyZWUKKyAgIGFyZ3VtZW50czsgdGhlIGZpcnN0IGJlaW5nIHRoZSA6Y2xhc3M6YHNzbC5TU0xTb2NrZXRgLCB0aGUgc2Vjb25kIGlzIGEgc3RyaW5nCisgICB0aGF0IHJlcHJlc2VudHMgdGhlIHNlcnZlciBuYW1lIHRoYXQgdGhlIGNsaWVudCBpcyBpbnRlbmRpbmcgdG8gY29tbXVuaWNhdGUKKyAgIChvciA6Y29uc3Q6YE5vbmVgIGlmIHRoZSBUTFMgQ2xpZW50IEhlbGxvIGRvZXMgbm90IGNvbnRhaW4gYSBzZXJ2ZXIgbmFtZSkKKyAgIGFuZCB0aGUgdGhpcmQgYXJndW1lbnQgaXMgdGhlIG9yaWdpbmFsIDpjbGFzczpgU1NMQ29udGV4dGAuIFRoZSBzZXJ2ZXIgbmFtZQorICAgYXJndW1lbnQgaXMgdGhlIElETkEgZGVjb2RlZCBzZXJ2ZXIgbmFtZS4KKworICAgQSB0eXBpY2FsIHVzZSBvZiB0aGlzIGNhbGxiYWNrIGlzIHRvIGNoYW5nZSB0aGUgOmNsYXNzOmBzc2wuU1NMU29ja2V0YCdzCisgICA6YXR0cjpgU1NMU29ja2V0LmNvbnRleHRgIGF0dHJpYnV0ZSB0byBhIG5ldyBvYmplY3Qgb2YgdHlwZQorICAgOmNsYXNzOmBTU0xDb250ZXh0YCByZXByZXNlbnRpbmcgYSBjZXJ0aWZpY2F0ZSBjaGFpbiB0aGF0IG1hdGNoZXMgdGhlIHNlcnZlcgorICAgbmFtZS4KKworICAgRHVlIHRvIHRoZSBlYXJseSBuZWdvdGlhdGlvbiBwaGFzZSBvZiB0aGUgVExTIGNvbm5lY3Rpb24sIG9ubHkgbGltaXRlZAorICAgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBhcmUgdXNhYmxlIGxpa2UKKyAgIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sYCBhbmQgOmF0dHI6YFNTTFNvY2tldC5jb250ZXh0YC4KKyAgIDptZXRoOmBTU0xTb2NrZXQuZ2V0cGVlcmNlcnRgLCA6bWV0aDpgU1NMU29ja2V0LmdldHBlZXJjZXJ0YCwKKyAgIDptZXRoOmBTU0xTb2NrZXQuY2lwaGVyYCBhbmQgOm1ldGg6YFNTTFNvY2tldC5jb21wcmVzc2AgbWV0aG9kcyByZXF1aXJlIHRoYXQKKyAgIHRoZSBUTFMgY29ubmVjdGlvbiBoYXMgcHJvZ3Jlc3NlZCBiZXlvbmQgdGhlIFRMUyBDbGllbnQgSGVsbG8gYW5kIHRoZXJlZm9yZQorICAgd2lsbCBub3QgY29udGFpbiByZXR1cm4gbWVhbmluZ2Z1bCB2YWx1ZXMgbm9yIGNhbiB0aGV5IGJlIGNhbGxlZCBzYWZlbHkuCisKKyAgIFRoZSAqc2VydmVyX25hbWVfY2FsbGJhY2sqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGBgTm9uZWBgIHRvIGFsbG93IHRoZQorICAgVExTIG5lZ290aWF0aW9uIHRvIGNvbnRpbnVlLiAgSWYgYSBUTFMgZmFpbHVyZSBpcyByZXF1aXJlZCwgYSBjb25zdGFudAorICAgOmNvbnN0OmBBTEVSVF9ERVNDUklQVElPTl8qIDxBTEVSVF9ERVNDUklQVElPTl9JTlRFUk5BTF9FUlJPUj5gIGNhbiBiZQorICAgcmV0dXJuZWQuICBPdGhlciByZXR1cm4gdmFsdWVzIHdpbGwgcmVzdWx0IGluIGEgVExTIGZhdGFsIGVycm9yIHdpdGgKKyAgIDpjb25zdDpgQUxFUlRfREVTQ1JJUFRJT05fSU5URVJOQUxfRVJST1JgLgorCisgICBJZiB0aGVyZSBpcyBhIElETkEgZGVjb2RpbmcgZXJyb3Igb24gdGhlIHNlcnZlciBuYW1lLCB0aGUgVExTIGNvbm5lY3Rpb24KKyAgIHdpbGwgdGVybWluYXRlIHdpdGggYW4gOmNvbnN0OmBBTEVSVF9ERVNDUklQVElPTl9JTlRFUk5BTF9FUlJPUmAgZmF0YWwgVExTCisgICBhbGVydCBtZXNzYWdlIHRvIHRoZSBjbGllbnQuCisKKyAgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgZnJvbSB0aGUgKnNlcnZlcl9uYW1lX2NhbGxiYWNrKiBmdW5jdGlvbiB0aGUgVExTCisgICBjb25uZWN0aW9uIHdpbGwgdGVybWluYXRlIHdpdGggYSBmYXRhbCBUTFMgYWxlcnQgbWVzc2FnZQorICAgOmNvbnN0OmBBTEVSVF9ERVNDUklQVElPTl9IQU5EU0hBS0VfRkFJTFVSRWAuCisKKyAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgdGhlIE9wZW5TU0wgbGlicmFyeQorICAgaGFkIE9QRU5TU0xfTk9fVExTRVhUIGRlZmluZWQgd2hlbiBpdCB3YXMgYnVpbHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zKGRoZmlsZSkKIAogICAgTG9hZCB0aGUga2V5IGdlbmVyYXRpb24gcGFyYW1ldGVycyBmb3IgRGlmZmllLUhlbG1hbiAoREgpIGtleSBleGNoYW5nZS4KQEAgLTEzMTksMyArMTQ4MSwxMiBAQAogCiAgICBgUkZDIDQzNjY6IFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKSBFeHRlbnNpb25zIDxodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM0MzY2PmBfCiAgICAgICAgQmxha2UtV2lsc29uIGV0LiBhbC4KKworICAgYFJGQyA1MjQ2OiBUaGUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIFByb3RvY29sIFZlcnNpb24gMS4yIDxodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmM1MjQ2PmBfCisgICAgICAgVC4gRGllcmtzIGV0LiBhbC4KKworICAgYFJGQyA2MDY2OiBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUykgRXh0ZW5zaW9ucyA8aHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNjA2Nj5gXworICAgICAgIEQuIEVhc3RsYWtlCisKKyAgIGBJQU5BIFRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIFBhcmFtZXRlcnMgPGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvdGxzLXBhcmFtZXRlcnMvdGxzLXBhcmFtZXRlcnMueG1sPmBfCisgICAgICAgSUFOQQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdAppbmRleCAwMjUxM2RmLi5hMDIxZmUyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdApAQCAtNiw3ICs2LDggQEAKICAgICAgICAgICAgICAgb3MubHN0YXQoKSBhbmQgb3MuZnN0YXQoKS4KIC4uIHNlY3Rpb25hdXRob3I6OiBTa2lwIE1vbnRhbmFybyA8c2tpcEBhdXRvbWF0cml4LmNvbT4KIAotKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvc3RhdC5weWAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTW9kdWxlcy9fc3RhdC5jYAorICAgICAgICAgICAgICAgICA6c291cmNlOmBMaWIvc3RhdC5weWAKIAogLS0tLS0tLS0tLS0tLS0KIApAQCAtMTUsNiArMTYsOSBAQAogZXhpc3QpLiAgRm9yIGNvbXBsZXRlIGRldGFpbHMgYWJvdXQgdGhlIDpjOmZ1bmM6YHN0YXRgLCA6YzpmdW5jOmBmc3RhdGAgYW5kCiA6YzpmdW5jOmBsc3RhdGAgY2FsbHMsIGNvbnN1bHQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgc3lzdGVtLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgVGhlIHN0YXQgbW9kdWxlIGlzIGJhY2tlZCBieSBhIEMgaW1wbGVtZW50YXRpb24uCisKIFRoZSA6bW9kOmBzdGF0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byB0ZXN0IGZvciBzcGVjaWZpYyBmaWxlCiB0eXBlczoKIApAQCAtNTMsNiArNTcsMjQgQEAKIAogICAgUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBtb2RlIGlzIGZyb20gYSBzb2NrZXQuCiAKKy4uIGZ1bmN0aW9uOjogU19JU0RPT1IobW9kZSkKKworICAgUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBtb2RlIGlzIGZyb20gYSBkb29yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gZnVuY3Rpb246OiBTX0lTUE9SVChtb2RlKQorCisgICBSZXR1cm4gbm9uLXplcm8gaWYgdGhlIG1vZGUgaXMgZnJvbSBhbiBldmVudCBwb3J0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gZnVuY3Rpb246OiBTX0lTV0hUKG1vZGUpCisKKyAgIFJldHVybiBub24temVybyBpZiB0aGUgbW9kZSBpcyBmcm9tIGEgd2hpdGVvdXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiBUd28gYWRkaXRpb25hbCBmdW5jdGlvbnMgYXJlIGRlZmluZWQgZm9yIG1vcmUgZ2VuZXJhbCBtYW5pcHVsYXRpb24gb2YgdGhlIGZpbGUncwogbW9kZToKIApAQCAtMTEzLDYgKzEzNSwxMCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgIFRoZSBmdW5jdGlvbiBzdXBwb3J0cyA6ZGF0YTpgU19JRkRPT1JgLCA6ZGF0YTpgU19JRlBPUlRgIGFuZAorICAgICAgOmRhdGE6YFNfSUZXSFRgLgorCiAKIEFsbCB0aGUgdmFyaWFibGVzIGJlbG93IGFyZSBzaW1wbHkgc3ltYm9saWMgaW5kZXhlcyBpbnRvIHRoZSAxMC10dXBsZSByZXR1cm5lZAogYnkgOmZ1bmM6YG9zLnN0YXRgLCA6ZnVuYzpgb3MuZnN0YXRgIG9yIDpmdW5jOmBvcy5sc3RhdGAuCkBAIC0yMTAsNiArMjM2LDI5IEBACiAKICAgIEZJRk8uCiAKKy4uIGRhdGE6OiBTX0lGRE9PUgorCisgICBEb29yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gZGF0YTo6IFNfSUZQT1JUCisKKyAgIEV2ZW50IHBvcnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisuLiBkYXRhOjogU19JRldIVAorCisgICBXaGl0ZW91dC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIG5vdGU6OgorCisgICA6ZGF0YTpgU19JRkRPT1JgLCA6ZGF0YTpgU19JRlBPUlRgIG9yIDpkYXRhOmBTX0lGV0hUYCBhcmUgZGVmaW5lZCBhcworICAgMCB3aGVuIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBoYXZlIHN1cHBvcnQgZm9yIHRoZSBmaWxlIHR5cGVzLgorCiBUaGUgZm9sbG93aW5nIGZsYWdzIGNhbiBhbHNvIGJlIHVzZWQgaW4gdGhlICptb2RlKiBhcmd1bWVudCBvZiA6ZnVuYzpgb3MuY2htb2RgOgogCiAuLiBkYXRhOjogU19JU1VJRApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggOTk0NTA2Yy4uZjJlYTM2MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC02Niw2ICs2NiwxOSBAQAogICAgZm9ybWF0IChgYGxlbihidWZmZXJbb2Zmc2V0Ol0pYGAgbXVzdCBiZSBhdCBsZWFzdCBgYGNhbGNzaXplKGZtdClgYCkuCiAKIAorLi4gZnVuY3Rpb246OiBpdGVyX3VucGFjayhmbXQsIGJ1ZmZlcikKKworICAgSXRlcmF0aXZlbHkgdW5wYWNrIGZyb20gdGhlIGJ1ZmZlciAqYnVmZmVyKiBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdAorICAgc3RyaW5nICpmbXQqLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGl0ZXJhdG9yIHdoaWNoIHdpbGwgcmVhZAorICAgZXF1YWxseS1zaXplZCBjaHVua3MgZnJvbSB0aGUgYnVmZmVyIHVudGlsIGFsbCBpdHMgY29udGVudHMgaGF2ZSBiZWVuCisgICBjb25zdW1lZC4gIFRoZSBidWZmZXIncyBzaXplIGluIGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgYW1vdW50CisgICBvZiBkYXRhIHJlcXVpcmVkIGJ5IHRoZSBmb3JtYXQsIGFzIHJlZmxlY3RlZCBieSA6ZnVuYzpgY2FsY3NpemVgLgorCisgICBFYWNoIGl0ZXJhdGlvbiB5aWVsZHMgYSB0dXBsZSBhcyBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBzdHJpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKIC4uIGZ1bmN0aW9uOjogY2FsY3NpemUoZm10KQogCiAgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHN0cnVjdCAoYW5kIGhlbmNlIG9mIHRoZSBieXRlcyBvYmplY3QgcHJvZHVjZWQgYnkKQEAgLTM4OCw2ICs0MDEsMTMgQEAKICAgICAgIChgYGxlbihidWZmZXJbb2Zmc2V0Ol0pYGAgbXVzdCBiZSBhdCBsZWFzdCA6YXR0cjpgc2VsZi5zaXplYCkuCiAKIAorICAgLi4gbWV0aG9kOjogaXRlcl91bnBhY2soYnVmZmVyKQorCisgICAgICBJZGVudGljYWwgdG8gdGhlIDpmdW5jOmBpdGVyX3VucGFja2AgZnVuY3Rpb24sIHVzaW5nIHRoZSBjb21waWxlZCBmb3JtYXQuCisgICAgICAoYGBsZW4oYnVmZmVyKWBgIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA6YXR0cjpgc2VsZi5zaXplYCkuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAgICAuLiBhdHRyaWJ1dGU6OiBmb3JtYXQKIAogICAgICAgVGhlIGZvcm1hdCBzdHJpbmcgdXNlZCB0byBjb25zdHJ1Y3QgdGhpcyBTdHJ1Y3Qgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCAzYTMwODIxLi5kYzdkMGIzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBpbnB1dD1Ob25lLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCiAKQEAgLTEyOSwxNSArMTI5LDIxIEBACiAgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KICAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKICAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KLSAgIEluIGFkZGl0aW9uLCAqc3Rkb3V0KiBpcyBub3QgcGVybWl0dGVkIGFzIGFuIGFyZ3VtZW50LCBhcyBpdCBpcyB1c2VkCi0gICBpbnRlcm5hbGx5IHRvIGNvbGxlY3QgdGhlIG91dHB1dCBmcm9tIHRoZSBzdWJwcm9jZXNzLgorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKmlucHV0KiBhbmQgKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8KKyAgIHRoYXQgaW50ZXJmYWNlLiAgSW4gYWRkaXRpb24sICpzdGRvdXQqIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gYXJndW1lbnQsIGFzCisgICBpdCBpcyB1c2VkIGludGVybmFsbHkgdG8gY29sbGVjdCB0aGUgb3V0cHV0IGZyb20gdGhlIHN1YnByb2Nlc3MuCiAKICAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKICAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKICAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKICAgIGhhcyB0ZXJtaW5hdGVkLgogCisgICBUaGUgKmlucHV0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCBhbmQgdGh1cyB0byB0aGUKKyAgIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHVzZWQgaXQgbXVzdCBiZSBhIGJ5dGUgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCisgICBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuICBXaGVuIHVzZWQsIHRoZSBpbnRlcm5hbCA6Y2xhc3M6YFBvcGVuYCBvYmplY3QKKyAgIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aXRoIGBgc3RkaW49UElQRWBgLCBhbmQgdGhlICpzdGRpbiogYXJndW1lbnQgbWF5CisgICBub3QgYmUgdXNlZCBhcyB3ZWxsLgorCiAgICBFeGFtcGxlczo6CiAKICAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImVjaG8iLCAiSGVsbG8gV29ybGQhIl0pCkBAIC0xNDYsNiArMTUyLDEwIEBACiAgICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJlY2hvIiwgIkhlbGxvIFdvcmxkISJdLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICdIZWxsbyBXb3JsZCFcbicKIAorICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsic2VkIiwgIi1lIiwgInMvZm9vL2Jhci8iXSwKKyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1iIndoZW4gaW4gdGhlIGNvdXJzZSBvZiBmb29tYW4gZXZlbnRzXG4iKQorICAgICAgYid3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgYmFybWFuIGV2ZW50c1xuJworCiAgICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImV4aXQgMSIsIHNoZWxsPVRydWUpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgICAuLi4KQEAgLTE2NywxMCArMTc3LDYgQEAKICAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKICAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCi0KLSAgIC4uCi0KICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBJbnZva2luZyB0aGUgc3lzdGVtIHNoZWxsIHdpdGggYGBzaGVsbD1UcnVlYGAgY2FuIGJlIGEgc2VjdXJpdHkgaGF6YXJkCkBAIC0xODMsOSArMTg5LDEzIEBACiAgICAgICByZWFkIGluIHRoZSBjdXJyZW50IHByb2Nlc3MsIHRoZSBjaGlsZCBwcm9jZXNzIG1heSBibG9jayBpZiBpdAogICAgICAgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gdGhlIHBpcGUgdG8gZmlsbCB1cCB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICppbnB1dCogd2FzIGFkZGVkLgogCiAuLiBkYXRhOjogREVWTlVMTAogCkBAIC04MzQsOCArODQ0LDYgQEAKICAgIFRoZSBuZXcgcHJvY2VzcyBoYXMgYSBuZXcgY29uc29sZSwgaW5zdGVhZCBvZiBpbmhlcml0aW5nIGl0cyBwYXJlbnQncwogICAgY29uc29sZSAodGhlIGRlZmF1bHQpLgogCi0gICBUaGlzIGZsYWcgaXMgYWx3YXlzIHNldCB3aGVuIDpjbGFzczpgUG9wZW5gIGlzIGNyZWF0ZWQgd2l0aCBgYHNoZWxsPVRydWVgYC4KLQogLi4gZGF0YTo6IENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUAogCiAgICBBIDpjbGFzczpgUG9wZW5gIGBgY3JlYXRpb25mbGFnc2BgIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoYXQgYSBuZXcgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzLnJzdCBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKaW5kZXggYmMxZDlmZS4uMzQxNzY0YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXMucnN0CkBAIC0zODAsNiArMzgwLDIxIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisuLiBmdW5jdGlvbjo6IGdldGFsbG9jYXRlZGJsb2NrcygpCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG1lbW9yeSBibG9ja3MgY3VycmVudGx5IGFsbG9jYXRlZCBieSB0aGUgaW50ZXJwcmV0ZXIsCisgICByZWdhcmRsZXNzIG9mIHRoZWlyIHNpemUuICBUaGlzIGZ1bmN0aW9uIGlzIG1haW5seSB1c2VmdWwgZm9yIHRyYWNraW5nCisgICBhbmQgZGVidWdnaW5nIG1lbW9yeSBsZWFrcy4gIEJlY2F1c2Ugb2YgdGhlIGludGVycHJldGVyJ3MgaW50ZXJuYWwKKyAgIGNhY2hlcywgdGhlIHJlc3VsdCBjYW4gdmFyeSBmcm9tIGNhbGwgdG8gY2FsbDsgeW91IG1heSBoYXZlIHRvIGNhbGwKKyAgIDpmdW5jOmBfY2xlYXJfdHlwZV9jYWNoZSgpYCBhbmQgOmZ1bmM6YGdjLmNvbGxlY3QoKWAgdG8gZ2V0IG1vcmUKKyAgIHByZWRpY3RhYmxlIHJlc3VsdHMuCisKKyAgIElmIGEgUHl0aG9uIGJ1aWxkIG9yIGltcGxlbWVudGF0aW9uIGNhbm5vdCByZWFzb25hYmx5IGNvbXB1dGUgdGhpcworICAgaW5mb3JtYXRpb24sIDpmdW5jOmBnZXRhbGxvY2F0ZWRibG9ja3MoKWAgaXMgYWxsb3dlZCB0byByZXR1cm4gMCBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBmdW5jdGlvbjo6IGdldGNoZWNraW50ZXJ2YWwoKQogCiAgICBSZXR1cm4gdGhlIGludGVycHJldGVyJ3MgImNoZWNrIGludGVydmFsIjsgc2VlIDpmdW5jOmBzZXRjaGVja2ludGVydmFsYC4KQEAgLTM5Niw5ICs0MTEsMTAgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRkbG9wZW5mbGFncygpCiAKLSAgIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmxhZ3MgdGhhdCBhcmUgdXNlZCBmb3IgOmM6ZnVuYzpgZGxvcGVuYCBjYWxscy4KLSAgIFRoZSBmbGFnIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUgOm1vZDpgY3R5cGVzYCBhbmQgOm1vZDpgRExGQ05gIG1vZHVsZXMuCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCisgICBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZsYWdzIHRoYXQgYXJlIHVzZWQgZm9yCisgICA6YzpmdW5jOmBkbG9wZW5gIGNhbGxzLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFnIHZhbHVlcyBjYW4gYmUKKyAgIGZvdW5kIGluIHRoZSA6bW9kOmBvc2AgbW9kdWxlIChgYFJUTERfeHh4YGAgY29uc3RhbnRzLCBlLmcuCisgICA6ZGF0YTpgb3MuUlRMRF9MQVpZYCkuICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAogLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtNjY0LDYgKzY4MCwxNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAorLi4gZGF0YTo6IF9faW50ZXJhY3RpdmVob29rX18KKworICAgV2hlbiBwcmVzZW50LCB0aGlzIGZ1bmN0aW9uIGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkICh3aXRoIG5vIGFyZ3VtZW50cykKKyAgIHdoZW4gdGhlIGludGVycHJldGVyIGlzIGxhdW5jaGVkIGluIDpyZWY6YGludGVyYWN0aXZlIG1vZGUgPHR1dC1pbnRlcmFjdGl2ZT5gLgorICAgVGhpcyBpcyBkb25lIGFmdGVyIHRoZSA6ZW52dmFyOmBQWVRIT05TVEFSVFVQYCBmaWxlIGlzIHJlYWQsIHNvIHRoYXQgeW91CisgICBjYW4gc2V0IHRoaXMgaG9vayB0aGVyZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gZnVuY3Rpb246OiBpbnRlcm4oc3RyaW5nKQogCiAgICBFbnRlciAqc3RyaW5nKiBpbiB0aGUgdGFibGUgb2YgImludGVybmVkIiBzdHJpbmdzIGFuZCByZXR1cm4gdGhlIGludGVybmVkIHN0cmluZwpAQCAtODExLDggKzgzNyw2IEBACiAgICBXaW5kb3dzICAgICAgICAgIGBgJ3dpbjMyJ2BgCiAgICBXaW5kb3dzL0N5Z3dpbiAgIGBgJ2N5Z3dpbidgYAogICAgTWFjIE9TIFggICAgICAgICBgYCdkYXJ3aW4nYGAKLSAgIE9TLzIgICAgICAgICAgICAgYGAnb3MyJ2BgCi0gICBPUy8yIEVNWCAgICAgICAgIGBgJ29zMmVteCdgYAogICAgPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKQEAgLTg4Myw3ICs5MDcsNyBAQAogICAgdGhlIGludGVycHJldGVyIGxvYWRzIGV4dGVuc2lvbiBtb2R1bGVzLiAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIHdpbGwgZW5hYmxlIGEKICAgIGxhenkgcmVzb2x2aW5nIG9mIHN5bWJvbHMgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUsIGlmIGNhbGxlZCBhcwogICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3MoMClgYC4gIFRvIHNoYXJlIHN5bWJvbHMgYWNyb3NzIGV4dGVuc2lvbiBtb2R1bGVzLCBjYWxsIGFzCi0gICBgYHN5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyBtb2R1bGVzCisgICBgYHN5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyB2YWx1ZXMKICAgIGNhbiBiZSBmb3VuZCBpbiB0aGUgOm1vZDpgb3NgIG1vZHVsZSAoYGBSVExEX3h4eGBgIGNvbnN0YW50cywgZS5nLgogICAgOmRhdGE6YG9zLlJUTERfTEFaWWApLgogCkBAIC0xMDkzLDcgKzExMTcsNiBAQAogICAgfCA6Y29uc3Q6YG5hbWVgICAgIHwgTmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ250J2BgOiBXaW5kb3dzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnb3MyJ2BgOiBPUy8yIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdwdGhyZWFkJ2BgOiBQT1NJWCB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NvbGFyaXMnYGA6IFNvbGFyaXMgdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0IGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdAppbmRleCBjNDdkY2NlLi41MzVhYzU0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKQEAgLTgzLDggKzgzLDYgQEAKICAgbG9jYXRlZCB1bmRlciB0aGUgdXNlciBob21lIGRpcmVjdG9yeS4KIC0gKm50Kjogc2NoZW1lIGZvciBOVCBwbGF0Zm9ybXMgbGlrZSBXaW5kb3dzLgogLSAqbnRfdXNlcio6IHNjaGVtZSBmb3IgTlQgcGxhdGZvcm1zLCB3aGVuIHRoZSAqdXNlciogb3B0aW9uIGlzIHVzZWQuCi0tICpvczIqOiBzY2hlbWUgZm9yIE9TLzIgcGxhdGZvcm1zLgotLSAqb3MyX2hvbWUqOiBzY2hlbWUgZm9yIE9TLzIgcGF0Zm9ybXMsIHdoZW4gdGhlICp1c2VyKiBvcHRpb24gaXMgdXNlZC4KIAogRWFjaCBzY2hlbWUgaXMgaXRzZWxmIGNvbXBvc2VkIG9mIGEgc2VyaWVzIG9mIHBhdGhzIGFuZCBlYWNoIHBhdGggaGFzIGEgdW5pcXVlCiBpZGVudGlmaWVyLiAgUHl0aG9uIGN1cnJlbnRseSB1c2VzIGVpZ2h0IHBhdGhzOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggYTQ4NzkxNy4uMGNjMTU4NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgIHQgPSBUaW1lciguLi4pICAgICAgICMgb3V0c2lkZSB0aGUgdHJ5L2V4Y2VwdAogICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIHQudGltZWl0KC4uLikgICAgIyBvciB0LnJlcGVhdCguLi4pCi0gICAgICAgICBleGNlcHQ6CisgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKIAogICAgICAgVGhlIGFkdmFudGFnZSBvdmVyIHRoZSBzdGFuZGFyZCB0cmFjZWJhY2sgaXMgdGhhdCBzb3VyY2UgbGluZXMgaW4gdGhlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnJzdCBiL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CmluZGV4IDgzYTUzNzUuLjM3NzY5NGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CkBAIC03NTAsMzIgKzc1MCw2IEBACiAgICBkaXNwbGF5ZWQuICBZb3UgY2FuIHVzZSB0aGVzZSA6bW9kOmB0a2ludGVyYCBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZXNlIHNwZWNpYWwKICAgIHBvaW50cyBpbiB0ZXh0IHdpZGdldHM6CiAKLS4uIGZ1bmN0aW9uOjogQXRFbmQoKQotICAgICAgcmVmZXJzIHRvIHRoZSBsYXN0IHBvc2l0aW9uIGluIHRoZSB0ZXh0Ci0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKLQotLi4gZnVuY3Rpb246OiBBdEluc2VydCgpCi0gICAgICByZWZlcnMgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSB0ZXh0IGN1cnNvciBpcwotCi0gICAuLiBkZXByZWNhdGVkOjogMy4zCi0KLS4uIGZ1bmN0aW9uOjogQXRTZWxGaXJzdCgpCi0gICAgICBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBwb2ludCBvZiB0aGUgc2VsZWN0ZWQgdGV4dAotCi0gICAuLiBkZXByZWNhdGVkOjogMy4zCi0KLS4uIGZ1bmN0aW9uOjogQXRTZWxMYXN0KCkKLSAgICAgIGRlbm90ZXMgdGhlIGxhc3QgcG9pbnQgb2YgdGhlIHNlbGVjdGVkIHRleHQgYW5kIGZpbmFsbHkKLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotCi0uLiBmdW5jdGlvbjo6IEF0KHhbLCB5XSkKLSAgICAgIHJlZmVycyB0byB0aGUgY2hhcmFjdGVyIGF0IHBpeGVsIGxvY2F0aW9uICp4KiwgKnkqICh3aXRoICp5KiBub3QgdXNlZCBpbiB0aGUKLSAgICAgIGNhc2Ugb2YgYSB0ZXh0IGVudHJ5IHdpZGdldCwgd2hpY2ggY29udGFpbnMgYSBzaW5nbGUgbGluZSBvZiB0ZXh0KS4KLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotCiBUZXh0IHdpZGdldCBpbmRleGVzCiAgICBUaGUgaW5kZXggbm90YXRpb24gZm9yIFRleHQgd2lkZ2V0cyBpcyB2ZXJ5IHJpY2ggYW5kIGlzIGJlc3QgZGVzY3JpYmVkIGluIHRoZSBUawogICAgbWFuIHBhZ2VzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKaW5kZXggMzJlNTczMy4uMDUzM2JlYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAorKysgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAKICAgICAgICBzb3VyY2UgPSBpbnB1dCgiPj4+ICIpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBleGVjKHNvdXJjZSwgZW52ZGlyKQotICAgICAgIGV4Y2VwdDoKKyAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICBwcmludCgiRXhjZXB0aW9uIGluIHVzZXIgY29kZToiKQogICAgICAgICAgICBwcmludCgiLSIqNjApCiAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IDY5NTQ4MGYuLmM0ZjU3ZTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTEwNyw5ICsxMDcsMzUgQEAKICAgIEMiLikKIAogCi0uLiBkYXRhOjogTW9kdWxlVHlwZQorLi4gY2xhc3M6OiBNb2R1bGVUeXBlKG5hbWUsIGRvYz1Ob25lKQogCi0gICBUaGUgdHlwZSBvZiBtb2R1bGVzLgorICAgVGhlIHR5cGUgb2YgOnRlcm06YG1vZHVsZXMgPG1vZHVsZT5gLiBDb25zdHJ1Y3RvciB0YWtlcyB0aGUgbmFtZSBvZiB0aGUKKyAgIG1vZHVsZSB0byBiZSBjcmVhdGVkIGFuZCBvcHRpb25hbGx5IGl0cyA6dGVybTpgZG9jc3RyaW5nYC4KKworICAgLi4gYXR0cmlidXRlOjogX19kb2NfXworCisgICAgICBUaGUgOnRlcm06YGRvY3N0cmluZ2Agb2YgdGhlIG1vZHVsZS4gRGVmYXVsdHMgdG8gYGBOb25lYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fbG9hZGVyX18KKworICAgICAgVGhlIDp0ZXJtOmBsb2FkZXJgIHdoaWNoIGxvYWRlZCB0aGUgbW9kdWxlLiBEZWZhdWx0cyB0byBgYE5vbmVgYC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgIERlZmF1bHRzIHRvIGBgTm9uZWBgLiBQcmV2aW91c2x5IHRoZSBhdHRyaWJ1dGUgd2FzIG9wdGlvbmFsLgorCisgICAuLiBhdHRyaWJ1dGU6OiBfX25hbWVfXworCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBfX3BhY2thZ2VfXworCisgICAgICBXaGljaCA6dGVybTpgcGFja2FnZWAgYSBtb2R1bGUgYmVsb25ncyB0by4gSWYgdGhlIG1vZHVsZSBpcyB0b3AtbGV2ZWwKKyAgICAgIChpLmUuIG5vdCBhIHBhcnQgb2YgYW55IHNwZWNpZmljIHBhY2thZ2UpIHRoZW4gdGhlIGF0dHJpYnV0ZSBzaG91bGQgYmUgc2V0CisgICAgICB0byBgYCcnYGAsIGVsc2UgaXQgc2hvdWxkIGJlIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZSAod2hpY2ggY2FuIGJlCisgICAgICA6YXR0cjpgX19uYW1lX19gIGlmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIGl0c2VsZikuIERlZmF1bHRzIHRvIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgICAgRGVmYXVsdHMgdG8gYGBOb25lYGAuIFByZXZpb3VzbHkgdGhlIGF0dHJpYnV0ZSB3YXMgb3B0aW9uYWwuCiAKIAogLi4gZGF0YTo6IFRyYWNlYmFja1R5cGUKQEAgLTIxMiw2ICsyMzgsOCBAQAogICAgICAgICAgICAgICAga2V5cyA9IHNvcnRlZChzZWxmLl9fZGljdF9fKQogICAgICAgICAgICAgICAgaXRlbXMgPSAoInt9PXshcn0iLmZvcm1hdChrLCBzZWxmLl9fZGljdF9fW2tdKSBmb3IgayBpbiBrZXlzKQogICAgICAgICAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLCAiLCAiLmpvaW4oaXRlbXMpKQorICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fCiAKICAgIGBgU2ltcGxlTmFtZXNwYWNlYGAgbWF5IGJlIHVzZWZ1bCBhcyBhIHJlcGxhY2VtZW50IGZvciBgYGNsYXNzIE5TOiBwYXNzYGAuCiAgICBIb3dldmVyLCBmb3IgYSBzdHJ1Y3R1cmVkIHJlY29yZCB0eXBlIHVzZSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggYWQ3MGRkOS4uMjZlY2VkNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTUsOCArMTUsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMS4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gNi4yLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjIuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTE2Niw2ICsxNjYsNiBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjIuMC91Y2QvTmFtZUFsaWFzZXMudHh0CiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4yLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdAppbmRleCBkN2Q2OTdkLi40NDRjMjA4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdApAQCAtMjc3LDYgKzI3NywyMCBAQAogICAgICAgIC4uLgogICAgIEF0dHJpYnV0ZUVycm9yOiBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnb2xkX21ldGhvZCcKIAorVXNpbmcgYSBzcGVjaWZpY2F0aW9uIGFsc28gZW5hYmxlcyBhIHNtYXJ0ZXIgbWF0Y2hpbmcgb2YgY2FsbHMgbWFkZSB0byB0aGUKK21vY2ssIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBzb21lIHBhcmFtZXRlcnMgd2VyZSBwYXNzZWQgYXMgcG9zaXRpb25hbCBvcgorbmFtZWQgYXJndW1lbnRzOjoKKworICAgPj4+IGRlZiBmKGEsIGIsIGMpOiBwYXNzCisgICAuLi4KKyAgID4+PiBtb2NrID0gTW9jayhzcGVjPWYpCisgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgPE1vY2sgbmFtZT0nbW9jaygpJyBpZD0nMTQwMTYxNTgwNDU2NTc2Jz4KKyAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChhPTEsIGI9MiwgYz0zKQorCitJZiB5b3Ugd2FudCB0aGlzIHNtYXJ0ZXIgbWF0Y2hpbmcgdG8gYWxzbyB3b3JrIHdpdGggbWV0aG9kIGNhbGxzIG9uIHRoZSBtb2NrLAoreW91IGNhbiB1c2UgOnJlZjpgYXV0by1zcGVjY2luZyA8YXV0by1zcGVjY2luZz5gLgorCiBJZiB5b3Ugd2FudCBhIHN0cm9uZ2VyIGZvcm0gb2Ygc3BlY2lmaWNhdGlvbiB0aGF0IHByZXZlbnRzIHRoZSBzZXR0aW5nCiBvZiBhcmJpdHJhcnkgYXR0cmlidXRlcyBhcyB3ZWxsIGFzIHRoZSBnZXR0aW5nIG9mIHRoZW0gdGhlbiB5b3UgY2FuIHVzZQogYHNwZWNfc2V0YCBpbnN0ZWFkIG9mIGBzcGVjYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKaW5kZXggMGRhNmY0OS4uYmUzNzg2OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKQEAgLTI2NCw3ICsyNjQsNiBAQAogICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CiAgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIDMsIHRlc3Q9J3dvdycpCiAKLQogICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKIAogICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlIGFuZCB3aXRoIHRoZSBzcGVjaWZpZWQKQEAgLTY4NSw2ICs2ODQsMjcgQEAKICAgICAgIC4uLgogICAgIEtleUVycm9yCiAKK0EgY2FsbGFibGUgbW9jayB3aGljaCB3YXMgY3JlYXRlZCB3aXRoIGEgKnNwZWMqIChvciBhICpzcGVjX3NldCopIHdpbGwKK2ludHJvc3BlY3QgdGhlIHNwZWNpZmljYXRpb24gb2JqZWN0J3Mgc2lnbmF0dXJlIHdoZW4gbWF0Y2hpbmcgY2FsbHMgdG8KK3RoZSBtb2NrLiAgVGhlcmVmb3JlLCBpdCBjYW4gbWF0Y2ggdGhlIGFjdHVhbCBjYWxsJ3MgYXJndW1lbnRzIHJlZ2FyZGxlc3MKK29mIHdoZXRoZXIgdGhleSB3ZXJlIHBhc3NlZCBwb3NpdGlvbmFsbHkgb3IgYnkgbmFtZTo6CisKKyAgID4+PiBkZWYgZihhLCBiLCBjKTogcGFzcworICAgLi4uCisgICA+Pj4gbW9jayA9IE1vY2soc3BlYz1mKQorICAgPj4+IG1vY2soMSwgMiwgYz0zKQorICAgPE1vY2sgbmFtZT0nbW9jaygpJyBpZD0nMTQwMTYxNTgwNDU2NTc2Jz4KKyAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzKQorICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKGE9MSwgYj0yLCBjPTMpCisKK1RoaXMgYXBwbGllcyB0byA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCwKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAsIDptZXRoOmB+TW9jay5hc3NlcnRfaGFzX2NhbGxzYCBhbmQKKzptZXRoOmB+TW9jay5hc3NlcnRfYW55X2NhbGxgLiAgV2hlbiA6cmVmOmBhdXRvLXNwZWNjaW5nYCwgaXQgd2lsbCBhbHNvCithcHBseSB0byBtZXRob2QgY2FsbHMgb24gdGhlIG1vY2sgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgQWRkZWQgc2lnbmF0dXJlIGludHJvc3BlY3Rpb24gb24gc3BlY2NlZCBhbmQgYXV0b3NwZWNjZWQgbW9jayBvYmplY3RzLgorCiAKIC4uIGNsYXNzOjogUHJvcGVydHlNb2NrKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTk2OSw4ICsxOTg5LDEyIEBACiAgICAgZGVmYXVsdCkgdGhlbiBhIGBNYWdpY01vY2tgIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LCB3aXRoIHRoZSBBUEkgbGltaXRlZAogICAgIHRvIG1ldGhvZHMgb3IgYXR0cmlidXRlcyBhdmFpbGFibGUgb24gc3RhbmRhcmQgZmlsZSBoYW5kbGVzLgogCi0gICAgYHJlYWRfZGF0YWAgaXMgYSBzdHJpbmcgZm9yIHRoZSBgcmVhZGAgbWV0aG9kIG9mIHRoZSBmaWxlIGhhbmRsZSB0byByZXR1cm4uCi0gICAgVGhpcyBpcyBhbiBlbXB0eSBzdHJpbmcgYnkgZGVmYXVsdC4KKyAgICBgcmVhZF9kYXRhYCBpcyBhIHN0cmluZyBmb3IgdGhlIGByZWFkYCwgYHJlYWRsaW5lYCwgYW5kIGByZWFkbGluZXNgIG1ldGhvZHMKKyAgICBvZiB0aGUgZmlsZSBoYW5kbGUgdG8gcmV0dXJuLiAgQ2FsbHMgdG8gdGhvc2UgbWV0aG9kcyB3aWxsIHRha2UgZGF0YSBmcm9tCisgICAgYHJlYWRfZGF0YWAgdW50aWwgaXQgaXMgZGVwbGV0ZWQuICBUaGUgbW9jayBvZiB0aGVzZSBtZXRob2RzIGlzIHByZXR0eQorICAgIHNpbXBsaXN0aWMuICBJZiB5b3UgbmVlZCBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgZGF0YSB0aGF0IHlvdSBhcmUgZmVlZGluZyB0bworICAgIHRoZSB0ZXN0ZWQgY29kZSB5b3Ugd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGlzIG1vY2sgZm9yIHlvdXJzZWxmLgorICAgIGByZWFkX2RhdGFgIGlzIGFuIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LgogCiBVc2luZyBgb3BlbmAgYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgYSBncmVhdCB3YXkgdG8gZW5zdXJlIHlvdXIgZmlsZSBoYW5kbGVzCiBhcmUgY2xvc2VkIHByb3Blcmx5IGFuZCBpcyBiZWNvbWluZyBjb21tb246OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CmluZGV4IDg0NWJmMGEuLjZjOWYyZjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKQEAgLTU2Myw2ICs1NjMsNjggQEAKIFNraXBwZWQgY2xhc3NlcyB3aWxsIG5vdCBoYXZlIDptZXRoOmBzZXRVcENsYXNzYCBvciA6bWV0aDpgdGVhckRvd25DbGFzc2AgcnVuLgogCiAKKy4uIF9zdWJ0ZXN0czoKKworRGlzdGluZ3Vpc2hpbmcgdGVzdCBpdGVyYXRpb25zIHVzaW5nIHN1YnRlc3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy40CisKK1doZW4gc29tZSBvZiB5b3VyIHRlc3RzIGRpZmZlciBvbmx5IGJ5IGEgc29tZSB2ZXJ5IHNtYWxsIGRpZmZlcmVuY2VzLCBmb3IKK2luc3RhbmNlIHNvbWUgcGFyYW1ldGVycywgdW5pdHRlc3QgYWxsb3dzIHlvdSB0byBkaXN0aW5ndWlzaCB0aGVtIGluc2lkZQordGhlIGJvZHkgb2YgYSB0ZXN0IG1ldGhvZCB1c2luZyB0aGUgOm1ldGg6YH5UZXN0Q2FzZS5zdWJUZXN0YCBjb250ZXh0IG1hbmFnZXIuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHRlc3Q6OgorCisgICBjbGFzcyBOdW1iZXJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAgICBkZWYgdGVzdF9ldmVuKHNlbGYpOgorICAgICAgICAgICAiIiIKKyAgICAgICAgICAgVGVzdCB0aGF0IG51bWJlcnMgYmV0d2VlbiAwIGFuZCA1IGFyZSBhbGwgZXZlbi4KKyAgICAgICAgICAgIiIiCisgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDYpOgorICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaT1pKToKKyAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJSAyLCAwKQorCit3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyBvdXRwdXQ6OgorCisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBGQUlMOiB0ZXN0X2V2ZW4gKF9fbWFpbl9fLk51bWJlcnNUZXN0KSAoaT0xKQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICBGaWxlICJzdWJ0ZXN0cy5weSIsIGxpbmUgMzIsIGluIHRlc3RfZXZlbgorICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSAlIDIsIDApCisgICBBc3NlcnRpb25FcnJvcjogMSAhPSAwCisKKyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIEZBSUw6IHRlc3RfZXZlbiAoX19tYWluX18uTnVtYmVyc1Rlc3QpIChpPTMpCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgInN1YnRlc3RzLnB5IiwgbGluZSAzMiwgaW4gdGVzdF9ldmVuCisgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICUgMiwgMCkKKyAgIEFzc2VydGlvbkVycm9yOiAxICE9IDAKKworICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgRkFJTDogdGVzdF9ldmVuIChfX21haW5fXy5OdW1iZXJzVGVzdCkgKGk9NSkKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAic3VidGVzdHMucHkiLCBsaW5lIDMyLCBpbiB0ZXN0X2V2ZW4KKyAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJSAyLCAwKQorICAgQXNzZXJ0aW9uRXJyb3I6IDEgIT0gMAorCitXaXRob3V0IHVzaW5nIGEgc3VidGVzdCwgZXhlY3V0aW9uIHdvdWxkIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUsCithbmQgdGhlIGVycm9yIHdvdWxkIGJlIGxlc3MgZWFzeSB0byBkaWFnbm9zZSBiZWNhdXNlIHRoZSB2YWx1ZSBvZiBgYGlgYAord291bGRuJ3QgYmUgZGlzcGxheWVkOjoKKworICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgRkFJTDogdGVzdF9ldmVuIChfX21haW5fXy5OdW1iZXJzVGVzdCkKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAic3VidGVzdHMucHkiLCBsaW5lIDMyLCBpbiB0ZXN0X2V2ZW4KKyAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJSAyLCAwKQorICAgQXNzZXJ0aW9uRXJyb3I6IDEgIT0gMAorCisKIC4uIF91bml0dGVzdC1jb250ZW50czoKIAogQ2xhc3NlcyBhbmQgZnVuY3Rpb25zCkBAIC02NzYsNiArNzM4LDIxIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisgICAuLiBtZXRob2Q6OiBzdWJUZXN0KG1zZz1Ob25lLCAqKnBhcmFtcykKKworICAgICAgUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGV4ZWN1dGVzIHRoZSBlbmNsb3NlZCBjb2RlIGJsb2NrIGFzIGEKKyAgICAgIHN1YnRlc3QuICAqbXNnKiBhbmQgKnBhcmFtcyogYXJlIG9wdGlvbmFsLCBhcmJpdHJhcnkgdmFsdWVzIHdoaWNoIGFyZQorICAgICAgZGlzcGxheWVkIHdoZW5ldmVyIGEgc3VidGVzdCBmYWlscywgYWxsb3dpbmcgeW91IHRvIGlkZW50aWZ5IHRoZW0KKyAgICAgIGNsZWFybHkuCisKKyAgICAgIEEgdGVzdCBjYXNlIGNhbiBjb250YWluIGFueSBudW1iZXIgb2Ygc3VidGVzdCBkZWNsYXJhdGlvbnMsIGFuZAorICAgICAgdGhleSBjYW4gYmUgYXJiaXRyYXJpbHkgbmVzdGVkLgorCisgICAgICBTZWUgOnJlZjpgc3VidGVzdHNgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAgICAuLiBtZXRob2Q6OiBkZWJ1ZygpCiAKICAgICAgIFJ1biB0aGUgdGVzdCB3aXRob3V0IGNvbGxlY3RpbmcgdGhlIHJlc3VsdC4gIFRoaXMgYWxsb3dzIGV4Y2VwdGlvbnMgcmFpc2VkCkBAIC0xNTAwLDcgKzE1NzcsOSBAQAogICAgICAgZGlyZWN0b3J5IG11c3QgYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkuCiAKICAgICAgIElmIGltcG9ydGluZyBhIG1vZHVsZSBmYWlscywgZm9yIGV4YW1wbGUgZHVlIHRvIGEgc3ludGF4IGVycm9yLCB0aGVuIHRoaXMKLSAgICAgIHdpbGwgYmUgcmVjb3JkZWQgYXMgYSBzaW5nbGUgZXJyb3IgYW5kIGRpc2NvdmVyeSB3aWxsIGNvbnRpbnVlLgorICAgICAgd2lsbCBiZSByZWNvcmRlZCBhcyBhIHNpbmdsZSBlcnJvciBhbmQgZGlzY292ZXJ5IHdpbGwgY29udGludWUuICBJZiB0aGUKKyAgICAgIGltcG9ydCBmYWlsdXJlIGlzIGR1ZSB0byA6ZXhjOmBTa2lwVGVzdGAgYmVpbmcgcmFpc2VkLCBpdCB3aWxsIGJlIHJlY29yZGVkCisgICAgICBhcyBhIHNraXAgaW5zdGVhZCBvZiBhbiBlcnJvci4KIAogICAgICAgSWYgYSB0ZXN0IHBhY2thZ2UgbmFtZSAoZGlyZWN0b3J5IHdpdGggOmZpbGU6YF9faW5pdF9fLnB5YCkgbWF0Y2hlcyB0aGUKICAgICAgIHBhdHRlcm4gdGhlbiB0aGUgcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZm9yIGEgYGBsb2FkX3Rlc3RzYGAKQEAgLTE1MTksNiArMTU5OCwxNSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKyAgICAgICAgIE1vZHVsZXMgdGhhdCByYWlzZSA6ZXhjOmBTa2lwVGVzdGAgb24gaW1wb3J0IGFyZSByZWNvcmRlZCBhcyBza2lwcywKKyAgICAgICAgIG5vdCBlcnJvcnMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICAgICBQYXRocyBhcmUgc29ydGVkIGJlZm9yZSBiZWluZyBpbXBvcnRlZCB0byBlbnN1cmUgZXhlY3V0aW9uIG9yZGVyIGZvciBhCisgICAgICAgICBnaXZlbiB0ZXN0IHN1aXRlIGlzIHRoZSBzYW1lIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW0ncyBvcmRlcmluZworICAgICAgICAgaXMgbm90IGRlcGVuZGVudCBvbiBmaWxlIG5hbWUgbGlrZSBpbiBleHQzLzQuCisKIAogICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIG9mIGEgOmNsYXNzOmBUZXN0TG9hZGVyYCBjYW4gYmUgY29uZmlndXJlZCBlaXRoZXIgYnkKICAgIHN1YmNsYXNzaW5nIG9yIGFzc2lnbm1lbnQgb24gYW4gaW5zdGFuY2U6CkBAIC0xNzI5LDYgKzE4MTcsMjIgQEAKICAgICAgIDphdHRyOmB1bmV4cGVjdGVkU3VjY2Vzc2VzYCBhdHRyaWJ1dGUuCiAKIAorICAgLi4gbWV0aG9kOjogYWRkU3ViVGVzdCh0ZXN0LCBzdWJ0ZXN0LCBvdXRjb21lKQorCisgICAgICBDYWxsZWQgd2hlbiBhIHN1YnRlc3QgZmluaXNoZXMuICAqdGVzdCogaXMgdGhlIHRlc3QgY2FzZQorICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgdGVzdCBtZXRob2QuICAqc3VidGVzdCogaXMgYSBjdXN0b20KKyAgICAgIDpjbGFzczpgVGVzdENhc2VgIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHN1YnRlc3QuCisKKyAgICAgIElmICpvdXRjb21lKiBpcyA6Y29uc3Q6YE5vbmVgLCB0aGUgc3VidGVzdCBzdWNjZWVkZWQuICBPdGhlcndpc2UsCisgICAgICBpdCBmYWlsZWQgd2l0aCBhbiBleGNlcHRpb24gd2hlcmUgKm91dGNvbWUqIGlzIGEgdHVwbGUgb2YgdGhlIGZvcm0KKyAgICAgIHJldHVybmVkIGJ5IDpmdW5jOmBzeXMuZXhjX2luZm9gOiBgYCh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKWBgLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdGhpbmcgd2hlbiB0aGUgb3V0Y29tZSBpcyBhCisgICAgICBzdWNjZXNzLCBhbmQgcmVjb3JkcyBzdWJ0ZXN0IGZhaWx1cmVzIGFzIG5vcm1hbCBmYWlsdXJlcy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gY2xhc3M6OiBUZXh0VGVzdFJlc3VsdChzdHJlYW0sIGRlc2NyaXB0aW9ucywgdmVyYm9zaXR5KQogCiAgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgVGVzdFJlc3VsdGAgdXNlZCBieSB0aGUKQEAgLTE4MzgsNiArMTk0MiwxMCBAQAogICAgICAgVGhlICp2ZXJib3NpdHkqLCAqZmFpbGZhc3QqLCAqY2F0Y2hicmVhayosICpidWZmZXIqCiAgICAgICBhbmQgKndhcm5pbmdzKiBwYXJhbWV0ZXJzIHdlcmUgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBUaGUgKmRlZmF1bHRUZXN0KiBwYXJhbWV0ZXIgd2FzIGNoYW5nZWQgdG8gYWxzbyBhY2NlcHQgYW4gaXRlcmFibGUgb2YKKyAgICAgIHRlc3QgbmFtZXMuCisKIAogbG9hZF90ZXN0cyBQcm90b2NvbAogIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKaW5kZXggOWMzZmU5MS4uN2JkMDRiMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CkBAIC00NSw2ICs0NSwxMyBAQAogCiAgICAgICBUaGlzIGlzIHVzdWFsbHkgYSBzdHJpbmcgZXhwbGFpbmluZyB0aGUgcmVhc29uIGZvciB0aGlzIGVycm9yLgogCisgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJzCisKKyAgICAgIFRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgZm9yIHRoZSBIVFRQIHJlcXVlc3QgdGhhdCBjYXVzZSB0aGUKKyAgICAgIDpleGM6YEhUVFBFcnJvcmAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAuLiBleGNlcHRpb246OiBDb250ZW50VG9vU2hvcnRFcnJvcihtc2csIGNvbnRlbnQpCiAKICAgIFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSA6ZnVuYzpgdXJscmV0cmlldmVgIGZ1bmN0aW9uIGRldGVjdHMgdGhhdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IDlmM2UxMmUuLjkxNjczZjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTM1Niw2ICszNTYsMTEgQEAKIAogICAgT3BlbiBsb2NhbCBmaWxlcy4KIAorLi4gY2xhc3M6OiBEYXRhSGFuZGxlcigpCisKKyAgIE9wZW4gZGF0YSBVUkxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gY2xhc3M6OiBGVFBIYW5kbGVyKCkKIApAQCAtMzkxLDYgKzM5NiwxMiBAQAogCiAgICBUaGUgb3JpZ2luYWwgVVJMIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisKKyAgIFJlcXVlc3QuZnVsbF91cmwgaXMgYSBwcm9wZXJ0eSB3aXRoIHNldHRlciwgZ2V0dGVyIGFuZCBhIGRlbGV0ZXIuIEdldHRpbmcKKyAgIDphdHRyOmB+UmVxdWVzdC5mdWxsX3VybGAgcmV0dXJucyB0aGUgb3JpZ2luYWwgcmVxdWVzdCBVUkwgd2l0aCB0aGUKKyAgIGZyYWdtZW50LCBpZiBpdCB3YXMgcHJlc2VudC4KKwogLi4gYXR0cmlidXRlOjogUmVxdWVzdC50eXBlCiAKICAgIFRoZSBVUkkgc2NoZW1lLgpAQCAtNDEzLDYgKzQyNCwxMCBAQAogCiAgICBUaGUgZW50aXR5IGJvZHkgZm9yIHRoZSByZXF1ZXN0LCBvciBOb25lIGlmIG5vdCBzcGVjaWZpZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBDaGFuZ2luZyB2YWx1ZSBvZiA6YXR0cjpgUmVxdWVzdC5kYXRhYCBub3cgZGVsZXRlcyAiQ29udGVudC1MZW5ndGgiCisgICAgICBoZWFkZXIgaWYgaXQgd2FzIHByZXZpb3VzbHkgc2V0IG9yIGNhbGN1bGF0ZWQuCisKIC4uIGF0dHJpYnV0ZTo6IFJlcXVlc3QudW52ZXJpZmlhYmxlCiAKICAgIGJvb2xlYW4sIGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIHVudmVyaWZpYWJsZSBhcyBkZWZpbmVkCkBAIC00NjEsMTAgKzQ3NiwyMiBAQAogICAgdW5yZWRpcmVjdGVkKS4KIAogCisuLiBtZXRob2Q6OiBSZXF1ZXN0LnJlbW92ZV9oZWFkZXIoaGVhZGVyKQorCisgICBSZW1vdmUgbmFtZWQgaGVhZGVyIGZyb20gdGhlIHJlcXVlc3QgaW5zdGFuY2UgKGJvdGggZnJvbSByZWd1bGFyIGFuZAorICAgdW5yZWRpcmVjdGVkIGhlYWRlcnMpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9mdWxsX3VybCgpCiAKICAgIFJldHVybiB0aGUgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKKworICAgUmV0dXJucyA6YXR0cjpgUmVxdWVzdC5mdWxsX3VybGAKKwogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LnNldF9wcm94eShob3N0LCB0eXBlKQogCkBAIC00NzMsNTQgKzUwMCw2IEBACiAgICBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgogCiAKLS4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2RhdGEoZGF0YSkKLQotICAgU2V0IHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGRhdGEgdG8gKmRhdGEqLiAgVGhpcyBpcyBpZ25vcmVkIGJ5IGFsbCBoYW5kbGVycyBleGNlcHQKLSAgIEhUVFAgaGFuZGxlcnMgLS0tIGFuZCB0aGVyZSBpdCBzaG91bGQgYmUgYSBieXRlIHN0cmluZywgYW5kIHdpbGwgY2hhbmdlIHRoZQotICAgcmVxdWVzdCB0byBiZSBgYFBPU1RgYCByYXRoZXIgdGhhbiBgYEdFVGBgLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQotICAgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCi0KLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjQKLQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0Lmhhc19kYXRhKCkKLQotICAgUmV0dXJuIHdoZXRoZXIgdGhlIGluc3RhbmNlIGhhcyBhIG5vbi1cIGBgTm9uZWBgIGRhdGEuIERlcHJlY2F0ZWQgaW4gMy4zLAotICAgdXNlIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgotCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy40Ci0KLQotLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfZGF0YSgpCi0KLSAgIFJldHVybiB0aGUgaW5zdGFuY2UncyBkYXRhLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KLQotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNAotCi0KLS4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X3R5cGUoKQotCi0gICBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIFVSTCAtLS0gYWxzbyBrbm93biBhcyB0aGUgc2NoZW1lLiAgRGVwcmVjYXRlZCBpbiAzLjMsCi0gICB1c2UgOmF0dHI6YFJlcXVlc3QudHlwZWAuCi0KLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjQKLQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9ob3N0KCkKLQotICAgUmV0dXJuIHRoZSBob3N0IHRvIHdoaWNoIGEgY29ubmVjdGlvbiB3aWxsIGJlIG1hZGUuIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKLSAgIDphdHRyOmBSZXF1ZXN0Lmhvc3RgLgotCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy40Ci0KLQotLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfc2VsZWN0b3IoKQotCi0gICBSZXR1cm4gdGhlIHNlbGVjdG9yIC0tLSB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgaXMgc2VudCB0byB0aGUgc2VydmVyLgotICAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5zZWxlY3RvcmAuCi0KLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjQKLQogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaGVhZGVyKGhlYWRlcl9uYW1lLCBkZWZhdWx0PU5vbmUpCiAKICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGhlYWRlci4gSWYgdGhlIGhlYWRlciBpcyBub3QgcHJlc2VudCwgcmV0dXJuCkBAIC01MzEsMjYgKzUxMCwxMCBAQAogCiAgICBSZXR1cm4gYSBsaXN0IG9mIHR1cGxlcyAoaGVhZGVyX25hbWUsIGhlYWRlcl92YWx1ZSkgb2YgdGhlIFJlcXVlc3QgaGVhZGVycy4KIAotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LnNldF9wcm94eShob3N0LCB0eXBlKQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9vcmlnaW5fcmVxX2hvc3QoKQotCi0gICBSZXR1cm4gdGhlIHJlcXVlc3QtaG9zdCBvZiB0aGUgb3JpZ2luIHRyYW5zYWN0aW9uLCBhcyBkZWZpbmVkIGJ5Ci0gICA6cmZjOmAyOTY1YC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCi0gICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0Lm9yaWdpbl9yZXFfaG9zdGAuCi0KLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjQKLQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpCi0KLSAgIFJldHVybiB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIHVudmVyaWZpYWJsZSwgYXMgZGVmaW5lZCBieSBSRkMgMjk2NS4gU2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuICBEZXByZWNhdGVkIGluIDMuMywgdXNlCi0gICA6YXR0cjpgUmVxdWVzdC51bnZlcmlmaWFibGVgLgotCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy40Ci0KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgIFJlcXVlc3QgbWV0aG9kcyBhZGRfZGF0YSwgaGFzX2RhdGEsIGdldF9kYXRhLCBnZXRfdHlwZSwgZ2V0X2hvc3QsCisgIGdldF9zZWxlY3RvciwgZ2V0X29yaWdpbl9yZXFfaG9zdCBhbmQgaXNfdW52ZXJpZmlhYmxlIGRlcHJlY2F0ZWQgc2luY2UgMy4zCisgIGhhdmUgYmVlbiByZW1vdmVkLgogCiAuLiBfb3BlbmVyLWRpcmVjdG9yLW9iamVjdHM6CiAKQEAgLTk4Miw2ICs5NDUsMjEgQEAKICAgICAgIGhvc3RuYW1lIGlzIGdpdmVuLCBhbiA6ZXhjOmBVUkxFcnJvcmAgaXMgcmFpc2VkLgogCiAKKy4uIF9kYXRhLWhhbmRsZXItb2JqZWN0czoKKworRGF0YUhhbmRsZXIgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtZXRob2Q6OiBEYXRhSGFuZGxlci5kYXRhX29wZW4ocmVxKQorCisgICBSZWFkIGEgZGF0YSBVUkwuIFRoaXMga2luZCBvZiBVUkwgY29udGFpbnMgdGhlIGNvbnRlbnQgZW5jb2RlZCBpbiB0aGUgVVJMCisgICBpdHNlbGYuIFRoZSBkYXRhIFVSTCBzeW50YXggaXMgc3BlY2lmaWVkIGluIDpyZmM6YDIzOTdgLiBUaGlzIGltcGxlbWVudGF0aW9uCisgICBpZ25vcmVzIHdoaXRlIHNwYWNlcyBpbiBiYXNlNjQgZW5jb2RlZCBkYXRhIFVSTHMgc28gdGhlIFVSTCBtYXkgYmUgd3JhcHBlZAorICAgaW4gd2hhdGV2ZXIgc291cmNlIGZpbGUgaXQgY29tZXMgZnJvbS4gQnV0IGV2ZW4gdGhvdWdoIHNvbWUgYnJvd3NlcnMgZG9uJ3QKKyAgIG1pbmQgYWJvdXQgYSBtaXNzaW5nIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiBhIGJhc2U2NCBlbmNvZGVkIGRhdGEgVVJMLCB0aGlzCisgICBpbXBsZW1lbnRhdGlvbiB3aWxsIHJhaXNlIGFuIDpleGM6YFZhbHVlRXJyb3JgIGluIHRoYXQgY2FzZS4KKworCiAuLiBfZnRwLWhhbmRsZXItb2JqZWN0czoKIAogRlRQSGFuZGxlciBPYmplY3RzCkBAIC0xMzk3LDcgKzEzNzUsOSBAQAogICAgICBwYWlyOiBGVFA7IHByb3RvY29sCiAKICogQ3VycmVudGx5LCBvbmx5IHRoZSBmb2xsb3dpbmcgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ6IEhUVFAgKHZlcnNpb25zIDAuOSBhbmQKLSAgMS4wKSwgRlRQLCBhbmQgbG9jYWwgZmlsZXMuCisgIDEuMCksIEZUUCwgbG9jYWwgZmlsZXMsIGFuZCBkYXRhIFVSTHMuCisKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgQWRkZWQgc3VwcG9ydCBmb3IgZGF0YSBVUkxzLgogCiAqIFRoZSBjYWNoaW5nIGZlYXR1cmUgb2YgOmZ1bmM6YHVybHJldHJpZXZlYCBoYXMgYmVlbiBkaXNhYmxlZCB1bnRpbCBzb21lb25lCiAgIGZpbmRzIHRoZSB0aW1lIHRvIGhhY2sgcHJvcGVyIHByb2Nlc3Npbmcgb2YgRXhwaXJhdGlvbiB0aW1lIGhlYWRlcnMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS92ZW52LnJzdCBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CmluZGV4IDgwYzc1YzIuLjc0ZWZmYWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CkBAIC03OSw4ICs3OSw4IEBACiAgICAgKiBgYHN5c3RlbV9zaXRlX3BhY2thZ2VzYGAgLS0gYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhhdCB0aGUgc3lzdGVtIFB5dGhvbgogICAgICAgc2l0ZS1wYWNrYWdlcyBzaG91bGQgYmUgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudCAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KIAotICAgICogYGBjbGVhcmBgIC0tIGEgQm9vbGVhbiB2YWx1ZSB3aGljaCwgaWYgVHJ1ZSwgd2lsbCBkZWxldGUgYW55IGV4aXN0aW5nIHRhcmdldAotICAgICAgZGlyZWN0b3J5IGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24gKGRlZmF1bHRzIHRvIGBgRmFsc2VgYCkuCisgICAgKiBgYGNsZWFyYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIGRlbGV0ZSB0aGUgY29udGVudHMgb2YKKyAgICAgIGFueSBleGlzdGluZyB0YXJnZXQgZGlyZWN0b3J5LCBiZWZvcmUgY3JlYXRpbmcgdGhlIGVudmlyb25tZW50LgogCiAgICAgKiBgYHN5bWxpbmtzYGAgLS0gYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0byBhdHRlbXB0IHRvIHN5bWxpbmsgdGhlCiAgICAgICBQeXRob24gYmluYXJ5IChhbmQgYW55IG5lY2Vzc2FyeSBETExzIG9yIG90aGVyIGJpbmFyaWVzLApAQCAtOTIsNyArOTIsNiBAQAogICAgICAgdXBncmFkZWQgaW4tcGxhY2UgKGRlZmF1bHRzIHRvIGBgRmFsc2VgYCkuCiAKIAotCiAgICAgQ3JlYXRvcnMgb2YgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCB0b29scyB3aWxsIGJlIGZyZWUgdG8gdXNlIHRoZQogICAgIHByb3ZpZGVkIGBgRW52QnVpbGRlcmBgIGNsYXNzIGFzIGEgYmFzZSBjbGFzcy4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2F2ZS5yc3QgYi9Eb2MvbGlicmFyeS93YXZlLnJzdAppbmRleCBhZmFmYjQ1Li45ZDEyNDU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93YXZlLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXZlLnJzdApAQCAtMTksMjYgKzE5LDMwIEBACiAuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgbW9kZT1Ob25lKQogCiAgICBJZiAqZmlsZSogaXMgYSBzdHJpbmcsIG9wZW4gdGhlIGZpbGUgYnkgdGhhdCBuYW1lLCBvdGhlcndpc2UgdHJlYXQgaXQgYXMgYQotICAgc2Vla2FibGUgZmlsZS1saWtlIG9iamVjdC4gICptb2RlKiBjYW4gYmUgYW55IG9mCisgICBzZWVrYWJsZSBmaWxlLWxpa2Ugb2JqZWN0LiAgKm1vZGUqIGNhbiBiZToKIAotICAgYGAncidgYCwgYGAncmInYGAKKyAgIGBgJ3JiJ2BgCiAgICAgICBSZWFkIG9ubHkgbW9kZS4KIAotICAgYGAndydgYCwgYGAnd2InYGAKKyAgIGBgJ3diJ2BgCiAgICAgICBXcml0ZSBvbmx5IG1vZGUuCiAKICAgIE5vdGUgdGhhdCBpdCBkb2VzIG5vdCBhbGxvdyByZWFkL3dyaXRlIFdBViBmaWxlcy4KIAotICAgQSAqbW9kZSogb2YgYGAncidgYCBvciBgYCdyYidgYCByZXR1cm5zIGEgOmNsYXNzOmBXYXZlX3JlYWRgIG9iamVjdCwgd2hpbGUgYQotICAgKm1vZGUqIG9mIGBgJ3cnYGAgb3IgYGAnd2InYGAgcmV0dXJucyBhIDpjbGFzczpgV2F2ZV93cml0ZWAgb2JqZWN0LiAgSWYKLSAgICptb2RlKiBpcyBvbWl0dGVkIGFuZCBhIGZpbGUtbGlrZSBvYmplY3QgaXMgcGFzc2VkIGFzICpmaWxlKiwgYGBmaWxlLm1vZGVgYAotICAgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgKm1vZGUqICh0aGUgYGAnYidgYCBmbGFnIGlzIHN0aWxsIGFkZGVkIGlmCi0gICBuZWNlc3NhcnkpLgorICAgQSAqbW9kZSogb2YgYGAncmInYGAgcmV0dXJucyBhIDpjbGFzczpgV2F2ZV9yZWFkYCBvYmplY3QsIHdoaWxlIGEgKm1vZGUqIG9mCisgICBgYCd3YidgYCByZXR1cm5zIGEgOmNsYXNzOmBXYXZlX3dyaXRlYCBvYmplY3QuICBJZiAqbW9kZSogaXMgb21pdHRlZCBhbmQgYQorICAgZmlsZS1saWtlIG9iamVjdCBpcyBwYXNzZWQgYXMgKmZpbGUqLCBgYGZpbGUubW9kZWBgIGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQKKyAgIHZhbHVlIGZvciAqbW9kZSouCiAKICAgIElmIHlvdSBwYXNzIGluIGEgZmlsZS1saWtlIG9iamVjdCwgdGhlIHdhdmUgb2JqZWN0IHdpbGwgbm90IGNsb3NlIGl0IHdoZW4gaXRzCiAgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBpcyBjYWxsZWQ7IGl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBjbG9zZQogICAgdGhlIGZpbGUgb2JqZWN0LgogCisgICBUaGUgOmZ1bmM6YC5vcGVuYCBmdW5jdGlvbiBtYXkgYmUgdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBXaGVuCisgICB0aGUgOmtleXdvcmQ6YHdpdGhgIGJsb2NrIGNvbXBsZXRlcywgdGhlIDptZXRoOmBXYXZlX3JlYWQuY2xvc2UoKQorICAgPHdhdmUuV2F2ZV9yZWFkLmNsb3NlPmAgb3IgOm1ldGg6YFdhdmVfd3JpdGUuY2xvc2UoKQorICAgPHdhdmUuV2F2ZV93cml0ZS5jbG9zZSgpPmAgbWV0aG9kIGlzIGNhbGxlZC4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW5mcChmaWxlLCBtb2RlKQogCkBAIC05OCw4ICsxMDIsOSBAQAogCiAuLiBtZXRob2Q6OiBXYXZlX3JlYWQuZ2V0cGFyYW1zKCkKIAotICAgUmV0dXJucyBhIHR1cGxlIGBgKG5jaGFubmVscywgc2FtcHdpZHRoLCBmcmFtZXJhdGUsIG5mcmFtZXMsIGNvbXB0eXBlLAotICAgY29tcG5hbWUpYGAsIGVxdWl2YWxlbnQgdG8gb3V0cHV0IG9mIHRoZSA6bWV0aDpgZ2V0XCpgIG1ldGhvZHMuCisgICBSZXR1cm5zIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBgYChuY2hhbm5lbHMsIHNhbXB3aWR0aCwKKyAgIGZyYW1lcmF0ZSwgbmZyYW1lcywgY29tcHR5cGUsIGNvbXBuYW1lKWBgLCBlcXVpdmFsZW50IHRvIG91dHB1dCBvZiB0aGUKKyAgIDptZXRoOmBnZXRcKmAgbWV0aG9kcy4KIAogCiAuLiBtZXRob2Q6OiBXYXZlX3JlYWQucmVhZGZyYW1lcyhuKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QgYi9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdAppbmRleCAyMjRmNDQyLi44MThhNmZhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdApAQCAtNTEsMTAgKzUxLDE1IEBACiBidXQga2VlcHMgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBlbGVtZW50cywganVzdCBsaWtlIGEKIDpjbGFzczpgV2Vha0tleURpY3Rpb25hcnlgIGRvZXMuCiAKLU1vc3QgcHJvZ3JhbXMgc2hvdWxkIGZpbmQgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2Ugd2VhayBjb250YWluZXIgdHlwZXMgaXMgYWxsCi10aGV5IG5lZWQgLS0gaXQncyBub3QgdXN1YWxseSBuZWNlc3NhcnkgdG8gY3JlYXRlIHlvdXIgb3duIHdlYWsgcmVmZXJlbmNlcwotZGlyZWN0bHkuICBUaGUgbG93LWxldmVsIG1hY2hpbmVyeSB1c2VkIGJ5IHRoZSB3ZWFrIGRpY3Rpb25hcnkgaW1wbGVtZW50YXRpb25zCi1pcyBleHBvc2VkIGJ5IHRoZSA6bW9kOmB3ZWFrcmVmYCBtb2R1bGUgZm9yIHRoZSBiZW5lZml0IG9mIGFkdmFuY2VkIHVzZXMuCis6Y2xhc3M6YGZpbmFsaXplYCBwcm92aWRlcyBhIHN0cmFpZ2h0IGZvcndhcmQgd2F5IHRvIHJlZ2lzdGVyIGEKK2NsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYW4gb2JqZWN0IGlzIGdhcmJhZ2UgY29sbGVjdGVkLgorVGhpcyBpcyBzaW1wbGVyIHRvIHVzZSB0aGFuIHNldHRpbmcgdXAgYSBjYWxsYmFjayBmdW5jdGlvbiBvbiBhIHJhdword2VhayByZWZlcmVuY2UuCisKK01vc3QgcHJvZ3JhbXMgc2hvdWxkIGZpbmQgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2Ugd2VhayBjb250YWluZXIgdHlwZXMKK29yIDpjbGFzczpgZmluYWxpemVgIGlzIGFsbCB0aGV5IG5lZWQgLS0gaXQncyBub3QgdXN1YWxseSBuZWNlc3NhcnkgdG8KK2NyZWF0ZSB5b3VyIG93biB3ZWFrIHJlZmVyZW5jZXMgZGlyZWN0bHkuICBUaGUgbG93LWxldmVsIG1hY2hpbmVyeSBpcworZXhwb3NlZCBieSB0aGUgOm1vZDpgd2Vha3JlZmAgbW9kdWxlIGZvciB0aGUgYmVuZWZpdCBvZiBhZHZhbmNlZCB1c2VzLgogCiBOb3QgYWxsIG9iamVjdHMgY2FuIGJlIHdlYWtseSByZWZlcmVuY2VkOyB0aG9zZSBvYmplY3RzIHdoaWNoIGNhbiBpbmNsdWRlIGNsYXNzCiBpbnN0YW5jZXMsIGZ1bmN0aW9ucyB3cml0dGVuIGluIFB5dGhvbiAoYnV0IG5vdCBpbiBDKSwgaW5zdGFuY2UgbWV0aG9kcywgc2V0cywKQEAgLTExMSw2ICsxMTYsMjQgQEAKIAogICAgVGhpcyBpcyBhIHN1YmNsYXNzYWJsZSB0eXBlIHJhdGhlciB0aGFuIGEgZmFjdG9yeSBmdW5jdGlvbi4KIAorICAgLi4gYXR0cmlidXRlOjogX19jYWxsYmFja19fCisKKyAgICAgIFRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSByZXR1cm5zIHRoZSBjYWxsYmFjayBjdXJyZW50bHkgYXNzb2NpYXRlZCB0byB0aGUKKyAgICAgIHdlYWtyZWYuICBJZiB0aGVyZSBpcyBubyBjYWxsYmFjayBvciBpZiB0aGUgcmVmZXJlbnQgb2YgdGhlIHdlYWtyZWYgaXMKKyAgICAgIG5vIGxvbmdlciBhbGl2ZSB0aGVuIHRoaXMgYXR0cmlidXRlIHdpbGwgaGF2ZSB2YWx1ZSBgYE5vbmVgYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIExpa2UgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMsIHdlYWsgcmVmZXJlbmNlIGNhbGxiYWNrcyBjYW4gYmUKKyAgICAgIGNhbGxlZCBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24gd2hlbiBtb2R1bGUgZ2xvYmFscyBoYXZlIGJlZW4KKyAgICAgIG92ZXJ3cml0dGVuIHdpdGggOmNvbnN0OmBOb25lYC4gIFRoaXMgY2FuIG1ha2Ugd3JpdGluZyByb2J1c3QKKyAgICAgIHdlYWsgcmVmZXJlbmNlIGNhbGxiYWNrcyBhIGNoYWxsZW5nZS4gIENhbGxiYWNrcyByZWdpc3RlcmVkCisgICAgICB1c2luZyA6Y2xhc3M6YGZpbmFsaXplYCBkbyBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzIGlzc3VlCisgICAgICBiZWNhdXNlIHRoZXkgd2lsbCBub3QgYmUgcnVuIGFmdGVyIG1vZHVsZSB0ZWFyZG93biBoYXMgYmVndW4uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YF9fY2FsbGJhY2tfX2AgYXR0cmlidXRlLgorCiAKIC4uIGZ1bmN0aW9uOjogcHJveHkob2JqZWN0WywgY2FsbGJhY2tdKQogCkBAIC0xOTIsNiArMjE1LDk1IEBACiAgICBkaXNjYXJkZWQgd2hlbiBubyBzdHJvbmcgcmVmZXJlbmNlIHRvIGl0IGV4aXN0cyBhbnkgbW9yZS4KIAogCisuLiBjbGFzczo6IFdlYWtNZXRob2QobWV0aG9kKQorCisgICBBIGN1c3RvbSA6Y2xhc3M6YHJlZmAgc3ViY2xhc3Mgd2hpY2ggc2ltdWxhdGVzIGEgd2VhayByZWZlcmVuY2UgdG8gYSBib3VuZAorICAgbWV0aG9kIChpLmUuLCBhIG1ldGhvZCBkZWZpbmVkIG9uIGEgY2xhc3MgYW5kIGxvb2tlZCB1cCBvbiBhbiBpbnN0YW5jZSkuCisgICBTaW5jZSBhIGJvdW5kIG1ldGhvZCBpcyBlcGhlbWVyYWwsIGEgc3RhbmRhcmQgd2VhayByZWZlcmVuY2UgY2Fubm90IGtlZXAKKyAgIGhvbGQgb2YgaXQuICA6Y2xhc3M6YFdlYWtNZXRob2RgIGhhcyBzcGVjaWFsIGNvZGUgdG8gcmVjcmVhdGUgdGhlIGJvdW5kCisgICBtZXRob2QgdW50aWwgZWl0aGVyIHRoZSBvYmplY3Qgb3IgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGRpZXM6OgorCisgICAgICA+Pj4gY2xhc3MgQzoKKyAgICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAgIC4uLiAgICAgICAgIHByaW50KCJtZXRob2QgY2FsbGVkISIpCisgICAgICAuLi4KKyAgICAgID4+PiBjID0gQygpCisgICAgICA+Pj4gciA9IHdlYWtyZWYucmVmKGMubWV0aG9kKQorICAgICAgPj4+IHIoKQorICAgICAgPj4+IHIgPSB3ZWFrcmVmLldlYWtNZXRob2QoYy5tZXRob2QpCisgICAgICA+Pj4gcigpCisgICAgICA8Ym91bmQgbWV0aG9kIEMubWV0aG9kIG9mIDxfX21haW5fXy5DIG9iamVjdCBhdCAweDdmYzg1OTgzMDIyMD4+CisgICAgICA+Pj4gcigpKCkKKyAgICAgIG1ldGhvZCBjYWxsZWQhCisgICAgICA+Pj4gZGVsIGMKKyAgICAgID4+PiBnYy5jb2xsZWN0KCkKKyAgICAgIDAKKyAgICAgID4+PiByKCkKKyAgICAgID4+PgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworLi4gY2xhc3M6OiBmaW5hbGl6ZShvYmosIGZ1bmMsICphcmdzLCAqKmt3YXJncykKKworICAgUmV0dXJuIGEgY2FsbGFibGUgZmluYWxpemVyIG9iamVjdCB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuICpvYmoqCisgICBpcyBnYXJiYWdlIGNvbGxlY3RlZC4gIEEgZmluYWxpemVyIGlzICphbGl2ZSogdW50aWwgaXQgaXMgY2FsbGVkCisgICAoZWl0aGVyIGV4cGxpY2l0bHkgb3IgYXQgZ2FyYmFnZSBjb2xsZWN0aW9uKSwgYW5kIGFmdGVyIHRoYXQgaXQgaXMKKyAgICpkZWFkKi4gIENhbGxpbmcgYSBsaXZlIGZpbmFsaXplciByZXR1cm5zIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZworICAgYGBmdW5jKCphcmcsICoqa3dhcmdzKWBgLCB3aGVyZWFzIGNhbGxpbmcgYSBkZWFkIGZpbmFsaXplciByZXR1cm5zCisgICA6Y29uc3Q6YE5vbmVgLgorCisgICBFeGNlcHRpb25zIHJhaXNlZCBieSBmaW5hbGl6ZXIgY2FsbGJhY2tzIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgIHdpbGwgYmUgc2hvd24gb24gdGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCwgYnV0IGNhbm5vdCBiZQorICAgcHJvcGFnYXRlZC4gIFRoZXkgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGV4Y2VwdGlvbnMgcmFpc2VkCisgICBmcm9tIGFuIG9iamVjdCdzIDptZXRoOmBfX2RlbF9fYCBtZXRob2Qgb3IgYSB3ZWFrIHJlZmVyZW5jZSdzCisgICBjYWxsYmFjay4KKworICAgV2hlbiB0aGUgcHJvZ3JhbSBleGl0cywgZWFjaCByZW1haW5pbmcgbGl2ZSBmaW5hbGl6ZXIgaXMgY2FsbGVkCisgICB1bmxlc3MgaXRzIDphdHRyOmBhdGV4aXRgIGF0dHJpYnV0ZSBoYXMgYmVlbiBzZXQgdG8gZmFsc2UuICBUaGV5CisgICBhcmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgb2YgY3JlYXRpb24uCisKKyAgIEEgZmluYWxpemVyIHdpbGwgbmV2ZXIgaW52b2tlIGl0cyBjYWxsYmFjayBkdXJpbmcgdGhlIGxhdGVyIHBhcnQgb2YKKyAgIHRoZSBpbnRlcnByZXRlciBzaHV0ZG93biB3aGVuIG1vZHVsZSBnbG9iYWxzIGFyZSBsaWFibGUgdG8gaGF2ZQorICAgYmVlbiByZXBsYWNlZCBieSA6Y29uc3Q6YE5vbmVgLgorCisgICAuLiBtZXRob2Q6OiBfX2NhbGxfXygpCisKKyAgICAgIElmICpzZWxmKiBpcyBhbGl2ZSB0aGVuIG1hcmsgaXQgYXMgZGVhZCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YKKyAgICAgIGNhbGxpbmcgYGBmdW5jKCphcmdzLCAqKmt3YXJncylgYC4gIElmICpzZWxmKiBpcyBkZWFkIHRoZW4gcmV0dXJuCisgICAgICA6Y29uc3Q6YE5vbmVgLgorCisgICAuLiBtZXRob2Q6OiBkZXRhY2goKQorCisgICAgICBJZiAqc2VsZiogaXMgYWxpdmUgdGhlbiBtYXJrIGl0IGFzIGRlYWQgYW5kIHJldHVybiB0aGUgdHVwbGUKKyAgICAgIGBgKG9iaiwgZnVuYywgYXJncywga3dhcmdzKWBgLiAgSWYgKnNlbGYqIGlzIGRlYWQgdGhlbiByZXR1cm4KKyAgICAgIDpjb25zdDpgTm9uZWAuCisKKyAgIC4uIG1ldGhvZDo6IHBlZWsoKQorCisgICAgICBJZiAqc2VsZiogaXMgYWxpdmUgdGhlbiByZXR1cm4gdGhlIHR1cGxlIGBgKG9iaiwgZnVuYywgYXJncywKKyAgICAgIGt3YXJncylgYC4gIElmICpzZWxmKiBpcyBkZWFkIHRoZW4gcmV0dXJuIDpjb25zdDpgTm9uZWAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFsaXZlCisKKyAgICAgIFByb3BlcnR5IHdoaWNoIGlzIHRydWUgaWYgdGhlIGZpbmFsaXplciBpcyBhbGl2ZSwgZmFsc2Ugb3RoZXJ3aXNlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBhdGV4aXQKKworICAgICAgQSB3cml0YWJsZSBib29sZWFuIHByb3BlcnR5IHdoaWNoIGJ5IGRlZmF1bHQgaXMgdHJ1ZS4gIFdoZW4gdGhlCisgICAgICBwcm9ncmFtIGV4aXRzLCBpdCBjYWxscyBhbGwgcmVtYWluaW5nIGxpdmUgZmluYWxpemVycyBmb3Igd2hpY2gKKyAgICAgIDphdHRyOmAuYXRleGl0YCBpcyB0cnVlLiAgVGhleSBhcmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgb2YKKyAgICAgIGNyZWF0aW9uLgorCisgICAuLiBub3RlOjoKKworICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGF0ICpmdW5jKiwgKmFyZ3MqIGFuZCAqa3dhcmdzKiBkbworICAgICAgbm90IG93biBhbnkgcmVmZXJlbmNlcyB0byAqb2JqKiwgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHksCisgICAgICBzaW5jZSBvdGhlcndpc2UgKm9iaiogd2lsbCBuZXZlciBiZSBnYXJiYWdlIGNvbGxlY3RlZC4gIEluCisgICAgICBwYXJ0aWN1bGFyLCAqZnVuYyogc2hvdWxkIG5vdCBiZSBhIGJvdW5kIG1ldGhvZCBvZiAqb2JqKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gZGF0YTo6IFJlZmVyZW5jZVR5cGUKIAogICAgVGhlIHR5cGUgb2JqZWN0IGZvciB3ZWFrIHJlZmVyZW5jZXMgb2JqZWN0cy4KQEAgLTIzMiw4ICszNDQsOSBAQAogV2VhayBSZWZlcmVuY2UgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZWFrIHJlZmVyZW5jZSBvYmplY3RzIGhhdmUgbm8gYXR0cmlidXRlcyBvciBtZXRob2RzLCBidXQgZG8gYWxsb3cgdGhlIHJlZmVyZW50Ci10byBiZSBvYnRhaW5lZCwgaWYgaXQgc3RpbGwgZXhpc3RzLCBieSBjYWxsaW5nIGl0OgorV2VhayByZWZlcmVuY2Ugb2JqZWN0cyBoYXZlIG5vIG1ldGhvZHMgYW5kIG5vIGF0dHJpYnV0ZXMgYmVzaWRlcworOmF0dHI6YHJlZi5fX2NhbGxiYWNrX19gLiBBIHdlYWsgcmVmZXJlbmNlIG9iamVjdCBhbGxvd3MgdGhlIHJlZmVyZW50IHRvIGJlCitvYnRhaW5lZCwgaWYgaXQgc3RpbGwgZXhpc3RzLCBieSBjYWxsaW5nIGl0OgogCiAgICA+Pj4gaW1wb3J0IHdlYWtyZWYKICAgID4+PiBjbGFzcyBPYmplY3Q6CkBAIC0zMjYsMyArNDM5LDEyNSBAQAogICAgZGVmIGlkMm9iaihvaWQpOgogICAgICAgIHJldHVybiBfaWQyb2JqX2RpY3Rbb2lkXQogCisKKy4uIF9maW5hbGl6ZS1leGFtcGxlczoKKworRmluYWxpemVyIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK09mdGVuIG9uZSB1c2VzIDpjbGFzczpgZmluYWxpemVgIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2sgd2l0aG91dAorYm90aGVyaW5nIHRvIGtlZXAgdGhlIHJldHVybmVkIGZpbmFsaXplciBvYmplY3QuICBGb3IgaW5zdGFuY2UKKworICAgID4+PiBpbXBvcnQgd2Vha3JlZgorICAgID4+PiBjbGFzcyBPYmplY3Q6CisgICAgLi4uICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IGtlbm55ID0gT2JqZWN0KCkKKyAgICA+Pj4gd2Vha3JlZi5maW5hbGl6ZShrZW5ueSwgcHJpbnQsICJZb3Uga2lsbGVkIEtlbm55ISIpICAjZG9jdGVzdDorRUxMSVBTSVMKKyAgICA8ZmluYWxpemUgb2JqZWN0IGF0IC4uLjsgZm9yICdPYmplY3QnIGF0IC4uLj4KKyAgICA+Pj4gZGVsIGtlbm55CisgICAgWW91IGtpbGxlZCBLZW5ueSEKKworVGhlIGZpbmFsaXplciBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5IGFzIHdlbGwuICBIb3dldmVyIHRoZSBmaW5hbGl6ZXIKK3dpbGwgaW52b2tlIHRoZSBjYWxsYmFjayBhdCBtb3N0IG9uY2UuCisKKyAgICA+Pj4gZGVmIGNhbGxiYWNrKHgsIHksIHopOgorICAgIC4uLiAgICAgcHJpbnQoIkNBTExCQUNLIikKKyAgICAuLi4gICAgIHJldHVybiB4ICsgeSArIHoKKyAgICAuLi4KKyAgICA+Pj4gb2JqID0gT2JqZWN0KCkKKyAgICA+Pj4gZiA9IHdlYWtyZWYuZmluYWxpemUob2JqLCBjYWxsYmFjaywgMSwgMiwgej0zKQorICAgID4+PiBhc3NlcnQgZi5hbGl2ZQorICAgID4+PiBhc3NlcnQgZigpID09IDYKKyAgICBDQUxMQkFDSworICAgID4+PiBhc3NlcnQgbm90IGYuYWxpdmUKKyAgICA+Pj4gZigpICAgICAgICAgICAgICAgICAgICAgIyBjYWxsYmFjayBub3QgY2FsbGVkIGJlY2F1c2UgZmluYWxpemVyIGRlYWQKKyAgICA+Pj4gZGVsIG9iaiAgICAgICAgICAgICAgICAgIyBjYWxsYmFjayBub3QgY2FsbGVkIGJlY2F1c2UgZmluYWxpemVyIGRlYWQKKworWW91IGNhbiB1bnJlZ2lzdGVyIGEgZmluYWxpemVyIHVzaW5nIGl0cyA6bWV0aDpgfmZpbmFsaXplLmRldGFjaGAKK21ldGhvZC4gIFRoaXMga2lsbHMgdGhlIGZpbmFsaXplciBhbmQgcmV0dXJucyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0bwordGhlIGNvbnN0cnVjdG9yIHdoZW4gaXQgd2FzIGNyZWF0ZWQuCisKKyAgICA+Pj4gb2JqID0gT2JqZWN0KCkKKyAgICA+Pj4gZiA9IHdlYWtyZWYuZmluYWxpemUob2JqLCBjYWxsYmFjaywgMSwgMiwgej0zKQorICAgID4+PiBmLmRldGFjaCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkb2N0ZXN0OitFTExJUFNJUworICAgICg8X19tYWluX18uT2JqZWN0IG9iamVjdCAuLi4+LCA8ZnVuY3Rpb24gY2FsbGJhY2sgLi4uPiwgKDEsIDIpLCB7J3onOiAzfSkKKyAgICA+Pj4gbmV3b2JqLCBmdW5jLCBhcmdzLCBrd2FyZ3MgPSBfCisgICAgPj4+IGFzc2VydCBub3QgZi5hbGl2ZQorICAgID4+PiBhc3NlcnQgbmV3b2JqIGlzIG9iagorICAgID4+PiBhc3NlcnQgZnVuYygqYXJncywgKiprd2FyZ3MpID09IDYKKyAgICBDQUxMQkFDSworCitVbmxlc3MgeW91IHNldCB0aGUgOmF0dHI6YH5maW5hbGl6ZS5hdGV4aXRgIGF0dHJpYnV0ZSB0bworOmNvbnN0OmBGYWxzZWAsIGEgZmluYWxpemVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHByb2dyYW0gZXhpdCBpZiBpdAoraXMgc3RpbGwgYWxpdmUuICBGb3IgaW5zdGFuY2UKKworICAgID4+PiBvYmogPSBPYmplY3QoKQorICAgID4+PiB3ZWFrcmVmLmZpbmFsaXplKG9iaiwgcHJpbnQsICJvYmogZGVhZCBvciBleGl0aW5nIikgICNkb2N0ZXN0OitFTExJUFNJUworICAgIDxmaW5hbGl6ZSBvYmplY3QgYXQgLi4uOyBmb3IgJ09iamVjdCcgYXQgLi4uPgorICAgID4+PiBleGl0KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkb2N0ZXN0OitTS0lQCisgICAgb2JqIGRlYWQgb3IgZXhpdGluZworCisKK0NvbXBhcmluZyBmaW5hbGl6ZXJzIHdpdGggOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3VwcG9zZSB3ZSB3YW50IHRvIGNyZWF0ZSBhIGNsYXNzIHdob3NlIGluc3RhbmNlcyByZXByZXNlbnQgdGVtcG9yYXJ5CitkaXJlY3Rvcmllcy4gIFRoZSBkaXJlY3RvcmllcyBzaG91bGQgYmUgZGVsZXRlZCB3aXRoIHRoZWlyIGNvbnRlbnRzCit3aGVuIHRoZSBmaXJzdCBvZiB0aGUgZm9sbG93aW5nIGV2ZW50cyBvY2N1cnM6CisKKyogdGhlIG9iamVjdCBpcyBnYXJiYWdlIGNvbGxlY3RlZCwKKyogdGhlIG9iamVjdCdzIDptZXRoOmByZW1vdmVgIG1ldGhvZCBpcyBjYWxsZWQsIG9yCisqIHRoZSBwcm9ncmFtIGV4aXRzLgorCitXZSBtaWdodCB0cnkgdG8gaW1wbGVtZW50IHRoZSBjbGFzcyB1c2luZyBhIDptZXRoOmBfX2RlbF9fYCBtZXRob2QgYXMKK2ZvbGxvd3M6OgorCisgICAgY2xhc3MgVGVtcERpcjoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5uYW1lID0gdGVtcGZpbGUubWtkdGVtcCgpCisKKyAgICAgICAgZGVmIHJlbW92ZShzZWxmKToKKyAgICAgICAgICAgIGlmIHNlbGYubmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYubmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBOb25lCisKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiByZW1vdmVkKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZSBpcyBOb25lCisKKyAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICBzZWxmLnJlbW92ZSgpCisKK1RoaXMgc29sdXRpb24gaGFzIGEgc2VyaW91cyBwcm9ibGVtOiB0aGUgOm1ldGg6YF9fZGVsX19gIG1ldGhvZCBtYXkgYmUKK2NhbGxlZCBhdCBzaHV0ZG93biBhZnRlciB0aGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUgaGFzIGJlZW4gY2xlYW5lZCB1cCwKK2luIHdoaWNoIGNhc2UgOmF0dHI6YHNodXRpbC5ybXRyZWVgIHdpbGwgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IDpjb25zdDpgTm9uZWAuCitUaGlzIHdpbGwgY2F1c2UgdGhlIDptZXRoOmBfX2RlbF9fYCBtZXRob2QgdG8gZmFpbCBhbmQgdGhlIGRpcmVjdG9yeQord2lsbCBub3QgYmUgcmVtb3ZlZC4KKworVXNpbmcgZmluYWxpemVycyB3ZSBjYW4gYXZvaWQgdGhpcyBwcm9ibGVtOjoKKworICAgIGNsYXNzIFRlbXBEaXI6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICAgICAgc2VsZi5fZmluYWxpemVyID0gd2Vha3JlZi5maW5hbGl6ZShzZWxmLCBzaHV0aWwucm10cmVlLCBzZWxmLm5hbWUpCisKKyAgICAgICAgZGVmIHJlbW92ZShzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2ZpbmFsaXplcigpCisKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiByZW1vdmVkKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9maW5hbGl6ZXIuYWxpdmUKKworRGVmaW5lZCBsaWtlIHRoaXMsIGV2ZW4gaWYgYSA6Y2xhc3M6YFRlbXBEaXJgIG9iamVjdCBpcyBwYXJ0IG9mIGEKK3JlZmVyZW5jZSBjeWNsZSwgdGhhdCByZWZlcmVuY2UgY3ljbGUgY2FuIHN0aWxsIGJlIGdhcmJhZ2UgY29sbGVjdGVkLgorSWYgdGhlIG9iamVjdCBuZXZlciBnZXRzIGdhcmJhZ2UgY29sbGVjdGVkIHRoZSBmaW5hbGl6ZXIgd2lsbCBzdGlsbCBiZQorY2FsbGVkIGF0IGV4aXQuCisKKy4uIG5vdGU6OgorCisgICBJZiB5b3UgY3JlYXRlIGEgZmluYWxpemVyIG9iamVjdCBpbiBhIGRhZW1vbmljIHRocmVhZCBqdXN0IGFzIHRoZQorICAgdGhlIHByb2dyYW0gZXhpdHMgdGhlbiB0aGVyZSBpcyB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgZmluYWxpemVyCisgICBkb2VzIG5vdCBnZXQgY2FsbGVkIGF0IGV4aXQuICBIb3dldmVyLCBpbiBhIGRhZW1vbmljIHRocmVhZAorICAgOmZ1bmM6YGF0ZXhpdC5yZWdpc3RlcmAsIGBgdHJ5OiAuLi4gZmluYWxseTogLi4uYGAgYW5kIGBgd2l0aDogLi4uYGAKKyAgIGRvIG5vdCBndWFyYW50ZWUgdGhhdCBjbGVhbnVwIG9jY3VycyBlaXRoZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0IGIvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAppbmRleCAwMGNkYWNkLi5jMGNjNjgzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKQEAgLTEwNSw2ICsxMDUsMzggQEAKICAgID4+PiByb290WzBdWzFdLnRleHQKICAgICcyMDA4JwogCitJbmNyZW1lbnRhbCBwYXJzaW5nCiteXl5eXl5eXl5eXl5eXl5eXl5eCisKK0l0J3MgcG9zc2libGUgdG8gcGFyc2UgWE1MIGluY3JlbWVudGFsbHkgKGkuZS4gbm90IHRoZSB3aG9sZSBkb2N1bWVudCBhdCBvbmNlKS4KK1RoZSBtb3N0IHBvd2VyZnVsIHRvb2wgZm9yIGRvaW5nIHRoaXMgaXMgOmNsYXNzOmBJbmNyZW1lbnRhbFBhcnNlcmAuICBJdCBkb2VzCitub3QgcmVxdWlyZSBhIGJsb2NraW5nIHJlYWQgdG8gb2J0YWluIHRoZSBYTUwgZGF0YSwgYW5kIGlzIGluc3RlYWQgZmVkIHdpdGgKK2RhdGEgaW5jcmVtZW50YWxseSB3aXRoIDptZXRoOmBJbmNyZW1lbnRhbFBhcnNlci5kYXRhX3JlY2VpdmVkYCBjYWxscy4gIFRvIGdldAordGhlIHBhcnNlZCBYTUwgZWxlbWVudHMsIGNhbGwgOm1ldGg6YEluY3JlbWVudGFsUGFyc2VyLmV2ZW50c2AuICBIZXJlJ3MgYW4KK2V4YW1wbGU6OgorCisgICAgPj4+IGluY3BhcnNlciA9IEVULkluY3JlbWVudGFsUGFyc2VyKFsnc3RhcnQnLCAnZW5kJ10pCisgICAgPj4+IGluY3BhcnNlci5kYXRhX3JlY2VpdmVkKCc8bXl0YWc+c29tZXRleHQnKQorICAgID4+PiBsaXN0KGluY3BhcnNlci5ldmVudHMoKSkKKyAgICBbKCdzdGFydCcsIDxFbGVtZW50ICdteXRhZycgYXQgMHg3ZmJhM2YyYTg2ODg+KV0KKyAgICA+Pj4gaW5jcGFyc2VyLmRhdGFfcmVjZWl2ZWQoJyBtb3JlIHRleHQ8L215dGFnPicpCisgICAgPj4+IGZvciBldmVudCwgZWxlbSBpbiBpbmNwYXJzZXIuZXZlbnRzKCk6CisgICAgLi4uICAgcHJpbnQoZXZlbnQpCisgICAgLi4uICAgcHJpbnQoZWxlbS50YWcsICd0ZXh0PScsIGVsZW0udGV4dCkKKyAgICAuLi4KKyAgICBlbmQKKyAgICBteXRhZyB0ZXh0PSBzb21ldGV4dCBtb3JlIHRleHQKKworVGhlIG9idmlvdXMgdXNlIGNhc2UgaXMgYXBwbGljYXRpb25zIHRoYXQgb3BlcmF0ZSBpbiBhbiBhc3luY2hyb25vdXMgZmFzaGlvbgord2hlcmUgdGhlIFhNTCBkYXRhIGlzIGJlaW5nIHJlY2VpdmVkIGZyb20gYSBzb2NrZXQgb3IgcmVhZCBpbmNyZW1lbnRhbGx5IGZyb20KK3NvbWUgc3RvcmFnZSBkZXZpY2UuICBJbiBzdWNoIGNhc2VzLCBibG9ja2luZyByZWFkcyBhcmUgdW5hY2NlcHRhYmxlLgorCitCZWNhdXNlIGl0J3Mgc28gZmxleGlibGUsIDpjbGFzczpgSW5jcmVtZW50YWxQYXJzZXJgIGNhbiBiZSBpbmNvbnZlbmllbnQKK3RvIHVzZSBmb3Igc2ltcGxlciB1c2UtY2FzZXMuICBJZiB5b3UgZG9uJ3QgbWluZCB5b3VyIGFwcGxpY2F0aW9uIGJsb2NraW5nIG9uCityZWFkaW5nIFhNTCBkYXRhIGJ1dCB3b3VsZCBzdGlsbCBsaWtlIHRvIGhhdmUgaW5jcmVtZW50YWwgcGFyc2luZyBjYXBhYmlsaXRpZXMsCit0YWtlIGEgbG9vayBhdCA6ZnVuYzpgaXRlcnBhcnNlYC4gIEl0IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UncmUgcmVhZGluZyBhIGxhcmdlCitYTUwgZG9jdW1lbnQgYW5kIGRvbid0IHdhbnQgdG8gaG9sZCBpdCB3aG9sbHkgaW4gbWVtb3J5LgorCiBGaW5kaW5nIGludGVyZXN0aW5nIGVsZW1lbnRzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTM3OSw3ICs0MTEsNyBAQAogCiAgICBQYXJzZXMgYW4gWE1MIHNlY3Rpb24gaW50byBhbiBlbGVtZW50IHRyZWUgaW5jcmVtZW50YWxseSwgYW5kIHJlcG9ydHMgd2hhdCdzCiAgICBnb2luZyBvbiB0byB0aGUgdXNlci4gICpzb3VyY2UqIGlzIGEgZmlsZW5hbWUgb3IgOnRlcm06YGZpbGUgb2JqZWN0YAotICAgY29udGFpbmluZyBYTUwgZGF0YS4gICpldmVudHMqIGlzIGEgbGlzdCBvZiBldmVudHMgdG8gcmVwb3J0IGJhY2suICBUaGUKKyAgIGNvbnRhaW5pbmcgWE1MIGRhdGEuICAqZXZlbnRzKiBpcyBhIHNlcXVlbmNlIG9mIGV2ZW50cyB0byByZXBvcnQgYmFjay4gIFRoZQogICAgc3VwcG9ydGVkIGV2ZW50cyBhcmUgdGhlIHN0cmluZ3MgYGAic3RhcnQiYGAsIGBgImVuZCJgYCwgYGAic3RhcnQtbnMiYGAKICAgIGFuZCBgYCJlbmQtbnMiYGAgKHRoZSAibnMiIGV2ZW50cyBhcmUgdXNlZCB0byBnZXQgZGV0YWlsZWQgbmFtZXNwYWNlCiAgICBpbmZvcm1hdGlvbikuICBJZiAqZXZlbnRzKiBpcyBvbWl0dGVkLCBvbmx5IGBgImVuZCJgYCBldmVudHMgYXJlIHJlcG9ydGVkLgpAQCAtMzg4LDYgKzQyMCwxMSBAQAogICAgOmNsYXNzOmBUcmVlQnVpbGRlcmAgYXMgYSB0YXJnZXQuICBSZXR1cm5zIGFuIDp0ZXJtOmBpdGVyYXRvcmAgcHJvdmlkaW5nCiAgICBgYChldmVudCwgZWxlbSlgYCBwYWlycy4KIAorICAgTm90ZSB0aGF0IHdoaWxlIDpmdW5jOmBpdGVycGFyc2VgIGJ1aWxkcyB0aGUgdHJlZSBpbmNyZW1lbnRhbGx5LCBpdCBpc3N1ZXMKKyAgIGJsb2NraW5nIHJlYWRzIG9uICpzb3VyY2UqIChvciB0aGUgZmlsZSBpdCBuYW1lcykuICBBcyBzdWNoLCBpdCdzIHVuc3VpdGFibGUKKyAgIGZvciBhc3luY2hyb25vdXMgYXBwbGljYXRpb25zIHdoZXJlIGJsb2NraW5nIHJlYWRzIGNhbid0IGJlIG1hZGUuICBGb3IgZnVsbHkKKyAgIGFzeW5jaHJvbm91cyBwYXJzaW5nLCBzZWUgOmNsYXNzOmBJbmNyZW1lbnRhbFBhcnNlcmAuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICA6ZnVuYzpgaXRlcnBhcnNlYCBvbmx5IGd1YXJhbnRlZXMgdGhhdCBpdCBoYXMgc2VlbiB0aGUgIj4iCkBAIC0zOTgsNyArNDM1LDYgQEAKIAogICAgICAgSWYgeW91IG5lZWQgYSBmdWxseSBwb3B1bGF0ZWQgZWxlbWVudCwgbG9vayBmb3IgImVuZCIgZXZlbnRzIGluc3RlYWQuCiAKLQogLi4gZnVuY3Rpb246OiBwYXJzZShzb3VyY2UsIHBhcnNlcj1Ob25lKQogCiAgICBQYXJzZXMgYW4gWE1MIHNlY3Rpb24gaW50byBhbiBlbGVtZW50IHRyZWUuICAqc291cmNlKiBpcyBhIGZpbGVuYW1lIG9yIGZpbGUKQEAgLTQzOCwyOSArNDc0LDM5IEBACiAgICBhcmd1bWVudHMuICBSZXR1cm5zIGFuIGVsZW1lbnQgaW5zdGFuY2UuCiAKIAotLi4gZnVuY3Rpb246OiB0b3N0cmluZyhlbGVtZW50LCBlbmNvZGluZz0idXMtYXNjaWkiLCBtZXRob2Q9InhtbCIpCisuLiBmdW5jdGlvbjo6IHRvc3RyaW5nKGVsZW1lbnQsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIG1ldGhvZD0ieG1sIiwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1UcnVlKQogCiAgICBHZW5lcmF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGVsZW1lbnQsIGluY2x1ZGluZyBhbGwKICAgIHN1YmVsZW1lbnRzLiAgKmVsZW1lbnQqIGlzIGFuIDpjbGFzczpgRWxlbWVudGAgaW5zdGFuY2UuICAqZW5jb2RpbmcqIFsxXV8gaXMKICAgIHRoZSBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8KICAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcgKG90aGVyd2lzZSwgYSBieXRlc3RyaW5nIGlzIGdlbmVyYXRlZCkuICAqbWV0aG9kKgogICAgaXMgZWl0aGVyIGBgInhtbCJgYCwgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuCisgICAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIDptZXRoOmBFbGVtZW50VHJlZS53cml0ZWAuCiAgICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisgICAgICBUaGUgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogdG9zdHJpbmdsaXN0KGVsZW1lbnQsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIG1ldGhvZD0ieG1sIikKKworLi4gZnVuY3Rpb246OiB0b3N0cmluZ2xpc3QoZWxlbWVudCwgZW5jb2Rpbmc9InVzLWFzY2lpIiwgbWV0aG9kPSJ4bWwiLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1UcnVlKQogCiAgICBHZW5lcmF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGVsZW1lbnQsIGluY2x1ZGluZyBhbGwKICAgIHN1YmVsZW1lbnRzLiAgKmVsZW1lbnQqIGlzIGFuIDpjbGFzczpgRWxlbWVudGAgaW5zdGFuY2UuICAqZW5jb2RpbmcqIFsxXV8gaXMKICAgIHRoZSBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8KICAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcgKG90aGVyd2lzZSwgYSBieXRlc3RyaW5nIGlzIGdlbmVyYXRlZCkuICAqbWV0aG9kKgogICAgaXMgZWl0aGVyIGBgInhtbCJgYCwgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuCisgICAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIDptZXRoOmBFbGVtZW50VHJlZS53cml0ZWAuCiAgICBSZXR1cm5zIGEgbGlzdCBvZiAob3B0aW9uYWxseSkgZW5jb2RlZCBzdHJpbmdzIGNvbnRhaW5pbmcgdGhlIFhNTCBkYXRhLgogICAgSXQgZG9lcyBub3QgZ3VhcmFudGVlIGFueSBzcGVjaWZpYyBzZXF1ZW5jZSwgZXhjZXB0IHRoYXQKICAgIGBgIiIuam9pbih0b3N0cmluZ2xpc3QoZWxlbWVudCkpID09IHRvc3RyaW5nKGVsZW1lbnQpYGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIFRoZSAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IFhNTCh0ZXh0LCBwYXJzZXI9Tm9uZSkKIApAQCAtNzUyLDcgKzc5OCw4IEBACiAKIAogICAgLi4gbWV0aG9kOjogd3JpdGUoZmlsZSwgZW5jb2Rpbmc9InVzLWFzY2lpIiwgeG1sX2RlY2xhcmF0aW9uPU5vbmUsIFwKLSAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfbmFtZXNwYWNlPU5vbmUsIG1ldGhvZD0ieG1sIikKKyAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfbmFtZXNwYWNlPU5vbmUsIG1ldGhvZD0ieG1sIiwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHM9VHJ1ZSkKIAogICAgICAgV3JpdGVzIHRoZSBlbGVtZW50IHRyZWUgdG8gYSBmaWxlLCBhcyBYTUwuICAqZmlsZSogaXMgYSBmaWxlIG5hbWUsIG9yIGEKICAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGAgb3BlbmVkIGZvciB3cml0aW5nLiAgKmVuY29kaW5nKiBbMV1fIGlzIHRoZSBvdXRwdXQKQEAgLTc2Myw2ICs4MTAsMTAgQEAKICAgICAgICpkZWZhdWx0X25hbWVzcGFjZSogc2V0cyB0aGUgZGVmYXVsdCBYTUwgbmFtZXNwYWNlIChmb3IgInhtbG5zIikuCiAgICAgICAqbWV0aG9kKiBpcyBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMKICAgICAgIGBgInhtbCJgYCkuCisgICAgICBUaGUga2V5d29yZC1vbmx5ICpzaG9ydF9lbXB0eV9lbGVtZW50cyogcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBmb3JtYXR0aW5nCisgICAgICBvZiBlbGVtZW50cyB0aGF0IGNvbnRhaW4gbm8gY29udGVudC4gIElmICpUcnVlKiAodGhlIGRlZmF1bHQpLCB0aGV5IGFyZQorICAgICAgZW1pdHRlZCBhcyBhIHNpbmdsZSBzZWxmLWNsb3NlZCB0YWcsIG90aGVyd2lzZSB0aGV5IGFyZSBlbWl0dGVkIGFzIGEgcGFpcgorICAgICAgb2Ygc3RhcnQvZW5kIHRhZ3MuCiAKICAgICAgIFRoZSBvdXRwdXQgaXMgZWl0aGVyIGEgc3RyaW5nICg6Y2xhc3M6YHN0cmApIG9yIGJpbmFyeSAoOmNsYXNzOmBieXRlc2ApLgogICAgICAgVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAqZW5jb2RpbmcqIGFyZ3VtZW50LiAgSWYgKmVuY29kaW5nKiBpcwpAQCAtNzcxLDYgKzgyMiw5IEBACiAgICAgICA6dGVybTpgZmlsZSBvYmplY3RgOyBtYWtlIHN1cmUgeW91IGRvIG5vdCB0cnkgdG8gd3JpdGUgYSBzdHJpbmcgdG8gYQogICAgICAgYmluYXJ5IHN0cmVhbSBhbmQgdmljZSB2ZXJzYS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisgICAgICBUaGUgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiBwYXJhbWV0ZXIuCisKIAogVGhpcyBpcyB0aGUgWE1MIGZpbGUgdGhhdCBpcyBnb2luZyB0byBiZSBtYW5pcHVsYXRlZDo6CiAKQEAgLTgxNiw2ICs4NzAsNDkgQEAKICAgIDpjbGFzczpgUU5hbWVgIGluc3RhbmNlcyBhcmUgb3BhcXVlLgogCiAKK0luY3JlbWVudGFsUGFyc2VyIE9iamVjdHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gY2xhc3M6OiBJbmNyZW1lbnRhbFBhcnNlcihldmVudHM9Tm9uZSwgcGFyc2VyPU5vbmUpCisKKyAgIEFuIGluY3JlbWVudGFsLCBldmVudC1kcml2ZW4gcGFyc2VyIHN1aXRhYmxlIGZvciBub24tYmxvY2tpbmcgYXBwbGljYXRpb25zLgorICAgKmV2ZW50cyogaXMgYSBzZXF1ZW5jZSBvZiBldmVudHMgdG8gcmVwb3J0IGJhY2suICBUaGUgc3VwcG9ydGVkIGV2ZW50cyBhcmUKKyAgIHRoZSBzdHJpbmdzIGBgInN0YXJ0ImBgLCBgYCJlbmQiYGAsIGBgInN0YXJ0LW5zImBgIGFuZCBgYCJlbmQtbnMiYGAgKHRoZSAibnMiCisgICBldmVudHMgYXJlIHVzZWQgdG8gZ2V0IGRldGFpbGVkIG5hbWVzcGFjZSBpbmZvcm1hdGlvbikuICBJZiAqZXZlbnRzKiBpcworICAgb21pdHRlZCwgb25seSBgYCJlbmQiYGAgZXZlbnRzIGFyZSByZXBvcnRlZC4gICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsCisgICBwYXJzZXIgaW5zdGFuY2UuICBJZiBub3QgZ2l2ZW4sIHRoZSBzdGFuZGFyZCA6Y2xhc3M6YFhNTFBhcnNlcmAgcGFyc2VyIGlzCisgICB1c2VkLiAgKnBhcnNlciogY2FuIG9ubHkgdXNlIHRoZSBkZWZhdWx0IDpjbGFzczpgVHJlZUJ1aWxkZXJgIGFzIGEgdGFyZ2V0LgorCisgICAuLiBtZXRob2Q6OiBkYXRhX3JlY2VpdmVkKGRhdGEpCisKKyAgICAgIEZlZWQgdGhlIGdpdmVuIGJ5dGVzIGRhdGEgdG8gdGhlIGluY3JlbWVudGFsIHBhcnNlci4KKworICAgLi4gbWV0aG9kOjogZW9mX3JlY2VpdmVkKCkKKworICAgICAgU2lnbmFsIHRoZSBpbmNyZW1lbnRhbCBwYXJzZXIgdGhhdCB0aGUgZGF0YSBzdHJlYW0gaXMgdGVybWluYXRlZC4KKworICAgLi4gbWV0aG9kOjogZXZlbnRzKCkKKworICAgICAgSXRlcmF0ZSBvdmVyIHRoZSBldmVudHMgd2hpY2ggaGF2ZSBiZWVuIGVuY291bnRlcmVkIGluIHRoZSBkYXRhIGZlZAorICAgICAgdG8gdGhlIHBhcnNlci4gIFRoaXMgbWV0aG9kIHlpZWxkcyBgYChldmVudCwgZWxlbSlgYCBwYWlycywgd2hlcmUKKyAgICAgICpldmVudCogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIGV2ZW50IChlLmcuIGBgImVuZCJgYCkKKyAgICAgIGFuZCAqZWxlbSogaXMgdGhlIGVuY291bnRlcmVkIDpjbGFzczpgRWxlbWVudGAgb2JqZWN0LiAgRXZlbnRzCisgICAgICBwcm92aWRlZCBpbiBhIHByZXZpb3VzIGNhbGwgdG8gOm1ldGg6YGV2ZW50c2Agd2lsbCBub3QgYmUgeWllbGRlZAorICAgICAgYWdhaW4uCisKKyAgIC4uIG5vdGU6OgorCisgICAgICA6Y2xhc3M6YEluY3JlbWVudGFsUGFyc2VyYCBvbmx5IGd1YXJhbnRlZXMgdGhhdCBpdCBoYXMgc2VlbiB0aGUgIj4iCisgICAgICBjaGFyYWN0ZXIgb2YgYSBzdGFydGluZyB0YWcgd2hlbiBpdCBlbWl0cyBhICJzdGFydCIgZXZlbnQsIHNvIHRoZQorICAgICAgYXR0cmlidXRlcyBhcmUgZGVmaW5lZCwgYnV0IHRoZSBjb250ZW50cyBvZiB0aGUgdGV4dCBhbmQgdGFpbCBhdHRyaWJ1dGVzCisgICAgICBhcmUgdW5kZWZpbmVkIGF0IHRoYXQgcG9pbnQuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSBlbGVtZW50IGNoaWxkcmVuOworICAgICAgdGhleSBtYXkgb3IgbWF5IG5vdCBiZSBwcmVzZW50LgorCisgICAgICBJZiB5b3UgbmVlZCBhIGZ1bGx5IHBvcHVsYXRlZCBlbGVtZW50LCBsb29rIGZvciAiZW5kIiBldmVudHMgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKwogLi4gX2VsZW1lbnR0cmVlLXRyZWVidWlsZGVyLW9iamVjdHM6CiAKIFRyZWVCdWlsZGVyIE9iamVjdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggNzVlOGZkNS4uNzEyMjEyMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZAogICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgUnVudGltZUVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCi0gICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgY29ycmVzcG9uZGVkIG1vZHVsZQorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlCiAgICAoOm1vZDpgemxpYmAsIDptb2Q6YGJ6MmAgb3IgOm1vZDpgbHptYWApIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKICAgIGlzIGFsc28gcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCiAgICBgYFRydWVgYCB6aXBmaWxlIHdpbGwgY3JlYXRlIFpJUCBmaWxlcyB0aGF0IHVzZSB0aGUgWklQNjQgZXh0ZW5zaW9ucyB3aGVuCkBAIC0yNjUsMTAgKzI2NSw4IEBACiAgICAgICBOZXZlciBleHRyYWN0IGFyY2hpdmVzIGZyb20gdW50cnVzdGVkIHNvdXJjZXMgd2l0aG91dCBwcmlvciBpbnNwZWN0aW9uLgogICAgICAgSXQgaXMgcG9zc2libGUgdGhhdCBmaWxlcyBhcmUgY3JlYXRlZCBvdXRzaWRlIG9mICpwYXRoKiwgZS5nLiBtZW1iZXJzCiAgICAgICB0aGF0IGhhdmUgYWJzb2x1dGUgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYGAiLyJgYCBvciBmaWxlbmFtZXMgd2l0aCB0d28KLSAgICAgIGRvdHMgYGAiLi4iYGAuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zLjEKLSAgICAgIFRoZSB6aXBmaWxlIG1vZHVsZSBhdHRlbXB0cyB0byBwcmV2ZW50IHRoYXQuICBTZWUgOm1ldGg6YGV4dHJhY3RgIG5vdGUuCisgICAgICBkb3RzIGBgIi4uImBgLiAgVGhpcyBtb2R1bGUgYXR0ZW1wdHMgdG8gcHJldmVudCB0aGF0LgorICAgICAgU2VlIDptZXRoOmBleHRyYWN0YCBub3RlLgogCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUucHJpbnRkaXIoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpY2Vuc2UucnN0IGIvRG9jL2xpY2Vuc2UucnN0CmluZGV4IGFhY2ZhYTEuLmIwOWU5YTggMTAwNjQ0Ci0tLSBhL0RvYy9saWNlbnNlLnJzdAorKysgYi9Eb2MvbGljZW5zZS5yc3QKQEAgLTEyNiw2ICsxMjYsOCBAQAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKIHwgMy4zLjEgICAgICAgICAgfCAzLjMuMCAgICAgICAgfCAyMDEzICAgICAgIHwgUFNGICAgICAgICB8IHllcyAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworfCAzLjQuMCAgICAgICAgICB8IDMuMy4wICAgICAgICB8IDIwMTQgICAgICAgfCBQU0YgICAgICAgIHwgeWVzICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCiAKIC4uIG5vdGU6OgogCkBAIC02NjAsNiArNjYyLDI1IEBACiAgIFNVQ0ggREFNQUdFLgogCiAKK1NIQS0zCistLS0tLQorCitUaGUgbW9kdWxlIDptb2Q6YF9zaGEzYCBhbmQgOm1vZDpgaGFzaGxpYmAgYXJlIHVzaW5nIHRoZSByZWZlcmVuY2UKK2ltcGxlbWVudGF0aW9uIG9mIEtlY2Nhay4gVGhlIGZpbGVzIGF0IDpmaWxlOmBNb2R1bGVzL19zaGEzL2tlY2Nhay9gIGNvbnRhaW4KK3RoZSBmb2xsb3dpbmcgbm90ZTo6CisKKyAgVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorICBNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCisgIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlOiBodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworCisgIEltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCisgIGhlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCisgIFRvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CisgIGFuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgorICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisKKwogc3RydG9kIGFuZCBkdG9hCiAtLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdAppbmRleCBkMGQwNjQ2Li5jMjVjNzY3IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdApAQCAtNDkzLDE0ICs0OTMsMTUgQEAKIHZhbHVlLCBhbGwgZm9sbG93aW5nIHBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0CiB2YWx1ZSAtLS0gdGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuCiAKLSoqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcwotZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbgotaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcwotaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlCi1vYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QKLShlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4KLVRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYAotYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjo6CisqKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuIHRoZSBmdW5jdGlvbgorZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW4KK3RoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoCitjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhCittdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlCitvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0Cittb2RpZmllZC4gIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZQorYGBOb25lYGAgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwKK2UuZy46OgogCiAgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6CiAgICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IGY4ZTkyODAuLmE4OGQ1NjIgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTkzNCw2ICs5MzQsMjAgQEAKICAgICAgIGZyYW1lKS4gIEEgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkKICAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uCiAKKyAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOgorCisgICAgICAuLiBtZXRob2Q6OiBmcmFtZS5jbGVhcigpCisKKyAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieSB0aGUKKyAgICAgICAgIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGUgZ2VuZXJhdG9yCisgICAgICAgICBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgaW52b2x2aW5nIGZyYW1lCisgICAgICAgICBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMKKyAgICAgICAgIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS4KKworICAgICAgICAgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuCisKKyAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAgICBUcmFjZWJhY2sgb2JqZWN0cwogICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgb2JqZWN0OiB0cmFjZWJhY2sKQEAgLTExMjAsMTIgKzExMzQsMTAgQEAKICAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdCBzaXR1YXRpb24KICAgICAgIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlczsgdGhlIGxhdHRlciB0d28KICAgICAgIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW4gYGBzeXMubGFzdF90cmFjZWJhY2tgYC4KLSAgICAgIENpcmN1bGFyIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIHdoZW4gdGhlIG9wdGlvbiBjeWNsZQotICAgICAgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXQncyBvbiBieSBkZWZhdWx0KSwgYnV0IGNhbiBvbmx5IGJlIGNsZWFuZWQgdXAgaWYKLSAgICAgIHRoZXJlIGFyZSBubyBQeXRob24tIGxldmVsIDptZXRoOmBfX2RlbF9fYCBtZXRob2RzIGludm9sdmVkLiBSZWZlciB0byB0aGUKLSAgICAgIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6bW9kOmBnY2AgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdwotICAgICAgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLCBwYXJ0aWN1bGFybHkKLSAgICAgIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuCisgICAgICBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuCisgICAgICB0aGUgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0J3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyIHRvIHRoZQorICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDptb2Q6YGdjYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcworICAgICAgdG9waWMuCiAKICAgIC4uIHdhcm5pbmc6OgogCkBAIC0xODI4LDYgKzE4NDAsMTUgQEAKICAgIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuCiAKIAorLi4gbWV0aG9kOjogb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKQorCisgICBDYWxsZWQgdG8gaW1wbGVtZW50IDpmdW5jOmBvcGVyYXRvci5sZW5ndGhfaGludGAuIFNob3VsZCByZXR1cm4gYW4gZXN0aW1hdGVkCisgICBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhbiB0aGUgYWN0dWFsIGxlbmd0aCkuCisgICBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciBgYD49YGAgMC4gVGhpcyBtZXRob2QgaXMgcHVyZWx5IGFuCisgICBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKIC4uIG5vdGU6OgogCiAgICBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBIGNhbGwgbGlrZSA6OgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CmluZGV4IGViNDk3YTEuLmI1ODdmYzkgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTM3MywxNiArMzczLDE4IEBACiAgKiBUaGUgYGBfX2xvYWRlcl9fYGAgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBsb2FkZXIgb2JqZWN0IHRoYXQgbG9hZGVkCiAgICB0aGUgbW9kdWxlLiAgVGhpcyBpcyBtb3N0bHkgZm9yIGludHJvc3BlY3Rpb24gYW5kIHJlbG9hZGluZywgYnV0IGNhbiBiZQogICAgdXNlZCBmb3IgYWRkaXRpb25hbCBsb2FkZXItc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGUgZ2V0dGluZwotICAgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBsb2FkZXIuCisgICBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGxvYWRlci4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIG9yIHNldCB0byBgYE5vbmVgYAorICAgdGhlbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IGl0ICoqYWZ0ZXIqKiB0aGUgbW9kdWxlIGhhcworICAgYmVlbiBpbXBvcnRlZC4KIAotICogVGhlIG1vZHVsZSdzIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgc2hvdWxkIGJlIHNldC4gIEl0cyB2YWx1ZSBtdXN0IGJlIGEKKyAqIFRoZSBtb2R1bGUncyBgYF9fcGFja2FnZV9fYGAgYXR0cmlidXRlIG11c3QgYmUgc2V0LiAgSXRzIHZhbHVlIG11c3QgYmUgYQogICAgc3RyaW5nLCBidXQgaXQgY2FuIGJlIHRoZSBzYW1lIHZhbHVlIGFzIGl0cyBgYF9fbmFtZV9fYGAuICBJZiB0aGUgYXR0cmlidXRlCiAgICBpcyBzZXQgdG8gYGBOb25lYGAgb3IgaXMgbWlzc2luZywgdGhlIGltcG9ydCBzeXN0ZW0gd2lsbCBmaWxsIGl0IGluIHdpdGggYQotICAgbW9yZSBhcHByb3ByaWF0ZSB2YWx1ZS4gIFdoZW4gdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIGl0cyBgYF9fcGFja2FnZV9fYGAKLSAgIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gaXRzIGBgX19uYW1lX19gYC4gIFdoZW4gdGhlIG1vZHVsZSBpcyBub3QgYSBwYWNrYWdlLAotICAgYGBfX3BhY2thZ2VfX2BgIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBmb3IgdG9wLWxldmVsIG1vZHVsZXMsIG9yCi0gICBmb3Igc3VibW9kdWxlcywgdG8gdGhlIHBhcmVudCBwYWNrYWdlJ3MgbmFtZS4gIFNlZSA6cGVwOmAzNjZgIGZvciBmdXJ0aGVyCi0gICBkZXRhaWxzLgorICAgbW9yZSBhcHByb3ByaWF0ZSB2YWx1ZSAqKmFmdGVyKiogdGhlIG1vZHVsZSBoYXMgYmVlbiBpbXBvcnRlZC4KKyAgIFdoZW4gdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIGl0cyBgYF9fcGFja2FnZV9fYGAgdmFsdWUgc2hvdWxkIGJlIHNldCB0byBpdHMKKyAgIGBgX19uYW1lX19gYC4gIFdoZW4gdGhlIG1vZHVsZSBpcyBub3QgYSBwYWNrYWdlLCBgYF9fcGFja2FnZV9fYGAgc2hvdWxkIGJlCisgICBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBmb3IgdG9wLWxldmVsIG1vZHVsZXMsIG9yIGZvciBzdWJtb2R1bGVzLCB0byB0aGUKKyAgIHBhcmVudCBwYWNrYWdlJ3MgbmFtZS4gIFNlZSA6cGVwOmAzNjZgIGZvciBmdXJ0aGVyIGRldGFpbHMuCiAKICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgaW5zdGVhZCBvZiBgYF9fbmFtZV9fYGAgdG8gY2FsY3VsYXRlIGV4cGxpY2l0CiAgICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4KQEAgLTQyNSw4ICs0MjcsOCBAQAogICogSWYgdGhlIG1vZHVsZSBoYXMgYSBgYF9fZmlsZV9fYGAgYXR0cmlidXRlLCB0aGlzIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUKICAgIG1vZHVsZSdzIHJlcHIuCiAKLSAqIElmIHRoZSBtb2R1bGUgaGFzIG5vIGBgX19maWxlX19gYCBidXQgZG9lcyBoYXZlIGEgYGBfX2xvYWRlcl9fYGAsIHRoZW4gdGhlCi0gICBsb2FkZXIncyByZXByIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgbW9kdWxlJ3MgcmVwci4KKyAqIElmIHRoZSBtb2R1bGUgaGFzIG5vIGBgX19maWxlX19gYCBidXQgZG9lcyBoYXZlIGEgYGBfX2xvYWRlcl9fYGAgdGhhdCBpcyBub3QKKyAgIGBgTm9uZWBgLCB0aGVuIHRoZSBsb2FkZXIncyByZXByIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgbW9kdWxlJ3MgcmVwci4KIAogICogT3RoZXJ3aXNlLCBqdXN0IHVzZSB0aGUgbW9kdWxlJ3MgYGBfX25hbWVfX2BgIGluIHRoZSByZXByLgogCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbAppbmRleCBhMGVjMzJmLi5lZDVkYTBjIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKQEAgLTMsNyArMyw3IEBACiAJICAgIDxoMz5Eb2NzIGZvciBvdGhlciB2ZXJzaW9uczwvaDM+CiAJICAgIDx1bD4KIAkgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy8yLjcvIj5QeXRob24gMi43IChzdGFibGUpPC9hPjwvbGk+Ci0JICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy40LyI+UHl0aG9uIDMuNCAoaW4gZGV2ZWxvcG1lbnQpPC9hPjwvbGk+CisJICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zLyI+UHl0aG9uIDMuMyAoc3RhYmxlKTwvYT48L2xpPgogICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5weXRob24ub3JnL2RvYy92ZXJzaW9ucy8iPk9sZCB2ZXJzaW9uczwvYT48L2xpPgogICAgICAgICAgICAgPC91bD4KIApkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CmluZGV4IGU4ZWI3MDMuLmRmNmU0OGEgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKQEAgLTEwLDcgKzEwLDcgQEAKICIiIgogCiBJU1NVRV9VUkkgPSAnaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZSVzJwotU09VUkNFX1VSSSA9ICdodHRwOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy4zLyVzJworU09VUkNFX1VSSSA9ICdodHRwOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvZGVmYXVsdC8lcycKIAogZnJvbSBkb2N1dGlscyBpbXBvcnQgbm9kZXMsIHV0aWxzCiBmcm9tIHNwaGlueC51dGlsLm5vZGVzIGltcG9ydCBzcGxpdF9leHBsaWNpdF90aXRsZQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IDcyYzUyNTUuLmQ5NTFkYWQgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKQEAgLTE2MiwxNyArMTYyLDkgQEAKIGxpYnJhcnkvcGRiLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubwogbGlicmFyeS9waWNrbGUsLDptZW1vcnksImNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIiI6bWVtb3J5OiIiKSIKIGxpYnJhcnkvcG9zaXgsLGAsIkNGTEFHUz0iImBnZXRjb25mIExGU19DRkxBR1NgIiIgT1BUPSIiLWcgLU8yICRDRkxBR1MiIiIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJ10sIgorbGlicmFyeS9wcHJpbnQsLDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIgOjogT25seSddLCIKK2xpYnJhcnkvcHByaW50LCw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKK2xpYnJhcnkvcHByaW50LCw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKIGxpYnJhcnkvcHJvZmlsZSwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8oZnVuY3Rpb24pCiBsaWJyYXJ5L3B5ZXhwYXQsLDplbGVtMSw8cHk6ZWxlbTEgLz4KIGxpYnJhcnkvcHlleHBhdCwsOnB5LCJ4bWxuczpweSA9ICIiaHR0cDovL3d3dy5weXRob24ub3JnL25zLyIiPiIKQEAgLTE4NCw2ICsxNzYsNyBAQAogbGlicmFyeS9zcWxpdGUzLCw6YWdlLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3FsaXRlMywsOm1lbW9yeSwKIGxpYnJhcnkvc3FsaXRlMywsOndobywiY3VyLmV4ZWN1dGUoIiJzZWxlY3QgKiBmcm9tIHBlb3BsZSB3aGVyZSBuYW1lX2xhc3Q9OndobyBhbmQgYWdlPTphZ2UiIiwgeyIid2hvIiI6IHdobywgIiJhZ2UiIjogYWdlfSkiCitsaWJyYXJ5L3NxbGl0ZTMsLDpwYXRoLCJkYiA9IHNxbGl0ZTMuY29ubmVjdCgnZmlsZTpwYXRoL3RvL2RhdGFiYXNlP21vZGU9cm8nLCB1cmk9VHJ1ZSkiCiBsaWJyYXJ5L3NzbCwsOk15LCJPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9uKSBbXTpNeSBHcm91cCIKIGxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW0ludGVybmV0IFdpZGdpdHMgUHR5IEx0ZF06TXkgT3JnYW5pemF0aW9uLCBJbmMuIgogbGlicmFyeS9zc2wsLDpteXNlcnZlciwiQ29tbW9uIE5hbWUgKGVnLCBZT1VSIG5hbWUpIFtdOm15c2VydmVyLm15Z3JvdXAubXlvcmdhbml6YXRpb24uY29tIgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVyYWN0aXZlLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcmFjdGl2ZS5yc3QKaW5kZXggMzZhY2IwNi4uYWJmMzBmMCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVyYWN0aXZlLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJhY3RpdmUucnN0CkBAIC03LDE0MCArNywyNyBAQAogU29tZSB2ZXJzaW9ucyBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyIHN1cHBvcnQgZWRpdGluZyBvZiB0aGUgY3VycmVudCBpbnB1dAogbGluZSBhbmQgaGlzdG9yeSBzdWJzdGl0dXRpb24sIHNpbWlsYXIgdG8gZmFjaWxpdGllcyBmb3VuZCBpbiB0aGUgS29ybiBzaGVsbCBhbmQKIHRoZSBHTlUgQmFzaCBzaGVsbC4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIGBHTlUgUmVhZGxpbmVgXyBsaWJyYXJ5LAotd2hpY2ggc3VwcG9ydHMgRW1hY3Mtc3R5bGUgYW5kIHZpLXN0eWxlIGVkaXRpbmcuICBUaGlzIGxpYnJhcnkgaGFzIGl0cyBvd24KLWRvY3VtZW50YXRpb24gd2hpY2ggSSB3b24ndCBkdXBsaWNhdGUgaGVyZTsgaG93ZXZlciwgdGhlIGJhc2ljcyBhcmUgZWFzaWx5Ci1leHBsYWluZWQuICBUaGUgaW50ZXJhY3RpdmUgZWRpdGluZyBhbmQgaGlzdG9yeSBkZXNjcmliZWQgaGVyZSBhcmUgb3B0aW9uYWxseQotYXZhaWxhYmxlIGluIHRoZSBVbml4IGFuZCBDeWd3aW4gdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLgotCi1UaGlzIGNoYXB0ZXIgZG9lcyAqbm90KiBkb2N1bWVudCB0aGUgZWRpdGluZyBmYWNpbGl0aWVzIG9mIE1hcmsgSGFtbW9uZCdzCi1QeXRob25XaW4gcGFja2FnZSBvciB0aGUgVGstYmFzZWQgZW52aXJvbm1lbnQsIElETEUsIGRpc3RyaWJ1dGVkIHdpdGggUHl0aG9uLgotVGhlIGNvbW1hbmQgbGluZSBoaXN0b3J5IHJlY2FsbCB3aGljaCBvcGVyYXRlcyB3aXRoaW4gRE9TIGJveGVzIG9uIE5UIGFuZCBzb21lCi1vdGhlciBET1MgYW5kIFdpbmRvd3MgZmxhdm9ycyAgaXMgeWV0IGFub3RoZXIgYmVhc3QuCi0KLQotLi4gX3R1dC1saW5lZWRpdGluZzoKLQotTGluZSBFZGl0aW5nCi09PT09PT09PT09PT0KLQotSWYgc3VwcG9ydGVkLCBpbnB1dCBsaW5lIGVkaXRpbmcgaXMgYWN0aXZlIHdoZW5ldmVyIHRoZSBpbnRlcnByZXRlciBwcmludHMgYQotcHJpbWFyeSBvciBzZWNvbmRhcnkgcHJvbXB0LiAgVGhlIGN1cnJlbnQgbGluZSBjYW4gYmUgZWRpdGVkIHVzaW5nIHRoZQotY29udmVudGlvbmFsIEVtYWNzIGNvbnRyb2wgY2hhcmFjdGVycy4gIFRoZSBtb3N0IGltcG9ydGFudCBvZiB0aGVzZSBhcmU6Ci06a2JkOmBDLUFgIChDb250cm9sLUEpIG1vdmVzIHRoZSBjdXJzb3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSwgOmtiZDpgQy1FYAotdG8gdGhlIGVuZCwgOmtiZDpgQy1CYCBtb3ZlcyBpdCBvbmUgcG9zaXRpb24gdG8gdGhlIGxlZnQsIDprYmQ6YEMtRmAgdG8gdGhlCi1yaWdodC4gIEJhY2tzcGFjZSBlcmFzZXMgdGhlIGNoYXJhY3RlciB0byB0aGUgbGVmdCBvZiB0aGUgY3Vyc29yLCA6a2JkOmBDLURgIHRoZQotY2hhcmFjdGVyIHRvIGl0cyByaWdodC4gOmtiZDpgQy1LYCBraWxscyAoZXJhc2VzKSB0aGUgcmVzdCBvZiB0aGUgbGluZSB0byB0aGUKLXJpZ2h0IG9mIHRoZSBjdXJzb3IsIDprYmQ6YEMtWWAgeWFua3MgYmFjayB0aGUgbGFzdCBraWxsZWQgc3RyaW5nLgotOmtiZDpgQy11bmRlcnNjb3JlYCB1bmRvZXMgdGhlIGxhc3QgY2hhbmdlIHlvdSBtYWRlOyBpdCBjYW4gYmUgcmVwZWF0ZWQgZm9yCi1jdW11bGF0aXZlIGVmZmVjdC4KLQotCi0uLiBfdHV0LWhpc3Rvcnk6Ci0KLUhpc3RvcnkgU3Vic3RpdHV0aW9uCi09PT09PT09PT09PT09PT09PT09PQotCi1IaXN0b3J5IHN1YnN0aXR1dGlvbiB3b3JrcyBhcyBmb2xsb3dzLiAgQWxsIG5vbi1lbXB0eSBpbnB1dCBsaW5lcyBpc3N1ZWQgYXJlCi1zYXZlZCBpbiBhIGhpc3RvcnkgYnVmZmVyLCBhbmQgd2hlbiBhIG5ldyBwcm9tcHQgaXMgZ2l2ZW4geW91IGFyZSBwb3NpdGlvbmVkIG9uCi1hIG5ldyBsaW5lIGF0IHRoZSBib3R0b20gb2YgdGhpcyBidWZmZXIuIDprYmQ6YEMtUGAgbW92ZXMgb25lIGxpbmUgdXAgKGJhY2spIGluCi10aGUgaGlzdG9yeSBidWZmZXIsIDprYmQ6YEMtTmAgbW92ZXMgb25lIGRvd24uICBBbnkgbGluZSBpbiB0aGUgaGlzdG9yeSBidWZmZXIKLWNhbiBiZSBlZGl0ZWQ7IGFuIGFzdGVyaXNrIGFwcGVhcnMgaW4gZnJvbnQgb2YgdGhlIHByb21wdCB0byBtYXJrIGEgbGluZSBhcwotbW9kaWZpZWQuICBQcmVzc2luZyB0aGUgOmtiZDpgUmV0dXJuYCBrZXkgcGFzc2VzIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlCi1pbnRlcnByZXRlci4gIDprYmQ6YEMtUmAgc3RhcnRzIGFuIGluY3JlbWVudGFsIHJldmVyc2Ugc2VhcmNoOyA6a2JkOmBDLVNgIHN0YXJ0cwotYSBmb3J3YXJkIHNlYXJjaC4KK3doaWNoIHN1cHBvcnRzIHZhcmlvdXMgc3R5bGVzIG9mIGVkaXRpbmcuICBUaGlzIGxpYnJhcnkgaGFzIGl0cyBvd24KK2RvY3VtZW50YXRpb24gd2hpY2ggd2Ugd29uJ3QgZHVwbGljYXRlIGhlcmUuCiAKIAogLi4gX3R1dC1rZXliaW5kaW5nczoKIAotS2V5IEJpbmRpbmdzCi09PT09PT09PT09PT0KK1RhYiBDb21wbGV0aW9uIGFuZCBIaXN0b3J5IEVkaXRpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGtleSBiaW5kaW5ncyBhbmQgc29tZSBvdGhlciBwYXJhbWV0ZXJzIG9mIHRoZSBSZWFkbGluZSBsaWJyYXJ5IGNhbiBiZQotY3VzdG9taXplZCBieSBwbGFjaW5nIGNvbW1hbmRzIGluIGFuIGluaXRpYWxpemF0aW9uIGZpbGUgY2FsbGVkCi06ZmlsZTpgfi8uaW5wdXRyY2AuICBLZXkgYmluZGluZ3MgaGF2ZSB0aGUgZm9ybSA6OgotCi0gICBrZXktbmFtZTogZnVuY3Rpb24tbmFtZQotCi1vciA6OgotCi0gICAic3RyaW5nIjogZnVuY3Rpb24tbmFtZQotCi1hbmQgb3B0aW9ucyBjYW4gYmUgc2V0IHdpdGggOjoKLQotICAgc2V0IG9wdGlvbi1uYW1lIHZhbHVlCi0KLUZvciBleGFtcGxlOjoKLQotICAgIyBJIHByZWZlciB2aS1zdHlsZSBlZGl0aW5nOgotICAgc2V0IGVkaXRpbmctbW9kZSB2aQotCi0gICAjIEVkaXQgdXNpbmcgYSBzaW5nbGUgbGluZToKLSAgIHNldCBob3Jpem9udGFsLXNjcm9sbC1tb2RlIE9uCi0KLSAgICMgUmViaW5kIHNvbWUga2V5czoKLSAgIE1ldGEtaDogYmFja3dhcmQta2lsbC13b3JkCi0gICAiXEMtdSI6IHVuaXZlcnNhbC1hcmd1bWVudAotICAgIlxDLXhcQy1yIjogcmUtcmVhZC1pbml0LWZpbGUKLQotTm90ZSB0aGF0IHRoZSBkZWZhdWx0IGJpbmRpbmcgZm9yIDprYmQ6YFRhYmAgaW4gUHl0aG9uIGlzIHRvIGluc2VydCBhIDprYmQ6YFRhYmAKLWNoYXJhY3RlciBpbnN0ZWFkIG9mIFJlYWRsaW5lJ3MgZGVmYXVsdCBmaWxlbmFtZSBjb21wbGV0aW9uIGZ1bmN0aW9uLiAgSWYgeW91Ci1pbnNpc3QsIHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieSBwdXR0aW5nIDo6Ci0KLSAgIFRhYjogY29tcGxldGUKLQotaW4geW91ciA6ZmlsZTpgfi8uaW5wdXRyY2AuICAoT2YgY291cnNlLCB0aGlzIG1ha2VzIGl0IGhhcmRlciB0byB0eXBlIGluZGVudGVkCi1jb250aW51YXRpb24gbGluZXMgaWYgeW91J3JlIGFjY3VzdG9tZWQgdG8gdXNpbmcgOmtiZDpgVGFiYCBmb3IgdGhhdCBwdXJwb3NlLikKLQotLi4gaW5kZXg6OgotICAgbW9kdWxlOiBybGNvbXBsZXRlcgotICAgbW9kdWxlOiByZWFkbGluZQotCi1BdXRvbWF0aWMgY29tcGxldGlvbiBvZiB2YXJpYWJsZSBhbmQgbW9kdWxlIG5hbWVzIGlzIG9wdGlvbmFsbHkgYXZhaWxhYmxlLiAgVG8KLWVuYWJsZSBpdCBpbiB0aGUgaW50ZXJwcmV0ZXIncyBpbnRlcmFjdGl2ZSBtb2RlLCBhZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyCi1zdGFydHVwIGZpbGU6IFsjXV8gIDo6Ci0KLSAgIGltcG9ydCBybGNvbXBsZXRlciwgcmVhZGxpbmUKLSAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKCd0YWI6IGNvbXBsZXRlJykKLQotVGhpcyBiaW5kcyB0aGUgOmtiZDpgVGFiYCBrZXkgdG8gdGhlIGNvbXBsZXRpb24gZnVuY3Rpb24sIHNvIGhpdHRpbmcgdGhlCi06a2JkOmBUYWJgIGtleSB0d2ljZSBzdWdnZXN0cyBjb21wbGV0aW9uczsgaXQgbG9va3MgYXQgUHl0aG9uIHN0YXRlbWVudCBuYW1lcywKLXRoZSBjdXJyZW50IGxvY2FsIHZhcmlhYmxlcywgYW5kIHRoZSBhdmFpbGFibGUgbW9kdWxlIG5hbWVzLiAgRm9yIGRvdHRlZAotZXhwcmVzc2lvbnMgc3VjaCBhcyBgYHN0cmluZy5hYGAsIGl0IHdpbGwgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gdXAgdG8gdGhlCi1maW5hbCBgYCcuJ2BgIGFuZCB0aGVuIHN1Z2dlc3QgY29tcGxldGlvbnMgZnJvbSB0aGUgYXR0cmlidXRlcyBvZiB0aGUgcmVzdWx0aW5nCi1vYmplY3QuICBOb3RlIHRoYXQgdGhpcyBtYXkgZXhlY3V0ZSBhcHBsaWNhdGlvbi1kZWZpbmVkIGNvZGUgaWYgYW4gb2JqZWN0IHdpdGggYQotOm1ldGg6YF9fZ2V0YXR0cl9fYCBtZXRob2QgaXMgcGFydCBvZiB0aGUgZXhwcmVzc2lvbi4KLQotQSBtb3JlIGNhcGFibGUgc3RhcnR1cCBmaWxlIG1pZ2h0IGxvb2sgbGlrZSB0aGlzIGV4YW1wbGUuICBOb3RlIHRoYXQgdGhpcwotZGVsZXRlcyB0aGUgbmFtZXMgaXQgY3JlYXRlcyBvbmNlIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQ7IHRoaXMgaXMgZG9uZSBzaW5jZQotdGhlIHN0YXJ0dXAgZmlsZSBpcyBleGVjdXRlZCBpbiB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgdGhlIGludGVyYWN0aXZlIGNvbW1hbmRzLAotYW5kIHJlbW92aW5nIHRoZSBuYW1lcyBhdm9pZHMgY3JlYXRpbmcgc2lkZSBlZmZlY3RzIGluIHRoZSBpbnRlcmFjdGl2ZQotZW52aXJvbm1lbnQuICBZb3UgbWF5IGZpbmQgaXQgY29udmVuaWVudCB0byBrZWVwIHNvbWUgb2YgdGhlIGltcG9ydGVkIG1vZHVsZXMsCi1zdWNoIGFzIDptb2Q6YG9zYCwgd2hpY2ggdHVybiBvdXQgdG8gYmUgbmVlZGVkIGluIG1vc3Qgc2Vzc2lvbnMgd2l0aCB0aGUKLWludGVycHJldGVyLiA6OgotCi0gICAjIEFkZCBhdXRvLWNvbXBsZXRpb24gYW5kIGEgc3RvcmVkIGhpc3RvcnkgZmlsZSBvZiBjb21tYW5kcyB0byB5b3VyIFB5dGhvbgotICAgIyBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4gUmVxdWlyZXMgUHl0aG9uIDIuMCssIHJlYWRsaW5lLiBBdXRvY29tcGxldGUgaXMKLSAgICMgYm91bmQgdG8gdGhlIEVzYyBrZXkgYnkgZGVmYXVsdCAoeW91IGNhbiBjaGFuZ2UgaXQgLSBzZWUgcmVhZGxpbmUgZG9jcykuCi0gICAjCi0gICAjIFN0b3JlIHRoZSBmaWxlIGluIH4vLnB5c3RhcnR1cCwgYW5kIHNldCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwb2ludAotICAgIyB0byBpdDogICJleHBvcnQgUFlUSE9OU1RBUlRVUD1+Ly5weXN0YXJ0dXAiIGluIGJhc2guCi0KLSAgIGltcG9ydCBhdGV4aXQKLSAgIGltcG9ydCBvcwotICAgaW1wb3J0IHJlYWRsaW5lCi0gICBpbXBvcnQgcmxjb21wbGV0ZXIKLQotICAgaGlzdG9yeVBhdGggPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4vLnB5aGlzdG9yeSIpCi0KLSAgIGRlZiBzYXZlX2hpc3RvcnkoaGlzdG9yeVBhdGg9aGlzdG9yeVBhdGgpOgotICAgICAgIGltcG9ydCByZWFkbGluZQotICAgICAgIHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZShoaXN0b3J5UGF0aCkKLQotICAgaWYgb3MucGF0aC5leGlzdHMoaGlzdG9yeVBhdGgpOgotICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RvcnlQYXRoKQotCi0gICBhdGV4aXQucmVnaXN0ZXIoc2F2ZV9oaXN0b3J5KQotICAgZGVsIG9zLCBhdGV4aXQsIHJlYWRsaW5lLCBybGNvbXBsZXRlciwgc2F2ZV9oaXN0b3J5LCBoaXN0b3J5UGF0aAorQ29tcGxldGlvbiBvZiB2YXJpYWJsZSBhbmQgbW9kdWxlIG5hbWVzIGlzCis6cmVmOmBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgPHJsY29tcGxldGVyLWNvbmZpZz5gIGF0IGludGVycHJldGVyIHN0YXJ0dXAgc28KK3RoYXQgdGhlIDprYmQ6YFRhYmAga2V5IGludm9rZXMgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb247IGl0IGxvb2tzIGF0CitQeXRob24gc3RhdGVtZW50IG5hbWVzLCB0aGUgY3VycmVudCBsb2NhbCB2YXJpYWJsZXMsIGFuZCB0aGUgYXZhaWxhYmxlCittb2R1bGUgbmFtZXMuICBGb3IgZG90dGVkIGV4cHJlc3Npb25zIHN1Y2ggYXMgYGBzdHJpbmcuYWBgLCBpdCB3aWxsIGV2YWx1YXRlCit0aGUgZXhwcmVzc2lvbiB1cCB0byB0aGUgZmluYWwgYGAnLidgYCBhbmQgdGhlbiBzdWdnZXN0IGNvbXBsZXRpb25zIGZyb20KK3RoZSBhdHRyaWJ1dGVzIG9mIHRoZSByZXN1bHRpbmcgb2JqZWN0LiAgTm90ZSB0aGF0IHRoaXMgbWF5IGV4ZWN1dGUKK2FwcGxpY2F0aW9uLWRlZmluZWQgY29kZSBpZiBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBfX2dldGF0dHJfX2AgbWV0aG9kCitpcyBwYXJ0IG9mIHRoZSBleHByZXNzaW9uLiAgVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBhbHNvIHNhdmVzIHlvdXIKK2hpc3RvcnkgaW50byBhIGZpbGUgbmFtZWQgOmZpbGU6YC5weXRob25faGlzdG9yeWAgaW4geW91ciB1c2VyIGRpcmVjdG9yeS4KK1RoZSBoaXN0b3J5IHdpbGwgYmUgYXZhaWxhYmxlIGFnYWluIGR1cmluZyB0aGUgbmV4dCBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlcgorc2Vzc2lvbi4KIAogCiAuLiBfdHV0LWNvbW1lbnRhcnk6CkBAIC0xNjIsMTQgKzQ5LDYgQEAKIGJweXRob25fLgogCiAKLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gUHl0aG9uIHdpbGwgZXhlY3V0ZSB0aGUgY29udGVudHMgb2YgYSBmaWxlIGlkZW50aWZpZWQgYnkgdGhlCi0gICA6ZW52dmFyOmBQWVRIT05TVEFSVFVQYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIHlvdSBzdGFydCBhbiBpbnRlcmFjdGl2ZQotICAgaW50ZXJwcmV0ZXIuICBUbyBjdXN0b21pemUgUHl0aG9uIGV2ZW4gZm9yIG5vbi1pbnRlcmFjdGl2ZSBtb2RlLCBzZWUKLSAgIDpyZWY6YHR1dC1jdXN0b21pemVgLgotCi0KIC4uIF9HTlUgUmVhZGxpbmU6IGh0dHA6Ly90aXN3d3cuY2FzZS5lZHUvcGhwL2NoZXQvcmVhZGxpbmUvcmx0b3AuaHRtbAogLi4gX0lQeXRob246IGh0dHA6Ly9pcHl0aG9uLnNjaXB5Lm9yZy8KIC4uIF9icHl0aG9uOiBodHRwOi8vd3d3LmJweXRob24taW50ZXJwcmV0ZXIub3JnLwpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggY2RjMmJmMi4uYzE4MjUxMSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMCwxMyArMTAsMTMgQEAKIEludm9raW5nIHRoZSBJbnRlcnByZXRlcgogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuM2AKK1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuNGAKIG9uIHRob3NlIG1hY2hpbmVzIHdoZXJlIGl0IGlzIGF2YWlsYWJsZTsgcHV0dGluZyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW5gIGluIHlvdXIKIFVuaXggc2hlbGwncyBzZWFyY2ggcGF0aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzdGFydCBpdCBieSB0eXBpbmcgdGhlIGNvbW1hbmQ6CiAKIC4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLSAgIHB5dGhvbjMuMworICAgcHl0aG9uMy40CiAKIHRvIHRoZSBzaGVsbC4gWyNdXyBTaW5jZSB0aGUgY2hvaWNlIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGludGVycHJldGVyIGxpdmVzCiBpcyBhbiBpbnN0YWxsYXRpb24gb3B0aW9uLCBvdGhlciBwbGFjZXMgYXJlIHBvc3NpYmxlOyBjaGVjayB3aXRoIHlvdXIgbG9jYWwKQEAgLTI0LDExICsyNCwxMSBAQAogcG9wdWxhciBhbHRlcm5hdGl2ZSBsb2NhdGlvbi4pCiAKIE9uIFdpbmRvd3MgbWFjaGluZXMsIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGlzIHVzdWFsbHkgcGxhY2VkIGluCi06ZmlsZTpgQzpcXFB5dGhvbjMzYCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKKzpmaWxlOmBDOlxcUHl0aG9uMzRgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQogaW5zdGFsbGVyLiAgVG8gYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgIHlvdSBjYW4gdHlwZSB0aGUgZm9sbG93aW5nCiBjb21tYW5kIGludG8gdGhlIGNvbW1hbmQgcHJvbXB0IGluIGEgRE9TIGJveDo6CiAKLSAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zMworICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM0CiAKIFR5cGluZyBhbiBlbmQtb2YtZmlsZSBjaGFyYWN0ZXIgKDprYmQ6YENvbnRyb2wtRGAgb24gVW5peCwgOmtiZDpgQ29udHJvbC1aYCBvbgogV2luZG93cykgYXQgdGhlIHByaW1hcnkgcHJvbXB0IGNhdXNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gZXhpdCB3aXRoIGEgemVybyBleGl0CkBAIC05NSw4ICs5NSw4IEBACiBwcmludHMgYSB3ZWxjb21lIG1lc3NhZ2Ugc3RhdGluZyBpdHMgdmVyc2lvbiBudW1iZXIgYW5kIGEgY29weXJpZ2h0IG5vdGljZQogYmVmb3JlIHByaW50aW5nIHRoZSBmaXJzdCBwcm9tcHQ6OgogCi0gICAkIHB5dGhvbjMuMwotICAgUHl0aG9uIDMuMyAoZGVmYXVsdCwgU2VwIDI0IDIwMTIsIDA5OjI1OjA0KQorICAgJCBweXRob24zLjQKKyAgIFB5dGhvbiAzLjQgKGRlZmF1bHQsIFNlcCAyNCAyMDEyLCAwOToyNTowNCkKICAgIFtHQ0MgNC42LjNdIG9uIGxpbnV4MgogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CkBAIC0xNDksNyArMTQ5LDcgQEAKIE9uIEJTRCdpc2ggVW5peCBzeXN0ZW1zLCBQeXRob24gc2NyaXB0cyBjYW4gYmUgbWFkZSBkaXJlY3RseSBleGVjdXRhYmxlLCBsaWtlCiBzaGVsbCBzY3JpcHRzLCBieSBwdXR0aW5nIHRoZSBsaW5lIDo6CiAKLSAgICMhIC91c3IvYmluL2VudiBweXRob24zLjMKKyAgICMhIC91c3IvYmluL2VudiBweXRob24zLjQKIAogKGFzc3VtaW5nIHRoYXQgdGhlIGludGVycHJldGVyIGlzIG9uIHRoZSB1c2VyJ3MgOmVudnZhcjpgUEFUSGApIGF0IHRoZSBiZWdpbm5pbmcKIG9mIHRoZSBzY3JpcHQgYW5kIGdpdmluZyB0aGUgZmlsZSBhbiBleGVjdXRhYmxlIG1vZGUuICBUaGUgYGAjIWBgIG11c3QgYmUgdGhlCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKaW5kZXggZTJjZTBlZi4uOTllMTViYyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdApAQCAtMjkwLDI0ICsyOTAsMjMgQEAKICAgID4+PiBkaXIoZmlibykKICAgIFsnX19uYW1lX18nLCAnZmliJywgJ2ZpYjInXQogICAgPj4+IGRpcihzeXMpICAjIGRvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQotICAgWydfX2Rpc3BsYXlob29rX18nLCAnX19kb2NfXycsICdfX2VnZ2luc2VydCcsICdfX2V4Y2VwdGhvb2tfXycsCi0gICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wbGVuJywgJ19fc3RkZXJyX18nLAotICAgICdfX3N0ZGluX18nLCAnX19zdGRvdXRfXycsICdfY2xlYXJfdHlwZV9jYWNoZScsICdfY3VycmVudF9mcmFtZXMnLAotICAgICdfZGVidWdtYWxsb2NzdGF0cycsICdfZ2V0ZnJhbWUnLCAnX2hvbWUnLCAnX21lcmN1cmlhbCcsICdfeG9wdGlvbnMnLAotICAgICdhYmlmbGFncycsICdhcGlfdmVyc2lvbicsICdhcmd2JywgJ2Jhc2VfZXhlY19wcmVmaXgnLCAnYmFzZV9wcmVmaXgnLAotICAgICdidWlsdGluX21vZHVsZV9uYW1lcycsICdieXRlb3JkZXInLCAnY2FsbF90cmFjaW5nJywgJ2NhbGxzdGF0cycsCi0gICAgJ2NvcHlyaWdodCcsICdkaXNwbGF5aG9vaycsICdkb250X3dyaXRlX2J5dGVjb2RlJywgJ2V4Y19pbmZvJywKLSAgICAnZXhjZXB0aG9vaycsICdleGVjX3ByZWZpeCcsICdleGVjdXRhYmxlJywgJ2V4aXQnLCAnZmxhZ3MnLCAnZmxvYXRfaW5mbycsCi0gICAgJ2Zsb2F0X3JlcHJfc3R5bGUnLCAnZ2V0Y2hlY2tpbnRlcnZhbCcsICdnZXRkZWZhdWx0ZW5jb2RpbmcnLAotICAgICdnZXRkbG9wZW5mbGFncycsICdnZXRmaWxlc3lzdGVtZW5jb2RpbmcnLCAnZ2V0b2JqZWN0cycsICdnZXRwcm9maWxlJywKLSAgICAnZ2V0cmVjdXJzaW9ubGltaXQnLCAnZ2V0cmVmY291bnQnLCAnZ2V0c2l6ZW9mJywgJ2dldHN3aXRjaGludGVydmFsJywKLSAgICAnZ2V0dG90YWxyZWZjb3VudCcsICdnZXR0cmFjZScsICdoYXNoX2luZm8nLCAnaGV4dmVyc2lvbicsCi0gICAgJ2ltcGxlbWVudGF0aW9uJywgJ2ludF9pbmZvJywgJ2ludGVybicsICdtYXhzaXplJywgJ21heHVuaWNvZGUnLAotICAgICdtZXRhX3BhdGgnLCAnbW9kdWxlcycsICdwYXRoJywgJ3BhdGhfaG9va3MnLCAncGF0aF9pbXBvcnRlcl9jYWNoZScsCi0gICAgJ3BsYXRmb3JtJywgJ3ByZWZpeCcsICdwczEnLCAnc2V0Y2hlY2tpbnRlcnZhbCcsICdzZXRkbG9wZW5mbGFncycsCi0gICAgJ3NldHByb2ZpbGUnLCAnc2V0cmVjdXJzaW9ubGltaXQnLCAnc2V0c3dpdGNoaW50ZXJ2YWwnLCAnc2V0dHJhY2UnLAotICAgICdzdGRlcnInLCAnc3RkaW4nLCAnc3Rkb3V0JywgJ3RocmVhZF9pbmZvJywgJ3ZlcnNpb24nLCAndmVyc2lvbl9pbmZvJywKLSAgICAnd2Fybm9wdGlvbnMnXQorICAgWydfX2Rpc3BsYXlob29rX18nLCAnX19kb2NfXycsICdfX2V4Y2VwdGhvb2tfXycsICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywKKyAgICAnX19wYWNrYWdlX18nLCAnX19zdGRlcnJfXycsICdfX3N0ZGluX18nLCAnX19zdGRvdXRfXycsCisgICAgJ19jbGVhcl90eXBlX2NhY2hlJywgJ19jdXJyZW50X2ZyYW1lcycsICdfZGVidWdtYWxsb2NzdGF0cycsICdfZ2V0ZnJhbWUnLAorICAgICdfaG9tZScsICdfbWVyY3VyaWFsJywgJ194b3B0aW9ucycsICdhYmlmbGFncycsICdhcGlfdmVyc2lvbicsICdhcmd2JywKKyAgICAnYmFzZV9leGVjX3ByZWZpeCcsICdiYXNlX3ByZWZpeCcsICdidWlsdGluX21vZHVsZV9uYW1lcycsICdieXRlb3JkZXInLAorICAgICdjYWxsX3RyYWNpbmcnLCAnY2FsbHN0YXRzJywgJ2NvcHlyaWdodCcsICdkaXNwbGF5aG9vaycsCisgICAgJ2RvbnRfd3JpdGVfYnl0ZWNvZGUnLCAnZXhjX2luZm8nLCAnZXhjZXB0aG9vaycsICdleGVjX3ByZWZpeCcsCisgICAgJ2V4ZWN1dGFibGUnLCAnZXhpdCcsICdmbGFncycsICdmbG9hdF9pbmZvJywgJ2Zsb2F0X3JlcHJfc3R5bGUnLAorICAgICdnZXRjaGVja2ludGVydmFsJywgJ2dldGRlZmF1bHRlbmNvZGluZycsICdnZXRkbG9wZW5mbGFncycsCisgICAgJ2dldGZpbGVzeXN0ZW1lbmNvZGluZycsICdnZXRvYmplY3RzJywgJ2dldHByb2ZpbGUnLCAnZ2V0cmVjdXJzaW9ubGltaXQnLAorICAgICdnZXRyZWZjb3VudCcsICdnZXRzaXplb2YnLCAnZ2V0c3dpdGNoaW50ZXJ2YWwnLCAnZ2V0dG90YWxyZWZjb3VudCcsCisgICAgJ2dldHRyYWNlJywgJ2hhc2hfaW5mbycsICdoZXh2ZXJzaW9uJywgJ2ltcGxlbWVudGF0aW9uJywgJ2ludF9pbmZvJywKKyAgICAnaW50ZXJuJywgJ21heHNpemUnLCAnbWF4dW5pY29kZScsICdtZXRhX3BhdGgnLCAnbW9kdWxlcycsICdwYXRoJywKKyAgICAncGF0aF9ob29rcycsICdwYXRoX2ltcG9ydGVyX2NhY2hlJywgJ3BsYXRmb3JtJywgJ3ByZWZpeCcsICdwczEnLAorICAgICdzZXRjaGVja2ludGVydmFsJywgJ3NldGRsb3BlbmZsYWdzJywgJ3NldHByb2ZpbGUnLCAnc2V0cmVjdXJzaW9ubGltaXQnLAorICAgICdzZXRzd2l0Y2hpbnRlcnZhbCcsICdzZXR0cmFjZScsICdzdGRlcnInLCAnc3RkaW4nLCAnc3Rkb3V0JywKKyAgICAndGhyZWFkX2luZm8nLCAndmVyc2lvbicsICd2ZXJzaW9uX2luZm8nLCAnd2Fybm9wdGlvbnMnXQogCiBXaXRob3V0IGFyZ3VtZW50cywgOmZ1bmM6YGRpcmAgbGlzdHMgdGhlIG5hbWVzIHlvdSBoYXZlIGRlZmluZWQgY3VycmVudGx5OjoKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCA3ZTdhMTU0Li4yZTNlZDE4IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zMycKKyAgICdDOlxcUHl0aG9uMzQnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAppbmRleCA0YjZlMDM2Li4zYjkxMjJmIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CkBAIC0yNzUsNyArMjc1LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjMzL2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzQvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCA0ZTcxNjhmLi5jMTRmNmM3IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC0yNCw3ICsyNCw3IEBACiAKIFdoZW4gaW52b2tpbmcgUHl0aG9uLCB5b3UgbWF5IHNwZWNpZnkgYW55IG9mIHRoZXNlIG9wdGlvbnM6OgogCi0gICAgcHl0aG9uIFstYkJkRWhpT3FzU3V2Vld4P10gWy1jIGNvbW1hbmQgfCAtbSBtb2R1bGUtbmFtZSB8IHNjcmlwdCB8IC0gXSBbYXJnc10KKyAgICBweXRob24gWy1iQmRFaGlJT3FzU3V2Vld4P10gWy1jIGNvbW1hbmQgfCAtbSBtb2R1bGUtbmFtZSB8IHNjcmlwdCB8IC0gXSBbYXJnc10KIAogVGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlIGlzLCBvZiBjb3Vyc2UsIGEgc2ltcGxlIGludm9jYXRpb24gb2YgYSBzY3JpcHQ6OgogCkBAIC0xNDcsNyArMTQ3LDEyIEBACiAKIElmIG5vIGludGVyZmFjZSBvcHRpb24gaXMgZ2l2ZW4sIDpvcHRpb246YC1pYCBpcyBpbXBsaWVkLCBgYHN5cy5hcmd2WzBdYGAgaXMKIGFuIGVtcHR5IHN0cmluZyAoYGAiImBgKSBhbmQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlCi1zdGFydCBvZiA6ZGF0YTpgc3lzLnBhdGhgLgorc3RhcnQgb2YgOmRhdGE6YHN5cy5wYXRoYC4gIEFsc28sIHRhYi1jb21wbGV0aW9uIGFuZCBoaXN0b3J5IGVkaXRpbmcgaXMKK2F1dG9tYXRpY2FsbHkgZW5hYmxlZCwgaWYgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0gKHNlZQorOnJlZjpgcmxjb21wbGV0ZXItY29uZmlnYCkuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy40CisgICBBdXRvbWF0aWMgZW5hYmxpbmcgb2YgdGFiLWNvbXBsZXRpb24gYW5kIGhpc3RvcnkgZWRpdGluZy4KIAogLi4gc2VlYWxzbzo6ICA6cmVmOmB0dXQtaW52b2tpbmdgCiAKQEAgLTE3MCw2ICsxNzUsOCBAQAogICAgICAgIFB5dGhvbiAzLjAKIAogCisuLiBfdXNpbmctb24tbWlzYy1vcHRpb25zOgorCiBNaXNjZWxsYW5lb3VzIG9wdGlvbnMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCkBAIC0yMDgsNiArMjE1LDE3IEBACiAgICByYWlzZXMgYW4gZXhjZXB0aW9uLiAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OSU5TUEVDVGAuCiAKIAorLi4gY21kb3B0aW9uOjogLUkKKworICAgUnVuIFB5dGhvbiBpbiBpc29sYXRlZCBtb2RlLiBUaGlzIGFsc28gaW1wbGllcyAtRSBhbmQgLXMuCisgICBJbiBpc29sYXRlZCBtb2RlIDpkYXRhOmBzeXMucGF0aGAgY29udGFpbnMgbmVpdGhlciB0aGUgc2NyaXB0J3MgZGlyZWN0b3J5IG5vcgorICAgdGhlIHVzZXIncyBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeS4gQWxsIDplbnZ2YXI6YFBZVEhPTipgIGVudmlyb25tZW50CisgICB2YXJpYWJsZXMgYXJlIGlnbm9yZWQsIHRvby4gRnVydGhlciByZXN0cmljdGlvbnMgbWF5IGJlIGltcG9zZWQgdG8gcHJldmVudAorICAgdGhlIHVzZXIgZnJvbSBpbmplY3RpbmcgbWFsaWNpb3VzIGNvZGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKIC4uIGNtZG9wdGlvbjo6IC1PCiAKICAgIFR1cm4gb24gYmFzaWMgb3B0aW1pemF0aW9ucy4gIFRoaXMgY2hhbmdlcyB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9uIGZvcgpAQCAtMzU4LDkgKzM3NiwxNCBAQAogLi4gY21kb3B0aW9uOjogLVgKIAogICAgUmVzZXJ2ZWQgZm9yIHZhcmlvdXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9ucy4gIENQeXRob24gY3VycmVudGx5Ci0gICBkZWZpbmVzIGp1c3Qgb25lLCB5b3UgY2FuIHVzZSBgYC1YIGZhdWx0aGFuZGxlcmBgIHRvIGVuYWJsZQotICAgOm1vZDpgZmF1bHRoYW5kbGVyYC4gSXQgYWxzbyBhbGxvd3MgdG8gcGFzcyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2ZQotICAgdGhlbSB0aHJvdWdoIHRoZSA6ZGF0YTpgc3lzLl94b3B0aW9uc2AgZGljdGlvbmFyeS4KKyAgIGRlZmluZXMgdHdvIHBvc3NpYmxlIHZhbHVlczoKKworICAgKiBgYC1YIGZhdWx0aGFuZGxlcmBgIHRvIGVuYWJsZSA6bW9kOmBmYXVsdGhhbmRsZXJgOworICAgKiBgYC1YIHNob3dyZWZjb3VudGBgIHRvIGVuYWJsZSB0aGUgb3V0cHV0IG9mIHRoZSB0b3RhbCByZWZlcmVuY2UgY291bnQKKyAgICAgYW5kIG1lbW9yeSBibG9ja3MgKG9ubHkgd29ya3Mgb24gZGVidWcgYnVpbGRzKTsKKworICAgSXQgYWxzbyBhbGxvd3MgdG8gcGFzcyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2ZSB0aGVtIHRocm91Z2ggdGhlCisgICA6ZGF0YTpgc3lzLl94b3B0aW9uc2AgZGljdGlvbmFyeS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEl0IGlzIG5vdyBhbGxvd2VkIHRvIHBhc3MgOm9wdGlvbjpgLVhgIHdpdGggQ1B5dGhvbi4KQEAgLTM2OCw2ICszOTEsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgYGAtWCBmYXVsdGhhbmRsZXJgYCBvcHRpb24uCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorICAgICAgVGhlIGBgLVggc2hvd3JlZmNvdW50YGAgb3B0aW9uLgorCiAKIE9wdGlvbnMgeW91IHNob3VsZG4ndCB1c2UKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTM4NSw3ICs0MTEsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbmZsdWVuY2UgUHl0aG9uJ3MgYmVoYXZpb3IsIHRoZXkgYXJlIHByb2Nlc3NlZAotYmVmb3JlIHRoZSBjb21tYW5kLWxpbmUgc3dpdGNoZXMgb3RoZXIgdGhhbiAtRS4gIEl0IGlzIGN1c3RvbWFyeSB0aGF0CitiZWZvcmUgdGhlIGNvbW1hbmQtbGluZSBzd2l0Y2hlcyBvdGhlciB0aGFuIC1FIG9yIC1JLiAgSXQgaXMgY3VzdG9tYXJ5IHRoYXQKIGNvbW1hbmQtbGluZSBzd2l0Y2hlcyBvdmVycmlkZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyB3aGVyZSB0aGVyZSBpcyBhCiBjb25mbGljdC4KIApAQCAtNDMwLDcgKzQ1Niw3IEBACiAgICBpcyBleGVjdXRlZCBpbiB0aGUgc2FtZSBuYW1lc3BhY2Ugd2hlcmUgaW50ZXJhY3RpdmUgY29tbWFuZHMgYXJlIGV4ZWN1dGVkIHNvCiAgICB0aGF0IG9iamVjdHMgZGVmaW5lZCBvciBpbXBvcnRlZCBpbiBpdCBjYW4gYmUgdXNlZCB3aXRob3V0IHF1YWxpZmljYXRpb24gaW4KICAgIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uLiAgWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgcHJvbXB0cyA6ZGF0YTpgc3lzLnBzMWAgYW5kCi0gICA6ZGF0YTpgc3lzLnBzMmAgaW4gdGhpcyBmaWxlLgorICAgOmRhdGE6YHN5cy5wczJgIGFuZCB0aGUgaG9vayA6ZGF0YTpgc3lzLl9faW50ZXJhY3RpdmVob29rX19gIGluIHRoaXMgZmlsZS4KIAogCiAuLiBlbnZ2YXI6OiBQWVRIT05ZMksKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9tYWMucnN0IGIvRG9jL3VzaW5nL21hYy5yc3QKaW5kZXggM2UxYjc0ZC4uNWJlNDM5ZiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL21hYy5yc3QKKysrIGIvRG9jL3VzaW5nL21hYy5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKIAogV2hhdCB5b3UgZ2V0IGFmdGVyIGluc3RhbGxpbmcgaXMgYSBudW1iZXIgb2YgdGhpbmdzOgogCi0qIEEgOmZpbGU6YE1hY1B5dGhvbiAzLjNgIGZvbGRlciBpbiB5b3VyIDpmaWxlOmBBcHBsaWNhdGlvbnNgIGZvbGRlci4gSW4gaGVyZQorKiBBIDpmaWxlOmBNYWNQeXRob24gMy40YCBmb2xkZXIgaW4geW91ciA6ZmlsZTpgQXBwbGljYXRpb25zYCBmb2xkZXIuIEluIGhlcmUKICAgeW91IGZpbmQgSURMRSwgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mIG9mZmljaWFsCiAgIFB5dGhvbiBkaXN0cmlidXRpb25zOyBQeXRob25MYXVuY2hlciwgd2hpY2ggaGFuZGxlcyBkb3VibGUtY2xpY2tpbmcgUHl0aG9uCiAgIHNjcmlwdHMgZnJvbSB0aGUgRmluZGVyOyBhbmQgdGhlICJCdWlsZCBBcHBsZXQiIHRvb2wsIHdoaWNoIGFsbG93cyB5b3UgdG8KQEAgLTkzLDcgKzkzLDcgQEAKIGFueXRoaW5nIHRoYXQgaGFzIGEgR1VJKSBuZWVkIHRvIGJlIHJ1biBpbiBhIHNwZWNpYWwgd2F5LiBVc2UgOnByb2dyYW06YHB5dGhvbndgCiBpbnN0ZWFkIG9mIDpwcm9ncmFtOmBweXRob25gIHRvIHN0YXJ0IHN1Y2ggc2NyaXB0cy4KIAotV2l0aCBQeXRob24gMy4zLCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgorV2l0aCBQeXRob24gMy40LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgogCiAKIENvbmZpZ3VyYXRpb24KQEAgLTE1OCw3ICsxNTgsNyBAQAogRGlzdHJpYnV0aW5nIFB5dGhvbiBBcHBsaWNhdGlvbnMgb24gdGhlIE1hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgIkJ1aWxkIEFwcGxldCIgdG9vbCB0aGF0IGlzIHBsYWNlZCBpbiB0aGUgTWFjUHl0aG9uIDMuMyBmb2xkZXIgaXMgZmluZSBmb3IKK1RoZSAiQnVpbGQgQXBwbGV0IiB0b29sIHRoYXQgaXMgcGxhY2VkIGluIHRoZSBNYWNQeXRob24gMy40IGZvbGRlciBpcyBmaW5lIGZvcgogcGFja2FnaW5nIHNtYWxsIFB5dGhvbiBzY3JpcHRzIG9uIHlvdXIgb3duIG1hY2hpbmUgdG8gcnVuIGFzIGEgc3RhbmRhcmQgTWFjCiBhcHBsaWNhdGlvbi4gVGhpcyB0b29sLCBob3dldmVyLCBpcyBub3Qgcm9idXN0IGVub3VnaCB0byBkaXN0cmlidXRlIFB5dGhvbgogYXBwbGljYXRpb25zIHRvIG90aGVyIHVzZXJzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKaW5kZXggNWZkYmM5Yi4uNzA2YWM1ZCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYworKysgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCkBAIC01NiwyMCArNTYsMjEgQEAKIHByb3ZpZGVkIHBhdGguCiAKIE9uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKLXZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOiBvbgotYSBQb3NpeCBwbGF0Zm9ybSwgeW91IHdvdWxkIHR5cGljYWxseSBkbzo6Cit2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlIHNjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzoKIAotICAgICQgc291cmNlIDx2ZW52Pi9iaW4vYWN0aXZhdGUKLQotd2hlcmVhcyBvbiBXaW5kb3dzLCB5b3UgbWlnaHQgZG86OgotCi0gICAgQzpcPiA8dmVudj4vU2NyaXB0cy9hY3RpdmF0ZQotCi1pZiB5b3UgYXJlIHVzaW5nIHRoZSBgYGNtZC5leGVgYCBzaGVsbCwgb3IgcGVyaGFwczo6Ci0KLSAgICBQUyBDOlw+IDx2ZW52Pi9TY3JpcHRzL0FjdGl2YXRlLnBzMQotCi1pZiB5b3UgdXNlIFBvd2VyU2hlbGwuCisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgUGxhdGZvcm0gICAgfCBTaGVsbCAgICAgICAgICAgfCBDb21tYW5kIHRvIGFjdGl2YXRlIHZpcnR1YWwgZW52aXJvbm1lbnQgfAorKz09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IFBvc2l4ICAgICAgIHwgYmFzaC96c2ggICAgICAgIHwgJCBzb3VyY2UgPHZlbnY+L2Jpbi9hY3RpdmF0ZSAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICB8IGZpc2ggICAgICAgICAgICB8ICQgLiA8dmVudj4vYmluL2FjdGl2YXRlLmZpc2ggICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgICAgfCBjc2gvdGNzaCAgICAgICAgfCAkIHNvdXJjZSA8dmVudj4vYmluL2FjdGl2YXRlLmNzaCAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFdpbmRvd3MgICAgIHwgY21kLmV4ZSAgICAgICAgIHwgQzpcPiA8dmVudj4vU2NyaXB0cy9hY3RpdmF0ZS5iYXQgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICB8IFBvd2VyU2hlbGwgICAgICB8IFBTIEM6XD4gPHZlbnY+L1NjcmlwdHMvQWN0aXZhdGUucHMxICAgICB8CisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogWW91IGRvbid0IHNwZWNpZmljYWxseSAqbmVlZCogdG8gYWN0aXZhdGUgYW4gZW52aXJvbm1lbnQ7IGFjdGl2YXRpb24ganVzdAogcHJlcGVuZHMgdGhlIHZlbnYncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdCAicHl0aG9uIiBpbnZva2VzIHRoZQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzMzYzExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3doYXRzbmV3LzMuNC5yc3QKQEAgLTAsMCArMSwzOTAgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy40CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKy4uIDpBdXRob3I6IFNvbWVvbmUgPGVtYWlsPgorICAgKHVuY29tbWVudCBpZiB0aGVyZSBpcyBhIHByaW5jaXBhbCBhdXRob3IpCisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQsIGJ1dCB0aGUgbWFpbnRhaW5lciByZXNlcnZlcyB0aGUKKyAgIHJpZ2h0IHRvIHJld3JpdGUgYW55IGFkZGl0aW9ucy4gSW4gcGFydGljdWxhciwgZm9yIG9ic2N1cmUgb3IgZXNvdGVyaWMKKyAgIGZlYXR1cmVzLCB0aGUgbWFpbnRhaW5lciBtYXkgcmVkdWNlIGFueSBhZGRpdGlvbiB0byBhIHNpbXBsZSByZWZlcmVuY2UgdG8KKyAgIHRoZSBuZXcgZG9jdW1lbnRhdGlvbiByYXRoZXIgdGhhbiBleHBsYWluaW5nIHRoZSBmZWF0dXJlIGlubGluZS4KKworICAgKiBXaGlsZSB0aGUgbWFpbnRhaW5lciB3aWxsIHBlcmlvZGljYWxseSBnbyB0aHJvdWdoIE1pc2MvTkVXUworICAgYW5kIGFkZCBjaGFuZ2VzLCBpdCdzIGJlc3Qgbm90IHRvIHJlbHkgb24gdGhpcy4gV2Uga25vdyBmcm9tIGV4cGVyaWVuY2UKKyAgIHRoYXQgYW55IGNoYW5nZXMgdGhhdCBhcmVuJ3QgaW4gdGhlIFdoYXQncyBOZXcgZG9jdW1lbnRhdGlvbiBhcm91bmQgdGhlCisgICB0aW1lIG9mIHRoZSBvcmlnaW5hbCByZWxlYXNlIHdpbGwgcmVtYWluIGxhcmdlbHkgdW5rbm93biB0byB0aGUgY29tbXVuaXR5CisgICBmb3IgeWVhcnMsIGV2ZW4gaWYgdGhleSdyZSBhZGRlZCBsYXRlci4gV2UgYWxzbyBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0CisgICBvdGhlciBwcmlvcml0aWVzIGNhbiBhcmlzZSwgYW5kIHRoZSBtYWludGFpbmVyIHdpbGwgcnVuIG91dCBvZiB0aW1lIHRvIGRvCisgICB1cGRhdGVzIC0gaW4gc3VjaCBjYXNlcywgZW5kIHVzZXJzIHdpbGwgYmUgbXVjaCBiZXR0ZXIgc2VydmVkIGJ5IHBhcnRpYWwKKyAgIG5vdGlmaWNhdGlvbnMgdGhhdCBhdCBsZWFzdCBnaXZlIGEgaGludCBhYm91dCBuZXcgZmVhdHVyZXMgdG8KKyAgIGludmVzdGlnYXRlLgorCisgICAqIFRoaXMgaXMgbm90IGEgY29tcGxldGUgbGlzdCBvZiBldmVyeSBzaW5nbGUgY2hhbmdlOyBjb21wbGV0ZW5lc3MKKyAgIGlzIHRoZSBwdXJwb3NlIG9mIE1pc2MvTkVXUy4gVGhlIFdoYXQncyBOZXcgc2hvdWxkIGZvY3VzIG9uIGNoYW5nZXMgdGhhdAorICAgYXJlIHZpc2libGUgdG8gUHl0aG9uICp1c2VycyogYW5kIHRoYXQgKnJlcXVpcmUqIGEgZmVhdHVyZSByZWxlYXNlIChpLmUuCisgICBtb3N0IGJ1ZyBmaXhlcyBzaG91bGQgb25seSBiZSByZWNvcmRlZCBpbiBNaXNjL05FV1MpCisKKyAgICogUEVQcyBzaG91bGQgbm90IGJlIG1hcmtlZCBGaW5hbCB1bnRpbCB0aGV5IGhhdmUgYW4gZW50cnkgaW4gV2hhdCdzIE5ldy4KKyAgIEEgcGxhY2Vob2xkZXIgZW50cnkgdGhhdCBpcyBqdXN0IGEgc2VjdGlvbiBoZWFkZXIgYW5kIGEgbGluayB0byB0aGUgUEVQCisgICAoZS5nICI6cGVwOmAzOTdgIGhhcyBiZWVuIGltcGxlbWVudGVkIikgaXMgYWNjZXB0YWJsZS4gSWYgYSBQRVAgaGFzIGJlZW4KKyAgIGltcGxlbWVudGVkIGFuZCBub3RlZCBpbiBXaGF0J3MgTmV3LCBkb24ndCBmb3JnZXQgdG8gbWFyayBpdCBhcyBGaW5hbCEKKworICAgKiBJZiB5b3Ugd2FudCB0byBkcmF3IHlvdXIgbmV3IHRleHQgdG8gdGhlIGF0dGVudGlvbiBvZiB0aGUKKyAgIG1haW50YWluZXIsIGFkZCAnWFhYJyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGggb3IKKyAgIHNlY3Rpb24uCisKKyAgICogSXQncyBPSyB0byBhZGQganVzdCBhIHZlcnkgYnJpZWYgbm90ZSBhYm91dCBhIGNoYW5nZS4gIEZvcgorICAgZXhhbXBsZTogIlRoZSA6cmVmOmB+c29ja2V0LnRyYW5zbW9ncmlmeSgpYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlCisgICA6bW9kOmBzb2NrZXRgIG1vZHVsZS4iICBUaGUgbWFpbnRhaW5lciB3aWxsIHJlc2VhcmNoIHRoZSBjaGFuZ2UgYW5kCisgICB3cml0ZSB0aGUgbmVjZXNzYXJ5IHRleHQgKGlmIGFwcHJvcHJpYXRlKS4gVGhlIGFkdmFudGFnZSBvZiBkb2luZyB0aGlzCisgICBpcyB0aGF0IGV2ZW4gaWYgbm8gbW9yZSBkZXNjcmlwdGl2ZSB0ZXh0IGlzIGV2ZXIgYWRkZWQsIHJlYWRlcnMgd2lsbCBhdAorICAgbGVhc3QgaGF2ZSBhIG5vdGlmaWNhdGlvbiB0aGF0IHRoZSBuZXcgZmVhdHVyZSBleGlzdHMgYW5kIGEgbGluayB0byB0aGUKKyAgIHJlbGV2YW50IGRvY3VtZW50YXRpb24uCisKKyAgICogWW91IGNhbiBjb21tZW50IG91dCB5b3VyIGFkZGl0aW9ucyBpZiB5b3UgbGlrZSwgYnV0IGl0J3Mgbm90CisgICBuZWNlc3NhcnkgKGVzcGVjaWFsbHkgd2hlbiBhIGZpbmFsIHJlbGVhc2UgaXMgc29tZSBtb250aHMgYXdheSkuCisKKyAgICogQ3JlZGl0IHRoZSBhdXRob3Igb2YgYSBwYXRjaCBvciBidWdmaXguICAgSnVzdCB0aGUgbmFtZSBpcworICAgc3VmZmljaWVudDsgdGhlIGUtbWFpbCBhZGRyZXNzIGlzbid0IG5lY2Vzc2FyeS4KKworICAgKiBJdCdzIGhlbHBmdWwgdG8gYWRkIHRoZSBidWcvcGF0Y2ggbnVtYmVyIGFzIGEgY29tbWVudDoKKworICAgVGhlIDpyZWY6YH5zb2NrZXQudHJhbnNtb2dyaWZ5KClgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUKKyAgIDptb2Q6YHNvY2tldGAgbW9kdWxlLiAoQ29udHJpYnV0ZWQgYnkgUC5ZLiBEZXZlbG9wZXIgaW4gOmlzc3VlOmAxMjM0NWAuKQorCisgICBUaGlzIHNhdmVzIHRoZSBtYWludGFpbmVyIHRoZSBlZmZvcnQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgTWVyY3VyaWFsIGxvZworICAgd2hlbiByZXNlYXJjaGluZyBhIGNoYW5nZS4KKworICAgKiBDcm9zcyByZWZlcmVuY2luZyB0aXA6IDpyZWY6YG1vZC5hdHRyYCB3aWxsIGRpc3BsYXkgYXMgYGBtb2QuYXR0cmBgLAorICAgd2hpbGUgOnJlZjpgfm1vZC5hdHRyYCB3aWxsIGRpc3BsYXkgYXMgYGBhdHRyYGAuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjQsIGNvbXBhcmVkIHRvIDMuMy4KKworLi4gUHl0aG9uIDMuNCB3YXMgcmVsZWFzZWQgb24gVEJELgorCitGb3IgZnVsbCBkZXRhaWxzLCBzZWUgdGhlCitgY2hhbmdlbG9nIDxodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC93aGF0c25ldy9jaGFuZ2Vsb2cuaHRtbD5gXy4KKworLi4gbm90ZTo6IFByZXJlbGVhc2UgdXNlcnMgc2hvdWxkIGJlIGF3YXJlIHRoYXQgdGhpcyBkb2N1bWVudCBpcyBjdXJyZW50bHkgaW4KKyAgIGRyYWZ0IGZvcm0uIEl0IHdpbGwgYmUgdXBkYXRlZCBzdWJzdGFudGlhbGx5IGFzIFB5dGhvbiAzLjQgbW92ZXMgdG93YXJkcworICAgcmVsZWFzZSwgc28gaXQncyB3b3J0aCBjaGVja2luZyBiYWNrIGV2ZW4gYWZ0ZXIgcmVhZGluZyBlYXJsaWVyIHZlcnNpb25zLgorCisKKy4uIHNlZWFsc286OgorCisgICAuLiA6cGVwOmA0WFhgIC0gUHl0aG9uIDMuNCBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy40LgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogTm9uZSB5ZXQuCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgZW51bWA6IEltcGxlbWVudGF0aW9uIG9mIHRoZSA6cGVwOmA0MzVgLgorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogTm9uZSB5ZXQuCisKK0ltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBBIG1vcmUgZWZmaWNpZW50IDptb2Q6YG1hcnNoYWxgIGZvcm1hdCA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE2NDc1Pi4KKworU2lnbmlmaWNhbnRseSBJbXByb3ZlZCBMaWJyYXJ5IE1vZHVsZXM6CisKKyogU0hBLTMgKEtlY2Nhaykgc3VwcG9ydCBmb3IgOm1vZDpgaGFzaGxpYmAuCisqIFRMU3YxLjEgYW5kIFRMU3YxLjIgc3VwcG9ydCBmb3IgOm1vZDpgc3NsYC4KKworU2VjdXJpdHkgaW1wcm92ZW1lbnRzOgorCisqIGNvbW1hbmQgbGluZSBvcHRpb24gZm9yIDpyZWY6YGlzb2xhdGVkIG1vZGUgPHVzaW5nLW9uLW1pc2Mtb3B0aW9ucz5gLAorICA6aXNzdWU6YDE2NDk5YC4KKworUGxlYXNlIHJlYWQgb24gZm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIHVzZXItZmFjaW5nIGNoYW5nZXMuCisKKworUEVQIDQ0NTogQWRkIG5ldyBBUElzIHRvIGN1c3RvbWl6ZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSA6cGVwOmA0NDVgIGFkZHMgbmV3IEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMgKEFQSSkgdG8gY3VzdG9taXplCitQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuCisKKworLi4gX3BlcC00NDI6CisKK1BFUCA0NDI6IFNhZmUgb2JqZWN0IGZpbmFsaXphdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgUEVQIHJlbW92ZXMgdGhlIGN1cnJlbnQgbGltaXRhdGlvbnMgYW5kIHF1aXJrcyBvZiBvYmplY3QgZmluYWxpemF0aW9uLgorV2l0aCBpdCwgb2JqZWN0cyB3aXRoIDptZXRoOmBfX2RlbF9fYCBtZXRob2RzLCBhcyB3ZWxsIGFzIGdlbmVyYXRvcnMKK3dpdGggOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZXMsIGNhbiBiZSBmaW5hbGl6ZWQgd2hlbiB0aGV5IGFyZSBwYXJ0IG9mIGEKK3JlZmVyZW5jZSBjeWNsZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ0MmAgLSBTYWZlIG9iamVjdCBmaW5hbGl6YXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBBbnRvaW5lIFBpdHJvdQorCisKK090aGVyIExhbmd1YWdlIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBzbWFsbGVyIGNoYW5nZXMgbWFkZSB0byB0aGUgY29yZSBQeXRob24gbGFuZ3VhZ2UgYXJlOgorCisqIFVuaWNvZGUgZGF0YWJhc2UgdXBkYXRlZCB0byBVQ0QgdmVyc2lvbiA2LjIuCisKKyogOmZ1bmM6YG1pbmAgYW5kIDpmdW5jOmBtYXhgIG5vdyBhY2NlcHQgYSAqZGVmYXVsdCogYXJndW1lbnQgdGhhdCBjYW4gYmUgdXNlZAorICB0byBzcGVjaWZ5IHRoZSB2YWx1ZSB0aGV5IHJldHVybiBpZiB0aGUgaXRlcmFibGUgdGhleSBhcmUgZXZhbHVhdGluZyBoYXMgbm8KKyAgZWxlbWVudHMuICBDb250cmlidXRlZCBieSBKdWxpYW4gQmVybWFuIGluIDppc3N1ZTpgMTgxMTFgLgorCisKK05ldyBNb2R1bGVzCis9PT09PT09PT09PQorCisuLiBtb2R1bGUgbmFtZQorLi4gLS0tLS0tLS0tLS0KKworKiBOb25lIHlldC4KKworCitJbXByb3ZlZCBNb2R1bGVzCis9PT09PT09PT09PT09PT09CisKKworZGlzCistLS0KKworVGhlIDptb2Q6YGRpc2AgbW9kdWxlIGlzIG5vdyBidWlsdCBhcm91bmQgYW4gOmNsYXNzOmBJbnN0cnVjdGlvbmAgY2xhc3MgdGhhdAorcHJvdmlkZXMgZGV0YWlscyBvZiBpbmRpdmlkdWFsIGJ5dGVjb2RlIG9wZXJhdGlvbnMgYW5kIGEKKzpmdW5jOmBnZXRfaW5zdHJ1Y3Rpb25zYCBpdGVyYXRvciB0aGF0IGVtaXRzIHRoZSBJbnN0cnVjdGlvbiBzdHJlYW0gZm9yIGEKK2dpdmVuIHBpZWNlIG9mIFB5dGhvbiBjb2RlLiBUaGUgdmFyaW91cyBkaXNwbGF5IHRvb2xzIGluIHRoZSA6bW9kOmBkaXNgCittb2R1bGUgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gYmUgYmFzZWQgb24gdGhlc2UgbmV3IGNvbXBvbmVudHMuCisKK1RoZSBuZXcgOmNsYXNzOmBkaXMuQnl0ZWNvZGVgIGNsYXNzIHByb3ZpZGVzIGFuIG9iamVjdC1vcmllbnRlZCBBUEkgZm9yCitpbnNwZWN0aW5nIGJ5dGVjb2RlLCBib3RoIGluIGh1bWFuLXJlYWRhYmxlIGZvcm0gYW5kIGZvciBpdGVyYXRpbmcgb3ZlcgoraW5zdHJ1Y3Rpb25zLgorCisoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuLCBSeWFuIEtlbGx5IGFuZCBUaG9tYXMgS2x1eXZlciBpbiA6aXNzdWU6YDExODE2YCkKKworZG9jdGVzdAorLS0tLS0tLQorCitBZGRlZCA6ZGF0YTpgfmRvY3Rlc3QuRkFJTF9GQVNUYCBmbGFnIHRvIGhhbHQgdGVzdCBydW5uaW5nIGFzIHNvb24gYXMgdGhlIGZpcnN0CitmYWlsdXJlIGlzIGRldGVjdGVkLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkIE11cnJheSBhbmQgRGFuaWVsIFVyYmFuIGluCis6aXNzdWU6YDE2NTIyYC4pCisKK1VwZGF0ZWQgdGhlIGRvY3Rlc3QgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB1c2UgOm1vZDpgYXJncGFyc2VgLCBhbmQgYWRkZWQKK2BgLW9gYCBhbmQgYGAtZmBgIG9wdGlvbnMgdG8gdGhlIGludGVyZmFjZS4gIGBgLW9gYCBhbGxvd3MgZG9jdGVzdCBvcHRpb25zIHRvCitiZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgYW5kIGBgLWZgYCBpcyBhIHNob3J0aGFuZCBmb3IgYGAtbworRkFJTF9GQVNUYGAgKHRvIHBhcmFsbGVsIHRoZSBzaW1pbGFyIG9wdGlvbiBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHVuaXR0ZXN0YAorQ0xJKS4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAxMTM5MGAuKQorCithaWZjCistLS0tCisKK1RoZSA6bWV0aDpgfmFpZmMuZ2V0cGFyYW1zYCBtZXRob2Qgbm93IHJldHVybnMgYSBuYW1lZHR1cGxlIHJhdGhlciB0aGFuIGEKK3BsYWluIHR1cGxlLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE3ODE4YC4pCisKKworZW1haWwKKy0tLS0tCisKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2Agbm93IGFjY2VwdHMgYSAqcG9saWN5KiBhcmd1bWVudCB0bworb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9mIHRoZSBtZXNzYWdlIHdoZW4gZ2VuZXJhdGluZyBhIHN0cmluZworcmVwcmVzZW50YXRpb24gb2YgaXQuICBUaGlzIG1lYW5zIHRoYXQgYGBhc19zdHJpbmdgYCBjYW4gbm93IGJlIHVzZWQgaW4gbW9yZQorY2lyY3Vtc3RhbmNlcywgaW5zdGVhZCBvZiBoYXZpbmcgdG8gY3JlYXRlIGFuZCB1c2UgYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCBpbgorb3JkZXIgdG8gcGFzcyBmb3JtYXR0aW5nIHBhcmFtZXRlcnMgdG8gaXRzIGBgZmxhdHRlbmBgIG1ldGhvZC4KKworTmV3IG1ldGhvZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hc19ieXRlc2AgYWRkZWQgdG8gcHJvZHVjZSBhIGJ5dGVzCityZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBpbiBhIGZhc2hpb24gc2ltaWxhciB0byBob3cgYGBhc19zdHJpbmdgYAorcHJvZHVjZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24uICBJdCBkb2VzIG5vdCBhY2NlcHQgdGhlICptYXhoZWFkZXJsZW4qCithcmd1bWVudCwgYnV0IGRvZXMgYWNjZXB0IHRoZSAqdW5peGZyb20qIGFuZCAqcG9saWN5KiBhcmd1bWVudHMuIFRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5fX2J5dGVzX19gIG1ldGhvZAorY2FsbHMgaXQsIG1lYW5pbmcgdGhhdCBgYGJ5dGVzKG15bXNnKWBgIHdpbGwgbm93IHByb2R1Y2UgdGhlIGludHVpdGl2ZQorcmVzdWx0OiAgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZnVsbHkgZm9ybWF0dGVkIG1lc3NhZ2UuCisKKyhDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAxODYwMGAuKQorCisKK2Z1bmN0b29scworLS0tLS0tLS0tCisKK05ldyA6ZnVuYzpgZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoYCBkZWNvcmF0b3I6IHNlZSB0aGUgOnBlcDpgNDQzYC4KKworCitpbnNwZWN0CistLS0tLS0tCisKKzpmdW5jOmB+aW5zcGVjdC51bndyYXBgIG1ha2VzIGl0IGVhc3kgdG8gdW5yYXZlbCB3cmFwcGVyIGZ1bmN0aW9uIGNoYWlucworY3JlYXRlZCBieSA6ZnVuYzpgZnVuY3Rvb2xzLndyYXBzYCAoYW5kIGFueSBvdGhlciBBUEkgdGhhdCBzZXRzIHRoZQorYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZSBvbiBhIHdyYXBwZXIgZnVuY3Rpb24pLgorCisKK3NtdHBsaWIKKy0tLS0tLS0KKworOmV4YzpgfnNtdHBsaWIuU01UUEV4Y2VwdGlvbmAgaXMgbm93IGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHdoaWNoIGFsbG93cworYm90aCBzb2NrZXQgbGV2ZWwgZXJyb3JzIGFuZCBTTVRQIHByb3RvY29sIGxldmVsIGVycm9ycyB0byBiZSBjYXVnaHQgaW4gb25lCit0cnkvZXhjZXB0IHN0YXRlbWVudCBieSBjb2RlIHRoYXQgb25seSBjYXJlcyB3aGV0aGVyIG9yIG5vdCBhbiBlcnJvciBvY2N1cnJlZC4KKyg6aXNzdWU6YDIxMThgKS4KKworc3NsCistLS0KKworVExTdjEuMSBhbmQgVExTdjEuMiBzdXBwb3J0IChDb250cmlidXRlZCBieSBNaWNoZWxlIE9ycsO5IGFuZCBBbnRvaW5lIFBpdHJvdQoraW4gOmlzc3VlOmAxNjY5MmApCisKK05ldyBkaWFnbm9zdGljIGZ1bmN0aW9ucyA6ZnVuYzpgfnNzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNgLAorOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5jZXJ0X3N0b3JlX3N0YXRzYCBhbmQKKzptZXRoOmB+c3NsLlNTTENvbnRleHQuZ2V0X2NhX2NlcnRzYAorCitBZGQgOmZ1bmM6YHNzbC5lbnVtX2NlcnRfc3RvcmVgIHRvIHJldHJpZXZlIGNlcnRpZmljYXRlcyBhbmQgQ1JMIGZyb20gV2luZG93cycKK2NlcnQgc3RvcmUuCisKKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMTgxNDNgLCA6aXNzdWU6YDE4MTQ3YCBhbmQKKzppc3N1ZTpgMTcxMzRgKQorCit3YXZlCistLS0tCisKK1RoZSA6bWV0aDpgfndhdmUuZ2V0cGFyYW1zYCBtZXRob2Qgbm93IHJldHVybnMgYSBuYW1lZHR1cGxlIHJhdGhlciB0aGFuIGEKK3BsYWluIHR1cGxlLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE3NDg3YC4pCisKKzptZXRoOmB3YXZlLm9wZW5gIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLiAgKENvbnRyaWJ1dGVkCitieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAxNzYxNmAuKQorCitzdGF0CistLS0tCisKK1RoZSA6bW9kOmBzdGF0YCBtb2R1bGUgaXMgbm93IGJhY2tlZCBieSBhIEMgaW1wbGVtZW50YXRpb24gaW4gOm1vZDpgX3N0YXRgLiBBIEMKK2ltcGxlbWVudGF0aW9uIGlzIHJlcXVpcmVkIGFzIG1vc3Qgb2YgdGhlIHZhbHVlcyBhcmVuJ3Qgc3RhbmRhcmRpemVkIGFuZAorcGxhdGZvcm0tZGVwZW5kZW50LiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAxMTAxNmAuKQorCitUaGUgbW9kdWxlIHN1cHBvcnRzIG5ldyBmaWxlIHR5cGVzOiBkb29yLCBldmVudCBwb3J0IGFuZCB3aGl0ZW91dC4KKworY29sb3JzeXMKKy0tLS0tLS0tCisKK1RoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBjb2VmZmljaWVudHMgZm9yIHRoZSBSR0IgLS0tIFlJUSBjb252ZXJzaW9ucyBoYXZlCitiZWVuIGV4cGFuZGVkIHNvIHRoYXQgdGhleSBtYXRjaCB0aGUgRkNDIE5UU0MgdmVyc2lvbnMuICBUaGUgY2hhbmdlIGluCityZXN1bHRzIHNob3VsZCBiZSBsZXNzIHRoYW4gMSUgYW5kIG1heSBiZXR0ZXIgbWF0Y2ggcmVzdWx0cyBmb3VuZCBlbHNld2hlcmUuCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCitNYWpvciBwZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgaGF2ZSBiZWVuIGFkZGVkOgorCisqIFRoZSBVVEYtMzIgZGVjb2RlciBpcyBub3cgM3ggdG8gNHggZmFzdGVyLgorCisKK0J1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitDaGFuZ2VzIHRvIFB5dGhvbidzIGJ1aWxkIHByb2Nlc3MgYW5kIHRvIHRoZSBDIEFQSSBpbmNsdWRlOgorCisqIE5vbmUgeWV0LgorCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworVW5zdXBwb3J0ZWQgT3BlcmF0aW5nIFN5c3RlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogT1MvMgorKiBXaW5kb3dzIDIwMDAKKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDptZXRoOmBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci5pc2JqdW5rYCBhbmQKKyAgOm1ldGg6YGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLmlzYnBvcHVsYXJgIHdlcmUgcmVtb3ZlZDogdXNlIGBgeCBpbiBzbS5ianVua2BgIGFuZAorICBgYHggaW4gc20uYnBvcHVsYXJgYCwgd2hlcmUgKnNtKiBpcyBhIDpjbGFzczpgfmRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyYCBvYmplY3QuCisKKyogOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyYCBpcyBwZW5kaW5nIGRlcHJlY2F0aW9uLiBVc2luZworICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX3RvX2xvYWRgIGFuZAorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnNgIGFsbG93cyBzdWJjbGFzc2VzIG9mIGEgbG9hZGVyCisgIHRvIG1vcmUgZWFzaWx5IGN1c3RvbWl6ZSBtb2R1bGUgbG9hZGluZy4KKworKiBUaGUgOm1vZDpgaW1wYCBtb2R1bGUgaXMgcGVuZGluZyBkZXByZWNhdGlvbi4gVG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGgKKyAgUHl0aG9uIDIvMyBjb2RlIGJhc2VzLCB0aGUgbW9kdWxlJ3MgcmVtb3ZhbCBpcyBjdXJyZW50bHkgbm90IHNjaGVkdWxlZC4KKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogTm9uZSB5ZXQuCisKKworRGVwcmVjYXRlZCBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIE5vbmUgeWV0LgorCisKK1BvcnRpbmcgdG8gUHl0aG9uIDMuNAorPT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBsaXN0cyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjaGFuZ2VzIGFuZCBvdGhlciBidWdmaXhlcwordGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgY29kZS4KKworKiBUaGUgQUJDcyBkZWZpbmVkIGluIDptb2Q6YGltcG9ydGxpYi5hYmNgIG5vdyBlaXRoZXIgcmFpc2UgdGhlIGFwcHJvcHJpYXRlCisgIGV4Y2VwdGlvbiBvciByZXR1cm4gYSBkZWZhdWx0IHZhbHVlIGluc3RlYWQgb2YgcmFpc2luZworICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBibGluZGx5LiBUaGlzIHdpbGwgb25seSBhZmZlY3QgY29kZSBjYWxsaW5nCisgIDpmdW5jOmBzdXBlcmAgYW5kIGZhbGxpbmcgdGhyb3VnaCBhbGwgdGhlIHdheSB0byB0aGUgQUJDcy4gRm9yIGNvbXBhdGliaWxpdHksCisgIGNhdGNoIGJvdGggOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgb3IgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbiBhcyBuZWVkZWQuCisKKyogVGhlIG1vZHVsZSB0eXBlIG5vdyBpbml0aWFsaXplcyB0aGUgOmF0dHI6YF9fcGFja2FnZV9fYCBhbmQgOmF0dHI6YF9fbG9hZGVyX19gCisgIGF0dHJpYnV0ZXMgdG8gYGBOb25lYGAgYnkgZGVmYXVsdC4gVG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGF0dHJpYnV0ZXMgd2VyZSBzZXQKKyAgaW4gYSBiYWNrd2FyZHMtY29tcGF0aWJsZSBmYXNoaW9uLCB1c2UgZS5nLgorICBgYGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIG5vdCBOb25lYGAuCisKKyogOm1ldGg6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyYCBub3cgc2V0cyBgYF9fbG9hZGVyX19gYCBhbmQKKyAgYGBfX3BhY2thZ2VfX2BgIHVuY29uZGl0aW9uYWxseSB0byBwcm9wZXJseSBzdXBwb3J0IHJlbG9hZGluZy4gSWYgdGhpcyBpcyBub3QKKyAgZGVzaXJlZCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gc2V0IHRoZXNlIGF0dHJpYnV0ZXMgbWFudWFsbHkuIFlvdSBjYW4gdXNlCisgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5tb2R1bGVfdG9fbG9hZGAgZm9yIG1vZHVsZSBtYW5hZ2VtZW50LgorCisqIEltcG9ydCBub3cgcmVzZXRzIHJlbGV2YW50IGF0dHJpYnV0ZXMgKGUuZy4gYGBfX25hbWVfX2BgLCBgYF9fbG9hZGVyX19gYCwKKyAgYGBfX3BhY2thZ2VfX2BgLCBgYF9fZmlsZV9fYGAsIGBgX19jYWNoZWRfX2BgKSB1bmNvbmRpdGlvbmFsbHkgd2hlbiByZWxvYWRpbmcuCisKKyogRnJvemVuIHBhY2thZ2VzIG5vIGxvbmdlciBzZXQgYGBfX3BhdGhfX2BgIHRvIGEgbGlzdCBjb250YWluZyB0aGUgcGFja2FnZSBuYW1lCisgIGJ1dCBhbiBlbXB0eSBsaXN0IGluc3RlYWQuIERldGVybWluZyBpZiBhIG1vZHVsZSBpcyBhIHBhY2thZ2Ugc2hvdWxkIGJlIGRvbmUKKyAgdXNpbmcgYGBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJylgYC4KKworKiA6YzpmdW5jOmBQeUVycl9TZXRJbXBvcnRFcnJvcmAgbm93IHNldHMgOmV4YzpgVHlwZUVycm9yYCB3aGVuIGl0cyAqKm1zZyoqCisgIGFyZ3VtZW50IGlzIG5vdCBzZXQuIFByZXZpb3VzbHkgb25seSBgYE5VTExgYCB3YXMgcmV0dXJuZWQgd2l0aCBubyBleGNlcHRpb24KKyAgc2V0LgorCisqIDpmdW5jOmBweV9jb21waWxlLmNvbXBpbGVgIG5vdyByYWlzZXMgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBwYXRoCisgIGl0IHdvdWxkIHdyaXRlIHRvIGlzIGEgc3ltbGluayBvciBhIG5vbi1yZWd1bGFyIGZpbGUuIFRoaXMgaXMgdG8gYWN0IGFzIGEKKyAgd2FybmluZyB0aGF0IGltcG9ydCB3aWxsIG92ZXJ3cml0ZSB0aG9zZSBmaWxlcyB3aXRoIGEgcmVndWxhciBmaWxlIHJlZ2FyZGxlc3MKKyAgb2Ygd2hhdCB0eXBlIG9mIGZpbGUgcGF0aCB0aGV5IHdlcmUgb3JpZ2luYWxseS4KKworKiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIuZ2V0X3NvdXJjZWAgbm8gbG9uZ2VyIHJhaXNlcworICA6ZXhjOmBJbXBvcnRFcnJvcmAgd2hlbiB0aGUgc291cmNlIGNvZGUgYmVpbmcgbG9hZGVkIHRyaWdnZXJzIGEKKyAgOmV4YzpgU3ludGF4RXJyb3JgIG9yIDpleGM6YFVuaWNvZGVEZWNvZGVFcnJvcmAuIEFzIDpleGM6YEltcG9ydEVycm9yYCBpcworICBtZWFudCB0byBiZSByYWlzZWQgb25seSB3aGVuIHNvdXJjZSBjb2RlIGNhbm5vdCBiZSBmb3VuZCBidXQgaXQgc2hvdWxkLCBpdCB3YXMKKyAgZmVsdCB0byBiZSBvdmVyLXJlYWNoaW5nL292ZXJsb2FkaW5nIG9mIHRoYXQgbWVhbmluZyB3aGVuIHRoZSBzb3VyY2UgY29kZSBpcworICBmb3VuZCBidXQgaW1wcm9wZXJseSBzdHJ1Y3R1cmVkLiBJZiB5b3Ugd2VyZSBjYXRjaGluZyBJbXBvcnRFcnJvciBiZWZvcmUgYW5kCisgIHdpc2ggdG8gY29udGludWUgdG8gaWdub3JlIHN5bnRheCBvciBkZWNvZGluZyBpc3N1ZXMsIGNhdGNoIGFsbCB0aHJlZQorICBleGNlcHRpb25zIG5vdy4KKworKiA6ZnVuYzpgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyYCBhbmQgOmZ1bmM6YGZ1bmN0b29scy53cmFwc2Agbm93IGNvcnJlY3RseQorICBzZXQgdGhlIGBgX193cmFwcGVkX19gYCBhdHRyaWJ1dGUgZXZlbiBpZiB0aGUgd3JhcHBlZCBmdW5jdGlvbiBoYWQgYQorICB3cmFwcGVkIGF0dHJpYnV0ZSBzZXQuIFRoaXMgbWVhbnMgYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZXMgbm93IGNvcnJlY3RseQorICBsaW5rIGEgc3RhY2sgb2YgZGVjb3JhdGVkIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBldmVyeSBgYF9fd3JhcHBlZF9fYGAKKyAgYXR0cmlidXRlIGluIHRoZSBjaGFpbiByZWZlcnJpbmcgdG8gdGhlIGlubmVybW9zdCBmdW5jdGlvbi4gSW50cm9zcGVjdGlvbgorICBsaWJyYXJpZXMgdGhhdCBhc3N1bWVkIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgd2FzIGludGVudGlvbmFsIGNhbiB1c2UKKyAgOmZ1bmM6YGluc3BlY3QudW53cmFwYCB0byBnYWluIGVxdWl2YWxlbnQgYmVoYXZpb3VyLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggYmMxMjA2Yi4uMjk5MDJlNCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjQucnN0CiAgICAzLjMucnN0CiAgICAzLjIucnN0CiAgICAzLjEucnN0CmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDAwZTkyZDAuLjY3ZDY3N2IgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC0xODIsOCArMTgyLDkgQEAKICAgICAgICAgICAgICAgICAgIFNldENvbXBfa2luZD05LCBEaWN0Q29tcF9raW5kPTEwLCBHZW5lcmF0b3JFeHBfa2luZD0xMSwKICAgICAgICAgICAgICAgICAgIFlpZWxkX2tpbmQ9MTIsIFlpZWxkRnJvbV9raW5kPTEzLCBDb21wYXJlX2tpbmQ9MTQsCiAgICAgICAgICAgICAgICAgICBDYWxsX2tpbmQ9MTUsIE51bV9raW5kPTE2LCBTdHJfa2luZD0xNywgQnl0ZXNfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIEVsbGlwc2lzX2tpbmQ9MTksIEF0dHJpYnV0ZV9raW5kPTIwLCBTdWJzY3JpcHRfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIFN0YXJyZWRfa2luZD0yMiwgTmFtZV9raW5kPTIzLCBMaXN0X2tpbmQ9MjQsIFR1cGxlX2tpbmQ9MjV9OworICAgICAgICAgICAgICAgICAgTmFtZUNvbnN0YW50X2tpbmQ9MTksIEVsbGlwc2lzX2tpbmQ9MjAsIEF0dHJpYnV0ZV9raW5kPTIxLAorICAgICAgICAgICAgICAgICAgU3Vic2NyaXB0X2tpbmQ9MjIsIFN0YXJyZWRfa2luZD0yMywgTmFtZV9raW5kPTI0LAorICAgICAgICAgICAgICAgICAgTGlzdF9raW5kPTI1LCBUdXBsZV9raW5kPTI2fTsKIHN0cnVjdCBfZXhwciB7CiAgICAgZW51bSBfZXhwcl9raW5kIGtpbmQ7CiAgICAgdW5pb24gewpAQCAtMjc5LDYgKzI4MCwxMCBAQAogICAgICAgICB9IEJ5dGVzOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHNpbmdsZXRvbiB2YWx1ZTsKKyAgICAgICAgfSBOYW1lQ29uc3RhbnQ7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgIGlkZW50aWZpZXIgYXR0cjsKICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CkBAIC0zNTksMTggKzM2NCwxOCBAQAogCiBzdHJ1Y3QgX2FyZ3VtZW50cyB7CiAgICAgYXNkbF9zZXEgKmFyZ3M7Ci0gICAgaWRlbnRpZmllciB2YXJhcmc7Ci0gICAgZXhwcl90eSB2YXJhcmdhbm5vdGF0aW9uOworICAgIGFyZ190eSB2YXJhcmc7CiAgICAgYXNkbF9zZXEgKmt3b25seWFyZ3M7Ci0gICAgaWRlbnRpZmllciBrd2FyZzsKLSAgICBleHByX3R5IGt3YXJnYW5ub3RhdGlvbjsKLSAgICBhc2RsX3NlcSAqZGVmYXVsdHM7CiAgICAgYXNkbF9zZXEgKmt3X2RlZmF1bHRzOworICAgIGFyZ190eSBrd2FyZzsKKyAgICBhc2RsX3NlcSAqZGVmYXVsdHM7CiB9OwogCiBzdHJ1Y3QgX2FyZyB7CiAgICAgaWRlbnRpZmllciBhcmc7CiAgICAgZXhwcl90eSBhbm5vdGF0aW9uOworICAgIGludCBsaW5lbm87CisgICAgaW50IGNvbF9vZmZzZXQ7CiB9OwogCiBzdHJ1Y3QgX2tleXdvcmQgewpAQCAtNTA5LDYgKzUxNCw5IEBACiBleHByX3R5IF9QeV9TdHIoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBOYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9OYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9OYW1lQ29uc3RhbnQoc2luZ2xldG9uIHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEVsbGlwc2lzKGEwLCBhMSwgYTIpIF9QeV9FbGxpcHNpcyhhMCwgYTEsIGEyKQogZXhwcl90eSBfUHlfRWxsaXBzaXMoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKQEAgLTU0MiwxMSArNTUwLDEwIEBACiBleGNlcHRoYW5kbGVyX3R5IF9QeV9FeGNlcHRIYW5kbGVyKGV4cHJfdHkgdHlwZSwgaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7Ci0jZGVmaW5lIGFyZ3VtZW50cyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSBfUHlfYXJndW1lbnRzKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpCi1hcmd1bWVudHNfdHkgX1B5X2FyZ3VtZW50cyhhc2RsX3NlcSAqIGFyZ3MsIGlkZW50aWZpZXIgdmFyYXJnLCBleHByX3R5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJhcmdhbm5vdGF0aW9uLCBhc2RsX3NlcSAqIGt3b25seWFyZ3MsIGlkZW50aWZpZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnLCBleHByX3R5IGt3YXJnYW5ub3RhdGlvbiwgYXNkbF9zZXEgKiBkZWZhdWx0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICoga3dfZGVmYXVsdHMsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgYXJndW1lbnRzKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfYXJndW1lbnRzKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorYXJndW1lbnRzX3R5IF9QeV9hcmd1bWVudHMoYXNkbF9zZXEgKiBhcmdzLCBhcmdfdHkgdmFyYXJnLCBhc2RsX3NlcSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlhcmdzLCBhc2RsX3NlcSAqIGt3X2RlZmF1bHRzLCBhcmdfdHkga3dhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqIGRlZmF1bHRzLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIGFyZyhhMCwgYTEsIGEyKSBfUHlfYXJnKGEwLCBhMSwgYTIpCiBhcmdfdHkgX1B5X2FyZyhpZGVudGlmaWVyIGFyZywgZXhwcl90eSBhbm5vdGF0aW9uLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIGtleXdvcmQoYTAsIGExLCBhMikgX1B5X2tleXdvcmQoYTAsIGExLCBhMikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCA0NGI1YWY3Li42NTE2YmZlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC0yODQsNyArMjg0LDcgQEAKICAgICAgICAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwogCiAgICAgICAgLyoKICAgICAgQ2FsbCBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QsIGNhbGxhYmxlX29iamVjdCwgd2l0aCBhCkBAIC0yOTYsOCArMjk2LDkgQEAKICAgICAgICAqLwogCiAKLSAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kKFB5T2JqZWN0ICpvLCBjaGFyICptZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbE1ldGhvZChQeU9iamVjdCAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIAogICAgICAgIC8qCiAgICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCBtIG9mIG9iamVjdCBvIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKQEAgLTMwOCw4ICszMDksOSBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAotICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICptZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIAogICAgICAgIC8qCiAgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCkBAIC0zMTcsMTMgKzMxOSwxNiBAQAogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9JZGVudGlmaWVyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKQEAgLTMzOSwxMSArMzQ0LDEwIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOwotICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKFB5T2JqZWN0ICpvLAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKIAotCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgogICAgICBDIGFyZ3VtZW50cy4gIFRoZSBDIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgYXMgUHlPYmplY3QgKgpAQCAtNDA0LDggKzQwOCw5IEBACiAjZGVmaW5lIFB5T2JqZWN0X0xlbmd0aCBQeU9iamVjdF9TaXplCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSAgICAgUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlPYmplY3RfTGVuZ3RoSGludChQeU9iamVjdCAqbywgUHlfc3NpemVfdCk7CisgICAgIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSGFzTGVuKFB5T2JqZWN0ICpvKTsKICNlbmRpZgorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeU9iamVjdF9MZW5ndGhIaW50KFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90KTsKIAogICAgICAgIC8qCiAgICAgIEd1ZXNzIHRoZSBzaXplIG9mIG9iamVjdCBvIHVzaW5nIGxlbihvKSBvciBvLl9fbGVuZ3RoX2hpbnRfXygpLgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hc2RsLmggYi9JbmNsdWRlL2FzZGwuaAppbmRleCA2YmY2MThmLi4wNzg5YWQ4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2FzZGwuaAorKysgYi9JbmNsdWRlL2FzZGwuaApAQCAtNSw2ICs1LDcgQEAKIHR5cGVkZWYgUHlPYmplY3QgKiBzdHJpbmc7CiB0eXBlZGVmIFB5T2JqZWN0ICogYnl0ZXM7CiB0eXBlZGVmIFB5T2JqZWN0ICogb2JqZWN0OwordHlwZWRlZiBQeU9iamVjdCAqIHNpbmdsZXRvbjsKIAogLyogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXNkbF9jLnB5IHdhcyBjb21wbGV0ZWx5CiAgICBpbmRlcGVuZGVudCBvZiBQeXRob24sIGJ1dCBpdCBpcyBhIGdvYWwgdGhlIHJlcXVpcmVzIHRvbyBtdWNoIHdvcmsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGljdG9iamVjdC5oIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKaW5kZXggZDg5YWFjOC4uMTZiZDFkNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kaWN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKQEAgLTUzLDYgKzUzLDggQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9TZXREZWZhdWx0KAorICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKml0ZW0pOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RGljdF9DbGVhcihQeU9iamVjdCAqbXApOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mcmFtZW9iamVjdC5oIGIvSW5jbHVkZS9mcmFtZW9iamVjdC5oCmluZGV4IDMzZjczYWYuLjE4NDE5YmYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnJhbWVvYmplY3QuaAorKysgYi9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgbm9uLWdlbmVyYXRvciBmcmFtZXMuIFNlZSB0aGUgc2F2ZV9leGNfc3RhdGUgYW5kIHN3YXBfZXhjX3N0YXRlCiAgICAgICAgICAgIGZ1bmN0aW9ucyBpbiBjZXZhbC5jIGZvciBkZXRhaWxzIG9mIHRoZWlyIHVzZS4gKi8KICAgICBQeU9iamVjdCAqZl9leGNfdHlwZSwgKmZfZXhjX3ZhbHVlLCAqZl9leGNfdHJhY2ViYWNrOworICAgIC8qIEJvcnJvd2VkIHJlZmVyZW5jZSB0byBhIGdlbmVyYXRvciwgb3IgTlVMTCAqLworICAgIFB5T2JqZWN0ICpmX2dlbjsKIAogICAgIFB5VGhyZWFkU3RhdGUgKmZfdHN0YXRlOwogICAgIGludCBmX2xhc3RpOyAgICAgICAgICAgICAgICAvKiBMYXN0IGluc3RydWN0aW9uIGlmIGNhbGxlZCAqLwpAQCAtNDYsNiArNDgsNyBAQAogICAgICAgIGJ5dGVjb2RlIGluZGV4LiAqLwogICAgIGludCBmX2xpbmVubzsgICAgICAgICAgICAgICAvKiBDdXJyZW50IGxpbmUgbnVtYmVyICovCiAgICAgaW50IGZfaWJsb2NrOyAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGZfYmxvY2tzdGFjayAqLworICAgIGNoYXIgZl9leGVjdXRpbmc7ICAgICAgICAgICAvKiB3aGV0aGVyIHRoZSBmcmFtZSBpcyBzdGlsbCBleGVjdXRpbmcgKi8KICAgICBQeVRyeUJsb2NrIGZfYmxvY2tzdGFja1tDT19NQVhCTE9DS1NdOyAvKiBmb3IgdHJ5IGFuZCBsb29wIGJsb2NrcyAqLwogICAgIFB5T2JqZWN0ICpmX2xvY2Fsc3BsdXNbMV07ICAvKiBsb2NhbHMrc3RhY2ssIGR5bmFtaWNhbGx5IHNpemVkICovCiB9IFB5RnJhbWVPYmplY3Q7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCBlZDQ1MWJhLi42NWYxZWNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTM2LDYgKzM2LDggQEAKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKIFB5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5R2VuX0ZpbmFsaXplKFB5T2JqZWN0ICpzZWxmKTsKKwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbW1hci5oIGIvSW5jbHVkZS9ncmFtbWFyLmgKaW5kZXggODQyNmRhMy4uODYyZjZhOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtbWFyLmgKKysrIGIvSW5jbHVkZS9ncmFtbWFyLmgKQEAgLTc2LDcgKzc2LDcgQEAKIAogaW50IGFkZGxhYmVsKGxhYmVsbGlzdCAqbGwsIGludCB0eXBlLCBjaGFyICpzdHIpOwogaW50IGZpbmRsYWJlbChsYWJlbGxpc3QgKmxsLCBpbnQgdHlwZSwgY2hhciAqc3RyKTsKLWNoYXIgKlB5R3JhbW1hcl9MYWJlbFJlcHIobGFiZWwgKmxiKTsKK2NvbnN0IGNoYXIgKlB5R3JhbW1hcl9MYWJlbFJlcHIobGFiZWwgKmxiKTsKIHZvaWQgdHJhbnNsYXRlbGFiZWxzKGdyYW1tYXIgKmcpOwogCiB2b2lkIGFkZGZpcnN0c2V0cyhncmFtbWFyICpnKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW1wb3J0LmggYi9JbmNsdWRlL2ltcG9ydC5oCmluZGV4IGZkYzI3MzMuLjkwMDQ5ZTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW1wb3J0LmgKKysrIGIvSW5jbHVkZS9pbXBvcnQuaApAQCAtMTEzLDE1ICsxMTMsMTUgQEAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogc3RydWN0IF9mcm96ZW4gewotICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAvKiBBU0NJSSBlbmNvZGVkIHN0cmluZyAqLwotICAgIHVuc2lnbmVkIGNoYXIgKmNvZGU7CisgICAgY29uc3QgY2hhciAqbmFtZTsgICAgICAgICAgICAgICAgIC8qIEFTQ0lJIGVuY29kZWQgc3RyaW5nICovCisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29kZTsKICAgICBpbnQgc2l6ZTsKIH07CiAKIC8qIEVtYmVkZGluZyBhcHBzIG1heSBjaGFuZ2UgdGhpcyBwb2ludGVyIHRvIHBvaW50IHRvIHRoZWlyIGZhdm9yaXRlCiAgICBjb2xsZWN0aW9uIG9mIGZyb3plbiBtb2R1bGVzOiAqLwogCi1QeUFQSV9EQVRBKHN0cnVjdCBfZnJvemVuICopIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CitQeUFQSV9EQVRBKGNvbnN0IHN0cnVjdCBfZnJvemVuICopIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IGJjYjkzYjkuLjI0Y2Y0MDEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC01Miw2ICs1MiwxOSBAQAogI2Vycm9yICJzaXplb2YocGlkX3QpIGlzIG5laXRoZXIgc2l6ZW9mKGludCksIHNpemVvZihsb25nKSBvciBzaXplb2YobG9uZyBsb25nKSIKICNlbmRpZiAvKiBTSVpFT0ZfUElEX1QgKi8KIAorI2lmIFNJWkVPRl9WT0lEX1AgPT0gU0laRU9GX0lOVAorIyAgZGVmaW5lIF9QeV9QQVJTRV9JTlRQVFIgImkiCisjICBkZWZpbmUgX1B5X1BBUlNFX1VJTlRQVFIgIkkiCisjZWxpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HCisjICBkZWZpbmUgX1B5X1BBUlNFX0lOVFBUUiAibCIKKyMgIGRlZmluZSBfUHlfUEFSU0VfVUlOVFBUUiAiayIKKyNlbGlmIGRlZmluZWQoU0laRU9GX0xPTkdfTE9ORykgJiYgU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HCisjICBkZWZpbmUgX1B5X1BBUlNFX0lOVFBUUiAiTCIKKyMgIGRlZmluZSBfUHlfUEFSU0VfVUlOVFBUUiAiSyIKKyNlbHNlCisjICBlcnJvciAidm9pZCogZGlmZmVyZW50IGluIHNpemUgZnJvbSBpbnQsIGxvbmcgYW5kIGxvbmcgbG9uZyIKKyNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QICovCisKIC8qIFVzZWQgYnkgUHl0aG9uL215c3RydG91bC5jLiAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQSh1bnNpZ25lZCBjaGFyKSBfUHlMb25nX0RpZ2l0VmFsdWVbMjU2XTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWFyc2hhbC5oIGIvSW5jbHVkZS9tYXJzaGFsLmgKaW5kZXggZTk2ZDA2Mi4uMGM2OTY1NSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tYXJzaGFsLmgKKysrIGIvSW5jbHVkZS9tYXJzaGFsLmgKQEAgLTcsNyArNyw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi0jZGVmaW5lIFB5X01BUlNIQUxfVkVSU0lPTiAyCisjZGVmaW5lIFB5X01BUlNIQUxfVkVSU0lPTiAzCiAKIFB5QVBJX0ZVTkModm9pZCkgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZShsb25nLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvRmlsZShQeU9iamVjdCAqLCBGSUxFICosIGludCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHN1cHBvcnQuaCBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCmluZGV4IGVjZjFkY2MuLmFiNzI1ZjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oCisrKyBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCkBAIC0yNiw3ICsyNiw3IEBACiAvKiBEdWUgdG8gYSBnbGl0Y2ggaW4gMy4yLCB0aGUgX1NpemVUIHZlcnNpb25zIHdlcmVuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgRExMLiAqLwogI2lmICFkZWZpbmVkKFBZX1NTSVpFX1RfQ0xFQU4pIHx8ICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2VUdXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLikgUHlfRk9STUFUX1BBUlNFVFVQTEUoUHlBcmdfUGFyc2VUdXBsZSwgMiwgMyk7CitQeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2VUdXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7CiBQeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMoUHlPYmplY3QgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCAzODdjYWRiLi4yNWI5NmU4IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgIFB5QnVmZmVyUHJvY3MgKnRwX2FzX2J1ZmZlcjsKIAogICAgIC8qIEZsYWdzIHRvIGRlZmluZSBwcmVzZW5jZSBvZiBvcHRpb25hbC9leHBhbmRlZCBmZWF0dXJlcyAqLwotICAgIGxvbmcgdHBfZmxhZ3M7CisgICAgdW5zaWduZWQgbG9uZyB0cF9mbGFnczsKIAogICAgIGNvbnN0IGNoYXIgKnRwX2RvYzsgLyogRG9jdW1lbnRhdGlvbiBzdHJpbmcgKi8KIApAQCAtNDA4LDYgKzQwOCw4IEBACiAgICAgLyogVHlwZSBhdHRyaWJ1dGUgY2FjaGUgdmVyc2lvbiB0YWcuIEFkZGVkIGluIHZlcnNpb24gMi42ICovCiAgICAgdW5zaWduZWQgaW50IHRwX3ZlcnNpb25fdGFnOwogCisgICAgZGVzdHJ1Y3RvciB0cF9maW5hbGl6ZTsKKwogI2lmZGVmIENPVU5UX0FMTE9DUwogICAgIC8qIHRoZXNlIG11c3QgYmUgbGFzdCBhbmQgbmV2ZXIgZXhwbGljaXRseSBpbml0aWFsaXplZCAqLwogICAgIFB5X3NzaXplX3QgdHBfYWxsb2NzOwpAQCAtNDI4LDcgKzQzMCw3IEBACiAgICAgY29uc3QgY2hhciogbmFtZTsKICAgICBpbnQgYmFzaWNzaXplOwogICAgIGludCBpdGVtc2l6ZTsKLSAgICBpbnQgZmxhZ3M7CisgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgIFB5VHlwZV9TbG90ICpzbG90czsgLyogdGVybWluYXRlZCBieSBzbG90PT0wLiAqLwogfSBQeVR5cGVfU3BlYzsKIApAQCAtNDcwLDcgKzQ3Miw3IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlCYXNlT2JqZWN0X1R5cGU7IC8qIGJ1aWx0LWluICdvYmplY3QnICovCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTdXBlcl9UeXBlOyAvKiBidWlsdC1pbiAnc3VwZXInICovCiAKLVB5QVBJX0ZVTkMobG9uZykgUHlUeXBlX0dldEZsYWdzKFB5VHlwZU9iamVjdCopOworUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nKSBQeVR5cGVfR2V0RmxhZ3MoUHlUeXBlT2JqZWN0Kik7CiAKICNkZWZpbmUgUHlUeXBlX0NoZWNrKG9wKSBcCiAgICAgUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19UWVBFX1NVQkNMQVNTKQpAQCAtNTI5LDYgKzUzMSw4IEBACiBQeUFQSV9GVU5DKGludCkgUHlDYWxsYWJsZV9DaGVjayhQeU9iamVjdCAqKTsKIAogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9DbGVhcldlYWtSZWZzKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9DYWxsRmluYWxpemVyKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhQeU9iamVjdCAqKTsKIAogLyogU2FtZSBhcyBQeU9iamVjdF9HZW5lcmlje0dldCxTZXR9QXR0ciwgYnV0IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZXMKICAgIGRpY3QgYXMgdGhlIGxhc3QgcGFyYW1ldGVyLiAqLwpAQCAtNjAzLDUwICs2MDcsNTUgQEAKICovCiAKIC8qIFNldCBpZiB0aGUgdHlwZSBvYmplY3QgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkICovCi0jZGVmaW5lIFB5X1RQRkxBR1NfSEVBUFRZUEUgKDFMPDw5KQorI2RlZmluZSBQeV9UUEZMQUdTX0hFQVBUWVBFICgxVUwgPDwgOSkKIAogLyogU2V0IGlmIHRoZSB0eXBlIGFsbG93cyBzdWJjbGFzc2luZyAqLwotI2RlZmluZSBQeV9UUEZMQUdTX0JBU0VUWVBFICgxTDw8MTApCisjZGVmaW5lIFB5X1RQRkxBR1NfQkFTRVRZUEUgKDFVTCA8PCAxMCkKIAogLyogU2V0IGlmIHRoZSB0eXBlIGlzICdyZWFkeScgLS0gZnVsbHkgaW5pdGlhbGl6ZWQgKi8KLSNkZWZpbmUgUHlfVFBGTEFHU19SRUFEWSAoMUw8PDEyKQorI2RlZmluZSBQeV9UUEZMQUdTX1JFQURZICgxVUwgPDwgMTIpCiAKIC8qIFNldCB3aGlsZSB0aGUgdHlwZSBpcyBiZWluZyAncmVhZGllZCcsIHRvIHByZXZlbnQgcmVjdXJzaXZlIHJlYWR5IGNhbGxzICovCi0jZGVmaW5lIFB5X1RQRkxBR1NfUkVBRFlJTkcgKDFMPDwxMykKKyNkZWZpbmUgUHlfVFBGTEFHU19SRUFEWUlORyAoMVVMIDw8IDEzKQogCiAvKiBPYmplY3RzIHN1cHBvcnQgZ2FyYmFnZSBjb2xsZWN0aW9uIChzZWUgb2JqaW1wLmgpICovCi0jZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9HQyAoMUw8PDE0KQorI2RlZmluZSBQeV9UUEZMQUdTX0hBVkVfR0MgKDFVTCA8PCAxNCkKIAogLyogVGhlc2UgdHdvIGJpdHMgYXJlIHByZXNlcnZlZCBmb3IgU3RhY2tsZXNzIFB5dGhvbiwgbmV4dCBhZnRlciB0aGlzIGlzIDE3ICovCiAjaWZkZWYgU1RBQ0tMRVNTCi0jZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9TVEFDS0xFU1NfRVhURU5TSU9OICgzTDw8MTUpCisjZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9TVEFDS0xFU1NfRVhURU5TSU9OICgzVUwgPDwgMTUpCiAjZWxzZQogI2RlZmluZSBQeV9UUEZMQUdTX0hBVkVfU1RBQ0tMRVNTX0VYVEVOU0lPTiAwCiAjZW5kaWYKIAogLyogT2JqZWN0cyBzdXBwb3J0IHR5cGUgYXR0cmlidXRlIGNhY2hlICovCi0jZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRyAgICgxTDw8MTgpCi0jZGVmaW5lIFB5X1RQRkxBR1NfVkFMSURfVkVSU0lPTl9UQUcgICgxTDw8MTkpCisjZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRyAgICgxVUwgPDwgMTgpCisjZGVmaW5lIFB5X1RQRkxBR1NfVkFMSURfVkVSU0lPTl9UQUcgICgxVUwgPDwgMTkpCiAKIC8qIFR5cGUgaXMgYWJzdHJhY3QgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgKi8KLSNkZWZpbmUgUHlfVFBGTEFHU19JU19BQlNUUkFDVCAoMUw8PDIwKQorI2RlZmluZSBQeV9UUEZMQUdTX0lTX0FCU1RSQUNUICgxVUwgPDwgMjApCiAKIC8qIFRoZXNlIGZsYWdzIGFyZSB1c2VkIHRvIGRldGVybWluZSBpZiBhIHR5cGUgaXMgYSBzdWJjbGFzcy4gKi8KLSNkZWZpbmUgUHlfVFBGTEFHU19JTlRfU1VCQ0xBU1MgICAgICAgICAoMUw8PDIzKQotI2RlZmluZSBQeV9UUEZMQUdTX0xPTkdfU1VCQ0xBU1MgICAgICAgICgxTDw8MjQpCi0jZGVmaW5lIFB5X1RQRkxBR1NfTElTVF9TVUJDTEFTUyAgICAgICAgKDFMPDwyNSkKLSNkZWZpbmUgUHlfVFBGTEFHU19UVVBMRV9TVUJDTEFTUyAgICAgICAoMUw8PDI2KQotI2RlZmluZSBQeV9UUEZMQUdTX0JZVEVTX1NVQkNMQVNTICAgICAgICgxTDw8MjcpCi0jZGVmaW5lIFB5X1RQRkxBR1NfVU5JQ09ERV9TVUJDTEFTUyAgICAgKDFMPDwyOCkKLSNkZWZpbmUgUHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTICAgICAgICAoMUw8PDI5KQotI2RlZmluZSBQeV9UUEZMQUdTX0JBU0VfRVhDX1NVQkNMQVNTICAgICgxTDw8MzApCi0jZGVmaW5lIFB5X1RQRkxBR1NfVFlQRV9TVUJDTEFTUyAgICAgICAgKDFMPDwzMSkKKyNkZWZpbmUgUHlfVFBGTEFHU19MT05HX1NVQkNMQVNTICAgICAgICAoMVVMIDw8IDI0KQorI2RlZmluZSBQeV9UUEZMQUdTX0xJU1RfU1VCQ0xBU1MgICAgICAgICgxVUwgPDwgMjUpCisjZGVmaW5lIFB5X1RQRkxBR1NfVFVQTEVfU1VCQ0xBU1MgICAgICAgKDFVTCA8PCAyNikKKyNkZWZpbmUgUHlfVFBGTEFHU19CWVRFU19TVUJDTEFTUyAgICAgICAoMVVMIDw8IDI3KQorI2RlZmluZSBQeV9UUEZMQUdTX1VOSUNPREVfU1VCQ0xBU1MgICAgICgxVUwgPDwgMjgpCisjZGVmaW5lIFB5X1RQRkxBR1NfRElDVF9TVUJDTEFTUyAgICAgICAgKDFVTCA8PCAyOSkKKyNkZWZpbmUgUHlfVFBGTEFHU19CQVNFX0VYQ19TVUJDTEFTUyAgICAoMVVMIDw8IDMwKQorI2RlZmluZSBQeV9UUEZMQUdTX1RZUEVfU1VCQ0xBU1MgICAgICAgICgxVUwgPDwgMzEpCiAKICNkZWZpbmUgUHlfVFBGTEFHU19ERUZBVUxUICAoIFwKICAgICAgICAgICAgICAgICAgUHlfVFBGTEFHU19IQVZFX1NUQUNLTEVTU19FWFRFTlNJT04gfCBcCiAgICAgICAgICAgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRyB8IFwKICAgICAgICAgICAgICAgICAwKQogCisvKiBOT1RFOiBUaGUgZm9sbG93aW5nIGZsYWdzIHJldXNlIGxvd2VyIGJpdHMgKHJlbW92ZWQgYXMgcGFydCBvZiB0aGUKKyAqIFB5dGhvbiAzLjAgdHJhbnNpdGlvbikuICovCisKKy8qIFR5cGUgc3RydWN0dXJlIGhhcyB0cF9maW5hbGl6ZSBtZW1iZXIgKDMuNCkgKi8KKyNkZWZpbmUgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFICgxVUwgPDwgMCkKKwogI2lmZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5VHlwZV9IYXNGZWF0dXJlKHQsZikgICgoUHlUeXBlX0dldEZsYWdzKHQpICYgKGYpKSAhPSAwKQogI2Vsc2UKQEAgLTY4MSwxMiArNjkwLDYgQEAKIGNvbXBsaWNhdGlvbnMgaW4gdGhlIGRlYWxsb2NhdGlvbiBmdW5jdGlvbi4gIChUaGlzIGlzIGFjdHVhbGx5IGEKIGRlY2lzaW9uIHRoYXQncyB1cCB0byB0aGUgaW1wbGVtZW50ZXIgb2YgZWFjaCBuZXcgdHlwZSBzbyBpZiB5b3Ugd2FudCwKIHlvdSBjYW4gY291bnQgc3VjaCByZWZlcmVuY2VzIHRvIHRoZSB0eXBlIG9iamVjdC4pCi0KLSoqKiBXQVJOSU5HKioqIFRoZSBQeV9ERUNSRUYgbWFjcm8gbXVzdCBoYXZlIGEgc2lkZS1lZmZlY3QtZnJlZSBhcmd1bWVudAotc2luY2UgaXQgbWF5IGV2YWx1YXRlIGl0cyBhcmd1bWVudCBtdWx0aXBsZSB0aW1lcy4gIChUaGUgYWx0ZXJuYXRpdmUKLXdvdWxkIGJlIHRvIG1hY2UgaXQgYSBwcm9wZXIgZnVuY3Rpb24gb3IgYXNzaWduIGl0IHRvIGEgZ2xvYmFsIHRlbXBvcmFyeQotdmFyaWFibGUgZmlyc3QsIGJvdGggb2Ygd2hpY2ggYXJlIHNsb3dlcjsgYW5kIGluIGEgbXVsdGktdGhyZWFkZWQKLWVudmlyb25tZW50IHRoZSBnbG9iYWwgdmFyaWFibGUgdHJpY2sgaXMgbm90IHNhZmUuKQogKi8KIAogLyogRmlyc3QgZGVmaW5lIGEgcGlsZSBvZiBzaW1wbGUgaGVscGVyIG1hY3Jvcywgb25lIHNldCBwZXIgc3BlY2lhbApAQCAtNzY1LDE1ICs3NjgsMTYgQEAKIAogI2RlZmluZSBQeV9JTkNSRUYob3ApICggICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIF9QeV9JTkNfUkVGVE9UQUwgIF9QeV9SRUZfREVCVUdfQ09NTUEgICAgICAgXAotICAgICgoUHlPYmplY3QqKShvcCkpLT5vYl9yZWZjbnQrKykKKyAgICAoKFB5T2JqZWN0ICopKG9wKSktPm9iX3JlZmNudCsrKQogCiAjZGVmaW5lIFB5X0RFQ1JFRihvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeU9iamVjdCAqX3B5X2RlY3JlZl90bXAgPSAoUHlPYmplY3QgKikob3ApOyAgICBcCiAgICAgICAgIGlmIChfUHlfREVDX1JFRlRPVEFMICBfUHlfUkVGX0RFQlVHX0NPTU1BICAgICAgIFwKLSAgICAgICAgLS0oKFB5T2JqZWN0Kikob3ApKS0+b2JfcmVmY250ICE9IDApICAgICAgICAgICAgXAotICAgICAgICAgICAgX1B5X0NIRUNLX1JFRkNOVChvcCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC0tKF9weV9kZWNyZWZfdG1wKS0+b2JfcmVmY250ICE9IDApICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9QeV9DSEVDS19SRUZDTlQoX3B5X2RlY3JlZl90bXApICAgICAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9QeV9EZWFsbG9jKChQeU9iamVjdCAqKShvcCkpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX1B5X0RlYWxsb2MoX3B5X2RlY3JlZl90bXApOyAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKIC8qIFNhZmVseSBkZWNyZWYgYG9wYCBhbmQgc2V0IGBvcGAgdG8gTlVMTCwgZXNwZWNpYWxseSB1c2VmdWwgaW4gdHBfY2xlYXIKQEAgLTgxMiwxNiArODE2LDI3IEBACiAgKi8KICNkZWZpbmUgUHlfQ0xFQVIob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKG9wKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFB5T2JqZWN0ICpfcHlfdG1wID0gKFB5T2JqZWN0ICopKG9wKTsgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICpfcHlfdG1wID0gKFB5T2JqZWN0ICopKG9wKTsgICBcCisgICAgICAgIGlmIChfcHlfdG1wICE9IE5VTEwpIHsgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAob3ApID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBQeV9ERUNSRUYoX3B5X3RtcCk7ICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAogLyogTWFjcm9zIHRvIHVzZSBpbiBjYXNlIHRoZSBvYmplY3QgcG9pbnRlciBtYXkgYmUgTlVMTDogKi8KLSNkZWZpbmUgUHlfWElOQ1JFRihvcCkgZG8geyBpZiAoKG9wKSA9PSBOVUxMKSA7IGVsc2UgUHlfSU5DUkVGKG9wKTsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgUHlfWERFQ1JFRihvcCkgZG8geyBpZiAoKG9wKSA9PSBOVUxMKSA7IGVsc2UgUHlfREVDUkVGKG9wKTsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgUHlfWElOQ1JFRihvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKl9weV94aW5jcmVmX3RtcCA9IChQeU9iamVjdCAqKShvcCk7IFwKKyAgICAgICAgaWYgKF9weV94aW5jcmVmX3RtcCAhPSBOVUxMKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFB5X0lOQ1JFRihfcHlfeGluY3JlZl90bXApOyAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisjZGVmaW5lIFB5X1hERUNSRUYob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICpfcHlfeGRlY3JlZl90bXAgPSAoUHlPYmplY3QgKikob3ApOyBcCisgICAgICAgIGlmIChfcHlfeGRlY3JlZl90bXAgIT0gTlVMTCkgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBQeV9ERUNSRUYoX3B5X3hkZWNyZWZfdG1wKTsgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKIAogLyoKIFRoZXNlIGFyZSBwcm92aWRlZCBhcyBjb252ZW5pZW5jZXMgdG8gUHl0aG9uIHJ1bnRpbWUgZW1iZWRkZXJzLCBzbyB0aGF0CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDNkNWY1MDkuLjI2NGMxMjAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC05NCw1MSArOTQsMjcgQEAKICAgIHRoZSBvYmplY3QgZ2V0cyBpbml0aWFsaXplZCB2aWEgUHlPYmplY3Rfe0luaXQsIEluaXRWYXJ9IGFmdGVyIG9idGFpbmluZwogICAgdGhlIHJhdyBtZW1vcnkuCiAqLwotUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X01hbGxvYyhzaXplX3QpOwotUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X1JlYWxsb2Modm9pZCAqLCBzaXplX3QpOwotUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9GcmVlKHZvaWQgKik7CitQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfTWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfRnJlZSh2b2lkICpwdHIpOwogCisvKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrcywgcmVnYXJkbGVzcyBvZiBzaXplICovCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3Modm9pZCk7CiAKIC8qIE1hY3JvcyAqLwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKICNlbmRpZiAvKiAjaWZuZGVmIFB5X0xJTUlURURfQVBJICovCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCi1QeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnTWFsbG9jKHNpemVfdCBuYnl0ZXMpOwotUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG5ieXRlcyk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0ZyZWUodm9pZCAqcCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzKGNvbnN0IHZvaWQgKnApOwotUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdDaGVja0FkZHJlc3MoY29uc3Qgdm9pZCAqcCk7Ci1QeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKGNoYXIgYXBpLCBzaXplX3QgbmJ5dGVzKTsKLVB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdSZWFsbG9jQXBpKGNoYXIgYXBpLCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZUFwaShjaGFyIGFwaSwgdm9pZCAqcCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0NoZWNrQWRkcmVzc0FwaShjaGFyIGFwaSwgY29uc3Qgdm9pZCAqcCk7Ci1QeUFQSV9GVU5DKHZvaWQgKikgX1B5TWVtX0RlYnVnTWFsbG9jKHNpemVfdCBuYnl0ZXMpOwotUHlBUElfRlVOQyh2b2lkICopIF9QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG5ieXRlcyk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqcCk7Ci0jZGVmaW5lIFB5T2JqZWN0X01BTExPQyAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvYwotI2RlZmluZSBQeU9iamVjdF9NYWxsb2MgICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2MKLSNkZWZpbmUgUHlPYmplY3RfUkVBTExPQyAgICAgICAgX1B5T2JqZWN0X0RlYnVnUmVhbGxvYwotI2RlZmluZSBQeU9iamVjdF9SZWFsbG9jICAgICAgICBfUHlPYmplY3RfRGVidWdSZWFsbG9jCi0jZGVmaW5lIFB5T2JqZWN0X0ZSRUUgICAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z0ZyZWUKLSNkZWZpbmUgUHlPYmplY3RfRnJlZSAgICAgICAgICAgX1B5T2JqZWN0X0RlYnVnRnJlZQorI2VuZGlmCiAKLSNlbHNlICAgLyogV0lUSF9QWU1BTExPQyAmJiAhIFBZTUFMTE9DX0RFQlVHICovCisvKiBNYWNyb3MgKi8KICNkZWZpbmUgUHlPYmplY3RfTUFMTE9DICAgICAgICAgUHlPYmplY3RfTWFsbG9jCiAjZGVmaW5lIFB5T2JqZWN0X1JFQUxMT0MgICAgICAgIFB5T2JqZWN0X1JlYWxsb2MKICNkZWZpbmUgUHlPYmplY3RfRlJFRSAgICAgICAgICAgUHlPYmplY3RfRnJlZQotI2VuZGlmCi0KLSNlbHNlICAgLyogISBXSVRIX1BZTUFMTE9DICovCi0jZGVmaW5lIFB5T2JqZWN0X01BTExPQyAgICAgICAgIFB5TWVtX01BTExPQwotI2RlZmluZSBQeU9iamVjdF9SRUFMTE9DICAgICAgICBQeU1lbV9SRUFMTE9DCi0jZGVmaW5lIFB5T2JqZWN0X0ZSRUUgICAgICAgICAgIFB5TWVtX0ZSRUUKLQotI2VuZGlmICAvKiBXSVRIX1BZTUFMTE9DICovCi0KICNkZWZpbmUgUHlPYmplY3RfRGVsICAgICAgICAgICAgUHlPYmplY3RfRnJlZQotI2RlZmluZSBQeU9iamVjdF9ERUwgICAgICAgICAgICBQeU9iamVjdF9GUkVFCisjZGVmaW5lIFB5T2JqZWN0X0RFTCAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUKKwogCiAvKgogICogR2VuZXJpYyBvYmplY3QgYWxsb2NhdG9yIGludGVyZmFjZQpAQCAtMjIyLDYgKzE5OCwyNiBAQAogICAgY29uc3RydWN0b3IgeW91IHdvdWxkIHN0YXJ0IGRpcmVjdGx5IHdpdGggUHlPYmplY3RfSW5pdC9Jbml0VmFyCiAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogdXNlciBjb250ZXh0IHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIDIgZnVuY3Rpb25zICovCisgICAgdm9pZCAqY3R4OworCisgICAgLyogYWxsb2NhdGUgYW4gYXJlbmEgb2Ygc2l6ZSBieXRlcyAqLworICAgIHZvaWQqICgqYWxsb2MpICh2b2lkICpjdHgsIHNpemVfdCBzaXplKTsKKworICAgIC8qIGZyZWUgYW4gYXJlbmEgKi8KKyAgICB2b2lkICgqZnJlZSkgKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Cit9IFB5T2JqZWN0QXJlbmFBbGxvY2F0b3I7CisKKy8qIEdldCB0aGUgYXJlbmEgYWxsb2NhdG9yLiAqLworUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9HZXRBcmVuYUFsbG9jYXRvcihQeU9iamVjdEFyZW5hQWxsb2NhdG9yICphbGxvY2F0b3IpOworCisvKiBTZXQgdGhlIGFyZW5hIGFsbG9jYXRvci4gKi8KK1B5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfU2V0QXJlbmFBbGxvY2F0b3IoUHlPYmplY3RBcmVuYUFsbG9jYXRvciAqYWxsb2NhdG9yKTsKKyNlbmRpZgorCisKIC8qCiAgKiBHYXJiYWdlIENvbGxlY3Rpb24gU3VwcG9ydAogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTIzMCw2ICsyMjYsMTAgQEAKIC8qIEMgZXF1aXZhbGVudCBvZiBnYy5jb2xsZWN0KCkuICovCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5R0NfQ29sbGVjdCh2b2lkKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlHQ19Db2xsZWN0Tm9GYWlsKHZvaWQpOworI2VuZGlmCisKIC8qIFRlc3QgaWYgYSB0eXBlIGhhcyBhIEdDIGhlYWQgKi8KICNkZWZpbmUgUHlUeXBlX0lTX0dDKHQpIFB5VHlwZV9IYXNGZWF0dXJlKCh0KSwgUHlfVFBGTEFHU19IQVZFX0dDKQogCkBAIC0yNDksMTMgKzI0OSwzNyBAQAogICAgICAgICB1bmlvbiBfZ2NfaGVhZCAqZ2NfcHJldjsKICAgICAgICAgUHlfc3NpemVfdCBnY19yZWZzOwogICAgIH0gZ2M7Ci0gICAgbG9uZyBkb3VibGUgZHVtbXk7ICAvKiBmb3JjZSB3b3JzdC1jYXNlIGFsaWdubWVudCAqLworICAgIGRvdWJsZSBkdW1teTsgIC8qIGZvcmNlIHdvcnN0LWNhc2UgYWxpZ25tZW50ICovCiB9IFB5R0NfSGVhZDsKIAogZXh0ZXJuIFB5R0NfSGVhZCAqX1B5R0NfZ2VuZXJhdGlvbjA7CiAKICNkZWZpbmUgX1B5X0FTX0dDKG8pICgoUHlHQ19IZWFkICopKG8pLTEpCiAKKy8qIEJpdCAwIGlzIHNldCB3aGVuIHRwX2ZpbmFsaXplIGlzIGNhbGxlZCAqLworI2RlZmluZSBfUHlHQ19SRUZTX01BU0tfRklOQUxJWkVEICAoMSA8PCAwKQorLyogVGhlIChOLTEpIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBjb250YWluIHRoZSBnYyBzdGF0ZSAvIHJlZmNvdW50ICovCisjZGVmaW5lIF9QeUdDX1JFRlNfU0hJRlQgICAgICAgICAgICgxKQorI2RlZmluZSBfUHlHQ19SRUZTX01BU0sgICAgICAgICAgICAoKChzaXplX3QpIC0xKSA8PCBfUHlHQ19SRUZTX1NISUZUKQorCisjZGVmaW5lIF9QeUdDSGVhZF9SRUZTKGcpICgoZyktPmdjLmdjX3JlZnMgPj4gX1B5R0NfUkVGU19TSElGVCkKKyNkZWZpbmUgX1B5R0NIZWFkX1NFVF9SRUZTKGcsIHYpIGRvIHsgXAorICAgIChnKS0+Z2MuZ2NfcmVmcyA9ICgoZyktPmdjLmdjX3JlZnMgJiB+X1B5R0NfUkVGU19NQVNLKSBcCisgICAgICAgIHwgKHYgPDwgX1B5R0NfUkVGU19TSElGVCk7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBfUHlHQ0hlYWRfREVDUkVGKGcpICgoZyktPmdjLmdjX3JlZnMgLT0gMSA8PCBfUHlHQ19SRUZTX1NISUZUKQorCisjZGVmaW5lIF9QeUdDSGVhZF9GSU5BTElaRUQoZykgKCgoZyktPmdjLmdjX3JlZnMgJiBfUHlHQ19SRUZTX01BU0tfRklOQUxJWkVEKSAhPSAwKQorI2RlZmluZSBfUHlHQ0hlYWRfU0VUX0ZJTkFMSVpFRChnLCB2KSBkbyB7ICBcCisgICAgKGcpLT5nYy5nY19yZWZzID0gKChnKS0+Z2MuZ2NfcmVmcyAmIH5fUHlHQ19SRUZTX01BU0tfRklOQUxJWkVEKSBcCisgICAgICAgIHwgKHYgIT0gMCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIF9QeUdDX0ZJTkFMSVpFRChvKSBfUHlHQ0hlYWRfRklOQUxJWkVEKF9QeV9BU19HQyhvKSkKKyNkZWZpbmUgX1B5R0NfU0VUX0ZJTkFMSVpFRChvLCB2KSBfUHlHQ0hlYWRfU0VUX0ZJTkFMSVpFRChfUHlfQVNfR0MobyksIHYpCisKKyNkZWZpbmUgX1B5R0NfUkVGUyhvKSBfUHlHQ0hlYWRfUkVGUyhfUHlfQVNfR0MobykpCisKICNkZWZpbmUgX1B5R0NfUkVGU19VTlRSQUNLRUQgICAgICAgICAgICAgICAgICAgICgtMikKICNkZWZpbmUgX1B5R0NfUkVGU19SRUFDSEFCTEUgICAgICAgICAgICAgICAgICAgICgtMykKICNkZWZpbmUgX1B5R0NfUkVGU19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRSAgICAgICgtNCkKQEAgLTI2NCw5ICsyODgsOSBAQAogICogY29sbGVjdG9yIGl0IG11c3QgYmUgc2FmZSB0byBjYWxsIHRoZSBvYl90cmF2ZXJzZSBtZXRob2QuICovCiAjZGVmaW5lIF9QeU9iamVjdF9HQ19UUkFDSyhvKSBkbyB7IFwKICAgICBQeUdDX0hlYWQgKmcgPSBfUHlfQVNfR0Mobyk7IFwKLSAgICBpZiAoZy0+Z2MuZ2NfcmVmcyAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCkgXAorICAgIGlmIChfUHlHQ0hlYWRfUkVGUyhnKSAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCkgXAogICAgICAgICBQeV9GYXRhbEVycm9yKCJHQyBvYmplY3QgYWxyZWFkeSB0cmFja2VkIik7IFwKLSAgICBnLT5nYy5nY19yZWZzID0gX1B5R0NfUkVGU19SRUFDSEFCTEU7IFwKKyAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZywgX1B5R0NfUkVGU19SRUFDSEFCTEUpOyBcCiAgICAgZy0+Z2MuZ2NfbmV4dCA9IF9QeUdDX2dlbmVyYXRpb24wOyBcCiAgICAgZy0+Z2MuZ2NfcHJldiA9IF9QeUdDX2dlbmVyYXRpb24wLT5nYy5nY19wcmV2OyBcCiAgICAgZy0+Z2MuZ2NfcHJldi0+Z2MuZ2NfbmV4dCA9IGc7IFwKQEAgLTI3OSw4ICszMDMsOCBAQAogICovCiAjZGVmaW5lIF9QeU9iamVjdF9HQ19VTlRSQUNLKG8pIGRvIHsgXAogICAgIFB5R0NfSGVhZCAqZyA9IF9QeV9BU19HQyhvKTsgXAotICAgIGFzc2VydChnLT5nYy5nY19yZWZzICE9IF9QeUdDX1JFRlNfVU5UUkFDS0VEKTsgXAotICAgIGctPmdjLmdjX3JlZnMgPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRDsgXAorICAgIGFzc2VydChfUHlHQ0hlYWRfUkVGUyhnKSAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7IFwKKyAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZywgX1B5R0NfUkVGU19VTlRSQUNLRUQpOyBcCiAgICAgZy0+Z2MuZ2NfcHJldi0+Z2MuZ2NfbmV4dCA9IGctPmdjLmdjX25leHQ7IFwKICAgICBnLT5nYy5nY19uZXh0LT5nYy5nY19wcmV2ID0gZy0+Z2MuZ2NfcHJldjsgXAogICAgIGctPmdjLmdjX25leHQgPSBOVUxMOyBcCkBAIC0yODgsNyArMzEyLDcgQEAKIAogLyogVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGN1cnJlbnRseSB0cmFja2VkIGJ5IHRoZSBHQy4gKi8KICNkZWZpbmUgX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQobykgXAotICAgICgoX1B5X0FTX0dDKG8pKS0+Z2MuZ2NfcmVmcyAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCkKKyAgICAoX1B5R0NfUkVGUyhvKSAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCkKIAogLyogVHJ1ZSBpZiB0aGUgb2JqZWN0IG1heSBiZSB0cmFja2VkIGJ5IHRoZSBHQyBpbiB0aGUgZnV0dXJlLCBvciBhbHJlYWR5IGlzLgogICAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIGltcGxlbWVudCBzb21lIG9wdGltaXphdGlvbnMuICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCBhOTAxODRkLi4wOTM2ZjJkIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTQ5LDcgKzQ5LDYgQEAKICNkZWZpbmUgQklOQVJZX09SICAgICAgIDY2CiAjZGVmaW5lIElOUExBQ0VfUE9XRVIgICA2NwogI2RlZmluZSBHRVRfSVRFUiAgICAgICAgNjgKLSNkZWZpbmUgU1RPUkVfTE9DQUxTICAgIDY5CiAjZGVmaW5lIFBSSU5UX0VYUFIgICAgICA3MAogI2RlZmluZSBMT0FEX0JVSUxEX0NMQVNTIDcxCiAjZGVmaW5lIFlJRUxEX0ZST00gICAgICA3MgpAQCAtMTQwLDYgKzEzOSw3IEBACiAjZGVmaW5lIFNFVF9BREQgICAgICAgICAxNDYKICNkZWZpbmUgTUFQX0FERCAgICAgICAgIDE0NwogCisjZGVmaW5lIExPQURfQ0xBU1NERVJFRiAgIDE0OAogCiAvKiBFWENFUFRfSEFORExFUiBpcyBhIHNwZWNpYWwsIGltcGxpY2l0IGJsb2NrIHR5cGUgd2hpY2ggaXMgY3JlYXRlZCB3aGVuCiAgICBlbnRlcmluZyBhbiBleGNlcHQgaGFuZGxlci4gSXQgaXMgbm90IGFuIG9wY29kZSBidXQgd2UgZGVmaW5lIGl0IGhlcmUKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3NkZWZzLmggYi9JbmNsdWRlL29zZGVmcy5oCmluZGV4IDA1YzBjOGUuLjBjMmUzNGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3NkZWZzLmgKKysrIGIvSW5jbHVkZS9vc2RlZnMuaApAQCAtOSwxNiArOSwxMCBAQAogCiAvKiBNb2QgYnkgY2hyaXNoOiBRTlggaGFzIFdBVENPTSwgYnV0IGlzbid0IERPUyAqLwogI2lmICFkZWZpbmVkKF9fUU5YX18pCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfX0RKR1BQX18pIHx8IGRlZmluZWQoUFlPU19PUzIpCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSNkZWZpbmUgTUFYUEFUSExFTiAyNjAKLSNkZWZpbmUgU0VQIEwnLycKLSNkZWZpbmUgQUxUU0VQIEwnXFwnCi0jZWxzZQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0JPUkxBTkRDX18pIHx8IGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoX19ESkdQUF9fKQogI2RlZmluZSBTRVAgTCdcXCcKICNkZWZpbmUgQUxUU0VQIEwnLycKICNkZWZpbmUgTUFYUEFUSExFTiAyNTYKLSNlbmRpZgogI2RlZmluZSBERUxJTSBMJzsnCiAjZW5kaWYKICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCBiZmQ2N2E1Li41Y2IwYzc1IDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTMgKzE3LDEzIEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTIKLSNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCi0jZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk0CisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMAorI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfQUxQSEEKKyNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMQogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuMy4yKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy40LjBhMSsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZGVidWcuaCBiL0luY2x1ZGUvcHlkZWJ1Zy5oCmluZGV4IDk3YzJmOGMuLjhmZTk4MTggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlkZWJ1Zy5oCisrKyBiL0luY2x1ZGUvcHlkZWJ1Zy5oCkBAIC0yMCw2ICsyMCw3IEBACiBQeUFQSV9EQVRBKGludCkgUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeTsKIFB5QVBJX0RBVEEoaW50KSBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZzsKK1B5QVBJX0RBVEEoaW50KSBQeV9Jc29sYXRlZEZsYWc7CiAKIC8qIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBnZXRlbnYoKSB0aGF0IHBheXMgYXR0ZW50aW9uIHRvCiAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcuICBJdCBzaG91bGQgYmUgdXNlZCBmb3IgZ2V0dGluZyB2YXJpYWJsZXMgbGlrZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1lbS5oIGIvSW5jbHVkZS9weW1lbS5oCmluZGV4IDEwYjViZWEuLjgzZjE1MzcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltZW0uaAorKysgYi9JbmNsdWRlL3B5bWVtLmgKQEAgLTExLDYgKzExLDExIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3TWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlNZW1fUmF3RnJlZSh2b2lkICpwdHIpOworCisKIC8qIEJFV0FSRToKIAogICAgRWFjaCBpbnRlcmZhY2UgZXhwb3J0cyBib3RoIGZ1bmN0aW9ucyBhbmQgbWFjcm9zLiAgRXh0ZW5zaW9uIG1vZHVsZXMgc2hvdWxkCkBAIC00OSwyMSArNTQsMTQgQEAKICAgIHBlcmZvcm1lZCBvbiBmYWlsdXJlIChubyBleGNlcHRpb24gaXMgc2V0LCBubyB3YXJuaW5nIGlzIHByaW50ZWQsIGV0YykuCiAqLwogCi1QeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fTWFsbG9jKHNpemVfdCk7Ci1QeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmVhbGxvYyh2b2lkICosIHNpemVfdCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5TWVtX0ZyZWUodm9pZCAqKTsKK1B5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9NYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOworUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9GcmVlKHZvaWQgKnB0cik7CiAKLS8qIFN0YXJ0aW5nIGZyb20gUHl0aG9uIDEuNiwgdGhlIHdyYXBwZXJzIFB5X3tNYWxsb2MsUmVhbGxvYyxGcmVlfSBhcmUKLSAgIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFRoZXkgdXNlZCB0byBjYWxsIFB5RXJyX05vTWVtb3J5KCkgb24gZmFpbHVyZS4gKi8KK1B5QVBJX0ZVTkMoY2hhciAqKSBfUHlNZW1fUmF3U3RyZHVwKGNvbnN0IGNoYXIgKnN0cik7CitQeUFQSV9GVU5DKGNoYXIgKikgX1B5TWVtX1N0cmR1cChjb25zdCBjaGFyICpzdHIpOwogCiAvKiBNYWNyb3MuICovCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLS8qIFJlZGlyZWN0IGFsbCBtZW1vcnkgb3BlcmF0aW9ucyB0byBQeXRob24ncyBkZWJ1Z2dpbmcgYWxsb2NhdG9yLiAqLwotI2RlZmluZSBQeU1lbV9NQUxMT0MJCV9QeU1lbV9EZWJ1Z01hbGxvYwotI2RlZmluZSBQeU1lbV9SRUFMTE9DCQlfUHlNZW1fRGVidWdSZWFsbG9jCi0jZGVmaW5lIFB5TWVtX0ZSRUUJCV9QeU1lbV9EZWJ1Z0ZyZWUKLQotI2Vsc2UJLyogISBQWU1BTExPQ19ERUJVRyAqLwogCiAvKiBQeU1lbV9NQUxMT0MoMCkgbWVhbnMgbWFsbG9jKDEpLiBTb21lIHN5c3RlbXMgd291bGQgcmV0dXJuIE5VTEwKICAgIGZvciBtYWxsb2MoMCksIHdoaWNoIHdvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIFNvbWUgcGxhdGZvcm1zCkBAIC03MSwxMyArNjksOSBAQAogICAgcHltYWxsb2MuIFRvIHNvbHZlIHRoZXNlIHByb2JsZW1zLCBhbGxvY2F0ZSBhbiBleHRyYSBieXRlLiAqLwogLyogUmV0dXJucyBOVUxMIHRvIGluZGljYXRlIGVycm9yIGlmIGEgbmVnYXRpdmUgc2l6ZSBvciBzaXplIGxhcmdlciB0aGFuCiAgICBQeV9zc2l6ZV90IGNhbiByZXByZXNlbnQgaXMgc3VwcGxpZWQuICBIZWxwcyBwcmV2ZW50cyBzZWN1cml0eSBob2xlcy4gKi8KLSNkZWZpbmUgUHlNZW1fTUFMTE9DKG4pCQkoKHNpemVfdCkobikgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYID8gTlVMTCBcCi0JCQkJOiBtYWxsb2MoKG4pID8gKG4pIDogMSkpCi0jZGVmaW5lIFB5TWVtX1JFQUxMT0MocCwgbikJKChzaXplX3QpKG4pID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAgPyBOVUxMIFwKLQkJCQk6IHJlYWxsb2MoKHApLCAobikgPyAobikgOiAxKSkKLSNkZWZpbmUgUHlNZW1fRlJFRQkJZnJlZQotCi0jZW5kaWYJLyogUFlNQUxMT0NfREVCVUcgKi8KKyNkZWZpbmUgUHlNZW1fTUFMTE9DKG4pICAgICAgICAgUHlNZW1fTWFsbG9jKG4pCisjZGVmaW5lIFB5TWVtX1JFQUxMT0MocCwgbikgICAgIFB5TWVtX1JlYWxsb2MocCwgbikKKyNkZWZpbmUgUHlNZW1fRlJFRShwKSAgICAgICAgICAgUHlNZW1fRnJlZShwKQogCiAvKgogICogVHlwZS1vcmllbnRlZCBtZW1vcnkgaW50ZXJmYWNlCkBAIC0xMTUsNiArMTA5LDY5IEBACiAjZGVmaW5lIFB5TWVtX0RlbAkJUHlNZW1fRnJlZQogI2RlZmluZSBQeU1lbV9ERUwJCVB5TWVtX0ZSRUUKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBlbnVtIHsKKyAgICAvKiBQeU1lbV9SYXdNYWxsb2MoKSwgUHlNZW1fUmF3UmVhbGxvYygpIGFuZCBQeU1lbV9SYXdGcmVlKCkgKi8KKyAgICBQWU1FTV9ET01BSU5fUkFXLAorCisgICAgLyogUHlNZW1fTWFsbG9jKCksIFB5TWVtX1JlYWxsb2MoKSBhbmQgUHlNZW1fRnJlZSgpICovCisgICAgUFlNRU1fRE9NQUlOX01FTSwKKworICAgIC8qIFB5T2JqZWN0X01hbGxvYygpLCBQeU9iamVjdF9SZWFsbG9jKCkgYW5kIFB5T2JqZWN0X0ZyZWUoKSAqLworICAgIFBZTUVNX0RPTUFJTl9PQkoKK30gUHlNZW1BbGxvY2F0b3JEb21haW47CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiB1c2VyIGNvbnRleHQgcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgMyBmdW5jdGlvbnMgKi8KKyAgICB2b2lkICpjdHg7CisKKyAgICAvKiBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayAqLworICAgIHZvaWQqICgqbWFsbG9jKSAodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CisKKyAgICAvKiBhbGxvY2F0ZSBvciByZXNpemUgYSBtZW1vcnkgYmxvY2sgKi8KKyAgICB2b2lkKiAoKnJlYWxsb2MpICh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKKworICAgIC8qIHJlbGVhc2UgYSBtZW1vcnkgYmxvY2sgKi8KKyAgICB2b2lkICgqZnJlZSkgKHZvaWQgKmN0eCwgdm9pZCAqcHRyKTsKK30gUHlNZW1BbGxvY2F0b3I7CisKKy8qIEdldCB0aGUgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciBvZiB0aGUgc3BlY2lmaWVkIGRvbWFpbi4gKi8KK1B5QVBJX0ZVTkModm9pZCkgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpOworCisvKiBTZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCisKKyAgIFRoZSBuZXcgYWxsb2NhdG9yIG11c3QgcmV0dXJuIGEgZGlzdGluY3Qgbm9uLU5VTEwgcG9pbnRlciB3aGVuIHJlcXVlc3RpbmcKKyAgIHplcm8gYnl0ZXMuCisKKyAgIEZvciB0aGUgUFlNRU1fRE9NQUlOX1JBVyBkb21haW4sIHRoZSBhbGxvY2F0b3IgbXVzdCBiZSB0aHJlYWQtc2FmZTogdGhlIEdJTAorICAgaXMgbm90IGhlbGQgd2hlbiB0aGUgYWxsb2NhdG9yIGlzIGNhbGxlZC4KKworICAgSWYgdGhlIG5ldyBhbGxvY2F0b3IgaXMgbm90IGEgaG9vayAoZG9uJ3QgY2FsbCB0aGUgcHJldmlvdXMgYWxsb2NhdG9yKSwgdGhlCisgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKSBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB0byByZWluc3RhbGwgdGhlIGRlYnVnIGhvb2tzCisgICBvbiB0b3Agb24gdGhlIG5ldyBhbGxvY2F0b3IuICovCitQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKTsKKworLyogU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgorICAgZnVuY3Rpb25zOgorCisgICAtIFB5TWVtX1Jhd01hbGxvYygpLCBQeU1lbV9SYXdSZWFsbG9jKCksIFB5TWVtX1Jhd0ZyZWUoKQorICAgLSBQeU1lbV9NYWxsb2MoKSwgUHlNZW1fUmVhbGxvYygpLCBQeU1lbV9GcmVlKCkKKyAgIC0gUHlPYmplY3RfTWFsbG9jKCksIFB5T2JqZWN0X1JlYWxsb2MoKSBhbmQgUHlPYmplY3RfRnJlZSgpCisKKyAgIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgMHhDQiwgZnJlZWQgbWVtb3J5IGlzIGZpbGxlZAorICAgd2l0aCB0aGUgYnl0ZSAweERCLiBBZGRpdGlvbm5hbCBjaGVja3M6CisKKyAgIC0gZGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogUHlPYmplY3RfRnJlZSgpIGNhbGxlZCBvbiBhIGJ1ZmZlciBhbGxvY2F0ZWQKKyAgICAgYnkgUHlNZW1fTWFsbG9jKCkKKyAgIC0gZGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gZGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorCisgICBUaGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGlmIFB5dGhvbiBpcyBub3QgY29tcGlsZWQgaXMgZGVidWcgbW9kZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCBlNGUzNjAxLi5hY2I2ZDVkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTIxOSwxMCArMjE5LDYgQEAKIC8qIFNtYWxsZXN0IG5lZ2F0aXZlIHZhbHVlIG9mIHR5cGUgUHlfc3NpemVfdC4gKi8KICNkZWZpbmUgUFlfU1NJWkVfVF9NSU4gKC1QWV9TU0laRV9UX01BWC0xKQogCi0jaWYgU0laRU9GX1BJRF9UID4gU0laRU9GX0xPTkcKLSMgICBlcnJvciAiUHl0aG9uIGRvZXNuJ3Qgc3VwcG9ydCBzaXplb2YocGlkX3QpID4gc2l6ZW9mKGxvbmcpIgotI2VuZGlmCi0KIC8qIFBZX0ZPUk1BVF9TSVpFX1QgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBtb2RpZmllciBmb3IgdXNlIGluIGEgcHJpbnRmCiAgKiBmb3JtYXQgdG8gY29udmVydCBhbiBhcmd1bWVudCB3aXRoIHRoZSB3aWR0aCBvZiBhIHNpemVfdCBvciBQeV9zc2l6ZV90LgogICogQzk5IGludHJvZHVjZWQgInoiIGZvciB0aGlzIHB1cnBvc2UsIGJ1dCBub3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRoYXQ7CkBAIC0yNjcsNyArMjYzLDcgQEAKICAqLwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjICAgaWZuZGVmIFBZX0ZPUk1BVF9MT05HX0xPTkcKLSMgICAgICAgaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorIyAgICAgICBpZmRlZiBNU19XSU5ET1dTCiAjICAgICAgICAgICBkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyAiSTY0IgogIyAgICAgICBlbHNlCiAjICAgICAgICAgICBlcnJvciAiVGhpcyBwbGF0Zm9ybSdzIHB5Y29uZmlnLmggbmVlZHMgdG8gZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkciCkBAIC0zOTIsMTcgKzM4OCwyMCBAQAogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbGlmIGRlZmluZWQoSEFWRV9TVEFUX0gpCiAjaW5jbHVkZSA8c3RhdC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApCisjaWZuZGVmIFNfSUZNVAogLyogVmlzdWFsQWdlIEMvQysrIEZhaWxlZCB0byBEZWZpbmUgTW91bnRUeXBlIEZpZWxkIGluIHN5cy9zdGF0LmggKi8KLSNkZWZpbmUgU19JRk1UIChTX0lGRElSfFNfSUZDSFJ8U19JRlJFRykKKyNkZWZpbmUgU19JRk1UIDAxNzAwMDAKKyNlbmRpZgorCisjaWZuZGVmIFNfSUZMTksKKy8qIFdpbmRvd3MgZG9lc24ndCBkZWZpbmUgU19JRkxOSyBidXQgcG9zaXhtb2R1bGUuYyBtYXBzCisgKiBJT19SRVBBUlNFX1RBR19TWU1MSU5LIHRvIFNfSUZMTksgKi8KKyMgIGRlZmluZSBTX0lGTE5LIDAxMjAwMDAKICNlbmRpZgogCiAjaWZuZGVmIFNfSVNSRUcKQEAgLTQxMyw2ICs0MTIsOSBAQAogI2RlZmluZSBTX0lTRElSKHgpICgoKHgpICYgU19JRk1UKSA9PSBTX0lGRElSKQogI2VuZGlmCiAKKyNpZm5kZWYgU19JU0NIUgorI2RlZmluZSBTX0lTQ0hSKHgpICgoKHgpICYgU19JRk1UKSA9PSBTX0lGQ0hSKQorI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogLyogTW92ZSB0aGlzIGRvd24gaGVyZSBzaW5jZSBzb21lIEMrKyAjaW5jbHVkZSdzIGRvbid0IGxpa2UgdG8gYmUgaW5jbHVkZWQKQEAgLTgzNSwxNSArODM3LDYgQEAKICNlbmRpZgogCiAvKgotICogQWRkIFB5QXJnX1BhcnNlVHVwbGUgZm9ybWF0IHdoZXJlIGF2YWlsYWJsZS4KLSAqLwotI2lmZGVmIEhBVkVfQVRUUklCVVRFX0ZPUk1BVF9QQVJTRVRVUExFCi0jZGVmaW5lIFB5X0ZPUk1BVF9QQVJTRVRVUExFKGZ1bmMscDEscDIpIF9fYXR0cmlidXRlX18oKGZvcm1hdChmdW5jLHAxLHAyKSkpCi0jZWxzZQotI2RlZmluZSBQeV9GT1JNQVRfUEFSU0VUVVBMRShmdW5jLHAxLHAyKQotI2VuZGlmCi0KLS8qCiAgKiBTcGVjaWZ5IGFsaWdubWVudCBvbiBjb21waWxlcnMgdGhhdCBzdXBwb3J0IGl0LgogICovCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gMwpAQCAtODgxLDQgKzg3NCwxOCBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyoKKyAqIENvbnZlbmllbnQgbWFjcm9zIHRvIGRlYWwgd2l0aCBlbmRpYW5uZXNzIG9mIHRoZSBwbGF0Zm9ybS4gV09SRFNfQklHRU5ESUFOIGlzCisgKiBkZXRlY3RlZCBieSBjb25maWd1cmUgYW5kIGRlZmluZWQgaW4gcHljb25maWcuaC4gVGhlIGNvZGUgaW4gcHljb25maWcuaAorICogYWxzbyB0YWtlcyBjYXJlIG9mIEFwcGxlJ3MgdW5pdmVyc2FsIGJ1aWxkcy4KKyAqLworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisjZGVmaW5lIFBZX0JJR19FTkRJQU4gMQorI2RlZmluZSBQWV9MSVRUTEVfRU5ESUFOIDAKKyNlbHNlCisjZGVmaW5lIFBZX0JJR19FTkRJQU4gMAorI2RlZmluZSBQWV9MSVRUTEVfRU5ESUFOIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogUHlfUFlQT1JUX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdGF0ZS5oIGIvSW5jbHVkZS9weXN0YXRlLmgKaW5kZXggMjAxN2IwMi4uY2QxZDc3NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0YXRlLmgKKysrIGIvSW5jbHVkZS9weXN0YXRlLmgKQEAgLTY5LDYgKzY5LDcgQEAKIHR5cGVkZWYgc3RydWN0IF90cyB7CiAgICAgLyogU2VlIFB5dGhvbi9jZXZhbC5jIGZvciBjb21tZW50cyBleHBsYWluaW5nIG1vc3QgZmllbGRzICovCiAKKyAgICBzdHJ1Y3QgX3RzICpwcmV2OwogICAgIHN0cnVjdCBfdHMgKm5leHQ7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAKQEAgLTEzOSw2ICsxNDAsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9Jbml0KFB5VGhyZWFkU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfQ2xlYXIoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9EZWxldGUoUHlUaHJlYWRTdGF0ZSAqKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5VGhyZWFkU3RhdGVfRGVsZXRlRXhjZXB0KFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CiAjaWZkZWYgV0lUSF9USFJFQUQKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHSUxTdGF0ZV9SZWluaXQodm9pZCk7CkBAIC0yMTIsNiArMjE0LDExIEBACiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKHZvaWQpOwogCisvKiBIZWxwZXIvZGlhZ25vc3RpYyBmdW5jdGlvbiAtIHJldHVybiAxIGlmIHRoZSBjdXJyZW50IHRocmVhZAorICogY3VycmVudGx5IGhvbGRzIHRoZSBHSUwsIDAgb3RoZXJ3aXNlCisgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpOworCiAjZW5kaWYgICAvKiAjaWZkZWYgV0lUSF9USFJFQUQgKi8KIAogLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHN5cy5fY3VycmVudF9mcmFtZXMoKSAgUmV0dXJucyBhIGRpY3QgbWFwcGluZwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKaW5kZXggZThhNTgyZC4uMWE0MGIwNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAorKysgYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCkBAIC0xOTcsNyArMTk3LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQoUHlPYmplY3QgKiBibHRpbm1vZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RnJhbWVfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5RmxvYXRfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5Qnl0ZUFycmF5X0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9Jbml0KHZvaWQpOwogI2VuZGlmCkBAIC0yMTcsNiArMjE3LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlCeXRlQXJyYXlfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlGbG9hdF9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19EdW1wU2h1dGRvd25TdGF0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUeXBlX0Zpbmkodm9pZCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3NldG9iamVjdC5oIGIvSW5jbHVkZS9zZXRvYmplY3QuaAppbmRleCBhMTQ4NzRiLi4zMWYyMTIzIDEwMDY0NAotLS0gYS9JbmNsdWRlL3NldG9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKQEAgLTIzLDggKzIzLDggQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgdGhlIGtleS4gKi8KLSAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeU9iamVjdCAqa2V5OworICAgIFB5X2hhc2hfdCBoYXNoOwogfSBzZXRlbnRyeTsKIAogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3NsaWNlb2JqZWN0LmggYi9JbmNsdWRlL3NsaWNlb2JqZWN0LmgKaW5kZXggOGJlYzE3OS4uZjdlZTkwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zbGljZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2xpY2VvYmplY3QuaApAQCAtMzQsNiArMzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBzdGVwKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U2xpY2VfRnJvbUluZGljZXMoUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBzdG9wKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlTbGljZV9HZXRMb25nSW5kaWNlcyhQeVNsaWNlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdGFydF9wdHIsIFB5T2JqZWN0ICoqc3RvcF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN0ZXBfcHRyKTsKICNlbmRpZgogUHlBUElfRlVOQyhpbnQpIFB5U2xpY2VfR2V0SW5kaWNlcyhQeU9iamVjdCAqciwgUHlfc3NpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKnN0b3AsIFB5X3NzaXplX3QgKnN0ZXApOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RzZXEuaCBiL0luY2x1ZGUvc3RydWN0c2VxLmgKaW5kZXggMzBjNTJhYy4uYWYyMjcxNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RzZXEuaAorKysgYi9JbmNsdWRlL3N0cnVjdHNlcS5oCkBAIC0yNCw2ICsyNCw4IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoUHlUeXBlT2JqZWN0ICp0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfRGVzYyAqZGVzYyk7CitQeUFQSV9GVU5DKGludCkgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoUHlUeXBlT2JqZWN0ICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfRGVzYyAqZGVzYyk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlUeXBlT2JqZWN0KikgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlKFB5U3RydWN0U2VxdWVuY2VfRGVzYyAqZGVzYyk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3ltdGFibGUuaCBiL0luY2x1ZGUvc3ltdGFibGUuaAppbmRleCA2ZWQzYTJiLi40NDUzNWQwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5bXRhYmxlLmgKKysrIGIvSW5jbHVkZS9zeW10YWJsZS5oCkBAIC00MSw2ICs0MSw3IEBACiAgICAgUHlPYmplY3QgKnN0ZV9uYW1lOyAgICAgIC8qIHN0cmluZzogbmFtZSBvZiBjdXJyZW50IGJsb2NrICovCiAgICAgUHlPYmplY3QgKnN0ZV92YXJuYW1lczsgIC8qIGxpc3Qgb2YgZnVuY3Rpb24gcGFyYW1ldGVycyAqLwogICAgIFB5T2JqZWN0ICpzdGVfY2hpbGRyZW47ICAvKiBsaXN0IG9mIGNoaWxkIGJsb2NrcyAqLworICAgIFB5T2JqZWN0ICpzdGVfZGlyZWN0aXZlczsvKiBsb2NhdGlvbnMgb2YgZ2xvYmFsIGFuZCBub25sb2NhbCBzdGF0ZW1lbnRzICovCiAgICAgX1B5X2Jsb2NrX3R5IHN0ZV90eXBlOyAgIC8qIG1vZHVsZSwgY2xhc3MsIG9yIGZ1bmN0aW9uICovCiAgICAgaW50IHN0ZV91bm9wdGltaXplZDsgICAgIC8qIGZhbHNlIGlmIG5hbWVzcGFjZSBpcyBvcHRpbWl6ZWQgKi8KICAgICBpbnQgc3RlX25lc3RlZDsgICAgICAvKiB0cnVlIGlmIGJsb2NrIGlzIG5lc3RlZCAqLwpAQCAtNTIsNiArNTMsOSBAQAogICAgIHVuc2lnbmVkIHN0ZV92YXJrZXl3b3JkcyA6IDE7IC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmtleXdvcmRzICovCiAgICAgdW5zaWduZWQgc3RlX3JldHVybnNfdmFsdWUgOiAxOyAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgdXNlcyByZXR1cm4gd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGFyZ3VtZW50ICovCisgICAgdW5zaWduZWQgc3RlX25lZWRzX2NsYXNzX2Nsb3N1cmUgOiAxOyAvKiBmb3IgY2xhc3Mgc2NvcGVzLCB0cnVlIGlmIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUgb3ZlciBfX2NsYXNzX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBjcmVhdGVkICovCiAgICAgaW50IHN0ZV9saW5lbm87ICAgICAgICAgIC8qIGZpcnN0IGxpbmUgb2YgYmxvY2sgKi8KICAgICBpbnQgc3RlX2NvbF9vZmZzZXQ7ICAgICAgLyogb2Zmc2V0IG9mIGZpcnN0IGxpbmUgb2YgYmxvY2sgKi8KICAgICBpbnQgc3RlX29wdF9saW5lbm87ICAgICAgLyogbGluZW5vIG9mIGxhc3QgZXhlYyBvciBpbXBvcnQgKiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90b2tlbi5oIGIvSW5jbHVkZS90b2tlbi5oCmluZGV4IGY3ZjY1MDQuLjkwNTAyMmIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdG9rZW4uaAorKysgYi9JbmNsdWRlL3Rva2VuLmgKQEAgLTc1LDcgKzc1LDcgQEAKICNkZWZpbmUgSVNFT0YoeCkJCSgoeCkgPT0gRU5ETUFSS0VSKQogCiAKLVB5QVBJX0RBVEEoY2hhciAqKSBfUHlQYXJzZXJfVG9rZW5OYW1lc1tdOyAvKiBUb2tlbiBuYW1lcyAqLworUHlBUElfREFUQShjb25zdCBjaGFyICopIF9QeVBhcnNlcl9Ub2tlbk5hbWVzW107IC8qIFRva2VuIG5hbWVzICovCiBQeUFQSV9GVU5DKGludCkgUHlUb2tlbl9PbmVDaGFyKGludCk7CiBQeUFQSV9GVU5DKGludCkgUHlUb2tlbl9Ud29DaGFycyhpbnQsIGludCk7CiBQeUFQSV9GVU5DKGludCkgUHlUb2tlbl9UaHJlZUNoYXJzKGludCwgaW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCBhOGY1YjVkLi4yYWJjOWI0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtMTgwLDkgKzE4MCw5IEBACiAgICAgfSB3aGlsZSAoMCkKIAogLyogbWFjcm9zIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzICovCi0jZGVmaW5lIFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REZGRikKLSNkZWZpbmUgUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpCi0jZGVmaW5lIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IChjaCkgJiYgKGNoKSA8PSAweERGRkYpCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpICgweEQ4MDAgPD0gKGNoKSAmJiAoY2gpIDw9IDB4REJGRikKKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKSAoMHhEQzAwIDw9IChjaCkgJiYgKGNoKSA8PSAweERGRkYpCiAvKiBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuICovCiAjZGVmaW5lIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGhpZ2gsIGxvdykgIFwKICAgICAoKCgoKFB5X1VDUzQpKGhpZ2gpICYgMHgwM0ZGKSA8PCAxMCkgfCAgICAgIFwKQEAgLTg5OCwyMiArODk4LDI4IEBACiAgICAgUHlfVUNTNCBtYXhjaGFyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBQeV9zc2l6ZV90IHBvczsKLSAgICAvKiBtaW5pbXVtIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHdoZW4gb3ZlcmFsbG9jYXRpb24gaXMgZW5hYmxlZCwKLSAgICAgICBzZWUgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCkgKi8KKworICAgIC8qIG1pbmltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCBjaGFyYWN0ZXJzIChkZWZhdWx0OiAwKSAqLwogICAgIFB5X3NzaXplX3QgbWluX2xlbmd0aDsKKworICAgIC8qIG1pbmltdW0gY2hhcmFjdGVyIChkZWZhdWx0OiAxMjcsIEFTQ0lJKSAqLworICAgIFB5X1VDUzQgbWluX2NoYXI7CisKKyAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgYnkgMjUlIChkZWZhdWx0OiAwKS4gKi8KICAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKKwogICAgIC8qIElmIHJlYWRvbmx5IGlzIDEsIGJ1ZmZlciBpcyBhIHNoYXJlZCBzdHJpbmcgKGNhbm5vdCBiZSBtb2RpZmllZCkKICAgICAgICBhbmQgc2l6ZSBpcyBzZXQgdG8gMC4gKi8KICAgICB1bnNpZ25lZCBjaGFyIHJlYWRvbmx5OwogfSBfUHlVbmljb2RlV3JpdGVyIDsKIAogLyogSW5pdGlhbGl6ZSBhIFVuaWNvZGUgd3JpdGVyLgotCi0gICBJZiBtaW5fbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKQotICAgb3ZlcmFsbG9jYXRlcyB0aGUgYnVmZmVyIGFuZCBtaW5fbGVuZ3RoIGlzIHRoZSBtaW5pbXVtIGxlbmd0aCBpbiBjaGFyYWN0ZXJzCi0gICBvZiB0aGUgYnVmZmVyLiAqLworICoKKyAqIEJ5IGRlZmF1bHQsIHRoZSBtaW5pbXVtIGJ1ZmZlciBzaXplIGlzIDAgY2hhcmFjdGVyIGFuZCBvdmVyYWxsb2NhdGlvbiBpcworICogZGlzYWJsZWQuIFNldCBtaW5fbGVuZ3RoLCBtaW5fY2hhciBhbmQgb3ZlcmFsbG9jYXRlIGF0dHJpYnV0ZXMgdG8gY29udHJvbAorICogdGhlIGFsbG9jYXRpb24gb2YgdGhlIGJ1ZmZlci4gKi8KIFB5QVBJX0ZVTkModm9pZCkKLV9QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3QgbWluX2xlbmd0aCk7CitfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKIAogLyogUHJlcGFyZSB0aGUgYnVmZmVyIHRvIHdyaXRlICdsZW5ndGgnIGNoYXJhY3RlcnMKICAgIHdpdGggdGhlIHNwZWNpZmllZCBtYXhpbXVtIGNoYXJhY3Rlci4KQEAgLTkzMywxMiArOTM5LDQ0IEBACiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKTsKIAorLyogQXBwZW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIFB5QVBJX0ZVTkMoaW50KQotX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIpOworX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5X1VDUzQgY2gKKyAgICApOwogCisvKiBBcHBlbmQgYSBVbmljb2RlIHN0cmluZy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqc3RyICAgICAgICAgICAgICAgLyogVW5pY29kZSBzdHJpbmcgKi8KKyAgICApOworCisvKiBBcHBlbmQgYSBzdWJzdHJpbmcgb2YgYSBVbmljb2RlIHN0cmluZy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3Vic3RyaW5nKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqc3RyLCAgICAgICAgICAgICAgLyogVW5pY29kZSBzdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kCisgICAgKTsKKworLyogQXBwZW5kIGEgbGF0aW4xLWVuY29kZWQgYnl0ZSBzdHJpbmcuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNzdHIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIGNvbnN0IGNoYXIgKnN0ciwgICAgICAgICAgICAvKiBsYXRpbjEtZW5jb2RlZCBieXRlIHN0cmluZyAqLworICAgIFB5X3NzaXplX3QgbGVuICAgICAgICAgICAgICAvKiBsZW5ndGggaW4gYnl0ZXMgKi8KKyAgICApOworCisvKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSB3cml0ZXIgYXMgYW4gVW5pY29kZSBzdHJpbmcuIENsZWFyIHRoZQorICAgYnVmZmVyIG9mIHRoZSB3cml0ZXIuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwKKyAgIG9uIGVycm9yLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKQogX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKIAorLyogRGVhbGxvY2F0ZSBtZW1vcnkgb2YgYSB3cml0ZXIgKGNsZWFyIGl0cyBpbnRlcm5hbCBidWZmZXIpLiAqLwogUHlBUElfRlVOQyh2b2lkKQogX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcik7CiAjZW5kaWYKQEAgLTE3MjYsNyArMTc2NCw3IEBACiAvKiBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBlbmNvZGVyIGlzCiAgICBzdHJpY3QgaXMgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIHRoZQogICAgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciBpcyB1c2VkLiBSZXR1cm4gYSBieXRlcyBvYmplY3QuIFRoZSBzdHJpbmcKLSAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4uICovCisgICBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLApAQCAtMTk1MCw3ICsxOTg4LDggQEAKICAgICApOwogCiAvKiBDb21wYXJlIHR3byBzdHJpbmdzIGFuZCByZXR1cm4gLTEsIDAsIDEgZm9yIGxlc3MgdGhhbiwgZXF1YWwsCi0gICBncmVhdGVyIHRoYW4gcmVzcC4gKi8KKyAgIGdyZWF0ZXIgdGhhbiByZXNwLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfQ29tcGFyZSgKICAgICBQeU9iamVjdCAqbGVmdCwgICAgICAgICAgICAgLyogTGVmdCBzdHJpbmcgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvd2FybmluZ3MuaCBiL0luY2x1ZGUvd2FybmluZ3MuaAppbmRleCBiN2RiNjgxLi41YTdkZmIxIDEwMDY0NAotLS0gYS9JbmNsdWRlL3dhcm5pbmdzLmgKKysrIGIvSW5jbHVkZS93YXJuaW5ncy5oCkBAIC0yNSw2ICsyNSwxMiBAQAogICAgIGNvbnN0IGNoYXIgKm1vZHVsZSwgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgIFB5T2JqZWN0ICpyZWdpc3RyeSk7CiAKK1B5QVBJX0ZVTkMoaW50KQorUHlFcnJfV2FybkV4cGxpY2l0Rm9ybWF0KFB5T2JqZWN0ICpjYXRlZ29yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CisKIC8qIERFUFJFQ0FURUQ6IFVzZSBQeUVycl9XYXJuRXgoKSBpbnN0ZWFkLiAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBQeUVycl9XYXJuKGNhdGVnb3J5LCBtc2cpIFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgbXNnLCAxKQpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggNmNiZDk2My4uYzljYjcyYyAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC03Nyw2ICs3Nyw3IEBACiAgICAgMy4yLjQgICAgICAgICAgIDMuMi4zICAgICAgIDIwMTMgICAgICAgIFBTRiAgICAgICAgIHllcwogICAgIDMuMy4wICAgICAgICAgICAzLjIgICAgICAgICAyMDEyICAgICAgICBQU0YgICAgICAgICB5ZXMKICAgICAzLjMuMSAgICAgICAgICAgMy4zLjAgICAgICAgMjAxMyAgICAgICAgUFNGICAgICAgICAgeWVzCisgICAgMy40LjAgICAgICAgICAgIDMuMy4wICAgICAgIDIwMTQgICAgICAgIFBTRiAgICAgICAgIHllcwogCiBGb290bm90ZXM6CiAKZGlmZiAtLWdpdCBhL0xpYi9fb3N4X3N1cHBvcnQucHkgYi9MaWIvX29zeF9zdXBwb3J0LnB5CmluZGV4IGIzYWFkNTYuLjg0MTJlNDUgMTAwNjQ0Ci0tLSBhL0xpYi9fb3N4X3N1cHBvcnQucHkKKysrIGIvTGliL19vc3hfc3VwcG9ydC5weQpAQCAtMzgsNyArMzgsNyBAQAogICAgIHBhdGhzID0gcGF0aC5zcGxpdChvcy5wYXRoc2VwKQogICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZXhlY3V0YWJsZSkKIAotICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciBvcy5uYW1lID09ICdvczInKSBhbmQgKGV4dCAhPSAnLmV4ZScpOgorICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykgYW5kIChleHQgIT0gJy5leGUnKToKICAgICAgICAgZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUgKyAnLmV4ZScKIAogICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShleGVjdXRhYmxlKToKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgX1NZU1RFTV9WRVJTSU9OID0gJycKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICMgV2UncmUgb24gYSBwbGFpbiBkYXJ3aW4gYm94LCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQKICAgICAgICAgICAgICMgYmVoYXZpb3VyLgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IGFhYjYwZGIuLjEzN2ViY2IgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTM0LDcgKzM0LDcgQEAKIGRlZiBvcGVuKGZpbGUsIG1vZGU9InIiLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLAogICAgICAgICAgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKToKIAotICAgIHIiIiJPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLgorICAgIHIiIiJPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIE9TRXJyb3IgdXBvbiBmYWlsdXJlLgogCiAgICAgZmlsZSBpcyBlaXRoZXIgYSB0ZXh0IG9yIGJ5dGUgc3RyaW5nIGdpdmluZyB0aGUgbmFtZSAoYW5kIHRoZSBwYXRoCiAgICAgaWYgdGhlIGZpbGUgaXNuJ3QgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvCkBAIC0yMDAsNyArMjAwLDcgQEAKICAgICAgICAgYnVmZmVyaW5nID0gREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBicyA9IG9zLmZzdGF0KHJhdy5maWxlbm8oKSkuc3RfYmxrc2l6ZQotICAgICAgICBleGNlcHQgKG9zLmVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgYnMgPiAxOgpAQCAtMjU0LDcgKzI1NCw3IEBACiB0cnk6CiAgICAgVW5zdXBwb3J0ZWRPcGVyYXRpb24gPSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbgogZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgIGNsYXNzIFVuc3VwcG9ydGVkT3BlcmF0aW9uKFZhbHVlRXJyb3IsIElPRXJyb3IpOgorICAgIGNsYXNzIFVuc3VwcG9ydGVkT3BlcmF0aW9uKFZhbHVlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgICBwYXNzCiAKIApAQCAtMjc4LDcgKzI3OCw3IEBACiAgICAgcmVhZGludG8pIG5lZWRlZC4gVGV4dCBJL08gY2xhc3NlcyB3b3JrIHdpdGggc3RyIGRhdGEuCiAKICAgICBOb3RlIHRoYXQgY2FsbGluZyBhbnkgbWV0aG9kIChldmVuIGlucXVpcmllcykgb24gYSBjbG9zZWQgc3RyZWFtIGlzCi0gICAgdW5kZWZpbmVkLiBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIElPRXJyb3IgaW4gdGhpcyBjYXNlLgorICAgIHVuZGVmaW5lZC4gSW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBPU0Vycm9yIGluIHRoaXMgY2FzZS4KIAogICAgIElPQmFzZSAoYW5kIGl0cyBzdWJjbGFzc2VzKSBzdXBwb3J0IHRoZSBpdGVyYXRvciBwcm90b2NvbCwgbWVhbmluZwogICAgIHRoYXQgYW4gSU9CYXNlIG9iamVjdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB5aWVsZGluZyB0aGUgbGluZXMgaW4gYQpAQCAtMjk0LDcgKzI5NCw3IEBACiAgICAgIyMjIEludGVybmFsICMjIwogCiAgICAgZGVmIF91bnN1cHBvcnRlZChzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiSW50ZXJuYWw6IHJhaXNlIGFuIElPRXJyb3IgZXhjZXB0aW9uIGZvciB1bnN1cHBvcnRlZCBvcGVyYXRpb25zLiIiIgorICAgICAgICAiIiJJbnRlcm5hbDogcmFpc2UgYW4gT1NFcnJvciBleGNlcHRpb24gZm9yIHVuc3VwcG9ydGVkIG9wZXJhdGlvbnMuIiIiCiAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uKCIlcy4lcygpIG5vdCBzdXBwb3J0ZWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKIApAQCAtNDQxLDcgKzQ0MSw3IEBACiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50KSBpZiBvbmUgZXhpc3RzLgogCi0gICAgICAgIEFuIElPRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLgorICAgICAgICBBbiBPU0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgSU8gb2JqZWN0IGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvci4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX3Vuc3VwcG9ydGVkKCJmaWxlbm8iKQogCkBAIC02OTksMTMgKzY5OSwxMyBAQAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgogICAgICAgICBuZXdfcG9zaXRpb24gPSBzZWxmLnJhdy5zZWVrKHBvcywgd2hlbmNlKQogICAgICAgICBpZiBuZXdfcG9zaXRpb24gPCAwOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigic2VlaygpIHJldHVybmVkIGFuIGludmFsaWQgcG9zaXRpb24iKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigic2VlaygpIHJldHVybmVkIGFuIGludmFsaWQgcG9zaXRpb24iKQogICAgICAgICByZXR1cm4gbmV3X3Bvc2l0aW9uCiAKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcG9zID0gc2VsZi5yYXcudGVsbCgpCiAgICAgICAgIGlmIHBvcyA8IDA6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJ0ZWxsKCkgcmV0dXJuZWQgYW4gaW52YWxpZCBwb3NpdGlvbiIpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJ0ZWxsKCkgcmV0dXJuZWQgYW4gaW52YWxpZCBwb3NpdGlvbiIpCiAgICAgICAgIHJldHVybiBwb3MKIAogICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBwb3M9Tm9uZSk6CkBAIC05MjcsNyArOTI3LDcgQEAKICAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGJ1ZmZlcmVkIHJlYWRlciB1c2luZyB0aGUgZ2l2ZW4gcmVhZGFibGUgcmF3IElPIG9iamVjdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCByYXcucmVhZGFibGUoKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJyJyYXciIGFyZ3VtZW50IG11c3QgYmUgcmVhZGFibGUuJykKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJyJyYXciIGFyZ3VtZW50IG11c3QgYmUgcmVhZGFibGUuJykKIAogICAgICAgICBfQnVmZmVyZWRJT01peGluLl9faW5pdF9fKHNlbGYsIHJhdykKICAgICAgICAgaWYgYnVmZmVyX3NpemUgPD0gMDoKQEAgLTEwNzQsNyArMTA3NCw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgaWYgbm90IHJhdy53cml0YWJsZSgpOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJhdyIgYXJndW1lbnQgbXVzdCBiZSB3cml0YWJsZS4nKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignInJhdyIgYXJndW1lbnQgbXVzdCBiZSB3cml0YWJsZS4nKQogCiAgICAgICAgIF9CdWZmZXJlZElPTWl4aW4uX19pbml0X18oc2VsZiwgcmF3KQogICAgICAgICBpZiBidWZmZXJfc2l6ZSA8PSAwOgpAQCAtMTEzOCw3ICsxMTM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZXJybm8uRUFHQUlOLAogICAgICAgICAgICAgICAgICAgICAid3JpdGUgY291bGQgbm90IGNvbXBsZXRlIHdpdGhvdXQgYmxvY2tpbmciLCAwKQogICAgICAgICAgICAgaWYgbiA+IGxlbihzZWxmLl93cml0ZV9idWYpIG9yIG4gPCAwOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIndyaXRlKCkgcmV0dXJuZWQgaW5jb3JyZWN0IG51bWJlciBvZiBieXRlcyIpCisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigid3JpdGUoKSByZXR1cm5lZCBpbmNvcnJlY3QgbnVtYmVyIG9mIGJ5dGVzIikKICAgICAgICAgICAgIGRlbCBzZWxmLl93cml0ZV9idWZbOm5dCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTExNzQsMTAgKzExNzQsMTAgQEAKICAgICAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdHdvIFJhd0lPIGluc3RhbmNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCByZWFkZXIucmVhZGFibGUoKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJyJyZWFkZXIiIGFyZ3VtZW50IG11c3QgYmUgcmVhZGFibGUuJykKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJyJyZWFkZXIiIGFyZ3VtZW50IG11c3QgYmUgcmVhZGFibGUuJykKIAogICAgICAgICBpZiBub3Qgd3JpdGVyLndyaXRhYmxlKCk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCcid3JpdGVyIiBhcmd1bWVudCBtdXN0IGJlIHdyaXRhYmxlLicpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCcid3JpdGVyIiBhcmd1bWVudCBtdXN0IGJlIHdyaXRhYmxlLicpCiAKICAgICAgICAgc2VsZi5yZWFkZXIgPSBCdWZmZXJlZFJlYWRlcihyZWFkZXIsIGJ1ZmZlcl9zaXplKQogICAgICAgICBzZWxmLndyaXRlciA9IEJ1ZmZlcmVkV3JpdGVyKHdyaXRlciwgYnVmZmVyX3NpemUpCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQAogICAgICAgICB3aXRoIHNlbGYuX3JlYWRfbG9jazoKICAgICAgICAgICAgIHNlbGYuX3Jlc2V0X3JlYWRfYnVmKCkKICAgICAgICAgaWYgcG9zIDwgMDoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoInNlZWsoKSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uIikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoInNlZWsoKSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uIikKICAgICAgICAgcmV0dXJuIHBvcwogCiAgICAgZGVmIHRlbGwoc2VsZik6CkBAIC0xNzI3LDcgKzE3MjcsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CiAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbigidW5kZXJseWluZyBzdHJlYW0gaXMgbm90IHNlZWthYmxlIikKICAgICAgICAgaWYgbm90IHNlbGYuX3RlbGxpbmc6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJ0ZWxsaW5nIHBvc2l0aW9uIGRpc2FibGVkIGJ5IG5leHQoKSBjYWxsIikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoInRlbGxpbmcgcG9zaXRpb24gZGlzYWJsZWQgYnkgbmV4dCgpIGNhbGwiKQogICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgcG9zaXRpb24gPSBzZWxmLmJ1ZmZlci50ZWxsKCkKICAgICAgICAgZGVjb2RlciA9IHNlbGYuX2RlY29kZXIKQEAgLTE4MTQsNyArMTgxNCw3IEBACiAgICAgICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBsZW4oZGVjb2Rlci5kZWNvZGUoYicnLCBmaW5hbD1UcnVlKSkKICAgICAgICAgICAgICAgICBuZWVkX2VvZiA9IDEKICAgICAgICAgICAgICAgICBpZiBjaGFyc19kZWNvZGVkIDwgY2hhcnNfdG9fc2tpcDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiY2FuJ3QgcmVjb25zdHJ1Y3QgbG9naWNhbCBmaWxlIHBvc2l0aW9uIikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiY2FuJ3QgcmVjb25zdHJ1Y3QgbG9naWNhbCBmaWxlIHBvc2l0aW9uIikKIAogICAgICAgICAgICAgIyBUaGUgcmV0dXJuZWQgY29va2llIGNvcnJlc3BvbmRzIHRvIHRoZSBsYXN0IHNhZmUgc3RhcnQgcG9pbnQuCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFja19jb29raWUoCkBAIC0xODkxLDcgKzE4OTEsNyBAQAogCiAgICAgICAgICAgICAjIFNraXAgY2hhcnNfdG9fc2tpcCBvZiB0aGUgZGVjb2RlZCBjaGFyYWN0ZXJzLgogICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2RlY29kZWRfY2hhcnMpIDwgY2hhcnNfdG9fc2tpcDoKLSAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjYW4ndCByZXN0b3JlIGxvZ2ljYWwgZmlsZSBwb3NpdGlvbiIpCisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiY2FuJ3QgcmVzdG9yZSBsb2dpY2FsIGZpbGUgcG9zaXRpb24iKQogICAgICAgICAgICAgc2VsZi5fZGVjb2RlZF9jaGFyc191c2VkID0gY2hhcnNfdG9fc2tpcAogCiAgICAgICAgICMgRmluYWxseSwgcmVzZXQgdGhlIGVuY29kZXIgKG1lcmVseSB1c2VmdWwgZm9yIHByb3BlciBCT00gaGFuZGxpbmcpCkBAIC0yMDU0LDcgKzIwNTQsNiBAQAogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5pdGlhbF92YWx1ZSwgc3RyKToKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImluaXRpYWxfdmFsdWUgbXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90IHswfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdCh0eXBlKGluaXRpYWxfdmFsdWUpLl9fbmFtZV9fKSkKLSAgICAgICAgICAgICAgICBpbml0aWFsX3ZhbHVlID0gc3RyKGluaXRpYWxfdmFsdWUpCiAgICAgICAgICAgICBzZWxmLndyaXRlKGluaXRpYWxfdmFsdWUpCiAgICAgICAgICAgICBzZWxmLnNlZWsoMCkKIApkaWZmIC0tZ2l0IGEvTGliL19zaXRlYnVpbHRpbnMucHkgYi9MaWIvX3NpdGVidWlsdGlucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjIxMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL19zaXRlYnVpbHRpbnMucHkKQEAgLTAsMCArMSw5OSBAQAorIiIiCitUaGUgb2JqZWN0cyB1c2VkIGJ5IHRoZSBzaXRlIG1vZHVsZSB0byBhZGQgY3VzdG9tIGJ1aWx0aW5zLgorIiIiCisKKyMgVGhvc2Ugb2JqZWN0cyBhcmUgYWxtb3N0IGltbW9ydGFsIGFuZCB0aGV5IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlaXIgbW9kdWxlCisjIGdsb2JhbHMuICBEZWZpbmluZyB0aGVtIGluIHRoZSBzaXRlIG1vZHVsZSB3b3VsZCBrZWVwIHRvbyBtYW55IHJlZmVyZW5jZXMKKyMgYWxpdmUuCisjIE5vdGUgdGhpcyBtZWFucyB0aGlzIG1vZHVsZSBzaG91bGQgYWxzbyBhdm9pZCBrZWVwIHRoaW5ncyBhbGl2ZSBpbiBpdHMKKyMgZ2xvYmFscy4KKworaW1wb3J0IHN5cworCitjbGFzcyBRdWl0dGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGVvZik6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5lb2YgPSBlb2YKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnVXNlICVzKCkgb3IgJXMgdG8gZXhpdCcgJSAoc2VsZi5uYW1lLCBzZWxmLmVvZikKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgY29kZT1Ob25lKToKKyAgICAgICAgIyBTaGVsbHMgbGlrZSBJRExFIGNhdGNoIHRoZSBTeXN0ZW1FeGl0LCBidXQgbGlzdGVuIHdoZW4gdGhlaXIKKyAgICAgICAgIyBzdGRpbiB3cmFwcGVyIGlzIGNsb3NlZC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLnN0ZGluLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KGNvZGUpCisKKworY2xhc3MgX1ByaW50ZXIob2JqZWN0KToKKyAgICAiIiJpbnRlcmFjdGl2ZSBwcm9tcHQgb2JqZWN0cyBmb3IgcHJpbnRpbmcgdGhlIGxpY2Vuc2UgdGV4dCwgYSBsaXN0IG9mCisgICAgY29udHJpYnV0b3JzIGFuZCB0aGUgY29weXJpZ2h0IG5vdGljZS4iIiIKKworICAgIE1BWExJTkVTID0gMjMKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkYXRhLCBmaWxlcz0oKSwgZGlycz0oKSk6CisgICAgICAgIGltcG9ydCBvcworICAgICAgICBzZWxmLl9fbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fX2RhdGEgPSBkYXRhCisgICAgICAgIHNlbGYuX19saW5lcyA9IE5vbmUKKyAgICAgICAgc2VsZi5fX2ZpbGVuYW1lcyA9IFtvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIGRpcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXNdCisKKyAgICBkZWYgX19zZXR1cChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2xpbmVzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBzZWxmLl9fZmlsZW5hbWVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX19kYXRhCisgICAgICAgIHNlbGYuX19saW5lcyA9IGRhdGEuc3BsaXQoJ1xuJykKKyAgICAgICAgc2VsZi5fX2xpbmVjbnQgPSBsZW4oc2VsZi5fX2xpbmVzKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBzZWxmLl9fc2V0dXAoKQorICAgICAgICBpZiBsZW4oc2VsZi5fX2xpbmVzKSA8PSBzZWxmLk1BWExJTkVTOgorICAgICAgICAgICAgcmV0dXJuICJcbiIuam9pbihzZWxmLl9fbGluZXMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIlR5cGUgJXMoKSB0byBzZWUgdGhlIGZ1bGwgJXMgdGV4dCIgJSAoKHNlbGYuX19uYW1lLCkqMikKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fX3NldHVwKCkKKyAgICAgICAgcHJvbXB0ID0gJ0hpdCBSZXR1cm4gZm9yIG1vcmUsIG9yIHEgKGFuZCBSZXR1cm4pIHRvIHF1aXQ6ICcKKyAgICAgICAgbGluZW5vID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxpbmVubywgbGluZW5vICsgc2VsZi5NQVhMSU5FUyk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KHNlbGYuX19saW5lc1tpXSkKKyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmVubyArPSBzZWxmLk1BWExJTkVTCisgICAgICAgICAgICAgICAga2V5ID0gTm9uZQorICAgICAgICAgICAgICAgIHdoaWxlIGtleSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBrZXkgPSBpbnB1dChwcm9tcHQpCisgICAgICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gKCcnLCAncScpOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAncSc6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKworY2xhc3MgX0hlbHBlcihvYmplY3QpOgorICAgICIiIkRlZmluZSB0aGUgYnVpbHRpbiAnaGVscCcuCisgICAgVGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIHB5ZG9jLmhlbHAgKHdpdGggYSB0d2lzdCkuCisKKyAgICAiIiIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJUeXBlIGhlbHAoKSBmb3IgaW50ZXJhY3RpdmUgaGVscCwgIiBcCisgICAgICAgICAgICAgICAib3IgaGVscChvYmplY3QpIGZvciBoZWxwIGFib3V0IG9iamVjdC4iCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpbXBvcnQgcHlkb2MKKyAgICAgICAgcmV0dXJuIHB5ZG9jLmhlbHAoKmFyZ3MsICoqa3dkcykKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGIwODliMDguLjc1MjA5MTkgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtMjEsNyArMjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lIGFzIGRhdGV0aW1lX3RpbWV6b25lKQogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBfdGhyZWFkX2FsbG9jYXRlX2xvY2sKLWV4Y2VwdDoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmcm9tIF9kdW1teV90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgX3RocmVhZF9hbGxvY2F0ZV9sb2NrCiAKIF9fYWxsX18gPSBbXQpkaWZmIC0tZ2l0IGEvTGliL2FiYy5weSBiL0xpYi9hYmMucHkKaW5kZXggMDk3NzhlOC4uMjY0YzYwYyAxMDA2NDQKLS0tIGEvTGliL2FiYy5weQorKysgYi9MaWIvYWJjLnB5CkBAIC01LDYgKzUsNyBAQAogCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiAKKwogZGVmIGFic3RyYWN0bWV0aG9kKGZ1bmNvYmopOgogICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgbWV0aG9kcy4KIApAQCAtMTI0LDYgKzEyNSw4IEBACiAgICAgIyBBIGdsb2JhbCBjb3VudGVyIHRoYXQgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgY2xhc3MgaXMKICAgICAjIHJlZ2lzdGVyZWQgYXMgYSB2aXJ0dWFsIHN1YmNsYXNzIG9mIGFueXRoaW5nLiAgSXQgZm9yY2VzIHRoZQogICAgICMgbmVnYXRpdmUgY2FjaGUgdG8gYmUgY2xlYXJlZCBiZWZvcmUgaXRzIG5leHQgdXNlLgorICAgICMgTm90ZTogdGhpcyBjb3VudGVyIGlzIHByaXZhdGUuIFVzZSBgYWJjLmdldF9jYWNoZV90b2tlbigpYCBmb3IKKyAgICAjICAgICAgIGV4dGVybmFsIGNvZGUuCiAgICAgX2FiY19pbnZhbGlkYXRpb25fY291bnRlciA9IDAKIAogICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgpAQCAtMjI2LDMgKzIyOSwyMCBAQAogICAgICAgICAjIE5vIGRpY2U7IHVwZGF0ZSBuZWdhdGl2ZSBjYWNoZQogICAgICAgICBjbHMuX2FiY19uZWdhdGl2ZV9jYWNoZS5hZGQoc3ViY2xhc3MpCiAgICAgICAgIHJldHVybiBGYWxzZQorCisKK2NsYXNzIEFCQyhtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgIiIiSGVscGVyIGNsYXNzIHRoYXQgcHJvdmlkZXMgYSBzdGFuZGFyZCB3YXkgdG8gY3JlYXRlIGFuIEFCQyB1c2luZworICAgIGluaGVyaXRhbmNlLgorICAgICIiIgorICAgIHBhc3MKKworCitkZWYgZ2V0X2NhY2hlX3Rva2VuKCk6CisgICAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBBQkMgY2FjaGUgdG9rZW4uCisKKyAgICBUaGUgdG9rZW4gaXMgYW4gb3BhcXVlIGludGVnZXIgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorICAgIHRoZSBBQkMgY2FjaGUgZm9yIHZpcnR1YWwgc3ViY2xhc3Nlcy4gVGhpcyBudW1iZXIgY2hhbmdlcyB3aXRoCisgICAgZXZlcnkgY2FsbCB0byBgYHJlZ2lzdGVyKClgYCBvbiBhbnkgQUJDLgorICAgICIiIgorICAgIHJldHVybiBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXIKZGlmZiAtLWdpdCBhL0xpYi9haWZjLnB5IGIvTGliL2FpZmMucHkKaW5kZXggYTE5YjM4Zi4uYWU1ZmQ2ZCAxMDA2NDQKLS0tIGEvTGliL2FpZmMucHkKKysrIGIvTGliL2FpZmMucHkKQEAgLTY5LDcgKzY5LDcgQEAKICAgZ2V0Y29tcHR5cGUoKSAgIC0tIHJldHVybnMgY29tcHJlc3Npb24gdHlwZSAoJ05PTkUnIGZvciBBSUZGIGZpbGVzKQogICBnZXRjb21wbmFtZSgpICAgLS0gcmV0dXJucyBodW1hbi1yZWFkYWJsZSB2ZXJzaW9uIG9mCiAgICAgICAgICAgICAgY29tcHJlc3Npb24gdHlwZSAoJ25vdCBjb21wcmVzc2VkJyBmb3IgQUlGRiBmaWxlcykKLSAgZ2V0cGFyYW1zKCkgLS0gcmV0dXJucyBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgYWxsIG9mIHRoZQorICBnZXRwYXJhbXMoKSAtLSByZXR1cm5zIGEgbmFtZWR0dXBsZSBjb25zaXN0aW5nIG9mIGFsbCBvZiB0aGUKICAgICAgICAgICAgICBhYm92ZSBpbiB0aGUgYWJvdmUgb3JkZXIKICAgZ2V0bWFya2VycygpICAgIC0tIGdldCB0aGUgbGlzdCBvZiBtYXJrcyBpbiB0aGUgYXVkaW8gZmlsZSBvciBOb25lCiAgICAgICAgICAgICAgaWYgdGhlcmUgYXJlIG5vIG1hcmtzCkBAIC0yNTIsNiArMjUyLDExIEBACiAgICAgX3dyaXRlX3Vsb25nKGYsIGxvbWFudCkKIAogZnJvbSBjaHVuayBpbXBvcnQgQ2h1bmsKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKKworX2FpZmNfcGFyYW1zID0gbmFtZWR0dXBsZSgnX2FpZmNfcGFyYW1zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25jaGFubmVscyBzYW1wd2lkdGggZnJhbWVyYXRlIG5mcmFtZXMgY29tcHR5cGUgY29tcG5hbWUnKQorCiAKIGNsYXNzIEFpZmNfcmVhZDoKICAgICAjIFZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CkBAIC0zMzQsNiArMzM5LDEyIEBACiAgICAgICAgICMgZWxzZSwgYXNzdW1lIGl0IGlzIGFuIG9wZW4gZmlsZSBvYmplY3QgYWxyZWFkeQogICAgICAgICBzZWxmLmluaXRmcChmKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgIwogICAgICMgVXNlciB2aXNpYmxlIG1ldGhvZHMuCiAgICAgIwpAQCAtMzcyLDkgKzM4Myw5IEBACiAjIyAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCiAKICAgICBkZWYgZ2V0cGFyYW1zKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5nZXRuY2hhbm5lbHMoKSwgc2VsZi5nZXRzYW1wd2lkdGgoKSwgXAotICAgICAgICAgICAgICBzZWxmLmdldGZyYW1lcmF0ZSgpLCBzZWxmLmdldG5mcmFtZXMoKSwgXAotICAgICAgICAgICAgICBzZWxmLmdldGNvbXB0eXBlKCksIHNlbGYuZ2V0Y29tcG5hbWUoKQorICAgICAgICByZXR1cm4gX2FpZmNfcGFyYW1zKHNlbGYuZ2V0bmNoYW5uZWxzKCksIHNlbGYuZ2V0c2FtcHdpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRmcmFtZXJhdGUoKSwgc2VsZi5nZXRuZnJhbWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRjb21wdHlwZSgpLCBzZWxmLmdldGNvbXBuYW1lKCkpCiAKICAgICBkZWYgZ2V0bWFya2VycyhzZWxmKToKICAgICAgICAgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDA6CkBAIC01NTMsNiArNTY0LDEyIEBACiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuY2xvc2UoKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgIwogICAgICMgVXNlciB2aXNpYmxlIG1ldGhvZHMuCiAgICAgIwpAQCAtNjQ2LDggKzY2Myw4IEBACiAgICAgZGVmIGdldHBhcmFtcyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX25jaGFubmVscyBvciBub3Qgc2VsZi5fc2FtcHdpZHRoIG9yIG5vdCBzZWxmLl9mcmFtZXJhdGU6CiAgICAgICAgICAgICByYWlzZSBFcnJvcignbm90IGFsbCBwYXJhbWV0ZXJzIHNldCcpCi0gICAgICAgIHJldHVybiBzZWxmLl9uY2hhbm5lbHMsIHNlbGYuX3NhbXB3aWR0aCwgc2VsZi5fZnJhbWVyYXRlLCBcCi0gICAgICAgICAgICAgIHNlbGYuX25mcmFtZXMsIHNlbGYuX2NvbXB0eXBlLCBzZWxmLl9jb21wbmFtZQorICAgICAgICByZXR1cm4gX2FpZmNfcGFyYW1zKHNlbGYuX25jaGFubmVscywgc2VsZi5fc2FtcHdpZHRoLCBzZWxmLl9mcmFtZXJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmZyYW1lcywgc2VsZi5fY29tcHR5cGUsIHNlbGYuX2NvbXBuYW1lKQogCiAgICAgZGVmIHNldG1hcmsoc2VsZiwgaWQsIHBvcywgbmFtZSk6CiAgICAgICAgIGlmIGlkIDw9IDA6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggZjI1YjFiNi4uNWZmNzU1YyAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtNjA2LDggKzYwNiw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9pbmRlbnQoKQotICAgICAgICAgICAgZm9yIHN1YmFjdGlvbiBpbiBnZXRfc3ViYWN0aW9ucygpOgotICAgICAgICAgICAgICAgIHlpZWxkIHN1YmFjdGlvbgorICAgICAgICAgICAgeWllbGQgZnJvbSBnZXRfc3ViYWN0aW9ucygpCiAgICAgICAgICAgICBzZWxmLl9kZWRlbnQoKQogCiAgICAgZGVmIF9zcGxpdF9saW5lcyhzZWxmLCB0ZXh0LCB3aWR0aCk6CkBAIC0xMTQxLDExICsxMTQwLDE3IEBACiAgICAgICAgICAgICBzYW1lIHZhbHVlcyBhcyB0aGUgYnVpbHRpbiBvcGVuKCkgZnVuY3Rpb24uCiAgICAgICAgIC0gYnVmc2l6ZSAtLSBUaGUgZmlsZSdzIGRlc2lyZWQgYnVmZmVyIHNpemUuIEFjY2VwdHMgdGhlIHNhbWUgdmFsdWVzIGFzCiAgICAgICAgICAgICB0aGUgYnVpbHRpbiBvcGVuKCkgZnVuY3Rpb24uCisgICAgICAgIC0gZW5jb2RpbmcgLS0gVGhlIGZpbGUncyBlbmNvZGluZy4gQWNjZXB0cyB0aGUgc2FtZSB2YWx1ZXMgYXMgdGhlCisgICAgICAgICAgICBidWlsdGluIG9wZW4oKSBmdW5jdGlvbi4KKyAgICAgICAgLSBlcnJvcnMgLS0gQSBzdHJpbmcgaW5kaWNhdGluZyBob3cgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGVycm9ycyBhcmUgdG8KKyAgICAgICAgICAgIGJlIGhhbmRsZWQuIEFjY2VwdHMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGJ1aWx0aW4gb3BlbigpIGZ1bmN0aW9uLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGU9J3InLCBidWZzaXplPS0xKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZT0ncicsIGJ1ZnNpemU9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGUKICAgICAgICAgc2VsZi5fYnVmc2l6ZSA9IGJ1ZnNpemUKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLl9lcnJvcnMgPSBlcnJvcnMKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzdHJpbmcpOgogICAgICAgICAjIHRoZSBzcGVjaWFsIGFyZ3VtZW50ICItIiBtZWFucyBzeXMuc3Rke2luLG91dH0KQEAgLTExNjAsMTQgKzExNjUsMTggQEAKIAogICAgICAgICAjIGFsbCBvdGhlciBhcmd1bWVudHMgYXJlIHVzZWQgYXMgZmlsZSBuYW1lcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gb3BlbihzdHJpbmcsIHNlbGYuX21vZGUsIHNlbGYuX2J1ZnNpemUpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gb3BlbihzdHJpbmcsIHNlbGYuX21vZGUsIHNlbGYuX2J1ZnNpemUsIHNlbGYuX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JzKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgbWVzc2FnZSA9IF8oImNhbid0IG9wZW4gJyVzJzogJXMiKQogICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRUeXBlRXJyb3IobWVzc2FnZSAlIChzdHJpbmcsIGUpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBhcmdzID0gc2VsZi5fbW9kZSwgc2VsZi5fYnVmc2l6ZQotICAgICAgICBhcmdzX3N0ciA9ICcsICcuam9pbihyZXByKGFyZykgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyAhPSAtMSkKKyAgICAgICAga3dhcmdzID0gWygnZW5jb2RpbmcnLCBzZWxmLl9lbmNvZGluZyksICgnZXJyb3JzJywgc2VsZi5fZXJyb3JzKV0KKyAgICAgICAgYXJnc19zdHIgPSAnLCAnLmpvaW4oW3JlcHIoYXJnKSBmb3IgYXJnIGluIGFyZ3MgaWYgYXJnICE9IC0xXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJXM9JXInICUgKGt3LCBhcmcpIGZvciBrdywgYXJnIGluIGt3YXJncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJnIGlzIG5vdCBOb25lXSkKICAgICAgICAgcmV0dXJuICclcyglcyknICUgKHR5cGUoc2VsZikuX19uYW1lX18sIGFyZ3Nfc3RyKQogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjAwMSwxNyArMjAxMCwxNCBAQAogICAgICAgICAgICAgIyByZXBsYWNlIGFyZ3VtZW50cyByZWZlcmVuY2luZyBmaWxlcyB3aXRoIHRoZSBmaWxlIGNvbnRlbnQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBhcmdzX2ZpbGUgPSBvcGVuKGFyZ19zdHJpbmdbMTpdKQotICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihhcmdfc3RyaW5nWzE6XSkgYXMgYXJnc19maWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgYXJnX3N0cmluZ3MgPSBbXQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZ19saW5lIGluIGFyZ3NfZmlsZS5yZWFkKCkuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5jb252ZXJ0X2FyZ19saW5lX3RvX2FyZ3MoYXJnX2xpbmUpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgYXJnX3N0cmluZ3MgPSBzZWxmLl9yZWFkX2FyZ3NfZnJvbV9maWxlcyhhcmdfc3RyaW5ncykKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19hcmdfc3RyaW5ncy5leHRlbmQoYXJnX3N0cmluZ3MpCi0gICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzX2ZpbGUuY2xvc2UoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBlcnIgPSBfc3lzLmV4Y19pbmZvKClbMV0KICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihzdHIoZXJyKSkKIApkaWZmIC0tZ2l0IGEvTGliL2FzdC5weSBiL0xpYi9hc3QucHkKaW5kZXggMTNmNTlmOS4uMDJjM2IyOCAxMDA2NDQKLS0tIGEvTGliL2FzdC5weQorKysgYi9MaWIvYXN0LnB5CkBAIC00Miw3ICs0Miw2IEBACiAgICAgUHl0aG9uIGxpdGVyYWwgc3RydWN0dXJlczogc3RyaW5ncywgYnl0ZXMsIG51bWJlcnMsIHR1cGxlcywgbGlzdHMsIGRpY3RzLAogICAgIHNldHMsIGJvb2xlYW5zLCBhbmQgTm9uZS4KICAgICAiIiIKLSAgICBfc2FmZV9uYW1lcyA9IHsnTm9uZSc6IE5vbmUsICdUcnVlJzogVHJ1ZSwgJ0ZhbHNlJzogRmFsc2V9CiAgICAgaWYgaXNpbnN0YW5jZShub2RlX29yX3N0cmluZywgc3RyKToKICAgICAgICAgbm9kZV9vcl9zdHJpbmcgPSBwYXJzZShub2RlX29yX3N0cmluZywgbW9kZT0nZXZhbCcpCiAgICAgaWYgaXNpbnN0YW5jZShub2RlX29yX3N0cmluZywgRXhwcmVzc2lvbik6CkBAIC02MSw5ICs2MCw4IEBACiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBEaWN0KToKICAgICAgICAgICAgIHJldHVybiBkaWN0KChfY29udmVydChrKSwgX2NvbnZlcnQodikpIGZvciBrLCB2CiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB6aXAobm9kZS5rZXlzLCBub2RlLnZhbHVlcykpCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBOYW1lKToKLSAgICAgICAgICAgIGlmIG5vZGUuaWQgaW4gX3NhZmVfbmFtZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9zYWZlX25hbWVzW25vZGUuaWRdCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBOYW1lQ29uc3RhbnQpOgorICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFVuYXJ5T3ApIGFuZCBcCiAgICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wLCAoVUFkZCwgVVN1YikpIGFuZCBcCiAgICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wZXJhbmQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNoYXQucHkgYi9MaWIvYXN5bmNoYXQucHkKaW5kZXggNGUyNmJiNS4uZjA1NWQ2MyAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaGF0LnB5CisrKyBiL0xpYi9hc3luY2hhdC5weQpAQCAtNTYsOCArNTYsOCBAQAogCiAgICAgIyB0aGVzZSBhcmUgb3ZlcnJpZGFibGUgZGVmYXVsdHMKIAotICAgIGFjX2luX2J1ZmZlcl9zaXplICAgICAgID0gNDA5NgotICAgIGFjX291dF9idWZmZXJfc2l6ZSAgICAgID0gNDA5NgorICAgIGFjX2luX2J1ZmZlcl9zaXplICAgICAgID0gNjU1MzYKKyAgICBhY19vdXRfYnVmZmVyX3NpemUgICAgICA9IDY1NTM2CiAKICAgICAjIHdlIGRvbid0IHdhbnQgdG8gZW5hYmxlIHRoZSB1c2Ugb2YgZW5jb2RpbmcgYnkgZGVmYXVsdCwgYmVjYXVzZSB0aGF0IGlzIGEKICAgICAjIHNpZ24gb2YgYW4gYXBwbGljYXRpb24gYnVnIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBwYXNzIHNpbGVudGx5CkBAIC0xMTQsNyArMTE0LDcgQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWN2IChzZWxmLmFjX2luX2J1ZmZlcl9zaXplKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIHdoeToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IoKQogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgICAgICAgICAgIyBzZW5kIHRoZSBkYXRhCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbnVtX3NlbnQgPSBzZWxmLnNlbmQoZGF0YSkKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcigpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY29yZS5weSBiL0xpYi9hc3luY29yZS5weQppbmRleCA5MDlkOWY2Li43NTQ4MWRkIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNvcmUucHkKKysrIGIvTGliL2FzeW5jb3JlLnB5CkBAIC0xMTIsNyArMTEyLDcgQEAKICAgICAgICAgICAgIG9iai5oYW5kbGVfZXhwdF9ldmVudCgpCiAgICAgICAgIGlmIGZsYWdzICYgKHNlbGVjdC5QT0xMSFVQIHwgc2VsZWN0LlBPTExFUlIgfCBzZWxlY3QuUE9MTE5WQUwpOgogICAgICAgICAgICAgb2JqLmhhbmRsZV9jbG9zZSgpCi0gICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgIGlmIGUuYXJnc1swXSBub3QgaW4gX0RJU0NPTk5FQ1RFRDoKICAgICAgICAgICAgIG9iai5oYW5kbGVfZXJyb3IoKQogICAgICAgICBlbHNlOgpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgICAgICAgICAjIHBhc3NlZCBiZSBjb25uZWN0ZWQuCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hZGRyID0gc29jay5nZXRwZWVybmFtZSgpCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSBpbiAoRU5PVENPTk4sIEVJTlZBTCk6CiAgICAgICAgICAgICAgICAgICAgICMgVG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGdvdCBhbiB1bmNvbm5lY3RlZAogICAgICAgICAgICAgICAgICAgICAjIHNvY2tldC4KQEAgLTMwNCw3ICszMDQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmdldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSB8IDEKICAgICAgICAgICAgICAgICApCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCiAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyZXNzCiAgICAgICAgICAgICBzZWxmLmhhbmRsZV9jb25uZWN0X2V2ZW50KCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcihlcnIsIGVycm9yY29kZVtlcnJdKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnIsIGVycm9yY29kZVtlcnJdKQogCiAgICAgZGVmIGFjY2VwdChzZWxmKToKICAgICAgICAgIyBYWFggY2FuIHJldHVybiBlaXRoZXIgYW4gYWRkcmVzcyBwYWlyIG9yIE5vbmUKQEAgLTM1Myw3ICszNTMsNyBAQAogICAgICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCiAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIHdoeToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICAgaWYgd2h5LmFyZ3NbMF0gaW4gKEVXT1VMREJMT0NLLCBFQ09OTkFCT1JURUQsIEVBR0FJTik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGVsc2U6CkBAIC0zNjUsNyArMzY1LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5zb2NrZXQuc2VuZChkYXRhKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIHdoeToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICAgaWYgd2h5LmFyZ3NbMF0gPT0gRVdPVUxEQkxPQ0s6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgIGVsaWYgd2h5LmFyZ3NbMF0gaW4gX0RJU0NPTk5FQ1RFRDoKQEAgLTM4NCw3ICszODQsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyB3aHk6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgICMgd2luc29jayBzb21ldGltZXMgcmFpc2VzIEVOT1RDT05OCiAgICAgICAgICAgICBpZiB3aHkuYXJnc1swXSBpbiBfRElTQ09OTkVDVEVEOgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nsb3NlKCkKQEAgLTM5NywxMSArMzk3LDEyIEBACiAgICAgICAgIHNlbGYuYWNjZXB0aW5nID0gRmFsc2UKICAgICAgICAgc2VsZi5jb25uZWN0aW5nID0gRmFsc2UKICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyB3aHk6Ci0gICAgICAgICAgICBpZiB3aHkuYXJnc1swXSBub3QgaW4gKEVOT1RDT05OLCBFQkFERik6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgaWYgc2VsZi5zb2NrZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgorICAgICAgICAgICAgICAgIGlmIHdoeS5hcmdzWzBdIG5vdCBpbiAoRU5PVENPTk4sIEVCQURGKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICMgY2hlYXAgaW5oZXJpdGFuY2UsIHVzZWQgdG8gcGFzcyBhbGwgb3RoZXIgYXR0cmlidXRlCiAgICAgIyByZWZlcmVuY2VzIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCkBAIC00NDMsNyArNDQ0LDcgQEAKICAgICBkZWYgaGFuZGxlX2Nvbm5lY3RfZXZlbnQoc2VsZik6CiAgICAgICAgIGVyciA9IHNlbGYuc29ja2V0LmdldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19FUlJPUikKICAgICAgICAgaWYgZXJyICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoZXJyLCBfc3RyZXJyb3IoZXJyKSkKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJyLCBfc3RyZXJyb3IoZXJyKSkKICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdCgpCiAgICAgICAgIHNlbGYuY29ubmVjdGVkID0gVHJ1ZQogICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBGYWxzZQpAQCAtNTMyLDcgKzUzMyw3IEBACiAKICAgICBkZWYgaW5pdGlhdGVfc2VuZChzZWxmKToKICAgICAgICAgbnVtX3NlbnQgPSAwCi0gICAgICAgIG51bV9zZW50ID0gZGlzcGF0Y2hlci5zZW5kKHNlbGYsIHNlbGYub3V0X2J1ZmZlcls6NTEyXSkKKyAgICAgICAgbnVtX3NlbnQgPSBkaXNwYXRjaGVyLnNlbmQoc2VsZiwgc2VsZi5vdXRfYnVmZmVyWzo2NTUzNl0pCiAgICAgICAgIHNlbGYub3V0X2J1ZmZlciA9IHNlbGYub3V0X2J1ZmZlcltudW1fc2VudDpdCiAKICAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2Jhc2U2NC5weSBiL0xpYi9iYXNlNjQucHkKaW5kZXggYjZlODJiNi4uOWMxNTc1MiAxMDA3NTUKLS0tIGEvTGliL2Jhc2U2NC5weQorKysgYi9MaWIvYmFzZTY0LnB5CkBAIC0xMzgsMjEgKzEzOCwxMCBAQAogCiAKICMgQmFzZTMyIGVuY29kaW5nL2RlY29kaW5nIG11c3QgYmUgZG9uZSBpbiBQeXRob24KLV9iMzJhbHBoYWJldCA9IHsKLSAgICAwOiBiJ0EnLCAgOTogYidKJywgMTg6IGInUycsIDI3OiBiJzMnLAotICAgIDE6IGInQicsIDEwOiBiJ0snLCAxOTogYidUJywgMjg6IGInNCcsCi0gICAgMjogYidDJywgMTE6IGInTCcsIDIwOiBiJ1UnLCAyOTogYic1JywKLSAgICAzOiBiJ0QnLCAxMjogYidNJywgMjE6IGInVicsIDMwOiBiJzYnLAotICAgIDQ6IGInRScsIDEzOiBiJ04nLCAyMjogYidXJywgMzE6IGInNycsCi0gICAgNTogYidGJywgMTQ6IGInTycsIDIzOiBiJ1gnLAotICAgIDY6IGInRycsIDE1OiBiJ1AnLCAyNDogYidZJywKLSAgICA3OiBiJ0gnLCAxNjogYidRJywgMjU6IGInWicsCi0gICAgODogYidJJywgMTc6IGInUicsIDI2OiBiJzInLAotICAgIH0KLQotX2IzMnRhYiA9IFt2WzBdIGZvciBrLCB2IGluIHNvcnRlZChfYjMyYWxwaGFiZXQuaXRlbXMoKSldCi1fYjMycmV2ID0gZGljdChbKHZbMF0sIGspIGZvciBrLCB2IGluIF9iMzJhbHBoYWJldC5pdGVtcygpXSkKLQorX2IzMmFscGhhYmV0ID0gYidBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2NycKK19iMzJ0YWIgPSBbYnl0ZXMoW2ldKSBmb3IgaSBpbiBfYjMyYWxwaGFiZXRdCitfYjMydGFiMiA9IFthICsgYiBmb3IgYSBpbiBfYjMydGFiIGZvciBiIGluIF9iMzJ0YWJdCitfYjMycmV2ID0ge3Y6IGsgZm9yIGssIHYgaW4gZW51bWVyYXRlKF9iMzJhbHBoYWJldCl9CiAKIGRlZiBiMzJlbmNvZGUocyk6CiAgICAgIiIiRW5jb2RlIGEgYnl0ZSBzdHJpbmcgdXNpbmcgQmFzZTMyLgpAQCAtMTYxLDMwICsxNTAsMjAgQEAKICAgICAiIiIKICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICBxdWFudGEsIGxlZnRvdmVyID0gZGl2bW9kKGxlbihzKSwgNSkKKyAgICBsZWZ0b3ZlciA9IGxlbihzKSAlIDUKICAgICAjIFBhZCB0aGUgbGFzdCBxdWFudHVtIHdpdGggemVybyBiaXRzIGlmIG5lY2Vzc2FyeQogICAgIGlmIGxlZnRvdmVyOgogICAgICAgICBzID0gcyArIGJ5dGVzKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKLSAgICAgICAgcXVhbnRhICs9IDEKICAgICBlbmNvZGVkID0gYnl0ZWFycmF5KCkKLSAgICBmb3IgaSBpbiByYW5nZShxdWFudGEpOgotICAgICAgICAjIGMxIGFuZCBjMiBhcmUgMTYgYml0cyB3aWRlLCBjMyBpcyA4IGJpdHMgd2lkZS4gIFRoZSBpbnRlbnQgb2YgdGhpcwotICAgICAgICAjIGNvZGUgaXMgdG8gcHJvY2VzcyB0aGUgNDAgYml0cyBpbiB1bml0cyBvZiA1IGJpdHMuICBTbyB3ZSB0YWtlIHRoZSAxCi0gICAgICAgICMgbGVmdG92ZXIgYml0IG9mIGMxIGFuZCB0YWNrIGl0IG9udG8gYzIuICBUaGVuIHdlIHRha2UgdGhlIDIgbGVmdG92ZXIKLSAgICAgICAgIyBiaXRzIG9mIGMyIGFuZCB0YWNrIHRoZW0gb250byBjMy4gIFRoZSBzaGlmdHMgYW5kIG1hc2tzIGFyZSBpbnRlbmRlZAotICAgICAgICAjIHRvIGdpdmUgdXMgdmFsdWVzIG9mIGV4YWN0bHkgNSBiaXRzIGluIHdpZHRoLgotICAgICAgICBjMSwgYzIsIGMzID0gc3RydWN0LnVucGFjaygnIUhIQicsIHNbaSo1OihpKzEpKjVdKQotICAgICAgICBjMiArPSAoYzEgJiAxKSA8PCAxNiAjIDE3IGJpdHMgd2lkZQotICAgICAgICBjMyArPSAoYzIgJiAzKSA8PCA4ICAjIDEwIGJpdHMgd2lkZQotICAgICAgICBlbmNvZGVkICs9IGJ5dGVzKFtfYjMydGFiW2MxID4+IDExXSwgICAgICAgICAjIGJpdHMgMSAtIDUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX2IzMnRhYlsoYzEgPj4gNikgJiAweDFmXSwgIyBiaXRzIDYgLSAxMAotICAgICAgICAgICAgICAgICAgICAgICAgICBfYjMydGFiWyhjMSA+PiAxKSAmIDB4MWZdLCAjIGJpdHMgMTEgLSAxNQotICAgICAgICAgICAgICAgICAgICAgICAgICBfYjMydGFiW2MyID4+IDEyXSwgICAgICAgICAjIGJpdHMgMTYgLSAyMCAoMSAtIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9iMzJ0YWJbKGMyID4+IDcpICYgMHgxZl0sICMgYml0cyAyMSAtIDI1ICg2IC0gMTApCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9iMzJ0YWJbKGMyID4+IDIpICYgMHgxZl0sICMgYml0cyAyNiAtIDMwICgxMSAtIDE1KQotICAgICAgICAgICAgICAgICAgICAgICAgICBfYjMydGFiW2MzID4+IDVdLCAgICAgICAgICAjIGJpdHMgMzEgLSAzNSAoMSAtIDUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9iMzJ0YWJbYzMgJiAweDFmXSwgICAgICAgICMgYml0cyAzNiAtIDQwICgxIC0gNSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKKyAgICBiMzJ0YWIyID0gX2IzMnRhYjIKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocyksIDUpOgorICAgICAgICBjID0gZnJvbV9ieXRlcyhzW2k6IGkgKyA1XSwgJ2JpZycpCisgICAgICAgIGVuY29kZWQgKz0gKGIzMnRhYjJbYyA+PiAzMF0gKyAgICAgICAgICAgIyBiaXRzIDEgLSAxMAorICAgICAgICAgICAgICAgICAgICBiMzJ0YWIyWyhjID4+IDIwKSAmIDB4M2ZmXSArICMgYml0cyAxMSAtIDIwCisgICAgICAgICAgICAgICAgICAgIGIzMnRhYjJbKGMgPj4gMTApICYgMHgzZmZdICsgIyBiaXRzIDIxIC0gMzAKKyAgICAgICAgICAgICAgICAgICAgYjMydGFiMltjICYgMHgzZmZdICAgICAgICAgICAjIGJpdHMgMzEgLSA0MAorICAgICAgICAgICAgICAgICAgICkKICAgICAjIEFkanVzdCBmb3IgYW55IGxlZnRvdmVyIHBhcnRpYWwgcXVhbnRhCiAgICAgaWYgbGVmdG92ZXIgPT0gMToKICAgICAgICAgZW5jb2RlZFstNjpdID0gYic9PT09PT0nCkBAIC0xOTYsNyArMTc1LDYgQEAKICAgICAgICAgZW5jb2RlZFstMTpdID0gYic9JwogICAgIHJldHVybiBieXRlcyhlbmNvZGVkKQogCi0KIGRlZiBiMzJkZWNvZGUocywgY2FzZWZvbGQ9RmFsc2UsIG1hcDAxPU5vbmUpOgogICAgICIiIkRlY29kZSBhIEJhc2UzMiBlbmNvZGVkIGJ5dGUgc3RyaW5nLgogCkBAIC0yMTcsOCArMTk1LDcgQEAKICAgICBjaGFyYWN0ZXJzIHByZXNlbnQgaW4gdGhlIGlucHV0LgogICAgICIiIgogICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQotICAgIHF1YW50YSwgbGVmdG92ZXIgPSBkaXZtb2QobGVuKHMpLCA4KQotICAgIGlmIGxlZnRvdmVyOgorICAgIGlmIGxlbihzKSAlIDg6CiAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdJbmNvcnJlY3QgcGFkZGluZycpCiAgICAgIyBIYW5kbGUgc2VjdGlvbiAyLjQgemVybyBhbmQgb25lIG1hcHBpbmcuICBUaGUgZmxhZyBtYXAwMSB3aWxsIGJlIGVpdGhlcgogICAgICMgRmFsc2UsIG9yIHRoZSBjaGFyYWN0ZXIgdG8gbWFwIHRoZSBkaWdpdCAxIChvbmUpIHRvLiAgSXQgc2hvdWxkIGJlCkBAIC0yMzIsNDIgKzIwOSwzNiBAQAogICAgICMgU3RyaXAgb2ZmIHBhZCBjaGFyYWN0ZXJzIGZyb20gdGhlIHJpZ2h0LiAgV2UgbmVlZCB0byBjb3VudCB0aGUgcGFkCiAgICAgIyBjaGFyYWN0ZXJzIGJlY2F1c2UgdGhpcyB3aWxsIHRlbGwgdXMgaG93IG1hbnkgbnVsbCBieXRlcyB0byByZW1vdmUgZnJvbQogICAgICMgdGhlIGVuZCBvZiB0aGUgZGVjb2RlZCBzdHJpbmcuCi0gICAgcGFkY2hhcnMgPSAwCi0gICAgbW8gPSByZS5zZWFyY2goYicoP1A8cGFkPls9XSopJCcsIHMpCi0gICAgaWYgbW86Ci0gICAgICAgIHBhZGNoYXJzID0gbGVuKG1vLmdyb3VwKCdwYWQnKSkKLSAgICAgICAgaWYgcGFkY2hhcnMgPiAwOgotICAgICAgICAgICAgcyA9IHNbOi1wYWRjaGFyc10KKyAgICBsID0gbGVuKHMpCisgICAgcyA9IHMucnN0cmlwKGInPScpCisgICAgcGFkY2hhcnMgPSBsIC0gbGVuKHMpCiAgICAgIyBOb3cgZGVjb2RlIHRoZSBmdWxsIHF1YW50YQotICAgIHBhcnRzID0gW10KLSAgICBhY2MgPSAwCi0gICAgc2hpZnQgPSAzNQotICAgIGZvciBjIGluIHM6Ci0gICAgICAgIHZhbCA9IF9iMzJyZXYuZ2V0KGMpCi0gICAgICAgIGlmIHZhbCBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgYmluYXNjaWkuRXJyb3IoJ05vbi1iYXNlMzIgZGlnaXQgZm91bmQnKQotICAgICAgICBhY2MgKz0gX2IzMnJldltjXSA8PCBzaGlmdAotICAgICAgICBzaGlmdCAtPSA1Ci0gICAgICAgIGlmIHNoaWZ0IDwgMDoKLSAgICAgICAgICAgIHBhcnRzLmFwcGVuZChiaW5hc2NpaS51bmhleGxpZnkoYnl0ZXMoJyUwMTB4JyAlIGFjYywgImFzY2lpIikpKQotICAgICAgICAgICAgYWNjID0gMAotICAgICAgICAgICAgc2hpZnQgPSAzNQorICAgIGRlY29kZWQgPSBieXRlYXJyYXkoKQorICAgIGIzMnJldiA9IF9iMzJyZXYKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocyksIDgpOgorICAgICAgICBxdWFudGEgPSBzW2k6IGkgKyA4XQorICAgICAgICBhY2MgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBjIGluIHF1YW50YToKKyAgICAgICAgICAgICAgICBhY2MgPSAoYWNjIDw8IDUpICsgYjMycmV2W2NdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdOb24tYmFzZTMyIGRpZ2l0IGZvdW5kJykgZnJvbSBOb25lCisgICAgICAgIGRlY29kZWQgKz0gYWNjLnRvX2J5dGVzKDUsICdiaWcnKQogICAgICMgUHJvY2VzcyB0aGUgbGFzdCwgcGFydGlhbCBxdWFudGEKLSAgICBsYXN0ID0gYmluYXNjaWkudW5oZXhsaWZ5KGJ5dGVzKCclMDEweCcgJSBhY2MsICJhc2NpaSIpKQotICAgIGlmIHBhZGNoYXJzID09IDA6Ci0gICAgICAgIGxhc3QgPSBiJycgICAgICAgICAgICAgICAgICAgICAgIyBObyBjaGFyYWN0ZXJzCi0gICAgZWxpZiBwYWRjaGFycyA9PSAxOgotICAgICAgICBsYXN0ID0gbGFzdFs6LTFdCi0gICAgZWxpZiBwYWRjaGFycyA9PSAzOgotICAgICAgICBsYXN0ID0gbGFzdFs6LTJdCi0gICAgZWxpZiBwYWRjaGFycyA9PSA0OgotICAgICAgICBsYXN0ID0gbGFzdFs6LTNdCi0gICAgZWxpZiBwYWRjaGFycyA9PSA2OgotICAgICAgICBsYXN0ID0gbGFzdFs6LTRdCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgYmluYXNjaWkuRXJyb3IoJ0luY29ycmVjdCBwYWRkaW5nJykKLSAgICBwYXJ0cy5hcHBlbmQobGFzdCkKLSAgICByZXR1cm4gYicnLmpvaW4ocGFydHMpCisgICAgaWYgcGFkY2hhcnM6CisgICAgICAgIGFjYyA8PD0gNSAqIHBhZGNoYXJzCisgICAgICAgIGxhc3QgPSBhY2MudG9fYnl0ZXMoNSwgJ2JpZycpCisgICAgICAgIGlmIHBhZGNoYXJzID09IDE6CisgICAgICAgICAgICBkZWNvZGVkWy01Ol0gPSBsYXN0WzotMV0KKyAgICAgICAgZWxpZiBwYWRjaGFycyA9PSAzOgorICAgICAgICAgICAgZGVjb2RlZFstNTpdID0gbGFzdFs6LTJdCisgICAgICAgIGVsaWYgcGFkY2hhcnMgPT0gNDoKKyAgICAgICAgICAgIGRlY29kZWRbLTU6XSA9IGxhc3RbOi0zXQorICAgICAgICBlbGlmIHBhZGNoYXJzID09IDY6CisgICAgICAgICAgICBkZWNvZGVkWy01Ol0gPSBsYXN0WzotNF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdJbmNvcnJlY3QgcGFkZGluZycpCisgICAgcmV0dXJuIGJ5dGVzKGRlY29kZWQpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvYnoyLnB5IGIvTGliL2J6Mi5weQppbmRleCBjMzA3NTA3Li42ZTZhMmI5IDEwMDY0NAotLS0gYS9MaWIvYnoyLnB5CisrKyBiL0xpYi9iejIucHkKQEAgLTksNyArOSw2IEBACiAKIF9fYXV0aG9yX18gPSAiTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPiIKIAotaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KIGltcG9ydCB3YXJuaW5ncwogCkBAIC0yOCw2ICsyNyw4IEBACiAKIF9CVUZGRVJfU0laRSA9IDgxOTIKIAorX2J1aWx0aW5fb3BlbiA9IG9wZW4KKwogCiBjbGFzcyBCWjJGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKIApAQCAtNDMsMTIgKzQ0LDEzIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSJyIiwgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSk6CiAgICAgICAgICIiIk9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUuCiAKLSAgICAgICAgSWYgZmlsZW5hbWUgaXMgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBpcyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0bwotICAgICAgICBiZSBvcGVuZWQuIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBvYmplY3QsIHdoaWNoIHdpbGwgYmUgdXNlZCB0bwotICAgICAgICByZWFkIG9yIHdyaXRlIHRoZSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXQgZ2l2ZXMgdGhlIG5hbWUKKyAgICAgICAgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LAorICAgICAgICB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgogCi0gICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywgb3IgJ2EnIGZvcgotICAgICAgICBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgJ3JiJywgJ3diJywgYW5kICdhYicuCisgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywKKyAgICAgICAgb3IgJ2EnIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgJ3JiJywKKyAgICAgICAgJ3diJywgYW5kICdhYicuCiAKICAgICAgICAgYnVmZmVyaW5nIGlzIGlnbm9yZWQuIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4KIApAQCAtOTAsMTAgKzkyLDEwIEBACiAgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQogICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6Ci0gICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICBzZWxmLl9mcCA9IF9idWlsdGluX29wZW4oZmlsZW5hbWUsIG1vZGUpCiAgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CkBAIC0xODksMTUgKzE5MSwxNyBAQAogCiAgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgIyBFbmQtb2Ytc3RyZWFtIG1hcmtlciBhbmQgZW5kIG9mIGZpbGUuIFdlJ3JlIGdvb2QuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgUHJvYmxlbSAtIHdlIHdlcmUgZXhwZWN0aW5nIG1vcmUgY29tcHJlc3NlZCBkYXRhLgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQogCi0gICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgogICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgogICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCiAKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQpAQCAtNDEyLDcgKzQxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYWxsKHJldHVybl9kYXRhPUZhbHNlKQogICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiB7fSIuZm9ybWF0KHdoZW5jZSkpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiAlcyIgJSAod2hlbmNlLCkpCiAKICAgICAgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KICAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKQEAgLTQzNiwyMCArNDQwLDIwIEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKLSAgICBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzCisgICAgb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgogCi0gICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiwgInciLCAid2IiLCAiYSIgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsCi0gICAgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgaXMgInJiIiwgYW5kIHRoZQotICAgIGRlZmF1bHQgY29tcHJlc3NsZXZlbCBpcyA5LgorICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgImEiIG9yICJhYiIgZm9yCisgICAgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBtb2RlCisgICAgaXMgInJiIiwgYW5kIHRoZSBkZWZhdWx0IGNvbXByZXNzbGV2ZWwgaXMgOS4KIAotICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBCWjJGaWxlIGNvbnN0cnVjdG9yOgotICAgIEJaMkZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzCi0gICAgYW5kIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBCWjJGaWxlCisgICAgY29uc3RydWN0b3I6IEJaMkZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsCisgICAgdGhlIGVuY29kaW5nLCBlcnJvcnMgYW5kIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgogCiAgICAgRm9yIHRleHQgbW9kZSwgYSBCWjJGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgotICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZwotICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisgICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCisgICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KIAogICAgICIiIgogICAgIGlmICJ0IiBpbiBtb2RlOgpkaWZmIC0tZ2l0IGEvTGliL2NQcm9maWxlLnB5IGIvTGliL2NQcm9maWxlLnB5CmluZGV4IGMyNGQ0NWIuLjExODQzODUgMTAwNzU1Ci0tLSBhL0xpYi9jUHJvZmlsZS5weQorKysgYi9MaWIvY1Byb2ZpbGUucHkKQEAgLTcsNTQgKzcsMjAgQEAKIF9fYWxsX18gPSBbInJ1biIsICJydW5jdHgiLCAiUHJvZmlsZSJdCiAKIGltcG9ydCBfbHNwcm9mCitpbXBvcnQgcHJvZmlsZSBhcyBfcHlwcm9maWxlCiAKICMgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAjIFNpbXBsZSBpbnRlcmZhY2UKIAogZGVmIHJ1bihzdGF0ZW1lbnQsIGZpbGVuYW1lPU5vbmUsIHNvcnQ9LTEpOgotICAgICIiIlJ1biBzdGF0ZW1lbnQgdW5kZXIgcHJvZmlsZXIgb3B0aW9uYWxseSBzYXZpbmcgcmVzdWx0cyBpbiBmaWxlbmFtZQotCi0gICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlCi0gICAgImV4ZWMiIHN0YXRlbWVudCwgYW5kIGFuIG9wdGlvbmFsIGZpbGUgbmFtZS4gIEluIGFsbCBjYXNlcyB0aGlzCi0gICAgcm91dGluZSBhdHRlbXB0cyB0byAiZXhlYyIgaXRzIGZpcnN0IGFyZ3VtZW50IGFuZCBnYXRoZXIgcHJvZmlsaW5nCi0gICAgc3RhdGlzdGljcyBmcm9tIHRoZSBleGVjdXRpb24uIElmIG5vIGZpbGUgbmFtZSBpcyBwcmVzZW50LCB0aGVuIHRoaXMKLSAgICBmdW5jdGlvbiBhdXRvbWF0aWNhbGx5IHByaW50cyBhIHNpbXBsZSBwcm9maWxpbmcgcmVwb3J0LCBzb3J0ZWQgYnkgdGhlCi0gICAgc3RhbmRhcmQgbmFtZSBzdHJpbmcgKGZpbGUvbGluZS9mdW5jdGlvbi1uYW1lKSB0aGF0IGlzIHByZXNlbnRlZCBpbgotICAgIGVhY2ggbGluZS4KLSAgICAiIiIKLSAgICBwcm9mID0gUHJvZmlsZSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcHJvZiA9IHByb2YucnVuKHN0YXRlbWVudCkKLSAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICBwYXNzCi0gICAgZmluYWxseToKLSAgICAgICAgaWYgZmlsZW5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcm9mLmR1bXBfc3RhdHMoZmlsZW5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQgPSBwcm9mLnByaW50X3N0YXRzKHNvcnQpCi0gICAgcmV0dXJuIHJlc3VsdAorICAgIHJldHVybiBfcHlwcm9maWxlLl9VdGlscyhQcm9maWxlKS5ydW4oc3RhdGVtZW50LCBmaWxlbmFtZSwgc29ydCkKIAogZGVmIHJ1bmN0eChzdGF0ZW1lbnQsIGdsb2JhbHMsIGxvY2FscywgZmlsZW5hbWU9Tm9uZSwgc29ydD0tMSk6Ci0gICAgIiIiUnVuIHN0YXRlbWVudCB1bmRlciBwcm9maWxlciwgc3VwcGx5aW5nIHlvdXIgb3duIGdsb2JhbHMgYW5kIGxvY2FscywKLSAgICBvcHRpb25hbGx5IHNhdmluZyByZXN1bHRzIGluIGZpbGVuYW1lLgorICAgIHJldHVybiBfcHlwcm9maWxlLl9VdGlscyhQcm9maWxlKS5ydW5jdHgoc3RhdGVtZW50LCBnbG9iYWxzLCBsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgc29ydCkKIAotICAgIHN0YXRlbWVudCBhbmQgZmlsZW5hbWUgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgcHJvZmlsZS5ydW4KLSAgICAiIiIKLSAgICBwcm9mID0gUHJvZmlsZSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcHJvZiA9IHByb2YucnVuY3R4KHN0YXRlbWVudCwgZ2xvYmFscywgbG9jYWxzKQotICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBmaWxlbmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHByb2YuZHVtcF9zdGF0cyhmaWxlbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHByb2YucHJpbnRfc3RhdHMoc29ydCkKLSAgICByZXR1cm4gcmVzdWx0CitydW4uX19kb2NfXyA9IF9weXByb2ZpbGUucnVuLl9fZG9jX18KK3J1bmN0eC5fX2RvY19fID0gX3B5cHJvZmlsZS5ydW5jdHguX19kb2NfXwogCiAjIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCkBAIC03NywxMCArNDMsOSBAQAogCiAgICAgZGVmIGR1bXBfc3RhdHMoc2VsZiwgZmlsZSk6CiAgICAgICAgIGltcG9ydCBtYXJzaGFsCi0gICAgICAgIGYgPSBvcGVuKGZpbGUsICd3YicpCi0gICAgICAgIHNlbGYuY3JlYXRlX3N0YXRzKCkKLSAgICAgICAgbWFyc2hhbC5kdW1wKHNlbGYuc3RhdHMsIGYpCi0gICAgICAgIGYuY2xvc2UoKQorICAgICAgICB3aXRoIG9wZW4oZmlsZSwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N0YXRzKCkKKyAgICAgICAgICAgIG1hcnNoYWwuZHVtcChzZWxmLnN0YXRzLCBmKQogCiAgICAgZGVmIGNyZWF0ZV9zdGF0cyhzZWxmKToKICAgICAgICAgc2VsZi5kaXNhYmxlKCkKZGlmZiAtLWdpdCBhL0xpYi9jZ2kucHkgYi9MaWIvY2dpLnB5CmluZGV4IDA2ZTAzYjUuLjRkZTgyZWEgMTAwNzU1Ci0tLSBhL0xpYi9jZ2kucHkKKysrIGIvTGliL2NnaS5weQpAQCAtODAsNyArODAsNyBAQAogICAgIGlmIGxvZ2ZpbGUgYW5kIG5vdCBsb2dmcDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9nZnAgPSBvcGVuKGxvZ2ZpbGUsICJhIikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgIGlmIG5vdCBsb2dmcDoKICAgICAgICAgbG9nID0gbm9sb2cKQEAgLTk1OCw4ICs5NTgsOCBAQAogICAgIHByaW50KCI8SDM+Q3VycmVudCBXb3JraW5nIERpcmVjdG9yeTo8L0gzPiIpCiAgICAgdHJ5OgogICAgICAgICBwd2QgPSBvcy5nZXRjd2QoKQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBtc2c6Ci0gICAgICAgIHByaW50KCJvcy5lcnJvcjoiLCBodG1sLmVzY2FwZShzdHIobXNnKSkpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgorICAgICAgICBwcmludCgiT1NFcnJvcjoiLCBodG1sLmVzY2FwZShzdHIobXNnKSkpCiAgICAgZWxzZToKICAgICAgICAgcHJpbnQoaHRtbC5lc2NhcGUocHdkKSkKICAgICBwcmludCgpCmRpZmYgLS1naXQgYS9MaWIvY2h1bmsucHkgYi9MaWIvY2h1bmsucHkKaW5kZXggNTg2M2VkMC4uZGM5MGE3NSAxMDA2NDQKLS0tIGEvTGliL2NodW5rLnB5CisrKyBiL0xpYi9jaHVuay5weQpAQCAtNzAsNyArNzAsNyBAQAogICAgICAgICBzZWxmLnNpemVfcmVhZCA9IDAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5vZmZzZXQgPSBzZWxmLmZpbGUudGVsbCgpCi0gICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIElPRXJyb3IpOgorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuc2Vla2FibGUgPSBGYWxzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zZWVrYWJsZSA9IFRydWUKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICAgICBpZiBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQogICAgICAgICBpZiBub3Qgc2VsZi5zZWVrYWJsZToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImNhbm5vdCBzZWVrIikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImNhbm5vdCBzZWVrIikKICAgICAgICAgaWYgd2hlbmNlID09IDE6CiAgICAgICAgICAgICBwb3MgPSBwb3MgKyBzZWxmLnNpemVfcmVhZAogICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgpAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5maWxlLnNlZWsobiwgMSkKICAgICAgICAgICAgICAgICBzZWxmLnNpemVfcmVhZCA9IHNlbGYuc2l6ZV9yZWFkICsgbgogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdoaWxlIHNlbGYuc2l6ZV9yZWFkIDwgc2VsZi5jaHVua3NpemU6CiAgICAgICAgICAgICBuID0gbWluKDgxOTIsIHNlbGYuY2h1bmtzaXplIC0gc2VsZi5zaXplX3JlYWQpCmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKaW5kZXggMjU0NDA5Yi4uZTFhMDc1YyAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpAQCAtMTIsNyArMTIsNyBAQAogZnJvbSBrZXl3b3JkIGltcG9ydCBpc2tleXdvcmQgYXMgX2lza2V5d29yZAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgaGVhcHEgYXMgX2hlYXBxCi1mcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5IGFzIF9wcm94eQorZnJvbSBfd2Vha3JlZiBpbXBvcnQgcHJveHkgYXMgX3Byb3h5CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0IGFzIF9yZXBlYXQsIGNoYWluIGFzIF9jaGFpbiwgc3Rhcm1hcCBhcyBfc3Rhcm1hcAogZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwciBhcyBfcmVjdXJzaXZlX3JlcHIKIApAQCAtMTk5LDEzICsxOTksMTAgQEAKIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICAnUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZycKLSAgICAgICAgaXRlbXMgPSBbW2ssIHNlbGZba11dIGZvciBrIGluIHNlbGZdCiAgICAgICAgIGluc3RfZGljdCA9IHZhcnMoc2VsZikuY29weSgpCiAgICAgICAgIGZvciBrIGluIHZhcnMoT3JkZXJlZERpY3QoKSk6CiAgICAgICAgICAgICBpbnN0X2RpY3QucG9wKGssIE5vbmUpCi0gICAgICAgIGlmIGluc3RfZGljdDoKLSAgICAgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIChpdGVtcywpLCBpbnN0X2RpY3QpCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKGl0ZW1zLCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoKSwgaW5zdF9kaWN0IG9yIE5vbmUsIE5vbmUsIGl0ZXIoc2VsZi5pdGVtcygpKQogCiAgICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgICdvZC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2Ygb2QnCkBAIC04MjIsOSArODE5LDE0IEBACiAKICAgICBfX2NvcHlfXyA9IGNvcHkKIAotICAgIGRlZiBuZXdfY2hpbGQoc2VsZik6ICAgICAgICAgICAgICAgICAgICAgICAgIyBsaWtlIERqYW5nbydzIENvbnRleHQucHVzaCgpCi0gICAgICAgICdOZXcgQ2hhaW5NYXAgd2l0aCBhIG5ldyBkaWN0IGZvbGxvd2VkIGJ5IGFsbCBwcmV2aW91cyBtYXBzLicKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHt9LCAqc2VsZi5tYXBzKQorICAgIGRlZiBuZXdfY2hpbGQoc2VsZiwgbT1Ob25lKTogICAgICAgICAgICAgICAgIyBsaWtlIERqYW5nbydzIENvbnRleHQucHVzaCgpCisgICAgICAgICcnJworICAgICAgICBOZXcgQ2hhaW5NYXAgd2l0aCBhIG5ldyBtYXAgZm9sbG93ZWQgYnkgYWxsIHByZXZpb3VzIG1hcHMuIElmIG5vCisgICAgICAgIG1hcCBpcyBwcm92aWRlZCwgYW4gZW1wdHkgZGljdCBpcyB1c2VkLgorICAgICAgICAnJycKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgbSA9IHt9CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhtLCAqc2VsZi5tYXBzKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHBhcmVudHMoc2VsZik6ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpa2UgRGphbmdvJ3MgQ29udGV4dC5wb3AoKQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL2FiYy5weSBiL0xpYi9jb2xsZWN0aW9ucy9hYmMucHkKaW5kZXggNzkzOTI2OC4uYTg2ODFlYSAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zL2FiYy5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvYWJjLnB5CkBAIC00NTQsOCArNDU0LDcgQEAKICAgICAgICAgcmV0dXJuIGtleSBpbiBzZWxmLl9tYXBwaW5nCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKLSAgICAgICAgICAgIHlpZWxkIGtleQorICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX21hcHBpbmcKIAogS2V5c1ZpZXcucmVnaXN0ZXIoZGljdF9rZXlzKQogCkBAIC02NjMsNyArNjYyLDcgQEAKIAogICAgIF9fc2xvdHNfXyA9ICgpCiAKLSAgICAiIiJBbGwgdGhlIG9wZXJhdGlvbnMgb24gYSByZWFkLW9ubHkgc2VxdWVuY2UuCisgICAgIiIiQWxsIHRoZSBvcGVyYXRpb25zIG9uIGEgcmVhZC13cml0ZSBzZXF1ZW5jZS4KIAogICAgIENvbmNyZXRlIHN1YmNsYXNzZXMgbXVzdCBwcm92aWRlIF9fbmV3X18gb3IgX19pbml0X18sCiAgICAgX19nZXRpdGVtX18sIF9fc2V0aXRlbV9fLCBfX2RlbGl0ZW1fXywgX19sZW5fXywgYW5kIGluc2VydCgpLgpkaWZmIC0tZ2l0IGEvTGliL2NvbG9yc3lzLnB5IGIvTGliL2NvbG9yc3lzLnB5CmluZGV4IGE2YzBjZjYuLmI5M2UzODQgMTAwNjQ0Ci0tLSBhL0xpYi9jb2xvcnN5cy5weQorKysgYi9MaWIvY29sb3JzeXMucHkKQEAgLTMzLDE3ICszMywyNSBAQAogIyBZSVE6IHVzZWQgYnkgY29tcG9zaXRlIHZpZGVvIHNpZ25hbHMgKGxpbmVhciBjb21iaW5hdGlvbnMgb2YgUkdCKQogIyBZOiBwZXJjZWl2ZWQgZ3JleSBsZXZlbCAoMC4wID09IGJsYWNrLCAxLjAgPT0gd2hpdGUpCiAjIEksIFE6IGNvbG9yIGNvbXBvbmVudHMKKyMKKyMgVGhlcmUgYXJlIGEgZ3JlYXQgbWFueSB2ZXJzaW9ucyBvZiB0aGUgY29uc3RhbnRzIHVzZWQgaW4gdGhlc2UgZm9ybXVsYWUuCisjIFRoZSBvbmVzIGluIHRoaXMgbGlicmFyeSB1c2VzIGNvbnN0YW50cyBmcm9tIHRoZSBGQ0MgdmVyc2lvbiBvZiBOVFNDLgogCiBkZWYgcmdiX3RvX3lpcShyLCBnLCBiKToKICAgICB5ID0gMC4zMCpyICsgMC41OSpnICsgMC4xMSpiCi0gICAgaSA9IDAuNjAqciAtIDAuMjgqZyAtIDAuMzIqYgotICAgIHEgPSAwLjIxKnIgLSAwLjUyKmcgKyAwLjMxKmIKKyAgICBpID0gMC43NCooci15KSAtIDAuMjcqKGIteSkKKyAgICBxID0gMC40OCooci15KSArIDAuNDEqKGIteSkKICAgICByZXR1cm4gKHksIGksIHEpCiAKIGRlZiB5aXFfdG9fcmdiKHksIGksIHEpOgotICAgIHIgPSB5ICsgMC45NDgyNjIqaSArIDAuNjI0MDEzKnEKLSAgICBnID0geSAtIDAuMjc2MDY2KmkgLSAwLjYzOTgxMCpxCi0gICAgYiA9IHkgLSAxLjEwNTQ1MCppICsgMS43Mjk4NjAqcQorICAgICMgciA9IHkgKyAoMC4yNypxICsgMC40MSppKSAvICgwLjc0KjAuNDEgKyAwLjI3KjAuNDgpCisgICAgIyBiID0geSArICgwLjc0KnEgLSAwLjQ4KmkpIC8gKDAuNzQqMC40MSArIDAuMjcqMC40OCkKKyAgICAjIGcgPSB5IC0gKDAuMzAqKHIteSkgKyAwLjExKihiLXkpKSAvIDAuNTkKKworICAgIHIgPSB5ICsgMC45NDY4ODIyMTcwOTAwNjkzKmkgKyAwLjYyMzU1NjU4MTk4NjE0MzMqcQorICAgIGcgPSB5IC0gMC4yNzQ3ODc2NDYyOTg5NzgzNCppIC0gMC42MzU2OTEwNzkxODczODAxKnEKKyAgICBiID0geSAtIDEuMTA4NTQ1MDM0NjQyMDMyMippICsgMS43MDkwMDY5Mjg0MDY0NjY2KnEKKwogICAgIGlmIHIgPCAwLjA6CiAgICAgICAgIHIgPSAwLjAKICAgICBpZiBnIDwgMC4wOgpkaWZmIC0tZ2l0IGEvTGliL2NvbXBpbGVhbGwucHkgYi9MaWIvY29tcGlsZWFsbC5weQppbmRleCBkM2NmZjZhLi40NzVkYzFjIDEwMDY0NAotLS0gYS9MaWIvY29tcGlsZWFsbC5weQorKysgYi9MaWIvY29tcGlsZWFsbC5weQpAQCAtMTMsNyArMTMsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgZXJybm8KLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHB5X2NvbXBpbGUKIGltcG9ydCBzdHJ1Y3QKIApAQCAtMzgsNyArMzgsNyBAQAogICAgICAgICBwcmludCgnTGlzdGluZyB7IXJ9Li4uJy5mb3JtYXQoZGlyKSkKICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXIpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBwcmludCgiQ2FuJ3QgbGlzdCB7IXJ9Ii5mb3JtYXQoZGlyKSkKICAgICAgICAgbmFtZXMgPSBbXQogICAgIG5hbWVzLnNvcnQoKQpAQCAtOTEsMjIgKzkxLDIzIEBACiAgICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgotICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZ1bGxuYW1lKQogICAgICAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGNmaWxlKQogICAgICAgICBoZWFkLCB0YWlsID0gbmFtZVs6LTNdLCBuYW1lWy0zOl0KICAgICAgICAgaWYgdGFpbCA9PSAnLnB5JzoKICAgICAgICAgICAgIGlmIG5vdCBmb3JjZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG10aW1lID0gaW50KG9zLnN0YXQoZnVsbG5hbWUpLnN0X210aW1lKQotICAgICAgICAgICAgICAgICAgICBleHBlY3QgPSBzdHJ1Y3QucGFjaygnPDRzbCcsIGltcC5nZXRfbWFnaWMoKSwgbXRpbWUpCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdCA9IHN0cnVjdC5wYWNrKCc8NHNsJywgaW1wb3J0bGliLnV0aWwuTUFHSUNfTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGltZSkKICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGNmaWxlLCAncmInKSBhcyBjaGFuZGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsID0gY2hhbmRsZS5yZWFkKDgpCiAgICAgICAgICAgICAgICAgICAgIGlmIGV4cGVjdCA9PSBhY3R1YWw6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcwotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBpZiBub3QgcXVpZXQ6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ0NvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQpAQCAtMTI0LDcgKzEyNSw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAotICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBJT0Vycm9yKSBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgICAgIGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgICBwcmludCgnKioqIEVycm9yIGNvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0yMDksNyArMjEwLDcgQEAKICAgICAgICAgICAgIHdpdGggKHN5cy5zdGRpbiBpZiBhcmdzLmZsaXN0PT0nLScgZWxzZSBvcGVuKGFyZ3MuZmxpc3QpKSBhcyBmOgogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVfZGVzdHMuYXBwZW5kKGxpbmUuc3RyaXAoKSkKLSAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJlYWRpbmcgZmlsZSBsaXN0IHt9Ii5mb3JtYXQoYXJncy5mbGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKaW5kZXggY2EzYWViZC4uM2QwMzI4MCAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CkBAIC0xOTgsOCArMTk4LDcgQEAKICAgICAgICAgd2FpdGVyID0gX2NyZWF0ZV9hbmRfaW5zdGFsbF93YWl0ZXJzKGZzLCBfQVNfQ09NUExFVEVEKQogCiAgICAgdHJ5OgotICAgICAgICBmb3IgZnV0dXJlIGluIGZpbmlzaGVkOgotICAgICAgICAgICAgeWllbGQgZnV0dXJlCisgICAgICAgIHlpZWxkIGZyb20gZmluaXNoZWQKIAogICAgICAgICB3aGlsZSBwZW5kaW5nOgogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CmluZGV4IDA0MjM4YTcuLmFiYjk5ZDYgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKQEAgLTQwLDcgKzQwLDcgQEAKIAogUHJvY2VzcyAjMS4ubjoKIC0gcmVhZHMgX0NhbGxJdGVtcyBmcm9tICJDYWxsIFEiLCBleGVjdXRlcyB0aGUgY2FsbHMsIGFuZCBwdXRzIHRoZSByZXN1bHRpbmcKLSAgX1Jlc3VsdEl0ZW1zIGluICJSZXF1ZXN0IFEiCisgIF9SZXN1bHRJdGVtcyBpbiAiUmVzdWx0IFEiCiAiIiIKIAogX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwpAQCAtMjQwLDYgKzI0MCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAidGVybWluYXRlZCBhYnJ1cHRseSB3aGlsZSB0aGUgZnV0dXJlIHdhcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAicnVubmluZyBvciBwZW5kaW5nLiIKICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgICAgICAjIERlbGV0ZSByZWZlcmVuY2VzIHRvIG9iamVjdC4gU2VlIGlzc3VlMTYyODQKKyAgICAgICAgICAgICAgICBkZWwgd29ya19pdGVtCiAgICAgICAgICAgICBwZW5kaW5nX3dvcmtfaXRlbXMuY2xlYXIoKQogICAgICAgICAgICAgIyBUZXJtaW5hdGUgcmVtYWluaW5nIHdvcmtlcnMgZm9yY2libHk6IHRoZSBxdWV1ZXMgb3IgdGhlaXIKICAgICAgICAgICAgICMgbG9ja3MgbWF5IGJlIGluIGEgZGlydHkgc3RhdGUgYW5kIGJsb2NrIGZvcmV2ZXIuCkBAIC0yNjQsNiArMjY2LDggQEAKICAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKHJlc3VsdF9pdGVtLmV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0X2l0ZW0ucmVzdWx0KQorICAgICAgICAgICAgICAgICMgRGVsZXRlIHJlZmVyZW5jZXMgdG8gb2JqZWN0LiBTZWUgaXNzdWUxNjI4NAorICAgICAgICAgICAgICAgIGRlbCB3b3JrX2l0ZW0KICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBzdGFydCBzaHV0dGluZyBkb3duLgogICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgICMgTm8gbW9yZSB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCBpZjoKQEAgLTMyNyw3ICszMzEsNyBAQAogICAgICAgICBfY2hlY2tfc3lzdGVtX2xpbWl0cygpCiAKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCisgICAgICAgICAgICBzZWxmLl9tYXhfd29ya2VycyA9IG9zLmNwdV9jb3VudCgpIG9yIDEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbWF4X3dvcmtlcnMKIApkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCA5NWJiNjgyLi5mOWJlYjBmIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtNjMsNiArNjMsOCBAQAogICAgICAgICAgICAgd29ya19pdGVtID0gd29ya19xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSkKICAgICAgICAgICAgIGlmIHdvcmtfaXRlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0ucnVuKCkKKyAgICAgICAgICAgICAgICAjIERlbGV0ZSByZWZlcmVuY2VzIHRvIG9iamVjdC4gU2VlIGlzc3VlMTYyODQKKyAgICAgICAgICAgICAgICBkZWwgd29ya19pdGVtCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKICAgICAgICAgICAgICMgRXhpdCBpZjoKZGlmZiAtLWdpdCBhL0xpYi9jb25maWdwYXJzZXIucHkgYi9MaWIvY29uZmlncGFyc2VyLnB5CmluZGV4IGZkZTFjMTIuLjc5NGY4NTcgMTAwNjQ0Ci0tLSBhL0xpYi9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL2NvbmZpZ3BhcnNlci5weQpAQCAtNjg3LDcgKzY4Nyw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZnA6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQoZnAsIGZpbGVuYW1lKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcmVhZF9vay5hcHBlbmQoZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiByZWFkX29rCmRpZmYgLS1naXQgYS9MaWIvY29udGV4dGxpYi5weSBiL0xpYi9jb250ZXh0bGliLnB5CmluZGV4IDBiNmJmNzEuLjAzYzU2ZGEgMTAwNjQ0Ci0tLSBhL0xpYi9jb250ZXh0bGliLnB5CisrKyBiL0xpYi9jb250ZXh0bGliLnB5CkBAIC00LDcgKzQsNyBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIl0KK19fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLCAiaWdub3JlZCJdCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMTQwLDYgKzE0MCwxOCBAQAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKIAorQGNvbnRleHRtYW5hZ2VyCitkZWYgaWdub3JlZCgqZXhjZXB0aW9ucyk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRvIGlnbm9yZSBzcGVjaWZlZCBleGNlcHRpb25zCisKKyAgICAgICAgIHdpdGggaWdub3JlZChPU0Vycm9yKToKKyAgICAgICAgICAgICBvcy5yZW1vdmUoc29tZWZpbGUpCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZXhjZXB0IGV4Y2VwdGlvbnM6CisgICAgICAgIHBhc3MKIAogIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM1ODUKIGNsYXNzIEV4aXRTdGFjayhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggYzkyZTEzMC4uZTM0YzY0NiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0zNCwxNyArMzQsMTUgQEAKICAgICAgRlVOQ0ZMQUdfVVNFX0VSUk5PIGFzIF9GVU5DRkxBR19VU0VfRVJSTk8sIFwKICAgICAgRlVOQ0ZMQUdfVVNFX0xBU1RFUlJPUiBhcyBfRlVOQ0ZMQUdfVVNFX0xBU1RFUlJPUgogCi0iIiIKLVdJTk9MRUFQSSAtPiBIUkVTVUxUCi1XSU5PTEVBUElfKHR5cGUpCi0KLVNURE1FVEhPRENBTExUWVBFCi0KLVNURE1FVEhPRChuYW1lKQotU1RETUVUSE9EXyh0eXBlLCBuYW1lKQotCi1TVERBUElDQUxMVFlQRQotIiIiCisjIFdJTk9MRUFQSSAtPiBIUkVTVUxUCisjIFdJTk9MRUFQSV8odHlwZSkKKyMKKyMgU1RETUVUSE9EQ0FMTFRZUEUKKyMKKyMgU1RETUVUSE9EKG5hbWUpCisjIFNURE1FVEhPRF8odHlwZSwgbmFtZSkKKyMKKyMgU1REQVBJQ0FMTFRZUEUKIAogZGVmIGNyZWF0ZV9zdHJpbmdfYnVmZmVyKGluaXQsIHNpemU9Tm9uZSk6CiAgICAgIiIiY3JlYXRlX3N0cmluZ19idWZmZXIoYUJ5dGVzKSAtPiBjaGFyYWN0ZXIgYXJyYXkKQEAgLTM5NSw3ICszOTMsNyBAQAogICAgICAgICBfdHlwZV8gPSAibCIKICAgICAgICAgIyBfY2hlY2tfcmV0dmFsXyBpcyBjYWxsZWQgd2l0aCB0aGUgZnVuY3Rpb24ncyByZXN1bHQgd2hlbiBpdAogICAgICAgICAjIGlzIHVzZWQgYXMgcmVzdHlwZS4gIEl0IGNoZWNrcyBmb3IgdGhlIEZBSUxFRCBiaXQsIGFuZAotICAgICAgICAjIHJhaXNlcyBhIFdpbmRvd3NFcnJvciBpZiBpdCBpcyBzZXQuCisgICAgICAgICMgcmFpc2VzIGFuIE9TRXJyb3IgaWYgaXQgaXMgc2V0LgogICAgICAgICAjCiAgICAgICAgICMgVGhlIF9jaGVja19yZXR2YWxfIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBpbiBDLCBzbyB0aGF0IHRoZQogICAgICAgICAjIG1ldGhvZCBkZWZpbml0aW9uIGl0c2VsZiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHRyYWNlYmFjawpAQCAtNDA3LDcgKzQwNSw3IEBACiAgICAgY2xhc3MgT2xlRExMKENETEwpOgogICAgICAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBkbGwgZXhwb3J0aW5nIGZ1bmN0aW9ucyB1c2luZyB0aGUKICAgICAgICAgV2luZG93cyBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbiwgYW5kIHJldHVybmluZyBIUkVTVUxULgotICAgICAgICBIUkVTVUxUIGVycm9yIHZhbHVlcyBhcmUgYXV0b21hdGljYWxseSByYWlzZWQgYXMgV2luZG93c0Vycm9yCisgICAgICAgIEhSRVNVTFQgZXJyb3IgdmFsdWVzIGFyZSBhdXRvbWF0aWNhbGx5IHJhaXNlZCBhcyBPU0Vycm9yCiAgICAgICAgIGV4Y2VwdGlvbnMuCiAgICAgICAgICIiIgogICAgICAgICBfZnVuY19mbGFnc18gPSBfRlVOQ0ZMQUdfU1REQ0FMTApAQCAtNDU2LDcgKzQ1NCw3IEBACiAgICAgICAgICAgICBjb2RlID0gR2V0TGFzdEVycm9yKCkKICAgICAgICAgaWYgZGVzY3IgaXMgTm9uZToKICAgICAgICAgICAgIGRlc2NyID0gRm9ybWF0RXJyb3IoY29kZSkuc3RyaXAoKQotICAgICAgICByZXR1cm4gV2luZG93c0Vycm9yKE5vbmUsIGRlc2NyLCBOb25lLCBjb2RlKQorICAgICAgICByZXR1cm4gT1NFcnJvcihOb25lLCBkZXNjciwgTm9uZSwgY29kZSkKIAogaWYgc2l6ZW9mKGNfdWludCkgPT0gc2l6ZW9mKGNfdm9pZF9wKToKICAgICBjX3NpemVfdCA9IGNfdWludApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy90ZXN0L19faW5pdF9fLnB5CmluZGV4IGNjNWZlMDIuLjdjNzIyMTAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvX19pbml0X18ucHkKQEAgLTM3LDcgKzM3LDcgQEAKIAogZGVmIGZpbmRfcGFja2FnZV9tb2R1bGVzKHBhY2thZ2UsIG1hc2spOgogICAgIGltcG9ydCBmbm1hdGNoCi0gICAgaWYgKGhhc2F0dHIocGFja2FnZSwgIl9fbG9hZGVyX18iKSBhbmQKKyAgICBpZiAocGFja2FnZS5fX2xvYWRlcl9fIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgaGFzYXR0cihwYWNrYWdlLl9fbG9hZGVyX18sICdfZmlsZXMnKSk6CiAgICAgICAgIHBhdGggPSBwYWNrYWdlLl9fbmFtZV9fLnJlcGxhY2UoIi4iLCBvcy5wYXRoLnNlcCkKICAgICAgICAgbWFzayA9IG9zLnBhdGguam9pbihwYXRoLCBtYXNrKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2hlY2tyZXR2YWwucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jaGVja3JldHZhbC5weQppbmRleCAwMWNjYzU3Li4xOWJiODEzIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jaGVja3JldHZhbC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jaGVja3JldHZhbC5weQpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgZGVmIHRlc3Rfb2xlZGxsKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV2luZG93c0Vycm9yLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGVkbGwub2xlYXV0MzIuQ3JlYXRlVHlwZUxpYjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTm9uZSwgTm9uZSkKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfaW50ZXJuYWxzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfaW50ZXJuYWxzLnB5CmluZGV4IGNiZjJlMDUuLjI3MWUzZjUgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ludGVybmFscy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9pbnRlcm5hbHMucHkKQEAgLTUsMTcgKzUsMTQgQEAKIAogIyBYWFggVGhpcyB0ZXN0IG11c3QgYmUgcmV2aWV3ZWQgZm9yIGNvcnJlY3RuZXNzISEhCiAKLSIiIgotY3R5cGVzJyB0eXBlcyBhcmUgY29udGFpbmVyIHR5cGVzLgotCi1UaGV5IGhhdmUgYW4gaW50ZXJuYWwgbWVtb3J5IGJsb2NrLCB3aGljaCBvbmx5IGNvbnNpc3RzIG9mIHNvbWUgYnl0ZXMsCi1idXQgaXQgaGFzIHRvIGtlZXAgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzIGFzIHdlbGwuIFRoaXMgaXMgbm90Ci1yZWFsbHkgbmVlZGVkIGZvciB0cml2aWFsIEMgdHlwZXMgbGlrZSBpbnQgb3IgY2hhciwgYnV0IGl0IGlzIGltcG9ydGFudAotZm9yIGFnZ3JlZ2F0ZSB0eXBlcyBsaWtlIHN0cmluZ3Mgb3IgcG9pbnRlcnMgaW4gcGFydGljdWxhci4KLQotV2hhdCBhYm91dCBwb2ludGVycz8KLQotIiIiCisjIGN0eXBlcycgdHlwZXMgYXJlIGNvbnRhaW5lciB0eXBlcy4KKyMKKyMgVGhleSBoYXZlIGFuIGludGVybmFsIG1lbW9yeSBibG9jaywgd2hpY2ggb25seSBjb25zaXN0cyBvZiBzb21lIGJ5dGVzLAorIyBidXQgaXQgaGFzIHRvIGtlZXAgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzIGFzIHdlbGwuIFRoaXMgaXMgbm90CisjIHJlYWxseSBuZWVkZWQgZm9yIHRyaXZpYWwgQyB0eXBlcyBsaWtlIGludCBvciBjaGFyLCBidXQgaXQgaXMgaW1wb3J0YW50CisjIGZvciBhZ2dyZWdhdGUgdHlwZXMgbGlrZSBzdHJpbmdzIG9yIHBvaW50ZXJzIGluIHBhcnRpY3VsYXIuCisjCisjIFdoYXQgYWJvdXQgcG9pbnRlcnM/CiAKIGNsYXNzIE9iamVjdHNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGFzc2VydFNhbWUoc2VsZiwgYSwgYik6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tYWNob2xpYi5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21hY2hvbGliLnB5CmluZGV4IGVkYTg0NmQuLmZkMjY4MzcgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21hY2hvbGliLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21hY2hvbGliLnB5CkBAIC0zLDM1ICszLDMzIEBACiBpbXBvcnQgdW5pdHRlc3QKIAogIyBCb2IgSXBwb2xpdG86Ci0iIiIKLU9rLi4gdGhlIGNvZGUgdG8gZmluZCB0aGUgZmlsZW5hbWUgZm9yIF9fZ2V0YXR0cl9fIHNob3VsZCBsb29rCi1zb21ldGhpbmcgbGlrZToKLQotaW1wb3J0IG9zCi1mcm9tIG1hY2hvbGliLmR5bGQgaW1wb3J0IGR5bGRfZmluZAotCi1kZWYgZmluZF9saWIobmFtZSk6Ci0gICAgIHBvc3NpYmxlID0gWydsaWInK25hbWUrJy5keWxpYicsIG5hbWUrJy5keWxpYicsCi0gICAgIG5hbWUrJy5mcmFtZXdvcmsvJytuYW1lXQotICAgICBmb3IgZHlsaWIgaW4gcG9zc2libGU6Ci0gICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVhbHBhdGgoZHlsZF9maW5kKGR5bGliKSkKLSAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgIHBhc3MKLSAgICAgcmFpc2UgVmFsdWVFcnJvciwgIiVzIG5vdCBmb3VuZCIgJSAobmFtZSwpCi0KLUl0J2xsIGhhdmUgb3V0cHV0IGxpa2UgdGhpczoKLQotID4+PiBmaW5kX2xpYigncHRocmVhZCcpCi0nL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWInCi0gPj4+IGZpbmRfbGliKCd6JykKLScvdXNyL2xpYi9saWJ6LjEuZHlsaWInCi0gPj4+IGZpbmRfbGliKCdJT0tpdCcpCi0nL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSU9LaXQnCi0KLS1ib2IKLQotIiIiCisjCisjIE9rLi4gdGhlIGNvZGUgdG8gZmluZCB0aGUgZmlsZW5hbWUgZm9yIF9fZ2V0YXR0cl9fIHNob3VsZCBsb29rCisjIHNvbWV0aGluZyBsaWtlOgorIworIyBpbXBvcnQgb3MKKyMgZnJvbSBtYWNob2xpYi5keWxkIGltcG9ydCBkeWxkX2ZpbmQKKyMKKyMgZGVmIGZpbmRfbGliKG5hbWUpOgorIyAgICAgIHBvc3NpYmxlID0gWydsaWInK25hbWUrJy5keWxpYicsIG5hbWUrJy5keWxpYicsCisjICAgICAgbmFtZSsnLmZyYW1ld29yay8nK25hbWVdCisjICAgICAgZm9yIGR5bGliIGluIHBvc3NpYmxlOgorIyAgICAgICAgICB0cnk6CisjICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChkeWxkX2ZpbmQoZHlsaWIpKQorIyAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyMgICAgICAgICAgICAgIHBhc3MKKyMgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiJXMgbm90IGZvdW5kIiAlIChuYW1lLCkKKyMKKyMgSXQnbGwgaGF2ZSBvdXRwdXQgbGlrZSB0aGlzOgorIworIyAgPj4+IGZpbmRfbGliKCdwdGhyZWFkJykKKyMgJy91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliJworIyAgPj4+IGZpbmRfbGliKCd6JykKKyMgJy91c3IvbGliL2xpYnouMS5keWxpYicKKyMgID4+PiBmaW5kX2xpYignSU9LaXQnKQorIyAnL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvSU9LaXQnCisjCisjIC1ib2IKIAogZnJvbSBjdHlwZXMubWFjaG9saWIuZHlsZCBpbXBvcnQgZHlsZF9maW5kCiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkKaW5kZXggZGEyMTMzNi4uOTFhZDMxNCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfd2luMzIucHkKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAgICAgICAgICAjIENhbGwgZnVuY3Rpb25zIHdpdGggaW52YWxpZCBhcmd1bWVudHMsIGFuZCBtYWtlIHN1cmUKICAgICAgICAgICAgICAgICAjIHRoYXQgYWNjZXNzIHZpb2xhdGlvbnMgYXJlIHRyYXBwZWQgYW5kIHJhaXNlIGFuCiAgICAgICAgICAgICAgICAgIyBleGNlcHRpb24uCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV2luZG93c0Vycm9yLCB3aW5kbGwua2VybmVsMzIuR2V0TW9kdWxlSGFuZGxlQSwgMzIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgd2luZGxsLmtlcm5lbDMyLkdldE1vZHVsZUhhbmRsZUEsIDMyKQogCiAgICAgICAgIGRlZiB0ZXN0X25vYXJncyhzZWxmKToKICAgICAgICAgICAgICMgVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBvbiB3aW4zMiB4NjQKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCAwNTRjNTExLi5kMmMwNGQyIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC0xMDIsOSArMTAyLDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoY2NvdXQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgcnYgPT0gMTA6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdnY2Mgb3IgY2MgY29tbWFuZCBub3QgZm91bmQnKQogICAgICAgICByZXMgPSByZS5zZWFyY2goZXhwciwgdHJhY2UpCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggOTU0NjZkNS4uYmMxNDg2YyAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTkxNywyMDMgKzE5MTcsMjAzIEBACiB0aW1lem9uZS5taW4gPSB0aW1lem9uZS5fY3JlYXRlKHRpbWV6b25lLl9taW5vZmZzZXQpCiB0aW1lem9uZS5tYXggPSB0aW1lem9uZS5fY3JlYXRlKHRpbWV6b25lLl9tYXhvZmZzZXQpCiBfRVBPQ0ggPSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKQotIiIiCi1Tb21lIHRpbWUgem9uZSBhbGdlYnJhLiAgRm9yIGEgZGF0ZXRpbWUgeCwgbGV0Ci0gICAgeC5uID0geCBzdHJpcHBlZCBvZiBpdHMgdGltZXpvbmUgLS0gaXRzIG5haXZlIHRpbWUuCi0gICAgeC5vID0geC51dGNvZmZzZXQoKSwgYW5kIGFzc3VtaW5nIHRoYXQgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gb3IKLSAgICAgICAgICByZXR1cm4gTm9uZQotICAgIHguZCA9IHguZHN0KCksIGFuZCBhc3N1bWluZyB0aGF0IGRvZXNuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9yCi0gICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICB4LnMgPSB4J3Mgc3RhbmRhcmQgb2Zmc2V0LCB4Lm8gLSB4LmQKIAotTm93IHNvbWUgZGVyaXZlZCBydWxlcywgd2hlcmUgayBpcyBhIGR1cmF0aW9uICh0aW1lZGVsdGEpLgorIyBTb21lIHRpbWUgem9uZSBhbGdlYnJhLiAgRm9yIGEgZGF0ZXRpbWUgeCwgbGV0CisjICAgICB4Lm4gPSB4IHN0cmlwcGVkIG9mIGl0cyB0aW1lem9uZSAtLSBpdHMgbmFpdmUgdGltZS4KKyMgICAgIHgubyA9IHgudXRjb2Zmc2V0KCksIGFuZCBhc3N1bWluZyB0aGF0IGRvZXNuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9yCisjICAgICAgICAgICByZXR1cm4gTm9uZQorIyAgICAgeC5kID0geC5kc3QoKSwgYW5kIGFzc3VtaW5nIHRoYXQgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gb3IKKyMgICAgICAgICAgIHJldHVybiBOb25lCisjICAgICB4LnMgPSB4J3Mgc3RhbmRhcmQgb2Zmc2V0LCB4Lm8gLSB4LmQKKyMKKyMgTm93IHNvbWUgZGVyaXZlZCBydWxlcywgd2hlcmUgayBpcyBhIGR1cmF0aW9uICh0aW1lZGVsdGEpLgorIworIyAxLiB4Lm8gPSB4LnMgKyB4LmQKKyMgICAgVGhpcyBmb2xsb3dzIGZyb20gdGhlIGRlZmluaXRpb24gb2YgeC5zLgorIworIyAyLiBJZiB4IGFuZCB5IGhhdmUgdGhlIHNhbWUgdHppbmZvIG1lbWJlciwgeC5zID0geS5zLgorIyAgICBUaGlzIGlzIGFjdHVhbGx5IGEgcmVxdWlyZW1lbnQsIGFuIGFzc3VtcHRpb24gd2UgbmVlZCB0byBtYWtlIGFib3V0CisjICAgIHNhbmUgdHppbmZvIGNsYXNzZXMuCisjCisjIDMuIFRoZSBuYWl2ZSBVVEMgdGltZSBjb3JyZXNwb25kaW5nIHRvIHggaXMgeC5uIC0geC5vLgorIyAgICBUaGlzIGlzIGFnYWluIGEgcmVxdWlyZW1lbnQgZm9yIGEgc2FuZSB0emluZm8gY2xhc3MuCisjCisjIDQuICh4K2spLnMgPSB4LnMKKyMgICAgVGhpcyBmb2xsb3dzIGZyb20gIzIsIGFuZCB0aGF0IGRhdGltZXRpbWV0eit0aW1lZGVsdGEgcHJlc2VydmVzIHR6aW5mby4KKyMKKyMgNS4gKHgraykubiA9IHgubiArIGsKKyMgICAgQWdhaW4gZm9sbG93cyBmcm9tIGhvdyBhcml0aG1ldGljIGlzIGRlZmluZWQuCisjCisjIE5vdyB3ZSBjYW4gZXhwbGFpbiB0ei5mcm9tdXRjKHgpLiAgTGV0J3MgYXNzdW1lIGl0J3MgYW4gaW50ZXJlc3RpbmcgY2FzZQorIyAobWVhbmluZyB0aGF0IHRoZSB2YXJpb3VzIHR6aW5mbyBtZXRob2RzIGV4aXN0LCBhbmQgZG9uJ3QgYmxvdyB1cCBvciByZXR1cm4KKyMgTm9uZSB3aGVuIGNhbGxlZCkuCisjCisjIFRoZSBmdW5jdGlvbiB3YW50cyB0byByZXR1cm4gYSBkYXRldGltZSB5IHdpdGggdGltZXpvbmUgdHosIGVxdWl2YWxlbnQgdG8geC4KKyMgeCBpcyBhbHJlYWR5IGluIFVUQy4KKyMKKyMgQnkgIzMsIHdlIHdhbnQKKyMKKyMgICAgIHkubiAtIHkubyA9IHgubiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzFdCisjCisjIFRoZSBhbGdvcml0aG0gc3RhcnRzIGJ5IGF0dGFjaGluZyB0eiB0byB4Lm4sIGFuZCBjYWxsaW5nIHRoYXQgeS4gIFNvCisjIHgubiA9IHkubiBhdCB0aGUgc3RhcnQuICBUaGVuIGl0IHdhbnRzIHRvIGFkZCBhIGR1cmF0aW9uIGsgdG8geSwgc28gdGhhdCBbMV0KKyMgYmVjb21lcyB0cnVlOyBpbiBlZmZlY3QsIHdlIHdhbnQgdG8gc29sdmUgWzJdIGZvciBrOgorIworIyAgICAoeStrKS5uIC0gKHkraykubyA9IHgubiAgICAgICAgICAgICAgICAgICAgICBbMl0KKyMKKyMgQnkgIzEsIHRoaXMgaXMgdGhlIHNhbWUgYXMKKyMKKyMgICAgKHkraykubiAtICgoeStrKS5zICsgKHkraykuZCkgPSB4Lm4gICAgICAgICAgWzNdCisjCisjIEJ5ICM1LCAoeStrKS5uID0geS5uICsgaywgd2hpY2ggZXF1YWxzIHgubiArIGsgYmVjYXVzZSB4Lm49eS5uIGF0IHRoZSBzdGFydC4KKyMgU3Vic3RpdHV0aW5nIHRoYXQgaW50byBbM10sCisjCisjICAgIHgubiArIGsgLSAoeStrKS5zIC0gKHkraykuZCA9IHgubjsgdGhlIHgubiB0ZXJtcyBjYW5jZWwsIGxlYXZpbmcKKyMgICAgayAtICh5K2spLnMgLSAoeStrKS5kID0gMDsgcmVhcnJhbmdpbmcsCisjICAgIGsgPSAoeStrKS5zIC0gKHkraykuZDsgYnkgIzQsICh5K2spLnMgPT0geS5zLCBzbworIyAgICBrID0geS5zIC0gKHkraykuZAorIworIyBPbiB0aGUgUkhTLCAoeStrKS5kIGNhbid0IGJlIGNvbXB1dGVkIGRpcmVjdGx5LCBidXQgeS5zIGNhbiBiZSwgYW5kIHdlCisjIGFwcHJveGltYXRlIGsgYnkgaWdub3JpbmcgdGhlICh5K2spLmQgdGVybSBhdCBmaXJzdC4gIE5vdGUgdGhhdCBrIGNhbid0IGJlCisjIHZlcnkgbGFyZ2UsIHNpbmNlIGFsbCBvZmZzZXQtcmV0dXJuaW5nIG1ldGhvZHMgcmV0dXJuIGEgZHVyYXRpb24gb2YgbWFnbml0dWRlCisjIGxlc3MgdGhhbiAyNCBob3Vycy4gIEZvciB0aGF0IHJlYXNvbiwgaWYgeSBpcyBmaXJtbHkgaW4gc3RkIHRpbWUsICh5K2spLmQgbXVzdAorIyBiZSAwLCBzbyBpZ25vcmluZyBpdCBoYXMgbm8gY29uc2VxdWVuY2UgdGhlbi4KKyMKKyMgSW4gYW55IGNhc2UsIHRoZSBuZXcgdmFsdWUgaXMKKyMKKyMgICAgIHogPSB5ICsgeS5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzRdCisjCisjIEl0J3MgaGVscGZ1bCB0byBzdGVwIGJhY2sgYXQgbG9vayBhdCBbNF0gZnJvbSBhIGhpZ2hlciBsZXZlbDogIGl0J3Mgc2ltcGx5CisjIG1hcHBpbmcgZnJvbSBVVEMgdG8gdHoncyBzdGFuZGFyZCB0aW1lLgorIworIyBBdCB0aGlzIHBvaW50LCBpZgorIworIyAgICAgei5uIC0gei5vID0geC5uICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNV0KKyMKKyMgd2UgaGF2ZSBhbiBlcXVpdmFsZW50IHRpbWUsIGFuZCBhcmUgYWxtb3N0IGRvbmUuICBUaGUgaW5zZWN1cml0eSBoZXJlIGlzCisjIGF0IHRoZSBzdGFydCBvZiBkYXlsaWdodCB0aW1lLiAgUGljdHVyZSBVUyBFYXN0ZXJuIGZvciBjb25jcmV0ZW5lc3MuICBUaGUgd2FsbAorIyB0aW1lIGp1bXBzIGZyb20gMTo1OSB0byAzOjAwLCBhbmQgd2FsbCBob3VycyBvZiB0aGUgZm9ybSAyOk1NIGRvbid0IG1ha2UgZ29vZAorIyBzZW5zZSB0aGVuLiAgVGhlIGRvY3MgYXNrIHRoYXQgYW4gRWFzdGVybiB0emluZm8gY2xhc3MgY29uc2lkZXIgc3VjaCBhIHRpbWUgdG8KKyMgYmUgRURUIChiZWNhdXNlIGl0J3MgImFmdGVyIDIiKSwgd2hpY2ggaXMgYSByZWR1bmRhbnQgc3BlbGxpbmcgb2YgMTpNTSBFU1QKKyMgb24gdGhlIGRheSBEU1Qgc3RhcnRzLiAgV2Ugd2FudCB0byByZXR1cm4gdGhlIDE6TU0gRVNUIHNwZWxsaW5nIGJlY2F1c2UgdGhhdCdzCisjIHRoZSBvbmx5IHNwZWxsaW5nIHRoYXQgbWFrZXMgc2Vuc2Ugb24gdGhlIGxvY2FsIHdhbGwgY2xvY2suCisjCisjIEluIGZhY3QsIGlmIFs1XSBob2xkcyBhdCB0aGlzIHBvaW50LCB3ZSBkbyBoYXZlIHRoZSBzdGFuZGFyZC10aW1lIHNwZWxsaW5nLAorIyBidXQgdGhhdCB0YWtlcyBhIGJpdCBvZiBwcm9vZi4gIFdlIGZpcnN0IHByb3ZlIGEgc3Ryb25nZXIgcmVzdWx0LiAgV2hhdCdzIHRoZQorIyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIExIUyBhbmQgUkhTIG9mIFs1XT8gIExldAorIworIyAgICAgZGlmZiA9IHgubiAtICh6Lm4gLSB6Lm8pICAgICAgICAgICAgICAgICAgICBbNl0KKyMKKyMgTm93CisjICAgICB6Lm4gPSAgICAgICAgICAgICAgICAgICAgICAgYnkgWzRdCisjICAgICAoeSArIHkucykubiA9ICAgICAgICAgICAgICAgYnkgIzUKKyMgICAgIHkubiArIHkucyA9ICAgICAgICAgICAgICAgICBzaW5jZSB5Lm4gPSB4Lm4KKyMgICAgIHgubiArIHkucyA9ICAgICAgICAgICAgICAgICBzaW5jZSB6IGFuZCB5IGFyZSBoYXZlIHRoZSBzYW1lIHR6aW5mbyBtZW1iZXIsCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkucyA9IHoucyBieSAjMgorIyAgICAgeC5uICsgei5zCisjCisjIFBsdWdnaW5nIHRoYXQgYmFjayBpbnRvIFs2XSBnaXZlcworIworIyAgICAgZGlmZiA9CisjICAgICB4Lm4gLSAoKHgubiArIHoucykgLSB6Lm8pID0gICAgIGV4cGFuZGluZworIyAgICAgeC5uIC0geC5uIC0gei5zICsgei5vID0gICAgICAgICBjYW5jZWxsaW5nCisjICAgICAtIHoucyArIHoubyA9ICAgICAgICAgICAgICAgICAgIGJ5ICMyCisjICAgICB6LmQKKyMKKyMgU28gZGlmZiA9IHouZC4KKyMKKyMgSWYgWzVdIGlzIHRydWUgbm93LCBkaWZmID0gMCwgc28gei5kID0gMCB0b28sIGFuZCB3ZSBoYXZlIHRoZSBzdGFuZGFyZC10aW1lCisjIHNwZWxsaW5nIHdlIHdhbnRlZCBpbiB0aGUgZW5kY2FzZSBkZXNjcmliZWQgYWJvdmUuICBXZSdyZSBkb25lLiAgQ29udHJhcmlseSwKKyMgaWYgei5kID0gMCwgdGhlbiB3ZSBoYXZlIGEgVVRDIGVxdWl2YWxlbnQsIGFuZCBhcmUgYWxzbyBkb25lLgorIworIyBJZiBbNV0gaXMgbm90IHRydWUgbm93LCBkaWZmID0gei5kICE9IDAsIGFuZCB6LmQgaXMgdGhlIG9mZnNldCB3ZSBuZWVkIHRvCisjIGFkZCB0byB6IChpbiBlZmZlY3QsIHogaXMgaW4gdHoncyBzdGFuZGFyZCB0aW1lLCBhbmQgd2UgbmVlZCB0byBzaGlmdCB0aGUKKyMgbG9jYWwgY2xvY2sgaW50byB0eidzIGRheWxpZ2h0IHRpbWUpLgorIworIyBMZXQKKyMKKyMgICAgIHonID0geiArIHouZCA9IHogKyBkaWZmICAgICAgICAgICAgICAgICAgICAgWzddCisjCisjIGFuZCB3ZSBjYW4gYWdhaW4gYXNrIHdoZXRoZXIKKyMKKyMgICAgIHonLm4gLSB6Jy5vID0geC5uICAgICAgICAgICAgICAgICAgICAgICAgICAgWzhdCisjCisjIElmIHNvLCB3ZSdyZSBkb25lLiAgSWYgbm90LCB0aGUgdHppbmZvIGNsYXNzIGlzIGluc2FuZSwgYWNjb3JkaW5nIHRvIHRoZQorIyBhc3N1bXB0aW9ucyB3ZSd2ZSBtYWRlLiAgVGhpcyBhbHNvIHJlcXVpcmVzIGEgYml0IG9mIHByb29mLiAgQXMgYmVmb3JlLCBsZXQncworIyBjb21wdXRlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIExIUyBhbmQgUkhTIG9mIFs4XSAoYW5kIHNraXBwaW5nIHNvbWUgb2YKKyMgdGhlIGp1c3RpZmljYXRpb25zIGZvciB0aGUga2luZHMgb2Ygc3Vic3RpdHV0aW9ucyB3ZSd2ZSBkb25lIHNldmVyYWwgdGltZXMKKyMgYWxyZWFkeSk6CisjCisjICAgICBkaWZmJyA9IHgubiAtICh6Jy5uIC0geicubykgPSAgICAgICAgICAgcmVwbGFjaW5nIHonLm4gdmlhIFs3XQorIyAgICAgICAgICAgICB4Lm4gIC0gKHoubiArIGRpZmYgLSB6Jy5vKSA9ICAgIHJlcGxhY2luZyBkaWZmIHZpYSBbNl0KKyMgICAgICAgICAgICAgeC5uIC0gKHoubiArIHgubiAtICh6Lm4gLSB6Lm8pIC0geicubykgPQorIyAgICAgICAgICAgICB4Lm4gLSB6Lm4gLSB4Lm4gKyB6Lm4gLSB6Lm8gKyB6Jy5vID0gICAgY2FuY2VsIHgubgorIyAgICAgICAgICAgICAtIHoubiArIHoubiAtIHoubyArIHonLm8gPSAgICAgICAgICAgICAgY2FuY2VsIHoubgorIyAgICAgICAgICAgICAtIHoubyArIHonLm8gPSAgICAgICAgICAgICAgICAgICAgICAjMSB0d2ljZQorIyAgICAgICAgICAgICAtei5zIC0gei5kICsgeicucyArIHonLmQgPSAgICAgICAgICB6IGFuZCB6JyBoYXZlIHNhbWUgdHppbmZvCisjICAgICAgICAgICAgIHonLmQgLSB6LmQKKyMKKyMgU28geicgaXMgVVRDLWVxdWl2YWxlbnQgdG8geCBpZmYgeicuZCA9IHouZCBhdCB0aGlzIHBvaW50LiAgSWYgdGhleSBhcmUgZXF1YWwsCisjIHdlJ3ZlIGZvdW5kIHRoZSBVVEMtZXF1aXZhbGVudCBzbyBhcmUgZG9uZS4gIEluIGZhY3QsIHdlIHN0b3Agd2l0aCBbN10gYW5kCisjIHJldHVybiB6Jywgbm90IGJvdGhlcmluZyB0byBjb21wdXRlIHonLmQuCisjCisjIEhvdyBjb3VsZCB6LmQgYW5kIHonZCBkaWZmZXI/ICB6JyA9IHogKyB6LmQgWzddLCBzbyBtZXJlbHkgbW92aW5nIHonIGJ5CisjIGEgZHN0KCkgb2Zmc2V0LCBhbmQgc3RhcnRpbmcgKmZyb20qIGEgdGltZSBhbHJlYWR5IGluIERTVCAod2Uga25vdyB6LmQgIT0gMCksCisjIHdvdWxkIGhhdmUgdG8gY2hhbmdlIHRoZSByZXN1bHQgZHN0KCkgcmV0dXJuczogIHdlIHN0YXJ0IGluIERTVCwgYW5kIG1vdmluZworIyBhIGxpdHRsZSBmdXJ0aGVyIGludG8gaXQgdGFrZXMgdXMgb3V0IG9mIERTVC4KKyMKKyMgVGhlcmUgaXNuJ3QgYSBzYW5lIGNhc2Ugd2hlcmUgdGhpcyBjYW4gaGFwcGVuLiAgVGhlIGNsb3Nlc3QgaXQgZ2V0cyBpcyBhdAorIyB0aGUgZW5kIG9mIERTVCwgd2hlcmUgdGhlcmUncyBhbiBob3VyIGluIFVUQyB3aXRoIG5vIHNwZWxsaW5nIGluIGEgaHlicmlkCisjIHR6aW5mbyBjbGFzcy4gIEluIFVTIEVhc3Rlcm4sIHRoYXQncyA1Ok1NIFVUQyA9IDA6TU0gRVNUID0gMTpNTSBFRFQuICBEdXJpbmcKKyMgdGhhdCBob3VyLCBvbiBhbiBFYXN0ZXJuIGNsb2NrIDE6TU0gaXMgdGFrZW4gYXMgYmVpbmcgaW4gc3RhbmRhcmQgdGltZSAoNjpNTQorIyBVVEMpIGJlY2F1c2UgdGhlIGRvY3MgaW5zaXN0IG9uIHRoYXQsIGJ1dCAwOk1NIGlzIHRha2VuIGFzIGJlaW5nIGluIGRheWxpZ2h0CisjIHRpbWUgKDQ6TU0gVVRDKS4gIFRoZXJlIGlzIG5vIGxvY2FsIHRpbWUgbWFwcGluZyB0byA1Ok1NIFVUQy4gIFRoZSBsb2NhbAorIyBjbG9jayBqdW1wcyBmcm9tIDE6NTkgYmFjayB0byAxOjAwIGFnYWluLCBhbmQgcmVwZWF0cyB0aGUgMTpNTSBob3VyIGluCisjIHN0YW5kYXJkIHRpbWUuICBTaW5jZSB0aGF0J3Mgd2hhdCB0aGUgbG9jYWwgY2xvY2sgKmRvZXMqLCB3ZSB3YW50IHRvIG1hcCBib3RoCisjIFVUQyBob3VycyA1Ok1NIGFuZCA2Ok1NIHRvIDE6TU0gRWFzdGVybi4gIFRoZSByZXN1bHQgaXMgYW1iaWd1b3VzCisjIGluIGxvY2FsIHRpbWUsIGJ1dCBzbyBpdCBnb2VzIC0tIGl0J3MgdGhlIHdheSB0aGUgbG9jYWwgY2xvY2sgd29ya3MuCisjCisjIFdoZW4geCA9IDU6TU0gVVRDIGlzIHRoZSBpbnB1dCB0byB0aGlzIGFsZ29yaXRobSwgeC5vPTAsIHkubz0tNSBhbmQgeS5kPTAsCisjIHNvIHo9MDpNTS4gIHouZD02MCAobWludXRlcykgdGhlbiwgc28gWzVdIGRvZXNuJ3QgaG9sZCBhbmQgd2Uga2VlcCBnb2luZy4KKyMgeicgPSB6ICsgei5kID0gMTpNTSB0aGVuLCBhbmQgeicuZD0wLCBhbmQgeicuZCAtIHouZCA9IC02MCAhPSAwIHNvIFs4XQorIyAoY29ycmVjdGx5KSBjb25jbHVkZXMgdGhhdCB6JyBpcyBub3QgVVRDLWVxdWl2YWxlbnQgdG8geC4KKyMKKyMgQmVjYXVzZSB3ZSBrbm93IHouZCBzYWlkIHogd2FzIGluIGRheWxpZ2h0IHRpbWUgKGVsc2UgWzVdIHdvdWxkIGhhdmUgaGVsZCBhbmQKKyMgd2Ugd291bGQgaGF2ZSBzdG9wcGVkIHRoZW4pLCBhbmQgd2Uga25vdyB6LmQgIT0geicuZCAoZWxzZSBbOF0gd291bGQgaGF2ZSBoZWxkCisjIGFuZCB3ZSBoYXZlIHN0b3BwZWQgdGhlbiksIGFuZCB0aGVyZSBhcmUgb25seSAyIHBvc3NpYmxlIHZhbHVlcyBkc3QoKSBjYW4KKyMgcmV0dXJuIGluIEVhc3Rlcm4sIGl0IGZvbGxvd3MgdGhhdCB6Jy5kIG11c3QgYmUgMCAod2hpY2ggaXQgaXMgaW4gdGhlIGV4YW1wbGUsCisjIGJ1dCB0aGUgcmVhc29uaW5nIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBleGFtcGxlIC0tIGl0IGRlcGVuZHMgb24gdGhlcmUgYmVpbmcKKyMgdHdvIHBvc3NpYmxlIGRzdCgpIG91dGNvbWVzLCBvbmUgemVybyBhbmQgdGhlIG90aGVyIG5vbi16ZXJvKS4gIFRoZXJlZm9yZQorIyB6JyBtdXN0IGJlIGluIHN0YW5kYXJkIHRpbWUsIGFuZCBpcyB0aGUgc3BlbGxpbmcgd2Ugd2FudCBpbiB0aGlzIGNhc2UuCisjCisjIE5vdGUgYWdhaW4gdGhhdCB6JyBpcyBub3QgVVRDLWVxdWl2YWxlbnQgYXMgZmFyIGFzIHRoZSBoeWJyaWQgdHppbmZvIGNsYXNzIGlzCisjIGNvbmNlcm5lZCAoYmVjYXVzZSBpdCB0YWtlcyB6JyBhcyBiZWluZyBpbiBzdGFuZGFyZCB0aW1lIHJhdGhlciB0aGFuIHRoZQorIyBkYXlsaWdodCB0aW1lIHdlIGludGVuZCBoZXJlKSwgYnV0IHJldHVybmluZyBpdCBnaXZlcyB0aGUgcmVhbC1saWZlICJsb2NhbAorIyBjbG9jayByZXBlYXRzIGFuIGhvdXIiIGJlaGF2aW9yIHdoZW4gbWFwcGluZyB0aGUgInVuc3BlbGxhYmxlIiBVVEMgaG91ciBpbnRvCisjIHR6LgorIworIyBXaGVuIHRoZSBpbnB1dCBpcyA2Ok1NLCB6PTE6TU0gYW5kIHouZD0wLCBhbmQgd2Ugc3RvcCBhdCBvbmNlLCBhZ2FpbiB3aXRoCisjIHRoZSAxOk1NIHN0YW5kYXJkIHRpbWUgc3BlbGxpbmcgd2Ugd2FudC4KKyMKKyMgU28gaG93IGNhbiB0aGlzIGJyZWFrPyAgT25lIG9mIHRoZSBhc3N1bXB0aW9ucyBtdXN0IGJlIHZpb2xhdGVkLiAgVHdvCisjIHBvc3NpYmlsaXRpZXM6CisjCisjIDEpIFsyXSBlZmZlY3RpdmVseSBzYXlzIHRoYXQgeS5zIGlzIGludmFyaWFudCBhY3Jvc3MgYWxsIHkgYmVsb25nIHRvIGEgZ2l2ZW4KKyMgICAgdGltZSB6b25lLiAgVGhpcyBpc24ndCB0cnVlIGlmLCBmb3IgcG9saXRpY2FsIHJlYXNvbnMgb3IgY29udGluZW50YWwgZHJpZnQsCisjICAgIGEgcmVnaW9uIGRlY2lkZXMgdG8gY2hhbmdlIGl0cyBiYXNlIG9mZnNldCBmcm9tIFVUQy4KKyMKKyMgMikgVGhlcmUgbWF5IGJlIHZlcnNpb25zIG9mICJkb3VibGUgZGF5bGlnaHQiIHRpbWUgd2hlcmUgdGhlIHRhaWwgZW5kIG9mCisjICAgIHRoZSBhbmFseXNpcyBnaXZlcyB1cCBhIHN0ZXAgdG9vIGVhcmx5LiAgSSBoYXZlbid0IHRob3VnaHQgYWJvdXQgdGhhdAorIyAgICBlbm91Z2ggdG8gc2F5LgorIworIyBJbiBhbnkgY2FzZSwgaXQncyBjbGVhciB0aGF0IHRoZSBkZWZhdWx0IGZyb211dGMoKSBpcyBzdHJvbmcgZW5vdWdoIHRvIGhhbmRsZQorIyAiYWxtb3N0IGFsbCIgdGltZSB6b25lczogIHNvIGxvbmcgYXMgdGhlIHN0YW5kYXJkIG9mZnNldCBpcyBpbnZhcmlhbnQsIGl0CisjIGRvZXNuJ3QgbWF0dGVyIGlmIGRheWxpZ2h0IHRpbWUgdHJhbnNpdGlvbiBwb2ludHMgY2hhbmdlIGZyb20geWVhciB0byB5ZWFyLCBvcgorIyBpZiBkYXlsaWdodCB0aW1lIGlzIHNraXBwZWQgaW4gc29tZSB5ZWFyczsgaXQgZG9lc24ndCBtYXR0ZXIgaG93IGxhcmdlIG9yCisjIHNtYWxsIGRzdCgpIG1heSBnZXQgd2l0aGluIGl0cyBib3VuZHM7IGFuZCBpdCBkb2Vzbid0IGV2ZW4gbWF0dGVyIGlmIHNvbWUKKyMgcGVydmVyc2UgdGltZSB6b25lIHJldHVybnMgYSBuZWdhdGl2ZSBkc3QoKSkuICBTbyBhIGJyZWFraW5nIGNhc2UgbXVzdCBiZQorIyBwcmV0dHkgYml6YXJyZSwgYW5kIGEgdHppbmZvIHN1YmNsYXNzIGNhbiBvdmVycmlkZSBmcm9tdXRjKCkgaWYgaXQgaXMuCiAKLTEuIHgubyA9IHgucyArIHguZAotICAgVGhpcyBmb2xsb3dzIGZyb20gdGhlIGRlZmluaXRpb24gb2YgeC5zLgotCi0yLiBJZiB4IGFuZCB5IGhhdmUgdGhlIHNhbWUgdHppbmZvIG1lbWJlciwgeC5zID0geS5zLgotICAgVGhpcyBpcyBhY3R1YWxseSBhIHJlcXVpcmVtZW50LCBhbiBhc3N1bXB0aW9uIHdlIG5lZWQgdG8gbWFrZSBhYm91dAotICAgc2FuZSB0emluZm8gY2xhc3Nlcy4KLQotMy4gVGhlIG5haXZlIFVUQyB0aW1lIGNvcnJlc3BvbmRpbmcgdG8geCBpcyB4Lm4gLSB4Lm8uCi0gICBUaGlzIGlzIGFnYWluIGEgcmVxdWlyZW1lbnQgZm9yIGEgc2FuZSB0emluZm8gY2xhc3MuCi0KLTQuICh4K2spLnMgPSB4LnMKLSAgIFRoaXMgZm9sbG93cyBmcm9tICMyLCBhbmQgdGhhdCBkYXRpbWV0aW1ldHordGltZWRlbHRhIHByZXNlcnZlcyB0emluZm8uCi0KLTUuICh4K2spLm4gPSB4Lm4gKyBrCi0gICBBZ2FpbiBmb2xsb3dzIGZyb20gaG93IGFyaXRobWV0aWMgaXMgZGVmaW5lZC4KLQotTm93IHdlIGNhbiBleHBsYWluIHR6LmZyb211dGMoeCkuICBMZXQncyBhc3N1bWUgaXQncyBhbiBpbnRlcmVzdGluZyBjYXNlCi0obWVhbmluZyB0aGF0IHRoZSB2YXJpb3VzIHR6aW5mbyBtZXRob2RzIGV4aXN0LCBhbmQgZG9uJ3QgYmxvdyB1cCBvciByZXR1cm4KLU5vbmUgd2hlbiBjYWxsZWQpLgotCi1UaGUgZnVuY3Rpb24gd2FudHMgdG8gcmV0dXJuIGEgZGF0ZXRpbWUgeSB3aXRoIHRpbWV6b25lIHR6LCBlcXVpdmFsZW50IHRvIHguCi14IGlzIGFscmVhZHkgaW4gVVRDLgotCi1CeSAjMywgd2Ugd2FudAotCi0gICAgeS5uIC0geS5vID0geC5uICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMV0KLQotVGhlIGFsZ29yaXRobSBzdGFydHMgYnkgYXR0YWNoaW5nIHR6IHRvIHgubiwgYW5kIGNhbGxpbmcgdGhhdCB5LiAgU28KLXgubiA9IHkubiBhdCB0aGUgc3RhcnQuICBUaGVuIGl0IHdhbnRzIHRvIGFkZCBhIGR1cmF0aW9uIGsgdG8geSwgc28gdGhhdCBbMV0KLWJlY29tZXMgdHJ1ZTsgaW4gZWZmZWN0LCB3ZSB3YW50IHRvIHNvbHZlIFsyXSBmb3IgazoKLQotICAgKHkraykubiAtICh5K2spLm8gPSB4Lm4gICAgICAgICAgICAgICAgICAgICAgWzJdCi0KLUJ5ICMxLCB0aGlzIGlzIHRoZSBzYW1lIGFzCi0KLSAgICh5K2spLm4gLSAoKHkraykucyArICh5K2spLmQpID0geC5uICAgICAgICAgIFszXQotCi1CeSAjNSwgKHkraykubiA9IHkubiArIGssIHdoaWNoIGVxdWFscyB4Lm4gKyBrIGJlY2F1c2UgeC5uPXkubiBhdCB0aGUgc3RhcnQuCi1TdWJzdGl0dXRpbmcgdGhhdCBpbnRvIFszXSwKLQotICAgeC5uICsgayAtICh5K2spLnMgLSAoeStrKS5kID0geC5uOyB0aGUgeC5uIHRlcm1zIGNhbmNlbCwgbGVhdmluZwotICAgayAtICh5K2spLnMgLSAoeStrKS5kID0gMDsgcmVhcnJhbmdpbmcsCi0gICBrID0gKHkraykucyAtICh5K2spLmQ7IGJ5ICM0LCAoeStrKS5zID09IHkucywgc28KLSAgIGsgPSB5LnMgLSAoeStrKS5kCi0KLU9uIHRoZSBSSFMsICh5K2spLmQgY2FuJ3QgYmUgY29tcHV0ZWQgZGlyZWN0bHksIGJ1dCB5LnMgY2FuIGJlLCBhbmQgd2UKLWFwcHJveGltYXRlIGsgYnkgaWdub3JpbmcgdGhlICh5K2spLmQgdGVybSBhdCBmaXJzdC4gIE5vdGUgdGhhdCBrIGNhbid0IGJlCi12ZXJ5IGxhcmdlLCBzaW5jZSBhbGwgb2Zmc2V0LXJldHVybmluZyBtZXRob2RzIHJldHVybiBhIGR1cmF0aW9uIG9mIG1hZ25pdHVkZQotbGVzcyB0aGFuIDI0IGhvdXJzLiAgRm9yIHRoYXQgcmVhc29uLCBpZiB5IGlzIGZpcm1seSBpbiBzdGQgdGltZSwgKHkraykuZCBtdXN0Ci1iZSAwLCBzbyBpZ25vcmluZyBpdCBoYXMgbm8gY29uc2VxdWVuY2UgdGhlbi4KLQotSW4gYW55IGNhc2UsIHRoZSBuZXcgdmFsdWUgaXMKLQotICAgIHogPSB5ICsgeS5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzRdCi0KLUl0J3MgaGVscGZ1bCB0byBzdGVwIGJhY2sgYXQgbG9vayBhdCBbNF0gZnJvbSBhIGhpZ2hlciBsZXZlbDogIGl0J3Mgc2ltcGx5Ci1tYXBwaW5nIGZyb20gVVRDIHRvIHR6J3Mgc3RhbmRhcmQgdGltZS4KLQotQXQgdGhpcyBwb2ludCwgaWYKLQotICAgIHoubiAtIHoubyA9IHgubiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzVdCi0KLXdlIGhhdmUgYW4gZXF1aXZhbGVudCB0aW1lLCBhbmQgYXJlIGFsbW9zdCBkb25lLiAgVGhlIGluc2VjdXJpdHkgaGVyZSBpcwotYXQgdGhlIHN0YXJ0IG9mIGRheWxpZ2h0IHRpbWUuICBQaWN0dXJlIFVTIEVhc3Rlcm4gZm9yIGNvbmNyZXRlbmVzcy4gIFRoZSB3YWxsCi10aW1lIGp1bXBzIGZyb20gMTo1OSB0byAzOjAwLCBhbmQgd2FsbCBob3VycyBvZiB0aGUgZm9ybSAyOk1NIGRvbid0IG1ha2UgZ29vZAotc2Vuc2UgdGhlbi4gIFRoZSBkb2NzIGFzayB0aGF0IGFuIEVhc3Rlcm4gdHppbmZvIGNsYXNzIGNvbnNpZGVyIHN1Y2ggYSB0aW1lIHRvCi1iZSBFRFQgKGJlY2F1c2UgaXQncyAiYWZ0ZXIgMiIpLCB3aGljaCBpcyBhIHJlZHVuZGFudCBzcGVsbGluZyBvZiAxOk1NIEVTVAotb24gdGhlIGRheSBEU1Qgc3RhcnRzLiAgV2Ugd2FudCB0byByZXR1cm4gdGhlIDE6TU0gRVNUIHNwZWxsaW5nIGJlY2F1c2UgdGhhdCdzCi10aGUgb25seSBzcGVsbGluZyB0aGF0IG1ha2VzIHNlbnNlIG9uIHRoZSBsb2NhbCB3YWxsIGNsb2NrLgotCi1JbiBmYWN0LCBpZiBbNV0gaG9sZHMgYXQgdGhpcyBwb2ludCwgd2UgZG8gaGF2ZSB0aGUgc3RhbmRhcmQtdGltZSBzcGVsbGluZywKLWJ1dCB0aGF0IHRha2VzIGEgYml0IG9mIHByb29mLiAgV2UgZmlyc3QgcHJvdmUgYSBzdHJvbmdlciByZXN1bHQuICBXaGF0J3MgdGhlCi1kaWZmZXJlbmNlIGJldHdlZW4gdGhlIExIUyBhbmQgUkhTIG9mIFs1XT8gIExldAotCi0gICAgZGlmZiA9IHgubiAtICh6Lm4gLSB6Lm8pICAgICAgICAgICAgICAgICAgICBbNl0KLQotTm93Ci0gICAgei5uID0gICAgICAgICAgICAgICAgICAgICAgIGJ5IFs0XQotICAgICh5ICsgeS5zKS5uID0gICAgICAgICAgICAgICBieSAjNQotICAgIHkubiArIHkucyA9ICAgICAgICAgICAgICAgICBzaW5jZSB5Lm4gPSB4Lm4KLSAgICB4Lm4gKyB5LnMgPSAgICAgICAgICAgICAgICAgc2luY2UgeiBhbmQgeSBhcmUgaGF2ZSB0aGUgc2FtZSB0emluZm8gbWVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeS5zID0gei5zIGJ5ICMyCi0gICAgeC5uICsgei5zCi0KLVBsdWdnaW5nIHRoYXQgYmFjayBpbnRvIFs2XSBnaXZlcwotCi0gICAgZGlmZiA9Ci0gICAgeC5uIC0gKCh4Lm4gKyB6LnMpIC0gei5vKSA9ICAgICBleHBhbmRpbmcKLSAgICB4Lm4gLSB4Lm4gLSB6LnMgKyB6Lm8gPSAgICAgICAgIGNhbmNlbGxpbmcKLSAgICAtIHoucyArIHoubyA9ICAgICAgICAgICAgICAgICAgIGJ5ICMyCi0gICAgei5kCi0KLVNvIGRpZmYgPSB6LmQuCi0KLUlmIFs1XSBpcyB0cnVlIG5vdywgZGlmZiA9IDAsIHNvIHouZCA9IDAgdG9vLCBhbmQgd2UgaGF2ZSB0aGUgc3RhbmRhcmQtdGltZQotc3BlbGxpbmcgd2Ugd2FudGVkIGluIHRoZSBlbmRjYXNlIGRlc2NyaWJlZCBhYm92ZS4gIFdlJ3JlIGRvbmUuICBDb250cmFyaWx5LAotaWYgei5kID0gMCwgdGhlbiB3ZSBoYXZlIGEgVVRDIGVxdWl2YWxlbnQsIGFuZCBhcmUgYWxzbyBkb25lLgotCi1JZiBbNV0gaXMgbm90IHRydWUgbm93LCBkaWZmID0gei5kICE9IDAsIGFuZCB6LmQgaXMgdGhlIG9mZnNldCB3ZSBuZWVkIHRvCi1hZGQgdG8geiAoaW4gZWZmZWN0LCB6IGlzIGluIHR6J3Mgc3RhbmRhcmQgdGltZSwgYW5kIHdlIG5lZWQgdG8gc2hpZnQgdGhlCi1sb2NhbCBjbG9jayBpbnRvIHR6J3MgZGF5bGlnaHQgdGltZSkuCi0KLUxldAotCi0gICAgeicgPSB6ICsgei5kID0geiArIGRpZmYgICAgICAgICAgICAgICAgICAgICBbN10KLQotYW5kIHdlIGNhbiBhZ2FpbiBhc2sgd2hldGhlcgotCi0gICAgeicubiAtIHonLm8gPSB4Lm4gICAgICAgICAgICAgICAgICAgICAgICAgICBbOF0KLQotSWYgc28sIHdlJ3JlIGRvbmUuICBJZiBub3QsIHRoZSB0emluZm8gY2xhc3MgaXMgaW5zYW5lLCBhY2NvcmRpbmcgdG8gdGhlCi1hc3N1bXB0aW9ucyB3ZSd2ZSBtYWRlLiAgVGhpcyBhbHNvIHJlcXVpcmVzIGEgYml0IG9mIHByb29mLiAgQXMgYmVmb3JlLCBsZXQncwotY29tcHV0ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBMSFMgYW5kIFJIUyBvZiBbOF0gKGFuZCBza2lwcGluZyBzb21lIG9mCi10aGUganVzdGlmaWNhdGlvbnMgZm9yIHRoZSBraW5kcyBvZiBzdWJzdGl0dXRpb25zIHdlJ3ZlIGRvbmUgc2V2ZXJhbCB0aW1lcwotYWxyZWFkeSk6Ci0KLSAgICBkaWZmJyA9IHgubiAtICh6Jy5uIC0geicubykgPSAgICAgICAgICAgcmVwbGFjaW5nIHonLm4gdmlhIFs3XQotICAgICAgICAgICAgeC5uICAtICh6Lm4gKyBkaWZmIC0geicubykgPSAgICByZXBsYWNpbmcgZGlmZiB2aWEgWzZdCi0gICAgICAgICAgICB4Lm4gLSAoei5uICsgeC5uIC0gKHoubiAtIHoubykgLSB6Jy5vKSA9Ci0gICAgICAgICAgICB4Lm4gLSB6Lm4gLSB4Lm4gKyB6Lm4gLSB6Lm8gKyB6Jy5vID0gICAgY2FuY2VsIHgubgotICAgICAgICAgICAgLSB6Lm4gKyB6Lm4gLSB6Lm8gKyB6Jy5vID0gICAgICAgICAgICAgIGNhbmNlbCB6Lm4KLSAgICAgICAgICAgIC0gei5vICsgeicubyA9ICAgICAgICAgICAgICAgICAgICAgICMxIHR3aWNlCi0gICAgICAgICAgICAtei5zIC0gei5kICsgeicucyArIHonLmQgPSAgICAgICAgICB6IGFuZCB6JyBoYXZlIHNhbWUgdHppbmZvCi0gICAgICAgICAgICB6Jy5kIC0gei5kCi0KLVNvIHonIGlzIFVUQy1lcXVpdmFsZW50IHRvIHggaWZmIHonLmQgPSB6LmQgYXQgdGhpcyBwb2ludC4gIElmIHRoZXkgYXJlIGVxdWFsLAotd2UndmUgZm91bmQgdGhlIFVUQy1lcXVpdmFsZW50IHNvIGFyZSBkb25lLiAgSW4gZmFjdCwgd2Ugc3RvcCB3aXRoIFs3XSBhbmQKLXJldHVybiB6Jywgbm90IGJvdGhlcmluZyB0byBjb21wdXRlIHonLmQuCi0KLUhvdyBjb3VsZCB6LmQgYW5kIHonZCBkaWZmZXI/ICB6JyA9IHogKyB6LmQgWzddLCBzbyBtZXJlbHkgbW92aW5nIHonIGJ5Ci1hIGRzdCgpIG9mZnNldCwgYW5kIHN0YXJ0aW5nICpmcm9tKiBhIHRpbWUgYWxyZWFkeSBpbiBEU1QgKHdlIGtub3cgei5kICE9IDApLAotd291bGQgaGF2ZSB0byBjaGFuZ2UgdGhlIHJlc3VsdCBkc3QoKSByZXR1cm5zOiAgd2Ugc3RhcnQgaW4gRFNULCBhbmQgbW92aW5nCi1hIGxpdHRsZSBmdXJ0aGVyIGludG8gaXQgdGFrZXMgdXMgb3V0IG9mIERTVC4KLQotVGhlcmUgaXNuJ3QgYSBzYW5lIGNhc2Ugd2hlcmUgdGhpcyBjYW4gaGFwcGVuLiAgVGhlIGNsb3Nlc3QgaXQgZ2V0cyBpcyBhdAotdGhlIGVuZCBvZiBEU1QsIHdoZXJlIHRoZXJlJ3MgYW4gaG91ciBpbiBVVEMgd2l0aCBubyBzcGVsbGluZyBpbiBhIGh5YnJpZAotdHppbmZvIGNsYXNzLiAgSW4gVVMgRWFzdGVybiwgdGhhdCdzIDU6TU0gVVRDID0gMDpNTSBFU1QgPSAxOk1NIEVEVC4gIER1cmluZwotdGhhdCBob3VyLCBvbiBhbiBFYXN0ZXJuIGNsb2NrIDE6TU0gaXMgdGFrZW4gYXMgYmVpbmcgaW4gc3RhbmRhcmQgdGltZSAoNjpNTQotVVRDKSBiZWNhdXNlIHRoZSBkb2NzIGluc2lzdCBvbiB0aGF0LCBidXQgMDpNTSBpcyB0YWtlbiBhcyBiZWluZyBpbiBkYXlsaWdodAotdGltZSAoNDpNTSBVVEMpLiAgVGhlcmUgaXMgbm8gbG9jYWwgdGltZSBtYXBwaW5nIHRvIDU6TU0gVVRDLiAgVGhlIGxvY2FsCi1jbG9jayBqdW1wcyBmcm9tIDE6NTkgYmFjayB0byAxOjAwIGFnYWluLCBhbmQgcmVwZWF0cyB0aGUgMTpNTSBob3VyIGluCi1zdGFuZGFyZCB0aW1lLiAgU2luY2UgdGhhdCdzIHdoYXQgdGhlIGxvY2FsIGNsb2NrICpkb2VzKiwgd2Ugd2FudCB0byBtYXAgYm90aAotVVRDIGhvdXJzIDU6TU0gYW5kIDY6TU0gdG8gMTpNTSBFYXN0ZXJuLiAgVGhlIHJlc3VsdCBpcyBhbWJpZ3VvdXMKLWluIGxvY2FsIHRpbWUsIGJ1dCBzbyBpdCBnb2VzIC0tIGl0J3MgdGhlIHdheSB0aGUgbG9jYWwgY2xvY2sgd29ya3MuCi0KLVdoZW4geCA9IDU6TU0gVVRDIGlzIHRoZSBpbnB1dCB0byB0aGlzIGFsZ29yaXRobSwgeC5vPTAsIHkubz0tNSBhbmQgeS5kPTAsCi1zbyB6PTA6TU0uICB6LmQ9NjAgKG1pbnV0ZXMpIHRoZW4sIHNvIFs1XSBkb2Vzbid0IGhvbGQgYW5kIHdlIGtlZXAgZ29pbmcuCi16JyA9IHogKyB6LmQgPSAxOk1NIHRoZW4sIGFuZCB6Jy5kPTAsIGFuZCB6Jy5kIC0gei5kID0gLTYwICE9IDAgc28gWzhdCi0oY29ycmVjdGx5KSBjb25jbHVkZXMgdGhhdCB6JyBpcyBub3QgVVRDLWVxdWl2YWxlbnQgdG8geC4KLQotQmVjYXVzZSB3ZSBrbm93IHouZCBzYWlkIHogd2FzIGluIGRheWxpZ2h0IHRpbWUgKGVsc2UgWzVdIHdvdWxkIGhhdmUgaGVsZCBhbmQKLXdlIHdvdWxkIGhhdmUgc3RvcHBlZCB0aGVuKSwgYW5kIHdlIGtub3cgei5kICE9IHonLmQgKGVsc2UgWzhdIHdvdWxkIGhhdmUgaGVsZAotYW5kIHdlIGhhdmUgc3RvcHBlZCB0aGVuKSwgYW5kIHRoZXJlIGFyZSBvbmx5IDIgcG9zc2libGUgdmFsdWVzIGRzdCgpIGNhbgotcmV0dXJuIGluIEVhc3Rlcm4sIGl0IGZvbGxvd3MgdGhhdCB6Jy5kIG11c3QgYmUgMCAod2hpY2ggaXQgaXMgaW4gdGhlIGV4YW1wbGUsCi1idXQgdGhlIHJlYXNvbmluZyBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgZXhhbXBsZSAtLSBpdCBkZXBlbmRzIG9uIHRoZXJlIGJlaW5nCi10d28gcG9zc2libGUgZHN0KCkgb3V0Y29tZXMsIG9uZSB6ZXJvIGFuZCB0aGUgb3RoZXIgbm9uLXplcm8pLiAgVGhlcmVmb3JlCi16JyBtdXN0IGJlIGluIHN0YW5kYXJkIHRpbWUsIGFuZCBpcyB0aGUgc3BlbGxpbmcgd2Ugd2FudCBpbiB0aGlzIGNhc2UuCi0KLU5vdGUgYWdhaW4gdGhhdCB6JyBpcyBub3QgVVRDLWVxdWl2YWxlbnQgYXMgZmFyIGFzIHRoZSBoeWJyaWQgdHppbmZvIGNsYXNzIGlzCi1jb25jZXJuZWQgKGJlY2F1c2UgaXQgdGFrZXMgeicgYXMgYmVpbmcgaW4gc3RhbmRhcmQgdGltZSByYXRoZXIgdGhhbiB0aGUKLWRheWxpZ2h0IHRpbWUgd2UgaW50ZW5kIGhlcmUpLCBidXQgcmV0dXJuaW5nIGl0IGdpdmVzIHRoZSByZWFsLWxpZmUgImxvY2FsCi1jbG9jayByZXBlYXRzIGFuIGhvdXIiIGJlaGF2aW9yIHdoZW4gbWFwcGluZyB0aGUgInVuc3BlbGxhYmxlIiBVVEMgaG91ciBpbnRvCi10ei4KLQotV2hlbiB0aGUgaW5wdXQgaXMgNjpNTSwgej0xOk1NIGFuZCB6LmQ9MCwgYW5kIHdlIHN0b3AgYXQgb25jZSwgYWdhaW4gd2l0aAotdGhlIDE6TU0gc3RhbmRhcmQgdGltZSBzcGVsbGluZyB3ZSB3YW50LgotCi1TbyBob3cgY2FuIHRoaXMgYnJlYWs/ICBPbmUgb2YgdGhlIGFzc3VtcHRpb25zIG11c3QgYmUgdmlvbGF0ZWQuICBUd28KLXBvc3NpYmlsaXRpZXM6Ci0KLTEpIFsyXSBlZmZlY3RpdmVseSBzYXlzIHRoYXQgeS5zIGlzIGludmFyaWFudCBhY3Jvc3MgYWxsIHkgYmVsb25nIHRvIGEgZ2l2ZW4KLSAgIHRpbWUgem9uZS4gIFRoaXMgaXNuJ3QgdHJ1ZSBpZiwgZm9yIHBvbGl0aWNhbCByZWFzb25zIG9yIGNvbnRpbmVudGFsIGRyaWZ0LAotICAgYSByZWdpb24gZGVjaWRlcyB0byBjaGFuZ2UgaXRzIGJhc2Ugb2Zmc2V0IGZyb20gVVRDLgotCi0yKSBUaGVyZSBtYXkgYmUgdmVyc2lvbnMgb2YgImRvdWJsZSBkYXlsaWdodCIgdGltZSB3aGVyZSB0aGUgdGFpbCBlbmQgb2YKLSAgIHRoZSBhbmFseXNpcyBnaXZlcyB1cCBhIHN0ZXAgdG9vIGVhcmx5LiAgSSBoYXZlbid0IHRob3VnaHQgYWJvdXQgdGhhdAotICAgZW5vdWdoIHRvIHNheS4KLQotSW4gYW55IGNhc2UsIGl0J3MgY2xlYXIgdGhhdCB0aGUgZGVmYXVsdCBmcm9tdXRjKCkgaXMgc3Ryb25nIGVub3VnaCB0byBoYW5kbGUKLSJhbG1vc3QgYWxsIiB0aW1lIHpvbmVzOiAgc28gbG9uZyBhcyB0aGUgc3RhbmRhcmQgb2Zmc2V0IGlzIGludmFyaWFudCwgaXQKLWRvZXNuJ3QgbWF0dGVyIGlmIGRheWxpZ2h0IHRpbWUgdHJhbnNpdGlvbiBwb2ludHMgY2hhbmdlIGZyb20geWVhciB0byB5ZWFyLCBvcgotaWYgZGF5bGlnaHQgdGltZSBpcyBza2lwcGVkIGluIHNvbWUgeWVhcnM7IGl0IGRvZXNuJ3QgbWF0dGVyIGhvdyBsYXJnZSBvcgotc21hbGwgZHN0KCkgbWF5IGdldCB3aXRoaW4gaXRzIGJvdW5kczsgYW5kIGl0IGRvZXNuJ3QgZXZlbiBtYXR0ZXIgaWYgc29tZQotcGVydmVyc2UgdGltZSB6b25lIHJldHVybnMgYSBuZWdhdGl2ZSBkc3QoKSkuICBTbyBhIGJyZWFraW5nIGNhc2UgbXVzdCBiZQotcHJldHR5IGJpemFycmUsIGFuZCBhIHR6aW5mbyBzdWJjbGFzcyBjYW4gb3ZlcnJpZGUgZnJvbXV0YygpIGlmIGl0IGlzLgotIiIiCiB0cnk6CiAgICAgZnJvbSBfZGF0ZXRpbWUgaW1wb3J0ICoKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi9kYm0vX19pbml0X18ucHkgYi9MaWIvZGJtL19faW5pdF9fLnB5CmluZGV4IGE3ODNmZGUuLjVmNDY2NGEgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vX19pbml0X18ucHkKKysrIGIvTGliL2RibS9fX2luaXRfXy5weQpAQCAtNDIsNyArNDIsNyBAQAogX2RlZmF1bHRtb2QgPSBOb25lCiBfbW9kdWxlcyA9IHt9CiAKLWVycm9yID0gKGVycm9yLCBJT0Vycm9yKQorZXJyb3IgPSAoZXJyb3IsIE9TRXJyb3IpCiAKIHRyeToKICAgICBmcm9tIGRibSBpbXBvcnQgbmRibQpAQCAtMTExLDEyICsxMTEsMTAgQEAKICAgICB0cnk6CiAgICAgICAgIGYgPSBpby5vcGVuKGZpbGVuYW1lICsgIi5wYWciLCAicmIiKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgIyBkYm0gbGlua2VkIHdpdGggZ2RibSBvbiBPUy8yIGRvZXNuJ3QgaGF2ZSAuZGlyIGZpbGUKLSAgICAgICAgaWYgbm90IChuZGJtLmxpYnJhcnkgPT0gIkdOVSBnZGJtIiBhbmQgc3lzLnBsYXRmb3JtID09ICJvczJlbXgiKToKLSAgICAgICAgICAgIGYgPSBpby5vcGVuKGZpbGVuYW1lICsgIi5kaXIiLCAicmIiKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYgPSBpby5vcGVuKGZpbGVuYW1lICsgIi5kaXIiLCAicmIiKQorICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgcmV0dXJuICJkYm0ubmRibSIKLSAgICBleGNlcHQgSU9FcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgIyBzb21lIGRibSBlbXVsYXRpb25zIGJhc2VkIG9uIEJlcmtlbGV5IERCIGdlbmVyYXRlIGEgLmRiIGZpbGUKICAgICAgICAgIyBzb21lIGRvIG5vdCwgYnV0IHRoZXkgc2hvdWxkIGJlIGNhdWdodCBieSB0aGUgYnNkIGNoZWNrcwogICAgICAgICB0cnk6CkBAIC0xMjksNyArMTI3LDcgQEAKICAgICAgICAgICAgICAgICBkID0gbmRibS5vcGVuKGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIGQuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiAiZGJtLm5kYm0iCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogICAgICMgQ2hlY2sgZm9yIGR1bWJkYm0gbmV4dCAtLSB0aGlzIGhhcyBhIC5kaXIgYW5kIGEgLmRhdCBmaWxlCkBAIC0xNDYsMTMgKzE0NCwxMyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAiZGJtLmR1bWIiCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBwYXNzCiAKICAgICAjIFNlZSBpZiB0aGUgZmlsZSBleGlzdHMsIHJldHVybiBOb25lIGlmIG5vdAogICAgIHRyeToKICAgICAgICAgZiA9IGlvLm9wZW4oZmlsZW5hbWUsICJyYiIpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIFJlYWQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIC0tIHRoZSBtYWdpYyBudW1iZXIKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCBjZmI5MTIzLi45YWM3ODUyIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC0yOSw3ICsyOSw3IEBACiAKIF9CTE9DS1NJWkUgPSA1MTIKIAotZXJyb3IgPSBJT0Vycm9yCitlcnJvciA9IE9TRXJyb3IKIAogY2xhc3MgX0RhdGFiYXNlKGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKIApAQCAtNjcsNyArNjcsNyBAQAogICAgICAgICAjIE1vZCBieSBKYWNrOiBjcmVhdGUgZGF0YSBmaWxlIGlmIG5lZWRlZAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIGYgPSBfaW8ub3BlbihzZWxmLl9kYXRmaWxlLCAndycsIGVuY29kaW5nPSJMYXRpbi0xIikKICAgICAgICAgICAgIHNlbGYuX2NobW9kKHNlbGYuX2RhdGZpbGUpCiAgICAgICAgIGYuY2xvc2UoKQpAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICBzZWxmLl9pbmRleCA9IHt9CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBfaW8ub3BlbihzZWxmLl9kaXJmaWxlLCAncicsIGVuY29kaW5nPSJMYXRpbi0xIikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKQEAgLTEwMCwxMiArMTAwLDEyIEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fb3MudW5saW5rKHNlbGYuX2Jha2ZpbGUpCi0gICAgICAgIGV4Y2VwdCBzZWxmLl9vcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fb3MucmVuYW1lKHNlbGYuX2RpcmZpbGUsIHNlbGYuX2Jha2ZpbGUpCi0gICAgICAgIGV4Y2VwdCBzZWxmLl9vcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZiA9IHNlbGYuX2lvLm9wZW4oc2VsZi5fZGlyZmlsZSwgJ3cnLCBlbmNvZGluZz0iTGF0aW4tMSIpCmRpZmYgLS1naXQgYS9MaWIvZGVjaW1hbC5weSBiL0xpYi9kZWNpbWFsLnB5CmluZGV4IDE4MjZkZWIuLmQzOWFjMWQgMTAwNjQ0Ci0tLSBhL0xpYi9kZWNpbWFsLnB5CisrKyBiL0xpYi9kZWNpbWFsLnB5CkBAIC03MDMsOCArNzAzLDcgQEAKIAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvIERlY2ltYWwiICUgdmFsdWUpCiAKLSAgICAjIEBjbGFzc21ldGhvZCwgYnV0IEBkZWNvcmF0b3IgaXMgbm90IHZhbGlkIFB5dGhvbiAyLjMgc3ludGF4LCBzbwotICAgICMgZG9uJ3QgdXNlIGl0IChzZWUgbm90ZXMgb24gUHkyLjMgY29tcGF0aWJpbGl0eSBhdCB0b3Agb2YgZmlsZSkKKyAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbV9mbG9hdChjbHMsIGYpOgogICAgICAgICAiIiJDb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuCiAKQEAgLTc0Myw3ICs3NDIsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGNscyhyZXN1bHQpCi0gICAgZnJvbV9mbG9hdCA9IGNsYXNzbWV0aG9kKGZyb21fZmxvYXQpCiAKICAgICBkZWYgX2lzbmFuKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBub3QgYWN0dWFsbHkgb25lLgpkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCBhZTM3N2Q3Li44MDk3NzQ0IDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMzM2LDIwICszMzYsNiBAQAogICAgICAgICAgICAgZm9yIGVsdCBpbiBwb3B1bGFyOiAjIGRpdHRvOyBhcyBmYXN0IGZvciAxJSBkZWxldGlvbgogICAgICAgICAgICAgICAgIGRlbCBiMmpbZWx0XQogCi0gICAgZGVmIGlzYmp1bmsoc2VsZiwgaXRlbSk6Ci0gICAgICAgICJEZXByZWNhdGVkOyB1c2UgJ2l0ZW0gaW4gU2VxdWVuY2VNYXRjaGVyKCkuYmp1bmsnLiIKLSAgICAgICAgd2FybmluZ3Mud2FybigiJ1NlcXVlbmNlTWF0Y2hlcigpLmlzYmp1bmsoaXRlbSknIGlzIGRlcHJlY2F0ZWQ7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgInVzZSAnaXRlbSBpbiBTTWluc3RhbmNlLmJqdW5rJyBpbnN0ZWFkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLmJqdW5rCi0KLSAgICBkZWYgaXNicG9wdWxhcihzZWxmLCBpdGVtKToKLSAgICAgICAgIkRlcHJlY2F0ZWQ7IHVzZSAnaXRlbSBpbiBTZXF1ZW5jZU1hdGNoZXIoKS5icG9wdWxhcicuIgotICAgICAgICB3YXJuaW5ncy53YXJuKCInU2VxdWVuY2VNYXRjaGVyKCkuaXNicG9wdWxhcihpdGVtKScgaXMgZGVwcmVjYXRlZDtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAidXNlICdpdGVtIGluIFNNaW5zdGFuY2UuYnBvcHVsYXInIGluc3RlYWQuIiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgIHJldHVybiBpdGVtIGluIHNlbGYuYnBvcHVsYXIKLQogICAgIGRlZiBmaW5kX2xvbmdlc3RfbWF0Y2goc2VsZiwgYWxvLCBhaGksIGJsbywgYmhpKToKICAgICAgICAgIiIiRmluZCBsb25nZXN0IG1hdGNoaW5nIGJsb2NrIGluIGFbYWxvOmFoaV0gYW5kIGJbYmxvOmJoaV0uCiAKQEAgLTkyMiw4ICs5MDgsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bmtub3duIHRhZyAlcicgJSAodGFnLCkpCiAKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGc6Ci0gICAgICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICAgICAgeWllbGQgZnJvbSBnCiAKICAgICBkZWYgX2R1bXAoc2VsZiwgdGFnLCB4LCBsbywgaGkpOgogICAgICAgICAiIiJHZW5lcmF0ZSBjb21wYXJpc29uIHJlc3VsdHMgZm9yIGEgc2FtZS10YWdnZWQgcmFuZ2UuIiIiCkBAIC05NDIsOCArOTI3LDcgQEAKICAgICAgICAgICAgIHNlY29uZCA9IHNlbGYuX2R1bXAoJysnLCBiLCBibG8sIGJoaSkKIAogICAgICAgICBmb3IgZyBpbiBmaXJzdCwgc2Vjb25kOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZzoKLSAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcKIAogICAgIGRlZiBfZmFuY3lfcmVwbGFjZShzZWxmLCBhLCBhbG8sIGFoaSwgYiwgYmxvLCBiaGkpOgogICAgICAgICByIiIiCkBAIC05OTcsOCArOTgxLDcgQEAKICAgICAgICAgICAgICMgbm8gbm9uLWlkZW50aWNhbCAicHJldHR5IGNsb3NlIiBwYWlyCiAgICAgICAgICAgICBpZiBlcWkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAjIG5vIGlkZW50aWNhbCBwYWlyIGVpdGhlciAtLSB0cmVhdCBpdCBhcyBhIHN0cmFpZ2h0IHJlcGxhY2UKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9wbGFpbl9yZXBsYWNlKGEsIGFsbywgYWhpLCBiLCBibG8sIGJoaSk6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX3BsYWluX3JlcGxhY2UoYSwgYWxvLCBhaGksIGIsIGJsbywgYmhpKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBubyBjbG9zZSBwYWlyLCBidXQgYW4gaWRlbnRpY2FsIHBhaXIgLS0gc3luY2ggdXAgb24gdGhhdAogICAgICAgICAgICAgYmVzdF9pLCBiZXN0X2osIGJlc3RfcmF0aW8gPSBlcWksIGVxaiwgMS4wCkBAIC0xMDEwLDggKzk5Myw3IEBACiAgICAgICAgICMgaWRlbnRpY2FsCiAKICAgICAgICAgIyBwdW1wIG91dCBkaWZmcyBmcm9tIGJlZm9yZSB0aGUgc3luY2ggcG9pbnQKLSAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fZmFuY3lfaGVscGVyKGEsIGFsbywgYmVzdF9pLCBiLCBibG8sIGJlc3Rfaik6Ci0gICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmFuY3lfaGVscGVyKGEsIGFsbywgYmVzdF9pLCBiLCBibG8sIGJlc3RfaikKIAogICAgICAgICAjIGRvIGludHJhbGluZSBtYXJraW5nIG9uIHRoZSBzeW5jaCBwYWlyCiAgICAgICAgIGFlbHQsIGJlbHQgPSBhW2Jlc3RfaV0sIGJbYmVzdF9qXQpAQCAtMTAzMywxNSArMTAxNSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBidGFncyArPSAnICcgKiBsYgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Vua25vd24gdGFnICVyJyAlICh0YWcsKSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX3Fmb3JtYXQoYWVsdCwgYmVsdCwgYXRhZ3MsIGJ0YWdzKToKLSAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX3Fmb3JtYXQoYWVsdCwgYmVsdCwgYXRhZ3MsIGJ0YWdzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyB0aGUgc3luY2ggcGFpciBpcyBpZGVudGljYWwKICAgICAgICAgICAgIHlpZWxkICcgICcgKyBhZWx0CiAKICAgICAgICAgIyBwdW1wIG91dCBkaWZmcyBmcm9tIGFmdGVyIHRoZSBzeW5jaCBwb2ludAotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9mYW5jeV9oZWxwZXIoYSwgYmVzdF9pKzEsIGFoaSwgYiwgYmVzdF9qKzEsIGJoaSk6Ci0gICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmFuY3lfaGVscGVyKGEsIGJlc3RfaSsxLCBhaGksIGIsIGJlc3RfaisxLCBiaGkpCiAKICAgICBkZWYgX2ZhbmN5X2hlbHBlcihzZWxmLCBhLCBhbG8sIGFoaSwgYiwgYmxvLCBiaGkpOgogICAgICAgICBnID0gW10KQEAgLTEwNTMsOCArMTAzMyw3IEBACiAgICAgICAgIGVsaWYgYmxvIDwgYmhpOgogICAgICAgICAgICAgZyA9IHNlbGYuX2R1bXAoJysnLCBiLCBibG8sIGJoaSkKIAotICAgICAgICBmb3IgbGluZSBpbiBnOgotICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICB5aWVsZCBmcm9tIGcKIAogICAgIGRlZiBfcWZvcm1hdChzZWxmLCBhbGluZSwgYmxpbmUsIGF0YWdzLCBidGFncyk6CiAgICAgICAgIHIiIiIKZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IDU0M2ZkYzcuLmNhNDA5NGMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMiwxMiArMiwxNCBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKK2ltcG9ydCBjb2xsZWN0aW9ucwogCiBmcm9tIG9wY29kZSBpbXBvcnQgKgogZnJvbSBvcGNvZGUgaW1wb3J0IF9fYWxsX18gYXMgX29wY29kZXNfYWxsCiAKIF9fYWxsX18gPSBbImNvZGVfaW5mbyIsICJkaXMiLCAiZGlzYXNzZW1ibGUiLCAiZGlzdGIiLCAiZGlzY28iLAotICAgICAgICAgICAiZmluZGxpbmVzdGFydHMiLCAiZmluZGxhYmVscyIsICJzaG93X2NvZGUiXSArIF9vcGNvZGVzX2FsbAorICAgICAgICAgICAiZmluZGxpbmVzdGFydHMiLCAiZmluZGxhYmVscyIsICJzaG93X2NvZGUiLAorICAgICAgICAgICAiZ2V0X2luc3RydWN0aW9ucyIsICJJbnN0cnVjdGlvbiIsICJCeXRlY29kZSJdICsgX29wY29kZXNfYWxsCiBkZWwgX29wY29kZXNfYWxsCiAKIF9oYXZlX2NvZGUgPSAodHlwZXMuTWV0aG9kVHlwZSwgdHlwZXMuRnVuY3Rpb25UeXBlLCB0eXBlcy5Db2RlVHlwZSwgdHlwZSkKQEAgLTI1LDcgKzI3LDcgQEAKICAgICAgICAgYyA9IGNvbXBpbGUoc291cmNlLCBuYW1lLCAnZXhlYycpCiAgICAgcmV0dXJuIGMKIAotZGVmIGRpcyh4PU5vbmUpOgorZGVmIGRpcyh4PU5vbmUsICosIGZpbGU9Tm9uZSk6CiAgICAgIiIiRGlzYXNzZW1ibGUgY2xhc3NlcywgbWV0aG9kcywgZnVuY3Rpb25zLCBvciBjb2RlLgogCiAgICAgV2l0aCBubyBhcmd1bWVudCwgZGlzYXNzZW1ibGUgdGhlIGxhc3QgdHJhY2ViYWNrLgpAQCAtNDIsMjMgKzQ0LDIzIEBACiAgICAgICAgIGl0ZW1zID0gc29ydGVkKHguX19kaWN0X18uaXRlbXMoKSkKICAgICAgICAgZm9yIG5hbWUsIHgxIGluIGl0ZW1zOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh4MSwgX2hhdmVfY29kZSk6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIkRpc2Fzc2VtYmx5IG9mICVzOiIgJSBuYW1lKQorICAgICAgICAgICAgICAgIHByaW50KCJEaXNhc3NlbWJseSBvZiAlczoiICUgbmFtZSwgZmlsZT1maWxlKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZGlzKHgxKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgbXNnOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiU29ycnk6IiwgbXNnKQotICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIlNvcnJ5OiIsIG1zZywgZmlsZT1maWxlKQorICAgICAgICAgICAgICAgIHByaW50KGZpbGU9ZmlsZSkKICAgICBlbGlmIGhhc2F0dHIoeCwgJ2NvX2NvZGUnKTogIyBDb2RlIG9iamVjdAotICAgICAgICBkaXNhc3NlbWJsZSh4KQorICAgICAgICBkaXNhc3NlbWJsZSh4LCBmaWxlPWZpbGUpCiAgICAgZWxpZiBpc2luc3RhbmNlKHgsIChieXRlcywgYnl0ZWFycmF5KSk6ICMgUmF3IGJ5dGVjb2RlCi0gICAgICAgIF9kaXNhc3NlbWJsZV9ieXRlcyh4KQorICAgICAgICBfZGlzYXNzZW1ibGVfYnl0ZXMoeCwgZmlsZT1maWxlKQogICAgIGVsaWYgaXNpbnN0YW5jZSh4LCBzdHIpOiAgICAjIFNvdXJjZSBjb2RlCi0gICAgICAgIF9kaXNhc3NlbWJsZV9zdHIoeCkKKyAgICAgICAgX2Rpc2Fzc2VtYmxlX3N0cih4LCBmaWxlPWZpbGUpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBkaXNhc3NlbWJsZSAlcyBvYmplY3RzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHgpLl9fbmFtZV9fKQogCi1kZWYgZGlzdGIodGI9Tm9uZSk6CitkZWYgZGlzdGIodGI9Tm9uZSwgKiwgZmlsZT1Ob25lKToKICAgICAiIiJEaXNhc3NlbWJsZSBhIHRyYWNlYmFjayAoZGVmYXVsdDogbGFzdCB0cmFjZWJhY2spLiIiIgogICAgIGlmIHRiIGlzIE5vbmU6CiAgICAgICAgIHRyeToKQEAgLTY2LDcgKzY4LDcgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJubyBsYXN0IHRyYWNlYmFjayB0byBkaXNhc3NlbWJsZSIpCiAgICAgICAgIHdoaWxlIHRiLnRiX25leHQ6IHRiID0gdGIudGJfbmV4dAotICAgIGRpc2Fzc2VtYmxlKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCisgICAgZGlzYXNzZW1ibGUodGIudGJfZnJhbWUuZl9jb2RlLCB0Yi50Yl9sYXN0aSwgZmlsZT1maWxlKQogCiAjIFRoZSBpbnNwZWN0IG1vZHVsZSBpbnRlcnJvZ2F0ZXMgdGhpcyBkaWN0aW9uYXJ5IHRvIGJ1aWxkIGl0cwogIyBsaXN0IG9mIENPXyogY29uc3RhbnRzLiBJdCBpcyBhbHNvIHVzZWQgYnkgcHJldHR5X2ZsYWdzIHRvCkBAIC05NSwxOSArOTcsMjIgQEAKICAgICAgICAgbmFtZXMuYXBwZW5kKGhleChmbGFncykpCiAgICAgcmV0dXJuICIsICIuam9pbihuYW1lcykKIAotZGVmIGNvZGVfaW5mbyh4KToKLSAgICAiIiJGb3JtYXR0ZWQgZGV0YWlscyBvZiBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUuIiIiCitkZWYgX2dldF9jb2RlX29iamVjdCh4KToKKyAgICAiIiJIZWxwZXIgdG8gaGFuZGxlIG1ldGhvZHMsIGZ1bmN0aW9ucywgc3RyaW5ncyBhbmQgcmF3IGNvZGUgb2JqZWN0cyIiIgogICAgIGlmIGhhc2F0dHIoeCwgJ19fZnVuY19fJyk6ICMgTWV0aG9kCiAgICAgICAgIHggPSB4Ll9fZnVuY19fCiAgICAgaWYgaGFzYXR0cih4LCAnX19jb2RlX18nKTogIyBGdW5jdGlvbgogICAgICAgICB4ID0geC5fX2NvZGVfXwogICAgIGlmIGlzaW5zdGFuY2UoeCwgc3RyKTogICAgICMgU291cmNlIGNvZGUKLSAgICAgICAgeCA9IF90cnlfY29tcGlsZSh4LCAiPGNvZGVfaW5mbz4iKQorICAgICAgICB4ID0gX3RyeV9jb21waWxlKHgsICI8ZGlzYXNzZW1ibHk+IikKICAgICBpZiBoYXNhdHRyKHgsICdjb19jb2RlJyk6ICAjIENvZGUgb2JqZWN0Ci0gICAgICAgIHJldHVybiBfZm9ybWF0X2NvZGVfaW5mbyh4KQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZG9uJ3Qga25vdyBob3cgdG8gZGlzYXNzZW1ibGUgJXMgb2JqZWN0cyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSh4KS5fX25hbWVfXykKKyAgICAgICAgcmV0dXJuIHgKKyAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGRpc2Fzc2VtYmxlICVzIG9iamVjdHMiICUKKyAgICAgICAgICAgICAgICAgICAgdHlwZSh4KS5fX25hbWVfXykKKworZGVmIGNvZGVfaW5mbyh4KToKKyAgICAiIiJGb3JtYXR0ZWQgZGV0YWlscyBvZiBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUuIiIiCisgICAgcmV0dXJuIF9mb3JtYXRfY29kZV9pbmZvKF9nZXRfY29kZV9vYmplY3QoeCkpCiAKIGRlZiBfZm9ybWF0X2NvZGVfaW5mbyhjbyk6CiAgICAgbGluZXMgPSBbXQpAQCAtMTQwLDEwNiArMTQ1LDE5NiBAQAogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIlNGQ6ICVzIiAlIGlfbikKICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQogCi1kZWYgc2hvd19jb2RlKGNvKToKK2RlZiBzaG93X2NvZGUoY28sICosIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgZGV0YWlscyBvZiBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUgdG8gc3Rkb3V0LiIiIgotICAgIHByaW50KGNvZGVfaW5mbyhjbykpCisgICAgcHJpbnQoY29kZV9pbmZvKGNvKSwgZmlsZT1maWxlKQogCi1kZWYgZGlzYXNzZW1ibGUoY28sIGxhc3RpPS0xKToKLSAgICAiIiJEaXNhc3NlbWJsZSBhIGNvZGUgb2JqZWN0LiIiIgotICAgIGNvZGUgPSBjby5jb19jb2RlCi0gICAgbGFiZWxzID0gZmluZGxhYmVscyhjb2RlKQorX0luc3RydWN0aW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiX0luc3RydWN0aW9uIiwKKyAgICAgIm9wbmFtZSBvcGNvZGUgYXJnIGFyZ3ZhbCBhcmdyZXByIG9mZnNldCBzdGFydHNfbGluZSBpc19qdW1wX3RhcmdldCIpCisKK2NsYXNzIEluc3RydWN0aW9uKF9JbnN0cnVjdGlvbik6CisgICAgIiIiRGV0YWlscyBmb3IgYSBieXRlY29kZSBvcGVyYXRpb24KKworICAgICAgIERlZmluZWQgZmllbGRzOgorICAgICAgICAgb3BuYW1lIC0gaHVtYW4gcmVhZGFibGUgbmFtZSBmb3Igb3BlcmF0aW9uCisgICAgICAgICBvcGNvZGUgLSBudW1lcmljIGNvZGUgZm9yIG9wZXJhdGlvbgorICAgICAgICAgYXJnIC0gbnVtZXJpYyBhcmd1bWVudCB0byBvcGVyYXRpb24gKGlmIGFueSksIG90aGVyd2lzZSBOb25lCisgICAgICAgICBhcmd2YWwgLSByZXNvbHZlZCBhcmcgdmFsdWUgKGlmIGtub3duKSwgb3RoZXJ3aXNlIHNhbWUgYXMgYXJnCisgICAgICAgICBhcmdyZXByIC0gaHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygb3BlcmF0aW9uIGFyZ3VtZW50CisgICAgICAgICBvZmZzZXQgLSBzdGFydCBpbmRleCBvZiBvcGVyYXRpb24gd2l0aGluIGJ5dGVjb2RlIHNlcXVlbmNlCisgICAgICAgICBzdGFydHNfbGluZSAtIGxpbmUgc3RhcnRlZCBieSB0aGlzIG9wY29kZSAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUKKyAgICAgICAgIGlzX2p1bXBfdGFyZ2V0IC0gVHJ1ZSBpZiBvdGhlciBjb2RlIGp1bXBzIHRvIGhlcmUsIG90aGVyd2lzZSBGYWxzZQorICAgICIiIgorCisgICAgZGVmIF9kaXNhc3NlbWJsZShzZWxmLCBsaW5lbm9fd2lkdGg9MywgbWFya19hc19jdXJyZW50PUZhbHNlKToKKyAgICAgICAgIiIiRm9ybWF0IGluc3RydWN0aW9uIGRldGFpbHMgZm9yIGluY2x1c2lvbiBpbiBkaXNhc3NlbWJseSBvdXRwdXQKKworICAgICAgICAqbGluZW5vX3dpZHRoKiBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgbGluZSBudW1iZXIgZmllbGQgKDAgb21pdHMgaXQpCisgICAgICAgICptYXJrX2FzX2N1cnJlbnQqIGluc2VydHMgYSAnLS0+JyBtYXJrZXIgYXJyb3cgYXMgcGFydCBvZiB0aGUgbGluZQorICAgICAgICAiIiIKKyAgICAgICAgZmllbGRzID0gW10KKyAgICAgICAgIyBDb2x1bW46IFNvdXJjZSBjb2RlIGxpbmUgbnVtYmVyCisgICAgICAgIGlmIGxpbmVub193aWR0aDoKKyAgICAgICAgICAgIGlmIHNlbGYuc3RhcnRzX2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbGluZW5vX2ZtdCA9ICIlJSVkZCIgJSBsaW5lbm9fd2lkdGgKKyAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKGxpbmVub19mbXQgJSBzZWxmLnN0YXJ0c19saW5lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCcgJyAqIGxpbmVub193aWR0aCkKKyAgICAgICAgIyBDb2x1bW46IEN1cnJlbnQgaW5zdHJ1Y3Rpb24gaW5kaWNhdG9yCisgICAgICAgIGlmIG1hcmtfYXNfY3VycmVudDoKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJy0tPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCcgICAnKQorICAgICAgICAjIENvbHVtbjogSnVtcCB0YXJnZXQgbWFya2VyCisgICAgICAgIGlmIHNlbGYuaXNfanVtcF90YXJnZXQ6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCc+PicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCcgICcpCisgICAgICAgICMgQ29sdW1uOiBJbnN0cnVjdGlvbiBvZmZzZXQgZnJvbSBzdGFydCBvZiBjb2RlIHNlcXVlbmNlCisgICAgICAgIGZpZWxkcy5hcHBlbmQocmVwcihzZWxmLm9mZnNldCkucmp1c3QoNCkpCisgICAgICAgICMgQ29sdW1uOiBPcGNvZGUgbmFtZQorICAgICAgICBmaWVsZHMuYXBwZW5kKHNlbGYub3BuYW1lLmxqdXN0KDIwKSkKKyAgICAgICAgIyBDb2x1bW46IE9wY29kZSBhcmd1bWVudAorICAgICAgICBpZiBzZWxmLmFyZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQocmVwcihzZWxmLmFyZykucmp1c3QoNSkpCisgICAgICAgICAgICAjIENvbHVtbjogT3Bjb2RlIGFyZ3VtZW50IGRldGFpbHMKKyAgICAgICAgICAgIGlmIHNlbGYuYXJncmVwcjoKKyAgICAgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCcoJyArIHNlbGYuYXJncmVwciArICcpJykKKyAgICAgICAgcmV0dXJuICcgJy5qb2luKGZpZWxkcykKKworCitkZWYgZ2V0X2luc3RydWN0aW9ucyh4LCAqLCBsaW5lX29mZnNldD0wKToKKyAgICAiIiJJdGVyYXRvciBmb3IgdGhlIG9wY29kZXMgaW4gbWV0aG9kcywgZnVuY3Rpb25zIG9yIGNvZGUKKworICAgIEdlbmVyYXRlcyBhIHNlcmllcyBvZiBJbnN0cnVjdGlvbiBuYW1lZCB0dXBsZXMgZ2l2aW5nIHRoZSBkZXRhaWxzIG9mCisgICAgZWFjaCBvcGVyYXRpb25zIGluIHRoZSBzdXBwbGllZCBjb2RlLgorCisgICAgVGhlIGdpdmVuIGxpbmUgb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSAnc3RhcnRzX2xpbmUnIGF0dHJpYnV0ZSBvZiBhbnkKKyAgICBpbnN0cnVjdGlvbnMgdGhhdCBzdGFydCBhIG5ldyBsaW5lLgorICAgICIiIgorICAgIGNvID0gX2dldF9jb2RlX29iamVjdCh4KQorICAgIGNlbGxfbmFtZXMgPSBjby5jb19jZWxsdmFycyArIGNvLmNvX2ZyZWV2YXJzCiAgICAgbGluZXN0YXJ0cyA9IGRpY3QoZmluZGxpbmVzdGFydHMoY28pKQorICAgIHJldHVybiBfZ2V0X2luc3RydWN0aW9uc19ieXRlcyhjby5jb19jb2RlLCBjby5jb192YXJuYW1lcywgY28uY29fbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvLmNvX2NvbnN0cywgY2VsbF9uYW1lcywgbGluZXN0YXJ0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQpCisKK2RlZiBfZ2V0X2NvbnN0X2luZm8oY29uc3RfaW5kZXgsIGNvbnN0X2xpc3QpOgorICAgICIiIkhlbHBlciB0byBnZXQgb3B0aW9uYWwgZGV0YWlscyBhYm91dCBjb25zdCByZWZlcmVuY2VzCisKKyAgICAgICBSZXR1cm5zIHRoZSBkZXJlZmVyZW5jZWQgY29uc3RhbnQgYW5kIGl0cyByZXByIGlmIHRoZSBjb25zdGFudAorICAgICAgIGxpc3QgaXMgZGVmaW5lZC4KKyAgICAgICBPdGhlcndpc2UgcmV0dXJucyB0aGUgY29uc3RhbnQgaW5kZXggYW5kIGl0cyByZXByKCkuCisgICAgIiIiCisgICAgYXJndmFsID0gY29uc3RfaW5kZXgKKyAgICBpZiBjb25zdF9saXN0IGlzIG5vdCBOb25lOgorICAgICAgICBhcmd2YWwgPSBjb25zdF9saXN0W2NvbnN0X2luZGV4XQorICAgIHJldHVybiBhcmd2YWwsIHJlcHIoYXJndmFsKQorCitkZWYgX2dldF9uYW1lX2luZm8obmFtZV9pbmRleCwgbmFtZV9saXN0KToKKyAgICAiIiJIZWxwZXIgdG8gZ2V0IG9wdGlvbmFsIGRldGFpbHMgYWJvdXQgbmFtZWQgcmVmZXJlbmNlcworCisgICAgICAgUmV0dXJucyB0aGUgZGVyZWZlcmVuY2VkIG5hbWUgYXMgYm90aCB2YWx1ZSBhbmQgcmVwciBpZiB0aGUgbmFtZQorICAgICAgIGxpc3QgaXMgZGVmaW5lZC4KKyAgICAgICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSBpbmRleCBhbmQgaXRzIHJlcHIoKS4KKyAgICAiIiIKKyAgICBhcmd2YWwgPSBuYW1lX2luZGV4CisgICAgaWYgbmFtZV9saXN0IGlzIG5vdCBOb25lOgorICAgICAgICBhcmd2YWwgPSBuYW1lX2xpc3RbbmFtZV9pbmRleF0KKyAgICAgICAgYXJncmVwciA9IGFyZ3ZhbAorICAgIGVsc2U6CisgICAgICAgIGFyZ3JlcHIgPSByZXByKGFyZ3ZhbCkKKyAgICByZXR1cm4gYXJndmFsLCBhcmdyZXByCisKKworZGVmIF9nZXRfaW5zdHJ1Y3Rpb25zX2J5dGVzKGNvZGUsIHZhcm5hbWVzPU5vbmUsIG5hbWVzPU5vbmUsIGNvbnN0YW50cz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGNlbGxzPU5vbmUsIGxpbmVzdGFydHM9Tm9uZSwgbGluZV9vZmZzZXQ9MCk6CisgICAgIiIiSXRlcmF0ZSBvdmVyIHRoZSBpbnN0cnVjdGlvbnMgaW4gYSBieXRlY29kZSBzdHJpbmcuCisKKyAgICBHZW5lcmF0ZXMgYSBzZXF1ZW5jZSBvZiBJbnN0cnVjdGlvbiBuYW1lZHR1cGxlcyBnaXZpbmcgdGhlIGRldGFpbHMgb2YgZWFjaAorICAgIG9wY29kZS4gIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUncyBydW50aW1lIGVudmlyb25tZW50CisgICAgKGUuZy4gdmFyaWFibGUgbmFtZXMsIGNvbnN0YW50cykgY2FuIGJlIHNwZWNpZmllZCB1c2luZyBvcHRpb25hbAorICAgIGFyZ3VtZW50cy4KKworICAgICIiIgorICAgIGxhYmVscyA9IGZpbmRsYWJlbHMoY29kZSkKKyAgICBleHRlbmRlZF9hcmcgPSAwCisgICAgc3RhcnRzX2xpbmUgPSBOb25lCisgICAgZnJlZSA9IE5vbmUKKyAgICAjIGVudW1lcmF0ZSgpIGlzIG5vdCBhbiBvcHRpb24sIHNpbmNlIHdlIHNvbWV0aW1lcyBwcm9jZXNzCisgICAgIyBtdWx0aXBsZSBlbGVtZW50cyBvbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIGxvb3AKICAgICBuID0gbGVuKGNvZGUpCiAgICAgaSA9IDAKLSAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgZnJlZSA9IE5vbmUKICAgICB3aGlsZSBpIDwgbjoKICAgICAgICAgb3AgPSBjb2RlW2ldCi0gICAgICAgIGlmIGkgaW4gbGluZXN0YXJ0czoKLSAgICAgICAgICAgIGlmIGkgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgIHByaW50KCIlM2QiICUgbGluZXN0YXJ0c1tpXSwgZW5kPScgJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCcgICAnLCBlbmQ9JyAnKQotCi0gICAgICAgIGlmIGkgPT0gbGFzdGk6IHByaW50KCctLT4nLCBlbmQ9JyAnKQotICAgICAgICBlbHNlOiBwcmludCgnICAgJywgZW5kPScgJykKLSAgICAgICAgaWYgaSBpbiBsYWJlbHM6IHByaW50KCc+PicsIGVuZD0nICcpCi0gICAgICAgIGVsc2U6IHByaW50KCcgICcsIGVuZD0nICcpCi0gICAgICAgIHByaW50KHJlcHIoaSkucmp1c3QoNCksIGVuZD0nICcpCi0gICAgICAgIHByaW50KG9wbmFtZVtvcF0ubGp1c3QoMjApLCBlbmQ9JyAnKQorICAgICAgICBvZmZzZXQgPSBpCisgICAgICAgIGlmIGxpbmVzdGFydHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdGFydHNfbGluZSA9IGxpbmVzdGFydHMuZ2V0KGksIE5vbmUpCisgICAgICAgICAgICBpZiBzdGFydHNfbGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzdGFydHNfbGluZSArPSBsaW5lX29mZnNldAorICAgICAgICBpc19qdW1wX3RhcmdldCA9IGkgaW4gbGFiZWxzCiAgICAgICAgIGkgPSBpKzEKKyAgICAgICAgYXJnID0gTm9uZQorICAgICAgICBhcmd2YWwgPSBOb25lCisgICAgICAgIGFyZ3JlcHIgPSAnJwogICAgICAgICBpZiBvcCA+PSBIQVZFX0FSR1VNRU5UOgotICAgICAgICAgICAgb3BhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NiArIGV4dGVuZGVkX2FyZworICAgICAgICAgICAgYXJnID0gY29kZVtpXSArIGNvZGVbaSsxXSoyNTYgKyBleHRlbmRlZF9hcmcKICAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IDAKICAgICAgICAgICAgIGkgPSBpKzIKICAgICAgICAgICAgIGlmIG9wID09IEVYVEVOREVEX0FSRzoKLSAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSBvcGFyZyo2NTUzNgotICAgICAgICAgICAgcHJpbnQocmVwcihvcGFyZykucmp1c3QoNSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gYXJnKjY1NTM2CisgICAgICAgICAgICAjICBTZXQgYXJndmFsIHRvIHRoZSBkZXJlZmVyZW5jZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IHdoZW4KKyAgICAgICAgICAgICMgIGF2YWlsYWJlLCBhbmQgYXJncmVwciB0byB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFyZ3ZhbC4KKyAgICAgICAgICAgICMgICAgX2Rpc2Fzc2VtYmxlX2J5dGVzIG5lZWRzIHRoZSBzdHJpbmcgcmVwciBvZiB0aGUKKyAgICAgICAgICAgICMgICAgcmF3IG5hbWUgaW5kZXggZm9yIExPQURfR0xPQkFMLCBMT0FEX0NPTlNULCBldGMuCisgICAgICAgICAgICBhcmd2YWwgPSBhcmcKICAgICAgICAgICAgIGlmIG9wIGluIGhhc2NvbnN0OgotICAgICAgICAgICAgICAgIHByaW50KCcoJyArIHJlcHIoY28uY29fY29uc3RzW29wYXJnXSkgKyAnKScsIGVuZD0nICcpCisgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9jb25zdF9pbmZvKGFyZywgY29uc3RhbnRzKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYW1lOgotICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGNvLmNvX25hbWVzW29wYXJnXSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIG5hbWVzKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqcmVsOgotICAgICAgICAgICAgICAgIHByaW50KCcodG8gJyArIHJlcHIoaSArIG9wYXJnKSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgICAgICBhcmd2YWwgPSBpICsgYXJnCisgICAgICAgICAgICAgICAgYXJncmVwciA9ICJ0byAiICsgcmVwcihhcmd2YWwpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2xvY2FsOgotICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGNvLmNvX3Zhcm5hbWVzW29wYXJnXSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIHZhcm5hbWVzKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNjb21wYXJlOgotICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGNtcF9vcFtvcGFyZ10gKyAnKScsIGVuZD0nICcpCisgICAgICAgICAgICAgICAgYXJndmFsID0gY21wX29wW2FyZ10KKyAgICAgICAgICAgICAgICBhcmdyZXByID0gYXJndmFsCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2ZyZWU6Ci0gICAgICAgICAgICAgICAgaWYgZnJlZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBmcmVlID0gY28uY29fY2VsbHZhcnMgKyBjby5jb19mcmVldmFycwotICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGZyZWVbb3BhcmddICsgJyknLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgY2VsbHMpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgotICAgICAgICAgICAgICAgIHByaW50KCcoJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyKScKLSAgICAgICAgICAgICAgICAgICAgICAlIChjb2RlW2ktMl0sIGNvZGVbaS0xXSksIGVuZD0nICcpCi0gICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICBhcmdyZXByID0gIiVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciIgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pCisgICAgICAgIHlpZWxkIEluc3RydWN0aW9uKG9wbmFtZVtvcF0sIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIGFyZ3ZhbCwgYXJncmVwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBzdGFydHNfbGluZSwgaXNfanVtcF90YXJnZXQpCisKK2RlZiBkaXNhc3NlbWJsZShjbywgbGFzdGk9LTEsICosIGZpbGU9Tm9uZSk6CisgICAgIiIiRGlzYXNzZW1ibGUgYSBjb2RlIG9iamVjdC4iIiIKKyAgICBjZWxsX25hbWVzID0gY28uY29fY2VsbHZhcnMgKyBjby5jb19mcmVldmFycworICAgIGxpbmVzdGFydHMgPSBkaWN0KGZpbmRsaW5lc3RhcnRzKGNvKSkKKyAgICBfZGlzYXNzZW1ibGVfYnl0ZXMoY28uY29fY29kZSwgbGFzdGksIGNvLmNvX3Zhcm5hbWVzLCBjby5jb19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY28uY29fY29uc3RzLCBjZWxsX25hbWVzLCBsaW5lc3RhcnRzLCBmaWxlPWZpbGUpCiAKIGRlZiBfZGlzYXNzZW1ibGVfYnl0ZXMoY29kZSwgbGFzdGk9LTEsIHZhcm5hbWVzPU5vbmUsIG5hbWVzPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50cz1Ob25lKToKLSAgICBsYWJlbHMgPSBmaW5kbGFiZWxzKGNvZGUpCi0gICAgbiA9IGxlbihjb2RlKQotICAgIGkgPSAwCi0gICAgd2hpbGUgaSA8IG46Ci0gICAgICAgIG9wID0gY29kZVtpXQotICAgICAgICBpZiBpID09IGxhc3RpOiBwcmludCgnLS0+JywgZW5kPScgJykKLSAgICAgICAgZWxzZTogcHJpbnQoJyAgICcsIGVuZD0nICcpCi0gICAgICAgIGlmIGkgaW4gbGFiZWxzOiBwcmludCgnPj4nLCBlbmQ9JyAnKQotICAgICAgICBlbHNlOiBwcmludCgnICAnLCBlbmQ9JyAnKQotICAgICAgICBwcmludChyZXByKGkpLnJqdXN0KDQpLCBlbmQ9JyAnKQotICAgICAgICBwcmludChvcG5hbWVbb3BdLmxqdXN0KDE1KSwgZW5kPScgJykKLSAgICAgICAgaSA9IGkrMQotICAgICAgICBpZiBvcCA+PSBIQVZFX0FSR1VNRU5UOgotICAgICAgICAgICAgb3BhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NgotICAgICAgICAgICAgaSA9IGkrMgotICAgICAgICAgICAgcHJpbnQocmVwcihvcGFyZykucmp1c3QoNSksIGVuZD0nICcpCi0gICAgICAgICAgICBpZiBvcCBpbiBoYXNjb25zdDoKLSAgICAgICAgICAgICAgICBpZiBjb25zdGFudHM6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCcoJyArIHJlcHIoY29uc3RhbnRzW29wYXJnXSkgKyAnKScsIGVuZD0nICcpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyglZCknJW9wYXJnLCBlbmQ9JyAnKQotICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYW1lOgotICAgICAgICAgICAgICAgIGlmIG5hbWVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBwcmludCgnKCcgKyBuYW1lc1tvcGFyZ10gKyAnKScsIGVuZD0nICcpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyglZCknJW9wYXJnLCBlbmQ9JyAnKQotICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqcmVsOgotICAgICAgICAgICAgICAgIHByaW50KCcodG8gJyArIHJlcHIoaSArIG9wYXJnKSArICcpJywgZW5kPScgJykKLSAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbG9jYWw6Ci0gICAgICAgICAgICAgICAgaWYgdmFybmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCcoJyArIHZhcm5hbWVzW29wYXJnXSArICcpJywgZW5kPScgJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgnKCVkKScgJSBvcGFyZywgZW5kPScgJykKLSAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzY29tcGFyZToKLSAgICAgICAgICAgICAgICBwcmludCgnKCcgKyBjbXBfb3Bbb3BhcmddICsgJyknLCBlbmQ9JyAnKQotICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKLSAgICAgICAgICAgICAgICBwcmludCgnKCVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciknCi0gICAgICAgICAgICAgICAgICAgICAgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pLCBlbmQ9JyAnKQotICAgICAgICBwcmludCgpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50cz1Ob25lLCBjZWxscz1Ob25lLCBsaW5lc3RhcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICosIGZpbGU9Tm9uZSk6CisgICAgIyBPbWl0IHRoZSBsaW5lIG51bWJlciBjb2x1bW4gZW50aXJlbHkgaWYgd2UgaGF2ZSBubyBsaW5lIG51bWJlciBpbmZvCisgICAgc2hvd19saW5lbm8gPSBsaW5lc3RhcnRzIGlzIG5vdCBOb25lCisgICAgIyBUT0RPPzogQWRqdXN0IHdpZHRoIHVwd2FyZHMgaWYgbWF4KGxpbmVzdGFydHMudmFsdWVzKCkpID49IDEwMDA/CisgICAgbGluZW5vX3dpZHRoID0gMyBpZiBzaG93X2xpbmVubyBlbHNlIDAKKyAgICBmb3IgaW5zdHIgaW4gX2dldF9pbnN0cnVjdGlvbnNfYnl0ZXMoY29kZSwgdmFybmFtZXMsIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudHMsIGNlbGxzLCBsaW5lc3RhcnRzKToKKyAgICAgICAgbmV3X3NvdXJjZV9saW5lID0gKHNob3dfbGluZW5vIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHIuc3RhcnRzX2xpbmUgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ci5vZmZzZXQgPiAwKQorICAgICAgICBpZiBuZXdfc291cmNlX2xpbmU6CisgICAgICAgICAgICBwcmludChmaWxlPWZpbGUpCisgICAgICAgIGlzX2N1cnJlbnRfaW5zdHIgPSBpbnN0ci5vZmZzZXQgPT0gbGFzdGkKKyAgICAgICAgcHJpbnQoaW5zdHIuX2Rpc2Fzc2VtYmxlKGxpbmVub193aWR0aCwgaXNfY3VycmVudF9pbnN0ciksIGZpbGU9ZmlsZSkKIAotZGVmIF9kaXNhc3NlbWJsZV9zdHIoc291cmNlKToKK2RlZiBfZGlzYXNzZW1ibGVfc3RyKHNvdXJjZSwgKiwgZmlsZT1Ob25lKToKICAgICAiIiJDb21waWxlIHRoZSBzb3VyY2Ugc3RyaW5nLCB0aGVuIGRpc2Fzc2VtYmxlIHRoZSBjb2RlIG9iamVjdC4iIiIKLSAgICBkaXNhc3NlbWJsZShfdHJ5X2NvbXBpbGUoc291cmNlLCAnPGRpcz4nKSkKKyAgICBkaXNhc3NlbWJsZShfdHJ5X2NvbXBpbGUoc291cmNlLCAnPGRpcz4nKSwgZmlsZT1maWxlKQogCiBkaXNjbyA9IGRpc2Fzc2VtYmxlICAgICAgICAgICAgICAgICAgICAgIyBYWFggRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAKQEAgLTI1MCwxOSArMzQ1LDIxIEBACiAKICAgICAiIiIKICAgICBsYWJlbHMgPSBbXQorICAgICMgZW51bWVyYXRlKCkgaXMgbm90IGFuIG9wdGlvbiwgc2luY2Ugd2Ugc29tZXRpbWVzIHByb2Nlc3MKKyAgICAjIG11bHRpcGxlIGVsZW1lbnRzIG9uIGEgc2luZ2xlIHBhc3MgdGhyb3VnaCB0aGUgbG9vcAogICAgIG4gPSBsZW4oY29kZSkKICAgICBpID0gMAogICAgIHdoaWxlIGkgPCBuOgogICAgICAgICBvcCA9IGNvZGVbaV0KICAgICAgICAgaSA9IGkrMQogICAgICAgICBpZiBvcCA+PSBIQVZFX0FSR1VNRU5UOgotICAgICAgICAgICAgb3BhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NgorICAgICAgICAgICAgYXJnID0gY29kZVtpXSArIGNvZGVbaSsxXSoyNTYKICAgICAgICAgICAgIGkgPSBpKzIKICAgICAgICAgICAgIGxhYmVsID0gLTEKICAgICAgICAgICAgIGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgbGFiZWwgPSBpK29wYXJnCisgICAgICAgICAgICAgICAgbGFiZWwgPSBpK2FyZwogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqYWJzOgotICAgICAgICAgICAgICAgIGxhYmVsID0gb3BhcmcKKyAgICAgICAgICAgICAgICBsYWJlbCA9IGFyZwogICAgICAgICAgICAgaWYgbGFiZWwgPj0gMDoKICAgICAgICAgICAgICAgICBpZiBsYWJlbCBub3QgaW4gbGFiZWxzOgogICAgICAgICAgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGxhYmVsKQpAQCAtMjkwLDYgKzM4Nyw1MCBAQAogICAgIGlmIGxpbmVubyAhPSBsYXN0bGluZW5vOgogICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQogCitjbGFzcyBCeXRlY29kZToKKyAgICAiIiJUaGUgYnl0ZWNvZGUgb3BlcmF0aW9ucyBvZiBhIHBpZWNlIG9mIGNvZGUKKworICAgIEluc3RhbnRpYXRlIHRoaXMgd2l0aCBhIGZ1bmN0aW9uLCBtZXRob2QsIHN0cmluZyBvZiBjb2RlLCBvciBhIGNvZGUgb2JqZWN0CisgICAgKGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKSkuCisKKyAgICBJdGVyYXRpbmcgb3ZlciB0aGlzIHlpZWxkcyB0aGUgYnl0ZWNvZGUgb3BlcmF0aW9ucyBhcyBJbnN0cnVjdGlvbiBpbnN0YW5jZXMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICBzZWxmLmNvZGVvYmogPSBfZ2V0X2NvZGVfb2JqZWN0KHgpCisgICAgICAgIHNlbGYuY2VsbF9uYW1lcyA9IHNlbGYuY29kZW9iai5jb19jZWxsdmFycyArIHNlbGYuY29kZW9iai5jb19mcmVldmFycworICAgICAgICBzZWxmLmxpbmVzdGFydHMgPSBkaWN0KGZpbmRsaW5lc3RhcnRzKHNlbGYuY29kZW9iaikpCisgICAgICAgIHNlbGYubGluZV9vZmZzZXQgPSAwCisgICAgICAgIHNlbGYub3JpZ2luYWxfb2JqZWN0ID0geAorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBjbyA9IHNlbGYuY29kZW9iagorICAgICAgICByZXR1cm4gX2dldF9pbnN0cnVjdGlvbnNfYnl0ZXMoY28uY29fY29kZSwgY28uY29fdmFybmFtZXMsIGNvLmNvX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjby5jb19jb25zdHMsIHNlbGYuY2VsbF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lc3RhcnRzLCBzZWxmLmxpbmVfb2Zmc2V0KQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9KHshcn0pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYub3JpZ2luYWxfb2JqZWN0KQorCisgICAgZGVmIGluZm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiBmb3JtYXR0ZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUgb2JqZWN0LiIiIgorICAgICAgICByZXR1cm4gX2Zvcm1hdF9jb2RlX2luZm8oc2VsZi5jb2Rlb2JqKQorCisgICAgZGVmIHNob3dfaW5mbyhzZWxmLCAqLCBmaWxlPU5vbmUpOgorICAgICAgICAiIiJQcmludCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGluZm8oKS4iIiIKKyAgICAgICAgcHJpbnQoc2VsZi5pbmZvKCksIGZpbGU9ZmlsZSkKKworICAgIGRlZiBkaXNwbGF5X2NvZGUoc2VsZiwgKiwgZmlsZT1Ob25lKToKKyAgICAgICAgIiIiUHJpbnQgYSBmb3JtYXR0ZWQgdmlldyBvZiB0aGUgYnl0ZWNvZGUgb3BlcmF0aW9ucy4KKyAgICAgICAgIiIiCisgICAgICAgIGNvID0gc2VsZi5jb2Rlb2JqCisgICAgICAgIHJldHVybiBfZGlzYXNzZW1ibGVfYnl0ZXMoY28uY29fY29kZSwgdmFybmFtZXM9Y28uY29fdmFybmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXM9Y28uY29fbmFtZXMsIGNvbnN0YW50cz1jby5jb19jb25zdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbHM9c2VsZi5jZWxsX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzdGFydHM9c2VsZi5saW5lc3RhcnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9ZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisKIGRlZiBfdGVzdCgpOgogICAgICIiIlNpbXBsZSB0ZXN0IHByb2dyYW0gdG8gZGlzYXNzZW1ibGUgYSBmaWxlLiIiIgogICAgIGlmIHN5cy5hcmd2WzE6XToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkgYi9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CmluZGV4IDgzZDdjYjcuLmY0MDc2ZDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQpAQCAtMTMsNSArMTMsNSBAQAogIyBVcGRhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIFB5dGhvbiByZWxlYXNlIHByb2Nlc3MuCiAjCiAjLS1zdGFydCBjb25zdGFudHMtLQotX192ZXJzaW9uX18gPSAiMy4zLjIiCitfX3ZlcnNpb25fXyA9ICIzLjQuMGExIgogIy0tZW5kIGNvbnN0YW50cy0tCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5CmluZGV4IGM3OTVjOTUuLjkxMWU4NGQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5CkBAIC0zNTEsNyArMzUxLDcgQEAKICAgICAgICAgcmV0dXJuIG1hY3Jvcywgb2JqZWN0cywgZXh0cmEsIHBwX29wdHMsIGJ1aWxkCiAKICAgICBkZWYgX2dldF9jY19hcmdzKHNlbGYsIHBwX29wdHMsIGRlYnVnLCBiZWZvcmUpOgotICAgICAgICAjIHdvcmtzIGZvciB1bml4Y2NvbXBpbGVyLCBlbXhjY29tcGlsZXIsIGN5Z3dpbmNjb21waWxlcgorICAgICAgICAjIHdvcmtzIGZvciB1bml4Y2NvbXBpbGVyLCBjeWd3aW5jY29tcGlsZXIKICAgICAgICAgY2NfYXJncyA9IHBwX29wdHMgKyBbJy1jJ10KICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICBjY19hcmdzWzowXSA9IFsnLWcnXQpAQCAtOTI2LDcgKzkyNiw2IEBACiAgICAgIyBvbiBhIGN5Z3dpbiBidWlsdCBweXRob24gd2UgY2FuIHVzZSBnY2MgbGlrZSBhbiBvcmRpbmFyeSBVTklYaXNoCiAgICAgIyBjb21waWxlcgogICAgICgnY3lnd2luLionLCAndW5peCcpLAotICAgICgnb3MyZW14JywgJ2VteCcpLAogCiAgICAgIyBPUyBuYW1lIG1hcHBpbmdzCiAgICAgKCdwb3NpeCcsICd1bml4JyksCkBAIC05NjgsOCArOTY3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWluZ3czMiBwb3J0IG9mIEdOVSBDIENvbXBpbGVyIGZvciBXaW4zMiIpLAogICAgICAgICAgICAgICAgICAgICdiY3BwJzogICAgKCdiY3BwY29tcGlsZXInLCAnQkNQUENvbXBpbGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9ybGFuZCBDKysgQ29tcGlsZXIiKSwKLSAgICAgICAgICAgICAgICAgICAnZW14JzogICAgICgnZW14Y2NvbXBpbGVyJywgJ0VNWENDb21waWxlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVNWCBwb3J0IG9mIEdOVSBDIENvbXBpbGVyIGZvciBPUy8yIiksCiAgICAgICAgICAgICAgICAgIH0KIAogZGVmIHNob3dfY29tcGlsZXJzKCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3QucHkKaW5kZXggYzUxODhlYi4uMzhiMTY5YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weQpAQCAtNTIsOCArNTIsNyBAQAogICAgICMgVGhpcyB3b24ndCBkbyBpbiByZWFsaXR5OiB3aWxsIG5lZWQgdG8gZGlzdGluZ3Vpc2ggUlBNLWlzaCBMaW51eCwKICAgICAjIERlYmlhbi1pc2ggTGludXgsIFNvbGFyaXMsIEZyZWVCU0QsIC4uLiwgV2luZG93cywgTWFjIE9TLgogICAgIGRlZmF1bHRfZm9ybWF0ID0geydwb3NpeCc6ICdnenRhcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ250JzogJ3ppcCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ29zMic6ICd6aXAnfQorICAgICAgICAgICAgICAgICAgICAgICdudCc6ICd6aXAnfQogCiAgICAgIyBFc3RhYmxpc2ggdGhlIHByZWZlcnJlZCBvcmRlciAoZm9yIHRoZSAtLWhlbHAtZm9ybWF0cyBvcHRpb24pLgogICAgIGZvcm1hdF9jb21tYW5kcyA9IFsncnBtJywgJ2d6dGFyJywgJ2J6dGFyJywgJ3p0YXInLCAndGFyJywKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKaW5kZXggMWFiMDlkMS4uZWVmZGZlYSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKQEAgLTM4LDggKzM4LDcgQEAKICAgICBib29sZWFuX29wdGlvbnMgPSBbJ2tlZXAtdGVtcCcsICdza2lwLWJ1aWxkJywgJ3JlbGF0aXZlJ10KIAogICAgIGRlZmF1bHRfZm9ybWF0ID0geyAncG9zaXgnOiAnZ3p0YXInLAotICAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ29zMic6ICd6aXAnIH0KKyAgICAgICAgICAgICAgICAgICAgICAgJ250JzogJ3ppcCcgfQogCiAgICAgZGVmIGluaXRpYWxpemVfb3B0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5iZGlzdF9kaXIgPSBOb25lCkBAIC04NSwxMSArODQsNiBAQAogICAgICAgICBhcmNoaXZlX2Jhc2VuYW1lID0gIiVzLiVzIiAlIChzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfZnVsbG5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGF0X25hbWUpCiAKLSAgICAgICAgIyBPUy8yIG9iamVjdHMgdG8gYW55ICI6IiBjaGFyYWN0ZXJzIGluIGEgZmlsZW5hbWUgKHN1Y2ggYXMgd2hlbgotICAgICAgICAjIGEgdGltZXN0YW1wIGlzIHVzZWQgaW4gYSB2ZXJzaW9uKSBzbyBjaGFuZ2UgdGhlbSB0byBoeXBoZW5zLgotICAgICAgICBpZiBvcy5uYW1lID09ICJvczIiOgotICAgICAgICAgICAgYXJjaGl2ZV9iYXNlbmFtZSA9IGFyY2hpdmVfYmFzZW5hbWUucmVwbGFjZSgiOiIsICItIikKLQogICAgICAgICBwc2V1ZG9pbnN0YWxsX3Jvb3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXN0X2RpciwgYXJjaGl2ZV9iYXNlbmFtZSkKICAgICAgICAgaWYgbm90IHNlbGYucmVsYXRpdmU6CiAgICAgICAgICAgICBhcmNoaXZlX3Jvb3QgPSBzZWxmLmJkaXN0X2RpcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKaW5kZXggMWFkMGQ1Zi4uYTZhYWQ1MyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CkBAIC0yMzAsMTEgKzIzMCw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQQycsICdWQzYnKSkKIAotICAgICAgICAjIE9TLzIgKEVNWCkgZG9lc24ndCBzdXBwb3J0IERlYnVnIHZzIFJlbGVhc2UgYnVpbGRzLCBidXQgaGFzIHRoZQotICAgICAgICAjIGltcG9ydCBsaWJyYXJpZXMgaW4gaXRzICJDb25maWciIHN1YmRpcmVjdG9yeQotICAgICAgICBpZiBvcy5uYW1lID09ICdvczInOgotICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdDb25maWcnKSkKLQogICAgICAgICAjIGZvciBleHRlbnNpb25zIHVuZGVyIEN5Z3dpbiBhbmQgQXRoZU9TIFB5dGhvbidzIGxpYnJhcnkgZGlyZWN0b3J5IG11c3QgYmUKICAgICAgICAgIyBhcHBlbmRlZCB0byBsaWJyYXJ5X2RpcnMKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzo2XSA9PSAnY3lnd2luJyBvciBzeXMucGxhdGZvcm1bOjZdID09ICdhdGhlb3MnOgpAQCAtNjIwLDkgKzYxNSw2IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gInN3aWcuZXhlIgotICAgICAgICBlbGlmIG9zLm5hbWUgPT0gIm9zMiI6Ci0gICAgICAgICAgICAjIGFzc3VtZSBzd2lnIGF2YWlsYWJsZSBpbiB0aGUgUEFUSC4KLSAgICAgICAgICAgIHJldHVybiAic3dpZy5leGUiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKAogICAgICAgICAgICAgICAgICAgIkkgZG9uJ3Qga25vdyBob3cgdG8gZmluZCAobXVjaCBsZXNzIHJ1bikgU1dJRyAiCkBAIC02NzMsOSArNjY1LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKICAgICAgICAgZXh0X3BhdGggPSBleHRfbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICMgT1MvMiBoYXMgYW4gOCBjaGFyYWN0ZXIgbW9kdWxlIChleHRlbnNpb24pIGxpbWl0IDotKAotICAgICAgICBpZiBvcy5uYW1lID09ICJvczIiOgotICAgICAgICAgICAgZXh0X3BhdGhbbGVuKGV4dF9wYXRoKSAtIDFdID0gZXh0X3BhdGhbbGVuKGV4dF9wYXRoKSAtIDFdWzo4XQogICAgICAgICAjIGV4dGVuc2lvbnMgaW4gZGVidWdfbW9kZSBhcmUgbmFtZWQgJ21vZHVsZV9kLnB5ZCcgdW5kZXIgd2luZG93cwogICAgICAgICBleHRfc3VmZml4ID0gZ2V0X2NvbmZpZ192YXIoJ0VYVF9TVUZGSVgnKQogICAgICAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIHNlbGYuZGVidWc6CkBAIC02OTYsNyArNjg1LDcgQEAKICAgICBkZWYgZ2V0X2xpYnJhcmllcyhzZWxmLCBleHQpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgbGlicmFyaWVzIHRvIGxpbmsgYWdhaW5zdCB3aGVuIGJ1aWxkaW5nIGEKICAgICAgICAgc2hhcmVkIGV4dGVuc2lvbi4gIE9uIG1vc3QgcGxhdGZvcm1zLCB0aGlzIGlzIGp1c3QgJ2V4dC5saWJyYXJpZXMnOwotICAgICAgICBvbiBXaW5kb3dzIGFuZCBPUy8yLCB3ZSBhZGQgdGhlIFB5dGhvbiBsaWJyYXJ5IChlZy4gcHl0aG9uMjAuZGxsKS4KKyAgICAgICAgb24gV2luZG93cywgd2UgYWRkIHRoZSBQeXRob24gbGlicmFyeSAoZWcuIHB5dGhvbjIwLmRsbCkuCiAgICAgICAgICIiIgogICAgICAgICAjIFRoZSBweXRob24gbGlicmFyeSBpcyBhbHdheXMgbmVlZGVkIG9uIFdpbmRvd3MuICBGb3IgTVNWQywgdGhpcwogICAgICAgICAjIGlzIHJlZHVuZGFudCwgc2luY2UgdGhlIGxpYnJhcnkgaXMgbWVudGlvbmVkIGluIGEgcHJhZ21hIGluCkBAIC03MTYsMTkgKzcwNSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dC5saWJyYXJpZXMgKyBbcHl0aG9ubGliXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZXh0LmxpYnJhcmllcwotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAib3MyZW14IjoKLSAgICAgICAgICAgICMgRU1YL0dDQyByZXF1aXJlcyB0aGUgcHl0aG9uIGxpYnJhcnkgZXhwbGljaXRseSwgYW5kIEkKLSAgICAgICAgICAgICMgYmVsaWV2ZSBWQUNQUCBkb2VzIGFzIHdlbGwgKHRob3VnaCBub3QgY29uZmlybWVkKSAtIEFJTSBBcHIwMQotICAgICAgICAgICAgdGVtcGxhdGUgPSAicHl0aG9uJWQlZCIKLSAgICAgICAgICAgICMgZGVidWcgdmVyc2lvbnMgb2YgdGhlIG1haW4gRExMIGFyZW4ndCBzdXBwb3J0ZWQsIGF0IGxlYXN0Ci0gICAgICAgICAgICAjIG5vdCBhdCB0aGlzIHRpbWUgLSBBSU0gQXByMDEKLSAgICAgICAgICAgICNpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgIyAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlICsgJ19kJwotICAgICAgICAgICAgcHl0aG9ubGliID0gKHRlbXBsYXRlICUKLSAgICAgICAgICAgICAgICAgICAoc3lzLmhleHZlcnNpb24gPj4gMjQsIChzeXMuaGV4dmVyc2lvbiA+PiAxNikgJiAweGZmKSkKLSAgICAgICAgICAgICMgZG9uJ3QgZXh0ZW5kIGV4dC5saWJyYXJpZXMsIGl0IG1heSBiZSBzaGFyZWQgd2l0aCBvdGhlcgotICAgICAgICAgICAgIyBleHRlbnNpb25zLCBpdCBpcyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgbGlzdAotICAgICAgICAgICAgcmV0dXJuIGV4dC5saWJyYXJpZXMgKyBbcHl0aG9ubGliXQogICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybVs6Nl0gPT0gImN5Z3dpbiI6CiAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICJweXRob24lZC4lZCIKICAgICAgICAgICAgIHB5dGhvbmxpYiA9ICh0ZW1wbGF0ZSAlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkKaW5kZXggMTM3MWIzZC4uNjc3NzIzZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9weS5weQpAQCAtMyw3ICszLDcgQEAKIEltcGxlbWVudHMgdGhlIERpc3R1dGlscyAnYnVpbGRfcHknIGNvbW1hbmQuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgc3lzCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIApAQCAtMzEyLDExICszMTIsMTEgQEAKICAgICAgICAgICAgIG91dHB1dHMuYXBwZW5kKGZpbGVuYW1lKQogICAgICAgICAgICAgaWYgaW5jbHVkZV9ieXRlY29kZToKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbXBpbGU6Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dHMuYXBwZW5kKGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPVRydWUpKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKICAgICAgICAgICAgICAgICBpZiBzZWxmLm9wdGltaXplID4gMDoKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5hcHBlbmQoaW1wLmNhY2hlX2Zyb21fc291cmNlKGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9RmFsc2UpKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1GYWxzZSkpCiAKICAgICAgICAgb3V0cHV0cyArPSBbCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCBmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKaW5kZXggNGI1YjIyZS4uOTBhODM4MCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKQEAgLTc0LDcgKzc0LDcgQEAKICAgICAgICAgICAgICMgc2NyaXB0LgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNjcmlwdCwgInJiIikKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZHJ5X3J1bjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBmID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQppbmRleCA5YjFjMzZhLi5jZmM1ZDVlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQpAQCAtNTgsMTMgKzU4LDYgQEAKICAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAogICAgICAgICB9LAogICAgICdudCc6IFdJTkRPV1NfU0NIRU1FLAotICAgICdvczInOiB7Ci0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9JbmNsdWRlLyRkaXN0X25hbWUnLAotICAgICAgICAnc2NyaXB0cyc6ICckYmFzZS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAotICAgICAgICB9LAogICAgIH0KIAogIyB1c2VyIHNpdGUgc2NoZW1lcwpAQCAtODYsMTQgKzc5LDYgQEAKICAgICAgICAgJ2RhdGEnICAgOiAnJHVzZXJiYXNlJywKICAgICAgICAgfQogCi0gICAgSU5TVEFMTF9TQ0hFTUVTWydvczJfaG9tZSddID0gewotICAgICAgICAncHVyZWxpYic6ICckdXNlcnNpdGUnLAotICAgICAgICAncGxhdGxpYic6ICckdXNlcnNpdGUnLAotICAgICAgICAnaGVhZGVycyc6ICckdXNlcmJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKLSAgICAgICAgJ3NjcmlwdHMnOiAnJHVzZXJiYXNlL2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJyR1c2VyYmFzZScsCi0gICAgICAgIH0KLQogIyBUaGUga2V5cyB0byBhbiBpbnN0YWxsYXRpb24gc2NoZW1lOyBpZiBhbnkgbmV3IHR5cGVzIG9mIGZpbGVzIGFyZSB0byBiZQogIyBpbnN0YWxsZWQsIGJlIHN1cmUgdG8gYWRkIGFuIGVudHJ5IHRvIGV2ZXJ5IGluc3RhbGxhdGlvbiBzY2hlbWUgYWJvdmUsCiAjIGFuZCB0byBTQ0hFTUVfS0VZUyBoZXJlLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfbGliLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfbGliLnB5CmluZGV4IDE1YzA4ZjEuLjIxNTgxM2IgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2xpYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkKQEAgLTQsNyArNCw3IEBACiAoaW5zdGFsbCBhbGwgUHl0aG9uIG1vZHVsZXMpLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHN5cwogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCkBAIC0xNjUsMTAgKzE2NSwxMCBAQAogICAgICAgICAgICAgaWYgZXh0ICE9IFBZVEhPTl9TT1VSQ0VfRVhURU5TSU9OOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBzZWxmLmNvbXBpbGU6Ci0gICAgICAgICAgICAgICAgYnl0ZWNvZGVfZmlsZXMuYXBwZW5kKGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKKyAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlcy5hcHBlbmQoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIGRlYnVnX292ZXJyaWRlPVRydWUpKQogICAgICAgICAgICAgaWYgc2VsZi5vcHRpbWl6ZSA+IDA6Ci0gICAgICAgICAgICAgICAgYnl0ZWNvZGVfZmlsZXMuYXBwZW5kKGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKKyAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlcy5hcHBlbmQoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKIAogICAgICAgICByZXR1cm4gYnl0ZWNvZGVfZmlsZXMKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5CmluZGV4IDhiMzY4NTEuLjg4OTkwYjIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3VwbG9hZC5weQpAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgICAgICAgICBodHRwLnB1dGhlYWRlcignQXV0aG9yaXphdGlvbicsIGF1dGgpCiAgICAgICAgICAgICBodHRwLmVuZGhlYWRlcnMoKQogICAgICAgICAgICAgaHR0cC5zZW5kKGJvZHkpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2Uoc3RyKGUpLCBsb2cuRVJST1IpCiAgICAgICAgICAgICByZXR1cm4KIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL2NvbmZpZy5weQppbmRleCAxZmQ1MzM0Li43NDM5YTgzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbmZpZy5weQpAQCAtMjEsNyArMjEsNyBAQAogY2xhc3MgUHlQSVJDQ29tbWFuZChDb21tYW5kKToKICAgICAiIiJCYXNlIGNvbW1hbmQgdGhhdCBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSAucHlwaXJjIGZpbGUKICAgICAiIiIKLSAgICBERUZBVUxUX1JFUE9TSVRPUlkgPSAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpJworICAgIERFRkFVTFRfUkVQT1NJVE9SWSA9ICdodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpJwogICAgIERFRkFVTFRfUkVBTE0gPSAncHlwaScKICAgICByZXBvc2l0b3J5ID0gTm9uZQogICAgIHJlYWxtID0gTm9uZQpAQCAtODMsNiArODMsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50W2tleV0gPSBjb25maWcuZ2V0KHNlcnZlciwga2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50W2tleV0gPSBkZWZhdWx0CisKKyAgICAgICAgICAgICAgICAgICAgIyB3b3JrIGFyb3VuZCBwZW9wbGUgaGF2aW5nICJyZXBvc2l0b3J5IiBmb3IgdGhlICJweXBpIgorICAgICAgICAgICAgICAgICAgICAjIHNlY3Rpb24gb2YgdGhlaXIgY29uZmlnIHNldCB0byB0aGUgSFRUUCAocmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgIyBIVFRQUykgVVJMCisgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXIgPT0gJ3B5cGknIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBpbiAoc2VsZi5ERUZBVUxUX1JFUE9TSVRPUlksICdweXBpJykpOgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFsncmVwb3NpdG9yeSddID0gc2VsZi5ERUZBVUxUX1JFUE9TSVRPUlkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50CisKICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRbJ3NlcnZlciddID09IHJlcG9zaXRvcnkgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRbJ3JlcG9zaXRvcnknXSA9PSByZXBvc2l0b3J5KToKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKaW5kZXggMjYwMzMyYS4uOTFlNTEzMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgICAgICAgICBkaXN0LnJ1bl9jb21tYW5kcygpCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoImludGVycnVwdGVkIikKLSAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBvcy5lcnJvcikgYXMgZXhjOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICBlcnJvciA9IGdyb2tfZW52aXJvbm1lbnRfZXJyb3IoZXhjKQogCiAgICAgICAgICAgICBpZiBERUJVRzoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggMGJkZDUzOS4uMGMyM2FiMSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTM1OSw3ICszNTksNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBDT05GSUdfSF9OT1RPSywgIiclcycgZG9lcyBub3QgbWVudGlvbiAnX19HTlVDX18nIiAlIGZuCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBjb25maWdfaC5jbG9zZSgpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgcmV0dXJuIChDT05GSUdfSF9VTkNFUlRBSU4sCiAgICAgICAgICAgICAgICAgImNvdWxkbid0IHJlYWQgJyVzJzogJXMiICUgKGZuLCBleGMuc3RyZXJyb3IpKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2Rpcl91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy9kaXJfdXRpbC5weQppbmRleCAyODI2ZmY4Li4yYjM1YWEzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Rpcl91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZGlyX3V0aWwucHkKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgICAgICAgICAgICAiY2Fubm90IGNvcHkgdHJlZSAnJXMnOiBub3QgYSBkaXJlY3RvcnkiICUgc3JjKQogICAgIHRyeToKICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHNyYykKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgZToKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAoZXJybm8sIGVycnN0cikgPSBlCiAgICAgICAgIGlmIGRyeV9ydW46CiAgICAgICAgICAgICBuYW1lcyA9IFtdCkBAIC0xOTgsNyArMTk4LDcgQEAKICAgICAgICAgICAgIGFic3BhdGggPSBvcy5wYXRoLmFic3BhdGgoY21kWzFdKQogICAgICAgICAgICAgaWYgYWJzcGF0aCBpbiBfcGF0aF9jcmVhdGVkOgogICAgICAgICAgICAgICAgIGRlbCBfcGF0aF9jcmVhdGVkW2Fic3BhdGhdCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgT1NFcnJvcikgYXMgZXhjOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICBsb2cud2Fybihncm9rX2Vudmlyb25tZW50X2Vycm9yKAogICAgICAgICAgICAgICAgICAgICBleGMsICJlcnJvciByZW1vdmluZyAlczogIiAlIGRpcmVjdG9yeSkpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZW14Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9lbXhjY29tcGlsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NzVmOGQuLjAwMDAwMDAKLS0tIGEvTGliL2Rpc3R1dGlscy9lbXhjY29tcGlsZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMTUgKzAsMCBAQAotIiIiZGlzdHV0aWxzLmVteGNjb21waWxlcgotCi1Qcm92aWRlcyB0aGUgRU1YQ0NvbXBpbGVyIGNsYXNzLCBhIHN1YmNsYXNzIG9mIFVuaXhDQ29tcGlsZXIgdGhhdAotaGFuZGxlcyB0aGUgRU1YIHBvcnQgb2YgdGhlIEdOVSBDIGNvbXBpbGVyIHRvIE9TLzIuCi0iIiIKLQotIyBpc3N1ZXM6Ci0jCi0jICogT1MvMiBpbnNpc3RzIHRoYXQgRExMcyBjYW4gaGF2ZSBuYW1lcyBubyBsb25nZXIgdGhhbiA4IGNoYXJhY3RlcnMKLSMgICBXZSBwdXQgZXhwb3J0X3N5bWJvbHMgaW4gYSBkZWYtZmlsZSwgYXMgdGhvdWdoIHRoZSBETEwgY2FuIGhhdmUKLSMgICBhbiBhcmJpdHJhcnkgbGVuZ3RoIG5hbWUsIGJ1dCB0cnVuY2F0ZSB0aGUgb3V0cHV0IGZpbGVuYW1lLgotIwotIyAqIG9ubHkgdXNlIE9NRiBvYmplY3RzIGFuZCB1c2UgTElOSzM4NiBhcyB0aGUgbGlua2VyICgtWm9tZikKLSMKLSMgKiBhbHdheXMgYnVpbGQgZm9yIG11bHRpdGhyZWFkaW5nICgtWm10KSBhcyB0aGUgYWNjb21wYW55aW5nIE9TLzIgcG9ydAotIyAgIG9mIFB5dGhvbiBpcyBvbmx5IGRpc3RyaWJ1dGVkIHdpdGggdGhyZWFkcyBlbmFibGVkLgotIwotIyB0ZXN0ZWQgY29uZmlndXJhdGlvbnM6Ci0jCi0jICogRU1YIGdjYyAyLjgxL0VNWCAwLjlkIGZpeDAzCi0KLWltcG9ydCBvcyxzeXMsY29weQotZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVyIGltcG9ydCBnZW5fcHJlcHJvY2Vzc19vcHRpb25zLCBnZW5fbGliX29wdGlvbnMKLWZyb20gZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIgaW1wb3J0IFVuaXhDQ29tcGlsZXIKLWZyb20gZGlzdHV0aWxzLmZpbGVfdXRpbCBpbXBvcnQgd3JpdGVfZmlsZQotZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IsIENvbXBpbGVFcnJvciwgVW5rbm93bkZpbGVFcnJvcgotZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwotCi1jbGFzcyBFTVhDQ29tcGlsZXIgKFVuaXhDQ29tcGlsZXIpOgotCi0gICAgY29tcGlsZXJfdHlwZSA9ICdlbXgnCi0gICAgb2JqX2V4dGVuc2lvbiA9ICIub2JqIgotICAgIHN0YXRpY19saWJfZXh0ZW5zaW9uID0gIi5saWIiCi0gICAgc2hhcmVkX2xpYl9leHRlbnNpb24gPSAiLmRsbCIKLSAgICBzdGF0aWNfbGliX2Zvcm1hdCA9ICIlcyVzIgotICAgIHNoYXJlZF9saWJfZm9ybWF0ID0gIiVzJXMiCi0gICAgcmVzX2V4dGVuc2lvbiA9ICIucmVzIiAgICAgICMgY29tcGlsZWQgcmVzb3VyY2UgZmlsZQotICAgIGV4ZV9leHRlbnNpb24gPSAiLmV4ZSIKLQotICAgIGRlZiBfX2luaXRfXyAoc2VsZiwKLSAgICAgICAgICAgICAgICAgIHZlcmJvc2U9MCwKLSAgICAgICAgICAgICAgICAgIGRyeV9ydW49MCwKLSAgICAgICAgICAgICAgICAgIGZvcmNlPTApOgotCi0gICAgICAgIFVuaXhDQ29tcGlsZXIuX19pbml0X18gKHNlbGYsIHZlcmJvc2UsIGRyeV9ydW4sIGZvcmNlKQotCi0gICAgICAgIChzdGF0dXMsIGRldGFpbHMpID0gY2hlY2tfY29uZmlnX2goKQotICAgICAgICBzZWxmLmRlYnVnX3ByaW50KCJQeXRob24ncyBHQ0Mgc3RhdHVzOiAlcyAoZGV0YWlsczogJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXR1cywgZGV0YWlscykpCi0gICAgICAgIGlmIHN0YXR1cyBpcyBub3QgQ09ORklHX0hfT0s6Ci0gICAgICAgICAgICBzZWxmLndhcm4oCi0gICAgICAgICAgICAgICAgIlB5dGhvbidzIHB5Y29uZmlnLmggZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgeW91ciBjb21waWxlci4gICIgKwotICAgICAgICAgICAgICAgICgiUmVhc29uOiAlcy4iICUgZGV0YWlscykgKwotICAgICAgICAgICAgICAgICJDb21waWxpbmcgbWF5IGZhaWwgYmVjYXVzZSBvZiB1bmRlZmluZWQgcHJlcHJvY2Vzc29yIG1hY3Jvcy4iKQotCi0gICAgICAgIChzZWxmLmdjY192ZXJzaW9uLCBzZWxmLmxkX3ZlcnNpb24pID0gXAotICAgICAgICAgICAgZ2V0X3ZlcnNpb25zKCkKLSAgICAgICAgc2VsZi5kZWJ1Z19wcmludChzZWxmLmNvbXBpbGVyX3R5cGUgKyAiOiBnY2MgJXMsIGxkICVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5nY2NfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sZF92ZXJzaW9uKSApCi0KLSAgICAgICAgIyBIYXJkLWNvZGUgR0NDIGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhpcyBpcyBhbGwgYWJvdXQuCi0gICAgICAgICMgWFhYIG9wdGltaXphdGlvbiwgd2FybmluZ3MgZXRjLiBzaG91bGQgYmUgY3VzdG9taXphYmxlLgotICAgICAgICBzZWxmLnNldF9leGVjdXRhYmxlcyhjb21waWxlcj0nZ2NjIC1ab21mIC1abXQgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1tcHJvYmUgLVdhbGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlcl9zbz0nZ2NjIC1ab21mIC1abXQgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1tcHJvYmUgLVdhbGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZXJfZXhlPSdnY2MgLVpvbWYgLVptdCAtWmNydGRsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtlcl9zbz0nZ2NjIC1ab21mIC1abXQgLVpjcnRkbGwgLVpkbGwnKQotCi0gICAgICAgICMgd2FudCB0aGUgZ2NjIGxpYnJhcnkgc3RhdGljYWxseSBsaW5rZWQgKHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZQotICAgICAgICAjIHRvIGRpc3RyaWJ1dGUgYSB2ZXJzaW9uIGRlcGVuZGVudCBvbiB0aGUgY29tcGlsZXIgd2UgaGF2ZSkKLSAgICAgICAgc2VsZi5kbGxfbGlicmFyaWVzPVsiZ2NjIl0KLQotICAgICMgX19pbml0X18gKCkKLQotICAgIGRlZiBfY29tcGlsZShzZWxmLCBvYmosIHNyYywgZXh0LCBjY19hcmdzLCBleHRyYV9wb3N0YXJncywgcHBfb3B0cyk6Ci0gICAgICAgIGlmIGV4dCA9PSAnLnJjJzoKLSAgICAgICAgICAgICMgZ2NjIHJlcXVpcmVzICcucmMnIGNvbXBpbGVkIHRvIGJpbmFyeSAoJy5yZXMnKSBmaWxlcyAhISEKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFsicmMiLCAiLXIiLCBzcmNdKQotICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKLSAgICAgICAgZWxzZTogIyBmb3Igb3RoZXIgZmlsZXMgdXNlIHRoZSBDLWNvbXBpbGVyCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zcGF3bihzZWxmLmNvbXBpbGVyX3NvICsgY2NfYXJncyArIFtzcmMsICctbycsIG9ial0gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3MpCi0gICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKLSAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IobXNnKQotCi0gICAgZGVmIGxpbmsgKHNlbGYsCi0gICAgICAgICAgICAgIHRhcmdldF9kZXNjLAotICAgICAgICAgICAgICBvYmplY3RzLAotICAgICAgICAgICAgICBvdXRwdXRfZmlsZW5hbWUsCi0gICAgICAgICAgICAgIG91dHB1dF9kaXI9Tm9uZSwKLSAgICAgICAgICAgICAgbGlicmFyaWVzPU5vbmUsCi0gICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1Ob25lLAotICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1Ob25lLAotICAgICAgICAgICAgICBleHBvcnRfc3ltYm9scz1Ob25lLAotICAgICAgICAgICAgICBkZWJ1Zz0wLAotICAgICAgICAgICAgICBleHRyYV9wcmVhcmdzPU5vbmUsCi0gICAgICAgICAgICAgIGV4dHJhX3Bvc3RhcmdzPU5vbmUsCi0gICAgICAgICAgICAgIGJ1aWxkX3RlbXA9Tm9uZSwKLSAgICAgICAgICAgICAgdGFyZ2V0X2xhbmc9Tm9uZSk6Ci0KLSAgICAgICAgIyB1c2Ugc2VwYXJhdGUgY29waWVzLCBzbyB3ZSBjYW4gbW9kaWZ5IHRoZSBsaXN0cwotICAgICAgICBleHRyYV9wcmVhcmdzID0gY29weS5jb3B5KGV4dHJhX3ByZWFyZ3Mgb3IgW10pCi0gICAgICAgIGxpYnJhcmllcyA9IGNvcHkuY29weShsaWJyYXJpZXMgb3IgW10pCi0gICAgICAgIG9iamVjdHMgPSBjb3B5LmNvcHkob2JqZWN0cyBvciBbXSkKLQotICAgICAgICAjIEFkZGl0aW9uYWwgbGlicmFyaWVzCi0gICAgICAgIGxpYnJhcmllcy5leHRlbmQoc2VsZi5kbGxfbGlicmFyaWVzKQotCi0gICAgICAgICMgaGFuZGxlIGV4cG9ydCBzeW1ib2xzIGJ5IGNyZWF0aW5nIGEgZGVmLWZpbGUKLSAgICAgICAgIyB3aXRoIGV4ZWN1dGFibGVzIHRoaXMgb25seSB3b3JrcyB3aXRoIGdjYy9sZCBhcyBsaW5rZXIKLSAgICAgICAgaWYgKChleHBvcnRfc3ltYm9scyBpcyBub3QgTm9uZSkgYW5kCi0gICAgICAgICAgICAodGFyZ2V0X2Rlc2MgIT0gc2VsZi5FWEVDVVRBQkxFKSk6Ci0gICAgICAgICAgICAjIChUaGUgbGlua2VyIGRvZXNuJ3QgZG8gYW55dGhpbmcgaWYgb3V0cHV0IGlzIHVwLXRvLWRhdGUuCi0gICAgICAgICAgICAjIFNvIGl0IHdvdWxkIHByb2JhYmx5IGJldHRlciB0byBjaGVjayBpZiB3ZSByZWFsbHkgbmVlZCB0aGlzLAotICAgICAgICAgICAgIyBidXQgZm9yIHRoaXMgd2UgaGFkIHRvIGluc2VydCBzb21lIHVuY2hhbmdlZCBwYXJ0cyBvZgotICAgICAgICAgICAgIyBVbml4Q0NvbXBpbGVyLCBhbmQgdGhpcyBpcyBub3Qgd2hhdCB3ZSB3YW50LikKLQotICAgICAgICAgICAgIyB3ZSB3YW50IHRvIHB1dCBzb21lIGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUKLSAgICAgICAgICAgICMgb2JqZWN0IGZpbGVzIGFyZSwgYnVpbGRfdGVtcCBkb2Vzbid0IGhlbHAgbXVjaAotICAgICAgICAgICAgIyB3aGVyZSBhcmUgdGhlIG9iamVjdCBmaWxlcwotICAgICAgICAgICAgdGVtcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob2JqZWN0c1swXSkKLSAgICAgICAgICAgICMgbmFtZSBvZiBkbGwgdG8gZ2l2ZSB0aGUgaGVscGVyIGZpbGVzIHRoZSBzYW1lIGJhc2UgbmFtZQotICAgICAgICAgICAgKGRsbF9uYW1lLCBkbGxfZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoCi0gICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShvdXRwdXRfZmlsZW5hbWUpKQotCi0gICAgICAgICAgICAjIGdlbmVyYXRlIHRoZSBmaWxlbmFtZXMgZm9yIHRoZXNlIGZpbGVzCi0gICAgICAgICAgICBkZWZfZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgZGxsX25hbWUgKyAiLmRlZiIpCi0KLSAgICAgICAgICAgICMgR2VuZXJhdGUgLmRlZiBmaWxlCi0gICAgICAgICAgICBjb250ZW50cyA9IFsKLSAgICAgICAgICAgICAgICAiTElCUkFSWSAlcyBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiAlIFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob3V0cHV0X2ZpbGVuYW1lKSlbMF0sCi0gICAgICAgICAgICAgICAgIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiwKLSAgICAgICAgICAgICAgICAiRVhQT1JUUyJdCi0gICAgICAgICAgICBmb3Igc3ltIGluIGV4cG9ydF9zeW1ib2xzOgotICAgICAgICAgICAgICAgIGNvbnRlbnRzLmFwcGVuZCgnICAiJXMiJyAlIHN5bSkKLSAgICAgICAgICAgIHNlbGYuZXhlY3V0ZSh3cml0ZV9maWxlLCAoZGVmX2ZpbGUsIGNvbnRlbnRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGluZyAlcyIgJSBkZWZfZmlsZSkKLQotICAgICAgICAgICAgIyBuZXh0IGFkZCBvcHRpb25zIGZvciBkZWYtZmlsZSBhbmQgdG8gY3JlYXRpbmcgaW1wb3J0IGxpYnJhcmllcwotICAgICAgICAgICAgIyBmb3IgZ2NjL2xkIHRoZSBkZWYtZmlsZSBpcyBzcGVjaWZpZWQgYXMgYW55IG90aGVyIG9iamVjdCBmaWxlcwotICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoZGVmX2ZpbGUpCi0KLSAgICAgICAgI2VuZDogaWYgKChleHBvcnRfc3ltYm9scyBpcyBub3QgTm9uZSkgYW5kCi0gICAgICAgICMgICAgICAgICh0YXJnZXRfZGVzYyAhPSBzZWxmLkVYRUNVVEFCTEUgb3Igc2VsZi5saW5rZXJfZGxsID09ICJnY2MiKSk6Ci0KLSAgICAgICAgIyB3aG8gd2FudHMgc3ltYm9scyBhbmQgYSBtYW55IHRpbWVzIGxhcmdlciBvdXRwdXQgZmlsZQotICAgICAgICAjIHNob3VsZCBleHBsaWNpdGx5IHN3aXRjaCB0aGUgZGVidWcgbW9kZSBvbgotICAgICAgICAjIG90aGVyd2lzZSB3ZSBsZXQgZGxsd3JhcC9sZCBzdHJpcCB0aGUgb3V0cHV0IGZpbGUKLSAgICAgICAgIyAoT24gbXkgbWFjaGluZTogMTBLQiA8IHN0cmlwcGVkX2ZpbGUgPCA/PzEwMEtCCi0gICAgICAgICMgICB1bnN0cmlwcGVkX2ZpbGUgPSBzdHJpcHBlZF9maWxlICsgWFhYIEtCCi0gICAgICAgICMgICggWFhYPTI1NCBmb3IgYSB0eXBpY2FsIHB5dGhvbiBleHRlbnNpb24pKQotICAgICAgICBpZiBub3QgZGVidWc6Ci0gICAgICAgICAgICBleHRyYV9wcmVhcmdzLmFwcGVuZCgiLXMiKQotCi0gICAgICAgIFVuaXhDQ29tcGlsZXIubGluayhzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgIyBleHBvcnRfc3ltYm9scywgd2UgZG8gdGhpcyBpbiBvdXIgZGVmLWZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcHJlYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3Bvc3RhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfdGVtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9sYW5nKQotCi0gICAgIyBsaW5rICgpCi0KLSAgICAjIC0tIE1pc2NlbGxhbmVvdXMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgIyBvdmVycmlkZSB0aGUgb2JqZWN0X2ZpbGVuYW1lcyBtZXRob2QgZnJvbSBDQ29tcGlsZXIgdG8KLSAgICAjIHN1cHBvcnQgcmMgYW5kIHJlcy1maWxlcwotICAgIGRlZiBvYmplY3RfZmlsZW5hbWVzIChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZmlsZW5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9kaXI9MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj0nJyk6Ci0gICAgICAgIGlmIG91dHB1dF9kaXIgaXMgTm9uZTogb3V0cHV0X2RpciA9ICcnCi0gICAgICAgIG9ial9uYW1lcyA9IFtdCi0gICAgICAgIGZvciBzcmNfbmFtZSBpbiBzb3VyY2VfZmlsZW5hbWVzOgotICAgICAgICAgICAgIyB1c2Ugbm9ybWNhc2UgdG8gbWFrZSBzdXJlICcucmMnIGlzIHJlYWxseSAnLnJjJyBhbmQgbm90ICcuUkMnCi0gICAgICAgICAgICAoYmFzZSwgZXh0KSA9IG9zLnBhdGguc3BsaXRleHQgKG9zLnBhdGgubm9ybWNhc2Uoc3JjX25hbWUpKQotICAgICAgICAgICAgaWYgZXh0IG5vdCBpbiAoc2VsZi5zcmNfZXh0ZW5zaW9ucyArIFsnLnJjJ10pOgotICAgICAgICAgICAgICAgIHJhaXNlIFVua25vd25GaWxlRXJyb3IoInVua25vd24gZmlsZSB0eXBlICclcycgKGZyb20gJyVzJykiICUgXAotICAgICAgICAgICAgICAgICAgICAgIChleHQsIHNyY19uYW1lKSkKLSAgICAgICAgICAgIGlmIHN0cmlwX2RpcjoKLSAgICAgICAgICAgICAgICBiYXNlID0gb3MucGF0aC5iYXNlbmFtZSAoYmFzZSkKLSAgICAgICAgICAgIGlmIGV4dCA9PSAnLnJjJzoKLSAgICAgICAgICAgICAgICAjIHRoZXNlIG5lZWQgdG8gYmUgY29tcGlsZWQgdG8gb2JqZWN0IGZpbGVzCi0gICAgICAgICAgICAgICAgb2JqX25hbWVzLmFwcGVuZCAob3MucGF0aC5qb2luIChvdXRwdXRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICsgc2VsZi5yZXNfZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb2JqX25hbWVzLmFwcGVuZCAob3MucGF0aC5qb2luIChvdXRwdXRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICsgc2VsZi5vYmpfZXh0ZW5zaW9uKSkKLSAgICAgICAgcmV0dXJuIG9ial9uYW1lcwotCi0gICAgIyBvYmplY3RfZmlsZW5hbWVzICgpCi0KLSAgICAjIG92ZXJyaWRlIHRoZSBmaW5kX2xpYnJhcnlfZmlsZSBtZXRob2QgZnJvbSBVbml4Q0NvbXBpbGVyCi0gICAgIyB0byBkZWFsIHdpdGggZmlsZSBuYW1pbmcvc2VhcmNoaW5nIGRpZmZlcmVuY2VzCi0gICAgZGVmIGZpbmRfbGlicmFyeV9maWxlKHNlbGYsIGRpcnMsIGxpYiwgZGVidWc9MCk6Ci0gICAgICAgIHNob3J0bGliID0gJyVzLmxpYicgJSBsaWIKLSAgICAgICAgbG9uZ2xpYiA9ICdsaWIlcy5saWInICUgbGliICAgICMgdGhpcyBmb3JtIHZlcnkgcmFyZQotCi0gICAgICAgICMgZ2V0IEVNWCdzIGRlZmF1bHQgbGlicmFyeSBkaXJlY3Rvcnkgc2VhcmNoIHBhdGgKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZW14X2RpcnMgPSBvcy5lbnZpcm9uWydMSUJSQVJZX1BBVEgnXS5zcGxpdCgnOycpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGVteF9kaXJzID0gW10KLQotICAgICAgICBmb3IgZGlyIGluIGRpcnMgKyBlbXhfZGlyczoKLSAgICAgICAgICAgIHNob3J0bGlicCA9IG9zLnBhdGguam9pbihkaXIsIHNob3J0bGliKQotICAgICAgICAgICAgbG9uZ2xpYnAgPSBvcy5wYXRoLmpvaW4oZGlyLCBsb25nbGliKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2hvcnRsaWJwKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hvcnRsaWJwCi0gICAgICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKGxvbmdsaWJwKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9uZ2xpYnAKLQotICAgICAgICAjIE9vcHMsIGRpZG4ndCBmaW5kIGl0IGluICphbnkqIG9mICdkaXJzJwotICAgICAgICByZXR1cm4gTm9uZQotCi0jIGNsYXNzIEVNWENDb21waWxlcgotCi0KLSMgQmVjYXVzZSB0aGVzZSBjb21waWxlcnMgYXJlbid0IGNvbmZpZ3VyZWQgaW4gUHl0aG9uJ3MgcHljb25maWcuaCBmaWxlIGJ5Ci0jIGRlZmF1bHQsIHdlIHNob3VsZCBhdCBsZWFzdCB3YXJuIHRoZSB1c2VyIGlmIGhlIGlzIHVzaW5nIGEgdW5tb2RpZmllZAotIyB2ZXJzaW9uLgotCi1DT05GSUdfSF9PSyA9ICJvayIKLUNPTkZJR19IX05PVE9LID0gIm5vdCBvayIKLUNPTkZJR19IX1VOQ0VSVEFJTiA9ICJ1bmNlcnRhaW4iCi0KLWRlZiBjaGVja19jb25maWdfaCgpOgotCi0gICAgIiIiQ2hlY2sgaWYgdGhlIGN1cnJlbnQgUHl0aG9uIGluc3RhbGxhdGlvbiAoc3BlY2lmaWNhbGx5LCBweWNvbmZpZy5oKQotICAgIGFwcGVhcnMgYW1lbmFibGUgdG8gYnVpbGRpbmcgZXh0ZW5zaW9ucyB3aXRoIEdDQy4gIFJldHVybnMgYSB0dXBsZQotICAgIChzdGF0dXMsIGRldGFpbHMpLCB3aGVyZSAnc3RhdHVzJyBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb25zdGFudHM6Ci0gICAgICBDT05GSUdfSF9PSwotICAgICAgICBhbGwgaXMgd2VsbCwgZ28gYWhlYWQgYW5kIGNvbXBpbGUKLSAgICAgIENPTkZJR19IX05PVE9LCi0gICAgICAgIGRvZXNuJ3QgbG9vayBnb29kCi0gICAgICBDT05GSUdfSF9VTkNFUlRBSU4KLSAgICAgICAgbm90IHN1cmUgLS0gdW5hYmxlIHRvIHJlYWQgcHljb25maWcuaAotICAgICdkZXRhaWxzJyBpcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyBleHBsYWluaW5nIHRoZSBzaXR1YXRpb24uCi0KLSAgICBOb3RlIHRoZXJlIGFyZSB0d28gd2F5cyB0byBjb25jbHVkZSAiT0siOiBlaXRoZXIgJ3N5cy52ZXJzaW9uJyBjb250YWlucwotICAgIHRoZSBzdHJpbmcgIkdDQyIgKGltcGx5aW5nIHRoYXQgdGhpcyBQeXRob24gd2FzIGJ1aWx0IHdpdGggR0NDKSwgb3IgdGhlCi0gICAgaW5zdGFsbGVkICJweWNvbmZpZy5oIiBjb250YWlucyB0aGUgc3RyaW5nICJfX0dOVUNfXyIuCi0gICAgIiIiCi0KLSAgICAjIFhYWCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFsc28gY2hlY2tzIHN5cy52ZXJzaW9uLCBpdCdzIG5vdCBzdHJpY3RseSBhCi0gICAgIyAicHljb25maWcuaCIgY2hlY2sgLS0gc2hvdWxkIHByb2JhYmx5IGJlIHJlbmFtZWQuLi4KLQotICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKLSAgICAjIGlmIHN5cy52ZXJzaW9uIGNvbnRhaW5zIEdDQyB0aGVuIHB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aAotICAgICMgR0NDLCBhbmQgdGhlIHB5Y29uZmlnLmggZmlsZSBzaG91bGQgYmUgT0sKLSAgICBpZiBzeXMudmVyc2lvbi5maW5kKCJHQ0MiKSA+PSAwOgotICAgICAgICByZXR1cm4gKENPTkZJR19IX09LLCAic3lzLnZlcnNpb24gbWVudGlvbnMgJ0dDQyciKQotCi0gICAgZm4gPSBzeXNjb25maWcuZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKLSAgICB0cnk6Ci0gICAgICAgICMgSXQgd291bGQgcHJvYmFibHkgYmV0dGVyIHRvIHJlYWQgc2luZ2xlIGxpbmVzIHRvIHNlYXJjaC4KLSAgICAgICAgIyBCdXQgd2UgZG8gdGhpcyBvbmx5IG9uY2UsIGFuZCBpdCBpcyBmYXN0IGVub3VnaAotICAgICAgICBmID0gb3BlbihmbikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcyA9IGYucmVhZCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKLSAgICAgICAgIyBpZiB3ZSBjYW4ndCByZWFkIHRoaXMgZmlsZSwgd2UgY2Fubm90IHNheSBpdCBpcyB3cm9uZwotICAgICAgICAjIHRoZSBjb21waWxlciB3aWxsIGNvbXBsYWluIGxhdGVyIGFib3V0IHRoaXMgZmlsZSBhcyBtaXNzaW5nCi0gICAgICAgIHJldHVybiAoQ09ORklHX0hfVU5DRVJUQUlOLAotICAgICAgICAgICAgICAgICJjb3VsZG4ndCByZWFkICclcyc6ICVzIiAlIChmbiwgZXhjLnN0cmVycm9yKSkKLQotICAgIGVsc2U6Ci0gICAgICAgICMgInB5Y29uZmlnLmgiIGNvbnRhaW5zIGFuICIjaWZkZWYgX19HTlVDX18iIG9yIHNvbWV0aGluZyBzaW1pbGFyCi0gICAgICAgIGlmIHMuZmluZCgiX19HTlVDX18iKSA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIChDT05GSUdfSF9PSywgIiclcycgbWVudGlvbnMgJ19fR05VQ19fJyIgJSBmbikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAoQ09ORklHX0hfTk9UT0ssICInJXMnIGRvZXMgbm90IG1lbnRpb24gJ19fR05VQ19fJyIgJSBmbikKLQotCi1kZWYgZ2V0X3ZlcnNpb25zKCk6Ci0gICAgIiIiIFRyeSB0byBmaW5kIG91dCB0aGUgdmVyc2lvbnMgb2YgZ2NjIGFuZCBsZC4KLSAgICAgICAgSWYgbm90IHBvc3NpYmxlIGl0IHJldHVybnMgTm9uZSBmb3IgaXQuCi0gICAgIiIiCi0gICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgU3RyaWN0VmVyc2lvbgotICAgIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLSAgICBpbXBvcnQgcmUKLQotICAgIGdjY19leGUgPSBmaW5kX2V4ZWN1dGFibGUoJ2djYycpCi0gICAgaWYgZ2NjX2V4ZToKLSAgICAgICAgb3V0ID0gb3MucG9wZW4oZ2NjX2V4ZSArICcgLWR1bXB2ZXJzaW9uJywncicpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dF9zdHJpbmcgPSBvdXQucmVhZCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvdXQuY2xvc2UoKQotICAgICAgICByZXN1bHQgPSByZS5zZWFyY2goJyhcZCtcLlxkK1wuXGQrKScsIG91dF9zdHJpbmcsIHJlLkFTQ0lJKQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICBnY2NfdmVyc2lvbiA9IFN0cmljdFZlcnNpb24ocmVzdWx0Lmdyb3VwKDEpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2NjX3ZlcnNpb24gPSBOb25lCi0gICAgZWxzZToKLSAgICAgICAgZ2NjX3ZlcnNpb24gPSBOb25lCi0gICAgIyBFTVggbGQgaGFzIG5vIHdheSBvZiByZXBvcnRpbmcgdmVyc2lvbiBudW1iZXIsIGFuZCB3ZSB1c2UgR0NDCi0gICAgIyBhbnl3YXkgLSBzbyB3ZSBjYW4gbGluayBPTUYgRExMcwotICAgIGxkX3ZlcnNpb24gPSBOb25lCi0gICAgcmV0dXJuIChnY2NfdmVyc2lvbiwgbGRfdmVyc2lvbikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZXJyb3JzLnB5IGIvTGliL2Rpc3R1dGlscy9lcnJvcnMucHkKaW5kZXggZWIxM2M5OC4uOGI5MzA1OSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9lcnJvcnMucHkKKysrIGIvTGliL2Rpc3R1dGlscy9lcnJvcnMucHkKQEAgLTM1LDggKzM1LDggQEAKIAogY2xhc3MgRGlzdHV0aWxzRmlsZUVycm9yIChEaXN0dXRpbHNFcnJvcik6CiAgICAgIiIiQW55IHByb2JsZW1zIGluIHRoZSBmaWxlc3lzdGVtOiBleHBlY3RlZCBmaWxlIG5vdCBmb3VuZCwgZXRjLgotICAgIFR5cGljYWxseSB0aGlzIGlzIGZvciBwcm9ibGVtcyB0aGF0IHdlIGRldGVjdCBiZWZvcmUgSU9FcnJvciBvcgotICAgIE9TRXJyb3IgY291bGQgYmUgcmFpc2VkLiIiIgorICAgIFR5cGljYWxseSB0aGlzIGlzIGZvciBwcm9ibGVtcyB0aGF0IHdlIGRldGVjdCBiZWZvcmUgT1NFcnJvcgorICAgIGNvdWxkIGJlIHJhaXNlZC4iIiIKICAgICBwYXNzCiAKIGNsYXNzIERpc3R1dGlsc09wdGlvbkVycm9yIChEaXN0dXRpbHNFcnJvcik6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2ZpbGVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvZmlsZV91dGlsLnB5CmluZGV4IDliZGQxNGUuLmY2ZWQyOTAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZmlsZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZmlsZV91dGlsLnB5CkBAIC0yNywyNiArMjcsMjYgQEAKICAgICB0cnk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZzcmMgPSBvcGVuKHNyYywgJ3JiJykKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNGaWxlRXJyb3IoImNvdWxkIG5vdCBvcGVuICclcyc6ICVzIiAlIChzcmMsIGUuc3RyZXJyb3IpKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGRzdCkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNGaWxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBkZWxldGUgJyVzJzogJXMiICUgKGRzdCwgZS5zdHJlcnJvcikpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmRzdCA9IG9wZW4oZHN0LCAnd2InKQotICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0ZpbGVFcnJvcigKICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY3JlYXRlICclcyc6ICVzIiAlIChkc3QsIGUuc3RyZXJyb3IpKQogCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYnVmID0gZnNyYy5yZWFkKGJ1ZmZlcl9zaXplKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0ZpbGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IHJlYWQgZnJvbSAnJXMnOiAlcyIgJSAoc3JjLCBlLnN0cmVycm9yKSkKIApAQCAtNTUsNyArNTUsNyBAQAogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZmRzdC53cml0ZShidWYpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRmlsZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3Qgd3JpdGUgdG8gJyVzJzogJXMiICUgKGRzdCwgZS5zdHJlcnJvcikpCiAgICAgZmluYWxseToKQEAgLTE5Myw3ICsxOTMsNyBAQAogICAgIGNvcHlfaXQgPSBGYWxzZQogICAgIHRyeToKICAgICAgICAgb3MucmVuYW1lKHNyYywgZHN0KQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgIChudW0sIG1zZykgPSBlCiAgICAgICAgIGlmIG51bSA9PSBlcnJuby5FWERFVjoKICAgICAgICAgICAgIGNvcHlfaXQgPSBUcnVlCkBAIC0yMDUsMTEgKzIwNSwxMSBAQAogICAgICAgICBjb3B5X2ZpbGUoc3JjLCBkc3QsIHZlcmJvc2U9dmVyYm9zZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudW5saW5rKHNyYykKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAobnVtLCBtc2cpID0gZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnVubGluayhkc3QpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNGaWxlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgbW92ZSAnJXMnIHRvICclcycgYnkgY29weS9kZWxldGU6ICIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQppbmRleCBiM2Y2Y2UxLi45Njg4ZjIwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CkBAIC03MjksNyArNzI5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3RfZmlsZQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBtYW5pZmVzdF9mLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCiAgICAgIyAtLSBNaXNjZWxsYW5lb3VzIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkgYi9MaWIvZGlzdHV0aWxzL3NwYXduLnB5CmluZGV4IGY1OGM1NWYuLmIxYzVhNDQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zcGF3bi5weQpAQCAtMzIsOCArMzIsNiBAQAogICAgICAgICBfc3Bhd25fcG9zaXgoY21kLCBzZWFyY2hfcGF0aCwgZHJ5X3J1bj1kcnlfcnVuKQogICAgIGVsaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICBfc3Bhd25fbnQoY21kLCBzZWFyY2hfcGF0aCwgZHJ5X3J1bj1kcnlfcnVuKQotICAgIGVsaWYgb3MubmFtZSA9PSAnb3MyJzoKLSAgICAgICAgX3NwYXduX29zMihjbWQsIHNlYXJjaF9wYXRoLCBkcnlfcnVuPWRyeV9ydW4pCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKICAgICAgICAgICAgICAgImRvbid0IGtub3cgaG93IHRvIHNwYXduIHByb2dyYW1zIG9uIHBsYXRmb3JtICclcyciICUgb3MubmFtZSkKQEAgLTc0LDI2ICs3Miw2IEBACiAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNFeGVjRXJyb3IoCiAgICAgICAgICAgICAgICAgICAiY29tbWFuZCAnJXMnIGZhaWxlZCB3aXRoIGV4aXQgc3RhdHVzICVkIiAlIChjbWRbMF0sIHJjKSkKIAotZGVmIF9zcGF3bl9vczIoY21kLCBzZWFyY2hfcGF0aD0xLCB2ZXJib3NlPTAsIGRyeV9ydW49MCk6Ci0gICAgZXhlY3V0YWJsZSA9IGNtZFswXQotICAgIGlmIHNlYXJjaF9wYXRoOgotICAgICAgICAjIGVpdGhlciB3ZSBmaW5kIG9uZSBvciBpdCBzdGF5cyB0aGUgc2FtZQotICAgICAgICBleGVjdXRhYmxlID0gZmluZF9leGVjdXRhYmxlKGV4ZWN1dGFibGUpIG9yIGV4ZWN1dGFibGUKLSAgICBsb2cuaW5mbygnICcuam9pbihbZXhlY3V0YWJsZV0gKyBjbWRbMTpdKSkKLSAgICBpZiBub3QgZHJ5X3J1bjoKLSAgICAgICAgIyBzcGF3bnYgZm9yIE9TLzIgRU1YIHJlcXVpcmVzIGEgZnVsbCBwYXRoIHRvIHRoZSAuZXhlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJjID0gb3Muc3Bhd252KG9zLlBfV0FJVCwgZXhlY3V0YWJsZSwgY21kKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAjIHRoaXMgc2VlbXMgdG8gaGFwcGVuIHdoZW4gdGhlIGNvbW1hbmQgaXNuJ3QgZm91bmQKLSAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0V4ZWNFcnJvcigKLSAgICAgICAgICAgICAgICAgICJjb21tYW5kICclcycgZmFpbGVkOiAlcyIgJSAoY21kWzBdLCBleGMuYXJnc1stMV0pKQotICAgICAgICBpZiByYyAhPSAwOgotICAgICAgICAgICAgIyBhbmQgdGhpcyByZWZsZWN0cyB0aGUgY29tbWFuZCBydW5uaW5nIGJ1dCBmYWlsaW5nCi0gICAgICAgICAgICBsb2cuZGVidWcoImNvbW1hbmQgJyVzJyBmYWlsZWQgd2l0aCBleGl0IHN0YXR1cyAlZCIgJSAoY21kWzBdLCByYykpCi0gICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNFeGVjRXJyb3IoCi0gICAgICAgICAgICAgICAgICAiY29tbWFuZCAnJXMnIGZhaWxlZCB3aXRoIGV4aXQgc3RhdHVzICVkIiAlIChjbWRbMF0sIHJjKSkKLQogaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKICAgICBfY2ZnX3RhcmdldCA9IE5vbmUKQEAgLTE4MCw3ICsxNTgsNyBAQAogICAgIHBhdGhzID0gcGF0aC5zcGxpdChvcy5wYXRoc2VwKQogICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZXhlY3V0YWJsZSkKIAotICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciBvcy5uYW1lID09ICdvczInKSBhbmQgKGV4dCAhPSAnLmV4ZScpOgorICAgIGlmIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykgYW5kIChleHQgIT0gJy5leGUnKToKICAgICAgICAgZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUgKyAnLmV4ZScKIAogICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShleGVjdXRhYmxlKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKaW5kZXggYjk0Nzk4OC4uZDljOWQ2NSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKQEAgLTExNCw4ICsxMTQsNiBAQAogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHByZWZpeCwgImluY2x1ZGUiLCBweXRob25fZGlyKQogICAgIGVsaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHByZWZpeCwgImluY2x1ZGUiKQotICAgIGVsaWYgb3MubmFtZSA9PSAib3MyIjoKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihwcmVmaXgsICJJbmNsdWRlIikKICAgICBlbHNlOgogICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKAogICAgICAgICAgICAgIkkgZG9uJ3Qga25vdyB3aGVyZSBQeXRob24gaW5zdGFsbHMgaXRzIEMgaGVhZGVyIGZpbGVzICIKQEAgLTE1NywxMSArMTU1LDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKQotICAgIGVsaWYgb3MubmFtZSA9PSAib3MyIjoKLSAgICAgICAgaWYgc3RhbmRhcmRfbGliOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKICAgICAgICAgICAgICJJIGRvbid0IGtub3cgd2hlcmUgUHl0aG9uIGluc3RhbGxzIGl0cyBsaWJyYXJ5ICIKQEAgLTQ0Miw3ICs0MzUsNyBAQAogICAgIHRyeToKICAgICAgICAgZmlsZW5hbWUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQogICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKLSAgICBleGNlcHQgSU9FcnJvciBhcyBtc2c6CisgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQogICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6CiAgICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCkBAIC00NTQsNyArNDQ3LDcgQEAKICAgICAgICAgZmlsZW5hbWUgPSBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKQogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6CiAgICAgICAgICAgICBwYXJzZV9jb25maWdfaChmaWxlLCBnKQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCiAgICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKICAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKQEAgLTQ5Miw3ICs0ODUsNiBAQAogICAgICMgWFhYIGhtbW0uLiBhIG5vcm1hbCBpbnN0YWxsIHB1dHMgaW5jbHVkZSBmaWxlcyBoZXJlCiAgICAgZ1snSU5DTFVERVBZJ10gPSBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTApCiAKLSAgICBnWydTTyddID0gJy5weWQnCiAgICAgZ1snRVhUX1NVRkZJWCddID0gJy5weWQnCiAgICAgZ1snRVhFJ10gPSAiLmV4ZSIKICAgICBnWydWRVJTSU9OJ10gPSBnZXRfcHl0aG9uX3ZlcnNpb24oKS5yZXBsYWNlKCIuIiwgIiIpCkBAIC01MDIsMjQgKzQ5NCw2IEBACiAgICAgX2NvbmZpZ192YXJzID0gZwogCiAKLWRlZiBfaW5pdF9vczIoKToKLSAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIE9TLzIiIiIKLSAgICBnID0ge30KLSAgICAjIHNldCBiYXNpYyBpbnN0YWxsIGRpcmVjdG9yaWVzCi0gICAgZ1snTElCREVTVCddID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKLSAgICBnWydCSU5MSUJERVNUJ10gPSBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTEsIHN0YW5kYXJkX2xpYj0xKQotCi0gICAgIyBYWFggaG1tbS4uIGEgbm9ybWFsIGluc3RhbGwgcHV0cyBpbmNsdWRlIGZpbGVzIGhlcmUKLSAgICBnWydJTkNMVURFUFknXSA9IGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCkKLQotICAgIGdbJ1NPJ10gPSAnLnB5ZCcKLSAgICBnWydFWFRfU1VGRklYJ10gPSAnLnB5ZCcKLSAgICBnWydFWEUnXSA9ICIuZXhlIgotCi0gICAgZ2xvYmFsIF9jb25maWdfdmFycwotICAgIF9jb25maWdfdmFycyA9IGcKLQotCiBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAiIiJXaXRoIG5vIGFyZ3VtZW50cywgcmV0dXJuIGEgZGljdGlvbmFyeSBvZiBhbGwgY29uZmlndXJhdGlvbgogICAgIHZhcmlhYmxlcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uICBHZW5lcmFsbHkgdGhpcyBpbmNsdWRlcwpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X2R1bWIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfZHVtYi5weQppbmRleCAwYWQzMmQ0Li5jOGNjZGMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfZHVtYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfZHVtYi5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5iZGlzdF9kdW1iLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGltcG9ydCB6aXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTc1LDggKzc0LDYgQEAKICAgICAgICAgIyBzZWUgd2hhdCB3ZSBoYXZlCiAgICAgICAgIGRpc3RfY3JlYXRlZCA9IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHBrZ19kaXIsICdkaXN0JykpCiAgICAgICAgIGJhc2UgPSAiJXMuJXMuemlwIiAlIChkaXN0LmdldF9mdWxsbmFtZSgpLCBjbWQucGxhdF9uYW1lKQotICAgICAgICBpZiBvcy5uYW1lID09ICdvczInOgotICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZSgnOicsICctJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3RfY3JlYXRlZCwgW2Jhc2VdKQogCkBAIC05MCw3ICs4Nyw3IEBACiAgICAgICAgIGNvbnRlbnRzID0gc29ydGVkKG9zLnBhdGguYmFzZW5hbWUoZm4pIGZvciBmbiBpbiBjb250ZW50cykKICAgICAgICAgd2FudGVkID0gWydmb28tMC4xLXB5JXMuJXMuZWdnLWluZm8nICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sICdmb28ucHknXQogICAgICAgICBpZiBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6Ci0gICAgICAgICAgICB3YW50ZWQuYXBwZW5kKCdmb28uJXMucHljJyAlIGltcC5nZXRfdGFnKCkpCisgICAgICAgICAgICB3YW50ZWQuYXBwZW5kKCdmb28uJXMucHljJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudHMsIHNvcnRlZCh3YW50ZWQpKQogCiBkZWYgdGVzdF9zdWl0ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CmluZGV4IGU0MTZlZGQuLjFiNDEwYzMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKQEAgLTIsNyArMiw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfcHkgaW1wb3J0IGJ1aWxkX3B5CkBAIC02Myw3ICs2Miw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHB5Y2FjaGVfZGlyKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHB5Y19maWxlcyA9IG9zLmxpc3RkaXIocHljYWNoZV9kaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCJfX2luaXRfXy4lcy5weWMiICUgaW1wLmdldF90YWcoKSwgcHljX2ZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiX19pbml0X18uJXMucHljIiAlIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlcykKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3BhY2thZ2VfZGlyKHNlbGYpOgogICAgICAgICAjIFNlZSBidWdzICMxNjY4NTk2LyMxNzIwODk3CkBAIC0xMDIsNyArMTAyLDggQEAKICAgICAgICAgZm91bmQgPSBvcy5saXN0ZGlyKGNtZC5idWlsZF9saWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwgWydfX3B5Y2FjaGVfXycsICdib2lsZWRlZ2dzLnB5J10pCiAgICAgICAgIGZvdW5kID0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2xpYiwgJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsIFsnYm9pbGVkZWdncy4lcy5weWMnICUgaW1wLmdldF90YWcoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgWydib2lsZWRlZ2dzLiVzLnB5YycgJSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnXSkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUsICdieXRlLWNvbXBpbGUgZGlzYWJsZWQnKQogICAgIGRlZiB0ZXN0X2J5dGVfY29tcGlsZV9vcHRpbWl6ZWQoc2VsZik6CkBAIC0xMTksNyArMTIwLDggQEAKICAgICAgICAgZm91bmQgPSBvcy5saXN0ZGlyKGNtZC5idWlsZF9saWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwgWydfX3B5Y2FjaGVfXycsICdib2lsZWRlZ2dzLnB5J10pCiAgICAgICAgIGZvdW5kID0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2xpYiwgJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwgWydib2lsZWRlZ2dzLiVzLnB5bycgJSBpbXAuZ2V0X3RhZygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm91bmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnYm9pbGVkZWdncy4lcy5weW8nICUgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ10pCiAKICAgICBkZWYgdGVzdF9kb250X3dyaXRlX2J5dGVjb2RlKHNlbGYpOgogICAgICAgICAjIG1ha2VzIHN1cmUgYnl0ZV9jb21waWxlIGlzIG5vdCB1c2VkCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQppbmRleCA1MjViZWU5Li4xMjU5MzYxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKQEAgLTg3LDcgKzg3LDcgQEAKIAogICAgICAgICBjb25maWcgPSBsaXN0KHNvcnRlZChjb25maWcuaXRlbXMoKSkpCiAgICAgICAgIHdhaXRlZCA9IFsoJ3Bhc3N3b3JkJywgJ3NlY3JldCcpLCAoJ3JlYWxtJywgJ3B5cGknKSwKLSAgICAgICAgICAgICAgICAgICgncmVwb3NpdG9yeScsICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGknKSwKKyAgICAgICAgICAgICAgICAgICgncmVwb3NpdG9yeScsICdodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpJyksCiAgICAgICAgICAgICAgICAgICAoJ3NlcnZlcicsICdzZXJ2ZXIxJyksICgndXNlcm5hbWUnLCAnbWUnKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHdhaXRlZCkKIApAQCAtOTYsNyArOTYsNyBAQAogICAgICAgICBjb25maWcgPSBjbWQuX3JlYWRfcHlwaXJjKCkKICAgICAgICAgY29uZmlnID0gbGlzdChzb3J0ZWQoY29uZmlnLml0ZW1zKCkpKQogICAgICAgICB3YWl0ZWQgPSBbKCdwYXNzd29yZCcsICdzZWNyZXQnKSwgKCdyZWFsbScsICdweXBpJyksCi0gICAgICAgICAgICAgICAgICAoJ3JlcG9zaXRvcnknLCAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpJyksCisgICAgICAgICAgICAgICAgICAoJ3JlcG9zaXRvcnknLCAnaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaScpLAogICAgICAgICAgICAgICAgICAgKCdzZXJ2ZXInLCAnc2VydmVyLWxvZ2luJyksICgndXNlcm5hbWUnLCAndGFyZWsnKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHdhaXRlZCkKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQppbmRleCBiMTkwMTI3Li40MmJkMjY5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNpdGUKQEAgLTk0LDcgKzkzLDcgQEAKIAogICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cCkKIAotICAgICAgICBmb3Iga2V5IGluICgnbnRfdXNlcicsICd1bml4X3VzZXInLCAnb3MyX2hvbWUnKToKKyAgICAgICAgZm9yIGtleSBpbiAoJ250X3VzZXInLCAndW5peF91c2VyJyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGtleSwgSU5TVEFMTF9TQ0hFTUVTKQogCiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4J30pCkBAIC0xOTMsNyArMTkyLDggQEAKICAgICAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgICAgIGZvdW5kID0gW29zLnBhdGguYmFzZW5hbWUobGluZSkgZm9yIGxpbmUgaW4gY29udGVudC5zcGxpdGxpbmVzKCldCi0gICAgICAgIGV4cGVjdGVkID0gWydoZWxsby5weScsICdoZWxsby4lcy5weWMnICUgaW1wLmdldF90YWcoKSwgJ3NheWhpJywKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ2hlbGxvLnB5JywgJ2hlbGxvLiVzLnB5YycgJSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnLAorICAgICAgICAgICAgICAgICAgICAnc2F5aGknLAogICAgICAgICAgICAgICAgICAgICAnVU5LTk9XTi0wLjAuMC1weSVzLiVzLmVnZy1pbmZvJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBleHBlY3RlZCkKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CmluZGV4IDJiZDRkYzYuLmRiYjNlOWEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKQEAgLTEsNyArMSw3IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhLiIiIgogaW1wb3J0IHN5cwogaW1wb3J0IG9zCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGxfbGliIGltcG9ydCBpbnN0YWxsX2xpYgpAQCAtNDQsOCArNDQsMTAgQEAKICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwcm9qZWN0X2RpciwgJ2Zvby5weScpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShmLCAnIyBweXRob24gZmlsZScpCiAgICAgICAgIGNtZC5ieXRlX2NvbXBpbGUoW2ZdKQotICAgICAgICBweWNfZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkKLSAgICAgICAgcHlvX2ZpbGUgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIGRlYnVnX292ZXJyaWRlPUZhbHNlKQorICAgICAgICBweWNfZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdmb28ucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPVRydWUpCisgICAgICAgIHB5b19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhweWNfZmlsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhweW9fZmlsZSkpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91cGxvYWQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXBsb2FkLnB5CmluZGV4IDRjNjQ2NGEuLjRhNzFjYTQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91cGxvYWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VwbG9hZC5weQpAQCAtNzIsMTIgKzcyLDEyIEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKHVwbG9hZFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCi0gICAgICAgIHNlbGYub2xkX2NsYXNzID0gaHR0cGNsaWVudC5IVFRQQ29ubmVjdGlvbgotICAgICAgICBzZWxmLmNvbm4gPSBodHRwY2xpZW50LkhUVFBDb25uZWN0aW9uID0gRmFrZUNvbm5lY3Rpb24oKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBodHRwY2xpZW50LkhUVFBDb25uZWN0aW9uID0gc2VsZi5vbGRfY2xhc3MKLSAgICAgICAgc3VwZXIodXBsb2FkVGVzdENhc2UsIHNlbGYpLnRlYXJEb3duKCkKKyAgICAgICAgaWYgaGFzYXR0cihodHRwY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyk6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgaHR0cGNsaWVudCwgJ0hUVFBTQ29ubmVjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZGVsYXR0ciwgaHR0cGNsaWVudCwgJ0hUVFBTQ29ubmVjdGlvbicpCisgICAgICAgIHNlbGYuY29ubiA9IGh0dHBjbGllbnQuSFRUUFNDb25uZWN0aW9uID0gRmFrZUNvbm5lY3Rpb24oKQogCiAgICAgZGVmIHRlc3RfZmluYWxpemVfb3B0aW9ucyhzZWxmKToKIApAQCAtODgsNyArODgsNyBAQAogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIGZvciBhdHRyLCB3YWl0ZWQgaW4gKCgndXNlcm5hbWUnLCAnbWUnKSwgKCdwYXNzd29yZCcsICdzZWNyZXQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdyZWFsbScsICdweXBpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgncmVwb3NpdG9yeScsICdodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGknKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgncmVwb3NpdG9yeScsICdodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpJykpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGNtZCwgYXR0ciksIHdhaXRlZCkKIAogICAgIGRlZiB0ZXN0X3NhdmVkX3Bhc3N3b3JkKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCBlYWM5YjUxLi5iNzNjZmU5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtMjM2LDcgKzIzNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc1BsYXRmb3JtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZV9yb290LCAnYzpcXHJvb3QnLCAnaXRzXFxoZXJlJykKIAotICAgICAgICAjIFhYWCBwbGF0Zm9ybXMgdG8gYmUgY292ZXJlZDogb3MyLCBtYWMKKyAgICAgICAgIyBYWFggcGxhdGZvcm1zIHRvIGJlIGNvdmVyZWQ6IG1hYwogCiAgICAgZGVmIHRlc3RfY2hlY2tfZW52aXJvbihzZWxmKToKICAgICAgICAgdXRpbC5fZW52aXJvbl9jaGVja2VkID0gMApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CmluZGV4IDY3ZDgxNjYuLmVmYjM4MzQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKQEAgLTYsNyArNiw3IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgpAQCAtMTU0LDEyICsxNTQsNiBAQAogICAgICAgICAgICAgcGF0aCA9IHBhdGhbMTpdCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4obmV3X3Jvb3QsIHBhdGgpCiAKLSAgICBlbGlmIG9zLm5hbWUgPT0gJ29zMic6Ci0gICAgICAgIChkcml2ZSwgcGF0aCkgPSBvcy5wYXRoLnNwbGl0ZHJpdmUocGF0aG5hbWUpCi0gICAgICAgIGlmIHBhdGhbMF0gPT0gb3Muc2VwOgotICAgICAgICAgICAgcGF0aCA9IHBhdGhbMTpdCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4obmV3X3Jvb3QsIHBhdGgpCi0KICAgICBlbHNlOgogICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKCJub3RoaW5nIGtub3duIGFib3V0IHBsYXRmb3JtICclcyciICUgb3MubmFtZSkKIApAQCAtMjEzLDggKzIwNyw4IEBACiAKIAogZGVmIGdyb2tfZW52aXJvbm1lbnRfZXJyb3IgKGV4YywgcHJlZml4PSJlcnJvcjogIik6Ci0gICAgIiIiR2VuZXJhdGUgYSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBmcm9tIGFuIEVudmlyb25tZW50RXJyb3IgKElPRXJyb3Igb3IKLSAgICBPU0Vycm9yKSBleGNlcHRpb24gb2JqZWN0LiAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIDEuNS4yIHN0eWxlcywgYW5kCisgICAgIiIiR2VuZXJhdGUgYSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBmcm9tIGFuIE9TRXJyb3IKKyAgICBleGNlcHRpb24gb2JqZWN0LiAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIDEuNS4yIHN0eWxlcywgYW5kCiAgICAgZG9lcyB3aGF0IGl0IGNhbiB0byBkZWFsIHdpdGggZXhjZXB0aW9uIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGEKICAgICBmaWxlbmFtZSAod2hpY2ggaGFwcGVucyB3aGVuIHRoZSBlcnJvciBpcyBkdWUgdG8gYSB0d28tZmlsZSBvcGVyYXRpb24sCiAgICAgc3VjaCBhcyAncmVuYW1lKCknIG9yICdsaW5rKCknLiAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBhcyBhIHN0cmluZwpAQCAtNDU5LDkgKzQ1MywxMCBAQAogICAgICAgICAgICAgIyAgIGNmaWxlIC0gYnl0ZS1jb21waWxlZCBmaWxlCiAgICAgICAgICAgICAjICAgZGZpbGUgLSBwdXJwb3J0ZWQgc291cmNlIGZpbGVuYW1lIChzYW1lIGFzICdmaWxlJyBieSBkZWZhdWx0KQogICAgICAgICAgICAgaWYgb3B0aW1pemUgPj0gMDoKLSAgICAgICAgICAgICAgICBjZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQorICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZSkKICAgICAgICAgICAgIGRmaWxlID0gZmlsZQogICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgIGlmIGZpbGVbOmxlbihwcmVmaXgpXSAhPSBwcmVmaXg6CmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDNhZjA1ZmIuLjFkNGQzMjkgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC02Miw2ICs2Miw3IEBACiAgICAgJ1JFUE9SVF9ORElGRicsCiAgICAgJ1JFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUnLAogICAgICdSRVBPUlRJTkdfRkxBR1MnLAorICAgICdGQUlMX0ZBU1QnLAogICAgICMgMS4gVXRpbGl0eSBGdW5jdGlvbnMKICAgICAjIDIuIEV4YW1wbGUgJiBEb2NUZXN0CiAgICAgJ0V4YW1wbGUnLApAQCAtOTIsNiArOTMsNyBAQAogXQogCiBpbXBvcnQgX19mdXR1cmVfXworaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgZGlmZmxpYgogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBsaW5lY2FjaGUKQEAgLTE1MCwxMSArMTUyLDEzIEBACiBSRVBPUlRfQ0RJRkYgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdSRVBPUlRfQ0RJRkYnKQogUkVQT1JUX05ESUZGID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnUkVQT1JUX05ESUZGJykKIFJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdSRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFJykKK0ZBSUxfRkFTVCA9IHJlZ2lzdGVyX29wdGlvbmZsYWcoJ0ZBSUxfRkFTVCcpCiAKIFJFUE9SVElOR19GTEFHUyA9IChSRVBPUlRfVURJRkYgfAogICAgICAgICAgICAgICAgICAgIFJFUE9SVF9DRElGRiB8CiAgICAgICAgICAgICAgICAgICAgUkVQT1JUX05ESUZGIHwKLSAgICAgICAgICAgICAgICAgICBSRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFKQorICAgICAgICAgICAgICAgICAgIFJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUgfAorICAgICAgICAgICAgICAgICAgIEZBSUxfRkFTVCkKIAogIyBTcGVjaWFsIHN0cmluZyBtYXJrZXJzIGZvciB1c2UgaW4gYHdhbnRgIHN0cmluZ3M6CiBCTEFOS0xJTkVfTUFSS0VSID0gJzxCTEFOS0xJTkU+JwpAQCAtMjEyLDcgKzIxNiw3IEBACiAgICAgaWYgbW9kdWxlX3JlbGF0aXZlOgogICAgICAgICBwYWNrYWdlID0gX25vcm1hbGl6ZV9tb2R1bGUocGFja2FnZSwgMykKICAgICAgICAgZmlsZW5hbWUgPSBfbW9kdWxlX3JlbGF0aXZlX3BhdGgocGFja2FnZSwgZmlsZW5hbWUpCi0gICAgICAgIGlmIGhhc2F0dHIocGFja2FnZSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgaWYgZ2V0YXR0cihwYWNrYWdlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgaGFzYXR0cihwYWNrYWdlLl9fbG9hZGVyX18sICdnZXRfZGF0YScpOgogICAgICAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBwYWNrYWdlLl9fbG9hZGVyX18uZ2V0X2RhdGEoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgZmlsZV9jb250ZW50cyA9IGZpbGVfY29udGVudHMuZGVjb2RlKGVuY29kaW5nKQpAQCAtMTM0Miw2ICsxMzQ2LDkgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAoInVua25vd24gb3V0Y29tZSIsIG91dGNvbWUpCiAKKyAgICAgICAgICAgIGlmIGZhaWx1cmVzIGFuZCBzZWxmLm9wdGlvbmZsYWdzICYgRkFJTF9GQVNUOgorICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAgIyBSZXN0b3JlIHRoZSBvcHRpb24gZmxhZ3MgKGluIGNhc2UgdGhleSB3ZXJlIG1vZGlmaWVkKQogICAgICAgICBzZWxmLm9wdGlvbmZsYWdzID0gb3JpZ2luYWxfb3B0aW9uZmxhZ3MKIApAQCAtMjcwMiwxMyArMjcwOSwzMCBAQAogCiAKIGRlZiBfdGVzdCgpOgotICAgIHRlc3RmaWxlcyA9IFthcmcgZm9yIGFyZyBpbiBzeXMuYXJndlsxOl0gaWYgYXJnIGFuZCBhcmdbMF0gIT0gJy0nXQotICAgIGlmIG5vdCB0ZXN0ZmlsZXM6Ci0gICAgICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQotICAgICAgICBpZiAnX19sb2FkZXJfXycgaW4gZ2xvYmFscygpOiAgICAgICAgICAjIHB5dGhvbiAtbQotICAgICAgICAgICAgbmFtZSwgXyA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgcHJpbnQoInVzYWdlOiB7MH0gWy12XSBmaWxlIC4uLiIuZm9ybWF0KG5hbWUpKQotICAgICAgICByZXR1cm4gMgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJkb2N0ZXN0IHJ1bm5lciIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IHZlcnkgdmVyYm9zZSBvdXRwdXQgZm9yIGFsbCB0ZXN0cycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vcHRpb24nLCBhY3Rpb249J2FwcGVuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPU9QVElPTkZMQUdTX0JZX05BTUUua2V5cygpLCBkZWZhdWx0PVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ3NwZWNpZnkgYSBkb2N0ZXN0IG9wdGlvbiBmbGFnIHRvIGFwcGx5JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB0byB0aGUgdGVzdCBydW47IG1heSBiZSBzcGVjaWZpZWQgbW9yZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdGhhbiBvbmNlIHRvIGFwcGx5IG11bHRpcGxlIG9wdGlvbnMnKSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsICctLWZhaWwtZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnc3RvcCBydW5uaW5nIHRlc3RzIGFmdGVyIGZpcnN0IGZhaWx1cmUgKHRoaXMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGlzIGEgc2hvcnRoYW5kIGZvciAtbyBGQUlMX0ZBU1QsIGFuZCBpcycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgaW4gYWRkaXRpb24gdG8gYW55IG90aGVyIC1vIG9wdGlvbnMpJykpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZmlsZScsIG5hcmdzPScrJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgY29udGFpbmluZyB0aGUgdGVzdHMgdG8gcnVuJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIHRlc3RmaWxlcyA9IGFyZ3MuZmlsZQorICAgICMgVmVyYm9zZSB1c2VkIHRvIGJlIGhhbmRsZWQgYnkgdGhlICJpbnNwZWN0IGFyZ3YiIG1hZ2ljIGluIERvY1Rlc3RSdW5uZXIsCisgICAgIyBidXQgc2luY2Ugd2UgYXJlIHVzaW5nIGFyZ3BhcnNlIHdlIGFyZSBwYXNzaW5nIGl0IG1hbnVhbGx5IG5vdy4KKyAgICB2ZXJib3NlID0gYXJncy52ZXJib3NlCisgICAgb3B0aW9ucyA9IDAKKyAgICBmb3Igb3B0aW9uIGluIGFyZ3Mub3B0aW9uOgorICAgICAgICBvcHRpb25zIHw9IE9QVElPTkZMQUdTX0JZX05BTUVbb3B0aW9uXQorICAgIGlmIGFyZ3MuZmFpbF9mYXN0OgorICAgICAgICBvcHRpb25zIHw9IEZBSUxfRkFTVAogICAgIGZvciBmaWxlbmFtZSBpbiB0ZXN0ZmlsZXM6CiAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCIucHkiKToKICAgICAgICAgICAgICMgSXQgaXMgYSBtb2R1bGUgLS0gaW5zZXJ0IGl0cyBkaXIgaW50byBzeXMucGF0aCBhbmQgdHJ5IHRvCkBAIC0yNzE4LDkgKzI3NDIsMTAgQEAKICAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBkaXJuYW1lKQogICAgICAgICAgICAgbSA9IF9faW1wb3J0X18oZmlsZW5hbWVbOi0zXSkKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQotICAgICAgICAgICAgZmFpbHVyZXMsIF8gPSB0ZXN0bW9kKG0pCisgICAgICAgICAgICBmYWlsdXJlcywgXyA9IHRlc3Rtb2QobSwgdmVyYm9zZT12ZXJib3NlLCBvcHRpb25mbGFncz1vcHRpb25zKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmFpbHVyZXMsIF8gPSB0ZXN0ZmlsZShmaWxlbmFtZSwgbW9kdWxlX3JlbGF0aXZlPUZhbHNlKQorICAgICAgICAgICAgZmFpbHVyZXMsIF8gPSB0ZXN0ZmlsZShmaWxlbmFtZSwgbW9kdWxlX3JlbGF0aXZlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9dmVyYm9zZSwgb3B0aW9uZmxhZ3M9b3B0aW9ucykKICAgICAgICAgaWYgZmFpbHVyZXM6CiAgICAgICAgICAgICByZXR1cm4gMQogICAgIHJldHVybiAwCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKaW5kZXggMjkxNDM3Yy4uMDM5MjM3OSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtMzY4LDggKzM2OCw3IEBACiAgICAgICAgICAgICAgICAgeWllbGQgKGluZGVudCArICcgICAgISEgaW52YWxpZCBlbGVtZW50IGluIHRva2VuICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlzdDogeyFyfScuZm9ybWF0KHRva2VuKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdG9rZW4uX3BwKGluZGVudCsnICAgICcpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB0b2tlbi5fcHAoaW5kZW50KycgICAgJykKICAgICAgICAgaWYgc2VsZi5kZWZlY3RzOgogICAgICAgICAgICAgZXh0cmEgPSAnIERlZmVjdHM6IHt9Jy5mb3JtYXQoc2VsZi5kZWZlY3RzKQogICAgICAgICBlbHNlOgpAQCAtMTMxNSwyNCArMTMxNCwyMiBAQAogIyBQYXJzZXIKICMKIAotIiIiUGFyc2Ugc3RyaW5ncyBhY2NvcmRpbmcgdG8gUkZDODIyLzIwNDcvMjgyMi81MzIyIHJ1bGVzLgotCi1UaGlzIGlzIGEgc3RhdGVsZXNzIHBhcnNlci4gIEVhY2ggZ2V0X1hYWCBmdW5jdGlvbiBhY2NlcHRzIGEgc3RyaW5nIGFuZAotcmV0dXJucyBlaXRoZXIgYSBUZXJtaW5hbCBvciBhIFRva2VuTGlzdCByZXByZXNlbnRpbmcgdGhlIFJGQyBvYmplY3QgbmFtZWQKLWJ5IHRoZSBtZXRob2QgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlbWFpbmluZyB1bnBhcnNlZCBjaGFyYWN0ZXJzCi1mcm9tIHRoZSBpbnB1dC4gIFRodXMgYSBwYXJzZXIgbWV0aG9kIGNvbnN1bWVzIHRoZSBuZXh0IHN5bnRhY3RpYyBjb25zdHJ1Y3QKLW9mIGEgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY29uc3RydWN0IHBsdXMgdGhlCi11bnBhcnNlZCByZW1haW5kZXIgb2YgdGhlIGlucHV0IHN0cmluZy4KLQotRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlZCBoZWFkZXIgaXMgYSAncGhyYXNlJywKLXRoZW46Ci0KLSAgICBwaHJhc2UsIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKLQotcmV0dXJucyB0aGUgY29tcGxldGUgcGhyYXNlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgdmFsdWUsIHBsdXMgYW55Ci1jaGFyYWN0ZXJzIGxlZnQgaW4gdGhlIHN0cmluZyBhZnRlciB0aGUgcGhyYXNlIGlzIHJlbW92ZWQuCi0KLSIiIgorIyBQYXJzZSBzdHJpbmdzIGFjY29yZGluZyB0byBSRkM4MjIvMjA0Ny8yODIyLzUzMjIgcnVsZXMuCisjCisjIFRoaXMgaXMgYSBzdGF0ZWxlc3MgcGFyc2VyLiAgRWFjaCBnZXRfWFhYIGZ1bmN0aW9uIGFjY2VwdHMgYSBzdHJpbmcgYW5kCisjIHJldHVybnMgZWl0aGVyIGEgVGVybWluYWwgb3IgYSBUb2tlbkxpc3QgcmVwcmVzZW50aW5nIHRoZSBSRkMgb2JqZWN0IG5hbWVkCisjIGJ5IHRoZSBtZXRob2QgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlbWFpbmluZyB1bnBhcnNlZCBjaGFyYWN0ZXJzCisjIGZyb20gdGhlIGlucHV0LiAgVGh1cyBhIHBhcnNlciBtZXRob2QgY29uc3VtZXMgdGhlIG5leHQgc3ludGFjdGljIGNvbnN0cnVjdAorIyBvZiBhIGdpdmVuIHR5cGUgYW5kIHJldHVybnMgYSB0b2tlbiByZXByZXNlbnRpbmcgdGhlIGNvbnN0cnVjdCBwbHVzIHRoZQorIyB1bnBhcnNlZCByZW1haW5kZXIgb2YgdGhlIGlucHV0IHN0cmluZy4KKyMKKyMgRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlZCBoZWFkZXIgaXMgYSAncGhyYXNlJywKKyMgdGhlbjoKKyMKKyMgICAgIHBocmFzZSwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorIworIyByZXR1cm5zIHRoZSBjb21wbGV0ZSBwaHJhc2UgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyB2YWx1ZSwgcGx1cyBhbnkKKyMgY2hhcmFjdGVycyBsZWZ0IGluIHRoZSBzdHJpbmcgYWZ0ZXIgdGhlIHBocmFzZSBpcyByZW1vdmVkLgogCiBfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAogX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQppbmRleCBlYTQxZTk1Li5lYjc1ZmUzIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weQorKysgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQpAQCAtOTgsMjQgKzk4LDE1IEBACiAgICAgICAgICIiIlB1c2ggc29tZSBuZXcgZGF0YSBpbnRvIHRoaXMgb2JqZWN0LiIiIgogICAgICAgICAjIEhhbmRsZSBhbnkgcHJldmlvdXMgbGVmdG92ZXJzCiAgICAgICAgIGRhdGEsIHNlbGYuX3BhcnRpYWwgPSBzZWxmLl9wYXJ0aWFsICsgZGF0YSwgJycKLSAgICAgICAgIyBDcmFjayBpbnRvIGxpbmVzLCBidXQgcHJlc2VydmUgdGhlIG5ld2xpbmVzIG9uIHRoZSBlbmQgb2YgZWFjaAotICAgICAgICBwYXJ0cyA9IE5MQ1JFX2NyYWNrLnNwbGl0KGRhdGEpCi0gICAgICAgICMgVGhlICphaGVtKiBpbnRlcmVzdGluZyBiZWhhdmlvdXIgb2YgcmUuc3BsaXQgd2hlbiBzdXBwbGllZCBncm91cGluZwotICAgICAgICAjIHBhcmVudGhlc2VzIGlzIHRoYXQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcmVzdWx0aW5nIGxpc3QgaXMgdGhlCi0gICAgICAgICMgZGF0YSBhZnRlciB0aGUgZmluYWwgUkUuICBJbiB0aGUgY2FzZSBvZiBhIE5ML0NSIHRlcm1pbmF0ZWQgc3RyaW5nLAotICAgICAgICAjIHRoaXMgaXMgdGhlIGVtcHR5IHN0cmluZy4KLSAgICAgICAgc2VsZi5fcGFydGlhbCA9IHBhcnRzLnBvcCgpCi0gICAgICAgICNHQU4gMjlNYXIwOSAgYnVncyAxNTU1NTcwLCAxNzIxODYyICBDb25mdXNpb24gYXQgOEsgYm91bmRhcnkgZW5kaW5nIHdpdGggXHI6Ci0gICAgICAgICMgaXMgdGhlcmUgYSBcbiB0byBmb2xsb3cgbGF0ZXI/Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9wYXJ0aWFsIGFuZCBwYXJ0cyBhbmQgcGFydHNbLTFdLmVuZHN3aXRoKCdccicpOgotICAgICAgICAgICAgc2VsZi5fcGFydGlhbCA9IHBhcnRzLnBvcCgtMikrcGFydHMucG9wKCkKLSAgICAgICAgIyBwYXJ0cyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncywgYWx0ZXJuYXRpbmcgYmV0d2VlbiB0aGUgbGluZSBjb250ZW50cwotICAgICAgICAjIGFuZCB0aGUgZW9sIGNoYXJhY3RlcihzKS4gIEdhdGhlciB1cCBhIGxpc3Qgb2YgbGluZXMgYWZ0ZXIKLSAgICAgICAgIyByZS1hdHRhY2hpbmcgdGhlIG5ld2xpbmVzLgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihwYXJ0cykgLy8gMik6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQocGFydHNbaSoyXSArIHBhcnRzW2kqMisxXSkKLSAgICAgICAgc2VsZi5wdXNobGluZXMobGluZXMpCisgICAgICAgICMgQ3JhY2sgaW50byBsaW5lcywgYnV0IHByZXNlcnZlIHRoZSBsaW5lc2VwIGNoYXJhY3RlcnMgb24gdGhlIGVuZCBvZiBlYWNoCisgICAgICAgIHBhcnRzID0gZGF0YS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICMgSWYgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGlzdCBkb2VzIG5vdCBlbmQgaW4gYSBuZXdsaW5lLCB0aGVuIHRyZWF0CisgICAgICAgICMgaXQgYXMgYSBwYXJ0aWFsIGxpbmUuICBXZSBvbmx5IGNoZWNrIGZvciAnXG4nIGhlcmUgYmVjYXVzZSBhIGxpbmUKKyAgICAgICAgIyBlbmRpbmcgd2l0aCAnXHInIG1pZ2h0IGJlIGEgbGluZSB0aGF0IHdhcyBzcGxpdCBpbiB0aGUgbWlkZGxlIG9mIGEKKyAgICAgICAgIyAnXHJcbicgc2VxdWVuY2UgKHNlZSBidWdzIDE1NTU1NzAgYW5kIDE3MjE4NjIpLgorICAgICAgICBpZiBwYXJ0cyBhbmQgbm90IHBhcnRzWy0xXS5lbmRzd2l0aCgnXG4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhcnRpYWwgPSBwYXJ0cy5wb3AoKQorICAgICAgICBzZWxmLnB1c2hsaW5lcyhwYXJ0cykKIAogICAgIGRlZiBwdXNobGluZXMoc2VsZiwgbGluZXMpOgogICAgICAgICAjIFJldmVyc2UgYW5kIGluc2VydCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpbmVzLgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2l0ZXJhdG9ycy5weSBiL0xpYi9lbWFpbC9pdGVyYXRvcnMucHkKaW5kZXggM2FkYzRhMC4uYjU1MDJlZSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2l0ZXJhdG9ycy5weQorKysgYi9MaWIvZW1haWwvaXRlcmF0b3JzLnB5CkBAIC0yNiw4ICsyNiw3IEBACiAgICAgeWllbGQgc2VsZgogICAgIGlmIHNlbGYuaXNfbXVsdGlwYXJ0KCk6CiAgICAgICAgIGZvciBzdWJwYXJ0IGluIHNlbGYuZ2V0X3BheWxvYWQoKToKLSAgICAgICAgICAgIGZvciBzdWJzdWJwYXJ0IGluIHN1YnBhcnQud2FsaygpOgotICAgICAgICAgICAgICAgIHlpZWxkIHN1YnN1YnBhcnQKKyAgICAgICAgICAgIHlpZWxkIGZyb20gc3VicGFydC53YWxrKCkKIAogCiAMCkBAIC00MCw4ICszOSw3IEBACiAgICAgZm9yIHN1YnBhcnQgaW4gbXNnLndhbGsoKToKICAgICAgICAgcGF5bG9hZCA9IHN1YnBhcnQuZ2V0X3BheWxvYWQoZGVjb2RlPWRlY29kZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gU3RyaW5nSU8ocGF5bG9hZCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICAgICAgeWllbGQgZnJvbSBTdHJpbmdJTyhwYXlsb2FkKQogCiAKIGRlZiB0eXBlZF9zdWJwYXJ0X2l0ZXJhdG9yKG1zZywgbWFpbnR5cGU9J3RleHQnLCBzdWJ0eXBlPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWVzc2FnZS5weQppbmRleCAzZmVhYjUyLi5iNWY3YjNhIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWVzc2FnZS5weQpAQCAtMTMyLDIyICsxMzIsNTAgQEAKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGVudGlyZSBmb3JtYXR0ZWQgbWVzc2FnZSBhcyBhIHN0cmluZy4KLSAgICAgICAgVGhpcyBpbmNsdWRlcyB0aGUgaGVhZGVycywgYm9keSwgYW5kIGVudmVsb3BlIGhlYWRlci4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmFzX3N0cmluZygpCiAKLSAgICBkZWYgYXNfc3RyaW5nKHNlbGYsIHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCk6CisgICAgZGVmIGFzX3N0cmluZyhzZWxmLCB1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPTAsIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgZm9ybWF0dGVkIG1lc3NhZ2UgYXMgYSBzdHJpbmcuCi0gICAgICAgIE9wdGlvbmFsIGB1bml4ZnJvbScgd2hlbiBUcnVlLCBtZWFucyBpbmNsdWRlIHRoZSBVbml4IEZyb21fIGVudmVsb3BlCi0gICAgICAgIGhlYWRlci4KIAotICAgICAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIGFuZCBtYXkgbm90IGdlbmVyYXRlIHRoZSBtZXNzYWdlIGV4YWN0bHkKLSAgICAgICAgYXMgeW91IGludGVuZC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCB1c2UgdGhlIGZsYXR0ZW4oKSBtZXRob2Qgb2YgYQotICAgICAgICBHZW5lcmF0b3IgaW5zdGFuY2UuCisgICAgICAgIE9wdGlvbmFsICd1bml4ZnJvbScsIHdoZW4gdHJ1ZSwgbWVhbnMgaW5jbHVkZSB0aGUgVW5peCBGcm9tXyBlbnZlbG9wZQorICAgICAgICBoZWFkZXIuICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLCBpZiBtYXhoZWFkZXJsZW4gaXMKKyAgICAgICAgbm90IHNwZWNpZmllZCBpdCBkZWZhdWx0cyB0byAwLCBzbyB5b3UgbXVzdCBvdmVycmlkZSBpdCBleHBsaWNpdGx5CisgICAgICAgIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IG1heGhlYWRlcmxlbi4gICdwb2xpY3knIGlzIHBhc3NlZCB0byB0aGUKKyAgICAgICAgR2VuZXJhdG9yIGluc3RhbmNlIHVzZWQgdG8gc2VyaWFsaXplIHRoZSBtZXNhc2dlOyBpZiBpdCBpcyBub3QKKyAgICAgICAgc3BlY2lmaWVkIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIGluc3RhbmNlIGlzIHVzZWQuCisKKyAgICAgICAgSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5zIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90IGVuY29kZWQKKyAgICAgICAgYWNjb3JkaW5nIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieQorICAgICAgICB1bmljb2RlICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuCiAgICAgICAgICIiIgogICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCisgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CiAgICAgICAgIGZwID0gU3RyaW5nSU8oKQotICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89RmFsc2UsIG1heGhlYWRlcmxlbj1tYXhoZWFkZXJsZW4pCisgICAgICAgIGcgPSBHZW5lcmF0b3IoZnAsCisgICAgICAgICAgICAgICAgICAgICAgbWFuZ2xlX2Zyb21fPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIG1heGhlYWRlcmxlbj1tYXhoZWFkZXJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeSkKKyAgICAgICAgZy5mbGF0dGVuKHNlbGYsIHVuaXhmcm9tPXVuaXhmcm9tKQorICAgICAgICByZXR1cm4gZnAuZ2V0dmFsdWUoKQorCisgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgZm9ybWF0dGVkIG1lc3NhZ2UgYXMgYSBieXRlcyBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5hc19ieXRlcygpCisKKyAgICBkZWYgYXNfYnl0ZXMoc2VsZiwgdW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgZm9ybWF0dGVkIG1lc3NhZ2UgYXMgYSBieXRlcyBvYmplY3QuCisKKyAgICAgICAgT3B0aW9uYWwgJ3VuaXhmcm9tJywgd2hlbiB0cnVlLCBtZWFucyBpbmNsdWRlIHRoZSBVbml4IEZyb21fIGVudmVsb3BlCisgICAgICAgIGhlYWRlci4gICdwb2xpY3knIGlzIHBhc3NlZCB0byB0aGUgQnl0ZXNHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0bworICAgICAgICBzZXJpYWxpemUgdGhlIG1lc3NhZ2U7IGlmIG5vdCBzcGVjaWZpZWQgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgdGhlIG1lc3NhZ2UgaW5zdGFuY2UgaXMgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgorICAgICAgICBwb2xpY3kgPSBzZWxmLnBvbGljeSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICBmcCA9IEJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1GYWxzZSwgcG9saWN5PXBvbGljeSkKICAgICAgICAgZy5mbGF0dGVuKHNlbGYsIHVuaXhmcm9tPXVuaXhmcm9tKQogICAgICAgICByZXR1cm4gZnAuZ2V0dmFsdWUoKQogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvcGFyc2VyLnB5IGIvTGliL2VtYWlsL3BhcnNlci5weQppbmRleCA3NTJiZjM1Li5mNDlkMzFkIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9wYXJzZXIucHkKQEAgLTQsNyArNCw4IEBACiAKICIiIkEgcGFyc2VyIG9mIFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLiIiIgogCi1fX2FsbF9fID0gWydQYXJzZXInLCAnSGVhZGVyUGFyc2VyJywgJ0J5dGVzUGFyc2VyJywgJ0J5dGVzSGVhZGVyUGFyc2VyJ10KK19fYWxsX18gPSBbJ1BhcnNlcicsICdIZWFkZXJQYXJzZXInLCAnQnl0ZXNQYXJzZXInLCAnQnl0ZXNIZWFkZXJQYXJzZXInLAorICAgICAgICAgICAnRmVlZFBhcnNlcicsICdCeXRlc0ZlZWRQYXJzZXInXQogCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdXRpbHMucHkgYi9MaWIvZW1haWwvdXRpbHMucHkKaW5kZXggOTNhNjI1Yy4uYjNiNDJiYiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3V0aWxzLnB5CisrKyBiL0xpYi9lbWFpbC91dGlscy5weQpAQCAtNTQsMTAgKzU0LDE2IEBACiBzcGVjaWFsc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCk8PkAsOjsiLl0nKQogZXNjYXBlc3JlID0gcmUuY29tcGlsZShyJ1tcXCJdJykKIAotIyBIb3cgdG8gZmlndXJlIG91dCBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBzdHJpbmdzIHRoYXQgY29tZSBmcm9tIGEgYnl0ZQotIyBzb3VyY2Ugd2l0aCB1bmRlY29kYWJsZSBjaGFyYWN0ZXJzLgotX2hhc19zdXJyb2dhdGVzID0gcmUuY29tcGlsZSgKLSAgICAnKFteXHVkODAwLVx1ZGJmZl18XEEpW1x1ZGMwMC1cdWRmZmZdKFteXHVkYzAwLVx1ZGZmZl18XFopJykuc2VhcmNoCitkZWYgX2hhc19zdXJyb2dhdGVzKHMpOgorICAgICIiIlJldHVybiBUcnVlIGlmIHMgY29udGFpbnMgc3Vycm9nYXRlLWVzY2FwZWQgYmluYXJ5IGRhdGEuIiIiCisgICAgIyBUaGlzIGNoZWNrIGlzIGJhc2VkIG9uIHRoZSBmYWN0IHRoYXQgdW5sZXNzIHRoZXJlIGFyZSBzdXJyb2dhdGVzLCB1dGY4CisgICAgIyAoUHl0aG9uJ3MgZGVmYXVsdCBlbmNvZGluZykgY2FuIGVuY29kZSBhbnkgc3RyaW5nLiAgVGhpcyBpcyB0aGUgZmFzdGVzdAorICAgICMgd2F5IHRvIGNoZWNrIGZvciBzdXJyb2dhdGVzLCBzZWUgaXNzdWUgMTE0NTQgZm9yIHRpbWluZ3MuCisgICAgdHJ5OgorICAgICAgICBzLmVuY29kZSgpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgIHJldHVybiBUcnVlCiAKICMgSG93IHRvIGRlYWwgd2l0aCBhIHN0cmluZyBjb250YWluaW5nIGJ5dGVzIGJlZm9yZSBoYW5kaW5nIGl0IHRvIHRoZQogIyBhcHBsaWNhdGlvbiB0aHJvdWdoIHRoZSAnbm9ybWFsJyBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5IGIvTGliL2VuY29kaW5ncy9jcDAzNy5weQppbmRleCBiZmUyYzFlLi40ZWRkNzA4IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKQEAgLTMwMSw3ICszMDEsNiBAQAogICAgICdceGQ5JyAgICAgIyAgMHhGRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICAnXHhkYScgICAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAgJ1x4OWYnICAgICAjICAweEZGIC0+IENPTlRST0wKLSAgICAnXHVmZmZlJyAgICMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbgogKQogCiAjIyMgRW5jb2RpbmcgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkgYi9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CmluZGV4IGE5NzViZTcuLjVmNjE1MzUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKKysrIGIvTGliL2VuY29kaW5ncy9jcDUwMC5weQpAQCAtMzAxLDcgKzMwMSw2IEBACiAgICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAotICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkgYi9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weQppbmRleCBkOWNjNTE2Li44Y2ZjMDFmIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weQorKysgYi9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weQpAQCAtMzAxLDcgKzMwMSw2IEBACiAgICAgJ1x4ZmQnICAgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICAnXHhmZScgICAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCiAgICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgJ1x1ZmZmZScgICAjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24KICkKIAogIyMjIEVuY29kaW5nIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvZW51bS5weSBiL0xpYi9lbnVtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOTcwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW51bS5weQpAQCAtMCwwICsxLDQ3NSBAQAoraW1wb3J0IHN5cworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2Zyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUKKworX19hbGxfXyA9IFsnRW51bScsICdJbnRFbnVtJywgJ3VuaXF1ZSddCisKKworY2xhc3MgX1JvdXRlQ2xhc3NBdHRyaWJ1dGVUb0dldGF0dHI6CisgICAgIiIiUm91dGUgYXR0cmlidXRlIGFjY2VzcyBvbiBhIGNsYXNzIHRvIF9fZ2V0YXR0cl9fLgorCisgICAgVGhpcyBpcyBhIGRlc2NyaXB0b3IsIHVzZWQgdG8gZGVmaW5lIGF0dHJpYnV0ZXMgdGhhdCBhY3QgZGlmZmVyZW50bHkgd2hlbgorICAgIGFjY2Vzc2VkIHRocm91Z2ggYW4gaW5zdGFuY2UgYW5kIHRocm91Z2ggYSBjbGFzcy4gIEluc3RhbmNlIGFjY2VzcyByZW1haW5zCisgICAgbm9ybWFsLCBidXQgYWNjZXNzIHRvIGFuIGF0dHJpYnV0ZSB0aHJvdWdoIGEgY2xhc3Mgd2lsbCBiZSByb3V0ZWQgdG8gdGhlCisgICAgY2xhc3MncyBfX2dldGF0dHJfXyBtZXRob2Q7IHRoaXMgaXMgZG9uZSBieSByYWlzaW5nIEF0dHJpYnV0ZUVycm9yLgorCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZnZXQ9Tm9uZSk6CisgICAgICAgIHNlbGYuZmdldCA9IGZnZXQKKworICAgIGRlZiBfX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcmNsYXNzPU5vbmUpOgorICAgICAgICBpZiBpbnN0YW5jZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoKQorICAgICAgICByZXR1cm4gc2VsZi5mZ2V0KGluc3RhbmNlKQorCisgICAgZGVmIF9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoImNhbid0IHNldCBhdHRyaWJ1dGUiKQorCisgICAgZGVmIF9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpOgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiY2FuJ3QgZGVsZXRlIGF0dHJpYnV0ZSIpCisKKworZGVmIF9pc19kdW5kZXIobmFtZSk6CisgICAgIiIiUmV0dXJucyBUcnVlIGlmIGEgX19kdW5kZXJfXyBuYW1lLCBGYWxzZSBvdGhlcndpc2UuIiIiCisgICAgcmV0dXJuIChuYW1lWzoyXSA9PSBuYW1lWy0yOl0gPT0gJ19fJyBhbmQKKyAgICAgICAgICAgIG5hbWVbMjozXSAhPSAnXycgYW5kCisgICAgICAgICAgICBuYW1lWy0zOi0yXSAhPSAnXycpCisKKworZGVmIF9pc19zdW5kZXIobmFtZSk6CisgICAgIiIiUmV0dXJucyBUcnVlIGlmIGEgX3N1bmRlcl8gbmFtZSwgRmFsc2Ugb3RoZXJ3aXNlLiIiIgorICAgIHJldHVybiAobmFtZVswXSA9PSBuYW1lWy0xXSA9PSAnXycgYW5kCisgICAgICAgICAgICBuYW1lWzE6Ml0gIT0gJ18nIGFuZAorICAgICAgICAgICAgbmFtZVstMjotMV0gIT0gJ18nKQorCisKK2RlZiBfbWFrZV9jbGFzc191bnBpY2tsYWJsZShjbHMpOgorICAgICIiIk1ha2UgdGhlIGdpdmVuIGNsYXNzIHVuLXBpY2tsYWJsZS4iIiIKKyAgICBkZWYgX2JyZWFrX29uX2NhbGxfcmVkdWNlKHNlbGYpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGNhbm5vdCBiZSBwaWNrbGVkJyAlIHNlbGYpCisgICAgY2xzLl9fcmVkdWNlX18gPSBfYnJlYWtfb25fY2FsbF9yZWR1Y2UKKyAgICBjbHMuX19tb2R1bGVfXyA9ICc8dW5rbm93bj4nCisKKworY2xhc3MgX0VudW1EaWN0KGRpY3QpOgorICAgICIiIktlZXBzIHRyYWNrIG9mIGRlZmluaXRpb24gb3JkZXIgb2YgdGhlIGVudW0gaXRlbXMuCisKKyAgICBFbnVtTWV0YSB3aWxsIHVzZSB0aGUgbmFtZXMgZm91bmQgaW4gc2VsZi5fbWVtYmVyX25hbWVzIGFzIHRoZQorICAgIGVudW1lcmF0aW9uIG1lbWJlciBuYW1lcy4KKworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lcyA9IFtdCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgICIiIkNoYW5nZXMgYW55dGhpbmcgbm90IGR1bmRlcmVkIG9yIHRoYXQgZG9lc24ndCBoYXZlIF9fZ2V0X18uCisKKyAgICAgICAgSWYgYSBkZXNjcmlwdG9yIGlzIGFkZGVkIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbiBlbnVtIG1lbWJlciwgdGhlIG5hbWUKKyAgICAgICAgaXMgcmVtb3ZlZCBmcm9tIF9tZW1iZXJfbmFtZXMgKHRoaXMgbWF5IGxlYXZlIGEgaG9sZSBpbiB0aGUgbnVtZXJpY2FsCisgICAgICAgIHNlcXVlbmNlIG9mIHZhbHVlcykuCisKKyAgICAgICAgSWYgYW4gZW51bSBtZW1iZXIgbmFtZSBpcyB1c2VkIHR3aWNlLCBhbiBlcnJvciBpcyByYWlzZWQ7IGR1cGxpY2F0ZQorICAgICAgICB2YWx1ZXMgYXJlIG5vdCBjaGVja2VkIGZvci4KKworICAgICAgICBTaW5nbGUgdW5kZXJzY29yZSAoc3VuZGVyKSBuYW1lcyBhcmUgcmVzZXJ2ZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIF9pc19zdW5kZXIoa2V5KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ19uYW1lc18gYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnKQorICAgICAgICBlbGlmIF9pc19kdW5kZXIoa2V5KSBvciBoYXNhdHRyKHZhbHVlLCAnX19nZXRfXycpOgorICAgICAgICAgICAgaWYga2V5IGluIHNlbGYuX21lbWJlcl9uYW1lczoKKyAgICAgICAgICAgICAgICAjIG92ZXJ3cml0aW5nIGFuIGVudW0gd2l0aCBhIG1ldGhvZD8gIHRoZW4gcmVtb3ZlIHRoZSBuYW1lIGZyb20KKyAgICAgICAgICAgICAgICAjIF9tZW1iZXJfbmFtZXMgb3IgaXQgd2lsbCBiZWNvbWUgYW4gZW51bSBhbnl3YXkgd2hlbiB0aGUgY2xhc3MKKyAgICAgICAgICAgICAgICAjIGlzIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICBzZWxmLl9tZW1iZXJfbmFtZXMucmVtb3ZlKGtleSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGtleSBpbiBzZWxmLl9tZW1iZXJfbmFtZXM6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBdHRlbXB0ZWQgdG8gcmV1c2Uga2V5OiAlcicgJSBrZXkpCisgICAgICAgICAgICBzZWxmLl9tZW1iZXJfbmFtZXMuYXBwZW5kKGtleSkKKyAgICAgICAgc3VwZXIoKS5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisKKyMgRHVtbXkgdmFsdWUgZm9yIEVudW0gYXMgRW51bU1ldGEgZXhwbGljaXR5IGNoZWNrcyBmb3IgaXQsIGJ1dCBvZiBjb3Vyc2UgdW50aWwKKyMgRW51bU1ldGEgZmluaXNoZXMgcnVubmluZyB0aGUgZmlyc3QgdGltZSB0aGUgRW51bSBjbGFzcyBkb2Vzbid0IGV4aXN0LiAgVGhpcworIyBpcyBhbHNvIHdoeSB0aGVyZSBhcmUgY2hlY2tzIGluIEVudW1NZXRhIGxpa2UgYGlmIEVudW0gaXMgbm90IE5vbmVgCitFbnVtID0gTm9uZQorCisKK2NsYXNzIEVudW1NZXRhKHR5cGUpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgRW51bSIiIgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBjbHMsIGJhc2VzKToKKyAgICAgICAgcmV0dXJuIF9FbnVtRGljdCgpCisKKyAgICBkZWYgX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QpOgorICAgICAgICAjIGFuIEVudW0gY2xhc3MgaXMgZmluYWwgb25jZSBlbnVtZXJhdGlvbiBpdGVtcyBoYXZlIGJlZW4gZGVmaW5lZDsgaXQKKyAgICAgICAgIyBjYW5ub3QgYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAoaW50LCBmbG9hdCwgZXRjLikgaWYgaXQgaGFzIGFuCisgICAgICAgICMgaW5oZXJpdGVkIF9fbmV3X18gdW5sZXNzIGEgbmV3IF9fbmV3X18gaXMgZGVmaW5lZCAob3IgdGhlIHJlc3VsdGluZworICAgICAgICAjIGNsYXNzIHdpbGwgZmFpbCkuCisgICAgICAgIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtID0gbWV0YWNscy5fZ2V0X21peGluc18oYmFzZXMpCisgICAgICAgIF9fbmV3X18sIHNhdmVfbmV3LCB1c2VfYXJncyA9IG1ldGFjbHMuX2ZpbmRfbmV3XyhjbGFzc2RpY3QsIG1lbWJlcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9lbnVtKQorCisgICAgICAgICMgc2F2ZSBlbnVtIGl0ZW1zIGludG8gc2VwYXJhdGUgbWFwcGluZyBzbyB0aGV5IGRvbid0IGdldCBiYWtlZCBpbnRvCisgICAgICAgICMgdGhlIG5ldyBjbGFzcworICAgICAgICBtZW1iZXJzID0ge2s6IGNsYXNzZGljdFtrXSBmb3IgayBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lc30KKyAgICAgICAgZm9yIG5hbWUgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXM6CisgICAgICAgICAgICBkZWwgY2xhc3NkaWN0W25hbWVdCisKKyAgICAgICAgIyBjaGVjayBmb3IgaWxsZWdhbCBlbnVtIG5hbWVzIChhbnkgb3RoZXJzPykKKyAgICAgICAgaW52YWxpZF9uYW1lcyA9IHNldChtZW1iZXJzKSAmIHsnbXJvJywgfQorICAgICAgICBpZiBpbnZhbGlkX25hbWVzOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBlbnVtIG1lbWJlciBuYW1lOiB7MH0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAnLCcuam9pbihpbnZhbGlkX25hbWVzKSkpCisKKyAgICAgICAgIyBjcmVhdGUgb3VyIG5ldyBFbnVtIHR5cGUKKyAgICAgICAgZW51bV9jbGFzcyA9IHN1cGVyKCkuX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QpCisgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18gPSBbXSAgICAgICAgICAgICAgICMgbmFtZXMgaW4gZGVmaW5pdGlvbiBvcmRlcgorICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfbWFwXyA9IE9yZGVyZWREaWN0KCkgICAgICAjIG5hbWUtPnZhbHVlIG1hcAorICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfdHlwZV8gPSBtZW1iZXJfdHlwZQorCisgICAgICAgICMgUmV2ZXJzZSB2YWx1ZS0+bmFtZSBtYXAgZm9yIGhhc2hhYmxlIHZhbHVlcy4KKyAgICAgICAgZW51bV9jbGFzcy5fdmFsdWUybWVtYmVyX21hcF8gPSB7fQorCisgICAgICAgICMgY2hlY2sgZm9yIGEgX19nZXRuZXdhcmdzX18sIGFuZCBpZiBub3QgcHJlc2VudCBzYWJvdGFnZQorICAgICAgICAjIHBpY2tsaW5nLCBzaW5jZSBpdCB3b24ndCB3b3JrIGFueXdheQorICAgICAgICBpZiAobWVtYmVyX3R5cGUgaXMgbm90IG9iamVjdCBhbmQKKyAgICAgICAgICAgIG1lbWJlcl90eXBlLl9fZGljdF9fLmdldCgnX19nZXRuZXdhcmdzX18nKSBpcyBOb25lCisgICAgICAgICAgICApOgorICAgICAgICAgICAgX21ha2VfY2xhc3NfdW5waWNrbGFibGUoZW51bV9jbGFzcykKKworICAgICAgICAjIGluc3RhbnRpYXRlIHRoZW0sIGNoZWNraW5nIGZvciBkdXBsaWNhdGVzIGFzIHdlIGdvCisgICAgICAgICMgd2UgaW5zdGFudGlhdGUgZmlyc3QgaW5zdGVhZCBvZiBjaGVja2luZyBmb3IgZHVwbGljYXRlcyBmaXJzdCBpbiBjYXNlCisgICAgICAgICMgYSBjdXN0b20gX19uZXdfXyBpcyBkb2luZyBzb21ldGhpbmcgZnVua3kgd2l0aCB0aGUgdmFsdWVzIC0tIHN1Y2ggYXMKKyAgICAgICAgIyBhdXRvLW51bWJlcmluZyA7KQorICAgICAgICBmb3IgbWVtYmVyX25hbWUgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXM6CisgICAgICAgICAgICB2YWx1ZSA9IG1lbWJlcnNbbWVtYmVyX25hbWVdCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAodmFsdWUsICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlCisgICAgICAgICAgICBpZiBtZW1iZXJfdHlwZSBpcyB0dXBsZTogICAjIHNwZWNpYWwgY2FzZSBmb3IgdHVwbGUgZW51bXMKKyAgICAgICAgICAgICAgICBhcmdzID0gKGFyZ3MsICkgICAgICMgd3JhcCBpdCBvbmUgbW9yZSB0aW1lCisgICAgICAgICAgICBpZiBub3QgdXNlX2FyZ3M6CisgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIgPSBfX25ld19fKGVudW1fY2xhc3MpCisgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZW51bV9tZW1iZXIsICdfdmFsdWVfJyk6CisgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbnVtX21lbWJlciA9IF9fbmV3X18oZW51bV9jbGFzcywgKmFyZ3MpCisgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZW51bV9tZW1iZXIsICdfdmFsdWVfJyk6CisgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBtZW1iZXJfdHlwZSgqYXJncykKKyAgICAgICAgICAgIHZhbHVlID0gZW51bV9tZW1iZXIuX3ZhbHVlXworICAgICAgICAgICAgZW51bV9tZW1iZXIuX25hbWVfID0gbWVtYmVyX25hbWUKKyAgICAgICAgICAgIGVudW1fbWVtYmVyLl9faW5pdF9fKCphcmdzKQorICAgICAgICAgICAgIyBJZiBhbm90aGVyIG1lbWJlciB3aXRoIHRoZSBzYW1lIHZhbHVlIHdhcyBhbHJlYWR5IGRlZmluZWQsIHRoZQorICAgICAgICAgICAgIyBuZXcgbWVtYmVyIGJlY29tZXMgYW4gYWxpYXMgdG8gdGhlIGV4aXN0aW5nIG9uZS4KKyAgICAgICAgICAgIGZvciBuYW1lLCBjYW5vbmljYWxfbWVtYmVyIGluIGVudW1fY2xhc3MuX21lbWJlcl9tYXBfLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgaWYgY2Fub25pY2FsX21lbWJlci52YWx1ZSA9PSBlbnVtX21lbWJlci5fdmFsdWVfOgorICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlciA9IGNhbm9uaWNhbF9tZW1iZXIKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBBbGlhc2VzIGRvbid0IGFwcGVhciBpbiBtZW1iZXIgbmFtZXMgKG9ubHkgaW4gX19tZW1iZXJzX18pLgorICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18uYXBwZW5kKG1lbWJlcl9uYW1lKQorICAgICAgICAgICAgZW51bV9jbGFzcy5fbWVtYmVyX21hcF9bbWVtYmVyX25hbWVdID0gZW51bV9tZW1iZXIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFRoaXMgbWF5IGZhaWwgaWYgdmFsdWUgaXMgbm90IGhhc2hhYmxlLiBXZSBjYW4ndCBhZGQgdGhlIHZhbHVlCisgICAgICAgICAgICAgICAgIyB0byB0aGUgbWFwLCBhbmQgYnktdmFsdWUgbG9va3VwcyBmb3IgdGhpcyB2YWx1ZSB3aWxsIGJlCisgICAgICAgICAgICAgICAgIyBsaW5lYXIuCisgICAgICAgICAgICAgICAgZW51bV9jbGFzcy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdID0gZW51bV9tZW1iZXIKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgZG91YmxlIGNoZWNrIHRoYXQgcmVwciBhbmQgZnJpZW5kcyBhcmUgbm90IHRoZSBtaXhpbidzIG9yIHZhcmlvdXMKKyAgICAgICAgIyB0aGluZ3MgYnJlYWsgKHN1Y2ggYXMgcGlja2xlKQorICAgICAgICBmb3IgbmFtZSBpbiAoJ19fcmVwcl9fJywgJ19fc3RyX18nLCAnX19nZXRuZXdhcmdzX18nKToKKyAgICAgICAgICAgIGNsYXNzX21ldGhvZCA9IGdldGF0dHIoZW51bV9jbGFzcywgbmFtZSkKKyAgICAgICAgICAgIG9ial9tZXRob2QgPSBnZXRhdHRyKG1lbWJlcl90eXBlLCBuYW1lLCBOb25lKQorICAgICAgICAgICAgZW51bV9tZXRob2QgPSBnZXRhdHRyKGZpcnN0X2VudW0sIG5hbWUsIE5vbmUpCisgICAgICAgICAgICBpZiBvYmpfbWV0aG9kIGlzIG5vdCBOb25lIGFuZCBvYmpfbWV0aG9kIGlzIGNsYXNzX21ldGhvZDoKKyAgICAgICAgICAgICAgICBzZXRhdHRyKGVudW1fY2xhc3MsIG5hbWUsIGVudW1fbWV0aG9kKQorCisgICAgICAgICMgcmVwbGFjZSBhbnkgb3RoZXIgX19uZXdfXyB3aXRoIG91ciBvd24gKGFzIGxvbmcgYXMgRW51bSBpcyBub3QgTm9uZSwKKyAgICAgICAgIyBhbnl3YXkpIC0tIGFnYWluLCB0aGlzIGlzIHRvIHN1cHBvcnQgcGlja2xlCisgICAgICAgIGlmIEVudW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGRlZmluZWQgdGhlaXIgb3duIF9fbmV3X18sIHNhdmUgaXQgYmVmb3JlIGl0IGdldHMKKyAgICAgICAgICAgICMgY2xvYmJlcmVkIGluIGNhc2UgdGhleSBzdWJjbGFzcyBsYXRlcgorICAgICAgICAgICAgaWYgc2F2ZV9uZXc6CisgICAgICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19tZW1iZXJfXyA9IF9fbmV3X18KKyAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfXyA9IEVudW0uX19uZXdfXworICAgICAgICByZXR1cm4gZW51bV9jbGFzcworCisgICAgZGVmIF9fY2FsbF9fKGNscywgdmFsdWUsIG5hbWVzPU5vbmUsICosIG1vZHVsZT1Ob25lLCB0eXBlPU5vbmUpOgorICAgICAgICAiIiJFaXRoZXIgcmV0dXJucyBhbiBleGlzdGluZyBtZW1iZXIsIG9yIGNyZWF0ZXMgYSBuZXcgZW51bSBjbGFzcy4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJvdGggd2hlbiBhbiBlbnVtIGNsYXNzIGlzIGdpdmVuIGEgdmFsdWUgdG8gbWF0Y2gKKyAgICAgICAgdG8gYW4gZW51bWVyYXRpb24gbWVtYmVyIChpLmUuIENvbG9yKDMpKSBhbmQgZm9yIHRoZSBmdW5jdGlvbmFsIEFQSQorICAgICAgICAoaS5lLiBDb2xvciA9IEVudW0oJ0NvbG9yJywgbmFtZXM9J3JlZCBncmVlbiBibHVlJykpLgorCisgICAgICAgIFdoZW4gdXNlZCBmb3IgdGhlIGZ1bmN0aW9uYWwgQVBJOiBgbW9kdWxlYCwgaWYgc2V0LCB3aWxsIGJlIHN0b3JlZCBpbgorICAgICAgICB0aGUgbmV3IGNsYXNzJyBfX21vZHVsZV9fIGF0dHJpYnV0ZTsgYHR5cGVgLCBpZiBzZXQsIHdpbGwgYmUgbWl4ZWQgaW4KKyAgICAgICAgYXMgdGhlIGZpcnN0IGJhc2UgY2xhc3MuCisKKyAgICAgICAgTm90ZTogaWYgYG1vZHVsZWAgaXMgbm90IHNldCB0aGlzIHJvdXRpbmUgd2lsbCBhdHRlbXB0IHRvIGRpc2NvdmVyIHRoZQorICAgICAgICBjYWxsaW5nIG1vZHVsZSBieSB3YWxraW5nIHRoZSBmcmFtZSBzdGFjazsgaWYgdGhpcyBpcyB1bnN1Y2Nlc3NmdWwKKyAgICAgICAgdGhlIHJlc3VsdGluZyBjbGFzcyB3aWxsIG5vdCBiZSBwaWNrbGVhYmxlLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBuYW1lcyBpcyBOb25lOiAgIyBzaW1wbGUgdmFsdWUgbG9va3VwCisgICAgICAgICAgICByZXR1cm4gY2xzLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgIyBvdGhlcndpc2UsIGZ1bmN0aW9uYWwgQVBJOiB3ZSdyZSBjcmVhdGluZyBhIG5ldyBFbnVtIHR5cGUKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlXyh2YWx1ZSwgbmFtZXMsIG1vZHVsZT1tb2R1bGUsIHR5cGU9dHlwZSkKKworICAgIGRlZiBfX2NvbnRhaW5zX18oY2xzLCBtZW1iZXIpOgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShtZW1iZXIsIGNscykgYW5kIG1lbWJlci5uYW1lIGluIGNscy5fbWVtYmVyX21hcF8KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfX21lbWJlcnNfXyhjbHMpOgorICAgICAgICAiIiJSZXR1cm5zIGEgbWFwcGluZyBvZiBtZW1iZXIgbmFtZS0+dmFsdWUuCisKKyAgICAgICAgVGhpcyBtYXBwaW5nIGxpc3RzIGFsbCBlbnVtIG1lbWJlcnMsIGluY2x1ZGluZyBhbGlhc2VzLiBOb3RlIHRoYXQgdGhpcworICAgICAgICBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBpbnRlcm5hbCBtYXBwaW5nLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTWFwcGluZ1Byb3h5VHlwZShjbHMuX21lbWJlcl9tYXBfKQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKGNscywgbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZW51bSBtZW1iZXIgbWF0Y2hpbmcgYG5hbWVgCisKKyAgICAgICAgV2UgdXNlIF9fZ2V0YXR0cl9fIGluc3RlYWQgb2YgZGVzY3JpcHRvcnMgb3IgaW5zZXJ0aW5nIGludG8gdGhlIGVudW0KKyAgICAgICAgY2xhc3MnIF9fZGljdF9fIGluIG9yZGVyIHRvIHN1cHBvcnQgYG5hbWVgIGFuZCBgdmFsdWVgIGJlaW5nIGJvdGgKKyAgICAgICAgcHJvcGVydGllcyBmb3IgZW51bSBtZW1iZXJzICh3aGljaCBsaXZlIGluIHRoZSBjbGFzcycgX19kaWN0X18pIGFuZAorICAgICAgICBlbnVtIG1lbWJlcnMgdGhlbXNlbHZlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgX2lzX2R1bmRlcihuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBjbHMuX21lbWJlcl9tYXBfW25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpIGZyb20gTm9uZQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKGNscywgbmFtZSk6CisgICAgICAgIHJldHVybiBjbHMuX21lbWJlcl9tYXBfW25hbWVdCisKKyAgICBkZWYgX19pdGVyX18oY2xzKToKKyAgICAgICAgcmV0dXJuIChjbHMuX21lbWJlcl9tYXBfW25hbWVdIGZvciBuYW1lIGluIGNscy5fbWVtYmVyX25hbWVzXykKKworICAgIGRlZiBfX2xlbl9fKGNscyk6CisgICAgICAgIHJldHVybiBsZW4oY2xzLl9tZW1iZXJfbmFtZXNfKQorCisgICAgZGVmIF9fcmVwcl9fKGNscyk6CisgICAgICAgIHJldHVybiAiPGVudW0gJXI+IiAlIGNscy5fX25hbWVfXworCisgICAgZGVmIF9jcmVhdGVfKGNscywgY2xhc3NfbmFtZSwgbmFtZXM9Tm9uZSwgKiwgbW9kdWxlPU5vbmUsIHR5cGU9Tm9uZSk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgRW51bSBjbGFzcy4KKworICAgICAgICBgbmFtZXNgIGNhbiBiZToKKworICAgICAgICAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgbWVtYmVyIG5hbWVzLCBzZXBhcmF0ZWQgZWl0aGVyIHdpdGggc3BhY2VzIG9yCisgICAgICAgICAgY29tbWFzLiAgVmFsdWVzIGFyZSBhdXRvLW51bWJlcmVkIGZyb20gMS4KKyAgICAgICAgKiBBbiBpdGVyYWJsZSBvZiBtZW1iZXIgbmFtZXMuICBWYWx1ZXMgYXJlIGF1dG8tbnVtYmVyZWQgZnJvbSAxLgorICAgICAgICAqIEFuIGl0ZXJhYmxlIG9mIChtZW1iZXIgbmFtZSwgdmFsdWUpIHBhaXJzLgorICAgICAgICAqIEEgbWFwcGluZyBvZiBtZW1iZXIgbmFtZSAtPiB2YWx1ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgbWV0YWNscyA9IGNscy5fX2NsYXNzX18KKyAgICAgICAgYmFzZXMgPSAoY2xzLCApIGlmIHR5cGUgaXMgTm9uZSBlbHNlICh0eXBlLCBjbHMpCisgICAgICAgIGNsYXNzZGljdCA9IG1ldGFjbHMuX19wcmVwYXJlX18oY2xhc3NfbmFtZSwgYmFzZXMpCisKKyAgICAgICAgIyBzcGVjaWFsIHByb2Nlc3NpbmcgbmVlZGVkIGZvciBuYW1lcz8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKKyAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQorICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCAodHVwbGUsIGxpc3QpKSBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKKyAgICAgICAgICAgIG5hbWVzID0gWyhlLCBpKSBmb3IgKGksIGUpIGluIGVudW1lcmF0ZShuYW1lcywgMSldCisKKyAgICAgICAgIyBIZXJlLCBuYW1lcyBpcyBlaXRoZXIgYW4gaXRlcmFibGUgb2YgKG5hbWUsIHZhbHVlKSBvciBhIG1hcHBpbmcuCisgICAgICAgIGZvciBpdGVtIGluIG5hbWVzOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCBzdHIpOgorICAgICAgICAgICAgICAgIG1lbWJlcl9uYW1lLCBtZW1iZXJfdmFsdWUgPSBpdGVtLCBuYW1lc1tpdGVtXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtZW1iZXJfbmFtZSwgbWVtYmVyX3ZhbHVlID0gaXRlbQorICAgICAgICAgICAgY2xhc3NkaWN0W21lbWJlcl9uYW1lXSA9IG1lbWJlcl92YWx1ZQorICAgICAgICBlbnVtX2NsYXNzID0gbWV0YWNscy5fX25ld19fKG1ldGFjbHMsIGNsYXNzX25hbWUsIGJhc2VzLCBjbGFzc2RpY3QpCisKKyAgICAgICAgIyBUT0RPOiByZXBsYWNlIHRoZSBmcmFtZSBoYWNrIGlmIGEgYmxlc3NlZCB3YXkgdG8ga25vdyB0aGUgY2FsbGluZworICAgICAgICAjIG1vZHVsZSBpcyBldmVyIGRldmVsb3BlZAorICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBzeXMuX2dldGZyYW1lKDIpLmZfZ2xvYmFsc1snX19uYW1lX18nXQorICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgICAgICBfbWFrZV9jbGFzc191bnBpY2tsYWJsZShlbnVtX2NsYXNzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW51bV9jbGFzcy5fX21vZHVsZV9fID0gbW9kdWxlCisKKyAgICAgICAgcmV0dXJuIGVudW1fY2xhc3MKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dldF9taXhpbnNfKGJhc2VzKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgdHlwZSBmb3IgY3JlYXRpbmcgZW51bSBtZW1iZXJzLCBhbmQgdGhlIGZpcnN0IGluaGVyaXRlZAorICAgICAgICBlbnVtIGNsYXNzLgorCisgICAgICAgIGJhc2VzOiB0aGUgdHVwbGUgb2YgYmFzZXMgdGhhdCB3YXMgZ2l2ZW4gdG8gX19uZXdfXworCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgYmFzZXM6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0LCBFbnVtCisKKyAgICAgICAgIyBkb3VibGUgY2hlY2sgdGhhdCB3ZSBhcmUgbm90IHN1YmNsYXNzaW5nIGEgY2xhc3Mgd2l0aCBleGlzdGluZworICAgICAgICAjIGVudW1lcmF0aW9uIG1lbWJlcnM7IHdoaWxlIHdlJ3JlIGF0IGl0LCBzZWUgaWYgYW55IG90aGVyIGRhdGEKKyAgICAgICAgIyB0eXBlIGhhcyBiZWVuIG1peGVkIGluIHNvIHdlIGNhbiB1c2UgdGhlIGNvcnJlY3QgX19uZXdfXworICAgICAgICBtZW1iZXJfdHlwZSA9IGZpcnN0X2VudW0gPSBOb25lCisgICAgICAgIGZvciBiYXNlIGluIGJhc2VzOgorICAgICAgICAgICAgaWYgIChiYXNlIGlzIG5vdCBFbnVtIGFuZAorICAgICAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKGJhc2UsIEVudW0pIGFuZAorICAgICAgICAgICAgICAgICAgICBiYXNlLl9tZW1iZXJfbmFtZXNfKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBleHRlbmQgZW51bWVyYXRpb25zIikKKyAgICAgICAgIyBiYXNlIGlzIG5vdyB0aGUgbGFzdCBiYXNlIGluIGJhc2VzCisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGJhc2UsIEVudW0pOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuZXcgZW51bWVyYXRpb25zIG11c3QgYmUgY3JlYXRlZCBhcyAiCisgICAgICAgICAgICAgICAgICAgICJgQ2xhc3NOYW1lKFttaXhpbl90eXBlLF0gZW51bV90eXBlKWAiKQorCisgICAgICAgICMgZ2V0IGNvcnJlY3QgbWl4LWluIHR5cGUgKGVpdGhlciBtaXgtaW4gdHlwZSBvZiBFbnVtIHN1YmNsYXNzLCBvcgorICAgICAgICAjIGZpcnN0IGJhc2UgaWYgbGFzdCBiYXNlIGlzIEVudW0pCisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGJhc2VzWzBdLCBFbnVtKToKKyAgICAgICAgICAgIG1lbWJlcl90eXBlID0gYmFzZXNbMF0gICAgICMgZmlyc3QgZGF0YSB0eXBlCisgICAgICAgICAgICBmaXJzdF9lbnVtID0gYmFzZXNbLTFdICAjIGVudW0gdHlwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIGJhc2UgaW4gYmFzZXNbMF0uX19tcm9fXzoKKyAgICAgICAgICAgICAgICAjIG1vc3QgY29tbW9uOiAoSW50RW51bSwgaW50LCBFbnVtLCBvYmplY3QpCisgICAgICAgICAgICAgICAgIyBwb3NzaWJsZTogICAgKDxFbnVtICdBdXRvSW50RW51bSc+LCA8RW51bSAnSW50RW51bSc+LAorICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICA8Y2xhc3MgJ2ludCc+LCA8RW51bSAnRW51bSc+LAorICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICA8Y2xhc3MgJ29iamVjdCc+KQorICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoYmFzZSwgRW51bSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGZpcnN0X2VudW0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2VudW0gPSBiYXNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbWVtYmVyX3R5cGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcl90eXBlID0gYmFzZQorCisgICAgICAgIHJldHVybiBtZW1iZXJfdHlwZSwgZmlyc3RfZW51bQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZmluZF9uZXdfKGNsYXNzZGljdCwgbWVtYmVyX3R5cGUsIGZpcnN0X2VudW0pOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBfX25ld19fIHRvIGJlIHVzZWQgZm9yIGNyZWF0aW5nIHRoZSBlbnVtIG1lbWJlcnMuCisKKyAgICAgICAgY2xhc3NkaWN0OiB0aGUgY2xhc3MgZGljdGlvbmFyeSBnaXZlbiB0byBfX25ld19fCisgICAgICAgIG1lbWJlcl90eXBlOiB0aGUgZGF0YSB0eXBlIHdob3NlIF9fbmV3X18gd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQKKyAgICAgICAgZmlyc3RfZW51bTogZW51bWVyYXRpb24gdG8gY2hlY2sgZm9yIGFuIG92ZXJyaWRpbmcgX19uZXdfXworCisgICAgICAgICIiIgorICAgICAgICAjIG5vdyBmaW5kIHRoZSBjb3JyZWN0IF9fbmV3X18sIGNoZWNraW5nIHRvIHNlZSBvZiBvbmUgd2FzIGRlZmluZWQKKyAgICAgICAgIyBieSB0aGUgdXNlcjsgYWxzbyBjaGVjayBlYXJsaWVyIGVudW0gY2xhc3NlcyBpbiBjYXNlIGEgX19uZXdfXyB3YXMKKyAgICAgICAgIyBzYXZlZCBhcyBfX25ld19tZW1iZXJfXworICAgICAgICBfX25ld19fID0gY2xhc3NkaWN0LmdldCgnX19uZXdfXycsIE5vbmUpCisKKyAgICAgICAgIyBzaG91bGQgX19uZXdfXyBiZSBzYXZlZCBhcyBfX25ld19tZW1iZXJfXyBsYXRlcj8KKyAgICAgICAgc2F2ZV9uZXcgPSBfX25ld19fIGlzIG5vdCBOb25lCisKKyAgICAgICAgaWYgX19uZXdfXyBpcyBOb25lOgorICAgICAgICAgICAgIyBjaGVjayBhbGwgcG9zc2libGVzIGZvciBfX25ld19tZW1iZXJfXyBiZWZvcmUgZmFsbGluZyBiYWNrIHRvCisgICAgICAgICAgICAjIF9fbmV3X18KKyAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX25ld19tZW1iZXJfXycsICdfX25ld19fJyk6CisgICAgICAgICAgICAgICAgZm9yIHBvc3NpYmxlIGluIChtZW1iZXJfdHlwZSwgZmlyc3RfZW51bSk6CisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IGdldGF0dHIocG9zc2libGUsIG1ldGhvZCwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGFyZ2V0IG5vdCBpbiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLl9fbmV3X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fbmV3X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bS5fX25ld19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06CisgICAgICAgICAgICAgICAgICAgICAgICBfX25ld19fID0gdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIF9fbmV3X18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9fbmV3X18gPSBvYmplY3QuX19uZXdfXworCisgICAgICAgICMgaWYgYSBub24tb2JqZWN0Ll9fbmV3X18gaXMgdXNlZCB0aGVuIHdoYXRldmVyIHZhbHVlL3R1cGxlIHdhcworICAgICAgICAjIGFzc2lnbmVkIHRvIHRoZSBlbnVtIG1lbWJlciBuYW1lIHdpbGwgYmUgcGFzc2VkIHRvIF9fbmV3X18gYW5kIHRvIHRoZQorICAgICAgICAjIG5ldyBlbnVtIG1lbWJlcidzIF9faW5pdF9fCisgICAgICAgIGlmIF9fbmV3X18gaXMgb2JqZWN0Ll9fbmV3X186CisgICAgICAgICAgICB1c2VfYXJncyA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1c2VfYXJncyA9IFRydWUKKworICAgICAgICByZXR1cm4gX19uZXdfXywgc2F2ZV9uZXcsIHVzZV9hcmdzCisKKworY2xhc3MgRW51bShtZXRhY2xhc3M9RW51bU1ldGEpOgorICAgICIiIkdlbmVyaWMgZW51bWVyYXRpb24uCisKKyAgICBEZXJpdmUgZnJvbSB0aGlzIGNsYXNzIHRvIGRlZmluZSBuZXcgZW51bWVyYXRpb25zLgorCisgICAgIiIiCisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSk6CisgICAgICAgICMgYWxsIGVudW0gaW5zdGFuY2VzIGFyZSBhY3R1YWxseSBjcmVhdGVkIGR1cmluZyBjbGFzcyBjb25zdHJ1Y3Rpb24KKyAgICAgICAgIyB3aXRob3V0IGNhbGxpbmcgdGhpcyBtZXRob2Q7IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWV0YWNsYXNzJworICAgICAgICAjIF9fY2FsbF9fIChpLmUuIENvbG9yKDMpICksIGFuZCBieSBwaWNrbGUKKyAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgY2xzOgorICAgICAgICAgICAgIyBGb3IgbG9va3VwcyBsaWtlIENvbG9yKENvbG9yLnJlZCkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICAjIGJ5LXZhbHVlIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBlbnVtIG1lbWJlcgorICAgICAgICAjIHNlZSBpZiBpdCdzIGluIHRoZSByZXZlcnNlIG1hcHBpbmcgKGZvciBoYXNoYWJsZSB2YWx1ZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHZhbHVlIGluIGNscy5fdmFsdWUybWVtYmVyX21hcF86CisgICAgICAgICAgICAgICAgcmV0dXJuIGNscy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIG5vdCB0aGVyZSwgbm93IGRvIGxvbmcgc2VhcmNoIC0tIE8obikgYmVoYXZpb3IKKyAgICAgICAgICAgIGZvciBtZW1iZXIgaW4gY2xzLl9tZW1iZXJfbWFwXy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBpZiBtZW1iZXIudmFsdWUgPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1iZXIKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjwlcy4lczogJXI+IiAlICgKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbmFtZV8sIHNlbGYuX3ZhbHVlXykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzLiVzIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbmFtZV8pCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgdHlwZShvdGhlcikgaXMgc2VsZi5fX2NsYXNzX186CisgICAgICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl92YWx1ZV8sICkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fbmFtZV8pCisKKyAgICAjIF9Sb3V0ZUNsYXNzQXR0cmlidXRlVG9HZXRhdHRyIGlzIHVzZWQgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGBuYW1lYAorICAgICMgYW5kIGB2YWx1ZWAgcHJvcGVydGllcyBvZiBlbnVtIG1lbWJlcnMgd2hpbGUga2VlcGluZyBzb21lIG1lYXN1cmUgb2YKKyAgICAjIHByb3RlY3Rpb24gZnJvbSBtb2RpZmljYXRpb24sIHdoaWxlIHN0aWxsIGFsbG93aW5nIGZvciBhbiBlbnVtZXJhdGlvbgorICAgICMgdG8gaGF2ZSBtZW1iZXJzIG5hbWVkIGBuYW1lYCBhbmQgYHZhbHVlYC4gIFRoaXMgd29ya3MgYmVjYXVzZSBlbnVtZXJhdGlvbgorICAgICMgbWVtYmVycyBhcmUgbm90IHNldCBkaXJlY3RseSBvbiB0aGUgZW51bSBjbGFzcyAtLSBfX2dldGF0dHJfXyBpcworICAgICMgdXNlZCB0byBsb29rIHRoZW0gdXAuCisKKyAgICBAX1JvdXRlQ2xhc3NBdHRyaWJ1dGVUb0dldGF0dHIKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWVfCisKKyAgICBAX1JvdXRlQ2xhc3NBdHRyaWJ1dGVUb0dldGF0dHIKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZV8KKworCitjbGFzcyBJbnRFbnVtKGludCwgRW51bSk6CisgICAgIiIiRW51bSB3aGVyZSBtZW1iZXJzIGFyZSBhbHNvIChhbmQgbXVzdCBiZSkgaW50cyIiIgorCisKK2RlZiB1bmlxdWUoZW51bWVyYXRpb24pOgorICAgICIiIkNsYXNzIGRlY29yYXRvciBmb3IgZW51bWVyYXRpb25zIGVuc3VyaW5nIHVuaXF1ZSBtZW1iZXIgdmFsdWVzLiIiIgorICAgIGR1cGxpY2F0ZXMgPSBbXQorICAgIGZvciBuYW1lLCBtZW1iZXIgaW4gZW51bWVyYXRpb24uX19tZW1iZXJzX18uaXRlbXMoKToKKyAgICAgICAgaWYgbmFtZSAhPSBtZW1iZXIubmFtZToKKyAgICAgICAgICAgIGR1cGxpY2F0ZXMuYXBwZW5kKChuYW1lLCBtZW1iZXIubmFtZSkpCisgICAgaWYgZHVwbGljYXRlczoKKyAgICAgICAgYWxpYXNfZGV0YWlscyA9ICcsICcuam9pbigKKyAgICAgICAgICAgICAgICBbIiVzIC0+ICVzIiAlIChhbGlhcywgbmFtZSkgZm9yIChhbGlhcywgbmFtZSkgaW4gZHVwbGljYXRlc10pCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2R1cGxpY2F0ZSB2YWx1ZXMgZm91bmQgaW4gJXI6ICVzJyAlCisgICAgICAgICAgICAgICAgKGVudW1lcmF0aW9uLCBhbGlhc19kZXRhaWxzKSkKKyAgICByZXR1cm4gZW51bWVyYXRpb24KZGlmZiAtLWdpdCBhL0xpYi9maWxlY21wLnB5IGIvTGliL2ZpbGVjbXAucHkKaW5kZXggZjVjZWExZC4uMzI4NTI4OCAxMDA2NDQKLS0tIGEvTGliL2ZpbGVjbXAucHkKKysrIGIvTGliL2ZpbGVjbXAucHkKQEAgLTYsNiArNiw3IEBACiBGdW5jdGlvbnM6CiAgICAgY21wKGYxLCBmMiwgc2hhbGxvdz1UcnVlKSAtPiBpbnQKICAgICBjbXBmaWxlcyhhLCBiLCBjb21tb24pIC0+IChbXSwgW10sIFtdKQorICAgIGNsZWFyX2NhY2hlKCkKIAogIiIiCiAKQEAgLTEzLDExICsxNCwxOCBAQAogaW1wb3J0IHN0YXQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBmaWx0ZXJmYWxzZQogCi1fX2FsbF9fID0gWyJjbXAiLCAiZGlyY21wIiwgImNtcGZpbGVzIl0KK19fYWxsX18gPSBbJ2NsZWFyX2NhY2hlJywgJ2NtcCcsICdkaXJjbXAnLCAnY21wZmlsZXMnLCAnREVGQVVMVF9JR05PUkVTJ10KIAogX2NhY2hlID0ge30KIEJVRlNJWkUgPSA4KjEwMjQKIAorREVGQVVMVF9JR05PUkVTID0gWworICAgICdSQ1MnLCAnQ1ZTJywgJ3RhZ3MnLCAnLmdpdCcsICcuaGcnLCAnLmJ6cicsICdfZGFyY3MnLCAnX19weWNhY2hlX18nXQorCitkZWYgY2xlYXJfY2FjaGUoKToKKyAgICAiIiJDbGVhciB0aGUgZmlsZWNtcCBjYWNoZS4iIiIKKyAgICBfY2FjaGUuY2xlYXIoKQorCiBkZWYgY21wKGYxLCBmMiwgc2hhbGxvdz1UcnVlKToKICAgICAiIiJDb21wYXJlIHR3byBmaWxlcy4KIApAQCAtMzUsNyArNDMsOCBAQAogICAgIFRydWUgaWYgdGhlIGZpbGVzIGFyZSB0aGUgc2FtZSwgRmFsc2Ugb3RoZXJ3aXNlLgogCiAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIGEgY2FjaGUgZm9yIHBhc3QgY29tcGFyaXNvbnMgYW5kIHRoZSByZXN1bHRzLAotICAgIHdpdGggYSBjYWNoZSBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIHJlbHlpbmcgb24gc3RhbGUgc2lnbmF0dXJlcy4KKyAgICB3aXRoIGEgY2FjaGUgaW52YWxpZGF0aW9uIG1lY2hhbmlzbSByZWx5aW5nIG9uIHN0YWxlIHNpZ25hdHVyZXMKKyAgICBvciBieSBleHBsaWNpdGx5IGNhbGxpbmcgY2xlYXJfY2FjaGUoKS4KIAogICAgICIiIgogCkBAIC01Miw3ICs2MSw3IEBACiAgICAgaWYgb3V0Y29tZSBpcyBOb25lOgogICAgICAgICBvdXRjb21lID0gX2RvX2NtcChmMSwgZjIpCiAgICAgICAgIGlmIGxlbihfY2FjaGUpID4gMTAwOiAgICAgICMgbGltaXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgY2FjaGUKLSAgICAgICAgICAgIF9jYWNoZS5jbGVhcigpCisgICAgICAgICAgICBjbGVhcl9jYWNoZSgpCiAgICAgICAgIF9jYWNoZVtmMSwgZjIsIHMxLCBzMl0gPSBvdXRjb21lCiAgICAgcmV0dXJuIG91dGNvbWUKIApAQCAtODAsNyArODksNyBAQAogICAgIGRpcmNtcChhLCBiLCBpZ25vcmU9Tm9uZSwgaGlkZT1Ob25lKQogICAgICAgQSBhbmQgQiBhcmUgZGlyZWN0b3JpZXMuCiAgICAgICBJR05PUkUgaXMgYSBsaXN0IG9mIG5hbWVzIHRvIGlnbm9yZSwKLSAgICAgICAgZGVmYXVsdHMgdG8gWydSQ1MnLCAnQ1ZTJywgJ3RhZ3MnXS4KKyAgICAgICAgZGVmYXVsdHMgdG8gREVGQVVMVF9JR05PUkVTLgogICAgICAgSElERSBpcyBhIGxpc3Qgb2YgbmFtZXMgdG8gaGlkZSwKICAgICAgICAgZGVmYXVsdHMgdG8gW29zLmN1cmRpciwgb3MucGFyZGlyXS4KIApAQCAtMTE2LDcgKzEyNSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmhpZGUgPSBoaWRlCiAgICAgICAgIGlmIGlnbm9yZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5pZ25vcmUgPSBbJ1JDUycsICdDVlMnLCAndGFncyddICMgTmFtZXMgaWdub3JlZCBpbiBjb21wYXJpc29uCisgICAgICAgICAgICBzZWxmLmlnbm9yZSA9IERFRkFVTFRfSUdOT1JFUwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5pZ25vcmUgPSBpZ25vcmUKIApAQCAtMTQ3LDEyICsxNTYsMTIgQEAKICAgICAgICAgICAgIG9rID0gMQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGFfc3RhdCA9IG9zLnN0YXQoYV9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIHdoeToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgICAgICAjIHByaW50KCdDYW5cJ3Qgc3RhdCcsIGFfcGF0aCwgJzonLCB3aHkuYXJnc1sxXSkKICAgICAgICAgICAgICAgICBvayA9IDAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBiX3N0YXQgPSBvcy5zdGF0KGJfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyB3aHk6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICAgICAgIyBwcmludCgnQ2FuXCd0IHN0YXQnLCBiX3BhdGgsICc6Jywgd2h5LmFyZ3NbMV0pCiAgICAgICAgICAgICAgICAgb2sgPSAwCiAKQEAgLTI2OCw3ICsyNzcsNyBAQAogZGVmIF9jbXAoYSwgYiwgc2gsIGFicz1hYnMsIGNtcD1jbXApOgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIG5vdCBhYnMoY21wKGEsIGIsIHNoKSkKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiAyCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZpbGVpbnB1dC5weSBiL0xpYi9maWxlaW5wdXQucHkKaW5kZXggODc5YTBmZC4uMzIxNTE1NCAxMDA2NDQKLS0tIGEvTGliL2ZpbGVpbnB1dC5weQorKysgYi9MaWIvZmlsZWlucHV0LnB5CkBAIC0zMCw3ICszMCw3IEBACiAKIEFsbCBmaWxlcyBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSBieSBkZWZhdWx0LCB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgYnkKIHNldHRpbmcgdGhlIG1vZGUgcGFyYW1ldGVyIHRvIGlucHV0KCkgb3IgRmlsZUlucHV0Ll9faW5pdF9fKCkuCi1JZiBhbiBJL08gZXJyb3Igb2NjdXJzIGR1cmluZyBvcGVuaW5nIG9yIHJlYWRpbmcgYSBmaWxlLCB0aGUgSU9FcnJvcgorSWYgYW4gSS9PIGVycm9yIG9jY3VycyBkdXJpbmcgb3BlbmluZyBvciByZWFkaW5nIGEgZmlsZSwgdGhlIE9TRXJyb3IKIGV4Y2VwdGlvbiBpcyByYWlzZWQuCiAKIElmIHN5cy5zdGRpbiBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlLCB0aGUgc2Vjb25kIGFuZCBmdXJ0aGVyIHVzZSB3aWxsCkBAIC0zMjIsOSArMzIyLDExIEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wbGFjZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmFja3VwZmlsZW5hbWUgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlbmFtZSArIChzZWxmLl9iYWNrdXAgb3IgIi5iYWsiKSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5OiBvcy51bmxpbmsoc2VsZi5fYmFja3VwZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjogcGFzcwotICAgICAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGZldyBsaW5lcyBtYXkgcmFpc2UgSU9FcnJvcgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fYmFja3VwZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGZldyBsaW5lcyBtYXkgcmFpc2UgT1NFcnJvcgogICAgICAgICAgICAgICAgICAgICBvcy5yZW5hbWUoc2VsZi5fZmlsZW5hbWUsIHNlbGYuX2JhY2t1cGZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlID0gb3BlbihzZWxmLl9iYWNrdXBmaWxlbmFtZSwgc2VsZi5fbW9kZSkKICAgICAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMzQ2LDcgKzM0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhdmVzdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLl9vdXRwdXQKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF5IHJhaXNlIElPRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBPU0Vycm9yCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wZW5ob29rOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZSA9IHNlbGYuX29wZW5ob29rKHNlbGYuX2ZpbGVuYW1lLCBzZWxmLl9tb2RlKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2ZyYWN0aW9ucy5weSBiL0xpYi9mcmFjdGlvbnMucHkKaW5kZXggOGJlNTJkMi4uNzllODNmZiAxMDA2NDQKLS0tIGEvTGliL2ZyYWN0aW9ucy5weQorKysgYi9MaWIvZnJhY3Rpb25zLnB5CkBAIC0xODIsOCArMTgyLDEwIEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZiwgZmxvYXQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcy5mcm9tX2Zsb2F0KCkgb25seSB0YWtlcyBmbG9hdHMsIG5vdCAlciAoJXMpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNscy5fX25hbWVfXywgZiwgdHlwZShmKS5fX25hbWVfXykpCi0gICAgICAgIGlmIG1hdGguaXNuYW4oZikgb3IgbWF0aC5pc2luZihmKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQorICAgICAgICBpZiBtYXRoLmlzbmFuKGYpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQorICAgICAgICBpZiBtYXRoLmlzaW5mKGYpOgorICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQogICAgICAgICByZXR1cm4gY2xzKCpmLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTk2LDkgKzE5OCwxMSBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICIlcy5mcm9tX2RlY2ltYWwoKSBvbmx5IHRha2VzIERlY2ltYWxzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGRlYywgdHlwZShkZWMpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbm90IGRlYy5pc19maW5pdGUoKToKLSAgICAgICAgICAgICMgQ2F0Y2hlcyBpbmZpbml0aWVzIGFuZCBuYW5zLgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCAlcyB0byAlcy4iICUgKGRlYywgY2xzLl9fbmFtZV9fKSkKKyAgICAgICAgaWYgZGVjLmlzX2luZmluaXRlKCk6CisgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKAorICAgICAgICAgICAgICAgICJDYW5ub3QgY29udmVydCAlcyB0byAlcy4iICUgKGRlYywgY2xzLl9fbmFtZV9fKSkKKyAgICAgICAgaWYgZGVjLmlzX25hbigpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCiAgICAgICAgIHNpZ24sIGRpZ2l0cywgZXhwID0gZGVjLmFzX3R1cGxlKCkKICAgICAgICAgZGlnaXRzID0gaW50KCcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkpCiAgICAgICAgIGlmIHNpZ246CmRpZmYgLS1naXQgYS9MaWIvZnRwbGliLnB5IGIvTGliL2Z0cGxpYi5weQppbmRleCA3NDFlNjQ3Li5mY2Q0YjE0IDEwMDY0NAotLS0gYS9MaWIvZnRwbGliLnB5CisrKyBiL0xpYi9mdHBsaWIucHkKQEAgLTM5LDkgKzM5LDEwIEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSBzb2NrZXQgaW1wb3J0IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUCiAKLV9fYWxsX18gPSBbIkZUUCIsIk5ldHJjIl0KK19fYWxsX18gPSBbIkZUUCIsICJOZXRyYyJdCiAKICMgTWFnaWMgbnVtYmVyIGZyb20gPHNvY2tldC5oPgogTVNHX09PQiA9IDB4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJvY2VzcyBkYXRhIG91dCBvZiBiYW5kCkBAIC02MSw3ICs2Miw3IEBACiAKICMgQWxsIGV4Y2VwdGlvbnMgKGhvcGVmdWxseSkgdGhhdCBtYXkgYmUgcmFpc2VkIGhlcmUgYW5kIHRoYXQgYXJlbid0CiAjIChhbHdheXMpIHByb2dyYW1taW5nIGVycm9ycyBvbiBvdXIgc2lkZQotYWxsX2Vycm9ycyA9IChFcnJvciwgSU9FcnJvciwgRU9GRXJyb3IpCithbGxfZXJyb3JzID0gKEVycm9yLCBPU0Vycm9yLCBFT0ZFcnJvcikKIAogCiAjIExpbmUgdGVybWluYXRvcnMgKHdlIGFsd2F5cyBvdXRwdXQgQ1JMRiwgYnV0IGFjY2VwdCBhbnkgb2YgQ1JMRiwgQ1IsIExGKQpAQCAtMTIzLDcgKzEyNCw3IEBACiAgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnF1aXQoKQotICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgpAQCAtMTMzLDYgKzEzNCw3IEBACiAgICAgICAgICcnJ0Nvbm5lY3QgdG8gaG9zdC4gIEFyZ3VtZW50cyBhcmU6CiAgICAgICAgICAtIGhvc3Q6IGhvc3RuYW1lIHRvIGNvbm5lY3QgdG8gKHN0cmluZywgZGVmYXVsdCBwcmV2aW91cyBob3N0KQogICAgICAgICAgLSBwb3J0OiBwb3J0IHRvIGNvbm5lY3QgdG8gKGludGVnZXIsIGRlZmF1bHQgcHJldmlvdXMgcG9ydCkKKyAgICAgICAgIC0gdGltZW91dDogdGhlIHRpbWVvdXQgdG8gc2V0IGFnYWluc3QgdGhlIGZ0cCBzb2NrZXQocykKICAgICAgICAgIC0gc291cmNlX2FkZHJlc3M6IGEgMi10dXBsZSAoaG9zdCwgcG9ydCkgZm9yIHRoZSBzb2NrZXQgdG8gYmluZAogICAgICAgICAgICB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuCiAgICAgICAgICcnJwpAQCAtMTgzLDcgKzE4NSw4IEBACiAgICAgIyBJbnRlcm5hbDogc2VuZCBvbmUgbGluZSB0byB0aGUgc2VydmVyLCBhcHBlbmRpbmcgQ1JMRgogICAgIGRlZiBwdXRsaW5lKHNlbGYsIGxpbmUpOgogICAgICAgICBsaW5lID0gbGluZSArIENSTEYKLSAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAxOiBwcmludCgnKnB1dConLCBzZWxmLnNhbml0aXplKGxpbmUpKQorICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDE6CisgICAgICAgICAgICBwcmludCgnKnB1dConLCBzZWxmLnNhbml0aXplKGxpbmUpKQogICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChsaW5lLmVuY29kZShzZWxmLmVuY29kaW5nKSkKIAogICAgICMgSW50ZXJuYWw6IHNlbmQgb25lIGNvbW1hbmQgdG8gdGhlIHNlcnZlciAodGhyb3VnaCBwdXRsaW5lKCkpCkBAIC0xOTcsOSArMjAwLDEyIEBACiAgICAgICAgIGxpbmUgPSBzZWxmLmZpbGUucmVhZGxpbmUoKQogICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDE6CiAgICAgICAgICAgICBwcmludCgnKmdldConLCBzZWxmLnNhbml0aXplKGxpbmUpKQotICAgICAgICBpZiBub3QgbGluZTogcmFpc2UgRU9GRXJyb3IKLSAgICAgICAgaWYgbGluZVstMjpdID09IENSTEY6IGxpbmUgPSBsaW5lWzotMl0KLSAgICAgICAgZWxpZiBsaW5lWy0xOl0gaW4gQ1JMRjogbGluZSA9IGxpbmVbOi0xXQorICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCisgICAgICAgIGlmIGxpbmVbLTI6XSA9PSBDUkxGOgorICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQorICAgICAgICBlbGlmIGxpbmVbLTE6XSBpbiBDUkxGOgorICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQogICAgICAgICByZXR1cm4gbGluZQogCiAgICAgIyBJbnRlcm5hbDogZ2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLCB3aGljaCBtYXkgcG9zc2libHkKQEAgLTIyMiw3ICsyMjgsOCBAQAogICAgICMgUmFpc2UgdmFyaW91cyBlcnJvcnMgaWYgdGhlIHJlc3BvbnNlIGluZGljYXRlcyBhbiBlcnJvcgogICAgIGRlZiBnZXRyZXNwKHNlbGYpOgogICAgICAgICByZXNwID0gc2VsZi5nZXRtdWx0aWxpbmUoKQotICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZzogcHJpbnQoJypyZXNwKicsIHNlbGYuc2FuaXRpemUocmVzcCkpCisgICAgICAgIGlmIHNlbGYuZGVidWdnaW5nOgorICAgICAgICAgICAgcHJpbnQoJypyZXNwKicsIHNlbGYuc2FuaXRpemUocmVzcCkpCiAgICAgICAgIHNlbGYubGFzdHJlc3AgPSByZXNwWzozXQogICAgICAgICBjID0gcmVzcFs6MV0KICAgICAgICAgaWYgYyBpbiB7JzEnLCAnMicsICczJ306CkBAIC0yNDYsNyArMjUzLDggQEAKICAgICAgICAgSVAgYW5kIFN5bmNoOyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHdpdGggdGhlIHNlcnZlcnMgSSd2ZQogICAgICAgICB0cmllZC4gIEluc3RlYWQsIGp1c3Qgc2VuZCB0aGUgQUJPUiBjb21tYW5kIGFzIE9PQiBkYXRhLicnJwogICAgICAgICBsaW5lID0gYidBQk9SJyArIEJfQ1JMRgotICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDE6IHByaW50KCcqcHV0IHVyZ2VudConLCBzZWxmLnNhbml0aXplKGxpbmUpKQorICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDE6CisgICAgICAgICAgICBwcmludCgnKnB1dCB1cmdlbnQqJywgc2VsZi5zYW5pdGl6ZShsaW5lKSkKICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwobGluZSwgTVNHX09PQikKICAgICAgICAgcmVzcCA9IHNlbGYuZ2V0bXVsdGlsaW5lKCkKICAgICAgICAgaWYgcmVzcFs6M10gbm90IGluIHsnNDI2JywgJzIyNScsICcyMjYnfToKQEAgLTI5NSw3ICszMDMsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGFmLCBzb2NrdHlwZSwgcHJvdG8pCiAgICAgICAgICAgICAgICAgc29jay5iaW5kKHNhKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBfOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgXzoKICAgICAgICAgICAgICAgICBlcnIgPSBfCiAgICAgICAgICAgICAgICAgaWYgc29jazoKICAgICAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCkBAIC0zMDYsOCArMzE0LDggQEAKICAgICAgICAgICAgIGlmIGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBlcnIKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKCJnZXRhZGRyaW5mbyByZXR1cm5zIGFuIGVtcHR5IGxpc3QiKQotICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKG1zZykKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJnZXRhZGRyaW5mbyByZXR1cm5zIGFuIGVtcHR5IGxpc3QiKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihtc2cpCiAgICAgICAgIHNvY2subGlzdGVuKDEpCiAgICAgICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0gIyBHZXQgcHJvcGVyIHBvcnQKICAgICAgICAgaG9zdCA9IHNlbGYuc29jay5nZXRzb2NrbmFtZSgpWzBdICMgR2V0IHByb3BlciBob3N0CkBAIC0zODcsOSArMzk1LDEyIEBACiAKICAgICBkZWYgbG9naW4oc2VsZiwgdXNlciA9ICcnLCBwYXNzd2QgPSAnJywgYWNjdCA9ICcnKToKICAgICAgICAgJycnTG9naW4sIGRlZmF1bHQgYW5vbnltb3VzLicnJwotICAgICAgICBpZiBub3QgdXNlcjogdXNlciA9ICdhbm9ueW1vdXMnCi0gICAgICAgIGlmIG5vdCBwYXNzd2Q6IHBhc3N3ZCA9ICcnCi0gICAgICAgIGlmIG5vdCBhY2N0OiBhY2N0ID0gJycKKyAgICAgICAgaWYgbm90IHVzZXI6CisgICAgICAgICAgICB1c2VyID0gJ2Fub255bW91cycKKyAgICAgICAgaWYgbm90IHBhc3N3ZDoKKyAgICAgICAgICAgIHBhc3N3ZCA9ICcnCisgICAgICAgIGlmIG5vdCBhY2N0OgorICAgICAgICAgICAgYWNjdCA9ICcnCiAgICAgICAgIGlmIHVzZXIgPT0gJ2Fub255bW91cycgYW5kIHBhc3N3ZCBpbiB7JycsICctJ306CiAgICAgICAgICAgICAjIElmIHRoZXJlIGlzIG5vIGFub255bW91cyBmdHAgcGFzc3dvcmQgc3BlY2lmaWVkCiAgICAgICAgICAgICAjIHRoZW4gd2UnbGwganVzdCB1c2UgYW5vbnltb3VzQApAQCAtNDAwLDggKzQxMSwxMCBAQAogICAgICAgICAgICAgIyAgIGhvc3Qgb3IgY291bnRyeS4KICAgICAgICAgICAgIHBhc3N3ZCA9IHBhc3N3ZCArICdhbm9ueW1vdXNAJwogICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdVU0VSICcgKyB1c2VyKQotICAgICAgICBpZiByZXNwWzBdID09ICczJzogcmVzcCA9IHNlbGYuc2VuZGNtZCgnUEFTUyAnICsgcGFzc3dkKQotICAgICAgICBpZiByZXNwWzBdID09ICczJzogcmVzcCA9IHNlbGYuc2VuZGNtZCgnQUNDVCAnICsgYWNjdCkKKyAgICAgICAgaWYgcmVzcFswXSA9PSAnMyc6CisgICAgICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdQQVNTICcgKyBwYXNzd2QpCisgICAgICAgIGlmIHJlc3BbMF0gPT0gJzMnOgorICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnQUNDVCAnICsgYWNjdCkKICAgICAgICAgaWYgcmVzcFswXSAhPSAnMic6CiAgICAgICAgICAgICByYWlzZSBlcnJvcl9yZXBseShyZXNwKQogICAgICAgICByZXR1cm4gcmVzcApAQCAtNDI3LDYgKzQ0MCw5IEBACiAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YSkKKyAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCisgICAgICAgICAgICBpZiBfU1NMU29ja2V0IGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGNvbm4sIF9TU0xTb2NrZXQpOgorICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgZGVmIHJldHJsaW5lcyhzZWxmLCBjbWQsIGNhbGxiYWNrID0gTm9uZSk6CkBAIC00NDEsMTMgKzQ1NywxNSBAQAogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgIFRoZSByZXNwb25zZSBjb2RlLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgY2FsbGJhY2sgaXMgTm9uZTogY2FsbGJhY2sgPSBwcmludF9saW5lCisgICAgICAgIGlmIGNhbGxiYWNrIGlzIE5vbmU6CisgICAgICAgICAgICBjYWxsYmFjayA9IHByaW50X2xpbmUKICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnVFlQRSBBJykKICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCkgYXMgY29ubiwgXAogICAgICAgICAgICAgICAgICBjb25uLm1ha2VmaWxlKCdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykgYXMgZnA6CiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAyOiBwcmludCgnKnJldHIqJywgcmVwcihsaW5lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCcqcmV0cionLCByZXByKGxpbmUpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGlmIGxpbmVbLTI6XSA9PSBDUkxGOgpAQCAtNDU1LDYgKzQ3Myw5IEBACiAgICAgICAgICAgICAgICAgZWxpZiBsaW5lWy0xOl0gPT0gJ1xuJzoKICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQogICAgICAgICAgICAgICAgIGNhbGxiYWNrKGxpbmUpCisgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgorICAgICAgICAgICAgaWYgX1NTTFNvY2tldCBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShjb25uLCBfU1NMU29ja2V0KToKKyAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCiAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgIGRlZiBzdG9yYmluYXJ5KHNlbGYsIGNtZCwgZnAsIGJsb2Nrc2l6ZT04MTkyLCBjYWxsYmFjaz1Ob25lLCByZXN0PU5vbmUpOgpAQCAtNDc2LDkgKzQ5NywxNCBAQAogICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KSBhcyBjb25uOgogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKGJsb2Nrc2l6ZSkKLSAgICAgICAgICAgICAgICBpZiBub3QgYnVmOiBicmVhaworICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgY29ubi5zZW5kYWxsKGJ1ZikKLSAgICAgICAgICAgICAgICBpZiBjYWxsYmFjazogY2FsbGJhY2soYnVmKQorICAgICAgICAgICAgICAgIGlmIGNhbGxiYWNrOgorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhidWYpCisgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgorICAgICAgICAgICAgaWYgX1NTTFNvY2tldCBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShjb25uLCBfU1NMU29ja2V0KToKKyAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCiAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgIGRlZiBzdG9ybGluZXMoc2VsZiwgY21kLCBmcCwgY2FsbGJhY2s9Tm9uZSk6CkBAIC00OTcsMTIgKzUyMywxNyBAQAogICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kKSBhcyBjb25uOgogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgorICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGlmIGJ1ZlstMjpdICE9IEJfQ1JMRjoKICAgICAgICAgICAgICAgICAgICAgaWYgYnVmWy0xXSBpbiBCX0NSTEY6IGJ1ZiA9IGJ1Zls6LTFdCiAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGJ1ZiArIEJfQ1JMRgogICAgICAgICAgICAgICAgIGNvbm4uc2VuZGFsbChidWYpCi0gICAgICAgICAgICAgICAgaWYgY2FsbGJhY2s6IGNhbGxiYWNrKGJ1ZikKKyAgICAgICAgICAgICAgICBpZiBjYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soYnVmKQorICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKKyAgICAgICAgICAgIGlmIF9TU0xTb2NrZXQgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UoY29ubiwgX1NTTFNvY2tldCk6CisgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQogICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICBkZWYgYWNjdChzZWxmLCBwYXNzd29yZCk6CkBAIC02MzcsOCArNjY4LDEwIEBACiB0cnk6CiAgICAgaW1wb3J0IHNzbAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKKyAgICBfU1NMU29ja2V0ID0gTm9uZQogZWxzZToKKyAgICBfU1NMU29ja2V0ID0gc3NsLlNTTFNvY2tldAorCiAgICAgY2xhc3MgRlRQX1RMUyhGVFApOgogICAgICAgICAnJydBIEZUUCBzdWJjbGFzcyB3aGljaCBhZGRzIFRMUyBzdXBwb3J0IHRvIEZUUCBhcyBkZXNjcmliZWQKICAgICAgICAgaW4gUkZDLTQyMTcuCkBAIC03NTMsNjkgKzc4Niw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c2VsZi5zc2xfdmVyc2lvbikKICAgICAgICAgICAgIHJldHVybiBjb25uLCBzaXplCiAKLSAgICAgICAgZGVmIHJldHJiaW5hcnkoc2VsZiwgY21kLCBjYWxsYmFjaywgYmxvY2tzaXplPTgxOTIsIHJlc3Q9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLnZvaWRjbWQoJ1RZUEUgSScpCi0gICAgICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KSBhcyBjb25uOgotICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBjb25uLnJlY3YoYmxvY2tzaXplKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEpCi0gICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgotICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCi0KLSAgICAgICAgZGVmIHJldHJsaW5lcyhzZWxmLCBjbWQsIGNhbGxiYWNrID0gTm9uZSk6Ci0gICAgICAgICAgICBpZiBjYWxsYmFjayBpcyBOb25lOiBjYWxsYmFjayA9IHByaW50X2xpbmUKLSAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1RZUEUgQScpCi0gICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCi0gICAgICAgICAgICBmcCA9IGNvbm4ubWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQotICAgICAgICAgICAgd2l0aCBmcCwgY29ubjoKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6IHByaW50KCcqcmV0cionLCByZXByKGxpbmUpKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmVbLTI6XSA9PSBDUkxGOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQotICAgICAgICAgICAgICAgICAgICBlbGlmIGxpbmVbLTE6XSA9PSAnXG4nOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhsaW5lKQotICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCi0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKLSAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQotCi0gICAgICAgIGRlZiBzdG9yYmluYXJ5KHNlbGYsIGNtZCwgZnAsIGJsb2Nrc2l6ZT04MTkyLCBjYWxsYmFjaz1Ob25lLCByZXN0PU5vbmUpOgotICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKGJsb2Nrc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgY29ubi5zZW5kYWxsKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgaWYgY2FsbGJhY2s6IGNhbGxiYWNrKGJ1ZikKLSAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKLQotICAgICAgICBkZWYgc3RvcmxpbmVzKHNlbGYsIGNtZCwgZnAsIGNhbGxiYWNrPU5vbmUpOgotICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEEnKQotICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCkgYXMgY29ubjoKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6IGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGlmIGJ1ZlstMjpdICE9IEJfQ1JMRjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1ZlstMV0gaW4gQl9DUkxGOiBidWYgPSBidWZbOi0xXQotICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gYnVmICsgQl9DUkxGCi0gICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZGFsbChidWYpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNhbGxiYWNrOiBjYWxsYmFjayhidWYpCi0gICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgotICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCi0KICAgICAgICAgZGVmIGFib3J0KHNlbGYpOgogICAgICAgICAgICAgIyBvdmVycmlkZGVuIGFzIHdlIGNhbid0IHBhc3MgTVNHX09PQiBmbGFnIHRvIHNlbmRhbGwoKQogICAgICAgICAgICAgbGluZSA9IGInQUJPUicgKyBCX0NSTEYKQEAgLTgyNiw3ICs3OTYsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3AKIAogICAgIF9fYWxsX18uYXBwZW5kKCdGVFBfVExTJykKLSAgICBhbGxfZXJyb3JzID0gKEVycm9yLCBJT0Vycm9yLCBFT0ZFcnJvciwgc3NsLlNTTEVycm9yKQorICAgIGFsbF9lcnJvcnMgPSAoRXJyb3IsIE9TRXJyb3IsIEVPRkVycm9yLCBzc2wuU1NMRXJyb3IpCiAKIAogXzE1MF9yZSA9IE5vbmUKQEAgLTkyMyw3ICs4OTMsOCBAQAogCiBkZWYgZnRwY3Aoc291cmNlLCBzb3VyY2VuYW1lLCB0YXJnZXQsIHRhcmdldG5hbWUgPSAnJywgdHlwZSA9ICdJJyk6CiAgICAgJycnQ29weSBmaWxlIGZyb20gb25lIEZUUC1pbnN0YW5jZSB0byBhbm90aGVyLicnJwotICAgIGlmIG5vdCB0YXJnZXRuYW1lOiB0YXJnZXRuYW1lID0gc291cmNlbmFtZQorICAgIGlmIG5vdCB0YXJnZXRuYW1lOgorICAgICAgICB0YXJnZXRuYW1lID0gc291cmNlbmFtZQogICAgIHR5cGUgPSAnVFlQRSAnICsgdHlwZQogICAgIHNvdXJjZS52b2lkY21kKHR5cGUpCiAgICAgdGFyZ2V0LnZvaWRjbWQodHlwZSkKQEAgLTkzMyw5ICs5MDQsMTEgQEAKICAgICAjIHRyYW5zZmVyIHJlcXVlc3QuCiAgICAgIyBTbzogU1RPUiBiZWZvcmUgUkVUUiwgYmVjYXVzZSBoZXJlIHRoZSB0YXJnZXQgaXMgYSAidXNlciIuCiAgICAgdHJlcGx5ID0gdGFyZ2V0LnNlbmRjbWQoJ1NUT1IgJyArIHRhcmdldG5hbWUpCi0gICAgaWYgdHJlcGx5WzozXSBub3QgaW4geycxMjUnLCAnMTUwJ306IHJhaXNlIGVycm9yX3Byb3RvICAjIFJGQyA5NTkKKyAgICBpZiB0cmVwbHlbOjNdIG5vdCBpbiB7JzEyNScsICcxNTAnfToKKyAgICAgICAgcmFpc2UgZXJyb3JfcHJvdG8gICMgUkZDIDk1OQogICAgIHNyZXBseSA9IHNvdXJjZS5zZW5kY21kKCdSRVRSICcgKyBzb3VyY2VuYW1lKQotICAgIGlmIHNyZXBseVs6M10gbm90IGluIHsnMTI1JywgJzE1MCd9OiByYWlzZSBlcnJvcl9wcm90byAgIyBSRkMgOTU5CisgICAgaWYgc3JlcGx5WzozXSBub3QgaW4geycxMjUnLCAnMTUwJ306CisgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvICAjIFJGQyA5NTkKICAgICBzb3VyY2Uudm9pZHJlc3AoKQogICAgIHRhcmdldC52b2lkcmVzcCgpCiAKQEAgLTk1MywxOSArOTI2LDIyIEBACiAgICAgX19kZWZhY2N0ID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGlzIGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgbmV0cmMgbW9kdWxlIGluc3RlYWQiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIGlmICJIT01FIiBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIkhPTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLm5ldHJjIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigic3BlY2lmeSBmaWxlIHRvIGxvYWQgb3Igc2V0ICRIT01FIikKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJzcGVjaWZ5IGZpbGUgdG8gbG9hZCBvciBzZXQgJEhPTUUiKQogICAgICAgICBzZWxmLl9faG9zdHMgPSB7fQogICAgICAgICBzZWxmLl9fbWFjcm9zID0ge30KICAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAiciIpCiAgICAgICAgIGluX21hY3JvID0gMAogICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhaworICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIGluX21hY3JvIGFuZCBsaW5lLnN0cmlwKCk6CiAgICAgICAgICAgICAgICAgbWFjcm9fbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTEwNzQsNyArMTA1MCw3IEBACiAgICAgdXNlcmlkID0gcGFzc3dkID0gYWNjdCA9ICcnCiAgICAgdHJ5OgogICAgICAgICBuZXRyYyA9IE5ldHJjKHJjZmlsZSkKLSAgICBleGNlcHQgSU9FcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgaWYgcmNmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ291bGQgbm90IG9wZW4gYWNjb3VudCBmaWxlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0tIHVzaW5nIGFub255bW91cyBsb2dpbi4iKQpkaWZmIC0tZ2l0IGEvTGliL2Z1bmN0b29scy5weSBiL0xpYi9mdW5jdG9vbHMucHkKaW5kZXggMDUzZTQ0ZS4uMTlmODhjNyAxMDA2NDQKLS0tIGEvTGliL2Z1bmN0b29scy5weQorKysgYi9MaWIvZnVuY3Rvb2xzLnB5CkBAIC0zLDE2ICszLDI0IEBACiAjIFB5dGhvbiBtb2R1bGUgd3JhcHBlciBmb3IgX2Z1bmN0b29scyBDIG1vZHVsZQogIyB0byBhbGxvdyB1dGlsaXRpZXMgd3JpdHRlbiBpbiBQeXRob24gdG8gYmUgYWRkZWQKICMgdG8gdGhlIGZ1bmN0b29scyBtb2R1bGUuCi0jIFdyaXR0ZW4gYnkgTmljayBDb2dobGFuIDxuY29naGxhbiBhdCBnbWFpbC5jb20+Ci0jIGFuZCBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+Ci0jICAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjIFdyaXR0ZW4gYnkgTmljayBDb2dobGFuIDxuY29naGxhbiBhdCBnbWFpbC5jb20+LAorIyBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+LAorIyBhbmQgxYF1a2FzeiBMYW5nYSA8bHVrYXN6IGF0IGxhbmdhLnBsPi4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KICMgU2VlIEMgc291cmNlIGNvZGUgZm9yIF9mdW5jdG9vbHMgY3JlZGl0cy9jb3B5cmlnaHQKIAogX19hbGxfXyA9IFsndXBkYXRlX3dyYXBwZXInLCAnd3JhcHMnLCAnV1JBUFBFUl9BU1NJR05NRU5UUycsICdXUkFQUEVSX1VQREFURVMnLAotICAgICAgICAgICAndG90YWxfb3JkZXJpbmcnLCAnY21wX3RvX2tleScsICdscnVfY2FjaGUnLCAncmVkdWNlJywgJ3BhcnRpYWwnXQorICAgICAgICAgICAndG90YWxfb3JkZXJpbmcnLCAnY21wX3RvX2tleScsICdscnVfY2FjaGUnLCAncmVkdWNlJywgJ3BhcnRpYWwnLAorICAgICAgICAgICAnc2luZ2xlZGlzcGF0Y2gnXQogCi1mcm9tIF9mdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwsIHJlZHVjZQordHJ5OgorICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcmVkdWNlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZnJvbSBhYmMgaW1wb3J0IGdldF9jYWNoZV90b2tlbgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorZnJvbSB0eXBlcyBpbXBvcnQgTWFwcGluZ1Byb3h5VHlwZQorZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrS2V5RGljdGlvbmFyeQogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgUkxvY2sKIGV4Y2VwdDoKQEAgLTQ3LDcgKzU1LDYgQEAKICAgICAgICBhcmUgdXBkYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBmcm9tIHRoZSB3cmFwcGVkCiAgICAgICAgZnVuY3Rpb24gKGRlZmF1bHRzIHRvIGZ1bmN0b29scy5XUkFQUEVSX1VQREFURVMpCiAgICAgIiIiCi0gICAgd3JhcHBlci5fX3dyYXBwZWRfXyA9IHdyYXBwZWQKICAgICBmb3IgYXR0ciBpbiBhc3NpZ25lZDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKHdyYXBwZWQsIGF0dHIpCkBAIC01Nyw2ICs2NCw5IEBACiAgICAgICAgICAgICBzZXRhdHRyKHdyYXBwZXIsIGF0dHIsIHZhbHVlKQogICAgIGZvciBhdHRyIGluIHVwZGF0ZWQ6CiAgICAgICAgIGdldGF0dHIod3JhcHBlciwgYXR0cikudXBkYXRlKGdldGF0dHIod3JhcHBlZCwgYXR0ciwge30pKQorICAgICMgSXNzdWUgIzE3NDgyOiBzZXQgX193cmFwcGVkX18gbGFzdCBzbyB3ZSBkb24ndCBpbmFkdmVydGVudGx5IGNvcHkgaXQKKyAgICAjIGZyb20gdGhlIHdyYXBwZWQgZnVuY3Rpb24gd2hlbiB1cGRhdGluZyBfX2RpY3RfXworICAgIHdyYXBwZXIuX193cmFwcGVkX18gPSB3cmFwcGVkCiAgICAgIyBSZXR1cm4gdGhlIHdyYXBwZXIgc28gdGhpcyBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciB2aWEgcGFydGlhbCgpCiAgICAgcmV0dXJuIHdyYXBwZXIKIApAQCAtMTQwLDYgKzE1MCwyOSBAQAogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgcGFydGlhbCgpIGFyZ3VtZW50IGFwcGxpY2F0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgcGFydGlhbChmdW5jLCAqYXJncywgKiprZXl3b3Jkcyk6CisgICAgIiIibmV3IGZ1bmN0aW9uIHdpdGggcGFydGlhbCBhcHBsaWNhdGlvbiBvZiB0aGUgZ2l2ZW4gYXJndW1lbnRzCisgICAgYW5kIGtleXdvcmRzLgorICAgICIiIgorICAgIGRlZiBuZXdmdW5jKCpmYXJncywgKipma2V5d29yZHMpOgorICAgICAgICBuZXdrZXl3b3JkcyA9IGtleXdvcmRzLmNvcHkoKQorICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoZmtleXdvcmRzKQorICAgICAgICByZXR1cm4gZnVuYygqKGFyZ3MgKyBmYXJncyksICoqbmV3a2V5d29yZHMpCisgICAgbmV3ZnVuYy5mdW5jID0gZnVuYworICAgIG5ld2Z1bmMuYXJncyA9IGFyZ3MKKyAgICBuZXdmdW5jLmtleXdvcmRzID0ga2V5d29yZHMKKyAgICByZXR1cm4gbmV3ZnVuYworCit0cnk6CisgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgTFJVIENhY2hlIGZ1bmN0aW9uIGRlY29yYXRvcgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtMjIwLDcgKzI1Myw2IEBACiAgICAgUFJFViwgTkVYVCwgS0VZLCBSRVNVTFQgPSAwLCAxLCAyLCAzICAgIyBuYW1lcyBmb3IgdGhlIGxpbmsgZmllbGRzCiAKICAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKLQogICAgICAgICBjYWNoZSA9IHt9CiAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCiAgICAgICAgIGZ1bGwgPSBGYWxzZQpAQCAtMzI5LDMgKzM2MSwyMTAgQEAKICAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCiAKICAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgc2luZ2xlZGlzcGF0Y2goKSAtIHNpbmdsZS1kaXNwYXRjaCBnZW5lcmljIGZ1bmN0aW9uIGRlY29yYXRvcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9jM19tZXJnZShzZXF1ZW5jZXMpOgorICAgICIiIk1lcmdlcyBNUk9zIGluICpzZXF1ZW5jZXMqIHRvIGEgc2luZ2xlIE1STyB1c2luZyB0aGUgQzMgYWxnb3JpdGhtLgorCisgICAgQWRhcHRlZCBmcm9tIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy4KKworICAgICIiIgorICAgIHJlc3VsdCA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgc2VxdWVuY2VzID0gW3MgZm9yIHMgaW4gc2VxdWVuY2VzIGlmIHNdICAgIyBwdXJnZSBlbXB0eSBzZXF1ZW5jZXMKKyAgICAgICAgaWYgbm90IHNlcXVlbmNlczoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgZm9yIHMxIGluIHNlcXVlbmNlczogICAjIGZpbmQgbWVyZ2UgY2FuZGlkYXRlcyBhbW9uZyBzZXEgaGVhZHMKKyAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHMxWzBdCisgICAgICAgICAgICBmb3IgczIgaW4gc2VxdWVuY2VzOgorICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZSBpbiBzMlsxOl06CisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsgICAgICAjIHJlamVjdCB0aGUgY3VycmVudCBoZWFkLCBpdCBhcHBlYXJzIGxhdGVyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBjYW5kaWRhdGU6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkluY29uc2lzdGVudCBoaWVyYXJjaHkiKQorICAgICAgICByZXN1bHQuYXBwZW5kKGNhbmRpZGF0ZSkKKyAgICAgICAgIyByZW1vdmUgdGhlIGNob3NlbiBjYW5kaWRhdGUKKyAgICAgICAgZm9yIHNlcSBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBpZiBzZXFbMF0gPT0gY2FuZGlkYXRlOgorICAgICAgICAgICAgICAgIGRlbCBzZXFbMF0KKworZGVmIF9jM19tcm8oY2xzLCBhYmNzPU5vbmUpOgorICAgICIiIkNvbXB1dGVzIHRoZSBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciB1c2luZyBleHRlbmRlZCBDMyBsaW5lYXJpemF0aW9uLgorCisgICAgSWYgbm8gKmFiY3MqIGFyZSBnaXZlbiwgdGhlIGFsZ29yaXRobSB3b3JrcyBleGFjdGx5IGxpa2UgdGhlIGJ1aWx0LWluIEMzCisgICAgbGluZWFyaXphdGlvbiB1c2VkIGZvciBtZXRob2QgcmVzb2x1dGlvbi4KKworICAgIElmIGdpdmVuLCAqYWJjcyogaXMgYSBsaXN0IG9mIGFic3RyYWN0IGJhc2UgY2xhc3NlcyB0aGF0IHNob3VsZCBiZSBpbnNlcnRlZAorICAgIGludG8gdGhlIHJlc3VsdGluZyBNUk8uIFVucmVsYXRlZCBBQkNzIGFyZSBpZ25vcmVkIGFuZCBkb24ndCBlbmQgdXAgaW4gdGhlCisgICAgcmVzdWx0LiBUaGUgYWxnb3JpdGhtIGluc2VydHMgQUJDcyB3aGVyZSB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGludHJvZHVjZWQsCisgICAgaS5lLiBpc3N1YmNsYXNzKGNscywgYWJjKSByZXR1cm5zIFRydWUgZm9yIHRoZSBjbGFzcyBpdHNlbGYgYnV0IHJldHVybnMKKyAgICBGYWxzZSBmb3IgYWxsIGl0cyBkaXJlY3QgYmFzZSBjbGFzc2VzLiBJbXBsaWNpdCBBQkNzIGZvciBhIGdpdmVuIGNsYXNzCisgICAgKGVpdGhlciByZWdpc3RlcmVkIG9yIGluZmVycmVkIGZyb20gdGhlIHByZXNlbmNlIG9mIGEgc3BlY2lhbCBtZXRob2QgbGlrZQorICAgIF9fbGVuX18pIGFyZSBpbnNlcnRlZCBkaXJlY3RseSBhZnRlciB0aGUgbGFzdCBBQkMgZXhwbGljaXRseSBsaXN0ZWQgaW4gdGhlCisgICAgTVJPIG9mIHNhaWQgY2xhc3MuIElmIHR3byBpbXBsaWNpdCBBQkNzIGVuZCB1cCBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gdGhlCisgICAgcmVzdWx0aW5nIE1STywgdGhlaXIgb3JkZXJpbmcgZGVwZW5kcyBvbiB0aGUgb3JkZXIgb2YgdHlwZXMgaW4gKmFiY3MqLgorCisgICAgIiIiCisgICAgZm9yIGksIGJhc2UgaW4gZW51bWVyYXRlKHJldmVyc2VkKGNscy5fX2Jhc2VzX18pKToKKyAgICAgICAgaWYgaGFzYXR0cihiYXNlLCAnX19hYnN0cmFjdG1ldGhvZHNfXycpOgorICAgICAgICAgICAgYm91bmRhcnkgPSBsZW4oY2xzLl9fYmFzZXNfXykgLSBpCisgICAgICAgICAgICBicmVhayAgICMgQmFzZXMgdXAgdG8gdGhlIGxhc3QgZXhwbGljaXQgQUJDIGFyZSBjb25zaWRlcmVkIGZpcnN0LgorICAgIGVsc2U6CisgICAgICAgIGJvdW5kYXJ5ID0gMAorICAgIGFiY3MgPSBsaXN0KGFiY3MpIGlmIGFiY3MgZWxzZSBbXQorICAgIGV4cGxpY2l0X2Jhc2VzID0gbGlzdChjbHMuX19iYXNlc19fWzpib3VuZGFyeV0pCisgICAgYWJzdHJhY3RfYmFzZXMgPSBbXQorICAgIG90aGVyX2Jhc2VzID0gbGlzdChjbHMuX19iYXNlc19fW2JvdW5kYXJ5Ol0pCisgICAgZm9yIGJhc2UgaW4gYWJjczoKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIGJhc2UpIGFuZCBub3QgYW55KAorICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoYiwgYmFzZSkgZm9yIGIgaW4gY2xzLl9fYmFzZXNfXworICAgICAgICAgICAgKToKKyAgICAgICAgICAgICMgSWYgKmNscyogaXMgdGhlIGNsYXNzIHRoYXQgaW50cm9kdWNlcyBiZWhhdmlvdXIgZGVzY3JpYmVkIGJ5CisgICAgICAgICAgICAjIGFuIEFCQyAqYmFzZSosIGluc2VydCBzYWlkIEFCQyB0byBpdHMgTVJPLgorICAgICAgICAgICAgYWJzdHJhY3RfYmFzZXMuYXBwZW5kKGJhc2UpCisgICAgZm9yIGJhc2UgaW4gYWJzdHJhY3RfYmFzZXM6CisgICAgICAgIGFiY3MucmVtb3ZlKGJhc2UpCisgICAgZXhwbGljaXRfYzNfbXJvcyA9IFtfYzNfbXJvKGJhc2UsIGFiY3M9YWJjcykgZm9yIGJhc2UgaW4gZXhwbGljaXRfYmFzZXNdCisgICAgYWJzdHJhY3RfYzNfbXJvcyA9IFtfYzNfbXJvKGJhc2UsIGFiY3M9YWJjcykgZm9yIGJhc2UgaW4gYWJzdHJhY3RfYmFzZXNdCisgICAgb3RoZXJfYzNfbXJvcyA9IFtfYzNfbXJvKGJhc2UsIGFiY3M9YWJjcykgZm9yIGJhc2UgaW4gb3RoZXJfYmFzZXNdCisgICAgcmV0dXJuIF9jM19tZXJnZSgKKyAgICAgICAgW1tjbHNdXSArCisgICAgICAgIGV4cGxpY2l0X2MzX21yb3MgKyBhYnN0cmFjdF9jM19tcm9zICsgb3RoZXJfYzNfbXJvcyArCisgICAgICAgIFtleHBsaWNpdF9iYXNlc10gKyBbYWJzdHJhY3RfYmFzZXNdICsgW290aGVyX2Jhc2VzXQorICAgICkKKworZGVmIF9jb21wb3NlX21ybyhjbHMsIHR5cGVzKToKKyAgICAiIiJDYWxjdWxhdGVzIHRoZSBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciBmb3IgYSBnaXZlbiBjbGFzcyAqY2xzKi4KKworICAgIEluY2x1ZGVzIHJlbGV2YW50IGFic3RyYWN0IGJhc2UgY2xhc3NlcyAod2l0aCB0aGVpciByZXNwZWN0aXZlIGJhc2VzKSBmcm9tCisgICAgdGhlICp0eXBlcyogaXRlcmFibGUuIFVzZXMgYSBtb2RpZmllZCBDMyBsaW5lYXJpemF0aW9uIGFsZ29yaXRobS4KKworICAgICIiIgorICAgIGJhc2VzID0gc2V0KGNscy5fX21yb19fKQorICAgICMgUmVtb3ZlIGVudHJpZXMgd2hpY2ggYXJlIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgX19tcm9fXyBvciB1bnJlbGF0ZWQuCisgICAgZGVmIGlzX3JlbGF0ZWQodHlwKToKKyAgICAgICAgcmV0dXJuICh0eXAgbm90IGluIGJhc2VzIGFuZCBoYXNhdHRyKHR5cCwgJ19fbXJvX18nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzc3ViY2xhc3MoY2xzLCB0eXApKQorICAgIHR5cGVzID0gW24gZm9yIG4gaW4gdHlwZXMgaWYgaXNfcmVsYXRlZChuKV0KKyAgICAjIFJlbW92ZSBlbnRyaWVzIHdoaWNoIGFyZSBzdHJpY3QgYmFzZXMgb2Ygb3RoZXIgZW50cmllcyAodGhleSB3aWxsIGVuZCB1cAorICAgICMgaW4gdGhlIE1STyBhbnl3YXkuCisgICAgZGVmIGlzX3N0cmljdF9iYXNlKHR5cCk6CisgICAgICAgIGZvciBvdGhlciBpbiB0eXBlczoKKyAgICAgICAgICAgIGlmIHR5cCAhPSBvdGhlciBhbmQgdHlwIGluIG90aGVyLl9fbXJvX186CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgdHlwZXMgPSBbbiBmb3IgbiBpbiB0eXBlcyBpZiBub3QgaXNfc3RyaWN0X2Jhc2UobildCisgICAgIyBTdWJjbGFzc2VzIG9mIHRoZSBBQkNzIGluICp0eXBlcyogd2hpY2ggYXJlIGFsc28gaW1wbGVtZW50ZWQgYnkKKyAgICAjICpjbHMqIGNhbiBiZSB1c2VkIHRvIHN0YWJpbGl6ZSBBQkMgb3JkZXJpbmcuCisgICAgdHlwZV9zZXQgPSBzZXQodHlwZXMpCisgICAgbXJvID0gW10KKyAgICBmb3IgdHlwIGluIHR5cGVzOgorICAgICAgICBmb3VuZCA9IFtdCisgICAgICAgIGZvciBzdWIgaW4gdHlwLl9fc3ViY2xhc3Nlc19fKCk6CisgICAgICAgICAgICBpZiBzdWIgbm90IGluIGJhc2VzIGFuZCBpc3N1YmNsYXNzKGNscywgc3ViKToKKyAgICAgICAgICAgICAgICBmb3VuZC5hcHBlbmQoW3MgZm9yIHMgaW4gc3ViLl9fbXJvX18gaWYgcyBpbiB0eXBlX3NldF0pCisgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgIG1yby5hcHBlbmQodHlwKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBGYXZvciBzdWJjbGFzc2VzIHdpdGggdGhlIGJpZ2dlc3QgbnVtYmVyIG9mIHVzZWZ1bCBiYXNlcworICAgICAgICBmb3VuZC5zb3J0KGtleT1sZW4sIHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIHN1YiBpbiBmb3VuZDoKKyAgICAgICAgICAgIGZvciBzdWJjbHMgaW4gc3ViOgorICAgICAgICAgICAgICAgIGlmIHN1YmNscyBub3QgaW4gbXJvOgorICAgICAgICAgICAgICAgICAgICBtcm8uYXBwZW5kKHN1YmNscykKKyAgICByZXR1cm4gX2MzX21ybyhjbHMsIGFiY3M9bXJvKQorCitkZWYgX2ZpbmRfaW1wbChjbHMsIHJlZ2lzdHJ5KToKKyAgICAiIiJSZXR1cm5zIHRoZSBiZXN0IG1hdGNoaW5nIGltcGxlbWVudGF0aW9uIGZyb20gKnJlZ2lzdHJ5KiBmb3IgdHlwZSAqY2xzKi4KKworICAgIFdoZXJlIHRoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgaW1wbGVtZW50YXRpb24gZm9yIGEgc3BlY2lmaWMgdHlwZSwgaXRzIG1ldGhvZAorICAgIHJlc29sdXRpb24gb3JkZXIgaXMgdXNlZCB0byBmaW5kIGEgbW9yZSBnZW5lcmljIGltcGxlbWVudGF0aW9uLgorCisgICAgTm90ZTogaWYgKnJlZ2lzdHJ5KiBkb2VzIG5vdCBjb250YWluIGFuIGltcGxlbWVudGF0aW9uIGZvciB0aGUgYmFzZQorICAgICpvYmplY3QqIHR5cGUsIHRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBOb25lLgorCisgICAgIiIiCisgICAgbXJvID0gX2NvbXBvc2VfbXJvKGNscywgcmVnaXN0cnkua2V5cygpKQorICAgIG1hdGNoID0gTm9uZQorICAgIGZvciB0IGluIG1ybzoKKyAgICAgICAgaWYgbWF0Y2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElmICptYXRjaCogaXMgYW4gaW1wbGljaXQgQUJDIGJ1dCB0aGVyZSBpcyBhbm90aGVyIHVucmVsYXRlZCwKKyAgICAgICAgICAgICMgZXF1YWxseSBtYXRjaGluZyBpbXBsaWNpdCBBQkMsIHJlZnVzZSB0aGUgdGVtcHRhdGlvbiB0byBndWVzcy4KKyAgICAgICAgICAgIGlmICh0IGluIHJlZ2lzdHJ5IGFuZCB0IG5vdCBpbiBjbHMuX19tcm9fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1hdGNoIG5vdCBpbiBjbHMuX19tcm9fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBpc3N1YmNsYXNzKG1hdGNoLCB0KSk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJBbWJpZ3VvdXMgZGlzcGF0Y2g6IHt9IG9yIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIG1hdGNoLCB0KSkKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIHQgaW4gcmVnaXN0cnk6CisgICAgICAgICAgICBtYXRjaCA9IHQKKyAgICByZXR1cm4gcmVnaXN0cnkuZ2V0KG1hdGNoKQorCitkZWYgc2luZ2xlZGlzcGF0Y2goZnVuYyk6CisgICAgIiIiU2luZ2xlLWRpc3BhdGNoIGdlbmVyaWMgZnVuY3Rpb24gZGVjb3JhdG9yLgorCisgICAgVHJhbnNmb3JtcyBhIGZ1bmN0aW9uIGludG8gYSBnZW5lcmljIGZ1bmN0aW9uLCB3aGljaCBjYW4gaGF2ZSBkaWZmZXJlbnQKKyAgICBiZWhhdmlvdXJzIGRlcGVuZGluZyB1cG9uIHRoZSB0eXBlIG9mIGl0cyBmaXJzdCBhcmd1bWVudC4gVGhlIGRlY29yYXRlZAorICAgIGZ1bmN0aW9uIGFjdHMgYXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFuZCBhZGRpdGlvbmFsCisgICAgaW1wbGVtZW50YXRpb25zIGNhbiBiZSByZWdpc3RlcmVkIHVzaW5nIHRoZSByZWdpc3RlcigpIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICBnZW5lcmljIGZ1bmN0aW9uLgorCisgICAgIiIiCisgICAgcmVnaXN0cnkgPSB7fQorICAgIGRpc3BhdGNoX2NhY2hlID0gV2Vha0tleURpY3Rpb25hcnkoKQorICAgIGNhY2hlX3Rva2VuID0gTm9uZQorCisgICAgZGVmIGRpc3BhdGNoKGNscyk6CisgICAgICAgICIiImdlbmVyaWNfZnVuYy5kaXNwYXRjaChjbHMpIC0+IDxmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbj4KKworICAgICAgICBSdW5zIHRoZSBkaXNwYXRjaCBhbGdvcml0aG0gdG8gcmV0dXJuIHRoZSBiZXN0IGF2YWlsYWJsZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmb3IgdGhlIGdpdmVuICpjbHMqIHJlZ2lzdGVyZWQgb24gKmdlbmVyaWNfZnVuYyouCisKKyAgICAgICAgIiIiCisgICAgICAgIG5vbmxvY2FsIGNhY2hlX3Rva2VuCisgICAgICAgIGlmIGNhY2hlX3Rva2VuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgY3VycmVudF90b2tlbiA9IGdldF9jYWNoZV90b2tlbigpCisgICAgICAgICAgICBpZiBjYWNoZV90b2tlbiAhPSBjdXJyZW50X3Rva2VuOgorICAgICAgICAgICAgICAgIGRpc3BhdGNoX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgICAgICAgICBjYWNoZV90b2tlbiA9IGN1cnJlbnRfdG9rZW4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wbCA9IGRpc3BhdGNoX2NhY2hlW2Nsc10KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcGwgPSByZWdpc3RyeVtjbHNdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgaW1wbCA9IF9maW5kX2ltcGwoY2xzLCByZWdpc3RyeSkKKyAgICAgICAgICAgIGRpc3BhdGNoX2NhY2hlW2Nsc10gPSBpbXBsCisgICAgICAgIHJldHVybiBpbXBsCisKKyAgICBkZWYgcmVnaXN0ZXIoY2xzLCBmdW5jPU5vbmUpOgorICAgICAgICAiIiJnZW5lcmljX2Z1bmMucmVnaXN0ZXIoY2xzLCBmdW5jKSAtPiBmdW5jCisKKyAgICAgICAgUmVnaXN0ZXJzIGEgbmV3IGltcGxlbWVudGF0aW9uIGZvciB0aGUgZ2l2ZW4gKmNscyogb24gYSAqZ2VuZXJpY19mdW5jKi4KKworICAgICAgICAiIiIKKyAgICAgICAgbm9ubG9jYWwgY2FjaGVfdG9rZW4KKyAgICAgICAgaWYgZnVuYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSBmOiByZWdpc3RlcihjbHMsIGYpCisgICAgICAgIHJlZ2lzdHJ5W2Nsc10gPSBmdW5jCisgICAgICAgIGlmIGNhY2hlX3Rva2VuIGlzIE5vbmUgYW5kIGhhc2F0dHIoY2xzLCAnX19hYnN0cmFjdG1ldGhvZHNfXycpOgorICAgICAgICAgICAgY2FjaGVfdG9rZW4gPSBnZXRfY2FjaGVfdG9rZW4oKQorICAgICAgICBkaXNwYXRjaF9jYWNoZS5jbGVhcigpCisgICAgICAgIHJldHVybiBmdW5jCisKKyAgICBkZWYgd3JhcHBlcigqYXJncywgKiprdyk6CisgICAgICAgIHJldHVybiBkaXNwYXRjaChhcmdzWzBdLl9fY2xhc3NfXykoKmFyZ3MsICoqa3cpCisKKyAgICByZWdpc3RyeVtvYmplY3RdID0gZnVuYworICAgIHdyYXBwZXIucmVnaXN0ZXIgPSByZWdpc3RlcgorICAgIHdyYXBwZXIuZGlzcGF0Y2ggPSBkaXNwYXRjaAorICAgIHdyYXBwZXIucmVnaXN0cnkgPSBNYXBwaW5nUHJveHlUeXBlKHJlZ2lzdHJ5KQorICAgIHdyYXBwZXIuX2NsZWFyX2NhY2hlID0gZGlzcGF0Y2hfY2FjaGUuY2xlYXIKKyAgICB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCBmdW5jKQorICAgIHJldHVybiB3cmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvZ2VuZXJpY3BhdGgucHkgYi9MaWIvZ2VuZXJpY3BhdGgucHkKaW5kZXggMjE3NDE4Ny4uNTI5MmFhOCAxMDA2NDQKLS0tIGEvTGliL2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi9nZW5lcmljcGF0aC5weQpAQCAtNyw3ICs3LDggQEAKIGltcG9ydCBzdGF0CiAKIF9fYWxsX18gPSBbJ2NvbW1vbnByZWZpeCcsICdleGlzdHMnLCAnZ2V0YXRpbWUnLCAnZ2V0Y3RpbWUnLCAnZ2V0bXRpbWUnLAotICAgICAgICAgICAnZ2V0c2l6ZScsICdpc2RpcicsICdpc2ZpbGUnXQorICAgICAgICAgICAnZ2V0c2l6ZScsICdpc2RpcicsICdpc2ZpbGUnLCAnc2FtZWZpbGUnLCAnc2FtZW9wZW5maWxlJywKKyAgICAgICAgICAgJ3NhbWVzdGF0J10KIAogCiAjIERvZXMgYSBwYXRoIGV4aXN0PwpAQCAtMTYsNyArMTcsNyBAQAogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzIiIiCiAgICAgdHJ5OgogICAgICAgICBvcy5zdGF0KHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCkBAIC0yNyw3ICsyOCw3IEBACiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIHJlZ3VsYXIgZmlsZSIiIgogICAgIHRyeToKICAgICAgICAgc3QgPSBvcy5zdGF0KHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gc3RhdC5TX0lTUkVHKHN0LnN0X21vZGUpCiAKQEAgLTM5LDcgKzQwLDcgQEAKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgcGF0aG5hbWUgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4iIiIKICAgICB0cnk6CiAgICAgICAgIHN0ID0gb3Muc3RhdChzKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgcmV0dXJuIHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQogCkBAIC03NSw2ICs3NiwzMSBAQAogICAgICAgICAgICAgcmV0dXJuIHMxWzppXQogICAgIHJldHVybiBzMQogCisjIEFyZSB0d28gc3RhdCBidWZmZXJzIChvYnRhaW5lZCBmcm9tIHN0YXQsIGZzdGF0IG9yIGxzdGF0KQorIyBkZXNjcmliaW5nIHRoZSBzYW1lIGZpbGU/CitkZWYgc2FtZXN0YXQoczEsIHMyKToKKyAgICAiIiJUZXN0IHdoZXRoZXIgdHdvIHN0YXQgYnVmZmVycyByZWZlcmVuY2UgdGhlIHNhbWUgZmlsZSIiIgorICAgIHJldHVybiAoczEuc3RfaW5vID09IHMyLnN0X2lubyBhbmQKKyAgICAgICAgICAgIHMxLnN0X2RldiA9PSBzMi5zdF9kZXYpCisKKworIyBBcmUgdHdvIGZpbGVuYW1lcyByZWFsbHkgcG9pbnRpbmcgdG8gdGhlIHNhbWUgZmlsZT8KK2RlZiBzYW1lZmlsZShmMSwgZjIpOgorICAgICIiIlRlc3Qgd2hldGhlciB0d28gcGF0aG5hbWVzIHJlZmVyZW5jZSB0aGUgc2FtZSBhY3R1YWwgZmlsZSIiIgorICAgIHMxID0gb3Muc3RhdChmMSkKKyAgICBzMiA9IG9zLnN0YXQoZjIpCisgICAgcmV0dXJuIHNhbWVzdGF0KHMxLCBzMikKKworCisjIEFyZSB0d28gb3BlbiBmaWxlcyByZWFsbHkgcmVmZXJlbmNpbmcgdGhlIHNhbWUgZmlsZT8KKyMgKE5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBmaWxlIGRlc2NyaXB0b3IhKQorZGVmIHNhbWVvcGVuZmlsZShmcDEsIGZwMik6CisgICAgIiIiVGVzdCB3aGV0aGVyIHR3byBvcGVuIGZpbGUgb2JqZWN0cyByZWZlcmVuY2UgdGhlIHNhbWUgZmlsZSIiIgorICAgIHMxID0gb3MuZnN0YXQoZnAxKQorICAgIHMyID0gb3MuZnN0YXQoZnAyKQorICAgIHJldHVybiBzYW1lc3RhdChzMSwgczIpCisKKwogIyBTcGxpdCBhIHBhdGggaW4gcm9vdCBhbmQgZXh0ZW5zaW9uLgogIyBUaGUgZXh0ZW5zaW9uIGlzIGV2ZXJ5dGhpbmcgc3RhcnRpbmcgYXQgdGhlIGxhc3QgZG90IGluIHRoZSBsYXN0CiAjIHBhdGhuYW1lIGNvbXBvbmVudDsgdGhlIHJvb3QgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhhdC4KZGlmZiAtLWdpdCBhL0xpYi9nZXRwYXNzLnB5IGIvTGliL2dldHBhc3MucHkKaW5kZXggMDA0NDc0Mi4uNTNjMzhiOCAxMDA2NDQKLS0tIGEvTGliL2dldHBhc3MucHkKKysrIGIvTGliL2dldHBhc3MucHkKQEAgLTE1LDcgKzE1LDExIEBACiAjICAgICAgICAgIEd1aWRvIHZhbiBSb3NzdW0gKFdpbmRvd3Mgc3VwcG9ydCBhbmQgY2xlYW51cCkKICMgICAgICAgICAgR3JlZ29yeSBQLiBTbWl0aCAodHR5IHN1cHBvcnQgJiBHZXRQYXNzV2FybmluZykKIAotaW1wb3J0IG9zLCBzeXMsIHdhcm5pbmdzCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB3YXJuaW5ncwogCiBfX2FsbF9fID0gWyJnZXRwYXNzIiwiZ2V0dXNlciIsIkdldFBhc3NXYXJuaW5nIl0KIApAQCAtMzgsNTIgKzQyLDU3IEBACiAKICAgICBBbHdheXMgcmVzdG9yZXMgdGVybWluYWwgc2V0dGluZ3MgYmVmb3JlIHJldHVybmluZy4KICAgICAiIiIKLSAgICBmZCA9IE5vbmUKLSAgICB0dHkgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICAjIEFsd2F5cyB0cnkgcmVhZGluZyBhbmQgd3JpdGluZyBkaXJlY3RseSBvbiB0aGUgdHR5IGZpcnN0LgotICAgICAgICBmZCA9IG9zLm9wZW4oJy9kZXYvdHR5Jywgb3MuT19SRFdSfG9zLk9fTk9DVFRZKQotICAgICAgICB0dHkgPSBvcy5mZG9wZW4oZmQsICd3KycsIDEpCi0gICAgICAgIGlucHV0ID0gdHR5Ci0gICAgICAgIGlmIG5vdCBzdHJlYW06Ci0gICAgICAgICAgICBzdHJlYW0gPSB0dHkKLSAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgotICAgICAgICAjIElmIHRoYXQgZmFpbHMsIHNlZSBpZiBzdGRpbiBjYW4gYmUgY29udHJvbGxlZC4KKyAgICBwYXNzd2QgPSBOb25lCisgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmZCA9IHN5cy5zdGRpbi5maWxlbm8oKQotICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIHBhc3N3ZCA9IGZhbGxiYWNrX2dldHBhc3MocHJvbXB0LCBzdHJlYW0pCi0gICAgICAgIGlucHV0ID0gc3lzLnN0ZGluCi0gICAgICAgIGlmIG5vdCBzdHJlYW06Ci0gICAgICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCi0KLSAgICBpZiBmZCBpcyBub3QgTm9uZToKLSAgICAgICAgcGFzc3dkID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvbGQgPSB0ZXJtaW9zLnRjZ2V0YXR0cihmZCkgICAgICMgYSBjb3B5IHRvIHNhdmUKLSAgICAgICAgICAgIG5ldyA9IG9sZFs6XQotICAgICAgICAgICAgbmV3WzNdICY9IH50ZXJtaW9zLkVDSE8gICMgMyA9PSAnbGZsYWdzJwotICAgICAgICAgICAgdGNzZXRhdHRyX2ZsYWdzID0gdGVybWlvcy5UQ1NBRkxVU0gKLSAgICAgICAgICAgIGlmIGhhc2F0dHIodGVybWlvcywgJ1RDU0FTT0ZUJyk6Ci0gICAgICAgICAgICAgICAgdGNzZXRhdHRyX2ZsYWdzIHw9IHRlcm1pb3MuVENTQVNPRlQKKyAgICAgICAgICAgICMgQWx3YXlzIHRyeSByZWFkaW5nIGFuZCB3cml0aW5nIGRpcmVjdGx5IG9uIHRoZSB0dHkgZmlyc3QuCisgICAgICAgICAgICBmZCA9IG9zLm9wZW4oJy9kZXYvdHR5Jywgb3MuT19SRFdSfG9zLk9fTk9DVFRZKQorICAgICAgICAgICAgdHR5ID0gaW8uRmlsZUlPKGZkLCAndysnKQorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dCh0dHkpCisgICAgICAgICAgICBpbnB1dCA9IGlvLlRleHRJT1dyYXBwZXIodHR5KQorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChpbnB1dCkKKyAgICAgICAgICAgIGlmIG5vdCBzdHJlYW06CisgICAgICAgICAgICAgICAgc3RyZWFtID0gaW5wdXQKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgSWYgdGhhdCBmYWlscywgc2VlIGlmIHN0ZGluIGNhbiBiZSBjb250cm9sbGVkLgorICAgICAgICAgICAgc3RhY2suY2xvc2UoKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0Y3NldGF0dHJfZmxhZ3MsIG5ldykKLSAgICAgICAgICAgICAgICBwYXNzd2QgPSBfcmF3X2lucHV0KHByb21wdCwgc3RyZWFtLCBpbnB1dD1pbnB1dCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRjc2V0YXR0cl9mbGFncywgb2xkKQotICAgICAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpICAjIGlzc3VlNzIwOAotICAgICAgICBleGNlcHQgdGVybWlvcy5lcnJvcjoKLSAgICAgICAgICAgIGlmIHBhc3N3ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAjIF9yYXdfaW5wdXQgc3VjY2VlZGVkLiAgVGhlIGZpbmFsIHRjc2V0YXR0ciBmYWlsZWQuICBSZXJhaXNlCi0gICAgICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIHRlcm1pbmFsIGluIGFuIHVua25vd24gc3RhdGUuCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICMgV2UgY2FuJ3QgY29udHJvbCB0aGUgdHR5IG9yIHN0ZGluLiAgR2l2ZSB1cCBhbmQgdXNlIG5vcm1hbCBJTy4KLSAgICAgICAgICAgICMgZmFsbGJhY2tfZ2V0cGFzcygpIHJhaXNlcyBhbiBhcHByb3ByaWF0ZSB3YXJuaW5nLgotICAgICAgICAgICAgZGVsIGlucHV0LCB0dHkgICMgY2xlYW4gdXAgdW51c2VkIGZpbGUgb2JqZWN0cyBiZWZvcmUgYmxvY2tpbmcKLSAgICAgICAgICAgIHBhc3N3ZCA9IGZhbGxiYWNrX2dldHBhc3MocHJvbXB0LCBzdHJlYW0pCisgICAgICAgICAgICAgICAgZmQgPSBzeXMuc3RkaW4uZmlsZW5vKCkKKyAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGZkID0gTm9uZQorICAgICAgICAgICAgICAgIHBhc3N3ZCA9IGZhbGxiYWNrX2dldHBhc3MocHJvbXB0LCBzdHJlYW0pCisgICAgICAgICAgICBpbnB1dCA9IHN5cy5zdGRpbgorICAgICAgICAgICAgaWYgbm90IHN0cmVhbToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCiAKLSAgICBzdHJlYW0ud3JpdGUoJ1xuJykKLSAgICByZXR1cm4gcGFzc3dkCisgICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9sZCA9IHRlcm1pb3MudGNnZXRhdHRyKGZkKSAgICAgIyBhIGNvcHkgdG8gc2F2ZQorICAgICAgICAgICAgICAgIG5ldyA9IG9sZFs6XQorICAgICAgICAgICAgICAgIG5ld1szXSAmPSB+dGVybWlvcy5FQ0hPICAjIDMgPT0gJ2xmbGFncycKKyAgICAgICAgICAgICAgICB0Y3NldGF0dHJfZmxhZ3MgPSB0ZXJtaW9zLlRDU0FGTFVTSAorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIodGVybWlvcywgJ1RDU0FTT0ZUJyk6CisgICAgICAgICAgICAgICAgICAgIHRjc2V0YXR0cl9mbGFncyB8PSB0ZXJtaW9zLlRDU0FTT0ZUCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB0ZXJtaW9zLnRjc2V0YXR0cihmZCwgdGNzZXRhdHRyX2ZsYWdzLCBuZXcpCisgICAgICAgICAgICAgICAgICAgIHBhc3N3ZCA9IF9yYXdfaW5wdXQocHJvbXB0LCBzdHJlYW0sIGlucHV0PWlucHV0KQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0Y3NldGF0dHJfZmxhZ3MsIG9sZCkKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkgICMgaXNzdWU3MjA4CisgICAgICAgICAgICBleGNlcHQgdGVybWlvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBwYXNzd2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgX3Jhd19pbnB1dCBzdWNjZWVkZWQuICBUaGUgZmluYWwgdGNzZXRhdHRyIGZhaWxlZC4gIFJlcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIHRlcm1pbmFsIGluIGFuIHVua25vd24gc3RhdGUuCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBjb250cm9sIHRoZSB0dHkgb3Igc3RkaW4uICBHaXZlIHVwIGFuZCB1c2Ugbm9ybWFsIElPLgorICAgICAgICAgICAgICAgICMgZmFsbGJhY2tfZ2V0cGFzcygpIHJhaXNlcyBhbiBhcHByb3ByaWF0ZSB3YXJuaW5nLgorICAgICAgICAgICAgICAgIGlmIHN0cmVhbSBpcyBub3QgaW5wdXQ6CisgICAgICAgICAgICAgICAgICAgICMgY2xlYW4gdXAgdW51c2VkIGZpbGUgb2JqZWN0cyBiZWZvcmUgYmxvY2tpbmcKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suY2xvc2UoKQorICAgICAgICAgICAgICAgIHBhc3N3ZCA9IGZhbGxiYWNrX2dldHBhc3MocHJvbXB0LCBzdHJlYW0pCisKKyAgICAgICAgc3RyZWFtLndyaXRlKCdcbicpCisgICAgICAgIHJldHVybiBwYXNzd2QKIAogCiBkZWYgd2luX2dldHBhc3MocHJvbXB0PSdQYXNzd29yZDogJywgc3RyZWFtPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL2dldHRleHQucHkgYi9MaWIvZ2V0dGV4dC5weQppbmRleCBlNDNmMDQ0Li4wNWQ5YzFlIDEwMDY0NAotLS0gYS9MaWIvZ2V0dGV4dC5weQorKysgYi9MaWIvZ2V0dGV4dC5weQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAgICAgICAgICAgICB2ZXJzaW9uLCBtc2djb3VudCwgbWFzdGVyaWR4LCB0cmFuc2lkeCA9IHVucGFjaygnPjRJJywgYnVmWzQ6MjBdKQogICAgICAgICAgICAgaWkgPSAnPklJJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigwLCAnQmFkIG1hZ2ljIG51bWJlcicsIGZpbGVuYW1lKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigwLCAnQmFkIG1hZ2ljIG51bWJlcicsIGZpbGVuYW1lKQogICAgICAgICAjIE5vdyBwdXQgYWxsIG1lc3NhZ2VzIGZyb20gdGhlIC5tbyBmaWxlIGJ1ZmZlciBpbnRvIHRoZSBjYXRhbG9nCiAgICAgICAgICMgZGljdGlvbmFyeS4KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbXNnY291bnQpOgpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gYnVmW21vZmY6bWVuZF0KICAgICAgICAgICAgICAgICB0bXNnID0gYnVmW3RvZmY6dGVuZF0KICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigwLCAnRmlsZSBpcyBjb3JydXB0JywgZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigwLCAnRmlsZSBpcyBjb3JydXB0JywgZmlsZW5hbWUpCiAgICAgICAgICAgICAjIFNlZSBpZiB3ZSdyZSBsb29raW5nIGF0IEdOVSAubW8gY29udmVudGlvbnMgZm9yIG1ldGFkYXRhCiAgICAgICAgICAgICBpZiBtbGVuID09IDA6CiAgICAgICAgICAgICAgICAgIyBDYXRhbG9nIGRlc2NyaXB0aW9uCkBAIC0zOTgsNyArMzk4LDcgQEAKICAgICBpZiBub3QgbW9maWxlczoKICAgICAgICAgaWYgZmFsbGJhY2s6CiAgICAgICAgICAgICByZXR1cm4gTnVsbFRyYW5zbGF0aW9ucygpCi0gICAgICAgIHJhaXNlIElPRXJyb3IoRU5PRU5ULCAnTm8gdHJhbnNsYXRpb24gZmlsZSBmb3VuZCBmb3IgZG9tYWluJywgZG9tYWluKQorICAgICAgICByYWlzZSBPU0Vycm9yKEVOT0VOVCwgJ05vIHRyYW5zbGF0aW9uIGZpbGUgZm91bmQgZm9yIGRvbWFpbicsIGRvbWFpbikKICAgICAjIEF2b2lkIG9wZW5pbmcsIHJlYWRpbmcsIGFuZCBwYXJzaW5nIHRoZSAubW8gZmlsZSBhZnRlciBpdCdzIGJlZW4gZG9uZQogICAgICMgb25jZS4KICAgICByZXN1bHQgPSBOb25lCkBAIC00NjAsNyArNDYwLDcgQEAKICAgICB0cnk6CiAgICAgICAgIHQgPSB0cmFuc2xhdGlvbihkb21haW4sIF9sb2NhbGVkaXJzLmdldChkb21haW4sIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldD1fbG9jYWxlY29kZXNldHMuZ2V0KGRvbWFpbikpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBtZXNzYWdlCiAgICAgcmV0dXJuIHQuZ2V0dGV4dChtZXNzYWdlKQogCkBAIC00NjgsNyArNDY4LDcgQEAKICAgICB0cnk6CiAgICAgICAgIHQgPSB0cmFuc2xhdGlvbihkb21haW4sIF9sb2NhbGVkaXJzLmdldChkb21haW4sIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldD1fbG9jYWxlY29kZXNldHMuZ2V0KGRvbWFpbikpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBtZXNzYWdlCiAgICAgcmV0dXJuIHQubGdldHRleHQobWVzc2FnZSkKIApAQCAtNDc2LDcgKzQ3Niw3IEBACiAgICAgdHJ5OgogICAgICAgICB0ID0gdHJhbnNsYXRpb24oZG9tYWluLCBfbG9jYWxlZGlycy5nZXQoZG9tYWluLCBOb25lKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzZXQ9X2xvY2FsZWNvZGVzZXRzLmdldChkb21haW4pKQotICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBpZiBuID09IDE6CiAgICAgICAgICAgICByZXR1cm4gbXNnaWQxCiAgICAgICAgIGVsc2U6CkBAIC00ODcsNyArNDg3LDcgQEAKICAgICB0cnk6CiAgICAgICAgIHQgPSB0cmFuc2xhdGlvbihkb21haW4sIF9sb2NhbGVkaXJzLmdldChkb21haW4sIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNldD1fbG9jYWxlY29kZXNldHMuZ2V0KGRvbWFpbikpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGlmIG4gPT0gMToKICAgICAgICAgICAgIHJldHVybiBtc2dpZDEKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9nbG9iLnB5IGIvTGliL2dsb2IucHkKaW5kZXggMWY2MDI2NS4uMWEyNjhhMyAxMDA2NDQKLS0tIGEvTGliL2dsb2IucHkKKysrIGIvTGliL2dsb2IucHkKQEAgLTMyLDggKzMyLDcgQEAKICAgICAgICAgcmV0dXJuCiAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgIGlmIG5vdCBkaXJuYW1lOgotICAgICAgICBmb3IgbmFtZSBpbiBnbG9iMShOb25lLCBiYXNlbmFtZSk6Ci0gICAgICAgICAgICB5aWVsZCBuYW1lCisgICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoTm9uZSwgYmFzZW5hbWUpCiAgICAgICAgIHJldHVybgogICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyB0aGUgYXJndW1lbnQgaXRzZWxmIGFzIGEgZGlybmFtZSBpZiBpdCBpcyBhCiAgICAgIyBkcml2ZSBvciBVTkMgcGF0aC4gIFByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGlmIGEgZHJpdmUgb3IgVU5DIHBhdGgKQEAgLTYyLDcgKzYxLDcgQEAKICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIFtdCiAgICAgaWYgbm90IF9pc2hpZGRlbihwYXR0ZXJuKToKICAgICAgICAgbmFtZXMgPSBbeCBmb3IgeCBpbiBuYW1lcyBpZiBub3QgX2lzaGlkZGVuKHgpXQpkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCA2N2ZlMWQ0Li5kMmQ2ZGQ2IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtNjUsOSArNjUsNiBAQAogICAgICMgb3IgdW5zaWduZWQuCiAgICAgb3V0cHV0LndyaXRlKHN0cnVjdC5wYWNrKCI8TCIsIHZhbHVlKSkKIAotZGVmIHJlYWQzMihpbnB1dCk6Ci0gICAgcmV0dXJuIHN0cnVjdC51bnBhY2soIjxJIiwgaW5wdXQucmVhZCg0KSlbMF0KLQogY2xhc3MgX1BhZGRlZEZpbGU6CiAgICAgIiIiTWluaW1hbCByZWFkLW9ubHkgZmlsZSBvYmplY3QgdGhhdCBwcmVwZW5kcyBhIHN0cmluZyB0byB0aGUgY29udGVudHMKICAgICBvZiBhbiBhY3R1YWwgZmlsZS4gU2hvdWxkbid0IGJlIHVzZWQgb3V0c2lkZSBvZiBnemlwLnB5LCBhcyBpdCBsYWNrcwpAQCAtMjgxLDI4ICsyNzgsMzIgQEAKICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGIiIikgJiAweGZmZmZmZmZmCiAgICAgICAgIHNlbGYuc2l6ZSA9IDAKIAorICAgIGRlZiBfcmVhZF9leGFjdChzZWxmLCBuKToKKyAgICAgICAgZGF0YSA9IHNlbGYuZmlsZW9iai5yZWFkKG4pCisgICAgICAgIHdoaWxlIGxlbihkYXRhKSA8IG46CisgICAgICAgICAgICBiID0gc2VsZi5maWxlb2JqLnJlYWQobiAtIGxlbihkYXRhKSkKKyAgICAgICAgICAgIGlmIG5vdCBiOgorICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgICAgIGRhdGEgKz0gYgorICAgICAgICByZXR1cm4gZGF0YQorCiAgICAgZGVmIF9yZWFkX2d6aXBfaGVhZGVyKHNlbGYpOgogICAgICAgICBtYWdpYyA9IHNlbGYuZmlsZW9iai5yZWFkKDIpCiAgICAgICAgIGlmIG1hZ2ljID09IGInJzoKLSAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJSZWFjaGVkIEVPRiIpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBpZiBtYWdpYyAhPSBiJ1wwMzdcMjEzJzoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ05vdCBhIGd6aXBwZWQgZmlsZScpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdOb3QgYSBnemlwcGVkIGZpbGUnKQogCi0gICAgICAgIG1ldGhvZCA9IG9yZCggc2VsZi5maWxlb2JqLnJlYWQoMSkgKQorICAgICAgICBtZXRob2QsIGZsYWcsIHNlbGYubXRpbWUgPSBzdHJ1Y3QudW5wYWNrKCI8QkJJeHgiLCBzZWxmLl9yZWFkX2V4YWN0KDgpKQogICAgICAgICBpZiBtZXRob2QgIT0gODoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ1Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJykKLSAgICAgICAgZmxhZyA9IG9yZCggc2VsZi5maWxlb2JqLnJlYWQoMSkgKQotICAgICAgICBzZWxmLm10aW1lID0gcmVhZDMyKHNlbGYuZmlsZW9iaikKLSAgICAgICAgIyBleHRyYWZsYWcgPSBzZWxmLmZpbGVvYmoucmVhZCgxKQotICAgICAgICAjIG9zID0gc2VsZi5maWxlb2JqLnJlYWQoMSkKLSAgICAgICAgc2VsZi5maWxlb2JqLnJlYWQoMikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ1Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJykKIAogICAgICAgICBpZiBmbGFnICYgRkVYVFJBOgogICAgICAgICAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgZXh0cmEgZmllbGQsIGlmIHByZXNlbnQKLSAgICAgICAgICAgIHhsZW4gPSBvcmQoc2VsZi5maWxlb2JqLnJlYWQoMSkpCi0gICAgICAgICAgICB4bGVuID0geGxlbiArIDI1NipvcmQoc2VsZi5maWxlb2JqLnJlYWQoMSkpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmoucmVhZCh4bGVuKQorICAgICAgICAgICAgZXh0cmFfbGVuLCA9IHN0cnVjdC51bnBhY2soIjxIIiwgc2VsZi5fcmVhZF9leGFjdCgyKSkKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfZXhhY3QoZXh0cmFfbGVuKQogICAgICAgICBpZiBmbGFnICYgRk5BTUU6CiAgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgpAQCAtMzE2LDE4ICszMTcsMTkgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiBmbGFnICYgRkhDUkM6Ci0gICAgICAgICAgICBzZWxmLmZpbGVvYmoucmVhZCgyKSAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgMTYtYml0IGhlYWRlciBDUkMKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfZXhhY3QoMikgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIDE2LWJpdCBoZWFkZXIgQ1JDCiAKICAgICAgICAgdW51c2VkID0gc2VsZi5maWxlb2JqLnVudXNlZCgpCiAgICAgICAgIGlmIHVudXNlZDoKICAgICAgICAgICAgIHVuY29tcHJlc3MgPSBzZWxmLmRlY29tcHJlc3MuZGVjb21wcmVzcyh1bnVzZWQpCiAgICAgICAgICAgICBzZWxmLl9hZGRfcmVhZF9kYXRhKHVuY29tcHJlc3MpCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgd3JpdGUoc2VsZixkYXRhKToKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFdSSVRFOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCi0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVCQURGLCAid3JpdGUoKSBvbiByZWFkLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJ3cml0ZSgpIG9uIHJlYWQtb25seSBHemlwRmlsZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUoKSBvbiBjbG9zZWQgR3ppcEZpbGUgb2JqZWN0IikKQEAgLTM0OCwyNyArMzUwLDIzIEBACiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCi0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVCQURGLCAicmVhZCgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJyZWFkKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGInJwogCiAgICAgICAgIHJlYWRzaXplID0gMTAyNAogICAgICAgICBpZiBzaXplIDwgMDogICAgICAgICMgZ2V0IHRoZSB3aG9sZSB0aGluZwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQocmVhZHNpemUpCi0gICAgICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKLSAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKLSAgICAgICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX3JlYWQocmVhZHNpemUpOgorICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQogICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICMganVzdCBnZXQgc29tZSBtb3JlIG9mIGl0Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgc2l6ZSA+IHNlbGYuZXh0cmFzaXplOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkKHJlYWRzaXplKQotICAgICAgICAgICAgICAgICAgICByZWFkc2l6ZSA9IG1pbihzZWxmLm1heF9yZWFkX2NodW5rLCByZWFkc2l6ZSAqIDIpCi0gICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6Ci0gICAgICAgICAgICAgICAgaWYgc2l6ZSA+IHNlbGYuZXh0cmFzaXplOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKKyAgICAgICAgICAgIHdoaWxlIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZChyZWFkc2l6ZSk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKIAogICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAogICAgICAgICBjaHVuayA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBvZmZzZXQgKyBzaXplXQpAQCAtMzgxLDE3ICszNzksMTQgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUJBREYsICJyZWFkMSgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJyZWFkMSgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLmZpbGVvYmogaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBiJycKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEZvciBjZXJ0YWluIGlucHV0IGRhdGEsIGEgc2luZ2xlIGNhbGwgdG8gX3JlYWQoKSBtYXkgbm90IHJldHVybgotICAgICAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KLSAgICAgICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplIDw9IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZCgpCi0gICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgIyBGb3IgY2VydGFpbiBpbnB1dCBkYXRhLCBhIHNpbmdsZSBjYWxsIHRvIF9yZWFkKCkgbWF5IG5vdCByZXR1cm4KKyAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KKyAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5fcmVhZCgpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBpZiBzaXplIDwgMCBvciBzaXplID4gc2VsZi5leHRyYXNpemU6CiAgICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKQEAgLTQwNSw3ICs0MDAsNyBAQAogICAgIGRlZiBwZWVrKHNlbGYsIG4pOgogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FQkFERiwgInBlZWsoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicGVlaygpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKIAogICAgICAgICAjIERvIG5vdCByZXR1cm4gcmlkaWN1bG91c2x5IHNtYWxsIGJ1ZmZlcnMsIGZvciBvbmUgY29tbW9uIGlkaW9tCiAgICAgICAgICMgaXMgdG8gY2FsbCBwZWVrKDEpIGFuZCBleHBlY3QgbW9yZSBieXRlcyBpbiByZXR1cm4uCkBAIC00MTQsMTIgKzQwOSw5IEBACiAgICAgICAgIGlmIHNlbGYuZXh0cmFzaXplID09IDA6CiAgICAgICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gYicnCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkb24ndCByZXR1cm4gYiIiIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZCBFT0YuCi0gICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpCi0gICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGRvbid0IHJldHVybiBiIiIgaWYgd2UgaGF2ZW4ndCByZWFjaGVkIEVPRi4KKyAgICAgICAgICAgICMgMTAyNCBpcyB0aGUgc2FtZSBidWZmZXJpbmcgaGV1cmlzdGljIHVzZWQgaW4gcmVhZCgpCisgICAgICAgICAgICB3aGlsZSBzZWxmLmV4dHJhc2l6ZSA9PSAwIGFuZCBzZWxmLl9yZWFkKG1heChuLCAxMDI0KSk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAogICAgICAgICByZW1haW5pbmcgPSBzZWxmLmV4dHJhc2l6ZQpAQCAtNDMyLDEzICs0MjQsMTQgQEAKIAogICAgIGRlZiBfcmVhZChzZWxmLCBzaXplPTEwMjQpOgogICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJSZWFjaGVkIEVPRiIpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBpZiBzZWxmLl9uZXdfbWVtYmVyOgogICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KICAgICAgICAgICAgICMganVtcCB0byB0aGUgbmV4dCBtZW1iZXIsIGlmIHRoZXJlIGlzIG9uZS4KICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZCgpCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2d6aXBfaGVhZGVyKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkX2d6aXBfaGVhZGVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBzZWxmLmRlY29tcHJlc3MgPSB6bGliLmRlY29tcHJlc3NvYmooLXpsaWIuTUFYX1dCSVRTKQogICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IEZhbHNlCiAKQEAgLTQ1NSw3ICs0NDgsNyBAQAogICAgICAgICAgICAgc2VsZi5maWxlb2JqLnByZXBlbmQoc2VsZi5kZWNvbXByZXNzLnVudXNlZF9kYXRhLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5fcmVhZF9lb2YoKQogICAgICAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCi0gICAgICAgICAgICByYWlzZSBFT0ZFcnJvcignUmVhY2hlZCBFT0YnKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5kZWNvbXByZXNzKGJ1ZikKICAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCkBAIC00NzEsNiArNDY0LDcgQEAKICAgICAgICAgICAgICMgYSBuZXcgbWVtYmVyIG9uIHRoZSBuZXh0IGNhbGwKICAgICAgICAgICAgIHNlbGYuX3JlYWRfZW9mKCkKICAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2FkZF9yZWFkX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihkYXRhLCBzZWxmLmNyYykgJiAweGZmZmZmZmZmCkBAIC00ODUsMTMgKzQ3OSwxMiBAQAogICAgICAgICAjIFdlIGNoZWNrIHRoZSB0aGF0IHRoZSBjb21wdXRlZCBDUkMgYW5kIHNpemUgb2YgdGhlCiAgICAgICAgICMgdW5jb21wcmVzc2VkIGRhdGEgbWF0Y2hlcyB0aGUgc3RvcmVkIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGUgc2l6ZQogICAgICAgICAjIHN0b3JlZCBpcyB0aGUgdHJ1ZSBmaWxlIHNpemUgbW9kIDIqKjMyLgotICAgICAgICBjcmMzMiA9IHJlYWQzMihzZWxmLmZpbGVvYmopCi0gICAgICAgIGlzaXplID0gcmVhZDMyKHNlbGYuZmlsZW9iaikgICMgbWF5IGV4Y2VlZCAyR0IKKyAgICAgICAgY3JjMzIsIGlzaXplID0gc3RydWN0LnVucGFjaygiPElJIiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKICAgICAgICAgaWYgY3JjMzIgIT0gc2VsZi5jcmM6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJDUkMgY2hlY2sgZmFpbGVkICVzICE9ICVzIiAlIChoZXgoY3JjMzIpLAorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ1JDIGNoZWNrIGZhaWxlZCAlcyAhPSAlcyIgJSAoaGV4KGNyYzMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleChzZWxmLmNyYykpKQogICAgICAgICBlbGlmIGlzaXplICE9IChzZWxmLnNpemUgJiAweGZmZmZmZmZmKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIkluY29ycmVjdCBsZW5ndGggb2YgZGF0YSBwcm9kdWNlZCIpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJJbmNvcnJlY3QgbGVuZ3RoIG9mIGRhdGEgcHJvZHVjZWQiKQogCiAgICAgICAgICMgR3ppcCBmaWxlcyBjYW4gYmUgcGFkZGVkIHdpdGggemVyb2VzIGFuZCBzdGlsbCBoYXZlIGFyY2hpdmVzLgogICAgICAgICAjIENvbnN1bWUgYWxsIHplcm8gYnl0ZXMgYW5kIHNldCB0aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgZmlyc3QKQEAgLTU0MCw3ICs1MzMsNyBAQAogICAgICAgICAnJydSZXR1cm4gdGhlIHVuY29tcHJlc3NlZCBzdHJlYW0gZmlsZSBwb3NpdGlvbiBpbmRpY2F0b3IgdG8gdGhlCiAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgZmlsZScnJwogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIkNhbid0IHJld2luZCBpbiB3cml0ZSBtb2RlIikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbid0IHJld2luZCBpbiB3cml0ZSBtb2RlIikKICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKICAgICAgICAgc2VsZi5leHRyYWJ1ZiA9IGIiIgpAQCAtNTY1LDcgKzU1OCw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VlayBmcm9tIGVuZCBub3Qgc3VwcG9ydGVkJykKICAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFOgogICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignTmVnYXRpdmUgc2VlayBpbiB3cml0ZSBtb2RlJykKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdOZWdhdGl2ZSBzZWVrIGluIHdyaXRlIG1vZGUnKQogICAgICAgICAgICAgY291bnQgPSBvZmZzZXQgLSBzZWxmLm9mZnNldAogICAgICAgICAgICAgY2h1bmsgPSBieXRlcygxMDI0KQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQgLy8gMTAyNCk6CmRpZmYgLS1naXQgYS9MaWIvaGFzaGxpYi5weSBiL0xpYi9oYXNobGliLnB5CmluZGV4IDIxNDU0YzcuLmExYmQ4YjIgMTAwNjQ0Ci0tLSBhL0xpYi9oYXNobGliLnB5CisrKyBiL0xpYi9oYXNobGliLnB5CkBAIC01NCw3ICs1NCw4IEBACiAKICMgVGhpcyB0dXBsZSBhbmQgX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcigpIG11c3QgYmUgbW9kaWZpZWQgaWYgYSBuZXcKICMgYWx3YXlzIGF2YWlsYWJsZSBhbGdvcml0aG0gaXMgYWRkZWQuCi1fX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicpCitfX2Fsd2F5c19zdXBwb3J0ZWQgPSAoJ21kNScsICdzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJykKIAogYWxnb3JpdGhtc19ndWFyYW50ZWVkID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKIGFsZ29yaXRobXNfYXZhaWxhYmxlID0gc2V0KF9fYWx3YXlzX3N1cHBvcnRlZCkKQEAgLTg1LDYgKzg2LDE4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIF9zaGE1MTIuc2hhNTEyCiAgICAgICAgICAgICBlbGlmIGJzID09ICczODQnOgogICAgICAgICAgICAgICAgIHJldHVybiBfc2hhNTEyLnNoYTM4NAorICAgICAgICBlbGlmIG5hbWUgaW4geydzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ1NIQTNfMjI0JywgJ1NIQTNfMjU2JywgJ1NIQTNfMzg0JywgJ1NIQTNfNTEyJ306CisgICAgICAgICAgICBpbXBvcnQgX3NoYTMKKyAgICAgICAgICAgIGJzID0gbmFtZVs1Ol0KKyAgICAgICAgICAgIGlmIGJzID09ICcyMjQnOgorICAgICAgICAgICAgICAgIHJldHVybiBfc2hhMy5zaGEzXzIyNAorICAgICAgICAgICAgZWxpZiBicyA9PSAnMjU2JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gX3NoYTMuc2hhM18yNTYKKyAgICAgICAgICAgIGVsaWYgYnMgPT0gJzM4NCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9zaGEzLnNoYTNfMzg0CisgICAgICAgICAgICBlbGlmIGJzID09ICc1MTInOgorICAgICAgICAgICAgICAgIHJldHVybiBfc2hhMy5zaGEzXzUxMgogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcyAgIyBubyBleHRlbnNpb24gbW9kdWxlLCB0aGlzIGhhc2ggaXMgdW5zdXBwb3J0ZWQuCiAKZGlmZiAtLWdpdCBhL0xpYi9obWFjLnB5IGIvTGliL2htYWMucHkKaW5kZXggNDI5N2E3MS4uZDEzYjIwNSAxMDA2NDQKLS0tIGEvTGliL2htYWMucHkKKysrIGIvTGliL2htYWMucHkKQEAgLTQsNyArNCw3IEBACiAiIiIKIAogaW1wb3J0IHdhcm5pbmdzIGFzIF93YXJuaW5ncwotZnJvbSBvcGVyYXRvciBpbXBvcnQgX2NvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfZGlnZXN0Citmcm9tIF9vcGVyYXRvciBpbXBvcnQgX2NvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfZGlnZXN0CiAKIHRyYW5zXzVDID0gYnl0ZXMoKHggXiAweDVDKSBmb3IgeCBpbiByYW5nZSgyNTYpKQogdHJhbnNfMzYgPSBieXRlcygoeCBeIDB4MzYpIGZvciB4IGluIHJhbmdlKDI1NikpCkBAIC0zMSwxMSArMzEsMTEgQEAKICAgICAgICAgICAgICAgICAgICBBIGhhc2hsaWIgY29uc3RydWN0b3IgcmV0dXJuaW5nIGEgbmV3IGhhc2ggb2JqZWN0LgogICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIGhhc2hsaWIubWQ1LgogCi0gICAgICAgIE5vdGU6IGtleSBhbmQgbXNnIG11c3QgYmUgYnl0ZXMgb2JqZWN0cy4KKyAgICAgICAgTm90ZToga2V5IGFuZCBtc2cgbXVzdCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3RzLgogICAgICAgICAiIiIKIAotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShrZXksIGJ5dGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5OiBleHBlY3RlZCBieXRlcywgYnV0IGdvdCAlciIgJSB0eXBlKGtleSkuX19uYW1lX18pCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5OiBleHBlY3RlZCBieXRlcyBvciBieXRlYXJyYXksIGJ1dCBnb3QgJXIiICUgdHlwZShrZXkpLl9fbmFtZV9fKQogCiAgICAgICAgIGlmIGRpZ2VzdG1vZCBpcyBOb25lOgogICAgICAgICAgICAgaW1wb3J0IGhhc2hsaWIKQEAgLTc1LDggKzc1LDYgQEAKICAgICBkZWYgdXBkYXRlKHNlbGYsIG1zZyk6CiAgICAgICAgICIiIlVwZGF0ZSB0aGlzIGhhc2hpbmcgb2JqZWN0IHdpdGggdGhlIHN0cmluZyBtc2cuCiAgICAgICAgICIiIgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtc2csIGJ5dGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIGJ1dCBnb3QgJXIiICUgdHlwZShtc2cpLl9fbmFtZV9fKQogICAgICAgICBzZWxmLmlubmVyLnVwZGF0ZShtc2cpCiAKICAgICBkZWYgY29weShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9odG1sL19faW5pdF9fLnB5IGIvTGliL2h0bWwvX19pbml0X18ucHkKaW5kZXggMDI2NTJlZi4uMmFkMTY3ZiAxMDA2NDQKLS0tIGEvTGliL2h0bWwvX19pbml0X18ucHkKKysrIGIvTGliL2h0bWwvX19pbml0X18ucHkKQEAgLTIsMTEgKzIsNiBAQAogR2VuZXJhbCBmdW5jdGlvbnMgZm9yIEhUTUwgbWFuaXB1bGF0aW9uLgogIiIiCiAKLQotX2VzY2FwZV9tYXAgPSB7b3JkKCcmJyk6ICcmYW1wOycsIG9yZCgnPCcpOiAnJmx0OycsIG9yZCgnPicpOiAnJmd0Oyd9Ci1fZXNjYXBlX21hcF9mdWxsID0ge29yZCgnJicpOiAnJmFtcDsnLCBvcmQoJzwnKTogJyZsdDsnLCBvcmQoJz4nKTogJyZndDsnLAotICAgICAgICAgICAgICAgICAgICBvcmQoJyInKTogJyZxdW90OycsIG9yZCgnXCcnKTogJyYjeDI3Oyd9Ci0KICMgTkI6IHRoaXMgaXMgYSBjYW5kaWRhdGUgZm9yIGEgYnl0ZXMvc3RyaW5nIHBvbHltb3JwaGljIGludGVyZmFjZQogCiBkZWYgZXNjYXBlKHMsIHF1b3RlPVRydWUpOgpAQCAtMTYsNiArMTEsMTAgQEAKICAgICBjaGFyYWN0ZXJzLCBib3RoIGRvdWJsZSBxdW90ZSAoIikgYW5kIHNpbmdsZSBxdW90ZSAoJykgY2hhcmFjdGVycyBhcmUgYWxzbwogICAgIHRyYW5zbGF0ZWQuCiAgICAgIiIiCisgICAgcyA9IHMucmVwbGFjZSgiJiIsICImYW1wOyIpICMgTXVzdCBiZSBkb25lIGZpcnN0IQorICAgIHMgPSBzLnJlcGxhY2UoIjwiLCAiJmx0OyIpCisgICAgcyA9IHMucmVwbGFjZSgiPiIsICImZ3Q7IikKICAgICBpZiBxdW90ZToKLSAgICAgICAgcmV0dXJuIHMudHJhbnNsYXRlKF9lc2NhcGVfbWFwX2Z1bGwpCi0gICAgcmV0dXJuIHMudHJhbnNsYXRlKF9lc2NhcGVfbWFwKQorICAgICAgICBzID0gcy5yZXBsYWNlKCciJywgIiZxdW90OyIpCisgICAgICAgIHMgPSBzLnJlcGxhY2UoJ1wnJywgIiYjeDI3OyIpCisgICAgcmV0dXJuIHMKZGlmZiAtLWdpdCBhL0xpYi9odG1sL3BhcnNlci5weSBiL0xpYi9odG1sL3BhcnNlci5weQppbmRleCA2MGEzMjJhLi4xOGYzMTE1IDEwMDY0NAotLS0gYS9MaWIvaHRtbC9wYXJzZXIucHkKKysrIGIvTGliL2h0bWwvcGFyc2VyLnB5CkBAIC0xMiw2ICsxMiw4IEBACiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogCitfX2FsbF9fID0gWydIVE1MUGFyc2VyJ10KKwogIyBSZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgZm9yIHBhcnNpbmcKIAogaW50ZXJlc3Rpbmdfbm9ybWFsID0gcmUuY29tcGlsZSgnWyY8XScpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jbGllbnQucHkgYi9MaWIvaHR0cC9jbGllbnQucHkKaW5kZXggYjcyY2YwOC4uOTM5NjE1YiAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY2xpZW50LnB5CisrKyBiL0xpYi9odHRwL2NsaWVudC5weQpAQCAtMjY3LDggKzI2Nyw2IEBACiAgICAgcmV0dXJuIGVtYWlsLnBhcnNlci5QYXJzZXIoX2NsYXNzPV9jbGFzcykucGFyc2VzdHIoaHN0cmluZykKIAogCi1fc3RyaWN0X3NlbnRpbmVsID0gb2JqZWN0KCkKLQogY2xhc3MgSFRUUFJlc3BvbnNlKGlvLlJhd0lPQmFzZSk6CiAKICAgICAjIFNlZSBSRkMgMjYxNiBzZWMgMTkuNiBhbmQgUkZDIDE5NDUgc2VjIDYgZm9yIGRldGFpbHMuCkBAIC0yNzgsNyArMjc2LDcgQEAKICAgICAjIHRleHQgZm9sbG93aW5nIFJGQyAyMDQ3LiAgVGhlIGJhc2ljIHN0YXR1cyBsaW5lIHBhcnNpbmcgb25seQogICAgICMgYWNjZXB0cyBpc28tODg1OS0xLgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2ssIGRlYnVnbGV2ZWw9MCwgc3RyaWN0PV9zdHJpY3Rfc2VudGluZWwsIG1ldGhvZD1Ob25lLCB1cmw9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2ssIGRlYnVnbGV2ZWw9MCwgbWV0aG9kPU5vbmUsIHVybD1Ob25lKToKICAgICAgICAgIyBJZiB0aGUgcmVzcG9uc2UgaW5jbHVkZXMgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIsIHdlIG5lZWQgdG8KICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgY2xpZW50IGRvZXNuJ3QgcmVhZCBtb3JlIHRoYW4gdGhlCiAgICAgICAgICMgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcy4gIElmIGl0IGRvZXMsIGl0IHdpbGwgYmxvY2sgdW50aWwKQEAgLTI4OCwxMCArMjg2LDYgQEAKICAgICAgICAgIyBjbGllbnRzIHVubGVzcyB0aGV5IGtub3cgd2hhdCB0aGV5IGFyZSBkb2luZy4KICAgICAgICAgc2VsZi5mcCA9IHNvY2subWFrZWZpbGUoInJiIikKICAgICAgICAgc2VsZi5kZWJ1Z2xldmVsID0gZGVidWdsZXZlbAotICAgICAgICBpZiBzdHJpY3QgaXMgbm90IF9zdHJpY3Rfc2VudGluZWw6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ0aGUgJ3N0cmljdCcgYXJndW1lbnQgaXNuJ3Qgc3VwcG9ydGVkIGFueW1vcmU7ICIKLSAgICAgICAgICAgICAgICAiaHR0cC5jbGllbnQgbm93IGFsd2F5cyBhc3N1bWVzIEhUVFAvMS54IGNvbXBsaWFudCBzZXJ2ZXJzLiIsCi0gICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLl9tZXRob2QgPSBtZXRob2QKIAogICAgICAgICAjIFRoZSBIVFRQUmVzcG9uc2Ugb2JqZWN0IGlzIHJldHVybmVkIHZpYSB1cmxsaWIuICBUaGUgY2xpZW50cwpAQCAtNzI4LDEzICs3MjIsMTcgQEAKICAgICBkZWZhdWx0X3BvcnQgPSBIVFRQX1BPUlQKICAgICBhdXRvX29wZW4gPSAxCiAgICAgZGVidWdsZXZlbCA9IDAKKyAgICAjIFRDUCBNYXhpbXVtIFNlZ21lbnQgU2l6ZSAoTVNTKSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBUQ1Agc3RhY2sgb24KKyAgICAjIGEgcGVyLWNvbm5lY3Rpb24gYmFzaXMuICBUaGVyZSBpcyBubyBzaW1wbGUgYW5kIGVmZmljaWVudAorICAgICMgcGxhdGZvcm0gaW5kZXBlbmRlbnQgbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZyB0aGUgTVNTLCBzbworICAgICMgaW5zdGVhZCBhIHJlYXNvbmFibGUgZXN0aW1hdGUgaXMgY2hvc2VuLiAgVGhlIGdldHNvY2tvcHQoKQorICAgICMgaW50ZXJmYWNlIHVzaW5nIHRoZSBUQ1BfTUFYU0VHIHBhcmFtZXRlciBtYXkgYmUgYSBzdWl0YWJsZQorICAgICMgYXBwcm9hY2ggb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcy4gQSB2YWx1ZSBvZiAxNktpQiBpcyBjaG9zZW4KKyAgICAjIGFzIGEgcmVhc29uYWJsZSBlc3RpbWF0ZSBvZiB0aGUgbWF4aW11bSBNU1MuCisgICAgbXNzID0gMTYzODQKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5vbmUsIHN0cmljdD1fc3RyaWN0X3NlbnRpbmVsLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6Ci0gICAgICAgIGlmIHN0cmljdCBpcyBub3QgX3N0cmljdF9zZW50aW5lbDoKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInRoZSAnc3RyaWN0JyBhcmd1bWVudCBpc24ndCBzdXBwb3J0ZWQgYW55bW9yZTsgIgotICAgICAgICAgICAgICAgICJodHRwLmNsaWVudCBub3cgYWx3YXlzIGFzc3VtZXMgSFRUUC8xLnggY29tcGxpYW50IHNlcnZlcnMuIiwKLSAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogICAgICAgICBzZWxmLnNvY2sgPSBOb25lCkBAIC04MDAsOCArNzk4LDggQEAKIAogICAgICAgICBpZiBjb2RlICE9IDIwMDoKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQotICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKCJUdW5uZWwgY29ubmVjdGlvbiBmYWlsZWQ6ICVkICVzIiAlIChjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnN0cmlwKCkpKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiVHVubmVsIGNvbm5lY3Rpb24gZmFpbGVkOiAlZCAlcyIgJSAoY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Uuc3RyaXAoKSkpCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBsaW5lID0gcmVzcG9uc2UuZnAucmVhZGxpbmUoX01BWExJTkUgKyAxKQogICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CkBAIC04OTUsOCArODkzLDExIEBACiAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOl0KICAgICAgICAgIyBJZiBtc2cgYW5kIG1lc3NhZ2VfYm9keSBhcmUgc2VudCBpbiBhIHNpbmdsZSBzZW5kKCkgY2FsbCwKICAgICAgICAgIyBpdCB3aWxsIGF2b2lkIHBlcmZvcm1hbmNlIHByb2JsZW1zIGNhdXNlZCBieSB0aGUgaW50ZXJhY3Rpb24KLSAgICAgICAgIyBiZXR3ZWVuIGRlbGF5ZWQgYWNrIGFuZCB0aGUgTmFnbGUgYWxnb3JpdGhtLgotICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2VfYm9keSwgYnl0ZXMpOgorICAgICAgICAjIGJldHdlZW4gZGVsYXllZCBhY2sgYW5kIHRoZSBOYWdsZSBhbGdvcml0aG0uIEhvd2V2ZXIsCisgICAgICAgICMgdGhlcmUgaXMgbm8gcGVyZm9ybWFuY2UgZ2FpbiBpZiB0aGUgbWVzc2FnZSBpcyBsYXJnZXIKKyAgICAgICAgIyB0aGFuIE1TUyAoYW5kIHRoZXJlIGlzIGEgbWVtb3J5IHBlbmFsdHkgZm9yIHRoZSBtZXNzYWdlCisgICAgICAgICMgY29weSkuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZV9ib2R5LCBieXRlcykgYW5kIGxlbihtZXNzYWdlX2JvZHkpIDwgc2VsZi5tc3M6CiAgICAgICAgICAgICBtc2cgKz0gbWVzc2FnZV9ib2R5CiAgICAgICAgICAgICBtZXNzYWdlX2JvZHkgPSBOb25lCiAgICAgICAgIHNlbGYuc2VuZChtc2cpCkBAIC0xMTY2LDkgKzExNjcsMTAgQEAKICAgICAgICAgIyBYWFggU2hvdWxkIGtleV9maWxlIGFuZCBjZXJ0X2ZpbGUgYmUgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgY29udGV4dD8KIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1Ob25lLCBrZXlfZmlsZT1Ob25lLCBjZXJ0X2ZpbGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1fc3RyaWN0X3NlbnRpbmVsLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKLSAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUsICosIGNvbnRleHQ9Tm9uZSwgY2hlY2tfaG9zdG5hbWU9Tm9uZSk6Ci0gICAgICAgICAgICBzdXBlcihIVFRQU0Nvbm5lY3Rpb24sIHNlbGYpLl9faW5pdF9fKGhvc3QsIHBvcnQsIHN0cmljdCwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAorICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSwgKiwgY29udGV4dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9Tm9uZSk6CisgICAgICAgICAgICBzdXBlcihIVFRQU0Nvbm5lY3Rpb24sIHNlbGYpLl9faW5pdF9fKGhvc3QsIHBvcnQsIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzKQogICAgICAgICAgICAgc2VsZi5rZXlfZmlsZSA9IGtleV9maWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRfZmlsZSA9IGNlcnRfZmlsZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llamFyLnB5IGIvTGliL2h0dHAvY29va2llamFyLnB5CmluZGV4IGRkYjc5YzUuLmJlODI4ZWIgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZWphci5weQorKysgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKQEAgLTExOTMsOCArMTE5Myw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gVHJ1ZQotICAgICAgICAgICAgZm9yIHN1Ym9iaiBpbiBkZWVwdmFsdWVzKG9iaik6Ci0gICAgICAgICAgICAgICAgeWllbGQgc3Vib2JqCisgICAgICAgICAgICB5aWVsZCBmcm9tIGRlZXB2YWx1ZXMob2JqKQogICAgICAgICBpZiBub3QgbWFwcGluZzoKICAgICAgICAgICAgIHlpZWxkIG9iagogCkBAIC0xNzMxLDggKzE3MzAsOCBAQAogICAgICAgICByZXR1cm4gIjwlc1slc10+IiAlIChzZWxmLl9fY2xhc3NfXywgIiwgIi5qb2luKHIpKQogCiAKLSMgZGVyaXZlcyBmcm9tIElPRXJyb3IgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuNC4wCi1jbGFzcyBMb2FkRXJyb3IoSU9FcnJvcik6IHBhc3MKKyMgZGVyaXZlcyBmcm9tIE9TRXJyb3IgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuNC4wCitjbGFzcyBMb2FkRXJyb3IoT1NFcnJvcik6IHBhc3MKIAogY2xhc3MgRmlsZUNvb2tpZUphcihDb29raWVKYXIpOgogICAgICIiIkNvb2tpZUphciB0aGF0IGNhbiBiZSBsb2FkZWQgZnJvbSBhbmQgc2F2ZWQgdG8gYSBmaWxlLiIiIgpAQCAtMTc2MiwxNyArMTc2MSwxNCBAQAogICAgICAgICAgICAgaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZTogZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lCiAgICAgICAgICAgICBlbHNlOiByYWlzZSBWYWx1ZUVycm9yKE1JU1NJTkdfRklMRU5BTUVfVEVYVCkKIAotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLl9yZWFsbHlfbG9hZChmLCBmaWxlbmFtZSwgaWdub3JlX2Rpc2NhcmQsIGlnbm9yZV9leHBpcmVzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgcmV2ZXJ0KHNlbGYsIGZpbGVuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICBpZ25vcmVfZGlzY2FyZD1GYWxzZSwgaWdub3JlX2V4cGlyZXM9RmFsc2UpOgogICAgICAgICAiIiJDbGVhciBhbGwgY29va2llcyBhbmQgcmVsb2FkIGNvb2tpZXMgZnJvbSBhIHNhdmVkIGZpbGUuCiAKLSAgICAgICAgUmFpc2VzIExvYWRFcnJvciAob3IgSU9FcnJvcikgaWYgcmV2ZXJzaW9uIGlzIG5vdCBzdWNjZXNzZnVsOyB0aGUKKyAgICAgICAgUmFpc2VzIExvYWRFcnJvciAob3IgT1NFcnJvcikgaWYgcmV2ZXJzaW9uIGlzIG5vdCBzdWNjZXNzZnVsOyB0aGUKICAgICAgICAgb2JqZWN0J3Mgc3RhdGUgd2lsbCBub3QgYmUgYWx0ZXJlZCBpZiB0aGlzIGhhcHBlbnMuCiAKICAgICAgICAgIiIiCkBAIC0xNzg3LDcgKzE3ODMsNyBAQAogICAgICAgICAgICAgc2VsZi5fY29va2llcyA9IHt9CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2FkKGZpbGVuYW1lLCBpZ25vcmVfZGlzY2FyZCwgaWdub3JlX2V4cGlyZXMpCi0gICAgICAgICAgICBleGNlcHQgKExvYWRFcnJvciwgSU9FcnJvcik6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxmLl9jb29raWVzID0gb2xkX3N0YXRlCiAgICAgICAgICAgICAgICAgcmFpc2UKIApAQCAtMTg1NywxNSArMTg1MywxMiBAQAogICAgICAgICAgICAgaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZTogZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lCiAgICAgICAgICAgICBlbHNlOiByYWlzZSBWYWx1ZUVycm9yKE1JU1NJTkdfRklMRU5BTUVfVEVYVCkKIAotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgInciKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmOgogICAgICAgICAgICAgIyBUaGVyZSByZWFsbHkgaXNuJ3QgYW4gTFdQIENvb2tpZXMgMi4wIGZvcm1hdCwgYnV0IHRoaXMgaW5kaWNhdGVzCiAgICAgICAgICAgICAjIHRoYXQgdGhlcmUgaXMgZXh0cmEgaW5mb3JtYXRpb24gaW4gaGVyZSAoZG9tYWluX2RvdCBhbmQKICAgICAgICAgICAgICMgcG9ydF9zcGVjKSB3aGlsZSBzdGlsbCBiZWluZyBjb21wYXRpYmxlIHdpdGggbGlid3d3LXBlcmwsIEkgaG9wZS4KICAgICAgICAgICAgIGYud3JpdGUoIiNMV1AtQ29va2llcy0yLjBcbiIpCiAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXNfbHdwX3N0cihpZ25vcmVfZGlzY2FyZCwgaWdub3JlX2V4cGlyZXMpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgX3JlYWxseV9sb2FkKHNlbGYsIGYsIGZpbGVuYW1lLCBpZ25vcmVfZGlzY2FyZCwgaWdub3JlX2V4cGlyZXMpOgogICAgICAgICBtYWdpYyA9IGYucmVhZGxpbmUoKQpAQCAtMTkzOCw4ICsxOTMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlnbm9yZV9leHBpcmVzIGFuZCBjLmlzX2V4cGlyZWQobm93KToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X2Nvb2tpZShjKQotCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBfd2Fybl91bmhhbmRsZWRfZXhjZXB0aW9uKCkKQEAgLTIwNDUsNyArMjAzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgc2VsZi5zZXRfY29va2llKGMpCiAKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIF93YXJuX3VuaGFuZGxlZF9leGNlcHRpb24oKQpAQCAtMjA1Nyw4ICsyMDQ5LDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZW5hbWUgaXMgbm90IE5vbmU6IGZpbGVuYW1lID0gc2VsZi5maWxlbmFtZQogICAgICAgICAgICAgZWxzZTogcmFpc2UgVmFsdWVFcnJvcihNSVNTSU5HX0ZJTEVOQU1FX1RFWFQpCiAKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICJ3IikKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5oZWFkZXIpCiAgICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgZm9yIGNvb2tpZSBpbiBzZWxmOgpAQCAtMjA4Nyw1ICsyMDc4LDMgQEAKICAgICAgICAgICAgICAgICAgICAgIlx0Ii5qb2luKFtjb29raWUuZG9tYWluLCBpbml0aWFsX2RvdCwgY29va2llLnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJlLCBleHBpcmVzLCBuYW1lLCB2YWx1ZV0pKwogICAgICAgICAgICAgICAgICAgICAiXG4iKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9zZXJ2ZXIucHkgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKaW5kZXggYzRhYzcwMy4uZTQ3ZTAzNCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvc2VydmVyLnB5CisrKyBiL0xpYi9odHRwL3NlcnZlci5weQpAQCAtNDAxLDEyICs0MDEsMTcgQEAKICAgICAgICAgd2hpbGUgbm90IHNlbGYuY2xvc2VfY29ubmVjdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlX29uZV9yZXF1ZXN0KCkKIAotICAgIGRlZiBzZW5kX2Vycm9yKHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6CisgICAgZGVmIHNlbmRfZXJyb3Ioc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lLCBleHBsYWluPU5vbmUpOgogICAgICAgICAiIiJTZW5kIGFuZCBsb2cgYW4gZXJyb3IgcmVwbHkuCiAKLSAgICAgICAgQXJndW1lbnRzIGFyZSB0aGUgZXJyb3IgY29kZSwgYW5kIGEgZGV0YWlsZWQgbWVzc2FnZS4KLSAgICAgICAgVGhlIGRldGFpbGVkIG1lc3NhZ2UgZGVmYXVsdHMgdG8gdGhlIHNob3J0IGVudHJ5IG1hdGNoaW5nIHRoZQotICAgICAgICByZXNwb25zZSBjb2RlLgorICAgICAgICBBcmd1bWVudHMgYXJlCisgICAgICAgICogY29kZTogICAgYW4gSFRUUCBlcnJvciBjb2RlCisgICAgICAgICAgICAgICAgICAgMyBkaWdpdHMKKyAgICAgICAgKiBtZXNzYWdlOiBhIHNpbXBsZSBvcHRpb25hbCAxIGxpbmUgcmVhc29uIHBocmFzZS4KKyAgICAgICAgICAgICAgICAgICAqKCBIVEFCIC8gU1AgLyBWQ0hBUiAvICV4ODAtRkYgKQorICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzIHRvIHNob3J0IGVudHJ5IG1hdGNoaW5nIHRoZSByZXNwb25zZSBjb2RlCisgICAgICAgICogZXhwbGFpbjogYSBkZXRhaWxlZCBtZXNzYWdlIGRlZmF1bHRzIHRvIHRoZSBsb25nIGVudHJ5CisgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgdGhlIHJlc3BvbnNlIGNvZGUuCiAKICAgICAgICAgVGhpcyBzZW5kcyBhbiBlcnJvciByZXNwb25zZSAoc28gaXQgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueQogICAgICAgICBvdXRwdXQgaGFzIGJlZW4gZ2VuZXJhdGVkKSwgbG9ncyB0aGUgZXJyb3IsIGFuZCBmaW5hbGx5IHNlbmRzCkBAIC00MjAsMTcgKzQyNSwyMCBAQAogICAgICAgICAgICAgc2hvcnRtc2csIGxvbmdtc2cgPSAnPz8/JywgJz8/PycKICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgogICAgICAgICAgICAgbWVzc2FnZSA9IHNob3J0bXNnCi0gICAgICAgIGV4cGxhaW4gPSBsb25nbXNnCisgICAgICAgIGlmIGV4cGxhaW4gaXMgTm9uZToKKyAgICAgICAgICAgIGV4cGxhaW4gPSBsb25nbXNnCiAgICAgICAgIHNlbGYubG9nX2Vycm9yKCJjb2RlICVkLCBtZXNzYWdlICVzIiwgY29kZSwgbWVzc2FnZSkKICAgICAgICAgIyB1c2luZyBfcXVvdGVfaHRtbCB0byBwcmV2ZW50IENyb3NzIFNpdGUgU2NyaXB0aW5nIGF0dGFja3MgKHNlZSBidWcgIzExMDAyMDEpCiAgICAgICAgIGNvbnRlbnQgPSAoc2VsZi5lcnJvcl9tZXNzYWdlX2Zvcm1hdCAlCi0gICAgICAgICAgICAgICAgICAgeydjb2RlJzogY29kZSwgJ21lc3NhZ2UnOiBfcXVvdGVfaHRtbChtZXNzYWdlKSwgJ2V4cGxhaW4nOiBleHBsYWlufSkKKyAgICAgICAgICAgICAgICAgICB7J2NvZGUnOiBjb2RlLCAnbWVzc2FnZSc6IF9xdW90ZV9odG1sKG1lc3NhZ2UpLCAnZXhwbGFpbic6IF9xdW90ZV9odG1sKGV4cGxhaW4pfSkKKyAgICAgICAgYm9keSA9IGNvbnRlbnQuZW5jb2RlKCdVVEYtOCcsICdyZXBsYWNlJykKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKGNvZGUsIG1lc3NhZ2UpCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtVHlwZSIsIHNlbGYuZXJyb3JfY29udGVudF90eXBlKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb25uZWN0aW9uJywgJ2Nsb3NlJykKKyAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1MZW5ndGgnLCBpbnQobGVuKGJvZHkpKSkKICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgIGlmIHNlbGYuY29tbWFuZCAhPSAnSEVBRCcgYW5kIGNvZGUgPj0gMjAwIGFuZCBjb2RlIG5vdCBpbiAoMjA0LCAzMDQpOgotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShjb250ZW50LmVuY29kZSgnVVRGLTgnLCAncmVwbGFjZScpKQorICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShib2R5KQogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Uoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiQWRkIHRoZSByZXNwb25zZSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBsb2cgdGhlCkBAIC03MDksNyArNzE3LDcgQEAKICAgICAgICAgY3R5cGUgPSBzZWxmLmd1ZXNzX3R5cGUocGF0aCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3JiJykKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIkZpbGUgbm90IGZvdW5kIikKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCkBAIC03MzAsNyArNzM4LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxpc3QgPSBvcy5saXN0ZGlyKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0LCAiTm8gcGVybWlzc2lvbiB0byBsaXN0IGRpcmVjdG9yeSIpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBsaXN0LnNvcnQoa2V5PWxhbWJkYSBhOiBhLmxvd2VyKCkpCkBAIC0xMTIxLDcgKzExMjksNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3Muc2V0dWlkKG5vYm9keSkKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBvcy5kdXAyKHNlbGYucmZpbGUuZmlsZW5vKCksIDApCiAgICAgICAgICAgICAgICAgb3MuZHVwMihzZWxmLndmaWxlLmZpbGVubygpLCAxKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CmluZGV4IGM5YWQzNjQuLmVhZjY4Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKQEAgLTU0OCw3ICs1NDgsNyBAQAogICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnN0YXJ0ZmlsZShzZWxmLmhlbHBfdXJsKQotICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyB3aHk6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRG9jdW1lbnQgU3RhcnQgRmFpbHVyZScsCiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKHdoeSksIHBhcmVudD1zZWxmLnRleHQpCiAgICAgICAgIGVsc2U6CkBAIC04NzEsNyArODcxLDcgQEAKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5zdGFydGZpbGUoaGVscGZpbGUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyB3aHk6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdEb2N1bWVudCBTdGFydCBGYWlsdXJlJywKICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKHdoeSksIHBhcmVudD1zZWxmLnRleHQpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkgYi9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weQppbmRleCAzN2EzMzdlLi5hOTk4OWE4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weQpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzYWJzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwd2QgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihwd2QsIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weSBiL0xpYi9pZGxlbGliL0dyZXBEaWFsb2cucHkKaW5kZXggMmUwNzMxMi4uYzAwNzRlMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CkBAIC0xMjUsNCArMTI1LDMgQEAKICAgICAjIEhlbmNlIElkbGUgbXVzdCBiZSByZXN0YXJ0ZWQgYWZ0ZXIgZWRpdGluZyB0aGlzIGZpbGUgZm9yIGEgbGl2ZSB0ZXN0LgogICAgIGltcG9ydCB1bml0dGVzdAogICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZ3JlcCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQotCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKaW5kZXggNDU1OGFlNi4uMjAzYjAwOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQpAQCAtNTAxLDcgKzUwMSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcHdkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHB3ZCA9ICIiCiAgICAgICAgICAgICByZXR1cm4gcHdkLCAiIgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ORVdTLnR4dCBiL0xpYi9pZGxlbGliL05FV1MudHh0CmluZGV4IDU0NTA3MDEuLjQ3OGMxODMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL05FV1MudHh0CisrKyBiL0xpYi9pZGxlbGliL05FV1MudHh0CkBAIC0xLDEyICsxLDEwIEBACi1XaGF0J3MgTmV3IGluIElETEUgMy4zLjI/CitXaGF0J3MgTmV3IGluIElETEUgMy40LjA/CiA9PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC0gSXNzdWUgIzE3MzkwOiBEaXNwbGF5IFB5dGhvbiB2ZXJzaW9uIG9uIElkbGUgdGl0bGUgYmFyLgogICBJbml0aWFsIHBhdGNoIGJ5IEVkbW9uZCBCdXJuZXR0LgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjMuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSXNzdWUgIzUwNjY6IFVwZGF0ZSBJRExFIGRvY3MuIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgogCiAtIElzc3VlICMxNzYyNTogQ2xvc2UgdGhlIHJlcGxhY2UgZGlhbG9nIGFmdGVyIGl0IGlzIHVzZWQuCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKaW5kZXggYmE0MDcxOS4uNWU1YzZiZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBkZWYgR2V0U3ViTGlzdChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHNlbGYuZGlyIG9yIG9zLmN1cmRpcikKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHJldHVybiBbXQogICAgICAgICBwYWNrYWdlcyA9IFtdCiAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKaW5kZXggYjg5NDQ2Mi4uZmFmZWVmZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weQorKysgYi9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CkBAIC00MTksNyArNDE5LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnJwY2NsdCA9IE15UlBDQ2xpZW50KGFkZHIpCiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9wb3J0X2JpbmRpbmdfZXJyb3IoKQpAQCAtMTAzNCw3ICsxMDM0LDEwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBub3N1YiA9ICI9PT09IE5vIFN1YnByb2Nlc3MgPT09PSIKKyAgICAgICAgICAgIG5vc3ViID0gKCI9PT09IE5vIFN1YnByb2Nlc3MgPT09PVxuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgIldBUk5JTkc6IFJ1bm5pbmcgSURMRSB3aXRob3V0IGEgU3VicHJvY2VzcyBpcyBkZXByZWNhdGVkXG4iICsKKyAgICAgICAgICAgICAgICAgICAgImFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBsYXRlciB2ZXJzaW9uLiBTZWUgSGVscC9JRExFIEhlbHBcbiIgKworICAgICAgICAgICAgICAgICAgICAiZm9yIGRldGFpbHMuXG5cbiIpCiAgICAgICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKIAogICAgICAgICBzZWxmLndyaXRlKCJQeXRob24gJXMgb24gJXNcbiVzXG4lcyIgJQpAQCAtMTM5Miw3ICsxMzk1LDggQEAKICAgICAgICBpZGxlICBbLWRuc10gWy10IHRpdGxlXSAtIFthcmddKgogCiAgIC1oICAgICAgICAgcHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgLW4gICAgICAgICBydW4gSURMRSB3aXRob3V0IGEgc3VicHJvY2VzcyAoc2VlIEhlbHAvSURMRSBIZWxwIGZvciBkZXRhaWxzKQorICAtbiAgICAgICAgIHJ1biBJRExFIHdpdGhvdXQgYSBzdWJwcm9jZXNzIChERVBSRUNBVEVELAorICAgICAgICAgICAgIHNlZSBIZWxwL0lETEUgSGVscCBmb3IgZGV0YWlscykKIAogVGhlIGZvbGxvd2luZyBvcHRpb25zIHdpbGwgb3ZlcnJpZGUgdGhlIElETEUgJ3NldHRpbmdzJyBjb25maWd1cmF0aW9uOgogCkBAIC0xNDcwLDYgKzE0NzQsOCBAQAogICAgICAgICBpZiBvID09ICctaSc6CiAgICAgICAgICAgICBlbmFibGVfc2hlbGwgPSBUcnVlCiAgICAgICAgIGlmIG8gPT0gJy1uJzoKKyAgICAgICAgICAgIHByaW50KCIgV2FybmluZzogcnVubmluZyBJRExFIHdpdGhvdXQgYSBzdWJwcm9jZXNzIGlzIGRlcHJlY2F0ZWQuIiwKKyAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgIHVzZV9zdWJwcm9jZXNzID0gRmFsc2UKICAgICAgICAgaWYgbyA9PSAnLXInOgogICAgICAgICAgICAgc2NyaXB0ID0gYQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weSBiL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKaW5kZXggMjViYWU0OC4uMWY0ODU0ZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQorKysgYi9MaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5CkBAIC0zODEsNyArMzgxLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MucmVuYW1lKHNlbGYucGF0aCwgbmV3cGF0aCkKICAgICAgICAgICAgIHNlbGYucGF0aCA9IG5ld3BhdGgKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiBHZXRJY29uTmFtZShzZWxmKToKQEAgLTM5NCw3ICszOTQsNyBAQAogICAgIGRlZiBHZXRTdWJMaXN0KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc2VsZi5wYXRoKQotICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgIG5hbWVzLnNvcnQoa2V5ID0gb3MucGF0aC5ub3JtY2FzZSkKICAgICAgICAgc3VibGlzdCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQppbmRleCBhOTc0ZDU0Li5lYTIwMTBlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKQEAgLTI3MSw4ICsyNzEsMTAgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKwogICAgIGRlZiBTZXRPcHRpb24oc2VsZiwgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSk6CiAgICAgICAgICIiIkluIHVzZXIncyBjb25maWcgZmlsZSwgc2V0IHNlY3Rpb24ncyBvcHRpb24gdG8gdmFsdWUuCisKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudXNlckNmZ1tjb25maWdUeXBlXS5TZXRPcHRpb24oc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSkKIApAQCAtNjM4LDggKzY0MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIGtleUJpbmRpbmdzCisKICAgICBkZWYgR2V0RXh0cmFIZWxwU291cmNlTGlzdChzZWxmLGNvbmZpZ1NldCk6CiAgICAgICAgICIiIkZldGNoIGxpc3Qgb2YgZXh0cmEgaGVscCBzb3VyY2VzIGZyb20gYSBnaXZlbiBjb25maWdTZXQuCisKICAgICAgICAgVmFsaWQgY29uZmlnU2V0cyBhcmUgJ3VzZXInIG9yICdkZWZhdWx0Jy4gIFJldHVybiBhIGxpc3Qgb2YgdHVwbGVzIG9mCiAgICAgICAgIHRoZSBmb3JtIChtZW51X2l0ZW0gLCBwYXRoX3RvX2hlbHBfZmlsZSAsIG9wdGlvbiksIG9yIHJldHVybiB0aGUgZW1wdHkKICAgICAgICAgbGlzdC4gICdvcHRpb24nIGlzIHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGhlbHAgcmVzb3VyY2UuICAnb3B0aW9uJwpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaGVscC50eHQgYi9MaWIvaWRsZWxpYi9oZWxwLnR4dAppbmRleCBmZjc4NmM1Li42Mzc4YTJlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnR4dAorKysgYi9MaWIvaWRsZWxpYi9oZWxwLnR4dApAQCAtMSwxNDIgKzEsMTg1IEBACiBbU2VlIHRoZSBlbmQgb2YgdGhpcyBmaWxlIGZvciAqKiBUSVBTICoqIG9uIHVzaW5nIElETEUgISFdCiAKLUNsaWNrIG9uIHRoZSBkb3R0ZWQgbGluZSBhdCB0aGUgdG9wIG9mIGEgbWVudSB0byAidGVhciBpdCBvZmYiOiBhCi1zZXBhcmF0ZSB3aW5kb3cgY29udGFpbmluZyB0aGUgbWVudSBpcyBjcmVhdGVkLgorSURMRSBpcyB0aGUgUHl0aG9uIElERSBidWlsdCB3aXRoIHRoZSB0a2ludGVyIEdVSSB0b29sa2l0LgogCi1GaWxlIE1lbnU6CitJRExFIGhhcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgorLWNvZGVkIGluIDEwMCUgcHVyZSBQeXRob24sIHVzaW5nIHRoZSB0a2ludGVyIEdVSSB0b29sa2l0CistY3Jvc3MtcGxhdGZvcm06IHdvcmtzIG9uIFdpbmRvd3MsIFVuaXgsIGFuZCBPUyBYCistbXVsdGktd2luZG93IHRleHQgZWRpdG9yIHdpdGggbXVsdGlwbGUgdW5kbywgUHl0aG9uIGNvbG9yaXppbmcsIHNtYXJ0IGluZGVudCwKK2NhbGwgdGlwcywgYW5kIG1hbnkgb3RoZXIgZmVhdHVyZXMKKy1QeXRob24gc2hlbGwgd2luZG93IChhLmsuYSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlcikKKy1kZWJ1Z2dlciAobm90IGNvbXBsZXRlLCBidXQgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMsIHZpZXcgYW5kIHN0ZXApCiAKLQlOZXcgRmlsZSAgICAgICAgIC0tIENyZWF0ZSBhIG5ldyBmaWxlIGVkaXRpbmcgd2luZG93Ci0JT3Blbi4uLiAgICAgICAgICAtLSBPcGVuIGFuIGV4aXN0aW5nIGZpbGUKLQlSZWNlbnQgRmlsZXMuLi4gIC0tIE9wZW4gYSBsaXN0IG9mIHJlY2VudCBmaWxlcwotCU9wZW4gTW9kdWxlLi4uICAgLS0gT3BlbiBhbiBleGlzdGluZyBtb2R1bGUgKHNlYXJjaGVzIHN5cy5wYXRoKQotCUNsYXNzIEJyb3dzZXIgICAgLS0gU2hvdyBjbGFzc2VzIGFuZCBtZXRob2RzIGluIGN1cnJlbnQgZmlsZQotCVBhdGggQnJvd3NlciAgICAgLS0gU2hvdyBzeXMucGF0aCBkaXJlY3RvcmllcywgbW9kdWxlcywgY2xhc3NlcworTWVudXM6CisKK0lETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMgdGhlIFNoZWxsIHdpbmRvdyBhbmQgdGhlIEVkaXRvciB3aW5kb3cuIEl0IGlzCitwb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIGVkaXRvciB3aW5kb3dzIHNpbXVsdGFuZW91c2x5LiBJRExFJ3MKK21lbnVzIGR5bmFtaWNhbGx5IGNoYW5nZSBiYXNlZCBvbiB3aGljaCB3aW5kb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBFYWNoIG1lbnUKK2RvY3VtZW50ZWQgYmVsb3cgaW5kaWNhdGVzIHdoaWNoIHdpbmRvdyB0eXBlIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gQ2xpY2sgb24KK3RoZSBkb3R0ZWQgbGluZSBhdCB0aGUgdG9wIG9mIGEgbWVudSB0byAidGVhciBpdCBvZmYiOiBhIHNlcGFyYXRlIHdpbmRvdworY29udGFpbmluZyB0aGUgbWVudSBpcyBjcmVhdGVkIChmb3IgVW5peCBhbmQgV2luZG93cyBvbmx5KS4KKworRmlsZSBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKKworICAgICAgICBOZXcgRmlsZSAgICAgICAgIC0tIENyZWF0ZSBhIG5ldyBmaWxlIGVkaXRpbmcgd2luZG93CisgICAgICAgIE9wZW4uLi4gICAgICAgICAgLS0gT3BlbiBhbiBleGlzdGluZyBmaWxlCisgICAgICAgIE9wZW4gTW9kdWxlLi4uICAgLS0gT3BlbiBhbiBleGlzdGluZyBtb2R1bGUgKHNlYXJjaGVzIHN5cy5wYXRoKQorICAgICAgICBSZWNlbnQgRmlsZXMuLi4gIC0tIE9wZW4gYSBsaXN0IG9mIHJlY2VudCBmaWxlcworICAgICAgICBDbGFzcyBCcm93c2VyICAgIC0tIFNob3cgY2xhc3NlcyBhbmQgbWV0aG9kcyBpbiBjdXJyZW50IGZpbGUKKyAgICAgICAgUGF0aCBCcm93c2VyICAgICAtLSBTaG93IHN5cy5wYXRoIGRpcmVjdG9yaWVzLCBtb2R1bGVzLCBjbGFzc2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtZXRob2RzCi0JLS0tCi0JU2F2ZSAgICAgICAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQKLQkJICAgICAgICAgICAgd2luZG93cyBoYXZlIGEgKiBiZWZvcmUgYW5kIGFmdGVyIHRoZSB3aW5kb3cgdGl0bGUpCisgICAgICAgIC0tLQorICAgICAgICBTYXZlICAgICAgICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gdGhlIGFzc29jaWF0ZWQgZmlsZSAodW5zYXZlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd3MgaGF2ZSBhICogYmVmb3JlIGFuZCBhZnRlciB0aGUgd2luZG93IHRpdGxlKQogCi0JU2F2ZSBBcy4uLiAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIG5ldyBmaWxlLCB3aGljaCBiZWNvbWVzCi0JCSAgICAgICAgICAgIHRoZSBhc3NvY2lhdGVkIGZpbGUKLQlTYXZlIENvcHkgQXMuLi4gIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gZGlmZmVyZW50IGZpbGUKLQkJICAgICAgICAgICAgd2l0aG91dCBjaGFuZ2luZyB0aGUgYXNzb2NpYXRlZCBmaWxlCi0JLS0tCi0JUHJpbnQgV2luZG93ICAgICAtLSBQcmludCB0aGUgY3VycmVudCB3aW5kb3cKLQktLS0KLQlDbG9zZSAgICAgICAgICAgIC0tIENsb3NlIGN1cnJlbnQgd2luZG93IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLQlFeGl0ICAgICAgICAgICAgIC0tIENsb3NlIGFsbCB3aW5kb3dzLCBxdWl0IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKKyAgICAgICAgU2F2ZSBBcy4uLiAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIG5ldyBmaWxlLCB3aGljaCBiZWNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFzc29jaWF0ZWQgZmlsZQorICAgICAgICBTYXZlIENvcHkgQXMuLi4gIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gZGlmZmVyZW50IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5naW5nIHRoZSBhc3NvY2lhdGVkIGZpbGUKKyAgICAgICAgLS0tCisgICAgICAgIFByaW50IFdpbmRvdyAgICAgLS0gUHJpbnQgdGhlIGN1cnJlbnQgd2luZG93CisgICAgICAgIC0tLQorICAgICAgICBDbG9zZSAgICAgICAgICAgIC0tIENsb3NlIGN1cnJlbnQgd2luZG93IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKKyAgICAgICAgRXhpdCAgICAgICAgICAgICAtLSBDbG9zZSBhbGwgd2luZG93cywgcXVpdCAoYXNrcyB0byBzYXZlIGlmIHVuc2F2ZWQpCiAKLUVkaXQgTWVudToKK0VkaXQgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6CiAKLQlVbmRvICAgICAgICAgICAgIC0tIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQSBtYXhpbXVtIG9mIDEwMDAgY2hhbmdlcyBtYXkgYmUgdW5kb25lKQotCVJlZG8gICAgICAgICAgICAgLS0gUmVkbyBsYXN0IHVuZG9uZSBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLQktLS0KLQlDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCisgICAgICAgIFVuZG8gICAgICAgICAgICAgLS0gVW5kbyBsYXN0IGNoYW5nZSB0byBjdXJyZW50IHdpbmRvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIG1heGltdW0gb2YgMTAwMCBjaGFuZ2VzIG1heSBiZSB1bmRvbmUpCisgICAgICAgIFJlZG8gICAgICAgICAgICAgLS0gUmVkbyBsYXN0IHVuZG9uZSBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKKyAgICAgICAgLS0tCisgICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0JQ29weSAgICAgICAgICAgICAtLSBDb3B5IHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZAotCVBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotCVNlbGVjdCBBbGwgICAgICAgLS0gU2VsZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGVkaXQgYnVmZmVyCi0JLS0tCi0JRmluZC4uLiAgICAgICAgICAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggd2l0aCBtYW55IG9wdGlvbnMKLQlGaW5kIEFnYWluICAgICAgIC0tIFJlcGVhdCBsYXN0IHNlYXJjaAotCUZpbmQgU2VsZWN0aW9uICAgLS0gU2VhcmNoIGZvciB0aGUgc3RyaW5nIGluIHRoZSBzZWxlY3Rpb24KLQlGaW5kIGluIEZpbGVzLi4uIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCBmb3Igc2VhcmNoaW5nIGZpbGVzCi0JUmVwbGFjZS4uLiAgICAgICAtLSBPcGVuIGEgc2VhcmNoLWFuZC1yZXBsYWNlIGRpYWxvZyBib3gKLQlHbyB0byBMaW5lICAgICAgIC0tIEFzayBmb3IgYSBsaW5lIG51bWJlciBhbmQgc2hvdyB0aGF0IGxpbmUKLQlTaG93IENhbGx0aXAgICAgIC0tIE9wZW4gYSBzbWFsbCB3aW5kb3cgd2l0aCBmdW5jdGlvbiBwYXJhbSBoaW50cwotCVNob3cgQ29tcGxldGlvbnMgLS0gT3BlbiBhIHNjcm9sbCB3aW5kb3cgYWxsb3dpbmcgc2VsZWN0aW9uIGtleXdvcmRzCi0JCQkgICAgYW5kIGF0dHJpYnV0ZXMuIChzZWUgJypUSVBTKicsIGJlbG93KQotCVNob3cgUGFyZW5zCSAtLSBIaWdobGlnaHQgdGhlIHN1cnJvdW5kaW5nIHBhcmVudGhlc2lzCi0JRXhwYW5kIFdvcmQgICAgICAtLSBFeHBhbmQgdGhlIHdvcmQgeW91IGhhdmUgdHlwZWQgdG8gbWF0Y2ggYW5vdGhlcgotCQkgICAgICAgICAgICB3b3JkIGluIHRoZSBzYW1lIGJ1ZmZlcjsgcmVwZWF0IHRvIGdldCBhCisgICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKKyAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93CisgICAgICAgIFNlbGVjdCBBbGwgICAgICAgLS0gU2VsZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGVkaXQgYnVmZmVyCisgICAgICAgIC0tLQorICAgICAgICBGaW5kLi4uICAgICAgICAgIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCB3aXRoIG1hbnkgb3B0aW9ucworICAgICAgICBGaW5kIEFnYWluICAgICAgIC0tIFJlcGVhdCBsYXN0IHNlYXJjaAorICAgICAgICBGaW5kIFNlbGVjdGlvbiAgIC0tIFNlYXJjaCBmb3IgdGhlIHN0cmluZyBpbiB0aGUgc2VsZWN0aW9uCisgICAgICAgIEZpbmQgaW4gRmlsZXMuLi4gLS0gT3BlbiBhIHNlYXJjaCBkaWFsb2cgYm94IGZvciBzZWFyY2hpbmcgZmlsZXMKKyAgICAgICAgUmVwbGFjZS4uLiAgICAgICAtLSBPcGVuIGEgc2VhcmNoLWFuZC1yZXBsYWNlIGRpYWxvZyBib3gKKyAgICAgICAgR28gdG8gTGluZSAgICAgICAtLSBBc2sgZm9yIGEgbGluZSBudW1iZXIgYW5kIHNob3cgdGhhdCBsaW5lCisgICAgICAgIEV4cGFuZCBXb3JkICAgICAgLS0gRXhwYW5kIHRoZSB3b3JkIHlvdSBoYXZlIHR5cGVkIHRvIG1hdGNoIGFub3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkIGluIHRoZSBzYW1lIGJ1ZmZlcjsgcmVwZWF0IHRvIGdldCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGV4cGFuc2lvbgorICAgICAgICBTaG93IENhbGx0aXAgICAgIC0tIEFmdGVyIGFuIHVuY2xvc2VkIHBhcmVudGhlc2lzIGZvciBhIGZ1bmN0aW9uLCBvcGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzbWFsbCB3aW5kb3cgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXIgaGludHMKKyAgICAgICAgU2hvdyBQYXJlbnMgICAgICAtLSBIaWdobGlnaHQgdGhlIHN1cnJvdW5kaW5nIHBhcmVudGhlc2lzCisgICAgICAgIFNob3cgQ29tcGxldGlvbnMgLS0gT3BlbiBhIHNjcm9sbCB3aW5kb3cgYWxsb3dpbmcgc2VsZWN0aW9uIGtleXdvcmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGF0dHJpYnV0ZXMuIChzZWUgJypUSVBTKicsIGJlbG93KQogCi1Gb3JtYXQgTWVudSAob25seSBpbiBFZGl0IHdpbmRvdyk6CitGb3JtYXQgTWVudSAoRWRpdG9yIHdpbmRvdyBvbmx5KToKIAotCUluZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgcmlnaHQgNCBzcGFjZXMKLQlEZWRlbnQgUmVnaW9uICAgICAgIC0tIFNoaWZ0IHNlbGVjdGVkIGxpbmVzIGxlZnQgNCBzcGFjZXMKLQlDb21tZW50IE91dCBSZWdpb24gIC0tIEluc2VydCAjIyBpbiBmcm9udCBvZiBzZWxlY3RlZCBsaW5lcwotCVVuY29tbWVudCBSZWdpb24gICAgLS0gUmVtb3ZlIGxlYWRpbmcgIyBvciAjIyBmcm9tIHNlbGVjdGVkIGxpbmVzCi0JVGFiaWZ5IFJlZ2lvbiAgICAgICAtLSBUdXJucyAqbGVhZGluZyogc3RyZXRjaGVzIG9mIHNwYWNlcyBpbnRvIHRhYnMKLQkJKE5vdGU6IFdlIHJlY29tbWVuZCB1c2luZyA0IHNwYWNlIGJsb2NrcyB0byBpbmRlbnQgUHl0aG9uIGNvZGUuKQotCVVudGFiaWZ5IFJlZ2lvbiAgICAgLS0gVHVybiAqYWxsKiB0YWJzIGludG8gdGhlIHJpZ2h0IG51bWJlciBvZiBzcGFjZXMKLQlOZXcgSW5kZW50IFdpZHRoLi4uIC0tIE9wZW4gZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGgKLQlGb3JtYXQgUGFyYWdyYXBoICAgIC0tIFJlZm9ybWF0IHRoZSBjdXJyZW50IGJsYW5rLWxpbmUtc2VwYXJhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoCisgICAgICAgIEluZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgcmlnaHQgYnkgdGhlIGluZGVudCB3aWR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDQgc3BhY2VzKQorICAgICAgICBEZWRlbnQgUmVnaW9uICAgICAgIC0tIFNoaWZ0IHNlbGVjdGVkIGxpbmVzIGxlZnQgYnkgdGhlIGluZGVudCB3aWR0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDQgc3BhY2VzKQorICAgICAgICBDb21tZW50IE91dCBSZWdpb24gIC0tIEluc2VydCAjIyBpbiBmcm9udCBvZiBzZWxlY3RlZCBsaW5lcworICAgICAgICBVbmNvbW1lbnQgUmVnaW9uICAgIC0tIFJlbW92ZSBsZWFkaW5nICMgb3IgIyMgZnJvbSBzZWxlY3RlZCBsaW5lcworICAgICAgICBUYWJpZnkgUmVnaW9uICAgICAgIC0tIFR1cm5zICpsZWFkaW5nKiBzdHJldGNoZXMgb2Ygc3BhY2VzIGludG8gdGFicy4KKyAgICAgICAgICAgICAgICAoTm90ZTogV2UgcmVjb21tZW5kIHVzaW5nIDQgc3BhY2UgYmxvY2tzIHRvIGluZGVudCBQeXRob24gY29kZS4pCisgICAgICAgIFVudGFiaWZ5IFJlZ2lvbiAgICAgLS0gVHVybiAqYWxsKiB0YWJzIGludG8gdGhlIGNvcnJlbnQgbnVtYmVyIG9mIHNwYWNlcworICAgICAgICBUb2dnbGUgdGFicyAgICAgICAgIC0tIE9wZW4gYSBkaWFsb2cgdG8gc3dpdGNoIGJldHdlZW4gaW5kZW50aW5nIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMgYW5kIHRhYnMuCisgICAgICAgIE5ldyBJbmRlbnQgV2lkdGguLi4gLS0gT3BlbiBhIGRpYWxvZyB0byBjaGFuZ2UgaW5kZW50IHdpZHRoLiAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWQgZGVmYXVsdCBieSB0aGUgUHl0aG9uIGNvbW11bml0eSBpcyA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzLgorICAgICAgICBGb3JtYXQgUGFyYWdyYXBoICAgIC0tIFJlZm9ybWF0IHRoZSBjdXJyZW50IGJsYW5rLWxpbmUtc2VwYXJhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoLiBBbGwgbGluZXMgaW4gdGhlIHBhcmFncmFwaCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIHRvIGxlc3MgdGhhbiA4MCBjb2x1bW5zLgorICAgICAgICAtLS0KKyAgICAgICAgU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZSAtLSBSZW1vdmVkIGFueSBzcGFjZSBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgbGFzdCBub24tc3BhY2UgY2hhcmFjdGVyCiAKLVJ1biBNZW51IChvbmx5IGluIEVkaXQgd2luZG93KToKK1J1biBNZW51IChFZGl0b3Igd2luZG93IG9ubHkpOgogCi0JUHl0aG9uIFNoZWxsIC0tIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIHNoZWxsIHdpbmRvdwotCS0tLQotCUNoZWNrIE1vZHVsZSAtLSBSdW4gYSBzeW50YXggY2hlY2sgb24gdGhlIG1vZHVsZQotCVJ1biBNb2R1bGUgICAtLSBFeGVjdXRlIHRoZSBjdXJyZW50IGZpbGUgaW4gdGhlIF9fbWFpbl9fIG5hbWVzcGFjZQorICAgICAgICBQeXRob24gU2hlbGwgLS0gT3BlbiBvciB3YWtlIHVwIHRoZSBQeXRob24gc2hlbGwgd2luZG93CisgICAgICAgIC0tLQorICAgICAgICBDaGVjayBNb2R1bGUgLS0gQ2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgbW9kdWxlIGN1cnJlbnRseSBvcGVuIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9yIHdpbmRvdy4gIElmIHRoZSBtb2R1bGUgaGFzIG5vdCBiZWVuIHNhdmVkIElETEUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlIGNvZGUuCisgICAgICAgIFJ1biBNb2R1bGUgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQsIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGN1cnJlbnRseSBvcGVuIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZWVuIHNhdmVkIElETEUgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUuCiAKLVNoZWxsIE1lbnUgKG9ubHkgaW4gU2hlbGwgd2luZG93KToKK1NoZWxsIE1lbnUgKFNoZWxsIHdpbmRvdyBvbmx5KToKIAotCVZpZXcgTGFzdCBSZXN0YXJ0IC0tIFNjcm9sbCB0aGUgc2hlbGwgd2luZG93IHRvIHRoZSBsYXN0IHJlc3RhcnQKLQlSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBpbnRlcnByZXRlciB3aXRoIGEgZnJlc2ggZW52aXJvbm1lbnQKKyAgICAgICAgVmlldyBMYXN0IFJlc3RhcnQgLS0gU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAorICAgICAgICBSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQKIAotRGVidWcgTWVudSAob25seSBpbiBTaGVsbCB3aW5kb3cpOgorRGVidWcgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgogCi0JR28gdG8gRmlsZS9MaW5lICAgLS0gbG9vayBhcm91bmQgdGhlIGluc2VydCBwb2ludCBmb3IgYSBmaWxlbmFtZQotCQkgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZQotCURlYnVnZ2VyICh0b2dnbGUpIC0tIFJ1biBjb21tYW5kcyBpbiB0aGUgc2hlbGwgdW5kZXIgdGhlIGRlYnVnZ2VyCi0JU3RhY2sgVmlld2VyICAgICAgLS0gU2hvdyB0aGUgc3RhY2sgdHJhY2ViYWNrIG9mIHRoZSBsYXN0IGV4Y2VwdGlvbgotCUF1dG8tb3BlbiBTdGFjayBWaWV3ZXIgKHRvZ2dsZSkgLS0gT3BlbiBzdGFjayB2aWV3ZXIgb24gdHJhY2ViYWNrCisgICAgICAgIEdvIHRvIEZpbGUvTGluZSAgIC0tIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIHRvIHZpZXcgdGhlIHNvdXJjZSBsaW5lcyByZWZlcmVuY2VkIGluIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suICBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgorICAgICAgICBEZWJ1Z2dlciAodG9nZ2xlKSAtLSBUaGlzIGZlYXR1cmUgaXMgbm90IGNvbXBsZXRlIGFuZCBjb25zaWRlcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbC4gUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIuCisgICAgICAgIFN0YWNrIFZpZXdlciAgICAgIC0tIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24KKyAgICAgICAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAodG9nZ2xlKSAtLSBUb2dnbGUgYXV0b21hdGljYWxseSBvcGVuaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24KIAotT3B0aW9ucyBNZW51OgorT3B0aW9ucyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKIAotCUNvbmZpZ3VyZSBJRExFIC0tIE9wZW4gYSBjb25maWd1cmF0aW9uIGRpYWxvZy4gIEZvbnRzLCBpbmRlbnRhdGlvbiwKKyAgICAgICAgQ29uZmlndXJlIElETEUgLS0gT3BlbiBhIGNvbmZpZ3VyYXRpb24gZGlhbG9nLiAgRm9udHMsIGluZGVudGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBrZXliaW5kaW5ncywgYW5kIGNvbG9yIHRoZW1lcyBtYXkgYmUgYWx0ZXJlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnR1cCBQcmVmZXJlbmNlcyBtYXkgYmUgc2V0LCBhbmQgQWRkaXRpb25hbCBIZWxwCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZXMgY2FuIGJlIHNwZWNpZmllZC4KLQkJCSAgCi0JCQkgIE9uIE9TIFggdGhpcyBtZW51IGlzIG5vdCBwcmVzZW50LCB1c2UKLQkJCSAgbWVudSAnSURMRSAtPiBQcmVmZXJlbmNlcy4uLicgaW5zdGVhZC4KLQktLS0KLQlDb2RlIENvbnRleHQgLS0JICBPcGVuIGEgcGFuZSBhdCB0aGUgdG9wIG9mIHRoZSBlZGl0IHdpbmRvdyB3aGljaAotCQkJICBzaG93cyB0aGUgYmxvY2sgY29udGV4dCBvZiB0aGUgc2VjdGlvbiBvZiBjb2RlCi0JCQkgIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvciB0aGUgd2luZG93LgotCQkJICAoTm90IHByZXNlbnQgaW4gU2hlbGwgd2luZG93LikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnR1cCBQcmVmZXJlbmNlcyBtYXkgYmUgc2V0LCBhbmQgYWRkaXRpb25hbCBIZWxwCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMgY2FuIGJlIHNwZWNpZmllZC4KIAotV2luZG93cyBNZW51OgorICAgICAgICAtLS0KKyAgICAgICAgQ29kZSBDb250ZXh0ICh0b2dnbGUpIC0tIE9wZW4gYSBwYW5lIGF0IHRoZSB0b3Agb2YgdGhlIGVkaXQgd2luZG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBzaG93cyB0aGUgYmxvY2sgY29udGV4dCBvZiB0aGUgc2VjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgY29kZSB3aGljaCBpcyBzY3JvbGxpbmcgb2ZmIHRoZSB0b3Agb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuIFRoaXMgaXMgbm90IHByZXNlbnQgaW4gdGhlIFNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cgb25seSB0aGUgRWRpdG9yIHdpbmRvdy4KIAotCVpvb20gSGVpZ2h0IC0tIHRvZ2dsZXMgdGhlIHdpbmRvdyBiZXR3ZWVuIGNvbmZpZ3VyZWQgc2l6ZQotCWFuZCBtYXhpbXVtIGhlaWdodC4KLQktLS0KLQlUaGUgcmVzdCBvZiB0aGlzIG1lbnUgbGlzdHMgdGhlIG5hbWVzIG9mIGFsbCBvcGVuIHdpbmRvd3M7Ci0Jc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCi0JbmVjZXNzYXJ5KS4KK1dpbmRvd3MgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6CisKKyAgICAgICAgWm9vbSBIZWlnaHQgLS0gVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDQweDgwIGluaXRpYWwKKyAgICAgICAgc2V0dGluZykgYW5kIG1heGltdW0gaGVpZ2h0LiAgVGhlIGluaXRpYWwgc2l6ZSBpcyBpbiB0aGUgQ29uZmlndXJlCisgICAgICAgIElETEUgZGlhbG9nIHVuZGVyIHRoZSBnZW5lcmFsIHRhYi4KKyAgICAgICAgLS0tCisgICAgICAgIFRoZSByZXN0IG9mIHRoaXMgbWVudSBsaXN0cyB0aGUgbmFtZXMgb2YgYWxsIG9wZW4gd2luZG93czsKKyAgICAgICAgc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCisgICAgICAgIG5lY2Vzc2FyeSkuCiAKIEhlbHAgTWVudToKIAotCUFib3V0IElETEUgIC0tIFZlcnNpb24sIGNvcHlyaWdodCwgbGljZW5zZSwgY3JlZGl0cwotCUlETEUgUmVhZG1lIC0tIEJhY2tncm91bmQgZGlzY3Vzc2lvbiBhbmQgY2hhbmdlIGRldGFpbHMKLQktLS0KLQlJRExFIEhlbHAgICAtLSBEaXNwbGF5IHRoaXMgZmlsZQotCVB5dGhvbiBEb2NzIC0tIEFjY2VzcyBsb2NhbCBQeXRob24gZG9jdW1lbnRhdGlvbiwgaWYKLQkJICAgICAgIGluc3RhbGxlZC4gIE90aGVyd2lzZSwgYWNjZXNzIHd3dy5weXRob24ub3JnLgotCS0tLQotCShBZGRpdGlvbmFsIEhlbHAgU291cmNlcyBtYXkgYmUgYWRkZWQgaGVyZSkKKyAgICAgICAgQWJvdXQgSURMRSAgLS0gVmVyc2lvbiwgY29weXJpZ2h0LCBsaWNlbnNlLCBjcmVkaXRzCisgICAgICAgIC0tLQorICAgICAgICBJRExFIEhlbHAgICAtLSBEaXNwbGF5IHRoaXMgZmlsZSB3aGljaCBpcyBhIGhlbHAgZmlsZSBmb3IgSURMRQorICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxpbmcgdGhlIG1lbnUgb3B0aW9ucywgYmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIG90aGVyIHRpcHMuCisgICAgICAgIFB5dGhvbiBEb2NzIC0tIEFjY2VzcyBsb2NhbCBQeXRob24gZG9jdW1lbnRhdGlvbiwgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLiAgT3Igd2lsbCBzdGFydCBhIHdlYiBicm93c2VyIGFuZCBvcGVuCisgICAgICAgICAgICAgICAgICAgICAgIGRvY3MucHl0aG9uLm9yZyBzaG93aW5nIHRoZSBsYXRlc3QgUHl0aG9uIGRvY3VtZW50YXRpb24uCisgICAgICAgIC0tLQorICAgICAgICBBZGRpdGlvbmFsIGhlbHAgc291cmNlcyBtYXkgYmUgYWRkZWQgaGVyZSB3aXRoIHRoZSBDb25maWd1cmUgSURMRQorICAgICAgICBkaWFsb2cgdW5kZXIgdGhlIEdlbmVyYWwgdGFiLgogCi1FZGl0IGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gRWRpdCB3aW5kb3cpOgorRWRpdG9yIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gRWRpdCB3aW5kb3cpOgogCi0JQ3V0ICAgICAgICAgICAgICAtLSBDb3B5IGEgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkLAorICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotCUNvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLQlQYXN0ZSAgICAgICAgICAgIC0tIEluc2VydCBzeXN0ZW0td2lkZSBjbGlwYm9hcmQgaW50byB3aW5kb3cKLQlTZXQgQnJlYWtwb2ludCAgIC0tIFNldHMgYSBicmVha3BvaW50ICh3aGVuIGRlYnVnZ2VyIG9wZW4pCi0JQ2xlYXIgQnJlYWtwb2ludCAtLSBDbGVhcnMgdGhlIGJyZWFrcG9pbnQgb24gdGhhdCBsaW5lCisgICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKKyAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93CisgICAgICAgIFNldCBCcmVha3BvaW50ICAgLS0gU2V0cyBhIGJyZWFrcG9pbnQuIEJyZWFrcG9pbnRzIGFyZSBvbmx5IGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBvcGVuLgorICAgICAgICBDbGVhciBCcmVha3BvaW50IC0tIENsZWFycyB0aGUgYnJlYWtwb2ludCBvbiB0aGF0IGxpbmUKIAogU2hlbGwgY29udGV4dCBtZW51IChSaWdodC1jbGljayAvIENvbnRyb2wtY2xpY2sgb24gT1MgWCBpbiBTaGVsbCB3aW5kb3cpOgogCi0JQ3V0ICAgICAgICAgICAgICAtLSBDb3B5IGEgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkLAorICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotCUNvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLQlQYXN0ZSAgICAgICAgICAgIC0tIEluc2VydCBzeXN0ZW0td2lkZSBjbGlwYm9hcmQgaW50byB3aW5kb3cKLQktLS0KLQlHbyB0byBmaWxlL2xpbmUgIC0tIFNhbWUgYXMgaW4gRGVidWcgbWVudQorICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCisgICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdworICAgICAgICAtLS0KKyAgICAgICAgR28gdG8gZmlsZS9saW5lICAtLSBTYW1lIGFzIGluIERlYnVnIG1lbnUKIAogCiAqKiBUSVBTICoqCkBAIC0xNDQsMTU5ICsxODcsMTgyIEBACiAKIEFkZGl0aW9uYWwgSGVscCBTb3VyY2VzOgogCi0JV2luZG93cyB1c2VycyBjYW4gR29vZ2xlIG9uIHpvcGVzaGVsZi5jaG0gdG8gYWNjZXNzIFpvcGUgaGVscCBmaWxlcyBpbgotCXRoZSBXaW5kb3dzIGhlbHAgZm9ybWF0LiAgVGhlIEFkZGl0aW9uYWwgSGVscCBTb3VyY2VzIGZlYXR1cmUgb2YgdGhlCi0JY29uZmlndXJhdGlvbiBHVUkgc3VwcG9ydHMgLmNobSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZmlsZXR5cGVzCi0Jc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci4gIFN1cHBseSBhIE1lbnUgSXRlbSB0aXRsZSwgYW5kIGVudGVyIHRoZQotCWxvY2F0aW9uIGluIHRoZSBIZWxwIEZpbGUgUGF0aCBzbG90IG9mIHRoZSBOZXcgSGVscCBTb3VyY2UgZGlhbG9nLiAgVXNlCi0JaHR0cDovLyBhbmQvb3Igd3d3LiB0byBpZGVudGlmeSBleHRlcm5hbCBVUkxzLCBvciBkb3dubG9hZCB0aGUgZmlsZSBhbmQKLQlicm93c2UgZm9yIGl0cyBwYXRoIG9uIHlvdXIgbWFjaGluZSB1c2luZyB0aGUgQnJvd3NlIGJ1dHRvbi4KKyAgICAgICAgV2luZG93cyB1c2VycyBjYW4gR29vZ2xlIG9uIHpvcGVzaGVsZi5jaG0gdG8gYWNjZXNzIFpvcGUgaGVscCBmaWxlcyBpbgorICAgICAgICB0aGUgV2luZG93cyBoZWxwIGZvcm1hdC4gIFRoZSBBZGRpdGlvbmFsIEhlbHAgU291cmNlcyBmZWF0dXJlIG9mIHRoZQorICAgICAgICBjb25maWd1cmF0aW9uIEdVSSBzdXBwb3J0cyAuY2htLCBhbG9uZyB3aXRoIGFueSBvdGhlciBmaWxldHlwZXMKKyAgICAgICAgc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci4gIFN1cHBseSBhIE1lbnUgSXRlbSB0aXRsZSwgYW5kIGVudGVyIHRoZQorICAgICAgICBsb2NhdGlvbiBpbiB0aGUgSGVscCBGaWxlIFBhdGggc2xvdCBvZiB0aGUgTmV3IEhlbHAgU291cmNlIGRpYWxvZy4gIFVzZQorICAgICAgICBodHRwOi8vIGFuZC9vciB3d3cuIHRvIGlkZW50aWZ5IGV4dGVybmFsIFVSTHMsIG9yIGRvd25sb2FkIHRoZSBmaWxlIGFuZAorICAgICAgICBicm93c2UgZm9yIGl0cyBwYXRoIG9uIHlvdXIgbWFjaGluZSB1c2luZyB0aGUgQnJvd3NlIGJ1dHRvbi4KIAotCUFsbCB1c2VycyBjYW4gYWNjZXNzIHRoZSBleHRlbnNpdmUgc291cmNlcyBvZiBoZWxwLCBpbmNsdWRpbmcKLQl0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCB3d3cucHl0aG9uLm9yZy9kb2MuICBTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZAotCW9yIHJlbW92ZWQgZnJvbSB0aGUgSGVscCBtZW51IGF0IGFueSB0aW1lIHVzaW5nIENvbmZpZ3VyZSBJRExFLgorICAgICAgICBBbGwgdXNlcnMgY2FuIGFjY2VzcyB0aGUgZXh0ZW5zaXZlIHNvdXJjZXMgb2YgaGVscCwgaW5jbHVkaW5nCisgICAgICAgIHR1dG9yaWFscywgYXZhaWxhYmxlIGF0IGRvY3MucHl0aG9uLm9yZy4gIFNlbGVjdGVkIFVSTHMgY2FuIGJlIGFkZGVkCisgICAgICAgIG9yIHJlbW92ZWQgZnJvbSB0aGUgSGVscCBtZW51IGF0IGFueSB0aW1lIHVzaW5nIENvbmZpZ3VyZSBJRExFLgogCiBCYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uOgogCi0JQmFja3NwYWNlIGRlbGV0ZXMgY2hhciB0byB0aGUgbGVmdDsgREVMIGRlbGV0ZXMgY2hhciB0byB0aGUgcmlnaHQuCi0JQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KLQlBcnJvdyBrZXlzIGFuZCBQYWdlIFVwL0Rvd24gbW92ZSBhcm91bmQuCi0JQ29udHJvbC1sZWZ0L3JpZ2h0IEFycm93IG1vdmVzIGJ5IHdvcmRzIGluIGEgc3RyYW5nZSBidXQgdXNlZnVsIHdheS4KLQlIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KLQlDb250cm9sLUhvbWUvRW5kIGdvIHRvIGJlZ2luL2VuZCBvZiBmaWxlLgotCVNvbWUgdXNlZnVsIEVtYWNzIGJpbmRpbmdzIGFyZSBpbmhlcml0ZWQgZnJvbSBUY2wvVGs6Ci0JCUNvbnRyb2wtYSAgICAgYmVnaW5uaW5nIG9mIGxpbmUKLQkJQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQotCQlDb250cm9sLWsgICAgIGtpbGwgbGluZSAoYnV0IGRvZXNuJ3QgcHV0IGl0IGluIGNsaXBib2FyZCkKLQkJQ29udHJvbC1sICAgICBjZW50ZXIgd2luZG93IGFyb3VuZCB0aGUgaW5zZXJ0aW9uIHBvaW50Ci0JU3RhbmRhcmQgV2luZG93cyBiaW5kaW5ncyBtYXkgd29yayBvbiB0aGF0IHBsYXRmb3JtLgotCUtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgU2V0dGluZ3MgRGlhbG9nLCBsb29rIHRoZXJlLgorICAgICAgICBCYWNrc3BhY2UgZGVsZXRlcyBjaGFyIHRvIHRoZSBsZWZ0OyBERUwgZGVsZXRlcyBjaGFyIHRvIHRoZSByaWdodC4KKyAgICAgICAgQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KKyAgICAgICAgQXJyb3cga2V5cyBhbmQgUGFnZSBVcC9Eb3duIG1vdmUgYXJvdW5kLgorICAgICAgICBDb250cm9sLWxlZnQvcmlnaHQgQXJyb3cgbW92ZXMgYnkgd29yZHMgaW4gYSBzdHJhbmdlIGJ1dCB1c2VmdWwgd2F5LgorICAgICAgICBIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KKyAgICAgICAgQ29udHJvbC1Ib21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgZmlsZS4KKyAgICAgICAgU29tZSB1c2VmdWwgRW1hY3MgYmluZGluZ3MgYXJlIGluaGVyaXRlZCBmcm9tIFRjbC9UazoKKyAgICAgICAgICAgICAgICBDb250cm9sLWEgICAgIGJlZ2lubmluZyBvZiBsaW5lCisgICAgICAgICAgICAgICAgQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQorICAgICAgICAgICAgICAgIENvbnRyb2wtayAgICAga2lsbCBsaW5lIChidXQgZG9lc24ndCBwdXQgaXQgaW4gY2xpcGJvYXJkKQorICAgICAgICAgICAgICAgIENvbnRyb2wtbCAgICAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAorICAgICAgICBTdGFuZGFyZCBrZXliaW5kaW5ncyAobGlrZSBDb250cm9sLWMgdG8gY29weSBhbmQgQ29udHJvbC12IHRvCisgICAgICAgIHBhc3RlKSBtYXkgd29yay4gIEtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgQ29uZmlndXJlIElETEUKKyAgICAgICAgZGlhbG9nLgogCiBBdXRvbWF0aWMgaW5kZW50YXRpb246CiAKLQlBZnRlciBhIGJsb2NrLW9wZW5pbmcgc3RhdGVtZW50LCB0aGUgbmV4dCBsaW5lIGlzIGluZGVudGVkIGJ5IDQgc3BhY2VzCi0JKGluIHRoZSBQeXRob24gU2hlbGwgd2luZG93IGJ5IG9uZSB0YWIpLiAgQWZ0ZXIgY2VydGFpbiBrZXl3b3JkcwotCShicmVhaywgcmV0dXJuIGV0Yy4pIHRoZSBuZXh0IGxpbmUgaXMgZGVkZW50ZWQuICBJbiBsZWFkaW5nCi0JaW5kZW50YXRpb24sIEJhY2tzcGFjZSBkZWxldGVzIHVwIHRvIDQgc3BhY2VzIGlmIHRoZXkgYXJlIHRoZXJlLiAgVGFiCi0JaW5zZXJ0cyBzcGFjZXMgKGluIHRoZSBQeXRob24gU2hlbGwgd2luZG93IG9uZSB0YWIpLCBudW1iZXIgZGVwZW5kcyBvbgotCUluZGVudCBXaWR0aC4gIChOLkIuIEN1cnJlbnRseSB0YWJzIGFyZSByZXN0cmljdGVkIHRvIGZvdXIgc3BhY2VzIGR1ZQotCXRvIFRjbC9UayBpc3N1ZXMuKQorICAgICAgICBBZnRlciBhIGJsb2NrLW9wZW5pbmcgc3RhdGVtZW50LCB0aGUgbmV4dCBsaW5lIGlzIGluZGVudGVkIGJ5IDQgc3BhY2VzCisgICAgICAgIChpbiB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdyBieSBvbmUgdGFiKS4gIEFmdGVyIGNlcnRhaW4ga2V5d29yZHMKKyAgICAgICAgKGJyZWFrLCByZXR1cm4gZXRjLikgdGhlIG5leHQgbGluZSBpcyBkZWRlbnRlZC4gIEluIGxlYWRpbmcKKyAgICAgICAgaW5kZW50YXRpb24sIEJhY2tzcGFjZSBkZWxldGVzIHVwIHRvIDQgc3BhY2VzIGlmIHRoZXkgYXJlIHRoZXJlLiAgVGFiCisgICAgICAgIGluc2VydHMgc3BhY2VzIChpbiB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdyBvbmUgdGFiKSwgbnVtYmVyIGRlcGVuZHMgb24KKyAgICAgICAgSW5kZW50IFdpZHRoLiBDdXJyZW50bHkgdGFicyBhcmUgcmVzdHJpY3RlZCB0byBmb3VyIHNwYWNlcyBkdWUKKyAgICAgICAgdG8gVGNsL1RrIGxpbWl0YXRpb25zLgogCiAgICAgICAgIFNlZSBhbHNvIHRoZSBpbmRlbnQvZGVkZW50IHJlZ2lvbiBjb21tYW5kcyBpbiB0aGUgZWRpdCBtZW51LgogCiBDb21wbGV0aW9uczoKIAotCUNvbXBsZXRpb25zIGFyZSBzdXBwbGllZCBmb3IgZnVuY3Rpb25zLCBjbGFzc2VzLCBhbmQgYXR0cmlidXRlcyBvZgotCWNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCi0JZm9yIGZpbGVuYW1lcy4KKyAgICAgICAgQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mCisgICAgICAgIGNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCisgICAgICAgIGZvciBmaWxlbmFtZXMuCiAKLQlUaGUgQXV0b0NvbXBsZXRlV2luZG93IChBQ1cpIHdpbGwgb3BlbiBhZnRlciBhIHByZWRlZmluZWQgZGVsYXkKLQkoZGVmYXVsdCBpcyB0d28gc2Vjb25kcykgYWZ0ZXIgYSAnLicgb3IgKGluIGEgc3RyaW5nKSBhbiBvcy5zZXAgaXMKLQl0eXBlZC4gIElmIGFmdGVyIG9uZSBvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlcgotCWNoYXJhY3RlcnMpIHlvdSB0eXBlIGEgVGFiIHRoZSBBQ1cgd2lsbCBvcGVuIGltbWVkaWF0ZWx5IGlmIGEgcG9zc2libGUKLQljb250aW51YXRpb24gaXMgZm91bmQuCisgICAgICAgIFRoZSBBdXRvQ29tcGxldGVXaW5kb3cgKEFDVykgd2lsbCBvcGVuIGFmdGVyIGEgcHJlZGVmaW5lZCBkZWxheQorICAgICAgICAoZGVmYXVsdCBpcyB0d28gc2Vjb25kcykgYWZ0ZXIgYSAnLicgb3IgKGluIGEgc3RyaW5nKSBhbiBvcy5zZXAgaXMKKyAgICAgICAgdHlwZWQuICBJZiBhZnRlciBvbmUgb2YgdGhvc2UgY2hhcmFjdGVycyAocGx1cyB6ZXJvIG9yIG1vcmUgb3RoZXIKKyAgICAgICAgY2hhcmFjdGVycykgYSB0YWIgaXMgdHlwZWQgdGhlIEFDVyB3aWxsIG9wZW4gaW1tZWRpYXRlbHkgaWYgYSBwb3NzaWJsZQorICAgICAgICBjb250aW51YXRpb24gaXMgZm91bmQuCiAKLQlJZiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGZvciB0aGUgY2hhcmFjdGVycyBlbnRlcmVkLCBhCi0JVGFiIHdpbGwgc3VwcGx5IHRoYXQgY29tcGxldGlvbiB3aXRob3V0IG9wZW5pbmcgdGhlIEFDVy4KKyAgICAgICAgSWYgdGhlcmUgaXMgb25seSBvbmUgcG9zc2libGUgY29tcGxldGlvbiBmb3IgdGhlIGNoYXJhY3RlcnMgZW50ZXJlZCwgYQorICAgICAgICB0YWIgd2lsbCBzdXBwbHkgdGhhdCBjb21wbGV0aW9uIHdpdGhvdXQgb3BlbmluZyB0aGUgQUNXLgogCi0JJ1Nob3cgQ29tcGxldGlvbnMnIHdpbGwgZm9yY2Ugb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdy4gIEluIGFuIGVtcHR5Ci0Jc3RyaW5nLCB0aGlzIHdpbGwgY29udGFpbiB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgT24gYQotCWJsYW5rIGxpbmUsIGl0IHdpbGwgY29udGFpbiB0aGUgYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kCi0JY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gIElmIHNvbWUKLQljaGFyYWN0ZXJzIGhhdmUgYmVlbiBlbnRlcmVkLCB0aGUgQUNXIHdpbGwgYXR0ZW1wdCB0byBiZSBtb3JlIHNwZWNpZmljLgorICAgICAgICAnU2hvdyBDb21wbGV0aW9ucycgd2lsbCBmb3JjZSBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LCBieSBkZWZhdWx0IHRoZQorICAgICAgICBDb250cm9sLXNwYWNlIGtleXMgd2lsbCBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LiAgSW4gYW4gZW1wdHkKKyAgICAgICAgc3RyaW5nLCB0aGlzIHdpbGwgY29udGFpbiB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgT24gYQorICAgICAgICBibGFuayBsaW5lLCBpdCB3aWxsIGNvbnRhaW4gdGhlIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAorICAgICAgICBjbGFzc2VzIGluIHRoZSBjdXJyZW50IG5hbWUgc3BhY2VzLCBwbHVzIGFueSBtb2R1bGVzIGltcG9ydGVkLiAgSWYgc29tZQorICAgICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBlbnRlcmVkLCB0aGUgQUNXIHdpbGwgYXR0ZW1wdCB0byBiZSBtb3JlIHNwZWNpZmljLgogCi0JSWYgc3RyaW5nIG9mIGNoYXJhY3RlcnMgaXMgdHlwZWQsIHRoZSBBQ1cgc2VsZWN0aW9uIHdpbGwganVtcCB0byB0aGUKLQllbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSBUYWIgd2lsbCBjYXVzZQotCXRoZSBsb25nZXN0IG5vbi1hbWJpZ3VvdXMgbWF0Y2ggdG8gYmUgZW50ZXJlZCBpbiB0aGUgRWRpdCB3aW5kb3cgb3IKLQlTaGVsbC4gIFR3byBUYWJzIGluIGEgcm93IHdpbGwgc3VwcGx5IHRoZSBjdXJyZW50IEFDVyBzZWxlY3Rpb24sIGFzCi0Jd2lsbCBSZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQotCXNlbGVjdGlvbiwgYW5kIHRoZSBzY3JvbGx3aGVlbCBhbGwgb3BlcmF0ZSBvbiB0aGUgQUNXLgorICAgICAgICBJZiBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQorICAgICAgICBlbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSB0YWIgd2lsbCBjYXVzZQorICAgICAgICB0aGUgbG9uZ2VzdCBub24tYW1iaWd1b3VzIG1hdGNoIHRvIGJlIGVudGVyZWQgaW4gdGhlIEVkaXQgd2luZG93IG9yCisgICAgICAgIFNoZWxsLiAgVHdvIHRhYnMgaW4gYSByb3cgd2lsbCBzdXBwbHkgdGhlIGN1cnJlbnQgQUNXIHNlbGVjdGlvbiwgYXMKKyAgICAgICAgd2lsbCByZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQorICAgICAgICBzZWxlY3Rpb24sIGFuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCiAKLQknSGlkZGVuJyBhdHRyaWJ1dGVzIGNhbiBiZSBhY2Nlc3NlZCBieSB0eXBpbmcgdGhlIGJlZ2lubmluZyBvZiBoaWRkZW4KLQluYW1lIGFmdGVyIGEgJy4nLiAgZS5nLiAnXycuICBUaGlzIGFsbG93cyBhY2Nlc3MgdG8gbW9kdWxlcyB3aXRoCi0JJ19fYWxsX18nIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgorICAgICAgICAiSGlkZGVuIiBhdHRyaWJ1dGVzIGNhbiBiZSBhY2Nlc3NlZCBieSB0eXBpbmcgdGhlIGJlZ2lubmluZyBvZiBoaWRkZW4KKyAgICAgICAgbmFtZSBhZnRlciBhICcuJywgIGUuZy4gJ18nLiAgVGhpcyBhbGxvd3MgYWNjZXNzIHRvIG1vZHVsZXMgd2l0aAorICAgICAgICAnX19hbGxfXycgc2V0LCBvciB0byBjbGFzcy1wcml2YXRlIGF0dHJpYnV0ZXMuCiAKLQlDb21wbGV0aW9ucyBhbmQgdGhlICdFeHBhbmQgV29yZCcgZmFjaWxpdHkgY2FuIHNhdmUgYSBsb3Qgb2YgdHlwaW5nIQorICAgICAgICBDb21wbGV0aW9ucyBhbmQgdGhlICdFeHBhbmQgV29yZCcgZmFjaWxpdHkgY2FuIHNhdmUgYSBsb3Qgb2YgdHlwaW5nIQogCi0JQ29tcGxldGlvbnMgYXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvIHRob3NlIGluIHRoZSBuYW1lc3BhY2VzLiAgTmFtZXMgaW4KLQlhbiBFZGl0IHdpbmRvdyB3aGljaCBhcmUgbm90IHZpYSBfX21haW5fXyBvciBzeXMubW9kdWxlcyB3aWxsIG5vdCBiZQotCWZvdW5kLiAgUnVuIHRoZSBtb2R1bGUgb25jZSB3aXRoIHlvdXIgaW1wb3J0cyB0byBjb3JyZWN0IHRoaXMKLQlzaXR1YXRpb24uICBOb3RlIHRoYXQgSURMRSBpdHNlbGYgcGxhY2VzIHF1aXRlIGEgZmV3IG1vZHVsZXMgaW4KLQlzeXMubW9kdWxlcywgc28gbXVjaCBjYW4gYmUgZm91bmQgYnkgZGVmYXVsdCwgZS5nLiB0aGUgcmUgbW9kdWxlLgorICAgICAgICBDb21wbGV0aW9ucyBhcmUgY3VycmVudGx5IGxpbWl0ZWQgdG8gdGhvc2UgaW4gdGhlIG5hbWVzcGFjZXMuICBOYW1lcyBpbgorICAgICAgICBhbiBFZGl0b3Igd2luZG93IHdoaWNoIGFyZSBub3QgdmlhIF9fbWFpbl9fIG9yIHN5cy5tb2R1bGVzIHdpbGwgbm90IGJlCisgICAgICAgIGZvdW5kLiAgUnVuIHRoZSBtb2R1bGUgb25jZSB3aXRoIHlvdXIgaW1wb3J0cyB0byBjb3JyZWN0IHRoaXMKKyAgICAgICAgc2l0dWF0aW9uLiAgTm90ZSB0aGF0IElETEUgaXRzZWxmIHBsYWNlcyBxdWl0ZSBhIGZldyBtb2R1bGVzIGluCisgICAgICAgIHN5cy5tb2R1bGVzLCBzbyBtdWNoIGNhbiBiZSBmb3VuZCBieSBkZWZhdWx0LCBlLmcuIHRoZSByZSBtb2R1bGUuCiAKLQlJZiB5b3UgZG9uJ3QgbGlrZSB0aGUgQUNXIHBvcHBpbmcgdXAgdW5iaWRkZW4sIHNpbXBseSBtYWtlIHRoZSBkZWxheQotCWxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPVE9ILCB5b3UgY291bGQgbWFrZSB0aGUgZGVsYXkgemVyby4KLQotCVlvdSBjb3VsZCBhbHNvIHN3aXRjaCBvZmYgdGhlIENhbGxUaXBzIGV4dGVuc2lvbi4gIChXZSB3aWxsIGJlIGFkZGluZwotCWEgZGVsYXkgdG8gdGhlIGNhbGwgdGlwIHdpbmRvdy4pCisgICAgICAgIElmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5CisgICAgICAgIGxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPciBhbm90aGVyIG9wdGlvbiBpcyB0aGUgZGVsYXkgY291bGQKKyAgICAgICAgYmUgc2V0IHRvIHplcm8uIEFub3RoZXIgYWx0ZXJuYXRpdmUgdG8gcHJldmVudGluZyBBQ1cgcG9wdXBzIGlzIHRvCisgICAgICAgIGRpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCiAKIFB5dGhvbiBTaGVsbCB3aW5kb3c6CiAKLQlDb250cm9sLWMgaW50ZXJydXB0cyBleGVjdXRpbmcgY29tbWFuZC4KLQlDb250cm9sLWQgc2VuZHMgZW5kLW9mLWZpbGU7IGNsb3NlcyB3aW5kb3cgaWYgdHlwZWQgYXQgPj4+IHByb21wdC4KKyAgICAgICAgQ29udHJvbC1jIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQuCisgICAgICAgIENvbnRyb2wtZCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCA+Pj4gcHJvbXB0LgorICAgICAgICBBbHQtLyBleHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgogCiAgICAgQ29tbWFuZCBoaXN0b3J5OgogCi0JQWx0LXAgcmV0cmlldmVzIHByZXZpb3VzIGNvbW1hbmQgbWF0Y2hpbmcgd2hhdCB5b3UgaGF2ZSB0eXBlZC4KLQlBbHQtbiByZXRyaWV2ZXMgbmV4dC4KLQkgICAgICAoVGhlc2UgYXJlIENvbnRyb2wtcCwgQ29udHJvbC1uIG9uIE9TIFgpCi0JUmV0dXJuIHdoaWxlIGN1cnNvciBpcyBvbiBhIHByZXZpb3VzIGNvbW1hbmQgcmV0cmlldmVzIHRoYXQgY29tbWFuZC4KLQlFeHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgorICAgICAgICBBbHQtcCByZXRyaWV2ZXMgcHJldmlvdXMgY29tbWFuZCBtYXRjaGluZyB3aGF0IHlvdSBoYXZlIHR5cGVkLiBPbiBPUyBYCisgICAgICAgIHVzZSBDb250cm9sLXAuCisgICAgICAgIEFsdC1uIHJldHJpZXZlcyBuZXh0LiBPbiBPUyBYIHVzZSBDb250cm9sLW4uCisgICAgICAgIFJldHVybiB3aGlsZSBjdXJzb3IgaXMgb24gYSBwcmV2aW91cyBjb21tYW5kIHJldHJpZXZlcyB0aGF0IGNvbW1hbmQuCiAKICAgICBTeW50YXggY29sb3JzOgogCi0JVGhlIGNvbG9yaW5nIGlzIGFwcGxpZWQgaW4gYSBiYWNrZ3JvdW5kICJ0aHJlYWQiLCBzbyB5b3UgbWF5Ci0Jb2NjYXNpb25hbGx5IHNlZSB1bmNvbG9yaXplZCB0ZXh0LiAgVG8gY2hhbmdlIHRoZSBjb2xvcgotCXNjaGVtZSwgdXNlIHRoZSBDb25maWd1cmUgSURMRSAvIEhpZ2hsaWdodGluZyBkaWFsb2cuCisgICAgICAgIFRoZSBjb2xvcmluZyBpcyBhcHBsaWVkIGluIGEgYmFja2dyb3VuZCAidGhyZWFkIiwgc28geW91IG1heQorICAgICAgICBvY2Nhc2lvbmFsbHkgc2VlIHVuY29sb3JpemVkIHRleHQuICBUbyBjaGFuZ2UgdGhlIGNvbG9yCisgICAgICAgIHNjaGVtZSwgdXNlIHRoZSBDb25maWd1cmUgSURMRSAvIEhpZ2hsaWdodGluZyBkaWFsb2cuCiAKICAgICBQeXRob24gZGVmYXVsdCBzeW50YXggY29sb3JzOgogCi0JS2V5d29yZHMJb3JhbmdlCi0JQnVpbHRpbnMJcm95YWwgcHVycGxlCi0JU3RyaW5ncwkJZ3JlZW4KLQlDb21tZW50cwlyZWQKLQlEZWZpbml0aW9ucwlibHVlCisgICAgICAgIEtleXdvcmRzICAgICAgICBvcmFuZ2UKKyAgICAgICAgQnVpbHRpbnMgICAgICAgIHJveWFsIHB1cnBsZQorICAgICAgICBTdHJpbmdzICAgICAgICAgZ3JlZW4KKyAgICAgICAgQ29tbWVudHMgICAgICAgIHJlZAorICAgICAgICBEZWZpbml0aW9ucyAgICAgYmx1ZQogCiAgICAgU2hlbGwgZGVmYXVsdCBjb2xvcnM6CiAKLQlDb25zb2xlIG91dHB1dAlicm93bgotCXN0ZG91dAkJYmx1ZQotCXN0ZGVycgkJcmVkCi0Jc3RkaW4JCWJsYWNrCisgICAgICAgIENvbnNvbGUgb3V0cHV0ICBicm93bgorICAgICAgICBzdGRvdXQgICAgICAgICAgYmx1ZQorICAgICAgICBzdGRlcnIgICAgICAgICAgcmVkCisgICAgICAgIHN0ZGluICAgICAgICAgICBibGFjawogCiBPdGhlciBwcmVmZXJlbmNlczoKIAotCVRoZSBmb250IHByZWZlcmVuY2VzLCBrZXliaW5kaW5nLCBhbmQgc3RhcnR1cCBwcmVmZXJlbmNlcyBjYW4KLQliZSBjaGFuZ2VkIHVzaW5nIHRoZSBTZXR0aW5ncyBkaWFsb2cuCisgICAgICAgIFRoZSBmb250IHByZWZlcmVuY2VzLCBoaWdobGlnaHRpbmcsIGtleXMsIGFuZCBnZW5lcmFsIHByZWZlcmVuY2VzIGNhbgorICAgICAgICBiZSBjaGFuZ2VkIHZpYSB0aGUgQ29uZmlndXJlIElETEUgbWVudSBvcHRpb24uICBCZSBzdXJlIHRvIG5vdGUgdGhhdAorICAgICAgICBrZXlzIGNhbiBiZSB1c2VyIGRlZmluZWQsIElETEUgc2hpcHMgd2l0aCBmb3VyIGJ1aWx0IGluIGtleSBzZXRzLiBJbgorICAgICAgICBhZGRpdGlvbiBhIHVzZXIgY2FuIGNyZWF0ZSBhIGN1c3RvbSBrZXkgc2V0IGluIHRoZSBDb25maWd1cmUgSURMRQorICAgICAgICBkaWFsb2cgdW5kZXIgdGhlIGtleXMgdGFiLgogCiBDb21tYW5kIGxpbmUgdXNhZ2U6CiAKLQlFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgorICAgICAgICBFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgogCi1SdW5uaW5nIHdpdGhvdXQgYSBzdWJwcm9jZXNzOgorICAgICAgICBpZGxlLnB5IFstYyBjb21tYW5kXSBbLWRdIFstZV0gWy1zXSBbLXQgdGl0bGVdIFthcmddIC4uLgogCi0JSWYgSURMRSBpcyBzdGFydGVkIHdpdGggdGhlIC1uIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXQgd2lsbCBydW4gaW4gYQotCXNpbmdsZSBwcm9jZXNzIGFuZCB3aWxsIG5vdCBjcmVhdGUgdGhlIHN1YnByb2Nlc3Mgd2hpY2ggcnVucyB0aGUgUlBDCi0JUHl0aG9uIGV4ZWN1dGlvbiBzZXJ2ZXIuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgUHl0aG9uIGNhbm5vdCBjcmVhdGUKLQl0aGUgc3VicHJvY2VzcyBvciB0aGUgUlBDIHNvY2tldCBpbnRlcmZhY2Ugb24geW91ciBwbGF0Zm9ybS4gIEhvd2V2ZXIsCi0JaW4gdGhpcyBtb2RlIHVzZXIgY29kZSBpcyBub3QgaXNvbGF0ZWQgZnJvbSBJRExFIGl0c2VsZi4gIEFsc28sIHRoZQotCWVudmlyb25tZW50IGlzIG5vdCByZXN0YXJ0ZWQgd2hlbiBSdW4vUnVuIE1vZHVsZSAoRjUpIGlzIHNlbGVjdGVkLiAgSWYKLQl5b3VyIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQsIHlvdSBtdXN0IHJlbG9hZCgpIHRoZSBhZmZlY3RlZCBtb2R1bGVzIGFuZAotCXJlLWltcG9ydCBhbnkgc3BlY2lmaWMgaXRlbXMgKGUuZy4gZnJvbSBmb28gaW1wb3J0IGJheikgaWYgdGhlIGNoYW5nZXMKLQlhcmUgdG8gdGFrZSBlZmZlY3QuICBGb3IgdGhlc2UgcmVhc29ucywgaXQgaXMgcHJlZmVyYWJsZSB0byBydW4gSURMRQotCXdpdGggdGhlIGRlZmF1bHQgc3VicHJvY2VzcyBpZiBhdCBhbGwgcG9zc2libGUuCisgICAgICAgIC1jIGNvbW1hbmQgIHJ1biB0aGlzIGNvbW1hbmQKKyAgICAgICAgLWQgICAgICAgICAgZW5hYmxlIGRlYnVnZ2VyCisgICAgICAgIC1lICAgICAgICAgIGVkaXQgbW9kZTsgYXJndW1lbnRzIGFyZSBmaWxlcyB0byBiZSBlZGl0ZWQKKyAgICAgICAgLXMgICAgICAgICAgcnVuICRJRExFU1RBUlRVUCBvciAkUFlUSE9OU1RBUlRVUCBmaXJzdAorICAgICAgICAtdCB0aXRsZSAgICBzZXQgdGl0bGUgb2Ygc2hlbGwgd2luZG93CisKKyAgICAgICAgSWYgdGhlcmUgYXJlIGFyZ3VtZW50czoKKyAgICAgICAgMS4gSWYgLWUgaXMgdXNlZCwgYXJndW1lbnRzIGFyZSBmaWxlcyBvcGVuZWQgZm9yIGVkaXRpbmcgYW5kIHN5cy5hcmd2CisgICAgICAgICAgIHJlZmxlY3RzIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIElETEUgaXRzZWxmLgorICAgICAgICAyLiBPdGhlcndpc2UsIGlmIC1jIGlzIHVzZWQsIGFsbCBhcmd1bWVudHMgYXJlIHBsYWNlZCBpbgorICAgICAgICAgICBzeXMuYXJndlsxOi4uLl0sIHdpdGggc3lzLmFyZ3ZbMF0gc2V0IHRvIC1jLgorICAgICAgICAzLiBPdGhlcndpc2UsIGlmIG5laXRoZXIgLWUgbm9yIC1jIGlzIHVzZWQsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhCisgICAgICAgICAgIHNjcmlwdCB3aGljaCBpcyBleGVjdXRlZCB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIGluCisgICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSAgYW5kIHN5cy5hcmd2WzBdIHNldCB0byB0aGUgc2NyaXB0IG5hbWUuICBJZiB0aGUKKyAgICAgICAgICAgc2NyaXB0IG5hbWUgaXMgLSwgbm8gc2NyaXB0IGlzIGV4ZWN1dGVkIGJ1dCBhbiBpbnRlcmFjdGl2ZSBQeXRob24KKyAgICAgICAgICAgc2Vzc2lvbiBpcyBzdGFydGVkOyB0aGUgYXJndW1lbnRzIGFyZSBzdGlsbCBhdmFpbGFibGUgaW4gc3lzLmFyZ3YuCisKK1J1bm5pbmcgd2l0aG91dCBhIHN1YnByb2Nlc3M6IChERVBSRUNBVEVEIGluIFB5dGhvbiAzLjQgc2VlIElzc3VlIDE2MTIzKQorCisgICAgICAgIElmIElETEUgaXMgc3RhcnRlZCB3aXRoIHRoZSAtbiBjb21tYW5kIGxpbmUgc3dpdGNoIGl0IHdpbGwgcnVuIGluIGEKKyAgICAgICAgc2luZ2xlIHByb2Nlc3MgYW5kIHdpbGwgbm90IGNyZWF0ZSB0aGUgc3VicHJvY2VzcyB3aGljaCBydW5zIHRoZSBSUEMKKyAgICAgICAgUHl0aG9uIGV4ZWN1dGlvbiBzZXJ2ZXIuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgUHl0aG9uIGNhbm5vdCBjcmVhdGUKKyAgICAgICAgdGhlIHN1YnByb2Nlc3Mgb3IgdGhlIFJQQyBzb2NrZXQgaW50ZXJmYWNlIG9uIHlvdXIgcGxhdGZvcm0uICBIb3dldmVyLAorICAgICAgICBpbiB0aGlzIG1vZGUgdXNlciBjb2RlIGlzIG5vdCBpc29sYXRlZCBmcm9tIElETEUgaXRzZWxmLiAgQWxzbywgdGhlCisgICAgICAgIGVudmlyb25tZW50IGlzIG5vdCByZXN0YXJ0ZWQgd2hlbiBSdW4vUnVuIE1vZHVsZSAoRjUpIGlzIHNlbGVjdGVkLiAgSWYKKyAgICAgICAgeW91ciBjb2RlIGhhcyBiZWVuIG1vZGlmaWVkLCB5b3UgbXVzdCByZWxvYWQoKSB0aGUgYWZmZWN0ZWQgbW9kdWxlcyBhbmQKKyAgICAgICAgcmUtaW1wb3J0IGFueSBzcGVjaWZpYyBpdGVtcyAoZS5nLiBmcm9tIGZvbyBpbXBvcnQgYmF6KSBpZiB0aGUgY2hhbmdlcworICAgICAgICBhcmUgdG8gdGFrZSBlZmZlY3QuICBGb3IgdGhlc2UgcmVhc29ucywgaXQgaXMgcHJlZmVyYWJsZSB0byBydW4gSURMRQorICAgICAgICB3aXRoIHRoZSBkZWZhdWx0IHN1YnByb2Nlc3MgaWYgYXQgYWxsIHBvc3NpYmxlLgogCiBFeHRlbnNpb25zOgogCi0JSURMRSBjb250YWlucyBhbiBleHRlbnNpb24gZmFjaWxpdHkuICBTZWUgdGhlIGJlZ2lubmluZyBvZgotCWNvbmZpZy1leHRlbnNpb25zLmRlZiBpbiB0aGUgaWRsZWxpYiBkaXJlY3RvcnkgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCi0JVGhlIGRlZmF1bHQgZXh0ZW5zaW9ucyBhcmUgY3VycmVudGx5OgorICAgICAgICBJRExFIGNvbnRhaW5zIGFuIGV4dGVuc2lvbiBmYWNpbGl0eS4gIFNlZSB0aGUgYmVnaW5uaW5nIG9mCisgICAgICAgIGNvbmZpZy1leHRlbnNpb25zLmRlZiBpbiB0aGUgaWRsZWxpYiBkaXJlY3RvcnkgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCisgICAgICAgIFRoZSBkZWZhdWx0IGV4dGVuc2lvbnMgYXJlIGN1cnJlbnRseToKIAotCQlGb3JtYXRQYXJhZ3JhcGgKLQkJQXV0b0V4cGFuZAotCQlab29tSGVpZ2h0Ci0JCVNjcmlwdEJpbmRpbmcKLQkJQ2FsbFRpcHMKLQkJUGFyZW5NYXRjaAotCQlBdXRvQ29tcGxldGUKLQkJQ29kZUNvbnRleHQKKyAgICAgICAgICAgICAgICBGb3JtYXRQYXJhZ3JhcGgKKyAgICAgICAgICAgICAgICBBdXRvRXhwYW5kCisgICAgICAgICAgICAgICAgWm9vbUhlaWdodAorICAgICAgICAgICAgICAgIFNjcmlwdEJpbmRpbmcKKyAgICAgICAgICAgICAgICBDYWxsVGlwcworICAgICAgICAgICAgICAgIFBhcmVuTWF0Y2gKKyAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUKKyAgICAgICAgICAgICAgICBDb2RlQ29udGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZXZlci5weSBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKaW5kZXggYjdmZjBmOC4uOGNkMWMwZiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZXZlci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CkBAIC0xICsxIEBACi1JRExFX1ZFUlNJT04gPSAiMy4zLjIiCitJRExFX1ZFUlNJT04gPSAiMy40LjBhMSIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3JwYy5weSBiL0xpYi9pZGxlbGliL3JwYy5weQppbmRleCBkZGNlNmU5Li45YzUxYjhmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC0xOTksNyArMTk5LDcgQEAKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKICAgICAgICAgICAgIHJldHVybiAoIkNBTExFWEMiLCBleCkKQEAgLTM0MCw3ICszNDAsNyBAQAogICAgICAgICAgICAgICAgIG4gPSBzZWxmLnNvY2suc2VuZChzWzpCVUZTSVpFXSkKICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigic29ja2V0IG5vIGxvbmdlciBleGlzdHMiKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHMgPSBzW246XQpAQCAtMzU3LDcgKzM1Nyw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzID0gc2VsZi5zb2NrLnJlY3YoQlVGU0laRSkKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgICAgICAgaWYgbGVuKHMpID09IDA6CiAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKQEAgLTUzNyw3ICs1MzcsNyBAQAogICAgICAgICAgICAgU29ja2V0SU8uX19pbml0X18oc2VsZiwgd29ya2luZ19zb2NrKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJpbnQoIioqIEludmFsaWQgaG9zdDogIiwgYWRkcmVzcywgZmlsZT1zeXMuX19zdGRlcnJfXykKLSAgICAgICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgogCiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3J1bi5weSBiL0xpYi9pZGxlbGliL3J1bi5weQppbmRleCBjMTg1OWI2Li4xM2NlYzYyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ydW4ucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuLnB5CkBAIC0xNTAsOCArMTUwLDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VydmVyID0gTXlSUENTZXJ2ZXIoYWRkcmVzcywgTXlIYW5kbGVyKQogICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBwcmludCgiSURMRSBTdWJwcm9jZXNzOiBzb2NrZXQgZXJyb3I6ICIgKyBlcnIuYXJnc1sxXSArCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHByaW50KCJJRExFIFN1YnByb2Nlc3M6IE9TRXJyb3I6ICIgKyBlcnIuYXJnc1sxXSArCiAgICAgICAgICAgICAgICAgICAiLCByZXRyeWluZy4uLi4iLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgICAgICAgICAgc29ja2V0X2Vycm9yID0gZXJyCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggNzI0ZjlkMS4uNDIzNTNiYiAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTI2OSw3ICsyNjksNyBAQAogICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgIyBUaGUgc2VydmVyIG1pZ2h0IGFscmVhZHkgaGF2ZSBjbG9zZWQgdGhlIGNvbm5lY3Rpb24KICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PVENPTk46CiAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTkwMyw3ICs5MDMsNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc2VuZChkYXRhICsgQ1JMRikKLSAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIE9TRXJyb3IpIGFzIHZhbDoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgdmFsOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgnc29ja2V0IGVycm9yOiAlcycgJSB2YWwpCiAKICAgICAgICAgaWYgbGl0ZXJhbCBpcyBOb25lOgpAQCAtOTI4LDcgKzkyOCw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGxpdGVyYWwpCiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kKENSTEYpCi0gICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgT1NFcnJvcikgYXMgdmFsOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgdmFsOgogICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3NvY2tldCBlcnJvcjogJXMnICUgdmFsKQogCiAgICAgICAgICAgICBpZiBub3QgbGl0ZXJhdG9yOgpAQCAtMTA3Myw3ICsxMDczLDcgQEAKIAogICAgICAgICAjIFByb3RvY29sIG1hbmRhdGVzIGFsbCBsaW5lcyB0ZXJtaW5hdGVkIGJ5IENSTEYKICAgICAgICAgaWYgbm90IGxpbmUuZW5kc3dpdGgoYidcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCdzb2NrZXQgZXJyb3I6IHVudGVybWluYXRlZCBsaW5lJykKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3NvY2tldCBlcnJvcjogdW50ZXJtaW5hdGVkIGxpbmU6ICVyJyAlIGxpbmUpCiAKICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQogICAgICAgICBpZiBfX2RlYnVnX186CmRpZmYgLS1naXQgYS9MaWIvaW1naGRyLnB5IGIvTGliL2ltZ2hkci5weQppbmRleCA2ZWU0NWRhLi4wY2JhMDYzIDEwMDY0NAotLS0gYS9MaWIvaW1naGRyLnB5CisrKyBiL0xpYi9pbWdoZHIucHkKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcHJpbnQod2hhdChmaWxlbmFtZSkpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHByaW50KCcqKiogbm90IGZvdW5kICoqKicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQppbmRleCAzNGI2YzU0Li4zMmU4OTk4IDEwMDY0NAotLS0gYS9MaWIvaW1wLnB5CisrKyBiL0xpYi9pbXAucHkKQEAgLTE2LDE4ICsxNiwyMCBAQAogICAgICMgUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgbG9hZGluZy4KICAgICBsb2FkX2R5bmFtaWMgPSBOb25lCiAKLSMgRGlyZWN0bHkgZXhwb3NlZCBieSB0aGlzIG1vZHVsZQotZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgbmV3X21vZHVsZQotZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UsIHNvdXJjZV9mcm9tX2NhY2hlCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VsZXNzRmlsZUxvYWRlciwgX0VSUl9NU0cKIAotCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHRva2VuaXplCitpbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCit3YXJuaW5ncy53YXJuKCJ0aGUgaW1wIG1vZHVsZSBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBpbXBvcnRsaWI7ICIKKyAgICAgICAgICAgICAgInNlZSB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBmb3IgYWx0ZXJuYXRpdmUgdXNlcyIsCisgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCiAKICMgREVQUkVDQVRFRAogU0VBUkNIX0VSUk9SID0gMApAQCAtNDIsOSArNDQsMjMgQEAKIElNUF9IT09LID0gOQogCiAKK2RlZiBuZXdfbW9kdWxlKG5hbWUpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBDcmVhdGUgYSBuZXcgbW9kdWxlLgorCisgICAgVGhlIG1vZHVsZSBpcyBub3QgZW50ZXJlZCBpbnRvIHN5cy5tb2R1bGVzLgorCisgICAgIiIiCisgICAgcmV0dXJuIHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKKworCiBkZWYgZ2V0X21hZ2ljKCk6Ci0gICAgIiIiUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKLSAgICByZXR1cm4gX2Jvb3RzdHJhcC5fTUFHSUNfQllURVMKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4KKyAgICAiIiIKKyAgICByZXR1cm4gdXRpbC5NQUdJQ19OVU1CRVIKIAogCiBkZWYgZ2V0X3RhZygpOgpAQCAtNTIsMTAgKzY4LDQwIEBACiAgICAgcmV0dXJuIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKIAogCitkZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSk6CisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuCisKKyAgICBUaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUKKyAgICAucHljLy5weW8gZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLiAgVGhlIGV4dGVuc2lvbgorICAgIHdpbGwgYmUgLnB5YyB1bmxlc3Mgc3lzLmZsYWdzLm9wdGltaXplIGlzIG5vbi16ZXJvLCB0aGVuIGl0IHdpbGwgYmUgLnB5by4KKworICAgIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB1c2VkIGluCisgICAgcGxhY2Ugb2Ygc3lzLmZsYWdzLm9wdGltaXplLgorCisgICAgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICByZXR1cm4gdXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZSkKKworCitkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgorCisgICAgVGhlIC5weWMvLnB5byBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KKyAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGggZG9lcworICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYKKyAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIHJldHVybiB1dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCisKKwogZGVmIGdldF9zdWZmaXhlcygpOgotICAgIHdhcm5pbmdzLndhcm4oJ2ltcC5nZXRfc3VmZml4ZXMoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIGNvbnN0YW50cyAnCi0gICAgICAgICAgICAgICAgICAnZGVmaW5lZCBvbiBpbXBvcnRsaWIubWFjaGluZXJ5IGluc3RlYWQnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICIiIioqREVQUkVDQVRFRCoqIiIiCiAgICAgZXh0ZW5zaW9ucyA9IFsocywgJ3JiJywgQ19FWFRFTlNJT04pIGZvciBzIGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNdCiAgICAgc291cmNlID0gWyhzLCAnVScsIFBZX1NPVVJDRSkgZm9yIHMgaW4gbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU10KICAgICBieXRlY29kZSA9IFsocywgJ3JiJywgUFlfQ09NUElMRUQpIGZvciBzIGluIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU10KQEAgLTY1LDcgKzExMSwxMSBAQAogCiBjbGFzcyBOdWxsSW1wb3J0ZXI6CiAKLSAgICAiIiJOdWxsIGltcG9ydCBvYmplY3QuIiIiCisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIE51bGwgaW1wb3J0IG9iamVjdC4KKworICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgogICAgICAgICBpZiBwYXRoID09ICcnOgpAQCAtMTAxLDQ4ICsxNTEsMzcgQEAKICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9kYXRhKHBhdGgpCiAKIAotY2xhc3MgX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLCBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIpOgorY2xhc3MgX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcik6CiAKICAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBsb2FkX3NvdXJjZSgpLiIiIgogCiAKIGRlZiBsb2FkX3NvdXJjZShuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKLSAgICBtc2cgPSAoJ2ltcC5sb2FkX3NvdXJjZSgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnCi0gICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpLmxvYWRfbW9kdWxlKCknCi0gICAgICAgICAgICcgaW5zdGVhZCcpCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KICAgICAjIFRvIGFsbG93IHJlbG9hZGluZyB0byBwb3RlbnRpYWxseSB3b3JrLCB1c2UgYSBub24taGFja2VkIGxvYWRlciB3aGljaAogICAgICMgd29uJ3QgcmVseSBvbiBhIG5vdy1jbG9zZWQgZmlsZSBvYmplY3QuCi0gICAgbW9kdWxlLl9fbG9hZGVyX18gPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCisgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKICAgICByZXR1cm4gbW9kdWxlCiAKIAotY2xhc3MgX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsCi0gICAgICAgIF9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIpOgorY2xhc3MgX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsIFNvdXJjZWxlc3NGaWxlTG9hZGVyKToKIAogICAgICIiIkNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgaW1wbGVtZW50aW5nIGxvYWRfY29tcGlsZWQoKS4iIiIKIAogCiBkZWYgbG9hZF9jb21waWxlZChuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKLSAgICBtc2cgPSAoJ2ltcC5sb2FkX2NvbXBpbGVkKCkgaXMgZGVwcmVjYXRlZDsgdXNlICcKLSAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpLicKLSAgICAgICAgICAgJ2xvYWRfbW9kdWxlKCkgaW5zdGVhZCAnKQotICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgIiIiKipERVBSRUNBVEVEKioiIiIKICAgICBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkubG9hZF9tb2R1bGUobmFtZSkKICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQogICAgICMgVG8gYWxsb3cgcmVsb2FkaW5nIHRvIHBvdGVudGlhbGx5IHdvcmssIHVzZSBhIG5vbi1oYWNrZWQgbG9hZGVyIHdoaWNoCiAgICAgIyB3b24ndCByZWx5IG9uIGEgbm93LWNsb3NlZCBmaWxlIG9iamVjdC4KLSAgICBtb2R1bGUuX19sb2FkZXJfXyA9IF9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCisgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBTb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKICAgICByZXR1cm4gbW9kdWxlCiAKIAogZGVmIGxvYWRfcGFja2FnZShuYW1lLCBwYXRoKToKLSAgICBtc2cgPSAoJ2ltcC5sb2FkX3BhY2thZ2UoKSBpcyBkZXByZWNhdGVkOyB1c2UgZWl0aGVyICcKLSAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcigpIG9yICcKLSAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIoKSBpbnN0ZWFkJykKLSAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICIiIioqREVQUkVDQVRFRCoqIiIiCiAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAgZXh0ZW5zaW9ucyA9IChtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzpdICsKICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0pCkBAIC0xNTIsNyArMTkxLDcgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSBwYWNrYWdlJy5mb3JtYXQocGF0aCkpCi0gICAgcmV0dXJuIF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKS5sb2FkX21vZHVsZShuYW1lKQorICAgIHJldHVybiBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKS5sb2FkX21vZHVsZShuYW1lKQogCiAKIGRlZiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZGV0YWlscyk6CkBAIC0xNjQsMzIgKzIwMywzMCBAQAogCiAgICAgIiIiCiAgICAgc3VmZml4LCBtb2RlLCB0eXBlXyA9IGRldGFpbHMKLSAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKLSAgICAgICAgaWYgbW9kZSBhbmQgKG5vdCBtb2RlLnN0YXJ0c3dpdGgoKCdyJywgJ1UnKSkgb3IgJysnIGluIG1vZGUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBmaWxlIG9wZW4gbW9kZSB7IXJ9Jy5mb3JtYXQobW9kZSkpCi0gICAgICAgIGVsaWYgZmlsZSBpcyBOb25lIGFuZCB0eXBlXyBpbiB7UFlfU09VUkNFLCBQWV9DT01QSUxFRH06Ci0gICAgICAgICAgICBtc2cgPSAnZmlsZSBvYmplY3QgcmVxdWlyZWQgZm9yIGltcG9ydCAodHlwZSBjb2RlIHt9KScuZm9ybWF0KHR5cGVfKQotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCi0gICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfU09VUkNFOgotICAgICAgICAgICAgcmV0dXJuIGxvYWRfc291cmNlKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQotICAgICAgICBlbGlmIHR5cGVfID09IFBZX0NPTVBJTEVEOgotICAgICAgICAgICAgcmV0dXJuIGxvYWRfY29tcGlsZWQobmFtZSwgZmlsZW5hbWUsIGZpbGUpCi0gICAgICAgIGVsaWYgdHlwZV8gPT0gQ19FWFRFTlNJT04gYW5kIGxvYWRfZHluYW1pYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIG9wZW5lZF9maWxlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF9keW5hbWljKG5hbWUsIGZpbGVuYW1lLCBvcGVuZWRfZmlsZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRfZHluYW1pYyhuYW1lLCBmaWxlbmFtZSwgZmlsZSkKLSAgICAgICAgZWxpZiB0eXBlXyA9PSBQS0dfRElSRUNUT1JZOgotICAgICAgICAgICAgcmV0dXJuIGxvYWRfcGFja2FnZShuYW1lLCBmaWxlbmFtZSkKLSAgICAgICAgZWxpZiB0eXBlXyA9PSBDX0JVSUxUSU46Ci0gICAgICAgICAgICByZXR1cm4gaW5pdF9idWlsdGluKG5hbWUpCi0gICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfRlJPWkVOOgotICAgICAgICAgICAgcmV0dXJuIGluaXRfZnJvemVuKG5hbWUpCisgICAgaWYgbW9kZSBhbmQgKG5vdCBtb2RlLnN0YXJ0c3dpdGgoKCdyJywgJ1UnKSkgb3IgJysnIGluIG1vZGUpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIGZpbGUgb3BlbiBtb2RlIHshcn0nLmZvcm1hdChtb2RlKSkKKyAgICBlbGlmIGZpbGUgaXMgTm9uZSBhbmQgdHlwZV8gaW4ge1BZX1NPVVJDRSwgUFlfQ09NUElMRUR9OgorICAgICAgICBtc2cgPSAnZmlsZSBvYmplY3QgcmVxdWlyZWQgZm9yIGltcG9ydCAodHlwZSBjb2RlIHt9KScuZm9ybWF0KHR5cGVfKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICBlbGlmIHR5cGVfID09IFBZX1NPVVJDRToKKyAgICAgICAgcmV0dXJuIGxvYWRfc291cmNlKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgIGVsaWYgdHlwZV8gPT0gUFlfQ09NUElMRUQ6CisgICAgICAgIHJldHVybiBsb2FkX2NvbXBpbGVkKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgIGVsaWYgdHlwZV8gPT0gQ19FWFRFTlNJT04gYW5kIGxvYWRfZHluYW1pYyBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncmInKSBhcyBvcGVuZWRfZmlsZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF9keW5hbWljKG5hbWUsIGZpbGVuYW1lLCBvcGVuZWRfZmlsZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZyA9ICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0IHt9ICh0eXBlIGNvZGUge30pIi5mb3JtYXQobmFtZSwgdHlwZV8pCi0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICAgICAgICAgIHJldHVybiBsb2FkX2R5bmFtaWMobmFtZSwgZmlsZW5hbWUsIGZpbGUpCisgICAgZWxpZiB0eXBlXyA9PSBQS0dfRElSRUNUT1JZOgorICAgICAgICByZXR1cm4gbG9hZF9wYWNrYWdlKG5hbWUsIGZpbGVuYW1lKQorICAgIGVsaWYgdHlwZV8gPT0gQ19CVUlMVElOOgorICAgICAgICByZXR1cm4gaW5pdF9idWlsdGluKG5hbWUpCisgICAgZWxpZiB0eXBlXyA9PSBQWV9GUk9aRU46CisgICAgICAgIHJldHVybiBpbml0X2Zyb3plbihuYW1lKQorICAgIGVsc2U6CisgICAgICAgIG1zZyA9ICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0IHt9ICh0eXBlIGNvZGUge30pIi5mb3JtYXQobmFtZSwgdHlwZV8pCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKQogCiAKIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgpAQCAtMjI1LDE4ICsyNjIsMTYgQEAKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYWNrYWdlX2RpcmVjdG9yeSwgcGFja2FnZV9maWxlX25hbWUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBwYWNrYWdlX2RpcmVjdG9yeSwgKCcnLCAnJywgUEtHX0RJUkVDVE9SWSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQotICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbW9kZSwgdHlwZV8gaW4gZ2V0X3N1ZmZpeGVzKCk6Ci0gICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gbmFtZSArIHN1ZmZpeAotICAgICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihlbnRyeSwgZmlsZV9uYW1lKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBicmVhayAgIyBCcmVhayBvdXQgb2Ygb3V0ZXIgbG9vcCB3aGVuIGJyZWFraW5nIG91dCBvZiBpbm5lciBsb29wLgorICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCB0eXBlXyBpbiBnZXRfc3VmZml4ZXMoKToKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9IG5hbWUgKyBzdWZmaXgKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihlbnRyeSwgZmlsZV9uYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgYnJlYWsgICMgQnJlYWsgb3V0IG9mIG91dGVyIGxvb3Agd2hlbiBicmVha2luZyBvdXQgb2YgaW5uZXIgbG9vcC4KICAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfYm9vdHN0cmFwLl9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKIAogICAgIGVuY29kaW5nID0gTm9uZQogICAgIGlmIG1vZGUgPT0gJ1UnOgpAQCAtMjQ2LDMxICsyODEsMTIgQEAKICAgICByZXR1cm4gZmlsZSwgZmlsZV9wYXRoLCAoc3VmZml4LCBtb2RlLCB0eXBlXykKIAogCi1fUkVMT0FESU5HID0ge30KLQogZGVmIHJlbG9hZChtb2R1bGUpOgotICAgICIiIlJlbG9hZCB0aGUgbW9kdWxlIGFuZCByZXR1cm4gaXQuCisgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgIFJlbG9hZCB0aGUgbW9kdWxlIGFuZCByZXR1cm4gaXQuCiAKICAgICBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBiZWZvcmUuCiAKICAgICAiIiIKLSAgICBpZiBub3QgbW9kdWxlIG9yIHR5cGUobW9kdWxlKSAhPSB0eXBlKHN5cyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigicmVsb2FkKCkgYXJndW1lbnQgbXVzdCBiZSBtb2R1bGUiKQotICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KLSAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgbXNnID0gIm1vZHVsZSB7fSBub3QgaW4gc3lzLm1vZHVsZXMiCi0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKLSAgICBpZiBuYW1lIGluIF9SRUxPQURJTkc6Ci0gICAgICAgIHJldHVybiBfUkVMT0FESU5HW25hbWVdCi0gICAgX1JFTE9BRElOR1tuYW1lXSA9IG1vZHVsZQotICAgIHRyeToKLSAgICAgICAgcGFyZW50X25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQotICAgICAgICBpZiBwYXJlbnRfbmFtZSBhbmQgcGFyZW50X25hbWUgbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50X25hbWUpLCBuYW1lPXBhcmVudF9uYW1lKQotICAgICAgICByZXR1cm4gbW9kdWxlLl9fbG9hZGVyX18ubG9hZF9tb2R1bGUobmFtZSkKLSAgICBmaW5hbGx5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgX1JFTE9BRElOR1tuYW1lXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIGltcG9ydGxpYi5yZWxvYWQobW9kdWxlKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKaW5kZXggMjJjOTBmMi4uYWFiNTRhNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNSBAQAogIiIiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCi1fX2FsbF9fID0gWydfX2ltcG9ydF9fJywgJ2ltcG9ydF9tb2R1bGUnLCAnaW52YWxpZGF0ZV9jYWNoZXMnXQorX19hbGxfXyA9IFsnX19pbXBvcnRfXycsICdpbXBvcnRfbW9kdWxlJywgJ2ludmFsaWRhdGVfY2FjaGVzJywgJ3JlbG9hZCddCiAKICMgQm9vdHN0cmFwIGhlbHAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtMTEsNiArMTEsNyBAQAogIyBpbml0aWFsaXNlZCBiZWxvdyBpZiB0aGUgZnJvemVuIG9uZSBpcyBub3QgYXZhaWxhYmxlKS4KIGltcG9ydCBfaW1wICAjIEp1c3QgdGhlIGJ1aWx0aW4gY29tcG9uZW50LCBOT1QgdGhlIGZ1bGwgUHl0aG9uIG1vZHVsZQogaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCiAKIHRyeToKICAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIgYXMgX2Jvb3RzdHJhcApAQCAtNjgsNiArNjksOCBAQAogICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcGFzcworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCiAgICAgcmV0dXJuIF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCiAKIApAQCAtODgsMyArOTEsMzQgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgbGV2ZWwgKz0gMQogICAgIHJldHVybiBfYm9vdHN0cmFwLl9nY2RfaW1wb3J0KG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwgbGV2ZWwpCisKKworX1JFTE9BRElORyA9IHt9CisKKworZGVmIHJlbG9hZChtb2R1bGUpOgorICAgICIiIlJlbG9hZCB0aGUgbW9kdWxlIGFuZCByZXR1cm4gaXQuCisKKyAgICBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBiZWZvcmUuCisKKyAgICAiIiIKKyAgICBpZiBub3QgbW9kdWxlIG9yIG5vdCBpc2luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicmVsb2FkKCkgYXJndW1lbnQgbXVzdCBiZSBtb2R1bGUiKQorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgbXNnID0gIm1vZHVsZSB7fSBub3QgaW4gc3lzLm1vZHVsZXMiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICBpZiBuYW1lIGluIF9SRUxPQURJTkc6CisgICAgICAgIHJldHVybiBfUkVMT0FESU5HW25hbWVdCisgICAgX1JFTE9BRElOR1tuYW1lXSA9IG1vZHVsZQorICAgIHRyeToKKyAgICAgICAgcGFyZW50X25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBpZiBwYXJlbnRfbmFtZSBhbmQgcGFyZW50X25hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50X25hbWUpLCBuYW1lPXBhcmVudF9uYW1lKQorICAgICAgICByZXR1cm4gbW9kdWxlLl9fbG9hZGVyX18ubG9hZF9tb2R1bGUobmFtZSkKKyAgICBmaW5hbGx5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgX1JFTE9BRElOR1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggZmYxMDMwOC4uOTE3NDA1NyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtOSw3ICs5LDcgQEAKICMKICMgSU1QT1JUQU5UOiBXaGVuZXZlciBtYWtpbmcgY2hhbmdlcyB0byB0aGlzIG1vZHVsZSwgYmUgc3VyZSB0byBydW4KICMgYSB0b3AtbGV2ZWwgbWFrZSBpbiBvcmRlciB0byBnZXQgdGhlIGZyb3plbiB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKLSMgdXBkYXRlLiBOb3QgZG9pbmcgc28sIHdpbGwgcmVzdWx0IGluIHRoZSBNYWtlZmlsZSB0byBmYWlsIGZvcgorIyB1cGRhdGUuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKICMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQogIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgogIwpAQCAtMjAsMTAgKzIwLDYgQEAKICMgcmVmZXJlbmNlIGFueSBpbmplY3RlZCBvYmplY3RzISBUaGlzIGluY2x1ZGVzIG5vdCBvbmx5IGdsb2JhbCBjb2RlIGJ1dCBhbHNvCiAjIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKLSMgWFhYIE1ha2Ugc3VyZSBhbGwgcHVibGljIG5hbWVzIGhhdmUgbm8gc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZSBhbmQgYWxsCi0jICAgICBvdGhlcnMgZG8uCi0KLQogIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMgPSAnd2luJywgJ2N5Z3dpbicsICdkYXJ3aW4nCkBAIC00MSw1OCArMzcsMzIgQEAKICAgICByZXR1cm4gX3JlbGF4X2Nhc2UKIAogCi0jIFRPRE86IEV4cG9zZSBmcm9tIG1hcnNoYWwKIGRlZiBfd19sb25nKHgpOgotICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgotCi0gICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCi0KLSAgICAiIiIKLSAgICB4ID0gaW50KHgpCi0gICAgaW50X2J5dGVzID0gW10KLSAgICBpbnRfYnl0ZXMuYXBwZW5kKHggJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gOCkgJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMTYpICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDI0KSAmIDB4RkYpCi0gICAgcmV0dXJuIGJ5dGVhcnJheShpbnRfYnl0ZXMpCisgICAgIiIiQ29udmVydCBhIDMyLWJpdCBpbnRlZ2VyIHRvIGxpdHRsZS1lbmRpYW4uIiIiCisgICAgcmV0dXJuIChpbnQoeCkgJiAweEZGRkZGRkZGKS50b19ieXRlcyg0LCAnbGl0dGxlJykKIAogCi0jIFRPRE86IEV4cG9zZSBmcm9tIG1hcnNoYWwKIGRlZiBfcl9sb25nKGludF9ieXRlcyk6Ci0gICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4KLQotICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb24gYXJlIGV4cG9zZWQuCi0KLSAgICAiIiIKLSAgICB4ID0gaW50X2J5dGVzWzBdCi0gICAgeCB8PSBpbnRfYnl0ZXNbMV0gPDwgOAotICAgIHggfD0gaW50X2J5dGVzWzJdIDw8IDE2Ci0gICAgeCB8PSBpbnRfYnl0ZXNbM10gPDwgMjQKLSAgICByZXR1cm4geAorICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuIiIiCisgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKGludF9ieXRlcywgJ2xpdHRsZScpCiAKIAogZGVmIF9wYXRoX2pvaW4oKnBhdGhfcGFydHMpOgogICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4oKS4iIiIKLSAgICBuZXdfcGFydHMgPSBbXQotICAgIGZvciBwYXJ0IGluIHBhdGhfcGFydHM6Ci0gICAgICAgIGlmIG5vdCBwYXJ0OgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgbmV3X3BhcnRzLmFwcGVuZChwYXJ0KQotICAgICAgICBpZiBwYXJ0Wy0xXSBub3QgaW4gcGF0aF9zZXBhcmF0b3JzOgotICAgICAgICAgICAgbmV3X3BhcnRzLmFwcGVuZChwYXRoX3NlcCkKLSAgICByZXR1cm4gJycuam9pbihuZXdfcGFydHNbOi0xXSkgICMgRHJvcCBzdXBlcmZsdW91cyBwYXRoIHNlcGFyYXRvci4KKyAgICByZXR1cm4gcGF0aF9zZXAuam9pbihbcGFydC5yc3RyaXAocGF0aF9zZXBhcmF0b3JzKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBwYXRoX3BhcnRzIGlmIHBhcnRdKQogCiAKIGRlZiBfcGF0aF9zcGxpdChwYXRoKToKICAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdCgpLiIiIgorICAgIGlmIGxlbihwYXRoX3NlcGFyYXRvcnMpID09IDE6CisgICAgICAgIGZyb250LCBfLCB0YWlsID0gcGF0aC5ycGFydGl0aW9uKHBhdGhfc2VwKQorICAgICAgICByZXR1cm4gZnJvbnQsIHRhaWwKICAgICBmb3IgeCBpbiByZXZlcnNlZChwYXRoKToKICAgICAgICAgaWYgeCBpbiBwYXRoX3NlcGFyYXRvcnM6Ci0gICAgICAgICAgICBzZXAgPSB4Ci0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIHNlcCA9IHBhdGhfc2VwCi0gICAgZnJvbnQsIF8sIHRhaWwgPSBwYXRoLnJwYXJ0aXRpb24oc2VwKQotICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgICAgICAgICAgZnJvbnQsIHRhaWwgPSBwYXRoLnJzcGxpdCh4LCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCisgICAgcmV0dXJuICcnLCBwYXRoCiAKIAogZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKQEAgLTE1MSwxNSArMTIxLDYgQEAKIF9jb2RlX3R5cGUgPSB0eXBlKF93cmFwLl9fY29kZV9fKQogCiAKLWRlZiBuZXdfbW9kdWxlKG5hbWUpOgotICAgICIiIkNyZWF0ZSBhIG5ldyBtb2R1bGUuCi0KLSAgICBUaGUgbW9kdWxlIGlzIG5vdCBlbnRlcmVkIGludG8gc3lzLm1vZHVsZXMuCi0KLSAgICAiIiIKLSAgICByZXR1cm4gdHlwZShfaW8pKG5hbWUpCi0KLQogIyBNb2R1bGUtbGV2ZWwgbG9ja2luZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIEEgZGljdCBtYXBwaW5nIG1vZHVsZSBuYW1lcyB0byB3ZWFrcmVmcyBvZiBfTW9kdWxlTG9jayBpbnN0YW5jZXMKQEAgLTIxNCw3ICsxNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3VudCArPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmhhc19kZWFkbG9jaygpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgX0RlYWRsb2NrRXJyb3IoImRlYWRsb2NrIGRldGVjdGVkIGJ5ICVyIiAlIHNlbGYpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfRGVhZGxvY2tFcnJvcignZGVhZGxvY2sgZGV0ZWN0ZWQgYnkgJXInICUgc2VsZikKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53YWtldXAuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgKz0gMQogICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgYSByZWxlYXNlKCkgY2FsbApAQCAtMjI3LDcgKzE4OCw3IEBACiAgICAgICAgIHRpZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKICAgICAgICAgd2l0aCBzZWxmLmxvY2s6CiAgICAgICAgICAgICBpZiBzZWxmLm93bmVyICE9IHRpZDoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jaycpCiAgICAgICAgICAgICBhc3NlcnQgc2VsZi5jb3VudCA+IDAKICAgICAgICAgICAgIHNlbGYuY291bnQgLT0gMQogICAgICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwOgpAQCAtMjM3LDcgKzE5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLnJlbGVhc2UoKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIl9Nb2R1bGVMb2NrKCVyKSBhdCAlZCIgJSAoc2VsZi5uYW1lLCBpZChzZWxmKSkKKyAgICAgICAgcmV0dXJuICdfTW9kdWxlTG9jayh7IXJ9KSBhdCB7fScuZm9ybWF0KHNlbGYubmFtZSwgaWQoc2VsZikpCiAKIAogY2xhc3MgX0R1bW15TW9kdWxlTG9jazoKQEAgLTI1NCwxMSArMjE1LDExIEBACiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jaycpCiAgICAgICAgIHNlbGYuY291bnQgLT0gMQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIl9EdW1teU1vZHVsZUxvY2soJXIpIGF0ICVkIiAlIChzZWxmLm5hbWUsIGlkKHNlbGYpKQorICAgICAgICByZXR1cm4gJ19EdW1teU1vZHVsZUxvY2soeyFyfSkgYXQge30nLmZvcm1hdChzZWxmLm5hbWUsIGlkKHNlbGYpKQogCiAKICMgVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBmb3IgY29uc3VtcHRpb24gYnkgUHl0aG9uL2ltcG9ydC5jLgpAQCAtMzE1LDk1ICsyNzYsMTA2IEBACiAKICMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIiIiTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgotSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KKyMgTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgorIyBJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgorIworIyBUaGUgdmFsdWUgb2YgQ1IgYW5kIExGIGlzIGluY29ycG9yYXRlZCBzbyBpZiB5b3UgZXZlciByZWFkIG9yIHdyaXRlCisjIGEgLnB5YyBmaWxlIGluIHRleHQgbW9kZSB0aGUgbWFnaWMgbnVtYmVyIHdpbGwgYmUgd3Jvbmc7IGFsc28sIHRoZQorIyBBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgorIworIyBUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCisjIC1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KKyMgb2RkIG51bWJlcnMgZm9yIHNvbWUgdGltZSBub3cuCisjCisjIFRoZXJlIHdlcmUgYSB2YXJpZXR5IG9mIG9sZCBzY2hlbWVzIGZvciBzZXR0aW5nIHRoZSBtYWdpYyBudW1iZXIuCisjIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKKyMgMTAuCisjCisjIFN0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKKyMgbnVtYmVyIGFsc28gaW5jbHVkZXMgYSBuZXcgIm1hZ2ljIHRhZyIsIGkuZS4gYSBodW1hbiByZWFkYWJsZSBzdHJpbmcgdXNlZAorIyB0byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQorIyB0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKKyMgY2FuIGJlIG5hbWVkIGFmdGVyIHRoZSBQeXRob24gbWFqb3IgdmVyc2lvbiBvZiB0aGUgbWFnaWMgbnVtYmVyIGJ1bXAsIGJ1dAorIyBpdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQorIyB0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKKyMgd2l0aCBQeXRob24gMy4yYTAuCisjCisjIEtub3duIHZhbHVlczoKKyMgIFB5dGhvbiAxLjU6ICAgMjAxMjEKKyMgIFB5dGhvbiAxLjUuMTogMjAxMjEKKyMgICAgIFB5dGhvbiAxLjUuMjogMjAxMjEKKyMgICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKKyMgICAgIFB5dGhvbiAyLjA6ICAgNTA4MjMKKyMgICAgIFB5dGhvbiAyLjAuMTogNTA4MjMKKyMgICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKKyMgICAgIFB5dGhvbiAyLjEuMTogNjAyMDIKKyMgICAgIFB5dGhvbiAyLjEuMjogNjAyMDIKKyMgICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKKyMgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEKKyMgICAgIFB5dGhvbiAyLjNhMDogNjIwMjEKKyMgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCisjICAgICBQeXRob24gMi40YTA6IDYyMDQxCisjICAgICBQeXRob24gMi40YTM6IDYyMDUxCisjICAgICBQeXRob24gMi40YjE6IDYyMDYxCisjICAgICBQeXRob24gMi41YTA6IDYyMDcxCisjICAgICBQeXRob24gMi41YTA6IDYyMDgxIChhc3QtYnJhbmNoKQorIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwOTIgKGNoYW5nZWQgV0lUSF9DTEVBTlVQIG9wY29kZSkKKyMgICAgIFB5dGhvbiAyLjViMzogNjIxMDEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uKQorIyAgICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCisjICAgICBQeXRob24gMi41YzE6IDYyMTIxIChmaXggd3JvbmcgbG5vdGFiIHdpdGggZm9yIGxvb3BzIGFuZAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmluZyBjb25zdGFudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQpCisjICAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCisjICAgICBQeXRob24gMi42YTA6IDYyMTUxIChwZWVwaG9sZSBvcHRpbWl6YXRpb25zIGFuZCBTVE9SRV9NQVAgb3Bjb2RlKQorIyAgICAgUHl0aG9uIDIuNmExOiA2MjE2MSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikKKyMgICAgIFB5dGhvbiAyLjdhMDogNjIxNzEgKG9wdGltaXplIGxpc3QgY29tcHJlaGVuc2lvbnMvY2hhbmdlIExJU1RfQVBQRU5EKQorIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE4MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6CisjICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisjICAgICBQeXRob24gMi43YTAgIDYyMTkxIChpbnRyb2R1Y2UgU0VUVVBfV0lUSCkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMDEgKGludHJvZHVjZSBCVUlMRF9TRVQpCisjICAgICBQeXRob24gMi43YTAgIDYyMjExIChpbnRyb2R1Y2UgTUFQX0FERCBhbmQgU0VUX0FERCkKKyMgICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKKyMgICAgICAgICAgICAgICAgICAgIDMwMTAgKHJlbW92ZWQgVU5BUllfQ09OVkVSVCkKKyMgICAgICAgICAgICAgICAgICAgIDMwMjAgKGFkZGVkIEJVSUxEX1NFVCkKKyMgICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQorIyAgICAgICAgICAgICAgICAgICAgMzA0MCAoYWRkZWQgc2lnbmF0dXJlIGFubm90YXRpb25zKQorIyAgICAgICAgICAgICAgICAgICAgMzA1MCAocHJpbnQgYmVjb21lcyBhIGZ1bmN0aW9uKQorIyAgICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKKyMgICAgICAgICAgICAgICAgICAgIDMwNjEgKHN0cmluZyBsaXRlcmFscyBiZWNvbWUgdW5pY29kZSkKKyMgICAgICAgICAgICAgICAgICAgIDMwNzEgKFBFUCAzMTA5IHJhaXNlIGNoYW5nZXMpCisjICAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQorIyAgICAgICAgICAgICAgICAgICAgMzA5MSAoa2lsbCBzdHI4IGludGVybmluZykKKyMgICAgICAgICAgICAgICAgICAgIDMxMDEgKG1lcmdlIGZyb20gMi42YTAsIHNlZSA2MjE1MSkKKyMgICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKKyMgICAgIFB5dGhvbiAzLjBhNDogMzExMSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikuCisjICAgICBQeXRob24gMy4wYTU6IDMxMzEgKGxleGljYWwgZXhjZXB0aW9uIHN0YWNraW5nLCBpbmNsdWRpbmcgUE9QX0VYQ0VQVCkKKyMgICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgorIyAgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREKQorIyAgICAgUHl0aG9uIDMuMWEwOiAzMTUxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKKyMgICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQorIyAgICAgUHl0aG9uIDMuMmEwOiAzMTYwIChhZGQgU0VUVVBfV0lUSCkKKyMgICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCisjICAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKKyMgICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCisjICAgICBQeXRob24gMy4yYTIgIDMxODAgKGFkZCBERUxFVEVfREVSRUYpCisjICAgICBQeXRob24gMy4zYTAgIDMxOTAgX19jbGFzc19fIHN1cGVyIGNsb3N1cmUgY2hhbmdlZAorIyAgICAgUHl0aG9uIDMuM2EwICAzMjAwIChfX3F1YWxuYW1lX18gYWRkZWQpCisjICAgICAgICAgICAgICAgICAgICAgIDMyMTAgKGFkZGVkIHNpemUgbW9kdWxvIDIqKjMyIHRvIHRoZSBweWMgaGVhZGVyKQorIyAgICAgUHl0aG9uIDMuM2ExICAzMjIwIChjaGFuZ2VkIFBFUCAzODAgaW1wbGVtZW50YXRpb24pCisjICAgICBQeXRob24gMy4zYTQgIDMyMzAgKHJldmVydCBjaGFuZ2VzIHRvIGltcGxpY2l0IF9fY2xhc3NfXyBjbG9zdXJlKQorIyAgICAgUHl0aG9uIDMuNGExICAzMjUwIChldmFsdWF0ZSBwb3NpdGlvbmFsIGRlZmF1bHQgYXJndW1lbnRzIGJlZm9yZQorIyAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQtb25seSBkZWZhdWx0cykKKyMgICAgIFB5dGhvbiAzLjRhMSAgMzI2MCAoYWRkIExPQURfQ0xBU1NERVJFRjsgYWxsb3cgbG9jYWxzIG9mIGNsYXNzIHRvIG92ZXJyaWRlCisjICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSB2YXJzKQorIyAgICAgUHl0aG9uIDMuNGExICAzMjcwICh2YXJpb3VzIHR3ZWFrcyB0byB0aGUgX19jbGFzc19fIGNsb3N1cmUpCisjICAgICBQeXRob24gMy40YTEgIDMyODAgKHJlbW92ZSBpbXBsaWNpdCBjbGFzcyBhcmd1bWVudCkKKyMKKyMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubworIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorIyBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKS4KIAotVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQotYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi1BcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgotCi1UaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCi0tVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi1vZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLQotVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLVRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKLTEwLgotCi1TdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCi1udW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi10byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQotdGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCi1jYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci1pdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQotdGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCi13aXRoIFB5dGhvbiAzLjJhMC4KLQotS25vd24gdmFsdWVzOgotIFB5dGhvbiAxLjU6ICAgMjAxMjEKLSBQeXRob24gMS41LjE6IDIwMTIxCi0gICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKLSAgICBQeXRob24gMi4wOiAgIDUwODIzCi0gICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKLSAgICBQeXRob24gMi4xLjE6IDYwMjAyCi0gICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKLSAgICBQeXRob24gMi4zYTA6IDYyMDExCi0gICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCi0gICAgUHl0aG9uIDIuNGEwOiA2MjA0MQotICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSAgICBQeXRob24gMi40YjE6IDYyMDYxCi0gICAgUHl0aG9uIDIuNWEwOiA2MjA3MQotICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0gICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKLSAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCi0gICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0gICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCi0gICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCi0gICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKLSAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKLSAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCi0gICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKLSAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKLSAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQotICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKLSAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgotICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgotICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKLSAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQotICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCi0gICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKLSAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSAgICBQeXRob24gMy4zYTAgIDMxOTAgX19jbGFzc19fIHN1cGVyIGNsb3N1cmUgY2hhbmdlZAotICAgIFB5dGhvbiAzLjNhMCAgMzIwMCAoX19xdWFsbmFtZV9fIGFkZGVkKQotICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCi0gICAgUHl0aG9uIDMuM2ExICAzMjIwIChjaGFuZ2VkIFBFUCAzODAgaW1wbGVtZW50YXRpb24pCi0gICAgUHl0aG9uIDMuM2E0ICAzMjMwIChyZXZlcnQgY2hhbmdlcyB0byBpbXBsaWNpdCBfX2NsYXNzX18gY2xvc3VyZSkKLQotTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubwotbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKLWR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgotCi0iIiIKLV9SQVdfTUFHSUNfTlVNQkVSID0gMzIzMCB8IG9yZCgnXHInKSA8PCAxNiB8IG9yZCgnXG4nKSA8PCAyNAotX01BR0lDX0JZVEVTID0gYnl0ZXMoX1JBV19NQUdJQ19OVU1CRVIgPj4gbiAmIDB4ZmYgZm9yIG4gaW4gcmFuZ2UoMCwgMjUsIDgpKQorTUFHSUNfTlVNQkVSID0gKDMyODApLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK19SQVdfTUFHSUNfTlVNQkVSID0gaW50LmZyb21fYnl0ZXMoTUFHSUNfTlVNQkVSLCAnbGl0dGxlJykgICMgRm9yIGltcG9ydC5jCiAKIF9QWUNBQ0hFID0gJ19fcHljYWNoZV9fJwogCkBAIC00ODEsNiArNDUzLDE4IEBACiAgICAgcmV0dXJuIHNvdXJjZV9wYXRoIGlmIF9wYXRoX2lzZmlsZShzb3VyY2VfcGF0aCkgZWxzZSBieXRlY29kZV9wYXRoCiAKIAorZGVmIF9jYWxjX21vZGUocGF0aCk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBtb2RlIHBlcm1pc3Npb25zIGZvciBhIGJ5dGVjb2RlIGZpbGUuIiIiCisgICAgdHJ5OgorICAgICAgICBtb2RlID0gX29zLnN0YXQocGF0aCkuc3RfbW9kZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBtb2RlID0gMG82NjYKKyAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCisgICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQorICAgIG1vZGUgfD0gMG8yMDAKKyAgICByZXR1cm4gbW9kZQorCisKIGRlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6CiAgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgogICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKQEAgLTQ4OSw2ICs0NzMsMTAwIEBACiAgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQogCiAKK2NsYXNzIF9NYW5hZ2VSZWxvYWQ6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLl9pc19yZWxvYWQgPSBzZWxmLl9uYW1lIGluIHN5cy5tb2R1bGVzCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBpZiBhbnkoYXJnIGlzIG5vdCBOb25lIGZvciBhcmcgaW4gYXJncykgYW5kIG5vdCBzZWxmLl9pc19yZWxvYWQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW3NlbGYuX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisKKyMgV3JpdHRlbiBhcyBhIGNsYXNzIG9ubHkgYmVjYXVzZSBjb250ZXh0bGliIGlzIG5vdCBhdmFpbGFibGUuCitjbGFzcyBfTW9kdWxlTWFuYWdlcihfTWFuYWdlUmVsb2FkKToKKworICAgICIiIkNvbnRleHQgbWFuYWdlciB3aGljaCByZXR1cm5zIHRoZSBtb2R1bGUgdG8gYmUgbG9hZGVkLgorCisgICAgRG9lcyB0aGUgcHJvcGVyIHVubG9hZGluZyBmcm9tIHN5cy5tb2R1bGVzIHVwb24gZmFpbHVyZS4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsICosIHJlc2V0X25hbWU9VHJ1ZSk6CisgICAgICAgICIiIlByZXBhcmUgdGhlIGNvbnRleHQgbWFuYWdlci4KKworICAgICAgICBUaGUgcmVzZXRfbmFtZSBhcmd1bWVudCBzcGVjaWZpZXMgd2hldGhlciB0byB1bmNvbmRpdGlvbmFsbHkgcmVzZXQKKyAgICAgICAgdGhlIF9fbmFtZV9fIGF0dHJpYnV0ZSBpZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRvIGJlIGEgcmVsb2FkLgorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lKQorICAgICAgICBzZWxmLl9yZXNldF9uYW1lID0gcmVzZXRfbmFtZQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoKS5fX2VudGVyX18oKQorICAgICAgICBzZWxmLl9tb2R1bGUgPSBzeXMubW9kdWxlcy5nZXQoc2VsZi5fbmFtZSkKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX3JlbG9hZDoKKyAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIG9wZW4oKSBpcyBjYWxsZWQgYXMgdGhlICdpbycgbW9kdWxlCisgICAgICAgICAgICAjIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlIHRyaWdnZXIgYW4KKyAgICAgICAgICAgICMgaW5maW5pdGUgbG9vcC4KKyAgICAgICAgICAgIHNlbGYuX21vZHVsZSA9IHR5cGUoX2lvKShzZWxmLl9uYW1lKQorICAgICAgICAgICAgIyBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgcHV0dGluZyB0aGUgbW9kdWxlIGluIHN5cy5tb2R1bGVzCisgICAgICAgICAgICAjIChvdGhlcndpc2UgYW4gb3B0aW1pemF0aW9uIHNob3J0Y3V0IGluIGltcG9ydC5jIGJlY29tZXMgd3JvbmcpCisgICAgICAgICAgICBzZWxmLl9tb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW3NlbGYuX25hbWVdID0gc2VsZi5fbW9kdWxlCisgICAgICAgIGVsaWYgc2VsZi5fcmVzZXRfbmFtZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2R1bGUuX19uYW1lX18gPSBzZWxmLl9uYW1lCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gc2VsZi5fbW9kdWxlCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLl9tb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IEZhbHNlCisgICAgICAgIGRlbCBzZWxmLl9tb2R1bGUKKyAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworCitkZWYgbW9kdWxlX3RvX2xvYWQobmFtZSwgKiwgcmVzZXRfbmFtZT1UcnVlKToKKyAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgd2hpY2ggcHJvdmlkZXMgdGhlIG1vZHVsZSBvYmplY3QgdG8gbG9hZC4KKworICAgIElmIHJlc2V0X25hbWUgaXMgdHJ1ZSwgcmVzZXQgdGhlIG1vZHVsZSdzIF9fbmFtZV9fIHRvICduYW1lJy4KKyAgICAiIiIKKyAgICAjIEhpZGluZyBfTW9kdWxlTWFuYWdlciBiZWhpbmQgYSBmdW5jdGlvbiBmb3IgYmV0dGVyIG5hbWluZy4KKyAgICByZXR1cm4gX01vZHVsZU1hbmFnZXIobmFtZSwgcmVzZXRfbmFtZT1yZXNldF9uYW1lKQorCisKK2RlZiBfaW5pdF9wYWNrYWdlX2F0dHJzKGxvYWRlciwgbW9kdWxlKToKKyAgICAiIiJTZXQgX19wYWNrYWdlX18gYW5kIF9fcGF0aF9fIGJhc2VkIG9uIHdoYXQgbG9hZGVyLmlzX3BhY2thZ2UoKSBzYXlzLiIiIgorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICB0cnk6CisgICAgICAgIGlzX3BhY2thZ2UgPSBsb2FkZXIuaXNfcGFja2FnZShuYW1lKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGlmIGlzX3BhY2thZ2U6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBuYW1lCisgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMF0KKworCitkZWYgX2luaXRfZmlsZV9hdHRycyhsb2FkZXIsIG1vZHVsZSk6CisgICAgIiIiU2V0IF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBiYXNlZCBvbiBsb2FkZXIuZ2V0X2ZpbGVuYW1lKCkuIiIiCisgICAgdHJ5OgorICAgICAgICBtb2R1bGUuX19maWxlX18gPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG1vZHVsZS5fX25hbWVfXykKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBpZiBtb2R1bGUuX19uYW1lX18gPT0gbW9kdWxlLl9fcGFja2FnZV9fOgorICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fLmFwcGVuZChfcGF0aF9zcGxpdChtb2R1bGUuX19maWxlX18pWzBdKQorCisKIGRlZiBzZXRfcGFja2FnZShmeG4pOgogICAgICIiIlNldCBfX3BhY2thZ2VfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgogICAgIGRlZiBzZXRfcGFja2FnZV93cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CkBAIC01MDYsNjggKzU4NCwxMyBAQAogICAgICIiIlNldCBfX2xvYWRlcl9fIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIiIiCiAgICAgZGVmIHNldF9sb2FkZXJfd3JhcHBlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBmeG4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CisgICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgIF93cmFwKHNldF9sb2FkZXJfd3JhcHBlciwgZnhuKQogICAgIHJldHVybiBzZXRfbG9hZGVyX3dyYXBwZXIKIAogCi1kZWYgbW9kdWxlX2Zvcl9sb2FkZXIoZnhuKToKLSAgICAiIiJEZWNvcmF0b3IgdG8gaGFuZGxlIHNlbGVjdGluZyB0aGUgcHJvcGVyIG1vZHVsZSBmb3IgbG9hZGVycy4KLQotICAgIFRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBtb2R1bGUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIG1vZHVsZQotICAgIG5hbWUuIFRoZSBtb2R1bGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbiBpcyBlaXRoZXIgZnJvbSBzeXMubW9kdWxlcyBpZgotICAgIGl0IGFscmVhZHkgZXhpc3RzIG9yIGlzIGEgbmV3IG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBpcyBuZXcsIHRoZW4gX19uYW1lX18KLSAgICBpcyBzZXQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBtZXRob2QsIF9fbG9hZGVyX18gaXMgc2V0IHRvIHNlbGYsIGFuZAotICAgIF9fcGFja2FnZV9fIGlzIHNldCBhY2NvcmRpbmdseSAoaWYgc2VsZi5pc19wYWNrYWdlKCkgaXMgZGVmaW5lZCkgd2lsbCBiZSBzZXQKLSAgICBiZWZvcmUgaXQgaXMgcGFzc2VkIHRvIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gKGlmIHNlbGYuaXNfcGFja2FnZSgpIGRvZXMKLSAgICBub3Qgd29yayBmb3IgdGhlIG1vZHVsZSBpdCB3aWxsIGJlIHNldCBwb3N0LWxvYWQpLgotCi0gICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlIGRlY29yYXRvciBjcmVhdGVkIHRoZSBtb2R1bGUgaXQgaXMKLSAgICBzdWJzZXF1ZW50bHkgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzLgotCi0gICAgVGhlIGRlY29yYXRvciBhc3N1bWVzIHRoYXQgdGhlIGRlY29yYXRlZCBmdW5jdGlvbiB0YWtlcyB0aGUgbW9kdWxlIG5hbWUgYXMKLSAgICB0aGUgc2Vjb25kIGFyZ3VtZW50LgotCi0gICAgIiIiCi0gICAgZGVmIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzLmdldChmdWxsbmFtZSkKLSAgICAgICAgaXNfcmVsb2FkID0gbW9kdWxlIGlzIG5vdCBOb25lCi0gICAgICAgIGlmIG5vdCBpc19yZWxvYWQ6Ci0gICAgICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBvcGVuKCkgaXMgY2FsbGVkIGFzIHRoZSAnaW8nIG1vZHVsZQotICAgICAgICAgICAgIyBpbXBsaWNpdGx5IGltcG9ydHMgJ2xvY2FsZScgYW5kIHdvdWxkIG90aGVyd2lzZSB0cmlnZ2VyIGFuCi0gICAgICAgICAgICAjIGluZmluaXRlIGxvb3AuCi0gICAgICAgICAgICBtb2R1bGUgPSBuZXdfbW9kdWxlKGZ1bGxuYW1lKQotICAgICAgICAgICAgIyBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgcHV0dGluZyB0aGUgbW9kdWxlIGluIHN5cy5tb2R1bGVzCi0gICAgICAgICAgICAjIChvdGhlcndpc2UgYW4gb3B0aW1pemF0aW9uIHNob3J0Y3V0IGluIGltcG9ydC5jIGJlY29tZXMgd3JvbmcpCi0gICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXSA9IG1vZHVsZQotICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaXNfcGFja2FnZSA9IHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyB3YXMgbm90IHNldCBhYm92ZSwgX19pbXBvcnRfXygpIHdpbGwgZG8gaXQgbGF0ZXIuCi0gICAgICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG1vZHVsZSwgKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkOgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IEZhbHNlCi0gICAgX3dyYXAobW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlciwgZnhuKQotICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCi0KLQogZGVmIF9jaGVja19uYW1lKG1ldGhvZCk6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgYmVpbmcgcmVxdWVzdGVkIG1hdGNoZXMgdGhlIG9uZSB0aGUKICAgICBsb2FkZXIgY2FuIGhhbmRsZS4KQEAgLTU4MCw3ICs2MDMsNyBAQAogICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lICE9IG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMiICUgbmFtZSwgbmFtZT1uYW1lKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlciBjYW5ub3QgaGFuZGxlICVzJyAlIG5hbWUsIG5hbWU9bmFtZSkKICAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCiAgICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQogICAgIHJldHVybiBfY2hlY2tfbmFtZV93cmFwcGVyCkBAIC01OTAsNyArNjEzLDcgQEAKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoZSBuYW1lZCBtb2R1bGUgaXMgYnVpbHQtaW4uIiIiCiAgICAgZGVmIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICBpZiBmdWxsbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInt9IGlzIG5vdCBhIGJ1aWx0LWluIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCd7fSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUnLmZvcm1hdChmdWxsbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICByZXR1cm4gZnhuKHNlbGYsIGZ1bGxuYW1lKQogICAgIF93cmFwKF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIsIGZ4bikKQEAgLTYwMSw3ICs2MjQsNyBAQAogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBmcm96ZW4uIiIiCiAgICAgZGVmIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIGlmIG5vdCBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgZnJvemVuIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCd7fSBpcyBub3QgYSBmcm96ZW4gbW9kdWxlJy5mb3JtYXQoZnVsbG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKICAgICBfd3JhcChfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIsIGZ4bikKQEAgLTYxNiwxMSArNjM5LDk4IEBACiAgICAgIyByZXR1cm4gTm9uZS4KICAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKICAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKLSAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgorICAgICAgICBtc2cgPSAnTm90IGltcG9ydGluZyBkaXJlY3Rvcnkge306IG1pc3NpbmcgX19pbml0X18nCiAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQocG9ydGlvbnNbMF0pLCBJbXBvcnRXYXJuaW5nKQogICAgIHJldHVybiBsb2FkZXIKIAogCitkZWYgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBzb3VyY2Vfc3RhdHM9Tm9uZSwgbmFtZT1Ob25lLCBwYXRoPU5vbmUpOgorICAgICIiIlZhbGlkYXRlIHRoZSBoZWFkZXIgb2YgdGhlIHBhc3NlZC1pbiBieXRlY29kZSBhZ2FpbnN0IHNvdXJjZV9zdGF0cyAoaWYKKyAgICBnaXZlbikgYW5kIHJldHVybmluZyB0aGUgYnl0ZWNvZGUgdGhhdCBjYW4gYmUgY29tcGlsZWQgYnkgY29tcGlsZSgpLgorCisgICAgQWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgdXNlZCB0byBlbmhhbmNlIGVycm9yIHJlcG9ydGluZy4KKworICAgIEltcG9ydEVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBtYWdpYyBudW1iZXIgaXMgaW5jb3JyZWN0IG9yIHRoZSBieXRlY29kZSBpcworICAgIGZvdW5kIHRvIGJlIHN0YWxlLiBFT0ZFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgZGF0YSBpcyBmb3VuZCB0byBiZQorICAgIHRydW5jYXRlZC4KKworICAgICIiIgorICAgIGV4Y19kZXRhaWxzID0ge30KKyAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBleGNfZGV0YWlsc1snbmFtZSddID0gbmFtZQorICAgIGVsc2U6CisgICAgICAgICMgVG8gcHJldmVudCBoYXZpbmcgdG8gbWFrZSBhbGwgbWVzc2FnZXMgaGF2ZSBhIGNvbmRpdGlvbmFsIG5hbWUuCisgICAgICAgIG5hbWUgPSAnPGJ5dGVjb2RlPicKKyAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICBleGNfZGV0YWlsc1sncGF0aCddID0gcGF0aAorICAgIG1hZ2ljID0gZGF0YVs6NF0KKyAgICByYXdfdGltZXN0YW1wID0gZGF0YVs0OjhdCisgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCisgICAgaWYgbWFnaWMgIT0gTUFHSUNfTlVNQkVSOgorICAgICAgICBtZXNzYWdlID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KG5hbWUsIG1hZ2ljKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCisgICAgZWxpZiBsZW4ocmF3X3RpbWVzdGFtcCkgIT0gNDoKKyAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHRpbWVzdGFtcCBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQorICAgIGVsaWYgbGVuKHJhd19zaXplKSAhPSA0OgorICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgc2l6ZSBvZiBzb3VyY2UgaW4geyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICBpZiBzb3VyY2Vfc3RhdHMgaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IGludChzb3VyY2Vfc3RhdHNbJ210aW1lJ10pCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHshcn0nLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2Vfc2l6ZSA9IHNvdXJjZV9zdGF0c1snc2l6ZSddICYgMHhGRkZGRkZGRgorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfcl9sb25nKHJhd19zaXplKSAhPSBzb3VyY2Vfc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHshcn0nLmZvcm1hdChuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmV4Y19kZXRhaWxzKQorICAgIHJldHVybiBkYXRhWzEyOl0KKworCitkZWYgX2NvbXBpbGVfYnl0ZWNvZGUoZGF0YSwgbmFtZT1Ob25lLCBieXRlY29kZV9wYXRoPU5vbmUsIHNvdXJjZV9wYXRoPU5vbmUpOgorICAgICIiIkNvbXBpbGUgYnl0ZWNvZGUgYXMgcmV0dXJuZWQgYnkgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcigpLiIiIgorICAgIGNvZGUgPSBtYXJzaGFsLmxvYWRzKGRhdGEpCisgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBfY29kZV90eXBlKToKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgaWYgc291cmNlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoY29kZSwgc291cmNlX3BhdGgpCisgICAgICAgIHJldHVybiBjb2RlCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vbi1jb2RlIG9iamVjdCBpbiB7IXJ9Jy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9bmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQorCitkZWYgX2NvZGVfdG9fYnl0ZWNvZGUoY29kZSwgbXRpbWU9MCwgc291cmNlX3NpemU9MCk6CisgICAgIiIiQ29tcGlsZSBhIGNvZGUgb2JqZWN0IGludG8gYnl0ZWNvZGUgZm9yIHdyaXRpbmcgb3V0IHRvIGEgYnl0ZS1jb21waWxlZAorICAgIGZpbGUuIiIiCisgICAgZGF0YSA9IGJ5dGVhcnJheShNQUdJQ19OVU1CRVIpCisgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhtdGltZSkpCisgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhzb3VyY2Vfc2l6ZSkpCisgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlKSkKKyAgICByZXR1cm4gZGF0YQorCisKK2RlZiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcyk6CisgICAgIiIiRGVjb2RlIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIHRoZSBzdHJpbmcuCisKKyAgICBVbml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0IGlzIHVzZWQgaW4gdGhlIGRlY29kaW5nLgorICAgICIiIgorICAgIGltcG9ydCB0b2tlbml6ZSAgIyBUbyBhdm9pZCBib290c3RyYXAgaXNzdWVzLgorICAgIHNvdXJjZV9ieXRlc19yZWFkbGluZSA9IF9pby5CeXRlc0lPKHNvdXJjZV9ieXRlcykucmVhZGxpbmUKKyAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhzb3VyY2VfYnl0ZXNfcmVhZGxpbmUpCisgICAgbmV3bGluZV9kZWNvZGVyID0gX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkKKyAgICByZXR1cm4gbmV3bGluZV9kZWNvZGVyLmRlY29kZShzb3VyY2VfYnl0ZXMuZGVjb2RlKGVuY29kaW5nWzBdKSkKIAogCiAjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02MzYsNyArNzQ2LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6Ci0gICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChidWlsdC1pbik+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoYnVpbHQtaW4pPicuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgpAQCAtNjU1LDEzICs3NjUsOCBAQAogICAgIEBfcmVxdWlyZXNfYnVpbHRpbgogICAgIGRlZiBsb2FkX21vZHVsZShjbHMsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiTG9hZCBhIGJ1aWx0LWluIG1vZHVsZS4iIiIKLSAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5pbml0X2J1aWx0aW4sIGZ1bGxuYW1lKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCi0gICAgICAgICAgICByYWlzZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19idWlsdGluCkBAIC02OTMsNyArNzk4LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG0pOgotICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAoZnJvemVuKT4iLmZvcm1hdChtLl9fbmFtZV9fKQorICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoZnJvemVuKT4nLmZvcm1hdChtLl9fbmFtZV9fKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CkBAIC03MDYsMTYgKzgxMSwxMSBAQAogICAgIEBfcmVxdWlyZXNfZnJvemVuCiAgICAgZGVmIGxvYWRfbW9kdWxlKGNscywgZnVsbG5hbWUpOgogICAgICAgICAiIiJMb2FkIGEgZnJvemVuIG1vZHVsZS4iIiIKLSAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgogICAgICAgICAgICAgbSA9IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5pbml0X2Zyb3plbiwgZnVsbG5hbWUpCiAgICAgICAgICAgICAjIExldCBvdXIgb3duIG1vZHVsZV9yZXByKCkgbWV0aG9kIHByb2R1Y2UgYSBzdWl0YWJsZSByZXByLgogICAgICAgICAgICAgZGVsIG0uX19maWxlX18KICAgICAgICAgICAgIHJldHVybiBtCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KLSAgICAgICAgICAgIHJhaXNlCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2Zyb3plbgpAQCAtNzQyLDE4ICs4NDIsMTggQEAKICAgICAiIiIKIAogICAgIFJFR0lTVFJZX0tFWSA9ICgKLSAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0iCi0gICAgICAgICJcXE1vZHVsZXNcXHtmdWxsbmFtZX0iKQorICAgICAgICAnU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufScKKyAgICAgICAgJ1xcTW9kdWxlc1xce2Z1bGxuYW1lfScpCiAgICAgUkVHSVNUUllfS0VZX0RFQlVHID0gKAotICAgICAgICAiU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufSIKLSAgICAgICAgIlxcTW9kdWxlc1xce2Z1bGxuYW1lfVxcRGVidWciKQorICAgICAgICAnU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufScKKyAgICAgICAgJ1xcTW9kdWxlc1xce2Z1bGxuYW1lfVxcRGVidWcnKQogICAgIERFQlVHX0JVSUxEID0gRmFsc2UgICMgQ2hhbmdlZCBpbiBfc2V0dXAoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9vcGVuX3JlZ2lzdHJ5KGNscywga2V5KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwga2V5KQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC03NjYsOCArODY2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKLSAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAiIikKLSAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAnJykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gZmlsZXBhdGgKIApAQCAtNzk5LDc0ICs4OTksMzIgQEAKICAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCiAKLSAgICBkZWYgX2J5dGVzX2Zyb21fYnl0ZWNvZGUoc2VsZiwgZnVsbG5hbWUsIGRhdGEsIGJ5dGVjb2RlX3BhdGgsIHNvdXJjZV9zdGF0cyk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbWFyc2hhbGxlZCBieXRlcyBmcm9tIGJ5dGVjb2RlLCB2ZXJpZnlpbmcgdGhlIG1hZ2ljCi0gICAgICAgIG51bWJlciwgdGltZXN0YW1wIGFuZCBzb3VyY2Ugc2l6ZSBhbG9uZyB0aGUgd2F5LgorICAgIGRlZiBpbml0X21vZHVsZV9hdHRycyhzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJTZXQgdmFyaW91cyBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUuCiAKLSAgICAgICAgSWYgc291cmNlX3N0YXRzIGlzIE5vbmUgdGhlbiBza2lwIHRoZSB0aW1lc3RhbXAgY2hlY2suCi0KKyAgICAgICAgRXhlY3V0aW9uTG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKCkgaXMgdXNlZCB0byBzZXQgX19sb2FkZXJfXywKKyAgICAgICAgX19wYWNrYWdlX18sIF9fZmlsZV9fLCBhbmQgb3B0aW9uYWxseSBfX3BhdGhfXy4gVGhlIF9fY2FjaGVkX18gYXR0cmlidXRlCisgICAgICAgIGlzIHNldCB1c2luZyBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKSBhbmQgX19maWxlX18uCiAgICAgICAgICIiIgotICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCi0gICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICAgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCi0gICAgICAgIGlmIG1hZ2ljICE9IF9NQUdJQ19CWVRFUzoKLSAgICAgICAgICAgIG1zZyA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChmdWxsbmFtZSwgbWFnaWMpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1zZykKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQotICAgICAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICAgICAgbWVzc2FnZSA9ICdiYWQgdGltZXN0YW1wIGluIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQotICAgICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIHNpemUgaW4ge30nLmZvcm1hdChmdWxsbmFtZSkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCi0gICAgICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd19zaXplKSAhPSBzb3VyY2Vfc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQotICAgICAgICAjIENhbid0IHJldHVybiB0aGUgY29kZSBvYmplY3QgYXMgZXJyb3JzIGZyb20gbWFyc2hhbCBsb2FkaW5nIG5lZWQgdG8KLSAgICAgICAgIyBwcm9wYWdhdGUgZXZlbiB3aGVuIHNvdXJjZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIHJldHVybiBkYXRhWzEyOl0KLQotICAgIEBtb2R1bGVfZm9yX2xvYWRlcgotICAgIGRlZiBfbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlLCAqLCBzb3VyY2VsZXNzPUZhbHNlKToKLSAgICAgICAgIiIiSGVscGVyIGZvciBsb2FkX21vZHVsZSBhYmxlIHRvIGhhbmRsZSBlaXRoZXIgc291cmNlIG9yIHNvdXJjZWxlc3MKLSAgICAgICAgbG9hZGluZy4iIiIKLSAgICAgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuZ2V0X2NvZGUobmFtZSkKLSAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gc2VsZi5nZXRfZmlsZW5hbWUobmFtZSkKLSAgICAgICAgaWYgbm90IHNvdXJjZWxlc3M6CisgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZiAgIyBMb2FkZXIKKyAgICAgICAgX2luaXRfcGFja2FnZV9hdHRycyhzZWxmLCBtb2R1bGUpICAjIEluc3BlY3RMb2FkZXIKKyAgICAgICAgX2luaXRfZmlsZV9hdHRycyhzZWxmLCBtb2R1bGUpICAjIEV4ZWN1dGlvbkxvYWRlcgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6ICAjIFNvdXJjZUxvYWRlcgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBtb2R1bGUuX19maWxlX18KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gbW9kdWxlLl9fZmlsZV9fCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG5hbWUKLSAgICAgICAgaWYgc2VsZi5pc19wYWNrYWdlKG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KG1vZHVsZS5fX2ZpbGVfXylbMF1dCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgotICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGV4ZWMsIGNvZGVfb2JqZWN0LCBtb2R1bGUuX19kaWN0X18pCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJMb2FkIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGludG8gc3lzLm1vZHVsZXMgYW5kIHJldHVybiBpdC4iIiIKKyAgICAgICAgd2l0aCBtb2R1bGVfdG9fbG9hZChmdWxsbmFtZSkgYXMgbW9kdWxlOgorICAgICAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCisgICAgICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShmdWxsbmFtZSkKKyAgICAgICAgICAgIGlmIGNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignY2Fubm90IGxvYWQgbW9kdWxlIHshcn0gd2hlbiBnZXRfY29kZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJucyBOb25lJy5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAKIAogY2xhc3MgU291cmNlTG9hZGVyKF9Mb2FkZXJCYXNpY3MpOgpAQCAtODc0LDggKzkzMiwxMCBAQAogICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCiAgICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgorCisgICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIHJhaXNlIElPRXJyb3IKIAogICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgcmV0dXJuaW5nIGEgbWV0YWRhdGEgZGljdCBmb3IgdGhlIHNwZWNpZmllZCBwYXRoCkBAIC04ODYsNiArOTQ2LDcgQEAKICAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCiAKICAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KIApAQCAtOTAzLDMyICs5NjQsMjYgQEAKICAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHdoaWNoIHdyaXRlcyBkYXRhIChieXRlcykgdG8gYSBmaWxlIHBhdGggKGEgc3RyKS4KIAogICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIGZvciB0aGUgd3JpdGluZyBvZiBieXRlY29kZSBmaWxlcy4KLQogICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZS4iIiIKLSAgICAgICAgaW1wb3J0IHRva2VuaXplCiAgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpIiwKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3NvdXJjZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZ2V0X2RhdGEoKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YwotICAgICAgICByZWFkc291cmNlID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhyZWFkc291cmNlKQotICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZXRlY3QgZW5jb2RpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKLSAgICAgICAgbmV3bGluZV9kZWNvZGVyID0gX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCi0gICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgc291cmNlIGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKKyAgICAgICAgcmV0dXJuIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQorCisgICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGgsICosIF9vcHRpbWl6ZT0tMSk6CisgICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgY29tcGlsZWQgZnJvbSBzb3VyY2UuCisKKyAgICAgICAgVGhlICdkYXRhJyBhcmd1bWVudCBjYW4gYmUgYW55IG9iamVjdCB0eXBlIHRoYXQgY29tcGlsZSgpIHN1cHBvcnRzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCiAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgpAQCAtOTQ2LDQ1ICsxMDAxLDM0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3QgPSBzZWxmLnBhdGhfc3RhdHMoc291cmNlX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBzZWxmLl9ieXRlc19mcm9tX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZGF0YSA9IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3N0YXRzPXN0LCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBtYXJzaGFsLmxvYWRzKGJ5dGVzX2RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoZm91bmQsIHNvdXJjZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZAotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiTm9uLWNvZGUgb2JqZWN0IGluIHt9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoPXNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQotICAgICAgICBjb2RlX29iamVjdCA9IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCiAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KF9NQUdJQ19CWVRFUykKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX210aW1lKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobGVuKHNvdXJjZV9ieXRlcykpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCisgICAgICAgICAgICAgICAgc291cmNlX210aW1lIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgIGRhdGEgPSBfY29kZV90b19ieXRlY29kZShjb2RlX29iamVjdCwgc291cmNlX210aW1lLAorICAgICAgICAgICAgICAgICAgICBsZW4oc291cmNlX2J5dGVzKSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9ieXRlY29kZShzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSkKICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKQEAgLTk5MiwxNiArMTAzNiw2IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKIAotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIExvYWRlci5sb2FkX21vZHVsZS4KLQotICAgICAgICBSZXF1aXJlcyBFeGVjdXRpb25Mb2FkZXIuZ2V0X2ZpbGVuYW1lIGFuZCBSZXNvdXJjZUxvYWRlci5nZXRfZGF0YSB0byBiZQotICAgICAgICBpbXBsZW1lbnRlZCB0byBsb2FkIHNvdXJjZSBjb2RlLiBVc2Ugb2YgYnl0ZWNvZGUgaXMgZGljdGF0ZWQgYnkgd2hldGhlcgotICAgICAgICBnZXRfY29kZSB1c2VzL3dyaXRlcyBieXRlY29kZS4KLQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRfbW9kdWxlKGZ1bGxuYW1lKQotCiAKIGNsYXNzIEZpbGVMb2FkZXI6CiAKQEAgLTEwNDMsMTMgKzEwNzcsNyBAQAogCiAgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6CiAgICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kZSA9IF9vcy5zdGF0KHNvdXJjZV9wYXRoKS5zdF9tb2RlCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgbW9kZSA9IDBvNjY2Ci0gICAgICAgICMgV2UgYWx3YXlzIGVuc3VyZSB3cml0ZSBhY2Nlc3Mgc28gd2UgY2FuIHVwZGF0ZSBjYWNoZWQgZmlsZXMKLSAgICAgICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQotICAgICAgICBtb2RlIHw9IDBvMjAwCisgICAgICAgIG1vZGUgPSBfY2FsY19tb2RlKHNvdXJjZV9wYXRoKQogICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShieXRlY29kZV9wYXRoLCBkYXRhLCBfbW9kZT1tb2RlKQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEsICosIF9tb2RlPTBvNjY2KToKQEAgLTEwODUsMjAgKzExMTMsMTUgQEAKIAogICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgogCi0gICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRfbW9kdWxlKGZ1bGxuYW1lLCBzb3VyY2VsZXNzPVRydWUpCisgICAgZGVmIGluaXRfbW9kdWxlX2F0dHJzKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHN1cGVyKCkuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IG1vZHVsZS5fX2ZpbGVfXwogCiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwgcGF0aCwgTm9uZSkKLSAgICAgICAgZm91bmQgPSBtYXJzaGFsLmxvYWRzKGJ5dGVzX2RhdGEpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZm91bmQsIF9jb2RlX3R5cGUpOgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBmb3VuZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIk5vbi1jb2RlIG9iamVjdCBpbiB7fSIuZm9ybWF0KHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1wYXRoKQorICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCisgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCiAKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgpAQCAtMTEyNiwxOCArMTE0OSwxMyBAQAogICAgIEBzZXRfbG9hZGVyCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiTG9hZCBhbiBleHRlbnNpb24gbW9kdWxlLiIiIgotICAgICAgICBpc19yZWxvYWQgPSBmdWxsbmFtZSBpbiBzeXMubW9kdWxlcwotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggX01hbmFnZVJlbG9hZChmdWxsbmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAubG9hZF9keW5hbWljLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgc2VsZi5wYXRoKQogICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSBsb2FkZWQgZnJvbSB7IXJ9Jywgc2VsZi5wYXRoKQogICAgICAgICAgICAgaWYgc2VsZi5pc19wYWNrYWdlKGZ1bGxuYW1lKSBhbmQgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbX3BhdGhfc3BsaXQoc2VsZi5wYXRoKVswXV0KICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZCBhbmQgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQotICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgpAQCAtMTIwMCw3ICsxMjE4LDcgQEAKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIl9OYW1lc3BhY2VQYXRoKHshcn0pIi5mb3JtYXQoc2VsZi5fcGF0aCkKKyAgICAgICAgcmV0dXJuICdfTmFtZXNwYWNlUGF0aCh7IXJ9KScuZm9ybWF0KHNlbGYuX3BhdGgpCiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgogICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLl9yZWNhbGN1bGF0ZSgpCkBAIC0xMjE1LDE0ICsxMjMzLDI4IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgotICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAobmFtZXNwYWNlKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IChuYW1lc3BhY2UpPicuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKIAotICAgIEBtb2R1bGVfZm9yX2xvYWRlcgotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gY29tcGlsZSgnJywgJzxzdHJpbmc+JywgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKKworICAgIGRlZiBpbml0X21vZHVsZV9hdHRycyhzZWxmLCBtb2R1bGUpOgorICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fbmFtZV9fCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJMb2FkIGEgbmFtZXNwYWNlIG1vZHVsZS4iIiIKICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzZWxmLl9wYXRoCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgd2l0aCBtb2R1bGVfdG9fbG9hZChmdWxsbmFtZSkgYXMgbW9kdWxlOgorICAgICAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCisgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzZWxmLl9wYXRoCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAKIAogIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTQyMCw3ICsxNDUyLDcgQEAKICAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQogICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cwogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgotICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KGZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzKQorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6CkBAIC0xNDM1LDEzICsxNDY3LDEzIEBACiAgICAgICAgIGRlZiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIocGF0aCk6CiAgICAgICAgICAgICAiIiJQYXRoIGhvb2sgZm9yIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci4iIiIKICAgICAgICAgICAgIGlmIG5vdCBfcGF0aF9pc2RpcihwYXRoKToKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigib25seSBkaXJlY3RvcmllcyBhcmUgc3VwcG9ydGVkIiwgcGF0aD1wYXRoKQorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCiAgICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKIAogICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiRmlsZUZpbmRlciglcikiICUgKHNlbGYucGF0aCwpCisgICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKIAogCiAjIEltcG9ydCBpdHNlbGYgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xNDg4LDIxICsxNTIwLDIyIEBACiBkZWYgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCk6CiAgICAgIiIiVmVyaWZ5IGFyZ3VtZW50cyBhcmUgInNhbmUiLiIiIgogICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibW9kdWxlIG5hbWUgbXVzdCBiZSBzdHIsIG5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ21vZHVsZSBuYW1lIG11c3QgYmUgc3RyLCBub3Qge30nLmZvcm1hdCh0eXBlKG5hbWUpKSkKICAgICBpZiBsZXZlbCA8IDA6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xldmVsIG11c3QgYmUgPj0gMCcpCiAgICAgaWYgcGFja2FnZToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFja2FnZSwgc3RyKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZyIpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmcnKQogICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICJpbXBvcnQiKQorICAgICAgICAgICAgbXNnID0gKCdQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgJworICAgICAgICAgICAgICAgICAgICdpbXBvcnQnKQogICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IobXNnLmZvcm1hdChwYWNrYWdlKSkKICAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgbW9kdWxlIG5hbWUiKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbXB0eSBtb2R1bGUgbmFtZScpCiAKIAotX0VSUl9NU0cgPSAnTm8gbW9kdWxlIG5hbWVkIHshcn0nCitfRVJSX01TR19QUkVGSVggPSAnTm8gbW9kdWxlIG5hbWVkICcKK19FUlJfTVNHID0gX0VSUl9NU0dfUFJFRklYICsgJ3shcn0nCiAKIGRlZiBfZmluZF9hbmRfbG9hZF91bmxvY2tlZChuYW1lLCBpbXBvcnRfKToKICAgICBwYXRoID0gTm9uZQpAQCAtMTUyMiwxMSArMTU1NSw3IEBACiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKICAgICBsb2FkZXIgPSBfZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKICAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCi0gICAgICAgICMgVE9ETyhicmV0dCk6IHN3aXRjaCB0byBhIHByb3BlciBNb2R1bGVOb3RGb3VuZCBleGNlcHRpb24gaW4gUHl0aG9uCi0gICAgICAgICMgMy40LgotICAgICAgICBleGMuX25vdF9mb3VuZCA9IFRydWUKLSAgICAgICAgcmFpc2UgZXhjCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsaWYgbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCkBAIC0xNTQ2LDcgKzE1NzUsNyBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgIyBTZXQgbG9hZGVyIGlmIG5lZWQgYmUuCi0gICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKQEAgLTE1ODUsOCArMTYxNCw4IEBACiAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQotICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIi5mb3JtYXQobmFtZSkpCisgICAgICAgIG1lc3NhZ2UgPSAoJ2ltcG9ydCBvZiB7fSBoYWx0ZWQ7ICcKKyAgICAgICAgICAgICAgICAgICAnTm9uZSBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpKQogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPW5hbWUpCiAgICAgX2xvY2tfdW5sb2NrX21vZHVsZShuYW1lKQogICAgIHJldHVybiBtb2R1bGUKQEAgLTE2MTYsOSArMTY0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAogICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKICAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgIyBUT0RPKGJyZXR0KTogSW4gUHl0aG9uIDMuNCwgaGF2ZSBpbXBvcnQgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgIyAgIE1vZHVsZU5vdEZvdW5kIGFuZCBjYXRjaCB0aGF0LgotICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGV4YywgJ19ub3RfZm91bmQnLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0cihleGMpLnN0YXJ0c3dpdGgoX0VSUl9NU0dfUFJFRklYKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQpAQCAtMTcwNyw3ICsxNzM0LDcgQEAKICAgICBtb2R1bGVfdHlwZSA9IHR5cGUoc3lzKQogICAgIGZvciBuYW1lLCBtb2R1bGUgaW4gc3lzLm1vZHVsZXMuaXRlbXMoKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIG1vZHVsZV90eXBlKToKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gQnVpbHRpbkltcG9ydGVyCiAgICAgICAgICAgICAgICAgZWxpZiBfaW1wLmlzX2Zyb3plbihuYW1lKToKQEAgLTE3MjEsNyArMTc0OCw3IEBACiAgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fbmFtZV0KICAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgYnVpbHRpbl9uYW1lLCBidWlsdGluX21vZHVsZSkKIAotICAgIG9zX2RldGFpbHMgPSAoJ3Bvc2l4JywgWycvJ10pLCAoJ250JywgWydcXCcsICcvJ10pLCAoJ29zMicsIFsnXFwnLCAnLyddKQorICAgIG9zX2RldGFpbHMgPSAoJ3Bvc2l4JywgWycvJ10pLCAoJ250JywgWydcXCcsICcvJ10pCiAgICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgogICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKICAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQpAQCAtMTczMiw5ICsxNzU5LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvc19tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoYnVpbHRpbl9vcykKLSAgICAgICAgICAgICAgICAjIFRPRE86IHJpcCBvdXQgb3MyIGNvZGUgYWZ0ZXIgMy4zIGlzIHJlbGVhc2VkIGFzIHBlciBQRVAgMTEKLSAgICAgICAgICAgICAgICBpZiBidWlsdGluX29zID09ICdvczInIGFuZCAnRU1YIEdDQycgaW4gc3lzLnZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfc2VwID0gcGF0aF9zZXBhcmF0b3JzWzFdCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTc1Niw3ICsxNzgwLDcgQEAKICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3RocmVhZCcsIHRocmVhZF9tb2R1bGUpCiAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCiAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCi0gICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsIHNldChwYXRoX3NlcGFyYXRvcnMpKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcGFyYXRvcnMnLCAnJy5qb2luKHBhdGhfc2VwYXJhdG9ycykpCiAgICAgIyBDb25zdGFudHMKICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3JlbGF4X2Nhc2UnLCBfbWFrZV9yZWxheF9jYXNlKCkpCiAgICAgRVhURU5TSU9OX1NVRkZJWEVTLmV4dGVuZChfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCAzODc1NjdhLi4wODI3OTZjIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtOCwxMSArOCw2IEBACiAgICAgICAgIHJhaXNlCiAgICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCiBpbXBvcnQgYWJjCi1pbXBvcnQgaW1wCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IHN5cwotaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgd2FybmluZ3MKIAogCiBkZWYgX3JlZ2lzdGVyKGFic3RyYWN0X2NscywgKmNsYXNzZXMpOgpAQCAtMzcsOSArMzIsOCBAQAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAgIiIiQW4gYWJzdHJhY3QgbWV0aG9kIHRoYXQgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCiAgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIG9wdGlvbmFsIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KLSAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0IG9yIE5vbmUuCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIAogY2xhc3MgTWV0YVBhdGhGaW5kZXIoRmluZGVyKToKQEAgLTQ5LDE2ICs0MywxNCBAQAogICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHNob3VsZCBmaW5kIGEgbW9kdWxlLgotICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCi0gICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBwYXRoIGlzIGEgbGlzdCBvZiBzdHJpbmdzIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0IG9yIE5vbmUuCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CiAgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogX3JlZ2lzdGVyKE1ldGFQYXRoRmluZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCiAgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIpCkBAIC03MCwxMyArNjIsMTQgQEAKIAogICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHJldHVybnMgYSBtb2R1bGUgbG9hZGVyLgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHJldHVybnMgYSBtb2R1bGUgbG9hZGVyIG9yCisgICAgICAgIGEgcG9zc2libGUgcGFydCBvZiBhIG5hbWVzcGFjZS4KICAgICAgICAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIDItdHVwbGUgb2YgKExvYWRlciwgcG9ydGlvbikgd2hlcmUKICAgICAgICAgcG9ydGlvbiBpcyBhIHNlcXVlbmNlIG9mIGZpbGUgc3lzdGVtIGxvY2F0aW9ucyBjb250cmlidXRpbmcgdG8gcGFydCBvZgotICAgICAgICBhIG5hbWVzcGFjZSBwYWNrYWdlLiAgVGhlIHNlcXVlbmNlIG1heSBiZSBlbXB0eSBhbmQgdGhlIGxvYWRlciBtYXkgYmUKKyAgICAgICAgYSBuYW1lc3BhY2UgcGFja2FnZS4gVGhlIHNlcXVlbmNlIG1heSBiZSBlbXB0eSBhbmQgdGhlIGxvYWRlciBtYXkgYmUKICAgICAgICAgTm9uZS4KICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgcmV0dXJuIE5vbmUsIFtdCiAKICAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KIApAQCAtODQsMjYgKzc3LDQwIEBACiAgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgUGF0aEZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIF9yZWdpc3RlcihQYXRoRW50cnlGaW5kZXIsIG1hY2hpbmVyeS5GaWxlRmluZGVyKQogCiAKIGNsYXNzIExvYWRlcihtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogCi0gICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGxvYWRlcnMuIiIiCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGxvYWRlcnMuCisKKyAgICBUaGUgb3B0aW9uYWwgbWV0aG9kIG1vZHVsZV9yZXByKG1vZHVsZSkgbWF5IGJlIGRlZmluZWQgdG8gcHJvdmlkZSBhCisgICAgcmVwciBmb3IgYSBtb2R1bGUgd2hlbiBhcHByb3ByaWF0ZSAoc2VlIFBFUCA0MjApLiBUaGUgX19yZXByX18oKSBtZXRob2Qgb24KKyAgICB0aGUgbW9kdWxlIHR5cGUgd2lsbCB1c2UgdGhlIG1ldGhvZCBhcyBhcHByb3ByaWF0ZS4KKworICAgICIiIgogCiAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCB3aGVuIGltcGxlbWVudGVkIHNob3VsZCBsb2FkIGEgbW9kdWxlLgotICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuIiIiCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4KKworICAgICAgICBJbXBvcnRFcnJvciBpcyByYWlzZWQgb24gZmFpbHVyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbW9kdWxlJ3MgcmVwci4KKworICAgICAgICBVc2VkIGJ5IHRoZSBtb2R1bGUgdHlwZSB3aGVuIHRoZSBtZXRob2QgZG9lcyBub3QgcmFpc2UKKyAgICAgICAgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUKLSAgICAgICAgZ2l2ZW4gbW9kdWxlJ3MgcmVwci4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgIGRlZiBpbml0X21vZHVsZV9hdHRycyhzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJTZXQgdGhlIG1vZHVsZSdzIF9fbG9hZGVyX18gYXR0cmlidXRlLiIiIgorICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKIAogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgpAQCAtMTE5LDcgKzEyNiw3IEBACiAgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBzaG91bGQgcmV0dXJuIHRoZSBieXRlcyBmb3IKICAgICAgICAgdGhlIHNwZWNpZmllZCBwYXRoLiAgVGhlIHBhdGggbXVzdCBiZSBhIHN0ci4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByYWlzZSBJT0Vycm9yCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlcihMb2FkZXIpOgpAQCAtMTM0LDIzICsxNDEsNTQgQEAKICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBzaG91bGQgcmV0dXJuIHdoZXRoZXIgdGhlCi0gICAgICAgIG1vZHVsZSBpcyBhIHBhY2thZ2UuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgYm9vbC4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBtb2R1bGUgaXMgYSBwYWNrYWdlLiAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIGJvb2wuCiAKLSAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIFJhaXNlcyBJbXBvcnRFcnJvciBpcyB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBzaG91bGQgcmV0dXJuIHRoZSBjb2RlIG9iamVjdAotICAgICAgICBmb3IgdGhlIG1vZHVsZS4gIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFJldHVybnMgYSB0eXBlcy5Db2RlVHlwZS4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICAiIiJNZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgY29kZSBvYmplY3QgZm9yIHRoZSBtb2R1bGUuCisKKyAgICAgICAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIHR5cGVzLkNvZGVUeXBlIGlmIHBvc3NpYmxlLCBlbHNlCisgICAgICAgIHJldHVybnMgTm9uZSBpZiBhIGNvZGUgb2JqZWN0IGRvZXMgbm90IG1ha2Ugc2Vuc2UKKyAgICAgICAgKGUuZy4gYnVpbHQtaW4gbW9kdWxlKS4gUmFpc2VzIEltcG9ydEVycm9yIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlCisgICAgICAgIGZvdW5kLgorICAgICAgICAiIiIKKyAgICAgICAgc291cmNlID0gc2VsZi5nZXRfc291cmNlKGZ1bGxuYW1lKQorICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZSkKIAogICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCBzaG91bGQgcmV0dXJuIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlCi0gICAgICAgIG1vZHVsZS4gIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFJldHVybnMgYSBzdHIuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgbW9kdWxlLiAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIHN0ci4KKworICAgICAgICBSYWlzZXMgSW1wb3J0RXJyb3IgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorCisgICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGg9JzxzdHJpbmc+Jyk6CisgICAgICAgICIiIkNvbXBpbGUgJ2RhdGEnIGludG8gYSBjb2RlIG9iamVjdC4KKworICAgICAgICBUaGUgJ2RhdGEnIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGluZyB0aGF0IGNvbXBpbGUoKSBjYW4gaGFuZGxlLiBUaGUncGF0aCcKKyAgICAgICAgYXJndW1lbnQgc2hvdWxkIGJlIHdoZXJlIHRoZSBkYXRhIHdhcyByZXRyaWV2ZWQgKHdoZW4gYXBwbGljYWJsZSkuIiIiCisgICAgICAgIHJldHVybiBjb21waWxlKGRhdGEsIHBhdGgsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCisKKyAgICBkZWYgaW5pdF9tb2R1bGVfYXR0cnMoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgX19sb2FkZXJfXyBhbmQgX19wYWNrYWdlX18gYXR0cmlidXRlcyBvZiB0aGUgbW9kdWxlLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMgZ2xlYW5lZCBmcm9tIG1vZHVsZS5fX25hbWVfXy4gVGhlIF9fcGFja2FnZV9fCisgICAgICAgIGF0dHJpYnV0ZSBpcyBzZXQgYmFzZWQgb24gc2VsZi5pc19wYWNrYWdlKCkuCisgICAgICAgICIiIgorICAgICAgICBzdXBlcigpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5faW5pdF9wYWNrYWdlX2F0dHJzKHNlbGYsIG1vZHVsZSkKKworICAgIGxvYWRfbW9kdWxlID0gX2Jvb3RzdHJhcC5fTG9hZGVyQmFzaWNzLmxvYWRfbW9kdWxlCiAKIF9yZWdpc3RlcihJbnNwZWN0TG9hZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCi0gICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLCBfYm9vdHN0cmFwLk5hbWVzcGFjZUxvYWRlcikKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5zcGVjdExvYWRlcik6CkBAIC0xNjUsOCArMjAzLDM5IEBACiAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggc2hvdWxkIHJldHVybiB0aGUgdmFsdWUgdGhhdCBfX2ZpbGVfXyBpcyB0byBiZQotICAgICAgICBzZXQgdG8uIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgc2V0IHRvLgorCisgICAgICAgIFJhaXNlcyBJbXBvcnRFcnJvciBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisKKyAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJNZXRob2QgdG8gcmV0dXJuIHRoZSBjb2RlIG9iamVjdCBmb3IgZnVsbG5hbWUuCisKKyAgICAgICAgU2hvdWxkIHJldHVybiBOb25lIGlmIG5vdCBhcHBsaWNhYmxlIChlLmcuIGJ1aWx0LWluIG1vZHVsZSkuCisgICAgICAgIFJhaXNlIEltcG9ydEVycm9yIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kLgorICAgICAgICAiIiIKKyAgICAgICAgc291cmNlID0gc2VsZi5nZXRfc291cmNlKGZ1bGxuYW1lKQorICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlLCBwYXRoKQorCisgICAgZGVmIGluaXRfbW9kdWxlX2F0dHJzKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSdzIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBtb2R1bGUncyBuYW1lIGhhcyBiZWVuIHNldCBvbiBtb2R1bGUuX19uYW1lX18uCisgICAgICAgIEl0IGlzIGFsc28gYXNzdW1lZCB0aGF0IGFueSBwYXRoIHJldHVybmVkIGJ5IHNlbGYuZ2V0X2ZpbGVuYW1lKCkgdXNlcworICAgICAgICAob25lIG9mKSB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHBhdGggc2VwYXJhdG9yKHMpIHRvIHNlcGFyYXRlIGZpbGVuYW1lcworICAgICAgICBmcm9tIGRpcmVjdG9yaWVzIGluIG9yZGVyIHRvIHNldCBfX3BhdGhfXyBpbnRlbGxpZ2VudGx5LgorICAgICAgICBJbnNwZWN0TG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKCkgc2V0cyBfX2xvYWRlcl9fIGFuZCBfX3BhY2thZ2VfXy4KKyAgICAgICAgIiIiCisgICAgICAgIHN1cGVyKCkuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorICAgICAgICBfYm9vdHN0cmFwLl9pbml0X2ZpbGVfYXR0cnMoc2VsZiwgbW9kdWxlKQogCiAKIGNsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKQEAgLTE5OCw3ICsyNjcsNyBAQAogICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIChpbnQpIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcGF0aCAoc3RyKS4iIiIKICAgICAgICAgaWYgc2VsZi5wYXRoX3N0YXRzLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX3N0YXRzOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogICAgICAgICByZXR1cm4gaW50KHNlbGYucGF0aF9zdGF0cyhwYXRoKVsnbXRpbWUnXSkKIAogICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgpAQCAtMjA5LDcgKzI3OCw3IEBACiAgICAgICAgIC0gJ3NpemUnIChvcHRpb25hbCkgaXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5wYXRoX210aW1lLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX210aW1lOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KIAogICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKQEAgLTIyMCwxODUgKzI4OSw2IEBACiAgICAgICAgIEFueSBuZWVkZWQgaW50ZXJtZWRpYXJ5IGRpcmVjdG9yaWVzIGFyZSB0byBiZSBjcmVhdGVkLiBJZiBmb3Igc29tZQogICAgICAgICByZWFzb24gdGhlIGZpbGUgY2Fubm90IGJlIHdyaXR0ZW4gYmVjYXVzZSBvZiBwZXJtaXNzaW9ucywgZmFpbAogICAgICAgICBzaWxlbnRseS4KLQogICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiBfcmVnaXN0ZXIoU291cmNlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKLQotY2xhc3MgUHlMb2FkZXIoU291cmNlTG9hZGVyKToKLQotICAgICIiIkltcGxlbWVudCB0aGUgZGVwcmVjYXRlZCBQeUxvYWRlciBBQkMgaW4gdGVybXMgb2YgU291cmNlTG9hZGVyLgotCi0gICAgVGhpcyBjbGFzcyBoYXMgYmVlbiBkZXByZWNhdGVkISBJdCBpcyBzbGF0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuNC4KLSAgICBJZiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMSBpcyBub3QgbmVlZGVkIHRoZW4gaW1wbGVtZW50IHRoZQotICAgIFNvdXJjZUxvYWRlciBBQkMgaW5zdGVhZCBvZiB0aGlzIGNsYXNzLiBJZiBQeXRob24gMy4xIGNvbXBhdGliaWxpdHkgaXMKLSAgICBuZWVkZWQsIHRoZW4gdXNlIHRoZSBmb2xsb3dpbmcgaWRpb20gdG8gaGF2ZSBhIHNpbmdsZSBjbGFzcyB0aGF0IGlzCi0gICAgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkczo6Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnJvbSBpbXBvcnRsaWIuYWJjIGltcG9ydCBTb3VyY2VMb2FkZXIKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgZnJvbSBpbXBvcnRsaWIuYWJjIGltcG9ydCBQeUxvYWRlciBhcyBTb3VyY2VMb2FkZXIKLQotCi0gICAgICAgIGNsYXNzIEN1c3RvbUxvYWRlcihTb3VyY2VMb2FkZXIpOgotICAgICAgICAgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICAgICAgICAgIyBJbXBsZW1lbnQgLi4uCi0KLSAgICAgICAgICAgIGRlZiBzb3VyY2VfcGF0aChzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICAgICAgICAgJycnSW1wbGVtZW50IHNvdXJjZV9wYXRoIGluIHRlcm1zIG9mIGdldF9maWxlbmFtZS4nJycKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSA9PSAnX19pbml0X18nCi0KLSAgICAiIiIKLQotICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLQotICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgc291cmNlX3BhdGgoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2QuICBBY2NlcHRzIGEgc3RyIG1vZHVsZSBuYW1lIGFuZCByZXR1cm5zIHRoZSBwYXRoIHRvCi0gICAgICAgIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIG1vZHVsZS4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkltcGxlbWVudCBnZXRfZmlsZW5hbWUgaW4gdGVybXMgb2Ygc291cmNlX3BhdGguCi0KLSAgICAgICAgQXMgZ2V0X2ZpbGVuYW1lIHNob3VsZCBvbmx5IHJldHVybiBhIHNvdXJjZSBmaWxlIHBhdGggdGhlcmUgaXMgbm8KLSAgICAgICAgY2hhbmNlIG9mIHRoZSBwYXRoIG5vdCBleGlzdGluZyBidXQgbG9hZGluZyBzdGlsbCBiZWluZyBwb3NzaWJsZSwgc28KLSAgICAgICAgSW1wb3J0RXJyb3Igc2hvdWxkIHByb3BhZ2F0ZSBpbnN0ZWFkIG9mIGJlaW5nIHR1cm5lZCBpbnRvIHJldHVybmluZwotICAgICAgICBOb25lLgotCi0gICAgICAgICIiIgotICAgICAgICB3YXJuaW5ncy53YXJuKCJpbXBvcnRsaWIuYWJjLlB5TG9hZGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSB0aGUgaW1wb3J0bGliIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBwYXRoID0gc2VsZi5zb3VyY2VfcGF0aChmdWxsbmFtZSkKLSAgICAgICAgaWYgcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobmFtZT1mdWxsbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBwYXRoCi0KLQotY2xhc3MgUHlQeWNMb2FkZXIoUHlMb2FkZXIpOgotCi0gICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyB0byBhc3Npc3QgaW4gbG9hZGluZyBzb3VyY2UgYW5kIGJ5dGVjb2RlIGJ5Ci0gICAgcmVxdWlyaW5nIG9ubHkgYmFjay1lbmQgc3RvcmFnZSBtZXRob2RzIHRvIGJlIGltcGxlbWVudGVkLgotCi0gICAgVGhpcyBjbGFzcyBoYXMgYmVlbiBkZXByZWNhdGVkISBSZW1vdmFsIGlzIHNsYXRlZCBmb3IgUHl0aG9uIDMuNC4gSW1wbGVtZW50Ci0gICAgdGhlIFNvdXJjZUxvYWRlciBBQkMgaW5zdGVhZC4gSWYgUHl0aG9uIDMuMSBjb21wYXRpYmlsaXR5IGlzIG5lZWRlZCwgc2VlCi0gICAgUHlMb2FkZXIuCi0KLSAgICBUaGUgbWV0aG9kcyBnZXRfY29kZSwgZ2V0X3NvdXJjZSwgYW5kIGxvYWRfbW9kdWxlIGFyZSBpbXBsZW1lbnRlZCBmb3IgdGhlCi0gICAgdXNlci4KLQotICAgICIiIgotCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgc291cmNlIG9yIGJ5dGVjb2RlIGZpbGUgcGF0aC4iIiIKLSAgICAgICAgcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCi0gICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aAotICAgICAgICBwYXRoID0gc2VsZi5ieXRlY29kZV9wYXRoKGZ1bGxuYW1lKQotICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHBhdGgKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHNvdXJjZSBvciBieXRlY29kZSBwYXRoIGF2YWlsYWJsZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSwgbmFtZT1mdWxsbmFtZSkKLQotICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkdldCBhIGNvZGUgb2JqZWN0IGZyb20gc291cmNlIG9yIGJ5dGVjb2RlLiIiIgotICAgICAgICB3YXJuaW5ncy53YXJuKCJpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyIGlzIGRlcHJlY2F0ZWQgYW5kIHNsYXRlZCBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZW1vdmFsIGluIFB5dGhvbiAzLjQ7IHVzZSBTb3VyY2VMb2FkZXIgaW5zdGVhZC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBQeXRob24gMy4xIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQsIHNlZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRlc3QgZG9jdW1lbnRhdGlvbiBmb3IgUHlMb2FkZXIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc291cmNlX3RpbWVzdGFtcCA9IHNlbGYuc291cmNlX210aW1lKGZ1bGxuYW1lKQotICAgICAgICAjIFRyeSB0byB1c2UgYnl0ZWNvZGUgaWYgaXQgaXMgYXZhaWxhYmxlLgotICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5ieXRlY29kZV9wYXRoKGZ1bGxuYW1lKQotICAgICAgICBpZiBieXRlY29kZV9wYXRoOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCi0gICAgICAgICAgICAgICAgaWYgbGVuKG1hZ2ljKSA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCi0gICAgICAgICAgICAgICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQotICAgICAgICAgICAgICAgIGlmIGxlbihyYXdfdGltZXN0YW1wKSA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJiYWQgdGltZXN0YW1wIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQotICAgICAgICAgICAgICAgIHB5Y190aW1lc3RhbXAgPSBfYm9vdHN0cmFwLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkKLSAgICAgICAgICAgICAgICByYXdfc291cmNlX3NpemUgPSBkYXRhWzg6MTJdCi0gICAgICAgICAgICAgICAgaWYgbGVuKHJhd19zb3VyY2Vfc2l6ZSkgIT0gNDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCBmaWxlIHNpemUgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCi0gICAgICAgICAgICAgICAgIyBTb3VyY2Ugc2l6ZSBpcyB1bnVzZWQgYXMgdGhlIEFCQyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvCi0gICAgICAgICAgICAgICAgIyBnZXQgdGhlIHNpemUgb2YgdGhlIHNvdXJjZSBhaGVhZCBvZiByZWFkaW5nIGl0LgotICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVsxMjpdCi0gICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGlzIHZhbGlkLgotICAgICAgICAgICAgICAgIGlmIGltcC5nZXRfbWFnaWMoKSAhPSBtYWdpYzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1hZ2ljIG51bWJlciBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBieXRlY29kZSBpcyBub3Qgc3RhbGUgKG9ubHkgbWF0dGVycyB3aGVuCi0gICAgICAgICAgICAgICAgIyB0aGVyZSBpcyBzb3VyY2UgdG8gZmFsbCBiYWNrIG9uLgotICAgICAgICAgICAgICAgIGlmIHNvdXJjZV90aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHB5Y190aW1lc3RhbXAgPCBzb3VyY2VfdGltZXN0YW1wOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJ5dGVjb2RlIGlzIHN0YWxlIiwgbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKLSAgICAgICAgICAgICAgICAjIElmIHNvdXJjZSBpcyBhdmFpbGFibGUgZ2l2ZSBpdCBhIHNob3QuCi0gICAgICAgICAgICAgICAgaWYgc291cmNlX3RpbWVzdGFtcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgQnl0ZWNvZGUgc2VlbXMgZmluZSwgc28gdHJ5IHRvIHVzZSBpdC4KLSAgICAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbC5sb2FkcyhieXRlY29kZSkKLSAgICAgICAgZWxpZiBzb3VyY2VfdGltZXN0YW1wIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIGF2YWlsYWJsZSB0byBjcmVhdGUgY29kZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IGZvciB7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpCi0gICAgICAgICMgVXNlIHRoZSBzb3VyY2UuCi0gICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5zb3VyY2VfcGF0aChmdWxsbmFtZSkKLSAgICAgICAgaWYgc291cmNlX3BhdGggaXMgTm9uZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiYSBzb3VyY2UgcGF0aCBtdXN0IGV4aXN0IHRvIGxvYWQgezB9Ii5mb3JtYXQoZnVsbG5hbWUpCi0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPWZ1bGxuYW1lKQotICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQotICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc291cmNlLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKLSAgICAgICAgIyBHZW5lcmF0ZSBieXRlY29kZSBhbmQgd3JpdGUgaXQgb3V0LgotICAgICAgICBpZiBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6Ci0gICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF9ib290c3RyYXAuX3dfbG9uZyhzb3VyY2VfdGltZXN0YW1wKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF9ib290c3RyYXAuX3dfbG9uZyhsZW4oc291cmNlKSAmIDB4RkZGRkZGRkYpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhKQotICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKLQotICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgc291cmNlX210aW1lKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kLiBBY2NlcHRzIGEgc3RyIGZpbGVuYW1lIGFuZCByZXR1cm5zIGFuIGludAotICAgICAgICBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHNvdXJjZSBvZiB0aGUgbW9kdWxlLiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0KLSAgICBAYWJjLmFic3RyYWN0bWV0aG9kCi0gICAgZGVmIGJ5dGVjb2RlX3BhdGgoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2QuIEFjY2VwdHMgYSBzdHIgZmlsZW5hbWUgYW5kIHJldHVybnMgdGhlIHN0ciBwYXRobmFtZQotICAgICAgICB0byB0aGUgYnl0ZWNvZGUgZm9yIHRoZSBtb2R1bGUuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLQotICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgd3JpdGVfYnl0ZWNvZGUoc2VsZiwgZnVsbG5hbWUsIGJ5dGVjb2RlKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kLiAgQWNjZXB0cyBhIHN0ciBmaWxlbmFtZSBhbmQgYnl0ZXMgb2JqZWN0Ci0gICAgICAgIHJlcHJlc2VudGluZyB0aGUgYnl0ZWNvZGUgZm9yIHRoZSBtb2R1bGUuICBSZXR1cm5zIGEgYm9vbGVhbgotICAgICAgICByZXByZXNlbnRpbmcgd2hldGhlciB0aGUgYnl0ZWNvZGUgd2FzIHdyaXR0ZW4gb3Igbm90LiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggMTMxNjQzNy4uNzcyN2Y5ZCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMSwxMCArMSwxNyBAQAogIiIiVXRpbGl0eSBjb2RlIGZvciBjb25zdHJ1Y3RpbmcgaW1wb3J0ZXJzLCBldGMuIiIiCiAKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IG1vZHVsZV9mb3JfbG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBNQUdJQ19OVU1CRVIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBkZWNvZGVfc291cmNlCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBtb2R1bGVfdG9fbG9hZAogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X3BhY2thZ2UKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfcmVzb2x2ZV9uYW1lCiAKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCB3YXJuaW5ncworCiAKIGRlZiByZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSk6CiAgICAgIiIiUmVzb2x2ZSBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIHRvIGFuIGFic29sdXRlIG9uZS4iIiIKQEAgLTE5LDMgKzI2LDQ0IEBACiAgICAgICAgICAgICBicmVhawogICAgICAgICBsZXZlbCArPSAxCiAgICAgcmV0dXJuIF9yZXNvbHZlX25hbWUobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKKworCitkZWYgbW9kdWxlX2Zvcl9sb2FkZXIoZnhuKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gaGFuZGxlIHNlbGVjdGluZyB0aGUgcHJvcGVyIG1vZHVsZSBmb3IgbG9hZGVycy4KKworICAgIFRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBtb2R1bGUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIG1vZHVsZQorICAgIG5hbWUuIFRoZSBtb2R1bGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbiBpcyBlaXRoZXIgZnJvbSBzeXMubW9kdWxlcyBpZgorICAgIGl0IGFscmVhZHkgZXhpc3RzIG9yIGlzIGEgbmV3IG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBpcyBuZXcsIHRoZW4gX19uYW1lX18KKyAgICBpcyBzZXQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBtZXRob2QsIF9fbG9hZGVyX18gaXMgc2V0IHRvIHNlbGYsIGFuZAorICAgIF9fcGFja2FnZV9fIGlzIHNldCBhY2NvcmRpbmdseSAoaWYgc2VsZi5pc19wYWNrYWdlKCkgaXMgZGVmaW5lZCkgd2lsbCBiZSBzZXQKKyAgICBiZWZvcmUgaXQgaXMgcGFzc2VkIHRvIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gKGlmIHNlbGYuaXNfcGFja2FnZSgpIGRvZXMKKyAgICBub3Qgd29yayBmb3IgdGhlIG1vZHVsZSBpdCB3aWxsIGJlIHNldCBwb3N0LWxvYWQpLgorCisgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlIGRlY29yYXRvciBjcmVhdGVkIHRoZSBtb2R1bGUgaXQgaXMKKyAgICBzdWJzZXF1ZW50bHkgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzLgorCisgICAgVGhlIGRlY29yYXRvciBhc3N1bWVzIHRoYXQgdGhlIGRlY29yYXRlZCBmdW5jdGlvbiB0YWtlcyB0aGUgbW9kdWxlIG5hbWUgYXMKKyAgICB0aGUgc2Vjb25kIGFyZ3VtZW50LgorCisgICAgIiIiCisgICAgd2FybmluZ3Mud2FybignVG8gbWFrZSBpdCBlYXNpZXIgZm9yIHN1YmNsYXNzZXMsIHBsZWFzZSB1c2UgJworICAgICAgICAgICAgICAgICAgJ2ltcG9ydGxpYi51dGlsLm1vZHVsZV90b19sb2FkKCkgYW5kICcKKyAgICAgICAgICAgICAgICAgICdpbXBvcnRsaWIuYWJjLkxvYWRlci5pbml0X21vZHVsZV9hdHRycygpJywKKyAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGZ4bikKKyAgICBkZWYgbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcihzZWxmLCBmdWxsbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBtb2R1bGVfdG9fbG9hZChmdWxsbmFtZSkgYXMgbW9kdWxlOgorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfcGFja2FnZSA9IHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgICAgICAjIElmIF9fcGFja2FnZV9fIHdhcyBub3Qgc2V0IGFib3ZlLCBfX2ltcG9ydF9fKCkgd2lsbCBkbyBpdCBsYXRlci4KKyAgICAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgbW9kdWxlLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL2luc3BlY3QucHkgYi9MaWIvaW5zcGVjdC5weQppbmRleCA3ODM0ZDEyLi4xOTVjOWZkIDEwMDY0NAotLS0gYS9MaWIvaW5zcGVjdC5weQorKysgYi9MaWIvaW5zcGVjdC5weQpAQCAtMzEsNyArMzEsNiBAQAogX19hdXRob3JfXyA9ICgnS2EtUGluZyBZZWUgPHBpbmdAbGZ3Lm9yZz4nLAogICAgICAgICAgICAgICAnWXVyeSBTZWxpdmFub3YgPHlzZWxpdmFub3ZAc3ByeW1peC5jb20+JykKIAotaW1wb3J0IGltcAogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKQEAgLTM2MSw2ICszNjAsNDAgQEAKICAgICAiUmV0dXJuIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyAoaW5jbHVkaW5nIGNscykgaW4gbWV0aG9kIHJlc29sdXRpb24gb3JkZXIuIgogICAgIHJldHVybiBjbHMuX19tcm9fXwogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGZ1bmN0aW9uIGhlbHBlcnMKKworZGVmIHVud3JhcChmdW5jLCAqLCBzdG9wPU5vbmUpOgorICAgICIiIkdldCB0aGUgb2JqZWN0IHdyYXBwZWQgYnkgKmZ1bmMqLgorCisgICBGb2xsb3dzIHRoZSBjaGFpbiBvZiA6YXR0cjpgX193cmFwcGVkX19gIGF0dHJpYnV0ZXMgcmV0dXJuaW5nIHRoZSBsYXN0CisgICBvYmplY3QgaW4gdGhlIGNoYWluLgorCisgICAqc3RvcCogaXMgYW4gb3B0aW9uYWwgY2FsbGJhY2sgYWNjZXB0aW5nIGFuIG9iamVjdCBpbiB0aGUgd3JhcHBlciBjaGFpbgorICAgYXMgaXRzIHNvbGUgYXJndW1lbnQgdGhhdCBhbGxvd3MgdGhlIHVud3JhcHBpbmcgdG8gYmUgdGVybWluYXRlZCBlYXJseSBpZgorICAgdGhlIGNhbGxiYWNrIHJldHVybnMgYSB0cnVlIHZhbHVlLiBJZiB0aGUgY2FsbGJhY2sgbmV2ZXIgcmV0dXJucyBhIHRydWUKKyAgIHZhbHVlLCB0aGUgbGFzdCBvYmplY3QgaW4gdGhlIGNoYWluIGlzIHJldHVybmVkIGFzIHVzdWFsLiBGb3IgZXhhbXBsZSwKKyAgIDpmdW5jOmBzaWduYXR1cmVgIHVzZXMgdGhpcyB0byBzdG9wIHVud3JhcHBpbmcgaWYgYW55IG9iamVjdCBpbiB0aGUKKyAgIGNoYWluIGhhcyBhIGBgX19zaWduYXR1cmVfX2BgIGF0dHJpYnV0ZSBkZWZpbmVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgYSBjeWNsZSBpcyBlbmNvdW50ZXJlZC4KKworICAgICIiIgorICAgIGlmIHN0b3AgaXMgTm9uZToKKyAgICAgICAgZGVmIF9pc193cmFwcGVyKGYpOgorICAgICAgICAgICAgcmV0dXJuIGhhc2F0dHIoZiwgJ19fd3JhcHBlZF9fJykKKyAgICBlbHNlOgorICAgICAgICBkZWYgX2lzX3dyYXBwZXIoZik6CisgICAgICAgICAgICByZXR1cm4gaGFzYXR0cihmLCAnX193cmFwcGVkX18nKSBhbmQgbm90IHN0b3AoZikKKyAgICBmID0gZnVuYyAgIyByZW1lbWJlciB0aGUgb3JpZ2luYWwgZnVuYyBmb3IgZXJyb3IgcmVwb3J0aW5nCisgICAgbWVtbyA9IHtpZChmKX0gIyBNZW1vaXNlIGJ5IGlkIHRvIHRvbGVyYXRlIG5vbi1oYXNoYWJsZSBvYmplY3RzCisgICAgd2hpbGUgX2lzX3dyYXBwZXIoZnVuYyk6CisgICAgICAgIGZ1bmMgPSBmdW5jLl9fd3JhcHBlZF9fCisgICAgICAgIGlkX2Z1bmMgPSBpZChmdW5jKQorICAgICAgICBpZiBpZF9mdW5jIGluIG1lbW86CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3cmFwcGVyIGxvb3Agd2hlbiB1bndyYXBwaW5nIHshcn0nLmZvcm1hdChmKSkKKyAgICAgICAgbWVtby5hZGQoaWRfZnVuYykKKyAgICByZXR1cm4gZnVuYworCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNvdXJjZSBjb2RlIGV4dHJhY3Rpb24KIGRlZiBpbmRlbnRzaXplKGxpbmUpOgogICAgICIiIlJldHVybiB0aGUgaW5kZW50IHNpemUsIGluIHNwYWNlcywgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSBvZiB0ZXh0LiIiIgpAQCAtNDQwLDYgKzQ3Myw5IEBACiAgICAgIiIiR2V0IHRoZSBtb2R1bGUgbmFtZSwgc3VmZml4LCBtb2RlLCBhbmQgbW9kdWxlIHR5cGUgZm9yIGEgZ2l2ZW4gZmlsZS4iIiIKICAgICB3YXJuaW5ncy53YXJuKCdpbnNwZWN0LmdldG1vZHVsZWluZm8oKSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgMikKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgaW1wb3J0IGltcAogICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KQEAgLTQ3Niw3ICs1MTIsNyBAQAogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgIyBvbmx5IHJldHVybiBhIG5vbi1leGlzdGVudCBmaWxlbmFtZSBpZiB0aGUgbW9kdWxlIGhhcyBhIFBFUCAzMDIgbG9hZGVyCi0gICAgaWYgaGFzYXR0cihnZXRtb2R1bGUob2JqZWN0LCBmaWxlbmFtZSksICdfX2xvYWRlcl9fJyk6CisgICAgaWYgZ2V0YXR0cihnZXRtb2R1bGUob2JqZWN0LCBmaWxlbmFtZSksICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgbm90IE5vbmU6CiAgICAgICAgIHJldHVybiBmaWxlbmFtZQogICAgICMgb3IgaXQgaXMgaW4gdGhlIGxpbmVjYWNoZQogICAgIGlmIGZpbGVuYW1lIGluIGxpbmVjYWNoZS5jYWNoZToKQEAgLTU0NSwxMyArNTgxLDEzIEBACiAKICAgICBUaGUgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwKICAgICBvciBjb2RlIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgYWxsIHRoZSBsaW5lcwotICAgIGluIHRoZSBmaWxlIGFuZCB0aGUgbGluZSBudW1iZXIgaW5kZXhlcyBhIGxpbmUgaW4gdGhhdCBsaXN0LiAgQW4gSU9FcnJvcgorICAgIGluIHRoZSBmaWxlIGFuZCB0aGUgbGluZSBudW1iZXIgaW5kZXhlcyBhIGxpbmUgaW4gdGhhdCBsaXN0LiAgQW4gT1NFcnJvcgogICAgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC4iIiIKIAogICAgIGZpbGUgPSBnZXRmaWxlKG9iamVjdCkKICAgICBzb3VyY2VmaWxlID0gZ2V0c291cmNlZmlsZShvYmplY3QpCiAgICAgaWYgbm90IHNvdXJjZWZpbGUgYW5kIGZpbGVbOjFdICsgZmlsZVstMTpdICE9ICc8Pic6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IoJ3NvdXJjZSBjb2RlIG5vdCBhdmFpbGFibGUnKQorICAgICAgICByYWlzZSBPU0Vycm9yKCdzb3VyY2UgY29kZSBub3QgYXZhaWxhYmxlJykKICAgICBmaWxlID0gc291cmNlZmlsZSBpZiBzb3VyY2VmaWxlIGVsc2UgZmlsZQogCiAgICAgbW9kdWxlID0gZ2V0bW9kdWxlKG9iamVjdCwgZmlsZSkKQEAgLTU2MCw3ICs1OTYsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKGZpbGUpCiAgICAgaWYgbm90IGxpbmVzOgotICAgICAgICByYWlzZSBJT0Vycm9yKCdjb3VsZCBub3QgZ2V0IHNvdXJjZSBjb2RlJykKKyAgICAgICAgcmFpc2UgT1NFcnJvcignY291bGQgbm90IGdldCBzb3VyY2UgY29kZScpCiAKICAgICBpZiBpc21vZHVsZShvYmplY3QpOgogICAgICAgICByZXR1cm4gbGluZXMsIDAKQEAgLTU4Niw3ICs2MjIsNyBAQAogICAgICAgICAgICAgY2FuZGlkYXRlcy5zb3J0KCkKICAgICAgICAgICAgIHJldHVybiBsaW5lcywgY2FuZGlkYXRlc1swXVsxXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignY291bGQgbm90IGZpbmQgY2xhc3MgZGVmaW5pdGlvbicpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdjb3VsZCBub3QgZmluZCBjbGFzcyBkZWZpbml0aW9uJykKIAogICAgIGlmIGlzbWV0aG9kKG9iamVjdCk6CiAgICAgICAgIG9iamVjdCA9IG9iamVjdC5fX2Z1bmNfXwpAQCAtNTk4LDE0ICs2MzQsMTQgQEAKICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmZfY29kZQogICAgIGlmIGlzY29kZShvYmplY3QpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihvYmplY3QsICdjb19maXJzdGxpbmVubycpOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignY291bGQgbm90IGZpbmQgZnVuY3Rpb24gZGVmaW5pdGlvbicpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdjb3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZpbml0aW9uJykKICAgICAgICAgbG51bSA9IG9iamVjdC5jb19maXJzdGxpbmVubyAtIDEKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ14oXHMqZGVmXHMpfCguKig/PCFcdylsYW1iZGEoOnxccykpfF4oXHMqQCknKQogICAgICAgICB3aGlsZSBsbnVtID4gMDoKICAgICAgICAgICAgIGlmIHBhdC5tYXRjaChsaW5lc1tsbnVtXSk6IGJyZWFrCiAgICAgICAgICAgICBsbnVtID0gbG51bSAtIDEKICAgICAgICAgcmV0dXJuIGxpbmVzLCBsbnVtCi0gICAgcmFpc2UgSU9FcnJvcignY291bGQgbm90IGZpbmQgY29kZSBvYmplY3QnKQorICAgIHJhaXNlIE9TRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIGNvZGUgb2JqZWN0JykKIAogZGVmIGdldGNvbW1lbnRzKG9iamVjdCk6CiAgICAgIiIiR2V0IGxpbmVzIG9mIGNvbW1lbnRzIGltbWVkaWF0ZWx5IHByZWNlZGluZyBhbiBvYmplY3QncyBzb3VyY2UgY29kZS4KQEAgLTYxNCw3ICs2NTAsNyBAQAogICAgICIiIgogICAgIHRyeToKICAgICAgICAgbGluZXMsIGxudW0gPSBmaW5kc291cmNlKG9iamVjdCkKLSAgICBleGNlcHQgKElPRXJyb3IsIFR5cGVFcnJvcik6CisgICAgZXhjZXB0IChPU0Vycm9yLCBUeXBlRXJyb3IpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgaWYgaXNtb2R1bGUob2JqZWN0KToKQEAgLTcxMCw3ICs3NDYsNyBAQAogICAgIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsIGZ1bmN0aW9uLCB0cmFjZWJhY2ssIGZyYW1lLAogICAgIG9yIGNvZGUgb2JqZWN0LiAgVGhlIHNvdXJjZSBjb2RlIGlzIHJldHVybmVkIGFzIGEgbGlzdCBvZiB0aGUgbGluZXMKICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBvYmplY3QgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRpY2F0ZXMgd2hlcmUgaW4gdGhlCi0gICAgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhlIGZpcnN0IGxpbmUgb2YgY29kZSB3YXMgZm91bmQuICBBbiBJT0Vycm9yIGlzCisgICAgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhlIGZpcnN0IGxpbmUgb2YgY29kZSB3YXMgZm91bmQuICBBbiBPU0Vycm9yIGlzCiAgICAgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QgYmUgcmV0cmlldmVkLiIiIgogICAgIGxpbmVzLCBsbnVtID0gZmluZHNvdXJjZShvYmplY3QpCiAKQEAgLTcyMiw3ICs3NTgsNyBAQAogCiAgICAgVGhlIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsCiAgICAgb3IgY29kZSBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgc3RyaW5nLiAgQW4KLSAgICBJT0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC4iIiIKKyAgICBPU0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC4iIiIKICAgICBsaW5lcywgbG51bSA9IGdldHNvdXJjZWxpbmVzKG9iamVjdCkKICAgICByZXR1cm4gJycuam9pbihsaW5lcykKIApAQCAtMTEyMiw3ICsxMTU4LDcgQEAKICAgICAgICAgc3RhcnQgPSBsaW5lbm8gLSAxIC0gY29udGV4dC8vMgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsaW5lcywgbG51bSA9IGZpbmRzb3VyY2UoZnJhbWUpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIGxpbmVzID0gaW5kZXggPSBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzdGFydCA9IG1heChzdGFydCwgMSkKQEAgLTEzNDQsNiArMTM4MCw5IEBACiAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouX19mdW5jX18pCiAgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCiAKKyAgICAjIFdhcyB0aGlzIGZ1bmN0aW9uIHdyYXBwZWQgYnkgYSBkZWNvcmF0b3I/CisgICAgb2JqID0gdW53cmFwKG9iaiwgc3RvcD0obGFtYmRhIGY6IGhhc2F0dHIoZiwgIl9fc2lnbmF0dXJlX18iKSkpCisKICAgICB0cnk6CiAgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgpAQCAtMTM1MiwxMyArMTM5MSw2IEBACiAgICAgICAgIGlmIHNpZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBzaWcKIAotICAgIHRyeToKLSAgICAgICAgIyBXYXMgdGhpcyBmdW5jdGlvbiB3cmFwcGVkIGJ5IGEgZGVjb3JhdG9yPwotICAgICAgICB3cmFwcGVkID0gb2JqLl9fd3JhcHBlZF9fCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSh3cmFwcGVkKQogCiAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkZ1bmN0aW9uVHlwZSk6CiAgICAgICAgIHJldHVybiBTaWduYXR1cmUuZnJvbV9mdW5jdGlvbihvYmopCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggYmRhNGRlZi4uMzk4NzhiOCAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtNCw3ICs0LDcgQEAKIEF0IHRoZSB0b3Agb2YgdGhlIEkvTyBoaWVyYXJjaHkgaXMgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgSU9CYXNlLiBJdAogZGVmaW5lcyB0aGUgYmFzaWMgaW50ZXJmYWNlIHRvIGEgc3RyZWFtLiBOb3RlLCBob3dldmVyLCB0aGF0IHRoZXJlIGlzIG5vCiBzZXBhcmF0aW9uIGJldHdlZW4gcmVhZGluZyBhbmQgd3JpdGluZyB0byBzdHJlYW1zOyBpbXBsZW1lbnRhdGlvbnMgYXJlCi1hbGxvd2VkIHRvIHJhaXNlIGFuIElPRXJyb3IgaWYgdGhleSBkbyBub3Qgc3VwcG9ydCBhIGdpdmVuIG9wZXJhdGlvbi4KK2FsbG93ZWQgdG8gcmFpc2UgYW4gT1NFcnJvciBpZiB0aGV5IGRvIG5vdCBzdXBwb3J0IGEgZ2l2ZW4gb3BlcmF0aW9uLgogCiBFeHRlbmRpbmcgSU9CYXNlIGlzIFJhd0lPQmFzZSB3aGljaCBkZWFscyBzaW1wbHkgd2l0aCB0aGUgcmVhZGluZyBhbmQKIHdyaXRpbmcgb2YgcmF3IGJ5dGVzIHRvIGEgc3RyZWFtLiBGaWxlSU8gc3ViY2xhc3NlcyBSYXdJT0Jhc2UgdG8gcHJvdmlkZQpkaWZmIC0tZ2l0IGEvTGliL2pzb24vX19pbml0X18ucHkgYi9MaWIvanNvbi9fX2luaXRfXy5weQppbmRleCA0OGE0ZjhmLi4zZjk1Y2MzIDEwMDY0NAotLS0gYS9MaWIvanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvanNvbi9fX2luaXRfXy5weQpAQCAtMzksOCArMzksNyBAQAogUHJldHR5IHByaW50aW5nOjoKIAogICAgID4+PiBpbXBvcnQganNvbgotICAgID4+PiBwcmludChqc29uLmR1bXBzKHsnNCc6IDUsICc2JzogN30sIHNvcnRfa2V5cz1UcnVlLAotICAgIC4uLiAgICAgICAgICAgICAgICAgIGluZGVudD00LCBzZXBhcmF0b3JzPSgnLCcsICc6ICcpKSkKKyAgICA+Pj4gcHJpbnQoanNvbi5kdW1wcyh7JzQnOiA1LCAnNic6IDd9LCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpKQogICAgIHsKICAgICAgICAgIjQiOiA1LAogICAgICAgICAiNiI6IDcKQEAgLTE0NiwxMyArMTQ1LDEyIEBACiAgICAgSWYgYGBpbmRlbnRgYCBpcyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCB0aGVuIEpTT04gYXJyYXkgZWxlbWVudHMgYW5kCiAgICAgb2JqZWN0IG1lbWJlcnMgd2lsbCBiZSBwcmV0dHktcHJpbnRlZCB3aXRoIHRoYXQgaW5kZW50IGxldmVsLiBBbiBpbmRlbnQKICAgICBsZXZlbCBvZiAwIHdpbGwgb25seSBpbnNlcnQgbmV3bGluZXMuIGBgTm9uZWBgIGlzIHRoZSBtb3N0IGNvbXBhY3QKLSAgICByZXByZXNlbnRhdGlvbi4gIFNpbmNlIHRoZSBkZWZhdWx0IGl0ZW0gc2VwYXJhdG9yIGlzIGBgJywgJ2BgLCAgdGhlCi0gICAgb3V0cHV0IG1pZ2h0IGluY2x1ZGUgdHJhaWxpbmcgd2hpdGVzcGFjZSB3aGVuIGBgaW5kZW50YGAgaXMgc3BlY2lmaWVkLgotICAgIFlvdSBjYW4gdXNlIGBgc2VwYXJhdG9ycz0oJywnLCAnOiAnKWBgIHRvIGF2b2lkIHRoaXMuCisgICAgcmVwcmVzZW50YXRpb24uCiAKLSAgICBJZiBgYHNlcGFyYXRvcnNgYCBpcyBhbiBgYChpdGVtX3NlcGFyYXRvciwgZGljdF9zZXBhcmF0b3IpYGAgdHVwbGUKLSAgICB0aGVuIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGBgKCcsICcsICc6ICcpYGAgc2VwYXJhdG9ycy4KLSAgICBgYCgnLCcsICc6JylgYCBpcyB0aGUgbW9zdCBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24uCisgICAgSWYgc3BlY2lmaWVkLCBgYHNlcGFyYXRvcnNgYCBzaG91bGQgYmUgYW4gYGAoaXRlbV9zZXBhcmF0b3IsIGtleV9zZXBhcmF0b3IpYGAKKyAgICB0dXBsZS4gIFRoZSBkZWZhdWx0IGlzIGBgKCcsICcsICc6ICcpYGAgaWYgKmluZGVudCogaXMgYGBOb25lYGAgYW5kCisgICAgYGAoJywnLCAnOiAnKWBgIG90aGVyd2lzZS4gIFRvIGdldCB0aGUgbW9zdCBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24sCisgICAgeW91IHNob3VsZCBzcGVjaWZ5IGBgKCcsJywgJzonKWBgIHRvIGVsaW1pbmF0ZSB3aGl0ZXNwYWNlLgogCiAgICAgYGBkZWZhdWx0KG9iailgYCBpcyBhIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIHJldHVybiBhIHNlcmlhbGl6YWJsZSB2ZXJzaW9uCiAgICAgb2Ygb2JqIG9yIHJhaXNlIFR5cGVFcnJvci4gVGhlIGRlZmF1bHQgc2ltcGx5IHJhaXNlcyBUeXBlRXJyb3IuCkBAIC0yMDksMTMgKzIwNywxMiBAQAogICAgIElmIGBgaW5kZW50YGAgaXMgYSBub24tbmVnYXRpdmUgaW50ZWdlciwgdGhlbiBKU09OIGFycmF5IGVsZW1lbnRzIGFuZAogICAgIG9iamVjdCBtZW1iZXJzIHdpbGwgYmUgcHJldHR5LXByaW50ZWQgd2l0aCB0aGF0IGluZGVudCBsZXZlbC4gQW4gaW5kZW50CiAgICAgbGV2ZWwgb2YgMCB3aWxsIG9ubHkgaW5zZXJ0IG5ld2xpbmVzLiBgYE5vbmVgYCBpcyB0aGUgbW9zdCBjb21wYWN0Ci0gICAgcmVwcmVzZW50YXRpb24uICBTaW5jZSB0aGUgZGVmYXVsdCBpdGVtIHNlcGFyYXRvciBpcyBgYCcsICdgYCwgIHRoZQotICAgIG91dHB1dCBtaWdodCBpbmNsdWRlIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2hlbiBgYGluZGVudGBgIGlzIHNwZWNpZmllZC4KLSAgICBZb3UgY2FuIHVzZSBgYHNlcGFyYXRvcnM9KCcsJywgJzogJylgYCB0byBhdm9pZCB0aGlzLgorICAgIHJlcHJlc2VudGF0aW9uLgogCi0gICAgSWYgYGBzZXBhcmF0b3JzYGAgaXMgYW4gYGAoaXRlbV9zZXBhcmF0b3IsIGRpY3Rfc2VwYXJhdG9yKWBgIHR1cGxlCi0gICAgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBgYCgnLCAnLCAnOiAnKWBgIHNlcGFyYXRvcnMuCi0gICAgYGAoJywnLCAnOicpYGAgaXMgdGhlIG1vc3QgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uLgorICAgIElmIHNwZWNpZmllZCwgYGBzZXBhcmF0b3JzYGAgc2hvdWxkIGJlIGFuIGBgKGl0ZW1fc2VwYXJhdG9yLCBrZXlfc2VwYXJhdG9yKWBgCisgICAgdHVwbGUuICBUaGUgZGVmYXVsdCBpcyBgYCgnLCAnLCAnOiAnKWBgIGlmICppbmRlbnQqIGlzIGBgTm9uZWBgIGFuZAorICAgIGBgKCcsJywgJzogJylgYCBvdGhlcndpc2UuICBUbyBnZXQgdGhlIG1vc3QgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uLAorICAgIHlvdSBzaG91bGQgc3BlY2lmeSBgYCgnLCcsICc6JylgYCB0byBlbGltaW5hdGUgd2hpdGVzcGFjZS4KIAogICAgIGBgZGVmYXVsdChvYmopYGAgaXMgYSBmdW5jdGlvbiB0aGF0IHNob3VsZCByZXR1cm4gYSBzZXJpYWxpemFibGUgdmVyc2lvbgogICAgIG9mIG9iaiBvciByYWlzZSBUeXBlRXJyb3IuIFRoZSBkZWZhdWx0IHNpbXBseSByYWlzZXMgVHlwZUVycm9yLgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggNTFjM2FhNy4uZGE3ZWY5YyAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC0xLDkgKzEsNiBAQAogIiIiSW1wbGVtZW50YXRpb24gb2YgSlNPTkRlY29kZXIKICIiIgotaW1wb3J0IGJpbmFzY2lpCiBpbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCBzdHJ1Y3QKIAogZnJvbSBqc29uIGltcG9ydCBzY2FubmVyCiB0cnk6CkBAIC0xNSwxNCArMTIsOSBAQAogCiBGTEFHUyA9IHJlLlZFUkJPU0UgfCByZS5NVUxUSUxJTkUgfCByZS5ET1RBTEwKIAotZGVmIF9mbG9hdGNvbnN0YW50cygpOgotICAgIF9CWVRFUyA9IGJpbmFzY2lpLnVuaGV4bGlmeShiJzdGRjgwMDAwMDAwMDAwMDA3RkYwMDAwMDAwMDAwMDAwJykKLSAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgotICAgICAgICBfQllURVMgPSBfQllURVNbOjhdWzo6LTFdICsgX0JZVEVTWzg6XVs6Oi0xXQotICAgIG5hbiwgaW5mID0gc3RydWN0LnVucGFjaygnZGQnLCBfQllURVMpCi0gICAgcmV0dXJuIG5hbiwgaW5mLCAtaW5mCi0KLU5hTiwgUG9zSW5mLCBOZWdJbmYgPSBfZmxvYXRjb25zdGFudHMoKQorTmFOID0gZmxvYXQoJ25hbicpCitQb3NJbmYgPSBmbG9hdCgnaW5mJykKK05lZ0luZiA9IGZsb2F0KCctaW5mJykKIAogCiBkZWYgbGluZWNvbChkb2MsIHBvcyk6CkBAIC0xOTYsOCArMTg4LDggQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKLSAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nIG9iamVjdCIsIHMsIGVuZCkpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGVycjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpKSBmcm9tIE5vbmUKICAgICAgICAgcGFpcnNfYXBwZW5kKChrZXksIHZhbHVlKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmV4dGNoYXIgPSBzW2VuZF0KQEAgLTI0MCw4ICsyMzIsOCBAQAogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZhbHVlLCBlbmQgPSBzY2FuX29uY2UocywgZW5kKQotICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3Rpbmcgb2JqZWN0IiwgcywgZW5kKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQogICAgICAgICBfYXBwZW5kKHZhbHVlKQogICAgICAgICBuZXh0Y2hhciA9IHNbZW5kOmVuZCArIDFdCiAgICAgICAgIGlmIG5leHRjaGFyIGluIF93czoKQEAgLTI1MSw3ICsyNDMsNyBAQAogICAgICAgICBpZiBuZXh0Y2hhciA9PSAnXSc6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICcsJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBzLCBlbmQgLSAxKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc1tlbmRdIGluIF93czoKICAgICAgICAgICAgICAgICBlbmQgKz0gMQpAQCAtMzY2LDYgKzM1OCw2IEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvYmosIGVuZCA9IHNlbGYuc2Nhbl9vbmNlKHMsIGlkeCkKLSAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBKU09OIG9iamVjdCBjb3VsZCBiZSBkZWNvZGVkIikKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQogICAgICAgICByZXR1cm4gb2JqLCBlbmQKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2VuY29kZXIucHkgYi9MaWIvanNvbi9lbmNvZGVyLnB5CmluZGV4IDFkOGIyMGMuLjA1MTM4MzggMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2VuY29kZXIucHkKKysrIGIvTGliL2pzb24vZW5jb2Rlci5weQpAQCAtMTI1LDE0ICsxMjUsMTIgQEAKICAgICAgICAgSWYgaW5kZW50IGlzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIsIHRoZW4gSlNPTiBhcnJheQogICAgICAgICBlbGVtZW50cyBhbmQgb2JqZWN0IG1lbWJlcnMgd2lsbCBiZSBwcmV0dHktcHJpbnRlZCB3aXRoIHRoYXQKICAgICAgICAgaW5kZW50IGxldmVsLiAgQW4gaW5kZW50IGxldmVsIG9mIDAgd2lsbCBvbmx5IGluc2VydCBuZXdsaW5lcy4KLSAgICAgICAgTm9uZSBpcyB0aGUgbW9zdCBjb21wYWN0IHJlcHJlc2VudGF0aW9uLiAgU2luY2UgdGhlIGRlZmF1bHQKLSAgICAgICAgaXRlbSBzZXBhcmF0b3IgaXMgJywgJywgIHRoZSBvdXRwdXQgbWlnaHQgaW5jbHVkZSB0cmFpbGluZwotICAgICAgICB3aGl0ZXNwYWNlIHdoZW4gaW5kZW50IGlzIHNwZWNpZmllZC4gIFlvdSBjYW4gdXNlCi0gICAgICAgIHNlcGFyYXRvcnM9KCcsJywgJzogJykgdG8gYXZvaWQgdGhpcy4KKyAgICAgICAgTm9uZSBpcyB0aGUgbW9zdCBjb21wYWN0IHJlcHJlc2VudGF0aW9uLgogCi0gICAgICAgIElmIHNwZWNpZmllZCwgc2VwYXJhdG9ycyBzaG91bGQgYmUgYSAoaXRlbV9zZXBhcmF0b3IsIGtleV9zZXBhcmF0b3IpCi0gICAgICAgIHR1cGxlLiAgVGhlIGRlZmF1bHQgaXMgKCcsICcsICc6ICcpLiAgVG8gZ2V0IHRoZSBtb3N0IGNvbXBhY3QgSlNPTgotICAgICAgICByZXByZXNlbnRhdGlvbiB5b3Ugc2hvdWxkIHNwZWNpZnkgKCcsJywgJzonKSB0byBlbGltaW5hdGUgd2hpdGVzcGFjZS4KKyAgICAgICAgSWYgc3BlY2lmaWVkLCBzZXBhcmF0b3JzIHNob3VsZCBiZSBhbiAoaXRlbV9zZXBhcmF0b3IsIGtleV9zZXBhcmF0b3IpCisgICAgICAgIHR1cGxlLiAgVGhlIGRlZmF1bHQgaXMgKCcsICcsICc6ICcpIGlmICppbmRlbnQqIGlzIGBgTm9uZWBgIGFuZAorICAgICAgICAoJywnLCAnOiAnKSBvdGhlcndpc2UuICBUbyBnZXQgdGhlIG1vc3QgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uLAorICAgICAgICB5b3Ugc2hvdWxkIHNwZWNpZnkgKCcsJywgJzonKSB0byBlbGltaW5hdGUgd2hpdGVzcGFjZS4KIAogICAgICAgICBJZiBzcGVjaWZpZWQsIGRlZmF1bHQgaXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBvYmplY3RzCiAgICAgICAgIHRoYXQgY2FuJ3Qgb3RoZXJ3aXNlIGJlIHNlcmlhbGl6ZWQuICBJdCBzaG91bGQgcmV0dXJuIGEgSlNPTiBlbmNvZGFibGUKQEAgLTE0OCw2ICsxNDYsOCBAQAogICAgICAgICBzZWxmLmluZGVudCA9IGluZGVudAogICAgICAgICBpZiBzZXBhcmF0b3JzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5pdGVtX3NlcGFyYXRvciwgc2VsZi5rZXlfc2VwYXJhdG9yID0gc2VwYXJhdG9ycworICAgICAgICBlbGlmIGluZGVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuaXRlbV9zZXBhcmF0b3IgPSAnLCcKICAgICAgICAgaWYgZGVmYXVsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuZGVmYXVsdCA9IGRlZmF1bHQKIApAQCAtMTc1LDYgKzE3NSw3IEBACiAgICAgZGVmIGVuY29kZShzZWxmLCBvKToKICAgICAgICAgIiIiUmV0dXJuIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gZGF0YSBzdHJ1Y3R1cmUuCiAKKyAgICAgICAgPj4+IGZyb20ganNvbi5lbmNvZGVyIGltcG9ydCBKU09ORW5jb2RlcgogICAgICAgICA+Pj4gSlNPTkVuY29kZXIoKS5lbmNvZGUoeyJmb28iOiBbImJhciIsICJiYXoiXX0pCiAgICAgICAgICd7ImZvbyI6IFsiYmFyIiwgImJheiJdfScKIApAQCAtMjk4LDkgKzI5OSwxMyBAQAogICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBGYWxzZToKICAgICAgICAgICAgICAgICB5aWVsZCBidWYgKyAnZmFsc2UnCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgYnVmICsgc3RyKHZhbHVlKQorICAgICAgICAgICAgICAgICMgU3ViY2xhc3NlcyBvZiBpbnQvZmxvYXQgbWF5IG92ZXJyaWRlIF9fc3RyX18sIGJ1dCB3ZSBzdGlsbAorICAgICAgICAgICAgICAgICMgd2FudCB0byBlbmNvZGUgdGhlbSBhcyBpbnRlZ2Vycy9mbG9hdHMgaW4gSlNPTi4gT25lIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAjIHdpdGhpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBpcyBJbnRFbnVtLgorICAgICAgICAgICAgICAgIHlpZWxkIGJ1ZiArIHN0cihpbnQodmFsdWUpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgYnVmICsgX2Zsb2F0c3RyKHZhbHVlKQorICAgICAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgYWJvdmUgZm9yIGludAorICAgICAgICAgICAgICAgIHlpZWxkIGJ1ZiArIF9mbG9hdHN0cihmbG9hdCh2YWx1ZSkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIGJ1ZgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChsaXN0LCB0dXBsZSkpOgpAQCAtMzA5LDggKzMxNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IF9pdGVyZW5jb2RlX2RpY3QodmFsdWUsIF9jdXJyZW50X2luZGVudF9sZXZlbCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBfaXRlcmVuY29kZSh2YWx1ZSwgX2N1cnJlbnRfaW5kZW50X2xldmVsKQotICAgICAgICAgICAgICAgIGZvciBjaHVuayBpbiBjaHVua3M6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGNodW5rCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBjaHVua3MKICAgICAgICAgaWYgbmV3bGluZV9pbmRlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBfY3VycmVudF9pbmRlbnRfbGV2ZWwgLT0gMQogICAgICAgICAgICAgeWllbGQgJ1xuJyArIF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwKQEAgLTM0Nyw3ICszNTEsOCBAQAogICAgICAgICAgICAgIyBKYXZhU2NyaXB0IGlzIHdlYWtseSB0eXBlZCBmb3IgdGhlc2UsIHNvIGl0IG1ha2VzIHNlbnNlIHRvCiAgICAgICAgICAgICAjIGFsc28gYWxsb3cgdGhlbS4gIE1hbnkgZW5jb2RlcnMgc2VlbSB0byBkbyBzb21ldGhpbmcgbGlrZSB0aGlzLgogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGtleSwgZmxvYXQpOgotICAgICAgICAgICAgICAgIGtleSA9IF9mbG9hdHN0cihrZXkpCisgICAgICAgICAgICAgICAgIyBzZWUgY29tbWVudCBmb3IgaW50L2Zsb2F0IGluIF9tYWtlX2l0ZXJlbmNvZGUKKyAgICAgICAgICAgICAgICBrZXkgPSBfZmxvYXRzdHIoZmxvYXQoa2V5KSkKICAgICAgICAgICAgIGVsaWYga2V5IGlzIFRydWU6CiAgICAgICAgICAgICAgICAga2V5ID0gJ3RydWUnCiAgICAgICAgICAgICBlbGlmIGtleSBpcyBGYWxzZToKQEAgLTM1NSw3ICszNjAsOCBAQAogICAgICAgICAgICAgZWxpZiBrZXkgaXMgTm9uZToKICAgICAgICAgICAgICAgICBrZXkgPSAnbnVsbCcKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShrZXksIGludCk6Ci0gICAgICAgICAgICAgICAga2V5ID0gc3RyKGtleSkKKyAgICAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGZvciBpbnQvZmxvYXQgaW4gX21ha2VfaXRlcmVuY29kZQorICAgICAgICAgICAgICAgIGtleSA9IHN0cihpbnQoa2V5KSkKICAgICAgICAgICAgIGVsaWYgX3NraXBrZXlzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzc1LDkgKzM4MSwxMSBAQAogICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBGYWxzZToKICAgICAgICAgICAgICAgICB5aWVsZCAnZmFsc2UnCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgc3RyKHZhbHVlKQorICAgICAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgZm9yIGludC9mbG9hdCBpbiBfbWFrZV9pdGVyZW5jb2RlCisgICAgICAgICAgICAgICAgeWllbGQgc3RyKGludCh2YWx1ZSkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKLSAgICAgICAgICAgICAgICB5aWVsZCBfZmxvYXRzdHIodmFsdWUpCisgICAgICAgICAgICAgICAgIyBzZWUgY29tbWVudCBmb3IgaW50L2Zsb2F0IGluIF9tYWtlX2l0ZXJlbmNvZGUKKyAgICAgICAgICAgICAgICB5aWVsZCBfZmxvYXRzdHIoZmxvYXQodmFsdWUpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCwgdHVwbGUpKToKICAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gX2l0ZXJlbmNvZGVfbGlzdCh2YWx1ZSwgX2N1cnJlbnRfaW5kZW50X2xldmVsKQpAQCAtMzg1LDggKzM5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IF9pdGVyZW5jb2RlX2RpY3QodmFsdWUsIF9jdXJyZW50X2luZGVudF9sZXZlbCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBfaXRlcmVuY29kZSh2YWx1ZSwgX2N1cnJlbnRfaW5kZW50X2xldmVsKQotICAgICAgICAgICAgICAgIGZvciBjaHVuayBpbiBjaHVua3M6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGNodW5rCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBjaHVua3MKICAgICAgICAgaWYgbmV3bGluZV9pbmRlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBfY3VycmVudF9pbmRlbnRfbGV2ZWwgLT0gMQogICAgICAgICAgICAgeWllbGQgJ1xuJyArIF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwKQEAgLTQwNCwxNSArNDExLDE1IEBACiAgICAgICAgIGVsaWYgbyBpcyBGYWxzZToKICAgICAgICAgICAgIHlpZWxkICdmYWxzZScKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG8sIGludCk6Ci0gICAgICAgICAgICB5aWVsZCBzdHIobykKKyAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgZm9yIGludC9mbG9hdCBpbiBfbWFrZV9pdGVyZW5jb2RlCisgICAgICAgICAgICB5aWVsZCBzdHIoaW50KG8pKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgZmxvYXQpOgotICAgICAgICAgICAgeWllbGQgX2Zsb2F0c3RyKG8pCisgICAgICAgICAgICAjIHNlZSBjb21tZW50IGZvciBpbnQvZmxvYXQgaW4gX21ha2VfaXRlcmVuY29kZQorICAgICAgICAgICAgeWllbGQgX2Zsb2F0c3RyKGZsb2F0KG8pKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgKGxpc3QsIHR1cGxlKSk6Ci0gICAgICAgICAgICBmb3IgY2h1bmsgaW4gX2l0ZXJlbmNvZGVfbGlzdChvLCBfY3VycmVudF9pbmRlbnRfbGV2ZWwpOgotICAgICAgICAgICAgICAgIHlpZWxkIGNodW5rCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9pdGVyZW5jb2RlX2xpc3QobywgX2N1cnJlbnRfaW5kZW50X2xldmVsKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgZGljdCk6Ci0gICAgICAgICAgICBmb3IgY2h1bmsgaW4gX2l0ZXJlbmNvZGVfZGljdChvLCBfY3VycmVudF9pbmRlbnRfbGV2ZWwpOgotICAgICAgICAgICAgICAgIHlpZWxkIGNodW5rCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9pdGVyZW5jb2RlX2RpY3QobywgX2N1cnJlbnRfaW5kZW50X2xldmVsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgbWFya2VycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBtYXJrZXJpZCA9IGlkKG8pCkBAIC00MjAsOCArNDI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIikKICAgICAgICAgICAgICAgICBtYXJrZXJzW21hcmtlcmlkXSA9IG8KICAgICAgICAgICAgIG8gPSBfZGVmYXVsdChvKQotICAgICAgICAgICAgZm9yIGNodW5rIGluIF9pdGVyZW5jb2RlKG8sIF9jdXJyZW50X2luZGVudF9sZXZlbCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgY2h1bmsKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX2l0ZXJlbmNvZGUobywgX2N1cnJlbnRfaW5kZW50X2xldmVsKQogICAgICAgICAgICAgaWYgbWFya2VycyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBkZWwgbWFya2Vyc1ttYXJrZXJpZF0KICAgICByZXR1cm4gX2l0ZXJlbmNvZGUKZGlmZiAtLWdpdCBhL0xpYi9qc29uL3NjYW5uZXIucHkgYi9MaWIvanNvbi9zY2FubmVyLnB5CmluZGV4IDIzZWVmNjEuLjg2NDI2Y2QgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL3NjYW5uZXIucHkKKysrIGIvTGliL2pzb24vc2Nhbm5lci5weQpAQCAtMjksNyArMjksNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXh0Y2hhciA9IHN0cmluZ1tpZHhdCiAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbihpZHgpCiAKICAgICAgICAgaWYgbmV4dGNoYXIgPT0gJyInOgogICAgICAgICAgICAgcmV0dXJuIHBhcnNlX3N0cmluZyhzdHJpbmcsIGlkeCArIDEsIHN0cmljdCkKQEAgLTYwLDcgKzYwLDcgQEAKICAgICAgICAgZWxpZiBuZXh0Y2hhciA9PSAnLScgYW5kIHN0cmluZ1tpZHg6aWR4ICsgOV0gPT0gJy1JbmZpbml0eSc6CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VfY29uc3RhbnQoJy1JbmZpbml0eScpLCBpZHggKyA5CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKGlkeCkKIAogICAgIGRlZiBzY2FuX29uY2Uoc3RyaW5nLCBpZHgpOgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvanNvbi90b29sLnB5IGIvTGliL2pzb24vdG9vbC5weQppbmRleCBlY2Y5YzQ3Li43ZGI0NTI4IDEwMDY0NAotLS0gYS9MaWIvanNvbi90b29sLnB5CisrKyBiL0xpYi9qc29uL3Rvb2wucHkKQEAgLTMxLDggKzMxLDcgQEAKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoZSkKICAgICB3aXRoIG91dGZpbGU6Ci0gICAgICAgIGpzb24uZHVtcChvYmosIG91dGZpbGUsIHNvcnRfa2V5cz1UcnVlLAotICAgICAgICAgICAgICAgICAgaW5kZW50PTQsIHNlcGFyYXRvcnM9KCcsJywgJzogJykpCisgICAgICAgIGpzb24uZHVtcChvYmosIG91dGZpbGUsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkKICAgICAgICAgb3V0ZmlsZS53cml0ZSgnXG4nKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9rZXl3b3JkLnB5IGIvTGliL2tleXdvcmQucHkKaW5kZXggZGFkMzljYy4uNmUxZTg4MiAxMDA3NTUKLS0tIGEvTGliL2tleXdvcmQucHkKKysrIGIvTGliL2tleXdvcmQucHkKQEAgLTYwLDYgKzYwLDEyIEBACiAgICAgaWYgbGVuKGFyZ3MpID4gMTogb3B0ZmlsZSA9IGFyZ3NbMV0KICAgICBlbHNlOiBvcHRmaWxlID0gIkxpYi9rZXl3b3JkLnB5IgogCisgICAgIyBsb2FkIHRoZSBvdXRwdXQgc2tlbGV0b24gZnJvbSB0aGUgdGFyZ2V0LCB0YWtpbmcgY2FyZSB0byBwcmVzZXJ2ZSBpdHMKKyAgICAjIG5ld2xpbmUgY29udmVudGlvbi4KKyAgICB3aXRoIG9wZW4ob3B0ZmlsZSwgbmV3bGluZT0nJykgYXMgZnA6CisgICAgICAgIGZvcm1hdCA9IGZwLnJlYWRsaW5lcygpCisgICAgbmwgPSBmb3JtYXRbMF1bbGVuKGZvcm1hdFswXS5zdHJpcCgpKTpdIGlmIGZvcm1hdCBlbHNlICdcbicKKwogICAgICMgc2NhbiB0aGUgc291cmNlIGZpbGUgZm9yIGtleXdvcmRzCiAgICAgd2l0aCBvcGVuKGlwdGZpbGUpIGFzIGZwOgogICAgICAgICBzdHJwcm9nID0gcmUuY29tcGlsZSgnIihbXiJdKykiJykKQEAgLTY4LDI2ICs3NCwyMSBAQAogICAgICAgICAgICAgaWYgJ3sxLCAiJyBpbiBsaW5lOgogICAgICAgICAgICAgICAgIG1hdGNoID0gc3RycHJvZy5zZWFyY2gobGluZSkKICAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIgICAgICAgICciICsgbWF0Y2guZ3JvdXAoMSkgKyAiJyxcbiIpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAgICAgICAnIiArIG1hdGNoLmdyb3VwKDEpICsgIicsIiArIG5sKQogICAgIGxpbmVzLnNvcnQoKQogCi0gICAgIyBsb2FkIHRoZSBvdXRwdXQgc2tlbGV0b24gZnJvbSB0aGUgdGFyZ2V0Ci0gICAgd2l0aCBvcGVuKG9wdGZpbGUpIGFzIGZwOgotICAgICAgICBmb3JtYXQgPSBmcC5yZWFkbGluZXMoKQotCi0gICAgIyBpbnNlcnQgdGhlIGxpbmVzIG9mIGtleXdvcmRzCisgICAgIyBpbnNlcnQgdGhlIGxpbmVzIG9mIGtleXdvcmRzIGludG8gdGhlIHNrZWxldG9uCiAgICAgdHJ5OgotICAgICAgICBzdGFydCA9IGZvcm1hdC5pbmRleCgiIy0tc3RhcnQga2V5d29yZHMtLVxuIikgKyAxCi0gICAgICAgIGVuZCA9IGZvcm1hdC5pbmRleCgiIy0tZW5kIGtleXdvcmRzLS1cbiIpCisgICAgICAgIHN0YXJ0ID0gZm9ybWF0LmluZGV4KCIjLS1zdGFydCBrZXl3b3Jkcy0tIiArIG5sKSArIDEKKyAgICAgICAgZW5kID0gZm9ybWF0LmluZGV4KCIjLS1lbmQga2V5d29yZHMtLSIgKyBubCkKICAgICAgICAgZm9ybWF0W3N0YXJ0OmVuZF0gPSBsaW5lcwogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJ0YXJnZXQgZG9lcyBub3QgY29udGFpbiBmb3JtYXQgbWFya2Vyc1xuIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgICMgd3JpdGUgdGhlIG91dHB1dCBmaWxlCi0gICAgZnAgPSBvcGVuKG9wdGZpbGUsICd3JykKLSAgICBmcC53cml0ZSgnJy5qb2luKGZvcm1hdCkpCi0gICAgZnAuY2xvc2UoKQorICAgIHdpdGggb3BlbihvcHRmaWxlLCAndycsIG5ld2xpbmU9JycpIGFzIGZwOgorICAgICAgICBmcC53cml0ZWxpbmVzKGZvcm1hdCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2J0bV91dGlscy5weSBiL0xpYi9saWIydG8zL2J0bV91dGlscy5weQppbmRleCAyMjc2ZGM5Li4zMzk3NTBlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9idG1fdXRpbHMucHkKKysrIGIvTGliL2xpYjJ0bzMvYnRtX3V0aWxzLnB5CkBAIC05Niw4ICs5Niw3IEBACiAgICAgZGVmIGxlYXZlcyhzZWxmKToKICAgICAgICAgIkdlbmVyYXRvciB0aGF0IHJldHVybnMgdGhlIGxlYXZlcyBvZiB0aGUgdHJlZSIKICAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuY2hpbGRyZW46Ci0gICAgICAgICAgICBmb3IgeCBpbiBjaGlsZC5sZWF2ZXMoKToKLSAgICAgICAgICAgICAgICB5aWVsZCB4CisgICAgICAgICAgICB5aWVsZCBmcm9tIGNoaWxkLmxlYXZlcygpCiAgICAgICAgIGlmIG5vdCBzZWxmLmNoaWxkcmVuOgogICAgICAgICAgICAgeWllbGQgc2VsZgogCkBAIC0yNzcsNyArMjc2LDYgQEAKICAgICBzdWItaXRlcmFibGVzIiIiCiAgICAgZm9yIHggaW4gc2VxdWVuY2U6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoeCwgKGxpc3QsIHR1cGxlKSk6Ci0gICAgICAgICAgICBmb3IgeSBpbiByZWNfdGVzdCh4LCB0ZXN0X2Z1bmMpOgotICAgICAgICAgICAgICAgIHlpZWxkIHkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmVjX3Rlc3QoeCwgdGVzdF9mdW5jKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgeWllbGQgdGVzdF9mdW5jKHgpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQppbmRleCA2MGQyMTlmLi42ZTI1OWM1IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKQEAgLTEyOSw2ICsxMjksMjkgQEAKICAgICBpbXAgPSBOb2RlKHN5bXMuaW1wb3J0X2Zyb20sIGNoaWxkcmVuKQogICAgIHJldHVybiBpbXAKIAorZGVmIEltcG9ydEFuZENhbGwobm9kZSwgcmVzdWx0cywgbmFtZXMpOgorICAgICIiIlJldHVybnMgYW4gaW1wb3J0IHN0YXRlbWVudCBhbmQgY2FsbHMgYSBtZXRob2QKKyAgICBvZiB0aGUgbW9kdWxlOgorCisgICAgaW1wb3J0IG1vZHVsZQorICAgIG1vZHVsZS5uYW1lKCkiIiIKKyAgICBvYmogPSByZXN1bHRzWyJvYmoiXS5jbG9uZSgpCisgICAgaWYgb2JqLnR5cGUgPT0gc3ltcy5hcmdsaXN0OgorICAgICAgICBuZXdhcmdsaXN0ID0gb2JqLmNsb25lKCkKKyAgICBlbHNlOgorICAgICAgICBuZXdhcmdsaXN0ID0gTm9kZShzeW1zLmFyZ2xpc3QsIFtvYmouY2xvbmUoKV0pCisgICAgYWZ0ZXIgPSByZXN1bHRzWyJhZnRlciJdCisgICAgaWYgYWZ0ZXI6CisgICAgICAgIGFmdGVyID0gW24uY2xvbmUoKSBmb3IgbiBpbiBhZnRlcl0KKyAgICBuZXcgPSBOb2RlKHN5bXMucG93ZXIsCisgICAgICAgICAgICAgICBBdHRyKE5hbWUobmFtZXNbMF0pLCBOYW1lKG5hbWVzWzFdKSkgKworICAgICAgICAgICAgICAgW05vZGUoc3ltcy50cmFpbGVyLAorICAgICAgICAgICAgICAgICAgICAgW3Jlc3VsdHNbImxwYXIiXS5jbG9uZSgpLAorICAgICAgICAgICAgICAgICAgICAgIG5ld2FyZ2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1sicnBhciJdLmNsb25lKCldKV0gKyBhZnRlcikKKyAgICBuZXcucHJlZml4ID0gbm9kZS5wcmVmaXgKKyAgICByZXR1cm4gbmV3CisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBEZXRlcm1pbmUgd2hldGhlciBhIG5vZGUgcmVwcmVzZW50cyBhIGdpdmVuIGxpdGVyYWwKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9pbnRlcm4ucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfaW50ZXJuLnB5CmluZGV4IDZiZTExY2QuLmZiMjk3M2MgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9pbnRlcm4ucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ludGVybi5weQpAQCAtNiw5ICs2LDggQEAKIGludGVybihzKSAtPiBzeXMuaW50ZXJuKHMpIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQXR0ciwgdG91Y2hfaW1wb3J0Citmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgSW1wb3J0QW5kQ2FsbCwgdG91Y2hfaW1wb3J0CiAKIAogY2xhc3MgRml4SW50ZXJuKGZpeGVyX2Jhc2UuQmFzZUZpeCk6CkBAIC0yNiwyMSArMjUsNyBAQAogICAgICIiIgogCiAgICAgZGVmIHRyYW5zZm9ybShzZWxmLCBub2RlLCByZXN1bHRzKToKLSAgICAgICAgc3ltcyA9IHNlbGYuc3ltcwotICAgICAgICBvYmogPSByZXN1bHRzWyJvYmoiXS5jbG9uZSgpCi0gICAgICAgIGlmIG9iai50eXBlID09IHN5bXMuYXJnbGlzdDoKLSAgICAgICAgICAgIG5ld2FyZ2xpc3QgPSBvYmouY2xvbmUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV3YXJnbGlzdCA9IHB5dHJlZS5Ob2RlKHN5bXMuYXJnbGlzdCwgW29iai5jbG9uZSgpXSkKLSAgICAgICAgYWZ0ZXIgPSByZXN1bHRzWyJhZnRlciJdCi0gICAgICAgIGlmIGFmdGVyOgotICAgICAgICAgICAgYWZ0ZXIgPSBbbi5jbG9uZSgpIGZvciBuIGluIGFmdGVyXQotICAgICAgICBuZXcgPSBweXRyZWUuTm9kZShzeW1zLnBvd2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyKE5hbWUoInN5cyIpLCBOYW1lKCJpbnRlcm4iKSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICBbcHl0cmVlLk5vZGUoc3ltcy50cmFpbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Jlc3VsdHNbImxwYXIiXS5jbG9uZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2FyZ2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1sicnBhciJdLmNsb25lKCldKV0gKyBhZnRlcikKLSAgICAgICAgbmV3LnByZWZpeCA9IG5vZGUucHJlZml4CisgICAgICAgIG5hbWVzID0gKCdzeXMnLCAnaW50ZXJuJykKKyAgICAgICAgbmV3ID0gSW1wb3J0QW5kQ2FsbChub2RlLCByZXN1bHRzLCBuYW1lcykKICAgICAgICAgdG91Y2hfaW1wb3J0KE5vbmUsICdzeXMnLCBub2RlKQogICAgICAgICByZXR1cm4gbmV3CmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfcmVsb2FkLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3JlbG9hZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU1MzU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3JlbG9hZC5weQpAQCAtMCwwICsxLDI4IEBACisiIiJGaXhlciBmb3IgcmVsb2FkKCkuCisKK3JlbG9hZChzKSAtPiBpbXAucmVsb2FkKHMpIiIiCisKKyMgTG9jYWwgaW1wb3J0cworZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IEltcG9ydEFuZENhbGwsIHRvdWNoX2ltcG9ydAorCisKK2NsYXNzIEZpeFJlbG9hZChmaXhlcl9iYXNlLkJhc2VGaXgpOgorICAgIEJNX2NvbXBhdGlibGUgPSBUcnVlCisgICAgb3JkZXIgPSAicHJlIgorCisgICAgUEFUVEVSTiA9ICIiIgorICAgIHBvd2VyPCAncmVsb2FkJworICAgICAgICAgICB0cmFpbGVyPCBscGFyPScoJworICAgICAgICAgICAgICAgICAgICAoIG5vdChhcmdsaXN0IHwgYXJndW1lbnQ8YW55ICc9JyBhbnk+KSBvYmo9YW55CisgICAgICAgICAgICAgICAgICAgICAgfCBvYmo9YXJnbGlzdDwobm90IGFyZ3VtZW50PGFueSAnPScgYW55PikgYW55ICcsJz4gKQorICAgICAgICAgICAgICAgICAgICBycGFyPScpJyA+CisgICAgICAgICAgIGFmdGVyPWFueSoKKyAgICA+CisgICAgIiIiCisKKyAgICBkZWYgdHJhbnNmb3JtKHNlbGYsIG5vZGUsIHJlc3VsdHMpOgorICAgICAgICBuYW1lcyA9ICgnaW1wJywgJ3JlbG9hZCcpCisgICAgICAgIG5ldyA9IEltcG9ydEFuZENhbGwobm9kZSwgcmVzdWx0cywgbmFtZXMpCisgICAgICAgIHRvdWNoX2ltcG9ydChOb25lLCAnaW1wJywgbm9kZSkKKyAgICAgICAgcmV0dXJuIG5ldwpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvbWFpbi5weSBiL0xpYi9saWIydG8zL21haW4ucHkKaW5kZXggZjljYzE4Yi4uOTNiYWU5MCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvbWFpbi5weQorKysgYi9MaWIvbGliMnRvMy9tYWluLnB5CkBAIC05MCwxMSArOTAsMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhiYWNrdXApOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGJhY2t1cCkKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dfbWVzc2FnZSgiQ2FuJ3QgcmVtb3ZlIGJhY2t1cCAlcyIsIGJhY2t1cCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIGJhY2t1cCkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnI6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dfbWVzc2FnZSgiQ2FuJ3QgcmVuYW1lICVzIHRvICVzIiwgZmlsZW5hbWUsIGJhY2t1cCkKICAgICAgICAgIyBBY3R1YWxseSB3cml0ZSB0aGUgbmV3IGZpbGUKICAgICAgICAgd3JpdGUgPSBzdXBlcihTdGRvdXRSZWZhY3RvcmluZ1Rvb2wsIHNlbGYpLndyaXRlX2ZpbGUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3BnZW4yL2NvbnYucHkgYi9MaWIvbGliMnRvMy9wZ2VuMi9jb252LnB5CmluZGV4IGJmNDk3NjIuLmVkMGNhYzUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3BnZW4yL2NvbnYucHkKKysrIGIvTGliL2xpYjJ0bzMvcGdlbjIvY29udi5weQpAQCAtNjAsNyArNjAsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgcHJpbnQoIkNhbid0IG9wZW4gJXM6ICVzIiAlIChmaWxlbmFtZSwgZXJyKSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLnN5bWJvbDJudW1iZXIgPSB7fQpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gb3BlbihmaWxlbmFtZSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBwcmludCgiQ2FuJ3Qgb3BlbiAlczogJXMiICUgKGZpbGVuYW1lLCBlcnIpKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICMgVGhlIGNvZGUgYmVsb3cgZXNzZW50aWFsbHkgdXNlcyBmJ3MgaXRlcmF0b3ItbmVzcyEKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3BnZW4yL2RyaXZlci5weSBiL0xpYi9saWIydG8zL3BnZW4yL2RyaXZlci5weQppbmRleCA0YzYxMWM2Li4zY2NjNjlkIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9wZ2VuMi9kcml2ZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvcGdlbjIvZHJpdmVyLnB5CkBAIC0xMjMsNyArMTIzLDcgQEAKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJXcml0aW5nIGdyYW1tYXIgdGFibGVzIHRvICVzIiwgZ3ApCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZy5kdW1wKGdwKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIldyaXRpbmcgZmFpbGVkOiIrc3RyKGUpKQogICAgIGVsc2U6CiAgICAgICAgIGcgPSBncmFtbWFyLkdyYW1tYXIoKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcGdlbjIvZ3JhbW1hci5weSBiL0xpYi9saWIydG8zL3BnZW4yL2dyYW1tYXIucHkKaW5kZXggMTRjNWY3MC4uN2YxYzU2NCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcGdlbjIvZ3JhbW1hci5weQorKysgYi9MaWIvbGliMnRvMy9wZ2VuMi9ncmFtbWFyLnB5CkBAIC04NiwxNSArODYsMTMgQEAKIAogICAgIGRlZiBkdW1wKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIiIiRHVtcCB0aGUgZ3JhbW1hciB0YWJsZXMgdG8gYSBwaWNrbGUgZmlsZS4iIiIKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCi0gICAgICAgIHBpY2tsZS5kdW1wKHNlbGYuX19kaWN0X18sIGYsIDIpCi0gICAgICAgIGYuY2xvc2UoKQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBwaWNrbGUuZHVtcChzZWxmLl9fZGljdF9fLCBmLCAyKQogCiAgICAgZGVmIGxvYWQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJMb2FkIHRoZSBncmFtbWFyIHRhYmxlcyBmcm9tIGEgcGlja2xlIGZpbGUuIiIiCi0gICAgICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAicmIiKQotICAgICAgICBkID0gcGlja2xlLmxvYWQoZikKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZChmKQogICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShkKQogCiAgICAgZGVmIGNvcHkoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9weXRyZWUucHkgYi9MaWIvbGliMnRvMy9weXRyZWUucHkKaW5kZXggMTdjYmYwYS4uYzRhMWJlMyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3B5dHJlZS5weQpAQCAtMTk0LDggKzE5NCw3IEBACiAKICAgICBkZWYgbGVhdmVzKHNlbGYpOgogICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jaGlsZHJlbjoKLSAgICAgICAgICAgIGZvciB4IGluIGNoaWxkLmxlYXZlcygpOgotICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgIHlpZWxkIGZyb20gY2hpbGQubGVhdmVzKCkKIAogICAgIGRlZiBkZXB0aChzZWxmKToKICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgTm9uZToKQEAgLTI3NCwxNiArMjczLDE0IEBACiAgICAgZGVmIHBvc3Rfb3JkZXIoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHBvc3Qtb3JkZXIgaXRlcmF0b3IgZm9yIHRoZSB0cmVlLiIiIgogICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jaGlsZHJlbjoKLSAgICAgICAgICAgIGZvciBub2RlIGluIGNoaWxkLnBvc3Rfb3JkZXIoKToKLSAgICAgICAgICAgICAgICB5aWVsZCBub2RlCisgICAgICAgICAgICB5aWVsZCBmcm9tIGNoaWxkLnBvc3Rfb3JkZXIoKQogICAgICAgICB5aWVsZCBzZWxmCiAKICAgICBkZWYgcHJlX29yZGVyKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBwcmUtb3JkZXIgaXRlcmF0b3IgZm9yIHRoZSB0cmVlLiIiIgogICAgICAgICB5aWVsZCBzZWxmCiAgICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLmNoaWxkcmVuOgotICAgICAgICAgICAgZm9yIG5vZGUgaW4gY2hpbGQucHJlX29yZGVyKCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgbm9kZQorICAgICAgICAgICAgeWllbGQgZnJvbSBjaGlsZC5wcmVfb3JkZXIoKQogCiAgICAgZGVmIF9wcmVmaXhfZ2V0dGVyKHNlbGYpOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKaW5kZXggMjAxZTE5My4uODEwMDMxNyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKQEAgLTMyNiw3ICszMjYsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICJyYiIpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5sb2dfZXJyb3IoIkNhbid0IG9wZW4gJXM6ICVzIiwgZmlsZW5hbWUsIGVycikKICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCiAgICAgICAgIHRyeToKQEAgLTUzNCwxMiArNTM0LDEyIEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX29wZW5fd2l0aF9lbmNvZGluZyhmaWxlbmFtZSwgInciLCBlbmNvZGluZz1lbmNvZGluZykKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGVycjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5sb2dfZXJyb3IoIkNhbid0IGNyZWF0ZSAlczogJXMiLCBmaWxlbmFtZSwgZXJyKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYud3JpdGUoX3RvX3N5c3RlbV9uZXdsaW5lcyhuZXdfdGV4dCkpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnI6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYubG9nX2Vycm9yKCJDYW4ndCB3cml0ZSAlczogJXMiLCBmaWxlbmFtZSwgZXJyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9weXRyZWVfaWRlbXBvdGVuY3kucHkgYi9MaWIvbGliMnRvMy90ZXN0cy9weXRyZWVfaWRlbXBvdGVuY3kucHkKaW5kZXggYTAyYmJmZS4uNzMxYzQwMyAxMDA3NTUKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvcHl0cmVlX2lkZW1wb3RlbmN5LnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3B5dHJlZV9pZGVtcG90ZW5jeS5weQpAQCAtNTMsNyArNTMsNyBAQAogICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXIpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBwcmludCgiU2Nhbm5pbmciLCBkaXIsICIuLi4iLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQppbmRleCA5MTRiM2JmLi5kNzY1OWZhIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQpAQCAtMjgyLDYgKzI4Miw2NSBAQAogICAgICAgICBiID0gIiIiZigqYXJncywgKiprd2RzKSIiIgogICAgICAgICBzZWxmLmNoZWNrKGEsIGIpCiAKK2NsYXNzIFRlc3RfcmVsb2FkKEZpeGVyVGVzdENhc2UpOgorICAgIGZpeGVyID0gInJlbG9hZCIKKworICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICBiID0gIiIicmVsb2FkKGEpIiIiCisgICAgICAgIGEgPSAiIiJpbXBvcnQgaW1wXG5pbXAucmVsb2FkKGEpIiIiCisgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnQoc2VsZik6CisgICAgICAgIGIgPSAiIiJyZWxvYWQoIGEgKSAjIGNvbW1lbnQiIiIKKyAgICAgICAgYSA9ICIiImltcG9ydCBpbXBcbmltcC5yZWxvYWQoIGEgKSAjIGNvbW1lbnQiIiIKKyAgICAgICAgc2VsZi5jaGVjayhiLCBhKQorCisgICAgICAgICMgUEVQIDggY29tbWVudHMKKyAgICAgICAgYiA9ICIiInJlbG9hZCggYSApICAjIGNvbW1lbnQiIiIKKyAgICAgICAgYSA9ICIiImltcG9ydCBpbXBcbmltcC5yZWxvYWQoIGEgKSAgIyBjb21tZW50IiIiCisgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKKworICAgIGRlZiB0ZXN0X3NwYWNlKHNlbGYpOgorICAgICAgICBiID0gIiIicmVsb2FkKCBhICkiIiIKKyAgICAgICAgYSA9ICIiImltcG9ydCBpbXBcbmltcC5yZWxvYWQoIGEgKSIiIgorICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCisKKyAgICAgICAgYiA9ICIiInJlbG9hZCggYSkiIiIKKyAgICAgICAgYSA9ICIiImltcG9ydCBpbXBcbmltcC5yZWxvYWQoIGEpIiIiCisgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKKworICAgICAgICBiID0gIiIicmVsb2FkKGEgKSIiIgorICAgICAgICBhID0gIiIiaW1wb3J0IGltcFxuaW1wLnJlbG9hZChhICkiIiIKKyAgICAgICAgc2VsZi5jaGVjayhiLCBhKQorCisgICAgZGVmIHRlc3RfdW5jaGFuZ2VkKHNlbGYpOgorICAgICAgICBzID0gIiIicmVsb2FkKGE9MSkiIiIKKyAgICAgICAgc2VsZi51bmNoYW5nZWQocykKKworICAgICAgICBzID0gIiIicmVsb2FkKGYsIGcpIiIiCisgICAgICAgIHNlbGYudW5jaGFuZ2VkKHMpCisKKyAgICAgICAgcyA9ICIiInJlbG9hZChmLCAqaCkiIiIKKyAgICAgICAgc2VsZi51bmNoYW5nZWQocykKKworICAgICAgICBzID0gIiIicmVsb2FkKGYsICpoLCAqKmkpIiIiCisgICAgICAgIHNlbGYudW5jaGFuZ2VkKHMpCisKKyAgICAgICAgcyA9ICIiInJlbG9hZChmLCAqKmkpIiIiCisgICAgICAgIHNlbGYudW5jaGFuZ2VkKHMpCisKKyAgICAgICAgcyA9ICIiInJlbG9hZCgqaCwgKippKSIiIgorICAgICAgICBzZWxmLnVuY2hhbmdlZChzKQorCisgICAgICAgIHMgPSAiIiJyZWxvYWQoKmgpIiIiCisgICAgICAgIHNlbGYudW5jaGFuZ2VkKHMpCisKKyAgICAgICAgcyA9ICIiInJlbG9hZCgqKmkpIiIiCisgICAgICAgIHNlbGYudW5jaGFuZ2VkKHMpCisKKyAgICAgICAgcyA9ICIiInJlbG9hZCgpIiIiCisgICAgICAgIHNlbGYudW5jaGFuZ2VkKHMpCisKIGNsYXNzIFRlc3RfaW50ZXJuKEZpeGVyVGVzdENhc2UpOgogICAgIGZpeGVyID0gImludGVybiIKIApkaWZmIC0tZ2l0IGEvTGliL2xpbmVjYWNoZS5weSBiL0xpYi9saW5lY2FjaGUucHkKaW5kZXggYzNmMmMzZi4uMDJhOWViNSAxMDA2NDQKLS0tIGEvTGliL2xpbmVjYWNoZS5weQorKysgYi9MaWIvbGluZWNhY2hlLnB5CkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgICAgICBjb250aW51ZSAgICMgbm8tb3AgZm9yIGZpbGVzIGxvYWRlZCB2aWEgYSBfX2xvYWRlcl9fCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN0YXQgPSBvcy5zdGF0KGZ1bGxuYW1lKQotICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgc2l6ZSAhPSBzdGF0LnN0X3NpemUgb3IgbXRpbWUgIT0gc3RhdC5zdF9tdGltZToKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgICAgIGlmIG5hbWUgYW5kIGdldF9zb3VyY2U6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZ2V0X3NvdXJjZShuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIElPRXJyb3IpOgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgpAQCAtMTE4LDE0ICsxMTgsMTQgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzdGF0ID0gb3Muc3RhdChmdWxsbmFtZSkKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgdHJ5OgogICAgICAgICB3aXRoIHRva2VuaXplLm9wZW4oZnVsbG5hbWUpIGFzIGZwOgogICAgICAgICAgICAgbGluZXMgPSBmcC5yZWFkbGluZXMoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gW10KICAgICBpZiBsaW5lcyBhbmQgbm90IGxpbmVzWy0xXS5lbmRzd2l0aCgnXG4nKToKICAgICAgICAgbGluZXNbLTFdICs9ICdcbicKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5IGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKaW5kZXggZmEwM2Y3OC4uM2VjY2U3MyAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKKysrIGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvYmplY3QgZm9yIHRoZSBjYWxsZXIncyBzdGFjayBmcmFtZS4iIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAogIyBfc3JjZmlsZSBpcyBvbmx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBzeXMuX2dldGZyYW1lKCkuCkBAIC0xMjMsMjAgKzEyMywyMiBAQAogREVCVUcgPSAxMAogTk9UU0VUID0gMAogCi1fbGV2ZWxOYW1lcyA9IHsKLSAgICBDUklUSUNBTCA6ICdDUklUSUNBTCcsCi0gICAgRVJST1IgOiAnRVJST1InLAotICAgIFdBUk5JTkcgOiAnV0FSTklORycsCi0gICAgSU5GTyA6ICdJTkZPJywKLSAgICBERUJVRyA6ICdERUJVRycsCi0gICAgTk9UU0VUIDogJ05PVFNFVCcsCi0gICAgJ0NSSVRJQ0FMJyA6IENSSVRJQ0FMLAotICAgICdFUlJPUicgOiBFUlJPUiwKLSAgICAnV0FSTicgOiBXQVJOSU5HLAotICAgICdXQVJOSU5HJyA6IFdBUk5JTkcsCi0gICAgJ0lORk8nIDogSU5GTywKLSAgICAnREVCVUcnIDogREVCVUcsCi0gICAgJ05PVFNFVCcgOiBOT1RTRVQsCitfbGV2ZWxUb05hbWUgPSB7CisgICAgQ1JJVElDQUw6ICdDUklUSUNBTCcsCisgICAgRVJST1I6ICdFUlJPUicsCisgICAgV0FSTklORzogJ1dBUk5JTkcnLAorICAgIElORk86ICdJTkZPJywKKyAgICBERUJVRzogJ0RFQlVHJywKKyAgICBOT1RTRVQ6ICdOT1RTRVQnLAorfQorX25hbWVUb0xldmVsID0geworICAgICdDUklUSUNBTCc6IENSSVRJQ0FMLAorICAgICdFUlJPUic6IEVSUk9SLAorICAgICdXQVJOJzogV0FSTklORywKKyAgICAnV0FSTklORyc6IFdBUk5JTkcsCisgICAgJ0lORk8nOiBJTkZPLAorICAgICdERUJVRyc6IERFQlVHLAorICAgICdOT1RTRVQnOiBOT1RTRVQsCiB9CiAKIGRlZiBnZXRMZXZlbE5hbWUobGV2ZWwpOgpAQCAtMTUzLDcgKzE1NSw3IEBACiAKICAgICBPdGhlcndpc2UsIHRoZSBzdHJpbmcgIkxldmVsICVzIiAlIGxldmVsIGlzIHJldHVybmVkLgogICAgICIiIgotICAgIHJldHVybiBfbGV2ZWxOYW1lcy5nZXQobGV2ZWwsICgiTGV2ZWwgJXMiICUgbGV2ZWwpKQorICAgIHJldHVybiBfbGV2ZWxUb05hbWUuZ2V0KGxldmVsLCAoIkxldmVsICVzIiAlIGxldmVsKSkKIAogZGVmIGFkZExldmVsTmFtZShsZXZlbCwgbGV2ZWxOYW1lKToKICAgICAiIiIKQEAgLTE2Myw4ICsxNjUsOCBAQAogICAgICIiIgogICAgIF9hY3F1aXJlTG9jaygpCiAgICAgdHJ5OiAgICAjdW5saWtlbHkgdG8gY2F1c2UgYW4gZXhjZXB0aW9uLCBidXQgeW91IG5ldmVyIGtub3cuLi4KLSAgICAgICAgX2xldmVsTmFtZXNbbGV2ZWxdID0gbGV2ZWxOYW1lCi0gICAgICAgIF9sZXZlbE5hbWVzW2xldmVsTmFtZV0gPSBsZXZlbAorICAgICAgICBfbGV2ZWxUb05hbWVbbGV2ZWxdID0gbGV2ZWxOYW1lCisgICAgICAgIF9uYW1lVG9MZXZlbFtsZXZlbE5hbWVdID0gbGV2ZWwKICAgICBmaW5hbGx5OgogICAgICAgICBfcmVsZWFzZUxvY2soKQogCkBAIC0xNzIsOSArMTc0LDkgQEAKICAgICBpZiBpc2luc3RhbmNlKGxldmVsLCBpbnQpOgogICAgICAgICBydiA9IGxldmVsCiAgICAgZWxpZiBzdHIobGV2ZWwpID09IGxldmVsOgotICAgICAgICBpZiBsZXZlbCBub3QgaW4gX2xldmVsTmFtZXM6CisgICAgICAgIGlmIGxldmVsIG5vdCBpbiBfbmFtZVRvTGV2ZWw6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmtub3duIGxldmVsOiAlciIgJSBsZXZlbCkKLSAgICAgICAgcnYgPSBfbGV2ZWxOYW1lc1tsZXZlbF0KKyAgICAgICAgcnYgPSBfbmFtZVRvTGV2ZWxbbGV2ZWxdCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJMZXZlbCBub3QgYW4gaW50ZWdlciBvciBhIHZhbGlkIHN0cmluZzogJXIiICUgbGV2ZWwpCiAgICAgcmV0dXJuIHJ2CkBAIC04ODAsMTYgKzg4MiwzMCBAQAogICAgICAgICBUaGUgcmVjb3JkIHdoaWNoIHdhcyBiZWluZyBwcm9jZXNzZWQgaXMgcGFzc2VkIGluIHRvIHRoaXMgbWV0aG9kLgogICAgICAgICAiIiIKICAgICAgICAgaWYgcmFpc2VFeGNlcHRpb25zIGFuZCBzeXMuc3RkZXJyOiAgIyBzZWUgaXNzdWUgMTM4MDcKLSAgICAgICAgICAgIGVpID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIHQsIHYsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKGVpWzBdLCBlaVsxXSwgZWlbMl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBzeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0xvZ2dlZCBmcm9tIGZpbGUgJXMsIGxpbmUgJXNcbicgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmlsZW5hbWUsIHJlY29yZC5saW5lbm8pKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnLS0tIExvZ2dpbmcgZXJyb3IgLS0tXG4nKQorICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24odCwgdiwgdGIsIE5vbmUsIHN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ2FsbCBzdGFjazpcbicpCisgICAgICAgICAgICAgICAgIyBXYWxrIHRoZSBzdGFjayBmcmFtZSB1cCB1bnRpbCB3ZSdyZSBvdXQgb2YgbG9nZ2luZywKKyAgICAgICAgICAgICAgICAjIHNvIGFzIHRvIHByaW50IHRoZSBjYWxsaW5nIGNvbnRleHQuCisgICAgICAgICAgICAgICAgZnJhbWUgPSB0Yi50Yl9mcmFtZQorICAgICAgICAgICAgICAgIHdoaWxlIChmcmFtZSBhbmQgb3MucGF0aC5kaXJuYW1lKGZyYW1lLmZfY29kZS5jb19maWxlbmFtZSkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgX19wYXRoX19bMF0pOgorICAgICAgICAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLmZfYmFjaworICAgICAgICAgICAgICAgIGlmIGZyYW1lOgorICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfc3RhY2soZnJhbWUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIGNvdWxkbid0IGZpbmQgdGhlIHJpZ2h0IHN0YWNrIGZyYW1lLCBmb3Igc29tZSByZWFzb24KKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnTG9nZ2VkIGZyb20gZmlsZSAlcywgbGluZSAlc1xuJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmlsZW5hbWUsIHJlY29yZC5saW5lbm8pKQorICAgICAgICAgICAgICAgICMgSXNzdWUgMTg2NzE6IG91dHB1dCBsb2dnaW5nIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ01lc3NhZ2U6ICVyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJndW1lbnRzOiAlc1xuJyAlIChyZWNvcmQubXNnLCByZWNvcmQuYXJncykpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBwYXNzICAgICMgc2VlIGlzc3VlIDU5NzEKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIGVpCisgICAgICAgICAgICAgICAgZGVsIHQsIHYsIHRiCiAKIGNsYXNzIFN0cmVhbUhhbmRsZXIoSGFuZGxlcik6CiAgICAgIiIiCkBAIC05MzksOSArOTU1LDcgQEAKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShtc2cpCiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoc2VsZi50ZXJtaW5hdG9yKQogICAgICAgICAgICAgc2VsZi5mbHVzaCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKIGNsYXNzIEZpbGVIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgpAQCAtMTgzMCw3ICsxODQ0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaC5hY3F1aXJlKCkKICAgICAgICAgICAgICAgICAgICAgaC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZXJyb3JzIHdoaWNoIG1pZ2h0IGJlIGNhdXNlZAogICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaGFuZGxlcnMgaGF2ZSBiZWVuIGNsb3NlZCBidXQKICAgICAgICAgICAgICAgICAgICAgIyByZWZlcmVuY2VzIHRvIHRoZW0gYXJlIHN0aWxsIGFyb3VuZCBhdApAQCAtMTgzOCw3ICsxODUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIGgucmVsZWFzZSgpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0OiAjIGlnbm9yZSBldmVyeXRoaW5nLCBhcyB3ZSdyZSBzaHV0dGluZyBkb3duCiAgICAgICAgICAgICBpZiByYWlzZUV4Y2VwdGlvbnM6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICNlbHNlLCBzd2FsbG93CmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9jb25maWcucHkgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKaW5kZXggMTg4MDYxNC4uYjg4MmE2MiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5CisrKyBiL0xpYi9sb2dnaW5nL2NvbmZpZy5weQpAQCAtNjEsMTEgKzYxLDE0IEBACiAgICAgIiIiCiAgICAgaW1wb3J0IGNvbmZpZ3BhcnNlcgogCi0gICAgY3AgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKGRlZmF1bHRzKQotICAgIGlmIGhhc2F0dHIoZm5hbWUsICdyZWFkbGluZScpOgotICAgICAgICBjcC5yZWFkX2ZpbGUoZm5hbWUpCisgICAgaWYgaXNpbnN0YW5jZShmbmFtZSwgY29uZmlncGFyc2VyLlJhd0NvbmZpZ1BhcnNlcik6CisgICAgICAgIGNwID0gZm5hbWUKICAgICBlbHNlOgotICAgICAgICBjcC5yZWFkKGZuYW1lKQorICAgICAgICBjcCA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoZGVmYXVsdHMpCisgICAgICAgIGlmIGhhc2F0dHIoZm5hbWUsICdyZWFkbGluZScpOgorICAgICAgICAgICAgY3AucmVhZF9maWxlKGZuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY3AucmVhZChmbmFtZSkKIAogICAgIGZvcm1hdHRlcnMgPSBfY3JlYXRlX2Zvcm1hdHRlcnMoY3ApCiAKQEAgLTE0MSw3ICsxNDQsNyBAQAogICAgICAgICBoID0ga2xhc3MoKmFyZ3MpCiAgICAgICAgIGlmICJsZXZlbCIgaW4gc2VjdGlvbjoKICAgICAgICAgICAgIGxldmVsID0gc2VjdGlvblsibGV2ZWwiXQotICAgICAgICAgICAgaC5zZXRMZXZlbChsb2dnaW5nLl9sZXZlbE5hbWVzW2xldmVsXSkKKyAgICAgICAgICAgIGguc2V0TGV2ZWwobGV2ZWwpCiAgICAgICAgIGlmIGxlbihmbXQpOgogICAgICAgICAgICAgaC5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyc1tmbXRdKQogICAgICAgICBpZiBpc3N1YmNsYXNzKGtsYXNzLCBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIpOgpAQCAtMTg4LDcgKzE5MSw3IEBACiAgICAgbG9nID0gcm9vdAogICAgIGlmICJsZXZlbCIgaW4gc2VjdGlvbjoKICAgICAgICAgbGV2ZWwgPSBzZWN0aW9uWyJsZXZlbCJdCi0gICAgICAgIGxvZy5zZXRMZXZlbChsb2dnaW5nLl9sZXZlbE5hbWVzW2xldmVsXSkKKyAgICAgICAgbG9nLnNldExldmVsKGxldmVsKQogICAgIGZvciBoIGluIHJvb3QuaGFuZGxlcnNbOl06CiAgICAgICAgIHJvb3QucmVtb3ZlSGFuZGxlcihoKQogICAgIGhsaXN0ID0gc2VjdGlvblsiaGFuZGxlcnMiXQpAQCAtMjM0LDcgKzIzNyw3IEBACiAgICAgICAgICAgICBleGlzdGluZy5yZW1vdmUocW4pCiAgICAgICAgIGlmICJsZXZlbCIgaW4gc2VjdGlvbjoKICAgICAgICAgICAgIGxldmVsID0gc2VjdGlvblsibGV2ZWwiXQotICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuX2xldmVsTmFtZXNbbGV2ZWxdKQorICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxldmVsKQogICAgICAgICBmb3IgaCBpbiBsb2dnZXIuaGFuZGxlcnNbOl06CiAgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoKQogICAgICAgICBsb2dnZXIucHJvcGFnYXRlID0gcHJvcGFnYXRlCkBAIC03MjksNiArNzMyLDcgQEAKICAgICAgICAgICAgICAgICAnYWRkcmVzcycgaW4gY29uZmlnOgogICAgICAgICAgICAgICAgIGNvbmZpZ1snYWRkcmVzcyddID0gc2VsZi5hc190dXBsZShjb25maWdbJ2FkZHJlc3MnXSkKICAgICAgICAgICAgIGZhY3RvcnkgPSBrbGFzcworICAgICAgICBwcm9wcyA9IGNvbmZpZy5wb3AoJy4nLCBOb25lKQogICAgICAgICBrd2FyZ3MgPSBkaWN0KFsoaywgY29uZmlnW2tdKSBmb3IgayBpbiBjb25maWcgaWYgdmFsaWRfaWRlbnQoayldKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSBmYWN0b3J5KCoqa3dhcmdzKQpAQCAtNzQ3LDYgKzc1MSw5IEBACiAgICAgICAgICAgICByZXN1bHQuc2V0TGV2ZWwobG9nZ2luZy5fY2hlY2tMZXZlbChsZXZlbCkpCiAgICAgICAgIGlmIGZpbHRlcnM6CiAgICAgICAgICAgICBzZWxmLmFkZF9maWx0ZXJzKHJlc3VsdCwgZmlsdGVycykKKyAgICAgICAgaWYgcHJvcHM6CisgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcHJvcHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHJlc3VsdCwgbmFtZSwgdmFsdWUpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBhZGRfaGFuZGxlcnMoc2VsZiwgbG9nZ2VyLCBoYW5kbGVycyk6CkBAIC03OTUsNyArODAyLDcgQEAKICAgICBkaWN0Q29uZmlnQ2xhc3MoY29uZmlnKS5jb25maWd1cmUoKQogCiAKLWRlZiBsaXN0ZW4ocG9ydD1ERUZBVUxUX0xPR0dJTkdfQ09ORklHX1BPUlQpOgorZGVmIGxpc3Rlbihwb3J0PURFRkFVTFRfTE9HR0lOR19DT05GSUdfUE9SVCwgdmVyaWZ5PU5vbmUpOgogICAgICIiIgogICAgIFN0YXJ0IHVwIGEgc29ja2V0IHNlcnZlciBvbiB0aGUgc3BlY2lmaWVkIHBvcnQsIGFuZCBsaXN0ZW4gZm9yIG5ldwogICAgIGNvbmZpZ3VyYXRpb25zLgpAQCAtODA0LDYgKzgxMSwxNSBAQAogICAgIFJldHVybnMgYSBUaHJlYWQgb2JqZWN0IG9uIHdoaWNoIHlvdSBjYW4gY2FsbCBzdGFydCgpIHRvIHN0YXJ0IHRoZSBzZXJ2ZXIsCiAgICAgYW5kIHdoaWNoIHlvdSBjYW4gam9pbigpIHdoZW4gYXBwcm9wcmlhdGUuIFRvIHN0b3AgdGhlIHNlcnZlciwgY2FsbAogICAgIHN0b3BMaXN0ZW5pbmcoKS4KKworICAgIFVzZSB0aGUgYGB2ZXJpZnlgYCBhcmd1bWVudCB0byB2ZXJpZnkgYW55IGJ5dGVzIHJlY2VpdmVkIGFjcm9zcyB0aGUgd2lyZQorICAgIGZyb20gYSBjbGllbnQuIElmIHNwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgY2FsbGFibGUgd2hpY2ggcmVjZWl2ZXMgYQorICAgIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBieXRlcyBvZiBjb25maWd1cmF0aW9uIGRhdGEgcmVjZWl2ZWQgYWNyb3NzIHRoZQorICAgIG5ldHdvcmsgLSBhbmQgaXQgc2hvdWxkIHJldHVybiBlaXRoZXIgYGBOb25lYGAsIHRvIGluZGljYXRlIHRoYXQgdGhlCisgICAgcGFzc2VkIGluIGJ5dGVzIGNvdWxkIG5vdCBiZSB2ZXJpZmllZCBhbmQgc2hvdWxkIGJlIGRpc2NhcmRlZCwgb3IgYQorICAgIGJ5dGUgc3RyaW5nIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIG1hY2hpbmVyeSBhcworICAgIG5vcm1hbC4gTm90ZSB0aGF0IHlvdSBjYW4gcmV0dXJuIHRyYW5zZm9ybWVkIGJ5dGVzLCBlLmcuIGJ5IGRlY3J5cHRpbmcKKyAgICB0aGUgYnl0ZXMgcGFzc2VkIGluLgogICAgICIiIgogICAgIGlmIG5vdCB0aHJlYWQ6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImxpc3RlbigpIG5lZWRzIHRocmVhZGluZyB0byB3b3JrIikKQEAgLTgzMSwyNSArODQ3LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5jb25uZWN0aW9uLnJlY3Yoc2xlbikKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgbGVuKGNodW5rKSA8IHNsZW46CiAgICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgY29ubi5yZWN2KHNsZW4gLSBsZW4oY2h1bmspKQotICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQganNvbgotICAgICAgICAgICAgICAgICAgICAgICAgZCA9anNvbi5sb2FkcyhjaHVuaykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIGRpY3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkaWN0Q29uZmlnKGQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICNBcHBseSBuZXcgY29uZmlndXJhdGlvbi4KLQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlci52ZXJpZnkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuc2VydmVyLnZlcmlmeShjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmsgaXMgbm90IE5vbmU6ICAgIyB2ZXJpZmllZCwgY2FuIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmsuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUNvbmZpZyhmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQganNvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPWpzb24ubG9hZHMoY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgZGljdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0Q29uZmlnKGQpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICNBcHBseSBuZXcgY29uZmlndXJhdGlvbi4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTyhjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb25maWcoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIucmVhZHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZWFkeS5zZXQoKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLmFyZ3MsIHR1cGxlKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtODY1LDEzICs4ODIsMTQgQEAKICAgICAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD1ERUZBVUxUX0xPR0dJTkdfQ09ORklHX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICBoYW5kbGVyPU5vbmUsIHJlYWR5PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcj1Ob25lLCByZWFkeT1Ob25lLCB2ZXJpZnk9Tm9uZSk6CiAgICAgICAgICAgICBUaHJlYWRpbmdUQ1BTZXJ2ZXIuX19pbml0X18oc2VsZiwgKGhvc3QsIHBvcnQpLCBoYW5kbGVyKQogICAgICAgICAgICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgICAgICAgICAgc2VsZi5hYm9ydCA9IDAKICAgICAgICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKICAgICAgICAgICAgIHNlbGYudGltZW91dCA9IDEKICAgICAgICAgICAgIHNlbGYucmVhZHkgPSByZWFkeQorICAgICAgICAgICAgc2VsZi52ZXJpZnkgPSB2ZXJpZnkKIAogICAgICAgICBkZWYgc2VydmVfdW50aWxfc3RvcHBlZChzZWxmKToKICAgICAgICAgICAgIGltcG9ydCBzZWxlY3QKQEAgLTg4OSwxNiArOTA3LDE4IEBACiAKICAgICBjbGFzcyBTZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CiAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJjdnIsIGhkbHIsIHBvcnQpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmN2ciwgaGRsciwgcG9ydCwgdmVyaWZ5KToKICAgICAgICAgICAgIHN1cGVyKFNlcnZlciwgc2VsZikuX19pbml0X18oKQogICAgICAgICAgICAgc2VsZi5yY3ZyID0gcmN2cgogICAgICAgICAgICAgc2VsZi5oZGxyID0gaGRscgogICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAorICAgICAgICAgICAgc2VsZi52ZXJpZnkgPSB2ZXJpZnkKICAgICAgICAgICAgIHNlbGYucmVhZHkgPSB0aHJlYWRpbmcuRXZlbnQoKQogCiAgICAgICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICAgICBzZXJ2ZXIgPSBzZWxmLnJjdnIocG9ydD1zZWxmLnBvcnQsIGhhbmRsZXI9c2VsZi5oZGxyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR5PXNlbGYucmVhZHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHk9c2VsZi5yZWFkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnk9c2VsZi52ZXJpZnkpCiAgICAgICAgICAgICBpZiBzZWxmLnBvcnQgPT0gMDoKICAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZXJ2ZXIuc2VydmVyX2FkZHJlc3NbMV0KICAgICAgICAgICAgIHNlbGYucmVhZHkuc2V0KCkKQEAgLTkwOCw3ICs5MjgsNyBAQAogICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogICAgICAgICAgICAgc2VydmVyLnNlcnZlX3VudGlsX3N0b3BwZWQoKQogCi0gICAgcmV0dXJuIFNlcnZlcihDb25maWdTb2NrZXRSZWNlaXZlciwgQ29uZmlnU3RyZWFtSGFuZGxlciwgcG9ydCkKKyAgICByZXR1cm4gU2VydmVyKENvbmZpZ1NvY2tldFJlY2VpdmVyLCBDb25maWdTdHJlYW1IYW5kbGVyLCBwb3J0LCB2ZXJpZnkpCiAKIGRlZiBzdG9wTGlzdGVuaW5nKCk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weSBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CmluZGV4IDkzYWE1MGUuLmYxZGRiYjUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CisrKyBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CkBAIC03Miw5ICs3Miw3IEBACiAgICAgICAgICAgICBpZiBzZWxmLnNob3VsZFJvbGxvdmVyKHJlY29yZCk6CiAgICAgICAgICAgICAgICAgc2VsZi5kb1JvbGxvdmVyKCkKICAgICAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKICAgICBkZWYgcm90YXRpb25fZmlsZW5hbWUoc2VsZiwgZGVmYXVsdF9uYW1lKToKQEAgLTE5OCwxMSArMTk2LDEyIEBACiAgICAgSWYgYmFja3VwQ291bnQgaXMgPiAwLCB3aGVuIHJvbGxvdmVyIGlzIGRvbmUsIG5vIG1vcmUgdGhhbiBiYWNrdXBDb3VudAogICAgIGZpbGVzIGFyZSBrZXB0IC0gdGhlIG9sZGVzdCBvbmVzIGFyZSBkZWxldGVkLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgd2hlbj0naCcsIGludGVydmFsPTEsIGJhY2t1cENvdW50PTAsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlLCB1dGM9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgd2hlbj0naCcsIGludGVydmFsPTEsIGJhY2t1cENvdW50PTAsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlLCB1dGM9RmFsc2UsIGF0VGltZT1Ob25lKToKICAgICAgICAgQmFzZVJvdGF0aW5nSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgJ2EnLCBlbmNvZGluZywgZGVsYXkpCiAgICAgICAgIHNlbGYud2hlbiA9IHdoZW4udXBwZXIoKQogICAgICAgICBzZWxmLmJhY2t1cENvdW50ID0gYmFja3VwQ291bnQKICAgICAgICAgc2VsZi51dGMgPSB1dGMKKyAgICAgICAgc2VsZi5hdFRpbWUgPSBhdFRpbWUKICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIHJlYWwgcm9sbG92ZXIgaW50ZXJ2YWwsIHdoaWNoIGlzIGp1c3QgdGhlIG51bWJlciBvZgogICAgICAgICAjIHNlY29uZHMgYmV0d2VlbiByb2xsb3ZlcnMuICBBbHNvIHNldCB0aGUgZmlsZW5hbWUgc3VmZml4IHVzZWQgd2hlbgogICAgICAgICAjIGEgcm9sbG92ZXIgb2NjdXJzLiAgQ3VycmVudCAnd2hlbicgZXZlbnRzIHN1cHBvcnRlZDoKQEAgLTI3Miw5ICsyNzEsMjIgQEAKICAgICAgICAgICAgIGN1cnJlbnRIb3VyID0gdFszXQogICAgICAgICAgICAgY3VycmVudE1pbnV0ZSA9IHRbNF0KICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQgPSB0WzVdCi0gICAgICAgICAgICAjIHIgaXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGxlZnQgYmV0d2VlbiBub3cgYW5kIG1pZG5pZ2h0Ci0gICAgICAgICAgICByID0gX01JRE5JR0hUIC0gKChjdXJyZW50SG91ciAqIDYwICsgY3VycmVudE1pbnV0ZSkgKiA2MCArCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQpCisgICAgICAgICAgICBjdXJyZW50RGF5ID0gdFs2XQorICAgICAgICAgICAgIyByIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBsZWZ0IGJldHdlZW4gbm93IGFuZCB0aGUgbmV4dCByb3RhdGlvbgorICAgICAgICAgICAgaWYgc2VsZi5hdFRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByb3RhdGVfdHMgPSBfTUlETklHSFQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcm90YXRlX3RzID0gKChzZWxmLmF0VGltZS5ob3VyICogNjAgKyBzZWxmLmF0VGltZS5taW51dGUpKjYwICsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hdFRpbWUuc2Vjb25kKQorCisgICAgICAgICAgICByID0gcm90YXRlX3RzIC0gKChjdXJyZW50SG91ciAqIDYwICsgY3VycmVudE1pbnV0ZSkgKiA2MCArCisgICAgICAgICAgICAgICAgY3VycmVudFNlY29uZCkKKyAgICAgICAgICAgIGlmIHIgPCAwOgorICAgICAgICAgICAgICAgICMgUm90YXRlIHRpbWUgaXMgYmVmb3JlIHRoZSBjdXJyZW50IHRpbWUgKGZvciBleGFtcGxlIHdoZW4KKyAgICAgICAgICAgICAgICAjIHNlbGYucm90YXRlQXQgaXMgMTM6NDUgYW5kIGl0IG5vdyAxNDoxNSksIHJvdGF0aW9uIGlzCisgICAgICAgICAgICAgICAgIyB0b21vcnJvdy4KKyAgICAgICAgICAgICAgICByICs9IF9NSUROSUdIVAorICAgICAgICAgICAgICAgIGN1cnJlbnREYXkgPSAoY3VycmVudERheSArIDEpICUgNwogICAgICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUgKyByCiAgICAgICAgICAgICAjIElmIHdlIGFyZSByb2xsaW5nIG92ZXIgb24gYSBjZXJ0YWluIGRheSwgYWRkIGluIHRoZSBudW1iZXIgb2YgZGF5cyB1bnRpbAogICAgICAgICAgICAgIyB0aGUgbmV4dCByb2xsb3ZlciwgYnV0IG9mZnNldCBieSAxIHNpbmNlIHdlIGp1c3QgY2FsY3VsYXRlZCB0aGUgdGltZQpAQCAtMjkyLDcgKzMwNCw3IEBACiAgICAgICAgICAgICAjIFRoaXMgaXMgYmVjYXVzZSB0aGUgYWJvdmUgdGltZSBjYWxjdWxhdGlvbiB0YWtlcyB1cyB0byBtaWRuaWdodCBvbiB0aGlzCiAgICAgICAgICAgICAjIGRheSwgaS5lLiB0aGUgc3RhcnQgb2YgdGhlIG5leHQgZGF5LgogICAgICAgICAgICAgaWYgc2VsZi53aGVuLnN0YXJ0c3dpdGgoJ1cnKToKLSAgICAgICAgICAgICAgICBkYXkgPSB0WzZdICMgMCBpcyBNb25kYXkKKyAgICAgICAgICAgICAgICBkYXkgPSBjdXJyZW50RGF5ICMgMCBpcyBNb25kYXkKICAgICAgICAgICAgICAgICBpZiBkYXkgIT0gc2VsZi5kYXlPZldlZWs6CiAgICAgICAgICAgICAgICAgICAgIGlmIGRheSA8IHNlbGYuZGF5T2ZXZWVrOgogICAgICAgICAgICAgICAgICAgICAgICAgZGF5c1RvV2FpdCA9IHNlbGYuZGF5T2ZXZWVrIC0gZGF5CkBAIC00NDAsMTEgKzQ1Miw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgc3RhdCB0aGUgZmlsZSBieSBwYXRoLCBjaGVja2luZyBmb3IgZXhpc3RlbmNlCiAgICAgICAgICAgICBzcmVzID0gb3Muc3RhdChzZWxmLmJhc2VGaWxlbmFtZSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmVycm5vID09IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICBzcmVzID0gTm9uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBzcmVzID0gTm9uZQogICAgICAgICAjIGNvbXBhcmUgZmlsZSBzeXN0ZW0gc3RhdCB3aXRoIHRoYXQgb2Ygb3VyIHN0cmVhbSBmaWxlIGhhbmRsZQogICAgICAgICBpZiBub3Qgc3JlcyBvciBzcmVzW1NUX0RFVl0gIT0gc2VsZi5kZXYgb3Igc3Jlc1tTVF9JTk9dICE9IHNlbGYuaW5vOgogICAgICAgICAgICAgaWYgc2VsZi5zdHJlYW0gaXMgbm90IE5vbmU6CkBAIC00OTYsMTUgKzUwNSw3IEBACiAgICAgICAgIEEgZmFjdG9yeSBtZXRob2Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzZXMgdG8gZGVmaW5lIHRoZSBwcmVjaXNlCiAgICAgICAgIHR5cGUgb2Ygc29ja2V0IHRoZXkgd2FudC4KICAgICAgICAgIiIiCi0gICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIGlmIGhhc2F0dHIocywgJ3NldHRpbWVvdXQnKToKLSAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKLSAgICAgICAgICAgIHJldHVybiBzCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgdGltZW91dD10aW1lb3V0KQogCiAgICAgZGVmIGNyZWF0ZVNvY2tldChzZWxmKToKICAgICAgICAgIiIiCkBAIC01MjQsNyArNTI1LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLm1ha2VTb2NrZXQoKQogICAgICAgICAgICAgICAgIHNlbGYucmV0cnlUaW1lID0gTm9uZSAjIG5leHQgdGltZSwgbm8gZGVsYXkgYmVmb3JlIHRyeWluZwotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICNDcmVhdGlvbiBmYWlsZWQsIHNvIHNldCB0aGUgcmV0cnkgdGltZSBhbmQgcmV0dXJuLgogICAgICAgICAgICAgICAgIGlmIHNlbGYucmV0cnlUaW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmV0cnlQZXJpb2QgPSBzZWxmLnJldHJ5U3RhcnQKQEAgLTU0OCwxNiArNTQ5LDggQEAKICAgICAgICAgI2J1dCBhcmUgc3RpbGwgdW5hYmxlIHRvIGNvbm5lY3QuCiAgICAgICAgIGlmIHNlbGYuc29jazoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuc29jaywgInNlbmRhbGwiKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwocykKLSAgICAgICAgICAgICAgICBlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgotICAgICAgICAgICAgICAgICAgICBzZW50c29mYXIgPSAwCi0gICAgICAgICAgICAgICAgICAgIGxlZnQgPSBsZW4ocykKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgbGVmdCA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZW50ID0gc2VsZi5zb2NrLnNlbmQoc1tzZW50c29mYXI6XSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRzb2ZhciA9IHNlbnRzb2ZhciArIHNlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0IC0gc2VudAotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjogI3ByYWdtYTogbm8gY292ZXIKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBOb25lICAjIHNvIHdlIGNhbiBjYWxsIGNyZWF0ZVNvY2tldCBuZXh0IHRpbWUKIApAQCAtNjA3LDkgKzYwMCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHMgPSBzZWxmLm1ha2VQaWNrbGUocmVjb3JkKQogICAgICAgICAgICAgc2VsZi5zZW5kKHMpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CkBAIC03NzMsNyArNzY0LDExIEBACiAKICAgICAgICAgSWYgYWRkcmVzcyBpcyBzcGVjaWZpZWQgYXMgYSBzdHJpbmcsIGEgVU5JWCBzb2NrZXQgaXMgdXNlZC4gVG8gbG9nIHRvIGEKICAgICAgICAgbG9jYWwgc3lzbG9nZCwgIlN5c0xvZ0hhbmRsZXIoYWRkcmVzcz0iL2Rldi9sb2ciKSIgY2FuIGJlIHVzZWQuCi0gICAgICAgIElmIGZhY2lsaXR5IGlzIG5vdCBzcGVjaWZpZWQsIExPR19VU0VSIGlzIHVzZWQuCisgICAgICAgIElmIGZhY2lsaXR5IGlzIG5vdCBzcGVjaWZpZWQsIExPR19VU0VSIGlzIHVzZWQuIElmIHNvY2t0eXBlIGlzCisgICAgICAgIHNwZWNpZmllZCBhcyBzb2NrZXQuU09DS19ER1JBTSBvciBzb2NrZXQuU09DS19TVFJFQU0sIHRoYXQgc3BlY2lmaWMKKyAgICAgICAgc29ja2V0IHR5cGUgd2lsbCBiZSB1c2VkLiBGb3IgVW5peCBzb2NrZXRzLCB5b3UgY2FuIGFsc28gc3BlY2lmeSBhCisgICAgICAgIHNvY2t0eXBlIG9mIE5vbmUsIGluIHdoaWNoIGNhc2Ugc29ja2V0LlNPQ0tfREdSQU0gd2lsbCBiZSB1c2VkLCBmYWxsaW5nCisgICAgICAgIGJhY2sgdG8gc29ja2V0LlNPQ0tfU1RSRUFNLgogICAgICAgICAiIiIKICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAKQEAgLTgwMyw3ICs3OTgsNyBAQAogICAgICAgICAgICAgc2VsZi5zb2NrZXQuY29ubmVjdChhZGRyZXNzKQogICAgICAgICAgICAgIyBpdCB3b3JrZWQsIHNvIHNldCBzZWxmLnNvY2t0eXBlIHRvIHRoZSB1c2VkIHR5cGUKICAgICAgICAgICAgIHNlbGYuc29ja3R5cGUgPSB1c2Vfc29ja3R5cGUKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICBpZiBzZWxmLnNvY2t0eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICMgdXNlciBkaWRuJ3Qgc3BlY2lmeSBmYWxsaW5nIGJhY2ssIHNvIGZhaWwKQEAgLTgxNCw3ICs4MDksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoYWRkcmVzcykKICAgICAgICAgICAgICAgICAjIGl0IHdvcmtlZCwgc28gc2V0IHNlbGYuc29ja3R5cGUgdG8gdGhlIHVzZWQgdHlwZQogICAgICAgICAgICAgICAgIHNlbGYuc29ja3R5cGUgPSB1c2Vfc29ja3R5cGUKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIApAQCAtODY3LDEwICs4NjIsOSBAQAogICAgICAgICAgICAgbXNnID0gc2VsZi5pZGVudCArIG1zZwogICAgICAgICBpZiBzZWxmLmFwcGVuZF9udWw6CiAgICAgICAgICAgICBtc2cgKz0gJ1wwMDAnCi0gICAgICAgICIiIgotICAgICAgICBXZSBuZWVkIHRvIGNvbnZlcnQgcmVjb3JkIGxldmVsIHRvIGxvd2VyY2FzZSwgbWF5YmUgdGhpcyB3aWxsCi0gICAgICAgIGNoYW5nZSBpbiB0aGUgZnV0dXJlLgotICAgICAgICAiIiIKKworICAgICAgICAjIFdlIG5lZWQgdG8gY29udmVydCByZWNvcmQgbGV2ZWwgdG8gbG93ZXJjYXNlLCBtYXliZSB0aGlzIHdpbGwKKyAgICAgICAgIyBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KICAgICAgICAgcHJpbyA9ICc8JWQ+JyAlIHNlbGYuZW5jb2RlUHJpb3JpdHkoc2VsZi5mYWNpbGl0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXBQcmlvcml0eShyZWNvcmQubGV2ZWxuYW1lKSkKICAgICAgICAgcHJpbyA9IHByaW8uZW5jb2RlKCd1dGYtOCcpCkBAIC04ODEsNyArODc1LDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYudW5peHNvY2tldDoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmQobXNnKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdF91bml4c29ja2V0KHNlbGYuYWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZChtc2cpCkBAIC04ODksOSArODgzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kdG8obXNnLCBzZWxmLmFkZHJlc3MpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmRhbGwobXNnKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCiBjbGFzcyBTTVRQSGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgpAQCAtOTY5LDkgKzk2MSw3IEBACiAgICAgICAgICAgICAgICAgc210cC5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQogICAgICAgICAgICAgc210cC5zZW5kbWFpbChzZWxmLmZyb21hZGRyLCBzZWxmLnRvYWRkcnMsIG1zZykKICAgICAgICAgICAgIHNtdHAucXVpdCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKIGNsYXNzIE5URXZlbnRMb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CkBAIC0xMDU2LDkgKzEwNDYsNyBAQAogICAgICAgICAgICAgICAgIHR5cGUgPSBzZWxmLmdldEV2ZW50VHlwZShyZWNvcmQpCiAgICAgICAgICAgICAgICAgbXNnID0gc2VsZi5mb3JtYXQocmVjb3JkKQogICAgICAgICAgICAgICAgIHNlbGYuX3dlbHUuUmVwb3J0RXZlbnQoc2VsZi5hcHBuYW1lLCBpZCwgY2F0LCB0eXBlLCBbbXNnXSkKLSAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgpAQCAtMTE0Myw5ICsxMTMxLDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIjoKICAgICAgICAgICAgICAgICBoLnNlbmQoZGF0YS5lbmNvZGUoJ3V0Zi04JykpCiAgICAgICAgICAgICBoLmdldHJlc3BvbnNlKCkgICAgI2Nhbid0IGRvIGFueXRoaW5nIHdpdGggdGhlIHJlc3VsdAotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCiBjbGFzcyBCdWZmZXJpbmdIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CkBAIC0xMzI1LDkgKzEzMTEsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5lbnF1ZXVlKHNlbGYucHJlcGFyZShyZWNvcmQpKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCiBpZiB0aHJlYWRpbmc6CmRpZmYgLS1naXQgYS9MaWIvbHptYS5weSBiL0xpYi9sem1hLnB5CmluZGV4IDFhMWIwNjUuLmIyZTJmN2UgMTAwNjQ0Ci0tLSBhL0xpYi9sem1hLnB5CisrKyBiL0xpYi9sem1hLnB5CkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgICAgICBtb2RlIGNhbiBiZSAiciIgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAidyIgZm9yIChvdmVyKXdyaXRpbmcsIG9yCi0gICAgICAgICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICJyYiIsICJ3YiIsCisgICAgICAgICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICJyYiIsICJ3YiIKICAgICAgICAgYW5kICJhYiIgcmVzcGVjdGl2ZWx5LgogCiAgICAgICAgIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgZmlsZS4KQEAgLTExMCw3ICsxMTAsOCBAQAogICAgICAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4KICAgICAgICAgICAgIHNlbGYuX2luaXRfYXJncyA9IHsiZm9ybWF0Ijpmb3JtYXQsICJmaWx0ZXJzIjpmaWx0ZXJzfQogICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIsICJhIiwgImFiIik6CiAgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfWFoKQEAgLTE0Myw3ICsxNDQsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CiAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKICAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKICAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCiAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTE4NywxNSArMTg4LDE4IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKIAogICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKIAogICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi53cml0YWJsZSgpOgorICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1dSSVRFOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCiAKICAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9mcC5zZWVrYWJsZSgpOgpAQCAtMjA0LDE2ICsyMDgsMTMgQEAKIAogICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCiAgICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90CiAgICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBzZWxmLl9idWZmZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhOgotICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZnAucmVhZChfQlVGRkVSX1NJWkUpCisgICAgICAgIHdoaWxlIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKSkKIAogICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CkBAIC0yMjksMzAgKzIzMCw0OCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCiAKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKyAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICMgUmVhZCBkYXRhIHVudGlsIEVPRi4KICAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgogICAgIGRlZiBfcmVhZF9hbGwoc2VsZiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgICMgVGhlIGxvb3AgYXNzdW1lcyB0aGF0IF9idWZmZXJfb2Zmc2V0IGlzIDAuIEVuc3VyZSB0aGF0IHRoaXMgaXMgdHJ1ZS4KKyAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCiAgICAgICAgIGJsb2NrcyA9IFtdCiAgICAgICAgIHdoaWxlIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CiAgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKICAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHNlbGYuX2J1ZmZlcikKICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oc2VsZi5fYnVmZmVyKQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCiAgICAgICAgIGlmIHJldHVybl9kYXRhOgogICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGJsb2NrcykKIAogICAgICMgUmVhZCBhIGJsb2NrIG9mIHVwIHRvIG4gYnl0ZXMuCiAgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KICAgICBkZWYgX3JlYWRfYmxvY2soc2VsZiwgbiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgICMgSWYgd2UgaGF2ZSBlbm91Z2ggZGF0YSBidWZmZXJlZCwgcmV0dXJuIGltbWVkaWF0ZWx5LgorICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgbgorICAgICAgICBpZiBlbmQgPD0gbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOiBlbmRdCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gZGF0YSBpZiByZXR1cm5fZGF0YSBlbHNlIE5vbmUKKworICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKwogICAgICAgICBibG9ja3MgPSBbXQogICAgICAgICB3aGlsZSBuID4gMCBhbmQgc2VsZi5fZmlsbF9idWZmZXIoKToKICAgICAgICAgICAgIGlmIG4gPCBsZW4oc2VsZi5fYnVmZmVyKToKICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyWzpuXQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltuOl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgogICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CiAgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQogICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQpAQCAtMjY3LDkgKzI4Niw5IEBACiAgICAgICAgIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgaXMgdW5zcGVjaWZpZWQuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCi0gICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Ygb3Igbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpOgogICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCiAKICAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgpAQCAtMjc4LDcgKzI5Nyw3IEBACiAgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yIHNpemUgPT0gMDoKKyAgICAgICAgaWYgc2l6ZSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuIGIiIgogICAgICAgICBlbGlmIHNpemUgPCAwOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKQEAgLTI5NSwxOCArMzE0LDQwIEBACiAgICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCiAgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgKHNpemUgPT0gMCBvciBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yCi0gICAgICAgICAgICBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSk6CisgICAgICAgIGlmIChzaXplID09IDAgb3IKKyAgICAgICAgICAgICMgT25seSBjYWxsIF9maWxsX2J1ZmZlcigpIGlmIHRoZSBidWZmZXIgaXMgYWN0dWFsbHkgZW1wdHkuCisgICAgICAgICAgICAjIFRoaXMgZ2l2ZXMgYSBzaWduaWZpY2FudCBzcGVlZHVwIGlmICpzaXplKiBpcyBzbWFsbC4KKyAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgogICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICBpZiAwIDwgc2l6ZSA8IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6c2l6ZV0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzaXplOl0KKyAgICAgICAgaWYgc2l6ZSA+IDA6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKz0gbGVuKGRhdGEpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAogICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCiAgICAgICAgIHJldHVybiBkYXRhCiAKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgYSBsaW5lIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIFRoZSB0ZXJtaW5hdGluZyBuZXdsaW5lIChpZiBwcmVzZW50KSBpcyByZXRhaW5lZC4gSWYgc2l6ZSBpcworICAgICAgICBub24tbmVnYXRpdmUsIG5vIG1vcmUgdGhhbiBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZCAoaW4gd2hpY2gKKyAgICAgICAgY2FzZSB0aGUgbGluZSBtYXkgYmUgaW5jb21wbGV0ZSkuIFJldHVybnMgYicnIGlmIGFscmVhZHkgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9uIGNhc2UgLSB0aGUgd2hvbGUgbGluZSBpcyBpbiB0aGUgYnVmZmVyLgorICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlci5maW5kKGIiXG4iLCBzZWxmLl9idWZmZXJfb2Zmc2V0KSArIDEKKyAgICAgICAgICAgIGlmIGVuZCA+IDA6CisgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGxpbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKKyAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIHNpemUpCisKICAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIldyaXRlIGEgYnl0ZXMgb2JqZWN0IHRvIHRoZSBmaWxlLgogCkBAIC0zMjYsNyArMzY3LDggQEAKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQUQKICAgICAgICAgc2VsZi5fcG9zID0gMAogICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQotICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAogCiAgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CiAgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KQEAgLTM2NSw4ICs0MDcsNyBAQAogICAgICAgICAgICAgb2Zmc2V0IC09IHNlbGYuX3BvcwogCiAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgotICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgc2VsZi5fcmVhZF9ibG9jayhvZmZzZXQsIHJldHVybl9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwogCkBAIC0zODEsMjMgKzQyMiwyNCBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvciBieXRlcyBvYmplY3QpLAotICAgIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QKLSAgICB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvciBieXRlcworICAgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4KKyAgICBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCiAKLSAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiIChkZWZhdWx0KSwgInciLCAid2IiLCAiYSIsIG9yICJhYiIgZm9yCi0gICAgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLgorICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIgKGRlZmF1bHQpLCAidyIsICJ3YiIsICJhIiBvciAiYWIiCisgICAgZm9yIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4KIAotICAgIFRoZSBmb3JtYXQsIGNoZWNrLCBwcmVzZXQgYW5kIGZpbHRlcnMgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uCi0gICAgc2V0dGluZ3MsIGFzIGZvciBMWk1BQ29tcHJlc3NvciwgTFpNQURlY29tcHJlc3NvciBhbmQgTFpNQUZpbGUuCisgICAgVGhlIGZvcm1hdCwgY2hlY2ssIHByZXNldCBhbmQgZmlsdGVycyBhcmd1bWVudHMgc3BlY2lmeSB0aGUKKyAgICBjb21wcmVzc2lvbiBzZXR0aW5ncywgYXMgZm9yIExaTUFDb21wcmVzc29yLCBMWk1BRGVjb21wcmVzc29yIGFuZAorICAgIExaTUFGaWxlLgogCi0gICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIExaTUFGaWxlIGNvbnN0cnVjdG9yOgotICAgIExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzIGFuZAotICAgIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBMWk1BRmlsZQorICAgIGNvbnN0cnVjdG9yOiBMWk1BRmlsZShmaWxlbmFtZSwgbW9kZSwgLi4uKS4gSW4gdGhpcyBjYXNlLCB0aGUKKyAgICBlbmNvZGluZywgZXJyb3JzIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KIAogICAgIEZvciB0ZXh0IG1vZGUsIGEgTFpNQUZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCi0gICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yIGhhbmRsaW5nCi0gICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgogCiAgICAgIiIiCiAgICAgaWYgInQiIGluIG1vZGU6CkBAIC00MjcsNyArNDY5LDcgQEAKICAgICBSZWZlciB0byBMWk1BQ29tcHJlc3NvcidzIGRvY3N0cmluZyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKICAgICBvcHRpb25hbCBhcmd1bWVudHMgKmZvcm1hdCosICpjaGVjayosICpwcmVzZXQqIGFuZCAqZmlsdGVycyouCiAKLSAgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhbiBMWk1BQ29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhbiBMWk1BQ29tcHJlc3NvciBpbnN0ZWFkLgogICAgICIiIgogICAgIGNvbXAgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQsIGNoZWNrLCBwcmVzZXQsIGZpbHRlcnMpCiAgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKQEAgLTQzOSw3ICs0ODEsNyBAQAogICAgIFJlZmVyIHRvIExaTUFEZWNvbXByZXNzb3IncyBkb2NzdHJpbmcgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCiAgICAgb3B0aW9uYWwgYXJndW1lbnRzICpmb3JtYXQqLCAqY2hlY2sqIGFuZCAqZmlsdGVycyouCiAKLSAgICBGb3IgaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbiwgdXNlIGEgTFpNQURlY29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICBGb3IgaW5jcmVtZW50YWwgZGVjb21wcmVzc2lvbiwgdXNlIGFuIExaTUFEZWNvbXByZXNzb3IgaW5zdGVhZC4KICAgICAiIiIKICAgICByZXN1bHRzID0gW10KICAgICB3aGlsZSBUcnVlOgpkaWZmIC0tZ2l0IGEvTGliL21hY3BhdGgucHkgYi9MaWIvbWFjcGF0aC5weQppbmRleCAxNjE1ZDkxLi5kMzRmOWU5NCAxMDA2NDQKLS0tIGEvTGliL21hY3BhdGgucHkKKysrIGIvTGliL21hY3BhdGgucHkKQEAgLTEyNyw3ICsxMjcsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBzdCA9IG9zLmxzdGF0KHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IGQzYmYzZmQuLjIwNDk1MTYgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0yMiw5ICsyMiw2IEBACiBpbXBvcnQgaW8KIGltcG9ydCBjb250ZXh0bGliCiB0cnk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdvczJlbXgnOgotICAgICAgICAjIE9TLzIgRU1YIGZjbnRsKCkgbm90IGFkZXF1YXRlCi0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAgICAgaW1wb3J0IGZjbnRsCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBOb25lCkBAIC0zMzcsMTEgKzMzNCw4IEBACiAgICAgICAgICMgVGhpcyBvdmVycmlkZXMgYW4gaW5hcHBsaWNhYmxlIGltcGxlbWVudGF0aW9uIGluIHRoZSBzdXBlcmNsYXNzLgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnJlbW92ZShrZXkpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgRmlsZU5vdEZvdW5kRXJyb3IpOgogICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIG1lc3NhZ2UpOgogICAgICAgICAiIiJSZXBsYWNlIHRoZSBrZXllZCBtZXNzYWdlOyByYWlzZSBLZXlFcnJvciBpZiBpdCBkb2Vzbid0IGV4aXN0LiIiIgpAQCAtMzY5LDE0ICszNjMsMTEgQEAKICAgICBkZWYgZ2V0X21lc3NhZ2Uoc2VsZiwga2V5KToKICAgICAgICAgIiIiUmV0dXJuIGEgTWVzc2FnZSByZXByZXNlbnRhdGlvbiBvciByYWlzZSBhIEtleUVycm9yLiIiIgogICAgICAgICBzdWJwYXRoID0gc2VsZi5fbG9va3VwKGtleSkKLSAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN1YnBhdGgpLCAncmInKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3VicGF0aCksICdyYicpIGFzIGY6CiAgICAgICAgICAgICBpZiBzZWxmLl9mYWN0b3J5OgogICAgICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoZikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbXNnID0gTWFpbGRpck1lc3NhZ2UoZikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBzdWJkaXIsIG5hbWUgPSBvcy5wYXRoLnNwbGl0KHN1YnBhdGgpCiAgICAgICAgIG1zZy5zZXRfc3ViZGlyKHN1YmRpcikKICAgICAgICAgaWYgc2VsZi5jb2xvbiBpbiBuYW1lOgpAQCAtMzg2LDExICszNzcsOCBAQAogCiAgICAgZGVmIGdldF9ieXRlcyhzZWxmLCBrZXkpOgogICAgICAgICAiIiJSZXR1cm4gYSBieXRlcyByZXByZXNlbnRhdGlvbiBvciByYWlzZSBhIEtleUVycm9yLiIiIgotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc2VsZi5fbG9va3VwKGtleSkpLCAncmInKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc2VsZi5fbG9va3VwKGtleSkpLCAncmInKSBhcyBmOgogICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpLnJlcGxhY2UobGluZXNlcCwgYidcbicpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBnZXRfZmlsZShzZWxmLCBrZXkpOgogICAgICAgICAiIiJSZXR1cm4gYSBmaWxlLWxpa2UgcmVwcmVzZW50YXRpb24gb3IgcmFpc2UgYSBLZXlFcnJvci4iIiIKQEAgLTUwMiwxNiArNDkwLDEyIEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJ3RtcCcsIHVuaXEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnN0YXQocGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgIE1haWxkaXIuX2NvdW50ICs9IDEKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfY3JlYXRlX2NhcmVmdWxseShwYXRoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgTWFpbGRpci5fY291bnQgKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBfY3JlYXRlX2NhcmVmdWxseShwYXRoKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgIyBGYWxsIHRocm91Z2ggdG8gaGVyZSBpZiBzdGF0IHN1Y2NlZWRlZCBvciBvcGVuIHJhaXNlZCBFRVhJU1QuCiAgICAgICAgIHJhaXNlIEV4dGVybmFsQ2xhc2hFcnJvcignTmFtZSBjbGFzaCBwcmV2ZW50ZWQgZmlsZSBjcmVhdGlvbjogJXMnICUKQEAgLTU4OCw3ICs1NzIsNyBAQAogICAgICAgICBNYWlsYm94Ll9faW5pdF9fKHNlbGYsIHBhdGgsIGZhY3RvcnksIGNyZWF0ZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5fcGF0aCwgJ3JiKycpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgICBpZiBjcmVhdGU6CiAgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuX3BhdGgsICd3YisnKQpAQCAtNjMxLDggKzYxNSw3IEBACiAgICAgZGVmIGl0ZXJrZXlzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBrZXlzLiIiIgogICAgICAgICBzZWxmLl9sb29rdXAoKQotICAgICAgICBmb3Iga2V5IGluIHNlbGYuX3RvYy5rZXlzKCk6Ci0gICAgICAgICAgICB5aWVsZCBrZXkKKyAgICAgICAgeWllbGQgZnJvbSBzZWxmLl90b2Mua2V5cygpCiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CiAgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBrZXllZCBtZXNzYWdlIGV4aXN0cywgRmFsc2Ugb3RoZXJ3aXNlLiIiIgpAQCAtNzEwLDEzICs2OTMsOSBAQAogICAgICAgICBvcy5jaG1vZChuZXdfZmlsZS5uYW1lLCBtb2RlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5yZW5hbWUobmV3X2ZpbGUubmFtZSwgc2VsZi5fcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUVYSVNUIG9yIFwKLSAgICAgICAgICAgICAgKG9zLm5hbWUgPT0gJ29zMicgYW5kIGUuZXJybm8gPT0gZXJybm8uRUFDQ0VTKToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5fcGF0aCkKLSAgICAgICAgICAgICAgICBvcy5yZW5hbWUobmV3X2ZpbGUubmFtZSwgc2VsZi5fcGF0aCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLl9wYXRoKQorICAgICAgICAgICAgb3MucmVuYW1lKG5ld19maWxlLm5hbWUsIHNlbGYuX3BhdGgpCiAgICAgICAgIHNlbGYuX2ZpbGUgPSBvcGVuKHNlbGYuX3BhdGgsICdyYisnKQogICAgICAgICBzZWxmLl90b2MgPSBuZXdfdG9jCiAgICAgICAgIHNlbGYuX3BlbmRpbmcgPSBGYWxzZQpAQCAtOTkzLDcgKzk3Miw3IEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICdyYisnKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIG1lc3NhZ2Ugd2l0aCBrZXk6ICVzJyAlIGtleSkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xMDA3LDcgKzk4Niw3IEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICdyYisnKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIG1lc3NhZ2Ugd2l0aCBrZXk6ICVzJyAlIGtleSkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xMDMzLDEyICsxMDEyLDEyIEBACiAgICAgICAgICAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSwgJ3JiKycpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSksICdyYicpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcignTm8gbWVzc2FnZSB3aXRoIGtleTogJXMnICUga2V5KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggZjoKICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tlZDoKICAgICAgICAgICAgICAgICBfbG9ja19maWxlKGYpCiAgICAgICAgICAgICB0cnk6CkBAIC0xMDQ2LDggKzEwMjUsNiBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9sb2NrZWQ6CiAgICAgICAgICAgICAgICAgICAgIF91bmxvY2tfZmlsZShmKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIGZvciBuYW1lLCBrZXlfbGlzdCBpbiBzZWxmLmdldF9zZXF1ZW5jZXMoKS5pdGVtcygpOgogICAgICAgICAgICAgaWYga2V5IGluIGtleV9saXN0OgogICAgICAgICAgICAgICAgIG1zZy5hZGRfc2VxdWVuY2UobmFtZSkKQEAgLTEwNjAsMTIgKzEwMzcsMTIgQEAKICAgICAgICAgICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpLCAncmIrJykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSwgJ3JiJykKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCdObyBtZXNzYWdlIHdpdGgga2V5OiAlcycgJSBrZXkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBmOgogICAgICAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICAgICAgIF9sb2NrX2ZpbGUoZikKICAgICAgICAgICAgIHRyeToKQEAgLTEwNzMsMTQgKzEwNTAsMTIgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fbG9ja2VkOgogICAgICAgICAgICAgICAgICAgICBfdW5sb2NrX2ZpbGUoZikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIGdldF9maWxlKHNlbGYsIGtleSk6CiAgICAgICAgICIiIlJldHVybiBhIGZpbGUtbGlrZSByZXByZXNlbnRhdGlvbiBvciByYWlzZSBhIEtleUVycm9yLiIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpLCAncmInKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ05vIG1lc3NhZ2Ugd2l0aCBrZXk6ICVzJyAlIGtleSkKICAgICAgICAgICAgIGVsc2U6CkBAIC0yMDczLDcgKzIwNDgsNyBAQAogICAgICAgICBpZiBmY250bDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmY250bC5sb2NrZihmLCBmY250bC5MT0NLX0VYIHwgZmNudGwuTE9DS19OQikKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gaW4gKGVycm5vLkVBR0FJTiwgZXJybm8uRUFDQ0VTLCBlcnJuby5FUk9GUyk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4dGVybmFsQ2xhc2hFcnJvcignbG9ja2Y6IGxvY2sgdW5hdmFpbGFibGU6ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLm5hbWUpCkBAIC0yMDgzLDcgKzIwNTgsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHByZV9sb2NrID0gX2NyZWF0ZV90ZW1wb3JhcnkoZi5uYW1lICsgJy5sb2NrJykKICAgICAgICAgICAgICAgICBwcmVfbG9jay5jbG9zZSgpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBlLmVycm5vIGluIChlcnJuby5FQUNDRVMsIGVycm5vLkVST0ZTKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICAjIFdpdGhvdXQgd3JpdGUgYWNjZXNzLCBqdXN0IHNraXAgZG90bG9ja2luZy4KICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMjA5NiwxNCArMjA3MSwxMCBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbmFtZShwcmVfbG9jay5uYW1lLCBmLm5hbWUgKyAnLmxvY2snKQogICAgICAgICAgICAgICAgICAgICBkb3Rsb2NrX2RvbmUgPSBUcnVlCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUVYSVNUIG9yIFwKLSAgICAgICAgICAgICAgICAgIChvcy5uYW1lID09ICdvczInIGFuZCBlLmVycm5vID09IGVycm5vLkVBQ0NFUyk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwcmVfbG9jay5uYW1lKQotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeHRlcm5hbENsYXNoRXJyb3IoJ2RvdCBsb2NrIHVuYXZhaWxhYmxlOiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5uYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwcmVfbG9jay5uYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4dGVybmFsQ2xhc2hFcnJvcignZG90IGxvY2sgdW5hdmFpbGFibGU6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYubmFtZSkKICAgICBleGNlcHQ6CiAgICAgICAgIGlmIGZjbnRsOgogICAgICAgICAgICAgZmNudGwubG9ja2YoZiwgZmNudGwuTE9DS19VTikKZGlmZiAtLWdpdCBhL0xpYi9tYWlsY2FwLnB5IGIvTGliL21haWxjYXAucHkKaW5kZXggOTlmNDk1OC4uYmQ2MWIwYiAxMDA2NDQKLS0tIGEvTGliL21haWxjYXAucHkKKysrIGIvTGliL21haWxjYXAucHkKQEAgLTIwLDcgKzIwLDcgQEAKICAgICBmb3IgbWFpbGNhcCBpbiBsaXN0bWFpbGNhcGZpbGVzKCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZwID0gb3BlbihtYWlsY2FwLCAncicpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIG1vcmVjYXBzID0gcmVhZG1haWxjYXBmaWxlKGZwKQogICAgICAgICBmcC5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCAyODcyZWU0Li41YWFhOTA4IDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTI0Myw3ICsyNDMsNyBAQAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGN0eXBlID0gX3dpbnJlZy5FbnVtS2V5KG1pbWVkYiwgaSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdHlwZQpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIHdpdGggX3dpbnJlZy5PcGVuS2V5KG1pbWVkYiwgY3R5cGUpIGFzIGtleToKICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCwgZGF0YXR5cGUgPSBfd2lucmVnLlF1ZXJ5VmFsdWVFeChrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dGVuc2lvbicpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgZGF0YXR5cGUgIT0gX3dpbnJlZy5SRUdfU1o6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0zNTksNyArMzU5LDcgQEAKIGRlZiByZWFkX21pbWVfdHlwZXMoZmlsZSk6CiAgICAgdHJ5OgogICAgICAgICBmID0gb3BlbihmaWxlKQotICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIGRiID0gTWltZVR5cGVzKCkKICAgICBkYi5yZWFkZnAoZiwgVHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IGY5MGE0MzIuLmUzYWQ3ZDYgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMSwxMyArMSwxNiBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKIGltcG9ydCBkaXMKLWltcG9ydCBpbXAKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgbWFyc2hhbAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB3YXJuaW5ncword2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICBpbXBvcnQgaW1wCiAKICMgWFhYIENsZWFuIHVwIG9uY2Ugc3RyOCdzIGNzdG9yIG1hdGNoZXMgYnl0ZXMuCiBMT0FEX0NPTlNUID0gYnl0ZXMoW2Rpcy5vcG5hbWUuaW5kZXgoJ0xPQURfQ09OU1QnKV0pCkBAIC0yMjksNyArMjMyLDcgQEAKICAgICAgICAgZm9yIGRpciBpbiBtLl9fcGF0aF9fOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXIpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxmLm1zZygyLCAiY2FuJ3QgbGlzdCBkaXJlY3RvcnkiLCBkaXIpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKaW5kZXggMWYzZTY3Yy4uYjQyNjEzZiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CkBAIC04LDEwICs4LDYgQEAKICMgc3VicGFja2FnZSAnbXVsdGlwcm9jZXNzaW5nLmR1bW15JyBoYXMgdGhlIHNhbWUgQVBJIGJ1dCBpcyBhIHNpbXBsZQogIyB3cmFwcGVyIGZvciAndGhyZWFkaW5nJy4KICMKLSMgVHJ5IGNhbGxpbmcgYG11bHRpcHJvY2Vzc2luZy5kb2MubWFpbigpYCB0byByZWFkIHRoZSBodG1sCi0jIGRvY3VtZW50YXRpb24gaW4gYSB3ZWJicm93c2VyLgotIwotIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKQEAgLTI3LDggKzIzLDYgQEAKICAgICAnVmFsdWUnLCAnQXJyYXknLCAnUmF3VmFsdWUnLCAnUmF3QXJyYXknLCAnU1VCREVCVUcnLCAnU1VCV0FSTklORycsCiAgICAgXQogCi1fX2F1dGhvcl9fID0gJ1IuIE91ZGtlcmsgKHIubS5vdWRrZXJrQGdtYWlsLmNvbSknCi0KICMKICMgSW1wb3J0cwogIwpAQCAtNDAsNiArMzQsMTMgQEAKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IFNVQkRFQlVHLCBTVUJXQVJOSU5HCiAKICMKKyMgQWxpYXMgZm9yIG1haW4gbW9kdWxlIC0tIHdpbGwgYmUgcmVzZXQgYnkgYm9vdHN0cmFwcGluZyBjaGlsZCBwcm9jZXNzZXMKKyMKKworaWYgJ19fbWFpbl9fJyBpbiBzeXMubW9kdWxlczoKKyAgICBzeXMubW9kdWxlc1snX19tcF9tYWluX18nXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCisKKyMKICMgRXhjZXB0aW9ucwogIwogCkBAIC04NCwzMCArODUsMTEgQEAKICAgICAnJycKICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtCiAgICAgJycnCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG51bSA9IGludChvcy5lbnZpcm9uWydOVU1CRVJfT0ZfUFJPQ0VTU09SUyddKQotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEtleUVycm9yKToKLSAgICAgICAgICAgIG51bSA9IDAKLSAgICBlbGlmICdic2QnIGluIHN5cy5wbGF0Zm9ybSBvciBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgIGNvbW0gPSAnL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHUnCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGNvbW0gPSAnL3VzcicgKyBjb21tCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3MucG9wZW4oY29tbSkgYXMgcDoKLSAgICAgICAgICAgICAgICBudW0gPSBpbnQocC5yZWFkKCkpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgbnVtID0gMAotICAgIGVsc2U6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG51bSA9IG9zLnN5c2NvbmYoJ1NDX05QUk9DRVNTT1JTX09OTE4nKQotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIE9TRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgIG51bSA9IDAKLQotICAgIGlmIG51bSA+PSAxOgotICAgICAgICByZXR1cm4gbnVtCi0gICAgZWxzZToKKyAgICBudW0gPSBvcy5jcHVfY291bnQoKQorICAgIGlmIG51bSBpcyBOb25lOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdjYW5ub3QgZGV0ZXJtaW5lIG51bWJlciBvZiBjcHVzJykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gbnVtCiAKIGRlZiBmcmVlemVfc3VwcG9ydCgpOgogICAgICcnJwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IDJhMGJjMmYuLjEwOTNkOWYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTEyLDcgKzEyLDYgQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3RydWN0CkBAIC0xMzIsMjIgKzEzMSwyMiBAQAogCiAgICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiaGFuZGxlIGlzIGNsb3NlZCIpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJoYW5kbGUgaXMgY2xvc2VkIikKIAogICAgIGRlZiBfY2hlY2tfcmVhZGFibGUoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkYWJsZToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImNvbm5lY3Rpb24gaXMgd3JpdGUtb25seSIpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJjb25uZWN0aW9uIGlzIHdyaXRlLW9ubHkiKQogCiAgICAgZGVmIF9jaGVja193cml0YWJsZShzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX3dyaXRhYmxlOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKQogCiAgICAgZGVmIF9iYWRfbWVzc2FnZV9sZW5ndGgoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3dyaXRhYmxlOgogICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBGYWxzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgIHJhaXNlIElPRXJyb3IoImJhZCBtZXNzYWdlIGxlbmd0aCIpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoImJhZCBtZXNzYWdlIGxlbmd0aCIpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY2xvc2VkKHNlbGYpOgpAQCAtMjAyLDkgKzIwMSw3IEBACiAgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQotICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgRm9ya2luZ1BpY2tsZXIoYnVmLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCkuZHVtcChvYmopCi0gICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoYnVmLmdldGJ1ZmZlcigpKQorICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCiAKICAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMjQ5LDcgKzI0Niw3IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKICAgICAgICAgYnVmID0gc2VsZi5fcmVjdl9ieXRlcygpCi0gICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQogCiAgICAgZGVmIHBvbGwoc2VsZiwgdGltZW91dD0wLjApOgogICAgICAgICAiIiJXaGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCIiIgpAQCAtMzE3LDcgKzMxNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyID09IF93aW5hcGkuRVJST1JfTU9SRV9EQVRBOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfbW9yZV9kYXRhKG92LCBtYXhzaXplKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciA9PSBfd2luYXBpLkVSUk9SX0JST0tFTl9QSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM4OSw3ICszODYsNyBAQAogICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpCiAgICAgICAgICAgICBidWYud3JpdGUoY2h1bmspCiAgICAgICAgICAgICByZW1haW5pbmcgLT0gbgogICAgICAgICByZXR1cm4gYnVmCkBAIC00NDksNyArNDQ2LDcgQEAKICAgICAgICAgUmV0dXJucyBhIGBDb25uZWN0aW9uYCBvYmplY3QuCiAgICAgICAgICcnJwogICAgICAgICBpZiBzZWxmLl9saXN0ZW5lciBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignbGlzdGVuZXIgaXMgY2xvc2VkJykKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2xpc3RlbmVyIGlzIGNsb3NlZCcpCiAgICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgICBpZiBzZWxmLl9hdXRoa2V5OgogICAgICAgICAgICAgZGVsaXZlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKQEAgLTY4OCw3ICs2ODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfT1ZFUkxBUFBFRCwgX3dpbmFwaS5OVUxMCiAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciBub3QgaW4gKF93aW5hcGkuRVJST1JfU0VNX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRVJST1JfUElQRV9CVVNZKSBvciBfY2hlY2tfdGltZW91dCh0KToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CmluZGV4IGUzMWZjNjEuLjIwYWU5NTcgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKaW5kZXggODc0ZWM4ZS4uNjk0ZWY5NiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsgJ0NsaWVudCcsICdMaXN0ZW5lcicsICdQaXBlJyBdCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKaW5kZXggMGJiMjFjNC4uMzljZmQ4ZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQpAQCAtNyw3ICs3LDkgQEAKICMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCitpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IGVycm5vCkBAIC00NCw2ICs0NiwxNSBAQAogICAgIGRlZiByZWdpc3RlcihjbHMsIHR5cGUsIHJlZHVjZSk6CiAgICAgICAgIGNscy5fZXh0cmFfcmVkdWNlcnNbdHlwZV0gPSByZWR1Y2UKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZHVtcHMob2JqKToKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIEZvcmtpbmdQaWNrbGVyKGJ1ZiwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wpLmR1bXAob2JqKQorICAgICAgICByZXR1cm4gYnVmLmdldGJ1ZmZlcigpCisKKyAgICBsb2FkcyA9IHBpY2tsZS5sb2FkcworCisKIGRlZiBfcmVkdWNlX21ldGhvZChtKToKICAgICBpZiBtLl9fc2VsZl9fIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBnZXRhdHRyLCAobS5fX2NsYXNzX18sIG0uX19mdW5jX18uX19uYW1lX18pCkBAIC0xMTMsNyArMTI0LDcgQEAKICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHN0cyA9IG9zLndhaXRwaWQoc2VsZi5waWQsIGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzIG5vdCB5ZXQgY3JlYXRlZC4gU2VlICMxNzMxNzE3CkBAIC00MzgsNyArNDQ5LDggQEAKICAgICAgICAgZWxpZiBtYWluX25hbWUgIT0gJ2lweXRob24nOgogICAgICAgICAgICAgIyBNYWluIG1vZHVsZXMgbm90IGFjdHVhbGx5IGNhbGxlZCBfX21haW5fXy5weSBtYXkKICAgICAgICAgICAgICMgY29udGFpbiBhZGRpdGlvbmFsIGNvZGUgdGhhdCBzaG91bGQgc3RpbGwgYmUgZXhlY3V0ZWQKLSAgICAgICAgICAgIGltcG9ydCBpbXAKKyAgICAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKKyAgICAgICAgICAgIGltcG9ydCB0eXBlcwogCiAgICAgICAgICAgICBpZiBtYWluX3BhdGggaXMgTm9uZToKICAgICAgICAgICAgICAgICBkaXJzID0gTm9uZQpAQCAtNDQ4LDI3ICs0NjAsMTggQEAKICAgICAgICAgICAgICAgICBkaXJzID0gW29zLnBhdGguZGlybmFtZShtYWluX3BhdGgpXQogCiAgICAgICAgICAgICBhc3NlcnQgbWFpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlcywgbWFpbl9uYW1lCi0gICAgICAgICAgICBmaWxlLCBwYXRoX25hbWUsIGV0YyA9IGltcC5maW5kX21vZHVsZShtYWluX25hbWUsIGRpcnMpCisgICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AoJ19fbXBfbWFpbl9fJywgTm9uZSkKKyAgICAgICAgICAgICMgV2Ugc2hvdWxkIG5vdCB0cnkgdG8gbG9hZCBfX21haW5fXworICAgICAgICAgICAgIyBzaW5jZSB0aGF0IHdvdWxkIGV4ZWN1dGUgJ2lmIF9fbmFtZV9fID09ICJfX21haW5fXyInCisgICAgICAgICAgICAjIGNsYXVzZXMsIHBvdGVudGlhbGx5IGNhdXNpbmcgYSBwc3VlZG8gZm9yayBib21iLgorICAgICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKG1haW5fbmFtZSwgcGF0aD1kaXJzKQorICAgICAgICAgICAgbWFpbl9tb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG1haW5fbmFtZSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFdlIHdvdWxkIGxpa2UgdG8gZG8gImltcC5sb2FkX21vZHVsZSgnX19tYWluX18nLCAuLi4pIgotICAgICAgICAgICAgICAgICMgaGVyZS4gIEhvd2V2ZXIsIHRoYXQgd291bGQgY2F1c2UgJ2lmIF9fbmFtZV9fID09Ci0gICAgICAgICAgICAgICAgIyAiX19tYWluX18iJyBjbGF1c2VzIHRvIGJlIGV4ZWN1dGVkLgotICAgICAgICAgICAgICAgIG1haW5fbW9kdWxlID0gaW1wLmxvYWRfbW9kdWxlKAotICAgICAgICAgICAgICAgICAgICAnX19wYXJlbnRzX21haW5fXycsIGZpbGUsIHBhdGhfbmFtZSwgZXRjCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgbG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKG1haW5fbW9kdWxlKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBpbml0X21vZHVsZV9hdHRycyBpcyBvcHRpb25hbAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIG1haW5fbW9kdWxlLl9fbmFtZV9fID0gJ19fbXBfbWFpbl9fJworICAgICAgICAgICAgY29kZSA9IGxvYWRlci5nZXRfY29kZShtYWluX25hbWUpCisgICAgICAgICAgICBleGVjKGNvZGUsIG1haW5fbW9kdWxlLl9fZGljdF9fKQogCi0gICAgICAgICAgICBzeXMubW9kdWxlc1snX19tYWluX18nXSA9IG1haW5fbW9kdWxlCi0gICAgICAgICAgICBtYWluX21vZHVsZS5fX25hbWVfXyA9ICdfX21haW5fXycKLQotICAgICAgICAgICAgIyBUcnkgdG8gbWFrZSB0aGUgcG90ZW50aWFsbHkgcGlja2xhYmxlIG9iamVjdHMgaW4KLSAgICAgICAgICAgICMgc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10gcmVhbGl6ZSB0aGV5IGFyZSBpbiB0aGUgbWFpbgotICAgICAgICAgICAgIyBtb2R1bGUgLS0gc29tZXdoYXQgdWdseS4KLSAgICAgICAgICAgIGZvciBvYmogaW4gbGlzdChtYWluX21vZHVsZS5fX2RpY3RfXy52YWx1ZXMoKSk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBvYmouX19tb2R1bGVfXyA9PSAnX19wYXJlbnRzX21haW5fXyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmouX19tb2R1bGVfXyA9ICdfX21haW5fXycKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzeXMubW9kdWxlc1snX19tYWluX18nXSA9IHN5cy5tb2R1bGVzWydfX21wX21haW5fXyddID0gbWFpbl9tb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CmluZGV4IDk2MDU2YjAuLjM2Y2Q2NTAgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQpAQCAtMTY3LDcgKzE2Nyw3IEBACiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYyA9IHNlbGYubGlzdGVuZXIuYWNjZXB0KCkKLSAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcik6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CmluZGV4IGZjOWQ5MDQuLjgwODJhZDYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKQEAgLTE3LDkgKzE3LDExIEBACiBpbXBvcnQgcXVldWUKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IG9zCiBpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjawogCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgY3B1X2NvdW50LCBUaW1lb3V0RXJyb3IKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBUaW1lb3V0RXJyb3IKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IEZpbmFsaXplLCBkZWJ1ZwogCiAjCkBAIC00Myw2ICs0NSwyOSBAQAogICAgIHJldHVybiBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKGFyZ3NbMF0sIGFyZ3NbMV0pKQogCiAjCisjIEhhY2sgdG8gZW1iZWQgc3RyaW5naWZpY2F0aW9uIG9mIHJlbW90ZSB0cmFjZWJhY2sgaW4gbG9jYWwgdHJhY2ViYWNrCisjCisKK2NsYXNzIFJlbW90ZVRyYWNlYmFjayhFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Yik6CisgICAgICAgIHNlbGYudGIgPSB0YgorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50YgorCitjbGFzcyBFeGNlcHRpb25XaXRoVHJhY2ViYWNrOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMsIHRiKToKKyAgICAgICAgdGIgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbih0eXBlKGV4YyksIGV4YywgdGIpCisgICAgICAgIHRiID0gJycuam9pbih0YikKKyAgICAgICAgc2VsZi5leGMgPSBleGMKKyAgICAgICAgc2VsZi50YiA9ICdcbiIiIlxuJXMiIiInICUgdGIKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfZXhjLCAoc2VsZi5leGMsIHNlbGYudGIpCisKK2RlZiByZWJ1aWxkX2V4YyhleGMsIHRiKToKKyAgICBleGMuX19jYXVzZV9fID0gUmVtb3RlVHJhY2ViYWNrKHRiKQorICAgIHJldHVybiBleGMKKworIwogIyBDb2RlIHJ1biBieSB3b3JrZXIgcHJvY2Vzc2VzCiAjCiAKQEAgLTc4LDggKzEwMyw4IEBACiAgICAgd2hpbGUgbWF4dGFza3MgaXMgTm9uZSBvciAobWF4dGFza3MgYW5kIGNvbXBsZXRlZCA8IG1heHRhc2tzKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGFzayA9IGdldCgpCi0gICAgICAgIGV4Y2VwdCAoRU9GRXJyb3IsIElPRXJyb3IpOgotICAgICAgICAgICAgZGVidWcoJ3dvcmtlciBnb3QgRU9GRXJyb3Igb3IgSU9FcnJvciAtLSBleGl0aW5nJykKKyAgICAgICAgZXhjZXB0IChFT0ZFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICBkZWJ1Zygnd29ya2VyIGdvdCBFT0ZFcnJvciBvciBPU0Vycm9yIC0tIGV4aXRpbmcnKQogICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBpZiB0YXNrIGlzIE5vbmU6CkBAIC05MCw2ICsxMTUsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSAoVHJ1ZSwgZnVuYygqYXJncywgKiprd2RzKSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZSA9IEV4Y2VwdGlvbldpdGhUcmFjZWJhY2soZSwgZS5fX3RyYWNlYmFja19fKQogICAgICAgICAgICAgcmVzdWx0ID0gKEZhbHNlLCBlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwdXQoKGpvYiwgaSwgcmVzdWx0KSkKQEAgLTEyMiwxMCArMTQ4LDcgQEAKICAgICAgICAgc2VsZi5faW5pdGFyZ3MgPSBpbml0YXJncwogCiAgICAgICAgIGlmIHByb2Nlc3NlcyBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByb2Nlc3NlcyA9IGNwdV9jb3VudCgpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwcm9jZXNzZXMgPSAxCisgICAgICAgICAgICBwcm9jZXNzZXMgPSBvcy5jcHVfY291bnQoKSBvciAxCiAgICAgICAgIGlmIHByb2Nlc3NlcyA8IDE6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJOdW1iZXIgb2YgcHJvY2Vzc2VzIG11c3QgYmUgYXQgbGVhc3QgMSIpCiAKQEAgLTM0OSw3ICszNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcHV0KHRhc2spCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGRlYnVnKCdjb3VsZCBub3QgcHV0IHRhc2sgb24gcXVldWUnKQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKQEAgLTM3MSw4ICszOTQsOCBAQAogICAgICAgICAgICAgZGVidWcoJ3Rhc2sgaGFuZGxlciBzZW5kaW5nIHNlbnRpbmVsIHRvIHdvcmtlcnMnKQogICAgICAgICAgICAgZm9yIHAgaW4gcG9vbDoKICAgICAgICAgICAgICAgICBwdXQoTm9uZSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICBkZWJ1ZygndGFzayBoYW5kbGVyIGdvdCBJT0Vycm9yIHdoZW4gc2VuZGluZyBzZW50aW5lbHMnKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGRlYnVnKCd0YXNrIGhhbmRsZXIgZ290IE9TRXJyb3Igd2hlbiBzZW5kaW5nIHNlbnRpbmVscycpCiAKICAgICAgICAgZGVidWcoJ3Rhc2sgaGFuZGxlciBleGl0aW5nJykKIApAQCAtMzgzLDggKzQwNiw4IEBACiAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdGFzayA9IGdldCgpCi0gICAgICAgICAgICBleGNlcHQgKElPRXJyb3IsIEVPRkVycm9yKToKLSAgICAgICAgICAgICAgICBkZWJ1ZygncmVzdWx0IGhhbmRsZXIgZ290IEVPRkVycm9yL0lPRXJyb3IgLS0gZXhpdGluZycpCisgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICBkZWJ1ZygncmVzdWx0IGhhbmRsZXIgZ290IEVPRkVycm9yL09TRXJyb3IgLS0gZXhpdGluZycpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgIGlmIHRocmVhZC5fc3RhdGU6CkBAIC00MDUsOCArNDI4LDggQEAKICAgICAgICAgd2hpbGUgY2FjaGUgYW5kIHRocmVhZC5fc3RhdGUgIT0gVEVSTUlOQVRFOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRhc2sgPSBnZXQoKQotICAgICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBFT0ZFcnJvcik6Ci0gICAgICAgICAgICAgICAgZGVidWcoJ3Jlc3VsdCBoYW5kbGVyIGdvdCBFT0ZFcnJvci9JT0Vycm9yIC0tIGV4aXRpbmcnKQorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgZGVidWcoJ3Jlc3VsdCBoYW5kbGVyIGdvdCBFT0ZFcnJvci9PU0Vycm9yIC0tIGV4aXRpbmcnKQogICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICAgICBpZiB0YXNrIGlzIE5vbmU6CkBAIC00MjgsNyArNDUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG91dHF1ZXVlLl9yZWFkZXIucG9sbCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZ2V0KCkKLSAgICAgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlYnVnKCdyZXN1bHQgaGFuZGxlciBleGl0aW5nOiBsZW4oY2FjaGUpPSVzLCB0aHJlYWQuX3N0YXRlPSVzJywKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggMzcyNzFmYi4uZWMxODhlZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTIyLDcgKzIyLDcgQEAKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBMb2NrLCBCb3VuZGVkU2VtYXBob3JlLCBTZW1hcGhvcmUsIENvbmRpdGlvbgogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZGVidWcsIGluZm8sIEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBhc3NlcnRfc3Bhd25pbmcKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGFzc2VydF9zcGF3bmluZywgRm9ya2luZ1BpY2tsZXIKIAogIwogIyBRdWV1ZSB0eXBlIHVzaW5nIGEgcGlwZSwgYnVmZmVyIGFuZCB0aHJlYWQKQEAgLTY5LDggKzY5LDggQEAKICAgICAgICAgc2VsZi5fam9pbmNhbmNlbGxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2Nsb3NlID0gTm9uZQotICAgICAgICBzZWxmLl9zZW5kID0gc2VsZi5fd3JpdGVyLnNlbmQKLSAgICAgICAgc2VsZi5fcmVjdiA9IHNlbGYuX3JlYWRlci5yZWN2CisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMgPSBzZWxmLl93cml0ZXIuc2VuZF9ieXRlcworICAgICAgICBzZWxmLl9yZWN2X2J5dGVzID0gc2VsZi5fcmVhZGVyLnJlY3ZfYnl0ZXMKICAgICAgICAgc2VsZi5fcG9sbCA9IHNlbGYuX3JlYWRlci5wb2xsCiAKICAgICBkZWYgcHV0KHNlbGYsIG9iaiwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKQEAgLTg5LDE0ICs4OSw5IEBACiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIGlmIGJsb2NrIGFuZCB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9ybG9jay5hY3F1aXJlKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWN2KCkKLSAgICAgICAgICAgICAgICBzZWxmLl9zZW0ucmVsZWFzZSgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlcwotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9ybG9jay5yZWxlYXNlKCkKLQorICAgICAgICAgICAgd2l0aCBzZWxmLl9ybG9jazoKKyAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuX3NlbS5yZWxlYXNlKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIGJsb2NrOgogICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyB0aW1lb3V0CkBAIC0xMDksMTEgKzEwNCwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKICAgICAgICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9wb2xsKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5Ci0gICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fcmVjdigpCisgICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fcmVjdl9ieXRlcygpCiAgICAgICAgICAgICAgICAgc2VsZi5fc2VtLnJlbGVhc2UoKQotICAgICAgICAgICAgICAgIHJldHVybiByZXMKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmxvY2sucmVsZWFzZSgpCisgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCisgICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcXNpemUoc2VsZik6CiAgICAgICAgICMgUmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igb24gTWFjIE9TWCBiZWNhdXNlIG9mIGJyb2tlbiBzZW1fZ2V0dmFsdWUoKQpAQCAtMTU4LDcgKzE1NCw3IEBACiAgICAgICAgIHNlbGYuX2J1ZmZlci5jbGVhcigpCiAgICAgICAgIHNlbGYuX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQoCiAgICAgICAgICAgICB0YXJnZXQ9UXVldWUuX2ZlZWQsCi0gICAgICAgICAgICBhcmdzPShzZWxmLl9idWZmZXIsIHNlbGYuX25vdGVtcHR5LCBzZWxmLl9zZW5kLAorICAgICAgICAgICAgYXJncz0oc2VsZi5fYnVmZmVyLCBzZWxmLl9ub3RlbXB0eSwgc2VsZi5fc2VuZF9ieXRlcywKICAgICAgICAgICAgICAgICAgIHNlbGYuX3dsb2NrLCBzZWxmLl93cml0ZXIuY2xvc2UsIHNlbGYuX2lnbm9yZV9lcGlwZSksCiAgICAgICAgICAgICBuYW1lPSdRdWV1ZUZlZWRlclRocmVhZCcKICAgICAgICAgICAgICkKQEAgLTIxMCw3ICsyMDYsNyBAQAogICAgICAgICAgICAgbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmQsIHdyaXRlbG9jaywgY2xvc2UsIGlnbm9yZV9lcGlwZSk6CisgICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmRfYnl0ZXMsIHdyaXRlbG9jaywgY2xvc2UsIGlnbm9yZV9lcGlwZSk6CiAgICAgICAgIGRlYnVnKCdzdGFydGluZyB0aHJlYWQgdG8gZmVlZCBkYXRhIHRvIHBpcGUnKQogICAgICAgICBmcm9tIC51dGlsIGltcG9ydCBpc19leGl0aW5nCiAKQEAgLTI0MSwxMiArMjM3LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgICAgICAgICAgICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBGb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB3YWNxdWlyZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmQob2JqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWNxdWlyZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kKG9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9ieXRlcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JlbGVhc2UoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgpAQCAtMzQwLDcgKzMzOCw2IEBACiAgICAgICAgICAgICBzZWxmLl93bG9jayA9IE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTG9jaygpCi0gICAgICAgIHNlbGYuX21ha2VfbWV0aG9kcygpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6CiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcG9sbCgpCkBAIC0zNTEsMjkgKzM0OCwxOSBAQAogCiAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgIChzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwgc2VsZi5fcmxvY2ssIHNlbGYuX3dsb2NrKSA9IHN0YXRlCi0gICAgICAgIHNlbGYuX21ha2VfbWV0aG9kcygpCiAKLSAgICBkZWYgX21ha2VfbWV0aG9kcyhzZWxmKToKLSAgICAgICAgcmVjdiA9IHNlbGYuX3JlYWRlci5yZWN2Ci0gICAgICAgIHJhY3F1aXJlLCBycmVsZWFzZSA9IHNlbGYuX3Jsb2NrLmFjcXVpcmUsIHNlbGYuX3Jsb2NrLnJlbGVhc2UKLSAgICAgICAgZGVmIGdldCgpOgotICAgICAgICAgICAgcmFjcXVpcmUoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiByZWN2KCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcnJlbGVhc2UoKQotICAgICAgICBzZWxmLmdldCA9IGdldAorICAgIGRlZiBnZXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmxvY2s6CisgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWFkZXIucmVjdl9ieXRlcygpCisgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCisgICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKKyAgICBkZWYgcHV0KHNlbGYsIG9iaik6CisgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKKyAgICAgICAgb2JqID0gRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQogICAgICAgICBpZiBzZWxmLl93bG9jayBpcyBOb25lOgogICAgICAgICAgICAgIyB3cml0ZXMgdG8gYSBtZXNzYWdlIG9yaWVudGVkIHdpbjMyIHBpcGUgYXJlIGF0b21pYwotICAgICAgICAgICAgc2VsZi5wdXQgPSBzZWxmLl93cml0ZXIuc2VuZAorICAgICAgICAgICAgc2VsZi5fd3JpdGVyLnNlbmRfYnl0ZXMob2JqKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VuZCA9IHNlbGYuX3dyaXRlci5zZW5kCi0gICAgICAgICAgICB3YWNxdWlyZSwgd3JlbGVhc2UgPSBzZWxmLl93bG9jay5hY3F1aXJlLCBzZWxmLl93bG9jay5yZWxlYXNlCi0gICAgICAgICAgICBkZWYgcHV0KG9iaik6Ci0gICAgICAgICAgICAgICAgd2FjcXVpcmUoKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmQob2JqKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHdyZWxlYXNlKCkKLSAgICAgICAgICAgIHNlbGYucHV0ID0gcHV0CisgICAgICAgICAgICB3aXRoIHNlbGYuX3dsb2NrOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzKG9iaikKZGlmZiAtLWdpdCBhL0xpYi9uZXRyYy5weSBiL0xpYi9uZXRyYy5weQppbmRleCBjOTZkYjZmLi43ZmU2OWVlIDEwMDY0NAotLS0gYS9MaWIvbmV0cmMucHkKKysrIGIvTGliL25ldHJjLnB5CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydIT01FJ10sICIubmV0cmMiKQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIkNvdWxkIG5vdCBmaW5kIC5uZXRyYzogJEhPTUUgaXMgbm90IHNldCIpCisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ291bGQgbm90IGZpbmQgLm5ldHJjOiAkSE9NRSBpcyBub3Qgc2V0IikKICAgICAgICAgc2VsZi5ob3N0cyA9IHt9CiAgICAgICAgIHNlbGYubWFjcm9zID0ge30KICAgICAgICAgd2l0aCBvcGVuKGZpbGUpIGFzIGZwOgpkaWZmIC0tZ2l0IGEvTGliL25udHBsaWIucHkgYi9MaWIvbm50cGxpYi5weQppbmRleCAyZGU2ZWJkLi4wMWQ0MzAzIDEwMDY0NAotLS0gYS9MaWIvbm50cGxpYi5weQorKysgYi9MaWIvbm50cGxpYi5weQpAQCAtMzU5LDcgKzM1OSw3IEBACiAgICAgICAgIGlmIGlzX2Nvbm5lY3RlZCgpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYucXVpdCgpCi0gICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBpZiBpc19jb25uZWN0ZWQoKToKQEAgLTk0Nyw3ICs5NDcsNyBAQAogICAgICAgICAgICAgICAgIGlmIGF1dGg6CiAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBhdXRoWzBdCiAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkID0gYXV0aFsyXQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgUGVyZm9ybSBOTlRQIGF1dGhlbnRpY2F0aW9uIGlmIG5lZWRlZC4KICAgICAgICAgaWYgbm90IHVzZXI6CmRpZmYgLS1naXQgYS9MaWIvbnRwYXRoLnB5IGIvTGliL250cGF0aC5weQppbmRleCA4MjZiZTg3Li42YjY1Njk3IDEwMDY0NAotLS0gYS9MaWIvbnRwYXRoLnB5CisrKyBiL0xpYi9udHBhdGgucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgICAgImlzbW91bnQiLCAiZXhwYW5kdXNlciIsImV4cGFuZHZhcnMiLCJub3JtcGF0aCIsImFic3BhdGgiLAogICAgICAgICAgICAic3BsaXR1bmMiLCJjdXJkaXIiLCJwYXJkaXIiLCJzZXAiLCJwYXRoc2VwIiwiZGVmcGF0aCIsImFsdHNlcCIsCiAgICAgICAgICAgICJleHRzZXAiLCJkZXZudWxsIiwicmVhbHBhdGgiLCJzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyIsInJlbHBhdGgiLAotICAgICAgICAgICAic2FtZWZpbGUiLCAic2FtZW9wZW5maWxlIixdCisgICAgICAgICAgICJzYW1lZmlsZSIsICJzYW1lb3BlbmZpbGUiLCAic2FtZXN0YXQiLF0KIAogIyBzdHJpbmdzIHJlcHJlc2VudGluZyB2YXJpb3VzIHBhdGgtcmVsYXRlZCBiaXRzIGFuZCBwaWVjZXMKICMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCkBAIC0zMCw5ICszMCw2IEBACiBkZWZwYXRoID0gJy47QzpcXGJpbicKIGlmICdjZScgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgogICAgIGRlZnBhdGggPSAnXFxXaW5kb3dzJwotZWxpZiAnb3MyJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgIyBPUy8yIHcvIFZBQ1BQCi0gICAgYWx0c2VwID0gJy8nCiBkZXZudWxsID0gJ251bCcKIAogZGVmIF9nZXRfZW1wdHkocGF0aCk6CkBAIC0zMjAsMTIgKzMxNywxMSBAQAogCiBkZWYgaXNsaW5rKHBhdGgpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLgotICAgIFRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIGZvciBXaW5kb3dzIHByaW9yIHRvIDYuMAotICAgIGFuZCBmb3IgT1MvMi4KKyAgICBUaGlzIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBmb3IgV2luZG93cyBwcmlvciB0byA2LjAuCiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICBzdCA9IG9zLmxzdGF0KHBhdGgpCi0gICAgZXhjZXB0IChvcy5lcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgIGV4Y2VwdCAoT1NFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gc3RhdC5TX0lTTE5LKHN0LnN0X21vZGUpCiAKQEAgLTMzNSwyMCArMzMxLDM5IEBACiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBleGlzdHMuICBSZXR1cm5zIFRydWUgZm9yIGJyb2tlbiBzeW1ib2xpYyBsaW5rcyIiIgogICAgIHRyeToKICAgICAgICAgc3QgPSBvcy5sc3RhdChwYXRoKQotICAgIGV4Y2VwdCAob3MuZXJyb3IsIFdpbmRvd3NFcnJvcik6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBUcnVlCiAKLSMgSXMgYSBwYXRoIGEgbW91bnQgcG9pbnQ/ICBFaXRoZXIgYSByb290ICh3aXRoIG9yIHdpdGhvdXQgZHJpdmUgbGV0dGVyKQotIyBvciBhbiBVTkMgcGF0aCB3aXRoIGF0IG1vc3QgYSAvIG9yIFwgYWZ0ZXIgdGhlIG1vdW50IHBvaW50LgotCisjIElzIGEgcGF0aCBhIG1vdW50IHBvaW50PworIyBBbnkgZHJpdmUgbGV0dGVyIHJvb3QgKGVnIGM6XCkKKyMgQW55IHNoYXJlIFVOQyAoZWcgXFxzZXJ2ZXJcc2hhcmUpCisjIEFueSB2b2x1bWUgbW91bnRlZCBvbiBhIGZpbGVzeXN0ZW0gZm9sZGVyCisjCisjIE5vIG9uZSBtZXRob2QgZGV0ZWN0cyBhbGwgdGhyZWUgc2l0dWF0aW9ucy4gSGlzdG9yaWNhbGx5IHdlJ3ZlIGxleGljYWxseQorIyBkZXRlY3RlZCBkcml2ZSBsZXR0ZXIgcm9vdHMgYW5kIHNoYXJlIFVOQ3MuIFRoZSBjYW5vbmljYWwgYXBwcm9hY2ggdG8KKyMgZGV0ZWN0aW5nIG1vdW50ZWQgdm9sdW1lcyAocXVlcnlpbmcgdGhlIHJlcGFyc2UgdGFnKSBmYWlscyBmb3IgdGhlIG1vc3QKKyMgY29tbW9uIGNhc2U6IGRyaXZlIGxldHRlciByb290cy4gVGhlIGFsdGVybmF0aXZlIHdoaWNoIHVzZXMgR2V0Vm9sdW1lUGF0aE5hbWUKKyMgZmFpbHMgaWYgdGhlIGRyaXZlIGxldHRlciBpcyB0aGUgcmVzdWx0IG9mIGEgU1VCU1QuCit0cnk6CisgICAgZnJvbSBudCBpbXBvcnQgX2dldHZvbHVtZXBhdGhuYW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2dldHZvbHVtZXBhdGhuYW1lID0gTm9uZQogZGVmIGlzbW91bnQocGF0aCk6Ci0gICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChkZWZpbmVkIGFzIHJvb3Qgb2YgZHJpdmUpIiIiCisgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChhIGRyaXZlIHJvb3QsIHRoZSByb290IG9mIGEKKyAgICBzaGFyZSwgb3IgYSBtb3VudGVkIHZvbHVtZSkiIiIKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwYXRoKQorICAgIHBhdGggPSBhYnNwYXRoKHBhdGgpCiAgICAgcm9vdCwgcmVzdCA9IHNwbGl0ZHJpdmUocGF0aCkKICAgICBpZiByb290IGFuZCByb290WzBdIGluIHNlcHM6CiAgICAgICAgIHJldHVybiAobm90IHJlc3QpIG9yIChyZXN0IGluIHNlcHMpCi0gICAgcmV0dXJuIHJlc3QgaW4gc2VwcworICAgIGlmIHJlc3QgaW4gc2VwczoKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGlmIF9nZXR2b2x1bWVwYXRobmFtZToKKyAgICAgICAgcmV0dXJuIHBhdGgucnN0cmlwKHNlcHMpID09IF9nZXR2b2x1bWVwYXRobmFtZShwYXRoKS5yc3RyaXAoc2VwcykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gRmFsc2UKIAogCiAjIEV4cGFuZCBwYXRocyBiZWdpbm5pbmcgd2l0aCAnficgb3IgJ351c2VyJy4KQEAgLTU4OCw3ICs2MDMsNyBAQAogICAgICAgICBpZiBwYXRoOiAjIEVtcHR5IHBhdGggbXVzdCByZXR1cm4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwYXRoID0gX2dldGZ1bGxwYXRobmFtZShwYXRoKQotICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MgIyBCYWQgcGF0aCAtIHJldHVybiB1bmNoYW5nZWQuCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgICBwYXRoID0gb3MuZ2V0Y3dkYigpCkBAIC02NTYsMjMgKzY3MSw2IEBACiAgICAgZGVmIF9nZXRmaW5hbHBhdGhuYW1lKGYpOgogICAgICAgICByZXR1cm4gbm9ybWNhc2UoYWJzcGF0aChmKSkKIAotZGVmIHNhbWVmaWxlKGYxLCBmMik6Ci0gICAgIlRlc3Qgd2hldGhlciB0d28gcGF0aG5hbWVzIHJlZmVyZW5jZSB0aGUgc2FtZSBhY3R1YWwgZmlsZSIKLSAgICByZXR1cm4gX2dldGZpbmFscGF0aG5hbWUoZjEpID09IF9nZXRmaW5hbHBhdGhuYW1lKGYyKQotCi0KLXRyeToKLSAgICBmcm9tIG50IGltcG9ydCBfZ2V0ZmlsZWluZm9ybWF0aW9uCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBPbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcywganVzdCByZXR1cm4gdGhlIGZkIGFuZCBzZWUgdGhhdAotICAgICMgaXQgY29tcGFyZXMgZXF1YWwgaW4gc2FtZW9wZW5maWxlLgotICAgIGRlZiBfZ2V0ZmlsZWluZm9ybWF0aW9uKGZkKToKLSAgICAgICAgcmV0dXJuIGZkCi0KLWRlZiBzYW1lb3BlbmZpbGUoZjEsIGYyKToKLSAgICAiIiJUZXN0IHdoZXRoZXIgdHdvIGZpbGUgb2JqZWN0cyByZWZlcmVuY2UgdGhlIHNhbWUgZmlsZSIiIgotICAgIHJldHVybiBfZ2V0ZmlsZWluZm9ybWF0aW9uKGYxKSA9PSBfZ2V0ZmlsZWluZm9ybWF0aW9uKGYyKQotCiAKIHRyeToKICAgICAjIFRoZSBnZW5lcmljcGF0aC5pc2RpciBpbXBsZW1lbnRhdGlvbiB1c2VzIG9zLnN0YXQgYW5kIGNoZWNrcyB0aGUgbW9kZQpkaWZmIC0tZ2l0IGEvTGliL250dXJsMnBhdGgucHkgYi9MaWIvbnR1cmwycGF0aC5weQppbmRleCA1MTFkY2VjLi41YTZkNDRhIDEwMDY0NAotLS0gYS9MaWIvbnR1cmwycGF0aC5weQorKysgYi9MaWIvbnR1cmwycGF0aC5weQpAQCAtMjMsNyArMjMsNyBAQAogICAgIGNvbXAgPSB1cmwuc3BsaXQoJ3wnKQogICAgIGlmIGxlbihjb21wKSAhPSAyIG9yIGNvbXBbMF1bLTFdIG5vdCBpbiBzdHJpbmcuYXNjaWlfbGV0dGVyczoKICAgICAgICAgZXJyb3IgPSAnQmFkIFVSTDogJyArIHVybAotICAgICAgICByYWlzZSBJT0Vycm9yKGVycm9yKQorICAgICAgICByYWlzZSBPU0Vycm9yKGVycm9yKQogICAgIGRyaXZlID0gY29tcFswXVstMV0udXBwZXIoKQogICAgIGNvbXBvbmVudHMgPSBjb21wWzFdLnNwbGl0KCcvJykKICAgICBwYXRoID0gZHJpdmUgKyAnOicKQEAgLTU1LDcgKzU1LDcgQEAKICAgICBjb21wID0gcC5zcGxpdCgnOicpCiAgICAgaWYgbGVuKGNvbXApICE9IDIgb3IgbGVuKGNvbXBbMF0pID4gMToKICAgICAgICAgZXJyb3IgPSAnQmFkIHBhdGg6ICcgKyBwCi0gICAgICAgIHJhaXNlIElPRXJyb3IoZXJyb3IpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJyb3IpCiAKICAgICBkcml2ZSA9IHVybGxpYi5wYXJzZS5xdW90ZShjb21wWzBdLnVwcGVyKCkpCiAgICAgY29tcG9uZW50cyA9IGNvbXBbMV0uc3BsaXQoJ1xcJykKZGlmZiAtLWdpdCBhL0xpYi9vcGNvZGUucHkgYi9MaWIvb3Bjb2RlLnB5CmluZGV4IGE2MzlmZTMuLjc4ZDEyMjkgMTAwNjQ0Ci0tLSBhL0xpYi9vcGNvZGUucHkKKysrIGIvTGliL29wY29kZS5weQpAQCAtODQsNyArODQsNiBAQAogZGVmX29wKCdCSU5BUllfT1InLCA2NikKIGRlZl9vcCgnSU5QTEFDRV9QT1dFUicsIDY3KQogZGVmX29wKCdHRVRfSVRFUicsIDY4KQotZGVmX29wKCdTVE9SRV9MT0NBTFMnLCA2OSkKIAogZGVmX29wKCdQUklOVF9FWFBSJywgNzApCiBkZWZfb3AoJ0xPQURfQlVJTERfQ0xBU1MnLCA3MSkKQEAgLTE3OSw2ICsxNzgsOSBAQAogZGVmX29wKCdTRVRfQUREJywgMTQ2KQogZGVmX29wKCdNQVBfQUREJywgMTQ3KQogCitkZWZfb3AoJ0xPQURfQ0xBU1NERVJFRicsIDE0OCkKK2hhc2ZyZWUuYXBwZW5kKDE0OCkKKwogZGVmX29wKCdFWFRFTkRFRF9BUkcnLCAxNDQpCiBFWFRFTkRFRF9BUkcgPSAxNDQKIApkaWZmIC0tZ2l0IGEvTGliL29wZXJhdG9yLnB5IGIvTGliL29wZXJhdG9yLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMWE5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvb3BlcmF0b3IucHkKQEAgLTAsMCArMSw0MTIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyIiIgorT3BlcmF0b3IgSW50ZXJmYWNlCisKK1RoaXMgbW9kdWxlIGV4cG9ydHMgYSBzZXQgb2YgZnVuY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludHJpbnNpYworb3BlcmF0b3JzIG9mIFB5dGhvbi4gIEZvciBleGFtcGxlLCBvcGVyYXRvci5hZGQoeCwgeSkgaXMgZXF1aXZhbGVudAordG8gdGhlIGV4cHJlc3Npb24geCt5LiAgVGhlIGZ1bmN0aW9uIG5hbWVzIGFyZSB0aG9zZSB1c2VkIGZvciBzcGVjaWFsCittZXRob2RzOyB2YXJpYW50cyB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICdfXycgYXJlIGFsc28gcHJvdmlkZWQKK2ZvciBjb252ZW5pZW5jZS4KKworVGhpcyBpcyB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKyIiIgorCitfX2FsbF9fID0gWydhYnMnLCAnYWRkJywgJ2FuZF8nLCAnYXR0cmdldHRlcicsICdjb25jYXQnLCAnY29udGFpbnMnLCAnY291bnRPZicsCisgICAgICAgICAgICdkZWxpdGVtJywgJ2VxJywgJ2Zsb29yZGl2JywgJ2dlJywgJ2dldGl0ZW0nLCAnZ3QnLCAnaWFkZCcsICdpYW5kJywKKyAgICAgICAgICAgJ2ljb25jYXQnLCAnaWZsb29yZGl2JywgJ2lsc2hpZnQnLCAnaW1vZCcsICdpbXVsJywgJ2luZGV4JywKKyAgICAgICAgICAgJ2luZGV4T2YnLCAnaW52JywgJ2ludmVydCcsICdpb3InLCAnaXBvdycsICdpcnNoaWZ0JywgJ2lzXycsCisgICAgICAgICAgICdpc19ub3QnLCAnaXN1YicsICdpdGVtZ2V0dGVyJywgJ2l0cnVlZGl2JywgJ2l4b3InLCAnbGUnLAorICAgICAgICAgICAnbGVuZ3RoX2hpbnQnLCAnbHNoaWZ0JywgJ2x0JywgJ21ldGhvZGNhbGxlcicsICdtb2QnLCAnbXVsJywgJ25lJywKKyAgICAgICAgICAgJ25lZycsICdub3RfJywgJ29yXycsICdwb3MnLCAncG93JywgJ3JzaGlmdCcsICdzZXRpdGVtJywgJ3N1YicsCisgICAgICAgICAgICd0cnVlZGl2JywgJ3RydXRoJywgJ3hvciddCisKK2Zyb20gYnVpbHRpbnMgaW1wb3J0IGFicyBhcyBfYWJzCisKKworIyBDb21wYXJpc29uIE9wZXJhdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiMKKworZGVmIGx0KGEsIGIpOgorICAgICJTYW1lIGFzIGEgPCBiLiIKKyAgICByZXR1cm4gYSA8IGIKKworZGVmIGxlKGEsIGIpOgorICAgICJTYW1lIGFzIGEgPD0gYi4iCisgICAgcmV0dXJuIGEgPD0gYgorCitkZWYgZXEoYSwgYik6CisgICAgIlNhbWUgYXMgYSA9PSBiLiIKKyAgICByZXR1cm4gYSA9PSBiCisKK2RlZiBuZShhLCBiKToKKyAgICAiU2FtZSBhcyBhICE9IGIuIgorICAgIHJldHVybiBhICE9IGIKKworZGVmIGdlKGEsIGIpOgorICAgICJTYW1lIGFzIGEgPj0gYi4iCisgICAgcmV0dXJuIGEgPj0gYgorCitkZWYgZ3QoYSwgYik6CisgICAgIlNhbWUgYXMgYSA+IGIuIgorICAgIHJldHVybiBhID4gYgorCisjIExvZ2ljYWwgT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIworCitkZWYgbm90XyhhKToKKyAgICAiU2FtZSBhcyBub3QgYS4iCisgICAgcmV0dXJuIG5vdCBhCisKK2RlZiB0cnV0aChhKToKKyAgICAiUmV0dXJuIFRydWUgaWYgYSBpcyB0cnVlLCBGYWxzZSBvdGhlcndpc2UuIgorICAgIHJldHVybiBUcnVlIGlmIGEgZWxzZSBGYWxzZQorCitkZWYgaXNfKGEsIGIpOgorICAgICJTYW1lIGFzIGEgaXMgYi4iCisgICAgcmV0dXJuIGEgaXMgYgorCitkZWYgaXNfbm90KGEsIGIpOgorICAgICJTYW1lIGFzIGEgaXMgbm90IGIuIgorICAgIHJldHVybiBhIGlzIG5vdCBiCisKKyMgTWF0aGVtYXRpY2FsL0JpdHdpc2UgT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiojCisKK2RlZiBhYnMoYSk6CisgICAgIlNhbWUgYXMgYWJzKGEpLiIKKyAgICByZXR1cm4gX2FicyhhKQorCitkZWYgYWRkKGEsIGIpOgorICAgICJTYW1lIGFzIGEgKyBiLiIKKyAgICByZXR1cm4gYSArIGIKKworZGVmIGFuZF8oYSwgYik6CisgICAgIlNhbWUgYXMgYSAmIGIuIgorICAgIHJldHVybiBhICYgYgorCitkZWYgZmxvb3JkaXYoYSwgYik6CisgICAgIlNhbWUgYXMgYSAvLyBiLiIKKyAgICByZXR1cm4gYSAvLyBiCisKK2RlZiBpbmRleChhKToKKyAgICAiU2FtZSBhcyBhLl9faW5kZXhfXygpLiIKKyAgICByZXR1cm4gYS5fX2luZGV4X18oKQorCitkZWYgaW52KGEpOgorICAgICJTYW1lIGFzIH5hLiIKKyAgICByZXR1cm4gfmEKK2ludmVydCA9IGludgorCitkZWYgbHNoaWZ0KGEsIGIpOgorICAgICJTYW1lIGFzIGEgPDwgYi4iCisgICAgcmV0dXJuIGEgPDwgYgorCitkZWYgbW9kKGEsIGIpOgorICAgICJTYW1lIGFzIGEgJSBiLiIKKyAgICByZXR1cm4gYSAlIGIKKworZGVmIG11bChhLCBiKToKKyAgICAiU2FtZSBhcyBhICogYi4iCisgICAgcmV0dXJuIGEgKiBiCisKK2RlZiBuZWcoYSk6CisgICAgIlNhbWUgYXMgLWEuIgorICAgIHJldHVybiAtYQorCitkZWYgb3JfKGEsIGIpOgorICAgICJTYW1lIGFzIGEgfCBiLiIKKyAgICByZXR1cm4gYSB8IGIKKworZGVmIHBvcyhhKToKKyAgICAiU2FtZSBhcyArYS4iCisgICAgcmV0dXJuICthCisKK2RlZiBwb3coYSwgYik6CisgICAgIlNhbWUgYXMgYSAqKiBiLiIKKyAgICByZXR1cm4gYSAqKiBiCisKK2RlZiByc2hpZnQoYSwgYik6CisgICAgIlNhbWUgYXMgYSA+PiBiLiIKKyAgICByZXR1cm4gYSA+PiBiCisKK2RlZiBzdWIoYSwgYik6CisgICAgIlNhbWUgYXMgYSAtIGIuIgorICAgIHJldHVybiBhIC0gYgorCitkZWYgdHJ1ZWRpdihhLCBiKToKKyAgICAiU2FtZSBhcyBhIC8gYi4iCisgICAgcmV0dXJuIGEgLyBiCisKK2RlZiB4b3IoYSwgYik6CisgICAgIlNhbWUgYXMgYSBeIGIuIgorICAgIHJldHVybiBhIF4gYgorCisjIFNlcXVlbmNlIE9wZXJhdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIworCitkZWYgY29uY2F0KGEsIGIpOgorICAgICJTYW1lIGFzIGEgKyBiLCBmb3IgYSBhbmQgYiBzZXF1ZW5jZXMuIgorICAgIGlmIG5vdCBoYXNhdHRyKGEsICdfX2dldGl0ZW1fXycpOgorICAgICAgICBtc2cgPSAiJyVzJyBvYmplY3QgY2FuJ3QgYmUgY29uY2F0ZW5hdGVkIiAlIHR5cGUoYSkuX19uYW1lX18KKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKKyAgICByZXR1cm4gYSArIGIKKworZGVmIGNvbnRhaW5zKGEsIGIpOgorICAgICJTYW1lIGFzIGIgaW4gYSAobm90ZSByZXZlcnNlZCBvcGVyYW5kcykuIgorICAgIHJldHVybiBiIGluIGEKKworZGVmIGNvdW50T2YoYSwgYik6CisgICAgIlJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVzIGIgb2NjdXJzIGluIGEuIgorICAgIGNvdW50ID0gMAorICAgIGZvciBpIGluIGE6CisgICAgICAgIGlmIGkgPT0gYjoKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICByZXR1cm4gY291bnQKKworZGVmIGRlbGl0ZW0oYSwgYik6CisgICAgIlNhbWUgYXMgZGVsIGFbYl0uIgorICAgIGRlbCBhW2JdCisKK2RlZiBnZXRpdGVtKGEsIGIpOgorICAgICJTYW1lIGFzIGFbYl0uIgorICAgIHJldHVybiBhW2JdCisKK2RlZiBpbmRleE9mKGEsIGIpOgorICAgICJSZXR1cm4gdGhlIGZpcnN0IGluZGV4IG9mIGIgaW4gYS4iCisgICAgZm9yIGksIGogaW4gZW51bWVyYXRlKGEpOgorICAgICAgICBpZiBqID09IGI6CisgICAgICAgICAgICByZXR1cm4gaQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlcXVlbmNlLmluZGV4KHgpOiB4IG5vdCBpbiBzZXF1ZW5jZScpCisKK2RlZiBzZXRpdGVtKGEsIGIsIGMpOgorICAgICJTYW1lIGFzIGFbYl0gPSBjLiIKKyAgICBhW2JdID0gYworCitkZWYgbGVuZ3RoX2hpbnQob2JqLCBkZWZhdWx0PTApOgorICAgICIiIgorICAgIFJldHVybiBhbiBlc3RpbWF0ZSBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIG9iai4KKyAgICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlc2l6aW5nIGNvbnRhaW5lcnMgd2hlbiBidWlsZGluZyBmcm9tIGFuIGl0ZXJhYmxlLgorCisgICAgSWYgdGhlIG9iamVjdCBzdXBwb3J0cyBsZW4oKSwgdGhlIHJlc3VsdCB3aWxsIGJlIGV4YWN0LiBPdGhlcndpc2UsIGl0IG1heQorICAgIG92ZXItIG9yIHVuZGVyLWVzdGltYXRlIGJ5IGFuIGFyYml0cmFyeSBhbW91bnQuIFRoZSByZXN1bHQgd2lsbCBiZSBhbgorICAgIGludGVnZXIgPj0gMC4KKyAgICAiIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShkZWZhdWx0LCBpbnQpOgorICAgICAgICBtc2cgPSAoIiclcycgb2JqZWN0IGNhbm5vdCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyIiAlCisgICAgICAgICAgICAgICB0eXBlKGRlZmF1bHQpLl9fbmFtZV9fKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQorCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gbGVuKG9iaikKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIGhpbnQgPSB0eXBlKG9iaikuX19sZW5ndGhfaGludF9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICByZXR1cm4gZGVmYXVsdAorCisgICAgdHJ5OgorICAgICAgICB2YWwgPSBoaW50KG9iaikKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICByZXR1cm4gZGVmYXVsdAorICAgIGlmIHZhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgcmV0dXJuIGRlZmF1bHQKKyAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWwsIGludCk6CisgICAgICAgIG1zZyA9ICgnX19sZW5ndGhfaGludF9fIG11c3QgYmUgaW50ZWdlciwgbm90ICVzJyAlCisgICAgICAgICAgICAgICB0eXBlKHZhbCkuX19uYW1lX18pCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCisgICAgaWYgdmFsIDwgMDoKKyAgICAgICAgbXNnID0gJ19fbGVuZ3RoX2hpbnRfXygpIHNob3VsZCByZXR1cm4gPj0gMCcKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgcmV0dXJuIHZhbAorCisjIEdlbmVyYWxpemVkIExvb2t1cCBPYmplY3RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIworCitjbGFzcyBhdHRyZ2V0dGVyOgorICAgICIiIgorICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGZldGNoZXMgdGhlIGdpdmVuIGF0dHJpYnV0ZShzKSBmcm9tIGl0cyBvcGVyYW5kLgorICAgIEFmdGVyIGYgPSBhdHRyZ2V0dGVyKCduYW1lJyksIHRoZSBjYWxsIGYocikgcmV0dXJucyByLm5hbWUuCisgICAgQWZ0ZXIgZyA9IGF0dHJnZXR0ZXIoJ25hbWUnLCAnZGF0ZScpLCB0aGUgY2FsbCBnKHIpIHJldHVybnMgKHIubmFtZSwgci5kYXRlKS4KKyAgICBBZnRlciBoID0gYXR0cmdldHRlcignbmFtZS5maXJzdCcsICduYW1lLmxhc3QnKSwgdGhlIGNhbGwgaChyKSByZXR1cm5zCisgICAgKHIubmFtZS5maXJzdCwgci5uYW1lLmxhc3QpLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRyLCAqYXR0cnMpOgorICAgICAgICBpZiBub3QgYXR0cnM6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyLCBzdHIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYXR0cmlidXRlIG5hbWUgbXVzdCBiZSBhIHN0cmluZycpCisgICAgICAgICAgICBuYW1lcyA9IGF0dHIuc3BsaXQoJy4nKQorICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIG5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG9iagorICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGdldHRlcnMgPSB0dXBsZShtYXAoYXR0cmdldHRlciwgKGF0dHIsKSArIGF0dHJzKSkKKyAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKGdldHRlcihvYmopIGZvciBnZXR0ZXIgaW4gZ2V0dGVycykKKyAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwob2JqKQorCitjbGFzcyBpdGVtZ2V0dGVyOgorICAgICIiIgorICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGZldGNoZXMgdGhlIGdpdmVuIGl0ZW0ocykgZnJvbSBpdHMgb3BlcmFuZC4KKyAgICBBZnRlciBmID0gaXRlbWdldHRlcigyKSwgdGhlIGNhbGwgZihyKSByZXR1cm5zIHJbMl0uCisgICAgQWZ0ZXIgZyA9IGl0ZW1nZXR0ZXIoMiwgNSwgMyksIHRoZSBjYWxsIGcocikgcmV0dXJucyAoclsyXSwgcls1XSwgclszXSkKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbSwgKml0ZW1zKToKKyAgICAgICAgaWYgbm90IGl0ZW1zOgorICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW2l0ZW1dCisgICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXRlbXMgPSAoaXRlbSwpICsgaXRlbXMKKyAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG9ialtpXSBmb3IgaSBpbiBpdGVtcykKKyAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwob2JqKQorCitjbGFzcyBtZXRob2RjYWxsZXI6CisgICAgIiIiCisgICAgUmV0dXJuIGEgY2FsbGFibGUgb2JqZWN0IHRoYXQgY2FsbHMgdGhlIGdpdmVuIG1ldGhvZCBvbiBpdHMgb3BlcmFuZC4KKyAgICBBZnRlciBmID0gbWV0aG9kY2FsbGVyKCduYW1lJyksIHRoZSBjYWxsIGYocikgcmV0dXJucyByLm5hbWUoKS4KKyAgICBBZnRlciBnID0gbWV0aG9kY2FsbGVyKCduYW1lJywgJ2RhdGUnLCBmb289MSksIHRoZSBjYWxsIGcocikgcmV0dXJucworICAgIHIubmFtZSgnZGF0ZScsIGZvbz0xKS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBsZW4oYXJncykgPCAyOgorICAgICAgICAgICAgbXNnID0gIm1ldGhvZGNhbGxlciBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQsIHRoZSBtZXRob2QgbmFtZSIKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCisgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgIHNlbGYuX25hbWUgPSBhcmdzWzFdCisgICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzWzI6XQorICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosIHNlbGYuX25hbWUpKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKKworIyBJbi1wbGFjZSBPcGVyYXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiMKKworZGVmIGlhZGQoYSwgYik6CisgICAgIlNhbWUgYXMgYSArPSBiLiIKKyAgICBhICs9IGIKKyAgICByZXR1cm4gYQorCitkZWYgaWFuZChhLCBiKToKKyAgICAiU2FtZSBhcyBhICY9IGIuIgorICAgIGEgJj0gYgorICAgIHJldHVybiBhCisKK2RlZiBpY29uY2F0KGEsIGIpOgorICAgICJTYW1lIGFzIGEgKz0gYiwgZm9yIGEgYW5kIGIgc2VxdWVuY2VzLiIKKyAgICBpZiBub3QgaGFzYXR0cihhLCAnX19nZXRpdGVtX18nKToKKyAgICAgICAgbXNnID0gIiclcycgb2JqZWN0IGNhbid0IGJlIGNvbmNhdGVuYXRlZCIgJSB0eXBlKGEpLl9fbmFtZV9fCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCisgICAgYSArPSBiCisgICAgcmV0dXJuIGEKKworZGVmIGlmbG9vcmRpdihhLCBiKToKKyAgICAiU2FtZSBhcyBhIC8vPSBiLiIKKyAgICBhIC8vPSBiCisgICAgcmV0dXJuIGEKKworZGVmIGlsc2hpZnQoYSwgYik6CisgICAgIlNhbWUgYXMgYSA8PD0gYi4iCisgICAgYSA8PD0gYgorICAgIHJldHVybiBhCisKK2RlZiBpbW9kKGEsIGIpOgorICAgICJTYW1lIGFzIGEgJT0gYi4iCisgICAgYSAlPSBiCisgICAgcmV0dXJuIGEKKworZGVmIGltdWwoYSwgYik6CisgICAgIlNhbWUgYXMgYSAqPSBiLiIKKyAgICBhICo9IGIKKyAgICByZXR1cm4gYQorCitkZWYgaW9yKGEsIGIpOgorICAgICJTYW1lIGFzIGEgfD0gYi4iCisgICAgYSB8PSBiCisgICAgcmV0dXJuIGEKKworZGVmIGlwb3coYSwgYik6CisgICAgIlNhbWUgYXMgYSAqKj0gYi4iCisgICAgYSAqKj1iCisgICAgcmV0dXJuIGEKKworZGVmIGlyc2hpZnQoYSwgYik6CisgICAgIlNhbWUgYXMgYSA+Pj0gYi4iCisgICAgYSA+Pj0gYgorICAgIHJldHVybiBhCisKK2RlZiBpc3ViKGEsIGIpOgorICAgICJTYW1lIGFzIGEgLT0gYi4iCisgICAgYSAtPSBiCisgICAgcmV0dXJuIGEKKworZGVmIGl0cnVlZGl2KGEsIGIpOgorICAgICJTYW1lIGFzIGEgLz0gYi4iCisgICAgYSAvPSBiCisgICAgcmV0dXJuIGEKKworZGVmIGl4b3IoYSwgYik6CisgICAgIlNhbWUgYXMgYSBePSBiLiIKKyAgICBhIF49IGIKKyAgICByZXR1cm4gYQorCisKK3RyeToKKyAgICBmcm9tIF9vcGVyYXRvciBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgZnJvbSBfb3BlcmF0b3IgaW1wb3J0IF9fZG9jX18KKworIyBBbGwgb2YgdGhlc2UgIl9fZnVuY19fID0gZnVuYyIgYXNzaWdubWVudHMgaGF2ZSB0byBoYXBwZW4gYWZ0ZXIgaW1wb3J0aW5nCisjIGZyb20gX29wZXJhdG9yIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHNldCB0byB0aGUgcmlnaHQgZnVuY3Rpb24KK19fbHRfXyA9IGx0CitfX2xlX18gPSBsZQorX19lcV9fID0gZXEKK19fbmVfXyA9IG5lCitfX2dlX18gPSBnZQorX19ndF9fID0gZ3QKK19fbm90X18gPSBub3RfCitfX2Fic19fID0gYWJzCitfX2FkZF9fID0gYWRkCitfX2FuZF9fID0gYW5kXworX19mbG9vcmRpdl9fID0gZmxvb3JkaXYKK19faW5kZXhfXyA9IGluZGV4CitfX2ludl9fID0gaW52CitfX2ludmVydF9fID0gaW52ZXJ0CitfX2xzaGlmdF9fID0gbHNoaWZ0CitfX21vZF9fID0gbW9kCitfX211bF9fID0gbXVsCitfX25lZ19fID0gbmVnCitfX29yX18gPSBvcl8KK19fcG9zX18gPSBwb3MKK19fcG93X18gPSBwb3cKK19fcnNoaWZ0X18gPSByc2hpZnQKK19fc3ViX18gPSBzdWIKK19fdHJ1ZWRpdl9fID0gdHJ1ZWRpdgorX194b3JfXyA9IHhvcgorX19jb25jYXRfXyA9IGNvbmNhdAorX19jb250YWluc19fID0gY29udGFpbnMKK19fZGVsaXRlbV9fID0gZGVsaXRlbQorX19nZXRpdGVtX18gPSBnZXRpdGVtCitfX3NldGl0ZW1fXyA9IHNldGl0ZW0KK19faWFkZF9fID0gaWFkZAorX19pYW5kX18gPSBpYW5kCitfX2ljb25jYXRfXyA9IGljb25jYXQKK19faWZsb29yZGl2X18gPSBpZmxvb3JkaXYKK19faWxzaGlmdF9fID0gaWxzaGlmdAorX19pbW9kX18gPSBpbW9kCitfX2ltdWxfXyA9IGltdWwKK19faW9yX18gPSBpb3IKK19faXBvd19fID0gaXBvdworX19pcnNoaWZ0X18gPSBpcnNoaWZ0CitfX2lzdWJfXyA9IGlzdWIKK19faXRydWVkaXZfXyA9IGl0cnVlZGl2CitfX2l4b3JfXyA9IGl4b3IKZGlmZiAtLWdpdCBhL0xpYi9vcy5weSBiL0xpYi9vcy5weQppbmRleCAwNjYxNmM2Li45NjcyMGU0IDEwMDY0NAotLS0gYS9MaWIvb3MucHkKKysrIGIvTGliL29zLnB5CkBAIC0xLDkgKzEsOSBAQAogciIiIk9TIHJvdXRpbmVzIGZvciBNYWMsIE5ULCBvciBQb3NpeCBkZXBlbmRpbmcgb24gd2hhdCBzeXN0ZW0gd2UncmUgb24uCiAKIFRoaXMgZXhwb3J0czoKLSAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXgsIG50LCBvczIsIG9yIGNlLCBlLmcuIHVubGluaywgc3RhdCwgZXRjLgorICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCwgbnQgb3IgY2UsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCiAgIC0gb3MucGF0aCBpcyBlaXRoZXIgcG9zaXhwYXRoIG9yIG50cGF0aAotICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcsICdudCcsICdvczInIG9yICdjZScuCisgIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JywgJ250JyBvciAnY2UnLgogICAtIG9zLmN1cmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5ICgnLicgb3IgJzonKQogICAtIG9zLnBhcmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcmVudCBkaXJlY3RvcnkgKCcuLicgb3IgJzo6JykKICAgLSBvcy5zZXAgaXMgdGhlIChvciBhIG1vc3QgY29tbW9uKSBwYXRobmFtZSBzZXBhcmF0b3IgKCcvJyBvciAnOicgb3IgJ1xcJykKQEAgLTgxLDMwICs4MSw2IEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAKLWVsaWYgJ29zMicgaW4gX25hbWVzOgotICAgIG5hbWUgPSAnb3MyJwotICAgIGxpbmVzZXAgPSAnXHJcbicKLSAgICBmcm9tIG9zMiBpbXBvcnQgKgotICAgIHRyeToKLSAgICAgICAgZnJvbSBvczIgaW1wb3J0IF9leGl0Ci0gICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgaWYgc3lzLnZlcnNpb24uZmluZCgnRU1YIEdDQycpID09IC0xOgotICAgICAgICBpbXBvcnQgbnRwYXRoIGFzIHBhdGgKLSAgICBlbHNlOgotICAgICAgICBpbXBvcnQgb3MyZW14cGF0aCBhcyBwYXRoCi0gICAgICAgIGZyb20gX2VteF9saW5rIGltcG9ydCBsaW5rCi0KLSAgICBpbXBvcnQgb3MyCi0gICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3Qob3MyKSkKLSAgICBkZWwgb3MyCi0KLSAgICB0cnk6Ci0gICAgICAgIGZyb20gb3MyIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLQogZWxpZiAnY2UnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ2NlJwogICAgIGxpbmVzZXAgPSAnXHJcbicKQEAgLTI1NiwxMCArMjMyLDkgQEAKICAgICBpZiBoZWFkIGFuZCB0YWlsIGFuZCBub3QgcGF0aC5leGlzdHMoaGVhZCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG1ha2VkaXJzKGhlYWQsIG1vZGUsIGV4aXN0X29rKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgIyBiZSBoYXBweSBpZiBzb21lb25lIGFscmVhZHkgY3JlYXRlZCB0aGUgcGF0aAotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgY2RpciA9IGN1cmRpcgogICAgICAgICBpZiBpc2luc3RhbmNlKHRhaWwsIGJ5dGVzKToKICAgICAgICAgICAgIGNkaXIgPSBieXRlcyhjdXJkaXIsICdBU0NJSScpCkBAIC0zMDIsNyArMjc3LDcgQEAKICAgICB3aGlsZSBoZWFkIGFuZCB0YWlsOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBybWRpcihoZWFkKQotICAgICAgICBleGNlcHQgZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaGVhZCwgdGFpbCA9IHBhdGguc3BsaXQoaGVhZCkKIApAQCAtMzI5LDcgKzMwNCw3IEBACiAgICAgaWYgaGVhZCBhbmQgdGFpbDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVtb3ZlZGlycyhoZWFkKQotICAgICAgICBleGNlcHQgZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCiBfX2FsbF9fLmV4dGVuZChbIm1ha2VkaXJzIiwgInJlbW92ZWRpcnMiLCAicmVuYW1lcyJdKQpAQCAtMzY1LDcgKzM0MCw3IEBACiAKICAgICBCeSBkZWZhdWx0IGVycm9ycyBmcm9tIHRoZSBvcy5saXN0ZGlyKCkgY2FsbCBhcmUgaWdub3JlZC4gIElmCiAgICAgb3B0aW9uYWwgYXJnICdvbmVycm9yJyBpcyBzcGVjaWZpZWQsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uOyBpdAotICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCBhbiBvcy5lcnJvciBpbnN0YW5jZS4gIEl0IGNhbgorICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCBhbiBPU0Vycm9yIGluc3RhbmNlLiAgSXQgY2FuCiAgICAgcmVwb3J0IHRoZSBlcnJvciB0byBjb250aW51ZSB3aXRoIHRoZSB3YWxrLCBvciByYWlzZSB0aGUgZXhjZXB0aW9uCiAgICAgdG8gYWJvcnQgdGhlIHdhbGsuICBOb3RlIHRoYXQgdGhlIGZpbGVuYW1lIGlzIGF2YWlsYWJsZSBhcyB0aGUKICAgICBmaWxlbmFtZSBhdHRyaWJ1dGUgb2YgdGhlIGV4Y2VwdGlvbiBvYmplY3QuCkBAIC0zOTksMTAgKzM3NCwxMCBAQAogICAgICMgbWlub3IgcmVhc29uIHdoZW4gKHNheSkgYSB0aG91c2FuZCByZWFkYWJsZSBkaXJlY3RvcmllcyBhcmUgc3RpbGwKICAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgIHRyeToKLSAgICAgICAgIyBOb3RlIHRoYXQgbGlzdGRpciBhbmQgZXJyb3IgYXJlIGdsb2JhbHMgaW4gdGhpcyBtb2R1bGUgZHVlCisgICAgICAgICMgTm90ZSB0aGF0IGxpc3RkaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQogICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCiAgICAgICAgIG5hbWVzID0gbGlzdGRpcih0b3ApCi0gICAgZXhjZXB0IGVycm9yIGFzIGVycjoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvbmVycm9yKGVycikKICAgICAgICAgcmV0dXJuCkBAIC01MDQsNyArNDc5LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcmlnX3N0ID0gc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCiAgICAgICAgICAgICAgICAgZGlyZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZLCBkaXJfZmQ9dG9wZmQpCi0gICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyKQogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtNTk5LDcgKzU3NCw3IEBACiAgICAgICAgIGZ1bGxuYW1lID0gcGF0aC5qb2luKGRpciwgZmlsZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhlY19mdW5jKGZ1bGxuYW1lLCAqYXJncmVzdCkKLSAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBsYXN0X2V4YyA9IGUKICAgICAgICAgICAgIHRiID0gc3lzLmV4Y19pbmZvKClbMl0KICAgICAgICAgICAgIGlmIChlLmVycm5vICE9IGVycm5vLkVOT0VOVCBhbmQgZS5lcnJubyAhPSBlcnJuby5FTk9URElSCkBAIC03MTYsMTcgKzY5MSwxOSBAQAogZXhjZXB0IE5hbWVFcnJvcjoKICAgICBfcHV0ZW52ID0gbGFtYmRhIGtleSwgdmFsdWU6IE5vbmUKIGVsc2U6Ci0gICAgX19hbGxfXy5hcHBlbmQoInB1dGVudiIpCisgICAgaWYgInB1dGVudiIgbm90IGluIF9fYWxsX186CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCJwdXRlbnYiKQogCiB0cnk6CiAgICAgX3Vuc2V0ZW52ID0gdW5zZXRlbnYKIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgX3Vuc2V0ZW52ID0gbGFtYmRhIGtleTogX3B1dGVudihrZXksICIiKQogZWxzZToKLSAgICBfX2FsbF9fLmFwcGVuZCgidW5zZXRlbnYiKQorICAgIGlmICJ1bnNldGVudiIgbm90IGluIF9fYWxsX186CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCJ1bnNldGVudiIpCiAKIGRlZiBfY3JlYXRlZW52aXJvbigpOgotICAgIGlmIG5hbWUgaW4gKCdvczInLCAnbnQnKToKKyAgICBpZiBuYW1lID09ICdudCc6CiAgICAgICAgICMgV2hlcmUgRW52IFZhciBOYW1lcyBNdXN0IEJlIFVQUEVSQ0FTRQogICAgICAgICBkZWYgY2hlY2tfc3RyKHZhbHVlKToKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgpAQCAtNzY2LDcgKzc0Myw3IEBACiAgICAga2V5LCBkZWZhdWx0IGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuIiIiCiAgICAgcmV0dXJuIGVudmlyb24uZ2V0KGtleSwgZGVmYXVsdCkKIAotc3VwcG9ydHNfYnl0ZXNfZW52aXJvbiA9IG5hbWUgbm90IGluICgnb3MyJywgJ250JykKK3N1cHBvcnRzX2J5dGVzX2Vudmlyb24gPSAobmFtZSAhPSAnbnQnKQogX19hbGxfXy5leHRlbmQoKCJnZXRlbnYiLCAic3VwcG9ydHNfYnl0ZXNfZW52aXJvbiIpKQogCiBpZiBzdXBwb3J0c19ieXRlc19lbnZpcm9uOgpAQCAtODY1LDcgKzg0Miw3IEBACiAgICAgICAgICAgICAgICAgZWxpZiBXSUZFWElURUQoc3RzKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdFWElUU1RBVFVTKHN0cykKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiTm90IHN0b3BwZWQsIHNpZ25hbGVkIG9yIGV4aXRlZD8/PyIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIk5vdCBzdG9wcGVkLCBzaWduYWxlZCBvciBleGl0ZWQ/Pz8iKQogCiAgICAgZGVmIHNwYXdudihtb2RlLCBmaWxlLCBhcmdzKToKICAgICAgICAgIiIic3Bhd252KG1vZGUsIGZpbGUsIGFyZ3MpIC0+IGludGVnZXIKQEAgLTkwOCw2ICs4ODUsMTAgQEAKIG90aGVyd2lzZSByZXR1cm4gLVNJRywgd2hlcmUgU0lHIGlzIHRoZSBzaWduYWwgdGhhdCBraWxsZWQgaXQuICIiIgogICAgICAgICByZXR1cm4gX3NwYXdudmVmKG1vZGUsIGZpbGUsIGFyZ3MsIGVudiwgZXhlY3ZwZSkKIAorCisgICAgX19hbGxfXy5leHRlbmQoWyJzcGF3bnYiLCAic3Bhd252ZSIsICJzcGF3bnZwIiwgInNwYXdudnBlIl0pCisKKwogaWYgX2V4aXN0cygic3Bhd252Iik6CiAgICAgIyBUaGVzZSBhcmVuJ3Qgc3VwcGxpZWQgYnkgdGhlIGJhc2ljIFdpbmRvd3MgY29kZQogICAgICMgYnV0IGNhbiBiZSBlYXNpbHkgaW1wbGVtZW50ZWQgaW4gUHl0aG9uCkBAIC05MzMsNyArOTE0LDcgQEAKICAgICAgICAgcmV0dXJuIHNwYXdudmUobW9kZSwgZmlsZSwgYXJnc1s6LTFdLCBlbnYpCiAKIAotICAgIF9fYWxsX18uZXh0ZW5kKFsic3Bhd252IiwgInNwYXdudmUiLCAic3Bhd25sIiwgInNwYXdubGUiLF0pCisgICAgX19hbGxfXy5leHRlbmQoWyJzcGF3bmwiLCAic3Bhd25sZSJdKQogCiAKIGlmIF9leGlzdHMoInNwYXdudnAiKToKQEAgLTk2MSw3ICs5NDIsOCBAQAogICAgICAgICByZXR1cm4gc3Bhd252cGUobW9kZSwgZmlsZSwgYXJnc1s6LTFdLCBlbnYpCiAKIAotICAgIF9fYWxsX18uZXh0ZW5kKFsic3Bhd252cCIsICJzcGF3bnZwZSIsICJzcGF3bmxwIiwgInNwYXdubHBlIixdKQorICAgIF9fYWxsX18uZXh0ZW5kKFsic3Bhd25scCIsICJzcGF3bmxwZSJdKQorCiAKIGltcG9ydCBjb3B5cmVnIGFzIF9jb3B5cmVnCiAKZGlmZiAtLWdpdCBhL0xpYi9vczJlbXhwYXRoLnB5IGIvTGliL29zMmVteHBhdGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjY2JmOGEuLjAwMDAwMDAKLS0tIGEvTGliL29zMmVteHBhdGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotIyBNb2R1bGUgJ29zMmVteHBhdGgnIC0tIGNvbW1vbiBvcGVyYXRpb25zIG9uIE9TLzIgcGF0aG5hbWVzCi0iIiJDb21tb24gcGF0aG5hbWUgbWFuaXB1bGF0aW9ucywgT1MvMiBFTVggdmVyc2lvbi4KLQotSW5zdGVhZCBvZiBpbXBvcnRpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHksIGltcG9ydCBvcyBhbmQgcmVmZXIgdG8gdGhpcwotbW9kdWxlIGFzIG9zLnBhdGguCi0iIiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3RhdAotZnJvbSBnZW5lcmljcGF0aCBpbXBvcnQgKgotZnJvbSBudHBhdGggaW1wb3J0IChleHBhbmR1c2VyLCBleHBhbmR2YXJzLCBpc2FicywgaXNsaW5rLCBzcGxpdGRyaXZlLAotICAgICAgICAgICAgICAgICAgICBzcGxpdGV4dCwgc3BsaXQpCi0KLV9fYWxsX18gPSBbIm5vcm1jYXNlIiwiaXNhYnMiLCJqb2luIiwic3BsaXRkcml2ZSIsInNwbGl0Iiwic3BsaXRleHQiLAotICAgICAgICAgICAiYmFzZW5hbWUiLCJkaXJuYW1lIiwiY29tbW9ucHJlZml4IiwiZ2V0c2l6ZSIsImdldG10aW1lIiwKLSAgICAgICAgICAgImdldGF0aW1lIiwiZ2V0Y3RpbWUiLCAiaXNsaW5rIiwiZXhpc3RzIiwibGV4aXN0cyIsImlzZGlyIiwiaXNmaWxlIiwKLSAgICAgICAgICAgImlzbW91bnQiLCJleHBhbmR1c2VyIiwiZXhwYW5kdmFycyIsIm5vcm1wYXRoIiwiYWJzcGF0aCIsCi0gICAgICAgICAgICJzcGxpdHVuYyIsImN1cmRpciIsInBhcmRpciIsInNlcCIsInBhdGhzZXAiLCJkZWZwYXRoIiwiYWx0c2VwIiwKLSAgICAgICAgICAgImV4dHNlcCIsImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIl0KLQotIyBzdHJpbmdzIHJlcHJlc2VudGluZyB2YXJpb3VzIHBhdGgtcmVsYXRlZCBiaXRzIGFuZCBwaWVjZXMKLWN1cmRpciA9ICcuJwotcGFyZGlyID0gJy4uJwotZXh0c2VwID0gJy4nCi1zZXAgPSAnLycKLWFsdHNlcCA9ICdcXCcKLXBhdGhzZXAgPSAnOycKLWRlZnBhdGggPSAnLjtDOlxcYmluJwotZGV2bnVsbCA9ICdudWwnCi0KLSMgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUgYW5kIG1hcCBzbGFzaGVzIHRvIGJhY2tzbGFzaGVzLgotIyBPdGhlciBub3JtYWxpemF0aW9ucyAoc3VjaCBhcyBvcHRpbWl6aW5nICcuLi8nIGF3YXkpIGFyZSBub3QgZG9uZQotIyAodGhpcyBpcyBkb25lIGJ5IG5vcm1wYXRoKS4KLQotZGVmIG5vcm1jYXNlKHMpOgotICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgotCi0gICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgYWx0c2VwcyBpbnRvIHNlcHMuIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBzdHIpKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3JtY2FzZSgpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibm90ICd7fSciLmZvcm1hdChzLl9fY2xhc3NfXy5fX25hbWVfXykpCi0gICAgcmV0dXJuIHMucmVwbGFjZSgnXFwnLCAnLycpLmxvd2VyKCkKLQotCi0jIEpvaW4gdHdvIChvciBtb3JlKSBwYXRocy4KLQotZGVmIGpvaW4oYSwgKnApOgotICAgICIiIkpvaW4gdHdvIG9yIG1vcmUgcGF0aG5hbWUgY29tcG9uZW50cywgaW5zZXJ0aW5nIHNlcCBhcyBuZWVkZWQiIiIKLSAgICBwYXRoID0gYQotICAgIGZvciBiIGluIHA6Ci0gICAgICAgIGlmIGlzYWJzKGIpOgotICAgICAgICAgICAgcGF0aCA9IGIKLSAgICAgICAgZWxpZiBwYXRoID09ICcnIG9yIHBhdGhbLTE6XSBpbiAnL1xcOic6Ci0gICAgICAgICAgICBwYXRoID0gcGF0aCArIGIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhdGggPSBwYXRoICsgJy8nICsgYgotICAgIHJldHVybiBwYXRoCi0KLQotIyBQYXJzZSBVTkMgcGF0aHMKLWRlZiBzcGxpdHVuYyhwKToKLSAgICAiIiJTcGxpdCBhIHBhdGhuYW1lIGludG8gVU5DIG1vdW50IHBvaW50IGFuZCByZWxhdGl2ZSBwYXRoIHNwZWNpZmllcnMuCi0KLSAgICBSZXR1cm4gYSAyLXR1cGxlICh1bmMsIHJlc3QpOyBlaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuCi0gICAgSWYgdW5jIGlzIG5vdCBlbXB0eSwgaXQgaGFzIHRoZSBmb3JtICcvL2hvc3QvbW91bnQnIChvciBzaW1pbGFyCi0gICAgdXNpbmcgYmFja3NsYXNoZXMpLiAgdW5jK3Jlc3QgaXMgYWx3YXlzIHRoZSBpbnB1dCBwYXRoLgotICAgIFBhdGhzIGNvbnRhaW5pbmcgZHJpdmUgbGV0dGVycyBuZXZlciBoYXZlIGFuIFVOQyBwYXJ0LgotICAgICIiIgotICAgIGlmIHBbMToyXSA9PSAnOic6Ci0gICAgICAgIHJldHVybiAnJywgcCAjIERyaXZlIGxldHRlciBwcmVzZW50Ci0gICAgZmlyc3RUd28gPSBwWzA6Ml0KLSAgICBpZiBmaXJzdFR3byA9PSAnLycgKiAyIG9yIGZpcnN0VHdvID09ICdcXCcgKiAyOgotICAgICAgICAjIGlzIGEgVU5DIHBhdGg6Ci0gICAgICAgICMgdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYgZXF1aXZhbGVudCB0byBkcml2ZSBsZXR0ZXIKLSAgICAgICAgIyBcXG1hY2hpbmVcbW91bnRwb2ludFxkaXJlY3Rvcmllcy4uLgotICAgICAgICAjICAgICAgICAgICBkaXJlY3RvcnkgXl5eXl5eXl5eXl5eXl5eCi0gICAgICAgIG5vcm1wID0gbm9ybWNhc2UocCkKLSAgICAgICAgaW5kZXggPSBub3JtcC5maW5kKCcvJywgMikKLSAgICAgICAgaWYgaW5kZXggPT0gLTE6Ci0gICAgICAgICAgICAjI3JhaXNlIFJ1bnRpbWVFcnJvciwgJ2lsbGVnYWwgVU5DIHBhdGg6ICInICsgcCArICciJwotICAgICAgICAgICAgcmV0dXJuICgiIiwgcCkKLSAgICAgICAgaW5kZXggPSBub3JtcC5maW5kKCcvJywgaW5kZXggKyAxKQotICAgICAgICBpZiBpbmRleCA9PSAtMToKLSAgICAgICAgICAgIGluZGV4ID0gbGVuKHApCi0gICAgICAgIHJldHVybiBwWzppbmRleF0sIHBbaW5kZXg6XQotICAgIHJldHVybiAnJywgcAotCi0KLSMgUmV0dXJuIHRoZSB0YWlsIChiYXNlbmFtZSkgcGFydCBvZiBhIHBhdGguCi0KLWRlZiBiYXNlbmFtZShwKToKLSAgICAiIiJSZXR1cm5zIHRoZSBmaW5hbCBjb21wb25lbnQgb2YgYSBwYXRobmFtZSIiIgotICAgIHJldHVybiBzcGxpdChwKVsxXQotCi0KLSMgUmV0dXJuIHRoZSBoZWFkIChkaXJuYW1lKSBwYXJ0IG9mIGEgcGF0aC4KLQotZGVmIGRpcm5hbWUocCk6Ci0gICAgIiIiUmV0dXJucyB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCi0gICAgcmV0dXJuIHNwbGl0KHApWzBdCi0KLQotIyBhbGlhcyBleGlzdHMgdG8gbGV4aXN0cwotbGV4aXN0cyA9IGV4aXN0cwotCi0KLSMgSXMgYSBwYXRoIGEgZGlyZWN0b3J5PwotCi0jIElzIGEgcGF0aCBhIG1vdW50IHBvaW50PyAgRWl0aGVyIGEgcm9vdCAod2l0aCBvciB3aXRob3V0IGRyaXZlIGxldHRlcikKLSMgb3IgYW4gVU5DIHBhdGggd2l0aCBhdCBtb3N0IGEgLyBvciBcIGFmdGVyIHRoZSBtb3VudCBwb2ludC4KLQotZGVmIGlzbW91bnQocGF0aCk6Ci0gICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChkZWZpbmVkIGFzIHJvb3Qgb2YgZHJpdmUpIiIiCi0gICAgdW5jLCByZXN0ID0gc3BsaXR1bmMocGF0aCkKLSAgICBpZiB1bmM6Ci0gICAgICAgIHJldHVybiByZXN0IGluICgiIiwgIi8iLCAiXFwiKQotICAgIHAgPSBzcGxpdGRyaXZlKHBhdGgpWzFdCi0gICAgcmV0dXJuIGxlbihwKSA9PSAxIGFuZCBwWzBdIGluICcvXFwnCi0KLQotIyBOb3JtYWxpemUgYSBwYXRoLCBlLmcuIEEvL0IsIEEvLi9CIGFuZCBBL2Zvby8uLi9CIGFsbCBiZWNvbWUgQS9CLgotCi1kZWYgbm9ybXBhdGgocGF0aCk6Ci0gICAgIiIiTm9ybWFsaXplIHBhdGgsIGVsaW1pbmF0aW5nIGRvdWJsZSBzbGFzaGVzLCBldGMuIiIiCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgcHJlZml4LCBwYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgIHdoaWxlIHBhdGhbOjFdID09ICcvJzoKLSAgICAgICAgcHJlZml4ID0gcHJlZml4ICsgJy8nCi0gICAgICAgIHBhdGggPSBwYXRoWzE6XQotICAgIGNvbXBzID0gcGF0aC5zcGxpdCgnLycpCi0gICAgaSA9IDAKLSAgICB3aGlsZSBpIDwgbGVuKGNvbXBzKToKLSAgICAgICAgaWYgY29tcHNbaV0gPT0gJy4nOgotICAgICAgICAgICAgZGVsIGNvbXBzW2ldCi0gICAgICAgIGVsaWYgY29tcHNbaV0gPT0gJy4uJyBhbmQgaSA+IDAgYW5kIGNvbXBzW2ktMV0gbm90IGluICgnJywgJy4uJyk6Ci0gICAgICAgICAgICBkZWwgY29tcHNbaS0xOmkrMV0KLSAgICAgICAgICAgIGkgPSBpIC0gMQotICAgICAgICBlbGlmIGNvbXBzW2ldID09ICcnIGFuZCBpID4gMCBhbmQgY29tcHNbaS0xXSAhPSAnJzoKLSAgICAgICAgICAgIGRlbCBjb21wc1tpXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgIyBJZiB0aGUgcGF0aCBpcyBub3cgZW1wdHksIHN1YnN0aXR1dGUgJy4nCi0gICAgaWYgbm90IHByZWZpeCBhbmQgbm90IGNvbXBzOgotICAgICAgICBjb21wcy5hcHBlbmQoJy4nKQotICAgIHJldHVybiBwcmVmaXggKyAnLycuam9pbihjb21wcykKLQotCi0jIFJldHVybiBhbiBhYnNvbHV0ZSBwYXRoLgotZGVmIGFic3BhdGgocGF0aCk6Ci0gICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgotICAgIGlmIG5vdCBpc2FicyhwYXRoKToKLSAgICAgICAgcGF0aCA9IGpvaW4ob3MuZ2V0Y3dkKCksIHBhdGgpCi0gICAgcmV0dXJuIG5vcm1wYXRoKHBhdGgpCi0KLSMgcmVhbHBhdGggaXMgYSBuby1vcCBvbiBzeXN0ZW1zIHdpdGhvdXQgaXNsaW5rIHN1cHBvcnQKLXJlYWxwYXRoID0gYWJzcGF0aAotCi1zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyA9IEZhbHNlCmRpZmYgLS1naXQgYS9MaWIvcGRiLnB5IGIvTGliL3BkYi5weQppbmRleCBlNmQ3ZjhmLi5lNTU5NmU1IDEwMDc1NQotLS0gYS9MaWIvcGRiLnB5CisrKyBiL0xpYi9wZGIucHkKQEAgLTkyLDcgKzkyLDcgQEAKICAgICBjcmUgPSByZS5jb21waWxlKHInZGVmXHMrJXNccypbKF0nICUgcmUuZXNjYXBlKGZ1bmNuYW1lKSkKICAgICB0cnk6CiAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSkKLSAgICBleGNlcHQgSU9FcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAjIGNvbnN1bWVyIG9mIHRoaXMgaW5mbyBleHBlY3RzIHRoZSBmaXJzdCBsaW5lIHRvIGJlIDEKICAgICBsaW5lbm8gPSAxCkBAIC0xNzAsMTIgKzE3MCwxMiBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZW52SG9tZSwgIi5wZGJyYyIpKSBhcyByY0ZpbGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcy5leHRlbmQocmNGaWxlKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcy5leHRlbmQocmNGaWxlKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgc2VsZi5jb21tYW5kcyA9IHt9ICMgYXNzb2NpYXRlcyBhIGNvbW1hbmQgbGlzdCB0byBicmVha3BvaW50IG51bWJlcnMKQEAgLTEyNDEsNyArMTI0MSw3IEBACiAgICAgICAgIGJyZWFrbGlzdCA9IHNlbGYuZ2V0X2ZpbGVfYnJlYWtzKGZpbGVuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsaW5lcywgbGluZW5vID0gZ2V0c291cmNlbGluZXMoc2VsZi5jdXJmcmFtZSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLmVycm9yKGVycikKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9wcmludF9saW5lcyhsaW5lcywgbGluZW5vLCBicmVha2xpc3QsIHNlbGYuY3VyZnJhbWUpCkBAIC0xMjU3LDcgKzEyNTcsNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxpbmVzLCBsaW5lbm8gPSBnZXRzb3VyY2VsaW5lcyhvYmopCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgVHlwZUVycm9yKSBhcyBlcnI6CisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgVHlwZUVycm9yKSBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLmVycm9yKGVycikKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9wcmludF9saW5lcyhsaW5lcywgbGluZW5vKQpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMWQ4MTg1Yy4uYjNiNzc1ZiAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNiw5ICsyNiwxMCBAQAogZnJvbSB0eXBlcyBpbXBvcnQgRnVuY3Rpb25UeXBlLCBCdWlsdGluRnVuY3Rpb25UeXBlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQotaW1wb3J0IG1hcnNoYWwKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UKIGltcG9ydCBzeXMKLWltcG9ydCBzdHJ1Y3QKK2Zyb20gc3lzIGltcG9ydCBtYXhzaXplCitmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCiBpbXBvcnQgcmUKIGltcG9ydCBpbwogaW1wb3J0IGNvZGVjcwpAQCAtNTgsMTEgKzU5LDYgQEAKICMgdGhlcmUgYXJlIHRvbyBtYW55IGlzc3VlcyB3aXRoIHRoYXQuCiBERUZBVUxUX1BST1RPQ09MID0gMwogCi0jIFdoeSB1c2Ugc3RydWN0LnBhY2soKSBmb3IgcGlja2xpbmcgYnV0IG1hcnNoYWwubG9hZHMoKSBmb3IKLSMgdW5waWNrbGluZz8gIHN0cnVjdC5wYWNrKCkgaXMgNDAlIGZhc3RlciB0aGFuIG1hcnNoYWwuZHVtcHMoKSwgYnV0Ci0jIG1hcnNoYWwubG9hZHMoKSBpcyB0d2ljZSBhcyBmYXN0IGFzIHN0cnVjdC51bnBhY2soKSEKLW1sb2FkcyA9IG1hcnNoYWwubG9hZHMKLQogY2xhc3MgUGlja2xlRXJyb3IoRXhjZXB0aW9uKToKICAgICAiIiJBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciB0aGUgb3RoZXIgcGlja2xpbmcgZXhjZXB0aW9ucy4iIiIKICAgICBwYXNzCkBAIC0yMzEsNyArMjI3LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoIlBpY2tsZXIuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCBieSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2luaXRfXygpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywpKQogICAgICAgICBpZiBzZWxmLnByb3RvID49IDI6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKFBST1RPICsgYnl0ZXMoW3NlbGYucHJvdG9dKSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoUFJPVE8gKyBwYWNrKCI8QiIsIHNlbGYucHJvdG8pKQogICAgICAgICBzZWxmLnNhdmUob2JqKQogICAgICAgICBzZWxmLndyaXRlKFNUT1ApCiAKQEAgLTI1OCwyMCArMjU0LDIwIEBACiAgICAgICAgIHNlbGYubWVtb1tpZChvYmopXSA9IG1lbW9fbGVuLCBvYmoKIAogICAgICMgUmV0dXJuIGEgUFVUIChCSU5QVVQsIExPTkdfQklOUFVUKSBvcGNvZGUgc3RyaW5nLCB3aXRoIGFyZ3VtZW50IGkuCi0gICAgZGVmIHB1dChzZWxmLCBpLCBwYWNrPXN0cnVjdC5wYWNrKToKKyAgICBkZWYgcHV0KHNlbGYsIGkpOgogICAgICAgICBpZiBzZWxmLmJpbjoKICAgICAgICAgICAgIGlmIGkgPCAyNTY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJJTlBVVCArIGJ5dGVzKFtpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQklOUFVUICsgcGFjaygiPEIiLCBpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19CSU5QVVQgKyBwYWNrKCI8SSIsIGkpCiAKICAgICAgICAgcmV0dXJuIFBVVCArIHJlcHIoaSkuZW5jb2RlKCJhc2NpaSIpICsgYidcbicKIAogICAgICMgUmV0dXJuIGEgR0VUIChCSU5HRVQsIExPTkdfQklOR0VUKSBvcGNvZGUgc3RyaW5nLCB3aXRoIGFyZ3VtZW50IGkuCi0gICAgZGVmIGdldChzZWxmLCBpLCBwYWNrPXN0cnVjdC5wYWNrKToKKyAgICBkZWYgZ2V0KHNlbGYsIGkpOgogICAgICAgICBpZiBzZWxmLmJpbjoKICAgICAgICAgICAgIGlmIGkgPCAyNTY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJJTkdFVCArIGJ5dGVzKFtpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQklOR0VUICsgcGFjaygiPEIiLCBpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19CSU5HRVQgKyBwYWNrKCI8SSIsIGkpCiAKQEAgLTI4NiwyMCArMjgyLDIwIEBACiAKICAgICAgICAgIyBDaGVjayB0aGUgbWVtbwogICAgICAgICB4ID0gc2VsZi5tZW1vLmdldChpZChvYmopKQotICAgICAgICBpZiB4OgorICAgICAgICBpZiB4IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLmdldCh4WzBdKSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgQ2hlY2sgdGhlIHR5cGUgZGlzcGF0Y2ggdGFibGUKICAgICAgICAgdCA9IHR5cGUob2JqKQogICAgICAgICBmID0gc2VsZi5kaXNwYXRjaC5nZXQodCkKLSAgICAgICAgaWYgZjoKKyAgICAgICAgaWYgZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGYoc2VsZiwgb2JqKSAjIENhbGwgdW5ib3VuZCBtZXRob2Qgd2l0aCBleHBsaWNpdCBzZWxmCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIENoZWNrIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUgaWYgYW55LCBvciBlbHNlIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKICAgICAgICAgcmVkdWNlID0gZ2V0YXR0cihzZWxmLCAnZGlzcGF0Y2hfdGFibGUnLCBkaXNwYXRjaF90YWJsZSkuZ2V0KHQpCi0gICAgICAgIGlmIHJlZHVjZToKKyAgICAgICAgaWYgcmVkdWNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcnYgPSByZWR1Y2Uob2JqKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBDaGVjayBmb3IgYSBjbGFzcyB3aXRoIGEgY3VzdG9tIG1ldGFjbGFzczsgdHJlYXQgYXMgcmVndWxhciBjbGFzcwpAQCAtMzEzLDExICszMDksMTEgQEAKIAogICAgICAgICAgICAgIyBDaGVjayBmb3IgYSBfX3JlZHVjZV9leF9fIG1ldGhvZCwgZmFsbCBiYWNrIHRvIF9fcmVkdWNlX18KICAgICAgICAgICAgIHJlZHVjZSA9IGdldGF0dHIob2JqLCAiX19yZWR1Y2VfZXhfXyIsIE5vbmUpCi0gICAgICAgICAgICBpZiByZWR1Y2U6CisgICAgICAgICAgICBpZiByZWR1Y2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcnYgPSByZWR1Y2Uoc2VsZi5wcm90bykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVkdWNlID0gZ2V0YXR0cihvYmosICJfX3JlZHVjZV9fIiwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiByZWR1Y2U6CisgICAgICAgICAgICAgICAgaWYgcmVkdWNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjZSgpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGlja2xpbmdFcnJvcigiQ2FuJ3QgcGlja2xlICVyIG9iamVjdDogJXIiICUKQEAgLTQ0OCwxMiArNDQ0LDEyIEBACiAKICAgICBkZWYgc2F2ZV9ib29sKHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gMjoKLSAgICAgICAgICAgIHNlbGYud3JpdGUob2JqIGFuZCBORVdUUlVFIG9yIE5FV0ZBTFNFKQorICAgICAgICAgICAgc2VsZi53cml0ZShORVdUUlVFIGlmIG9iaiBlbHNlIE5FV0ZBTFNFKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi53cml0ZShvYmogYW5kIFRSVUUgb3IgRkFMU0UpCisgICAgICAgICAgICBzZWxmLndyaXRlKFRSVUUgaWYgb2JqIGVsc2UgRkFMU0UpCiAgICAgZGlzcGF0Y2hbYm9vbF0gPSBzYXZlX2Jvb2wKIAotICAgIGRlZiBzYXZlX2xvbmcoc2VsZiwgb2JqLCBwYWNrPXN0cnVjdC5wYWNrKToKKyAgICBkZWYgc2F2ZV9sb25nKHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYuYmluOgogICAgICAgICAgICAgIyBJZiB0aGUgaW50IGlzIHNtYWxsIGVub3VnaCB0byBmaXQgaW4gYSBzaWduZWQgNC1ieXRlIDIncy1jb21wCiAgICAgICAgICAgICAjIGZvcm1hdCwgd2UgY2FuIHN0b3JlIGl0IG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0aGUgZ2VuZXJhbApAQCAtNDYxLDM5ICs0NTcsMzYgQEAKICAgICAgICAgICAgICMgRmlyc3Qgb25lLSBhbmQgdHdvLWJ5dGUgdW5zaWduZWQgaW50czoKICAgICAgICAgICAgIGlmIG9iaiA+PSAwOgogICAgICAgICAgICAgICAgIGlmIG9iaiA8PSAweGZmOgotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKEJJTklOVDEgKyBieXRlcyhbb2JqXSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoQklOSU5UMSArIHBhY2soIjxCIiwgb2JqKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgaWYgb2JqIDw9IDB4ZmZmZjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShCSU5JTlQyICsgYnl0ZXMoW29iaiYweGZmLCBvYmo+PjhdKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShCSU5JTlQyICsgcGFjaygiPEgiLCBvYmopKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgTmV4dCBjaGVjayBmb3IgNC1ieXRlIHNpZ25lZCBpbnRzOgotICAgICAgICAgICAgaGlnaF9iaXRzID0gb2JqID4+IDMxICAjIG5vdGUgdGhhdCBQeXRob24gc2hpZnQgc2lnbi1leHRlbmRzCi0gICAgICAgICAgICBpZiBoaWdoX2JpdHMgPT0gMCBvciBoaWdoX2JpdHMgPT0gLTE6Ci0gICAgICAgICAgICAgICAgIyBBbGwgaGlnaCBiaXRzIGFyZSBjb3BpZXMgb2YgYml0IDIqKjMxLCBzbyB0aGUgdmFsdWUKLSAgICAgICAgICAgICAgICAjIGZpdHMgaW4gYSA0LWJ5dGUgc2lnbmVkIGludC4KKyAgICAgICAgICAgIGlmIC0weDgwMDAwMDAwIDw9IG9iaiA8PSAweDdmZmZmZmZmOgogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoQklOSU5UICsgcGFjaygiPGkiLCBvYmopKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLnByb3RvID49IDI6CiAgICAgICAgICAgICBlbmNvZGVkID0gZW5jb2RlX2xvbmcob2JqKQogICAgICAgICAgICAgbiA9IGxlbihlbmNvZGVkKQogICAgICAgICAgICAgaWYgbiA8IDI1NjoKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKExPTkcxICsgYnl0ZXMoW25dKSArIGVuY29kZWQpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZShMT05HMSArIHBhY2soIjxCIiwgbikgKyBlbmNvZGVkKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKExPTkc0ICsgcGFjaygiPGkiLCBuKSArIGVuY29kZWQpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi53cml0ZShMT05HICsgcmVwcihvYmopLmVuY29kZSgiYXNjaWkiKSArIGInTFxuJykKICAgICBkaXNwYXRjaFtpbnRdID0gc2F2ZV9sb25nCiAKLSAgICBkZWYgc2F2ZV9mbG9hdChzZWxmLCBvYmosIHBhY2s9c3RydWN0LnBhY2spOgorICAgIGRlZiBzYXZlX2Zsb2F0KHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYuYmluOgogICAgICAgICAgICAgc2VsZi53cml0ZShCSU5GTE9BVCArIHBhY2soJz5kJywgb2JqKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYud3JpdGUoRkxPQVQgKyByZXByKG9iaikuZW5jb2RlKCJhc2NpaSIpICsgYidcbicpCiAgICAgZGlzcGF0Y2hbZmxvYXRdID0gc2F2ZV9mbG9hdAogCi0gICAgZGVmIHNhdmVfYnl0ZXMoc2VsZiwgb2JqLCBwYWNrPXN0cnVjdC5wYWNrKToKKyAgICBkZWYgc2F2ZV9ieXRlcyhzZWxmLCBvYmopOgogICAgICAgICBpZiBzZWxmLnByb3RvIDwgMzoKLSAgICAgICAgICAgIGlmIGxlbihvYmopID09IDA6CisgICAgICAgICAgICBpZiBub3Qgb2JqOiAjIGJ5dGVzIG9iamVjdCBpcyBlbXB0eQogICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9yZWR1Y2UoYnl0ZXMsICgpLCBvYmo9b2JqKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKGNvZGVjcy5lbmNvZGUsCkBAIC01MDEsMTMgKzQ5NCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG4gPSBsZW4ob2JqKQogICAgICAgICBpZiBuIDwgMjU2OgotICAgICAgICAgICAgc2VsZi53cml0ZShTSE9SVF9CSU5CWVRFUyArIGJ5dGVzKFtuXSkgKyBieXRlcyhvYmopKQorICAgICAgICAgICAgc2VsZi53cml0ZShTSE9SVF9CSU5CWVRFUyArIHBhY2soIjxCIiwgbikgKyBvYmopCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKEJJTkJZVEVTICsgcGFjaygiPEkiLCBuKSArIGJ5dGVzKG9iaikpCisgICAgICAgICAgICBzZWxmLndyaXRlKEJJTkJZVEVTICsgcGFjaygiPEkiLCBuKSArIG9iaikKICAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKICAgICBkaXNwYXRjaFtieXRlc10gPSBzYXZlX2J5dGVzCiAKLSAgICBkZWYgc2F2ZV9zdHIoc2VsZiwgb2JqLCBwYWNrPXN0cnVjdC5wYWNrKToKKyAgICBkZWYgc2F2ZV9zdHIoc2VsZiwgb2JqKToKICAgICAgICAgaWYgc2VsZi5iaW46CiAgICAgICAgICAgICBlbmNvZGVkID0gb2JqLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpCiAgICAgICAgICAgICBuID0gbGVuKGVuY29kZWQpCkBAIC01MTUsMzkgKzUwOCwzNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb2JqID0gb2JqLnJlcGxhY2UoIlxcIiwgIlxcdTAwNWMiKQogICAgICAgICAgICAgb2JqID0gb2JqLnJlcGxhY2UoIlxuIiwgIlxcdTAwMGEiKQotICAgICAgICAgICAgc2VsZi53cml0ZShVTklDT0RFICsgYnl0ZXMob2JqLmVuY29kZSgncmF3LXVuaWNvZGUtZXNjYXBlJykpICsKLSAgICAgICAgICAgICAgICAgICAgICAgYidcbicpCisgICAgICAgICAgICBzZWxmLndyaXRlKFVOSUNPREUgKyBvYmouZW5jb2RlKCdyYXctdW5pY29kZS1lc2NhcGUnKSArIGInXG4nKQogICAgICAgICBzZWxmLm1lbW9pemUob2JqKQogICAgIGRpc3BhdGNoW3N0cl0gPSBzYXZlX3N0cgogCiAgICAgZGVmIHNhdmVfdHVwbGUoc2VsZiwgb2JqKToKLSAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCi0gICAgICAgIHByb3RvID0gc2VsZi5wcm90bwotCi0gICAgICAgIG4gPSBsZW4ob2JqKQotICAgICAgICBpZiBuID09IDA6Ci0gICAgICAgICAgICBpZiBwcm90bzoKLSAgICAgICAgICAgICAgICB3cml0ZShFTVBUWV9UVVBMRSkKKyAgICAgICAgaWYgbm90IG9iajogIyB0dXBsZSBpcyBlbXB0eQorICAgICAgICAgICAgaWYgc2VsZi5iaW46CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZShFTVBUWV9UVVBMRSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd3JpdGUoTUFSSyArIFRVUExFKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoTUFSSyArIFRVUExFKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgbiA9IGxlbihvYmopCiAgICAgICAgIHNhdmUgPSBzZWxmLnNhdmUKICAgICAgICAgbWVtbyA9IHNlbGYubWVtbwotICAgICAgICBpZiBuIDw9IDMgYW5kIHByb3RvID49IDI6CisgICAgICAgIGlmIG4gPD0gMyBhbmQgc2VsZi5wcm90byA+PSAyOgogICAgICAgICAgICAgZm9yIGVsZW1lbnQgaW4gb2JqOgogICAgICAgICAgICAgICAgIHNhdmUoZWxlbWVudCkKICAgICAgICAgICAgICMgU3VidGxlLiAgU2FtZSBhcyBpbiB0aGUgYmlnIGNvbW1lbnQgYmVsb3cuCiAgICAgICAgICAgICBpZiBpZChvYmopIGluIG1lbW86CiAgICAgICAgICAgICAgICAgZ2V0ID0gc2VsZi5nZXQobWVtb1tpZChvYmopXVswXSkKLSAgICAgICAgICAgICAgICB3cml0ZShQT1AgKiBuICsgZ2V0KQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoUE9QICogbiArIGdldCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd3JpdGUoX3R1cGxlc2l6ZTJjb2RlW25dKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoX3R1cGxlc2l6ZTJjb2RlW25dKQogICAgICAgICAgICAgICAgIHNlbGYubWVtb2l6ZShvYmopCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIHByb3RvIDAgb3IgcHJvdG8gMSBhbmQgdHVwbGUgaXNuJ3QgZW1wdHksIG9yIHByb3RvID4gMSBhbmQgdHVwbGUKICAgICAgICAgIyBoYXMgbW9yZSB0aGFuIDMgZWxlbWVudHMuCisgICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQogICAgICAgICB3cml0ZShNQVJLKQogICAgICAgICBmb3IgZWxlbWVudCBpbiBvYmo6CiAgICAgICAgICAgICBzYXZlKGVsZW1lbnQpCkBAIC01NjEsMjUgKzU1MSwyMyBAQAogICAgICAgICAgICAgIyBjb3VsZCBoYXZlIGJlZW4gZG9uZSBpbiB0aGUgImZvciBlbGVtZW50IiBsb29wIGluc3RlYWQsIGJ1dAogICAgICAgICAgICAgIyByZWN1cnNpdmUgdHVwbGVzIGFyZSBhIHJhcmUgdGhpbmcuCiAgICAgICAgICAgICBnZXQgPSBzZWxmLmdldChtZW1vW2lkKG9iaildWzBdKQotICAgICAgICAgICAgaWYgcHJvdG86CisgICAgICAgICAgICBpZiBzZWxmLmJpbjoKICAgICAgICAgICAgICAgICB3cml0ZShQT1BfTUFSSyArIGdldCkKICAgICAgICAgICAgIGVsc2U6ICAgIyBwcm90byAwIC0tIFBPUF9NQVJLIG5vdCBhdmFpbGFibGUKICAgICAgICAgICAgICAgICB3cml0ZShQT1AgKiAobisxKSArIGdldCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgTm8gcmVjdXJzaW9uLgotICAgICAgICBzZWxmLndyaXRlKFRVUExFKQorICAgICAgICB3cml0ZShUVVBMRSkKICAgICAgICAgc2VsZi5tZW1vaXplKG9iaikKIAogICAgIGRpc3BhdGNoW3R1cGxlXSA9IHNhdmVfdHVwbGUKIAogICAgIGRlZiBzYXZlX2xpc3Qoc2VsZiwgb2JqKToKLSAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCi0KICAgICAgICAgaWYgc2VsZi5iaW46Ci0gICAgICAgICAgICB3cml0ZShFTVBUWV9MSVNUKQorICAgICAgICAgICAgc2VsZi53cml0ZShFTVBUWV9MSVNUKQogICAgICAgICBlbHNlOiAgICMgcHJvdG8gMCAtLSBjYW4ndCB1c2UgRU1QVFlfTElTVAotICAgICAgICAgICAgd3JpdGUoTUFSSyArIExJU1QpCisgICAgICAgICAgICBzZWxmLndyaXRlKE1BUksgKyBMSVNUKQogCiAgICAgICAgIHNlbGYubWVtb2l6ZShvYmopCiAgICAgICAgIHNlbGYuX2JhdGNoX2FwcGVuZHMob2JqKQpAQCAtNTk5LDE3ICs1ODcsOSBAQAogICAgICAgICAgICAgICAgIHdyaXRlKEFQUEVORCkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGl0ZW1zID0gaXRlcihpdGVtcykKLSAgICAgICAgciA9IHJhbmdlKHNlbGYuX0JBVENIU0laRSkKLSAgICAgICAgd2hpbGUgaXRlbXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0bXAgPSBbXQotICAgICAgICAgICAgZm9yIGkgaW4gcjoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHggPSBuZXh0KGl0ZW1zKQotICAgICAgICAgICAgICAgICAgICB0bXAuYXBwZW5kKHgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpdCA9IGl0ZXIoaXRlbXMpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0bXAgPSBsaXN0KGlzbGljZShpdCwgc2VsZi5fQkFUQ0hTSVpFKSkKICAgICAgICAgICAgIG4gPSBsZW4odG1wKQogICAgICAgICAgICAgaWYgbiA+IDE6CiAgICAgICAgICAgICAgICAgd3JpdGUoTUFSSykKQEAgLTYyMCwxNCArNjAwLDE0IEBACiAgICAgICAgICAgICAgICAgc2F2ZSh0bXBbMF0pCiAgICAgICAgICAgICAgICAgd3JpdGUoQVBQRU5EKQogICAgICAgICAgICAgIyBlbHNlIHRtcCBpcyBlbXB0eSwgYW5kIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgIGlmIG4gPCBzZWxmLl9CQVRDSFNJWkU6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgc2F2ZV9kaWN0KHNlbGYsIG9iaik6Ci0gICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQotCiAgICAgICAgIGlmIHNlbGYuYmluOgotICAgICAgICAgICAgd3JpdGUoRU1QVFlfRElDVCkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoRU1QVFlfRElDVCkKICAgICAgICAgZWxzZTogICAjIHByb3RvIDAgLS0gY2FuJ3QgdXNlIEVNUFRZX0RJQ1QKLSAgICAgICAgICAgIHdyaXRlKE1BUksgKyBESUNUKQorICAgICAgICAgICAgc2VsZi53cml0ZShNQVJLICsgRElDVCkKIAogICAgICAgICBzZWxmLm1lbW9pemUob2JqKQogICAgICAgICBzZWxmLl9iYXRjaF9zZXRpdGVtcyhvYmouaXRlbXMoKSkKQEAgLTY0OCwxNiArNjI4LDkgQEAKICAgICAgICAgICAgICAgICB3cml0ZShTRVRJVEVNKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaXRlbXMgPSBpdGVyKGl0ZW1zKQotICAgICAgICByID0gcmFuZ2Uoc2VsZi5fQkFUQ0hTSVpFKQotICAgICAgICB3aGlsZSBpdGVtcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRtcCA9IFtdCi0gICAgICAgICAgICBmb3IgaSBpbiByOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdG1wLmFwcGVuZChuZXh0KGl0ZW1zKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGl0ID0gaXRlcihpdGVtcykKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRtcCA9IGxpc3QoaXNsaWNlKGl0LCBzZWxmLl9CQVRDSFNJWkUpKQogICAgICAgICAgICAgbiA9IGxlbih0bXApCiAgICAgICAgICAgICBpZiBuID4gMToKICAgICAgICAgICAgICAgICB3cml0ZShNQVJLKQpAQCAtNjcxLDggKzY0NCwxMCBAQAogICAgICAgICAgICAgICAgIHNhdmUodikKICAgICAgICAgICAgICAgICB3cml0ZShTRVRJVEVNKQogICAgICAgICAgICAgIyBlbHNlIHRtcCBpcyBlbXB0eSwgYW5kIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgIGlmIG4gPCBzZWxmLl9CQVRDSFNJWkU6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAKLSAgICBkZWYgc2F2ZV9nbG9iYWwoc2VsZiwgb2JqLCBuYW1lPU5vbmUsIHBhY2s9c3RydWN0LnBhY2spOgorICAgIGRlZiBzYXZlX2dsb2JhbChzZWxmLCBvYmosIG5hbWU9Tm9uZSk6CiAgICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQogICAgICAgICBtZW1vID0gc2VsZi5tZW1vCiAKQEAgLTcwMiw5ICs2NzcsOSBAQAogICAgICAgICAgICAgaWYgY29kZToKICAgICAgICAgICAgICAgICBhc3NlcnQgY29kZSA+IDAKICAgICAgICAgICAgICAgICBpZiBjb2RlIDw9IDB4ZmY6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKEVYVDEgKyBieXRlcyhbY29kZV0pKQorICAgICAgICAgICAgICAgICAgICB3cml0ZShFWFQxICsgcGFjaygiPEIiLCBjb2RlKSkKICAgICAgICAgICAgICAgICBlbGlmIGNvZGUgPD0gMHhmZmZmOgotICAgICAgICAgICAgICAgICAgICB3cml0ZShFWFQyICsgYnl0ZXMoW2NvZGUmMHhmZiwgY29kZT4+OF0pKQorICAgICAgICAgICAgICAgICAgICB3cml0ZShFWFQyICsgcGFjaygiPEgiLCBjb2RlKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB3cml0ZShFWFQ0ICsgcGFjaygiPGkiLCBjb2RlKSkKICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTczMiwyNSArNzA3LDYgQEAKICAgICBkaXNwYXRjaFtCdWlsdGluRnVuY3Rpb25UeXBlXSA9IHNhdmVfZ2xvYmFsCiAgICAgZGlzcGF0Y2hbdHlwZV0gPSBzYXZlX2dsb2JhbAogCi0jIFBpY2tsaW5nIGhlbHBlcnMKLQotZGVmIF9rZWVwX2FsaXZlKHgsIG1lbW8pOgotICAgICIiIktlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgeCBpbiB0aGUgbWVtby4KLQotICAgIEJlY2F1c2Ugd2UgcmVtZW1iZXIgb2JqZWN0cyBieSB0aGVpciBpZCwgd2UgaGF2ZQotICAgIHRvIGFzc3VyZSB0aGF0IHBvc3NpYmx5IHRlbXBvcmFyeSBvYmplY3RzIGFyZSBrZXB0Ci0gICAgYWxpdmUgYnkgcmVmZXJlbmNpbmcgdGhlbS4KLSAgICBXZSBzdG9yZSBhIHJlZmVyZW5jZSBhdCB0aGUgaWQgb2YgdGhlIG1lbW8sIHdoaWNoIHNob3VsZAotICAgIG5vcm1hbGx5IG5vdCBiZSB1c2VkIHVubGVzcyBzb21lb25lIHRyaWVzIHRvIGRlZXBjb3B5Ci0gICAgdGhlIG1lbW8gaXRzZWxmLi4uCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBtZW1vW2lkKG1lbW8pXS5hcHBlbmQoeCkKLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICMgYWhhLCB0aGlzIGlzIHRoZSBmaXJzdCBvbmUgOi0pCi0gICAgICAgIG1lbW9baWQobWVtbyldPVt4XQotCi0KICMgQSBjYWNoZSBmb3Igd2hpY2htb2R1bGUoKSwgbWFwcGluZyBhIGZ1bmN0aW9uIG9iamVjdCB0byB0aGUgbmFtZSBvZgogIyB0aGUgbW9kdWxlIGluIHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZm91bmQuCiAKQEAgLTgzMiw3ICs3ODgsNyBAQAogICAgICAgICByZWFkID0gc2VsZi5yZWFkCiAgICAgICAgIGRpc3BhdGNoID0gc2VsZi5kaXNwYXRjaAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBrZXkgPSByZWFkKDEpCiAgICAgICAgICAgICAgICAgaWYgbm90IGtleToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKQEAgLTg2Miw3ICs4MTgsNyBAQAogICAgIGRpc3BhdGNoID0ge30KIAogICAgIGRlZiBsb2FkX3Byb3RvKHNlbGYpOgotICAgICAgICBwcm90byA9IG9yZChzZWxmLnJlYWQoMSkpCisgICAgICAgIHByb3RvID0gc2VsZi5yZWFkKDEpWzBdCiAgICAgICAgIGlmIG5vdCAwIDw9IHByb3RvIDw9IEhJR0hFU1RfUFJPVE9DT0w6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCBwaWNrbGUgcHJvdG9jb2w6ICVkIiAlIHByb3RvKQogICAgICAgICBzZWxmLnByb3RvID0gcHJvdG8KQEAgLTg5Nyw0MyArODUzLDQwIEBACiAgICAgICAgIGVsaWYgZGF0YSA9PSBUUlVFWzE6XToKICAgICAgICAgICAgIHZhbCA9IFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2YWwgPSBpbnQoZGF0YSwgMCkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHZhbCA9IGludChkYXRhLCAwKQorICAgICAgICAgICAgdmFsID0gaW50KGRhdGEsIDApCiAgICAgICAgIHNlbGYuYXBwZW5kKHZhbCkKICAgICBkaXNwYXRjaFtJTlRbMF1dID0gbG9hZF9pbnQKIAogICAgIGRlZiBsb2FkX2JpbmludChzZWxmKToKLSAgICAgICAgc2VsZi5hcHBlbmQobWxvYWRzKGInaScgKyBzZWxmLnJlYWQoNCkpKQorICAgICAgICBzZWxmLmFwcGVuZCh1bnBhY2soJzxpJywgc2VsZi5yZWFkKDQpKVswXSkKICAgICBkaXNwYXRjaFtCSU5JTlRbMF1dID0gbG9hZF9iaW5pbnQKIAogICAgIGRlZiBsb2FkX2JpbmludDEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXBwZW5kKG9yZChzZWxmLnJlYWQoMSkpKQorICAgICAgICBzZWxmLmFwcGVuZChzZWxmLnJlYWQoMSlbMF0pCiAgICAgZGlzcGF0Y2hbQklOSU5UMVswXV0gPSBsb2FkX2JpbmludDEKIAogICAgIGRlZiBsb2FkX2JpbmludDIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXBwZW5kKG1sb2FkcyhiJ2knICsgc2VsZi5yZWFkKDIpICsgYidcMDAwXDAwMCcpKQorICAgICAgICBzZWxmLmFwcGVuZCh1bnBhY2soJzxIJywgc2VsZi5yZWFkKDIpKVswXSkKICAgICBkaXNwYXRjaFtCSU5JTlQyWzBdXSA9IGxvYWRfYmluaW50MgogCiAgICAgZGVmIGxvYWRfbG9uZyhzZWxmKToKLSAgICAgICAgdmFsID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCi0gICAgICAgIGlmIHZhbCBhbmQgdmFsWy0xXSA9PSAnTCc6CisgICAgICAgIHZhbCA9IHNlbGYucmVhZGxpbmUoKVs6LTFdCisgICAgICAgIGlmIHZhbCBhbmQgdmFsWy0xXSA9PSBiJ0wnWzBdOgogICAgICAgICAgICAgdmFsID0gdmFsWzotMV0KICAgICAgICAgc2VsZi5hcHBlbmQoaW50KHZhbCwgMCkpCiAgICAgZGlzcGF0Y2hbTE9OR1swXV0gPSBsb2FkX2xvbmcKIAogICAgIGRlZiBsb2FkX2xvbmcxKHNlbGYpOgotICAgICAgICBuID0gb3JkKHNlbGYucmVhZCgxKSkKKyAgICAgICAgbiA9IHNlbGYucmVhZCgxKVswXQogICAgICAgICBkYXRhID0gc2VsZi5yZWFkKG4pCiAgICAgICAgIHNlbGYuYXBwZW5kKGRlY29kZV9sb25nKGRhdGEpKQogICAgIGRpc3BhdGNoW0xPTkcxWzBdXSA9IGxvYWRfbG9uZzEKIAogICAgIGRlZiBsb2FkX2xvbmc0KHNlbGYpOgotICAgICAgICBuID0gbWxvYWRzKGInaScgKyBzZWxmLnJlYWQoNCkpCisgICAgICAgIG4sID0gdW5wYWNrKCc8aScsIHNlbGYucmVhZCg0KSkKICAgICAgICAgaWYgbiA8IDA6CiAgICAgICAgICAgICAjIENvcnJ1cHQgb3IgaG9zdGlsZSBwaWNrbGUgLS0gd2UgbmV2ZXIgd3JpdGUgb25lIGxpa2UgdGhpcwotICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJMT05HIHBpY2tsZSBoYXMgbmVnYXRpdmUgYnl0ZSBjb3VudCIpOworICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJMT05HIHBpY2tsZSBoYXMgbmVnYXRpdmUgYnl0ZSBjb3VudCIpCiAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobikKICAgICAgICAgc2VsZi5hcHBlbmQoZGVjb2RlX2xvbmcoZGF0YSkpCiAgICAgZGlzcGF0Y2hbTE9ORzRbMF1dID0gbG9hZF9sb25nNApAQCAtOTQyLDM5ICs4OTUsMzYgQEAKICAgICAgICAgc2VsZi5hcHBlbmQoZmxvYXQoc2VsZi5yZWFkbGluZSgpWzotMV0pKQogICAgIGRpc3BhdGNoW0ZMT0FUWzBdXSA9IGxvYWRfZmxvYXQKIAotICAgIGRlZiBsb2FkX2JpbmZsb2F0KHNlbGYsIHVucGFjaz1zdHJ1Y3QudW5wYWNrKToKKyAgICBkZWYgbG9hZF9iaW5mbG9hdChzZWxmKToKICAgICAgICAgc2VsZi5hcHBlbmQodW5wYWNrKCc+ZCcsIHNlbGYucmVhZCg4KSlbMF0pCiAgICAgZGlzcGF0Y2hbQklORkxPQVRbMF1dID0gbG9hZF9iaW5mbG9hdAogCiAgICAgZGVmIGxvYWRfc3RyaW5nKHNlbGYpOgotICAgICAgICBvcmlnID0gc2VsZi5yZWFkbGluZSgpCi0gICAgICAgIHJlcCA9IG9yaWdbOi0xXQotICAgICAgICBmb3IgcSBpbiAoYiciJywgYiInIik6ICMgZG91YmxlIG9yIHNpbmdsZSBxdW90ZQotICAgICAgICAgICAgaWYgcmVwLnN0YXJ0c3dpdGgocSk6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHJlcCkgPCAyIG9yIG5vdCByZXAuZW5kc3dpdGgocSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImluc2VjdXJlIHN0cmluZyBwaWNrbGUiKQotICAgICAgICAgICAgICAgIHJlcCA9IHJlcFtsZW4ocSk6LWxlbihxKV0KLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBkYXRhID0gc2VsZi5yZWFkbGluZSgpWzotMV0KKyAgICAgICAgIyBTdHJpcCBvdXRlcm1vc3QgcXVvdGVzCisgICAgICAgIGlmIGxlbihkYXRhKSA+PSAyIGFuZCBkYXRhWzBdID09IGRhdGFbLTFdIGFuZCBkYXRhWzBdIGluIGInIlwnJzoKKyAgICAgICAgICAgIGRhdGEgPSBkYXRhWzE6LTFdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnNlY3VyZSBzdHJpbmcgcGlja2xlOiAlciIgJSBvcmlnKQotICAgICAgICBzZWxmLmFwcGVuZChjb2RlY3MuZXNjYXBlX2RlY29kZShyZXApWzBdCisgICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoInRoZSBTVFJJTkcgb3Bjb2RlIGFyZ3VtZW50IG11c3QgYmUgcXVvdGVkIikKKyAgICAgICAgc2VsZi5hcHBlbmQoY29kZWNzLmVzY2FwZV9kZWNvZGUoZGF0YSlbMF0KICAgICAgICAgICAgICAgICAgICAgLmRlY29kZShzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykpCiAgICAgZGlzcGF0Y2hbU1RSSU5HWzBdXSA9IGxvYWRfc3RyaW5nCiAKICAgICBkZWYgbG9hZF9iaW5zdHJpbmcoc2VsZik6CiAgICAgICAgICMgRGVwcmVjYXRlZCBCSU5TVFJJTkcgdXNlcyBzaWduZWQgMzItYml0IGxlbmd0aAotICAgICAgICBsZW4gPSBtbG9hZHMoYidpJyArIHNlbGYucmVhZCg0KSkKKyAgICAgICAgbGVuLCA9IHVucGFjaygnPGknLCBzZWxmLnJlYWQoNCkpCiAgICAgICAgIGlmIGxlbiA8IDA6Ci0gICAgICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoIkJJTlNUUklORyBwaWNrbGUgaGFzIG5lZ2F0aXZlIGJ5dGUgY291bnQiKTsKKyAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiQklOU1RSSU5HIHBpY2tsZSBoYXMgbmVnYXRpdmUgYnl0ZSBjb3VudCIpCiAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKQogICAgICAgICB2YWx1ZSA9IHN0cihkYXRhLCBzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICAgc2VsZi5hcHBlbmQodmFsdWUpCiAgICAgZGlzcGF0Y2hbQklOU1RSSU5HWzBdXSA9IGxvYWRfYmluc3RyaW5nCiAKLSAgICBkZWYgbG9hZF9iaW5ieXRlcyhzZWxmLCB1bnBhY2s9c3RydWN0LnVucGFjaywgbWF4c2l6ZT1zeXMubWF4c2l6ZSk6CisgICAgZGVmIGxvYWRfYmluYnl0ZXMoc2VsZik6CiAgICAgICAgIGxlbiwgPSB1bnBhY2soJzxJJywgc2VsZi5yZWFkKDQpKQogICAgICAgICBpZiBsZW4gPiBtYXhzaXplOgotICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJCSU5CWVRFUyBleGNlZWRzIHN5c3RlbSdzIG1heGltdW0gc2l6ZSBvZiAlZCBieXRlcyIgJSBtYXhzaXplKTsKKyAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiQklOQllURVMgZXhjZWVkcyBzeXN0ZW0ncyBtYXhpbXVtIHNpemUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZiAlZCBieXRlcyIgJSBtYXhzaXplKQogICAgICAgICBzZWxmLmFwcGVuZChzZWxmLnJlYWQobGVuKSkKICAgICBkaXNwYXRjaFtCSU5CWVRFU1swXV0gPSBsb2FkX2JpbmJ5dGVzCiAKQEAgLTk4MiwyMyArOTMyLDI0IEBACiAgICAgICAgIHNlbGYuYXBwZW5kKHN0cihzZWxmLnJlYWRsaW5lKClbOi0xXSwgJ3Jhdy11bmljb2RlLWVzY2FwZScpKQogICAgIGRpc3BhdGNoW1VOSUNPREVbMF1dID0gbG9hZF91bmljb2RlCiAKLSAgICBkZWYgbG9hZF9iaW51bmljb2RlKHNlbGYsIHVucGFjaz1zdHJ1Y3QudW5wYWNrLCBtYXhzaXplPXN5cy5tYXhzaXplKToKKyAgICBkZWYgbG9hZF9iaW51bmljb2RlKHNlbGYpOgogICAgICAgICBsZW4sID0gdW5wYWNrKCc8SScsIHNlbGYucmVhZCg0KSkKICAgICAgICAgaWYgbGVuID4gbWF4c2l6ZToKLSAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiQklOVU5JQ09ERSBleGNlZWRzIHN5c3RlbSdzIG1heGltdW0gc2l6ZSBvZiAlZCBieXRlcyIgJSBtYXhzaXplKTsKKyAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiQklOVU5JQ09ERSBleGNlZWRzIHN5c3RlbSdzIG1heGltdW0gc2l6ZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mICVkIGJ5dGVzIiAlIG1heHNpemUpCiAgICAgICAgIHNlbGYuYXBwZW5kKHN0cihzZWxmLnJlYWQobGVuKSwgJ3V0Zi04JywgJ3N1cnJvZ2F0ZXBhc3MnKSkKICAgICBkaXNwYXRjaFtCSU5VTklDT0RFWzBdXSA9IGxvYWRfYmludW5pY29kZQogCiAgICAgZGVmIGxvYWRfc2hvcnRfYmluc3RyaW5nKHNlbGYpOgotICAgICAgICBsZW4gPSBvcmQoc2VsZi5yZWFkKDEpKQotICAgICAgICBkYXRhID0gYnl0ZXMoc2VsZi5yZWFkKGxlbikpCisgICAgICAgIGxlbiA9IHNlbGYucmVhZCgxKVswXQorICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbikKICAgICAgICAgdmFsdWUgPSBzdHIoZGF0YSwgc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCiAgICAgICAgIHNlbGYuYXBwZW5kKHZhbHVlKQogICAgIGRpc3BhdGNoW1NIT1JUX0JJTlNUUklOR1swXV0gPSBsb2FkX3Nob3J0X2JpbnN0cmluZwogCiAgICAgZGVmIGxvYWRfc2hvcnRfYmluYnl0ZXMoc2VsZik6Ci0gICAgICAgIGxlbiA9IG9yZChzZWxmLnJlYWQoMSkpCi0gICAgICAgIHNlbGYuYXBwZW5kKGJ5dGVzKHNlbGYucmVhZChsZW4pKSkKKyAgICAgICAgbGVuID0gc2VsZi5yZWFkKDEpWzBdCisgICAgICAgIHNlbGYuYXBwZW5kKHNlbGYucmVhZChsZW4pKQogICAgIGRpc3BhdGNoW1NIT1JUX0JJTkJZVEVTWzBdXSA9IGxvYWRfc2hvcnRfYmluYnl0ZXMKIAogICAgIGRlZiBsb2FkX3R1cGxlKHNlbGYpOgpAQCAtMTAzNywxMiArOTg4LDkgQEAKIAogICAgIGRlZiBsb2FkX2RpY3Qoc2VsZik6CiAgICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGQgPSB7fQogICAgICAgICBpdGVtcyA9IHNlbGYuc3RhY2tbaysxOl0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGl0ZW1zKSwgMik6Ci0gICAgICAgICAgICBrZXkgPSBpdGVtc1tpXQotICAgICAgICAgICAgdmFsdWUgPSBpdGVtc1tpKzFdCi0gICAgICAgICAgICBkW2tleV0gPSB2YWx1ZQorICAgICAgICBkID0ge2l0ZW1zW2ldOiBpdGVtc1tpKzFdCisgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGl0ZW1zKSwgMil9CiAgICAgICAgIHNlbGYuc3RhY2tbazpdID0gW2RdCiAgICAgZGlzcGF0Y2hbRElDVFswXV0gPSBsb2FkX2RpY3QKIApAQCAtMTA5NCwxNyArMTA0MiwxNyBAQAogICAgIGRpc3BhdGNoW0dMT0JBTFswXV0gPSBsb2FkX2dsb2JhbAogCiAgICAgZGVmIGxvYWRfZXh0MShzZWxmKToKLSAgICAgICAgY29kZSA9IG9yZChzZWxmLnJlYWQoMSkpCisgICAgICAgIGNvZGUgPSBzZWxmLnJlYWQoMSlbMF0KICAgICAgICAgc2VsZi5nZXRfZXh0ZW5zaW9uKGNvZGUpCiAgICAgZGlzcGF0Y2hbRVhUMVswXV0gPSBsb2FkX2V4dDEKIAogICAgIGRlZiBsb2FkX2V4dDIoc2VsZik6Ci0gICAgICAgIGNvZGUgPSBtbG9hZHMoYidpJyArIHNlbGYucmVhZCgyKSArIGInXDAwMFwwMDAnKQorICAgICAgICBjb2RlLCA9IHVucGFjaygnPEgnLCBzZWxmLnJlYWQoMikpCiAgICAgICAgIHNlbGYuZ2V0X2V4dGVuc2lvbihjb2RlKQogICAgIGRpc3BhdGNoW0VYVDJbMF1dID0gbG9hZF9leHQyCiAKICAgICBkZWYgbG9hZF9leHQ0KHNlbGYpOgotICAgICAgICBjb2RlID0gbWxvYWRzKGInaScgKyBzZWxmLnJlYWQoNCkpCisgICAgICAgIGNvZGUsID0gdW5wYWNrKCc8aScsIHNlbGYucmVhZCg0KSkKICAgICAgICAgc2VsZi5nZXRfZXh0ZW5zaW9uKGNvZGUpCiAgICAgZGlzcGF0Y2hbRVhUNFswXV0gPSBsb2FkX2V4dDQKIApAQCAtMTExOCw3ICsxMDY2LDcgQEAKICAgICAgICAgaWYgbm90IGtleToKICAgICAgICAgICAgIGlmIGNvZGUgPD0gMDogIyBub3RlIHRoYXQgMCBpcyBmb3JiaWRkZW4KICAgICAgICAgICAgICAgICAjIENvcnJ1cHQgb3IgaG9zdGlsZSBwaWNrbGUuCi0gICAgICAgICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJFWFQgc3BlY2lmaWVzIGNvZGUgPD0gMCIpOworICAgICAgICAgICAgICAgIHJhaXNlIFVucGlja2xpbmdFcnJvcigiRVhUIHNwZWNpZmllcyBjb2RlIDw9IDAiKQogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5yZWdpc3RlcmVkIGV4dGVuc2lvbiBjb2RlICVkIiAlIGNvZGUpCiAgICAgICAgIG9iaiA9IHNlbGYuZmluZF9jbGFzcygqa2V5KQogICAgICAgICBfZXh0ZW5zaW9uX2NhY2hlW2NvZGVdID0gb2JqCkBAIC0xMTcyLDcgKzExMjAsNyBAQAogICAgICAgICBzZWxmLmFwcGVuZChzZWxmLm1lbW9baV0pCiAgICAgZGlzcGF0Y2hbQklOR0VUWzBdXSA9IGxvYWRfYmluZ2V0CiAKLSAgICBkZWYgbG9hZF9sb25nX2JpbmdldChzZWxmLCB1bnBhY2s9c3RydWN0LnVucGFjayk6CisgICAgZGVmIGxvYWRfbG9uZ19iaW5nZXQoc2VsZik6CiAgICAgICAgIGksID0gdW5wYWNrKCc8SScsIHNlbGYucmVhZCg0KSkKICAgICAgICAgc2VsZi5hcHBlbmQoc2VsZi5tZW1vW2ldKQogICAgIGRpc3BhdGNoW0xPTkdfQklOR0VUWzBdXSA9IGxvYWRfbG9uZ19iaW5nZXQKQEAgLTExOTEsNyArMTEzOSw3IEBACiAgICAgICAgIHNlbGYubWVtb1tpXSA9IHNlbGYuc3RhY2tbLTFdCiAgICAgZGlzcGF0Y2hbQklOUFVUWzBdXSA9IGxvYWRfYmlucHV0CiAKLSAgICBkZWYgbG9hZF9sb25nX2JpbnB1dChzZWxmLCB1bnBhY2s9c3RydWN0LnVucGFjaywgbWF4c2l6ZT1zeXMubWF4c2l6ZSk6CisgICAgZGVmIGxvYWRfbG9uZ19iaW5wdXQoc2VsZik6CiAgICAgICAgIGksID0gdW5wYWNrKCc8SScsIHNlbGYucmVhZCg0KSkKICAgICAgICAgaWYgaSA+IG1heHNpemU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBMT05HX0JJTlBVVCBhcmd1bWVudCIpCkBAIC0xMjQyLDcgKzExOTAsNyBAQAogICAgICAgICBzdGF0ZSA9IHN0YWNrLnBvcCgpCiAgICAgICAgIGluc3QgPSBzdGFja1stMV0KICAgICAgICAgc2V0c3RhdGUgPSBnZXRhdHRyKGluc3QsICJfX3NldHN0YXRlX18iLCBOb25lKQotICAgICAgICBpZiBzZXRzdGF0ZToKKyAgICAgICAgaWYgc2V0c3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZXRzdGF0ZShzdGF0ZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzbG90c3RhdGUgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvcGlja2xldG9vbHMucHkgYi9MaWIvcGlja2xldG9vbHMucHkKaW5kZXggNjljZWRmNy4uMzg2YTk1YyAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZXRvb2xzLnB5CisrKyBiL0xpYi9waWNrbGV0b29scy5weQpAQCAtMzQsMTE5ICszNCwxMTggQEAKICMgICBieSBhIGxhdGVyIEdFVC4KIAogCi0iIiIKLSJBIHBpY2tsZSIgaXMgYSBwcm9ncmFtIGZvciBhIHZpcnR1YWwgcGlja2xlIG1hY2hpbmUgKFBNLCBidXQgbW9yZSBhY2N1cmF0ZWx5Ci1jYWxsZWQgYW4gdW5waWNrbGluZyBtYWNoaW5lKS4gIEl0J3MgYSBzZXF1ZW5jZSBvZiBvcGNvZGVzLCBpbnRlcnByZXRlZCBieSB0aGUKLVBNLCBidWlsZGluZyBhbiBhcmJpdHJhcmlseSBjb21wbGV4IFB5dGhvbiBvYmplY3QuCisjICJBIHBpY2tsZSIgaXMgYSBwcm9ncmFtIGZvciBhIHZpcnR1YWwgcGlja2xlIG1hY2hpbmUgKFBNLCBidXQgbW9yZSBhY2N1cmF0ZWx5CisjIGNhbGxlZCBhbiB1bnBpY2tsaW5nIG1hY2hpbmUpLiAgSXQncyBhIHNlcXVlbmNlIG9mIG9wY29kZXMsIGludGVycHJldGVkIGJ5IHRoZQorIyBQTSwgYnVpbGRpbmcgYW4gYXJiaXRyYXJpbHkgY29tcGxleCBQeXRob24gb2JqZWN0LgorIworIyBGb3IgdGhlIG1vc3QgcGFydCwgdGhlIFBNIGlzIHZlcnkgc2ltcGxlOiAgdGhlcmUgYXJlIG5vIGxvb3BpbmcsIHRlc3RpbmcsIG9yCisjIGNvbmRpdGlvbmFsIGluc3RydWN0aW9ucywgbm8gYXJpdGhtZXRpYyBhbmQgbm8gZnVuY3Rpb24gY2FsbHMuICBPcGNvZGVzIGFyZQorIyBleGVjdXRlZCBvbmNlIGVhY2gsIGZyb20gZmlyc3QgdG8gbGFzdCwgdW50aWwgYSBTVE9QIG9wY29kZSBpcyByZWFjaGVkLgorIworIyBUaGUgUE0gaGFzIHR3byBkYXRhIGFyZWFzLCAidGhlIHN0YWNrIiBhbmQgInRoZSBtZW1vIi4KKyMKKyMgTWFueSBvcGNvZGVzIHB1c2ggUHl0aG9uIG9iamVjdHMgb250byB0aGUgc3RhY2s7IGUuZy4sIElOVCBwdXNoZXMgYSBQeXRob24KKyMgaW50ZWdlciBvYmplY3Qgb24gdGhlIHN0YWNrLCB3aG9zZSB2YWx1ZSBpcyBnb3R0ZW4gZnJvbSBhIGRlY2ltYWwgc3RyaW5nCisjIGxpdGVyYWwgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoZSBJTlQgb3Bjb2RlIGluIHRoZSBwaWNrbGUgYnl0ZXN0cmVhbS4gIE90aGVyCisjIG9wY29kZXMgdGFrZSBQeXRob24gb2JqZWN0cyBvZmYgdGhlIHN0YWNrLiAgVGhlIHJlc3VsdCBvZiB1bnBpY2tsaW5nIGlzCisjIHdoYXRldmVyIG9iamVjdCBpcyBsZWZ0IG9uIHRoZSBzdGFjayB3aGVuIHRoZSBmaW5hbCBTVE9QIG9wY29kZSBpcyBleGVjdXRlZC4KKyMKKyMgVGhlIG1lbW8gaXMgc2ltcGx5IGFuIGFycmF5IG9mIG9iamVjdHMsIG9yIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3QKKyMgbWFwcGluZyBsaXR0bGUgaW50ZWdlcnMgdG8gb2JqZWN0cy4gIFRoZSBtZW1vIHNlcnZlcyBhcyB0aGUgUE0ncyAibG9uZyB0ZXJtCisjIG1lbW9yeSIsIGFuZCB0aGUgbGl0dGxlIGludGVnZXJzIGluZGV4aW5nIHRoZSBtZW1vIGFyZSBha2luIHRvIHZhcmlhYmxlCisjIG5hbWVzLiAgU29tZSBvcGNvZGVzIHBvcCBhIHN0YWNrIG9iamVjdCBpbnRvIHRoZSBtZW1vIGF0IGEgZ2l2ZW4gaW5kZXgsCisjIGFuZCBvdGhlcnMgcHVzaCBhIG1lbW8gb2JqZWN0IGF0IGEgZ2l2ZW4gaW5kZXggb250byB0aGUgc3RhY2sgYWdhaW4uCisjCisjIEF0IGhlYXJ0LCB0aGF0J3MgYWxsIHRoZSBQTSBoYXMuICBTdWJ0bGV0aWVzIGFyaXNlIGZvciB0aGVzZSByZWFzb25zOgorIworIyArIE9iamVjdCBpZGVudGl0eS4gIE9iamVjdHMgY2FuIGJlIGFyYml0cmFyaWx5IGNvbXBsZXgsIGFuZCBzdWJvYmplY3RzCisjICAgbWF5IGJlIHNoYXJlZCAoZm9yIGV4YW1wbGUsIHRoZSBsaXN0IFthLCBhXSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGEKKyMgICB0d2ljZSkuICBJdCBjYW4gYmUgdml0YWwgdGhhdCB1bnBpY2tsaW5nIHJlY3JlYXRlIGFuIGlzb21vcnBoaWMgb2JqZWN0CisjICAgZ3JhcGgsIGZhaXRoZnVsbHkgcmVwcm9kdWNpbmcgc2hhcmluZy4KKyMKKyMgKyBSZWN1cnNpdmUgb2JqZWN0cy4gIEZvciBleGFtcGxlLCBhZnRlciAiTCA9IFtdOyBMLmFwcGVuZChMKSIsIEwgaXMgYQorIyAgIGxpc3QsIGFuZCBMWzBdIGlzIHRoZSBzYW1lIGxpc3QuICBUaGlzIGlzIHJlbGF0ZWQgdG8gdGhlIG9iamVjdCBpZGVudGl0eQorIyAgIHBvaW50LCBhbmQgc29tZSBzZXF1ZW5jZXMgb2YgcGlja2xlIG9wY29kZXMgYXJlIHN1YnRsZSBpbiBvcmRlciB0bworIyAgIGdldCB0aGUgcmlnaHQgcmVzdWx0IGluIGFsbCBjYXNlcy4KKyMKKyMgKyBUaGluZ3MgcGlja2xlIGRvZXNuJ3Qga25vdyBldmVyeXRoaW5nIGFib3V0LiAgRXhhbXBsZXMgb2YgdGhpbmdzIHBpY2tsZQorIyAgIGRvZXMga25vdyBldmVyeXRoaW5nIGFib3V0IGFyZSBQeXRob24ncyBidWlsdGluIHNjYWxhciBhbmQgY29udGFpbmVyCisjICAgdHlwZXMsIGxpa2UgaW50cyBhbmQgdHVwbGVzLiAgVGhleSBnZW5lcmFsbHkgaGF2ZSBvcGNvZGVzIGRlZGljYXRlZCB0bworIyAgIHRoZW0uICBGb3IgdGhpbmdzIGxpa2UgbW9kdWxlIHJlZmVyZW5jZXMgYW5kIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQKKyMgICBjbGFzc2VzLCBwaWNrbGUncyBrbm93bGVkZ2UgaXMgbGltaXRlZC4gIEhpc3RvcmljYWxseSwgbWFueSBlbmhhbmNlbWVudHMKKyMgICBoYXZlIGJlZW4gbWFkZSB0byB0aGUgcGlja2xlIHByb3RvY29sIGluIG9yZGVyIHRvIGRvIGEgYmV0dGVyIChmYXN0ZXIsCisjICAgYW5kL29yIG1vcmUgY29tcGFjdCkgam9iIG9uIHRob3NlLgorIworIyArIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYW5kIG1pY3JvLW9wdGltaXphdGlvbi4gIEFzIGV4cGxhaW5lZCBiZWxvdywKKyMgICBwaWNrbGUgb3Bjb2RlcyBuZXZlciBnbyBhd2F5LCBub3QgZXZlbiB3aGVuIGJldHRlciB3YXlzIHRvIGRvIGEgdGhpbmcKKyMgICBnZXQgaW52ZW50ZWQuICBUaGUgcmVwZXJ0b2lyZSBvZiB0aGUgUE0ganVzdCBrZWVwcyBncm93aW5nIG92ZXIgdGltZS4KKyMgICBGb3IgZXhhbXBsZSwgcHJvdG9jb2wgMCBoYWQgdHdvIG9wY29kZXMgZm9yIGJ1aWxkaW5nIFB5dGhvbiBpbnRlZ2VycyAoSU5UCisjICAgYW5kIExPTkcpLCBwcm90b2NvbCAxIGFkZGVkIHRocmVlIG1vcmUgZm9yIG1vcmUtZWZmaWNpZW50IHBpY2tsaW5nIG9mIHNob3J0CisjICAgaW50ZWdlcnMsIGFuZCBwcm90b2NvbCAyIGFkZGVkIHR3byBtb3JlIGZvciBtb3JlLWVmZmljaWVudCBwaWNrbGluZyBvZgorIyAgIGxvbmcgaW50ZWdlcnMgKGJlZm9yZSBwcm90b2NvbCAyLCB0aGUgb25seSB3YXlzIHRvIHBpY2tsZSBhIFB5dGhvbiBsb25nCisjICAgdG9vayB0aW1lIHF1YWRyYXRpYyBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgZm9yIGJvdGggcGlja2xpbmcgYW5kCisjICAgdW5waWNrbGluZykuICAiT3Bjb2RlIGJsb2F0IiBpc24ndCBzbyBtdWNoIGEgc3VidGxldHkgYXMgYSBzb3VyY2Ugb2YKKyMgICB3ZWFyeWluZyBjb21wbGljYXRpb24uCisjCisjCisjIFBpY2tsZSBwcm90b2NvbHM6CisjCisjIEZvciBjb21wYXRpYmlsaXR5LCB0aGUgbWVhbmluZyBvZiBhIHBpY2tsZSBvcGNvZGUgbmV2ZXIgY2hhbmdlcy4gIEluc3RlYWQgbmV3CisjIHBpY2tsZSBvcGNvZGVzIGdldCBhZGRlZCwgYW5kIGVhY2ggdmVyc2lvbidzIHVucGlja2xlciBjYW4gaGFuZGxlIGFsbCB0aGUKKyMgcGlja2xlIG9wY29kZXMgaW4gYWxsIHByb3RvY29sIHZlcnNpb25zIHRvIGRhdGUuICBTbyBvbGQgcGlja2xlcyBjb250aW51ZSB0bworIyBiZSByZWFkYWJsZSBmb3JldmVyLiAgVGhlIHBpY2tsZXIgY2FuIGdlbmVyYWxseSBiZSB0b2xkIHRvIHJlc3RyaWN0IGl0c2VsZiB0bworIyB0aGUgc3Vic2V0IG9mIG9wY29kZXMgYXZhaWxhYmxlIHVuZGVyIHByZXZpb3VzIHByb3RvY29sIHZlcnNpb25zIHRvbywgc28gdGhhdAorIyB1c2VycyBjYW4gY3JlYXRlIHBpY2tsZXMgdW5kZXIgdGhlIGN1cnJlbnQgdmVyc2lvbiByZWFkYWJsZSBieSBvbGRlcgorIyB2ZXJzaW9ucy4gIEhvd2V2ZXIsIGEgcGlja2xlIGRvZXMgbm90IGNvbnRhaW4gaXRzIHZlcnNpb24gbnVtYmVyIGVtYmVkZGVkCisjIHdpdGhpbiBpdC4gIElmIGFuIG9sZGVyIHVucGlja2xlciB0cmllcyB0byByZWFkIGEgcGlja2xlIHVzaW5nIGEgbGF0ZXIKKyMgcHJvdG9jb2wsIHRoZSByZXN1bHQgaXMgbW9zdCBsaWtlbHkgYW4gZXhjZXB0aW9uIGR1ZSB0byBzZWVpbmcgYW4gdW5rbm93biAoaW4KKyMgdGhlIG9sZGVyIHVucGlja2xlcikgb3Bjb2RlLgorIworIyBUaGUgb3JpZ2luYWwgcGlja2xlIHVzZWQgd2hhdCdzIG5vdyBjYWxsZWQgInByb3RvY29sIDAiLCBhbmQgd2hhdCB3YXMgY2FsbGVkCisjICJ0ZXh0IG1vZGUiIGJlZm9yZSBQeXRob24gMi4zLiAgVGhlIGVudGlyZSBwaWNrbGUgYnl0ZXN0cmVhbSBpcyBtYWRlIHVwIG9mCisjIHByaW50YWJsZSA3LWJpdCBBU0NJSSBjaGFyYWN0ZXJzLCBwbHVzIHRoZSBuZXdsaW5lIGNoYXJhY3RlciwgaW4gcHJvdG9jb2wgMC4KKyMgVGhhdCdzIHdoeSBpdCB3YXMgY2FsbGVkIHRleHQgbW9kZS4gIFByb3RvY29sIDAgaXMgc21hbGwgYW5kIGVsZWdhbnQsIGJ1dAorIyBzb21ldGltZXMgcGFpbmZ1bGx5IGluZWZmaWNpZW50LgorIworIyBUaGUgc2Vjb25kIG1ham9yIHNldCBvZiBhZGRpdGlvbnMgaXMgbm93IGNhbGxlZCAicHJvdG9jb2wgMSIsIGFuZCB3YXMgY2FsbGVkCisjICJiaW5hcnkgbW9kZSIgYmVmb3JlIFB5dGhvbiAyLjMuICBUaGlzIGFkZGVkIG1hbnkgb3Bjb2RlcyB3aXRoIGFyZ3VtZW50cworIyBjb25zaXN0aW5nIG9mIGFyYml0cmFyeSBieXRlcywgaW5jbHVkaW5nIE5VTCBieXRlcyBhbmQgdW5wcmludGFibGUgImhpZ2ggYml0IgorIyBieXRlcy4gIEJpbmFyeSBtb2RlIHBpY2tsZXMgY2FuIGJlIHN1YnN0YW50aWFsbHkgc21hbGxlciB0aGFuIGVxdWl2YWxlbnQKKyMgdGV4dCBtb2RlIHBpY2tsZXMsIGFuZCBzb21ldGltZXMgZmFzdGVyIHRvbzsgZS5nLiwgQklOSU5UIHJlcHJlc2VudHMgYSA0LWJ5dGUKKyMgaW50IGFzIDQgYnl0ZXMgZm9sbG93aW5nIHRoZSBvcGNvZGUsIHdoaWNoIGlzIGNoZWFwZXIgdG8gdW5waWNrbGUgdGhhbiB0aGUKKyMgKHBlcmhhcHMpIDExLWNoYXJhY3RlciBkZWNpbWFsIHN0cmluZyBhdHRhY2hlZCB0byBJTlQuICBQcm90b2NvbCAxIGFsc28gYWRkZWQKKyMgYSBudW1iZXIgb2Ygb3Bjb2RlcyB0aGF0IG9wZXJhdGUgb24gbWFueSBzdGFjayBlbGVtZW50cyBhdCBvbmNlIChsaWtlIEFQUEVORFMKKyMgYW5kIFNFVElURU1TKSwgYW5kICJzaG9ydGN1dCIgb3Bjb2RlcyAobGlrZSBFTVBUWV9ESUNUIGFuZCBFTVBUWV9UVVBMRSkuCisjCisjIFRoZSB0aGlyZCBtYWpvciBzZXQgb2YgYWRkaXRpb25zIGNhbWUgaW4gUHl0aG9uIDIuMywgYW5kIGlzIGNhbGxlZCAicHJvdG9jb2wKKyMgMiIuICBUaGlzIGFkZGVkOgorIworIyAtIEEgYmV0dGVyIHdheSB0byBwaWNrbGUgaW5zdGFuY2VzIG9mIG5ldy1zdHlsZSBjbGFzc2VzIChORVdPQkopLgorIworIyAtIEEgd2F5IGZvciBhIHBpY2tsZSB0byBpZGVudGlmeSBpdHMgcHJvdG9jb2wgKFBST1RPKS4KKyMKKyMgLSBUaW1lLSBhbmQgc3BhY2UtIGVmZmljaWVudCBwaWNrbGluZyBvZiBsb25nIGludHMgKExPTkd7MSw0fSkuCisjCisjIC0gU2hvcnRjdXRzIGZvciBzbWFsbCB0dXBsZXMgKFRVUExFezEsMiwzfX0uCisjCisjIC0gRGVkaWNhdGVkIG9wY29kZXMgZm9yIGJvb2xzIChORVdUUlVFLCBORVdGQUxTRSkuCisjCisjIC0gVGhlICJleHRlbnNpb24gcmVnaXN0cnkiLCBhIHZlY3RvciBvZiBwb3B1bGFyIG9iamVjdHMgdGhhdCBjYW4gYmUgcHVzaGVkCisjICAgZWZmaWNpZW50bHkgYnkgaW5kZXggKEVYVHsxLDIsNH0pLiAgVGhpcyBpcyBha2luIHRvIHRoZSBtZW1vIGFuZCBHRVQsIGJ1dAorIyAgIHRoZSByZWdpc3RyeSBjb250ZW50cyBhcmUgcHJlZGVmaW5lZCAodGhlcmUncyBub3RoaW5nIGFraW4gdG8gdGhlIG1lbW8ncworIyAgIFBVVCkuCisjCisjIEFub3RoZXIgaW5kZXBlbmRlbnQgY2hhbmdlIHdpdGggUHl0aG9uIDIuMyBpcyB0aGUgYWJhbmRvbm1lbnQgb2YgYW55CisjIHByZXRlbnNlIHRoYXQgaXQgbWlnaHQgYmUgc2FmZSB0byBsb2FkIHBpY2tsZXMgcmVjZWl2ZWQgZnJvbSB1bnRydXN0ZWQKKyMgcGFydGllcyAtLSBubyBzdWZmaWNpZW50IHNlY3VyaXR5IGFuYWx5c2lzIGhhcyBiZWVuIGRvbmUgdG8gZ3VhcmFudGVlCisjIHRoaXMgYW5kIHRoZXJlIGlzbid0IGEgdXNlIGNhc2UgdGhhdCB3YXJyYW50cyB0aGUgZXhwZW5zZSBvZiBzdWNoIGFuCisjIGFuYWx5c2lzLgorIworIyBUbyB0aGlzIGVuZCwgYWxsIHRlc3RzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyBvciBmb3IKKyMgY29weXJlZy5zYWZlX2NvbnN0cnVjdG9ycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB1bnBpY2tsaW5nIGNvZGUuCisjIFJlZmVyZW5jZXMgdG8gdGhlc2UgdmFyaWFibGVzIGluIHRoZSBkZXNjcmlwdGlvbnMgYmVsb3cgYXJlIHRvIGJlIHNlZW4KKyMgYXMgZGVzY3JpYmluZyB1bnBpY2tsaW5nIGluIFB5dGhvbiAyLjIgYW5kIGJlZm9yZS4KIAotRm9yIHRoZSBtb3N0IHBhcnQsIHRoZSBQTSBpcyB2ZXJ5IHNpbXBsZTogIHRoZXJlIGFyZSBubyBsb29waW5nLCB0ZXN0aW5nLCBvcgotY29uZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zLCBubyBhcml0aG1ldGljIGFuZCBubyBmdW5jdGlvbiBjYWxscy4gIE9wY29kZXMgYXJlCi1leGVjdXRlZCBvbmNlIGVhY2gsIGZyb20gZmlyc3QgdG8gbGFzdCwgdW50aWwgYSBTVE9QIG9wY29kZSBpcyByZWFjaGVkLgotCi1UaGUgUE0gaGFzIHR3byBkYXRhIGFyZWFzLCAidGhlIHN0YWNrIiBhbmQgInRoZSBtZW1vIi4KLQotTWFueSBvcGNvZGVzIHB1c2ggUHl0aG9uIG9iamVjdHMgb250byB0aGUgc3RhY2s7IGUuZy4sIElOVCBwdXNoZXMgYSBQeXRob24KLWludGVnZXIgb2JqZWN0IG9uIHRoZSBzdGFjaywgd2hvc2UgdmFsdWUgaXMgZ290dGVuIGZyb20gYSBkZWNpbWFsIHN0cmluZwotbGl0ZXJhbCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIElOVCBvcGNvZGUgaW4gdGhlIHBpY2tsZSBieXRlc3RyZWFtLiAgT3RoZXIKLW9wY29kZXMgdGFrZSBQeXRob24gb2JqZWN0cyBvZmYgdGhlIHN0YWNrLiAgVGhlIHJlc3VsdCBvZiB1bnBpY2tsaW5nIGlzCi13aGF0ZXZlciBvYmplY3QgaXMgbGVmdCBvbiB0aGUgc3RhY2sgd2hlbiB0aGUgZmluYWwgU1RPUCBvcGNvZGUgaXMgZXhlY3V0ZWQuCi0KLVRoZSBtZW1vIGlzIHNpbXBseSBhbiBhcnJheSBvZiBvYmplY3RzLCBvciBpdCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYSBkaWN0Ci1tYXBwaW5nIGxpdHRsZSBpbnRlZ2VycyB0byBvYmplY3RzLiAgVGhlIG1lbW8gc2VydmVzIGFzIHRoZSBQTSdzICJsb25nIHRlcm0KLW1lbW9yeSIsIGFuZCB0aGUgbGl0dGxlIGludGVnZXJzIGluZGV4aW5nIHRoZSBtZW1vIGFyZSBha2luIHRvIHZhcmlhYmxlCi1uYW1lcy4gIFNvbWUgb3Bjb2RlcyBwb3AgYSBzdGFjayBvYmplY3QgaW50byB0aGUgbWVtbyBhdCBhIGdpdmVuIGluZGV4LAotYW5kIG90aGVycyBwdXNoIGEgbWVtbyBvYmplY3QgYXQgYSBnaXZlbiBpbmRleCBvbnRvIHRoZSBzdGFjayBhZ2Fpbi4KLQotQXQgaGVhcnQsIHRoYXQncyBhbGwgdGhlIFBNIGhhcy4gIFN1YnRsZXRpZXMgYXJpc2UgZm9yIHRoZXNlIHJlYXNvbnM6Ci0KLSsgT2JqZWN0IGlkZW50aXR5LiAgT2JqZWN0cyBjYW4gYmUgYXJiaXRyYXJpbHkgY29tcGxleCwgYW5kIHN1Ym9iamVjdHMKLSAgbWF5IGJlIHNoYXJlZCAoZm9yIGV4YW1wbGUsIHRoZSBsaXN0IFthLCBhXSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGEKLSAgdHdpY2UpLiAgSXQgY2FuIGJlIHZpdGFsIHRoYXQgdW5waWNrbGluZyByZWNyZWF0ZSBhbiBpc29tb3JwaGljIG9iamVjdAotICBncmFwaCwgZmFpdGhmdWxseSByZXByb2R1Y2luZyBzaGFyaW5nLgotCi0rIFJlY3Vyc2l2ZSBvYmplY3RzLiAgRm9yIGV4YW1wbGUsIGFmdGVyICJMID0gW107IEwuYXBwZW5kKEwpIiwgTCBpcyBhCi0gIGxpc3QsIGFuZCBMWzBdIGlzIHRoZSBzYW1lIGxpc3QuICBUaGlzIGlzIHJlbGF0ZWQgdG8gdGhlIG9iamVjdCBpZGVudGl0eQotICBwb2ludCwgYW5kIHNvbWUgc2VxdWVuY2VzIG9mIHBpY2tsZSBvcGNvZGVzIGFyZSBzdWJ0bGUgaW4gb3JkZXIgdG8KLSAgZ2V0IHRoZSByaWdodCByZXN1bHQgaW4gYWxsIGNhc2VzLgotCi0rIFRoaW5ncyBwaWNrbGUgZG9lc24ndCBrbm93IGV2ZXJ5dGhpbmcgYWJvdXQuICBFeGFtcGxlcyBvZiB0aGluZ3MgcGlja2xlCi0gIGRvZXMga25vdyBldmVyeXRoaW5nIGFib3V0IGFyZSBQeXRob24ncyBidWlsdGluIHNjYWxhciBhbmQgY29udGFpbmVyCi0gIHR5cGVzLCBsaWtlIGludHMgYW5kIHR1cGxlcy4gIFRoZXkgZ2VuZXJhbGx5IGhhdmUgb3Bjb2RlcyBkZWRpY2F0ZWQgdG8KLSAgdGhlbS4gIEZvciB0aGluZ3MgbGlrZSBtb2R1bGUgcmVmZXJlbmNlcyBhbmQgaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZAotICBjbGFzc2VzLCBwaWNrbGUncyBrbm93bGVkZ2UgaXMgbGltaXRlZC4gIEhpc3RvcmljYWxseSwgbWFueSBlbmhhbmNlbWVudHMKLSAgaGF2ZSBiZWVuIG1hZGUgdG8gdGhlIHBpY2tsZSBwcm90b2NvbCBpbiBvcmRlciB0byBkbyBhIGJldHRlciAoZmFzdGVyLAotICBhbmQvb3IgbW9yZSBjb21wYWN0KSBqb2Igb24gdGhvc2UuCi0KLSsgQmFja3dhcmQgY29tcGF0aWJpbGl0eSBhbmQgbWljcm8tb3B0aW1pemF0aW9uLiAgQXMgZXhwbGFpbmVkIGJlbG93LAotICBwaWNrbGUgb3Bjb2RlcyBuZXZlciBnbyBhd2F5LCBub3QgZXZlbiB3aGVuIGJldHRlciB3YXlzIHRvIGRvIGEgdGhpbmcKLSAgZ2V0IGludmVudGVkLiAgVGhlIHJlcGVydG9pcmUgb2YgdGhlIFBNIGp1c3Qga2VlcHMgZ3Jvd2luZyBvdmVyIHRpbWUuCi0gIEZvciBleGFtcGxlLCBwcm90b2NvbCAwIGhhZCB0d28gb3Bjb2RlcyBmb3IgYnVpbGRpbmcgUHl0aG9uIGludGVnZXJzIChJTlQKLSAgYW5kIExPTkcpLCBwcm90b2NvbCAxIGFkZGVkIHRocmVlIG1vcmUgZm9yIG1vcmUtZWZmaWNpZW50IHBpY2tsaW5nIG9mIHNob3J0Ci0gIGludGVnZXJzLCBhbmQgcHJvdG9jb2wgMiBhZGRlZCB0d28gbW9yZSBmb3IgbW9yZS1lZmZpY2llbnQgcGlja2xpbmcgb2YKLSAgbG9uZyBpbnRlZ2VycyAoYmVmb3JlIHByb3RvY29sIDIsIHRoZSBvbmx5IHdheXMgdG8gcGlja2xlIGEgUHl0aG9uIGxvbmcKLSAgdG9vayB0aW1lIHF1YWRyYXRpYyBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgZm9yIGJvdGggcGlja2xpbmcgYW5kCi0gIHVucGlja2xpbmcpLiAgIk9wY29kZSBibG9hdCIgaXNuJ3Qgc28gbXVjaCBhIHN1YnRsZXR5IGFzIGEgc291cmNlIG9mCi0gIHdlYXJ5aW5nIGNvbXBsaWNhdGlvbi4KLQotCi1QaWNrbGUgcHJvdG9jb2xzOgotCi1Gb3IgY29tcGF0aWJpbGl0eSwgdGhlIG1lYW5pbmcgb2YgYSBwaWNrbGUgb3Bjb2RlIG5ldmVyIGNoYW5nZXMuICBJbnN0ZWFkIG5ldwotcGlja2xlIG9wY29kZXMgZ2V0IGFkZGVkLCBhbmQgZWFjaCB2ZXJzaW9uJ3MgdW5waWNrbGVyIGNhbiBoYW5kbGUgYWxsIHRoZQotcGlja2xlIG9wY29kZXMgaW4gYWxsIHByb3RvY29sIHZlcnNpb25zIHRvIGRhdGUuICBTbyBvbGQgcGlja2xlcyBjb250aW51ZSB0bwotYmUgcmVhZGFibGUgZm9yZXZlci4gIFRoZSBwaWNrbGVyIGNhbiBnZW5lcmFsbHkgYmUgdG9sZCB0byByZXN0cmljdCBpdHNlbGYgdG8KLXRoZSBzdWJzZXQgb2Ygb3Bjb2RlcyBhdmFpbGFibGUgdW5kZXIgcHJldmlvdXMgcHJvdG9jb2wgdmVyc2lvbnMgdG9vLCBzbyB0aGF0Ci11c2VycyBjYW4gY3JlYXRlIHBpY2tsZXMgdW5kZXIgdGhlIGN1cnJlbnQgdmVyc2lvbiByZWFkYWJsZSBieSBvbGRlcgotdmVyc2lvbnMuICBIb3dldmVyLCBhIHBpY2tsZSBkb2VzIG5vdCBjb250YWluIGl0cyB2ZXJzaW9uIG51bWJlciBlbWJlZGRlZAotd2l0aGluIGl0LiAgSWYgYW4gb2xkZXIgdW5waWNrbGVyIHRyaWVzIHRvIHJlYWQgYSBwaWNrbGUgdXNpbmcgYSBsYXRlcgotcHJvdG9jb2wsIHRoZSByZXN1bHQgaXMgbW9zdCBsaWtlbHkgYW4gZXhjZXB0aW9uIGR1ZSB0byBzZWVpbmcgYW4gdW5rbm93biAoaW4KLXRoZSBvbGRlciB1bnBpY2tsZXIpIG9wY29kZS4KLQotVGhlIG9yaWdpbmFsIHBpY2tsZSB1c2VkIHdoYXQncyBub3cgY2FsbGVkICJwcm90b2NvbCAwIiwgYW5kIHdoYXQgd2FzIGNhbGxlZAotInRleHQgbW9kZSIgYmVmb3JlIFB5dGhvbiAyLjMuICBUaGUgZW50aXJlIHBpY2tsZSBieXRlc3RyZWFtIGlzIG1hZGUgdXAgb2YKLXByaW50YWJsZSA3LWJpdCBBU0NJSSBjaGFyYWN0ZXJzLCBwbHVzIHRoZSBuZXdsaW5lIGNoYXJhY3RlciwgaW4gcHJvdG9jb2wgMC4KLVRoYXQncyB3aHkgaXQgd2FzIGNhbGxlZCB0ZXh0IG1vZGUuICBQcm90b2NvbCAwIGlzIHNtYWxsIGFuZCBlbGVnYW50LCBidXQKLXNvbWV0aW1lcyBwYWluZnVsbHkgaW5lZmZpY2llbnQuCi0KLVRoZSBzZWNvbmQgbWFqb3Igc2V0IG9mIGFkZGl0aW9ucyBpcyBub3cgY2FsbGVkICJwcm90b2NvbCAxIiwgYW5kIHdhcyBjYWxsZWQKLSJiaW5hcnkgbW9kZSIgYmVmb3JlIFB5dGhvbiAyLjMuICBUaGlzIGFkZGVkIG1hbnkgb3Bjb2RlcyB3aXRoIGFyZ3VtZW50cwotY29uc2lzdGluZyBvZiBhcmJpdHJhcnkgYnl0ZXMsIGluY2x1ZGluZyBOVUwgYnl0ZXMgYW5kIHVucHJpbnRhYmxlICJoaWdoIGJpdCIKLWJ5dGVzLiAgQmluYXJ5IG1vZGUgcGlja2xlcyBjYW4gYmUgc3Vic3RhbnRpYWxseSBzbWFsbGVyIHRoYW4gZXF1aXZhbGVudAotdGV4dCBtb2RlIHBpY2tsZXMsIGFuZCBzb21ldGltZXMgZmFzdGVyIHRvbzsgZS5nLiwgQklOSU5UIHJlcHJlc2VudHMgYSA0LWJ5dGUKLWludCBhcyA0IGJ5dGVzIGZvbGxvd2luZyB0aGUgb3Bjb2RlLCB3aGljaCBpcyBjaGVhcGVyIHRvIHVucGlja2xlIHRoYW4gdGhlCi0ocGVyaGFwcykgMTEtY2hhcmFjdGVyIGRlY2ltYWwgc3RyaW5nIGF0dGFjaGVkIHRvIElOVC4gIFByb3RvY29sIDEgYWxzbyBhZGRlZAotYSBudW1iZXIgb2Ygb3Bjb2RlcyB0aGF0IG9wZXJhdGUgb24gbWFueSBzdGFjayBlbGVtZW50cyBhdCBvbmNlIChsaWtlIEFQUEVORFMKLWFuZCBTRVRJVEVNUyksIGFuZCAic2hvcnRjdXQiIG9wY29kZXMgKGxpa2UgRU1QVFlfRElDVCBhbmQgRU1QVFlfVFVQTEUpLgotCi1UaGUgdGhpcmQgbWFqb3Igc2V0IG9mIGFkZGl0aW9ucyBjYW1lIGluIFB5dGhvbiAyLjMsIGFuZCBpcyBjYWxsZWQgInByb3RvY29sCi0yIi4gIFRoaXMgYWRkZWQ6Ci0KLS0gQSBiZXR0ZXIgd2F5IHRvIHBpY2tsZSBpbnN0YW5jZXMgb2YgbmV3LXN0eWxlIGNsYXNzZXMgKE5FV09CSikuCi0KLS0gQSB3YXkgZm9yIGEgcGlja2xlIHRvIGlkZW50aWZ5IGl0cyBwcm90b2NvbCAoUFJPVE8pLgotCi0tIFRpbWUtIGFuZCBzcGFjZS0gZWZmaWNpZW50IHBpY2tsaW5nIG9mIGxvbmcgaW50cyAoTE9OR3sxLDR9KS4KLQotLSBTaG9ydGN1dHMgZm9yIHNtYWxsIHR1cGxlcyAoVFVQTEV7MSwyLDN9fS4KLQotLSBEZWRpY2F0ZWQgb3Bjb2RlcyBmb3IgYm9vbHMgKE5FV1RSVUUsIE5FV0ZBTFNFKS4KLQotLSBUaGUgImV4dGVuc2lvbiByZWdpc3RyeSIsIGEgdmVjdG9yIG9mIHBvcHVsYXIgb2JqZWN0cyB0aGF0IGNhbiBiZSBwdXNoZWQKLSAgZWZmaWNpZW50bHkgYnkgaW5kZXggKEVYVHsxLDIsNH0pLiAgVGhpcyBpcyBha2luIHRvIHRoZSBtZW1vIGFuZCBHRVQsIGJ1dAotICB0aGUgcmVnaXN0cnkgY29udGVudHMgYXJlIHByZWRlZmluZWQgKHRoZXJlJ3Mgbm90aGluZyBha2luIHRvIHRoZSBtZW1vJ3MKLSAgUFVUKS4KLQotQW5vdGhlciBpbmRlcGVuZGVudCBjaGFuZ2Ugd2l0aCBQeXRob24gMi4zIGlzIHRoZSBhYmFuZG9ubWVudCBvZiBhbnkKLXByZXRlbnNlIHRoYXQgaXQgbWlnaHQgYmUgc2FmZSB0byBsb2FkIHBpY2tsZXMgcmVjZWl2ZWQgZnJvbSB1bnRydXN0ZWQKLXBhcnRpZXMgLS0gbm8gc3VmZmljaWVudCBzZWN1cml0eSBhbmFseXNpcyBoYXMgYmVlbiBkb25lIHRvIGd1YXJhbnRlZQotdGhpcyBhbmQgdGhlcmUgaXNuJ3QgYSB1c2UgY2FzZSB0aGF0IHdhcnJhbnRzIHRoZSBleHBlbnNlIG9mIHN1Y2ggYW4KLWFuYWx5c2lzLgotCi1UbyB0aGlzIGVuZCwgYWxsIHRlc3RzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyBvciBmb3IKLWNvcHlyZWcuc2FmZV9jb25zdHJ1Y3RvcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgdW5waWNrbGluZyBjb2RlLgotUmVmZXJlbmNlcyB0byB0aGVzZSB2YXJpYWJsZXMgaW4gdGhlIGRlc2NyaXB0aW9ucyBiZWxvdyBhcmUgdG8gYmUgc2VlbgotYXMgZGVzY3JpYmluZyB1bnBpY2tsaW5nIGluIFB5dGhvbiAyLjIgYW5kIGJlZm9yZS4KLSIiIgogCiAjIE1ldGEtcnVsZTogIERlc2NyaXB0aW9ucyBhcmUgc3RvcmVkIGluIGluc3RhbmNlcyBvZiBkZXNjcmlwdG9yIG9iamVjdHMsCiAjIHdpdGggcGxhaW4gY29uc3RydWN0b3JzLiAgTm8gbWV0YS1sYW5ndWFnZSBpcyBkZWZpbmVkIGZyb20gd2hpY2gKZGlmZiAtLWdpdCBhL0xpYi9wa2d1dGlsLnB5IGIvTGliL3BrZ3V0aWwucHkKaW5kZXggMjBlNjQ5OC4uNDY3OGJiOCAxMDA2NDQKLS0tIGEvTGliL3BrZ3V0aWwucHkKKysrIGIvTGliL3BrZ3V0aWwucHkKQEAgLTEsMTIgKzEsMTMgQEAKICIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBzaW5nbGVkaXNwYXRjaCBhcyBzaW1wbGVnZW5lcmljCiBpbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKK2ltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KK2ltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKK2ltcG9ydCB3YXJuaW5ncwogCiBfX2FsbF9fID0gWwogICAgICdnZXRfaW1wb3J0ZXInLCAnaXRlcl9pbXBvcnRlcnMnLCAnZ2V0X2xvYWRlcicsICdmaW5kX2xvYWRlcicsCkBAIC0yMCw1MyArMjEsMTMgQEAKICAgICBpbXBvcnQgbWFyc2hhbAogCiAgICAgbWFnaWMgPSBzdHJlYW0ucmVhZCg0KQotICAgIGlmIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKKyAgICBpZiBtYWdpYyAhPSBpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVI6CiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBzdHJlYW0ucmVhZCg4KSAjIFNraXAgdGltZXN0YW1wIGFuZCBzaXplCiAgICAgcmV0dXJuIG1hcnNoYWwubG9hZChzdHJlYW0pCiAKIAotZGVmIHNpbXBsZWdlbmVyaWMoZnVuYyk6Ci0gICAgIiIiTWFrZSBhIHRyaXZpYWwgc2luZ2xlLWRpc3BhdGNoIGdlbmVyaWMgZnVuY3Rpb24iIiIKLSAgICByZWdpc3RyeSA9IHt9Ci0gICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3cpOgotICAgICAgICBvYiA9IGFyZ3NbMF0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2xzID0gb2IuX19jbGFzc19fCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGNscyA9IHR5cGUob2IpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1ybyA9IGNscy5fX21yb19fCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjbGFzcyBjbHMoY2xzLCBvYmplY3QpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgbXJvID0gY2xzLl9fbXJvX19bMTpdCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgIG1ybyA9IG9iamVjdCwgICAjIG11c3QgYmUgYW4gRXh0ZW5zaW9uQ2xhc3Mgb3Igc29tZSBzdWNoICA6KAotICAgICAgICBmb3IgdCBpbiBtcm86Ci0gICAgICAgICAgICBpZiB0IGluIHJlZ2lzdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiByZWdpc3RyeVt0XSgqYXJncywgKiprdykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3KQotICAgIHRyeToKLSAgICAgICAgd3JhcHBlci5fX25hbWVfXyA9IGZ1bmMuX19uYW1lX18KLSAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgotICAgICAgICBwYXNzICAgICMgUHl0aG9uIDIuMyBkb2Vzbid0IGFsbG93IGZ1bmN0aW9ucyB0byBiZSByZW5hbWVkCi0KLSAgICBkZWYgcmVnaXN0ZXIodHlwLCBmdW5jPU5vbmUpOgotICAgICAgICBpZiBmdW5jIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIGY6IHJlZ2lzdGVyKHR5cCwgZikKLSAgICAgICAgcmVnaXN0cnlbdHlwXSA9IGZ1bmMKLSAgICAgICAgcmV0dXJuIGZ1bmMKLQotICAgIHdyYXBwZXIuX19kaWN0X18gPSBmdW5jLl9fZGljdF9fCi0gICAgd3JhcHBlci5fX2RvY19fID0gZnVuYy5fX2RvY19fCi0gICAgd3JhcHBlci5yZWdpc3RlciA9IHJlZ2lzdGVyCi0gICAgcmV0dXJuIHdyYXBwZXIKLQotCiBkZWYgd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKToKICAgICAiIiJZaWVsZHMgKG1vZHVsZV9sb2FkZXIsIG5hbWUsIGlzcGtnKSBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkKICAgICBvbiBwYXRoLCBvciwgaWYgcGF0aCBpcyBOb25lLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgpAQCAtMTIxLDggKzgyLDcgQEAKICAgICAgICAgICAgICAgICAjIGRvbid0IHRyYXZlcnNlIHBhdGggaXRlbXMgd2UndmUgc2VlbiBiZWZvcmUKICAgICAgICAgICAgICAgICBwYXRoID0gW3AgZm9yIHAgaW4gcGF0aCBpZiBub3Qgc2VlbihwKV0KIAotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHdhbGtfcGFja2FnZXMocGF0aCwgbmFtZSsnLicsIG9uZXJyb3IpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBpdGVtCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrX3BhY2thZ2VzKHBhdGgsIG5hbWUrJy4nLCBvbmVycm9yKQogCiAKIGRlZiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpOgpAQCAtMTQ5LDEzICsxMDksMTIgQEAKICAgICAgICAgICAgICAgICB5aWVsZCBpLCBuYW1lLCBpc3BrZwogCiAKLSNAc2ltcGxlZ2VuZXJpYworQHNpbXBsZWdlbmVyaWMKIGRlZiBpdGVyX2ltcG9ydGVyX21vZHVsZXMoaW1wb3J0ZXIsIHByZWZpeD0nJyk6CiAgICAgaWYgbm90IGhhc2F0dHIoaW1wb3J0ZXIsICdpdGVyX21vZHVsZXMnKToKICAgICAgICAgcmV0dXJuIFtdCiAgICAgcmV0dXJuIGltcG9ydGVyLml0ZXJfbW9kdWxlcyhwcmVmaXgpCiAKLWl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyA9IHNpbXBsZWdlbmVyaWMoaXRlcl9pbXBvcnRlcl9tb2R1bGVzKQogCiAjIEltcGxlbWVudCBhIGZpbGUgd2Fsa2VyIGZvciB0aGUgbm9ybWFsIGltcG9ydGxpYiBwYXRoIGhvb2sKIGRlZiBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKGltcG9ydGVyLCBwcmVmaXg9JycpOgpAQCAtMjAxLDYgKzE2MCwxMyBAQAogaXRlcl9pbXBvcnRlcl9tb2R1bGVzLnJlZ2lzdGVyKAogICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciwgX2l0ZXJfZmlsZV9maW5kZXJfbW9kdWxlcykKIAorCitkZWYgX2ltcG9ydF9pbXAoKToKKyAgICBnbG9iYWwgaW1wCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgIGltcCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdpbXAnKQorCiBjbGFzcyBJbXBJbXBvcnRlcjoKICAgICAiIiJQRVAgMzAyIEltcG9ydGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0KIApAQCAtMjEzLDggKzE3OSwxMCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSk6Ci0gICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgZ2xvYmFsIGltcAorICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCiAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBfaW1wb3J0X2ltcCgpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKQEAgLTI3OSw4ICsyNDcsOSBAQAogICAgIGNvZGUgPSBzb3VyY2UgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpOgotICAgICAgICB3YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBfaW1wb3J0X2ltcCgpCiAgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYuZnVsbG5hbWUgPSBmdWxsbmFtZQpAQCAtMzUwLDkgKzMxOSw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUFlfQ09NUElMRUQ6CiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5maWxlbmFtZVs6LTFdKToKLSAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5maWxlbmFtZVs6LTFdLCAncicpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZi5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lWzotMV0sICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZi5yZWFkKCkKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGU9PWltcC5QS0dfRElSRUNUT1JZOgogICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gc2VsZi5fZ2V0X2RlbGVnYXRlKCkuZ2V0X3NvdXJjZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnNvdXJjZQpAQCAtNDU2LDggKzQyNCw3IEBACiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgogICAgIGVsc2U6Ci0gICAgICAgIGZvciBpbXBvcnRlciBpbiBzeXMubWV0YV9wYXRoOgotICAgICAgICAgICAgeWllbGQgaW1wb3J0ZXIKKyAgICAgICAgeWllbGQgZnJvbSBzeXMubWV0YV9wYXRoCiAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgIGZvciBpdGVtIGluIHBhdGg6CiAgICAgICAgIHlpZWxkIGdldF9pbXBvcnRlcihpdGVtKQpAQCAtNTg5LDE2ICs1NTYsMTYgQEAKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGtnZmlsZSk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZiA9IG9wZW4ocGtnZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW4ndCBvcGVuICVzOiAlc1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGtnZmlsZSwgbXNnKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCdcbicpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQobGluZSkgIyBEb24ndCBjaGVjayBmb3IgZXhpc3RlbmNlIQotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggZjoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguYXBwZW5kKGxpbmUpICMgRG9uJ3QgY2hlY2sgZm9yIGV4aXN0ZW5jZSEKIAogICAgIHJldHVybiBwYXRoCiAKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LW9zMmVteC9JTi5weSBiL0xpYi9wbGF0LW9zMmVteC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUzYWUyNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1vczJlbXgvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gZjovZW14L2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcGFyYW0uaAotUEFHRV9TSVpFID0gMHgxMDAwCi1IWiA9IDEwMAotTUFYTkFNTEVOID0gMjYwCi1NQVhQQVRITEVOID0gMjYwCi1kZWYgaHRvbmwoWCk6IHJldHVybiBfc3dhcGwoWCkKLQotZGVmIG50b2hsKFgpOiByZXR1cm4gX3N3YXBsKFgpCi0KLWRlZiBodG9ucyhYKTogcmV0dXJuIF9zd2FwcyhYKQotCi1kZWYgbnRvaHMoWCk6IHJldHVybiBfc3dhcHMoWCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKGludCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9BTlkgPSAweDAwMDAwMDAwCi1JTkFERFJfTE9PUEJBQ0sgPSAweDdmMDAwMDAxCi1JTkFERFJfQlJPQURDQVNUID0gMHhmZmZmZmZmZgotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfTVVMVElDQVNUX0lGID0gMgotSVBfTVVMVElDQVNUX1RUTCA9IDMKLUlQX01VTFRJQ0FTVF9MT09QID0gNAotSVBfQUREX01FTUJFUlNISVAgPSA1Ci1JUF9EUk9QX01FTUJFUlNISVAgPSA2Ci1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtb3MyZW14L1NPQ0tFVC5weSBiL0xpYi9wbGF0LW9zMmVteC9TT0NLRVQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYzU5NGEuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtb3MyZW14L1NPQ0tFVC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gZjovZW14L2luY2x1ZGUvc3lzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAotRkRfU0VUU0laRSA9IDI1NgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Vpby5oCi1GUkVBRCA9IDEKLUZXUklURSA9IDIKLVNPQ0tfU1RSRUFNID0gMQotU09DS19ER1JBTSA9IDIKLVNPQ0tfUkFXID0gMwotU09DS19SRE0gPSA0Ci1TT0NLX1NFUVBBQ0tFVCA9IDUKLVNPX0RFQlVHID0gMHgwMDAxCi1TT19BQ0NFUFRDT05OID0gMHgwMDAyCi1TT19SRVVTRUFERFIgPSAweDAwMDQKLVNPX0tFRVBBTElWRSA9IDB4MDAwOAotU09fRE9OVFJPVVRFID0gMHgwMDEwCi1TT19CUk9BRENBU1QgPSAweDAwMjAKLVNPX1VTRUxPT1BCQUNLID0gMHgwMDQwCi1TT19MSU5HRVIgPSAweDAwODAKLVNPX09PQklOTElORSA9IDB4MDEwMAotU09fTF9CUk9BRENBU1QgPSAweDAyMDAKLVNPX1JDVl9TSFVURE9XTiA9IDB4MDQwMAotU09fU05EX1NIVVRET1dOID0gMHgwODAwCi1TT19TTkRCVUYgPSAweDEwMDEKLVNPX1JDVkJVRiA9IDB4MTAwMgotU09fU05ETE9XQVQgPSAweDEwMDMKLVNPX1JDVkxPV0FUID0gMHgxMDA0Ci1TT19TTkRUSU1FTyA9IDB4MTAwNQotU09fUkNWVElNRU8gPSAweDEwMDYKLVNPX0VSUk9SID0gMHgxMDA3Ci1TT19UWVBFID0gMHgxMDA4Ci1TT19PUFRJT05TID0gMHgxMDEwCi1TT0xfU09DS0VUID0gMHhmZmZmCi1BRl9VTlNQRUMgPSAwCi1BRl9VTklYID0gMQotQUZfSU5FVCA9IDIKLUFGX0lNUExJTksgPSAzCi1BRl9QVVAgPSA0Ci1BRl9DSEFPUyA9IDUKLUFGX05TID0gNgotQUZfTkJTID0gNwotQUZfSVNPID0gNwotQUZfT1NJID0gQUZfSVNPCi1BRl9FQ01BID0gOAotQUZfREFUQUtJVCA9IDkKLUFGX0NDSVRUID0gMTAKLUFGX1NOQSA9IDExCi1BRl9ERUNuZXQgPSAxMgotQUZfRExJID0gMTMKLUFGX0xBVCA9IDE0Ci1BRl9IWUxJTksgPSAxNQotQUZfQVBQTEVUQUxLID0gMTYKLUFGX05CID0gMTcKLUFGX05FVEJJT1MgPSBBRl9OQgotQUZfT1MyID0gQUZfVU5JWAotQUZfTUFYID0gMTgKLVBGX1VOU1BFQyA9IEFGX1VOU1BFQwotUEZfVU5JWCA9IEFGX1VOSVgKLVBGX0lORVQgPSBBRl9JTkVUCi1QRl9JTVBMSU5LID0gQUZfSU1QTElOSwotUEZfUFVQID0gQUZfUFVQCi1QRl9DSEFPUyA9IEFGX0NIQU9TCi1QRl9OUyA9IEFGX05TCi1QRl9OQlMgPSBBRl9OQlMKLVBGX0lTTyA9IEFGX0lTTwotUEZfT1NJID0gQUZfSVNPCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX05CID0gQUZfTkIKLVBGX05FVEJJT1MgPSBBRl9OQgotUEZfT1MyID0gQUZfVU5JWAotUEZfTUFYID0gQUZfTUFYCi1TT01BWENPTk4gPSA1Ci1NU0dfT09CID0gMHgxCi1NU0dfUEVFSyA9IDB4MgotTVNHX0RPTlRST1VURSA9IDB4NAotTVNHX0VPUiA9IDB4OAotTVNHX1RSVU5DID0gMHgxMAotTVNHX0NUUlVOQyA9IDB4MjAKLU1TR19XQUlUQUxMID0gMHg0MAotTVNHX01BWElPVkxFTiA9IDE2Ci1TQ01fUklHSFRTID0gMHgwMQotTVRfRlJFRSA9IDAKLU1UX0RBVEEgPSAxCi1NVF9IRUFERVIgPSAyCi1NVF9TT0NLRVQgPSAzCi1NVF9QQ0IgPSA0Ci1NVF9SVEFCTEUgPSA1Ci1NVF9IVEFCTEUgPSA2Ci1NVF9BVEFCTEUgPSA3Ci1NVF9TT05BTUUgPSA4Ci1NVF9aT01CSUUgPSA5Ci1NVF9TT09QVFMgPSAxMAotTVRfRlRBQkxFID0gMTEKLU1UX1JJR0hUUyA9IDEyCi1NVF9JRkFERFIgPSAxMwotTUFYU09DS0VUUyA9IDIwNDgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LW9zMmVteC9fZW14X2xpbmsucHkgYi9MaWIvcGxhdC1vczJlbXgvX2VteF9saW5rLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWU2YjU0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW9zMmVteC9fZW14X2xpbmsucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0jIF9lbXhfbGluay5weQotCi0jIFdyaXR0ZW4gYnkgQW5kcmV3IEkgTWFjSW50eXJlLCBEZWNlbWJlciAyMDAyLgotCi0iIiJfZW14X2xpbmsucHkgaXMgYSBzaW1wbGlzdGljIGVtdWxhdGlvbiBvZiB0aGUgVW5peCBsaW5rKDIpIGxpYnJhcnkgcm91dGluZQotZm9yIGNyZWF0aW5nIHNvLWNhbGxlZCBoYXJkIGxpbmtzLiAgSXQgaXMgaW50ZW5kZWQgdG8gYmUgaW1wb3J0ZWQgaW50bwotdGhlIG9zIG1vZHVsZSBpbiBwbGFjZSBvZiB0aGUgdW5pbXBsZW1lbnRlZCAob24gT1MvMikgUG9zaXggbGluaygpCi1mdW5jdGlvbiAob3MubGluaygpKS4KLQotV2UgZG8gdGhpcyBvbiBPUy8yIGJ5IGltcGxlbWVudGluZyBhIGZpbGUgY29weSwgd2l0aCBsaW5rKDIpIHNlbWFudGljczotCi0gIC0gdGhlIHRhcmdldCBjYW5ub3QgYWxyZWFkeSBleGlzdDsKLSAgLSB3ZSBob3BlIHRoYXQgdGhlIGFjdHVhbCBmaWxlIG9wZW4gKGlmIHN1Y2Nlc3NmdWwpIGlzIGFjdHVhbGx5Ci0gICAgYXRvbWljLi4uCi0KLUxpbWl0YXRpb25zIG9mIHRoaXMgYXBwcm9hY2gvaW1wbGVtZW50YXRpb24gaW5jbHVkZTotCi0gIC0gbm8gc3VwcG9ydCBmb3IgY29ycmVjdCBsaW5rIGNvdW50cyAoRU1YIHN0YXQodGFyZ2V0KS5zdF9ubGluawotICAgIGlzIGFsd2F5cyAxKTsKLSAgLSB0aHJlYWQgc2FmZXR5IHVuZGVmaW5lZDsKLSAgLSBkZWZhdWx0IGZpbGUgcGVybWlzc2lvbnMgKHIrdykgdXNlZCwgY2FuJ3QgYmUgb3Zlci1yaWRkZW47Ci0gIC0gaW1wbGVtZW50ZWQgaW4gUHl0aG9uIHNvIGNvbXBhcmF0aXZlbHkgc2xvdywgZXNwZWNpYWxseSBmb3IgbGFyZ2UKLSAgICBzb3VyY2UgZmlsZXM7Ci0gIC0gbmVlZCBzdWZmaWNpZW50IGZyZWUgZGlzayBzcGFjZSB0byBzdG9yZSB0aGUgY29weS4KLQotQmVoYXZpb3VyOi0KLSAgLSBhbnkgZXhjZXB0aW9uIHNob3VsZCBwcm9wYWdhdGUgdG8gdGhlIGNhbGxlcjsKLSAgLSB3YW50IHRhcmdldCB0byBiZSBhbiBleGFjdCBjb3B5IG9mIHRoZSBzb3VyY2UsIHNvIHVzZSBiaW5hcnkgbW9kZTsKLSAgLSByZXR1cm5zIE5vbmUsIHNhbWUgYXMgb3MubGluaygpIHdoaWNoIGlzIGltcGxlbWVudGVkIGluIHBvc2l4bW9kdWxlLmM7Ci0gIC0gdGFyZ2V0IHJlbW92ZWQgaW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSB3aGVyZSBwb3NzaWJsZTsKLSAgLSBnaXZlbiB0aGUgbW90aXZhdGlvbiB0byB3cml0ZSB0aGlzIGVtdWxhdGlvbiBjYW1lIGZyb20gdHJ5aW5nIHRvCi0gICAgc3VwcG9ydCBhIFVuaXggcmVzb3VyY2UgbG9jayBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgbWluaW1hbCBvdmVyaGVhZAotICAgIGR1cmluZyBjcmVhdGlvbiBvZiB0aGUgdGFyZ2V0IGlzIGRlc2lyYWJsZSBhbmQgdGhlIGZpbGVzIGFyZSBzbWFsbCwKLSAgICB3ZSByZWFkIGEgc291cmNlIGJsb2NrIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGNyZWF0ZSB0aGUgdGFyZ2V0IHNvIHRoYXQKLSAgICB3ZSdyZSByZWFkeSB0byBpbW1lZGlhdGVseSB3cml0ZSBzb21lIGRhdGEgaW50byBpdC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBlcnJubwotCi1fX2FsbF9fID0gWydsaW5rJ10KLQotZGVmIGxpbmsoc291cmNlLCB0YXJnZXQpOgotICAgICIiImxpbmsoc291cmNlLCB0YXJnZXQpIC0+IE5vbmUKLQotICAgIEF0dGVtcHQgdG8gaGFyZCBsaW5rIHRoZSBzb3VyY2UgZmlsZSB0byB0aGUgdGFyZ2V0IGZpbGUgbmFtZS4KLSAgICBPbiBPUy8yLCB0aGlzIGNyZWF0ZXMgYSBjb21wbGV0ZSBjb3B5IG9mIHRoZSBzb3VyY2UgZmlsZS4KLSAgICAiIiIKLQotICAgIHMgPSBvcy5vcGVuKHNvdXJjZSwgb3MuT19SRE9OTFkgfCBvcy5PX0JJTkFSWSkKLSAgICBpZiBvcy5pc2F0dHkocyk6Ci0gICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRVhERVYsICdDcm9zcy1kZXZpY2UgbGluaycpCi0gICAgZGF0YSA9IG9zLnJlYWQocywgMTAyNCkKLQotICAgIHRyeToKLSAgICAgICAgdCA9IG9zLm9wZW4odGFyZ2V0LCBvcy5PX1dST05MWSB8IG9zLk9fQklOQVJZIHwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgb3MuY2xvc2UocykKLSAgICAgICAgcmFpc2UKLQotICAgIHRyeToKLSAgICAgICAgd2hpbGUgZGF0YToKLSAgICAgICAgICAgIG9zLndyaXRlKHQsIGRhdGEpCi0gICAgICAgICAgICBkYXRhID0gb3MucmVhZChzLCAxMDI0KQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBvcy5jbG9zZShzKQotICAgICAgICBvcy5jbG9zZSh0KQotICAgICAgICBvcy51bmxpbmsodGFyZ2V0KQotICAgICAgICByYWlzZQotCi0gICAgb3MuY2xvc2UocykKLSAgICBvcy5jbG9zZSh0KQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBzeXMKLSAgICB0cnk6Ci0gICAgICAgIGxpbmsoc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQotICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICBwcmludCgnVXNhZ2U6IGVteF9saW5rIDxzb3VyY2U+IDx0YXJnZXQ+JykKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcHJpbnQoJ2VteF9saW5rOiAlcycgJSBzdHIoc3lzLmV4Y19pbmZvKClbMV0pKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtb3MyZW14L2dycC5weSBiL0xpYi9wbGF0LW9zMmVteC9ncnAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlNjNlZjguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtb3MyZW14L2dycC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jIHRoaXMgbW9kdWxlIGlzIGFuIE9TLzIgb3JpZW50ZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBncnAgc3RhbmRhcmQKLSMgZXh0ZW5zaW9uIG1vZHVsZS4KLQotIyB3cml0dGVuIGJ5IEFuZHJldyBNYWNJbnR5cmUsIEFwcmlsIDIwMDEuCi0jIHVwZGF0ZWQgSnVseSAyMDAzLCBhZGRpbmcgZmllbGQgYWNjZXNzb3Igc3VwcG9ydAotCi0jIG5vdGUgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGNoZWNrcyB3aGV0aGVyICI6IiBvciAiOyIgYXMgdXNlZCBhcwotIyB0aGUgZmllbGQgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLQotIiIiUmVwbGFjZW1lbnQgZm9yIGdycCBzdGFuZGFyZCBleHRlbnNpb24gbW9kdWxlLCBpbnRlbmRlZCBmb3IgdXNlIG9uCi1PUy8yIGFuZCBzaW1pbGFyIHN5c3RlbXMgd2hpY2ggZG9uJ3Qgbm9ybWFsbHkgaGF2ZSBhbiAvZXRjL2dyb3VwIGZpbGUuCi0KLVRoZSBzdGFuZGFyZCBVbml4IGdyb3VwIGRhdGFiYXNlIGlzIGFuIEFTQ0lJIHRleHQgZmlsZSB3aXRoIDQgZmllbGRzIHBlcgotcmVjb3JkIChsaW5lKSwgc2VwYXJhdGVkIGJ5IGEgY29sb246Ci0gIC0gZ3JvdXAgbmFtZSAoc3RyaW5nKQotICAtIGdyb3VwIHBhc3N3b3JkIChvcHRpb25hbCBlbmNyeXB0ZWQgc3RyaW5nKQotICAtIGdyb3VwIGlkIChpbnRlZ2VyKQotICAtIGdyb3VwIG1lbWJlcnMgKGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIHVzZXJpZHMsIHdpdGggbm8gc3BhY2VzKQotCi1Ob3RlIHRoYXQgbWVtYmVycyBhcmUgb25seSBpbmNsdWRlZCBpbiB0aGUgZ3JvdXAgZmlsZSBmb3IgZ3JvdXBzIHRoYXQKLWFyZW4ndCB0aGVpciBwcmltYXJ5IGdyb3Vwcy4KLShzZWUgdGhlIHNlY3Rpb24gOC4yIG9mIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UpCi0KLVRoaXMgaW1wbGVtZW50YXRpb24gZGlmZmVycyBmcm9tIHRoZSBzdGFuZGFyZCBVbml4IGltcGxlbWVudGF0aW9uIGJ5Ci1hbGxvd2luZyB1c2Ugb2YgdGhlIHBsYXRmb3JtJ3MgbmF0aXZlIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciAtICc7JyBvbiBPUy8yLAotRE9TIGFuZCBNUy1XaW5kb3dzIC0gYXMgdGhlIGZpZWxkIHNlcGFyYXRvciBpbiBhZGRpdGlvbiB0byB0aGUgVW5peAotc3RhbmRhcmQgIjoiLgotCi1UaGUgbW9kdWxlIGxvb2tzIGZvciB0aGUgZ3JvdXAgZGF0YWJhc2UgYXQgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnMKLShpbiBvcmRlciBmaXJzdCB0byBsYXN0KToKLSAgLSAke0VUQ19HUk9VUH0gICAgICAgICAgICAgIChvciAlRVRDX0dST1VQJSkKLSAgLSAke0VUQ30vZ3JvdXAgICAgICAgICAgICAgIChvciAlRVRDJS9ncm91cCkKLSAgLSAke1BZVEhPTkhPTUV9L0V0Yy9ncm91cCAgIChvciAlUFlUSE9OSE9NRSUvRXRjL2dyb3VwKQotCi1DbGFzc2VzCi0tLS0tLS0tCi0KLU5vbmUKLQotRnVuY3Rpb25zCi0tLS0tLS0tLS0KLQotZ2V0Z3JnaWQoZ2lkKSAtICByZXR1cm4gdGhlIHJlY29yZCBmb3IgZ3JvdXAtaWQgZ2lkIGFzIGEgNC10dXBsZQotCi1nZXRncm5hbShuYW1lKSAtIHJldHVybiB0aGUgcmVjb3JkIGZvciBncm91cCAnbmFtZScgYXMgYSA0LXR1cGxlCi0KLWdldGdyYWxsKCkgLSAgICAgcmV0dXJuIGEgbGlzdCBvZiA0LXR1cGxlcywgZWFjaCB0dXBsZSBiZWluZyBvbmUgcmVjb3JkCi0gICAgICAgICAgICAgICAgIChOT1RFOiB0aGUgb3JkZXIgaXMgYXJiaXRyYXJ5KQotCi1BdHRyaWJ1dGVzCi0tLS0tLS0tLS0tCi0KLWdyb3VwX2ZpbGUgLSAgICAgdGhlIHBhdGggb2YgdGhlIGdyb3VwIGRhdGFiYXNlIGZpbGUKLQotIiIiCi0KLWltcG9ydCBvcwotCi0jIHRyeSBhbmQgZmluZCB0aGUgZ3JvdXAgZmlsZQotX19ncm91cF9wYXRoID0gW10KLWlmICdFVENfR1JPVVAnIGluIG9zLmVudmlyb246Ci0gICAgX19ncm91cF9wYXRoLmFwcGVuZChvcy5lbnZpcm9uWydFVENfR1JPVVAnXSkKLWlmICdFVEMnIGluIG9zLmVudmlyb246Ci0gICAgX19ncm91cF9wYXRoLmFwcGVuZCgnJXMvZ3JvdXAnICUgb3MuZW52aXJvblsnRVRDJ10pCi1pZiAnUFlUSE9OSE9NRScgaW4gb3MuZW52aXJvbjoKLSAgICBfX2dyb3VwX3BhdGguYXBwZW5kKCclcy9FdGMvZ3JvdXAnICUgb3MuZW52aXJvblsnUFlUSE9OSE9NRSddKQotCi1ncm91cF9maWxlID0gTm9uZQotZm9yIF9faSBpbiBfX2dyb3VwX3BhdGg6Ci0gICAgdHJ5OgotICAgICAgICBfX2YgPSBvcGVuKF9faSwgJ3InKQotICAgICAgICBfX2YuY2xvc2UoKQotICAgICAgICBncm91cF9maWxlID0gX19pCi0gICAgICAgIGJyZWFrCi0gICAgZXhjZXB0OgotICAgICAgICBwYXNzCi0KLSMgZGVjaWRlIHdoYXQgZmllbGQgc2VwYXJhdG9yIHdlIGNhbiB0cnkgdG8gdXNlIC0gVW5peCBzdGFuZGFyZCwgd2l0aAotIyB0aGUgcGxhdGZvcm0ncyBwYXRoIHNlcGFyYXRvciBhcyBhbiBvcHRpb24uICBObyBzcGVjaWFsIGZpZWxkIGNvbnZlcnNpb24KLSMgaGFuZGxlcnMgYXJlIHJlcXVpcmVkIGZvciB0aGUgZ3JvdXAgZmlsZS4KLV9fZmllbGRfc2VwID0gWyc6J10KLWlmIG9zLnBhdGhzZXA6Ci0gICAgaWYgb3MucGF0aHNlcCAhPSAnOic6Ci0gICAgICAgIF9fZmllbGRfc2VwLmFwcGVuZChvcy5wYXRoc2VwKQotCi0jIGhlbHBlciByb3V0aW5lIHRvIGlkZW50aWZ5IHdoaWNoIHNlcGFyYXRvciBjaGFyYWN0ZXIgaXMgaW4gdXNlCi1kZWYgX19nZXRfZmllbGRfc2VwKHJlY29yZCk6Ci0gICAgZnMgPSBOb25lCi0gICAgZm9yIGMgaW4gX19maWVsZF9zZXA6Ci0gICAgICAgICMgdGhlcmUgc2hvdWxkIGJlIDMgZGVsaW1pdGVyIGNoYXJhY3RlcnMgKGZvciA0IGZpZWxkcykKLSAgICAgICAgaWYgcmVjb3JkLmNvdW50KGMpID09IDM6Ci0gICAgICAgICAgICBmcyA9IGMKLSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYgZnM6Ci0gICAgICAgIHJldHVybiBmcwotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEtleUVycm9yKCc+PiBncm91cCBkYXRhYmFzZSBmaWVsZHMgbm90IGRlbGltaXRlZCA8PCcpCi0KLSMgY2xhc3MgdG8gbWF0Y2ggdGhlIG5ldyByZWNvcmQgZmllbGQgbmFtZSBhY2Nlc3NvcnMuCi0jIHRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIGludGVuZGVkIHRvIGJlaGF2ZSBsaWtlIGEgcmVhZC1vbmx5IHR1cGxlLAotIyB3aXRoIGVhY2ggbWVtYmVyIGFsc28gYWNjZXNzaWJsZSBieSBhIGZpZWxkIG5hbWUuCi1jbGFzcyBHcm91cDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFzc3dkLCBnaWQsIG1lbSk6Ci0gICAgICAgIHNlbGYuX19kaWN0X19bJ2dyX25hbWUnXSA9IG5hbWUKLSAgICAgICAgc2VsZi5fX2RpY3RfX1snZ3JfcGFzc3dkJ10gPSBwYXNzd2QKLSAgICAgICAgc2VsZi5fX2RpY3RfX1snZ3JfZ2lkJ10gPSBnaWQKLSAgICAgICAgc2VsZi5fX2RpY3RfX1snZ3JfbWVtJ10gPSBtZW0KLSAgICAgICAgc2VsZi5fX2RpY3RfX1snX3JlY29yZCddID0gKHNlbGYuZ3JfbmFtZSwgc2VsZi5ncl9wYXNzd2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdyX2dpZCwgc2VsZi5ncl9tZW0pCi0KLSAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDQKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc2VsZi5fcmVjb3JkW2tleV0KLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdhdHRyaWJ1dGUgcmVhZC1vbmx5OiAlcycgJSBuYW1lKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc3RyKHNlbGYuX3JlY29yZCkKLQotICAgIGRlZiBfX2NtcF9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgdGhpcyA9IHN0cihzZWxmLl9yZWNvcmQpCi0gICAgICAgIGlmIHRoaXMgPT0gb3RoZXI6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBlbGlmIHRoaXMgPCBvdGhlcjoKLSAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIDEKLQotCi0jIHJlYWQgdGhlIHdob2xlIGZpbGUsIHBhcnNpbmcgZWFjaCBlbnRyeSBpbnRvIHR1cGxlIGZvcm0KLSMgd2l0aCBkaWN0aW9uYXJpZXMgdG8gc3BlZWQgcmVjYWxsIGJ5IEdJRCBvciBncm91cCBuYW1lCi1kZWYgX19yZWFkX2dyb3VwX2ZpbGUoKToKLSAgICBpZiBncm91cF9maWxlOgotICAgICAgICBncm91cCA9IG9wZW4oZ3JvdXBfZmlsZSwgJ3InKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEtleUVycm9yKCc+PiBubyBncm91cCBkYXRhYmFzZSA8PCcpCi0gICAgZ2lkeCA9IHt9Ci0gICAgbmFteCA9IHt9Ci0gICAgc2VwID0gTm9uZQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGVudHJ5ID0gZ3JvdXAucmVhZGxpbmUoKS5zdHJpcCgpCi0gICAgICAgIGlmIGxlbihlbnRyeSkgPiAzOgotICAgICAgICAgICAgaWYgc2VwIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VwID0gX19nZXRfZmllbGRfc2VwKGVudHJ5KQotICAgICAgICAgICAgZmllbGRzID0gZW50cnkuc3BsaXQoc2VwKQotICAgICAgICAgICAgZmllbGRzWzJdID0gaW50KGZpZWxkc1syXSkKLSAgICAgICAgICAgIGZpZWxkc1szXSA9IFtmLnN0cmlwKCkgZm9yIGYgaW4gZmllbGRzWzNdLnNwbGl0KCcsJyldCi0gICAgICAgICAgICByZWNvcmQgPSBHcm91cCgqZmllbGRzKQotICAgICAgICAgICAgaWYgZmllbGRzWzJdIG5vdCBpbiBnaWR4OgotICAgICAgICAgICAgICAgIGdpZHhbZmllbGRzWzJdXSA9IHJlY29yZAotICAgICAgICAgICAgaWYgZmllbGRzWzBdIG5vdCBpbiBuYW14OgotICAgICAgICAgICAgICAgIG5hbXhbZmllbGRzWzBdXSA9IHJlY29yZAotICAgICAgICBlbGlmIGxlbihlbnRyeSkgPiAwOgotICAgICAgICAgICAgcGFzcyAgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgZW1wdHkgb3IgbWFsZm9ybWVkIHJlY29yZHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZ3JvdXAuY2xvc2UoKQotICAgIGlmIGxlbihnaWR4KSA9PSAwOgotICAgICAgICByYWlzZSBLZXlFcnJvcgotICAgIHJldHVybiAoZ2lkeCwgbmFteCkKLQotIyByZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGJ5IEdJRAotZGVmIGdldGdyZ2lkKGdpZCk6Ci0gICAgZywgbiA9IF9fcmVhZF9ncm91cF9maWxlKCkKLSAgICByZXR1cm4gZ1tnaWRdCi0KLSMgcmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBieSBncm91cCBuYW1lCi1kZWYgZ2V0Z3JuYW0obmFtZSk6Ci0gICAgZywgbiA9IF9fcmVhZF9ncm91cF9maWxlKCkKLSAgICByZXR1cm4gbltuYW1lXQotCi0jIHJldHVybiBhbGwgdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJpZXMKLWRlZiBnZXRncmFsbCgpOgotICAgIGcsIG4gPSBfX3JlYWRfZ3JvdXBfZmlsZSgpCi0gICAgcmV0dXJuIGcudmFsdWVzKCkKLQotIyB0ZXN0IGhhcm5lc3MKLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZ2V0Z3JhbGwoKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtb3MyZW14L3B3ZC5weSBiL0xpYi9wbGF0LW9zMmVteC9wd2QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYjA3N2YuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtb3MyZW14L3B3ZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi0jIHRoaXMgbW9kdWxlIGlzIGFuIE9TLzIgb3JpZW50ZWQgcmVwbGFjZW1lbnQgZm9yIHRoZSBwd2Qgc3RhbmRhcmQKLSMgZXh0ZW5zaW9uIG1vZHVsZS4KLQotIyB3cml0dGVuIGJ5IEFuZHJldyBNYWNJbnR5cmUsIEFwcmlsIDIwMDEuCi0jIHVwZGF0ZWQgSnVseSAyMDAzLCBhZGRpbmcgZmllbGQgYWNjZXNzb3Igc3VwcG9ydAotCi0jIG5vdGUgdGhhdCB0aGlzIGltcGxlbWVudGF0aW9uIGNoZWNrcyB3aGV0aGVyICI6IiBvciAiOyIgYXMgdXNlZCBhcwotIyB0aGUgZmllbGQgc2VwYXJhdG9yIGNoYXJhY3Rlci4gIFBhdGggY29udmVyc2lvbnMgYXJlIGFyZSBhcHBsaWVkIHdoZW4KLSMgdGhlIGRhdGFiYXNlIHVzZXMgIjoiIGFzIHRoZSBmaWVsZCBzZXBhcmF0b3IgY2hhcmFjdGVyLgotCi0iIiJSZXBsYWNlbWVudCBmb3IgcHdkIHN0YW5kYXJkIGV4dGVuc2lvbiBtb2R1bGUsIGludGVuZGVkIGZvciB1c2Ugb24KLU9TLzIgYW5kIHNpbWlsYXIgc3lzdGVtcyB3aGljaCBkb24ndCBub3JtYWxseSBoYXZlIGFuIC9ldGMvcGFzc3dkIGZpbGUuCi0KLVRoZSBzdGFuZGFyZCBVbml4IHBhc3N3b3JkIGRhdGFiYXNlIGlzIGFuIEFTQ0lJIHRleHQgZmlsZSB3aXRoIDcgZmllbGRzCi1wZXIgcmVjb3JkIChsaW5lKSwgc2VwYXJhdGVkIGJ5IGEgY29sb246Ci0gIC0gdXNlciBuYW1lIChzdHJpbmcpCi0gIC0gcGFzc3dvcmQgKGVuY3J5cHRlZCBzdHJpbmcsIG9yICIqIiBvciAiIikKLSAgLSB1c2VyIGlkIChpbnRlZ2VyKQotICAtIGdyb3VwIGlkIChpbnRlZ2VyKQotICAtIGRlc2NyaXB0aW9uICh1c3VhbGx5IHVzZXIncyBuYW1lKQotICAtIGhvbWUgZGlyZWN0b3J5IChwYXRoIHRvIHVzZXIncyBob21lIGRpcmVjdG9yeSkKLSAgLSBzaGVsbCAocGF0aCB0byB0aGUgdXNlcidzIGxvZ2luIHNoZWxsKQotCi0oc2VlIHRoZSBzZWN0aW9uIDguMSBvZiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlKQotCi1UaGlzIGltcGxlbWVudGF0aW9uIGRpZmZlcnMgZnJvbSB0aGUgc3RhbmRhcmQgVW5peCBpbXBsZW1lbnRhdGlvbiBieQotYWxsb3dpbmcgdXNlIG9mIHRoZSBwbGF0Zm9ybSdzIG5hdGl2ZSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIgLSAnOycgb24gT1MvMiwKLURPUyBhbmQgTVMtV2luZG93cyAtIGFzIHRoZSBmaWVsZCBzZXBhcmF0b3IgaW4gYWRkaXRpb24gdG8gdGhlIFVuaXgKLXN0YW5kYXJkICI6Ii4gIEFkZGl0aW9uYWxseSwgd2hlbiAiOiIgaXMgdGhlIHNlcGFyYXRvciBwYXRoIGNvbnZlcnNpb25zCi1hcmUgYXBwbGllZCB0byBkZWFsIHdpdGggYW55IG11bmdpbmcgb2YgdGhlIGRyaXZlIGxldHRlciByZWZlcmVuY2UuCi0KLVRoZSBtb2R1bGUgbG9va3MgZm9yIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBhdCB0aGUgZm9sbG93aW5nIGxvY2F0aW9ucwotKGluIG9yZGVyIGZpcnN0IHRvIGxhc3QpOgotICAtICR7RVRDX1BBU1NXRH0gICAgICAgICAgICAgKG9yICVFVENfUEFTU1dEJSkKLSAgLSAke0VUQ30vcGFzc3dkICAgICAgICAgICAgIChvciAlRVRDJS9wYXNzd2QpCi0gIC0gJHtQWVRIT05IT01FfS9FdGMvcGFzc3dkICAob3IgJVBZVEhPTkhPTUUlL0V0Yy9wYXNzd2QpCi0KLUNsYXNzZXMKLS0tLS0tLS0KLQotTm9uZQotCi1GdW5jdGlvbnMKLS0tLS0tLS0tLQotCi1nZXRwd3VpZCh1aWQpIC0gIHJldHVybiB0aGUgcmVjb3JkIGZvciB1c2VyLWlkIHVpZCBhcyBhIDctdHVwbGUKLQotZ2V0cHduYW0obmFtZSkgLSByZXR1cm4gdGhlIHJlY29yZCBmb3IgdXNlciAnbmFtZScgYXMgYSA3LXR1cGxlCi0KLWdldHB3YWxsKCkgLSAgICAgcmV0dXJuIGEgbGlzdCBvZiA3LXR1cGxlcywgZWFjaCB0dXBsZSBiZWluZyBvbmUgcmVjb3JkCi0gICAgICAgICAgICAgICAgIChOT1RFOiB0aGUgb3JkZXIgaXMgYXJiaXRyYXJ5KQotCi1BdHRyaWJ1dGVzCi0tLS0tLS0tLS0tCi0KLXBhc3N3ZF9maWxlIC0gICAgdGhlIHBhdGggb2YgdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGZpbGUKLQotIiIiCi0KLWltcG9ydCBvcwotCi0jIHRyeSBhbmQgZmluZCB0aGUgcGFzc3dkIGZpbGUKLV9fcGFzc3dkX3BhdGggPSBbXQotaWYgJ0VUQ19QQVNTV0QnIGluIG9zLmVudmlyb246Ci0gICAgX19wYXNzd2RfcGF0aC5hcHBlbmQob3MuZW52aXJvblsnRVRDX1BBU1NXRCddKQotaWYgJ0VUQycgaW4gb3MuZW52aXJvbjoKLSAgICBfX3Bhc3N3ZF9wYXRoLmFwcGVuZCgnJXMvcGFzc3dkJyAlIG9zLmVudmlyb25bJ0VUQyddKQotaWYgJ1BZVEhPTkhPTUUnIGluIG9zLmVudmlyb246Ci0gICAgX19wYXNzd2RfcGF0aC5hcHBlbmQoJyVzL0V0Yy9wYXNzd2QnICUgb3MuZW52aXJvblsnUFlUSE9OSE9NRSddKQotCi1wYXNzd2RfZmlsZSA9IE5vbmUKLWZvciBfX2kgaW4gX19wYXNzd2RfcGF0aDoKLSAgICB0cnk6Ci0gICAgICAgIF9fZiA9IG9wZW4oX19pLCAncicpCi0gICAgICAgIF9fZi5jbG9zZSgpCi0gICAgICAgIHBhc3N3ZF9maWxlID0gX19pCi0gICAgICAgIGJyZWFrCi0gICAgZXhjZXB0OgotICAgICAgICBwYXNzCi0KLSMgcGF0aCBjb252ZXJzaW9uIGhhbmRsZXJzCi1kZWYgX19udWxscGF0aGNvbnYocGF0aCk6Ci0gICAgcmV0dXJuIHBhdGgucmVwbGFjZShvcy5hbHRzZXAsIG9zLnNlcCkKLQotZGVmIF9fdW5peHBhdGhjb252KHBhdGgpOgotICAgICMgdHdvIGtub3duIGRyaXZlIGxldHRlciB2YXJpYXRpb25zOiAieDsiIGFuZCAiJHgiCi0gICAgaWYgcGF0aFswXSA9PSAnJCc6Ci0gICAgICAgIGNvbnYgPSBwYXRoWzFdICsgJzonICsgcGF0aFsyOl0KLSAgICBlbGlmIHBhdGhbMV0gPT0gJzsnOgotICAgICAgICBjb252ID0gcGF0aFswXSArICc6JyArIHBhdGhbMjpdCi0gICAgZWxzZToKLSAgICAgICAgY29udiA9IHBhdGgKLSAgICByZXR1cm4gY29udi5yZXBsYWNlKG9zLmFsdHNlcCwgb3Muc2VwKQotCi0jIGRlY2lkZSB3aGF0IGZpZWxkIHNlcGFyYXRvciB3ZSBjYW4gdHJ5IHRvIHVzZSAtIFVuaXggc3RhbmRhcmQsIHdpdGgKLSMgdGhlIHBsYXRmb3JtJ3MgcGF0aCBzZXBhcmF0b3IgYXMgYW4gb3B0aW9uLiAgTm8gc3BlY2lhbCBmaWVsZCBjb252ZXJzaW9uCi0jIGhhbmRsZXIgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyB0aGUgcGxhdGZvcm0ncyBwYXRoIHNlcGFyYXRvciBhcyBmaWVsZAotIyBzZXBhcmF0b3IsIGJ1dCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBob21lIGRpcmVjdG9yeSBhbmQgc2hlbGwgZmllbGRzIHdoZW4KLSMgdXNpbmcgdGhlIHN0YW5kYXJkIFVuaXggKCI6IikgZmllbGQgc2VwYXJhdG9yLgotX19maWVsZF9zZXAgPSB7JzonOiBfX3VuaXhwYXRoY29udn0KLWlmIG9zLnBhdGhzZXA6Ci0gICAgaWYgb3MucGF0aHNlcCAhPSAnOic6Ci0gICAgICAgIF9fZmllbGRfc2VwW29zLnBhdGhzZXBdID0gX19udWxscGF0aGNvbnYKLQotIyBoZWxwZXIgcm91dGluZSB0byBpZGVudGlmeSB3aGljaCBzZXBhcmF0b3IgY2hhcmFjdGVyIGlzIGluIHVzZQotZGVmIF9fZ2V0X2ZpZWxkX3NlcChyZWNvcmQpOgotICAgIGZzID0gTm9uZQotICAgIGZvciBjIGluIF9fZmllbGRfc2VwLmtleXMoKToKLSAgICAgICAgIyB0aGVyZSBzaG91bGQgYmUgNiBkZWxpbWl0ZXIgY2hhcmFjdGVycyAoZm9yIDcgZmllbGRzKQotICAgICAgICBpZiByZWNvcmQuY291bnQoYykgPT0gNjoKLSAgICAgICAgICAgIGZzID0gYwotICAgICAgICAgICAgYnJlYWsKLSAgICBpZiBmczoKLSAgICAgICAgcmV0dXJuIGZzCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgS2V5RXJyb3IoJz4+IHBhc3N3ZCBkYXRhYmFzZSBmaWVsZHMgbm90IGRlbGltaXRlZCA8PCcpCi0KLSMgY2xhc3MgdG8gbWF0Y2ggdGhlIG5ldyByZWNvcmQgZmllbGQgbmFtZSBhY2Nlc3NvcnMuCi0jIHRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIGludGVuZGVkIHRvIGJlaGF2ZSBsaWtlIGEgcmVhZC1vbmx5IHR1cGxlLAotIyB3aXRoIGVhY2ggbWVtYmVyIGFsc28gYWNjZXNzaWJsZSBieSBhIGZpZWxkIG5hbWUuCi1jbGFzcyBQYXNzd2Q6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhc3N3ZCwgdWlkLCBnaWQsIGdlY29zLCBkaXIsIHNoZWxsKToKLSAgICAgICAgc2VsZi5fX2RpY3RfX1sncHdfbmFtZSddID0gbmFtZQotICAgICAgICBzZWxmLl9fZGljdF9fWydwd19wYXNzd2QnXSA9IHBhc3N3ZAotICAgICAgICBzZWxmLl9fZGljdF9fWydwd191aWQnXSA9IHVpZAotICAgICAgICBzZWxmLl9fZGljdF9fWydwd19naWQnXSA9IGdpZAotICAgICAgICBzZWxmLl9fZGljdF9fWydwd19nZWNvcyddID0gZ2Vjb3MKLSAgICAgICAgc2VsZi5fX2RpY3RfX1sncHdfZGlyJ10gPSBkaXIKLSAgICAgICAgc2VsZi5fX2RpY3RfX1sncHdfc2hlbGwnXSA9IHNoZWxsCi0gICAgICAgIHNlbGYuX19kaWN0X19bJ19yZWNvcmQnXSA9IChzZWxmLnB3X25hbWUsIHNlbGYucHdfcGFzc3dkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wd191aWQsIHNlbGYucHdfZ2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wd19nZWNvcywgc2VsZi5wd19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB3X3NoZWxsKQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgIHJldHVybiA3Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlY29yZFtrZXldCi0KLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignYXR0cmlidXRlIHJlYWQtb25seTogJXMnICUgbmFtZSkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmLl9yZWNvcmQpCi0KLSAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHRoaXMgPSBzdHIoc2VsZi5fcmVjb3JkKQotICAgICAgICBpZiB0aGlzID09IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxpZiB0aGlzIDwgb3RoZXI6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLQotIyByZWFkIHRoZSB3aG9sZSBmaWxlLCBwYXJzaW5nIGVhY2ggZW50cnkgaW50byB0dXBsZSBmb3JtCi0jIHdpdGggZGljdGlvbmFyaWVzIHRvIHNwZWVkIHJlY2FsbCBieSBVSUQgb3IgcGFzc3dkIG5hbWUKLWRlZiBfX3JlYWRfcGFzc3dkX2ZpbGUoKToKLSAgICBpZiBwYXNzd2RfZmlsZToKLSAgICAgICAgcGFzc3dkID0gb3BlbihwYXNzd2RfZmlsZSwgJ3InKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEtleUVycm9yKCc+PiBubyBwYXNzd29yZCBkYXRhYmFzZSA8PCcpCi0gICAgdWlkeCA9IHt9Ci0gICAgbmFteCA9IHt9Ci0gICAgc2VwID0gTm9uZQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGVudHJ5ID0gcGFzc3dkLnJlYWRsaW5lKCkuc3RyaXAoKQotICAgICAgICBpZiBsZW4oZW50cnkpID4gNjoKLSAgICAgICAgICAgIGlmIHNlcCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlcCA9IF9fZ2V0X2ZpZWxkX3NlcChlbnRyeSkKLSAgICAgICAgICAgIGZpZWxkcyA9IGVudHJ5LnNwbGl0KHNlcCkKLSAgICAgICAgICAgIGZvciBpIGluICgyLCAzKToKLSAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBpbnQoZmllbGRzW2ldKQotICAgICAgICAgICAgZm9yIGkgaW4gKDUsIDYpOgotICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IF9fZmllbGRfc2VwW3NlcF0oZmllbGRzW2ldKQotICAgICAgICAgICAgcmVjb3JkID0gUGFzc3dkKCpmaWVsZHMpCi0gICAgICAgICAgICBpZiBmaWVsZHNbMl0gbm90IGluIHVpZHg6Ci0gICAgICAgICAgICAgICAgdWlkeFtmaWVsZHNbMl1dID0gcmVjb3JkCi0gICAgICAgICAgICBpZiBmaWVsZHNbMF0gbm90IGluIG5hbXg6Ci0gICAgICAgICAgICAgICAgbmFteFtmaWVsZHNbMF1dID0gcmVjb3JkCi0gICAgICAgIGVsaWYgbGVuKGVudHJ5KSA+IDA6Ci0gICAgICAgICAgICBwYXNzICAgICAgICAgICAgICAgICAgICAgICAgICMgc2tpcCBlbXB0eSBvciBtYWxmb3JtZWQgcmVjb3JkcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJlYWsKLSAgICBwYXNzd2QuY2xvc2UoKQotICAgIGlmIGxlbih1aWR4KSA9PSAwOgotICAgICAgICByYWlzZSBLZXlFcnJvcgotICAgIHJldHVybiAodWlkeCwgbmFteCkKLQotIyByZXR1cm4gdGhlIHBhc3N3ZCBkYXRhYmFzZSBlbnRyeSBieSBVSUQKLWRlZiBnZXRwd3VpZCh1aWQpOgotICAgIHUsIG4gPSBfX3JlYWRfcGFzc3dkX2ZpbGUoKQotICAgIHJldHVybiB1W3VpZF0KLQotIyByZXR1cm4gdGhlIHBhc3N3ZCBkYXRhYmFzZSBlbnRyeSBieSBwYXNzd2QgbmFtZQotZGVmIGdldHB3bmFtKG5hbWUpOgotICAgIHUsIG4gPSBfX3JlYWRfcGFzc3dkX2ZpbGUoKQotICAgIHJldHVybiBuW25hbWVdCi0KLSMgcmV0dXJuIGFsbCB0aGUgcGFzc3dkIGRhdGFiYXNlIGVudHJpZXMKLWRlZiBnZXRwd2FsbCgpOgotICAgIHUsIG4gPSBfX3JlYWRfcGFzc3dkX2ZpbGUoKQotICAgIHJldHVybiBuLnZhbHVlcygpCi0KLSMgdGVzdCBoYXJuZXNzCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGdldHB3YWxsKCkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LW9zMmVteC9yZWdlbiBiL0xpYi9wbGF0LW9zMmVteC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggM2VjZDJhOC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1vczJlbXgvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSMhIC9iaW4vc2gKLWV4cG9ydCBJTkNMVURFPSRDX0lOQ0xVREVfUEFUSAotc2V0IC12Ci1weXRob24uZXhlIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAkQ19JTkNMVURFX1BBVEgvZmNudGwuaAotcHl0aG9uLmV4ZSAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgJENfSU5DTFVERV9QQVRIL3N5cy9zb2NrZXQuaAotcHl0aG9uLmV4ZSAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAkQ19JTkNMVURFX1BBVEgvbmV0aW5ldC9pbi5oCi0jcHl0aG9uLmV4ZSAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgJENfSU5DTFVERV9QQVRIL3Rlcm1pb3MuaApkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDJiOGEyNGEuLjgxZTMxNDcgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTEyMiw3ICsxMjIsNyBAQAogZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICMgb3MuZGV2bnVsbCB3YXMgYWRkZWQgaW4gUHl0aG9uIDIuNCwgc28gZW11bGF0ZSBpdCBmb3IgZWFybGllcgogICAgICMgUHl0aG9uIHZlcnNpb25zCi0gICAgaWYgc3lzLnBsYXRmb3JtIGluICgnZG9zJywnd2luMzInLCd3aW4xNicsJ29zMicpOgorICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2RvcycsJ3dpbjMyJywnd2luMTYnKToKICAgICAgICAgIyBVc2UgdGhlIG9sZCBDUC9NIE5VTCBhcyBkZXZpY2UgbmFtZQogICAgICAgICBERVZfTlVMTCA9ICdOVUwnCiAgICAgZWxzZToKQEAgLTMxNiw3ICszMTYsNyBAQAogICAgICIiIgogICAgIHRyeToKICAgICAgICAgZXRjID0gb3MubGlzdGRpcignL2V0YycpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAjIFByb2JhYmx5IG5vdCBhIFVuaXggc3lzdGVtCiAgICAgICAgIHJldHVybiBkaXN0bmFtZSx2ZXJzaW9uLGlkCiAgICAgZXRjLnNvcnQoKQpAQCAtNDAzLDEzICs0MDMsMTMgQEAKIAogZGVmIF9zeXNjbWRfdmVyKHN5c3RlbT0nJywgcmVsZWFzZT0nJywgdmVyc2lvbj0nJywKIAotICAgICAgICAgICAgICAgc3VwcG9ydGVkX3BsYXRmb3Jtcz0oJ3dpbjMyJywnd2luMTYnLCdkb3MnLCdvczInKSk6CisgICAgICAgICAgICAgICBzdXBwb3J0ZWRfcGxhdGZvcm1zPSgnd2luMzInLCd3aW4xNicsJ2RvcycpKToKIAogICAgICIiIiBUcmllcyB0byBmaWd1cmUgb3V0IHRoZSBPUyB2ZXJzaW9uIHVzZWQgYW5kIHJldHVybnMKICAgICAgICAgYSB0dXBsZSAoc3lzdGVtLHJlbGVhc2UsdmVyc2lvbikuCiAKICAgICAgICAgSXQgdXNlcyB0aGUgInZlciIgc2hlbGwgY29tbWFuZCBmb3IgdGhpcyB3aGljaCBpcyBrbm93bgotICAgICAgICB0byBleGlzdHMgb24gV2luZG93cywgRE9TIGFuZCBPUy8yLiBYWFggT3RoZXJzIHRvbyA/CisgICAgICAgIHRvIGV4aXN0cyBvbiBXaW5kb3dzLCBET1MuIFhYWCBPdGhlcnMgdG9vID8KIAogICAgICAgICBJbiBjYXNlIHRoaXMgZmFpbHMsIHRoZSBnaXZlbiBwYXJhbWV0ZXJzIGFyZSB1c2VkIGFzCiAgICAgICAgIGRlZmF1bHRzLgpAQCAtNDI0LDEzICs0MjQsMTAgQEAKICAgICAgICAgICAgIHBpcGUgPSBwb3BlbihjbWQpCiAgICAgICAgICAgICBpbmZvID0gcGlwZS5yZWFkKCkKICAgICAgICAgICAgIGlmIHBpcGUuY2xvc2UoKToKLSAgICAgICAgICAgICAgICByYWlzZSBvcy5lcnJvcignY29tbWFuZCBmYWlsZWQnKQorICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2NvbW1hbmQgZmFpbGVkJykKICAgICAgICAgICAgICMgWFhYIEhvdyBjYW4gSSBzdXBwcmVzcyBzaGVsbCBlcnJvcnMgZnJvbSBiZWluZyB3cml0dGVuCiAgICAgICAgICAgICAjICAgICB0byBzdGRlcnIgPwotICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgd2h5OgotICAgICAgICAgICAgI3ByaW50ICdDb21tYW5kICVzIGZhaWxlZDogJXMnICUgKGNtZCx3aHkpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyB3aHk6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgICNwcmludCAnQ29tbWFuZCAlcyBmYWlsZWQ6ICVzJyAlIChjbWQsd2h5KQogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZWxzZToKQEAgLTU4MSw3ICs1NzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIERpc2NhcmQgYW55IHR5cGUgdGhhdCBpc24ndCBSRUdfU1oKICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZSA9PSBSRUdfU1ogYW5kIG5hbWUuZmluZCgiU2VydmVyIikgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0X3R5cGUgPSBWRVJfTlRfU0VSVkVSCi0gICAgICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgIyBVc2UgZGVmYXVsdCBvZiBWRVJfTlRfV09SS1NUQVRJT04KICAgICAgICAgICAgICAgICAgICAgcGFzcwogCkBAIC02MzcsNjIgKzYzNCw2IEBACiAgICAgUmVnQ2xvc2VLZXkoa2V5Q3VyVmVyKQogICAgIHJldHVybiByZWxlYXNlLHZlcnNpb24sY3NkLHB0eXBlCiAKLWRlZiBfbWFjX3Zlcl9sb29rdXAoc2VsZWN0b3JzLGRlZmF1bHQ9Tm9uZSk6Ci0KLSAgICBmcm9tIF9nZXN0YWx0IGltcG9ydCBnZXN0YWx0Ci0gICAgbCA9IFtdCi0gICAgYXBwZW5kID0gbC5hcHBlbmQKLSAgICBmb3Igc2VsZWN0b3IgaW4gc2VsZWN0b3JzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhcHBlbmQoZ2VzdGFsdChzZWxlY3RvcikpCi0gICAgICAgIGV4Y2VwdCAoUnVudGltZUVycm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgIGFwcGVuZChkZWZhdWx0KQotICAgIHJldHVybiBsCi0KLWRlZiBfYmNkMnN0cihiY2QpOgotCi0gICAgcmV0dXJuIGhleChiY2QpWzI6XQotCi1kZWYgX21hY192ZXJfZ2VzdGFsdCgpOgotICAgICIiIgotICAgICAgICBUaGFua3MgdG8gTWFyayBSLiBMZXZpbnNvbiBmb3IgbWFpbGluZyBkb2N1bWVudGF0aW9uIGxpbmtzIGFuZAotICAgICAgICBjb2RlIGV4YW1wbGVzIGZvciB0aGlzIGZ1bmN0aW9uLiBEb2N1bWVudGF0aW9uIGZvciB0aGUKLSAgICAgICAgZ2VzdGFsdCgpIEFQSSBpcyBhdmFpbGFibGUgb25saW5lIGF0OgotCi0gICAgICAgICAgIGh0dHA6Ly93d3cucmdhcm9zLm5sL2dlc3RhbHQvCi0gICAgIiIiCi0gICAgIyBDaGVjayB3aGV0aGVyIHRoZSB2ZXJzaW9uIGluZm8gbW9kdWxlIGlzIGF2YWlsYWJsZQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IF9nZXN0YWx0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICByZXR1cm4gTm9uZQotICAgICMgR2V0IHRoZSBpbmZvcwotICAgIHN5c3YsIHN5c2EgPSBfbWFjX3Zlcl9sb29rdXAoKCdzeXN2Jywnc3lzYScpKQotICAgICMgRGVjb2RlIHRoZSBpbmZvcwotICAgIGlmIHN5c3Y6Ci0gICAgICAgIG1ham9yID0gKHN5c3YgJiAweEZGMDApID4+IDgKLSAgICAgICAgbWlub3IgPSAoc3lzdiAmIDB4MDBGMCkgPj4gNAotICAgICAgICBwYXRjaCA9IChzeXN2ICYgMHgwMDBGKQotCi0gICAgICAgIGlmIChtYWpvciwgbWlub3IpID49ICgxMCwgNCk6Ci0gICAgICAgICAgICAjIHRoZSAnc3lzdicgZ2VzdGFsZCBjYW5ub3QgcmV0dXJuIHBhdGNobGV2ZWxzCi0gICAgICAgICAgICAjIGhpZ2hlciB0aGFuIDkuIEFwcGxlIGludHJvZHVjZWQgMyBuZXcKLSAgICAgICAgICAgICMgZ2VzdGFsdCBjb2RlcyBpbiAxMC40IHRvIGRlYWwgd2l0aCB0aGlzCi0gICAgICAgICAgICAjIGlzc3VlIChuZWVkZWQgYmVjYXVzZSBwYXRjaCBsZXZlbHMgY2FuCi0gICAgICAgICAgICAjIHJ1biBoaWdoZXIgdGhhbiA5LCBzdWNoIGFzIDEwLjQuMTEpCi0gICAgICAgICAgICBtYWpvcixtaW5vcixwYXRjaCA9IF9tYWNfdmVyX2xvb2t1cCgoJ3N5czEnLCdzeXMyJywnc3lzMycpKQotICAgICAgICAgICAgcmVsZWFzZSA9ICclaS4laS4laScgJShtYWpvciwgbWlub3IsIHBhdGNoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVsZWFzZSA9ICclcy4laS4laScgJSAoX2JjZDJzdHIobWFqb3IpLG1pbm9yLHBhdGNoKQotCi0gICAgaWYgc3lzYToKLSAgICAgICAgbWFjaGluZSA9IHsweDE6ICc2OGsnLAotICAgICAgICAgICAgICAgICAgIDB4MjogJ1Bvd2VyUEMnLAotICAgICAgICAgICAgICAgICAgIDB4YTogJ2kzODYnfS5nZXQoc3lzYSwnJykKLQotICAgIHZlcnNpb25pbmZvPSgnJywgJycsICcnKQotICAgIHJldHVybiByZWxlYXNlLHZlcnNpb25pbmZvLG1hY2hpbmUKLQogZGVmIF9tYWNfdmVyX3htbCgpOgogICAgIGZuID0gJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOgpAQCAtNzA4LDcgKzY0OSw3IEBACiAgICAgdmVyc2lvbmluZm89KCcnLCAnJywgJycpCiAgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZQogICAgIGlmIG1hY2hpbmUgaW4gKCdwcGMnLCAnUG93ZXIgTWFjaW50b3NoJyk6Ci0gICAgICAgICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZ2VzdGFsdCBiYXNlZCBjb2RlCisgICAgICAgICMgQ2Fubm9uaWNhbCBuYW1lCiAgICAgICAgIG1hY2hpbmUgPSAnUG93ZXJQQycKIAogICAgIHJldHVybiByZWxlYXNlLHZlcnNpb25pbmZvLG1hY2hpbmUKQEAgLTczMCwxMiArNjcxLDYgQEAKICAgICBpZiBpbmZvIGlzIG5vdCBOb25lOgogICAgICAgICByZXR1cm4gaW5mbwogCi0gICAgIyBJZiB0aGF0IGRvZXNuJ3Qgd29yayBmb3Igc29tZSByZWFzb24gZmFsbCBiYWNrIHRvIHJlYWRpbmcgdGhlCi0gICAgIyBpbmZvcm1hdGlvbiB1c2luZyBnZXN0YWx0IGNhbGxzLgotICAgIGluZm8gPSBfbWFjX3Zlcl9nZXN0YWx0KCkKLSAgICBpZiBpbmZvIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gaW5mbwotCiAgICAgIyBJZiB0aGF0IGFsc28gZG9lc24ndCB3b3JrIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMKICAgICByZXR1cm4gcmVsZWFzZSx2ZXJzaW9uaW5mbyxtYWNoaW5lCiAKQEAgLTg4Miw3ICs4MTcsNyBAQAogICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHNvY2tldC5nZXRob3N0bmFtZSgpCi0gICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgIyBTdGlsbCBub3Qgd29ya2luZy4uLgogICAgICAgICByZXR1cm4gZGVmYXVsdAogCkBAIC05MDEsMTIgKzgzNiwxMiBAQAogCiAgICAgIiIiIEludGVyZmFjZSB0byB0aGUgc3lzdGVtJ3MgdW5hbWUgY29tbWFuZC4KICAgICAiIiIKLSAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdkb3MnLCd3aW4zMicsJ3dpbjE2Jywnb3MyJyk6CisgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnZG9zJywnd2luMzInLCd3aW4xNicpOgogICAgICAgICAjIFhYWCBPdGhlcnMgdG9vID8KICAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcy5wb3BlbigndW5hbWUgJXMgMj4gJXMnICUgKG9wdGlvbiwgREVWX05VTEwpKQotICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3Isb3MuZXJyb3IpOgorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgIG91dHB1dCA9IGYucmVhZCgpLnN0cmlwKCkKICAgICByYyA9IGYuY2xvc2UoKQpAQCAtOTI0LDcgKzg1OSw3IEBACiAgICAgICAgIGRlZmF1bHQgaW4gY2FzZSB0aGUgY29tbWFuZCBzaG91bGQgZmFpbC4KIAogICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2RvcycsJ3dpbjMyJywnd2luMTYnLCdvczInKToKKyAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdkb3MnLCd3aW4zMicsJ3dpbjE2Jyk6CiAgICAgICAgICMgWFhYIE90aGVycyB0b28gPwogICAgICAgICByZXR1cm4gZGVmYXVsdAogICAgIHRhcmdldCA9IF9mb2xsb3dfc3ltbGlua3ModGFyZ2V0KQpAQCAtOTMyLDcgKzg2Nyw3IEBACiAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZmlsZScsIHRhcmdldF0sCiAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvcixvcy5lcnJvcik6CisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CiAgICAgICAgIHJldHVybiBkZWZhdWx0CiAgICAgb3V0cHV0ID0gcHJvYy5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgnbGF0aW4tMScpCiAgICAgcmMgPSBwcm9jLndhaXQoKQpkaWZmIC0tZ2l0IGEvTGliL3BvcGxpYi5weSBiL0xpYi9wb3BsaWIucHkKaW5kZXggZDQyZDlkZC4uMGYxMmFlMiAxMDA2NDQKLS0tIGEvTGliL3BvcGxpYi5weQorKysgYi9MaWIvcG9wbGliLnB5CkBAIC0xMyw3ICsxMywxNSBAQAogCiAjIEltcG9ydHMKIAotaW1wb3J0IHJlLCBzb2NrZXQKK2ltcG9ydCBlcnJubworaW1wb3J0IHJlCitpbXBvcnQgc29ja2V0CisKK3RyeToKKyAgICBpbXBvcnQgc3NsCisgICAgSEFWRV9TU0wgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgSEFWRV9TU0wgPSBGYWxzZQogCiBfX2FsbF9fID0gWyJQT1AzIiwiZXJyb3JfcHJvdG8iXQogCkBAIC01NSw2ICs2Myw4IEBACiAgICAgICAgICAgICBBUE9QIG5hbWUgZGlnZXN0ICAgICAgICBhcG9wKG5hbWUsIGRpZ2VzdCkKICAgICAgICAgICAgIFRPUCBtc2cgbiAgICAgICAgICAgICAgIHRvcChtc2csIG4pCiAgICAgICAgICAgICBVSURMIFttc2ddICAgICAgICAgICAgICB1aWRsKG1zZyA9IE5vbmUpCisgICAgICAgICAgICBDQVBBICAgICAgICAgICAgICAgICAgICBjYXBhKCkKKyAgICAgICAgICAgIFNUTFMgICAgICAgICAgICAgICAgICAgIHN0bHMoKQogCiAgICAgUmFpc2VzIG9uZSBleGNlcHRpb246ICdlcnJvcl9wcm90bycuCiAKQEAgLTgxLDYgKzkxLDcgQEAKICAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fdGxzX2VzdGFibGlzaGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fY3JlYXRlX3NvY2tldCh0aW1lb3V0KQogICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoJ3JiJykKICAgICAgICAgc2VsZi5fZGVidWdnaW5nID0gMApAQCAtMjU5LDcgKzI3MCwxNCBAQAogICAgICAgICBpZiBzZWxmLmZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICBpZiBzZWxmLnNvY2sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuc29jay5zaHV0ZG93bihzb2NrZXQuU0hVVF9SRFdSKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIFRoZSBzZXJ2ZXIgbWlnaHQgYWxyZWFkeSBoYXZlIGNsb3NlZCB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCiAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKIAogICAgICNfX2RlbF9fID0gcXVpdApAQCAtMzE1LDIxICszMzMsNzEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zaG9ydGNtZCgnVUlETCAlcycgJSB3aGljaCkKICAgICAgICAgcmV0dXJuIHNlbGYuX2xvbmdjbWQoJ1VJREwnKQogCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6CisKKyAgICBkZWYgY2FwYShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHNlcnZlciBjYXBhYmlsaXRpZXMgKFJGQyAyNDQ5KSBhcyBhIGRpY3Rpb25hcnkKKyAgICAgICAgPj4+IGM9cG9wbGliLlBPUDMoJ2xvY2FsaG9zdCcpCisgICAgICAgID4+PiBjLmNhcGEoKQorICAgICAgICB7J0lNUExFTUVOVEFUSU9OJzogWydDeXJ1cycsICdQT1AzJywgJ3NlcnZlcicsICd2Mi4yLjEyJ10sCisgICAgICAgICAnVE9QJzogW10sICdMT0dJTi1ERUxBWSc6IFsnMCddLCAnQVVUSC1SRVNQLUNPREUnOiBbXSwKKyAgICAgICAgICdFWFBJUkUnOiBbJ05FVkVSJ10sICdVU0VSJzogW10sICdTVExTJzogW10sICdQSVBFTElOSU5HJzogW10sCisgICAgICAgICAnVUlETCc6IFtdLCAnUkVTUC1DT0RFUyc6IFtdfQorICAgICAgICA+Pj4KKworICAgICAgICBSZWFsbHksIGFjY29yZGluZyB0byBSRkMgMjQ0OSwgdGhlIGN5cnVzIGZvbGtzIHNob3VsZCBhdm9pZAorICAgICAgICBoYXZpbmcgdGhlIGltcGxlbWVudGF0aW9uIHNwbGl0dGVkIGludG8gbXVsdGlwbGUgYXJndW1lbnRzLi4uCisgICAgICAgICIiIgorICAgICAgICBkZWYgX3BhcnNlY2FwKGxpbmUpOgorICAgICAgICAgICAgbHN0ID0gbGluZS5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoKQorICAgICAgICAgICAgcmV0dXJuIGxzdFswXSwgbHN0WzE6XQorCisgICAgICAgIGNhcHMgPSB7fQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwID0gc2VsZi5fbG9uZ2NtZCgnQ0FQQScpCisgICAgICAgICAgICByYXdjYXBzID0gcmVzcFsxXQorICAgICAgICAgICAgZm9yIGNhcGxpbmUgaW4gcmF3Y2FwczoKKyAgICAgICAgICAgICAgICBjYXBubSwgY2FwYXJncyA9IF9wYXJzZWNhcChjYXBsaW5lKQorICAgICAgICAgICAgICAgIGNhcHNbY2Fwbm1dID0gY2FwYXJncworICAgICAgICBleGNlcHQgZXJyb3JfcHJvdG8gYXMgX2VycjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKCctRVJSIENBUEEgbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXInKQorICAgICAgICByZXR1cm4gY2FwcworCisKKyAgICBkZWYgc3RscyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTdGFydCBhIFRMUyBzZXNzaW9uIG9uIHRoZSBhY3RpdmUgY29ubmVjdGlvbiBhcyBzcGVjaWZpZWQgaW4gUkZDIDI1OTUuCisKKyAgICAgICAgICAgICAgICBjb250ZXh0IC0gYSBzc2wuU1NMQ29udGV4dAorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IEhBVkVfU1NMOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JfcHJvdG8oJy1FUlIgVExTIHN1cHBvcnQgbWlzc2luZycpCisgICAgICAgIGlmIHNlbGYuX3Rsc19lc3RhYmxpc2hlZDoKKyAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKCctRVJSIFRMUyBzZXNzaW9uIGFscmVhZHkgZXN0YWJsaXNoZWQnKQorICAgICAgICBjYXBzID0gc2VsZi5jYXBhKCkKKyAgICAgICAgaWYgbm90ICdTVExTJyBpbiBjYXBzOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JfcHJvdG8oJy1FUlIgU1RMUyBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlcicpCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MgorICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1NUTFMnKQorICAgICAgICBzZWxmLnNvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29jaykKKyAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrLm1ha2VmaWxlKCdyYicpCisgICAgICAgIHNlbGYuX3Rsc19lc3RhYmxpc2hlZCA9IFRydWUKKyAgICAgICAgcmV0dXJuIHJlc3AKKworCitpZiBIQVZFX1NTTDoKIAogICAgIGNsYXNzIFBPUDNfU1NMKFBPUDMpOgogICAgICAgICAiIiJQT1AzIGNsaWVudCBjbGFzcyBvdmVyIFNTTCBjb25uZWN0aW9uCiAKLSAgICAgICAgSW5zdGFudGlhdGUgd2l0aDogUE9QM19TU0woaG9zdG5hbWUsIHBvcnQ9OTk1LCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUpCisgICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IFBPUDNfU1NMKGhvc3RuYW1lLCBwb3J0PTk5NSwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PU5vbmUpCiAKICAgICAgICAgICAgICAgIGhvc3RuYW1lIC0gdGhlIGhvc3RuYW1lIG9mIHRoZSBwb3AzIG92ZXIgc3NsIHNlcnZlcgogICAgICAgICAgICAgICAgcG9ydCAtIHBvcnQgbnVtYmVyCiAgICAgICAgICAgICAgICBrZXlmaWxlIC0gUEVNIGZvcm1hdHRlZCBmaWxlIHRoYXQgY291bnRhaW5zIHlvdXIgcHJpdmF0ZSBrZXkKICAgICAgICAgICAgICAgIGNlcnRmaWxlIC0gUEVNIGZvcm1hdHRlZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlCisgICAgICAgICAgICAgICBjb250ZXh0IC0gYSBzc2wuU1NMQ29udGV4dAogCiAgICAgICAgIFNlZSB0aGUgbWV0aG9kcyBvZiB0aGUgcGFyZW50IGNsYXNzIFBPUDMgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbi4KICAgICAgICAgIiIiCkBAIC0zNTUsNiArNDIzLDEzIEBACiAgICAgICAgICAgICAgICAgc29jayA9IHNzbC53cmFwX3NvY2tldChzb2NrLCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAgICAgICAgICAgICByZXR1cm4gc29jawogCisgICAgICAgIGRlZiBzdGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgICIiIlRoZSBtZXRob2QgdW5jb25kaXRpb25hbGx5IHJhaXNlcyBhbiBleGNlcHRpb24gc2luY2UgdGhlCisgICAgICAgICAgICBTVExTIGNvbW1hbmQgZG9lc24ndCBtYWtlIGFueSBzZW5zZSBvbiBhbiBhbHJlYWR5IGVzdGFibGlzaGVkCisgICAgICAgICAgICBTU0wvVExTIHNlc3Npb24uCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHJhaXNlIGVycm9yX3Byb3RvKCctRVJSIFRMUyBzZXNzaW9uIGFscmVhZHkgZXN0YWJsaXNoZWQnKQorCiAgICAgX19hbGxfXy5hcHBlbmQoIlBPUDNfU1NMIikKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGIxZTFhOTIuLjQ5MmM0MTUgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtMTYyLDcgKzE2Miw3IEBACiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmsiIiIKICAgICB0cnk6CiAgICAgICAgIHN0ID0gb3MubHN0YXQocGF0aCkKLSAgICBleGNlcHQgKG9zLmVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgZXhjZXB0IChPU0Vycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBzdGF0LlNfSVNMTksoc3Quc3RfbW9kZSkKIApAQCAtMTcyLDU2ICsxNzIsMzUgQEAKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGV4aXN0cy4gIFJldHVybnMgVHJ1ZSBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzIiIiCiAgICAgdHJ5OgogICAgICAgICBvcy5sc3RhdChwYXRoKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgcmV0dXJuIFRydWUKIAogCi0jIEFyZSB0d28gZmlsZW5hbWVzIHJlYWxseSBwb2ludGluZyB0byB0aGUgc2FtZSBmaWxlPwotCi1kZWYgc2FtZWZpbGUoZjEsIGYyKToKLSAgICAiIiJUZXN0IHdoZXRoZXIgdHdvIHBhdGhuYW1lcyByZWZlcmVuY2UgdGhlIHNhbWUgYWN0dWFsIGZpbGUiIiIKLSAgICBzMSA9IG9zLnN0YXQoZjEpCi0gICAgczIgPSBvcy5zdGF0KGYyKQotICAgIHJldHVybiBzYW1lc3RhdChzMSwgczIpCi0KLQotIyBBcmUgdHdvIG9wZW4gZmlsZXMgcmVhbGx5IHJlZmVyZW5jaW5nIHRoZSBzYW1lIGZpbGU/Ci0jIChOb3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yISkKLQotZGVmIHNhbWVvcGVuZmlsZShmcDEsIGZwMik6Ci0gICAgIiIiVGVzdCB3aGV0aGVyIHR3byBvcGVuIGZpbGUgb2JqZWN0cyByZWZlcmVuY2UgdGhlIHNhbWUgZmlsZSIiIgotICAgIHMxID0gb3MuZnN0YXQoZnAxKQotICAgIHMyID0gb3MuZnN0YXQoZnAyKQotICAgIHJldHVybiBzYW1lc3RhdChzMSwgczIpCi0KLQotIyBBcmUgdHdvIHN0YXQgYnVmZmVycyAob2J0YWluZWQgZnJvbSBzdGF0LCBmc3RhdCBvciBsc3RhdCkKLSMgZGVzY3JpYmluZyB0aGUgc2FtZSBmaWxlPwotCi1kZWYgc2FtZXN0YXQoczEsIHMyKToKLSAgICAiIiJUZXN0IHdoZXRoZXIgdHdvIHN0YXQgYnVmZmVycyByZWZlcmVuY2UgdGhlIHNhbWUgZmlsZSIiIgotICAgIHJldHVybiBzMS5zdF9pbm8gPT0gczIuc3RfaW5vIGFuZCBcCi0gICAgICAgICAgIHMxLnN0X2RldiA9PSBzMi5zdF9kZXYKLQotCiAjIElzIGEgcGF0aCBhIG1vdW50IHBvaW50PwogIyAoRG9lcyB0aGlzIHdvcmsgZm9yIGFsbCBVTklYZXM/ICBJcyBpdCBldmVuIGd1YXJhbnRlZWQgdG8gd29yayBieSBQb3NpeD8pCiAKIGRlZiBpc21vdW50KHBhdGgpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYSBtb3VudCBwb2ludCIiIgotICAgIGlmIGlzbGluayhwYXRoKToKLSAgICAgICAgIyBBIHN5bWxpbmsgY2FuIG5ldmVyIGJlIGEgbW91bnQgcG9pbnQKLSAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgdHJ5OgogICAgICAgICBzMSA9IG9zLmxzdGF0KHBhdGgpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICAgICAgcGFyZW50ID0gam9pbihwYXRoLCBiJy4uJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhcmVudCA9IGpvaW4ocGF0aCwgJy4uJykKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyBJdCBkb2Vzbid0IGV4aXN0IC0tIHNvIG5vdCBhIG1vdW50IHBvaW50LiA6LSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgIyBBIHN5bWxpbmsgY2FuIG5ldmVyIGJlIGEgbW91bnQgcG9pbnQKKyAgICAgICAgaWYgc3RhdC5TX0lTTE5LKHMxLnN0X21vZGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgcGFyZW50ID0gam9pbihwYXRoLCBiJy4uJykKKyAgICBlbHNlOgorICAgICAgICBwYXJlbnQgPSBqb2luKHBhdGgsICcuLicpCisgICAgdHJ5OgogICAgICAgICBzMiA9IG9zLmxzdGF0KHBhcmVudCkKLSAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZSAjIEl0IGRvZXNuJ3QgZXhpc3QgLS0gc28gbm90IGEgbW91bnQgcG9pbnQgOi0pCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGV2MSA9IHMxLnN0X2RldgogICAgIGRldjIgPSBzMi5zdF9kZXYKICAgICBpZiBkZXYxICE9IGRldjI6CmRpZmYgLS1naXQgYS9MaWIvcHByaW50LnB5IGIvTGliL3BwcmludC5weQppbmRleCBhZTk2ZGRlLi4xZjk4ZjVjIDEwMDY0NAotLS0gYS9MaWIvcHByaW50LnB5CisrKyBiL0xpYi9wcHJpbnQucHkKQEAgLTM0LDYgKzM0LDcgQEAKIAogIiIiCiAKK2ltcG9ydCByZQogaW1wb3J0IHN5cyBhcyBfc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCBhcyBfT3JkZXJlZERpY3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPIGFzIF9TdHJpbmdJTwpAQCAtMTU4LDEzICsxNTksMTAgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICByZXAgPSBzZWxmLl9yZXByKG9iamVjdCwgY29udGV4dCwgbGV2ZWwgLSAxKQogICAgICAgICB0eXAgPSBfdHlwZShvYmplY3QpCi0gICAgICAgIHNlcExpbmVzID0gX2xlbihyZXApID4gKHNlbGYuX3dpZHRoIC0gMSAtIGluZGVudCAtIGFsbG93YW5jZSkKKyAgICAgICAgbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSAxIC0gaW5kZW50IC0gYWxsb3dhbmNlCisgICAgICAgIHNlcExpbmVzID0gX2xlbihyZXApID4gbWF4X3dpZHRoCiAgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCiAKLSAgICAgICAgaWYgc2VsZi5fZGVwdGggYW5kIGxldmVsID4gc2VsZi5fZGVwdGg6Ci0gICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiBzZXBMaW5lczoKICAgICAgICAgICAgIHIgPSBnZXRhdHRyKHR5cCwgIl9fcmVwcl9fIiwgTm9uZSkKICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBkaWN0KToKQEAgLTI0Miw2ICsyNDAsMzcgQEAKICAgICAgICAgICAgICAgICB3cml0ZShlbmRjaGFyKQogICAgICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgc3RyKSBhbmQgbGVuKG9iamVjdCkgPiAwIGFuZCByIGlzIHN0ci5fX3JlcHJfXzoKKyAgICAgICAgICAgICAgICBkZWYgX3N0cl9wYXJ0cyhzKToKKyAgICAgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAgIFJldHVybiBhIGxpc3Qgb2Ygc3RyaW5nIGxpdGVyYWxzIGNvbXByaXNpbmcgdGhlIHJlcHIoKQorICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAgIGxpbmVzID0gcy5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICAgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXAgPSByZXByKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBfbGVuKHJlcCkgPD0gbWF4X3dpZHRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHJlcAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEEgbGlzdCBvZiBhbHRlcm5hdGluZyAobm9uLXNwYWNlLCBzcGFjZSkgc3RyaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gcmUuc3BsaXQocicoXHMrKScsIGxpbmUpICsgWycnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihwYXJ0cyksIDIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gcGFydHNbaV0gKyBwYXJ0c1tpKzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGN1cnJlbnQgKyBwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXByKGNhbmRpZGF0ZSkpID4gbWF4X3dpZHRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCByZXByKGN1cnJlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gcGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHJlcHIoY3VycmVudCkKKyAgICAgICAgICAgICAgICBmb3IgaSwgcmVwIGluIGVudW1lcmF0ZShfc3RyX3BhcnRzKG9iamVjdCkpOgorICAgICAgICAgICAgICAgICAgICBpZiBpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCdcbicgKyAnICcqaW5kZW50KQorICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHdyaXRlKHJlcCkKIAogICAgIGRlZiBfcmVwcihzZWxmLCBvYmplY3QsIGNvbnRleHQsIGxldmVsKToKZGlmZiAtLWdpdCBhL0xpYi9wcm9maWxlLnB5IGIvTGliL3Byb2ZpbGUucHkKaW5kZXggNzQzZTc3ZC4uNWQwZTk2OCAxMDA3NTUKLS0tIGEvTGliL3Byb2ZpbGUucHkKKysrIGIvTGliL3Byb2ZpbGUucHkKQEAgLTQwLDYgKzQwLDQwIEBACiAjICAgICAgIHJldHVybiBpX2NvdW50CiAjaXRpbWVzID0gaW50ZWdlcl90aW1lciAjIHJlcGxhY2Ugd2l0aCBDIGNvZGVkIHRpbWVyIHJldHVybmluZyBpbnRlZ2VycwogCitjbGFzcyBfVXRpbHM6CisgICAgIiIiU3VwcG9ydCBjbGFzcyBmb3IgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXJlIHNoYXJlZCBieQorICAgIHByb2ZpbGUucHkgYW5kIGNQcm9maWxlLnB5IG1vZHVsZXMuCisgICAgTm90IHN1cHBvc2VkIHRvIGJlIHVzZWQgZGlyZWN0bHkuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvZmlsZXIpOgorICAgICAgICBzZWxmLnByb2ZpbGVyID0gcHJvZmlsZXIKKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGVtZW50LCBmaWxlbmFtZSwgc29ydCk6CisgICAgICAgIHByb2YgPSBzZWxmLnByb2ZpbGVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJvZi5ydW4oc3RhdGVtZW50KQorICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX3Nob3cocHJvZiwgZmlsZW5hbWUsIHNvcnQpCisKKyAgICBkZWYgcnVuY3R4KHNlbGYsIHN0YXRlbWVudCwgZ2xvYmFscywgbG9jYWxzLCBmaWxlbmFtZSwgc29ydCk6CisgICAgICAgIHByb2YgPSBzZWxmLnByb2ZpbGVyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJvZi5ydW5jdHgoc3RhdGVtZW50LCBnbG9iYWxzLCBsb2NhbHMpCisgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAgICAgICAgICAgcGFzcworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fc2hvdyhwcm9mLCBmaWxlbmFtZSwgc29ydCkKKworICAgIGRlZiBfc2hvdyhzZWxmLCBwcm9mLCBmaWxlbmFtZSwgc29ydCk6CisgICAgICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJvZi5kdW1wX3N0YXRzKGZpbGVuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJvZi5wcmludF9zdGF0cyhzb3J0KQorCisKICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIyBUaGUgZm9sbG93aW5nIGFyZSB0aGUgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgZm9yIHRoZSBwcm9maWxlciBjbGFzcwogIyBOb3RlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgUHJvZmlsZSgpIGlzICpub3QqIG5lZWRlZCB0byBjYWxsIHRoZW0uCkBAIC01NiwxNSArOTAsNyBAQAogICAgIHN0YW5kYXJkIG5hbWUgc3RyaW5nIChmaWxlL2xpbmUvZnVuY3Rpb24tbmFtZSkgdGhhdCBpcyBwcmVzZW50ZWQgaW4KICAgICBlYWNoIGxpbmUuCiAgICAgIiIiCi0gICAgcHJvZiA9IFByb2ZpbGUoKQotICAgIHRyeToKLSAgICAgICAgcHJvZiA9IHByb2YucnVuKHN0YXRlbWVudCkKLSAgICBleGNlcHQgU3lzdGVtRXhpdDoKLSAgICAgICAgcGFzcwotICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgotICAgICAgICBwcm9mLmR1bXBfc3RhdHMoZmlsZW5hbWUpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHByb2YucHJpbnRfc3RhdHMoc29ydCkKKyAgICByZXR1cm4gX1V0aWxzKFByb2ZpbGUpLnJ1bihzdGF0ZW1lbnQsIGZpbGVuYW1lLCBzb3J0KQogCiBkZWYgcnVuY3R4KHN0YXRlbWVudCwgZ2xvYmFscywgbG9jYWxzLCBmaWxlbmFtZT1Ob25lLCBzb3J0PS0xKToKICAgICAiIiJSdW4gc3RhdGVtZW50IHVuZGVyIHByb2ZpbGVyLCBzdXBwbHlpbmcgeW91ciBvd24gZ2xvYmFscyBhbmQgbG9jYWxzLApAQCAtNzIsMTYgKzk4LDggQEAKIAogICAgIHN0YXRlbWVudCBhbmQgZmlsZW5hbWUgaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgcHJvZmlsZS5ydW4KICAgICAiIiIKLSAgICBwcm9mID0gUHJvZmlsZSgpCi0gICAgdHJ5OgotICAgICAgICBwcm9mID0gcHJvZi5ydW5jdHgoc3RhdGVtZW50LCBnbG9iYWxzLCBsb2NhbHMpCi0gICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgIHBhc3MKKyAgICByZXR1cm4gX1V0aWxzKFByb2ZpbGUpLnJ1bmN0eChzdGF0ZW1lbnQsIGdsb2JhbHMsIGxvY2FscywgZmlsZW5hbWUsIHNvcnQpCiAKLSAgICBpZiBmaWxlbmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgcHJvZi5kdW1wX3N0YXRzKGZpbGVuYW1lKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBwcm9mLnByaW50X3N0YXRzKHNvcnQpCiAKIGNsYXNzIFByb2ZpbGU6CiAgICAgIiIiUHJvZmlsZXIgY2xhc3MuCkBAIC0zNzMsMTAgKzM5MSw5IEBACiAgICAgICAgICAgICAgICAgICBwcmludF9zdGF0cygpCiAKICAgICBkZWYgZHVtcF9zdGF0cyhzZWxmLCBmaWxlKToKLSAgICAgICAgZiA9IG9wZW4oZmlsZSwgJ3diJykKLSAgICAgICAgc2VsZi5jcmVhdGVfc3RhdHMoKQotICAgICAgICBtYXJzaGFsLmR1bXAoc2VsZi5zdGF0cywgZikKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihmaWxlLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc3RhdHMoKQorICAgICAgICAgICAgbWFyc2hhbC5kdW1wKHNlbGYuc3RhdHMsIGYpCiAKICAgICBkZWYgY3JlYXRlX3N0YXRzKHNlbGYpOgogICAgICAgICBzZWxmLnNpbXVsYXRlX2NtZF9jb21wbGV0ZSgpCmRpZmYgLS1naXQgYS9MaWIvcHN0YXRzLnB5IGIvTGliL3BzdGF0cy5weQppbmRleCA2YTc3NjA1Li5lMWVjMzU1IDEwMDY0NAotLS0gYS9MaWIvcHN0YXRzLnB5CisrKyBiL0xpYi9wc3RhdHMucHkKQEAgLTkzLDkgKzkzLDggQEAKICAgICAgICAgICAgIHNlbGYuc3RhdHMgPSB7fQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShhcmcsIHN0cik6Ci0gICAgICAgICAgICBmID0gb3BlbihhcmcsICdyYicpCi0gICAgICAgICAgICBzZWxmLnN0YXRzID0gbWFyc2hhbC5sb2FkKGYpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmcsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0cyA9IG1hcnNoYWwubG9hZChmKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZpbGVfc3RhdHMgPSBvcy5zdGF0KGFyZykKICAgICAgICAgICAgICAgICBhcmcgPSB0aW1lLmN0aW1lKGZpbGVfc3RhdHMuc3RfbXRpbWUpICsgIiAgICAiICsgYXJnCkBAIC0xNDksMTEgKzE0OCw4IEBACiAKICAgICBkZWYgZHVtcF9zdGF0cyhzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIldyaXRlIHRoZSBwcm9maWxlIGRhdGEgdG8gYSBmaWxlIHdlIGtub3cgaG93IHRvIGxvYWQgYmFjay4iIiIKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3YicpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgbWFyc2hhbC5kdW1wKHNlbGYuc3RhdHMsIGYpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgICMgbGlzdCB0aGUgdHVwbGUgaW5kaWNlcyBhbmQgZGlyZWN0aW9ucyBmb3Igc29ydGluZywKICAgICAjIGFsb25nIHdpdGggc29tZSBwcmludGFibGUgZGVzY3JpcHRpb24KQEAgLTYxMiw3ICs2MDgsNyBAQAogICAgICAgICAgICAgaWYgbGluZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdHMgPSBTdGF0cyhsaW5lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KGVyci5hcmdzWzFdLCBmaWxlPXNlbGYuc3RyZWFtKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKZGlmZiAtLWdpdCBhL0xpYi9wdHkucHkgYi9MaWIvcHR5LnB5CmluZGV4IDNjY2Y2MTkuLmU4NDFmMTIgMTAwNjQ0Ci0tLSBhL0xpYi9wdHkucHkKKysrIGIvTGliL3B0eS5weQpAQCAtNDcsMjcgKzQ3LDE2IEBACiAgICAgcmV0dXJuIF9vcGVuX3Rlcm1pbmFsKCkKIAogZGVmIF9vcGVuX3Rlcm1pbmFsKCk6Ci0gICAgIiIiT3BlbiBwdHkgbWFzdGVyIGFuZCByZXR1cm4gKG1hc3Rlcl9mZCwgdHR5X25hbWUpLgotICAgIFNHSSBhbmQgZ2VuZXJpYyBCU0QgdmVyc2lvbiwgZm9yIHdoZW4gb3BlbnB0eSgpIGZhaWxzLiIiIgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNnaQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHR0eV9uYW1lLCBtYXN0ZXJfZmQgPSBzZ2kuX2dldHB0eShvcy5PX1JEV1IsIDBvNjY2LCAwKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBtc2c6Ci0gICAgICAgICAgICByYWlzZSBvcy5lcnJvcihtc2cpCi0gICAgICAgIHJldHVybiBtYXN0ZXJfZmQsIHR0eV9uYW1lCisgICAgIiIiT3BlbiBwdHkgbWFzdGVyIGFuZCByZXR1cm4gKG1hc3Rlcl9mZCwgdHR5X25hbWUpLiIiIgogICAgIGZvciB4IGluICdwcXJzdHV2d3h5elBRUlNUJzoKICAgICAgICAgZm9yIHkgaW4gJzAxMjM0NTY3ODlhYmNkZWYnOgogICAgICAgICAgICAgcHR5X25hbWUgPSAnL2Rldi9wdHknICsgeCArIHkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocHR5X25hbWUsIG9zLk9fUkRXUikKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICByZXR1cm4gKGZkLCAnL2Rldi90dHknICsgeCArIHkpCi0gICAgcmFpc2Ugb3MuZXJyb3IoJ291dCBvZiBwdHkgZGV2aWNlcycpCisgICAgcmFpc2UgT1NFcnJvcignb3V0IG9mIHB0eSBkZXZpY2VzJykKIAogZGVmIHNsYXZlX29wZW4odHR5X25hbWUpOgogICAgICIiInNsYXZlX29wZW4odHR5X25hbWUpIC0+IHNsYXZlX2ZkCkBAIC04Myw3ICs3Miw3IEBACiAgICAgdHJ5OgogICAgICAgICBpb2N0bChyZXN1bHQsIElfUFVTSCwgInB0ZW0iKQogICAgICAgICBpb2N0bChyZXN1bHQsIElfUFVTSCwgImxkdGVybSIpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTE3Myw4ICsxNjIsOSBAQAogICAgICAgICByZXN0b3JlID0gMAogICAgIHRyeToKICAgICAgICAgX2NvcHkobWFzdGVyX2ZkLCBtYXN0ZXJfcmVhZCwgc3RkaW5fcmVhZCkKLSAgICBleGNlcHQgKElPRXJyb3IsIE9TRXJyb3IpOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBpZiByZXN0b3JlOgogICAgICAgICAgICAgdHR5LnRjc2V0YXR0cihTVERJTl9GSUxFTk8sIHR0eS5UQ1NBRkxVU0gsIG1vZGUpCiAKICAgICBvcy5jbG9zZShtYXN0ZXJfZmQpCisgICAgcmV0dXJuIG9zLndhaXRwaWQocGlkLCAwKVsxXQpkaWZmIC0tZ2l0IGEvTGliL3B5X2NvbXBpbGUucHkgYi9MaWIvcHlfY29tcGlsZS5weQppbmRleCA2MmQ2OWFkLi4xMjc3YjkzIDEwMDY0NAotLS0gYS9MaWIvcHlfY29tcGlsZS5weQorKysgYi9MaWIvcHlfY29tcGlsZS5weQpAQCAtMywxNyArMywxNCBAQAogVGhpcyBtb2R1bGUgaGFzIGludGltYXRlIGtub3dsZWRnZSBvZiB0aGUgZm9ybWF0IG9mIC5weWMgZmlsZXMuCiAiIiIKIAotaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZXJybm8KLWltcG9ydCBpbXAKLWltcG9ydCBtYXJzaGFsCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKLWltcG9ydCB0b2tlbml6ZQogaW1wb3J0IHRyYWNlYmFjawogCi1NQUdJQyA9IGltcC5nZXRfbWFnaWMoKQotCiBfX2FsbF9fID0gWyJjb21waWxlIiwgIm1haW4iLCAiUHlDb21waWxlRXJyb3IiXQogCiAKQEAgLTY1LDEzICs2Miw2IEBACiAgICAgICAgIHJldHVybiBzZWxmLm1zZwogCiAKLWRlZiB3cl9sb25nKGYsIHgpOgotICAgICIiIkludGVybmFsOyB3cml0ZSBhIDMyLWJpdCBpbnQgdG8gYSBmaWxlIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuIiIiCi0gICAgZi53cml0ZShieXRlcyhbeCAgICAgICAgICYgMHhmZiwKLSAgICAgICAgICAgICAgICAgICAoeCA+PiA4KSAgJiAweGZmLAotICAgICAgICAgICAgICAgICAgICh4ID4+IDE2KSAmIDB4ZmYsCi0gICAgICAgICAgICAgICAgICAgKHggPj4gMjQpICYgMHhmZl0pKQotCiBkZWYgY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lLCBkb3JhaXNlPUZhbHNlLCBvcHRpbWl6ZT0tMSk6CiAgICAgIiIiQnl0ZS1jb21waWxlIG9uZSBQeXRob24gc291cmNlIGZpbGUgdG8gUHl0aG9uIGJ5dGVjb2RlLgogCkBAIC0xMDcsMTggKzk3LDMxIEBACiAgICAgU2VlIGNvbXBpbGVhbGwucHkgZm9yIGEgc2NyaXB0L21vZHVsZSB0aGF0IHVzZXMgdGhpcyBtb2R1bGUgdG8KICAgICBieXRlLWNvbXBpbGUgYWxsIGluc3RhbGxlZCBmaWxlcyAob3IgYWxsIGZpbGVzIGluIHNlbGVjdGVkCiAgICAgZGlyZWN0b3JpZXMpLgorCisgICAgRG8gbm90ZSB0aGF0IEZpbGVFeGlzdHNFcnJvciBpcyByYWlzZWQgaWYgY2ZpbGUgZW5kcyB1cCBwb2ludGluZyBhdCBhCisgICAgbm9uLXJlZ3VsYXIgZmlsZSBvciBzeW1saW5rLiBCZWNhdXNlIHRoZSBjb21waWxhdGlvbiB1c2VzIGEgZmlsZSByZW5hbWluZywKKyAgICB0aGUgcmVzdWx0aW5nIGZpbGUgd291bGQgYmUgcmVndWxhciBhbmQgdGh1cyBub3QgdGhlIHNhbWUgdHlwZSBvZiBmaWxlIGFzCisgICAgaXQgd2FzIHByZXZpb3VzbHkuCiAgICAgIiIiCi0gICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGUpIGFzIGY6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN0ID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGUpCi0gICAgICAgIHRpbWVzdGFtcCA9IGludChzdC5zdF9tdGltZSkKLSAgICAgICAgc2l6ZSA9IHN0LnN0X3NpemUgJiAweEZGRkZGRkZGCi0gICAgICAgIGNvZGVzdHJpbmcgPSBmLnJlYWQoKQorICAgIGlmIGNmaWxlIGlzIE5vbmU6CisgICAgICAgIGlmIG9wdGltaXplID49IDA6CisgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZSkKKyAgICBpZiBvcy5wYXRoLmlzbGluayhjZmlsZSk6CisgICAgICAgIG1zZyA9ICgne30gaXMgYSBzeW1saW5rIGFuZCB3aWxsIGJlIGNoYW5nZWQgaW50byBhIHJlZ3VsYXIgZmlsZSBpZiAnCisgICAgICAgICAgICAgICAnaW1wb3J0IHdyaXRlcyBhIGJ5dGUtY29tcGlsZWQgZmlsZSB0byBpdCcpCisgICAgICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcihtc2cuZm9ybWF0KGNmaWxlKSkKKyAgICBlbGlmIG9zLnBhdGguZXhpc3RzKGNmaWxlKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKGNmaWxlKToKKyAgICAgICAgbXNnID0gKCd7fSBpcyBhIG5vbi1yZWd1bGFyIGZpbGUgYW5kIHdpbGwgYmUgY2hhbmdlZCBpbnRvIGEgcmVndWxhciAnCisgICAgICAgICAgICAgICAnb25lIGlmIGltcG9ydCB3cml0ZXMgYSBieXRlLWNvbXBpbGVkIGZpbGUgdG8gaXQnKQorICAgICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IobXNnLmZvcm1hdChjZmlsZSkpCisgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCc8cHlfY29tcGlsZT4nLCBmaWxlKQorICAgIHNvdXJjZV9ieXRlcyA9IGxvYWRlci5nZXRfZGF0YShmaWxlKQogICAgIHRyeToKLSAgICAgICAgY29kZW9iamVjdCA9IGJ1aWx0aW5zLmNvbXBpbGUoY29kZXN0cmluZywgZGZpbGUgb3IgZmlsZSwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSkKKyAgICAgICAgY29kZSA9IGxvYWRlci5zb3VyY2VfdG9fY29kZShzb3VyY2VfYnl0ZXMsIGRmaWxlIG9yIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29wdGltaXplPW9wdGltaXplKQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICBweV9leGMgPSBQeUNvbXBpbGVFcnJvcihlcnIuX19jbGFzc19fLCBlcnIsIGRmaWxlIG9yIGZpbGUpCiAgICAgICAgIGlmIGRvcmFpc2U6CkBAIC0xMjYsMjggKzEyOSwyMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShweV9leGMubXNnICsgJ1xuJykKICAgICAgICAgICAgIHJldHVybgotICAgIGlmIGNmaWxlIGlzIE5vbmU6Ci0gICAgICAgIGlmIG9wdGltaXplID49IDA6Ci0gICAgICAgICAgICBjZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQogICAgIHRyeToKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShjZmlsZSkKICAgICAgICAgaWYgZGlybmFtZToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgIGlmIGVycm9yLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgd2l0aCBvcGVuKGNmaWxlLCAnd2InKSBhcyBmYzoKLSAgICAgICAgZmMud3JpdGUoYidcMFwwXDBcMCcpCi0gICAgICAgIHdyX2xvbmcoZmMsIHRpbWVzdGFtcCkKLSAgICAgICAgd3JfbG9uZyhmYywgc2l6ZSkKLSAgICAgICAgbWFyc2hhbC5kdW1wKGNvZGVvYmplY3QsIGZjKQotICAgICAgICBmYy5mbHVzaCgpCi0gICAgICAgIGZjLnNlZWsoMCwgMCkKLSAgICAgICAgZmMud3JpdGUoTUFHSUMpCisgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHNvdXJjZV9zdGF0cyA9IGxvYWRlci5wYXRoX3N0YXRzKGZpbGUpCisgICAgYnl0ZWNvZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fY29kZV90b19ieXRlY29kZSgKKyAgICAgICAgICAgIGNvZGUsIHNvdXJjZV9zdGF0c1snbXRpbWUnXSwgc291cmNlX3N0YXRzWydzaXplJ10pCisgICAgbW9kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9jYWxjX21vZGUoZmlsZSkKKyAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fd3JpdGVfYXRvbWljKGNmaWxlLCBieXRlY29kZSwgbW9kZSkKICAgICByZXR1cm4gY2ZpbGUKIAorCiBkZWYgbWFpbihhcmdzPU5vbmUpOgogICAgICIiIkNvbXBpbGUgc2V2ZXJhbCBzb3VyY2UgZmlsZXMuCiAKQEAgLTE3Myw3ICsxNjgsNyBAQAogICAgICAgICAgICAgZXhjZXB0IFB5Q29tcGlsZUVycm9yIGFzIGVycm9yOgogICAgICAgICAgICAgICAgIHJ2ID0gMQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzXG4iICUgZXJyb3IubXNnKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICAgICAgICAgICBydiA9IDEKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlc1xuIiAlIGVycm9yKQogICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKaW5kZXggOWRjZTA3OS4uYmM2NDQwNyAxMDA3NTUKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtNDQsMTYgKzQ0LDE2IEBACiAiIiIKIAogIyBLbm93biBidWdzIHRoYXQgY2FuJ3QgYmUgZml4ZWQgaGVyZToKLSMgICAtIGltcC5sb2FkX21vZHVsZSgpIGNhbm5vdCBiZSBwcmV2ZW50ZWQgZnJvbSBjbG9iYmVyaW5nIGV4aXN0aW5nCi0jICAgICBsb2FkZWQgbW9kdWxlcywgc28gY2FsbGluZyBzeW5vcHNpcygpIG9uIGEgYmluYXJ5IG1vZHVsZSBmaWxlCi0jICAgICBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBhbnkgZXhpc3RpbmcgbW9kdWxlIHdpdGggdGhlIHNhbWUgbmFtZS4KKyMgICAtIHN5bm9wc2lzKCkgY2Fubm90IGJlIHByZXZlbnRlZCBmcm9tIGNsb2JiZXJpbmcgZXhpc3RpbmcKKyMgICAgIGxvYWRlZCBtb2R1bGVzLgogIyAgIC0gSWYgdGhlIF9fZmlsZV9fIGF0dHJpYnV0ZSBvbiBhIG1vZHVsZSBpcyBhIHJlbGF0aXZlIHBhdGggYW5kCiAjICAgICB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgY2hhbmdlZCB3aXRoIG9zLmNoZGlyKCksIGFuIGluY29ycmVjdAogIyAgICAgcGF0aCB3aWxsIGJlIGRpc3BsYXllZC4KIAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMjI2LDcgKzIyNiw3IEBACiAgICAgaWYgbGFzdHVwZGF0ZSBpcyBOb25lIG9yIGxhc3R1cGRhdGUgPCBtdGltZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmlsZSA9IHRva2VuaXplLm9wZW4oZmlsZW5hbWUpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICMgbW9kdWxlIGNhbid0IGJlIG9wZW5lZCwgc28gc2tpcCBpdAogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgYmluYXJ5X3N1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQpAQCAtMjY3LDIwICsyNjcsMTkgQEAKIAogZGVmIGltcG9ydGZpbGUocGF0aCk6CiAgICAgIiIiSW1wb3J0IGEgUHl0aG9uIHNvdXJjZSBmaWxlIG9yIGNvbXBpbGVkIGZpbGUgZ2l2ZW4gaXRzIHBhdGguIiIiCi0gICAgbWFnaWMgPSBpbXAuZ2V0X21hZ2ljKCkKKyAgICBtYWdpYyA9IGltcG9ydGxpYi51dGlsLk1BR0lDX05VTUJFUgogICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICBpZiBmaWxlLnJlYWQobGVuKG1hZ2ljKSkgPT0gbWFnaWM6Ci0gICAgICAgICAgICBraW5kID0gaW1wLlBZX0NPTVBJTEVECi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBraW5kID0gaW1wLlBZX1NPVVJDRQotICAgICAgICBmaWxlLnNlZWsoMCkKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCi0gICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5sb2FkX21vZHVsZShuYW1lLCBmaWxlLCBwYXRoLCAoZXh0LCAncicsIGtpbmQpKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydChwYXRoLCBzeXMuZXhjX2luZm8oKSkKLSAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIGlzX2J5dGVjb2RlID0gbWFnaWMgPT0gZmlsZS5yZWFkKGxlbihtYWdpYykpCisgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCisgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKKyAgICBpZiBpc19ieXRlY29kZToKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aCkKKyAgICBlbHNlOgorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgZXhjZXB0OgorICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydChwYXRoLCBzeXMuZXhjX2luZm8oKSkKIAogZGVmIHNhZmVpbXBvcnQocGF0aCwgZm9yY2Vsb2FkPTAsIGNhY2hlPXt9KToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGU7IGhhbmRsZSBlcnJvcnM7IHJldHVybiBOb25lIGlmIHRoZSBtb2R1bGUgaXNuJ3QgZm91bmQuCkBAIC0xMzk2LDcgKzEzOTUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgb3MuZW52aXJvblsnUEFHRVInXSkKICAgICBpZiBvcy5lbnZpcm9uLmdldCgnVEVSTScpIGluICgnZHVtYicsICdlbWFjcycpOgogICAgICAgICByZXR1cm4gcGxhaW5wYWdlcgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvczInKToKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiB0ZW1wZmlsZXBhZ2VyKHBsYWluKHRleHQpLCAnbW9yZSA8JykKICAgICBpZiBoYXNhdHRyKG9zLCAnc3lzdGVtJykgYW5kIG9zLnN5c3RlbSgnKGxlc3MpIDI+L2Rldi9udWxsJykgPT0gMDoKICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgJ2xlc3MnKQpAQCAtMTQyMiwxNiArMTQyMSwxNSBAQAogICAgIHRyeToKICAgICAgICAgcGlwZS53cml0ZSh0ZXh0KQogICAgICAgICBwaXBlLmNsb3NlKCkKLSAgICBleGNlcHQgSU9FcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcGFzcyAjIElnbm9yZSBicm9rZW4gcGlwZXMgY2F1c2VkIGJ5IHF1aXR0aW5nIHRoZSBwYWdlciBwcm9ncmFtLgogCiBkZWYgdGVtcGZpbGVwYWdlcih0ZXh0LCBjbWQpOgogICAgICIiIlBhZ2UgdGhyb3VnaCB0ZXh0IGJ5IGludm9raW5nIGEgcHJvZ3JhbSBvbiBhIHRlbXBvcmFyeSBmaWxlLiIiIgogICAgIGltcG9ydCB0ZW1wZmlsZQogICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICBmaWxlID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgIGZpbGUud3JpdGUodGV4dCkKLSAgICBmaWxlLmNsb3NlKCkKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3JykgYXMgZmlsZToKKyAgICAgICAgZmlsZS53cml0ZSh0ZXh0KQogICAgIHRyeToKICAgICAgICAgb3Muc3lzdGVtKGNtZCArICcgIicgKyBmaWxlbmFtZSArICciJykKICAgICBmaW5hbGx5OgpAQCAtMTg1MCwxMCArMTg0OCwxMCBAQAogUHl0aG9uIHByb2dyYW1zIGFuZCB1c2luZyBQeXRob24gbW9kdWxlcy4gIFRvIHF1aXQgdGhpcyBoZWxwIHV0aWxpdHkgYW5kCiByZXR1cm4gdG8gdGhlIGludGVycHJldGVyLCBqdXN0IHR5cGUgInF1aXQiLgogCi1UbyBnZXQgYSBsaXN0IG9mIGF2YWlsYWJsZSBtb2R1bGVzLCBrZXl3b3Jkcywgb3IgdG9waWNzLCB0eXBlICJtb2R1bGVzIiwKLSJrZXl3b3JkcyIsIG9yICJ0b3BpY3MiLiAgRWFjaCBtb2R1bGUgYWxzbyBjb21lcyB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeQotb2Ygd2hhdCBpdCBkb2VzOyB0byBsaXN0IHRoZSBtb2R1bGVzIHdob3NlIHN1bW1hcmllcyBjb250YWluIGEgZ2l2ZW4gd29yZAotc3VjaCBhcyAic3BhbSIsIHR5cGUgIm1vZHVsZXMgc3BhbSIuCitUbyBnZXQgYSBsaXN0IG9mIGF2YWlsYWJsZSBtb2R1bGVzLCBrZXl3b3Jkcywgc3ltYm9scywgb3IgdG9waWNzLCB0eXBlCisibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCit3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQorb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgogJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CkBAIC0xOTU4LDkgKzE5NTYsMTAgQEAKICAgICBkZWYgbGlzdG1vZHVsZXMoc2VsZiwga2V5PScnKToKICAgICAgICAgaWYga2V5OgogICAgICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCi1IZXJlIGlzIGEgbGlzdCBvZiBtYXRjaGluZyBtb2R1bGVzLiAgRW50ZXIgYW55IG1vZHVsZSBuYW1lIHRvIGdldCBtb3JlIGhlbHAuCitIZXJlIGlzIGEgbGlzdCBvZiBtb2R1bGVzIHdob3NlIG5hbWUgb3Igc3VtbWFyeSBjb250YWlucyAne30nLgorSWYgdGhlcmUgYXJlIGFueSwgZW50ZXIgYSBtb2R1bGUgbmFtZSB0byBnZXQgbW9yZSBoZWxwLgogCi0nJycpCisnJycuZm9ybWF0KGtleSkpCiAgICAgICAgICAgICBhcHJvcG9zKGtleSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwpAQCAtMTk3OSwzNSArMTk3OCwxMSBAQAogICAgICAgICAgICAgc2VsZi5saXN0KG1vZHVsZXMua2V5cygpKQogICAgICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCiBFbnRlciBhbnkgbW9kdWxlIG5hbWUgdG8gZ2V0IG1vcmUgaGVscC4gIE9yLCB0eXBlICJtb2R1bGVzIHNwYW0iIHRvIHNlYXJjaAotZm9yIG1vZHVsZXMgd2hvc2UgZGVzY3JpcHRpb25zIGNvbnRhaW4gdGhlIHdvcmQgInNwYW0iLgorZm9yIG1vZHVsZXMgd2hvc2UgbmFtZSBvciBzdW1tYXJ5IGNvbnRhaW4gdGhlIHN0cmluZyAic3BhbSIuCiAnJycpCiAKIGhlbHAgPSBIZWxwZXIoKQogCi1jbGFzcyBTY2FubmVyOgotICAgICIiIkEgZ2VuZXJpYyB0cmVlIGl0ZXJhdG9yLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290cywgY2hpbGRyZW4sIGRlc2NlbmRwKToKLSAgICAgICAgc2VsZi5yb290cyA9IHJvb3RzWzpdCi0gICAgICAgIHNlbGYuc3RhdGUgPSBbXQotICAgICAgICBzZWxmLmNoaWxkcmVuID0gY2hpbGRyZW4KLSAgICAgICAgc2VsZi5kZXNjZW5kcCA9IGRlc2NlbmRwCi0KLSAgICBkZWYgbmV4dChzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYuc3RhdGU6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5yb290czoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgcm9vdCA9IHNlbGYucm9vdHMucG9wKDApCi0gICAgICAgICAgICBzZWxmLnN0YXRlID0gWyhyb290LCBzZWxmLmNoaWxkcmVuKHJvb3QpKV0KLSAgICAgICAgbm9kZSwgY2hpbGRyZW4gPSBzZWxmLnN0YXRlWy0xXQotICAgICAgICBpZiBub3QgY2hpbGRyZW46Ci0gICAgICAgICAgICBzZWxmLnN0YXRlLnBvcCgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5uZXh0KCkKLSAgICAgICAgY2hpbGQgPSBjaGlsZHJlbi5wb3AoMCkKLSAgICAgICAgaWYgc2VsZi5kZXNjZW5kcChjaGlsZCk6Ci0gICAgICAgICAgICBzZWxmLnN0YXRlLmFwcGVuZCgoY2hpbGQsIHNlbGYuY2hpbGRyZW4oY2hpbGQpKSkKLSAgICAgICAgcmV0dXJuIGNoaWxkCi0KLQogY2xhc3MgTW9kdWxlU2Nhbm5lcjoKICAgICAiIiJBbiBpbnRlcnJ1cHRpYmxlIHNjYW5uZXIgdGhhdCBzZWFyY2hlcyBtb2R1bGUgc3lub3BzZXMuIiIiCiAKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCBlZjBmZWMyLi4wOTJhMzY0IDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDggKzEsOCBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IE1hciAyMyAxNTo0MjozMSAyMDEzCisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBBdWcgIDMgMTI6NDY6MDggMjAxMwogdG9waWNzID0geydhc3NlcnQnOiAnXG5UaGUgYGBhc3NlcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbmBgLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yYGAsIGlzIGVxdWl2YWxlbnRcbnRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCBgYF9fZGVidWdfX2BgIGFuZCBgYEFzc2VydGlvbkVycm9yYGBcbnJlZmVyIHRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCBgYEZhbHNlYGAgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkXG4oY29tbWFuZCBsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlXG5mb3IgYW4gYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZVxudGltZS4gIE5vdGUgdGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlXG5leHByZXNzaW9uIHRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhc1xucGFydCBvZiB0aGUgc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvIGBgX19kZWJ1Z19fYGAgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAogICdhc3NpZ25tZW50JzogJ1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGUgb2JqZWN0XG4gIG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlXG4gIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhbiBhc3RlcmlzayxcbiAgICBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIGF0XG4gICAgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIG1pbnVzXG4gICAgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0b1xuICAgIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zXG4gICAgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpcyB0aGVuXG4gICAgYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgYGBnbG9iYWxgYCBvciBgYG5vbmxvY2FsYGBcbiAgICBzdGF0ZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlXG4gICAgb2JqZWN0IGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuICAgIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSBgYG5vbmxvY2FsYGAsIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW4gc3F1YXJlXG4gIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBgYFR5cGVFcnJvcmBgIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSBgYEF0dHJpYnV0ZUVycm9yYGApLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgYGBhLnhgYCBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgYGBhLnhgYCBpc1xuICBhbHdheXMgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICBUaHVzLCB0aGUgdHdvIG9jY3VycmVuY2VzIG9mIGBgYS54YGAgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZVxuICBzYW1lIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSxcbiAgdGhlIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCBgYHByb3BlcnR5KClgYC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgYGBJbmRleEVycm9yYGAgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgYGBfX3NldGl0ZW1fXygpYGAgbWV0aG9kIGlzIGNhbGxlZFxuICB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGUgcmVmZXJlbmNlXG4gIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGFcbiAgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdCBvZiB0aGUgc2FtZVxuICB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkLFxuICBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmIGVpdGhlciBib3VuZCBpc1xuICBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmdcbiAgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsXG4gIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZSB0aGVcbiAgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZiB0aGVcbiAgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIG9iamVjdFxuICBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuV0FSTklORzogQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHNcbmJldHdlZW4gdGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NhZmVcJyAoZm9yXG5leGFtcGxlIGBgYSwgYiA9IGIsIGFgYCBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgaW5zdGFuY2UsIHRoZVxuZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzIGBgWzAsIDJdYGA6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMlxuICAgcHJpbnQoeClcblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYCp0YXJnZXRgYCBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYXRvbS1pZGVudGlmaWVycyc6ICdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhIGBgTmFtZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSBpbiBmcm9udCBvZiB0aGUgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQsIGFuZFxuYSBzaW5nbGUgdW5kZXJzY29yZSBpbnNlcnRlZCBpbiBmcm9udCBvZiB0aGUgY2xhc3MgbmFtZS4gIEZvciBleGFtcGxlLFxudGhlIGlkZW50aWZpZXIgYGBfX3NwYW1gYCBvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCBgYEhhbWBgIHdpbGwgYmVcbnRyYW5zZm9ybWVkIHRvIGBgX0hhbV9fc3BhbWBgLiAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZlxudGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2ggdGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZVxudHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZyAobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLFxuaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heSBoYXBwZW4uICBJZiB0aGUgY2xhc3MgbmFtZVxuY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm8gdHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCisgJ2F0b20taWRlbnRpZmllcnMnOiAnXG5JZGVudGlmaWVycyAoTmFtZXMpXG4qKioqKioqKioqKioqKioqKioqXG5cbkFuIGlkZW50aWZpZXIgb2NjdXJyaW5nIGFzIGFuIGF0b20gaXMgYSBuYW1lLiAgU2VlIHNlY3Rpb25cbipJZGVudGlmaWVycyBhbmQga2V5d29yZHMqIGZvciBsZXhpY2FsIGRlZmluaXRpb24gYW5kIHNlY3Rpb24gKk5hbWluZ1xuYW5kIGJpbmRpbmcqIGZvciBkb2N1bWVudGF0aW9uIG9mIG5hbWluZyBhbmQgYmluZGluZy5cblxuV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlIGF0b20geWllbGRzXG50aGF0IG9iamVjdC4gV2hlbiBhIG5hbWUgaXMgbm90IGJvdW5kLCBhbiBhdHRlbXB0IHRvIGV2YWx1YXRlIGl0XG5yYWlzZXMgYSBgYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgdGV4dHVhbGx5IG9jY3VycyBpblxuYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBhbmRcbmRvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgY29uc2lkZXJlZCBhICpwcml2YXRlXG5uYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byBhIGxvbmdlciBmb3JtXG5iZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gaW5zZXJ0cyB0aGVcbmNsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhIHNpbmdsZSB1bmRlcnNjb3JlXG5pbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlIGlkZW50aWZpZXJcbmBgX19zcGFtYGAgb2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgYGBIYW1gYCB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvXG5gYF9IYW1fX3NwYW1gYC4gIFRoaXMgdHJhbnNmb3JtYXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5bnRhY3RpY2FsXG5jb250ZXh0IGluIHdoaWNoIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpc1xuZXh0cmVtZWx5IGxvbmcgKGxvbmdlciB0aGFuIDI1NSBjaGFyYWN0ZXJzKSwgaW1wbGVtZW50YXRpb24gZGVmaW5lZFxudHJ1bmNhdGlvbiBtYXkgaGFwcGVuLiBJZiB0aGUgY2xhc3MgbmFtZSBjb25zaXN0cyBvbmx5IG9mIHVuZGVyc2NvcmVzLFxubm8gdHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCiAgJ2F0b20tbGl0ZXJhbHMnOiAiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCiAgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgYGB4Lm5hbWVgYClcbmZvciBjbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yIGBgc2VsZmBgKS4gIGBgbmFtZWBgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlXG4gICBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgYGBfX2dldGF0dHJfXygpYGAgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiBgYF9fZ2V0YXR0cl9fKClgYCBhbmQgYGBfX3NldGF0dHJfXygpYGAuKSBUaGlzIGlzIGRvbmUgYm90aFxuICAgZm9yIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgYGBfX2dldGF0dHJfXygpYGBcbiAgIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGVcbiAgIHRoYXQgYXQgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnlcbiAgIG5vdCBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lc1xuICAgYGBfX2dldGF0dHJfXygpYGAsIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzc1xuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBlaXRoZXIgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKVxuICAgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uIEluIG9yZGVyXG4gICB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvblxuICAgc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG9cbiAgIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpYGAuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzXG4gICAgIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4IG9yXG4gICAgIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmIGBgX19zZXRhdHRyX18oKWBgIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKWBgLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSBgYF9fc2V0YXR0cl9fKClgYCBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiBgYGRlbCBvYmoubmFtZWBgIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiBgYGRpcigpYGAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuIGBgZGlyKClgYCBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgYGBfX2RpY3RfX2BgLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgYGBOb25lYGAgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgLCBhbmRcbmBgX19kZWxldGVfXygpYGAuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsXG5pdCBpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsIGBgYS54YGAgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoIGBgYS5fX2RpY3RfX1tcJ3hcJ11gYCwgdGhlblxuYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXWBgLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbmBgdHlwZShhKWBgIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgYGBhLnhgYC5cbkhvdyB0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiBgYGFgYDpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgYGB4Ll9fZ2V0X18oYSlgYC5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsIGBgYS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6IGBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKWBgLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsIGBgQS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgIGBgQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKWBgLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiBgYGFgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHN1cGVyYGAsIHRoZW4gdGhlIGJpbmRpbmcgYGBzdXBlcihCLFxuICAgb2JqKS5tKClgYCBzZWFyY2hlcyBgYG9iai5fX2NsYXNzX18uX19tcm9fX2BgIGZvciB0aGUgYmFzZSBjbGFzc1xuICAgYGBBYGAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGBgQmBgIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3JcbiAgIHdpdGggdGhlIGNhbGw6IGBgQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pYGAuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAgYW5kIGBgX19kZWxldGVfXygpYGAuXG5JZiBpdCBkb2VzIG5vdCBkZWZpbmUgYGBfX2dldF9fKClgYCwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsXG5yZXR1cm4gdGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGVcbm9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyBgYF9fc2V0X18oKWBgXG5hbmQvb3IgYGBfX2RlbGV0ZV9fKClgYCwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXNcbm5laXRoZXIsIGl0IGlzIGEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzXG5kZWZpbmUgYm90aCBgYF9fZ2V0X18oKWBgIGFuZCBgYF9fc2V0X18oKWBgLCB3aGlsZSBub24tZGF0YVxuZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZSBgYF9fZ2V0X18oKWBgIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aFxuYGBfX3NldF9fKClgYCBhbmQgYGBfX2dldF9fKClgYCBkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvblxuaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluIGNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmVcbm92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nIGBgc3RhdGljbWV0aG9kKClgYCBhbmQgYGBjbGFzc21ldGhvZCgpYGApXG5hcmUgaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSBgYHByb3BlcnR5KClgYCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZFxuICAgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvclxuICAgZWFjaCBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzIGBgQXR0cmlidXRlRXJyb3JgYC4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgYGBcJ19fZGljdF9fXCdgYCB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXMgZGVmaW5pbmdcbiAgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbnN0YW5jZXMuIElmIHdlYWtcbiAgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZCBgYFwnX193ZWFrcmVmX19cJ2BgIHRvIHRoZVxuICBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlIGluc3RhbmNlXG4gIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGUgKGV4Y2VwdCBieVxuICByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLiBUaGlzXG4gIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgYGBpbnRgYCwgYGBzdHJgYCBhbmRcbiAgYGB0dXBsZWBgLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3MgbWF5XG4gIGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKICAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiAnXG5BdHRyaWJ1dGUgcmVmZXJlbmNlc1xuKioqKioqKioqKioqKioqKioqKipcblxuQW4gYXR0cmlidXRlIHJlZmVyZW5jZSBpcyBhIHByaW1hcnkgZm9sbG93ZWQgYnkgYSBwZXJpb2QgYW5kIGEgbmFtZTpcblxuICAgYXR0cmlidXRlcmVmIDo6PSBwcmltYXJ5ICIuIiBpZGVudGlmaWVyXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzXG5hdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyBvYmplY3QgaXMgdGhlblxuYXNrZWQgdG8gcHJvZHVjZSB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXMgdGhlIGlkZW50aWZpZXIgKHdoaWNoIGNhblxuYmUgY3VzdG9taXplZCBieSBvdmVycmlkaW5nIHRoZSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QpLiAgSWYgdGhpc1xuYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gYGBBdHRyaWJ1dGVFcnJvcmBgIGlzXG5yYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0IHByb2R1Y2VkIGlzXG5kZXRlcm1pbmVkIGJ5IHRoZSBvYmplY3QuICBNdWx0aXBsZSBldmFsdWF0aW9ucyBvZiB0aGUgc2FtZSBhdHRyaWJ1dGVcbnJlZmVyZW5jZSBtYXkgeWllbGQgZGlmZmVyZW50IG9iamVjdHMuXG4nLApAQCAtMTksMTEgKzE5LDExIEBACiAgJ2NhbGxzJzogJ1xuQ2FsbHNcbioqKioqXG5cbkEgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgcG9zc2libHlcbmVtcHR5IHNlcmllcyBvZiAqYXJndW1lbnRzKjpcblxuICAgY2FsbCAgICAgICAgICAgICAgICAgOjo9IHByaW1hcnkgIigiIFthcmd1bWVudF9saXN0IFsiLCJdIHwgY29tcHJlaGVuc2lvbl0gIikiXG4gICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiBrZXl3b3JkX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKiIgZXhwcmVzc2lvbl0gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmRfYXJndW1lbnRzIFsiLCIgIioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCAiKiIgZXhwcmVzc2lvbiBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBleHByZXNzaW9uXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gZXhwcmVzc2lvbiAoIiwiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9hcmd1bWVudHMgICAgOjo9IGtleXdvcmRfaXRlbSAoIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuXG5BIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkXG5hcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG5gYF9fY2FsbF9fKClgYCBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuIE90aGVyd2lzZSwgdGhlXG52YWx1ZSBvZiB0aGUgYXJndW1lbnQgaXMgcGxhY2VkIGluIHRoZSBzbG90LCBmaWxsaW5nIGl0IChldmVuIGlmIHRoZVxuZXhwcmVzc2lvbiBpcyBgYE5vbmVgYCwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbmJlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoIHRoZVxuY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAoRGVmYXVsdFxudmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG5tdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSB3aWxsXG5iZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uXCd0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yIHRoZVxuY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlIGFueVxudW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhXG5gYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZFxuc2xvdHMgaXMgdXNlZCBhcyB0aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgYGBQeUFyZ19QYXJzZVR1cGxlKClgYCB0b1xucGFyc2UgdGhlaXIgYXJndW1lbnRzLlxuXG5JZiB0aGVyZSBhcmUgbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGFuIHRoZXJlIGFyZSBmb3JtYWwgcGFyYW1ldGVyXG5zbG90cywgYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggYGAqaWRlbnRpZmllcmBgIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgcGFyYW1ldGVyXG51c2luZyB0aGUgc3ludGF4IGBgKippZGVudGlmaWVyYGAgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0XG5mb3JtYWwgcGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSBub1xuZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuXG5JZiB0aGUgc3ludGF4IGBgKmV4cHJlc3Npb25gYCBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuYGBleHByZXNzaW9uYGAgbXVzdCBldmFsdWF0ZSB0byBhbiBpdGVyYWJsZS4gIEVsZW1lbnRzIGZyb20gdGhpc1xuaXRlcmFibGUgYXJlIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHM7XG5pZiB0aGVyZSBhcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCBhbmQgYGBleHByZXNzaW9uYGBcbmV2YWx1YXRlcyB0byBhIHNlcXVlbmNlICp5MSosIC4uLiwgKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbFxud2l0aCBNK04gcG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCAqeTEqLCAuLi4sICp5TSouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSBgYCpleHByZXNzaW9uYGAgc3ludGF4IG1heVxuYXBwZWFyICphZnRlciogc29tZSBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICpiZWZvcmUqIHRoZVxua2V5d29yZCBhcmd1bWVudHMgKGFuZCB0aGUgYGAqKmV4cHJlc3Npb25gYCBhcmd1bWVudCwgaWYgYW55IC0tIHNlZVxuYmVsb3cpLiAgU286XG5cbiAgID4+PiBkZWYgZihhLCBiKTpcbiAgIC4uLiAgcHJpbnQoYSwgYilcbiAgIC4uLlxuICAgPj4+IGYoYj0xLCAqKDIsKSlcbiAgIDIgMVxuICAgPj4+IGYoYT0xLCAqKDIsKSlcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCBcJ2FcJ1xuICAgPj4+IGYoMSwgKigyLCkpXG4gICAxIDJcblxuSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlIGBgKmV4cHJlc3Npb25gYFxuc3ludGF4IHRvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lc1xubm90IGFyaXNlLlxuXG5JZiB0aGUgc3ludGF4IGBgKipleHByZXNzaW9uYGAgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbmBgZXhwcmVzc2lvbmBgIG11c3QgZXZhbHVhdGUgdG8gYSBtYXBwaW5nLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlXG50cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJbiB0aGUgY2FzZSBvZiBhIGtleXdvcmRcbmFwcGVhcmluZyBpbiBib3RoIGBgZXhwcmVzc2lvbmBgIGFuZCBhcyBhbiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50LFxuYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGBcbmNhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxubmFtZXMuXG5cbkEgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSBgYE5vbmVgYCwgdW5sZXNzIGl0IHJhaXNlc1xuYW4gZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhIGBgcmV0dXJuYGBcbiAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC5cblxuYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4gICBUaGUgcmVzdWx0IGlzIHVwIHRvIHRoZSBpbnRlcnByZXRlcjsgc2VlICpCdWlsdC1pbiBGdW5jdGlvbnMqIGZvclxuICAgdGhlIGRlc2NyaXB0aW9ucyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuXG5cbmEgY2xhc3Mgb2JqZWN0OlxuICAgQSBuZXcgaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyBpcyByZXR1cm5lZC5cblxuYSBjbGFzcyBpbnN0YW5jZSBtZXRob2Q6XG4gICBUaGUgY29ycmVzcG9uZGluZyB1c2VyLWRlZmluZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aXRoIGFuIGFyZ3VtZW50XG4gICBsaXN0IHRoYXQgaXMgb25lIGxvbmdlciB0aGFuIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjYWxsOiB0aGVcbiAgIGluc3RhbmNlIGJlY29tZXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxuXG5hIGNsYXNzIGluc3RhbmNlOlxuICAgVGhlIGNsYXNzIG11c3QgZGVmaW5lIGEgYGBfX2NhbGxfXygpYGAgbWV0aG9kOyB0aGUgZWZmZWN0IGlzIHRoZW5cbiAgIHRoZSBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAogICdjbGFzcyc6ICdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCiAgJ2NvbXBhcmlzb25zJzogJ1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlIGBgYSA8IGIgPCBjYGAgaGF2ZSB0aGVcbmludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuXG4gICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4gICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4gICAgICAgICAgICAgICAgICAgICB8ICJpcyIgWyJub3QiXSB8IFsibm90Il0gImluIlxuXG5Db21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogYGBUcnVlYGAgb3IgYGBGYWxzZWBgLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgYGB4IDwgeSA8PSB6YGAgaXNcbmVxdWl2YWxlbnQgdG8gYGB4IDwgeSBhbmQgeSA8PSB6YGAsIGV4Y2VwdCB0aGF0IGBgeWBgIGlzIGV2YWx1YXRlZFxub25seSBvbmNlIChidXQgaW4gYm90aCBjYXNlcyBgYHpgYCBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuIGBgeCA8XG55YGAgaXMgZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuIGBgYSBvcDEgYiBvcDIgYyAuLi4geVxub3BOIHpgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHpgYCxcbmV4Y2VwdCB0aGF0IGVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYXQgbW9zdCBvbmNlLlxuXG5Ob3RlIHRoYXQgYGBhIG9wMSBiIG9wMiBjYGAgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvblxuYmV0d2VlbiAqYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgYGB4IDwgeSA+IHpgYCBpcyBwZXJmZWN0bHkgbGVnYWxcbih0aG91Z2ggcGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIG9wZXJhdG9ycyBgYDxgYCwgYGA+YGAsIGBgPT1gYCwgYGA+PWBgLCBgYDw9YGAsIGFuZCBgYCE9YGAgY29tcGFyZVxudGhlIHZhbHVlcyBvZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS5cbklmIGJvdGggYXJlIG51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLFxudGhlIGBgPT1gYCBhbmQgYGAhPWBgIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdG8gYmUgdW5lcXVhbCwgd2hpbGUgdGhlIGBgPGBgLCBgYD5gYCwgYGA+PWBgIGFuZCBgYDw9YGBcbm9wZXJhdG9ycyByYWlzZSBhIGBgVHlwZUVycm9yYGAgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRoYXQgZG8gbm90IGltcGxlbWVudCB0aGVzZSBvcGVyYXRvcnMgZm9yIHRoZSBnaXZlbiBwYWlyIG9mXG50eXBlcy4gIFlvdSBjYW4gY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Ygbm9uLWJ1aWx0LWluXG50eXBlcyBieSBkZWZpbmluZyByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBsaWtlIGBgX19ndF9fKClgYCwgZGVzY3JpYmVkXG5pbiBzZWN0aW9uICpCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzIGBgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBEZWNpbWFsKFwnTmFOXCcpYGAgYXJlIHNwZWNpYWwuIFRoZVxuICBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMsIGBgeCBpcyB4YGAgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgYGB4ICE9IHhgYC4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSB0byBhXG4gIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiBgYEZhbHNlYGAuICBGb3IgZXhhbXBsZSwgYm90aCBgYDMgPFxuICBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYGZsb2F0KFwnTmFOXCcpIDwgM2BgIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC5cblxuKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICB2YWx1ZXMgb2YgdGhlaXIgZWxlbWVudHMuXG5cbiogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgZXF1aXZhbGVudHNcbiAgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgb3JkKClgYCkgb2YgdGhlaXIgY2hhcmFjdGVycy5cbiAgWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uIG9mXG4gIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsIGBgWzEsMix4XSA8PSBbMSwyLHldYGAgaGFzIHRoZVxuICBzYW1lIHZhbHVlIGFzIGBgeCA8PSB5YGAuICBJZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90XG4gIGV4aXN0LCB0aGUgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgYGBbMSwyXSA8XG4gIFsxLDIsM11gYCkuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgYGAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJylgYCByYWlzZSBgYFR5cGVFcnJvcmBgLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzIGBgezEsMn1gYCBhbmQgezIsM30gYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4gIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlIG5vdFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgb3JkZXJpbmcuXG4gIEZvciBleGFtcGxlLCBgYG1pbigpYGAsIGBgbWF4KClgYCwgYW5kIGBgc29ydGVkKClgYCBwcm9kdWNlXG4gIHVuZGVmaW5lZCByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cblxuKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5IGFyZVxuICB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWQgc21hbGxlclxuICBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dCBjb25zaXN0ZW50bHlcbiAgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyXG5vZiB0aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3Rcbm51bWVyaWMgdHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGVcbmNvbXBhcmlzb24gaXMgbm90IHN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnNcbmBgTm90SW1wbGVtZW50ZWRgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAotICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZlxudGhlIGBgZmluYWxseWBgIGNsYXVzZS4gIElmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgcmFpc2VzIGFub3RoZXJcbmV4Y2VwdGlvbiwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ld1xuZXhjZXB0aW9uLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBvclxuYGBicmVha2BgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uXG5gYHRyeWBgLi4uYGBleGNlcHRgYC4uLmBgZmluYWxseWBgIHVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZFxuZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGBgd2l0aF9pdGVtYGApXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19lbnRlcl9fKClgYCBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gYGBfX2VudGVyX18oKWBgIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgYGB3aXRoYGAgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgYGBfX2VudGVyX18oKWBgXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gYGBfX2V4aXRfXygpYGAgd2lsbCBhbHdheXNcbiAgICAgYmUgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGBgX19leGl0X18oKWBgLiBPdGhlcndpc2UsXG4gICB0aHJlZSBgYE5vbmVgYCBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgYGBfX2V4aXRfXygpYGAgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgcmVyYWlzZWQuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICBzdXBwcmVzc2VkLCBhbmQgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nXG4gICB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSBgYF9fZXhpdF9fKClgYCBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgYGB3aXRoYGAgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKiBbIiwiICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCisgJ2NvbXBvdW5kJzogJ1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlIGBgaWZgYCwgYGB3aGlsZWBgIGFuZCBgYGZvcmBgIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsXG5jb250cm9sIGZsb3cgY29uc3RydWN0cy4gIGBgdHJ5YGAgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3JcbmNsZWFudXAgY29kZSBmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzLCB3aGlsZSB0aGUgYGB3aXRoYGAgc3RhdGVtZW50XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGFcbmJsb2NrIG9mIGNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseVxuY29tcG91bmQgc3RhdGVtZW50cy5cblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb25zaXN0IG9mIG9uZSBvciBtb3JlIFwnY2xhdXNlcy5cJyAgQSBjbGF1c2VcbmNvbnNpc3RzIG9mIGEgaGVhZGVyIGFuZCBhIFwnc3VpdGUuXCcgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG5wYXJ0aWN1bGFyIGNvbXBvdW5kIHN0YXRlbWVudCBhcmUgYWxsIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uIGxldmVsLlxuRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCBhbmQgZW5kc1xud2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSBhXG5jbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBoZWFkZXIsIGZvbGxvd2luZyB0aGUgaGVhZGVyXCdzXG5jb2xvbiwgb3IgaXQgY2FuIGJlIG9uZSBvciBtb3JlIGluZGVudGVkIHN0YXRlbWVudHMgb24gc3Vic2VxdWVudFxubGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCBgYGlmYGAgY2xhdXNlIGEgZm9sbG93aW5nIGBgZWxzZWBgIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG5gYHByaW50KClgYCBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgYGBORVdMSU5FYGAgcG9zc2libHkgZm9sbG93ZWQgYnlcbmEgYGBERURFTlRgYC4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5c1xuYmVnaW4gd2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgYGBlbHNlYGBcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgYGBpZmBgIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuXG5UaGUgZm9ybWF0dGluZyBvZiB0aGUgZ3JhbW1hciBydWxlcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIHBsYWNlc1xuZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpc1xuZXhlY3V0ZWQgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmdvZXMgYmFjayB0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuXG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYVxuc2VxdWVuY2UgKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG5gYGV4cHJlc3Npb25fbGlzdGBgLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgYGBTdG9wSXRlcmF0aW9uYGBcbmV4Y2VwdGlvbiksIHRoZSBzdWl0ZSBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCxcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5jb250aW51ZXMgd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSBgYGVsc2VgYCBjbGF1c2UgaWYgdGhlcmUgd2FzXG5ubyBuZXh0IGl0ZW0uXG5cblRoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgZG9lc1xubm90IGFmZmVjdCB0aGUgbmV4dCBpdGVtIGFzc2lnbmVkIHRvIGl0LlxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsXG5ieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYHJhbmdlKClgYCByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzIGBgZm9yXG5pIDo9IGEgdG8gYiBkb2BgOyBlLmcuLCBgYGxpc3QocmFuZ2UoMykpYGAgcmV0dXJucyB0aGUgbGlzdCBgYFswLCAxLFxuMl1gYC5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcFxuICAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mXG50aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAgSWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSByYWlzZXMgYW5vdGhlclxuZXhjZXB0aW9uLCB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3XG5leGNlcHRpb24uIElmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yXG5gYGJyZWFrYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIGRpc2NhcmRlZDpcblxuICAgZGVmIGYoKTpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIDEvMFxuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIHJldHVybiA0MlxuXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuIHRoZVxuZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXNcbmV2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLVxuY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnRcbnRvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYVxubGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5XG5hcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuXG5UaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2VcbmBgTm9uZWBgIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4gICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgYGB3aXRoYGAgc3RhdGVtZW50LiBUaGUgY29udGV4dFxubWFuYWdlciBoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZVxuY29udGV4dCBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlXG5ub3JtYWxseSBpbnZva2VkIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4qVGhlIHdpdGggc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyXG5tZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBgYHdpdGhgYFxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgYGBOb25lYGAuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0IGBgX19leGl0X18oKWBgIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cbicsCiAgJ2NvbnRpbnVlJzogJ1xuVGhlIGBgY29udGludWVgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcblxuYGBjb250aW51ZWBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgYGBmb3JgYCBvclxuYGB3aGlsZWBgIGxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvclxuYGBmaW5hbGx5YGAgY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZVxub2YgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG5cbldoZW4gYGBjb250aW51ZWBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKICAnY29udmVyc2lvbnMnOiAnXG5Bcml0aG1ldGljIGNvbnZlcnNpb25zXG4qKioqKioqKioqKioqKioqKioqKioqXG5cbldoZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlIHBocmFzZVxuInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzIG1lYW5zXG50aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgdGhhdCB3YXk6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlIG90aGVyXG4gIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGxlZnRcbmFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lIHRoZWlyIG93blxuY29udmVyc2lvbiBiZWhhdmlvci5cbicsCi0gJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgc3RyKG9iamVjdClgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGZvcm1hdCgpYGBcbiAgIGFuZCBgYHByaW50KClgYCB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGVcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgKnN0cmluZyogb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYGBvYmplY3QuX19yZXByX18oKWBgIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgYGBfX3N0cl9fKClgYCByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgYGBvYmplY3RgYFxuICAgY2FsbHMgYGBvYmplY3QuX19yZXByX18oKWBgLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIGFuZCBkb2VzIG5vdCBkZWZpbmVcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgaGF2ZSBpdHMgYGBfX2hhc2hfXygpYGAgaW1wbGljaXRseSBzZXQgdG9cbiAgIGBgTm9uZWBgLiAgV2hlbiB0aGUgYGBfX2hhc2hfXygpYGAgbWV0aG9kIG9mIGEgY2xhc3MgaXMgYGBOb25lYGAsXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgYGBUeXBlRXJyb3JgYCB3aGVuXG4gICBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZVxuICAgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosXG4gICBjb2xsZWN0aW9ucy5IYXNoYWJsZWBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSBgYF9fZXFfXygpYGAgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biBgYF9faGFzaF9fKClgYCB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhIGBgVHlwZUVycm9yYGAgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZFxuICAgYXMgaGFzaGFibGUgYnkgYW4gYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlIGBgX19oYXNoX18oKWBgIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZVxuICAgICBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvIGBgUFlUSE9OSEFTSFNFRURgYC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGUgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzXG4gICAgIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2NgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBzdHIob2JqZWN0KWBgIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZm9ybWF0KClgYFxuICAgYW5kIGBgcHJpbnQoKWBgIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZVxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhXG4gICAqc3RyaW5nKiBvYmplY3QuXG5cbiAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgYG9iamVjdC5fX3JlcHJfXygpYGAgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCBgYF9fc3RyX18oKWBgIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSBgYG9iamVjdGBgXG4gICBjYWxscyBgYG9iamVjdC5fX3JlcHJfXygpYGAuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBzdHIuZm9ybWF0KClgYCBtZXRob2Qgb2YgY2xhc3MgYGBzdHJgYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzXG4gICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXBcbiAgIHRvIHRoZSB0eXBlIGltcGxlbWVudGluZyBgYF9fZm9ybWF0X18oKWBgLCBob3dldmVyIG1vc3QgY2xhc3Nlc1xuICAgd2lsbCBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvclxuICAgdXNlIGEgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiBgYHg8eWBgIGNhbGxzIGBgeC5fX2x0X18oeSlgYCwgYGB4PD15YGAgY2FsbHNcbiAgIGBgeC5fX2xlX18oeSlgYCwgYGB4PT15YGAgY2FsbHMgYGB4Ll9fZXFfXyh5KWBgLCBgYHghPXlgYCBjYWxsc1xuICAgYGB4Ll9fbmVfXyh5KWBgLCBgYHg+eWBgIGNhbGxzIGBgeC5fX2d0X18oeSlgYCwgYW5kIGBgeD49eWBgIGNhbGxzXG4gICBgYHguX19nZV9fKHkpYGAuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b25cbiAgIGBgTm90SW1wbGVtZW50ZWRgYCBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYVxuICAgZ2l2ZW4gcGFpciBvZiBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAgYXJlXG4gICByZXR1cm5lZCBmb3IgYSBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuXG4gICByZXR1cm4gYW55IHZhbHVlLCBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGFcbiAgIEJvb2xlYW4gY29udGV4dCAoZS5nLiwgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiBgYGlmYGAgc3RhdGVtZW50KSxcbiAgIFB5dGhvbiB3aWxsIGNhbGwgYGBib29sKClgYCBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRcbiAgIGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mIGBgeD09eWBgIGRvZXMgbm90IGltcGx5IHRoYXQgYGB4IT15YGAgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyBgYF9fZXFfXygpYGAsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgIGBgX19uZV9fKClgYCBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBTZWVcbiAgIHRoZSBwYXJhZ3JhcGggb24gYGBfX2hhc2hfXygpYGAgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsIGBgX19sdF9fKClgYCBhbmQgYGBfX2d0X18oKWBgIGFyZSBlYWNoXG4gICBvdGhlclwncyByZWZsZWN0aW9uLCBgYF9fbGVfXygpYGAgYW5kIGBgX19nZV9fKClgYCBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgYW5kIGBgX19lcV9fKClgYCBhbmQgYGBfX25lX18oKWBgIGFyZSB0aGVpciBvd25cbiAgIHJlZmxlY3Rpb24uXG5cbiAgIEFyZ3VtZW50cyB0byByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBhcmUgbmV2ZXIgY29lcmNlZC5cblxuICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdFxuICAgb3BlcmF0aW9uLCBzZWUgYGBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKWBgLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIGBgaGFzaCgpYGAgYW5kIGZvciBvcGVyYXRpb25zIG9uXG4gICBtZW1iZXJzIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgYGBzZXRgYCwgYGBmcm96ZW5zZXRgYCwgYW5kXG4gICBgYGRpY3RgYC4gIGBgX19oYXNoX18oKWBgIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5XG4gICByZXF1aXJlZCBwcm9wZXJ0eSBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lXG4gICBoYXNoIHZhbHVlOyBpdCBpcyBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nXG4gICBleGNsdXNpdmUgb3IpIHRoZSBoYXNoIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0XG4gICBhbHNvIHBsYXkgYSBwYXJ0IGluIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogYGBoYXNoKClgYCB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gb2JqZWN0XCdzIGN1c3RvbVxuICAgICBgYF9faGFzaF9fKClgYCBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSBgYFB5X3NzaXplX3RgYC4gIFRoaXMgaXNcbiAgICAgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXQgYnVpbGRzLlxuICAgICBJZiBhbiBvYmplY3RcJ3MgICBgYF9faGFzaF9fKClgYCBtdXN0IGludGVyb3BlcmF0ZSBvbiBidWlsZHMgb2ZcbiAgICAgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gYWxsIHN1cHBvcnRlZFxuICAgICBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggYGBweXRob24gLWMgImltcG9ydCBzeXM7XG4gICAgIHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpImBgXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIGFuZCBkb2VzIG5vdCBkZWZpbmVcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgaGF2ZSBpdHMgYGBfX2hhc2hfXygpYGAgaW1wbGljaXRseSBzZXQgdG9cbiAgIGBgTm9uZWBgLiAgV2hlbiB0aGUgYGBfX2hhc2hfXygpYGAgbWV0aG9kIG9mIGEgY2xhc3MgaXMgYGBOb25lYGAsXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgYGBUeXBlRXJyb3JgYCB3aGVuXG4gICBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZVxuICAgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosXG4gICBjb2xsZWN0aW9ucy5IYXNoYWJsZWBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSBgYF9fZXFfXygpYGAgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biBgYF9faGFzaF9fKClgYCB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhIGBgVHlwZUVycm9yYGAgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZFxuICAgYXMgaGFzaGFibGUgYnkgYW4gYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlIGBgX19oYXNoX18oKWBgIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZVxuICAgICBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvIGBgUFlUSE9OSEFTSFNFRURgYC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCiAgJ2RlYnVnZ2VyJzogJ1xuYGBwZGJgYCAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgbW9kdWxlIGBgcGRiYGAgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuYGBQZGJgYC4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieVxucmVhZGluZyB0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyBgYGJkYmBgXG5hbmQgYGBjbWRgYC5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyBgYChQZGIpYGAuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbVxudW5kZXIgY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBUYWItY29tcGxldGlvbiB2aWEgdGhlIGBgcmVhZGxpbmVgYCBtb2R1bGUgaXNcbmF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbFxuYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgYGBwcmludGBgIGNvbW1hbmQuXG5cbmBgcGRiLnB5YGAgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLlxuRm9yIGV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogYGBwZGIucHlgYCBub3cgYWNjZXB0cyBhIGBgLWNgYCBvcHRpb24gdGhhdFxuZXhlY3V0ZXMgY29tbWFuZHMgYXMgaWYgZ2l2ZW4gaW4gYSBgYC5wZGJyY2BgIGZpbGUsIHNlZSAqRGVidWdnZXJcbkNvbW1hbmRzKi5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgZnJvbSBhIHJ1bm5pbmcgcHJvZ3JhbSBpc1xudG8gaW5zZXJ0XG5cbiAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuXG5hdCB0aGUgbG9jYXRpb24geW91IHdhbnQgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIuICBZb3UgY2FuIHRoZW5cbnN0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSBydW5uaW5nXG53aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgYGBjb250aW51ZWBgIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlIGBgY29udGludWVgYCwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgYGBzdGVwYGAgb3IgYGBuZXh0YGAgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlIGBgX19tYWluX19gYCBpcyB1c2VkLiAgKFNlZVxuICAgdGhlIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiBgYGV4ZWMoKWBgIG9yIGBgZXZhbCgpYGBcbiAgIGZ1bmN0aW9ucy4pXG5cbnBkYi5ydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpXG4gICB1bmRlciBkZWJ1Z2dlciBjb250cm9sLiAgV2hlbiBgYHJ1bmV2YWwoKWBgIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgIGBgcnVuKClgYC5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiBgYHJ1bmNhbGwoKWBgIHJldHVybnMsIGl0IHJldHVybnNcbiAgIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybmVkLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzXG4gICBhcyBzb29uIGFzIHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkLlxuXG5wZGIuc2V0X3RyYWNlKClcblxuICAgRW50ZXIgdGhlIGRlYnVnZ2VyIGF0IHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lLiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgIGhhcmQtY29kZSBhIGJyZWFrcG9pbnQgYXQgYSBnaXZlbiBwb2ludCBpbiBhIHByb2dyYW0sIGV2ZW4gaWYgdGhlXG4gICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbiAgIGZhaWxzKS5cblxucGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIGdpdmVuICp0cmFjZWJhY2sqIG9iamVjdC4gIElmIG5vXG4gICAqdHJhY2ViYWNrKiBpcyBnaXZlbiwgaXQgdXNlcyB0aGUgb25lIG9mIHRoZSBleGNlcHRpb24gdGhhdCBpc1xuICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgaWYgdGhlXG4gICBkZWZhdWx0IGlzIHRvIGJlIHVzZWQpLlxuXG5wZGIucG0oKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC5cblxuVGhlIGBgcnVuKmBgIGZ1bmN0aW9ucyBhbmQgYGBzZXRfdHJhY2UoKWBgIGFyZSBhbGlhc2VzIGZvclxuaW5zdGFudGlhdGluZyB0aGUgYGBQZGJgYCBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lXG5uYW1lLiAgSWYgeW91IHdhbnQgdG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXNcbnlvdXJzZWxmOlxuXG5jbGFzcyBjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PVwndGFiXCcsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlKVxuXG4gICBgYFBkYmBgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyBgYGNtZC5DbWRgYCBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBDdHJsLUMgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgYVxuICAgYGBjb250aW51ZWBgIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgQ3RybC1DLiAgSWYgeW91IHdhbnQgUGRiIG5vdCB0byB0b3VjaCB0aGUgU0lHSU5UXG4gICBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0b3QgdHJ1ZS5cblxuICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuXG4gICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9W1wnZGphbmdvLipcJ10pLnNldF90cmFjZSgpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgKm5vc2lnaW50KiBhcmd1bWVudC4gIFByZXZpb3VzbHksIGEgU0lHSU5UXG4gICBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkgUGRiLlxuXG4gICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbiAgIHNldF90cmFjZSgpXG5cbiAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZ1bmN0aW9ucyBleHBsYWluZWQgYWJvdmUuXG5cblxuRGVidWdnZXIgQ29tbWFuZHNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBjb21tYW5kcyByZWNvZ25pemVkIGJ5IHRoZSBkZWJ1Z2dlciBhcmUgbGlzdGVkIGJlbG93LiAgTW9zdFxuY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7IGUuZy5cbmBgaChlbHApYGAgbWVhbnMgdGhhdCBlaXRoZXIgYGBoYGAgb3IgYGBoZWxwYGAgY2FuIGJlIHVzZWQgdG8gZW50ZXJcbnRoZSBoZWxwIGNvbW1hbmQgKGJ1dCBub3QgYGBoZWBgIG9yIGBgaGVsYGAsIG5vciBgYEhgYCBvciBgYEhlbHBgYCBvclxuYGBIRUxQYGApLiAgQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2VcbihzcGFjZXMgb3IgdGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0c1xuKGBgW11gYCkgaW4gdGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyXG4oYGB8YGApLlxuXG5FbnRlcmluZyBhIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kIGVudGVyZWQuICBFeGNlcHRpb246IGlmXG50aGUgbGFzdCBjb21tYW5kIHdhcyBhIGBgbGlzdGBgIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoYGAhYGApLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgZnVuY3Rpb24uXG5XaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lIGlzXG5wcmludGVkIGJ1dCB0aGUgZGVidWdnZXJcJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG5cblRoZSBkZWJ1Z2dlciBzdXBwb3J0cyAqYWxpYXNlcyouICBBbGlhc2VzIGNhbiBoYXZlIHBhcmFtZXRlcnMgd2hpY2hcbmFsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuZXhhbWluYXRpb24uXG5cbk11bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieVxuYGA7O2BgLiAgKEEgc2luZ2xlIGBgO2BgIGlzIG5vdCB1c2VkIGFzIGl0IGlzIHRoZSBzZXBhcmF0b3IgZm9yXG5tdWx0aXBsZSBjb21tYW5kcyBpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm9cbmludGVsbGlnZW5jZSBpcyBhcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUgaW5wdXQgaXMgc3BsaXRcbmF0IHRoZSBmaXJzdCBgYDs7YGAgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkXG5zdHJpbmcuXG5cbklmIGEgZmlsZSBgYC5wZGJyY2BgIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBgYC5wZGJyY2BgIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyB0aGF0XG5jb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgYGBjb250aW51ZWBgIG9yIGBgbmV4dGBgLiAgUHJldmlvdXNseSxcbnRoZXNlIGNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgYGBoZWxwIHBkYmBgXG4gICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSBgYHBkYmBgXG4gICBtb2R1bGUpLiAgU2luY2UgdGhlICpjb21tYW5kKiBhcmd1bWVudCBtdXN0IGJlIGFuIGlkZW50aWZpZXIsXG4gICBgYGhlbHAgZXhlY2BgIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgYGAhYGAgY29tbWFuZC5cblxudyhoZXJlKVxuXG4gICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLiAgQW5cbiAgIGFycm93IGluZGljYXRlcyB0aGUgY3VycmVudCBmcmFtZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29udGV4dCBvZlxuICAgbW9zdCBjb21tYW5kcy5cblxuZChvd24pIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIGRvd24gaW4gdGhlXG4gICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG5cbnUocCkgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgdXAgaW4gdGhlIHN0YWNrXG4gICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuXG5iKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgV2l0aCBhICpsaW5lbm8qIGFyZ3VtZW50LCBzZXQgYSBicmVhayB0aGVyZSBpbiB0aGUgY3VycmVudCBmaWxlLlxuICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCBleGVjdXRhYmxlXG4gICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlIHByZWZpeGVkXG4gICB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sIHRvIHNwZWNpZnkgYSBicmVha3BvaW50IGluIGFub3RoZXJcbiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc25cJ3QgYmVlbiBsb2FkZWQgeWV0KS4gIFRoZSBmaWxlIGlzXG4gICBzZWFyY2hlZCBvbiBgYHN5cy5wYXRoYGAuICBOb3RlIHRoYXQgZWFjaCBicmVha3BvaW50IGlzIGFzc2lnbmVkIGFcbiAgIG51bWJlciB0byB3aGljaCBhbGwgdGhlIG90aGVyIGJyZWFrcG9pbnQgY29tbWFuZHMgcmVmZXIuXG5cbiAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC5cblxuICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLCBpbmNsdWRpbmcgZm9yIGVhY2ggYnJlYWtwb2ludCxcbiAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlIGN1cnJlbnRcbiAgIGlnbm9yZSBjb3VudCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBpZiBhbnkuXG5cbnRicmVhayBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCBpc1xuICAgZmlyc3QgaGl0LiBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYGBicmVha2BgLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgYGBlbmRgYCB0byB0ZXJtaW5hdGUgdGhlIGNvbW1hbmRzLiBBbiBleGFtcGxlOlxuXG4gICAgICAoUGRiKSBjb21tYW5kcyAxXG4gICAgICAoY29tKSBwcmludCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCBgYGVuZGBgOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuXG4gICBXaXRoIG5vICpicG51bWJlciogYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdCBicmVha3BvaW50XG4gICBzZXQuXG5cbiAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwIGFnYWluLlxuICAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyIGNvbW1hbmQgdGhhdFxuICAgcmVzdW1lcyBleGVjdXRpb24uXG5cbiAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgY29udGludWUsXG4gICBzdGVwLCBuZXh0LCByZXR1cm4sIGp1bXAsIHF1aXQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMpIHRlcm1pbmF0ZXNcbiAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnlcbiAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiB3aXRoIGFcbiAgIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5IGVuY291bnRlciBhbm90aGVyIGJyZWFrcG9pbnQtLXdoaWNoXG4gICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0IHdoaWNoXG4gICBsaXN0IHRvIGV4ZWN1dGUuXG5cbiAgIElmIHlvdSB1c2UgdGhlIFwnc2lsZW50XCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgdXN1YWxcbiAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgVGhpcyBtYXkgYmVcbiAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyBtZXNzYWdlIGFuZFxuICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCB5b3VcbiAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG5cbnModGVwKVxuXG4gICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlIG9jY2FzaW9uXG4gICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiB0aGVcbiAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuXG5uKGV4dClcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaXNcbiAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBgbmV4dGBgIGFuZFxuICAgYGBzdGVwYGAgaXMgdGhhdCBgYHN0ZXBgYCBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlXG4gICBgYG5leHRgYCBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHlcbiAgIHN0b3BwaW5nIGF0IHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuXG51bnQoaWwpIFtsaW5lbm9dXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG5cbiAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gc3RvcCB3aGVuXG4gICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSBudW1iZXIuXG5cbnIoZXR1cm4pXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuXG5jKG9udChpbnVlKSlcblxuICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgZW5jb3VudGVyZWQuXG5cbmoodW1wKSBsaW5lbm9cblxuICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gdGhlXG4gICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlIGNvZGUgYWdhaW4sXG4gICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvblwndCB3YW50IHRvIHJ1bi5cblxuICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgaW5zdGFuY2VcbiAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhIGBgZm9yYGAgbG9vcCBvciBvdXRcbiAgIG9mIGEgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5sKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG5cbiAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgbGlzdCAxMVxuICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzIGxpc3RpbmcuXG4gICBXaXRoIGBgLmBgIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLlxuICAgV2l0aCBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSBgYC0+YGAuICBJZlxuICAgYW4gZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uIHdhc1xuICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgYGA+PmBgLCBpZiBpdFxuICAgZGlmZmVycyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlIGBgPj5gYCBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgYGBsaXN0YGAuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYShyZ3MpXG5cbiAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuXG5wKHJpbnQpIGV4cHJlc3Npb25cblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCBpdHNcbiAgIHZhbHVlLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlIGBgcHJpbnRgYCBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzXG4gICBwcmV0dHktcHJpbnRlZCB1c2luZyB0aGUgYGBwcHJpbnRgYCBtb2R1bGUuXG5cbndoYXRpcyBleHByZXNzaW9uXG5cbiAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG5cbnNvdXJjZSBleHByZXNzaW9uXG5cbiAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4gICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnVuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuaW50ZXJhY3RcblxuICAgU3RhcnQgYW4gaW50ZXJhdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlIGBgY29kZWBgIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5IGBgJTFgYCwgYGAlMmBgLCBhbmQgc28gb24sIHdoaWxlIGBgJSpgYCBpcyByZXBsYWNlZCBieVxuICAgYWxsIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlIGBgLnBkYnJjYGAgZmlsZSk6XG5cbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbiAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4gICAgICBhbGlhcyBwcyBwaSBzZWxmXG5cbnVuYWxpYXMgbmFtZVxuXG4gICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cblxuISBzdGF0ZW1lbnRcblxuICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudFxuICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCBhXG4gICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCBhXG4gICBgYGdsb2JhbGBgIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuXG4gICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbXCctbFwnXVxuICAgICAgKFBkYilcblxucnVuIFthcmdzIC4uLl1cbnJlc3RhcnQgW2FyZ3MgLi4uXVxuXG4gICBSZXN0YXJ0IHRoZSBkZWJ1Z2dlZCBQeXRob24gcHJvZ3JhbS4gIElmIGFuIGFyZ3VtZW50IGlzIHN1cHBsaWVkLFxuICAgaXQgaXMgc3BsaXQgd2l0aCBgYHNobGV4YGAgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICBgYHN5cy5hcmd2YGAuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciBvcHRpb25zXG4gICBhcmUgcHJlc2VydmVkLiBgYHJlc3RhcnRgYCBpcyBhbiBhbGlhcyBmb3IgYGBydW5gYC5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlIGlzXG4gICAgZGV0ZXJtaW5lZCBieSB0aGUgYGBfX25hbWVfX2BgIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKICAnZGVsJzogJ1xuVGhlIGBgZGVsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsIG9yXG5nbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbmBgTmFtZUVycm9yYGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCiAgJ2RpY3QnOiAnXG5EaWN0aW9uYXJ5IGRpc3BsYXlzXG4qKioqKioqKioqKioqKioqKioqXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGtleS9kYXR1bSBwYWlyc1xuZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuXG4gICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCBkaWN0X2NvbXByZWhlbnNpb25dICJ9IlxuICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uXG4gICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuXG5JZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgZGljdGlvbmFyeTpcbmVhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG5jb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBrZXlcbm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5XCdzIHZhbHVlXG5mb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbnNob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbmJldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxucmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKQEAgLTM0LDE0ICszNCwxNCBAQAogICdleHBybGlzdHMnOiAnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG5cbkFuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZVxubGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlXG5leHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6IGBgKClgYC4pXG4nLAogICdmbG9hdGluZyc6ICdcbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5GbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuZGVmaW5pdGlvbnM6XG5cbiAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4gICBwb2ludGZsb2F0ICAgIDo6PSBbaW50cGFydF0gZnJhY3Rpb24gfCBpbnRwYXJ0ICIuIlxuICAgZXhwb25lbnRmbG9hdCA6Oj0gKGludHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuICAgaW50cGFydCAgICAgICA6Oj0gZGlnaXQrXG4gICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXQrXG4gICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdCtcblxuTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nXG5yYWRpeCAxMC4gRm9yIGV4YW1wbGUsIGBgMDc3ZTAxMGBgIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZVxubnVtYmVyIGFzIGBgNzdlMTBgYC4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlIGBgLTFgYFxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgYGAtYGAgYW5kIHRoZVxubGl0ZXJhbCBgYDFgYC5cbicsCiAgJ2Zvcic6ICdcblRoZSBgYGZvcmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYVxuc2VxdWVuY2UgKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG5gYGV4cHJlc3Npb25fbGlzdGBgLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgYGBTdG9wSXRlcmF0aW9uYGBcbmV4Y2VwdGlvbiksIHRoZSBzdWl0ZSBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCxcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5jb250aW51ZXMgd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSBgYGVsc2VgYCBjbGF1c2UgaWYgdGhlcmUgd2FzXG5ubyBuZXh0IGl0ZW0uXG5cblRoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgZG9lc1xubm90IGFmZmVjdCB0aGUgbmV4dCBpdGVtIGFzc2lnbmVkIHRvIGl0LlxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsXG5ieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYHJhbmdlKClgYCByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzIGBgZm9yXG5pIDo9IGEgdG8gYiBkb2BgOyBlLmcuLCBgYGxpc3QocmFuZ2UoMykpYGAgcmV0dXJucyB0aGUgbGlzdCBgYFswLCAxLFxuMl1gYC5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcFxuICAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogJ1xuRm9ybWF0IFN0cmluZyBTeW50YXhcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHN0ci5mb3JtYXQoKWBgIG1ldGhvZCBhbmQgdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mIGBgRm9ybWF0dGVyYGAsXG5zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cblxuRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlc1xuYGB7fWBgLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbFxudGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgdG8gaW5jbHVkZVxuYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgZG91Ymxpbmc6XG5gYHt7YGAgYW5kIGBgfX1gYC5cblxuVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcblxuICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiBjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbiAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbiAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4gICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbiAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJdIj4gK1xuICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbj5cblxuSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCBhXG4qZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSBmb3JtYXR0ZWRcbmFuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgZmllbGQuIFRoZVxuKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qIGZpZWxkLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgYGBcJyFcJ2BgLCBhbmQgYSAqZm9ybWF0X3NwZWMqLCB3aGljaFxuaXMgcHJlY2VkZWQgYnkgYSBjb2xvbiBgYFwnOlwnYGAuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0XG5mb3IgdGhlIHJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgYGBcJzEwXCdgYCBvclxuYGBcJzotXVwnYGApIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSBmb2xsb3dlZCBieVxuYW55IG51bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgdGhlXG5mb3JtIGBgXCcubmFtZVwnYGAgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nIGBgZ2V0YXR0cigpYGAsXG53aGlsZSBhbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtIGBgXCdbaW5kZXhdXCdgYCBkb2VzIGFuIGluZGV4IGxvb2t1cFxudXNpbmcgYGBfX2dldGl0ZW1fXygpYGAuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyBgYFwne30ge31cJ2BgIGlzIGVxdWl2YWxlbnQgdG8gYGBcJ3swfSB7MX1cJ2BgLlxuXG5Tb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuXG4gICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gezF9IlxuICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbiAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICMgRmlyc3QgZWxlbWVudCBvZiBrZXl3b3JkIGFyZ3VtZW50IFwncGxheWVyc1wnLlxuXG5UaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlIGZvcm1hdHRpbmcuXG5Ob3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGVcbmBgX19mb3JtYXRfXygpYGAgbWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzXG5pdCBpcyBkZXNpcmFibGUgdG8gZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZyxcbm92ZXJyaWRpbmcgaXRzIG93biBkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZVxudG8gYSBzdHJpbmcgYmVmb3JlIGNhbGxpbmcgYGBfX2Zvcm1hdF9fKClgYCwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nXG5sb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogYGBcJyFzXCdgYCB3aGljaCBjYWxsc1xuYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZSwgYGBcJyFyXCdgYCB3aGljaCBjYWxscyBgYHJlcHIoKWBgIGFuZCBgYFwnIWFcJ2BgXG53aGljaCBjYWxscyBgYGFzY2lpKClgYC5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBjYW4gY29udGFpbiBvbmx5IGEgZmllbGRcbm5hbWU7IGNvbnZlcnNpb24gZmxhZ3MgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQuICBUaGVcbnJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZSBzdWJzdGl0dXRlZCBiZWZvcmUgdGhlXG4qZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpcyBhbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYVxudmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluIGBgZm9ybWF0KClgYCBmdW5jdGlvbi4gIEVhY2ggZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvd1xudGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yIGZvcm1hdFxuc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgb25seVxuc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuXG5BIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKGBgIiJgYCkgcHJvZHVjZXNcbnRoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCBgYHN0cigpYGAgb24gdGhlIHZhbHVlLiBBIG5vbi1cbmVtcHR5IGZvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG5cblRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG5cbiAgIGZvcm1hdF9zcGVjIDo6PSBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuICAgZmlsbCAgICAgICAgOjo9IDxhIGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnPlxuICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuICAgd2lkdGggICAgICAgOjo9IGludGVnZXJcbiAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4gICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG5cblRoZSAqZmlsbCogY2hhcmFjdGVyIGNhbiBiZSBhbnkgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCcuICBUaGVcbnByZXNlbmNlIG9mIGEgZmlsbCBjaGFyYWN0ZXIgaXMgc2lnbmFsZWQgYnkgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmdcbml0LCB3aGljaCBtdXN0IGJlIG9uZSBvZiB0aGUgYWxpZ25tZW50IG9wdGlvbnMuICBJZiB0aGUgc2Vjb25kXG5jaGFyYWN0ZXIgb2YgKmZvcm1hdF9zcGVjKiBpcyBub3QgYSB2YWxpZCBhbGlnbm1lbnQgb3B0aW9uLCB0aGVuIGl0IGlzXG5hc3N1bWVkIHRoYXQgYm90aCB0aGUgZmlsbCBjaGFyYWN0ZXIgYW5kIHRoZSBhbGlnbm1lbnQgb3B0aW9uIGFyZVxuYWJzZW50LlxuXG5UaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyBmb2xsb3dzOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCc8XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0IG9iamVjdHMpLiAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz5cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG51bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPVwnYGAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgdGhlIHNpZ24gKGlmIGFueSkgICAgfFxuICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yIHByaW50aW5nIGZpZWxkcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gXCcrMDAwMDAwMTIwXCcuIFRoaXMgYWxpZ25tZW50IG9wdGlvbiBpcyBvbmx5ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnXlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSBmaWVsZCB3aWR0aFxud2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyB0aGF0IHRoZVxuYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG5cblRoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiBiZSBvbmUgb2ZcbnRoZSBmb2xsb3dpbmc6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJytcJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbiAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnLVwnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgdXNlZCBvbiBwb3NpdGl2ZSAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBgYFwnI1wnYGAgb3B0aW9uIGNhdXNlcyB0aGUgImFsdGVybmF0ZSBmb3JtIiB0byBiZSB1c2VkIGZvciB0aGVcbmNvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgZGlmZmVyZW50XG50eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCBjb21wbGV4IGFuZFxuRGVjaW1hbCB0eXBlcy4gRm9yIGludGVnZXJzLCB3aGVuIGJpbmFyeSwgb2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dFxuaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgYGBcJzBiXCdgYCwgYGBcJzBvXCdgYCwgb3JcbmBgXCcweFwnYGAgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgRGVjaW1hbCB0aGVcbmFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIHRvIGFsd2F5cyBjb250YWluIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuIE5vcm1hbGx5LCBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgY29udmVyc2lvbnNcbm9ubHkgaWYgYSBkaWdpdCBmb2xsb3dzIGl0LiBJbiBhZGRpdGlvbiwgZm9yIGBgXCdnXCdgYCBhbmQgYGBcJ0dcJ2BgXG5jb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC5cblxuVGhlIGBgXCcsXCdgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgdGhvdXNhbmRzXG5zZXBhcmF0b3IuIEZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgYGBcJ25cJ2BgIGludGVnZXJcbnByZXNlbnRhdGlvbiB0eXBlIGluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSBgYFwnLFwnYGAgb3B0aW9uIChzZWUgYWxzbyAqKlBFUFxuMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuUHJlY2VkaW5nIHRoZSAqd2lkdGgqIGZpZWxkIGJ5IGEgemVybyAoYGBcJzBcJ2BgKSBjaGFyYWN0ZXIgZW5hYmxlc1xuc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgZm9yIG51bWVyaWMgdHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYVxuKmZpbGwqIGNoYXJhY3RlciBvZiBgYFwnMFwnYGAgd2l0aCBhbiAqYWxpZ25tZW50KiB0eXBlIG9mIGBgXCc9XCdgYC5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoIGBgXCdmXCdgYCBhbmQgYGBcJ0ZcJ2BgLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsXG5wb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCBgYFwnZ1wnYGAgb3IgYGBcJ0dcJ2BgLlxuRm9yIG5vbi1udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW5cbm90aGVyIHdvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LlxuVGhlICpwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdzXCdgYCAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ3NcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdiXCdgYCAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnY1wnYGAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdkXCdgYCAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnb1wnYGAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ3hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnWFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdkXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdFxuYGBcJ25cJ2BgIGFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgYGBmbG9hdCgpYGAgaXMgdXNlZCB0byBjb252ZXJ0IHRoZVxuaW50ZWdlciB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cblxuVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCBkZWNpbWFsIHZhbHVlc1xuYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdlXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgXCdlXCcgdG8gaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgXCdlXCdgYCBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZlwnYGAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyBgYFwnZlwnYGAsIGJ1dCBjb252ZXJ0cyBgYG5hbmBgIHRvICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYE5BTmBgIGFuZCBgYGluZmBgIHRvIGBgSU5GYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdnXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gYGBwID49IDFgYCwgdGhpcyAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvIGBgcGBgIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgIHdvdWxkIGhhdmUgZXhwb25lbnQgYGBleHBgYC4gIFRoZW4gaWYgYGAtNCA8PSBleHAgIHxcbiAgIHwgICAgICAgICAgIHwgPCBwYGAsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgXCdmXCdgYCBhbmQgcHJlY2lzaW9uIGBgcC0xLWV4cGBgLiBPdGhlcndpc2UsIHRoZSBudW1iZXIgICB8XG4gICB8ICAgICAgICAgICB8IGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAuIEluIGJvdGggY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgICAgfFxuICAgfCAgICAgICAgICAgfCByZW1vdmVkIGZyb20gdGhlIHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYWxzbyByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAgICB8XG4gICB8ICAgICAgICAgICB8IGl0LiAgUG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgfFxuICAgfCAgICAgICAgICAgfCB6ZXJvLCBhbmQgbmFucywgYXJlIGZvcm1hdHRlZCBhcyBgYGluZmBgLCBgYC1pbmZgYCwgYGAwYGAsIHxcbiAgIHwgICAgICAgICAgIHwgYGAtMGBgIGFuZCBgYG5hbmBgIHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIGBgMGBgIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCAgfFxuICAgfCAgICAgICAgICAgfCB0byBhIHByZWNpc2lvbiBvZiBgYDFgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdHXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgYGBcJ2dcJ2BgIGV4Y2VwdCBzd2l0Y2hlcyB0byBgYFwnRVwnYGAgfFxuICAgfCAgICAgICAgICAgfCBpZiB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgaW5maW5pdHkgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZ1wnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCclXCdgYCAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkIChgYFwnZlwnYGApIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvIGBgXCdnXCdgYCwgZXhjZXB0IHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgZGVjaW1hbCBwb2ludCBhbmQgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gVGhpcyBpcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW50ZW5kZWQgdG8gbWF0Y2ggYGBzdHIoKWBgLCBleGNlcHQgeW91IGNhbiBhZGQgdGhlIG90aGVyICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdCBtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4IGFuZCBjb21wYXJpc29uXG53aXRoIHRoZSBvbGQgYGAlYGAtZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGRcbmBgJWBgLWZvcm1hdHRpbmcsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBgYHt9YGAgYW5kIHdpdGggYGA6YGAgdXNlZFxuaW5zdGVhZCBvZiBgYCVgYC4gRm9yIGV4YW1wbGUsIGBgXCclMDMuMmZcJ2BgIGNhbiBiZSB0cmFuc2xhdGVkIHRvXG5gYFwnezowMy4yZn1cJ2BgLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgYGAlc2BgIGFuZCBgYCVyYGA6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgYGAlK2ZgYCwgYGAlLWZgYCwgYW5kIGBgJSBmYGAgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgYGAleGBgIGFuZCBgYCVvYGAgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudFxuYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0VcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgKmFyZ3VtZW50KiBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbiAgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIGFuZCB0aGUgYGBGb3JtYXR0ZXJgYCBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgYGBGb3JtYXR0ZXJgYCxcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG5gYHt9YGAuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbmBge3tgYCBhbmQgYGB9fWBgLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYFwnIVwnYGAsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoXG5pcyBwcmVjZWRlZCBieSBhIGNvbG9uIGBgXCc6XCdgYC4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXRcbmZvciB0aGUgcmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyBgYFwnMTBcJ2BgIG9yXG5gYFwnOi1dXCdgYCkgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5XG5hbnkgbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGVcbmZvcm0gYGBcJy5uYW1lXCdgYCBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgYGBnZXRhdHRyKClgYCxcbndoaWxlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm0gYGBcJ1tpbmRleF1cJ2BgIGRvZXMgYW4gaW5kZXggbG9va3VwXG51c2luZyBgYF9fZ2V0aXRlbV9fKClgYC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvIGBgXCd7fSB7fVwnYGAgaXMgZXF1aXZhbGVudCB0byBgYFwnezB9IHsxfVwnYGAuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZVxuYGBfX2Zvcm1hdF9fKClgYCBtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXNcbml0IGlzIGRlc2lyYWJsZSB0byBmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLFxub3ZlcnJpZGluZyBpdHMgb3duIGRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlXG50byBhIHN0cmluZyBiZWZvcmUgY2FsbGluZyBgYF9fZm9ybWF0X18oKWBgLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmdcbmxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiBgYFwnIXNcJ2BgIHdoaWNoIGNhbGxzXG5gYHN0cigpYGAgb24gdGhlIHZhbHVlLCBgYFwnIXJcJ2BgIHdoaWNoIGNhbGxzIGBgcmVwcigpYGAgYW5kIGBgXCchYVwnYGBcbndoaWNoIGNhbGxzIGBgYXNjaWkoKWBgLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIGNhbiBjb250YWluIG9ubHkgYSBmaWVsZFxubmFtZTsgY29udmVyc2lvbiBmbGFncyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4gIFRoZVxucmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlIHN1YnN0aXR1dGVkIGJlZm9yZSB0aGVcbipmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzIGFsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhXG52YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gYGBmb3JtYXQoKWBgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoYGAiImBgKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkIGBgc3RyKClgYCBvbiB0aGUgdmFsdWUuIEEgbm9uLVxuZW1wdHkgZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGEgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCc+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuVGhlICpmaWxsKiBjaGFyYWN0ZXIgY2FuIGJlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJy4gIFRoZVxucHJlc2VuY2Ugb2YgYSBmaWxsIGNoYXJhY3RlciBpcyBzaWduYWxlZCBieSB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZ1xuaXQsIHdoaWNoIG11c3QgYmUgb25lIG9mIHRoZSBhbGlnbm1lbnQgb3B0aW9ucy4gIElmIHRoZSBzZWNvbmRcbmNoYXJhY3RlciBvZiAqZm9ybWF0X3NwZWMqIGlzIG5vdCBhIHZhbGlkIGFsaWdubWVudCBvcHRpb24sIHRoZW4gaXQgaXNcbmFzc3VtZWQgdGhhdCBib3RoIHRoZSBmaWxsIGNoYXJhY3RlciBhbmQgdGhlIGFsaWdubWVudCBvcHRpb24gYXJlXG5hYnNlbnQuXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJzxcJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc9XCdgYCAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdeXCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnK1wnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCctXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGBgXCcjXCdgYCBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSBgYFwnMGJcJ2BgLCBgYFwnMG9cJ2BgLCBvclxuYGBcJzB4XCdgYCB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgYGBcJ2dcJ2BgIGFuZCBgYFwnR1wnYGBcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgYGBcJyxcJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHNcbnNlcGFyYXRvci4gRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSBgYFwnblwnYGAgaW50ZWdlclxucHJlc2VudGF0aW9uIHR5cGUgaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlIGBgXCcsXCdgYCBvcHRpb24gKHNlZSBhbHNvICoqUEVQXG4zNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5QcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciBlbmFibGVzXG5zaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhXG4qZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYCB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgYGBcJz1cJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzIGBgNmBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgXCdlXCdgYCBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZlwnYGAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgYGA2YGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdGXCdgYCAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgYGBcJ2ZcJ2BgLCBidXQgY29udmVydHMgYGBuYW5gYCB0byAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBOQU5gYCBhbmQgYGBpbmZgYCB0byBgYElORmBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZ1wnYGAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uIGBgcCA+PSAxYGAsIHRoaXMgICAgfFxuICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byBgYHBgYCBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCBmb3JtYXQgb3IgaW4gICAgICB8XG4gICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgVGhlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgdGhlIHJlc3VsdCAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYCB3b3VsZCBoYXZlIGV4cG9uZW50IGBgZXhwYGAuICBUaGVuIGlmIGBgLTQgPD0gZXhwICB8XG4gICB8ICAgICAgICAgICB8IDwgcGBgLCB0aGUgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYFwnZlwnYGAgYW5kIHByZWNpc2lvbiBgYHAtMS1leHBgYC4gT3RoZXJ3aXNlLCB0aGUgbnVtYmVyICAgfFxuICAgfCAgICAgICAgICAgfCBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgLiBJbiBib3RoIGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVtb3ZlZCBmcm9tIHRoZSBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzICAgICB8XG4gICB8ICAgICAgICAgICB8IGFsc28gcmVtb3ZlZCBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgICAgfFxuICAgfCAgICAgICAgICAgfCBpdC4gIFBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHxcbiAgIHwgICAgICAgICAgIHwgemVybywgYW5kIG5hbnMsIGFyZSBmb3JtYXR0ZWQgYXMgYGBpbmZgYCwgYGAtaW5mYGAsIGBgMGBgLCB8XG4gICB8ICAgICAgICAgICB8IGBgLTBgYCBhbmQgYGBuYW5gYCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiBgYDBgYCBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgIHxcbiAgIHwgICAgICAgICAgIHwgdG8gYSBwcmVjaXNpb24gb2YgYGAxYGAuICBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgYGA2YGAuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnR1wnYGAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzIGBgXCdnXCdgYCBleGNlcHQgc3dpdGNoZXMgdG8gYGBcJ0VcJ2BgIHxcbiAgIHwgICAgICAgICAgIHwgaWYgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlIHJlcHJlc2VudGF0aW9ucyBvZiAgICAgICB8XG4gICB8ICAgICAgICAgICB8IGluZmluaXR5IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsIHRvby4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2dcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnJVwnYGAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgYW5kIGRpc3BsYXlzIGluICAgfFxuICAgfCAgICAgICAgICAgfCBmaXhlZCAoYGBcJ2ZcJ2BgKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byBgYFwnZ1wnYGAsIGV4Y2VwdCB3aXRoIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGRlY2ltYWwgcG9pbnQgYW5kIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgMTIuIFRoaXMgaXMgICB8XG4gICB8ICAgICAgICAgICB8IGludGVuZGVkIHRvIG1hdGNoIGBgc3RyKClgYCwgZXhjZXB0IHlvdSBjYW4gYWRkIHRoZSBvdGhlciAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXQgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblxuRm9ybWF0IGV4YW1wbGVzXG49PT09PT09PT09PT09PT1cblxuVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGV4YW1wbGVzIG9mIHRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbmQgY29tcGFyaXNvblxud2l0aCB0aGUgb2xkIGBgJWBgLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkXG5gYCVgYC1mb3JtYXR0aW5nLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGB7fWBgIGFuZCB3aXRoIGBgOmBgIHVzZWRcbmluc3RlYWQgb2YgYGAlYGAuIEZvciBleGFtcGxlLCBgYFwnJTAzLjJmXCdgYCBjYW4gYmUgdHJhbnNsYXRlZCB0b1xuYGBcJ3s6MDMuMmZ9XCdgYC5cblxuVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgb3B0aW9ucywgc2hvd25cbmluIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG5cbiAgID4+PiBcJ3swfSwgezF9LCB7Mn1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7fSwge30sIHt9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpICAjIDMuMSsgb25seVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KCpcJ2FiY1wnKSAgICAgICMgdW5wYWNraW5nIGFyZ3VtZW50IHNlcXVlbmNlXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezB9ezF9ezB9XCcuZm9ybWF0KFwnYWJyYVwnLCBcJ2NhZFwnKSAgICMgYXJndW1lbnRzXCcgaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbiAgIFwnYWJyYWNhZGFicmFcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG5cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdChsYXRpdHVkZT1cJzM3LjI0TlwnLCBsb25naXR1ZGU9XCctMTE1LjgxV1wnKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG4gICA+Pj4gY29vcmQgPSB7XCdsYXRpdHVkZVwnOiBcJzM3LjI0TlwnLCBcJ2xvbmdpdHVkZVwnOiBcJy0xMTUuODFXXCd9XG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQoKipjb29yZClcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgYXR0cmlidXRlczpcblxuICAgPj4+IGMgPSAzLTVqXG4gICA+Pj4gKFwnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IHswLnJlYWx9IFwnXG4gICAuLi4gIFwnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS5cJykuZm9ybWF0KGMpXG4gICBcJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLlwnXG4gICA+Pj4gY2xhc3MgUG9pbnQ6XG4gICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KTpcbiAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ1BvaW50KHtzZWxmLnh9LCB7c2VsZi55fSlcJy5mb3JtYXQoc2VsZj1zZWxmKVxuICAgLi4uXG4gICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuICAgXCdQb2ludCg0LCAyKVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBpdGVtczpcblxuICAgPj4+IGNvb3JkID0gKDMsIDUpXG4gICA+Pj4gXCdYOiB7MFswXX07ICBZOiB7MFsxXX1cJy5mb3JtYXQoY29vcmQpXG4gICBcJ1g6IDM7ICBZOiA1XCdcblxuUmVwbGFjaW5nIGBgJXNgYCBhbmQgYGAlcmBgOlxuXG4gICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiB7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4gICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG5cbkFsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG5cbiAgID4+PiBcJ3s6PDMwfVwnLmZvcm1hdChcJ2xlZnQgYWxpZ25lZFwnKVxuICAgXCdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICBcJ1xuICAgPj4+IFwnezo+MzB9XCcuZm9ybWF0KFwncmlnaHQgYWxpZ25lZFwnKVxuICAgXCcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWRcJ1xuICAgPj4+IFwnezpeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJylcbiAgIFwnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6Kl4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKSAgIyB1c2UgXCcqXCcgYXMgYSBmaWxsIGNoYXJcbiAgIFwnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqXCdcblxuUmVwbGFjaW5nIGBgJStmYGAsIGBgJS1mYGAsIGFuZCBgYCUgZmBgIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcblxuICAgPj4+IFwnezorZn07IHs6K2Z9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0IGFsd2F5c1xuICAgXCcrMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7OiBmfTsgezogZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuICAgXCcgMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7Oi1mfTsgezotZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgbWludXMgLS0gc2FtZSBhcyBcJ3s6Zn07IHs6Zn1cJ1xuICAgXCczLjE0MDAwMDsgLTMuMTQwMDAwXCdcblxuUmVwbGFjaW5nIGBgJXhgYCBhbmQgYGAlb2BgIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnRcbmJhc2VzOlxuXG4gICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46IHswOmJ9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwXCdcbiAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiB7MDojYn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTBcJ1xuXG5Vc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuXG4gICA+Pj4gXCd7Oix9XCcuZm9ybWF0KDEyMzQ1Njc4OTApXG4gICBcJzEsMjM0LDU2Nyw4OTBcJ1xuXG5FeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcblxuICAgPj4+IHBvaW50cyA9IDE5XG4gICA+Pj4gdG90YWwgPSAyMlxuICAgPj4+IFwnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX1cJy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuICAgXCdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JVwnXG5cblVzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcblxuICAgPj4+IGltcG9ydCBkYXRldGltZVxuICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuICAgPj4+IFwnezolWS0lbS0lZCAlSDolTTolU31cJy5mb3JtYXQoZClcbiAgIFwnMjAxMC0wNy0wNCAxMjoxNTo1OFwnXG5cbk5lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG5cbiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKFwnPF4+XCcsIFtcJ2xlZnRcJywgXCdjZW50ZXJcJywgXCdyaWdodFwnXSk6XG4gICAuLi4gICAgIFwnezA6e2ZpbGx9e2FsaWdufTE2fVwnLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCBhbGlnbj1hbGlnbilcbiAgIC4uLlxuICAgXCdsZWZ0PDw8PDw8PDw8PDw8XCdcbiAgIFwnXl5eXl5jZW50ZXJeXl5eXlwnXG4gICBcJz4+Pj4+Pj4+Pj4+cmlnaHRcJ1xuICAgPj4+XG4gICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuICAgPj4+IFwnezowMlh9ezowMlh9ezowMlh9ezowMlh9XCcuZm9ybWF0KCpvY3RldHMpXG4gICBcJ0MwQTgwMDAxXCdcbiAgID4+PiBpbnQoXywgMTYpXG4gICAzMjMyMjM1NTIxXG4gICA+Pj5cbiAgID4+PiB3aWR0aCA9IDVcbiAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOiAjZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFXG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuIHRoZVxuZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXNcbmV2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLVxuY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnRcbnRvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYVxubGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5XG5hcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuXG5UaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2VcbmBgTm9uZWBgIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4gICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG4nLAogICdnbG9iYWwnOiAnXG5UaGUgYGBnbG9iYWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0IGBgZ2xvYmFsYGAsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZVxuY29kZSBibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgYGBnbG9iYWxgYCBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgZm9ybWFsXG5wYXJhbWV0ZXJzIG9yIGluIGEgYGBmb3JgYCBsb29wIGNvbnRyb2wgdGFyZ2V0LCBgYGNsYXNzYGAgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yIGBgaW1wb3J0YGAgc3RhdGVtZW50LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90XG5lbmZvcmNlIHRoZSBsYXR0ZXIgdHdvIHJlc3RyaWN0aW9ucywgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2VcbnRoaXMgZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5XG5jaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSBgYGdsb2JhbGBgIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBwYXJzZXIuXG5JdCBhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgYGBnbG9iYWxgYFxuc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhIGBgZ2xvYmFsYGAgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiBhIHN0cmluZ1xub3IgY29kZSBvYmplY3Qgc3VwcGxpZWQgdG8gdGhlIGJ1aWx0LWluIGBgZXhlYygpYGAgZnVuY3Rpb24gZG9lcyBub3RcbmFmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG5jb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5IGBgZ2xvYmFsYGAgc3RhdGVtZW50cyBpblxudGhlIGNvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlXG5gYGV2YWwoKWBgIGFuZCBgYGNvbXBpbGUoKWBgIGZ1bmN0aW9ucy5cbicsCiAgJ2lkLWNsYXNzZXMnOiAnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbmBgXypgYFxuICAgTm90IGltcG9ydGVkIGJ5IGBgZnJvbSBtb2R1bGUgaW1wb3J0ICpgYC4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXJcbiAgIGBgX2BgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2ZcbiAgIHRoZSBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgYGBidWlsdGluc2BgIG1vZHVsZS4gIFdoZW5cbiAgIG5vdCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCBgYF9gYCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3RcbiAgIGRlZmluZWQuIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lIGBgX2BgIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICBgYGdldHRleHRgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG5gYF9fKl9fYGBcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mIGBgX18qX19gYCBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lc1xuICAgbm90IGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlXG4gICB3aXRob3V0IHdhcm5pbmcuXG5cbmBgX18qYGBcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAogICdpZGVudGlmaWVycyc6ICdcbklkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbklkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgdGhlXG5mb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9ucy5cblxuVGhlIHN5bnRheCBvZiBpZGVudGlmaWVycyBpbiBQeXRob24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgc3RhbmRhcmRcbmFubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyBzZWUgYWxzb1xuKipQRVAgMzEzMSoqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG5cbldpdGhpbiB0aGUgQVNDSUkgcmFuZ2UgKFUrMDAwMS4uVSswMDdGKSwgdGhlIHZhbGlkIGNoYXJhY3RlcnMgZm9yXG5pZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlXG5sZXR0ZXJzIGBgQWBgIHRocm91Z2ggYGBaYGAsIHRoZSB1bmRlcnNjb3JlIGBgX2BgIGFuZCwgZXhjZXB0IGZvciB0aGVcbmZpcnN0IGNoYXJhY3RlciwgdGhlIGRpZ2l0cyBgYDBgYCB0aHJvdWdoIGBgOWBgLlxuXG5QeXRob24gMy4wIGludHJvZHVjZXMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZyb20gb3V0c2lkZSB0aGUgQVNDSUlcbnJhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgY2xhc3NpZmljYXRpb25cbnVzZXMgdGhlIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGFzIGluY2x1ZGVkIGluIHRoZVxuYGB1bmljb2RlZGF0YWBgIG1vZHVsZS5cblxuSWRlbnRpZmllcnMgYXJlIHVubGltaXRlZCBpbiBsZW5ndGguICBDYXNlIGlzIHNpZ25pZmljYW50LlxuXG4gICBpZGVudGlmaWVyICAgOjo9IHhpZF9zdGFydCB4aWRfY29udGludWUqXG4gICBpZF9zdGFydCAgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBnZW5lcmFsIGNhdGVnb3JpZXMgTHUsIExsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlIE90aGVyX0lEX1N0YXJ0IHByb3BlcnR5PlxuICAgaWRfY29udGludWUgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQsIHBsdXMgY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggdGhlIE90aGVyX0lEX0NvbnRpbnVlIHByb3BlcnR5PlxuICAgeGlkX3N0YXJ0ICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbiAgIHhpZF9jb250aW51ZSA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX2NvbnRpbnVlIHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfY29udGludWUqIj5cblxuVGhlIFVuaWNvZGUgY2F0ZWdvcnkgY29kZXMgbWVudGlvbmVkIGFib3ZlIHN0YW5kIGZvcjpcblxuKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcblxuKiAqTGwqIC0gbG93ZXJjYXNlIGxldHRlcnNcblxuKiAqTHQqIC0gdGl0bGVjYXNlIGxldHRlcnNcblxuKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuXG4qICpMbyogLSBvdGhlciBsZXR0ZXJzXG5cbiogKk5sKiAtIGxldHRlciBudW1iZXJzXG5cbiogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcblxuKiAqTWMqIC0gc3BhY2luZyBjb21iaW5pbmcgbWFya3NcblxuKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzXG5cbiogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcblxuKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluIFByb3BMaXN0LnR4dCB0b1xuICBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cbiogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG5cbkFsbCBpZGVudGlmaWVycyBhcmUgY29udmVydGVkIGludG8gdGhlIG5vcm1hbCBmb3JtIE5GS0Mgd2hpbGUgcGFyc2luZztcbmNvbXBhcmlzb24gb2YgaWRlbnRpZmllcnMgaXMgYmFzZWQgb24gTkZLQy5cblxuQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlcnMgZm9yXG5Vbmljb2RlIDQuMSBjYW4gYmUgZm91bmQgYXQgaHR0cDovL3d3dy5kY2wuaHBpLnVuaS1cbnBvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuXG5cbktleXdvcmRzXG49PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAqa2V5d29yZHMqIG9mXG50aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gIFRoZXkgbXVzdFxuYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcblxuICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbiAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4gICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4gICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbiAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbiAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbiAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG5cblxuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG5gYF8qYGBcbiAgIE5vdCBpbXBvcnRlZCBieSBgYGZyb20gbW9kdWxlIGltcG9ydCAqYGAuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyXG4gICBgYF9gYCBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mXG4gICB0aGUgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlIGBgYnVpbHRpbnNgYCBtb2R1bGUuICBXaGVuXG4gICBub3QgaW4gaW50ZXJhY3RpdmUgbW9kZSwgYGBfYGAgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90XG4gICBkZWZpbmVkLiBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuXG4gICBOb3RlOiBUaGUgbmFtZSBgYF9gYCBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgYGBnZXR0ZXh0YGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuYGBfXypfX2BgXG4gICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlIGludGVycHJldGVyXG4gICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgQ3VycmVudFxuICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogc2VjdGlvblxuICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiBgYF9fKl9fYGAgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXNcbiAgIG5vdCBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZVxuICAgd2l0aG91dCB3YXJuaW5nLlxuXG5gYF9fKmBgXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKICAnaWYnOiAnXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKICAnaW1hZ2luYXJ5JzogJ1xuSW1hZ2luYXJ5IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKipcblxuSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBpbnRwYXJ0KSAoImoiIHwgIkoiKVxuXG5BbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0IG9mIDAuMC5cbkNvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnNcbmFuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhIGNvbXBsZXhcbm51bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBpdCxcbmUuZy4sIGBgKDMrNGopYGAuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcblxuICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKLSAnaW1wb3J0JzogJ1xuVGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vIGBgZnJvbWBgIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG5zdGVwczpcblxuMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuXG4yLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZSB3aGVyZVxuICAgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IG9jY3Vycy5cblxuV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieSBjb21tYXMpIHRoZVxudHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdCBhcyB0aG91Z2hcbnRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkaXVhbCBpbXBvcnQgc3RhdGVtZW50cy5cblxuVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBpc1xuZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSAqaW1wb3J0IHN5c3RlbSosXG53aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0XG5jYW4gYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvXG5jdXN0b21pemUgdGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5XG5pbmRpY2F0ZSBlaXRoZXIgdGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW5cbmVycm9yIG9jY3VycmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb25cbm9mIHRoZSBtb2R1bGVcJ3MgY29kZS5cblxuSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlXG5hdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czpcblxuKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgYGBhc2BgLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICBgYGFzYGAgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cblxuKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYVxuICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlXCdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZVxuICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG5cbiogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlXG4gIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpblxuICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlXG4gIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4gIHJhdGhlciB0aGFuIGRpcmVjdGx5XG5cblRoZSBgYGZyb21gYCBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcblxuMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgYGBmcm9tYGAgY2xhdXNlIGxvYWRpbmcgYW5kXG4gICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuXG4yLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSBgYGltcG9ydGBgIGNsYXVzZXM6XG5cbiAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcblxuICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgdGhlblxuICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcblxuICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBib3VuZCBpbiB0aGUgbG9jYWxcbiAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlIGBgYXNgYCBjbGF1c2UgaWYgaXQgaXMgcHJlc2VudCxcbiAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcblxuRXhhbXBsZXM6XG5cbiAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiXG4gICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXpcbiAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyXG5cbklmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoYGBcJypcJ2BgKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiAgYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLlxuQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhXG5gYFN5bnRheEVycm9yYGAuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiAgYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyBgYGZyb21gYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmVcbiAgIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXNcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgYGBhc2BgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgYGBmcm9tYGAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIGBgZnJvbWBgIGNsYXVzZSBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgYGBpbXBvcnRgYCBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSBgYGFzYGAgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZVxud2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGVcbm1vZHVsZSBsZXZlbC4gQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnNcbndpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyIGBgZnJvbWBgXG55b3UgY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuYGBmcm9tIC4gaW1wb3J0IG1vZGBgIGZyb20gYSBtb2R1bGUgaW4gdGhlIGBgcGtnYGAgcGFja2FnZSB0aGVuIHlvdVxud2lsbCBlbmQgdXAgaW1wb3J0aW5nIGBgcGtnLm1vZGBgLiBJZiB5b3UgZXhlY3V0ZSBgYGZyb20gLi5zdWJwa2cyXG5pbXBvcnQgbW9kYGAgZnJvbSB3aXRoaW4gYGBwa2cuc3VicGtnMWBgIHlvdSB3aWxsIGltcG9ydFxuYGBwa2cuc3VicGtnMi5tb2RgYC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXNcbmNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbmBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSB3aGljaCBtb2R1bGVzIG5lZWQgdG8gYmUgbG9hZGVkIGR5bmFtaWNhbGx5LlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24uICBUaGUgZnV0dXJlXG5zdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvblxudGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXQgYWxsb3dzIHVzZSBvZlxudGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZSByZWxlYXNlIGluIHdoaWNoIHRoZVxuZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgYGBhYnNvbHV0ZV9pbXBvcnRgYCxcbmBgZGl2aXNpb25gYCwgYGBnZW5lcmF0b3JzYGAsIGBgdW5pY29kZV9saXRlcmFsc2BgLFxuYGBwcmludF9mdW5jdGlvbmBgLCBgYG5lc3RlZF9zY29wZXNgYCBhbmQgYGB3aXRoX3N0YXRlbWVudGBgLiAgVGhleVxuYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3JcbmJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlIGBgX19mdXR1cmVfX2BgLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdFxud2lsbCBiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGV4ZWMoKWBgIGFuZFxuYGBjb21waWxlKClgYCB0aGF0IG9jY3VyIGluIGEgbW9kdWxlIGBgTWBgIGNvbnRhaW5pbmcgYSBmdXR1cmVcbnN0YXRlbWVudCB3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWRcbndpdGggdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsXG5hcmd1bWVudHMgdG8gYGBjb21waWxlKClgYCAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb25cbmZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuICAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAogICdpbic6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLiAgV2hlbiBjcm9zcy10eXBlXG5jb21wYXJpc29uIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zXG5gYE5vdEltcGxlbWVudGVkYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIHRlc3QgZm9yIG1lbWJlcnNoaXAuICBgYHggaW4gc2BgXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgYGB4XG5ub3QgaW4gc2BgIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIGBgeCBpbiBzYGAuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCBgYGluYGBcbnRlc3RzIHdoZXRoZXIgYSB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXNcbnN1Y2ggYXMgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uIGBgeCBpbiB5YGAgaXMgZXF1aXZhbGVudCB0byBgYGFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KWBgLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCpcbmlzIGEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyBgYHkuZmluZCh4KSAhPSAtMWBgLlxuRW1wdHkgc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyXG5zdHJpbmcsIHNvIGBgIiIgaW4gImFiYyJgYCB3aWxsIHJldHVybiBgYFRydWVgYC5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCxcbmBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBgYHkuX19jb250YWluc19fKHgpYGAgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgIGJ1dCBkb1xuZGVmaW5lIGBgX19pdGVyX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgc29tZSB2YWx1ZSBgYHpgYCB3aXRoIGBgeFxuPT0gemBgIGlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGBgeWBgLiAgSWYgYW4gZXhjZXB0aW9uIGlzXG5yYWlzZWQgZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuYGBfX2dldGl0ZW1fXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCBgYHggPT0geVtpXWBgLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlIGBgSW5kZXhFcnJvcmBgIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgYGBub3QgaW5gYCBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuYGBpbmBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaXNgYCBhbmQgYGBpcyBub3RgYCB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6IGBgeCBpc1xueWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIGBgeCBpc1xubm90IHlgYCB5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKICAnaW50ZWdlcnMnOiAnXG5JbnRlZ2VyIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cbkludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGludGVnZXIgICAgICAgIDo6PSBkZWNpbWFsaW50ZWdlciB8IG9jdGludGVnZXIgfCBoZXhpbnRlZ2VyIHwgYmluaW50ZWdlclxuICAgZGVjaW1hbGludGVnZXIgOjo9IG5vbnplcm9kaWdpdCBkaWdpdCogfCAiMCIrXG4gICBub256ZXJvZGlnaXQgICA6Oj0gIjEiLi4uIjkiXG4gICBkaWdpdCAgICAgICAgICA6Oj0gIjAiLi4uIjkiXG4gICBvY3RpbnRlZ2VyICAgICA6Oj0gIjAiICgibyIgfCAiTyIpIG9jdGRpZ2l0K1xuICAgaGV4aW50ZWdlciAgICAgOjo9ICIwIiAoIngiIHwgIlgiKSBoZXhkaWdpdCtcbiAgIGJpbmludGVnZXIgICAgIDo6PSAiMCIgKCJiIiB8ICJCIikgYmluZGlnaXQrXG4gICBvY3RkaWdpdCAgICAgICA6Oj0gIjAiLi4uIjciXG4gICBoZXhkaWdpdCAgICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbiAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcblxuVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXRcbmNhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cblxuTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90IGFsbG93ZWQuXG5UaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoIFB5dGhvblxudXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG5cblNvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcblxuICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4gICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHgxMDAwMDAwMDBcbiAgICAgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAgICAgICAgICAweGRlYWRiZWVmXG4nLAogICdsYW1iZGEnOiAnXG5MYW1iZGFzXG4qKioqKioqXG5cbiAgIGxhbWJkYV9mb3JtICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuICAgbGFtYmRhX2Zvcm1fbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uX25vY29uZFxuXG5MYW1iZGEgZm9ybXMgKGxhbWJkYSBleHByZXNzaW9ucykgaGF2ZSB0aGUgc2FtZSBzeW50YWN0aWMgcG9zaXRpb24gYXNcbmV4cHJlc3Npb25zLiAgVGhleSBhcmUgYSBzaG9ydGhhbmQgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnM7IHRoZVxuZXhwcmVzc2lvbiBgYGxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb25gYCB5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuXG5UaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgZnVuY3Rpb24gb2JqZWN0IGRlZmluZWQgd2l0aFxuXG4gICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbiAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuXG5TZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIHBhcmFtZXRlciBsaXN0cy5cbk5vdGUgdGhhdCBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIGxhbWJkYSBmb3JtcyBjYW5ub3QgY29udGFpblxuc3RhdGVtZW50cyBvciBhbm5vdGF0aW9ucy5cbicsCkBAIC01MSwxNyArNTEsMTcgQEAKICAnbnVtYmVycyc6ICJcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgYGAtMWBgXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAnYGAtYGAnIGFuZFxudGhlIGxpdGVyYWwgYGAxYGAuXG4iLAogICdudW1lcmljLXR5cGVzJzogIlxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cbiIsCiAgJ29iamVjdHMnOiAnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJ2BgaXNgYFwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSBgYGlkKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sIGBgaWQoeClgYCBpcyB0aGVcbm1lbW9yeSBhZGRyZXNzIHdoZXJlIGBgeGBgIGlzIHN0b3JlZC5cblxuQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHNcbihlLmcuLCAiZG9lcyBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlc1xuZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlIGBgdHlwZSgpYGAgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcJ3NcbnR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuIG9iamVjdFwnc1xuKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cblxuVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyB1bmNoYW5nZWFibGVcbm9uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG5pbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZVxub2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyXCdzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXIgdGhlXG5jb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gb2Zcbm9iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSBzdWJ0bGUuKVxuQW4gb2JqZWN0XCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxubnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyBhbmRcbmxpc3RzIGFyZSBtdXRhYmxlLlxuXG5PYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSBpdCBpc1xuYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5pbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbnJlYWNoYWJsZS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgcmVmZXJlbmNlLVxuY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5IGxpbmtlZFxuZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbmNpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKGV4OlxuYWx3YXlzIGNsb3NlIGZpbGVzKS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCdgYHRyeWBgLi4uYGBleGNlcHRgYFwnXG5zdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzIG9wZW5cbmZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSBmcmVlZFxud2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5ub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgd2F5IHRvXG5yZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhIGBgY2xvc2UoKWBgIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCdgYHRyeWBgLi4uYGBmaW5hbGx5YGBcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJ2Bgd2l0aGBgXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgYGBhID0gMTsgYiA9XG4xYGAsIGBgYWBgIGFuZCBgYGJgYCBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGVcbnZhbHVlIG9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyIGBgYyA9IFtdOyBkID1cbltdYGAsIGBgY2BgIGFuZCBgYGRgYCBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LFxudW5pcXVlLCBuZXdseSBjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0IGBgYyA9IGQgPSBbXWBgIGFzc2lnbnNcbnRoZSBzYW1lIG9iamVjdCB0byBib3RoIGBgY2BgIGFuZCBgYGRgYC4pXG4nLAotICdvcGVyYXRvci1zdW1tYXJ5JzogJ1xuT3BlcmF0b3IgcHJlY2VkZW5jZVxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2VzIGluIFB5dGhvbixcbmZyb20gbG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgY29tcGFyaXNvbnMsIGluY2x1ZGluZ1xudGVzdHMsIHdoaWNoIGFsbCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UgYW5kIGNoYWluIGZyb20gbGVmdCB0byByaWdodFxuLS0tIHNlZSBzZWN0aW9uICpDb21wYXJpc29ucyogLS0tIGFuZCBleHBvbmVudGlhdGlvbiwgd2hpY2ggZ3JvdXBzXG5mcm9tIHJpZ2h0IHRvIGxlZnQpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgbGFtYmRhYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgaWZgYCAtLSBgYGVsc2VgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgb3JgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgYW5kYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgbm90YGAgYGB4YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgaW5gYCwgYGBub3QgaW5gYCwgYGBpc2BgLCBgYGlzIG5vdGBgLCBgYDxgYCwgIHwgQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG58IGBgPD1gYCwgYGA+YGAsIGBgPj1gYCwgYGAhPWBgLCBgYD09YGAgICAgICAgICAgIHwgdGVzdHMgYW5kIGlkZW50aXR5IHRlc3RzLCAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgfGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgXmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBYT1IgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgJmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgPDxgYCwgYGA+PmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2hpZnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgK2BgLCBgYC1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCAgICAgICAgICAgICAgICAgICAgIHwgTXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCByZW1haW5kZXIgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgK3hgYCwgYGAteGBgLCBgYH54YGAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgKipgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgeFtpbmRleF1gYCwgYGB4W2luZGV4OmluZGV4XWBgLCAgICAgICAgICAgICAgIHwgU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG58IGBgeChhcmd1bWVudHMuLi4pYGAsIGBgeC5hdHRyaWJ1dGVgYCAgICAgICAgICAgIHwgYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgKGV4cHJlc3Npb25zLi4uKWBgLCBgYFtleHByZXNzaW9ucy4uLl1gYCwgICAgIHwgQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG58IGBge2tleTogdmFsdWUuLi59YGAsIGBge2V4cHJlc3Npb25zLi4ufWBgICAgICAgIHwgZGlzcGxheSwgZGljdGlvbmFyeSBkaXNwbGF5LCBzZXQgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hpbGUgYGBhYnMoeCV5KSA8IGFicyh5KWBgIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksIGZvciBmbG9hdHMgaXRcbiAgICBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yIGV4YW1wbGUsIGFuZFxuICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gSUVFRSA3NTQgZG91YmxlLVxuICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgYGAtMWUtMTAwICUgMWUxMDBgYCBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyBgYDFlMTAwYGAsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgYGAtMWUtMTAwICsgMWUxMDBgYCxcbiAgICB3aGljaCBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvIGBgMWUxMDBgYC4gIFRoZSBmdW5jdGlvblxuICAgIGBgbWF0aC5mbW9kKClgYCByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyB0aGUgc2lnbiBvZlxuICAgIHRoZSBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyBgYC0xZS0xMDBgYCBpbiB0aGlzXG4gICAgY2FzZS4gV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZVxuICAgIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgYGB4Ly95YGAgdG8gYmUgb25lIGxhcmdlciB0aGFuIGBgKHgteCV5KS8veWBgIGR1ZSB0b1xuICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluXG4gICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCBgYGRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5YGAgYmUgdmVyeVxuICAgIGNsb3NlIHRvIGBgeGBgLlxuXG5bM10gV2hpbGUgY29tcGFyaXNvbnMgYmV0d2VlbiBzdHJpbmdzIG1ha2Ugc2Vuc2UgYXQgdGhlIGJ5dGUgbGV2ZWwsXG4gICAgdGhleSBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gdXNlcnMuICBGb3IgZXhhbXBsZSwgdGhlIHN0cmluZ3NcbiAgICBgYCJcXHUwMEM3ImBgIGFuZCBgYCJcXHUwMzI3XFx1MDA0MyJgYCBjb21wYXJlIGRpZmZlcmVudGx5LCBldmVuXG4gICAgdGhvdWdoIHRoZXkgYm90aCByZXByZXNlbnQgdGhlIHNhbWUgdW5pY29kZSBjaGFyYWN0ZXIgKExBVElOXG4gICAgQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEpLiAgVG8gY29tcGFyZSBzdHJpbmdzIGluIGEgaHVtYW5cbiAgICByZWNvZ25pemFibGUgd2F5LCBjb21wYXJlIHVzaW5nIGBgdW5pY29kZWRhdGEubm9ybWFsaXplKClgYC5cblxuWzRdIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgdGhlIGR5bmFtaWNcbiAgICBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlIHNlZW1pbmdseSB1bnVzdWFsIGJlaGF2aW91clxuICAgIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgYGBpc2BgIG9wZXJhdG9yLCBsaWtlIHRob3NlIGludm9sdmluZ1xuICAgIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgY29uc3RhbnRzLiAgQ2hlY2sgdGhlaXJcbiAgICBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG5cbls1XSBUaGUgYGAlYGAgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgdGhlIHNhbWVcbiAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG5cbls2XSBUaGUgcG93ZXIgb3BlcmF0b3IgYGAqKmBgIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWMgb3JcbiAgICBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgYGAyKiotMWBgIGlzXG4gICAgYGAwLjVgYC5cbicsCisgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG5PcGVyYXRvciBwcmVjZWRlbmNlXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZXMgaW4gUHl0aG9uLFxuZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBjb21wYXJpc29ucywgaW5jbHVkaW5nXG50ZXN0cywgd2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgY2hhaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0XG4tLS0gc2VlIHNlY3Rpb24gKkNvbXBhcmlzb25zKiAtLS0gYW5kIGV4cG9uZW50aWF0aW9uLCB3aGljaCBncm91cHNcbmZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBsYW1iZGFgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpZmBgIC0tIGBgZWxzZWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBvcmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBhbmRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBub3RgYCBgYHhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpbmBgLCBgYG5vdCBpbmBgLCBgYGlzYGAsIGBgaXMgbm90YGAsIGBgPGBgLCAgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgYGA8PWBgLCBgYD5gYCwgYGA+PWBgLCBgYCE9YGAsIGBgPT1gYCAgICAgICAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB8YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBeYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAmYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGA8PGBgLCBgYD4+YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAreGBgLCBgYC14YGAsIGBgfnhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB4W2luZGV4XWBgLCBgYHhbaW5kZXg6aW5kZXhdYGAsICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAoZXhwcmVzc2lvbnMuLi4pYGAsIGBgW2V4cHJlc3Npb25zLi4uXWBgLCAgICAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgYGB7a2V5OiB2YWx1ZS4uLn1gYCwgYGB7ZXhwcmVzc2lvbnMuLi59YGAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSBgYGFicyh4JXkpIDwgYWJzKHkpYGAgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0cyBpdFxuICAgIG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCBgYC0xZS0xMDAgJSAxZTEwMGBgIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzIGBgMWUxMDBgYCwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyBgYC0xZS0xMDAgKyAxZTEwMGBgLFxuICAgIHdoaWNoIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gYGAxZTEwMGBgLiAgVGhlIGZ1bmN0aW9uXG4gICAgYGBtYXRoLmZtb2QoKWBgIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mXG4gICAgdGhlIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zIGBgLTFlLTEwMGBgIGluIHRoaXNcbiAgICBjYXNlLiBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlXG4gICAgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciBgYHgvL3lgYCB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gYGAoeC14JXkpLy95YGAgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0IGBgZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHlgYCBiZSB2ZXJ5XG4gICAgY2xvc2UgdG8gYGB4YGAuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZSBsZXZlbCxcbiAgICB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nc1xuICAgIGBgIlxcdTAwQzciYGAgYW5kIGBgIlxcdTAzMjdcXHUwMDQzImBgIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGUgZHluYW1pY1xuICAgIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWwgYmVoYXZpb3VyXG4gICAgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSBgYGlzYGAgb3BlcmF0b3IsIGxpa2UgdGhvc2UgaW52b2x2aW5nXG4gICAgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuICBDaGVjayB0aGVpclxuICAgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSBgYCVgYCBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciBgYCoqYGAgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpYyBvclxuICAgIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCBgYDIqKi0xYGAgaXNcbiAgICBgYDAuNWBgLlxuJywKICAncGFzcyc6ICdcblRoZSBgYHBhc3NgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuYGBwYXNzYGAgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCiAgJ3Bvd2VyJzogJ1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogYGAtMSoqMmBgIHJlc3VsdHMgaW4gYGAtMWBgLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gYGBwb3coKWBgXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG5gYDEwKioyYGAgcmV0dXJucyBgYDEwMGBgLCBidXQgYGAxMCoqLTJgYCByZXR1cm5zIGBgMC4wMWBgLlxuXG5SYWlzaW5nIGBgMC4wYGAgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGFcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYC4gUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXJcbnJlc3VsdHMgaW4gYSBgYGNvbXBsZXhgYCBudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhXG5gYFZhbHVlRXJyb3JgYC4pXG4nLAogICdyYWlzZSc6ICdcblRoZSBgYHJhaXNlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCBgYHJhaXNlYGAgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgYGBSdW50aW1lRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbnRoYXQgdGhpcyBpcyBhbiBlcnJvci5cblxuT3RoZXJ3aXNlLCBgYHJhaXNlYGAgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbmBgQmFzZUV4Y2VwdGlvbmBgLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZSwgd2hpY2hcbmlzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgaW5cbm9uZSBzdGVwIHVzaW5nIHRoZSBgYHdpdGhfdHJhY2ViYWNrKClgYCBleGNlcHRpb24gbWV0aG9kICh3aGljaFxucmV0dXJucyB0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzXG5hcmd1bWVudCksIGxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgYGBmcm9tYGAgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZVxuc2Vjb25kICpleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaFxud2lsbCB0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSBgYF9fY2F1c2VfX2BgXG5hdHRyaWJ1dGUgKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdFxuaGFuZGxlZCwgYm90aCBleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkEgc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZVxuYW4gZXhjZXB0aW9uIGhhbmRsZXI6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXMgdGhlbiBhdHRhY2hlZCBhcyB0aGVcbm5ldyBleGNlcHRpb25cJ3MgYGBfX2NvbnRleHRfX2BgIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKICAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZVxuZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGAgdG8gYmUgcmFpc2VkLiBUaGVcbnJldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG5gYFN0b3BJdGVyYXRpb25gYCBhbmQgYmVjb21lcyB0aGUgYGBTdG9wSXRlcmF0aW9uLnZhbHVlYGAgYXR0cmlidXRlLlxuJywKLSAnc2VxdWVuY2UtdHlwZXMnOiAiXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoIGBgMCA8PSBrIDwgTmBgXG53aGVyZSAqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoXG5kZWZpbmUgYSByYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlXG50aGUgbWV0aG9kcyBgYGtleXMoKWBgLCBgYHZhbHVlcygpYGAsIGBgaXRlbXMoKWBgLCBgYGdldCgpYGAsXG5gYGNsZWFyKClgYCwgYGBzZXRkZWZhdWx0KClgYCwgYGBwb3AoKWBgLCBgYHBvcGl0ZW0oKWBgLCBgYGNvcHkoKWBgLFxuYW5kIGBgdXBkYXRlKClgYCBiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuJ3QgZGVmaW5lIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kIGFuZCB3aG9zZSBgYF9fbGVuX18oKWBgXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy4gIEFcbiAgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGhcbiAgYGBOb25lYGAuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiBgYHNlbGZba2V5XWBgLiBGb3Igc2VxdWVuY2VcbiAgIHR5cGVzLCB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlXG4gICBjbGFzcyB3aXNoZXMgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZVxuICAgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLiBJZiAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsXG4gICBgYFR5cGVFcnJvcmBgIG1heSBiZSByYWlzZWQ7IGlmIG9mIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mXG4gICBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mXG4gICBuZWdhdGl2ZSB2YWx1ZXMpLCBgYEluZGV4RXJyb3JgYCBzaG91bGQgYmUgcmFpc2VkLiBGb3IgbWFwcGluZ1xuICAgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGUgY29udGFpbmVyKSwgYGBLZXlFcnJvcmBgXG4gICBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiBgYGZvcmBgIGxvb3BzIGV4cGVjdCB0aGF0IGFuIGBgSW5kZXhFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgYGBfX2dldGl0ZW1fXygpYGBcbiAgIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCBgYGtleXMoKWBgLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgYGBfX3JldmVyc2VkX18oKWBgIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZVxuICAgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlXG4gICBwcm90b2NvbCAoYGBfX2xlbl9fKClgYCBhbmQgYGBfX2dldGl0ZW1fXygpYGApLiAgT2JqZWN0cyB0aGF0XG4gICBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbCBzaG91bGQgb25seSBwcm92aWRlXG4gICBgYF9fcmV2ZXJzZWRfXygpYGAgaWYgdGhleSBjYW4gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzXG4gICBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnkgYGByZXZlcnNlZCgpYGAuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzIChgYGluYGAgYW5kIGBgbm90IGluYGApIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4iLAorICdzZXF1ZW5jZS10eXBlcyc6ICJcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggYGAwIDw9IGsgPCBOYGBcbndoZXJlICpOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2hcbmRlZmluZSBhIHJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGVcbnRoZSBtZXRob2RzIGBga2V5cygpYGAsIGBgdmFsdWVzKClgYCwgYGBpdGVtcygpYGAsIGBgZ2V0KClgYCxcbmBgY2xlYXIoKWBgLCBgYHNldGRlZmF1bHQoKWBgLCBgYHBvcCgpYGAsIGBgcG9waXRlbSgpYGAsIGBgY29weSgpYGAsXG5hbmQgYGB1cGRhdGUoKWBgIGJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmcncyBrZXlzOyBmb3JcbnNlcXVlbmNlcywgaXQgc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9faXRlcl9fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZVxuY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsIGBgX19pdGVyX18oKWBgIHNob3VsZCBiZSB0aGUgc2FtZSBhc1xuYGBrZXlzKClgYDsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsdWVzLlxuXG5vYmplY3QuX19sZW5fXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGAuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgYGA+PWBgIDAuICBBbHNvLCBhbiBvYmplY3RcbiAgIHRoYXQgZG9lc24ndCBkZWZpbmUgYSBgYF9fYm9vbF9fKClgYCBtZXRob2QgYW5kIHdob3NlIGBgX19sZW5fXygpYGBcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGBgb3BlcmF0b3IubGVuZ3RoX2hpbnQoKWBgLiBTaG91bGQgcmV0dXJuIGFuXG4gICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciBvciBsZXNzIHRoYW5cbiAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgYGA+PWBgIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy4gIEFcbiAgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGhcbiAgYGBOb25lYGAuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiBgYHNlbGZba2V5XWBgLiBGb3Igc2VxdWVuY2VcbiAgIHR5cGVzLCB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlXG4gICBjbGFzcyB3aXNoZXMgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZVxuICAgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLiBJZiAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsXG4gICBgYFR5cGVFcnJvcmBgIG1heSBiZSByYWlzZWQ7IGlmIG9mIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mXG4gICBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mXG4gICBuZWdhdGl2ZSB2YWx1ZXMpLCBgYEluZGV4RXJyb3JgYCBzaG91bGQgYmUgcmFpc2VkLiBGb3IgbWFwcGluZ1xuICAgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGUgY29udGFpbmVyKSwgYGBLZXlFcnJvcmBgXG4gICBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiBgYGZvcmBgIGxvb3BzIGV4cGVjdCB0aGF0IGFuIGBgSW5kZXhFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgYGBfX2dldGl0ZW1fXygpYGBcbiAgIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCBgYGtleXMoKWBgLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgYGBfX3JldmVyc2VkX18oKWBgIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZVxuICAgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlXG4gICBwcm90b2NvbCAoYGBfX2xlbl9fKClgYCBhbmQgYGBfX2dldGl0ZW1fXygpYGApLiAgT2JqZWN0cyB0aGF0XG4gICBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbCBzaG91bGQgb25seSBwcm92aWRlXG4gICBgYF9fcmV2ZXJzZWRfXygpYGAgaWYgdGhleSBjYW4gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzXG4gICBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnkgYGByZXZlcnNlZCgpYGAuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzIChgYGluYGAgYW5kIGBgbm90IGluYGApIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4iLAogICdzaGlmdGluZyc6ICdcblNoaWZ0aW5nIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG5vcGVyYXRpb25zOlxuXG4gICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcblxuVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSBmaXJzdFxuYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZVxuc2Vjb25kIGFyZ3VtZW50LlxuXG5BIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZGl2aXNpb24gYnkgYGBwb3coMixuKWBgLiAgQVxubGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggYGBwb3coMixuKWBgLlxuXG5Ob3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpcyByZXF1aXJlZCB0b1xuICBiZSBhdCBtb3N0IGBgc3lzLm1heHNpemVgYC4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgbGFyZ2VyXG4gIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFuIGBgT3ZlcmZsb3dFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICdzbGljaW5ncyc6ICdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciBgYGRlbGBgIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhXG5zbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZVxudG8gYSBtYXBwaW5nIG9iamVjdCwgYW5kIGl0IGlzIGluZGV4ZWQgKHVzaW5nIHRoZSBzYW1lXG5gYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhIGtleSB0aGF0IGlzXG5jb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbmBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nIGBgTm9uZWBgIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKICAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgc3RyKG9iamVjdClgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGZvcm1hdCgpYGBcbiAgIGFuZCBgYHByaW50KClgYCB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGVcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgKnN0cmluZyogb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYGBvYmplY3QuX19yZXByX18oKWBgIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgYGBfX3N0cl9fKClgYCByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgYGBvYmplY3RgYFxuICAgY2FsbHMgYGBvYmplY3QuX19yZXByX18oKWBgLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIGFuZCBkb2VzIG5vdCBkZWZpbmVcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgaGF2ZSBpdHMgYGBfX2hhc2hfXygpYGAgaW1wbGljaXRseSBzZXQgdG9cbiAgIGBgTm9uZWBgLiAgV2hlbiB0aGUgYGBfX2hhc2hfXygpYGAgbWV0aG9kIG9mIGEgY2xhc3MgaXMgYGBOb25lYGAsXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgYGBUeXBlRXJyb3JgYCB3aGVuXG4gICBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZVxuICAgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosXG4gICBjb2xsZWN0aW9ucy5IYXNoYWJsZWBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSBgYF9fZXFfXygpYGAgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biBgYF9faGFzaF9fKClgYCB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhIGBgVHlwZUVycm9yYGAgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZFxuICAgYXMgaGFzaGFibGUgYnkgYW4gYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlIGBgX19oYXNoX18oKWBgIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZVxuICAgICBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvIGBgUFlUSE9OSEFTSFNFRURgYC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cblxuXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgYGB4Lm5hbWVgYClcbmZvciBjbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yIGBgc2VsZmBgKS4gIGBgbmFtZWBgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlXG4gICBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgYGBfX2dldGF0dHJfXygpYGAgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiBgYF9fZ2V0YXR0cl9fKClgYCBhbmQgYGBfX3NldGF0dHJfXygpYGAuKSBUaGlzIGlzIGRvbmUgYm90aFxuICAgZm9yIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgYGBfX2dldGF0dHJfXygpYGBcbiAgIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGVcbiAgIHRoYXQgYXQgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnlcbiAgIG5vdCBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lc1xuICAgYGBfX2dldGF0dHJfXygpYGAsIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzc1xuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBlaXRoZXIgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKVxuICAgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uIEluIG9yZGVyXG4gICB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvblxuICAgc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG9cbiAgIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpYGAuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzXG4gICAgIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4IG9yXG4gICAgIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmIGBgX19zZXRhdHRyX18oKWBgIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKWBgLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSBgYF9fc2V0YXR0cl9fKClgYCBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiBgYGRlbCBvYmoubmFtZWBgIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiBgYGRpcigpYGAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuIGBgZGlyKClgYCBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgYGBfX2RpY3RfX2BgLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgYGBOb25lYGAgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgLCBhbmRcbmBgX19kZWxldGVfXygpYGAuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsXG5pdCBpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsIGBgYS54YGAgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoIGBgYS5fX2RpY3RfX1tcJ3hcJ11gYCwgdGhlblxuYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXWBgLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbmBgdHlwZShhKWBgIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgYGBhLnhgYC5cbkhvdyB0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiBgYGFgYDpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgYGB4Ll9fZ2V0X18oYSlgYC5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsIGBgYS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6IGBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKWBgLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsIGBgQS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgIGBgQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKWBgLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiBgYGFgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHN1cGVyYGAsIHRoZW4gdGhlIGJpbmRpbmcgYGBzdXBlcihCLFxuICAgb2JqKS5tKClgYCBzZWFyY2hlcyBgYG9iai5fX2NsYXNzX18uX19tcm9fX2BgIGZvciB0aGUgYmFzZSBjbGFzc1xuICAgYGBBYGAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGBgQmBgIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3JcbiAgIHdpdGggdGhlIGNhbGw6IGBgQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pYGAuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAgYW5kIGBgX19kZWxldGVfXygpYGAuXG5JZiBpdCBkb2VzIG5vdCBkZWZpbmUgYGBfX2dldF9fKClgYCwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsXG5yZXR1cm4gdGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGVcbm9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyBgYF9fc2V0X18oKWBgXG5hbmQvb3IgYGBfX2RlbGV0ZV9fKClgYCwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXNcbm5laXRoZXIsIGl0IGlzIGEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzXG5kZWZpbmUgYm90aCBgYF9fZ2V0X18oKWBgIGFuZCBgYF9fc2V0X18oKWBgLCB3aGlsZSBub24tZGF0YVxuZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZSBgYF9fZ2V0X18oKWBgIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aFxuYGBfX3NldF9fKClgYCBhbmQgYGBfX2dldF9fKClgYCBkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvblxuaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluIGNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmVcbm92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nIGBgc3RhdGljbWV0aG9kKClgYCBhbmQgYGBjbGFzc21ldGhvZCgpYGApXG5hcmUgaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSBgYHByb3BlcnR5KClgYCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuLS0tLS0tLS0tXG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZFxuICAgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvclxuICAgZWFjaCBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxufn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzIGBgQXR0cmlidXRlRXJyb3JgYC4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgYGBcJ19fZGljdF9fXCdgYCB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXMgZGVmaW5pbmdcbiAgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbnN0YW5jZXMuIElmIHdlYWtcbiAgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZCBgYFwnX193ZWFrcmVmX19cJ2BgIHRvIHRoZVxuICBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlIGluc3RhbmNlXG4gIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGUgKGV4Y2VwdCBieVxuICByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLiBUaGlzXG4gIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgYGBpbnRgYCwgYGBzdHJgYCBhbmRcbiAgYGB0dXBsZWBgLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3MgbWF5XG4gIGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuXG5cbkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyBgYHR5cGUoKWBgLiBUaGUgY2xhc3MgYm9keVxuaXMgZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvXG50aGUgcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKWBgLlxuXG5UaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXNlZCBieSBwYXNzaW5nIHRoZVxuYGBtZXRhY2xhc3NgYCBrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsIG9yIGJ5XG5pbmhlcml0aW5nIGZyb20gYW4gZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuIGFyZ3VtZW50LiBJblxudGhlIGZvbGxvd2luZyBleGFtcGxlLCBib3RoIGBgTXlDbGFzc2BgIGFuZCBgYE15U3ViY2xhc3NgYCBhcmVcbmluc3RhbmNlcyBvZiBgYE1ldGFgYDpcblxuICAgY2xhc3MgTWV0YSh0eXBlKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKTpcbiAgICAgICBwYXNzXG5cbkFueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbmFyZSBwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGJlbG93LlxuXG5XaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcblxuKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWRcblxuKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkXG5cbiogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWRcblxuKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWRcblxuXG5EZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzXG5mb2xsb3dzOlxuXG4qIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuIGBgdHlwZSgpYGAgaXNcbiAgdXNlZFxuXG4qIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2ZcbiAgYGB0eXBlKClgYCwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcblxuKiBpZiBhbiBpbnN0YW5jZSBvZiBgYHR5cGUoKWBgIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yXG4gIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWRcblxuVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWRcbm1ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuIGBgdHlwZShjbHMpYGApIG9mIGFsbFxuc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGFcbnN1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZVxuY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uXG53aWxsIGZhaWwgd2l0aCBgYFR5cGVFcnJvcmBgLlxuXG5cblByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fYGBcbmF0dHJpYnV0ZSwgaXQgaXMgY2FsbGVkIGFzIGBgbmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsXG5iYXNlcywgKiprd2RzKWBgICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lXG5mcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uKS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gYGBfX3ByZXBhcmVfX2BgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSBgYGRpY3QoKWBgIGluc3RhbmNlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDBcbiAgICAgIEludHJvZHVjZWQgdGhlIGBgX19wcmVwYXJlX19gYCBuYW1lc3BhY2UgaG9va1xuXG5cbkV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyBgYGV4ZWMoYm9keSwgZ2xvYmFscygpLFxubmFtZXNwYWNlKWBgLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvIGBgZXhlYygpYGAgaXNcbnRoYXQgbGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSBtZXRob2RzKSB0b1xucmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSBjbGFzc1xuZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbixcbm1ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGVcbmNsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdFxucGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsXG5mcm9tIHN0YXRpYyBtZXRob2RzLlxuXG5cbkNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzXG5ib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBgYG1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbm5hbWVzcGFjZSwgKiprd2RzKWBgICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgdGhlIHNhbWVcbmFzIHRob3NlIHBhc3NlZCB0byBgYF9fcHJlcGFyZV9fYGApLlxuXG5UaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLVxuYXJndW1lbnQgZm9ybSBvZiBgYHN1cGVyKClgYC4gYGBfX2NsYXNzX19gYCBpcyBhbiBpbXBsaWNpdCBjbG9zdXJlXG5yZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyBib2R5IHJlZmVyXG50byBlaXRoZXIgYGBfX2NsYXNzX19gYCBvciBgYHN1cGVyYGAuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50XG5mb3JtIG9mIGBgc3VwZXIoKWBgIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZFxuYmFzZWQgb24gbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0b1xubWFrZSB0aGUgY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZFxudG8gdGhlIG1ldGhvZC5cblxuQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzXG5kZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuICAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCBgYF9fY2xhc3NfX2BgIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIG1lbWJlcnNcbndlcmUgZGVmaW5lZDpcblxuICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuXG4gICAgICAgIEBjbGFzc21ldGhvZFxuICAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6XG4gICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpXG5cbiAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChuYW1lc3BhY2UpKVxuICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbiAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuXG4gICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcblxuICAgPj4+IEEubWVtYmVyc1xuICAgKFwnX19tb2R1bGVfX1wnLCBcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCcsIFwnZm91clwnKVxuXG5XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgYmVnaW5zXG53aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyBgYF9fcHJlcGFyZV9fKClgYCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHNcbmFuZCBhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCBnZXRzXG5pbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlIG9yZGVyZWRcbmRpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkIGBgbWVtYmVyc2BgLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuYGBpc2luc3RhbmNlKClgYCBhbmQgYGBpc3N1YmNsYXNzKClgYCBidWlsdC1pbiBmdW5jdGlvbnMuXG5cbkluIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgYGBhYmMuQUJDTWV0YWBgIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kc1xuaW4gb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcylgYC5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpYGAuXG5cbk5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgKG1ldGFjbGFzcykgb2YgYVxuY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlIGFjdHVhbCBjbGFzcy5cblRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZFxub24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbiAgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyBgYGlzaW5zdGFuY2UoKWBgIGFuZFxuICAgICAgYGBpc3N1YmNsYXNzKClgYCBiZWhhdmlvciB0aHJvdWdoIGBgX19pbnN0YW5jZWNoZWNrX18oKWBgIGFuZFxuICAgICAgYGBfX3N1YmNsYXNzY2hlY2tfXygpYGAsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5XG4gICAgICBpbiB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlIGBgYWJjYGBcbiAgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsIGBgeChhcmcxLCBhcmcyLCAuLi4pYGAgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICBgYHguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKWBgLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggYGAwIDw9IGsgPCBOYGBcbndoZXJlICpOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2hcbmRlZmluZSBhIHJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGVcbnRoZSBtZXRob2RzIGBga2V5cygpYGAsIGBgdmFsdWVzKClgYCwgYGBpdGVtcygpYGAsIGBgZ2V0KClgYCxcbmBgY2xlYXIoKWBgLCBgYHNldGRlZmF1bHQoKWBgLCBgYHBvcCgpYGAsIGBgcG9waXRlbSgpYGAsIGBgY29weSgpYGAsXG5hbmQgYGB1cGRhdGUoKWBgIGJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2VzblwndCBkZWZpbmUgYSBgYF9fYm9vbF9fKClgYCBtZXRob2QgYW5kIHdob3NlIGBgX19sZW5fXygpYGBcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLiAgQVxuICBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aFxuICBgYE5vbmVgYC5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mIGBgc2VsZltrZXldYGAuIEZvciBzZXF1ZW5jZVxuICAgdHlwZXMsIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGVcbiAgIGNsYXNzIHdpc2hlcyB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlXG4gICBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuIElmICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSxcbiAgIGBgVHlwZUVycm9yYGAgbWF5IGJlIHJhaXNlZDsgaWYgb2YgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2ZcbiAgIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55IHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2ZcbiAgIG5lZ2F0aXZlIHZhbHVlcyksIGBgSW5kZXhFcnJvcmBgIHNob3VsZCBiZSByYWlzZWQuIEZvciBtYXBwaW5nXG4gICB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZSBjb250YWluZXIpLCBgYEtleUVycm9yYGBcbiAgIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6IGBgZm9yYGAgbG9vcHMgZXhwZWN0IHRoYXQgYW4gYGBJbmRleEVycm9yYGAgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSBgYF9fZ2V0aXRlbV9fKClgYFxuICAgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvIGJlIG1hZGVcbiAgIGF2YWlsYWJsZSBhcyB0aGUgbWV0aG9kIGBga2V5cygpYGAuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSBgYF9fcmV2ZXJzZWRfXygpYGAgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlXG4gICBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2VcbiAgIHByb3RvY29sIChgYF9fbGVuX18oKWBgIGFuZCBgYF9fZ2V0aXRlbV9fKClgYCkuICBPYmplY3RzIHRoYXRcbiAgIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sIHNob3VsZCBvbmx5IHByb3ZpZGVcbiAgIGBgX19yZXZlcnNlZF9fKClgYCBpZiB0aGV5IGNhbiBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgaXNcbiAgIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieSBgYHJldmVyc2VkKClgYC5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKGBgaW5gYCBhbmQgYGBub3QgaW5gYCkgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCxcbiAgIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kc1xuICAgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kXG4gICByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLFxuICAgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkXG4gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXhlY3V0ZSB0aGUgc3RhdGVtZW50IGBgeCArPSB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2lhZGRfXyh5KWBgIGlzXG4gICBjYWxsZWQuICBJZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGRvZXMgbm90IGRlZmluZSBhXG4gICBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGAtYGAsIGBgK2BgLFxuICAgYGBhYnMoKWBgIGFuZCBgYH5gYCkuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBjb21wbGV4KClgYCxcbiAgIGBgaW50KClgYCwgYGBmbG9hdCgpYGAgYW5kIGBgcm91bmQoKWBgLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mXG4gICB0aGUgYXBwcm9wcmlhdGUgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGBgb3BlcmF0b3IuaW5kZXgoKWBgLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGVcbiAgIGJ1aWx0LWluIGBgYmluKClgYCwgYGBoZXgoKWBgIGFuZCBgYG9jdCgpYGAgZnVuY3Rpb25zKS4gTXVzdCByZXR1cm5cbiAgIGFuIGludGVnZXIuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSBgYHdpdGhgYCBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0XG5tYW5hZ2VyIGhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lXG5jb250ZXh0IGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmVcbm5vcm1hbGx5IGludm9rZWQgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb25cbipUaGUgd2l0aCBzdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXJcbm1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIGBgd2l0aGBgXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlIGBgYXNgYCBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSBgYE5vbmVgYC5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgYGBfX2V4aXRfXygpYGAgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyBgYF9faGFzaF9fKClgYCBhbmQgYGBfX3JlcHJfXygpYGAgdGhhdCBhcmUgaW1wbGVtZW50ZWRcbmJ5IGFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mXG50aGVzZSBtZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsXG53aGVuIGludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uXG5wcm92aWRlcyBzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlXG5pbnRlcnByZXRlciwgYXQgdGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2ZcbnNwZWNpYWwgbWV0aG9kcyAodGhlIHNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdFxuaXRzZWxmIGluIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSwgdW5kZXJcbiAgICBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2QgaWRlYVxuICAgIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzXG4gICAgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzIGBgX19hZGRfXygpYGApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXNcbiAgICBub3Qgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogJ1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucywgYWxvbmcgd2l0aFxudGhlIGFkZGl0aW9uYWwgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuXG5cblN0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYVxubGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgYGBzdHIuZm9ybWF0KClgYCxcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpTdHJpbmcgRm9ybWF0dGluZyopIGFuZCB0aGUgb3RoZXIgYmFzZWQgb25cbkMgYGBwcmludGZgYCBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mIHR5cGVzXG5hbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yIHRoZVxuY2FzZXMgaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuXG5UaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnNcbmEgbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllc1xuKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgYGByZWBgIG1vZHVsZSkuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jYXNlZm9sZCgpXG5cbiAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlXG4gICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cblxuICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSBhZ2dyZXNzaXZlIGJlY2F1c2VcbiAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSBzdHJpbmcuIEZvclxuICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyIGBgXCdceGMzXHg5ZlwnYGAgaXMgZXF1aXZhbGVudCB0b1xuICAgYGAic3MiYGAuIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCBgYGxvd2VyKClgYCB3b3VsZCBkb1xuICAgbm90aGluZyB0byBgYFwnXHhjM1x4OWZcJ2BgOyBgYGNhc2Vmb2xkKClgYCBjb252ZXJ0cyBpdCB0byBgYCJzcyJgYC5cblxuICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGEgc3BhY2UpLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gT3RoZXJcbiAgIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGBcJ2lnbm9yZVwnYGAsIGBgXCdyZXBsYWNlXCdgYCxcbiAgIGBgXCd4bWxjaGFycmVmcmVwbGFjZVwnYGAsIGBgXCdiYWNrc2xhc2hyZXBsYWNlXCdgYCBhbmQgYW55IG90aGVyIG5hbWVcbiAgIHJlZ2lzdGVyZWQgdmlhIGBgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKClgYCwgc2VlIHNlY3Rpb24gKkNvZGVjIEJhc2VcbiAgIENsYXNzZXMqLiBGb3IgYSBsaXN0IG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkXG4gICBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mXG4gICBzdWZmaXhlcyB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXRcbiAgIHRoYXQgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnMoW3RhYnNpemVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgemVybyBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRoZSBjb2x1bW4gbnVtYmVyIGlzIHJlc2V0IHRvIHplcm8gYWZ0ZXIgZWFjaFxuICAgbmV3bGluZSBvY2N1cnJpbmcgaW4gdGhlIHN0cmluZy4gSWYgKnRhYnNpemUqIGlzIG5vdCBnaXZlbiwgYSB0YWJcbiAgIHNpemUgb2YgYGA4YGAgY2hhcmFjdGVycyBpcyBhc3N1bWVkLiAgVGhpcyBkb2VzblwndCB1bmRlcnN0YW5kIG90aGVyXG4gICBub24tcHJpbnRpbmcgY2hhcmFjdGVycyBvciBlc2NhcGUgc2VxdWVuY2VzLlxuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgYGBmaW5kKClgYCBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93IHRoZVxuICAgICBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCwgdXNlXG4gICAgIHRoZSBgYGluYGAgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyBgYHt9YGAuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLCBleGNlcHQgdGhhdCBgYG1hcHBpbmdgYCBpc1xuICAgdXNlZCBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhIGBgZGljdGBgIC4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvclxuICAgZXhhbXBsZSBgYG1hcHBpbmdgYCBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgZmluZCgpYGAsIGJ1dCByYWlzZSBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlclxuICAgYGBjYGAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgYGBUcnVlYGA6XG4gICBgYGMuaXNhbHBoYSgpYGAsIGBgYy5pc2RlY2ltYWwoKWBgLCBgYGMuaXNkaWdpdCgpYGAsIG9yXG4gICBgYGMuaXNudW1lcmljKClgYC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gYGByZXByKClgYCBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvIGBgc3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSBgYFR5cGVFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyBgYGJ5dGVzYGAgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiAgVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgIGBgTm9uZWBgLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yXG4gICBzcGxpdHRpbmcgZnJvbSB0aGUgcmlnaHQsIGBgcnNwbGl0KClgYCBiZWhhdmVzIGxpa2UgYGBzcGxpdCgpYGBcbiAgIHdoaWNoIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgIFwnICAgc3BhY2lvdXNcJ1xuICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCBgYG1heHNwbGl0KzFgYFxuICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yIGBgLTFgYCwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiBUaGlzIG1ldGhvZCB1c2VzIHRoZSAqdW5pdmVyc2FsIG5ld2xpbmVzKiBhcHByb2FjaCB0b1xuICAgc3BsaXR0aW5nIGxpbmVzLiBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKClgYCByZXR1cm5zXG4gICBgYFtcJ2FiIGNcJywgXCdcJywgXCdkZSBmZ1wnLCBcJ2tsXCddYGAsIHdoaWxlIHRoZSBzYW1lIGNhbGwgd2l0aFxuICAgYGBzcGxpdGxpbmVzKFRydWUpYGAgcmV0dXJucyBgYFtcJ2FiIGNcXG5cJywgXCdcXG5cJywgXCdkZSBmZ1xcclwnLFxuICAgXCdrbFxcclxcblwnXWBgLlxuXG4gICBVbmxpa2UgYGBzcGxpdCgpYGAgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgZ2l2ZW4sIHRoaXNcbiAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhIHRlcm1pbmFsXG4gICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4gICBgYHMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHNgYC5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uIG9mIGFcbiAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiB3b3JrcyBpblxuICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiBjb250cmFjdGlvbnMgYW5kXG4gICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgZGVzaXJlZFxuICAgcmVzdWx0OlxuXG4gICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcblxuICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgcmVndWxhclxuICAgZXhwcmVzc2lvbnM6XG5cbiAgICAgID4+PiBpbXBvcnQgcmVcbiAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuICAgICAgLi4uXG4gICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbiAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuXG5zdHIudHJhbnNsYXRlKG1hcClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgKnMqIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlICptYXAqIHdoaWNoIG11c3QgYmUgYSBkaWN0aW9uYXJ5IG9mIFVuaWNvZGUgb3JkaW5hbHNcbiAgIChpbnRlZ2VycykgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBgYE5vbmVgYC4gIFVubWFwcGVkXG4gICBjaGFyYWN0ZXJzIGFyZSBsZWZ0IHVudG91Y2hlZC4gQ2hhcmFjdGVycyBtYXBwZWQgdG8gYGBOb25lYGAgYXJlXG4gICBkZWxldGVkLlxuXG4gICBZb3UgY2FuIHVzZSBgYHN0ci5tYWtldHJhbnMoKWBgIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIG1hcCBmcm9tXG4gICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuXG4gICBOb3RlOiBBbiBldmVuIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tIGNoYXJhY3RlclxuICAgICBtYXBwaW5nIGNvZGVjIHVzaW5nIHRoZSBgYGNvZGVjc2BgIG1vZHVsZSAoc2VlXG4gICAgIGBgZW5jb2RpbmdzLmNwMTI1MWBgIGZvciBhbiBleGFtcGxlKS5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0XG4gICBiZSBgYEZhbHNlYGAgaWYgYGBzYGAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG4gICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgYGxlbihzKWBgLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkIGBgX19nZXRpdGVtX18oKWBgLCBhbmQgYGB4YGAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhpc1xuY2xhc3MsIHRoZW4gYGB4W2ldYGAgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIGBgdHlwZSh4KS5fX2dldGl0ZW1fXyh4LFxuaSlgYC4gIEV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlXG5hbiBleGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG5gYEF0dHJpYnV0ZUVycm9yYGAgb3IgYGBUeXBlRXJyb3JgYCkuXG5cbldoZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgaXQgaXNcbmltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgZGVncmVlIHRoYXQgaXRcbm1ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsIHNvbWVcbnNlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgZWxlbWVudHMsIGJ1dFxuZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZVxuYGBOb2RlTGlzdGBgIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgYGBfX25ld19fKClgYCBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiBgYF9fbmV3X18oKWBgIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseVxuICAgYW4gaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCB1c2luZ1xuICAgYGBzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKWBgIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICBgYF9faW5pdF9fKHNlbGZbLCAuLi5dKWBgLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgLlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgYGBfX25ld19fKClgYCBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZC4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICBgYF9faW5pdF9fKClgYCBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCxcbiAgIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZlxuICAgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgYGBCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKWBgLiAgQXMgYSBzcGVjaWFsIGNvbnN0cmFpbnRcbiAgIG9uIGNvbnN0cnVjdG9ycywgbm8gdmFsdWUgbWF5IGJlIHJldHVybmVkOyBkb2luZyBzbyB3aWxsIGNhdXNlIGFcbiAgIGBgVHlwZUVycm9yYGAgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgYGBfX2RlbF9fKClgYCBtZXRob2QsXG4gICB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9fZGVsX18oKWBgIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHlcbiAgIGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZVxuICAgaW5zdGFuY2UuICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3JcbiAgIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogYGBkZWwgeGBgIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgYGB4Ll9fZGVsX18oKWBgIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYGB4YGAgYnkgb25lLCBhbmQgdGhlIGxhdHRlclxuICAgICBpcyBvbmx5IGNhbGxlZCB3aGVuIGBgeGBgXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lXG4gICAgIGNvbW1vbiBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhblxuICAgICBvYmplY3QgZnJvbSBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlblxuICAgICBvYmplY3RzIChlLmcuLCBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aFxuICAgICBwYXJlbnQgYW5kIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGVcbiAgICAgc3RhY2sgZnJhbWUgb2YgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2tcbiAgICAgc3RvcmVkIGluIGBgc3lzLmV4Y19pbmZvKClbMl1gYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvclxuICAgICBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhblxuICAgICB1bmhhbmRsZWQgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nIGBgTm9uZWBgIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuIENpcmN1bGFyIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlXG4gICAgIGRldGVjdGVkIGFuZCBjbGVhbmVkIHVwIHdoZW4gdGhlIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpc1xuICAgICBlbmFibGVkIChpdFwncyBvbiBieSBkZWZhdWx0KS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgc3RyKG9iamVjdClgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGZvcm1hdCgpYGBcbiAgIGFuZCBgYHByaW50KClgYCB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGVcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgKnN0cmluZyogb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYGBvYmplY3QuX19yZXByX18oKWBgIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgYGBfX3N0cl9fKClgYCByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgYGBvYmplY3RgYFxuICAgY2FsbHMgYGBvYmplY3QuX19yZXByX18oKWBgLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6IGBgaGFzaCgpYGAgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwncyBjdXN0b21cbiAgICAgYGBfX2hhc2hfXygpYGAgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgYGBQeV9zc2l6ZV90YGAuICBUaGlzIGlzXG4gICAgIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0IGJ1aWxkcy5cbiAgICAgSWYgYW4gb2JqZWN0XCdzICAgYGBfX2hhc2hfXygpYGAgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzIG9mXG4gICAgIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbCBzdXBwb3J0ZWRcbiAgICAgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoIGBgcHl0aG9uIC1jICJpbXBvcnQgc3lzO1xuICAgICBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSJgYFxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBhbmQgZG9lcyBub3QgZGVmaW5lXG4gICBgYF9faGFzaF9fKClgYCB3aWxsIGhhdmUgaXRzIGBgX19oYXNoX18oKWBgIGltcGxpY2l0bHkgc2V0IHRvXG4gICBgYE5vbmVgYC4gIFdoZW4gdGhlIGBgX19oYXNoX18oKWBgIG1ldGhvZCBvZiBhIGNsYXNzIGlzIGBgTm9uZWBgLFxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGBgVHlwZUVycm9yYGAgd2hlblxuICAgYSBwcm9ncmFtIGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmVcbiAgIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyBgYGlzaW5zdGFuY2Uob2JqLFxuICAgY29sbGVjdGlvbnMuSGFzaGFibGVgYCkuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIGBgX19oYXNoX18oKWBgIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZVxuICAgaW50ZXJwcmV0ZXIgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nIGBgX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfX2BgLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgYGBfX2VxX18oKWBgIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzc1xuICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gYGBfX2hhc2hfXygpYGAgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSBgYFR5cGVFcnJvcmBgIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWRcbiAgIGFzIGhhc2hhYmxlIGJ5IGFuIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgIGNhbGwuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSBgYF9faGFzaF9fKClgYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWVcbiAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyBgYFBZVEhPTkhBU0hTRUVEYGAuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiBgYGRpcigpYGAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgYGB0eXBlKClgYC4gVGhlIGNsYXNzIGJvZHlcbmlzIGV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0b1xudGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSlgYC5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbmBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCBgYE15Q2xhc3NgYCBhbmQgYGBNeVN1YmNsYXNzYGAgYXJlXG5pbnN0YW5jZXMgb2YgYGBNZXRhYGA6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiBgYHR5cGUoKWBgIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gIGBgdHlwZSgpYGAsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgYGB0eXBlKClgYCBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiBgYHR5cGUoY2xzKWBgKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggYGBUeXBlRXJyb3JgYC5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgYGBfX3ByZXBhcmVfX2BgXG5hdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZCBhcyBgYG5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLFxuYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZVxuZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgYGBkaWN0KClgYCBpbnN0YW5jZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG4gICAgICBJbnRyb2R1Y2VkIHRoZSBgYF9fcHJlcGFyZV9fYGAgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgYGBleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSlgYC4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byBgYGV4ZWMoKWBgIGlzXG50aGF0IGxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYGBtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcylgYCAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gYGBfX3ByZXBhcmVfX2BgKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgYGBzdXBlcigpYGAuIGBgX19jbGFzc19fYGAgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyIGBgX19jbGFzc19fYGAgb3IgYGBzdXBlcmBgLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudFxuZm9ybSBvZiBgYHN1cGVyKClgYCB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWRcbmJhc2VkIG9uIGxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG9cbm1ha2UgdGhlIGN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWRcbnRvIHRoZSBtZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbiAgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlIHJlZmVyZW5jZVxuXG5cbk1ldGFjbGFzcyBleGFtcGxlXG4tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlXG5iZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWNcbmRlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kXG5hdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG5cbkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbmBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYCB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyBtZW1iZXJzXG53ZXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX3ByZXBhcmVfXygpYGAgbWV0aG9kIHdoaWNoIHJldHVybnMgYW5cbmVtcHR5IGBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYC4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzXG5hbmQgYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCBgYG1lbWJlcnNgYC5cblxuXG5DdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGVcbmBgaXNpbnN0YW5jZSgpYGAgYW5kIGBgaXNzdWJjbGFzcygpYGAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzIGBgYWJjLkFCQ01ldGFgYCBpbXBsZW1lbnRzIHRoZXNlIG1ldGhvZHNcbmluIG9yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGFzXG4idmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgYnVpbHQtaW5cbnR5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG5cbmNsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKWBgLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4gICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgYGBpc2luc3RhbmNlKClgYCBhbmRcbiAgICAgIGBgaXNzdWJjbGFzcygpYGAgYmVoYXZpb3IgdGhyb3VnaCBgYF9faW5zdGFuY2VjaGVja19fKClgYCBhbmRcbiAgICAgIGBgX19zdWJjbGFzc2NoZWNrX18oKWBgLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eVxuICAgICAgaW4gdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSBgYGFiY2BgXG4gICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCBgYHgoYXJnMSwgYXJnMiwgLi4uKWBgIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgYGB4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLilgYC5cblxuXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoIGBgMCA8PSBrIDwgTmBgXG53aGVyZSAqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoXG5kZWZpbmUgYSByYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlXG50aGUgbWV0aG9kcyBgYGtleXMoKWBgLCBgYHZhbHVlcygpYGAsIGBgaXRlbXMoKWBgLCBgYGdldCgpYGAsXG5gYGNsZWFyKClgYCwgYGBzZXRkZWZhdWx0KClgYCwgYGBwb3AoKWBgLCBgYHBvcGl0ZW0oKWBgLCBgYGNvcHkoKWBgLFxuYW5kIGBgdXBkYXRlKClgYCBiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3JcbnNlcXVlbmNlcywgaXQgc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9faXRlcl9fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZVxuY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsIGBgX19pdGVyX18oKWBgIHNob3VsZCBiZSB0aGUgc2FtZSBhc1xuYGBrZXlzKClgYDsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsdWVzLlxuXG5vYmplY3QuX19sZW5fXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGAuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgYGA+PWBgIDAuICBBbHNvLCBhbiBvYmplY3RcbiAgIHRoYXQgZG9lc25cJ3QgZGVmaW5lIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kIGFuZCB3aG9zZSBgYF9fbGVuX18oKWBgXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBgYG9wZXJhdG9yLmxlbmd0aF9oaW50KClgYC4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyIGBgPj1gYCAwLiBUaGlzXG4gICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgZm9yXG4gICBjb3JyZWN0bmVzcy5cblxuICAgTmV3IGluIHZlcnNpb24gMy40LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSBgYHN0ci5mb3JtYXQoKWBgLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyBgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXNcbmFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlXG5jYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSBgYHJlYGAgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgYGBcJ1x4YzNceDlmXCdgYCBpcyBlcXVpdmFsZW50IHRvXG4gICBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsIGBgbG93ZXIoKWBgIHdvdWxkIGRvXG4gICBub3RoaW5nIHRvIGBgXCdceGMzXHg5ZlwnYGA7IGBgY2FzZWZvbGQoKWBgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiBjaGFyYWN0ZXJzXG4gICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2IGFuZCBzbyBvbikuXG4gICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCB0aGVcbiAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlIGNoYXJhY3RlciBpcyBhXG4gICB0YWIgKGBgXFx0YGApLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGVcbiAgIHJlc3VsdCB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiIHBvc2l0aW9uLlxuICAgKFRoZSB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYVxuICAgbmV3bGluZSAoYGBcXG5gYCkgb3IgcmV0dXJuIChgYFxccmBgKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudFxuICAgY29sdW1uIGlzIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWRcbiAgIGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZVxuICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cblxuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKClcbiAgIFwnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzRcJ1xuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKDQpXG4gICBcJzAxICAwMTIgMDEyMyAgICAwMTIzNFwnXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG4gICBVc2UgYGBrZXl3b3JkLmlza2V5d29yZCgpYGAgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaFxuICAgYXMgYGBkZWZgYCBhbmQgYGBjbGFzc2BgLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgYGAtMWBgLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuIFRoaXMgbWV0aG9kIHVzZXMgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqIGFwcHJvYWNoIHRvXG4gICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKWBgIHJldHVybnNcbiAgIGBgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11gYCwgd2hpbGUgdGhlIHNhbWUgY2FsbCB3aXRoXG4gICBgYHNwbGl0bGluZXMoVHJ1ZSlgYCByZXR1cm5zIGBgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsXG4gICBcJ2tsXFxyXFxuXCddYGAuXG5cbiAgIFVubGlrZSBgYHNwbGl0KClgYCB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgIGBgcy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gc2BgLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4gICAgICAuLi5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAogICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGFcbmBgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmVcbmRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueFwncyB0aGUgYGBcJ3VyXCdgYCBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgYGBcJ3JiXCdgYCBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhc1xuICAgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0gb2YgYGBcJ2JyXCdgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuICAgKGBgdVwndmFsdWVcJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG4gICBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0IGhleFxuICAgZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiB0aGVcbnN0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHN0cmluZyouICAoVGhpc1xuYmVoYXZpb3IgaXMgdXNlZnVsIHdoZW4gZGVidWdnaW5nOiBpZiBhbiBlc2NhcGUgc2VxdWVuY2UgaXMgbWlzdHlwZWQsXG50aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyBhbHNvXG5pbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmdcbmxpdGVyYWxzIGZhbGwgaW50byB0aGUgY2F0ZWdvcnkgb2YgdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yIGJ5dGVzXG5saXRlcmFscy5cblxuRXZlbiBpbiBhIHJhdyBzdHJpbmcsIHN0cmluZyBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCxcbmJ1dCB0aGUgYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHN0cmluZzsgZm9yIGV4YW1wbGUsIGBgciJcXCIiYGAgaXMgYVxudmFsaWQgc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGFcbmRvdWJsZSBxdW90ZTsgYGByIlxcImBgIGlzIG5vdCBhIHZhbGlkIHN0cmluZyBsaXRlcmFsIChldmVuIGEgcmF3XG5zdHJpbmcgY2Fubm90IGVuZCBpbiBhbiBvZGQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzKS4gIFNwZWNpZmljYWxseSwgKmFcbnJhdyBzdHJpbmcgY2Fubm90IGVuZCBpbiBhIHNpbmdsZSBiYWNrc2xhc2gqIChzaW5jZSB0aGUgYmFja3NsYXNoXG53b3VsZCBlc2NhcGUgdGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGVcbmJhY2tzbGFzaCBmb2xsb3dlZCBieSBhIG5ld2xpbmUgaXMgaW50ZXJwcmV0ZWQgYXMgdGhvc2UgdHdvIGNoYXJhY3RlcnNcbmFzIHBhcnQgb2YgdGhlIHN0cmluZywgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCiAgJ3N1YnNjcmlwdGlvbnMnOiAnXG5TdWJzY3JpcHRpb25zXG4qKioqKioqKioqKioqXG5cbkEgc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlIG9yIGxpc3QpXG5vciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG5cbiAgIHN1YnNjcmlwdGlvbiA6Oj0gcHJpbWFyeSAiWyIgZXhwcmVzc2lvbl9saXN0ICJdIlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHN1YnNjcmlwdGlvbixcbmUuZy4gYSBsaXN0IG9yIGRpY3Rpb25hcnkuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gc3VwcG9ydFxuc3Vic2NyaXB0aW9uIGJ5IGRlZmluaW5nIGEgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLlxuXG5Gb3IgYnVpbHQtaW4gb2JqZWN0cywgdGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvYmplY3RzIHRoYXQgc3VwcG9ydFxuc3Vic2NyaXB0aW9uOlxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcsIHRoZSBleHByZXNzaW9uIGxpc3QgbXVzdCBldmFsdWF0ZSB0byBhblxub2JqZWN0IHdob3NlIHZhbHVlIGlzIG9uZSBvZiB0aGUga2V5cyBvZiB0aGUgbWFwcGluZywgYW5kIHRoZVxuc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhhdFxua2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYSB0dXBsZSBleGNlcHQgaWYgaXQgaGFzIGV4YWN0bHkgb25lXG5pdGVtLilcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgZXZhbHVhdGUgdG9cbmFuIGludGVnZXIgb3IgYSBzbGljZSAoYXMgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbikuXG5cblRoZSBmb3JtYWwgc3ludGF4IG1ha2VzIG5vIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBuZWdhdGl2ZSBpbmRpY2VzIGluXG5zZXF1ZW5jZXM7IGhvd2V2ZXIsIGJ1aWx0LWluIHNlcXVlbmNlcyBhbGwgcHJvdmlkZSBhIGBgX19nZXRpdGVtX18oKWBgXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgYGB4Wy0xXWBgIHNlbGVjdHMgdGhlIGxhc3QgaXRlbSBvZlxuYGB4YGApLiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW5cbnRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZVxuaXRlbSB3aG9zZSBpbmRleCBpcyB0aGF0IHZhbHVlIChjb3VudGluZyBmcm9tIHplcm8pLiBTaW5jZSB0aGUgc3VwcG9ydFxuZm9yIG5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3RcJ3NcbmBgX19nZXRpdGVtX18oKWBgIG1ldGhvZCwgc3ViY2xhc3NlcyBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIHdpbGwgbmVlZFxudG8gZXhwbGljaXRseSBhZGQgdGhhdCBzdXBwb3J0LlxuXG5BIHN0cmluZ1wncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhIHNlcGFyYXRlIGRhdGFcbnR5cGUgYnV0IGEgc3RyaW5nIG9mIGV4YWN0bHkgb25lIGNoYXJhY3Rlci5cbicsCiAgJ3RydXRoJzogIlxuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuIGBgaWZgYCBvclxuYGB3aGlsZWBgIGNvbmRpdGlvbiBvciBhcyBvcGVyYW5kIG9mIHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgYmVsb3cuIFRoZVxuZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcblxuKiBgYE5vbmVgYFxuXG4qIGBgRmFsc2VgYFxuXG4qIHplcm8gb2YgYW55IG51bWVyaWMgdHlwZSwgZm9yIGV4YW1wbGUsIGBgMGBgLCBgYDAuMGBgLCBgYDBqYGAuXG5cbiogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgYGAnJ2BgLCBgYCgpYGAsIGBgW11gYC5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsIGBge31gYC5cblxuKiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMsIGlmIHRoZSBjbGFzcyBkZWZpbmVzIGFcbiAgYGBfX2Jvb2xfXygpYGAgb3IgYGBfX2xlbl9fKClgYCBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yIGBgYm9vbGBgIHZhbHVlIGBgRmFsc2VgYC4gWzFdXG5cbkFsbCBvdGhlciB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgdHJ1ZSAtLS0gc28gb2JqZWN0cyBvZiBtYW55IHR5cGVzIGFyZVxuYWx3YXlzIHRydWUuXG5cbk9wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCBhbHdheXNcbnJldHVybiBgYDBgYCBvciBgYEZhbHNlYGAgZm9yIGZhbHNlIGFuZCBgYDFgYCBvciBgYFRydWVgYCBmb3IgdHJ1ZSxcbnVubGVzcyBvdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9uc1xuYGBvcmBgIGFuZCBgYGFuZGBgIGFsd2F5cyByZXR1cm4gb25lIG9mIHRoZWlyIG9wZXJhbmRzLilcbiIsCkBAIC03MSw3ICs3MSw3IEBACiAgJ3R5cGVzbWFwcGluZyc6ICdcbk1hcHBpbmcgVHlwZXMgLS0tIGBgZGljdGBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KCoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cblxuICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSBpcyBjcmVhdGVkLlxuICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgb2JqZWN0LCBhXG4gICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgdGhlIG1hcHBpbmdcbiAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAqaXRlcmF0b3IqXG4gICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuIGl0ZXJhdG9yIHdpdGhcbiAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSBiZWNvbWVzIGEga2V5XG4gICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgY29ycmVzcG9uZGluZ1xuICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGZvciB0aGF0IGtleVxuICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG5cbiAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGVpclxuICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgdmFsdWUgZnJvbVxuICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LlxuXG4gICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsXG4gICB0byBgYHsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9YGA6XG5cbiAgICAgID4+PiBhID0gZGljdChvbmU9MSwgdHdvPTIsIHRocmVlPTMpXG4gICAgICA+Pj4gYiA9IHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyLCBcJ3RocmVlXCc6IDN9XG4gICAgICA+Pj4gYyA9IGRpY3QoemlwKFtcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCddLCBbMSwgMiwgM10pKVxuICAgICAgPj4+IGQgPSBkaWN0KFsoXCd0d29cJywgMiksIChcJ29uZVwnLCAxKSwgKFwndGhyZWVcJywgMyldKVxuICAgICAgPj4+IGUgPSBkaWN0KHtcJ3RocmVlXCc6IDMsIFwnb25lXCc6IDEsIFwndHdvXCc6IDJ9KVxuICAgICAgPj4+IGEgPT0gYiA9PSBjID09IGQgPT0gZVxuICAgICAgVHJ1ZVxuXG4gICBQcm92aWRpbmcga2V5d29yZCBhcmd1bWVudHMgYXMgaW4gdGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3JcbiAgIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzLiAgT3RoZXJ3aXNlLCBhbnkgdmFsaWQga2V5c1xuICAgY2FuIGJlIHVzZWQuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCBgYF9fbWlzc2luZ19fKClgYCwgaWYgdGhlXG4gICAgICBrZXkgKmtleSogaXMgbm90IHByZXNlbnQsIHRoZSBgYGRba2V5XWBgIG9wZXJhdGlvbiBjYWxscyB0aGF0XG4gICAgICBtZXRob2Qgd2l0aCB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uXG4gICAgICB0aGVuIHJldHVybnMgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgIGBgX19taXNzaW5nX18oa2V5KWBgIGNhbGwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudC4gTm8gb3RoZXJcbiAgICAgIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2UgYGBfX21pc3NpbmdfXygpYGAuIElmXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBpcyBub3QgZGVmaW5lZCwgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cbiAgICAgIGBgX19taXNzaW5nX18oKWBgIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhbiBpbnN0YW5jZVxuICAgICAgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFNlZSBgYGNvbGxlY3Rpb25zLkNvdW50ZXJgYCBmb3IgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvblxuICAgICAgaW5jbHVkaW5nIG90aGVyIG1ldGhvZHMgaGVscGZ1bCBmb3IgYWNjdW11bGF0aW5nIGFuZCBtYW5hZ2luZ1xuICAgICAgdGFsbGllcy5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0IGBgZFtrZXldYGAgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgYGBkW2tleV1gYCBmcm9tICpkKi4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZiAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiBgYFRydWVgYCBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlIGBgRmFsc2VgYC5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gYGBub3Qga2V5IGluIGRgYC5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihkLmtleXMoKSlgYC5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgIGBgZnJvbWtleXMoKWBgIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCxcbiAgICAgIHNvIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgXG4gICAgICBwYWlycykuIFNlZSB0aGUgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAga2V5cygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGtleXMuICBTZWUgdGhlXG4gICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgYGAoa2V5LCB2YWx1ZSlgYCBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICBgYHBvcGl0ZW0oKWBgIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nIGBgcG9waXRlbSgpYGAgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiBgYE5vbmVgYC5cblxuICAgICAgYGB1cGRhdGUoKWBgIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiBgYGQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKWBgLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgdGhlXG4gICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG5TZWUgYWxzbzpcblxuICAgYGB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYGAgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5IHZpZXdcbiAgIG9mIGEgYGBkaWN0YGAuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5IGBgZGljdC5rZXlzKClgYCwgYGBkaWN0LnZhbHVlcygpYGAgYW5kXG5gYGRpY3QuaXRlbXMoKWBgIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvblxudGhlIGRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5XG5jaGFuZ2VzLCB0aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiBgYChrZXksIHZhbHVlKWBgKSBpbiB0aGUgZGljdGlvbmFyeS5cblxuICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIGFuIGFyYml0cmFyeSBvcmRlciB3aGljaCBpc1xuICAgbm9uLXJhbmRvbSwgdmFyaWVzIGFjcm9zcyBQeXRob24gaW1wbGVtZW50YXRpb25zLCBhbmQgZGVwZW5kcyBvblxuICAgdGhlIGRpY3Rpb25hcnlcJ3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmIGtleXMsXG4gICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gaW50ZXJ2ZW5pbmdcbiAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsIGRpcmVjdGx5XG4gICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGBgKHZhbHVlLCBrZXkpYGAgcGFpcnNcbiAgIHVzaW5nIGBgemlwKClgYDogYGBwYWlycyA9IHppcChkLnZhbHVlcygpLCBkLmtleXMoKSlgYC4gIEFub3RoZXJcbiAgIHdheSB0byBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyBgYHBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluXG4gICBkLml0ZW1zKCldYGAuXG5cbiAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeVxuICAgbWF5IHJhaXNlIGEgYGBSdW50aW1lRXJyb3JgYCBvciBmYWlsIHRvIGl0ZXJhdGUgb3ZlciBhbGwgZW50cmllcy5cblxueCBpbiBkaWN0dmlld1xuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cyxcbiAgIHZhbHVlcyBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgYGAoa2V5LFxuICAgdmFsdWUpYGAgdHVwbGUpLlxuXG5LZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kIGhhc2hhYmxlLlxuSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycyBhcmUgdW5pcXVlXG5hbmQgaGFzaGFibGUsIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlXG5ub3QgdHJlYXRlZCBhcyBzZXQtbGlrZSBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKVxuRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0XG5iYXNlIGNsYXNzIGBgY29sbGVjdGlvbnMuYWJjLlNldGBgIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCBgYD09YGAsXG5gYDxgYCwgb3IgYGBeYGApLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKICAndHlwZXNtZXRob2RzJzogJ1xuTWV0aG9kc1xuKioqKioqKlxuXG5NZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbm90YXRpb24uXG5UaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgYGBhcHBlbmQoKWBgIG9uXG5saXN0cykgYW5kIGNsYXNzIGluc3RhbmNlIG1ldGhvZHMuICBCdWlsdC1pbiBtZXRob2RzIGFyZSBkZXNjcmliZWRcbndpdGggdGhlIHR5cGVzIHRoYXQgc3VwcG9ydCB0aGVtLlxuXG5JZiB5b3UgYWNjZXNzIGEgbWV0aG9kIChhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSBjbGFzcyBuYW1lc3BhY2UpXG50aHJvdWdoIGFuIGluc3RhbmNlLCB5b3UgZ2V0IGEgc3BlY2lhbCBvYmplY3Q6IGEgKmJvdW5kIG1ldGhvZCogKGFsc29cbmNhbGxlZCAqaW5zdGFuY2UgbWV0aG9kKikgb2JqZWN0LiBXaGVuIGNhbGxlZCwgaXQgd2lsbCBhZGQgdGhlXG5gYHNlbGZgYCBhcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d29cbnNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgbS5fX3NlbGZfX2BgIGlzIHRoZSBvYmplY3Qgb24gd2hpY2hcbnRoZSBtZXRob2Qgb3BlcmF0ZXMsIGFuZCBgYG0uX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nXG50aGUgbWV0aG9kLiAgQ2FsbGluZyBgYG0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKWBgIGlzIGNvbXBsZXRlbHlcbmVxdWl2YWxlbnQgdG8gY2FsbGluZyBgYG0uX19mdW5jX18obS5fX3NlbGZfXywgYXJnLTEsIGFyZy0yLCAuLi4sXG5hcmctbilgYC5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0IChgYG1ldGguX19mdW5jX19gYCksIHNldHRpbmcgbWV0aG9kXG5hdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gc2V0IGFuXG5hdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgYmVpbmcgcmFpc2VkLlxuSW4gb3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb25cbnRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCiAgJ3R5cGVzbW9kdWxlcyc6ICJcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczpcbmBgbS5uYW1lYGAsIHdoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkXG5pbiAqbSoncyBzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlXG50aGF0IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb25cbm9uIGEgbW9kdWxlIG9iamVjdDsgYGBpbXBvcnQgZm9vYGAgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3Rcbm5hbWVkICpmb28qIHRvIGV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbipcbmZvciBhIG1vZHVsZSBuYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyBgYF9fZGljdF9fYGAuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgYGBfX2RpY3RfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW5cbndyaXRlIGBgbS5fX2RpY3RfX1snYSddID0gMWBgLCB3aGljaCBkZWZpbmVzIGBgbS5hYGAgdG8gYmUgYGAxYGAsIGJ1dFxueW91IGNhbid0IHdyaXRlIGBgbS5fX2RpY3RfXyA9IHt9YGApLiAgTW9kaWZ5aW5nIGBgX19kaWN0X19gYCBkaXJlY3RseVxuaXMgbm90IHJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8bW9kdWxlXG4nc3lzJyAoYnVpbHQtaW4pPmBgLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG5gYDxtb2R1bGUgJ29zJyBmcm9tICcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljJz5gYC5cbiIsCi0gJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgbGlzdGBgLCBgYHR1cGxlYGAsIGBgcmFuZ2VgYFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxub2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAqYmluYXJ5XG5kYXRhKiBhbmQgKnRleHQgc3RyaW5ncyogYXJlIGRlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuXG5cblxuQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlXG50eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSBgYGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWBgXG5BQkMgaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZVxub3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eVxuKG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkpLiAgSW4gdGhlIHRhYmxlLFxuKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKiwgKmoqIGFuZCAqayogYXJlXG5pbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmQgdmFsdWVcbnJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGVcbmNvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlIGBgK2BgIChjb25jYXRlbmF0aW9uKSBhbmQgYGAqYGBcbihyZXBldGl0aW9uKSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmdcbm51bWVyaWMgb3BlcmF0aW9ucy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCBgYHggaW4gc2BgICAgICAgICAgICAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHggbm90IGluIHNgYCAgICAgICAgICAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKyB0YGAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbmBgIG9yIGBgbiAqIHNgYCAgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgICB8ICgyKSg3KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYGxlbihzKWBgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWF4KHMpYGAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgIHwgKDgpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsXG50dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbmNvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbnR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW5cbnRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hpbGUgdGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgYGBzdHJgYCwgYGBieXRlc2BgIGFuZCBgYGJ5dGVhcnJheWBgKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1tdLCBbXSwgW11dXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC5cbiAgIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb25cbiAgIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHNlcXVlbmNlIGxlbmd0aC5cbiAgIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlXG4gICBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHN0cmBgIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2VcbiAgICAgYGBzdHIuam9pbigpYGAgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgYGBpby5TdHJpbmdJT2BgXG4gICAgIGluc3RhbmNlIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBieXRlc2BgIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuICAgICBgYGJ5dGVzLmpvaW4oKWBgIG9yIGBgaW8uQnl0ZXNJT2BgLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlXG4gICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhIGBgYnl0ZWFycmF5YGAgb2JqZWN0LiAgYGBieXRlYXJyYXlgYCBvYmplY3RzXG4gICAgIGFyZSBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgdHVwbGVgYCBvYmplY3RzLCBleHRlbmQgYSBgYGxpc3RgYCBpbnN0ZWFkXG5cbiAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvblxuXG43LiBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIGBgcmFuZ2VgYCkgb25seSBzdXBwb3J0IGl0ZW0gc2VxdWVuY2VzXG4gICB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0IHNlcXVlbmNlXG4gICBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguIGBgaW5kZXhgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlblxuICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCBhbGxvd1xuICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgdGhlXG4gICBleHRyYSBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgc1tpOmpdLmluZGV4KHgpYGAsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlIGBgaGFzaCgpYGAgYnVpbHQtaW4uXG5cblRoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyBgYHR1cGxlYGAgaW5zdGFuY2VzLFxudG8gYmUgdXNlZCBhcyBgYGRpY3RgYCBrZXlzIGFuZCBzdG9yZWQgaW4gYGBzZXRgYCBhbmQgYGBmcm96ZW5zZXRgYFxuaW5zdGFuY2VzLlxuXG5BdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZVxudmFsdWVzIHdpbGwgcmVzdWx0IGluIGBgVHlwZUVycm9yYGAuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYGAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgYGBieXRlYXJyYXlgYCBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYCAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ID0gdGBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6aV0gPSBbeF1gYCkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiBgYHJlbW92ZWBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgYGByZXZlcnNlKClgYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215XG4gICBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXRcbiAgIG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLlxuXG41LiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cblxuXG5MaXN0c1xuPT09PT1cblxuTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgdmFyeSBieVxuYXBwbGljYXRpb24pLlxuXG5jbGFzcyBjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG5cbiAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6IGBgW11gYFxuXG4gICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYV1gYCxcbiAgICAgYGBbYSwgYiwgY11gYFxuXG4gICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiBgYFt4IGZvciB4IGluIGl0ZXJhYmxlXWBgXG5cbiAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6IGBgbGlzdCgpYGAgb3IgYGBsaXN0KGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4gICByZXR1cm5lZCwgc2ltaWxhciB0byBgYGl0ZXJhYmxlWzpdYGAuIEZvciBleGFtcGxlLCBgYGxpc3QoXCdhYmNcJylgYFxuICAgcmV0dXJucyBgYFtcJ2FcJywgXCdiXCcsIFwnY1wnXWBgIGFuZCBgYGxpc3QoICgxLCAyLCAzKSApYGAgcmV0dXJucyBgYFsxLFxuICAgMiwgM11gYC4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3XG4gICBlbXB0eSBsaXN0LCBgYFtdYGAuXG5cbiAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGVcbiAgIGBgc29ydGVkKClgYCBidWlsdC1pbi5cblxuICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogYW5kICptdXRhYmxlKiBzZXF1ZW5jZVxuICAgb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG5cbiAgIHNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSlcblxuICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgYGA8YGBcbiAgICAgIGNvbXBhcmlzb25zIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWZcbiAgICAgIGFueSBjb21wYXJpc29uIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsXG4gICAgICBmYWlsIChhbmQgdGhlIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZFxuICAgICAgc3RhdGUpLlxuXG4gICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvXG4gICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yIGV4YW1wbGUsXG4gICAgICBgYGtleT1zdHIubG93ZXJgYCkuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gdGhlXG4gICAgICBsaXN0IGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmdcbiAgICAgIHByb2Nlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmVcbiAgICAgIHNvcnRlZCBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhXG4gICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdFxuICAgICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cblxuICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlXG4gICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzXG4gICAgICBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgKHVzZVxuICAgICAgYGBzb3J0ZWQoKWBgIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpc1xuICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2ZcbiAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluXG4gICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5XG4gICAgICBncmFkZSkuXG5cbiAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuXG4gICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cblxuVHVwbGVzXG49PT09PT1cblxuVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGVcbmBgZW51bWVyYXRlKClgYCBidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhblxuaW1tdXRhYmxlIHNlcXVlbmNlIG9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nXG5zdG9yYWdlIGluIGEgYGBzZXRgYCBvciBgYGRpY3RgYCBpbnN0YW5jZSkuXG5cbmNsYXNzIGNsYXNzIHR1cGxlKFtpdGVyYWJsZV0pXG5cbiAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcblxuICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogYGAoKWBgXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6IGBgYSxgYCBvciBgYChhLClgYFxuXG4gICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgYSwgYiwgY2BgIG9yIGBgKGEsIGIsIGMpYGBcblxuICAgKiBVc2luZyB0aGUgYGB0dXBsZSgpYGAgYnVpbHQtaW46IGBgdHVwbGUoKWBgIG9yXG4gICAgIGBgdHVwbGUoaXRlcmFibGUpYGBcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4gICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCBgYHR1cGxlKFwnYWJjXCcpYGAgcmV0dXJucyBgYChcJ2FcJywgXCdiXCcsXG4gICBcJ2NcJylgYCBhbmQgYGB0dXBsZSggWzEsIDIsIDNdIClgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuIElmIG5vXG4gICBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsXG4gICBgYCgpYGAuXG5cbiAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZVxuICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHlcbiAgIHR1cGxlIGNhc2UsIG9yIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuXG4gICBGb3IgZXhhbXBsZSwgYGBmKGEsIGIsIGMpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWVcbiAgIGFyZ3VtZW50cywgd2hpbGUgYGBmKChhLCBiLCBjKSlgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGVcbiAgIGFzIHRoZSBzb2xlIGFyZ3VtZW50LlxuXG4gICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucy5cblxuRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyBjbGVhcmVyXG50aGFuIGFjY2VzcyBieSBpbmRleCwgYGBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKClgYCBtYXkgYmUgYSBtb3JlXG5hcHByb3ByaWF0ZSBjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuXG5cblxuUmFuZ2VzXG49PT09PT1cblxuVGhlIGBgcmFuZ2VgYCB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluIGBgZm9yYGAgbG9vcHMuXG5cbmNsYXNzIGNsYXNzIHJhbmdlKHN0b3ApXG5jbGFzcyBjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuXG4gICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzIChlaXRoZXJcbiAgIGJ1aWx0LWluIGBgaW50YGAgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGBgX19pbmRleF9fYGBcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgIGBgMWBgLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4gSWZcbiAgICpzdGVwKiBpcyB6ZXJvLCBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgYGByYGAgYXJlIGRldGVybWluZWRcbiAgIGJ5IHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAgd2hlcmUgYGBpID49IDBgYCBhbmRcbiAgIGBgcltpXSA8IHN0b3BgYC5cblxuICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbFxuICAgZGV0ZXJtaW5lZCBieSB0aGUgZm9ybXVsYSBgYHJbaV0gPSBzdGFydCArIHN0ZXAqaWBgLCBidXQgdGhlXG4gICBjb25zdHJhaW50cyBhcmUgYGBpID49IDBgYCBhbmQgYGByW2ldID4gc3RvcGBgLlxuXG4gICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmIGBgclswXWBgIGRvZXMgbm90IG1lZXQgdGhlIHZhbHVlXG4gICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlXG4gICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnlcbiAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuXG4gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIGBgbGVuKClgYCkgbWF5IHJhaXNlXG4gICBgYE92ZXJmbG93RXJyb3JgYC5cblxuICAgUmFuZ2UgZXhhbXBsZXM6XG5cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbiAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuICAgICAgWzAsIDMsIDYsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbiAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4gICAgICBbXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4gICAgICBbXVxuXG4gICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyBleGNlcHRcbiAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHNcbiAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmRcbiAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS5cblxuVGhlIGFkdmFudGFnZSBvZiB0aGUgYGByYW5nZWBgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgYGBsaXN0YGAgb3JcbmBgdHVwbGVgYCBpcyB0aGF0IGEgYGByYW5nZWBgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbClcbmFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXRcbm9ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nXG5pbmRpdmlkdWFsIGl0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIGBgY29sbGVjdGlvbnMuU2VxdWVuY2VgYCBBQkMsIGFuZCBwcm92aWRlXG5mZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmRcbnN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgLS0tIGxpc3QsIHR1cGxlLFxucmFuZ2UqKTpcblxuPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbj4+PiByXG5yYW5nZSgwLCAyMCwgMilcbj4+PiAxMSBpbiByXG5GYWxzZVxuPj4+IDEwIGluIHJcblRydWVcbj4+PiByLmluZGV4KDEwKVxuNVxuPj4+IHJbNV1cbjEwXG4+Pj4gcls6NV1cbnJhbmdlKDAsIDEwLCAyKVxuPj4+IHJbLTFdXG4xOFxuXG5UZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggYGA9PWBgIGFuZCBgYCE9YGAgY29tcGFyZXNcbnRoZW0gYXMgc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWZcbnRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlXG5vYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCBgYHN0YXJ0YGAsIGBgc3RvcGBgXG5hbmQgYGBzdGVwYGAgYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgYGByYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKWBgIG9yXG5gYHJhbmdlKDAsIDMsIDIpID09IHJhbmdlKDAsIDQsIDIpYGAuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCBgYGludGBgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLlxuJywKKyAndHlwZXNzZXEnOiAnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gYGBsaXN0YGAsIGBgdHVwbGVgYCwgYGByYW5nZWBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG5vYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICpiaW5hcnlcbmRhdGEqIGFuZCAqdGV4dCBzdHJpbmdzKiBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cblxuXG5Db21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2VcbnR5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYGBcbkFCQyBpcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlXG5vcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cblxuVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5XG4ob3BlcmF0aW9ucyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSkuICBJbiB0aGUgdGFibGUsXG4qcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmVcbmludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZCB2YWx1ZVxucmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqLlxuXG5UaGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZVxuY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgYGArYGAgKGNvbmNhdGVuYXRpb24pIGFuZCBgYCpgYFxuKHJlcGV0aXRpb24pIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZ1xubnVtZXJpYyBvcGVyYXRpb25zLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG58IGBgeCBpbiBzYGAgICAgICAgICAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgeCBub3QgaW4gc2BgICAgICAgICAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcyArIHRgYCAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikoNykgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKiBuYGAgb3IgYGBuICogc2BgICAgICB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAqcyogICAgICAgIHwgKDIpKDcpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaV1gYCAgICAgICAgICAgICAgICAgICB8ICppKnRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgICAgIHwgKDMpICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg0KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbGVuKHMpYGAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1pbihzKWBgICAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtYXgocylgYCAgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgfCAoOCkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciBpbmRleCAgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICppKiBhbmQgYmVmb3JlIGluZGV4ICpqKikgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KHgpYGAgICAgICAgICAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhcixcbnR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZ1xuY29ycmVzcG9uZGluZyBlbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5XG5lbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxudHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgKkNvbXBhcmlzb25zKiBpblxudGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG5cbk5vdGVzOlxuXG4xLiBXaGlsZSB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlXG4gICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzXG4gICAoc3VjaCBhcyBgYHN0cmBgLCBgYGJ5dGVzYGAgYW5kIGBgYnl0ZWFycmF5YGApIGFsc28gdXNlIHRoZW0gZm9yXG4gICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuXG4gICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbiAgICAgIFRydWVcblxuMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gYGAwYGAgYXJlIHRyZWF0ZWQgYXMgYGAwYGAgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgdGhlIGNvcGllc1xuICAgYXJlIHNoYWxsb3c7IG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSBub3QgY29waWVkLiAgVGhpcyBvZnRlbiBoYXVudHNcbiAgIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuXG4gICAgICA+Pj4gbGlzdHMgPSBbW11dICogM1xuICAgICAgPj4+IGxpc3RzXG4gICAgICBbW10sIFtdLCBbXV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzNdLCBbM11dXG5cbiAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgYGBbW11dYGAgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiBgYFtbXV0gKiAzYGAgYXJlIChwb2ludGVyc1xuICAgdG8pIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuICAgYGBsaXN0c2BgIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuXG4gICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4gICAgICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFs1XSwgWzddXVxuXG4zLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGVcbiAgIHN0cmluZzogYGBsZW4ocykgKyBpYGAgb3IgYGBsZW4ocykgKyBqYGAgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCBgYC0wYGAgaXMgc3RpbGwgYGAwYGAuXG5cbjQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlIG9mXG4gICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgYGBpIDw9IGsgPCBqYGAuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gYGBsZW4ocylgYCwgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogaXMgb21pdHRlZCBvclxuICAgYGBOb25lYGAsIHVzZSBgYDBgYC4gIElmICpqKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB1c2VcbiAgIGBgbGVuKHMpYGAuICBJZiAqaSogaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzXG4gICBlbXB0eS5cblxuNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzIHRoZVxuICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgYGB4ID0gaSArIG4qa2BgIHN1Y2ggdGhhdCBgYDAgPD0gbiA8XG4gICAoai1pKS9rYGAuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlIGBgaWBgLCBgYGkra2BgLFxuICAgYGBpKzIqa2BgLCBgYGkrMyprYGAgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXRcbiAgIG5ldmVyIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gYGBsZW4ocylgYCxcbiAgIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhleSBiZWNvbWVcbiAgICJlbmQiIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKlxuICAgY2Fubm90IGJlIHplcm8uIElmICprKiBpcyBgYE5vbmVgYCwgaXQgaXMgdHJlYXRlZCBsaWtlIGBgMWBgLlxuXG42LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXcgb2JqZWN0LlxuICAgVGhpcyBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvblxuICAgd2lsbCBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc2VxdWVuY2UgbGVuZ3RoLlxuICAgVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwgeW91IG11c3Qgc3dpdGNoIHRvIG9uZSBvZiB0aGVcbiAgIGFsdGVybmF0aXZlcyBiZWxvdzpcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgc3RyYGAgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kIHVzZVxuICAgICBgYHN0ci5qb2luKClgYCBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYSBgYGlvLlN0cmluZ0lPYGBcbiAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYGJ5dGVzYGAgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgIGBgYnl0ZXMuam9pbigpYGAgb3IgYGBpby5CeXRlc0lPYGAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2VcbiAgICAgY29uY2F0ZW5hdGlvbiB3aXRoIGEgYGBieXRlYXJyYXlgYCBvYmplY3QuICBgYGJ5dGVhcnJheWBgIG9iamVjdHNcbiAgICAgYXJlIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGB0dXBsZWBgIG9iamVjdHMsIGV4dGVuZCBhIGBgbGlzdGBgIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgYGByYW5nZWBgKSBvbmx5IHN1cHBvcnQgaXRlbSBzZXF1ZW5jZXNcbiAgIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uXCd0IHN1cHBvcnQgc2VxdWVuY2VcbiAgIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cblxuOC4gYGBpbmRleGBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBzW2k6al0uaW5kZXgoeClgYCxcbiAgIG9ubHkgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhIGFuZCB3aXRoIHRoZSByZXR1cm5lZCBpbmRleCBiZWluZ1xuICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgb2YgdGhlXG4gICBzbGljZS5cblxuXG5JbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5IGltcGxlbWVudFxudGhhdCBpcyBub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzIHN1cHBvcnQgZm9yXG50aGUgYGBoYXNoKClgYCBidWlsdC1pbi5cblxuVGhpcyBzdXBwb3J0IGFsbG93cyBpbW11dGFibGUgc2VxdWVuY2VzLCBzdWNoIGFzIGBgdHVwbGVgYCBpbnN0YW5jZXMsXG50byBiZSB1c2VkIGFzIGBgZGljdGBgIGtleXMgYW5kIHN0b3JlZCBpbiBgYHNldGBgIGFuZCBgYGZyb3plbnNldGBgXG5pbnN0YW5jZXMuXG5cbkF0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB1bmhhc2hhYmxlXG52YWx1ZXMgd2lsbCByZXN1bHQgaW4gYGBUeXBlRXJyb3JgYC5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSBgYGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2VgYCBBQkMgaXMgcHJvdmlkZWQgdG8gbWFrZVxuaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2VcbnR5cGVzLlxuXG5JbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55XG5pdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kXG52YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCBgYGJ5dGVhcnJheWBgIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiBgYDAgPD0geCA8PSAyNTVgYCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tsZW4ocyk6bGVuKHMpXSA9IFt4XWBgKSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuY2xlYXIoKWBgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tIGBgc2BgICAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgZGVsIHNbOl1gYCkgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuY29weSgpYGAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mIGBgc2BgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgc1s6XWBgKSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuZXh0ZW5kKHQpYGAgICAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgPSB0YGApICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTppXSA9IFt4XWBgKSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSBgYHNbaV0gPT0geGBgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHRcbiAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjMuIGBgcmVtb3ZlYGAgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSBgYHJldmVyc2UoKWBgIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXlcbiAgIG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdFxuICAgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjUuIGBgY2xlYXIoKWBgIGFuZCBgYGNvcHkoKWBgIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGVcbiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uXCd0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyBgYGRpY3RgYCBhbmQgYGBzZXRgYClcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBtZXRob2RzLlxuXG5cbkxpc3RzXG49PT09PVxuXG5MaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5ob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCB2YXJ5IGJ5XG5hcHBsaWNhdGlvbikuXG5cbmNsYXNzIGNsYXNzIGxpc3QoW2l0ZXJhYmxlXSlcblxuICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czpcblxuICAgKiBVc2luZyBhIHBhaXIgb2Ygc3F1YXJlIGJyYWNrZXRzIHRvIGRlbm90ZSB0aGUgZW1wdHkgbGlzdDogYGBbXWBgXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYFthXWBgLFxuICAgICBgYFthLCBiLCBjXWBgXG5cbiAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246IGBgW3ggZm9yIHggaW4gaXRlcmFibGVdYGBcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogYGBsaXN0KClgYCBvciBgYGxpc3QoaXRlcmFibGUpYGBcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGVcbiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKlwncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhXG4gICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yXG4gICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMgbWFkZSBhbmRcbiAgIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4gRm9yIGV4YW1wbGUsIGBgbGlzdChcJ2FiY1wnKWBgXG4gICByZXR1cm5zIGBgW1wnYVwnLCBcJ2JcJywgXCdjXCddYGAgYW5kIGBgbGlzdCggKDEsIDIsIDMpIClgYCByZXR1cm5zIGBgWzEsXG4gICAyLCAzXWBgLiBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXdcbiAgIGVtcHR5IGxpc3QsIGBgW11gYC5cblxuICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZVxuICAgYGBzb3J0ZWQoKWBgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSBgYDxgYFxuICAgICAgY29tcGFyaXNvbnMgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZlxuICAgICAgYW55IGNvbXBhcmlzb24gb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGxcbiAgICAgIGZhaWwgKGFuZCB0aGUgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0IGluIGEgcGFydGlhbGx5IG1vZGlmaWVkXG4gICAgICBzdGF0ZSkuXG5cbiAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG9cbiAgICAgIGV4dHJhY3QgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgZXhhbXBsZSxcbiAgICAgIGBga2V5PXN0ci5sb3dlcmBgKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGVcbiAgICAgIGxpc3QgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZ1xuICAgICAgcHJvY2Vzcy4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgYGBOb25lYGAgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZVxuICAgICAgc29ydGVkIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZSBrZXkgdmFsdWUuXG5cbiAgICAgIFRoZSBgYGZ1bmN0b29scy5jbXBfdG9fa2V5KClgYCB1dGlsaXR5IGlzIGF2YWlsYWJsZSB0byBjb252ZXJ0IGFcbiAgICAgIDIueCBzdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICBgYHNvcnRlZCgpYGAgdG8gZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0IGluc3RhbmNlKS5cblxuICAgICAgVGhlIGBgc29ydCgpYGAgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzXG4gICAgICBzdGFibGUgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZlxuICAgICAgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW5cbiAgICAgIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnlcbiAgICAgIGdyYWRlKS5cblxuICAgICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW5cbiAgICAgIGRldGVjdCB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZVxuYGBlbnVtZXJhdGUoKWBgIGJ1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuXG5pbW11dGFibGUgc2VxdWVuY2Ugb2YgaG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmdcbnN0b3JhZ2UgaW4gYSBgYHNldGBgIG9yIGBgZGljdGBgIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiBgYCgpYGBcblxuICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogYGBhLGBgIG9yIGBgKGEsKWBgXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBhLCBiLCBjYGAgb3IgYGAoYSwgYiwgYylgYFxuXG4gICAqIFVzaW5nIHRoZSBgYHR1cGxlKClgYCBidWlsdC1pbjogYGB0dXBsZSgpYGAgb3JcbiAgICAgYGB0dXBsZShpdGVyYWJsZSlgYFxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGVcbiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKlwncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhXG4gICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yXG4gICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWRcbiAgIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsIGBgdHVwbGUoXCdhYmNcJylgYCByZXR1cm5zIGBgKFwnYVwnLCBcJ2JcJyxcbiAgIFwnY1wnKWBgIGFuZCBgYHR1cGxlKCBbMSwgMiwgM10gKWBgIHJldHVybnMgYGAoMSwgMiwgMylgYC4gSWYgbm9cbiAgIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSxcbiAgIGBgKClgYC5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCBgYGYoYSwgYiwgYylgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZVxuICAgYXJndW1lbnRzLCB3aGlsZSBgYGYoKGEsIGIsIGMpKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZVxuICAgYXMgdGhlIHNvbGUgYXJndW1lbnQuXG5cbiAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLlxuXG5Gb3IgaGV0ZXJvZ2VuZW91cyBjb2xsZWN0aW9ucyBvZiBkYXRhIHdoZXJlIGFjY2VzcyBieSBuYW1lIGlzIGNsZWFyZXJcbnRoYW4gYWNjZXNzIGJ5IGluZGV4LCBgYGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKWBgIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgYGByYW5nZWBgIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgaXNcbmNvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gYGBmb3JgYCBsb29wcy5cblxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RvcClcbmNsYXNzIGNsYXNzIHJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pXG5cbiAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlclxuICAgYnVpbHQtaW4gYGBpbnRgYCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYFxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgYGAxYGAuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZFxuICAgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZFxuICAgYGByW2ldIDwgc3RvcGBgLlxuXG4gICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4gICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgIGFuZCBgYHJbaV0gPiBzdG9wYGAuXG5cbiAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiBgYHN5cy5tYXhzaXplYGAgYXJlXG4gICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgYGBsZW4oKWBgKSBtYXkgcmFpc2VcbiAgIGBgT3ZlcmZsb3dFcnJvcmBgLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBvdmVyIGEgcmVndWxhciBgYGxpc3RgYCBvclxuYGB0dXBsZWBgIGlzIHRoYXQgYSBgYHJhbmdlYGAgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKVxuYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdFxub25seSBzdG9yZXMgdGhlIGBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIHZhbHVlcywgY2FsY3VsYXRpbmdcbmluZGl2aWR1YWwgaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuXG5SYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgYGBjb2xsZWN0aW9ucy5TZXF1ZW5jZWBgIEFCQywgYW5kIHByb3ZpZGVcbmZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLCBzbGljaW5nIGFuZFxuc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS0gbGlzdCwgdHVwbGUsXG5yYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCBgYD09YGAgYW5kIGBgIT1gYCBjb21wYXJlc1xudGhlbSBhcyBzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZlxudGhleSByZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2Vcbm9iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGBgc3RhcnRgYCwgYGBzdG9wYGBcbmFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSBgYHJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpYGAgb3JcbmBgcmFuZ2UoMCwgMywgMikgPT0gcmFuZ2UoMCwgNCwgMilgYC4pXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0IHNsaWNpbmdcbmFuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0IGBgaW50YGAgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudFxudGltZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lIFwnPT1cJyBhbmQgXCchPVwnIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0c1xuYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmdcbmJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlIGBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIGF0dHJpYnV0ZXMuXG4nLAogICd0eXBlc3NlcS1tdXRhYmxlJzogIlxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYGAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgYGBieXRlYXJyYXlgYCBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYCAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ID0gdGBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6aV0gPSBbeF1gYCkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiBgYHJlbW92ZWBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgYGByZXZlcnNlKClgYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215XG4gICBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXRcbiAgIG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLlxuXG41LiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyBgYGRpY3RgYCBhbmQgYGBzZXRgYClcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBtZXRob2RzLlxuIiwKICAndW5hcnknOiAnXG5VbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHk6XG5cbiAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcblxuVGhlIHVuYXJ5IGBgLWBgIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuYXJndW1lbnQuXG5cblRoZSB1bmFyeSBgYCtgYCAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5IGBgfmBgIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgaXRzXG5pbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGBgeGBgIGlzIGRlZmluZWQgYXNcbmBgLSh4KzEpYGAuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCiAgJ3doaWxlJzogJ1xuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpc1xuZXhlY3V0ZWQgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmdvZXMgYmFjayB0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKZGlmZiAtLWdpdCBhL0xpYi9xdW9wcmkucHkgYi9MaWIvcXVvcHJpLnB5CmluZGV4IDNkMGYwYWMuLmU1YmQwMTAgMTAwNzU1Ci0tLSBhL0xpYi9xdW9wcmkucHkKKysrIGIvTGliL3F1b3ByaS5weQpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZnAgPSBvcGVuKGZpbGUsICJyYiIpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBtc2c6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6IGNhbid0IG9wZW4gKCVzKVxuIiAlIChmaWxlLCBtc2cpKQogICAgICAgICAgICAgICAgIHN0cyA9IDEKICAgICAgICAgICAgICAgICBjb250aW51ZQpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggN2Q4ZDRmMy4uYjE4M2Y1NiAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC0xNTEsNiArMTUxLDkgQEAKIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcGlja2xlIHN1cHBvcnQgIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAorICAgICMgSXNzdWUgMTc0ODk6IFNpbmNlIF9fcmVkdWNlX18gd2FzIGRlZmluZWQgdG8gZml4ICM3NTk4ODkgdGhpcyBpcyBubworICAgICMgbG9uZ2VyIGNhbGxlZDsgd2UgbGVhdmUgaXQgaGVyZSBiZWNhdXNlIGl0IGhhcyBiZWVuIGhlcmUgc2luY2UgcmFuZG9tIHdhcworICAgICMgcmV3cml0dGVuIGJhY2sgaW4gMjAwMSBhbmQgd2h5IHJpc2sgYnJlYWtpbmcgc29tZXRoaW5nLgogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6ICMgZm9yIHBpY2tsZQogICAgICAgICByZXR1cm4gc2VsZi5nZXRzdGF0ZSgpCiAKQEAgLTI1MiwxMCArMjU1LDExIEBACiAgICAgICAgIHJldHVybiBzZXFbaV0KIAogICAgIGRlZiBzaHVmZmxlKHNlbGYsIHgsIHJhbmRvbT1Ob25lLCBpbnQ9aW50KToKLSAgICAgICAgIiIieCwgcmFuZG9tPXJhbmRvbS5yYW5kb20gLT4gc2h1ZmZsZSBsaXN0IHggaW4gcGxhY2U7IHJldHVybiBOb25lLgorICAgICAgICAiIiJTaHVmZmxlIGxpc3QgeCBpbiBwbGFjZSwgYW5kIHJldHVybiBOb25lLgogCi0gICAgICAgIE9wdGlvbmFsIGFyZyByYW5kb20gaXMgYSAwLWFyZ3VtZW50IGZ1bmN0aW9uIHJldHVybmluZyBhIHJhbmRvbQotICAgICAgICBmbG9hdCBpbiBbMC4wLCAxLjApOyBieSBkZWZhdWx0LCB0aGUgc3RhbmRhcmQgcmFuZG9tLnJhbmRvbS4KKyAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgcmFuZG9tIGlzIGEgMC1hcmd1bWVudCBmdW5jdGlvbiByZXR1cm5pbmcgYQorICAgICAgICByYW5kb20gZmxvYXQgaW4gWzAuMCwgMS4wKTsgaWYgaXQgaXMgdGhlIGRlZmF1bHQgTm9uZSwgdGhlCisgICAgICAgIHN0YW5kYXJkIHJhbmRvbS5yYW5kb20gd2lsbCBiZSB1c2VkLgogICAgICAgICAiIiIKIAogICAgICAgICByYW5kYmVsb3cgPSBzZWxmLl9yYW5kYmVsb3cKZGlmZiAtLWdpdCBhL0xpYi9ybGNvbXBsZXRlci5weSBiL0xpYi9ybGNvbXBsZXRlci5weQppbmRleCBkM2E0NDM3Li43Yzc1NTNlIDEwMDY0NAotLS0gYS9MaWIvcmxjb21wbGV0ZXIucHkKKysrIGIvTGliL3JsY29tcGxldGVyLnB5CkBAIC0yOSw2ICsyOSw3IEBACiAKICIiIgogCitpbXBvcnQgYXRleGl0CiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBfX21haW5fXwogCkBAIC0xNTgsMyArMTU5LDcgQEAKICAgICBwYXNzCiBlbHNlOgogICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoQ29tcGxldGVyKCkuY29tcGxldGUpCisgICAgIyBSZWxlYXNlIHJlZmVyZW5jZXMgZWFybHkgYXQgc2h1dGRvd24gKHRoZSByZWFkbGluZSBtb2R1bGUncworICAgICMgY29udGVudHMgYXJlIHF1YXNpLWltbW9ydGFsLCBhbmQgdGhlIGNvbXBsZXRlciBmdW5jdGlvbiBob2xkcyBhCisgICAgIyByZWZlcmVuY2UgdG8gZ2xvYmFscykuCisgICAgYXRleGl0LnJlZ2lzdGVyKGxhbWJkYTogcmVhZGxpbmUuc2V0X2NvbXBsZXRlcihOb25lKSkKZGlmZiAtLWdpdCBhL0xpYi9ydW5weS5weSBiL0xpYi9ydW5weS5weQppbmRleCAzOWMwZTlmLi4xZTBhMmJlIDEwMDY0NAotLS0gYS9MaWIvcnVucHkucHkKKysrIGIvTGliL3J1bnB5LnB5CkBAIC0xMyw3ICsxMyw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5ICMgaW1wb3J0bGliIGZpcnN0IHNvIHdlIGNhbiB0ZXN0ICMxNTM4NiB2aWEgLW0KLWltcG9ydCBpbXAKK2ltcG9ydCB0eXBlcwogZnJvbSBwa2d1dGlsIGltcG9ydCByZWFkX2NvZGUsIGdldF9sb2FkZXIsIGdldF9pbXBvcnRlcgogCiBfX2FsbF9fID0gWwpAQCAtMjQsNyArMjQsNyBAQAogICAgICIiIlRlbXBvcmFyaWx5IHJlcGxhY2UgYSBtb2R1bGUgaW4gc3lzLm1vZHVsZXMgd2l0aCBhbiBlbXB0eSBuYW1lc3BhY2UiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kX25hbWUpOgogICAgICAgICBzZWxmLm1vZF9uYW1lID0gbW9kX25hbWUKLSAgICAgICAgc2VsZi5tb2R1bGUgPSBpbXAubmV3X21vZHVsZShtb2RfbmFtZSkKKyAgICAgICAgc2VsZi5tb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG1vZF9uYW1lKQogICAgICAgICBzZWxmLl9zYXZlZF9tb2R1bGUgPSBbXQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTIyMyw3ICsyMjMsMTIgQEAKICAgICAgICAgcnVuX25hbWUgPSAiPHJ1bl9wYXRoPiIKICAgICBwa2dfbmFtZSA9IHJ1bl9uYW1lLnJwYXJ0aXRpb24oIi4iKVswXQogICAgIGltcG9ydGVyID0gZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCAodHlwZShOb25lKSwgaW1wLk51bGxJbXBvcnRlcikpOgorICAgICMgVHJ5aW5nIHRvIGF2b2lkIGltcG9ydGluZyBpbXAgc28gYXMgdG8gbm90IGNvbnN1bWUgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisgICAgaXNfTnVsbEltcG9ydGVyID0gRmFsc2UKKyAgICBpZiB0eXBlKGltcG9ydGVyKS5fX21vZHVsZV9fID09ICdpbXAnOgorICAgICAgICBpZiB0eXBlKGltcG9ydGVyKS5fX25hbWVfXyA9PSAnTnVsbEltcG9ydGVyJzoKKyAgICAgICAgICAgIGlzX051bGxJbXBvcnRlciA9IFRydWUKKyAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCB0eXBlKE5vbmUpKSBvciBpc19OdWxsSW1wb3J0ZXI6CiAgICAgICAgICMgTm90IGEgdmFsaWQgc3lzLnBhdGggZW50cnksIHNvIHJ1biB0aGUgY29kZSBkaXJlY3RseQogICAgICAgICAjIGV4ZWNmaWxlKCkgZG9lc24ndCBoZWxwIGFzIHdlIHdhbnQgdG8gYWxsb3cgY29tcGlsZWQgZmlsZXMKICAgICAgICAgY29kZSwgbW9kX2xvYWRlciA9IF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIHBhdGhfbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBiOWE3YWQxLi4yZTZiMDBhIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC03MSwxMCArNzEsMTAgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGt3YXJncyBpcyBfc2VudGluZWw6CiAgICAgICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBldmVudCA9IEV2ZW50KHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MpCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKICAgICAgICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKLSAgICAgICAgICAgIHJldHVybiBldmVudCAjIFRoZSBJRAorICAgICAgICByZXR1cm4gZXZlbnQgIyBUaGUgSUQKIAogICAgIGRlZiBlbnRlcihzZWxmLCBkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9KCksIGt3YXJncz1fc2VudGluZWwpOgogICAgICAgICAiIiJBIHZhcmlhbnQgdGhhdCBzcGVjaWZpZXMgdGhlIHRpbWUgYXMgYSByZWxhdGl2ZSB0aW1lLgpAQCAtODIsOSArODIsOCBAQAogICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IHRoZSBtb3JlIGNvbW1vbmx5IHVzZWQgaW50ZXJmYWNlLgogCiAgICAgICAgICIiIgotICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICB0aW1lID0gc2VsZi50aW1lZnVuYygpICsgZGVsYXkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmVudGVyYWJzKHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MpCisgICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQorICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKQogCiAgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudCk6CiAgICAgICAgICIiIlJlbW92ZSBhbiBldmVudCBmcm9tIHRoZSBxdWV1ZS4KQEAgLTE2NSw0ICsxNjQsNCBAQAogICAgICAgICAjIHRoZSBhY3R1YWwgb3JkZXIgdGhleSB3b3VsZCBiZSByZXRyaWV2ZWQuCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIGV2ZW50cyA9IHNlbGYuX3F1ZXVlWzpdCi0gICAgICAgICAgICByZXR1cm4gbGlzdChtYXAoaGVhcHEuaGVhcHBvcCwgW2V2ZW50c10qbGVuKGV2ZW50cykpKQorICAgICAgICByZXR1cm4gbGlzdChtYXAoaGVhcHEuaGVhcHBvcCwgW2V2ZW50c10qbGVuKGV2ZW50cykpKQpkaWZmIC0tZ2l0IGEvTGliL3NoZWx2ZS5weSBiL0xpYi9zaGVsdmUucHkKaW5kZXggY2MxODE1ZS4uY2VmNTgwZSAxMDA2NDQKLS0tIGEvTGliL3NoZWx2ZS5weQorKysgYi9MaWIvc2hlbHZlLnB5CkBAIC02MSw3ICs2MSw3IEBACiAKIGltcG9ydCBjb2xsZWN0aW9ucwogCi1fX2FsbF9fID0gWyJTaGVsZiIsIkJzZERiU2hlbGYiLCJEYmZpbGVuYW1lU2hlbGYiLCJvcGVuIl0KK19fYWxsX18gPSBbIlNoZWxmIiwgIkJzZERiU2hlbGYiLCAiRGJmaWxlbmFtZVNoZWxmIiwgIm9wZW4iXQogCiBjbGFzcyBfQ2xvc2VkRGljdChjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CiAgICAgJ01hcmtlciBmb3IgYSBjbG9zZWQgZGljdC4gIEFjY2VzcyBhdHRlbXB0cyByYWlzZSBhIFZhbHVlRXJyb3IuJwpAQCAtMTMxLDYgKzEzMSwxMiBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5zeW5jKCkKICAgICAgICAgdHJ5OgpAQCAtMTQ3LDYgKzE1Myw3IEBACiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICd3cml0ZWJhY2snKToKICAgICAgICAgICAgICMgX19pbml0X18gZGlkbid0IHN1Y2NlZWQsIHNvIGRvbid0IGJvdGhlciBjbG9zaW5nCisgICAgICAgICAgICAjIHNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTMzOTAwNyBmb3IgZGV0YWlscwogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuY2xvc2UoKQogCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCAzOTA0ZjQzLi42ODc5ZDhiIDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTM5LDE3ICszOSwyMCBAQAogICAgICAgICAgICAiaWdub3JlX3BhdHRlcm5zIiwgImNob3duIiwgIndoaWNoIl0KICAgICAgICAgICAgIyBkaXNrX3VzYWdlIGlzIGFkZGVkIGxhdGVyLCBpZiBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtCiAKLWNsYXNzIEVycm9yKEVudmlyb25tZW50RXJyb3IpOgorY2xhc3MgRXJyb3IoT1NFcnJvcik6CiAgICAgcGFzcwogCi1jbGFzcyBTcGVjaWFsRmlsZUVycm9yKEVudmlyb25tZW50RXJyb3IpOgorY2xhc3MgU2FtZUZpbGVFcnJvcihFcnJvcik6CisgICAgIiIiUmFpc2VkIHdoZW4gc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUgZmlsZS4iIiIKKworY2xhc3MgU3BlY2lhbEZpbGVFcnJvcihPU0Vycm9yKToKICAgICAiIiJSYWlzZWQgd2hlbiB0cnlpbmcgdG8gZG8gYSBraW5kIG9mIG9wZXJhdGlvbiAoZS5nLiBjb3B5aW5nKSB3aGljaCBpcwogICAgIG5vdCBzdXBwb3J0ZWQgb24gYSBzcGVjaWFsIGZpbGUgKGUuZy4gYSBuYW1lZCBwaXBlKSIiIgogCi1jbGFzcyBFeGVjRXJyb3IoRW52aXJvbm1lbnRFcnJvcik6CitjbGFzcyBFeGVjRXJyb3IoT1NFcnJvcik6CiAgICAgIiIiUmFpc2VkIHdoZW4gYSBjb21tYW5kIGNvdWxkIG5vdCBiZSBleGVjdXRlZCIiIgogCi1jbGFzcyBSZWFkRXJyb3IoRW52aXJvbm1lbnRFcnJvcik6CitjbGFzcyBSZWFkRXJyb3IoT1NFcnJvcik6CiAgICAgIiIiUmFpc2VkIHdoZW4gYW4gYXJjaGl2ZSBjYW5ub3QgYmUgcmVhZCIiIgogCiBjbGFzcyBSZWdpc3RyeUVycm9yKEV4Y2VwdGlvbik6CkBAIC01NywxMSArNjAsNiBAQAogICAgIGFuZCB1bnBhY2tpbmcgcmVnaXN0ZXJpZXMgZmFpbHMiIiIKIAogCi10cnk6Ci0gICAgV2luZG93c0Vycm9yCi1leGNlcHQgTmFtZUVycm9yOgotICAgIFdpbmRvd3NFcnJvciA9IE5vbmUKLQogZGVmIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QsIGxlbmd0aD0xNioxMDI0KToKICAgICAiIiJjb3B5IGRhdGEgZnJvbSBmaWxlLWxpa2Ugb2JqZWN0IGZzcmMgdG8gZmlsZS1saWtlIG9iamVjdCBmZHN0IiIiCiAgICAgd2hpbGUgMToKQEAgLTkwLDcgKzg4LDcgQEAKIAogICAgICIiIgogICAgIGlmIF9zYW1lZmlsZShzcmMsIGRzdCk6Ci0gICAgICAgIHJhaXNlIEVycm9yKCJgJXNgIGFuZCBgJXNgIGFyZSB0aGUgc2FtZSBmaWxlIiAlIChzcmMsIGRzdCkpCisgICAgICAgIHJhaXNlIFNhbWVGaWxlRXJyb3IoInshcn0gYW5kIHshcn0gYXJlIHRoZSBzYW1lIGZpbGUiLmZvcm1hdChzcmMsIGRzdCkpCiAKICAgICBmb3IgZm4gaW4gW3NyYywgZHN0XToKICAgICAgICAgdHJ5OgpAQCAtMjIxLDYgKzIxOSw5IEBACiAgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4gVGhpcwogICAgIHJlc2VtYmxlcyBHTlUncyAiY3AgLVAgc3JjIGRzdCIuCiAKKyAgICBJZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZSBmaWxlLCBhIFNhbWVGaWxlRXJyb3Igd2lsbCBiZQorICAgIHJhaXNlZC4KKwogICAgICIiIgogICAgIGlmIG9zLnBhdGguaXNkaXIoZHN0KToKICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGRzdCwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQpAQCAtMzI5LDE1ICszMzAsMTMgQEAKICAgICAgICAgIyBjb250aW51ZSB3aXRoIG90aGVyIGZpbGVzCiAgICAgICAgIGV4Y2VwdCBFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBlcnJvcnMuZXh0ZW5kKGVyci5hcmdzWzBdKQotICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyB3aHk6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHNyY25hbWUsIGRzdG5hbWUsIHN0cih3aHkpKSkKICAgICB0cnk6CiAgICAgICAgIGNvcHlzdGF0KHNyYywgZHN0KQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKLSAgICAgICAgaWYgV2luZG93c0Vycm9yIGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKHdoeSwgV2luZG93c0Vycm9yKToKLSAgICAgICAgICAgICMgQ29weWluZyBmaWxlIGFjY2VzcyB0aW1lcyBtYXkgZmFpbCBvbiBXaW5kb3dzCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6CisgICAgICAgICMgQ29weWluZyBmaWxlIGFjY2VzcyB0aW1lcyBtYXkgZmFpbCBvbiBXaW5kb3dzCisgICAgICAgIGlmIHdoeS53aW5lcnJvciBpcyBOb25lOgogICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoc3JjLCBkc3QsIHN0cih3aHkpKSkKICAgICBpZiBlcnJvcnM6CiAgICAgICAgIHJhaXNlIEVycm9yKGVycm9ycykKQEAgLTM1NiwyNCArMzU1LDI0IEBACiAgICAgbmFtZXMgPSBbXQogICAgIHRyeToKICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBvbmVycm9yKG9zLmxpc3RkaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtb2RlID0gb3MubHN0YXQoZnVsbG5hbWUpLnN0X21vZGUKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIG1vZGUgPSAwCiAgICAgICAgIGlmIHN0YXQuU19JU0RJUihtb2RlKToKICAgICAgICAgICAgIF9ybXRyZWVfdW5zYWZlKGZ1bGxuYW1lLCBvbmVycm9yKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnVubGluayhmdWxsbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MudW5saW5rLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCiAgICAgdHJ5OgogICAgICAgICBvcy5ybWRpcihwYXRoKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgb25lcnJvcihvcy5ybWRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAKICMgVmVyc2lvbiB1c2luZyBmZC1iYXNlZCBBUElzIHRvIHByb3RlY3QgYWdhaW5zdCByYWNlcwpAQCAtNDY0LDcgKzQ2Myw3IEBACiAgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGZkLCBwYXRoLCBvbmVycm9yKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIocGF0aCkKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IDEzZTczMzYuLjc3ZDE5OGEgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC01OCwxNyArNTgsMjEgQEAKIGJlY2F1c2UgYmFyLnB0aCBjb21lcyBhbHBoYWJldGljYWxseSBiZWZvcmUgZm9vLnB0aDsgYW5kIHNwYW0gaXMKIG9taXR0ZWQgYmVjYXVzZSBpdCBpcyBub3QgbWVudGlvbmVkIGluIGVpdGhlciBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZS4KIAotQWZ0ZXIgdGhlc2UgcGF0aCBtYW5pcHVsYXRpb25zLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW1wb3J0IGEgbW9kdWxlCitUaGUgcmVhZGxpbmUgbW9kdWxlIGlzIGFsc28gYXV0b21hdGljYWxseSBjb25maWd1cmVkIHRvIGVuYWJsZQorY29tcGxldGlvbiBmb3Igc3lzdGVtcyB0aGF0IHN1cHBvcnQgaXQuICBUaGlzIGNhbiBiZSBvdmVycmlkZW4gaW4KK3NpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4KKworQWZ0ZXIgdGhlc2Ugb3BlcmF0aW9ucywgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGltcG9ydCBhIG1vZHVsZQogbmFtZWQgc2l0ZWN1c3RvbWl6ZSwgd2hpY2ggY2FuIHBlcmZvcm0gYXJiaXRyYXJ5IGFkZGl0aW9uYWwKIHNpdGUtc3BlY2lmaWMgY3VzdG9taXphdGlvbnMuICBJZiB0aGlzIGltcG9ydCBmYWlscyB3aXRoIGFuCiBJbXBvcnRFcnJvciBleGNlcHRpb24sIGl0IGlzIHNpbGVudGx5IGlnbm9yZWQuCi0KICIiIgogCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgX3NpdGVidWlsdGlucwogCiAjIFByZWZpeGVzIGZvciBzaXRlLXBhY2thZ2VzOyBhZGQgYWRkaXRpb25hbCBwcmVmaXhlcyBsaWtlIC91c3IvbG9jYWwgaGVyZQogUFJFRklYRVMgPSBbc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4XQpAQCAtMTQ2LDE0ICsxNTAsMTQgQEAKICAgICAgICBhbmQgYWRkIHRoYXQgdG8ga25vd25fcGF0aHMsIG9yIGV4ZWN1dGUgaXQgaWYgaXQgc3RhcnRzIHdpdGggJ2ltcG9ydCAnLgogICAgICIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6Ci0gICAgICAgIF9pbml0X3BhdGhpbmZvKCkKKyAgICAgICAga25vd25fcGF0aHMgPSBfaW5pdF9wYXRoaW5mbygpCiAgICAgICAgIHJlc2V0ID0gMQogICAgIGVsc2U6CiAgICAgICAgIHJlc2V0ID0gMAogICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHNpdGVkaXIsIG5hbWUpCiAgICAgdHJ5OgogICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInIiKQotICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4KICAgICB3aXRoIGY6CiAgICAgICAgIGZvciBuLCBsaW5lIGluIGVudW1lcmF0ZShmKToKQEAgLTE5Niw3ICsyMDAsNyBAQAogICAgICAgICBrbm93bl9wYXRocy5hZGQoc2l0ZWRpcmNhc2UpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc2l0ZWRpcikKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybgogICAgIG5hbWVzID0gW25hbWUgZm9yIG5hbWUgaW4gbmFtZXMgaWYgbmFtZS5lbmRzd2l0aCgiLnB0aCIpXQogICAgIGZvciBuYW1lIGluIHNvcnRlZChuYW1lcyk6CkBAIC0zMDAsOSArMzA0LDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNlZW4uYWRkKHByZWZpeCkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6Ci0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6CisgICAgICAgIGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCkBAIC0zMjksMjMgKzMzMSw2IEBACiAKICAgICByZXR1cm4ga25vd25fcGF0aHMKIAotZGVmIHNldEJFR0lOTElCUEFUSCgpOgotICAgICIiIlRoZSBPUy8yIEVNWCBwb3J0IGhhcyBvcHRpb25hbCBleHRlbnNpb24gbW9kdWxlcyB0aGF0IGRvIGRvdWJsZSBkdXR5Ci0gICAgYXMgRExMcyAoYW5kIG11c3QgdXNlIHRoZSAuRExMIGZpbGUgZXh0ZW5zaW9uKSBmb3Igb3RoZXIgZXh0ZW5zaW9ucy4KLSAgICBUaGUgbGlicmFyeSBzZWFyY2ggcGF0aCBuZWVkcyB0byBiZSBhbWVuZGVkIHNvIHRoZXNlIHdpbGwgYmUgZm91bmQKLSAgICBkdXJpbmcgbW9kdWxlIGltcG9ydC4gIFVzZSBCRUdJTkxJQlBBVEggc28gdGhhdCB0aGVzZSBhcmUgYXQgdGhlIHN0YXJ0Ci0gICAgb2YgdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGguCi0KLSAgICAiIiIKLSAgICBkbGxwYXRoID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICJMaWIiLCAibGliLWR5bmxvYWQiKQotICAgIGxpYnBhdGggPSBvcy5lbnZpcm9uWydCRUdJTkxJQlBBVEgnXS5zcGxpdCgnOycpCi0gICAgaWYgbGlicGF0aFstMV06Ci0gICAgICAgIGxpYnBhdGguYXBwZW5kKGRsbHBhdGgpCi0gICAgZWxzZToKLSAgICAgICAgbGlicGF0aFstMV0gPSBkbGxwYXRoCi0gICAgb3MuZW52aXJvblsnQkVHSU5MSUJQQVRIJ10gPSAnOycuam9pbihsaWJwYXRoKQotCi0KIGRlZiBzZXRxdWl0KCk6CiAgICAgIiIiRGVmaW5lIG5ldyBidWlsdGlucyAncXVpdCcgYW5kICdleGl0Jy4KIApAQCAtMzYwLDExNyArMzQ1LDcyIEBACiAgICAgZWxzZToKICAgICAgICAgZW9mID0gJ0N0cmwtRCAoaS5lLiBFT0YpJwogCi0gICAgY2xhc3MgUXVpdHRlcihvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAnVXNlICVzKCkgb3IgJXMgdG8gZXhpdCcgJSAoc2VsZi5uYW1lLCBlb2YpCi0gICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBjb2RlPU5vbmUpOgotICAgICAgICAgICAgIyBTaGVsbHMgbGlrZSBJRExFIGNhdGNoIHRoZSBTeXN0ZW1FeGl0LCBidXQgbGlzdGVuIHdoZW4gdGhlaXIKLSAgICAgICAgICAgICMgc3RkaW4gd3JhcHBlciBpcyBjbG9zZWQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGluLmNsb3NlKCkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KGNvZGUpCi0gICAgYnVpbHRpbnMucXVpdCA9IFF1aXR0ZXIoJ3F1aXQnKQotICAgIGJ1aWx0aW5zLmV4aXQgPSBRdWl0dGVyKCdleGl0JykKKyAgICBidWlsdGlucy5xdWl0ID0gX3NpdGVidWlsdGlucy5RdWl0dGVyKCdxdWl0JywgZW9mKQorICAgIGJ1aWx0aW5zLmV4aXQgPSBfc2l0ZWJ1aWx0aW5zLlF1aXR0ZXIoJ2V4aXQnLCBlb2YpCiAKIAotY2xhc3MgX1ByaW50ZXIob2JqZWN0KToKLSAgICAiIiJpbnRlcmFjdGl2ZSBwcm9tcHQgb2JqZWN0cyBmb3IgcHJpbnRpbmcgdGhlIGxpY2Vuc2UgdGV4dCwgYSBsaXN0IG9mCi0gICAgY29udHJpYnV0b3JzIGFuZCB0aGUgY29weXJpZ2h0IG5vdGljZS4iIiIKLQotICAgIE1BWExJTkVTID0gMjMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkYXRhLCBmaWxlcz0oKSwgZGlycz0oKSk6Ci0gICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQotICAgICAgICBzZWxmLl9fZGF0YSA9IGRhdGEKLSAgICAgICAgc2VsZi5fX2ZpbGVzID0gZmlsZXMKLSAgICAgICAgc2VsZi5fX2RpcnMgPSBkaXJzCi0gICAgICAgIHNlbGYuX19saW5lcyA9IE5vbmUKLQotICAgIGRlZiBfX3NldHVwKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9fbGluZXM6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZGF0YSA9IE5vbmUKLSAgICAgICAgZm9yIGRpciBpbiBzZWxmLl9fZGlyczoKLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBzZWxmLl9fZmlsZXM6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInIiKQotICAgICAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCi0gICAgICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgaWYgZGF0YToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9fZGF0YQotICAgICAgICBzZWxmLl9fbGluZXMgPSBkYXRhLnNwbGl0KCdcbicpCi0gICAgICAgIHNlbGYuX19saW5lY250ID0gbGVuKHNlbGYuX19saW5lcykKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fX3NldHVwKCkKLSAgICAgICAgaWYgbGVuKHNlbGYuX19saW5lcykgPD0gc2VsZi5NQVhMSU5FUzoKLSAgICAgICAgICAgIHJldHVybiAiXG4iLmpvaW4oc2VsZi5fX2xpbmVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJUeXBlICVzKCkgdG8gc2VlIHRoZSBmdWxsICVzIHRleHQiICUgKChzZWxmLl9fbmFtZSwpKjIpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX19zZXR1cCgpCi0gICAgICAgIHByb21wdCA9ICdIaXQgUmV0dXJuIGZvciBtb3JlLCBvciBxIChhbmQgUmV0dXJuKSB0byBxdWl0OiAnCi0gICAgICAgIGxpbmVubyA9IDAKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsaW5lbm8sIGxpbmVubyArIHNlbGYuTUFYTElORVMpOgotICAgICAgICAgICAgICAgICAgICBwcmludChzZWxmLl9fbGluZXNbaV0pCi0gICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lbm8gKz0gc2VsZi5NQVhMSU5FUwotICAgICAgICAgICAgICAgIGtleSA9IE5vbmUKLSAgICAgICAgICAgICAgICB3aGlsZSBrZXkgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAga2V5ID0gaW5wdXQocHJvbXB0KQotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluICgnJywgJ3EnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBrZXkgPT0gJ3EnOgotICAgICAgICAgICAgICAgICAgICBicmVhawotCiBkZWYgc2V0Y29weXJpZ2h0KCk6CiAgICAgIiIiU2V0ICdjb3B5cmlnaHQnIGFuZCAnY3JlZGl0cycgaW4gYnVpbHRpbnMiIiIKLSAgICBidWlsdGlucy5jb3B5cmlnaHQgPSBfUHJpbnRlcigiY29weXJpZ2h0Iiwgc3lzLmNvcHlyaWdodCkKKyAgICBidWlsdGlucy5jb3B5cmlnaHQgPSBfc2l0ZWJ1aWx0aW5zLl9QcmludGVyKCJjb3B5cmlnaHQiLCBzeXMuY29weXJpZ2h0KQogICAgIGlmIHN5cy5wbGF0Zm9ybVs6NF0gPT0gJ2phdmEnOgotICAgICAgICBidWlsdGlucy5jcmVkaXRzID0gX1ByaW50ZXIoCisgICAgICAgIGJ1aWx0aW5zLmNyZWRpdHMgPSBfc2l0ZWJ1aWx0aW5zLl9QcmludGVyKAogICAgICAgICAgICAgImNyZWRpdHMiLAogICAgICAgICAgICAgIkp5dGhvbiBpcyBtYWludGFpbmVkIGJ5IHRoZSBKeXRob24gZGV2ZWxvcGVycyAod3d3Lmp5dGhvbi5vcmcpLiIpCiAgICAgZWxzZToKLSAgICAgICAgYnVpbHRpbnMuY3JlZGl0cyA9IF9QcmludGVyKCJjcmVkaXRzIiwgIiIiXAorICAgICAgICBidWlsdGlucy5jcmVkaXRzID0gX3NpdGVidWlsdGlucy5fUHJpbnRlcigiY3JlZGl0cyIsICIiIlwKICAgICBUaGFua3MgdG8gQ1dJLCBDTlJJLCBCZU9wZW4uY29tLCBab3BlIENvcnBvcmF0aW9uIGFuZCBhIGNhc3Qgb2YgdGhvdXNhbmRzCiAgICAgZm9yIHN1cHBvcnRpbmcgUHl0aG9uIGRldmVsb3BtZW50LiAgU2VlIHd3dy5weXRob24ub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIiIikKICAgICBoZXJlID0gb3MucGF0aC5kaXJuYW1lKG9zLl9fZmlsZV9fKQotICAgIGJ1aWx0aW5zLmxpY2Vuc2UgPSBfUHJpbnRlcigKKyAgICBidWlsdGlucy5saWNlbnNlID0gX3NpdGVidWlsdGlucy5fUHJpbnRlcigKICAgICAgICAgImxpY2Vuc2UiLCAiU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8lLjNzL2xpY2Vuc2UuaHRtbCIgJSBzeXMudmVyc2lvbiwKICAgICAgICAgWyJMSUNFTlNFLnR4dCIsICJMSUNFTlNFIl0sCiAgICAgICAgIFtvcy5wYXRoLmpvaW4oaGVyZSwgb3MucGFyZGlyKSwgaGVyZSwgb3MuY3VyZGlyXSkKIAogCi1jbGFzcyBfSGVscGVyKG9iamVjdCk6Ci0gICAgIiIiRGVmaW5lIHRoZSBidWlsdGluICdoZWxwJy4KLSAgICBUaGlzIGlzIGEgd3JhcHBlciBhcm91bmQgcHlkb2MuaGVscCAod2l0aCBhIHR3aXN0KS4KLQotICAgICIiIgotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIlR5cGUgaGVscCgpIGZvciBpbnRlcmFjdGl2ZSBoZWxwLCAiIFwKLSAgICAgICAgICAgICAgICJvciBoZWxwKG9iamVjdCkgZm9yIGhlbHAgYWJvdXQgb2JqZWN0LiIKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgIGltcG9ydCBweWRvYwotICAgICAgICByZXR1cm4gcHlkb2MuaGVscCgqYXJncywgKiprd2RzKQotCiBkZWYgc2V0aGVscGVyKCk6Ci0gICAgYnVpbHRpbnMuaGVscCA9IF9IZWxwZXIoKQorICAgIGJ1aWx0aW5zLmhlbHAgPSBfc2l0ZWJ1aWx0aW5zLl9IZWxwZXIoKQorCitkZWYgZW5hYmxlcmxjb21wbGV0ZXIoKToKKyAgICAiIiJFbmFibGUgZGVmYXVsdCByZWFkbGluZSBjb25maWd1cmF0aW9uIG9uIGludGVyYWN0aXZlIHByb21wdHMsIGJ5CisgICAgcmVnaXN0ZXJpbmcgYSBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfXy4KKworICAgIElmIHRoZSByZWFkbGluZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkLCB0aGUgaG9vayB3aWxsIHNldCB0aGUgVGFiIGtleQorICAgIGFzIGNvbXBsZXRpb24ga2V5IGFuZCByZWdpc3RlciB+Ly5weXRob25faGlzdG9yeSBhcyBoaXN0b3J5IGZpbGUuCisgICAgVGhpcyBjYW4gYmUgb3ZlcnJpZGVuIGluIHRoZSBzaXRlY3VzdG9taXplIG9yIHVzZXJjdXN0b21pemUgbW9kdWxlLAorICAgIG9yIGluIGEgUFlUSE9OU1RBUlRVUCBmaWxlLgorICAgICIiIgorICAgIGRlZiByZWdpc3Rlcl9yZWFkbGluZSgpOgorICAgICAgICBpbXBvcnQgYXRleGl0CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQorICAgICAgICAgICAgaW1wb3J0IHJsY29tcGxldGVyCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgUmVhZGluZyB0aGUgaW5pdGlhbGl6YXRpb24gKGNvbmZpZykgZmlsZSBtYXkgbm90IGJlIGVub3VnaCB0byBzZXQgYQorICAgICAgICAjIGNvbXBsZXRpb24ga2V5LCBzbyB3ZSBzZXQgb25lIGZpcnN0IGFuZCB0aGVuIHJlYWQgdGhlIGZpbGUKKyAgICAgICAgaWYgJ2xpYmVkaXQnIGluIGdldGF0dHIocmVhZGxpbmUsICdfX2RvY19fJywgJycpOgorICAgICAgICAgICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoJ2JpbmQgXkkgcmxfY29tcGxldGUnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoJ3RhYjogY29tcGxldGUnKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYWRsaW5lLnJlYWRfaW5pdF9maWxlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIEFuIE9TRXJyb3IgaGVyZSBjb3VsZCBoYXZlIG1hbnkgY2F1c2VzLCBidXQgdGhlIG1vc3QgbGlrZWx5IG9uZQorICAgICAgICAgICAgIyBpcyB0aGF0IHRoZXJlJ3Mgbm8gLmlucHV0cmMgZmlsZSAob3IgLmVkaXRyYyBmaWxlIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAjIE1hYyBPUyBYICsgbGliZWRpdCkgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiAgSW4gdGhhdCBjYXNlLCB3ZQorICAgICAgICAgICAgIyB3YW50IHRvIGlnbm9yZSB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGhpc3RvcnkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCd+JyksICcucHl0aG9uX2hpc3RvcnknKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoaXN0b3J5KQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXRleGl0LnJlZ2lzdGVyKHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSwgaGlzdG9yeSkKKworICAgIHN5cy5fX2ludGVyYWN0aXZlaG9va19fID0gcmVnaXN0ZXJfcmVhZGxpbmUKIAogZGVmIGFsaWFzbWJjcygpOgogICAgICIiIk9uIFdpbmRvd3MsIHNvbWUgZGVmYXVsdCBlbmNvZGluZ3MgYXJlIG5vdCBwcm92aWRlZCBieSBQeXRob24sCkBAIC01ODgsMTEgKzUyOCwxMCBAQAogICAgICAgICBFTkFCTEVfVVNFUl9TSVRFID0gY2hlY2tfZW5hYmxldXNlcnNpdGUoKQogICAgIGtub3duX3BhdGhzID0gYWRkdXNlcnNpdGVwYWNrYWdlcyhrbm93bl9wYXRocykKICAgICBrbm93bl9wYXRocyA9IGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocykKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ29zMmVteCc6Ci0gICAgICAgIHNldEJFR0lOTElCUEFUSCgpCiAgICAgc2V0cXVpdCgpCiAgICAgc2V0Y29weXJpZ2h0KCkKICAgICBzZXRoZWxwZXIoKQorICAgIGVuYWJsZXJsY29tcGxldGVyKCkKICAgICBhbGlhc21iY3MoKQogICAgIGV4ZWNzaXRlY3VzdG9taXplKCkKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFOgpkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IDc3OGQ2ZDYuLmYyODAzNmEgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTEyMSw4ICsxMjEsOSBAQAogICAgICAgICB9KQogICAgIG1heF9jb21tYW5kX3NpemVfbGltaXQgPSBtYXgoY29tbWFuZF9zaXplX2xpbWl0cy52YWx1ZXMoKSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCk6Ci0gICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgIG1hcD1Ob25lKToKKyAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uLCBtYXA9bWFwKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCiAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICAgc2VsZi5hZGRyID0gYWRkcgpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlcnI6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZwogICAgICAgICAgICAgIyBiZWZvcmUgd2UgY2FuIGdldCB0aGUgcGVlcm5hbWUKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQpAQCAtNTc2LDExICs1NzcsMTEgQEAKICAgICBjaGFubmVsX2NsYXNzID0gU01UUENoYW5uZWwKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCi0gICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCk6CisgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUpOgogICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBsb2NhbGFkZHIKICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IHJlbW90ZWFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKLSAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQorICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1tYXApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICAgIyB0cnkgdG8gcmUtdXNlIGEgc2VydmVyIHBvcnQgaWYgcG9zc2libGUKQEAgLTU5Nyw3ICs1OTgsOCBAQAogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKICAgICAgICAgcHJpbnQoJ0luY29taW5nIGNvbm5lY3Rpb24gZnJvbSAlcycgJSByZXByKGFkZHIpLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0KQorICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcCkKIAogICAgICMgQVBJIGZvciAiZG9pbmcgc29tZXRoaW5nIHVzZWZ1bCB3aXRoIHRoZSBtZXNzYWdlIgogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgpAQCAtNjY4LDcgKzY3MCw3IEBACiAgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBSZWNpcGllbnRzUmVmdXNlZCBhcyBlOgogICAgICAgICAgICAgcHJpbnQoJ2dvdCBTTVRQUmVjaXBpZW50c1JlZnVzZWQnLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICAgICAgcmVmdXNlZCA9IGUucmVjaXBpZW50cwotICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgc210cGxpYi5TTVRQRXhjZXB0aW9uKSBhcyBlOgorICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNtdHBsaWIuU01UUEV4Y2VwdGlvbikgYXMgZToKICAgICAgICAgICAgIHByaW50KCdnb3QnLCBlLl9fY2xhc3NfXywgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgICAgICMgQWxsIHJlY2lwaWVudHMgd2VyZSByZWZ1c2VkLiAgSWYgdGhlIGV4Y2VwdGlvbiBoYWQgYW4gYXNzb2NpYXRlZAogICAgICAgICAgICAgIyBlcnJvciBjb2RlLCB1c2UgaXQuICBPdGhlcndpc2UsZmFrZSBpdCB3aXRoIGEgbm9uLXRyaWdnZXJpbmcKQEAgLTg1MCw4ICs4NTIsNyBAQAogICAgICAgICBub2JvZHkgPSBwd2QuZ2V0cHduYW0oJ25vYm9keScpWzJdCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnNldHVpZChub2JvZHkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQRVJNOiByYWlzZQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcHJpbnQoJ0Nhbm5vdCBzZXR1aWQgIm5vYm9keSI7IHRyeSBydW5uaW5nIHdpdGggLW4gb3B0aW9uLicsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCAwNzJiOTczLi5lMWEzMmVkIDEwMDY0NAotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtNjYsNyArNjYsNyBAQAogT0xEU1RZTEVfQVVUSCA9IHJlLmNvbXBpbGUociJhdXRoPSguKikiLCByZS5JKQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCi1jbGFzcyBTTVRQRXhjZXB0aW9uKEV4Y2VwdGlvbik6CitjbGFzcyBTTVRQRXhjZXB0aW9uKE9TRXJyb3IpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIGFsbCBleGNlcHRpb25zIHJhaXNlZCBieSB0aGlzIG1vZHVsZS4iIiIKIAogY2xhc3MgU01UUFNlcnZlckRpc2Nvbm5lY3RlZChTTVRQRXhjZXB0aW9uKToKQEAgLTMxMSw3ICszMTEsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoIm5vbm51bWVyaWMgcG9ydCIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIm5vbm51bWVyaWMgcG9ydCIpCiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcG9ydCA9IHNlbGYuZGVmYXVsdF9wb3J0CiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CkBAIC0zMzIsNyArMzMyLDcgQEAKICAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoImFzY2lpIikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChzKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoJ1NlcnZlciBub3QgY29ubmVjdGVkJykKICAgICAgICAgZWxzZToKQEAgLTM2NSw3ICszNjUsNyBAQAogICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLmZpbGUucmVhZGxpbmUoKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZSBTTVRQU2VydmVyRGlzY29ubmVjdGVkKCJDb25uZWN0aW9uIHVuZXhwZWN0ZWRseSBjbG9zZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKGUpKQpAQCAtOTM0LDcgKzkzNCw3IEBACiAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChob3N0KQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3QgZmFpbDonLCBob3N0LCBmaWxlPXN0ZGVycikKICAgICAgICAgICAgIGlmIHNlbGYuc29jazoKZGlmZiAtLWdpdCBhL0xpYi9zbmRoZHIucHkgYi9MaWIvc25kaGRyLnB5CmluZGV4IDlmNWRjYzkuLjI0MGU1MDcgMTAwNjQ0Ci0tLSBhL0xpYi9zbmRoZHIucHkKKysrIGIvTGliL3NuZGhkci5weQpAQCAtMTEsNyArMTEsNyBAQAogLSBudW1iZXIgb2YgYml0cy9zYW1wbGUsIG9yICdVJyBmb3IgVS1MQVcsIG9yICdBJyBmb3IgQS1MQVcKIAogSWYgdGhlIGZpbGUgZG9lc24ndCBoYXZlIGEgcmVjb2duaXphYmxlIHR5cGUsIGl0IHJldHVybnMgTm9uZS4KLUlmIHRoZSBmaWxlIGNhbid0IGJlIG9wZW5lZCwgSU9FcnJvciBpcyByYWlzZWQuCitJZiB0aGUgZmlsZSBjYW4ndCBiZSBvcGVuZWQsIE9TRXJyb3IgaXMgcmFpc2VkLgogCiBUbyBjb21wdXRlIHRoZSB0b3RhbCB0aW1lLCBkaXZpZGUgdGhlIG51bWJlciBvZiBmcmFtZXMgYnkgdGhlCiBzYW1wbGluZyByYXRlIChhIGZyYW1lIGNvbnRhaW5zIGEgc2FtcGxlIGZvciBlYWNoIGNoYW5uZWwpLgpAQCAtMTM3LDE0ICsxMzcsMTcgQEAKIAogCiBkZWYgdGVzdF93YXYoaCwgZik6CisgICAgaW1wb3J0IHdhdmUKICAgICAjICdSSUZGJyA8bGVuPiAnV0FWRScgJ2ZtdCAnIDxsZW4+CiAgICAgaWYgbm90IGguc3RhcnRzd2l0aChiJ1JJRkYnKSBvciBoWzg6MTJdICE9IGInV0FWRScgb3IgaFsxMjoxNl0gIT0gYidmbXQgJzoKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBzdHlsZSA9IGdldF9zaG9ydF9sZShoWzIwOjIyXSkKLSAgICBuY2hhbm5lbHMgPSBnZXRfc2hvcnRfbGUoaFsyMjoyNF0pCi0gICAgcmF0ZSA9IGdldF9sb25nX2xlKGhbMjQ6MjhdKQotICAgIHNhbXBsZV9iaXRzID0gZ2V0X3Nob3J0X2xlKGhbMzQ6MzZdKQotICAgIHJldHVybiAnd2F2JywgcmF0ZSwgbmNoYW5uZWxzLCAtMSwgc2FtcGxlX2JpdHMKKyAgICBmLnNlZWsoMCkKKyAgICB0cnk6CisgICAgICAgIHcgPSB3YXZlLm9wZW5mcChmLCAncicpCisgICAgZXhjZXB0IChFT0ZFcnJvciwgd2F2ZS5FcnJvcik6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuICgnd2F2Jywgdy5nZXRmcmFtZXJhdGUoKSwgdy5nZXRuY2hhbm5lbHMoKSwKKyAgICAgICAgICAgICAgICAgICB3LmdldG5mcmFtZXMoKSwgOCp3LmdldHNhbXB3aWR0aCgpKQogCiB0ZXN0cy5hcHBlbmQodGVzdF93YXYpCiAKQEAgLTIzMCw3ICsyMzMsNyBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcHJpbnQod2hhdChmaWxlbmFtZSkpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHByaW50KCcqKiogbm90IGZvdW5kICoqKicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCBkNGYxYjY1Li45NmY4ZWQwIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTEwMywxMyArMTAzLDMyIEBACiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgIiIiV3JhcCBfX3JlcHJfXygpIHRvIHJldmVhbCB0aGUgcmVhbCBjbGFzcyBuYW1lLiIiIgotICAgICAgICBzID0gX3NvY2tldC5zb2NrZXQuX19yZXByX18oc2VsZikKLSAgICAgICAgaWYgcy5zdGFydHN3aXRoKCI8c29ja2V0IG9iamVjdCIpOgotICAgICAgICAgICAgcyA9ICI8JXMuJXMlcyVzIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCAnX2Nsb3NlZCcsIEZhbHNlKSBhbmQgIiBbY2xvc2VkXSAiIG9yICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzWzc6XSkKKyAgICAgICAgIiIiV3JhcCBfX3JlcHJfXygpIHRvIHJldmVhbCB0aGUgcmVhbCBjbGFzcyBuYW1lIGFuZCBzb2NrZXQKKyAgICAgICAgYWRkcmVzcyhlcykuCisgICAgICAgICIiIgorICAgICAgICBjbG9zZWQgPSBnZXRhdHRyKHNlbGYsICdfY2xvc2VkJywgRmFsc2UpCisgICAgICAgIHMgPSAiPCVzLiVzJXMgZmQ9JWksIGZhbWlseT0laSwgdHlwZT0laSwgcHJvdG89JWkiIFwKKyAgICAgICAgICAgICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICIgW2Nsb3NlZF0iIGlmIGNsb3NlZCBlbHNlICIiLAorICAgICAgICAgICAgICAgc2VsZi5maWxlbm8oKSwKKyAgICAgICAgICAgICAgIHNlbGYuZmFtaWx5LAorICAgICAgICAgICAgICAgc2VsZi50eXBlLAorICAgICAgICAgICAgICAgc2VsZi5wcm90bykKKyAgICAgICAgaWYgbm90IGNsb3NlZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsYWRkciA9IHNlbGYuZ2V0c29ja25hbWUoKQorICAgICAgICAgICAgICAgIGlmIGxhZGRyOgorICAgICAgICAgICAgICAgICAgICBzICs9ICIsIGxhZGRyPSVzIiAlIHN0cihsYWRkcikKKyAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFkZHIgPSBzZWxmLmdldHBlZXJuYW1lKCkKKyAgICAgICAgICAgICAgICBpZiByYWRkcjoKKyAgICAgICAgICAgICAgICAgICAgcyArPSAiLCByYWRkcj0lcyIgJSBzdHIocmFkZHIpCisgICAgICAgICAgICBleGNlcHQgZXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzICs9ICc+JwogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKQEAgLTI5MSw3ICszMTAsNyBAQAogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQogICAgICAgICBpZiBzZWxmLl90aW1lb3V0X29jY3VycmVkOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiY2Fubm90IHJlYWQgZnJvbSB0aW1lZCBvdXQgb2JqZWN0IikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImNhbm5vdCByZWFkIGZyb20gdGltZWQgb3V0IG9iamVjdCIpCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2sucmVjdl9pbnRvKGIpCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA4MzMyZmRmLi5lOWU0ZTRlIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTI5OSw3ICsyOTksNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLmdldF9yZXF1ZXN0KCkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgc2VsZi52ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICB0cnk6CkBAIC00NzksNyArNDc5LDcgQEAKICAgICAgICAgICAgICNleHBsaWNpdGx5IHNodXRkb3duLiAgc29ja2V0LmNsb3NlKCkgbWVyZWx5IHJlbGVhc2VzCiAgICAgICAgICAgICAjdGhlIHNvY2tldCBhbmQgd2FpdHMgZm9yIEdDIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBjbG9zZS4KICAgICAgICAgICAgIHJlcXVlc3Quc2h1dGRvd24oc29ja2V0LlNIVVRfV1IpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcyAjc29tZSBwbGF0Zm9ybXMgbWF5IHJhaXNlIEVOT1RDT05OIGhlcmUKICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCiAKQEAgLTUzMiw3ICs1MzIsNyBAQAogICAgICAgICAgICAgIyBjaGlsZHJlbi4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoMCwgMCkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBpZCA9IE5vbmUKICAgICAgICAgICAgIGlmIHBpZCBub3QgaW4gc2VsZi5hY3RpdmVfY2hpbGRyZW46IGNvbnRpbnVlCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5yZW1vdmUocGlkKQpAQCAtNTQ1LDcgKzU0NSw3IEBACiAgICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLmFjdGl2ZV9jaGlsZHJlbjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoY2hpbGQsIG9zLldOT0hBTkcpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwaWQgPSBOb25lCiAgICAgICAgICAgICBpZiBub3QgcGlkOiBjb250aW51ZQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKaW5kZXggYjdlYzFhZC4uMDQ2NDlmYyAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CkBAIC0yOCw2ICsyOCw5IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQogCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmsKKworCiBjbGFzcyBNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIENoZWNrQVBJTGV2ZWwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3FsaXRlLmFwaWxldmVsLCAiMi4wIiwKQEAgLTE2Myw2ICsxNjYsMjEgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLmN4LmluX3RyYW5zYWN0aW9uID0gVHJ1ZQogCisgICAgZGVmIENoZWNrT3BlblVyaShzZWxmKToKKyAgICAgICAgaWYgc3FsaXRlLnNxbGl0ZV92ZXJzaW9uX2luZm8gPCAoMywgNywgNyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5Ob3RTdXBwb3J0ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgc3FsaXRlLmNvbm5lY3QoJzptZW1vcnk6JywgdXJpPVRydWUpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgVEVTVEZOKQorICAgICAgICB3aXRoIHNxbGl0ZS5jb25uZWN0KFRFU1RGTikgYXMgY3g6CisgICAgICAgICAgICBjeC5leGVjdXRlKCdjcmVhdGUgdGFibGUgdGVzdChpZCBpbnRlZ2VyKScpCisgICAgICAgIHdpdGggc3FsaXRlLmNvbm5lY3QoJ2ZpbGU6JyArIFRFU1RGTiwgdXJpPVRydWUpIGFzIGN4OgorICAgICAgICAgICAgY3guZXhlY3V0ZSgnaW5zZXJ0IGludG8gdGVzdChpZCkgdmFsdWVzKDApJykKKyAgICAgICAgd2l0aCBzcWxpdGUuY29ubmVjdCgnZmlsZTonICsgVEVTVEZOICsgJz9tb2RlPXJvJywgdXJpPVRydWUpIGFzIGN4OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuT3BlcmF0aW9uYWxFcnJvcik6CisgICAgICAgICAgICAgICAgY3guZXhlY3V0ZSgnaW5zZXJ0IGludG8gdGVzdChpZCkgdmFsdWVzKDEpJykKKworCiBjbGFzcyBDdXJzb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmN4ID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCA0MGQyZDUyLi40MjlkNzc5IDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC02NSwxMyArNjUsNiBAQAogICAgICAgICBlbGlmIG9wIGluIFJFUEVBVElOR19DT0RFUzoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVEVNUExBVEU6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCB0ZW1wbGF0ZSBvcGVyYXRvciIpCi0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1JFUEVBVF0pCi0gICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKLSAgICAgICAgICAgICAgICBlbWl0KGF2WzBdKQotICAgICAgICAgICAgICAgIGVtaXQoYXZbMV0pCi0gICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tTVUNDRVNTXSkKLSAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgIGVsaWYgX3NpbXBsZShhdikgYW5kIG9wIGlzIG5vdCBSRVBFQVQ6CiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTUFYX1JFUEVBVDoKICAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1JFUEVBVF9PTkVdKQpkaWZmIC0tZ2l0IGEvTGliL3NzbC5weSBiL0xpYi9zc2wucHkKaW5kZXggMzBlZTEzYi4uMmM4MWE1NCAxMDA2NDQKLS0tIGEvTGliL3NzbC5weQorKysgYi9MaWIvc3NsLnB5CkBAIC01MiwxMCArNTIsNDYgQEAKIFBST1RPQ09MX1NTTHYzCiBQUk9UT0NPTF9TU0x2MjMKIFBST1RPQ09MX1RMU3YxCitQUk9UT0NPTF9UTFN2MV8xCitQUk9UT0NPTF9UTFN2MV8yCisKK1RoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGlkZW50aWZ5IHZhcmlvdXMgU1NMIGFsZXJ0IG1lc3NhZ2UgZGVzY3JpcHRpb25zIGFzIHBlcgoraHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy90bHMtcGFyYW1ldGVycy90bHMtcGFyYW1ldGVycy54bWwjdGxzLXBhcmFtZXRlcnMtNgorCitBTEVSVF9ERVNDUklQVElPTl9DTE9TRV9OT1RJRlkKK0FMRVJUX0RFU0NSSVBUSU9OX1VORVhQRUNURURfTUVTU0FHRQorQUxFUlRfREVTQ1JJUFRJT05fQkFEX1JFQ09SRF9NQUMKK0FMRVJUX0RFU0NSSVBUSU9OX1JFQ09SRF9PVkVSRkxPVworQUxFUlRfREVTQ1JJUFRJT05fREVDT01QUkVTU0lPTl9GQUlMVVJFCitBTEVSVF9ERVNDUklQVElPTl9IQU5EU0hBS0VfRkFJTFVSRQorQUxFUlRfREVTQ1JJUFRJT05fQkFEX0NFUlRJRklDQVRFCitBTEVSVF9ERVNDUklQVElPTl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURQorQUxFUlRfREVTQ1JJUFRJT05fQ0VSVElGSUNBVEVfUkVWT0tFRAorQUxFUlRfREVTQ1JJUFRJT05fQ0VSVElGSUNBVEVfRVhQSVJFRAorQUxFUlRfREVTQ1JJUFRJT05fQ0VSVElGSUNBVEVfVU5LTk9XTgorQUxFUlRfREVTQ1JJUFRJT05fSUxMRUdBTF9QQVJBTUVURVIKK0FMRVJUX0RFU0NSSVBUSU9OX1VOS05PV05fQ0EKK0FMRVJUX0RFU0NSSVBUSU9OX0FDQ0VTU19ERU5JRUQKK0FMRVJUX0RFU0NSSVBUSU9OX0RFQ09ERV9FUlJPUgorQUxFUlRfREVTQ1JJUFRJT05fREVDUllQVF9FUlJPUgorQUxFUlRfREVTQ1JJUFRJT05fUFJPVE9DT0xfVkVSU0lPTgorQUxFUlRfREVTQ1JJUFRJT05fSU5TVUZGSUNJRU5UX1NFQ1VSSVRZCitBTEVSVF9ERVNDUklQVElPTl9JTlRFUk5BTF9FUlJPUgorQUxFUlRfREVTQ1JJUFRJT05fVVNFUl9DQU5DRUxMRUQKK0FMRVJUX0RFU0NSSVBUSU9OX05PX1JFTkVHT1RJQVRJT04KK0FMRVJUX0RFU0NSSVBUSU9OX1VOU1VQUE9SVEVEX0VYVEVOU0lPTgorQUxFUlRfREVTQ1JJUFRJT05fQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFCitBTEVSVF9ERVNDUklQVElPTl9VTlJFQ09HTklaRURfTkFNRQorQUxFUlRfREVTQ1JJUFRJT05fQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRQorQUxFUlRfREVTQ1JJUFRJT05fQkFEX0NFUlRJRklDQVRFX0hBU0hfVkFMVUUKK0FMRVJUX0RFU0NSSVBUSU9OX1VOS05PV05fUFNLX0lERU5USVRZCiAiIiIKIAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IGNvbGxlY3Rpb25zCiAKIGltcG9ydCBfc3NsICAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgaW1wb3J0IGl0LCBsZXQgdGhlIGVycm9yIHByb3BhZ2F0ZQogCkBAIC02NiwzNSArMTAyLDIzIEBACiAgICAgU1NMU3lzY2FsbEVycm9yLCBTU0xFT0ZFcnJvciwKICAgICApCiBmcm9tIF9zc2wgaW1wb3J0IENFUlRfTk9ORSwgQ0VSVF9PUFRJT05BTCwgQ0VSVF9SRVFVSVJFRAotZnJvbSBfc3NsIGltcG9ydCAoCi0gICAgT1BfQUxMLCBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX1RMU3YxLAotICAgIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRQotICAgICkKLXRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IE9QX05PX0NPTVBSRVNTSU9OCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotdHJ5OgotICAgIGZyb20gX3NzbCBpbXBvcnQgT1BfU0lOR0xFX0VDREhfVVNFCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwogZnJvbSBfc3NsIGltcG9ydCBSQU5EX3N0YXR1cywgUkFORF9lZ2QsIFJBTkRfYWRkLCBSQU5EX2J5dGVzLCBSQU5EX3BzZXVkb19ieXRlcwotZnJvbSBfc3NsIGltcG9ydCAoCi0gICAgU1NMX0VSUk9SX1pFUk9fUkVUVVJOLAotICAgIFNTTF9FUlJPUl9XQU5UX1JFQUQsCi0gICAgU1NMX0VSUk9SX1dBTlRfV1JJVEUsCi0gICAgU1NMX0VSUk9SX1dBTlRfWDUwOV9MT09LVVAsCi0gICAgU1NMX0VSUk9SX1NZU0NBTEwsCi0gICAgU1NMX0VSUk9SX1NTTCwKLSAgICBTU0xfRVJST1JfV0FOVF9DT05ORUNULAotICAgIFNTTF9FUlJPUl9FT0YsCi0gICAgU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERSwKLSAgICApCisKK2RlZiBfaW1wb3J0X3N5bWJvbHMocHJlZml4KToKKyAgICBmb3IgbiBpbiBkaXIoX3NzbCk6CisgICAgICAgIGlmIG4uc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICAgICAgZ2xvYmFscygpW25dID0gZ2V0YXR0cihfc3NsLCBuKQorCitfaW1wb3J0X3N5bWJvbHMoJ09QXycpCitfaW1wb3J0X3N5bWJvbHMoJ0FMRVJUX0RFU0NSSVBUSU9OXycpCitfaW1wb3J0X3N5bWJvbHMoJ1NTTF9FUlJPUl8nKQorCiBmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOCi1mcm9tIF9zc2wgaW1wb3J0IChQUk9UT0NPTF9TU0x2MywgUFJPVE9DT0xfU1NMdjIzLAotICAgICAgICAgICAgICAgICAgUFJPVE9DT0xfVExTdjEpCisKK2Zyb20gX3NzbCBpbXBvcnQgUFJPVE9DT0xfU1NMdjMsIFBST1RPQ09MX1NTTHYyMywgUFJPVE9DT0xfVExTdjEKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorCiBfUFJPVE9DT0xfTkFNRVMgPSB7CiAgICAgUFJPVE9DT0xfVExTdjE6ICJUTFN2MSIsCiAgICAgUFJPVE9DT0xfU1NMdjIzOiAiU1NMdjIzIiwKQEAgLTEwOCwxMyArMTMyLDI2IEBACiBlbHNlOgogICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9TU0x2Ml0gPSAiU1NMdjIiCiAKK3RyeToKKyAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1RMU3YxXzEsIFBST1RPQ09MX1RMU3YxXzIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8xXSA9ICJUTFN2MS4xIgorICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8yXSA9ICJUTFN2MS4yIgorCitpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydF9zdG9yZSwgWDUwOV9BU05fRU5DT0RJTkcsIFBLQ1NfN19BU05fRU5DT0RJTkcKKwogZnJvbSBzb2NrZXQgaW1wb3J0IGdldG5hbWVpbmZvIGFzIF9nZXRuYW1laW5mbwotZnJvbSBzb2NrZXQgaW1wb3J0IGVycm9yIGFzIHNvY2tldF9lcnJvcgogZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVCwgU09DS19TVFJFQU0sIGNyZWF0ZV9jb25uZWN0aW9uCiBpbXBvcnQgYmFzZTY0ICAgICAgICAjIGZvciBERVItdG8tUEVNIHRyYW5zbGF0aW9uCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZXJybm8KIAorCitzb2NrZXRfZXJyb3IgPSBPU0Vycm9yICAjIGtlZXAgdGhhdCBwdWJsaWMgbmFtZSBpbiBtb2R1bGUgbmFtZXNwYWNlCisKIGlmIF9zc2wuSEFTX1RMU19VTklRVUU6CiAgICAgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTID0gWyd0bHMtdW5pcXVlJ10KIGVsc2U6CkBAIC0xOTEsMTEgKzIyOCwyOSBAQAogICAgICAgICAgICAgInN1YmplY3RBbHROYW1lIGZpZWxkcyB3ZXJlIGZvdW5kIikKIAogCitEZWZhdWx0VmVyaWZ5UGF0aHMgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJEZWZhdWx0VmVyaWZ5UGF0aHMiLAorICAgICJjYWZpbGUgY2FwYXRoIG9wZW5zc2xfY2FmaWxlX2VudiBvcGVuc3NsX2NhZmlsZSBvcGVuc3NsX2NhcGF0aF9lbnYgIgorICAgICJvcGVuc3NsX2NhcGF0aCIpCisKK2RlZiBnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKToKKyAgICAiIiJSZXR1cm4gcGF0aHMgdG8gZGVmYXVsdCBjYWZpbGUgYW5kIGNhcGF0aC4KKyAgICAiIiIKKyAgICBwYXJ0cyA9IF9zc2wuZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKKworICAgICMgZW52aXJvbm1lbnQgdmFycyBzaGFkb3cgcGF0aHMKKyAgICBjYWZpbGUgPSBvcy5lbnZpcm9uLmdldChwYXJ0c1swXSwgcGFydHNbMV0pCisgICAgY2FwYXRoID0gb3MuZW52aXJvbi5nZXQocGFydHNbMl0sIHBhcnRzWzNdKQorCisgICAgcmV0dXJuIERlZmF1bHRWZXJpZnlQYXRocyhjYWZpbGUgaWYgb3MucGF0aC5pc2ZpbGUoY2FmaWxlKSBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBhdGggaWYgb3MucGF0aC5pc2RpcihjYXBhdGgpIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwYXJ0cykKKworCiBjbGFzcyBTU0xDb250ZXh0KF9TU0xDb250ZXh0KToKICAgICAiIiJBbiBTU0xDb250ZXh0IGhvbGRzIHZhcmlvdXMgU1NMLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZAogICAgIGRhdGEsIHN1Y2ggYXMgY2VydGlmaWNhdGVzIGFuZCBwb3NzaWJseSBhIHByaXZhdGUga2V5LiIiIgogCi0gICAgX19zbG90c19fID0gKCdwcm90b2NvbCcsKQorICAgIF9fc2xvdHNfXyA9ICgncHJvdG9jb2wnLCAnX193ZWFrcmVmX18nKQogCiAgICAgZGVmIF9fbmV3X18oY2xzLCBwcm90b2NvbCwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgc2VsZiA9IF9TU0xDb250ZXh0Ll9fbmV3X18oY2xzLCBwcm90b2NvbCkKQEAgLTI0Myw3ICsyOTgsNyBAQAogICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKIAogICAgICAgICBpZiBfY29udGV4dDoKLSAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IF9jb250ZXh0CisgICAgICAgICAgICBzZWxmLl9jb250ZXh0ID0gX2NvbnRleHQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHNlcnZlcl9zaWRlIGFuZCBub3QgY2VydGZpbGU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2VydGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHNlcnZlci1zaWRlICIKQEAgLTI1MiwxNiArMzA3LDE2IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2VydGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQiKQogICAgICAgICAgICAgaWYgY2VydGZpbGUgYW5kIG5vdCBrZXlmaWxlOgogICAgICAgICAgICAgICAgIGtleWZpbGUgPSBjZXJ0ZmlsZQotICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gU1NMQ29udGV4dChzc2xfdmVyc2lvbikKLSAgICAgICAgICAgIHNlbGYuY29udGV4dC52ZXJpZnlfbW9kZSA9IGNlcnRfcmVxcworICAgICAgICAgICAgc2VsZi5fY29udGV4dCA9IFNTTENvbnRleHQoc3NsX3ZlcnNpb24pCisgICAgICAgICAgICBzZWxmLl9jb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCiAgICAgICAgICAgICBpZiBjYV9jZXJ0czoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhX2NlcnRzKQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhX2NlcnRzKQogICAgICAgICAgICAgaWYgY2VydGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKICAgICAgICAgICAgIGlmIG5wbl9wcm90b2NvbHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKG5wbl9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgaWYgY2lwaGVyczoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKKyAgICAgICAgICAgICAgICBzZWxmLl9jb250ZXh0LnNldF9jaXBoZXJzKGNpcGhlcnMpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydF9yZXFzID0gY2VydF9yZXFzCkBAIC0yNzUsNyArMzMwLDYgQEAKICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUgPSBzZXJ2ZXJfaG9zdG5hbWUKICAgICAgICAgc2VsZi5kb19oYW5kc2hha2Vfb25fY29ubmVjdCA9IGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0CiAgICAgICAgIHNlbGYuc3VwcHJlc3NfcmFnZ2VkX2VvZnMgPSBzdXBwcmVzc19yYWdnZWRfZW9mcwotICAgICAgICBjb25uZWN0ZWQgPSBGYWxzZQogICAgICAgICBpZiBzb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc29ja2V0Ll9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFtaWx5PXNvY2suZmFtaWx5LApAQCAtMjgzLDI3ICszMzcsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90bz1zb2NrLnByb3RvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVubz1zb2NrLmZpbGVubygpKQogICAgICAgICAgICAgc2VsZi5zZXR0aW1lb3V0KHNvY2suZ2V0dGltZW91dCgpKQotICAgICAgICAgICAgIyBzZWUgaWYgaXQncyBjb25uZWN0ZWQKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb2NrLmdldHBlZXJuYW1lKCkKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXRfZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT1RDT05OOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb25uZWN0ZWQgPSBUcnVlCiAgICAgICAgICAgICBzb2NrLmRldGFjaCgpCiAgICAgICAgIGVsaWYgZmlsZW5vIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc29ja2V0Ll9faW5pdF9fKHNlbGYsIGZpbGVubz1maWxlbm8pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzb2NrZXQuX19pbml0X18oc2VsZiwgZmFtaWx5PWZhbWlseSwgdHlwZT10eXBlLCBwcm90bz1wcm90bykKIAorICAgICAgICAjIFNlZSBpZiB3ZSBhcmUgY29ubmVjdGVkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuZ2V0cGVlcm5hbWUoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9UQ09OTjoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgY29ubmVjdGVkID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbm5lY3RlZCA9IFRydWUKKwogICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9zc2xvYmogPSBOb25lCiAgICAgICAgIHNlbGYuX2Nvbm5lY3RlZCA9IGNvbm5lY3RlZAogICAgICAgICBpZiBjb25uZWN0ZWQ6CiAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgU1NMIG9iamVjdAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IHNlbGYuY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQpAQCAtMzEyLDEwICszNjgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRvX2hhbmRzaGFrZV9vbl9jb25uZWN0IHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIGZvciBub24tYmxvY2tpbmcgc29ja2V0cyIpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlKCkKIAotICAgICAgICAgICAgZXhjZXB0IHNvY2tldF9lcnJvciBhcyB4OgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZSB4CiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGV4dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRleHQKKworICAgIEBjb250ZXh0LnNldHRlcgorICAgIGRlZiBjb250ZXh0KHNlbGYsIGN0eCk6CisgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjdHgKKyAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKKwogICAgIGRlZiBkdXAoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkKCJDYW4ndCBkdXAoKSAlcyBpbnN0YW5jZXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCkBAIC0zMjQsMTEgKzM4OSwyMSBAQAogICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiBoZXJlIGlmIHlvdSB3aXNoIHRvIGNoZWNrIGZvciBzcHVyaW91cyBjbG9zZXMKICAgICAgICAgcGFzcwogCisgICAgZGVmIF9jaGVja19jb25uZWN0ZWQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9jb25uZWN0ZWQ6CisgICAgICAgICAgICAjIGdldHBlZXJuYW1lKCkgd2lsbCByYWlzZSBFTk9UQ09OTiBpZiB0aGUgc29ja2V0IGlzIHJlYWxseQorICAgICAgICAgICAgIyBub3QgY29ubmVjdGVkOyBub3RlIHRoYXQgd2UgY2FuIGJlIGNvbm5lY3RlZCBldmVuIHdpdGhvdXQKKyAgICAgICAgICAgICMgX2Nvbm5lY3RlZCBiZWluZyBzZXQsIGUuZy4gaWYgY29ubmVjdCgpIGZpcnN0IHJldHVybmVkCisgICAgICAgICAgICAjIEVBR0FJTi4KKyAgICAgICAgICAgIHNlbGYuZ2V0cGVlcm5hbWUoKQorCiAgICAgZGVmIHJlYWQoc2VsZiwgbGVuPTAsIGJ1ZmZlcj1Ob25lKToKICAgICAgICAgIiIiUmVhZCB1cCB0byBMRU4gYnl0ZXMgYW5kIHJldHVybiB0aGVtLgogICAgICAgICBSZXR1cm4gemVyby1sZW5ndGggc3RyaW5nIG9uIEVPRi4iIiIKIAogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZWFkIG9uIGNsb3NlZCBvciB1bndyYXBwZWQgU1NMIHNvY2tldC4iKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBidWZmZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdiA9IHNlbGYuX3NzbG9iai5yZWFkKGxlbiwgYnVmZmVyKQpAQCAtMzQ5LDYgKzQyNCw4IEBACiAgICAgICAgIG51bWJlciBvZiBieXRlcyBvZiBEQVRBIGFjdHVhbGx5IHRyYW5zbWl0dGVkLiIiIgogCiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIldyaXRlIG9uIGNsb3NlZCBvciB1bndyYXBwZWQgU1NMIHNvY2tldC4iKQogICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLndyaXRlKGRhdGEpCiAKICAgICBkZWYgZ2V0cGVlcmNlcnQoc2VsZiwgYmluYXJ5X2Zvcm09RmFsc2UpOgpAQCAtMzU4LDYgKzQzNSw3IEBACiAgICAgICAgIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZCwgYnV0IG5vdCB2YWxpZGF0ZWQuIiIiCiAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19jb25uZWN0ZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCiAKICAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgpAQCAtMzg4LDE4ICs0NjYsMTcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAibm9uLXplcm8gZmxhZ3Mgbm90IGFsbG93ZWQgaW4gY2FsbHMgdG8gc2VuZCgpIG9uICVzIiAlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fKQotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoud3JpdGUoZGF0YSkKLSAgICAgICAgICAgICAgICBleGNlcHQgU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICAgICAgaWYgeC5hcmdzWzBdID09IFNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgICAgICAgICBlbGlmIHguYXJnc1swXSA9PSBTU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoud3JpdGUoZGF0YSkKKyAgICAgICAgICAgIGV4Y2VwdCBTU0xFcnJvciBhcyB4OgorICAgICAgICAgICAgICAgIGlmIHguYXJnc1swXSA9PSBTU0xfRVJST1JfV0FOVF9SRUFEOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgICAgIGVsaWYgeC5hcmdzWzBdID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiB2CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmQoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKQEAgLTUwNywxMiArNTg0LDExIEBACiAKICAgICBkZWYgX3JlYWxfY2xvc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuX3NzbG9iaiA9IE5vbmUKLSAgICAgICAgIyBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgIHNvY2tldC5fcmVhbF9jbG9zZShzZWxmKQogCiAgICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmLCBibG9jaz1GYWxzZSk6CiAgICAgICAgICIiIlBlcmZvcm0gYSBUTFMvU1NMIGhhbmRzaGFrZS4iIiIKLQorICAgICAgICBzZWxmLl9jaGVja19jb25uZWN0ZWQoKQogICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXR0aW1lb3V0KCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwLjAgYW5kIGJsb2NrOgpAQCAtNTM2LDExICs2MTIsMTEgQEAKICAgICAgICAgICAgICAgICByYyA9IE5vbmUKICAgICAgICAgICAgICAgICBzb2NrZXQuY29ubmVjdChzZWxmLCBhZGRyKQogICAgICAgICAgICAgaWYgbm90IHJjOgorICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RlZCA9IFRydWUKICAgICAgICAgICAgICAgICBpZiBzZWxmLmRvX2hhbmRzaGFrZV9vbl9jb25uZWN0OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGVkID0gVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIHJjCi0gICAgICAgIGV4Y2VwdCBzb2NrZXRfZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gTm9uZQogICAgICAgICAgICAgcmFpc2UKIApkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCA3MDRhZGZlLi4zZWVjYzNlIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTQ3LDMgKzE0Nyw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwZXJtLmFwcGVuZCgiLSIpCiAgICAgcmV0dXJuICIiLmpvaW4ocGVybSkKKworIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCit0cnk6CisgICAgZnJvbSBfc3RhdCBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi9zdHJ1Y3QucHkgYi9MaWIvc3RydWN0LnB5CmluZGV4IDliZmMyM2YuLmQ2YmJhNTggMTAwNjQ0Ci0tLSBhL0xpYi9zdHJ1Y3QucHkKKysrIGIvTGliL3N0cnVjdC5weQpAQCAtMSw2ICsxLDcgQEAKIF9fYWxsX18gPSBbCiAgICAgIyBGdW5jdGlvbnMKICAgICAnY2FsY3NpemUnLCAncGFjaycsICdwYWNrX2ludG8nLCAndW5wYWNrJywgJ3VucGFja19mcm9tJywKKyAgICAnaXRlcl91bnBhY2snLAogCiAgICAgIyBDbGFzc2VzCiAgICAgJ1N0cnVjdCcsCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IDM1MDg2YWMuLjNkNzdiMjYgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xNzgsNiArMTc4LDkgQEAKIAogICAgID4+PiBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImxzIiwgIi1sIiwgIi9kZXYvbnVsbCJdKQogCisgICAgVGhlcmUgaXMgYW4gYWRkaXRpb25hbCBvcHRpb25hbCBhcmd1bWVudCwgImlucHV0IiwgYWxsb3dpbmcgeW91IHRvCisgICAgcGFzcyBhIHN0cmluZyB0byB0aGUgc3VicHJvY2VzcydzIHN0ZGluLiAgSWYgeW91IHVzZSB0aGlzIGFyZ3VtZW50CisgICAgeW91IG1heSBub3QgYWxzbyB1c2UgdGhlIFBvcGVuIGNvbnN0cnVjdG9yJ3MgInN0ZGluIiBhcmd1bWVudC4KIAogRXhjZXB0aW9ucwogLS0tLS0tLS0tLQpAQCAtMzk4LDggKzQwMSw2IEBACiAgICAgICAgIGhTdGRPdXRwdXQgPSBOb25lCiAgICAgICAgIGhTdGRFcnJvciA9IE5vbmUKICAgICAgICAgd1Nob3dXaW5kb3cgPSAwCi0gICAgY2xhc3MgcHl3aW50eXBlczoKLSAgICAgICAgZXJyb3IgPSBJT0Vycm9yCiBlbHNlOgogICAgIGltcG9ydCBzZWxlY3QKICAgICBfaGFzX3BvbGwgPSBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKQpAQCAtNTY4LDE0ICs1NjksMzEgQEAKICAgICAuLi4gICAgICAgICAgICAgIHN0ZGVycj1TVERPVVQpCiAgICAgYidsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKIAorICAgIFRoZXJlIGlzIGFuIGFkZGl0aW9uYWwgb3B0aW9uYWwgYXJndW1lbnQsICJpbnB1dCIsIGFsbG93aW5nIHlvdSB0bworICAgIHBhc3MgYSBzdHJpbmcgdG8gdGhlIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHlvdSB1c2UgdGhpcyBhcmd1bWVudAorICAgIHlvdSBtYXkgbm90IGFsc28gdXNlIHRoZSBQb3BlbiBjb25zdHJ1Y3RvcidzICJzdGRpbiIgYXJndW1lbnQsIGFzCisgICAgaXQgdG9vIHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5LiAgRXhhbXBsZToKKworICAgID4+PiBjaGVja19vdXRwdXQoWyJzZWQiLCAiLWUiLCAicy9mb28vYmFyLyJdLAorICAgIC4uLiAgICAgICAgICAgICAgaW5wdXQ9YiJ3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgZm9vbWFuIGV2ZW50c1xuIikKKyAgICBiJ3doZW4gaW4gdGhlIGNvdXJzZSBvZiBiYXJtYW4gZXZlbnRzXG4nCisKICAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSBpcyBwYXNzZWQsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhCiAgICAgc3RyaW5nIHJhdGhlciB0aGFuIGJ5dGVzLgogICAgICIiIgogICAgIGlmICdzdGRvdXQnIGluIGt3YXJnczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3Rkb3V0IGFyZ3VtZW50IG5vdCBhbGxvd2VkLCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uJykKKyAgICBpZiAnaW5wdXQnIGluIGt3YXJnczoKKyAgICAgICAgaWYgJ3N0ZGluJyBpbiBrd2FyZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRpbiBhbmQgaW5wdXQgYXJndW1lbnRzIG1heSBub3QgYm90aCBiZSB1c2VkLicpCisgICAgICAgIGlucHV0ZGF0YSA9IGt3YXJnc1snaW5wdXQnXQorICAgICAgICBkZWwga3dhcmdzWydpbnB1dCddCisgICAgICAgIGt3YXJnc1snc3RkaW4nXSA9IFBJUEUKKyAgICBlbHNlOgorICAgICAgICBpbnB1dGRhdGEgPSBOb25lCiAgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpIGFzIHByb2Nlc3M6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUodGltZW91dD10aW1lb3V0KQorICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dGRhdGEsIHRpbWVvdXQ9dGltZW91dCkKICAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQpAQCAtODI3LDcgKzg0NSw3IEBACiAgICAgICAgICAgICBmb3IgZiBpbiBmaWx0ZXIoTm9uZSwgKHNlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycikpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgSWdub3JlIEVCQURGIG9yIG90aGVyIGVycm9ycy4KIAogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZF9jaGlsZF9waXBlX2ZkczoKQEAgLTg0Myw3ICs4NjEsNyBAQAogICAgICAgICAgICAgICAgIGZvciBmZCBpbiB0b19jbG9zZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICAgICAgcmFpc2UKQEAgLTkwNyw3ICs5MjUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGlucHV0OgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLndyaXRlKGlucHV0KQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FUElQRSBhbmQgZS5lcnJubyAhPSBlcnJuby5FSU5WQUw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKQEAgLTEwMzksMjMgKzEwNTcsNiBAQAogICAgICAgICAgICAgcmV0dXJuIEhhbmRsZShoKQogCiAKLSAgICAgICAgZGVmIF9maW5kX3c5eHBvcGVuKHNlbGYpOgotICAgICAgICAgICAgIiIiRmluZCBhbmQgcmV0dXJuIGFic29sdXQgcGF0aCB0byB3OXhwb3Blbi5leGUiIiIKLSAgICAgICAgICAgIHc5eHBvcGVuID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfd2luYXBpLkdldE1vZHVsZUZpbGVOYW1lKDApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHc5eHBvcGVuKToKLSAgICAgICAgICAgICAgICAjIEVlZWsgLSBmaWxlLW5vdC1mb3VuZCAtIHBvc3NpYmx5IGFuIGVtYmVkZGluZwotICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIC0gc2VlIGlmIHdlIGNhbiBsb2NhdGUgaXQgaW4gc3lzLmV4ZWNfcHJlZml4Ci0gICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5iYXNlX2V4ZWNfcHJlZml4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidzl4cG9wZW4uZXhlIikKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBsb2NhdGUgdzl4cG9wZW4uZXhlLCB3aGljaCBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZGVkIGZvciBQb3BlbiB0byB3b3JrIHdpdGggeW91ciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hlbGwgb3IgcGxhdGZvcm0uIikKLSAgICAgICAgICAgIHJldHVybiB3OXhwb3BlbgotCi0KICAgICAgICAgZGVmIF9leGVjdXRlX2NoaWxkKHNlbGYsIGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKQEAgLTEwODQsMjEgKzEwODUsNiBAQAogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3dpbmFwaS5TV19ISURFCiAgICAgICAgICAgICAgICAgY29tc3BlYyA9IG9zLmVudmlyb24uZ2V0KCJDT01TUEVDIiwgImNtZC5leGUiKQogICAgICAgICAgICAgICAgIGFyZ3MgPSAne30gL2MgInt9IicuZm9ybWF0IChjb21zcGVjLCBhcmdzKQotICAgICAgICAgICAgICAgIGlmIChfd2luYXBpLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGNvbXNwZWMpLmxvd2VyKCkgPT0gImNvbW1hbmQuY29tIik6Ci0gICAgICAgICAgICAgICAgICAgICMgV2luOXgsIG9yIHVzaW5nIGNvbW1hbmQuY29tIG9uIE5ULiBXZSBuZWVkIHRvCi0gICAgICAgICAgICAgICAgICAgICMgdXNlIHRoZSB3OXhwb3BlbiBpbnRlcm1lZGlhdGUgcHJvZ3JhbS4gRm9yIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgIyBpbmZvcm1hdGlvbiwgc2VlIEtCIFExNTA5NTYKLSAgICAgICAgICAgICAgICAgICAgIyAoaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwMTExMDUwODQwMDIvaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9zdXBwb3J0L2tiL2FydGljbGVzL1ExNTAvOS81Ni5hc3ApCi0gICAgICAgICAgICAgICAgICAgIHc5eHBvcGVuID0gc2VsZi5fZmluZF93OXhwb3BlbigpCi0gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSAnIiVzIiAlcycgJSAodzl4cG9wZW4sIGFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICMgTm90IHBhc3NpbmcgQ1JFQVRFX05FV19DT05TT0xFIGhhcyBiZWVuIGtub3duIHRvCi0gICAgICAgICAgICAgICAgICAgICMgY2F1c2UgcmFuZG9tIGZhaWx1cmVzIG9uIHdpbjl4LiAgU3BlY2lmaWNhbGx5IGEKLSAgICAgICAgICAgICAgICAgICAgIyBkaWFsb2c6ICJZb3VyIHByb2dyYW0gYWNjZXNzZWQgbWVtIGN1cnJlbnRseSBpbgotICAgICAgICAgICAgICAgICAgICAjIHVzZSBhdCB4eHgiIGFuZCBhIGhvcGVmdWwgd2FybmluZyBhYm91dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBzdGFiaWxpdHkgb2YgeW91ciBzeXN0ZW0uICBDb3N0IGlzIEN0cmwrQyB3b24ndAotICAgICAgICAgICAgICAgICAgICAjIGtpbGwgY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3dpbmFwaS5DUkVBVEVfTkVXX0NPTlNPTEUKIAogICAgICAgICAgICAgIyBTdGFydCB0aGUgcHJvY2VzcwogICAgICAgICAgICAgdHJ5OgpAQCAtMTExMCwxMiArMTA5Niw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbykKLSAgICAgICAgICAgIGV4Y2VwdCBweXdpbnR5cGVzLmVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgIyBUcmFuc2xhdGUgcHl3aW50eXBlcy5lcnJvciB0byBXaW5kb3dzRXJyb3IsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgIyBhIHN1YmNsYXNzIG9mIE9TRXJyb3IuICBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseQotICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIGVycm5vIHVzaW5nIF9zeXNfZXJybGlzdCAob3Igc2ltaWxhciksIGJ1dAotICAgICAgICAgICAgICAgICMgaG93IGNhbiB0aGlzIGJlIGRvbmUgZnJvbSBQeXRob24/Ci0gICAgICAgICAgICAgICAgcmFpc2UgV2luZG93c0Vycm9yKCplLmFyZ3MpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICMgQ2hpbGQgaXMgbGF1bmNoZWQuIENsb3NlIHRoZSBwYXJlbnQncyBjb3B5IG9mIHRob3NlIHBpcGUKICAgICAgICAgICAgICAgICAjIGhhbmRsZXMgdGhhdCBvbmx5IHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBvcGVuLiAgWW91IG5lZWQKQEAgLTEyMDAsNyArMTE4MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4ud3JpdGUoaW5wdXQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCkBAIC0xNDI0LDEzICsxNDA0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9uYW1lLCBoZXhfZXJybm8sIGVycl9tc2cgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhLnNwbGl0KGInOicsIDIpKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fbmFtZSA9IGInUnVudGltZUVycm9yJworICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fbmFtZSA9IGInU3VicHJvY2Vzc0Vycm9yJwogICAgICAgICAgICAgICAgICAgICBoZXhfZXJybm8gPSBiJzAnCiAgICAgICAgICAgICAgICAgICAgIGVycl9tc2cgPSAoYidCYWQgZXhjZXB0aW9uIGRhdGEgZnJvbSBjaGlsZDogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihlcnJwaXBlX2RhdGEpKQogICAgICAgICAgICAgICAgIGNoaWxkX2V4Y2VwdGlvbl90eXBlID0gZ2V0YXR0cigKICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zLCBleGNlcHRpb25fbmFtZS5kZWNvZGUoJ2FzY2lpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm9jZXNzRXJyb3IpCiAgICAgICAgICAgICAgICAgZXJyX21zZyA9IGVycl9tc2cuZGVjb2RlKGVycm9ycz0ic3Vycm9nYXRlcGFzcyIpCiAgICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhjaGlsZF9leGNlcHRpb25fdHlwZSwgT1NFcnJvcikgYW5kIGhleF9lcnJubzoKICAgICAgICAgICAgICAgICAgICAgZXJybm9fbnVtID0gaW50KGhleF9lcnJubywgMTYpCkBAIC0xNDYwLDExICsxNDQwLDExIEBACiAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gX1dFWElUU1RBVFVTKHN0cykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBTaG91bGQgbmV2ZXIgaGFwcGVuCi0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJVbmtub3duIGNoaWxkIGV4aXQgc3RhdHVzISIpCisgICAgICAgICAgICAgICAgcmFpc2UgU3VicHJvY2Vzc0Vycm9yKCJVbmtub3duIGNoaWxkIGV4aXQgc3RhdHVzISIpCiAKIAogICAgICAgICBkZWYgX2ludGVybmFsX3BvbGwoc2VsZiwgX2RlYWRzdGF0ZT1Ob25lLCBfd2FpdHBpZD1vcy53YWl0cGlkLAotICAgICAgICAgICAgICAgIF9XTk9IQU5HPW9zLldOT0hBTkcsIF9vc19lcnJvcj1vcy5lcnJvciwgX0VDSElMRD1lcnJuby5FQ0hJTEQpOgorICAgICAgICAgICAgICAgIF9XTk9IQU5HPW9zLldOT0hBTkcsIF9FQ0hJTEQ9ZXJybm8uRUNISUxEKToKICAgICAgICAgICAgICIiIkNoZWNrIGlmIGNoaWxkIHByb2Nlc3MgaGFzIHRlcm1pbmF0ZWQuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4KIApAQCAtMTQ3Nyw3ICsxNDU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBfd2FpdHBpZChzZWxmLnBpZCwgX1dOT0hBTkcpCiAgICAgICAgICAgICAgICAgICAgIGlmIHBpZCA9PSBzZWxmLnBpZDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKLSAgICAgICAgICAgICAgICBleGNlcHQgX29zX2Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgX2RlYWRzdGF0ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IF9kZWFkc3RhdGUKICAgICAgICAgICAgICAgICAgICAgZWxpZiBlLmVycm5vID09IF9FQ0hJTEQ6CkBAIC0xNjM0LDcgKzE2MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gcG9sbGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTE3MDIsNyArMTY4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIChybGlzdCwgd2xpc3QsIHhsaXN0KSA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3Qoc2VsZi5fcmVhZF9zZXQsIHNlbGYuX3dyaXRlX3NldCwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS9MaWIvc3ltYm9sLnB5IGIvTGliL3N5bWJvbC5weQppbmRleCAzNDE0M2I1Li41Y2Y0YTY1IDEwMDc1NQotLS0gYS9MaWIvc3ltYm9sLnB5CisrKyBiL0xpYi9zeW1ib2wucHkKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgICAgICBzeW1fbmFtZVtfdmFsdWVdID0gX25hbWUKIAogCi1kZWYgbWFpbigpOgorZGVmIF9tYWluKCk6CiAgICAgaW1wb3J0IHN5cwogICAgIGltcG9ydCB0b2tlbgogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKQEAgLTEwOCw0ICsxMDgsNCBAQAogICAgIHRva2VuLl9tYWluKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKKyAgICBfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvc3ltdGFibGUucHkgYi9MaWIvc3ltdGFibGUucHkKaW5kZXggMzljMWE4MC4uYzBlMzJkZiAxMDA2NDQKLS0tIGEvTGliL3N5bXRhYmxlLnB5CisrKyBiL0xpYi9zeW10YWJsZS5weQpAQCAtMjM1LDcgKzIzNSw4IEBACiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IG9zLCBzeXMKLSAgICBzcmMgPSBvcGVuKHN5cy5hcmd2WzBdKS5yZWFkKCkKKyAgICB3aXRoIG9wZW4oc3lzLmFyZ3ZbMF0pIGFzIGY6CisgICAgICAgIHNyYyA9IGYucmVhZCgpCiAgICAgbW9kID0gc3ltdGFibGUoc3JjLCBvcy5wYXRoLnNwbGl0KHN5cy5hcmd2WzBdKVsxXSwgImV4ZWMiKQogICAgIGZvciBpZGVudCBpbiBtb2QuZ2V0X2lkZW50aWZpZXJzKCk6CiAgICAgICAgIGluZm8gPSBtb2QubG9va3VwKGlkZW50KQpkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggMmY1Zjc0MC4uZWUzOGEyMCAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC01MiwyNSArNTIsNiBAQAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vU2NyaXB0cycsCiAgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCi0gICAgJ29zMic6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L0xpYicsCi0gICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9MaWInLAotICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKLSAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAotICAgICAgICB9LAotICAgICdvczJfaG9tZSc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAncGxhdHN0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCi0gICAgICAgIH0sCiAgICAgJ250X3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0nLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fScsCkBAIC0yMTAsNyArMTkxLDYgQEAKICAgICBkZWYgam9pbnVzZXIoKmFyZ3MpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigqYXJncykpCiAKLSAgICAjIHdoYXQgYWJvdXQgJ29zMmVteCcsICdyaXNjb3MnID8KICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGJhc2UgPSBvcy5lbnZpcm9uLmdldCgiQVBQREFUQSIpIG9yICJ+IgogICAgICAgICBpZiBlbnZfYmFzZToKQEAgLTM2OSwyMSArMzQ5LDIxIEBACiAgICAgbWFrZWZpbGUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQogICAgIHRyeToKICAgICAgICAgX3BhcnNlX21ha2VmaWxlKG1ha2VmaWxlLCB2YXJzKQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgbWFrZWZpbGUKICAgICAgICAgaWYgaGFzYXR0cihlLCAic3RyZXJyb3IiKToKICAgICAgICAgICAgIG1zZyA9IG1zZyArICIgKCVzKSIgJSBlLnN0cmVycm9yCi0gICAgICAgIHJhaXNlIElPRXJyb3IobXNnKQorICAgICAgICByYWlzZSBPU0Vycm9yKG1zZykKICAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgogICAgIGNvbmZpZ19oID0gZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKICAgICB0cnk6CiAgICAgICAgIHdpdGggb3Blbihjb25maWdfaCkgYXMgZjoKICAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19oKGYsIHZhcnMpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICBtc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBjb25maWdfaAogICAgICAgICBpZiBoYXNhdHRyKGUsICJzdHJlcnJvciIpOgogICAgICAgICAgICAgbXNnID0gbXNnICsgIiAoJXMpIiAlIGUuc3RyZXJyb3IKLSAgICAgICAgcmFpc2UgSU9FcnJvcihtc2cpCisgICAgICAgIHJhaXNlIE9TRXJyb3IobXNnKQogICAgICMgT24gQUlYLCB0aGVyZSBhcmUgd3JvbmcgcGF0aHMgdG8gdGhlIGxpbmtlciBzY3JpcHRzIGluIHRoZSBNYWtlZmlsZQogICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKICAgICAjIHRoZSBzY3JpcHRzIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeS4KQEAgLTQwMyw4ICszODMsOCBAQAogICAgICMgZ2V0X3BsYXRmb3JtKCkgc3VjY2VlZHMuCiAgICAgbmFtZSA9ICdfc3lzY29uZmlnZGF0YScKICAgICBpZiAnZGFyd2luJyBpbiBzeXMucGxhdGZvcm06Ci0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgaW1wb3J0IHR5cGVzCisgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgbW9kdWxlLmJ1aWxkX3RpbWVfdmFycyA9IHZhcnMKICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKIApAQCAtNDM2LDcgKzQxNiw2IEBACiAgICAgdmFyc1snTElCREVTVCddID0gZ2V0X3BhdGgoJ3N0ZGxpYicpCiAgICAgdmFyc1snQklOTElCREVTVCddID0gZ2V0X3BhdGgoJ3BsYXRzdGRsaWInKQogICAgIHZhcnNbJ0lOQ0xVREVQWSddID0gZ2V0X3BhdGgoJ2luY2x1ZGUnKQotICAgIHZhcnNbJ1NPJ10gPSAnLnB5ZCcKICAgICB2YXJzWydFWFRfU1VGRklYJ10gPSAnLnB5ZCcKICAgICB2YXJzWydFWEUnXSA9ICcuZXhlJwogICAgIHZhcnNbJ1ZFUlNJT04nXSA9IF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVApAQCAtNTUyLDcgKzUzMSw3IEBACiAgICAgICAgICAgICAjIHN5cy5hYmlmbGFncyBtYXkgbm90IGJlIGRlZmluZWQgb24gYWxsIHBsYXRmb3Jtcy4KICAgICAgICAgICAgIF9DT05GSUdfVkFSU1snYWJpZmxhZ3MnXSA9ICcnCiAKLSAgICAgICAgaWYgb3MubmFtZSBpbiAoJ250JywgJ29zMicpOgorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICBfaW5pdF9ub25fcG9zaXgoX0NPTkZJR19WQVJTKQogICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICBfaW5pdF9wb3NpeChfQ09ORklHX1ZBUlMpCmRpZmYgLS1naXQgYS9MaWIvdGFibmFubnkucHkgYi9MaWIvdGFibmFubnkucHkKaW5kZXggNWI5YjQ0NC4uNDZlMGY1NiAxMDA3NTUKLS0tIGEvTGliL3RhYm5hbm55LnB5CisrKyBiL0xpYi90YWJuYW5ueS5weQpAQCAtOTUsNyArOTUsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBmID0gdG9rZW5pemUub3BlbihmaWxlKQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIGVycnByaW50KCIlcjogSS9PIEVycm9yOiAlcyIgJSAoZmlsZSwgbXNnKSkKICAgICAgICAgcmV0dXJuCiAKZGlmZiAtLWdpdCBhL0xpYi90YXJmaWxlLnB5IGIvTGliL3RhcmZpbGUucHkKaW5kZXggNjY5Mzg0MC4uMDZkZjdkZiAxMDA2NDQKLS0tIGEvTGliL3RhcmZpbGUucHkKKysrIGIvTGliL3RhcmZpbGUucHkKQEAgLTU2LDkgKzU2LDkgQEAKICMgb3Muc3ltbGluayBvbiBXaW5kb3dzIHByaW9yIHRvIDYuMCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvcgogc3ltbGlua19leGNlcHRpb24gPSAoQXR0cmlidXRlRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpCiB0cnk6Ci0gICAgIyBXaW5kb3dzRXJyb3IgKDEzMTQpIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBjYWxsZXIgZG9lcyBub3QgaG9sZCB0aGUKKyAgICAjIE9TRXJyb3IgKHdpbmVycm9yPTEzMTQpIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBjYWxsZXIgZG9lcyBub3QgaG9sZCB0aGUKICAgICAjIFNlQ3JlYXRlU3ltYm9saWNMaW5rUHJpdmlsZWdlIHByaXZpbGVnZQotICAgIHN5bWxpbmtfZXhjZXB0aW9uICs9IChXaW5kb3dzRXJyb3IsKQorICAgIHN5bWxpbmtfZXhjZXB0aW9uICs9IChPU0Vycm9yLCkKIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgcGFzcwogCkBAIC0yNjQsMTMgKzI2NCwxMyBAQAogICAgIGZvciBiIGluIHJhbmdlKGJsb2Nrcyk6CiAgICAgICAgIGJ1ZiA9IHNyYy5yZWFkKEJVRlNJWkUpCiAgICAgICAgIGlmIGxlbihidWYpIDwgQlVGU0laRToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImVuZCBvZiBmaWxlIHJlYWNoZWQiKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiZW5kIG9mIGZpbGUgcmVhY2hlZCIpCiAgICAgICAgIGRzdC53cml0ZShidWYpCiAKICAgICBpZiByZW1haW5kZXIgIT0gMDoKICAgICAgICAgYnVmID0gc3JjLnJlYWQocmVtYWluZGVyKQogICAgICAgICBpZiBsZW4oYnVmKSA8IHJlbWFpbmRlcjoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImVuZCBvZiBmaWxlIHJlYWNoZWQiKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiZW5kIG9mIGZpbGUgcmVhY2hlZCIpCiAgICAgICAgIGRzdC53cml0ZShidWYpCiAgICAgcmV0dXJuCiAKQEAgLTM5OSw3ICszOTksNyBAQAogICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyRGVjb21wcmVzc29yKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBJT0Vycm9yCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gT1NFcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gYnoyLkJaMkNvbXByZXNzb3IoKQogCkBAIC0xNjMxLDcgKzE2MzEsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmaWxlb2JqID0gZ3ppcC5HemlwRmlsZShuYW1lLCBtb2RlICsgImIiLCBjb21wcmVzc2xldmVsLCBmaWxlb2JqKQogICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBpZiBub3QgZXh0ZmlsZW9iaiBhbmQgZmlsZW9iaiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBmaWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgIGlmIGZpbGVvYmogaXMgTm9uZToKQEAgLTE2NjIsNyArMTY2Miw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgKElPRXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICBmaWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcigibm90IGEgYnppcDIgZmlsZSIpCiAgICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQpAQCAtMjAyMiw3ICsyMDIyLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fZXh0cmFjdF9tZW1iZXIodGFyaW5mbywgb3MucGF0aC5qb2luKHBhdGgsIHRhcmluZm8ubmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYXR0cnM9c2V0X2F0dHJzKQotICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5lcnJvcmxldmVsID4gMDoKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKQEAgLTIyMTEsOSArMjIxMSw4IEBACiAgICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc3N5bSgpIGFuZCBoYXNhdHRyKG9zLCAibGNob3duIik6CiAgICAgICAgICAgICAgICAgICAgIG9zLmxjaG93bih0YXJnZXRwYXRoLCB1LCBnKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAib3MyZW14IjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNob3duKHRhcmdldHBhdGgsIHUsIGcpCi0gICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBvcy5jaG93bih0YXJnZXRwYXRoLCB1LCBnKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2Ugb3duZXIiKQogCiAgICAgZGVmIGNobW9kKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjIyMiw3ICsyMjIxLDcgQEAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2htb2QodGFyZ2V0cGF0aCwgdGFyaW5mby5tb2RlKQotICAgICAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJjb3VsZCBub3QgY2hhbmdlIG1vZGUiKQogCiAgICAgZGVmIHV0aW1lKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjIzMiw3ICsyMjMxLDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51dGltZSh0YXJnZXRwYXRoLCAodGFyaW5mby5tdGltZSwgdGFyaW5mby5tdGltZSkpCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgbW9kaWZpY2F0aW9uIHRpbWUiKQogCiAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzIzLDkgKzIzMjIsOSBAQAogICAgICAgICAgICBjb3JyZXNwb25kcyB0byBUYXJGaWxlJ3MgbW9kZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiJXMgaXMgY2xvc2VkIiAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiJXMgaXMgY2xvc2VkIiAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICBpZiBtb2RlIGlzIG5vdCBOb25lIGFuZCBzZWxmLm1vZGUgbm90IGluIG1vZGU6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJiYWQgb3BlcmF0aW9uIGZvciBtb2RlICVyIiAlIHNlbGYubW9kZSkKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoImJhZCBvcGVyYXRpb24gZm9yIG1vZGUgJXIiICUgc2VsZi5tb2RlKQogCiAgICAgZGVmIF9maW5kX2xpbmtfdGFyZ2V0KHNlbGYsIHRhcmluZm8pOgogICAgICAgICAiIiJGaW5kIHRoZSB0YXJnZXQgbWVtYmVyIG9mIGEgc3ltbGluayBvciBoYXJkbGluayBtZW1iZXIgaW4gdGhlCmRpZmYgLS1naXQgYS9MaWIvdGVsbmV0bGliLnB5IGIvTGliL3RlbG5ldGxpYi5weQppbmRleCBhNTk2OTNlLi5iNGI3Y2Q0IDEwMDY0NAotLS0gYS9MaWIvdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZWxuZXRsaWIucHkKQEAgLTI3Myw3ICsyNzMsNyBAQAogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZyB0byB0aGUgc29ja2V0LCBkb3VibGluZyBhbnkgSUFDIGNoYXJhY3RlcnMuCiAKICAgICAgICAgQ2FuIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UKLSAgICAgICAgc29ja2V0LmVycm9yIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKyAgICAgICAgT1NFcnJvciBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIElBQyBpbiBidWZmZXI6CkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICAgIHdoaWxlIGkgPCAwIGFuZCBub3Qgc2VsZi5lb2Y6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHBvbGxlci5wb2xsKGNhbGxfdGltZW91dCkKLSAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZCA9IHRpbWUoKSAtIHRpbWVfc3RhcnQKQEAgLTY4Myw3ICs2ODMsNyBAQAogICAgICAgICAgICAgd2hpbGUgbm90IG0gYW5kIG5vdCBzZWxmLmVvZjoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gcG9sbGVyLnBvbGwoY2FsbF90aW1lb3V0KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkID0gdGltZSgpIC0gdGltZV9zdGFydApkaWZmIC0tZ2l0IGEvTGliL3RlbXBmaWxlLnB5IGIvTGliL3RlbXBmaWxlLnB5CmluZGV4IDRhYWQ3YjUuLjEwYjZhMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVtcGZpbGUucHkKQEAgLTU4LDYgKzU4LDggQEAKIF9hbGxvY2F0ZV9sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrCiAKIF90ZXh0X29wZW5mbGFncyA9IF9vcy5PX1JEV1IgfCBfb3MuT19DUkVBVCB8IF9vcy5PX0VYQ0wKK2lmIGhhc2F0dHIoX29zLCAnT19DTE9FWEVDJyk6CisgICAgX3RleHRfb3BlbmZsYWdzIHw9IF9vcy5PX0NMT0VYRUMKIGlmIGhhc2F0dHIoX29zLCAnT19OT0lOSEVSSVQnKToKICAgICBfdGV4dF9vcGVuZmxhZ3MgfD0gX29zLk9fTk9JTkhFUklUCiBpZiBoYXNhdHRyKF9vcywgJ09fTk9GT0xMT1cnKToKQEAgLTY4NCw3ICs2ODYsNiBAQAogICAgIF9pc2xpbmsgPSBzdGF0aWNtZXRob2QoX29zLnBhdGguaXNsaW5rKQogICAgIF9yZW1vdmUgPSBzdGF0aWNtZXRob2QoX29zLnJlbW92ZSkKICAgICBfcm1kaXIgPSBzdGF0aWNtZXRob2QoX29zLnJtZGlyKQotICAgIF9vc19lcnJvciA9IE9TRXJyb3IKICAgICBfd2FybiA9IF93YXJuaW5ncy53YXJuCiAKICAgICBkZWYgX3JtdHJlZShzZWxmLCBwYXRoKToKQEAgLTY5NCwxNiArNjk1LDE2IEBACiAgICAgICAgICAgICBmdWxsbmFtZSA9IHNlbGYuX3BhdGhfam9pbihwYXRoLCBuYW1lKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlzZGlyID0gc2VsZi5faXNkaXIoZnVsbG5hbWUpIGFuZCBub3Qgc2VsZi5faXNsaW5rKGZ1bGxuYW1lKQotICAgICAgICAgICAgZXhjZXB0IHNlbGYuX29zX2Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgaXNkaXIgPSBGYWxzZQogICAgICAgICAgICAgaWYgaXNkaXI6CiAgICAgICAgICAgICAgICAgc2VsZi5fcm10cmVlKGZ1bGxuYW1lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlbW92ZShmdWxsbmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5fb3NfZXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fcm1kaXIocGF0aCkKLSAgICAgICAgZXhjZXB0IHNlbGYuX29zX2Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L19fbWFpbl9fLnB5IGIvTGliL3Rlc3QvX19tYWluX18ucHkKaW5kZXggY2U1NjE1Yi4uZDVmYmUxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvX19tYWluX18ucHkKKysrIGIvTGliL3Rlc3QvX19tYWluX18ucHkKQEAgLTEsMTMgKzEsMyBAQAotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdCwgc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAogCi0KLVRFTVBESVIsIFRFU1RDV0QgPSByZWdydGVzdC5fbWFrZV90ZW1wX2Rpcl9mb3JfYnVpbGQocmVncnRlc3QuVEVNUERJUikKLXJlZ3J0ZXN0LlRFTVBESVIgPSBURU1QRElSCi1yZWdydGVzdC5URVNUQ1dEID0gVEVTVENXRAotCi0jIFJ1biB0aGUgdGVzdHMgaW4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcnkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKLSMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgotIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuIFRoZSBvcmlnaW5hbCBDV0QgaXMKLSMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KLXdpdGggc3VwcG9ydC50ZW1wX2N3ZChURVNUQ1dELCBxdWlldD1UcnVlKToKLSAgICByZWdydGVzdC5tYWluKCkKK3JlZ3J0ZXN0Lm1haW5faW5fdGVtcF9jd2QoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2Z1dHVyZTEwLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2Z1dHVyZTEwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNWFiNjcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfZnV0dXJlMTAucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorInNwYW0sIGJhciwgYmxhaCIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2J5dGVjb2RlX2hlbHBlci5weSBiL0xpYi90ZXN0L2J5dGVjb2RlX2hlbHBlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDk0M2NkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYnl0ZWNvZGVfaGVscGVyLnB5CkBAIC0wLDAgKzEsNzIgQEAKKyIiImJ5dGVjb2RlX2hlbHBlciAtIHN1cHBvcnQgdG9vbHMgZm9yIHRlc3RpbmcgY29ycmVjdCBieXRlY29kZSBnZW5lcmF0aW9uIiIiCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGRpcworaW1wb3J0IGlvCisKK19VTlNQRUNJRklFRCA9IG9iamVjdCgpCisKK2NsYXNzIEJ5dGVjb2RlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkN1c3RvbSBhc3NlcnRpb24gbWV0aG9kcyBmb3IgaW5zcGVjdGluZyBieXRlY29kZS4iIiIKKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibHlfYXNfc3RyaW5nKHNlbGYsIGNvKToKKyAgICAgICAgcyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZGlzLmRpcyhjbywgZmlsZT1zKQorICAgICAgICByZXR1cm4gcy5nZXR2YWx1ZSgpCisKKyAgICBkZWYgYXNzZXJ0SW5zdHJ1Y3Rpb25NYXRjaGVzKHNlbGYsIGluc3RyLCBleHBlY3RlZCwgKiwgbGluZV9vZmZzZXQ9MCk6CisgICAgICAgICMgRGVsaWJlcmF0ZWx5IHRlc3Qgb3BuYW1lIGZpcnN0LCBzaW5jZSB0aGF0IGdpdmVzIGEgbW9yZQorICAgICAgICAjIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSB0aGFuIHRlc3Rpbmcgb3Bjb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdHIub3BuYW1lLCBleHBlY3RlZC5vcG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdHIub3Bjb2RlLCBleHBlY3RlZC5vcGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdHIuYXJnLCBleHBlY3RlZC5hcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdHIuYXJndmFsLCBleHBlY3RlZC5hcmd2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdHIuYXJncmVwciwgZXhwZWN0ZWQuYXJncmVwcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnN0ci5vZmZzZXQsIGV4cGVjdGVkLm9mZnNldCkKKyAgICAgICAgaWYgZXhwZWN0ZWQuc3RhcnRzX2xpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGluc3RyLnN0YXJ0c19saW5lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnN0ci5zdGFydHNfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQuc3RhcnRzX2xpbmUgKyBsaW5lX29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnN0ci5pc19qdW1wX3RhcmdldCwgZXhwZWN0ZWQuaXNfanVtcF90YXJnZXQpCisKKworICAgIGRlZiBhc3NlcnRCeXRlY29kZUV4YWN0bHlNYXRjaGVzKHNlbGYsIHgsIGV4cGVjdGVkLCAqLCBsaW5lX29mZnNldD0wKToKKyAgICAgICAgIiIiVGhyb3dzIEFzc2VydGlvbkVycm9yIGlmIGFueSBkaXNjcmVwYW5jeSBpcyBmb3VuZCBpbiBieXRlY29kZQorCisgICAgICAgICp4KiBpcyB0aGUgb2JqZWN0IHRvIGJlIGludHJvc3BlY3RlZAorICAgICAgICAqZXhwZWN0ZWQqIGlzIGEgbGlzdCBvZiBkaXMuSW5zdHJ1Y3Rpb24gb2JqZWN0cworCisgICAgICAgIFNldCAqbGluZV9vZmZzZXQqIGFzIGFwcHJvcHJpYXRlIHRvIGFkanVzdCBmb3IgdGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICBvYmplY3QgdG8gYmUgZGlzYXNzZW1ibGVkIHdpdGhpbiB0aGUgdGVzdCBmaWxlLiBJZiB0aGUgZXhwZWN0ZWQgbGlzdAorICAgICAgICBhc3N1bWVzIHRoZSBmaXJzdCBsaW5lIGlzIGxpbmUgMSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBvZmZzZXQgd291bGQgYmUKKyAgICAgICAgYGAxIC0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVub2BgLgorICAgICAgICAiIiIKKyAgICAgICAgYWN0dWFsID0gZGlzLmdldF9pbnN0cnVjdGlvbnMoeCwgbGluZV9vZmZzZXQ9bGluZV9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY3R1YWwpLCBleHBlY3RlZCkKKworICAgIGRlZiBhc3NlcnRJbkJ5dGVjb2RlKHNlbGYsIHgsIG9wbmFtZSwgYXJndmFsPV9VTlNQRUNJRklFRCk6CisgICAgICAgICIiIlJldHVybnMgaW5zdHIgaWYgb3AgaXMgZm91bmQsIG90aGVyd2lzZSB0aHJvd3MgQXNzZXJ0aW9uRXJyb3IiIiIKKyAgICAgICAgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKHgpOgorICAgICAgICAgICAgaWYgaW5zdHIub3BuYW1lID09IG9wbmFtZToKKyAgICAgICAgICAgICAgICBpZiBhcmd2YWwgaXMgX1VOU1BFQ0lGSUVEIG9yIGluc3RyLmFyZ3ZhbCA9PSBhcmd2YWw6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnN0cgorICAgICAgICBkaXNhc3NlbWJseSA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5X2FzX3N0cmluZyh4KQorICAgICAgICBpZiBhcmd2YWwgaXMgX1VOU1BFQ0lGSUVEOgorICAgICAgICAgICAgbXNnID0gJyVzIG5vdCBmb3VuZCBpbiBieXRlY29kZTpcbiVzJyAlIChvcG5hbWUsIGRpc2Fzc2VtYmx5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gJyglcywlcikgbm90IGZvdW5kIGluIGJ5dGVjb2RlOlxuJXMnCisgICAgICAgICAgICBtc2cgPSBtc2cgJSAob3BuYW1lLCBhcmd2YWwsIGRpc2Fzc2VtYmx5KQorICAgICAgICBzZWxmLmZhaWwobXNnKQorCisgICAgZGVmIGFzc2VydE5vdEluQnl0ZWNvZGUoc2VsZiwgeCwgb3BuYW1lLCBhcmd2YWw9X1VOU1BFQ0lGSUVEKToKKyAgICAgICAgIiIiVGhyb3dzIEFzc2VydGlvbkVycm9yIGlmIG9wIGlzIGZvdW5kIiIiCisgICAgICAgIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyh4KToKKyAgICAgICAgICAgIGlmIGluc3RyLm9wbmFtZSA9PSBvcG5hbWU6CisgICAgICAgICAgICAgICAgZGlzYXNzZW1ibHkgPSBzZWxmLmdldF9kaXNhc3NlbWJseV9hc19zdHJpbmcoY28pCisgICAgICAgICAgICAgICAgaWYgb3Bhcmd2YWwgaXMgX1VOU1BFQ0lGSUVEOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAnJXMgb2NjdXJzIGluIGJ5dGVjb2RlOlxuJXMnICUgKG9wbmFtZSwgZGlzYXNzZW1ibHkpCisgICAgICAgICAgICAgICAgZWxpZiBpbnN0ci5hcmd2YWwgPT0gYXJndmFsOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAnKCVzLCVyKSBvY2N1cnMgaW4gYnl0ZWNvZGU6XG4lcycKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gbXNnICUgKG9wbmFtZSwgYXJndmFsLCBkaXNhc3NlbWJseSkKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCA5MzFlZjZmLi5lMDhiMmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtNjE5LDYgKzYxOSwxMCBAQAogICAgICAgICBlcSh0ZChob3Vycz0tLjIvdXNfcGVyX2hvdXIpLCB0ZCgwKSkKICAgICAgICAgZXEodGQoZGF5cz0tLjQvdXNfcGVyX2RheSwgaG91cnM9LS4yL3VzX3Blcl9ob3VyKSwgdGQobWljcm9zZWNvbmRzPS0xKSkKIAorICAgICAgICAjIFRlc3QgZm9yIGEgcGF0Y2ggaW4gSXNzdWUgODg2MAorICAgICAgICBlcSh0ZChtaWNyb3NlY29uZHM9MC41KSwgMC41KnRkKG1pY3Jvc2Vjb25kcz0xLjApKQorICAgICAgICBlcSh0ZChtaWNyb3NlY29uZHM9MC41KS8vdGQucmVzb2x1dGlvbiwgMC41KnRkLnJlc29sdXRpb24vL3RkLnJlc29sdXRpb24pCisKICAgICBkZWYgdGVzdF9tYXNzaXZlX25vcm1hbGl6YXRpb24oc2VsZik6CiAgICAgICAgIHRkID0gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz0tMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodGQuZGF5cywgdGQuc2Vjb25kcywgdGQubWljcm9zZWNvbmRzKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ZpbmFsX2EucHkgYi9MaWIvdGVzdC9maW5hbF9hLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MGVlODgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9maW5hbF9hLnB5CkBAIC0wLDAgKzEsMTkgQEAKKyIiIgorRm9kZGVyIGZvciBtb2R1bGUgZmluYWxpemF0aW9uIHRlc3RzIGluIHRlc3RfbW9kdWxlLgorIiIiCisKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZXN0LmZpbmFsX2IKKworeCA9ICdhJworCitjbGFzcyBDOgorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAjIEluc3BlY3QgbW9kdWxlIGdsb2JhbHMgYW5kIGJ1aWx0aW5zCisgICAgICAgIHByaW50KCJ4ID0iLCB4KQorICAgICAgICBwcmludCgiZmluYWxfYi54ID0iLCB0ZXN0LmZpbmFsX2IueCkKKyAgICAgICAgcHJpbnQoInNodXRpbC5ybXRyZWUgPSIsIGdldGF0dHIoc2h1dGlsLnJtdHJlZSwgJ19fbmFtZV9fJywgTm9uZSkpCisgICAgICAgIHByaW50KCJsZW4gPSIsIGdldGF0dHIobGVuLCAnX19uYW1lX18nLCBOb25lKSkKKworYyA9IEMoKQorX3VuZGVyc2NvcmVkID0gQygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9maW5hbF9iLnB5IGIvTGliL3Rlc3QvZmluYWxfYi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjI4ZDgyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZmluYWxfYi5weQpAQCAtMCwwICsxLDE5IEBACisiIiIKK0ZvZGRlciBmb3IgbW9kdWxlIGZpbmFsaXphdGlvbiB0ZXN0cyBpbiB0ZXN0X21vZHVsZS4KKyIiIgorCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVzdC5maW5hbF9hCisKK3ggPSAnYicKKworY2xhc3MgQzoKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgIyBJbnNwZWN0IG1vZHVsZSBnbG9iYWxzIGFuZCBidWlsdGlucworICAgICAgICBwcmludCgieCA9IiwgeCkKKyAgICAgICAgcHJpbnQoImZpbmFsX2EueCA9IiwgdGVzdC5maW5hbF9hLngpCisgICAgICAgIHByaW50KCJzaHV0aWwucm10cmVlID0iLCBnZXRhdHRyKHNodXRpbC5ybXRyZWUsICdfX25hbWVfXycsIE5vbmUpKQorICAgICAgICBwcmludCgibGVuID0iLCBnZXRhdHRyKGxlbiwgJ19fbmFtZV9fJywgTm9uZSkpCisKK2MgPSBDKCkKK191bmRlcnNjb3JlZCA9IEMoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZm9ya193YWl0LnB5IGIvTGliL3Rlc3QvZm9ya193YWl0LnB5CmluZGV4IDg4NTI3ZGYuLjE5YjU0ZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQorKysgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgICAgICAgIHNlbGYuYWxpdmVbaWRdID0gb3MuZ2V0cGlkKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKFNIT1JUU0xFRVApCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB3YWl0X2ltcGwoc2VsZiwgY3BpZCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0My5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0My5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmYTYyYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2tleWNlcnQzLnBlbQpAQCAtMCwwICsxLDczIEBACistLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUNkZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQW1Bd2dnSmNBZ0VBQW9HQkFNTGdEMGtBS0RiNWNGeVAKK2pid05mUjVDdGV3ZFhDK2tNWEFXRDhETHhpVFR2aE1XN3FWbmx3T20zNm1abHN6SEt2c1JmMDVsVDRwZWdpRk0KKzl6MmoxT2xhTitjaS9YN05VMjJUTk42Y3JZU2lONzdGallKUDQ2NGo4NzZuZFN4eUQrcnp5czM4NlQrMXIxYVoKK2FnZ0Vka2oxVHNTc3YxeldJWUtsUElqbHZodXhBZ01CQUFFQ2dZQTBhSCtUMlZmM1dPUHY4S2RrY0pnNmdDUmUKK3lKS1hPV2dXUmNpY3gvQ1V6T0VzVHhtRklEUEx4cUFXQTNrN3YwQiszdmpHdzVZOWx5Y1YvNVhxWE5vUUkxNGoKK3kwOWlOc3VtZHMxM3U1QUtrR2RUSm5aaFE3VUtkb1ZIZnVQNDRaZE92L3JKNS9WRDZGNHpXeXdwZTkwcGNiSysKK0FXRFZ0dXNnR1FCU2llRWwxUUpCQU95VnJVRzVsMnlvVUJ0ZDJ6ci9raUdtL0RZeVhsSXRoUU8vQTMvTG5nRFcKKzUveWRHeFZzVDdsQVZPZ0Nzb1QrMEw0ZWZUaDkwUGp6VzhMUFFyUEJXVk1DUVFEUzNoL0Z0WVlkNWxmeitGTkwKKzlDRWUxRjF3OWw4UDc0OXVOVUQwZzMxN3p2MXRhdElxVkNzUVdIZlZITmRWdmZRK3ZTRnczOE9PUk8wMFhxczkKKzFHSnJBa0Jrb1hYRWt4Q1pveTRQdGVoZU8vOElXV0xHR3I2TDdkaTZNekZsMWxJcXdUNkQ4TDlvYVYydnluRlQKK0RuS29wMHBhMDlVbmhqeXc1N0tNTm1TRTJTVUpBa0VBcmxvVEV6cGdSbUNxNElLMi9OcENlR2RIUzV1cVJsYmgKKzFWSWEveEdwczdFV1FsNU1uOHN3UURlbC9ZUDNXR0hUamZ4N3BnU2VnUWZreWFSdEdwWjlPUUpBYTlWdW1qOG0KK0pBQXRJMEJuZ2E4aGdReDdCaFRRWTRDYWREeHlpUkdPR1lod1V6WVZDcWtiMnNiVlJIOUhud1VhSlQ3Y1dCWTMKK1JuSmRIT01YV2VtNy93PT0KKy0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KK0NlcnRpZmljYXRlOgorICAgIERhdGE6CisgICAgICAgIFZlcnNpb246IDEgKDB4MCkKKyAgICAgICAgU2VyaWFsIE51bWJlcjogMTI3MjMzNDI2MTI3MjE0NDMyODEgKDB4YjA5MjY0YjFmMmRhMjFkMSkKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCisgICAgICAgIFZhbGlkaXR5CisgICAgICAgICAgICBOb3QgQmVmb3JlOiBKYW4gIDQgMTk6NDc6MDcgMjAxMyBHTVQKKyAgICAgICAgICAgIE5vdCBBZnRlciA6IE5vdiAxMyAxOTo0NzowNyAyMDIyIEdNVAorICAgICAgICBTdWJqZWN0OiBDPVhZLCBMPUNhc3RsZSBBbnRocmF4LCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBDTj1sb2NhbGhvc3QKKyAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CisgICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgorICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgxMDI0IGJpdCkKKyAgICAgICAgICAgICAgICBNb2R1bHVzOgorICAgICAgICAgICAgICAgICAgICAwMDpjMjplMDowZjo0OTowMDoyODozNjpmOTo3MDo1Yzo4Zjo4ZDpiYzowZDoKKyAgICAgICAgICAgICAgICAgICAgN2Q6MWU6NDI6YjU6ZWM6MWQ6NWM6MmY6YTQ6MzE6NzA6MTY6MGY6YzA6Y2I6CisgICAgICAgICAgICAgICAgICAgIGM2OjI0OmQzOmJlOjEzOjE2OmVlOmE1OjY3Ojk3OjAzOmE2OmRmOmE5Ojk5OgorICAgICAgICAgICAgICAgICAgICA5NjpjYzpjNzoyYTpmYjoxMTo3Zjo0ZTo2NTo0Zjo4YTo1ZTo4MjoyMTo0YzoKKyAgICAgICAgICAgICAgICAgICAgZjc6M2Q6YTM6ZDQ6ZTk6NWE6Mzc6ZTc6MjI6ZmQ6N2U6Y2Q6NTM6NmQ6OTM6CisgICAgICAgICAgICAgICAgICAgIDM0OmRlOjljOmFkOjg0OmEyOjM3OmJlOmM1OjhkOjgyOjRmOmUzOmFlOjIzOgorICAgICAgICAgICAgICAgICAgICBmMzpiZTphNzo3NToyYzo3MjowZjplYTpmMzpjYTpjZDpmYzplOTozZjpiNToKKyAgICAgICAgICAgICAgICAgICAgYWY6NTY6OTk6NmE6MDg6MDQ6NzY6NDg6ZjU6NGU6YzQ6YWM6YmY6NWM6ZDY6CisgICAgICAgICAgICAgICAgICAgIDIxOjgyOmE1OjNjOjg4OmU1OmJlOjFiOmIxCisgICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorICAgICAgICAgMmY6NDI6NWY6YTM6MDk6MmM6ZmE6NTE6ODg6Yzc6Mzc6N2Y6ZWE6MGU6NjM6ZjA6YTI6OWE6CisgICAgICAgICBlNTo1YTplMjpjODoyMDpmMDozZjo2MDpiYzpjODowZjpiNjpjNjo3NjpjZTpkYjo4Mzo5MzoKKyAgICAgICAgIGY1OmEzOjMzOjY3OjAxOjhlOjA0OmNkOjAwOjlhOjczOmZkOmYzOjM1Ojg2OmZhOmQ3OjEzOgorICAgICAgICAgZTI6NDY6YzY6OWQ6YzA6Mjk6NTM6ZDQ6YTk6OTA6Yjg6Nzc6NGI6ZTY6ODM6NzY6ZTQ6OTI6CisgICAgICAgICBkNjo5Yzo1MDpjZjo0MzpkMDpjNjowMTo3Nzo2MTo5YTpkZTo5Yjo3MDpmNzo3MjpjZDo1OToKKyAgICAgICAgIDAwOjMxOjY5OmQ5OmI0OmNhOjA2OjljOjZkOmMzOmM3OjgwOjhjOjY4OmU2OmI1OmEyOmY4OgorICAgICAgICAgZWY6MWQ6YmI6MTY6OWY6Nzc6Nzc6ZWY6ODc6NjI6MjI6OWI6NGQ6Njk6YTQ6M2E6MWE6ZjE6CisgICAgICAgICAyMTo1ZTo4YzozMjphYzo5MjpmZDoxNTo2YjoxODpjMjo3ZjoxNTowZDo5ODozMDpjYTo3NToKKyAgICAgICAgIDhmOjFhOjcxOmRmOmRhOjFkOmIyOmVmOjlhOmU4OjJkOjJlOjAyOmZkOjRhOjNjOmFhOjk2OgorICAgICAgICAgMGI6MDY6NWQ6MzU6YjM6M2Q6MjQ6ODc6NGI6ZTA6YjA6NTg6NjA6MmY6NDU6YWM6MmU6NDg6CisgICAgICAgICA4YTpiMDo5OToxMDo2NToyNzpmZjpjYzpiMTpkODpmZDpiZDoyNjo2YjpiOTowYzowNToyYToKKyAgICAgICAgIGY0OjQ1OjYzOjM1OjUxOjA3OmVkOjgzOjg1OmZlOjZmOjY5OmNiOmJiOjQwOmE4OmFlOmI2OgorICAgICAgICAgM2I6NTY6NGE6MmQ6YTQ6ZWQ6NmQ6MTE6MmM6NGQ6ZWQ6MTc6MjQ6ZmQ6NDc6YmM6ZDM6NDE6CisgICAgICAgICBhMjpkMzowNjpmZTowYzo5MDpkODpkODo5NDoyNjpjNDpmZjpjYzphMTpkODo0Mjo3NzplYjoKKyAgICAgICAgIGZjOmE5Ojk0OjcxCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNwRENDQVl3Q0NRQ3drbVN4OHRvaDBUQU5CZ2txaGtpRzl3MEJBUVVGQURCTk1Rc3dDUVlEVlFRR0V3SlkKK1dURW1NQ1FHQTFVRUNnd2RVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNGdRMEV4RmpBVUJnTlYKK0JBTU1EVzkxY2kxallTMXpaWEoyWlhJd0hoY05NVE13TVRBME1UazBOekEzV2hjTk1qSXhNVEV6TVRrME56QTMKK1dqQmZNUXN3Q1FZRFZRUUdFd0pZV1RFWE1CVUdBMVVFQnhNT1EyRnpkR3hsSUVGdWRHaHlZWGd4SXpBaEJnTlYKK0JBb1RHbEI1ZEdodmJpQlRiMlowZDJGeVpTQkdiM1Z1WkdGMGFXOXVNUkl3RUFZRFZRUURFd2xzYjJOaGJHaHYKK2MzUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTUxnRDBrQUtEYjVjRnlQamJ3TmZSNUMKK3Rld2RYQytrTVhBV0Q4REx4aVRUdmhNVzdxVm5sd09tMzZtWmxzekhLdnNSZjA1bFQ0cGVnaUZNOXoyajFPbGEKK04rY2kvWDdOVTIyVE5ONmNyWVNpTjc3RmpZSlA0NjRqODc2bmRTeHlEK3J6eXMzODZUKzFyMWFaYWdnRWRrajEKK1RzU3N2MXpXSVlLbFBJamx2aHV4QWdNQkFBRXdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBQzlDWDZNSkxQcFIKK2lNYzNmK29PWS9DaW11VmE0c2dnOEQ5Z3ZNZ1B0c1oyenR1RGsvV2pNMmNCamdUTkFKcHovZk0xaHZyWEUrSkcKK3hwM0FLVlBVcVpDNGQwdm1nM2Jra3RhY1VNOUQwTVlCZDJHYTNwdHc5M0xOV1FBeGFkbTB5Z2FjYmNQSGdJeG8KKzVyV2krTzhkdXhhZmQzZnZoMklpbTAxcHBEb2E4U0ZlakRLc2t2MFZheGpDZnhVTm1EREtkWThhY2QvYUhiTHYKK211Z3RMZ0w5U2p5cWxnc0dYVFd6UFNTSFMrQ3dXR0F2UmF3dVNJcXdtUkJsSi8vTXNkajl2U1pydVF3Rkt2UkYKK1l6VlJCKzJEaGY1dmFjdTdRS2l1dGp0V1NpMms3VzBSTEUzdEZ5VDlSN3pUUWFMVEJ2NE1rTmpZbENiRS84eWgKKzJFSjM2L3lwbEhFPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qva2V5Y2VydDQucGVtIGIvTGliL3Rlc3Qva2V5Y2VydDQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMzU1YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9rZXljZXJ0NC5wZW0KQEAgLTAsMCArMSw3MyBAQAorLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCitNSUlDZGdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0FtQXdnZ0pjQWdFQUFvR0JBSzVVUWlNSTVWa05zMlF2CitMN2dVYWlEZEZldk5VWFJqVTRESEFlM1p6ellMWk5FNjloOWdPOVZDU1MxNnRKNWZUNVZFdTBFWnlHcjBlM1YyCitOa1gwWm9VMEhjL1VhWTRxeDdMSG1uNVNZWnBJeGhKbmtmN1N5SEpLMXpVYUdsVTAvTHhZcUl1R0N0RjVkcXgxCitMMk9RaEV4MUdNNlJ5ZEhkZ1g2OUc2NExYY1k1QWdNQkFBRUNnWUFoc1JNZkprYjlFUkxNbC9vRy81c0xRdTlMCitwV0RLdDYrWndkeHpsWmJnZ1E4NUNNWXNoakxLSW9kMkRMTC9zTGYyeDFQUlh5UkcxMzFNMUUzazh6a2t6NmRlCitSMXVEcklOL3g5MWl1WXpmTFFaR2g4Yk1ZN1lqZDJlb3JvYTZSLzdEanBFbEdlakx4T0FhRFdPMFNUMklGUXk5CitteVRHUzJqU005N3djWGZzU1FKQkFOUDNqZWxKb1M1WDZCUmpUU25lWTIxd2NvY3hWdVFoOHBYcEVyQUxWTnNUCitkcnJGVGVhQnVacDdLdmJ0bklNNWcyV1JOdmF4TFpsQVkvaFhQSnZpNm5jQ1FRRFNpeDFjZWJtbDZFbVBsRVpTCitNbThnd0kyRjl1ZlV1bndKbUJKY3o4MjZEbzBaTkdCeVdEQU0vSlFaSDRGWDRHZkFGTnVqOFBVYitHUWZhZGt4CitpMURQQWtFQTBsVnNOSG9qdnVEc0lvOEhHdXphck5aUVQyYmVXakoxamR4aDl0N0hyVHg3TElwczZyYi9maE9LCitaczBSNmdWQUphRWJjV0FQWjJ0RnlFQ0luQWRuc1FKQVVqYWVYWGp1eEZrak9GeW01UHZxcHZocGl2RXg3OEJ1CitKUFRyM3JBS1htZkdNeHhmdU9hMHhLMXdTeXNoUDZaUi9SQm4vK2xjWFBLdWJoSFFET2Vnd3dKQUpGMURCUW5OCisrL3RMbU9QVUx0RHdmUDRaaXhuKy84R21HT2FoRm9SY3U2VklHSG1SaWxKVG42TU9CdXR3N0dsdjJZZGVDNmwvCitlODNHcTZmZkxWZktOUT09CistLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCitDZXJ0aWZpY2F0ZToKKyAgICBEYXRhOgorICAgICAgICBWZXJzaW9uOiAxICgweDApCisgICAgICAgIFNlcmlhbCBOdW1iZXI6IDEyNzIzMzQyNjEyNzIxNDQzMjgyICgweGIwOTI2NGIxZjJkYTIxZDIpCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCisgICAgICAgIElzc3VlcjogQz1YWSwgTz1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBDQSwgQ049b3VyLWNhLXNlcnZlcgorICAgICAgICBWYWxpZGl0eQorICAgICAgICAgICAgTm90IEJlZm9yZTogSmFuICA0IDE5OjQ3OjA3IDIwMTMgR01UCisgICAgICAgICAgICBOb3QgQWZ0ZXIgOiBOb3YgMTMgMTk6NDc6MDcgMjAyMiBHTVQKKyAgICAgICAgU3ViamVjdDogQz1YWSwgTD1DYXN0bGUgQW50aHJheCwgTz1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiwgQ049ZmFrZWhvc3RuYW1lCisgICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKyAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMTAyNCBiaXQpCisgICAgICAgICAgICAgICAgTW9kdWx1czoKKyAgICAgICAgICAgICAgICAgICAgMDA6YWU6NTQ6NDI6MjM6MDg6ZTU6NTk6MGQ6YjM6NjQ6MmY6MmY6Yjg6MTQ6CisgICAgICAgICAgICAgICAgICAgIDZhOjIwOmRkOjE1OmViOmNkOjUxOjc0OjYzOjUzOjgwOmM3OjAxOmVkOmQ5OgorICAgICAgICAgICAgICAgICAgICBjZjozNjowYjo2NDpkMTozYTpmNjoxZjo2MDozYjpkNTo0Mjo0OToyZDo3YToKKyAgICAgICAgICAgICAgICAgICAgYjQ6OWU6NWY6NGY6OTU6NDQ6YmI6NDE6MTk6Yzg6NmE6ZjQ6N2I6NzU6NzY6CisgICAgICAgICAgICAgICAgICAgIDM2OjQ1OmY0OjY2Ojg1OjM0OjFkOmNmOmQ0OjY5OjhlOjJhOmM3OmIyOmM3OgorICAgICAgICAgICAgICAgICAgICA5YTo3ZTo1Mjo2MTo5YTo0ODpjNjoxMjo2Nzo5MTpmZTpkMjpjODo3Mjo0YToKKyAgICAgICAgICAgICAgICAgICAgZDc6MzU6MWE6MWE6NTU6MzQ6ZmM6YmM6NTg6YTg6OGI6ODY6MGE6ZDE6Nzk6CisgICAgICAgICAgICAgICAgICAgIDc2OmFjOjc1OjJmOjYzOjkwOjg0OjRjOjc1OjE4OmNlOjkxOmM5OmQxOmRkOgorICAgICAgICAgICAgICAgICAgICA4MTo3ZTpiZDoxYjphZTowYjo1ZDpjNjozOQorICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KKyAgICAgICAgIGFkOjQ1OjhhOjhlOmVmOmM2OmVmOjA0OjQxOjVjOjJjOjRhOjg0OmRjOjAyOjc2OjBjOmQwOgorICAgICAgICAgNjY6MGY6ZjA6MTY6MDQ6NTg6NGQ6ZmQ6Njg6Yjc6Yjg6ZDM6YTg6NDE6YTU6NWM6M2M6NmY6CisgICAgICAgICA2NTozYzpkMTpmODpjZTo0MzozNTplNzo0MTo1Zjo1MzozZDpjOToyYzpjMzo3ZDpmYzo1NjoKKyAgICAgICAgIDRhOmZhOjQ3Ojc3OjM4OjlkOmJiOjk3OjI4OjBhOjNiOjkxOjE5OjdmOmJjOjc0OmFlOjE1OgorICAgICAgICAgNmI6YmQ6MjA6MzY6Njc6NDU6YTU6MWU6Nzk6ZDc6NzU6ZTY6ODk6NWM6NmQ6NTQ6ODQ6ZDE6CisgICAgICAgICA5NTpkNzphNzpiNDozMzozYzphZjozNzpjNDo3OTo4Zjo1ZTo3NTpkYzo3NTpjMjoxODpmYjoKKyAgICAgICAgIDYxOjZmOjJkOmRjOjM4OjY1OjViOmJhOjY3OjI4OmQwOjg4OmQ3OjhkOmI5OjIzOjVhOjhlOgorICAgICAgICAgZTg6YzY6YmI6ZGI6Y2U6ZDU6Yjg6NDE6MmE6Y2U6OTM6MDg6YjY6OTU6YWQ6MzQ6MjA6MTg6CisgICAgICAgICBkNTozYjozNzo1Mjo3NDo1MDowYjowNzoyYzpiMDo2ZDphNDo0Yzo3YjpmNDplMDpmZDpkMToKKyAgICAgICAgIGFmOjE3OmFhOjIwOmNkOjYyOmUzOmYwOjlkOjM3OjY5OmRiOjQxOmJkOmQ0OjFjOmZiOjUzOgorICAgICAgICAgMjA6ZGE6ODg6OWQ6NzY6MjY6Njc6Y2U6MDE6OTA6YTc6ODA6MWQ6YTk6NWI6Mzk6NzM6Njg6CisgICAgICAgICA1NDowYTpkMToyYTowMzoxYjo4ZjozYzo0Mzo1ZDo1ZDpjNDo1MTpmMTphNzplNzoxMTpkYToKKyAgICAgICAgIDMxOjJjOjQ5OjA2OmFmOjA0OmY0OmI4OjNjOjk5OmM0OjIwOmI5OjA2OjM2OmEyOjAwOjkyOgorICAgICAgICAgNjE6MWQ6MGM6NmQ6MjQ6MDU6ZTI6ODI6ZTE6NDc6ZGI6YTA6NWY6YmE6Yjk6ZmI6YmE6ZmE6CisgICAgICAgICA0OToxMjoxZTpjZQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlDcHpDQ0FZOENDUUN3a21TeDh0b2gwakFOQmdrcWhraUc5dzBCQVFVRkFEQk5NUXN3Q1FZRFZRUUdFd0pZCitXVEVtTUNRR0ExVUVDZ3dkVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjRnUTBFeEZqQVVCZ05WCitCQU1NRFc5MWNpMWpZUzF6WlhKMlpYSXdIaGNOTVRNd01UQTBNVGswTnpBM1doY05Nakl4TVRFek1UazBOekEzCitXakJpTVFzd0NRWURWUVFHRXdKWVdURVhNQlVHQTFVRUJ4TU9RMkZ6ZEd4bElFRnVkR2h5WVhneEl6QWhCZ05WCitCQW9UR2xCNWRHaHZiaUJUYjJaMGQyRnlaU0JHYjNWdVpHRjBhVzl1TVJVd0V3WURWUVFERXd4bVlXdGxhRzl6CitkRzVoYldVd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFLNVVRaU1JNVZrTnMyUXZMN2dVCithaURkRmV2TlVYUmpVNERIQWUzWnp6WUxaTkU2OWg5Z085VkNTUzE2dEo1ZlQ1VkV1MEVaeUdyMGUzVjJOa1gwCitab1UwSGMvVWFZNHF4N0xIbW41U1lacEl4aEpua2Y3U3lISksxelVhR2xVMC9MeFlxSXVHQ3RGNWRxeDFMMk9RCitoRXgxR002UnlkSGRnWDY5RzY0TFhjWTVBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFLMUZpbzd2Cit4dThFUVZ3c1NvVGNBbllNMEdZUDhCWUVXRTM5YUxlNDA2aEJwVnc4YjJVODBmak9RelhuUVY5VFBja3N3MzM4CitWa3I2UjNjNG5idVhLQW83a1JsL3ZIU3VGV3U5SURablJhVWVlZGQxNW9sY2JWU0UwWlhYcDdRelBLODN4SG1QCitYblhjZGNJWSsyRnZMZHc0WlZ1Nlp5alFpTmVOdVNOYWp1akd1OXZPMWJoQktzNlRDTGFWclRRZ0dOVTdOMUowCitVQXNITExCdHBFeDc5T0Q5MGE4WHFpRE5ZdVB3blRkcDIwRzkxQno3VXlEYWlKMTJKbWZPQVpDbmdCMnBXemx6CithRlFLMFNvREc0ODhRMTFkeEZIeHArY1IyakVzU1FhdkJQUzRQSm5FSUxrR05xSUFrbUVkREcwa0JlS0M0VWZiCitvRis2dWZ1Nitra1NIczQ9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9sZWFrZXJzL3Rlc3RfZ2VzdGFsdC5weSBiL0xpYi90ZXN0L2xlYWtlcnMvdGVzdF9nZXN0YWx0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDA4MWMxLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2xlYWtlcnMvdGVzdF9nZXN0YWx0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotaW1wb3J0IHN5cwotCi1pZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6Ci0gICAgcmFpc2UgVmFsdWVFcnJvcigiVGhpcyB0ZXN0IG9ubHkgbGVha3Mgb24gTWFjIE9TIFgiKQotCi1kZWYgbGVhaygpOgotICAgICMgdGFrZW4gZnJvbSBwbGF0Zm9ybS5fbWFjX3Zlcl9sb29rdXAoKQotICAgIGZyb20gZ2VzdGFsdCBpbXBvcnQgZ2VzdGFsdAotICAgIGltcG9ydCBNYWNPUwotCi0gICAgdHJ5OgotICAgICAgICBnZXN0YWx0KCdzeXN1JykKLSAgICBleGNlcHQgTWFjT1MuRXJyb3I6Ci0gICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CmluZGV4IGJmYmY0NGUuLjFhMjRiZGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQpAQCAtODAsNiArODAsMTEgQEAKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQogICAgICAgICBkZWwgbG9jawogCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQorICAgICAgICByZXByKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisKICAgICBkZWYgdGVzdF9hY3F1aXJlX2Rlc3Ryb3koc2VsZik6CiAgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKICAgICAgICAgbG9jay5hY3F1aXJlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5IGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKaW5kZXggNDhkMmU1Ny4uZjYzMDgxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKKysrIGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKQEAgLTIsNiArMiw3IEBACiBhbmQgZnJpZW5kcy4iIiIKIAogaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgKgpAQCAtMjAsMTEgKzIxLDUyIEBACiAKICAgICBbcmVxX3g1MDlfZXh0ZW5zaW9uc10KICAgICBzdWJqZWN0QWx0TmFtZSAgICAgICAgID0gRE5TOntob3N0bmFtZX0KKworICAgIFsgY2EgXQorICAgIGRlZmF1bHRfY2EgICAgICA9IENBX2RlZmF1bHQKKworICAgIFsgQ0FfZGVmYXVsdCBdCisgICAgZGlyID0gY2FkaXIKKyAgICBkYXRhYmFzZSAgPSAkZGlyL2luZGV4LnR4dAorICAgIGRlZmF1bHRfbWQgPSBzaGExCisgICAgZGVmYXVsdF9kYXlzID0gMzYwMAorICAgIGNlcnRpZmljYXRlID0gcHljYWNlcnQucGVtCisgICAgcHJpdmF0ZV9rZXkgPSBweWNha2V5LnBlbQorICAgIHNlcmlhbCAgICA9ICRkaXIvc2VyaWFsCisgICAgUkFOREZJTEUgID0gJGRpci8ucmFuZAorCisgICAgcG9saWN5ICAgICAgICAgID0gcG9saWN5X21hdGNoCisKKyAgICBbIHBvbGljeV9tYXRjaCBdCisgICAgY291bnRyeU5hbWUgICAgICAgICAgICAgPSBtYXRjaAorICAgIHN0YXRlT3JQcm92aW5jZU5hbWUgICAgID0gb3B0aW9uYWwKKyAgICBvcmdhbml6YXRpb25OYW1lICAgICAgICA9IG1hdGNoCisgICAgb3JnYW5pemF0aW9uYWxVbml0TmFtZSAgPSBvcHRpb25hbAorICAgIGNvbW1vbk5hbWUgICAgICAgICAgICAgID0gc3VwcGxpZWQKKyAgICBlbWFpbEFkZHJlc3MgICAgICAgICAgICA9IG9wdGlvbmFsCisKKyAgICBbIHBvbGljeV9hbnl0aGluZyBdCisgICAgY291bnRyeU5hbWUgICA9IG9wdGlvbmFsCisgICAgc3RhdGVPclByb3ZpbmNlTmFtZSA9IG9wdGlvbmFsCisgICAgbG9jYWxpdHlOYW1lICAgID0gb3B0aW9uYWwKKyAgICBvcmdhbml6YXRpb25OYW1lICA9IG9wdGlvbmFsCisgICAgb3JnYW5pemF0aW9uYWxVbml0TmFtZSAgPSBvcHRpb25hbAorICAgIGNvbW1vbk5hbWUgICAgPSBzdXBwbGllZAorICAgIGVtYWlsQWRkcmVzcyAgICA9IG9wdGlvbmFsCisKKworICAgIFsgdjNfY2EgXQorCisgICAgc3ViamVjdEtleUlkZW50aWZpZXI9aGFzaAorICAgIGF1dGhvcml0eUtleUlkZW50aWZpZXI9a2V5aWQ6YWx3YXlzLGlzc3VlcgorICAgIGJhc2ljQ29uc3RyYWludHMgPSBDQTp0cnVlCisKICAgICAiIiIKIAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQogCi1kZWYgbWFrZV9jZXJ0X2tleShob3N0bmFtZSk6CitkZWYgbWFrZV9jZXJ0X2tleShob3N0bmFtZSwgc2lnbj1GYWxzZSk6CisgICAgcHJpbnQoImNyZWF0aW5nIGNlcnQgZm9yICIgKyBob3N0bmFtZSkKICAgICB0ZW1wbmFtZXMgPSBbXQogICAgIGZvciBpIGluIHJhbmdlKDMpOgogICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpIGFzIGY6CkBAIC0zMywxMCArNzUsMjUgQEAKICAgICB0cnk6CiAgICAgICAgIHdpdGggb3BlbihyZXFfZmlsZSwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShyZXFfdGVtcGxhdGUuZm9ybWF0KGhvc3RuYW1lPWhvc3RuYW1lKSkKLSAgICAgICAgYXJncyA9IFsncmVxJywgJy1uZXcnLCAnLWRheXMnLCAnMzY1MCcsICctbm9kZXMnLCAnLXg1MDknLAorICAgICAgICBhcmdzID0gWydyZXEnLCAnLW5ldycsICctZGF5cycsICczNjUwJywgJy1ub2RlcycsCiAgICAgICAgICAgICAgICAgJy1uZXdrZXknLCAncnNhOjEwMjQnLCAnLWtleW91dCcsIGtleV9maWxlLAotICAgICAgICAgICAgICAgICctb3V0JywgY2VydF9maWxlLCAnLWNvbmZpZycsIHJlcV9maWxlXQorICAgICAgICAgICAgICAgICctY29uZmlnJywgcmVxX2ZpbGVdCisgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpIGFzIGY6CisgICAgICAgICAgICAgICAgdGVtcG5hbWVzLmFwcGVuZChmLm5hbWUpCisgICAgICAgICAgICAgICAgcmVxZmlsZSA9IGYubmFtZQorICAgICAgICAgICAgYXJncyArPSBbJy1vdXQnLCByZXFmaWxlIF0KKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJncyArPSBbJy14NTA5JywgJy1vdXQnLCBjZXJ0X2ZpbGUgXQogICAgICAgICBjaGVja19jYWxsKFsnb3BlbnNzbCddICsgYXJncykKKworICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgYXJncyA9IFsnY2EnLCAnLWNvbmZpZycsIHJlcV9maWxlLCAnLW91dCcsIGNlcnRfZmlsZSwgJy1vdXRkaXInLCAnY2FkaXInLAorICAgICAgICAgICAgICAgICAgICAnLXBvbGljeScsICdwb2xpY3lfYW55dGhpbmcnLCAnLWJhdGNoJywgJy1pbmZpbGVzJywgcmVxZmlsZSBdCisgICAgICAgICAgICBjaGVja19jYWxsKFsnb3BlbnNzbCddICsgYXJncykKKworCiAgICAgICAgIHdpdGggb3BlbihjZXJ0X2ZpbGUsICdyJykgYXMgZjoKICAgICAgICAgICAgIGNlcnQgPSBmLnJlYWQoKQogICAgICAgICB3aXRoIG9wZW4oa2V5X2ZpbGUsICdyJykgYXMgZjoKQEAgLTQ2LDYgKzEwMywzMiBAQAogICAgICAgICBmb3IgbmFtZSBpbiB0ZW1wbmFtZXM6CiAgICAgICAgICAgICBvcy5yZW1vdmUobmFtZSkKIAorVE1QX0NBRElSID0gJ2NhZGlyJworCitkZWYgdW5tYWtlX2NhKCk6CisgICAgc2h1dGlsLnJtdHJlZShUTVBfQ0FESVIpCisKK2RlZiBtYWtlX2NhKCk6CisgICAgb3MubWtkaXIoVE1QX0NBRElSKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ2NhZGlyJywnaW5kZXgudHh0JyksJ2ErJykgYXMgZjoKKyAgICAgICAgcGFzcyAjIGVtcHR5IGZpbGUKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdjYWRpcicsJ2luZGV4LnR4dC5hdHRyJyksJ3crJykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgndW5pcXVlX3N1YmplY3QgPSBubycpCisKKyAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgidyIpIGFzIHQ6CisgICAgICAgIHQud3JpdGUocmVxX3RlbXBsYXRlLmZvcm1hdChob3N0bmFtZT0nb3VyLWNhLXNlcnZlcicpKQorICAgICAgICB0LmZsdXNoKCkKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKSBhcyBmOgorICAgICAgICAgICAgYXJncyA9IFsncmVxJywgJy1uZXcnLCAnLWRheXMnLCAnMzY1MCcsICctZXh0ZW5zaW9ucycsICd2M19jYScsICctbm9kZXMnLAorICAgICAgICAgICAgICAgICAgICAnLW5ld2tleScsICdyc2E6MjA0OCcsICcta2V5b3V0JywgJ3B5Y2FrZXkucGVtJywKKyAgICAgICAgICAgICAgICAgICAgJy1vdXQnLCBmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICctc3ViaicsICcvQz1YWS9MPUNhc3RsZSBBbnRocmF4L089UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EvQ049b3VyLWNhLXNlcnZlciddCisgICAgICAgICAgICBjaGVja19jYWxsKFsnb3BlbnNzbCddICsgYXJncykKKyAgICAgICAgICAgIGFyZ3MgPSBbJ2NhJywgJy1jb25maWcnLCB0Lm5hbWUsICctY3JlYXRlX3NlcmlhbCcsCisgICAgICAgICAgICAgICAgICAgICctb3V0JywgJ3B5Y2FjZXJ0LnBlbScsICctYmF0Y2gnLCAnLW91dGRpcicsIFRNUF9DQURJUiwKKyAgICAgICAgICAgICAgICAgICAgJy1rZXlmaWxlJywgJ3B5Y2FrZXkucGVtJywgJy1kYXlzJywgJzM2NTAnLAorICAgICAgICAgICAgICAgICAgICAnLXNlbGZzaWduJywgJy1leHRlbnNpb25zJywgJ3YzX2NhJywgJy1pbmZpbGVzJywgZi5uYW1lIF0KKyAgICAgICAgICAgIGNoZWNrX2NhbGwoWydvcGVuc3NsJ10gKyBhcmdzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG9zLmNoZGlyKGhlcmUpCkBAIC01NCwxMSArMTM3LDM0IEBACiAgICAgICAgIGYud3JpdGUoY2VydCkKICAgICB3aXRoIG9wZW4oJ3NzbF9rZXkucGVtJywgJ3cnKSBhcyBmOgogICAgICAgICBmLndyaXRlKGtleSkKKyAgICBwcmludCgicGFzc3dvcmQgcHJvdGVjdGluZyBzc2xfa2V5LnBlbSBpbiBzc2xfa2V5LnBhc3N3ZC5wZW0iKQorICAgIGNoZWNrX2NhbGwoWydvcGVuc3NsJywncnNhJywnLWluJywnc3NsX2tleS5wZW0nLCctb3V0Jywnc3NsX2tleS5wYXNzd2QucGVtJywnLWRlczMnLCctcGFzc291dCcsJ3Bhc3M6c29tZXBhc3MnXSkKKyAgICBjaGVja19jYWxsKFsnb3BlbnNzbCcsJ3JzYScsJy1pbicsJ3NzbF9rZXkucGVtJywnLW91dCcsJ2tleWNlcnQucGFzc3dkLnBlbScsJy1kZXMzJywnLXBhc3NvdXQnLCdwYXNzOnNvbWVwYXNzJ10pCisKICAgICB3aXRoIG9wZW4oJ2tleWNlcnQucGVtJywgJ3cnKSBhcyBmOgogICAgICAgICBmLndyaXRlKGtleSkKICAgICAgICAgZi53cml0ZShjZXJ0KQorCisgICAgd2l0aCBvcGVuKCdrZXljZXJ0LnBhc3N3ZC5wZW0nLCAnYSsnKSBhcyBmOgorICAgICAgICBmLndyaXRlKGNlcnQpCisKICAgICAjIEZvciBjZXJ0aWZpY2F0ZSBtYXRjaGluZyB0ZXN0cworICAgIG1ha2VfY2EoKQogICAgIGNlcnQsIGtleSA9IG1ha2VfY2VydF9rZXkoJ2Zha2Vob3N0bmFtZScpCiAgICAgd2l0aCBvcGVuKCdrZXljZXJ0Mi5wZW0nLCAndycpIGFzIGY6CiAgICAgICAgIGYud3JpdGUoa2V5KQogICAgICAgICBmLndyaXRlKGNlcnQpCisKKyAgICBjZXJ0LCBrZXkgPSBtYWtlX2NlcnRfa2V5KCdsb2NhbGhvc3QnLCBUcnVlKQorICAgIHdpdGggb3Blbigna2V5Y2VydDMucGVtJywgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKGtleSkKKyAgICAgICAgZi53cml0ZShjZXJ0KQorCisgICAgY2VydCwga2V5ID0gbWFrZV9jZXJ0X2tleSgnZmFrZWhvc3RuYW1lJywgVHJ1ZSkKKyAgICB3aXRoIG9wZW4oJ2tleWNlcnQ0LnBlbScsICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZShrZXkpCisgICAgICAgIGYud3JpdGUoY2VydCkKKworICAgIHVubWFrZV9jYSgpCisgICAgcHJpbnQoIlxuXG5QbGVhc2UgY2hhbmdlIHRoZSB2YWx1ZXMgaW4gdGVzdF9zc2wucHksIHRlc3RfcGFyc2VfY2VydCBmdW5jdGlvbiByZWxhdGVkIHRvIG5vdEFmdGVyLG5vdEJlZm9yZSBhbmQgc2VyaWFsTnVtYmVyIikKKyAgICBjaGVja19jYWxsKFsnb3BlbnNzbCcsJ3g1MDknLCctaW4nLCdrZXljZXJ0LnBlbScsJy1kYXRlcycsJy1zZXJpYWwnLCctbm9vdXQnXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21vY2tfc29ja2V0LnB5IGIvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkKaW5kZXggZDA5ZTc4Yy4uOGVmMGVjOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkKQEAgLTE0MCwxMiArMTQwLDggQEAKICAgICByZXR1cm4gIiIKIAogCi1jbGFzcyBnYWllcnJvcihFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1jbGFzcyBlcnJvcihFeGNlcHRpb24pOgotICAgIHBhc3MKK2dhaWVycm9yID0gc29ja2V0X21vZHVsZS5nYWllcnJvcgorZXJyb3IgPSBzb2NrZXRfbW9kdWxlLmVycm9yCiAKIAogIyBDb25zdGFudHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkgYi9MaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CmluZGV4IDI2YmFjN2IuLmRjYWFlN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm9wZW5fbWFwcGluZ19maWxlKCkuY2xvc2UoKSAjIHRlc3QgaXQgdG8gcmVwb3J0IHRoZSBlcnJvciBlYXJseQotICAgICAgICBleGNlcHQgKElPRXJyb3IsIEhUVFBFeGNlcHRpb24pOgorICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEhUVFBFeGNlcHRpb24pOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ291bGQgbm90IHJldHJpZXZlICIrc2VsZi5tYXBmaWxldXJsKQogCiAgICAgZGVmIG9wZW5fbWFwcGluZ19maWxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDM0MjM0NjIuLjdlNmU3NTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTYwMSwzMCArNjAxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYubG9hZHMsIGInZzBcbnAwJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKGInKChLZHRwMFxuaFx4MDBsLikpJyksIFsoMTAwLCksICgxMDAsKV0pCiAKLSAgICBkZWYgdGVzdF9pbnNlY3VyZV9zdHJpbmdzKHNlbGYpOgotICAgICAgICAjIFhYWCBTb21lIG9mIHRoZXNlIHRlc3RzIGFyZSB0ZW1wb3JhcmlseSBkaXNhYmxlZAotICAgICAgICBpbnNlY3VyZSA9IFtiImFiYyIsIGIiMiArIDIiLCAjIG5vdCBxdW90ZWQKLSAgICAgICAgICAgICAgICAgICAgIyMgYiInYWJjJyArICdkZWYnIiwgIyBub3QgYSBzaW5nbGUgcXVvdGVkIHN0cmluZwotICAgICAgICAgICAgICAgICAgICBiIidhYmMiLCAjIHF1b3RlIGlzIG5vdCBjbG9zZWQKLSAgICAgICAgICAgICAgICAgICAgYiInYWJjXCIiLCAjIG9wZW4gcXVvdGUgYW5kIGNsb3NlIHF1b3RlIGRvbid0IG1hdGNoCi0gICAgICAgICAgICAgICAgICAgIGIiJ2FiYycgICA/IiwgIyBqdW5rIGFmdGVyIGNsb3NlIHF1b3RlCi0gICAgICAgICAgICAgICAgICAgIGIiJ1xcJyIsICMgdHJhaWxpbmcgYmFja3NsYXNoCi0gICAgICAgICAgICAgICAgICAgICMgVmFyaWF0aW9ucyBvbiBpc3N1ZSAjMTc3MTAKLSAgICAgICAgICAgICAgICAgICAgYiInIiwKLSAgICAgICAgICAgICAgICAgICAgYiciJywKLSAgICAgICAgICAgICAgICAgICAgYiInICIsCi0gICAgICAgICAgICAgICAgICAgIGIiJyAgIiwKLSAgICAgICAgICAgICAgICAgICAgYiInICAgIiwKLSAgICAgICAgICAgICAgICAgICAgYiInICAgICIsCi0gICAgICAgICAgICAgICAgICAgIGInIiAgICAnLAotICAgICAgICAgICAgICAgICAgICAjIHNvbWUgdGVzdHMgb2YgdGhlIHF1b3RpbmcgcnVsZXMKLSAgICAgICAgICAgICAgICAgICAgIyMgYiInYWJjXCJcJyciLAotICAgICAgICAgICAgICAgICAgICAjIyBiIidcXFxcYVwnXCdcJ1xcXCdcXFxcXCcnIiwKLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICBmb3IgYiBpbiBpbnNlY3VyZToKLSAgICAgICAgICAgIGJ1ZiA9IGIiUyIgKyBiICsgYiJcMDEycDBcMDEyLiIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYubG9hZHMsIGJ1ZikKLQogICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6CiAgICAgICAgIGVuZGNhc2VzID0gWycnLCAnPFxcdT4nLCAnPFxcXHUxMjM0PicsICc8XG4+JywKICAgICAgICAgICAgICAgICAgICAgJzxcXD4nLCAnPFxcXFUwMDAxMjM0NT4nLApAQCAtMTIxNCw2ICsxMTkwLDM1IEBACiAgICAgICAgIGR1bXBlZCA9IGInXHg4MFx4MDNYXHgwMVx4MDBceDAwXHgwMGFyXHhmZlx4ZmZceGZmXHhmZi4nCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYubG9hZHMsIGR1bXBlZCkKIAorICAgIGRlZiB0ZXN0X2JhZGx5X2VzY2FwZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmxvYWRzLCBiIlMnXFwnXG4uIikKKworICAgIGRlZiB0ZXN0X2JhZGx5X3F1b3RlZF9zdHJpbmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE3NzEwCisgICAgICAgIGJhZHBpY2tsZXMgPSBbYiJTJ1xuLiIsCisgICAgICAgICAgICAgICAgICAgICAgYidTIlxuLicsCisgICAgICAgICAgICAgICAgICAgICAgYidTXCcgXG4uJywKKyAgICAgICAgICAgICAgICAgICAgICBiJ1MiIFxuLicsCisgICAgICAgICAgICAgICAgICAgICAgYidTXCciXG4uJywKKyAgICAgICAgICAgICAgICAgICAgICBiJ1MiXCdcbi4nLAorICAgICAgICAgICAgICAgICAgICAgIGIiUycgJyBcbi4iLAorICAgICAgICAgICAgICAgICAgICAgIGInUyIgIiBcbi4nLAorICAgICAgICAgICAgICAgICAgICAgIGIiUyAnJ1xuLiIsCisgICAgICAgICAgICAgICAgICAgICAgYidTICIiXG4uJywKKyAgICAgICAgICAgICAgICAgICAgICBiJ1MgXG4uJywKKyAgICAgICAgICAgICAgICAgICAgICBiJ1Ncbi4nLAorICAgICAgICAgICAgICAgICAgICAgIGInUy4nXQorICAgICAgICBmb3IgcCBpbiBiYWRwaWNrbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocGlja2xlLlVucGlja2xpbmdFcnJvciwgc2VsZi5sb2FkcywgcCkKKworICAgIGRlZiB0ZXN0X2NvcnJlY3RseV9xdW90ZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBnb29kcGlja2xlcyA9IFsoYiJTJydcbi4iLCAnJyksCisgICAgICAgICAgICAgICAgICAgICAgIChiJ1MiIlxuLicsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgKGInUyJcXG4iXG4uJywgJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgIChiIlMnXFxuJ1xuLiIsICdcbicpXQorICAgICAgICBmb3IgcCwgZXhwZWN0ZWQgaW4gZ29vZHBpY2tsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMocCksIGV4cGVjdGVkKQorCiAgICAgZGVmIF9jaGVja19waWNrbGluZ193aXRoX29wY29kZShzZWxmLCBvYmosIG9wY29kZSwgcHJvdG8pOgogICAgICAgICBwaWNrbGVkID0gc2VsZi5kdW1wcyhvYmosIHByb3RvKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3Bjb2RlX2luX3BpY2tsZShvcGNvZGUsIHBpY2tsZWQpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHljYWNlcnQucGVtIGIvTGliL3Rlc3QvcHljYWNlcnQucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YjFmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9weWNhY2VydC5wZW0KQEAgLTAsMCArMSw3OCBAQAorQ2VydGlmaWNhdGU6CisgICAgRGF0YToKKyAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorICAgICAgICBTZXJpYWwgTnVtYmVyOiAxMjcyMzM0MjYxMjcyMTQ0MzI4MCAoMHhiMDkyNjRiMWYyZGEyMWQwKQorICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgorICAgICAgICBJc3N1ZXI6IEM9WFksIE89UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EsIENOPW91ci1jYS1zZXJ2ZXIKKyAgICAgICAgVmFsaWRpdHkKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEphbiAgNCAxOTo0NzowNyAyMDEzIEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogSmFuICAyIDE5OjQ3OjA3IDIwMjMgR01UCisgICAgICAgIFN1YmplY3Q6IEM9WFksIE89UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EsIENOPW91ci1jYS1zZXJ2ZXIKKyAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CisgICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgorICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKKyAgICAgICAgICAgICAgICBNb2R1bHVzOgorICAgICAgICAgICAgICAgICAgICAwMDplNzpkZTplOTplMzowYzo5ZjowMDpiNjphMTpmZDoyYjo1Yjo5NjpkMjoKKyAgICAgICAgICAgICAgICAgICAgNmY6Y2M6ZTA6YmU6ODY6Yjk6MjA6NWU6ZWM6MDM6N2E6NTU6YWI6ZWE6YTQ6CisgICAgICAgICAgICAgICAgICAgIGU5OmY5OjQ5Ojg1OmQyOjY2OmQ1OmVkOmM3OjdhOmVhOjU2OjhlOjJkOjhmOgorICAgICAgICAgICAgICAgICAgICBlNzo0MjplMjo2MjoyODphOTo5ZjpkNjoxYjo4ZTplYjpiNTpiNDo5Yzo5ZjoKKyAgICAgICAgICAgICAgICAgICAgMTQ6YWI6ZGY6ZTY6OTQ6OGI6NzY6MWQ6M2U6NmQ6MjQ6NjE6ZWQ6MGM6YmY6CisgICAgICAgICAgICAgICAgICAgIDAwOjhhOjYxOjBjOmRmOjVjOmM4OjM2OjczOjE2OjAwOmNkOjQ3OmJhOjZkOgorICAgICAgICAgICAgICAgICAgICBhNDphNDo3NDo4ODo4MzoyMzowYToxOTpmYzowOTphNzozYzo0YTo0YjpkMzoKKyAgICAgICAgICAgICAgICAgICAgZTc6MWQ6MmQ6ZTQ6ZWE6NGM6NTQ6MjE6ZjM6MjY6ZGI6ODk6Mzc6MTg6ZDQ6CisgICAgICAgICAgICAgICAgICAgIDAyOmJiOjQwOjMyOjVmOmE0OmZmOjJkOjFjOmY3OmQ0OmJiOmVjOjhlOmNmOgorICAgICAgICAgICAgICAgICAgICA1Yzo4MjphYzplNjo3YzowODo2Yzo0ODo4NTo2MTowNzo3ZjoyNTplMDo1YzoKKyAgICAgICAgICAgICAgICAgICAgZTA6YmM6MzQ6NWY6ZTA6Yjk6MDQ6NDc6NzU6Yzg6NDc6MGI6OGQ6YmM6ZDY6CisgICAgICAgICAgICAgICAgICAgIGM4OjY4OjVmOjMzOjgzOjYyOmQyOjIwOjQ0OjM1OmIxOmFkOjgxOjFhOjhhOgorICAgICAgICAgICAgICAgICAgICBjZDpiYzozNTpiMDo1Yzo4Yjo0NzpkNjoxODplOTo5YzoxODo5NzpjYzowMToKKyAgICAgICAgICAgICAgICAgICAgM2M6Mjk6Y2M6ZTg6MWU6ZTQ6ZTQ6YzE6Yjg6ZGU6ZTc6YzI6MTE6MTg6ODc6CisgICAgICAgICAgICAgICAgICAgIDVhOjkzOjM0OmQ4OmE2OjI1OmY3OjE0OjcxOmViOmU0OjIxOmEyOmQyOjBmOgorICAgICAgICAgICAgICAgICAgICAyZToyZTpkNDo2MjowMDozNTpkMzpkNjplZjo1Yzo2MDo0Yjo0YzphOToxNDoKKyAgICAgICAgICAgICAgICAgICAgZTI6ZGQ6MTU6NTg6NDY6Mzc6MzM6MjY6Yjc6ZTc6MmU6NWQ6ZWQ6NDI6ZTQ6CisgICAgICAgICAgICAgICAgICAgIGM1OjRkCisgICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQorICAgICAgICBYNTA5djMgZXh0ZW5zaW9uczoKKyAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBCQzpERDo2MjpEOTo3NjpEQToxQjpEMjo1NDo2QjpDRjpFMDo2Njo5QjoxRToxRTo3Qjo1NjowQzowQgorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAga2V5aWQ6QkM6REQ6NjI6RDk6NzY6REE6MUI6RDI6NTQ6NkI6Q0Y6RTA6NjY6OUI6MUU6MUU6N0I6NTY6MEM6MEIKKworICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKyAgICAgICAgICAgICAgICBDQTpUUlVFCisgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCisgICAgICAgICA3ZDowYTpmNTpjYjo4ZDpkMzo1ZDpiZDo5OTo4ZTpmODoyYjowZjpiYTplYjpjMjpkOTphNjoKKyAgICAgICAgIDI3OjRmOjJlOjdiOjJmOjBlOjY0OmQ4OjFjOjM1OjUwOjRlOmVlOmZjOjkwOmI5OjhkOjZkOgorICAgICAgICAgYTg6YzU6YzY6MDY6YjA6YWY6ZjM6MmQ6YmY6M2I6Yjg6NDI6MDc6ZGQ6MTg6N2Q6NmQ6OTU6CisgICAgICAgICA1NDo1Nzo4NToxODo2MDo0NzoyZjplYjo3ODoxYjpmOTplODoxNzpmZDo1YTowZDo4NzoxNzoKKyAgICAgICAgIDI4OmFjOjRjOjZhOmU2OmJjOjI5OmY0OmY0OjU1OjcwOjI5OjQyOmRlOjg1OmVhOmFiOjZjOgorICAgICAgICAgMjM6MDY6NjQ6MzA6NzU6MDI6OGU6NTM6YmM6NWU6MDE6MzM6Mzc6Y2M6MWU6Y2Q6Yjg6YTQ6CisgICAgICAgICBmZDpjYTplNDo1Zjo2NTozYjo4MzoxYzo4NjpmMTo1NTowMjphMDozYTo4ZjpkYjo5MTpiNzoKKyAgICAgICAgIDQwOjE0OmI0OmU3OjhkOmQyOmVlOjczOmJhOmUzOmU1OjM0OjJkOmJjOjk0OjZmOjRlOjI0OgorICAgICAgICAgMDY6Zjc6NWY6OGI6MGU6YTc6OGU6NmI6ZGU6NWU6NzU6ZjQ6MzI6OWE6NTA6YjE6NDQ6MzM6CisgICAgICAgICA5YTpkMDowNTplMjo3ODo4MjpmZjpkYjpkYTo4YTo2MzplYjphOTpkZDpkMTpiZjphMDo2MToKKyAgICAgICAgIGFkOmUzOjllOjhhOjI0OjVkOjYyOjBlOmU3OjRjOjkxOjdmOmVmOmRmOjM0OjM2OjNiOjJmOgorICAgICAgICAgNWQ6ZjU6ODQ6YjI6MmY6YzQ6NmQ6OTM6OTY6MWE6NmY6MzA6Mjg6ZjE6ZGE6MTI6OWE6NjQ6CisgICAgICAgICBiNDo0MDozMzoxZDpiZDpkZToyYjo1MzphODplYTpiZTpkNjpiYzo0ZTo5NjpmNTo0NDpmYjoKKyAgICAgICAgIDMyOjE4OmFlOmQ1OjFmOmY2OjY5OmFmOmI2OjRlOjdiOjFkOjU4OmVjOjNiOmE5OjUzOmEzOgorICAgICAgICAgNWU6NTg6Yzg6OWUKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRGJUQ0NBbFdnQXdJQkFnSUpBTENTWkxIeTJpSFFNQTBHQ1NxR1NJYjNEUUVCQlFVQU1FMHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4TXpBeE1EUXhPVFEzTURkYUZ3MHlNekF4TURJeAorT1RRM01EZGFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FTSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPZmU2ZU1NbndDMm9mMHJXNWJTYjh6Z3ZvYTVJRjdzQTNwVgorcStxazZmbEpoZEptMWUzSGV1cFdqaTJQNTBMaVlpaXBuOVlianV1MXRKeWZGS3ZmNXBTTGRoMCtiU1JoN1F5LworQUlwaEROOWN5RFp6RmdETlI3cHRwS1IwaUlNakNobjhDYWM4U2t2VDV4MHQ1T3BNVkNIekp0dUpOeGpVQXJ0QQorTWwray95MGM5OVM3N0k3UFhJS3M1bndJYkVpRllRZC9KZUJjNEx3MFgrQzVCRWQxeUVjTGpield5R2hmTTROaQorMGlCRU5iR3RnUnFLemJ3MXNGeUxSOVlZNlp3WWw4d0JQQ25NNkI3azVNRzQzdWZDRVJpSFdwTTAyS1lsOXhSeAorNitRaG90SVBMaTdVWWdBMTA5YnZYR0JMVEtrVTR0MFZXRVkzTXlhMzV5NWQ3VUxreFUwQ0F3RUFBYU5RTUU0dworSFFZRFZSME9CQllFRkx6ZFl0bDIyaHZTVkd2UDRHYWJIaDU3Vmd3TE1COEdBMVVkSXdRWU1CYUFGTHpkWXRsMgorMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQgorQUgwSzljdU4wMTI5bVk3NEt3KzY2OExacGlkUExuc3ZEbVRZSERWUVR1NzhrTG1OYmFqRnhnYXdyL010dnp1NAorUWdmZEdIMXRsVlJYaFJoZ1J5L3JlQnY1NkJmOVdnMkhGeWlzVEdybXZDbjA5RlZ3S1VMZWhlcXJiQ01HWkRCMQorQW81VHZGNEJNemZNSHMyNHBQM0s1RjlsTzRNY2h2RlZBcUE2ajl1UnQwQVV0T2VOMHU1enV1UGxOQzI4bEc5TworSkFiM1g0c09wNDVyM2w1MTlES2FVTEZFTTVyUUJlSjRndi9iMm9wajY2bmQwYitnWWEzam5vb2tYV0lPNTB5UgorZisvZk5EWTdMMTMxaExJdnhHMlRsaHB2TUNqeDJoS2FaTFJBTXgyOTNpdFRxT3ErMXJ4T2x2VkUreklZcnRVZgorOW1tdnRrNTdIVmpzTzZsVG8xNVl5SjQ9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9weWNha2V5LnBlbSBiL0xpYi90ZXN0L3B5Y2FrZXkucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNmVmZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9weWNha2V5LnBlbQpAQCAtMCwwICsxLDI4IEBACistLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KK01JSUV2Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktnd2dnU2tBZ0VBQW9JQkFRRG4zdW5qREo4QXRxSDkKK0sxdVcwbS9NNEw2R3VTQmU3QU42VmF2cXBPbjVTWVhTWnRYdHgzcnFWbzR0aitkQzRtSW9xWi9XRzQ3cnRiU2MKK254U3IzK2FVaTNZZFBtMGtZZTBNdndDS1lRemZYTWcyY3hZQXpVZTZiYVNrZElpREl3b1ovQW1uUEVwTDArY2QKK0xlVHFURlFoOHliYmlUY1kxQUs3UURKZnBQOHRIUGZVdSt5T3oxeUNyT1o4Q0d4SWhXRUhmeVhnWE9DOE5GL2cKK3VRUkhkY2hIQzQyODFzaG9Yek9EWXRJZ1JEV3hyWUVhaXMyOE5iQmNpMGZXR09tY0dKZk1BVHdwek9nZTVPVEIKK3VON253aEVZaDFxVE5OaW1KZmNVY2V2a0lhTFNEeTR1MUdJQU5kUFc3MXhnUzB5cEZPTGRGVmhHTnpNbXQrY3UKK1hlMUM1TVZOQWdNQkFBRUNnZ0VCQUpQTTdRdVVyUG40Y0xOL1lzZDE1bHdUV245b0hERkZna1lGdkNzNjZnWEUKK2p1LzZLeDJCaldFNHdUSmJ5MDlBSE0vTXFCMER2Z3VUN01mMVEyajN0UFExSFpvd2c4T3dSRGxldXdwNktJbHMKK2pCYmhMMEpkbC81SEM2N2t0V3ZaOXdOdk8vd0ZHMXJRZlQ2RlZhamY5TFViV0VhU1piT0cyU0xoSGZzSG9yenUKK3hqVEphSTNiUS8wKzc5QjFleHdrNXJ1d2h6RlJkL1hwWThobHM3RC9SZlBJdUhEbEJnaGtXM041OUtGV3JmNWgKKzZiTkVoMlRIbTArSXlHY0dxczBGRCtRQ09YeXZzandTVXN3cXJyMmN0TFJFT2VEY2Q1UmVValN4WWdqY0pScm0KK0o3Y2VJWS8rdXdESnh3L09sbm1CdkY2cFFNa0t3WVcyZ0Z6dHUrZzJ0NFVDZ1lFQS85eW8wMUV4ejRjcnhYc3kKK3RBbG5ESk0rK25aY20wN3J0RmpUS0hVZktZL2NDZ05UYTh1ZE0wc3ZuZndsaWQvZHBnTHNJMzhneDA0SEhDMWkKK0VaNGFjeitUb0lXZWRMeE0wbnE3My8veGVSV0Vhek92Q3oxbU1UWmFNbGRhaFRXQXl6TjhxVksyQi82MjVZeTQKK3dOWVd5d2VCQndFQjhNemFDczczc3Brc1hPc0NnWUVBNS83d3ZoaW9mWUdGQWZNdUFOZUpJd0RMMk90Qm5vT3YKK21WTmZDbWkzR0MzOGZ6d3lpNVpwc2tXRGlTMndvSitMUWZzOVF1NEVjWmJVRkxkN2diZU92YjVnbUZVdFlvcGUKK0xpdFVVS3VuSVIxOE1rUSttUURCcFFQUVBoazRRSlA1cmVDYldrcmZUdTdiNW8vaVM0MXM2ZkJURm11emhMY1QKK0M3MXZGZEN5ZUtjQ2dZQWlDQ3FZZU90RUxEbUJPZUxEbWFDUVJxR1ExTjk2ZE9QYkNCbUYveFlYQkNDRFlHL2YKK0hhVWFKbno5NllUZ3N0c2JjcllQL3AvUWdxdGxidy9sUWY5SXB3TXV6YmNHMWVqdDhnODlPeURXTnl0Mnl0Z1UKK2lhVW5GSkNvczMvQnloMElhaC9Cc2RPdWVvMi9PSmwyWk1PQlc4MG9ybFNndjg2Y3MyeTAzN1RMNHdLQmdRRG0KK09PeVcrTWxib3dobkl2Zm9CZndsTEVrZWZuZWo0bktENldSTFpCY3VlNVF5ZjM1NVgwNk1oc2M5Zm9YbEgrNkcKK0Q5aC9ic3dpSE5kaHA2TjgycmRnUEdpSFF4L0N4aVVvRS8rYi9udmdOTzVtdzZxTEUyRVhiRzFlOHBBTUpjeUUKK2JIdytZa2F3Z2dEZkVMSTAzNmZSajVna2k4U2VVejhuUzFuTmdFbGJ5UUtCZ0NSRFg5SmgrTXdTTHU0UUJXZHQKKy9maStsdjNLNmt1bi9mSTdFT1YxdkNWL2o4NzF0SUN1N3B1NUJyT0x4QUhxb1ZmVTlBVVgyOTkvMktqQ2I1cHYKK2tqb2dpVUs2cVdDV0JsZnVxRE5XR0NvVUd0MXJoem5VdmEwbk5qU015NXJpbkJoaGpwUk9aQzJwdzQ4bE9sdVAKK1V1dlhzYVBwaDdHVHFQdXk0S2FiMTJZQworLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcmVncnRlc3QucHkgYi9MaWIvdGVzdC9yZWdydGVzdC5weQppbmRleCBhZTYyYzZlLi5jOGJiY2IyIDEwMDc1NQotLS0gYS9MaWIvdGVzdC9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC9yZWdydGVzdC5weQpAQCAtMSwxMSArMSwxOCBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAogIiIiCi1Vc2FnZToKK1NjcmlwdCB0byBydW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCiAKK1J1biB0aGlzIHNjcmlwdCB3aXRoIC1oIG9yIC0taGVscCBmb3IgZG9jdW1lbnRhdGlvbi4KKyIiIgorCitVU0FHRSA9ICIiIlwKIHB5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQogcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCisiIiIKIAorREVTQ1JJUFRJT04gPSAiIiJcCitSdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCiAKIElmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCiB0aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCkBAIC0xNSw2MyArMjIsMTAgQEAKIGNvbW1hbmQgbGluZToKIAogcHl0aG9uIC1FIC1XZCAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSAuLi5dCisiIiIKIAotCi1PcHRpb25zOgotCi0taC8tLWhlbHAgICAgICAgLS0gcHJpbnQgdGhpcyB0ZXh0IGFuZCBleGl0Ci0tLXRpbWVvdXQgVElNRU9VVAotICAgICAgICAgICAgICAgIC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZQotICAgICAgICAgICAgICAgICAgIHRoYW4gVElNRU9VVCBzZWNvbmRzOyBkaXNhYmxlZCBpZiBUSU1FT1VUIGlzIG5lZ2F0aXZlCi0gICAgICAgICAgICAgICAgICAgb3IgZXF1YWxzIHRvIHplcm8KLS0td2FpdCAgICAgICAgICAtLSB3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyIHRvIGJlIGF0dGFjaGVkCi0KLVZlcmJvc2l0eQotCi0tdi8tLXZlcmJvc2UgICAgLS0gcnVuIHRlc3RzIGluIHZlcmJvc2UgbW9kZSB3aXRoIG91dHB1dCB0byBzdGRvdXQKLS13Ly0tdmVyYm9zZTIgICAtLSByZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZQotLVcvLS12ZXJib3NlMyAgIC0tIGRpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZQotLWQvLS1kZWJ1ZyAgICAgIC0tIHByaW50IHRyYWNlYmFjayBmb3IgZmFpbGVkIHRlc3RzCi0tcS8tLXF1aWV0ICAgICAgLS0gbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsCi0tby8tLXNsb3cgICAgICAgLS0gcHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMKLSAgIC0taGVhZGVyICAgICAtLSBwcmludCBoZWFkZXIgd2l0aCBpbnRlcnByZXRlciBpbmZvCi0KLVNlbGVjdGluZyB0ZXN0cwotCi0tci8tLXJhbmRvbWl6ZSAgLS0gcmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyIChzZWUgYmVsb3cpCi0gICAtLXJhbmRzZWVkICAgLS0gcGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzIHJhbmRvbSBydW4KLS1mLy0tZnJvbWZpbGUgICAtLSByZWFkIG5hbWVzIG9mIHRlc3RzIHRvIHJ1biBmcm9tIGEgZmlsZSAoc2VlIGJlbG93KQotLXgvLS1leGNsdWRlICAgIC0tIGFyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqCi0tcy8tLXNpbmdsZSAgICAgLS0gc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cyAoc2VlIGJlbG93KQotLW0vLS1tYXRjaCBQQVQgIC0tIG1hdGNoIHRlc3QgY2FzZXMgYW5kIG1ldGhvZHMgd2l0aCBnbG9iIHBhdHRlcm4gUEFUCi0tRy8tLWZhaWxmYXN0ICAgLS0gZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKQotLXUvLS11c2UgUkVTMSxSRVMyLC4uLgotICAgICAgICAgICAgICAgIC0tIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuCi0tTS8tLW1lbWxpbWl0IExJTUlUCi0gICAgICAgICAgICAgICAgLS0gcnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cwotICAgLS10ZXN0ZGlyIERJUgotICAgICAgICAgICAgICAgIC0tIGV4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAoaW5zdGVhZAotICAgICAgICAgICAgICAgICAgIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpCi0KLVNwZWNpYWwgcnVucwotCi0tbC8tLWZpbmRsZWFrcyAgLS0gaWYgR0MgaXMgYXZhaWxhYmxlIGRldGVjdCB0ZXN0cyB0aGF0IGxlYWsgbWVtb3J5Ci0tTC8tLXJ1bmxlYWtzICAgLS0gcnVuIHRoZSBsZWFrcygxKSBjb21tYW5kIGp1c3QgYmVmb3JlIGV4aXQKLS1SLy0taHVudHJsZWFrcyBSVU5DT1VOVFMKLSAgICAgICAgICAgICAgICAtLSBzZWFyY2ggZm9yIHJlZmVyZW5jZSBsZWFrcyAobmVlZHMgZGVidWcgYnVpbGQsIHYuIHNsb3cpCi0tai8tLW11bHRpcHJvY2VzcyBQUk9DRVNTRVMKLSAgICAgICAgICAgICAgICAtLSBydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlCi0tVC8tLWNvdmVyYWdlICAgLS0gdHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlIG1vZHVsZQotLUQvLS1jb3ZlcmRpciBESVJFQ1RPUlkKLSAgICAgICAgICAgICAgICAtLSBEaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dAotLU4vLS1ub2NvdmVyZGlyIC0tIFB1dCBjb3ZlcmFnZSBmaWxlcyBhbG9uZ3NpZGUgbW9kdWxlcwotLXQvLS10aHJlc2hvbGQgVEhSRVNIT0xECi0gICAgICAgICAgICAgICAgLS0gY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCkKLS1uLy0tbm93aW5kb3dzICAtLSBzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MKLS1GLy0tZm9yZXZlciAgICAtLSBydW4gdGhlIHNwZWNpZmllZCB0ZXN0cyBpbiBhIGxvb3AsIHVudGlsIGFuIGVycm9yIGhhcHBlbnMKLQotCi1BZGRpdGlvbmFsIE9wdGlvbiBEZXRhaWxzOgorRVBJTE9HID0gIiIiXAorQWRkaXRpb25hbCBvcHRpb24gZGV0YWlsczoKIAogLXIgcmFuZG9taXplcyB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4gWW91IGNhbiB1c2UgLS1yYW5kc2VlZD1pbnQgdG8gcHJvdmlkZSBhCiBpbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQpAQCAtMTY4LDExICsxMjIsMTIgQEAKICMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKIGltcG9ydCBpbXBvcnRsaWIKIAoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBmYXVsdGhhbmRsZXIKLWltcG9ydCBnZXRvcHQKIGltcG9ydCBpbwogaW1wb3J0IGpzb24KK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQpAQCAtMjQ2LDEyICsyMDEsMTQ3IEBACiBSRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKICAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScpCiAKLVRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgodGVtcGZpbGUuZ2V0dGVtcGRpcigpKQorIyBXaGVuIHRlc3RzIGFyZSBydW4gZnJvbSB0aGUgUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgaXQgaXMgYmVzdCBwcmFjdGljZQorIyB0byBrZWVwIHRoZSB0ZXN0IGZpbGVzIGluIGEgc3ViZm9sZGVyLiAgVGhpcyBlYXNlcyB0aGUgY2xlYW51cCBvZiBsZWZ0b3ZlcgorIyBmaWxlcyB1c2luZyB0aGUgIm1ha2UgZGlzdGNsZWFuIiBjb21tYW5kLgoraWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIFRFTVBESVIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ2J1aWxkJykKK2Vsc2U6CisgICAgVEVNUERJUiA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorVEVNUERJUiA9IG9zLnBhdGguYWJzcGF0aChURU1QRElSKQogCi1kZWYgdXNhZ2UobXNnKToKLSAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICBwcmludCgiVXNlIC0taGVscCBmb3IgdXNhZ2UiLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgc3lzLmV4aXQoMikKK2NsYXNzIF9BcmdQYXJzZXIoYXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgorCisgICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzdXBlcigpLmVycm9yKG1lc3NhZ2UgKyAiXG5QYXNzIC1oIG9yIC0taGVscCBmb3IgY29tcGxldGUgaGVscC4iKQorCitkZWYgX2NyZWF0ZV9wYXJzZXIoKToKKyAgICAjIFNldCBwcm9nIHRvIHByZXZlbnQgdGhlIHVuaW5mb3JtYXRpdmUgIl9fbWFpbl9fLnB5IiBmcm9tIGRpc3BsYXlpbmcgaW4KKyAgICAjIGVycm9yIG1lc3NhZ2VzIHdoZW4gdXNpbmcgInB5dGhvbiAtbSB0ZXN0IC4uLiIuCisgICAgcGFyc2VyID0gX0FyZ1BhcnNlcihwcm9nPSdyZWdydGVzdC5weScsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT1VU0FHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPURFU0NSSVBUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPUVQSUxPRywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcikKKworICAgICMgQXJndW1lbnRzIHdpdGggdGhpcyBjbGF1c2UgYWRkZWQgdG8gaXRzIGhlbHAgYXJlIGRlc2NyaWJlZCBmdXJ0aGVyIGluCisgICAgIyB0aGUgZXBpbG9nJ3MgIkFkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHMiIHNlY3Rpb24uCisgICAgbW9yZV9kZXRhaWxzID0gJyAgU2VlIHRoZSBzZWN0aW9uIGF0IGJvdHRvbSBmb3IgbW9yZSBkZXRhaWxzLicKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnR2VuZXJhbCBvcHRpb25zJykKKyAgICAjIFdlIGFkZCBoZWxwIGV4cGxpY2l0bHkgdG8gY29udHJvbCB3aGF0IGFyZ3VtZW50IGdyb3VwIGl0IHJlbmRlcnMgdW5kZXIuCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGltZW91dCcsIG1ldGF2YXI9J1RJTUVPVVQnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRoYW4gVElNRU9VVCBzZWNvbmRzOyBkaXNhYmxlZCBpZiBUSU1FT1VUICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5lZ2F0aXZlIG9yIGVxdWFscyB0byB6ZXJvJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2FpdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J3dhaXQgZm9yIHVzZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2lucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyIHRvIGJlIGF0dGFjaGVkJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2xhdmVhcmdzJywgbWV0YXZhcj0nQVJHUycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXN0YXJ0JywgbWV0YXZhcj0nU1RBUlQnLCBoZWxwPSd0aGUgbmFtZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHRlc3QgYXQgd2hpY2ggdG8gc3RhcnQuJyArIG1vcmVfZGV0YWlscykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUgd2l0aCBvdXRwdXQgdG8gc3Rkb3V0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy13JywgJy0tdmVyYm9zZTInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVycsICctLXZlcmJvc2UzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGVidWcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0cmFjZWJhY2sgZm9yIGZhaWxlZCB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvdycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IHRoZSBzbG93ZXN0IDEwIHRlc3RzJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0taGVhZGVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgaGVhZGVyIHdpdGggaW50ZXJwcmV0ZXIgaW5mbycpCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NlbGVjdGluZyB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcicsICctLXJhbmRvbWl6ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JhbmRvbWl6ZSB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1yYW5kc2VlZCcsIG1ldGF2YXI9J1NFRUQnLCBoZWxwPSdwYXNzIGEgcmFuZG9tIHNlZWQgJworICAgICAgICAgICAgICAgICAgICAgICAndG8gcmVwcm9kdWNlIGEgcHJldmlvdXMgcmFuZG9tIHJ1bicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsIGhlbHA9J3JlYWQgbmFtZXMgJworICAgICAgICAgICAgICAgICAgICAgICAnb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKyBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCcteCcsICctLWV4Y2x1ZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXNpbmdsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J3NpbmdsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbWF0Y2gnLCBtZXRhdmFyPSdQQVQnLCBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nZmFpbCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLCBoZWxwPSdzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3doaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1bi4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU0nLCAnLS1tZW1saW1pdCcsIG1ldGF2YXI9J0xJTUlUJywgaGVscD0ncnVuIHZlcnkgJworICAgICAgICAgICAgICAgICAgICAgICAnbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cy4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdpZiBHQyAnCisgICAgICAgICAgICAgICAgICAgICAgICdpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKworICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLWh1bnRybGVha3MnLCBtZXRhdmFyPSdSVU5DT1VOVFMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZWFyY2ggZm9yIHJlZmVyZW5jZSBsZWFrcyAobmVlZHMgZGVidWcgYnVpbGQsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyeSBzbG93KS4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWonLCAnLS1tdWx0aXByb2Nlc3MnLCBtZXRhdmFyPSdQUk9DRVNTRVMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1UJywgJy0tY292ZXJhZ2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSd0dXJuIG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUgY292ZXJhZ2UgdHJhY2luZyB1c2luZyB0aGUgdHJhY2UgbW9kdWxlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjYWxsIGdjLnNldF90aHJlc2hvbGQoVEhSRVNIT0xEKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbicsICctLW5vd2luZG93cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIGVycm9yIG1lc3NhZ2UgYm94ZXMgb24gV2luZG93cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRicsICctLWZvcmV2ZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIHNwZWNpZmllZCB0ZXN0cyBpbiBhIGxvb3AsIHVudGlsIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3IgaGFwcGVucycpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdhcmdzJywgbmFyZ3M9YXJncGFyc2UuUkVNQUlOREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1hcmdwYXJzZS5TVVBQUkVTUykKKworICAgIHJldHVybiBwYXJzZXIKKworIyBUT0RPOiByZW1vdmUgdGhpcyBmdW5jdGlvbiBhcyBkZXNjcmliZWQgaW4gaXNzdWUgIzE2Nzk5LCBmb3IgZXhhbXBsZS4KKyMgV2UgdXNlIHRoaXMgZnVuY3Rpb24gc2luY2UgcmVncnRlc3QubWFpbigpIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gdG8gdXNlCisjIGdldG9wdCBmb3IgcGFyc2luZy4KK2RlZiBfY29udmVydF9uYW1lc3BhY2VfdG9fZ2V0b3B0KG5zKToKKyAgICAiIiJDb252ZXJ0IGFuIGFyZ3BhcnNlLk5hbWVzcGFjZSBvYmplY3QgdG8gYSBnZXRvcHQtc3R5bGUgb3B0cyBsaXN0LgorCisgICAgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIG1pbWljcyB0aGUgZmlyc3QgZWxlbWVudCBvZgorICAgIGdldG9wdC5nZXRvcHQoKSdzIChvcHRzLCBhcmdzKSByZXR1cm4gdmFsdWUuICBJbiBhZGRpdGlvbiwgdGhlIChvcHRpb24sCisgICAgdmFsdWUpIHBhaXJzIGluIHRoZSBvcHRzIGxpc3QgYXJlIHNvcnRlZCBieSBvcHRpb24gYW5kIHVzZSB0aGUgbG9uZworICAgIG9wdGlvbiBzdHJpbmcuICBUaGUgYXJncyBwYXJ0IG9mIChvcHRzLCBhcmdzKSBjYW4gYmUgbWltaWNrZWQgYnkgdGhlCisgICAgYXJncyBhdHRyaWJ1dGUgb2YgdGhlIE5hbWVzcGFjZSBvYmplY3Qgd2UgYXJlIHVzaW5nIGluIHJlZ3J0ZXN0LgorICAgICIiIgorICAgIG9wdHMgPSBbXQorICAgIGFyZ3NfZGljdCA9IHZhcnMobnMpCisgICAgZm9yIGtleSBpbiBzb3J0ZWQoYXJnc19kaWN0LmtleXMoKSk6CisgICAgICAgIGlmIGtleSA9PSAnYXJncyc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB2YWwgPSBhcmdzX2RpY3Rba2V5XQorICAgICAgICAjIERvbid0IGNvbnRpbnVlIGlmIHZhbCBlcXVhbHMgJycgYmVjYXVzZSB0aGlzIG1lYW5zIGFuIG9wdGlvbgorICAgICAgICAjIGFjY2VwdGluZyBhIHZhbHVlIHdhcyBwcm92aWRlZCB0aGUgZW1wdHkgc3RyaW5nLiAgU3VjaCB2YWx1ZXMgc2hvdWxkCisgICAgICAgICMgc2hvdyB1cCBpbiB0aGUgcmV0dXJuZWQgb3B0cyBsaXN0LgorICAgICAgICBpZiB2YWwgaXMgTm9uZSBvciB2YWwgaXMgRmFsc2U6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiB2YWwgaXMgVHJ1ZToKKyAgICAgICAgICAgICMgVGhlbiBhbiBvcHRpb24gd2l0aCBhY3Rpb24gc3RvcmVfdHJ1ZSB3YXMgcGFzc2VkLiBnZXRvcHQKKyAgICAgICAgICAgICMgaW5jbHVkZXMgdGhlc2Ugd2l0aCB2YWx1ZSAnJyBpbiB0aGUgb3B0cyBsaXN0LgorICAgICAgICAgICAgdmFsID0gJycKKyAgICAgICAgb3B0cy5hcHBlbmQoKCctLScgKyBrZXksIHZhbCkpCisgICAgcmV0dXJuIG9wdHMKIAogCiBkZWYgbWFpbih0ZXN0cz1Ob25lLCB0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCkBAIC0yOTgsMTcgKzM4OCwxMiBAQAogICAgIHJlcGxhY2Vfc3Rkb3V0KCkKIAogICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQotICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAnaHZxeHNvUzpyZjpsdTp0OlREOk5MUjpGZHdXTTpuajpHbTonLAotICAgICAgICAgICAgWydoZWxwJywgJ3ZlcmJvc2UnLCAndmVyYm9zZTInLCAndmVyYm9zZTMnLCAncXVpZXQnLAotICAgICAgICAgICAgICdleGNsdWRlJywgJ3NpbmdsZScsICdzbG93JywgJ3JhbmRvbWl6ZScsICdmcm9tZmlsZT0nLCAnZmluZGxlYWtzJywKLSAgICAgICAgICAgICAndXNlPScsICd0aHJlc2hvbGQ9JywgJ2NvdmVyZGlyPScsICdub2NvdmVyZGlyJywKLSAgICAgICAgICAgICAncnVubGVha3MnLCAnaHVudHJsZWFrcz0nLCAnbWVtbGltaXQ9JywgJ3JhbmRzZWVkPScsCi0gICAgICAgICAgICAgJ211bHRpcHJvY2Vzcz0nLCAnY292ZXJhZ2UnLCAnc2xhdmVhcmdzPScsICdmb3JldmVyJywgJ2RlYnVnJywKLSAgICAgICAgICAgICAnc3RhcnQ9JywgJ25vd2luZG93cycsICdoZWFkZXInLCAndGVzdGRpcj0nLCAndGltZW91dD0nLCAnd2FpdCcsCi0gICAgICAgICAgICAgJ2ZhaWxmYXN0JywgJ21hdGNoPSddKQotICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgotICAgICAgICB1c2FnZShtc2cpCisKKyAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCisgICAgbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgb3B0cyA9IF9jb252ZXJ0X25hbWVzcGFjZV90b19nZXRvcHQobnMpCisgICAgYXJncyA9IG5zLmFyZ3MKKyAgICB1c2FnZSA9IHBhcnNlci5lcnJvcgogCiAgICAgIyBEZWZhdWx0cwogICAgIGlmIHJhbmRvbV9zZWVkIGlzIE5vbmU6CkBAIC0zMTksMTAgKzQwNCw3IEBACiAgICAgc3RhcnQgPSBOb25lCiAgICAgdGltZW91dCA9IE5vbmUKICAgICBmb3IgbywgYSBpbiBvcHRzOgotICAgICAgICBpZiBvIGluICgnLWgnLCAnLS1oZWxwJyk6Ci0gICAgICAgICAgICBwcmludChfX2RvY19fKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsaWYgbyBpbiAoJy12JywgJy0tdmVyYm9zZScpOgorICAgICAgICBpZiBvIGluICgnLXYnLCAnLS12ZXJib3NlJyk6CiAgICAgICAgICAgICB2ZXJib3NlICs9IDEKICAgICAgICAgZWxpZiBvIGluICgnLXcnLCAnLS12ZXJib3NlMicpOgogICAgICAgICAgICAgdmVyYm9zZTIgPSBUcnVlCkBAIC00MjcsMTIgKzUwOSw4IEBACiAgICAgICAgIGVsaWYgbyBpbiAoJy1qJywgJy0tbXVsdGlwcm9jZXNzJyk6CiAgICAgICAgICAgICB1c2VfbXAgPSBpbnQoYSkKICAgICAgICAgICAgIGlmIHVzZV9tcCA8PSAwOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotICAgICAgICAgICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAotICAgICAgICAgICAgICAgICAgICB1c2VfbXAgPSAyICsgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHVzZV9tcCA9IDMKKyAgICAgICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAorICAgICAgICAgICAgICAgIHVzZV9tcCA9IDIgKyAob3MuY3B1X2NvdW50KCkgb3IgMSkKICAgICAgICAgICAgIGlmIHVzZV9tcCA9PSAxOgogICAgICAgICAgICAgICAgIHVzZV9tcCA9IE5vbmUKICAgICAgICAgZWxpZiBvID09ICctLWhlYWRlcic6CkBAIC01MDcsNyArNTg1LDcgQEAKICAgICAgICAgICAgIG5leHRfdGVzdCA9IGZwLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICB0ZXN0cyA9IFtuZXh0X3Rlc3RdCiAgICAgICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogICAgIGlmIGZyb21maWxlOgpAQCAtNjE2LDExICs2OTQsMTIgQEAKICAgICAgICAgICAgIHN5cy5leGl0KDIpCiAgICAgICAgIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAgICAgICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKLSAgICAgICAgZGVidWdfb3V0cHV0X3BhdCA9IHJlLmNvbXBpbGUociJcW1xkKyByZWZzXF0kIikKKyAgICAgICAgZGVidWdfb3V0cHV0X3BhdCA9IHJlLmNvbXBpbGUociJcW1xkKyByZWZzLCBcZCsgYmxvY2tzXF0kIikKICAgICAgICAgb3V0cHV0ID0gUXVldWUoKQogICAgICAgICBwZW5kaW5nID0gTXVsdGlwcm9jZXNzVGVzdHModGVzdHMpCiAgICAgICAgIG9wdF9hcmdzID0gc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQotICAgICAgICBiYXNlX2NtZCA9IFtzeXMuZXhlY3V0YWJsZV0gKyBvcHRfYXJncyArIFsnLW0nLCAndGVzdC5yZWdydGVzdCddCisgICAgICAgIGJhc2VfY21kID0gW3N5cy5leGVjdXRhYmxlXSArIG9wdF9hcmdzCisgICAgICAgIGJhc2VfY21kICs9IFsnLVgnLCAnZmF1bHRoYW5kbGVyJywgJy1tJywgJ3Rlc3QucmVncnRlc3QnXQogICAgICAgICBkZWYgd29yaygpOgogICAgICAgICAgICAgIyBBIHdvcmtlciB0aHJlYWQuCiAgICAgICAgICAgICB0cnk6CkBAIC03NjQsMjAgKzg0Myw2IEBACiAgICAgICAgIHByaW50KGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKICAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCiAKLSAgICAgICAgZSA9IF9FeHBlY3RlZFNraXBzKCkKLSAgICAgICAgcGxhdCA9IHN5cy5wbGF0Zm9ybQotICAgICAgICBpZiBlLmlzdmFsaWQoKToKLSAgICAgICAgICAgIHN1cnByaXNlID0gc2V0KHNraXBwZWQpIC0gZS5nZXRleHBlY3RlZCgpIC0gc2V0KHJlc291cmNlX2RlbmllZHMpCi0gICAgICAgICAgICBpZiBzdXJwcmlzZToKLSAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oc3VycHJpc2UpLCAic2tpcCIpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgb24iLCBwbGF0ICsgIjoiKQotICAgICAgICAgICAgICAgIHByaW50bGlzdChzdXJwcmlzZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlRob3NlIHNraXBzIGFyZSBhbGwgZXhwZWN0ZWQgb24iLCBwbGF0ICsgIi4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIkFzayBzb21lb25lIHRvIHRlYWNoIHJlZ3J0ZXN0LnB5IGFib3V0IHdoaWNoIHRlc3RzIGFyZSIpCi0gICAgICAgICAgICBwcmludCgiZXhwZWN0ZWQgdG8gZ2V0IHNraXBwZWQgb24iLCBwbGF0ICsgIi4iKQotCiAgICAgaWYgdmVyYm9zZTIgYW5kIGJhZDoKICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCiAgICAgICAgIGZvciB0ZXN0IGluIGJhZDoKQEAgLTk5NSw3ICsxMDYwLDcgQEAKICAgICAgICAgICAgICAgICAgJ3N5cy53YXJub3B0aW9ucycsICd0aHJlYWRpbmcuX2RhbmdsaW5nJywKICAgICAgICAgICAgICAgICAgJ211bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZycsCiAgICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKLSAgICAgICAgICAgICAgICAgJ3N1cHBvcnQuVEVTVEZOJywKKyAgICAgICAgICAgICAgICAgJ3N1cHBvcnQuVEVTVEZOJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCiAgICAgICAgICAgICAgICAgKQogCiAgICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKQEAgLTExNjQsNiArMTIyOSwyNSBAQAogICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHN1cHBvcnQuVEVTVEZOKToKICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHN1cHBvcnQuVEVTVEZOKQogCisgICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCisgICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQorICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgorICAgICAgICBwYWlyaW5ncyA9IFtdCisgICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBhaXJpbmdzCisgICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKKyAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKKworICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZworICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6CisgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCisKICAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6CiAgICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQpAQCAtMTIxMSw4ICsxMjk1LDcgQEAKICAgICAgICAgICAgIGFic3Rlc3QgPSAndGVzdC4nICsgdGVzdAogICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdCwgdmVyYm9zZSwgcXVpZXQpIGFzIGVudmlyb25tZW50OgogICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICB0aGVfcGFja2FnZSA9IF9faW1wb3J0X18oYWJzdGVzdCwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10pCi0gICAgICAgICAgICB0aGVfbW9kdWxlID0gZ2V0YXR0cih0aGVfcGFja2FnZSwgdGVzdCkKKyAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQogICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KICAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKQEAgLTEzMjgsNDEgKzE0MTEsNTAgQEAKICAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgogICAgICAgICAgICAgYWJjc1tvYmpdID0gb2JqLl9hYmNfcmVnaXN0cnkuY29weSgpCiAKLSAgICBpZiBpbmRpcmVjdF90ZXN0OgotICAgICAgICBkZWYgcnVuX3RoZV90ZXN0KCk6Ci0gICAgICAgICAgICBpbmRpcmVjdF90ZXN0KCkKLSAgICBlbHNlOgotICAgICAgICBkZWYgcnVuX3RoZV90ZXN0KCk6Ci0gICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbdGhlX21vZHVsZS5fX25hbWVfX10KLSAgICAgICAgICAgIGV4ZWMoJ2ltcG9ydCAnICsgdGhlX21vZHVsZS5fX25hbWVfXykKLQotICAgIGRlbHRhcyA9IFtdCiAgICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcwogICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQogICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCisgICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorCiAgICAgcHJpbnQoImJlZ2lubmluZyIsIHJlcGNvdW50LCAicmVwZXRpdGlvbnMiLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgcHJpbnQoKCIxMjM0NTY3ODkwIioocmVwY291bnQvLzEwICsgMSkpWzpyZXBjb3VudF0sIGZpbGU9c3lzLnN0ZGVycikKICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKQogICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKLSAgICAgICAgcmNfYmVmb3JlID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBydW5fdGhlX3Rlc3QoKQorICAgICAgICBpbmRpcmVjdF90ZXN0KCkKKyAgICAgICAgYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyID0gZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcykKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnLicpCiAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKQotICAgICAgICByY19hZnRlciA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKICAgICAgICAgaWYgaSA+PSBud2FybXVwOgotICAgICAgICAgICAgZGVsdGFzLmFwcGVuZChyY19hZnRlciAtIHJjX2JlZm9yZSkKKyAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCisgICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQorICAgICAgICBhbGxvY19iZWZvcmUsIHJjX2JlZm9yZSA9IGFsbG9jX2FmdGVyLCByY19hZnRlcgogICAgIHByaW50KGZpbGU9c3lzLnN0ZGVycikKLSAgICBpZiBhbnkoZGVsdGFzKToKLSAgICAgICAgbXNnID0gJyVzIGxlYWtlZCAlcyByZWZlcmVuY2VzLCBzdW09JXMnICUgKHRlc3QsIGRlbHRhcywgc3VtKGRlbHRhcykpCi0gICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAiYSIpIGFzIHJlZnJlcDoKLSAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCi0gICAgICAgICAgICByZWZyZXAuZmx1c2goKQotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQorICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQorICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKKyAgICAgICAgcmV0dXJuIGFueShkZWx0YXMpCisgICAgZGVmIGNoZWNrX2FsbG9jX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICAjIEF0IGxlYXN0IDEvM3JkIG9mIDBzCisgICAgICAgIGlmIDMgKiBkZWx0YXMuY291bnQoMCkgPCBsZW4oZGVsdGFzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgTm90aGluZyBlbHNlIHRoYW4gMXMsIDBzIGFuZCAtMXMKKyAgICAgICAgaWYgbm90IHNldChkZWx0YXMpIDw9IHsxLDAsLTF9OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZmFpbGVkID0gRmFsc2UKKyAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWworICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCisgICAgICAgIChhbGxvY19kZWx0YXMsICdtZW1vcnkgYmxvY2tzJywgY2hlY2tfYWxsb2NfZGVsdGFzKV06CisgICAgICAgIGlmIGNoZWNrZXIoZGVsdGFzKToKKyAgICAgICAgICAgIG1zZyA9ICclcyBsZWFrZWQgJXMgJXMsIHN1bT0lcycgJSAoCisgICAgICAgICAgICAgICAgdGVzdCwgZGVsdGFzW253YXJtdXA6XSwgaXRlbV9uYW1lLCBzdW0oZGVsdGFzKSkKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgorICAgICAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCisgICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKKyAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKKyAgICByZXR1cm4gZmFpbGVkCiAKIGRlZiBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKToKICAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKQEAgLTE0MjgsOCArMTUyMCwxMSBAQAogICAgIGVsc2U6CiAgICAgICAgIGN0eXBlcy5fcmVzZXRfY2FjaGUoKQogCi0gICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaC4KKyAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoIGFuZCByZWFkIG1lbW9yeSBzdGF0aXN0aWNzIGltbWVkaWF0ZWx5IGFmdGVyLgorICAgIGZ1bmMxID0gc3lzLmdldGFsbG9jYXRlZGJsb2NrcworICAgIGZ1bmMyID0gc3lzLmdldHRvdGFscmVmY291bnQKICAgICBnYy5jb2xsZWN0KCkKKyAgICByZXR1cm4gZnVuYzEoKSwgZnVuYzIoKQogCiBkZWYgd2FybV9jYWNoZXMoKToKICAgICAjIGNoYXIgY2FjaGUKQEAgLTE0NzIsMzA3ICsxNTY3LDEwIEBACiAgICAgcHJpbnQoZmlsbCgnICcuam9pbihzdHIoZWx0KSBmb3IgZWx0IGluIHNvcnRlZCh4KSksIHdpZHRoLAogICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9YmxhbmtzLCBzdWJzZXF1ZW50X2luZGVudD1ibGFua3MpKQogCi0jIE1hcCBzeXMucGxhdGZvcm0gdG8gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgYmFzZW5hbWVzIG9mIHRlc3RzCi0jIGV4cGVjdGVkIHRvIGJlIHNraXBwZWQgb24gdGhhdCBwbGF0Zm9ybS4KLSMKLSMgU3BlY2lhbCBjYXNlczoKLSMgICAgIHRlc3RfcGVwMjc3Ci0jICAgICAgICAgVGhlIF9FeHBlY3RlZFNraXBzIGNvbnN0cnVjdG9yIGFkZHMgdGhpcyB0byB0aGUgc2V0IG9mIGV4cGVjdGVkCi0jICAgICAgICAgc2tpcHMgaWYgbm90IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMuCi0jICAgICB0ZXN0X3RpbWVvdXQKLSMgICAgICAgICBDb250cm9sbGVkIGJ5IHRlc3RfdGltZW91dC5za2lwX2V4cGVjdGVkLiAgUmVxdWlyZXMgdGhlIG5ldHdvcmsKLSMgICAgICAgICByZXNvdXJjZSBhbmQgYSBzb2NrZXQgbW9kdWxlLgotIwotIyBUZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBza2lwcGVkIGV2ZXJ5d2hlcmUgZXhjZXB0IG9uIG9uZSBwbGF0Zm9ybQotIyBhcmUgYWxzbyBoYW5kbGVkIHNlcGFyYXRlbHkuCiAKLV9leHBlY3RhdGlvbnMgPSAoCi0gICAgKCd3aW4zMicsCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X19sb2NhbGUKLSAgICAgICAgdGVzdF9jcnlwdAotICAgICAgICB0ZXN0X2N1cnNlcwotICAgICAgICB0ZXN0X2RibQotICAgICAgICB0ZXN0X2RldnBvbGwKLSAgICAgICAgdGVzdF9mY250bAotICAgICAgICB0ZXN0X2ZvcmsxCi0gICAgICAgIHRlc3RfZXBvbGwKLSAgICAgICAgdGVzdF9kYm1fZ251Ci0gICAgICAgIHRlc3RfZGJtX25kYm0KLSAgICAgICAgdGVzdF9ncnAKLSAgICAgICAgdGVzdF9pb2N0bAotICAgICAgICB0ZXN0X2xhcmdlZmlsZQotICAgICAgICB0ZXN0X2txdWV1ZQotICAgICAgICB0ZXN0X29wZW5wdHkKLSAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICB0ZXN0X3BpcGVzCi0gICAgICAgIHRlc3RfcG9sbAotICAgICAgICB0ZXN0X3Bvc2l4Ci0gICAgICAgIHRlc3RfcHR5Ci0gICAgICAgIHRlc3RfcHdkCi0gICAgICAgIHRlc3RfcmVzb3VyY2UKLSAgICAgICAgdGVzdF9zaWduYWwKLSAgICAgICAgdGVzdF9zeXNsb2cKLSAgICAgICAgdGVzdF90aHJlYWRzaWduYWxzCi0gICAgICAgIHRlc3Rfd2FpdDMKLSAgICAgICAgdGVzdF93YWl0NAotICAgICAgICAiIiIpLAotICAgICgnbGludXgnLAotICAgICAgICAiIiIKLSAgICAgICAgdGVzdF9jdXJzZXMKLSAgICAgICAgdGVzdF9kZXZwb2xsCi0gICAgICAgIHRlc3RfbGFyZ2VmaWxlCi0gICAgICAgIHRlc3Rfa3F1ZXVlCi0gICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKLSAgICAgICAgIiIiKSwKLSAgICAoJ3VuaXh3YXJlJywKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfZXBvbGwKLSAgICAgICAgdGVzdF9sYXJnZWZpbGUKLSAgICAgICAgdGVzdF9rcXVldWUKLSAgICAgICAgdGVzdF9taW5pZG9tCi0gICAgICAgIHRlc3Rfb3BlbnB0eQotICAgICAgICB0ZXN0X3B5ZXhwYXQKLSAgICAgICAgdGVzdF9zYXgKLSAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiKSwKLSAgICAoJ29wZW51bml4JywKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfZXBvbGwKLSAgICAgICAgdGVzdF9sYXJnZWZpbGUKLSAgICAgICAgdGVzdF9rcXVldWUKLSAgICAgICAgdGVzdF9taW5pZG9tCi0gICAgICAgIHRlc3Rfb3BlbnB0eQotICAgICAgICB0ZXN0X3B5ZXhwYXQKLSAgICAgICAgdGVzdF9zYXgKLSAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiKSwKLSAgICAoJ3Njb19zdicsCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X2FzeW5jaGF0Ci0gICAgICAgIHRlc3RfZm9yazEKLSAgICAgICAgdGVzdF9lcG9sbAotICAgICAgICB0ZXN0X2dldHRleHQKLSAgICAgICAgdGVzdF9sYXJnZWZpbGUKLSAgICAgICAgdGVzdF9sb2NhbGUKLSAgICAgICAgdGVzdF9rcXVldWUKLSAgICAgICAgdGVzdF9taW5pZG9tCi0gICAgICAgIHRlc3Rfb3BlbnB0eQotICAgICAgICB0ZXN0X3B5ZXhwYXQKLSAgICAgICAgdGVzdF9xdWV1ZQotICAgICAgICB0ZXN0X3NheAotICAgICAgICB0ZXN0X3N1bmRyeQotICAgICAgICB0ZXN0X3RocmVhZAotICAgICAgICB0ZXN0X3RocmVhZGVkX2ltcG9ydAotICAgICAgICB0ZXN0X3RocmVhZGVkdGVtcGZpbGUKLSAgICAgICAgdGVzdF90aHJlYWRpbmcKLSAgICAgICAgIiIiKSwKLSAgICAoJ2RhcndpbicsCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X19sb2NhbGUKLSAgICAgICAgdGVzdF9jdXJzZXMKLSAgICAgICAgdGVzdF9kZXZwb2xsCi0gICAgICAgIHRlc3RfZXBvbGwKLSAgICAgICAgdGVzdF9kYm1fZ251Ci0gICAgICAgIHRlc3RfZ2RiCi0gICAgICAgIHRlc3RfbGFyZ2VmaWxlCi0gICAgICAgIHRlc3RfbG9jYWxlCi0gICAgICAgIHRlc3RfbWluaWRvbQotICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2Ci0gICAgICAgIHRlc3RfcG9sbAotICAgICAgICAiIiIpLAotICAgICgnc3Vub3MnLAotICAgICAgICAiIiIKLSAgICAgICAgdGVzdF9jdXJzZXMKLSAgICAgICAgdGVzdF9kYm0KLSAgICAgICAgdGVzdF9lcG9sbAotICAgICAgICB0ZXN0X2txdWV1ZQotICAgICAgICB0ZXN0X2RibV9nbnUKLSAgICAgICAgdGVzdF9nemlwCi0gICAgICAgIHRlc3Rfb3BlbnB0eQotICAgICAgICB0ZXN0X3ppcGZpbGUKLSAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiksCi0gICAgKCdocC11eCcsCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X2N1cnNlcwotICAgICAgICB0ZXN0X2Vwb2xsCi0gICAgICAgIHRlc3RfZGJtX2dudQotICAgICAgICB0ZXN0X2d6aXAKLSAgICAgICAgdGVzdF9sYXJnZWZpbGUKLSAgICAgICAgdGVzdF9sb2NhbGUKLSAgICAgICAgdGVzdF9rcXVldWUKLSAgICAgICAgdGVzdF9taW5pZG9tCi0gICAgICAgIHRlc3Rfb3BlbnB0eQotICAgICAgICB0ZXN0X3B5ZXhwYXQKLSAgICAgICAgdGVzdF9zYXgKLSAgICAgICAgdGVzdF96aXBmaWxlCi0gICAgICAgIHRlc3RfemxpYgotICAgICAgICAiIiIpLAotICAgICgnY3lnd2luJywKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfY3Vyc2VzCi0gICAgICAgIHRlc3RfZGJtCi0gICAgICAgIHRlc3RfZGV2cG9sbAotICAgICAgICB0ZXN0X2Vwb2xsCi0gICAgICAgIHRlc3RfaW9jdGwKLSAgICAgICAgdGVzdF9rcXVldWUKLSAgICAgICAgdGVzdF9sYXJnZWZpbGUKLSAgICAgICAgdGVzdF9sb2NhbGUKLSAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICB0ZXN0X3NvY2tldHNlcnZlcgotICAgICAgICAiIiIpLAotICAgICgnb3MyZW14JywKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfYXVkaW9vcAotICAgICAgICB0ZXN0X2N1cnNlcwotICAgICAgICB0ZXN0X2Vwb2xsCi0gICAgICAgIHRlc3Rfa3F1ZXVlCi0gICAgICAgIHRlc3RfbGFyZ2VmaWxlCi0gICAgICAgIHRlc3RfbW1hcAotICAgICAgICB0ZXN0X29wZW5wdHkKLSAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICB0ZXN0X3B0eQotICAgICAgICB0ZXN0X3Jlc291cmNlCi0gICAgICAgIHRlc3Rfc2lnbmFsCi0gICAgICAgICIiIiksCi0gICAgKCdmcmVlYnNkJywKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfZGV2cG9sbAotICAgICAgICB0ZXN0X2Vwb2xsCi0gICAgICAgIHRlc3RfZGJtX2dudQotICAgICAgICB0ZXN0X2xvY2FsZQotICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2Ci0gICAgICAgIHRlc3RfcGVwMjc3Ci0gICAgICAgIHRlc3RfcHR5Ci0gICAgICAgIHRlc3Rfc29ja2V0c2VydmVyCi0gICAgICAgIHRlc3RfdGNsCi0gICAgICAgIHRlc3RfdGsKLSAgICAgICAgdGVzdF90dGtfZ3Vpb25seQotICAgICAgICB0ZXN0X3R0a190ZXh0b25seQotICAgICAgICB0ZXN0X3RpbWVvdXQKLSAgICAgICAgdGVzdF91cmxsaWJuZXQKLSAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiKSwKLSAgICAoJ2FpeCcsCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X2J6MgotICAgICAgICB0ZXN0X2Vwb2xsCi0gICAgICAgIHRlc3RfZGJtX2dudQotICAgICAgICB0ZXN0X2d6aXAKLSAgICAgICAgdGVzdF9rcXVldWUKLSAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICB0ZXN0X3RjbAotICAgICAgICB0ZXN0X3RrCi0gICAgICAgIHRlc3RfdHRrX2d1aW9ubHkKLSAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKLSAgICAgICAgdGVzdF96aXBpbXBvcnQKLSAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiksCi0gICAgKCdvcGVuYnNkJywKLSAgICAgICAgIiIiCi0gICAgICAgIHRlc3RfY3R5cGVzCi0gICAgICAgIHRlc3RfZGV2cG9sbAotICAgICAgICB0ZXN0X2Vwb2xsCi0gICAgICAgIHRlc3RfZGJtX2dudQotICAgICAgICB0ZXN0X2xvY2FsZQotICAgICAgICB0ZXN0X25vcm1hbGl6YXRpb24KLSAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICB0ZXN0X3BlcDI3NwotICAgICAgICB0ZXN0X3RjbAotICAgICAgICB0ZXN0X3RrCi0gICAgICAgIHRlc3RfdHRrX2d1aW9ubHkKLSAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKLSAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiKSwKLSAgICAoJ25ldGJzZCcsCi0gICAgICAgICIiIgotICAgICAgICB0ZXN0X2N0eXBlcwotICAgICAgICB0ZXN0X2N1cnNlcwotICAgICAgICB0ZXN0X2RldnBvbGwKLSAgICAgICAgdGVzdF9lcG9sbAotICAgICAgICB0ZXN0X2RibV9nbnUKLSAgICAgICAgdGVzdF9sb2NhbGUKLSAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICB0ZXN0X3BlcDI3NwotICAgICAgICB0ZXN0X3RjbAotICAgICAgICB0ZXN0X3RrCi0gICAgICAgIHRlc3RfdHRrX2d1aW9ubHkKLSAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKLSAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiKSwKLSkKLQotY2xhc3MgX0V4cGVjdGVkU2tpcHM6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBpbXBvcnQgb3MucGF0aAotICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdGltZW91dAotCi0gICAgICAgIHNlbGYudmFsaWQgPSBGYWxzZQotICAgICAgICBleHBlY3RlZCA9IE5vbmUKLSAgICAgICAgZm9yIGl0ZW0gaW4gX2V4cGVjdGF0aW9uczoKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKGl0ZW1bMF0pOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gaXRlbVsxXQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5leHBlY3RlZCA9IHNldChleHBlY3RlZC5zcGxpdCgpKQotCi0gICAgICAgICAgICAjIFRoZXNlIGFyZSBicm9rZW4gdGVzdHMsIGZvciBub3cgc2tpcHBlZCBvbiBldmVyeSBwbGF0Zm9ybS4KLSAgICAgICAgICAgICMgWFhYIEZpeCB0aGVzZSEKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQuYWRkKCd0ZXN0X25pcycpCi0KLSAgICAgICAgICAgICMgZXhwZWN0ZWQgdG8gYmUgc2tpcHBlZCBvbiBldmVyeSBwbGF0Zm9ybSwgZXZlbiBMaW51eAotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZC5hZGQoJ3Rlc3RfcGVwMjc3JykKLQotICAgICAgICAgICAgIyBkb2N0ZXN0LCBwcm9maWxlIGFuZCBjUHJvZmlsZSB0ZXN0cyBmYWlsIHdoZW4gdGhlIGNvZGVjIGZvciB0aGUKLSAgICAgICAgICAgICMgZnMgZW5jb2RpbmcgaXNuJ3QgYnVpbHQgaW4gYmVjYXVzZSBQeVVuaWNvZGVfRGVjb2RlKCkgYWRkcyB0d28KLSAgICAgICAgICAgICMgY2FsbHMgaW50byBQeXRob24uCi0gICAgICAgICAgICBlbmNzID0gKCJ1dGYtOCIsICJsYXRpbi0xIiwgImFzY2lpIiwgIm1iY3MiLCAidXRmLTE2IiwgInV0Zi0zMiIpCi0gICAgICAgICAgICBpZiBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkubG93ZXIoKSBub3QgaW4gZW5jczoKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkLmFkZCgndGVzdF9wcm9maWxlJykKLSAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkLmFkZCgndGVzdF9jUHJvZmlsZScpCi0gICAgICAgICAgICAgICAgc2VsZi5leHBlY3RlZC5hZGQoJ3Rlc3RfZG9jdGVzdCcpCi0KLSAgICAgICAgICAgIGlmIHRlc3RfdGltZW91dC5za2lwX2V4cGVjdGVkOgotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQuYWRkKCd0ZXN0X3RpbWVvdXQnKQotCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKLSAgICAgICAgICAgICAgICAjIHRlc3Rfc3FsaXRlIGlzIG9ubHkgcmVsaWFibGUgb24gV2luZG93cyB3aGVyZSB0aGUgbGlicmFyeQotICAgICAgICAgICAgICAgICMgaXMgZGlzdHJpYnV0ZWQgd2l0aCBQeXRob24KLSAgICAgICAgICAgICAgICBXSU5fT05MWSA9IHsidGVzdF91bmljb2RlX2ZpbGUiLCAidGVzdF93aW5yZWciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3dpbnNvdW5kIiwgInRlc3Rfc3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9zcWxpdGUiLCAidGVzdF9tc2lsaWIifQotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgfD0gV0lOX09OTFkKLQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdzdW5vczUnOgotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQuYWRkKCd0ZXN0X25pcycpCi0KLSAgICAgICAgICAgIGlmIHN1cHBvcnQucHl0aG9uX2lzX29wdGltaXplZCgpOgotICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQuYWRkKCJ0ZXN0X2dkYiIpCi0KLSAgICAgICAgICAgIHNlbGYudmFsaWQgPSBUcnVlCi0KLSAgICBkZWYgaXN2YWxpZChzZWxmKToKLSAgICAgICAgIlJldHVybiB0cnVlIGlmZiBfRXhwZWN0ZWRTa2lwcyBrbm93cyBhYm91dCB0aGUgY3VycmVudCBwbGF0Zm9ybS4iCi0gICAgICAgIHJldHVybiBzZWxmLnZhbGlkCi0KLSAgICBkZWYgZ2V0ZXhwZWN0ZWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBzZXQgb2YgdGVzdCBuYW1lcyB3ZSBleHBlY3QgdG8gc2tpcCBvbiBjdXJyZW50IHBsYXRmb3JtLgotCi0gICAgICAgIHNlbGYuaXN2YWxpZCgpIG11c3QgYmUgdHJ1ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgYXNzZXJ0IHNlbGYuaXN2YWxpZCgpCi0gICAgICAgIHJldHVybiBzZWxmLmV4cGVjdGVkCi0KLWRlZiBfbWFrZV90ZW1wX2Rpcl9mb3JfYnVpbGQoVEVNUERJUik6Ci0gICAgIyBXaGVuIHRlc3RzIGFyZSBydW4gZnJvbSB0aGUgUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgaXQgaXMgYmVzdCBwcmFjdGljZQotICAgICMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIEl0IGVhc2VzIHRoZSBjbGVhbnVwIG9mIGxlZnRvdmVyCi0gICAgIyBmaWxlcyB1c2luZyBjb21tYW5kICJtYWtlIGRpc3RjbGVhbiIuCitkZWYgbWFpbl9pbl90ZW1wX2N3ZCgpOgorICAgICIiIlJ1biBtYWluKCkgaW4gYSB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkuIiIiCiAgICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgotICAgICAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCi0gICAgICAgIFRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWtkaXIoVEVNUERJUikKICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKQEAgLTE3ODEsMTAgKzE1NzksMTYgQEAKICAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCiAgICAgIyB0aGUgdGVzdHMuIFRoZSBuYW1lIG9mIHRoZSBkaXIgaW5jbHVkZXMgdGhlIHBpZCB0byBhbGxvdyBwYXJhbGxlbAogICAgICMgdGVzdGluZyAoc2VlIHRoZSAtaiBvcHRpb24pLgotICAgIFRFU1RDV0QgPSAndGVzdF9weXRob25fe30nLmZvcm1hdChvcy5nZXRwaWQoKSkKKyAgICB0ZXN0X2N3ZCA9ICd0ZXN0X3B5dGhvbl97fScuZm9ybWF0KG9zLmdldHBpZCgpKQorICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQogCi0gICAgVEVTVENXRCA9IG9zLnBhdGguam9pbihURU1QRElSLCBURVNUQ1dEKQotICAgIHJldHVybiBURU1QRElSLCBURVNUQ1dECisgICAgIyBSdW4gdGhlIHRlc3RzIGluIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKKyAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCisgICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCisgICAgIyBhdmFpbGFibGUgZnJvbSBzdXBwb3J0LlNBVkVEQ1dELgorICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCh0ZXN0X2N3ZCwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgIG1haW4oKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgIyBSZW1vdmUgcmVncnRlc3QucHkncyBvd24gZGlyZWN0b3J5IGZyb20gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gRGVzcGl0ZQpAQCAtMTgwOCwxMSArMTYxMiw0IEBACiAgICAgIyBzYW5pdHkgY2hlY2sKICAgICBhc3NlcnQgX19maWxlX18gPT0gb3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKQogCi0gICAgVEVNUERJUiwgVEVTVENXRCA9IF9tYWtlX3RlbXBfZGlyX2Zvcl9idWlsZChURU1QRElSKQotCi0gICAgIyBSdW4gdGhlIHRlc3RzIGluIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJ5IGNoYW5nZXMgdGhlIENXRCB0byBhCi0gICAgIyB0ZW1wb3JhcnkgYW5kIHdyaXRhYmxlIGRpcmVjdG9yeS4gSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCi0gICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuIFRoZSBvcmlnaW5hbCBDV0QgaXMKLSAgICAjIGF2YWlsYWJsZSBmcm9tIHN1cHBvcnQuU0FWRURDV0QuCi0gICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKFRFU1RDV0QsIHF1aWV0PVRydWUpOgotICAgICAgICBtYWluKCkKKyAgICBtYWluX2luX3RlbXBfY3dkKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGFiMjAxNjQuLmU5NjhlOTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpAQCAtMTIsMTIgKzEyLDEyIEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgemlwZmlsZQogCi1mcm9tIGltcCBpbXBvcnQgc291cmNlX2Zyb21fY2FjaGUKK2Zyb20gaW1wb3J0bGliLnV0aWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljLCBzdHJpcF9weXRob25fc3RkZXJyLCB0ZW1wX2RpcgogCiAjIEV4ZWN1dGluZyB0aGUgaW50ZXJwcmV0ZXIgaW4gYSBzdWJwcm9jZXNzCiBkZWYgX2Fzc2VydF9weXRob24oZXhwZWN0ZWRfc3VjY2VzcywgKmFyZ3MsICoqZW52X3ZhcnMpOgotICAgIGNtZF9saW5lID0gW3N5cy5leGVjdXRhYmxlXQorICAgIGNtZF9saW5lID0gW3N5cy5leGVjdXRhYmxlLCAnLVgnLCAnZmF1bHRoYW5kbGVyJ10KICAgICBpZiBub3QgZW52X3ZhcnM6CiAgICAgICAgIGNtZF9saW5lLmFwcGVuZCgnLUUnKQogICAgICMgTmVlZCB0byBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgZW52aXJvbm1lbnQsIGZvciBpbi1wbGFjZSB0ZXN0aW5nIG9mCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zb3J0cGVyZi5weSBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CmluZGV4IGFmN2MwYjQuLjkwNzIyZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5CisrKyBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CkBAIC0yMiw3ICsyMiw3IEBACiAgICAgZm4gPSBvcy5wYXRoLmpvaW4odGQsICJyciUwNmQiICUgbikKICAgICB0cnk6CiAgICAgICAgIGZwID0gb3BlbihmbiwgInJiIikKLSAgICBleGNlcHQgSU9FcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgciA9IHJhbmRvbS5yYW5kb20KICAgICAgICAgcmVzdWx0ID0gW3IoKSBmb3IgaSBpbiByYW5nZShuKV0KICAgICAgICAgdHJ5OgpAQCAtMzUsOSArMzUsOSBAQAogICAgICAgICAgICAgICAgIGlmIGZwOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIG1zZzoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgcHJpbnQoImNhbid0IHdyaXRlIiwgZm4sICI6IiwgbXNnKQogICAgIGVsc2U6CiAgICAgICAgIHJlc3VsdCA9IG1hcnNoYWwubG9hZChmcCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5IGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKaW5kZXggODY4NjE1My4uNzU5YjNmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKKysrIGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29jaywgYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCiAgICAgICAgICAgICBzc2xjb25uID0gc2VsZi5jb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICMgc29ja2V0IGVycm9ycyBhcmUgc2lsZW5jZWQgYnkgdGhlIGNhbGxlciwgcHJpbnQgdGhlbSBoZXJlCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiR290IGFuIGVycm9yOlxuJXNcbiIgJSBlKQpAQCAtMTQ3LDkgKzE0NywxMSBAQAogICAgICAgICBzZWxmLnNlcnZlci5zaHV0ZG93bigpCiAKIAotZGVmIG1ha2VfaHR0cHNfc2VydmVyKGNhc2UsIGNlcnRmaWxlPUNFUlRGSUxFLCBob3N0PUhPU1QsIGhhbmRsZXJfY2xhc3M9Tm9uZSk6Ci0gICAgIyB3ZSBhc3N1bWUgdGhlIGNlcnRmaWxlIGNvbnRhaW5zIGJvdGggcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlCi0gICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCitkZWYgbWFrZV9odHRwc19zZXJ2ZXIoY2FzZSwgKiwgY29udGV4dD1Ob25lLCBjZXJ0ZmlsZT1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICBob3N0PUhPU1QsIGhhbmRsZXJfY2xhc3M9Tm9uZSk6CisgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAjIFdlIGFzc3VtZSB0aGUgY2VydGZpbGUgY29udGFpbnMgYm90aCBwcml2YXRlIGtleSBhbmQgY2VydGlmaWNhdGUKICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSkKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlclRocmVhZChjb250ZXh0LCBob3N0LCBoYW5kbGVyX2NsYXNzKQogICAgIGZsYWcgPSB0aHJlYWRpbmcuRXZlbnQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKaW5kZXggNTliZTMyNi4uNDYyYTkyZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CkBAIC0xNSwxMCArMTUsMTAgQEAKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBpbXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgZm5tYXRjaApAQCAtOTgsNyArOTgsOCBAQAogICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBzdXBwcmVzcyBwYWNrYWdlIGFuZCBtb2R1bGUgZGVwcmVjYXRpb24KICAgICB3YXJuaW5ncyB3aGVuIGltcG9ydGluZyB0aGVtLgogCi0gICAgSWYgaWdub3JlIGlzIEZhbHNlLCB0aGlzIGNvbnRleHQgbWFuYWdlciBoYXMgbm8gZWZmZWN0LiIiIgorICAgIElmIGlnbm9yZSBpcyBGYWxzZSwgdGhpcyBjb250ZXh0IG1hbmFnZXIgaGFzIG5vIGVmZmVjdC4KKyAgICAiIiIKICAgICBpZiBpZ25vcmU6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiLCAiLisgKG1vZHVsZXxwYWNrYWdlKSIsCkBAIC0xMDgsMjMgKzEwOSwyOSBAQAogICAgICAgICB5aWVsZAogCiAKLWRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIGRlcHJlY2F0ZWQ9RmFsc2UpOgorZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgZGVwcmVjYXRlZD1GYWxzZSwgKiwgcmVxdWlyZWRfb249KCkpOgogICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgdG8gYmUgdGVzdGVkLCByYWlzaW5nIFNraXBUZXN0IGlmCiAgICAgaXQgaXMgbm90IGF2YWlsYWJsZS4KIAogICAgIElmIGRlcHJlY2F0ZWQgaXMgVHJ1ZSwgYW55IG1vZHVsZSBvciBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzCi0gICAgd2lsbCBiZSBzdXBwcmVzc2VkLiIiIgorICAgIHdpbGwgYmUgc3VwcHJlc3NlZC4gSWYgYSBtb2R1bGUgaXMgcmVxdWlyZWQgb24gYSBwbGF0Zm9ybSBidXQgb3B0aW9uYWwgZm9yCisgICAgb3RoZXJzLCBzZXQgcmVxdWlyZWRfb24gdG8gYW4gaXRlcmFibGUgb2YgcGxhdGZvcm0gcHJlZml4ZXMgd2hpY2ggd2lsbCBiZQorICAgIGNvbXBhcmVkIGFnYWluc3Qgc3lzLnBsYXRmb3JtLgorICAgICIiIgogICAgIHdpdGggX2lnbm9yZV9kZXByZWNhdGVkX2ltcG9ydHMoZGVwcmVjYXRlZCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgodHVwbGUocmVxdWlyZWRfb24pKToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKG1zZykpCiAKIAogZGVmIF9zYXZlX2FuZF9yZW1vdmVfbW9kdWxlKG5hbWUsIG9yaWdfbW9kdWxlcyk6CiAgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIHNhdmUgYW5kIHJlbW92ZSBhIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzCiAKLSAgICAgICBSYWlzZSBJbXBvcnRFcnJvciBpZiB0aGUgbW9kdWxlIGNhbid0IGJlIGltcG9ydGVkLiIiIgorICAgICAgIFJhaXNlIEltcG9ydEVycm9yIGlmIHRoZSBtb2R1bGUgY2FuJ3QgYmUgaW1wb3J0ZWQuCisgICAgICAgIiIiCiAgICAgIyB0cnkgdG8gaW1wb3J0IHRoZSBtb2R1bGUgYW5kIHJhaXNlIGFuIGVycm9yIGlmIGl0IGNhbid0IGJlIGltcG9ydGVkCiAgICAgaWYgbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgIF9faW1wb3J0X18obmFtZSkKQEAgLTI4OSwyNSArMjk2LDIwIEBACiBkZWYgdW5saW5rKGZpbGVuYW1lKToKICAgICB0cnk6CiAgICAgICAgIF91bmxpbmsoZmlsZW5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICMgVGhlIGZpbGVuYW1lIG5lZWQgbm90IGV4aXN0LgotICAgICAgICBpZiBlcnJvci5lcnJubyBub3QgaW4gKGVycm5vLkVOT0VOVCwgZXJybm8uRU5PVERJUik6Ci0gICAgICAgICAgICByYWlzZQorICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIE5vdEFEaXJlY3RvcnlFcnJvcik6CisgICAgICAgIHBhc3MKIAogZGVmIHJtZGlyKGRpcm5hbWUpOgogICAgIHRyeToKICAgICAgICAgX3JtZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICMgVGhlIGRpcmVjdG9yeSBuZWVkIG5vdCBleGlzdC4KLSAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcmFpc2UKKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgIHBhc3MKIAogZGVmIHJtdHJlZShwYXRoKToKICAgICB0cnk6CiAgICAgICAgIF9ybXRyZWUocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcmFpc2UKKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgIHBhc3MKIAogZGVmIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpOgogICAgICIiIk1vdmUgYSBQRVAgMzE0NyBweWMvcHlvIGZpbGUgdG8gaXRzIGxlZ2FjeSBweWMvcHlvIGxvY2F0aW9uLgpAQCAtMzE5LDcgKzMyMSw3IEBACiAgICAgICAgIGRvZXMgbm90IG5lZWQgdG8gZXhpc3QsIGhvd2V2ZXIgdGhlIFBFUCAzMTQ3IHB5YyBmaWxlIG11c3QgZXhpc3QuCiAgICAgOnJldHVybjogVGhlIGZpbGUgc3lzdGVtIHBhdGggdG8gdGhlIGxlZ2FjeSBweWMgZmlsZS4KICAgICAiIiIKLSAgICBweWNfZmlsZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UpCisgICAgcHljX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UpCiAgICAgdXBfb25lID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzb3VyY2UpKQogICAgIGxlZ2FjeV9weWMgPSBvcy5wYXRoLmpvaW4odXBfb25lLCBzb3VyY2UgKyAoJ2MnIGlmIF9fZGVidWdfXyBlbHNlICdvJykpCiAgICAgb3MucmVuYW1lKHB5Y19maWxlLCBsZWdhY3lfcHljKQpAQCAtMzM4LDggKzM0MCw4IEBACiAgICAgICAgICMgY29tYmluYXRpb25zIG9mIFBFUCAzMTQ3IGFuZCBsZWdhY3kgcHljIGFuZCBweW8gZmlsZXMuCiAgICAgICAgIHVubGluayhzb3VyY2UgKyAnYycpCiAgICAgICAgIHVubGluayhzb3VyY2UgKyAnbycpCi0gICAgICAgIHVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKLSAgICAgICAgdW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgdW5saW5rKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSwgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkpCisgICAgICAgIHVubGluayhpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKIAogIyBPbiBzb21lIHBsYXRmb3Jtcywgc2hvdWxkIG5vdCBydW4gZ3VpIHRlc3QgZXZlbiBpZiBpdCBpcyBhbGxvd2VkCiAjIGluIGB1c2VfcmVzb3VyY2VzJy4KQEAgLTQ5NCw3ICs0OTYsNyBAQAogICAgIHRoZSBTT19SRVVTRUFERFIgc29ja2V0IG9wdGlvbiBoYXZpbmcgZGlmZmVyZW50IHNlbWFudGljcyBvbiBXaW5kb3dzIHZlcnN1cwogICAgIFVuaXgvTGludXguICBPbiBVbml4LCB5b3UgY2FuJ3QgaGF2ZSB0d28gQUZfSU5FVCBTT0NLX1NUUkVBTSBzb2NrZXRzIGJpbmQsCiAgICAgbGlzdGVuIGFuZCB0aGVuIGFjY2VwdCBjb25uZWN0aW9ucyBvbiBpZGVudGljYWwgaG9zdC9wb3J0cy4gIEFuIEVBRERSSU5VU0UKLSAgICBzb2NrZXQuZXJyb3Igd2lsbCBiZSByYWlzZWQgYXQgc29tZSBwb2ludCAoZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSBhbmQKKyAgICBPU0Vycm9yIHdpbGwgYmUgcmFpc2VkIGF0IHNvbWUgcG9pbnQgKGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gYW5kCiAgICAgdGhlIG9yZGVyIGJpbmQgYW5kIGxpc3RlbiB3ZXJlIGNhbGxlZCBvbiBlYWNoIHNvY2tldCkuCiAKICAgICBIb3dldmVyLCBvbiBXaW5kb3dzLCBpZiBTT19SRVVTRUFERFIgaXMgc2V0IG9uIHRoZSBzb2NrZXRzLCBubyBFQUREUklOVVNFCkBAIC01NjgsNyArNTcwLDcgQEAKICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICAgc29jay5iaW5kKCgnOjoxJywgMCkpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgc29ja2V0LmdhaWVycm9yKToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBpZiBzb2NrOgpAQCAtMTE0Miw5ICsxMTQ0LDkgQEAKICMgQ29udGV4dCBtYW5hZ2VycyB0aGF0IHJhaXNlIFJlc291cmNlRGVuaWVkIHdoZW4gdmFyaW91cyBpc3N1ZXMKICMgd2l0aCB0aGUgSW50ZXJuZXQgY29ubmVjdGlvbiBtYW5pZmVzdCB0aGVtc2VsdmVzIGFzIGV4Y2VwdGlvbnMuCiAjIFhYWCBkZXByZWNhdGUgdGhlc2UgYW5kIHVzZSB0cmFuc2llbnRfaW50ZXJuZXQoKSBpbnN0ZWFkCi10aW1lX291dCA9IFRyYW5zaWVudFJlc291cmNlKElPRXJyb3IsIGVycm5vPWVycm5vLkVUSU1FRE9VVCkKLXNvY2tldF9wZWVyX3Jlc2V0ID0gVHJhbnNpZW50UmVzb3VyY2Uoc29ja2V0LmVycm9yLCBlcnJubz1lcnJuby5FQ09OTlJFU0VUKQotaW9lcnJvcl9wZWVyX3Jlc2V0ID0gVHJhbnNpZW50UmVzb3VyY2UoSU9FcnJvciwgZXJybm89ZXJybm8uRUNPTk5SRVNFVCkKK3RpbWVfb3V0ID0gVHJhbnNpZW50UmVzb3VyY2UoT1NFcnJvciwgZXJybm89ZXJybm8uRVRJTUVET1VUKQorc29ja2V0X3BlZXJfcmVzZXQgPSBUcmFuc2llbnRSZXNvdXJjZShPU0Vycm9yLCBlcnJubz1lcnJuby5FQ09OTlJFU0VUKQoraW9lcnJvcl9wZWVyX3Jlc2V0ID0gVHJhbnNpZW50UmVzb3VyY2UoT1NFcnJvciwgZXJybm89ZXJybm8uRUNPTk5SRVNFVCkKIAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgpAQCAtMTE5MCwxNyArMTE5MiwxNyBAQAogICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCiAgICAgICAgIHlpZWxkCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgIyB1cmxsaWIgY2FuIHdyYXAgb3JpZ2luYWwgc29ja2V0IGVycm9ycyBtdWx0aXBsZSB0aW1lcyAoISksIHdlIG11c3QKICAgICAgICAgIyB1bndyYXAgdG8gZ2V0IGF0IHRoZSBvcmlnaW5hbCBlcnJvci4KICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGEgPSBlcnIuYXJncwotICAgICAgICAgICAgaWYgbGVuKGEpID49IDEgYW5kIGlzaW5zdGFuY2UoYVswXSwgSU9FcnJvcik6CisgICAgICAgICAgICBpZiBsZW4oYSkgPj0gMSBhbmQgaXNpbnN0YW5jZShhWzBdLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICBlcnIgPSBhWzBdCiAgICAgICAgICAgICAjIFRoZSBlcnJvciBjYW4gYWxzbyBiZSB3cmFwcGVkIGFzIGFyZ3NbMV06CiAgICAgICAgICAgICAjICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgotICAgICAgICAgICAgIyAgICAgICAgcmFpc2UgSU9FcnJvcignc29ja2V0IGVycm9yJywgbXNnKS53aXRoX3RyYWNlYmFjayhzeXMuZXhjX2luZm8oKVsyXSkKLSAgICAgICAgICAgIGVsaWYgbGVuKGEpID49IDIgYW5kIGlzaW5zdGFuY2UoYVsxXSwgSU9FcnJvcik6CisgICAgICAgICAgICAjICAgICAgICByYWlzZSBPU0Vycm9yKCdzb2NrZXQgZXJyb3InLCBtc2cpLndpdGhfdHJhY2ViYWNrKHN5cy5leGNfaW5mbygpWzJdKQorICAgICAgICAgICAgZWxpZiBsZW4oYSkgPj0gMiBhbmQgaXNpbnN0YW5jZShhWzFdLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICBlcnIgPSBhWzFdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xODQyLDcgKzE4NDQsNyBAQAogICAgIFRoaXMgd2lsbCB0eXBpY2FsbHkgYmUgcnVuIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbW11bmljYXRlKCkgbWV0aG9kCiAgICAgb2YgYSBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdC4KICAgICAiIiIKLSAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmc1xdXHI/XG4/IiwgYiIiLCBzdGRlcnIpLnN0cmlwKCkKKyAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmcywgXGQrIGJsb2Nrc1xdXHI/XG4/IiwgYiIiLCBzdGRlcnIpLnN0cmlwKCkKICAgICByZXR1cm4gc3RkZXJyCiAKIGRlZiBhcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weSBiL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQppbmRleCA2MDhlYzAxLi44Y2MyODVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CkBAIC0yOSwxNyArMjksMjAgQEAKICAgICAgICAgaWYgbm90IGhhc2F0dHIoc3lzLm1vZHVsZXNbbW9kbmFtZV0sICJfX2FsbF9fIik6CiAgICAgICAgICAgICByYWlzZSBOb0FsbChtb2RuYW1lKQogICAgICAgICBuYW1lcyA9IHt9Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4ZWMoImZyb20gJXMgaW1wb3J0ICoiICUgbW9kbmFtZSwgbmFtZXMpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICMgSW5jbHVkZSB0aGUgbW9kdWxlIG5hbWUgaW4gdGhlIGV4Y2VwdGlvbiBzdHJpbmcKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiX19hbGxfXyBmYWlsdXJlIGluIHt9OiB7fToge30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLCBlLl9fY2xhc3NfXy5fX25hbWVfXywgZSkpCi0gICAgICAgIGlmICJfX2J1aWx0aW5zX18iIGluIG5hbWVzOgotICAgICAgICAgICAgZGVsIG5hbWVzWyJfX2J1aWx0aW5zX18iXQotICAgICAgICBrZXlzID0gc2V0KG5hbWVzKQotICAgICAgICBhbGwgPSBzZXQoc3lzLm1vZHVsZXNbbW9kbmFtZV0uX19hbGxfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBhbGwpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1vZHVsZT1tb2RuYW1lKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBleGVjKCJmcm9tICVzIGltcG9ydCAqIiAlIG1vZG5hbWUsIG5hbWVzKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICMgSW5jbHVkZSB0aGUgbW9kdWxlIG5hbWUgaW4gdGhlIGV4Y2VwdGlvbiBzdHJpbmcKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9fYWxsX18gZmFpbHVyZSBpbiB7fToge306IHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsIGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKSkKKyAgICAgICAgICAgIGlmICJfX2J1aWx0aW5zX18iIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIGRlbCBuYW1lc1siX19idWlsdGluc19fIl0KKyAgICAgICAgICAgIGtleXMgPSBzZXQobmFtZXMpCisgICAgICAgICAgICBhbGxfbGlzdCA9IHN5cy5tb2R1bGVzW21vZG5hbWVdLl9fYWxsX18KKyAgICAgICAgICAgIGFsbF9zZXQgPSBzZXQoYWxsX2xpc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoYWxsX3NldCwgYWxsX2xpc3QsICJpbiBtb2R1bGUge30iLmZvcm1hdChtb2RuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgYWxsX3NldCwgImluIG1vZHVsZSB7fSIuZm9ybWF0KG1vZG5hbWUpKQogCiAgICAgZGVmIHdhbGtfbW9kdWxlcyhzZWxmLCBiYXNlZGlyLCBtb2RwYXRoKToKICAgICAgICAgZm9yIGZuIGluIHNvcnRlZChvcy5saXN0ZGlyKGJhc2VkaXIpKToKQEAgLTExMCw4ICsxMTMsNSBAQAogICAgICAgICAgICAgcHJpbnQoJ0ZvbGxvd2luZyBtb2R1bGVzIGZhaWxlZCB0byBiZSBpbXBvcnRlZDonLCBmYWlsZWRfaW1wb3J0cykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQWxsVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2FiYy5weQppbmRleCBkNGQ3NTU2Li45M2Y5ZGFlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FiYy5weQpAQCAtNjgsNiArNjgsMTkgQEAKIAogY2xhc3MgVGVzdEFCQyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgdGVzdF9BQkNfaGVscGVyKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBhbiBBQkMgdXNpbmcgdGhlIGhlbHBlciBjbGFzcyBhbmQgcGVyZm9ybSBiYXNpYyBjaGVja3MKKyAgICAgICAgY2xhc3MgQyhhYmMuQUJDKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gY2xzLl9fbmFtZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShDKSwgYWJjLkFCQ01ldGEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gc3VwZXIoKS5mb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKCksICdEJykKKwogICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAogICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCkBAIC0yODgsNyArMzAxLDEwIEBACiAgICAgICAgIGIgPSBCKCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKGIsIEEpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoYiwgKEEsKSkpCisgICAgICAgIHRva2VuX29sZCA9IGFiYy5nZXRfY2FjaGVfdG9rZW4oKQogICAgICAgICBBLnJlZ2lzdGVyKEIpCisgICAgICAgIHRva2VuX25ldyA9IGFiYy5nZXRfY2FjaGVfdG9rZW4oKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRva2VuX29sZCwgdG9rZW5fbmV3KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShiLCBBKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoYiwgKEEsKSkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQppbmRleCA5YzBlN2I5Li4wNWU0Y2EwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CkBAIC0zLDYgKzMsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBwaWNrbGUKIAogaW1wb3J0IGFpZmMKIApAQCAtMzEsNiArMzIsNyBAQAogCiAgICAgZGVmIHRlc3RfcGFyYW1zKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5mID0gYWlmYy5vcGVuKHNlbGYuc25kZmlsZXBhdGgpCisgICAgICAgIHBhcmFtcyA9IGYuZ2V0cGFyYW1zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGZwKCkubmFtZSwgc2VsZi5zbmRmaWxlcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldG5jaGFubmVscygpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0c2FtcHdpZHRoKCksIDIpCkBAIC00Myw2ICs0NSw0OCBAQAogICAgICAgICAgICAgKDIsIDIsIDQ4MDAwLCAxNDQwMCwgYidOT05FJywgYidub3QgY29tcHJlc3NlZCcpLAogICAgICAgICAgICAgKQogCisgICAgICAgIHBhcmFtcyA9IGYuZ2V0cGFyYW1zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMubmNoYW5uZWxzLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5zYW1wd2lkdGgsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLmZyYW1lcmF0ZSwgNDgwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLm5mcmFtZXMsIDE0NDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5jb21wdHlwZSwgYidOT05FJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMuY29tcG5hbWUsIGInbm90IGNvbXByZXNzZWQnKQorCisgICAgZGVmIHRlc3RfcGFyYW1zX2FkZGVkKHNlbGYpOgorICAgICAgICBmID0gc2VsZi5mID0gYWlmYy5vcGVuKFRFU1RGTiwgJ3diJykKKyAgICAgICAgZi5haWZmKCkKKyAgICAgICAgZi5zZXRwYXJhbXMoKDEsIDEsIDEsIDEsIGInTk9ORScsIGInJykpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBzZWxmLmYgPSBhaWZjLm9wZW4oVEVTVEZOLCAncmInKQorICAgICAgICBwYXJhbXMgPSBmLmdldHBhcmFtcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLm5jaGFubmVscywgZi5nZXRuY2hhbm5lbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMuc2FtcHdpZHRoLCBmLmdldHNhbXB3aWR0aCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5mcmFtZXJhdGUsIGYuZ2V0ZnJhbWVyYXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLm5mcmFtZXMsIGYuZ2V0bmZyYW1lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5jb21wdHlwZSwgZi5nZXRjb21wdHlwZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5jb21wbmFtZSwgZi5nZXRjb21wbmFtZSgpKQorCisgICAgZGVmIHRlc3RfZ2V0cGFyYW1zX3BpY2tsYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5mID0gYWlmYy5vcGVuKHNlbGYuc25kZmlsZXBhdGgpCisgICAgICAgIHBhcmFtcyA9IHNlbGYuZi5nZXRwYXJhbXMoKQorICAgICAgICBkdW1wID0gcGlja2xlLmR1bXBzKHBhcmFtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaWNrbGUubG9hZHMoZHVtcCksIHBhcmFtcykKKyAgICAgICAgc2VsZi5mLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuc25kZmlsZXBhdGgsICdyYicpIGFzIHRlc3RmaWxlOgorICAgICAgICAgICAgd2l0aCBhaWZjLm9wZW4odGVzdGZpbGUpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0ZmlsZS5jbG9zZWQsIFRydWUpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIHRlc3RmaWxlOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhaWZjLkVycm9yKToKKyAgICAgICAgICAgICAgICB3aXRoIGFpZmMub3Blbih0ZXN0ZmlsZSwgJ3diJykgYXMgZm91dDoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0ZmlsZS5jbG9zZWQsIFRydWUpCisgICAgICAgICAgICBmb3V0LmNsb3NlKCkgIyBkbyBub3RoaW5nCisKICAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5mID0gYWlmYy5vcGVuKHNlbGYuc25kZmlsZXBhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkZnJhbWVzKDApLCBiJycpCkBAIC0zMTksMTIgKzM2MywxNCBAQAogCiAgICAgZGVmIHRlc3Rfd3JpdGVfYWlmZl9ieV9leHRlbnNpb24oc2VsZik6CiAgICAgICAgIHNhbXB3aWR0aCA9IDIKLSAgICAgICAgZm91dCA9IHNlbGYuZm91dCA9IGFpZmMub3BlbihURVNURk4gKyAnLmFpZmYnLCAnd2InKQorICAgICAgICBmaWxlbmFtZSA9IFRFU1RGTiArICcuYWlmZicKKyAgICAgICAgZm91dCA9IHNlbGYuZm91dCA9IGFpZmMub3BlbihmaWxlbmFtZSwgJ3diJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgZmlsZW5hbWUpCiAgICAgICAgIGZvdXQuc2V0cGFyYW1zKCgxLCBzYW1wd2lkdGgsIDEsIDEsIGInVUxBVycsIGInJykpCiAgICAgICAgIGZyYW1lcyA9IGInXHgwMCcgKiBmb3V0LmdldG5jaGFubmVscygpICogc2FtcHdpZHRoCiAgICAgICAgIGZvdXQud3JpdGVmcmFtZXMoZnJhbWVzKQogICAgICAgICBmb3V0LmNsb3NlKCkKLSAgICAgICAgZiA9IHNlbGYuZiA9IGFpZmMub3BlbihURVNURk4gKyAnLmFpZmYnLCAncmInKQorICAgICAgICBmID0gc2VsZi5mID0gYWlmYy5vcGVuKGZpbGVuYW1lLCAncmInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0Y29tcHR5cGUoKSwgYidOT05FJykKICAgICAgICAgZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IGMwNmM5NDAuLjAwY2RlMmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtMTQsNiArMTQsNyBAQAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBjbGFzcyBTdGRJT0J1ZmZlcihTdHJpbmdJTyk6CiAgICAgcGFzcwogCkBAIC0xNDIxLDYgKzE0MjIsMTkgQEAKICAgICAgICAgdHlwZSA9IGFyZ3BhcnNlLkZpbGVUeXBlKCd3YicsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkZpbGVUeXBlKCd3YicsIDEpIiwgcmVwcih0eXBlKSkKIAorICAgIGRlZiB0ZXN0X3JfbGF0aW4oc2VsZik6CisgICAgICAgIHR5cGUgPSBhcmdwYXJzZS5GaWxlVHlwZSgncicsIGVuY29kaW5nPSdsYXRpbl8xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiRmlsZVR5cGUoJ3InLCBlbmNvZGluZz0nbGF0aW5fMScpIiwgcmVwcih0eXBlKSkKKworICAgIGRlZiB0ZXN0X3dfYmlnNV9pZ25vcmUoc2VsZik6CisgICAgICAgIHR5cGUgPSBhcmdwYXJzZS5GaWxlVHlwZSgndycsIGVuY29kaW5nPSdiaWc1JywgZXJyb3JzPSdpZ25vcmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJGaWxlVHlwZSgndycsIGVuY29kaW5nPSdiaWc1JywgZXJyb3JzPSdpZ25vcmUnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcih0eXBlKSkKKworICAgIGRlZiB0ZXN0X3JfMV9yZXBsYWNlKHNlbGYpOgorICAgICAgICB0eXBlID0gYXJncGFyc2UuRmlsZVR5cGUoJ3InLCAxLCBlcnJvcnM9J3JlcGxhY2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJGaWxlVHlwZSgncicsIDEsIGVycm9ycz0ncmVwbGFjZScpIiwgcmVwcih0eXBlKSkKKwogCiBjbGFzcyBSRmlsZShvYmplY3QpOgogICAgIHNlZW4gPSB7fQpAQCAtMTU1Nyw2ICsxNTcxLDI0IEBACiAgICAgXQogCiAKK2NsYXNzIFRlc3RGaWxlVHlwZU9wZW5BcmdzKFRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgb3BlbiAodGhlIGJ1aWx0aW4pIGlzIGNvcnJlY3RseSBjYWxsZWQiIiIKKworICAgIGRlZiB0ZXN0X29wZW5fYXJncyhzZWxmKToKKyAgICAgICAgRlQgPSBhcmdwYXJzZS5GaWxlVHlwZQorICAgICAgICBjYXNlcyA9IFsKKyAgICAgICAgICAgIChGVCgncmInKSwgKCdyYicsIC0xLCBOb25lLCBOb25lKSksCisgICAgICAgICAgICAoRlQoJ3cnLCAxKSwgKCd3JywgMSwgTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKEZUKCd3JywgZXJyb3JzPSdyZXBsYWNlJyksICgndycsIC0xLCBOb25lLCAncmVwbGFjZScpKSwKKyAgICAgICAgICAgIChGVCgnd2InLCBlbmNvZGluZz0nYmlnNScpLCAoJ3diJywgLTEsICdiaWc1JywgTm9uZSkpLAorICAgICAgICAgICAgKEZUKCd3JywgMCwgJ2wxJywgJ3N0cmljdCcpLCAoJ3cnLCAwLCAnbDEnLCAnc3RyaWN0JykpLAorICAgICAgICBdCisgICAgICAgIHdpdGggbW9jay5wYXRjaCgnYnVpbHRpbnMub3BlbicpIGFzIG06CisgICAgICAgICAgICBmb3IgdHlwZSwgYXJncyBpbiBjYXNlczoKKyAgICAgICAgICAgICAgICB0eXBlKCdmb28nKQorICAgICAgICAgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF93aXRoKCdmb28nLCAqYXJncykKKworCiBjbGFzcyBUZXN0VHlwZUNhbGxhYmxlKFBhcnNlclRlc3RDYXNlKToKICAgICAiIiJUZXN0IHNvbWUgY2FsbGFibGVzIGFzIG9wdGlvbi9hcmd1bWVudCB0eXBlcyIiIgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCBmMjFiNjlmLi5hNDRlZTA3IDEwMDc1NQotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTM1MywxMiArMzUzLDEyIEBACiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X2Zyb21maWxlX2lvZXJyb3Ioc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzUzOTU6IENoZWNrIGlmIGZyb21maWxlIHJhaXNlcyBhIHByb3BlciBJT0Vycm9yCisgICAgICAgICMgSXNzdWUgIzUzOTU6IENoZWNrIGlmIGZyb21maWxlIHJhaXNlcyBhIHByb3BlciBPU0Vycm9yCiAgICAgICAgICMgaW5zdGVhZCBvZiBFT0ZFcnJvci4KICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUpCiAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBhLmZyb21maWxlLCBmLCBsZW4oc2VsZi5leGFtcGxlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGEuZnJvbWZpbGUsIGYsIGxlbihzZWxmLmV4YW1wbGUpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKaW5kZXggZGMyNDEyNi4uNDlkYWFjYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKQEAgLTE4MCwyMCArMTgwLDM2IEBACiAKIGNsYXNzIEFTVF9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgX2Fzc2VydFRydWVvcmRlcihzZWxmLCBhc3Rfbm9kZSwgcGFyZW50X3Bvcyk6CisgICAgZGVmIF9hc3NlcnRUcnVlb3JkZXIoc2VsZiwgYXN0X25vZGUsIHBhcmVudF9wb3MsIHJldmVyc2VfY2hlY2sgPSBGYWxzZSk6CisgICAgICAgIGRlZiBzaG91bGRfcmV2ZXJzZV9jaGVjayhwYXJlbnQsIGNoaWxkKToKKyAgICAgICAgICAgICMgSW4gc29tZSBzaXR1YXRpb25zLCB0aGUgY2hpbGRyZW4gb2Ygbm9kZXMgb2NjdXIgYmVmb3JlCisgICAgICAgICAgICAjIHRoZWlyIHBhcmVudHMsIGZvciBleGFtcGxlIGluIGEuYi5jLCBhIG9jY3VycyBiZWZvcmUgYgorICAgICAgICAgICAgIyBidXQgYSBpcyBhIGNoaWxkIG9mIGIuCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmVudCwgYXN0LkNhbGwpOgorICAgICAgICAgICAgICAgIGlmIHBhcmVudC5mdW5jID09IGNoaWxkOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJlbnQsIChhc3QuQXR0cmlidXRlLCBhc3QuU3Vic2NyaXB0KSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFzdF9ub2RlLCBhc3QuQVNUKSBvciBhc3Rfbm9kZS5fZmllbGRzIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgaXNpbnN0YW5jZShhc3Rfbm9kZSwgKGFzdC5leHByLCBhc3Quc3RtdCwgYXN0LmV4Y2VwdGhhbmRsZXIpKToKICAgICAgICAgICAgIG5vZGVfcG9zID0gKGFzdF9ub2RlLmxpbmVubywgYXN0X25vZGUuY29sX29mZnNldCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub2RlX3BvcyA+PSBwYXJlbnRfcG9zKQorICAgICAgICAgICAgaWYgcmV2ZXJzZV9jaGVjazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm9kZV9wb3MgPD0gcGFyZW50X3BvcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vZGVfcG9zID49IHBhcmVudF9wb3MpCiAgICAgICAgICAgICBwYXJlbnRfcG9zID0gKGFzdF9ub2RlLmxpbmVubywgYXN0X25vZGUuY29sX29mZnNldCkKICAgICAgICAgZm9yIG5hbWUgaW4gYXN0X25vZGUuX2ZpZWxkczoKICAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihhc3Rfbm9kZSwgbmFtZSkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgogICAgICAgICAgICAgICAgIGZvciBjaGlsZCBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGNoaWxkLCBwYXJlbnRfcG9zKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIoY2hpbGQsIHBhcmVudF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9yZXZlcnNlX2NoZWNrKGFzdF9ub2RlLCBjaGlsZCkpCiAgICAgICAgICAgICBlbGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydFRydWVvcmRlcih2YWx1ZSwgcGFyZW50X3BvcykKKyAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIodmFsdWUsIHBhcmVudF9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZF9yZXZlcnNlX2NoZWNrKGFzdF9ub2RlLCB2YWx1ZSkpCiAKICAgICBkZWYgdGVzdF9BU1Rfb2JqZWN0cyhzZWxmKToKICAgICAgICAgeCA9IGFzdC5BU1QoKQpAQCAtMjYyLDE0ICsyNzgsMTQgQEAKIAogICAgIGRlZiB0ZXN0X2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgeCA9IGFzdC5hcmd1bWVudHMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX2ZpZWxkcywgKCdhcmdzJywgJ3ZhcmFyZycsICd2YXJhcmdhbm5vdGF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2t3b25seWFyZ3MnLCAna3dhcmcnLCAna3dhcmdhbm5vdGF0aW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRzJywgJ2t3X2RlZmF1bHRzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fZmllbGRzLCAoJ2FyZ3MnLCAndmFyYXJnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2t3b25seWFyZ3MnLCAna3dfZGVmYXVsdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3dhcmcnLCAnZGVmYXVsdHMnKSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIHgudmFyYXJnCiAKLSAgICAgICAgeCA9IGFzdC5hcmd1bWVudHMoKnJhbmdlKDEsIDkpKQorICAgICAgICB4ID0gYXN0LmFyZ3VtZW50cygqcmFuZ2UoMSwgNykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC52YXJhcmcsIDIpCiAKICAgICBkZWYgdGVzdF9maWVsZF9hdHRyX3dyaXRhYmxlKHNlbGYpOgpAQCAtNDM5LDcgKzQ1NSw3IEBACiAgICAgICAgICAgICAibGluZW5vPTEsIGNvbF9vZmZzZXQ9MCksIGFyZ3M9W05hbWUoaWQ9J2VnZ3MnLCBjdHg9TG9hZCgpLCAiCiAgICAgICAgICAgICAibGluZW5vPTEsIGNvbF9vZmZzZXQ9NSksIFN0cihzPSdhbmQgY2hlZXNlJywgbGluZW5vPTEsICIKICAgICAgICAgICAgICJjb2xfb2Zmc2V0PTExKV0sIGtleXdvcmRzPVtdLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwgIgotICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKV0pIgorICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTQpLCBsaW5lbm89MSwgY29sX29mZnNldD0wKV0pIgogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jb3B5X2xvY2F0aW9uKHNlbGYpOgpAQCAtNDYwLDcgKzQ3Niw3IEBACiAgICAgICAgICAgICAiTW9kdWxlKGJvZHk9W0V4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3dyaXRlJywgY3R4PUxvYWQoKSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBhcmdzPVtTdHIocz0nc3BhbScsIGxpbmVubz0xLCAiCiAgICAgICAgICAgICAiY29sX29mZnNldD02KV0sIGtleXdvcmRzPVtdLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwgIgotICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKSwgIgorICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTUpLCBsaW5lbm89MSwgY29sX29mZnNldD0wKSwgIgogICAgICAgICAgICAgIkV4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3NwYW0nLCBjdHg9TG9hZCgpLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGFyZ3M9W1N0cihzPSdlZ2dzJywgbGluZW5vPTEsIGNvbF9vZmZzZXQ9MCldLCAiCiAgICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCBsaW5lbm89MSwgIgpAQCAtNTYwLDggKzU3Niw4IEBACiAgICAgICAgIHNlbGYubW9kKG0sICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IiwgImV2YWwiKQogCiAgICAgZGVmIF9jaGVja19hcmd1bWVudHMoc2VsZiwgZmFjLCBjaGVjayk6Ci0gICAgICAgIGRlZiBhcmd1bWVudHMoYXJncz1Ob25lLCB2YXJhcmc9Tm9uZSwgdmFyYXJnYW5ub3RhdGlvbj1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGt3b25seWFyZ3M9Tm9uZSwga3dhcmc9Tm9uZSwga3dhcmdhbm5vdGF0aW9uPU5vbmUsCisgICAgICAgIGRlZiBhcmd1bWVudHMoYXJncz1Ob25lLCB2YXJhcmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBrd29ubHlhcmdzPU5vbmUsIGt3YXJnPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHM9Tm9uZSwga3dfZGVmYXVsdHM9Tm9uZSk6CiAgICAgICAgICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgYXJncyA9IFtdCkBAIC01NzEsMjAgKzU4NywxMiBAQAogICAgICAgICAgICAgICAgIGRlZmF1bHRzID0gW10KICAgICAgICAgICAgIGlmIGt3X2RlZmF1bHRzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAga3dfZGVmYXVsdHMgPSBbXQotICAgICAgICAgICAgYXJncyA9IGFzdC5hcmd1bWVudHMoYXJncywgdmFyYXJnLCB2YXJhcmdhbm5vdGF0aW9uLCBrd29ubHlhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmcsIGt3YXJnYW5ub3RhdGlvbiwgZGVmYXVsdHMsIGt3X2RlZmF1bHRzKQorICAgICAgICAgICAgYXJncyA9IGFzdC5hcmd1bWVudHMoYXJncywgdmFyYXJnLCBrd29ubHlhcmdzLCBrd19kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnLCBkZWZhdWx0cykKICAgICAgICAgICAgIHJldHVybiBmYWMoYXJncykKICAgICAgICAgYXJncyA9IFthc3QuYXJnKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXQogICAgICAgICBjaGVjayhhcmd1bWVudHMoYXJncz1hcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjaGVjayhhcmd1bWVudHModmFyYXJnYW5ub3RhdGlvbj1hc3QuTnVtKDMpKSwKLSAgICAgICAgICAgICAgInZhcmFyZ2Fubm90YXRpb24gYnV0IG5vIHZhcmFyZyIpCi0gICAgICAgIGNoZWNrKGFyZ3VtZW50cyh2YXJhcmdhbm5vdGF0aW9uPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCB2YXJhcmc9IngiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd29ubHlhcmdzPWFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd2FyZ2Fubm90YXRpb249YXN0Lk51bSg0MikpLAotICAgICAgICAgICAgICAgICAgICAgICAia3dhcmdhbm5vdGF0aW9uIGJ1dCBubyBrd2FyZyIpCi0gICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd2FyZ2Fubm90YXRpb249YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnPSJ4IiksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgY2hlY2soYXJndW1lbnRzKGRlZmF1bHRzPVthc3QuTnVtKDMpXSksCiAgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHBvc2l0aW9uYWwgZGVmYXVsdHMgdGhhbiBhcmdzIikKICAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3X2RlZmF1bHRzPVthc3QuTnVtKDQpXSksCkBAIC01OTksNyArNjA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogCiAgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKLSAgICAgICAgYSA9IGFzdC5hcmd1bWVudHMoW10sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbXSwgW10pCisgICAgICAgIGEgPSBhc3QuYXJndW1lbnRzKFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKQogICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW10sIFtdLCBOb25lKQogICAgICAgICBzZWxmLnN0bXQoZiwgImVtcHR5IGJvZHkgb24gRnVuY3Rpb25EZWYiKQogICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW2FzdC5QYXNzKCldLCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLApAQCAtNzcwLDcgKzc3OCw3IEBACiAgICAgICAgIHNlbGYuZXhwcih1LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAKICAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6Ci0gICAgICAgIGEgPSBhc3QuYXJndW1lbnRzKFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKQorICAgICAgICBhID0gYXN0LmFyZ3VtZW50cyhbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSkKICAgICAgICAgc2VsZi5leHByKGFzdC5MYW1iZGEoYSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAogICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogICAgICAgICBkZWYgZmFjKGFyZ3MpOgpAQCAtOTI4LDYgKzkzNiw5IEBACiAgICAgZGVmIHRlc3RfdHVwbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3NlcXVlbmNlKGFzdC5UdXBsZSkKIAorICAgIGRlZiB0ZXN0X25hbWVjb25zdGFudChzZWxmKToKKyAgICAgICAgc2VsZi5leHByKGFzdC5OYW1lQ29uc3RhbnQoNCksICJzaW5nbGV0b24gbXVzdCBiZSBUcnVlLCBGYWxzZSwgb3IgTm9uZSIpCisKICAgICBkZWYgdGVzdF9zdGRsaWJfdmFsaWRhdGVzKHNlbGYpOgogICAgICAgICBzdGRsaWIgPSBvcy5wYXRoLmRpcm5hbWUoYXN0Ll9fZmlsZV9fKQogICAgICAgICB0ZXN0cyA9IFtmbiBmb3IgZm4gaW4gb3MubGlzdGRpcihzdGRsaWIpIGlmIGZuLmVuZHN3aXRoKCIucHkiKV0KQEAgLTkzNiwxMyArOTQ3LDEwIEBACiAgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihzdGRsaWIsIG1vZHVsZSkKICAgICAgICAgICAgIHdpdGggb3BlbihmbiwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKICAgICAgICAgICAgICAgICBzb3VyY2UgPSBmcC5yZWFkKCkKLSAgICAgICAgICAgIG1vZCA9IGFzdC5wYXJzZShzb3VyY2UpCisgICAgICAgICAgICBtb2QgPSBhc3QucGFyc2Uoc291cmNlLCBmbikKICAgICAgICAgICAgIGNvbXBpbGUobW9kLCBmbiwgImV4ZWMiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChBU1RfVGVzdHMsIEFTVEhlbHBlcnNfVGVzdCwgQVNUVmFsaWRhdG9yVGVzdHMpCi0KIGRlZiBtYWluKCk6CiAgICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKICAgICAgICAgcmV0dXJuCkBAIC05NTUsMjAgKzk2MywyMCBAQAogICAgICAgICAgICAgcHJpbnQoIl0iKQogICAgICAgICBwcmludCgibWFpbigpIikKICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCiAKICMjIyMgRVZFUllUSElORyBCRUxPVyBJUyBHRU5FUkFURUQgIyMjIyMKIGV4ZWNfcmVzdWx0cyA9IFsKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnTm9uZScsICgnTG9hZCcsKSkpXSksCi0oJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbXSwgW10pLCBbKCdQYXNzJywgKDEsIDkpKV0sIFtdLCBOb25lKV0pLAotKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFsoJ2FyZycsICdhJywgTm9uZSldLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKSwgWygnUGFzcycsICgxLCAxMCkpXSwgW10sIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgWygnYXJnJywgJ2EnLCBOb25lKV0sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbKCdOdW0nLCAoMSwgOCksIDApXSwgW10pLCBbKCdQYXNzJywgKDEsIDEyKSldLCBbXSwgTm9uZSldKSwKLSgnTW9kdWxlJywgWygnRnVuY3Rpb25EZWYnLCAoMSwgMCksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgJ2FyZ3MnLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10sIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIE5vbmUsIFtdLCAna3dhcmdzJywgTm9uZSwgW10sIFtdKSwgWygnUGFzcycsICgxLCAxNykpXSwgW10sIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgWygnYXJnJywgJ2EnLCBOb25lKSwgKCdhcmcnLCAnYicsIE5vbmUpLCAoJ2FyZycsICdjJywgTm9uZSksICgnYXJnJywgJ2QnLCBOb25lKSwgKCdhcmcnLCAnZScsIE5vbmUpXSwgJ2FyZ3MnLCBOb25lLCBbXSwgJ2t3YXJncycsIE5vbmUsIFsoJ051bScsICgxLCAxMSksIDEpLCAoJ05hbWUnLCAoMSwgMTYpLCAnTm9uZScsICgnTG9hZCcsKSksICgnTGlzdCcsICgxLCAyNCksIFtdLCAoJ0xvYWQnLCkpLCAoJ0RpY3QnLCAoMSwgMzApLCBbXSwgW10pXSwgW10pLCBbKCdQYXNzJywgKDEsIDUyKSldLCBbXSwgTm9uZSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdOYW1lQ29uc3RhbnQnLCAoMSwgMCksIE5vbmUpKV0pLAorKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnUGFzcycsICgxLCA5KSldLCBbXSwgTm9uZSldKSwKKygnTW9kdWxlJywgWygnRnVuY3Rpb25EZWYnLCAoMSwgMCksICdmJywgKCdhcmd1bWVudHMnLCBbKCdhcmcnLCAoMSwgNiksICdhJywgTm9uZSldLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnUGFzcycsICgxLCAxMCkpXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgWygnYXJnJywgKDEsIDYpLCAnYScsIE5vbmUpXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbKCdOdW0nLCAoMSwgOCksIDApXSksIFsoJ1Bhc3MnLCAoMSwgMTIpKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCAoJ2FyZycsICgxLCA3KSwgJ2FyZ3MnLCBOb25lKSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ1Bhc3MnLCAoMSwgMTQpKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sICgnYXJnJywgKDEsIDgpLCAna3dhcmdzJywgTm9uZSksIFtdKSwgWygnUGFzcycsICgxLCAxNykpXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgWygnYXJnJywgKDEsIDYpLCAnYScsIE5vbmUpLCAoJ2FyZycsICgxLCA5KSwgJ2InLCBOb25lKSwgKCdhcmcnLCAoMSwgMTQpLCAnYycsIE5vbmUpLCAoJ2FyZycsICgxLCAyMiksICdkJywgTm9uZSksICgnYXJnJywgKDEsIDI4KSwgJ2UnLCBOb25lKV0sICgnYXJnJywgKDEsIDM1KSwgJ2FyZ3MnLCBOb25lKSwgW10sIFtdLCAoJ2FyZycsICgxLCA0MyksICdrd2FyZ3MnLCBOb25lKSwgWygnTnVtJywgKDEsIDExKSwgMSksICgnTmFtZUNvbnN0YW50JywgKDEsIDE2KSwgTm9uZSksICgnTGlzdCcsICgxLCAyNCksIFtdLCAoJ0xvYWQnLCkpLCAoJ0RpY3QnLCAoMSwgMzApLCBbXSwgW10pXSksIFsoJ1Bhc3MnLCAoMSwgNTIpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdDbGFzc0RlZicsICgxLCAwKSwgJ0MnLCBbXSwgW10sIE5vbmUsIE5vbmUsIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFsoJ05hbWUnLCAoMSwgOCksICdvYmplY3QnLCAoJ0xvYWQnLCkpXSwgW10sIE5vbmUsIE5vbmUsIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdKV0pLAotKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKSwgWygnUmV0dXJuJywgKDEsIDgpLCAoJ051bScsICgxLCAxNSksIDEpKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnUmV0dXJuJywgKDEsIDgpLCAoJ051bScsICgxLCAxNSksIDEpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdEZWxldGUnLCAoMSwgMCksIFsoJ05hbWUnLCAoMSwgNCksICd2JywgKCdEZWwnLCkpXSldKSwKICgnTW9kdWxlJywgWygnQXNzaWduJywgKDEsIDApLCBbKCdOYW1lJywgKDEsIDApLCAndicsICgnU3RvcmUnLCkpXSwgKCdOdW0nLCAoMSwgNCksIDEpKV0pLAogKCdNb2R1bGUnLCBbKCdBdWdBc3NpZ24nLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDUpLCAxKSldKSwKQEAgLTk3Nyw3ICs5ODUsNyBAQAogKCdNb2R1bGUnLCBbKCdJZicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDMpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgNSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpXSwgWygnUGFzcycsICgxLCAxMykpXSldKSwKICgnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSksICgnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgMTMpLCAneicsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxOCksICdxJywgKCdTdG9yZScsKSkpXSwgWygnUGFzcycsICgxLCAyMSkpXSldKSwKLSgnTW9kdWxlJywgWygnUmFpc2UnLCAoMSwgMCksICgnQ2FsbCcsICgxLCA2KSwgKCdOYW1lJywgKDEsIDYpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgWygnU3RyJywgKDEsIDE2KSwgJ3N0cmluZycpXSwgW10sIE5vbmUsIE5vbmUpLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdSYWlzZScsICgxLCAwKSwgKCdDYWxsJywgKDEsIDE1KSwgKCdOYW1lJywgKDEsIDYpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgWygnU3RyJywgKDEsIDE2KSwgJ3N0cmluZycpXSwgW10sIE5vbmUsIE5vbmUpLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdLCBbXSldKSwKICgnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFtdLCBbXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NlcnQnLCAoMSwgMCksICgnTmFtZScsICgxLCA3KSwgJ3YnLCAoJ0xvYWQnLCkpLCBOb25lKV0pLApAQCAtMTAwMiwyOSArMTAxMCwyOSBAQAogKCdJbnRlcmFjdGl2ZScsIFsoJ0V4cHInLCAoMSwgMCksICgnQmluT3AnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDIpLCAyKSkpXSksCiBdCiBldmFsX3Jlc3VsdHMgPSBbCi0oJ0V4cHJlc3Npb24nLCAoJ05hbWUnLCAoMSwgMCksICdOb25lJywgKCdMb2FkJywpKSksCisoJ0V4cHJlc3Npb24nLCAoJ05hbWVDb25zdGFudCcsICgxLCAwKSwgTm9uZSkpLAogKCdFeHByZXNzaW9uJywgKCdCb29sT3AnLCAoMSwgMCksICgnQW5kJywpLCBbKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA2KSwgJ2InLCAoJ0xvYWQnLCkpXSkpLAogKCdFeHByZXNzaW9uJywgKCdCaW5PcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICgnQWRkJywpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKSkpLAogKCdFeHByZXNzaW9uJywgKCdVbmFyeU9wJywgKDEsIDApLCAoJ05vdCcsKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnTG9hZCcsKSkpKSwKLSgnRXhwcmVzc2lvbicsICgnTGFtYmRhJywgKDEsIDApLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKSwgKCdOYW1lJywgKDEsIDcpLCAnTm9uZScsICgnTG9hZCcsKSkpKSwKKygnRXhwcmVzc2lvbicsICgnTGFtYmRhJywgKDEsIDApLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgKCdOYW1lQ29uc3RhbnQnLCAoMSwgNyksIE5vbmUpKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFsoJ051bScsICgxLCAyKSwgMSldLCBbKCdOdW0nLCAoMSwgNCksIDIpXSkpLAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbXSwgW10pKSwKLSgnRXhwcmVzc2lvbicsICgnU2V0JywgKDEsIDApLCBbKCdOYW1lJywgKDEsIDEpLCAnTm9uZScsICgnTG9hZCcsKSldKSksCisoJ0V4cHJlc3Npb24nLCAoJ1NldCcsICgxLCAwKSwgWygnTmFtZUNvbnN0YW50JywgKDEsIDEpLCBOb25lKV0pKSwKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgWygnTnVtJywgKDIsIDYpLCAxKV0sIFsoJ051bScsICg0LCAxMCksIDIpXSkpLAogKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAogKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSldLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSkpLAorKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpXSwgWygna2V5d29yZCcsICdjJywgKCdOdW0nLCAoMSwgOCksIDMpKV0sICgnTmFtZScsICgxLCAxMSksICdkJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDE1KSwgJ2UnLCAoJ0xvYWQnLCkpKSksCiAoJ0V4cHJlc3Npb24nLCAoJ051bScsICgxLCAwKSwgMTApKSwKICgnRXhwcmVzc2lvbicsICgnU3RyJywgKDEsIDApLCAnc3RyaW5nJykpLAotKCdFeHByZXNzaW9uJywgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSkpLAotKCdFeHByZXNzaW9uJywgKCdTdWJzY3JpcHQnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ1NsaWNlJywgKCdOYW1lJywgKDEsIDIpLCAnYicsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2MnLCAoJ0xvYWQnLCkpLCBOb25lKSwgKCdMb2FkJywpKSksCisoJ0V4cHJlc3Npb24nLCAoJ0F0dHJpYnV0ZScsICgxLCAyKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICdiJywgKCdMb2FkJywpKSksCisoJ0V4cHJlc3Npb24nLCAoJ1N1YnNjcmlwdCcsICgxLCAyKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICgnU2xpY2UnLCAoJ05hbWUnLCAoMSwgMiksICdiJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYycsICgnTG9hZCcsKSksIE5vbmUpLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnTmFtZScsICgxLCAwKSwgJ3YnLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnTGlzdCcsICgxLCAwKSwgWygnTnVtJywgKDEsIDEpLCAxKSwgKCdOdW0nLCAoMSwgMyksIDIpLCAoJ051bScsICgxLCA1KSwgMyldLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnTGlzdCcsICgxLCAwKSwgW10sICgnTG9hZCcsKSkpLAogKCdFeHByZXNzaW9uJywgKCdUdXBsZScsICgxLCAwKSwgWygnTnVtJywgKDEsIDApLCAxKSwgKCdOdW0nLCAoMSwgMiksIDIpLCAoJ051bScsICgxLCA0KSwgMyldLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnVHVwbGUnLCAoMSwgMSksIFsoJ051bScsICgxLCAxKSwgMSksICgnTnVtJywgKDEsIDMpLCAyKSwgKCdOdW0nLCAoMSwgNSksIDMpXSwgKCdMb2FkJywpKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1R1cGxlJywgKDEsIDApLCBbXSwgKCdMb2FkJywpKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICdjJywgKCdMb2FkJywpKSwgJ2QnLCAoJ0xvYWQnLCkpLCBbKCdTdWJzY3JpcHQnLCAoMSwgOCksICgnQXR0cmlidXRlJywgKDEsIDgpLCAoJ05hbWUnLCAoMSwgOCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAoJ1NsaWNlJywgKCdOdW0nLCAoMSwgMTIpLCAxKSwgKCdOdW0nLCAoMSwgMTQpLCAyKSwgTm9uZSksICgnTG9hZCcsKSldLCBbXSwgTm9uZSwgTm9uZSkpLAorKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDcpLCAoJ0F0dHJpYnV0ZScsICgxLCA2KSwgKCdBdHRyaWJ1dGUnLCAoMSwgNCksICgnQXR0cmlidXRlJywgKDEsIDIpLCAoJ05hbWUnLCAoMSwgMCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAnYycsICgnTG9hZCcsKSksICdkJywgKCdMb2FkJywpKSwgWygnU3Vic2NyaXB0JywgKDEsIDEyKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMTApLCAoJ05hbWUnLCAoMSwgOCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAoJ1NsaWNlJywgKCdOdW0nLCAoMSwgMTIpLCAxKSwgKCdOdW0nLCAoMSwgMTQpLCAyKSwgTm9uZSksICgnTG9hZCcsKSldLCBbXSwgTm9uZSwgTm9uZSkpLAogXQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQppbmRleCBjNzlmZTZmLi5mOTNhNTJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKQEAgLTE1LDYgKzE1LDcgQEAKIAogSE9TVCA9IHN1cHBvcnQuSE9TVAogU0VSVkVSX1FVSVQgPSBiJ1FVSVRcbicKK1RJTUVPVVQgPSAzLjAKIAogaWYgdGhyZWFkaW5nOgogICAgIGNsYXNzIGVjaG9fc2VydmVyKHRocmVhZGluZy5UaHJlYWQpOgpAQCAtMTIzLDcgKzEyNCw5IEBACiAgICAgICAgIGMucHVzaChiIkknbSBub3QgZGVhZCB5ZXQhIiArIHRlcm0pCiAgICAgICAgIGMucHVzaChTRVJWRVJfUVVJVCkKICAgICAgICAgYXN5bmNvcmUubG9vcCh1c2VfcG9sbD1zZWxmLnVzZXBvbGwsIGNvdW50PTMwMCwgdGltZW91dD0uMDEpCi0gICAgICAgIHMuam9pbigpCisgICAgICAgIHMuam9pbih0aW1lb3V0PVRJTUVPVVQpCisgICAgICAgIGlmIHMuaXNfYWxpdmUoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiam9pbigpIHRpbWVkIG91dCIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbnRlbnRzLCBbYiJoZWxsbyB3b3JsZCIsIGIiSSdtIG5vdCBkZWFkIHlldCEiXSkKIApAQCAtMTU0LDcgKzE1Nyw5IEBACiAgICAgICAgIGMucHVzaChkYXRhKQogICAgICAgICBjLnB1c2goU0VSVkVSX1FVSVQpCiAgICAgICAgIGFzeW5jb3JlLmxvb3AodXNlX3BvbGw9c2VsZi51c2Vwb2xsLCBjb3VudD0zMDAsIHRpbWVvdXQ9LjAxKQotICAgICAgICBzLmpvaW4oKQorICAgICAgICBzLmpvaW4odGltZW91dD1USU1FT1VUKQorICAgICAgICBpZiBzLmlzX2FsaXZlKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoImpvaW4oKSB0aW1lZCBvdXQiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb250ZW50cywgW2RhdGFbOnRlcm1sZW5dXSkKIApAQCAtMTc0LDcgKzE3OSw5IEBACiAgICAgICAgIGMucHVzaChkYXRhKQogICAgICAgICBjLnB1c2goU0VSVkVSX1FVSVQpCiAgICAgICAgIGFzeW5jb3JlLmxvb3AodXNlX3BvbGw9c2VsZi51c2Vwb2xsLCBjb3VudD0zMDAsIHRpbWVvdXQ9LjAxKQotICAgICAgICBzLmpvaW4oKQorICAgICAgICBzLmpvaW4odGltZW91dD1USU1FT1VUKQorICAgICAgICBpZiBzLmlzX2FsaXZlKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoImpvaW4oKSB0aW1lZCBvdXQiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb250ZW50cywgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5idWZmZXIsIGRhdGEpCkBAIC0xODYsNyArMTkzLDkgQEAKICAgICAgICAgcCA9IGFzeW5jaGF0LnNpbXBsZV9wcm9kdWNlcihkYXRhK1NFUlZFUl9RVUlULCBidWZmZXJfc2l6ZT04KQogICAgICAgICBjLnB1c2hfd2l0aF9wcm9kdWNlcihwKQogICAgICAgICBhc3luY29yZS5sb29wKHVzZV9wb2xsPXNlbGYudXNlcG9sbCwgY291bnQ9MzAwLCB0aW1lb3V0PS4wMSkKLSAgICAgICAgcy5qb2luKCkKKyAgICAgICAgcy5qb2luKHRpbWVvdXQ9VElNRU9VVCkKKyAgICAgICAgaWYgcy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJqb2luKCkgdGltZWQgb3V0IikKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29udGVudHMsIFtiImhlbGxvIHdvcmxkIiwgYiJJJ20gbm90IGRlYWQgeWV0ISJdKQogCkBAIC0xOTYsNyArMjA1LDkgQEAKICAgICAgICAgZGF0YSA9IGIiaGVsbG8gd29ybGRcbkknbSBub3QgZGVhZCB5ZXQhXG4iCiAgICAgICAgIGMucHVzaF93aXRoX3Byb2R1Y2VyKGRhdGErU0VSVkVSX1FVSVQpCiAgICAgICAgIGFzeW5jb3JlLmxvb3AodXNlX3BvbGw9c2VsZi51c2Vwb2xsLCBjb3VudD0zMDAsIHRpbWVvdXQ9LjAxKQotICAgICAgICBzLmpvaW4oKQorICAgICAgICBzLmpvaW4odGltZW91dD1USU1FT1VUKQorICAgICAgICBpZiBzLmlzX2FsaXZlKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoImpvaW4oKSB0aW1lZCBvdXQiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb250ZW50cywgW2IiaGVsbG8gd29ybGQiLCBiIkknbSBub3QgZGVhZCB5ZXQhIl0pCiAKQEAgLTIwNyw3ICsyMTgsOSBAQAogICAgICAgICBjLnB1c2goYiJoZWxsbyB3b3JsZFxuXG5JJ20gbm90IGRlYWQgeWV0IVxuIikKICAgICAgICAgYy5wdXNoKFNFUlZFUl9RVUlUKQogICAgICAgICBhc3luY29yZS5sb29wKHVzZV9wb2xsPXNlbGYudXNlcG9sbCwgY291bnQ9MzAwLCB0aW1lb3V0PS4wMSkKLSAgICAgICAgcy5qb2luKCkKKyAgICAgICAgcy5qb2luKHRpbWVvdXQ9VElNRU9VVCkKKyAgICAgICAgaWYgcy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJqb2luKCkgdGltZWQgb3V0IikKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29udGVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgW2IiaGVsbG8gd29ybGQiLCBiIiIsIGIiSSdtIG5vdCBkZWFkIHlldCEiXSkKQEAgLTIyNiw3ICsyMzksOSBAQAogICAgICAgICAjIHdoZXJlIHRoZSBzZXJ2ZXIgZWNob2VzIGFsbCBvZiBpdHMgZGF0YSBiZWZvcmUgd2UgY2FuIGNoZWNrIHRoYXQgaXQKICAgICAgICAgIyBnb3QgYW55IGRvd24gYmVsb3cuCiAgICAgICAgIHMuc3RhcnRfcmVzZW5kX2V2ZW50LnNldCgpCi0gICAgICAgIHMuam9pbigpCisgICAgICAgIHMuam9pbih0aW1lb3V0PVRJTUVPVVQpCisgICAgICAgIGlmIHMuaXNfYWxpdmUoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiam9pbigpIHRpbWVkIG91dCIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbnRlbnRzLCBbXSkKICAgICAgICAgIyB0aGUgc2VydmVyIG1pZ2h0IGhhdmUgYmVlbiBhYmxlIHRvIHNlbmQgYSBieXRlIG9yIHR3byBiYWNrLCBidXQgdGhpcwpAQCAtMjY4LDkgKzI4Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDAsIE5vbmUpKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0QXN5bmNoYXQsIFRlc3RBc3luY2hhdF9XaXRoUG9sbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RIZWxwZXJGdW5jdGlvbnMsIFRlc3RGaWZvKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQppbmRleCA4NzhiMjZjLi5jMDJhOTc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKQEAgLTIwLDcgKzIwLDcgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIEhPU1QgPSBzdXBwb3J0LkhPU1QKLQorVElNRU9VVCA9IDMKIEhBU19VTklYX1NPQ0tFVFMgPSBoYXNhdHRyKHNvY2tldCwgJ0FGX1VOSVgnKQogCiBjbGFzcyBkdW1teXNvY2tldDoKQEAgLTM5Nyw3ICszOTcsMTAgQEAKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXAuZ2V0dmFsdWUoKSwgZGF0YSoyKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgdC5qb2luKCkKKyAgICAgICAgICAgIHQuam9pbih0aW1lb3V0PVRJTUVPVVQpCisgICAgICAgICAgICBpZiB0LmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJqb2luKCkgdGltZWQgb3V0IikKKwogCiAKIGNsYXNzIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzX1VzZVBvbGwoRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHMpOgpAQCAtNzU2LDcgKzc1OSw3IEBACiAgICAgICAgIHMyID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCiAgICAgICAgIHMyLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgICMgRUFERFJJTlVTRSBpbmRpY2F0ZXMgdGhlIHNvY2tldCB3YXMgY29ycmVjdGx5IGJvdW5kCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgczIuYmluZCwgKHNlbGYuYWRkclswXSwgcG9ydCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHMyLmJpbmQsIChzZWxmLmFkZHJbMF0sIHBvcnQpKQogCiAgICAgZGVmIHRlc3Rfc2V0X3JldXNlX2FkZHIoc2VsZik6CiAgICAgICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNlbGYuZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgpAQCAtNzY0LDcgKzc2Nyw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIsIDEpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgdW5pdHRlc3Quc2tpcCgiU09fUkVVU0VBRERSIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGlmIFNPX1JFVVNFQUREUiBzdWNjZWVkZWQgZm9yIHNvY2sgd2UgZXhwZWN0IGFzeW5jb3JlCkBAIC03ODksNyArNzkyLDExIEBACiAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bGFtYmRhOiBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudD01MDApKQogICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodC5qb2luKQorICAgICAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgICAgICB0LmpvaW4odGltZW91dD1USU1FT1VUKQorICAgICAgICAgICAgICAgIGlmIHQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJqb2luKCkgdGltZWQgb3V0IikKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogCiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzZWxmLmZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KC4yKQpAQCAtNzk3LDcgKzgwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soJ2lpJywgMSwgMCkpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlcnZlci5hZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5CmluZGV4IDUyMDBhZjcuLjNlMjUyMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW8KIGltcG9ydCBhdGV4aXQKK2ltcG9ydCBfdGVzdGNhcGkKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIyMgaGVscGVycwpAQCAtMjMsNyArMjQsOSBAQAogZGVmIHJhaXNlMigpOgogICAgIHJhaXNlIFN5c3RlbUVycm9yCiAKLWNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworY2xhc3MgR2VuZXJhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzZWxmLnNhdmVfc3RkZXJyID0gc3lzLnN0ZGVycgpAQCAtMTIyLDggKzEyNSw0MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwsIFs1XSkKIAogCitjbGFzcyBTdWJpbnRlcnByZXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY2FsbGJhY2tzX2xlYWsoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0IHNob3dzIGEgbGVhayBpbiByZWZsZWFrIG1vZGUgaWYgYXRleGl0IGRvZXNuJ3QKKyAgICAgICAgIyB0YWtlIGNhcmUgdG8gZnJlZSBjYWxsYmFja3MgaW4gaXRzIHBlci1zdWJpbnRlcnByZXRlciBtb2R1bGUKKyAgICAgICAgIyBzdGF0ZS4KKyAgICAgICAgbiA9IGF0ZXhpdC5fbmNhbGxiYWNrcygpCisgICAgICAgIGNvZGUgPSByIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBhdGV4aXQKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXRleGl0LnJlZ2lzdGVyKGYpCisgICAgICAgICAgICBkZWwgYXRleGl0CisgICAgICAgICAgICAiIiIKKyAgICAgICAgcmV0ID0gX3Rlc3RjYXBpLnJ1bl9pbl9zdWJpbnRlcnAoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRleGl0Ll9uY2FsbGJhY2tzKCksIG4pCisKKyAgICBkZWYgdGVzdF9jYWxsYmFja3NfbGVha19yZWZjeWNsZShzZWxmKToKKyAgICAgICAgIyBTaW1pbGFyIHRvIHRoZSBhYm92ZSwgYnV0IHdpdGggYSByZWZjeWNsZSB0aHJvdWdoIHRoZSBhdGV4aXQKKyAgICAgICAgIyBtb2R1bGUuCisgICAgICAgIG4gPSBhdGV4aXQuX25jYWxsYmFja3MoKQorICAgICAgICBjb2RlID0gciIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgYXRleGl0CisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihmKQorICAgICAgICAgICAgYXRleGl0Ll9fYXRleGl0ID0gYXRleGl0CisgICAgICAgICAgICAiIiIKKyAgICAgICAgcmV0ID0gX3Rlc3RjYXBpLnJ1bl9pbl9zdWJpbnRlcnAoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRleGl0Ll9uY2FsbGJhY2tzKCksIG4pCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RDYXNlKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9iaXNlY3QucHkKaW5kZXggN2I5YmQxOS4uNTgwYTk2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaXNlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaXNlY3QucHkKQEAgLTcsNyArNyw3IEBACiBjX2Jpc2VjdCA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnYmlzZWN0JywgZnJlc2g9WydfYmlzZWN0J10pCiAKIGNsYXNzIFJhbmdlKG9iamVjdCk6Ci0gICAgIiIiQSB0cml2aWFsIHJhbmdlKCktbGlrZSBvYmplY3Qgd2l0aG91dCBhbnkgaW50ZWdlciB3aWR0aCBsaW1pdGF0aW9ucy4iIiIKKyAgICAiIiJBIHRyaXZpYWwgcmFuZ2UoKS1saWtlIG9iamVjdCB0aGF0IGhhcyBhbiBpbnNlcnQoKSBtZXRob2QuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBzdG9wKToKICAgICAgICAgc2VsZi5zdGFydCA9IHN0YXJ0CiAgICAgICAgIHNlbGYuc3RvcCA9IHN0b3AKQEAgLTEyMCwxMCArMTIwLDEwIEBACiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfbG8oc2VsZik6CiAgICAgICAgICMgSXNzdWUgMzMwMQogICAgICAgICBtb2QgPSBzZWxmLm1vZHVsZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtb2QuYmlzZWN0X2xlZnQsIFsxLCAyLCAzXSwgNSwgLTEsIDMpLAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtb2QuYmlzZWN0X3JpZ2h0LCBbMSwgMiwgM10sIDUsIC0xLCAzKSwKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbW9kLmluc29ydF9sZWZ0LCBbMSwgMiwgM10sIDUsIC0xLCAzKSwKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbW9kLmluc29ydF9yaWdodCwgWzEsIDIsIDNdLCA1LCAtMSwgMyksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1vZC5iaXNlY3RfbGVmdCwgWzEsIDIsIDNdLCA1LCAtMSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbW9kLmJpc2VjdF9yaWdodCwgWzEsIDIsIDNdLCA1LCAtMSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbW9kLmluc29ydF9sZWZ0LCBbMSwgMiwgM10sIDUsIC0xLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtb2QuaW5zb3J0X3JpZ2h0LCBbMSwgMiwgM10sIDUsIC0xLCAzKQogCiAgICAgZGVmIHRlc3RfbGFyZ2VfcmFuZ2Uoc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTM0OTYKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKaW5kZXggNzQ3ZTJhMi4uYTRmYjc3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTQyODMsOSArNDI4Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCB4KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0QnVmZmVyUHJvdG9jb2wpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5IGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CmluZGV4IGMzNDJhNDMuLmFjYmMyOWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKQEAgLTQ2NCw2ICs0NjQsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGJvbVs6Ml0gKyBiJ2EnKQogCisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV2YWwsICJmb28iLCB7fSwgWCgpKQorCiAgICAgZGVmIHRlc3RfZ2VuZXJhbF9ldmFsKHNlbGYpOgogICAgICAgICAjIFRlc3RzIHRoYXQgZ2VuZXJhbCBtYXBwaW5ncyBjYW4gYmUgdXNlZCBmb3IgdGhlIGxvY2FscyBhcmd1bWVudAogCkBAIC01NzksNyArNTg0LDEwIEBACiAgICAgICAgICAgICAgICAgcmFpc2UgZnJvemVuZGljdF9lcnJvcigiZnJvemVuZGljdCBpcyByZWFkb25seSIpCiAKICAgICAgICAgIyByZWFkLW9ubHkgYnVpbHRpbnMKLSAgICAgICAgZnJvemVuX2J1aWx0aW5zID0gZnJvemVuZGljdChfX2J1aWx0aW5zX18pCisgICAgICAgIGlmIGlzaW5zdGFuY2UoX19idWlsdGluc19fLCB0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIGZyb3plbl9idWlsdGlucyA9IGZyb3plbmRpY3QoX19idWlsdGluc19fLl9fZGljdF9fKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJvemVuX2J1aWx0aW5zID0gZnJvemVuZGljdChfX2J1aWx0aW5zX18pCiAgICAgICAgIGNvZGUgPSBjb21waWxlKCJfX2J1aWx0aW5zX19bJ3N1cGVyZ2xvYmFsJ109MjsgcHJpbnQoc3VwZXJnbG9iYWwpIiwgInRlc3QiLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZyb3plbmRpY3RfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzogZnJvemVuX2J1aWx0aW5zfSkKQEAgLTgzOSw4ICs4NDcsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoMSwgMi4wLCAzKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoMS4wLCAyLCAzKSwgMykKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXgsIDQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXgsICgpKQorICAgICAgICBjbGFzcyBCYWRTZXE6CisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF4LCBCYWRTZXEoKSkKKwogICAgICAgICBmb3Igc3RtdCBpbiAoCiAgICAgICAgICAgICAibWF4KGtleT1pbnQpIiwgICAgICAgICAgICAgICAgICMgbm8gYXJncworICAgICAgICAgICAgIm1heChkZWZhdWx0PU5vbmUpIiwKKyAgICAgICAgICAgICJtYXgoMSwgMiwgZGVmYXVsdD1Ob25lKSIsICAgICAgIyByZXF1aXJlIGNvbnRhaW5lciBmb3IgZGVmYXVsdAorICAgICAgICAgICAgIm1heChkZWZhdWx0PU5vbmUsIGtleT1pbnQpIiwKICAgICAgICAgICAgICJtYXgoMSwga2V5PWludCkiLCAgICAgICAgICAgICAgIyBzaW5nbGUgYXJnIG5vdCBpdGVyYWJsZQogICAgICAgICAgICAgIm1heCgxLCAyLCBrZXlzdG9uZT1pbnQpIiwgICAgICAjIHdyb25nIGtleXdvcmQKICAgICAgICAgICAgICJtYXgoMSwgMiwga2V5PWludCwgYWJjPWludCkiLCAgIyB0d28gbWFueSBrZXl3b3JkcwpAQCAtODU3LDYgKzg3NiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgoMSwyKSwga2V5PW5lZyksIDEpICAgICMgdHdvIGVsZW0gaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoMSwgMiwga2V5PW5lZyksIDEpICAgICAjIHR3byBlbGVtcwogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KCgpLCBkZWZhdWx0PU5vbmUpLCBOb25lKSAgICAjIHplcm8gZWxlbSBpdGVyYWJsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgoMSwpLCBkZWZhdWx0PU5vbmUpLCAxKSAgICAgIyBvbmUgZWxlbSBpdGVyYWJsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgoMSwyKSwgZGVmYXVsdD1Ob25lKSwgMikgICAgIyB0d28gZWxlbSBpdGVyYWJsZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KCgpLCBkZWZhdWx0PTEsIGtleT1uZWcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgoMSwgMiksIGRlZmF1bHQ9Mywga2V5PW5lZyksIDEpCisKICAgICAgICAgZGF0YSA9IFtyYW5kb20ucmFuZHJhbmdlKDIwMCkgZm9yIGkgaW4gcmFuZ2UoMTAwKV0KICAgICAgICAga2V5cyA9IGRpY3QoKGVsZW0sIHJhbmRvbS5yYW5kcmFuZ2UoNTApKSBmb3IgZWxlbSBpbiBkYXRhKQogICAgICAgICBmID0ga2V5cy5fX2dldGl0ZW1fXwpAQCAtODgzLDYgKzkwOSw5IEBACiAKICAgICAgICAgZm9yIHN0bXQgaW4gKAogICAgICAgICAgICAgIm1pbihrZXk9aW50KSIsICAgICAgICAgICAgICAgICAjIG5vIGFyZ3MKKyAgICAgICAgICAgICJtaW4oZGVmYXVsdD1Ob25lKSIsCisgICAgICAgICAgICAibWluKDEsIDIsIGRlZmF1bHQ9Tm9uZSkiLCAgICAgICMgcmVxdWlyZSBjb250YWluZXIgZm9yIGRlZmF1bHQKKyAgICAgICAgICAgICJtaW4oZGVmYXVsdD1Ob25lLCBrZXk9aW50KSIsCiAgICAgICAgICAgICAibWluKDEsIGtleT1pbnQpIiwgICAgICAgICAgICAgICMgc2luZ2xlIGFyZyBub3QgaXRlcmFibGUKICAgICAgICAgICAgICJtaW4oMSwgMiwga2V5c3RvbmU9aW50KSIsICAgICAgIyB3cm9uZyBrZXl3b3JkCiAgICAgICAgICAgICAibWluKDEsIDIsIGtleT1pbnQsIGFiYz1pbnQpIiwgICMgdHdvIG1hbnkga2V5d29yZHMKQEAgLTg5OSw2ICs5MjgsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oKDEsMiksIGtleT1uZWcpLCAyKSAgICAjIHR3byBlbGVtIGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWluKDEsIDIsIGtleT1uZWcpLCAyKSAgICAgIyB0d28gZWxlbXMKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbigoKSwgZGVmYXVsdD1Ob25lKSwgTm9uZSkgICAgIyB6ZXJvIGVsZW0gaXRlcmFibGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oKDEsKSwgZGVmYXVsdD1Ob25lKSwgMSkgICAgICMgb25lIGVsZW0gaXRlcmFibGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oKDEsMiksIGRlZmF1bHQ9Tm9uZSksIDEpICAgICMgdHdvIGVsZW0gaXRlcmFibGUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbigoKSwgZGVmYXVsdD0xLCBrZXk9bmVnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oKDEsIDIpLCBkZWZhdWx0PTEsIGtleT1uZWcpLCAyKQorCiAgICAgICAgIGRhdGEgPSBbcmFuZG9tLnJhbmRyYW5nZSgyMDApIGZvciBpIGluIHJhbmdlKDEwMCldCiAgICAgICAgIGtleXMgPSBkaWN0KChlbGVtLCByYW5kb20ucmFuZHJhbmdlKDUwKSkgZm9yIGVsZW0gaW4gZGF0YSkKICAgICAgICAgZiA9IGtleXMuX19nZXRpdGVtX18KQEAgLTE0NzYsMTcgKzE1MTIsMTEgQEAKICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAjIElzc3VlICM3OTk0OiBvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMKICAgICAgICAgIyAgZGVwcmVjYXRlZAotICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Zvcm1hdF9zdHJpbmcob2JqLCBmbXRfc3RyLCBzaG91bGRfcmFpc2Vfd2FybmluZyk6Ci0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIGZvcm1hdChvYmosIGZtdF9zdHIpCi0gICAgICAgICAgICBpZiBzaG91bGRfcmFpc2Vfd2FybmluZzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod1swXS5tZXNzYWdlLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsIHN0cih3WzBdLm1lc3NhZ2UpKQorICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Zvcm1hdF9zdHJpbmcob2JqLCBmbXRfc3RyLCBzaG91bGRfcmFpc2UpOgorICAgICAgICAgICAgaWYgc2hvdWxkX3JhaXNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZm9ybWF0LCBvYmosIGZtdF9zdHIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAwKQorICAgICAgICAgICAgICAgIGZvcm1hdChvYmosIGZtdF9zdHIpCiAKICAgICAgICAgZm10X3N0cnMgPSBbJycsICdzJ10KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggMzUyMGU4My4uZjEyZjkxMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0yODgsOCArMjg4LDIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiIikuam9pbihsc3QpLCBiImFiYyIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiIikuam9pbih0dXBsZShsc3QpKSwgYiJhYmMiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIiIpLmpvaW4oaXRlcihsc3QpKSwgYiJhYmMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiLiIpLmpvaW4oW2IiYWIiLCBiImNkIl0pLCBiImFiLmNkIikKLSAgICAgICAgIyBYWFggbW9yZS4uLgorICAgICAgICBkb3Rfam9pbiA9IHNlbGYudHlwZTJ0ZXN0KGIiLjoiKS5qb2luCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG90X2pvaW4oW2IiYWIiLCBiImNkIl0pLCBiImFiLjpjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG90X2pvaW4oW21lbW9yeXZpZXcoYiJhYiIpLCBiImNkIl0pLCBiImFiLjpjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG90X2pvaW4oW2IiYWIiLCBtZW1vcnl2aWV3KGIiY2QiKV0pLCBiImFiLjpjZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG90X2pvaW4oW2J5dGVhcnJheShiImFiIiksIGIiY2QiXSksIGIiYWIuOmNkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3Rfam9pbihbYiJhYiIsIGJ5dGVhcnJheShiImNkIildKSwgYiJhYi46Y2QiKQorICAgICAgICAjIFN0cmVzcyBpdCB3aXRoIG1hbnkgaXRlbXMKKyAgICAgICAgc2VxID0gW2IiYWJjIl0gKiAxMDAwCisgICAgICAgIGV4cGVjdGVkID0gYiJhYmMiICsgYiIuOmFiYyIgKiA5OTkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3Rfam9pbihzZXEpLCBleHBlY3RlZCkKKyAgICAgICAgIyBFcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cCB3aGVuIHNvbWUgaXRlbSBpbiB0aGUgbWlkZGxlIG9mIHRoZQorICAgICAgICAjIHNlcXVlbmNlIGhhcyB0aGUgd3JvbmcgdHlwZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZG90X2pvaW4oW2J5dGVhcnJheShiImFiIiksICJjZCIsIGIiZWYiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZG90X2pvaW4oW21lbW9yeXZpZXcoYiJhYiIpLCAiY2QiLCBiImVmIl0pCiAKICAgICBkZWYgdGVzdF9jb3VudChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQpAQCAtNzU5LDcgKzc3Myw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHRmbikKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3JldmVyc2Uoc2VsZik6CkBAIC0xMjc0LDYgKzEyODgsMTEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsLCBuZXd2YWwpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsIGlzIG5vdCBuZXd2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcisnIHJldHVybmVkIHZhbCBvbiBhIG11dGFibGUgb2JqZWN0JykKKyAgICAgICAgc2VwID0gc2VsZi5tYXJzaGFsKGInJykKKyAgICAgICAgbmV3dmFsID0gc2VwLmpvaW4oW3ZhbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsLCBuZXd2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodmFsLCBuZXd2YWwpCisKIAogY2xhc3MgRml4ZWRTdHJpbmdUZXN0KHRlc3Quc3RyaW5nX3Rlc3RzLkJhc2VUZXN0KToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCA5MTJmYWMxLi43MDkwY2Q2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgYmlnbWVtdGVzdCwgXzRHCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzRHCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwpAQCAtMTgsMTAgKzE4LDEwIEBACiBiejIgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2J6MicpCiBmcm9tIGJ6MiBpbXBvcnQgQloyRmlsZSwgQloyQ29tcHJlc3NvciwgQloyRGVjb21wcmVzc29yCiAKLWhhc19jbWRsaW5lX2J1bnppcDIgPSBzeXMucGxhdGZvcm0gbm90IGluICgid2luMzIiLCAib3MyZW14IikKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICJCYXNlIGZvciBvdGhlciB0ZXN0Y2FzZXMuIgorCiAgICAgVEVYVF9MSU5FUyA9IFsKICAgICAgICAgYidyb290Ong6MDowOnJvb3Q6L3Jvb3Q6L2Jpbi9iYXNoXG4nLAogICAgICAgICBiJ2Jpbjp4OjE6MTpiaW46L2JpbjpcbicsCkBAIC01MCwxMyArNTAsMTcgQEAKICAgICBFTVBUWV9EQVRBID0gYidCWmg5XHgxN3JFOFBceDkwXHgwMFx4MDBceDAwXHgwMCcKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IFRFU1RGTgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5maWxlbmFtZSk6CiAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5maWxlbmFtZSkKIAotICAgIGlmIGhhc19jbWRsaW5lX2J1bnppcDI6CisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICMgYnVuemlwMiBpc24ndCBhdmFpbGFibGUgdG8gcnVuIG9uIFdpbmRvd3MuCisgICAgICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIGRhdGEpOgorICAgICAgICAgICAgcmV0dXJuIGJ6Mi5kZWNvbXByZXNzKGRhdGEpCisgICAgZWxzZToKICAgICAgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CiAgICAgICAgICAgICBwb3AgPSBzdWJwcm9jZXNzLlBvcGVuKCJidW56aXAyIiwgc2hlbGw9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLApAQCAtNzAsMzEgKzc0LDIxIEBACiAgICAgICAgICAgICAgICAgcmV0ID0gYnoyLmRlY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgIHJldHVybiByZXQKIAotICAgIGVsc2U6Ci0gICAgICAgICMgYnVuemlwMiBpc24ndCBhdmFpbGFibGUgdG8gcnVuIG9uIFdpbmRvd3MuCi0gICAgICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIGRhdGEpOgotICAgICAgICAgICAgcmV0dXJuIGJ6Mi5kZWNvbXByZXNzKGRhdGEpCiAKIGNsYXNzIEJaMkZpbGVUZXN0KEJhc2VUZXN0KToKLSAgICAiVGVzdCBCWjJGaWxlIHR5cGUgbWlzY2VsbGFuZW91cyBtZXRob2RzLiIKKyAgICAiVGVzdCB0aGUgQloyRmlsZSBjbGFzcy4iCiAKICAgICBkZWYgY3JlYXRlVGVtcEZpbGUoc2VsZiwgc3RyZWFtcz0xKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSAqIHN0cmVhbXMpCiAKICAgICBkZWYgdGVzdEJhZEFyZ3Moc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIEJaMkZpbGUoMTIzLjQ1NikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJ6IikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJyeCIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAicmJ0IikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQloyRmlsZSwgMTIzLjQ1NikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQloyRmlsZSwgIi9kZXYvbnVsbCIsICJ6IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQloyRmlsZSwgIi9kZXYvbnVsbCIsICJyeCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIEJaMkZpbGUsICIvZGV2L251bGwiLCAicmJ0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQloyRmlsZSwgIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQloyRmlsZSwgIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MTApCiAKICAgICBkZWYgdGVzdFJlYWQoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQpAQCAtMjE1LDkgKzIwOSw4IEBACiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBiejJmID0gQloyRmlsZShzZWxmLmZpbGVuYW1lKQogICAgICAgICBiejJmLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5fX25leHRfXykKLSAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBpZiB0aGUgYWJvdmUgLl9fbmV4dF9fIGNhbGwgZmFpbGVkIHRvCi0gICAgICAgICMgcmVsZWFzZSB0aGUgbG9jay4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgYnoyZikKKyAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBpZiB0aGUgYWJvdmUgY2FsbCBmYWlsZWQgdG8gcmVsZWFzZSB0aGUgbG9jay4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5yZWFkbGluZXMpCiAKICAgICBkZWYgdGVzdFdyaXRlKHNlbGYpOgpAQCAtMjYxLDggKzI1NCw4IEBACiAgICAgICAgICAgICBiejJmLndyaXRlKGIiYWJjIikKIAogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInIiKSBhcyBiejJmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnoyZi53cml0ZSwgYiJhIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ6MmYud3JpdGVsaW5lcywgW2IiYSJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgYnoyZi53cml0ZSwgYiJhIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGJ6MmYud3JpdGVsaW5lcywgW2IiYSJdKQogCiAgICAgZGVmIHRlc3RBcHBlbmQoc2VsZik6CiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CkBAIC0zODAsNyArMzczLDcgQEAKICAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnNlZWthYmxlKQogCi0gICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgbW9kZT0idyIpCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgInciKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYuc2Vla2FibGUoKSkKICAgICAgICAgZmluYWxseToKQEAgLTQwNiw3ICszOTksNyBAQAogICAgICAgICAgICAgYnoyZi5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGFibGUpCiAKLSAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCAidyIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5yZWFkYWJsZSgpKQogICAgICAgICBmaW5hbGx5OgpAQCAtNDIzLDcgKzQxNiw3IEBACiAgICAgICAgICAgICBiejJmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi53cml0YWJsZSkKIAotICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksIG1vZGU9InciKQorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksICJ3IikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYud3JpdGFibGUoKSkKICAgICAgICAgZmluYWxseToKQEAgLTQzNyw3ICs0MzAsNyBAQAogICAgICAgICAgICAgZGVsIG8KIAogICAgIGRlZiB0ZXN0T3Blbk5vbmV4aXN0ZW50KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBCWjJGaWxlLCAiL25vbi9leGlzdGVudCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIEJaMkZpbGUsICIvbm9uL2V4aXN0ZW50IikKIAogICAgIGRlZiB0ZXN0UmVhZGxpbmVzTm9OZXdsaW5lKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTkxMDQzOiByZWFkbGluZXMoKSBmYWlscyBvbiBhIGZpbGUgY29udGFpbmluZyBubyBuZXdsaW5lLgpAQCAtNDc3LDcgKzQ3MCw3IEBACiAgICAgICAgICMgSXNzdWUgIzcyMDU6IFVzaW5nIGEgQloyRmlsZSBmcm9tIHNldmVyYWwgdGhyZWFkcyBzaG91bGRuJ3QgZGVhZGxvY2suCiAgICAgICAgIGRhdGEgPSBiIjEiICogMioqMjAKICAgICAgICAgbnRocmVhZHMgPSAxMAotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6CisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgZGVmIGNvbXAoKToKICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShkYXRhKQpAQCAtNDg4LDI4ICs0ODEsMjcgQEAKICAgICAgICAgICAgICAgICB0LmpvaW4oKQogCiAgICAgZGVmIHRlc3RXaXRob3V0VGhyZWFkaW5nKHNlbGYpOgotICAgICAgICBiejIgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoImJ6MiIsIGJsb2NrZWQ9KCJ0aHJlYWRpbmciLCkpCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgbW9kdWxlID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCJiejIiLCBibG9ja2VkPSgidGhyZWFkaW5nIiwpKQorICAgICAgICB3aXRoIG1vZHVsZS5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIiYWJjIikKLSAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICB3aXRoIG1vZHVsZS5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiImFiYyIpCiAKICAgICBkZWYgdGVzdE1peGVkSXRlcmF0aW9uQW5kUmVhZHMoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBsaW5lbGVuID0gbGVuKHNlbGYuVEVYVF9MSU5FU1swXSkKICAgICAgICAgaGFsZmxlbiA9IGxpbmVsZW4gLy8gMgotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5yZWFkKGhhbGZsZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1swXVtoYWxmbGVuOl0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbbGluZWxlbjpdKQotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5yZWFkbGluZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1sxXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBzZWxmLlRFWFRfTElORVNbMl0pCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnJlYWRsaW5lcygpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgotICAgICAgICAgICAgICAgIG5leHQoYnoyZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGJ6MmYpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIFtdKQogCiAgICAgZGVmIHRlc3RNdWx0aVN0cmVhbU9yZGVyaW5nKHNlbGYpOgpAQCAtNTc3LDYgKzU2OSwyMCBAQAogICAgICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFs1MDAtMTUwOl0pCiAKKyAgICBkZWYgdGVzdF9yZWFkX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgIyBEcm9wIHRoZSBlb3NfbWFnaWMgZmllbGQgKDYgYnl0ZXMpIGFuZCBDUkMgKDQgYnl0ZXMpLgorICAgICAgICB0cnVuY2F0ZWQgPSBzZWxmLkRBVEFbOi0xMF0KKyAgICAgICAgd2l0aCBCWjJGaWxlKEJ5dGVzSU8odHJ1bmNhdGVkKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisgICAgICAgIHdpdGggQloyRmlsZShCeXRlc0lPKHRydW5jYXRlZCkpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZChsZW4oc2VsZi5URVhUKSksIHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQsIDEpCisgICAgICAgICMgSW5jb21wbGV0ZSA0LWJ5dGUgZmlsZSBoZWFkZXIsIGFuZCBibG9jayBoZWFkZXIgb2YgYXQgbGVhc3QgMTQ2IGJpdHMuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIyKToKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShCeXRlc0lPKHRydW5jYXRlZFs6aV0pKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQsIDEpCisKKwogY2xhc3MgQloyQ29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6CiAgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKQEAgLTcwMyw5NyArNzA5LDEwMiBAQAogCiAKIGNsYXNzIE9wZW5UZXN0KEJhc2VUZXN0KToKKyAgICAiVGVzdCB0aGUgb3BlbiBmdW5jdGlvbi4iCisKKyAgICBkZWYgb3BlbihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gYnoyLm9wZW4oKmFyZ3MsICoqa3dhcmdzKQorCiAgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgotICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYuVEVYVCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBzZWxmLlRFWFQpCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKLSAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgotICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2JpbmFyeV9tb2RlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IGltcGxpY2l0IGJpbmFyeSBtb2RlcyAobm8gImIiIG9yICJ0IiBpbiBtb2RlIHN0cmluZykuCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInciKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYuVEVYVCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBzZWxmLlRFWFQpCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInIiKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYuVEVYVCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBzZWxmLlRFWFQgKiAyKQogCiAgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKICAgICAgICAgdGV4dCA9IHNlbGYuVEVYVC5kZWNvZGUoImFzY2lpIikKICAgICAgICAgdGV4dF9uYXRpdmVfZW9sID0gdGV4dC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IikgYXMgZjoKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUodGV4dCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKLSAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKLSAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdGV4dF9uYXRpdmVfZW9sICogMikKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmooc2VsZik6Ci0gICAgICAgIHdpdGggYnoyLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAiciIpIGFzIGY6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKEJ5dGVzSU8oc2VsZi5EQVRBKSwgInIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5URVhUKQotICAgICAgICB3aXRoIGJ6Mi5vcGVuKEJ5dGVzSU8oc2VsZi5EQVRBKSwgInJiIikgYXMgZjoKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5URVhUKQogICAgICAgICB0ZXh0ID0gc2VsZi5URVhULmRlY29kZSgiYXNjaWkiKQotICAgICAgICB3aXRoIGJ6Mi5vcGVuKEJ5dGVzSU8oc2VsZi5EQVRBKSwgInJ0IikgYXMgZjoKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicnQiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKIAogICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3Blbiwgc2VsZi5maWxlbmFtZSwgIndidCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3Blbiwgc2VsZi5maWxlbmFtZSwgInJiIiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcGVuLCBzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3Blbiwgc2VsZi5maWxlbmFtZSwgInJiIiwgbmV3bGluZT0iXG4iKQogCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBlbmNvZGluZy4KICAgICAgICAgdGV4dCA9IHNlbGYuVEVYVC5kZWNvZGUoImFzY2lpIikKICAgICAgICAgdGV4dF9uYXRpdmVfZW9sID0gdGV4dC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoInV0Zi0xNi1sZSIpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgidXRmLTE2LWxlIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB0ZXh0X25hdGl2ZV9lb2wpCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKIAogICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CiAgICAgICAgICMgVGVzdCB3aXRoIG5vbi1kZWZhdWx0IGVuY29kaW5nIGVycm9yIGhhbmRsZXIuCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJmb29ceGZmYmFyIikKLSAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0iYXNjaWkiLCBlcnJvcnM9Imlnbm9yZSIpIFwKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCiAgICAgICAgICAgICAgICAgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQogCiAgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKICAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCiAgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHRleHQpCi0gICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICB3aXRoIHNlbGYub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFt0ZXh0XSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggZjFlYTVhOS4uNjI4MjdlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtMTkzLDYgKzE5Myw5IEBACiAgICAgICAgIHNlbGYucGVuZGluZ2NhbGxzX3N1Ym1pdChsLCBuKQogICAgICAgICBzZWxmLnBlbmRpbmdjYWxsc193YWl0KGwsIG4pCiAKKworY2xhc3MgU3ViaW50ZXJwcmV0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X3N1YmludGVycHMoc2VsZik6CiAgICAgICAgIGltcG9ydCBidWlsdGlucwogICAgICAgICByLCB3ID0gb3MucGlwZSgpCkBAIC0yMDgsNiArMjExLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGlja2xlLmxvYWQoZiksIGlkKHN5cy5tb2R1bGVzKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGlja2xlLmxvYWQoZiksIGlkKGJ1aWx0aW5zKSkKIAorCiAjIEJ1ZyAjNjAxMgogY2xhc3MgVGVzdDYwMTIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0KHNlbGYpOgpAQCAtMzU0LDcgKzM1OCw4IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDQVBJVGVzdCwgVGVzdFBlbmRpbmdDYWxscywgVGVzdDYwMTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRW1iZWRkaW5nVGVzdCwgU2tpcGl0ZW1UZXN0LCBUZXN0VGhyZWFkU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgRW1iZWRkaW5nVGVzdCwgU2tpcGl0ZW1UZXN0LCBUZXN0VGhyZWFkU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgU3ViaW50ZXJwcmV0ZXJUZXN0KQogCiAgICAgZm9yIG5hbWUgaW4gZGlyKF90ZXN0Y2FwaSk6CiAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CmluZGV4IGE4OWQ3ZTQuLmVmZTQ1NDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQpAQCAtNCw2ICs0LDcgQEAKIAogaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQpAQCAtNDEsOCArNDIsMTAgQEAKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHZlcnNpb24gPSAoJ1B5dGhvbiAlZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkuZW5jb2RlKCJhc2NpaSIpCi0gICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1WJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5zdGFydHN3aXRoKHZlcnNpb24pKQorICAgICAgICBmb3Igc3dpdGNoIGluICctVicsICctLXZlcnNpb24nOgorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vayhzd2l0Y2gpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVyci5zdGFydHN3aXRoKHZlcnNpb24pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5zdGFydHN3aXRoKHZlcnNpb24pKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZShzZWxmKToKICAgICAgICAgIyAtdiBjYXVzZXMgaW1wb3J0cyB0byB3cml0ZSB0byBzdGRlcnIuICBJZiB0aGUgd3JpdGUgdG8KQEAgLTU0LDE0ICs1Nyw0OSBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGInc3RhY2sgb3ZlcmZsb3cnLCBlcnIpCiAKICAgICBkZWYgdGVzdF94b3B0aW9ucyhzZWxmKToKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknKQotICAgICAgICBvcHRzID0gZXZhbChvdXQuc3BsaXRsaW5lcygpWzBdKQorICAgICAgICBkZWYgZ2V0X3hvcHRpb25zKCphcmdzKToKKyAgICAgICAgICAgICMgdXNlIHN1YnByb2Nlc3MgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgdGVzdC5zY3JpcHRfaGVscGVyIGFkZHMKKyAgICAgICAgICAgICMgIi1YIGZhdWx0aGFuZGxlciIgdG8gdGhlIGNvbW1hbmQgbGluZQorICAgICAgICAgICAgYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1FJykgKyBhcmdzCisgICAgICAgICAgICBhcmdzICs9ICgnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknKQorICAgICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoYXJncykKKyAgICAgICAgICAgIG9wdHMgPSBldmFsKG91dC5zcGxpdGxpbmVzKClbMF0pCisgICAgICAgICAgICByZXR1cm4gb3B0cworCisgICAgICAgIG9wdHMgPSBnZXRfeG9wdGlvbnMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdHMsIHt9KQotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKAotICAgICAgICAgICAgJy1YYScsICctWGI9YyxkPWUnLCAnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknKQotICAgICAgICBvcHRzID0gZXZhbChvdXQuc3BsaXRsaW5lcygpWzBdKQorCisgICAgICAgIG9wdHMgPSBnZXRfeG9wdGlvbnMoJy1YYScsICctWGI9YyxkPWUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdHMsIHsnYSc6IFRydWUsICdiJzogJ2MsZD1lJ30pCiAKKyAgICBkZWYgdGVzdF9zaG93cmVmY291bnQoc2VsZik6CisgICAgICAgIGRlZiBydW5fcHl0aG9uKCphcmdzKToKKyAgICAgICAgICAgICMgdGhpcyBpcyBzaW1pbGFyIHRvIGFzc2VydF9weXRob25fb2sgYnV0IGRvZXNuJ3Qgc3RyaXAKKyAgICAgICAgICAgICMgdGhlIHJlZmNvdW50IGZyb20gc3RkZXJyLiAgSXQgY2FuIGJlIHJlcGxhY2VkIG9uY2UKKyAgICAgICAgICAgICMgYXNzZXJ0X3B5dGhvbl9vayBzdG9wcyBkb2luZyB0aGF0LgorICAgICAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlXQorICAgICAgICAgICAgY21kLmV4dGVuZChhcmdzKQorICAgICAgICAgICAgUElQRSA9IHN1YnByb2Nlc3MuUElQRQorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCisgICAgICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcC5zdGRvdXQuY2xvc2UoKQorICAgICAgICAgICAgcC5zdGRlcnIuY2xvc2UoKQorICAgICAgICAgICAgcmMgPSBwLnJldHVybmNvZGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisgICAgICAgICAgICByZXR1cm4gcmMsIG91dCwgZXJyCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknCisgICAgICAgICMgbm9ybWFsbHkgdGhlIHJlZmNvdW50IGlzIGhpZGRlbgorICAgICAgICByYywgb3V0LCBlcnIgPSBydW5fcHl0aG9uKCctYycsIGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnJzdHJpcCgpLCBiJ3t9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKKyAgICAgICAgIyAiLVggc2hvd3JlZmNvdW50IiBzaG93cyB0aGUgcmVmY291bnQsIGJ1dCBvbmx5IGluIGRlYnVnIGJ1aWxkcworICAgICAgICByYywgb3V0LCBlcnIgPSBydW5fcHl0aG9uKCctWCcsICdzaG93cmVmY291bnQnLCAnLWMnLCBjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5yc3RyaXAoKSwgYiJ7J3Nob3dyZWZjb3VudCc6IFRydWV9IikKKyAgICAgICAgaWYgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6ICAjIGRlYnVnIGJ1aWxkCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgYnInXlxbXGQrIHJlZnMsIFxkKyBibG9ja3NcXScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQorCiAgICAgZGVmIHRlc3RfcnVuX21vZHVsZShzZWxmKToKICAgICAgICAgIyBUZXN0IGV4cGVjdGVkIG9wZXJhdGlvbiBvZiB0aGUgJy1tJyBzd2l0Y2gKICAgICAgICAgIyBTd2l0Y2ggbmVlZHMgYW4gYXJndW1lbnQKQEAgLTcwLDkgKzEwOCw5IEBACiAgICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAnZm5vcmQ0MzUyMHh5eicpCiAgICAgICAgICMgQ2hlY2sgdGhlIHJ1bnB5IG1vZHVsZSBhbHNvIGdpdmVzIGFuIGVycm9yIGZvcgogICAgICAgICAjIGEgbm9uZXhpc3RlbnQgbW9kdWxlCi0gICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAncnVucHknLCAnZm5vcmQ0MzUyMHh5eicpLAorICAgICAgICBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1tJywgJ3J1bnB5JywgJ2Zub3JkNDM1MjB4eXonKQogICAgICAgICAjIEFsbCBnb29kIGlmIG1vZHVsZSBpcyBsb2NhdGVkIGFuZCBydW4gc3VjY2Vzc2Z1bGx5Ci0gICAgICAgIGFzc2VydF9weXRob25fb2soJy1tJywgJ3RpbWVpdCcsICctbicsICcxJyksCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1tJywgJ3RpbWVpdCcsICctbicsICcxJykKIAogICAgIGRlZiB0ZXN0X3J1bl9tb2R1bGVfYnVnMTc2NDQwNyhzZWxmKToKICAgICAgICAgIyAtbSBhbmQgLWkgbmVlZCB0byBwbGF5IHdlbGwgdG9nZXRoZXIKQEAgLTIxMyw2ICsyNTEsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoMS5lbmNvZGUoJ2FzY2lpJyksIG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoMi5lbmNvZGUoJ2FzY2lpJyksIG91dCkKIAorICAgIGRlZiB0ZXN0X2VtcHR5X1BZVEhPTlBBVEhfaXNzdWUxNjMwOShzZWxmKToKKyAgICAgICAgIyBPbiBQb3NpeCwgaXQgaXMgZG9jdW1lbnRlZCB0aGF0IHNldHRpbmcgUEFUSCB0byB0aGUKKyAgICAgICAgIyBlbXB0eSBzdHJpbmcgaXMgZXF1aXZhbGVudCB0byBub3Qgc2V0dGluZyBQQVRIIGF0IGFsbCwKKyAgICAgICAgIyB3aGljaCBpcyBhbiBleGNlcHRpb24gdG8gdGhlIHJ1bGUgdGhhdCBpbiBhIHN0cmluZyBsaWtlCisgICAgICAgICMgIi9iaW46Oi91c3IvYmluIiB0aGUgZW1wdHkgc3RyaW5nIGluIHRoZSBtaWRkbGUgZ2V0cworICAgICAgICAjIGludGVycHJldGVkIGFzICcuJworICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIHBhdGggPSAiOiIuam9pbihzeXMucGF0aCkKKyAgICAgICAgICAgIHBhdGggPSBwYXRoLmVuY29kZSgiYXNjaWkiLCAiYmFja3NsYXNocmVwbGFjZSIpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShwYXRoKSIiIgorICAgICAgICByYzEsIG91dDEsIGVycjEgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUsIFBZVEhPTlBBVEg9IiIpCisgICAgICAgIHJjMiwgb3V0MiwgZXJyMiA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKyAgICAgICAgIyByZWdhcmRpbmcgdG8gUG9zaXggc3BlY2lmaWNhdGlvbiwgb3V0cHV0cyBzaG91bGQgYmUgZXF1YWwKKyAgICAgICAgIyBmb3IgZW1wdHkgYW5kIHVuc2V0IFBZVEhPTlBBVEgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQxLCBvdXQyKQorCiAgICAgZGVmIHRlc3RfZGlzcGxheWhvb2tfdW5lbmNvZGFibGUoc2VsZik6CiAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ2FzY2lpJywgJ2xhdGluLTEnLCAndXRmLTgnKToKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0yOTAsNyArMzQ1LDcgQEAKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gT1NFcnJvcjogLiogaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBpZ25vcmVkIGluLipcbk9TRXJyb3I6IC4qJykKIAogICAgIGRlZiB0ZXN0X2Nsb3NlZF9zdGRvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNDQ0OiBpZiBzdGRvdXQgaGFzIGJlZW4gZXhwbGljaXRseSBjbG9zZWQsIHdlIHNob3VsZApAQCAtMzg1LDYgKzQ0MCwzMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQogCiAKKyAgICBkZWYgdGVzdF9pc29sYXRlZG1vZGUoc2VsZik6CisgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1JJykKKyAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLUlFcycpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1JJywgJy1jJywKKyAgICAgICAgICAgICdmcm9tIHN5cyBpbXBvcnQgZmxhZ3MgYXMgZjsgJworICAgICAgICAgICAgJ3ByaW50KGYubm9fdXNlcl9zaXRlLCBmLmlnbm9yZV9lbnZpcm9ubWVudCwgZi5pc29sYXRlZCknLAorICAgICAgICAgICAgIyBkdW1teXZhciB0byBwcmV2ZW50IGV4dHJhbm91cyAtRQorICAgICAgICAgICAgZHVtbXl2YXI9IiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGInMSAxIDEnKQorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2N3ZCgpIGFzIHRtcGRpcjoKKyAgICAgICAgICAgIGZha2UgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAidXVpZC5weSIpCisgICAgICAgICAgICBtYWluID0gb3MucGF0aC5qb2luKHRtcGRpciwgIm1haW4ucHkiKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZha2UsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJyYWlzZSBSdW50aW1lRXJyb3IoJ2lzb2xhdGVkIG1vZGUgdGVzdCcpXG4iKQorICAgICAgICAgICAgd2l0aCBvcGVuKG1haW4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJpbXBvcnQgdXVpZFxuIikKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJwcmludCgnb2snKVxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsIG1haW5dLCBjd2Q9dG1wZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgIi1JIiwgbWFpbl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9dG1wZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgYiJvayIpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENtZExpbmVUZXN0KQogICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CmluZGV4IGZkODg1MDUuLjg0ODA0YmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQpAQCAtODc1LDggKzg3NSw2IEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBkYXRhLmRlY29kZShlbmNvZGluZywgInRlc3QucmVwbGFjaW5nIikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ29kZWNDYWxsYmFja1Rlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggYzY4MDg4ZS4uMmYzY2Y0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTIyOTUsOCArMjI5NSw4IEBACiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb2RlX3BhZ2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAtMSwgJ2EnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgLTEsIGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDEyMywgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCAxMjMsIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAxMjMsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDEyMywgYidhJykKIAogICAgIGRlZiB0ZXN0X2NvZGVfcGFnZV9uYW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVFbmNvZGVFcnJvciwgJ2NwOTMyJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4OWM3YTguLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RpbmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgdW5sb2FkCi1pbXBvcnQgaW1wb3J0bGliLCBvcywgc3lzCi0KLWNsYXNzIENvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2JhZF9jb2Rpbmcoc2VsZik6Ci0gICAgICAgIG1vZHVsZV9uYW1lID0gJ2JhZF9jb2RpbmcnCi0gICAgICAgIHNlbGYudmVyaWZ5X2JhZF9tb2R1bGUobW9kdWxlX25hbWUpCi0KLSAgICBkZWYgdGVzdF9iYWRfY29kaW5nMihzZWxmKToKLSAgICAgICAgbW9kdWxlX25hbWUgPSAnYmFkX2NvZGluZzInCi0gICAgICAgIHNlbGYudmVyaWZ5X2JhZF9tb2R1bGUobW9kdWxlX25hbWUpCi0KLSAgICBkZWYgdmVyaWZ5X2JhZF9tb2R1bGUoc2VsZiwgbW9kdWxlX25hbWUpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgX19pbXBvcnRfXywgJ3Rlc3QuJyArIG1vZHVsZV9uYW1lKQotCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG1vZHVsZV9uYW1lICsgJy5weScpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6Ci0gICAgICAgICAgICBieXRlcyA9IGZwLnJlYWQoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgY29tcGlsZSwgYnl0ZXMsIGZpbGVuYW1lLCAnZXhlYycpCi0KLSAgICBkZWYgdGVzdF9leGVjX3ZhbGlkX2NvZGluZyhzZWxmKToKLSAgICAgICAgZCA9IHt9Ci0gICAgICAgIGV4ZWMoYicjIGNvZGluZzogY3A5NDlcbmEgPSAiXHhhYVx4YTciXG4nLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ2EnXSwgJ1x1MzA0NycpCi0KLSAgICBkZWYgdGVzdF9maWxlX3BhcnNlKHNlbGYpOgotICAgICAgICAjIGlzc3VlMTEzNDogYWxsIGVuY29kaW5ncyBvdXRzaWRlIGxhdGluLTEgYW5kIHV0Zi04IGZhaWwgb24KLSAgICAgICAgIyBtdWx0aWxpbmUgc3RyaW5ncyBhbmQgbG9uZyBsaW5lcyAoPjUxMiBjb2x1bW5zKQotICAgICAgICB1bmxvYWQoVEVTVEZOKQotICAgICAgICBmaWxlbmFtZSA9IFRFU1RGTiArICIucHkiCi0gICAgICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAidyIsIGVuY29kaW5nPSJjcDEyNTIiKQotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiIyAtKi0gY29kaW5nOiBjcDEyNTIgLSotXG4iKQotICAgICAgICAgICAgICAgIGYud3JpdGUoIicnJ0Egc2hvcnQgc3RyaW5nXG4iKQotICAgICAgICAgICAgICAgIGYud3JpdGUoIicnJ1xuIikKLSAgICAgICAgICAgICAgICBmLndyaXRlKCInQSB2ZXJ5IGxvbmcgc3RyaW5nICVzJ1xuIiAlICgiWCIgKiAxMDAwKSkKLQotICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKLSAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICB1bmxpbmsoZmlsZW5hbWUpCi0gICAgICAgICAgICB1bmxpbmsoZmlsZW5hbWUgKyAiYyIpCi0gICAgICAgICAgICB1bmxpbmsoZmlsZW5hbWUgKyAibyIpCi0gICAgICAgICAgICB1bmxvYWQoVEVTVEZOKQotCi0gICAgZGVmIHRlc3RfZXJyb3JfZnJvbV9zdHJpbmcoc2VsZik6Ci0gICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2Mjg5Ci0gICAgICAgIGlucHV0ID0gIiMgY29kaW5nOiBhc2NpaVxuXE57U05PV01BTn0iLmVuY29kZSgndXRmLTgnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKSBhcyBjOgotICAgICAgICAgICAgY29tcGlsZShpbnB1dCwgIjxzdHJpbmc+IiwgImV4ZWMiKQotICAgICAgICBleHBlY3RlZCA9ICInYXNjaWknIGNvZGVjIGNhbid0IGRlY29kZSBieXRlIDB4ZTIgaW4gcG9zaXRpb24gMTY6ICIgXAotICAgICAgICAgICAgICAgICAgICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIgotICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5leGNlcHRpb24uYXJnc1swXS5zdGFydHN3aXRoKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1jLmV4Y2VwdGlvbi5hcmdzWzBdKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCBhZjI3ZDIyLi43MDZjYzllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTExMiw2ICsxMTIsMzggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGQpLCBkaWN0KGE9MSwgYj0yLCBjPTMwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGQuaXRlbXMoKSksIGRpY3QoYT0xLCBiPTIsIGM9MzApKQogCisgICAgZGVmIHRlc3RfbmV3X2NoaWxkKHNlbGYpOgorICAgICAgICAnVGVzdHMgZm9yIGNoYW5nZXMgZm9yIGlzc3VlICMxNjYxMy4nCisgICAgICAgIGMgPSBDaGFpbk1hcCgpCisgICAgICAgIGNbJ2EnXSA9IDEKKyAgICAgICAgY1snYiddID0gMgorICAgICAgICBtID0geydiJzoyMCwgJ2MnOiAzMH0KKyAgICAgICAgZCA9IGMubmV3X2NoaWxkKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXBzLCBbeydiJzoyMCwgJ2MnOjMwfSwgeydhJzoxLCAnYic6Mn1dKSAgIyBjaGVjayBpbnRlcm5hbCBzdGF0ZQorICAgICAgICBzZWxmLmFzc2VydElzKG0sIGQubWFwc1swXSkKKworICAgICAgICAjIFVzZSBhIGRpZmZlcmVudCBtYXAgdGhhbiBhIGRpY3QKKyAgICAgICAgY2xhc3MgbG93ZXJkaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CisgICAgICAgICAgICAgICAgICAgIGtleSA9IGtleS5sb3dlcigpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXkubG93ZXIoKQorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0Ll9fY29udGFpbnNfXyhzZWxmLCBrZXkpCisKKyAgICAgICAgYyA9IENoYWluTWFwKCkKKyAgICAgICAgY1snYSddID0gMQorICAgICAgICBjWydiJ10gPSAyCisgICAgICAgIG0gPSBsb3dlcmRpY3QoYj0yMCwgYz0zMCkKKyAgICAgICAgZCA9IGMubmV3X2NoaWxkKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobSwgZC5tYXBzWzBdKQorICAgICAgICBmb3Iga2V5IGluICdhYmMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY29udGFpbnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LCBkKQorICAgICAgICBmb3IgaywgdiBpbiBkaWN0KGE9MSwgQj0yMCwgQz0zMCwgej0xMDApLml0ZW1zKCk6ICAgICAgICAgICAgICMgY2hlY2sgZ2V0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ2V0KGssIDEwMCksIHYpCisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBOYW1lZCBUdXBsZXMKQEAgLTg4NiwyMyArOTE4LDI2IEBACiAgICAgICAgIHdvcmRzID0gQ291bnRlcignd2hpY2ggd2l0Y2ggaGFkIHdoaWNoIHdpdGNoZXMgd3Jpc3Qgd2F0Y2gnLnNwbGl0KCkpCiAgICAgICAgIHVwZGF0ZV90ZXN0ID0gQ291bnRlcigpCiAgICAgICAgIHVwZGF0ZV90ZXN0LnVwZGF0ZSh3b3JkcykKLSAgICAgICAgZm9yIGksIGR1cCBpbiBlbnVtZXJhdGUoWwotICAgICAgICAgICAgICAgICAgICB3b3Jkcy5jb3B5KCksCi0gICAgICAgICAgICAgICAgICAgIGNvcHkuY29weSh3b3JkcyksCi0gICAgICAgICAgICAgICAgICAgIGNvcHkuZGVlcGNvcHkod29yZHMpLAotICAgICAgICAgICAgICAgICAgICBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHdvcmRzLCAwKSksCi0gICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMod29yZHMsIDEpKSwKLSAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh3b3JkcywgMikpLAotICAgICAgICAgICAgICAgICAgICBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHdvcmRzLCAtMSkpLAotICAgICAgICAgICAgICAgICAgICBldmFsKHJlcHIod29yZHMpKSwKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3Rlc3QsCi0gICAgICAgICAgICAgICAgICAgIENvdW50ZXIod29yZHMpLAotICAgICAgICAgICAgICAgICAgICBdKToKLSAgICAgICAgICAgIG1zZyA9IChpLCBkdXAsIHdvcmRzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGR1cCBpcyBub3Qgd29yZHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR1cCwgd29yZHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkdXApLCBsZW4od29yZHMpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGR1cCksIHR5cGUod29yZHMpKQorICAgICAgICBmb3IgbGFiZWwsIGR1cCBpbiBbCisgICAgICAgICAgICAgICAgICAgICgnd29yZHMuY29weSgpJywgd29yZHMuY29weSgpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdjb3B5LmNvcHkod29yZHMpJywgY29weS5jb3B5KHdvcmRzKSksCisgICAgICAgICAgICAgICAgICAgICgnY29weS5kZWVwY29weSh3b3JkcyknLCBjb3B5LmRlZXBjb3B5KHdvcmRzKSksCisgICAgICAgICAgICAgICAgICAgICgncGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh3b3JkcywgMCkpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMod29yZHMsIDApKSksCisgICAgICAgICAgICAgICAgICAgICgncGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh3b3JkcywgMSkpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMod29yZHMsIDEpKSksCisgICAgICAgICAgICAgICAgICAgICgncGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh3b3JkcywgMikpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMod29yZHMsIDIpKSksCisgICAgICAgICAgICAgICAgICAgICgncGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh3b3JkcywgLTEpKScsCisgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHdvcmRzLCAtMSkpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdldmFsKHJlcHIod29yZHMpKScsIGV2YWwocmVwcih3b3JkcykpKSwKKyAgICAgICAgICAgICAgICAgICAgKCd1cGRhdGVfdGVzdCcsIHVwZGF0ZV90ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgKCdDb3VudGVyKHdvcmRzKScsIENvdW50ZXIod29yZHMpKSwKKyAgICAgICAgICAgICAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGxhYmVsPWxhYmVsKToKKyAgICAgICAgICAgICAgICBtc2cgPSAiXG5jb3B5OiAlc1xud29yZHM6ICVzIiAlIChkdXAsIHdvcmRzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZHVwLCB3b3JkcywgbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVwLCB3b3JkcykKIAogICAgIGRlZiB0ZXN0X2NvcHlfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIE15Q291bnRlcihDb3VudGVyKToKQEAgLTExODEsMjQgKzEyMTYsMjggQEAKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKICAgICAgICAgdXBkYXRlX3Rlc3QgPSBPcmRlcmVkRGljdCgpCiAgICAgICAgIHVwZGF0ZV90ZXN0LnVwZGF0ZShvZCkKLSAgICAgICAgZm9yIGksIGR1cCBpbiBlbnVtZXJhdGUoWwotICAgICAgICAgICAgICAgICAgICBvZC5jb3B5KCksCi0gICAgICAgICAgICAgICAgICAgIGNvcHkuY29weShvZCksCi0gICAgICAgICAgICAgICAgICAgIGNvcHkuZGVlcGNvcHkob2QpLAotICAgICAgICAgICAgICAgICAgICBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAwKSksCi0gICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIDEpKSwKLSAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgMikpLAotICAgICAgICAgICAgICAgICAgICBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAzKSksCi0gICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIC0xKSksCi0gICAgICAgICAgICAgICAgICAgIGV2YWwocmVwcihvZCkpLAotICAgICAgICAgICAgICAgICAgICB1cGRhdGVfdGVzdCwKLSAgICAgICAgICAgICAgICAgICAgT3JkZXJlZERpY3Qob2QpLAotICAgICAgICAgICAgICAgICAgICBdKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkdXAgaXMgbm90IG9kKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdXAsIG9kKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGR1cC5pdGVtcygpKSwgbGlzdChvZC5pdGVtcygpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGR1cCksIGxlbihvZCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZHVwKSwgdHlwZShvZCkpCisgICAgICAgIGZvciBsYWJlbCwgZHVwIGluIFsKKyAgICAgICAgICAgICAgICAgICAgKCdvZC5jb3B5KCknLCBvZC5jb3B5KCkpLAorICAgICAgICAgICAgICAgICAgICAoJ2NvcHkuY29weShvZCknLCBjb3B5LmNvcHkob2QpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdjb3B5LmRlZXBjb3B5KG9kKScsIGNvcHkuZGVlcGNvcHkob2QpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAwKSknLAorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgMCkpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAxKSknLAorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgMSkpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAyKSknLAorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgMikpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAzKSknLAorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgMykpKSwKKyAgICAgICAgICAgICAgICAgICAgKCdwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9kLCAtMSkpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIC0xKSkpLAorICAgICAgICAgICAgICAgICAgICAoJ2V2YWwocmVwcihvZCkpJywgZXZhbChyZXByKG9kKSkpLAorICAgICAgICAgICAgICAgICAgICAoJ3VwZGF0ZV90ZXN0JywgdXBkYXRlX3Rlc3QpLAorICAgICAgICAgICAgICAgICAgICAoJ09yZGVyZWREaWN0KG9kKScsIE9yZGVyZWREaWN0KG9kKSksCisgICAgICAgICAgICAgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChsYWJlbD1sYWJlbCk6CisgICAgICAgICAgICAgICAgbXNnID0gIlxuY29weTogJXNcbm9kOiAlcyIgJSAoZHVwLCBvZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGR1cCwgb2QsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR1cCwgb2QpCiAKICAgICBkZWYgdGVzdF95YW1sX2xpbmthZ2Uoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgX19yZWR1Y2VfXyBpcyBzZXR1cCBpbiBhIHdheSB0aGF0IHN1cHBvcnRzIFB5WUFNTCdzIGR1bXAoKSBmZWF0dXJlLgpAQCAtMTIxMyw5ICsxMjUyLDE4IEBACiAgICAgICAgICMgZG8gbm90IHNhdmUgaW5zdGFuY2UgZGljdGlvbmFyeSBpZiBub3QgbmVlZGVkCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG9kLl9fcmVkdWNlX18oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9kLl9fcmVkdWNlX18oKVsyXSkKICAgICAgICAgb2QueCA9IDEwCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG9kLl9fcmVkdWNlX18oKSksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKG9kLl9fcmVkdWNlX18oKVsyXSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBvZFsxXSA9IG9kCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgtMSwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZHVwLCBvZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkdXAua2V5cygpKSwgWzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKIAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xvcnN5cy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sb3JzeXMucHkKaW5kZXggZTQwNWI4YS4uYTI0ZTNhZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xvcnN5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbG9yc3lzLnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IHVuaXR0ZXN0LCB0ZXN0LnN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbG9yc3lzCiAKIGRlZiBmcmFuZ2Uoc3RhcnQsIHN0b3AsIHN0ZXApOgpAQCAtNjksOCArNjksMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJpcGxlRXF1YWwoaGxzLCBjb2xvcnN5cy5yZ2JfdG9faGxzKCpyZ2IpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcmlwbGVFcXVhbChyZ2IsIGNvbG9yc3lzLmhsc190b19yZ2IoKmhscykpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENvbG9yc3lzVGVzdCkKKyAgICBkZWYgdGVzdF95aXFfcm91bmR0cmlwKHNlbGYpOgorICAgICAgICBmb3IgciBpbiBmcmFuZ2UoMC4wLCAxLjAsIDAuMik6CisgICAgICAgICAgICBmb3IgZyBpbiBmcmFuZ2UoMC4wLCAxLjAsIDAuMik6CisgICAgICAgICAgICAgICAgZm9yIGIgaW4gZnJhbmdlKDAuMCwgMS4wLCAwLjIpOgorICAgICAgICAgICAgICAgICAgICByZ2IgPSAociwgZywgYikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcmlwbGVFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJnYiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc3lzLnlpcV90b19yZ2IoKmNvbG9yc3lzLnJnYl90b195aXEoKnJnYikpCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3lpcV92YWx1ZXMoc2VsZik6CisgICAgICAgIHZhbHVlcyA9IFsKKyAgICAgICAgICAgICMgcmdiLCB5aXEKKyAgICAgICAgICAgICgoMC4wLCAwLjAsIDAuMCksICgwLjAsIDAuMCwgMC4wKSksICMgYmxhY2sKKyAgICAgICAgICAgICgoMC4wLCAwLjAsIDEuMCksICgwLjExLCAtMC4zMjE3LCAwLjMxMjEpKSwgIyBibHVlCisgICAgICAgICAgICAoKDAuMCwgMS4wLCAwLjApLCAoMC41OSwgLTAuMjc3MywgLTAuNTI1MSkpLCAjIGdyZWVuCisgICAgICAgICAgICAoKDAuMCwgMS4wLCAxLjApLCAoMC43LCAtMC41OTksIC0wLjIxMykpLCAjIGN5YW4KKyAgICAgICAgICAgICgoMS4wLCAwLjAsIDAuMCksICgwLjMsIDAuNTk5LCAwLjIxMykpLCAjIHJlZAorICAgICAgICAgICAgKCgxLjAsIDAuMCwgMS4wKSwgKDAuNDEsIDAuMjc3MywgMC41MjUxKSksICMgcHVycGxlCisgICAgICAgICAgICAoKDEuMCwgMS4wLCAwLjApLCAoMC44OSwgMC4zMjE3LCAtMC4zMTIxKSksICMgeWVsbG93CisgICAgICAgICAgICAoKDEuMCwgMS4wLCAxLjApLCAoMS4wLCAwLjAsIDAuMCkpLCAjIHdoaXRlCisgICAgICAgICAgICAoKDAuNSwgMC41LCAwLjUpLCAoMC41LCAwLjAsIDAuMCkpLCAjIGdyZXkKKyAgICAgICAgXQorICAgICAgICBmb3IgKHJnYiwgeWlxKSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRyaXBsZUVxdWFsKHlpcSwgY29sb3JzeXMucmdiX3RvX3lpcSgqcmdiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJpcGxlRXF1YWwocmdiLCBjb2xvcnN5cy55aXFfdG9fcmdiKCp5aXEpKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKaW5kZXggYmE5ZmU0Ni4uY2Y1OGNhNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvbXBpbGVhbGwKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtMTgsMTEgKzE5LDExIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAoKQogICAgICAgICBzZWxmLnNvdXJjZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAnX3Rlc3QucHknKQotICAgICAgICBzZWxmLmJjX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aCkKKyAgICAgICAgc2VsZi5iY19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuc291cmNlX3BhdGgsICd3JykgYXMgZmlsZToKICAgICAgICAgICAgIGZpbGUud3JpdGUoJ3ggPSAxMjNcbicpCiAgICAgICAgIHNlbGYuc291cmNlX3BhdGgyID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAnX3Rlc3QyLnB5JykKLSAgICAgICAgc2VsZi5iY19wYXRoMiA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLnNvdXJjZV9wYXRoMikKKyAgICAgICAgc2VsZi5iY19wYXRoMiA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgyKQogICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5zb3VyY2VfcGF0aCwgc2VsZi5zb3VyY2VfcGF0aDIpCiAgICAgICAgIHNlbGYuc3ViZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAnX3N1YmRpcicpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuc3ViZGlyZWN0b3J5KQpAQCAtMzYsNyArMzcsNyBAQAogICAgICAgICB3aXRoIG9wZW4oc2VsZi5iY19wYXRoLCAncmInKSBhcyBmaWxlOgogICAgICAgICAgICAgZGF0YSA9IGZpbGUucmVhZCg4KQogICAgICAgICBtdGltZSA9IGludChvcy5zdGF0KHNlbGYuc291cmNlX3BhdGgpLnN0X210aW1lKQotICAgICAgICBjb21wYXJlID0gc3RydWN0LnBhY2soJzw0c2wnLCBpbXAuZ2V0X21hZ2ljKCksIG10aW1lKQorICAgICAgICBjb21wYXJlID0gc3RydWN0LnBhY2soJzw0c2wnLCBpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVIsIG10aW1lKQogICAgICAgICByZXR1cm4gZGF0YSwgY29tcGFyZQogCiAgICAgZGVmIHJlY3JlYXRpb25fY2hlY2soc2VsZiwgbWV0YWRhdGEpOgpAQCAtNTcsNyArNTgsOCBAQAogCiAgICAgZGVmIHRlc3RfbXRpbWUoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIGNoYW5nZSBpbiBtdGltZSBsZWFkcyB0byBhIG5ldyAucHljLgotICAgICAgICBzZWxmLnJlY3JlYXRpb25fY2hlY2soc3RydWN0LnBhY2soJzw0c2wnLCBpbXAuZ2V0X21hZ2ljKCksIDEpKQorICAgICAgICBzZWxmLnJlY3JlYXRpb25fY2hlY2soc3RydWN0LnBhY2soJzw0c2wnLCBpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkKIAogICAgIGRlZiB0ZXN0X21hZ2ljX251bWJlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGEgY2hhbmdlIGluIG10aW1lIGxlYWRzIHRvIGEgbmV3IC5weWMuCkBAIC05NywxNCArOTksMTQgQEAKICAgICAgICAgIyBpbnRlcnByZXRlcidzIGNyZWF0ZXMgdGhlIGNvcnJlY3QgZmlsZSBuYW1lcwogICAgICAgICBvcHRpbWl6ZSA9IDEgaWYgX19kZWJ1Z19fIGVsc2UgMAogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCBvcHRpbWl6ZT1vcHRpbWl6ZSkKLSAgICAgICAgY2FjaGVkID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgIGNhY2hlZCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNhY2hlZCkpCi0gICAgICAgIGNhY2hlZDIgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgIGNhY2hlZDIgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLnNvdXJjZV9wYXRoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPW5vdCBvcHRpbWl6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNhY2hlZDIpKQotICAgICAgICBjYWNoZWQzID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICBjYWNoZWQzID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShjYWNoZWQzKSkKIAogCkBAIC0xNTIsMTAgKzE1NCwxMiBAQAogICAgICAgICByZXR1cm4gcmMsIG91dCwgZXJyCiAKICAgICBkZWYgYXNzZXJ0Q29tcGlsZWQoc2VsZiwgZm4pOgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKGZuKSkpCisgICAgICAgIHBhdGggPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHBhdGgpKQogCiAgICAgZGVmIGFzc2VydE5vdENvbXBpbGVkKHNlbGYsIGZuKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZm4pKSkKKyAgICAgICAgcGF0aCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZuKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHBhdGgpKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5fY2xlYW51cCkKQEAgLTE5MCw4ICsxOTQsOCBAQAogICAgICAgICAgICAgICAgIFsnLW0nLCAnY29tcGlsZWFsbCcsICctcScsIHNlbGYucGtnZGlyXSkpCiAgICAgICAgICAgICAjIFZlcmlmeSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGNvbnRlbnRzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNlbGYucGtnZGlyX2NhY2hlZGlyKSkKLSAgICAgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKGJhc2UuZm9ybWF0KGltcC5nZXRfdGFnKCksIGV4dCkgZm9yIGJhc2UgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19pbml0X18ue30ue30nLCAnYmFyLnt9Lnt9JykpCisgICAgICAgICAgICBleHBlY3RlZCA9IHNvcnRlZChiYXNlLmZvcm1hdChzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnLCBleHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiAoJ19faW5pdF9fLnt9Lnt9JywgJ2Jhci57fS57fScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob3MubGlzdGRpcihzZWxmLnBrZ2Rpcl9jYWNoZWRpcikpLCBleHBlY3RlZCkKICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZXJlIGFyZSBubyAucHljIGZpbGVzIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShbZm4gZm9yIGZuIGluIG9zLmxpc3RkaXIoc2VsZi5wa2dkaXIpCkBAIC0yMjQsNyArMjI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2ZvcmNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJ1bk9LKCctcScsIHNlbGYucGtnZGlyKQotICAgICAgICBweWNwYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuYmFyZm4pCisgICAgICAgIHB5Y3BhdGggPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLmJhcmZuKQogICAgICAgICAjIHNldCBhdGltZS9tdGltZSBiYWNrd2FyZCB0byBhdm9pZCBmaWxlIHRpbWVzdGFtcCByZXNvbHV0aW9uIGlzc3VlcwogICAgICAgICBvcy51dGltZShweWNwYXRoLCAodGltZS50aW1lKCktNjAsKSoyKQogICAgICAgICBtdGltZSA9IG9zLnN0YXQocHljcGF0aCkuc3RfbXRpbWUKQEAgLTI4OCw3ICsyOTIsNyBAQAogICAgICAgICBiYXpmbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQoc2VsZi5wa2dkaXIsICdiYXonLCAncmFpc2UgRXhjZXB0aW9uJykKICAgICAgICAgc2VsZi5hc3NlcnRSdW5PSygnLXEnLCAnLWQnLCAnZGluc2RhbGUnLCBzZWxmLnBrZ2RpcikKICAgICAgICAgZm4gPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHNlbGYucGtnZGlyLCAnYmluZycsICdpbXBvcnQgYmF6JykKLSAgICAgICAgcHljID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGJhemZuKQorICAgICAgICBweWMgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShiYXpmbikKICAgICAgICAgb3MucmVuYW1lKHB5Yywgb3MucGF0aC5qb2luKHNlbGYucGtnZGlyLCAnYmF6LnB5YycpKQogICAgICAgICBvcy5yZW1vdmUoYmF6Zm4pCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKGZuKQpAQCAtMjk5LDcgKzMwMyw3IEBACiAgICAgICAgICAgICAnLWknLCBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdub3N1Y2hmaWxlJyksIHNlbGYucGtnZGlyKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgYidycm9yLipub3N1Y2hmaWxlJykKICAgICAgICAgc2VsZi5hc3NlcnROb3RSZWdleChlcnIsIGInVHJhY2ViYWNrJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UoCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGtnZGlyX2NhY2hlZGlyKSkpCiAKICAgICBkZWYgdGVzdF9pbmNsdWRlX2ZpbGVfd2l0aF9hcmcoc2VsZik6CkBAIC0zNTYsMTMgKzM2MCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCBiIkNhbid0IGxpc3QgJ2JhZGZpbGVuYW1lJyIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBDb21tYW5kTGluZVRlc3RzLAotICAgICAgICBDb21waWxlYWxsVGVzdHMsCi0gICAgICAgIEVuY29kaW5nVGVzdCwKLSAgICAgICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQppbmRleCA2YjM0ZGRjLi4yYTg1YmY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CkBAIC0yMjEsNiArMjIxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wbGV4LCBPUyhOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wbGV4LCBOUyhOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wbGV4LCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wbGV4LCBOUygxLjUpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBsZXgsIE5TKDEpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY29tcGxleCgiMSsxMGoiKSwgMSsxMGopCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY29tcGxleCgxMCksIDEwKzBqKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCA2YWU0NTBkLi40YWQzMzA5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtMTUsNiArMTUsNyBAQAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKIAogZnJvbSBjb25jdXJyZW50IGltcG9ydCBmdXR1cmVzCiBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZSBpbXBvcnQgKApAQCAtNTIsNiArNTMsMTEgQEAKICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAogCitjbGFzcyBNeU9iamVjdChvYmplY3QpOgorICAgIGRlZiBteV9tZXRob2Qoc2VsZik6CisgICAgICAgIHBhc3MKKworCiBjbGFzcyBFeGVjdXRvck1peGluOgogICAgIHdvcmtlcl9jb3VudCA9IDUKIApAQCAtMzk2LDYgKzQwMiwyMiBAQAogICAgICAgICBzZWxmLmV4ZWN1dG9yLm1hcChzdHIsIFsyXSAqIChzZWxmLndvcmtlcl9jb3VudCArIDEpKQogICAgICAgICBzZWxmLmV4ZWN1dG9yLnNodXRkb3duKCkKIAorICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfbm9fc3RhbGVfcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTYyODQ6IGNoZWNrIHRoYXQgdGhlIGV4ZWN1dG9ycyBkb24ndCB1bm5lY2Vzc2FyaWx5IGhhbmcgb250bworICAgICAgICAjIHJlZmVyZW5jZXMuCisgICAgICAgIG15X29iamVjdCA9IE15T2JqZWN0KCkKKyAgICAgICAgbXlfb2JqZWN0X2NvbGxlY3RlZCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIG15X29iamVjdF9jYWxsYmFjayA9IHdlYWtyZWYucmVmKAorICAgICAgICAgICAgbXlfb2JqZWN0LCBsYW1iZGEgb2JqOiBteV9vYmplY3RfY29sbGVjdGVkLnNldCgpKQorICAgICAgICAjIERlbGliZXJhdGVseSBkaXNjYXJkaW5nIHRoZSBmdXR1cmUuCisgICAgICAgIHNlbGYuZXhlY3V0b3Iuc3VibWl0KG15X29iamVjdC5teV9tZXRob2QpCisgICAgICAgIGRlbCBteV9vYmplY3QKKworICAgICAgICBjb2xsZWN0ZWQgPSBteV9vYmplY3RfY29sbGVjdGVkLndhaXQodGltZW91dD01LjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAiU3RhbGUgcmVmZXJlbmNlIG5vdCBjb2xsZWN0ZWQgd2l0aGluIHRpbWVvdXQuIikKKwogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3JUZXN0KFRocmVhZFBvb2xNaXhpbiwgRXhlY3V0b3JUZXN0KToKICAgICBkZWYgdGVzdF9tYXBfc3VibWl0c193aXRob3V0X2l0ZXJhdGlvbihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQppbmRleCBlNTJlZDkxLi5hMzhjYzQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CkBAIC01OTQsMTAgKzU5NCwyOCBAQAogICAgICAgICBzdGFjay5wdXNoKGNtKQogICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIGNtKQogCitjbGFzcyBUZXN0SWdub3JlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSMgVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB0aGUgdGVzdCBhY3R1YWxseSBydW4gdW5kZXIgcmVncnRlc3QucHkhCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisgICAgZGVmIHRlc3Rfbm9fZXhjZXB0aW9uKHNlbGYpOgorCisgICAgICAgIHdpdGggaWdub3JlZChWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG93KDIsIDUpLCAzMikKKworICAgIGRlZiB0ZXN0X2V4YWN0X2V4Y2VwdGlvbihzZWxmKToKKworICAgICAgICB3aXRoIGlnbm9yZWQoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGxlbig1KQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfZXhjZXB0aW9uX2FyZ3Moc2VsZik6CisKKyAgICAgICAgd2l0aCBpZ25vcmVkKFplcm9EaXZpc2lvbkVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgbGVuKDUpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faGllcmFyY2h5KHNlbGYpOgorCisgICAgICAgIHdpdGggaWdub3JlZChMb29rdXBFcnJvcik6CisgICAgICAgICAgICAnSGVsbG8nWzUwXQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IDU2NzY2NjguLmMzZWI3ZmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtNiw5ICs2LDExIEBACiAjIHJpcCBvZmYgYWxsIGludGVyZXN0aW5nIHN0dWZmIGZyb20gdGVzdF9wcm9maWxlCiBpbXBvcnQgY1Byb2ZpbGUKIGZyb20gdGVzdC50ZXN0X3Byb2ZpbGUgaW1wb3J0IFByb2ZpbGVUZXN0LCByZWdlbmVyYXRlX2V4cGVjdGVkX291dHB1dAorZnJvbSB0ZXN0LnByb2ZpbGVlIGltcG9ydCB0ZXN0ZnVuYwogCiBjbGFzcyBDUHJvZmlsZVRlc3QoUHJvZmlsZVRlc3QpOgogICAgIHByb2ZpbGVyY2xhc3MgPSBjUHJvZmlsZS5Qcm9maWxlCisgICAgcHJvZmlsZXJtb2R1bGUgPSBjUHJvZmlsZQogICAgIGV4cGVjdGVkX21heF9vdXRwdXQgPSAie2J1aWx0LWluIG1ldGhvZCBtYXh9IgogCiAgICAgZGVmIGdldF9leHBlY3RlZF9vdXRwdXQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQppbmRleCBjZmI3MzQxLi42MjRkNzAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKQEAgLTEsMTEgKzEsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotZGVmIHNldFVwTW9kdWxlKCk6Ci0gICAgIyB0aGlzIGltcG9ydCB3aWxsIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0IGlmIF9jcnlwdCBkb2Vzbid0IGV4aXN0LAotICAgICMgc28gaXQgaGFzIHRvIGJlIGRvbmUgaW4gc2V0VXBNb2R1bGUgZm9yIHRlc3QgZGlzY292ZXJ5IHRvIHdvcmsKLSAgICBnbG9iYWwgY3J5cHQKLSAgICBjcnlwdCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3J5cHQnKQorY3J5cHQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2NyeXB0JykKIAogY2xhc3MgQ3J5cHRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5IGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKaW5kZXggNWUyODU4Ni4uNTU5ZTUxZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jc3YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKQEAgLTEzNiwxMiArMTM2LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDEwOwogICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgogICAgICAgICAgICAgICAgIGlmIGkgPiAyOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHNlbGYuX3dyaXRlX3Rlc3QsIEJhZExpc3QoKSwgJycpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5fd3JpdGVfdGVzdCwgQmFkTGlzdCgpLCAnJykKICAgICAgICAgY2xhc3MgQmFkSXRlbToKICAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgc2VsZi5fd3JpdGVfdGVzdCwgW0JhZEl0ZW0oKV0sICcnKQorICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5fd3JpdGVfdGVzdCwgW0JhZEl0ZW0oKV0sICcnKQogCiAgICAgZGVmIHRlc3Rfd3JpdGVfYmlnZmllbGQoc2VsZik6CiAgICAgICAgICMgVGhpcyBleGVyY2lzZXMgdGhlIGJ1ZmZlciByZWFsbG9jIGZ1bmN0aW9uYWxpdHkKQEAgLTE4Niw5ICsxODYsOSBAQAogICAgIGRlZiB0ZXN0X3dyaXRlcm93cyhzZWxmKToKICAgICAgICAgY2xhc3MgQnJva2VuRmlsZToKICAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBidWYpOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yCiAgICAgICAgIHdyaXRlciA9IGNzdi53cml0ZXIoQnJva2VuRmlsZSgpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCB3cml0ZXIud3JpdGVyb3dzLCBbWydhJ11dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCB3cml0ZXIud3JpdGVyb3dzLCBbWydhJ11dKQogCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiLCBuZXdsaW5lPScnKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgd3JpdGVyID0gY3N2LndyaXRlcihmaWxlb2JqKQpAQCAtMzA4LDYgKzMwOCwxNSBAQAogICAgICAgICAgICAgZm9yIGksIHJvdyBpbiBlbnVtZXJhdGUoY3N2LnJlYWRlcihmaWxlb2JqKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3csIHJvd3NbaV0pCiAKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfZXNjYXBlZF91bnF1b3RlZF9uZXdsaW5lcyhzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIsIG5ld2xpbmU9JycpIGFzIGZpbGVvYmo6CisgICAgICAgICAgICB3cml0ZXIgPSBjc3Yud3JpdGVyKGZpbGVvYmoscXVvdGluZz1jc3YuUVVPVEVfTk9ORSxlc2NhcGVjaGFyPSJcXCIpCisgICAgICAgICAgICByb3dzID0gW1snYVxuYicsJ2InXSxbJ2MnLCd4XHJcbmQnXV0KKyAgICAgICAgICAgIHdyaXRlci53cml0ZXJvd3Mocm93cykKKyAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQorICAgICAgICAgICAgZm9yIGksIHJvdyBpbiBlbnVtZXJhdGUoY3N2LnJlYWRlcihmaWxlb2JqLHF1b3Rpbmc9Y3N2LlFVT1RFX05PTkUsZXNjYXBlY2hhcj0iXFwiKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3cscm93c1tpXSkKKwogY2xhc3MgVGVzdERpYWxlY3RSZWdpc3RyeSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVnaXN0cnlfYmFkYXJncyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YubGlzdF9kaWFsZWN0cywgTm9uZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKaW5kZXggMjQzYTBhZi4uMWM1Nzc3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICAgcmV0dXJuIGtleXMKIAogICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzZWxmLm1vZHVsZS5lcnJvciwgSU9FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNlbGYubW9kdWxlLmVycm9yLCBPU0Vycm9yKSkKIAogICAgIGRlZiB0ZXN0X2FueWRibV9ub3RfZXhpc3Rpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRibS5lcnJvciwgZGJtLm9wZW4sIF9mbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQppbmRleCA1MGE5YWQ0Li5hZTM2ODkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CkBAIC0yOTAsNyArMjkwLDYgQEAKICAgICAgICAgZ2xvYmFsIHNraXBfZXhwZWN0ZWQKICAgICAgICAgaWYgc2tpcF9leHBlY3RlZDoKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0Ci0gICAgICAgICAgICByZXR1cm4KICAgICAgICAgd2l0aCBvcGVuKGZpbGUpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ1xyXG4nLCAnJykucmVwbGFjZSgnXG4nLCAnJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IGE4NDg3ZDIuLjdiZmYxZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtNTQzLDggKzU0Myw4IEBACiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgY2hlY2soZGVxdWUoKSwgYmFzZXNpemUgKyBibG9ja3NpemUpCiAgICAgICAgIGNoZWNrKGRlcXVlKCdhJyksIGJhc2VzaXplICsgYmxvY2tzaXplKQotICAgICAgICBjaGVjayhkZXF1ZSgnYScgKiAoQkxPQ0tMRU4gLy8gMikpLCBiYXNlc2l6ZSArIGJsb2Nrc2l6ZSkKLSAgICAgICAgY2hlY2soZGVxdWUoJ2EnICogKEJMT0NLTEVOIC8vIDIgKyAxKSksIGJhc2VzaXplICsgMiAqIGJsb2Nrc2l6ZSkKKyAgICAgICAgY2hlY2soZGVxdWUoJ2EnICogKEJMT0NLTEVOIC0gMSkpLCBiYXNlc2l6ZSArIGJsb2Nrc2l6ZSkKKyAgICAgICAgY2hlY2soZGVxdWUoJ2EnICogQkxPQ0tMRU4pLCBiYXNlc2l6ZSArIDIgKiBibG9ja3NpemUpCiAgICAgICAgIGNoZWNrKGRlcXVlKCdhJyAqICg0MiAqIEJMT0NLTEVOKSksIGJhc2VzaXplICsgNDMgKiBibG9ja3NpemUpCiAKIGNsYXNzIFRlc3RWYXJpb3VzSXRlcmF0b3JBcmdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CmluZGV4IDM3NzYzODkuLmYwZDZkMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQpAQCAtMTc4OSw2ICsxNzg5LDcgQEAKICAgICAgICAgICAgICgiX190cnVuY19fIiwgaW50LCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2NlaWxfXyIsIG1hdGguY2VpbCwgemVybywgc2V0KCksIHt9KSwKICAgICAgICAgICAgICgiX19kaXJfXyIsIGRpciwgZW1wdHlfc2VxLCBzZXQoKSwge30pLAorICAgICAgICAgICAgKCJfX3JvdW5kX18iLCByb3VuZCwgemVybywgc2V0KCksIHt9KSwKICAgICAgICAgICAgIF0KIAogICAgICAgICBjbGFzcyBDaGVja2VyKG9iamVjdCk6CkBAIC0yMjQ5LDcgKzIyNTAsOSBAQAogICAgICAgICBtaW5zdGFuY2UgPSBNKCJtIikKICAgICAgICAgbWluc3RhbmNlLmIgPSAyCiAgICAgICAgIG1pbnN0YW5jZS5hID0gMQotICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIGRpcihtaW5zdGFuY2UpIGlmIHggbm90IGluIFsiX19uYW1lX18iLCAiX19kb2NfXyJdXQorICAgICAgICBkZWZhdWx0X2F0dHJpYnV0ZXMgPSBbJ19fbmFtZV9fJywgJ19fZG9jX18nLCAnX19wYWNrYWdlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nXQorICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIGRpcihtaW5zdGFuY2UpIGlmIHggbm90IGluIGRlZmF1bHRfYXR0cmlidXRlc10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lcywgWydhJywgJ2InXSkKIAogICAgICAgICBjbGFzcyBNMihNKToKQEAgLTM3MzMsMTggKzM3MzYsOCBAQAogICAgICAgICAjIGJ1ZykuCiAgICAgICAgIGRlbCBjCiAKLSAgICAgICAgIyBJZiB0aGF0IGRpZG4ndCBibG93IHVwLCBpdCdzIGFsc28gaW50ZXJlc3RpbmcgdG8gc2VlIHdoZXRoZXIgY2xlYXJpbmcKLSAgICAgICAgIyB0aGUgbGFzdCBjb250YWluZXIgc2xvdCB3b3JrczogdGhhdCB3aWxsIGF0dGVtcHQgdG8gZGVsZXRlIGMgYWdhaW4sCi0gICAgICAgICMgd2hpY2ggd2lsbCBjYXVzZSBjIHRvIGdldCBhcHBlbmRlZCBiYWNrIHRvIHRoZSBjb250YWluZXIgYWdhaW4KLSAgICAgICAgIyAiZHVyaW5nIiB0aGUgZGVsLiAgKE9uIG5vbi1DUHl0aG9uIGltcGxlbWVudGF0aW9ucywgaG93ZXZlciwgX19kZWxfXwotICAgICAgICAjIGlzIHR5cGljYWxseSBub3QgY2FsbGVkIGFnYWluLikKICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oQy5jb250YWluZXIpLCAxKQotICAgICAgICBkZWwgQy5jb250YWluZXJbLTFdCi0gICAgICAgIGlmIHN1cHBvcnQuY2hlY2tfaW1wbF9kZXRhaWwoKToKLSAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihDLmNvbnRhaW5lciksIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuY29udGFpbmVyWy0xXS5hdHRyLCA0MikKIAogICAgICAgICAjIE1ha2UgYyBtb3J0YWwgYWdhaW4sIHNvIHRoYXQgdGhlIHRlc3QgZnJhbWV3b3JrIHdpdGggLWwgZG9lc24ndCByZXBvcnQKICAgICAgICAgIyBpdCBhcyBhIGxlYWsuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKaW5kZXggYmVmNGUxOC4uZWMzNTBjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQpAQCAtOCw3ICs4LDcgQEAKIHRyeToKICAgICBzZWxlY3QuZGV2cG9sbAogZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzZWxlY3QuZGV2cG9sbCBub3QgZGVmaW5lZCAtLSBza2lwcGluZyB0ZXN0X2RldnBvbGwiKQorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzZWxlY3QuZGV2cG9sbCBub3QgZGVmaW5lZCIpCiAKIAogZGVmIGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIGZsYWcpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCAxYmNkNjkzLi5hMWM2NTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSwxMSArMSwxMyBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LmJ5dGVjb2RlX2hlbHBlciBpbXBvcnQgQnl0ZWNvZGVUZXN0Q2FzZQogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGRpcwogaW1wb3J0IGlvCitpbXBvcnQgdHlwZXMKIAogY2xhc3MgX0M6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgpAQCAtMjIsMTIgKzI0LDEyIEBACiAiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKIAogZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAotICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAxICgxKQotICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQotICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAyICg9PSkKLSAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgMCAoMCkKKyAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgOSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDApCiAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKICIiIgogCkBAIC00OCwxMSArNTAsMTEgQEAKIAogCiBkaXNfZl9jb19jb2RlID0gIiIiXAotICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAwICgwKQotICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAwICgwKQotICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQogICAgICAgICAgIDkgUE9QX1RPUAotICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCiAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKICIiIgogCkBAIC0yOTgsMjkgKzMwMCwxNiBAQAogQXJndW1lbnQgY291bnQ6ICAgIDEKIEt3LW9ubHkgYXJndW1lbnRzOiAwCiBOdW1iZXIgb2YgbG9jYWxzOiAgMQotU3RhY2sgc2l6ZTogICAgICAgIDQKK1N0YWNrIHNpemU6ICAgICAgICAzCiBGbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIE5PRlJFRQogQ29uc3RhbnRzOgogICAgMDogJXIKLSAgIDE6ICdfX2Z1bmNfXycKLSAgIDI6ICdfX2NvZGVfXycKLSAgIDM6ICc8Y29kZV9pbmZvPicKLSAgIDQ6ICdjb19jb2RlJwotICAgNTogImRvbid0IGtub3cgaG93IHRvIGRpc2Fzc2VtYmxlICUlcyBvYmplY3RzIgotJXNOYW1lczoKLSAgIDA6IGhhc2F0dHIKLSAgIDE6IF9fZnVuY19fCi0gICAyOiBfX2NvZGVfXwotICAgMzogaXNpbnN0YW5jZQotICAgNDogc3RyCi0gICA1OiBfdHJ5X2NvbXBpbGUKLSAgIDY6IF9mb3JtYXRfY29kZV9pbmZvCi0gICA3OiBUeXBlRXJyb3IKLSAgIDg6IHR5cGUKLSAgIDk6IF9fbmFtZV9fCitOYW1lczoKKyAgIDA6IF9mb3JtYXRfY29kZV9pbmZvCisgICAxOiBfZ2V0X2NvZGVfb2JqZWN0CiBWYXJpYWJsZSBuYW1lczoKLSAgIDA6IHgiIiIgJSAoKCdGb3JtYXR0ZWQgZGV0YWlscyBvZiBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUuJywgJyAgIDY6IE5vbmVcbicpCi0gICAgICAgICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA8IDIgZWxzZSAoTm9uZSwgJycpKQorICAgMDogeCIiIiAlICgoJ0Zvcm1hdHRlZCBkZXRhaWxzIG9mIG1ldGhvZHMsIGZ1bmN0aW9ucywgb3IgY29kZS4nLCkKKyAgICAgICAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplIDwgMiBlbHNlIChOb25lLCkpCiAKIEBzdGF0aWNtZXRob2QKIGRlZiB0cmlja3koeCwgeSwgej1UcnVlLCAqYXJncywgYywgZCwgZT1bXSwgKiprd2RzKToKQEAgLTM4NCw3ICszNzMsNyBAQAogCiBjb2RlX2luZm9fZXhwcl9zdHIgPSAiIiJcCiBOYW1lOiAgICAgICAgICAgICAgPG1vZHVsZT4KLUZpbGVuYW1lOiAgICAgICAgICA8Y29kZV9pbmZvPgorRmlsZW5hbWU6ICAgICAgICAgIDxkaXNhc3NlbWJseT4KIEFyZ3VtZW50IGNvdW50OiAgICAwCiBLdy1vbmx5IGFyZ3VtZW50czogMAogTnVtYmVyIG9mIGxvY2FsczogIDAKQEAgLTM5Nyw3ICszODYsNyBAQAogCiBjb2RlX2luZm9fc2ltcGxlX3N0bXRfc3RyID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIDxtb2R1bGU+Ci1GaWxlbmFtZTogICAgICAgICAgPGNvZGVfaW5mbz4KK0ZpbGVuYW1lOiAgICAgICAgICA8ZGlzYXNzZW1ibHk+CiBBcmd1bWVudCBjb3VudDogICAgMAogS3ctb25seSBhcmd1bWVudHM6IDAKIE51bWJlciBvZiBsb2NhbHM6ICAwCkBAIC00MTEsNyArNDAwLDcgQEAKIAogY29kZV9pbmZvX2NvbXBvdW5kX3N0bXRfc3RyID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIDxtb2R1bGU+Ci1GaWxlbmFtZTogICAgICAgICAgPGNvZGVfaW5mbz4KK0ZpbGVuYW1lOiAgICAgICAgICA8ZGlzYXNzZW1ibHk+CiBBcmd1bWVudCBjb3VudDogICAgMAogS3ctb25seSBhcmd1bWVudHM6IDAKIE51bWJlciBvZiBsb2NhbHM6ICAwCkBAIC00NDUsNiArNDM0LDkgQEAKICAgICAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgICAgIGRpcy5zaG93X2NvZGUoeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LmdldHZhbHVlKCksIGV4cGVjdGVkKyJcbiIpCisgICAgICAgICAgICBvdXRwdXQgPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBkaXMuc2hvd19jb2RlKHgsIGZpbGU9b3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF9jb2RlX2luZm9fb2JqZWN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5jb2RlX2luZm8sIG9iamVjdCgpKQpAQCAtNDUzLDggKzQ0NSwyODkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMucHJldHR5X2ZsYWdzKDApLCAnMHgwJykKIAogCisjIEZvZGRlciBmb3IgaW5zdHJ1Y3Rpb24gaW50cm9zcGVjdGlvbiB0ZXN0cworIyAgIEVkaXRpbmcgYW55IG9mIHRoZXNlIG1heSByZXF1aXJlIHJlY2FsY3VsYXRpbmcgdGhlIGV4cGVjdGVkIG91dHB1dAorZGVmIG91dGVyKGE9MSwgYj0yKToKKyAgICBkZWYgZihjPTMsIGQ9NCk6CisgICAgICAgIGRlZiBpbm5lcihlPTUsIGY9Nik6CisgICAgICAgICAgICBwcmludChhLCBiLCBjLCBkLCBlLCBmKQorICAgICAgICBwcmludChhLCBiLCBjLCBkKQorICAgICAgICByZXR1cm4gaW5uZXIKKyAgICBwcmludChhLCBiLCAnJywgMSwgW10sIHt9LCAiSGVsbG8gd29ybGQhIikKKyAgICByZXR1cm4gZgorCitkZWYganVtcHkoKToKKyAgICAjIFRoaXMgd29uJ3QgYWN0dWFsbHkgcnVuIChidXQgdGhhdCdzIE9LLCB3ZSBvbmx5IGRpc2Fzc2VtYmxlIGl0KQorICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgcHJpbnQoaSkKKyAgICAgICAgaWYgaSA8IDQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpID4gNjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoIkkgY2FuIGhheiBlbHNlIGNsYXVzZT8iKQorICAgIHdoaWxlIGk6CisgICAgICAgIHByaW50KGkpCisgICAgICAgIGkgLT0gMQorICAgICAgICBpZiBpID4gNjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGkgPCA0OgorICAgICAgICAgICAgYnJlYWsKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyIpCisgICAgdHJ5OgorICAgICAgICAxIC8gMAorICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgcHJpbnQoIkhlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4iKQorICAgIGVsc2U6CisgICAgICAgIHdpdGggaSBhcyBkb2RneToKKyAgICAgICAgICAgIHByaW50KCJOZXZlciByZWFjaCB0aGlzIikKKyAgICBmaW5hbGx5OgorICAgICAgICBwcmludCgiT0ssIG5vdyB3ZSdyZSBkb25lIikKKworIyBFbmQgZm9kZGVyIGZvciBvcGluZm8gZ2VuZXJhdGlvbiB0ZXN0cworZXhwZWN0ZWRfb3V0ZXJfb2Zmc2V0ID0gMSAtIG91dGVyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vCitleHBlY3RlZF9qdW1weV9vZmZzZXQgPSAxIC0ganVtcHkuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KK2NvZGVfb2JqZWN0X2YgPSBvdXRlci5fX2NvZGVfXy5jb19jb25zdHNbM10KK2NvZGVfb2JqZWN0X2lubmVyID0gY29kZV9vYmplY3RfZi5jb19jb25zdHNbM10KKworIyBUaGUgZm9sbG93aW5nIGxpbmVzIGFyZSB1c2VmdWwgdG8gcmVnZW5lcmF0ZSB0aGUgZXhwZWN0ZWQgcmVzdWx0cyBhZnRlcgorIyBlaXRoZXIgdGhlIGZvZGRlciBpcyBtb2RpZmllZCBvciB0aGUgYnl0ZWNvZGUgZ2VuZXJhdGlvbiBjaGFuZ2VzCisjIEFmdGVyIHJlZ2VuZXJhdGlvbiwgdXBkYXRlIHRoZSByZWZlcmVuY2VzIHRvIGNvZGVfb2JqZWN0X2YgYW5kCisjIGNvZGVfb2JqZWN0X2lubmVyIGJlZm9yZSByZXJ1bm5pbmcgdGhlIHRlc3RzCisKKyNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIsIGxpbmVfb2Zmc2V0PWV4cGVjdGVkX291dGVyX29mZnNldCkKKyNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX291dGVyID0gW1xuICAnLAorICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpLCBsaW5lX29mZnNldD1leHBlY3RlZF9vdXRlcl9vZmZzZXQpCisjcHJpbnQoJ2V4cGVjdGVkX29waW5mb19mID0gW1xuICAnLAorICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpKCksIGxpbmVfb2Zmc2V0PWV4cGVjdGVkX291dGVyX29mZnNldCkKKyNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX2lubmVyID0gW1xuICAnLAorICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhqdW1weSwgbGluZV9vZmZzZXQ9ZXhwZWN0ZWRfanVtcHlfb2Zmc2V0KQorI3ByaW50KCdleHBlY3RlZF9vcGluZm9fanVtcHkgPSBbXG4gICcsCisgICAgICAjJyxcbiAgJy5qb2luKG1hcChzdHIsIF9pbnN0cnVjdGlvbnMpKSwgJyxcbl0nLCBzZXA9JycpCisKKworSW5zdHJ1Y3Rpb24gPSBkaXMuSW5zdHJ1Y3Rpb24KK2V4cGVjdGVkX29waW5mb19vdXRlciA9IFsKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0zLCBhcmdyZXByPSczJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9mLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfZiksIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYnIiwgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0nJywgYXJncmVwcj0iJyciLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTM5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTElTVCcsIG9wY29kZT0xMDMsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTUFQJywgb3Bjb2RlPTEwNSwgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9NDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0nSGVsbG8gd29ybGQhJywgYXJncmVwcj0iJ0hlbGxvIHdvcmxkISciLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTcsIGFyZ3ZhbD03LCBhcmdyZXByPSc3IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTU1LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorXQorCitleHBlY3RlZF9vcGluZm9fZiA9IFsKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD01LCBhcmdyZXByPSc1Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfaW5uZXIsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9pbm5lciksIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInIiwgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JzQgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD01Miwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKK10KKworZXhwZWN0ZWRfb3BpbmZvX2lubmVyID0gWworICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0wLCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0nZScsIGFyZ3JlcHI9J2UnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MSwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NiwgYXJndmFsPTYsIGFyZ3JlcHI9JzYgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKK10KKworZXhwZWN0ZWRfb3BpbmZvX2p1bXB5ID0gWworICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NzQsIGFyZ3ZhbD03NywgYXJncmVwcj0ndG8gNzcnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTUwLCBhcmd2YWw9NjYsIGFyZ3JlcHI9J3RvIDY2Jywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTksIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjksIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NDcsIGFyZ3ZhbD00NywgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NDEsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MCwgYXJndmFsPTQ3LCBhcmdyZXByPSd0byA0NycsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTQ3LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTksIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTYzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTY3LCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD03Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTc0LCBhcmd2YWw9MTU0LCBhcmdyZXByPSd0byAxNTQnLCBvZmZzZXQ9NzcsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTQzLCBhcmd2YWw9MTQzLCBhcmdyZXByPScnLCBvZmZzZXQ9ODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTkyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9OTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MTA5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEyNCwgYXJndmFsPTEyNCwgYXJncmVwcj0nJywgb2Zmc2V0PTExNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9ODAsIGFyZ3ZhbD04MCwgYXJncmVwcj0nJywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MCwgYXJndmFsPTEyNCwgYXJncmVwcj0ndG8gMTI0Jywgb2Zmc2V0PTEyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MTI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTEzMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzYsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNDQsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTQ3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xNTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzIsIGFyZ3ZhbD0yMjksIGFyZ3JlcHI9J3RvIDIyOScsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xNzIsIGFyZ3JlcHI9J3RvIDE3MicsIG9mZnNldD0xNTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTE2Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTIwMCwgYXJncmVwcj0ndG8gMjAwJywgb2Zmc2V0PTE2OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTE3Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE5OSwgYXJndmFsPTE5OSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xODUsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNiwgYXJndmFsPTIyNSwgYXJncmVwcj0ndG8gMjI1Jywgb2Zmc2V0PTE5Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMjMsIGFyZ3JlcHI9J3RvIDIyMycsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjA5LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTI0MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjQzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCitdCisKK2NsYXNzIEluc3RydWN0aW9uVGVzdHMoQnl0ZWNvZGVUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfb3V0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Qnl0ZWNvZGVFeGFjdGx5TWF0Y2hlcyhvdXRlciwgZXhwZWN0ZWRfb3BpbmZvX291dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQ9ZXhwZWN0ZWRfb3V0ZXJfb2Zmc2V0KQorCisgICAgZGVmIHRlc3RfbmVzdGVkKHNlbGYpOgorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpOgorICAgICAgICAgICAgZiA9IG91dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRCeXRlY29kZUV4YWN0bHlNYXRjaGVzKGYsIGV4cGVjdGVkX29waW5mb19mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQ9ZXhwZWN0ZWRfb3V0ZXJfb2Zmc2V0KQorCisgICAgZGVmIHRlc3RfZG91Ymx5X25lc3RlZChzZWxmKToKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKToKKyAgICAgICAgICAgIGlubmVyID0gb3V0ZXIoKSgpCisgICAgICAgIHNlbGYuYXNzZXJ0Qnl0ZWNvZGVFeGFjdGx5TWF0Y2hlcyhpbm5lciwgZXhwZWN0ZWRfb3BpbmZvX2lubmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQ9ZXhwZWN0ZWRfb3V0ZXJfb2Zmc2V0KQorCisgICAgZGVmIHRlc3RfanVtcHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Qnl0ZWNvZGVFeGFjdGx5TWF0Y2hlcyhqdW1weSwgZXhwZWN0ZWRfb3BpbmZvX2p1bXB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQ9ZXhwZWN0ZWRfanVtcHlfb2Zmc2V0KQorCitjbGFzcyBCeXRlY29kZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBmdW5jdGlvbiwgbWV0aG9kLCBjb2RlIHN0cmluZyBhbmQgY29kZSBvYmplY3QKKyAgICAgICAgZm9yIG9iaiBpbiBbX2YsIF9DKDEpLl9faW5pdF9fLCAiYT0xIiwgX2YuX19jb2RlX19dOgorICAgICAgICAgICAgYiA9IGRpcy5CeXRlY29kZShvYmopCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYi5jb2Rlb2JqLCB0eXBlcy5Db2RlVHlwZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5CeXRlY29kZSwgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9pdGVyYXRpb24oc2VsZik6CisgICAgICAgIGIgPSBkaXMuQnl0ZWNvZGUoX2YpCisgICAgICAgIGZvciBpbnN0ciBpbiBiOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluc3RyLCBkaXMuSW5zdHJ1Y3Rpb24pCisKKyAgICAgICAgYXNzZXJ0IGxlbihsaXN0KGIpKSA+IDAgICMgSXRlcmF0aW5nIHNob3VsZCB5aWVsZCBhdCBsZWFzdCAxIGluc3RydWN0aW9uCisKKyAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSAxMDAwCisgICAgICAgIGZvciB4LCBleHBlY3RlZCBpbiBDb2RlSW5mb1Rlc3RzLnRlc3RfcGFpcnM6CisgICAgICAgICAgICBiID0gZGlzLkJ5dGVjb2RlKHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGIuaW5mbygpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfY29kZShzZWxmKToKKyAgICAgICAgYiA9IGRpcy5CeXRlY29kZShfZikKKyAgICAgICAgb3V0cHV0ID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBiLmRpc3BsYXlfY29kZShmaWxlPW91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gW2xpbmUucnN0cmlwKCkgZm9yIGxpbmUgaW4gb3V0cHV0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZGlzX2Yuc3BsaXRsaW5lcygpKQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRGlzVGVzdHMsIENvZGVJbmZvVGVzdHMpCisgICAgcnVuX3VuaXR0ZXN0KERpc1Rlc3RzLCBDb2RlSW5mb1Rlc3RzLCBJbnN0cnVjdGlvblRlc3RzLCBCeXRlY29kZVRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKaW5kZXggOGY4YzdjNy4uZDRmZjA0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQpAQCAtMTQwOSw4ICsxNDA5LDQwIEBACiAgICAgICAgIDIKICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MywgYXR0ZW1wdGVkPTUpCiAKLUZvciB0aGUgcHVycG9zZXMgb2YgUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRSwgdW5leHBlY3RlZCBleGNlcHRpb25zCi1jb3VudCBhcyBmYWlsdXJlczoKK1RoZSBGQUlMX0ZBU1QgZmxhZyBjYXVzZXMgdGhlIHJ1bm5lciB0byBleGl0IGFmdGVyIHRoZSBmaXJzdCBmYWlsaW5nIGV4YW1wbGUsCitzbyBzdWJzZXF1ZW50IGV4YW1wbGVzIGFyZSBub3QgZXZlbiBhdHRlbXB0ZWQ6CisKKyAgICA+Pj4gZmxhZ3MgPSBkb2N0ZXN0LkZBSUxfRkFTVAorICAgID4+PiBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSwgb3B0aW9uZmxhZ3M9ZmxhZ3MpLnJ1bih0ZXN0KQorICAgIC4uLiAjIGRvY3Rlc3Q6ICtFTExJUFNJUworICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICBGaWxlIC4uLiwgbGluZSA1LCBpbiBmCisgICAgRmFpbGVkIGV4YW1wbGU6CisgICAgICAgIHByaW50KDIpICMgZmlyc3QgZmFpbHVyZQorICAgIEV4cGVjdGVkOgorICAgICAgICAyMDAKKyAgICBHb3Q6CisgICAgICAgIDIKKyAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MSwgYXR0ZW1wdGVkPTIpCisKK1NwZWNpZnlpbmcgYm90aCBGQUlMX0ZBU1QgYW5kIFJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUgaXMgZXF1aXZhbGVudCB0bworRkFJTF9GQVNUIG9ubHk6CisKKyAgICA+Pj4gZmxhZ3MgPSBkb2N0ZXN0LkZBSUxfRkFTVCB8IGRvY3Rlc3QuUkVQT1JUX09OTFlfRklSU1RfRkFJTFVSRQorICAgID4+PiBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSwgb3B0aW9uZmxhZ3M9ZmxhZ3MpLnJ1bih0ZXN0KQorICAgIC4uLiAjIGRvY3Rlc3Q6ICtFTExJUFNJUworICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICBGaWxlIC4uLiwgbGluZSA1LCBpbiBmCisgICAgRmFpbGVkIGV4YW1wbGU6CisgICAgICAgIHByaW50KDIpICMgZmlyc3QgZmFpbHVyZQorICAgIEV4cGVjdGVkOgorICAgICAgICAyMDAKKyAgICBHb3Q6CisgICAgICAgIDIKKyAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MSwgYXR0ZW1wdGVkPTIpCisKK0ZvciB0aGUgcHVycG9zZXMgb2YgYm90aCBSRVBPUlRfT05MWV9GSVJTVF9GQUlMVVJFIGFuZCBGQUlMX0ZBU1QsIHVuZXhwZWN0ZWQKK2V4Y2VwdGlvbnMgY291bnQgYXMgZmFpbHVyZXM6CiAKICAgICA+Pj4gZGVmIGYoeCk6CiAgICAgLi4uICAgICByJycnCkBAIC0xNDM3LDYgKzE0NjksMTcgQEAKICAgICAgICAgLi4uCiAgICAgICAgIFZhbHVlRXJyb3I6IDIKICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MywgYXR0ZW1wdGVkPTUpCisgICAgPj4+IGZsYWdzID0gZG9jdGVzdC5GQUlMX0ZBU1QKKyAgICA+Pj4gZG9jdGVzdC5Eb2NUZXN0UnVubmVyKHZlcmJvc2U9RmFsc2UsIG9wdGlvbmZsYWdzPWZsYWdzKS5ydW4odGVzdCkKKyAgICAuLi4gIyBkb2N0ZXN0OiArRUxMSVBTSVMKKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgRmlsZSAuLi4sIGxpbmUgNSwgaW4gZgorICAgIEZhaWxlZCBleGFtcGxlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKDIpICMgZmlyc3QgZmFpbHVyZQorICAgIEV4Y2VwdGlvbiByYWlzZWQ6CisgICAgICAgIC4uLgorICAgICAgICBWYWx1ZUVycm9yOiAyCisgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0yKQogCiBOZXcgb3B0aW9uIGZsYWdzIGNhbiBhbHNvIGJlIHJlZ2lzdGVyZWQsIHZpYSByZWdpc3Rlcl9vcHRpb25mbGFnKCkuICBIZXJlCiB3ZSByZWFjaCBpbnRvIGRvY3Rlc3QncyBpbnRlcm5hbHMgYSBiaXQuCkBAIC0yNTUzLDYgKzI1OTYsMjQwIEBACiAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0xKQogICAgICIiIgogCitkZWYgdGVzdF9DTEkoKTogciIiIgorVGhlIGRvY3Rlc3QgbW9kdWxlIGNhbiBiZSB1c2VkIHRvIHJ1biBkb2N0ZXN0cyBhZ2FpbnN0IGFuIGFyYml0cmFyeSBmaWxlLgorVGhlc2UgdGVzdHMgdGVzdCB0aGlzIENMSSBmdW5jdGlvbmFsaXR5LgorCitXZSdsbCB1c2UgdGhlIHN1cHBvcnQgbW9kdWxlJ3Mgc2NyaXB0X2hlbHBlcnMgZm9yIHRoaXMsIGFuZCB3cml0ZSBhIHRlc3QgZmlsZXMKK3RvIGEgdGVtcCBkaXIgdG8gcnVuIHRoZSBjb21tYW5kIGFnYWluc3QuICBEdWUgdG8gYSBjdXJyZW50IGxpbWl0YXRpb24gaW4KK3NjcmlwdF9oZWxwZXJzLCB0aG91Z2gsIHdlIG5lZWQgYSBsaXR0bGUgdXRpbGl0eSBmdW5jdGlvbiB0byB0dXJuIHRoZSByZXR1cm5lZAorb3V0cHV0IGludG8gc29tZXRoaW5nIHdlIGNhbiBkb2N0ZXN0IGFnYWluc3Q6CisKKyAgICA+Pj4gZGVmIG5vcm1hbGl6ZShzKToKKyAgICAuLi4gICAgIHJldHVybiAnXG4nLmpvaW4ocy5kZWNvZGUoKS5zcGxpdGxpbmVzKCkpCisKK05vdGU6IHdlIGFsc28gcGFzcyBURVJNPScnIHRvIGFsbCB0aGUgYXNzZXJ0X3B5dGhvbiBjYWxscyB0byBhdm9pZCBhIGJ1ZworaW4gdGhlIHJlYWRsaW5lIGxpYnJhcnkgdGhhdCBpcyB0cmlnZ2VyZWQgaW4gdGhlc2UgdGVzdHMgYmVjYXVzZSB3ZSBhcmUKK3J1bm5pbmcgdGhlbSBpbiBhIG5ldyBweXRob24gcHJvY2Vzcy4gIFNlZToKKworICBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLXJlYWRsaW5lLzIwMTMtMDYvbXNnMDAwMDAuaHRtbAorCitXaXRoIHRob3NlIHByZWxpbWluYXJpZXMgb3V0IG9mIHRoZSB3YXksIHdlJ2xsIHN0YXJ0IHdpdGggYSBmaWxlIHdpdGggdHdvCitzaW1wbGUgdGVzdHMgYW5kIG5vIGVycm9ycy4gIFdlJ2xsIHJ1biBib3RoIHRoZSB1bmFkb3JuZWQgZG9jdGVzdCBjb21tYW5kLCBhbmQKK3RoZSB2ZXJib3NlIHZlcnNpb24sIGFuZCB0aGVuIGNoZWNrIHRoZSBvdXRwdXQ6CisKKyAgICA+Pj4gZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCisgICAgPj4+IHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRtcGRpcjoKKyAgICAuLi4gICAgIGZuID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ215ZmlsZS5kb2MnKQorICAgIC4uLiAgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJ1RoaXMgaXMgYSB2ZXJ5IHNpbXBsZSB0ZXN0IGZpbGUuXG4nKQorICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCcgICA+Pj4gMSArIDFcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgIDJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgID4+PiAiYSJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIiAgICdhJ1xuIikKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnXG4nKQorICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCdBbmQgdGhhdCBpcyBpdC5cbicpCisgICAgLi4uICAgICByYzEsIG91dDEsIGVycjEgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCisgICAgLi4uICAgICAgICAgICAgICctbScsICdkb2N0ZXN0JywgZm4sIFRFUk09JycpCisgICAgLi4uICAgICByYzIsIG91dDIsIGVycjIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCisgICAgLi4uICAgICAgICAgICAgICctbScsICdkb2N0ZXN0JywgJy12JywgZm4sIFRFUk09JycpCisKK1dpdGggbm8gYXJndW1lbnRzIGFuZCBwYXNzaW5nIHRlc3RzLCB3ZSBzaG91bGQgZ2V0IG5vIG91dHB1dDoKKworICAgID4+PiByYzEsIG91dDEsIGVycjEKKyAgICAoMCwgYicnLCBiJycpCisKK1dpdGggdGhlIHZlcmJvc2UgZmxhZywgd2Ugc2hvdWxkIHNlZSB0aGUgdGVzdCBvdXRwdXQsIGJ1dCBubyBlcnJvciBvdXRwdXQ6CisKKyAgICA+Pj4gcmMyLCBlcnIyCisgICAgKDAsIGInJykKKyAgICA+Pj4gcHJpbnQobm9ybWFsaXplKG91dDIpKQorICAgIFRyeWluZzoKKyAgICAgICAgMSArIDEKKyAgICBFeHBlY3Rpbmc6CisgICAgICAgIDIKKyAgICBvaworICAgIFRyeWluZzoKKyAgICAgICAgImEiCisgICAgRXhwZWN0aW5nOgorICAgICAgICAnYScKKyAgICBvaworICAgIDEgaXRlbXMgcGFzc2VkIGFsbCB0ZXN0czoKKyAgICAgICAyIHRlc3RzIGluIG15ZmlsZS5kb2MKKyAgICAyIHRlc3RzIGluIDEgaXRlbXMuCisgICAgMiBwYXNzZWQgYW5kIDAgZmFpbGVkLgorICAgIFRlc3QgcGFzc2VkLgorCitOb3cgd2UnbGwgd3JpdGUgYSBjb3VwbGUgZmlsZXMsIG9uZSB3aXRoIHRocmVlIHRlc3RzLCB0aGUgb3RoZXIgYSBweXRob24gbW9kdWxlCit3aXRoIHR3byB0ZXN0cywgYm90aCBvZiB0aGUgZmlsZXMgaGF2aW5nICJlcnJvcnMiIGluIHRoZSB0ZXN0cyB0aGF0IGNhbiBiZSBtYWRlCitub24tZXJyb3JzIGJ5IGFwcGx5aW5nIHRoZSBhcHByb3ByaWF0ZSBkb2N0ZXN0IG9wdGlvbnMgdG8gdGhlIHJ1biAoRUxMSVBTSVMgaW4KK3RoZSBmaXJzdCBmaWxlLCBOT1JNQUxJWkVfV0hJVEVTUEFDRSBpbiB0aGUgc2Vjb25kKS4gIFRoaXMgY29tYmluYXRpb24gd2lsbAorYWxsb3cgdG8gdGhvcm91Z2hseSB0ZXN0IHRoZSAtZiBhbmQgLW8gZmxhZ3MsIGFzIHdlbGwgYXMgdGhlIGRvY3Rlc3QgY29tbWFuZCdzCithYmlsaXR5IHRvIHByb2Nlc3MgbW9yZSB0aGFuIG9uZSBmaWxlIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kLCBzaW5jZSB0aGUgc2Vjb25kCitmaWxlIGVuZHMgaW4gJy5weScsIGl0cyBoYW5kbGluZyBvZiBweXRob24gbW9kdWxlIGZpbGVzIChhcyBvcHBvc2VkIHRvIHN0cmFpZ2h0Cit0ZXh0IGZpbGVzKS4KKworICAgID4+PiBmcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKKyAgICA+Pj4gd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdG1wZGlyOgorICAgIC4uLiAgICAgZm4gPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnbXlmaWxlLmRvYycpCisgICAgLi4uICAgICB3aXRoIG9wZW4oZm4sICd3JykgYXMgZjoKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnVGhpcyBpcyBhbm90aGVyIHNpbXBsZSB0ZXN0IGZpbGUuXG4nKQorICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCcgICA+Pj4gMSArIDFcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgIDJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgID4+PiAiYWJjZGVmIlxuJykKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiICAgJ2EuLi5mJ1xuIikKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnICAgPj4+ICJhamttbCJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIiAgICdhLi4ubCdcbiIpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJ1xuJykKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnQW5kIHRoYXQgaXMgaXQuXG4nKQorICAgIC4uLiAgICAgZm4yID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ215ZmlsZTIucHknKQorICAgIC4uLiAgICAgd2l0aCBvcGVuKGZuMiwgJ3cnKSBhcyBmOgorICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCdkZWYgdGVzdF9mdW5jKCk6XG4nKQorICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCcgICBcIlwiXCJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgIFRoaXMgaXMgc2ltcGxlIHB5dGhvbiB0ZXN0IGZ1bmN0aW9uLlxuJykKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnICAgICAgID4+PiAxICsgMVxuJykKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnICAgICAgIDJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgICAgICA+Pj4gImFiYyAgIGRlZiJcbicpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIiAgICAgICAnYWJjIGRlZidcbiIpCisgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIlxuIikKKyAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnICAgXCJcIlwiXG4nKQorICAgIC4uLiAgICAgaW1wb3J0IHNodXRpbAorICAgIC4uLiAgICAgcmMxLCBvdXQxLCBlcnIxID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCisgICAgLi4uICAgICAgICAgICAgICctbScsICdkb2N0ZXN0JywgZm4sIGZuMiwgVEVSTT0nJykKKyAgICAuLi4gICAgIHJjMiwgb3V0MiwgZXJyMiA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygKKyAgICAuLi4gICAgICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCAnLW8nLCAnRUxMSVBTSVMnLCBmbiwgVEVSTT0nJykKKyAgICAuLi4gICAgIHJjMywgb3V0MywgZXJyMyA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygKKyAgICAuLi4gICAgICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCAnLW8nLCAnRUxMSVBTSVMnLAorICAgIC4uLiAgICAgICAgICAgICAnLW8nLCAnTk9STUFMSVpFX1dISVRFU1BBQ0UnLCBmbiwgZm4yLCBURVJNPScnKQorICAgIC4uLiAgICAgcmM0LCBvdXQ0LCBlcnI0ID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCisgICAgLi4uICAgICAgICAgICAgICctbScsICdkb2N0ZXN0JywgJy1mJywgZm4sIGZuMiwgVEVSTT0nJykKKyAgICAuLi4gICAgIHJjNSwgb3V0NSwgZXJyNSA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygKKyAgICAuLi4gICAgICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCAnLXYnLCAnLW8nLCAnRUxMSVBTSVMnLAorICAgIC4uLiAgICAgICAgICAgICAnLW8nLCAnTk9STUFMSVpFX1dISVRFU1BBQ0UnLCBmbiwgZm4yLCBURVJNPScnKQorCitPdXIgZmlyc3QgdGVzdCBydW4gd2lsbCBzaG93IHRoZSBlcnJvcnMgZnJvbSB0aGUgZmlyc3QgZmlsZSAoZG9jdGVzdCBzdG9wcyBpZiBhCitmaWxlIGhhcyBlcnJvcnMpLiAgTm90ZSB0aGF0IGRvY3Rlc3QgdGVzdC1ydW4gZXJyb3Igb3V0cHV0IGFwcGVhcnMgb24gc3Rkb3V0LAorbm90IHN0ZGVycjoKKworICAgID4+PiByYzEsIGVycjEKKyAgICAoMSwgYicnKQorICAgID4+PiBwcmludChub3JtYWxpemUob3V0MSkpICAgICAgICAgICAgICAgICMgZG9jdGVzdDogK0VMTElQU0lTCisgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgIEZpbGUgIi4uLm15ZmlsZS5kb2MiLCBsaW5lIDQsIGluIG15ZmlsZS5kb2MKKyAgICBGYWlsZWQgZXhhbXBsZToKKyAgICAgICAgImFiY2RlZiIKKyAgICBFeHBlY3RlZDoKKyAgICAgICAgJ2EuLi5mJworICAgIEdvdDoKKyAgICAgICAgJ2FiY2RlZicKKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgRmlsZSAiLi4ubXlmaWxlLmRvYyIsIGxpbmUgNiwgaW4gbXlmaWxlLmRvYworICAgIEZhaWxlZCBleGFtcGxlOgorICAgICAgICAiYWprbWwiCisgICAgRXhwZWN0ZWQ6CisgICAgICAgICdhLi4ubCcKKyAgICBHb3Q6CisgICAgICAgICdhamttbCcKKyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgMSBpdGVtcyBoYWQgZmFpbHVyZXM6CisgICAgICAgMiBvZiAgIDMgaW4gbXlmaWxlLmRvYworICAgICoqKlRlc3QgRmFpbGVkKioqIDIgZmFpbHVyZXMuCisKK1dpdGggLW8gRUxMSVBTSVMgc3BlY2lmaWVkLCB0aGUgc2Vjb25kIHJ1biwgYWdhaW5zdCBqdXN0IHRoZSBmaXJzdCBmaWxlLCBzaG91bGQKK3Byb2R1Y2Ugbm8gZXJyb3JzLCBhbmQgd2l0aCAtbyBOT1JNQUxJWkVfV0hJVEVTUEFDRSBhbHNvIHNwZWNpZmllZCwgbmVpdGhlcgorc2hvdWxkIHRoZSB0aGlyZCwgd2hpY2ggcmFuIGFnYWluc3QgYm90aCBmaWxlczoKKworICAgID4+PiByYzIsIG91dDIsIGVycjIKKyAgICAoMCwgYicnLCBiJycpCisgICAgPj4+IHJjMywgb3V0MywgZXJyMworICAgICgwLCBiJycsIGInJykKKworVGhlIGZvdXJ0aCBydW4gdXNlcyBGQUlMX0ZBU1QsIHNvIHdlIHNob3VsZCBzZWUgb25seSBvbmUgZXJyb3I6CisKKyAgICA+Pj4gcmM0LCBlcnI0CisgICAgKDEsIGInJykKKyAgICA+Pj4gcHJpbnQobm9ybWFsaXplKG91dDQpKSAgICAgICAgICAgICAgICAjIGRvY3Rlc3Q6ICtFTExJUFNJUworICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICBGaWxlICIuLi5teWZpbGUuZG9jIiwgbGluZSA0LCBpbiBteWZpbGUuZG9jCisgICAgRmFpbGVkIGV4YW1wbGU6CisgICAgICAgICJhYmNkZWYiCisgICAgRXhwZWN0ZWQ6CisgICAgICAgICdhLi4uZicKKyAgICBHb3Q6CisgICAgICAgICdhYmNkZWYnCisgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgIDEgaXRlbXMgaGFkIGZhaWx1cmVzOgorICAgICAgIDEgb2YgICAyIGluIG15ZmlsZS5kb2MKKyAgICAqKipUZXN0IEZhaWxlZCoqKiAxIGZhaWx1cmVzLgorCitUaGUgZmlmdGggdGVzdCB1c2VzIHZlcmJvc2Ugd2l0aCB0aGUgdHdvIG9wdGlvbnMsIHNvIHdlIHNob3VsZCBnZXQgdmVyYm9zZQorc3VjY2VzcyBvdXRwdXQgZm9yIHRoZSB0ZXN0cyBpbiBib3RoIGZpbGVzOgorCisgICAgPj4+IHJjNSwgZXJyNQorICAgICgwLCBiJycpCisgICAgPj4+IHByaW50KG5vcm1hbGl6ZShvdXQ1KSkKKyAgICBUcnlpbmc6CisgICAgICAgIDEgKyAxCisgICAgRXhwZWN0aW5nOgorICAgICAgICAyCisgICAgb2sKKyAgICBUcnlpbmc6CisgICAgICAgICJhYmNkZWYiCisgICAgRXhwZWN0aW5nOgorICAgICAgICAnYS4uLmYnCisgICAgb2sKKyAgICBUcnlpbmc6CisgICAgICAgICJhamttbCIKKyAgICBFeHBlY3Rpbmc6CisgICAgICAgICdhLi4ubCcKKyAgICBvaworICAgIDEgaXRlbXMgcGFzc2VkIGFsbCB0ZXN0czoKKyAgICAgICAzIHRlc3RzIGluIG15ZmlsZS5kb2MKKyAgICAzIHRlc3RzIGluIDEgaXRlbXMuCisgICAgMyBwYXNzZWQgYW5kIDAgZmFpbGVkLgorICAgIFRlc3QgcGFzc2VkLgorICAgIFRyeWluZzoKKyAgICAgICAgMSArIDEKKyAgICBFeHBlY3Rpbmc6CisgICAgICAgIDIKKyAgICBvaworICAgIFRyeWluZzoKKyAgICAgICAgImFiYyAgIGRlZiIKKyAgICBFeHBlY3Rpbmc6CisgICAgICAgICdhYmMgZGVmJworICAgIG9rCisgICAgMSBpdGVtcyBoYWQgbm8gdGVzdHM6CisgICAgICAgIG15ZmlsZTIKKyAgICAxIGl0ZW1zIHBhc3NlZCBhbGwgdGVzdHM6CisgICAgICAgMiB0ZXN0cyBpbiBteWZpbGUyLnRlc3RfZnVuYworICAgIDIgdGVzdHMgaW4gMiBpdGVtcy4KKyAgICAyIHBhc3NlZCBhbmQgMCBmYWlsZWQuCisgICAgVGVzdCBwYXNzZWQuCisKK1dlIHNob3VsZCBhbHNvIGNoZWNrIHNvbWUgdHlwaWNhbCBlcnJvciBjYXNlcy4KKworSW52YWxpZCBmaWxlIG5hbWU6CisKKyAgICA+Pj4gcmMsIG91dCwgZXJyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCisgICAgLi4uICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCAnbm9zdWNoZmlsZScsIFRFUk09JycpCisgICAgPj4+IHJjLCBvdXQKKyAgICAoMSwgYicnKQorICAgID4+PiBwcmludChub3JtYWxpemUoZXJyKSkgICAgICAgICAgICAgICAgICAgICMgZG9jdGVzdDogK0VMTElQU0lTCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgRmlsZU5vdEZvdW5kRXJyb3I6IFtFcnJubyAuLi5dIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICdub3N1Y2hmaWxlJworCitJbnZhbGlkIGRvY3Rlc3Qgb3B0aW9uOgorCisgICAgPj4+IHJjLCBvdXQsIGVyciA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAorICAgIC4uLiAgICAgICAgICctbScsICdkb2N0ZXN0JywgJy1vJywgJ25vc3VjaG9wdGlvbicsIFRFUk09JycpCisgICAgPj4+IHJjLCBvdXQKKyAgICAoMiwgYicnKQorICAgID4+PiBwcmludChub3JtYWxpemUoZXJyKSkgICAgICAgICAgICAgICAgICAgICMgZG9jdGVzdDogK0VMTElQU0lTCisgICAgdXNhZ2UuLi5pbnZhbGlkLi4ubm9zdWNob3B0aW9uLi4uCisKKyIiIgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBNYWluCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKaW5kZXggNTZiZTc5NC4uYjJjOGI3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMjQ5LDE1ICsyNDksNDIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdUTycgaW4gbXNnKQogCiAgICAgZGVmIHRlc3RfYXNfc3RyaW5nKHNlbGYpOgotICAgICAgICBlcSA9IHNlbGYubmRpZmZBc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18wMS50eHQnKQogICAgICAgICB3aXRoIG9wZW5maWxlKCdtc2dfMDEudHh0JykgYXMgZnA6CiAgICAgICAgICAgICB0ZXh0ID0gZnAucmVhZCgpCi0gICAgICAgIGVxKHRleHQsIHN0cihtc2cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHN0cihtc2cpKQogICAgICAgICBmdWxscmVwciA9IG1zZy5hc19zdHJpbmcodW5peGZyb209VHJ1ZSkKICAgICAgICAgbGluZXMgPSBmdWxscmVwci5zcGxpdCgnXG4nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMF0uc3RhcnRzd2l0aCgnRnJvbSAnKSkKLSAgICAgICAgZXEodGV4dCwgTkwuam9pbihsaW5lc1sxOl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIE5MLmpvaW4obGluZXNbMTpdKSkKKworICAgIGRlZiB0ZXN0X2FzX3N0cmluZ19wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzAxLnR4dCcpCisgICAgICAgIG5ld3BvbGljeSA9IG1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpCisgICAgICAgIGZ1bGxyZXByID0gbXNnLmFzX3N0cmluZyhwb2xpY3k9bmV3cG9saWN5KQorICAgICAgICBzID0gU3RyaW5nSU8oKQorICAgICAgICBnID0gR2VuZXJhdG9yKHMsIHBvbGljeT1uZXdwb2xpY3kpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVsbHJlcHIsIHMuZ2V0dmFsdWUoKSkKKworICAgIGRlZiB0ZXN0X2FzX2J5dGVzKHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18wMS50eHQnKQorICAgICAgICB3aXRoIG9wZW5maWxlKCdtc2dfMDEudHh0JywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYnl0ZXMobXNnKSkKKyAgICAgICAgZnVsbHJlcHIgPSBtc2cuYXNfYnl0ZXModW5peGZyb209VHJ1ZSkKKyAgICAgICAgbGluZXMgPSBmdWxscmVwci5zcGxpdChiJ1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzBdLnN0YXJ0c3dpdGgoYidGcm9tICcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGInXG4nLmpvaW4obGluZXNbMTpdKSkKKworICAgIGRlZiB0ZXN0X2FzX2J5dGVzX3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMDEudHh0JykKKyAgICAgICAgbmV3cG9saWN5ID0gbXNnLnBvbGljeS5jbG9uZShsaW5lc2VwPSdcclxuJykKKyAgICAgICAgZnVsbHJlcHIgPSBtc2cuYXNfYnl0ZXMocG9saWN5PW5ld3BvbGljeSkKKyAgICAgICAgcyA9IEJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3Iocyxwb2xpY3k9bmV3cG9saWN5KQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bGxyZXByLCBzLmdldHZhbHVlKCkpCiAKICAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLmJhZF9wYXJhbXMKICAgICBkZWYgdGVzdF9iYWRfcGFyYW0oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3RvcnR1cmVfdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdG9ydHVyZV90ZXN0LnB5CmluZGV4IDU0NGIxYmIuLjE5Y2Y2NGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdG9ydHVyZV90ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdG9ydHVyZV90ZXN0LnB5CkBAIC0yNyw3ICsyNyw3IEBACiAjIFByZXZlbnQgdGhpcyB0ZXN0IGZyb20gcnVubmluZyBpbiB0aGUgUHl0aG9uIGRpc3RybwogdHJ5OgogICAgIG9wZW5maWxlKCdjcmlzcGluLXRvcnR1cmUudHh0JykKLWV4Y2VwdCBJT0Vycm9yOgorZXhjZXB0IE9TRXJyb3I6CiAgICAgcmFpc2UgVGVzdFNraXBwZWQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxZmQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQpAQCAtMCwwICsxLDk5MiBAQAoraW1wb3J0IGVudW0KK2ltcG9ydCB1bml0dGVzdAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMsIFBpY2tsaW5nRXJyb3IKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bSwgdW5pcXVlCisKKyMgZm9yIHBpY2tsZSB0ZXN0cwordHJ5OgorICAgIGNsYXNzIFN0b29nZXMoRW51bSk6CisgICAgICAgIExBUlJZID0gMQorICAgICAgICBDVVJMWSA9IDIKKyAgICAgICAgTU9FID0gMworZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgU3Rvb2dlcyA9IGV4YworCit0cnk6CisgICAgY2xhc3MgSW50U3Rvb2dlcyhpbnQsIEVudW0pOgorICAgICAgICBMQVJSWSA9IDEKKyAgICAgICAgQ1VSTFkgPSAyCisgICAgICAgIE1PRSA9IDMKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgIEludFN0b29nZXMgPSBleGMKKwordHJ5OgorICAgIGNsYXNzIEZsb2F0U3Rvb2dlcyhmbG9hdCwgRW51bSk6CisgICAgICAgIExBUlJZID0gMS4zOQorICAgICAgICBDVVJMWSA9IDIuNzIKKyAgICAgICAgTU9FID0gMy4xNDI1OTYKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgIEZsb2F0U3Rvb2dlcyA9IGV4YworCisjIGZvciBwaWNrbGUgdGVzdCBhbmQgc3ViY2xhc3MgdGVzdHMKK3RyeToKKyAgICBjbGFzcyBTdHJFbnVtKHN0ciwgRW51bSk6CisgICAgICAgICdhY2NlcHRzIG9ubHkgc3RyaW5nIHZhbHVlcycKKyAgICBjbGFzcyBOYW1lKFN0ckVudW0pOgorICAgICAgICBCREZMID0gJ0d1aWRvIHZhbiBSb3NzdW0nCisgICAgICAgIEZMVUZMID0gJ0JhcnJ5IFdhcnNhdycKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgIE5hbWUgPSBleGMKKwordHJ5OgorICAgIFF1ZXN0aW9uID0gRW51bSgnUXVlc3Rpb24nLCAnd2hvIHdoYXQgd2hlbiB3aGVyZSB3aHknLCBtb2R1bGU9X19uYW1lX18pCitleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICBRdWVzdGlvbiA9IGV4YworCit0cnk6CisgICAgQW5zd2VyID0gRW51bSgnQW5zd2VyJywgJ2hpbSB0aGlzIHRoZW4gdGhlcmUgYmVjYXVzZScpCitleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICBBbnN3ZXIgPSBleGMKKworIyBmb3IgZG9jdGVzdHMKK3RyeToKKyAgICBjbGFzcyBGcnVpdChFbnVtKToKKyAgICAgICAgdG9tYXRvID0gMQorICAgICAgICBiYW5hbmEgPSAyCisgICAgICAgIGNoZXJyeSA9IDMKK2V4Y2VwdCBFeGNlcHRpb246CisgICAgcGFzcworCitjbGFzcyBUZXN0RW51bSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBjbGFzcyBTZWFzb24oRW51bSk6CisgICAgICAgICAgICBTUFJJTkcgPSAxCisgICAgICAgICAgICBTVU1NRVIgPSAyCisgICAgICAgICAgICBBVVRVTU4gPSAzCisgICAgICAgICAgICBXSU5URVIgPSA0CisgICAgICAgIHNlbGYuU2Vhc29uID0gU2Vhc29uCisKKyAgICBkZWYgdGVzdF9lbnVtX2luX2VudW1fb3V0KHNlbGYpOgorICAgICAgICBTZWFzb24gPSBzZWxmLlNlYXNvbgorICAgICAgICBzZWxmLmFzc2VydElzKFNlYXNvbihTZWFzb24uV0lOVEVSKSwgU2Vhc29uLldJTlRFUikKKworICAgIGRlZiB0ZXN0X2VudW1fdmFsdWUoc2VsZik6CisgICAgICAgIFNlYXNvbiA9IHNlbGYuU2Vhc29uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU2Vhc29uLlNQUklORy52YWx1ZSwgMSkKKworICAgIGRlZiB0ZXN0X2ludGVudW1fdmFsdWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSW50U3Rvb2dlcy5DVVJMWS52YWx1ZSwgMikKKworICAgIGRlZiB0ZXN0X2VudW0oc2VsZik6CisgICAgICAgIFNlYXNvbiA9IHNlbGYuU2Vhc29uCisgICAgICAgIGxzdCA9IGxpc3QoU2Vhc29uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oU2Vhc29uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU2Vhc29uKSwgNCwgU2Vhc29uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgW1NlYXNvbi5TUFJJTkcsIFNlYXNvbi5TVU1NRVIsIFNlYXNvbi5BVVRVTU4sIFNlYXNvbi5XSU5URVJdLCBsc3QpCisKKyAgICAgICAgZm9yIGksIHNlYXNvbiBpbiBlbnVtZXJhdGUoJ1NQUklORyBTVU1NRVIgQVVUVU1OIFdJTlRFUicuc3BsaXQoKSwgMSk6CisgICAgICAgICAgICBlID0gU2Vhc29uKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGdldGF0dHIoU2Vhc29uLCBzZWFzb24pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIHNlYXNvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU2Vhc29uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTZWFzb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgU2Vhc29uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICdTZWFzb24uJyArIHNlYXNvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIHJlcHIoZSksCisgICAgICAgICAgICAgICAgICAgICc8U2Vhc29uLnswfTogezF9PicuZm9ybWF0KHNlYXNvbiwgaSksCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3ZhbHVlX25hbWUoc2VsZik6CisgICAgICAgIFNlYXNvbiA9IHNlbGYuU2Vhc29uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU2Vhc29uLlNQUklORy5uYW1lLCAnU1BSSU5HJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTZWFzb24uU1BSSU5HLnZhbHVlLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIFNlYXNvbi5TUFJJTkcubmFtZSA9ICdpbnZpZXJubycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBTZWFzb24uU1BSSU5HLnZhbHVlID0gMgorCisgICAgZGVmIHRlc3RfaW52YWxpZF9uYW1lcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0pOgorICAgICAgICAgICAgICAgIG1ybyA9IDkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0pOgorICAgICAgICAgICAgICAgIF9jcmVhdGVfPSAxMQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgV3JvbmcoRW51bSk6CisgICAgICAgICAgICAgICAgX2dldF9taXhpbnNfID0gOQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgV3JvbmcoRW51bSk6CisgICAgICAgICAgICAgICAgX2ZpbmRfbmV3XyA9IDEKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0pOgorICAgICAgICAgICAgICAgIF9hbnlfbmFtZV8gPSA5CisKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KKyAgICAgICAgc2VsZi5hc3NlcnRJbihTZWFzb24uQVVUVU1OLCBTZWFzb24pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMywgU2Vhc29uKQorCisgICAgICAgIHZhbCA9IFNlYXNvbigzKQorICAgICAgICBzZWxmLmFzc2VydEluKHZhbCwgU2Vhc29uKQorCisgICAgICAgIGNsYXNzIE90aGVyRW51bShFbnVtKToKKyAgICAgICAgICAgIG9uZSA9IDE7IHR3byA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihPdGhlckVudW0udHdvLCBTZWFzb24pCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29ucyhzZWxmKToKKyAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgU2Vhc29uLlNQUklORyA8IFNlYXNvbi5XSU5URVIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgU2Vhc29uLlNQUklORyA+IDQKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFNlYXNvbi5TUFJJTkcsIDEpCisKKyAgICAgICAgY2xhc3MgUGFydChFbnVtKToKKyAgICAgICAgICAgIFNQUklORyA9IDEKKyAgICAgICAgICAgIENMSVAgPSAyCisgICAgICAgICAgICBCQVJSRUwgPSAzCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChTZWFzb24uU1BSSU5HLCBQYXJ0LlNQUklORykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgU2Vhc29uLlNQUklORyA8IFBhcnQuQ0xJUAorCisgICAgZGVmIHRlc3RfZW51bV9kdXBsaWNhdGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBTZWFzb24oRW51bSk6CisgICAgICAgICAgICBTUFJJTkcgPSAxCisgICAgICAgICAgICBTVU1NRVIgPSAyCisgICAgICAgICAgICBBVVRVTU4gPSBGQUxMID0gMworICAgICAgICAgICAgV0lOVEVSID0gNAorICAgICAgICAgICAgQU5PVEhFUl9TUFJJTkcgPSAxCisgICAgICAgIGxzdCA9IGxpc3QoU2Vhc29uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgW1NlYXNvbi5TUFJJTkcsIFNlYXNvbi5TVU1NRVIsCisgICAgICAgICAgICAgU2Vhc29uLkFVVFVNTiwgU2Vhc29uLldJTlRFUiwKKyAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoU2Vhc29uLkZBTEwsIFNlYXNvbi5BVVRVTU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU2Vhc29uLkZBTEwudmFsdWUsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU2Vhc29uLkFVVFVNTi52YWx1ZSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhTZWFzb24oMyksIFNlYXNvbi5BVVRVTU4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoU2Vhc29uKDEpLCBTZWFzb24uU1BSSU5HKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNlYXNvbi5GQUxMLm5hbWUsICdBVVRVTU4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtrIGZvciBrLHYgaW4gU2Vhc29uLl9fbWVtYmVyc19fLml0ZW1zKCkgaWYgdi5uYW1lICE9IGtdLAorICAgICAgICAgICAgICAgIFsnRkFMTCcsICdBTk9USEVSX1NQUklORyddLAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2VudW1fd2l0aF92YWx1ZV9uYW1lKHNlbGYpOgorICAgICAgICBjbGFzcyBIdWgoRW51bSk6CisgICAgICAgICAgICBuYW1lID0gMQorICAgICAgICAgICAgdmFsdWUgPSAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KEh1aCksCisgICAgICAgICAgICBbSHVoLm5hbWUsIEh1aC52YWx1ZV0sCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShIdWgubmFtZSksIEh1aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIdWgubmFtZS5uYW1lLCAnbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSHVoLm5hbWUudmFsdWUsIDEpCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KKyAgICAgICAgZGF0ZXMgPSB7fQorICAgICAgICBkYXRlc1tTZWFzb24uV0lOVEVSXSA9ICcxMjI1JworICAgICAgICBkYXRlc1tTZWFzb24uU1BSSU5HXSA9ICcwMzE1JworICAgICAgICBkYXRlc1tTZWFzb24uU1VNTUVSXSA9ICcwNzA0JworICAgICAgICBkYXRlc1tTZWFzb24uQVVUVU1OXSA9ICcxMDMxJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGVzW1NlYXNvbi5BVVRVTU5dLCAnMTAzMScpCisKKyAgICBkZWYgdGVzdF9pbnRlbnVtX2Zyb21fc2NyYXRjaChzZWxmKToKKyAgICAgICAgY2xhc3MgcGh5KGludCwgRW51bSk6CisgICAgICAgICAgICBwaSA9IDMKKyAgICAgICAgICAgIHRhdSA9IDIgKiBwaQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGh5LnBpIDwgcGh5LnRhdSkKKworICAgIGRlZiB0ZXN0X2ludGVudW1faW5oZXJpdGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBJbnRFbnVtKGludCwgRW51bSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHBoeShJbnRFbnVtKToKKyAgICAgICAgICAgIHBpID0gMworICAgICAgICAgICAgdGF1ID0gMiAqIHBpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwaHkucGkgPCBwaHkudGF1KQorCisgICAgZGVmIHRlc3RfZmxvYXRlbnVtX2Zyb21fc2NyYXRjaChzZWxmKToKKyAgICAgICAgY2xhc3MgcGh5KGZsb2F0LCBFbnVtKToKKyAgICAgICAgICAgIHBpID0gMy4xNDE1OTYKKyAgICAgICAgICAgIHRhdSA9IDIgKiBwaQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGh5LnBpIDwgcGh5LnRhdSkKKworICAgIGRlZiB0ZXN0X2Zsb2F0ZW51bV9pbmhlcml0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEZsb2F0RW51bShmbG9hdCwgRW51bSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHBoeShGbG9hdEVudW0pOgorICAgICAgICAgICAgcGkgPSAzLjE0MTU5NgorICAgICAgICAgICAgdGF1ID0gMiAqIHBpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwaHkucGkgPCBwaHkudGF1KQorCisgICAgZGVmIHRlc3Rfc3RyZW51bV9mcm9tX3NjcmF0Y2goc2VsZik6CisgICAgICAgIGNsYXNzIHBoeShzdHIsIEVudW0pOgorICAgICAgICAgICAgcGkgPSAnUGknCisgICAgICAgICAgICB0YXUgPSAnVGF1JworICAgICAgICBzZWxmLmFzc2VydFRydWUocGh5LnBpIDwgcGh5LnRhdSkKKworICAgIGRlZiB0ZXN0X3N0cmVudW1faW5oZXJpdGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBTdHJFbnVtKHN0ciwgRW51bSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHBoeShTdHJFbnVtKToKKyAgICAgICAgICAgIHBpID0gJ1BpJworICAgICAgICAgICAgdGF1ID0gJ1RhdScKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBoeS5waSA8IHBoeS50YXUpCisKKworICAgIGRlZiB0ZXN0X2ludGVudW0oc2VsZik6CisgICAgICAgIGNsYXNzIFdlZWtEYXkoSW50RW51bSk6CisgICAgICAgICAgICBTVU5EQVkgPSAxCisgICAgICAgICAgICBNT05EQVkgPSAyCisgICAgICAgICAgICBUVUVTREFZID0gMworICAgICAgICAgICAgV0VETkVTREFZID0gNAorICAgICAgICAgICAgVEhVUlNEQVkgPSA1CisgICAgICAgICAgICBGUklEQVkgPSA2CisgICAgICAgICAgICBTQVRVUkRBWSA9IDcKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnYScsICdiJywgJ2MnXVtXZWVrRGF5Lk1PTkRBWV0sICdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaSBmb3IgaSBpbiByYW5nZShXZWVrRGF5LlRVRVNEQVkpXSwgWzAsIDEsIDJdKQorCisgICAgICAgIGxzdCA9IGxpc3QoV2Vla0RheSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFdlZWtEYXkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihXZWVrRGF5KSwgNykKKyAgICAgICAgdGFyZ2V0ID0gJ1NVTkRBWSBNT05EQVkgVFVFU0RBWSBXRURORVNEQVkgVEhVUlNEQVkgRlJJREFZIFNBVFVSREFZJworICAgICAgICB0YXJnZXQgPSB0YXJnZXQuc3BsaXQoKQorICAgICAgICBmb3IgaSwgd2Vla2RheSBpbiBlbnVtZXJhdGUodGFyZ2V0LCAxKToKKyAgICAgICAgICAgIGUgPSBXZWVrRGF5KGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChlKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCB3ZWVrZGF5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBXZWVrRGF5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QuaW5kZXgoZSkrMSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDwgZSA8IDgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFdlZWtEYXkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIEVudW0pCisKKyAgICBkZWYgdGVzdF9pbnRlbnVtX2R1cGxpY2F0ZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFdlZWtEYXkoSW50RW51bSk6CisgICAgICAgICAgICBTVU5EQVkgPSAxCisgICAgICAgICAgICBNT05EQVkgPSAyCisgICAgICAgICAgICBUVUVTREFZID0gVEVVU0RBWSA9IDMKKyAgICAgICAgICAgIFdFRE5FU0RBWSA9IDQKKyAgICAgICAgICAgIFRIVVJTREFZID0gNQorICAgICAgICAgICAgRlJJREFZID0gNgorICAgICAgICAgICAgU0FUVVJEQVkgPSA3CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoV2Vla0RheS5URVVTREFZLCBXZWVrRGF5LlRVRVNEQVkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoV2Vla0RheSgzKS5uYW1lLCAnVFVFU0RBWScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2sgZm9yIGssdiBpbiBXZWVrRGF5Ll9fbWVtYmVyc19fLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiB2Lm5hbWUgIT0ga10sIFsnVEVVU0RBWScsIF0pCisKKyAgICBkZWYgdGVzdF9waWNrbGVfZW51bShzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShTdG9vZ2VzLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2UgU3Rvb2dlcworICAgICAgICBzZWxmLmFzc2VydElzKFN0b29nZXMuQ1VSTFksIGxvYWRzKGR1bXBzKFN0b29nZXMuQ1VSTFkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhTdG9vZ2VzLCBsb2FkcyhkdW1wcyhTdG9vZ2VzKSkpCisKKyAgICBkZWYgdGVzdF9waWNrbGVfaW50KHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKEludFN0b29nZXMsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBJbnRTdG9vZ2VzCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoSW50U3Rvb2dlcy5DVVJMWSwgbG9hZHMoZHVtcHMoSW50U3Rvb2dlcy5DVVJMWSkpKQorICAgICAgICBzZWxmLmFzc2VydElzKEludFN0b29nZXMsIGxvYWRzKGR1bXBzKEludFN0b29nZXMpKSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZV9mbG9hdChzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShGbG9hdFN0b29nZXMsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBGbG9hdFN0b29nZXMKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGbG9hdFN0b29nZXMuQ1VSTFksIGxvYWRzKGR1bXBzKEZsb2F0U3Rvb2dlcy5DVVJMWSkpKQorICAgICAgICBzZWxmLmFzc2VydElzKEZsb2F0U3Rvb2dlcywgbG9hZHMoZHVtcHMoRmxvYXRTdG9vZ2VzKSkpCisKKyAgICBkZWYgdGVzdF9waWNrbGVfZW51bV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShBbnN3ZXIsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBBbnN3ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBbnN3ZXIuaGltLCBsb2FkcyhkdW1wcyhBbnN3ZXIuaGltKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQW5zd2VyLCBsb2FkcyhkdW1wcyhBbnN3ZXIpKSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZV9lbnVtX2Z1bmN0aW9uX3dpdGhfbW9kdWxlKHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKFF1ZXN0aW9uLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2UgUXVlc3Rpb24KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhRdWVzdGlvbi53aG8sIGxvYWRzKGR1bXBzKFF1ZXN0aW9uLndobykpKQorICAgICAgICBzZWxmLmFzc2VydElzKFF1ZXN0aW9uLCBsb2FkcyhkdW1wcyhRdWVzdGlvbikpKQorCisgICAgZGVmIHRlc3RfZXhwbG9kaW5nX3BpY2tsZShzZWxmKToKKyAgICAgICAgQmFkUGlja2xlID0gRW51bSgnQmFkUGlja2xlJywgJ2RpbGwgc3dlZXQgYnJlYWQtbi1idXR0ZXInKQorICAgICAgICBlbnVtLl9tYWtlX2NsYXNzX3VucGlja2xhYmxlKEJhZFBpY2tsZSkKKyAgICAgICAgZ2xvYmFscygpWydCYWRQaWNrbGUnXSA9IEJhZFBpY2tsZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkdW1wcyhCYWRQaWNrbGUuZGlsbCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQaWNrbGluZ0Vycm9yKToKKyAgICAgICAgICAgIGR1bXBzKEJhZFBpY2tsZSkKKworICAgIGRlZiB0ZXN0X3N0cmluZ19lbnVtKHNlbGYpOgorICAgICAgICBjbGFzcyBTa2lsbExldmVsKHN0ciwgRW51bSk6CisgICAgICAgICAgICBtYXN0ZXIgPSAnd2hhdCBpcyB0aGUgc291bmQgb2Ygb25lIGhhbmQgY2xhcHBpbmc/JworICAgICAgICAgICAgam91cm5leW1hbiA9ICd3aHkgZGlkIHRoZSBjaGlja2VuIGNyb3NzIHRoZSByb2FkPycKKyAgICAgICAgICAgIGFwcHJlbnRpY2UgPSAna25vY2ssIGtub2NrIScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTa2lsbExldmVsLmFwcHJlbnRpY2UsICdrbm9jaywga25vY2shJykKKworICAgIGRlZiB0ZXN0X2dldGF0dHJfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgY2xhc3MgUGVyaW9kKEVudW0pOgorICAgICAgICAgICAgbW9ybmluZyA9IDEKKyAgICAgICAgICAgIG5vb24gPSAyCisgICAgICAgICAgICBldmVuaW5nID0gMworICAgICAgICAgICAgbmlnaHQgPSA0CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoUGVyaW9kKDIpLCBQZXJpb2Qubm9vbikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKFBlcmlvZCwgJ25pZ2h0JyksIFBlcmlvZC5uaWdodCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhQZXJpb2RbJ21vcm5pbmcnXSwgUGVyaW9kLm1vcm5pbmcpCisKKyAgICBkZWYgdGVzdF9nZXRhdHRyX2R1bmRlcihzZWxmKToKKyAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdldGF0dHIoU2Vhc29uLCAnX19lcV9fJykpCisKKyAgICBkZWYgdGVzdF9pdGVyYXRpb25fb3JkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIFNlYXNvbihFbnVtKToKKyAgICAgICAgICAgIFNVTU1FUiA9IDIKKyAgICAgICAgICAgIFdJTlRFUiA9IDQKKyAgICAgICAgICAgIEFVVFVNTiA9IDMKKyAgICAgICAgICAgIFNQUklORyA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBsaXN0KFNlYXNvbiksCisgICAgICAgICAgICAgICAgW1NlYXNvbi5TVU1NRVIsIFNlYXNvbi5XSU5URVIsIFNlYXNvbi5BVVRVTU4sIFNlYXNvbi5TUFJJTkddLAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0JykKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAxKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBTdW1tZXJNb250aCA9IEVudW0oJ1N1bW1lck1vbnRoJywgWydqdW5lJywgJ2p1bHknLCAnYXVndXN0J10pCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgMSk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGUudmFsdWUpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBFbnVtKAorICAgICAgICAgICAgICAgICdTdW1tZXJNb250aCcsCisgICAgICAgICAgICAgICAgKCgnanVuZScsIDEpLCAoJ2p1bHknLCAyKSwgKCdhdWd1c3QnLCAzKSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgMSk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGUudmFsdWUpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgKKyAgICAgICAgICAgICAgICAnU3VtbWVyTW9udGgnLAorICAgICAgICAgICAgICAgIE9yZGVyZWREaWN0KCgoJ2p1bmUnLCAxKSwgKCdqdWx5JywgMiksICgnYXVndXN0JywgMykpKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAxKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3R5cGUoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHR5cGU9aW50KQorICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oU3VtbWVyTW9udGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTdW1tZXJNb250aCksIDMsIFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtTdW1tZXJNb250aC5qdW5lLCBTdW1tZXJNb250aC5qdWx5LCBTdW1tZXJNb250aC5hdWd1c3RdLAorICAgICAgICAgICAgICAgIGxzdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBpLCBtb250aCBpbiBlbnVtZXJhdGUoJ2p1bmUganVseSBhdWd1c3QnLnNwbGl0KCksIDEpOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3R5cGVfZnJvbV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBJbnRFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0JykKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAxKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShOYW1lLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2UgTmFtZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5hbWUuQkRGTCwgJ0d1aWRvIHZhbiBSb3NzdW0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTmFtZS5CREZMLCBOYW1lKCdHdWlkbyB2YW4gUm9zc3VtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoTmFtZS5CREZMLCBnZXRhdHRyKE5hbWUsICdCREZMJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoTmFtZS5CREZMLCBsb2FkcyhkdW1wcyhOYW1lLkJERkwpKSkKKworICAgIGRlZiB0ZXN0X2V4dGVuZGluZyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIE1vcmVDb2xvcihDb2xvcik6CisgICAgICAgICAgICAgICAgY3lhbiA9IDQKKyAgICAgICAgICAgICAgICBtYWdlbnRhID0gNQorICAgICAgICAgICAgICAgIHllbGxvdyA9IDYKKworICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3Mgd2hhdGV2ZXIoRW51bSk6CisgICAgICAgICAgICB0aGlzID0gJ3RoYXQnCisgICAgICAgICAgICB0aGVzZSA9ICd0aG9zZScKKyAgICAgICAgICAgIGRlZiByZWFsbHkoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdubywgbm90ICVzJyAlIHNlbGYudmFsdWUKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0eXBlKHdoYXRldmVyLnJlYWxseSksIHdoYXRldmVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXRldmVyLnRoaXMucmVhbGx5KCksICdubywgbm90IHRoYXQnKQorCisgICAgZGVmIHRlc3Rfb3ZlcndyaXRlX2VudW1zKHNlbGYpOgorICAgICAgICBjbGFzcyBXaHkoRW51bSk6CisgICAgICAgICAgICBxdWVzdGlvbiA9IDEKKyAgICAgICAgICAgIGFuc3dlciA9IDIKKyAgICAgICAgICAgIHByb3Bpc2l0aW9uID0gMworICAgICAgICAgICAgZGVmIHF1ZXN0aW9uKHNlbGYpOgorICAgICAgICAgICAgICAgIHByaW50KDQyKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHR5cGUoV2h5LnF1ZXN0aW9uKSwgV2h5KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKFdoeS5xdWVzdGlvbiwgV2h5Ll9tZW1iZXJfbmFtZXNfKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKFdoeS5xdWVzdGlvbiwgV2h5KQorCisgICAgZGVmIHRlc3Rfd3JvbmdfaW5oZXJpdGFuY2Vfb3JkZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0sIHN0cik6CisgICAgICAgICAgICAgICAgTm90SGVyZSA9ICdlcnJvciBiZWZvcmUgdGhpcyBwb2ludCcKKworICAgIGRlZiB0ZXN0X2ludGVudW1fdHJhbnNpdGl2aXR5KHNlbGYpOgorICAgICAgICBjbGFzcyBudW1iZXIoSW50RW51bSk6CisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgICAgICB0d28gPSAyCisgICAgICAgICAgICB0aHJlZSA9IDMKKyAgICAgICAgY2xhc3MgbnVtZXJvKEludEVudW0pOgorICAgICAgICAgICAgdW5vID0gMQorICAgICAgICAgICAgZG9zID0gMgorICAgICAgICAgICAgdHJlcyA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW1iZXIub25lLCBudW1lcm8udW5vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlci50d28sIG51bWVyby5kb3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtYmVyLnRocmVlLCBudW1lcm8udHJlcykKKworICAgIGRlZiB0ZXN0X3dyb25nX2VudW1faW5fY2FsbChzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ub2Nocm9tZShFbnVtKToKKyAgICAgICAgICAgIGJsYWNrID0gMAorICAgICAgICAgICAgd2hpdGUgPSAxCisgICAgICAgIGNsYXNzIEdlbmRlcihFbnVtKToKKyAgICAgICAgICAgIG1hbGUgPSAwCisgICAgICAgICAgICBmZW1hbGUgPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE1vbm9jaHJvbWUsIEdlbmRlci5tYWxlKQorCisgICAgZGVmIHRlc3Rfd3JvbmdfZW51bV9pbl9taXhlZF9jYWxsKHNlbGYpOgorICAgICAgICBjbGFzcyBNb25vY2hyb21lKEludEVudW0pOgorICAgICAgICAgICAgYmxhY2sgPSAwCisgICAgICAgICAgICB3aGl0ZSA9IDEKKyAgICAgICAgY2xhc3MgR2VuZGVyKEVudW0pOgorICAgICAgICAgICAgbWFsZSA9IDAKKyAgICAgICAgICAgIGZlbWFsZSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTW9ub2Nocm9tZSwgR2VuZGVyLm1hbGUpCisKKyAgICBkZWYgdGVzdF9taXhlZF9lbnVtX2luX2NhbGxfMShzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ub2Nocm9tZShJbnRFbnVtKToKKyAgICAgICAgICAgIGJsYWNrID0gMAorICAgICAgICAgICAgd2hpdGUgPSAxCisgICAgICAgIGNsYXNzIEdlbmRlcihJbnRFbnVtKToKKyAgICAgICAgICAgIG1hbGUgPSAwCisgICAgICAgICAgICBmZW1hbGUgPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoTW9ub2Nocm9tZShHZW5kZXIuZmVtYWxlKSwgTW9ub2Nocm9tZS53aGl0ZSkKKworICAgIGRlZiB0ZXN0X21peGVkX2VudW1faW5fY2FsbF8yKHNlbGYpOgorICAgICAgICBjbGFzcyBNb25vY2hyb21lKEVudW0pOgorICAgICAgICAgICAgYmxhY2sgPSAwCisgICAgICAgICAgICB3aGl0ZSA9IDEKKyAgICAgICAgY2xhc3MgR2VuZGVyKEludEVudW0pOgorICAgICAgICAgICAgbWFsZSA9IDAKKyAgICAgICAgICAgIGZlbWFsZSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhNb25vY2hyb21lKEdlbmRlci5tYWxlKSwgTW9ub2Nocm9tZS5ibGFjaykKKworICAgIGRlZiB0ZXN0X2ZsdWZsX2VudW0oc2VsZik6CisgICAgICAgIGNsYXNzIEZsdWZsbnVtKEVudW0pOgorICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludChzZWxmLnZhbHVlKQorICAgICAgICBjbGFzcyBNYWlsTWFuT3B0aW9ucyhGbHVmbG51bSk6CisgICAgICAgICAgICBvcHRpb24xID0gMQorICAgICAgICAgICAgb3B0aW9uMiA9IDIKKyAgICAgICAgICAgIG9wdGlvbjMgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KE1haWxNYW5PcHRpb25zLm9wdGlvbjEpLCAxKQorCisgICAgZGVmIHRlc3RfaW50cm9zcGVjdGlvbihzZWxmKToKKyAgICAgICAgY2xhc3MgTnVtYmVyKEludEVudW0pOgorICAgICAgICAgICAgb25lID0gMTAwCisgICAgICAgICAgICB0d28gPSAyMDAKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhOdW1iZXIub25lLl9tZW1iZXJfdHlwZV8sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhOdW1iZXIuX21lbWJlcl90eXBlXywgaW50KQorICAgICAgICBjbGFzcyBTdHJpbmcoc3RyLCBFbnVtKToKKyAgICAgICAgICAgIHlhcm4gPSAnc29mdCcKKyAgICAgICAgICAgIHJvcGUgPSAncm91Z2gnCisgICAgICAgICAgICB3aXJlID0gJ2hhcmQnCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoU3RyaW5nLnlhcm4uX21lbWJlcl90eXBlXywgc3RyKQorICAgICAgICBzZWxmLmFzc2VydElzKFN0cmluZy5fbWVtYmVyX3R5cGVfLCBzdHIpCisgICAgICAgIGNsYXNzIFBsYWluKEVudW0pOgorICAgICAgICAgICAgdmFuaWxsYSA9ICd3aGl0ZScKKyAgICAgICAgICAgIG9uZSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhQbGFpbi52YW5pbGxhLl9tZW1iZXJfdHlwZV8sIG9iamVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhQbGFpbi5fbWVtYmVyX3R5cGVfLCBvYmplY3QpCisKKyAgICBkZWYgdGVzdF9ub19zdWNoX2VudW1fbWVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIENvbG9yKDQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgQ29sb3JbJ2NoYXJ0cmV1c2UnXQorCisgICAgZGVmIHRlc3RfbmV3X3JlcHIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZG9uJ3QgeW91IGp1c3QgbG92ZSBzaGFkZXMgb2YgJXM/IiAlIHNlbGYubmFtZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHJlcHIoQ29sb3IuYmx1ZSksCisgICAgICAgICAgICAgICAgImRvbid0IHlvdSBqdXN0IGxvdmUgc2hhZGVzIG9mIGJsdWU/IiwKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9pbmhlcml0ZWRfcmVwcihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbnVtKEVudW0pOgorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAiTXkgbmFtZSBpcyAlcy4iICUgc2VsZi5uYW1lCisgICAgICAgIGNsYXNzIE15SW50RW51bShpbnQsIE15RW51bSk6CisgICAgICAgICAgICB0aGlzID0gMQorICAgICAgICAgICAgdGhhdCA9IDIKKyAgICAgICAgICAgIHRoZW90aGVyID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoTXlJbnRFbnVtLnRoYXQpLCAiTXkgbmFtZSBpcyB0aGF0LiIpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9taXhpbl9tcm8oc2VsZik6CisgICAgICAgIGNsYXNzIGF1dG9fZW51bSh0eXBlKEVudW0pKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1ldGFjbHMsIGNscywgYmFzZXMsIGNsYXNzZGljdCk6CisgICAgICAgICAgICAgICAgdGVtcCA9IHR5cGUoY2xhc3NkaWN0KSgpCisgICAgICAgICAgICAgICAgbmFtZXMgPSBzZXQoY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXMpCisgICAgICAgICAgICAgICAgaSA9IDAKKyAgICAgICAgICAgICAgICBmb3IgayBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgdiA9IGNsYXNzZGljdFtrXQorICAgICAgICAgICAgICAgICAgICBpZiB2IGlzIEVsbGlwc2lzOgorICAgICAgICAgICAgICAgICAgICAgICAgdiA9IGkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB2CisgICAgICAgICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgICAgICAgICB0ZW1wW2tdID0gdgorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGNsYXNzZGljdC5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBrIG5vdCBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBba10gPSB2CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKGF1dG9fZW51bSwgbWV0YWNscykuX19uZXdfXygKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFjbHMsIGNscywgYmFzZXMsIHRlbXApCisKKyAgICAgICAgY2xhc3MgQXV0b051bWJlcmVkRW51bShFbnVtLCBtZXRhY2xhc3M9YXV0b19lbnVtKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBBdXRvSW50RW51bShJbnRFbnVtLCBtZXRhY2xhc3M9YXV0b19lbnVtKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBUZXN0QXV0b051bWJlcihBdXRvTnVtYmVyZWRFbnVtKToKKyAgICAgICAgICAgIGEgPSAuLi4KKyAgICAgICAgICAgIGIgPSAzCisgICAgICAgICAgICBjID0gLi4uCisKKyAgICAgICAgY2xhc3MgVGVzdEF1dG9JbnQoQXV0b0ludEVudW0pOgorICAgICAgICAgICAgYSA9IC4uLgorICAgICAgICAgICAgYiA9IDMKKyAgICAgICAgICAgIGMgPSAuLi4KKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXNfd2l0aF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBOYW1lZEludChpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncyk6CisgICAgICAgICAgICAgICAgX2FyZ3MgPSBhcmdzCisgICAgICAgICAgICAgICAgbmFtZSwgKmFyZ3MgPSBhcmdzCisgICAgICAgICAgICAgICAgaWYgbGVuKGFyZ3MpID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBhbmQgdmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQiKQorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMsICphcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuX2ludG5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5fYXJncyA9IF9hcmdzCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYXJncworICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgX19uYW1lX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ludG5hbWUKKyAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAjIHJlcHIoKSBpcyB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIG5hbWUgYW5kIHR5cGUgaW5mbworICAgICAgICAgICAgICAgIHJldHVybiAie30oeyFyfSwge30pIi5mb3JtYXQodHlwZShzZWxmKS5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQuX19yZXByX18oc2VsZikpCisgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAjIHN0cigpIGlzIHVuY2hhbmdlZCwgZXZlbiBpZiBpdCByZWxpZXMgb24gdGhlIHJlcHIoKSBmYWxsYmFjaworICAgICAgICAgICAgICAgIGJhc2UgPSBpbnQKKyAgICAgICAgICAgICAgICBiYXNlX3N0ciA9IGJhc2UuX19zdHJfXworICAgICAgICAgICAgICAgIGlmIGJhc2Vfc3RyLl9fb2JqY2xhc3NfXyBpcyBvYmplY3Q6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYXNlLl9fcmVwcl9fKHNlbGYpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2Vfc3RyKHNlbGYpCisgICAgICAgICAgICAjIGZvciBzaW1wbGljaXR5LCB3ZSBvbmx5IGRlZmluZSBvbmUgb3BlcmF0b3IgdGhhdAorICAgICAgICAgICAgIyBwcm9wYWdhdGVzIGV4cHJlc3Npb25zCisgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgdGVtcCA9IGludChzZWxmKSArIGludCggb3RoZXIpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCBOYW1lZEludCkgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIE5hbWVkSW50KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5hbWVkSW50KAorICAgICAgICAgICAgICAgICAgICAgICAgJyh7MH0gKyB7MX0pJy5mb3JtYXQoc2VsZi5fX25hbWVfXywgb3RoZXIuX19uYW1lX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlbXAKKworICAgICAgICBjbGFzcyBORUkoTmFtZWRJbnQsIEVudW0pOgorICAgICAgICAgICAgeCA9ICgndGhlLXgnLCAxKQorICAgICAgICAgICAgeSA9ICgndGhlLXknLCAyKQorCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhORUkuX19uZXdfXywgRW51bS5fX25ld19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoTkVJLnggKyBORUkueSksICJOYW1lZEludCgnKHRoZS14ICsgdGhlLXkpJywgMykiKQorICAgICAgICBnbG9iYWxzKClbJ05hbWVkSW50J10gPSBOYW1lZEludAorICAgICAgICBnbG9iYWxzKClbJ05FSSddID0gTkVJCisgICAgICAgIE5JNSA9IE5hbWVkSW50KCd0ZXN0JywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOSTUsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZHMoZHVtcHMoTkk1KSksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTkVJLnkudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZHMoZHVtcHMoTkVJLnkpKSwgTkVJLnkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2VzX3dpdGhvdXRfZ2V0bmV3YXJncyhzZWxmKToKKyAgICAgICAgY2xhc3MgTmFtZWRJbnQoaW50KToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MpOgorICAgICAgICAgICAgICAgIF9hcmdzID0gYXJncworICAgICAgICAgICAgICAgIG5hbWUsICphcmdzID0gYXJncworICAgICAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgYW5kIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIikKKyAgICAgICAgICAgICAgICBzZWxmID0gaW50Ll9fbmV3X18oY2xzLCAqYXJncykKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnRuYW1lID0gbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuX2FyZ3MgPSBfYXJncworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBfX25hbWVfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faW50bmFtZQorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgICMgcmVwcigpIGlzIHVwZGF0ZWQgdG8gaW5jbHVkZSB0aGUgbmFtZSBhbmQgdHlwZSBpbmZvCisgICAgICAgICAgICAgICAgcmV0dXJuICJ7fSh7IXJ9LCB7fSkiLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC5fX3JlcHJfXyhzZWxmKSkKKyAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAgICAgICMgc3RyKCkgaXMgdW5jaGFuZ2VkLCBldmVuIGlmIGl0IHJlbGllcyBvbiB0aGUgcmVwcigpIGZhbGxiYWNrCisgICAgICAgICAgICAgICAgYmFzZSA9IGludAorICAgICAgICAgICAgICAgIGJhc2Vfc3RyID0gYmFzZS5fX3N0cl9fCisgICAgICAgICAgICAgICAgaWYgYmFzZV9zdHIuX19vYmpjbGFzc19fIGlzIG9iamVjdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2UuX19yZXByX18oc2VsZikKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZV9zdHIoc2VsZikKKyAgICAgICAgICAgICMgZm9yIHNpbXBsaWNpdHksIHdlIG9ubHkgZGVmaW5lIG9uZSBvcGVyYXRvciB0aGF0CisgICAgICAgICAgICAjIHByb3BhZ2F0ZXMgZXhwcmVzc2lvbnMKKyAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICB0ZW1wID0gaW50KHNlbGYpICsgaW50KCBvdGhlcikKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIE5hbWVkSW50KSBhbmQgaXNpbnN0YW5jZShvdGhlciwgTmFtZWRJbnQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTmFtZWRJbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAnKHswfSArIHsxfSknLmZvcm1hdChzZWxmLl9fbmFtZV9fLCBvdGhlci5fX25hbWVfXyksCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wICkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcAorCisgICAgICAgIGNsYXNzIE5FSShOYW1lZEludCwgRW51bSk6CisgICAgICAgICAgICB4ID0gKCd0aGUteCcsIDEpCisgICAgICAgICAgICB5ID0gKCd0aGUteScsIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhORUkuX19uZXdfXywgRW51bS5fX25ld19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoTkVJLnggKyBORUkueSksICJOYW1lZEludCgnKHRoZS14ICsgdGhlLXkpJywgMykiKQorICAgICAgICBnbG9iYWxzKClbJ05hbWVkSW50J10gPSBOYW1lZEludAorICAgICAgICBnbG9iYWxzKClbJ05FSSddID0gTkVJCisgICAgICAgIE5JNSA9IE5hbWVkSW50KCd0ZXN0JywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOSTUsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTkVJLnkudmFsdWUsIDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGR1bXBzKE5FSS54KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBpY2tsaW5nRXJyb3IpOgorICAgICAgICAgICAgZHVtcHMoTkVJKQorCisgICAgZGVmIHRlc3RfdHVwbGVfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWVUdXBsZSh0dXBsZSwgRW51bSk6CisgICAgICAgICAgICBmaXJzdCA9ICgxLCAnZm9yIHRoZSBtb25leScpCisgICAgICAgICAgICBzZWNvbmQgPSAoMiwgJ2ZvciB0aGUgc2hvdycpCisgICAgICAgICAgICB0aGlyZCA9ICgzLCAnZm9yIHRoZSBtdXNpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShTb21lVHVwbGUuZmlyc3QpLCBTb21lVHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShTb21lVHVwbGUuc2Vjb25kLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lVHVwbGUudGhpcmQsICgzLCAnZm9yIHRoZSBtdXNpYycpKQorICAgICAgICBnbG9iYWxzKClbJ1NvbWVUdXBsZSddID0gU29tZVR1cGxlCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZHMoZHVtcHMoU29tZVR1cGxlLmZpcnN0KSksIFNvbWVUdXBsZS5maXJzdCkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV92YWx1ZXNfZ2l2ZV91bmlxdWVfZW51bV9pdGVtcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQXV0b051bWJlcihFbnVtKToKKyAgICAgICAgICAgIGZpcnN0ID0gKCkKKyAgICAgICAgICAgIHNlY29uZCA9ICgpCisgICAgICAgICAgICB0aGlyZCA9ICgpCisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gbGVuKGNscy5fX21lbWJlcnNfXykgKyAxCisgICAgICAgICAgICAgICAgb2JqID0gb2JqZWN0Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgICAgIG9iai5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqCisgICAgICAgICAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYuX3ZhbHVlXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBsaXN0KEF1dG9OdW1iZXIpLAorICAgICAgICAgICAgICAgIFtBdXRvTnVtYmVyLmZpcnN0LCBBdXRvTnVtYmVyLnNlY29uZCwgQXV0b051bWJlci50aGlyZF0sCisgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChBdXRvTnVtYmVyLnNlY29uZCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQXV0b051bWJlci50aGlyZC52YWx1ZSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBdXRvTnVtYmVyKDEpLCBBdXRvTnVtYmVyLmZpcnN0KQorCisgICAgZGVmIHRlc3RfaW5oZXJpdGVkX25ld19mcm9tX2VuaGFuY2VkX2VudW0oc2VsZik6CisgICAgICAgIGNsYXNzIEF1dG9OdW1iZXIoRW51bSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gbGVuKGNscy5fX21lbWJlcnNfXykgKyAxCisgICAgICAgICAgICAgICAgb2JqID0gb2JqZWN0Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgICAgIG9iai5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqCisgICAgICAgICAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYuX3ZhbHVlXykKKyAgICAgICAgY2xhc3MgQ29sb3IoQXV0b051bWJlcik6CisgICAgICAgICAgICByZWQgPSAoKQorICAgICAgICAgICAgZ3JlZW4gPSAoKQorICAgICAgICAgICAgYmx1ZSA9ICgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmdyZWVuLCBDb2xvci5ibHVlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcChpbnQsIENvbG9yKSksIFsxLCAyLCAzXSkKKworICAgIGRlZiB0ZXN0X2luaGVyaXRlZF9uZXdfZnJvbV9taXhlZF9lbnVtKHNlbGYpOgorICAgICAgICBjbGFzcyBBdXRvTnVtYmVyKEludEVudW0pOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzKToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGxlbihjbHMuX19tZW1iZXJzX18pICsgMQorICAgICAgICAgICAgICAgIG9iaiA9IGludC5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgICAgICAgICAgb2JqLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgICAgIHJldHVybiBvYmoKKyAgICAgICAgY2xhc3MgQ29sb3IoQXV0b051bWJlcik6CisgICAgICAgICAgICByZWQgPSAoKQorICAgICAgICAgICAgZ3JlZW4gPSAoKQorICAgICAgICAgICAgYmx1ZSA9ICgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmdyZWVuLCBDb2xvci5ibHVlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcChpbnQsIENvbG9yKSksIFsxLCAyLCAzXSkKKworICAgIGRlZiB0ZXN0X29yZGVyZWRfbWl4aW4oc2VsZik6CisgICAgICAgIGNsYXNzIE9yZGVyZWRFbnVtKEVudW0pOgorICAgICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX2NsYXNzX18gaXMgb3RoZXIuX19jbGFzc19fOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWVfID49IG90aGVyLl92YWx1ZV8KKyAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIG90aGVyLl9fY2xhc3NfXzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlXyA+IG90aGVyLl92YWx1ZV8KKyAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19jbGFzc19fIGlzIG90aGVyLl9fY2xhc3NfXzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlXyA8PSBvdGhlci5fdmFsdWVfCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fY2xhc3NfXyBpcyBvdGhlci5fX2NsYXNzX186CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZV8gPCBvdGhlci5fdmFsdWVfCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIGNsYXNzIEdyYWRlKE9yZGVyZWRFbnVtKToKKyAgICAgICAgICAgIEEgPSA1CisgICAgICAgICAgICBCID0gNAorICAgICAgICAgICAgQyA9IDMKKyAgICAgICAgICAgIEQgPSAyCisgICAgICAgICAgICBGID0gMQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoR3JhZGUuQSwgR3JhZGUuQikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoR3JhZGUuRiwgR3JhZGUuQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEdyYWRlLkQsIEdyYWRlLkEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKEdyYWRlLkIsIEdyYWRlLkIpCisKKyAgICBkZWYgdGVzdF9leHRlbmRpbmcyKHNlbGYpOgorICAgICAgICBjbGFzcyBTaGFkZShFbnVtKToKKyAgICAgICAgICAgIGRlZiBzaGFkZShzZWxmKToKKyAgICAgICAgICAgICAgICBwcmludChzZWxmLm5hbWUpCisgICAgICAgIGNsYXNzIENvbG9yKFNoYWRlKToKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTW9yZUNvbG9yKENvbG9yKToKKyAgICAgICAgICAgICAgICBjeWFuID0gNAorICAgICAgICAgICAgICAgIG1hZ2VudGEgPSA1CisgICAgICAgICAgICAgICAgeWVsbG93ID0gNgorCisgICAgZGVmIHRlc3RfZXh0ZW5kaW5nMyhzZWxmKToKKyAgICAgICAgY2xhc3MgU2hhZGUoRW51bSk6CisgICAgICAgICAgICBkZWYgc2hhZGUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQorICAgICAgICBjbGFzcyBDb2xvcihTaGFkZSk6CisgICAgICAgICAgICBkZWYgaGV4KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnJXMgaGV4bGlmaWVkIScgJSBzZWxmLnZhbHVlCisgICAgICAgIGNsYXNzIE1vcmVDb2xvcihDb2xvcik6CisgICAgICAgICAgICBjeWFuID0gNAorICAgICAgICAgICAgbWFnZW50YSA9IDUKKyAgICAgICAgICAgIHllbGxvdyA9IDYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb3JlQ29sb3IubWFnZW50YS5oZXgoKSwgJzUgaGV4bGlmaWVkIScpCisKKworICAgIGRlZiB0ZXN0X25vX2R1cGxpY2F0ZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFVuaXF1ZUVudW0oRW51bSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgICAgICAgICAgaWYgYW55KHNlbGYudmFsdWUgPT0gZS52YWx1ZSBmb3IgZSBpbiBjbHMpOgorICAgICAgICAgICAgICAgICAgICBhID0gc2VsZi5uYW1lCisgICAgICAgICAgICAgICAgICAgIGUgPSBjbHMoc2VsZi52YWx1ZSkubmFtZQorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGlhc2VzIG5vdCBhbGxvd2VkIGluIFVuaXF1ZUVudW06ICAlciAtLT4gJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoYSwgZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGNsYXNzIENvbG9yKFVuaXF1ZUVudW0pOgorICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICBibHVlID0gMworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoVW5pcXVlRW51bSk6CisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgZ3JlbmUgPSAyCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBjbGFzcyBQbGFuZXQoRW51bSk6CisgICAgICAgICAgICBNRVJDVVJZID0gKDMuMzAzZSsyMywgMi40Mzk3ZTYpCisgICAgICAgICAgICBWRU5VUyAgID0gKDQuODY5ZSsyNCwgNi4wNTE4ZTYpCisgICAgICAgICAgICBFQVJUSCAgID0gKDUuOTc2ZSsyNCwgNi4zNzgxNGU2KQorICAgICAgICAgICAgTUFSUyAgICA9ICg2LjQyMWUrMjMsIDMuMzk3MmU2KQorICAgICAgICAgICAgSlVQSVRFUiA9ICgxLjllKzI3LCAgIDcuMTQ5MmU3KQorICAgICAgICAgICAgU0FUVVJOICA9ICg1LjY4OGUrMjYsIDYuMDI2OGU3KQorICAgICAgICAgICAgVVJBTlVTICA9ICg4LjY4NmUrMjUsIDIuNTU1OWU3KQorICAgICAgICAgICAgTkVQVFVORSA9ICgxLjAyNGUrMjYsIDIuNDc0NmU3KQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3MsIHJhZGl1cyk6CisgICAgICAgICAgICAgICAgc2VsZi5tYXNzID0gbWFzcyAgICAgICAjIGluIGtpbG9ncmFtcworICAgICAgICAgICAgICAgIHNlbGYucmFkaXVzID0gcmFkaXVzICAgIyBpbiBtZXRlcnMKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIHN1cmZhY2VfZ3Jhdml0eShzZWxmKToKKyAgICAgICAgICAgICAgICAjIHVuaXZlcnNhbCBncmF2aXRhdGlvbmFsIGNvbnN0YW50ICAobTMga2ctMSBzLTIpCisgICAgICAgICAgICAgICAgRyA9IDYuNjczMDBFLTExCisgICAgICAgICAgICAgICAgcmV0dXJuIEcgKiBzZWxmLm1hc3MgLyAoc2VsZi5yYWRpdXMgKiBzZWxmLnJhZGl1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZChQbGFuZXQuRUFSVEguc3VyZmFjZV9ncmF2aXR5LCAyKSwgOS44MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQbGFuZXQuRUFSVEgudmFsdWUsICg1Ljk3NmUrMjQsIDYuMzc4MTRlNikpCisKKyAgICBkZWYgdGVzdF9ub25oYXNoX3ZhbHVlKHNlbGYpOgorICAgICAgICBjbGFzcyBBdXRvTnVtYmVySW5BTGlzdChFbnVtKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscyk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBbbGVuKGNscy5fX21lbWJlcnNfXykgKyAxXQorICAgICAgICAgICAgICAgIG9iaiA9IG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgICAgICAgICBvYmouX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9iagorICAgICAgICBjbGFzcyBDb2xvckluQUxpc3QoQXV0b051bWJlckluQUxpc3QpOgorICAgICAgICAgICAgcmVkID0gKCkKKyAgICAgICAgICAgIGdyZWVuID0gKCkKKyAgICAgICAgICAgIGJsdWUgPSAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3JJbkFMaXN0KSwgW0NvbG9ySW5BTGlzdC5yZWQsIENvbG9ySW5BTGlzdC5ncmVlbiwgQ29sb3JJbkFMaXN0LmJsdWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9ySW5BTGlzdC5yZWQudmFsdWUsIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvckluQUxpc3QoWzFdKSwgQ29sb3JJbkFMaXN0LnJlZCkKKworICAgIGRlZiB0ZXN0X2NvbmZsaWN0aW5nX3R5cGVzX3Jlc29sdmVkX2luX25ldyhzZWxmKToKKyAgICAgICAgY2xhc3MgTGFiZWxsZWRJbnRFbnVtKGludCwgRW51bSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzKToKKyAgICAgICAgICAgICAgICB2YWx1ZSwgbGFiZWwgPSBhcmdzCisgICAgICAgICAgICAgICAgb2JqID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBvYmoubGFiZWwgPSBsYWJlbAorICAgICAgICAgICAgICAgIG9iai5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqCisKKyAgICAgICAgY2xhc3MgTGFiZWxsZWRMaXN0KExhYmVsbGVkSW50RW51bSk6CisgICAgICAgICAgICB1bnByb2Nlc3NlZCA9ICgxLCAiVW5wcm9jZXNzZWQiKQorICAgICAgICAgICAgcGF5bWVudF9jb21wbGV0ZSA9ICgyLCAiUGF5bWVudCBDb21wbGV0ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KExhYmVsbGVkTGlzdCksIFtMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQsIExhYmVsbGVkTGlzdC5wYXltZW50X2NvbXBsZXRlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGFiZWxsZWRMaXN0KDEpLCBMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQpCisKKworY2xhc3MgVGVzdFVuaXF1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF91bmlxdWVfY2xlYW4oc2VsZik6CisgICAgICAgIEB1bmlxdWUKKyAgICAgICAgY2xhc3MgQ2xlYW4oRW51bSk6CisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgICAgICB0d28gPSAnZG9zJworICAgICAgICAgICAgdHJlcyA9IDQuMAorICAgICAgICBAdW5pcXVlCisgICAgICAgIGNsYXNzIENsZWFuZXIoSW50RW51bSk6CisgICAgICAgICAgICBzaW5nbGUgPSAxCisgICAgICAgICAgICBkb3VibGUgPSAyCisgICAgICAgICAgICB0cmlwbGUgPSAzCisKKyAgICBkZWYgdGVzdF91bmlxdWVfZGlydHkoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAndHJlcy4qb25lJyk6CisgICAgICAgICAgICBAdW5pcXVlCisgICAgICAgICAgICBjbGFzcyBEaXJ0eShFbnVtKToKKyAgICAgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgICAgICAgICAgdHdvID0gJ2RvcycKKyAgICAgICAgICAgICAgICB0cmVzID0gMQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAnZG91YmxlLipzaW5nbGUuKnR1cmtleS4qdHJpcGxlJywKKyAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgQHVuaXF1ZQorICAgICAgICAgICAgY2xhc3MgRGlydGllcihJbnRFbnVtKToKKyAgICAgICAgICAgICAgICBzaW5nbGUgPSAxCisgICAgICAgICAgICAgICAgZG91YmxlID0gMQorICAgICAgICAgICAgICAgIHRyaXBsZSA9IDMKKyAgICAgICAgICAgICAgICB0dXJrZXkgPSAzCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMmU5MDRjZi4uYTJkMThkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN5cwogaW1wb3J0IHBpY2tsZQogCkBAIC0xNjgsMTUgKzE2OSwxMiBAQAogICAgICAgICB4ID0gcmFuZ2UoMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHJldmVyc2VkKHgpKSwgdHlwZShpdGVyKHgpKSkKIAotICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X2xlbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgbm90IGFuIGludGVyZmFjZSByZXF1aXJlbWVudAotICAgICAgICBmcm9tIHRlc3QudGVzdF9pdGVybGVuIGltcG9ydCBsZW4KICAgICAgICAgZm9yIHMgaW4gKCdoZWxsbycsIHR1cGxlKCdoZWxsbycpLCBsaXN0KCdoZWxsbycpLCByYW5nZSg1KSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXZlcnNlZChzKSksIGxlbihzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubGVuZ3RoX2hpbnQocmV2ZXJzZWQocykpLCBsZW4ocykpCiAgICAgICAgICAgICByID0gcmV2ZXJzZWQocykKICAgICAgICAgICAgIGxpc3QocikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHIpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sZW5ndGhfaGludChyKSwgMCkKICAgICAgICAgY2xhc3MgU2VxV2l0aFdlaXJkTGVuOgogICAgICAgICAgICAgY2FsbGVkID0gRmFsc2UKICAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgpAQCAtMTg3LDcgKzE4NSw3IEBACiAgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgICAgICAgICAgIHJldHVybiBpbmRleAogICAgICAgICByID0gcmV2ZXJzZWQoU2VxV2l0aFdlaXJkTGVuKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBsZW4sIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBvcGVyYXRvci5sZW5ndGhfaGludCwgcikKIAogCiAgICAgZGVmIHRlc3RfZ2Moc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCA3Zjk1NDdmLi43MDc3YTcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogdHJ5OgogICAgIHNlbGVjdC5lcG9sbCgpCi1leGNlcHQgSU9FcnJvciBhcyBlOgorZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT1NZUzoKICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImtlcm5lbCBkb2Vzbid0IHN1cHBvcnQgZXBvbGwoKSIpCiAgICAgcmFpc2UKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgY2xpZW50LnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgoJzEyNy4wLjAuMScsIHNlbGYuc2VydmVyU29ja2V0LmdldHNvY2tuYW1lKClbMV0pKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUlOUFJPR1JFU1MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiQ29ubmVjdCBzaG91bGQgaGF2ZSByYWlzZWQgRUlOUFJPR1JFU1MiKQpAQCAtODcsNiArODcsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3QuZXBvbGwsIFsnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LmVwb2xsLCB7fSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxlY3QuZXBvbGwoMTYpIGFzIGVwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGVwLmZpbGVubygpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcC5jbG9zZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcC5jbG9zZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGVwLmZpbGVubykKKwogICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKICAgICAgICAgc2VydmVyLCBjbGllbnQgPSBzZWxmLl9jb25uZWN0ZWRfcGFpcigpCiAKQEAgLTExNSwxMiArMTIyLDEyIEBACiAgICAgICAgICAgICAjIFZhbHVlRXJyb3I6IGZpbGUgZGVzY3JpcHRvciBjYW5ub3QgYmUgYSBuZWdhdGl2ZSBpbnRlZ2VyICgtMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGVwLnJlZ2lzdGVyLCAtMSwKICAgICAgICAgICAgICAgICBzZWxlY3QuRVBPTExJTiB8IHNlbGVjdC5FUE9MTE9VVCkKLSAgICAgICAgICAgICMgSU9FcnJvcjogW0Vycm5vIDldIEJhZCBmaWxlIGRlc2NyaXB0b3IKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGVwLnJlZ2lzdGVyLCAxMDAwMCwKKyAgICAgICAgICAgICMgT1NFcnJvcjogW0Vycm5vIDldIEJhZCBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGVwLnJlZ2lzdGVyLCAxMDAwMCwKICAgICAgICAgICAgICAgICBzZWxlY3QuRVBPTExJTiB8IHNlbGVjdC5FUE9MTE9VVCkKICAgICAgICAgICAgICMgcmVnaXN0ZXJpbmcgdHdpY2UgYWxzbyByYWlzZXMgYW4gZXhjZXB0aW9uCiAgICAgICAgICAgICBlcC5yZWdpc3RlcihzZXJ2ZXIsIHNlbGVjdC5FUE9MTElOIHwgc2VsZWN0LkVQT0xMT1VUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgZXAucmVnaXN0ZXIsIHNlcnZlciwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGVwLnJlZ2lzdGVyLCBzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgc2VsZWN0LkVQT0xMSU4gfCBzZWxlY3QuRVBPTExPVVQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBlcC5jbG9zZSgpCkBAIC0xNDIsNyArMTQ5LDcgQEAKICAgICAgICAgZXAuY2xvc2UoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlcDIucG9sbCgxLCA0KQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIGVycm5vLkVCQURGLCBlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJlcG9sbCBvbiBjbG9zZWQgZmQgZGlkbid0IHJhaXNlIEVCQURGIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQppbmRleCAxYWQ3Zjk3Li5mMDg1MWJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CkBAIC04LDggKzgsOCBAQAogaW1wb3J0IGVycm5vCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoVEVTVEZOLCBjYXB0dXJlZF9vdXRwdXQsIGNoZWNrX2ltcGxfZGV0YWlsLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjcHl0aG9uX29ubHksIGdjX2NvbGxlY3QsIHJ1bl91bml0dGVzdCwgbm9fdHJhY2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja193YXJuaW5ncywgY3B5dGhvbl9vbmx5LCBnY19jb2xsZWN0LCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5vX3RyYWNpbmcsIHVubGluaykKIAogY2xhc3MgTmFpdmVFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CkBAIC0yNDQsMjIgKzI0NCwyMiBAQAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoJ2ZvbycsIDEpfSksCiAgICAgICAgICAgICAoU3lzdGVtRXhpdCwgKCdmb28nLCksCiAgICAgICAgICAgICAgICAgeydhcmdzJyA6ICgnZm9vJywpLCAnY29kZScgOiAnZm9vJ30pLAotICAgICAgICAgICAgKElPRXJyb3IsICgnZm9vJywpLAorICAgICAgICAgICAgKE9TRXJyb3IsICgnZm9vJywpLAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoJ2ZvbycsKSwgJ2ZpbGVuYW1lJyA6IE5vbmUsCiAgICAgICAgICAgICAgICAgICdlcnJubycgOiBOb25lLCAnc3RyZXJyb3InIDogTm9uZX0pLAotICAgICAgICAgICAgKElPRXJyb3IsICgnZm9vJywgJ2JhcicpLAorICAgICAgICAgICAgKE9TRXJyb3IsICgnZm9vJywgJ2JhcicpLAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoJ2ZvbycsICdiYXInKSwgJ2ZpbGVuYW1lJyA6IE5vbmUsCiAgICAgICAgICAgICAgICAgICdlcnJubycgOiAnZm9vJywgJ3N0cmVycm9yJyA6ICdiYXInfSksCi0gICAgICAgICAgICAoSU9FcnJvciwgKCdmb28nLCAnYmFyJywgJ2JheicpLAorICAgICAgICAgICAgKE9TRXJyb3IsICgnZm9vJywgJ2JhcicsICdiYXonKSwKICAgICAgICAgICAgICAgICB7J2FyZ3MnIDogKCdmb28nLCAnYmFyJyksICdmaWxlbmFtZScgOiAnYmF6JywKICAgICAgICAgICAgICAgICAgJ2Vycm5vJyA6ICdmb28nLCAnc3RyZXJyb3InIDogJ2Jhcid9KSwKLSAgICAgICAgICAgIChJT0Vycm9yLCAoJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1dXgnKSwKKyAgICAgICAgICAgIChPU0Vycm9yLCAoJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1dXgnKSwKICAgICAgICAgICAgICAgICB7J2FyZ3MnIDogKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXV4Jyl9KSwKLSAgICAgICAgICAgIChFbnZpcm9ubWVudEVycm9yLCAoJ2Vycm5vU3RyJywgJ3N0ckVycm9yU3RyJywgJ2ZpbGVuYW1lU3RyJyksCisgICAgICAgICAgICAoT1NFcnJvciwgKCdlcnJub1N0cicsICdzdHJFcnJvclN0cicsICdmaWxlbmFtZVN0cicpLAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoJ2Vycm5vU3RyJywgJ3N0ckVycm9yU3RyJyksCiAgICAgICAgICAgICAgICAgICdzdHJlcnJvcicgOiAnc3RyRXJyb3JTdHInLCAnZXJybm8nIDogJ2Vycm5vU3RyJywKICAgICAgICAgICAgICAgICAgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KSwKLSAgICAgICAgICAgIChFbnZpcm9ubWVudEVycm9yLCAoMSwgJ3N0ckVycm9yU3RyJywgJ2ZpbGVuYW1lU3RyJyksCisgICAgICAgICAgICAoT1NFcnJvciwgKDEsICdzdHJFcnJvclN0cicsICdmaWxlbmFtZVN0cicpLAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoMSwgJ3N0ckVycm9yU3RyJyksICdlcnJubycgOiAxLAogICAgICAgICAgICAgICAgICAnc3RyZXJyb3InIDogJ3N0ckVycm9yU3RyJywgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KSwKICAgICAgICAgICAgIChTeW50YXhFcnJvciwgKCksIHsnbXNnJyA6IE5vbmUsICd0ZXh0JyA6IE5vbmUsCkBAIC00MDksNyArNDA5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKLSAgICAgICAgY2xhc3MgTXlFeGNlcHRpb24oRW52aXJvbm1lbnRFcnJvcik6CisgICAgICAgIGNsYXNzIE15RXhjZXB0aW9uKE9TRXJyb3IpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGUgPSBNeUV4Y2VwdGlvbigpCkBAIC05NDcsMTMgKzk0NywxMSBAQAogCiAgICAgZGVmIHRlc3Rfbm9uX3N0cl9hcmd1bWVudChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTU3NzgKLSAgICAgICAgYXJnID0gYidhYmMnCi0gICAgICAgIGV4YyA9IEltcG9ydEVycm9yKGFyZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYXJnKSwgc3RyKGV4YykpCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBCeXRlc1dhcm5pbmcpLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIGFyZyA9IGInYWJjJworICAgICAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoYXJnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYXJnKSwgc3RyKGV4YykpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChFeGNlcHRpb25UZXN0cywgSW1wb3J0RXJyb3JUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKaW5kZXggNzcwZTcwYy4uNGE4YmVjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKQEAgLTI2NCw5ICsyNjQsMTEgQEAKICAgICBkZWYgdGVzdF9kaXNhYmxlZF9ieV9kZWZhdWx0KHNlbGYpOgogICAgICAgICAjIEJ5IGRlZmF1bHQsIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGRpc2FibGVkCiAgICAgICAgIGNvZGUgPSAiaW1wb3J0IGZhdWx0aGFuZGxlcjsgcHJpbnQoZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKSkiCi0gICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soIi1jIiwgY29kZSkKLSAgICAgICAgc3Rkb3V0ID0gKHN0ZG91dCArIHN0ZGVycikuc3RyaXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJGYWxzZSIpCisgICAgICAgIGFyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctRScsICctYycsIGNvZGUpCisgICAgICAgICMgdXNlIHN1YnByb2Nlc3MgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgdGVzdC5zY3JpcHRfaGVscGVyIGFkZHMKKyAgICAgICAgIyAiLVggZmF1bHRoYW5kbGVyIiB0byB0aGUgY29tbWFuZCBsaW5lCisgICAgICAgIHN0ZG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LnJzdHJpcCgpLCBiIkZhbHNlIikKIAogICAgIGRlZiB0ZXN0X3N5c194b3B0aW9ucyhzZWxmKToKICAgICAgICAgIyBUZXN0IHB5dGhvbiAtWCBmYXVsdGhhbmRsZXIKQEAgLTU5MCw4ICs1OTIsNSBAQAogICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGNoYWluPVRydWUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZhdWx0SGFuZGxlclRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZjbnRsLnB5IGIvTGliL3Rlc3QvdGVzdF9mY250bC5weQppbmRleCBlMmExYjM3Li5iNjRlYmEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZjbnRsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmNudGwucHkKQEAgLTEsNyArMSw0IEBACiAiIiJUZXN0IHByb2dyYW0gZm9yIHRoZSBmY250bCBDIG1vZHVsZS4KLQotT1MvMitFTVggZG9lc24ndCBzdXBwb3J0IHRoZSBmaWxlIGxvY2tpbmcgb3BlcmF0aW9ucy4KLQogIiIiCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBvcwpAQCAtMzksOCArMzYsNiBAQAogICAgICAgICBsb2NrZGF0YSA9IHN0cnVjdC5wYWNrKCdxcWloaGknLCAwLCAwLCAwLCBmY250bC5GX1dSTENLLCAwLCAwKQogICAgIGVsaWYgc3lzLnBsYXRmb3JtIGluIFsnYWl4MycsICdhaXg0JywgJ2hwLXV4QicsICd1bml4d2FyZTcnXToKICAgICAgICAgbG9ja2RhdGEgPSBzdHJ1Y3QucGFjaygnaGhsbGxpaScsIGZjbnRsLkZfV1JMQ0ssIDAsIDAsIDAsIDAsIDAsIDApCi0gICAgZWxpZiBzeXMucGxhdGZvcm0gaW4gWydvczJlbXgnXToKLSAgICAgICAgbG9ja2RhdGEgPSBOb25lCiAgICAgZWxzZToKICAgICAgICAgbG9ja2RhdGEgPSBzdHJ1Y3QucGFjaygnaGgnK3N0YXJ0X2xlbisnaGgnLCBmY250bC5GX1dSTENLLCAwLCAwLCAwLCAwLCAwKQogICAgIGlmIGxvY2tkYXRhOgpAQCAtNjYsMTggKzYxLDE2IEBACiAgICAgICAgIHJ2ID0gZmNudGwuZmNudGwoc2VsZi5mLmZpbGVubygpLCBmY250bC5GX1NFVEZMLCBvcy5PX05PTkJMT0NLKQogICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ1N0YXR1cyBmcm9tIGZjbnRsIHdpdGggT19OT05CTE9DSzogJywgcnYpCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBub3QgaW4gWydvczJlbXgnXToKLSAgICAgICAgICAgIHJ2ID0gZmNudGwuZmNudGwoc2VsZi5mLmZpbGVubygpLCBmY250bC5GX1NFVExLVywgbG9ja2RhdGEpCi0gICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCdTdHJpbmcgZnJvbSBmY250bCB3aXRoIEZfU0VUTEtXOiAnLCByZXByKHJ2KSkKKyAgICAgICAgcnYgPSBmY250bC5mY250bChzZWxmLmYuZmlsZW5vKCksIGZjbnRsLkZfU0VUTEtXLCBsb2NrZGF0YSkKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCdTdHJpbmcgZnJvbSBmY250bCB3aXRoIEZfU0VUTEtXOiAnLCByZXByKHJ2KSkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZjbnRsX2ZpbGVfZGVzY3JpcHRvcihzZWxmKToKICAgICAgICAgIyBhZ2FpbiwgYnV0IHBhc3MgdGhlIGZpbGUgcmF0aGVyIHRoYW4gbnVtZXJpYyBkZXNjcmlwdG9yCiAgICAgICAgIHNlbGYuZiA9IG9wZW4oVEVTVEZOLCAnd2InKQogICAgICAgICBydiA9IGZjbnRsLmZjbnRsKHNlbGYuZiwgZmNudGwuRl9TRVRGTCwgb3MuT19OT05CTE9DSykKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIG5vdCBpbiBbJ29zMmVteCddOgotICAgICAgICAgICAgcnYgPSBmY250bC5mY250bChzZWxmLmYsIGZjbnRsLkZfU0VUTEtXLCBsb2NrZGF0YSkKKyAgICAgICAgcnYgPSBmY250bC5mY250bChzZWxmLmYsIGZjbnRsLkZfU0VUTEtXLCBsb2NrZGF0YSkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZjbnRsX2JhZF9maWxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlLnB5CmluZGV4IDc2YjE2OTQuLmQ1NGU5NzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmLmNsb3NlZCkKIAogICAgICAgICBpZiBoYXNhdHRyKGYsICJyZWFkaW50byIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKElPRXJyb3IsIFR5cGVFcnJvciksIGYucmVhZGludG8sICIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKE9TRXJyb3IsIFR5cGVFcnJvciksIGYucmVhZGludG8sICIiKQogICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2xvc2VkKQogCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mLl9fZXhpdF9fKCpzeXMuZXhjX2luZm8oKSksIE5vbmUpCiAKICAgICBkZWYgdGVzdFJlYWRXaGVuV3JpdGluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgc2VsZi5mLnJlYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYuZi5yZWFkKQogCiBjbGFzcyBDQXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgb3BlbiA9IGlvLm9wZW4KQEAgLTE3Nyw3ICsxNzcsNyBAQAogICAgICAgICAgICAgICAgIGQgPSBpbnQoZi5yZWFkKCkuZGVjb2RlKCJhc2NpaSIpKQogICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnZXJyb3Igc2V0dGluZyBidWZmZXIgc2l6ZSAlZDogJXMnICUgKHMsIHN0cihtc2cpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgcykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlY21wLnB5CmluZGV4IDA5NTk5NzkuLmM3Y2IzZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVjbXAucHkKQEAgLTEsNCArMSwzIEBACi0KIGltcG9ydCBvcywgZmlsZWNtcCwgc2h1dGlsLCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTQwLDE1ICszOSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbGVjbXAuY21wKHNlbGYubmFtZSwgc2VsZi5kaXIpLAogICAgICAgICAgICAgICAgICAgICAiRmlsZSBhbmQgZGlyZWN0b3J5IGNvbXBhcmUgYXMgZXF1YWwiKQogCisgICAgZGVmIHRlc3RfY2FjaGVfY2xlYXIoc2VsZik6CisgICAgICAgIGZpcnN0X2NvbXBhcmUgPSBmaWxlY21wLmNtcChzZWxmLm5hbWUsIHNlbGYubmFtZV9zYW1lLCBzaGFsbG93PUZhbHNlKQorICAgICAgICBzZWNvbmRfY29tcGFyZSA9IGZpbGVjbXAuY21wKHNlbGYubmFtZSwgc2VsZi5uYW1lX2RpZmYsIHNoYWxsb3c9RmFsc2UpCisgICAgICAgIGZpbGVjbXAuY2xlYXJfY2FjaGUoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZpbGVjbXAuX2NhY2hlKSA9PSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhY2hlIG5vdCBjbGVhcmVkIGFmdGVyIGNhbGxpbmcgY2xlYXJfY2FjaGUiKQorCiBjbGFzcyBEaXJDb21wYXJlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCiAgICAgICAgIHNlbGYuZGlyID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2RpcicpCiAgICAgICAgIHNlbGYuZGlyX3NhbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZGlyLXNhbWUnKQogICAgICAgICBzZWxmLmRpcl9kaWZmID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Rpci1kaWZmJykKKworICAgICAgICAjIEFub3RoZXIgZGlyIGlzIGNyZWF0ZWQgdW5kZXIgZGlyX3NhbWUsIGJ1dCBpdCBoYXMgYSBuYW1lIGZyb20gdGhlCisgICAgICAgICMgaWdub3JlZCBsaXN0IHNvIGl0IHNob3VsZCBub3QgYWZmZWN0IHRlc3RpbmcgcmVzdWx0cy4KKyAgICAgICAgc2VsZi5kaXJfaWdub3JlZCA9IG9zLnBhdGguam9pbihzZWxmLmRpcl9zYW1lLCAnLmhnJykKKwogICAgICAgICBzZWxmLmNhc2VpbnNlbnNpdGl2ZSA9IG9zLnBhdGgubm9ybWNhc2UoJ0EnKSA9PSBvcy5wYXRoLm5vcm1jYXNlKCdhJykKICAgICAgICAgZGF0YSA9ICdDb250ZW50cyBvZiBmaWxlIGdvIGhlcmUuXG4nCi0gICAgICAgIGZvciBkaXIgaW4gW3NlbGYuZGlyLCBzZWxmLmRpcl9zYW1lLCBzZWxmLmRpcl9kaWZmXToKKyAgICAgICAgZm9yIGRpciBpbiAoc2VsZi5kaXIsIHNlbGYuZGlyX3NhbWUsIHNlbGYuZGlyX2RpZmYsIHNlbGYuZGlyX2lnbm9yZWQpOgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkaXIsIFRydWUpCiAgICAgICAgICAgICBvcy5ta2RpcihkaXIpCiAgICAgICAgICAgICBpZiBzZWxmLmNhc2VpbnNlbnNpdGl2ZSBhbmQgZGlyIGlzIHNlbGYuZGlyX3NhbWU6CkBAIC02NCw5ICs3NSwxMSBAQAogICAgICAgICBvdXRwdXQuY2xvc2UoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZGlyKQotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZGlyX3NhbWUpCi0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5kaXJfZGlmZikKKyAgICAgICAgZm9yIGRpciBpbiAoc2VsZi5kaXIsIHNlbGYuZGlyX3NhbWUsIHNlbGYuZGlyX2RpZmYpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkaXIpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2lnbm9yZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy5oZycsIGZpbGVjbXAuREVGQVVMVF9JR05PUkVTKQogCiAgICAgZGVmIHRlc3RfY21wZmlsZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlY21wLmNtcGZpbGVzKHNlbGYuZGlyLCBzZWxmLmRpciwgWydmaWxlJ10pID09CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IDFlNzA2NDEuLmM1ZTU3ZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yNzUsOCArMjc1LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdDEgPSB3cml0ZVRtcCgxLCBbIiJdKQogICAgICAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9dDEpIGFzIGZpOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmkuX2ZpbGVzLCAoKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJlbW92ZV90ZW1wZmlsZXModDEpCkBAIC04MzUsMjIgKzgzNSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KAotICAgICAgICBCdWZmZXJTaXplc1Rlc3RzLAotICAgICAgICBGaWxlSW5wdXRUZXN0cywKLSAgICAgICAgVGVzdF9maWxlaW5wdXRfaW5wdXQsCi0gICAgICAgIFRlc3RfZmlsZWlucHV0X2Nsb3NlLAotICAgICAgICBUZXN0X2ZpbGVpbnB1dF9uZXh0ZmlsZSwKLSAgICAgICAgVGVzdF9maWxlaW5wdXRfZmlsZW5hbWUsCi0gICAgICAgIFRlc3RfZmlsZWlucHV0X2xpbmVubywKLSAgICAgICAgVGVzdF9maWxlaW5wdXRfZmlsZWxpbmVubywKLSAgICAgICAgVGVzdF9maWxlaW5wdXRfZmlsZW5vLAotICAgICAgICBUZXN0X2ZpbGVpbnB1dF9pc2ZpcnN0bGluZSwKLSAgICAgICAgVGVzdF9maWxlaW5wdXRfaXNzdGRpbiwKLSAgICAgICAgVGVzdF9ob29rX2NvbXByZXNzZWQsCi0gICAgICAgIFRlc3RfaG9va19lbmNvZGVkLAotICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQppbmRleCAxOTczN2Q5Li4wY2NiZGEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weQpAQCAtMTQ1LDE2ICsxNDUsMTYgQEAKICAgICAgICAgIyBVbml4IGNhbGxzIGRpcmNoZWNrKCkgYW5kIHJldHVybnMgIltFcnJubyAyMV06IElzIGEgZGlyZWN0b3J5IgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfRmlsZUlPKCcuJywgJ3InKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChlLmVycm5vLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiLiIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlNob3VsZCBoYXZlIHJhaXNlZCBJT0Vycm9yIikKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiU2hvdWxkIGhhdmUgcmFpc2VkIE9TRXJyb3IiKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICJ0ZXN0IG9ubHkgd29ya3Mgb24gYSBQT1NJWC1saWtlIHN5c3RlbSIpCiAgICAgZGVmIHRlc3RPcGVuRGlyRkQoc2VsZik6CiAgICAgICAgIGZkID0gb3Mub3BlbignLicsIG9zLk9fUkRPTkxZKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgX0ZpbGVJTyhmZCwgJ3InKQogICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJU0RJUikKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIHdyYXBwZXIKIApAQCAtMTg0LDE0ICsxODQsMTQgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKGYuZmlsZW5vKCkpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZnVuYyhzZWxmLCBmKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBlcnJuby5FQkFERikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJTaG91bGQgaGF2ZSByYWlzZWQgSU9FcnJvciIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJTaG91bGQgaGF2ZSByYWlzZWQgT1NFcnJvciIpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gd3JhcHBlcgogCkBAIC0yMzgsNyArMjM4LDcgQEAKICAgICBkZWYgUmVvcGVuRm9yUmVhZChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQogICAgICAgICBvcy5jbG9zZShzZWxmLmYuZmlsZW5vKCkpCkBAIC0yODYsNyArMjg2LDcgQEAKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAid2luMzIiOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZiA9IF9GaWxlSU8oIi9kZXYvdHR5IiwgImEiKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAjIFdoZW4gcnVuIGluIGEgY3JvbiBqb2IgdGhlcmUganVzdCBhcmVuJ3QgYW55CiAgICAgICAgICAgICAgICAgICAgICMgdHR5cywgc28gc2tpcCB0aGUgdGVzdC4gIFRoaXMgYWxzbyBoYW5kbGVzIG90aGVyCiAgICAgICAgICAgICAgICAgICAgICMgT1MnZXMgdGhhdCBkb24ndCBzdXBwb3J0IC9kZXYvdHR5LgpAQCAtMzQ3LDcgKzM0Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIF9GaWxlSU8sIG1ha2VfYmFkX2ZkKCkpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgaW1wb3J0IG1zdmNydAotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgbXN2Y3J0LmdldF9vc2ZoYW5kbGUsIG1ha2VfYmFkX2ZkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtc3ZjcnQuZ2V0X29zZmhhbmRsZSwgbWFrZV9iYWRfZmQoKSkKICAgICAgICAgIyBJc3N1ZSAxNTk4OQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBfdGVzdGNhcGkuSU5UX01JTiAtIDEpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbmFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYzliODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbmFsaXphdGlvbi5weQpAQCAtMCwwICsxLDUxMyBAQAorIiIiCitUZXN0cyBmb3Igb2JqZWN0IGZpbmFsaXphdGlvbiBzZW1hbnRpY3MsIGFzIG91dGxpbmVkIGluIFBFUCA0NDIuCisiIiIKKworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBnYworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgorCitpbXBvcnQgX3Rlc3RjYXBpCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitjbGFzcyBOb25HQ1NpbXBsZUJhc2U6CisgICAgIiIiCisgICAgVGhlIGJhc2UgY2xhc3MgZm9yIGFsbCB0aGUgb2JqZWN0cyB1bmRlciB0ZXN0LCBlcXVpcHBlZCB3aXRoIHZhcmlvdXMKKyAgICB0ZXN0aW5nIGZlYXR1cmVzLgorICAgICIiIgorCisgICAgc3Vydml2b3JzID0gW10KKyAgICBkZWxfY2FsbHMgPSBbXQorICAgIHRwX2RlbF9jYWxscyA9IFtdCisgICAgZXJyb3JzID0gW10KKworICAgIF9jbGVhbmluZyA9IEZhbHNlCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jbGVhbnVwKGNscyk6CisgICAgICAgIGNscy5zdXJ2aXZvcnMuY2xlYXIoKQorICAgICAgICBjbHMuZXJyb3JzLmNsZWFyKCkKKyAgICAgICAgZ2MuZ2FyYmFnZS5jbGVhcigpCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBjbHMuZGVsX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgY2xzLnRwX2RlbF9jYWxscy5jbGVhcigpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiB0ZXN0KGNscyk6CisgICAgICAgICIiIgorICAgICAgICBBIGNvbnRleHQgbWFuYWdlciB0byB1c2UgYXJvdW5kIGFsbCBmaW5hbGl6YXRpb24gdGVzdHMuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHN1cHBvcnQuZGlzYWJsZV9nYygpOgorICAgICAgICAgICAgY2xzLmRlbF9jYWxscy5jbGVhcigpCisgICAgICAgICAgICBjbHMudHBfZGVsX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgICAgIE5vbkdDU2ltcGxlQmFzZS5fY2xlYW5pbmcgPSBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgaWYgY2xzLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgY2xzLmVycm9yc1swXQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBOb25HQ1NpbXBsZUJhc2UuX2NsZWFuaW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgIGNscy5fY2xlYW51cCgpCisKKyAgICBkZWYgY2hlY2tfc2FuaXR5KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhlIG9iamVjdCBpcyBzYW5lIChub24tYnJva2VuKS4KKyAgICAgICAgIiIiCisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFBFUCA0NDIgZmluYWxpemVyLiAgUmVjb3JkIHRoYXQgdGhpcyB3YXMgY2FsbGVkLCBjaGVjayB0aGUKKyAgICAgICAgb2JqZWN0IGlzIGluIGEgc2FuZSBzdGF0ZSwgYW5kIGludm9rZSBhIHNpZGUgZWZmZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NsZWFuaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuZGVsX2NhbGxzLmFwcGVuZChpZChzZWxmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3Nhbml0eSgpCisgICAgICAgICAgICAgICAgc2VsZi5zaWRlX2VmZmVjdCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlKQorCisgICAgZGVmIHNpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBzaWRlIGVmZmVjdCBjYWxsZWQgb24gZGVzdHJ1Y3Rpb24uCisgICAgICAgICIiIgorCisKK2NsYXNzIFNpbXBsZUJhc2UoTm9uR0NTaW1wbGVCYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pZF8gPSBpZChzZWxmKQorCisgICAgZGVmIGNoZWNrX3Nhbml0eShzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuaWRfID09IGlkKHNlbGYpCisKKworY2xhc3MgTm9uR0MoTm9uR0NTaW1wbGVCYXNlKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCitjbGFzcyBOb25HQ1Jlc3VycmVjdG9yKE5vbkdDU2ltcGxlQmFzZSk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIGRlZiBzaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlc3VycmVjdCBzZWxmIGJ5IHN0b3Jpbmcgc2VsZiBpbiBhIGNsYXNzLXdpZGUgbGlzdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuc3Vydml2b3JzLmFwcGVuZChzZWxmKQorCitjbGFzcyBTaW1wbGUoU2ltcGxlQmFzZSk6CisgICAgcGFzcworCitjbGFzcyBTaW1wbGVSZXN1cnJlY3RvcihOb25HQ1Jlc3VycmVjdG9yLCBTaW1wbGVCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgVGVzdEJhc2U6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYub2xkX2dhcmJhZ2UgPSBnYy5nYXJiYWdlWzpdCisgICAgICAgIGdjLmdhcmJhZ2VbOl0gPSBbXQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIE5vbmUgb2YgdGhlIHRlc3RzIGhlcmUgc2hvdWxkIHB1dCBhbnl0aGluZyBpbiBnYy5nYXJiYWdlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2MuZ2FyYmFnZSwgW10pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgc2VsZi5vbGRfZ2FyYmFnZQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisKKyAgICBkZWYgYXNzZXJ0X2RlbF9jYWxscyhzZWxmLCBpZHMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChTaW1wbGVCYXNlLmRlbF9jYWxscyksIHNvcnRlZChpZHMpKQorCisgICAgZGVmIGFzc2VydF90cF9kZWxfY2FsbHMoc2VsZiwgaWRzKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoU2ltcGxlQmFzZS50cF9kZWxfY2FsbHMpLCBzb3J0ZWQoaWRzKSkKKworICAgIGRlZiBhc3NlcnRfc3Vydml2b3JzKHNlbGYsIGlkcyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGlkKHgpIGZvciB4IGluIFNpbXBsZUJhc2Uuc3Vydml2b3JzKSwgc29ydGVkKGlkcykpCisKKyAgICBkZWYgYXNzZXJ0X2dhcmJhZ2Uoc2VsZiwgaWRzKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaWQoeCkgZm9yIHggaW4gZ2MuZ2FyYmFnZSksIHNvcnRlZChpZHMpKQorCisgICAgZGVmIGNsZWFyX3N1cnZpdm9ycyhzZWxmKToKKyAgICAgICAgU2ltcGxlQmFzZS5zdXJ2aXZvcnMuY2xlYXIoKQorCisKK2NsYXNzIFNpbXBsZUZpbmFsaXphdGlvblRlc3QoVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGZpbmFsaXphdGlvbiB3aXRob3V0IHJlZmN5Y2xlcy4KKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgd2l0aCBTaW1wbGVCYXNlLnRlc3QoKToKKyAgICAgICAgICAgIHMgPSBTaW1wbGUoKQorICAgICAgICAgICAgaWRzID0gW2lkKHMpXQorICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihzKQorICAgICAgICAgICAgZGVsIHMKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKGlkcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3N1cnZpdm9ycyhbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKGlkcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3N1cnZpdm9ycyhbXSkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9yZXN1cnJlY3Qoc2VsZik6CisgICAgICAgIHdpdGggU2ltcGxlQmFzZS50ZXN0KCk6CisgICAgICAgICAgICBzID0gU2ltcGxlUmVzdXJyZWN0b3IoKQorICAgICAgICAgICAgaWRzID0gW2lkKHMpXQorICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihzKQorICAgICAgICAgICAgZGVsIHMKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKGlkcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3N1cnZpdm9ycyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHdyKCksIE5vbmUpCisgICAgICAgICAgICBzZWxmLmNsZWFyX3N1cnZpdm9ycygpCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9zdXJ2aXZvcnMoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X25vbl9nYyhzZWxmKToKKyAgICAgICAgd2l0aCBTaW1wbGVCYXNlLnRlc3QoKToKKyAgICAgICAgICAgIHMgPSBOb25HQygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdjLmlzX3RyYWNrZWQocykpCisgICAgICAgICAgICBpZHMgPSBbaWQocyldCisgICAgICAgICAgICBkZWwgcworICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorCisgICAgZGVmIHRlc3Rfbm9uX2djX3Jlc3VycmVjdChzZWxmKToKKyAgICAgICAgd2l0aCBTaW1wbGVCYXNlLnRlc3QoKToKKyAgICAgICAgICAgIHMgPSBOb25HQ1Jlc3VycmVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2MuaXNfdHJhY2tlZChzKSkKKyAgICAgICAgICAgIGlkcyA9IFtpZChzKV0KKyAgICAgICAgICAgIGRlbCBzCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9zdXJ2aXZvcnMoaWRzKQorICAgICAgICAgICAgc2VsZi5jbGVhcl9zdXJ2aXZvcnMoKQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzICogMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3N1cnZpdm9ycyhpZHMpCisKKworY2xhc3MgU2VsZkN5Y2xlQmFzZToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYucmVmID0gc2VsZgorCisgICAgZGVmIGNoZWNrX3Nhbml0eShzZWxmKToKKyAgICAgICAgc3VwZXIoKS5jaGVja19zYW5pdHkoKQorICAgICAgICBhc3NlcnQgc2VsZi5yZWYgaXMgc2VsZgorCitjbGFzcyBTaW1wbGVTZWxmQ3ljbGUoU2VsZkN5Y2xlQmFzZSwgU2ltcGxlKToKKyAgICBwYXNzCisKK2NsYXNzIFNlbGZDeWNsZVJlc3VycmVjdG9yKFNlbGZDeWNsZUJhc2UsIFNpbXBsZVJlc3VycmVjdG9yKToKKyAgICBwYXNzCisKK2NsYXNzIFN1aWNpZGFsU2VsZkN5Y2xlKFNlbGZDeWNsZUJhc2UsIFNpbXBsZSk6CisKKyAgICBkZWYgc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBFeHBsaWNpdGx5IGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlZiA9IE5vbmUKKworCitjbGFzcyBTZWxmQ3ljbGVGaW5hbGl6YXRpb25UZXN0KFRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBmaW5hbGl6YXRpb24gb2YgYW4gb2JqZWN0IGhhdmluZyBhIHNpbmdsZSBjeWNsaWMgcmVmZXJlbmNlIHRvCisgICAgaXRzZWxmLgorICAgICIiIgorCisgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgorICAgICAgICB3aXRoIFNpbXBsZUJhc2UudGVzdCgpOgorICAgICAgICAgICAgcyA9IFNpbXBsZVNlbGZDeWNsZSgpCisgICAgICAgICAgICBpZHMgPSBbaWQocyldCisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHMpCisgICAgICAgICAgICBkZWwgcworICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Jlc3VycmVjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX19kZWxfXyBjYW4gcmVzdXJyZWN0IHRoZSBvYmplY3QgYmVpbmcgZmluYWxpemVkLgorICAgICAgICB3aXRoIFNpbXBsZUJhc2UudGVzdCgpOgorICAgICAgICAgICAgcyA9IFNlbGZDeWNsZVJlc3VycmVjdG9yKCkKKyAgICAgICAgICAgIGlkcyA9IFtpZChzKV0KKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYocykKKyAgICAgICAgICAgIGRlbCBzCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9zdXJ2aXZvcnMoaWRzKQorICAgICAgICAgICAgIyBYWFggaXMgdGhpcyBkZXNpcmFibGU/CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCisgICAgICAgICAgICAjIFdoZW4gdHJ5aW5nIHRvIGRlc3Ryb3kgdGhlIG9iamVjdCBhIHNlY29uZCB0aW1lLCBfX2RlbF9fCisgICAgICAgICAgICAjIGlzbid0IGNhbGxlZCBhbnltb3JlIChhbmQgdGhlIG9iamVjdCBpc24ndCByZXN1cnJlY3RlZCkuCisgICAgICAgICAgICBzZWxmLmNsZWFyX3N1cnZpdm9ycygpCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9zdXJ2aXZvcnMoW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfc3VpY2lkZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBHQyBpcyBhYmxlIHRvIGRlYWwgd2l0aCBhbiBvYmplY3QgdGhhdCBraWxscyBpdHMgbGFzdAorICAgICAgICAjIHJlZmVyZW5jZSBkdXJpbmcgX19kZWxfXy4KKyAgICAgICAgd2l0aCBTaW1wbGVCYXNlLnRlc3QoKToKKyAgICAgICAgICAgIHMgPSBTdWljaWRhbFNlbGZDeWNsZSgpCisgICAgICAgICAgICBpZHMgPSBbaWQocyldCisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHMpCisgICAgICAgICAgICBkZWwgcworICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorCisKK2NsYXNzIENoYWluZWRCYXNlOgorCisgICAgZGVmIGNoYWluKHNlbGYsIGxlZnQpOgorICAgICAgICBzZWxmLnN1aWNpZGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5sZWZ0ID0gbGVmdAorICAgICAgICBsZWZ0LnJpZ2h0ID0gc2VsZgorCisgICAgZGVmIGNoZWNrX3Nhbml0eShzZWxmKToKKyAgICAgICAgc3VwZXIoKS5jaGVja19zYW5pdHkoKQorICAgICAgICBpZiBzZWxmLnN1aWNpZGVkOgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYubGVmdCBpcyBOb25lCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5yaWdodCBpcyBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsZWZ0ID0gc2VsZi5sZWZ0CisgICAgICAgICAgICBpZiBsZWZ0LnN1aWNpZGVkOgorICAgICAgICAgICAgICAgIGFzc2VydCBsZWZ0LnJpZ2h0IGlzIE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGxlZnQucmlnaHQgaXMgc2VsZgorICAgICAgICAgICAgcmlnaHQgPSBzZWxmLnJpZ2h0CisgICAgICAgICAgICBpZiByaWdodC5zdWljaWRlZDoKKyAgICAgICAgICAgICAgICBhc3NlcnQgcmlnaHQubGVmdCBpcyBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCByaWdodC5sZWZ0IGlzIHNlbGYKKworY2xhc3MgU2ltcGxlQ2hhaW5lZChDaGFpbmVkQmFzZSwgU2ltcGxlKToKKyAgICBwYXNzCisKK2NsYXNzIENoYWluZWRSZXN1cnJlY3RvcihDaGFpbmVkQmFzZSwgU2ltcGxlUmVzdXJyZWN0b3IpOgorICAgIHBhc3MKKworY2xhc3MgU3VpY2lkYWxDaGFpbmVkKENoYWluZWRCYXNlLCBTaW1wbGUpOgorCisgICAgZGVmIHNpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRXhwbGljaXRseSBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5zdWljaWRlZCA9IFRydWUKKyAgICAgICAgc2VsZi5sZWZ0ID0gTm9uZQorICAgICAgICBzZWxmLnJpZ2h0ID0gTm9uZQorCisKK2NsYXNzIEN5Y2xlQ2hhaW5GaW5hbGl6YXRpb25UZXN0KFRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBmaW5hbGl6YXRpb24gb2YgYSBjeWNsaWMgY2hhaW4uICBUaGVzZSB0ZXN0cyBhcmUgc2ltaWxhciBpbgorICAgIHNwaXJpdCB0byB0aGUgc2VsZi1jeWNsZSB0ZXN0cyBhYm92ZSwgYnV0IHRoZSBjb2xsZWN0YWJsZSBvYmplY3QKKyAgICBncmFwaCBpc24ndCB0cml2aWFsIGFueW1vcmUuCisgICAgIiIiCisKKyAgICBkZWYgYnVpbGRfY2hhaW4oc2VsZiwgY2xhc3Nlcyk6CisgICAgICAgIG5vZGVzID0gW2NscygpIGZvciBjbHMgaW4gY2xhc3Nlc10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKG5vZGVzKSk6CisgICAgICAgICAgICBub2Rlc1tpXS5jaGFpbihub2Rlc1tpLTFdKQorICAgICAgICByZXR1cm4gbm9kZXMKKworICAgIGRlZiBjaGVja19ub25fcmVzdXJyZWN0aW5nX2NoYWluKHNlbGYsIGNsYXNzZXMpOgorICAgICAgICBOID0gbGVuKGNsYXNzZXMpCisgICAgICAgIHdpdGggU2ltcGxlQmFzZS50ZXN0KCk6CisgICAgICAgICAgICBub2RlcyA9IHNlbGYuYnVpbGRfY2hhaW4oY2xhc3NlcykKKyAgICAgICAgICAgIGlkcyA9IFtpZChzKSBmb3IgcyBpbiBub2Rlc10KKyAgICAgICAgICAgIHdycyA9IFt3ZWFrcmVmLnJlZihzKSBmb3IgcyBpbiBub2Rlc10KKyAgICAgICAgICAgIGRlbCBub2RlcworICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbd3IoKSBmb3Igd3IgaW4gd3JzXSwgW05vbmVdICogTikKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKGlkcykKKworICAgIGRlZiBjaGVja19yZXN1cnJlY3RpbmdfY2hhaW4oc2VsZiwgY2xhc3Nlcyk6CisgICAgICAgIE4gPSBsZW4oY2xhc3NlcykKKyAgICAgICAgd2l0aCBTaW1wbGVCYXNlLnRlc3QoKToKKyAgICAgICAgICAgIG5vZGVzID0gc2VsZi5idWlsZF9jaGFpbihjbGFzc2VzKQorICAgICAgICAgICAgTiA9IGxlbihub2RlcykKKyAgICAgICAgICAgIGlkcyA9IFtpZChzKSBmb3IgcyBpbiBub2Rlc10KKyAgICAgICAgICAgIHN1cnZpdm9yX2lkcyA9IFtpZChzKSBmb3IgcyBpbiBub2RlcyBpZiBpc2luc3RhbmNlKHMsIFNpbXBsZVJlc3VycmVjdG9yKV0KKyAgICAgICAgICAgIHdycyA9IFt3ZWFrcmVmLnJlZihzKSBmb3IgcyBpbiBub2Rlc10KKyAgICAgICAgICAgIGRlbCBub2RlcworICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKHN1cnZpdm9yX2lkcykKKyAgICAgICAgICAgICMgWFhYIGRlc2lyYWJsZT8KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3dyKCkgZm9yIHdyIGluIHdyc10sIFtOb25lXSAqIE4pCisgICAgICAgICAgICBzZWxmLmNsZWFyX3N1cnZpdm9ycygpCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9zdXJ2aXZvcnMoW10pCisKKyAgICBkZWYgdGVzdF9ob21vZ2Vub3VzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vbl9yZXN1cnJlY3RpbmdfY2hhaW4oW1NpbXBsZUNoYWluZWRdICogMykKKworICAgIGRlZiB0ZXN0X2hvbW9nZW5vdXNfcmVzdXJyZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VycmVjdGluZ19jaGFpbihbQ2hhaW5lZFJlc3VycmVjdG9yXSAqIDMpCisKKyAgICBkZWYgdGVzdF9ob21vZ2Vub3VzX3N1aWNpZGFsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vbl9yZXN1cnJlY3RpbmdfY2hhaW4oW1N1aWNpZGFsQ2hhaW5lZF0gKiAzKQorCisgICAgZGVmIHRlc3RfaGV0ZXJvZ2Vub3VzX3N1aWNpZGFsX29uZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ub25fcmVzdXJyZWN0aW5nX2NoYWluKFtTdWljaWRhbENoYWluZWQsIFNpbXBsZUNoYWluZWRdICogMikKKworICAgIGRlZiB0ZXN0X2hldGVyb2dlbm91c19zdWljaWRhbF90d28oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9uX3Jlc3VycmVjdGluZ19jaGFpbigKKyAgICAgICAgICAgIFtTdWljaWRhbENoYWluZWRdICogMiArIFtTaW1wbGVDaGFpbmVkXSAqIDIpCisKKyAgICBkZWYgdGVzdF9oZXRlcm9nZW5vdXNfcmVzdXJyZWN0X29uZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZXN1cnJlY3RpbmdfY2hhaW4oW0NoYWluZWRSZXN1cnJlY3RvciwgU2ltcGxlQ2hhaW5lZF0gKiAyKQorCisgICAgZGVmIHRlc3RfaGV0ZXJvZ2Vub3VzX3Jlc3VycmVjdF90d28oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVzdXJyZWN0aW5nX2NoYWluKAorICAgICAgICAgICAgW0NoYWluZWRSZXN1cnJlY3RvciwgU2ltcGxlQ2hhaW5lZCwgU3VpY2lkYWxDaGFpbmVkXSAqIDIpCisKKyAgICBkZWYgdGVzdF9oZXRlcm9nZW5vdXNfcmVzdXJyZWN0X3RocmVlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VycmVjdGluZ19jaGFpbigKKyAgICAgICAgICAgIFtDaGFpbmVkUmVzdXJyZWN0b3JdICogMiArIFtTaW1wbGVDaGFpbmVkXSAqIDIgKyBbU3VpY2lkYWxDaGFpbmVkXSAqIDIpCisKKworIyBOT1RFOiB0aGUgdHBfZGVsIHNsb3QgaXNuJ3QgYXV0b21hdGljYWxseSBpbmhlcml0ZWQsIHNvIHdlIGhhdmUgdG8gY2FsbAorIyB3aXRoX3RwX2RlbCgpIGZvciBlYWNoIGluc3RhbnRpYXRlZCBjbGFzcy4KKworY2xhc3MgTGVnYWN5QmFzZShTaW1wbGVCYXNlKToKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIERvIG5vdCBpbnZva2Ugc2lkZV9lZmZlY3QgaGVyZSwgc2luY2Ugd2UgYXJlIG5vdyBleGVyY2lzaW5nCisgICAgICAgICAgICAjIHRoZSB0cF9kZWwgc2xvdC4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbGVhbmluZzoKKyAgICAgICAgICAgICAgICBzZWxmLmRlbF9jYWxscy5hcHBlbmQoaWQoc2VsZikpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zYW5pdHkoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZSkKKworICAgIGRlZiBfX3RwX2RlbF9fKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTGVnYWN5IChwcmUtUEVQIDQ0MikgZmluYWxpemVyLCBtYXBwZWQgdG8gYSB0cF9kZWwgc2xvdC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbGVhbmluZzoKKyAgICAgICAgICAgICAgICBzZWxmLnRwX2RlbF9jYWxscy5hcHBlbmQoaWQoc2VsZikpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zYW5pdHkoKQorICAgICAgICAgICAgICAgIHNlbGYuc2lkZV9lZmZlY3QoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZSkKKworQF90ZXN0Y2FwaS53aXRoX3RwX2RlbAorY2xhc3MgTGVnYWN5KExlZ2FjeUJhc2UpOgorICAgIHBhc3MKKworQF90ZXN0Y2FwaS53aXRoX3RwX2RlbAorY2xhc3MgTGVnYWN5UmVzdXJyZWN0b3IoTGVnYWN5QmFzZSk6CisKKyAgICBkZWYgc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXN1cnJlY3Qgc2VsZiBieSBzdG9yaW5nIHNlbGYgaW4gYSBjbGFzcy13aWRlIGxpc3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnN1cnZpdm9ycy5hcHBlbmQoc2VsZikKKworQF90ZXN0Y2FwaS53aXRoX3RwX2RlbAorY2xhc3MgTGVnYWN5U2VsZkN5Y2xlKFNlbGZDeWNsZUJhc2UsIExlZ2FjeUJhc2UpOgorICAgIHBhc3MKKworCitjbGFzcyBMZWdhY3lGaW5hbGl6YXRpb25UZXN0KFRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aXRoIGEgdHBfZGVsLgorICAgICIiIgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIG5lZWQgdG8gY2xlYW4gdXAgYSBiaXQgbW9yZSwgc2luY2UgdGhleSBjcmVhdGUKKyAgICAgICAgIyB1bmNvbGxlY3RhYmxlIG9iamVjdHMuCisgICAgICAgIGdjLmdhcmJhZ2UuY2xlYXIoKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc3VwZXIoKS50ZWFyRG93bigpCisKKyAgICBkZWYgdGVzdF9sZWdhY3koc2VsZik6CisgICAgICAgIHdpdGggU2ltcGxlQmFzZS50ZXN0KCk6CisgICAgICAgICAgICBzID0gTGVnYWN5KCkKKyAgICAgICAgICAgIGlkcyA9IFtpZChzKV0KKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYocykKKyAgICAgICAgICAgIGRlbCBzCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF90cF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9kZWxfY2FsbHMoaWRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHBfZGVsX2NhbGxzKGlkcykKKworICAgIGRlZiB0ZXN0X2xlZ2FjeV9yZXN1cnJlY3Qoc2VsZik6CisgICAgICAgIHdpdGggU2ltcGxlQmFzZS50ZXN0KCk6CisgICAgICAgICAgICBzID0gTGVnYWN5UmVzdXJyZWN0b3IoKQorICAgICAgICAgICAgaWRzID0gW2lkKHMpXQorICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihzKQorICAgICAgICAgICAgZGVsIHMKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKGlkcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3RwX2RlbF9jYWxscyhpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9zdXJ2aXZvcnMoaWRzKQorICAgICAgICAgICAgIyB3ZWFrcmVmcyBhcmUgY2xlYXJlZCBiZWZvcmUgdHBfZGVsIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuY2xlYXJfc3Vydml2b3JzKCkKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKGlkcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3RwX2RlbF9jYWxscyhpZHMgKiAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKGlkcykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorCisgICAgZGVmIHRlc3RfbGVnYWN5X3NlbGZfY3ljbGUoc2VsZik6CisgICAgICAgICMgU2VsZi1jeWNsZXMgd2l0aCBsZWdhY3kgZmluYWxpemVycyBlbmQgdXAgaW4gZ2MuZ2FyYmFnZS4KKyAgICAgICAgd2l0aCBTaW1wbGVCYXNlLnRlc3QoKToKKyAgICAgICAgICAgIHMgPSBMZWdhY3lTZWxmQ3ljbGUoKQorICAgICAgICAgICAgaWRzID0gW2lkKHMpXQorICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihzKQorICAgICAgICAgICAgZGVsIHMKKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZGVsX2NhbGxzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHBfZGVsX2NhbGxzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfc3Vydml2b3JzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfZ2FyYmFnZShpZHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHdyKCksIE5vbmUpCisgICAgICAgICAgICAjIEJyZWFrIHRoZSBjeWNsZSB0byBhbGxvdyBjb2xsZWN0aW9uCisgICAgICAgICAgICBnYy5nYXJiYWdlWzBdLnJlZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRfZ2FyYmFnZShbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JrMS5weSBiL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkKaW5kZXggODE5MmMzOC4uZTA2MjZkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mb3JrMS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiVGhpcyB0ZXN0IGNoZWNrcyBmb3IgY29ycmVjdCBmb3JrKCkgYmVoYXZpb3IuCiAiIiIKIAotaW1wb3J0IGltcAoraW1wb3J0IF9pbXAgYXMgaW1wCiBpbXBvcnQgb3MKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5IGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKaW5kZXggYmQxNTlmNS4uOWY3NjMwYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKQEAgLTMwNyw2ICszMDcsMjUgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgb2xkbG9jKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfb3B0aW1pc2F0aW9ucyhzZWxmKToKKyAgICAgICAgdGV4dCA9ICJhYmNkZSIgIyA1IGNoYXJhY3RlcnMKKworICAgICAgICBzZWxmLmFzc2VydElzKCIlcyIgJSB0ZXh0LCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydElzKCIlLjVzIiAlIHRleHQsIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoIiUuMTBzIiAlIHRleHQsIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoIiUxcyIgJSB0ZXh0LCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydElzKCIlNXMiICUgdGV4dCwgdGV4dCkKKworICAgICAgICBzZWxmLmFzc2VydElzKCJ7MH0iLmZvcm1hdCh0ZXh0KSwgdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcygiezA6c30iLmZvcm1hdCh0ZXh0KSwgdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcygiezA6LjVzfSIuZm9ybWF0KHRleHQpLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydElzKCJ7MDouMTBzfSIuZm9ybWF0KHRleHQpLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydElzKCJ7MDoxc30iLmZvcm1hdCh0ZXh0KSwgdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcygiezA6NXN9Ii5mb3JtYXQodGV4dCksIHRleHQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0ICUgKCksIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dC5mb3JtYXQoKSwgdGV4dCkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDFmYWQ5MjEuLjMzMzY1MzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC0xNDYsOSArMTQ2LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAsIDEpLCBfY29tcG9uZW50cyhGKC0wLjApKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMzYwMjg3OTcwMTg5NjM5NywgMzYwMjg3OTcwMTg5NjM5NjgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9jb21wb25lbnRzKEYoMC4xKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgZmxvYXQoJ25hbicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIGZsb2F0KCdpbmYnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCBmbG9hdCgnLWluZicpKQorICAgICAgICAjIGJ1ZyAxNjQ2OTogZXJyb3IgdHlwZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBmbG9hdCAtPiBpbnQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRiwgZmxvYXQoJ25hbicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBGLCBmbG9hdCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIEYsIGZsb2F0KCctaW5mJykpCiAKICAgICBkZWYgdGVzdEluaXRGcm9tRGVjaW1hbChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMTEsIDEwKSwKQEAgLTE1NywxMCArMTU4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbXBvbmVudHMoRihEZWNpbWFsKCczLjVlLTInKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgwLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29tcG9uZW50cyhGKERlY2ltYWwoJy4wMDBlMjAnKSkpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIERlY2ltYWwoJ25hbicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIERlY2ltYWwoJ3NuYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCBEZWNpbWFsKCdpbmYnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCBEZWNpbWFsKCctaW5mJykpCisgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGRlY2ltYWwgLT4gaW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIEYsIERlY2ltYWwoJ25hbicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBGLCBEZWNpbWFsKCdzbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIEYsIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBGLCBEZWNpbWFsKCctaW5mJykpCiAKICAgICBkZWYgdGVzdEZyb21TdHJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDUsIDEpLCBfY29tcG9uZW50cyhGKCI1IikpKQpAQCAtMjQ4LDE0ICsyNTAsMTUgQEAKIAogICAgICAgICBpbmYgPSAxZTEwMDAKICAgICAgICAgbmFuID0gaW5mIC0gaW5mCisgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGZsb2F0IC0+IGludAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJDYW5ub3QgY29udmVydCBpbmYgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCBpbmYgdG8gRnJhY3Rpb24uIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgaW5mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJDYW5ub3QgY29udmVydCAtaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLWluZiB0byBGcmFjdGlvbi4iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCAtaW5mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJDYW5ub3QgY29udmVydCBuYW4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBuYW4gdG8gRnJhY3Rpb24uIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgbmFuKQogCiAgICAgZGVmIHRlc3RGcm9tRGVjaW1hbChzZWxmKToKQEAgLTI2OCwxNyArMjcxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSAtIEYoMSwgMTAqKjMwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbChEZWNpbWFsKCIwLiIgKyAiOSIgKiAzMCkpKQogCisgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGRlY2ltYWwgLT4gaW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFR5cGVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gRnJhY3Rpb24uIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJpbmYiKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVHlwZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgLUluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLUluZmluaXR5IHRvIEZyYWN0aW9uLiIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiLWluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJDYW5ub3QgY29udmVydCBOYU4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBOYU4gdG8gRnJhY3Rpb24uIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJuYW4iKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVHlwZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgc05hTiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHNOYU4gdG8gRnJhY3Rpb24uIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJzbmFuIikpCiAKICAgICBkZWYgdGVzdExpbWl0RGVub21pbmF0b3Ioc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9mcmFtZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQ1NzgwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9mcmFtZS5weQpAQCAtMCwwICsxLDExNiBAQAoraW1wb3J0IGdjCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK2NsYXNzIENsZWFyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdHMgZm9yIGZyYW1lLmNsZWFyKCkuCisgICAgIiIiCisKKyAgICBkZWYgaW5uZXIoc2VsZiwgeD01LCAqKmt3YXJncyk6CisgICAgICAgIDEvMAorCisgICAgZGVmIG91dGVyKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5pbm5lcigqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBleGMgPSBlCisgICAgICAgIHJldHVybiBleGMKKworICAgIGRlZiBjbGVhcl90cmFjZWJhY2tfZnJhbWVzKHNlbGYsIHRiKToKKyAgICAgICAgIiIiCisgICAgICAgIENsZWFyIGFsbCBmcmFtZXMgaW4gYSB0cmFjZWJhY2suCisgICAgICAgICIiIgorICAgICAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRiLnRiX2ZyYW1lLmNsZWFyKCkKKyAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAorCisgICAgZGVmIHRlc3RfY2xlYXJfbG9jYWxzKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjID0gQygpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoYykKKyAgICAgICAgZXhjID0gc2VsZi5vdXRlcihjPWMpCisgICAgICAgIGRlbCBjCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgICMgQSByZWZlcmVuY2UgdG8gYyBpcyBoZWxkIHRocm91Z2ggdGhlIGZyYW1lcworICAgICAgICBzZWxmLmFzc2VydElzTm90KE5vbmUsIHdyKCkpCisgICAgICAgIHNlbGYuY2xlYXJfdHJhY2ViYWNrX2ZyYW1lcyhleGMuX190cmFjZWJhY2tfXykKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgIyBUaGUgcmVmZXJlbmNlIHdhcyByZWxlYXNlZCBieSAuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydElzKE5vbmUsIHdyKCkpCisKKyAgICBkZWYgdGVzdF9jbGVhcl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIGVuZGx5ID0gRmFsc2UKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGVuZGx5CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICBpbm5lcigpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGVuZGx5ID0gVHJ1ZQorICAgICAgICBnZW4gPSBnKCkKKyAgICAgICAgbmV4dChnZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW5kbHkpCisgICAgICAgICMgQ2xlYXJpbmcgdGhlIGZyYW1lIGNsb3NlcyB0aGUgZ2VuZXJhdG9yCisgICAgICAgIGdlbi5naV9mcmFtZS5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbmRseSkKKworICAgIGRlZiB0ZXN0X2NsZWFyX2V4ZWN1dGluZyhzZWxmKToKKyAgICAgICAgIyBBdHRlbXB0aW5nIHRvIGNsZWFyIGFuIGV4ZWN1dGluZyBmcmFtZSBpcyBmb3JiaWRkZW4uCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEvMAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGYgPSBlLl9fdHJhY2ViYWNrX18udGJfZnJhbWUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgZi5jbGVhcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGYuZl9iYWNrLmNsZWFyKCkKKworICAgIGRlZiB0ZXN0X2NsZWFyX2V4ZWN1dGluZ19nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICMgQXR0ZW1wdGluZyB0byBjbGVhciBhbiBleGVjdXRpbmcgZ2VuZXJhdG9yIGZyYW1lIGlzIGZvcmJpZGRlbi4KKyAgICAgICAgZW5kbHkgPSBGYWxzZQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgbm9ubG9jYWwgZW5kbHkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGYgPSBlLl9fdHJhY2ViYWNrX18udGJfZnJhbWUKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGYuY2xlYXIoKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZi5mX2JhY2suY2xlYXIoKQorICAgICAgICAgICAgICAgIHlpZWxkIGYKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZW5kbHkgPSBUcnVlCisgICAgICAgIGdlbiA9IGcoKQorICAgICAgICBmID0gbmV4dChnZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW5kbHkpCisgICAgICAgICMgQ2xlYXJpbmcgdGhlIGZyYW1lIGNsb3NlcyB0aGUgZ2VuZXJhdG9yCisgICAgICAgIGYuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5kbHkpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jbGVhcl9yZWZjeWNsZXMoc2VsZik6CisgICAgICAgICMgLmNsZWFyKCkgZG9lc24ndCBsZWF2ZSBhbnkgcmVmY3ljbGUgYmVoaW5kCisgICAgICAgIHdpdGggc3VwcG9ydC5kaXNhYmxlX2djKCk6CisgICAgICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGMgPSBDKCkKKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoYykKKyAgICAgICAgICAgIGV4YyA9IHNlbGYub3V0ZXIoYz1jKQorICAgICAgICAgICAgZGVsIGMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoTm9uZSwgd3IoKSkKKyAgICAgICAgICAgIHNlbGYuY2xlYXJfdHJhY2ViYWNrX2ZyYW1lcyhleGMuX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoTm9uZSwgd3IoKSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5IGIvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkKaW5kZXggZmQ2NzYxYy4uNGM1MGNiNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZXhwZWN0LmFkZCgnc3BhbScpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18pKSwgZXhwZWN0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfX3BoZWxsb19fLl9fcGF0aF9fLCBbX19waGVsbG9fXy5fX25hbWVfX10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uX19wYXRoX18sIFtdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKIAogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKQEAgLTcyLDggKzcyLDYgQEAKICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3BoZWxsb19fJ10KICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3BoZWxsb19fLnNwYW0nXQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEZyb3plblRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IGRjZjFmZDkuLmY5M2E2MjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC0yMSw2ICsyMSw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgSE9TVAogdGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCitUSU1FT1VUID0gMwogIyB0aGUgZHVtbXkgZGF0YSByZXR1cm5lZCBieSBzZXJ2ZXIgb3ZlciB0aGUgZGF0YSBjaGFubmVsIHdoZW4KICMgUkVUUiwgTElTVCwgTkxTVCwgTUxTRCBjb21tYW5kcyBhcmUgaXNzdWVkCiBSRVRSX0RBVEEgPSAnYWJjZGUxMjM0NVxyXG4nICogMTAwMApAQCAtMTI1LDcgKzEyNiw3IEBACiAgICAgICAgIGFkZHIgPSBsaXN0KG1hcChpbnQsIGFyZy5zcGxpdCgnLCcpKSkKICAgICAgICAgaXAgPSAnJWQuJWQuJWQuJWQnICV0dXBsZShhZGRyWzo0XSkKICAgICAgICAgcG9ydCA9IChhZGRyWzRdICogMjU2KSArIGFkZHJbNV0KLSAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaXAsIHBvcnQpLCB0aW1lb3V0PTIpCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD1USU1FT1VUKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0xMzMsNyArMTM0LDcgQEAKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgIHNvY2suYmluZCgoc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVswXSwgMCkpCiAgICAgICAgICAgICBzb2NrLmxpc3Rlbig1KQotICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KDEwKQorICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KFRJTUVPVVQpCiAgICAgICAgICAgICBpcCwgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVs6Ml0KICAgICAgICAgICAgIGlwID0gaXAucmVwbGFjZSgnLicsICcsJyk7IHAxID0gcG9ydCAvIDI1NjsgcDIgPSBwb3J0ICUgMjU2CiAgICAgICAgICAgICBzZWxmLnB1c2goJzIyNyBlbnRlcmluZyBwYXNzaXZlIG1vZGUgKCVzLCVkLCVkKScgJShpcCwgcDEsIHAyKSkKQEAgLTE0Myw3ICsxNDQsNyBAQAogICAgIGRlZiBjbWRfZXBydChzZWxmLCBhcmcpOgogICAgICAgICBhZiwgaXAsIHBvcnQgPSBhcmcuc3BsaXQoYXJnWzBdKVsxOi0xXQogICAgICAgICBwb3J0ID0gaW50KHBvcnQpCi0gICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQorICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9VElNRU9VVCkKICAgICAgICAgc2VsZi5kdHAgPSBzZWxmLmR0cF9oYW5kbGVyKHMsIGJhc2VjbGFzcz1zZWxmKQogICAgICAgICBzZWxmLnB1c2goJzIwMCBhY3RpdmUgZGF0YSBjb25uZWN0aW9uIGVzdGFibGlzaGVkJykKIApAQCAtMTUxLDcgKzE1Miw3IEBACiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYpIGFzIHNvY2s6CiAgICAgICAgICAgICBzb2NrLmJpbmQoKHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMF0sIDApKQogICAgICAgICAgICAgc29jay5saXN0ZW4oNSkKLSAgICAgICAgICAgIHNvY2suc2V0dGltZW91dCgxMCkKKyAgICAgICAgICAgIHNvY2suc2V0dGltZW91dChUSU1FT1VUKQogICAgICAgICAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQogICAgICAgICAgICAgc2VsZi5wdXNoKCcyMjkgZW50ZXJpbmcgZXh0ZW5kZWQgcGFzc2l2ZSBtb2RlICh8fHwlZHwpJyAlcG9ydCkKICAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzb2NrLmFjY2VwdCgpCkBAIC0zMjEsNyArMzIyLDcgQEAKICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfRU9GOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBlcnJuby5FQ09OTkFCT1JURUQ6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzM1LDcgKzMzNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEUpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgICMgQW55ICJzb2NrZXQgZXJyb3IiIGNvcnJlc3BvbmRzIHRvIGEgU1NMX0VSUk9SX1NZU0NBTEwgcmV0dXJuCiAgICAgICAgICAgICAgICAgIyBmcm9tIE9wZW5TU0wncyBTU0xfc2h1dGRvd24oKSwgY29ycmVzcG9uZGluZyB0byBhCiAgICAgICAgICAgICAgICAgIyBjbG9zZWQgc29ja2V0IGNvbmRpdGlvbi4gU2VlIGFsc286CkBAIC00NTQsNyArNDU1LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PTIpCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PVRJTUVPVVQpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTQ4Miw3ICs0ODMsNyBAQAogCiAgICAgZGVmIHRlc3RfYWxsX2Vycm9ycyhzZWxmKToKICAgICAgICAgZXhjZXB0aW9ucyA9IChmdHBsaWIuZXJyb3JfcmVwbHksIGZ0cGxpYi5lcnJvcl90ZW1wLCBmdHBsaWIuZXJyb3JfcGVybSwKLSAgICAgICAgICAgICAgICAgICAgICBmdHBsaWIuZXJyb3JfcHJvdG8sIGZ0cGxpYi5FcnJvciwgSU9FcnJvciwgRU9GRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgZnRwbGliLmVycm9yX3Byb3RvLCBmdHBsaWIuRXJyb3IsIE9TRXJyb3IsIEVPRkVycm9yKQogICAgICAgICBmb3IgeCBpbiBleGNlcHRpb25zOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJhaXNlIHgoJ2V4Y2VwdGlvbiBub3QgaW5jbHVkZWQgaW4gYWxsX2Vycm9ycyBzZXQnKQpAQCAtNjY4LDcgKzY2OSw3IEBACiAKICAgICBkZWYgdGVzdF9tYWtlcGFzdihzZWxmKToKICAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuY2xpZW50Lm1ha2VwYXN2KCkKLSAgICAgICAgY29ubiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIDEwKQorICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dD1USU1FT1VUKQogICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgIyBJUHY0IGlzIGluIHVzZSwganVzdCBtYWtlIHN1cmUgc2VuZF9lcHN2IGhhcyBub3QgYmVlbiB1c2VkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5sYXN0X3JlY2VpdmVkX2NtZCwgJ3Bhc3YnKQpAQCAtNjgxLDEyICs2ODIsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5zZW5kY21kKCdub29wJykKLSAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgIyBiYXNlIHRlc3QKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MikgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PVRJTUVPVVQpIGFzIHNlbGYuY2xpZW50OgogICAgICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY2xpZW50X2Nvbm5lY3RlZCgpKQpAQCAtNjk0LDcgKzY5NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY2xpZW50X2Nvbm5lY3RlZCgpKQogCiAgICAgICAgICMgUVVJVCBzZW50IGluc2lkZSB0aGUgd2l0aCBibG9jawotICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKKyAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9VElNRU9VVCkgYXMgc2VsZi5jbGllbnQ6CiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5zZW5kY21kKCdub29wJykKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnF1aXQoKQpAQCAtNzA0LDcgKzcwNSw3IEBACiAgICAgICAgICMgZm9yY2UgYSB3cm9uZyByZXNwb25zZSBjb2RlIHRvIGJlIHNlbnQgb24gUVVJVDogZXJyb3JfcGVybQogICAgICAgICAjIGlzIGV4cGVjdGVkIGFuZCB0aGUgY29ubmVjdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBjbG9zZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MikgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD1USU1FT1VUKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5uZXh0X3Jlc3BvbnNlID0gJzU1MCBlcnJvciBvbiBxdWl0JwpAQCAtNzI2LDcgKzcyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPShIT1NULCBwb3J0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQogICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCiAgICAgICAgICAgICByYWlzZQpAQCAtNzM3LDcgKzczOCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggc2VsZi5jbGllbnQudHJhbnNmZXJjbWQoJ2xpc3QnKSBhcyBzb2NrOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUREUklOVVNFOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvdWxkbid0IGJpbmQgdG8gcG9ydCAlZCIgJSBwb3J0KQogICAgICAgICAgICAgcmFpc2UKQEAgLTc2MCw3ICs3NjEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoJzo6MScsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKHRpbWVvdXQ9VElNRU9VVCkKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNzc3LDcgKzc3OCw3IEBACiAKICAgICBkZWYgdGVzdF9tYWtlcGFzdihzZWxmKToKICAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuY2xpZW50Lm1ha2VwYXN2KCkKLSAgICAgICAgY29ubiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIDEwKQorICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dD1USU1FT1VUKQogICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfY21kLCAnZXBzdicpCiAKQEAgLTgwMyw3ICs4MDQsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVRMU19GVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0yKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9VElNRU9VVCkKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICAjIGVuYWJsZSBUTFMKICAgICAgICAgc2VsZi5jbGllbnQuYXV0aCgpCkBAIC04MTYsNyArODE3LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlUTFNfRlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MikKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PVRJTUVPVVQpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTg3Niw3ICs4NzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdHBsaWIuRlRQX1RMUywgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIGNvbnRleHQ9Y3R4KQogCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MikKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyhjb250ZXh0PWN0eCwgdGltZW91dD1USU1FT1VUKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShzZWxmLmNsaWVudC5zb2NrLCBzc2wuU1NMU29ja2V0KQogICAgICAgICBzZWxmLmNsaWVudC5hdXRoKCkKQEAgLTk5MCw4ICs5OTEsMTkgQEAKICAgICAgICAgZnRwLmNsb3NlKCkKIAogCitjbGFzcyBUZXN0TmV0cmNEZXByZWNhdGlvbihUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZXByZWNhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCksIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudlsnSE9NRSddID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgICAgIG9wZW4oJy5uZXRyYycsICd3JykuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgZnRwbGliLk5ldHJjKCkKKworCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0c10KKyAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0cywgVGVzdE5ldHJjRGVwcmVjYXRpb25dCiAgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6CiAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0SVB2NkVudmlyb25tZW50KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IGRiMWU5MzQuLmFiNzZlZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CkBAIC0xLDU3ICsxLDU0IEBACi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zCiBpbXBvcnQgcGlja2xlCiBmcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogCi1Ac3RhdGljbWV0aG9kCi1kZWYgUHl0aG9uUGFydGlhbChmdW5jLCAqYXJncywgKiprZXl3b3Jkcyk6Ci0gICAgJ1B1cmUgUHl0aG9uIGFwcHJveGltYXRpb24gb2YgcGFydGlhbCgpJwotICAgIGRlZiBuZXdmdW5jKCpmYXJncywgKipma2V5d29yZHMpOgotICAgICAgICBuZXdrZXl3b3JkcyA9IGtleXdvcmRzLmNvcHkoKQotICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoZmtleXdvcmRzKQotICAgICAgICByZXR1cm4gZnVuYygqKGFyZ3MgKyBmYXJncyksICoqbmV3a2V5d29yZHMpCi0gICAgbmV3ZnVuYy5mdW5jID0gZnVuYwotICAgIG5ld2Z1bmMuYXJncyA9IGFyZ3MKLSAgICBuZXdmdW5jLmtleXdvcmRzID0ga2V5d29yZHMKLSAgICByZXR1cm4gbmV3ZnVuYworaW1wb3J0IGZ1bmN0b29scworCitweV9mdW5jdG9vbHMgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2Z1bmN0b29scycsIGJsb2NrZWQ9WydfZnVuY3Rvb2xzJ10pCitjX2Z1bmN0b29scyA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnVuY3Rvb2xzJywgZnJlc2g9WydfZnVuY3Rvb2xzJ10pCisKK2RlY2ltYWwgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCisKIAogZGVmIGNhcHR1cmUoKmFyZ3MsICoqa3cpOgogICAgICIiImNhcHR1cmUgYWxsIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIiIiCiAgICAgcmV0dXJuIGFyZ3MsIGt3CiAKKwogZGVmIHNpZ25hdHVyZShwYXJ0KToKICAgICAiIiIgcmV0dXJuIHRoZSBzaWduYXR1cmUgb2YgYSBwYXJ0aWFsIG9iamVjdCAiIiIKICAgICByZXR1cm4gKHBhcnQuZnVuYywgcGFydC5hcmdzLCBwYXJ0LmtleXdvcmRzLCBwYXJ0Ll9fZGljdF9fKQogCi1jbGFzcyBUZXN0UGFydGlhbCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICB0aGV0eXBlID0gZnVuY3Rvb2xzLnBhcnRpYWwKK2NsYXNzIFRlc3RQYXJ0aWFsOgogCiAgICAgZGVmIHRlc3RfYmFzaWNfZXhhbXBsZXMoc2VsZik6Ci0gICAgICAgIHAgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbGFibGUocCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCgzLCA0LCBiPTMwLCBjPTQwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoKDEsIDIsIDMsIDQpLCBkaWN0KGE9MTAsIGI9MzAsIGM9NDApKSkKLSAgICAgICAgcCA9IHNlbGYudGhldHlwZShtYXAsIGxhbWJkYSB4OiB4KjEwKQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKG1hcCwgbGFtYmRhIHg6IHgqMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwKFsxLDIsMyw0XSkpLCBbMTAsIDIwLCAzMCwgNDBdKQogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKLSAgICAgICAgcCA9IHNlbGYudGhldHlwZShjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIDEsIDIsIGE9MTAsIGI9MjApCiAgICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgYmUgcmVhZGFibGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmZ1bmMsIGNhcHR1cmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5hcmdzLCAoMSwgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5rZXl3b3JkcywgZGljdChhPTEwLCBiPTIwKSkKICAgICAgICAgIyBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgd3JpdGFibGUKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi50aGV0eXBlLCB0eXBlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5wYXJ0aWFsLCB0eXBlKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2Z1bmMnLCBtYXApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnYXJncycsICgxLCAyKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdrZXl3b3JkcycsIGRpY3QoYT0xLCBiPTIpKQogCi0gICAgICAgIHAgPSBzZWxmLnRoZXR5cGUoaGV4KQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKQEAgLTYwLDkgKzU3LDkgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKIAogICAgIGRlZiB0ZXN0X2FyZ3VtZW50X2NoZWNraW5nKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhldHlwZSkgICAgICMgbmVlZCBhdCBsZWFzdCBhIGZ1bmMgYXJnCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXJ0aWFsKSAgICAgIyBuZWVkIGF0IGxlYXN0IGEgZnVuYyBhcmcKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi50aGV0eXBlKDIpKCkKKyAgICAgICAgICAgIHNlbGYucGFydGlhbCgyKSgpCiAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CkBAIC03Myw3ICs3MCw3IEBACiAgICAgICAgIGRlZiBmdW5jKGE9MTAsIGI9MjApOgogICAgICAgICAgICAgcmV0dXJuIGEKICAgICAgICAgZCA9IHsnYSc6M30KLSAgICAgICAgcCA9IHNlbGYudGhldHlwZShmdW5jLCBhPTUpCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoZnVuYywgYT01KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAoKipkKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7J2EnOjN9KQogICAgICAgICBwKGI9NykKQEAgLTgyLDIwICs3OSwyMCBAQAogICAgIGRlZiB0ZXN0X2FyZ19jb21iaW5hdGlvbnMoc2VsZik6CiAgICAgICAgICMgZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciB6ZXJvIGFyZ3MgaW4gZWl0aGVyIHBhcnRpYWwKICAgICAgICAgIyBvYmplY3Qgb3IgdGhlIGNhbGxlcgotICAgICAgICBwID0gc2VsZi50aGV0eXBlKGNhcHR1cmUpCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwKCksICgoKSwge30pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAoMSwyKSwgKCgxLDIpLCB7fSkpCi0gICAgICAgIHAgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSwgMSwgMikKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAoKSwgKCgxLDIpLCB7fSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCgzLDQpLCAoKDEsMiwzLDQpLCB7fSkpCiAKICAgICBkZWYgdGVzdF9rd19jb21iaW5hdGlvbnMoc2VsZik6CiAgICAgICAgICMgZXhlcmNpc2Ugc3BlY2lhbCBjb2RlIHBhdGhzIGZvciBubyBrZXl3b3JkIGFyZ3MgaW4KICAgICAgICAgIyBlaXRoZXIgdGhlIHBhcnRpYWwgb2JqZWN0IG9yIHRoZSBjYWxsZXIKLSAgICAgICAgcCA9IHNlbGYudGhldHlwZShjYXB0dXJlKQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCgpLCAoKCksIHt9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwKGE9MSksICgoKSwgeydhJzoxfSkpCi0gICAgICAgIHAgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSwgYT0xKQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIGE9MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwKCksICgoKSwgeydhJzoxfSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocChiPTIpLCAoKCksIHsnYSc6MSwgJ2InOjJ9KSkKICAgICAgICAgIyBrZXl3b3JkIGFyZ3MgaW4gdGhlIGNhbGwgb3ZlcnJpZGUgdGhvc2UgaW4gdGhlIHBhcnRpYWwgb2JqZWN0CkBAIC0xMDQsNyArMTAxLDcgQEAKICAgICBkZWYgdGVzdF9wb3NpdGlvbmFsKHNlbGYpOgogICAgICAgICAjIG1ha2Ugc3VyZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgY2FwdHVyZWQgY29ycmVjdGx5CiAgICAgICAgIGZvciBhcmdzIGluIFsoKSwgKDAsKSwgKDAsMSksICgwLDEsMiksICgwLDEsMiwzKV06Ci0gICAgICAgICAgICBwID0gc2VsZi50aGV0eXBlKGNhcHR1cmUsICphcmdzKQorICAgICAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncykKICAgICAgICAgICAgIGV4cGVjdGVkID0gYXJncyArICgneCcsKQogICAgICAgICAgICAgZ290LCBlbXB0eSA9IHAoJ3gnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkID09IGdvdCBhbmQgZW1wdHkgPT0ge30pCkBAIC0xMTIsMTQgKzEwOSwxNCBAQAogICAgIGRlZiB0ZXN0X2tleXdvcmQoc2VsZik6CiAgICAgICAgICMgbWFrZSBzdXJlIGtleXdvcmQgYXJndW1lbnRzIGFyZSBjYXB0dXJlZCBjb3JyZWN0bHkKICAgICAgICAgZm9yIGEgaW4gWydhJywgMCwgTm9uZSwgMy41XToKLSAgICAgICAgICAgIHAgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSwgYT1hKQorICAgICAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCBhPWEpCiAgICAgICAgICAgICBleHBlY3RlZCA9IHsnYSc6YSwneCc6Tm9uZX0KICAgICAgICAgICAgIGVtcHR5LCBnb3QgPSBwKHg9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZCA9PSBnb3QgYW5kIGVtcHR5ID09ICgpKQogCiAgICAgZGVmIHRlc3Rfbm9fc2lkZV9lZmZlY3RzKHNlbGYpOgogICAgICAgICAjIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2lkZSBlZmZlY3RzIHRoYXQgYWZmZWN0IHN1YnNlcXVlbnQgY2FsbHMKLSAgICAgICAgcCA9IHNlbGYudGhldHlwZShjYXB0dXJlLCAwLCBhPTEpCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMCwgYT0xKQogICAgICAgICBhcmdzMSwga3cxID0gcCgxLCBiPTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzMSA9PSAoMCwxKSBhbmQga3cxID09IHsnYSc6MSwnYic6Mn0pCiAgICAgICAgIGFyZ3MyLCBrdzIgPSBwKCkKQEAgLTEyOCwxMyArMTI1LDEzIEBACiAgICAgZGVmIHRlc3RfZXJyb3JfcHJvcGFnYXRpb24oc2VsZik6CiAgICAgICAgIGRlZiBmKHgsIHkpOgogICAgICAgICAgICAgeCAvIHkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHNlbGYudGhldHlwZShmLCAxLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHNlbGYudGhldHlwZShmLCAxKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHNlbGYudGhldHlwZShmKSwgMSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHNlbGYudGhldHlwZShmLCB5PTApLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5wYXJ0aWFsKGYsIDEsIDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5wYXJ0aWFsKGYsIDEpLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5wYXJ0aWFsKGYpLCAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5wYXJ0aWFsKGYsIHk9MCksIDEpCiAKICAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgotICAgICAgICBmID0gc2VsZi50aGV0eXBlKGludCwgYmFzZT0xNikKKyAgICAgICAgZiA9IHNlbGYucGFydGlhbChpbnQsIGJhc2U9MTYpCiAgICAgICAgIHAgPSBwcm94eShmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZnVuYywgcC5mdW5jKQogICAgICAgICBmID0gTm9uZQpAQCAtMTQyLDM5ICsxMzksNDUgQEAKIAogICAgIGRlZiB0ZXN0X3dpdGhfYm91bmRfYW5kX3VuYm91bmRfbWV0aG9kcyhzZWxmKToKICAgICAgICAgZGF0YSA9IGxpc3QobWFwKHN0ciwgcmFuZ2UoMTApKSkKLSAgICAgICAgam9pbiA9IHNlbGYudGhldHlwZShzdHIuam9pbiwgJycpCisgICAgICAgIGpvaW4gPSBzZWxmLnBhcnRpYWwoc3RyLmpvaW4sICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oZGF0YSksICcwMTIzNDU2Nzg5JykKLSAgICAgICAgam9pbiA9IHNlbGYudGhldHlwZSgnJy5qb2luKQorICAgICAgICBqb2luID0gc2VsZi5wYXJ0aWFsKCcnLmpvaW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbihkYXRhKSwgJzAxMjM0NTY3ODknKQogCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQorY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCisKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBhcmdzID0gKG9iamVjdCgpLCBvYmplY3QoKSkKICAgICAgICAgYXJnc19yZXByID0gJywgJy5qb2luKHJlcHIoYSkgZm9yIGEgaW4gYXJncykKICAgICAgICAga3dhcmdzID0geydhJzogb2JqZWN0KCksICdiJzogb2JqZWN0KCl9CiAgICAgICAgIGt3YXJnc19yZXByID0gJywgJy5qb2luKCIlcz0lciIgJSAoaywgdikgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCkpCi0gICAgICAgIGlmIHNlbGYudGhldHlwZSBpcyBmdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGlzIGNfZnVuY3Rvb2xzLnBhcnRpYWw6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYudGhldHlwZS5fX25hbWVfXworICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwogCi0gICAgICAgIGYgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSkKKyAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCiAKLSAgICAgICAgZiA9IHNlbGYudGhldHlwZShjYXB0dXJlLCAqYXJncykKKyAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQogCi0gICAgICAgIGYgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSwgKiprd2FyZ3MpCisgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t9KHshcn0sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGt3YXJnc19yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQogCi0gICAgICAgIGYgPSBzZWxmLnRoZXR5cGUoY2FwdHVyZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSwge30sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGFyZ3NfcmVwciwga3dhcmdzX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLnRoZXR5cGUoc2lnbmF0dXJlLCAnYXNkZicsIGJhcj1UcnVlKQorICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgJ2FzZGYnLCBiYXI9VHJ1ZSkKICAgICAgICAgZi5hZGRfc29tZXRoaW5nX3RvX19kaWN0X18gPSBUcnVlCiAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLCBzaWduYXR1cmUoZl9jb3B5KSkKQEAgLTE5MywyOCArMTk2LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7fQogICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKIAotICAgICAgICBmID0gc2VsZi50aGV0eXBlKG9iamVjdCkKKyAgICAgICAgZiA9IHNlbGYucGFydGlhbChvYmplY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgIm5ldyBzdHlsZSBnZXRhcmdzIGZvcm1hdCBidXQgYXJndW1lbnQgaXMgbm90IGEgdHVwbGUiLAogICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fLCBCYWRTZXF1ZW5jZSgpKQogCi1jbGFzcyBQYXJ0aWFsU3ViY2xhc3MoZnVuY3Rvb2xzLnBhcnRpYWwpOgotICAgIHBhc3MKIAotY2xhc3MgVGVzdFBhcnRpYWxTdWJjbGFzcyhUZXN0UGFydGlhbCk6CitjbGFzcyBUZXN0UGFydGlhbFB5KFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcGFydGlhbCA9IHN0YXRpY21ldGhvZChweV9mdW5jdG9vbHMucGFydGlhbCkKIAotICAgIHRoZXR5cGUgPSBQYXJ0aWFsU3ViY2xhc3MKIAotY2xhc3MgVGVzdFB5dGhvblBhcnRpYWwoVGVzdFBhcnRpYWwpOgoraWYgY19mdW5jdG9vbHM6CisgICAgY2xhc3MgUGFydGlhbFN1YmNsYXNzKGNfZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgICAgICBwYXNzCiAKLSAgICB0aGV0eXBlID0gUHl0aG9uUGFydGlhbAogCi0gICAgIyB0aGUgcHl0aG9uIHZlcnNpb24gaGFzbid0IGEgbmljZSByZXByCi0gICAgZGVmIHRlc3RfcmVwcihzZWxmKTogcGFzcworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCitjbGFzcyBUZXN0UGFydGlhbENTdWJjbGFzcyhUZXN0UGFydGlhbEMpOgorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBwYXJ0aWFsID0gUGFydGlhbFN1YmNsYXNzCiAKLSAgICAjIHRoZSBweXRob24gdmVyc2lvbiBpc24ndCBwaWNrbGFibGUKLSAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6IHBhc3MKLSAgICBkZWYgdGVzdF9zZXRzdGF0ZV9yZWZjb3VudChzZWxmKTogcGFzcwogCiBjbGFzcyBUZXN0VXBkYXRlV3JhcHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIyMywxOSArMjI0LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZD1mdW5jdG9vbHMuV1JBUFBFUl9VUERBVEVTKToKICAgICAgICAgIyBDaGVjayBhdHRyaWJ1dGVzIHdlcmUgYXNzaWduZWQKICAgICAgICAgZm9yIG5hbWUgaW4gYXNzaWduZWQ6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2V0YXR0cih3cmFwcGVyLCBuYW1lKSBpcyBnZXRhdHRyKHdyYXBwZWQsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHdyYXBwZXIsIG5hbWUpLCBnZXRhdHRyKHdyYXBwZWQsIG5hbWUpKQogICAgICAgICAjIENoZWNrIGF0dHJpYnV0ZXMgd2VyZSB1cGRhdGVkCiAgICAgICAgIGZvciBuYW1lIGluIHVwZGF0ZWQ6CiAgICAgICAgICAgICB3cmFwcGVyX2F0dHIgPSBnZXRhdHRyKHdyYXBwZXIsIG5hbWUpCiAgICAgICAgICAgICB3cmFwcGVkX2F0dHIgPSBnZXRhdHRyKHdyYXBwZWQsIG5hbWUpCiAgICAgICAgICAgICBmb3Iga2V5IGluIHdyYXBwZWRfYXR0cjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3JhcHBlZF9hdHRyW2tleV0gaXMgd3JhcHBlcl9hdHRyW2tleV0pCisgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAiX19kaWN0X18iIGFuZCBrZXkgPT0gIl9fd3JhcHBlZF9fIjoKKyAgICAgICAgICAgICAgICAgICAgIyBfX3dyYXBwZWRfXyBpcyBvdmVyd3JpdHRlbiBieSB0aGUgdXBkYXRlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZWRfYXR0cltrZXldLCB3cmFwcGVyX2F0dHJba2V5XSkKKyAgICAgICAgIyBDaGVjayBfX3dyYXBwZWRfXworICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX193cmFwcGVkX18sIHdyYXBwZWQpCisKIAogICAgIGRlZiBfZGVmYXVsdF91cGRhdGUoc2VsZik6CiAgICAgICAgIGRlZiBmKGE6J1RoaXMgaXMgYSBuZXcgYW5ub3RhdGlvbicpOgogICAgICAgICAgICAgIiIiVGhpcyBpcyBhIHRlc3QiIiIKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZi5hdHRyID0gJ1RoaXMgaXMgYWxzbyBhIHRlc3QnCisgICAgICAgIGYuX193cmFwcGVkX18gPSAiVGhpcyBpcyBhIGJhbGQgZmFjZWQgbGllIgogICAgICAgICBkZWYgd3JhcHBlcihiOidUaGlzIGlzIHRoZSBwcmlvciBhbm5vdGF0aW9uJyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlcih3cmFwcGVyLCBmKQpAQCAtMzIyLDYgKzMzMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cmFwcGVyLl9fZG9jX18uc3RhcnRzd2l0aCgnbWF4KCcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19hbm5vdGF0aW9uc19fLCB7fSkKIAorCiBjbGFzcyBUZXN0V3JhcHMoVGVzdFVwZGF0ZVdyYXBwZXIpOgogCiAgICAgZGVmIF9kZWZhdWx0X3VwZGF0ZShzZWxmKToKQEAgLTMyOSwxNCArMzM4LDE1IEBACiAgICAgICAgICAgICAiIiJUaGlzIGlzIGEgdGVzdCIiIgogICAgICAgICAgICAgcGFzcwogICAgICAgICBmLmF0dHIgPSAnVGhpcyBpcyBhbHNvIGEgdGVzdCcKKyAgICAgICAgZi5fX3dyYXBwZWRfXyA9ICJUaGlzIGlzIHN0aWxsIGEgYmFsZCBmYWNlZCBsaWUiCiAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZikKICAgICAgICAgZGVmIHdyYXBwZXIoKToKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYpCiAgICAgICAgIHJldHVybiB3cmFwcGVyLCBmCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3VwZGF0ZShzZWxmKToKICAgICAgICAgd3JhcHBlciwgZiA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKKyAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ2YnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGFsc28gYSB0ZXN0JykKQEAgLTM4Miw2ICszOTIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYSBkaWZmZXJlbnQgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5kaWN0X2F0dHIsIGYuZGljdF9hdHRyKQogCisKIGNsYXNzIFRlc3RSZWR1Y2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGZ1bmMgPSBmdW5jdG9vbHMucmVkdWNlCiAKQEAgLTQ2MiwyNCArNDczLDI5IEBACiAgICAgICAgIGQgPSB7Im9uZSI6IDEsICJ0d28iOiAyLCAidGhyZWUiOiAzfQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhhZGQsIGQpLCAiIi5qb2luKGQua2V5cygpKSkKIAotY2xhc3MgVGVzdENtcFRvS2V5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworY2xhc3MgVGVzdENtcFRvS2V5OgogCiAgICAgZGVmIHRlc3RfY21wX3RvX2tleShzZWxmKToKICAgICAgICAgZGVmIGNtcDEoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKLSAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAga2V5ID0gc2VsZi5jbXBfdG9fa2V5KGNtcDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDMpLCBrZXkoMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkoMyksIGtleSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoa2V5KDMpLCBrZXkoMykpCisKICAgICAgICAgZGVmIGNtcDIoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4gaW50KHgpIC0gaW50KHkpCi0gICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDIpCisgICAgICAgIGtleSA9IHNlbGYuY21wX3RvX2tleShjbXAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleSg0LjApLCBrZXkoJzQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGtleSgyKSwga2V5KCczNScpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChrZXkoMiksIGtleSgnMzUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrZXkoMiksIGtleSgnMzUnKSkKIAogICAgIGRlZiB0ZXN0X2NtcF90b19rZXlfYXJndW1lbnRzKHNlbGYpOgogICAgICAgICBkZWYgY21wMSh4LCB5KToKICAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQotICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShteWNtcD1jbXAxKQorICAgICAgICBrZXkgPSBzZWxmLmNtcF90b19rZXkobXljbXA9Y21wMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkob2JqPTMpLCBrZXkob2JqPTMpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoa2V5KG9iaj0zKSwga2V5KG9iaj0xKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcikpOgpAQCAtNDg3LDEwICs1MDMsMTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcikpOgogICAgICAgICAgICAgMSA8IGtleSgzKSAgICAjIGxocyBpcyBub3QgYSBLIG9iamVjdAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleSgpICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCisgICAgICAgICAgICBrZXkgPSBzZWxmLmNtcF90b19rZXkoKSAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxLCBOb25lKSAgICMgdG9vIG1hbnkgYXJncwotICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICAgICAga2V5ID0gc2VsZi5jbXBfdG9fa2V5KGNtcDEsIE5vbmUpICAgIyB0b28gbWFueSBhcmdzCisgICAgICAgIGtleSA9IHNlbGYuY21wX3RvX2tleShjbXAxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBrZXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKQEAgLTQ5OSw3ICs1MTUsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9jbXAoc2VsZik6CiAgICAgICAgIGRlZiBjbXAxKHgsIHkpOgogICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IKLSAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAga2V5ID0gc2VsZi5jbXBfdG9fa2V5KGNtcDEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgogICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCiAKQEAgLTUxNCwxMyArNTMwLDEzIEBACiAgICAgZGVmIHRlc3Rfb2JqX2ZpZWxkKHNlbGYpOgogICAgICAgICBkZWYgY21wMSh4LCB5KToKICAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQotICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShteWNtcD1jbXAxKQorICAgICAgICBrZXkgPSBzZWxmLmNtcF90b19rZXkobXljbXA9Y21wMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNTApLm9iaiwgNTApCiAKICAgICBkZWYgdGVzdF9zb3J0X2ludChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJhbmdlKDUpLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQocmFuZ2UoNSksIGtleT1zZWxmLmNtcF90b19rZXkobXljbXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbNCwgMywgMiwgMSwgMF0pCiAKICAgICBkZWYgdGVzdF9zb3J0X2ludF9zdHIoc2VsZik6CkBAIC01MjgsMTggKzU0NCwyOSBAQAogICAgICAgICAgICAgeCwgeSA9IGludCh4KSwgaW50KHkpCiAgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKICAgICAgICAgdmFsdWVzID0gWzUsICczJywgNywgMiwgJzAnLCAnMScsIDQsICcxMCcsIDFdCi0gICAgICAgIHZhbHVlcyA9IHNvcnRlZCh2YWx1ZXMsIGtleT1mdW5jdG9vbHMuY21wX3RvX2tleShteWNtcCkpCisgICAgICAgIHZhbHVlcyA9IHNvcnRlZCh2YWx1ZXMsIGtleT1zZWxmLmNtcF90b19rZXkobXljbXApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpbnQodmFsdWUpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdLAogICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA0LCA1LCA3LCAxMF0pCiAKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgogICAgICAgICBkZWYgbXljbXAoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4geSAtIHgKLSAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApCisgICAgICAgIGtleSA9IHNlbGYuY21wX3RvX2tleShteWNtcCkKICAgICAgICAgayA9IGtleSgxMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoYXNoLCBrKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaywgY29sbGVjdGlvbnMuSGFzaGFibGUpCiAKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCitjbGFzcyBUZXN0Q21wVG9LZXlDKFRlc3RDbXBUb0tleSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBjbXBfdG9fa2V5ID0gY19mdW5jdG9vbHMuY21wX3RvX2tleQorCisKK2NsYXNzIFRlc3RDbXBUb0tleVB5KFRlc3RDbXBUb0tleSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNtcF90b19rZXkgPSBzdGF0aWNtZXRob2QocHlfZnVuY3Rvb2xzLmNtcF90b19rZXkpCisKKwogY2xhc3MgVGVzdFRvdGFsT3JkZXJpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdG90YWxfb3JkZXJpbmdfbHQoc2VsZik6CkBAIC02NDAsMTEgKzY2NywxMiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBUZXN0VE8oOCkgPD0gKCkKIAorCiBjbGFzcyBUZXN0TFJVKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2xydShzZWxmKToKICAgICAgICAgZGVmIG9yaWcoeCwgeSk6Ci0gICAgICAgICAgICByZXR1cm4gMyp4K3kKKyAgICAgICAgICAgIHJldHVybiAzICogeCArIHkKICAgICAgICAgZiA9IGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0yMCkob3JpZykKICAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4c2l6ZSwgMjApCkBAIC03NDksNyArNzc3LDcgQEAKICAgICAgICAgIyBWZXJpZnkgdGhhdCB1c2VyX2Z1bmN0aW9uIGV4Y2VwdGlvbnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQKICAgICAgICAgIyBjcmVhdGluZyBhIGhhcmQtdG8tcmVhZCBjaGFpbmVkIGV4Y2VwdGlvbi4KICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTMxNzcKLSAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEwMCk6CisgICAgICAgIGZvciBtYXhzaXplIGluIChOb25lLCAxMjgpOgogICAgICAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZSkKICAgICAgICAgICAgIGRlZiBmdW5jKGkpOgogICAgICAgICAgICAgICAgIHJldHVybiAnYWJjJ1tpXQpAQCAtNzYyLDcgKzc5MCw3IEBACiAgICAgICAgICAgICAgICAgZnVuYygxNSkKIAogICAgIGRlZiB0ZXN0X2xydV93aXRoX3R5cGVzKHNlbGYpOgotICAgICAgICBmb3IgbWF4c2l6ZSBpbiAoTm9uZSwgMTAwKToKKyAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEyOCk6CiAgICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCiAgICAgICAgICAgICBkZWYgc3F1YXJlKHgpOgogICAgICAgICAgICAgICAgIHJldHVybiB4ICogeApAQCAtNzc3LDYgKzgwNSwzNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLmhpdHMsIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZS5jYWNoZV9pbmZvKCkubWlzc2VzLCA0KQogCisgICAgZGVmIHRlc3RfbHJ1X3dpdGhfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCisgICAgICAgIGRlZiBmaWIobik6CisgICAgICAgICAgICBpZiBuIDwgMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbgorICAgICAgICAgICAgcmV0dXJuIGZpYihuPW4tMSkgKyBmaWIobj1uLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbZmliKG49bnVtYmVyKSBmb3IgbnVtYmVyIGluIHJhbmdlKDE2KV0sCisgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCwgNTUsIDg5LCAxNDQsIDIzMywgMzc3LCA2MTBdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAorICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPTEyOCwgY3VycnNpemU9MTYpKQorICAgICAgICBmaWIuY2FjaGVfY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCisgICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPTEyOCwgY3VycnNpemU9MCkpCisKKyAgICBkZWYgdGVzdF9scnVfd2l0aF9rZXl3b3JkX2FyZ3NfbWF4c2l6ZV9ub25lKHNlbGYpOgorICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCisgICAgICAgIGRlZiBmaWIobik6CisgICAgICAgICAgICBpZiBuIDwgMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbgorICAgICAgICAgICAgcmV0dXJuIGZpYihuPW4tMSkgKyBmaWIobj1uLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2ZpYihuPW51bWJlcikgZm9yIG51bWJlciBpbiByYW5nZSgxNildLAorICAgICAgICAgICAgWzAsIDEsIDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQsIDU1LCA4OSwgMTQ0LCAyMzMsIDM3NywgNjEwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAorICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKKyAgICAgICAgZmliLmNhY2hlX2NsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAorICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKwogICAgIGRlZiB0ZXN0X25lZWRfZm9yX3Jsb2NrKHNlbGYpOgogICAgICAgICAjIFRoaXMgd2lsbCBkZWFkbG9jayBvbiBhbiBMUlUgY2FjaGUgdGhhdCB1c2VzIGEgcmVndWxhciBsb2NrCiAKQEAgLTgwMiwxNyArODYwLDQ5MyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUVxKDIpKSAgICAgICAgICAgICAgICMgVmVyaWZ5IHRoZSBjb3JyZWN0IHJldHVybiB2YWx1ZQogCiAKK2NsYXNzIFRlc3RTaW5nbGVEaXNwYXRjaCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2ltcGxlX292ZXJsb2FkcyhzZWxmKToKKyAgICAgICAgQGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaAorICAgICAgICBkZWYgZyhvYmopOgorICAgICAgICAgICAgcmV0dXJuICJiYXNlIgorICAgICAgICBkZWYgZ19pbnQoaSk6CisgICAgICAgICAgICByZXR1cm4gImludGVnZXIiCisgICAgICAgIGcucmVnaXN0ZXIoaW50LCBnX2ludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKCJzdHIiKSwgImJhc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoMSksICJpbnRlZ2VyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKFsxLDIsM10pLCAiYmFzZSIpCisKKyAgICBkZWYgdGVzdF9tcm8oc2VsZik6CisgICAgICAgIEBmdW5jdG9vbHMuc2luZ2xlZGlzcGF0Y2gKKyAgICAgICAgZGVmIGcob2JqKToKKyAgICAgICAgICAgIHJldHVybiAiYmFzZSIKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgQyhBKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgRChDLCBCKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZGVmIGdfQShhKToKKyAgICAgICAgICAgIHJldHVybiAiQSIKKyAgICAgICAgZGVmIGdfQihiKToKKyAgICAgICAgICAgIHJldHVybiAiQiIKKyAgICAgICAgZy5yZWdpc3RlcihBLCBnX0EpCisgICAgICAgIGcucmVnaXN0ZXIoQiwgZ19CKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoQSgpKSwgIkEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoQigpKSwgIkIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoQygpKSwgIkEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoRCgpKSwgIkIiKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBAZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoCisgICAgICAgIGRlZiBnKG9iaik6CisgICAgICAgICAgICByZXR1cm4gImJhc2UiCisgICAgICAgIEBnLnJlZ2lzdGVyKGludCkKKyAgICAgICAgZGVmIGdfaW50KGkpOgorICAgICAgICAgICAgcmV0dXJuICJpbnQgJXMiICUgKGksKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoIiIpLCAiYmFzZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZygxMiksICJpbnQgMTIiKQorICAgICAgICBzZWxmLmFzc2VydElzKGcuZGlzcGF0Y2goaW50KSwgZ19pbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZy5kaXNwYXRjaChvYmplY3QpLCBnLmRpc3BhdGNoKHN0cikpCisgICAgICAgICMgTm90ZTogaW4gdGhlIGFzc2VydCBhYm92ZSB0aGlzIGlzIG5vdCBnLgorICAgICAgICAjIEBzaW5nbGVkaXNwYXRjaCByZXR1cm5zIHRoZSB3cmFwcGVyLgorCisgICAgZGVmIHRlc3Rfd3JhcHBpbmdfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgQGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaAorICAgICAgICBkZWYgZyhvYmopOgorICAgICAgICAgICAgIlNpbXBsZSB0ZXN0IgorICAgICAgICAgICAgcmV0dXJuICJUZXN0IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuX19uYW1lX18sICJnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fZG9jX18sICJTaW1wbGUgdGVzdCIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhkZWNpbWFsLCAncmVxdWlyZXMgX2RlY2ltYWwnKQorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NfY2xhc3NlcyhzZWxmKToKKyAgICAgICAgQGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaAorICAgICAgICBkZWYgZyhvYmopOgorICAgICAgICAgICAgcmV0dXJuICJiYXNlIgorICAgICAgICBAZy5yZWdpc3RlcihkZWNpbWFsLkRlY2ltYWxFeGNlcHRpb24pCisgICAgICAgIGRlZiBfKG9iaik6CisgICAgICAgICAgICByZXR1cm4gb2JqLmFyZ3MKKyAgICAgICAgc3VibiA9IGRlY2ltYWwuU3Vibm9ybWFsKCJFeHBvbmVudCA8IEVtaW4iKQorICAgICAgICBybmQgPSBkZWNpbWFsLlJvdW5kZWQoIk51bWJlciBnb3Qgcm91bmRlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhzdWJuKSwgKCJFeHBvbmVudCA8IEVtaW4iLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhybmQpLCAoIk51bWJlciBnb3Qgcm91bmRlZCIsKSkKKyAgICAgICAgQGcucmVnaXN0ZXIoZGVjaW1hbC5TdWJub3JtYWwpCisgICAgICAgIGRlZiBfKG9iaik6CisgICAgICAgICAgICByZXR1cm4gIlRvbyBzbWFsbCB0byBjYXJlLiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHN1Ym4pLCAiVG9vIHNtYWxsIHRvIGNhcmUuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHJuZCksICgiTnVtYmVyIGdvdCByb3VuZGVkIiwpKQorCisgICAgZGVmIHRlc3RfY29tcG9zZV9tcm8oc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGUgZXhhbXBsZXMgaW4gdGhpcyB0ZXN0IGRlcGVuZCBvbiBoYXlzdGFjayBvcmRlcmluZy4KKyAgICAgICAgYyA9IGNvbGxlY3Rpb25zCisgICAgICAgIG1ybyA9IGZ1bmN0b29scy5fY29tcG9zZV9tcm8KKyAgICAgICAgYmFzZXMgPSBbYy5TZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNldF0KKyAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CisgICAgICAgICAgICBtID0gbXJvKGRpY3QsIGhheXN0YWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgIGJhc2VzID0gW2MuQ29udGFpbmVyLCBjLk1hcHBpbmcsIGMuTXV0YWJsZU1hcHBpbmcsIGMuT3JkZXJlZERpY3RdCisgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgorICAgICAgICAgICAgbSA9IG1ybyhjLkNoYWluTWFwLCBoYXlzdGFjaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2MuQ2hhaW5NYXAsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorCisgICAgICAgICMgSWYgdGhlcmUncyBhIGdlbmVyaWMgZnVuY3Rpb24gd2l0aCBpbXBsZW1lbnRhdGlvbnMgcmVnaXN0ZXJlZCBmb3IKKyAgICAgICAgIyBib3RoIFNpemVkIGFuZCBDb250YWluZXIsIHBhc3NpbmcgYSBkZWZhdWx0ZGljdCB0byBpdCByZXN1bHRzIGluIGFuCisgICAgICAgICMgYW1iaWd1b3VzIGRpc3BhdGNoIHdoaWNoIHdpbGwgY2F1c2UgYSBSdW50aW1lRXJyb3IgKHNlZQorICAgICAgICAjIHRlc3RfbXJvX2NvbmZsaWN0cykuCisgICAgICAgIGJhc2VzID0gW2MuQ29udGFpbmVyLCBjLlNpemVkLCBzdHJdCisgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgorICAgICAgICAgICAgbSA9IG1ybyhjLmRlZmF1bHRkaWN0LCBbYy5TaXplZCwgYy5Db250YWluZXIsIHN0cl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLlNpemVkLCBjLkNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF0pCisKKyAgICAgICAgIyBNdXRhYmxlU2VxdWVuY2UgYmVsb3cgaXMgcmVnaXN0ZXJlZCBkaXJlY3RseSBvbiBELiBJbiBvdGhlciB3b3JkcywgaXQKKyAgICAgICAgIyBwcmVjZWVkcyBNdXRhYmxlTWFwcGluZyB3aGljaCBtZWFucyBzaW5nbGUgZGlzcGF0Y2ggd2lsbCBhbHdheXMKKyAgICAgICAgIyBjaG9vc2UgTXV0YWJsZVNlcXVlbmNlIGhlcmUuCisgICAgICAgIGNsYXNzIEQoYy5kZWZhdWx0ZGljdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGMuTXV0YWJsZVNlcXVlbmNlLnJlZ2lzdGVyKEQpCisgICAgICAgIGJhc2VzID0gW2MuTXV0YWJsZVNlcXVlbmNlLCBjLk11dGFibGVNYXBwaW5nXQorICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKKyAgICAgICAgICAgIG0gPSBtcm8oRCwgYmFzZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTXV0YWJsZU1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLk1hcHBpbmcsIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XSkKKworICAgICAgICAjIENvbnRhaW5lciBhbmQgQ2FsbGFibGUgYXJlIHJlZ2lzdGVyZWQgb24gZGlmZmVyZW50IGJhc2UgY2xhc3NlcyBhbmQKKyAgICAgICAgIyBhIGdlbmVyaWMgZnVuY3Rpb24gc3VwcG9ydGluZyBib3RoIHNob3VsZCBhbHdheXMgcGljayB0aGUgQ2FsbGFibGUKKyAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiBpZiBhIEMgaW5zdGFuY2UgaXMgcGFzc2VkLgorICAgICAgICBjbGFzcyBDKGMuZGVmYXVsdGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYmFzZXMgPSBbYy5TaXplZCwgYy5DYWxsYWJsZSwgYy5Db250YWluZXIsIGMuTWFwcGluZ10KKyAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CisgICAgICAgICAgICBtID0gbXJvKEMsIGhheXN0YWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbQywgYy5DYWxsYWJsZSwgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9hYmMoc2VsZik6CisgICAgICAgIGMgPSBjb2xsZWN0aW9ucworICAgICAgICBkID0geyJhIjogImIifQorICAgICAgICBsID0gWzEsIDIsIDNdCisgICAgICAgIHMgPSB7b2JqZWN0KCksIE5vbmV9CisgICAgICAgIGYgPSBmcm96ZW5zZXQocykKKyAgICAgICAgdCA9ICgxLCAyLCAzKQorICAgICAgICBAZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoCisgICAgICAgIGRlZiBnKG9iaik6CisgICAgICAgICAgICByZXR1cm4gImJhc2UiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgImJhc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJiYXNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAiYmFzZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhmKSwgImJhc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcodCksICJiYXNlIikKKyAgICAgICAgZy5yZWdpc3RlcihjLlNpemVkLCBsYW1iZGEgb2JqOiAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJzaXplZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgInNpemVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZiksICJzaXplZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNpemVkIikKKyAgICAgICAgZy5yZWdpc3RlcihjLk11dGFibGVNYXBwaW5nLCBsYW1iZGEgb2JqOiAibXV0YWJsZW1hcHBpbmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJtdXRhYmxlbWFwcGluZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgInNpemVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZiksICJzaXplZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNpemVkIikKKyAgICAgICAgZy5yZWdpc3RlcihjLkNoYWluTWFwLCBsYW1iZGEgb2JqOiAiY2hhaW5tYXAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJtdXRhYmxlbWFwcGluZyIpICAjIGlycmVsZXZhbnQgQUJDcyByZWdpc3RlcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgInNpemVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZiksICJzaXplZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNpemVkIikKKyAgICAgICAgZy5yZWdpc3RlcihjLk11dGFibGVTZXF1ZW5jZSwgbGFtYmRhIG9iajogIm11dGFibGVzZXF1ZW5jZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgIm11dGFibGVtYXBwaW5nIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibXV0YWJsZXNlcXVlbmNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZiksICJzaXplZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNpemVkIikKKyAgICAgICAgZy5yZWdpc3RlcihjLk11dGFibGVTZXQsIGxhbWJkYSBvYmo6ICJtdXRhYmxlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGQpLCAibXV0YWJsZW1hcHBpbmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJtdXRhYmxlc2VxdWVuY2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcocyksICJtdXRhYmxlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGYpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcodCksICJzaXplZCIpCisgICAgICAgIGcucmVnaXN0ZXIoYy5NYXBwaW5nLCBsYW1iZGEgb2JqOiAibWFwcGluZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgIm11dGFibGVtYXBwaW5nIikgICMgbm90IHNwZWNpZmljIGVub3VnaAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJtdXRhYmxlc2VxdWVuY2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcocyksICJtdXRhYmxlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGYpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcodCksICJzaXplZCIpCisgICAgICAgIGcucmVnaXN0ZXIoYy5TZXF1ZW5jZSwgbGFtYmRhIG9iajogInNlcXVlbmNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGQpLCAibXV0YWJsZW1hcHBpbmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJtdXRhYmxlc2VxdWVuY2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcocyksICJtdXRhYmxlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGYpLCAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcodCksICJzZXF1ZW5jZSIpCisgICAgICAgIGcucmVnaXN0ZXIoYy5TZXQsIGxhbWJkYSBvYmo6ICJzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJtdXRhYmxlbWFwcGluZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgIm11dGFibGVzZXF1ZW5jZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhzKSwgIm11dGFibGVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZiksICJzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcodCksICJzZXF1ZW5jZSIpCisgICAgICAgIGcucmVnaXN0ZXIoZGljdCwgbGFtYmRhIG9iajogImRpY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJkaWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibXV0YWJsZXNlcXVlbmNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAibXV0YWJsZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhmKSwgInNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNlcXVlbmNlIikKKyAgICAgICAgZy5yZWdpc3RlcihsaXN0LCBsYW1iZGEgb2JqOiAibGlzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgImRpY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJsaXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHMpLCAibXV0YWJsZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhmKSwgInNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNlcXVlbmNlIikKKyAgICAgICAgZy5yZWdpc3RlcihzZXQsIGxhbWJkYSBvYmo6ICJjb25jcmV0ZS1zZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJkaWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibGlzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhzKSwgImNvbmNyZXRlLXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhmKSwgInNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyh0KSwgInNlcXVlbmNlIikKKyAgICAgICAgZy5yZWdpc3Rlcihmcm96ZW5zZXQsIGxhbWJkYSBvYmo6ICJmcm96ZW4tc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGQpLCAiZGljdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgImxpc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcocyksICJjb25jcmV0ZS1zZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZiksICJmcm96ZW4tc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHQpLCAic2VxdWVuY2UiKQorICAgICAgICBnLnJlZ2lzdGVyKHR1cGxlLCBsYW1iZGEgb2JqOiAidHVwbGUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJkaWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibGlzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhzKSwgImNvbmNyZXRlLXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhmKSwgImZyb3plbi1zZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcodCksICJ0dXBsZSIpCisKKyAgICBkZWYgdGVzdF9jM19hYmMoc2VsZik6CisgICAgICAgIGMgPSBjb2xsZWN0aW9ucworICAgICAgICBtcm8gPSBmdW5jdG9vbHMuX2MzX21ybworICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMCAgICMgaW1wbGllcyBTaXplZAorICAgICAgICBAYy5Db250YWluZXIucmVnaXN0ZXIKKyAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBEKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzICAgIyB1bnJlbGF0ZWQKKyAgICAgICAgY2xhc3MgWChELCBDLCBCKToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzICAgIyBpbXBsaWVzIENhbGxhYmxlCisgICAgICAgIGV4cGVjdGVkID0gW1gsIGMuQ2FsbGFibGUsIEQsIEMsIGMuQ29udGFpbmVyLCBCLCBjLlNpemVkLCBBLCBvYmplY3RdCisgICAgICAgIGZvciBhYmNzIGluIHBlcm11dGF0aW9ucyhbYy5TaXplZCwgYy5DYWxsYWJsZSwgYy5Db250YWluZXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXJvKFgsIGFiY3M9YWJjcyksIGV4cGVjdGVkKQorICAgICAgICAjIHVucmVsYXRlZCBBQkNzIGRvbid0IGFwcGVhciBpbiB0aGUgcmVzdWx0aW5nIE1STworICAgICAgICBtYW55X2FiY3MgPSBbYy5NYXBwaW5nLCBjLlNpemVkLCBjLkNhbGxhYmxlLCBjLkNvbnRhaW5lciwgYy5JdGVyYWJsZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtcm8oWCwgYWJjcz1tYW55X2FiY3MpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X21yb19jb25mbGljdHMoc2VsZik6CisgICAgICAgIGMgPSBjb2xsZWN0aW9ucworICAgICAgICBAZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoCisgICAgICAgIGRlZiBnKGFyZyk6CisgICAgICAgICAgICByZXR1cm4gImJhc2UiCisgICAgICAgIGNsYXNzIE8oYy5TaXplZCk6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICBvID0gTygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhvKSwgImJhc2UiKQorICAgICAgICBnLnJlZ2lzdGVyKGMuSXRlcmFibGUsIGxhbWJkYSBhcmc6ICJpdGVyYWJsZSIpCisgICAgICAgIGcucmVnaXN0ZXIoYy5Db250YWluZXIsIGxhbWJkYSBhcmc6ICJjb250YWluZXIiKQorICAgICAgICBnLnJlZ2lzdGVyKGMuU2l6ZWQsIGxhbWJkYSBhcmc6ICJzaXplZCIpCisgICAgICAgIGcucmVnaXN0ZXIoYy5TZXQsIGxhbWJkYSBhcmc6ICJzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobyksICJzaXplZCIpCisgICAgICAgIGMuSXRlcmFibGUucmVnaXN0ZXIoTykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKG8pLCAic2l6ZWQiKSAgICMgYmVjYXVzZSBpdCdzIGV4cGxpY2l0bHkgaW4gX19tcm9fXworICAgICAgICBjLkNvbnRhaW5lci5yZWdpc3RlcihPKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobyksICJzaXplZCIpICAgIyBzZWUgYWJvdmU6IFNpemVkIGlzIGluIF9fbXJvX18KKyAgICAgICAgYy5TZXQucmVnaXN0ZXIoTykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKG8pLCAic2V0IikgICAgICMgYmVjYXVzZSBjLlNldCBpcyBhIHN1YmNsYXNzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGMuU2l6ZWQgYW5kIGMuQ29udGFpbmVyCisgICAgICAgIGNsYXNzIFA6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHAgPSBQKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHApLCAiYmFzZSIpCisgICAgICAgIGMuSXRlcmFibGUucmVnaXN0ZXIoUCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHApLCAiaXRlcmFibGUiKQorICAgICAgICBjLkNvbnRhaW5lci5yZWdpc3RlcihQKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgcmVfb25lOgorICAgICAgICAgICAgZyhwKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgc3RyKHJlX29uZS5leGNlcHRpb24pLAorICAgICAgICAgICAgKCgiQW1iaWd1b3VzIGRpc3BhdGNoOiA8Y2xhc3MgJ2NvbGxlY3Rpb25zLmFiYy5Db250YWluZXInPiAiCisgICAgICAgICAgICAgICJvciA8Y2xhc3MgJ2NvbGxlY3Rpb25zLmFiYy5JdGVyYWJsZSc+IiksCisgICAgICAgICAgICAgKCJBbWJpZ3VvdXMgZGlzcGF0Y2g6IDxjbGFzcyAnY29sbGVjdGlvbnMuYWJjLkl0ZXJhYmxlJz4gIgorICAgICAgICAgICAgICAib3IgPGNsYXNzICdjb2xsZWN0aW9ucy5hYmMuQ29udGFpbmVyJz4iKSksCisgICAgICAgICkKKyAgICAgICAgY2xhc3MgUShjLlNpemVkKToKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIHEgPSBRKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHEpLCAic2l6ZWQiKQorICAgICAgICBjLkl0ZXJhYmxlLnJlZ2lzdGVyKFEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhxKSwgInNpemVkIikgICAjIGJlY2F1c2UgaXQncyBleHBsaWNpdGx5IGluIF9fbXJvX18KKyAgICAgICAgYy5TZXQucmVnaXN0ZXIoUSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKHEpLCAic2V0IikgICAgICMgYmVjYXVzZSBjLlNldCBpcyBhIHN1YmNsYXNzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGMuU2l6ZWQgYW5kIGMuSXRlcmFibGUKKyAgICAgICAgQGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaAorICAgICAgICBkZWYgaChhcmcpOgorICAgICAgICAgICAgcmV0dXJuICJiYXNlIgorICAgICAgICBAaC5yZWdpc3RlcihjLlNpemVkKQorICAgICAgICBkZWYgXyhhcmcpOgorICAgICAgICAgICAgcmV0dXJuICJzaXplZCIKKyAgICAgICAgQGgucmVnaXN0ZXIoYy5Db250YWluZXIpCisgICAgICAgIGRlZiBfKGFyZyk6CisgICAgICAgICAgICByZXR1cm4gImNvbnRhaW5lciIKKyAgICAgICAgIyBFdmVuIHRob3VnaCBTaXplZCBhbmQgQ29udGFpbmVyIGFyZSBleHBsaWNpdCBiYXNlcyBvZiBNdXRhYmxlTWFwcGluZywKKyAgICAgICAgIyB0aGlzIEFCQyBpcyBpbXBsaWNpdGx5IHJlZ2lzdGVyZWQgb24gZGVmYXVsdGRpY3Qgd2hpY2ggbWFrZXMgYWxsIG9mCisgICAgICAgICMgTXV0YWJsZU1hcHBpbmcncyBiYXNlcyBpbXBsaWNpdCBhcyB3ZWxsIGZyb20gZGVmYXVsdGRpY3QncworICAgICAgICAjIHBlcnNwZWN0aXZlLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgcmVfdHdvOgorICAgICAgICAgICAgaChjLmRlZmF1bHRkaWN0KGxhbWJkYTogMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBzdHIocmVfdHdvLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAoKCJBbWJpZ3VvdXMgZGlzcGF0Y2g6IDxjbGFzcyAnY29sbGVjdGlvbnMuYWJjLkNvbnRhaW5lcic+ICIKKyAgICAgICAgICAgICAgIm9yIDxjbGFzcyAnY29sbGVjdGlvbnMuYWJjLlNpemVkJz4iKSwKKyAgICAgICAgICAgICAoIkFtYmlndW91cyBkaXNwYXRjaDogPGNsYXNzICdjb2xsZWN0aW9ucy5hYmMuU2l6ZWQnPiAiCisgICAgICAgICAgICAgICJvciA8Y2xhc3MgJ2NvbGxlY3Rpb25zLmFiYy5Db250YWluZXInPiIpKSwKKyAgICAgICAgKQorICAgICAgICBjbGFzcyBSKGMuZGVmYXVsdGRpY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjLk11dGFibGVTZXF1ZW5jZS5yZWdpc3RlcihSKQorICAgICAgICBAZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoCisgICAgICAgIGRlZiBpKGFyZyk6CisgICAgICAgICAgICByZXR1cm4gImJhc2UiCisgICAgICAgIEBpLnJlZ2lzdGVyKGMuTXV0YWJsZU1hcHBpbmcpCisgICAgICAgIGRlZiBfKGFyZyk6CisgICAgICAgICAgICByZXR1cm4gIm1hcHBpbmciCisgICAgICAgIEBpLnJlZ2lzdGVyKGMuTXV0YWJsZVNlcXVlbmNlKQorICAgICAgICBkZWYgXyhhcmcpOgorICAgICAgICAgICAgcmV0dXJuICJzZXF1ZW5jZSIKKyAgICAgICAgciA9IFIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkociksICJzZXF1ZW5jZSIpCisgICAgICAgIGNsYXNzIFM6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIFQoUywgYy5TaXplZCk6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICB0ID0gVCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCh0KSwgInNpemVkIikKKyAgICAgICAgYy5Db250YWluZXIucmVnaXN0ZXIoVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoKHQpLCAic2l6ZWQiKSAgICMgYmVjYXVzZSBpdCdzIGV4cGxpY2l0bHkgaW4gdGhlIE1STworICAgICAgICBjbGFzcyBVOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgdSA9IFUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgodSksICJzaXplZCIpICAgIyBpbXBsaWNpdCBTaXplZCBzdWJjbGFzcyBpbmZlcnJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmcm9tIHRoZSBleGlzdGVuY2Ugb2YgX19sZW5fXygpCisgICAgICAgIGMuQ29udGFpbmVyLnJlZ2lzdGVyKFUpCisgICAgICAgICMgVGhlcmUgaXMgbm8gcHJlZmVyZW5jZSBmb3IgcmVnaXN0ZXJlZCB2ZXJzdXMgaW5mZXJyZWQgQUJDcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIHJlX3RocmVlOgorICAgICAgICAgICAgaCh1KQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgc3RyKHJlX3RocmVlLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAoKCJBbWJpZ3VvdXMgZGlzcGF0Y2g6IDxjbGFzcyAnY29sbGVjdGlvbnMuYWJjLkNvbnRhaW5lcic+ICIKKyAgICAgICAgICAgICAgIm9yIDxjbGFzcyAnY29sbGVjdGlvbnMuYWJjLlNpemVkJz4iKSwKKyAgICAgICAgICAgICAoIkFtYmlndW91cyBkaXNwYXRjaDogPGNsYXNzICdjb2xsZWN0aW9ucy5hYmMuU2l6ZWQnPiAiCisgICAgICAgICAgICAgICJvciA8Y2xhc3MgJ2NvbGxlY3Rpb25zLmFiYy5Db250YWluZXInPiIpKSwKKyAgICAgICAgKQorICAgICAgICBjbGFzcyBWKGMuU2l6ZWQsIFMpOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgQGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaAorICAgICAgICBkZWYgaihhcmcpOgorICAgICAgICAgICAgcmV0dXJuICJiYXNlIgorICAgICAgICBAai5yZWdpc3RlcihTKQorICAgICAgICBkZWYgXyhhcmcpOgorICAgICAgICAgICAgcmV0dXJuICJzIgorICAgICAgICBAai5yZWdpc3RlcihjLkNvbnRhaW5lcikKKyAgICAgICAgZGVmIF8oYXJnKToKKyAgICAgICAgICAgIHJldHVybiAiY29udGFpbmVyIgorICAgICAgICB2ID0gVigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaih2KSwgInMiKQorICAgICAgICBjLkNvbnRhaW5lci5yZWdpc3RlcihWKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGoodiksICJjb250YWluZXIiKSAgICMgYmVjYXVzZSBpdCBlbmRzIHVwIHJpZ2h0IGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaXplZCBpbiB0aGUgTVJPCisKKyAgICBkZWYgdGVzdF9jYWNoZV9pbnZhbGlkYXRpb24oc2VsZik6CisgICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0CisgICAgICAgIGNsYXNzIFRyYWNpbmdEaWN0KFVzZXJEaWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKFRyYWNpbmdEaWN0LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5zZXRfb3BzID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHMgPSBbXQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5kYXRhW2tleV0KKyAgICAgICAgICAgICAgICBzZWxmLmdldF9vcHMuYXBwZW5kKGtleSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5zZXRfb3BzLmFwcGVuZChrZXkpCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIGNsZWFyKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZGF0YS5jbGVhcigpCisgICAgICAgIF9vcmlnX3drZCA9IGZ1bmN0b29scy5XZWFrS2V5RGljdGlvbmFyeQorICAgICAgICB0ZCA9IFRyYWNpbmdEaWN0KCkKKyAgICAgICAgZnVuY3Rvb2xzLldlYWtLZXlEaWN0aW9uYXJ5ID0gbGFtYmRhOiB0ZAorICAgICAgICBjID0gY29sbGVjdGlvbnMKKyAgICAgICAgQGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaAorICAgICAgICBkZWYgZyhhcmcpOgorICAgICAgICAgICAgcmV0dXJuICJiYXNlIgorICAgICAgICBkID0ge30KKyAgICAgICAgbCA9IFtdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGQpLCAiYmFzZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRkKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5nZXRfb3BzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5zZXRfb3BzLCBbZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuZGF0YVtkaWN0XSwgZy5yZWdpc3RyeVtvYmplY3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJiYXNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGQpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLmdldF9vcHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLnNldF9vcHMsIFtkaWN0LCBsaXN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5kYXRhW2RpY3RdLCBnLnJlZ2lzdHJ5W29iamVjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuZGF0YVtsaXN0XSwgZy5yZWdpc3RyeVtvYmplY3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLmRhdGFbZGljdF0sIHRkLmRhdGFbbGlzdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgImJhc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJiYXNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5nZXRfb3BzLCBbbGlzdCwgZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuc2V0X29wcywgW2RpY3QsIGxpc3RdKQorICAgICAgICBnLnJlZ2lzdGVyKGxpc3QsIGxhbWJkYSBhcmc6ICJsaXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5nZXRfb3BzLCBbbGlzdCwgZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGQpLCAiYmFzZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRkKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5nZXRfb3BzLCBbbGlzdCwgZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuc2V0X29wcywgW2RpY3QsIGxpc3QsIGRpY3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLmRhdGFbZGljdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rvb2xzLl9maW5kX2ltcGwoZGljdCwgZy5yZWdpc3RyeSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgImxpc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuZ2V0X29wcywgW2xpc3QsIGRpY3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLnNldF9vcHMsIFtkaWN0LCBsaXN0LCBkaWN0LCBsaXN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5kYXRhW2xpc3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0b29scy5fZmluZF9pbXBsKGxpc3QsIGcucmVnaXN0cnkpKQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjLk11dGFibGVNYXBwaW5nLnJlZ2lzdGVyKFgpICAgIyBXaWxsIG5vdCBpbnZhbGlkYXRlIHRoZSBjYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IHVzaW5nIEFCQ3MgeWV0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcoZCksICJiYXNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibGlzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuZ2V0X29wcywgW2xpc3QsIGRpY3QsIGRpY3QsIGxpc3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLnNldF9vcHMsIFtkaWN0LCBsaXN0LCBkaWN0LCBsaXN0XSkKKyAgICAgICAgZy5yZWdpc3RlcihjLlNpemVkLCBsYW1iZGEgYXJnOiAic2l6ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgInNpemVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLmdldF9vcHMsIFtsaXN0LCBkaWN0LCBkaWN0LCBsaXN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5zZXRfb3BzLCBbZGljdCwgbGlzdCwgZGljdCwgbGlzdCwgZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgImxpc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuZ2V0X29wcywgW2xpc3QsIGRpY3QsIGRpY3QsIGxpc3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRkLnNldF9vcHMsIFtkaWN0LCBsaXN0LCBkaWN0LCBsaXN0LCBkaWN0LCBsaXN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibGlzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgInNpemVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5nZXRfb3BzLCBbbGlzdCwgZGljdCwgZGljdCwgbGlzdCwgbGlzdCwgZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuc2V0X29wcywgW2RpY3QsIGxpc3QsIGRpY3QsIGxpc3QsIGRpY3QsIGxpc3RdKQorICAgICAgICBnLmRpc3BhdGNoKGxpc3QpCisgICAgICAgIGcuZGlzcGF0Y2goZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZC5nZXRfb3BzLCBbbGlzdCwgZGljdCwgZGljdCwgbGlzdCwgbGlzdCwgZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCwgZGljdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGQuc2V0X29wcywgW2RpY3QsIGxpc3QsIGRpY3QsIGxpc3QsIGRpY3QsIGxpc3RdKQorICAgICAgICBjLk11dGFibGVTZXQucmVnaXN0ZXIoWCkgICAgICAgIyBXaWxsIGludmFsaWRhdGUgdGhlIGNhY2hlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZCksIDIpICAgIyBTdGFsZSBjYWNoZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGwpLCAibGlzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRkKSwgMSkKKyAgICAgICAgZy5yZWdpc3RlcihjLk11dGFibGVNYXBwaW5nLCBsYW1iZGEgYXJnOiAibXV0YWJsZW1hcHBpbmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhkKSwgIm11dGFibGVtYXBwaW5nIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcobCksICJsaXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGQpLCAyKQorICAgICAgICBnLnJlZ2lzdGVyKGRpY3QsIGxhbWJkYSBhcmc6ICJkaWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnKGQpLCAiZGljdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyhsKSwgImxpc3QiKQorICAgICAgICBnLl9jbGVhcl9jYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRkKSwgMCkKKyAgICAgICAgZnVuY3Rvb2xzLldlYWtLZXlEaWN0aW9uYXJ5ID0gX29yaWdfd2tkCisKKwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIHRlc3RfY2xhc3NlcyA9ICgKLSAgICAgICAgVGVzdFBhcnRpYWwsCi0gICAgICAgIFRlc3RQYXJ0aWFsU3ViY2xhc3MsCi0gICAgICAgIFRlc3RQeXRob25QYXJ0aWFsLAorICAgICAgICBUZXN0UGFydGlhbEMsCisgICAgICAgIFRlc3RQYXJ0aWFsUHksCisgICAgICAgIFRlc3RQYXJ0aWFsQ1N1YmNsYXNzLAogICAgICAgICBUZXN0VXBkYXRlV3JhcHBlciwKICAgICAgICAgVGVzdFRvdGFsT3JkZXJpbmcsCi0gICAgICAgIFRlc3RDbXBUb0tleSwKKyAgICAgICAgVGVzdENtcFRvS2V5QywKKyAgICAgICAgVGVzdENtcFRvS2V5UHksCiAgICAgICAgIFRlc3RXcmFwcywKICAgICAgICAgVGVzdFJlZHVjZSwKICAgICAgICAgVGVzdExSVSwKKyAgICAgICAgVGVzdFNpbmdsZURpc3BhdGNoLAogICAgICkKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CmluZGV4IGEwYzE1NmYuLmJlYWM5OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CkBAIC04Miw2ICs4MiwxNCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24gZGlkbid0IG9jY3VyIikKIAorICAgIGRlZiB0ZXN0X2JhZGZ1dHVyZTEwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IGJhZHN5bnRheF9mdXR1cmUxMAorICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZXJyb3JfbG9jYXRpb24obXNnKSwgKCJiYWRzeW50YXhfZnV0dXJlMTAiLCAnMycpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24gZGlkbid0IG9jY3VyIikKKwogICAgIGRlZiB0ZXN0X3BhcnNlcmhhY2soc2VsZik6CiAgICAgICAgICMgdGVzdCB0aGF0IHRoZSBwYXJzZXIuYzo6ZnV0dXJlX2hhY2sgZnVuY3Rpb24gd29ya3MgYXMgZXhwZWN0ZWQKICAgICAgICAgIyBOb3RlOiBhbHRob3VnaCB0aGlzIHRlc3QgbXVzdCBwYXNzLCBpdCdzIG5vdCB0ZXN0aW5nIHRoZSBvcmlnaW5hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggYzU5YjcyZS4uZThmNTJhNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC0xLDYgKzEsOSBAQAoraW1wb3J0IF90ZXN0Y2FwaQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHZlcmJvc2UsIHJlZmNvdW50X3Rlc3QsIHJ1bl91bml0dGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9weXRob25fc3RkZXJyKQorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIG1ha2Vfc2NyaXB0LCB0ZW1wX2RpcgorCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IGdjCkBAIC0zOCw2ICs0MSw3IEBACiAgICAgICAgICMgZ2MgY29sbGVjdHMgaXQuCiAgICAgICAgIHNlbGYud3IgPSB3ZWFrcmVmLnJlZihDMTA1NTgyMCg2NjYpLCBpdF9oYXBwZW5lZCkKIAorQF90ZXN0Y2FwaS53aXRoX3RwX2RlbAogY2xhc3MgVW5jb2xsZWN0YWJsZShvYmplY3QpOgogICAgICIiIkNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB3aXRoIG11bHRpcGxlIF9fZGVsX18gbWV0aG9kcy4KIApAQCAtNTAsNyArNTQsNyBAQAogICAgICAgICAgICAgc2VsZi5wYXJ0bmVyID0gVW5jb2xsZWN0YWJsZShwYXJ0bmVyPXNlbGYpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnBhcnRuZXIgPSBwYXJ0bmVyCi0gICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgZGVmIF9fdHBfZGVsX18oc2VsZik6CiAgICAgICAgIHBhc3MKIAogIyMjIFRlc3RzCkBAIC0xMzksMTEgKzE0MywxMiBAQAogICAgICAgICBkZWwgYQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGdjLmNvbGxlY3QoKSwgMCkKIAotICAgIGRlZiB0ZXN0X2ZpbmFsaXplcihzZWxmKToKKyAgICBkZWYgdGVzdF9sZWdhY3lfZmluYWxpemVyKHNlbGYpOgogICAgICAgICAjIEEoKSBpcyB1bmNvbGxlY3RhYmxlIGlmIGl0IGlzIHBhcnQgb2YgYSBjeWNsZSwgbWFrZSBzdXJlIGl0IHNob3dzIHVwCiAgICAgICAgICMgaW4gZ2MuZ2FyYmFnZS4KKyAgICAgICAgQF90ZXN0Y2FwaS53aXRoX3RwX2RlbAogICAgICAgICBjbGFzcyBBOgotICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBfX3RwX2RlbF9fKHNlbGYpOiBwYXNzCiAgICAgICAgIGNsYXNzIEI6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGEgPSBBKCkKQEAgLTE2MywxMSArMTY4LDEyIEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoImRpZG4ndCBmaW5kIG9iaiBpbiBnYXJiYWdlIChmaW5hbGl6ZXIpIikKICAgICAgICAgZ2MuZ2FyYmFnZS5yZW1vdmUob2JqKQogCi0gICAgZGVmIHRlc3RfZmluYWxpemVyX25ld2NsYXNzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xlZ2FjeV9maW5hbGl6ZXJfbmV3Y2xhc3Moc2VsZik6CiAgICAgICAgICMgQSgpIGlzIHVuY29sbGVjdGFibGUgaWYgaXQgaXMgcGFydCBvZiBhIGN5Y2xlLCBtYWtlIHN1cmUgaXQgc2hvd3MgdXAKICAgICAgICAgIyBpbiBnYy5nYXJiYWdlLgorICAgICAgICBAX3Rlc3RjYXBpLndpdGhfdHBfZGVsCiAgICAgICAgIGNsYXNzIEEob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgX190cF9kZWxfXyhzZWxmKTogcGFzcwogICAgICAgICBjbGFzcyBCKG9iamVjdCk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGEgPSBBKCkKQEAgLTU2OCwxMiArNTc0LDE0IEBACiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IGdjCisgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICBAX3Rlc3RjYXBpLndpdGhfdHBfZGVsCiAgICAgICAgICAgICBjbGFzcyBYOgogICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICI8WCAlJXI+IiAlJSBzZWxmLm5hbWUKLSAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBkZWYgX190cF9kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICAgICB4ID0gWCgnZmlyc3QnKQpAQCAtNjEwLDYgKzYxOCw2NiBAQAogICAgICAgICBzdGRlcnIgPSBydW5fY29tbWFuZChjb2RlICUgImdjLkRFQlVHX1NBVkVBTEwiKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGIidW5jb2xsZWN0YWJsZSBvYmplY3RzIGF0IHNodXRkb3duIiwgc3RkZXJyKQogCisgICAgZGVmIHRlc3RfZ2NfbWFpbl9tb2R1bGVfYXRfc2h1dGRvd24oc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggdGhlIF9fbWFpbl9fIG1vZHVsZSBhbmQgY2hlY2sKKyAgICAgICAgIyBpdCBnZXRzIGNvbGxlY3RlZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bi4KKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgorICAgICAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKKyAgICAgICAgICAgIGwgPSBbQygpXQorICAgICAgICAgICAgbC5hcHBlbmQobCkKKyAgICAgICAgICAgICIiIgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGInX19kZWxfXyBjYWxsZWQnKQorCisgICAgZGVmIHRlc3RfZ2Nfb3JkaW5hcnlfbW9kdWxlX2F0X3NodXRkb3duKHNlbGYpOgorICAgICAgICAjIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIGEgbm9uLV9fbWFpbl9fIG1vZHVsZS4KKyAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgICAgICBtb2R1bGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCisgICAgICAgICAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQorICAgICAgICAgICAgICAgIGwgPSBbQygpXQorICAgICAgICAgICAgICAgIGwuYXBwZW5kKGwpCisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsICVyKQorICAgICAgICAgICAgICAgIGltcG9ydCBnY3Rlc3QKKyAgICAgICAgICAgICAgICAiIiIgJSAoc2NyaXB0X2RpciwpCisgICAgICAgICAgICBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCAnZ2N0ZXN0JywgbW9kdWxlKQorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgYidfX2RlbF9fIGNhbGxlZCcpCisKKyAgICBkZWYgdGVzdF9nZXRfc3RhdHMoc2VsZik6CisgICAgICAgIHN0YXRzID0gZ2MuZ2V0X3N0YXRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RhdHMpLCAzKQorICAgICAgICBmb3Igc3QgaW4gc3RhdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3QsIGRpY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiY29sbGVjdGVkIiwgImNvbGxlY3Rpb25zIiwgInVuY29sbGVjdGFibGUifSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0WyJjb2xsZWN0ZWQiXSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0WyJjb2xsZWN0aW9ucyJdLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RbInVuY29sbGVjdGFibGUiXSwgMCkKKyAgICAgICAgIyBDaGVjayB0aGF0IGNvbGxlY3Rpb24gY291bnRzIGFyZSBpbmNyZW1lbnRlZCBjb3JyZWN0bHkKKyAgICAgICAgaWYgZ2MuaXNlbmFibGVkKCk6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZ2MuZW5hYmxlKQorICAgICAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgIG9sZCA9IGdjLmdldF9zdGF0cygpCisgICAgICAgIGdjLmNvbGxlY3QoMCkKKyAgICAgICAgbmV3ID0gZ2MuZ2V0X3N0YXRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdbMF1bImNvbGxlY3Rpb25zIl0sIG9sZFswXVsiY29sbGVjdGlvbnMiXSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3WzFdWyJjb2xsZWN0aW9ucyJdLCBvbGRbMV1bImNvbGxlY3Rpb25zIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3WzJdWyJjb2xsZWN0aW9ucyJdLCBvbGRbMl1bImNvbGxlY3Rpb25zIl0pCisgICAgICAgIGdjLmNvbGxlY3QoMikKKyAgICAgICAgbmV3ID0gZ2MuZ2V0X3N0YXRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdbMF1bImNvbGxlY3Rpb25zIl0sIG9sZFswXVsiY29sbGVjdGlvbnMiXSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3WzFdWyJjb2xsZWN0aW9ucyJdLCBvbGRbMV1bImNvbGxlY3Rpb25zIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3WzJdWyJjb2xsZWN0aW9ucyJdLCBvbGRbMl1bImNvbGxlY3Rpb25zIl0gKyAxKQorCiAKIGNsYXNzIEdDQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCBhYmNiMjNlLi40YzAzN2ExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtMTY0LDYgKzE2NCw3IEBACiAgICAgICAgICAgICAnbGludXgtZ2F0ZS5zbycsCiAgICAgICAgICAgICAnRG8geW91IG5lZWQgInNldCBzb2xpYi1zZWFyY2gtcGF0aCIgb3IgJwogICAgICAgICAgICAgJyJzZXQgc3lzcm9vdCI/JywKKyAgICAgICAgICAgICd3YXJuaW5nOiBTb3VyY2UgZmlsZSBpcyBtb3JlIHJlY2VudCB0aGFuIGV4ZWN1dGFibGUuJywKICAgICAgICAgICAgICkKICAgICAgICAgZm9yIGxpbmUgaW4gZXJybGluZXM6CiAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKGlnbm9yZV9wYXR0ZXJucyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggOTU4MDU0YS4uNGU5MjExNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMSwzICsxLDU1IEBACitpbXBvcnQgZ2MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworY2xhc3MgRmluYWxpemF0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mcmFtZV9yZXN1cnJlY3Qoc2VsZik6CisgICAgICAgICMgQSBnZW5lcmF0b3IgZnJhbWUgY2FuIGJlIHJlc3VycmVjdGVkIGJ5IGEgZ2VuZXJhdG9yJ3MgZmluYWxpemF0aW9uLgorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBmcmFtZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpCisKKyAgICAgICAgZyA9IGdlbigpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoZykKKyAgICAgICAgbmV4dChnKQorICAgICAgICBkZWwgZworICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZSkKKyAgICAgICAgZGVsIGZyYW1lCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9yZWZjeWNsZShzZWxmKToKKyAgICAgICAgIyBBIGdlbmVyYXRvciBjYXVnaHQgaW4gYSByZWZjeWNsZSBnZXRzIGZpbmFsaXplZCBhbnl3YXkuCisgICAgICAgIG9sZF9nYXJiYWdlID0gZ2MuZ2FyYmFnZVs6XQorICAgICAgICBmaW5hbGl6ZWQgPSBGYWxzZQorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBmaW5hbGl6ZWQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnID0geWllbGQKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZpbmFsaXplZCA9IFRydWUKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgbmV4dChnKQorICAgICAgICBnLnNlbmQoZykKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRyZWZjb3VudChnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaW5hbGl6ZWQpCisgICAgICAgIGRlbCBnCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5hbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2MuZ2FyYmFnZSwgb2xkX2dhcmJhZ2UpCisKKwogdHV0b3JpYWxfdGVzdHMgPSAiIiIKIExldCdzIHRyeSBhIHNpbXBsZSBnZW5lcmF0b3I6CiAKQEAgLTE3MjksOSArMTc4MSw3IEBACiA+Pj4gZyA9IGYoKQogPj4+IG5leHQoZykKID4+PiBkZWwgZwotPj4+IHN5cy5zdGRlcnIuZ2V0dmFsdWUoKS5zdGFydHN3aXRoKAotLi4uICAgICAiRXhjZXB0aW9uIFJ1bnRpbWVFcnJvcjogJ2dlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQnIGluICIKLS4uLiApCis+Pj4gIlJ1bnRpbWVFcnJvcjogZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIgaW4gc3lzLnN0ZGVyci5nZXR2YWx1ZSgpCiBUcnVlCiA+Pj4gc3lzLnN0ZGVyciA9IG9sZAogCkBAIC0xODQxLDIyICsxODkxLDIzIEBACiAuLi4gICAgIHN5cy5zdGRlcnIgPSBpby5TdHJpbmdJTygpCiAuLi4gICAgIGNsYXNzIExlYWtlcjoKIC4uLiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotLi4uICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorLi4uICAgICAgICAgICAgIGRlZiBpbnZva2UobWVzc2FnZSk6CisuLi4gICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihtZXNzYWdlKQorLi4uICAgICAgICAgICAgIGludm9rZSgidGVzdCIpCiAuLi4KIC4uLiAgICAgbCA9IExlYWtlcigpCiAuLi4gICAgIGRlbCBsCiAuLi4gICAgIGVyciA9IHN5cy5zdGRlcnIuZ2V0dmFsdWUoKS5zdHJpcCgpCi0uLi4gICAgIGVyci5zdGFydHN3aXRoKAotLi4uICAgICAgICAgIkV4Y2VwdGlvbiBSdW50aW1lRXJyb3I6IFJ1bnRpbWVFcnJvcigpIGluIDwiCi0uLi4gICAgICkKLS4uLiAgICAgZXJyLmVuZHN3aXRoKCI+IGlnbm9yZWQiKQotLi4uICAgICBsZW4oZXJyLnNwbGl0bGluZXMoKSkKKy4uLiAgICAgIkV4Y2VwdGlvbiBpZ25vcmVkIGluIiBpbiBlcnIKKy4uLiAgICAgIlJ1bnRpbWVFcnJvcjogdGVzdCIgaW4gZXJyCisuLi4gICAgICJUcmFjZWJhY2siIGluIGVycgorLi4uICAgICAiaW4gaW52b2tlIiBpbiBlcnIKIC4uLiBmaW5hbGx5OgogLi4uICAgICBzeXMuc3RkZXJyID0gb2xkCiBUcnVlCiBUcnVlCi0xCi0KK1RydWUKK1RydWUKIAogCiBUaGVzZSByZWZsZWFrIHRlc3RzIHNob3VsZCBwZXJoYXBzIGJlIGluIGEgdGVzdGZpbGUgb2YgdGhlaXIgb3duLApAQCAtMTg4MSw2ICsxOTMyLDcgQEAKICMgc28gdGhpcyB3b3JrcyBhcyBleHBlY3RlZCBpbiBib3RoIHdheXMgb2YgcnVubmluZyByZWdydGVzdC4KIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJhdG9ycworICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9nZW5lcmF0b3JzLCB2ZXJib3NlKQogCiAjIFRoaXMgcGFydCBpc24ndCBuZWVkZWQgZm9yIHJlZ3J0ZXN0LCBidXQgZm9yIHJ1bm5pbmcgdGhlIHRlc3QgZGlyZWN0bHkuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQppbmRleCBmZDhiYzU3Li5lOTY3ODk3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKQEAgLTE4OCwxMiArMTg4LDkzIEBACiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfZmlsZShmaWxlbmFtZSk6CisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYidmb28nKQorCisgICAgZGVmIHRlc3Rfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgorICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbiwgdGVzdF9mbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X3NhbWVmaWxlX29uX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKG9zLnN5bWxpbmspCisKKyAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9saW5rKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhvcy5saW5rKQorCisgICAgZGVmIF90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgorICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisKKyAgICAgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQorICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCisgICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCisKKyAgICBkZWYgdGVzdF9zYW1lc3RhdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9mbiA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCisgICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuKQorICAgICAgICAgICAgdGVzdF9mbnMgPSBbdGVzdF9mbl0qMgorICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9zeW1saW5rKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhvcy5zeW1saW5rKQorCisgICAgZGVmIHRlc3Rfc2FtZXN0YXRfb25fbGluayhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMob3MubGluaykKKworICAgIGRlZiBfdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKKyAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICAgICAgdGVzdF9mbnMgPSAodGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICAgICAgZnVuYygqdGVzdF9mbnMpCisgICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKKyAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQorICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgZGVmIHRlc3Rfc2FtZW9wZW5maWxlKHNlbGYpOgorICAgICAgICBmbmFtZSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCisgICAgICAgIHdpdGggb3BlbihmbmFtZSwgIndiIikgYXMgYSwgb3BlbihmbmFtZSwgIndiIikgYXMgYjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZW9wZW5maWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmZpbGVubygpLCBiLmZpbGVubygpKSkKKwogY2xhc3MgVGVzdEdlbmVyaWNUZXN0KEdlbmVyaWNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBJc3N1ZSAxNjg1MjogR2VuZXJpY1Rlc3QgY2FuJ3QgaW5oZXJpdCBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlCiAgICAgIyBmb3IgdGVzdCBkaXNjb3ZlcnkgcHVycG9zZXM7IENvbW1vblRlc3QgaW5oZXJpdHMgZnJvbSBHZW5lcmljVGVzdAogICAgICMgYW5kIGlzIG9ubHkgbWVhbnQgdG8gYmUgaW5oZXJpdGVkIGJ5IG90aGVycy4KICAgICBwYXRobW9kdWxlID0gZ2VuZXJpY3BhdGgKIAorCiAjIEZvbGxvd2luZyBUZXN0Q2FzZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGZyb20gdGVzdF9nZW5lcmljcGF0aC4KICMgSXQgaXMgaW5oZXJpdGVkIGJ5IG90aGVyIHRlc3QgbW9kdWxlcyAobWFjcGF0aCwgbnRwYXRoLCBwb3NpeHBhdGgpLgogCkBAIC0zMjIsNyArNDAzLDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5lZWQgc3VwcG9ydC5URVNURk5fTk9OQVNDSUkiKQogCi0gICAgICAgICMgVGVzdCBub24tQVNDSUksIG5vbi1VVEY4IGJ5dGVzIGluIHRoZSBwYXRoLgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChuYW1lKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IDQ4Y2E5NGUuLmJlZWE3NmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtMSwzOCArMSw0MCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzLCBnZXRhcmdzX2tleXdvcmRfb25seQordHJ5OgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wsIGdldGFyZ3NfSworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdldGFyZ3NfTCA9IE5vbmUgIyBQWV9MT05HX0xPTkcgbm90IGF2YWlsYWJsZQogCi0iIiIKLT4gSG93IGFib3V0IHRoZSBmb2xsb3dpbmcgY291bnRlcnByb3Bvc2FsLiBUaGlzIGFsc28gY2hhbmdlcyBzb21lIG9mCi0+IHRoZSBvdGhlciBmb3JtYXQgY29kZXMgdG8gYmUgYSBsaXR0bGUgbW9yZSByZWd1bGFyLgotPgotPiBDb2RlIEMgdHlwZSBSYW5nZSBjaGVjawotPgotPiBiIHVuc2lnbmVkIGNoYXIgMC4uVUNIQVJfTUFYCi0+IGggc2lnbmVkIHNob3J0IFNIUlRfTUlOLi5TSFJUX01BWAotPiBCIHVuc2lnbmVkIGNoYXIgbm9uZSAqKgotPiBIIHVuc2lnbmVkIHNob3J0IG5vbmUgKioKLT4gayAqIHVuc2lnbmVkIGxvbmcgbm9uZQotPiBJICogdW5zaWduZWQgaW50IDAuLlVJTlRfTUFYCi0KLQotPiBpIGludCBJTlRfTUlOLi5JTlRfTUFYCi0+IGwgbG9uZyBMT05HX01JTi4uTE9OR19NQVgKLQotPiBLICogdW5zaWduZWQgbG9uZyBsb25nIG5vbmUKLT4gTCBsb25nIGxvbmcgTExPTkdfTUlOLi5MTE9OR19NQVgKLQotPiBOb3RlczoKLT4KLT4gKiBOZXcgZm9ybWF0IGNvZGVzLgotPgotPiAqKiBDaGFuZ2VkIGZyb20gcHJldmlvdXMgInJhbmdlLWFuZC1hLWhhbGYiIHRvICJub25lIjsgdGhlCi0+IHJhbmdlLWFuZC1hLWhhbGYgY2hlY2tpbmcgd2Fzbid0IHBhcnRpY3VsYXJseSB1c2VmdWwuCi0KLVBsdXMgYSBDIEFQSSBvciB0d28sIGUuZy4gUHlJbnRfQXNMb25nTWFzaygpIC0+Ci11bnNpZ25lZCBsb25nIGFuZCBQeUludF9Bc0xvbmdMb25nTWFzaygpIC0+IHVuc2lnbmVkCi1sb25nIGxvbmcgKGlmIHRoYXQgZXhpc3RzKS4KLSIiIgorIyA+IEhvdyBhYm91dCB0aGUgZm9sbG93aW5nIGNvdW50ZXJwcm9wb3NhbC4gVGhpcyBhbHNvIGNoYW5nZXMgc29tZSBvZgorIyA+IHRoZSBvdGhlciBmb3JtYXQgY29kZXMgdG8gYmUgYSBsaXR0bGUgbW9yZSByZWd1bGFyLgorIyA+CisjID4gQ29kZSBDIHR5cGUgUmFuZ2UgY2hlY2sKKyMgPgorIyA+IGIgdW5zaWduZWQgY2hhciAwLi5VQ0hBUl9NQVgKKyMgPiBoIHNpZ25lZCBzaG9ydCBTSFJUX01JTi4uU0hSVF9NQVgKKyMgPiBCIHVuc2lnbmVkIGNoYXIgbm9uZSAqKgorIyA+IEggdW5zaWduZWQgc2hvcnQgbm9uZSAqKgorIyA+IGsgKiB1bnNpZ25lZCBsb25nIG5vbmUKKyMgPiBJICogdW5zaWduZWQgaW50IDAuLlVJTlRfTUFYCisjCisjCisjID4gaSBpbnQgSU5UX01JTi4uSU5UX01BWAorIyA+IGwgbG9uZyBMT05HX01JTi4uTE9OR19NQVgKKyMKKyMgPiBLICogdW5zaWduZWQgbG9uZyBsb25nIG5vbmUKKyMgPiBMIGxvbmcgbG9uZyBMTE9OR19NSU4uLkxMT05HX01BWAorIworIyA+IE5vdGVzOgorIyA+CisjID4gKiBOZXcgZm9ybWF0IGNvZGVzLgorIyA+CisjID4gKiogQ2hhbmdlZCBmcm9tIHByZXZpb3VzICJyYW5nZS1hbmQtYS1oYWxmIiB0byAibm9uZSI7IHRoZQorIyA+IHJhbmdlLWFuZC1hLWhhbGYgY2hlY2tpbmcgd2Fzbid0IHBhcnRpY3VsYXJseSB1c2VmdWwuCisjCisjIFBsdXMgYSBDIEFQSSBvciB0d28sIGUuZy4gUHlJbnRfQXNMb25nTWFzaygpIC0+CisjIHVuc2lnbmVkIGxvbmcgYW5kIFB5SW50X0FzTG9uZ0xvbmdNYXNrKCkgLT4gdW5zaWduZWQKKyMgbG9uZyBsb25nIChpZiB0aGF0IGV4aXN0cykuCiAKIExBUkdFID0gMHg3RkZGRkZGRgogVkVSWV9MQVJHRSA9IDB4RkYwMDAwMTIxMjEyMTIxMjEyMTIxMjQyCkBAIC0xODQsNiArMTg2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXJnc19uLCBWRVJZX0xBUkdFKQogCiAKK0B1bml0dGVzdC5za2lwSWYoZ2V0YXJnc19MIGlzIE5vbmUsICdQWV9MT05HX0xPTkcgaXMgbm90IGF2YWlsYWJsZScpCiBjbGFzcyBMb25nTG9uZ19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfTChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfTApAQCAtNTM2LDI0ICs1MzksNSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZXRhcmdzX1pfaGFzaChOb25lKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdHMgPSBbCi0gICAgICAgIFNpZ25lZF9UZXN0Q2FzZSwKLSAgICAgICAgVW5zaWduZWRfVGVzdENhc2UsCi0gICAgICAgIEJvb2xlYW5fVGVzdENhc2UsCi0gICAgICAgIFR1cGxlX1Rlc3RDYXNlLAotICAgICAgICBLZXl3b3Jkc19UZXN0Q2FzZSwKLSAgICAgICAgS2V5d29yZE9ubHlfVGVzdENhc2UsCi0gICAgICAgIEJ5dGVzX1Rlc3RDYXNlLAotICAgICAgICBVbmljb2RlX1Rlc3RDYXNlLAotICAgIF0KLSAgICB0cnk6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wsIGdldGFyZ3NfSwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcyAjIFBZX0xPTkdfTE9ORyBub3QgYXZhaWxhYmxlCi0gICAgZWxzZToKLSAgICAgICAgdGVzdHMuYXBwZW5kKExvbmdMb25nX1Rlc3RDYXNlKQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXRwYXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRwYXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MzFiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2dldHBhc3MucHkKQEAgLTAsMCArMSwxNTUgQEAKK2ltcG9ydCBnZXRwYXNzCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCit0cnk6CisgICAgaW1wb3J0IHRlcm1pb3MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0ZXJtaW9zID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBwd2QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwd2QgPSBOb25lCisKK0Btb2NrLnBhdGNoKCdvcy5lbnZpcm9uJykKK2NsYXNzIEdldHBhc3NHZXR1c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF91c2VybmFtZV90YWtlc191c2VybmFtZV9mcm9tX2VudihzZWxmLCBlbnZpcm9uKToKKyAgICAgICAgZXhwZWN0ZWRfbmFtZSA9ICdzb21lX25hbWUnCisgICAgICAgIGVudmlyb24uZ2V0LnJldHVybl92YWx1ZSA9IGV4cGVjdGVkX25hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9uYW1lLCBnZXRwYXNzLmdldHVzZXIoKSkKKworICAgIGRlZiB0ZXN0X3VzZXJuYW1lX3ByaW9yaXRpZXNfb2ZfZW52X3ZhbHVlcyhzZWxmLCBlbnZpcm9uKToKKyAgICAgICAgZW52aXJvbi5nZXQucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnZXRwYXNzLmdldHVzZXIoKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6ICMgaW4gY2FzZSB0aGVyZSdzIG5vIHB3ZCBtb2R1bGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGVudmlyb24uZ2V0LmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgW21vY2suY2FsbCh4KSBmb3IgeCBpbiAoJ0xPR05BTUUnLCAnVVNFUicsICdMTkFNRScsICdVU0VSTkFNRScpXSkKKworICAgIGRlZiB0ZXN0X3VzZXJuYW1lX2ZhbGxzX2JhY2tfdG9fcHdkKHNlbGYsIGVudmlyb24pOgorICAgICAgICBleHBlY3RlZF9uYW1lID0gJ3NvbWVfbmFtZScKKyAgICAgICAgZW52aXJvbi5nZXQucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgICAgICBpZiBwd2Q6CisgICAgICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ29zLmdldHVpZCcpIGFzIHVpZCwgXAorICAgICAgICAgICAgICAgICAgICBtb2NrLnBhdGNoKCdwd2QuZ2V0cHd1aWQnKSBhcyBnZXRwdzoKKyAgICAgICAgICAgICAgICB1aWQucmV0dXJuX3ZhbHVlID0gNDIKKyAgICAgICAgICAgICAgICBnZXRwdy5yZXR1cm5fdmFsdWUgPSBbZXhwZWN0ZWRfbmFtZV0KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRwYXNzLmdldHVzZXIoKSkKKyAgICAgICAgICAgICAgICBnZXRwdy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCg0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBnZXRwYXNzLmdldHVzZXIpCisKKworY2xhc3MgR2V0cGFzc1Jhd2lucHV0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mbHVzaGVzX3N0cmVhbV9hZnRlcl9wcm9tcHQoc2VsZik6CisgICAgICAgICMgc2VlIGlzc3VlIDE3MDMKKyAgICAgICAgc3RyZWFtID0gbW9jay5Nb2NrKHNwZWM9U3RyaW5nSU8pCisgICAgICAgIGlucHV0ID0gU3RyaW5nSU8oJ2lucHV0X3N0cmluZycpCisgICAgICAgIGdldHBhc3MuX3Jhd19pbnB1dCgnc29tZV9wcm9tcHQnLCBzdHJlYW0sIGlucHV0PWlucHV0KQorICAgICAgICBzdHJlYW0uZmx1c2guYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgZGVmIHRlc3RfdXNlc19zdGRlcnJfYXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgaW5wdXQgPSBTdHJpbmdJTygnaW5wdXRfc3RyaW5nJykKKyAgICAgICAgcHJvbXB0ID0gJ3NvbWVfcHJvbXB0JworICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3N5cy5zdGRlcnInKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBnZXRwYXNzLl9yYXdfaW5wdXQocHJvbXB0LCBpbnB1dD1pbnB1dCkKKyAgICAgICAgICAgIHN0ZGVyci53cml0ZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChwcm9tcHQpCisKKyAgICBAbW9jay5wYXRjaCgnc3lzLnN0ZGluJykKKyAgICBkZWYgdGVzdF91c2VzX3N0ZGluX2FzX2RlZmF1bHRfaW5wdXQoc2VsZiwgbW9ja19pbnB1dCk6CisgICAgICAgIG1vY2tfaW5wdXQucmVhZGxpbmUucmV0dXJuX3ZhbHVlID0gJ2lucHV0X3N0cmluZycKKyAgICAgICAgZ2V0cGFzcy5fcmF3X2lucHV0KHN0cmVhbT1TdHJpbmdJTygpKQorICAgICAgICBtb2NrX2lucHV0LnJlYWRsaW5lLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgIGRlZiB0ZXN0X3JhaXNlc19vbl9lbXB0eV9pbnB1dChzZWxmKToKKyAgICAgICAgaW5wdXQgPSBTdHJpbmdJTygnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGdldHBhc3MuX3Jhd19pbnB1dCwgaW5wdXQ9aW5wdXQpCisKKyAgICBkZWYgdGVzdF90cmltc190cmFpbGluZ19uZXdsaW5lKHNlbGYpOgorICAgICAgICBpbnB1dCA9IFN0cmluZ0lPKCd0ZXN0XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0ZXN0JywgZ2V0cGFzcy5fcmF3X2lucHV0KGlucHV0PWlucHV0KSkKKworCisjIFNvbWUgb2YgdGhlc2UgdGVzdHMgYXJlIGEgYml0IHdoaXRlLWJveC4gIFRoZSBmdW5jdGlvbmFsIHJlcXVpcmVtZW50IGlzIHRoYXQKKyMgdGhlIHBhc3N3b3JkIGlucHV0IGJlIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIHR0eSwgYW5kIHRoYXQgaXQgbm90IGJlIGVjaG9lZAorIyBvbiB0aGUgc2NyZWVuLCB1bmxlc3Mgd2UgYXJlIGZhbGxpbmcgYmFjayB0byBzdGRlcnIvc3RkaW4uCisKKyMgU29tZSBvZiB0aGVzZSBtaWdodCBydW4gb24gcGxhdGZvcm1zIHdpdGhvdXQgdGVybWlvcywgYnV0IHBsYXkgaXQgc2FmZS4KK0B1bml0dGVzdC5za2lwVW5sZXNzKHRlcm1pb3MsICd0ZXN0cyByZXF1aXJlIHN5c3RlbSB3aXRoIHRlcm1pb3MnKQorY2xhc3MgVW5peEdldHBhc3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3VzZXNfdHR5X2RpcmVjdGx5KHNlbGYpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ29zLm9wZW4nKSBhcyBvcGVuLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgnaW8uRmlsZUlPJykgYXMgZmlsZWlvLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgnaW8uVGV4dElPV3JhcHBlcicpIGFzIHRleHRpbzoKKyAgICAgICAgICAgICMgQnkgc2V0dGluZyBvcGVuJ3MgcmV0dXJuIHZhbHVlIHRvIE5vbmUgdGhlIGltcGxlbWVudGF0aW9uIHdpbGwKKyAgICAgICAgICAgICMgc2tpcCBjb2RlIHdlIGRvbid0IGNhcmUgYWJvdXQgaW4gdGhpcyB0ZXN0LiAgV2UgY2FuIG1vY2sgdGhpcyBvdXQKKyAgICAgICAgICAgICMgZnVsbHkgaWYgYW4gYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIHdvcmtzIGRpZmZlcmVudGx5LgorICAgICAgICAgICAgb3Blbi5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgICAgICAgICBnZXRwYXNzLnVuaXhfZ2V0cGFzcygpCisgICAgICAgICAgICBvcGVuLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCcvZGV2L3R0eScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLk9fUkRXUiB8IG9zLk9fTk9DVFRZKQorICAgICAgICAgICAgZmlsZWlvLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKG9wZW4ucmV0dXJuX3ZhbHVlLCAndysnKQorICAgICAgICAgICAgdGV4dGlvLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGZpbGVpby5yZXR1cm5fdmFsdWUpCisKKyAgICBkZWYgdGVzdF9yZXNldHNfdGVybWlvcyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdvcy5vcGVuJykgYXMgb3BlbiwgXAorICAgICAgICAgICAgICAgIG1vY2sucGF0Y2goJ2lvLkZpbGVJTycpLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgnaW8uVGV4dElPV3JhcHBlcicpLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgndGVybWlvcy50Y2dldGF0dHInKSBhcyB0Y2dldGF0dHIsIFwKKyAgICAgICAgICAgICAgICBtb2NrLnBhdGNoKCd0ZXJtaW9zLnRjc2V0YXR0cicpIGFzIHRjc2V0YXR0cjoKKyAgICAgICAgICAgIG9wZW4ucmV0dXJuX3ZhbHVlID0gMworICAgICAgICAgICAgZmFrZV9hdHRycyA9IFsyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NV0KKyAgICAgICAgICAgIHRjZ2V0YXR0ci5yZXR1cm5fdmFsdWUgPSBsaXN0KGZha2VfYXR0cnMpCisgICAgICAgICAgICBnZXRwYXNzLnVuaXhfZ2V0cGFzcygpCisgICAgICAgICAgICB0Y3NldGF0dHIuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIG1vY2suQU5ZLCBmYWtlX2F0dHJzKQorCisgICAgZGVmIHRlc3RfZmFsbHNfYmFja190b19mYWxsYmFja19pZl90ZXJtaW9zX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdvcy5vcGVuJykgYXMgb3BlbiwgXAorICAgICAgICAgICAgICAgIG1vY2sucGF0Y2goJ2lvLkZpbGVJTycpIGFzIGZpbGVpbywgXAorICAgICAgICAgICAgICAgIG1vY2sucGF0Y2goJ2lvLlRleHRJT1dyYXBwZXInKSBhcyB0ZXh0aW8sIFwKKyAgICAgICAgICAgICAgICBtb2NrLnBhdGNoKCd0ZXJtaW9zLnRjZ2V0YXR0cicpLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgndGVybWlvcy50Y3NldGF0dHInKSBhcyB0Y3NldGF0dHIsIFwKKyAgICAgICAgICAgICAgICBtb2NrLnBhdGNoKCdnZXRwYXNzLmZhbGxiYWNrX2dldHBhc3MnKSBhcyBmYWxsYmFjazoKKyAgICAgICAgICAgIG9wZW4ucmV0dXJuX3ZhbHVlID0gMworICAgICAgICAgICAgZmlsZWlvLnJldHVybl92YWx1ZSA9IEJ5dGVzSU8oKQorICAgICAgICAgICAgdGNzZXRhdHRyLnNpZGVfZWZmZWN0ID0gdGVybWlvcy5lcnJvcgorICAgICAgICAgICAgZ2V0cGFzcy51bml4X2dldHBhc3MoKQorICAgICAgICAgICAgZmFsbGJhY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ1Bhc3N3b3JkOiAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dGlvLnJldHVybl92YWx1ZSkKKworICAgIGRlZiB0ZXN0X2ZsdXNoZXNfc3RyZWFtX2FmdGVyX2lucHV0KHNlbGYpOgorICAgICAgICAjIGlzc3VlIDcyMDgKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdvcy5vcGVuJykgYXMgb3BlbiwgXAorICAgICAgICAgICAgICAgIG1vY2sucGF0Y2goJ2lvLkZpbGVJTycpLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgnaW8uVGV4dElPV3JhcHBlcicpLCBcCisgICAgICAgICAgICAgICAgbW9jay5wYXRjaCgndGVybWlvcy50Y2dldGF0dHInKSwgXAorICAgICAgICAgICAgICAgIG1vY2sucGF0Y2goJ3Rlcm1pb3MudGNzZXRhdHRyJyk6CisgICAgICAgICAgICBvcGVuLnJldHVybl92YWx1ZSA9IDMKKyAgICAgICAgICAgIG1vY2tfc3RyZWFtID0gbW9jay5Nb2NrKHNwZWM9U3RyaW5nSU8pCisgICAgICAgICAgICBnZXRwYXNzLnVuaXhfZ2V0cGFzcyhzdHJlYW09bW9ja19zdHJlYW0pCisgICAgICAgICAgICBtb2NrX3N0cmVhbS5mbHVzaC5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCisgICAgZGVmIHRlc3RfZmFsbHNfYmFja190b19zdGRpbihzZWxmKToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdvcy5vcGVuJykgYXMgb3Nfb3BlbiwgXAorICAgICAgICAgICAgICAgIG1vY2sucGF0Y2goJ3N5cy5zdGRpbicsIHNwZWM9U3RyaW5nSU8pIGFzIHN0ZGluOgorICAgICAgICAgICAgb3Nfb3Blbi5zaWRlX2VmZmVjdCA9IElPRXJyb3IKKyAgICAgICAgICAgIHN0ZGluLmZpbGVuby5zaWRlX2VmZmVjdCA9IEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhnZXRwYXNzLkdldFBhc3NXYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgZ2V0cGFzcy51bml4X2dldHBhc3MoKQorICAgICAgICAgICAgc3RkaW4ucmVhZGxpbmUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignV2FybmluZycsIHN0ZGVyci5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignUGFzc3dvcmQ6Jywgc3RkZXJyLmdldHZhbHVlKCkpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDVlYWM5MjEuLjM3ZmU4NTMKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtMzg5LDYgKzM4OSwyMCBAQAogICAgICAgICAgICAgZGF0YWMgPSBnemlwLmNvbXByZXNzKGRhdGEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGd6aXAuZGVjb21wcmVzcyhkYXRhYyksIGRhdGEpCiAKKyAgICBkZWYgdGVzdF9yZWFkX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgZGF0YSA9IGRhdGExKjUwCisgICAgICAgICMgRHJvcCB0aGUgQ1JDICg0IGJ5dGVzKSBhbmQgZmlsZSBzaXplICg0IGJ5dGVzKS4KKyAgICAgICAgdHJ1bmNhdGVkID0gZ3ppcC5jb21wcmVzcyhkYXRhKVs6LThdCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWlvLkJ5dGVzSU8odHJ1bmNhdGVkKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWlvLkJ5dGVzSU8odHJ1bmNhdGVkKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKGxlbihkYXRhKSksIGRhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgZi5yZWFkLCAxKQorICAgICAgICAjIEluY29tcGxldGUgMTAtYnl0ZSBoZWFkZXIuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIsIDEwKToKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWlvLkJ5dGVzSU8odHJ1bmNhdGVkWzppXSkpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCwgMSkKKwogICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9leHRyYShzZWxmKToKICAgICAgICAgIyBHemlwIGRhdGEgd2l0aCBhbiBleHRyYSBmaWVsZAogICAgICAgICBnemRhdGEgPSAoYidceDFmXHg4Ylx4MDhceDA0XHhiMlx4MTdjUVx4MDJceGZmJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IGYzMzg1ZjYuLjQwY2M4M2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTM2LDcgKzM2LDEwIEBACiBjbGFzcyBIYXNoTGliVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHN1cHBvcnRlZF9oYXNoX25hbWVzID0gKCAnbWQ1JywgJ01ENScsICdzaGExJywgJ1NIQTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjI0JywgJ1NIQTIyNCcsICdzaGEyNTYnLCAnU0hBMjU2JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTM4NCcsICdTSEEzODQnLCAnc2hhNTEyJywgJ1NIQTUxMicgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfNTEyJywgJ1NIQTNfMjI0JywgJ1NIQTNfMjU2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NIQTNfMzg0JywgJ1NIQTNfNTEyJyApCiAKICAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCiAgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKQEAgLTcyLDggKzc1LDggQEAKICAgICAgICAgaWYgX2hhc2hsaWI6CiAgICAgICAgICAgICAjIFRoZXNlIHR3byBhbGdvcml0aG1zIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCB3aGVuIHRoaXMgbW9kdWxlCiAgICAgICAgICAgICAjIGlzIGNvbXBpbGVkLiAgSWYgbm90LCBzb21ldGhpbmcgd2FzIGNvbXBpbGVkIHdyb25nLgotICAgICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoX2hhc2hsaWIsICdvcGVuc3NsX21kNScpCi0gICAgICAgICAgICBhc3NlcnQgaGFzYXR0cihfaGFzaGxpYiwgJ29wZW5zc2xfc2hhMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihfaGFzaGxpYiwgJ29wZW5zc2xfbWQ1JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihfaGFzaGxpYiwgJ29wZW5zc2xfc2hhMScpKQogICAgICAgICAgICAgZm9yIGFsZ29yaXRobSwgY29uc3RydWN0b3JzIGluIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QuaXRlbXMoKToKICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGdldGF0dHIoX2hhc2hsaWIsICdvcGVuc3NsXycrYWxnb3JpdGhtLCBOb25lKQogICAgICAgICAgICAgICAgIGlmIGNvbnN0cnVjdG9yOgpAQCAtOTMsNiArOTYsMTIgQEAKICAgICAgICAgaWYgX3NoYTUxMjoKICAgICAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbJ3NoYTM4NCddLmFkZChfc2hhNTEyLnNoYTM4NCkKICAgICAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbJ3NoYTUxMiddLmFkZChfc2hhNTEyLnNoYTUxMikKKyAgICAgICAgX3NoYTMgPSBzZWxmLl9jb25kaXRpb25hbF9pbXBvcnRfbW9kdWxlKCdfc2hhMycpCisgICAgICAgIGlmIF9zaGEzOgorICAgICAgICAgICAgc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFsnc2hhM18yMjQnXS5hZGQoX3NoYTMuc2hhM18yMjQpCisgICAgICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0WydzaGEzXzI1NiddLmFkZChfc2hhMy5zaGEzXzI1NikKKyAgICAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbJ3NoYTNfMzg0J10uYWRkKF9zaGEzLnNoYTNfMzg0KQorICAgICAgICAgICAgc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFsnc2hhM181MTInXS5hZGQoX3NoYTMuc2hhM181MTIpCiAKICAgICAgICAgc3VwZXIoSGFzaExpYlRlc3RDYXNlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCiAKQEAgLTE0Miw5ICsxNTEsMTYgQEAKICAgICBkZWYgdGVzdF9oZXhkaWdlc3Qoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCi0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcyksIG5hbWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQogCisgICAgZGVmIHRlc3RfbmFtZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CisgICAgICAgICAgICBoID0gY29ucygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5uYW1lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCBoYXNobGliLm5ldyhoLm5hbWUpLm5hbWUpCisKICAgICBkZWYgdGVzdF9sYXJnZV91cGRhdGUoc2VsZik6CiAgICAgICAgIGFhcyA9IGInYScgKiAxMjgKICAgICAgICAgYmVlcyA9IGInYicgKiAxMjcKQEAgLTIwNSw2ICsyMjEsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEyNTYnKQogICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTM4NCcpCiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhNTEyJykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzIyNCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yNTYnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMzg0JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzUxMicpCiAKICAgICBkZWYgY2hlY2tfYmxvY2tzaXplX25hbWUoc2VsZiwgbmFtZSwgYmxvY2tfc2l6ZT0wLCBkaWdlc3Rfc2l6ZT0wKToKICAgICAgICAgY29uc3RydWN0b3JzID0gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFtuYW1lXQpAQCAtMjE0LDYgKzIzNCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZGlnZXN0X3NpemUsIGRpZ2VzdF9zaXplKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5kaWdlc3QoKSksIGRpZ2VzdF9zaXplKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm5hbWUubG93ZXIoKSwgbmFtZS5sb3dlcigpKQorICAgICAgICAgICAgIyBzcGxpdCBmb3Igc2hhM181MTIgLyBfc2hhMy5zaGEzIG9iamVjdAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLnNwbGl0KCJfIilbMF0sIHJlcHIobSkubG93ZXIoKSkKIAogICAgIGRlZiB0ZXN0X2Jsb2Nrc2l6ZV9uYW1lKHNlbGYpOgpAQCAtMjIzLDYgKzI0NCwxMCBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEyNTYnLCA2NCwgMzIpCiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTM4NCcsIDEyOCwgNDgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTUxMicsIDEyOCwgNjQpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjI0JywgTm90SW1wbGVtZW50ZWQsIDI4KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzI1NicsIE5vdEltcGxlbWVudGVkLCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18zODQnLCBOb3RJbXBsZW1lbnRlZCwgNDgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfNTEyJywgTm90SW1wbGVtZW50ZWQsIDY0KQogCiAgICAgZGVmIHRlc3RfY2FzZV9tZDVfMChzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygnbWQ1JywgYicnLCAnZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UnKQpAQCAtMzU4LDYgKzM4MywxMDggQEAKICAgICAgICAgICAiZTcxODQ4M2QwY2U3Njk2NDRlMmU0MmM3YmMxNWI0NjM4ZTFmOThiMTNiMjA0NDI4NTYzMmE4MDNhZmE5NzNlYiIrCiAgICAgICAgICAgImRlMGZmMjQ0ODc3ZWE2MGE0Y2IwNDMyY2U1NzdjMzFiZWIwMDljNWMyYzQ5YWEyZTRlYWRiMjE3YWQ4Y2MwOWIiKQogCisgICAgIyBTSEEtMyBmYW1pbHkKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjI0XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgYiIiLAorICAgICAgICAgICJGNzE4Mzc1MDJCQThFMTA4MzdCREQ4RDM2NUFEQjg1NTkxODk1NjAyRkM1NTJCNDhCNzM5MEFCRCIpCisKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjI0XzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgYnl0ZXMuZnJvbWhleCgiQ0MiKSwKKyAgICAgICAgICAiQTlDQUI1OUVCNDBBMTBCMjQ2MjkwRjJENjA4NkUzMkUzNjg5RkFGMUQyNkI0NzBDODk5RjI4MDIiKQorCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF8yKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzIyNCcsIGJ5dGVzLmZyb21oZXgoIjQxRkIiKSwKKyAgICAgICAgICAiNjE1QkEzNjdBRkRDMzVBQUMzOTdCQzdFQjVENThEMTA2QTczNEIyNDk4NkQ1RDk3OEZFRkQ2MkMiKQorCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF8zKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzIyNCcsIGJ5dGVzLmZyb21oZXgoCisgICAgICAgICAgICAiNDMzQzUzMDMxMzE2MjRDMDAyMUQ4NjhBMzA4MjU0NzVFOEQwQkQzMDUyQTAyMjE4MDM5OEY0Q0E0NDIzQjkiKworICAgICAgICAgICAgIjgyMTRCNkJFQUFDMjFDODgwN0EyQzMzRjhDOTNCRDQyQjA5MkNDMUIwNkNFREYzMjI0RDVFRDFFQzI5Nzg0IisKKyAgICAgICAgICAgICI0NDRGMjJFMDhBNTVBQTU4NTQyQjUyNEIwMkNEM0Q1RDVGNjkwN0FGRTcxQzVENzQ2MjIyNEEzRjlEOUU1MyIrCisgICAgICAgICAgICAiRTdFMDg0NkRDQkI0Q0UiKSwKKyAgICAgICAgICAiNjJCMTBGMUI2MjM2RUJDMkRBNzI5NTc3NDJBOEQ0RTQ4RTIxM0I1Rjg5MzQ2MDRCRkQ0RDJDM0EiKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyA1LCBtZW11c2U9MSkKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjI0X2h1Z2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIGlmIHNpemUgPT0gXzRHICsgNToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzIyNCcsIGInQScqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICc1OGVmNjAwNTdjOWRkZGI2YTg3NDc3ZTlhY2U1YTI2ZjBkOWRiMDE4ODFjZjliMTBhOWY4YzIyNCcpCisgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzICMgMzItYml0IGFyY2gKKworCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIGIiIiwKKyAgICAgICAgICAiQzVEMjQ2MDE4NkY3MjMzQzkyN0U3REIyRENDNzAzQzBFNTAwQjY1M0NBODIyNzNCN0JGQUQ4MDQ1RDg1QTQ3MCIpCisKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjU2XzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjU2JywgYnl0ZXMuZnJvbWhleCgiQ0MiKSwKKyAgICAgICAgICAiRUVBRDZEQkZDNzM0MEE1NkNBRURDMDQ0Njk2QTE2ODg3MDU0OUE2QTdGNkY1Njk2MUU4NEE1NEJEOTk3MEI4QSIpCisKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjU2XzIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjU2JywgYnl0ZXMuZnJvbWhleCgiNDFGQiIpLAorICAgICAgICAgICJBOEVBQ0VEQTRENDdCMzI4MUE3OTVBRDlFMUVBMjEyMkI0MDdCQUY5QUFCQ0I5RTE4QjU3MTdCNzg3MzUzN0QyIikKKworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfMyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yNTYnLCBieXRlcy5mcm9taGV4KAorICAgICAgICAgICAgIjQzM0M1MzAzMTMxNjI0QzAwMjFEODY4QTMwODI1NDc1RThEMEJEMzA1MkEwMjIxODAzOThGNENBNDQyM0I5IisKKyAgICAgICAgICAgICI4MjE0QjZCRUFBQzIxQzg4MDdBMkMzM0Y4QzkzQkQ0MkIwOTJDQzFCMDZDRURGMzIyNEQ1RUQxRUMyOTc4NCIrCisgICAgICAgICAgICAiNDQ0RjIyRTA4QTU1QUE1ODU0MkI1MjRCMDJDRDNENUQ1RjY5MDdBRkU3MUM1RDc0NjIyMjRBM0Y5RDlFNTMiKworICAgICAgICAgICAgIkU3RTA4NDZEQ0JCNENFIiksCisgICAgICAgICAgIkNFODdBNTE3M0JGRkQ5MjM5OTIyMTY1OEY4MDFENDVDMjk0RDkwMDZFRTlGM0Y5RDQxOUM4RDQyNzc0OERDNDEiKQorCisKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMzg0XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMzg0JywgYiIiLAorICAgICAgICAgICIyQzIzMTQ2QTYzQTI5QUNGOTlFNzNCODhGOEMyNEVBQTdEQzYwQUE3NzE3ODBDQ0MwMDZBRkJGQThGRTI0NzlCIisKKyAgICAgICAgICAiMkREMkIyMTM2MjMzNzQ0MUFDMTJCNTE1OTExOTU3RkYiKQorCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzM4NF8xKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIGJ5dGVzLmZyb21oZXgoIkNDIiksCisgICAgICAgICAgIjFCODRFNjJBNDZFNUEyMDE4NjE3NTRBRjVEQzk1QzRBMUE2OUNBRjRBNzk2QUU0MDU2ODAxNjFFMjk1NzI2NDEiKworICAgICAgICAgICJGNUZBMUU4NjQxRDc5NTgzMzZFRTdCMTFDNThGNzNFOSIpCisKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMzg0XzIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMzg0JywgYnl0ZXMuZnJvbWhleCgiNDFGQiIpLAorICAgICAgICAgICI0OTVDQ0UyNzE0Q0Q3MkM4QzUzQzMzNjNEMjJDNThCNTU5NjBGRTI2QkUwQkYzQkJDN0EzMzE2REQ1NjNBRDFEIisKKyAgICAgICAgICAiQjg0MTBFNzVFRUZFQTY1NUUzOUQ0NjcwRUMwQjE3OTIiKQorCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzM4NF8zKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIGJ5dGVzLmZyb21oZXgoCisgICAgICAgICAgICAiNDMzQzUzMDMxMzE2MjRDMDAyMUQ4NjhBMzA4MjU0NzVFOEQwQkQzMDUyQTAyMjE4MDM5OEY0Q0E0NDIzQjkiKworICAgICAgICAgICAgIjgyMTRCNkJFQUFDMjFDODgwN0EyQzMzRjhDOTNCRDQyQjA5MkNDMUIwNkNFREYzMjI0RDVFRDFFQzI5Nzg0IisKKyAgICAgICAgICAgICI0NDRGMjJFMDhBNTVBQTU4NTQyQjUyNEIwMkNEM0Q1RDVGNjkwN0FGRTcxQzVENzQ2MjIyNEEzRjlEOUU1MyIrCisgICAgICAgICAgICAiRTdFMDg0NkRDQkI0Q0UiKSwKKyAgICAgICAgICAiMTM1MTE0NTA4REQ2M0UyNzlFNzA5QzI2Rjc4MTdDMDQ4Mjc2NkNERTQ5MTMyRTNFREYyRUVERDg5OTZGNEUzNSIrCisgICAgICAgICAgIjk2RDE4NDEwMEIzODQ4NjgyNDlGMUQ4QjhGREFBMkM5IikKKworCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzUxMicsIGIiIiwKKyAgICAgICAgICAiMEVBQjQyREU0QzNDRUI5MjM1RkM5MUFDRkZFNzQ2QjI5QzI5QThDMzY2QjdDNjBFNEU2N0M0NjZGMzZBNDMwNCIrCisgICAgICAgICAgIkMwMEZBOUNBRjlEODc5NzZCQTQ2OUJDQkUwNjcxM0I0MzVGMDkxRUYyNzY5RkIxNjBDREFCMzNEMzY3MDY4MEUiKQorCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl8xKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzUxMicsIGJ5dGVzLmZyb21oZXgoIkNDIiksCisgICAgICAgICAgIjg2MzBDMTNDQkQwNjZFQTc0QkJFN0ZFNDY4RkVDMURFRTEwRURDMTI1NEZCNEMxQjdDNUZENjlCNjQ2RTQ0MTYiKworICAgICAgICAgICIwQjhDRTAxRDA1QTA5MDhDQTc5MERGQjA4MEY0QjUxM0JDM0I2MjI1RUNFN0E4MTAzNzE0NDFBNUFDNjY2RUI5IikKKworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBieXRlcy5mcm9taGV4KCI0MUZCIiksCisgICAgICAgICAgIjU1MURBNjIzNkY4Qjk2RkNFOUY5N0YxMTkwRTkwMTMyNEYwQjQ1RTA2REJCQjVDREI4MzU1RDZFRDFEQzM0QjMiKworICAgICAgICAgICJGMEVBRTdEQ0I2ODYyMkZGMjMyRkEzQ0VDRTBENDYxNkNERUIzOTMxRjkzODAzNjYyQTI4REYxQ0Q1MzVCNzMxIikKKworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBieXRlcy5mcm9taGV4KAorICAgICAgICAgICAgIjQzM0M1MzAzMTMxNjI0QzAwMjFEODY4QTMwODI1NDc1RThEMEJEMzA1MkEwMjIxODAzOThGNENBNDQyM0I5IisKKyAgICAgICAgICAgICI4MjE0QjZCRUFBQzIxQzg4MDdBMkMzM0Y4QzkzQkQ0MkIwOTJDQzFCMDZDRURGMzIyNEQ1RUQxRUMyOTc4NCIrCisgICAgICAgICAgICAiNDQ0RjIyRTA4QTU1QUE1ODU0MkI1MjRCMDJDRDNENUQ1RjY5MDdBRkU3MUM1RDc0NjIyMjRBM0Y5RDlFNTMiKworICAgICAgICAgICAgIkU3RTA4NDZEQ0JCNENFIiksCisgICAgICAgICAgIjUyN0QyOEUzNDFFNkIxNEY0Njg0QURCNEI4MjRDNDk2QzY0ODJFNTExNDk1NjVEM0QxNzIyNjgyODg4NDMwNkIiKworICAgICAgICAgICI1MUQ2MTQ4QTcyNjIyQzJCNzVGNUQzNTEwQjc5OUQ4QkRDMDNFQUVERTQ1MzY3NkE2RUM4RkUwM0ExQUQwRUFCIikKKworCiAgICAgZGVmIHRlc3RfZ2lsKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoaW5ncyB3b3JrIGZpbmUgd2l0aCBhbiBpbnB1dCBsYXJnZXIgdGhhbiB0aGUgc2l6ZSByZXF1aXJlZAogICAgICAgICAjIGZvciBtdWx0aXRocmVhZGVkIG9wZXJhdGlvbiAod2hpY2ggaXMgaGFyZHdpcmVkIHRvIDIwNDgpLgpAQCAtNDA2LDggKzUzMyw4IEBACiAgICAgICAgIGV2ZW50cyA9IFtdCiAgICAgICAgIGZvciB0aHJlYWRudW0gaW4gcmFuZ2UobnVtX3RocmVhZHMpOgogICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IGxlbihkYXRhKSAvLyAoMTAqKnRocmVhZG51bSkKLSAgICAgICAgICAgIGFzc2VydCBjaHVua19zaXplID4gMAotICAgICAgICAgICAgYXNzZXJ0IGNodW5rX3NpemUgJSBsZW4oc21hbGxlc3RfZGF0YSkgPT0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGNodW5rX3NpemUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNodW5rX3NpemUgJSBsZW4oc21hbGxlc3RfZGF0YSksIDApCiAgICAgICAgICAgICBldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgICAgICBldmVudHMuYXBwZW5kKGV2ZW50KQogICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9aGFzaF9pbl9jaHVua3MsCkBAIC00MTgsOCArNTQ1LDYgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2hhc2gsIGhhc2hlci5oZXhkaWdlc3QoKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhhc2hMaWJUZXN0Q2FzZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5IGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CmluZGV4IDRjYTdjZWMuLmVmZDYzYWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKQEAgLTI1Myw2ICsyNTMsMjAgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5mYWlsKCJDb25zdHJ1Y3RvciBjYWxsIHdpdGggdGV4dCBhcmd1bWVudCByYWlzZWQgZXhjZXB0aW9uLiIpCiAKKyAgICBkZWYgdGVzdF93aXRoX2J5dGVhcnJheShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaCA9IGhtYWMuSE1BQyhieXRlYXJyYXkoYiJrZXkiKSwgYnl0ZWFycmF5KGIiaGFzaCB0aGlzISIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmhleGRpZ2VzdCgpLCAnMzQzMjViNjM5ZGE0Y2ZkOTU3MzViMzgxZTI4Y2I4NjQnKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkNvbnN0cnVjdG9yIGNhbGwgd2l0aCBieXRlYXJyYXkgYXJndW1lbnRzIHJhaXNlZCBleGNlcHRpb24uIikKKworICAgIGRlZiB0ZXN0X3dpdGhfbWVtb3J5dmlld19tc2coc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGggPSBobWFjLkhNQUMoYiJrZXkiLCBtZW1vcnl2aWV3KGIiaGFzaCB0aGlzISIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmhleGRpZ2VzdCgpLCAnMzQzMjViNjM5ZGE0Y2ZkOTU3MzViMzgxZTI4Y2I4NjQnKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkNvbnN0cnVjdG9yIGNhbGwgd2l0aCBtZW1vcnl2aWV3IG1zZyByYWlzZWQgZXhjZXB0aW9uLiIpCisKICAgICBkZWYgdGVzdF93aXRobW9kdWxlKHNlbGYpOgogICAgICAgICAjIENvbnN0cnVjdG9yIGNhbGwgd2l0aCB0ZXh0IGFuZCBkaWdlc3QgbW9kdWxlLgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKaW5kZXggODYzZTRiYy4uYjM2ODhhZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQpAQCAtMjcsOCArMjcsMTAgQEAKICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAogICAgICAgICBzZWxmLmZpbGVjbGFzcyA9IGZpbGVjbGFzcwogICAgICAgICBzZWxmLmRhdGEgPSBiJycKKyAgICAgICAgc2VsZi5zZW5kYWxsX2NhbGxzID0gMAogCiAgICAgZGVmIHNlbmRhbGwoc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYuc2VuZGFsbF9jYWxscyArPSAxCiAgICAgICAgIHNlbGYuZGF0YSArPSBkYXRhCiAKICAgICBkZWYgbWFrZWZpbGUoc2VsZiwgbW9kZSwgYnVmc2l6ZT1Ob25lKToKQEAgLTQ1LDcgKzQ3LDcgQEAKIAogICAgIGRlZiBzZW5kYWxsKHNlbGYsIGRhdGEpOgogICAgICAgICBpZiBzZWxmLnBpcGVfdHJpZ2dlciBpbiBkYXRhOgotICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVQSVBFLCAiZ290Y2hhIikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRVBJUEUsICJnb3RjaGEiKQogICAgICAgICBzZWxmLmRhdGEgKz0gZGF0YQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgpAQCAtNTg4LDcgKzU5MCw3IEBACiAgICAgICAgICAgICBiIkNvbnRlbnQtTGVuZ3RoIikKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbigiZXhhbXBsZS5jb20iKQogICAgICAgICBjb25uLnNvY2sgPSBzb2NrCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBjb25uLnJlcXVlc3QoIlBVVCIsICIvdXJsIiwgImJvZHkiKSkKICAgICAgICAgcmVzcCA9IGNvbm4uZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQwMSwgcmVzcC5zdGF0dXMpCkBAIC02MzQsNiArNjM2LDI4IEBACiAgICAgICAgIHJlc3AuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9kZWxheWVkX2Fja19vcHQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IE5hZ2xlL2RlbGF5ZWRfYWNrIG9wdGltaXN0YWlvbiB3b3JrcyBjb3JyZWN0bHkuCisKKyAgICAgICAgIyBGb3Igc21hbGwgcGF5bG9hZHMsIGl0IHNob3VsZCBjb2FsZXNjZSB0aGUgYm9keSB3aXRoCisgICAgICAgICMgaGVhZGVycywgcmVzdWx0aW5nIGluIGEgc2luZ2xlIHNlbmRhbGwoKSBjYWxsCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoTm9uZSkKKyAgICAgICAgY29ubi5zb2NrID0gc29jaworICAgICAgICBib2R5ID0gYid4JyAqIChjb25uLm1zcyAtIDEpCisgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywgYm9keSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLnNlbmRhbGxfY2FsbHMsIDEpCisKKyAgICAgICAgIyBGb3IgbGFyZ2UgcGF5bG9hZHMsIGl0IHNob3VsZCBzZW5kIHRoZSBoZWFkZXJzIGFuZAorICAgICAgICAjIHRoZW4gdGhlIGJvZHksIHJlc3VsdGluZyBpbiBtb3JlIHRoYW4gb25lIHNlbmRhbGwoKQorICAgICAgICAjIGNhbGwKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChOb25lKQorICAgICAgICBjb25uLnNvY2sgPSBzb2NrCisgICAgICAgIGJvZHkgPSBiJ3gnICogY29ubi5tc3MKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy8nLCBib2R5KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc29jay5zZW5kYWxsX2NhbGxzLCAxKQorCiBjbGFzcyBPZmZsaW5lVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVzcG9uc2VzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5yZXNwb25zZXNbY2xpZW50Lk5PVF9GT1VORF0sICJOb3QgRm91bmQiKQpAQCAtNzI0LDcgKzc0OCw3IEBACiAKICAgICBkZWYgbWFrZV9zZXJ2ZXIoc2VsZiwgY2VydGZpbGUpOgogICAgICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCi0gICAgICAgIHJldHVybiBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBjZXJ0ZmlsZSkKKyAgICAgICAgcmV0dXJuIG1ha2VfaHR0cHNfc2VydmVyKHNlbGYsIGNlcnRmaWxlPWNlcnRmaWxlKQogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyBzaW1wbGUgdGVzdCB0byBjaGVjayBpdCdzIHN0b3JpbmcgdGhlIHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDAzYzA3NzYuLmVjNzUxY2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtOTIsNiArOTIsMTMgQEAKICAgICAgICAgZGVmIGRvX0tFWUVSUk9SKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDk5OSkKIAorICAgICAgICBkZWYgZG9fTk9URk9VTkQoc2VsZik6CisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0KQorCisgICAgICAgIGRlZiBkb19FWFBMQUlORVJST1Ioc2VsZik6CisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoOTk5LCAiU2hvcnQgTWVzc2FnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSBsb25nIFxuIGV4cGxhaW5hdGlvbiIpCisKICAgICAgICAgZGVmIGRvX0NVU1RPTShzZWxmKToKICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSg5OTkpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJykKQEAgLTIwMyw2ICsyMTAsMTIgQEAKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDk5OSkKIAorICAgIGRlZiB0ZXN0X3JldHVybl9leHBsYWluX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdFWFBMQUlORVJST1InLCAnLycpCisgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnQocmVzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSkpCisKICAgICBkZWYgdGVzdF9sYXRpbjFfaGVhZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdMQVRJTk9ORUhFQURFUicsICcvJywgaGVhZGVycz17CiAgICAgICAgICAgICAnWC1TcGVjaWFsLUluY29taW5nJzogICAgICAgJ8OEcmdlciBtaXQgVW5pY29kZScKQEAgLTIxMSw2ICsyMjQsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuZ2V0aGVhZGVyKCdYLVNwZWNpYWwnKSwgJ0TDpG5nZXJvdXMgTWluZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnJlYWQoKSwgJ8OEcmdlciBtaXQgVW5pY29kZScuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgZGVmIHRlc3RfZXJyb3JfY29udGVudF9sZW5ndGgoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE2MDg4OiBzdGFuZGFyZCBlcnJvciByZXNwb25zZXMgc2hvdWxkIGhhdmUgYSBjb250ZW50LWxlbmd0aAorICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdOT1RGT1VORCcsICcvJykKKyAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwNCkKKyAgICAgICAgZGF0YSA9IHJlcy5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQocmVzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSksIGxlbihkYXRhKSkKKwogCiBjbGFzcyBTaW1wbGVIVFRQU2VydmVyVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKICAgICBjbGFzcyByZXF1ZXN0X2hhbmRsZXIoTm9Mb2dSZXF1ZXN0SGFuZGxlciwgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCA3ZGIzZjdkLi5jMzdlYTFkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC0xMjUsNyArMTI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgTmFrZWQgc29ja2V0cyByZXR1cm4gZW1wdHkgc3RyaW5ncy4uCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgbGluZSArPSBwYXJ0Ci0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICMgLi5idXQgU1NMU29ja2V0cyByYWlzZSBleGNlcHRpb25zLgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKGInXHJcbicpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCBhZGUzZTI1Li44MzNiZjE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtMSw0ICsxLDcgQEAKLWltcG9ydCBpbXAKK3RyeToKKyAgICBpbXBvcnQgX3RocmVhZAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90aHJlYWQgPSBOb25lCiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCkBAIC03LDcgKzEwLDIwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCit3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIGltcG9ydCBpbXAKIAorCitkZWYgcmVxdWlyZXNfbG9hZF9keW5hbWljKG1ldGgpOgorICAgICIiIkRlY29yYXRvciB0byBza2lwIGEgdGVzdCBpZiBub3QgcnVubmluZyB1bmRlciBDUHl0aG9uIG9yIGxhY2tpbmcKKyAgICBpbXAubG9hZF9keW5hbWljKCkuIiIiCisgICAgbWV0aCA9IHN1cHBvcnQuY3B5dGhvbl9vbmx5KG1ldGgpCisgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihpbXAsICdsb2FkX2R5bmFtaWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXAubG9hZF9keW5hbWljKCkgcmVxdWlyZWQnKShtZXRoKQorCisKK0B1bml0dGVzdC5za2lwSWYoX3RocmVhZCBpcyBOb25lLCAnX3RocmVhZCBtb2R1bGUgaXMgcmVxdWlyZWQnKQogY2xhc3MgTG9ja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlZlcnkgYmFzaWMgdGVzdCBvZiBpbXBvcnQgbG9jayBmdW5jdGlvbnMuIiIiCkBAIC0yMDcsOSArMjIzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19wYXRoLCBuZXdfb3MucGF0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19nZXRlbnYsIG5ld19vcy5nZXRlbnYpCiAKLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGltcCwgJ2xvYWRfZHluYW1pYycpLAotICAgICAgICAgICAgICAgICAgICAgJ2ltcC5sb2FkX2R5bmFtaWMoKSByZXF1aXJlZCcpCisgICAgQHJlcXVpcmVzX2xvYWRfZHluYW1pYwogICAgIGRlZiB0ZXN0X2lzc3VlMTU4MjhfbG9hZF9leHRlbnNpb25zKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE1ODI4IHBpY2tlZCB1cCB0aGF0IHRoZSBhZGFwdGVyIGJldHdlZW4gdGhlIG9sZCBpbXAgQVBJCiAgICAgICAgICMgYW5kIGltcG9ydGxpYiBjb3VsZG4ndCBoYW5kbGUgQyBleHRlbnNpb25zCkBAIC0yMjEsNiArMjM1LDIyIEBACiAgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZShleGFtcGxlLCAqeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sIGV4YW1wbGUpCiAKKyAgICBAcmVxdWlyZXNfbG9hZF9keW5hbWljCisgICAgZGVmIHRlc3RfaXNzdWUxNjQyMV9tdWx0aXBsZV9tb2R1bGVzX2luX29uZV9kbGwoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTY0MjE6IGxvYWRpbmcgc2V2ZXJhbCBtb2R1bGVzIGZyb20gdGhlIHNhbWUgY29tcGlsZWQgZmlsZSBmYWlscworICAgICAgICBtID0gJ190ZXN0aW1wb3J0bXVsdGlwbGUnCisgICAgICAgIGZpbGVvYmosIHBhdGhuYW1lLCBkZXNjcmlwdGlvbiA9IGltcC5maW5kX21vZHVsZShtKQorICAgICAgICBmaWxlb2JqLmNsb3NlKCkKKyAgICAgICAgbW9kMCA9IGltcC5sb2FkX2R5bmFtaWMobSwgcGF0aG5hbWUpCisgICAgICAgIG1vZDEgPSBpbXAubG9hZF9keW5hbWljKCdfdGVzdGltcG9ydG11bHRpcGxlX2ZvbycsIHBhdGhuYW1lKQorICAgICAgICBtb2QyID0gaW1wLmxvYWRfZHluYW1pYygnX3Rlc3RpbXBvcnRtdWx0aXBsZV9iYXInLCBwYXRobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QwLl9fbmFtZV9fLCBtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZDEuX19uYW1lX18sICdfdGVzdGltcG9ydG11bHRpcGxlX2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kMi5fX25hbWVfXywgJ190ZXN0aW1wb3J0bXVsdGlwbGVfYmFyJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXAubG9hZF9keW5hbWljKCdub25leGlzdGVudCcsIHBhdGhuYW1lKQorCisgICAgQHJlcXVpcmVzX2xvYWRfZHluYW1pYwogICAgIGRlZiB0ZXN0X2xvYWRfZHluYW1pY19JbXBvcnRFcnJvcl9wYXRoKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNTU5NTQ5IGFkZGVkIGBuYW1lYCBhbmQgYHBhdGhgIGF0dHJpYnV0ZXMgdG8gSW1wb3J0RXJyb3IKICAgICAgICAgIyBpbiBvcmRlciB0byBwcm92aWRlIGJldHRlciBkZXRhaWwuIElzc3VlICMxMDg1NCBpbXBsZW1lbnRlZCB0aG9zZQpAQCAtMjMyLDE0ICsyNjIsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCBlcnIuZXhjZXB0aW9uLnBhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgZXJyLmV4Y2VwdGlvbi5uYW1lKQogCi0gICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5Ci0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihpbXAsICdsb2FkX2R5bmFtaWMnKSwKLSAgICAgICAgICAgICAgICAgICAgICdpbXAubG9hZF9keW5hbWljKCkgcmVxdWlyZWQnKQorICAgIEByZXF1aXJlc19sb2FkX2R5bmFtaWMKICAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9leHRlbnNpb25fZmlsZV9pc19Ob25lKHNlbGYpOgogICAgICAgICAjIFdoZW4gbG9hZGluZyBhbiBleHRlbnNpb24gbW9kdWxlIGFuZCB0aGUgZmlsZSBpcyBOb25lLCBvcGVuIG9uZQogICAgICAgICAjIG9uIHRoZSBiZWhhbGYgb2YgaW1wLmxvYWRfZHluYW1pYygpLgogICAgICAgICAjIElzc3VlICMxNTkwMgotICAgICAgICBuYW1lID0gJ19oZWFwcScKKyAgICAgICAgbmFtZSA9ICdfdGVzdGltcG9ydG11bHRpcGxlJwogICAgICAgICBmb3VuZCA9IGltcC5maW5kX21vZHVsZShuYW1lKQogICAgICAgICBpZiBmb3VuZFswXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZvdW5kWzBdLmNsb3NlKCkKQEAgLTI0Nyw2ICsyNzUsMTcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpbXAubG9hZF9tb2R1bGUobmFtZSwgTm9uZSwgKmZvdW5kWzE6XSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUsCisgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVuIHdyaXRpbmcgYnl0ZWNvZGUiKQorICAgIGRlZiB0ZXN0X2J1Zzc3MzIoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHN1cHBvcnQuVEVTVEZOICsgJy5weScKKyAgICAgICAgb3MubWtkaXIoc291cmNlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCAnXk5vIG1vZHVsZScsCisgICAgICAgICAgICAgICAgaW1wLmZpbmRfbW9kdWxlLCBzdXBwb3J0LlRFU1RGTiwgWyIuIl0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5ybWRpcihzb3VyY2UpCisKIAogY2xhc3MgUmVsb2FkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MzYsMjAgKzQ3NSw1IEBACiAgICAgICAgICAgICBvcy5ybWRpcihuYW1lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFsKLSAgICAgICAgSW1wb3J0VGVzdHMsCi0gICAgICAgIFBFUDMxNDdUZXN0cywKLSAgICAgICAgUmVsb2FkVGVzdHMsCi0gICAgICAgIE51bGxJbXBvcnRlclRlc3RzLAotICAgICAgICBdCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgX3RocmVhZAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzLmFwcGVuZChMb2NrVGVzdHMpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CmluZGV4IGU3MTAxMjIuLjYxZGY4NmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CkBAIC0xLDggKzEsOCBAQAogIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgogaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi51dGlsCiBmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBfZ2V0X3NvdXJjZWZpbGUKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IGltcAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliLmltcG9ydF8gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3V0aWwKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKQEAgLTcwLDggKzcwLDYgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCiAKLSAgICBzZXRVcCA9IHRlYXJEb3duCi0KICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICAjIEJyaWVmIGRpZ3Jlc3Npb24gdG8gdGVzdCB0aGF0IGltcG9ydCBpcyBjYXNlLXNlbnNpdGl2ZTogIGlmIHdlIGdvdAogICAgICAgICAjIHRoaXMgZmFyLCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgInJhbmRvbSIgZXhpc3RzLgpAQCAtMTI5LDE2ICsxMjcsNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAKLSAgICBAc2tpcF9pZl9kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgZGVmIHRlc3RfYnVnNzczMihzZWxmKToKLSAgICAgICAgc291cmNlID0gVEVTVEZOICsgJy5weScKLSAgICAgICAgb3MubWtkaXIoc291cmNlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCAnXk5vIG1vZHVsZScsCi0gICAgICAgICAgICAgICAgaW1wLmZpbmRfbW9kdWxlLCBURVNURk4sIFsiLiJdKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3Mucm1kaXIoc291cmNlKQotCiAgICAgZGVmIHRlc3RfbW9kdWxlX3dpdGhfbGFyZ2Vfc3RhY2soc2VsZiwgbW9kdWxlPSdsb25nbGlzdCcpOgogICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTU2MTg1OC4KICAgICAgICAgZmlsZW5hbWUgPSBtb2R1bGUgKyAnLnB5JwpAQCAtMjI1LDcgKzIxMyw3IEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oc291cmNlLCAidyIpIGFzIGY6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgiYSA9IDEwXG5iPTIwLy8wXG4iKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgaW1wLnJlbG9hZCwgbW9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIGltcG9ydGxpYi5yZWxvYWQsIG1vZCkKICAgICAgICAgICAgICMgQnV0IHdlIHN0aWxsIGV4cGVjdCB0aGUgbW9kdWxlIHRvIGJlIGluIHN5cy5tb2R1bGVzLgogICAgICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXMuZ2V0KFRFU1RGTikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9kLCBOb25lLCAiZXhwZWN0ZWQgbW9kdWxlIHRvIGJlIGluIHN5cy5tb2R1bGVzIikKQEAgLTI5MSw3ICsyNzksNyBAQAogICAgICAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICAgICAgICAgICAgaW1wb3J0IGltcAorICAgICAgICAgICAgICAgICAgaW1wb3J0IGltcG9ydGxpYgogICAgICAgICAgICAgc3lzLmFyZ3YuaW5zZXJ0KDAsIEMoKSkKICAgICAgICAgICAgICIiIikpCiAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0Zm4pCkBAIC0zMDIsNyArMjkwLDcgQEAKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlID0gVEVTVEZOICsgIi5weSIKLSAgICAgICAgICAgIGNvbXBpbGVkID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSkKKyAgICAgICAgICAgIGNvbXBpbGVkID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKQEAgLTMzMyw2ICszMjEsMTQgQEAKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJJbXBvcnRFcnJvciIsIHN0ZG91dCkKIAorICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21lc3NhZ2VfZm9yX25vbmV4aXN0ZW50X21vZHVsZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChJbXBvcnRFcnJvciwgIl5ObyBtb2R1bGUgbmFtZWQgJ2JvZ3VzJyIpOgorICAgICAgICAgICAgZnJvbSBib2d1cyBpbXBvcnQgZm9vCisKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9tZXNzYWdlX2Zvcl9leGlzdGluZ19tb2R1bGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoSW1wb3J0RXJyb3IsICJeY2Fubm90IGltcG9ydCBuYW1lICdib2d1cyciKToKKyAgICAgICAgICAgIGZyb20gcmUgaW1wb3J0IGJvZ3VzCisKIAogQHNraXBfaWZfZG9udF93cml0ZV9ieXRlY29kZQogY2xhc3MgRmlsZVBlcm1pc3Npb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zNDMsNyArMzM5LDcgQEAKICAgICBkZWYgdGVzdF9jcmVhdGlvbl9tb2RlKHNlbGYpOgogICAgICAgICBtYXNrID0gMG8wMjIKICAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKG1hc2spLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgotICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKICAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKQEAgLTM2MSw3ICszNTcsNyBAQAogICAgICAgICAjIHBlcm1pc3Npb25zIG9mIC5weWMgc2hvdWxkIG1hdGNoIHRob3NlIG9mIC5weSwgcmVnYXJkbGVzcyBvZiBtYXNrCiAgICAgICAgIG1vZGUgPSAwbzYwMAogICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8wMjIpLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgotICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKICAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCiAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgpAQCAtMzc2LDcgKzM3Miw3IEBACiAgICAgZGVmIHRlc3RfY2FjaGVkX3JlYWRvbmx5KHNlbGYpOgogICAgICAgICBtb2RlID0gMG80MDAKICAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKLSAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBjYWNoZWRfcGF0aCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCiAgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCBtb2RlKQogICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNhY2hlZF9wYXRoKToKQEAgLTQxNiw3ICs0MTIsNyBAQAogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgImMiCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgIm8iCi0gICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpLCBieXRlY29kZV9vbmx5KQorICAgICAgICAgICAgb3MucmVuYW1lKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpLCBieXRlY29kZV9vbmx5KQogICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCAncmV3cml0dGVuJykKIApAQCAtNDM4LDcgKzQzNCw3IEBACiAiIiIKICAgICBkaXJfbmFtZSA9IG9zLnBhdGguYWJzcGF0aChURVNURk4pCiAgICAgZmlsZV9uYW1lID0gb3MucGF0aC5qb2luKGRpcl9uYW1lLCBtb2R1bGVfbmFtZSkgKyBvcy5leHRzZXAgKyAicHkiCi0gICAgY29tcGlsZWRfbmFtZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX25hbWUpCisgICAgY29tcGlsZWRfbmFtZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfbmFtZSkKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCkBAIC00OTksNyArNDk1LDcgQEAKICAgICAgICAgICAgIGhlYWRlciA9IGYucmVhZCgxMikKICAgICAgICAgICAgIGNvZGUgPSBtYXJzaGFsLmxvYWQoZikKICAgICAgICAgY29uc3RhbnRzID0gbGlzdChjb2RlLmNvX2NvbnN0cykKLSAgICAgICAgZm9yZWlnbl9jb2RlID0gdGVzdF9tYWluLl9fY29kZV9fCisgICAgICAgIGZvcmVpZ25fY29kZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlLl9fY29kZV9fCiAgICAgICAgIHBvcyA9IGNvbnN0YW50cy5pbmRleCgxKQogICAgICAgICBjb25zdGFudHNbcG9zXSA9IGZvcmVpZ25fY29kZQogICAgICAgICBjb2RlID0gdHlwZShjb2RlKShjb2RlLmNvX2FyZ2NvdW50LCBjb2RlLmNvX2t3b25seWFyZ2NvdW50LApAQCAtNjQxLDcgKzYzNyw3IEBACiBjbGFzcyBQeWNhY2hlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGVzdCB0aGUgdmFyaW91cyBQRVAgMzE0NyByZWxhdGVkIGJlaGF2aW9ycy4KIAotICAgIHRhZyA9IGltcC5nZXRfdGFnKCkKKyAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCiAKICAgICBkZWYgX2NsZWFuKHNlbGYpOgogICAgICAgICBmb3JnZXQoVEVTVEZOKQpAQCAtNjg5LDcgKzY4NSw3IEBACiAgICAgICAgICMgV2l0aCBQRVAgMzE0NyBjYWNoZSBsYXlvdXQsIHJlbW92aW5nIHRoZSBzb3VyY2UgYnV0IGxlYXZpbmcgdGhlIHB5YwogICAgICAgICAjIGZpbGUgZG9lcyBub3Qgc2F0aXNmeSB0aGUgaW1wb3J0LgogICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKLSAgICAgICAgcHljX2ZpbGUgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhweWNfZmlsZSkpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgZm9yZ2V0KFRFU1RGTikKQEAgLTcxNCw3ICs3MTAsNyBAQAogICAgIGRlZiB0ZXN0X19fY2FjaGVkX18oc2VsZik6CiAgICAgICAgICMgTW9kdWxlcyBub3cgYWxzbyBoYXZlIGFuIF9fY2FjaGVkX18gdGhhdCBwb2ludHMgdG8gdGhlIHB5YyBmaWxlLgogICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgIHB5Y19maWxlID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKFRFU1RGTiArICcucHknKQorICAgICAgICBweWNfZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKFRFU1RGTiArICcucHknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19jYWNoZWRfXywgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgcHljX2ZpbGUpKQogCiAgICAgQHNraXBfaWZfZG9udF93cml0ZV9ieXRlY29kZQpAQCAtNzQ5LDEwICs3NDUsMTAgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcuZm9vJykKLSAgICAgICAgaW5pdF9weWMgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoCisgICAgICAgIGluaXRfcHljID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fY2FjaGVkX18sIG9zLnBhdGguam9pbihvcy5jdXJkaXIsIGluaXRfcHljKSkKLSAgICAgICAgZm9vX3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JykpCisgICAgICAgIGZvb19weWMgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1vZHVsZXNbJ3BlcDMxNDcuZm9vJ10uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBmb29fcHljKSkKIApAQCAtNzc2LDEwICs3NzIsMTAgQEAKICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3JykKICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcuZm9vJykKLSAgICAgICAgaW5pdF9weWMgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoCisgICAgICAgIGluaXRfcHljID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fY2FjaGVkX18sIG9zLnBhdGguam9pbihvcy5jdXJkaXIsIGluaXRfcHljKSkKLSAgICAgICAgZm9vX3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JykpCisgICAgICAgIGZvb19weWMgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1vZHVsZXNbJ3BlcDMxNDcuZm9vJ10uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBmb29fcHljKSkKIApAQCAtODYzLDcgKzg1OSw2IEBACiAgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KICAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuRmlsZUZpbmRlciwgbW9kLkZpbGVGaW5kZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoaW1wLm5ld19tb2R1bGUsIG1vZC5uZXdfbW9kdWxlKQogCiAKIEBjcHl0aG9uX29ubHkKQEAgLTEwNjAsMTYgKzEwNTUsNiBAQAogICAgICAgICAgICAgaW1wb3J0bGliLlNvdXJjZUxvYWRlci5sb2FkX21vZHVsZSA9IG9sZF9sb2FkX21vZHVsZQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBydW5fdW5pdHRlc3QoSW1wb3J0VGVzdHMsIFB5Y2FjaGVUZXN0cywgRmlsZVBlcm1pc3Npb25UZXN0cywKLSAgICAgICAgICAgICAgICAgUHljUmV3cml0aW5nVGVzdHMsIFBhdGhzVGVzdHMsIFJlbGF0aXZlSW1wb3J0VGVzdHMsCi0gICAgICAgICAgICAgICAgIE92ZXJyaWRpbmdJbXBvcnRCdWlsdGluVGVzdHMsCi0gICAgICAgICAgICAgICAgIEltcG9ydGxpYkJvb3RzdHJhcFRlc3RzLCBHZXRTb3VyY2VmaWxlVGVzdHMsCi0gICAgICAgICAgICAgICAgIFRlc3RTeW1ib2xpY2FsbHlMaW5rZWRQYWNrYWdlLAotICAgICAgICAgICAgICAgICBJbXBvcnRUcmFjZWJhY2tUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICMgVGVzdCBuZWVkcyB0byBiZSBhIHBhY2thZ2UsIHNvIHdlIGNhbiBkbyByZWxhdGl2ZSBpbXBvcnRzLgotICAgIGZyb20gdGVzdC50ZXN0X2ltcG9ydCBpbXBvcnQgdGVzdF9tYWluCi0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTIyZDFhLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotaW1wb3J0IHN5cwotaW1wb3J0IGltcAotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi0KLXRlc3Rfc3JjID0gIiIiXAotZGVmIGdldF9uYW1lKCk6Ci0gICAgcmV0dXJuIF9fbmFtZV9fCi1kZWYgZ2V0X2ZpbGUoKToKLSAgICByZXR1cm4gX19maWxlX18KLSIiIgotCi1hYnNpbXAgPSAiaW1wb3J0IHN1YlxuIgotcmVsaW1wID0gImZyb20gLiBpbXBvcnQgc3ViXG4iCi1kZWVwcmVsaW1wID0gImZyb20gLi4uLiBpbXBvcnQgc3ViXG4iCi1mdXRpbXAgPSAiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnRcbiIKLQotcmVsb2FkX3NyYyA9IHRlc3Rfc3JjKyIiIlwKLXJlbG9hZGVkID0gVHJ1ZQotIiIiCi0KLXRlc3RfY28gPSBjb21waWxlKHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpCi1yZWxvYWRfY28gPSBjb21waWxlKHJlbG9hZF9zcmMsICI8Pz8/PiIsICJleGVjIikKLQotdGVzdDJfb2xkYWJzX2NvID0gY29tcGlsZShhYnNpbXAgKyB0ZXN0X3NyYywgIjw/Pz8+IiwgImV4ZWMiKQotdGVzdDJfbmV3YWJzX2NvID0gY29tcGlsZShmdXRpbXAgKyBhYnNpbXAgKyB0ZXN0X3NyYywgIjw/Pz8+IiwgImV4ZWMiKQotdGVzdDJfbmV3cmVsX2NvID0gY29tcGlsZShyZWxpbXAgKyB0ZXN0X3NyYywgIjw/Pz8+IiwgImV4ZWMiKQotdGVzdDJfZGVlcHJlbF9jbyA9IGNvbXBpbGUoZGVlcHJlbGltcCArIHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpCi10ZXN0Ml9mdXRyZWxfY28gPSBjb21waWxlKGZ1dGltcCArIHJlbGltcCArIHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpCi0KLXRlc3RfcGF0aCA9ICIhISFfdGVzdF8hISEiCi0KLQotY2xhc3MgVGVzdEltcG9ydGVyOgotCi0gICAgbW9kdWxlcyA9IHsKLSAgICAgICAgImhvb2t0ZXN0bW9kdWxlIjogKEZhbHNlLCB0ZXN0X2NvKSwKLSAgICAgICAgImhvb2t0ZXN0cGFja2FnZSI6IChUcnVlLCB0ZXN0X2NvKSwKLSAgICAgICAgImhvb2t0ZXN0cGFja2FnZS5zdWIiOiAoVHJ1ZSwgdGVzdF9jbyksCi0gICAgICAgICJob29rdGVzdHBhY2thZ2Uuc3ViLnN1YmJlciI6IChUcnVlLCB0ZXN0X2NvKSwKLSAgICAgICAgImhvb2t0ZXN0cGFja2FnZS5vbGRhYnMiOiAoRmFsc2UsIHRlc3QyX29sZGFic19jbyksCi0gICAgICAgICJob29rdGVzdHBhY2thZ2UubmV3YWJzIjogKEZhbHNlLCB0ZXN0Ml9uZXdhYnNfY28pLAotICAgICAgICAiaG9va3Rlc3RwYWNrYWdlLm5ld3JlbCI6IChGYWxzZSwgdGVzdDJfbmV3cmVsX2NvKSwKLSAgICAgICAgImhvb2t0ZXN0cGFja2FnZS5zdWIuc3ViYmVyLnN1YmVzdCI6IChUcnVlLCB0ZXN0Ml9kZWVwcmVsX2NvKSwKLSAgICAgICAgImhvb2t0ZXN0cGFja2FnZS5mdXRyZWwiOiAoRmFsc2UsIHRlc3QyX2Z1dHJlbF9jbyksCi0gICAgICAgICJzdWIiOiAoRmFsc2UsIHRlc3RfY28pLAotICAgICAgICAicmVsb2FkbW9kdWxlIjogKEZhbHNlLCB0ZXN0X2NvKSwKLSAgICB9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD10ZXN0X3BhdGgpOgotICAgICAgICBpZiBwYXRoICE9IHRlc3RfcGF0aDoKLSAgICAgICAgICAgICMgaWYgb3VyIGNsYXNzIGlzIG9uIHN5cy5wYXRoX2hvb2tzLCB3ZSBtdXN0IHJhaXNlCi0gICAgICAgICAgICAjIEltcG9ydEVycm9yIGZvciBhbnkgcGF0aCBpdGVtIHRoYXQgd2UgY2FuJ3QgaGFuZGxlLgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgZGVmIF9nZXRfX3BhdGhfXyhzZWxmKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICBpZiBmdWxsbmFtZSBpbiBzZWxmLm1vZHVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGlzcGtnLCBjb2RlID0gc2VsZi5tb2R1bGVzW2Z1bGxuYW1lXQotICAgICAgICBtb2QgPSBzeXMubW9kdWxlcy5zZXRkZWZhdWx0KGZ1bGxuYW1lLGltcC5uZXdfbW9kdWxlKGZ1bGxuYW1lKSkKLSAgICAgICAgbW9kLl9fZmlsZV9fID0gIjwlcz4iICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KLSAgICAgICAgbW9kLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgbW9kLl9fcGF0aF9fID0gc2VsZi5fZ2V0X19wYXRoX18oKQotICAgICAgICBleGVjKGNvZGUsIG1vZC5fX2RpY3RfXykKLSAgICAgICAgcmV0dXJuIG1vZAotCi0KLWNsYXNzIE1ldGFJbXBvcnRlcihUZXN0SW1wb3J0ZXIpOgotICAgIGRlZiBfZ2V0X19wYXRoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBbXQotCi1jbGFzcyBQYXRoSW1wb3J0ZXIoVGVzdEltcG9ydGVyKToKLSAgICBkZWYgX2dldF9fcGF0aF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYucGF0aF0KLQotCi1jbGFzcyBJbXBvcnRCbG9ja2VyOgotICAgICIiIlBsYWNlIGFuIEltcG9ydEJsb2NrZXIgaW5zdGFuY2Ugb24gc3lzLm1ldGFfcGF0aCBhbmQgeW91Ci0gICAgY2FuIGJlIHN1cmUgdGhlIG1vZHVsZXMgeW91IHNwZWNpZmllZCBjYW4ndCBiZSBpbXBvcnRlZCwgZXZlbgotICAgIGlmIGl0J3MgYSBidWlsdGluLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqbmFtZXN0b2Jsb2NrKToKLSAgICAgICAgc2VsZi5uYW1lc3RvYmxvY2sgPSBkaWN0LmZyb21rZXlzKG5hbWVzdG9ibG9jaykKLSAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgIGlmIGZ1bGxuYW1lIGluIHNlbGYubmFtZXN0b2Jsb2NrOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiSSBkYXJlIHlvdSIpCi0KLQotY2xhc3MgSW1wV3JhcHBlcjoKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPU5vbmUpOgotICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lIGFuZCBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKLQotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgc3VibmFtZSA9IGZ1bGxuYW1lLnNwbGl0KCIuIilbLTFdCi0gICAgICAgIGlmIHN1Ym5hbWUgIT0gZnVsbG5hbWUgYW5kIHNlbGYucGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgaWYgc2VsZi5wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXRoID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGF0aCA9IFtzZWxmLnBhdGhdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUsIGZpbGVuYW1lLCBzdHVmZiA9IGltcC5maW5kX21vZHVsZShzdWJuYW1lLCBwYXRoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gSW1wTG9hZGVyKGZpbGUsIGZpbGVuYW1lLCBzdHVmZikKLQotCi1jbGFzcyBJbXBMb2FkZXI6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgZmlsZW5hbWUsIHN0dWZmKToKLSAgICAgICAgc2VsZi5maWxlID0gZmlsZQotICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAgc2VsZi5zdHVmZiA9IHN0dWZmCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBtb2QgPSBpbXAubG9hZF9tb2R1bGUoZnVsbG5hbWUsIHNlbGYuZmlsZSwgc2VsZi5maWxlbmFtZSwgc2VsZi5zdHVmZikKLSAgICAgICAgaWYgc2VsZi5maWxlOgotICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKLSAgICAgICAgbW9kLl9fbG9hZGVyX18gPSBzZWxmICAjIGZvciBpbnRyb3NwZWN0aW9uCi0gICAgICAgIHJldHVybiBtb2QKLQotCi1jbGFzcyBJbXBvcnRIb29rc0Jhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYucGF0aCA9IHN5cy5wYXRoWzpdCi0gICAgICAgIHNlbGYubWV0YV9wYXRoID0gc3lzLm1ldGFfcGF0aFs6XQotICAgICAgICBzZWxmLnBhdGhfaG9va3MgPSBzeXMucGF0aF9ob29rc1s6XQotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0gICAgICAgIHNlbGYubW9kdWxlc19iZWZvcmUgPSBzdXBwb3J0Lm1vZHVsZXNfc2V0dXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzeXMucGF0aFs6XSA9IHNlbGYucGF0aAotICAgICAgICBzeXMubWV0YV9wYXRoWzpdID0gc2VsZi5tZXRhX3BhdGgKLSAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzZWxmLnBhdGhfaG9va3MKLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQotICAgICAgICBzdXBwb3J0Lm1vZHVsZXNfY2xlYW51cCgqc2VsZi5tb2R1bGVzX2JlZm9yZSkKLQotCi1jbGFzcyBJbXBvcnRIb29rc1Rlc3RDYXNlKEltcG9ydEhvb2tzQmFzZVRlc3RDYXNlKToKLQotICAgIGRlZiBkb1Rlc3RJbXBvcnRzKHNlbGYsIGltcG9ydGVyPU5vbmUpOgotICAgICAgICBpbXBvcnQgaG9va3Rlc3Rtb2R1bGUKLSAgICAgICAgaW1wb3J0IGhvb2t0ZXN0cGFja2FnZQotICAgICAgICBpbXBvcnQgaG9va3Rlc3RwYWNrYWdlLnN1YgotICAgICAgICBpbXBvcnQgaG9va3Rlc3RwYWNrYWdlLnN1Yi5zdWJiZXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdG1vZHVsZS5nZXRfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJob29rdGVzdG1vZHVsZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLmdldF9uYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImhvb2t0ZXN0cGFja2FnZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLnN1Yi5nZXRfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJob29rdGVzdHBhY2thZ2Uuc3ViIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdHBhY2thZ2Uuc3ViLnN1YmJlci5nZXRfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJob29rdGVzdHBhY2thZ2Uuc3ViLnN1YmJlciIpCi0gICAgICAgIGlmIGltcG9ydGVyOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdG1vZHVsZS5fX2xvYWRlcl9fLCBpbXBvcnRlcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLl9fbG9hZGVyX18sIGltcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdHBhY2thZ2Uuc3ViLl9fbG9hZGVyX18sIGltcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdHBhY2thZ2Uuc3ViLnN1YmJlci5fX2xvYWRlcl9fLCBpbXBvcnRlcikKLQotICAgICAgICBUZXN0SW1wb3J0ZXIubW9kdWxlc1sncmVsb2FkbW9kdWxlJ10gPSAoRmFsc2UsIHRlc3RfY28pCi0gICAgICAgIGltcG9ydCByZWxvYWRtb2R1bGUKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHJlbG9hZG1vZHVsZSwncmVsb2FkZWQnKSkKLQotICAgICAgICBpbXBvcnQgaG9va3Rlc3RwYWNrYWdlLm5ld3JlbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhvb2t0ZXN0cGFja2FnZS5uZXdyZWwuZ2V0X25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaG9va3Rlc3RwYWNrYWdlLm5ld3JlbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLm5ld3JlbC5zdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaG9va3Rlc3RwYWNrYWdlLnN1YikKLQotICAgICAgICBpbXBvcnQgaG9va3Rlc3RwYWNrYWdlLnN1Yi5zdWJiZXIuc3ViZXN0IGFzIHN1YmVzdAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YmVzdC5nZXRfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJob29rdGVzdHBhY2thZ2Uuc3ViLnN1YmJlci5zdWJlc3QiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YmVzdC5zdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaG9va3Rlc3RwYWNrYWdlLnN1YikKLQotICAgICAgICBpbXBvcnQgaG9va3Rlc3RwYWNrYWdlLmZ1dHJlbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhvb2t0ZXN0cGFja2FnZS5mdXRyZWwuZ2V0X25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaG9va3Rlc3RwYWNrYWdlLmZ1dHJlbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLmZ1dHJlbC5zdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaG9va3Rlc3RwYWNrYWdlLnN1YikKLQotICAgICAgICBpbXBvcnQgc3ViCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViLmdldF9uYW1lKCksICJzdWIiKQotCi0gICAgICAgIGltcG9ydCBob29rdGVzdHBhY2thZ2Uub2xkYWJzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLm9sZGFicy5nZXRfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJob29rdGVzdHBhY2thZ2Uub2xkYWJzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdHBhY2thZ2Uub2xkYWJzLnN1Yiwgc3ViKQotCi0gICAgICAgIGltcG9ydCBob29rdGVzdHBhY2thZ2UubmV3YWJzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9va3Rlc3RwYWNrYWdlLm5ld2Ficy5nZXRfbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJob29rdGVzdHBhY2thZ2UubmV3YWJzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob29rdGVzdHBhY2thZ2UubmV3YWJzLnN1Yiwgc3ViKQotCi0gICAgZGVmIHRlc3RNZXRhUGF0aChzZWxmKToKLSAgICAgICAgaSA9IE1ldGFJbXBvcnRlcigpCi0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGkpCi0gICAgICAgIHNlbGYuZG9UZXN0SW1wb3J0cyhpKQotCi0gICAgZGVmIHRlc3RQYXRoSG9vayhzZWxmKToKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIFBhdGhJbXBvcnRlcikKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKHRlc3RfcGF0aCkKLSAgICAgICAgc2VsZi5kb1Rlc3RJbXBvcnRzKCkKLQotICAgIGRlZiB0ZXN0QmxvY2tlcihzZWxmKToKLSAgICAgICAgbW5hbWUgPSAiZXhjZXB0aW9ucyIgICMgYW4gYXJiaXRyYXJ5IGhhcm1sZXNzIGJ1aWx0aW4gbW9kdWxlCi0gICAgICAgIHN1cHBvcnQudW5sb2FkKG1uYW1lKQotICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChJbXBvcnRCbG9ja2VyKG1uYW1lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IsIF9faW1wb3J0X18sIG1uYW1lKQotCi0gICAgZGVmIHRlc3RJbXBXcmFwcGVyKHNlbGYpOgotICAgICAgICBpID0gSW1wV3JhcHBlcigpCi0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGkpCi0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBJbXBXcmFwcGVyKQotICAgICAgICBtbmFtZXMgPSAoCi0gICAgICAgICAgICAiY29sb3JzeXMiLCAidXJsbGliLnBhcnNlIiwgImRpc3R1dGlscy5jb3JlIiwgInN5cyIsCi0gICAgICAgICkKLSAgICAgICAgZm9yIG1uYW1lIGluIG1uYW1lczoKLSAgICAgICAgICAgIHBhcmVudCA9IG1uYW1lLnNwbGl0KCIuIilbMF0KLSAgICAgICAgICAgIGZvciBuIGluIGxpc3Qoc3lzLm1vZHVsZXMpOgotICAgICAgICAgICAgICAgIGlmIG4uc3RhcnRzd2l0aChwYXJlbnQpOgotICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbl0KLSAgICAgICAgZm9yIG1uYW1lIGluIG1uYW1lczoKLSAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG1uYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbIl9fZHVtbXlfXyJdKQotICAgICAgICAgICAgIyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGFuZGxlZCB0aGUgaW1wb3J0Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtLCAiX19sb2FkZXJfXyIpKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChJbXBvcnRIb29rc1Rlc3RDYXNlKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCA3NmM1M2U0Li4yYjUzNmUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAorCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCiAKQEAgLTE0LDkgKzE1LDkgQEAKICAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ib290c3RyYXAuRXh0ZW5zaW9uRmlsZUxvYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5FWFRFTlNJT05fU1VGRklYRVMpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUoYmFkX25hbWUpCiAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQppbmRleCAxZDk2OWExLi5jNGI0ZjRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0yLDcgKzIsNiBAQAogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGltcAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkKaW5kZXggYTI2NmRkOS4uOGQwODlmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgaW1wCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCA0YjhlYzE1Li4zZTgwMTM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDkgKzEsMTEgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWltcG9ydCBpbXAKLWltcG9ydCB1bml0dGVzdAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAoraW1wb3J0IHR5cGVzCisKIAogY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKIApAQCAtMjQsNyArMjYsNyBAQAogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX3BoZWxsb19fJykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywKLSAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFsnX19waGVsbG9fXyddLAorICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogW10sCiAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgpAQCAtODUsNyArODcsNyBAQAogICAgICAgICBuYW1lID0gJ19faGVsbG9fXycKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBjb2RlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmdldF9jb2RlKG5hbWUpCi0gICAgICAgICAgICBtb2QgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbW9kID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgZXhlYyhjb2RlLCBtb2QuX19kaWN0X18pCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2QsICdpbml0aWFsaXplZCcpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX2xvYWRlcl9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM1ZGFhMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX2xvYWRlcl9fLnB5CkBAIC0wLDAgKzEsNDQgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gLi4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAorCisKK2NsYXNzIExvYWRlck1vY2s6CisKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBzZWxmLm1vZHVsZQorICAgICAgICByZXR1cm4gc2VsZi5tb2R1bGUKKworCitjbGFzcyBMb2FkZXJBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9fX2xvYWRlcl9fX21pc3Npbmcoc2VsZik6CisgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ2JsYWgnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgbW9kdWxlLl9fbG9hZGVyX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBsb2FkZXIgPSBMb2FkZXJNb2NrKCkKKyAgICAgICAgbG9hZGVyLm1vZHVsZSA9IG1vZHVsZQorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnYmxhaCcpLCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2xvYWRlcl0pOgorICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnYmxhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKKworICAgIGRlZiB0ZXN0X19fbG9hZGVyX19faXNfTm9uZShzZWxmKToKKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZSgnYmxhaCcpCisgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gTm9uZQorICAgICAgICBsb2FkZXIgPSBMb2FkZXJNb2NrKCkKKyAgICAgICAgbG9hZGVyLm1vZHVsZSA9IG1vZHVsZQorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnYmxhaCcpLCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2xvYWRlcl0pOgorICAgICAgICAgICAgcmV0dXJuZWRfbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnYmxhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKaW5kZXggM2Q0Y2Q5NC4uYmY3NDkzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CkBAIC0xLDcgKzEsNyBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRsaWJfdGVzdF91dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCBpbXAKIGltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKIApAQCAtMzcsNyArMzcsNyBAQAogICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X2Zyb21saXN0X2VudHJ5KHNlbGYpOgogICAgICAgICAjIElmIHNvbWV0aGluZyBpbiBmcm9tbGlzdCBkb2Vzbid0IGV4aXN0LCB0aGF0J3Mgb2theS4KICAgICAgICAgIyBpc3N1ZTE1NzE1Ci0gICAgICAgIG1vZCA9IGltcC5uZXdfbW9kdWxlKCdmaW5lJykKKyAgICAgICAgbW9kID0gdHlwZXMuTW9kdWxlVHlwZSgnZmluZScpCiAgICAgICAgIG1vZC5fX3BhdGhfXyA9IFsnWFhYJ10KICAgICAgICAgd2l0aCBpbXBvcnRsaWJfdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W0JhZExvYWRlckZpbmRlcl0pOgogICAgICAgICAgICAgd2l0aCBpbXBvcnRsaWJfdGVzdF91dGlsLnVuY2FjaGUoJ2ZpbmUnKToKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAgICAgIyBJZiBzb21ldGhpbmcgaW4gZnJvbWxpc3QgdHJpZ2dlcnMgYW4gZXhjZXB0aW9uIG5vdCByZWxhdGVkIHRvIG5vdAogICAgICAgICAjIGV4aXN0aW5nLCBsZXQgdGhhdCBleGNlcHRpb24gcHJvcGFnYXRlLgogICAgICAgICAjIGlzc3VlMTUzMTYKLSAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QgPSB0eXBlcy5Nb2R1bGVUeXBlKCdmaW5lJykKICAgICAgICAgbW9kLl9fcGF0aF9fID0gWydYWFgnXQogICAgICAgICB3aXRoIGltcG9ydGxpYl90ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bQmFkTG9hZGVyRmluZGVyXSk6CiAgICAgICAgICAgICB3aXRoIGltcG9ydGxpYl90ZXN0X3V0aWwudW5jYWNoZSgnZmluZScpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGMxNmMzMzcuLmU0NDA1NjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTEsNyArMSw2IEBACiAiIiJUZXN0IHRoYXQgdGhlIHNlbWFudGljcyByZWxhdGluZyB0byB0aGUgJ2Zyb21saXN0JyBhcmd1bWVudCBhcmUgY29ycmVjdC4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IGltcAogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFJldHVyblZhbHVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDkxMmI2Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MDYgKzAsMCBAQAotaW1wb3J0IGltcG9ydGxpYgotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGFiYwotCi1mcm9tIC4uIGltcG9ydCBhYmMgYXMgdGVzdGluZ19hYmMKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAotCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IGlvCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdHlwZXMKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCi0KLQotY2xhc3MgU291cmNlT25seUxvYWRlck1vY2soYWJjLlNvdXJjZUxvYWRlcik6Ci0KLSAgICAjIEdsb2JhbHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBmb3IgYWxsIG1vZHVsZXMuCi0gICAgc291cmNlID0gKGIiXyA9ICc6Oicuam9pbihbX19uYW1lX18sIF9fZmlsZV9fLCBfX2NhY2hlZF9fLCBfX3BhY2thZ2VfXywgIgotICAgICAgICAgICAgICBiInJlcHIoX19sb2FkZXJfXyldKSIpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6Ci0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKLSAgICAgICAgYXNzZXJ0IHNlbGYucGF0aCA9PSBwYXRoCi0gICAgICAgIHJldHVybiBzZWxmLnNvdXJjZQotCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLnBhdGgKLQotICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgotICAgICAgICByZXR1cm4gJzxtb2R1bGU+JwotCi0KLWNsYXNzIFNvdXJjZUxvYWRlck1vY2soU291cmNlT25seUxvYWRlck1vY2spOgotCi0gICAgc291cmNlX210aW1lID0gMQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1hZ2ljPWltcC5nZXRfbWFnaWMoKSk6Ci0gICAgICAgIHN1cGVyKCkuX19pbml0X18ocGF0aCkKLSAgICAgICAgc2VsZi5ieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKLSAgICAgICAgc2VsZi5zb3VyY2Vfc2l6ZSA9IGxlbihzZWxmLnNvdXJjZSkKLSAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShtYWdpYykKLSAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQotICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9zaXplKSkKLSAgICAgICAgY29kZV9vYmplY3QgPSBjb21waWxlKHNlbGYuc291cmNlLCBzZWxmLnBhdGgsICdleGVjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCi0gICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQotICAgICAgICBzZWxmLmJ5dGVjb2RlID0gYnl0ZXMoZGF0YSkKLSAgICAgICAgc2VsZi53cml0dGVuID0ge30KLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgcGF0aCA9PSBzZWxmLnBhdGg6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZGF0YShwYXRoKQotICAgICAgICBlbGlmIHBhdGggPT0gc2VsZi5ieXRlY29kZV9wYXRoOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnl0ZWNvZGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKLQotICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgotICAgICAgICBhc3NlcnQgcGF0aCA9PSBzZWxmLnBhdGgKLSAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnNvdXJjZV9tdGltZSwgJ3NpemUnOiBzZWxmLnNvdXJjZV9zaXplfQotCi0gICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgotICAgICAgICBzZWxmLndyaXR0ZW5bcGF0aF0gPSBieXRlcyhkYXRhKQotICAgICAgICByZXR1cm4gcGF0aCA9PSBzZWxmLmJ5dGVjb2RlX3BhdGgKLQotCi1jbGFzcyBQeUxvYWRlck1vY2soYWJjLlB5TG9hZGVyKToKLQotICAgICMgR2xvYmFscyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIGZvciBhbGwgbW9kdWxlcy4KLSAgICBzb3VyY2UgPSAoYiJfID0gJzo6Jy5qb2luKFtfX25hbWVfXywgX19maWxlX18sIF9fcGFja2FnZV9fLCAiCi0gICAgICAgICAgICAgIGIicmVwcihfX2xvYWRlcl9fKV0pIikKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiVGFrZSBhIGRpY3Qgb2YgJ21vZHVsZV9uYW1lOiBwYXRoJyBwYWlyaW5ncy4KLQotICAgICAgICBQYXRocyBzaG91bGQgaGF2ZSBubyBmaWxlIGV4dGVuc2lvbiwgYWxsb3dpbmcgcGFja2FnZXMgdG8gYmUgZGVub3RlZCBieQotICAgICAgICBlbmRpbmcgaW4gJ19faW5pdF9fJy4KLQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5tb2R1bGVfcGF0aHMgPSBkYXRhCi0gICAgICAgIHNlbGYucGF0aF90b19tb2R1bGUgPSB7dmFsOmtleSBmb3Iga2V5LHZhbCBpbiBkYXRhLml0ZW1zKCl9Ci0KLSAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlmIHBhdGggbm90IGluIHNlbGYucGF0aF90b19tb2R1bGU6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yCi0gICAgICAgIHJldHVybiBzZWxmLnNvdXJjZQotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLmdldF9maWxlbmFtZShuYW1lKSkKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdID09ICdfX2luaXRfXycKLQotICAgIGRlZiBzb3VyY2VfcGF0aChzZWxmLCBuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlX3BhdGhzW25hbWVdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0KLSAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJTaWxlbmNlIGRlcHJlY2F0aW9uIHdhcm5pbmcuIiIiCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCi0gICAgICAgICAgICBwYXRoID0gc3VwZXIoKS5nZXRfZmlsZW5hbWUobmFtZSkKLSAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgcmV0dXJuIHBhdGgKLQotICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmKToKLSAgICAgICAgcmV0dXJuICc8bW9kdWxlPicKLQotCi1jbGFzcyBQeUxvYWRlckNvbXBhdE1vY2soUHlMb2FkZXJNb2NrKToKLQotICAgICIiIk1vY2sgdGhhdCBtYXRjaGVzIHdoYXQgaXMgc3VnZ2VzdGVkIHRvIGhhdmUgYSBsb2FkZXIgdGhhdCBpcyBjb21wYXRpYmxlCi0gICAgZnJvbSBQeXRob24gMy4xIG9ud2FyZHMuIiIiCi0KLSAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlX3BhdGhzW2Z1bGxuYW1lXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotCi0gICAgZGVmIHNvdXJjZV9wYXRoKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0KLWNsYXNzIFB5UHljTG9hZGVyTW9jayhhYmMuUHlQeWNMb2FkZXIsIFB5TG9hZGVyTW9jayk6Ci0KLSAgICBkZWZhdWx0X210aW1lID0gMQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSwgYmM9e30pOgotICAgICAgICAiIiJJbml0aWFsaXplIG1vY2suCi0KLSAgICAgICAgJ2JjJyBpcyBhIGRpY3Qga2V5ZWQgb24gYSBtb2R1bGUncyBuYW1lLiBUaGUgdmFsdWUgaXMgZGljdCB3aXRoCi0gICAgICAgIHBvc3NpYmxlIGtleXMgb2YgJ3BhdGgnLCAnbXRpbWUnLCAnbWFnaWMnLCBhbmQgJ2JjJy4gRXhjZXB0IGZvciAncGF0aCcsCi0gICAgICAgIGVhY2ggb2YgdGhvc2Uga2V5cyBjb250cm9sIGlmIGFueSBwYXJ0IG9mIGNyZWF0ZWQgYnl0ZWNvZGUgaXMgdG8KLSAgICAgICAgZGV2aWF0ZSBmcm9tIGRlZmF1bHQgdmFsdWVzLgotCi0gICAgICAgICIiIgotICAgICAgICBzdXBlcigpLl9faW5pdF9fKHNvdXJjZSkKLSAgICAgICAgc2VsZi5tb2R1bGVfYnl0ZWNvZGUgPSB7fQotICAgICAgICBzZWxmLnBhdGhfdG9fYnl0ZWNvZGUgPSB7fQotICAgICAgICBzZWxmLmJ5dGVjb2RlX3RvX3BhdGggPSB7fQotICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBiYy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5wYXRoX3RvX2J5dGVjb2RlW2RhdGFbJ3BhdGgnXV0gPSBuYW1lCi0gICAgICAgICAgICBzZWxmLmJ5dGVjb2RlX3RvX3BhdGhbbmFtZV0gPSBkYXRhWydwYXRoJ10KLSAgICAgICAgICAgIG1hZ2ljID0gZGF0YS5nZXQoJ21hZ2ljJywgaW1wLmdldF9tYWdpYygpKQotICAgICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3dfbG9uZyhkYXRhLmdldCgnbXRpbWUnLCBzZWxmLmRlZmF1bHRfbXRpbWUpKQotICAgICAgICAgICAgc291cmNlX3NpemUgPSBpbXBvcnRsaWIuX3dfbG9uZyhsZW4oc2VsZi5zb3VyY2UpICYgMHhGRkZGRkZGRikKLSAgICAgICAgICAgIGlmICdiYycgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBiYyA9IGRhdGFbJ2JjJ10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmMgPSBzZWxmLmNvbXBpbGVfYmMobmFtZSkKLSAgICAgICAgICAgIHNlbGYubW9kdWxlX2J5dGVjb2RlW25hbWVdID0gbWFnaWMgKyBtdGltZSArIHNvdXJjZV9zaXplICsgYmMKLQotICAgIGRlZiBjb21waWxlX2JjKHNlbGYsIG5hbWUpOgotICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYubW9kdWxlX3BhdGhzLmdldChuYW1lLCAnPHRlc3Q+Jykgb3IgJzx0ZXN0PicKLSAgICAgICAgY29kZSA9IGNvbXBpbGUoc2VsZi5zb3VyY2UsIHNvdXJjZV9wYXRoLCAnZXhlYycpCi0gICAgICAgIHJldHVybiBtYXJzaGFsLmR1bXBzKGNvZGUpCi0KLSAgICBkZWYgc291cmNlX210aW1lKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluIHNlbGYubW9kdWxlX3BhdGhzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9tdGltZQotICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi5tb2R1bGVfYnl0ZWNvZGU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLQotICAgIGRlZiBieXRlY29kZV9wYXRoKHNlbGYsIG5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5ieXRlY29kZV90b19wYXRoW25hbWVdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5tb2R1bGVfcGF0aHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLQotICAgIGRlZiB3cml0ZV9ieXRlY29kZShzZWxmLCBuYW1lLCBieXRlY29kZSk6Ci0gICAgICAgIHNlbGYubW9kdWxlX2J5dGVjb2RlW25hbWVdID0gYnl0ZWNvZGUKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgcGF0aCBpbiBzZWxmLnBhdGhfdG9fbW9kdWxlOgotICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2RhdGEocGF0aCkKLSAgICAgICAgZWxpZiBwYXRoIGluIHNlbGYucGF0aF90b19ieXRlY29kZToKLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLnBhdGhfdG9fYnl0ZWNvZGVbcGF0aF0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAnX19pbml0X18nIGluIHNlbGYuYnl0ZWNvZGVfdG9fcGF0aFtuYW1lXQotCi0gICAgZGVmIGdldF9jb2RlKHNlbGYsIG5hbWUpOgotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQotICAgICAgICAgICAgY29kZV9vYmplY3QgPSBzdXBlcigpLmdldF9jb2RlKG5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgbGVuKHcpID09IDEKLSAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHJldHVybiBjb2RlX29iamVjdAotCi1jbGFzcyBQeUxvYWRlclRlc3RzKHRlc3RpbmdfYWJjLkxvYWRlclRlc3RzKToKLQotICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIuYWJjLlB5TG9hZGVyLiIiIgotCi0gICAgbW9ja2VyID0gUHlMb2FkZXJNb2NrCi0KLSAgICBkZWYgZXFfYXR0cnMoc2VsZiwgb2IsICoqa3dhcmdzKToKLSAgICAgICAgZm9yIGF0dHIsIHZhbCBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgICAgIGZvdW5kID0gZ2V0YXR0cihvYiwgYXR0cikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsIHZhbCwKLSAgICAgICAgICAgICAgICAgICAgInt9IGF0dHJpYnV0ZToge30gIT0ge30iLmZvcm1hdChhdHRyLCBmb3VuZCwgdmFsKSkKLQotICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgbmFtZSA9ICc8bW9kdWxlPicKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignJywgJ3BhdGgnLCAndG8nLCAnbW9kdWxlJykKLSAgICAgICAgbW9jayA9IHNlbGYubW9ja2VyKHtuYW1lOiBwYXRofSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmVxX2F0dHJzKG1vZHVsZSwgX19uYW1lX189bmFtZSwgX19maWxlX189cGF0aCwgX19wYWNrYWdlX189JycsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX2xvYWRlcl9fPW1vY2spCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICByZXR1cm4gbW9jaywgbmFtZQotCi0gICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgbmFtZSA9ICc8cGtnPicKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsIG5hbWUsICdfX2luaXRfXycpCi0gICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogcGF0aH0pCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKLSAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsCi0gICAgICAgICAgICAgICAgX19wYXRoX189W29zLnBhdGguZGlybmFtZShwYXRoKV0sIF9fcGFja2FnZV9fPW5hbWUsCi0gICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQotICAgICAgICByZXR1cm4gbW9jaywgbmFtZQotCi0gICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6Ci0gICAgICAgIG5hbWUgPSAncGtnLm1vZCcKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdwa2cnLCAnbW9kJykKLSAgICAgICAgbW9jayA9IHNlbGYubW9ja2VyKHtuYW1lOiBwYXRofSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmVxX2F0dHJzKG1vZHVsZSwgX19uYW1lX189bmFtZSwgX19maWxlX189cGF0aCwgX19wYWNrYWdlX189J3BrZycsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX2xvYWRlcl9fPW1vY2spCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICByZXR1cm4gbW9jaywgbmFtZQotCi0gICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKQotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQotICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICBsb2FkZWRfbW9kdWxlID0gbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWRfbW9kdWxlLCBtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCi0gICAgICAgIHJldHVybiBtb2NrLCBuYW1lCi0KLSAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgotICAgICAgICBuYW1lID0gIm1vZCIKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgbW9kdWxlLmJsYWggPSBOb25lCi0gICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKLSAgICAgICAgbW9jay5zb3VyY2UgPSBiIjEvMCIKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6Ci0gICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tuYW1lXSwgbW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnYmxhaCcpKQotICAgICAgICByZXR1cm4gbW9jawotCi0gICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKLSAgICAgICAgbmFtZSA9ICJtb2QiCi0gICAgICAgIG1vY2sgPSBzZWxmLm1vY2tlcih7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKLSAgICAgICAgbW9jay5zb3VyY2UgPSBiIjEvMCIKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKLSAgICAgICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQotICAgICAgICByZXR1cm4gbW9jawotCi0KLWNsYXNzIFB5TG9hZGVyQ29tcGF0VGVzdHMoUHlMb2FkZXJUZXN0cyk6Ci0KLSAgICAiIiJUZXN0IHRoYXQgdGhlIHN1Z2dlc3RlZCBjb2RlIHRvIG1ha2UgYSBsb2FkZXIgdGhhdCBpcyBjb21wYXRpYmxlIGZyb20KLSAgICBQeXRob24gMy4xIGZvcndhcmQgd29ya3MuIiIiCi0KLSAgICBtb2NrZXIgPSBQeUxvYWRlckNvbXBhdE1vY2sKLQotCi1jbGFzcyBQeUxvYWRlckludGVyZmFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIuYWJjLlB5TG9hZGVyIHRvIG1ha2Ugc3VyZSB0aGF0IHdoZW4gc291cmNlX3BhdGgoKQotICAgIGRvZXNuJ3QgcmV0dXJuIGEgcGF0aCBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkLiIiIgotCi0gICAgZGVmIHRlc3Rfbm9fc291cmNlX3BhdGgoc2VsZik6Ci0gICAgICAgICMgTm8gc291cmNlIHBhdGggc2hvdWxkIGxlYWQgdG8gSW1wb3J0RXJyb3IuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBtb2NrID0gUHlMb2FkZXJNb2NrKHt9KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgotICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX3BhdGhfaXNfTm9uZShzZWxmKToKLSAgICAgICAgbmFtZSA9ICdtb2QnCi0gICAgICAgIG1vY2sgPSBQeUxvYWRlck1vY2soe25hbWU6IE5vbmV9KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgotICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotCi0gICAgZGVmIHRlc3RfZ2V0X2ZpbGVuYW1lX3dpdGhfc291cmNlX3BhdGgoc2VsZik6Ci0gICAgICAgICMgZ2V0X2ZpbGVuYW1lKCkgc2hvdWxkIHJldHVybiB3aGF0IHNvdXJjZV9wYXRoKCkgcmV0dXJucy4KLSAgICAgICAgbmFtZSA9ICdtb2QnCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ3BhdGgnLCAndG8nLCAnc291cmNlJykKLSAgICAgICAgbW9jayA9IFB5TG9hZGVyTW9jayh7bmFtZTogcGF0aH0pCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmdldF9maWxlbmFtZShuYW1lKSwgcGF0aCkKLQotICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZV9ub19zb3VyY2VfcGF0aChzZWxmKToKLSAgICAgICAgIyBnZXRfZmlsZW5hbWUoKSBzaG91bGQgcmFpc2UgSW1wb3J0RXJyb3IgaWYgc291cmNlX3BhdGggcmV0dXJucyBOb25lLgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgbW9jayA9IFB5TG9hZGVyTW9jayh7bmFtZTogTm9uZX0pCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBtb2NrLmdldF9maWxlbmFtZShuYW1lKQotCi0KLWNsYXNzIFB5UHljTG9hZGVyVGVzdHMoUHlMb2FkZXJUZXN0cyk6Ci0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlci4iIiIKLQotICAgIG1vY2tlciA9IFB5UHljTG9hZGVyTW9jawotCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwotICAgIGRlZiB2ZXJpZnlfYnl0ZWNvZGUoc2VsZiwgbW9jaywgbmFtZSk6Ci0gICAgICAgIGFzc2VydCBuYW1lIGluIG1vY2subW9kdWxlX3BhdGhzCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCi0gICAgICAgIG1hZ2ljID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bOjRdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCAxKQotICAgICAgICBzb3VyY2Vfc2l6ZSA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6MTJdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suc291cmNlKSAmIDB4RkZGRkZGRkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLl9yX2xvbmcoc291cmNlX3NpemUpKQotICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzEyOl0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYywgbW9jay5jb21waWxlX2JjKG5hbWUpKQotCi0gICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICBtb2NrLCBuYW1lID0gc3VwZXIoKS50ZXN0X21vZHVsZSgpCi0gICAgICAgIHNlbGYudmVyaWZ5X2J5dGVjb2RlKG1vY2ssIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICBtb2NrLCBuYW1lID0gc3VwZXIoKS50ZXN0X3BhY2thZ2UoKQotICAgICAgICBzZWxmLnZlcmlmeV9ieXRlY29kZShtb2NrLCBuYW1lKQotCi0gICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6Ci0gICAgICAgIG1vY2ssIG5hbWUgPSBzdXBlcigpLnRlc3RfbGFja2luZ19wYXJlbnQoKQotICAgICAgICBzZWxmLnZlcmlmeV9ieXRlY29kZShtb2NrLCBuYW1lKQotCi0gICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICBtb2NrLCBuYW1lID0gc3VwZXIoKS50ZXN0X21vZHVsZV9yZXVzZSgpCi0gICAgICAgIHNlbGYudmVyaWZ5X2J5dGVjb2RlKG1vY2ssIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzdXBlcigpLnRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZSgpCi0KLSAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgotICAgICAgICBzdXBlcigpLnRlc3RfdW5sb2FkYWJsZSgpCi0KLQotY2xhc3MgUHlQeWNMb2FkZXJJbnRlcmZhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IGZvciB0aGUgaW50ZXJmYWNlIG9mIGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXIuIiIiCi0KLSAgICBkZWYgZ2V0X2ZpbGVuYW1lX2NoZWNrKHNlbGYsIHNyY19wYXRoLCBiY19wYXRoLCBleHBlY3QpOgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogc3JjX3BhdGh9LCB7bmFtZTogeydwYXRoJzogYmNfcGF0aH19KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIGFzc2VydCBtb2NrLnNvdXJjZV9wYXRoKG5hbWUpID09IHNyY19wYXRoCi0gICAgICAgICAgICBhc3NlcnQgbW9jay5ieXRlY29kZV9wYXRoKG5hbWUpID09IGJjX3BhdGgKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfZmlsZW5hbWUobmFtZSksIGV4cGVjdCkKLQotICAgIGRlZiB0ZXN0X2ZpbGVuYW1lX3dpdGhfc291cmNlX2JjKHNlbGYpOgotICAgICAgICAjIFdoZW4gc291cmNlIGFuZCBieXRlY29kZSBwYXRocyBwcmVzZW50LCByZXR1cm4gdGhlIHNvdXJjZSBwYXRoLgotICAgICAgICBzZWxmLmdldF9maWxlbmFtZV9jaGVjaygnc291cmNlX3BhdGgnLCAnYmNfcGF0aCcsICdzb3VyY2VfcGF0aCcpCi0KLSAgICBkZWYgdGVzdF9maWxlbmFtZV93aXRoX3NvdXJjZV9ub19iYyhzZWxmKToKLSAgICAgICAgIyBXaXRoIHNvdXJjZSBidXQgbm8gYmMsIHJldHVybiBzb3VyY2UgcGF0aC4KLSAgICAgICAgc2VsZi5nZXRfZmlsZW5hbWVfY2hlY2soJ3NvdXJjZV9wYXRoJywgTm9uZSwgJ3NvdXJjZV9wYXRoJykKLQotICAgIGRlZiB0ZXN0X2ZpbGVuYW1lX3dpdGhfbm9fc291cmNlX2JjKHNlbGYpOgotICAgICAgICAjIFdpdGggbm90IHNvdXJjZSBidXQgYmMsIHJldHVybiB0aGUgYmMgcGF0aC4KLSAgICAgICAgc2VsZi5nZXRfZmlsZW5hbWVfY2hlY2soTm9uZSwgJ2JjX3BhdGgnLCAnYmNfcGF0aCcpCi0KLSAgICBkZWYgdGVzdF9maWxlbmFtZV93aXRoX25vX3NvdXJjZV9vcl9iYyhzZWxmKToKLSAgICAgICAgIyBXaXRoIG5vIHNvdXJjZSBvciBiYywgcmFpc2UgSW1wb3J0RXJyb3IuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSwge25hbWU6IHsncGF0aCc6IE5vbmV9fSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgIG1vY2suZ2V0X2ZpbGVuYW1lKG5hbWUpCi0KLQotY2xhc3MgU2tpcFdyaXRpbmdCeXRlY29kZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgdGhhdCBieXRlY29kZSBpcyBwcm9wZXJseSBoYW5kbGVkIGJhc2VkIG9uCi0gICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUuIiIiCi0KLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCi0gICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGRvbnRfd3JpdGVfYnl0ZWNvZGUpOgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBkb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzTm90KG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUsIGRvbnRfd3JpdGVfYnl0ZWNvZGUpCi0KLSAgICBkZWYgdGVzdF9ub19ieXRlY29kZV93cml0dGVuKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KFRydWUpCi0KLSAgICBkZWYgdGVzdF9ieXRlY29kZV93cml0dGVuKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KEZhbHNlKQotCi0KLWNsYXNzIFJlZ2VuZXJhdGVkQnl0ZWNvZGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHRoYXQgYnl0ZWNvZGUgaXMgcmVnZW5lcmF0ZWQgYXMgZXhwZWN0ZWQuIiIiCi0KLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCi0gICAgZGVmIHRlc3RfZGlmZmVyZW50X21hZ2ljKHNlbGYpOgotICAgICAgICAjIEEgZGlmZmVyZW50IG1hZ2ljIG51bWJlciBzaG91bGQgbGVhZCB0byBuZXcgYnl0ZWNvZGUuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBiYWRfbWFnaWMgPSBiJ1x4MDBceDAwXHgwMFx4MDAnCi0gICAgICAgIGFzc2VydCBiYWRfbWFnaWMgIT0gaW1wLmdldF9tYWdpYygpCi0gICAgICAgIG1vY2sgPSBQeVB5Y0xvYWRlck1vY2soe25hbWU6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiB7J3BhdGgnOiBvcy5wYXRoLmpvaW4oJ3BhdGgnLCAndG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2QuYnl0ZWNvZGUnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFnaWMnOiBiYWRfbWFnaWN9fSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCi0gICAgICAgIG1hZ2ljID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bOjRdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKLQotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKLSAgICBkZWYgdGVzdF9vbGRfbXRpbWUoc2VsZik6Ci0gICAgICAgICMgQnl0ZWNvZGUgd2l0aCBhbiBvbGRlciBtdGltZSBzaG91bGQgYmUgcmVnZW5lcmF0ZWQuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBvbGRfbXRpbWUgPSBQeVB5Y0xvYWRlck1vY2suZGVmYXVsdF9tdGltZSAtIDEKLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSwKLSAgICAgICAgICAgICAgICB7bmFtZTogeydwYXRoJzogJ3BhdGgvdG8vbW9kLmJ5dGVjb2RlJywgJ210aW1lJzogb2xkX210aW1lfX0pCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIG1vY2subW9kdWxlX2J5dGVjb2RlKQotICAgICAgICBtdGltZSA9IGltcG9ydGxpYi5fcl9sb25nKG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzQ6OF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXRpbWUsIFB5UHljTG9hZGVyTW9jay5kZWZhdWx0X210aW1lKQotCi0KLWNsYXNzIEJhZEJ5dGVjb2RlRmFpbHVyZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0IGZhaWx1cmVzIHdoZW4gdGhlcmUgaXMgbm8gc291cmNlIGFuZCBwYXJ0cyBvZiB0aGUgYnl0ZWNvZGUKLSAgICBpcyBiYWQuIiIiCi0KLSAgICBkZWYgdGVzdF9iYWRfbWFnaWMoc2VsZik6Ci0gICAgICAgICMgQSBiYWQgbWFnaWMgbnVtYmVyIHNob3VsZCBsZWFkIHRvIGFuIEltcG9ydEVycm9yLgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgYmFkX21hZ2ljID0gYidceDAwXHgwMFx4MDBceDAwJwotICAgICAgICBiYyA9IHtuYW1lOgotICAgICAgICAgICAgICAgIHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKSwKLSAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0KLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0sIGJjKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQotCi0gICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGUoc2VsZik6Ci0gICAgICAgICMgTWlzc2luZyBjb2RlIG9iamVjdCBieXRlY29kZSBzaG91bGQgbGVhZCB0byBhbiBFT0ZFcnJvci4KLSAgICAgICAgbmFtZSA9ICdtb2QnCi0gICAgICAgIGJjID0ge25hbWU6IHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKSwgJ2JjJzogYicnfX0KLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0sIGJjKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgotICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotCi0gICAgZGVmIHRlc3RfYmFkX2J5dGVjb2RlKHNlbGYpOgotICAgICAgICAjIE1hbGZvcm1lZCBjb2RlIG9iamVjdCBieXRlY29kZSBzaG91bGQgbGVhZCB0byBhIFZhbHVlRXJyb3IuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBiYyA9IHtuYW1lOiB7J3BhdGgnOiBvcy5wYXRoLmpvaW4oJ3BhdGgnLCAndG8nLCAnbW9kJyksICdiYyc6IGInMTIzNCd9fQotICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSwgYmMpCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLQotCi1kZWYgcmFpc2VfSW1wb3J0RXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByYWlzZSBJbXBvcnRFcnJvcgotCi1jbGFzcyBNaXNzaW5nUGF0aHNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHdoYXQgaGFwcGVucyB3aGVuIGEgc291cmNlIG9yIGJ5dGVjb2RlIHBhdGggZG9lcyBub3QgZXhpc3QgKGVpdGhlcgotICAgIGZyb20gKl9wYXRoIHJldHVybmluZyBOb25lIG9yIHJhaXNpbmcgSW1wb3J0RXJyb3IpLiIiIgotCi0gICAgZGVmIHRlc3Rfc291cmNlX3BhdGhfTm9uZShzZWxmKToKLSAgICAgICAgIyBCeXRlY29kZSBzaG91bGQgYmUgdXNlZCB3aGVuIHNvdXJjZV9wYXRoIHJldHVybnMgTm9uZSwgYWxvbmcgd2l0aAotICAgICAgICAjIF9fZmlsZV9fIGJlaW5nIHNldCB0byB0aGUgYnl0ZWNvZGUgcGF0aC4KLSAgICAgICAgbmFtZSA9ICdtb2QnCi0gICAgICAgIGJ5dGVjb2RlX3BhdGggPSAncGF0aC90by9tb2QnCi0gICAgICAgIG1vY2sgPSBQeVB5Y0xvYWRlck1vY2soe25hbWU6IE5vbmV9LCB7bmFtZTogeydwYXRoJzogYnl0ZWNvZGVfcGF0aH19KQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIGJ5dGVjb2RlX3BhdGgpCi0KLSAgICAjIFRlc3RpbmcgZm9yIGJ5dGVjb2RlX3BhdGggcmV0dXJuaW5nIE5vbmUgaGFuZGxlZCBieSBhbGwgdGVzdHMgd2hlcmUgbm8KLSAgICAjIGJ5dGVjb2RlIGluaXRpYWxseSBleGlzdHMuCi0KLSAgICBkZWYgdGVzdF9hbGxfcGF0aHNfTm9uZShzZWxmKToKLSAgICAgICAgIyBJZiBhbGwgKl9wYXRoIG1ldGhvZHMgcmV0dXJuIE5vbmUsIHJhaXNlIEltcG9ydEVycm9yLgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0pCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfcGF0aF9JbXBvcnRFcnJvcihzZWxmKToKLSAgICAgICAgIyBBbiBJbXBvcnRFcnJvciBmcm9tIHNvdXJjZV9wYXRoIHNob3VsZCB0cmlnZ2VyIGFuIEltcG9ydEVycm9yLgotICAgICAgICBuYW1lID0gJ21vZCcKLSAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7fSwge25hbWU6IHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZCcpfX0pCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpLCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0KLSAgICBkZWYgdGVzdF9ieXRlY29kZV9wYXRoX0ltcG9ydEVycm9yKHNlbGYpOgotICAgICAgICAjIEFuIEltcG9ydEVycm9yIGZyb20gYnl0ZWNvZGVfcGF0aCBzaG91bGQgdHJpZ2dlciBhbiBJbXBvcnRFcnJvci4KLSAgICAgICAgbmFtZSA9ICdtb2QnCi0gICAgICAgIG1vY2sgPSBQeVB5Y0xvYWRlck1vY2soe25hbWU6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKX0pCi0gICAgICAgIGJhZF9tZXRoID0gdHlwZXMuTWV0aG9kVHlwZShyYWlzZV9JbXBvcnRFcnJvciwgbW9jaykKLSAgICAgICAgbW9jay5ieXRlY29kZV9wYXRoID0gYmFkX21ldGgKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLQotCi1jbGFzcyBTb3VyY2VMb2FkZXJUZXN0SGFybmVzcyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgc2V0VXAoc2VsZiwgKiwgaXNfcGFja2FnZT1UcnVlLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucGFja2FnZSA9ICdwa2cnCi0gICAgICAgIGlmIGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICBzZWxmLnBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYWNrYWdlLCAnX19pbml0X18ucHknKQotICAgICAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5wYWNrYWdlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtb2R1bGVfbmFtZSA9ICdtb2QnCi0gICAgICAgICAgICBzZWxmLnBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYWNrYWdlLCAnLicuam9pbihbJ21vZCcsICdweSddKSkKLSAgICAgICAgICAgIHNlbGYubmFtZSA9ICcuJy5qb2luKFtzZWxmLnBhY2thZ2UsIG1vZHVsZV9uYW1lXSkKLSAgICAgICAgc2VsZi5jYWNoZWQgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5wYXRoKQotICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubG9hZGVyX21vY2soc2VsZi5wYXRoLCAqKmt3YXJncykKLQotICAgIGRlZiB2ZXJpZnlfbW9kdWxlKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzZWxmLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBzZWxmLnBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fY2FjaGVkX18sIHNlbGYuY2FjaGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc2VsZi5wYWNrYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2xvYWRlcl9fLCBzZWxmLmxvYWRlcikKLSAgICAgICAgdmFsdWVzID0gbW9kdWxlLl8uc3BsaXQoJzo6JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNbMF0sIHNlbGYubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNbMV0sIHNlbGYucGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNbMl0sIHNlbGYuY2FjaGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlc1szXSwgc2VsZi5wYWNrYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlc1s0XSwgcmVwcihzZWxmLmxvYWRlcikpCi0KLSAgICBkZWYgdmVyaWZ5X2NvZGUoc2VsZiwgY29kZV9vYmplY3QpOgotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShzZWxmLm5hbWUpCi0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IHNlbGYucGF0aAotICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IHNlbGYuY2FjaGVkCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNlbGYucGFja2FnZQotICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYubG9hZGVyCi0gICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtdCi0gICAgICAgIGV4ZWMoY29kZV9vYmplY3QsIG1vZHVsZS5fX2RpY3RfXykKLSAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKLQotCi1jbGFzcyBTb3VyY2VPbmx5TG9hZGVyVGVzdHMoU291cmNlTG9hZGVyVGVzdEhhcm5lc3MpOgotCi0gICAgIiIiVGVzdCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlciBmb3Igc291cmNlLW9ubHkgbG9hZGluZy4KLQotICAgIFJlbG9hZCB0ZXN0aW5nIGlzIHN1YnN1bWVkIGJ5IHRoZSB0ZXN0cyBmb3IKLSAgICBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlci4KLQotICAgICIiIgotCi0gICAgbG9hZGVyX21vY2sgPSBTb3VyY2VPbmx5TG9hZGVyTW9jawotCi0gICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBWZXJpZnkgdGhlIHNvdXJjZSBjb2RlIGlzIHJldHVybmVkIGFzIGEgc3RyaW5nLgotICAgICAgICAjIElmIGFuIElPRXJyb3IgaXMgcmFpc2VkIGJ5IGdldF9kYXRhIHRoZW4gcmFpc2UgSW1wb3J0RXJyb3IuCi0gICAgICAgIGV4cGVjdGVkX3NvdXJjZSA9IHNlbGYubG9hZGVyLnNvdXJjZS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRlci5nZXRfc291cmNlKHNlbGYubmFtZSksIGV4cGVjdGVkX3NvdXJjZSkKLSAgICAgICAgZGVmIHJhaXNlX0lPRXJyb3IocGF0aCk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yCi0gICAgICAgIHNlbGYubG9hZGVyLmdldF9kYXRhID0gcmFpc2VfSU9FcnJvcgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYubG9hZGVyLmdldF9zb3VyY2Uoc2VsZi5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBzZWxmLm5hbWUpCi0KLSAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFByb3Blcmx5IGRldGVjdCB3aGVuIGxvYWRpbmcgYSBwYWNrYWdlLgotICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQotICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSArICcuX19pbml0X18nKSkKLQotICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgotICAgICAgICAjIFZlcmlmeSB0aGUgY29kZSBvYmplY3QgaXMgY3JlYXRlZC4KLSAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCi0gICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QpCi0KLSAgICBkZWYgdGVzdF9sb2FkX21vZHVsZShzZWxmKToKLSAgICAgICAgIyBMb2FkaW5nIGEgbW9kdWxlIHNob3VsZCBzZXQgX19uYW1lX18sIF9fbG9hZGVyX18sIF9fcGFja2FnZV9fLAotICAgICAgICAjIF9fcGF0aF9fIChmb3IgcGFja2FnZXMpLCBfX2ZpbGVfXywgYW5kIF9fY2FjaGVkX18uCi0gICAgICAgICMgVGhlIG1vZHVsZSBzaG91bGQgYWxzbyBiZSBwdXQgaW50byBzeXMubW9kdWxlcy4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHNlbGYudmVyaWZ5X21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhdGhfXywgW29zLnBhdGguZGlybmFtZShzZWxmLnBhdGgpXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzeXMubW9kdWxlcykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Vfc2V0dGluZ3Moc2VsZik6Ci0gICAgICAgICMgX19wYWNrYWdlX18gbmVlZHMgdG8gYmUgc2V0LCB3aGlsZSBfX3BhdGhfXyBpcyBzZXQgb24gaWYgdGhlIG1vZHVsZQotICAgICAgICAjIGlzIGEgcGFja2FnZS4KLSAgICAgICAgIyBUZXN0aW5nIHRoZSB2YWx1ZXMgZm9yIGEgcGFja2FnZSBhcmUgY292ZXJlZCBieSB0ZXN0X2xvYWRfbW9kdWxlLgotICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShzZWxmLm5hbWUpCi0gICAgICAgICAgICBzZWxmLnZlcmlmeV9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJykpCi0KLSAgICBkZWYgdGVzdF9nZXRfc291cmNlX2VuY29kaW5nKHNlbGYpOgotICAgICAgICAjIFNvdXJjZSBpcyBjb25zaWRlcmVkIGVuY29kZWQgaW4gVVRGLTggYnkgZGVmYXVsdCB1bmxlc3Mgb3RoZXJ3aXNlCi0gICAgICAgICMgc3BlY2lmaWVkIGJ5IGFuIGVuY29kaW5nIGxpbmUuCi0gICAgICAgIHNvdXJjZSA9ICJfID0gJ8O8JyIKLSAgICAgICAgc2VsZi5sb2FkZXIuc291cmNlID0gc291cmNlLmVuY29kZSgndXRmLTgnKQotICAgICAgICByZXR1cm5lZF9zb3VyY2UgPSBzZWxmLmxvYWRlci5nZXRfc291cmNlKHNlbGYubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR1cm5lZF9zb3VyY2UsIHNvdXJjZSkKLSAgICAgICAgc291cmNlID0gIiMgY29kaW5nOiBsYXRpbi0xXG5fID0gw7wiCi0gICAgICAgIHNlbGYubG9hZGVyLnNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoJ2xhdGluLTEnKQotICAgICAgICByZXR1cm5lZF9zb3VyY2UgPSBzZWxmLmxvYWRlci5nZXRfc291cmNlKHNlbGYubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR1cm5lZF9zb3VyY2UsIHNvdXJjZSkKLQotCi1AdW5pdHRlc3Quc2tpcElmKHN5cy5kb250X3dyaXRlX2J5dGVjb2RlLCAic3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgdHJ1ZSIpCi1jbGFzcyBTb3VyY2VMb2FkZXJCeXRlY29kZVRlc3RzKFNvdXJjZUxvYWRlclRlc3RIYXJuZXNzKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIncyB1c2Ugb2YgYnl0ZWNvZGUuCi0KLSAgICBTb3VyY2Utb25seSB0ZXN0aW5nIGhhbmRsZWQgYnkgU291cmNlT25seUxvYWRlclRlc3RzLgotCi0gICAgIiIiCi0KLSAgICBsb2FkZXJfbW9jayA9IFNvdXJjZUxvYWRlck1vY2sKLQotICAgIGRlZiB2ZXJpZnlfY29kZShzZWxmLCBjb2RlX29iamVjdCwgKiwgYnl0ZWNvZGVfd3JpdHRlbj1GYWxzZSk6Ci0gICAgICAgIHN1cGVyKCkudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QpCi0gICAgICAgIGlmIGJ5dGVjb2RlX3dyaXR0ZW46Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY2FjaGVkLCBzZWxmLmxvYWRlci53cml0dGVuKQotICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2VfbXRpbWUpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX3NpemUpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZGVyLndyaXR0ZW5bc2VsZi5jYWNoZWRdLCBieXRlcyhkYXRhKSkKLQotICAgIGRlZiB0ZXN0X2NvZGVfd2l0aF9ldmVyeXRoaW5nKHNlbGYpOgotICAgICAgICAjIFdoZW4gZXZlcnl0aGluZyBzaG91bGQgd29yay4KLSAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCi0gICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QpCi0KLSAgICBkZWYgdGVzdF9ub19ieXRlY29kZShzZWxmKToKLSAgICAgICAgIyBJZiBubyBieXRlY29kZSBleGlzdHMgdGhlbiBtb3ZlIG9uIHRvIHRoZSBzb3VyY2UuCi0gICAgICAgIHNlbGYubG9hZGVyLmJ5dGVjb2RlX3BhdGggPSAiPGRvZXMgbm90IGV4aXN0PiIKLSAgICAgICAgIyBTYW5pdHkgY2hlY2sKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKLSAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5wYXRoKQotICAgICAgICAgICAgc2VsZi5sb2FkZXIuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKLSAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCi0gICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QsIGJ5dGVjb2RlX3dyaXR0ZW49VHJ1ZSkKLQotICAgIGRlZiB0ZXN0X2NvZGVfYmFkX3RpbWVzdGFtcChzZWxmKToKLSAgICAgICAgIyBCeXRlY29kZSBpcyBvbmx5IHVzZWQgd2hlbiB0aGUgdGltZXN0YW1wIG1hdGNoZXMgdGhlIHNvdXJjZSBFWEFDVExZLgotICAgICAgICBmb3Igc291cmNlX210aW1lIGluICgwLCAyKToKLSAgICAgICAgICAgIGFzc2VydCBzb3VyY2VfbXRpbWUgIT0gc2VsZi5sb2FkZXIuc291cmNlX210aW1lCi0gICAgICAgICAgICBvcmlnaW5hbCA9IHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZQotICAgICAgICAgICAgc2VsZi5sb2FkZXIuc291cmNlX210aW1lID0gc291cmNlX210aW1lCi0gICAgICAgICAgICAjIElmIGJ5dGVjb2RlIGlzIHVzZWQgdGhlbiBFT0ZFcnJvciB3b3VsZCBiZSByYWlzZWQgYnkgbWFyc2hhbC4KLSAgICAgICAgICAgIHNlbGYubG9hZGVyLmJ5dGVjb2RlID0gc2VsZi5sb2FkZXIuYnl0ZWNvZGVbODpdCi0gICAgICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYubG9hZGVyLmdldF9jb2RlKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QsIGJ5dGVjb2RlX3dyaXR0ZW49VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSA9IG9yaWdpbmFsCi0KLSAgICBkZWYgdGVzdF9jb2RlX2JhZF9tYWdpYyhzZWxmKToKLSAgICAgICAgIyBTa2lwIG92ZXIgYnl0ZWNvZGUgd2l0aCBhIGJhZCBtYWdpYyBudW1iZXIuCi0gICAgICAgIHNlbGYuc2V0VXAobWFnaWM9YicwMDAwJykKLSAgICAgICAgIyBJZiBieXRlY29kZSBpcyB1c2VkIHRoZW4gRU9GRXJyb3Igd291bGQgYmUgcmFpc2VkIGJ5IG1hcnNoYWwuCi0gICAgICAgIHNlbGYubG9hZGVyLmJ5dGVjb2RlID0gc2VsZi5sb2FkZXIuYnl0ZWNvZGVbODpdCi0gICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5sb2FkZXIuZ2V0X2NvZGUoc2VsZi5uYW1lKQotICAgICAgICBzZWxmLnZlcmlmeV9jb2RlKGNvZGVfb2JqZWN0LCBieXRlY29kZV93cml0dGVuPVRydWUpCi0KLSAgICBkZWYgdGVzdF9kb250X3dyaXRlX2J5dGVjb2RlKHNlbGYpOgotICAgICAgICAjIEJ5dGVjb2RlIGlzIG5vdCB3cml0dGVuIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIHRydWUuCi0gICAgICAgICMgQ2FuIGFzc3VtZSBpdCBpcyBmYWxzZSBhbHJlYWR5IHRoYW5rcyB0byB0aGUgc2tpcElmIGNsYXNzIGRlY29yYXRvci4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLmxvYWRlci5ieXRlY29kZV9wYXRoID0gIjxkb2VzIG5vdCBleGlzdD4iCi0gICAgICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYubG9hZGVyLmdldF9jb2RlKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oc2VsZi5jYWNoZWQsIHNlbGYubG9hZGVyLndyaXR0ZW4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCi0KLSAgICBkZWYgdGVzdF9ub19zZXRfZGF0YShzZWxmKToKLSAgICAgICAgIyBJZiBzZXRfZGF0YSBpcyBub3QgZGVmaW5lZCwgb25lIGNhbiBzdGlsbCByZWFkIGJ5dGVjb2RlLgotICAgICAgICBzZWxmLnNldFVwKG1hZ2ljPWInMDAwMCcpCi0gICAgICAgIG9yaWdpbmFsX3NldF9kYXRhID0gc2VsZi5sb2FkZXIuX19jbGFzc19fLnNldF9kYXRhCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlbCBzZWxmLmxvYWRlci5fX2NsYXNzX18uc2V0X2RhdGEKLSAgICAgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5sb2FkZXIuZ2V0X2NvZGUoc2VsZi5uYW1lKQotICAgICAgICAgICAgc2VsZi52ZXJpZnlfY29kZShjb2RlX29iamVjdCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYubG9hZGVyLl9fY2xhc3NfXy5zZXRfZGF0YSA9IG9yaWdpbmFsX3NldF9kYXRhCi0KLSAgICBkZWYgdGVzdF9zZXRfZGF0YV9yYWlzZXNfZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgIyBSYWlzaW5nIE5vdEltcGxlbWVudGVkRXJyb3Igb3IgSU9FcnJvciBpcyBva2F5IGZvciBzZXRfZGF0YS4KLSAgICAgICAgZGVmIHJhaXNlX2V4Y2VwdGlvbihleGMpOgotICAgICAgICAgICAgZGVmIGNsb3N1cmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgICAgICByYWlzZSBleGMKLSAgICAgICAgICAgIHJldHVybiBjbG9zdXJlCi0KLSAgICAgICAgc2VsZi5zZXRVcChtYWdpYz1iJzAwMDAnKQotICAgICAgICBzZWxmLmxvYWRlci5zZXRfZGF0YSA9IHJhaXNlX2V4Y2VwdGlvbihOb3RJbXBsZW1lbnRlZEVycm9yKQotICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYubG9hZGVyLmdldF9jb2RlKHNlbGYubmFtZSkKLSAgICAgICAgc2VsZi52ZXJpZnlfY29kZShjb2RlX29iamVjdCkKLQotCi1jbGFzcyBTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIuZ2V0X3NvdXJjZSgpLiIiIgotCi0gICAgZGVmIHRlc3RfZGVmYXVsdF9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgIyBTaG91bGQgaGF2ZSBubyBwcm9ibGVtcyB3aXRoIFVURi04IHRleHQuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBtb2NrID0gU291cmNlT25seUxvYWRlck1vY2soJ21vZC5maWxlJykKLSAgICAgICAgc291cmNlID0gJ3ggPSAiw7wiJwotICAgICAgICBtb2NrLnNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgcmV0dXJuZWRfc291cmNlID0gbW9jay5nZXRfc291cmNlKG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dXJuZWRfc291cmNlLCBzb3VyY2UpCi0KLSAgICBkZWYgdGVzdF9kZWNvZGVkX3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBEZWNvZGluZyBzaG91bGQgd29yay4KLSAgICAgICAgbmFtZSA9ICdtb2QnCi0gICAgICAgIG1vY2sgPSBTb3VyY2VPbmx5TG9hZGVyTW9jaygibW9kLmZpbGUiKQotICAgICAgICBzb3VyY2UgPSAiIyBjb2Rpbmc6IExhdGluLTFcbng9J8O8JyIKLSAgICAgICAgYXNzZXJ0IHNvdXJjZS5lbmNvZGUoJ2xhdGluLTEnKSAhPSBzb3VyY2UuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIG1vY2suc291cmNlID0gc291cmNlLmVuY29kZSgnbGF0aW4tMScpCi0gICAgICAgIHJldHVybmVkX3NvdXJjZSA9IG1vY2suZ2V0X3NvdXJjZShuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmVkX3NvdXJjZSwgc291cmNlKQotCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzKHNlbGYpOgotICAgICAgICAjIFBFUCAzMDIgc2F5cyB1bml2ZXJzYWwgbmV3bGluZXMgc2hvdWxkIGJlIHVzZWQuCi0gICAgICAgIG5hbWUgPSAnbW9kJwotICAgICAgICBtb2NrID0gU291cmNlT25seUxvYWRlck1vY2soJ21vZC5maWxlJykKLSAgICAgICAgc291cmNlID0gInggPSA0MlxyXG55ID0gLTEzXHJcbiIKLSAgICAgICAgbW9jay5zb3VyY2UgPSBzb3VyY2UuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGV4cGVjdCA9IGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkuZGVjb2RlKHNvdXJjZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmdldF9zb3VyY2UobmFtZSksIGV4cGVjdCkKLQotCi1jbGFzcyBBYnN0cmFjdE1ldGhvZEltcGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHRoZSBjb25jcmV0ZSBhYnN0cmFjdG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMuIiIiCi0KLSAgICBjbGFzcyBNZXRhUGF0aEZpbmRlcihhYmMuTWV0YVBhdGhGaW5kZXIpOgotICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgotICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aCkKLQotICAgIGNsYXNzIFBhdGhFbnRyeUZpbmRlcihhYmMuUGF0aEVudHJ5RmluZGVyKToKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgotICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQotCi0gICAgICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBfKToKLSAgICAgICAgICAgIHN1cGVyKCkuZmluZF9sb2FkZXIoXykKLQotICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKLSAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCi0KLSAgICBjbGFzcyBMb2FkZXIoYWJjLkxvYWRlcik6Ci0gICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICAgICBzdXBlcigpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQotICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHN1cGVyKCkubW9kdWxlX3JlcHIobW9kdWxlKQotCi0gICAgY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyLCBhYmMuUmVzb3VyY2VMb2FkZXIpOgotICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgXyk6Ci0gICAgICAgICAgICBzdXBlcigpLmdldF9kYXRhKF8pCi0KLSAgICBjbGFzcyBJbnNwZWN0TG9hZGVyKExvYWRlciwgYWJjLkluc3BlY3RMb2FkZXIpOgotICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKToKLSAgICAgICAgICAgIHN1cGVyKCkuaXNfcGFja2FnZShfKQotCi0gICAgICAgIGRlZiBnZXRfY29kZShzZWxmLCBfKToKLSAgICAgICAgICAgIHN1cGVyKCkuZ2V0X2NvZGUoXykKLQotICAgICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBfKToKLSAgICAgICAgICAgIHN1cGVyKCkuZ2V0X3NvdXJjZShfKQotCi0gICAgY2xhc3MgRXhlY3V0aW9uTG9hZGVyKEluc3BlY3RMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXIpOgotICAgICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIF8pOgotICAgICAgICAgICAgc3VwZXIoKS5nZXRfZmlsZW5hbWUoXykKLQotICAgIGNsYXNzIFNvdXJjZUxvYWRlcihSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyLCBhYmMuU291cmNlTG9hZGVyKToKLSAgICAgICAgcGFzcwotCi0gICAgY2xhc3MgUHlMb2FkZXIoUmVzb3VyY2VMb2FkZXIsIEluc3BlY3RMb2FkZXIsIGFiYy5QeUxvYWRlcik6Ci0gICAgICAgIGRlZiBzb3VyY2VfcGF0aChzZWxmLCBfKToKLSAgICAgICAgICAgIHN1cGVyKCkuc291cmNlX3BhdGgoXykKLQotICAgIGNsYXNzIFB5UHljTG9hZGVyKFB5TG9hZGVyLCBhYmMuUHlQeWNMb2FkZXIpOgotICAgICAgICBkZWYgYnl0ZWNvZGVfcGF0aChzZWxmLCBfKToKLSAgICAgICAgICAgIHN1cGVyKCkuYnl0ZWNvZGVfcGF0aChfKQotCi0gICAgICAgIGRlZiBzb3VyY2VfbXRpbWUoc2VsZiwgXyk6Ci0gICAgICAgICAgICBzdXBlcigpLnNvdXJjZV9tdGltZShfKQotCi0gICAgICAgIGRlZiB3cml0ZV9ieXRlY29kZShzZWxmLCBfLCBfMik6Ci0gICAgICAgICAgICBzdXBlcigpLndyaXRlX2J5dGVjb2RlKF8sIF8yKQotCi0gICAgZGVmIHJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKHNlbGYsIGlucywgKmFyZ3MpOgotICAgICAgICBmb3IgbWV0aG9kX25hbWUgaW4gYXJnczoKLSAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoaW5zLCBtZXRob2RfbmFtZSkKLSAgICAgICAgICAgIGFyZ19jb3VudCA9IGxlbihpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKG1ldGhvZClbMF0pIC0gMQotICAgICAgICAgICAgYXJncyA9IFsnJ10gKiBhcmdfY291bnQKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtZXRob2QoKmFyZ3MpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1zZyA9ICJ7fS57fSBkaWQgbm90IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IiCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1zZy5mb3JtYXQoaW5zLl9fY2xhc3NfXy5fX25hbWVfXywgbWV0aG9kX25hbWUpKQotCi0gICAgZGVmIHRlc3RfTG9hZGVyKHNlbGYpOgotICAgICAgICBzZWxmLnJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuTG9hZGVyKCksICdsb2FkX21vZHVsZScpCi0KLSAgICAjIFhYWCBtaXNwbGFjZWQ7IHNob3VsZCBiZSBzb21ld2hlcmUgZWxzZQotICAgIGRlZiB0ZXN0X0ZpbmRlcihzZWxmKToKLSAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLkZpbmRlcigpLCAnZmluZF9tb2R1bGUnKQotCi0gICAgZGVmIHRlc3RfUmVzb3VyY2VMb2FkZXIoc2VsZik6Ci0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5SZXNvdXJjZUxvYWRlcigpLCAnbG9hZF9tb2R1bGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfZGF0YScpCi0KLSAgICBkZWYgdGVzdF9JbnNwZWN0TG9hZGVyKHNlbGYpOgotICAgICAgICBzZWxmLnJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuSW5zcGVjdExvYWRlcigpLCAnbG9hZF9tb2R1bGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19wYWNrYWdlJywgJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnKQotCi0gICAgZGVmIHRlc3RfRXhlY3V0aW9uTG9hZGVyKHNlbGYpOgotICAgICAgICBzZWxmLnJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuRXhlY3V0aW9uTG9hZGVyKCksICdsb2FkX21vZHVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3BhY2thZ2UnLCAnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9maWxlbmFtZScpCi0KLSAgICBkZWYgdGVzdF9Tb3VyY2VMb2FkZXIoc2VsZik6Ci0gICAgICAgIGlucyA9IHNlbGYuU291cmNlTG9hZGVyKCkKLSAgICAgICAgIyBSZXF1aXJlZCBhYnN0cmFjdG1ldGhvZHMuCi0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCAnZ2V0X2ZpbGVuYW1lJywgJ2dldF9kYXRhJykKLSAgICAgICAgIyBPcHRpb25hbCBhYnN0cmFjdG1ldGhvZHMuCi0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCdwYXRoX3N0YXRzJywgJ3NldF9kYXRhJykKLQotICAgIGRlZiB0ZXN0X1B5TG9hZGVyKHNlbGYpOgotICAgICAgICBzZWxmLnJhaXNlc19Ob3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuUHlMb2FkZXIoKSwgJ3NvdXJjZV9wYXRoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2RhdGEnLCAnaXNfcGFja2FnZScpCi0KLSAgICBkZWYgdGVzdF9QeVB5Y0xvYWRlcihzZWxmKToKLSAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLlB5UHljTG9hZGVyKCksICdzb3VyY2VfcGF0aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZV9tdGltZScsICdieXRlY29kZV9wYXRoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdGVfYnl0ZWNvZGUnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFB5TG9hZGVyVGVzdHMsIFB5TG9hZGVyQ29tcGF0VGVzdHMsCi0gICAgICAgICAgICAgICAgICAgIFB5TG9hZGVySW50ZXJmYWNlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgIFB5UHljTG9hZGVyVGVzdHMsIFB5UHljTG9hZGVySW50ZXJmYWNlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgIFNraXBXcml0aW5nQnl0ZWNvZGVUZXN0cywgUmVnZW5lcmF0ZWRCeXRlY29kZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICBCYWRCeXRlY29kZUZhaWx1cmVUZXN0cywgTWlzc2luZ1BhdGhzVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgIFNvdXJjZU9ubHlMb2FkZXJUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgU291cmNlTG9hZGVyQnl0ZWNvZGVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgU291cmNlTG9hZGVyR2V0U291cmNlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgIEFic3RyYWN0TWV0aG9kSW1wbFRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDI0MTE3M2YuLmJiNzhkMmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSw5ICsxLDkgQEAKICIiIlRlc3QgY2FzZS1zZW5zaXRpdml0eSAoUEVQIDIzNSkuIiIiCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1pbXBvcnQgaW1wCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKaW5kZXggZDU5OTY5YS4uNjZhZDk2ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTEsMjEgKzEsMjIgQEAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIuYWJjCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIGltcG9ydCBlcnJubwotaW1wb3J0IGltcAogaW1wb3J0IG1hcnNoYWwKIGltcG9ydCBvcwogaW1wb3J0IHB5X2NvbXBpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljLCB1bmxvYWQKIAogCiBjbGFzcyBTaW1wbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI2LDIzICsyNywxMyBAQAogICAgICIiIgogCiAgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGVfQVBJKHNlbGYpOgotICAgICAgICAjIElmIGZ1bGxuYW1lIGlzIG5vdCBzcGVjaWZpZWQgdGhhdCBhc3N1bWUgc2VsZi5uYW1lIGlzIGRlc2lyZWQuCi0gICAgICAgIGNsYXNzIFRlc3Rlck1peGluKGltcG9ydGxpYi5hYmMuTG9hZGVyKToKLSAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6IHJldHVybiBmdWxsbmFtZQotICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6IHJldHVybiAnPG1vZHVsZT4nCisgICAgICAgIGNsYXNzIFRlc3RlcihpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIpOgorICAgICAgICAgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgXyk6IHJldHVybiAnYXR0ciA9IDQyJworICAgICAgICAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgXyk6IHJldHVybiBGYWxzZQogCi0gICAgICAgIGNsYXNzIFRlc3RlcihpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIFRlc3Rlck1peGluKToKLSAgICAgICAgICAgIGRlZiBnZXRfY29kZShzZWxmLCBfKTogcGFzcwotICAgICAgICAgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgXyk6IHBhc3MKLSAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIF8pOiBwYXNzCi0KLSAgICAgICAgbmFtZSA9ICdtb2RfbmFtZScKLSAgICAgICAgbG9hZGVyID0gVGVzdGVyKG5hbWUsICdzb21lX3BhdGgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGxvYWRlci5sb2FkX21vZHVsZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGxvYWRlci5sb2FkX21vZHVsZShOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgotICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKGxvYWRlci5uYW1lICsgJ1hYWCcpCisgICAgICAgIGxvYWRlciA9IFRlc3RlcignYmxhaCcsICdibGFoLnB5JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubG9hZCwgJ2JsYWgnKQorICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoKSAgIyBTaG91bGQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbi4KIAogICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZV9BUEkoc2VsZik6CiAgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNldCB0aGVuIGFzc3VtZSBzZWxmLnBhdGggaXMgZGVzaXJlZC4KQEAgLTEyMiw3ICsxMTMsNyBAQAogICAgICAgICB2YWx1ZSA9ICc8dGVzdD4nCiAgICAgICAgIG5hbWUgPSAnX3RlbXAnCiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIG9yaWdfbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIG9yaWdfbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgZm9yIGF0dHIgaW4gYXR0cmlidXRlczoKICAgICAgICAgICAgICAgICBzZXRhdHRyKG9yaWdfbW9kdWxlLCBhdHRyLCB2YWx1ZSkKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW25hbWVdLCAndycpIGFzIGZpbGU6CkBAIC0xNTQsMTEgKzE0NSwxMSBAQAogICAgICAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIGZpbGVfcGF0aCkKICAgICAgICAgICAgICAgICBtb2QgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfcGF0aCwgbW9kLl9fZmlsZV9fKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcGF0aCksCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3BhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLl9fY2FjaGVkX18pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZV9wYXRoKQotICAgICAgICAgICAgcHljYWNoZSA9IG9zLnBhdGguZGlybmFtZShpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9wYXRoKSkKKyAgICAgICAgICAgIHB5Y2FjaGUgPSBvcy5wYXRoLmRpcm5hbWUoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9wYXRoKSkKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHB5Y2FjaGUpOgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocHljYWNoZSkKIApAQCAtMTY3LDcgKzE1OCw3IEBACiAgICAgICAgICMgdHJ1bmNhdGVkIHJhdGhlciB0aGFuIHJhaXNlIGFuIE92ZXJmbG93RXJyb3IuCiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNvdXJjZSA9IG1hcHBpbmdbJ190ZW1wJ10KLSAgICAgICAgICAgIGNvbXBpbGVkID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSkKKyAgICAgICAgICAgIGNvbXBpbGVkID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSA1IikKICAgICAgICAgICAgIHRyeToKQEAgLTIwNCw3ICsxOTUsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1tuYW1lXSkKICAgICAgICAgaWYgbm90IGRlbF9zb3VyY2U6Ci0gICAgICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pCisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLnVubGluayhtYXBwaW5nW25hbWVdKQogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IG1ha2VfbGVnYWN5X3B5YyhtYXBwaW5nW25hbWVdKQpAQCAtMzMyLDcgKzMyMyw4IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgYnl0ZWNvZGVfZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVjb2RlX2ZpbGUucmVhZCg0KSwgaW1wLmdldF9tYWdpYygpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZWNvZGVfZmlsZS5yZWFkKDQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLnV0aWwuTUFHSUNfTlVNQkVSKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfYmFkX21hZ2ljKHRlc3QpCiAKQEAgLTM4Miw3ICszNzQsNyBAQAogICAgICAgICB6ZXJvcyA9IGInXHgwMFx4MDBceDAwXHgwMCcKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbJ190ZW1wJ10pCi0gICAgICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncitiJykgYXMgYnl0ZWNvZGVfZmlsZToKICAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlLnNlZWsoNCkKICAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlLndyaXRlKHplcm9zKQpAQCAtNDAwLDcgKzM5Miw3IEBACiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgICMgQ3JlYXRlIGJ5dGVjb2RlIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHJlLWNyZWF0ZWQuCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1snX3RlbXAnXSkKLSAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyK2InKSBhcyBieXRlY29kZV9maWxlOgogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX2ZpbGUuc2VlaygwKQogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX2ZpbGUud3JpdGUoYidceDAwXHgwMFx4MDBceDAwJykKQEAgLTQwOCw3ICs0MDAsNyBAQAogICAgICAgICAgICAgb3MuY2htb2QoYnl0ZWNvZGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgSU9FcnJvciEKKyAgICAgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgT1NFcnJvciEKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1snX3RlbXAnXSwgJ190ZW1wJykKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgIyBNYWtlIHdyaXRhYmxlIGZvciBldmVudHVhbCBjbGVhbi11cC4KQEAgLTQ3MywxMyArNDY1LDYgQEAKICAgICAgICAgc2VsZi5fdGVzdF9ub25fY29kZV9tYXJzaGFsKGRlbF9zb3VyY2U9VHJ1ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChTaW1wbGVUZXN0LAotICAgICAgICAgICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3QsCi0gICAgICAgICAgICAgICAgIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3QKLSAgICAgICAgICAgICAgICApCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CmluZGV4IDhlNDk4NjguLjJkNzA2OTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTMsNyArMyw2IEBACiAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBlcnJubwotaW1wb3J0IGltcAogaW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQogaW1wb3J0IHN0YXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCA2YTc4NzkyLi5kMzIwZjhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xLDcgKzEsNiBAQAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWltcG9ydCBpbXAKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKaW5kZXggYWU2NTY2My4uNjNjZDI1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGVycm5vCiBpbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgaW1wCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CmluZGV4IGM2MjBjMzcuLjBkMGJjZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CkBAIC0xLDkgKzEsMjIgQEAKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGFiYwogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQorCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBpbworaW1wb3J0IG1hcnNoYWwKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCitmcm9tIC4gaW1wb3J0IHV0aWwKIAorIyMjIyMgSW5oZXJpdGFuY2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGNsYXNzIEluaGVyaXRhbmNlVGVzdHM6CiAKICAgICAiIiJUZXN0IHRoYXQgdGhlIHNwZWNpZmllZCBjbGFzcyBpcyBhIHN1YmNsYXNzL3N1cGVyY2xhc3Mgb2YgdGhlIGV4cGVjdGVkCkBAIC00MywxMSArNTYsNiBAQAogICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LkZpbGVGaW5kZXJdCiAKIAotY2xhc3MgTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIHN1YmNsYXNzZXMgPSBbYWJjLlB5TG9hZGVyXQotCi0KIGNsYXNzIFJlc291cmNlTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuTG9hZGVyXQpAQCAtNTYsMTQgKzY0LDEzIEBACiBjbGFzcyBJbnNwZWN0TG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuTG9hZGVyXQotICAgIHN1YmNsYXNzZXMgPSBbYWJjLlB5TG9hZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLAorICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwKICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLCBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcl0KIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5JbnNwZWN0TG9hZGVyXQotICAgIHN1YmNsYXNzZXMgPSBbYWJjLlB5TG9hZGVyXQogCiAKIGNsYXNzIEZpbGVMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzgsMjYgKzg1LDc0NSBAQAogICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJdCiAKIAotY2xhc3MgUHlMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorIyMjIyMgRGVmYXVsdCByZXR1cm4gdmFsdWVzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2NsYXNzIE1ldGFQYXRoRmluZGVyU3ViY2xhc3MoYWJjLk1ldGFQYXRoRmluZGVyKToKIAotICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuTG9hZGVyLCBhYmMuUmVzb3VyY2VMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXJdCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCiAKIAotY2xhc3MgUHlQeWNMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuUHlMb2FkZXJdCisgICAgaW5zID0gTWV0YVBhdGhGaW5kZXJTdWJjbGFzcygpCisKKyAgICBkZWYgdGVzdF9maW5kX21vZHVsZShzZWxmKToKKyAgICAgICAgIyBEZWZhdWx0IHNob3VsZCByZXR1cm4gTm9uZS4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbnMuZmluZF9tb2R1bGUoJ3NvbWV0aGluZycsIE5vbmUpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICMgQ2FsbGluZyB0aGUgbWV0aG9kIGlzIGEgbm8tb3AuCisgICAgICAgIHNlbGYuaW5zLmludmFsaWRhdGVfY2FjaGVzKCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIGNsYXNzZXMgPSBbXQotICAgIGZvciBjbGFzc18gaW4gZ2xvYmFscygpLnZhbHVlcygpOgotICAgICAgICBpZiAoaW5zcGVjdC5pc2NsYXNzKGNsYXNzXykgYW5kCi0gICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhjbGFzc18sIHVuaXR0ZXN0LlRlc3RDYXNlKSBhbmQKLSAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKGNsYXNzXywgSW5oZXJpdGFuY2VUZXN0cykpOgotICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQoY2xhc3NfKQotICAgIHJ1bl91bml0dGVzdCgqY2xhc3NlcykKK2NsYXNzIFBhdGhFbnRyeUZpbmRlclN1YmNsYXNzKGFiYy5QYXRoRW50cnlGaW5kZXIpOgorCisgICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuZmluZF9sb2FkZXIoZnVsbG5hbWUpCisKKworY2xhc3MgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBpbnMgPSBQYXRoRW50cnlGaW5kZXJTdWJjbGFzcygpCisKKyAgICBkZWYgdGVzdF9maW5kX2xvYWRlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoTm9uZSwgW10pLCBzZWxmLmlucy5maW5kX2xvYWRlcignc29tZXRoaW5nJykpCisKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgc2VsZi5pbnMuZmluZF9tb2R1bGUoJ3NvbWV0aGluZycpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICMgU2hvdWxkIGJlIGEgbm8tb3AuCisgICAgICAgIHNlbGYuaW5zLmludmFsaWRhdGVfY2FjaGVzKCkKKworCitjbGFzcyBMb2FkZXJTdWJjbGFzcyhhYmMuTG9hZGVyKToKKworICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBzdXBlcigpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisKK2NsYXNzIExvYWRlckRlZmF1bHRzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgaW5zID0gTG9hZGVyU3ViY2xhc3MoKQorCisgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgc2VsZi5pbnMubG9hZF9tb2R1bGUoJ3NvbWV0aGluZycpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcihzZWxmKToKKyAgICAgICAgbW9kID0gdHlwZXMuTW9kdWxlVHlwZSgnYmxhaCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlucy5tb2R1bGVfcmVwcihtb2QpCisgICAgICAgIG9yaWdpbmFsX3JlcHIgPSByZXByKG1vZCkKKyAgICAgICAgbW9kLl9fbG9hZGVyX18gPSBzZWxmLmlucworICAgICAgICAjIFNob3VsZCBzdGlsbCByZXR1cm4gYSBwcm9wZXIgcmVwci4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobW9kKSkKKworCitjbGFzcyBSZXNvdXJjZUxvYWRlclN1YmNsYXNzKExvYWRlclN1YmNsYXNzLCBhYmMuUmVzb3VyY2VMb2FkZXIpOgorCisgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZGF0YShwYXRoKQorCisKK2NsYXNzIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBpbnMgPSBSZXNvdXJjZUxvYWRlclN1YmNsYXNzKCkKKworICAgIGRlZiB0ZXN0X2dldF9kYXRhKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5pbnMuZ2V0X2RhdGEoJy9zb21lL3BhdGgnKQorCisKK2NsYXNzIEluc3BlY3RMb2FkZXJTdWJjbGFzcyhMb2FkZXJTdWJjbGFzcywgYWJjLkluc3BlY3RMb2FkZXIpOgorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5pc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfc291cmNlKGZ1bGxuYW1lKQorCisKK2NsYXNzIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGlucyA9IEluc3BlY3RMb2FkZXJTdWJjbGFzcygpCisKKyAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaW5zLmlzX3BhY2thZ2UoJ2JsYWgnKQorCisgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlucy5nZXRfc291cmNlKCdibGFoJykKKworCitjbGFzcyBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcyhJbnNwZWN0TG9hZGVyU3ViY2xhc3MsIGFiYy5FeGVjdXRpb25Mb2FkZXIpOgorCisgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKworCitjbGFzcyBFeGVjdXRpb25Mb2FkZXJEZWZhdWx0c1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGlucyA9IEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzKCkKKworICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlucy5nZXRfZmlsZW5hbWUoJ2JsYWgnKQorCisjIyMjIyBMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworY2xhc3MgTG9hZGVyQ29uY3JldGVNZXRob2RUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRycyhzZWxmKToKKyAgICAgICAgbG9hZGVyID0gTG9hZGVyU3ViY2xhc3MoKQorICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdibGFoJykKKyAgICAgICAgbG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQorCisKKyMjIyMjIEluc3BlY3RMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitjbGFzcyBJbnNwZWN0TG9hZGVyU291cmNlVG9Db2RlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNvdXJjZV90b19tb2R1bGUoc2VsZiwgZGF0YSwgcGF0aD1Ob25lKToKKyAgICAgICAgIiIiSGVscCB3aXRoIHNvdXJjZV90b19jb2RlKCkgdGVzdHMuIiIiCisgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ2JsYWgnKQorICAgICAgICBsb2FkZXIgPSBJbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICBjb2RlID0gbG9hZGVyLnNvdXJjZV90b19jb2RlKGRhdGEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb2RlID0gbG9hZGVyLnNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGgpCisgICAgICAgIGV4ZWMoY29kZSwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfdG9fY29kZV9zb3VyY2Uoc2VsZik6CisgICAgICAgICMgU2luY2UgY29tcGlsZSgpIGNhbiBoYW5kbGUgc3RyaW5ncywgc28gc2hvdWxkIHNvdXJjZV90b19jb2RlKCkuCisgICAgICAgIHNvdXJjZSA9ICdhdHRyID0gNDInCisgICAgICAgIG1vZHVsZSA9IHNlbGYuc291cmNlX3RvX21vZHVsZShzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2F0dHInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuYXR0ciwgNDIpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfdG9fY29kZV9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBTaW5jZSBjb21waWxlKCkgY2FuIGhhbmRsZSBieXRlcywgc28gc2hvdWxkIHNvdXJjZV90b19jb2RlKCkuCisgICAgICAgIHNvdXJjZSA9IGInYXR0ciA9IDQyJworICAgICAgICBtb2R1bGUgPSBzZWxmLnNvdXJjZV90b19tb2R1bGUoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdhdHRyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmF0dHIsIDQyKQorCisgICAgZGVmIHRlc3Rfc291cmNlX3RvX2NvZGVfcGF0aChzZWxmKToKKyAgICAgICAgIyBTcGVjaWZ5aW5nIGEgcGF0aCBzaG91bGQgc2V0IGl0IGZvciB0aGUgY29kZSBvYmplY3QuCisgICAgICAgIHBhdGggPSAncGF0aC90by9zb21ld2hlcmUnCisgICAgICAgIGxvYWRlciA9IEluc3BlY3RMb2FkZXJTdWJjbGFzcygpCisgICAgICAgIGNvZGUgPSBsb2FkZXIuc291cmNlX3RvX2NvZGUoJycsIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgcGF0aCkKKworICAgIGRlZiB0ZXN0X3NvdXJjZV90b19jb2RlX25vX3BhdGgoc2VsZik6CisgICAgICAgICMgTm90IHNldHRpbmcgYSBwYXRoIHNob3VsZCBzdGlsbCB3b3JrIGFuZCBiZSBzZXQgdG8gPHN0cmluZz4gc2luY2UgdGhhdAorICAgICAgICAjIGlzIGEgcHJlLWV4aXN0aW5nIHByYWN0aWNlIGFzIGEgZGVmYXVsdCB0byBjb21waWxlKCkuCisgICAgICAgIGxvYWRlciA9IEluc3BlY3RMb2FkZXJTdWJjbGFzcygpCisgICAgICAgIGNvZGUgPSBsb2FkZXIuc291cmNlX3RvX2NvZGUoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJzxzdHJpbmc+JykKKworCitjbGFzcyBJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc3VjY2Vzcy4KKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZSgnYmxhaCcpCisgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3QoSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnZ2V0X3NvdXJjZScpIGFzIG1vY2tlZDoKKyAgICAgICAgICAgIG1vY2tlZC5yZXR1cm5fdmFsdWUgPSAnYXR0ciA9IDQyJworICAgICAgICAgICAgbG9hZGVyID0gSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKKyAgICAgICAgICAgIGNvZGUgPSBsb2FkZXIuZ2V0X2NvZGUoJ2JsYWgnKQorICAgICAgICBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuYXR0ciwgNDIpCisKKyAgICBkZWYgdGVzdF9nZXRfY29kZV9zb3VyY2VfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIyBJZiBnZXRfc291cmNlKCkgaXMgTm9uZSB0aGVuIHRoaXMgc2hvdWxkIGJlIE5vbmUuCisgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3QoSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnZ2V0X3NvdXJjZScpIGFzIG1vY2tlZDoKKyAgICAgICAgICAgIG1vY2tlZC5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgICAgICAgICBsb2FkZXIgPSBJbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQorICAgICAgICAgICAgY29kZSA9IGxvYWRlci5nZXRfY29kZSgnYmxhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvZGUpCisKKyAgICBkZWYgdGVzdF9nZXRfY29kZV9zb3VyY2Vfbm90X2ZvdW5kKHNlbGYpOgorICAgICAgICAjIElmIHRoZXJlIGlzIG5vIHNvdXJjZSB0aGVuIHRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgorICAgICAgICBsb2FkZXIgPSBJbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5nZXRfY29kZSgnYmxhaCcpCisKKworY2xhc3MgSW5zcGVjdExvYWRlckluaXRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1vY2tfaXNfcGFja2FnZShyZXR1cm5fdmFsdWUpOgorICAgICAgICByZXR1cm4gbW9jay5wYXRjaC5vYmplY3QoSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnaXNfcGFja2FnZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9cmV0dXJuX3ZhbHVlKQorCisgICAgZGVmIGluaXRfbW9kdWxlX2F0dHJzKHNlbGYsIG5hbWUpOgorICAgICAgICBsb2FkZXIgPSBJbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQorICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCisgICAgICAgIGxvYWRlci5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBJZiBhIHBhY2thZ2UsIHRoZW4gX19wYWNrYWdlX18gPT0gX19uYW1lX18sIF9fcGF0aF9fID09IFtdCisgICAgICAgIHdpdGggc2VsZi5tb2NrX2lzX3BhY2thZ2UoVHJ1ZSk6CisgICAgICAgICAgICBuYW1lID0gJ2JsYWgnCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXRfbW9kdWxlX2F0dHJzKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbXSkKKworICAgIGRlZiB0ZXN0X3RvcGxldmVsKHNlbGYpOgorICAgICAgICAjIElmIGEgbW9kdWxlIGlzIHRvcC1sZXZlbCwgX19wYWNrYWdlX18gPT0gJycKKyAgICAgICAgd2l0aCBzZWxmLm1vY2tfaXNfcGFja2FnZShGYWxzZSk6CisgICAgICAgICAgICBuYW1lID0gJ2JsYWgnCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXRfbW9kdWxlX2F0dHJzKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgJycpCisKKyAgICBkZWYgdGVzdF9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgaXMgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UgdGhlbiBzZXQgX19wYWNrYWdlX18gdG8gdGhlCisgICAgICAgICMgcGFja2FnZSBuYW1lLgorICAgICAgICB3aXRoIHNlbGYubW9ja19pc19wYWNrYWdlKEZhbHNlKToKKyAgICAgICAgICAgIG5hbWUgPSAncGtnLm1vZCcKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdF9tb2R1bGVfYXR0cnMobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2VfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgaXNfcGFja2FnZSgpIHJhaXNlcyBJbXBvcnRFcnJvciwgX19wYWNrYWdlX18gc2hvdWxkIGJlIE5vbmUgYW5kCisgICAgICAgICMgX19wYXRoX18gc2hvdWxkIG5vdCBiZSBzZXQuCisgICAgICAgIHdpdGggc2VsZi5tb2NrX2lzX3BhY2thZ2UoRmFsc2UpIGFzIG1vY2tlZF9tZXRob2Q6CisgICAgICAgICAgICBtb2NrZWRfbWV0aG9kLnNpZGVfZWZmZWN0ID0gSW1wb3J0RXJyb3IKKyAgICAgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0X21vZHVsZV9hdHRycyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9kdWxlLl9fcGFja2FnZV9fKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJykpCisKKworY2xhc3MgSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IEluc3BlY3RMb2FkZXIubG9hZF9tb2R1bGUoKS4iIiIKKworICAgIG1vZHVsZV9uYW1lID0gJ2JsYWgnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5sb2FkKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubG9hZCwgc2VsZi5tb2R1bGVfbmFtZSkKKworICAgIGRlZiBtb2NrX2dldF9jb2RlKHNlbGYpOgorICAgICAgICByZXR1cm4gbW9jay5wYXRjaC5vYmplY3QoSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnZ2V0X2NvZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvZGVfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgZ2V0X2NvZGUoKSByYWlzZXMgSW1wb3J0RXJyb3IsIGl0IHNob3VsZCBwcm9wYWdhdGUuCisgICAgICAgIHdpdGggc2VsZi5tb2NrX2dldF9jb2RlKCkgYXMgbW9ja2VkX2dldF9jb2RlOgorICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnNpZGVfZWZmZWN0ID0gSW1wb3J0RXJyb3IKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgIGxvYWRlciA9IEluc3BlY3RMb2FkZXJTdWJjbGFzcygpCisgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9nZXRfY29kZV9Ob25lKHNlbGYpOgorICAgICAgICAjIElmIGdldF9jb2RlKCkgcmV0dXJucyBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KKyAgICAgICAgd2l0aCBzZWxmLm1vY2tfZ2V0X2NvZGUoKSBhcyBtb2NrZWRfZ2V0X2NvZGU6CisgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKKyAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXR1cm5lZChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9hZGVkIG1vZHVsZSBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICAgIGNvZGUgPSBjb21waWxlKCdhdHRyID0gNDInLCAnPHN0cmluZz4nLCAnZXhlYycpCisgICAgICAgIHdpdGggc2VsZi5tb2NrX2dldF9jb2RlKCkgYXMgbW9ja2VkX2dldF9jb2RlOgorICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IGNvZGUKKyAgICAgICAgICAgIGxvYWRlciA9IEluc3BlY3RMb2FkZXJTdWJjbGFzcygpCisgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1tzZWxmLm1vZHVsZV9uYW1lXSkKKworCisjIyMjIyBFeGVjdXRpb25Mb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworY2xhc3MgRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBtb2NrX21ldGhvZHMoc2VsZiwgKiwgZ2V0X3NvdXJjZT1GYWxzZSwgZ2V0X2ZpbGVuYW1lPUZhbHNlKToKKyAgICAgICAgc291cmNlX21vY2tfY29udGV4dCwgZmlsZW5hbWVfbW9ja19jb250ZXh0ID0gTm9uZSwgTm9uZQorICAgICAgICBpZiBnZXRfc291cmNlOgorICAgICAgICAgICAgc291cmNlX21vY2tfY29udGV4dCA9IG1vY2sucGF0Y2gub2JqZWN0KEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfc291cmNlJykKKyAgICAgICAgaWYgZ2V0X2ZpbGVuYW1lOgorICAgICAgICAgICAgZmlsZW5hbWVfbW9ja19jb250ZXh0ID0gbW9jay5wYXRjaC5vYmplY3QoRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2ZpbGVuYW1lJykKKyAgICAgICAgcmV0dXJuIHNvdXJjZV9tb2NrX2NvbnRleHQsIGZpbGVuYW1lX21vY2tfY29udGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2NvZGUoc2VsZik6CisgICAgICAgIHBhdGggPSAnYmxhaC5weScKKyAgICAgICAgc291cmNlX21vY2tfY29udGV4dCwgZmlsZW5hbWVfbW9ja19jb250ZXh0ID0gc2VsZi5tb2NrX21ldGhvZHMoCisgICAgICAgICAgICAgICAgZ2V0X3NvdXJjZT1UcnVlLCBnZXRfZmlsZW5hbWU9VHJ1ZSkKKyAgICAgICAgd2l0aCBzb3VyY2VfbW9ja19jb250ZXh0IGFzIHNvdXJjZV9tb2NrLCBmaWxlbmFtZV9tb2NrX2NvbnRleHQgYXMgbmFtZV9tb2NrOgorICAgICAgICAgICAgc291cmNlX21vY2sucmV0dXJuX3ZhbHVlID0gJ2F0dHIgPSA0MicKKyAgICAgICAgICAgIG5hbWVfbW9jay5yZXR1cm5fdmFsdWUgPSBwYXRoCisgICAgICAgICAgICBsb2FkZXIgPSBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcygpCisgICAgICAgICAgICBjb2RlID0gbG9hZGVyLmdldF9jb2RlKCdibGFoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCBwYXRoKQorICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdibGFoJykKKyAgICAgICAgZXhlYyhjb2RlLCBtb2R1bGUuX19kaWN0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmF0dHIsIDQyKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvZGVfc291cmNlX2lzX05vbmUoc2VsZik6CisgICAgICAgICMgSWYgZ2V0X3NvdXJjZSgpIGlzIE5vbmUgdGhlbiB0aGlzIHNob3VsZCBiZSBOb25lLgorICAgICAgICBzb3VyY2VfbW9ja19jb250ZXh0LCBfID0gc2VsZi5tb2NrX21ldGhvZHMoZ2V0X3NvdXJjZT1UcnVlKQorICAgICAgICB3aXRoIHNvdXJjZV9tb2NrX2NvbnRleHQgYXMgbW9ja2VkOgorICAgICAgICAgICAgbW9ja2VkLnJldHVybl92YWx1ZSA9IE5vbmUKKyAgICAgICAgICAgIGxvYWRlciA9IEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzKCkKKyAgICAgICAgICAgIGNvZGUgPSBsb2FkZXIuZ2V0X2NvZGUoJ2JsYWgnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb2RlKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvZGVfc291cmNlX25vdF9mb3VuZChzZWxmKToKKyAgICAgICAgIyBJZiB0aGVyZSBpcyBubyBzb3VyY2UgdGhlbiB0aGVyZSBpcyBubyBjb2RlIG9iamVjdC4KKyAgICAgICAgbG9hZGVyID0gRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5nZXRfY29kZSgnYmxhaCcpCisKKyAgICBkZWYgdGVzdF9nZXRfY29kZV9ub19wYXRoKHNlbGYpOgorICAgICAgICAjIElmIGdldF9maWxlbmFtZSgpIHJhaXNlcyBJbXBvcnRFcnJvciB0aGVuIHNpbXBseSBza2lwIHNldHRpbmcgdGhlIHBhdGgKKyAgICAgICAgIyBvbiB0aGUgY29kZSBvYmplY3QuCisgICAgICAgIHNvdXJjZV9tb2NrX2NvbnRleHQsIGZpbGVuYW1lX21vY2tfY29udGV4dCA9IHNlbGYubW9ja19tZXRob2RzKAorICAgICAgICAgICAgICAgIGdldF9zb3VyY2U9VHJ1ZSwgZ2V0X2ZpbGVuYW1lPVRydWUpCisgICAgICAgIHdpdGggc291cmNlX21vY2tfY29udGV4dCBhcyBzb3VyY2VfbW9jaywgZmlsZW5hbWVfbW9ja19jb250ZXh0IGFzIG5hbWVfbW9jazoKKyAgICAgICAgICAgIHNvdXJjZV9tb2NrLnJldHVybl92YWx1ZSA9ICdhdHRyID0gNDInCisgICAgICAgICAgICBuYW1lX21vY2suc2lkZV9lZmZlY3QgPSBJbXBvcnRFcnJvcgorICAgICAgICAgICAgbG9hZGVyID0gRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MoKQorICAgICAgICAgICAgY29kZSA9IGxvYWRlci5nZXRfY29kZSgnYmxhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJzxzdHJpbmc+JykKKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZSgnYmxhaCcpCisgICAgICAgIGV4ZWMoY29kZSwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5hdHRyLCA0MikKKworCitjbGFzcyBFeGVjdXRpb25Mb2FkZXJJbml0TW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIG1vY2tfbWV0aG9kcyhpc19wYWNrYWdlLCBmaWxlbmFtZSk6CisgICAgICAgIGlzX3BhY2thZ2VfbWFuYWdlciA9IEluc3BlY3RMb2FkZXJJbml0TW9kdWxlVGVzdHMubW9ja19pc19wYWNrYWdlKGlzX3BhY2thZ2UpCisgICAgICAgIGdldF9maWxlbmFtZV9tYW5hZ2VyID0gbW9jay5wYXRjaC5vYmplY3QoRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MsCisgICAgICAgICAgICAgICAgJ2dldF9maWxlbmFtZScsIHJldHVybl92YWx1ZT1maWxlbmFtZSkKKyAgICAgICAgd2l0aCBpc19wYWNrYWdlX21hbmFnZXIgYXMgbW9ja19pc19wYWNrYWdlOgorICAgICAgICAgICAgd2l0aCBnZXRfZmlsZW5hbWVfbWFuYWdlciBhcyBtb2NrX2dldF9maWxlbmFtZToKKyAgICAgICAgICAgICAgICB5aWVsZCB7J2lzX3BhY2thZ2UnOiBtb2NrX2lzX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICdnZXRfZmlsZW5hbWUnOiBtb2NrX2dldF9maWxlbmFtZX0KKworICAgIGRlZiB0ZXN0X3RvcGxldmVsKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSBfX2xvYWRlcl9fLCBfX2ZpbGVfXywgYW5kIF9fcGFja2FnZV9fOyBubyBfX3BhdGhfXy4KKyAgICAgICAgbmFtZSA9ICdibGFoJworICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdzb21lJywgJ3BhdGgnLCAne30ucHknLmZvcm1hdChuYW1lKSkKKyAgICAgICAgd2l0aCBzZWxmLm1vY2tfbWV0aG9kcyhGYWxzZSwgcGF0aCk6CisgICAgICAgICAgICBsb2FkZXIgPSBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcygpCisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCisgICAgICAgICAgICBsb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQorCisgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgX19sb2FkZXJfXywgX19maWxlX18sIF9fcGFja2FnZV9fLCBhbmQgX19wYXRoX18uCisgICAgICAgIG5hbWUgPSAncGtnJworICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdzb21lJywgJ3BrZycsICdfX2luaXRfXy5weScpCisgICAgICAgIHdpdGggc2VsZi5tb2NrX21ldGhvZHMoVHJ1ZSwgcGF0aCk6CisgICAgICAgICAgICBsb2FkZXIgPSBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcygpCisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCisgICAgICAgICAgICBsb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgJ3BrZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbb3MucGF0aC5kaXJuYW1lKHBhdGgpXSkKKworICAgIGRlZiB0ZXN0X3N1Ym1vZHVsZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgX19wYWNrYWdlX18gYW5kIG5vdCBfX3BhdGhfXzsgdGVzdF90b3BsZXZlbCgpIHRha2VzIGNhcmUgb2YKKyAgICAgICAgIyBvdGhlciBhdHRyaWJ1dGVzLgorICAgICAgICBuYW1lID0gJ3BrZy5zdWJtb2R1bGUnCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ3NvbWUnLCAncGtnJywgJ3N1Ym1vZHVsZS5weScpCisgICAgICAgIHdpdGggc2VsZi5tb2NrX21ldGhvZHMoRmFsc2UsIHBhdGgpOgorICAgICAgICAgICAgbG9hZGVyID0gRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MoKQorICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQorICAgICAgICAgICAgbG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sICdwa2cnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2ZpbGVfXywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJykpCisKKyAgICBkZWYgdGVzdF9nZXRfZmlsZW5hbWVfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgZ2V0X2ZpbGVuYW1lKCkgcmFpc2VzIEltcG9ydEVycm9yLCBkb24ndCBzZXQgX19maWxlX18uCisgICAgICAgIG5hbWUgPSAnYmxhaCcKKyAgICAgICAgcGF0aCA9ICdibGFoLnB5JworICAgICAgICB3aXRoIHNlbGYubW9ja19tZXRob2RzKEZhbHNlLCBwYXRoKSBhcyBtb2NrZWRfbWV0aG9kczoKKyAgICAgICAgICAgIG1vY2tlZF9tZXRob2RzWydnZXRfZmlsZW5hbWUnXS5zaWRlX2VmZmVjdCA9IEltcG9ydEVycm9yCisgICAgICAgICAgICBsb2FkZXIgPSBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcygpCisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCisgICAgICAgICAgICBsb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKKworCisjIyMjIyBTb3VyY2VMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworY2xhc3MgU291cmNlT25seUxvYWRlck1vY2soYWJjLlNvdXJjZUxvYWRlcik6CisKKyAgICAjIEdsb2JhbHMgdGhhdCBzaG91bGQgYmUgZGVmaW5lZCBmb3IgYWxsIG1vZHVsZXMuCisgICAgc291cmNlID0gKGIiXyA9ICc6Oicuam9pbihbX19uYW1lX18sIF9fZmlsZV9fLCBfX2NhY2hlZF9fLCBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICBiInJlcHIoX19sb2FkZXJfXyldKSIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgcGF0aCAhPSBzZWxmLnBhdGg6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgIHJldHVybiBzZWxmLnNvdXJjZQorCisgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICByZXR1cm4gJzxtb2R1bGU+JworCisKK2NsYXNzIFNvdXJjZUxvYWRlck1vY2soU291cmNlT25seUxvYWRlck1vY2spOgorCisgICAgc291cmNlX210aW1lID0gMQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1hZ2ljPWltcG9ydGxpYi51dGlsLk1BR0lDX05VTUJFUik6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGF0aCkKKyAgICAgICAgc2VsZi5ieXRlY29kZV9wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5wYXRoKQorICAgICAgICBzZWxmLnNvdXJjZV9zaXplID0gbGVuKHNlbGYuc291cmNlKQorICAgICAgICBkYXRhID0gYnl0ZWFycmF5KG1hZ2ljKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9tdGltZSkpCisgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYuc291cmNlX3NpemUpKQorICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc2VsZi5zb3VyY2UsIHNlbGYucGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCisgICAgICAgIHNlbGYuYnl0ZWNvZGUgPSBieXRlcyhkYXRhKQorICAgICAgICBzZWxmLndyaXR0ZW4gPSB7fQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoID09IHNlbGYucGF0aDoKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9kYXRhKHBhdGgpCisgICAgICAgIGVsaWYgcGF0aCA9PSBzZWxmLmJ5dGVjb2RlX3BhdGg6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ieXRlY29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGggIT0gc2VsZi5wYXRoOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYuc291cmNlX210aW1lLCAnc2l6ZSc6IHNlbGYuc291cmNlX3NpemV9CisKKyAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CisgICAgICAgIHNlbGYud3JpdHRlbltwYXRoXSA9IGJ5dGVzKGRhdGEpCisgICAgICAgIHJldHVybiBwYXRoID09IHNlbGYuYnl0ZWNvZGVfcGF0aAorCisKK2NsYXNzIFNvdXJjZUxvYWRlclRlc3RIYXJuZXNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmLCAqLCBpc19wYWNrYWdlPVRydWUsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5wYWNrYWdlID0gJ3BrZycKKyAgICAgICAgaWYgaXNfcGFja2FnZToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2UsICdfX2luaXRfXy5weScpCisgICAgICAgICAgICBzZWxmLm5hbWUgPSBzZWxmLnBhY2thZ2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gJ21vZCcKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2UsICcuJy5qb2luKFsnbW9kJywgJ3B5J10pKQorICAgICAgICAgICAgc2VsZi5uYW1lID0gJy4nLmpvaW4oW3NlbGYucGFja2FnZSwgbW9kdWxlX25hbWVdKQorICAgICAgICBzZWxmLmNhY2hlZCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBzZWxmLmxvYWRlcl9tb2NrKHNlbGYucGF0aCwgKiprd2FyZ3MpCisKKyAgICBkZWYgdmVyaWZ5X21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc2VsZi5uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2ZpbGVfXywgc2VsZi5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLCBzZWxmLmNhY2hlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIHNlbGYucGFja2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19sb2FkZXJfXywgc2VsZi5sb2FkZXIpCisgICAgICAgIHZhbHVlcyA9IG1vZHVsZS5fLnNwbGl0KCc6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzWzBdLCBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzWzFdLCBzZWxmLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzWzJdLCBzZWxmLmNhY2hlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNbM10sIHNlbGYucGFja2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNbNF0sIHJlcHIoc2VsZi5sb2FkZXIpKQorCisgICAgZGVmIHZlcmlmeV9jb2RlKHNlbGYsIGNvZGVfb2JqZWN0KToKKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShzZWxmLm5hbWUpCisgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IHNlbGYucGF0aAorICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IHNlbGYuY2FjaGVkCisgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNlbGYucGFja2FnZQorICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYubG9hZGVyCisgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtdCisgICAgICAgIGV4ZWMoY29kZV9vYmplY3QsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKKworCitjbGFzcyBTb3VyY2VPbmx5TG9hZGVyVGVzdHMoU291cmNlTG9hZGVyVGVzdEhhcm5lc3MpOgorCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlciBmb3Igc291cmNlLW9ubHkgbG9hZGluZy4KKworICAgIFJlbG9hZCB0ZXN0aW5nIGlzIHN1YnN1bWVkIGJ5IHRoZSB0ZXN0cyBmb3IKKyAgICBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlci4KKworICAgICIiIgorCisgICAgbG9hZGVyX21vY2sgPSBTb3VyY2VPbmx5TG9hZGVyTW9jaworCisgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgdGhlIHNvdXJjZSBjb2RlIGlzIHJldHVybmVkIGFzIGEgc3RyaW5nLgorICAgICAgICAjIElmIGFuIE9TRXJyb3IgaXMgcmFpc2VkIGJ5IGdldF9kYXRhIHRoZW4gcmFpc2UgSW1wb3J0RXJyb3IuCisgICAgICAgIGV4cGVjdGVkX3NvdXJjZSA9IHNlbGYubG9hZGVyLnNvdXJjZS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRlci5nZXRfc291cmNlKHNlbGYubmFtZSksIGV4cGVjdGVkX3NvdXJjZSkKKyAgICAgICAgZGVmIHJhaXNlX09TRXJyb3IocGF0aCk6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yCisgICAgICAgIHNlbGYubG9hZGVyLmdldF9kYXRhID0gcmFpc2VfT1NFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZGVyLmdldF9zb3VyY2Uoc2VsZi5uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBzZWxmLm5hbWUpCisKKyAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFByb3Blcmx5IGRldGVjdCB3aGVuIGxvYWRpbmcgYSBwYWNrYWdlLgorICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSArICcuX19pbml0X18nKSkKKworICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSB0aGUgY29kZSBvYmplY3QgaXMgY3JlYXRlZC4KKyAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCisgICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfdG9fY29kZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgdGhlIGNvbXBpbGVkIGNvZGUgb2JqZWN0LgorICAgICAgICBjb2RlID0gc2VsZi5sb2FkZXIuc291cmNlX3RvX2NvZGUoc2VsZi5sb2FkZXIuc291cmNlLCBzZWxmLnBhdGgpCisgICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZSkKKworICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgorICAgICAgICAjIExvYWRpbmcgYSBtb2R1bGUgc2hvdWxkIHNldCBfX25hbWVfXywgX19sb2FkZXJfXywgX19wYWNrYWdlX18sCisgICAgICAgICMgX19wYXRoX18gKGZvciBwYWNrYWdlcyksIF9fZmlsZV9fLCBhbmQgX19jYWNoZWRfXy4KKyAgICAgICAgIyBUaGUgbW9kdWxlIHNob3VsZCBhbHNvIGJlIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQorICAgICAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbb3MucGF0aC5kaXJuYW1lKHNlbGYucGF0aCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm5hbWUsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfcGFja2FnZV9zZXR0aW5ncyhzZWxmKToKKyAgICAgICAgIyBfX3BhY2thZ2VfXyBuZWVkcyB0byBiZSBzZXQsIHdoaWxlIF9fcGF0aF9fIGlzIHNldCBvbiBpZiB0aGUgbW9kdWxlCisgICAgICAgICMgaXMgYSBwYWNrYWdlLgorICAgICAgICAjIFRlc3RpbmcgdGhlIHZhbHVlcyBmb3IgYSBwYWNrYWdlIGFyZSBjb3ZlcmVkIGJ5IHRlc3RfbG9hZF9tb2R1bGUuCisgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1GYWxzZSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5X21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKKworICAgIGRlZiB0ZXN0X2dldF9zb3VyY2VfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgU291cmNlIGlzIGNvbnNpZGVyZWQgZW5jb2RlZCBpbiBVVEYtOCBieSBkZWZhdWx0IHVubGVzcyBvdGhlcndpc2UKKyAgICAgICAgIyBzcGVjaWZpZWQgYnkgYW4gZW5jb2RpbmcgbGluZS4KKyAgICAgICAgc291cmNlID0gIl8gPSAnw7wnIgorICAgICAgICBzZWxmLmxvYWRlci5zb3VyY2UgPSBzb3VyY2UuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHJldHVybmVkX3NvdXJjZSA9IHNlbGYubG9hZGVyLmdldF9zb3VyY2Uoc2VsZi5uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmVkX3NvdXJjZSwgc291cmNlKQorICAgICAgICBzb3VyY2UgPSAiIyBjb2Rpbmc6IGxhdGluLTFcbl8gPSDDvCIKKyAgICAgICAgc2VsZi5sb2FkZXIuc291cmNlID0gc291cmNlLmVuY29kZSgnbGF0aW4tMScpCisgICAgICAgIHJldHVybmVkX3NvdXJjZSA9IHNlbGYubG9hZGVyLmdldF9zb3VyY2Uoc2VsZi5uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmVkX3NvdXJjZSwgc291cmNlKQorCisKK0B1bml0dGVzdC5za2lwSWYoc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUsICJzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyB0cnVlIikKK2NsYXNzIFNvdXJjZUxvYWRlckJ5dGVjb2RlVGVzdHMoU291cmNlTG9hZGVyVGVzdEhhcm5lc3MpOgorCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcidzIHVzZSBvZiBieXRlY29kZS4KKworICAgIFNvdXJjZS1vbmx5IHRlc3RpbmcgaGFuZGxlZCBieSBTb3VyY2VPbmx5TG9hZGVyVGVzdHMuCisKKyAgICAiIiIKKworICAgIGxvYWRlcl9tb2NrID0gU291cmNlTG9hZGVyTW9jaworCisgICAgZGVmIHZlcmlmeV9jb2RlKHNlbGYsIGNvZGVfb2JqZWN0LCAqLCBieXRlY29kZV93cml0dGVuPUZhbHNlKToKKyAgICAgICAgc3VwZXIoKS52ZXJpZnlfY29kZShjb2RlX29iamVjdCkKKyAgICAgICAgaWYgYnl0ZWNvZGVfd3JpdHRlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5jYWNoZWQsIHNlbGYubG9hZGVyLndyaXR0ZW4pCisgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcG9ydGxpYi51dGlsLk1BR0lDX05VTUJFUikKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2Vfc2l6ZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIud3JpdHRlbltzZWxmLmNhY2hlZF0sIGJ5dGVzKGRhdGEpKQorCisgICAgZGVmIHRlc3RfY29kZV93aXRoX2V2ZXJ5dGhpbmcoc2VsZik6CisgICAgICAgICMgV2hlbiBldmVyeXRoaW5nIHNob3VsZCB3b3JrLgorICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYubG9hZGVyLmdldF9jb2RlKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi52ZXJpZnlfY29kZShjb2RlX29iamVjdCkKKworICAgIGRlZiB0ZXN0X25vX2J5dGVjb2RlKHNlbGYpOgorICAgICAgICAjIElmIG5vIGJ5dGVjb2RlIGV4aXN0cyB0aGVuIG1vdmUgb24gdG8gdGhlIHNvdXJjZS4KKyAgICAgICAgc2VsZi5sb2FkZXIuYnl0ZWNvZGVfcGF0aCA9ICI8ZG9lcyBub3QgZXhpc3Q+IgorICAgICAgICAjIFNhbml0eSBjaGVjaworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpOgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKKyAgICAgICAgICAgIHNlbGYubG9hZGVyLmdldF9kYXRhKGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5sb2FkZXIuZ2V0X2NvZGUoc2VsZi5uYW1lKQorICAgICAgICBzZWxmLnZlcmlmeV9jb2RlKGNvZGVfb2JqZWN0LCBieXRlY29kZV93cml0dGVuPVRydWUpCisKKyAgICBkZWYgdGVzdF9jb2RlX2JhZF90aW1lc3RhbXAoc2VsZik6CisgICAgICAgICMgQnl0ZWNvZGUgaXMgb25seSB1c2VkIHdoZW4gdGhlIHRpbWVzdGFtcCBtYXRjaGVzIHRoZSBzb3VyY2UgRVhBQ1RMWS4KKyAgICAgICAgZm9yIHNvdXJjZV9tdGltZSBpbiAoMCwgMik6CisgICAgICAgICAgICBhc3NlcnQgc291cmNlX210aW1lICE9IHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZQorICAgICAgICAgICAgb3JpZ2luYWwgPSBzZWxmLmxvYWRlci5zb3VyY2VfbXRpbWUKKyAgICAgICAgICAgIHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSA9IHNvdXJjZV9tdGltZQorICAgICAgICAgICAgIyBJZiBieXRlY29kZSBpcyB1c2VkIHRoZW4gRU9GRXJyb3Igd291bGQgYmUgcmFpc2VkIGJ5IG1hcnNoYWwuCisgICAgICAgICAgICBzZWxmLmxvYWRlci5ieXRlY29kZSA9IHNlbGYubG9hZGVyLmJ5dGVjb2RlWzg6XQorICAgICAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCisgICAgICAgICAgICBzZWxmLnZlcmlmeV9jb2RlKGNvZGVfb2JqZWN0LCBieXRlY29kZV93cml0dGVuPVRydWUpCisgICAgICAgICAgICBzZWxmLmxvYWRlci5zb3VyY2VfbXRpbWUgPSBvcmlnaW5hbAorCisgICAgZGVmIHRlc3RfY29kZV9iYWRfbWFnaWMoc2VsZik6CisgICAgICAgICMgU2tpcCBvdmVyIGJ5dGVjb2RlIHdpdGggYSBiYWQgbWFnaWMgbnVtYmVyLgorICAgICAgICBzZWxmLnNldFVwKG1hZ2ljPWInMDAwMCcpCisgICAgICAgICMgSWYgYnl0ZWNvZGUgaXMgdXNlZCB0aGVuIEVPRkVycm9yIHdvdWxkIGJlIHJhaXNlZCBieSBtYXJzaGFsLgorICAgICAgICBzZWxmLmxvYWRlci5ieXRlY29kZSA9IHNlbGYubG9hZGVyLmJ5dGVjb2RlWzg6XQorICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYubG9hZGVyLmdldF9jb2RlKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi52ZXJpZnlfY29kZShjb2RlX29iamVjdCwgYnl0ZWNvZGVfd3JpdHRlbj1UcnVlKQorCisgICAgZGVmIHRlc3RfZG9udF93cml0ZV9ieXRlY29kZShzZWxmKToKKyAgICAgICAgIyBCeXRlY29kZSBpcyBub3Qgd3JpdHRlbiBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyB0cnVlLgorICAgICAgICAjIENhbiBhc3N1bWUgaXQgaXMgZmFsc2UgYWxyZWFkeSB0aGFua3MgdG8gdGhlIHNraXBJZiBjbGFzcyBkZWNvcmF0b3IuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5sb2FkZXIuYnl0ZWNvZGVfcGF0aCA9ICI8ZG9lcyBub3QgZXhpc3Q+IgorICAgICAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKHNlbGYuY2FjaGVkLCBzZWxmLmxvYWRlci53cml0dGVuKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQorCisgICAgZGVmIHRlc3Rfbm9fc2V0X2RhdGEoc2VsZik6CisgICAgICAgICMgSWYgc2V0X2RhdGEgaXMgbm90IGRlZmluZWQsIG9uZSBjYW4gc3RpbGwgcmVhZCBieXRlY29kZS4KKyAgICAgICAgc2VsZi5zZXRVcChtYWdpYz1iJzAwMDAnKQorICAgICAgICBvcmlnaW5hbF9zZXRfZGF0YSA9IHNlbGYubG9hZGVyLl9fY2xhc3NfXy5zZXRfZGF0YQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc2VsZi5sb2FkZXIuX19jbGFzc19fLnNldF9kYXRhCisgICAgICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYubG9hZGVyLmdldF9jb2RlKHNlbGYubmFtZSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmxvYWRlci5fX2NsYXNzX18uc2V0X2RhdGEgPSBvcmlnaW5hbF9zZXRfZGF0YQorCisgICAgZGVmIHRlc3Rfc2V0X2RhdGFfcmFpc2VzX2V4Y2VwdGlvbnMoc2VsZik6CisgICAgICAgICMgUmFpc2luZyBOb3RJbXBsZW1lbnRlZEVycm9yIG9yIE9TRXJyb3IgaXMgb2theSBmb3Igc2V0X2RhdGEuCisgICAgICAgIGRlZiByYWlzZV9leGNlcHRpb24oZXhjKToKKyAgICAgICAgICAgIGRlZiBjbG9zdXJlKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmFpc2UgZXhjCisgICAgICAgICAgICByZXR1cm4gY2xvc3VyZQorCisgICAgICAgIHNlbGYuc2V0VXAobWFnaWM9YicwMDAwJykKKyAgICAgICAgc2VsZi5sb2FkZXIuc2V0X2RhdGEgPSByYWlzZV9leGNlcHRpb24oTm90SW1wbGVtZW50ZWRFcnJvcikKKyAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLmxvYWRlci5nZXRfY29kZShzZWxmLm5hbWUpCisgICAgICAgIHNlbGYudmVyaWZ5X2NvZGUoY29kZV9vYmplY3QpCisKKworY2xhc3MgU291cmNlTG9hZGVyR2V0U291cmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLmdldF9zb3VyY2UoKS4iIiIKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgU2hvdWxkIGhhdmUgbm8gcHJvYmxlbXMgd2l0aCBVVEYtOCB0ZXh0LgorICAgICAgICBuYW1lID0gJ21vZCcKKyAgICAgICAgbW9jayA9IFNvdXJjZU9ubHlMb2FkZXJNb2NrKCdtb2QuZmlsZScpCisgICAgICAgIHNvdXJjZSA9ICd4ID0gIsO8IicKKyAgICAgICAgbW9jay5zb3VyY2UgPSBzb3VyY2UuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHJldHVybmVkX3NvdXJjZSA9IG1vY2suZ2V0X3NvdXJjZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmVkX3NvdXJjZSwgc291cmNlKQorCisgICAgZGVmIHRlc3RfZGVjb2RlZF9zb3VyY2Uoc2VsZik6CisgICAgICAgICMgRGVjb2Rpbmcgc2hvdWxkIHdvcmsuCisgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICBtb2NrID0gU291cmNlT25seUxvYWRlck1vY2soIm1vZC5maWxlIikKKyAgICAgICAgc291cmNlID0gIiMgY29kaW5nOiBMYXRpbi0xXG54PSfDvCciCisgICAgICAgIGFzc2VydCBzb3VyY2UuZW5jb2RlKCdsYXRpbi0xJykgIT0gc291cmNlLmVuY29kZSgndXRmLTgnKQorICAgICAgICBtb2NrLnNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoJ2xhdGluLTEnKQorICAgICAgICByZXR1cm5lZF9zb3VyY2UgPSBtb2NrLmdldF9zb3VyY2UobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR1cm5lZF9zb3VyY2UsIHNvdXJjZSkKKworICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lcyhzZWxmKToKKyAgICAgICAgIyBQRVAgMzAyIHNheXMgdW5pdmVyc2FsIG5ld2xpbmVzIHNob3VsZCBiZSB1c2VkLgorICAgICAgICBuYW1lID0gJ21vZCcKKyAgICAgICAgbW9jayA9IFNvdXJjZU9ubHlMb2FkZXJNb2NrKCdtb2QuZmlsZScpCisgICAgICAgIHNvdXJjZSA9ICJ4ID0gNDJcclxueSA9IC0xM1xyXG4iCisgICAgICAgIG1vY2suc291cmNlID0gc291cmNlLmVuY29kZSgndXRmLTgnKQorICAgICAgICBleHBlY3QgPSBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpLmRlY29kZShzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCisKKworY2xhc3MgU291cmNlTG9hZGVySW5pdE1vZHVsZUF0dHJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMoKS4iIiIKKworICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzKHNlbGYpOgorICAgICAgICAjIElmIF9fZmlsZV9fIHNldCwgX19jYWNoZWRfXyA9PSBpbXBvcnRsaWIudXRpbC5jYWNoZWRfZnJvbV9zb3VyY2UoX19maWxlX18pLgorICAgICAgICBuYW1lID0gJ2JsYWgnCisgICAgICAgIHBhdGggPSAnYmxhaC5weScKKyAgICAgICAgbG9hZGVyID0gU291cmNlT25seUxvYWRlck1vY2socGF0aCkKKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQorICAgICAgICBsb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fY2FjaGVkX18sIGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpKQorCisgICAgQG1vY2sucGF0Y2goJ2ltcG9ydGxpYi5fYm9vdHN0cmFwLmNhY2hlX2Zyb21fc291cmNlJykKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9Ob3RJbXBsZW1lbnRlZEVycm9yKHNlbGYsIG1vY2tfY2FjaGVfZnJvbV9zb3VyY2UpOgorICAgICAgICAjIElmIGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCkgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IgZG9uJ3Qgc2V0CisgICAgICAgICMgX19jYWNoZWRfXy4KKyAgICAgICAgbW9ja19jYWNoZV9mcm9tX3NvdXJjZS5zaWRlX2VmZmVjdCA9IE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgbmFtZSA9ICdibGFoJworICAgICAgICBwYXRoID0gJ2JsYWgucHknCisgICAgICAgIGxvYWRlciA9IFNvdXJjZU9ubHlMb2FkZXJNb2NrKHBhdGgpCisgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKKyAgICAgICAgbG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJykpCisKKyAgICBkZWYgdGVzdF9ub19nZXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgICMgTm8gX19maWxlX18sIG5vIF9fY2FjaGVkX18uCisgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3QoU291cmNlT25seUxvYWRlck1vY2ssICdnZXRfZmlsZW5hbWUnKSBhcyBtb2NrZWQ6CisgICAgICAgICAgICBtb2NrZWQuc2lkZV9lZmZlY3QgPSBJbXBvcnRFcnJvcgorICAgICAgICAgICAgbmFtZSA9ICdibGFoJworICAgICAgICAgICAgbG9hZGVyID0gU291cmNlT25seUxvYWRlck1vY2soJ2JsYWgucHknKQorICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQorICAgICAgICAgICAgbG9hZGVyLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJykpCisKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IGIxYTU4OTQuLjNhMjhjYjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC0xLDYgKzEsNyBAQAogZnJvbSAuIGltcG9ydCB1dGlsCi1pbXBvcnQgaW1wCisKIGltcG9ydCBpbXBvcnRsaWIKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTk4LDcgKzk5LDcgQEAKICAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBsb2FkZXIgPSAnYSBsb2FkZXIhJwogICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCkBAIC0xMDksMTIgKzExMCwyNiBAQAogICAgICAgICAjIElmIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18gaXMgTm9uZSwgcmFpc2UgVmFsdWVFcnJvci4KICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBOb25lCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKIAorICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX2xvYWRlcl9pc19ub3Rfc2V0KHNlbGYpOgorICAgICAgICAjIFNob3VsZCByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICMgSXNzdWUgIzE3MDk5CisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBtb2R1bGUuX19sb2FkZXJfXworICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lKQorCiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBSZXR1cm4gdGhlIGxvYWRlciBmb3VuZCBvbiBzeXMubWV0YV9wYXRoLgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwpAQCAtMTM2LDYgKzE1MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbXBvcnRsaWIuZmluZF9sb2FkZXIoJ25ldmVyZ29pbmd0b2ZpbmR0aGlzbW9kdWxlJykpCiAKIAorY2xhc3MgUmVsb2FkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCBtb2R1bGUgcmVsb2FkaW5nIGZvciBidWlsdGluIGFuZCBleHRlbnNpb24gbW9kdWxlcy4iIiIKKworICAgIGRlZiB0ZXN0X3JlbG9hZF9tb2R1bGVzKHNlbGYpOgorICAgICAgICBmb3IgbW9kIGluICgndG9rZW5pemUnLCAndGltZScsICdtYXJzaGFsJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChtb2R1bGU9bW9kKToKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuQ2xlYW5JbXBvcnQobW9kKToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kKQorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIucmVsb2FkKG1vZHVsZSkKKworCiBjbGFzcyBJbnZhbGlkYXRlQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9tZXRob2RfY2FsbGVkKHNlbGYpOgpAQCAtMTYyLDcgKzE4OSw3IEBACiAgICAgZGVmIHRlc3RfbWV0aG9kX2xhY2tpbmcoc2VsZik6CiAgICAgICAgICMgVGhlcmUgc2hvdWxkIGJlIG5vIGlzc3VlcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLgogICAgICAgICBrZXkgPSAnZ29iYmxlZGVlZ29vaycKLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVba2V5XSA9IGltcC5OdWxsSW1wb3J0ZXIoJ2FiYycpCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2tleV0gPSBOb25lCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLl9fZGVsaXRlbV9fKGtleSkpCiAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpICAjIFNob3VsZG4ndCB0cmlnZ2VyIGFuIGV4Y2VwdGlvbi4KIApAQCAtMTgyLDIxICsyMDksMTMgQEAKICAgICAgICAgIyBJc3N1ZSAjMTcwOTg6IGFsbCBtb2R1bGVzIHNob3VsZCBoYXZlIF9fbG9hZGVyX18gZGVmaW5lZC4KICAgICAgICAgZm9yIG5hbWUsIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5pdGVtcygpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fKQotICAgICAgICAgICAgICAgIGVsaWYgaW1wLmlzX2Zyb3plbihuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRsaWIubWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fKQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChJbXBvcnRNb2R1bGVUZXN0cywKLSAgICAgICAgICAgICAgICAgRmluZExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICBJbnZhbGlkYXRlQ2FjaGVUZXN0cywKLSAgICAgICAgICAgICAgICAgRnJvemVuSW1wb3J0bGliVGVzdHMsCi0gICAgICAgICAgICAgICAgIFN0YXJ0dXBUZXN0cykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9IGxhY2tzIGEgX19sb2FkZXJfXyBhdHRyaWJ1dGUnLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2R1bGUuX19sb2FkZXJfXywgTm9uZSkKKyAgICAgICAgICAgICAgICBlbGlmIGltcG9ydGxpYi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIuZmluZF9tb2R1bGUobmFtZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9kdWxlLl9fbG9hZGVyX18sIE5vbmUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CmluZGV4IGVmYzg5NzcuLjVmY2JkYWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKQEAgLTEsMjMgKzEsMTIxIEBACiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotaW1wb3J0IGltcAorCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCisKK2NsYXNzIERlY29kZVNvdXJjZUJ5dGVzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgc291cmNlID0gInN0cmluZyA9J8O8JyIKKworICAgIGRlZiB0ZXN0X3V0OF9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLnNvdXJjZS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlsLmRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKSwgc2VsZi5zb3VyY2UpCisKKyAgICBkZWYgdGVzdF9zcGVjaWZpZWRfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICcjIGNvZGluZz1sYXRpbi0xXG4nICsgc2VsZi5zb3VyY2UKKyAgICAgICAgc291cmNlX2J5dGVzID0gc291cmNlLmVuY29kZSgnbGF0aW4tMScpCisgICAgICAgIGFzc2VydCBzb3VyY2VfYnl0ZXMgIT0gc291cmNlLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWwuZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpLCBzb3VyY2UpCisKKyAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXMoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICdcclxuJy5qb2luKFtzZWxmLnNvdXJjZSwgc2VsZi5zb3VyY2VdKQorICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzb3VyY2UuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbC5kZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5qb2luKFtzZWxmLnNvdXJjZSwgc2VsZi5zb3VyY2VdKSkKKworCitjbGFzcyBNb2R1bGVUb0xvYWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBtb2R1bGVfbmFtZSA9ICdNb2R1bGVNYW5hZ2VyVGVzdF9tb2R1bGUnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5sb2FkKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubG9hZCwgc2VsZi5tb2R1bGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X25ld19tb2R1bGUoc2VsZik6CisgICAgICAgICMgVGVzdCBhIG5ldyBtb2R1bGUgaXMgY3JlYXRlZCwgaW5zZXJ0ZWQgaW50byBzeXMubW9kdWxlcywgaGFzCisgICAgICAgICMgX19pbml0aWFsaXppbmdfXyBzZXQgdG8gVHJ1ZSBhZnRlciBlbnRlcmluZyB0aGUgY29udGV4dCBtYW5hZ2VyLAorICAgICAgICAjIGFuZCBfX2luaXRpYWxpemluZ19fIHNldCB0byBGYWxzZSBhZnRlciBleGl0aW5nLgorICAgICAgICB3aXRoIHV0aWwubW9kdWxlX3RvX2xvYWQoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbW9kdWxlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVfbmFtZV0sIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUuX19pbml0aWFsaXppbmdfXykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGUuX19pbml0aWFsaXppbmdfXykKKworICAgIGRlZiB0ZXN0X25ld19tb2R1bGVfZmFpbGVkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggdXRpbC5tb2R1bGVfdG9fbG9hZChzZWxmLm1vZHVsZV9uYW1lKSBhcyBtb2R1bGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oc2VsZi5tb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2ltcG9ydGxpYi51dGlsLm1vZHVsZV90b19sb2FkIHN3YWxsb3dlZCBhbiBleGNlcHRpb24nKQorCisgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgc2FtZSBtb2R1bGUgaXMgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgIGNyZWF0ZWRfbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICBzeXMubW9kdWxlc1tzZWxmLm1vZHVsZV9uYW1lXSA9IGNyZWF0ZWRfbW9kdWxlCisgICAgICAgIHdpdGggdXRpbC5tb2R1bGVfdG9fbG9hZChzZWxmLm1vZHVsZV9uYW1lKSBhcyBtb2R1bGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZSwgY3JlYXRlZF9tb2R1bGUpCisKKyAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbGVkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbW9kdWxlIHdhcyBsZWZ0IGluIHN5cy5tb2R1bGVzLgorICAgICAgICBjcmVhdGVkX21vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVfbmFtZV0gPSBjcmVhdGVkX21vZHVsZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHV0aWwubW9kdWxlX3RvX2xvYWQoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbW9kdWxlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnaW1wb3J0bGliLnV0aWwubW9kdWxlX3RvX2xvYWQgc3dhbGxvd2VkIGFuIGV4Y2VwdGlvbicpCisKKyAgICBkZWYgdGVzdF9yZXNldF9uYW1lKHNlbGYpOgorICAgICAgICAjIElmIHJlc2V0X25hbWUgaXMgdHJ1ZSB0aGVuIG1vZHVsZS5fX25hbWVfXyA9IG5hbWUsIGVsc2UgbGVhdmUgaXQgYmUuCisgICAgICAgIG9kZF9uYW1lID0gJ25vdCB5b3VyIHR5cGljYWwgbmFtZScKKyAgICAgICAgY3JlYXRlZF9tb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgIGNyZWF0ZWRfbW9kdWxlLl9fbmFtZV9fID0gb2RkX25hbWUKKyAgICAgICAgc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVfbmFtZV0gPSBjcmVhdGVkX21vZHVsZQorICAgICAgICB3aXRoIHV0aWwubW9kdWxlX3RvX2xvYWQoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbW9kdWxlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgIGNyZWF0ZWRfbW9kdWxlLl9fbmFtZV9fID0gb2RkX25hbWUKKyAgICAgICAgd2l0aCB1dGlsLm1vZHVsZV90b19sb2FkKHNlbGYubW9kdWxlX25hbWUsIHJlc2V0X25hbWU9RmFsc2UpIGFzIG1vZHVsZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBvZGRfbmFtZSkKIAogCiBjbGFzcyBNb2R1bGVGb3JMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIuIiIiCiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIG1vZHVsZV9mb3JfbG9hZGVyKGZ1bmMpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICByZXR1cm4gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihmdW5jKQorCisgICAgZGVmIHRlc3Rfd2FybmluZyhzZWxmKToKKyAgICAgICAgIyBTaG91bGQgcmFpc2UgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHdoZW4gdXNlZC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGZ1bmMgPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKGxhbWJkYSB4OiB4KQorCiAgICAgZGVmIHJldHVybl9tb2R1bGUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIobGFtYmRhIHNlbGYsIG1vZHVsZTogbW9kdWxlKQorICAgICAgICBmeG4gPSBzZWxmLm1vZHVsZV9mb3JfbG9hZGVyKGxhbWJkYSBzZWxmLCBtb2R1bGU6IG1vZHVsZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBuYW1lKQogCiAgICAgZGVmIHJhaXNlX2V4Y2VwdGlvbihzZWxmLCBuYW1lKToKICAgICAgICAgZGVmIHRvX3dyYXAoc2VsZiwgbW9kdWxlKToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIodG9fd3JhcCkKKyAgICAgICAgZnhuID0gc2VsZi5tb2R1bGVfZm9yX2xvYWRlcih0b193cmFwKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmeG4oc2VsZiwgbmFtZSkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMzUsMTIgKzEzMywyMyBAQAogCiAgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZXVzZWQgaWYgYWxyZWFkeSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgY2xhc3MgRmFrZUxvYWRlcjoKKyAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBAc2VsZi5tb2R1bGVfZm9yX2xvYWRlcgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQorICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdhLmIuYycpCisgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gNDIKKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gNDIKICAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoKQorICAgICAgICAgICAgcmV0dXJuZWRfbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJldHVybmVkX21vZHVsZSwgc3lzLm1vZHVsZXNbbmFtZV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgbmFtZSkKIAogICAgIGRlZiB0ZXN0X25ld19tb2R1bGVfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgYSBtb2R1bGUgaXMgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzIGlmIGFkZGVkIGJ1dCBhbgpAQCAtNTMsNyArMTYyLDcgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KICAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCkBAIC02MSw3ICsxNzAsNyBAQAogCiAgICAgZGVmIHRlc3RfZGVjb3JhdG9yX2F0dHJzKHNlbGYpOgogICAgICAgICBkZWYgZnhuKHNlbGYsIG1vZHVsZSk6IHBhc3MKLSAgICAgICAgd3JhcHBlZCA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoZnhuKQorICAgICAgICB3cmFwcGVkID0gc2VsZi5tb2R1bGVfZm9yX2xvYWRlcihmeG4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQogCkBAIC04Nyw3ICsxOTYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX3BrZyA9IGlzX3BhY2thZ2UKICAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wa2cKLSAgICAgICAgICAgIEB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyCisgICAgICAgICAgICBAc2VsZi5tb2R1bGVfZm9yX2xvYWRlcgogICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQogCkBAIC0xMjQsMjYgKzIzMywyNiBAQAogICAgIGRlZiB0ZXN0X3RvcF9sZXZlbChzZWxmKToKICAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgYSB0b3AtbGV2ZWwgbW9kdWxlLgogICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgd2hlbiBwYWNrYWdlIGlzIHNldCB0byBOb25lLgotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kdWxlJykKKyAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZSgnbW9kdWxlJykKICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQogICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBUZXN0IHNldHRpbmcgX19wYWNrYWdlX18gZm9yIGEgcGFja2FnZS4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ3BrZycpCisgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ3BrZycpCiAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFsnPHBhdGg+J10KICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQogICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQogCiAgICAgZGVmIHRlc3Rfc3VibW9kdWxlKHNlbGYpOgogICAgICAgICAjIFRlc3QgX19wYWNrYWdlX18gZm9yIGEgbW9kdWxlIGluIGEgcGFja2FnZS4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ3BrZy5tb2QnKQorICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdwa2cubW9kJykKICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQogICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQogCiAgICAgZGVmIHRlc3Rfc2V0dGluZ19pZl9taXNzaW5nKHNlbGYpOgogICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgbWlzc2luZy4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCisgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ21vZCcpCiAgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKToKICAgICAgICAgICAgIGRlbGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKQogICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQpAQCAtMTUxLDcgKzI2MCw3IEBACiAgICAgZGVmIHRlc3RfbGVhdmluZ19hbG9uZShzZWxmKToKICAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpcyBzZXQgYW5kIG5vdCBOb25lIHRoZW4gbGVhdmUgaXQgYWxvbmUuCiAgICAgICAgIGZvciB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpOgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdtb2QnKQogICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gdmFsdWUKICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgdmFsdWUpCiAKQEAgLTE2Miw2ICsyNzEsMzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fcXVhbG5hbWVfXywgZnhuLl9fcXVhbG5hbWVfXykKIAogCitjbGFzcyBTZXRMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBpbXBvcnRsaWIudXRpbC5zZXRfbG9hZGVyKCkuIiIiCisKKyAgICBjbGFzcyBEdW1teUxvYWRlcjoKKyAgICAgICAgQHV0aWwuc2V0X2xvYWRlcgorICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorCisgICAgZGVmIHRlc3Rfbm9fYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBsb2FkZXIgPSBzZWxmLkR1bW15TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLm1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ2JsYWgnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgbG9hZGVyLm1vZHVsZS5fX2xvYWRlcl9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZXIsIGxvYWRlci5sb2FkX21vZHVsZSgnYmxhaCcpLl9fbG9hZGVyX18pCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgbG9hZGVyID0gc2VsZi5EdW1teUxvYWRlcigpCisgICAgICAgIGxvYWRlci5tb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdibGFoJykKKyAgICAgICAgbG9hZGVyLm1vZHVsZS5fX2xvYWRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlciwgbG9hZGVyLmxvYWRfbW9kdWxlKCdibGFoJykuX19sb2FkZXJfXykKKworICAgIGRlZiB0ZXN0X25vdF9yZXNldChzZWxmKToKKyAgICAgICAgbG9hZGVyID0gc2VsZi5EdW1teUxvYWRlcigpCisgICAgICAgIGxvYWRlci5tb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdibGFoJykKKyAgICAgICAgbG9hZGVyLm1vZHVsZS5fX2xvYWRlcl9fID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiwgbG9hZGVyLmxvYWRfbW9kdWxlKCdibGFoJykuX19sb2FkZXJfXykKKworCiBjbGFzcyBSZXNvbHZlTmFtZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3RzIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLiIiIgpAQCAtMTk1LDE0ICszMzUsMTMxIEBACiAgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLi5iYWNvbicsICdzcGFtJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgICAgICBNb2R1bGVGb3JMb2FkZXJUZXN0cywKLSAgICAgICAgICAgIFNldFBhY2thZ2VUZXN0cywKLSAgICAgICAgICAgIFJlc29sdmVOYW1lVGVzdHMKLSAgICAgICAgKQorY2xhc3MgTWFnaWNOdW1iZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9sZW5ndGgoc2VsZik6CisgICAgICAgICMgU2hvdWxkIGJlIDQgYnl0ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHV0aWwuTUFHSUNfTlVNQkVSKSwgNCkKKworICAgIGRlZiB0ZXN0X2luY29ycG9yYXRlc19ybihzZWxmKToKKyAgICAgICAgIyBUaGUgbWFnaWMgbnVtYmVyIHVzZXMgXHJcbiB0byBjb21lIG91dCB3cm9uZyB3aGVuIHNwbGl0dGluZyBvbiBsaW5lcy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHV0aWwuTUFHSUNfTlVNQkVSLmVuZHN3aXRoKGInXHJcbicpKQorCisKK2NsYXNzIFBFUDMxNDdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb2YgUEVQIDMxNDctcmVsYXRlZCBmdW5jdGlvbnM6CisgICAgY2FjaGVfZnJvbV9zb3VyY2UgYW5kIHNvdXJjZV9mcm9tX2NhY2hlLgorCisgICAgIiIiCisKKyAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIG5vdCBiZSBOb25lJykKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKKyAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3CisgICAgICAgICMgZGVmaW5lZCAucHljIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKKyAgICAgICAgIyBObyBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgdXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnd2hhdGV2ZXIucHknKQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fZG90KHNlbGYpOgorICAgICAgICAjIERpcmVjdG9yeSB3aXRoIGEgZG90LCBmaWxlbmFtZSB3aXRob3V0IGRvdC4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdmaWxlJykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxle30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXplZChzZWxmKToKKyAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3CisgICAgICAgICMgZGVmaW5lZCAucHlvIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6CisgICAgICAgIHBhdGggPSAnZm9vLnB5JworICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKKyAgICAgICAgIyB2YWx1ZS4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQorICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbXSksIHBhcnRpYWxfZXhwZWN0ICsgJ28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCisgICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KKyAgICAgICAgIyBwcm9wYWdhdGVzLgorICAgICAgICBjbGFzcyBCZWFyaXNoOgorICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCisgICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQorICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKKyAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB1dGlsLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXovcXV4LnB5JywgVHJ1ZSksCisgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CisgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSBQRVAgMzE0NyBkZWZpbmVkIC5weWMgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvCisgICAgICAgICMgaXRzIHNvdXJjZS4gIFRoaXMgdGVzdHMgdGhlIGdvb2QgcGF0aC4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICB1dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9iYWRfcGF0aChzZWxmKToKKyAgICAgICAgIyBXaGVuIHRoZSBwYXRoIHRvIGEgcHljIGZpbGUgaXMgbm90IGluIFBFUCAzMTQ3IGZvcm1hdCwgYSBWYWx1ZUVycm9yCisgICAgICAgICMgaXMgcmFpc2VkLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHV0aWwuc291cmNlX2Zyb21fY2FjaGUsICcvZm9vL2Jhci9iYXpxdXgucHljJykKKworICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX25vX3NsYXNoKHNlbGYpOgorICAgICAgICAjIE5vIHNsYXNoZXMgYXQgYWxsIGluIHBhdGggLT4gVmFsdWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHV0aWwuc291cmNlX2Zyb21fY2FjaGUsICdmb28uY3B5dGhvbi0zMi5weWMnKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX2Zld19kb3RzKHNlbGYpOgorICAgICAgICAjIFRvbyBmZXcgZG90cyBpbiBmaW5hbCBwYXRoIGNvbXBvbmVudCAtPiBWYWx1ZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgdXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwgJ19fcHljYWNoZV9fL2Zvby5weWMnKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX21hbnlfZG90cyhzZWxmKToKKyAgICAgICAgIyBUb28gbWFueSBkb3RzIGluIGZpbmFsIHBhdGggY29tcG9uZW50IC0+IFZhbHVlRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCB1dGlsLnNvdXJjZV9mcm9tX2NhY2hlLAorICAgICAgICAgICAgJ19fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTMyLmZvby5weWMnKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fX3B5Y2FjaGVfXyhzZWxmKToKKyAgICAgICAgIyBBbm90aGVyIHByb2JsZW0gd2l0aCB0aGUgcGF0aCAtPiBWYWx1ZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgdXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwKKyAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQppbmRleCBlZjMyZjdkLi5mOTdjYTcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKQEAgLTEsOSArMSw5IEBACiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCi1pbXBvcnQgaW1wCiBpbXBvcnQgb3MucGF0aAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcwogCiAKIENBU0VfSU5TRU5TSVRJVkVfRlMgPSBUcnVlCkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgICAgICAgICAgcGFja2FnZSA9IG5hbWUucnNwbGl0KCcuJywgMSlbMF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGFja2FnZSA9IGltcG9ydF9uYW1lCi0gICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShpbXBvcnRfbmFtZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoaW1wb3J0X25hbWUpCiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKICAgICAgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9ICc8bW9jayBfX2ZpbGVfXz4nCiAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBwYWNrYWdlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKaW5kZXggOWY1ZTkzYi4uNWRlNjIxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQpAQCAtOCw2ICs4LDcgQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgZnVuY3Rvb2xzCiBmcm9tIG9zLnBhdGggaW1wb3J0IG5vcm1jYXNlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgRGlyc09uU3lzUGF0aApAQCAtNDAxLDE0ICs0MDIsMTQgQEAKICAgICAgICAgICAgIHVuaWNvZGVkYXRhLl9fZmlsZV9fWy00Ol0gaW4gKCIucHljIiwgIi5weW8iKSwKICAgICAgICAgInVuaWNvZGVkYXRhIGlzIG5vdCBhbiBleHRlcm5hbCBiaW5hcnkgbW9kdWxlIikKICAgICBkZWYgdGVzdF9maW5kc291cmNlX2JpbmFyeShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIHVuaWNvZGVkYXRhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBpbnNwZWN0LmZpbmRzb3VyY2UsIHVuaWNvZGVkYXRhKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBpbnNwZWN0LmdldHNvdXJjZSwgdW5pY29kZWRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGluc3BlY3QuZmluZHNvdXJjZSwgdW5pY29kZWRhdGEpCiAKICAgICBkZWYgdGVzdF9maW5kc291cmNlX2NvZGVfaW5fbGluZWNhY2hlKHNlbGYpOgogICAgICAgICBsaW5lcyA9IFsieD0xIl0KICAgICAgICAgY28gPSBjb21waWxlKGxpbmVzWzBdLCAiX2R5bmFtaWNhbGx5X2NyZWF0ZWRfZmlsZSIsICJleGVjIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5maW5kc291cmNlLCBjbykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIGNvKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBpbnNwZWN0LmZpbmRzb3VyY2UsIGNvKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBpbnNwZWN0LmdldHNvdXJjZSwgY28pCiAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0gPSAoMSwgTm9uZSwgbGluZXMsIGNvLmNvX2ZpbGVuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZmluZHNvdXJjZShjbyksIChsaW5lcywwKSkKQEAgLTE3MTksNiArMTcyMCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQogCisgICAgICAgICMgVGVzdCB3ZSBoYW5kbGUgX19zaWduYXR1cmVfXyBwYXJ0d2F5IGRvd24gdGhlIHdyYXBwZXIgc3RhY2sKKyAgICAgICAgZGVmIHdyYXBwZWRfZm9vX2NhbGwoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd3JhcHBlZF9mb29fY2FsbC5fX3dyYXBwZWRfXyA9IEZvby5fX2NhbGxfXworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUod3JhcHBlZF9mb29fY2FsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKwogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhKToKQEAgLTE4MzMsNiArMTg0NSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKFdyYXBwZWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorICAgICAgICAjIHdyYXBwZXIgbG9vcDoKKyAgICAgICAgV3JhcHBlZC5fX3dyYXBwZWRfXyA9IFdyYXBwZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cmFwcGVyIGxvb3AnKToKKyAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlKFdyYXBwZWQpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbGFtYmRhcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSgobGFtYmRhIGE9MTA6IGEpKSwKQEAgLTIyODQsNiArMjMwMCw2MiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCiAKIAorY2xhc3MgVGVzdFVud3JhcCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF91bndyYXBfb25lKHNlbGYpOgorICAgICAgICBkZWYgZnVuYyhhLCBiKToKKyAgICAgICAgICAgIHJldHVybiBhICsgYgorICAgICAgICB3cmFwcGVyID0gZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTIwKShmdW5jKQorICAgICAgICBzZWxmLmFzc2VydElzKGluc3BlY3QudW53cmFwKHdyYXBwZXIpLCBmdW5jKQorCisgICAgZGVmIHRlc3RfdW53cmFwX3NldmVyYWwoc2VsZik6CisgICAgICAgIGRlZiBmdW5jKGEsIGIpOgorICAgICAgICAgICAgcmV0dXJuIGEgKyBiCisgICAgICAgIHdyYXBwZXIgPSBmdW5jCisgICAgICAgIGZvciBfXyBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKHdyYXBwZXIpCisgICAgICAgICAgICBkZWYgd3JhcHBlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh3cmFwcGVyLl9fd3JhcHBlZF9fLCBmdW5jKQorICAgICAgICBzZWxmLmFzc2VydElzKGluc3BlY3QudW53cmFwKHdyYXBwZXIpLCBmdW5jKQorCisgICAgZGVmIHRlc3Rfc3RvcChzZWxmKToKKyAgICAgICAgZGVmIGZ1bmMxKGEsIGIpOgorICAgICAgICAgICAgcmV0dXJuIGEgKyBiCisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYzEpCisgICAgICAgIGRlZiBmdW5jMigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMyKQorICAgICAgICBkZWYgd3JhcHBlcigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmdW5jMi5zdG9wX2hlcmUgPSAxCisgICAgICAgIHVud3JhcHBlZCA9IGluc3BlY3QudW53cmFwKHdyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3A9KGxhbWJkYSBmOiBoYXNhdHRyKGYsICJzdG9wX2hlcmUiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModW53cmFwcGVkLCBmdW5jMikKKworICAgIGRlZiB0ZXN0X2N5Y2xlKHNlbGYpOgorICAgICAgICBkZWYgZnVuYzEoKTogcGFzcworICAgICAgICBmdW5jMS5fX3dyYXBwZWRfXyA9IGZ1bmMxCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JhcHBlciBsb29wJyk6CisgICAgICAgICAgICBpbnNwZWN0LnVud3JhcChmdW5jMSkKKworICAgICAgICBkZWYgZnVuYzIoKTogcGFzcworICAgICAgICBmdW5jMi5fX3dyYXBwZWRfXyA9IGZ1bmMxCisgICAgICAgIGZ1bmMxLl9fd3JhcHBlZF9fID0gZnVuYzIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cmFwcGVyIGxvb3AnKToKKyAgICAgICAgICAgIGluc3BlY3QudW53cmFwKGZ1bmMxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3dyYXBwZXIgbG9vcCcpOgorICAgICAgICAgICAgaW5zcGVjdC51bndyYXAoZnVuYzIpCisKKyAgICBkZWYgdGVzdF91bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZnVuYygpOiBwYXNzCisgICAgICAgIGZ1bmMuX193cmFwcGVkX18gPSBOb25lCisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBfX2hhc2hfXyA9IE5vbmUKKyAgICAgICAgICAgIF9fd3JhcHBlZF9fID0gZnVuYworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbnNwZWN0LnVud3JhcChDKCkpKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoCiAgICAgICAgIFRlc3REZWNvcmF0b3JzLCBUZXN0UmV0cmlldmluZ1NvdXJjZUNvZGUsIFRlc3RPbmVsaW5lcnMsIFRlc3RCdWdneUNhc2VzLApAQCAtMjI5MSw3ICsyMzYzLDcgQEAKICAgICAgICAgVGVzdEdldGNhbGxhcmdzRnVuY3Rpb25zLCBUZXN0R2V0Y2FsbGFyZ3NNZXRob2RzLAogICAgICAgICBUZXN0R2V0Y2FsbGFyZ3NVbmJvdW5kTWV0aG9kcywgVGVzdEdldGF0dHJTdGF0aWMsIFRlc3RHZXRHZW5lcmF0b3JTdGF0ZSwKICAgICAgICAgVGVzdE5vRU9MLCBUZXN0U2lnbmF0dXJlT2JqZWN0LCBUZXN0U2lnbmF0dXJlQmluZCwgVGVzdFBhcmFtZXRlck9iamVjdCwKLSAgICAgICAgVGVzdEJvdW5kQXJndW1lbnRzLCBUZXN0R2V0Q2xvc3VyZVZhcnMKKyAgICAgICAgVGVzdEJvdW5kQXJndW1lbnRzLCBUZXN0R2V0Q2xvc3VyZVZhcnMsIFRlc3RVbndyYXAKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGMxOThiY2MuLjRlMDA2MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yMjgsNiArMjI4LDQ3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBiYXNlPTEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgYmFzZT0wKQogCisgICAgZGVmIHRlc3RfaW50X2Jhc2VfbGltaXRzKHNlbGYpOgorICAgICAgICAiIiJUZXN0aW5nIHRoZSBzdXBwb3J0ZWQgbGltaXRzIG9mIHRoZSBpbnQoKSBiYXNlIHBhcmFtZXRlci4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzAnLCA1KSwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGludCgnMCcsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpbnQoJzAnLCAzNykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGludCgnMCcsIC05MDkpICAjIEFuIG9sZCBtYWdpYyB2YWx1ZSBiYXNlIGZyb20gUHl0aG9uIDIuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpbnQoJzAnLCBiYXNlPTAtKDIqKjIzNCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpbnQoJzAnLCBiYXNlPTIqKjIzNCkKKyAgICAgICAgIyBCYXNlcyAyIHRocm91Z2ggMzYgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgZm9yIGJhc2UgaW4gcmFuZ2UoMiwzNyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgnMCcsIGJhc2U9YmFzZSksIDApCisKKyAgICBkZWYgdGVzdF9pbnRfYmFzZV9iYWRfdHlwZXMoc2VsZik6CisgICAgICAgICIiIk5vdCBpbnRlZ2VyIHR5cGVzIGFyZSBub3QgdmFsaWQgYmFzZXM7IGlzc3VlMTY3NzIuIiIiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGludCgnMCcsIDUuNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaW50KCcwJywgNS4wKQorCisgICAgZGVmIHRlc3RfaW50X2Jhc2VfaW5kZXhhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUluZGV4YWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworICAgICAgICAjIENoZWNrIG91dCBvZiByYW5nZSBiYXNlcy4KKyAgICAgICAgZm9yIGJhc2UgaW4gMioqMTAwLCAtMioqMTAwLCAxLCAzNzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgaW50KCc0MycsIGJhc2UpCisKKyAgICAgICAgIyBDaGVjayBpbi1yYW5nZSBiYXNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzEwMScsIGJhc2U9TXlJbmRleGFibGUoMikpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgnMTAxJywgYmFzZT1NeUluZGV4YWJsZSgxMCkpLCAxMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcxMDEnLCBiYXNlPU15SW5kZXhhYmxlKDM2KSksIDEgKyAzNioqMikKKwogICAgIGRlZiB0ZXN0X25vbl9udW1lcmljX2lucHV0X3R5cGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgcG9zc2libGUgbm9uLW51bWVyaWMgdHlwZXMgZm9yIHRoZSBhcmd1bWVudCB4LCBpbmNsdWRpbmcKICAgICAgICAgIyBzdWJjbGFzc2VzIG9mIHRoZSBleHBsaWNpdGx5IGRvY3VtZW50ZWQgYWNjZXB0ZWQgdHlwZXMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lvLnB5IGIvTGliL3Rlc3QvdGVzdF9pby5weQppbmRleCA5Yjg5MjAyLi5jMWVhNmYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKQEAgLTE2NSw3ICsxNjUsNyBAQAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSAxCi0gICAgICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yCiAKIGNsYXNzIENDbG9zZUZhaWx1cmVJTyhDbG9zZUZhaWx1cmVJTywgaW8uUmF3SU9CYXNlKToKICAgICBwYXNzCkBAIC02MDEsOSArNjAxLDkgQEAKICAgICBkZWYgdGVzdF9mbHVzaF9lcnJvcl9vbl9jbG9zZShzZWxmKToKICAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIiwgYnVmZmVyaW5nPTApCiAgICAgICAgIGRlZiBiYWRfZmx1c2goKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCiAgICAgICAgIGYuZmx1c2ggPSBiYWRfZmx1c2gKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgZi5jbG9zZSkgIyBleGNlcHRpb24gbm90IHN3YWxsb3dlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBmLmNsb3NlKSAjIGV4Y2VwdGlvbiBub3Qgc3dhbGxvd2VkCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKIAogICAgIGRlZiB0ZXN0X211bHRpX2Nsb3NlKHNlbGYpOgpAQCAtNzYyLDcgKzc2Miw3IEBACiAgICAgICAgIGlmIHM6CiAgICAgICAgICAgICAjIFRoZSBkZXN0cnVjdG9yICptYXkqIGhhdmUgcHJpbnRlZCBhbiB1bnJhaXNhYmxlIGVycm9yLCBjaGVjayBpdAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocy5zcGxpdGxpbmVzKCkpLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiRXhjZXB0aW9uIElPRXJyb3I6ICIpLCBzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiRXhjZXB0aW9uIE9TRXJyb3I6ICIpLCBzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZW5kc3dpdGgoIiBpZ25vcmVkIiksIHMpCiAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgpAQCAtNzc4LDIyICs3NzgsMjIgQEAKICAgICBkZWYgdGVzdF9mbHVzaF9lcnJvcl9vbl9jbG9zZShzZWxmKToKICAgICAgICAgcmF3ID0gc2VsZi5Nb2NrUmF3SU8oKQogICAgICAgICBkZWYgYmFkX2ZsdXNoKCk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCkKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQogICAgICAgICByYXcuZmx1c2ggPSBiYWRfZmx1c2gKICAgICAgICAgYiA9IHNlbGYudHAocmF3KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiLmNsb3NlKSAjIGV4Y2VwdGlvbiBub3Qgc3dhbGxvd2VkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGIuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGIuY2xvc2VkKQogCiAgICAgZGVmIHRlc3RfY2xvc2VfZXJyb3Jfb25fY2xvc2Uoc2VsZik6CiAgICAgICAgIHJhdyA9IHNlbGYuTW9ja1Jhd0lPKCkKICAgICAgICAgZGVmIGJhZF9mbHVzaCgpOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignZmx1c2gnKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignZmx1c2gnKQogICAgICAgICBkZWYgYmFkX2Nsb3NlKCk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdjbG9zZScpCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdjbG9zZScpCiAgICAgICAgIHJhdy5jbG9zZSA9IGJhZF9jbG9zZQogICAgICAgICBiID0gc2VsZi50cChyYXcpCiAgICAgICAgIGIuZmx1c2ggPSBiYWRfZmx1c2gKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBlcnI6ICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlcnI6ICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKICAgICAgICAgICAgIGIuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5leGNlcHRpb24uYXJncywgKCdjbG9zZScsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZXhjZXB0aW9uLl9fY29udGV4dF9fLmFyZ3MsICgnZmx1c2gnLCkpCkBAIC04MzMsNiArODMzLDE0IEBACiAgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbywgYnVmZmVyX3NpemU9YnVmc2l6ZTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihidWZpbyksIHNpemUgKyBidWZzaXplMikKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2J1ZmZlcl9mcmVlaW5nKHNlbGYpIDoKKyAgICAgICAgYnVmc2l6ZSA9IDQwOTYKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbywgYnVmZmVyX3NpemU9YnVmc2l6ZSkKKyAgICAgICAgc2l6ZSA9IHN5cy5nZXRzaXplb2YoYnVmaW8pIC0gYnVmc2l6ZQorICAgICAgICBidWZpby5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihidWZpbyksIHNpemUpCiAKIGNsYXNzIEJ1ZmZlcmVkUmVhZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQ29tbW9uQnVmZmVyZWRUZXN0cyk6CiAgICAgcmVhZF9tb2RlID0gInJiIgpAQCAtMTAwNyw4ICsxMDE1LDggQEAKICAgICBkZWYgdGVzdF9taXNiZWhhdmVkX2lvKHNlbGYpOgogICAgICAgICByYXdpbyA9IHNlbGYuTWlzYmVoYXZlZFJhd0lPKChiImFiYyIsIGIiZCIsIGIiZWZnIikpCiAgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnVmaW8uc2VlaywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnVmaW8udGVsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgYnVmaW8uc2VlaywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgYnVmaW8udGVsbCkKIAogICAgIGRlZiB0ZXN0X25vX2V4dHJhbmVvdXNfcmVhZChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjOTU1MDsgd2hlbiB0aGUgcmF3IElPIG9iamVjdCBoYXMgc2F0aXNmaWVkIHRoZSByZWFkIHJlcXVlc3QsCkBAIC0xMDU5LDE3ICsxMDY3LDE4IEBACiAgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbykKICAgICAgICAgIyBfcHlpby5CdWZmZXJlZFJlYWRlciBzZWVtcyB0byBpbXBsZW1lbnQgcmVhZGluZyBkaWZmZXJlbnQsIHNvIHRoYXQKICAgICAgICAgIyBjaGVja2luZyB0aGlzIGlzIG5vdCBzbyBlYXN5LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby5yZWFkLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgYnVmaW8ucmVhZCwgMTApCiAKICAgICBkZWYgdGVzdF9nYXJiYWdlX2NvbGxlY3Rpb24oc2VsZik6CiAgICAgICAgICMgQyBCdWZmZXJlZFJlYWRlciBvYmplY3RzIGFyZSBjb2xsZWN0ZWQuCiAgICAgICAgICMgVGhlIFB5dGhvbiB2ZXJzaW9uIGhhcyBfX2RlbF9fLCBzbyBpdCBlbmRzIGludG8gZ2MuZ2FyYmFnZSBpbnN0ZWFkCi0gICAgICAgIHJhd2lvID0gc2VsZi5GaWxlSU8oc3VwcG9ydC5URVNURk4sICJ3K2IiKQotICAgICAgICBmID0gc2VsZi50cChyYXdpbykKLSAgICAgICAgZi5mID0gZgotICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGYpCi0gICAgICAgIGRlbCBmCi0gICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcmF3aW8gPSBzZWxmLkZpbGVJTyhzdXBwb3J0LlRFU1RGTiwgIncrYiIpCisgICAgICAgICAgICBmID0gc2VsZi50cChyYXdpbykKKyAgICAgICAgICAgIGYuZiA9IGYKKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoZikKKyAgICAgICAgICAgIGRlbCBmCisgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUod3IoKSBpcyBOb25lLCB3cikKIAogICAgIGRlZiB0ZXN0X2FyZ3NfZXJyb3Ioc2VsZik6CkBAIC0xMzEyLDkgKzEzMjEsOSBAQAogICAgIGRlZiB0ZXN0X21pc2JlaGF2ZWRfaW8oc2VsZik6CiAgICAgICAgIHJhd2lvID0gc2VsZi5NaXNiZWhhdmVkUmF3SU8oKQogICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8sIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ1ZmlvLnNlZWssIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ1ZmlvLnRlbGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ1ZmlvLndyaXRlLCBiImFiY2RlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGJ1ZmlvLnNlZWssIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGJ1ZmlvLnRlbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGJ1ZmlvLndyaXRlLCBiImFiY2RlZiIpCiAKICAgICBkZWYgdGVzdF9tYXhfYnVmZmVyX3NpemVfcmVtb3ZhbChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgpAQCAtMTMyMywxMSArMTMzMiwxMSBAQAogICAgIGRlZiB0ZXN0X3dyaXRlX2Vycm9yX29uX2Nsb3NlKHNlbGYpOgogICAgICAgICByYXcgPSBzZWxmLk1vY2tSYXdJTygpCiAgICAgICAgIGRlZiBiYWRfd3JpdGUoYik6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCkKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQogICAgICAgICByYXcud3JpdGUgPSBiYWRfd3JpdGUKICAgICAgICAgYiA9IHNlbGYudHAocmF3KQogICAgICAgICBiLndyaXRlKGInc3BhbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGIuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgYi5jbG9zZSkgIyBleGNlcHRpb24gbm90IHN3YWxsb3dlZAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYi5jbG9zZWQpCiAKIApAQCAtMTM1OCwxMyArMTM2NywxNCBAQAogICAgICAgICAjIEMgQnVmZmVyZWRXcml0ZXIgb2JqZWN0cyBhcmUgY29sbGVjdGVkLCBhbmQgY29sbGVjdGluZyB0aGVtIGZsdXNoZXMKICAgICAgICAgIyBhbGwgZGF0YSB0byBkaXNrLgogICAgICAgICAjIFRoZSBQeXRob24gdmVyc2lvbiBoYXMgX19kZWxfXywgc28gaXQgZW5kcyBpbnRvIGdjLmdhcmJhZ2UgaW5zdGVhZAotICAgICAgICByYXdpbyA9IHNlbGYuRmlsZUlPKHN1cHBvcnQuVEVTVEZOLCAidytiIikKLSAgICAgICAgZiA9IHNlbGYudHAocmF3aW8pCi0gICAgICAgIGYud3JpdGUoYiIxMjN4eHgiKQotICAgICAgICBmLnggPSBmCi0gICAgICAgIHdyID0gd2Vha3JlZi5yZWYoZikKLSAgICAgICAgZGVsIGYKLSAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUmVzb3VyY2VXYXJuaW5nKSk6CisgICAgICAgICAgICByYXdpbyA9IHNlbGYuRmlsZUlPKHN1cHBvcnQuVEVTVEZOLCAidytiIikKKyAgICAgICAgICAgIGYgPSBzZWxmLnRwKHJhd2lvKQorICAgICAgICAgICAgZi53cml0ZShiIjEyM3h4eCIpCisgICAgICAgICAgICBmLnggPSBmCisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGYpCisgICAgICAgICAgICBkZWwgZgorICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdyKCkgaXMgTm9uZSwgd3IpCiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIxMjN4eHgiKQpAQCAtMTM5NywxNCArMTQwNywxNCBAQAogICAgICAgICAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHNlbGYudHAsIE5vdFJlYWRhYmxlKCksIHNlbGYuTW9ja1Jhd0lPKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYudHAsIE5vdFJlYWRhYmxlKCksIHNlbGYuTW9ja1Jhd0lPKCkpCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl93aXRoX25vdF93cml0ZWFibGUoc2VsZik6CiAgICAgICAgIGNsYXNzIE5vdFdyaXRlYWJsZShNb2NrUmF3SU8pOgogICAgICAgICAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHNlbGYudHAsIHNlbGYuTW9ja1Jhd0lPKCksIE5vdFdyaXRlYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzZWxmLnRwLCBzZWxmLk1vY2tSYXdJTygpLCBOb3RXcml0ZWFibGUoKSkKIAogICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CiAgICAgICAgIHBhaXIgPSBzZWxmLnRwKHNlbGYuQnl0ZXNJTyhiImFiY2RlZiIpLCBzZWxmLk1vY2tSYXdJTygpKQpAQCAtMjE2NSw3ICsyMTc1LDcgQEAKICAgICAgICAgaWYgczoKICAgICAgICAgICAgICMgVGhlIGRlc3RydWN0b3IgKm1heSogaGF2ZSBwcmludGVkIGFuIHVucmFpc2FibGUgZXJyb3IsIGNoZWNrIGl0CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLnNwbGl0bGluZXMoKSksIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJFeGNlcHRpb24gSU9FcnJvcjogIiksIHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJFeGNlcHRpb24gT1NFcnJvcjogIiksIHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5lbmRzd2l0aCgiIGlnbm9yZWQiKSwgcykKIAogICAgICMgU3lzdGVtYXRpYyB0ZXN0cyBvZiB0aGUgdGV4dCBJL08gQVBJCkBAIC0yMjM3LDcgKzIyNDcsNyBAQAogICAgICAgICBmLnNlZWsoMCkKICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgIlx4ZmZcbiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBmLnRlbGwpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBmLnRlbGwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHAyKQogICAgICAgICBmLmNsb3NlKCkKIApAQCAtMjM0MSw3ICsyMzUxLDcgQEAKICAgICAgICAgICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgdHh0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKFVuUmVhZGFibGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgdHh0LnJlYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHR4dC5yZWFkKQogCiAgICAgZGVmIHRlc3RfcmVhZF9vbmVfYnlfb25lKHNlbGYpOgogICAgICAgICB0eHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoc2VsZi5CeXRlc0lPKGIiQUFcclxuQkIiKSkKQEAgLTI1MTYsOSArMjUyNiw5IEBACiAgICAgZGVmIHRlc3RfZmx1c2hfZXJyb3Jfb25fY2xvc2Uoc2VsZik6CiAgICAgICAgIHR4dCA9IHNlbGYuVGV4dElPV3JhcHBlcihzZWxmLkJ5dGVzSU8oc2VsZi50ZXN0ZGF0YSksIGVuY29kaW5nPSJhc2NpaSIpCiAgICAgICAgIGRlZiBiYWRfZmx1c2goKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCiAgICAgICAgIHR4dC5mbHVzaCA9IGJhZF9mbHVzaAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCB0eHQuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgdHh0LmNsb3NlKSAjIGV4Y2VwdGlvbiBub3Qgc3dhbGxvd2VkCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0eHQuY2xvc2VkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlfY2xvc2Uoc2VsZik6CkBAIC0yNTk5LDE0ICsyNjA5LDE1IEBACiAgICAgICAgICMgQyBUZXh0SU9XcmFwcGVyIG9iamVjdHMgYXJlIGNvbGxlY3RlZCwgYW5kIGNvbGxlY3RpbmcgdGhlbSBmbHVzaGVzCiAgICAgICAgICMgYWxsIGRhdGEgdG8gZGlzay4KICAgICAgICAgIyBUaGUgUHl0aG9uIHZlcnNpb24gaGFzIF9fZGVsX18sIHNvIGl0IGVuZHMgaW4gZ2MuZ2FyYmFnZSBpbnN0ZWFkLgotICAgICAgICByYXdpbyA9IGlvLkZpbGVJTyhzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgYiA9IHNlbGYuQnVmZmVyZWRXcml0ZXIocmF3aW8pCi0gICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYiwgZW5jb2Rpbmc9ImFzY2lpIikKLSAgICAgICAgdC53cml0ZSgiNDU2ZGVmIikKLSAgICAgICAgdC54ID0gdAotICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHQpCi0gICAgICAgIGRlbCB0Ci0gICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcmF3aW8gPSBpby5GaWxlSU8oc3VwcG9ydC5URVNURk4sICJ3YiIpCisgICAgICAgICAgICBiID0gc2VsZi5CdWZmZXJlZFdyaXRlcihyYXdpbykKKyAgICAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYiwgZW5jb2Rpbmc9ImFzY2lpIikKKyAgICAgICAgICAgIHQud3JpdGUoIjQ1NmRlZiIpCisgICAgICAgICAgICB0LnggPSB0CisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHQpCisgICAgICAgICAgICBkZWwgdAorICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdyKCkgaXMgTm9uZSwgd3IpCiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiI0NTZkZWYiKQpAQCAtMjg5Niw3ICsyOTA3LDcgQEAKICAgICAgICAgICAgIGZvciBmZCBpbiBmZHM6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUJBREY6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cF9mZHMpCkBAIC0zMDYyLDE1ICszMDczLDE4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpbyA9IHNlbGYuaW8ub3Blbih3LCAqKmZkb3Blbl9rd2FyZ3MpCiAgICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICAgICAgIyBGaWxsIHRoZSBwaXBlIGVub3VnaCB0aGF0IHRoZSB3cml0ZSB3aWxsIGJlIGJsb2NraW5nLgogICAgICAgICAgICAgIyBJdCB3aWxsIGJlIGludGVycnVwdGVkIGJ5IHRoZSB0aW1lciBhcm1lZCBhYm92ZS4gIFNpbmNlIHRoZQogICAgICAgICAgICAgIyBvdGhlciB0aHJlYWQgaGFzIHJlYWQgb25lIGJ5dGUsIHRoZSBsb3ctbGV2ZWwgd3JpdGUgd2lsbAogICAgICAgICAgICAgIyByZXR1cm4gd2l0aCBhIHN1Y2Nlc3NmdWwgKHBhcnRpYWwpIHJlc3VsdCByYXRoZXIgdGhhbiBhbiBFSU5UUi4KICAgICAgICAgICAgICMgVGhlIGJ1ZmZlcmVkIElPIGxheWVyIG11c3QgY2hlY2sgZm9yIHBlbmRpbmcgc2lnbmFsCiAgICAgICAgICAgICAjIGhhbmRsZXJzLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBpbnZva2UgYWxhcm1faW50ZXJydXB0KCkuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpby53cml0ZSwgaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pICsgMSkpCisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUsIGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSArIDEpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICAjIFdlIGdvdCBvbmUgYnl0ZSwgZ2V0IGFub3RoZXIgb25lIGFuZCBjaGVjayB0aGF0IGl0IGlzbid0IGEKICAgICAgICAgICAgICMgcmVwZWF0IG9mIHRoZSBmaXJzdCBvbmUuCkBAIC0zMDg0LDcgKzMwOTgsNyBAQAogICAgICAgICAgICAgIyBidWZmZXIsIGFuZCBibG9jayBhZ2Fpbi4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB3aW8uY2xvc2UoKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQkFERjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIApAQCAtMzIxMiw3ICszMjI2LDcgQEAKICAgICAgICAgICAgICMgYnVmZmVyLCBhbmQgY291bGQgYmxvY2sgKGluIGNhc2Ugb2YgZmFpbHVyZSkuCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2lvLmNsb3NlKCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUJBREY6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkgYi9MaWIvdGVzdC90ZXN0X2lvY3RsLnB5CmluZGV4IDUzMWM5YWYuLmVmZTlmNTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pb2N0bC5weQpAQCAtOCw3ICs4LDcgQEAKIAogdHJ5OgogICAgIHR0eSA9IG9wZW4oIi9kZXYvdHR5IiwgInJiIikKLWV4Y2VwdCBJT0Vycm9yOgorZXhjZXB0IE9TRXJyb3I6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIlVuYWJsZSB0byBvcGVuIC9kZXYvdHR5IikKIGVsc2U6CiAgICAgIyBTa2lwIGlmIGFub3RoZXIgcHJvY2VzcyBpcyBpbiBmb3JlZ3JvdW5kCkBAIC04Niw4ICs4Niw2IEBACiAgICAgICAgICAgICBvcy5jbG9zZShtZmQpCiAgICAgICAgICAgICBvcy5jbG9zZShzZmQpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoSW9jdGxUZXN0cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CmluZGV4IDkxMDFmNmMuLjE1MmY1ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKQEAgLTQ1LDMxICs0NSwyMSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotZnJvbSBidWlsdGlucyBpbXBvcnQgbGVuIGFzIF9sZW4KK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGxlbmd0aF9oaW50CiAKIG4gPSAxMAogCi1kZWYgbGVuKG9iaik6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX2xlbihvYmopCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBub3RlOiB0aGlzIGlzIGFuIGludGVybmFsIHVuZG9jdW1lbnRlZCBBUEksCi0gICAgICAgICAgICAjIGRvbid0IHJlbHkgb24gaXQgaW4geW91ciBvd24gcHJvZ3JhbXMKLSAgICAgICAgICAgIHJldHVybiBvYmouX19sZW5ndGhfaGludF9fKCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yCiAKIGNsYXNzIFRlc3RJbnZhcmlhbnRXaXRob3V0TXV0YXRpb25zOgogCiAgICAgZGVmIHRlc3RfaW52YXJpYW50KHNlbGYpOgogICAgICAgICBpdCA9IHNlbGYuaXQKICAgICAgICAgZm9yIGkgaW4gcmV2ZXJzZWQocmFuZ2UoMSwgbisxKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbmd0aF9oaW50KGl0KSwgaSkKICAgICAgICAgICAgIG5leHQoaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGl0KSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW5ndGhfaGludChpdCksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuZ3RoX2hpbnQoaXQpLCAwKQogCiBjbGFzcyBUZXN0VGVtcG9yYXJpbHlJbW11dGFibGUoVGVzdEludmFyaWFudFdpdGhvdXRNdXRhdGlvbnMpOgogCkBAIC03OCwxMiArNjgsMTIgQEAKICAgICAgICAgIyBsZW5ndGggaW1tdXRhYmlsaXR5ICBkdXJpbmcgaXRlcmF0aW9uCiAKICAgICAgICAgaXQgPSBzZWxmLml0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGl0KSwgbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW5ndGhfaGludChpdCksIG4pCiAgICAgICAgIG5leHQoaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGl0KSwgbi0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbmd0aF9oaW50KGl0KSwgbi0xKQogICAgICAgICBzZWxmLm11dGF0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbmV4dCwgaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGl0KSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW5ndGhfaGludChpdCksIDApCiAKICMjIC0tLS0tLS0gQ29uY3JldGUgVHlwZSBUZXN0cyAtLS0tLS0tCiAKQEAgLTkyLDEwICs4Miw2IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLml0ID0gcmVwZWF0KE5vbmUsIG4pCiAKLSAgICBkZWYgdGVzdF9ub19sZW5fZm9yX2luZmluaXRlX3JlcGVhdChzZWxmKToKLSAgICAgICAgIyBUaGUgcmVwZWF0KCkgb2JqZWN0IGNhbiBhbHNvIGJlIGluZmluaXRlCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGVuLCByZXBlYXQoTm9uZSkpCi0KIGNsYXNzIFRlc3RYcmFuZ2UoVGVzdEludmFyaWFudFdpdGhvdXRNdXRhdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2NywxNCArMTUzLDE1IEBACiAgICAgICAgIGl0ID0gaXRlcihkKQogICAgICAgICBuZXh0KGl0KQogICAgICAgICBuZXh0KGl0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIG4tMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW5ndGhfaGludChpdCksIG4gLSAyKQogICAgICAgICBkLmFwcGVuZChuKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIG4tMSkgICMgZ3JvdyB3aXRoIGFwcGVuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbmd0aF9oaW50KGl0KSwgbiAtIDEpICAjIGdyb3cgd2l0aCBhcHBlbmQKICAgICAgICAgZFsxOl0gPSBbXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuZ3RoX2hpbnQoaXQpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBbXSkKICAgICAgICAgZC5leHRlbmQocmFuZ2UoMjApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuZ3RoX2hpbnQoaXQpLCAwKQorCiAKIGNsYXNzIFRlc3RMaXN0UmV2ZXJzZWQoVGVzdEludmFyaWFudFdpdGhvdXRNdXRhdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTg2LDMyICsxNzMsNDEgQEAKICAgICAgICAgaXQgPSByZXZlcnNlZChkKQogICAgICAgICBuZXh0KGl0KQogICAgICAgICBuZXh0KGl0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIG4tMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW5ndGhfaGludChpdCksIG4gLSAyKQogICAgICAgICBkLmFwcGVuZChuKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIG4tMikgICMgaWdub3JlIGFwcGVuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbmd0aF9oaW50KGl0KSwgbiAtIDIpICAjIGlnbm9yZSBhcHBlbmQKICAgICAgICAgZFsxOl0gPSBbXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuZ3RoX2hpbnQoaXQpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBbXSkgICMgY29uZmlybSBpbnZhcmlhbnQKICAgICAgICAgZC5leHRlbmQocmFuZ2UoMjApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpdCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuZ3RoX2hpbnQoaXQpLCAwKQogCiAjIyAtLSBDaGVjayB0byBtYWtlIHN1cmUgZXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgYnkgX19sZW5ndGhfaGludF9fKCkKIAogCiBjbGFzcyBCYWRMZW4ob2JqZWN0KToKLSAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKHJhbmdlKDEwKSkKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBpdGVyKHJhbmdlKDEwKSkKKwogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2hlbGxvJykKIAorCiBjbGFzcyBCYWRMZW5ndGhIaW50KG9iamVjdCk6Ci0gICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihyYW5nZSgxMCkpCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihyYW5nZSgxMCkpCisKICAgICBkZWYgX19sZW5ndGhfaGludF9fKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2hlbGxvJykKIAorCiBjbGFzcyBOb25lTGVuZ3RoSGludChvYmplY3QpOgotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIocmFuZ2UoMTApKQorICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIocmFuZ2UoMTApKQorCiAgICAgZGVmIF9fbGVuZ3RoX2hpbnRfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKIAogY2xhc3MgVGVzdExlbmd0aEhpbnRFeGNlcHRpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQppbmRleCA1MzkyNmE5Li5mZGY3OTg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQpAQCAtMTcyOSw5ICsxNzI5LDggQEAKIGNsYXNzIExlbmd0aFRyYW5zcGFyZW5jeSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9yZXBlYXQoc2VsZik6Ci0gICAgICAgIGZyb20gdGVzdC50ZXN0X2l0ZXJsZW4gaW1wb3J0IGxlbgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXBlYXQoTm9uZSwgNTApKSwgNTApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGVuLCByZXBlYXQoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubGVuZ3RoX2hpbnQocmVwZWF0KE5vbmUsIDUwKSksIDUwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxlbmd0aF9oaW50KHJlcGVhdChOb25lKSwgMTIpLCAxMikKIAogY2xhc3MgUmVncmVzc2lvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZW51bS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VudW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZjNjQ4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VudW0ucHkKQEAgLTAsMCArMSw4MSBAQAorZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtCitmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0CisKK1NNQUxMID0gMQorQklHID0gMTw8MzIKK0hVR0UgPSAxPDw2NAorUkVBTExZX0hVR0UgPSAxPDw5NgorCitjbGFzcyBCaWdOdW0oSW50RW51bSk6CisgICAgc21hbGwgPSBTTUFMTAorICAgIGJpZyA9IEJJRworICAgIGh1Z2UgPSBIVUdFCisgICAgcmVhbGx5X2h1Z2UgPSBSRUFMTFlfSFVHRQorCitFID0gMi43MTgyODEKK1BJID0gMy4xNDE1OTMKK1RBVSA9IDIgKiBQSQorCitjbGFzcyBGbG9hdE51bShmbG9hdCwgRW51bSk6CisgICAgZSA9IEUKKyAgICBwaSA9IFBJCisgICAgdGF1ID0gVEFVCisKK2NsYXNzIFRlc3RFbnVtOgorCisgICAgZGVmIHRlc3RfZmxvYXRzKHNlbGYpOgorICAgICAgICBmb3IgZW51bSBpbiBGbG9hdE51bToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kdW1wcyhlbnVtKSwgcmVwcihlbnVtLnZhbHVlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoc2VsZi5kdW1wcyhlbnVtKSksIGVudW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoc2VsZi5kdW1wcyhlbnVtKSksIGVudW0pCisKKyAgICBkZWYgdGVzdF9pbnRzKHNlbGYpOgorICAgICAgICBmb3IgZW51bSBpbiBCaWdOdW06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZHVtcHMoZW51bSksIHN0cihlbnVtLnZhbHVlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuZHVtcHMoZW51bSkpLCBlbnVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKHNlbGYuZHVtcHMoZW51bSkpLCBlbnVtKQorCisgICAgZGVmIHRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZWxmLmR1bXBzKGxpc3QoQmlnTnVtKSksCisgICAgICAgICAgICAgICAgc3RyKFtTTUFMTCwgQklHLCBIVUdFLCBSRUFMTFlfSFVHRV0pLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmR1bXBzKGxpc3QoRmxvYXROdW0pKSwgc3RyKFtFLCBQSSwgVEFVXSkpCisKKyAgICBkZWYgdGVzdF9kaWN0X2tleXMoc2VsZik6CisgICAgICAgIHMsIGIsIGgsIHIgPSBCaWdOdW0KKyAgICAgICAgZSwgcCwgdCA9IEZsb2F0TnVtCisgICAgICAgIGQgPSB7CisgICAgICAgICAgICBzOid0aW55JywgYjonbGFyZ2UnLCBoOidsYXJnZXInLCByOidsYXJnZXN0JywKKyAgICAgICAgICAgIGU6IkV1bGVyJ3MgbnVtYmVyIiwgcDoncGknLCB0Oid0YXUnLAorICAgICAgICAgICAgfQorICAgICAgICBuZCA9IHNlbGYubG9hZHMoc2VsZi5kdW1wcyhkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtzdHIoU01BTEwpXSwgJ3RpbnknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW3N0cihCSUcpXSwgJ2xhcmdlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtzdHIoSFVHRSldLCAnbGFyZ2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtzdHIoUkVBTExZX0hVR0UpXSwgJ2xhcmdlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW3JlcHIoRSldLCAiRXVsZXIncyBudW1iZXIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW3JlcHIoUEkpXSwgJ3BpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtyZXByKFRBVSldLCAndGF1JykKKworICAgIGRlZiB0ZXN0X2RpY3RfdmFsdWVzKHNlbGYpOgorICAgICAgICBkID0gZGljdCgKKyAgICAgICAgICAgICAgICB0aW55PUJpZ051bS5zbWFsbCwKKyAgICAgICAgICAgICAgICBsYXJnZT1CaWdOdW0uYmlnLAorICAgICAgICAgICAgICAgIGxhcmdlcj1CaWdOdW0uaHVnZSwKKyAgICAgICAgICAgICAgICBsYXJnZXN0PUJpZ051bS5yZWFsbHlfaHVnZSwKKyAgICAgICAgICAgICAgICBlPUZsb2F0TnVtLmUsCisgICAgICAgICAgICAgICAgcGk9RmxvYXROdW0ucGksCisgICAgICAgICAgICAgICAgdGF1PUZsb2F0TnVtLnRhdSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIG5kID0gc2VsZi5sb2FkcyhzZWxmLmR1bXBzKGQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWyd0aW55J10sIFNNQUxMKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWydsYXJnZSddLCBCSUcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbJ2xhcmdlciddLCBIVUdFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWydsYXJnZXN0J10sIFJFQUxMWV9IVUdFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWydlJ10sIEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbJ3BpJ10sIFBJKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWyd0YXUnXSwgVEFVKQorCitjbGFzcyBUZXN0UHlFbnVtKFRlc3RFbnVtLCBQeVRlc3QpOiBwYXNzCitjbGFzcyBUZXN0Q0VudW0oVGVzdEVudW0sIENUZXN0KTogcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKaW5kZXggM2RkODc3YS4uN2NhYWZkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CkBAIC0xLDQgKzEsNSBAQAogZnJvbSB0ZXN0LnRlc3RfanNvbiBpbXBvcnQgUHlUZXN0LCBDVGVzdAoraW1wb3J0IHJlCiAKICMgMjAwNy0xMC0wNQogSlNPTkRPQ1MgPSBbCkBAIC0xMDAsNiArMTAxLDk0IEBACiAgICAgICAgICNUaGlzIGlzIGZvciBweXRob24gZW5jb2RlcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZHVtcHMsIGRhdGEsIGluZGVudD1UcnVlKQogCisgICAgZGVmIHRlc3RfdHJ1bmNhdGVkX2lucHV0KHNlbGYpOgorICAgICAgICB0ZXN0X2Nhc2VzID0gWworICAgICAgICAgICAgKCcnLCAnRXhwZWN0aW5nIHZhbHVlJywgMCksCisgICAgICAgICAgICAoJ1snLCAnRXhwZWN0aW5nIHZhbHVlJywgMSksCisgICAgICAgICAgICAoJ1s0MicsICJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIDMpLAorICAgICAgICAgICAgKCdbNDIsJywgJ0V4cGVjdGluZyB2YWx1ZScsIDQpLAorICAgICAgICAgICAgKCdbIicsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMSksCisgICAgICAgICAgICAoJ1sic3BhbScsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMSksCisgICAgICAgICAgICAoJ1sic3BhbSInLCAiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCA3KSwKKyAgICAgICAgICAgICgnWyJzcGFtIiwnLCAnRXhwZWN0aW5nIHZhbHVlJywgOCksCisgICAgICAgICAgICAoJ3snLCAnRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcycsIDEpLAorICAgICAgICAgICAgKCd7IicsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMSksCisgICAgICAgICAgICAoJ3sic3BhbScsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMSksCisgICAgICAgICAgICAoJ3sic3BhbSInLCAiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCA3KSwKKyAgICAgICAgICAgICgneyJzcGFtIjonLCAnRXhwZWN0aW5nIHZhbHVlJywgOCksCisgICAgICAgICAgICAoJ3sic3BhbSI6NDInLCAiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCAxMCksCisgICAgICAgICAgICAoJ3sic3BhbSI6NDIsJywgJ0V4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMnLCAxMSksCisgICAgICAgIF0KKyAgICAgICAgdGVzdF9jYXNlcyArPSBbCisgICAgICAgICAgICAoJyInLCAnVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCcsIDApLAorICAgICAgICAgICAgKCcic3BhbScsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMCksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSBcKGNoYXIgezJ9XCknLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGlkeCksCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKworICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZGF0YShzZWxmKToKKyAgICAgICAgdGVzdF9jYXNlcyA9IFsKKyAgICAgICAgICAgICgnWywnLCAnRXhwZWN0aW5nIHZhbHVlJywgMSksCisgICAgICAgICAgICAoJ3sic3BhbSI6W30nLCAnRXhwZWN0aW5nIHZhbHVlJywgOSksCisgICAgICAgICAgICAoJ1s0MjonLCAiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCAzKSwKKyAgICAgICAgICAgICgnWzQyICJzcGFtIicsICJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIDQpLAorICAgICAgICAgICAgKCdbNDIsXScsICdFeHBlY3RpbmcgdmFsdWUnLCA0KSwKKyAgICAgICAgICAgICgneyJzcGFtIjpbNDJ9JywgIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgMTEpLAorICAgICAgICAgICAgKCdbIl0nLCAnVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCcsIDEpLAorICAgICAgICAgICAgKCdbInNwYW0iOicsICJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIDcpLAorICAgICAgICAgICAgKCdbInNwYW0iLF0nLCAnRXhwZWN0aW5nIHZhbHVlJywgOCksCisgICAgICAgICAgICAoJ3s6JywgJ0V4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMnLCAxKSwKKyAgICAgICAgICAgICgneywnLCAnRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcycsIDEpLAorICAgICAgICAgICAgKCd7NDInLCAnRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcycsIDEpLAorICAgICAgICAgICAgKCdbe10nLCAnRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcycsIDIpLAorICAgICAgICAgICAgKCd7InNwYW0iLCcsICJFeHBlY3RpbmcgJzonIGRlbGltaXRlciIsIDcpLAorICAgICAgICAgICAgKCd7InNwYW0ifScsICJFeHBlY3RpbmcgJzonIGRlbGltaXRlciIsIDcpLAorICAgICAgICAgICAgKCdbeyJzcGFtIl0nLCAiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCA4KSwKKyAgICAgICAgICAgICgneyJzcGFtIjp9JywgJ0V4cGVjdGluZyB2YWx1ZScsIDgpLAorICAgICAgICAgICAgKCdbeyJzcGFtIjpdJywgJ0V4cGVjdGluZyB2YWx1ZScsIDkpLAorICAgICAgICAgICAgKCd7InNwYW0iOjQyICJoYW0iJywgIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgMTEpLAorICAgICAgICAgICAgKCdbeyJzcGFtIjo0Ml0nLCAiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCAxMSksCisgICAgICAgICAgICAoJ3sic3BhbSI6NDIsfScsICdFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzJywgMTEpLAorICAgICAgICBdCisgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gXChjaGFyIHsyfVwpJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHJlLmVzY2FwZShtc2cpLCBpZHggKyAxLCBpZHgpLAorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisKKyAgICBkZWYgdGVzdF9leHRyYV9kYXRhKHNlbGYpOgorICAgICAgICB0ZXN0X2Nhc2VzID0gWworICAgICAgICAgICAgKCdbXV0nLCAnRXh0cmEgZGF0YScsIDIpLAorICAgICAgICAgICAgKCd7fX0nLCAnRXh0cmEgZGF0YScsIDIpLAorICAgICAgICAgICAgKCdbXSxbXScsICdFeHRyYSBkYXRhJywgMiksCisgICAgICAgICAgICAoJ3t9LHt9JywgJ0V4dHJhIGRhdGEnLCAyKSwKKyAgICAgICAgXQorICAgICAgICB0ZXN0X2Nhc2VzICs9IFsKKyAgICAgICAgICAgICgnNDIsInNwYW0iJywgJ0V4dHJhIGRhdGEnLCAyKSwKKyAgICAgICAgICAgICgnInNwYW0iLDQyJywgJ0V4dHJhIGRhdGEnLCA2KSwKKyAgICAgICAgXQorICAgICAgICBmb3IgZGF0YSwgbXNnLCBpZHggaW4gdGVzdF9jYXNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICByJ157MH06IGxpbmUgMSBjb2x1bW4gezF9IC0gbGluZSAxIGNvbHVtbiB7Mn0nCisgICAgICAgICAgICAgICAgcicgXChjaGFyIHszfSAtIHs0fVwpJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHJlLmVzY2FwZShtc2cpLCBpZHggKyAxLCBsZW4oZGF0YSkgKyAxLCBpZHgsIGxlbihkYXRhKSksCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKworICAgIGRlZiB0ZXN0X2xpbmVjb2woc2VsZik6CisgICAgICAgIHRlc3RfY2FzZXMgPSBbCisgICAgICAgICAgICAoJyEnLCAxLCAxLCAwKSwKKyAgICAgICAgICAgICgnICEnLCAxLCAyLCAxKSwKKyAgICAgICAgICAgICgnXG4hJywgMiwgMSwgMSksCisgICAgICAgICAgICAoJ1xuICBcblxuICAgICAhJywgNCwgNiwgMTApLAorICAgICAgICBdCisgICAgICAgIGZvciBkYXRhLCBsaW5lLCBjb2wsIGlkeCBpbiB0ZXN0X2Nhc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgIHInXkV4cGVjdGluZyB2YWx1ZTogbGluZSB7MH0gY29sdW1uIHsxfScKKyAgICAgICAgICAgICAgICByJyBcKGNoYXIgezJ9XCkkJy5mb3JtYXQobGluZSwgY29sLCBpZHgpLAorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCiAKIGNsYXNzIFRlc3RQeUZhaWwoVGVzdEZhaWwsIFB5VGVzdCk6IHBhc3MKIGNsYXNzIFRlc3RDRmFpbChUZXN0RmFpbCwgQ1Rlc3QpOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9pbmRlbnQucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9pbmRlbnQucHkKaW5kZXggYTRkNGQyMC4uZTA3ODU2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfaW5kZW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2luZGVudC5weQpAQCAtMzIsNiArMzIsOCBAQAogICAgICAgICBkMSA9IHNlbGYuZHVtcHMoaCkKICAgICAgICAgZDIgPSBzZWxmLmR1bXBzKGgsIGluZGVudD0yLCBzb3J0X2tleXM9VHJ1ZSwgc2VwYXJhdG9ycz0oJywnLCAnOiAnKSkKICAgICAgICAgZDMgPSBzZWxmLmR1bXBzKGgsIGluZGVudD0nXHQnLCBzb3J0X2tleXM9VHJ1ZSwgc2VwYXJhdG9ycz0oJywnLCAnOiAnKSkKKyAgICAgICAgZDQgPSBzZWxmLmR1bXBzKGgsIGluZGVudD0yLCBzb3J0X2tleXM9VHJ1ZSkKKyAgICAgICAgZDUgPSBzZWxmLmR1bXBzKGgsIGluZGVudD0nXHQnLCBzb3J0X2tleXM9VHJ1ZSkKIAogICAgICAgICBoMSA9IHNlbGYubG9hZHMoZDEpCiAgICAgICAgIGgyID0gc2VsZi5sb2FkcyhkMikKQEAgLTQyLDYgKzQ0LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMywgaCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMiwgZXhwZWN0LmV4cGFuZHRhYnMoMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDMsIGV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkNCwgZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDUsIGQzKQogCiAgICAgZGVmIHRlc3RfaW5kZW50MChzZWxmKToKICAgICAgICAgaCA9IHszOiAxfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rZXl3b3JkLnB5IGIvTGliL3Rlc3QvdGVzdF9rZXl3b3JkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOTlmNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmQucHkKQEAgLTAsMCArMSwxMzggQEAKK2ltcG9ydCBrZXl3b3JkCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IGZpbGVjbXAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZXh0d3JhcAorCitLRVlXT1JEX0ZJTEUgICAgICAgICAgICAgPSBzdXBwb3J0LmZpbmRmaWxlKCdrZXl3b3JkLnB5JykKK0dSQU1NQVJfRklMRSAgICAgICAgICAgICA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4nLCAnLi4nLCAnUHl0aG9uJywgJ2dyYW1pbml0LmMnKQorVEVTVF9QWV9GSUxFICAgICAgICAgICAgID0gJ2tleXdvcmRfdGVzdC5weScKK0dSQU1NQVJfVEVTVF9GSUxFICAgICAgICA9ICdncmFtaW5pdF90ZXN0LmMnCitQWV9GSUxFX1dJVEhPVVRfS0VZV09SRFMgPSAnbWluaW1hbF9rZXl3b3JkLnB5JworTk9ORVhJU1RFTlRfRklMRSAgICAgICAgID0gJ25vdF9oZXJlLnR4dCcKKworCitjbGFzcyBUZXN0X2lza2V5d29yZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdHJ1ZV9pc19hX2tleXdvcmQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShrZXl3b3JkLmlza2V5d29yZCgnVHJ1ZScpKQorCisgICAgZGVmIHRlc3RfdXBwZXJjYXNlX3RydWVfaXNfbm90X2Ffa2V5d29yZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrZXl3b3JkLmlza2V5d29yZCgnVFJVRScpKQorCisgICAgZGVmIHRlc3Rfbm9uZV92YWx1ZV9pc19ub3RfYV9rZXl3b3JkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGtleXdvcmQuaXNrZXl3b3JkKE5vbmUpKQorCisgICAgIyBUaGlzIGlzIHByb2JhYmx5IGFuIGFjY2lkZW50IG9mIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBidXQgc2hvdWxkIGJlCisgICAgIyBwcmVzZXJ2ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisgICAgZGVmIHRlc3RfY2hhbmdpbmdfdGhlX2t3bGlzdF9kb2VzX25vdF9hZmZlY3RfaXNrZXl3b3JkKHNlbGYpOgorICAgICAgICBvbGRsaXN0ID0ga2V5d29yZC5rd2xpc3QKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGtleXdvcmQsICdrd2xpc3QnLCBvbGRsaXN0KQorICAgICAgICBrZXl3b3JkLmt3bGlzdCA9IFsnaXRzJywgJ2FsbCcsICdlZ2dzJywgJ2JlYW5zJywgJ2FuZCcsICdhJywgJ3NsaWNlJ10KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrZXl3b3JkLmlza2V5d29yZCgnZWdncycpKQorCisKK2NsYXNzIFRlc3RLZXl3b3JkR2VuZXJhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9rZXl3b3JkcyhzZWxmLCBzb3VyY2VfZmlsZSwgZGVzdF9maWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZV9maWxlLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgbmwgPSBsaW5lc1swXVtsZW4obGluZXNbMF0uc3RyaXAoKSk6XQorICAgICAgICB3aXRoIG9wZW4oZGVzdF9maWxlLCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbOmxpbmVzLmluZGV4KGIiIy0tc3RhcnQga2V5d29yZHMtLSIgKyBubCkgKyAxXSkKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbbGluZXMuaW5kZXgoYiIjLS1lbmQga2V5d29yZHMtLSIgKyBubCk6XSkKKworICAgIGRlZiBfZ2VuZXJhdGVfa2V5d29yZHMoc2VsZiwgZ3JhbW1hcl9maWxlLCB0YXJnZXRfa2V5d29yZF9weV9maWxlKToKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZV09SRF9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2tleXdvcmRfcHlfZmlsZV0sIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKVsxXQorICAgICAgICByZXR1cm4gcHJvYy5yZXR1cm5jb2RlLCBzdGRlcnIKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IG9zLnBhdGguZXhpc3RzKEdSQU1NQVJfRklMRSksCisgICAgICAgICAgICAgICAgICAgICAndGVzdCBvbmx5IHdvcmtzIGZyb20gc291cmNlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgZGVmIHRlc3RfcmVhbF9ncmFtbWFyX2FuZF9rZXl3b3JkX2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9rZXl3b3JkcyhLRVlXT1JEX0ZJTEUsIFRFU1RfUFlfRklMRSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNUX1BZX0ZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmlsZWNtcC5jbXAoS0VZV09SRF9GSUxFLCBURVNUX1BZX0ZJTEUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgwLCBiJycpLCBzZWxmLl9nZW5lcmF0ZV9rZXl3b3JkcyhHUkFNTUFSX0ZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFU1RfUFlfRklMRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlY21wLmNtcChLRVlXT1JEX0ZJTEUsIFRFU1RfUFlfRklMRSkpCisKKyAgICBkZWYgdGVzdF9ncmFtbWFyKHNlbGYpOgorICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfa2V5d29yZHMoS0VZV09SRF9GSUxFLCBURVNUX1BZX0ZJTEUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgVEVTVF9QWV9GSUxFKQorICAgICAgICB3aXRoIG9wZW4oR1JBTU1BUl9URVNUX0ZJTEUsICd3JykgYXMgZnA6CisgICAgICAgICAgICAjIFNvbWUgb2YgdGhlc2UgYXJlIHByb2JhYmx5IGltcGxlbWVudGF0aW9uIGFjY2lkZW50cy4KKyAgICAgICAgICAgIGZwLndyaXRlbGluZXModGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAgICB7MiwgMX0sCisgICAgICAgICAgICAgICAgICAgIHsxMSwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfNzksCisgICAgICAgICAgICAgICAgICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIgorICAgICAgICAgICAgICAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgICAgICAgICAgICAgICAgICB7MSwgImplbGxvIn0sCisgICAgICAgICAgICAgICAgICAgIHszMjYsIDB9LAorICAgICAgICAgICAgICAgICAgICB7MSwgInR1cm5pcCJ9LAorICAgICAgICAgICAgICAgIFx0ezEsICJUaGlzIG9uZSBpcyB0YWIgaW5kZW50ZWQiCisgICAgICAgICAgICAgICAgICAgIHsyNzgsIDB9LAorICAgICAgICAgICAgICAgICAgICB7MSwgImNyYXp5IGJ1dCBsZWdhbCIKKyAgICAgICAgICAgICAgICAiYWxzbyBsZWdhbCIgezEsICIKKyAgICAgICAgICAgICAgICAgICAgezEsICJjb250aW51ZSJ9LAorICAgICAgICAgICAgICAgICAgIHsxLCAibGVtb24ifSwKKyAgICAgICAgICAgICAgICAgICAgIHsxLCAidG9tYXRvIn0sCisgICAgICAgICAgICAgICAgezEsICJ3aWdpaSJ9LAorICAgICAgICAgICAgICAgICAgICB7MSwgJ25vIGdvb2QnfQorICAgICAgICAgICAgICAgICAgICB7MjgzLCAwfSwKKyAgICAgICAgICAgICAgICAgICAgezEsICAidG9vIG1hbnkgc3BhY2VzIn0iIiIpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIEdSQU1NQVJfVEVTVF9GSUxFKQorICAgICAgICBzZWxmLl9nZW5lcmF0ZV9rZXl3b3JkcyhHUkFNTUFSX1RFU1RfRklMRSwgVEVTVF9QWV9GSUxFKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICIgICAgICAgICdUaGlzIG9uZSBpcyB0YWIgaW5kZW50ZWQnLCIsCisgICAgICAgICAgICAiICAgICAgICAnYWxzbyBsZWdhbCcsIiwKKyAgICAgICAgICAgICIgICAgICAgICdjb250aW51ZScsIiwKKyAgICAgICAgICAgICIgICAgICAgICdjcmF6eSBidXQgbGVnYWwnLCIsCisgICAgICAgICAgICAiICAgICAgICAnamVsbG8nLCIsCisgICAgICAgICAgICAiICAgICAgICAnbGVtb24nLCIsCisgICAgICAgICAgICAiICAgICAgICAndG9tYXRvJywiLAorICAgICAgICAgICAgIiAgICAgICAgJ3R1cm5pcCcsIiwKKyAgICAgICAgICAgICIgICAgICAgICd3aWdpaScsIiwKKyAgICAgICAgICAgIF0KKyAgICAgICAgd2l0aCBvcGVuKFRFU1RfUFlfRklMRSkgYXMgZnA6CisgICAgICAgICAgICBsaW5lcyA9IGZwLnJlYWQoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc3RhcnQgPSBsaW5lcy5pbmRleCgiIy0tc3RhcnQga2V5d29yZHMtLSIpICsgMQorICAgICAgICBlbmQgPSBsaW5lcy5pbmRleCgiIy0tZW5kIGtleXdvcmRzLS0iKQorICAgICAgICBhY3R1YWwgPSBsaW5lc1tzdGFydDplbmRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VtcHR5X2dyYW1tYXJfcmVzdWx0c19pbl9ub19rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5fY29weV9maWxlX3dpdGhvdXRfZ2VuZXJhdGVkX2tleXdvcmRzKEtFWVdPUkRfRklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0ZJTEVfV0lUSE9VVF9LRVlXT1JEUykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBQWV9GSUxFX1dJVEhPVVRfS0VZV09SRFMpCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShLRVlXT1JEX0ZJTEUsIFRFU1RfUFlfRklMRSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNUX1BZX0ZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAsIGInJyksIHNlbGYuX2dlbmVyYXRlX2tleXdvcmRzKG9zLmRldm51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFU1RfUFlfRklMRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlY21wLmNtcChURVNUX1BZX0ZJTEUsIFBZX0ZJTEVfV0lUSE9VVF9LRVlXT1JEUykpCisKKyAgICBkZWYgdGVzdF9rZXl3b3Jkc19weV93aXRob3V0X21hcmtlcnNfcHJvZHVjZXNfZXJyb3Ioc2VsZik6CisgICAgICAgIHJjLCBzdGRlcnIgPSBzZWxmLl9nZW5lcmF0ZV9rZXl3b3Jkcyhvcy5kZXZudWxsLCBvcy5kZXZudWxsKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJjLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyciwgYidkb2VzIG5vdCBjb250YWluIGZvcm1hdCBtYXJrZXJzJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZ3JhbW1hcl9maWxlX3Byb2R1Y2VzX2Vycm9yKHNlbGYpOgorICAgICAgICByYywgc3RkZXJyID0gc2VsZi5fZ2VuZXJhdGVfa2V5d29yZHMoTk9ORVhJU1RFTlRfRklMRSwgS0VZV09SRF9GSUxFKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJjLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyciwgYicoP21zKScgKyBOT05FWElTVEVOVF9GSUxFLmVuY29kZSgpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19rZXl3b3Jkc19weV9maWxlX3Byb2R1Y2VzX2Vycm9yKHNlbGYpOgorICAgICAgICByYywgc3RkZXJyID0gc2VsZi5fZ2VuZXJhdGVfa2V5d29yZHMob3MuZGV2bnVsbCwgTk9ORVhJU1RFTlRfRklMRSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyYywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdGRlcnIsIGInKD9tcyknICsgTk9ORVhJU1RFTlRfRklMRS5lbmNvZGUoKSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weSBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKaW5kZXggMDUwM2E3Zi4uZTRhNDRjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CkBAIC0xNzYsNiArMTc2LDE4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFgoKS5mKCksIDQyKQogCisgICAgZGVmIHRlc3RfZGVmYXVsdF9ldmFsdWF0aW9uX29yZGVyKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAxNjk2NworICAgICAgICBhID0gNDIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIGRlZiBmKHY9YSwgeD1iLCAqLCB5PWMsIHo9ZCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnIuZXhjZXB0aW9uKSwgIm5hbWUgJ2InIGlzIG5vdCBkZWZpbmVkIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIGYgPSBsYW1iZGEgdj1hLCB4PWIsICosIHk9Yywgej1kOiBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyci5leGNlcHRpb24pLCAibmFtZSAnYicgaXMgbm90IGRlZmluZWQiKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoS2V5d29yZE9ubHlBcmdUZXN0Q2FzZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQppbmRleCBlNWU2MDU4Li41YjMzYWYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICBjbGllbnQuc2V0YmxvY2tpbmcoRmFsc2UpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCgnMTI3LjAuMC4xJywgc2VydmVyU29ja2V0LmdldHNvY2tuYW1lKClbMV0pKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUlOUFJPR1JFU1MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIkNvbm5lY3Qgc2hvdWxkIGhhdmUgcmFpc2VkIEVJTlBST0dSRVNTIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGFyZ2VmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9sYXJnZWZpbGUucHkKaW5kZXggNjNlZTY5Ny4uNWIyNzZlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sYXJnZWZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sYXJnZWZpbGUucHkKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICAgICAgIyBTZWVraW5nIGlzIG5vdCBlbm91Z2ggb2YgYSB0ZXN0OiB5b3UgbXVzdCB3cml0ZSBhbmQgZmx1c2gsIHRvbyEKICAgICAgICAgICAgIGYud3JpdGUoYid4JykKICAgICAgICAgICAgIGYuZmx1c2goKQotICAgICAgICBleGNlcHQgKElPRXJyb3IsIE92ZXJmbG93RXJyb3IpOgorICAgICAgICBleGNlcHQgKE9TRXJyb3IsIE92ZXJmbG93RXJyb3IpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGFyZ2VmaWxlIHN1cHBvcnQiKQogICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IGM5YTA1MWEuLjYzZDQ5ZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBsb2dnaW5nLmNvbmZpZwogCiBpbXBvcnQgY29kZWNzCitpbXBvcnQgY29uZmlncGFyc2VyCiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpbwpAQCAtODEsNyArODIsNyBAQAogICAgICIiIkJhc2UgY2xhc3MgZm9yIGxvZ2dpbmcgdGVzdHMuIiIiCiAKICAgICBsb2dfZm9ybWF0ID0gIiUobmFtZSlzIC0+ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgotICAgIGV4cGVjdGVkX2xvZ19wYXQgPSByIl4oW1x3Ll0rKSAtPiAoW1x3XSspOiAoW1xkXSspJCIKKyAgICBleHBlY3RlZF9sb2dfcGF0ID0gciJeKFtcdy5dKykgLT4gKFx3Kyk6IChcZCspJCIKICAgICBtZXNzYWdlX251bSA9IDAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTkzLDcgKzk0LDggQEAKICAgICAgICAgICAgIHNlbGYuc2F2ZWRfaGFuZGxlcnMgPSBsb2dnaW5nLl9oYW5kbGVycy5jb3B5KCkKICAgICAgICAgICAgIHNlbGYuc2F2ZWRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbG9nZ2VycyA9IHNhdmVkX2xvZ2dlcnMgPSBsb2dnZXJfZGljdC5jb3B5KCkKLSAgICAgICAgICAgIHNlbGYuc2F2ZWRfbGV2ZWxfbmFtZXMgPSBsb2dnaW5nLl9sZXZlbE5hbWVzLmNvcHkoKQorICAgICAgICAgICAgc2VsZi5zYXZlZF9uYW1lX3RvX2xldmVsID0gbG9nZ2luZy5fbmFtZVRvTGV2ZWwuY29weSgpCisgICAgICAgICAgICBzZWxmLnNhdmVkX2xldmVsX3RvX25hbWUgPSBsb2dnaW5nLl9sZXZlbFRvTmFtZS5jb3B5KCkKICAgICAgICAgICAgIHNlbGYubG9nZ2VyX3N0YXRlcyA9IGxvZ2dlcl9zdGF0ZXMgPSB7fQogICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2F2ZWRfbG9nZ2VyczoKICAgICAgICAgICAgICAgICBsb2dnZXJfc3RhdGVzW25hbWVdID0gZ2V0YXR0cihzYXZlZF9sb2dnZXJzW25hbWVdLApAQCAtMTM1LDggKzEzNywxMCBAQAogICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnNldExldmVsKHNlbGYub3JpZ2luYWxfbG9nZ2luZ19sZXZlbCkKICAgICAgICAgbG9nZ2luZy5fYWNxdWlyZUxvY2soKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2dnaW5nLl9sZXZlbE5hbWVzLmNsZWFyKCkKLSAgICAgICAgICAgIGxvZ2dpbmcuX2xldmVsTmFtZXMudXBkYXRlKHNlbGYuc2F2ZWRfbGV2ZWxfbmFtZXMpCisgICAgICAgICAgICBsb2dnaW5nLl9sZXZlbFRvTmFtZS5jbGVhcigpCisgICAgICAgICAgICBsb2dnaW5nLl9sZXZlbFRvTmFtZS51cGRhdGUoc2VsZi5zYXZlZF9sZXZlbF90b19uYW1lKQorICAgICAgICAgICAgbG9nZ2luZy5fbmFtZVRvTGV2ZWwuY2xlYXIoKQorICAgICAgICAgICAgbG9nZ2luZy5fbmFtZVRvTGV2ZWwudXBkYXRlKHNlbGYuc2F2ZWRfbmFtZV90b19sZXZlbCkKICAgICAgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJzLmNsZWFyKCkKICAgICAgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJzLnVwZGF0ZShzZWxmLnNhdmVkX2hhbmRsZXJzKQogICAgICAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBzZWxmLnNhdmVkX2hhbmRsZXJfbGlzdApAQCAtMTUwLDE0ICsxNTQsMTcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKIAotICAgIGRlZiBhc3NlcnRfbG9nX2xpbmVzKHNlbGYsIGV4cGVjdGVkX3ZhbHVlcywgc3RyZWFtPU5vbmUpOgorICAgIGRlZiBhc3NlcnRfbG9nX2xpbmVzKHNlbGYsIGV4cGVjdGVkX3ZhbHVlcywgc3RyZWFtPU5vbmUsIHBhdD1Ob25lKToKICAgICAgICAgIiIiTWF0Y2ggdGhlIGNvbGxlY3RlZCBsb2cgbGluZXMgYWdhaW5zdCB0aGUgcmVndWxhciBleHByZXNzaW9uCiAgICAgICAgIHNlbGYuZXhwZWN0ZWRfbG9nX3BhdCwgYW5kIGNvbXBhcmUgdGhlIGV4dHJhY3RlZCBncm91cCB2YWx1ZXMgdG8KICAgICAgICAgdGhlIGV4cGVjdGVkX3ZhbHVlcyBsaXN0IG9mIHR1cGxlcy4iIiIKICAgICAgICAgc3RyZWFtID0gc3RyZWFtIG9yIHNlbGYuc3RyZWFtCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoc2VsZi5leHBlY3RlZF9sb2dfcGF0KQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHBhdCBvciBzZWxmLmV4cGVjdGVkX2xvZ19wYXQpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHN0cmVhbS5yZXNldCgpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHN0cmVhbSwgJ3Jlc2V0Jyk6CisgICAgICAgICAgICAgICAgc3RyZWFtLnJlc2V0KCkKKyAgICAgICAgICAgIGVsaWYgaGFzYXR0cihzdHJlYW0sICdzZWVrJyk6CisgICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKICAgICAgICAgICAgIGFjdHVhbF9saW5lcyA9IHN0cmVhbS5yZWFkbGluZXMoKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAjIFN0cmluZ0lPLlN0cmluZ0lPIGxhY2tzIGEgcmVzZXQoKSBtZXRob2QuCkBAIC00MzUsNyArNDQyLDcgQEAKICAgICAiIiJUZXN0IHZhcmlvdXMgZmlsdGVyaW5nIHBvc3NpYmlsaXRpZXMgd2l0aCBjdXN0b20gbG9nZ2luZyBsZXZlbHMuIiIiCiAKICAgICAjIFNraXAgdGhlIGxvZ2dlciBuYW1lIGdyb3VwLgotICAgIGV4cGVjdGVkX2xvZ19wYXQgPSByIl5bXHcuXSsgLT4gKFtcd10rKTogKFtcZF0rKSQiCisgICAgZXhwZWN0ZWRfbG9nX3BhdCA9IHIiXltcdy5dKyAtPiAoXHcrKTogKFxkKykkIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQpAQCAtNTY1LDcgKzU3Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZhY2lsaXR5LCBoLkxPR19VU0VSKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoLnVuaXhzb2NrZXQpCiAgICAgICAgICAgICAgICAgaC5jbG9zZSgpCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOiAjIHN5c2xvZ2QgbWlnaHQgbm90IGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6ICMgc3lzbG9nZCBtaWdodCBub3QgYmUgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnLCAnUFVUJyk6CiAgICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6CkBAIC02NTIsNDEgKzY1OSw2IEBACiAjIC0tIGlmIGl0IHByb3ZlcyB0byBiZSBvZiB3aWRlciB1dGlsaXR5IHRoYW4ganVzdCB0ZXN0X2xvZ2dpbmcKIAogaWYgdGhyZWFkaW5nOgotICAgIGNsYXNzIFRlc3RTTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGRlcml2ZWQgY2xhc3MgaGFzIGhhZCB0byBiZSBjcmVhdGVkIGJlY2F1c2Ugc210cGQgZG9lcyBub3QKLSAgICAgICAgc3VwcG9ydCB1c2Ugb2YgY3VzdG9tIGNoYW5uZWwgbWFwcywgYWx0aG91Z2ggdGhleSBhcmUgYWxsb3dlZCBieQotICAgICAgICBhc3luY29yZSdzIGRlc2lnbi4gSXNzdWUgIzExOTU5IGhhcyBiZWVuIHJhaXNlZCB0byBhZGRyZXNzIHRoaXMsCi0gICAgICAgIGFuZCBpZiByZXNvbHZlZCBzYXRpc2ZhY3RvcmlseSwgc29tZSBvZiB0aGlzIGNvZGUgY2FuIGJlIHJlbW92ZWQuCi0gICAgICAgICIiIgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBzb2NrbWFwKToKLSAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgc29ja21hcCkKLSAgICAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKLSAgICAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KLSAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKLSAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQotICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCi0gICAgICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKLSAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCi0gICAgICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQotICAgICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KLSAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCi0gICAgICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCi0gICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZwotICAgICAgICAgICAgICAgICMgYmVmb3JlIHdlIGNhbiBnZXQgdGhlIHBlZXJuYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gZXJybm8uRU5PVENPTk46Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBzbXRwZC5fX3ZlcnNpb25fXykpCi0gICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCi0gICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQotCi0KICAgICBjbGFzcyBUZXN0U01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHRlc3QgU01UUCBzZXJ2ZXIuCkBAIC03MDcsMzcgKzY3OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLiBUaGlzIGF2b2lkcyBjaGFuZ2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YGFzeW5jb3JlYCBtb2R1bGUncyBnbG9iYWwgc3RhdGUuCiAgICAgICAgICIiIgotICAgICAgICBjaGFubmVsX2NsYXNzID0gVGVzdFNNVFBDaGFubmVsCiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwsIHNvY2ttYXApOgotICAgICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gYWRkcgotICAgICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zb2NrbWFwID0gc29ja21hcAotICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBtYXA9c29ja21hcCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoMCkKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29jaywgbWFwPXNvY2ttYXApCi0gICAgICAgICAgICAgICAgIyB0cnkgdG8gcmUtdXNlIGEgc2VydmVyIHBvcnQgaWYgcG9zc2libGUKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoYWRkcikKLSAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KLSAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIE5vbmUsIG1hcD1zb2NrbWFwKQorICAgICAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICAgICAgc2VsZi5faGFuZGxlciA9IGhhbmRsZXIKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKICAgICAgICAgICAgIHNlbGYucG9sbF9pbnRlcnZhbCA9IHBvbGxfaW50ZXJ2YWwKIAotICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBSZWRlZmluZWQgb25seSBiZWNhdXNlIHRoZSBiYXNlIGNsYXNzIGRvZXMgbm90IHBhc3MgaW4gYQotICAgICAgICAgICAgbWFwLCBmb3JjaW5nIHVzZSBvZiBhIGdsb2JhbCBpbiA6bW9kOmBhc3luY29yZWAuCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3Moc2VsZiwgY29ubiwgYWRkciwgc2VsZi5zb2NrbWFwKQotCiAgICAgICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBEZWxlZ2F0ZXMgdG8gdGhlIGhhbmRsZXIgcGFzc2VkIGluIHRvIHRoZSBzZXJ2ZXIncyBjb25zdHJ1Y3Rvci4KQEAgLTc2OCw4ICs3MTcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGFzeW5jb3JlLmxvb3AocG9sbF9pbnRlcnZhbCwgbWFwPXNlbGYuc29ja21hcCkKLSAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3I6CisgICAgICAgICAgICAgICAgYXN5bmNvcmUubG9vcChwb2xsX2ludGVydmFsLCBtYXA9c2VsZi5fbWFwKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBPbiBGcmVlQlNEIDgsIGNsb3NpbmcgdGhlIHNlcnZlciByZXBlYXRhYmx5CiAgICAgICAgICAgICAgICAgIyByYWlzZXMgdGhpcyBlcnJvci4gV2Ugc3dhbGxvdyBpdCBpZiB0aGUKICAgICAgICAgICAgICAgICAjIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuCkBAIC04NzYsNyArODI1LDcgQEAKICAgICAgICAgICAgICAgICBzb2NrLCBhZGRyID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgICAgICAgICBpZiBzZWxmLnNzbGN0eDoKICAgICAgICAgICAgICAgICAgICAgc29jayA9IHNlbGYuc3NsY3R4LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICMgc29ja2V0IGVycm9ycyBhcmUgc2lsZW5jZWQgYnkgdGhlIGNhbGxlciwgcHJpbnQgdGhlbSBoZXJlCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiR290IGFuIGVycm9yOlxuJXNcbiIgJSBlKQogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC05NDIsNyArODkxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcihEZWxlZ2F0aW5nVURQUmVxdWVzdEhhbmRsZXIsIHNlbGYpLmZpbmlzaCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyLl9jbG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTk5Niw3ICs5NDUsNyBAQAogICAgICIiIlRlc3RzIGZvciB0aGUgTWVtb3J5SGFuZGxlci4iIiIKIAogICAgICMgRG8gbm90IGJvdGhlciB3aXRoIGEgbG9nZ2VyIG5hbWUgZ3JvdXAuCi0gICAgZXhwZWN0ZWRfbG9nX3BhdCA9IHIiXltcdy5dKyAtPiAoW1x3XSspOiAoW1xkXSspJCIKKyAgICBleHBlY3RlZF9sb2dfcGF0ID0gciJeW1x3Ll0rIC0+IChcdyspOiAoXGQrKSQiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCkBAIC0xMDQ5LDcgKzk5OCw3IEBACiAKICAgICAiIiJSZWFkaW5nIGxvZ2dpbmcgY29uZmlnIGZyb20gYSAuaW5pLXN0eWxlIGNvbmZpZyBmaWxlLiIiIgogCi0gICAgZXhwZWN0ZWRfbG9nX3BhdCA9IHIiXihbXHddKykgXCtcKyAoW1x3XSspJCIKKyAgICBleHBlY3RlZF9sb2dfcGF0ID0gciJeKFx3KykgXCtcKyAoXHcrKSQiCiAKICAgICAjIGNvbmZpZzAgaXMgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uLgogICAgIGNvbmZpZzAgPSAiIiIKQEAgLTEyOTcsNiArMTI0NiwyNCBAQAogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQogCisgICAgZGVmIHRlc3RfY29uZmlnMF91c2luZ19jcF9vayhzZWxmKToKKyAgICAgICAgIyBBIHNpbXBsZSBjb25maWcgZmlsZSB3aGljaCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKHRleHR3cmFwLmRlZGVudChzZWxmLmNvbmZpZzApKQorICAgICAgICAgICAgY3AgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgICAgIGNwLnJlYWRfZmlsZShmaWxlKQorICAgICAgICAgICAgbG9nZ2luZy5jb25maWcuZmlsZUNvbmZpZyhjcCkKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgICAgICMgV29uJ3Qgb3V0cHV0IGFueXRoaW5nCisgICAgICAgICAgICBsb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICAgICAgIyBPdXRwdXRzIGEgbWVzc2FnZQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoWworICAgICAgICAgICAgICAgICgnRVJST1InLCAnMicpLAorICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKKyAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKwogICAgIGRlZiB0ZXN0X2NvbmZpZzFfb2soc2VsZiwgY29uZmlnPWNvbmZpZzEpOgogICAgICAgICAjIEEgY29uZmlnIGZpbGUgZGVmaW5pbmcgYSBzdWItcGFyc2VyIGFzIHdlbGwuCiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgpAQCAtMTQ0OSwxNiArMTQxNiwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCiAKICAgICBkZWYgdGVzdF9ub3NlcnZlcihzZWxmKToKKyAgICAgICAgIyBBdm9pZCB0aW1pbmctcmVsYXRlZCBmYWlsdXJlcyBkdWUgdG8gU29ja2V0SGFuZGxlcidzIG93biBoYXJkLXdpcmVkCisgICAgICAgICMgb25lLXNlY29uZCB0aW1lb3V0IG9uIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIChpc3N1ZSAjMTYyNjQpLgorICAgICAgICBzZWxmLnNvY2tfaGRsci5yZXRyeVN0YXJ0ID0gMi41CiAgICAgICAgICMgS2lsbCB0aGUgc2VydmVyCiAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQotICAgICAgICAjVGhlIGxvZ2dpbmcgY2FsbCBzaG91bGQgdHJ5IHRvIGNvbm5lY3QsIHdoaWNoIHNob3VsZCBmYWlsCisgICAgICAgICMgVGhlIGxvZ2dpbmcgY2FsbCBzaG91bGQgdHJ5IHRvIGNvbm5lY3QsIHdoaWNoIHNob3VsZCBmYWlsCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRGVsaWJlcmF0ZSBtaXN0YWtlJykKICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKICAgICAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXhjZXB0aW9uKCdOZXZlciBzZW50JykKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5lcnJvcignTmV2ZXIgc2VudCwgZWl0aGVyJykKICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuc29ja19oZGxyLnJldHJ5VGltZSA+IG5vdykKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlbGYuc29ja19oZGxyLnJldHJ5VGltZSwgbm93KQogICAgICAgICB0aW1lLnNsZWVwKHNlbGYuc29ja19oZGxyLnJldHJ5VGltZSAtIG5vdyArIDAuMDAxKQogICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmVycm9yKCdOb3IgdGhpcycpCiAKQEAgLTE3ODQsNyArMTc1NCw3IEBACiAgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoKQogICAgICAgICAgICAgcyA9IHN0cmVhbS5nZXR2YWx1ZSgpCiAgICAgICAgICAgICBoLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpLCAwKQogCiAgICAgICAgICAgICAjU2VlIGlmIGFuIGV4cGxpY2l0IGZpbGUgdXNlcyB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGFfZmlsZSA9IGlvLlN0cmluZ0lPKCkKQEAgLTE4MjIsNyArMTc5Miw3IEBACiAKICAgICAiIiJSZWFkaW5nIGxvZ2dpbmcgY29uZmlnIGZyb20gYSBkaWN0aW9uYXJ5LiIiIgogCi0gICAgZXhwZWN0ZWRfbG9nX3BhdCA9IHIiXihbXHddKykgXCtcKyAoW1x3XSspJCIKKyAgICBleHBlY3RlZF9sb2dfcGF0ID0gciJeKFx3KykgXCtcKyAoXHcrKSQiCiAKICAgICAjIGNvbmZpZzAgaXMgYSBzdGFuZGFyZCBjb25maWd1cmF0aW9uLgogICAgIGNvbmZpZzAgPSB7CkBAIC0yMzk0LDYgKzIzNjQsMzIgQEAKICAgICAgICAgfSwKICAgICB9CiAKKyAgICAjIEFzIGNvbmZpZzAsIGJ1dCB3aXRoIHByb3BlcnRpZXMKKyAgICBjb25maWcxNCA9IHsKKyAgICAgICAgJ3ZlcnNpb24nOiAxLAorICAgICAgICAnZm9ybWF0dGVycyc6IHsKKyAgICAgICAgICAgICdmb3JtMScgOiB7CisgICAgICAgICAgICAgICAgJ2Zvcm1hdCcgOiAnJShsZXZlbG5hbWUpcyArKyAlKG1lc3NhZ2UpcycsCisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICAnaGFuZGxlcnMnIDogeworICAgICAgICAgICAgJ2hhbmQxJyA6IHsKKyAgICAgICAgICAgICAgICAnY2xhc3MnIDogJ2xvZ2dpbmcuU3RyZWFtSGFuZGxlcicsCisgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlcicgOiAnZm9ybTEnLAorICAgICAgICAgICAgICAgICdsZXZlbCcgOiAnTk9UU0VUJywKKyAgICAgICAgICAgICAgICAnc3RyZWFtJyAgOiAnZXh0Oi8vc3lzLnN0ZG91dCcsCisgICAgICAgICAgICAgICAgJy4nOiB7CisgICAgICAgICAgICAgICAgICAgICdmb28nOiAnYmFyJywKKyAgICAgICAgICAgICAgICAgICAgJ3Rlcm1pbmF0b3InOiAnIVxuJywKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgICAgICAncm9vdCcgOiB7CisgICAgICAgICAgICAnbGV2ZWwnIDogJ1dBUk5JTkcnLAorICAgICAgICAgICAgJ2hhbmRsZXJzJyA6IFsnaGFuZDEnXSwKKyAgICAgICAgfSwKKyAgICB9CisKICAgICBvdXRfb2Zfb3JkZXIgPSB7CiAgICAgICAgICJ2ZXJzaW9uIjogMSwKICAgICAgICAgImZvcm1hdHRlcnMiOiB7CkBAIC0yNjYxLDExICsyNjU3LDIwIEBACiAgICAgZGVmIHRlc3RfY29uZmlnMTNfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBzZWxmLmFwcGx5X2NvbmZpZywgc2VsZi5jb25maWcxMykKIAorICAgIGRlZiB0ZXN0X2NvbmZpZzE0X29rKHNlbGYpOgorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMTQpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5faGFuZGxlcnNbJ2hhbmQxJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb28sICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnRlcm1pbmF0b3IsICchXG4nKQorICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdFeGNsYW1hdGlvbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmdldHZhbHVlKCkuZW5kc3dpdGgoJ0V4Y2xhbWF0aW9uIVxuJykpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdsaXN0ZW4oKSBuZWVkcyB0aHJlYWRpbmcgdG8gd29yaycpCi0gICAgZGVmIHNldHVwX3ZpYV9saXN0ZW5lcihzZWxmLCB0ZXh0KToKKyAgICBkZWYgc2V0dXBfdmlhX2xpc3RlbmVyKHNlbGYsIHRleHQsIHZlcmlmeT1Ob25lKToKICAgICAgICAgdGV4dCA9IHRleHQuZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgICMgQXNrIGZvciBhIHJhbmRvbWx5IGFzc2lnbmVkIHBvcnQgKGJ5IHVzaW5nIHBvcnQgMCkKLSAgICAgICAgdCA9IGxvZ2dpbmcuY29uZmlnLmxpc3RlbigwKQorICAgICAgICB0ID0gbG9nZ2luZy5jb25maWcubGlzdGVuKDAsIHZlcmlmeSkKICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgIHQucmVhZHkud2FpdCgpCiAgICAgICAgICMgTm93IGdldCB0aGUgcG9ydCBhbGxvY2F0ZWQKQEAgLTI3MjUsNiArMjczMCw2OSBAQAogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF9saXN0ZW5fdmVyaWZ5KHNlbGYpOgorCisgICAgICAgIGRlZiB2ZXJpZnlfZmFpbChzdHVmZik6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGRlZiB2ZXJpZnlfcmV2ZXJzZShzdHVmZik6CisgICAgICAgICAgICByZXR1cm4gc3R1ZmZbOjotMV0KKworICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKKyAgICAgICAgdG9fc2VuZCA9IHRleHR3cmFwLmRlZGVudChDb25maWdGaWxlVGVzdC5jb25maWcxKQorICAgICAgICAjIEZpcnN0LCBzcGVjaWZ5IGEgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIHRoYXQgd2lsbCBmYWlsLgorICAgICAgICAjIFdlIGV4cGVjdCB0byBzZWUgbm8gb3V0cHV0LCBzaW5jZSBvdXIgY29uZmlndXJhdGlvbgorICAgICAgICAjIG5ldmVyIHRvb2sgZWZmZWN0LgorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRvX3NlbmQsIHZlcmlmeV9mYWlsKQorICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10sIHN0cmVhbT1vdXRwdXQpCisgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBoYXMgdGhlIHN0dWZmIHdlIGxvZ2dlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFsKKyAgICAgICAgICAgICgnSU5GTycsICcxJyksCisgICAgICAgICAgICAoJ0VSUk9SJywgJzInKSwKKyAgICAgICAgXSwgcGF0PXIiXltcdy5dKyAtPiAoXHcrKTogKFxkKykkIikKKworICAgICAgICAjIE5vdywgcGVyZm9ybSBubyB2ZXJpZmljYXRpb24uIE91ciBjb25maWd1cmF0aW9uCisgICAgICAgICMgc2hvdWxkIHRha2UgZWZmZWN0LgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZCkgICAgIyBubyB2ZXJpZnkgY2FsbGFibGUgc3BlY2lmaWVkCisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKKyAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFsKKyAgICAgICAgICAgICgnSU5GTycsICczJyksCisgICAgICAgICAgICAoJ0VSUk9SJywgJzQnKSwKKyAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKKyAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IHN0aWxsIGhhcyB0aGUgc3R1ZmYgd2UgbG9nZ2VkIGJlZm9yZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFsKKyAgICAgICAgICAgICgnSU5GTycsICcxJyksCisgICAgICAgICAgICAoJ0VSUk9SJywgJzInKSwKKyAgICAgICAgXSwgcGF0PXIiXltcdy5dKyAtPiAoXHcrKTogKFxkKykkIikKKworICAgICAgICAjIE5vdywgcGVyZm9ybSB2ZXJpZmljYXRpb24gd2hpY2ggdHJhbnNmb3JtcyB0aGUgYnl0ZXMuCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcih0b19zZW5kWzo6LTFdLCB2ZXJpZnlfcmV2ZXJzZSkKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQorICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoWworICAgICAgICAgICAgKCdJTkZPJywgJzUnKSwKKyAgICAgICAgICAgICgnRVJST1InLCAnNicpLAorICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQorICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgc3RpbGwgaGFzIHRoZSBzdHVmZiB3ZSBsb2dnZWQgYmVmb3JlLgorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoWworICAgICAgICAgICAgKCdJTkZPJywgJzEnKSwKKyAgICAgICAgICAgICgnRVJST1InLCAnMicpLAorICAgICAgICBdLCBwYXQ9ciJeW1x3Ll0rIC0+IChcdyspOiAoXGQrKSQiKQorCiAgICAgZGVmIHRlc3Rfb3V0X29mX29yZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLm91dF9vZl9vcmRlcikKICAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdteW1vZHVsZScpLmhhbmRsZXJzWzBdCkBAIC0yNzg0LDE0ICsyODUyLDE0IEBACiAgICAgICAgIGwyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2RlZi5naGknKQogICAgICAgICBjMSA9IHIuZ2V0Q2hpbGQoJ3h5eicpCiAgICAgICAgIGMyID0gci5nZXRDaGlsZCgndXZ3Lnh5eicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMSBpcyBsb2dnaW5nLmdldExvZ2dlcigneHl6JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMiBpcyBsb2dnaW5nLmdldExvZ2dlcigndXZ3Lnh5eicpKQorICAgICAgICBzZWxmLmFzc2VydElzKGMxLCBsb2dnaW5nLmdldExvZ2dlcigneHl6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYzIsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCd1dncueHl6JykpCiAgICAgICAgIGMxID0gbDEuZ2V0Q2hpbGQoJ2RlZicpCiAgICAgICAgIGMyID0gYzEuZ2V0Q2hpbGQoJ2doaScpCiAgICAgICAgIGMzID0gbDEuZ2V0Q2hpbGQoJ2RlZi5naGknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYzEgaXMgbG9nZ2luZy5nZXRMb2dnZXIoJ2FiYy5kZWYnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMyIGlzIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdhYmMuZGVmLmdoaScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYzIgaXMgYzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYzEsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdhYmMuZGVmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYzIsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdhYmMuZGVmLmdoaScpKQorICAgICAgICBzZWxmLmFzc2VydElzKGMyLCBjMykKIAogCiBjbGFzcyBEZXJpdmVkTG9nUmVjb3JkKGxvZ2dpbmcuTG9nUmVjb3JkKToKQEAgLTI4MzQsNyArMjkwMiw3IEBACiAKIGNsYXNzIFF1ZXVlSGFuZGxlclRlc3QoQmFzZVRlc3QpOgogICAgICMgRG8gbm90IGJvdGhlciB3aXRoIGEgbG9nZ2VyIG5hbWUgZ3JvdXAuCi0gICAgZXhwZWN0ZWRfbG9nX3BhdCA9IHIiXltcdy5dKyAtPiAoW1x3XSspOiAoW1xkXSspJCIKKyAgICBleHBlY3RlZF9sb2dfcGF0ID0gciJeW1x3Ll0rIC0+IChcdyspOiAoXGQrKSQiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCkBAIC0zMTI4LDEzICszMTk2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzAgLSByZWxlYXNlJywgc2VsZi5jYWxsZWRbLTFdKQogCiAgICAgZGVmIHRlc3Rfd2l0aF9pb2Vycm9yX2luX2FjcXVpcmUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIElPRXJyb3IpCisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIE9TRXJyb3IpCiAKICAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fZmx1c2goc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnZmx1c2gnLCBJT0Vycm9yKQorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2ZsdXNoJywgT1NFcnJvcikKIAogICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9jbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIElPRXJyb3IpCisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBPU0Vycm9yKQogCiAgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2FjcXVpcmUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIFZhbHVlRXJyb3IpCkBAIC0zMzQxLDYgKzM0MDksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIHNlbGYub3JpZ2luYWxfbG9nZ2luZ19sZXZlbCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVuYW1lKHNlbGYpOgorCisgICAgICAgIGRlZiBjbGVhbnVwKGgxLCBoMiwgZm4pOgorICAgICAgICAgICAgaDEuY2xvc2UoKQorICAgICAgICAgICAgaDIuY2xvc2UoKQorICAgICAgICAgICAgb3MucmVtb3ZlKGZuKQorCiAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZmlsZW5hbWU9J3Rlc3QubG9nJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQpAQCAtMzM0OCwxNyArMzQyMiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaGFuZGxlciwgbG9nZ2luZy5GaWxlSGFuZGxlcikKIAogICAgICAgICBleHBlY3RlZCA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoJ3Rlc3QubG9nJywgJ2EnKQotICAgICAgICBzZWxmLmFkZENsZWFudXAoZXhwZWN0ZWQuY2xvc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0ubW9kZSwgZXhwZWN0ZWQuc3RyZWFtLm1vZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0ubmFtZSwgZXhwZWN0ZWQuc3RyZWFtLm5hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwLCBoYW5kbGVyLCBleHBlY3RlZCwgJ3Rlc3QubG9nJykKIAogICAgIGRlZiB0ZXN0X2ZpbGVtb2RlKHNlbGYpOgorCisgICAgICAgIGRlZiBjbGVhbnVwKGgxLCBoMiwgZm4pOgorICAgICAgICAgICAgaDEuY2xvc2UoKQorICAgICAgICAgICAgaDIuY2xvc2UoKQorICAgICAgICAgICAgb3MucmVtb3ZlKGZuKQorCiAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZmlsZW5hbWU9J3Rlc3QubG9nJywgZmlsZW1vZGU9J3diJykKIAogICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCiAgICAgICAgIGV4cGVjdGVkID0gbG9nZ2luZy5GaWxlSGFuZGxlcigndGVzdC5sb2cnLCAnd2InKQotICAgICAgICBzZWxmLmFkZENsZWFudXAoZXhwZWN0ZWQuY2xvc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0ubW9kZSwgZXhwZWN0ZWQuc3RyZWFtLm1vZGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwLCBoYW5kbGVyLCBleHBlY3RlZCwgJ3Rlc3QubG9nJykKIAogICAgIGRlZiB0ZXN0X3N0cmVhbShzZWxmKToKICAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQpAQCAtMzgxNCw2ICszODk0LDYzIEBACiAgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdXNycsIGRlbGF5PVRydWUpCiAKKyAgICBkZWYgdGVzdF9jb21wdXRlX3JvbGxvdmVyX2RhaWx5X2F0dGltZShzZWxmKToKKyAgICAgICAgY3VycmVudFRpbWUgPSAwCisgICAgICAgIGF0VGltZSA9IGRhdGV0aW1lLnRpbWUoMTIsIDAsIDApCisgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIoCisgICAgICAgICAgICBzZWxmLmZuLCB3aGVuPSdNSUROSUdIVCcsIGludGVydmFsPTEsIGJhY2t1cENvdW50PTAsIHV0Yz1UcnVlLAorICAgICAgICAgICAgYXRUaW1lPWF0VGltZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWN0dWFsID0gcmguY29tcHV0ZVJvbGxvdmVyKGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGN1cnJlbnRUaW1lICsgMTIgKiA2MCAqIDYwKQorCisgICAgICAgICAgICBhY3R1YWwgPSByaC5jb21wdXRlUm9sbG92ZXIoY3VycmVudFRpbWUgKyAxMyAqIDYwICogNjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgY3VycmVudFRpbWUgKyAzNiAqIDYwICogNjApCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICByaC5jbG9zZSgpCisKKyAgICAjQHVuaXR0ZXN0LnNraXBJZihUcnVlLCAnVGVtcG9yYXJpbHkgc2tpcHBlZCB3aGlsZSBmYWlsdXJlcyBpbnZlc3RpZ2F0ZWQuJykKKyAgICBkZWYgdGVzdF9jb21wdXRlX3JvbGxvdmVyX3dlZWtseV9hdHRpbWUoc2VsZik6CisgICAgICAgIGN1cnJlbnRUaW1lID0gaW50KHRpbWUudGltZSgpKQorICAgICAgICB0b2RheSA9IGN1cnJlbnRUaW1lIC0gY3VycmVudFRpbWUgJSA4NjQwMAorCisgICAgICAgIGF0VGltZSA9IGRhdGV0aW1lLnRpbWUoMTIsIDAsIDApCisKKyAgICAgICAgd2RheSA9IHRpbWUuZ210aW1lKHRvZGF5KS50bV93ZGF5CisgICAgICAgIGZvciBkYXkgaW4gcmFuZ2UoNyk6CisgICAgICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgICAgIHNlbGYuZm4sIHdoZW49J1clZCcgJSBkYXksIGludGVydmFsPTEsIGJhY2t1cENvdW50PTAsIHV0Yz1UcnVlLAorICAgICAgICAgICAgICAgIGF0VGltZT1hdFRpbWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgd2RheSA+IGRheToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGUgcm9sbG92ZXIgZGF5IGhhcyBhbHJlYWR5IHBhc3NlZCB0aGlzIHdlZWssIHNvIHdlCisgICAgICAgICAgICAgICAgICAgICMgZ28gb3ZlciBpbnRvIG5leHQgd2VlaworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICg3IC0gd2RheSArIGRheSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IChkYXkgLSB3ZGF5KQorICAgICAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCBleHBlY3RlZCBpcyBpbiBkYXlzIGZyb20gbm93LCBjb252ZXJ0IHRvIHNlY29uZHMKKyAgICAgICAgICAgICAgICBleHBlY3RlZCAqPSAyNCAqIDYwICogNjAKKyAgICAgICAgICAgICAgICAjIEFkZCBpbiB0aGUgcm9sbG92ZXIgdGltZQorICAgICAgICAgICAgICAgIGV4cGVjdGVkICs9IDEyICogNjAgKiA2MAorICAgICAgICAgICAgICAgICMgQWRkIGluIGFkanVzdG1lbnQgZm9yIHRvZGF5CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgKz0gdG9kYXkKKyAgICAgICAgICAgICAgICBhY3R1YWwgPSByaC5jb21wdXRlUm9sbG92ZXIodG9kYXkpCisgICAgICAgICAgICAgICAgaWYgYWN0dWFsICE9IGV4cGVjdGVkOgorICAgICAgICAgICAgICAgICAgICBwcmludCgnZmFpbGVkIGluIHRpbWV6b25lOiAlZCcgJSB0aW1lLnRpbWV6b25lKQorICAgICAgICAgICAgICAgICAgICBwcmludCgnbG9jYWwgdmFyczogJXMnICUgbG9jYWxzKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIGlmIGRheSA9PSB3ZGF5OgorICAgICAgICAgICAgICAgICAgICAjIGdvZXMgaW50byBmb2xsb3dpbmcgd2VlaworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCArPSA3ICogMjQgKiA2MCAqIDYwCisgICAgICAgICAgICAgICAgYWN0dWFsID0gcmguY29tcHV0ZVJvbGxvdmVyKHRvZGF5ICsgMTMgKiA2MCAqIDYwKQorICAgICAgICAgICAgICAgIGlmIGFjdHVhbCAhPSBleHBlY3RlZDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZhaWxlZCBpbiB0aW1lem9uZTogJWQnICUgdGltZS50aW1lem9uZSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2xvY2FsIHZhcnM6ICVzJyAlIGxvY2FscygpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcmguY2xvc2UoKQorCisKIGRlZiBzZWNzKCoqa3cpOgogICAgIHJldHVybiBkYXRldGltZS50aW1lZGVsdGEoKiprdykgLy8gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9MSkKIApAQCAtMzg3Miw3ICs0MDA5LDcgQEAKICAgICAgICAgaC5oYW5kbGUocikKICAgICAgICAgaC5jbG9zZSgpCiAgICAgICAgICMgTm93IHNlZSBpZiB0aGUgZXZlbnQgaXMgcmVjb3JkZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bV9yZWNzIDwgd2luMzJldnRsb2cuR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMoZWxoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKG51bV9yZWNzLCB3aW4zMmV2dGxvZy5HZXROdW1iZXJPZkV2ZW50TG9nUmVjb3JkcyhlbGgpKQogICAgICAgICBmbGFncyA9IHdpbjMyZXZ0bG9nLkVWRU5UTE9HX0JBQ0tXQVJEU19SRUFEIHwgXAogICAgICAgICAgICAgICAgIHdpbjMyZXZ0bG9nLkVWRU5UTE9HX1NFUVVFTlRJQUxfUkVBRAogICAgICAgICBmb3VuZCA9IEZhbHNlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggYjQxN2JlYS4uYjU5ODE5MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtMTA4Niw3ICsxMDg2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgKDI1NikudG9fYnl0ZXMsIDEsICdiaWcnLCBzaWduZWQ9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgKDI1NikudG9fYnl0ZXMsIDEsICdsaXR0bGUnLCBzaWduZWQ9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsICgyNTYpLnRvX2J5dGVzLCAxLCAnbGl0dGxlJywgc2lnbmVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsICgtMSkudG9fYnl0ZXMsIDIsICdiaWcnLCBzaWduZWQ9RmFsc2UpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCAoLTEpLnRvX2J5dGVzLCAyLCAnYmlnJywgc2lnbmVkPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCAoLTEpLnRvX2J5dGVzLCAyLCAnbGl0dGxlJywgc2lnbmVkPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgwKS50b19ieXRlcygwLCAnYmlnJyksIGInJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMSkudG9fYnl0ZXMoNSwgJ2JpZycpLCBiJ1x4MDBceDAwXHgwMFx4MDBceDAxJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCBhMTNjZjNiLi4yMGQ4NTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC02NjksNiArNjY5LDIwIEBACiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haWzoxMjhdKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCiAKKyAgICBkZWYgdGVzdF9yZWFkX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgIyBEcm9wIHN0cmVhbSBmb290ZXI6IENSQyAoNCBieXRlcyksIGluZGV4IHNpemUgKDQgYnl0ZXMpLAorICAgICAgICAjIGZsYWdzICgyIGJ5dGVzKSBhbmQgbWFnaWMgbnVtYmVyICgyIGJ5dGVzKS4KKyAgICAgICAgdHJ1bmNhdGVkID0gQ09NUFJFU1NFRF9YWls6LTEyXQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8odHJ1bmNhdGVkKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyh0cnVuY2F0ZWQpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQobGVuKElOUFVUKSksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCwgMSkKKyAgICAgICAgIyBJbmNvbXBsZXRlIDEyLWJ5dGUgaGVhZGVyLgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8odHJ1bmNhdGVkWzppXSkpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCwgMSkKKwogICAgIGRlZiB0ZXN0X3JlYWRfYmFkX2FyZ3Moc2VsZik6CiAgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQogICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCAzOWU4NjQzLi42YzY3OWNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC01OTYsNyArNTk2LDcgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgVGVzdE1haWxib3guc2V0VXAoc2VsZikKLSAgICAgICAgaWYgb3MubmFtZSBpbiAoJ250JywgJ29zMicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgaWYgKG9zLm5hbWUgPT0gJ250Jykgb3IgKHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyk6CiAgICAgICAgICAgICBzZWxmLl9ib3guY29sb24gPSAnIScKIAogICAgIGRlZiBhc3NlcnRNYWlsYm94RW1wdHkoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggN2UzN2YzOS4uYWIwNjIzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMjQsMzcgKzI0LDEzIEBACiAKIGNsYXNzIEludFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CiAgICAgZGVmIHRlc3RfaW50cyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoZSBmdWxsIHJhbmdlIG9mIFB5dGhvbiBpbnRzLgotICAgICAgICBuID0gc3lzLm1heHNpemUKKyAgICAgICAgIyBUZXN0IGEgcmFuZ2Ugb2YgUHl0aG9uIGludHMgbGFyZ2VyIHRoYW4gdGhlIG1hY2hpbmUgd29yZCBzaXplLgorICAgICAgICBuID0gc3lzLm1heHNpemUgKiogMgogICAgICAgICB3aGlsZSBuOgogICAgICAgICAgICAgZm9yIGV4cGVjdGVkIGluICgtbiwgbik6CiAgICAgICAgICAgICAgICAgc2VsZi5oZWxwZXIoZXhwZWN0ZWQpCiAgICAgICAgICAgICBuID0gbiA+PiAxCiAKLSAgICBkZWYgdGVzdF9pbnQ2NChzZWxmKToKLSAgICAgICAgIyBTaW11bGF0ZSBpbnQgbWFyc2hhbGluZyBvbiBhIDY0LWJpdCBib3guICBUaGlzIGlzIG1vc3QgaW50ZXJlc3RpbmcgaWYKLSAgICAgICAgIyB3ZSdyZSBydW5uaW5nIHRoZSB0ZXN0IG9uIGEgMzItYml0IGJveCwgb2YgY291cnNlLgotCi0gICAgICAgIGRlZiB0b19saXR0bGVfZW5kaWFuX3N0cmluZyh2YWx1ZSwgbmJ5dGVzKToKLSAgICAgICAgICAgIGIgPSBieXRlYXJyYXkoKQotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobmJ5dGVzKToKLSAgICAgICAgICAgICAgICBiLmFwcGVuZCh2YWx1ZSAmIDB4ZmYpCi0gICAgICAgICAgICAgICAgdmFsdWUgPj49IDgKLSAgICAgICAgICAgIHJldHVybiBiCi0KLSAgICAgICAgbWF4aW50NjQgPSAoMSA8PCA2MykgLSAxCi0gICAgICAgIG1pbmludDY0ID0gLW1heGludDY0LTEKLQotICAgICAgICBmb3IgYmFzZSBpbiBtYXhpbnQ2NCwgbWluaW50NjQsIC1tYXhpbnQ2NCwgLShtaW5pbnQ2NCA+PiAxKToKLSAgICAgICAgICAgIHdoaWxlIGJhc2U6Ci0gICAgICAgICAgICAgICAgcyA9IGInSScgKyB0b19saXR0bGVfZW5kaWFuX3N0cmluZyhiYXNlLCA4KQotICAgICAgICAgICAgICAgIGdvdCA9IG1hcnNoYWwubG9hZHMocykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2UsIGdvdCkKLSAgICAgICAgICAgICAgICBpZiBiYXNlID09IC0xOiAgIyBhIGZpeGVkLXBvaW50IGZvciBzaGlmdGluZyByaWdodCAxCi0gICAgICAgICAgICAgICAgICAgIGJhc2UgPSAwCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYmFzZSA+Pj0gMQotCiAgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKFRydWUsIEZhbHNlKToKICAgICAgICAgICAgIHNlbGYuaGVscGVyKGIpCkBAIC0yMDEsMTAgKzE3NywxNCBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgdGVzdF9sb2Fkc19yZWN1cnNpb24oc2VsZik6CisgICAgZGVmIHRlc3RfbG9hZHNfMnhfY29kZShzZWxmKToKICAgICAgICAgcyA9IGInYycgKyAoYidYJyAqIDQqNCkgKyBiJ3snICogMioqMjAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFyc2hhbC5sb2FkcywgcykKIAorICAgIGRlZiB0ZXN0X2xvYWRzX3JlY3Vyc2lvbihzZWxmKToKKyAgICAgICAgcyA9IGInYycgKyAoYidYJyAqIDQqNSkgKyBiJ3snICogMioqMjAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFyc2hhbC5sb2FkcywgcykKKwogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbl9saW1pdChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgYSBkZWVwbHkgbmVzdGVkIHN0cnVjdHVyZS4KICAgICAgICAgaGVhZCA9IGxhc3QgPSBbXQpAQCAtMjkxLDYgKzI3MSwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWFyc2hhbC5sb2FkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFkUmVhZGVyKG1hcnNoYWwuZHVtcHModmFsdWUpKSkKIAorICAgIGRlZiBfdGVzdF9lb2Yoc2VsZik6CisgICAgICAgIGRhdGEgPSBtYXJzaGFsLmR1bXBzKCgiaGVsbG8iLCAiZG9sbHkiLCBOb25lKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGRhdGEpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBtYXJzaGFsLmxvYWRzLCBkYXRhWzA6IGldKQorCiBMQVJHRV9TSVpFID0gMioqMzEKIHBvaW50ZXJfc2l6ZSA9IDggaWYgc3lzLm1heHNpemUgPiAweEZGRkZGRkZGIGVsc2UgNAogCkBAIC0zMzUsNiArMzIwLDEyMiBAQAogICAgIGRlZiB0ZXN0X2J5dGVhcnJheShzZWxmLCBzaXplKToKICAgICAgICAgc2VsZi5jaGVja191bm1hcnNoYWxsYWJsZShieXRlYXJyYXkoc2l6ZSkpCiAKK2RlZiBDb2xsZWN0T2JqZWN0SURzKGlkcywgb2JqKToKKyAgICAiIiJDb2xsZWN0IG9iamVjdCBpZHMgc2VlbiBpbiBhIHN0cnVjdHVyZSIiIgorICAgIGlmIGlkKG9iaikgaW4gaWRzOgorICAgICAgICByZXR1cm4KKyAgICBpZHMuYWRkKGlkKG9iaikpCisgICAgaWYgaXNpbnN0YW5jZShvYmosIChsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQpKToKKyAgICAgICAgZm9yIGUgaW4gb2JqOgorICAgICAgICAgICAgQ29sbGVjdE9iamVjdElEcyhpZHMsIGUpCisgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAgICAgIGZvciBrLCB2IGluIG9iai5pdGVtcygpOgorICAgICAgICAgICAgQ29sbGVjdE9iamVjdElEcyhpZHMsIGspCisgICAgICAgICAgICBDb2xsZWN0T2JqZWN0SURzKGlkcywgdikKKyAgICByZXR1cm4gbGVuKGlkcykKKworY2xhc3MgSW5zdGFuY2luZ1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CisgICAgaW50b2JqID0gMTIzMzIxCisgICAgZmxvYXRvYmogPSAxLjIzNDUKKyAgICBzdHJvYmogPSAiYWJjZGUiKjMKKyAgICBkaWN0b2JqID0geyJoZWxsbyI6ZmxvYXRvYmosICJnb29kYnllIjpmbG9hdG9iaiwgZmxvYXRvYmo6ImhlbGxvIn0KKworICAgIGRlZiBoZWxwZXIzKHNlbGYsIHJzYW1wbGUsIHJlY3Vyc2l2ZT1GYWxzZSwgc2ltcGxlPUZhbHNlKToKKyAgICAgICAgI3dlIGhhdmUgdHdvIGluc3RhbmNlcworICAgICAgICBzYW1wbGUgPSAocnNhbXBsZSwgcnNhbXBsZSkKKworICAgICAgICBuMCA9IENvbGxlY3RPYmplY3RJRHMoc2V0KCksIHNhbXBsZSkKKworICAgICAgICBzMyA9IG1hcnNoYWwuZHVtcHMoc2FtcGxlLCAzKQorICAgICAgICBuMyA9IENvbGxlY3RPYmplY3RJRHMoc2V0KCksIG1hcnNoYWwubG9hZHMoczMpKQorCisgICAgICAgICNzYW1lIG51bWJlciBvZiBpbnN0YW5jZXMgZ2VuZXJhdGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjMsIG4wKQorCisgICAgICAgIGlmIG5vdCByZWN1cnNpdmU6CisgICAgICAgICAgICAjY2FuIGNvbXBhcmUgd2l0aCB2ZXJzaW9uIDIKKyAgICAgICAgICAgIHMyID0gbWFyc2hhbC5kdW1wcyhzYW1wbGUsIDIpCisgICAgICAgICAgICBuMiA9IENvbGxlY3RPYmplY3RJRHMoc2V0KCksIG1hcnNoYWwubG9hZHMoczIpKQorICAgICAgICAgICAgI29sZCBmb3JtYXQgZ2VuZXJhdGVkIG1vcmUgaW5zdGFuY2VzCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobjIsIG4wKQorCisgICAgICAgICAgICAjaWYgY29tcGxleCBvYmplY3RzIGFyZSBpbiB0aGVyZSwgb2xkIGZvcm1hdCBpcyBsYXJnZXIKKyAgICAgICAgICAgIGlmIG5vdCBzaW1wbGU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzMiksIGxlbihzMykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihzMiksIGxlbihzMykpCisKKyAgICBkZWYgdGVzdEludChzZWxmKToKKyAgICAgICAgc2VsZi5oZWxwZXIoc2VsZi5pbnRvYmopCisgICAgICAgIHNlbGYuaGVscGVyMyhzZWxmLmludG9iaiwgc2ltcGxlPVRydWUpCisKKyAgICBkZWYgdGVzdEZsb2F0KHNlbGYpOgorICAgICAgICBzZWxmLmhlbHBlcihzZWxmLmZsb2F0b2JqKQorICAgICAgICBzZWxmLmhlbHBlcjMoc2VsZi5mbG9hdG9iaikKKworICAgIGRlZiB0ZXN0U3RyKHNlbGYpOgorICAgICAgICBzZWxmLmhlbHBlcihzZWxmLnN0cm9iaikKKyAgICAgICAgc2VsZi5oZWxwZXIzKHNlbGYuc3Ryb2JqKQorCisgICAgZGVmIHRlc3REaWN0KHNlbGYpOgorICAgICAgICBzZWxmLmhlbHBlcihzZWxmLmRpY3RvYmopCisgICAgICAgIHNlbGYuaGVscGVyMyhzZWxmLmRpY3RvYmopCisKKyAgICBkZWYgdGVzdE1vZHVsZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29kZSA9IGYucmVhZCgpCisgICAgICAgIGlmIF9fZmlsZV9fLmVuZHN3aXRoKCIucHkiKToKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGNvZGUsIF9fZmlsZV9fLCAiZXhlYyIpCisgICAgICAgIHNlbGYuaGVscGVyKGNvZGUpCisgICAgICAgIHNlbGYuaGVscGVyMyhjb2RlKQorCisgICAgZGVmIHRlc3RSZWN1cnNpb24oc2VsZik6CisgICAgICAgIGQgPSBkaWN0KHNlbGYuZGljdG9iaikKKyAgICAgICAgZFsic2VsZiJdID0gZAorICAgICAgICBzZWxmLmhlbHBlcjMoZCwgcmVjdXJzaXZlPVRydWUpCisgICAgICAgIGwgPSBbc2VsZi5kaWN0b2JqXQorICAgICAgICBsLmFwcGVuZChsKQorICAgICAgICBzZWxmLmhlbHBlcjMobCwgcmVjdXJzaXZlPVRydWUpCisKK2NsYXNzIENvbXBhdGliaWxpdHlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF90ZXN0KHNlbGYsIHZlcnNpb24pOgorICAgICAgICB3aXRoIG9wZW4oX19maWxlX18sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb2RlID0gZi5yZWFkKCkKKyAgICAgICAgaWYgX19maWxlX18uZW5kc3dpdGgoIi5weSIpOgorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoY29kZSwgX19maWxlX18sICJleGVjIikKKyAgICAgICAgZGF0YSA9IG1hcnNoYWwuZHVtcHMoY29kZSwgdmVyc2lvbikKKyAgICAgICAgbWFyc2hhbC5sb2FkcyhkYXRhKQorCisgICAgZGVmIHRlc3QwVG8zKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KDApCisKKyAgICBkZWYgdGVzdDFUbzMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoMSkKKworICAgIGRlZiB0ZXN0MlRvMyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgyKQorCisgICAgZGVmIHRlc3QzVG8zKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KDMpCisKK2NsYXNzIEludGVybmluZ1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CisgICAgc3Ryb2JqID0gInRoaXMgaXMgYW4gaW50ZXJuZWQgc3RyaW5nIgorICAgIHN0cm9iaiA9IHN5cy5pbnRlcm4oc3Ryb2JqKQorCisgICAgZGVmIHRlc3RJbnRlcm4oc2VsZik6CisgICAgICAgIHMgPSBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMoc2VsZi5zdHJvYmopKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNlbGYuc3Ryb2JqKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKHMpLCBpZChzZWxmLnN0cm9iaikpCisgICAgICAgIHMyID0gc3lzLmludGVybihzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKHMyKSwgaWQocykpCisKKyAgICBkZWYgdGVzdE5vSW50ZXJuKHNlbGYpOgorICAgICAgICBzID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKHNlbGYuc3Ryb2JqLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzZWxmLnN0cm9iaikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChzKSwgaWQoc2VsZi5zdHJvYmopKQorICAgICAgICBzMiA9IHN5cy5pbnRlcm4ocykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChzMiksIGlkKHMpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChJbnRUZXN0Q2FzZSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CmluZGV4IGQ2MTFhMzEuLjRkZTRmNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQpAQCAtNTIwLDEyICs1MjAsMTIgQEAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9zZWVrKHNlbGYpOgogICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcygpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgbWVtaW8uc2VlaywgLTEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIG1lbWlvLnNlZWssIDMsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIG1lbWlvLnNlZWssIC0zLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBtZW1pby5zZWVrLCAtMSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgbWVtaW8uc2VlaywgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgbWVtaW8uc2VlaywgMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbWVtaW8uc2VlaywgLTEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG1lbWlvLnNlZWssIDMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG1lbWlvLnNlZWssIC0zLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtZW1pby5zZWVrLCAtMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbWVtaW8uc2VlaywgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbWVtaW8uc2VlaywgMSwgMikKIAogICAgIGRlZiB0ZXN0X3RleHRpb19wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21tYXAucHkgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKaW5kZXggZDA2NjM2OC4uYjFjYzk3MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQpAQCAtMSwxMSArMSwxMiBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChURVNURk4sIHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZSwgdW5saW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcywgXzJHLCBfNEcpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzLCBfMkcsIF80RywgZ2NfY29sbGVjdCkKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKK2ltcG9ydCB3ZWFrcmVmCiAKICMgU2tpcCB0ZXN0IGlmIHdlIGNhbid0IGltcG9ydCBtbWFwLgogbW1hcCA9IGltcG9ydF9tb2R1bGUoJ21tYXAnKQpAQCAtMjQ1LDcgKzI0Niw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfZmlsZV9kZXNjKHNlbGYpOgogICAgICAgICAjIFRyeSBvcGVuaW5nIGEgYmFkIGZpbGUgZGVzY3JpcHRvci4uLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtbWFwLmVycm9yLCBtbWFwLm1tYXAsIC0yLCA0MDk2KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtbWFwLm1tYXAsIC0yLCA0MDk2KQogCiAgICAgZGVmIHRlc3RfdG91Z2hlcl9maW5kKHNlbGYpOgogICAgICAgICAjIERvIGEgdG91Z2hlciAuZmluZCgpIHRlc3QuICBTRiBidWcgNTE1OTQzIHBvaW50ZWQgb3V0IHRoYXQsIGluIDIuMiwKQEAgLTY1OCw3ICs2NTksNyBAQAogICAgICAgICAgICAgbSA9IG1tYXAubW1hcChmLmZpbGVubygpLCAwKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbS5yZXNpemUoMCkgIyB3aWxsIHJhaXNlIFdpbmRvd3NFcnJvcgorICAgICAgICAgICAgICAgIG0ucmVzaXplKDApICMgd2lsbCByYWlzZSBPU0Vycm9yCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdHJ5OgpAQCAtNjczLDcgKzY3NCw3IEBACiAgICAgICAgICAgICAjIHBhcmFtZXRlcnMgdG8gX2dldF9vc2ZoYW5kbGUuCiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhtbWFwLmVycm9yKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBtID0gbW1hcC5tbWFwKHMuZmlsZW5vKCksIDEwKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKQEAgLTY4NCwxNCArNjg1LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNsb3NlZCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBJT0Vycm9yIGdldHMgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIE9TRXJyb3IgZ2V0cyBwYXNzZWQgdGhyb3VnaAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgZXhjOgogICAgICAgICAgICAgd2l0aCBtbWFwLm1tYXAoLTEsIDEwKSBhcyBtOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5leGNlcHRpb24sIElPRXJyb3IsCisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLmV4Y2VwdGlvbiwgT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBleGNlcHRpb24gcmFpc2VkIGluIGNvbnRleHQgbWFuYWdlciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNsb3NlZCwgImNvbnRleHQgbWFuYWdlciBmYWlsZWQiKQogCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgIyBDaGVjayBtbWFwIG9iamVjdHMgYXJlIHdlYWtyZWZhYmxlCisgICAgICAgIG1tID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihtbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBtbSkKKyAgICAgICAgZGVsIG1tCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCisKIGNsYXNzIExhcmdlTW1hcFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTcwOSw3ICs3MTksNyBAQAogICAgICAgICAgICAgZi5zZWVrKG51bV96ZXJvZXMpCiAgICAgICAgICAgICBmLndyaXRlKHRhaWwpCiAgICAgICAgICAgICBmLmZsdXNoKCkKLSAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBPdmVyZmxvd0Vycm9yKToKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSBsYXJnZWZpbGUgc3VwcG9ydCIpCiAgICAgICAgIHJldHVybiBmCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CmluZGV4IGU1YTI1MjUuLjVhOWI1MDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CkBAIC0xLDYgKzEsOCBAQAogIyBUZXN0IHRoZSBtb2R1bGUgdHlwZQogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZ2NfY29sbGVjdAorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogaW1wb3J0IHN5cwogTW9kdWxlVHlwZSA9IHR5cGUoc3lzKQpAQCAtMzMsNyArMzUsMTAgQEAKICAgICAgICAgZm9vID0gTW9kdWxlVHlwZSgiZm9vIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19uYW1lX18sICJmb28iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5fX2RvY19fLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5fX2RpY3RfXywgeyJfX25hbWVfXyI6ICJmb28iLCAiX19kb2NfXyI6IE5vbmV9KQorICAgICAgICBzZWxmLmFzc2VydElzKGZvby5fX2xvYWRlcl9fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvby5fX3BhY2thZ2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kaWN0X18sIHsiX19uYW1lX18iOiAiZm9vIiwgIl9fZG9jX18iOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2xvYWRlcl9fIjogTm9uZSwgIl9fcGFja2FnZV9fIjogTm9uZX0pCiAKICAgICBkZWYgdGVzdF9hc2NpaV9kb2NzdHJpbmcoc2VsZik6CiAgICAgICAgICMgQVNDSUkgZG9jc3RyaW5nCkBAIC00MSw3ICs0Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fbmFtZV9fLCAiZm9vIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kb2NfXywgImZvb2RvYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fZGljdF9fLAotICAgICAgICAgICAgICAgICAgICAgICAgIHsiX19uYW1lX18iOiAiZm9vIiwgIl9fZG9jX18iOiAiZm9vZG9jIn0pCisgICAgICAgICAgICAgICAgICAgICAgICAgeyJfX25hbWVfXyI6ICJmb28iLCAiX19kb2NfXyI6ICJmb29kb2MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiX19sb2FkZXJfXyI6IE5vbmUsICJfX3BhY2thZ2VfXyI6IE5vbmV9KQogCiAgICAgZGVmIHRlc3RfdW5pY29kZV9kb2NzdHJpbmcoc2VsZik6CiAgICAgICAgICMgVW5pY29kZSBkb2NzdHJpbmcKQEAgLTQ5LDcgKzU1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19uYW1lX18sICJmb28iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5fX2RvY19fLCAiZm9vZG9jXHUxMjM0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kaWN0X18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgeyJfX25hbWVfXyI6ICJmb28iLCAiX19kb2NfXyI6ICJmb29kb2NcdTEyMzQifSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7Il9fbmFtZV9fIjogImZvbyIsICJfX2RvY19fIjogImZvb2RvY1x1MTIzNCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2xvYWRlcl9fIjogTm9uZSwgIl9fcGFja2FnZV9fIjogTm9uZX0pCiAKICAgICBkZWYgdGVzdF9yZWluaXQoc2VsZik6CiAgICAgICAgICMgUmVpbml0aWFsaXphdGlvbiBzaG91bGQgbm90IHJlcGxhY2UgdGhlIF9fZGljdF9fCkBAIC02MSwxMCArNjgsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kb2NfXywgImZvb2RvYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhciwgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fZGljdF9fLAotICAgICAgICAgICAgICB7Il9fbmFtZV9fIjogImZvbyIsICJfX2RvY19fIjogImZvb2RvYyIsICJiYXIiOiA0Mn0pCisgICAgICAgICAgICAgIHsiX19uYW1lX18iOiAiZm9vIiwgIl9fZG9jX18iOiAiZm9vZG9jIiwgImJhciI6IDQyLAorICAgICAgICAgICAgICAgIl9fbG9hZGVyX18iOiBOb25lLCAiX19wYWNrYWdlX18iOiBOb25lfSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2RpY3RfXyBpcyBkKQogCi0gICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQogICAgIGRlZiB0ZXN0X2RvbnRfY2xlYXJfZGljdChzZWxmKToKICAgICAgICAgIyBTZWUgaXNzdWUgNzE0MC4KICAgICAgICAgZGVmIGYoKToKQEAgLTg5LDYgKzk2LDE0IEBACiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Ryb3llZCwgWzFdKQogCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoImZvbyIpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBtKQorICAgICAgICBkZWwgbQorICAgICAgICBnY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfbWluaW1hbChzZWxmKToKICAgICAgICAgIyByZXBycyB3aGVuIG1vZHVsZXMgaGF2ZSBubyBfX2ZpbGVfXywgX19uYW1lX18sIG9yIF9fbG9hZGVyX18KICAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCkBAIC0xMTAsMTMgKzEyNSwxOSBAQAogICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICc/JyBmcm9tICcvdG1wL2Zvby5weSc+IikKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbG9hZGVyX2FzX05vbmUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBhc3NlcnQgbS5fX2xvYWRlcl9fIGlzIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnZm9vJz4iKQorCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9iYXJlX2xvYWRlcl9idXRfbm9fbmFtZShzZWxmKToKICAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCiAgICAgICAgIGRlbCBtLl9fbmFtZV9fCiAgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KICAgICAgICAgbS5fX2xvYWRlcl9fID0gQmFyZUxvYWRlcgorICAgICAgICBsb2FkZXJfcmVwciA9IHJlcHIoQmFyZUxvYWRlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkJhcmVMb2FkZXInPik+IikKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoe30pPiIuZm9ybWF0KGxvYWRlcl9yZXByKSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZnVsbF9sb2FkZXJfYnV0X25vX25hbWUoc2VsZik6CiAgICAgICAgICMgbS5fX2xvYWRlcl9fLm1vZHVsZV9yZXByKCkgd2lsbCBmYWlsIGJlY2F1c2UgdGhlIG1vZHVsZSBoYXMgbm8KQEAgLTEyNiwxNSArMTQ3LDE3IEBACiAgICAgICAgIGRlbCBtLl9fbmFtZV9fCiAgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KICAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBsb2FkZXJfcmVwciA9IHJlcHIoRnVsbExvYWRlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkZ1bGxMb2FkZXInPik+IikKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoe30pPiIuZm9ybWF0KGxvYWRlcl9yZXByKSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfYmFyZV9sb2FkZXIoc2VsZik6CiAgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQogICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCiAgICAgICAgIG0uX19sb2FkZXJfXyA9IEJhcmVMb2FkZXIKKyAgICAgICAgbW9kdWxlX3JlcHIgPSByZXByKEJhcmVMb2FkZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnZm9vJyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkJhcmVMb2FkZXInPik+IikKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICdmb28nICh7fSk+Ii5mb3JtYXQobW9kdWxlX3JlcHIpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcihzZWxmKToKICAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCkBAIC0xNjcsNiArMTkwLDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocls6MjVdLCAiPG1vZHVsZSAndW5pdHRlc3QnIGZyb20gJyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoclstMTM6XSwgIl9faW5pdF9fLnB5Jz4iKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX2ZpbmFsaXphdGlvbl9hdF9zaHV0ZG93bihzZWxmKToKKyAgICAgICAgIyBNb2R1bGUgZ2xvYmFscyBhbmQgYnVpbHRpbnMgc2hvdWxkIHN0aWxsIGJlIGF2YWlsYWJsZSBkdXJpbmcgc2h1dGRvd24KKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCAiZnJvbSB0ZXN0IGltcG9ydCBmaW5hbF9hIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIpCisgICAgICAgIGxpbmVzID0gb3V0LnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaW5lcyksIHsKKyAgICAgICAgICAgIGIieCA9IGEiLAorICAgICAgICAgICAgYiJ4ID0gYiIsCisgICAgICAgICAgICBiImZpbmFsX2EueCA9IGEiLAorICAgICAgICAgICAgYiJmaW5hbF9iLnggPSBiIiwKKyAgICAgICAgICAgIGIibGVuID0gbGVuIiwKKyAgICAgICAgICAgIGIic2h1dGlsLnJtdHJlZSA9IHJtdHJlZSJ9KQorCiAgICAgIyBmcm96ZW4gYW5kIG5hbWVzcGFjZSBtb2R1bGUgcmVwcnMgYXJlIHRlc3RlZCBpbiBpbXBvcnRsaWIuCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKaW5kZXggZmViN2JkNS4uOTExNDhhNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CkBAIC0xNzYsNTcgKzE3NiwyOCBAQAogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQogCiBjbGFzcyBUZXN0X1N0cmVhbVdyaXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaWYgbGVuKCdcVTAwMDEyMzQ1JykgPT0gMjogIyBVQ1MyCi0gICAgICAgIGRlZiB0ZXN0X2diMTgwMzAoc2VsZik6Ci0gICAgICAgICAgICBzPSBpby5CeXRlc0lPKCkKLSAgICAgICAgICAgIGMgPSBjb2RlY3MuZ2V0d3JpdGVyKCdnYjE4MDMwJykocykKLSAgICAgICAgICAgIGMud3JpdGUoJzEyMycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgYicxMjMnKQotICAgICAgICAgICAgYy53cml0ZSgnXFUwMDAxMjM0NScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgYicxMjNceDkwN1x4OTU5JykKLSAgICAgICAgICAgIGMud3JpdGUoJ1xVMDAwMTIzNDUnWzBdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGInMTIzXHg5MDdceDk1OScpCi0gICAgICAgICAgICBjLndyaXRlKCdcVTAwMDEyMzQ1J1sxXSArICdcVTAwMDEyMzQ1JyArICdcdWFjMDBcdTAwYWMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgIGInMTIzXHg5MDdceDk1OVx4OTA3XHg5NTlceDkwN1x4OTU5XHg4MjdceGNmNVx4ODEwXHg4NTEnKQotICAgICAgICAgICAgYy53cml0ZSgnXFUwMDAxMjM0NSdbMF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgYicxMjNceDkwN1x4OTU5XHg5MDdceDk1OVx4OTA3XHg5NTlceDgyN1x4Y2Y1XHg4MTBceDg1MScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIGMucmVzZXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgYicxMjNceDkwN1x4OTU5XHg5MDdceDk1OVx4OTA3XHg5NTlceDgyN1x4Y2Y1XHg4MTBceDg1MScpCisgICAgZGVmIHRlc3RfZ2IxODAzMChzZWxmKToKKyAgICAgICAgcz0gaW8uQnl0ZXNJTygpCisgICAgICAgIGMgPSBjb2RlY3MuZ2V0d3JpdGVyKCdnYjE4MDMwJykocykKKyAgICAgICAgYy53cml0ZSgnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGInMTIzJykKKyAgICAgICAgYy53cml0ZSgnXFUwMDAxMjM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBiJzEyM1x4OTA3XHg5NTknKQorICAgICAgICBjLndyaXRlKCdcdWFjMDBcdTAwYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICBiJzEyM1x4OTA3XHg5NTlceDgyN1x4Y2Y1XHg4MTBceDg1MScpCiAKLSAgICAgICAgZGVmIHRlc3RfdXRmXzgoc2VsZik6Ci0gICAgICAgICAgICBzPSBpby5CeXRlc0lPKCkKLSAgICAgICAgICAgIGMgPSBjb2RlY3MuZ2V0d3JpdGVyKCd1dGYtOCcpKHMpCi0gICAgICAgICAgICBjLndyaXRlKCcxMjMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGInMTIzJykKLSAgICAgICAgICAgIGMud3JpdGUoJ1xVMDAwMTIzNDUnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGInMTIzXHhmMFx4OTJceDhkXHg4NScpCi0KLSAgICAgICAgICAgICMgUHl0aG9uIHV0Zi04IGNvZGVjIGNhbid0IGJ1ZmZlciBzdXJyb2dhdGUgcGFpcnMgeWV0LgotICAgICAgICAgICAgaWYgMDoKLSAgICAgICAgICAgICAgICBjLndyaXRlKCdcVTAwMDEyMzQ1J1swXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgYicxMjNceGYwXHg5Mlx4OGRceDg1JykKLSAgICAgICAgICAgICAgICBjLndyaXRlKCdcVTAwMDEyMzQ1J1sxXSArICdcVTAwMDEyMzQ1JyArICdcdWFjMDBcdTAwYWMnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICBiJzEyM1x4ZjBceDkyXHg4ZFx4ODVceGYwXHg5Mlx4OGRceDg1XHhmMFx4OTJceDhkXHg4NScKLSAgICAgICAgICAgICAgICAgICAgYidceGVhXHhiMFx4ODBceGMyXHhhYycpCi0gICAgICAgICAgICAgICAgYy53cml0ZSgnXFUwMDAxMjM0NSdbMF0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgIGInMTIzXHhmMFx4OTJceDhkXHg4NVx4ZjBceDkyXHg4ZFx4ODVceGYwXHg5Mlx4OGRceDg1JwotICAgICAgICAgICAgICAgICAgICBiJ1x4ZWFceGIwXHg4MFx4YzJceGFjJykKLSAgICAgICAgICAgICAgICBjLnJlc2V0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgYicxMjNceGYwXHg5Mlx4OGRceDg1XHhmMFx4OTJceDhkXHg4NVx4ZjBceDkyXHg4ZFx4ODUnCi0gICAgICAgICAgICAgICAgICAgIGInXHhlYVx4YjBceDgwXHhjMlx4YWNceGVkXHhhMFx4ODgnKQotICAgICAgICAgICAgICAgIGMud3JpdGUoJ1xVMDAwMTIzNDUnWzFdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICBiJzEyM1x4ZjBceDkyXHg4ZFx4ODVceGYwXHg5Mlx4OGRceDg1XHhmMFx4OTJceDhkXHg4NScKLSAgICAgICAgICAgICAgICAgICAgYidceGVhXHhiMFx4ODBceGMyXHhhY1x4ZWRceGEwXHg4OFx4ZWRceGJkXHg4NScpCi0KLSAgICBlbHNlOiAjIFVDUzQKLSAgICAgICAgcGFzcworICAgIGRlZiB0ZXN0X3V0Zl84KHNlbGYpOgorICAgICAgICBzPSBpby5CeXRlc0lPKCkKKyAgICAgICAgYyA9IGNvZGVjcy5nZXR3cml0ZXIoJ3V0Zi04JykocykKKyAgICAgICAgYy53cml0ZSgnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGInMTIzJykKKyAgICAgICAgYy53cml0ZSgnXFUwMDAxMjM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBiJzEyM1x4ZjBceDkyXHg4ZFx4ODUnKQorICAgICAgICBjLndyaXRlKCdcdWFjMDBcdTAwYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgIGInMTIzXHhmMFx4OTJceDhkXHg4NScKKyAgICAgICAgICAgIGInXHhlYVx4YjBceDgwXHhjMlx4YWMnKQogCiAgICAgZGVmIHRlc3Rfc3RyZWFtd3JpdGVyX3N0cndyaXRlKHNlbGYpOgogICAgICAgICBzID0gaW8uQnl0ZXNJTygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IGFhOTg1ZTMuLjJhNjM4MWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC0xNzU3LDYgKzE3NTcsMzUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuZ2V0KCksIGV4cGVjdGVkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5tYXBfYXN5bmMsIHNxciwgTCkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF90cmFjZWJhY2soY2xzKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKDEyMykgIyBzb21lIGNvbW1lbnQKKworICAgIGRlZiB0ZXN0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgIyBXZSB3YW50IGVuc3VyZSB0aGF0IHRoZSB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBpcworICAgICAgICAjIGNvbnRhaW5lZCBpbiB0aGUgdHJhY2ViYWNrIHJhaXNlZCBpbiB0aGUgbWFpbiBwcm9jZXNzLgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICB3aXRoIHNlbGYuUG9vbCgxKSBhcyBwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcC5hcHBseShzZWxmLl90ZXN0X3RyYWNlYmFjaykKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGV4YyA9IGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignZXhwZWN0ZWQgUnVudGltZUVycm9yJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShleGMpLCBSdW50aW1lRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5hcmdzLCAoMTIzLCkpCisgICAgICAgICAgICBjYXVzZSA9IGV4Yy5fX2NhdXNlX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShjYXVzZSksIG11bHRpcHJvY2Vzc2luZy5wb29sLlJlbW90ZVRyYWNlYmFjaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3JhaXNlIFJ1bnRpbWVFcnJvcigxMjMpICMgc29tZSBjb21tZW50JywgY2F1c2UudGIpCisKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGYxOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXhjCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgUnVudGltZUVycm9yKDEyMykgIyBzb21lIGNvbW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmMS5nZXR2YWx1ZSgpKQorCiBkZWYgcmFpc2luZygpOgogICAgIHJhaXNlIEtleUVycm9yKCJrZXkiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weQppbmRleCA3MDY3YjEyLi40NTcwYmVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTEsNyArMSwxMSBAQAotaW1wb3J0IHN5cwogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCB1bml0dGVzdAorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgTmFtZXNwYWNlTG9hZGVyCitpbXBvcnQgaW1wb3J0bGliLmFiYworaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CkBAIC0yODYsOSArMjkwLDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYV90ZXN0LmF0dHIsICdpbiBtb2R1bGUnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoKk5hbWVzcGFjZVBhY2thZ2VUZXN0Ll9fc3ViY2xhc3Nlc19fKCkpCitjbGFzcyBBQkNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9hZGVyID0gTmFtZXNwYWNlTG9hZGVyKCdmb28nLCBbJ3BrZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisKKyAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZSgnZm9vJykpCisKKyAgICBkZWYgdGVzdF9nZXRfY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5sb2FkZXIuZ2V0X2NvZGUoJ2ZvbycpLCB0eXBlcy5Db2RlVHlwZSkpCisKKyAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZGVyLmdldF9zb3VyY2UoJ2ZvbycpLCAnJykKKworICAgIGRlZiB0ZXN0X2FiY19pc2luc3RhbmNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmxvYWRlciwgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyKSkKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKaW5kZXggMTlmYjEwYS4uN2NmNDk3YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQpAQCAtMjY0LDcgKzI2NCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VydmVyLmhlbHAoKQotICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CmluZGV4IGUzZTI1NjAuLmRiMjhlMWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdGRhdGEgPSBvcGVuX3VybHJlc291cmNlKFRFU1REQVRBVVJMLCBlbmNvZGluZz0idXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrPWNoZWNrX3ZlcnNpb24pCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgSFRUUEV4Y2VwdGlvbik6CisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSFRUUEV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDb3VsZCBub3QgcmV0cmlldmUgIiArIFRFU1REQVRBVVJMKQogICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdGRhdGEuY2xvc2UpCiAgICAgICAgIGZvciBsaW5lIGluIHRlc3RkYXRhOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQppbmRleCBmODA5ODc2Li4yODVlZjYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQpAQCAtMjU2LDYgKzI1Niw0MCBAQAogICAgICAgICAgICAgICAgICAgICAjIGRpYWxvZ3MgKCM0ODA0KQogICAgICAgICAgICAgICAgICAgICBudHBhdGguc2FtZW9wZW5maWxlKC0xLCAtMSkKIAorICAgIGRlZiB0ZXN0X2lzbW91bnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudHBhdGguaXNtb3VudCgiYzpcXCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnRwYXRoLmlzbW91bnQoIkM6XFwiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KCJjOi8iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KCJDOi8iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KCJcXFxcLlxcYzpcXCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnRwYXRoLmlzbW91bnQoIlxcXFwuXFxDOlxcIikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KGIiYzpcXCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnRwYXRoLmlzbW91bnQoYiJDOlxcIikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudHBhdGguaXNtb3VudChiImM6LyIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnRwYXRoLmlzbW91bnQoYiJDOi8iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KGIiXFxcXC5cXGM6XFwiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KGIiXFxcXC5cXEM6XFwiKSkKKworICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShudHBhdGguaXNtb3VudChkKSkKKworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBjdXJyZW50IGZvbGRlciBpc24ndCB0aGUgcm9vdCBmb2xkZXIKKyAgICAgICAgICAgICMgKG9yIGFueSBvdGhlciB2b2x1bWUgcm9vdCkuIFRoZSBkcml2ZS1yZWxhdGl2ZQorICAgICAgICAgICAgIyBsb2NhdGlvbnMgYmVsb3cgY2Fubm90IHRoZW4gcmVmZXIgdG8gbW91bnQgcG9pbnRzCisgICAgICAgICAgICAjCisgICAgICAgICAgICBkcml2ZSwgcGF0aCA9IG50cGF0aC5zcGxpdGRyaXZlKHN5cy5leGVjdXRhYmxlKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2Qob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShudHBhdGguaXNtb3VudChkcml2ZS5sb3dlcigpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG50cGF0aC5pc21vdW50KGRyaXZlLnVwcGVyKCkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnRwYXRoLmlzbW91bnQoIlxcXFxsb2NhbGhvc3RcXGMkIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnRwYXRoLmlzbW91bnQoIlxcXFxsb2NhbGhvc3RcXGMkXFwiKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG50cGF0aC5pc21vdW50KGIiXFxcXGxvY2FsaG9zdFxcYyQiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudHBhdGguaXNtb3VudChiIlxcXFxsb2NhbGhvc3RcXGMkXFwiKSkKIAogY2xhc3MgTnRDb21tb25UZXN0KHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhdGhtb2R1bGUgPSBudHBhdGgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlbnB0eS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3BlbnB0eS5weQppbmRleCA2Mzg0MzcwLi40Nzg1MTA3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5CkBAIC00LDcgKzQsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBpZiBub3QgaGFzYXR0cihvcywgIm9wZW5wdHkiKToKLSAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTm8gb3BlbnB0eSgpIGF2YWlsYWJsZS4iKQorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvcy5vcGVucHR5KCkgbm90IGF2YWlsYWJsZS4iKQogCiAKIGNsYXNzIE9wZW5wdHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGZhNjA4YjkuLmFiNThhOTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMSw4ICsxLDEwIEBACi1pbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAorcHlfb3BlcmF0b3IgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ29wZXJhdG9yJywgYmxvY2tlZD1bJ19vcGVyYXRvciddKQorY19vcGVyYXRvciA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnb3BlcmF0b3InLCBmcmVzaD1bJ19vcGVyYXRvciddKQorCiBjbGFzcyBTZXExOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsc3QpOgogICAgICAgICBzZWxmLmxzdCA9IGxzdApAQCAtMzIsOCArMzQsOSBAQAogICAgICAgICByZXR1cm4gb3RoZXIgKiBzZWxmLmxzdAogCiAKLWNsYXNzIE9wZXJhdG9yVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgT3BlcmF0b3JUZXN0Q2FzZToKICAgICBkZWYgdGVzdF9sdChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmx0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmx0LCAxaiwgMmopCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3BlcmF0b3IubHQoMSwgMCkpCkBAIC00NCw2ICs0Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sdCgxLCAyLjApKQogCiAgICAgZGVmIHRlc3RfbGUoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sZSwgMWosIDJqKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wZXJhdG9yLmxlKDEsIDApKQpAQCAtNTQsNiArNTgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubGUoMSwgMi4wKSkKIAogICAgIGRlZiB0ZXN0X2VxKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yCkBAIC02Nyw2ICs3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3BlcmF0b3IuZXEoMSwgMi4wKSkKIAogICAgIGRlZiB0ZXN0X25lKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yCkBAIC04MCw2ICs4Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5uZSgxLCAyLjApKQogCiAgICAgZGVmIHRlc3RfZ2Uoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZSwgMWosIDJqKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZ2UoMSwgMCkpCkBAIC05MCw2ICs5Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3BlcmF0b3IuZ2UoMSwgMi4wKSkKIAogICAgIGRlZiB0ZXN0X2d0KHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZ3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZ3QsIDFqLCAyaikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmd0KDEsIDApKQpAQCAtMTAwLDIyICsxMDgsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGVyYXRvci5ndCgxLCAyLjApKQogCiAgICAgZGVmIHRlc3RfYWJzKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWJzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFicywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hYnMoLTEpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmFicygxKSwgMSkKIAogICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsIE5vbmUsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hZGQoMywgNCkgPT0gNykKIAogICAgIGRlZiB0ZXN0X2JpdHdpc2VfYW5kKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYW5kXykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hbmRfLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuYW5kXygweGYsIDB4YSkgPT0gMHhhKQogCiAgICAgZGVmIHRlc3RfY29uY2F0KHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCwgTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpID09ICdweXRob24nKQpAQCAtMTI1LDEyICsxMzcsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIDEzLCAyOSkKIAogICAgIGRlZiB0ZXN0X2NvdW50T2Yoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvdW50T2YsIE5vbmUsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMykgPT0gMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCA1KSA9PSAwKQogCiAgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gWzQsIDMsIDIsIDFdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZGVsaXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhLCBOb25lKQpAQCAtMTM4LDMzICsxNTIsMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPT0gWzQsIDIsIDFdKQogCiAgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmZsb29yZGl2KDUsIDIpID09IDIpCiAKICAgICBkZWYgdGVzdF90cnVlZGl2KHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IudHJ1ZWRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSA9PSAyLjUpCiAKICAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSByYW5nZSgxMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmdldGl0ZW0sIGEsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5nZXRpdGVtKGEsIDIpID09IDIpCiAKICAgICBkZWYgdGVzdF9pbmRleE9mKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXhPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpID09IDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIFs0LCAzLCAyLCAxXSwgMCkKIAogICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmludmVydCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbnZlcnQsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW52KDQpLCAtNSkKIAogICAgIGRlZiB0ZXN0X2xzaGlmdChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmxzaGlmdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sc2hpZnQsIE5vbmUsIDQyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubHNoaWZ0KDUsIDEpID09IDEwKQpAQCAtMTcyLDE2ICsxOTIsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X21vZChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QsIE5vbmUsIDQyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubW9kKDUsIDIpID09IDEpCiAKICAgICBkZWYgdGVzdF9tdWwoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tdWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQogCiAgICAgZGVmIHRlc3RfbmVnKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubmVnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm5lZywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5uZWcoNSksIC01KQpAQCAtMTkwLDExICsyMTMsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5uZWcoLTApLCAwKQogCiAgICAgZGVmIHRlc3RfYml0d2lzZV9vcihzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5vcl8sIE5vbmUsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5vcl8oMHhhLCAweDUpID09IDB4ZikKIAogICAgIGRlZiB0ZXN0X3BvcyhzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnBvcykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5wb3MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IucG9zKDUpLCA1KQpAQCAtMjAzLDE0ICsyMjgsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5wb3MoLTApLCAwKQogCiAgICAgZGVmIHRlc3RfcG93KHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucG93KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnBvdywgTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5wb3coMyw1KSwgMyoqNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5fX3Bvd19fKDMsNSksIDMqKjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucG93LCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnBvdywgMSwgMiwgMykKIAogICAgIGRlZiB0ZXN0X3JzaGlmdChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5yc2hpZnQsIE5vbmUsIDQyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IucnNoaWZ0KDUsIDEpID09IDIpCkBAIC0yMTgsMTIgKzI0NCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5yc2hpZnQsIDIsIC0xKQogCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb250YWlucykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb250YWlucywgTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbnRhaW5zKHJhbmdlKDQpLCAyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGVyYXRvci5jb250YWlucyhyYW5nZSg0KSwgNSkpCiAKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSBsaXN0KHJhbmdlKDMpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgTm9uZSwgTm9uZSkKQEAgLTIzMiwxMSArMjYwLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEsIDQsIDIpCiAKICAgICBkZWYgdGVzdF9zdWIoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zdWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc3ViLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iuc3ViKDUsIDIpID09IDMpCiAKICAgICBkZWYgdGVzdF90cnV0aChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IKQEAgLTI0OCwxMSArMjc4LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3BlcmF0b3IudHJ1dGgoW10pKQogCiAgICAgZGVmIHRlc3RfYml0d2lzZV94b3Ioc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IueG9yLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IueG9yKDB4YiwgMHhjKSA9PSAweDcpCiAKICAgICBkZWYgdGVzdF9pcyhzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gYiA9ICd4eXpwZHEnCiAgICAgICAgIGMgPSBhWzozXSArIGJbMzpdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaXNfKQpAQCAtMjYwLDYgKzI5Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3BlcmF0b3IuaXNfKGEsYykpCiAKICAgICBkZWYgdGVzdF9pc19ub3Qoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgYSA9IGIgPSAneHl6cGRxJwogICAgICAgICBjID0gYVs6M10gKyBiWzM6XQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmlzX25vdCkKQEAgLTI2Nyw2ICszMDAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuaXNfbm90KGEsYykpCiAKICAgICBkZWYgdGVzdF9hdHRyZ2V0dGVyKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGEgPSBBKCkKQEAgLTMxNiw2ICszNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoYSksICgnYXJ0aHVyJywgJ3Rob21hcycsICdqb2huc29uJykpCiAKICAgICBkZWYgdGVzdF9pdGVtZ2V0dGVyKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSAnQUJDREUnCiAgICAgICAgIGYgPSBvcGVyYXRvci5pdGVtZ2V0dGVyKDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZihhKSwgJ0MnKQpAQCAtMzUwLDEyICszODUsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pdGVtZ2V0dGVyKDIsICd4JywgNSksIGRhdGEpCiAKICAgICBkZWYgdGVzdF9tZXRob2RjYWxsZXIoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tZXRob2RjYWxsZXIpCiAgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBkZWYgZm9vKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWzBdICsgYXJnc1sxXQogICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBmPTQyKToKICAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICAgICAgZGVmIGJheigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4ga3dkc1snbmFtZSddLCBrd2RzWydzZWxmJ10KICAgICAgICAgYSA9IEEoKQogICAgICAgICBmID0gb3BlcmF0b3IubWV0aG9kY2FsbGVyKCdmb28nKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBmLCBhKQpAQCAtMzY2LDggKzQwNCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYsIGEsIGEpCiAgICAgICAgIGYgPSBvcGVyYXRvci5tZXRob2RjYWxsZXIoJ2JhcicsIGY9NSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKGEpLCA1KQorICAgICAgICBmID0gb3BlcmF0b3IubWV0aG9kY2FsbGVyKCdiYXonLCBuYW1lPSdzcGFtJywgc2VsZj0nZWdncycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZihhKSwgKCdzcGFtJywgJ2VnZ3MnKSkKIAogICAgIGRlZiB0ZXN0X2lucGxhY2Uoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9faWFkZF9fICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImlhZGQiCiAgICAgICAgICAgICBkZWYgX19pYW5kX18gICAgIChzZWxmLCBvdGhlcik6IHJldHVybiAiaWFuZCIKQEAgLTM5NiwzNyArNDM3LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaXRydWVkaXYgKGMsIDUpLCAiaXRydWVkaXYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLml4b3IgICAgIChjLCA1KSwgIml4b3IiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmljb25jYXQgIChjLCBjKSwgImlhZGQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLl9faWFkZF9fICAgICAoYywgNSksICJpYWRkIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5fX2lhbmRfXyAgICAgKGMsIDUpLCAiaWFuZCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuX19pZmxvb3JkaXZfXyhjLCA1KSwgImlmbG9vcmRpdiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuX19pbHNoaWZ0X18gIChjLCA1KSwgImlsc2hpZnQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLl9faW1vZF9fICAgICAoYywgNSksICJpbW9kIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5fX2ltdWxfXyAgICAgKGMsIDUpLCAiaW11bCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuX19pb3JfXyAgICAgIChjLCA1KSwgImlvciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuX19pcG93X18gICAgIChjLCA1KSwgImlwb3ciKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLl9faXJzaGlmdF9fICAoYywgNSksICJpcnNoaWZ0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5fX2lzdWJfXyAgICAgKGMsIDUpLCAiaXN1YiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuX19pdHJ1ZWRpdl9fIChjLCA1KSwgIml0cnVlZGl2IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5fX2l4b3JfXyAgICAgKGMsIDUpLCAiaXhvciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuX19pY29uY2F0X18gIChjLCBjKSwgImlhZGQiKQogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgaW1wb3J0IHN5cwotICAgIHRlc3RfY2xhc3NlcyA9ICgKLSAgICAgICAgT3BlcmF0b3JUZXN0Q2FzZSwKLSAgICApCisgICAgZGVmIHRlc3RfbGVuZ3RoX2hpbnQoc2VsZik6CisgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKIAotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCisgICAgICAgICAgICBkZWYgX19sZW5ndGhfaGludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGlmIHR5cGUoc2VsZi52YWx1ZSkgaXMgdHlwZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi52YWx1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCiAKLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubGVuZ3RoX2hpbnQoW10sIDIpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxlbmd0aF9oaW50KGl0ZXIoWzEsIDIsIDNdKSksIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sZW5ndGhfaGludChYKDIpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sZW5ndGhfaGludChYKE5vdEltcGxlbWVudGVkKSwgNCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubGVuZ3RoX2hpbnQoWChUeXBlRXJyb3IpLCAxMiksIDEyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBvcGVyYXRvci5sZW5ndGhfaGludChYKCJhYmMiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIG9wZXJhdG9yLmxlbmd0aF9oaW50KFgoLTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKKyAgICAgICAgICAgIG9wZXJhdG9yLmxlbmd0aF9oaW50KFgoTG9va3VwRXJyb3IpKQorCisgICAgZGVmIHRlc3RfZHVuZGVyX2lzX29yaWdpbmFsKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCisKKyAgICAgICAgbmFtZXMgPSBbbmFtZSBmb3IgbmFtZSBpbiBkaXIob3BlcmF0b3IpIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICBvcmlnID0gZ2V0YXR0cihvcGVyYXRvciwgbmFtZSkKKyAgICAgICAgICAgIGR1bmRlciA9IGdldGF0dHIob3BlcmF0b3IsICdfXycgKyBuYW1lLnN0cmlwKCdfJykgKyAnX18nLCBOb25lKQorICAgICAgICAgICAgaWYgZHVuZGVyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHVuZGVyLCBvcmlnKQorCitjbGFzcyBQeU9wZXJhdG9yVGVzdENhc2UoT3BlcmF0b3JUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IHB5X29wZXJhdG9yCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfb3BlcmF0b3IsICdyZXF1aXJlcyBfb3BlcmF0b3InKQorY2xhc3MgQ09wZXJhdG9yVGVzdENhc2UoT3BlcmF0b3JUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IGNfb3BlcmF0b3IKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggNzhkZTI3OC4uOTQ3MzAxMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC03MzAsNyArNzMwLDcgQEAKICAgICBkZWYgdGVzdF9zaG9ydF9hbmRfbG9uZ19vcHRpb25fc3BsaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VPSyhbIi1hIiwgInh5eiIsICItLWZvbyIsICJiYXIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6ICd4eXonLCAnYm9vJzogTm9uZSwgJ2Zvbyc6IFsiYmFyIl19LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pCiAKICAgICBkZWYgdGVzdF9zaG9ydF9vcHRpb25fc3BsaXRfbG9uZ19vcHRpb25fYXBwZW5kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFBhcnNlT0soWyItLWZvbz1iYXIiLCAiLWIiLCAiMTIzIiwgIi0tZm9vIiwgImJheiJdLApAQCAtNzQwLDE1ICs3NDAsMTUgQEAKICAgICBkZWYgdGVzdF9zaG9ydF9vcHRpb25fc3BsaXRfb25lX3Bvc2l0aW9uYWxfYXJnKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFBhcnNlT0soWyItYSIsICJmb28iLCAiYmFyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiAiZm9vIiwgJ2Jvbyc6IE5vbmUsICdmb28nOiBOb25lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiYmFyIl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJiYXIiXSkKIAogICAgIGRlZiB0ZXN0X3Nob3J0X29wdGlvbl9jb25zdW1lc19zZXBhcmF0b3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VPSyhbIi1hIiwgIi0tIiwgImZvbyIsICJiYXIiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6ICItLSIsICdib28nOiBOb25lLCAnZm9vJzogTm9uZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBbImZvbyIsICJiYXIiXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbImZvbyIsICJiYXIiXSkKICAgICAgICAgc2VsZi5hc3NlcnRQYXJzZU9LKFsiLWEiLCAiLS0iLCAiLS1mb28iLCAiYmFyIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiAiLS0iLCAnYm9vJzogTm9uZSwgJ2Zvbyc6IFsiYmFyIl19LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pCiAKICAgICBkZWYgdGVzdF9zaG9ydF9vcHRpb25fam9pbmVkX2FuZF9zZXBhcmF0b3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VPSyhbIi1hYiIsICItLSIsICItLWZvbyIsICJiYXIiXSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDE5NDU3ZWMuLjEzZmYxOGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMjQsNiArMjQsOCBAQAogaW1wb3J0IHN0YXQKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBkZWNpbWFsCitpbXBvcnQgZnJhY3Rpb25zCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDcxLDkgKzQ3Myw5IEBACiAgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IGFuIG9wZW4gZmlsZSBjYW4gYmUgc3RhdCdlZAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnN0YXQociJjOlxwYWdlZmlsZS5zeXMiKQotICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gMjogIyBmaWxlIGRvZXMgbm90IGV4aXN0OyBjYW5ub3QgcnVuIHRlc3QKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcyAjIGZpbGUgZG9lcyBub3QgZXhpc3Q7IGNhbm5vdCBydW4gdGVzdAorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkNvdWxkIG5vdCBzdGF0IHBhZ2VmaWxlLnN5cyIpCiAKICAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCkBAIC04NjUsNiArODY3LDE2IEBACiAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKICAgICAgICAgb3MudW1hc2sob2xkX21hc2spCiAKKyAgICBkZWYgdGVzdF9jaG93bl91aWRfZ2lkX2FyZ3VtZW50c19tdXN0X2JlX2luZGV4KHNlbGYpOgorICAgICAgICBzdGF0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgdWlkID0gc3RhdC5zdF91aWQKKyAgICAgICAgZ2lkID0gc3RhdC5zdF9naWQKKyAgICAgICAgZm9yIHZhbHVlIGluICgtMS4wLCAtMWosIGRlY2ltYWwuRGVjaW1hbCgtMSksIGZyYWN0aW9ucy5GcmFjdGlvbigtMiwgMikpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHZhbHVlLCBnaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLmNob3duLCBzdXBwb3J0LlRFU1RGTiwgdWlkLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIC0xLCAtMSkpCisKICAgICBkZWYgdGVzdF9leGlzdF9va19zX2lzZ2lkX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzdXBwb3J0LlRFU1RGTiwgJ2RpcjEnKQogICAgICAgICBTX0lTR0lEID0gc3RhdC5TX0lTR0lECkBAIC0xMDk3LDI3ICsxMTA5LDI3IEBACiAKIGNsYXNzIFdpbjMyRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIG9zLnJlbmFtZSwgc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOKyIuYmFrIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVuYW1lLCBzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4rIi5iYWsiKQogCiAgICAgZGVmIHRlc3RfcmVtb3ZlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIG9zLnJlbW92ZSwgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlbW92ZSwgc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9jaGRpcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV2luZG93c0Vycm9yLCBvcy5jaGRpciwgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X21rZGlyKHNlbGYpOgogICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIG9zLm1rZGlyLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1rZGlyLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfdXRpbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgb3MudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy51dGltZSwgc3VwcG9ydC5URVNURk4sIE5vbmUpCiAKICAgICBkZWYgdGVzdF9jaG1vZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV2luZG93c0Vycm9yLCBvcy5jaG1vZCwgc3VwcG9ydC5URVNURk4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNobW9kLCBzdXBwb3J0LlRFU1RGTiwgMCkKIAogY2xhc3MgVGVzdEludmFsaWRGRCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2luZ2xlcyA9IFsiZmNoZGlyIiwgImR1cCIsICJmZG9wZW4iLCAiZmRhdGFzeW5jIiwgImZzdGF0IiwKQEAgLTEyNDUsMzEgKzEyNTcsMzEgQEAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NldHVpZCcpOgogICAgICAgICAgICAgZGVmIHRlc3Rfc2V0dWlkKHNlbGYpOgogICAgICAgICAgICAgICAgIGlmIG9zLmdldHVpZCgpICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9zLmVycm9yLCBvcy5zZXR1aWQsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnNldHVpZCwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXR1aWQsIDE8PDMyKQogCiAgICAgICAgIGlmIGhhc2F0dHIob3MsICdzZXRnaWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldGdpZChzZWxmKToKICAgICAgICAgICAgICAgICBpZiBvcy5nZXR1aWQoKSAhPSAwIGFuZCBub3QgSEFWRV9XSEVFTF9HUk9VUDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob3MuZXJyb3IsIG9zLnNldGdpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3Muc2V0Z2lkLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG9zLnNldGdpZCwgMTw8MzIpCiAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NldGV1aWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldGV1aWQoc2VsZik6CiAgICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob3MuZXJyb3IsIG9zLnNldGV1aWQsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnNldGV1aWQsIDApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgb3Muc2V0ZXVpZCwgMTw8MzIpCiAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NldGVnaWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldGVnaWQoc2VsZik6CiAgICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMCBhbmQgbm90IEhBVkVfV0hFRUxfR1JPVVA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9zLmVycm9yLCBvcy5zZXRlZ2lkLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5zZXRlZ2lkLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG9zLnNldGVnaWQsIDE8PDMyKQogCiAgICAgICAgIGlmIGhhc2F0dHIob3MsICdzZXRyZXVpZCcpOgogICAgICAgICAgICAgZGVmIHRlc3Rfc2V0cmV1aWQoc2VsZik6CiAgICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob3MuZXJyb3IsIG9zLnNldHJldWlkLCAwLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5zZXRyZXVpZCwgMCwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXRyZXVpZCwgMTw8MzIsIDApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgb3Muc2V0cmV1aWQsIDAsIDE8PDMyKQogCkBAIC0xMjgzLDcgKzEyOTUsNyBAQAogICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2V0cmVnaWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldHJlZ2lkKHNlbGYpOgogICAgICAgICAgICAgICAgIGlmIG9zLmdldHVpZCgpICE9IDAgYW5kIG5vdCBIQVZFX1dIRUVMX0dST1VQOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvcy5lcnJvciwgb3Muc2V0cmVnaWQsIDAsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnNldHJlZ2lkLCAwLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG9zLnNldHJlZ2lkLCAxPDwzMiwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXRyZWdpZCwgMCwgMTw8MzIpCiAKQEAgLTIxNDYsNiArMjE1OCwxMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQogCiAKK2NsYXNzIE9TRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBjbGFzcyBTdHIoc3RyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcyA9IFtdCisgICAgICAgIHNlbGYudW5pY29kZV9maWxlbmFtZXMgPSBbXQorICAgICAgICBpZiBzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlY29kZWQgPSBzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGVjb2RlZCA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYudW5pY29kZV9maWxlbmFtZXMuYXBwZW5kKGRlY29kZWQpCisgICAgICAgIHNlbGYudW5pY29kZV9maWxlbmFtZXMuYXBwZW5kKFN0cihkZWNvZGVkKSkKKyAgICAgICAgaWYgc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBlbmNvZGVkID0gc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuY29kZWQgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGVuY29kZWQpCisgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChtZW1vcnl2aWV3KGVuY29kZWQpKQorCisgICAgICAgIHNlbGYuZmlsZW5hbWVzID0gc2VsZi5ieXRlc19maWxlbmFtZXMgKyBzZWxmLnVuaWNvZGVfZmlsZW5hbWVzCisKKyAgICBkZWYgdGVzdF9vc2Vycm9yX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmdW5jcyA9IFsKKyAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3MuY2hkaXIsKSwKKyAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3MuY2htb2QsIDBvNzc3KSwKKyAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3MubHN0YXQsKSwKKyAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3Mub3Blbiwgb3MuT19SRE9OTFkpLAorICAgICAgICAgICAgKHNlbGYuZmlsZW5hbWVzLCBvcy5ybWRpciwpLAorICAgICAgICAgICAgKHNlbGYuZmlsZW5hbWVzLCBvcy5zdGF0LCksCisgICAgICAgICAgICAoc2VsZi5maWxlbmFtZXMsIG9zLnVubGluaywpLAorICAgICAgICBdCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgZnVuY3MuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoc2VsZi5ieXRlc19maWxlbmFtZXMsIG9zLnJlbmFtZSwgYiJkc3QiKSwKKyAgICAgICAgICAgICAgICAoc2VsZi5ieXRlc19maWxlbmFtZXMsIG9zLnJlcGxhY2UsIGIiZHN0IiksCisgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlbmFtZSwgImRzdCIpLAorICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5yZXBsYWNlLCAiZHN0IiksCisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTY0MTQ6IERvbid0IHRlc3QgdW5kZWNvZGFibGUgbmFtZXMgd2l0aCBsaXN0ZGlyKCkKKyAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb2YgYSBXaW5kb3dzIGJ1Zy4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBXaXRoIHRoZSBBTlNJIGNvZGUgcGFnZSA5MzIsIG9zLmxpc3RkaXIoYidceGU3JykgcmV0dXJuIGFuCisgICAgICAgICAgICAgICAgIyBlbXB0eSBsaXN0IChpbnN0ZWFkIG9mIGZhaWxpbmcpLCB3aGVyZWFzIG9zLmxpc3RkaXIoYidceGZmJykKKyAgICAgICAgICAgICAgICAjIHJhaXNlcyBhIEZpbGVOb3RGb3VuZEVycm9yLiBJdCBsb29rcyBsaWtlIGEgV2luZG93cyBidWc6CisgICAgICAgICAgICAgICAgIyBiJ1x4ZTcnIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgRmluZEZpcnN0RmlsZUEoYidceGU3JykKKyAgICAgICAgICAgICAgICAjIGZhaWxzIHdpdGggRVJST1JfRklMRV9OT1RfRk9VTkQgKDIpLCBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgIyBFUlJPUl9QQVRIX05PVF9GT1VORCAoMykuCisgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLmxpc3RkaXIsKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmdW5jcy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3MubGlzdGRpciwpLAorICAgICAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3MucmVuYW1lLCAiZHN0IiksCisgICAgICAgICAgICAgICAgKHNlbGYuZmlsZW5hbWVzLCBvcy5yZXBsYWNlLCAiZHN0IiksCisgICAgICAgICAgICApKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAiY2hvd24iKToKKyAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLmNob3duLCAwLCAwKSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgImxjaG93biIpOgorICAgICAgICAgICAgZnVuY3MuYXBwZW5kKChzZWxmLmZpbGVuYW1lcywgb3MubGNob3duLCAwLCAwKSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgInRydW5jYXRlIik6CisgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy50cnVuY2F0ZSwgMCkpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICJjaGZsYWdzIik6CisgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy5jaGZsYWdzLCAwKSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgImxjaGZsYWdzIik6CisgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy5sY2hmbGFncywgMCkpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICJjaHJvb3QiKToKKyAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLmNocm9vdCwpKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAibGluayIpOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKChzZWxmLmJ5dGVzX2ZpbGVuYW1lcywgb3MubGluaywgYiJkc3QiKSkKKyAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLmxpbmssICJkc3QiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKChzZWxmLmZpbGVuYW1lcywgb3MubGluaywgImRzdCIpKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAibGlzdHhhdHRyIik6CisgICAgICAgICAgICBmdW5jcy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3MubGlzdHhhdHRyLCksCisgICAgICAgICAgICAgICAgKHNlbGYuZmlsZW5hbWVzLCBvcy5nZXR4YXR0ciwgInVzZXIudGVzdCIpLAorICAgICAgICAgICAgICAgIChzZWxmLmZpbGVuYW1lcywgb3Muc2V0eGF0dHIsICJ1c2VyLnRlc3QiLCBiJ3VzZXInKSwKKyAgICAgICAgICAgICAgICAoc2VsZi5maWxlbmFtZXMsIG9zLnJlbW92ZXhhdHRyLCAidXNlci50ZXN0IiksCisgICAgICAgICAgICApKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAibGNobW9kIik6CisgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy5sY2htb2QsIDBvNzc3KSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgInJlYWRsaW5rIik6CisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlYWRsaW5rLCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLnJlYWRsaW5rLCkpCisKKyAgICAgICAgZm9yIGZpbGVuYW1lcywgZnVuYywgKmZ1bmNfYXJncyBpbiBmdW5jczoKKyAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMobmFtZSwgKmZ1bmNfYXJncykKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXJyLmZpbGVuYW1lLCBuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93biBieSB7fSIuZm9ybWF0KGZ1bmMpKQorCitjbGFzcyBDUFVDb3VudFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jcHVfY291bnQoc2VsZik6CisgICAgICAgIGNwdXMgPSBvcy5jcHVfY291bnQoKQorICAgICAgICBpZiBjcHVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNwdXMsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihjcHVzLCAwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ291bGQgbm90IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENQVXMiKQorCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKQEAgLTIxNzUsNyArMjI5Myw5IEBACiAgICAgICAgIEV4dGVuZGVkQXR0cmlidXRlVGVzdHMsCiAgICAgICAgIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJLAogICAgICAgICBUZXJtc2l6ZVRlc3RzLAorICAgICAgICBPU0Vycm9yVGVzdHMsCiAgICAgICAgIFJlbW92ZURpcnNUZXN0cywKKyAgICAgICAgQ1BVQ291bnRUZXN0cywKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQppbmRleCAzOTA4YTA1Li5jOWUyYTI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBkZWYgcGxheV9zb3VuZF9maWxlKHNlbGYsIGRhdGEsIHJhdGUsIHNzaXplLCBuY2hhbm5lbHMpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkc3AgPSBvc3NhdWRpb2Rldi5vcGVuKCd3JykKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgbXNnOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBpZiBtc2cuYXJnc1swXSBpbiAoZXJybm8uRUFDQ0VTLCBlcnJuby5FTk9FTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8uRU5PREVWLCBlcnJuby5FQlVTWSk6CiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QobXNnKQpAQCAtMTkwLDcgKzE5MCw3IEBACiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdHJ5OgogICAgICAgICBkc3AgPSBvc3NhdWRpb2Rldi5vcGVuKCd3JykKLSAgICBleGNlcHQgKG9zc2F1ZGlvZGV2LmVycm9yLCBJT0Vycm9yKSBhcyBtc2c6CisgICAgZXhjZXB0IChvc3NhdWRpb2Rldi5lcnJvciwgT1NFcnJvcikgYXMgbXNnOgogICAgICAgICBpZiBtc2cuYXJnc1swXSBpbiAoZXJybm8uRUFDQ0VTLCBlcnJuby5FTk9FTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJuby5FTk9ERVYsIGVycm5vLkVCVVNZKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KG1zZykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5IGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKaW5kZXggMDMwODRlNC4uMGJhYmFhMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKQEAgLTEsOSArMSw5IEBACiAjIEEgdGVzdCBzdWl0ZSBmb3IgcGRiOyBub3QgdmVyeSBjb21wcmVoZW5zaXZlIGF0IHRoZSBtb21lbnQuCiAKIGltcG9ydCBkb2N0ZXN0Ci1pbXBvcnQgaW1wCiBpbXBvcnQgcGRiCiBpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZXh0d3JhcApAQCAtNDY0LDcgKzQ2NCw3IEBACiAKIAogIyBNb2R1bGUgZm9yIHRlc3Rpbmcgc2tpcHBpbmcgb2YgbW9kdWxlIHRoYXQgbWFrZXMgYSBjYWxsYmFjawotbW9kID0gaW1wLm5ld19tb2R1bGUoJ21vZHVsZV90b19za2lwJykKK21vZCA9IHR5cGVzLk1vZHVsZVR5cGUoJ21vZHVsZV90b19za2lwJykKIGV4ZWMoJ2RlZiBmb29fcG9ueShjYWxsYmFjayk6IHggPSAxOyBjYWxsYmFjaygpOyByZXR1cm4gTm9uZScsIG1vZC5fX2RpY3RfXykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDFjYWNkZWEuLjUwMjU3OTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC01LDQ0ICs1LDI4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gbWF0aCBpbXBvcnQgY29weXNpZ24KIAotZGVmIGRpc2Fzc2VtYmxlKGZ1bmMpOgotICAgIGYgPSBTdHJpbmdJTygpCi0gICAgdG1wID0gc3lzLnN0ZG91dAotICAgIHN5cy5zdGRvdXQgPSBmCi0gICAgdHJ5OgotICAgICAgICBkaXMuZGlzKGZ1bmMpCi0gICAgZmluYWxseToKLSAgICAgICAgc3lzLnN0ZG91dCA9IHRtcAotICAgIHJlc3VsdCA9IGYuZ2V0dmFsdWUoKQotICAgIGYuY2xvc2UoKQotICAgIHJldHVybiByZXN1bHQKK2Zyb20gdGVzdC5ieXRlY29kZV9oZWxwZXIgaW1wb3J0IEJ5dGVjb2RlVGVzdENhc2UKIAotZGVmIGRpc19zaW5nbGUobGluZSk6Ci0gICAgcmV0dXJuIGRpc2Fzc2VtYmxlKGNvbXBpbGUobGluZSwgJycsICdzaW5nbGUnKSkKLQotCi1jbGFzcyBUZXN0VHJhbmZvcm1zKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RUcmFuZm9ybXMoQnl0ZWNvZGVUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF91bm90KHNlbGYpOgogICAgICAgICAjIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRSAgLS0+ICBQT1BfSlVNUF9JRl9UUlVFJwogICAgICAgICBkZWYgdW5vdCh4KToKICAgICAgICAgICAgIGlmIG5vdCB4ID09IDI6CiAgICAgICAgICAgICAgICAgZGVsIHgKLSAgICAgICAgYXNtID0gZGlzYXNzZW1ibGUodW5vdCkKLSAgICAgICAgZm9yIGVsZW0gaW4gKCdVTkFSWV9OT1QnLCAnUE9QX0pVTVBfSUZfRkFMU0UnKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZWxlbSwgYXNtKQotICAgICAgICBmb3IgZWxlbSBpbiAoJ1BPUF9KVU1QX0lGX1RSVUUnLCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGFzbSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKHVub3QsICdVTkFSWV9OT1QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUodW5vdCwgJ1BPUF9KVU1QX0lGX0ZBTFNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKHVub3QsICdQT1BfSlVNUF9JRl9UUlVFJykKIAogICAgIGRlZiB0ZXN0X2VsaW1faW52ZXJzaW9uX29mX2lzX29yX2luKHNlbGYpOgotICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCi0gICAgICAgICAgICAoJ25vdCBhIGlzIGInLCAnKGlzIG5vdCknLCksCi0gICAgICAgICAgICAoJ25vdCBhIGluIGInLCAnKG5vdCBpbiknLCksCi0gICAgICAgICAgICAoJ25vdCBhIGlzIG5vdCBiJywgJyhpcyknLCksCi0gICAgICAgICAgICAoJ25vdCBhIG5vdCBpbiBiJywgJyhpbiknLCksCisgICAgICAgIGZvciBsaW5lLCBjbXBfb3AgaW4gKAorICAgICAgICAgICAgKCdub3QgYSBpcyBiJywgJ2lzIG5vdCcsKSwKKyAgICAgICAgICAgICgnbm90IGEgaW4gYicsICdub3QgaW4nLCksCisgICAgICAgICAgICAoJ25vdCBhIGlzIG5vdCBiJywgJ2lzJywpLAorICAgICAgICAgICAgKCdub3QgYSBub3QgaW4gYicsICdpbicsKSwKICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICBhc20gPSBkaXNfc2luZ2xlKGxpbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGFzbSkKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGxpbmUsICcnLCAnc2luZ2xlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShjb2RlLCAnQ09NUEFSRV9PUCcsIGNtcF9vcCkKIAogICAgIGRlZiB0ZXN0X2dsb2JhbF9hc19jb25zdGFudChzZWxmKToKICAgICAgICAgIyBMT0FEX0dMT0JBTCBOb25lL1RydWUvRmFsc2UgIC0tPiAgTE9BRF9DT05TVCBOb25lL1RydWUvRmFsc2UKQEAgLTU2LDE3ICs0MCwxNCBAQAogICAgICAgICBkZWYgaCh4KToKICAgICAgICAgICAgIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBmb3IgZnVuYywgbmFtZSBpbiAoKGYsICdOb25lJyksIChnLCAnVHJ1ZScpLCAoaCwgJ0ZhbHNlJykpOgotICAgICAgICAgICAgYXNtID0gZGlzYXNzZW1ibGUoZnVuYykKLSAgICAgICAgICAgIGZvciBlbGVtIGluICgnTE9BRF9HTE9CQUwnLCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihlbGVtLCBhc20pCi0gICAgICAgICAgICBmb3IgZWxlbSBpbiAoJ0xPQURfQ09OU1QnLCAnKCcrbmFtZSsnKScpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtKQorICAgICAgICBmb3IgZnVuYywgZWxlbSBpbiAoKGYsIE5vbmUpLCAoZywgVHJ1ZSksIChoLCBGYWxzZSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0dMT0JBTCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZnVuYywgJ0xPQURfQ09OU1QnLCBlbGVtKQogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgJ0FkZGluZyBhIGRvY3N0cmluZyBtYWRlIHRoaXMgdGVzdCBmYWlsIGluIFB5Mi41LjAnCiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLmFzc2VydEluKCdMT0FEX0NPTlNUJywgZGlzYXNzZW1ibGUoZikpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPQURfR0xPQkFMJywgZGlzYXNzZW1ibGUoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnTE9BRF9HTE9CQUwnKQorICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZiwgJ0xPQURfQ09OU1QnLCBOb25lKQogCiAgICAgZGVmIHRlc3Rfd2hpbGVfb25lKHNlbGYpOgogICAgICAgICAjIFNraXAgb3ZlcjogIExPQURfQ09OU1QgdHJ1ZWNvbnN0ICBQT1BfSlVNUF9JRl9GQUxTRSB4eApAQCAtNzQsMTEgKzU1LDEwIEBACiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHJldHVybiBsaXN0Ci0gICAgICAgIGFzbSA9IGRpc2Fzc2VtYmxlKGYpCiAgICAgICAgIGZvciBlbGVtIGluICgnTE9BRF9DT05TVCcsICdQT1BfSlVNUF9JRl9GQUxTRScpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihlbGVtLCBhc20pCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoZiwgZWxlbSkKICAgICAgICAgZm9yIGVsZW0gaW4gKCdKVU1QX0FCU09MVVRFJywpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZiwgZWxlbSkKIAogICAgIGRlZiB0ZXN0X3BhY2tfdW5wYWNrKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCkBAIC04NiwyOCArNjYsMzAgQEAKICAgICAgICAgICAgICgnYSwgYiA9IGEsIGInLCAnUk9UX1RXTycsKSwKICAgICAgICAgICAgICgnYSwgYiwgYyA9IGEsIGIsIGMnLCAnUk9UX1RIUkVFJywpLAogICAgICAgICAgICAgKToKLSAgICAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUobGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfVFVQTEUnLCBhc20pCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTlBBQ0tfVFVQTEUnLCBhc20pCisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShsaW5lLCcnLCdzaW5nbGUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsIGVsZW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoY29kZSwgJ0JVSUxEX1RVUExFJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShjb2RlLCAnVU5QQUNLX1RVUExFJykKIAogICAgIGRlZiB0ZXN0X2ZvbGRpbmdfb2ZfdHVwbGVzX29mX2NvbnN0YW50cyhzZWxmKToKICAgICAgICAgZm9yIGxpbmUsIGVsZW0gaW4gKAotICAgICAgICAgICAgKCdhID0gMSwyLDMnLCAnKCgxLCAyLCAzKSknKSwKLSAgICAgICAgICAgICgnKCJhIiwiYiIsImMiKScsICIoKCdhJywgJ2InLCAnYycpKSIpLAotICAgICAgICAgICAgKCdhLGIsYyA9IDEsMiwzJywgJygoMSwgMiwgMykpJyksCi0gICAgICAgICAgICAoJyhOb25lLCAxLCBOb25lKScsICcoKE5vbmUsIDEsIE5vbmUpKScpLAotICAgICAgICAgICAgKCcoKDEsIDIpLCAzLCA0KScsICcoKCgxLCAyKSwgMywgNCkpJyksCisgICAgICAgICAgICAoJ2EgPSAxLDIsMycsICgxLCAyLCAzKSksCisgICAgICAgICAgICAoJygiYSIsImIiLCJjIiknLCAoJ2EnLCAnYicsICdjJykpLAorICAgICAgICAgICAgKCdhLGIsYyA9IDEsMiwzJywgKDEsIDIsIDMpKSwKKyAgICAgICAgICAgICgnKE5vbmUsIDEsIE5vbmUpJywgKE5vbmUsIDEsIE5vbmUpKSwKKyAgICAgICAgICAgICgnKCgxLCAyKSwgMywgNCknLCAoKDEsIDIpLCAzLCA0KSksCiAgICAgICAgICAgICApOgotICAgICAgICAgICAgYXNtID0gZGlzX3NpbmdsZShsaW5lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20pCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGxpbmUsJycsJ3NpbmdsZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoY29kZSwgJ0xPQURfQ09OU1QnLCBlbGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGNvZGUsICdCVUlMRF9UVVBMRScpCiAKICAgICAgICAgIyBMb25nIHR1cGxlcyBzaG91bGQgYmUgZm9sZGVkIHRvby4KLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZShyZXByKHR1cGxlKHJhbmdlKDEwMDAwKSkpKQorICAgICAgICBjb2RlID0gY29tcGlsZShyZXByKHR1cGxlKHJhbmdlKDEwMDAwKSkpLCcnLCdzaW5nbGUnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoY29kZSwgJ0JVSUxEX1RVUExFJykKICAgICAgICAgIyBPbmUgTE9BRF9DT05TVCBmb3IgdGhlIHR1cGxlLCBvbmUgZm9yIHRoZSBOb25lIHJldHVybiB2YWx1ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzbS5jb3VudCgnTE9BRF9DT05TVCcpLCAyKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKKyAgICAgICAgbG9hZF9jb25zdHMgPSBbaW5zdHIgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnN0ci5vcG5hbWUgPT0gJ0xPQURfQ09OU1QnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2FkX2NvbnN0cyksIDIpCiAKICAgICAgICAgIyBCdWcgMTA1MzgxOTogIFR1cGxlIG9mIGNvbnN0YW50cyBtaXNpZGVudGlmaWVkIHdoZW4gcHJlc2VudGVkIHdpdGg6CiAgICAgICAgICMgLiAuIC4gb3Bjb2RlX3dpdGhfYXJnIDEwMCAgIHVuYXJ5X29wY29kZSAgIEJVSUxEX1RVUExFIDEgIC4gLiAuCkBAIC0xMjksMTQgKzExMSwxNCBAQAogICAgIGRlZiB0ZXN0X2ZvbGRpbmdfb2ZfbGlzdHNfb2ZfY29uc3RhbnRzKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCiAgICAgICAgICAgICAjIGluL25vdCBpbiBjb25zdGFudHMgd2l0aCBCVUlMRF9MSVNUIHNob3VsZCBiZSBmb2xkZWQgdG8gYSB0dXBsZToKLSAgICAgICAgICAgICgnYSBpbiBbMSwyLDNdJywgJygxLCAyLCAzKScpLAotICAgICAgICAgICAgKCdhIG5vdCBpbiBbImEiLCJiIiwiYyJdJywgIigoJ2EnLCAnYicsICdjJykpIiksCi0gICAgICAgICAgICAoJ2EgaW4gW05vbmUsIDEsIE5vbmVdJywgJygoTm9uZSwgMSwgTm9uZSkpJyksCi0gICAgICAgICAgICAoJ2Egbm90IGluIFsoMSwgMiksIDMsIDRdJywgJygoKDEsIDIpLCAzLCA0KSknKSwKKyAgICAgICAgICAgICgnYSBpbiBbMSwyLDNdJywgKDEsIDIsIDMpKSwKKyAgICAgICAgICAgICgnYSBub3QgaW4gWyJhIiwiYiIsImMiXScsICgnYScsICdiJywgJ2MnKSksCisgICAgICAgICAgICAoJ2EgaW4gW05vbmUsIDEsIE5vbmVdJywgKE5vbmUsIDEsIE5vbmUpKSwKKyAgICAgICAgICAgICgnYSBub3QgaW4gWygxLCAyKSwgMywgNF0nLCAoKDEsIDIpLCAzLCA0KSksCiAgICAgICAgICAgICApOgotICAgICAgICAgICAgYXNtID0gZGlzX3NpbmdsZShsaW5lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20pCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9MSVNUJywgYXNtKQorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUobGluZSwgJycsICdzaW5nbGUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsICdMT0FEX0NPTlNUJywgZWxlbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShjb2RlLCAnQlVJTERfTElTVCcpCiAKICAgICBkZWYgdGVzdF9mb2xkaW5nX29mX3NldHNfb2ZfY29uc3RhbnRzKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCkBAIC0xNDcsMTggKzEyOSw5IEBACiAgICAgICAgICAgICAoJ2Egbm90IGluIHsoMSwgMiksIDMsIDR9JywgZnJvemVuc2V0KHsoMSwgMiksIDMsIDR9KSksCiAgICAgICAgICAgICAoJ2EgaW4gezEsIDIsIDMsIDMsIDIsIDF9JywgZnJvemVuc2V0KHsxLCAyLCAzfSkpLAogICAgICAgICAgICAgKToKLSAgICAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUobGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JVSUxEX1NFVCcsIGFzbSkKLQotICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZnJvemVuc2V0ICdlbGVtJyBpcyBpbiB0aGUgZGlzYXNzZW1ibHkKLSAgICAgICAgICAgICMgVGhlIG9yZGVyaW5nIG9mIHRoZSBlbGVtZW50cyBpbiByZXByKCBmcm96ZW5zZXQgKSBpc24ndAotICAgICAgICAgICAgIyBndWFyYW50ZWVkLCBzbyB3ZSBqdW1wIHRocm91Z2ggc29tZSBob29wcyB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlCi0gICAgICAgICAgICAjIHRoZSBmcm96ZW5zZXQgd2UgZXhwZWN0OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZnJvemVuc2V0JywgYXNtKQotICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSBmcm96ZW5zZXQgbGl0ZXJhbCBmcm9tIHRoZSBkaXNhc3NlbWJseToKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaChyJy4qKGZyb3plbnNldFwoey4qfVwpKS4qJywgYXNtLCByZS5ET1RBTEwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChtLmdyb3VwKDEpKSwgZWxlbSkKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGxpbmUsICcnLCAnc2luZ2xlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShjb2RlLCAnQlVJTERfU0VUJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShjb2RlLCAnTE9BRF9DT05TVCcsIGVsZW0pCiAKICAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgcmVzdWx0aW5nIGNvZGUgYWN0dWFsbHkgd29ya3M6CiAgICAgICAgIGRlZiBmKGEpOgpAQCAtMTc2LDk4ICsxNDksMTAzIEBACiAKICAgICBkZWYgdGVzdF9mb2xkaW5nX29mX2Jpbm9wc19vbl9jb25zdGFudHMoc2VsZik6CiAgICAgICAgIGZvciBsaW5lLCBlbGVtIGluICgKLSAgICAgICAgICAgICgnYSA9IDIrMys0JywgJyg5KScpLCAgICAgICAgICAgICAgICAgICAjIGNoYWluZWQgZm9sZAotICAgICAgICAgICAgKCciQCIqNCcsICIoJ0BAQEAnKSIpLCAgICAgICAgICAgICAgICAgICMgY2hlY2sgc3RyaW5nIG9wcwotICAgICAgICAgICAgKCdhPSJhYmMiICsgImRlZiInLCAiKCdhYmNkZWYnKSIpLCAgICAgICMgY2hlY2sgc3RyaW5nIG9wcwotICAgICAgICAgICAgKCdhID0gMyoqNCcsICcoODEpJyksICAgICAgICAgICAgICAgICAgICMgYmluYXJ5IHBvd2VyCi0gICAgICAgICAgICAoJ2EgPSAzKjQnLCAnKDEyKScpLCAgICAgICAgICAgICAgICAgICAgIyBiaW5hcnkgbXVsdGlwbHkKLSAgICAgICAgICAgICgnYSA9IDEzLy80JywgJygzKScpLCAgICAgICAgICAgICAgICAgICAjIGJpbmFyeSBmbG9vciBkaXZpZGUKLSAgICAgICAgICAgICgnYSA9IDE0JTQnLCAnKDIpJyksICAgICAgICAgICAgICAgICAgICAjIGJpbmFyeSBtb2R1bG8KLSAgICAgICAgICAgICgnYSA9IDIrMycsICcoNSknKSwgICAgICAgICAgICAgICAgICAgICAjIGJpbmFyeSBhZGQKLSAgICAgICAgICAgICgnYSA9IDEzLTQnLCAnKDkpJyksICAgICAgICAgICAgICAgICAgICAjIGJpbmFyeSBzdWJ0cmFjdAotICAgICAgICAgICAgKCdhID0gKDEyLDEzKVsxXScsICcoMTMpJyksICAgICAgICAgICAgICMgYmluYXJ5IHN1YnNjcgotICAgICAgICAgICAgKCdhID0gMTMgPDwgMicsICcoNTIpJyksICAgICAgICAgICAgICAgICMgYmluYXJ5IGxzaGlmdAotICAgICAgICAgICAgKCdhID0gMTMgPj4gMicsICcoMyknKSwgICAgICAgICAgICAgICAgICMgYmluYXJ5IHJzaGlmdAotICAgICAgICAgICAgKCdhID0gMTMgJiA3JywgJyg1KScpLCAgICAgICAgICAgICAgICAgICMgYmluYXJ5IGFuZAotICAgICAgICAgICAgKCdhID0gMTMgXiA3JywgJygxMCknKSwgICAgICAgICAgICAgICAgICMgYmluYXJ5IHhvcgotICAgICAgICAgICAgKCdhID0gMTMgfCA3JywgJygxNSknKSwgICAgICAgICAgICAgICAgICMgYmluYXJ5IG9yCisgICAgICAgICAgICAoJ2EgPSAyKzMrNCcsIDkpLCAgICAgICAgICAgICAgICAgICAjIGNoYWluZWQgZm9sZAorICAgICAgICAgICAgKCciQCIqNCcsICdAQEBAJyksICAgICAgICAgICAgICAgICAgIyBjaGVjayBzdHJpbmcgb3BzCisgICAgICAgICAgICAoJ2E9ImFiYyIgKyAiZGVmIicsICdhYmNkZWYnKSwgICAgICAjIGNoZWNrIHN0cmluZyBvcHMKKyAgICAgICAgICAgICgnYSA9IDMqKjQnLCA4MSksICAgICAgICAgICAgICAgICAgICMgYmluYXJ5IHBvd2VyCisgICAgICAgICAgICAoJ2EgPSAzKjQnLCAxMiksICAgICAgICAgICAgICAgICAgICAjIGJpbmFyeSBtdWx0aXBseQorICAgICAgICAgICAgKCdhID0gMTMvLzQnLCAzKSwgICAgICAgICAgICAgICAgICAgIyBiaW5hcnkgZmxvb3IgZGl2aWRlCisgICAgICAgICAgICAoJ2EgPSAxNCU0JywgMiksICAgICAgICAgICAgICAgICAgICAjIGJpbmFyeSBtb2R1bG8KKyAgICAgICAgICAgICgnYSA9IDIrMycsIDUpLCAgICAgICAgICAgICAgICAgICAgICMgYmluYXJ5IGFkZAorICAgICAgICAgICAgKCdhID0gMTMtNCcsIDkpLCAgICAgICAgICAgICAgICAgICAgIyBiaW5hcnkgc3VidHJhY3QKKyAgICAgICAgICAgICgnYSA9ICgxMiwxMylbMV0nLCAxMyksICAgICAgICAgICAgICMgYmluYXJ5IHN1YnNjcgorICAgICAgICAgICAgKCdhID0gMTMgPDwgMicsIDUyKSwgICAgICAgICAgICAgICAgIyBiaW5hcnkgbHNoaWZ0CisgICAgICAgICAgICAoJ2EgPSAxMyA+PiAyJywgMyksICAgICAgICAgICAgICAgICAjIGJpbmFyeSByc2hpZnQKKyAgICAgICAgICAgICgnYSA9IDEzICYgNycsIDUpLCAgICAgICAgICAgICAgICAgICMgYmluYXJ5IGFuZAorICAgICAgICAgICAgKCdhID0gMTMgXiA3JywgMTApLCAgICAgICAgICAgICAgICAgIyBiaW5hcnkgeG9yCisgICAgICAgICAgICAoJ2EgPSAxMyB8IDcnLCAxNSksICAgICAgICAgICAgICAgICAjIGJpbmFyeSBvcgogICAgICAgICAgICAgKToKLSAgICAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUobGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtLCBhc20pCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfJywgYXNtKQorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUobGluZSwgJycsICdzaW5nbGUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsICdMT0FEX0NPTlNUJywgZWxlbSkKKyAgICAgICAgICAgIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjb2RlKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3RyLm9wbmFtZS5zdGFydHN3aXRoKCdCSU5BUllfJykpCiAKICAgICAgICAgIyBWZXJpZnkgdGhhdCB1bmZvbGRhYmxlcyBhcmUgc2tpcHBlZAotICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCdhPTIrImIiJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignKDIpJywgYXNtKQotICAgICAgICBzZWxmLmFzc2VydEluKCIoJ2InKSIsIGFzbSkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoJ2E9MisiYiInLCAnJywgJ3NpbmdsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShjb2RlLCAnTE9BRF9DT05TVCcsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShjb2RlLCAnTE9BRF9DT05TVCcsICdiJykKIAogICAgICAgICAjIFZlcmlmeSB0aGF0IGxhcmdlIHNlcXVlbmNlcyBkbyBub3QgcmVzdWx0IGZyb20gZm9sZGluZwotICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCdhPSJ4IioxMDAwJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignKDEwMDApJywgYXNtKQorICAgICAgICBjb2RlID0gY29tcGlsZSgnYT0ieCIqMTAwMCcsICcnLCAnc2luZ2xlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsICdMT0FEX0NPTlNUJywgMTAwMCkKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9zdWJzY3Jfb25fdW5pY29kZShzZWxmKToKICAgICAgICAgIyB2YWxpZCBjb2RlIGdldCBvcHRpbWl6ZWQKLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnImZvbyJbMF0nKQotICAgICAgICBzZWxmLmFzc2VydEluKCIoJ2YnKSIsIGFzbSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZX1NVQlNDUicsIGFzbSkKLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnIlx1MDA2MVx1ZmZmZiJbMV0nKQotICAgICAgICBzZWxmLmFzc2VydEluKCIoJ1xcdWZmZmYnKSIsIGFzbSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZX1NVQlNDUicsIGFzbSkKLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnIlxVMDAwMTIzNDVhYmNkZWYiWzNdJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdjJykiLCBhc20pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCisgICAgICAgIGNvZGUgPSBjb21waWxlKCciZm9vIlswXScsICcnLCAnc2luZ2xlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsICdMT0FEX0NPTlNUJywgJ2YnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoY29kZSwgJ0JJTkFSWV9TVUJTQ1InKQorICAgICAgICBjb2RlID0gY29tcGlsZSgnIlx1MDA2MVx1ZmZmZiJbMV0nLCAnJywgJ3NpbmdsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShjb2RlLCAnTE9BRF9DT05TVCcsICdcdWZmZmYnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoY29kZSwnQklOQVJZX1NVQlNDUicpCisKKyAgICAgICAgIyBXaXRoIFBFUCAzOTMsIG5vbi1CTVAgY2hhciBnZXQgb3B0aW1pemVkCisgICAgICAgIGNvZGUgPSBjb21waWxlKCciXFUwMDAxMjM0NSJbMF0nLCAnJywgJ3NpbmdsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShjb2RlLCAnTE9BRF9DT05TVCcsICdcVTAwMDEyMzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGNvZGUsICdCSU5BUllfU1VCU0NSJykKIAogICAgICAgICAjIGludmFsaWQgY29kZSBkb2Vzbid0IGdldCBvcHRpbWl6ZWQKICAgICAgICAgIyBvdXQgb2YgcmFuZ2UKLSAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnImZ1dSJbMTBdJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQklOQVJZX1NVQlNDUicsIGFzbSkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoJyJmdXUiWzEwXScsICcnLCAnc2luZ2xlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsICdCSU5BUllfU1VCU0NSJykKIAogICAgIGRlZiB0ZXN0X2ZvbGRpbmdfb2ZfdW5hcnlvcHNfb25fY29uc3RhbnRzKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCi0gICAgICAgICAgICAoJy0wLjUnLCAnKC0wLjUpJyksICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQotICAgICAgICAgICAgKCctMC4wJywgJygtMC4wKScpLCAgICAgICAgICAgICAgICAgICAgICMgLTAuMAotICAgICAgICAgICAgKCctKDEuMC0xLjApJywnKC0wLjApJyksICAgICAgICAgICAgICAgICMgLTAuMCBhZnRlciBmb2xkaW5nCi0gICAgICAgICAgICAoJy0wJywgJygwKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyAtMAotICAgICAgICAgICAgKCd+LTInLCAnKDEpJyksICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgaW52ZXJ0Ci0gICAgICAgICAgICAoJysxJywgJygxKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBwb3NpdGl2ZQorICAgICAgICAgICAgKCctMC41JywgLTAuNSksICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQorICAgICAgICAgICAgKCctMC4wJywgLTAuMCksICAgICAgICAgICAgICAgICAgICAgIyAtMC4wCisgICAgICAgICAgICAoJy0oMS4wLTEuMCknLCAtMC4wKSwgICAgICAgICAgICAgICAjIC0wLjAgYWZ0ZXIgZm9sZGluZworICAgICAgICAgICAgKCctMCcsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyAtMAorICAgICAgICAgICAgKCd+LTInLCAxKSwgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBpbnZlcnQKKyAgICAgICAgICAgICgnKzEnLCAxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgcG9zaXRpdmUKICAgICAgICAgKToKLSAgICAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUobGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtLCBhc20pCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20pCisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShsaW5lLCAnJywgJ3NpbmdsZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoY29kZSwgJ0xPQURfQ09OU1QnLCBlbGVtKQorICAgICAgICAgICAgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGNvZGUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zdHIub3BuYW1lLnN0YXJ0c3dpdGgoJ1VOQVJZXycpKQogCiAgICAgICAgICMgQ2hlY2sgdGhhdCAtMC4wIHdvcmtzIGFmdGVyIG1hcnNoYWxpbmcKICAgICAgICAgZGVmIG5lZ3plcm8oKToKICAgICAgICAgICAgIHJldHVybiAtKDEuMC0xLjApCiAKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVU5BUllfJywgZGlzYXNzZW1ibGUobmVnemVybykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5c2lnbigxLjAsIG5lZ3plcm8oKSkgPCAwKQorICAgICAgICBmb3IgaW5zdHIgaW4gZGlzLmdldF9pbnN0cnVjdGlvbnMoY29kZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3RyLm9wbmFtZS5zdGFydHN3aXRoKCdVTkFSWV8nKSkKIAogICAgICAgICAjIFZlcmlmeSB0aGF0IHVuZm9sZGFibGVzIGFyZSBza2lwcGVkCi0gICAgICAgIGZvciBsaW5lLCBlbGVtIGluICgKLSAgICAgICAgICAgICgnLSJhYmMiJywgIignYWJjJykiKSwgICAgICAgICAgICAgICAgICAjIHVuYXJ5IG5lZ2F0aXZlCi0gICAgICAgICAgICAoJ34iYWJjIicsICIoJ2FiYycpIiksICAgICAgICAgICAgICAgICAgIyB1bmFyeSBpbnZlcnQKKyAgICAgICAgZm9yIGxpbmUsIGVsZW0sIG9wbmFtZSBpbiAoCisgICAgICAgICAgICAoJy0iYWJjIicsICdhYmMnLCAnVU5BUllfTkVHQVRJVkUnKSwKKyAgICAgICAgICAgICgnfiJhYmMiJywgJ2FiYycsICdVTkFSWV9JTlZFUlQnKSwKICAgICAgICAgKToKLSAgICAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUobGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtLCBhc20pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdVTkFSWV8nLCBhc20pCisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShsaW5lLCAnJywgJ3NpbmdsZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoY29kZSwgJ0xPQURfQ09OU1QnLCBlbGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGNvZGUsIG9wbmFtZSkKIAogICAgIGRlZiB0ZXN0X2VsaW1fZXh0cmFfcmV0dXJuKHNlbGYpOgogICAgICAgICAjIFJFVFVSTiBMT0FEX0NPTlNUIE5vbmUgUkVUVVJOICAtLT4gIFJFVFVSTgogICAgICAgICBkZWYgZih4KToKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGFzbSA9IGRpc2Fzc2VtYmxlKGYpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPQURfQ09OU1QnLCBhc20pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJyhOb25lKScsIGFzbSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc20uc3BsaXQoKS5jb3VudCgnUkVUVVJOX1ZBTFVFJyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnTE9BRF9DT05TVCcsIE5vbmUpCisgICAgICAgIHJldHVybnMgPSBbaW5zdHIgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGYpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGluc3RyLm9wbmFtZSA9PSAnUkVUVVJOX1ZBTFVFJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmV0dXJucyksIDEpCiAKICAgICBkZWYgdGVzdF9lbGltX2p1bXBfdG9fcmV0dXJuKHNlbGYpOgogICAgICAgICAjIEpVTVBfRk9SV0FSRCB0byBSRVRVUk4gLS0+ICBSRVRVUk4KICAgICAgICAgZGVmIGYoY29uZCwgdHJ1ZV92YWx1ZSwgZmFsc2VfdmFsdWUpOgogICAgICAgICAgICAgcmV0dXJuIHRydWVfdmFsdWUgaWYgY29uZCBlbHNlIGZhbHNlX3ZhbHVlCi0gICAgICAgIGFzbSA9IGRpc2Fzc2VtYmxlKGYpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0pVTVBfRk9SV0FSRCcsIGFzbSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignSlVNUF9BQlNPTFVURScsIGFzbSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc20uc3BsaXQoKS5jb3VudCgnUkVUVVJOX1ZBTFVFJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnSlVNUF9GT1JXQVJEJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGYsICdKVU1QX0FCU09MVVRFJykKKyAgICAgICAgcmV0dXJucyA9IFtpbnN0ciBmb3IgaW5zdHIgaW4gZGlzLmdldF9pbnN0cnVjdGlvbnMoZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5zdHIub3BuYW1lID09ICdSRVRVUk5fVkFMVUUnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXR1cm5zKSwgMikKIAogICAgIGRlZiB0ZXN0X2VsaW1fanVtcF9hZnRlcl9yZXR1cm4xKHNlbGYpOgogICAgICAgICAjIEVsaW1pbmF0ZSBkZWFkIGNvZGU6IGp1bXBzIGltbWVkaWF0ZWx5IGFmdGVyIHJldHVybnMgY2FuJ3QgYmUgcmVhY2hlZApAQCAtMjgwLDQ4ICsyNTgsNTMgQEAKICAgICAgICAgICAgICAgICBpZiBjb25kMTogcmV0dXJuIDQKICAgICAgICAgICAgICAgICByZXR1cm4gNQogICAgICAgICAgICAgcmV0dXJuIDYKLSAgICAgICAgYXNtID0gZGlzYXNzZW1ibGUoZikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignSlVNUF9GT1JXQVJEJywgYXNtKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdKVU1QX0FCU09MVVRFJywgYXNtKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzbS5zcGxpdCgpLmNvdW50KCdSRVRVUk5fVkFMVUUnKSwgNikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGYsICdKVU1QX0ZPUldBUkQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoZiwgJ0pVTVBfQUJTT0xVVEUnKQorICAgICAgICByZXR1cm5zID0gW2luc3RyIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyhmKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnN0ci5vcG5hbWUgPT0gJ1JFVFVSTl9WQUxVRSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJldHVybnMpLCA2KQogCiAgICAgZGVmIHRlc3RfZWxpbV9qdW1wX2FmdGVyX3JldHVybjIoc2VsZik6CiAgICAgICAgICMgRWxpbWluYXRlIGRlYWQgY29kZToganVtcHMgaW1tZWRpYXRlbHkgYWZ0ZXIgcmV0dXJucyBjYW4ndCBiZSByZWFjaGVkCiAgICAgICAgIGRlZiBmKGNvbmQxLCBjb25kMik6CiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIGlmIGNvbmQxOiByZXR1cm4gNAotICAgICAgICBhc20gPSBkaXNhc3NlbWJsZShmKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdKVU1QX0ZPUldBUkQnLCBhc20pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnSlVNUF9GT1JXQVJEJykKICAgICAgICAgIyBUaGVyZSBzaG91bGQgYmUgb25lIGp1bXAgZm9yIHRoZSB3aGlsZSBsb29wLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzbS5zcGxpdCgpLmNvdW50KCdKVU1QX0FCU09MVVRFJyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNtLnNwbGl0KCkuY291bnQoJ1JFVFVSTl9WQUxVRScpLCAyKQorICAgICAgICByZXR1cm5zID0gW2luc3RyIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyhmKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnN0ci5vcG5hbWUgPT0gJ0pVTVBfQUJTT0xVVEUnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXR1cm5zKSwgMSkKKyAgICAgICAgcmV0dXJucyA9IFtpbnN0ciBmb3IgaW5zdHIgaW4gZGlzLmdldF9pbnN0cnVjdGlvbnMoZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5zdHIub3BuYW1lID09ICdSRVRVUk5fVkFMVUUnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXR1cm5zKSwgMikKIAogICAgIGRlZiB0ZXN0X21ha2VfZnVuY3Rpb25fZG9lc250X2JhaWwoc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBkZWYgZygpLT4xKzE6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgcmV0dXJuIGcKLSAgICAgICAgYXNtID0gZGlzYXNzZW1ibGUoZikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZX0FERCcsIGFzbSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGYsICdCSU5BUllfQUREJykKIAogICAgIGRlZiB0ZXN0X2NvbnN0YW50X2ZvbGRpbmcoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMjQ0OiBhZ2dyZXNzaXZlIGNvbnN0YW50IGZvbGRpbmcuCiAgICAgICAgIGV4cHJzID0gWwotICAgICAgICAgICAgIjMgKiAtNSIsCi0gICAgICAgICAgICAiLTMgKiA1IiwKLSAgICAgICAgICAgICIyICogKDMgKiA0KSIsCi0gICAgICAgICAgICAiKDIgKiAzKSAqIDQiLAotICAgICAgICAgICAgIigtMSwgMiwgMykiLAotICAgICAgICAgICAgIigxLCAtMiwgMykiLAotICAgICAgICAgICAgIigxLCAyLCAtMykiLAotICAgICAgICAgICAgIigxLCAyLCAtMykgKiA2IiwKLSAgICAgICAgICAgICJsYW1iZGEgeDogeCBpbiB7KDMgKiAtNSkgKyAoLTEgLSA2KSwgKDEsIC0yLCAzKSAqIDIsIE5vbmV9IiwKKyAgICAgICAgICAgICczICogLTUnLAorICAgICAgICAgICAgJy0zICogNScsCisgICAgICAgICAgICAnMiAqICgzICogNCknLAorICAgICAgICAgICAgJygyICogMykgKiA0JywKKyAgICAgICAgICAgICcoLTEsIDIsIDMpJywKKyAgICAgICAgICAgICcoMSwgLTIsIDMpJywKKyAgICAgICAgICAgICcoMSwgMiwgLTMpJywKKyAgICAgICAgICAgICcoMSwgMiwgLTMpICogNicsCisgICAgICAgICAgICAnbGFtYmRhIHg6IHggaW4geygzICogLTUpICsgKC0xIC0gNiksICgxLCAtMiwgMykgKiAyLCBOb25lfScsCiAgICAgICAgIF0KICAgICAgICAgZm9yIGUgaW4gZXhwcnM6Ci0gICAgICAgICAgICBhc20gPSBkaXNfc2luZ2xlKGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20sIGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfJywgYXNtLCBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfJywgYXNtLCBlKQorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZSwgJycsICdzaW5nbGUnKQorICAgICAgICAgICAgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGNvZGUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zdHIub3BuYW1lLnN0YXJ0c3dpdGgoJ1VOQVJZXycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zdHIub3BuYW1lLnN0YXJ0c3dpdGgoJ0JJTkFSWV8nKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3RyLm9wbmFtZS5zdGFydHN3aXRoKCdCVUlMRF8nKSkKKwogCiBjbGFzcyBUZXN0QnVnbGV0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTM0Myw3ICszMjYsNyBAQAogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCiAKICAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKKyAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKICAgICAgICAgaW1wb3J0IGdjCiAgICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNjMucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI2My5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI0YWUzODYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNjMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIC0qLSBjb2Rpbmc6IGtvaTgtciAtKi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQotY2xhc3MgUEVQMjYzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9wZXAyNjMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAi8MnUz84iLmVuY29kZSgidXRmLTgiKSwKLSAgICAgICAgICAgIGInXHhkMFx4OWZceGQwXHhiOFx4ZDFceDgyXHhkMFx4YmVceGQwXHhiZCcKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgIlzwIi5lbmNvZGUoInV0Zi04IiksCi0gICAgICAgICAgICBiJ1xcXHhkMFx4OWYnCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2NvbXBpbGVzdHJpbmcoc2VsZik6Ci0gICAgICAgICMgc2VlICMxODgyCi0gICAgICAgIGMgPSBjb21waWxlKGIiXG4jIGNvZGluZzogdXRmLThcbnUgPSAnXHhjM1x4YjMnXG4iLCAiZHVtbXkiLCAiZXhlYyIpCi0gICAgICAgIGQgPSB7fQotICAgICAgICBleGVjKGMsIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsndSddLCAnXHhmMycpCi0KLSAgICBkZWYgdGVzdF9pc3N1ZTIzMDEoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbXBpbGUoYiIjIGNvZGluZzogY3A5MzJcbnByaW50ICdceDk0XHg0ZSciLCAiZHVtbXkiLCAiZXhlYyIpCi0gICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyB2OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRleHQsICJwcmludCAnXHU1ZTc0J1xuIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgpCi0KLSAgICBkZWYgdGVzdF9pc3N1ZTQ2MjYoc2VsZik6Ci0gICAgICAgIGMgPSBjb21waWxlKCIjIGNvZGluZz1sYXRpbi0xXG5cdTAwYzYgPSAnXHUwMGM2JyIsICJkdW1teSIsICJleGVjIikKLSAgICAgICAgZCA9IHt9Ci0gICAgICAgIGV4ZWMoYywgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydceGM2J10sICdceGM2JykKLQotICAgIGRlZiB0ZXN0X2lzc3VlMzI5NyhzZWxmKToKLSAgICAgICAgYyA9IGNvbXBpbGUoImEsIGIgPSAnXFUwMDAxMDEwRicsICdcXFUwMDAxMDEwRiciLCAiZHVtbXkiLCAiZXhlYyIpCi0gICAgICAgIGQgPSB7fQotICAgICAgICBleGVjKGMsIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnYSddLCBkWydiJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRbJ2EnXSksIGxlbihkWydiJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzY2lpKGRbJ2EnXSksIGFzY2lpKGRbJ2InXSkpCi0KLSAgICBkZWYgdGVzdF9pc3N1ZTc4MjAoc2VsZik6Ci0gICAgICAgICMgRW5zdXJlIHRoYXQgY2hlY2tfYm9tKCkgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBvcmRlciBpZgotICAgICAgICAjIGNoZWNrX2JvbSgpIGZhaWxzIGluIHB5ZGVidWcgbW9kZTogYSBidWZmZXIgc3RhcnRzIHdpdGggdGhlIGZpcnN0Ci0gICAgICAgICMgYnl0ZSBvZiBhIHZhbGlkIEJPTSwgYnV0IG5leHQgYnl0ZXMgYXJlIGRpZmZlcmVudAotCi0gICAgICAgICMgb25lIGJ5dGUgaW4gY29tbW9uIHdpdGggdGhlIFVURi0xNi1MRSBCT00KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGInXHhmZlx4MjAnKQotCi0gICAgICAgICMgdHdvIGJ5dGVzIGluIGNvbW1vbiB3aXRoIHRoZSBVVEYtOCBCT00KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGInXHhlZlx4YmJceDIwJykKLQotICAgIGRlZiB0ZXN0X2Vycm9yX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGNvbXBpbGUoYicjIC0qLSBjb2Rpbmc6IGlzby04ODU5LTE1IC0qLVxuJywgJ2R1bW15JywgJ2V4ZWMnKQotICAgICAgICBjb21waWxlKGInXHhlZlx4YmJceGJmXG4nLCAnZHVtbXknLCAnZXhlYycpCi0gICAgICAgIGNvbXBpbGUoYidceGVmXHhiYlx4YmYjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuJywgJ2R1bW15JywgJ2V4ZWMnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdmYWtlJyk6Ci0gICAgICAgICAgICBjb21waWxlKGInIyAtKi0gY29kaW5nOiBmYWtlIC0qLVxuJywgJ2R1bW15JywgJ2V4ZWMnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpc28tODg1OS0xNScpOgotICAgICAgICAgICAgY29tcGlsZShiJ1x4ZWZceGJiXHhiZiMgLSotIGNvZGluZzogaXNvLTg4NTktMTUgLSotXG4nLAotICAgICAgICAgICAgICAgICAgICAnZHVtbXknLCAnZXhlYycpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ0JPTScpOgotICAgICAgICAgICAgY29tcGlsZShiJ1x4ZWZceGJiXHhiZiMgLSotIGNvZGluZzogaXNvLTg4NTktMTUgLSotXG4nLAotICAgICAgICAgICAgICAgICAgICAnZHVtbXknLCAnZXhlYycpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2Zha2UnKToKLSAgICAgICAgICAgIGNvbXBpbGUoYidceGVmXHhiYlx4YmYjIC0qLSBjb2Rpbmc6IGZha2UgLSotXG4nLCAnZHVtbXknLCAnZXhlYycpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ0JPTScpOgotICAgICAgICAgICAgY29tcGlsZShiJ1x4ZWZceGJiXHhiZiMgLSotIGNvZGluZzogZmFrZSAtKi1cbicsICdkdW1teScsICdleGVjJykKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUEVQMjYzVGVzdCkKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKaW5kZXggNGIxNmNiYi4uOWJhZTZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKQEAgLTk5LDEwICs5OSw2IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uKSBhcyBjOgogICAgICAgICAgICAgZm4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y19maWxlbmFtZSA9IGMuZXhjZXB0aW9uLmZpbGVuYW1lCi0gICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lCi0gICAgICAgIGlmIGZuIGlzIG9zLmxpc3RkaXIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgZXhjX2ZpbGVuYW1lLCBfLCB3aWxkY2FyZCA9IGV4Y19maWxlbmFtZS5ycGFydGl0aW9uKG9zLnNlcCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lsZGNhcmQsICcqLionKQogICAgICAgICBpZiBjaGVja19maWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2ZpbGVuYW1lLCBmaWxlbmFtZSwgIkZ1bmN0aW9uICclcyglYSkgZmFpbGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggYmFkIGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb246ICVhIiAlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM1Mi5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CmluZGV4IDU1OGNkYjUuLjdjOThjNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCB3YXJuaW5ncwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogaW1wb3J0IG9zCiBmcm9tIHBsYXRmb3JtIGltcG9ydCBzeXN0ZW0gYXMgcGxhdGZvcm1fc3lzdGVtCiAKQEAgLTE4MCw4ICsxNzksNiBAQAogICAgICAgICAjIENhdGNoaW5nIGEgc3RyaW5nIGlzIGJhZC4KICAgICAgICAgc2VsZi5jYXRjaF9mYWlscygic3BhbSIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uQ2xhc3NUZXN0cywgVXNhZ2VUZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQppbmRleCBhODQyNmI1Li4zNzBiMmFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQpAQCAtNiw3ICs2LDcgQEAKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gaW1wIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQorZnJvbSBpbXBvcnRsaWIudXRpbCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNyZWF0ZV9lbXB0eV9maWxlCiAKIGNsYXNzIFRlc3RJbXBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IGZkMDY2MTQuLjFmNDg4NTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTEsMTIgKzEsMTIgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVubG9hZCwgY2hlY2tfd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwotaW1wb3J0IGltcAogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHBrZ3V0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHR5cGVzCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgemlwZmlsZQogCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICBjbGFzcyBNeVRlc3RMb2FkZXIob2JqZWN0KToKICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgICAgICMgQ3JlYXRlIGFuIGVtcHR5IG1vZHVsZQotICAgICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXMuc2V0ZGVmYXVsdChmdWxsbmFtZSwgaW1wLm5ld19tb2R1bGUoZnVsbG5hbWUpKQorICAgICAgICAgICAgbW9kID0gc3lzLm1vZHVsZXMuc2V0ZGVmYXVsdChmdWxsbmFtZSwgdHlwZXMuTW9kdWxlVHlwZShmdWxsbmFtZSkpCiAgICAgICAgICAgICBtb2QuX19maWxlX18gPSAiPCVzPiIgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogICAgICAgICAgICAgbW9kLl9fbG9hZGVyX18gPSBzZWxmCiAgICAgICAgICAgICAjIE1ha2UgaXQgYSBwYWNrYWdlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvbGwucHkgYi9MaWIvdGVzdC90ZXN0X3BvbGwucHkKaW5kZXggZjJkMTc5NS4uYTJmZWMzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9sbC5weQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZXN0IGNhc2UgZm9yIHRoZSBvcy5wb2xsKCkgZnVuY3Rpb24KIAotaW1wb3J0IG9zLCBzZWxlY3QsIHJhbmRvbSwgdW5pdHRlc3QKK2ltcG9ydCBvcywgc2VsZWN0LCByYW5kb20sIHVuaXR0ZXN0LCBzdWJwcm9jZXNzCiBpbXBvcnQgX3Rlc3RjYXBpCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKIAogdHJ5OgogICAgIHNlbGVjdC5wb2xsCiBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInNlbGVjdC5wb2xsIG5vdCBkZWZpbmVkIC0tIHNraXBwaW5nIHRlc3RfcG9sbCIpCisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInNlbGVjdC5wb2xsIG5vdCBkZWZpbmVkIikKIAogCiBkZWYgZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgZmxhZyk6CkBAIC02OCwxMyArNjgsMTEgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZnMsIFtNU0ddICogTlVNX1BJUEVTKQogCi0gICAgZGVmIHBvbGxfdW5pdF90ZXN0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9wb2xsX3VuaXRfdGVzdHMoc2VsZik6CiAgICAgICAgICMgcmV0dXJucyBOVkFMIGZvciBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcgotICAgICAgICBGRCA9IDQyCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmNsb3NlKEZEKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgRkQsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgb3MuY2xvc2UoRkQpCisgICAgICAgIG9zLmNsb3NlKHcpCiAgICAgICAgIHAgPSBzZWxlY3QucG9sbCgpCiAgICAgICAgIHAucmVnaXN0ZXIoRkQpCiAgICAgICAgIHIgPSBwLnBvbGwoKQpAQCAtMTE3LDcgKzExNSw5IEBACiAKICAgICBkZWYgdGVzdF9wb2xsMihzZWxmKToKICAgICAgICAgY21kID0gJ2ZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDk7IGRvIGVjaG8gdGVzdGluZy4uLjsgc2xlZXAgMTsgZG9uZScKLSAgICAgICAgcCA9IG9zLnBvcGVuKGNtZCwgJ3InKQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9MCkKKyAgICAgICAgcCA9IHByb2Muc3Rkb3V0CiAgICAgICAgIHBvbGxzdGVyID0gc2VsZWN0LnBvbGwoKQogICAgICAgICBwb2xsc3Rlci5yZWdpc3RlciggcCwgc2VsZWN0LlBPTExJTiApCiAgICAgICAgIGZvciB0b3V0IGluICgwLCAxMDAwLCAyMDAwLCA0MDAwLCA4MDAwLCAxNjAwMCkgKyAoLTEsKSoxMDoKQEAgLTEyNyw3ICsxMjcsNyBAQAogICAgICAgICAgICAgZmQsIGZsYWdzID0gZmRsaXN0WzBdCiAgICAgICAgICAgICBpZiBmbGFncyAmIHNlbGVjdC5QT0xMSFVQOgogICAgICAgICAgICAgICAgIGxpbmUgPSBwLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICBpZiBsaW5lICE9ICIiOgorICAgICAgICAgICAgICAgIGlmIGxpbmUgIT0gYiIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ2Vycm9yOiBwaXBlIHNlZW1zIHRvIGJlIGNsb3NlZCwgYnV0IHN0aWxsIHJldHVybnMgZGF0YScpCiAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMTM1LDYgKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgbGluZSA9IHAucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgYid0ZXN0aW5nLi4uXG4nKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCByZXR1cm4gdmFsdWUgZnJvbSBzZWxlY3QucG9sbDogJXMnICUgZmRsaXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBjMDkyOWEwLi45MzU4NDhiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtMTgsNiArMTgsMTMgQEAKIEhPU1QgPSB0ZXN0X3N1cHBvcnQuSE9TVAogUE9SVCA9IDAKIAorU1VQUE9SVFNfU1NMID0gRmFsc2UKK2lmIGhhc2F0dHIocG9wbGliLCAnUE9QM19TU0wnKToKKyAgICBpbXBvcnQgc3NsCisKKyAgICBTVVBQT1JUU19TU0wgPSBUcnVlCisgICAgQ0VSVEZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIsICJrZXljZXJ0LnBlbSIpCisKICMgdGhlIGR1bW15IGRhdGEgcmV0dXJuZWQgYnkgc2VydmVyIHdoZW4gTElTVCBhbmQgUkVUUiBjb21tYW5kcyBhcmUgaXNzdWVkCiBMSVNUX1JFU1AgPSBiJzEgMVxyXG4yIDJcclxuMyAzXHJcbjQgNFxyXG41IDVcclxuLlxyXG4nCiBSRVRSX1JFU1AgPSBiIiIiRnJvbTogcG9zdG1hc3RlckBweXRob24ub3JnXApAQCAtMzMsMTEgKzQwLDE1IEBACiAKIGNsYXNzIER1bW15UE9QM0hhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CiAKKyAgICBDQVBBUyA9IHsnVUlETCc6IFtdLCAnSU1QTEVNRU5UQVRJT04nOiBbJ3B5dGhvbi10ZXN0bGliLXBvcC1zZXJ2ZXInXX0KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGIiXHJcbiIpCiAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gW10KICAgICAgICAgc2VsZi5wdXNoKCcrT0sgZHVtbXkgcG9wMyBzZXJ2ZXIgcmVhZHkuIDx0aW1lc3RhbXA+JykKKyAgICAgICAgc2VsZi50bHNfYWN0aXZlID0gRmFsc2UKKyAgICAgICAgc2VsZi50bHNfc3RhcnRpbmcgPSBGYWxzZQogCiAgICAgZGVmIGNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5pbl9idWZmZXIuYXBwZW5kKGRhdGEpCkBAIC0xMTIsNiArMTIzLDY1IEBACiAgICAgICAgIHNlbGYucHVzaCgnK09LIGNsb3NpbmcuJykKICAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogCisgICAgZGVmIF9nZXRfY2FwYXMoc2VsZik6CisgICAgICAgIF9jYXBhcyA9IGRpY3Qoc2VsZi5DQVBBUykKKyAgICAgICAgaWYgbm90IHNlbGYudGxzX2FjdGl2ZSBhbmQgU1VQUE9SVFNfU1NMOgorICAgICAgICAgICAgX2NhcGFzWydTVExTJ10gPSBbXQorICAgICAgICByZXR1cm4gX2NhcGFzCisKKyAgICBkZWYgY21kX2NhcGEoc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCcrT0sgQ2FwYWJpbGl0eSBsaXN0IGZvbGxvd3MnKQorICAgICAgICBpZiBzZWxmLl9nZXRfY2FwYXMoKToKKyAgICAgICAgICAgIGZvciBjYXAsIHBhcmFtcyBpbiBzZWxmLl9nZXRfY2FwYXMoKS5pdGVtcygpOgorICAgICAgICAgICAgICAgIF9sbiA9IFtjYXBdCisgICAgICAgICAgICAgICAgaWYgcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICBfbG4uZXh0ZW5kKHBhcmFtcykKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJyAnLmpvaW4oX2xuKSkKKyAgICAgICAgc2VsZi5wdXNoKCcuJykKKworICAgIGlmIFNVUFBPUlRTX1NTTDoKKworICAgICAgICBkZWYgY21kX3N0bHMoc2VsZiwgYXJnKToKKyAgICAgICAgICAgIGlmIHNlbGYudGxzX2FjdGl2ZSBpcyBGYWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJytPSyBCZWdpbiBUTFMgbmVnb3RpYXRpb24nKQorICAgICAgICAgICAgICAgIHRsc19zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBjZXJ0ZmlsZT1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQorICAgICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldCh0bHNfc29jaykKKyAgICAgICAgICAgICAgICBzZWxmLnRsc19hY3RpdmUgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi50bHNfc3RhcnRpbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5pbl9idWZmZXIgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuX2RvX3Rsc19oYW5kc2hha2UoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJy1FUlIgQ29tbWFuZCBub3QgcGVybWl0dGVkIHdoZW4gVExTIGFjdGl2ZScpCisKKyAgICAgICAgZGVmIF9kb190bHNfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSBpbiAoc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xfRVJST1JfV0FOVF9XUklURSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9FT0Y6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBlcnJuby5FQ09OTkFCT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLnRsc19zdGFydGluZyA9IEZhbHNlCisKKyAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgaWYgc2VsZi50bHNfc3RhcnRpbmc6CisgICAgICAgICAgICAgICAgc2VsZi5fZG9fdGxzX2hhbmRzaGFrZSgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5oYW5kbGVfcmVhZChzZWxmKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nsb3NlKCkKIAogY2xhc3MgRHVtbXlQT1AzU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIsIHRocmVhZGluZy5UaHJlYWQpOgogCkBAIC0yMzIsMTkgKzMwMiwzNSBAQAogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCkKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgnZm9vJykKIAorICAgIGRlZiB0ZXN0X2NhcGEoc2VsZik6CisgICAgICAgIGNhcGEgPSBzZWxmLmNsaWVudC5jYXBhKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdJTVBMRU1FTlRBVElPTicgaW4gY2FwYS5rZXlzKCkpCisKICAgICBkZWYgdGVzdF9xdWl0KHNlbGYpOgogICAgICAgICByZXNwID0gc2VsZi5jbGllbnQucXVpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmNsaWVudC5zb2NrKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmNsaWVudC5maWxlKQogCisgICAgaWYgU1VQUE9SVFNfU1NMOgogCi1TVVBQT1JUU19TU0wgPSBGYWxzZQotaWYgaGFzYXR0cihwb3BsaWIsICdQT1AzX1NTTCcpOgotICAgIGltcG9ydCBzc2wKKyAgICAgICAgZGVmIHRlc3Rfc3Rsc19jYXBhKHNlbGYpOgorICAgICAgICAgICAgY2FwYSA9IHNlbGYuY2xpZW50LmNhcGEoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdTVExTJyBpbiBjYXBhLmtleXMoKSkKIAotICAgIFNVUFBPUlRTX1NTTCA9IFRydWUKLSAgICBDRVJURklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpciwgImtleWNlcnQucGVtIikKKyAgICAgICAgZGVmIHRlc3Rfc3RscyhzZWxmKToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gYicrT0sgQmVnaW4gVExTIG5lZ290aWF0aW9uJworICAgICAgICAgICAgcmVzcCA9IHNlbGYuY2xpZW50LnN0bHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9zdGxzX2NvbnRleHQoc2VsZik6CisgICAgICAgICAgICBleHBlY3RlZCA9IGInK09LIEJlZ2luIFRMUyBuZWdvdGlhdGlvbicKKyAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLmNsaWVudC5zdGxzKGNvbnRleHQ9Y3R4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBleHBlY3RlZCkKKworCitpZiBTVVBQT1JUU19TU0w6CiAKICAgICBjbGFzcyBEdW1teVBPUDNfU1NMSGFuZGxlcihEdW1teVBPUDNIYW5kbGVyKToKIApAQCAtMjU2LDM0ICszNDIsMTMgQEAKICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNzbF9zb2NrZXQpCiAgICAgICAgICAgICAjIE11c3QgdHJ5IGhhbmRzaGFrZSBiZWZvcmUgY2FsbGluZyBwdXNoKCkKLSAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9kb19zc2xfaGFuZHNoYWtlKCkKKyAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYudGxzX3N0YXJ0aW5nID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZG9fdGxzX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGIiXHJcbiIpCiAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlciA9IFtdCiAgICAgICAgICAgICBzZWxmLnB1c2goJytPSyBkdW1teSBwb3AzIHNlcnZlciByZWFkeS4gPHRpbWVzdGFtcD4nKQogCi0gICAgICAgIGRlZiBfZG9fc3NsX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gaW4gKHNzbC5TU0xfRVJST1JfV0FOVF9SRUFELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEUpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfRU9GOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfY2xvc2UoKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBlcnJuby5FQ09OTkFCT1JURUQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZV9jbG9zZSgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBGYWxzZQotCi0gICAgICAgIGRlZiBoYW5kbGVfcmVhZChzZWxmKToKLSAgICAgICAgICAgIGlmIHNlbGYuX3NzbF9hY2NlcHRpbmc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZG9fc3NsX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIER1bW15UE9QM0hhbmRsZXIuaGFuZGxlX3JlYWQoc2VsZikKLQogCiAgICAgY2xhc3MgVGVzdFBPUDNfU1NMQ2xhc3MoVGVzdFBPUDNDbGFzcyk6CiAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIHRlc3RzIGJ5IHVzaW5nIHBvcGxpYi5QT1AzX1NTTApAQCAtMzE0LDYgKzM3OSwzOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLmNsaWVudC5zb2NrLmNvbnRleHQsIGN0eCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmNsaWVudC5ub29wKCkuc3RhcnRzd2l0aChiJytPSycpKQogCisgICAgICAgIGRlZiB0ZXN0X3N0bHMoc2VsZik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwb3BsaWIuZXJyb3JfcHJvdG8sIHNlbGYuY2xpZW50LnN0bHMpCisKKyAgICAgICAgdGVzdF9zdGxzX2NvbnRleHQgPSB0ZXN0X3N0bHMKKworICAgICAgICBkZWYgdGVzdF9zdGxzX2NhcGEoc2VsZik6CisgICAgICAgICAgICBjYXBhID0gc2VsZi5jbGllbnQuY2FwYSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdTVExTJyBpbiBjYXBhLmtleXMoKSkKKworCisgICAgY2xhc3MgVGVzdFBPUDNfVExTQ2xhc3MoVGVzdFBPUDNDbGFzcyk6CisgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIHRlc3RzIGJ5IHVzaW5nIHBvcGxpYi5QT1AzLnN0bHMoKQorCisgICAgICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlQT1AzU2VydmVyKChIT1NULCBQT1JUKSkKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50ID0gcG9wbGliLlBPUDMoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCwgdGltZW91dD0zKQorICAgICAgICAgICAgc2VsZi5jbGllbnQuc3RscygpCisKKyAgICAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAgICAgaWYgc2VsZi5jbGllbnQuZmlsZSBpcyBub3QgTm9uZSBhbmQgc2VsZi5jbGllbnQuc29jayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorCisgICAgICAgIGRlZiB0ZXN0X3N0bHMoc2VsZik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwb3BsaWIuZXJyb3JfcHJvdG8sIHNlbGYuY2xpZW50LnN0bHMpCisKKyAgICAgICAgdGVzdF9zdGxzX2NvbnRleHQgPSB0ZXN0X3N0bHMKKworICAgICAgICBkZWYgdGVzdF9zdGxzX2NhcGEoc2VsZik6CisgICAgICAgICAgICBjYXBhID0gc2VsZi5jbGllbnQuY2FwYSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGInU1RMUycgaW4gY2FwYS5rZXlzKCkpCisKIAogY2xhc3MgVGVzdFRpbWVvdXRzKFRlc3RDYXNlKToKIApAQCAtMzczLDYgKzQ3MSw3IEBACiAgICAgdGVzdHMgPSBbVGVzdFBPUDNDbGFzcywgVGVzdFRpbWVvdXRzXQogICAgIGlmIFNVUFBPUlRTX1NTTDoKICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RQT1AzX1NTTENsYXNzKQorICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdFBPUDNfVExTQ2xhc3MpCiAgICAgdGhyZWFkX2luZm8gPSB0ZXN0X3N1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKICAgICB0cnk6CiAgICAgICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggNGQ5ZTFmNS4uNDg1NjA4MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC02MDcsNyArNjA3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRSwgbmV3X3N0LnN0X2ZsYWdzKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZkID0gb3Blbih0YXJnZXRfZmlsZSwgJ3crJykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgZXJybm8uRVBFUk0pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBwb3NpeC5jaGZsYWdzKHRhcmdldF9maWxlLCBzdC5zdF9mbGFncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKaW5kZXggMGU3ZDg2Ni4uNDEyODQ5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKQEAgLTE4Niw2MyArMTg2LDYgQEAKICAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6CiAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9jcmVhdGVfZmlsZShmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYidmb28nKQotCi0gICAgZGVmIHRlc3Rfc2FtZWZpbGUoc2VsZik6Ci0gICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXhwYXRoLnNhbWVmaWxlKHRlc3RfZm4sIHRlc3RfZm4pKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5zYW1lZmlsZSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYoCi0gICAgICAgIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSwKLSAgICAgICAgInBvc2l4cGF0aC5zYW1lZmlsZSBkb2VzIG5vdCB3b3JrIG9uIGxpbmtzIGluIFdpbmRvd3MiKQotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJzeW1saW5rIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIk1pc3Npbmcgc3ltbGluayBpbXBsZW1lbnRhdGlvbiIpCi0gICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fbGlua3Moc2VsZik6Ci0gICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKLQotICAgICAgICBvcy5zeW1saW5rKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4cGF0aC5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KLSAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9zaXhwYXRoLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCi0KLQotICAgIGRlZiB0ZXN0X3NhbWVzdGF0KHNlbGYpOgotICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgdGVzdF9mbnMgPSBbdGVzdF9mbl0qMgotICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4cGF0aC5zYW1lc3RhdCgqc3RhdHMpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBJZigKLSAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLAotICAgICAgICAicG9zaXhwYXRoLnNhbWVzdGF0IGRvZXMgbm90IHdvcmsgb24gbGlua3MgaW4gV2luZG93cyIpCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInN5bWxpbmsiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyBzeW1saW5rIGltcGxlbWVudGF0aW9uIikKLSAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9saW5rcyhzZWxmKToKLSAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCi0gICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotICAgICAgICB0ZXN0X2ZucyA9ICh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgIG9zLnN5bWxpbmsoKnRlc3RfZm5zKQotICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4cGF0aC5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KLSAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvc2l4cGF0aC5zYW1lc3RhdCgqc3RhdHMpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLnNhbWVzdGF0KQotCiAgICAgZGVmIHRlc3RfaXNtb3VudChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudCgiLyIpLCBUcnVlKQogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC01OTUsMTEgKzUzOCw2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5nZXRjd2RiID0gcmVhbF9nZXRjd2RiCiAKLSAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6Ci0gICAgICAgIGZuYW1lID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAid2IiKSBhcyBhLCBvcGVuKGZuYW1lLCAid2IiKSBhcyBiOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4cGF0aC5zYW1lb3BlbmZpbGUoYS5maWxlbm8oKSwgYi5maWxlbm8oKSkpCi0KIAogY2xhc3MgUG9zaXhDb21tb25UZXN0KHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhdGhtb2R1bGUgPSBwb3NpeHBhdGgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKaW5kZXggZDQ5MmQ3NS4uYmYxMzZkZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKQEAgLTEsMyArMSw1IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKQEAgLTQ3NSw2ICs0NzcsNDIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkaWN0LmZyb21rZXlzKGtleXMsIDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiAwLCAlcjogMH0nICUgdHVwbGUoc29ydGVkKGtleXMsIGtleT1pZCkpKQogCisgICAgZGVmIHRlc3Rfc3RyX3dyYXAoc2VsZik6CisgICAgICAgICMgcHByaW50IHRyaWVzIHRvIHdyYXAgc3RyaW5ncyBpbnRlbGxpZ2VudGx5CisgICAgICAgIGZveCA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZm94LCB3aWR0aD0yMCksICIiIlwKKyd0aGUgcXVpY2sgYnJvd24gJworJ2ZveCBqdW1wZWQgb3ZlciAnCisnYSBsYXp5IGRvZyciIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBmb3gsICdjJzogMn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjYpLCAiIiJcCit7J2EnOiAxLAorICdiJzogJ3RoZSBxdWljayBicm93biAnCisgICAgICAnZm94IGp1bXBlZCBvdmVyICcKKyAgICAgICdhIGxhenkgZG9nJywKKyAnYyc6IDJ9IiIiKQorICAgICAgICAjIFdpdGggc29tZSBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgICAgICAgIyAtIFxuIGFsd2F5cyB0cmlnZ2VycyBhIG5ldyBsaW5lIGluIHRoZSBwcHJpbnQKKyAgICAgICAgIyAtIFx0IGFuZCBcbiBhcmUgZXNjYXBlZAorICAgICAgICAjIC0gbm9uLUFTQ0lJIGlzIGFsbG93ZWQKKyAgICAgICAgIyAtIGFuIGFwb3N0cm9waGUgZG9lc24ndCBkaXNydXB0IHRoZSBwcHJpbnQKKyAgICAgICAgc3BlY2lhbCA9ICJQb3J0b25zIGRpeCBib25zIFwid2hpc2t5c1wiXG7DoCBsJ2F2b2NhdCBnb3VqYXRcdCBxdWkgZnVtYWl0IGF1IHpvbyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0yMCksICIiIlwKKydQb3J0b25zIGRpeCBib25zICcKKycid2hpc2t5cyJcXG4nCisiw6AgbCdhdm9jYXQgIgorJ2dvdWphdFxcdCBxdWkgJworJ2Z1bWFpdCBhdSB6b28nIiIiKQorICAgICAgICAjIEFuIHVud3JhcHBhYmxlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgaXRzIHJlcHIKKyAgICAgICAgdW53cmFwcGFibGUgPSAieCIgKiAxMDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh1bndyYXBwYWJsZSwgd2lkdGg9ODApLCByZXByKHVud3JhcHBhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCgnJyksICInJyIpCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgcHByaW50IGlzIGEgdXNhYmxlIHJlcHIKKyAgICAgICAgc3BlY2lhbCAqPSAxMAorICAgICAgICBmb3Igd2lkdGggaW4gcmFuZ2UoMywgNDApOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gcHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9d2lkdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIigiICsgZm9ybWF0dGVkICsgIikiKSwgc3BlY2lhbCkKKwogCiBjbGFzcyBEb3R0ZWRQcmV0dHlQcmludGVyKHBwcmludC5QcmV0dHlQcmludGVyKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcmludC5weSBiL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKaW5kZXggOWQ2ZGJlYS4uN2VlYTM0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CkBAIC0xLDYyICsxLDU1IEBACi0iIiJUZXN0IGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZSBwcmludCBmdW5jdGlvbi4KLSIiIgotCi0jIEluIDIuNiwgdGhpcyBnaXZlcyB1cyB0aGUgYmVoYXZpb3Igd2Ugd2FudC4gIEluIDMuMCwgaXQgaGFzCi0jICBubyBmdW5jdGlvbiwgYnV0IGl0IHN0aWxsIG11c3QgcGFyc2UgY29ycmVjdGx5LgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotdHJ5OgotICAgICMgMy54Ci0gICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIDIueAotICAgIGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogTm90RGVmaW5lZCA9IG9iamVjdCgpCiAKICMgQSBkaXNwYXRjaCB0YWJsZSBhbGwgOCBjb21iaW5hdGlvbnMgb2YgcHJvdmlkaW5nCi0jICBzZXAsIGVuZCwgYW5kIGZpbGUKKyMgc2VwLCBlbmQsIGFuZCBmaWxlLgogIyBJIHVzZSB0aGlzIG1hY2hpbmVyeSBzbyB0aGF0IEknbSBub3QganVzdCBwYXNzaW5nIGRlZmF1bHQKLSMgIHZhbHVlcyB0byBwcmludCwgSSdtIGVpdGhlciBwYXNzaW5nIG9yIG5vdCBwYXNzaW5nIGluIHRoZQotIyAgYXJndW1lbnRzCisjIHZhbHVlcyB0byBwcmludCwgSSdtIGVpdGhlciBwYXNzaW5nIG9yIG5vdCBwYXNzaW5nIGluIHRoZQorIyBhcmd1bWVudHMuCiBkaXNwYXRjaCA9IHsKICAgICAoRmFsc2UsIEZhbHNlLCBGYWxzZSk6Ci0gICAgIGxhbWJkYSBhcmdzLCBzZXAsIGVuZCwgZmlsZTogcHJpbnQoKmFyZ3MpLAorICAgICAgICBsYW1iZGEgYXJncywgc2VwLCBlbmQsIGZpbGU6IHByaW50KCphcmdzKSwKICAgICAoRmFsc2UsIEZhbHNlLCBUcnVlKToKLSAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChmaWxlPWZpbGUsICphcmdzKSwKKyAgICAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChmaWxlPWZpbGUsICphcmdzKSwKICAgICAoRmFsc2UsIFRydWUsICBGYWxzZSk6Ci0gICAgIGxhbWJkYSBhcmdzLCBzZXAsIGVuZCwgZmlsZTogcHJpbnQoZW5kPWVuZCwgKmFyZ3MpLAorICAgICAgICBsYW1iZGEgYXJncywgc2VwLCBlbmQsIGZpbGU6IHByaW50KGVuZD1lbmQsICphcmdzKSwKICAgICAoRmFsc2UsIFRydWUsICBUcnVlKToKLSAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChlbmQ9ZW5kLCBmaWxlPWZpbGUsICphcmdzKSwKKyAgICAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChlbmQ9ZW5kLCBmaWxlPWZpbGUsICphcmdzKSwKICAgICAoVHJ1ZSwgIEZhbHNlLCBGYWxzZSk6Ci0gICAgIGxhbWJkYSBhcmdzLCBzZXAsIGVuZCwgZmlsZTogcHJpbnQoc2VwPXNlcCwgKmFyZ3MpLAorICAgICAgICBsYW1iZGEgYXJncywgc2VwLCBlbmQsIGZpbGU6IHByaW50KHNlcD1zZXAsICphcmdzKSwKICAgICAoVHJ1ZSwgIEZhbHNlLCBUcnVlKToKLSAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChzZXA9c2VwLCBmaWxlPWZpbGUsICphcmdzKSwKKyAgICAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChzZXA9c2VwLCBmaWxlPWZpbGUsICphcmdzKSwKICAgICAoVHJ1ZSwgIFRydWUsICBGYWxzZSk6Ci0gICAgIGxhbWJkYSBhcmdzLCBzZXAsIGVuZCwgZmlsZTogcHJpbnQoc2VwPXNlcCwgZW5kPWVuZCwgKmFyZ3MpLAorICAgICAgICBsYW1iZGEgYXJncywgc2VwLCBlbmQsIGZpbGU6IHByaW50KHNlcD1zZXAsIGVuZD1lbmQsICphcmdzKSwKICAgICAoVHJ1ZSwgIFRydWUsICBUcnVlKToKLSAgICAgbGFtYmRhIGFyZ3MsIHNlcCwgZW5kLCBmaWxlOiBwcmludChzZXA9c2VwLCBlbmQ9ZW5kLCBmaWxlPWZpbGUsICphcmdzKSwKLSAgICB9CisgICAgICAgIGxhbWJkYSBhcmdzLCBzZXAsIGVuZCwgZmlsZTogcHJpbnQoc2VwPXNlcCwgZW5kPWVuZCwgZmlsZT1maWxlLCAqYXJncyksCit9CisKIAogIyBDbGFzcyB1c2VkIHRvIHRlc3QgX19zdHJfXyBhbmQgcHJpbnQKIGNsYXNzIENsYXNzV2l0aF9fc3RyX186CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgogICAgICAgICBzZWxmLnggPSB4CisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYueAogCi1jbGFzcyBUZXN0UHJpbnQodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBjaGVjayhzZWxmLCBleHBlY3RlZCwgYXJncywKLSAgICAgICAgICAgIHNlcD1Ob3REZWZpbmVkLCBlbmQ9Tm90RGVmaW5lZCwgZmlsZT1Ob3REZWZpbmVkKToKLSAgICAgICAgIyBDYXB0dXJlIHN5cy5zdGRvdXQgaW4gYSBTdHJpbmdJTy4gIENhbGwgcHJpbnQgd2l0aCBhcmdzLAotICAgICAgICAjICBhbmQgd2l0aCBzZXAsIGVuZCwgYW5kIGZpbGUsIGlmIHRoZXkncmUgZGVmaW5lZC4gIFJlc3VsdAotICAgICAgICAjICBtdXN0IG1hdGNoIGV4cGVjdGVkLgogCi0gICAgICAgICMgTG9vayB1cCB0aGUgYWN0dWFsIGZ1bmN0aW9uIHRvIGNhbGwsIGJhc2VkIG9uIGlmIHNlcCwgZW5kLCBhbmQgZmlsZQotICAgICAgICAjICBhcmUgZGVmaW5lZAorY2xhc3MgVGVzdFByaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZSBwcmludCBmdW5jdGlvbi4iIiIKKworICAgIGRlZiBjaGVjayhzZWxmLCBleHBlY3RlZCwgYXJncywKKyAgICAgICAgICAgICAgc2VwPU5vdERlZmluZWQsIGVuZD1Ob3REZWZpbmVkLCBmaWxlPU5vdERlZmluZWQpOgorICAgICAgICAjIENhcHR1cmUgc3lzLnN0ZG91dCBpbiBhIFN0cmluZ0lPLiAgQ2FsbCBwcmludCB3aXRoIGFyZ3MsCisgICAgICAgICMgYW5kIHdpdGggc2VwLCBlbmQsIGFuZCBmaWxlLCBpZiB0aGV5J3JlIGRlZmluZWQuICBSZXN1bHQKKyAgICAgICAgIyBtdXN0IG1hdGNoIGV4cGVjdGVkLgorCisgICAgICAgICMgTG9vayB1cCB0aGUgYWN0dWFsIGZ1bmN0aW9uIHRvIGNhbGwsIGJhc2VkIG9uIGlmIHNlcCwgZW5kLAorICAgICAgICAjIGFuZCBmaWxlIGFyZSBkZWZpbmVkLgogICAgICAgICBmbiA9IGRpc3BhdGNoWyhzZXAgaXMgbm90IE5vdERlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBpcyBub3QgTm90RGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyBub3QgTm90RGVmaW5lZCldCkBAIC02OSw3ICs2Miw3IEBACiAgICAgZGVmIHRlc3RfcHJpbnQoc2VsZik6CiAgICAgICAgIGRlZiB4KGV4cGVjdGVkLCBhcmdzLCBzZXA9Tm90RGVmaW5lZCwgZW5kPU5vdERlZmluZWQpOgogICAgICAgICAgICAgIyBSdW4gdGhlIHRlc3QgMiB3YXlzOiBub3QgdXNpbmcgZmlsZSwgYW5kIHVzaW5nCi0gICAgICAgICAgICAjICBmaWxlIGRpcmVjdGVkIHRvIGEgU3RyaW5nSU8KKyAgICAgICAgICAgICMgZmlsZSBkaXJlY3RlZCB0byBhIFN0cmluZ0lPLgogCiAgICAgICAgICAgICBzZWxmLmNoZWNrKGV4cGVjdGVkLCBhcmdzLCBzZXA9c2VwLCBlbmQ9ZW5kKQogCkBAIC0xMDEsMTEgKzk0LDYgQEAKICAgICAgICAgeCgnKlxuJywgKENsYXNzV2l0aF9fc3RyX18oJyonKSwpKQogICAgICAgICB4KCdhYmMgMVxuJywgKENsYXNzV2l0aF9fc3RyX18oJ2FiYycpLCAxKSkKIAotIyAgICAgICAgIyAyLnggdW5pY29kZSB0ZXN0cwotIyAgICAgICAgeCh1JzEgMlxuJywgKCcxJywgdScyJykpCi0jICAgICAgICB4KHUndVwxMjM0XG4nLCAodSd1XDEyMzQnLCkpCi0jICAgICAgICB4KHUnICBhYmMgMVxuJywgKCcgJywgQ2xhc3NXaXRoX19zdHJfXyh1J2FiYycpLCAxKSkKLQogICAgICAgICAjIGVycm9ycwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHByaW50LCAnJywgc2VwPTMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHJpbnQsICcnLCBlbmQ9MykKQEAgLTExMywxMiArMTAxLDE0IEBACiAKICAgICBkZWYgdGVzdF9wcmludF9mbHVzaChzZWxmKToKICAgICAgICAgIyBvcGVyYXRpb24gb2YgdGhlIGZsdXNoIGZsYWcKLSAgICAgICAgY2xhc3MgZmlsZWxpa2UoKToKKyAgICAgICAgY2xhc3MgZmlsZWxpa2U6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi53cml0dGVuID0gJycKICAgICAgICAgICAgICAgICBzZWxmLmZsdXNoZWQgPSAwCisKICAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgogICAgICAgICAgICAgICAgIHNlbGYud3JpdHRlbiArPSBzdHIKKwogICAgICAgICAgICAgZGVmIGZsdXNoKHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmx1c2hlZCArPSAxCiAKQEAgLTEzMCwxNSArMTIwLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mbHVzaGVkLCAyKQogCiAgICAgICAgICMgZW5zdXJlIGV4Y2VwdGlvbnMgZnJvbSBmbHVzaCBhcmUgcGFzc2VkIHRocm91Z2gKLSAgICAgICAgY2xhc3Mgbm9mbHVzaCgpOgorICAgICAgICBjbGFzcyBub2ZsdXNoOgogICAgICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CiAgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgICAgICBkZWYgZmx1c2goc2VsZik6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcHJpbnQsIDEsIGZpbGU9bm9mbHVzaCgpLCBmbHVzaD1UcnVlKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFByaW50KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3Byb2ZpbGUucHkKaW5kZXggY2Q3ZWM1OC4uMWZjM2M0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHJvZmlsZS5weQpAQCAtMyw5ICszLDExIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgcHN0YXRzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBvcwogZnJvbSBkaWZmbGliIGltcG9ydCB1bmlmaWVkX2RpZmYKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIHVubGluaworZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgogCiBpbXBvcnQgcHJvZmlsZQogZnJvbSB0ZXN0LnByb2ZpbGVlIGltcG9ydCB0ZXN0ZnVuYywgdGltZXIKQEAgLTE0LDkgKzE2LDEzIEBACiBjbGFzcyBQcm9maWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBwcm9maWxlcmNsYXNzID0gcHJvZmlsZS5Qcm9maWxlCisgICAgcHJvZmlsZXJtb2R1bGUgPSBwcm9maWxlCiAgICAgbWV0aG9kbmFtZXMgPSBbJ3ByaW50X3N0YXRzJywgJ3ByaW50X2NhbGxlcnMnLCAncHJpbnRfY2FsbGVlcyddCiAgICAgZXhwZWN0ZWRfbWF4X291dHB1dCA9ICc6MChtYXgpJwogCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB1bmxpbmsoVEVTVEZOKQorCiAgICAgZGVmIGdldF9leHBlY3RlZF9vdXRwdXQoc2VsZik6CiAgICAgICAgIHJldHVybiBfUHJvZmlsZU91dHB1dAogCkBAIC03NCw2ICs4MCwxOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLmV4cGVjdGVkX21heF9vdXRwdXQsIHJlcywKICAgICAgICAgICAgICAgICAiUHJvZmlsaW5nIHswIXJ9IGRpZG4ndCByZXBvcnQgbWF4OlxuezF9Ii5mb3JtYXQoc3RtdCwgcmVzKSkKIAorICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICAgICAgd2l0aCBzaWxlbnQoKToKKyAgICAgICAgICAgIHNlbGYucHJvZmlsZXJtb2R1bGUucnVuKCJpbnQoJzEnKSIpCisgICAgICAgIHNlbGYucHJvZmlsZXJtb2R1bGUucnVuKCJpbnQoJzEnKSIsIGZpbGVuYW1lPVRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisKKyAgICBkZWYgdGVzdF9ydW5jdHgoc2VsZik6CisgICAgICAgIHdpdGggc2lsZW50KCk6CisgICAgICAgICAgICBzZWxmLnByb2ZpbGVybW9kdWxlLnJ1bmN0eCgidGVzdGZ1bmMoKSIsIGdsb2JhbHMoKSwgbG9jYWxzKCkpCisgICAgICAgIHNlbGYucHJvZmlsZXJtb2R1bGUucnVuY3R4KCJ0ZXN0ZnVuYygpIiwgZ2xvYmFscygpLCBsb2NhbHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1URVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhURVNURk4pKQorCiAKIGRlZiByZWdlbmVyYXRlX2V4cGVjdGVkX291dHB1dChmaWxlbmFtZSwgY2xzKToKICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJzdHJpcCgnY28nKQpAQCAtOTUsNiArMTE0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgcmVzdWx0c1tpKzFdKSkKICAgICAgICAgZi53cml0ZSgnXG5pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOlxuICAgIG1haW4oKVxuJykKIAorQGNvbnRleHRtYW5hZ2VyCitkZWYgc2lsZW50KCk6CisgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgIHRyeToKKyAgICAgICAgc3lzLnN0ZG91dCA9IFN0cmluZ0lPKCkKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoUHJvZmlsZVRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CmluZGV4IDI5Mjk3ZjguLjg5MTY4NjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CkBAIC0xODcsNyArMTg3LDcgQEAKICAgICAgICAgICAgICMjZGVidWcoIlJlYWRpbmcgZnJvbSBtYXN0ZXJfZmQgbm93IHRoYXQgdGhlIGNoaWxkIGhhcyBleGl0ZWQiKQogICAgICAgICAgICAgIyN0cnk6CiAgICAgICAgICAgICAjIyAgICBzMSA9IG9zLnJlYWQobWFzdGVyX2ZkLCAxMDI0KQotICAgICAgICAgICAgIyNleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAjI2V4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgIyMgICAgcGFzcwogICAgICAgICAgICAgIyNlbHNlOgogICAgICAgICAgICAgIyMgICAgcmFpc2UgVGVzdEZhaWxlZCgiUmVhZCBmcm9tIG1hc3Rlcl9mZCBkaWQgbm90IHJhaXNlIGV4Y2VwdGlvbiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKaW5kZXggZjNjMWE2YS4uMmFkOWMzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQpAQCAtMSw3ICsxLDggQEAKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN0YXQKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTEzLDcgKzE0LDcgQEAKICAgICAgICAgc2VsZi5kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKICAgICAgICAgc2VsZi5zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgJ190ZXN0LnB5JykKICAgICAgICAgc2VsZi5weWNfcGF0aCA9IHNlbGYuc291cmNlX3BhdGggKyAnYycKLSAgICAgICAgc2VsZi5jYWNoZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgpCisgICAgICAgIHNlbGYuY2FjaGVfcGF0aCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgpCiAgICAgICAgIHNlbGYuY3dkX2RyaXZlID0gb3MucGF0aC5zcGxpdGRyaXZlKG9zLmdldGN3ZCgpKVswXQogICAgICAgICAjIEluIHRoZXNlIHRlc3RzIHdlIGNvbXB1dGUgcmVsYXRpdmUgcGF0aHMuICBXaGVuIHVzaW5nIFdpbmRvd3MsIHRoZQogICAgICAgICAjIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgcGF0aCBhbmQgdGhlICdzZWxmLnNvdXJjZV9wYXRoJyBtaWdodCBiZQpAQCAtMzUsNiArMzYsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNlbGYucHljX3BhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYuY2FjaGVfcGF0aCkpCiAKKyAgICBkZWYgdGVzdF9kb19ub3Rfb3ZlcndyaXRlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICAjIEluIHRoZSBmYWNlIG9mIGEgY2ZpbGUgYXJndW1lbnQgYmVpbmcgYSBzeW1saW5rLCBiYWlsIG91dC4KKyAgICAgICAgIyBJc3N1ZSAjMTcyMjIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3ltbGluayhzZWxmLnB5Y19wYXRoICsgJy5hY3R1YWwnLCBzZWxmLnB5Y19wYXRoKQorICAgICAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbmVlZCB0byBiZSBhYmxlIHRvIGNyZWF0ZSBhIHN5bWxpbmsgZm9yIGEgZmlsZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2xpbmsoc2VsZi5weWNfcGF0aCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2VsZi5zb3VyY2VfcGF0aCwgc2VsZi5weWNfcGF0aCkKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpIG9yIG9zLnBhdGguaXNmaWxlKG9zLmRldm51bGwpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIG9zLmRldm51bGwgYW5kIGZvciBpdCB0byBiZSBhIG5vbi1yZWd1bGFyIGZpbGUnKQorICAgIGRlZiB0ZXN0X2RvX25vdF9vdmVyd3JpdGVfbm9ucmVndWxhcl9maWxlcyhzZWxmKToKKyAgICAgICAgIyBJbiB0aGUgZmFjZSBvZiBhIGNmaWxlIGFyZ3VtZW50IGJlaW5nIGEgbm9uLXJlZ3VsYXIgZmlsZSwgYmFpbCBvdXQuCisgICAgICAgICMgSXNzdWUgIzE3MjIyCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLnNvdXJjZV9wYXRoLCBvcy5kZXZudWxsKQorCiAgICAgZGVmIHRlc3RfY2FjaGVfcGF0aChzZWxmKToKICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuc291cmNlX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmNhY2hlX3BhdGgpKQpAQCAtNTQsOCArNzUsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNlbGYucHljX3BhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYuY2FjaGVfcGF0aCkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQeUNvbXBpbGVUZXN0cykKKyAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywKKyAgICAgICAgICAgICAgICAgICAgICdjYW5ub3QgY29udHJvbCBkaXJlY3RvcnkgcGVybWlzc2lvbnMgb24gV2luZG93cycpCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uc19wcm9wYWdhdGUoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgZXhjZXB0aW9ucyByYWlzZWQgdGhhbmtzIHRvIGlzc3VlcyB3aXRoIHdyaXRpbmcKKyAgICAgICAgIyBieXRlY29kZS4KKyAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTcyNDQKKyAgICAgICAgbW9kZSA9IG9zLnN0YXQoc2VsZi5kaXJlY3RvcnkpCisgICAgICAgIG9zLmNobW9kKHNlbGYuZGlyZWN0b3J5LCBzdGF0LlNfSVJFQUQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CisgICAgICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuc291cmNlX3BhdGgsIHNlbGYucHljX3BhdGgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmRpcmVjdG9yeSwgbW9kZS5zdF9tb2RlKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggZTgzOTg5ZS4uYzA5NDQ1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICAgICBjbSgncmFuZG9tJywgaWdub3JlPSgnUmFuZG9tJywpKSAgIyBmcm9tIF9yYW5kb20gaW1wb3J0IFJhbmRvbSBhcyBDb3JlR2VuZXJhdG9yCiAgICAgICAgIGNtKCdjZ2knLCBpZ25vcmU9KCdsb2cnLCkpICAgICAgIyBzZXQgd2l0aCA9IGluIG1vZHVsZQogICAgICAgICBjbSgncGlja2xlJykKLSAgICAgICAgY20oJ2FpZmMnLCBpZ25vcmU9KCdvcGVuZnAnLCkpICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCisgICAgICAgIGNtKCdhaWZjJywgaWdub3JlPSgnb3BlbmZwJywgJ19haWZjX3BhcmFtcycpKSAgIyBzZXQgd2l0aCA9IGluIG1vZHVsZQogICAgICAgICBjbSgnc3JlX3BhcnNlJywgaWdub3JlPSgnZHVtcCcsKSkgIyBmcm9tIHNyZV9jb25zdGFudHMgaW1wb3J0ICoKICAgICAgICAgY20oJ3BkYicpCiAgICAgICAgIGNtKCdweWRvYycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCBjZGNjNzA3Li4zOTlmODE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTI5LDEwICsyOSw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi0jIEp1c3QgaW4gY2FzZSBzeXMubW9kdWxlc1sidGVzdCJdIGhhcyB0aGUgb3B0aW9uYWwgYXR0cmlidXRlIF9fbG9hZGVyX18uCi1pZiBoYXNhdHRyKHB5ZG9jX21vZCwgIl9fbG9hZGVyX18iKToKLSAgICBkZWwgcHlkb2NfbW9kLl9fbG9hZGVyX18KLQogaWYgdGVzdC5zdXBwb3J0LkhBVkVfRE9DU1RSSU5HUzoKICAgICBleHBlY3RlZF9kYXRhX2RvY3N0cmluZ3MgPSAoCiAgICAgICAgICdkaWN0aW9uYXJ5IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMgKGlmIGRlZmluZWQpJywKQEAgLTQyMSw2ICs0MTcsMzEgQEAKICAgICAgICAgICAgIHN5bm9wc2lzID0gcHlkb2Muc3lub3BzaXMoVEVTVEZOLCB7fSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lub3BzaXMsICdsaW5lIDE6IGhceGU5JykKIAorICAgIGRlZiB0ZXN0X3NwbGl0ZG9jX3dpdGhfZGVzY3JpcHRpb24oc2VsZik6CisgICAgICAgIGV4YW1wbGVfc3RyaW5nID0gIkkgQW0gQSBEb2NcblxuXG5IZXJlIGlzIG15IGRlc2NyaXB0aW9uIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5ZG9jLnNwbGl0ZG9jKGV4YW1wbGVfc3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ0kgQW0gQSBEb2MnLCAnXG5IZXJlIGlzIG15IGRlc2NyaXB0aW9uJykpCisKKyAgICBkZWYgdGVzdF9pc19vYmplY3Rfb3JfbWV0aG9kKHNlbGYpOgorICAgICAgICBkb2MgPSBweWRvYy5Eb2MoKQorICAgICAgICAjIEJvdW5kIE1ldGhvZAorICAgICAgICBzZWxmLmFzc2VydFRydWUocHlkb2MuX2lzX3NvbWVfbWV0aG9kKGRvYy5mYWlsKSkKKyAgICAgICAgIyBNZXRob2QgRGVzY3JpcHRvcgorICAgICAgICBzZWxmLmFzc2VydFRydWUocHlkb2MuX2lzX3NvbWVfbWV0aG9kKGludC5fX2FkZF9fKSkKKyAgICAgICAgIyBTdHJpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShweWRvYy5faXNfc29tZV9tZXRob2QoIkkgYW0gbm90IGEgbWV0aG9kIikpCisKKyAgICBkZWYgdGVzdF9pc19wYWNrYWdlX3doZW5fbm90X3BhY2thZ2Uoc2VsZik6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfY3dkKCkgYXMgdGVzdF9kaXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHB5ZG9jLmlzcGFja2FnZSh0ZXN0X2RpcikpCisKKyAgICBkZWYgdGVzdF9pc19wYWNrYWdlX3doZW5faXNfcGFja2FnZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQudGVtcF9jd2QoKSBhcyB0ZXN0X2RpcjoKKyAgICAgICAgICAgIGluaXRfcGF0aCA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJ19faW5pdF9fLnB5JykKKyAgICAgICAgICAgIG9wZW4oaW5pdF9wYXRoLCAndycpLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShweWRvYy5pc3BhY2thZ2UodGVzdF9kaXIpKQorICAgICAgICAgICAgb3MucmVtb3ZlKGluaXRfcGF0aCkKKwogICAgIGRlZiB0ZXN0X2FsbG1ldGhvZHMoc2VsZik6CiAgICAgICAgICMgaXNzdWUgMTc0NzY6IGFsbG1ldGhvZHMgd2FzIG5vIGxvbmdlciByZXR1cm5pbmcgdW5ib3VuZCBtZXRob2RzLgogICAgICAgICAjIFRoaXMgdGVzdCBpcyBhIGJpdCBmcmFnaWxlIGluIHRoZSBmYWNlIG9mIGNoYW5nZXMgdG8gb2JqZWN0IGFuZCB0eXBlLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCBmYWNkZGIxLi40OWEzZjdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtMSwxMCArMSwxMiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdGltZQogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHdhcm5pbmdzCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogZnJvbSBtYXRoIGltcG9ydCBsb2csIGV4cCwgcGksIGZzdW0sIHNpbgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTQ2LDYgKzQ4LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5nZW4uc2VlZCwgMSwgMiwgMywgNCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0eXBlKHNlbGYuZ2VuKSwgW10pCiAKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgncmFuZG9tLl91cmFuZG9tJykgIyBvcy51cmFuZG9tCisgICAgZGVmIHRlc3Rfc2VlZF93aGVuX3JhbmRvbW5lc3Nfc291cmNlX25vdF9mb3VuZChzZWxmLCB1cmFuZG9tX21vY2spOgorICAgICAgICAjIFJhbmRvbS5zZWVkKCkgdXNlcyB0aW1lLnRpbWUoKSB3aGVuIGFuIG9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWMKKyAgICAgICAgIyByYW5kb21uZXNzIHNvdXJjZSBpcyBub3QgZm91bmQuIFRvIHRlc3QgdGhpcyBvbiBtYWNoaW5lcyB3ZXJlIGl0CisgICAgICAgICMgZXhpc3RzLCBydW4gdGhlIGFib3ZlIHRlc3QsIHRlc3Rfc2VlZGFyZ3MoKSwgYWdhaW4gYWZ0ZXIgbW9ja2luZworICAgICAgICAjIG9zLnVyYW5kb20oKSBzbyB0aGF0IGl0IHJhaXNlcyB0aGUgZXhjZXB0aW9uIGV4cGVjdGVkIHdoZW4gdGhlCisgICAgICAgICMgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgdXJhbmRvbV9tb2NrLnNpZGVfZWZmZWN0ID0gTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBzZWxmLnRlc3Rfc2VlZGFyZ3MoKQorCisgICAgZGVmIHRlc3Rfc2h1ZmZsZShzZWxmKToKKyAgICAgICAgc2h1ZmZsZSA9IHNlbGYuZ2VuLnNodWZmbGUKKyAgICAgICAgbHN0ID0gW10KKyAgICAgICAgc2h1ZmZsZShsc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbXSkKKyAgICAgICAgbHN0ID0gWzM3XQorICAgICAgICBzaHVmZmxlKGxzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFszN10pCisgICAgICAgIHNlcXMgPSBbbGlzdChyYW5nZShuKSkgZm9yIG4gaW4gcmFuZ2UoMTApXQorICAgICAgICBzaHVmZmxlZF9zZXFzID0gW2xpc3QocmFuZ2UobikpIGZvciBuIGluIHJhbmdlKDEwKV0KKyAgICAgICAgZm9yIHNodWZmbGVkX3NlcSBpbiBzaHVmZmxlZF9zZXFzOgorICAgICAgICAgICAgc2h1ZmZsZShzaHVmZmxlZF9zZXEpCisgICAgICAgIGZvciAoc2VxLCBzaHVmZmxlZF9zZXEpIGluIHppcChzZXFzLCBzaHVmZmxlZF9zZXFzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcSksIGxlbihzaHVmZmxlZF9zZXEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoc2VxKSwgc2V0KHNodWZmbGVkX3NlcSkpCisgICAgICAgICMgVGhlIGFib3ZlIHRlc3RzIGFsbCB3b3VsZCBwYXNzIGlmIHRoZSBzaHVmZmxlIHdhcyBhCisgICAgICAgICMgbm8tb3AuIFRoZSBmb2xsb3dpbmcgbm9uLWRldGVybWluaXN0aWMgdGVzdCBjb3ZlcnMgdGhhdC4gIEl0CisgICAgICAgICMgYXNzZXJ0cyB0aGF0IHRoZSBzaHVmZmxlZCBzZXF1ZW5jZSBvZiAxMDAwIGRpc3RpbmN0IGVsZW1lbnRzCisgICAgICAgICMgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgb25lLiBBbHRob3VnaCB0aGVyZSBpcworICAgICAgICAjIG1hdGhlbWF0aWNhbGx5IGEgbm9uLXplcm8gcHJvYmFiaWxpdHkgdGhhdCB0aGlzIGNvdWxkCisgICAgICAgICMgYWN0dWFsbHkgaGFwcGVuIGluIGEgZ2VudWluZWx5IHJhbmRvbSBzaHVmZmxlLCBpdCBpcworICAgICAgICAjIGNvbXBsZXRlbHkgbmVnbGlnaWJsZSwgZ2l2ZW4gdGhhdCB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlCisgICAgICAgICMgcGVybXV0YXRpb25zIG9mIDEwMDAgb2JqZWN0cyBpcyAxMDAwISAoZmFjdG9yaWFsIG9mIDEwMDApLAorICAgICAgICAjIHdoaWNoIGlzIGNvbnNpZGVyYWJseSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGF0b21zIGluIHRoZQorICAgICAgICAjIHVuaXZlcnNlLi4uCisgICAgICAgIGxzdCA9IGxpc3QocmFuZ2UoMTAwMCkpCisgICAgICAgIHNodWZmbGVkX2xzdCA9IGxpc3QocmFuZ2UoMTAwMCkpCisgICAgICAgIHNodWZmbGUoc2h1ZmZsZWRfbHN0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHN0ICE9IHNodWZmbGVkX2xzdCkKKyAgICAgICAgc2h1ZmZsZShsc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsc3QgIT0gc2h1ZmZsZWRfbHN0KQorCiAgICAgZGVmIHRlc3RfY2hvaWNlKHNlbGYpOgogICAgICAgICBjaG9pY2UgPSBzZWxmLmdlbi5jaG9pY2UKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKQEAgLTY1LDYgKzEwOSw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih1bmlxKSwgaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1bmlxIDw9IHNldChwb3B1bGF0aW9uKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdlbi5zYW1wbGUoW10sIDApLCBbXSkgICMgdGVzdCBlZGdlIGNhc2UgTj09az09MAorICAgICAgICAjIEV4Y2VwdGlvbiByYWlzZWQgaWYgc2l6ZSBvZiBzYW1wbGUgZXhjZWVkcyB0aGF0IG9mIHBvcHVsYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5nZW4uc2FtcGxlLCBwb3B1bGF0aW9uLCBOKzEpCiAKICAgICBkZWYgdGVzdF9zYW1wbGVfZGlzdHJpYnV0aW9uKHNlbGYpOgogICAgICAgICAjIEZvciB0aGUgZW50aXJlIGFsbG93YWJsZSByYW5nZSBvZiAwIDw9IGsgPD0gTiwgdmFsaWRhdGUgdGhhdApAQCAtMjA1LDYgKzI1MSwyNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocmFuZ2Uoc3RhcnQsc3RvcCkpLAogICAgICAgICAgICAgICAgIHNldChbc2VsZi5nZW4ucmFuZHJhbmdlKHN0YXJ0LHN0b3ApIGZvciBpIGluIHJhbmdlKDEwMCldKSkKIAorICAgIGRlZiB0ZXN0X3JhbmRyYW5nZV9ub251bml0X3N0ZXAoc2VsZik6CisgICAgICAgIHJpbnQgPSBzZWxmLmdlbi5yYW5kcmFuZ2UoMCwgMTAsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmludCwgKDAsIDIsIDQsIDYsIDgpKQorICAgICAgICByaW50ID0gc2VsZi5nZW4ucmFuZHJhbmdlKDAsIDIsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmludCwgMCkKKworICAgIGRlZiB0ZXN0X3JhbmRyYW5nZV9lcnJvcnMoc2VsZik6CisgICAgICAgIHJhaXNlcyA9IHBhcnRpYWwoc2VsZi5hc3NlcnRSYWlzZXMsIFZhbHVlRXJyb3IsIHNlbGYuZ2VuLnJhbmRyYW5nZSkKKyAgICAgICAgIyBFbXB0eSByYW5nZQorICAgICAgICByYWlzZXMoMywgMykKKyAgICAgICAgcmFpc2VzKC03MjEpCisgICAgICAgIHJhaXNlcygwLCAxMDAsIC0xMikKKyAgICAgICAgIyBOb24taW50ZWdlciBzdGFydC9zdG9wCisgICAgICAgIHJhaXNlcygzLjE0MTU5KQorICAgICAgICByYWlzZXMoMCwgMi43MTgyOCkKKyAgICAgICAgIyBaZXJvIGFuZCBub24taW50ZWdlciBzdGVwCisgICAgICAgIHJhaXNlcygwLCA0MiwgMCkKKyAgICAgICAgcmFpc2VzKDAsIDQyLCAzLjE0MTU5KQorCiAgICAgZGVmIHRlc3RfZ2VucmFuZGJpdHMoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHJhbmdlcwogICAgICAgICBmb3IgayBpbiByYW5nZSgxLCAxMDAwKToKQEAgLTI3NCw2ICszMzksMTYgQEAKICAgICAgICAgIyBMYXN0IGVsZW1lbnQgcy9iIGFuIGludCBhbHNvCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5nZW4uc2V0c3RhdGUsICgyLCAoMCwpKjYyNCsoJ2EnLCksIE5vbmUpKQogCisgICAgICAgICMgTGl0dGxlIHRyaWNrIHRvIG1ha2UgInR1cGxlKHggJSAoMioqMzIpIGZvciB4IGluIGludGVybmFsc3RhdGUpIgorICAgICAgICAjIHJhaXNlIFZhbHVlRXJyb3IuIEkgY2Fubm90IHRoaW5rIG9mIGEgc2ltcGxlIHdheSB0byBhY2hpZXZlIHRoaXMsIHNvCisgICAgICAgICMgSSBhbSBvcHRpbmcgZm9yIHVzaW5nIGEgZ2VuZXJhdG9yIGFzIHRoZSBtaWRkbGUgYXJndW1lbnQgb2Ygc2V0c3RhdGUKKyAgICAgICAgIyB3aGljaCBhdHRlbXB0cyB0byBjYXN0IGEgTmFOIHRvIGludGVnZXIuCisgICAgICAgIHN0YXRlX3ZhbHVlcyA9IHNlbGYuZ2VuLmdldHN0YXRlKClbMV0KKyAgICAgICAgc3RhdGVfdmFsdWVzID0gbGlzdChzdGF0ZV92YWx1ZXMpCisgICAgICAgIHN0YXRlX3ZhbHVlc1stMV0gPSBmbG9hdCgnbmFuJykKKyAgICAgICAgc3RhdGUgPSAoaW50KHgpIGZvciB4IGluIHN0YXRlX3ZhbHVlcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmdlbi5zZXRzdGF0ZSwgKDIsIHN0YXRlLCBOb25lKSkKKwogICAgIGRlZiB0ZXN0X3JlZmVyZW5jZUltcGxlbWVudGF0aW9uKHNlbGYpOgogICAgICAgICAjIENvbXBhcmUgdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiB3aXRoIHJlc3VsdHMgZnJvbSB0aGUgb3JpZ2luYWwKICAgICAgICAgIyBjb2RlLiAgQ3JlYXRlIDIwMDAgNTMtYml0IHByZWNpc2lvbiByYW5kb20gZmxvYXRzLiAgQ29tcGFyZSBvbmx5CkBAIC00MTMsNiArNDg4LDM4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIG51bWJpdHMpICAgICAgICAjIG5vdGUgdGhlIHN0cm9uZ2VyIGFzc2VydGlvbgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDIqKmsgPiBuID4gMioqKGstMSkpICAgIyBub3RlIHRoZSBzdHJvbmdlciBhc3NlcnRpb24KIAorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdyYW5kb20uUmFuZG9tLnJhbmRvbScpCisgICAgZGVmIHRlc3RfcmFuZGJlbG93X292ZXJyaWRlbl9yYW5kb20oc2VsZiwgcmFuZG9tX21vY2spOgorICAgICAgICAjIFJhbmRvbS5fcmFuZGJlbG93KCkgY2FuIG9ubHkgdXNlIHJhbmRvbSgpIHdoZW4gdGhlIGJ1aWx0LWluIG9uZQorICAgICAgICAjIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnV0IG5vIG5ldyBnZXRyYW5kYml0cygpIG1ldGhvZCB3YXMgc3VwcGxpZWQuCisgICAgICAgIHJhbmRvbV9tb2NrLnNpZGVfZWZmZWN0ID0gcmFuZG9tLlN5c3RlbVJhbmRvbSgpLnJhbmRvbQorICAgICAgICBtYXhzaXplID0gMTw8cmFuZG9tLkJQRgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIFVzZXJXYXJuaW5nKQorICAgICAgICAgICAgIyBQb3B1bGF0aW9uIHJhbmdlIHRvbyBsYXJnZSAobiA+PSBtYXhzaXplKQorICAgICAgICAgICAgc2VsZi5nZW4uX3JhbmRiZWxvdyhtYXhzaXplKzEsIG1heHNpemUgPSBtYXhzaXplKQorICAgICAgICBzZWxmLmdlbi5fcmFuZGJlbG93KDU2NDAsIG1heHNpemUgPSBtYXhzaXplKQorCisgICAgICAgICMgVGhpcyBtaWdodCBiZSBnb2luZyB0b28gZmFyIHRvIHRlc3QgYSBzaW5nbGUgbGluZSwgYnV0IGJlY2F1c2Ugb2Ygb3VyCisgICAgICAgICMgbm9ibGUgYWltIG9mIGFjaGlldmluZyAxMDAlIHRlc3QgY292ZXJhZ2Ugd2UgbmVlZCB0byB3cml0ZSBhIGNhc2UgaW4KKyAgICAgICAgIyB3aGljaCB0aGUgZm9sbG93aW5nIGxpbmUgaW4gUmFuZG9tLl9yYW5kYmVsb3coKSBnZXRzIGV4ZWN1dGVkOgorICAgICAgICAjCisgICAgICAgICMgcmVtID0gbWF4c2l6ZSAlIG4KKyAgICAgICAgIyBsaW1pdCA9IChtYXhzaXplIC0gcmVtKSAvIG1heHNpemUKKyAgICAgICAgIyByID0gcmFuZG9tKCkKKyAgICAgICAgIyB3aGlsZSByID49IGxpbWl0OgorICAgICAgICAjICAgICByID0gcmFuZG9tKCkgIyA8PT0gKlRoaXMgbGluZSogPD09PAorICAgICAgICAjCisgICAgICAgICMgVGhlcmVmb3JlLCB0byBndWFyYW50ZWUgdGhhdCB0aGUgd2hpbGUgbG9vcCBpcyBleGVjdXRlZCBhdCBsZWFzdAorICAgICAgICAjIG9uY2UsIHdlIG5lZWQgdG8gbW9jayByYW5kb20oKSBzbyB0aGF0IGl0IHJldHVybnMgYSBudW1iZXIgZ3JlYXRlcgorICAgICAgICAjIHRoYW4gJ2xpbWl0JyB0aGUgZmlyc3QgdGltZSBpdCBnZXRzIGNhbGxlZC4KKworICAgICAgICBuID0gNDIKKyAgICAgICAgZXBzaWxvbiA9IDAuMDEKKyAgICAgICAgbGltaXQgPSAobWF4c2l6ZSAtIChtYXhzaXplICUgbikpIC8gbWF4c2l6ZQorICAgICAgICByYW5kb21fbW9jay5zaWRlX2VmZmVjdCA9IFtsaW1pdCArIGVwc2lsb24sIGxpbWl0IC0gZXBzaWxvbl0KKyAgICAgICAgc2VsZi5nZW4uX3JhbmRiZWxvdyhuLCBtYXhzaXplID0gbWF4c2l6ZSkKKwogICAgIGRlZiB0ZXN0X3JhbmRyYW5nZV9idWdfMTU5MDg5MShzZWxmKToKICAgICAgICAgc3RhcnQgPSAxMDAwMDAwMDAwMDAwCiAgICAgICAgIHN0b3AgPSAtMTAwMDAwMDAwMDAwMDAwMDAwMDAwCkBAIC01MzAsNiArNjM3LDEwNiBAQAogICAgICAgICByYW5kb20udm9ubWlzZXN2YXJpYXRlKDAsIDFlMTUpCiAgICAgICAgIHJhbmRvbS52b25taXNlc3ZhcmlhdGUoMCwgMWUxMDApCiAKKyAgICBkZWYgdGVzdF9nYW1tYXZhcmlhdGVfZXJyb3JzKHNlbGYpOgorICAgICAgICAjIEJvdGggYWxwaGEgYW5kIGJldGEgbXVzdCBiZSA+IDAuMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByYW5kb20uZ2FtbWF2YXJpYXRlLCAtMSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmFuZG9tLmdhbW1hdmFyaWF0ZSwgMCwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmFuZG9tLmdhbW1hdmFyaWF0ZSwgMiwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmFuZG9tLmdhbW1hdmFyaWF0ZSwgMSwgLTMpCisKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgncmFuZG9tLlJhbmRvbS5yYW5kb20nKQorICAgIGRlZiB0ZXN0X2dhbW1hdmFyaWF0ZV9mdWxsX2NvZGVfY292ZXJhZ2Uoc2VsZiwgcmFuZG9tX21vY2spOgorICAgICAgICAjIFRoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgcG9zc2liaWxpdGllcyBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAjIG9mIHJhbmRvbS5nYW1tYXZhcmlhdGUoKSwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAnYWxwaGEnLiBXaGF0IHdlCisgICAgICAgICMgYXJlIGdvaW5nIHRvIGRvIGhlcmUgaXMgdG8gZml4IHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgcmFuZG9tKCkgdG8KKyAgICAgICAgIyBnZW5lcmF0ZSB0ZXN0IGNhc2VzIHRoYXQgcHJvdmlkZSAxMDAlIGxpbmUgY292ZXJhZ2Ugb2YgdGhlIG1ldGhvZC4KKworICAgICAgICAjICMxOiBhbHBoYSA+IDEuMDogd2Ugd2FudCB0aGUgZmlyc3QgcmFuZG9tIG51bWJlciB0byBiZSBvdXRzaWRlIHRoZQorICAgICAgICAjIFsxZS03LCAuOTk5OTk5OV0gcmFuZ2UsIHNvIHRoYXQgdGhlIGNvbnRpbnVlIHN0YXRlbWVudCBleGVjdXRlcworICAgICAgICAjIG9uY2UuIFRoZSB2YWx1ZXMgb2YgdTEgYW5kIHUyIHdpbGwgYmUgMC41IGFuZCAwLjMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgcmFuZG9tX21vY2suc2lkZV9lZmZlY3QgPSBbMWUtOCwgMC41LCAwLjNdCisgICAgICAgIHJldHVybmVkX3ZhbHVlID0gcmFuZG9tLmdhbW1hdmFyaWF0ZSgxLjEsIDIuMykKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXR1cm5lZF92YWx1ZSwgMi41MykKKworICAgICAgICAjICMyOiBhbHBoYSA9PSAxOiBmaXJzdCByYW5kb20gbnVtYmVyIGxlc3MgdGhhbiAxZS03IHRvIHRoYXQgdGhlIGJvZHkKKyAgICAgICAgIyBvZiB0aGUgd2hpbGUgbG9vcCBleGVjdXRlcyBvbmNlLiBUaGVuIHJhbmRvbS5yYW5kb20oKSByZXR1cm5zIDAuNDUsCisgICAgICAgICMgd2hpY2ggY2F1c2VzIHdoaWxlIHRvIHN0b3AgbG9vcGluZyBhbmQgdGhlIGFsZ29yaXRobSB0byB0ZXJtaW5hdGUuCisgICAgICAgIHJhbmRvbV9tb2NrLnNpZGVfZWZmZWN0ID0gWzFlLTgsIDAuNDVdCisgICAgICAgIHJldHVybmVkX3ZhbHVlID0gcmFuZG9tLmdhbW1hdmFyaWF0ZSgxLjAsIDMuMTQpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwocmV0dXJuZWRfdmFsdWUsIDIuNTA3MzE0MTY2MTIzODAzKQorCisgICAgICAgICMgIzM6IDAgPCBhbHBoYSA8IDEuIFRoaXMgaXMgdGhlIG1vc3QgY29tcGxleCByZWdpb24gb2YgY29kZSB0byBjb3ZlciwKKyAgICAgICAgIyBhcyB0aGVyZSBhcmUgbXVsdGlwbGUgaWYtZWxzZSBzdGF0ZW1lbnRzLiBMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUKKyAgICAgICAgIyBzb3VyY2UgY29kZSwgYW5kIGRldGVybWluZSB0aGUgdmFsdWVzIHRoYXQgd2UgbmVlZCBhY2NvcmRpbmdseToKKyAgICAgICAgIworICAgICAgICAjIHdoaWxlIDE6CisgICAgICAgICMgICAgIHUgPSByYW5kb20oKQorICAgICAgICAjICAgICBiID0gKF9lICsgYWxwaGEpL19lCisgICAgICAgICMgICAgIHAgPSBiKnUKKyAgICAgICAgIyAgICAgaWYgcCA8PSAxLjA6ICMgPD09PSAoQSkKKyAgICAgICAgIyAgICAgICAgIHggPSBwICoqICgxLjAvYWxwaGEpCisgICAgICAgICMgICAgIGVsc2U6ICMgPD09PSAoQikKKyAgICAgICAgIyAgICAgICAgIHggPSAtX2xvZygoYi1wKS9hbHBoYSkKKyAgICAgICAgIyAgICAgdTEgPSByYW5kb20oKQorICAgICAgICAjICAgICBpZiBwID4gMS4wOiAjIDw9PT0gKEMpCisgICAgICAgICMgICAgICAgICBpZiB1MSA8PSB4ICoqIChhbHBoYSAtIDEuMCk6ICMgPD09PSAoRCkKKyAgICAgICAgIyAgICAgICAgICAgICBicmVhaworICAgICAgICAjICAgICBlbGlmIHUxIDw9IF9leHAoLXgpOiAjIDw9PT0gKEUpCisgICAgICAgICMgICAgICAgICBicmVhaworICAgICAgICAjIHJldHVybiB4ICogYmV0YQorICAgICAgICAjCisgICAgICAgICMgRmlyc3QsIHdlIHdhbnQgKEEpIHRvIGJlIFRydWUuIEZvciB0aGF0IHdlIG5lZWQgdGhhdDoKKyAgICAgICAgIyBiKnJhbmRvbSgpIDw9IDEuMAorICAgICAgICAjIHIxID0gcmFuZG9tKCkgPD0gMS4wIC8gYgorICAgICAgICAjCisgICAgICAgICMgV2Ugbm93IGdldCB0byB0aGUgc2Vjb25kIGlmLWVsc2UgYnJhbmNoLCBhbmQgaGVyZSwgc2luY2UgcCA8PSAxLjAsCisgICAgICAgICMgKEMpIGlzIEZhbHNlIGFuZCB3ZSB0YWtlIHRoZSBlbGlmIGJyYW5jaCwgKEUpLiBGb3IgaXQgdG8gYmUgVHJ1ZSwKKyAgICAgICAgIyBzbyB0aGF0IHRoZSBicmVhayBpcyBleGVjdXRlZCwgd2UgbmVlZCB0aGF0OgorICAgICAgICAjIHIyID0gcmFuZG9tKCkgPD0gX2V4cCgteCkKKyAgICAgICAgIyByMiA8PSBfZXhwKC0ocCAqKiAoMS4wL2FscGhhKSkpCisgICAgICAgICMgcjIgPD0gX2V4cCgtKChiKnIxKSAqKiAoMS4wL2FscGhhKSkpCisKKyAgICAgICAgX2UgPSByYW5kb20uX2UKKyAgICAgICAgX2V4cCA9IHJhbmRvbS5fZXhwCisgICAgICAgIF9sb2cgPSByYW5kb20uX2xvZworICAgICAgICBhbHBoYSA9IDAuMzUKKyAgICAgICAgYmV0YSA9IDEuNDUKKyAgICAgICAgYiA9IChfZSArIGFscGhhKS9fZQorICAgICAgICBlcHNpbG9uID0gMC4wMQorCisgICAgICAgIHIxID0gMC44ODU5Mjk2NDQxNTY2ICMgMS4wIC8gYgorICAgICAgICByMiA9IDAuMzY3ODc5NDQxMTcxNCAjIF9leHAoLSgoYipyMSkgKiogKDEuMC9hbHBoYSkpKQorCisgICAgICAgICMgVGhlc2UgZm91ciAicmFuZG9tIiB2YWx1ZXMgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgdHJhY2U6CisgICAgICAgICMgKEEpIFRydWUsIChFKSBGYWxzZSAtLT4gW25leHQgaXRlcmF0aW9uIG9mIHdoaWxlXQorICAgICAgICAjIChBKSBUcnVlLCAoRSkgVHJ1ZSAtLT4gW3doaWxlIGxvb3AgYnJlYWtzXQorICAgICAgICByYW5kb21fbW9jay5zaWRlX2VmZmVjdCA9IFtyMSwgcjIgKyBlcHNpbG9uLCByMSwgcjJdCisgICAgICAgIHJldHVybmVkX3ZhbHVlID0gcmFuZG9tLmdhbW1hdmFyaWF0ZShhbHBoYSwgYmV0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXR1cm5lZF92YWx1ZSwgMS40NDk5OTk5OTk5OTk3NTQ0KQorCisgICAgICAgICMgTGV0J3Mgbm93IG1ha2UgKEEpIGJlIEZhbHNlLiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3aGVuIHdlIGdldCB0byB0aGUKKyAgICAgICAgIyBzZWNvbmQgaWYtZWxzZSAncCcgaXMgZ3JlYXRlciB0aGFuIDEsIHNvIChDKSBldmFsdWF0ZXMgdG8gVHJ1ZS4gV2UKKyAgICAgICAgIyBub3cgZW5jb3VudGVyIGEgc2Vjb25kIGlmIHN0YXRlbWVudCwgKEQpLCB3aGljaCBpbiBvcmRlciB0byBleGVjdXRlCisgICAgICAgICMgbXVzdCBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uOgorICAgICAgICAjIHIyIDw9IHggKiogKGFscGhhIC0gMS4wKQorICAgICAgICAjIHIyIDw9ICgtX2xvZygoYi1wKS9hbHBoYSkpICoqIChhbHBoYSAtIDEuMCkKKyAgICAgICAgIyByMiA8PSAoLV9sb2coKGItKGIqcjEpKS9hbHBoYSkpICoqIChhbHBoYSAtIDEuMCkKKyAgICAgICAgcjEgPSAwLjg5NTkyOTY0NDE1NjYgIyAoMS4wIC8gYikgKyBlcHNpbG9uIC0tIHNvIHRoYXQgKEEpIGlzIEZhbHNlCisgICAgICAgIHIyID0gMC45NDQ1NDAwNDA4ODk4MTQxCisKKyAgICAgICAgIyBBbmQgdGhlc2UgZm91ciB2YWx1ZXMgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgdHJhY2U6CisgICAgICAgICMgKEIpIGFuZCAoQykgVHJ1ZSwgKEQpIEZhbHNlIC0tPiBbbmV4dCBpdGVyYXRpb24gb2Ygd2hpbGVdCisgICAgICAgICMgKEIpIGFuZCAoQykgVHJ1ZSwgKEQpIFRydWUgW3doaWxlIGxvb3AgYnJlYWtzXQorICAgICAgICByYW5kb21fbW9jay5zaWRlX2VmZmVjdCA9IFtyMSwgcjIgKyBlcHNpbG9uLCByMSwgcjJdCisgICAgICAgIHJldHVybmVkX3ZhbHVlID0gcmFuZG9tLmdhbW1hdmFyaWF0ZShhbHBoYSwgYmV0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXR1cm5lZF92YWx1ZSwgMS41ODMwMzQ5NTYxNzYwNzgxKQorCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ3JhbmRvbS5SYW5kb20uZ2FtbWF2YXJpYXRlJykKKyAgICBkZWYgdGVzdF9iZXRhdmFyaWF0ZV9yZXR1cm5femVybyhzZWxmLCBnYW1tYXZhcmlhdGVfbW9jayk6CisgICAgICAgICMgYmV0YXZhcmlhdGUoKSByZXR1cm5zIHplcm8gd2hlbiB0aGUgR2FtbWEgZGlzdHJpYnV0aW9uCisgICAgICAgICMgdGhhdCBpdCB1c2VzIGludGVybmFsbHkgcmV0dXJucyB0aGlzIHNhbWUgdmFsdWUuCisgICAgICAgIGdhbW1hdmFyaWF0ZV9tb2NrLnJldHVybl92YWx1ZSA9IDAuMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAuMCwgcmFuZG9tLmJldGF2YXJpYXRlKDIuNzE4MjgsIDMuMTQxNTkpKQogCiBjbGFzcyBUZXN0TW9kdWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdE1hZ2ljQ29uc3RhbnRzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKaW5kZXggMmExM2JmZS4uZjA4ODM4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZSwgSU4oKSkKIAogICAgICAgICAjIFRlc3QgdXNlIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzIGluIHNsaWNlIGluZGljZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZSgxMClbOkkoNSldKSwgbGlzdChyYW5nZSg1KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2UoMTApWzpJKDUpXSwgcmFuZ2UoNSkpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgogICAgICAgICAgICAgcmFuZ2UoMCwgMTApWzpJWCgpXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI5NzJjYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKQEAgLTAsMCArMSwxMDAgQEAKKyIiIgorVGVzdHMgb2YgcmVncnRlc3QucHkuCisiIiIKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZ2V0b3B0CitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QsIHN1cHBvcnQKKworZGVmIG9sZF9wYXJzZV9hcmdzKGFyZ3MpOgorICAgICIiIlBhcnNlIGFyZ3VtZW50cyBhcyByZWdydGVzdCBkaWQgc3RyaWN0bHkgcHJpb3IgdG8gMy40LgorCisgICAgUmFpc2VzIGdldG9wdC5HZXRvcHRFcnJvciBvbiBiYWQgYXJndW1lbnRzLgorICAgICIiIgorICAgIHJldHVybiBnZXRvcHQuZ2V0b3B0KGFyZ3MsICdodnF4c29TOnJmOmx1OnQ6VEQ6TkxSOkZkd1dNOm5qOkdtOicsCisgICAgICAgIFsnaGVscCcsICd2ZXJib3NlJywgJ3ZlcmJvc2UyJywgJ3ZlcmJvc2UzJywgJ3F1aWV0JywKKyAgICAgICAgICdleGNsdWRlJywgJ3NpbmdsZScsICdzbG93JywgJ3JhbmRvbWl6ZScsICdmcm9tZmlsZT0nLCAnZmluZGxlYWtzJywKKyAgICAgICAgICd1c2U9JywgJ3RocmVzaG9sZD0nLCAnY292ZXJkaXI9JywgJ25vY292ZXJkaXInLAorICAgICAgICAgJ3J1bmxlYWtzJywgJ2h1bnRybGVha3M9JywgJ21lbWxpbWl0PScsICdyYW5kc2VlZD0nLAorICAgICAgICAgJ211bHRpcHJvY2Vzcz0nLCAnY292ZXJhZ2UnLCAnc2xhdmVhcmdzPScsICdmb3JldmVyJywgJ2RlYnVnJywKKyAgICAgICAgICdzdGFydD0nLCAnbm93aW5kb3dzJywgJ2hlYWRlcicsICd0ZXN0ZGlyPScsICd0aW1lb3V0PScsICd3YWl0JywKKyAgICAgICAgICdmYWlsZmFzdCcsICdtYXRjaD0nXSkKKworY2xhc3MgUGFyc2VBcmdzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB0aGF0IHJlZ3J0ZXN0J3MgcGFyc2luZyBjb2RlIG1hdGNoZXMgdGhlIHByaW9yIGdldG9wdCBiZWhhdmlvci4iIiIKKworICAgIGRlZiBfcGFyc2VfYXJncyhzZWxmLCBhcmdzKToKKyAgICAgICAgIyBUaGlzIGlzIHRoZSBzYW1lIGxvZ2ljIGFzIHRoYXQgdXNlZCBpbiByZWdydGVzdC5tYWluKCkKKyAgICAgICAgcGFyc2VyID0gcmVncnRlc3QuX2NyZWF0ZV9wYXJzZXIoKQorICAgICAgICBucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykKKyAgICAgICAgb3B0cyA9IHJlZ3J0ZXN0Ll9jb252ZXJ0X25hbWVzcGFjZV90b19nZXRvcHQobnMpCisgICAgICAgIHJldHVybiBvcHRzLCBucy5hcmdzCisKKyAgICBkZWYgX2NoZWNrX2FyZ3Moc2VsZiwgYXJncywgZXhwZWN0ZWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGUgZXhwZWN0ZWQgcGFyYW1ldGVyIGlzIGZvciBjYXNlcyB3aGVuIHRoZSBiZWhhdmlvciBvZiB0aGUgbmV3CisgICAgICAgIHBhcnNlX2FyZ3MgZGlmZmVycyBmcm9tIHRoZSBvbGQgKGJ1dCBkZWxpYmVyYXRlbHkgc28pLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZXhwZWN0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG9sZF9wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgICAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yOgorICAgICAgICAgICAgICAgICMgU3VwcHJlc3MgdXNhZ2Ugc3RyaW5nIG91dHB1dCB3aGVuIGFuIGFyZ3BhcnNlLkFyZ3VtZW50RXJyb3IKKyAgICAgICAgICAgICAgICAjIGVycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIHNlbGYuX3BhcnNlX2FyZ3MsIGFyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgVGhlIG5ldyBwYXJzZV9hcmdzKCkgc29ydHMgYnkgbG9uZyBvcHRpb24gc3RyaW5nLgorICAgICAgICBleHBlY3RlZFswXS5zb3J0KCkKKyAgICAgICAgYWN0dWFsID0gc2VsZi5fcGFyc2VfYXJncyhhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF91bnJlY29nbml6ZWRfYXJndW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLXh4eCddKQorCisgICAgZGVmIHRlc3RfdmFsdWVfbm90X3Byb3ZpZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19hcmdzKFsnLS1zdGFydCddKQorCisgICAgZGVmIHRlc3Rfc2hvcnRfb3B0aW9uKHNlbGYpOgorICAgICAgICAjIGdldG9wdCByZXR1cm5zIHRoZSBzaG9ydCBvcHRpb24gd2hlcmVhcyBhcmdwYXJzZSByZXR1cm5zIHRoZSBsb25nLgorICAgICAgICBleHBlY3RlZCA9IChbKCctLXF1aWV0JywgJycpXSwgW10pCisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctcSddLCBleHBlY3RlZD1leHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2xvbmdfb3B0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19hcmdzKFsnLS1xdWlldCddKQorCisgICAgZGVmIHRlc3RfbG9uZ19vcHRpb25fX3BhcnRpYWwoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLXF1aSddKQorCisgICAgZGVmIHRlc3RfdHdvX29wdGlvbnMoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLXF1aWV0JywgJy0tZXhjbHVkZSddKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLXN0YXJ0JywgJ2ZvbyddKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uX3dpdGhfZW1wdHlfc3RyaW5nX3ZhbHVlKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19hcmdzKFsnLS1zdGFydCcsICcnXSkKKworICAgIGRlZiB0ZXN0X2FyZyhzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfYXJncyhbJ2ZvbyddKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uX2FuZF9hcmcoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLXF1aWV0JywgJ2ZvbyddKQorCisgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLWZyb21maWxlJywgJ2ZpbGUnXSkKKworICAgIGRlZiB0ZXN0X21hdGNoKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19hcmdzKFsnLS1tYXRjaCcsICdwYXR0ZXJuJ10pCisKKyAgICBkZWYgdGVzdF9yYW5kb21pemUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3MoWyctLXJhbmRvbWl6ZSddKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5IGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CmluZGV4IDU4OWVjZGQuLjEwNGUzYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKQEAgLTMsMTEgKzMsMTEgQEAKICAgTmljayBNYXRoZXdzb24KICIiIgogCi1pbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNyZWF0ZV9lbXB0eV9maWxlLCB2ZXJib3NlCkBAIC0yNDEsNyArMjQxLDggQEAKICAgICAgICAgc291cmNlX3BhdGhfbGVuICs9IDIgKiAobGVuKHNlbGYubG9uZ25hbWUpICsgMSkKICAgICAgICAgIyBhIHBhdGggc2VwYXJhdG9yICsgYG1vZHVsZV9uYW1lYCArICIucHkiCiAgICAgICAgIHNvdXJjZV9wYXRoX2xlbiArPSBsZW4obW9kdWxlX25hbWUpICsgMSArIGxlbigiLnB5IikKLSAgICAgICAgY2FjaGVkX3BhdGhfbGVuID0gc291cmNlX3BhdGhfbGVuICsgbGVuKGltcC5jYWNoZV9mcm9tX3NvdXJjZSgieC5weSIpKSAtIGxlbigieC5weSIpCisgICAgICAgIGNhY2hlZF9wYXRoX2xlbiA9IChzb3VyY2VfcGF0aF9sZW4gKworICAgICAgICAgICAgbGVuKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCJ4LnB5IikpIC0gbGVuKCJ4LnB5IikpCiAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgY2FjaGVkX3BhdGhfbGVuID49IDI1ODoKICAgICAgICAgICAgICMgVW5kZXIgV2luZG93cywgdGhlIG1heCBwYXRoIGxlbiBpcyAyNjAgaW5jbHVkaW5nIEMncyB0ZXJtaW5hdGluZwogICAgICAgICAgICAgIyBOVUwgY2hhcmFjdGVyLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXNvdXJjZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmVzb3VyY2UucHkKaW5kZXggMGNmNjFjYi4uMWJmMmE1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZXNvdXJjZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Jlc291cmNlLnB5CkBAIC02MSw3ICs2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKC4xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYuZmx1c2goKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGltaXRfc2V0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0X3NldDoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CmluZGV4IDJkZGJhMzQuLjE2ZTJlMTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQpAQCAtNTc1LDEyICs1NzUsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbJ3MnXSwgIm5vbi1BU0NJSTogaFx4ZTkiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoCi0gICAgICAgICAgICAgICAgIEV4ZWN1dGlvbkxheWVyVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIFJ1bk1vZHVsZVRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBSdW5QYXRoVGVzdENhc2UKLSAgICAgICAgICAgICAgICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5IGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQppbmRleCAwNzA4ODZkLi5jNmFiZjNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKQEAgLTE5Nyw4ICsxOTcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwsIFtdKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q2FzZSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKaW5kZXggMjZjZTA0Mi4uYjMyNTU0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CkBAIC03MTUsNiArNzE1LDE5IEBACiAgICAgICAgIGRlZiBiKCk6CiAgICAgICAgICAgICBnbG9iYWwgYQogCisgICAgZGVmIHRlc3RDbGFzc05hbWVzcGFjZU92ZXJyaWRlc0Nsb3N1cmUoc2VsZik6CisgICAgICAgICMgU2VlICMxNzg1My4KKyAgICAgICAgeCA9IDQyCisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBsb2NhbHMoKVsieCJdID0gNDMKKyAgICAgICAgICAgIHkgPSB4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC55LCA0MykKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGxvY2FscygpWyJ4Il0gPSA0MworICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFgsICJ4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNDIpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RDZWxsTGVhayhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNzkyNy4KQEAgLTc0MywxMCArNzU2LDYgQEAKICAgICAgICAgZGVsIHRlc3RlcgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWYoKSkKIAotICAgIGRlZiB0ZXN0X19DbGFzc19fR2xvYmFsKHNlbGYpOgotICAgICAgICBzID0gImNsYXNzIFg6XG4gICAgZ2xvYmFsIF9fY2xhc3NfX1xuICAgIGRlZiBmKHNlbGYpOiBzdXBlcigpIgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXhlYywgcykKLQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KFNjb3BlVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CmluZGV4IGRkYjlhMGYuLjhmOWExYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm1bOjNdIGluICgnd2luJywgJ29zMicsICdyaXNjb3MnKSwKK0B1bml0dGVzdC5za2lwSWYoKHN5cy5wbGF0Zm9ybVs6M109PSd3aW4nKSwKICAgICAgICAgICAgICAgICAgImNhbid0IGVhc2lseSB0ZXN0IG9uIHRoaXMgc3lzdGVtIikKIGNsYXNzIFNlbGVjdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW2ZkXSwgW10sIFtdLCAwKQotICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZXJybm8sIGVycm5vLkVCQURGKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4Y2VwdGlvbiBub3QgcmFpc2VkIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggOGY4NjE1Ni4uZjhjNzE4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTg0OCw4ICs4NDgsNiBAQAogICAgICAgICBmb3IgdiBpbiBzZWxmLnNldDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odiwgc2VsZi52YWx1ZXMpCiAgICAgICAgIHNldGl0ZXIgPSBpdGVyKHNlbGYuc2V0KQotICAgICAgICAjIG5vdGU6IF9fbGVuZ3RoX2hpbnRfXyBpcyBhbiBpbnRlcm5hbCB1bmRvY3VtZW50ZWQgQVBJLAotICAgICAgICAjIGRvbid0IHJlbHkgb24gaXQgaW4geW91ciBvd24gcHJvZ3JhbXMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXRpdGVyLl9fbGVuZ3RoX2hpbnRfXygpLCBsZW4oc2VsZi5zZXQpKQogCiAgICAgZGVmIHRlc3RfcGlja2xpbmcoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NoZWx2ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CmluZGV4IDEzYzEyNjUuLmJkNTFkODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5CkBAIC0xNDgsNiArMTQ4LDE5IEBACiAgICAgICAgIHAyID0gZFtlbmNvZGVka2V5XQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAxLCBwMikgICMgV3JpdGUgY3JlYXRlcyBuZXcgb2JqZWN0IGluIHN0b3JlCiAKKyAgICBkZWYgdGVzdF93aXRoKHNlbGYpOgorICAgICAgICBkMSA9IHt9CisgICAgICAgIHdpdGggc2hlbHZlLlNoZWxmKGQxLCBwcm90b2NvbD0yLCB3cml0ZWJhY2s9RmFsc2UpIGFzIHM6CisgICAgICAgICAgICBzWydrZXkxJ10gPSBbMSwyLDMsNF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1sna2V5MSddLCBbMSwyLDMsNF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGVuLCBzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzWydrZXkxJ10KKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0Nsb3NlZCBzaGVsZiBzaG91bGQgbm90IGZpbmQgYSBrZXknKQogCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCBhY2FmZmRkLi5mOTBjMzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtMTgsNyArMTgsOCBAQAogICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCwgdW5yZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgZ2V0X2FyY2hpdmVfZm9ybWF0cywgRXJyb3IsIHVucGFja19hcmNoaXZlLAogICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl91bnBhY2tfZm9ybWF0LCBSZWdpc3RyeUVycm9yLAotICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQsIGdldF91bnBhY2tfZm9ybWF0cykKKyAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0LCBnZXRfdW5wYWNrX2Zvcm1hdHMsCisgICAgICAgICAgICAgICAgICAgIFNhbWVGaWxlRXJyb3IpCiBpbXBvcnQgdGFyZmlsZQogaW1wb3J0IHdhcm5pbmdzCiAKQEAgLTczOSw3ICs3NDAsNyBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKHNyYywgJ3cnKSBhcyBmOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJ2NoZWRkYXInKQogICAgICAgICAgICAgb3MubGluayhzcmMsIGRzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNodXRpbC5FcnJvciwgc2h1dGlsLmNvcHlmaWxlLCBzcmMsIGRzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNodXRpbC5TYW1lRmlsZUVycm9yLCBzaHV0aWwuY29weWZpbGUsIHNyYywgZHN0KQogICAgICAgICAgICAgd2l0aCBvcGVuKHNyYywgJ3InKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICdjaGVkZGFyJykKICAgICAgICAgICAgIG9zLnJlbW92ZShkc3QpCkBAIC03NTksNyArNzYwLDcgQEAKICAgICAgICAgICAgICMgdG8gVEVTVEZOL1RFU1RGTi9jaGVlc2UsIHdoaWxlIGl0IHNob3VsZCBwb2ludCBhdAogICAgICAgICAgICAgIyBURVNURk4vY2hlZXNlLgogICAgICAgICAgICAgb3Muc3ltbGluaygnY2hlZXNlJywgZHN0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2h1dGlsLkVycm9yLCBzaHV0aWwuY29weWZpbGUsIHNyYywgZHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2h1dGlsLlNhbWVGaWxlRXJyb3IsIHNodXRpbC5jb3B5ZmlsZSwgc3JjLCBkc3QpCiAgICAgICAgICAgICB3aXRoIG9wZW4oc3JjLCAncicpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ2NoZWRkYXInKQogICAgICAgICAgICAgb3MucmVtb3ZlKGRzdCkKQEAgLTEyNjYsNiArMTI2NywxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocnYpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZmlsZShzcmNfZmlsZSksIHJlYWRfZmlsZShkc3RfZmlsZSkpCiAKKyAgICBkZWYgdGVzdF9jb3B5ZmlsZV9zYW1lX2ZpbGUoc2VsZik6CisgICAgICAgICMgY29weWZpbGUoKSBzaG91bGQgcmFpc2UgU2FtZUZpbGVFcnJvciBpZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbgorICAgICAgICAjIGFyZSB0aGUgc2FtZS4KKyAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyY19maWxlID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyY19maWxlLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2FtZUZpbGVFcnJvciwgc2h1dGlsLmNvcHlmaWxlLCBzcmNfZmlsZSwgc3JjX2ZpbGUpCisgICAgICAgICMgQnV0IEVycm9yIHNob3VsZCB3b3JrIHRvbywgdG8gc3RheSBiYWNrd2FyZCBjb21wYXRpYmxlLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFcnJvciwgc2h1dGlsLmNvcHlmaWxlLCBzcmNfZmlsZSwgc3JjX2ZpbGUpCisKICAgICBkZWYgdGVzdF9jb3B5dHJlZV9yZXR1cm5fdmFsdWUoc2VsZik6CiAgICAgICAgICMgY29weXRyZWUgcmV0dXJucyBpdHMgZGVzdGluYXRpb24gcGF0aC4KICAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCkBAIC0xNTYxLDcgKzE1NzIsNyBAQAogICAgICAgICAgICAgc2VsZi5fZXhpdGVkX3dpdGggPSBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiCiAgICAgICAgICAgICBpZiBzZWxmLl9yYWlzZV9pbl9leGl0OgogICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlZCA9IFRydWUKLSAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJDYW5ub3QgY2xvc2UiKQorICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbm5vdCBjbG9zZSIpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3VwcHJlc3NfYXRfZXhpdAogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtMTU3NSwxMiArMTU4NiwxMiBAQAogICAgIGRlZiB0ZXN0X3dfc291cmNlX29wZW5fZmFpbHMoc2VsZik6CiAgICAgICAgIGRlZiBfb3BlbihmaWxlbmFtZSwgbW9kZT0ncicpOgogICAgICAgICAgICAgaWYgZmlsZW5hbWUgPT0gJ3NyY2ZpbGUnOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ0Nhbm5vdCBvcGVuICJzcmNmaWxlIicpCisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignQ2Fubm90IG9wZW4gInNyY2ZpbGUiJykKICAgICAgICAgICAgIGFzc2VydCAwICAjIHNob3VsZG4ndCByZWFjaCBoZXJlLgogCiAgICAgICAgIHNlbGYuX3NldF9zaHV0aWxfb3Blbihfb3BlbikKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBzaHV0aWwuY29weWZpbGUsICdzcmNmaWxlJywgJ2Rlc3RmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLmNvcHlmaWxlLCAnc3JjZmlsZScsICdkZXN0ZmlsZScpCiAKICAgICBkZWYgdGVzdF93X2Rlc3Rfb3Blbl9mYWlscyhzZWxmKToKIApAQCAtMTU5MCwxNCArMTYwMSwxNCBAQAogICAgICAgICAgICAgaWYgZmlsZW5hbWUgPT0gJ3NyY2ZpbGUnOgogICAgICAgICAgICAgICAgIHJldHVybiBzcmNmaWxlCiAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9PSAnZGVzdGZpbGUnOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ0Nhbm5vdCBvcGVuICJkZXN0ZmlsZSInKQorICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ0Nhbm5vdCBvcGVuICJkZXN0ZmlsZSInKQogICAgICAgICAgICAgYXNzZXJ0IDAgICMgc2hvdWxkbid0IHJlYWNoIGhlcmUuCiAKICAgICAgICAgc2VsZi5fc2V0X3NodXRpbF9vcGVuKF9vcGVuKQogCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZSgnc3JjZmlsZScsICdkZXN0ZmlsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzcmNmaWxlLl9lbnRlcmVkKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3JjZmlsZS5fZXhpdGVkX3dpdGhbMF0gaXMgSU9FcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNyY2ZpbGUuX2V4aXRlZF93aXRoWzBdIGlzIE9TRXJyb3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZmlsZS5fZXhpdGVkX3dpdGhbMV0uYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0Nhbm5vdCBvcGVuICJkZXN0ZmlsZSInLCkpCiAKQEAgLTE2MTksNyArMTYzMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzcmNmaWxlLl9lbnRlcmVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZGVzdGZpbGUuX2VudGVyZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZXN0ZmlsZS5fcmFpc2VkKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3JjZmlsZS5fZXhpdGVkX3dpdGhbMF0gaXMgSU9FcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNyY2ZpbGUuX2V4aXRlZF93aXRoWzBdIGlzIE9TRXJyb3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZmlsZS5fZXhpdGVkX3dpdGhbMV0uYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0Nhbm5vdCBjbG9zZScsKSkKIApAQCAtMTYzNyw3ICsxNjQ4LDcgQEAKIAogICAgICAgICBzZWxmLl9zZXRfc2h1dGlsX29wZW4oX29wZW4pCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlLCAnc3JjZmlsZScsICdkZXN0ZmlsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzcmNmaWxlLl9lbnRlcmVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZGVzdGZpbGUuX2VudGVyZWQpCkBAIC0xNzA4LDkgKzE3MTksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTaHV0aWwsIFRlc3RNb3ZlLCBUZXN0Q29weUZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVGVybXNpemVUZXN0cywgVGVzdFdoaWNoKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDliNGJhNTAuLjFlZmI1ZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0xNSw5ICsxNSw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi1pZiBzeXMucGxhdGZvcm0gaW4gKCdvczInLCAncmlzY29zJyk6Ci0gICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNhbid0IHRlc3Qgc2lnbmFsIG9uICVzIiAlIHN5cy5wbGF0Zm9ybSkKLQogCiBjbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTM2LDcgKzMzLDcgQEAKIGRlZiBpZ25vcmluZ19laW50cihfX2Z1bmMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gX19mdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICByYWlzZQogICAgICAgICByZXR1cm4gTm9uZQpAQCAtMzE1LDEwICszMTIsMTAgQEAKICAgICAgICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzZWxlY3QgY2FsbAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3JlYWRdLCBbXSwgW10sIFRJTUVPVVRfRlVMTCkKLSAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigic2VsZWN0LmVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT1NFcnJvciBub3QgcmFpc2VkIikKICAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQppbmRleCAyOTI4NmM3Li40YWZmOTMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CkBAIC0yMjIsMTEgKzIyMiw3IEBACiAgICAgICAgIHNpdGUuUFJFRklYRVMgPSBbJ3hveG8nXQogICAgICAgICBkaXJzID0gc2l0ZS5nZXRzaXRlcGFja2FnZXMoKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ0xpYicsICdzaXRlLXBhY2thZ2VzJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotICAgICAgICBlbGlmIChzeXMucGxhdGZvcm0gPT0gImRhcndpbiIgYW5kCisgICAgICAgIGlmIChzeXMucGxhdGZvcm0gPT0gImRhcndpbiIgYW5kCiAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpKToKICAgICAgICAgICAgICMgT1MgWCBmcmFtZXdvcmsgYnVpbGRzCiAgICAgICAgICAgICBzaXRlLlBSRUZJWEVTID0gWydQeXRob24uZnJhbWV3b3JrJ10KQEAgLTQwNSw4ICs0MDEsNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNpdGVjdXN0b21pemUgbm90IGltcG9ydGVkIGF1dG9tYXRpY2FsbHkiKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEhlbHBlckZ1bmN0aW9uc1Rlc3RzLCBJbXBvcnRTaWRlRWZmZWN0VGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkgYi9MaWIvdGVzdC90ZXN0X3NsaWNlLnB5CmluZGV4IDJkZjkyNzEuLjkyMDNkNWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbGljZS5weQpAQCAtNCw4ICs0LDcwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKIAoraW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3lzCiAKKworZGVmIGV2YWx1YXRlX3NsaWNlX2luZGV4KGFyZyk6CisgICAgIiIiCisgICAgSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBzbGljZSBhcmd1bWVudCB0byBhbiBpbnRlZ2VyLCBhbmQgcmFpc2UKKyAgICBUeXBlRXJyb3Igd2l0aCBhIHN1aXRhYmxlIG1lc3NhZ2Ugb24gZmFpbHVyZS4KKworICAgICIiIgorICAgIGlmIGhhc2F0dHIoYXJnLCAnX19pbmRleF9fJyk6CisgICAgICAgIHJldHVybiBvcGVyYXRvci5pbmRleChhcmcpCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgInNsaWNlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciAiCisgICAgICAgICAgICAiTm9uZSBvciBoYXZlIGFuIF9faW5kZXhfXyBtZXRob2QiKQorCitkZWYgc2xpY2VfaW5kaWNlcyhzbGljZSwgbGVuZ3RoKToKKyAgICAiIiIKKyAgICBSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBzbGljZS5pbmRpY2VzIG1ldGhvZC4KKworICAgICIiIgorICAgICMgQ29tcHV0ZSBzdGVwIGFuZCBsZW5ndGggYXMgaW50ZWdlcnMuCisgICAgbGVuZ3RoID0gb3BlcmF0b3IuaW5kZXgobGVuZ3RoKQorICAgIHN0ZXAgPSAxIGlmIHNsaWNlLnN0ZXAgaXMgTm9uZSBlbHNlIGV2YWx1YXRlX3NsaWNlX2luZGV4KHNsaWNlLnN0ZXApCisKKyAgICAjIFJhaXNlIFZhbHVlRXJyb3IgZm9yIG5lZ2F0aXZlIGxlbmd0aCBvciB6ZXJvIHN0ZXAuCisgICAgaWYgbGVuZ3RoIDwgMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibGVuZ3RoIHNob3VsZCBub3QgYmUgbmVnYXRpdmUiKQorICAgIGlmIHN0ZXAgPT0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2xpY2Ugc3RlcCBjYW5ub3QgYmUgemVybyIpCisKKyAgICAjIEZpbmQgbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3Igc3RhcnQgYW5kIHN0b3AuCisgICAgbG93ZXIgPSAtMSBpZiBzdGVwIDwgMCBlbHNlIDAKKyAgICB1cHBlciA9IGxlbmd0aCAtIDEgaWYgc3RlcCA8IDAgZWxzZSBsZW5ndGgKKworICAgICMgQ29tcHV0ZSBzdGFydC4KKyAgICBpZiBzbGljZS5zdGFydCBpcyBOb25lOgorICAgICAgICBzdGFydCA9IHVwcGVyIGlmIHN0ZXAgPCAwIGVsc2UgbG93ZXIKKyAgICBlbHNlOgorICAgICAgICBzdGFydCA9IGV2YWx1YXRlX3NsaWNlX2luZGV4KHNsaWNlLnN0YXJ0KQorICAgICAgICBzdGFydCA9IG1heChzdGFydCArIGxlbmd0aCwgbG93ZXIpIGlmIHN0YXJ0IDwgMCBlbHNlIG1pbihzdGFydCwgdXBwZXIpCisKKyAgICAjIENvbXB1dGUgc3RvcC4KKyAgICBpZiBzbGljZS5zdG9wIGlzIE5vbmU6CisgICAgICAgIHN0b3AgPSBsb3dlciBpZiBzdGVwIDwgMCBlbHNlIHVwcGVyCisgICAgZWxzZToKKyAgICAgICAgc3RvcCA9IGV2YWx1YXRlX3NsaWNlX2luZGV4KHNsaWNlLnN0b3ApCisgICAgICAgIHN0b3AgPSBtYXgoc3RvcCArIGxlbmd0aCwgbG93ZXIpIGlmIHN0b3AgPCAwIGVsc2UgbWluKHN0b3AsIHVwcGVyKQorCisgICAgcmV0dXJuIHN0YXJ0LCBzdG9wLCBzdGVwCisKKworIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4gIFVzZWQgZm9yIHRlc3Rpbmcgc2xpY2UuaW5kaWNlcy4KKworY2xhc3MgTXlJbmRleGFibGUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKwogY2xhc3MgU2xpY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgpAQCAtNzUsNiArMTM3LDIyIEBACiAgICAgICAgIHMgPSBzbGljZShvYmopCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0b3AgaXMgb2JqKQogCisgICAgZGVmIGNoZWNrX2luZGljZXMoc2VsZiwgc2xpY2UsIGxlbmd0aCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjdHVhbCA9IHNsaWNlLmluZGljZXMobGVuZ3RoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJ2YWx1ZWVycm9yIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNsaWNlX2luZGljZXMoc2xpY2UsIGxlbmd0aCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBleHBlY3RlZCA9ICJ2YWx1ZWVycm9yIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKKyAgICAgICAgaWYgbGVuZ3RoID49IDAgYW5kIHNsaWNlLnN0ZXAgIT0gMDoKKyAgICAgICAgICAgIGFjdHVhbCA9IHJhbmdlKCpzbGljZS5pbmRpY2VzKGxlbmd0aCkpCisgICAgICAgICAgICBleHBlY3RlZCA9IHJhbmdlKGxlbmd0aClbc2xpY2VdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9pbmRpY2VzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaWNlKE5vbmUgICAgICAgICAgICkuaW5kaWNlcygxMCksICgwLCAxMCwgIDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaWNlKE5vbmUsICBOb25lLCAgMikuaW5kaWNlcygxMCksICgwLCAxMCwgIDIpKQpAQCAtMTA4LDcgKzE4Niw0MSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZSgxMCkpWzo6c3lzLm1heHNpemUgLSAxXSwgWzBdKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNsaWNlKE5vbmUpLmluZGljZXMsIDE8PDEwMCkKKyAgICAgICAgIyBDaGVjayBhIHZhcmlldHkgb2Ygc3RhcnQsIHN0b3AsIHN0ZXAgYW5kIGxlbmd0aCB2YWx1ZXMsIGluY2x1ZGluZworICAgICAgICAjIHZhbHVlcyBleGNlZWRpbmcgc3lzLm1heHNpemUgKHNlZSBpc3N1ZSAjMTQ3OTQpLgorICAgICAgICB2YWxzID0gW05vbmUsIC0yKioxMDAsIC0yKiozMCwgLTUzLCAtNywgLTEsIDAsIDEsIDcsIDUzLCAyKiozMCwgMioqMTAwXQorICAgICAgICBsZW5ndGhzID0gWzAsIDEsIDcsIDUzLCAyKiozMCwgMioqMTAwXQorICAgICAgICBmb3Igc2xpY2VfYXJncyBpbiBpdGVydG9vbHMucHJvZHVjdCh2YWxzLCByZXBlYXQ9Myk6CisgICAgICAgICAgICBzID0gc2xpY2UoKnNsaWNlX2FyZ3MpCisgICAgICAgICAgICBmb3IgbGVuZ3RoIGluIGxlbmd0aHM6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19pbmRpY2VzKHMsIGxlbmd0aCkKKyAgICAgICAgc2VsZi5jaGVja19pbmRpY2VzKHNsaWNlKDAsIDEwLCAxKSwgLTMpCisKKyAgICAgICAgIyBOZWdhdGl2ZSBsZW5ndGggc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNsaWNlKE5vbmUpLmluZGljZXMoLTEpCisKKyAgICAgICAgIyBaZXJvIHN0ZXAgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNsaWNlKDAsIDEwLCAwKS5pbmRpY2VzKDUpCisKKyAgICAgICAgIyBVc2luZyBhIHN0YXJ0LCBzdG9wIG9yIHN0ZXAgb3IgbGVuZ3RoIHRoYXQgY2FuJ3QgYmUgaW50ZXJwcmV0ZWQgYXMgYW4KKyAgICAgICAgIyBpbnRlZ2VyIHNob3VsZCBnaXZlIGEgVHlwZUVycm9yIC4uLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzbGljZSgwLjAsIDEwLCAxKS5pbmRpY2VzKDUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNsaWNlKDAsIDEwLjAsIDEpLmluZGljZXMoNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2xpY2UoMCwgMTAsIDEuMCkuaW5kaWNlcyg1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzbGljZSgwLCAxMCwgMSkuaW5kaWNlcyg1LjApCisKKyAgICAgICAgIyAuLi4gYnV0IGl0IHNob3VsZCBiZSBmaW5lIHRvIHVzZSBhIGN1c3RvbSBjbGFzcyB0aGF0IHByb3ZpZGVzIGluZGV4LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaWNlKDAsIDEwLCAxKS5pbmRpY2VzKDUpLCAoMCwgNSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpY2UoTXlJbmRleGFibGUoMCksIDEwLCAxKS5pbmRpY2VzKDUpLCAoMCwgNSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpY2UoMCwgTXlJbmRleGFibGUoMTApLCAxKS5pbmRpY2VzKDUpLCAoMCwgNSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpY2UoMCwgMTAsIE15SW5kZXhhYmxlKDEpKS5pbmRpY2VzKDUpLCAoMCwgNSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpY2UoMCwgMTAsIDEpLmluZGljZXMoTXlJbmRleGFibGUoNSkpLCAoMCwgNSwgMSkpCiAKICAgICBkZWYgdGVzdF9zZXRzbGljZV93aXRob3V0X2dldHNsaWNlKHNlbGYpOgogICAgICAgICB0bXAgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CmluZGV4IGY5M2QzNTUuLjhmNjRlYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKQEAgLTIyMiw3ICsyMjIsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNvdXJjZV9hZGRyZXNzLCAoJzEyNy4wLjAuMScsIHBvcnQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLmxvY2FsX2hvc3RuYW1lLCAnbG9jYWxob3N0JykKICAgICAgICAgICAgIHNtdHAucXVpdCgpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCiAgICAgICAgICAgICByYWlzZQpAQCAtNTI0LDEyICs1MjQsNiBAQAogCiBjbGFzcyBOb25Db25uZWN0aW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzbXRwbGliLnNvY2tldCA9IG1vY2tfc29ja2V0Ci0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHNtdHBsaWIuc29ja2V0ID0gc29ja2V0Ci0KICAgICBkZWYgdGVzdE5vdENvbm5lY3RlZChzZWxmKToKICAgICAgICAgIyBUZXN0IHZhcmlvdXMgb3BlcmF0aW9ucyBvbiBhbiB1bmNvbm5lY3RlZCBTTVRQIG9iamVjdCB0aGF0CiAgICAgICAgICMgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbnMgKGF0IHByZXNlbnQgdGhlIGF0dGVtcHQgaW4gU01UUC5zZW5kCkBAIC01NDEsMTAgKzUzNSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBzbXRwLnNlbmQsICd0ZXN0IG1zZycpCiAKICAgICBkZWYgdGVzdE5vbm51bWVyaWNQb3J0KHNlbGYpOgotICAgICAgICAjIGNoZWNrIHRoYXQgbm9uLW51bWVyaWMgcG9ydCByYWlzZXMgc29ja2V0LmVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1vY2tfc29ja2V0LmVycm9yLCBzbXRwbGliLlNNVFAsCisgICAgICAgICMgY2hlY2sgdGhhdCBub24tbnVtZXJpYyBwb3J0IHJhaXNlcyBPU0Vycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNtdHBsaWIuU01UUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsICJib2d1cyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1vY2tfc29ja2V0LmVycm9yLCBzbXRwbGliLlNNVFAsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNtdHBsaWIuU01UUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdDpib2d1cyIpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbmRoZHIucHkgYi9MaWIvdGVzdC90ZXN0X3NuZGhkci5weQppbmRleCAxMDA0Njg4Li41ZTBhYmUwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NuZGhkci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NuZGhkci5weQpAQCAtMTIsNyArMTIsNyBAQAogICAgICAgICAgICAgKCdzbmRoZHIuaGNvbScsICgnaGNvbScsIDIyMDUwLjAsIDEsIC0xLCA4KSksCiAgICAgICAgICAgICAoJ3NuZGhkci5zbmR0JywgKCdzbmR0JywgNDQxMDAsIDEsIDUsIDgpKSwKICAgICAgICAgICAgICgnc25kaGRyLnZvYycsICgndm9jJywgMCwgMSwgLTEsIDgpKSwKLSAgICAgICAgICAgICgnc25kaGRyLndhdicsICgnd2F2JywgNDQxMDAsIDIsIC0xLCAxNikpLAorICAgICAgICAgICAgKCdzbmRoZHIud2F2JywgKCd3YXYnLCA0NDEwMCwgMiwgNSwgMTYpKSwKICAgICAgICAgKToKICAgICAgICAgICAgIGZpbGVuYW1lID0gZmluZGZpbGUoZmlsZW5hbWUsIHN1YmRpcj0ic25kaGRyZGF0YSIpCiAgICAgICAgICAgICB3aGF0ID0gc25kaGRyLndoYXQoZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGZhOWE2NWYuLjU0ZmI5YTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0yLDcgKzIsNiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBfRXhwZWN0ZWRGYWlsdXJlCiAKIGltcG9ydCBlcnJubwogaW1wb3J0IGlvCkBAIC00Niw3ICs0NSw3IEBACiAgICAgIiIiQ2hlY2sgd2hldGhlciBDQU4gc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKICAgICB0cnk6CiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgc29ja2V0LmVycm9yLCBPU0Vycm9yKToKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZWxzZToKICAgICAgICAgcy5jbG9zZSgpCkBAIC0xMjEsMTIgKzEyMCw0MiBAQAogICAgIGludGVyZmFjZSA9ICd2Y2FuMCcKICAgICBidWZzaXplID0gMTI4CiAKKyAgICAiIiJUaGUgQ0FOIGZyYW1lIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDxsaW51eC9jYW4uaD46CisKKyAgICBzdHJ1Y3QgY2FuX2ZyYW1lIHsKKyAgICAgICAgY2FuaWRfdCBjYW5faWQ7ICAvKiAzMiBiaXQgQ0FOX0lEICsgRUZGL1JUUi9FUlIgZmxhZ3MgKi8KKyAgICAgICAgX191OCAgICBjYW5fZGxjOyAvKiBkYXRhIGxlbmd0aCBjb2RlOiAwIC4uIDggKi8KKyAgICAgICAgX191OCAgICBkYXRhWzhdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyAgICB9OworICAgICIiIgorICAgIGNhbl9mcmFtZV9mbXQgPSAiPUlCM3g4cyIKKyAgICBjYW5fZnJhbWVfc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShjYW5fZnJhbWVfZm10KQorCisgICAgIiIiVGhlIEJyb2FkY2FzdCBNYW5hZ2VtZW50IENvbW1hbmQgZnJhbWUgc3RydWN0dXJlIGlzIGRlZmluZWQKKyAgICBpbiA8bGludXgvY2FuL2JjbS5oPjoKKworICAgIHN0cnVjdCBiY21fbXNnX2hlYWQgeworICAgICAgICBfX3UzMiBvcGNvZGU7CisgICAgICAgIF9fdTMyIGZsYWdzOworICAgICAgICBfX3UzMiBjb3VudDsKKyAgICAgICAgc3RydWN0IHRpbWV2YWwgaXZhbDEsIGl2YWwyOworICAgICAgICBjYW5pZF90IGNhbl9pZDsKKyAgICAgICAgX191MzIgbmZyYW1lczsKKyAgICAgICAgc3RydWN0IGNhbl9mcmFtZSBmcmFtZXNbMF07CisgICAgfQorCisgICAgYGJjbV9tc2dfaGVhZGAgbXVzdCBiZSA4IGJ5dGVzIGFsaWduZWQgYmVjYXVzZSBvZiB0aGUgYGZyYW1lc2AgbWVtYmVyIChzZWUKKyAgICBgc3RydWN0IGNhbl9mcmFtZWAgZGVmaW5pdGlvbikuIE11c3QgdXNlIG5hdGl2ZSBub3Qgc3RhbmRhcmQgdHlwZXMgZm9yIHBhY2tpbmcuCisgICAgIiIiCisgICAgYmNtX2NtZF9tc2dfZm10ID0gIkAzSTRsMkkiCisgICAgYmNtX2NtZF9tc2dfZm10ICs9ICJ4IiAqIChzdHJ1Y3QuY2FsY3NpemUoYmNtX2NtZF9tc2dfZm10KSAlIDgpCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucy5jbG9zZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zLmJpbmQoKHNlbGYuaW50ZXJmYWNlLCkpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbmV0d29yayBpbnRlcmZhY2UgYCVzYCBkb2VzIG5vdCBleGlzdCcgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnRlcmZhY2UpCiAKQEAgLTI0Miw5ICsyNzEsNiBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0ZXN0X2Z1bmMgbXVzdCBiZSBhIGNhbGxhYmxlIGZ1bmN0aW9uIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdF9mdW5jKCkKLSAgICAgICAgZXhjZXB0IF9FeHBlY3RlZEZhaWx1cmU6Ci0gICAgICAgICAgICAjIFdlIGRlbGliZXJhdGVseSBpZ25vcmUgZXhwZWN0ZWQgZmFpbHVyZXMKLSAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYucXVldWUucHV0KGUpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yOTUsNyArMzIxLDcgQEAKICAgICAgICAgc2VsZi5jbGkgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY2xpLmJpbmQoKHNlbGYuaW50ZXJmYWNlLCkpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgIyBza2lwVGVzdCBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlLCBhbmQgd2lsbCBiZSBjYWxsZWQgaW4gdGhlCiAgICAgICAgICAgICAjIHNlcnZlciBpbnN0ZWFkCiAgICAgICAgICAgICBwYXNzCkBAIC02MDgsNyArNjM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBhcmdzXQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgqY2FsbGFyZ3MpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICMgWFhYOiBjaGVjayBlcnJubz8KICAgICAgICAgICAgIGVyciA9IHN0cihlKQogICAgICAgICBlbHNlOgpAQCAtNjI2LDggKzY1MiwxNyBAQAogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKHMpLnN0YXJ0c3dpdGgoIjxzb2NrZXQuc29ja2V0IG9iamVjdCIpKQorICAgICAgICB3aXRoIHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmZD0laScgJSBzLmZpbGVubygpLCByZXByKHMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmFtaWx5PSVpJyAlIHNvY2tldC5BRl9JTkVULCByZXByKHMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndHlwZT0laScgJSBzb2NrZXQuU09DS19TVFJFQU0sIHJlcHIocykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwcm90bz0wJywgcmVwcihzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3JhZGRyJywgcmVwcihzKSkKKyAgICAgICAgICAgIHMuYmluZCgoJzEyNy4wLjAuMScsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbGFkZHInLCByZXByKHMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdHIocy5nZXRzb2NrbmFtZSgpKSwgcmVwcihzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignW2Nsb3NlZF0nLCByZXByKHMpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsYWRkcicsIHJlcHIocykpCiAKICAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpAQCAtNjQ1LDExICs2ODAsMTEgQEAKICAgICBkZWYgdGVzdFNvY2tldEVycm9yKHNlbGYpOgogICAgICAgICAjIFRlc3Rpbmcgc29ja2V0IG1vZHVsZSBleGNlcHRpb25zCiAgICAgICAgIG1zZyA9ICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24gKCVzKS4iCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5lcnJvcicpOgotICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5oZXJyb3InKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtc2c9bXNnICUgJ09TRXJyb3InKToKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5oZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5oZXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmdhaWVycm9yJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuZ2FpZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5nYWllcnJvcgogCiAgICAgZGVmIHRlc3RTZW5kdG9FcnJvcnMoc2VsZik6CkBAIC03MTIsMTMgKzc0NywxMyBAQAogICAgICAgICBob3N0bmFtZSA9IHNvY2tldC5nZXRob3N0bmFtZSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlwID0gc29ja2V0LmdldGhvc3RieW5hbWUoaG9zdG5hbWUpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgIyBQcm9iYWJseSBuYW1lIGxvb2t1cCB3YXNuJ3Qgc2V0IHVwIHJpZ2h0OyBza2lwIHRoaXMgdGVzdAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcC5maW5kKCcuJykgPj0gMCwgIkVycm9yIHJlc29sdmluZyBob3N0IHRvIGlwLiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGhuYW1lLCBhbGlhc2VzLCBpcGFkZHJzID0gc29ja2V0LmdldGhvc3RieWFkZHIoaXApCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgIyBQcm9iYWJseSBhIHNpbWlsYXIgcHJvYmxlbSBhcyBhYm92ZTsgc2tpcCB0aGlzIHRlc3QKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBhbGxfaG9zdF9uYW1lcyA9IFtob3N0bmFtZSwgaG5hbWVdICsgYWxpYXNlcwpAQCAtNzMyLDcgKzc2Nyw3IEBACiAgICAgICAgIG9sZGhuID0gc29ja2V0LmdldGhvc3RuYW1lKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKCduZXcnKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQRVJNOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRlc3Qgc2hvdWxkIGJlIHJ1biBhcyByb290IikKICAgICAgICAgICAgIGVsc2U6CkBAIC03NjYsOCArODAxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKICAgICBkZWYgdGVzdEludmFsaWRJbnRlcmZhY2VOYW1lSW5kZXgoc2VsZik6CiAgICAgICAgICMgdGVzdCBub25leGlzdGVudCBpbnRlcmZhY2UgaW5kZXgvbmFtZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNvY2tldC5pZl9pbmRleHRvbmFtZSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrZXQuaWZfbmFtZXRvaW5kZXgsICdfREVBREJFRUYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzb2NrZXQuaWZfaW5kZXh0b25hbWUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNvY2tldC5pZl9uYW1ldG9pbmRleCwgJ19ERUFEQkVFRicpCiAgICAgICAgICMgdGVzdCB3aXRoIGludmFsaWQgdmFsdWVzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc29ja2V0LmlmX25hbWV0b2luZGV4LCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNvY2tldC5pZl9pbmRleHRvbmFtZSwgJ19ERUFEQkVFRicpCkBAIC03ODgsNyArODIzLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBPbiBzb21lIHZlcnNpb25zLCB0aGlzIGNyYXNoZXMgdGhlIGludGVycHJldGVyLgogICAgICAgICAgICAgc29ja2V0LmdldG5hbWVpbmZvKCgneCcsIDAsIDAsIDApLCAwKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0TnRvSChzZWxmKToKQEAgLTgzNSwxNyArODcwLDE3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcG9ydCA9IHNvY2tldC5nZXRzZXJ2YnluYW1lKHNlcnZpY2UsICd0Y3AnKQogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yCisgICAgICAgICAgICByYWlzZSBPU0Vycm9yCiAgICAgICAgICMgVHJ5IHNhbWUgY2FsbCB3aXRoIG9wdGlvbmFsIHByb3RvY29sIG9taXR0ZWQKICAgICAgICAgcG9ydDIgPSBzb2NrZXQuZ2V0c2VydmJ5bmFtZShzZXJ2aWNlKQogICAgICAgICBlcShwb3J0LCBwb3J0MikKICAgICAgICAgIyBUcnkgdWRwLCBidXQgZG9uJ3QgYmFyZiBpZiBpdCBkb2Vzbid0IGV4aXN0CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHVkcHBvcnQgPSBzb2NrZXQuZ2V0c2VydmJ5bmFtZShzZXJ2aWNlLCAndWRwJykKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICB1ZHBwb3J0ID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXEodWRwcG9ydCwgcG9ydCkKQEAgLTkwMSw3ICs5MzYsNyBAQAogICAgICAgICBnID0gbGFtYmRhIGE6IGluZXRfcHRvbihBRl9JTkVULCBhKQogCiAgICAgICAgIGFzc2VydEludmFsaWQgPSBsYW1iZGEgZnVuYyxhOiBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIChzb2NrZXQuZXJyb3IsIFZhbHVlRXJyb3IpLCBmdW5jLCBhCisgICAgICAgICAgICAoT1NFcnJvciwgVmFsdWVFcnJvciksIGZ1bmMsIGEKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidceDAwXHgwMFx4MDBceDAwJywgZignMC4wLjAuMCcpKQpAQCAtOTM2LDcgKzk3MSw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZiA9IGxhbWJkYSBhOiBpbmV0X3B0b24oQUZfSU5FVDYsIGEpCiAgICAgICAgIGFzc2VydEludmFsaWQgPSBsYW1iZGEgYTogc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICAoc29ja2V0LmVycm9yLCBWYWx1ZUVycm9yKSwgZiwgYQorICAgICAgICAgICAgKE9TRXJyb3IsIFZhbHVlRXJyb3IpLCBmLCBhCiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHgwMCcgKiAxNiwgZignOjonKSkKQEAgLTk4NSw3ICsxMDIwLDcgQEAKICAgICAgICAgZnJvbSBzb2NrZXQgaW1wb3J0IGluZXRfbnRvYSBhcyBmLCBpbmV0X250b3AsIEFGX0lORVQKICAgICAgICAgZyA9IGxhbWJkYSBhOiBpbmV0X250b3AoQUZfSU5FVCwgYSkKICAgICAgICAgYXNzZXJ0SW52YWxpZCA9IGxhbWJkYSBmdW5jLGE6IHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgKHNvY2tldC5lcnJvciwgVmFsdWVFcnJvciksIGZ1bmMsIGEKKyAgICAgICAgICAgIChPU0Vycm9yLCBWYWx1ZUVycm9yKSwgZnVuYywgYQogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4wLjEuMCcsIGYoYidceDAxXHgwMFx4MDFceDAwJykpCkBAIC0xMDE0LDcgKzEwNDksNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGYgPSBsYW1iZGEgYTogaW5ldF9udG9wKEFGX0lORVQ2LCBhKQogICAgICAgICBhc3NlcnRJbnZhbGlkID0gbGFtYmRhIGE6IHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgKHNvY2tldC5lcnJvciwgVmFsdWVFcnJvciksIGYsIGEKKyAgICAgICAgICAgIChPU0Vycm9yLCBWYWx1ZUVycm9yKSwgZiwgYQogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOjonLCBmKGInXHgwMCcgKiAxNikpCkBAIC0xMDQyLDcgKzEwNzcsNyBAQAogICAgICAgICAjIEF0IGxlYXN0IGZvciBlQ29zLiAgVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIFMvMzkwIHRvIHBhc3MuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG15X2lwX2FkZHIgPSBzb2NrZXQuZ2V0aG9zdGJ5bmFtZShzb2NrZXQuZ2V0aG9zdG5hbWUoKSkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAjIFByb2JhYmx5IG5hbWUgbG9va3VwIHdhc24ndCBzZXQgdXAgcmlnaHQ7IHNraXAgdGhpcyB0ZXN0CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lWzBdLCAoIjAuMC4wLjAiLCBteV9pcF9hZGRyKSwgJyVzIGludmFsaWQnICUgbmFtZVswXSkKQEAgLTEwNjksNyArMTEwNCw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIHNvY2suc2V0dGltZW91dCgxKQogICAgICAgICBzb2NrLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrLnNlbmQsIGIic3BhbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNvY2suc2VuZCwgYiJzcGFtIikKIAogICAgIGRlZiB0ZXN0TmV3QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIC5mYW1pbHksIC50eXBlIGFuZCAucHJvdG9jb2wKQEAgLTExNzIsNyArMTIwNyw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRuYW1laW5mbyhzZWxmKToKICAgICAgICAgIyBvbmx5IElQIGFkZHJlc3NlcyBhcmUgYWxsb3dlZAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNvY2tldC5nZXRuYW1laW5mbywgKCdtYWlsLnB5dGhvbi5vcmcnLDApLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzb2NrZXQuZ2V0bmFtZWluZm8sICgnbWFpbC5weXRob24ub3JnJywwKSwgMCkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrIGlzIG5vdCBlbmFibGVkJykKQEAgLTEyOTUsMTAgKzEzMzAsMzUgQEAKICAgICAgICAgc29ja2V0LlBGX0NBTgogICAgICAgICBzb2NrZXQuQ0FOX1JBVwogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fQkNNIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5DQU5fQkNNIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdEJDTUNvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkNBTl9CQ00KKworICAgICAgICAjIG9wY29kZXMKKyAgICAgICAgc29ja2V0LkNBTl9CQ01fVFhfU0VUVVAgICAgICMgY3JlYXRlIChjeWNsaWMpIHRyYW5zbWlzc2lvbiB0YXNrCisgICAgICAgIHNvY2tldC5DQU5fQkNNX1RYX0RFTEVURSAgICAjIHJlbW92ZSAoY3ljbGljKSB0cmFuc21pc3Npb24gdGFzaworICAgICAgICBzb2NrZXQuQ0FOX0JDTV9UWF9SRUFEICAgICAgIyByZWFkIHByb3BlcnRpZXMgb2YgKGN5Y2xpYykgdHJhbnNtaXNzaW9uIHRhc2sKKyAgICAgICAgc29ja2V0LkNBTl9CQ01fVFhfU0VORCAgICAgICMgc2VuZCBvbmUgQ0FOIGZyYW1lCisgICAgICAgIHNvY2tldC5DQU5fQkNNX1JYX1NFVFVQICAgICAjIGNyZWF0ZSBSWCBjb250ZW50IGZpbHRlciBzdWJzY3JpcHRpb24KKyAgICAgICAgc29ja2V0LkNBTl9CQ01fUlhfREVMRVRFICAgICMgcmVtb3ZlIFJYIGNvbnRlbnQgZmlsdGVyIHN1YnNjcmlwdGlvbgorICAgICAgICBzb2NrZXQuQ0FOX0JDTV9SWF9SRUFEICAgICAgIyByZWFkIHByb3BlcnRpZXMgb2YgUlggY29udGVudCBmaWx0ZXIgc3Vic2NyaXB0aW9uCisgICAgICAgIHNvY2tldC5DQU5fQkNNX1RYX1NUQVRVUyAgICAjIHJlcGx5IHRvIFRYX1JFQUQgcmVxdWVzdAorICAgICAgICBzb2NrZXQuQ0FOX0JDTV9UWF9FWFBJUkVEICAgIyBub3RpZmljYXRpb24gb24gcGVyZm9ybWVkIHRyYW5zbWlzc2lvbnMgKGNvdW50PTApCisgICAgICAgIHNvY2tldC5DQU5fQkNNX1JYX1NUQVRVUyAgICAjIHJlcGx5IHRvIFJYX1JFQUQgcmVxdWVzdAorICAgICAgICBzb2NrZXQuQ0FOX0JDTV9SWF9USU1FT1VUICAgIyBjeWNsaWMgbWVzc2FnZSBpcyBhYnNlbnQKKyAgICAgICAgc29ja2V0LkNBTl9CQ01fUlhfQ0hBTkdFRCAgICMgdXBkYXRlZCBDQU4gZnJhbWUgKGRldGVjdGVkIGNvbnRlbnQgY2hhbmdlKQorCiAgICAgZGVmIHRlc3RDcmVhdGVTb2NrZXQoc2VsZik6CiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgogICAgICAgICAgICAgcGFzcwogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fQkNNIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5DQU5fQkNNIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdENyZWF0ZUJDTVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX0RHUkFNLCBzb2NrZXQuQ0FOX0JDTSkgYXMgczoKKyAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiB0ZXN0QmluZEFueShzZWxmKToKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CiAgICAgICAgICAgICBzLmJpbmQoKCcnLCApKQpAQCAtMTMwNiw3ICsxMzY2LDcgQEAKICAgICBkZWYgdGVzdFRvb0xvbmdJbnRlcmZhY2VOYW1lKHNlbGYpOgogICAgICAgICAjIG1vc3Qgc3lzdGVtcyBsaW1pdCBJRk5BTVNJWiB0byAxNiwgdGFrZSAxMDI0IHRvIGJlIHN1cmUKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC5lcnJvciwgJ2ludGVyZmFjZSBuYW1lIHRvbyBsb25nJywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoT1NFcnJvciwgJ2ludGVyZmFjZSBuYW1lIHRvbyBsb25nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5iaW5kLCAoJ3gnICogMTAyNCwpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fUkFXX0xPT1BCQUNLIiksCkBAIC0xMzMxLDE5ICsxMzkxLDggQEAKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQotQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIENBTlRlc3QoVGhyZWFkZWRDQU5Tb2NrZXRUZXN0KToKIAotICAgICIiIlRoZSBDQU4gZnJhbWUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gPGxpbnV4L2Nhbi5oPjoKLQotICAgIHN0cnVjdCBjYW5fZnJhbWUgewotICAgICAgICBjYW5pZF90IGNhbl9pZDsgIC8qIDMyIGJpdCBDQU5fSUQgKyBFRkYvUlRSL0VSUiBmbGFncyAqLwotICAgICAgICBfX3U4ICAgIGNhbl9kbGM7IC8qIGRhdGEgbGVuZ3RoIGNvZGU6IDAgLi4gOCAqLwotICAgICAgICBfX3U4ICAgIGRhdGFbOF0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpOwotICAgIH07Ci0gICAgIiIiCi0gICAgY2FuX2ZyYW1lX2ZtdCA9ICI9SUIzeDhzIgotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKICAgICAgICAgVGhyZWFkZWRDQU5Tb2NrZXRUZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKIApAQCAtMTM5Miw2ICsxNDQxLDQ2IEBACiAgICAgICAgIHNlbGYuY2YyID0gc2VsZi5idWlsZF9jYW5fZnJhbWUoMHgxMiwgYidceDk5XHgyMlx4MzMnKQogICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YyKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fQkNNIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5DQU5fQkNNIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgX3Rlc3RCQ00oc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5jbGkucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YsIGNmKQorICAgICAgICBjYW5faWQsIGNhbl9kbGMsIGRhdGEgPSBzZWxmLmRpc3NlY3RfY2FuX2ZyYW1lKGNmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FuX2lkLCBjYW5faWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fQkNNIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5DQU5fQkNNIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdEJDTShzZWxmKToKKyAgICAgICAgYmNtID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19ER1JBTSwgc29ja2V0LkNBTl9CQ00pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChiY20uY2xvc2UpCisgICAgICAgIGJjbS5jb25uZWN0KChzZWxmLmludGVyZmFjZSwpKQorICAgICAgICBzZWxmLmNhbl9pZCA9IDB4MTIzCisgICAgICAgIHNlbGYuZGF0YSA9IGJ5dGVzKFsweGMwLCAweGZmLCAweGVlXSkKKyAgICAgICAgc2VsZi5jZiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKHNlbGYuY2FuX2lkLCBzZWxmLmRhdGEpCisgICAgICAgIG9wY29kZSA9IHNvY2tldC5DQU5fQkNNX1RYX1NFTkQKKyAgICAgICAgZmxhZ3MgPSAwCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBpdmFsMV9zZWNvbmRzID0gaXZhbDFfdXNlYyA9IGl2YWwyX3NlY29uZHMgPSBpdmFsMl91c2VjID0gMAorICAgICAgICBiY21fY2FuX2lkID0gMHgwMjIyCisgICAgICAgIG5mcmFtZXMgPSAxCisgICAgICAgIGFzc2VydCBsZW4oc2VsZi5jZikgPT0gMTYKKyAgICAgICAgaGVhZGVyID0gc3RydWN0LnBhY2soc2VsZi5iY21fY21kX21zZ19mbXQsCisgICAgICAgICAgICAgICAgICAgIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgIGNvdW50LAorICAgICAgICAgICAgICAgICAgICBpdmFsMV9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICBpdmFsMV91c2VjLAorICAgICAgICAgICAgICAgICAgICBpdmFsMl9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICBpdmFsMl91c2VjLAorICAgICAgICAgICAgICAgICAgICBiY21fY2FuX2lkLAorICAgICAgICAgICAgICAgICAgICBuZnJhbWVzLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGhlYWRlcl9wbHVzX2ZyYW1lID0gaGVhZGVyICsgc2VsZi5jZgorICAgICAgICBieXRlc19zZW50ID0gYmNtLnNlbmQoaGVhZGVyX3BsdXNfZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXNfc2VudCwgbGVuKGhlYWRlcl9wbHVzX2ZyYW1lKSkKKwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9SRFMsICdSRFMgc29ja2V0cyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBCYXNpY1JEU1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTYwNiw3ICsxNjk1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBmaWxlbm8pCiAgICAgICAgICMgY2xpX2Nvbm4gY2Fubm90IGJlIHVzZWQgYW55bW9yZS4uLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5jbGlfY29ubi5fY2xvc2VkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX2Nvbm4ucmVjdiwgMTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5jbGlfY29ubi5yZWN2LCAxMDI0KQogICAgICAgICBzZWxmLmNsaV9jb25uLmNsb3NlKCkKICAgICAgICAgIyAuLi5idXQgd2UgY2FuIGNyZWF0ZSBhbm90aGVyIHNvY2tldCB1c2luZyB0aGUgKHN0aWxsIG9wZW4pCiAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yCkBAIC0xOTc1LDcgKzIwNjQsNyBAQAogICAgIGRlZiBfdGVzdFNlbmRtc2dFeGNlc3NDbXNnUmVqZWN0KHNlbGYpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihzb2NrZXQsICJDTVNHX1NQQUNFIik6CiAgICAgICAgICAgICAjIENhbiBvbmx5IHNlbmQgb25lIGl0ZW0KLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFsoMCwgMCwgYiIiKSwgKDAsIDAsIGIiIildKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY20uZXhjZXB0aW9uLmVycm5vKQogICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQpAQCAtMTk4Niw3ICsyMDc1LDcgQEAKIAogICAgIGRlZiBfdGVzdFNlbmRtc2dBZnRlckNsb3NlKHNlbGYpOgogICAgICAgICBzZWxmLmNsaV9zb2NrLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwgW01TR10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLCBbTVNHXSkKIAogCiBjbGFzcyBTZW5kbXNnU3RyZWFtVGVzdHMoU2VuZG1zZ1Rlc3RzKToKQEAgLTIwMzAsNyArMjExOSw3IEBACiAgICAgQHRlc3RTZW5kbXNnRG9udFdhaXQuY2xpZW50X3NraXAKICAgICBkZWYgX3Rlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW2IiYSIqNTEyXSwgW10sIHNvY2tldC5NU0dfRE9OVFdBSVQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGNtLmV4Y2VwdGlvbi5lcnJubywKQEAgLTIwNTAsOSArMjEzOSw5IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBfdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZywKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmNsaV9zb2NrLnNlbmRtc2csCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtdLCAwLCBOb25lKQogCiAKQEAgLTIxMzgsNyArMjIyNyw3IEBACiAgICAgZGVmIHRlc3RSZWN2bXNnQWZ0ZXJDbG9zZShzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IHJlY3Ztc2dbX2ludG9dKCkgZmFpbHMgb24gYSBjbG9zZWQgc29ja2V0LgogICAgICAgICBzZWxmLnNlcnZfc29jay5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5kb1JlY3Ztc2csIHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzZWxmLmRvUmVjdm1zZywgc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCiAKICAgICBkZWYgX3Rlc3RSZWN2bXNnQWZ0ZXJDbG9zZShzZWxmKToKICAgICAgICAgcGFzcwpAQCAtMjU4NCw3ICsyNjczLDcgQEAKICAgICAgICAgIyBjYWxsIGZhaWxzLCBqdXN0IHNlbmQgbXNnIHdpdGggbm8gYW5jaWxsYXJ5IGRhdGEuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddLCBhbmNkYXRhKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAjIENoZWNrIHRoYXQgaXQgd2FzIHRoZSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxlZAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuZXJybm8sIGludCkKICAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddKQpAQCAtMjk2Miw3ICszMDUxLDcgQEAKICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYudHJhZmZpY19jbGFzc10pLnRvYnl0ZXMoKSArIGIiXHgwMCIpLAogICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCiAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLmVycm5vLCBpbnQpCiAgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcigKICAgICAgICAgICAgICAgICBbTVNHXSwKQEAgLTM0MjAsMTAgKzM1MDksMTAgQEAKICAgICAgICAgc2VsZi5zZXJ2LnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQogCiAgICAgZGVmIGNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncykgcmFpc2VzIHNvY2tldC5lcnJvciB3aXRoIGFuCisgICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncykgcmFpc2VzIE9TRXJyb3Igd2l0aCBhbgogICAgICAgICAjIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCiAgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKQEAgLTM0ODAsOSArMzU2OSw5IEBACiAKICAgICBkZWYgY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSwgcnVuIGluIGEgbG9vcCwgcmFpc2VzCi0gICAgICAgICMgc29ja2V0LmVycm9yIHdpdGggYW4gZXJybm8gb2YgRUlOVFIgd2hlbiBpbnRlcnJ1cHRlZCBieSBhCisgICAgICAgICMgT1NFcnJvciB3aXRoIGFuIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYQogICAgICAgICAjIHNpZ25hbC4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKICAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKQEAgLTM1NzksNyArMzY2OCw3IEBACiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zZXJ2LmFjY2VwdCgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoKGVuZCAtIHN0YXJ0KSA8IDEuMCwgIkVycm9yIHNldHRpbmcgbm9uLWJsb2NraW5nIG1vZGUuIikKQEAgLTM2MDQsNyArMzY5Myw3IEBACiAgICAgICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2LmFjY2VwdCgpCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZW5kID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoZW5kIC0gc3RhcnQpIDwgMS4wLCAiRXJyb3IgY3JlYXRpbmcgd2l0aCBub24tYmxvY2tpbmcgbW9kZS4iKQpAQCAtMzYzNCw3ICszNzIzLDcgQEAKICAgICAgICAgc2VsZi5zZXJ2LnNldGJsb2NraW5nKDApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkVycm9yIHRyeWluZyB0byBkbyBub24tYmxvY2tpbmcgYWNjZXB0LiIpCkBAIC0zNjY0LDcgKzM3NTMsNyBAQAogICAgICAgICBjb25uLnNldGJsb2NraW5nKDApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG1zZyA9IGNvbm4ucmVjdihsZW4oTVNHKSkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkVycm9yIHRyeWluZyB0byBkbyBub24tYmxvY2tpbmcgcmVjdi4iKQpAQCAtMzc0Nyw3ICszODM2LDcgQEAKICAgICAgICAgIyBGaXJzdCByZWFkIHJhaXNlcyBhIHRpbWVvdXQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQsIHNlbGYucmVhZF9maWxlLnJlYWQsIDEpCiAgICAgICAgICMgU2Vjb25kIHJlYWQgaXMgZGlzYWxsb3dlZAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpIGFzIGN0eDoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjdHg6CiAgICAgICAgICAgICBzZWxmLnJlYWRfZmlsZS5yZWFkKDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbm5vdCByZWFkIGZyb20gdGltZWQgb3V0IG9iamVjdCIsIHN0cihjdHguZXhjZXB0aW9uKSkKIApAQCAtMzgzOSw3ICszOTI4LDcgQEAKICAgICAgICAgc2VsZi5yZWFkX2ZpbGUuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnJlYWRfZmlsZS5maWxlbm8pCiAgICAgICAgIHNlbGYuY2xpX2Nvbm4uY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX2Nvbm4uZ2V0c29ja25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYuY2xpX2Nvbm4uZ2V0c29ja25hbWUpCiAKICAgICBkZWYgX3Rlc3RSZWFsQ2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKQEAgLTM4NzYsNyArMzk2NSw3IEBACiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9yYWlzZV9laW50cigpOgotICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoZXJybm8uRUlOVFIsICJpbnRlcnJ1cHRlZCIpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUlOVFIsICJpbnRlcnJ1cHRlZCIpCiAKICAgICBkZWYgX3RleHRpb3dyYXBfbW9ja19zb2NrZXQoc2VsZiwgbW9jaywgYnVmZmVyaW5nPS0xKToKICAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKG1vY2ssICJyIikKQEAgLTM5ODgsNyArNDA3Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBzZWxmLnJlYWRfbXNnKQogICAgICAgICAjIC4uLnVudGlsIHRoZSBmaWxlIGlzIGl0c2VsZiBjbG9zZWQKICAgICAgICAgc2VsZi5yZWFkX2ZpbGUuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX2Nvbm4ucmVjdiwgMTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5jbGlfY29ubi5yZWN2LCAxMDI0KQogCiAgICAgZGVmIF90ZXN0TWFrZWZpbGVDbG9zZShzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9maWxlLndyaXRlKHNlbGYud3JpdGVfbXNnKQpAQCAtNDEzNyw3ICs0MjI2LDcgQEAKICAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCiAgICAgICAgIGNsaSA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsaS5jbG9zZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgY2xpLmNvbm5lY3QoKEhPU1QsIHBvcnQpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUNPTk5SRUZVU0VEKQogCkBAIC00MTQ1LDcgKzQyMzQsNyBAQAogICAgICAgICAjIElzc3VlICM5NzkyOiBlcnJvcnMgcmFpc2VkIGJ5IGNyZWF0ZV9jb25uZWN0aW9uKCkgc2hvdWxkIGhhdmUKICAgICAgICAgIyBhIHByb3BlciBlcnJubyBhdHRyaWJ1dGUuCiAgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKEhPU1QsIHBvcnQpKQogCiAgICAgICAgICMgSXNzdWUgIzE2MjU3OiBjcmVhdGVfY29ubmVjdGlvbigpIGNhbGxzIGdldGFkZHJpbmZvKCkgYWdhaW5zdApAQCAtNDI5Myw3ICs0MzgyLDcgQEAKICAgICAgICAgICAgIGZvbyA9IHNlbGYuc2Vydi5hY2NlcHQoKQogICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImNhdWdodCB0aW1lb3V0IGluc3RlYWQgb2YgZXJyb3IgKFRDUCkiKQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIG9rID0gVHJ1ZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImNhdWdodCB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAoVENQKSIpCkBAIC00MzUwLDcgKzQ0MzksNyBAQAogICAgICAgICAgICAgZm9vID0gc2VsZi5zZXJ2LnJlY3YoMTAyNCkKICAgICAgICAgZXhjZXB0IHNvY2tldC50aW1lb3V0OgogICAgICAgICAgICAgc2VsZi5mYWlsKCJjYXVnaHQgdGltZW91dCBpbnN0ZWFkIG9mIGVycm9yIChVRFApIikKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBvayA9IFRydWUKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5mYWlsKCJjYXVnaHQgdW5leHBlY3RlZCBleGNlcHRpb24gKFVEUCkiKQpAQCAtNDM2MCwxMCArNDQ0OSwxMCBAQAogY2xhc3MgVGVzdEV4Y2VwdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RFeGNlcHRpb25UcmVlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQuZXJyb3IsIEV4Y2VwdGlvbikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNvY2tldC5oZXJyb3IsIHNvY2tldC5lcnJvcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNvY2tldC5nYWllcnJvciwgc29ja2V0LmVycm9yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc29ja2V0LnRpbWVvdXQsIHNvY2tldC5lcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE9TRXJyb3IsIEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNvY2tldC5oZXJyb3IsIE9TRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQuZ2FpZXJyb3IsIE9TRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQudGltZW91dCwgT1NFcnJvcikpCiAKIGNsYXNzIFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDM4OSw3ICs0NDc4LDcgQEAKICAgICBkZWYgdGVzdE5hbWVPdmVyZmxvdyhzZWxmKToKICAgICAgICAgYWRkcmVzcyA9ICJceDAwIiArICJoIiAqIHNlbGYuVU5JWF9QQVRIX01BWAogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgcy5iaW5kLCBhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcy5iaW5kLCBhZGRyZXNzKQogCiAgICAgZGVmIHRlc3RTdHJOYW1lKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgYW4gYWJzdHJhY3QgbmFtZSBjYW4gYmUgcGFzc2VkIGFzIGEgc3RyaW5nLgpAQCAtNDYyOCw3ICs0NzE3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2suX2Nsb3NlZCkKICAgICAgICAgIyBleGNlcHRpb24gaW5zaWRlIHdpdGggYmxvY2sKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc29jay5zZW5kYWxsLCBiJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzb2NrLnNlbmRhbGwsIGInZm9vJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2suX2Nsb3NlZCkKIAogICAgIGRlZiB0ZXN0Q3JlYXRlQ29ubmVjdGlvbkJhc2Uoc2VsZik6CkBAIC00NjU2LDcgKzQ3NDUsNyBAQAogICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrOgogICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrLl9jbG9zZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc29jay5zZW5kYWxsLCBiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNvY2suc2VuZGFsbCwgYidmb28nKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAiU09DS19DTE9FWEVDIiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CmluZGV4IDQ2NDA1N2UuLjAyYzZjMWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5CkBAIC0yLDggKzIsOCBAQAogVGVzdCBzdWl0ZSBmb3Igc29ja2V0c2VydmVyLgogIiIiCiAKK2ltcG9ydCBfaW1wIGFzIGltcAogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBpbXAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbApAQCAtMjcsNyArMjcsNyBAQAogSE9TVCA9IHRlc3Quc3VwcG9ydC5IT1NUCiAKIEhBVkVfVU5JWF9TT0NLRVRTID0gaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIikKLUhBVkVfRk9SS0lORyA9IGhhc2F0dHIob3MsICJmb3JrIikgYW5kIG9zLm5hbWUgIT0gIm9zMiIKK0hBVkVfRk9SS0lORyA9IGhhc2F0dHIob3MsICJmb3JrIikKIAogZGVmIHNpZ25hbF9hbGFybShuKToKICAgICAiIiJDYWxsIHNpZ25hbC5hbGFybSB3aGVuIGl0IGV4aXN0cyAoaS5lLiBub3Qgb24gV2luZG93cykuIiIiCkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgIGZvciBmbiBpbiBzZWxmLnRlc3RfZmlsZXM6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZuKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLnRlc3RfZmlsZXNbOl0gPSBbXQogCkBAIC05MywyMSArOTMsNyBAQAogICAgICAgICAgICAgIyBYWFg6IFdlIG5lZWQgYSB3YXkgdG8gdGVsbCBBRl9VTklYIHRvIHBpY2sgaXRzIG93biBuYW1lCiAgICAgICAgICAgICAjIGxpa2UgQUZfSU5FVCBwcm92aWRlcyBwb3J0PT0wLgogICAgICAgICAgICAgZGlyID0gTm9uZQotICAgICAgICAgICAgaWYgb3MubmFtZSA9PSAnb3MyJzoKLSAgICAgICAgICAgICAgICBkaXIgPSAnXHNvY2tldCcKICAgICAgICAgICAgIGZuID0gdGVtcGZpbGUubWt0ZW1wKHByZWZpeD0ndW5peF9zb2NrZXQuJywgZGlyPWRpcikKLSAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ29zMic6Ci0gICAgICAgICAgICAgICAgIyBBRl9VTklYIHNvY2tldCBuYW1lcyBvbiBPUy8yIHJlcXVpcmUgYSBzcGVjaWZpYyBwcmVmaXgKLSAgICAgICAgICAgICAgICAjIHdoaWNoIGNhbid0IGluY2x1ZGUgYSBkcml2ZSBsZXR0ZXIgYW5kIG11c3QgYWxzbyB1c2UKLSAgICAgICAgICAgICAgICAjIGJhY2tzbGFzaGVzIGFzIGRpcmVjdG9yeSBzZXBhcmF0b3JzCi0gICAgICAgICAgICAgICAgaWYgZm5bMV0gPT0gJzonOgotICAgICAgICAgICAgICAgICAgICBmbiA9IGZuWzI6XQotICAgICAgICAgICAgICAgIGlmIGZuWzBdIGluIChvcy5zZXAsIG9zLmFsdHNlcCk6Ci0gICAgICAgICAgICAgICAgICAgIGZuID0gZm5bMTpdCi0gICAgICAgICAgICAgICAgaWYgb3Muc2VwID09ICcvJzoKLSAgICAgICAgICAgICAgICAgICAgZm4gPSBmbi5yZXBsYWNlKG9zLnNlcCwgb3MuYWx0c2VwKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZuID0gZm4ucmVwbGFjZShvcy5hbHRzZXAsIG9zLnNlcCkKICAgICAgICAgICAgIHNlbGYudGVzdF9maWxlcy5hcHBlbmQoZm4pCiAgICAgICAgICAgICByZXR1cm4gZm4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDlkMmIzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKQEAgLTAsMCArMSwxMzUgQEAKKyMgLSotIGNvZGluZzoga29pOC1yIC0qLQorCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgdW5sb2FkCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworY2xhc3MgU291cmNlRW5jb2RpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3BlcDI2MyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICLwydTPziIuZW5jb2RlKCJ1dGYtOCIpLAorICAgICAgICAgICAgYidceGQwXHg5Zlx4ZDBceGI4XHhkMVx4ODJceGQwXHhiZVx4ZDBceGJkJworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAiXPAiLmVuY29kZSgidXRmLTgiKSwKKyAgICAgICAgICAgIGInXFxceGQwXHg5ZicKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfY29tcGlsZXN0cmluZyhzZWxmKToKKyAgICAgICAgIyBzZWUgIzE4ODIKKyAgICAgICAgYyA9IGNvbXBpbGUoYiJcbiMgY29kaW5nOiB1dGYtOFxudSA9ICdceGMzXHhiMydcbiIsICJkdW1teSIsICJleGVjIikKKyAgICAgICAgZCA9IHt9CisgICAgICAgIGV4ZWMoYywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWyd1J10sICdceGYzJykKKworICAgIGRlZiB0ZXN0X2lzc3VlMjMwMShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcGlsZShiIiMgY29kaW5nOiBjcDkzMlxucHJpbnQgJ1x4OTRceDRlJyIsICJkdW1teSIsICJleGVjIikKKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIHY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudGV4dCwgInByaW50ICdcdTVlNzQnXG4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCkKKworICAgIGRlZiB0ZXN0X2lzc3VlNDYyNihzZWxmKToKKyAgICAgICAgYyA9IGNvbXBpbGUoIiMgY29kaW5nPWxhdGluLTFcblx1MDBjNiA9ICdcdTAwYzYnIiwgImR1bW15IiwgImV4ZWMiKQorICAgICAgICBkID0ge30KKyAgICAgICAgZXhlYyhjLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ1x4YzYnXSwgJ1x4YzYnKQorCisgICAgZGVmIHRlc3RfaXNzdWUzMjk3KHNlbGYpOgorICAgICAgICBjID0gY29tcGlsZSgiYSwgYiA9ICdcVTAwMDEwMTBGJywgJ1xcVTAwMDEwMTBGJyIsICJkdW1teSIsICJleGVjIikKKyAgICAgICAgZCA9IHt9CisgICAgICAgIGV4ZWMoYywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydhJ10sIGRbJ2InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZFsnYSddKSwgbGVuKGRbJ2InXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNjaWkoZFsnYSddKSwgYXNjaWkoZFsnYiddKSkKKworICAgIGRlZiB0ZXN0X2lzc3VlNzgyMChzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCBjaGVja19ib20oKSByZXN0b3JlcyBhbGwgYnl0ZXMgaW4gdGhlIHJpZ2h0IG9yZGVyIGlmCisgICAgICAgICMgY2hlY2tfYm9tKCkgZmFpbHMgaW4gcHlkZWJ1ZyBtb2RlOiBhIGJ1ZmZlciBzdGFydHMgd2l0aCB0aGUgZmlyc3QKKyAgICAgICAgIyBieXRlIG9mIGEgdmFsaWQgQk9NLCBidXQgbmV4dCBieXRlcyBhcmUgZGlmZmVyZW50CisKKyAgICAgICAgIyBvbmUgYnl0ZSBpbiBjb21tb24gd2l0aCB0aGUgVVRGLTE2LUxFIEJPTQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgYidceGZmXHgyMCcpCisKKyAgICAgICAgIyB0d28gYnl0ZXMgaW4gY29tbW9uIHdpdGggdGhlIFVURi04IEJPTQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgYidceGVmXHhiYlx4MjAnKQorCisgICAgZGVmIHRlc3RfZXJyb3JfbWVzc2FnZShzZWxmKToKKyAgICAgICAgY29tcGlsZShiJyMgLSotIGNvZGluZzogaXNvLTg4NTktMTUgLSotXG4nLCAnZHVtbXknLCAnZXhlYycpCisgICAgICAgIGNvbXBpbGUoYidceGVmXHhiYlx4YmZcbicsICdkdW1teScsICdleGVjJykKKyAgICAgICAgY29tcGlsZShiJ1x4ZWZceGJiXHhiZiMgLSotIGNvZGluZzogdXRmLTggLSotXG4nLCAnZHVtbXknLCAnZXhlYycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2Zha2UnKToKKyAgICAgICAgICAgIGNvbXBpbGUoYicjIC0qLSBjb2Rpbmc6IGZha2UgLSotXG4nLCAnZHVtbXknLCAnZXhlYycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2lzby04ODU5LTE1Jyk6CisgICAgICAgICAgICBjb21waWxlKGInXHhlZlx4YmJceGJmIyAtKi0gY29kaW5nOiBpc28tODg1OS0xNSAtKi1cbicsCisgICAgICAgICAgICAgICAgICAgICdkdW1teScsICdleGVjJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnQk9NJyk6CisgICAgICAgICAgICBjb21waWxlKGInXHhlZlx4YmJceGJmIyAtKi0gY29kaW5nOiBpc28tODg1OS0xNSAtKi1cbicsCisgICAgICAgICAgICAgICAgICAgICdkdW1teScsICdleGVjJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnZmFrZScpOgorICAgICAgICAgICAgY29tcGlsZShiJ1x4ZWZceGJiXHhiZiMgLSotIGNvZGluZzogZmFrZSAtKi1cbicsICdkdW1teScsICdleGVjJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnQk9NJyk6CisgICAgICAgICAgICBjb21waWxlKGInXHhlZlx4YmJceGJmIyAtKi0gY29kaW5nOiBmYWtlIC0qLVxuJywgJ2R1bW15JywgJ2V4ZWMnKQorCisgICAgZGVmIHRlc3RfYmFkX2NvZGluZyhzZWxmKToKKyAgICAgICAgbW9kdWxlX25hbWUgPSAnYmFkX2NvZGluZycKKyAgICAgICAgc2VsZi52ZXJpZnlfYmFkX21vZHVsZShtb2R1bGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X2JhZF9jb2RpbmcyKHNlbGYpOgorICAgICAgICBtb2R1bGVfbmFtZSA9ICdiYWRfY29kaW5nMicKKyAgICAgICAgc2VsZi52ZXJpZnlfYmFkX21vZHVsZShtb2R1bGVfbmFtZSkKKworICAgIGRlZiB2ZXJpZnlfYmFkX21vZHVsZShzZWxmLCBtb2R1bGVfbmFtZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBfX2ltcG9ydF9fLCAndGVzdC4nICsgbW9kdWxlX25hbWUpCisKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbW9kdWxlX25hbWUgKyAnLnB5JykKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgIGJ5dGVzID0gZnAucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBjb21waWxlLCBieXRlcywgZmlsZW5hbWUsICdleGVjJykKKworICAgIGRlZiB0ZXN0X2V4ZWNfdmFsaWRfY29kaW5nKHNlbGYpOgorICAgICAgICBkID0ge30KKyAgICAgICAgZXhlYyhiJyMgY29kaW5nOiBjcDk0OVxuYSA9ICJceGFhXHhhNyJcbicsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnYSddLCAnXHUzMDQ3JykKKworICAgIGRlZiB0ZXN0X2ZpbGVfcGFyc2Uoc2VsZik6CisgICAgICAgICMgaXNzdWUxMTM0OiBhbGwgZW5jb2RpbmdzIG91dHNpZGUgbGF0aW4tMSBhbmQgdXRmLTggZmFpbCBvbgorICAgICAgICAjIG11bHRpbGluZSBzdHJpbmdzIGFuZCBsb25nIGxpbmVzICg+NTEyIGNvbHVtbnMpCisgICAgICAgIHVubG9hZChURVNURk4pCisgICAgICAgIGZpbGVuYW1lID0gVEVTVEZOICsgIi5weSIKKyAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICJ3IiwgZW5jb2Rpbmc9ImNwMTI1MiIpCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCIjIC0qLSBjb2Rpbmc6IGNwMTI1MiAtKi1cbiIpCisgICAgICAgICAgICAgICAgZi53cml0ZSgiJycnQSBzaG9ydCBzdHJpbmdcbiIpCisgICAgICAgICAgICAgICAgZi53cml0ZSgiJycnXG4iKQorICAgICAgICAgICAgICAgIGYud3JpdGUoIidBIHZlcnkgbG9uZyBzdHJpbmcgJXMnXG4iICUgKCJYIiAqIDEwMDApKQorCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgICAgIHVubGluayhmaWxlbmFtZSkKKyAgICAgICAgICAgIHVubGluayhmaWxlbmFtZSArICJjIikKKyAgICAgICAgICAgIHVubGluayhmaWxlbmFtZSArICJvIikKKyAgICAgICAgICAgIHVubG9hZChURVNURk4pCisKKyAgICBkZWYgdGVzdF9lcnJvcl9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTYyODkKKyAgICAgICAgaW5wdXQgPSAiIyBjb2Rpbmc6IGFzY2lpXG5cTntTTk9XTUFOfSIuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpIGFzIGM6CisgICAgICAgICAgICBjb21waWxlKGlucHV0LCAiPHN0cmluZz4iLCAiZXhlYyIpCisgICAgICAgIGV4cGVjdGVkID0gIidhc2NpaScgY29kZWMgY2FuJ3QgZGVjb2RlIGJ5dGUgMHhlMiBpbiBwb3NpdGlvbiAxNjogIiBcCisgICAgICAgICAgICAgICAgICAgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmV4Y2VwdGlvbi5hcmdzWzBdLnN0YXJ0c3dpdGgoZXhwZWN0ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPWMuZXhjZXB0aW9uLmFyZ3NbMF0pCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggMWM0YWE3Yy4uNzVkYzIwMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgdGltZQoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZ2MKIGltcG9ydCBvcwogaW1wb3J0IGVycm5vCkBAIC0xNywxNiArMTgsMTEgQEAKIGltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBmdW5jdG9vbHMKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIAogc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQogCi1QUk9UT0NPTFMgPSBbCi0gICAgc3NsLlBST1RPQ09MX1NTTHYzLAotICAgIHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MQotXQotaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpOgotICAgIFBST1RPQ09MUy5hcHBlbmQoc3NsLlBST1RPQ09MX1NTTHYyKQotCitQUk9UT0NPTFMgPSBzb3J0ZWQoc3NsLl9QUk9UT0NPTF9OQU1FUykKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIAogZGF0YV9maWxlID0gbGFtYmRhIG5hbWU6IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCBuYW1lKQpAQCAtNDgsNiArNDQsMTEgQEAKIENBUEFUSCA9IGRhdGFfZmlsZSgiY2FwYXRoIikKIEJZVEVTX0NBUEFUSCA9IG9zLmZzZW5jb2RlKENBUEFUSCkKIAorIyBUd28ga2V5cyBhbmQgY2VydHMgc2lnbmVkIGJ5IHRoZSBzYW1lIENBIChmb3IgU05JIHRlc3RzKQorU0lHTkVEX0NFUlRGSUxFID0gZGF0YV9maWxlKCJrZXljZXJ0My5wZW0iKQorU0lHTkVEX0NFUlRGSUxFMiA9IGRhdGFfZmlsZSgia2V5Y2VydDQucGVtIikKK1NJR05JTkdfQ0EgPSBkYXRhX2ZpbGUoInB5Y2FjZXJ0LnBlbSIpCisKIFNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCA9IGRhdGFfZmlsZSgiaHR0cHNfc3ZuX3B5dGhvbl9vcmdfcm9vdC5wZW0iKQogCiBFTVBUWUNFUlQgPSBkYXRhX2ZpbGUoIm51bGxjZXJ0LnBlbSIpCkBAIC01OSw2ICs2MCw3IEBACiBESEZJTEUgPSBkYXRhX2ZpbGUoImRoNTEyLnBlbSIpCiBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKKwogZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgogICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQogICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTcyLDYgKzc0LDE5IEBACiAgICAgIyAwLjkuN2ggb3IgaGlnaGVyCiAgICAgcmV0dXJuIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMCwgOSwgNywgOCwgMTUpCiAKK2RlZiBhc24xdGltZShjZXJ0X3RpbWUpOgorICAgICMgU29tZSB2ZXJzaW9ucyBvZiBPcGVuU1NMIGlnbm9yZSBzZWNvbmRzLCBzZWUgIzE4MjA3CisgICAgIyAwLjkuOC5pCisgICAgaWYgc3NsLl9PUEVOU1NMX0FQSV9WRVJTSU9OID09ICgwLCA5LCA4LCA5LCAxNSk6CisgICAgICAgIGZtdCA9ICIlYiAlZCAlSDolTTolUyAlWSBHTVQiCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUuc3RycHRpbWUoY2VydF90aW1lLCBmbXQpCisgICAgICAgIGR0ID0gZHQucmVwbGFjZShzZWNvbmQ9MCkKKyAgICAgICAgY2VydF90aW1lID0gZHQuc3RyZnRpbWUoZm10KQorICAgICAgICAjICVkIGFkZHMgbGVhZGluZyB6ZXJvIGJ1dCBBU04xX1RJTUVfcHJpbnQoKSB1c2VzIGxlYWRpbmcgc3BhY2UKKyAgICAgICAgaWYgY2VydF90aW1lWzRdID09ICIwIjoKKyAgICAgICAgICAgIGNlcnRfdGltZSA9IGNlcnRfdGltZVs6NF0gKyAiICIgKyBjZXJ0X3RpbWVbNTpdCisKKyAgICByZXR1cm4gY2VydF90aW1lCiAKICMgSXNzdWUgIzk0MTU6IFVidW50dSBoaWphY2tzIHRoZWlyIE9wZW5TU0wgYW5kIGZvcmNlZnVsbHkgZGlzYWJsZXMgU1NMdjIKIGRlZiBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsKGZ1bmMpOgpAQCAtODksMTQgKzEwNCwxMiBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBmdW5jCiAKK25lZWRzX3NuaSA9IHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19TTkksICJTTkkgc3VwcG9ydCBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisKIAogY2xhc3MgQmFzaWNTb2NrZXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb25zdGFudHMoc2VsZik6Ci0gICAgICAgICNzc2wuUFJPVE9DT0xfU1NMdjIKLSAgICAgICAgc3NsLlBST1RPQ09MX1NTTHYyMwotICAgICAgICBzc2wuUFJPVE9DT0xfU1NMdjMKLSAgICAgICAgc3NsLlBST1RPQ09MX1RMU3YxCiAgICAgICAgIHNzbC5DRVJUX05PTkUKICAgICAgICAgc3NsLkNFUlRfT1BUSU9OQUwKICAgICAgICAgc3NsLkNFUlRfUkVRVUlSRUQKQEAgLTE0Miw4ICsxNTUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoKCdvcmdhbml6YXRpb25OYW1lJywgJ1B5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uJyksKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgnY29tbW9uTmFtZScsICdsb2NhbGhvc3QnKSwpKQogICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ25vdEFmdGVyJ10sICdPY3QgIDUgMjM6MDE6NTYgMjAyMCBHTVQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ25vdEJlZm9yZSddLCAnT2N0ICA4IDIzOjAxOjU2IDIwMTAgR01UJykKKyAgICAgICAgIyBOb3RlIHRoZSBuZXh0IHRocmVlIGFzc2VydHMgd2lsbCBmYWlsIGlmIHRoZSBrZXlzIGFyZSByZWdlbmVyYXRlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ25vdEFmdGVyJ10sIGFzbjF0aW1lKCdPY3QgIDUgMjM6MDE6NTYgMjAyMCBHTVQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwWydub3RCZWZvcmUnXSwgYXNuMXRpbWUoJ09jdCAgOCAyMzowMTo1NiAyMDEwIEdNVCcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ3NlcmlhbE51bWJlciddLCAnRDdDNzM4MTkxOUFGQzI0RScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocFsnc3ViamVjdCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdjb3VudHJ5TmFtZScsICdYWScpLCksCkBAIC0yMTQsMTUgKzIyOCwxNSBAQAogCiAgICAgZGVmIHRlc3Rfd3JhcHBlZF91bmNvbm5lY3RlZChzZWxmKToKICAgICAgICAgIyBNZXRob2RzIG9uIGFuIHVuY29ubmVjdGVkIFNTTFNvY2tldCBwcm9wYWdhdGUgdGhlIG9yaWdpbmFsCi0gICAgICAgICMgc29ja2V0LmVycm9yIHJhaXNlIGJ5IHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCisgICAgICAgICMgT1NFcnJvciByYWlzZSBieSB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3YsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3ZfaW50bywgYnl0ZWFycmF5KGIneCcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5yZWN2ZnJvbSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3MucmVjdmZyb21faW50bywgYnl0ZWFycmF5KGIneCcpLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5zZW5kLCBiJ3gnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5zZW5kdG8sIGIneCcsICgnMC4wLjAuMCcsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdiwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNzLnJlY3ZfaW50bywgYnl0ZWFycmF5KGIneCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdmZyb20sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2ZnJvbV9pbnRvLCBieXRlYXJyYXkoYid4JyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5zZW5kLCBiJ3gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3Muc2VuZHRvLCBiJ3gnLCAoJzAuMC4wLjAnLCAwKSkKIAogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzg1MjQ6IHdoZW4gY3JlYXRpbmcgYW4gU1NMIHNvY2tldCwgdGhlIHRpbWVvdXQgb2YgdGhlCkBAIC0yNDcsMTUgKzI2MSwxNSBAQAogICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssIGNlcnRmaWxlPVdST05HQ0VSVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssIGNlcnRmaWxlPUNFUlRGSUxFLCBrZXlmaWxlPVdST05HQ0VSVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssIGNlcnRmaWxlPVdST05HQ0VSVCwga2V5ZmlsZT1XUk9OR0NFUlQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCkBAIC0zOTQsMTUgKzQwOCw0OCBAQAogICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyLCBzdHIoY20ud2FybmluZy5hcmdzWzBdKSkKIAorICAgIGRlZiB0ZXN0X2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhzZWxmKToKKyAgICAgICAgcGF0aHMgPSBzc2wuZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGF0aHMpLCA2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocGF0aHMsIHNzbC5EZWZhdWx0VmVyaWZ5UGF0aHMpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbIlNTTF9DRVJUX0RJUiJdID0gQ0FQQVRICisgICAgICAgICAgICBlbnZbIlNTTF9DRVJUX0ZJTEUiXSA9IENFUlRGSUxFCisgICAgICAgICAgICBwYXRocyA9IHNzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRocy5jYWZpbGUsIENFUlRGSUxFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRocy5jYXBhdGgsIENBUEFUSCkKKworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIHNwZWNpZmljIikKKyAgICBkZWYgdGVzdF9lbnVtX2NlcnRfc3RvcmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLlg1MDlfQVNOX0VOQ09ESU5HLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNzbC5QS0NTXzdfQVNOX0VOQ09ESU5HLCAweDAwMDEwMDAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLmVudW1fY2VydF9zdG9yZSgiQ0EiKSwKKyAgICAgICAgICAgIHNzbC5lbnVtX2NlcnRfc3RvcmUoIkNBIiwgImNlcnRpZmljYXRlIikpCisgICAgICAgIHNzbC5lbnVtX2NlcnRfc3RvcmUoIkNBIiwgImNybCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLmVudW1fY2VydF9zdG9yZSgiUk9PVCIpLAorICAgICAgICAgICAgc3NsLmVudW1fY2VydF9zdG9yZSgiUk9PVCIsICJjZXJ0aWZpY2F0ZSIpKQorICAgICAgICBzc2wuZW51bV9jZXJ0X3N0b3JlKCJST09UIiwgImNybCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuZW51bV9jZXJ0X3N0b3JlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIHNzbC5lbnVtX2NlcnRfc3RvcmUsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2wuZW51bV9jZXJ0X3N0b3JlLCAiQ0EiLCAid3JvbmciKQorCisgICAgICAgIGNhID0gc3NsLmVudW1fY2VydF9zdG9yZSgiQ0EiKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2EsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYVswXSwgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhWzBdKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNhWzBdWzBdLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNhWzBdWzFdLCBpbnQpCisKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIpCi0gICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MykKLSAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBmb3IgcHJvdG9jb2wgaW4gUFJPVE9DT0xTOgorICAgICAgICAgICAgc3NsLlNTTENvbnRleHQocHJvdG9jb2wpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlNTTENvbnRleHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNzbC5TU0xDb250ZXh0LCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc3NsLlNTTENvbnRleHQsIDQyKQpAQCAtNDYyLDcgKzUwOSw3IEBACiAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCiAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUsIGtleWZpbGU9Q0VSVEZJTEUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LmxvYWRfY2VydF9jaGFpbiwga2V5ZmlsZT1DRVJURklMRSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oV1JPTkdDRVJUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PRU5UKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiUEVNIGxpYiIpOgpAQCAtNTQ3LDcgKzU5NCw3IEBACiAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPUJZVEVTX0NFUlRGSUxFLCBjYXBhdGg9Tm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE5vbmUsIE5vbmUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFdST05HQ0VSVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIlBFTSBsaWIiKToKQEAgLTYwNSw2ICs2NTIsNzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCAiZm9vIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCBiImZvbyIpCiAKKyAgICBAbmVlZHNfc25pCisgICAgZGVmIHRlc3Rfc25pX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisKKyAgICAgICAgIyBzZXRfc2VydmVybmFtZV9jYWxsYmFjayBleHBlY3RzIGEgY2FsbGFibGUsIG9yIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHguc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5zZXRfc2VydmVybmFtZV9jYWxsYmFjaywgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrLCBjdHgpCisKKyAgICAgICAgZGVmIGR1bW15Y2FsbGJhY2soc29jaywgc2VydmVybmFtZSwgY3R4KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY3R4LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKE5vbmUpCisgICAgICAgIGN0eC5zZXRfc2VydmVybmFtZV9jYWxsYmFjayhkdW1teWNhbGxiYWNrKQorCisgICAgQG5lZWRzX3NuaQorICAgIGRlZiB0ZXN0X3NuaV9jYWxsYmFja19yZWZjeWNsZShzZWxmKToKKyAgICAgICAgIyBSZWZlcmVuY2UgY3ljbGVzIHRocm91Z2ggdGhlIHNlcnZlcm5hbWUgY2FsbGJhY2sgYXJlIGRldGVjdGVkCisgICAgICAgICMgYW5kIGNsZWFyZWQuCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgZGVmIGR1bW15Y2FsbGJhY2soc29jaywgc2VydmVybmFtZSwgY3R4LCBjeWNsZT1jdHgpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjdHguc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soZHVtbXljYWxsYmFjaykKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihjdHgpCisgICAgICAgIGRlbCBjdHgsIGR1bW15Y2FsbGJhY2sKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2NlcnRfc3RvcmVfc3RhdHMoc2VsZik6CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguY2VydF9zdG9yZV9zdGF0cygpLAorICAgICAgICAgICAgeyd4NTA5X2NhJzogMCwgJ2NybCc6IDAsICd4NTA5JzogMH0pCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmNlcnRfc3RvcmVfc3RhdHMoKSwKKyAgICAgICAgICAgIHsneDUwOV9jYSc6IDAsICdjcmwnOiAwLCAneDUwOSc6IDB9KQorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksCisgICAgICAgICAgICB7J3g1MDlfY2EnOiAwLCAnY3JsJzogMCwgJ3g1MDknOiAxfSkKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTVk5fUFlUSE9OX09SR19ST09UX0NFUlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmNlcnRfc3RvcmVfc3RhdHMoKSwKKyAgICAgICAgICAgIHsneDUwOV9jYSc6IDEsICdjcmwnOiAwLCAneDUwOSc6IDJ9KQorCisgICAgZGVmIHRlc3RfZ2V0X2NhX2NlcnRzKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKKyAgICAgICAgIyBDRVJURklMRSBpcyBub3QgZmxhZ2dlZCBhcyBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IENBOlRSVUUKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguZ2V0X2NhX2NlcnRzKCksIFtdKQorICAgICAgICAjIGJ1dCBTVk5fUFlUSE9OX09SR19ST09UX0NFUlQgaXMgYSBDQSBjZXJ0CisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoKSwKKyAgICAgICAgICAgIFt7J2lzc3Vlcic6ICgoKCdvcmdhbml6YXRpb25OYW1lJywgJ1Jvb3QgQ0EnKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ29yZ2FuaXphdGlvbmFsVW5pdE5hbWUnLCAnaHR0cDovL3d3dy5jYWNlcnQub3JnJyksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdjb21tb25OYW1lJywgJ0NBIENlcnQgU2lnbmluZyBBdXRob3JpdHknKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ2VtYWlsQWRkcmVzcycsICdzdXBwb3J0QGNhY2VydC5vcmcnKSwpKSwKKyAgICAgICAgICAgICAgJ25vdEFmdGVyJzogYXNuMXRpbWUoJ01hciAyOSAxMjoyOTo0OSAyMDMzIEdNVCcpLAorICAgICAgICAgICAgICAnbm90QmVmb3JlJzogYXNuMXRpbWUoJ01hciAzMCAxMjoyOTo0OSAyMDAzIEdNVCcpLAorICAgICAgICAgICAgICAnc2VyaWFsTnVtYmVyJzogJzAwJywKKyAgICAgICAgICAgICAgJ3N1YmplY3QnOiAoKCgnb3JnYW5pemF0aW9uTmFtZScsICdSb290IENBJyksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCgnb3JnYW5pemF0aW9uYWxVbml0TmFtZScsICdodHRwOi8vd3d3LmNhY2VydC5vcmcnKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKCdjb21tb25OYW1lJywgJ0NBIENlcnQgU2lnbmluZyBBdXRob3JpdHknKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKCdlbWFpbEFkZHJlc3MnLCAnc3VwcG9ydEBjYWNlcnQub3JnJyksKSksCisgICAgICAgICAgICAgICd2ZXJzaW9uJzogM31dKQorCisgICAgICAgIHdpdGggb3BlbihTVk5fUFlUSE9OX09SR19ST09UX0NFUlQpIGFzIGY6CisgICAgICAgICAgICBwZW0gPSBmLnJlYWQoKQorICAgICAgICBkZXIgPSBzc2wuUEVNX2NlcnRfdG9fREVSX2NlcnQocGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoVHJ1ZSksIFtkZXJdKQorCiAKIGNsYXNzIFNTTEVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC05MjAsNiArMTAzNiwyMiBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2dldF9jYV9jZXJ0c19jYXBhdGgoc2VsZik6CisgICAgICAgICMgY2FwYXRoIGNlcnRzIGFyZSBsb2FkZWQgb24gcmVxdWVzdAorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzdm4ucHl0aG9uLm9yZyIpOgorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoKSwgW10pCisgICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICAgICAgcy5jb25uZWN0KCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQorCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0xMDQ3LDcgKzExNzksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiByZWFkICVyICglcyksIHNlbmRpbmcgYmFjayAlciAoJXMpLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobXNnLCBjdHlwZSwgbXNnLmxvd2VyKCksIGN0eXBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKG1zZy5sb3dlcigpKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyLmNoYXR0eToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZXJyb3IoIlRlc3Qgc2VydmVyIGZhaWx1cmU6XG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCkBAIC0xMTU3LDcgKzEyODksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX2Nsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBlcnJuby5FQ09OTkFCT1JURUQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX2Nsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTEyNjEsMTkgKzEzOTMsMTkgQEAKICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuU1NMRXJyb3IgaXMgJXNcbiIgJSB4LmFyZ3NbMV0pCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIHg6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5zb2NrZXQuZXJyb3IgaXMgJXNcbiIgJSB4LmFyZ3NbMV0pCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyB4OgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk9TRXJyb3IgaXMgJXNcbiIgJSB4LmFyZ3NbMV0pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIGlmIHguZXJybm8gIT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXElPRXJyb3IgaXMgJXNcbiIgJSBzdHIoeCkpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxPU0Vycm9yIGlzICVzXG4iICUgc3RyKHgpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVXNlIG9mIGludmFsaWQgY2VydCBzaG91bGQgaGF2ZSBmYWlsZWQhIikKIAogICAgIGRlZiBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBpbmRhdGE9YiJGT09cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSwgc25pX25hbWU9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBMYXVuY2ggYSBzZXJ2ZXIsIGNvbm5lY3QgYSBjbGllbnQgdG8gaXQgYW5kIHRyeSB2YXJpb3VzIHJlYWRzCiAgICAgICAgIGFuZCB3cml0ZXMuCkBAIC0xMjgzLDcgKzE0MTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PWNoYXR0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICB3aXRoIGNsaWVudF9jb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lKSBhcyBzOgogICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gW2luZGF0YSwgYnl0ZWFycmF5KGluZGF0YSksIG1lbW9yeXZpZXcoaW5kYXRhKV06CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25jaGF0dHk6CkBAIC0xMzA3LDYgKzE0NDAsNyBAQAogICAgICAgICAgICAgICAgIHN0YXRzLnVwZGF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICdjb21wcmVzc2lvbic6IHMuY29tcHJlc3Npb24oKSwKICAgICAgICAgICAgICAgICAgICAgJ2NpcGhlcic6IHMuY2lwaGVyKCksCisgICAgICAgICAgICAgICAgICAgICdwZWVyY2VydCc6IHMuZ2V0cGVlcmNlcnQoKSwKICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ucG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKQEAgLTEzMzIsMTIgKzE0NjYsMTUgQEAKICAgICAgICAgY2xpZW50X2NvbnRleHQub3B0aW9ucyA9IHNzbC5PUF9BTEwgfCBjbGllbnRfb3B0aW9ucwogICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNlcnZlcl9wcm90b2NvbCkKICAgICAgICAgc2VydmVyX2NvbnRleHQub3B0aW9ucyA9IHNzbC5PUF9BTEwgfCBzZXJ2ZXJfb3B0aW9ucworCisgICAgICAgICMgTk9URTogd2UgbXVzdCBlbmFibGUgIkFMTCIgY2lwaGVycyBvbiB0aGUgY2xpZW50LCBvdGhlcndpc2UgYW4KKyAgICAgICAgIyBTU0x2MjMgY2xpZW50IHdpbGwgc2VuZCBhbiBTU0x2MyBoZWxsbyAocmF0aGVyIHRoYW4gU1NMdjIpCisgICAgICAgICMgc3RhcnRpbmcgZnJvbSBPcGVuU1NMIDEuMC4wIChzZWUgaXNzdWUgIzgzMjIpLgorICAgICAgICBpZiBjbGllbnRfY29udGV4dC5wcm90b2NvbCA9PSBzc2wuUFJPVE9DT0xfU1NMdjIzOgorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuc2V0X2NpcGhlcnMoIkFMTCIpCisKICAgICAgICAgZm9yIGN0eCBpbiAoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0KToKICAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IGNlcnRzcmVxcwotICAgICAgICAgICAgIyBOT1RFOiB3ZSBtdXN0IGVuYWJsZSAiQUxMIiBjaXBoZXJzLCBvdGhlcndpc2UgYW4gU1NMdjIzIGNsaWVudAotICAgICAgICAgICAgIyB3aWxsIHNlbmQgYW4gU1NMdjMgaGVsbG8gKHJhdGhlciB0aGFuIFNTTHYyKSBzdGFydGluZyBmcm9tCi0gICAgICAgICAgICAjIE9wZW5TU0wgMS4wLjAgKHNlZSBpc3N1ZSAjODMyMikuCi0gICAgICAgICAgICBjdHguc2V0X2NpcGhlcnMoIkFMTCIpCiAgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQogICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKICAgICAgICAgdHJ5OgpAQCAtMTM0OCw3ICsxNDg1LDcgQEAKICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKICAgICAgICAgICAgIGlmIGV4cGVjdF9zdWNjZXNzOgogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIGlmIGV4cGVjdF9zdWNjZXNzIG9yIGUuZXJybm8gIT0gZXJybm8uRUNPTk5SRVNFVDoKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBlbHNlOgpAQCAtMTM2NywxMCArMTUwNCwxMSBAQAogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKICAgICAgICAgICAgIGZvciBwcm90b2NvbCBpbiBQUk9UT0NPTFM6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQotICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQotICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvY29sPXNzbC5fUFJPVE9DT0xfTkFNRVNbcHJvdG9jb2xdKToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQogCiAgICAgICAgIGRlZiB0ZXN0X2dldHBlZXJjZXJ0KHNlbGYpOgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTQyMiw3ICsxNTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWRrZXkucGVtIikpCiAKICAgICAgICAgZGVmIHRlc3RfcnVkZV9zaHV0ZG93bihzZWxmKToKLSAgICAgICAgICAgICIiIkEgYnJ1dGFsIHNodXRkb3duIG9mIGFuIFNTTCBzZXJ2ZXIgc2hvdWxkIHJhaXNlIGFuIElPRXJyb3IKKyAgICAgICAgICAgICIiIkEgYnJ1dGFsIHNodXRkb3duIG9mIGFuIFNTTCBzZXJ2ZXIgc2hvdWxkIHJhaXNlIGFuIE9TRXJyb3IKICAgICAgICAgICAgIGluIHRoZSBjbGllbnQgd2hlbiBhdHRlbXB0aW5nIGhhbmRzaGFrZS4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgbGlzdGVuZXJfcmVhZHkgPSB0aHJlYWRpbmcuRXZlbnQoKQpAQCAtMTQ1MCw3ICsxNTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJfZ29uZS53YWl0KCkKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NvY2sgPSBzc2wud3JhcF9zb2NrZXQoYykKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdjb25uZWN0aW5nIHRvIGNsb3NlZCBTU0wgc29ja2V0IHNob3VsZCBoYXZlIGZhaWxlZCcpCkBAIC0xNDkzLDcgKzE2MzEsNyBAQAogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MiwgVHJ1ZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKHNzbC5TU0xFcnJvciwgc29ja2V0LmVycm9yKSBhcyB4OgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHg6CiAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBmYWlscyBvbiBzb21lIG9sZGVyIHZlcnNpb25zIG9mIE9wZW5TU0wgKDAuOS43bCwgZm9yIGluc3RhbmNlKQogICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKApAQCAtMTU1Myw2ICsxNjkxLDQ5IEBACiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fVExTdjEpCiAKKyAgICAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICJQUk9UT0NPTF9UTFN2MV8xIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUTFMgdmVyc2lvbiAxLjEgbm90IHN1cHBvcnRlZC4iKQorICAgICAgICBkZWYgdGVzdF9wcm90b2NvbF90bHN2MV8xKHNlbGYpOgorICAgICAgICAgICAgIiIiQ29ubmVjdGluZyB0byBhIFRMU3YxLjEgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucy4KKyAgICAgICAgICAgICAgIFRlc3RpbmcgYWdhaW5zdCBvbGRlciBUTFMgdmVyc2lvbnMuIiIiCisgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgVHJ1ZSkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKToKKyAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9TU0x2MiwgRmFsc2UpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9TU0x2MywgRmFsc2UpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXNzbC5PUF9OT19UTFN2MV8xKQorCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzEsIFRydWUpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgRmFsc2UpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgRmFsc2UpCisKKworICAgICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbAorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgIlBST1RPQ09MX1RMU3YxXzIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRMUyB2ZXJzaW9uIDEuMiBub3Qgc3VwcG9ydGVkLiIpCisgICAgICAgIGRlZiB0ZXN0X3Byb3RvY29sX3Rsc3YxXzIoc2VsZik6CisgICAgICAgICAgICAiIiJDb25uZWN0aW5nIHRvIGEgVExTdjEuMiBzZXJ2ZXIgd2l0aCB2YXJpb3VzIGNsaWVudCBvcHRpb25zLgorICAgICAgICAgICAgICAgVGVzdGluZyBhZ2FpbnN0IG9sZGVyIFRMUyB2ZXJzaW9ucy4iIiIKKyAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXNzbC5PUF9OT19TU0x2M3xzc2wuT1BfTk9fU1NMdjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9c3NsLk9QX05PX1NTTHYzfHNzbC5PUF9OT19TU0x2MiwpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6CisgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfU1NMdjIsIEZhbHNlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfU1NMdjMsIEZhbHNlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fVExTdjFfMikKKworICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBUcnVlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfVExTdjEsIEZhbHNlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxXzIsIEZhbHNlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgRmFsc2UpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBGYWxzZSkKKwogICAgICAgICBkZWYgdGVzdF9zdGFydHRscyhzZWxmKToKICAgICAgICAgICAgICIiIlN3aXRjaGluZyBmcm9tIGNsZWFyIHRleHQgdG8gZW5jcnlwdGVkIGFuZCBiYWNrIGFnYWluLiIiIgogICAgICAgICAgICAgbXNncyA9IChiIm1zZyAxIiwgYiJNU0cgMiIsIGIiU1RBUlRUTFMiLCBiIk1TRyAzIiwgYiJtc2cgNCIsIGIiRU5EVExTIiwgYiJtc2cgNSIsIGIibXNnIDYiKQpAQCAtMTYxMyw3ICsxNzk0LDcgQEAKIAogICAgICAgICBkZWYgdGVzdF9zb2NrZXRzZXJ2ZXIoc2VsZik6CiAgICAgICAgICAgICAiIiJVc2luZyBhIFNvY2tldFNlcnZlciB0byBjcmVhdGUgYW5kIG1hbmFnZSBTU0wgY29ubmVjdGlvbnMuIiIiCi0gICAgICAgICAgICBzZXJ2ZXIgPSBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBDRVJURklMRSkKKyAgICAgICAgICAgIHNlcnZlciA9IG1ha2VfaHR0cHNfc2VydmVyKHNlbGYsIGNlcnRmaWxlPUNFUlRGSUxFKQogICAgICAgICAgICAgIyB0cnkgdG8gY29ubmVjdAogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJ1xuJykKQEAgLTE4NjksNiArMjA1MCwyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlbW90ZSwgc3NsLlNTTFNvY2tldCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlciwgY2xpZW50X2FkZHIpCiAKKyAgICAgICAgZGVmIHRlc3RfZ2V0cGVlcmNlcnRfZW5vdGNvbm4oc2VsZik6CisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHNvY2s6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgc29jay5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RDT05OKQorCisgICAgICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV9lbm90Y29ubihzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgc29jazoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBzb2NrLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RDT05OKQorCiAgICAgICAgIGRlZiB0ZXN0X2RlZmF1bHRfY2lwaGVycyhzZWxmKToKICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICAgICAgdHJ5OgpAQCAtMTg4MCw3ICsyMDc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UpIGFzIHNlcnZlcjoKICAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChPU0Vycm9yLCBzc2wuU1NMRXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibm8gc2hhcmVkIGNpcGhlciIsIHN0cihzZXJ2ZXIuY29ubl9lcnJvcnNbMF0pKQogCkBAIC0yMDEzLDYgKzIyMDgsMTI0IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSkgZWxzZSAnbm90aGluZycKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoc2VydmVyX3Jlc3VsdCwgInNlcnZlciIpKQogCisgICAgICAgIGRlZiBzbmlfY29udGV4dHMoc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgICAgICBvdGhlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgb3RoZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFMikKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICByZXR1cm4gc2VydmVyX2NvbnRleHQsIG90aGVyX2NvbnRleHQsIGNsaWVudF9jb250ZXh0CisKKyAgICAgICAgZGVmIGNoZWNrX2NvbW1vbl9uYW1lKHNlbGYsIHN0YXRzLCBuYW1lKToKKyAgICAgICAgICAgIGNlcnQgPSBzdGF0c1sncGVlcmNlcnQnXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigoKCdjb21tb25OYW1lJywgbmFtZSksKSwgY2VydFsnc3ViamVjdCddKQorCisgICAgICAgIEBuZWVkc19zbmkKKyAgICAgICAgZGVmIHRlc3Rfc25pX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQsIG90aGVyX2NvbnRleHQsIGNsaWVudF9jb250ZXh0ID0gc2VsZi5zbmlfY29udGV4dHMoKQorCisgICAgICAgICAgICBkZWYgc2VydmVybmFtZV9jYihzc2xfc29jaywgc2VydmVyX25hbWUsIGluaXRpYWxfY29udGV4dCk6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKChzZXJ2ZXJfbmFtZSwgaW5pdGlhbF9jb250ZXh0KSkKKyAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc3NsX3NvY2suY29udGV4dCA9IG90aGVyX2NvbnRleHQKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKHNlcnZlcm5hbWVfY2IpCisKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J3N1cGVybWVzc2FnZScpCisgICAgICAgICAgICAjIFRoZSBob3N0bmFtZSB3YXMgZmV0Y2hlZCBwcm9wZXJseSwgYW5kIHRoZSBjZXJ0aWZpY2F0ZSB3YXMKKyAgICAgICAgICAgICMgY2hhbmdlZCBmb3IgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxzLCBbKCJzdXBlcm1lc3NhZ2UiLCBzZXJ2ZXJfY29udGV4dCldKQorICAgICAgICAgICAgIyBDRVJURklMRTQgd2FzIHNlbGVjdGVkCisgICAgICAgICAgICBzZWxmLmNoZWNrX2NvbW1vbl9uYW1lKHN0YXRzLCAnZmFrZWhvc3RuYW1lJykKKworICAgICAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICAgICAgIyBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggc2VydmVyX25hbWU9Tm9uZQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmlfbmFtZT1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxscywgWyhOb25lLCBzZXJ2ZXJfY29udGV4dCldKQorICAgICAgICAgICAgc2VsZi5jaGVja19jb21tb25fbmFtZShzdGF0cywgJ2xvY2FsaG9zdCcpCisKKyAgICAgICAgICAgICMgQ2hlY2sgZGlzYWJsaW5nIHRoZSBjYWxsYmFjaworICAgICAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soTm9uZSkKKworICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmlfbmFtZT0nbm90ZnVubnknKQorICAgICAgICAgICAgIyBDZXJ0aWZpY2F0ZSBkaWRuJ3QgY2hhbmdlCisgICAgICAgICAgICBzZWxmLmNoZWNrX2NvbW1vbl9uYW1lKHN0YXRzLCAnbG9jYWxob3N0JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbHMsIFtdKQorCisgICAgICAgIEBuZWVkc19zbmkKKyAgICAgICAgZGVmIHRlc3Rfc25pX2NhbGxiYWNrX2FsZXJ0KHNlbGYpOgorICAgICAgICAgICAgIyBSZXR1cm5pbmcgYSBUTFMgYWxlcnQgaXMgcmVmbGVjdGVkIHRvIHRoZSBjb25uZWN0aW5nIGNsaWVudAorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQsIG90aGVyX2NvbnRleHQsIGNsaWVudF9jb250ZXh0ID0gc2VsZi5zbmlfY29udGV4dHMoKQorCisgICAgICAgICAgICBkZWYgY2JfcmV0dXJuaW5nX2FsZXJ0KHNzbF9zb2NrLCBzZXJ2ZXJfbmFtZSwgaW5pdGlhbF9jb250ZXh0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3NsLkFMRVJUX0RFU0NSSVBUSU9OX0FDQ0VTU19ERU5JRUQKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKGNiX3JldHVybmluZ19hbGVydCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J3N1cGVybWVzc2FnZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb24sICdUTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEJykKKworICAgICAgICBAbmVlZHNfc25pCisgICAgICAgIGRlZiB0ZXN0X3NuaV9jYWxsYmFja19yYWlzaW5nKHNlbGYpOgorICAgICAgICAgICAgIyBSYWlzaW5nIGZhaWxzIHRoZSBjb25uZWN0aW9uIHdpdGggYSBUTFMgaGFuZHNoYWtlIGZhaWx1cmUgYWxlcnQuCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCwgb3RoZXJfY29udGV4dCwgY2xpZW50X2NvbnRleHQgPSBzZWxmLnNuaV9jb250ZXh0cygpCisKKyAgICAgICAgICAgIGRlZiBjYl9yYWlzaW5nKHNzbF9zb2NrLCBzZXJ2ZXJfbmFtZSwgaW5pdGlhbF9jb250ZXh0KToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKGNiX3JhaXNpbmcpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBjbSwgXAorICAgICAgICAgICAgICAgICBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaV9uYW1lPSdzdXBlcm1lc3NhZ2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uLCAnU1NMVjNfQUxFUlRfSEFORFNIQUtFX0ZBSUxVUkUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiWmVyb0RpdmlzaW9uRXJyb3IiLCBzdGRlcnIuZ2V0dmFsdWUoKSkKKworICAgICAgICBAbmVlZHNfc25pCisgICAgICAgIGRlZiB0ZXN0X3NuaV9jYWxsYmFja193cm9uZ19yZXR1cm5fdHlwZShzZWxmKToKKyAgICAgICAgICAgICMgUmV0dXJuaW5nIHRoZSB3cm9uZyByZXR1cm4gdHlwZSB0ZXJtaW5hdGVzIHRoZSBUTFMgY29ubmVjdGlvbgorICAgICAgICAgICAgIyB3aXRoIGFuIGludGVybmFsIGVycm9yIGFsZXJ0LgorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQsIG90aGVyX2NvbnRleHQsIGNsaWVudF9jb250ZXh0ID0gc2VsZi5zbmlfY29udGV4dHMoKQorCisgICAgICAgICAgICBkZWYgY2Jfd3JvbmdfcmV0dXJuX3R5cGUoc3NsX3NvY2ssIHNlcnZlcl9uYW1lLCBpbml0aWFsX2NvbnRleHQpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZm9vIgorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soY2Jfd3JvbmdfcmV0dXJuX3R5cGUpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBjbSwgXAorICAgICAgICAgICAgICAgICBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaV9uYW1lPSdzdXBlcm1lc3NhZ2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uLCAnVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1InKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiVHlwZUVycm9yIiwgc3RkZXJyLmdldHZhbHVlKCkpCisKKyAgICAgICAgZGVmIHRlc3RfcmVhZF93cml0ZV9hZnRlcl9jbG9zZV9yYWlzZXNfdmFsdWVycm9yKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoY29udGV4dD1jb250ZXh0LCBjaGF0dHk9RmFsc2UpCisKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHMgPSBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMucmVhZCwgMTAyNCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLndyaXRlLCBiJ2hlbGxvJykKKwogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgogICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTIwMzIsMTAgKzIzNDUsMTYgQEAKICAgICAgICAgICAgIChzc2wuT1BFTlNTTF9WRVJTSU9OLCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8pKQogICAgICAgICBwcmludCgiICAgICAgICAgIHVuZGVyICVzIiAlIHBsYXQpCiAgICAgICAgIHByaW50KCIgICAgICAgICAgSEFTX1NOSSA9ICVyIiAlIHNzbC5IQVNfU05JKQorICAgICAgICBwcmludCgiICAgICAgICAgIE9QX0FMTCA9IDB4JTh4IiAlIHNzbC5PUF9BTEwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCIgICAgICAgICAgT1BfTk9fVExTdjFfMSA9IDB4JTh4IiAlIHNzbC5PUF9OT19UTFN2MV8xKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gWwogICAgICAgICBDRVJURklMRSwgU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJULCBCWVRFU19DRVJURklMRSwKICAgICAgICAgT05MWUNFUlQsIE9OTFlLRVksIEJZVEVTX09OTFlDRVJULCBCWVRFU19PTkxZS0VZLAorICAgICAgICBTSUdORURfQ0VSVEZJTEUsIFNJR05FRF9DRVJURklMRTIsIFNJR05JTkdfQ0EsCiAgICAgICAgIEJBRENFUlQsIEJBREtFWSwgRU1QVFlDRVJUXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CmluZGV4IGViM2YwN2EuLmFmNmNlZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTEsOSArMSwxMyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgaW1wb3J0X2ZyZXNoX21vZHVsZQotaW1wb3J0IHN0YXQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGltcG9ydF9mcmVzaF9tb2R1bGUKIAotY2xhc3MgVGVzdEZpbGVtb2RlKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2Nfc3RhdCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3N0YXQnLCBmcmVzaD1bJ19zdGF0J10pCitweV9zdGF0ID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnc3RhdCcsIGJsb2NrZWQ9Wydfc3RhdCddKQorCitjbGFzcyBUZXN0RmlsZW1vZGU6CisgICAgc3RhdG1vZCA9IE5vbmUKKwogICAgIGZpbGVfZmxhZ3MgPSB7J1NGX0FQUEVORCcsICdTRl9BUkNISVZFRCcsICdTRl9JTU1VVEFCTEUnLCAnU0ZfTk9VTkxJTksnLAogICAgICAgICAgICAgICAgICAgJ1NGX1NOQVBTSE9UJywgJ1VGX0FQUEVORCcsICdVRl9DT01QUkVTU0VEJywgJ1VGX0hJRERFTicsCiAgICAgICAgICAgICAgICAgICAnVUZfSU1NVVRBQkxFJywgJ1VGX05PRFVNUCcsICdVRl9OT1VOTElOSycsICdVRl9PUEFRVUUnfQpAQCAtNjMsMTcgKzY3LDE3IEBACiAgICAgICAgICAgICBzdF9tb2RlID0gb3MubHN0YXQoZm5hbWUpLnN0X21vZGUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN0X21vZGUgPSBvcy5zdGF0KGZuYW1lKS5zdF9tb2RlCi0gICAgICAgIG1vZGVzdHIgPSBzdGF0LmZpbGVtb2RlKHN0X21vZGUpCisgICAgICAgIG1vZGVzdHIgPSBzZWxmLnN0YXRtb2QuZmlsZW1vZGUoc3RfbW9kZSkKICAgICAgICAgcmV0dXJuIHN0X21vZGUsIG1vZGVzdHIKIAogICAgIGRlZiBhc3NlcnRTX0lTKHNlbGYsIG5hbWUsIG1vZGUpOgogICAgICAgICAjIHRlc3QgZm9ybWF0LCBsc3RyaXAgaXMgZm9yIFNfSUZJRk8KLSAgICAgICAgZm10ID0gZ2V0YXR0cihzdGF0LCAiU19JRiIgKyBuYW1lLmxzdHJpcCgiRiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JRk1UKG1vZGUpLCBmbXQpCisgICAgICAgIGZtdCA9IGdldGF0dHIoc2VsZi5zdGF0bW9kLCAiU19JRiIgKyBuYW1lLmxzdHJpcCgiRiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RhdG1vZC5TX0lGTVQobW9kZSksIGZtdCkKICAgICAgICAgIyB0ZXN0IHRoYXQganVzdCBvbmUgZnVuY3Rpb24gcmV0dXJucyB0cnVlCiAgICAgICAgIHRlc3RuYW1lID0gIlNfSVMiICsgbmFtZQogICAgICAgICBmb3IgZnVuY25hbWUgaW4gc2VsZi5mb3JtYXRfZnVuY3M6Ci0gICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzdGF0LCBmdW5jbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYuc3RhdG1vZCwgZnVuY25hbWUsIE5vbmUpCiAgICAgICAgICAgICBpZiBmdW5jIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgZnVuY25hbWUgPT0gdGVzdG5hbWU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZnVuY25hbWUpCkBAIC05MSwzNSArOTUsMzUgQEAKICAgICAgICAgICAgIHN0X21vZGUsIG1vZGVzdHIgPSBzZWxmLmdldF9tb2RlKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZXN0ciwgJy1yd3gtLS0tLS0nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRTX0lTKCJSRUciLCBzdF9tb2RlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUoc3RfbW9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JUldYVSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGF0bW9kLlNfSU1PREUoc3RfbW9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdG1vZC5TX0lSV1hVKQogCiAgICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIDBvMDcwKQogICAgICAgICAgICAgc3RfbW9kZSwgbW9kZXN0ciA9IHNlbGYuZ2V0X21vZGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2Rlc3RyLCAnLS0tLXJ3eC0tLScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFNfSVMoIlJFRyIsIHN0X21vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JTU9ERShzdF9tb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lSV1hHKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0YXRtb2QuU19JTU9ERShzdF9tb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0bW9kLlNfSVJXWEcpCiAKICAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG8wMDcpCiAgICAgICAgICAgICBzdF9tb2RlLCBtb2Rlc3RyID0gc2VsZi5nZXRfbW9kZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVzdHIsICctLS0tLS0tcnd4JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0U19JUygiUkVHIiwgc3RfbW9kZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHN0X21vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVJXWE8pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RhdG1vZC5TX0lNT0RFKHN0X21vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRtb2QuU19JUldYTykKIAogICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzQ0NCkKICAgICAgICAgICAgIHN0X21vZGUsIG1vZGVzdHIgPSBzZWxmLmdldF9tb2RlKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0U19JUygiUkVHIiwgc3RfbW9kZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZXN0ciwgJy1yLS1yLS1yLS0nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUoc3RfbW9kZSksIDBvNDQ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0YXRtb2QuU19JTU9ERShzdF9tb2RlKSwgMG80NDQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIDBvNzAwKQogICAgICAgICAgICAgc3RfbW9kZSwgbW9kZXN0ciA9IHNlbGYuZ2V0X21vZGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2Rlc3RyWzozXSwgJy1ydycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFNfSVMoIlJFRyIsIHN0X21vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JRk1UKHN0X21vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSUZSRUcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RhdG1vZC5TX0lGTVQoc3RfbW9kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdG1vZC5TX0lGUkVHKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICBvcy5ta2RpcihURVNURk4pCkBAIC0xNjUsMjUgKzE2OSwzNCBAQAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuc3RhdF9zdHJ1Y3QuaXRlbXMoKToKLSAgICAgICAgICAgIG1vZHZhbHVlID0gZ2V0YXR0cihzdGF0LCBrZXkpCisgICAgICAgICAgICBtb2R2YWx1ZSA9IGdldGF0dHIoc2VsZi5zdGF0bW9kLCBrZXkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBtb2R2YWx1ZSwga2V5KQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLnBlcm1pc3Npb25fYml0cy5pdGVtcygpOgotICAgICAgICAgICAgbW9kdmFsdWUgPSBnZXRhdHRyKHN0YXQsIGtleSkKKyAgICAgICAgICAgIG1vZHZhbHVlID0gZ2V0YXR0cihzZWxmLnN0YXRtb2QsIGtleSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIG1vZHZhbHVlLCBrZXkpCiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5maWxlX2ZsYWdzOgotICAgICAgICAgICAgbW9kdmFsdWUgPSBnZXRhdHRyKHN0YXQsIGtleSkKKyAgICAgICAgICAgIG1vZHZhbHVlID0gZ2V0YXR0cihzZWxmLnN0YXRtb2QsIGtleSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R2YWx1ZSwgaW50KQogICAgICAgICBmb3Iga2V5IGluIHNlbGYuZm9ybWF0czoKLSAgICAgICAgICAgIG1vZHZhbHVlID0gZ2V0YXR0cihzdGF0LCBrZXkpCisgICAgICAgICAgICBtb2R2YWx1ZSA9IGdldGF0dHIoc2VsZi5zdGF0bW9kLCBrZXkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdmFsdWUsIGludCkKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLmZvcm1hdF9mdW5jczoKLSAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHN0YXQsIGtleSkKKyAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYuc3RhdG1vZCwga2V5KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxhYmxlKGZ1bmMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDApLCAwKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEZpbGVtb2RlKQorY2xhc3MgVGVzdEZpbGVtb2RlQ1N0YXQoVGVzdEZpbGVtb2RlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc3RhdG1vZCA9IGNfc3RhdAorCisgICAgZm9ybWF0cyA9IFRlc3RGaWxlbW9kZS5mb3JtYXRzIHwgeydTX0lGRE9PUicsICdTX0lGUE9SVCcsICdTX0lGV0hUJ30KKyAgICBmb3JtYXRfZnVuY3MgPSBUZXN0RmlsZW1vZGUuZm9ybWF0X2Z1bmNzIHwgeydTX0lTRE9PUicsICdTX0lTUE9SVCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU19JU1dIVCd9CisKKworY2xhc3MgVGVzdEZpbGVtb2RlUHlTdGF0KFRlc3RGaWxlbW9kZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHN0YXRtb2QgPSBweV9zdGF0CisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKaW5kZXggMTQwNTdlYi4uNjUxMGMzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CkBAIC0xNzYsOCArMTc2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlWzBdLCBlWzJdKSkKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgRXhwZWN0ZWQgJXMsIGJ1dCBnb3QgJXMiICUgKGVbMV0sIHJlc3VsdCkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTdHJmdGltZVRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKaW5kZXggMjIzNzRkMi4uZmE1NjlkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKQEAgLTEsNCArMSw2IEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBhYmMKIGltcG9ydCBhcnJheQoraW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKQEAgLTYsNyArOCw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogSVNCSUdFTkRJQU4gPSBzeXMuYnl0ZW9yZGVyID09ICJiaWciCi1JUzMyQklUID0gc3lzLm1heHNpemUgPT0gMHg3ZmZmZmZmZgogCiBpbnRlZ2VyX2NvZGVzID0gJ2InLCAnQicsICdoJywgJ0gnLCAnaScsICdJJywgJ2wnLCAnTCcsICdxJywgJ1EnLCAnbicsICdOJwogYnl0ZW9yZGVycyA9ICcnLCAnQCcsICc9JywgJzwnLCAnPicsICchJwpAQCAtNDg5LDcgKzQ5MCw3IEBACiAgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKICAgICAgICAgY2xhc3MgRXhwbG9kaW5nQm9vbChvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yCiAgICAgICAgIGZvciBwcmVmaXggaW4gdHVwbGUoIjw+IT0iKSsoJycsKToKICAgICAgICAgICAgIGZhbHNlID0gKCksIFtdLCBbXSwgJycsIDAKICAgICAgICAgICAgIHRydWUgPSBbMV0sICd0ZXN0JywgNSwgLTEsIDB4ZmZmZmZmZmYrMSwgMHhmZmZmZmZmZi8yCkBAIC01MjAsMTAgKzUyMSwxMCBAQAogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2socHJlZml4ICsgJz8nLCBFeHBsb2RpbmdCb29sKCkpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBJT0Vycm9yOiBzdHJ1Y3QucGFjayglciwgIgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgT1NFcnJvcjogc3RydWN0LnBhY2soJXIsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGxvZGluZ0Jvb2woKSkiICUgKHByZWZpeCArICc/JykpCiAKICAgICAgICAgZm9yIGMgaW4gW2InXHgwMScsIGInXHg3ZicsIGInXHhmZicsIGInXHgwZicsIGInXHhmMCddOgpAQCAtNTM2LDEwICs1MzcsNiBAQAogICAgICAgICBodWdlY291bnQyID0gJ3t9Ynt9SCcuZm9ybWF0KHN5cy5tYXhzaXplLy8yLCBzeXMubWF4c2l6ZS8vMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QuY2FsY3NpemUsIGh1Z2Vjb3VudDIpCiAKLSAgICBpZiBJUzMyQklUOgotICAgICAgICBkZWYgdGVzdF9jcmFzaGVyKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIHN0cnVjdC5wYWNrLCAiMzU3OTEzOTQxYiIsICJhIikKLQogICAgIGRlZiB0ZXN0X3RyYWlsaW5nX2NvdW50ZXIoc2VsZik6CiAgICAgICAgIHN0b3JlID0gYXJyYXkuYXJyYXkoJ2InLCBiJyAnKjEwMCkKIApAQCAtNTc2LDcgKzU3Myw3IEBACiAgICAgICAgICMgVGhlIHNpemUgb2YgJ1B5U3RydWN0T2JqZWN0JwogICAgICAgICB0b3RhbHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcybjNQJykKICAgICAgICAgIyBUaGUgc2l6ZSB0YWtlbiB1cCBieSB0aGUgJ2Zvcm1hdGNvZGUnIGR5bmFtaWMgYXJyYXkKLSAgICAgICAgdG90YWxzaXplICs9IHN0cnVjdC5jYWxjc2l6ZSgnUDJuMFAnKSAqIChudW1iZXJfb2ZfY29kZXMgKyAxKQorICAgICAgICB0b3RhbHNpemUgKz0gc3RydWN0LmNhbGNzaXplKCdQM24wUCcpICogKG51bWJlcl9vZl9jb2RlcyArIDEpCiAgICAgICAgIHN1cHBvcnQuY2hlY2tfc2l6ZW9mKHNlbGYsIHN0cnVjdC5TdHJ1Y3QoZm9ybWF0X3N0ciksIHRvdGFsc2l6ZSkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQpAQCAtNTg3LDE0ICs1ODQsODQgQEAKICAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJ0InICogMTIzNCwgMTIzNCkKICAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJ2ZkJywgMikKICAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJ3h4eHh4eHh4eHh4eHh4JywgMCkKLSAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJzEwMEgnLCAxMDApCisgICAgICAgIHNlbGYuY2hlY2tfc2l6ZW9mKCcxMDBIJywgMSkKICAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJzE4N3MnLCAxKQogICAgICAgICBzZWxmLmNoZWNrX3NpemVvZignMjBwJywgMSkKICAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJzBzJywgMSkKICAgICAgICAgc2VsZi5jaGVja19zaXplb2YoJzBjJywgMCkKIAorCitjbGFzcyBVbnBhY2tJdGVyYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3RzIGZvciBpdGVyYXRpdmUgdW5wYWNraW5nIChzdHJ1Y3QuU3RydWN0Lml0ZXJfdW5wYWNrKS4KKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdChzZWxmKToKKyAgICAgICAgZGVmIF9jaGVja19pdGVyYXRvcihpdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaXQsIGFiYy5JdGVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpdCwgYWJjLkl0ZXJhYmxlKQorICAgICAgICBzID0gc3RydWN0LlN0cnVjdCgnPmliY3AnKQorICAgICAgICBpdCA9IHMuaXRlcl91bnBhY2soYiIiKQorICAgICAgICBfY2hlY2tfaXRlcmF0b3IoaXQpCisgICAgICAgIGl0ID0gcy5pdGVyX3VucGFjayhiIjEyMzQ1NjciKQorICAgICAgICBfY2hlY2tfaXRlcmF0b3IoaXQpCisgICAgICAgICMgV3JvbmcgYnl0ZXMgbGVuZ3RoCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yKToKKyAgICAgICAgICAgIHMuaXRlcl91bnBhY2soYiIxMjM0NTYiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvcik6CisgICAgICAgICAgICBzLml0ZXJfdW5wYWNrKGIiMTIzNDU2NzgiKQorICAgICAgICAjIFplcm8tbGVuZ3RoIHN0cnVjdAorICAgICAgICBzID0gc3RydWN0LlN0cnVjdCgnPicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yKToKKyAgICAgICAgICAgIHMuaXRlcl91bnBhY2soYiIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvcik6CisgICAgICAgICAgICBzLml0ZXJfdW5wYWNrKGIiMTIiKQorCisgICAgZGVmIHRlc3RfaXRlcmF0ZShzZWxmKToKKyAgICAgICAgcyA9IHN0cnVjdC5TdHJ1Y3QoJz5JQicpCisgICAgICAgIGIgPSBieXRlcyhyYW5nZSgxLCAxNikpCisgICAgICAgIGl0ID0gcy5pdGVyX3VucGFjayhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAoMHgwMTAyMDMwNCwgNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICgweDA2MDcwODA5LCAxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICgweDBiMGMwZDBlLCAxNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKKworICAgIGRlZiB0ZXN0X2FyYml0cmFyeV9idWZmZXIoc2VsZik6CisgICAgICAgIHMgPSBzdHJ1Y3QuU3RydWN0KCc+SUInKQorICAgICAgICBiID0gYnl0ZXMocmFuZ2UoMSwgMTEpKQorICAgICAgICBpdCA9IHMuaXRlcl91bnBhY2sobWVtb3J5dmlldyhiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgKDB4MDEwMjAzMDQsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAoMHgwNjA3MDgwOSwgMTApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCisKKyAgICBkZWYgdGVzdF9sZW5ndGhfaGludChzZWxmKToKKyAgICAgICAgbGggPSBvcGVyYXRvci5sZW5ndGhfaGludAorICAgICAgICBzID0gc3RydWN0LlN0cnVjdCgnPklCJykKKyAgICAgICAgYiA9IGJ5dGVzKHJhbmdlKDEsIDE2KSkKKyAgICAgICAgaXQgPSBzLml0ZXJfdW5wYWNrKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGgoaXQpLCAzKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxoKGl0KSwgMikKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaChpdCksIDEpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGgoaXQpLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaChpdCksIDApCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnVuYyhzZWxmKToKKyAgICAgICAgIyBTYW5pdHkgY2hlY2sgZm9yIHRoZSBnbG9iYWwgc3RydWN0Lml0ZXJfdW5wYWNrKCkKKyAgICAgICAgaXQgPSBzdHJ1Y3QuaXRlcl91bnBhY2soJz5JQicsIGJ5dGVzKHJhbmdlKDEsIDExKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICgweDAxMDIwMzA0LCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgKDB4MDYwNzA4MDksIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTdHJ1Y3RUZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggMGFhNGQyMS4uNDcwZmFmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMTU4LDggKzE1OCwyOCBAQAogICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ0JERkwnLCBvdXRwdXQpCiAKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfc3RkaW5fYXJnKHNlbGYpOgorICAgICAgICAjIGNoZWNrX291dHB1dCgpIGNhbiBiZSBjYWxsZWQgd2l0aCBzdGRpbiBzZXQgdG8gYSBmaWxlCisgICAgICAgIHRmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0Zi5jbG9zZSkKKyAgICAgICAgdGYud3JpdGUoYidwZWFyJykKKyAgICAgICAgdGYuc2VlaygwKQorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkudXBwZXIoKSkiXSwKKyAgICAgICAgICAgICAgICBzdGRpbj10ZikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1BFQVInLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfaW5wdXRfYXJnKHNlbGYpOgorICAgICAgICAjIGNoZWNrX291dHB1dCgpIGNhbiBiZSBjYWxsZWQgd2l0aCBpbnB1dCBzZXQgdG8gYSBzdHJpbmcKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAiaW1wb3J0IHN5czsgc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpLnVwcGVyKCkpIl0sCisgICAgICAgICAgICAgICAgaW5wdXQ9YidwZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1BFQVInLCBvdXRwdXQpCisKICAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfc3Rkb3V0X2FyZyhzZWxmKToKLSAgICAgICAgIyBjaGVja19vdXRwdXQoKSBmdW5jdGlvbiBzdGRlcnIgcmVkaXJlY3RlZCB0byBzdGRvdXQKKyAgICAgICAgIyBjaGVja19vdXRwdXQoKSByZWZ1c2VzIHRvIGFjY2VwdCAnc3Rkb3V0JyBhcmd1bWVudAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGM6CiAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKICAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAicHJpbnQoJ3dpbGwgbm90IGJlIHJ1bicpIl0sCkBAIC0xNjcsNiArMTg3LDIwIEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIFZhbHVlRXJyb3Igd2hlbiBzdGRvdXQgYXJnIHN1cHBsaWVkLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N0ZG91dCcsIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCiAKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfc3RkaW5fd2l0aF9pbnB1dF9hcmcoc2VsZik6CisgICAgICAgICMgY2hlY2tfb3V0cHV0KCkgcmVmdXNlcyB0byBhY2NlcHQgJ3N0ZGluJyB3aXRoICdpbnB1dCcKKyAgICAgICAgdGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRmLmNsb3NlKQorICAgICAgICB0Zi53cml0ZShiJ3BlYXInKQorICAgICAgICB0Zi5zZWVrKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgYzoKKyAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgICAgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICItYyIsICJwcmludCgnd2lsbCBub3QgYmUgcnVuJykiXSwKKyAgICAgICAgICAgICAgICAgICAgc3RkaW49dGYsIGlucHV0PWInaGFyZScpCisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIFZhbHVlRXJyb3Igd2hlbiBzdGRpbiBhbmQgaW5wdXQgYXJncyBzdXBwbGllZC4iKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzdGRpbicsIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lucHV0JywgYy5leGNlcHRpb24uYXJnc1swXSkKKwogICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF90aW1lb3V0KHNlbGYpOgogICAgICAgICAjIGNoZWNrX291dHB1dCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmcKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgpAQCAtOTc4LDggKzEwMTIsNyBAQAogICAgICAgICAjIHZhbHVlIGZvciB0aGF0IGxpbWl0LCBidXQgV2luZG93cyBoYXMgMjA0OCwgc28gd2UgbG9vcAogICAgICAgICAjIDEwMjQgdGltZXMgKGVhY2ggY2FsbCBsZWFrZWQgdHdvIGZkcykuCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMjQpOgotICAgICAgICAgICAgIyBXaW5kb3dzIHJhaXNlcyBJT0Vycm9yLiAgT3RoZXJzIHJhaXNlIE9TRXJyb3IuCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVudmlyb25tZW50RXJyb3IpIGFzIGM6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGM6CiAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbJ25vbmV4aXN0aW5nX2lfaG9wZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCkBAIC0xMDkxLDcgKzExMjQsNyBAQAogICAgICAgICBpZiByZXNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLm9sZF9saW1pdCA9IHJlc291cmNlLmdldHJsaW1pdChyZXNvdXJjZS5STElNSVRfQ09SRSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX0NPUkUsICgwLCAwKSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX0NPUkUsICgwLCBzZWxmLm9sZF9saW1pdFsxXSkpCiAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIHJlc291cmNlLmVycm9yKToKICAgICAgICAgICAgICAgICBwYXNzCiAKQEAgLTEyMzIsNyArMTI2NSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgIiJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1yYWlzZV9pdCkKLSAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5fcG9zaXhzdWJwcm9jZXNzLAogICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgYSBWYWx1ZUVycm9yIGZyb20gdGhlIHByZWV4ZWNfZm4iKQpAQCAtMTI3Miw5ICsxMzA1LDEwIEBACiAgICAgICAgICIiIklzc3VlMTYxNDA6IERvbid0IGRvdWJsZSBjbG9zZSBwaXBlcyBvbiBwcmVleGVjIGVycm9yLiIiIgogCiAgICAgICAgIGRlZiByYWlzZV9pdCgpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJmb3JjZSB0aGUgX2V4ZWN1dGVfY2hpbGQoKSBlcnJwaXBlX2RhdGEgcGF0aC4iKQorICAgICAgICAgICAgcmFpc2Ugc3VicHJvY2Vzcy5TdWJwcm9jZXNzRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJmb3JjZSB0aGUgX2V4ZWN1dGVfY2hpbGQoKSBlcnJwaXBlX2RhdGEgcGF0aC4iKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlN1YnByb2Nlc3NFcnJvcik6CiAgICAgICAgICAgICBzZWxmLl9UZXN0RXhlY3V0ZUNoaWxkUG9wZW4oCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBbc3lzLmV4ZWN1dGFibGUsICItYyIsICJwYXNzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCkBAIC0xNjM3LDEyICsxNjcxLDEyIEBACiAgICAgICAgICAgICAjIFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBrZWVwcyB0aGUgbWVzc2FnZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3VicHJvY2Vzcy5fcG9zaXhzdWJwcm9jZXNzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwgInN1cnJvZ2F0ZTpcdURDZmYiKQotICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGVycjoKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgICMgX3Bvc2l4c3VicHJvY2VzcyB1c2VzIGEgZGVmYXVsdCBtZXNzYWdlCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzdWJwcm9jZXNzLl9wb3NpeHN1YnByb2Nlc3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnIpLCAiRXhjZXB0aW9uIG9jY3VycmVkIGluIHByZWV4ZWNfZm4uIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVmFsdWVFcnJvciBvciBSdW50aW1lRXJyb3IiKQorICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBWYWx1ZUVycm9yIG9yIHN1YnByb2Nlc3MuU3VicHJvY2Vzc0Vycm9yIikKIAogICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2VudihzZWxmKToKICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gKCgndGVzdCcsICdhYmNcdURDRkYnKSwgKCd0ZXN0XHVEQ0ZGJywgJzQyJykpOgpAQCAtMTkyOSw3ICsxOTYzLDcgQEAKICAgICAgICAgIyBsZXQgc29tZSB0aW1lIGZvciB0aGUgcHJvY2VzcyB0byBleGl0LCBhbmQgY3JlYXRlIGEgbmV3IFBvcGVuOiB0aGlzCiAgICAgICAgICMgc2hvdWxkIHRyaWdnZXIgdGhlIHdhaXQoKSBvZiBwCiAgICAgICAgIHRpbWUuc2xlZXAoMC4yKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVudmlyb25tZW50RXJyb3IpIGFzIGM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgYzoKICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJ25vbmV4aXN0aW5nX2lfaG9wZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcHJvYzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKaW5kZXggZmNjY2RmNy4uNzdlYzlmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKQEAgLTEsMTkgKzEsMjYgQEAKICIiIkRvIGEgbWluaW1hbCB0ZXN0IG9mIGFsbCB0aGUgbW9kdWxlcyB0aGF0IGFyZW4ndCBvdGhlcndpc2UgdGVzdGVkLiIiIgotCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFRlc3RVbnRlc3RlZE1vZHVsZXModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2F0X2xlYXN0X2ltcG9ydF91bnRlc3RlZF9tb2R1bGVzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3VudGVzdGVkX21vZHVsZXNfY2FuX2JlX2ltcG9ydGVkKHNlbGYpOgorICAgICAgICB1bnRlc3RlZCA9ICgnYmRiJywgJ2VuY29kaW5ncycsICdmb3JtYXR0ZXInLCAnaW1naGRyJywKKyAgICAgICAgICAgICAgICAgICAgJ21hY3VybDJwYXRoJywgJ250dXJsMnBhdGgnLCAndGFibmFubnknKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MocXVpZXQ9VHJ1ZSk6Ci0gICAgICAgICAgICBpbXBvcnQgYmRiCi0gICAgICAgICAgICBpbXBvcnQgY2dpdGIKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHVudGVzdGVkOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0ZXN0LnRlc3Rfe30nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgdW5pdHRlc3QuU2tpcFRlc3Q6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCd7fSBoYXMgdGVzdHMgZXZlbiB0aG91Z2ggdGVzdF9zdW5kcnkgY2xhaW1zICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UnLmZvcm1hdChuYW1lKSkKIAogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5iY3BwY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY2NvbXBpbGVyCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlcgotICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5lbXhjY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuZmlsZWxpc3QKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLm1zdmNjb21waWxlcgpAQCAtMzksMjkgKzQ2LDEzIEBACiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3QKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY29tbWFuZC51cGxvYWQKIAotICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncwotICAgICAgICAgICAgaW1wb3J0IGZvcm1hdHRlcgotICAgICAgICAgICAgaW1wb3J0IGdldHBhc3MKICAgICAgICAgICAgIGltcG9ydCBodG1sLmVudGl0aWVzCi0gICAgICAgICAgICBpbXBvcnQgaW1naGRyCi0gICAgICAgICAgICBpbXBvcnQga2V5d29yZAotICAgICAgICAgICAgaW1wb3J0IG1hY3VybDJwYXRoCi0gICAgICAgICAgICBpbXBvcnQgbWFpbGNhcAotICAgICAgICAgICAgaW1wb3J0IG50dXJsMnBhdGgKLSAgICAgICAgICAgIGltcG9ydCBvczJlbXhwYXRoCi0gICAgICAgICAgICBpbXBvcnQgcHN0YXRzCi0gICAgICAgICAgICBpbXBvcnQgcHlfY29tcGlsZQotICAgICAgICAgICAgaW1wb3J0IHNuZGhkcgotICAgICAgICAgICAgaW1wb3J0IHRhYm5hbm55CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHR0eSAgICAgIyBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MKKyAgICAgICAgICAgICAgICBpbXBvcnQgdHR5ICAjIE5vdCBhdmFpbGFibGUgb24gV2luZG93cwogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoInNraXBwaW5nIHR0eSIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RVbnRlc3RlZE1vZHVsZXMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CmluZGV4IDFlMjcyZWUuLjM3ZmMyZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQpAQCAtNDQsNiArNDQsMTEgQEAKIAogY2xhc3MgVGVzdFN1cGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBUaGlzIGZpeGVzIHRoZSBkYW1hZ2UgdGhhdCB0ZXN0X3ZhcmlvdXNfX19jbGFzc19fX3BhdGhvbG9naWVzIGRvZXMuCisgICAgICAgIG5vbmxvY2FsIF9fY2xhc3NfXworICAgICAgICBfX2NsYXNzX18gPSBUZXN0U3VwZXIKKwogICAgIGRlZiB0ZXN0X2Jhc2ljc193b3JraW5nKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mKCksICdBQkNEJykKIApAQCAtODEsOCArODYsNyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRSgpLmYoKSwgJ0FFJykKIAotICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKLSAgICBkZWYgdGVzdF9fX2NsYXNzX19fc2V0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3ZhcmlvdXNfX19jbGFzc19fX3BhdGhvbG9naWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBpc3N1ZSAjMTIzNzAKICAgICAgICAgY2xhc3MgWChBKToKICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgpAQCAtOTEsNiArOTUsMzEgQEAKICAgICAgICAgeCA9IFgoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZigpLCAnQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2NsYXNzX18sIDQxMykKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIHggPSBfX2NsYXNzX18KKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWC54LCB0eXBlKHNlbGYpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgIGV4ZWMoIiIiY2xhc3MgWDoKKyAgICAgICAgICAgICAgICBfX2NsYXNzX18KKyAgICAgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18iIiIsIGdsb2JhbHMoKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlLmV4Y2VwdGlvbiksIE5hbWVFcnJvcikgIyBOb3QgVW5ib3VuZExvY2FsRXJyb3IKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGdsb2JhbCBfX2NsYXNzX18KKyAgICAgICAgICAgIF9fY2xhc3NfXyA9IDQyCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbHMoKVsiX19jbGFzc19fIl0sIDQyKQorICAgICAgICBkZWwgZ2xvYmFscygpWyJfX2NsYXNzX18iXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJfX2NsYXNzX18iLCBYLl9fZGljdF9fKQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgbm9ubG9jYWwgX19jbGFzc19fCisgICAgICAgICAgICBfX2NsYXNzX18gPSA0MgorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfX2NsYXNzX18sIDQyKQogCiAgICAgZGVmIHRlc3RfX19jbGFzc19fX2luc3RhbmNlbWV0aG9kKHNlbGYpOgogICAgICAgICAjIFNlZSBpc3N1ZSAjMTQ4NTcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggNTkyNmI2OS4uYTlkMzYyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogPj4+IE5vbmUgPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogYXNzaWdubWVudCB0byBrZXl3b3JkCitTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGtleXdvcmQKIAogSXQncyBhIHN5bnRheCBlcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IHR1cGxlLiAgV2h5IGlzbid0IGl0IGFuCiBlcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IGxpc3Q/ICBJdCB3aWxsIGFsd2F5cyByYWlzZSBzb21lIGVycm9yIGF0CkBAIC0yMzMsNyArMjMzLDcgQEAKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gZ2VuZXJhdG9yIGV4cHJlc3Npb24KID4+PiBOb25lICs9IDEKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBhc3NpZ25tZW50IHRvIGtleXdvcmQKK1N5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8ga2V5d29yZAogPj4+IGYoKSArPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGZ1bmN0aW9uIGNhbGwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggOWQ5N2M4ZC4uNjVjYjhlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTYsNiArNiw4IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGNvZGVjcworaW1wb3J0IGdjCitpbXBvcnQgc3lzY29uZmlnCiAKICMgY291bnQgdGhlIG51bWJlciBvZiB0ZXN0IHJ1bnMsIHVzZWQgdG8gY3JlYXRlIHVuaXF1ZQogIyBzdHJpbmdzIHRvIGludGVybiBpbiB0ZXN0X2ludGVybigpCkBAIC00ODAsNyArNDgyLDcgQEAKICAgICBkZWYgdGVzdF90aHJlYWRfaW5mbyhzZWxmKToKICAgICAgICAgaW5mbyA9IHN5cy50aHJlYWRfaW5mbwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpbmZvKSwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihpbmZvLm5hbWUsICgnbnQnLCAnb3MyJywgJ3B0aHJlYWQnLCAnc29sYXJpcycsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEluKGluZm8ubmFtZSwgKCdudCcsICdwdGhyZWFkJywgJ3NvbGFyaXMnLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihpbmZvLmxvY2ssICgnc2VtYXBob3JlJywgJ211dGV4K2NvbmQnLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0XzQzNTgxKHNlbGYpOgpAQCAtNTEzLDcgKzUxNSw3IEBACiAgICAgICAgIGF0dHJzID0gKCJkZWJ1ZyIsCiAgICAgICAgICAgICAgICAgICJpbnNwZWN0IiwgImludGVyYWN0aXZlIiwgIm9wdGltaXplIiwgImRvbnRfd3JpdGVfYnl0ZWNvZGUiLAogICAgICAgICAgICAgICAgICAibm9fdXNlcl9zaXRlIiwgIm5vX3NpdGUiLCAiaWdub3JlX2Vudmlyb25tZW50IiwgInZlcmJvc2UiLAotICAgICAgICAgICAgICAgICAiYnl0ZXNfd2FybmluZyIsICJxdWlldCIsICJoYXNoX3JhbmRvbWl6YXRpb24iKQorICAgICAgICAgICAgICAgICAiYnl0ZXNfd2FybmluZyIsICJxdWlldCIsICJoYXNoX3JhbmRvbWl6YXRpb24iLCAiaXNvbGF0ZWQiKQogICAgICAgICBmb3IgYXR0ciBpbiBhdHRyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5mbGFncywgYXR0ciksIGF0dHIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZ2V0YXR0cihzeXMuZmxhZ3MsIGF0dHIpKSwgaW50LCBhdHRyKQpAQCAtNjA5LDYgKzYxMSwzNiBAQAogICAgICAgICByZXQsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqYXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZyZWUgUHlEaWN0T2JqZWN0cyIsIGVycikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3lzLCAiZ2V0YWxsb2NhdGVkYmxvY2tzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5nZXRhbGxvY2F0ZWRibG9ja3MgdW5hdmFpbGFibGUgb24gdGhpcyBidWlsZCIpCisgICAgZGVmIHRlc3RfZ2V0YWxsb2NhdGVkYmxvY2tzKHNlbGYpOgorICAgICAgICAjIFNvbWUgc2FuaXR5IGNoZWNrcworICAgICAgICB3aXRoX3B5bWFsbG9jID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1BZTUFMTE9DJykKKyAgICAgICAgYSA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYSksIGludCkKKyAgICAgICAgaWYgd2l0aF9weW1hbGxvYzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihhLCAwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBXaGVuIFdJVEhfUFlNQUxMT0MgaXNuJ3QgYXZhaWxhYmxlLCB3ZSBkb24ndCBrbm93IGFueXRoaW5nCisgICAgICAgICAgICAjIGFib3V0IHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uOiB0aGUgZnVuY3Rpb24gbWlnaHQKKyAgICAgICAgICAgICMgcmV0dXJuIDAgb3Igc29tZXRoaW5nIGdyZWF0ZXIuCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhLCAwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFdoaWxlIHdlIGNvdWxkIGltYWdpbmUgYSBQeXRob24gc2Vzc2lvbiB3aGVyZSB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAjIG11bHRpcGxlIGJ1ZmZlciBvYmplY3RzIHdvdWxkIGV4Y2VlZCB0aGUgc2hhcmluZyBvZiByZWZlcmVuY2VzLAorICAgICAgICAgICAgIyBpdCBpcyB1bmxpa2VseSB0byBoYXBwZW4gaW4gYSBub3JtYWwgdGVzdCBydW4uCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoYSwgc3lzLmdldHRvdGFscmVmY291bnQoKSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBnZXR0b3RhbHJlZmNvdW50KCkgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgcGFzcworICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgYiA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChiLCBhKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgYyA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKQorICAgICAgICBzZWxmLmFzc2VydEluKGMsIHJhbmdlKGIgLSA1MCwgYiArIDUwKSkKKworCiBjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTczMiw3ICs3NjQsNyBAQAogICAgICAgICBuZnJlZXMgPSBsZW4oeC5mX2NvZGUuY29fZnJlZXZhcnMpCiAgICAgICAgIGV4dHJhcyA9IHguZl9jb2RlLmNvX3N0YWNrc2l6ZSArIHguZl9jb2RlLmNvX25sb2NhbHMgK1wKICAgICAgICAgICAgICAgICAgIG5jZWxscyArIG5mcmVlcyAtIDEKLSAgICAgICAgY2hlY2soeCwgdnNpemUoJzEyUDNpJyArIENPX01BWEJMT0NLUyonM2knICsgJ1AnICsgZXh0cmFzKidQJykpCisgICAgICAgIGNoZWNrKHgsIHZzaXplKCcxM1AzaWMnICsgQ09fTUFYQkxPQ0tTKiczaScgKyAnUCcgKyBleHRyYXMqJ1AnKSkKICAgICAgICAgIyBmdW5jdGlvbgogICAgICAgICBkZWYgZnVuYygpOiBwYXNzCiAgICAgICAgIGNoZWNrKGZ1bmMsIHNpemUoJzEyUCcpKQpAQCAtNzc4LDcgKzgxMCw3IEBACiAgICAgICAgICMgbWVtb3J5dmlldwogICAgICAgICBjaGVjayhtZW1vcnl2aWV3KGInJyksIHNpemUoJ1BuaW4gMlAybjJpNVAgM2NQbicpKQogICAgICAgICAjIG1vZHVsZQotICAgICAgICBjaGVjayh1bml0dGVzdCwgc2l6ZSgnUG5QJykpCisgICAgICAgIGNoZWNrKHVuaXR0ZXN0LCBzaXplKCdQblBQUCcpKQogICAgICAgICAjIE5vbmUKICAgICAgICAgY2hlY2soTm9uZSwgc2l6ZSgnJykpCiAgICAgICAgICMgTm90SW1wbGVtZW50ZWRUeXBlCkBAIC04MzIsMTEgKzg2NCwxMSBAQAogICAgICAgICBjaGVjaygoMSwyLDMpLCB2c2l6ZSgnJykgKyAzKnNlbGYuUCkKICAgICAgICAgIyB0eXBlCiAgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAotICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSVAnKQogICAgICAgICBjaGVjayhpbnQsIHMpCiAgICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5TnVtYmVyTWV0aG9kcyArIFB5TWFwcGluZ01ldGhvZHMgKwogICAgICAgICAjICBQeVNlcXVlbmNlTWV0aG9kcyArIFB5QnVmZmVyUHJvY3MgKyA0UCkKLSAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSScpICsgc3RydWN0LmNhbGNzaXplKCczNFAgM1AgMTBQIDJQIDRQJykKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSVAnKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDEwUCAyUCA0UCcpCiAgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKICAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IDkyMTkzNjAuLjUyOTM2NDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0yMzQsNyArMjM0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNvbmZpZ19oKSwgY29uZmlnX2gpCiAKICAgICBkZWYgdGVzdF9nZXRfc2NoZW1lX25hbWVzKHNlbGYpOgotICAgICAgICB3YW50ZWQgPSAoJ250JywgJ250X3VzZXInLCAnb3MyJywgJ29zMl9ob21lJywgJ29zeF9mcmFtZXdvcmtfdXNlcicsCisgICAgICAgIHdhbnRlZCA9ICgnbnQnLCAnbnRfdXNlcicsICdvc3hfZnJhbWV3b3JrX3VzZXInLAogICAgICAgICAgICAgICAgICAgJ3Bvc2l4X2hvbWUnLCAncG9zaXhfcHJlZml4JywgJ3Bvc2l4X3VzZXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9zY2hlbWVfbmFtZXMoKSwgd2FudGVkKQogCkBAIC0zMDUsMTQgKzMwNSwxMyBAQAogICAgICAgICBpZiAnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJyBpbiBlbnY6CiAgICAgICAgICAgICBkZWwgZW52WydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXQogCi0gICAgICAgIHdpdGggb3BlbignL2Rldi9udWxsJywgJ3cnKSBhcyBkZXZudWxsX2ZwOgotICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWwotICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwgJy1jJywKLSAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNjb25maWc7IHByaW50KHN5c2NvbmZpZy5nZXRfcGxhdGZvcm0oKSknLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICBzdGRlcnI9ZGV2bnVsbF9mcCwKLSAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCisgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNjb25maWc7IHByaW50KHN5c2NvbmZpZy5nZXRfcGxhdGZvcm0oKSknLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgZW52PWVudikKICAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCiAgICAgICAgIHRlc3RfcGxhdGZvcm0gPSB0ZXN0X3BsYXRmb3JtLmRlY29kZSgndXRmLTgnKQogICAgICAgICBzdGF0dXMgPSBwLndhaXQoKQpAQCAtMzI1LDIwICszMjQsMTkgQEAKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogCi0gICAgICAgIHdpdGggb3BlbignL2Rldi9udWxsJykgYXMgZGV2X251bGw6Ci0gICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCi0gICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLCAnLWMnLAotICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgIHN0ZGVycj1kZXZfbnVsbCwKLSAgICAgICAgICAgICAgICBlbnY9ZW52KQotICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCi0gICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKKyAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwgJy1jJywKKyAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICBlbnY9ZW52KQorICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKKyAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHRlc3RfcGxhdGZvcm0uZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCiAKICAgICBkZWYgdGVzdF9zcmNkaXIoc2VsZik6CiAgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQppbmRleCAyMzgxNzVmLi4yZjJiZjZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CkBAIC0xNzMyLDIwICsxNzMyLDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXIuY2xvc2VkLCAiY29udGV4dCBtYW5hZ2VyIGZhaWxlZCIpCiAKICAgICBkZWYgdGVzdF9jbG9zZWQoc2VsZik6Ci0gICAgICAgICMgVGhlIF9fZW50ZXJfXygpIG1ldGhvZCBpcyBzdXBwb3NlZCB0byByYWlzZSBJT0Vycm9yCisgICAgICAgICMgVGhlIF9fZW50ZXJfXygpIG1ldGhvZCBpcyBzdXBwb3NlZCB0byByYWlzZSBPU0Vycm9yCiAgICAgICAgICMgaWYgdGhlIFRhckZpbGUgb2JqZWN0IGlzIGFscmVhZHkgY2xvc2VkLgogICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4odGFybmFtZSkKICAgICAgICAgdGFyLmNsb3NlKCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKICAgICAgICAgICAgIHdpdGggdGFyOgogICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgIyBUZXN0IGlmIHRoZSBJT0Vycm9yIGV4Y2VwdGlvbiBpcyBwYXNzZWQgdGhyb3VnaCBwcm9wZXJseS4KKyAgICAgICAgIyBUZXN0IGlmIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiBpcyBwYXNzZWQgdGhyb3VnaCBwcm9wZXJseS4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGV4YzoKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUpIGFzIHRhcjoKLSAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuZXhjZXB0aW9uLCBJT0Vycm9yLAorICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5leGNlcHRpb24sIE9TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZXhjZXB0aW9uIHJhaXNlZCBpbiBjb250ZXh0IG1hbmFnZXIiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyLmNsb3NlZCwgImNvbnRleHQgbWFuYWdlciBmYWlsZWQiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQppbmRleCAyOTYyOTM5Li40MzdiMDJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKQEAgLTE1MSw3ICsxNTEsNyBAQAogICAgICAgICAgICAgICAgICMgdmlhIGFueSBidWdzIGFib3ZlCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIG9zLmNsb3NlKHJlYWRfZmQpCiAgICAgICAgICAgICBvcy5jbG9zZSh3cml0ZV9mZCkKQEAgLTE5MCw3ICsxOTAsNyBAQAogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBvcy5lcnJvcik6CisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3MuY3VyZGlyCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGlybmFtZSwgY2FuZCkKQEAgLTMxNSw3ICszMTUsNyBAQAogICAgICAgICBmaWxlID0gc2VsZi5kb19jcmVhdGUoKQogICAgICAgICBtb2RlID0gc3RhdC5TX0lNT0RFKG9zLnN0YXQoZmlsZS5uYW1lKS5zdF9tb2RlKQogICAgICAgICBleHBlY3RlZCA9IDBvNjAwCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ3dpbjMyJywgJ29zMmVteCcpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICMgVGhlcmUncyBubyBkaXN0aW5jdGlvbiBhbW9uZyAndXNlcicsICdncm91cCcgYW5kICd3b3JsZCc7CiAgICAgICAgICAgICAjIHJlcGxpY2F0ZSB0aGUgJ3VzZXInIGJpdHMuCiAgICAgICAgICAgICB1c2VyID0gZXhwZWN0ZWQgPj4gNgpAQCAtMzQ5LDcgKzM0OSw3IEBACiAgICAgICAgICMgT24gV2luZG93cyBhIHNwYXduKiAvcGF0aC8gd2l0aCBlbWJlZGRlZCBzcGFjZXMgc2hvdWxkbid0IGJlIHF1b3RlZCwKICAgICAgICAgIyBidXQgYW4gYXJnIHdpdGggZW1iZWRkZWQgc3BhY2VzIHNob3VsZCBiZSBkZWNvcmF0ZWQgd2l0aCBkb3VibGUKICAgICAgICAgIyBxdW90ZXMgb24gZWFjaCBlbmQKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnd2luMzInLCk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgZGVjb3JhdGVkID0gJyIlcyInICUgc3lzLmV4ZWN1dGFibGUKICAgICAgICAgICAgIHRlc3RlciA9ICciJXMiJyAlIHRlc3RlcgogICAgICAgICBlbHNlOgpAQCAtNTE4LDcgKzUxOCw3IEBACiAgICAgICAgICAgICBtb2RlID0gc3RhdC5TX0lNT0RFKG9zLnN0YXQoZGlyKS5zdF9tb2RlKQogICAgICAgICAgICAgbW9kZSAmPSAwbzc3NyAjIE1hc2sgb2ZmIHN0aWNreSBiaXRzIGluaGVyaXRlZCBmcm9tIC90bXAKICAgICAgICAgICAgIGV4cGVjdGVkID0gMG83MDAKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ3dpbjMyJywgJ29zMmVteCcpOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICAgICAgIyBUaGVyZSdzIG5vIGRpc3RpbmN0aW9uIGFtb25nICd1c2VyJywgJ2dyb3VwJyBhbmQgJ3dvcmxkJzsKICAgICAgICAgICAgICAgICAjIHJlcGxpY2F0ZSB0aGUgJ3VzZXInIGJpdHMuCiAgICAgICAgICAgICAgICAgdXNlciA9IGV4cGVjdGVkID4+IDYKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKaW5kZXggYTE5MWUxNS4uZjlhNzIxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKQEAgLTY4LDcgKzY4LDcgQEAKICAgICAgICAgdGhyZWFkLnN0YWNrX3NpemUoMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aHJlYWQuc3RhY2tfc2l6ZSgpLCAwLCAic3RhY2tfc2l6ZSBub3QgcmVzZXQgdG8gZGVmYXVsdCIpCiAKLSAgICAgICAgaWYgb3MubmFtZSBub3QgaW4gKCJudCIsICJvczIiLCAicG9zaXgiKToKKyAgICAgICAgaWYgb3MubmFtZSBub3QgaW4gKCJudCIsICJwb3NpeCIpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdHNzX3N1cHBvcnRlZCA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKaW5kZXggNmMyOTY1Yi4uM2Q5NjFiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKQEAgLTUsOCArNSw4IEBACiAjIGNvbXBsYWlucyBzZXZlcmFsIHRpbWVzIGFib3V0IG1vZHVsZSByYW5kb20gaGF2aW5nIG5vIGF0dHJpYnV0ZQogIyByYW5kcmFuZ2UsIGFuZCB0aGVuIFB5dGhvbiBoYW5ncy4KIAoraW1wb3J0IF9pbXAgYXMgaW1wCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IDc5OTY3ZGMuLmVjZjIyZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC00NTIsNyArNDUyLDcgQEAKICAgICAjIHByb2JsZW1zIHdpdGggc29tZSBvcGVyYXRpbmcgc3lzdGVtcyAoaXNzdWUgIzM4NjMpOiBza2lwIHByb2JsZW1hdGljIHRlc3RzCiAgICAgIyBvbiBwbGF0Zm9ybXMga25vd24gdG8gYmVoYXZlIGJhZGx5LgogICAgIHBsYXRmb3Jtc190b19za2lwID0gKCdmcmVlYnNkNCcsICdmcmVlYnNkNScsICdmcmVlYnNkNicsICduZXRic2Q1JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnb3MyZW14JywgJ2hwLXV4MTEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdocC11eDExJykKIAogICAgIGRlZiBfcnVuX2FuZF9qb2luKHNlbGYsIHNjcmlwdCk6CiAgICAgICAgIHNjcmlwdCA9ICIiImlmIDE6CkBAIC03MjgsNiArNzI4LDMxIEBACiAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICB0LmpvaW4oKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgIm5lZWRzIG9zLmZvcmsoKSIpCisgICAgZGVmIHRlc3RfY2xlYXJfdGhyZWFkc19zdGF0ZXNfYWZ0ZXJfZm9yayhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTcwOTQ6IGNoZWNrIHRoYXQgdGhyZWFkcyBzdGF0ZXMgYXJlIGNsZWFyZWQgYWZ0ZXIgZm9yaygpCisKKyAgICAgICAgIyBzdGFydCBhIGJ1bmNoIG9mIHRocmVhZHMKKyAgICAgICAgdGhyZWFkcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDE2KToKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGEgOiB0aW1lLnNsZWVwKDAuMykpCisgICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0KQorICAgICAgICAgICAgdC5zdGFydCgpCisKKyAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgIyBjaGVjayB0aGF0IHRocmVhZHMgc3RhdGVzIGhhdmUgYmVlbiBjbGVhcmVkCisgICAgICAgICAgICBpZiBsZW4oc3lzLl9jdXJyZW50X2ZyYW1lcygpKSA9PSAxOgorICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9zLl9leGl0KDEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBfLCBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorCisgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICB0LmpvaW4oKQorCiAKIGNsYXNzIFRocmVhZGluZ0V4Y2VwdGlvblRlc3RzKEJhc2VUZXN0Q2FzZSk6CiAgICAgIyBBIFJ1bnRpbWVFcnJvciBzaG91bGQgYmUgcmFpc2VkIGlmIFRocmVhZC5zdGFydCgpIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CmluZGV4IGY5NzVhNzUuLmIxMDA0ZTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKQEAgLTgsNyArOCw3IEBACiB0aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKIGltcG9ydCB0aW1lCiAKLWlmIHN5cy5wbGF0Zm9ybVs6M10gaW4gKCd3aW4nLCAnb3MyJykgb3Igc3lzLnBsYXRmb3JtPT0ncmlzY29zJzoKK2lmIChzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiQ2FuJ3QgdGVzdCBzaWduYWwgb24gJXMiICUgc3lzLnBsYXRmb3JtKQogCiBwcm9jZXNzX3BpZCA9IG9zLmdldHBpZCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkKaW5kZXggYzNjNGFjZi4uZDI4ZDYyYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lb3V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZW91dC5weQpAQCAtMTk0LDcgKzE5NCw3IEBACiAgICAgICAgICAgICBzb2NrLmNvbm5lY3QoKHdoaXRlaG9sZSkpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQudGltZW91dDoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRUNPTk5SRUZVU0VEOgogICAgICAgICAgICAgICAgIHNraXAgPSBGYWxzZQogICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA1YmNlMmFmLi42NmExMmJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTUwLDMwICsxNTAsNzQgQEAKIAogY2xhc3MgVHJhY2ViYWNrRm9ybWF0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlc3RfdHJhY2ViYWNrX2Zvcm1hdChzZWxmKToKKyAgICBkZWYgc29tZV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHJhaXNlIEtleUVycm9yKCdibGFoJykKKworICAgIGRlZiBjaGVja190cmFjZWJhY2tfZm9ybWF0KHNlbGYsIGNsZWFudXBfZnVuYz1Ob25lKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoJ2JsYWgnKQorICAgICAgICAgICAgc2VsZi5zb21lX2V4Y2VwdGlvbigpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHR5cGVfLCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgaWYgY2xlYW51cF9mdW5jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgQ2xlYXIgdGhlIGlubmVyIGZyYW1lcywgbm90IHRoaXMgb25lCisgICAgICAgICAgICAgICAgY2xlYW51cF9mdW5jKHRiLnRiX25leHQpCiAgICAgICAgICAgICB0cmFjZWJhY2tfZm10ID0gJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbih0cmFjZWJhY2suZm9ybWF0X3RiKHRiKSkKICAgICAgICAgICAgIGZpbGVfID0gU3RyaW5nSU8oKQogICAgICAgICAgICAgdHJhY2ViYWNrX3ByaW50KHRiLCBmaWxlXykKICAgICAgICAgICAgIHB5dGhvbl9mbXQgID0gZmlsZV8uZ2V0dmFsdWUoKQorICAgICAgICAgICAgIyBDYWxsIGFsbCBfdGIgYW5kIF9leGMgZnVuY3Rpb25zCisgICAgICAgICAgICB3aXRoIGNhcHR1cmVkX291dHB1dCgic3RkZXJyIikgYXMgdGJzdGRlcnI6CisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X3RiKHRiKQorICAgICAgICAgICAgdGJmaWxlID0gU3RyaW5nSU8oKQorICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X3RiKHRiLCBmaWxlPXRiZmlsZSkKKyAgICAgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBleGNzdGRlcnI6CisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICBleGNmbXQgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgICAgICBleGNmaWxlID0gU3RyaW5nSU8oKQorICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPWV4Y2ZpbGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBFcnJvcigidW5hYmxlIHRvIGNyZWF0ZSB0ZXN0IHRyYWNlYmFjayBzdHJpbmciKQogCiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgUHl0aG9uIGFuZCB0aGUgdHJhY2ViYWNrIG1vZHVsZSBmb3JtYXQgdGhlIHNhbWUgdGhpbmcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZWJhY2tfZm10LCBweXRob25fZm10KQorICAgICAgICAjIE5vdyB2ZXJpZnkgdGhlIF90YiBmdW5jIG91dHB1dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRic3RkZXJyLmdldHZhbHVlKCksIHRiZmlsZS5nZXR2YWx1ZSgpKQorICAgICAgICAjIE5vdyB2ZXJpZnkgdGhlIF9leGMgZnVuYyBvdXRwdXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNzdGRlcnIuZ2V0dmFsdWUoKSwgZXhjZmlsZS5nZXR2YWx1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y2ZtdCwgZXhjZmlsZS5nZXR2YWx1ZSgpKQogCiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIHRyYWNlYmFjayBpcyBwcm9wZXJseSBpbmRlbnRlZC4KICAgICAgICAgdGJfbGluZXMgPSBweXRob25fZm10LnNwbGl0bGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0Yl9saW5lcyksIDMpCi0gICAgICAgIGJhbm5lciwgbG9jYXRpb24sIHNvdXJjZV9saW5lID0gdGJfbGluZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGJfbGluZXMpLCA1KQorICAgICAgICBiYW5uZXIgPSB0Yl9saW5lc1swXQorICAgICAgICBsb2NhdGlvbiwgc291cmNlX2xpbmUgPSB0Yl9saW5lc1stMjpdCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYW5uZXIuc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NhdGlvbi5zdGFydHN3aXRoKCcgIEZpbGUnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvdXJjZV9saW5lLnN0YXJ0c3dpdGgoJyAgICByYWlzZScpKQogCisgICAgZGVmIHRlc3RfdHJhY2ViYWNrX2Zvcm1hdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjZWJhY2tfZm9ybWF0KCkKKworICAgIGRlZiB0ZXN0X3RyYWNlYmFja19mb3JtYXRfd2l0aF9jbGVhcmVkX2ZyYW1lcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRyYWNlYmFjayBmb3JtYXR0aW5nIGFsc28gd29ya3Mgd2l0aCBhIGNsZWFyKCllZCBmcmFtZQorICAgICAgICBkZWYgY2xlYW51cF90Yih0Yik6CisgICAgICAgICAgICB0Yi50Yl9mcmFtZS5jbGVhcigpCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2ViYWNrX2Zvcm1hdChjbGVhbnVwX3RiKQorCisgICAgZGVmIHRlc3Rfc3RhY2tfZm9ybWF0KHNlbGYpOgorICAgICAgICAjIFZlcmlmeSBfc3RhY2sgZnVuY3Rpb25zLiBOb3RlIHdlIGhhdmUgdG8gdXNlIF9nZXRmcmFtZSgxKSB0bworICAgICAgICAjIGNvbXBhcmUgdGhlbSB3aXRob3V0IHRoaXMgZnJhbWUgYXBwZWFyaW5nIGluIHRoZSBvdXRwdXQKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0c3RkZXJyOgorICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X3N0YWNrKHN5cy5fZ2V0ZnJhbWUoMSkpCisgICAgICAgIHN0ZmlsZSA9IFN0cmluZ0lPKCkKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X3N0YWNrKHN5cy5fZ2V0ZnJhbWUoMSksIGZpbGU9c3RmaWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0c3RkZXJyLmdldHZhbHVlKCksIHN0ZmlsZS5nZXR2YWx1ZSgpKQorCisgICAgICAgIHN0Zm10ID0gdHJhY2ViYWNrLmZvcm1hdF9zdGFjayhzeXMuX2dldGZyYW1lKDEpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RzdGRlcnIuZ2V0dmFsdWUoKSwgIiIuam9pbihzdGZtdCkpCisKIAogY2F1c2VfbWVzc2FnZSA9ICgKICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDNlZTRjNmIuLmVjMTA3NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtMiw2ICsyLDcgQEAKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX3dpdGhfbG9jYWxlCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtMTA3Nyw5ICsxMDc4LDE5IEBACiAgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCiAgICAgICAgIG5zMi54ID0gInNwYW0iCiAgICAgICAgIG5zMi5feSA9IDUKKyAgICAgICAgbmFtZSA9ICJuYW1lc3BhY2UiCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMSksICJuYW1lc3BhY2Uodz0zLCB4PTEsIHk9MikiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMyKSwgIm5hbWVzcGFjZShfeT01LCB4PSdzcGFtJykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwgIntuYW1lfSh3PTMsIHg9MSwgeT0yKSIuZm9ybWF0KG5hbWU9bmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczIpLCAie25hbWV9KF95PTUsIHg9J3NwYW0nKSIuZm9ybWF0KG5hbWU9bmFtZSkpCisKKyAgICBkZWYgdGVzdF9lcXVhbChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyLnggPSAxCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKSwgdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLCBuczIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobnMyLCB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKSkKIAogICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKICAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9MSwgYj0yKQpAQCAtMTExNywxMSArMTEyOCwxMiBAQAogICAgICAgICBuczEuc3BhbSA9IG5zMQogICAgICAgICBuczIuc3BhbSA9IG5zMwogICAgICAgICBuczMuc3BhbSA9IG5zMgorICAgICAgICBuYW1lID0gIm5hbWVzcGFjZSIKKyAgICAgICAgcmVwcjEgPSAie25hbWV9KGM9J2Nvb2tpZScsIHNwYW09e25hbWV9KC4uLikpIi5mb3JtYXQobmFtZT1uYW1lKQorICAgICAgICByZXByMiA9ICJ7bmFtZX0oc3BhbT17bmFtZX0oc3BhbT17bmFtZX0oLi4uKSwgeD0xKSkiLmZvcm1hdChuYW1lPW5hbWUpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVzcGFjZShjPSdjb29raWUnLCBzcGFtPW5hbWVzcGFjZSguLi4pKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lc3BhY2Uoc3BhbT1uYW1lc3BhY2Uoc3BhbT1uYW1lc3BhY2UoLi4uKSwgeD0xKSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwgcmVwcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczIpLCByZXByMikKIAogICAgIGRlZiB0ZXN0X2FzX2RpY3Qoc2VsZik6CiAgICAgICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHNwYW09J3NwYW1zcGFtc3BhbScpCkBAIC0xMTQ0LDYgKzExNTYsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHNwYW0pLCBTcGFtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMoc3BhbSksIHsnaGFtJzogOCwgJ2VnZ3MnOiA5fSkKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgbnMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoYnJlYWtmYXN0PSJzcGFtIiwgbHVuY2g9InNwYW0iKQorCisgICAgICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgcG5hbWUgPSAicHJvdG9jb2wge30iLmZvcm1hdChwcm90b2NvbCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuc19waWNrbGVkID0gcGlja2xlLmR1bXBzKG5zLCBwcm90b2NvbCkKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IocG5hbWUpIGZyb20gZQorICAgICAgICAgICAgbnNfcm91bmR0cmlwID0gcGlja2xlLmxvYWRzKG5zX3BpY2tsZWQpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMsIG5zX3JvdW5kdHJpcCwgcG5hbWUpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChUeXBlc1Rlc3RzLCBNYXBwaW5nUHJveHlUZXN0cywgQ2xhc3NDcmVhdGlvblRlc3RzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91Y24ucHkgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQppbmRleCAyZTYzNzQ1Li41OWJkZTc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Vjbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQpAQCAtMTczLDcgKzE3Myw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRlc3RkYXRhID0gc3VwcG9ydC5vcGVuX3VybHJlc291cmNlKHVybCwgZW5jb2Rpbmc9InV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrPWNoZWNrX3ZlcnNpb24pCi0gICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgSFRUUEV4Y2VwdGlvbik6CisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSFRUUEV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDb3VsZCBub3QgcmV0cmlldmUgIiArIHVybCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3RkYXRhLmNsb3NlKQogICAgICAgICBmb3IgbGluZSBpbiB0ZXN0ZGF0YToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQppbmRleCA5ZGMzNDM4Li45ZTUzMjEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CkBAIC03LDYgKzcsNyBAQAogIiIiIyIKIGltcG9ydCBfc3RyaW5nCiBpbXBvcnQgY29kZWNzCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTMxLDYgKzMyLDE2IEBACiAgICAgICAgIHJldHVybiBOb25lCiBjb2RlY3MucmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKQogCitkZWYgZHVwbGljYXRlX3N0cmluZyh0ZXh0KToKKyAgICAiIiIKKyAgICBUcnkgdG8gZ2V0IGEgZnJlc2ggY2xvbmUgb2YgdGhlIHNwZWNpZmllZCB0ZXh0OgorICAgIG5ldyBvYmplY3Qgd2l0aCBhIHJlZmVyZW5jZSBjb3VudCBvZiAxLgorCisgICAgVGhpcyBpcyBhIGJlc3QtZWZmb3J0OiBsYXRpbjEgc2luZ2xlIGxldHRlcnMgYW5kIHRoZSBlbXB0eQorICAgIHN0cmluZyAoJycpIGFyZSBzaW5nbGV0b25zIGFuZCBjYW5ub3QgYmUgY2xvbmVkLgorICAgICIiIgorICAgIHJldHVybiB0ZXh0LmVuY29kZSgpLmRlY29kZSgpCisKIGNsYXNzIFVuaWNvZGVUZXN0KHN0cmluZ190ZXN0cy5Db21tb25UZXN0LAogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QsCiAgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVUZXN0LApAQCAtODYzLDExICs4NzQsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7MDpkfScuZm9ybWF0KEcoJ2RhdGEnKSksICdHKGRhdGEpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezAhc30nLmZvcm1hdChHKCdkYXRhJykpLCAnc3RyaW5nIGlzIGRhdGEnKQogCi0gICAgICAgIG1zZyA9ICdvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMgZGVwcmVjYXRlZCcKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6XjEwfScuZm9ybWF0KEUoJ2RhdGEnKSksICcgRShkYXRhKSAgJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOl4xMHN9Jy5mb3JtYXQoRSgnZGF0YScpKSwgJyBFKGRhdGEpICAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6PjE1c30nLmZvcm1hdChHKCdkYXRhJykpLCAnIHN0cmluZyBpcyBkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAnezA6XjEwfScuZm9ybWF0LCBFKCdkYXRhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ3swOl4xMHN9Jy5mb3JtYXQsIEUoJ2RhdGEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAnezA6PjE1c30nLmZvcm1hdCwgRygnZGF0YScpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInswOmRhdGU6ICVZLSVtLSVkfSIuZm9ybWF0KEkoeWVhcj0yMDA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoPTgsCkBAIC05MDMsNyArOTEyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgInswIi5mb3JtYXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsICJ7MC59Ii5mb3JtYXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJ7MC59Ii5mb3JtYXQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsICJ7MFt9Ii5mb3JtYXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJ7MFt9Ii5mb3JtYXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJ7MFt9Ii5mb3JtYXQsIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgICAiezBdfSIuZm9ybWF0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCAiezAuW119Ii5mb3JtYXQsIDApCkBAIC05NTUsNiArOTY0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgie1t7fV19Ii5mb3JtYXQoeyJ7fSI6IDV9KSwgIjUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7W3t9XX0iLmZvcm1hdCh7Int9IiA6ICJhIn0pLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIntbe119Ii5mb3JtYXQoeyJ7IiA6ICJhIn0pLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIntbfV19Ii5mb3JtYXQoeyJ9IiA6ICJhIn0pLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIntbW119Ii5mb3JtYXQoeyJbIiA6ICJhIn0pLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIntbIV19Ii5mb3JtYXQoeyIhIiA6ICJhIn0pLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJ7YXt9Yn0iLmZvcm1hdCwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJ7YXtifSIuZm9ybWF0LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgIntbfSIuZm9ybWF0LCA0MikKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0X21hcCh7fSksICcnKQpAQCAtMjAwNCw5ICsyMDIxLDEwIEBACiAgICAgIyBUZXN0IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKICAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgKHB5dGhvbmFwaSwgcHlfb2JqZWN0LAorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgKAorICAgICAgICAgICAgcHl0aG9uYXBpLCBweV9vYmplY3QsIHNpemVvZiwKICAgICAgICAgICAgIGNfaW50LCBjX2xvbmcsIGNfbG9uZ2xvbmcsIGNfc3NpemVfdCwKLSAgICAgICAgICAgIGNfdWludCwgY191bG9uZywgY191bG9uZ2xvbmcsIGNfc2l6ZV90KQorICAgICAgICAgICAgY191aW50LCBjX3Vsb25nLCBjX3Vsb25nbG9uZywgY19zaXplX3QsIGNfdm9pZF9wKQogICAgICAgICBuYW1lID0gIlB5VW5pY29kZV9Gcm9tRm9ybWF0IgogICAgICAgICBfUHlVbmljb2RlX0Zyb21Gb3JtYXQgPSBnZXRhdHRyKHB5dGhvbmFwaSwgbmFtZSkKICAgICAgICAgX1B5VW5pY29kZV9Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKQEAgLTIwMTcsOSArMjAzNSwxMyBAQAogICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gYXJncykKICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCAqY2FyZ3MpCiAKKyAgICAgICAgZGVmIGNoZWNrX2Zvcm1hdChleHBlY3RlZCwgZm9ybWF0LCAqYXJncyk6CisgICAgICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHRleHQpCisKICAgICAgICAgIyBhc2NpaSBmb3JtYXQsIG5vbi1hc2NpaSBhcmd1bWVudAotICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidhc2NpaVx4N2Y9JVUnLCAndW5pY29kZVx4ZTknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdhc2NpaVx4N2Y9dW5pY29kZVx4ZTknKQorICAgICAgICBjaGVja19mb3JtYXQoJ2FzY2lpXHg3Zj11bmljb2RlXHhlOScsCisgICAgICAgICAgICAgICAgICAgICBiJ2FzY2lpXHg3Zj0lVScsICd1bmljb2RlXHhlOScpCiAKICAgICAgICAgIyBub24tYXNjaWkgZm9ybWF0LCBhc2NpaSBhcmd1bWVudDogZW5zdXJlIHRoYXQgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkKICAgICAgICAgIyByYWlzZXMgYW4gZXJyb3IKQEAgLTIwMjksNjQgKzIwNTEsMjA1IEBACiAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdCwgYid1bmljb2RlXHhlOT0lcycsICdhc2NpaScpCiAKICAgICAgICAgIyB0ZXN0ICIlYyIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVjJywgY19pbnQoMHhhYmNkKSksICdcdWFiY2QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWMnLCBjX2ludCgweDEwZmZmZikpLCAnXFUwMDEwZmZmZicpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnXHVhYmNkJywKKyAgICAgICAgICAgICAgICAgICAgIGInJWMnLCBjX2ludCgweGFiY2QpKQorICAgICAgICBjaGVja19mb3JtYXQoJ1xVMDAxMGZmZmYnLAorICAgICAgICAgICAgICAgICAgICAgYiclYycsIGNfaW50KDB4MTBmZmZmKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWMnLCBjX2ludCgweDExMDAwMCkpCiAgICAgICAgICMgSXNzdWUgIzE4MTgzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVjJWMnLCBjX2ludCgweDEwMDAwKSwgY19pbnQoMHgxMDAwMDApKSwKLSAgICAgICAgICAgICdcVTAwMDEwMDAwXFUwMDEwMDAwMCcpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnXFUwMDAxMDAwMFxVMDAxMDAwMDAnLAorICAgICAgICAgICAgICAgICAgICAgYiclYyVjJywgY19pbnQoMHgxMDAwMCksIGNfaW50KDB4MTAwMDAwKSkKIAogICAgICAgICAjIHRlc3QgIiUiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJyksICclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlJyksICclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlcycpLCAnJXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInWyUlXScpLCAnWyVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlJXMnLCBiJ2FiYycpLCAnJWFiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnJScsCisgICAgICAgICAgICAgICAgICAgICBiJyUnKQorICAgICAgICBjaGVja19mb3JtYXQoJyUnLAorICAgICAgICAgICAgICAgICAgICAgYiclJScpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnJXMnLAorICAgICAgICAgICAgICAgICAgICAgYiclJXMnKQorICAgICAgICBjaGVja19mb3JtYXQoJ1slXScsCisgICAgICAgICAgICAgICAgICAgICBiJ1slJV0nKQorICAgICAgICBjaGVja19mb3JtYXQoJyVhYmMnLAorICAgICAgICAgICAgICAgICAgICAgYiclJSVzJywgYidhYmMnKQorCisgICAgICAgICMgdHJ1bmNhdGVkIHN0cmluZworICAgICAgICBjaGVja19mb3JtYXQoJ2FiYycsCisgICAgICAgICAgICAgICAgICAgICBiJyUuM3MnLCBiJ2FiY2RlZicpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnYWJjW1x1ZmZmZCcsCisgICAgICAgICAgICAgICAgICAgICBiJyUuNXMnLCAnYWJjW1x1MjBhY10nLmVuY29kZSgndXRmOCcpKQorICAgICAgICBjaGVja19mb3JtYXQoIidcXHUyMGFjQUJDJyIsCisgICAgICAgICAgICAgICAgICAgICBiJyVBJywgJ1x1MjBhY0FCQycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgiJ1xcdTIwIiwKKyAgICAgICAgICAgICAgICAgICAgIGInJS41QScsICdcdTIwYWNBQkNERUYnKQorICAgICAgICBjaGVja19mb3JtYXQoIidcdTIwYWNBQkMnIiwKKyAgICAgICAgICAgICAgICAgICAgIGInJVInLCAnXHUyMGFjQUJDJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCInXHUyMGFjQSIsCisgICAgICAgICAgICAgICAgICAgICBiJyUuM1InLCAnXHUyMGFjQUJDREVGJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCdcdTIwYWNBQicsCisgICAgICAgICAgICAgICAgICAgICBiJyUuM1MnLCAnXHUyMGFjQUJDREVGJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCdcdTIwYWNBQicsCisgICAgICAgICAgICAgICAgICAgICBiJyUuM1UnLCAnXHUyMGFjQUJDREVGJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCdcdTIwYWNBQicsCisgICAgICAgICAgICAgICAgICAgICBiJyUuM1YnLCAnXHUyMGFjQUJDREVGJywgTm9uZSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCdhYmNbXHVmZmZkJywKKyAgICAgICAgICAgICAgICAgICAgIGInJS41VicsIE5vbmUsICdhYmNbXHUyMGFjXScuZW5jb2RlKCd1dGY4JykpCisKKyAgICAgICAgIyBmb2xsb3dpbmcgdGVzdHMgY29tZXMgZnJvbSAjNzMzMAorICAgICAgICAjIHRlc3Qgd2lkdGggbW9kaWZpZXIgYW5kIHByZWNpc2lvbiBtb2RpZmllciB3aXRoICVTCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj0gIGFiYyIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JTVTJywgJ2FiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj1hYiIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JS4yUycsICdhYmMnKQorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9ICAgYWIiLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSU1LjJTJywgJ2FiYycpCisKKyAgICAgICAgIyB0ZXN0IHdpZHRoIG1vZGlmaWVyIGFuZCBwcmVjaXNpb24gbW9kaWZpZXIgd2l0aCAlUgorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9ICAgJ2FiYyciLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSU4UicsICdhYmMnKQorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9J2FiIiwKKyAgICAgICAgICAgICAgICAgICAgIGIncmVwcj0lLjNSJywgJ2FiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj0gICdhYiIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JTUuM1InLCAnYWJjJykKKworICAgICAgICAjIHRlc3Qgd2lkdGggbW9kaWZpZXIgYW5kIHByZWNpc2lvbiBtb2RpZmllciB3aXRoICVBCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj0gICAnYWJjJyIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JThBJywgJ2FiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj0nYWIiLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSUuM0EnLCAnYWJjJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCJyZXByPSAgJ2FiIiwKKyAgICAgICAgICAgICAgICAgICAgIGIncmVwcj0lNS4zQScsICdhYmMnKQorCisgICAgICAgICMgdGVzdCB3aWR0aCBtb2RpZmllciBhbmQgcHJlY2lzaW9uIG1vZGlmaWVyIHdpdGggJXMKKyAgICAgICAgY2hlY2tfZm9ybWF0KCJyZXByPSAgYWJjIiwKKyAgICAgICAgICAgICAgICAgICAgIGIncmVwcj0lNXMnLCBiJ2FiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj1hYiIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JS4ycycsIGInYWJjJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCJyZXByPSAgIGFiIiwKKyAgICAgICAgICAgICAgICAgICAgIGIncmVwcj0lNS4ycycsIGInYWJjJykKKworICAgICAgICAjIHRlc3Qgd2lkdGggbW9kaWZpZXIgYW5kIHByZWNpc2lvbiBtb2RpZmllciB3aXRoICVVCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj0gIGFiYyIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JTVVJywgJ2FiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj1hYiIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JS4yVScsICdhYmMnKQorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9ICAgYWIiLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSU1LjJVJywgJ2FiYycpCisKKyAgICAgICAgIyB0ZXN0IHdpZHRoIG1vZGlmaWVyIGFuZCBwcmVjaXNpb24gbW9kaWZpZXIgd2l0aCAlVgorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9ICBhYmMiLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSU1VicsICdhYmMnLCBiJzEyMycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj1hYiIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JS4yVicsICdhYmMnLCBiJzEyMycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgicmVwcj0gICBhYiIsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JTUuMlYnLCAnYWJjJywgYicxMjMnKQorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9ICAxMjMiLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSU1VicsIE5vbmUsIGInMTIzJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCJyZXByPTEyIiwKKyAgICAgICAgICAgICAgICAgICAgIGIncmVwcj0lLjJWJywgTm9uZSwgYicxMjMnKQorICAgICAgICBjaGVja19mb3JtYXQoInJlcHI9ICAgMTIiLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSU1LjJWJywgTm9uZSwgYicxMjMnKQogCiAgICAgICAgICMgdGVzdCBpbnRlZ2VyIGZvcm1hdHMgKCVpLCAlZCwgJXUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMDNpJywgY19pbnQoMTApKSwgJzAxMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMC40aScsIGNfaW50KDEwKSksICcwMDEwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVpJywgY19pbnQoLTEyMykpLCAnLTEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGknLCBjX2xvbmcoLTEyMykpLCAnLTEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGxpJywgY19sb25nbG9uZygtMTIzKSksICctMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6aScsIGNfc3NpemVfdCgtMTIzKSksICctMTIzJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcwMTAnLAorICAgICAgICAgICAgICAgICAgICAgYiclMDNpJywgY19pbnQoMTApKQorICAgICAgICBjaGVja19mb3JtYXQoJzAwMTAnLAorICAgICAgICAgICAgICAgICAgICAgYiclMC40aScsIGNfaW50KDEwKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCctMTIzJywKKyAgICAgICAgICAgICAgICAgICAgIGInJWknLCBjX2ludCgtMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCctMTIzJywKKyAgICAgICAgICAgICAgICAgICAgIGInJWxpJywgY19sb25nKC0xMjMpKQorICAgICAgICBjaGVja19mb3JtYXQoJy0xMjMnLAorICAgICAgICAgICAgICAgICAgICAgYiclbGxpJywgY19sb25nbG9uZygtMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCctMTIzJywKKyAgICAgICAgICAgICAgICAgICAgIGInJXppJywgY19zc2l6ZV90KC0xMjMpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclZCcsIGNfaW50KC0xMjMpKSwgJy0xMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxkJywgY19sb25nKC0xMjMpKSwgJy0xMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxsZCcsIGNfbG9uZ2xvbmcoLTEyMykpLCAnLTEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclemQnLCBjX3NzaXplX3QoLTEyMykpLCAnLTEyMycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnLTEyMycsCisgICAgICAgICAgICAgICAgICAgICBiJyVkJywgY19pbnQoLTEyMykpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnLTEyMycsCisgICAgICAgICAgICAgICAgICAgICBiJyVsZCcsIGNfbG9uZygtMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCctMTIzJywKKyAgICAgICAgICAgICAgICAgICAgIGInJWxsZCcsIGNfbG9uZ2xvbmcoLTEyMykpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnLTEyMycsCisgICAgICAgICAgICAgICAgICAgICBiJyV6ZCcsIGNfc3NpemVfdCgtMTIzKSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXUnLCBjX3VpbnQoMTIzKSksICcxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWx1JywgY191bG9uZygxMjMpKSwgJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGx1JywgY191bG9uZ2xvbmcoMTIzKSksICcxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXp1JywgY19zaXplX3QoMTIzKSksICcxMjMnKQorICAgICAgICBjaGVja19mb3JtYXQoJzEyMycsCisgICAgICAgICAgICAgICAgICAgICBiJyV1JywgY191aW50KDEyMykpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnMTIzJywKKyAgICAgICAgICAgICAgICAgICAgIGInJWx1JywgY191bG9uZygxMjMpKQorICAgICAgICBjaGVja19mb3JtYXQoJzEyMycsCisgICAgICAgICAgICAgICAgICAgICBiJyVsbHUnLCBjX3Vsb25nbG9uZygxMjMpKQorICAgICAgICBjaGVja19mb3JtYXQoJzEyMycsCisgICAgICAgICAgICAgICAgICAgICBiJyV6dScsIGNfc2l6ZV90KDEyMykpCisKKyAgICAgICAgIyB0ZXN0IGxvbmcgb3V0cHV0CisgICAgICAgIG1pbl9sb25nbG9uZyA9IC0oMiAqKiAoOCAqIHNpemVvZihjX2xvbmdsb25nKSAtIDEpKQorICAgICAgICBtYXhfbG9uZ2xvbmcgPSAtbWluX2xvbmdsb25nIC0gMQorICAgICAgICBjaGVja19mb3JtYXQoc3RyKG1pbl9sb25nbG9uZyksCisgICAgICAgICAgICAgICAgICAgICBiJyVsbGQnLCBjX2xvbmdsb25nKG1pbl9sb25nbG9uZykpCisgICAgICAgIGNoZWNrX2Zvcm1hdChzdHIobWF4X2xvbmdsb25nKSwKKyAgICAgICAgICAgICAgICAgICAgIGInJWxsZCcsIGNfbG9uZ2xvbmcobWF4X2xvbmdsb25nKSkKKyAgICAgICAgbWF4X3Vsb25nbG9uZyA9IDIgKiogKDggKiBzaXplb2YoY191bG9uZ2xvbmcpKSAtIDEKKyAgICAgICAgY2hlY2tfZm9ybWF0KHN0cihtYXhfdWxvbmdsb25nKSwKKyAgICAgICAgICAgICAgICAgICAgIGInJWxsdScsIGNfdWxvbmdsb25nKG1heF91bG9uZ2xvbmcpKQorICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVwJywgY192b2lkX3AoLTEpKQorCisgICAgICAgICMgdGVzdCBwYWRkaW5nICh3aWR0aCBhbmQvb3IgcHJlY2lzaW9uKQorICAgICAgICBjaGVja19mb3JtYXQoJzEyMycucmp1c3QoMTAsICcwJyksCisgICAgICAgICAgICAgICAgICAgICBiJyUwMTBpJywgY19pbnQoMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcxMjMnLnJqdXN0KDEwMCksCisgICAgICAgICAgICAgICAgICAgICBiJyUxMDBpJywgY19pbnQoMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcxMjMnLnJqdXN0KDEwMCwgJzAnKSwKKyAgICAgICAgICAgICAgICAgICAgIGInJS4xMDBpJywgY19pbnQoMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcxMjMnLnJqdXN0KDgwLCAnMCcpLnJqdXN0KDEwMCksCisgICAgICAgICAgICAgICAgICAgICBiJyUxMDAuODBpJywgY19pbnQoMTIzKSkKKworICAgICAgICBjaGVja19mb3JtYXQoJzEyMycucmp1c3QoMTAsICcwJyksCisgICAgICAgICAgICAgICAgICAgICBiJyUwMTB1JywgY191aW50KDEyMykpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnMTIzJy5yanVzdCgxMDApLAorICAgICAgICAgICAgICAgICAgICAgYiclMTAwdScsIGNfdWludCgxMjMpKQorICAgICAgICBjaGVja19mb3JtYXQoJzEyMycucmp1c3QoMTAwLCAnMCcpLAorICAgICAgICAgICAgICAgICAgICAgYiclLjEwMHUnLCBjX3VpbnQoMTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcxMjMnLnJqdXN0KDgwLCAnMCcpLnJqdXN0KDEwMCksCisgICAgICAgICAgICAgICAgICAgICBiJyUxMDAuODB1JywgY191aW50KDEyMykpCisKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcxMjMnLnJqdXN0KDEwLCAnMCcpLAorICAgICAgICAgICAgICAgICAgICAgYiclMDEweCcsIGNfaW50KDB4MTIzKSkKKyAgICAgICAgY2hlY2tfZm9ybWF0KCcxMjMnLnJqdXN0KDEwMCksCisgICAgICAgICAgICAgICAgICAgICBiJyUxMDB4JywgY19pbnQoMHgxMjMpKQorICAgICAgICBjaGVja19mb3JtYXQoJzEyMycucmp1c3QoMTAwLCAnMCcpLAorICAgICAgICAgICAgICAgICAgICAgYiclLjEwMHgnLCBjX2ludCgweDEyMykpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnMTIzJy5yanVzdCg4MCwgJzAnKS5yanVzdCgxMDApLAorICAgICAgICAgICAgICAgICAgICAgYiclMTAwLjgweCcsIGNfaW50KDB4MTIzKSkKIAogICAgICAgICAjIHRlc3QgJUEKLSAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSVBOiVBJywgJ2FiY1x4ZTlcdWFiY2RcVTAwMTBmZmZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCByIiVBOidhYmNceGU5XHVhYmNkXFUwMDEwZmZmZiciKQorICAgICAgICBjaGVja19mb3JtYXQociIlQTonYWJjXHhlOVx1YWJjZFxVMDAxMGZmZmYnIiwKKyAgICAgICAgICAgICAgICAgICAgIGInJSVBOiVBJywgJ2FiY1x4ZTlcdWFiY2RcVTAwMTBmZmZmJykKIAogICAgICAgICAjIHRlc3QgJVYKLSAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGIncmVwcj0lVicsICdhYmMnLCBiJ3h5eicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJ3JlcHI9YWJjJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCdyZXByPWFiYycsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JVYnLCAnYWJjJywgYid4eXonKQogCiAgICAgICAgICMgVGVzdCBzdHJpbmcgZGVjb2RlIGZyb20gcGFyYW1ldGVyIG9mICVzIHVzaW5nIHV0Zi04LgogICAgICAgICAjIGInXHhlNFx4YmFceGJhXHhlNlx4YjBceDkxJyBpcyB1dGYtOCBlbmNvZGVkIGJ5dGUgc2VxdWVuY2Ugb2YKICAgICAgICAgIyAnXHU0ZWJhXHU2YzExJwotICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidyZXByPSVWJywgTm9uZSwgYidceGU0XHhiYVx4YmFceGU2XHhiMFx4OTEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdyZXByPVx1NGViYVx1NmMxMScpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgncmVwcj1cdTRlYmFcdTZjMTEnLAorICAgICAgICAgICAgICAgICAgICAgYidyZXByPSVWJywgTm9uZSwgYidceGU0XHhiYVx4YmFceGU2XHhiMFx4OTEnKQogCiAgICAgICAgICNUZXN0IHJlcGxhY2UgZXJyb3IgaGFuZGxlci4KLSAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGIncmVwcj0lVicsIE5vbmUsIGInYWJjXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJ3JlcHI9YWJjXHVmZmZkJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCdyZXByPWFiY1x1ZmZmZCcsCisgICAgICAgICAgICAgICAgICAgICBiJ3JlcHI9JVYnLCBOb25lLCBiJ2FiY1x4ZmYnKQogCiAgICAgICAgICMgbm90IHN1cHBvcnRlZDogY29weSB0aGUgcmF3IGZvcm1hdCBzdHJpbmcuIHRoZXNlIHRlc3RzIGFyZSBqdXN0IGhlcmUKICAgICAgICAgIyB0byBjaGVjayBmb3IgY3Jhc2hzIGFuZCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYXMgc3BlY2lmaWNhdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUxJXMnLCBiJ2FiYycpLCAnJXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTFhYmMnKSwgJyUxYWJjJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUraScsIGNfaW50KDEwKSksICclK2knKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJS4lcycsIGInYWJjJyksICclLiVzJykKKyAgICAgICAgY2hlY2tfZm9ybWF0KCclcycsCisgICAgICAgICAgICAgICAgICAgICBiJyUxJXMnLCBiJ2FiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnJTFhYmMnLAorICAgICAgICAgICAgICAgICAgICAgYiclMWFiYycpCisgICAgICAgIGNoZWNrX2Zvcm1hdCgnJStpJywKKyAgICAgICAgICAgICAgICAgICAgIGInJStpJywgY19pbnQoMTApKQorICAgICAgICBjaGVja19mb3JtYXQoJyUuJXMnLAorICAgICAgICAgICAgICAgICAgICAgYiclLiVzJywgYidhYmMnKQogCiAgICAgIyBUZXN0IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkKICAgICBkZWYgdGVzdF9hc3dpZGVjaGFyKHNlbGYpOgpAQCAtMjIxMCw2ICsyMzczLDgwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhYmMsIGFiY2RlZikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFiY2RlZi5kZWNvZGUoJ3VuaWNvZGVfaW50ZXJuYWwnKSwgdGV4dCkKIAorICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE3NjE1CisgICAgICAgIE4gPSAxMAorICAgICAgICBhc2NpaSA9ICdhJyAqIE4KKyAgICAgICAgYXNjaWkyID0gJ3onICogTgorICAgICAgICBsYXRpbiA9ICdceDgwJyAqIE4KKyAgICAgICAgbGF0aW4yID0gJ1x4ZmYnICogTgorICAgICAgICBibXAgPSAnXHUwMTAwJyAqIE4KKyAgICAgICAgYm1wMiA9ICdcdWZmZmYnICogTgorICAgICAgICBhc3RyYWwgPSAnXFUwMDEwMDAwMCcgKiBOCisgICAgICAgIGFzdHJhbDIgPSAnXFUwMDEwZmZmZicgKiBOCisgICAgICAgIHN0cmluZ3MgPSAoCisgICAgICAgICAgICBhc2NpaSwgYXNjaWkyLAorICAgICAgICAgICAgbGF0aW4sIGxhdGluMiwKKyAgICAgICAgICAgIGJtcCwgYm1wMiwKKyAgICAgICAgICAgIGFzdHJhbCwgYXN0cmFsMikKKyAgICAgICAgZm9yIHRleHQxLCB0ZXh0MiBpbiBpdGVydG9vbHMuY29tYmluYXRpb25zKHN0cmluZ3MsIDIpOgorICAgICAgICAgICAgZXF1YWwgPSAodGV4dDEgaXMgdGV4dDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQxID09IHRleHQyLCBlcXVhbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dDEgIT0gdGV4dDIsIG5vdCBlcXVhbCkKKworICAgICAgICAgICAgaWYgZXF1YWw6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHQxIDw9IHRleHQyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXh0MSA+PSB0ZXh0MikKKworICAgICAgICAgICAgICAgICMgdGV4dDEgaXMgdGV4dDI6IGR1cGxpY2F0ZSBzdHJpbmdzIHRvIHNraXAgdGhlICJzdHIxID09IHN0cjIiCisgICAgICAgICAgICAgICAgIyBvcHRpbWl6YXRpb24gaW4gdW5pY29kZV9jb21wYXJlX2VxKCkgYW5kIHJlYWxseSBjb21wYXJlCisgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIGNvcHkxID0gZHVwbGljYXRlX3N0cmluZyh0ZXh0MSkKKyAgICAgICAgICAgICAgICBjb3B5MiA9IGR1cGxpY2F0ZV9zdHJpbmcodGV4dDIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjb3B5MSwgY29weTIpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weTEgPT0gY29weTIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb3B5MSAhPSBjb3B5MikKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5MSA8PSBjb3B5MikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weTIgPj0gY29weTIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzY2lpIDwgYXNjaWkyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXNjaWkgPCBsYXRpbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzY2lpIDwgYm1wKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXNjaWkgPCBhc3RyYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXNjaWkgPj0gYXNjaWkyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzY2lpID49IGxhdGluKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzY2lpID49IGJtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc2NpaSA+PSBhc3RyYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsYXRpbiA8IGFzY2lpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGF0aW4gPCBsYXRpbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsYXRpbiA8IGJtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhdGluIDwgYXN0cmFsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGF0aW4gPj0gYXNjaWkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGF0aW4gPj0gbGF0aW4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxhdGluID49IGJtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsYXRpbiA+PSBhc3RyYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShibXAgPCBhc2NpaSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShibXAgPCBsYXRpbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJtcCA8IGJtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShibXAgPCBhc3RyYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShibXAgPj0gYXNjaWkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShibXAgPj0gbGF0aW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm1wID49IGJtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm1wID49IGFzdHJhbCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzdHJhbCA8IGFzY2lpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzdHJhbCA8IGxhdGluKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzdHJhbCA8IGJtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3RyYWwgPCBhc3RyYWwyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN0cmFsID49IGFzY2lpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN0cmFsID49IGxhdGluKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN0cmFsID49IGJtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN0cmFsID49IGFzdHJhbDIpCisKIAogY2xhc3MgU3RyaW5nTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZm9ybWF0dGVyX3BhcnNlcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CmluZGV4IDk5YWEwMDMuLjY3NzUwOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQpAQCAtODAsNyArODAsNyBAQAogY2xhc3MgVW5pY29kZUZ1bmN0aW9uc1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnMTdmZTJmMTJiNzg4ZTRmZmY1NDc5YjQ2OWM0NDA0YmI2ZWNmODQxZicKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2ViZDY0ZTgxNTUzYzljYjM3ZjQyNGY1NjE2MjU0NDk5ZmNkODg0OWUnCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggYTJlYTQ5Ny4uYjRiNTZkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTE2LDYgKzE2LDcgQEAKIGZyb20gYmFzZTY0IGltcG9ydCBiNjRlbmNvZGUKIGltcG9ydCBjb2xsZWN0aW9ucwogCisKIGRlZiBoZXhlc2NhcGUoY2hhcik6CiAgICAgIiIiRXNjYXBlIGNoYXIgYXMgUkZDIDIzOTYgc3BlY2lmaWVzIiIiCiAgICAgaGV4X3JlcHIgPSBoZXgob3JkKGNoYXIpKVsyOl0udXBwZXIoKQpAQCAtMjM4LDcgKzIzOSw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZChiIjEuMSIpCiAKICAgICBkZWYgdGVzdF9yZWFkX2JvZ3VzKHNlbGYpOgotICAgICAgICAjIHVybG9wZW4oKSBzaG91bGQgcmFpc2UgSU9FcnJvciBmb3IgbWFueSBlcnJvciBjb2Rlcy4KKyAgICAgICAgIyB1cmxvcGVuKCkgc2hvdWxkIHJhaXNlIE9TRXJyb3IgZm9yIG1hbnkgZXJyb3IgY29kZXMuCiAgICAgICAgIHNlbGYuZmFrZWh0dHAoYicnJ0hUVFAvMS4xIDQwMSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZAogRGF0ZTogV2VkLCAwMiBKYW4gMjAwOCAwMzowMzo1NCBHTVQKIFNlcnZlcjogQXBhY2hlLzEuMy4zMyAoRGViaWFuIEdOVS9MaW51eCkgbW9kX3NzbC8yLjguMjIgT3BlblNTTC8wLjkuN2UKQEAgLTI0NiwxMiArMjQ3LDEyIEBACiBDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xCiAnJycpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHVybG9wZW4sICJodHRwOi8vcHl0aG9uLm9yZy8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgdXJsb3BlbiwgImh0dHA6Ly9weXRob24ub3JnLyIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnVuZmFrZWh0dHAoKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9yZWRpcmVjdChzZWxmKToKLSAgICAgICAgIyB1cmxvcGVuKCkgc2hvdWxkIHJhaXNlIElPRXJyb3IgZm9yIG1hbnkgZXJyb3IgY29kZXMuCisgICAgICAgICMgdXJsb3BlbigpIHNob3VsZCByYWlzZSBPU0Vycm9yIGZvciBtYW55IGVycm9yIGNvZGVzLgogICAgICAgICBzZWxmLmZha2VodHRwKGInJydIVFRQLzEuMSAzMDIgRm91bmQKIERhdGU6IFdlZCwgMDIgSmFuIDIwMDggMDM6MDM6NTQgR01UCiBTZXJ2ZXI6IEFwYWNoZS8xLjMuMzMgKERlYmlhbiBHTlUvTGludXgpIG1vZF9zc2wvMi44LjIyIE9wZW5TU0wvMC45LjdlCkBAIC0yNjYsMTkgKzI2NywyMCBAQAogICAgICAgICAgICAgc2VsZi51bmZha2VodHRwKCkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3NvY2tldChzZWxmKToKLSAgICAgICAgIyB1cmxvcGVuKCkgcmFpc2VzIElPRXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgc29ja2V0IGRvZXMgbm90IHNlbmQgYW55CisgICAgICAgICMgdXJsb3BlbigpIHJhaXNlcyBPU0Vycm9yIGlmIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBkb2VzIG5vdCBzZW5kIGFueQogICAgICAgICAjIGRhdGEuICgjMTY4MDIzMCkKICAgICAgICAgc2VsZi5mYWtlaHR0cChiJycpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIHVybG9wZW4sICJodHRwOi8vc29tZXRoaW5nIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHVybG9wZW4sICJodHRwOi8vc29tZXRoaW5nIikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYudW5mYWtlaHR0cCgpCiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2xvY2FsZmlsZShzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciAjMTA4MzYKLSAgICAgICAgIyAzLjMgLSBVUkxFcnJvciBpcyBub3QgY2FwdHVyZWQsIGV4cGxpY2l0IElPRXJyb3IgaXMgcmFpc2VkLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgZToKICAgICAgICAgICAgIHVybG9wZW4oJ2ZpbGU6Ly9sb2NhbGhvc3QvYS9maWxlL3doaWNoL2RvZXNub3QvZXhpc3RzLnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLmZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5leGNlcHRpb24ucmVhc29uKQogCiAgICAgZGVmIHRlc3RfZmlsZV9ub3RleGlzdHMoc2VsZik6CiAgICAgICAgIGZkLCB0bXBfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQpAQCAtMjkxLDIwICsyOTMsMjEgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICAgICAgb3MudW5saW5rKHRtcF9maWxlKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHRtcF9maWxlKSkKLSAgICAgICAgIyAzLjMgLSBJT0Vycm9yIGluc3RlYWQgb2YgVVJMRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpOgogICAgICAgICAgICAgdXJsb3Blbih0bXBfZmlsZXVybCkKIAogICAgIGRlZiB0ZXN0X2Z0cF9ub2hvc3Qoc2VsZik6CiAgICAgICAgIHRlc3RfZnRwX3VybCA9ICdmdHA6Ly8vcGF0aCcKLSAgICAgICAgIyAzLjMgLSBJT0Vycm9yIGluc3RlYWQgb2YgVVJMRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICB1cmxvcGVuKHRlc3RfZnRwX3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogICAgIGRlZiB0ZXN0X2Z0cF9ub25leGlzdGluZyhzZWxmKToKLSAgICAgICAgIyAzLjMgLSBJT0Vycm9yIGluc3RlYWQgb2YgVVJMRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICB1cmxvcGVuKCdmdHA6Ly9sb2NhbGhvc3QvYS9maWxlL3doaWNoL2RvZXNub3QvZXhpc3RzLnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogCiAgICAgZGVmIHRlc3RfdXNlcnBhc3NfaW51cmwoc2VsZik6CkBAIC0zNDEsNiArMzQ0LDc5IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIoKQogCitjbGFzcyB1cmxvcGVuX0RhdGFUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB1cmxvcGVuKCkgb3BlbmluZyBhIGRhdGEgVVJMLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIHRleHQgY29udGFpbmluZyBVUkwgc3BlY2lhbC0gYW5kIHVuaWNvZGUtY2hhcmFjdGVycworICAgICAgICBzZWxmLnRleHQgPSAidGVzdCBkYXRhIFVSTHMgOjssJT0mIFx1MDBmNiBcdTAwYzQgIgorICAgICAgICAjIDJ4MSBwaXhlbCBSR0IgUE5HIGltYWdlIHdpdGggb25lIGJsYWNrIGFuZCBvbmUgd2hpdGUgcGl4ZWwKKyAgICAgICAgc2VsZi5pbWFnZSA9ICgKKyAgICAgICAgICAgIGInXHg4OVBOR1xyXG5ceDFhXG5ceDAwXHgwMFx4MDBccklIRFJceDAwXHgwMFx4MDBceDAyXHgwMFx4MDBceDAwJworICAgICAgICAgICAgYidceDAxXHgwOFx4MDJceDAwXHgwMFx4MDB7QFx4ZThceGRkXHgwMFx4MDBceDAwXHgwMXNSR0JceDAwXHhhZScKKyAgICAgICAgICAgIGInXHhjZVx4MWNceGU5XHgwMFx4MDBceDAwXHgwZklEQVRceDA4XHhkN2NgYGBceGY4XHhmZlx4ZmY/XHgwMCcKKyAgICAgICAgICAgIGInXHgwNlx4MDFceDAyXHhmZVxuby9ceDFlXHgwMFx4MDBceDAwXHgwMElFTkRceGFlQmBceDgyJykKKworICAgICAgICBzZWxmLnRleHRfdXJsID0gKAorICAgICAgICAgICAgImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PVVURi04LHRlc3QlMjBkYXRhJTIwVVJMcyUyMCUzQSUzQiUyQyUyNSUzIgorICAgICAgICAgICAgIkQlMjYlMjAlQzMlQjYlMjAlQzMlODQlMjAiKQorICAgICAgICBzZWxmLnRleHRfdXJsX2Jhc2U2NCA9ICgKKyAgICAgICAgICAgICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD1JU08tODg1OS0xO2Jhc2U2NCxkR1Z6ZENCa1lYUmhJRlZTVEhNZ09qcyIKKyAgICAgICAgICAgICJzSlQwbUlQWWd4Q0ElM0QiKQorICAgICAgICAjIGJhc2U2NCBlbmNvZGVkIGRhdGEgVVJMIHRoYXQgY29udGFpbnMgaWdub3JhYmxlIHNwYWNlcywKKyAgICAgICAgIyBzdWNoIGFzICJcbiIsICIgIiwgIiUwQSIsIGFuZCAiJTIwIi4KKyAgICAgICAgc2VsZi5pbWFnZV91cmwgPSAoCisgICAgICAgICAgICAiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBSUFBQUFCQ0FJQUFBQjdcbiIKKyAgICAgICAgICAgICJRT2pkQUFBQUFYTlNSMElBcnM0YzZRQUFBQTlKUkVGVUNOZGolMEFZR0JnJTJCUC8vUHdBR0FRTCUyQkNtOCAiCisgICAgICAgICAgICAidkhnQUFBQUJKUlU1RXJrSmdnZyUzRCUzRCUwQSUyMCIpCisKKyAgICAgICAgc2VsZi50ZXh0X3VybF9yZXNwID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihzZWxmLnRleHRfdXJsKQorICAgICAgICBzZWxmLnRleHRfdXJsX2Jhc2U2NF9yZXNwID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbigKKyAgICAgICAgICAgIHNlbGYudGV4dF91cmxfYmFzZTY0KQorICAgICAgICBzZWxmLmltYWdlX3VybF9yZXNwID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihzZWxmLmltYWdlX3VybCkKKworICAgIGRlZiB0ZXN0X2ludGVyZmFjZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgb2JqZWN0IHJldHVybmVkIGJ5IHVybG9wZW4oKSBoYXMgdGhlIHNwZWNpZmllZCBtZXRob2RzCisgICAgICAgIGZvciBhdHRyIGluICgicmVhZCIsICJyZWFkbGluZSIsICJyZWFkbGluZXMiLAorICAgICAgICAgICAgICAgICAgICAgImNsb3NlIiwgImluZm8iLCAiZ2V0dXJsIiwgImdldGNvZGUiLCAiX19pdGVyX18iKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYudGV4dF91cmxfcmVzcCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5lZCBieSB1cmxvcGVuKCkgbGFja3MgJXMgYXR0cmlidXRlIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cikKKworICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnRleHRfdXJsX3Jlc3AuaW5mbygpLCBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0X3VybF9iYXNlNjRfcmVzcC5pbmZvKCkuZ2V0X3BhcmFtcygpLAorICAgICAgICAgICAgWygndGV4dC9wbGFpbicsICcnKSwgKCdjaGFyc2V0JywgJ0lTTy04ODU5LTEnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pbWFnZV91cmxfcmVzcC5pbmZvKClbJ2NvbnRlbnQtbGVuZ3RoJ10sCisgICAgICAgICAgICBzdHIobGVuKHNlbGYuaW1hZ2UpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmxsaWIucmVxdWVzdC51cmxvcGVuKCJkYXRhOiwiKS5pbmZvKCkuZ2V0X3BhcmFtcygpLAorICAgICAgICAgICAgWygndGV4dC9wbGFpbicsICcnKSwgKCdjaGFyc2V0JywgJ1VTLUFTQ0lJJyldKQorCisgICAgZGVmIHRlc3RfZ2V0dXJsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGV4dF91cmxfcmVzcC5nZXR1cmwoKSwgc2VsZi50ZXh0X3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRleHRfdXJsX2Jhc2U2NF9yZXNwLmdldHVybCgpLAorICAgICAgICAgICAgc2VsZi50ZXh0X3VybF9iYXNlNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pbWFnZV91cmxfcmVzcC5nZXR1cmwoKSwgc2VsZi5pbWFnZV91cmwpCisKKyAgICBkZWYgdGVzdF9yZWFkX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0X3VybF9yZXNwLnJlYWQoKS5kZWNvZGUoCisgICAgICAgICAgICBkaWN0KHNlbGYudGV4dF91cmxfcmVzcC5pbmZvKCkuZ2V0X3BhcmFtcygpKVsnY2hhcnNldCddKSwgc2VsZi50ZXh0KQorCisgICAgZGVmIHRlc3RfcmVhZF90ZXh0X2Jhc2U2NChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRleHRfdXJsX2Jhc2U2NF9yZXNwLnJlYWQoKS5kZWNvZGUoCisgICAgICAgICAgICBkaWN0KHNlbGYudGV4dF91cmxfYmFzZTY0X3Jlc3AuaW5mbygpLmdldF9wYXJhbXMoKSlbJ2NoYXJzZXQnXSksCisgICAgICAgICAgICBzZWxmLnRleHQpCisKKyAgICBkZWYgdGVzdF9yZWFkX2ltYWdlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaW1hZ2VfdXJsX3Jlc3AucmVhZCgpLCBzZWxmLmltYWdlKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19jb21tYShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcix1cmxsaWIucmVxdWVzdC51cmxvcGVuLCdkYXRhOnRleHQvcGxhaW4nKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9iYXNlNjRfZGF0YShzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIHBhZGRpbmcgY2hhcmFjdGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsdXJsbGliLnJlcXVlc3QudXJsb3BlbiwnZGF0YTo7YmFzZTY0LENnPScpCisKIGNsYXNzIHVybHJldHJpZXZlX0ZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxsaWIudXJscmV0cmlldmUoKSBvbiBsb2NhbCBmaWxlcyIiIgogCkBAIC0xMjkxLDYgKzEzNjcsNyBAQAogIyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwLmZ0cC5zb2NrLmdldHRpbWVvdXQoKSwgMzApCiAjICAgICAgICAgZnRwLmNsb3NlKCkKIAorCiBjbGFzcyBSZXF1ZXN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlVuaXQgdGVzdHMgZm9yIHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QuIiIiCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCAzM2Y5MGY0Li5iMzY1OWY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC0xMSw2ICsxMSw3IEBACiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCiAjIHByb3h5IGNvbmZpZyBkYXRhIHN0cnVjdHVyZSBidXQgaXMgdGVzdGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IFJlcXVlc3QsIE9wZW5lckRpcmVjdG9yLCBfcHJveHlfYnlwYXNzX21hY29zeF9zeXNjb25mCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKIGltcG9ydCB1cmxsaWIuZXJyb3IKIAogIyBYWFgKQEAgLTExOCw2ICsxMTksMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVxLmdldF9oZWFkZXIoIk5vdC10aGVyZSIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJOb3QtdGhlcmUiLCAiZGVmYXVsdCIpLCAiZGVmYXVsdCIpCiAKKyAgICAgICAgcmVxLnJlbW92ZV9oZWFkZXIoIlNwYW0tZWdncyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLmhhc19oZWFkZXIoIlNwYW0tZWdncyIpKQorCisgICAgICAgIHJlcS5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigiVW5yZWRpcmVjdGVkLXNwYW0iLCAiRWdncyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXEuaGFzX2hlYWRlcigiVW5yZWRpcmVjdGVkLXNwYW0iKSkKKworICAgICAgICByZXEucmVtb3ZlX2hlYWRlcigiVW5yZWRpcmVjdGVkLXNwYW0iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5oYXNfaGVhZGVyKCJVbnJlZGlyZWN0ZWQtc3BhbSIpKQorCiAKICAgICBkZWYgdGVzdF9wYXNzd29yZF9tYW5hZ2VyKHNlbGYpOgogICAgICAgICBtZ3IgPSB1cmxsaWIucmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3IoKQpAQCAtMjgzLDYgKzI5Myw3IEBACiAgICAgICAgIHNlbGYucmVxX2hlYWRlcnMgPSBbXQogICAgICAgICBzZWxmLmRhdGEgPSBOb25lCiAgICAgICAgIHNlbGYucmFpc2Vfb25fZW5kaGVhZGVycyA9IEZhbHNlCisgICAgICAgIHNlbGYuc29jayA9IE5vbmUKICAgICAgICAgc2VsZi5fdHVubmVsX2hlYWRlcnMgPSB7fQogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGhvc3QsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKQEAgLTMxMCw4ICszMjEsNyBAQAogICAgICAgICBpZiBib2R5OgogICAgICAgICAgICAgc2VsZi5kYXRhID0gYm9keQogICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2VuZGhlYWRlcnM6Ci0gICAgICAgICAgICBpbXBvcnQgc29ja2V0Ci0gICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IoKQorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCiAgICAgZGVmIGdldHJlc3BvbnNlKHNlbGYpOgogICAgICAgICByZXR1cm4gTW9ja0hUVFBSZXNwb25zZShNb2NrRmlsZSgpLCB7fSwgMjAwLCAiT0siKQogCkBAIC01OTYsMjcgKzYwNiw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgTm9uZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMV0sIE1vY2tSZXNwb25zZSkpCiAKLSAgICBkZWYgdGVzdF9tZXRob2RfZGVwcmVjYXRpb25zKHNlbGYpOgotICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHJlcS5hZGRfZGF0YSgiZGF0YSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgcmVxLmdldF9kYXRhKCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICByZXEuaGFzX2RhdGEoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHJlcS5nZXRfaG9zdCgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgcmVxLmdldF9zZWxlY3RvcigpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgcmVxLmlzX3VudmVyaWZpYWJsZSgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgcmVxLmdldF9vcmlnaW5fcmVxX2hvc3QoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHJlcS5nZXRfdHlwZSgpCi0KLQogZGVmIHNhbmVwYXRobmFtZTJ1cmwocGF0aCk6CiAgICAgdHJ5OgogICAgICAgICBwYXRoLmVuY29kZSgidXRmLTgiKQpAQCAtODExLDcgKzgwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkZvbyIsICJiYXIiKSwgKCJTcGFtIiwgImVnZ3MiKV0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGh0dHAuZGF0YSwgZGF0YSkKIAotICAgICAgICAjIGNoZWNrIHNvY2tldC5lcnJvciBjb252ZXJ0ZWQgdG8gVVJMRXJyb3IKKyAgICAgICAgIyBjaGVjayBPU0Vycm9yIGNvbnZlcnRlZCB0byBVUkxFcnJvcgogICAgICAgICBodHRwLnJhaXNlX29uX2VuZGhlYWRlcnMgPSBUcnVlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvciwgaC5kb19vcGVuLCBodHRwLCByZXEpCiAKQEAgLTkxNiw2ICs5MDUsMzYgQEAKICAgICAgICAgICAgIHBfZHNfcmVxID0gaC5kb19yZXF1ZXN0Xyhkc19yZXEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sImV4YW1wbGUuY29tIikKIAorICAgIGRlZiB0ZXN0X2Z1bGxfdXJsX3NldHRlcihzZWxmKToKKyAgICAgICAgIyBDaGVja3MgdG8gZW5zdXJlIHRoYXQgY29tcG9uZW50cyBhcmUgc2V0IGNvcnJlY3RseSBhZnRlciBzZXR0aW5nIHRoZQorICAgICAgICAjIGZ1bGxfdXJsIG9mIGEgUmVxdWVzdCBvYmplY3QKKworICAgICAgICB1cmxzID0gWworICAgICAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbT9mb289YmFyI2JheicsCisgICAgICAgICAgICAnaHR0cDovL2V4YW1wbGUuY29tP2Zvbz1iYXImc3BhbT1lZ2dzI2Jhc2gnLAorICAgICAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgIF0KKworICAgICAgICAjIHRlc3RpbmcgYSByZXVzYWJsZSByZXF1ZXN0IGluc3RhbmNlLCBidXQgdGhlIHVybCBwYXJhbWV0ZXIgaXMKKyAgICAgICAgIyByZXF1aXJlZCwgc28ganVzdCB1c2UgYSBkdW1teSBvbmUgdG8gaW5zdGFudGlhdGUKKyAgICAgICAgciA9IFJlcXVlc3QoJ2h0dHA6Ly9leGFtcGxlLmNvbScpCisgICAgICAgIGZvciB1cmwgaW4gdXJsczoKKyAgICAgICAgICAgIHIuZnVsbF91cmwgPSB1cmwKKyAgICAgICAgICAgIHBhcnNlZCA9IHVybHBhcnNlKHVybCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLmdldF9mdWxsX3VybCgpLCB1cmwpCisgICAgICAgICAgICAjIGZ1bGxfdXJsIHNldHRlciB1c2VzIHNwbGl0dGFnIHRvIHNwbGl0IGludG8gY29tcG9uZW50cy4KKyAgICAgICAgICAgICMgc3BsaXR0YWcgc2V0cyB0aGUgZnJhZ21lbnQgYXMgTm9uZSB3aGlsZSB1cmxwYXJzZSBzZXRzIGl0IHRvICcnCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuZnJhZ21lbnQgb3IgJycsIHBhcnNlZC5mcmFnbWVudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJscGFyc2Uoci5nZXRfZnVsbF91cmwoKSkucXVlcnksIHBhcnNlZC5xdWVyeSkKKworICAgIGRlZiB0ZXN0X2Z1bGxfdXJsX2RlbGV0ZXIoc2VsZik6CisgICAgICAgIHIgPSBSZXF1ZXN0KCdodHRwOi8vd3d3LmV4YW1wbGUuY29tJykKKyAgICAgICAgZGVsIHIuZnVsbF91cmwKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoci5mdWxsX3VybCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoci5mcmFnbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnNlbGVjdG9yLCAnJykKKwogICAgIGRlZiB0ZXN0X2ZpeHBhdGhfaW5fd2VpcmR1cmxzKHNlbGYpOgogICAgICAgICAjIElzc3VlNDQ5MzogdXJsbGliMiB0byBzdXBwbHkgJy8nIHdoZW4gdG8gdXJscyB3aGVyZSBwYXRoIGRvZXMgbm90CiAgICAgICAgICMgc3RhcnQgd2l0aCcvJwpAQCAtMTQxNSw2ICsxNDM0LDIxIEBACiAgICAgICAgIHNlbGYub3BlbmVyX2hhc19oYW5kbGVyKG8sIE15SFRUUEhhbmRsZXIpCiAgICAgICAgIHNlbGYub3BlbmVyX2hhc19oYW5kbGVyKG8sIE15T3RoZXJIVFRQSGFuZGxlcikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHJlcXVpcmVzIG5ldHdvcmsgYWNjZXNzJykKKyAgICBkZWYgdGVzdF9pc3N1ZTE2NDY0KHNlbGYpOgorICAgICAgICBvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoKQorICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnL35qZXJlbXkvIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXF1ZXN0LmRhdGEpCisKKyAgICAgICAgb3BlbmVyLm9wZW4ocmVxdWVzdCwgIjEiLmVuY29kZSgidXMtYXNjaWkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIjEiLCByZXF1ZXN0LmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjEiLCByZXF1ZXN0LmdldF9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikpCisKKyAgICAgICAgb3BlbmVyLm9wZW4ocmVxdWVzdCwgIjEyMzQ1Njc4OTAiLmVuY29kZSgidXMtYXNjaWkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIjEyMzQ1Njc4OTAiLCByZXF1ZXN0LmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjEwIiwgcmVxdWVzdC5nZXRfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKQorCiAgICAgZGVmIHRlc3RfSFRUUEVycm9yX2ludGVyZmFjZShzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIElzc3VlIDEzMjExIHJldmVhbHMgdGhhdCBIVFRQRXJyb3IgZGlkbid0IGltcGxlbWVudCB0aGUgVVJMRXJyb3IKQEAgLTE0MjYsMTIgKzE0NjAsMTEgQEAKICAgICAgICAgZXJyID0gdXJsbGliLmVycm9yLkhUVFBFcnJvcih1cmwsIGNvZGUsIG1zZywgaGRycywgZnApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVyciwgJ3JlYXNvbicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5yZWFzb24sICdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZXJyLCAnaGRycycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5oZHJzLCAnQ29udGVudC1MZW5ndGg6IDQyJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZXJyLCAnaGVhZGVycycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5oZWFkZXJzLCAnQ29udGVudC1MZW5ndGg6IDQyJykKICAgICAgICAgZXhwZWN0ZWRfZXJybXNnID0gJ0hUVFAgRXJyb3IgJXM6ICVzJyAlIChlcnIuY29kZSwgZXJyLm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwgZXhwZWN0ZWRfZXJybXNnKQogCi0KIGNsYXNzIFJlcXVlc3RUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xNDUxLDYgKzE0ODQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0LmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlBPU1QiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCiAKKyAgICAjIGlzc3VlIDE2NDY0CisgICAgIyBpZiB3ZSBjaGFuZ2UgZGF0YSB3ZSBuZWVkIHRvIHJlbW92ZSBjb250ZW50LWxlbmd0aCBoZWFkZXIKKyAgICAjIChjYXVzZSBpdCdzIG1vc3QgcHJvYmFibHkgY2FsY3VsYXRlZCBmb3IgcHJldmlvdXMgdmFsdWUpCisgICAgZGVmIHRlc3Rfc2V0dGluZ19kYXRhX3Nob3VsZF9yZW1vdmVfY29udGVudF9sZW5ndGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkNvbnRlbnQtbGVuZ3RoIiwgc2VsZi5nZXQudW5yZWRpcmVjdGVkX2hkcnMpCisgICAgICAgIHNlbGYuZ2V0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyLCBzZWxmLmdldC51bnJlZGlyZWN0ZWRfaGRyc1siQ29udGVudC1sZW5ndGgiXSkKKyAgICAgICAgc2VsZi5nZXQuZGF0YSA9ICJzcGFtIgorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJDb250ZW50LWxlbmd0aCIsIHNlbGYuZ2V0LnVucmVkaXJlY3RlZF9oZHJzKQorCisgICAgIyBpc3N1ZSAxNzQ4NSBzYW1lIGZvciBkZWxldGluZyBkYXRhLgorICAgIGRlZiB0ZXN0X2RlbGV0aW5nX2RhdGFfc2hvdWxkX3JlbW92ZV9jb250ZW50X2xlbmd0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29udGVudC1sZW5ndGgiLCBzZWxmLmdldC51bnJlZGlyZWN0ZWRfaGRycykKKyAgICAgICAgc2VsZi5nZXQuZGF0YSA9ICdmb28nCisgICAgICAgIHNlbGYuZ2V0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgc2VsZi5nZXQudW5yZWRpcmVjdGVkX2hkcnNbIkNvbnRlbnQtbGVuZ3RoIl0pCisgICAgICAgIGRlbCBzZWxmLmdldC5kYXRhCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkNvbnRlbnQtbGVuZ3RoIiwgc2VsZi5nZXQudW5yZWRpcmVjdGVkX2hkcnMpCisKICAgICBkZWYgdGVzdF9nZXRfZnVsbF91cmwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0dHA6Ly93d3cucHl0aG9uLm9yZy9+amVyZW15LyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXQuZ2V0X2Z1bGxfdXJsKCkpCkBAIC0xNDkyLDIxICsxNTQ0LDEzIEBACiAgICAgICAgIHJlcSA9IFJlcXVlc3QodXJsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfZnVsbF91cmwoKSwgdXJsKQogCi0gICAgZGVmIHRlc3RfSFRUUEVycm9yX2ludGVyZmFjZV9jYWxsKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgSXNzdWUgMTU3MDEgLSBIVFRQRXJyb3IgaW50ZXJmYWNlIGhhcyBpbmZvIG1ldGhvZCBhdmFpbGFibGUgZnJvbSBVUkxFcnJvcgotICAgICAgICAiIiIKLSAgICAgICAgZXJyID0gdXJsbGliLnJlcXVlc3QuSFRUUEVycm9yKG1zZz0ic29tZXRoaW5nIGJhZCBoYXBwZW5lZCIsIHVybD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlPU5vbmUsIGhkcnM9J0NvbnRlbnQtTGVuZ3RoOjQyJywgZnA9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZXJyLCAncmVhc29uJykpCi0gICAgICAgIGFzc2VydCBoYXNhdHRyKGVyciwgJ3JlYXNvbicpCi0gICAgICAgIGFzc2VydCBoYXNhdHRyKGVyciwgJ2luZm8nKQotICAgICAgICBhc3NlcnQgY2FsbGFibGUoZXJyLmluZm8pCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGVyci5pbmZvKCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdlcnIuaW5mbyBjYWxsIGZhaWxlZC4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5pbmZvKCksICJDb250ZW50LUxlbmd0aDo0MiIpCisgICAgZGVmIHRlc3RfdXJsX2Z1bGx1cmxfZ2V0X2Z1bGxfdXJsKHNlbGYpOgorICAgICAgICB1cmxzID0gWydodHRwOi8vZG9jcy5weXRob24ub3JnJywKKyAgICAgICAgICAgICAgICAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3VybGxpYjIuaHRtbCNPSycsCisgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy8/cXM9cXVlcnkjZnJhZ21lbnQ9dHJ1ZScgXQorICAgICAgICBmb3IgdXJsIGluIHVybHM6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KHVybCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9mdWxsX3VybCgpLCByZXEuZnVsbF91cmwpCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdXJsbGliMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CmluZGV4IGIxYWExNTguLjA4MjUwYzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKQEAgLTksNyArOSwxMCBAQAogaW1wb3J0IGhhc2hsaWIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogdGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQotCit0cnk6CisgICAgaW1wb3J0IHNzbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHNzbCA9IE5vbmUKIAogaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKICMgU2VsZi1zaWduZWQgY2VydCBmaWxlIGZvciAnbG9jYWxob3N0JwpAQCAtMTcsNiArMjAsNyBAQAogIyBTZWxmLXNpZ25lZCBjZXJ0IGZpbGUgZm9yICdmYWtlaG9zdG5hbWUnCiBDRVJUX2Zha2Vob3N0bmFtZSA9IG9zLnBhdGguam9pbihoZXJlLCAna2V5Y2VydDIucGVtJykKIAorCiAjIExvb3BiYWNrIGh0dHAgc2VydmVyIGluZnJhc3RydWN0dXJlCiAKIGNsYXNzIExvb3BiYWNrSHR0cFNlcnZlcihodHRwLnNlcnZlci5IVFRQU2VydmVyKToKQEAgLTM1MywxMiArMzU3LDE1IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcihUZXN0VXJsb3Blbiwgc2VsZikuc2V0VXAoKQogICAgICAgICAjIElnbm9yZSBwcm94aWVzIGZvciBsb2NhbGhvc3QgdGVzdHMuCisgICAgICAgIHNlbGYub2xkX2Vudmlyb24gPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBvcy5lbnZpcm9uWydOT19QUk9YWSddID0gJyonCiAgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnNlcnZlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2VsZi5vbGRfZW52aXJvbikKICAgICAgICAgc3VwZXIoVGVzdFVybG9wZW4sIHNlbGYpLnRlYXJEb3duKCkKIAogICAgIGRlZiB1cmxvcGVuKHNlbGYsIHVybCwgZGF0YT1Ob25lLCAqKmt3YXJncyk6CkBAIC0zODYsMTQgKzM5MywxNCBAQAogICAgICAgICBoYW5kbGVyLnBvcnQgPSBwb3J0CiAgICAgICAgIHJldHVybiBoYW5kbGVyCiAKLSAgICBkZWYgc3RhcnRfaHR0cHNfc2VydmVyKHNlbGYsIHJlc3BvbnNlcz1Ob25lLCBjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCk6CisgICAgZGVmIHN0YXJ0X2h0dHBzX3NlcnZlcihzZWxmLCByZXNwb25zZXM9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgaGFzYXR0cih1cmxsaWIucmVxdWVzdCwgJ0hUVFBTSGFuZGxlcicpOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnc3NsIHN1cHBvcnQgcmVxdWlyZWQnKQogICAgICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCiAgICAgICAgIGlmIHJlc3BvbnNlcyBpcyBOb25lOgogICAgICAgICAgICAgcmVzcG9uc2VzID0gWygyMDAsIFtdLCBiIndlIGNhcmUgYSBiaXQiKV0KICAgICAgICAgaGFuZGxlciA9IEdldFJlcXVlc3RIYW5kbGVyKHJlc3BvbnNlcykKLSAgICAgICAgc2VydmVyID0gbWFrZV9odHRwc19zZXJ2ZXIoc2VsZiwgY2VydGZpbGU9Y2VydGZpbGUsIGhhbmRsZXJfY2xhc3M9aGFuZGxlcikKKyAgICAgICAgc2VydmVyID0gbWFrZV9odHRwc19zZXJ2ZXIoc2VsZiwgaGFuZGxlcl9jbGFzcz1oYW5kbGVyLCAqKmt3YXJncykKICAgICAgICAgaGFuZGxlci5wb3J0ID0gc2VydmVyLnBvcnQKICAgICAgICAgcmV0dXJuIGhhbmRsZXIKIApAQCAtNDgzLDYgKzQ5MCwyMSBAQAogICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKIAorICAgIGRlZiB0ZXN0X2h0dHBzX3NuaShzZWxmKToKKyAgICAgICAgaWYgc3NsIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzc2wgbW9kdWxlIHJlcXVpcmVkIikKKyAgICAgICAgaWYgbm90IHNzbC5IQVNfU05JOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU05JIHN1cHBvcnQgcmVxdWlyZWQgaW4gT3BlblNTTCIpCisgICAgICAgIHNuaV9uYW1lID0gTm9uZQorICAgICAgICBkZWYgY2Jfc25pKHNzbF9zb2NrLCBzZXJ2ZXJfbmFtZSwgaW5pdGlhbF9jb250ZXh0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIHNuaV9uYW1lCisgICAgICAgICAgICBzbmlfbmFtZSA9IHNlcnZlcl9uYW1lCisgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGNvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soY2Jfc25pKQorICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY29udGV4dD1jb250ZXh0LCBjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKKyAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25pX25hbWUsICJsb2NhbGhvc3QiKQorCiAgICAgZGVmIHRlc3Rfc2VuZGluZ19oZWFkZXJzKHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoKQogICAgICAgICByZXEgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KCJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBoYW5kbGVyLnBvcnQsCkBAIC01MjksNyArNTUxLDcgQEAKICAgICAgICAgIyBzbyB3ZSBydW4gdGhlIHRlc3Qgb25seSB3aGVuIC11bmV0d29yay8tdWFsbCBpcyBzcGVjaWZpZWQgdG8KICAgICAgICAgIyBtaXRpZ2F0ZSB0aGUgcHJvYmxlbSBhIGJpdCAoc2VlICMxNzU2NCkKICAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2l2ZW4gdGhhdCBib3RoIFZlcmlTaWduIGFuZCB2YXJpb3VzIElTUHMgaGF2ZSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBwYXN0IG9yIGFyZSBwcmVzZW50bHkgaGlqYWNraW5nIHZhcmlvdXMgaW52YWxpZAogICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRvbWFpbiBuYW1lIHJlcXVlc3RzIGluIGFuIGF0dGVtcHQgdG8gYm9vc3QgdHJhZmZpYwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CmluZGV4IDdmM2M5M2EuLmZiYTNjZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKQEAgLTE2NCw2ICsxNjQsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLmdldHVybCgpLAogICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2RvY3MucHl0aG9uLm9yZy8yL2dsb3NzYXJ5Lmh0bWwjZ2xvc3NhcnkiKQogCisgICAgZGVmIHRlc3RfcmVkaXJlY3RfdXJsX3dpdGhmcmFnKHNlbGYpOgorICAgICAgICByZWRpcmVjdF91cmxfd2l0aF9mcmFnID0gImh0dHA6Ly9iaXRseS5jb20vdXJsbGlicmVkaXJlY3R0ZXN0IgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlZGlyZWN0X3VybF93aXRoX2ZyYWcpOgorICAgICAgICAgICAgcmVxID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdChyZWRpcmVjdF91cmxfd2l0aF9mcmFnKQorICAgICAgICAgICAgcmVzID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5nZXR1cmwoKSwKKyAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy40L2dsb3NzYXJ5Lmh0bWwjdGVybS1nbG9iYWwtaW50ZXJwcmV0ZXItbG9jayIpCisKICAgICBkZWYgdGVzdF9jdXN0b21faGVhZGVycyhzZWxmKToKICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQodXJsKToKQEAgLTIxNiw3ICsyMjQsNyBAQAogICAgICAgICAgICAgICAgIGRlYnVnKHVybCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGYgPSB1cmxvcGVuKHVybCwgcmVxLCBUSU1FT1VUKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIGRlYnVnKGVycikKICAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfZXJyOgogICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gKCJEaWRuJ3QgZ2V0IGV4cGVjdGVkIGVycm9yKHMpICVzIGZvciAlcyAlcywgZ290ICVzOiAlcyIgJQpAQCAtMzMwLDM1ICszMzgsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LmZwLmZwLnJhdy5fc29jay5nZXR0aW1lb3V0KCksIDYwKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgInJlcXVpcmVzIFNTTCBzdXBwb3J0IikKLWNsYXNzIEhUVFBTVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3Rfc25pKHNlbGYpOgotICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IGRpc2FibGVkIC0gdGVzdCBzZXJ2ZXIgbmVlZGVkIikKLSAgICAgICAgIyBDaGVja3MgdGhhdCBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uIHdvcmtzLCBpZiBzdXBwb3J0ZWQgYnkgdGhlCi0gICAgICAgICMgT3BlblNTTCBsaW5rZWQgdG8uCi0gICAgICAgICMgVGhlIHNzbCBtb2R1bGUgaXRzZWxmIGRvZXNuJ3QgaGF2ZSBzZXJ2ZXItc2lkZSBzdXBwb3J0IGZvciBTTkksCi0gICAgICAgICMgc28gd2UgcmVseSBvbiBhIHRoaXJkLXBhcnR5IHRlc3Qgc2l0ZS4KLSAgICAgICAgZXhwZWN0X3NuaSA9IHNzbC5IQVNfU05JCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoIlhYWCIpOgotICAgICAgICAgICAgdSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oIlhYWCIpCi0gICAgICAgICAgICBjb250ZW50cyA9IHUucmVhZGFsbCgpCi0gICAgICAgICAgICBpZiBleHBlY3Rfc25pOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJHcmVhdCIsIGNvbnRlbnRzKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYiJVbmZvcnR1bmF0ZWx5IiwgY29udGVudHMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYiJHcmVhdCIsIGNvbnRlbnRzKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJVbmZvcnR1bmF0ZWx5IiwgY29udGVudHMpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucmVxdWlyZXMoIm5ldHdvcmsiKQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEF1dGhUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQU1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyTmV0d29ya1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIENsb3NlU29ja2V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICBzdXBwb3J0LnJlcXVpcmVzKCJuZXR3b3JrIikKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKaW5kZXggMjBlZmNhNi4uYjY4ODhmMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKQEAgLTEyNCwxNiArMTI0LDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyB3aXRoIHNvbWUgb3ZlcnplYWxvdXMgRE5TIHByb3ZpZGVycyBzdWNoIGFzIE9wZW5ETlMKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIiVyIHNob3VsZCBub3QgcmVzb2x2ZSBmb3IgdGVzdCB0byB3b3JrIiAlIGJvZ3VzX2RvbWFpbikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTRiBwYXRjaCA4MDk5MTU6ICBJbiBTZXAgMjAwMywgVmVyaVNpZ24gc3RhcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAjIGhpZ2hqYWNraW5nIGludmFsaWQgLmNvbSBhbmQgLm5ldCBhZGRyZXNzZXMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBib29zdCB0cmFmZmljIHRvIHRoZWlyIG93biBzaXRlLiAgVGhpcyB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RhcnRlZCBmYWlsaW5nIHRoZW4uICBPbmUgaG9wZXMgdGhlIC5pbnZhbGlkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9tYWluIHdpbGwgYmUgc3BhcmVkIHRvIHNlcnZlIGl0cyBkZWZpbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICMgcHVycG9zZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1cmxsaWIudXJsb3BlbiwgImh0dHA6Ly93d3cuc2FkZmxranNhc2FkZi5jb20vIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9zYWRmbGtqc2FzZi5pLm52YWxpLmQvIikKKyAgICAgICAgZmFpbHVyZV9leHBsYW5hdGlvbiA9ICgnb3BlbmluZyBhbiBpbnZhbGlkIFVSTCBkaWQgbm90IHJhaXNlIE9TRXJyb3I7ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FuIGJlIGNhdXNlZCBieSBhIGJyb2tlbiBETlMgc2VydmVyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGUuZy4gcmV0dXJucyA0MDQgb3IgaGlqYWNrcyBwYWdlKScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbXNnPWZhaWx1cmVfZXhwbGFuYXRpb24pOgorICAgICAgICAgICAgIyBTRiBwYXRjaCA4MDk5MTU6ICBJbiBTZXAgMjAwMywgVmVyaVNpZ24gc3RhcnRlZCBoaWdoamFja2luZworICAgICAgICAgICAgIyBpbnZhbGlkIC5jb20gYW5kIC5uZXQgYWRkcmVzc2VzIHRvIGJvb3N0IHRyYWZmaWMgdG8gdGhlaXIgb3duCisgICAgICAgICAgICAjIHNpdGUuICBUaGlzIHRlc3Qgc3RhcnRlZCBmYWlsaW5nIHRoZW4uICBPbmUgaG9wZXMgdGhlIC5pbnZhbGlkCisgICAgICAgICAgICAjIGRvbWFpbiB3aWxsIGJlIHNwYXJlZCB0byBzZXJ2ZSBpdHMgZGVmaW5lZCBwdXJwb3NlLgorICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigiaHR0cDovL3NhZGZsa2pzYXNmLmkubnZhbGkuZC8iKQogCiAKIGNsYXNzIHVybHJldHJpZXZlTmV0d29ya1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CmluZGV4IDM3OGE0MjcuLmM5MzhmMDkgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQpAQCAtODQ3LDYgKzg0NywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAxLnBhdGgsICc4NjMtMTIzNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEucGFyYW1zLCAncGhvbmUtY29udGV4dD0rMS05MTQtNTU1JykKIAorICAgIGRlZiB0ZXN0X3Vud3JhcChzZWxmKToKKyAgICAgICAgdXJsID0gdXJsbGliLnBhcnNlLnVud3JhcCgnPFVSTDp0eXBlOi8vaG9zdC9wYXRoPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJsLCAndHlwZTovL2hvc3QvcGF0aCcpCisKKyAgICBkZWYgdGVzdF9RdW90ZXJfcmVwcihzZWxmKToKKyAgICAgICAgcXVvdGVyID0gdXJsbGliLnBhcnNlLlF1b3Rlcih1cmxsaWIucGFyc2UuX0FMV0FZU19TQUZFKQorICAgICAgICBzZWxmLmFzc2VydEluKCdRdW90ZXInLCByZXByKHF1b3RlcikpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFVybFBhcnNlVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKaW5kZXggMGZhZTg4Yi4uZGJiZTE1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpAQCAtMTA5LDEzICsxMDksNjggQEAKICAgICAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBleHBlY3RlZC5lbmNvZGUoKSkKIAorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBFTlZfU1VCRElSUyA9ICgKKyAgICAgICAgICAgICgnU2NyaXB0cycsKSwKKyAgICAgICAgICAgICgnSW5jbHVkZScsKSwKKyAgICAgICAgICAgICgnTGliJywpLAorICAgICAgICAgICAgKCdMaWInLCAnc2l0ZS1wYWNrYWdlcycpLAorICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgRU5WX1NVQkRJUlMgPSAoCisgICAgICAgICAgICAoJ2JpbicsKSwKKyAgICAgICAgICAgICgnaW5jbHVkZScsKSwKKyAgICAgICAgICAgICgnbGliJywpLAorICAgICAgICAgICAgKCdsaWInLCAncHl0aG9uJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pLAorICAgICAgICAgICAgKCdsaWInLCAncHl0aG9uJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sICdzaXRlLXBhY2thZ2VzJyksCisgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfY29udGVudHMoc2VsZiwgcGF0aHMsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBzb21lIGZpbGVzIGluIHRoZSBlbnZpcm9ubWVudCB3aGljaCBhcmUgdW5yZWxhdGVkCisgICAgICAgIHRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICAgICAiIiIKKyAgICAgICAgZm9yIHN1YmRpcnMgaW4gcGF0aHM6CisgICAgICAgICAgICBkID0gb3MucGF0aC5qb2luKHNlbGYuZW52X2RpciwgKnN1YmRpcnMpCisgICAgICAgICAgICBvcy5ta2RpcihkKQorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oZCwgZmlsZW5hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICd3YicpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShiJ1N0aWxsIGhlcmU/JykKKwogICAgIGRlZiB0ZXN0X292ZXJ3cml0ZV9leGlzdGluZyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY29udHJvbCBvZiBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBlbnZpcm9ubWVudCBkaXJlY3RvcnkuCisgICAgICAgIFRlc3QgY3JlYXRpbmcgZW52aXJvbm1lbnQgaW4gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5jcmVhdGVfY29udGVudHMoc2VsZi5FTlZfU1VCRElSUywgJ2ZvbycpCisgICAgICAgIHZlbnYuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgZm9yIHN1YmRpcnMgaW4gc2VsZi5FTlZfU1VCRElSUzoKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHNlbGYuZW52X2RpciwgKihzdWJkaXJzICsgKCdmb28nLCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiJ1N0aWxsIGhlcmU/JykKKwogICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUpCiAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgZm9yIHN1YmRpcnMgaW4gc2VsZi5FTlZfU1VCRElSUzoKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHNlbGYuZW52X2RpciwgKihzdWJkaXJzICsgKCdmb28nLCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmbikpCisKKyAgICBkZWYgY2xlYXJfZGlyZWN0b3J5KHNlbGYsIHBhdGgpOgorICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcihwYXRoKToKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHBhdGgsIGZuKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZm4pIG9yIG9zLnBhdGguaXNmaWxlKGZuKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZm4pCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZm4pCisKKyAgICBkZWYgdGVzdF91bm92ZXJ3cml0YWJsZV9mYWlscyhzZWxmKToKKyAgICAgICAgI2NyZWF0ZSBhIGZpbGUgY2xhc2hpbmcgd2l0aCBkaXJlY3RvcmllcyBpbiB0aGUgZW52IGRpcgorICAgICAgICBmb3IgcGF0aHMgaW4gc2VsZi5FTlZfU1VCRElSU1s6M106CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihzZWxmLmVudl9kaXIsICpwYXRocykKKyAgICAgICAgICAgIHdpdGggb3BlbihmbiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKGInJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPU0Vycm9yKSwgdmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgICAgIHNlbGYuY2xlYXJfZGlyZWN0b3J5KHNlbGYuZW52X2RpcikKIAogICAgIGRlZiB0ZXN0X3VwZ3JhZGUoc2VsZik6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YWl0My5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKaW5kZXggYmQwNmM4ZC4uZjZhMDY1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YWl0My5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CkBAIC03LDE1ICs3LDExIEBACiBmcm9tIHRlc3QuZm9ya193YWl0IGltcG9ydCBGb3JrV2FpdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVhcF9jaGlsZHJlbgogCi10cnk6Ci0gICAgb3MuZm9yawotZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvcy5mb3JrIG5vdCBkZWZpbmVkIC0tIHNraXBwaW5nIHRlc3Rfd2FpdDMiKQoraWYgbm90IGhhc2F0dHIob3MsICdmb3JrJyk6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm9zLmZvcmsgbm90IGRlZmluZWQiKQogCi10cnk6Ci0gICAgb3Mud2FpdDMKLWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib3Mud2FpdDMgbm90IGRlZmluZWQgLS0gc2tpcHBpbmcgdGVzdF93YWl0MyIpCitpZiBub3QgaGFzYXR0cihvcywgJ3dhaXQzJyk6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm9zLndhaXQzIG5vdCBkZWZpbmVkIikKIAogY2xhc3MgV2FpdDNUZXN0KEZvcmtXYWl0KToKICAgICBkZWYgd2FpdF9pbXBsKHNlbGYsIGNwaWQpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5IGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CmluZGV4IGUwYWFjZTQuLmI3MGY5MTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKQEAgLTEsNyArMSw1IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKLWltcG9ydCBvcworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rCiBpbXBvcnQgd2F2ZQotaW1wb3J0IHN0cnVjdAogaW1wb3J0IHVuaXR0ZXN0CiAKIG5jaGFubmVscyA9IDIKQEAgLTE3LDEwICsxNSw3IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoVEVTVEZOKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdW5saW5rKFRFU1RGTikKIAogICAgIGRlZiB0ZXN0X2l0KHNlbGYsIHRlc3Rfcm91bmRpbmc9RmFsc2UpOgogICAgICAgICBzZWxmLmYgPSB3YXZlLm9wZW4oVEVTVEZOLCAnd2InKQpAQCAtNTgsOSArNTMsNjUgQEAKICAgICAgICAgb3V0cHV0ID0gYidcMCcgKiBuZnJhbWVzICogbmNoYW5uZWxzICogc2FtcHdpZHRoCiAgICAgICAgIHNlbGYuZi53cml0ZWZyYW1lcyhvdXRwdXQpCiAKKyAgICBkZWYgdGVzdF9nZXRwYXJhbXMoc2VsZik6CisgICAgICAgIHNlbGYuZiA9IHdhdmUub3BlbihURVNURk4sICd3YicpCisgICAgICAgIHNlbGYuZi5zZXRuY2hhbm5lbHMobmNoYW5uZWxzKQorICAgICAgICBzZWxmLmYuc2V0c2FtcHdpZHRoKHNhbXB3aWR0aCkKKyAgICAgICAgc2VsZi5mLnNldGZyYW1lcmF0ZShmcmFtZXJhdGUpCisgICAgICAgIHNlbGYuZi5jbG9zZSgpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdFdhdmUpCisgICAgICAgIHNlbGYuZiA9IHdhdmUub3BlbihURVNURk4sICdyYicpCisgICAgICAgIHBhcmFtcyA9IHNlbGYuZi5nZXRwYXJhbXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5uY2hhbm5lbHMsIHNlbGYuZi5nZXRuY2hhbm5lbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMubmZyYW1lcywgc2VsZi5mLmdldG5mcmFtZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMuc2FtcHdpZHRoLCBzZWxmLmYuZ2V0c2FtcHdpZHRoKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLmZyYW1lcmF0ZSwgc2VsZi5mLmdldGZyYW1lcmF0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5jb21wdHlwZSwgc2VsZi5mLmdldGNvbXB0eXBlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLmNvbXBuYW1lLCBzZWxmLmYuZ2V0Y29tcG5hbWUoKSkKKworICAgIGRlZiB0ZXN0X3dhdmVfd3JpdGVfY29udGV4dF9tYW5hZ2VyX2NhbGxzX2Nsb3NlKHNlbGYpOgorICAgICAgICAjIENsb3NlIGNoZWNrcyBmb3IgYSBtaW5pbXVtIGhlYWRlciBhbmQgd2lsbCByYWlzZSBhbiBlcnJvcgorICAgICAgICAjIGlmIGl0IGlzIG5vdCBzZXQsIHNvIHRoaXMgcHJvdmVzIHRoYXQgY2xvc2UgaXMgY2FsbGVkLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHdhdmUuRXJyb3IpOgorICAgICAgICAgICAgd2l0aCB3YXZlLm9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh3YXZlLkVycm9yKToKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIHRlc3RmaWxlOgorICAgICAgICAgICAgICAgIHdpdGggd2F2ZS5vcGVuKHRlc3RmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3dpdGhfb3Blbl9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyB0ZXN0ZmlsZToKKyAgICAgICAgICAgIHdpdGggd2F2ZS5vcGVuKHRlc3RmaWxlKSBhcyBmOgorICAgICAgICAgICAgICAgIGYuc2V0bmNoYW5uZWxzKG5jaGFubmVscykKKyAgICAgICAgICAgICAgICBmLnNldHNhbXB3aWR0aChzYW1wd2lkdGgpCisgICAgICAgICAgICAgICAgZi5zZXRmcmFtZXJhdGUoZnJhbWVyYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0ZmlsZS5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIHRlc3RmaWxlOgorICAgICAgICAgICAgd2l0aCB3YXZlLm9wZW4odGVzdGZpbGUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmdldGZwKCkuY2xvc2VkKQorICAgICAgICAgICAgICAgIHBhcmFtcyA9IGYuZ2V0cGFyYW1zKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5uY2hhbm5lbHMsIG5jaGFubmVscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5zYW1wd2lkdGgsIHNhbXB3aWR0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5mcmFtZXJhdGUsIGZyYW1lcmF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGYuZ2V0ZnAoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGVzdGZpbGUuY2xvc2VkKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3dpdGhfZmlsZW5hbWUoc2VsZik6CisgICAgICAgICMgSWYgdGhlIGZpbGUgZG9lc24ndCBnZXQgY2xvc2VkLCB0aGlzIHRlc3Qgd29uJ3QgZmFpbCwgYnV0IGl0IHdpbGwKKyAgICAgICAgIyBwcm9kdWNlIGEgcmVzb3VyY2UgbGVhayB3YXJuaW5nLgorICAgICAgICB3aXRoIHdhdmUub3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLnNldG5jaGFubmVscyhuY2hhbm5lbHMpCisgICAgICAgICAgICBmLnNldHNhbXB3aWR0aChzYW1wd2lkdGgpCisgICAgICAgICAgICBmLnNldGZyYW1lcmF0ZShmcmFtZXJhdGUpCisgICAgICAgIHdpdGggd2F2ZS5vcGVuKFRFU1RGTikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5nZXRmcCgpLmNsb3NlZCkKKyAgICAgICAgICAgIHBhcmFtcyA9IGYuZ2V0cGFyYW1zKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW1zLm5jaGFubmVscywgbmNoYW5uZWxzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMuc2FtcHdpZHRoLCBzYW1wd2lkdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcy5mcmFtZXJhdGUsIGZyYW1lcmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZi5nZXRmcCgpKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQppbmRleCA1NzFlMzNmLi41NTFkOTVjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CkBAIC03LDExICs3LDE1IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGNvcHkKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKIAogIyBVc2VkIGluIFJlZmVyZW5jZXNUZXN0Q2FzZS50ZXN0X3JlZl9jcmVhdGVkX2R1cmluZ19kZWwoKSAuCiByZWZfZnJvbV9kZWwgPSBOb25lCiAKKyMgVXNlZCBieSBGaW5hbGl6ZVRlc3RDYXNlIGFzIGEgZ2xvYmFsIHRoYXQgbWF5IGJlIHJlcGxhY2VkIGJ5IE5vbmUKKyMgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc2h1dHMgZG93bi4KK19nbG9iYWxfdmFyID0gJ2Zvb2JhcicKKwogY2xhc3MgQzoKICAgICBkZWYgbWV0aG9kKHNlbGYpOgogICAgICAgICBwYXNzCkBAIC00Nyw2ICs1MSwxMSBAQAogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuYXJnKQorICAgIGRlZiBzb21lX21ldGhvZChzZWxmKToKKyAgICAgICAgcmV0dXJuIDQKKyAgICBkZWYgb3RoZXJfbWV0aG9kKHNlbGYpOgorICAgICAgICByZXR1cm4gNQorCiAKIGNsYXNzIFJlZkN5Y2xlOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTc5Nyw2ICs4MDYsMzAgQEAKICAgICAgICAgZGVsIHJvb3QKICAgICAgICAgZ2MuY29sbGVjdCgpCiAKKyAgICBkZWYgdGVzdF9jYWxsYmFja19hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHggPSBPYmplY3QoMSkKKyAgICAgICAgY2FsbGJhY2sgPSBsYW1iZGEgcmVmOiBOb25lCisgICAgICAgIHJlZjEgPSB3ZWFrcmVmLnJlZih4LCBjYWxsYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZWYxLl9fY2FsbGJhY2tfXywgY2FsbGJhY2spCisKKyAgICAgICAgcmVmMiA9IHdlYWtyZWYucmVmKHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZjIuX19jYWxsYmFja19fKQorCisgICAgZGVmIHRlc3RfY2FsbGJhY2tfYXR0cmlidXRlX2FmdGVyX2RlbGV0aW9uKHNlbGYpOgorICAgICAgICB4ID0gT2JqZWN0KDEpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKHgsIHNlbGYuY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlZi5fX2NhbGxiYWNrX18pCisgICAgICAgIGRlbCB4CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZi5fX2NhbGxiYWNrX18pCisKKyAgICBkZWYgdGVzdF9zZXRfY2FsbGJhY2tfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICB4ID0gT2JqZWN0KDEpCisgICAgICAgIGNhbGxiYWNrID0gbGFtYmRhIHJlZjogTm9uZQorICAgICAgICByZWYxID0gd2Vha3JlZi5yZWYoeCwgY2FsbGJhY2spCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcmVmMS5fX2NhbGxiYWNrX18gPSBsYW1iZGEgcmVmOiBOb25lCisKIAogY2xhc3MgU3ViY2xhc3NhYmxlV2Vha3JlZlRlc3RDYXNlKFRlc3RCYXNlKToKIApAQCAtOTAxLDYgKzkzNCwxNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNiY2FsbGVkLCAwKQogCiAKK2NsYXNzIFdlYWtNZXRob2RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBPYmplY3Qgc3ViY2xhc3Mgb3ZlcnJpZGluZyBgc29tZV9tZXRob2RgLiIiIgorICAgICAgICBjbGFzcyBDKE9iamVjdCk6CisgICAgICAgICAgICBkZWYgc29tZV9tZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDYKKyAgICAgICAgcmV0dXJuIEMKKworICAgIGRlZiB0ZXN0X2FsaXZlKHNlbGYpOgorICAgICAgICBvID0gT2JqZWN0KDEpCisgICAgICAgIHIgPSB3ZWFrcmVmLldlYWtNZXRob2Qoby5zb21lX21ldGhvZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIHdlYWtyZWYuUmVmZXJlbmNlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIoKSwgdHlwZShvLnNvbWVfbWV0aG9kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyKCkuX19zZWxmX18sIG8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocigpLl9fZnVuY19fLCBvLnNvbWVfbWV0aG9kLl9fZnVuY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIoKSgpLCA0KQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X2RlYWQoc2VsZik6CisgICAgICAgIG8gPSBPYmplY3QoMSkKKyAgICAgICAgciA9IHdlYWtyZWYuV2Vha01ldGhvZChvLnNvbWVfbWV0aG9kKQorICAgICAgICBkZWwgbworICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyKCksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9tZXRob2RfZGVhZChzZWxmKToKKyAgICAgICAgQyA9IHNlbGYuX3N1YmNsYXNzKCkKKyAgICAgICAgbyA9IEMoMSkKKyAgICAgICAgciA9IHdlYWtyZWYuV2Vha01ldGhvZChvLnNvbWVfbWV0aG9kKQorICAgICAgICBkZWwgQy5zb21lX21ldGhvZAorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyKCksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9jYWxsYmFja193aGVuX29iamVjdF9kZWFkKHNlbGYpOgorICAgICAgICAjIFRlc3QgY2FsbGJhY2sgYmVoYXZpb3VyIHdoZW4gb2JqZWN0IGRpZXMgZmlyc3QuCisgICAgICAgIEMgPSBzZWxmLl9zdWJjbGFzcygpCisgICAgICAgIGNhbGxzID0gW10KKyAgICAgICAgZGVmIGNiKGFyZyk6CisgICAgICAgICAgICBjYWxscy5hcHBlbmQoYXJnKQorICAgICAgICBvID0gQygxKQorICAgICAgICByID0gd2Vha3JlZi5XZWFrTWV0aG9kKG8uc29tZV9tZXRob2QsIGNiKQorICAgICAgICBkZWwgbworICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxscywgW3JdKQorICAgICAgICAjIENhbGxiYWNrIGlzIG9ubHkgY2FsbGVkIG9uY2UuCisgICAgICAgIEMuc29tZV9tZXRob2QgPSBPYmplY3Quc29tZV9tZXRob2QKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbHMsIFtyXSkKKworICAgIGRlZiB0ZXN0X2NhbGxiYWNrX3doZW5fbWV0aG9kX2RlYWQoc2VsZik6CisgICAgICAgICMgVGVzdCBjYWxsYmFjayBiZWhhdmlvdXIgd2hlbiBtZXRob2QgZGllcyBmaXJzdC4KKyAgICAgICAgQyA9IHNlbGYuX3N1YmNsYXNzKCkKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICBkZWYgY2IoYXJnKToKKyAgICAgICAgICAgIGNhbGxzLmFwcGVuZChhcmcpCisgICAgICAgIG8gPSBDKDEpCisgICAgICAgIHIgPSB3ZWFrcmVmLldlYWtNZXRob2Qoby5zb21lX21ldGhvZCwgY2IpCisgICAgICAgIGRlbCBDLnNvbWVfbWV0aG9kCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxzLCBbcl0pCisgICAgICAgICMgQ2FsbGJhY2sgaXMgb25seSBjYWxsZWQgb25jZS4KKyAgICAgICAgZGVsIG8KKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbHMsIFtyXSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X25vX2N5Y2xlcyhzZWxmKToKKyAgICAgICAgIyBBIFdlYWtNZXRob2QgZG9lc24ndCBjcmVhdGUgYW55IHJlZmVyZW5jZSBjeWNsZSB0byBpdHNlbGYuCisgICAgICAgIG8gPSBPYmplY3QoMSkKKyAgICAgICAgZGVmIGNiKF8pOgorICAgICAgICAgICAgcGFzcworICAgICAgICByID0gd2Vha3JlZi5XZWFrTWV0aG9kKG8uc29tZV9tZXRob2QsIGNiKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHIpCisgICAgICAgIGRlbCByCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBkZWYgX2VxKGEsIGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPT0gYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYSAhPSBiKQorICAgICAgICBkZWYgX25lKGEsIGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgIT0gYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYSA9PSBiKQorICAgICAgICB4ID0gT2JqZWN0KDEpCisgICAgICAgIHkgPSBPYmplY3QoMSkKKyAgICAgICAgYSA9IHdlYWtyZWYuV2Vha01ldGhvZCh4LnNvbWVfbWV0aG9kKQorICAgICAgICBiID0gd2Vha3JlZi5XZWFrTWV0aG9kKHkuc29tZV9tZXRob2QpCisgICAgICAgIGMgPSB3ZWFrcmVmLldlYWtNZXRob2QoeC5vdGhlcl9tZXRob2QpCisgICAgICAgIGQgPSB3ZWFrcmVmLldlYWtNZXRob2QoeS5vdGhlcl9tZXRob2QpCisgICAgICAgICMgT2JqZWN0cyBlcXVhbCwgc2FtZSBtZXRob2QKKyAgICAgICAgX2VxKGEsIGIpCisgICAgICAgIF9lcShjLCBkKQorICAgICAgICAjIE9iamVjdHMgZXF1YWwsIGRpZmZlcmVudCBtZXRob2QKKyAgICAgICAgX25lKGEsIGMpCisgICAgICAgIF9uZShhLCBkKQorICAgICAgICBfbmUoYiwgYykKKyAgICAgICAgX25lKGIsIGQpCisgICAgICAgICMgT2JqZWN0cyB1bmVxdWFsLCBzYW1lIG9yIGRpZmZlcmVudCBtZXRob2QKKyAgICAgICAgeiA9IE9iamVjdCgyKQorICAgICAgICBlID0gd2Vha3JlZi5XZWFrTWV0aG9kKHouc29tZV9tZXRob2QpCisgICAgICAgIGYgPSB3ZWFrcmVmLldlYWtNZXRob2Qoei5vdGhlcl9tZXRob2QpCisgICAgICAgIF9uZShhLCBlKQorICAgICAgICBfbmUoYSwgZikKKyAgICAgICAgX25lKGIsIGUpCisgICAgICAgIF9uZShiLCBmKQorICAgICAgICBkZWwgeCwgeSwgegorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgIyBEZWFkIFdlYWtNZXRob2RzIGNvbXBhcmUgYnkgaWRlbnRpdHkKKyAgICAgICAgcmVmcyA9IGEsIGIsIGMsIGQsIGUsIGYKKyAgICAgICAgZm9yIHEgaW4gcmVmczoKKyAgICAgICAgICAgIGZvciByIGluIHJlZnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxID09IHIsIHEgaXMgcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEgIT0gciwgcSBpcyBub3QgcikKKworICAgIGRlZiB0ZXN0X2hhc2hpbmcoc2VsZik6CisgICAgICAgICMgQWxpdmUgV2Vha01ldGhvZHMgYXJlIGhhc2hhYmxlIGlmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcworICAgICAgICAjIGhhc2hhYmxlLgorICAgICAgICB4ID0gT2JqZWN0KDEpCisgICAgICAgIHkgPSBPYmplY3QoMSkKKyAgICAgICAgYSA9IHdlYWtyZWYuV2Vha01ldGhvZCh4LnNvbWVfbWV0aG9kKQorICAgICAgICBiID0gd2Vha3JlZi5XZWFrTWV0aG9kKHkuc29tZV9tZXRob2QpCisgICAgICAgIGMgPSB3ZWFrcmVmLldlYWtNZXRob2QoeS5vdGhlcl9tZXRob2QpCisgICAgICAgICMgU2luY2UgV2Vha01ldGhvZCBvYmplY3RzIGFyZSBlcXVhbCwgdGhlIGhhc2hlcyBzaG91bGQgYmUgZXF1YWwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChhKSwgaGFzaChiKSkKKyAgICAgICAgaGEgPSBoYXNoKGEpCisgICAgICAgICMgRGVhZCBXZWFrTWV0aG9kcyByZXRhaW4gdGhlaXIgb2xkIGhhc2ggdmFsdWUKKyAgICAgICAgZGVsIHgsIHkKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChhKSwgaGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChiKSwgaGEpCisgICAgICAgICMgSWYgaXQgd2Fzbid0IGhhc2hlZCB3aGVuIGFsaXZlLCBhIGRlYWQgV2Vha01ldGhvZCBjYW5ub3QgYmUgaGFzaGVkLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhhc2gsIGMpCisKKwogY2xhc3MgTWFwcGluZ1Rlc3RDYXNlKFRlc3RCYXNlKToKIAogICAgIENPVU5UID0gMTAKQEAgLTEzODgsNiArMTU1NSwxNTEgQEAKICAgICBkZWYgX3JlZmVyZW5jZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX19yZWYuY29weSgpCiAKKworY2xhc3MgRmluYWxpemVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBBOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX2NvbGxlY3RfaWZfbmVjZXNzYXJ5KHNlbGYpOgorICAgICAgICAjIHdlIGNyZWF0ZSBubyByZWYtY3ljbGVzIHNvIGluIENQeXRob24gbm8gZ2Mgc2hvdWxkIGJlIG5lZWRlZAorICAgICAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24ubmFtZSAhPSAnY3B5dGhvbic6CisgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisgICAgZGVmIHRlc3RfZmluYWxpemUoc2VsZik6CisgICAgICAgIGRlZiBhZGQoeCx5LHopOgorICAgICAgICAgICAgcmVzLmFwcGVuZCh4ICsgeSArIHopCisgICAgICAgICAgICByZXR1cm4geCArIHkgKyB6CisKKyAgICAgICAgYSA9IHNlbGYuQSgpCisKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZiA9IHdlYWtyZWYuZmluYWxpemUoYSwgYWRkLCA2NywgNDMsIHo9ODkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5hbGl2ZSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBlZWsoKSwgKGEsIGFkZCwgKDY3LDQzKSwgeyd6Jzo4OX0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoKSwgMTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wZWVrKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5kZXRhY2goKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmFsaXZlLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFsxOTldKQorCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGYgPSB3ZWFrcmVmLmZpbmFsaXplKGEsIGFkZCwgNjcsIDQzLCA4OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBlZWsoKSwgKGEsIGFkZCwgKDY3LDQzLDg5KSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZGV0YWNoKCksIChhLCBhZGQsICg2Nyw0Myw4OSksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucGVlaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZGV0YWNoKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5hbGl2ZSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbXSkKKworICAgICAgICByZXMgPSBbXQorICAgICAgICBmID0gd2Vha3JlZi5maW5hbGl6ZShhLCBhZGQsIHg9NjcsIHk9NDMsIHo9ODkpCisgICAgICAgIGRlbCBhCisgICAgICAgIHNlbGYuX2NvbGxlY3RfaWZfbmVjZXNzYXJ5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucGVlaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZGV0YWNoKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5hbGl2ZSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMTk5XSkKKworICAgIGRlZiB0ZXN0X29yZGVyKHNlbGYpOgorICAgICAgICBhID0gc2VsZi5BKCkKKyAgICAgICAgcmVzID0gW10KKworICAgICAgICBmMSA9IHdlYWtyZWYuZmluYWxpemUoYSwgcmVzLmFwcGVuZCwgJ2YxJykKKyAgICAgICAgZjIgPSB3ZWFrcmVmLmZpbmFsaXplKGEsIHJlcy5hcHBlbmQsICdmMicpCisgICAgICAgIGYzID0gd2Vha3JlZi5maW5hbGl6ZShhLCByZXMuYXBwZW5kLCAnZjMnKQorICAgICAgICBmNCA9IHdlYWtyZWYuZmluYWxpemUoYSwgcmVzLmFwcGVuZCwgJ2Y0JykKKyAgICAgICAgZjUgPSB3ZWFrcmVmLmZpbmFsaXplKGEsIHJlcy5hcHBlbmQsICdmNScpCisKKyAgICAgICAgIyBtYWtlIHN1cmUgZmluYWxpemVycyBjYW4ga2VlcCB0aGVtc2VsdmVzIGFsaXZlCisgICAgICAgIGRlbCBmMSwgZjQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoZjIuYWxpdmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMy5hbGl2ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGY1LmFsaXZlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmNS5kZXRhY2goKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmNS5hbGl2ZSkKKworICAgICAgICBmNSgpICAgICAgICAgICAgICAgICAgICAgICAjIG5vdGhpbmcgYmVjYXVzZSBwcmV2aW91c2x5IHVucmVnaXN0ZXJlZAorICAgICAgICByZXMuYXBwZW5kKCdBJykKKyAgICAgICAgZjMoKSAgICAgICAgICAgICAgICAgICAgICAgIyA9PiByZXMuYXBwZW5kKCdmMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZjMuYWxpdmUpCisgICAgICAgIHJlcy5hcHBlbmQoJ0InKQorICAgICAgICBmMygpICAgICAgICAgICAgICAgICAgICAgICAjIG5vdGhpbmcgYmVjYXVzZSBwcmV2aW91c2x5IGNhbGxlZAorICAgICAgICByZXMuYXBwZW5kKCdDJykKKyAgICAgICAgZGVsIGEKKyAgICAgICAgc2VsZi5fY29sbGVjdF9pZl9uZWNlc3NhcnkoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjID0+IHJlcy5hcHBlbmQoJ2Y0JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyA9PiByZXMuYXBwZW5kKCdmMicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gcmVzLmFwcGVuZCgnZjEnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYyLmFsaXZlKQorICAgICAgICByZXMuYXBwZW5kKCdEJykKKyAgICAgICAgZjIoKSAgICAgICAgICAgICAgICAgICAgICAgIyBub3RoaW5nIGJlY2F1c2UgcHJldmlvdXNseSBjYWxsZWQgYnkgZ2MKKworICAgICAgICBleHBlY3RlZCA9IFsnQScsICdmMycsICdCJywgJ0MnLCAnZjQnLCAnZjInLCAnZjEnLCAnRCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2FsbF9mcmVlZChzZWxmKToKKyAgICAgICAgIyB3ZSB3YW50IGEgd2Vha3JlZmFibGUgc3ViY2xhc3Mgb2Ygd2Vha3JlZi5maW5hbGl6ZQorICAgICAgICBjbGFzcyBNeUZpbmFsaXplcih3ZWFrcmVmLmZpbmFsaXplKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhID0gc2VsZi5BKCkKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZGVmIGNhbGxiYWNrKCk6CisgICAgICAgICAgICByZXMuYXBwZW5kKDEyMykKKyAgICAgICAgZiA9IE15RmluYWxpemVyKGEsIGNhbGxiYWNrKQorCisgICAgICAgIHdyX2NhbGxiYWNrID0gd2Vha3JlZi5yZWYoY2FsbGJhY2spCisgICAgICAgIHdyX2YgPSB3ZWFrcmVmLnJlZihmKQorICAgICAgICBkZWwgY2FsbGJhY2ssIGYKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh3cl9jYWxsYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh3cl9mKCkpCisKKyAgICAgICAgZGVsIGEKKyAgICAgICAgc2VsZi5fY29sbGVjdF9pZl9uZWNlc3NhcnkoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyX2NhbGxiYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyX2YoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFsxMjNdKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJ1bl9pbl9jaGlsZChjbHMpOgorICAgICAgICBkZWYgZXJyb3IoKToKKyAgICAgICAgICAgICMgQ3JlYXRlIGFuIGF0ZXhpdCBmaW5hbGl6ZXIgZnJvbSBpbnNpZGUgYSBmaW5hbGl6ZXIgY2FsbGVkCisgICAgICAgICAgICAjIGF0IGV4aXQuICBUaGlzIHNob3VsZCBiZSB0aGUgbmV4dCB0byBiZSBydW4uCisgICAgICAgICAgICBnMSA9IHdlYWtyZWYuZmluYWxpemUoY2xzLCBwcmludCwgJ2cxJykKKyAgICAgICAgICAgIHByaW50KCdmMyBlcnJvcicpCisgICAgICAgICAgICAxLzAKKworICAgICAgICAjIGNscyBzaG91bGQgc3RheSBhbGl2ZSB0aWxsIGF0ZXhpdCBjYWxsYmFja3MgcnVuCisgICAgICAgIGYxID0gd2Vha3JlZi5maW5hbGl6ZShjbHMsIHByaW50LCAnZjEnLCBfZ2xvYmFsX3ZhcikKKyAgICAgICAgZjIgPSB3ZWFrcmVmLmZpbmFsaXplKGNscywgcHJpbnQsICdmMicsIF9nbG9iYWxfdmFyKQorICAgICAgICBmMyA9IHdlYWtyZWYuZmluYWxpemUoY2xzLCBlcnJvcikKKyAgICAgICAgZjQgPSB3ZWFrcmVmLmZpbmFsaXplKGNscywgcHJpbnQsICdmNCcsIF9nbG9iYWxfdmFyKQorCisgICAgICAgIGFzc2VydCBmMS5hdGV4aXQgPT0gVHJ1ZQorICAgICAgICBmMi5hdGV4aXQgPSBGYWxzZQorICAgICAgICBhc3NlcnQgZjMuYXRleGl0ID09IFRydWUKKyAgICAgICAgYXNzZXJ0IGY0LmF0ZXhpdCA9PSBUcnVlCisKKyAgICBkZWYgdGVzdF9hdGV4aXQoc2VsZik6CisgICAgICAgIHByb2cgPSAoJ2Zyb20gdGVzdC50ZXN0X3dlYWtyZWYgaW1wb3J0IEZpbmFsaXplVGVzdENhc2U7JysKKyAgICAgICAgICAgICAgICAnRmluYWxpemVUZXN0Q2FzZS5ydW5faW5fY2hpbGQoKScpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBwcm9nKQorICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKCdhc2NpaScpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgWydmNCBmb29iYXInLCAnZjMgZXJyb3InLCAnZzEnLCAnZjEgZm9vYmFyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiJ1plcm9EaXZpc2lvbkVycm9yJyBpbiBlcnIpCisKKwogbGlicmVmdGVzdCA9ICIiIiBEb2N0ZXN0IGZvciBleGFtcGxlcyBpbiB0aGUgbGlicmFyeSByZWZlcmVuY2U6IHdlYWtyZWYucnN0CiAKID4+PiBpbXBvcnQgd2Vha3JlZgpAQCAtMTQ3NiwxMCArMTc4OCwxMiBAQAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBSZWZlcmVuY2VzVGVzdENhc2UsCisgICAgICAgIFdlYWtNZXRob2RUZXN0Q2FzZSwKICAgICAgICAgTWFwcGluZ1Rlc3RDYXNlLAogICAgICAgICBXZWFrVmFsdWVEaWN0aW9uYXJ5VGVzdENhc2UsCiAgICAgICAgIFdlYWtLZXlEaWN0aW9uYXJ5VGVzdENhc2UsCiAgICAgICAgIFN1YmNsYXNzYWJsZVdlYWtyZWZUZXN0Q2FzZSwKKyAgICAgICAgRmluYWxpemVUZXN0Q2FzZSwKICAgICAgICAgKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3Qoc3lzLm1vZHVsZXNbX19uYW1lX19dKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CmluZGV4IGNiNGNkZTkuLmVmNGNlNTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CkBAIC04LDcgKzgsNyBAQAogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgbWFjaGluZQogCiAjIERvIHRoaXMgZmlyc3Qgc28gdGVzdCB3aWxsIGJlIHNraXBwZWQgaWYgbW9kdWxlIGRvZXNuJ3QgZXhpc3QKLXN1cHBvcnQuaW1wb3J0X21vZHVsZSgnd2lucmVnJykKK3N1cHBvcnQuaW1wb3J0X21vZHVsZSgnd2lucmVnJywgcmVxdWlyZWRfb249Wyd3aW4nXSkKICMgTm93IGltcG9ydCBldmVyeXRoaW5nCiBmcm9tIHdpbnJlZyBpbXBvcnQgKgogCkBAIC01NywxMyArNTcsMTMgQEAKICAgICBkZWYgZGVsZXRlX3RyZWUoc2VsZiwgcm9vdCwgc3Via2V5KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaGtleSA9IE9wZW5LZXkocm9vdCwgc3Via2V5LCBLRVlfQUxMX0FDQ0VTUykKLSAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAjIHN1YmtleSBkb2VzIG5vdCBleGlzdAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3Vic3Via2V5ID0gRW51bUtleShoa2V5LCAwKQotICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICMgbm8gbW9yZSBzdWJrZXlzCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHNlbGYuZGVsZXRlX3RyZWUoaGtleSwgc3Vic3Via2V5KQpAQCAtMTAwLDcgKzEwMCw3IEBACiAgICAgICAgICAgICBRdWVyeUluZm9LZXkoaW50X3N1Yl9rZXkpCiAgICAgICAgICAgICBzZWxmLmZhaWwoIkl0IGFwcGVhcnMgdGhlIENsb3NlS2V5KCkgZnVuY3Rpb24gZG9lcyAiCiAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBjbG9zZSB0aGUgYWN0dWFsIGtleSEiKQotICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgLi4uIGFuZCBjbG9zZSB0aGF0IGtleSB0aGF0IHdheSA6LSkKICAgICAgICAgaW50X2tleSA9IGludChrZXkpCkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAgICAgICAgIFF1ZXJ5SW5mb0tleShpbnRfa2V5KQogICAgICAgICAgICAgc2VsZi5mYWlsKCJJdCBhcHBlYXJzIHRoZSBrZXkuQ2xvc2UoKSBmdW5jdGlvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IGNsb3NlIHRoZSBhY3R1YWwga2V5ISIpCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiBfcmVhZF90ZXN0X2RhdGEoc2VsZiwgcm9vdF9rZXksIHN1YmtleXN0cj0ic3ViX2tleSIsIE9wZW5LZXk9T3BlbktleSk6CkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gRW51bVZhbHVlKHN1Yl9rZXksIGluZGV4KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSBpbiB0ZXN0X2RhdGEsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlkbid0IHJlYWQgYmFjayB0aGUgY29ycmVjdCB0ZXN0IGRhdGEiKQpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIEVudW1LZXkoa2V5LCAxKQogICAgICAgICAgICAgc2VsZi5mYWlsKCJXYXMgYWJsZSB0byBnZXQgYSBzZWNvbmQga2V5IHdoZW4gSSBvbmx5IGhhdmUgb25lISIpCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBrZXkuQ2xvc2UoKQpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAjIFNob3VsZG50IGJlIGFibGUgdG8gZGVsZXRlIGl0IHR3aWNlIQogICAgICAgICAgICAgRGVsZXRlS2V5KGtleSwgc3Via2V5c3RyKQogICAgICAgICAgICAgc2VsZi5mYWlsKCJEZWxldGluZyB0aGUga2V5IHR3aWNlIHN1Y2NlZWRlZCIpCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAga2V5LkNsb3NlKCkKICAgICAgICAgRGVsZXRlS2V5KHJvb3Rfa2V5LCB0ZXN0X2tleV9uYW1lKQpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGtleSA9IE9wZW5LZXkocm9vdF9rZXksIHRlc3Rfa2V5X25hbWUpCiAgICAgICAgICAgICBzZWxmLmZhaWwoIkNvdWxkIG9wZW4gdGhlIG5vbi1leGlzdGVudCBrZXkiKQotICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yOiAjIFVzZSB0aGlzIGVycm9yIG5hbWUgdGhpcyB0aW1lCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOiAjIFVzZSB0aGlzIGVycm9yIG5hbWUgdGhpcyB0aW1lCiAgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgX3Rlc3RfYWxsKHNlbGYsIHJvb3Rfa2V5LCBzdWJrZXlzdHI9InN1Yl9rZXkiKToKQEAgLTIzMCw3ICsyMzAsNyBAQAogCiAgICAgZGVmIHRlc3RfaW5leGlzdGFudF9yZW1vdGVfcmVnaXN0cnkoc2VsZik6CiAgICAgICAgIGNvbm5lY3QgPSBsYW1iZGE6IENvbm5lY3RSZWdpc3RyeSgiYWJjZGVmZ2hpamtsIiwgSEtFWV9DVVJSRU5UX1VTRVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29ubmVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgY29ubmVjdCkKIAogICAgIGRlZiB0ZXN0RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKHNlbGYpOgogICAgICAgICByID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCIld2luZGlyJVxcdGVzdCIpCkBAIC0yNDIsOCArMjQyLDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBDb25uZWN0UmVnaXN0cnkoTm9uZSwgSEtFWV9MT0NBTF9NQUNISU5FKSBhcyBoOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaC5oYW5kbGUsIDApCi0gICAgICAgICAgICAgICAgcmFpc2UgV2luZG93c0Vycm9yCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5oYW5kbGUsIDApCiAKICAgICBkZWYgdGVzdF9jaGFuZ2luZ192YWx1ZShzZWxmKToKQEAgLTQwNyw3ICs0MDcsNyBAQAogICAgICAgICAgICAgICAgIG9wZW5fZmFpbCA9IGxhbWJkYTogT3BlbktleShIS0VZX0NVUlJFTlRfVVNFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZWZsZWN0X2tleV9uYW1lLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIG9wZW5fZmFpbCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcGVuX2ZhaWwpCiAKICAgICAgICAgICAgICMgTm93IGV4cGxpY2l0bHkgb3BlbiB0aGUgNjQtYml0IHZlcnNpb24gb2YgdGhlIGtleQogICAgICAgICAgICAgd2l0aCBPcGVuS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCB0ZXN0X3JlZmxlY3Rfa2V5X25hbWUsIDAsCkBAIC00NDcsNyArNDQ3LDcgQEAKICAgICAgICAgICAgIG9wZW5fZmFpbCA9IGxhbWJkYTogT3BlbktleUV4KEhLRVlfQ1VSUkVOVF9VU0VSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZWZsZWN0X2tleV9uYW1lLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZX1JFQUQgfCBLRVlfV09XNjRfNjRLRVkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIG9wZW5fZmFpbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9wZW5fZmFpbCkKIAogICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhlIDMyLWJpdCBrZXkgaXMgYWN0dWFsbHkgdGhlcmUKICAgICAgICAgICAgIHdpdGggT3BlbktleUV4KEhLRVlfQ1VSUkVOVF9VU0VSLCB0ZXN0X3JlZmxlY3Rfa2V5X25hbWUsIDAsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQppbmRleCBlYjdmNzVmLi42MWQ4NjRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICAga2V5ID0gd2lucmVnLk9wZW5LZXlFeCh3aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsCiAgICAgICAgICAgICAgICAgIkFwcEV2ZW50c1xTY2hlbWVzXEFwcHNcLkRlZmF1bHRcezB9XC5EZWZhdWx0Ii5mb3JtYXQoc291bmQpKQogICAgICAgICByZXR1cm4gd2lucmVnLkVudW1WYWx1ZShrZXksIDApWzFdICE9ICIiCi0gICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIGNsYXNzIEJlZXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggNDAyYmMyZC4uZGVjMjViNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3ZWFrcmVmCiAKQEAgLTI0MCw3ICsyNDEsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuWE1MLCBFVC5mcm9tc3RyaW5nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULlBJLCBFVC5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuWE1MUGFyc2VyLCBFVC5YTUxUcmVlQnVpbGRlcikKIAogICAgIGRlZiB0ZXN0X3NpbXBsZW9wcyhzZWxmKToKICAgICAgICAgIyBCYXNpYyBtZXRob2Qgc2FuaXR5IGNoZWNrcy4KQEAgLTQzMywxNSArNDMzLDYgQEAKICAgICAgICAgICAgICAgICAnICAgPGVtcHR5LWVsZW1lbnQgLz5cbicKICAgICAgICAgICAgICAgICAnPC9yb290PicpCiAKLSAgICAgICAgcGFyc2VyID0gRVQuWE1MVHJlZUJ1aWxkZXIoKSAjIDEuMiBjb21wYXRpYmlsaXR5Ci0gICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCi0gICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKHBhcnNlci5jbG9zZSgpLAotICAgICAgICAgICAgICAgICc8cm9vdD5cbicKLSAgICAgICAgICAgICAgICAnICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD5cbicKLSAgICAgICAgICAgICAgICAnICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsXG4nCi0gICAgICAgICAgICAgICAgJyAgIDxlbXB0eS1lbGVtZW50IC8+XG4nCi0gICAgICAgICAgICAgICAgJzwvcm9vdD4nKQotCiAgICAgICAgIHRhcmdldCA9IEVULlRyZWVCdWlsZGVyKCkKICAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YXJnZXQpCiAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCkBAIC05NTksNiArOTUwLDE2OSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplZCwgZXhwZWN0ZWQpCiAKIAorY2xhc3MgSW5jcmVtZW50YWxQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBfZmVlZChzZWxmLCBwYXJzZXIsIGRhdGEsIGNodW5rX3NpemU9Tm9uZSk6CisgICAgICAgIGlmIGNodW5rX3NpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHBhcnNlci5kYXRhX3JlY2VpdmVkKGRhdGEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZGF0YSksIGNodW5rX3NpemUpOgorICAgICAgICAgICAgICAgIHBhcnNlci5kYXRhX3JlY2VpdmVkKGRhdGFbaTppK2NodW5rX3NpemVdKQorCisgICAgZGVmIGFzc2VydF9ldmVudF90YWdzKHNlbGYsIHBhcnNlciwgZXhwZWN0ZWQpOgorICAgICAgICBldmVudHMgPSBwYXJzZXIuZXZlbnRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGFjdGlvbiwgZWxlbS50YWcpIGZvciBhY3Rpb24sIGVsZW0gaW4gZXZlbnRzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV94bWwoc2VsZik6CisgICAgICAgIGZvciBjaHVua19zaXplIGluIChOb25lLCAxLCA1KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNodW5rX3NpemU9Y2h1bmtfc2l6ZSk6CisgICAgICAgICAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjwhLS0gY29tbWVudCAtLT5cbiIsIGNodW5rX3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFtdKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxyb290PlxuICA8ZWxlbWVudCBrZXk9J3ZhbHVlJz50ZXh0PC9lbGVtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFtdKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPlxuIiwgY2h1bmtfc2l6ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgWygnZW5kJywgJ2VsZW1lbnQnKV0pCisgICAgICAgICAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbiIsIGNodW5rX3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8ZW1wdHktZWxlbWVudC8+XG4iLCBjaHVua19zaXplKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbCisgICAgICAgICAgICAgICAgICAgICgnZW5kJywgJ2VsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAgICAgKCdlbmQnLCAnZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPC9yb290PlxuIiwgY2h1bmtfc2l6ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgWygnZW5kJywgJ3Jvb3QnKV0pCisgICAgICAgICAgICAgICAgIyBSZWNlaXZpbmcgRU9GIHNldHMgdGhlIGByb290YCBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhcnNlci5yb290LCBOb25lKQorICAgICAgICAgICAgICAgIHBhcnNlci5lb2ZfcmVjZWl2ZWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLnJvb3QudGFnLCAncm9vdCcpCisKKyAgICBkZWYgdGVzdF9kYXRhX3JlY2VpdmVkX3doaWxlX2l0ZXJhdGluZyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoKQorICAgICAgICBpdCA9IHBhcnNlci5ldmVudHMoKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxyb290PlxuICA8ZWxlbWVudCBrZXk9J3ZhbHVlJz50ZXh0PC9lbGVtZW50PlxuIikKKyAgICAgICAgYWN0aW9uLCBlbGVtID0gbmV4dChpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYWN0aW9uLCBlbGVtLnRhZyksICgnZW5kJywgJ2VsZW1lbnQnKSkKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8L3Jvb3Q+XG4iKQorICAgICAgICBhY3Rpb24sIGVsZW0gPSBuZXh0KGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhY3Rpb24sIGVsZW0udGFnKSwgKCdlbmQnLCAncm9vdCcpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgbmV4dChpdCkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV94bWxfd2l0aF9ucyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoKQorICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgW10pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPCEtLSBjb21tZW50IC0tPlxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFtdKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxyb290IHhtbG5zPSduYW1lc3BhY2UnPlxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFtdKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxlbGVtZW50IGtleT0ndmFsdWUnPnRleHQ8L2VsZW1lbnQiKQorICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgW10pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPlxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsoJ2VuZCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKV0pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsXG4iKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxlbXB0eS1lbGVtZW50Lz5cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbCisgICAgICAgICAgICAoJ2VuZCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8L3Jvb3Q+XG4iKQorICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgWygnZW5kJywgJ3tuYW1lc3BhY2V9cm9vdCcpXSkKKyAgICAgICAgIyBSZWNlaXZpbmcgRU9GIHNldHMgdGhlIGByb290YCBhdHRyaWJ1dGUKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXJzZXIucm9vdCwgTm9uZSkKKyAgICAgICAgcGFyc2VyLmVvZl9yZWNlaXZlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLnJvb3QudGFnLCAne25hbWVzcGFjZX1yb290JykKKworICAgIGRlZiB0ZXN0X25zX2V2ZW50cyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoZXZlbnRzPSgnc3RhcnQtbnMnLCAnZW5kLW5zJykpCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPCEtLSBjb21tZW50IC0tPlxuIikKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8cm9vdCB4bWxucz0nbmFtZXNwYWNlJz5cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KHBhcnNlci5ldmVudHMoKSksCisgICAgICAgICAgICBbKCdzdGFydC1ucycsICgnJywgJ25hbWVzcGFjZScpKV0pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPGVsZW1lbnQga2V5PSd2YWx1ZSc+dGV4dDwvZWxlbWVudCIpCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPlxuIikKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbiIpCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPGVtcHR5LWVsZW1lbnQvPlxuIikKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8L3Jvb3Q+XG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGFyc2VyLmV2ZW50cygpKSwgWygnZW5kLW5zJywgTm9uZSldKQorICAgICAgICBwYXJzZXIuZW9mX3JlY2VpdmVkKCkKKworICAgIGRlZiB0ZXN0X2V2ZW50cyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoZXZlbnRzPSgpKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxyb290Lz5cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbXSkKKworICAgICAgICBwYXJzZXIgPSBFVC5JbmNyZW1lbnRhbFBhcnNlcihldmVudHM9KCdzdGFydCcsICdlbmQnKSkKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8IS0tIGNvbW1lbnQgLS0+XG4iKQorICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgW10pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPHJvb3Q+XG4iKQorICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgWygnc3RhcnQnLCAncm9vdCcpXSkKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsICI8ZWxlbWVudCBrZXk9J3ZhbHVlJz50ZXh0PC9lbGVtZW50IikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsoJ3N0YXJ0JywgJ2VsZW1lbnQnKV0pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPlxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsoJ2VuZCcsICdlbGVtZW50JyldKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAiPGVsZW1lbnQgeG1sbnM9J2Zvbyc+dGV4dDxlbXB0eS1lbGVtZW50Lz48L2VsZW1lbnQ+dGFpbFxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsKKyAgICAgICAgICAgICgnc3RhcnQnLCAne2Zvb31lbGVtZW50JyksCisgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tmb299ZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgKCdlbmQnLCAne2Zvb31lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAoJ2VuZCcsICd7Zm9vfWVsZW1lbnQnKSwKKyAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPC9yb290PiIpCisgICAgICAgIHBhcnNlci5lb2ZfcmVjZWl2ZWQoKQorICAgICAgICBzZWxmLmFzc2VydElzKHBhcnNlci5yb290LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydF9ldmVudF90YWdzKHBhcnNlciwgWygnZW5kJywgJ3Jvb3QnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLnJvb3QudGFnLCAncm9vdCcpCisKKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoZXZlbnRzPSgnc3RhcnQnLCkpCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPCEtLSBjb21tZW50IC0tPlxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFtdKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxyb290PlxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsoJ3N0YXJ0JywgJ3Jvb3QnKV0pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPGVsZW1lbnQga2V5PSd2YWx1ZSc+dGV4dDwvZWxlbWVudCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbKCdzdGFydCcsICdlbGVtZW50JyldKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIj5cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbXSkKKyAgICAgICAgc2VsZi5fZmVlZChwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIjxlbGVtZW50IHhtbG5zPSdmb28nPnRleHQ8ZW1wdHktZWxlbWVudC8+PC9lbGVtZW50PnRhaWxcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V2ZW50X3RhZ3MocGFyc2VyLCBbCisgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tmb299ZWxlbWVudCcpLAorICAgICAgICAgICAgKCdzdGFydCcsICd7Zm9vfWVtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuX2ZlZWQocGFyc2VyLCAiPC9yb290PiIpCisgICAgICAgIHBhcnNlci5lb2ZfcmVjZWl2ZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5yb290LnRhZywgJ3Jvb3QnKQorCisgICAgZGVmIHRlc3RfZXZlbnRzX3NlcXVlbmNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBldmVudHMgY2FuIGJlIHNvbWUgc2VxdWVuY2UgdGhhdCdzIG5vdCBqdXN0IGEgdHVwbGUgb3IgbGlzdAorICAgICAgICBldmVudHNldCA9IHsnZW5kJywgJ3N0YXJ0J30KKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoZXZlbnRzPWV2ZW50c2V0KQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxmb28+YmFyPC9mb28+IikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsoJ3N0YXJ0JywgJ2ZvbycpLCAoJ2VuZCcsICdmb28nKV0pCisKKyAgICAgICAgY2xhc3MgRHVtbXlJdGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZXZlbnRzID0gaXRlcihbJ3N0YXJ0JywgJ2VuZCcsICdzdGFydC1ucyddKQorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5ldmVudHMpCisKKyAgICAgICAgcGFyc2VyID0gRVQuSW5jcmVtZW50YWxQYXJzZXIoZXZlbnRzPUR1bW15SXRlcigpKQorICAgICAgICBzZWxmLl9mZWVkKHBhcnNlciwgIjxmb28+YmFyPC9mb28+IikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXZlbnRfdGFncyhwYXJzZXIsIFsoJ3N0YXJ0JywgJ2ZvbycpLCAoJ2VuZCcsICdmb28nKV0pCisKKworICAgIGRlZiB0ZXN0X3Vua25vd25fZXZlbnQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBFVC5JbmNyZW1lbnRhbFBhcnNlcihldmVudHM9KCdzdGFydCcsICdlbmQnLCAnYm9ndXMnKSkKKworCiAjCiAjIHhpbmNsdWRlIHRlc3RzIChzYW1wbGVzIGZyb20gYXBwZW5kaXggQyBvZiB0aGUgeGluY2x1ZGUgc3BlY2lmaWNhdGlvbikKIApAQCAtMTMwMCw3ICsxNDU0LDcgQEAKICAgICAgICAgIyBEb24ndCBjcmFzaCB3aGVuIHVzaW5nIGN1c3RvbSBlbnRpdGllcy4KIAogICAgICAgICBFTlRJVElFUyA9IHsncnNxdW8nOiAnXHUyMDE5JywgJ2xzcXVvJzogJ1x1MjAxOCd9Ci0gICAgICAgIHBhcnNlciA9IEVULlhNTFRyZWVCdWlsZGVyKCkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKICAgICAgICAgcGFyc2VyLmVudGl0eS51cGRhdGUoRU5USVRJRVMpCiAgICAgICAgIHBhcnNlci5mZWVkKCIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8IURPQ1RZUEUgcGF0ZW50LWFwcGxpY2F0aW9uLXB1YmxpY2F0aW9uIFNZU1RFTSAicGFwLXYxNS0yMDAxLTAxLTMxLmR0ZCIgW10+CkBAIC0xNDYyLDYgKzE2MTYsNyBAQAogICAgICAgICBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoJ3Rlc3QxMDc3NycsICdodHRwOi8vbXl1cmkvJykKICAgICAgICAgRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCiAKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKQEAgLTE2MjUsNiArMTc4MCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnLi90YWdbbGFzdCgpLTFdJykuYXR0cmliWydjbGFzcyddLCAnYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCcuL3RhZ1tsYXN0KCktMl0nKS5hdHRyaWJbJ2NsYXNzJ10sICdiJykKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnWFBhdGgnLCBlLmZpbmQsICcuL3RhZ1swXScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdYUGF0aCcsIGUuZmluZCwgJy4vdGFnWy0xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdYUGF0aCcsIGUuZmluZCwgJy4vdGFnW2xhc3QoKS0wXScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdYUGF0aCcsIGUuZmluZCwgJy4vdGFnW2xhc3QoKSsxXScpCisKICAgICBkZWYgdGVzdF9maW5kYWxsKHNlbGYpOgogICAgICAgICBlID0gRVQuWE1MKFNBTVBMRV9YTUwpCiAgICAgICAgIGVbMl0gPSBFVC5YTUwoU0FNUExFX1NFQ1RJT04pCkBAIC0xODg0LDcgKzIwNDQsNyBAQAogICAgICAgICAjIE1pbWljayBTaW1wbGVUQUwncyBiZWhhdmlvdXIgKGlzc3VlICMxNjA4OSk6IGJvdGggdmVyc2lvbnMgb2YKICAgICAgICAgIyBUcmVlQnVpbGRlciBzaG91bGQgYmUgYWJsZSB0byBjb3BlIHdpdGggYSBzdWJjbGFzcyBvZiB0aGUKICAgICAgICAgIyBwdXJlIFB5dGhvbiBFbGVtZW50IGNsYXNzLgotICAgICAgICBiYXNlID0gRVQuX0VsZW1lbnQKKyAgICAgICAgYmFzZSA9IEVULl9FbGVtZW50X1B5CiAgICAgICAgICMgTm90IGZyb20gYSBDIGV4dGVuc2lvbgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2UuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCiAgICAgICAgICMgRm9yY2Ugc29tZSBtdWx0aXBsZSBpbmhlcml0YW5jZSB3aXRoIGEgQyBjbGFzcyB0byBtYWtlIHRoaW5ncwpAQCAtMjI0Myw2ICsyNDAzLDE4IEBACiAgICAgICAgICAgICBFVC50b3N0cmluZyhyb290LCAndXRmLTE2JyksCiAgICAgICAgICAgICBiJycuam9pbihFVC50b3N0cmluZ2xpc3Qocm9vdCwgJ3V0Zi0xNicpKSkKIAorICAgIGRlZiB0ZXN0X3Nob3J0X2VtcHR5X2VsZW1lbnRzKHNlbGYpOgorICAgICAgICByb290ID0gRVQuZnJvbXN0cmluZygnPHRhZz5hPHggLz5iPHk+PC95PmM8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgRVQudG9zdHJpbmcocm9vdCwgJ3VuaWNvZGUnKSwKKyAgICAgICAgICAgICc8dGFnPmE8eCAvPmI8eSAvPmM8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgRVQudG9zdHJpbmcocm9vdCwgJ3VuaWNvZGUnLCBzaG9ydF9lbXB0eV9lbGVtZW50cz1UcnVlKSwKKyAgICAgICAgICAgICc8dGFnPmE8eCAvPmI8eSAvPmM8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgRVQudG9zdHJpbmcocm9vdCwgJ3VuaWNvZGUnLCBzaG9ydF9lbXB0eV9lbGVtZW50cz1GYWxzZSksCisgICAgICAgICAgICAnPHRhZz5hPHg+PC94PmI8eT48L3k+YzwvdGFnPicpCisKIAogY2xhc3MgUGFyc2VFcnJvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgpAQCAtMjMwOCw4ICsyNDgwLDExIEBACiAKICAgICAjIFRlc3QgdGhhdCB0aGUgQyBhY2NlbGVyYXRvciB3YXMgbm90IGltcG9ydGVkIGZvciBweUVUCiAgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfcHlFVChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweUVULkVsZW1lbnQuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHlFVC5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQorICAgICAgICAjIFRoZSB0eXBlIG9mIG1ldGhvZHMgZGVmaW5lZCBpbiBQeXRob24gY29kZSBpcyB0eXBlcy5GdW5jdGlvblR5cGUsCisgICAgICAgICMgd2hpbGUgdGhlIHR5cGUgb2YgbWV0aG9kcyBkZWZpbmVkIGluc2lkZSBfZWxlbWVudHRyZWUgaXMKKyAgICAgICAgIyA8Y2xhc3MgJ3dyYXBwZXJfZGVzY3JpcHRvcic+CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShweUVULkVsZW1lbnQuX19pbml0X18sIHR5cGVzLkZ1bmN0aW9uVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHB5RVQuWE1MUGFyc2VyLl9faW5pdF9fLCB0eXBlcy5GdW5jdGlvblR5cGUpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjM3MSw2ICsyNTQ2LDcgQEAKICAgICAgICAgRWxlbWVudFNsaWNpbmdUZXN0LAogICAgICAgICBCYXNpY0VsZW1lbnRUZXN0LAogICAgICAgICBFbGVtZW50VHJlZVRlc3QsCisgICAgICAgIEluY3JlbWVudGFsUGFyc2VyVGVzdCwKICAgICAgICAgSU9UZXN0LAogICAgICAgICBQYXJzZUVycm9yVGVzdCwKICAgICAgICAgWEluY2x1ZGVUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggYmNhYTcyNC4uYjNmZjdhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IHN5cywgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCiBjRVQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLApAQCAtMzMsMTQgKzM0LDIyIEBACiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY0VULCAncmVxdWlyZXMgX2VsZW1lbnR0cmVlJykKK0BzdXBwb3J0LmNweXRob25fb25seQogY2xhc3MgVGVzdEFjY2VsZXJhdG9ySW1wb3J0ZWQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGVzdCB0aGF0IHRoZSBDIGFjY2VsZXJhdG9yIHdhcyBpbXBvcnRlZCwgYXMgZXhwZWN0ZWQKICAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9jRVQoc2VsZik6CisgICAgICAgICMgU3ViRWxlbWVudCBpcyBhIGZ1bmN0aW9uIHNvIGl0IHJldGFpbnMgX2VsZW1lbnR0cmVlIGFzIGl0cyBtb2R1bGUuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY0VULlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ19lbGVtZW50dHJlZScpCiAKICAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9jRVRfYWxpYXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY0VUX2FsaWFzLlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ19lbGVtZW50dHJlZScpCiAKKyAgICBkZWYgdGVzdF9wYXJzZXJfY29tZXNfZnJvbV9DKHNlbGYpOgorICAgICAgICAjIFRoZSB0eXBlIG9mIG1ldGhvZHMgZGVmaW5lZCBpbiBQeXRob24gY29kZSBpcyB0eXBlcy5GdW5jdGlvblR5cGUsCisgICAgICAgICMgd2hpbGUgdGhlIHR5cGUgb2YgbWV0aG9kcyBkZWZpbmVkIGluc2lkZSBfZWxlbWVudHRyZWUgaXMKKyAgICAgICAgIyA8Y2xhc3MgJ3dyYXBwZXJfZGVzY3JpcHRvcic+CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjRVQuRWxlbWVudC5fX2luaXRfXywgdHlwZXMuRnVuY3Rpb25UeXBlKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCiBAc3VwcG9ydC5jcHl0aG9uX29ubHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggY2M1MjI1OS4uN2ZjNTJlMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTE1LDYgKzE1LDEwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogdHJ5OgorICAgIGltcG9ydCBnemlwCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZ3ppcCA9IE5vbmUKK3RyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQpAQCAtMjE2LDcgKzIyMCw3IEBACiAgICAgICAgICAgICB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5KCdodHRwczovL2xvY2FsaG9zdDo5OTk5JykuYmFkX2Z1bmN0aW9uKCkKICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc19zc2wsICJ4bWxycGMgY2xpZW50J3MgZXJyb3Igd2l0aCBTU0wgc3VwcG9ydCIpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc19zc2wpCiAKIGNsYXNzIEhlbHBlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTUwMCw3ICs1MDQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZXhjX21lc3MgPSBlLmhlYWRlcnMuZ2V0KCdYLWV4Y2VwdGlvbicpCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAjIElnbm9yZSBzb2NrZXQuZXJyb3JzIGhlcmUuCisgICAgICAgICMgSWdub3JlIE9TRXJyb3JzIGhlcmUuCiAgICAgICAgIGV4Y19tZXNzID0gc3RyKGUpCiAKICAgICBpZiBleGNfbWVzcyBhbmQgJ3RlbXBvcmFyaWx5IHVuYXZhaWxhYmxlJyBpbiBleGNfbWVzcy5sb3dlcigpOgpAQCAtNTE1LDcgKzUxOSw3IEBACiAgICAgICAgIGRlZiBtYWtlX3JlcXVlc3RfYW5kX3NraXAoc2VsZik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgeG1scnBjbGliLlNlcnZlclByb3h5KFVSTCkubXlfZnVuY3Rpb24oKQotICAgICAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgc29ja2V0LmVycm9yKSBhcyBlOgorICAgICAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgT1NFcnJvcikgYXMgZToKICAgICAgICAgICAgICAgICBpZiBub3QgaXNfdW5hdmFpbGFibGVfZXhjZXB0aW9uKGUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QocmVhc29uKQpAQCAtNTUzLDcgKzU1Nyw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvdyg2LDgpLCA2Kio4KQotICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBzb2NrZXQuZXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAjIGlnbm9yZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWJsb2NraW5nIHNvY2tldCAndW5hdmFpbGFibGUnIGVycm9ycwogICAgICAgICAgICAgaWYgbm90IGlzX3VuYXZhaWxhYmxlX2V4Y2VwdGlvbihlKToKICAgICAgICAgICAgICAgICAjIHByb3RvY29sIGVycm9yOyBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGVzdCBvdXRwdXQKQEAgLTU2Niw3ICs1NzAsNyBAQAogICAgICAgICAgICAgcCA9IHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShVUkwpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuYWRkKHN0YXJ0X3N0cmluZywgZW5kX3N0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X3N0cmluZyArIGVuZF9zdHJpbmcpCi0gICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIHNvY2tldC5lcnJvcikgYXMgZToKKyAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgT1NFcnJvcikgYXMgZToKICAgICAgICAgICAgICMgaWdub3JlIGZhaWx1cmVzIGR1ZSB0byBub24tYmxvY2tpbmcgc29ja2V0ICd1bmF2YWlsYWJsZScgZXJyb3JzCiAgICAgICAgICAgICBpZiBub3QgaXNfdW5hdmFpbGFibGVfZXhjZXB0aW9uKGUpOgogICAgICAgICAgICAgICAgICMgcHJvdG9jb2wgZXJyb3I7IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0ZXN0IG91dHB1dApAQCAtNTkyLDcgKzU5Niw3IEBACiAgICAgICAgICAgICBwID0geG1scnBjbGliLlNlcnZlclByb3h5KFVSTCkKICAgICAgICAgICAgIG1ldGggPSBwLnN5c3RlbS5saXN0TWV0aG9kcygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChtZXRoKSwgZXhwZWN0ZWRfbWV0aG9kcykKLSAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgc29ja2V0LmVycm9yKSBhcyBlOgorICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgIyBpZ25vcmUgZmFpbHVyZXMgZHVlIHRvIG5vbi1ibG9ja2luZyBzb2NrZXQgJ3VuYXZhaWxhYmxlJyBlcnJvcnMKICAgICAgICAgICAgIGlmIG5vdCBpc191bmF2YWlsYWJsZV9leGNlcHRpb24oZSk6CiAgICAgICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvcjsgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGluIHRlc3Qgb3V0cHV0CkBAIC02MDUsNyArNjA5LDcgQEAKICAgICAgICAgICAgIHAgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKQogICAgICAgICAgICAgZGl2aGVscCA9IHAuc3lzdGVtLm1ldGhvZEhlbHAoJ2RpdicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpdmhlbHAsICdUaGlzIGlzIHRoZSBkaXYgZnVuY3Rpb24nKQotICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBzb2NrZXQuZXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAjIGlnbm9yZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWJsb2NraW5nIHNvY2tldCAndW5hdmFpbGFibGUnIGVycm9ycwogICAgICAgICAgICAgaWYgbm90IGlzX3VuYXZhaWxhYmxlX2V4Y2VwdGlvbihlKToKICAgICAgICAgICAgICAgICAjIHByb3RvY29sIGVycm9yOyBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGVzdCBvdXRwdXQKQEAgLTYxOSw3ICs2MjMsNyBAQAogICAgICAgICAgICAgcCA9IHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShVUkwpCiAgICAgICAgICAgICBteWZ1bmN0aW9uID0gcC5zeXN0ZW0ubWV0aG9kSGVscCgnbXlfZnVuY3Rpb24nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWZ1bmN0aW9uLCAnVGhpcyBpcyBteSBmdW5jdGlvbicpCi0gICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIHNvY2tldC5lcnJvcikgYXMgZToKKyAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgT1NFcnJvcikgYXMgZToKICAgICAgICAgICAgICMgaWdub3JlIGZhaWx1cmVzIGR1ZSB0byBub24tYmxvY2tpbmcgc29ja2V0ICd1bmF2YWlsYWJsZScgZXJyb3JzCiAgICAgICAgICAgICBpZiBub3QgaXNfdW5hdmFpbGFibGVfZXhjZXB0aW9uKGUpOgogICAgICAgICAgICAgICAgICMgcHJvdG9jb2wgZXJyb3I7IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0ZXN0IG91dHB1dApAQCAtNjMyLDcgKzYzNiw3IEBACiAgICAgICAgICAgICBwID0geG1scnBjbGliLlNlcnZlclByb3h5KFVSTCkKICAgICAgICAgICAgIGRpdnNpZyA9IHAuc3lzdGVtLm1ldGhvZFNpZ25hdHVyZSgnZGl2JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGl2c2lnLCAnc2lnbmF0dXJlcyBub3Qgc3VwcG9ydGVkJykKLSAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgc29ja2V0LmVycm9yKSBhcyBlOgorICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgIyBpZ25vcmUgZmFpbHVyZXMgZHVlIHRvIG5vbi1ibG9ja2luZyBzb2NrZXQgJ3VuYXZhaWxhYmxlJyBlcnJvcnMKICAgICAgICAgICAgIGlmIG5vdCBpc191bmF2YWlsYWJsZV9leGNlcHRpb24oZSk6CiAgICAgICAgICAgICAgICAgIyBwcm90b2NvbCBlcnJvcjsgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGluIHRlc3Qgb3V0cHV0CkBAIC02NDksNyArNjUzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkX3Jlc3VsdCwgMiszKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3dfcmVzdWx0LCA2Kio4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXZfcmVzdWx0LCAxMjcvLzQyKQotICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBzb2NrZXQuZXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAjIGlnbm9yZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWJsb2NraW5nIHNvY2tldCAndW5hdmFpbGFibGUnIGVycm9ycwogICAgICAgICAgICAgaWYgbm90IGlzX3VuYXZhaWxhYmxlX2V4Y2VwdGlvbihlKToKICAgICAgICAgICAgICAgICAjIHByb3RvY29sIGVycm9yOyBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGVzdCBvdXRwdXQKQEAgLTY3MCw3ICs2NzQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQucmVzdWx0c1swXVsnZmF1bHRTdHJpbmcnXSwKICAgICAgICAgICAgICAgICAnPGNsYXNzIFwnRXhjZXB0aW9uXCc+Om1ldGhvZCAidGhpc19pc19ub3RfZXhpc3RzIiAnCiAgICAgICAgICAgICAgICAgJ2lzIG5vdCBzdXBwb3J0ZWQnKQotICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBzb2NrZXQuZXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAjIGlnbm9yZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWJsb2NraW5nIHNvY2tldCAndW5hdmFpbGFibGUnIGVycm9ycwogICAgICAgICAgICAgaWYgbm90IGlzX3VuYXZhaWxhYmxlX2V4Y2VwdGlvbihlKToKICAgICAgICAgICAgICAgICAjIHByb3RvY29sIGVycm9yOyBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGVzdCBvdXRwdXQKQEAgLTc5Myw2ICs3OTcsNyBAQAogCiAjQSB0ZXN0IGNhc2UgdGhhdCB2ZXJpZmllcyB0aGF0IGd6aXAgZW5jb2Rpbmcgd29ya3MgaW4gYm90aCBkaXJlY3Rpb25zCiAjKGZvciBhIHJlcXVlc3QgYW5kIHRoZSByZXNwb25zZSkKK0B1bml0dGVzdC5za2lwSWYoZ3ppcCBpcyBOb25lLCAncmVxdWlyZXMgZ3ppcCcpCiBjbGFzcyBHemlwU2VydmVyVGVzdENhc2UoQmFzZVNlcnZlclRlc3RDYXNlKToKICAgICAjYSByZXF1ZXN0IGhhbmRsZXIgdGhhdCBzdXBwb3J0cyBrZWVwLWFsaXZlIGFuZCBsb2dzIHJlcXVlc3RzIGludG8gYQogICAgICNjbGFzcyB2YXJpYWJsZQpAQCAtOTIzLDcgKzkyOCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvdyg2LDgpLCA2Kio4KQotICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBzb2NrZXQuZXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAjIGlnbm9yZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWJsb2NraW5nIHNvY2tldCAndW5hdmFpbGFibGUnIGVycm9ycwogICAgICAgICAgICAgaWYgbm90IGlzX3VuYXZhaWxhYmxlX2V4Y2VwdGlvbihlKToKICAgICAgICAgICAgICAgICAjIHByb3RvY29sIGVycm9yOyBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGVzdCBvdXRwdXQKQEAgLTkzNiw3ICs5NDEsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwID0geG1scnBjbGliLlNlcnZlclByb3h5KFVSTCkKICAgICAgICAgICAgIHAucG93KDYsOCkKLSAgICAgICAgZXhjZXB0ICh4bWxycGNsaWIuUHJvdG9jb2xFcnJvciwgc29ja2V0LmVycm9yKSBhcyBlOgorICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgIyBpZ25vcmUgZmFpbHVyZXMgZHVlIHRvIG5vbi1ibG9ja2luZyBzb2NrZXQgJ3VuYXZhaWxhYmxlJyBlcnJvcnMKICAgICAgICAgICAgIGlmIG5vdCBpc191bmF2YWlsYWJsZV9leGNlcHRpb24oZSkgYW5kIGhhc2F0dHIoZSwgImhlYWRlcnMiKToKICAgICAgICAgICAgICAgICAjIFRoZSB0d28gc2VydmVyLXNpZGUgZXJyb3IgaGVhZGVycyBzaG91bGRuJ3QgYmUgc2VudCBiYWNrIGluIHRoaXMgY2FzZQpAQCAtOTU2LDcgKzk2MSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHAgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKQogICAgICAgICAgICAgcC5wb3coNiw4KQotICAgICAgICBleGNlcHQgKHhtbHJwY2xpYi5Qcm90b2NvbEVycm9yLCBzb2NrZXQuZXJyb3IpIGFzIGU6CisgICAgICAgIGV4Y2VwdCAoeG1scnBjbGliLlByb3RvY29sRXJyb3IsIE9TRXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAjIGlnbm9yZSBmYWlsdXJlcyBkdWUgdG8gbm9uLWJsb2NraW5nIHNvY2tldCAndW5hdmFpbGFibGUnIGVycm9ycwogICAgICAgICAgICAgaWYgbm90IGlzX3VuYXZhaWxhYmxlX2V4Y2VwdGlvbihlKSBhbmQgaGFzYXR0cihlLCAiaGVhZGVycyIpOgogICAgICAgICAgICAgICAgICMgV2Ugc2hvdWxkIGdldCBlcnJvciBpbmZvIGluIHRoZSByZXNwb25zZQpAQCAtMTA4NCwyMyArMTA4OSwxMyBAQAogCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKLSAgICB4bWxycGNfdGVzdHMgPSBbWE1MUlBDVGVzdENhc2UsIEhlbHBlclRlc3RDYXNlLCBEYXRlVGltZVRlc3RDYXNlLAotICAgICAgICAgQmluYXJ5VGVzdENhc2UsIEZhdWx0VGVzdENhc2VdCi0gICAgeG1scnBjX3Rlc3RzLmFwcGVuZChVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSkKLSAgICB4bWxycGNfdGVzdHMuYXBwZW5kKFNpbXBsZVNlcnZlclRlc3RDYXNlKQotICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoS2VlcGFsaXZlU2VydmVyVGVzdENhc2UxKQotICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoS2VlcGFsaXZlU2VydmVyVGVzdENhc2UyKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IGd6aXAKLSAgICAgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChHemlwU2VydmVyVGVzdENhc2UpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzICNnemlwIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWlsZAotICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoTXVsdGlQYXRoU2VydmVyVGVzdENhc2UpCi0gICAgeG1scnBjX3Rlc3RzLmFwcGVuZChTZXJ2ZXJQcm94eVRlc3RDYXNlKQotICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoRmFpbGluZ1NlcnZlclRlc3RDYXNlKQotICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoQ0dJSGFuZGxlclRlc3RDYXNlKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFhNTFJQQ1Rlc3RDYXNlLCBIZWxwZXJUZXN0Q2FzZSwgRGF0ZVRpbWVUZXN0Q2FzZSwKKyAgICAgICAgICAgIEJpbmFyeVRlc3RDYXNlLCBGYXVsdFRlc3RDYXNlLCBVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSwKKyAgICAgICAgICAgIFNpbXBsZVNlcnZlclRlc3RDYXNlLCBLZWVwYWxpdmVTZXJ2ZXJUZXN0Q2FzZTEsCisgICAgICAgICAgICBLZWVwYWxpdmVTZXJ2ZXJUZXN0Q2FzZTIsIEd6aXBTZXJ2ZXJUZXN0Q2FzZSwKKyAgICAgICAgICAgIE11bHRpUGF0aFNlcnZlclRlc3RDYXNlLCBTZXJ2ZXJQcm94eVRlc3RDYXNlLCBGYWlsaW5nU2VydmVyVGVzdENhc2UsCisgICAgICAgICAgICBDR0lIYW5kbGVyVGVzdENhc2UpCiAKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqeG1scnBjX3Rlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKaW5kZXggZGZiNWY5YS4uNDU3ZTNmYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQpAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICBzZXJ2ZXIgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoImh0dHA6Ly90aW1lLnhtbHJwYy5jb20vUlBDMiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHQwID0gc2VydmVyLmN1cnJlbnRUaW1lLmdldEN1cnJlbnRUaW1lKCkKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmV0d29yayBlcnJvcjogJXMiICUgZSkKICAgICAgICAgICAgIHJldHVybgogCkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgIHNlcnZlciA9IHhtbHJwY2xpYi5TZXJ2ZXJQcm94eSgiaHR0cDovL2J1aWxkYm90LnB5dGhvbi5vcmcvYWxsL3htbHJwYy8iKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBidWlsZGVycyA9IHNlcnZlci5nZXRBbGxCdWlsZGVycygpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5ldHdvcmsgZXJyb3I6ICVzIiAlIGUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc2VydmVyKCdjbG9zZScpKCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggZmI4NjZkOC4uMjZkZDA5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RydWN0CkBAIC01MTgsNyArNTE4LDcgQEAKICAgICAgICAgICAgICAgICBpZiBvcy5hbHRzZXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHBhdGhfc3BsaXQuZXh0ZW5kKGZuLnNwbGl0KG9zLmFsdHNlcCkpCiAgICAgICAgICAgICAgICAgaWYgJ19fcHljYWNoZV9fJyBpbiBwYXRoX3NwbGl0OgotICAgICAgICAgICAgICAgICAgICBmbiA9IGltcC5zb3VyY2VfZnJvbV9jYWNoZShmbikKKyAgICAgICAgICAgICAgICAgICAgZm4gPSBpbXBvcnRsaWIudXRpbC5zb3VyY2VfZnJvbV9jYWNoZShmbikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmbiA9IGZuWzotMV0KIApAQCAtODc0LDcgKzg3NCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgJ2EnKSBhcyB6ZjoKICAgICAgICAgICAgICAgICB6Zi53cml0ZXN0cihmaWxlbmFtZSwgY29udGVudCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgYXBwZW5kIGRhdGEgdG8gYSBub24tZXhpc3RlbnQgemlwIGZpbGUuJykKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoVEVTVEZOKSkKQEAgLTk0Niw3ICs5NDYsNyBAQAogICAgICAgICBmcC5zZWVrKDAsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh6aXBmaWxlLmlzX3ppcGZpbGUoZnApKQogCi0gICAgZGVmIHRlc3Rfbm9uX2V4aXN0ZW50X2ZpbGVfcmFpc2VzX0lPRXJyb3Ioc2VsZik6CisgICAgZGVmIHRlc3Rfbm9uX2V4aXN0ZW50X2ZpbGVfcmFpc2VzX09TRXJyb3Ioc2VsZik6CiAgICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yIHdoZW4gYSBwYXJ0aWFsbHktY29uc3RydWN0ZWQKICAgICAgICAgIyBaaXBGaWxlIGluc3RhbmNlIGlzIGZpbmFsaXplZDsgdGhpcyB0ZXN0cyBmb3IgcmVncmVzc2lvbiBvbiBTRiB0cmFja2VyCiAgICAgICAgICMgYnVnICM0MDM4NzEuCkBAIC05NTgsNyArOTU4LDcgQEAKICAgICAgICAgIyBpdCBpcyBpZ25vcmVkLCBidXQgdGhlIHVzZXIgc2hvdWxkIGJlIHN1ZmZpY2llbnRseSBhbm5veWVkIGJ5CiAgICAgICAgICMgdGhlIG1lc3NhZ2Ugb24gdGhlIG91dHB1dCB0aGF0IHJlZ3Jlc3Npb24gd2lsbCBiZSBub3RpY2VkCiAgICAgICAgICMgcXVpY2tseS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZV9yYWlzZXNfQmFkWmlwRmlsZShzZWxmKToKICAgICAgICAgZiA9IG9wZW4oVEVTVEZOLCAndycpCkBAIC0xMTQ1LDcgKzExNDUsNyBAQAogICAgIGRlZiB0ZXN0X29wZW5fZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNzEwNzAzOiBDaGVjayB0aGF0IG9wZW5pbmcgYSBmaWxlIHdpdGggbGVzcyB0aGFuIDIyIGJ5dGVzCiAgICAgICAgICMgcmFpc2VzIGEgQmFkWmlwRmlsZSBleGNlcHRpb24gKHJhdGhlciB0aGFuIHRoZSBwcmV2aW91c2x5IHVuaGVscGZ1bAotICAgICAgICAjIElPRXJyb3IpCisgICAgICAgICMgT1NFcnJvcikKICAgICAgICAgZiA9IG9wZW4oVEVTVEZOLCAndycpCiAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh6aXBmaWxlLkJhZFppcEZpbGUsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAncicpCkBAIC0xNjI5LDYgKzE2MjksNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9MWk1BCiAKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKaW5kZXggZjdjYjhiOS4uM2YxNjA0MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKQEAgLTEsMTMgKzEsMTIgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG1hcnNoYWwKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC50ZXN0X2ltcG9ydGhvb2tzIGltcG9ydCBJbXBvcnRIb29rc0Jhc2VUZXN0Q2FzZSwgdGVzdF9zcmMsIHRlc3RfY28KIAogZnJvbSB6aXBmaWxlIGltcG9ydCBaaXBGaWxlLCBaaXBJbmZvLCBaSVBfU1RPUkVELCBaSVBfREVGTEFURUQKIApAQCAtMTcsNiArMTYsMTQgQEAKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgaW8KIGZyb20gdHJhY2ViYWNrIGltcG9ydCBleHRyYWN0X3RiLCBleHRyYWN0X3N0YWNrLCBwcmludF90YgorCit0ZXN0X3NyYyA9ICIiIlwKK2RlZiBnZXRfbmFtZSgpOgorICAgIHJldHVybiBfX25hbWVfXworZGVmIGdldF9maWxlKCk6CisgICAgcmV0dXJuIF9fZmlsZV9fCisiIiIKK3Rlc3RfY28gPSBjb21waWxlKHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpCiByYWlzZV9zcmMgPSAnZGVmIGRvX3JhaXNlKCk6IHJhaXNlIFR5cGVFcnJvclxuJwogCiBkZWYgbWFrZV9weWMoY28sIG10aW1lLCBzaXplKToKQEAgLTI3LDcgKzM0LDggQEAKICAgICAgICAgICAgIG10aW1lID0gaW50KG10aW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbXRpbWUgPSBpbnQoLTB4MTAwMDAwMDAwICsgaW50KG10aW1lKSkKLSAgICBweWMgPSBpbXAuZ2V0X21hZ2ljKCkgKyBzdHJ1Y3QucGFjaygiPGlpIiwgaW50KG10aW1lKSwgc2l6ZSAmIDB4RkZGRkZGRkYpICsgZGF0YQorICAgIHB5YyA9IChpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVIgKworICAgICAgICBzdHJ1Y3QucGFjaygiPGlpIiwgaW50KG10aW1lKSwgc2l6ZSAmIDB4RkZGRkZGRkYpICsgZGF0YSkKICAgICByZXR1cm4gcHljCiAKIGRlZiBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShwYXRoKToKQEAgLTQyLDEwICs1MCwyNyBAQAogVEVTVFBBQ0syID0gInppcHRlc3RwYWNrYWdlMiIKIFRFTVBfWklQID0gb3MucGF0aC5hYnNwYXRoKCJqdW5rOTUxNDIuemlwIikKIAotcHljX2ZpbGUgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoVEVTVE1PRCArICcucHknKQorcHljX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShURVNUTU9EICsgJy5weScpCiBweWNfZXh0ID0gKCcucHljJyBpZiBfX2RlYnVnX18gZWxzZSAnLnB5bycpCiAKIAorY2xhc3MgSW1wb3J0SG9va3NCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnBhdGggPSBzeXMucGF0aFs6XQorICAgICAgICBzZWxmLm1ldGFfcGF0aCA9IHN5cy5tZXRhX3BhdGhbOl0KKyAgICAgICAgc2VsZi5wYXRoX2hvb2tzID0gc3lzLnBhdGhfaG9va3NbOl0KKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQorICAgICAgICBzZWxmLm1vZHVsZXNfYmVmb3JlID0gc3VwcG9ydC5tb2R1bGVzX3NldHVwKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLnBhdGgKKyAgICAgICAgc3lzLm1ldGFfcGF0aFs6XSA9IHNlbGYubWV0YV9wYXRoCisgICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2VsZi5wYXRoX2hvb2tzCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgc3VwcG9ydC5tb2R1bGVzX2NsZWFudXAoKnNlbGYubW9kdWxlc19iZWZvcmUpCisKKwogY2xhc3MgVW5jb21wcmVzc2VkWmlwSW1wb3J0VGVzdENhc2UoSW1wb3J0SG9va3NCYXNlVGVzdENhc2UpOgogCiAgICAgY29tcHJlc3Npb24gPSBaSVBfU1RPUkVECkBAIC0xOTYsNiArMjIxLDcgQEAKICAgICAgICAgICAgIGZvciBuYW1lLCAobXRpbWUsIGRhdGEpIGluIGZpbGVzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgemluZm8gPSBaaXBJbmZvKG5hbWUsIHRpbWUubG9jYWx0aW1lKG10aW1lKSkKICAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgorICAgICAgICAgICAgICAgIHppbmZvLmNvbW1lbnQgPSBiInNwYW0iCiAgICAgICAgICAgICAgICAgei53cml0ZXN0cih6aW5mbywgZGF0YSkKICAgICAgICAgICAgIHouY2xvc2UoKQogCkBAIC0yNDUsNiArMjcxLDcgQEAKICAgICAgICAgICAgIGZvciBuYW1lLCAobXRpbWUsIGRhdGEpIGluIGZpbGVzLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgemluZm8gPSBaaXBJbmZvKG5hbWUsIHRpbWUubG9jYWx0aW1lKG10aW1lKSkKICAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgorICAgICAgICAgICAgICAgIHppbmZvLmNvbW1lbnQgPSBiImVnZ3MiCiAgICAgICAgICAgICAgICAgei53cml0ZXN0cih6aW5mbywgZGF0YSkKICAgICAgICAgICAgIHouY2xvc2UoKQogCkBAIC00NTksNyArNDg2LDcgQEAKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3IsIHoubG9hZF9tb2R1bGUsICdhYmMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3IsIHouZ2V0X2NvZGUsICdhYmMnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgei5nZXRfZGF0YSwgJ2FiYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCB6LmdldF9kYXRhLCAnYWJjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9yLCB6LmdldF9zb3VyY2UsICdhYmMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3IsIHouaXNfcGFja2FnZSwgJ2FiYycpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5IGIvTGliL3Rlc3QvdGZfaW5oZXJpdF9jaGVjay5weQppbmRleCA5MmViZDk1Li5hZmU1MGQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5CisrKyBiL0xpYi90ZXN0L3RmX2luaGVyaXRfY2hlY2sucHkKQEAgLTExLDcgKzExLDcgQEAKIAogICAgIHRyeToKICAgICAgICAgb3Mud3JpdGUoZmQsIGIiYmxhdCIpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAjIFN1Y2Nlc3MgLS0gY291bGQgbm90IHdyaXRlIHRvIGZkLgogICAgICAgICBzeXMuZXhpdCgwKQogICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvdGhyZWFkaW5nLnB5IGIvTGliL3RocmVhZGluZy5weQppbmRleCBhYjkzMDJjLi4zNTI2ODk0IDEwMDY0NAotLS0gYS9MaWIvdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90aHJlYWRpbmcucHkKQEAgLTEwLDYgKzEwLDExIEBACiAgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YyBhcyBfZm9ybWF0X2V4YwogZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZSBhcyBfaXNsaWNlCit0cnk6CisgICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlIGFzIF9kZXF1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlIGFzIF9kZXF1ZQogCiAjIE5vdGUgcmVnYXJkaW5nIFBFUCA4IGNvbXBsaWFudCBuYW1lcwogIyAgVGhpcyB0aHJlYWRpbmcgbW9kZWwgd2FzIG9yaWdpbmFsbHkgaW5zcGlyZWQgYnkgSmF2YSwgYW5kIGluaGVyaXRlZApAQCAtNzksNyArODQsNyBAQAogICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpOgogICAgICAgICBtZSA9IGdldF9pZGVudCgpCiAgICAgICAgIGlmIHNlbGYuX293bmVyID09IG1lOgotICAgICAgICAgICAgc2VsZi5fY291bnQgPSBzZWxmLl9jb3VudCArIDEKKyAgICAgICAgICAgIHNlbGYuX2NvdW50ICs9IDEKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIHJjID0gc2VsZi5fYmxvY2suYWNxdWlyZShibG9ja2luZywgdGltZW91dCkKICAgICAgICAgaWYgcmM6CkBAIC0xNDYsNyArMTUxLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2lzX293bmVkID0gbG9jay5faXNfb3duZWQKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLl93YWl0ZXJzID0gW10KKyAgICAgICAgc2VsZi5fd2FpdGVycyA9IF9kZXF1ZSgpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2VudGVyX18oKQpAQCAtMjE2LDE0ICsyMjEsMTQgQEAKICAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19vd25lZCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3Qgbm90aWZ5IG9uIHVuLWFjcXVpcmVkIGxvY2siKQotICAgICAgICBfX3dhaXRlcnMgPSBzZWxmLl93YWl0ZXJzCi0gICAgICAgIHdhaXRlcnMgPSBfX3dhaXRlcnNbOm5dCi0gICAgICAgIGlmIG5vdCB3YWl0ZXJzOgorICAgICAgICBhbGxfd2FpdGVycyA9IHNlbGYuX3dhaXRlcnMKKyAgICAgICAgd2FpdGVyc190b19ub3RpZnkgPSBfZGVxdWUoX2lzbGljZShhbGxfd2FpdGVycywgbikpCisgICAgICAgIGlmIG5vdCB3YWl0ZXJzX3RvX25vdGlmeToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBmb3Igd2FpdGVyIGluIHdhaXRlcnM6CisgICAgICAgIGZvciB3YWl0ZXIgaW4gd2FpdGVyc190b19ub3RpZnk6CiAgICAgICAgICAgICB3YWl0ZXIucmVsZWFzZSgpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX193YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCisgICAgICAgICAgICAgICAgYWxsX3dhaXRlcnMucmVtb3ZlKHdhaXRlcikKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIApAQCAtMjYxLDcgKzI2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQodGltZW91dCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSAtIDEKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZSAtPSAxCiAgICAgICAgICAgICAgICAgcmMgPSBUcnVlCiAgICAgICAgIHJldHVybiByYwogCkBAIC0yNjksNyArMjc0LDcgQEAKIAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6Ci0gICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHNlbGYuX3ZhbHVlICsgMQorICAgICAgICAgICAgc2VsZi5fdmFsdWUgKz0gMQogICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKQEAgLTUwNCw3ICs1MDksNyBAQAogX2NvdW50ZXIgPSAwCiBkZWYgX25ld25hbWUodGVtcGxhdGU9IlRocmVhZC0lZCIpOgogICAgIGdsb2JhbCBfY291bnRlcgotICAgIF9jb3VudGVyID0gX2NvdW50ZXIgKyAxCisgICAgX2NvdW50ZXIgKz0gMQogICAgIHJldHVybiB0ZW1wbGF0ZSAlIF9jb3VudGVyCiAKICMgQWN0aXZlIHRocmVhZCBhZG1pbmlzdHJhdGlvbgpkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKaW5kZXggNGY3ZDI4Zi4uZWFkMjAzMCAxMDA2NDQKLS0tIGEvTGliL3RpbWVpdC5weQorKysgYi9MaWIvdGltZWl0LnB5CkBAIC0zMSwzOCArMzEsMjkgQEAKIElmIC1uIGlzIG5vdCBnaXZlbiwgYSBzdWl0YWJsZSBudW1iZXIgb2YgbG9vcHMgaXMgY2FsY3VsYXRlZCBieSB0cnlpbmcKIHN1Y2Nlc3NpdmUgcG93ZXJzIG9mIDEwIHVudGlsIHRoZSB0b3RhbCB0aW1lIGlzIGF0IGxlYXN0IDAuMiBzZWNvbmRzLgogCi1UaGUgZGlmZmVyZW5jZSBpbiBkZWZhdWx0IHRpbWVyIGZ1bmN0aW9uIGlzIGJlY2F1c2Ugb24gV2luZG93cywKLWNsb2NrKCkgaGFzIG1pY3Jvc2Vjb25kIGdyYW51bGFyaXR5IGJ1dCB0aW1lKCkncyBncmFudWxhcml0eSBpcyAxLzYwdGgKLW9mIGEgc2Vjb25kOyBvbiBVbml4LCBjbG9jaygpIGhhcyAxLzEwMHRoIG9mIGEgc2Vjb25kIGdyYW51bGFyaXR5IGFuZAotdGltZSgpIGlzIG11Y2ggbW9yZSBwcmVjaXNlLiAgT24gZWl0aGVyIHBsYXRmb3JtLCB0aGUgZGVmYXVsdCB0aW1lcgotZnVuY3Rpb25zIG1lYXN1cmUgd2FsbCBjbG9jayB0aW1lLCBub3QgdGhlIENQVSB0aW1lLiAgVGhpcyBtZWFucyB0aGF0Ci1vdGhlciBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgc2FtZSBjb21wdXRlciBtYXkgaW50ZXJmZXJlIHdpdGggdGhlCi10aW1pbmcuICBUaGUgYmVzdCB0aGluZyB0byBkbyB3aGVuIGFjY3VyYXRlIHRpbWluZyBpcyBuZWNlc3NhcnkgaXMgdG8KLXJlcGVhdCB0aGUgdGltaW5nIGEgZmV3IHRpbWVzIGFuZCB1c2UgdGhlIGJlc3QgdGltZS4gIFRoZSAtciBvcHRpb24gaXMKLWdvb2QgZm9yIHRoaXM7IHRoZSBkZWZhdWx0IG9mIDMgcmVwZXRpdGlvbnMgaXMgcHJvYmFibHkgZW5vdWdoIGluIG1vc3QKLWNhc2VzLiAgT24gVW5peCwgeW91IGNhbiB1c2UgY2xvY2soKSB0byBtZWFzdXJlIENQVSB0aW1lLgotCiBOb3RlOiB0aGVyZSBpcyBhIGNlcnRhaW4gYmFzZWxpbmUgb3ZlcmhlYWQgYXNzb2NpYXRlZCB3aXRoIGV4ZWN1dGluZyBhCi1wYXNzIHN0YXRlbWVudC4gIFRoZSBjb2RlIGhlcmUgZG9lc24ndCB0cnkgdG8gaGlkZSBpdCwgYnV0IHlvdSBzaG91bGQKLWJlIGF3YXJlIG9mIGl0LiAgVGhlIGJhc2VsaW5lIG92ZXJoZWFkIGNhbiBiZSBtZWFzdXJlZCBieSBpbnZva2luZyB0aGUKLXByb2dyYW0gd2l0aG91dCBhcmd1bWVudHMuCitwYXNzIHN0YXRlbWVudC4gIEl0IGRpZmZlcnMgYmV0d2VlbiB2ZXJzaW9ucy4gIFRoZSBjb2RlIGhlcmUgZG9lc24ndCB0cnkKK3RvIGhpZGUgaXQsIGJ1dCB5b3Ugc2hvdWxkIGJlIGF3YXJlIG9mIGl0LiAgVGhlIGJhc2VsaW5lIG92ZXJoZWFkIGNhbiBiZQorbWVhc3VyZWQgYnkgaW52b2tpbmcgdGhlIHByb2dyYW0gd2l0aG91dCBhcmd1bWVudHMuCiAKLVRoZSBiYXNlbGluZSBvdmVyaGVhZCBkaWZmZXJzIGJldHdlZW4gUHl0aG9uIHZlcnNpb25zISAgQWxzbywgdG8KLWZhaXJseSBjb21wYXJlIG9sZGVyIFB5dGhvbiB2ZXJzaW9ucyB0byBQeXRob24gMi4zLCB5b3UgbWF5IHdhbnQgdG8KLXVzZSBweXRob24gLU8gZm9yIHRoZSBvbGRlciB2ZXJzaW9ucyB0byBhdm9pZCB0aW1pbmcgU0VUX0xJTkVOTwotaW5zdHJ1Y3Rpb25zLgorQ2xhc3NlczoKKworICAgIFRpbWVyCisKK0Z1bmN0aW9uczoKKworICAgIHRpbWVpdChzdHJpbmcsIHN0cmluZykgLT4gZmxvYXQKKyAgICByZXBlYXQoc3RyaW5nLCBzdHJpbmcpIC0+IGxpc3QKKyAgICBkZWZhdWx0X3RpbWVyKCkgLT4gZmxvYXQKKwogIiIiCiAKIGltcG9ydCBnYwogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKLXRyeToKLSAgICBpbXBvcnQgaXRlcnRvb2xzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgIyBNdXN0IGJlIGFuIG9sZGVyIFB5dGhvbiB2ZXJzaW9uIChzZWUgdGltZWl0KCkgYmVsb3cpCi0gICAgaXRlcnRvb2xzID0gTm9uZQoraW1wb3J0IGl0ZXJ0b29scwogCi1fX2FsbF9fID0gWyJUaW1lciJdCitfX2FsbF9fID0gWyJUaW1lciIsICJ0aW1laXQiLCAicmVwZWF0IiwgImRlZmF1bHRfdGltZXIiXQogCiBkdW1teV9zcmNfbmFtZSA9ICI8dGltZWl0LXNyYz4iCiBkZWZhdWx0X251bWJlciA9IDEwMDAwMDAKQEAgLTE4MCwxMCArMTcxLDcgQEAKICAgICAgICAgdG8gb25lIG1pbGxpb24uICBUaGUgbWFpbiBzdGF0ZW1lbnQsIHRoZSBzZXR1cCBzdGF0ZW1lbnQgYW5kCiAgICAgICAgIHRoZSB0aW1lciBmdW5jdGlvbiB0byBiZSB1c2VkIGFyZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgaXRlcnRvb2xzOgotICAgICAgICAgICAgaXQgPSBpdGVydG9vbHMucmVwZWF0KE5vbmUsIG51bWJlcikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGl0ID0gW05vbmVdICogbnVtYmVyCisgICAgICAgIGl0ID0gaXRlcnRvb2xzLnJlcGVhdChOb25lLCBudW1iZXIpCiAgICAgICAgIGdjb2xkID0gZ2MuaXNlbmFibGVkKCkKICAgICAgICAgZ2MuZGlzYWJsZSgpCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggZjYxOTc4Ni4uZjc4ZDI0ZCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTIxODEsNDUgKzIxODEsNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW52b2tlJykKIAotCi0jIEluZGljZXM6Ci0jIFhYWCBJIGRvbid0IGxpa2UgdGhlc2UgLS0gdGFrZSB0aGVtIGF3YXkKLWRlZiBBdEVuZCgpOgotICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRFbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gJ2VuZCcKLQotCi1kZWYgQXRJbnNlcnQoKmFyZ3MpOgotICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRJbnNlcnQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICBzID0gJ2luc2VydCcKLSAgICBmb3IgYSBpbiBhcmdzOgotICAgICAgICBpZiBhOiBzID0gcyArICgnICcgKyBhKQotICAgIHJldHVybiBzCi0KLQotZGVmIEF0U2VsRmlyc3QoKToKLSAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0U2VsRmlyc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gJ3NlbC5maXJzdCcKLQotCi1kZWYgQXRTZWxMYXN0KCk6Ci0gICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdFNlbExhc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gJ3NlbC5sYXN0JwotCi0KLWRlZiBBdCh4LCB5PU5vbmUpOgotICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICBpZiB5IGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiAnQCVyJyAlICh4LCkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJ0AlciwlcicgJSAoeCwgeSkKLQotCiBjbGFzcyBDYW52YXMoV2lkZ2V0LCBYVmlldywgWVZpZXcpOgogICAgICIiIkNhbnZhcyB3aWRnZXQgdG8gZGlzcGxheSBncmFwaGljYWwgZWxlbWVudHMgbGlrZSBsaW5lcyBvciB0ZXh0LiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkgYi9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CmluZGV4IDNmZmIyNTIuLmE3MWFmYjIgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgIGRpciwgcGF0ID0gc2VsZi5nZXRfZmlsdGVyKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcikKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHNlbGYubWFzdGVyLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuZGlyZWN0b3J5ID0gZGlyCkBAIC0yMDksNyArMjA5LDcgQEAKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMoZGlyKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwd2QgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcHdkID0gTm9uZQogICAgICAgICAgICAgaWYgcHdkOgogICAgICAgICAgICAgICAgIGRpciA9IG9zLnBhdGguam9pbihwd2QsIGRpcikKZGlmZiAtLWdpdCBhL0xpYi90b2tlbi5weSBiL0xpYi90b2tlbi5weQppbmRleCAzMWZhZTBhLi43NDcwYzhjIDEwMDc1NQotLS0gYS9MaWIvdG9rZW4ucHkKKysrIGIvTGliL3Rva2VuLnB5CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIG91dEZpbGVOYW1lID0gYXJnc1sxXQogICAgIHRyeToKICAgICAgICAgZnAgPSBvcGVuKGluRmlsZU5hbWUpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCgxKQogICAgIGxpbmVzID0gZnAucmVhZCgpLnNwbGl0KCJcbiIpCkBAIC0xMTIsNyArMTEyLDcgQEAKICAgICAjIGxvYWQgdGhlIG91dHB1dCBza2VsZXRvbiBmcm9tIHRoZSB0YXJnZXQ6CiAgICAgdHJ5OgogICAgICAgICBmcCA9IG9wZW4ob3V0RmlsZU5hbWUpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCgyKQogICAgIGZvcm1hdCA9IGZwLnJlYWQoKS5zcGxpdCgiXG4iKQpAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgZm9ybWF0W3N0YXJ0OmVuZF0gPSBsaW5lcwogICAgIHRyeToKICAgICAgICAgZnAgPSBvcGVuKG91dEZpbGVOYW1lLCAndycpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCg0KQogICAgIGZwLndyaXRlKCJcbiIuam9pbihmb3JtYXQpKQpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IGNiZjkxZWYuLjJmYmRlMGYgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTY3MCw3ICs2NzAsNyBAQAogICAgICAgICBlcnJvcihlcnIuYXJnc1swXSwgZmlsZW5hbWUsIChsaW5lLCBjb2x1bW4pKQogICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlcnI6CiAgICAgICAgIGVycm9yKGVyciwgZmlsZW5hbWUpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgZXJyb3IoZXJyKQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgcHJpbnQoImludGVycnVwdGVkXG4iKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlLnB5IGIvTGliL3RyYWNlLnB5CmluZGV4IGMwOWIzNjUuLjA5ZmU5ZWUgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZS5weQorKysgYi9MaWIvdHJhY2UucHkKQEAgLTIzOCw3ICsyMzgsNyBAQAogICAgICAgICAgICAgICAgIGNvdW50cywgY2FsbGVkZnVuY3MsIGNhbGxlcnMgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUubG9hZChvcGVuKHNlbGYuaW5maWxlLCAncmInKSkKICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZShzZWxmLl9fY2xhc3NfXyhjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzKSkKLSAgICAgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgRU9GRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycjoKICAgICAgICAgICAgICAgICBwcmludCgoIlNraXBwaW5nIGNvdW50cyBmaWxlICVyOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5pbmZpbGUsIGVycikpLCBmaWxlPXN5cy5zdGRlcnIpCiAKQEAgLTM0OCw3ICszNDgsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKChzZWxmLmNvdW50cywgc2VsZi5jYWxsZWRmdW5jcywgc2VsZi5jYWxsZXJzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuKHNlbGYub3V0ZmlsZSwgJ3diJyksIDEpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgcHJpbnQoIkNhbid0IHNhdmUgY291bnRzIGZpbGVzIGJlY2F1c2UgJXMiICUgZXJyLCBmaWxlPXN5cy5zdGRlcnIpCiAKICAgICBkZWYgd3JpdGVfcmVzdWx0c19maWxlKHNlbGYsIHBhdGgsIGxpbmVzLCBsbm90YWIsIGxpbmVzX2hpdCwgZW5jb2Rpbmc9Tm9uZSk6CkBAIC0zNTYsNyArMzU2LDcgQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRmaWxlID0gb3BlbihwYXRoLCAidyIsIGVuY29kaW5nPWVuY29kaW5nKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIHByaW50KCgidHJhY2U6IENvdWxkIG5vdCBvcGVuICVyIGZvciB3cml0aW5nOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLSBza2lwcGluZyIgJSAocGF0aCwgZXJyKSksIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgICAgIHJldHVybiAwLCAwCkBAIC00MzcsNyArNDM3LDcgQEAKICAgICAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGVuYW1lKSBhcyBmOgogICAgICAgICAgICAgcHJvZyA9IGYucmVhZCgpCiAgICAgICAgICAgICBlbmNvZGluZyA9IGYuZW5jb2RpbmcKLSAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICBwcmludCgoIk5vdCBwcmludGluZyBjb3ZlcmFnZSBkYXRhIGZvciAlcjogJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChmaWxlbmFtZSwgZXJyKSksIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgcmV0dXJuIHt9CkBAIC04MDIsNyArODAyLDcgQEAKICAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgX2Vycl9leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQogICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IGVlYjllNzMuLjNhYTE1NzggMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMiwyNiArMiwzMSBAQAogCiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgc3lzCitpbXBvcnQgb3BlcmF0b3IKIAogX19hbGxfXyA9IFsnZXh0cmFjdF9zdGFjaycsICdleHRyYWN0X3RiJywgJ2Zvcm1hdF9leGNlcHRpb24nLAogICAgICAgICAgICAnZm9ybWF0X2V4Y2VwdGlvbl9vbmx5JywgJ2Zvcm1hdF9saXN0JywgJ2Zvcm1hdF9zdGFjaycsCiAgICAgICAgICAgICdmb3JtYXRfdGInLCAncHJpbnRfZXhjJywgJ2Zvcm1hdF9leGMnLCAncHJpbnRfZXhjZXB0aW9uJywKICAgICAgICAgICAgJ3ByaW50X2xhc3QnLCAncHJpbnRfc3RhY2snLCAncHJpbnRfdGInXQogCi1kZWYgX3ByaW50KGZpbGUsIHN0cj0nJywgdGVybWluYXRvcj0nXG4nKToKLSAgICBmaWxlLndyaXRlKHN0cit0ZXJtaW5hdG9yKQorIworIyBGb3JtYXR0aW5nIGFuZCBwcmludGluZyBsaXN0cyBvZiB0cmFjZWJhY2sgbGluZXMuCisjCiAKK2RlZiBfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCk6CisgICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gZXh0cmFjdGVkX2xpc3Q6CisgICAgICAgIGl0ZW0gPSAnICBGaWxlICJ7fSIsIGxpbmUge30sIGluIHt9XG4nLmZvcm1hdChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKQorICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgaXRlbSA9IGl0ZW0gKyAnICAgIHt9XG4nLmZvcm1hdChsaW5lLnN0cmlwKCkpCisgICAgICAgIHlpZWxkIGl0ZW0KIAogZGVmIHByaW50X2xpc3QoZXh0cmFjdGVkX2xpc3QsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgdGhlIGxpc3Qgb2YgdHVwbGVzIGFzIHJldHVybmVkIGJ5IGV4dHJhY3RfdGIoKSBvcgogICAgIGV4dHJhY3Rfc3RhY2soKSBhcyBhIGZvcm1hdHRlZCBzdGFjayB0cmFjZSB0byB0aGUgZ2l2ZW4gZmlsZS4iIiIKICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gZXh0cmFjdGVkX2xpc3Q6Ci0gICAgICAgIF9wcmludChmaWxlLAotICAgICAgICAgICAgICAgJyAgRmlsZSAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAoZmlsZW5hbWUsbGluZW5vLG5hbWUpKQotICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgX3ByaW50KGZpbGUsICcgICAgJXMnICUgbGluZS5zdHJpcCgpKQorICAgIGZvciBpdGVtIGluIF9mb3JtYXRfbGlzdF9pdGVyKGV4dHJhY3RlZF9saXN0KToKKyAgICAgICAgcHJpbnQoaXRlbSwgZmlsZT1maWxlLCBlbmQ9IiIpCiAKIGRlZiBmb3JtYXRfbGlzdChleHRyYWN0ZWRfbGlzdCk6CiAgICAgIiIiRm9ybWF0IGEgbGlzdCBvZiB0cmFjZWJhY2sgZW50cnkgdHVwbGVzIGZvciBwcmludGluZy4KQEAgLTMzLDE0ICszOCw0NCBAQAogICAgIHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcwogICAgIHdob3NlIHNvdXJjZSB0ZXh0IGxpbmUgaXMgbm90IE5vbmUuCiAgICAgIiIiCi0gICAgbGlzdCA9IFtdCi0gICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gZXh0cmFjdGVkX2xpc3Q6Ci0gICAgICAgIGl0ZW0gPSAnICBGaWxlICIlcyIsIGxpbmUgJWQsIGluICVzXG4nICUgKGZpbGVuYW1lLGxpbmVubyxuYW1lKQotICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgaXRlbSA9IGl0ZW0gKyAnICAgICVzXG4nICUgbGluZS5zdHJpcCgpCi0gICAgICAgIGxpc3QuYXBwZW5kKGl0ZW0pCi0gICAgcmV0dXJuIGxpc3QKKyAgICByZXR1cm4gbGlzdChfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCkpCiAKKyMKKyMgUHJpbnRpbmcgYW5kIEV4dHJhY3RpbmcgVHJhY2ViYWNrcy4KKyMKKworIyBleHRyYWN0b3IgdGFrZXMgY3VyciBhbmQgbmVlZHMgdG8gcmV0dXJuIGEgdHVwbGUgb2Y6CisjIC0gRnJhbWUgb2JqZWN0CisjIC0gTGluZSBudW1iZXIKKyMgLSBOZXh0IGl0ZW0gKHNhbWUgdHlwZSBhcyBjdXJyKQorIyBJbiBwcmFjdGljZSwgY3VyciBpcyBlaXRoZXIgYSB0cmFjZWJhY2sgb3IgYSBmcmFtZS4KK2RlZiBfZXh0cmFjdF90Yl9vcl9zdGFja19pdGVyKGN1cnIsIGxpbWl0LCBleHRyYWN0b3IpOgorICAgIGlmIGxpbWl0IGlzIE5vbmU6CisgICAgICAgIGxpbWl0ID0gZ2V0YXR0cihzeXMsICd0cmFjZWJhY2tsaW1pdCcsIE5vbmUpCisKKyAgICBuID0gMAorICAgIHdoaWxlIGN1cnIgaXMgbm90IE5vbmUgYW5kIChsaW1pdCBpcyBOb25lIG9yIG4gPCBsaW1pdCk6CisgICAgICAgIGYsIGxpbmVubywgbmV4dF9pdGVtID0gZXh0cmFjdG9yKGN1cnIpCisgICAgICAgIGNvID0gZi5mX2NvZGUKKyAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQorICAgICAgICBuYW1lID0gY28uY29fbmFtZQorCisgICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQorICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCisKKyAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmUgPSBOb25lCisKKyAgICAgICAgeWllbGQgKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUpCisgICAgICAgIGN1cnIgPSBuZXh0X2l0ZW0KKyAgICAgICAgbiArPSAxCisKK2RlZiBfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdCk6CisgICAgcmV0dXJuIF9leHRyYWN0X3RiX29yX3N0YWNrX2l0ZXIoCisgICAgICAgICAgICAgICAgdGIsIGxpbWl0LAorICAgICAgICAgICAgICAgIG9wZXJhdG9yLmF0dHJnZXR0ZXIoInRiX2ZyYW1lIiwgInRiX2xpbmVubyIsICJ0Yl9uZXh0IikpCiAKIGRlZiBwcmludF90Yih0YiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSB0aGUgdHJhY2ViYWNrICd0YicuCkBAIC01MCwyOSArODUsMTEgQEAKICAgICAnZmlsZScgc2hvdWxkIGJlIGFuIG9wZW4gZmlsZSBvciBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggYSB3cml0ZSgpCiAgICAgbWV0aG9kLgogICAgICIiIgotICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICBpZiBsaW1pdCBpcyBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0Jyk6Ci0gICAgICAgICAgICBsaW1pdCA9IHN5cy50cmFjZWJhY2tsaW1pdAotICAgIG4gPSAwCi0gICAgd2hpbGUgdGIgaXMgbm90IE5vbmUgYW5kIChsaW1pdCBpcyBOb25lIG9yIG4gPCBsaW1pdCk6Ci0gICAgICAgIGYgPSB0Yi50Yl9mcmFtZQotICAgICAgICBsaW5lbm8gPSB0Yi50Yl9saW5lbm8KLSAgICAgICAgY28gPSBmLmZfY29kZQotICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCi0gICAgICAgIG5hbWUgPSBjby5jb19uYW1lCi0gICAgICAgIF9wcmludChmaWxlLAotICAgICAgICAgICAgICAgJyAgRmlsZSAiJXMiLCBsaW5lICVkLCBpbiAlcycgJSAoZmlsZW5hbWUsIGxpbmVubywgbmFtZSkpCi0gICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQotICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCi0gICAgICAgIGlmIGxpbmU6IF9wcmludChmaWxlLCAnICAgICcgKyBsaW5lLnN0cmlwKCkpCi0gICAgICAgIHRiID0gdGIudGJfbmV4dAotICAgICAgICBuID0gbisxCisgICAgcHJpbnRfbGlzdChleHRyYWN0X3RiKHRiLCBsaW1pdD1saW1pdCksIGZpbGU9ZmlsZSkKIAogZGVmIGZvcm1hdF90Yih0YiwgbGltaXQ9Tm9uZSk6Ci0gICAgIiIiQSBzaG9ydGhhbmQgZm9yICdmb3JtYXRfbGlzdChleHRyYWN0X3N0YWNrKGYsIGxpbWl0KSkuIiIiCi0gICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0KSkKKyAgICAiIiJBIHNob3J0aGFuZCBmb3IgJ2Zvcm1hdF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0KSkuIiIiCisgICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0PWxpbWl0KSkKIAogZGVmIGV4dHJhY3RfdGIodGIsIGxpbWl0PU5vbmUpOgogICAgICIiIlJldHVybiBsaXN0IG9mIHVwIHRvIGxpbWl0IHByZS1wcm9jZXNzZWQgZW50cmllcyBmcm9tIHRyYWNlYmFjay4KQEAgLTg1LDI2ICsxMDIsMTEgQEAKICAgICBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHN0cmlwcGVkOyBpZiB0aGUgc291cmNlIGlzIG5vdAogICAgIGF2YWlsYWJsZSBpdCBpcyBOb25lLgogICAgICIiIgotICAgIGlmIGxpbWl0IGlzIE5vbmU6Ci0gICAgICAgIGlmIGhhc2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnKToKLSAgICAgICAgICAgIGxpbWl0ID0gc3lzLnRyYWNlYmFja2xpbWl0Ci0gICAgbGlzdCA9IFtdCi0gICAgbiA9IDAKLSAgICB3aGlsZSB0YiBpcyBub3QgTm9uZSBhbmQgKGxpbWl0IGlzIE5vbmUgb3IgbiA8IGxpbWl0KToKLSAgICAgICAgZiA9IHRiLnRiX2ZyYW1lCi0gICAgICAgIGxpbmVubyA9IHRiLnRiX2xpbmVubwotICAgICAgICBjbyA9IGYuZl9jb2RlCi0gICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKLSAgICAgICAgbmFtZSA9IGNvLmNvX25hbWUKLSAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoZmlsZW5hbWUpCi0gICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBmLmZfZ2xvYmFscykKLSAgICAgICAgaWYgbGluZTogbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBlbHNlOiBsaW5lID0gTm9uZQotICAgICAgICBsaXN0LmFwcGVuZCgoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkpCi0gICAgICAgIHRiID0gdGIudGJfbmV4dAotICAgICAgICBuID0gbisxCi0gICAgcmV0dXJuIGxpc3QKKyAgICByZXR1cm4gbGlzdChfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdD1saW1pdCkpCiAKKyMKKyMgRXhjZXB0aW9uIGZvcm1hdHRpbmcgYW5kIG91dHB1dC4KKyMKIAogX2NhdXNlX21lc3NhZ2UgPSAoCiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCkBAIC0xMzIsOSArMTM0LDIzIEBACiAgICAgaXRzLmFwcGVuZChbKGV4YywgY3VzdG9tX3RiIG9yIGV4Yy5fX3RyYWNlYmFja19fKV0pCiAgICAgIyBpdGVydG9vbHMuY2hhaW4gaXMgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBhbmQgbWF5IGJlIHVuYXZhaWxhYmxlCiAgICAgZm9yIGl0IGluIGl0czoKLSAgICAgICAgZm9yIHggaW4gaXQ6Ci0gICAgICAgICAgICB5aWVsZCB4CisgICAgICAgIHlpZWxkIGZyb20gaXQKIAorZGVmIF9mb3JtYXRfZXhjZXB0aW9uX2l0ZXIoZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGNoYWluKToKKyAgICBpZiBjaGFpbjoKKyAgICAgICAgdmFsdWVzID0gX2l0ZXJfY2hhaW4odmFsdWUsIHRiKQorICAgIGVsc2U6CisgICAgICAgIHZhbHVlcyA9IFsodmFsdWUsIHRiKV0KKworICAgIGZvciB2YWx1ZSwgdGIgaW4gdmFsdWVzOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2F1c2UvY29udGV4dCBtZXNzYWdlIGxpbmUKKyAgICAgICAgICAgIHlpZWxkIHZhbHVlICsgJ1xuJworICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgdGI6CisgICAgICAgICAgICB5aWVsZCAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgeWllbGQgZnJvbSBfZm9ybWF0X2xpc3RfaXRlcihfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdD1saW1pdCkpCisgICAgICAgIHlpZWxkIGZyb20gX2Zvcm1hdF9leGNlcHRpb25fb25seV9pdGVyKHR5cGUodmFsdWUpLCB2YWx1ZSkKIAogZGVmIHByaW50X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIlByaW50IGV4Y2VwdGlvbiB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAndGInIHRvICdmaWxlJy4KQEAgLTE0OSwyMCArMTY1LDggQEAKICAgICAiIiIKICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgaWYgY2hhaW46Ci0gICAgICAgIHZhbHVlcyA9IF9pdGVyX2NoYWluKHZhbHVlLCB0YikKLSAgICBlbHNlOgotICAgICAgICB2YWx1ZXMgPSBbKHZhbHVlLCB0YildCi0gICAgZm9yIHZhbHVlLCB0YiBpbiB2YWx1ZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAgICBfcHJpbnQoZmlsZSwgdmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiB0YjoKLSAgICAgICAgICAgIF9wcmludChmaWxlLCAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicpCi0gICAgICAgICAgICBwcmludF90Yih0YiwgbGltaXQsIGZpbGUpCi0gICAgICAgIGxpbmVzID0gZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUodmFsdWUpLCB2YWx1ZSkKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICBfcHJpbnQoZmlsZSwgbGluZSwgJycpCisgICAgZm9yIGxpbmUgaW4gX2Zvcm1hdF9leGNlcHRpb25faXRlcihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdCwgY2hhaW4pOgorICAgICAgICBwcmludChsaW5lLCBmaWxlPWZpbGUsIGVuZD0iIikKIAogZGVmIGZvcm1hdF9leGNlcHRpb24oZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQ9Tm9uZSwgY2hhaW49VHJ1ZSk6CiAgICAgIiIiRm9ybWF0IGEgc3RhY2sgdHJhY2UgYW5kIHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24uCkBAIC0xNzMsMjAgKzE3Nyw3IEBACiAgICAgdGhlc2UgbGluZXMgYXJlIGNvbmNhdGVuYXRlZCBhbmQgcHJpbnRlZCwgZXhhY3RseSB0aGUgc2FtZSB0ZXh0IGlzCiAgICAgcHJpbnRlZCBhcyBkb2VzIHByaW50X2V4Y2VwdGlvbigpLgogICAgICIiIgotICAgIGxpc3QgPSBbXQotICAgIGlmIGNoYWluOgotICAgICAgICB2YWx1ZXMgPSBfaXRlcl9jaGFpbih2YWx1ZSwgdGIpCi0gICAgZWxzZToKLSAgICAgICAgdmFsdWVzID0gWyh2YWx1ZSwgdGIpXQotICAgIGZvciB2YWx1ZSwgdGIgaW4gdmFsdWVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAgICAgbGlzdC5hcHBlbmQodmFsdWUgKyAnXG4nKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgdGI6Ci0gICAgICAgICAgICBsaXN0LmFwcGVuZCgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJykKLSAgICAgICAgICAgIGxpc3QuZXh0ZW5kKGZvcm1hdF90Yih0YiwgbGltaXQpKQotICAgICAgICBsaXN0LmV4dGVuZChmb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSh2YWx1ZSksIHZhbHVlKSkKLSAgICByZXR1cm4gbGlzdAorICAgIHJldHVybiBsaXN0KF9mb3JtYXRfZXhjZXB0aW9uX2l0ZXIoZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGNoYWluKSkKIAogZGVmIGZvcm1hdF9leGNlcHRpb25fb25seShldHlwZSwgdmFsdWUpOgogICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgYSB0cmFjZWJhY2suCkBAIC0yMDQsMTAgKzE5NSwxNCBAQAogICAgIHN0cmluZyBpbiB0aGUgbGlzdC4KIAogICAgICIiIgorICAgIHJldHVybiBsaXN0KF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcihldHlwZSwgdmFsdWUpKQorCitkZWYgX2Zvcm1hdF9leGNlcHRpb25fb25seV9pdGVyKGV0eXBlLCB2YWx1ZSk6CiAgICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSAodGhlIHdheSBQeXRob24gMi40IGFuZCBlYXJsaWVyIGRpZCkgdGhlIGNhc2Ugb2YKICAgICAjIGJlaW5nIGNhbGxlZCB3aXRoIChOb25lLCBOb25lKS4KICAgICBpZiBldHlwZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gW19mb3JtYXRfZmluYWxfZXhjX2xpbmUoZXR5cGUsIHZhbHVlKV0KKyAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybgogCiAgICAgc3R5cGUgPSBldHlwZS5fX25hbWVfXwogICAgIHNtb2QgPSBldHlwZS5fX21vZHVsZV9fCkBAIC0yMTUsMjYgKzIxMCwyNiBAQAogICAgICAgICBzdHlwZSA9IHNtb2QgKyAnLicgKyBzdHlwZQogCiAgICAgaWYgbm90IGlzc3ViY2xhc3MoZXR5cGUsIFN5bnRheEVycm9yKToKLSAgICAgICAgcmV0dXJuIFtfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2YWx1ZSldCisgICAgICAgIHlpZWxkIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4KIAogICAgICMgSXQgd2FzIGEgc3ludGF4IGVycm9yOyBzaG93IGV4YWN0bHkgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZvdW5kLgotICAgIGxpbmVzID0gW10KICAgICBmaWxlbmFtZSA9IHZhbHVlLmZpbGVuYW1lIG9yICI8c3RyaW5nPiIKICAgICBsaW5lbm8gPSBzdHIodmFsdWUubGluZW5vKSBvciAnPycKLSAgICBsaW5lcy5hcHBlbmQoJyAgRmlsZSAiJXMiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pKQorICAgIHlpZWxkICcgIEZpbGUgInt9IiwgbGluZSB7fVxuJy5mb3JtYXQoZmlsZW5hbWUsIGxpbmVubykKKwogICAgIGJhZGxpbmUgPSB2YWx1ZS50ZXh0CiAgICAgb2Zmc2V0ID0gdmFsdWUub2Zmc2V0CiAgICAgaWYgYmFkbGluZSBpcyBub3QgTm9uZToKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgJXNcbicgJSBiYWRsaW5lLnN0cmlwKCkpCisgICAgICAgIHlpZWxkICcgICAge31cbicuZm9ybWF0KGJhZGxpbmUuc3RyaXAoKSkKICAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGJhZGxpbmUucnN0cmlwKCdcbicpWzpvZmZzZXRdLmxzdHJpcCgpCiAgICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAogICAgICAgICAgICAgY2FyZXRzcGFjZSA9ICgoYy5pc3NwYWNlKCkgYW5kIGMgb3IgJyAnKSBmb3IgYyBpbiBjYXJldHNwYWNlKQogICAgICAgICAgICAgIyBvbmx5IHRocmVlIHNwYWNlcyB0byBhY2NvdW50IGZvciBvZmZzZXQxID09IHBvcyAwCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICVzXlxuJyAlICcnLmpvaW4oY2FyZXRzcGFjZSkpCisgICAgICAgICAgICB5aWVsZCAnICAge31eXG4nLmZvcm1hdCgnJy5qb2luKGNhcmV0c3BhY2UpKQogICAgIG1zZyA9IHZhbHVlLm1zZyBvciAiPG5vIGRldGFpbCBhdmFpbGFibGU+IgotICAgIGxpbmVzLmFwcGVuZCgiJXM6ICVzXG4iICUgKHN0eXBlLCBtc2cpKQotICAgIHJldHVybiBsaW5lcworICAgIHlpZWxkICJ7fToge31cbiIuZm9ybWF0KHN0eXBlLCBtc2cpCiAKIGRlZiBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSk6CiAgICAgdmFsdWVzdHIgPSBfc29tZV9zdHIodmFsdWUpCkBAIC0yNTAsMzggKzI0NSwzNCBAQAogICAgIGV4Y2VwdDoKICAgICAgICAgcmV0dXJuICc8dW5wcmludGFibGUgJXMgb2JqZWN0PicgJSB0eXBlKHZhbHVlKS5fX25hbWVfXwogCi0KIGRlZiBwcmludF9leGMobGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKToKICAgICAiIiJTaG9ydGhhbmQgZm9yICdwcmludF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpLCBsaW1pdCwgZmlsZSknLiIiIgotICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICB0cnk6Ci0gICAgICAgIGV0eXBlLCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICBwcmludF9leGNlcHRpb24oZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGZpbGUsIGNoYWluKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGV0eXBlID0gdmFsdWUgPSB0YiA9IE5vbmUKLQorICAgIHByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0PWxpbWl0LCBmaWxlPWZpbGUsIGNoYWluPWNoYWluKQogCiBkZWYgZm9ybWF0X2V4YyhsaW1pdD1Ob25lLCBjaGFpbj1UcnVlKToKICAgICAiIiJMaWtlIHByaW50X2V4YygpIGJ1dCByZXR1cm4gYSBzdHJpbmcuIiIiCi0gICAgdHJ5OgotICAgICAgICBldHlwZSwgdmFsdWUsIHRiID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgcmV0dXJuICcnLmpvaW4oCi0gICAgICAgICAgICBmb3JtYXRfZXhjZXB0aW9uKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbikpCi0gICAgZmluYWxseToKLSAgICAgICAgZXR5cGUgPSB2YWx1ZSA9IHRiID0gTm9uZQotCisgICAgcmV0dXJuICIiLmpvaW4oZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0PWxpbWl0LCBjaGFpbj1jaGFpbikpCiAKIGRlZiBwcmludF9sYXN0KGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSk6CiAgICAgIiIiVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgJ3ByaW50X2V4Y2VwdGlvbihzeXMubGFzdF90eXBlLAogICAgIHN5cy5sYXN0X3ZhbHVlLCBzeXMubGFzdF90cmFjZWJhY2ssIGxpbWl0LCBmaWxlKScuIiIiCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAibGFzdF90eXBlIik6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIGxhc3QgZXhjZXB0aW9uIikKLSAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCiAgICAgcHJpbnRfZXhjZXB0aW9uKHN5cy5sYXN0X3R5cGUsIHN5cy5sYXN0X3ZhbHVlLCBzeXMubGFzdF90cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0LCBmaWxlLCBjaGFpbikKIAorIworIyBQcmludGluZyBhbmQgRXh0cmFjdGluZyBTdGFja3MuCisjCisKK2RlZiBfZXh0cmFjdF9zdGFja19pdGVyKGYsIGxpbWl0PU5vbmUpOgorICAgIHJldHVybiBfZXh0cmFjdF90Yl9vcl9zdGFja19pdGVyKAorICAgICAgICAgICAgICAgIGYsIGxpbWl0LCBsYW1iZGEgZjogKGYsIGYuZl9saW5lbm8sIGYuZl9iYWNrKSkKKworZGVmIF9nZXRfc3RhY2soZik6CisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjay5mX2JhY2sKKyAgICByZXR1cm4gZgogCiBkZWYgcHJpbnRfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUpOgogICAgICIiIlByaW50IGEgc3RhY2sgdHJhY2UgZnJvbSBpdHMgaW52b2NhdGlvbiBwb2ludC4KQEAgLTI5MCwyMSArMjgxLDExIEBACiAgICAgc3RhY2sgZnJhbWUgYXQgd2hpY2ggdG8gc3RhcnQuIFRoZSBvcHRpb25hbCAnbGltaXQnIGFuZCAnZmlsZScKICAgICBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBwcmludF9leGNlcHRpb24oKS4KICAgICAiIiIKLSAgICBpZiBmIGlzIE5vbmU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCi0gICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKLSAgICAgICAgICAgIGYgPSBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKLSAgICBwcmludF9saXN0KGV4dHJhY3Rfc3RhY2soZiwgbGltaXQpLCBmaWxlKQorICAgIHByaW50X2xpc3QoZXh0cmFjdF9zdGFjayhfZ2V0X3N0YWNrKGYpLCBsaW1pdD1saW1pdCksIGZpbGU9ZmlsZSkKIAogZGVmIGZvcm1hdF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUpOgogICAgICIiIlNob3J0aGFuZCBmb3IgJ2Zvcm1hdF9saXN0KGV4dHJhY3Rfc3RhY2soZiwgbGltaXQpKScuIiIiCi0gICAgaWYgZiBpcyBOb25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcgotICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6Ci0gICAgICAgICAgICBmID0gc3lzLmV4Y19pbmZvKClbMl0udGJfZnJhbWUuZl9iYWNrCi0gICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3Rfc3RhY2soZiwgbGltaXQpKQorICAgIHJldHVybiBmb3JtYXRfbGlzdChleHRyYWN0X3N0YWNrKF9nZXRfc3RhY2soZiksIGxpbWl0PWxpbWl0KSkKIAogZGVmIGV4dHJhY3Rfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lKToKICAgICAiIiJFeHRyYWN0IHRoZSByYXcgdHJhY2ViYWNrIGZyb20gdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUuCkBAIC0zMTUsMjcgKzI5Niw2IEBACiAgICAgbGluZSBudW1iZXIsIGZ1bmN0aW9uIG5hbWUsIHRleHQpLCBhbmQgdGhlIGVudHJpZXMgYXJlIGluIG9yZGVyCiAgICAgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0IHN0YWNrIGZyYW1lLgogICAgICIiIgotICAgIGlmIGYgaXMgTm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IKLSAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgotICAgICAgICAgICAgZiA9IHN5cy5leGNfaW5mbygpWzJdLnRiX2ZyYW1lLmZfYmFjawotICAgIGlmIGxpbWl0IGlzIE5vbmU6Ci0gICAgICAgIGlmIGhhc2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnKToKLSAgICAgICAgICAgIGxpbWl0ID0gc3lzLnRyYWNlYmFja2xpbWl0Ci0gICAgbGlzdCA9IFtdCi0gICAgbiA9IDAKLSAgICB3aGlsZSBmIGlzIG5vdCBOb25lIGFuZCAobGltaXQgaXMgTm9uZSBvciBuIDwgbGltaXQpOgotICAgICAgICBsaW5lbm8gPSBmLmZfbGluZW5vCi0gICAgICAgIGNvID0gZi5mX2NvZGUKLSAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQotICAgICAgICBuYW1lID0gY28uY29fbmFtZQotICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8sIGYuZl9nbG9iYWxzKQotICAgICAgICBpZiBsaW5lOiBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGVsc2U6IGxpbmUgPSBOb25lCi0gICAgICAgIGxpc3QuYXBwZW5kKChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKSkKLSAgICAgICAgZiA9IGYuZl9iYWNrCi0gICAgICAgIG4gPSBuKzEKLSAgICBsaXN0LnJldmVyc2UoKQotICAgIHJldHVybiBsaXN0CisgICAgc3RhY2sgPSBsaXN0KF9leHRyYWN0X3N0YWNrX2l0ZXIoX2dldF9zdGFjayhmKSwgbGltaXQ9bGltaXQpKQorICAgIHN0YWNrLnJldmVyc2UoKQorICAgIHJldHVybiBzdGFjawpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZS5weSBiL0xpYi90dXJ0bGUucHkKaW5kZXggNDljZDg2ZC4uN2VkYmIwNSAxMDA2NDQKLS0tIGEvTGliL3R1cnRsZS5weQorKysgYi9MaWIvdHVydGxlLnB5CkBAIC0zODQzLDE4ICszODQzLDE4IEBACiAgICAgICAgIGtleSA9ICJUdXJ0bGUuIittZXRob2RuYW1lCiAgICAgICAgIGRvY3NkaWN0W2tleV0gPSBldmFsKGtleSkuX19kb2NfXwogCi0gICAgZiA9IG9wZW4oIiVzLnB5IiAlIGZpbGVuYW1lLCJ3IikKLSAgICBrZXlzID0gc29ydGVkKFt4IGZvciB4IGluIGRvY3NkaWN0LmtleXMoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zcGxpdCgnLicpWzFdIG5vdCBpbiBfYWxpYXNfbGlzdF0pCi0gICAgZi53cml0ZSgnZG9jc2RpY3QgPSB7XG5cbicpCi0gICAgZm9yIGtleSBpbiBrZXlzWzotMV06CisgICAgd2l0aCBvcGVuKCIlcy5weSIgJSBmaWxlbmFtZSwidyIpIGFzIGY6CisgICAgICAgIGtleXMgPSBzb3J0ZWQoW3ggZm9yIHggaW4gZG9jc2RpY3Qua2V5cygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zcGxpdCgnLicpWzFdIG5vdCBpbiBfYWxpYXNfbGlzdF0pCisgICAgICAgIGYud3JpdGUoJ2RvY3NkaWN0ID0ge1xuXG4nKQorICAgICAgICBmb3Iga2V5IGluIGtleXNbOi0xXToKKyAgICAgICAgICAgIGYud3JpdGUoJyVzIDpcbicgJSByZXByKGtleSkpCisgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICIiIiVzXG4iIiIsXG5cbicgJSBkb2NzZGljdFtrZXldKQorICAgICAgICBrZXkgPSBrZXlzWy0xXQogICAgICAgICBmLndyaXRlKCclcyA6XG4nICUgcmVwcihrZXkpKQotICAgICAgICBmLndyaXRlKCcgICAgICAgICIiIiVzXG4iIiIsXG5cbicgJSBkb2NzZGljdFtrZXldKQotICAgIGtleSA9IGtleXNbLTFdCi0gICAgZi53cml0ZSgnJXMgOlxuJyAlIHJlcHIoa2V5KSkKLSAgICBmLndyaXRlKCcgICAgICAgICIiIiVzXG4iIiJcblxuJyAlIGRvY3NkaWN0W2tleV0pCi0gICAgZi53cml0ZSgifVxuIikKLSAgICBmLmNsb3NlKCkKKyAgICAgICAgZi53cml0ZSgnICAgICAgICAiIiIlc1xuIiIiXG5cbicgJSBkb2NzZGljdFtrZXldKQorICAgICAgICBmLndyaXRlKCJ9XG4iKQorICAgICAgICBmLmNsb3NlKCkKIAogZGVmIHJlYWRfZG9jc3RyaW5ncyhsYW5nKToKICAgICAiIiJSZWFkIGluIGRvY3N0cmluZ3MgZnJvbSBsYW5nLXNwZWNpZmljIGRvY3N0cmluZyBkaWN0aW9uYXJ5LgpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQppbmRleCBjYmYzYWViLi5hMTQ2ODRjIDEwMDc1NQotLS0gYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQorKysgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpAQCAtNiw3ICs2LDcgQEAKIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiBmcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yCiBmcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfZmlsZSAjIFRleHRWaWV3ZXIKLWZyb20gaW1wIGltcG9ydCByZWxvYWQKK2Zyb20gaW1wb3J0bGliIGltcG9ydCByZWxvYWQKIAogaW1wb3J0IHR1cnRsZQogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKaW5kZXggZjU2YWY1NS4uZDA0ZWE2MSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29udGV4dGxpYgogCiBmcm9tIC4gaW1wb3J0IHJlc3VsdAogZnJvbSAudXRpbCBpbXBvcnQgKHN0cmNsYXNzLCBzYWZlX3JlcHIsIF9jb3VudF9kaWZmX2FsbF9wdXJwb3NlLApAQCAtMjYsMTcgKzI3LDExIEBACiAgICAgaW5zdGVhZCBvZiByYWlzaW5nIHRoaXMgZGlyZWN0bHkuCiAgICAgIiIiCiAKLWNsYXNzIF9FeHBlY3RlZEZhaWx1cmUoRXhjZXB0aW9uKToKK2NsYXNzIF9TaG91bGRTdG9wKEV4Y2VwdGlvbik6CiAgICAgIiIiCi0gICAgUmFpc2UgdGhpcyB3aGVuIGEgdGVzdCBpcyBleHBlY3RlZCB0byBmYWlsLgotCi0gICAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgICAgVGhlIHRlc3Qgc2hvdWxkIHN0b3AuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjX2luZm8pOgotICAgICAgICBzdXBlcihfRXhwZWN0ZWRGYWlsdXJlLCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIHNlbGYuZXhjX2luZm8gPSBleGNfaW5mbwotCiBjbGFzcyBfVW5leHBlY3RlZFN1Y2Nlc3MoRXhjZXB0aW9uKToKICAgICAiIiIKICAgICBUaGUgdGVzdCB3YXMgc3VwcG9zZWQgdG8gZmFpbCwgYnV0IGl0IGRpZG4ndCEKQEAgLTQ0LDEzICszOSw0MCBAQAogCiAKIGNsYXNzIF9PdXRjb21lKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXN1bHQ9Tm9uZSk6CisgICAgICAgIHNlbGYuZXhwZWN0aW5nX2ZhaWx1cmUgPSBGYWxzZQorICAgICAgICBzZWxmLnJlc3VsdCA9IHJlc3VsdAorICAgICAgICBzZWxmLnJlc3VsdF9zdXBwb3J0c19zdWJ0ZXN0cyA9IGhhc2F0dHIocmVzdWx0LCAiYWRkU3ViVGVzdCIpCiAgICAgICAgIHNlbGYuc3VjY2VzcyA9IFRydWUKLSAgICAgICAgc2VsZi5za2lwcGVkID0gTm9uZQotICAgICAgICBzZWxmLnVuZXhwZWN0ZWRTdWNjZXNzID0gTm9uZQorICAgICAgICBzZWxmLnNraXBwZWQgPSBbXQogICAgICAgICBzZWxmLmV4cGVjdGVkRmFpbHVyZSA9IE5vbmUKICAgICAgICAgc2VsZi5lcnJvcnMgPSBbXQotICAgICAgICBzZWxmLmZhaWx1cmVzID0gW10KKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHRlc3RQYXJ0RXhlY3V0b3Ioc2VsZiwgdGVzdF9jYXNlLCBpc1Rlc3Q9RmFsc2UpOgorICAgICAgICBvbGRfc3VjY2VzcyA9IHNlbGYuc3VjY2VzcworICAgICAgICBzZWxmLnN1Y2Nlc3MgPSBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBTa2lwVGVzdCBhcyBlOgorICAgICAgICAgICAgc2VsZi5zdWNjZXNzID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQoKHRlc3RfY2FzZSwgc3RyKGUpKSkKKyAgICAgICAgZXhjZXB0IF9TaG91bGRTdG9wOgorICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBpZiBzZWxmLmV4cGVjdGluZ19mYWlsdXJlOgorICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRGYWlsdXJlID0gZXhjX2luZm8KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5zdWNjZXNzID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoKHRlc3RfY2FzZSwgZXhjX2luZm8pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc2VsZi5yZXN1bHRfc3VwcG9ydHNfc3VidGVzdHMgYW5kIHNlbGYuc3VjY2VzczoKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoKHRlc3RfY2FzZSwgTm9uZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnN1Y2Nlc3MgPSBzZWxmLnN1Y2Nlc3MgYW5kIG9sZF9zdWNjZXNzCiAKIAogZGVmIF9pZChvYmopOgpAQCAtODgsMTYgKzExMCw5IEBACiAgICAgICAgIHJldHVybiBza2lwKHJlYXNvbikKICAgICByZXR1cm4gX2lkCiAKLQotZGVmIGV4cGVjdGVkRmFpbHVyZShmdW5jKToKLSAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCi0gICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByYWlzZSBfRXhwZWN0ZWRGYWlsdXJlKHN5cy5leGNfaW5mbygpKQotICAgICAgICByYWlzZSBfVW5leHBlY3RlZFN1Y2Nlc3MKLSAgICByZXR1cm4gd3JhcHBlcgorZGVmIGV4cGVjdGVkRmFpbHVyZSh0ZXN0X2l0ZW0pOgorICAgIHRlc3RfaXRlbS5fX3VuaXR0ZXN0X2V4cGVjdGluZ19mYWlsdXJlX18gPSBUcnVlCisgICAgcmV0dXJuIHRlc3RfaXRlbQogCiAKIGNsYXNzIF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dChvYmplY3QpOgpAQCAtMjcwLDcgKzI4NSw3IEBACiAgICAgICAgICAgIG5vdCBoYXZlIGEgbWV0aG9kIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fdGVzdE1ldGhvZE5hbWUgPSBtZXRob2ROYW1lCi0gICAgICAgIHNlbGYuX291dGNvbWVGb3JEb0NsZWFudXBzID0gTm9uZQorICAgICAgICBzZWxmLl9vdXRjb21lID0gTm9uZQogICAgICAgICBzZWxmLl90ZXN0TWV0aG9kRG9jID0gJ05vIHRlc3QnCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRlc3RNZXRob2QgPSBnZXRhdHRyKHNlbGYsIG1ldGhvZE5hbWUpCkBAIC0yODMsNiArMjk4LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3Rlc3RNZXRob2REb2MgPSB0ZXN0TWV0aG9kLl9fZG9jX18KICAgICAgICAgc2VsZi5fY2xlYW51cHMgPSBbXQorICAgICAgICBzZWxmLl9zdWJ0ZXN0ID0gTm9uZQogCiAgICAgICAgICMgTWFwIHR5cGVzIHRvIGN1c3RvbSBhc3NlcnRFcXVhbCBmdW5jdGlvbnMgdGhhdCB3aWxsIGNvbXBhcmUKICAgICAgICAgIyBpbnN0YW5jZXMgb2Ygc2FpZCB0eXBlIGluIG1vcmUgZGV0YWlsIHRvIGdlbmVyYXRlIGEgbW9yZSB1c2VmdWwKQEAgLTM3MCw0NCArMzg2LDgwIEBACiAgICAgICAgIHJldHVybiAiPCVzIHRlc3RNZXRob2Q9JXM+IiAlIFwKICAgICAgICAgICAgICAgIChzdHJjbGFzcyhzZWxmLl9fY2xhc3NfXyksIHNlbGYuX3Rlc3RNZXRob2ROYW1lKQogCi0gICAgZGVmIF9hZGRTa2lwKHNlbGYsIHJlc3VsdCwgcmVhc29uKToKKyAgICBkZWYgX2FkZFNraXAoc2VsZiwgcmVzdWx0LCB0ZXN0X2Nhc2UsIHJlYXNvbik6CiAgICAgICAgIGFkZFNraXAgPSBnZXRhdHRyKHJlc3VsdCwgJ2FkZFNraXAnLCBOb25lKQogICAgICAgICBpZiBhZGRTa2lwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYWRkU2tpcChzZWxmLCByZWFzb24pCisgICAgICAgICAgICBhZGRTa2lwKHRlc3RfY2FzZSwgcmVhc29uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGVzdFJlc3VsdCBoYXMgbm8gYWRkU2tpcCBtZXRob2QsIHNraXBzIG5vdCByZXBvcnRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLCAyKQotICAgICAgICAgICAgcmVzdWx0LmFkZFN1Y2Nlc3Moc2VsZikKKyAgICAgICAgICAgIHJlc3VsdC5hZGRTdWNjZXNzKHRlc3RfY2FzZSkKIAotICAgIGRlZiBfZXhlY3V0ZVRlc3RQYXJ0KHNlbGYsIGZ1bmN0aW9uLCBvdXRjb21lLCBpc1Rlc3Q9RmFsc2UpOgorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHN1YlRlc3Qoc2VsZiwgbXNnPU5vbmUsICoqcGFyYW1zKToKKyAgICAgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCByZXR1cm4gdGhlIGVuY2xvc2VkIGJsb2NrCisgICAgICAgIG9mIGNvZGUgaW4gYSBzdWJ0ZXN0IGlkZW50aWZpZWQgYnkgdGhlIG9wdGlvbmFsIG1lc3NhZ2UgYW5kCisgICAgICAgIGtleXdvcmQgcGFyYW1ldGVycy4gIEEgZmFpbHVyZSBpbiB0aGUgc3VidGVzdCBtYXJrcyB0aGUgdGVzdAorICAgICAgICBjYXNlIGFzIGZhaWxlZCBidXQgcmVzdW1lcyBleGVjdXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgZW5jbG9zZWQKKyAgICAgICAgYmxvY2ssIGFsbG93aW5nIGZ1cnRoZXIgdGVzdCBjb2RlIHRvIGJlIGV4ZWN1dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX291dGNvbWUucmVzdWx0X3N1cHBvcnRzX3N1YnRlc3RzOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXJlbnQgPSBzZWxmLl9zdWJ0ZXN0CisgICAgICAgIGlmIHBhcmVudCBpcyBOb25lOgorICAgICAgICAgICAgcGFyYW1zX21hcCA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKHBhcmFtcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhcmFtc19tYXAgPSBwYXJlbnQucGFyYW1zLm5ld19jaGlsZChwYXJhbXMpCisgICAgICAgIHNlbGYuX3N1YnRlc3QgPSBfU3ViVGVzdChzZWxmLCBtc2csIHBhcmFtc19tYXApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1bmN0aW9uKCkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0IFNraXBUZXN0IGFzIGU6Ci0gICAgICAgICAgICBvdXRjb21lLnN1Y2Nlc3MgPSBGYWxzZQotICAgICAgICAgICAgb3V0Y29tZS5za2lwcGVkID0gc3RyKGUpCi0gICAgICAgIGV4Y2VwdCBfVW5leHBlY3RlZFN1Y2Nlc3M6Ci0gICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBvdXRjb21lLnN1Y2Nlc3MgPSBGYWxzZQotICAgICAgICAgICAgaWYgaXNUZXN0OgotICAgICAgICAgICAgICAgIG91dGNvbWUudW5leHBlY3RlZFN1Y2Nlc3MgPSBleGNfaW5mbwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvdXRjb21lLmVycm9ycy5hcHBlbmQoZXhjX2luZm8pCi0gICAgICAgIGV4Y2VwdCBfRXhwZWN0ZWRGYWlsdXJlOgotICAgICAgICAgICAgb3V0Y29tZS5zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIGlmIGlzVGVzdDoKLSAgICAgICAgICAgICAgICBvdXRjb21lLmV4cGVjdGVkRmFpbHVyZSA9IGV4Y19pbmZvCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG91dGNvbWUuZXJyb3JzLmFwcGVuZChleGNfaW5mbykKLSAgICAgICAgZXhjZXB0IHNlbGYuZmFpbHVyZUV4Y2VwdGlvbjoKLSAgICAgICAgICAgIG91dGNvbWUuc3VjY2VzcyA9IEZhbHNlCi0gICAgICAgICAgICBvdXRjb21lLmZhaWx1cmVzLmFwcGVuZChzeXMuZXhjX2luZm8oKSkKLSAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgb3V0Y29tZS5zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgIG91dGNvbWUuZXJyb3JzLmFwcGVuZChzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5fb3V0Y29tZS50ZXN0UGFydEV4ZWN1dG9yKHNlbGYuX3N1YnRlc3QsIGlzVGVzdD1UcnVlKToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgaWYgbm90IHNlbGYuX291dGNvbWUuc3VjY2VzczoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9vdXRjb21lLnJlc3VsdAorICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZSBhbmQgcmVzdWx0LmZhaWxmYXN0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBfU2hvdWxkU3RvcAorICAgICAgICAgICAgZWxpZiBzZWxmLl9vdXRjb21lLmV4cGVjdGVkRmFpbHVyZToKKyAgICAgICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGlzIGV4cGVjdGluZyBhIGZhaWx1cmUsIHdlIHJlYWxseSB3YW50IHRvCisgICAgICAgICAgICAgICAgIyBzdG9wIG5vdyBhbmQgcmVnaXN0ZXIgdGhlIGV4cGVjdGVkIGZhaWx1cmUuCisgICAgICAgICAgICAgICAgcmFpc2UgX1Nob3VsZFN0b3AKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX3N1YnRlc3QgPSBwYXJlbnQKKworICAgIGRlZiBfZmVlZEVycm9yc1RvUmVzdWx0KHNlbGYsIHJlc3VsdCwgZXJyb3JzKToKKyAgICAgICAgZm9yIHRlc3QsIGV4Y19pbmZvIGluIGVycm9yczoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGVzdCwgX1N1YlRlc3QpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRTdWJUZXN0KHRlc3QudGVzdF9jYXNlLCB0ZXN0LCBleGNfaW5mbykKKyAgICAgICAgICAgIGVsaWYgZXhjX2luZm8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhleGNfaW5mb1swXSwgc2VsZi5mYWlsdXJlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZEZhaWx1cmUodGVzdCwgZXhjX2luZm8pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZEVycm9yKHRlc3QsIGV4Y19pbmZvKQorCisgICAgZGVmIF9hZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgcmVzdWx0LCBleGNfaW5mbyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFkZEV4cGVjdGVkRmFpbHVyZSA9IHJlc3VsdC5hZGRFeHBlY3RlZEZhaWx1cmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGVzdFJlc3VsdCBoYXMgbm8gYWRkRXhwZWN0ZWRGYWlsdXJlIG1ldGhvZCwgcmVwb3J0aW5nIGFzIHBhc3NlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgcmVzdWx0LmFkZFN1Y2Nlc3Moc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZEV4cGVjdGVkRmFpbHVyZShzZWxmLCBleGNfaW5mbykKKworICAgIGRlZiBfYWRkVW5leHBlY3RlZFN1Y2Nlc3Moc2VsZiwgcmVzdWx0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWRkVW5leHBlY3RlZFN1Y2Nlc3MgPSByZXN1bHQuYWRkVW5leHBlY3RlZFN1Y2Nlc3MKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGVzdFJlc3VsdCBoYXMgbm8gYWRkVW5leHBlY3RlZFN1Y2Nlc3MgbWV0aG9kLCByZXBvcnRpbmcgYXMgZmFpbHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHBhc3MgYW4gYWN0dWFsIGV4Y2VwdGlvbiBhbmQgdHJhY2ViYWNrIHRvIGFkZEZhaWx1cmUsCisgICAgICAgICAgICAjIG90aGVyd2lzZSB0aGUgbGVnYWN5IHJlc3VsdCBjYW4gY2hva2UuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFpc2UgX1VuZXhwZWN0ZWRTdWNjZXNzIGZyb20gTm9uZQorICAgICAgICAgICAgZXhjZXB0IF9VbmV4cGVjdGVkU3VjY2VzczoKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkRmFpbHVyZShzZWxmLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZFVuZXhwZWN0ZWRTdWNjZXNzKHNlbGYpCiAKICAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdD1Ob25lKToKICAgICAgICAgb3JpZ19yZXN1bHQgPSByZXN1bHQKQEAgLTQyNiw0NiArNDc4LDM4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2tpcF93aHkgPSAoZ2V0YXR0cihzZWxmLl9fY2xhc3NfXywgJ19fdW5pdHRlc3Rfc2tpcF93aHlfXycsICcnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdldGF0dHIodGVzdE1ldGhvZCwgJ19fdW5pdHRlc3Rfc2tpcF93aHlfXycsICcnKSkKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRTa2lwKHJlc3VsdCwgc2tpcF93aHkpCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkU2tpcChyZXN1bHQsIHNlbGYsIHNraXBfd2h5KQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICByZXN1bHQuc3RvcFRlc3Qoc2VsZikKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBleHBlY3RpbmdfZmFpbHVyZSA9IGdldGF0dHIodGVzdE1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3VuaXR0ZXN0X2V4cGVjdGluZ19mYWlsdXJlX18iLCBGYWxzZSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0Y29tZSA9IF9PdXRjb21lKCkKLSAgICAgICAgICAgIHNlbGYuX291dGNvbWVGb3JEb0NsZWFudXBzID0gb3V0Y29tZQorICAgICAgICAgICAgb3V0Y29tZSA9IF9PdXRjb21lKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuX291dGNvbWUgPSBvdXRjb21lCiAKLSAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVUZXN0UGFydChzZWxmLnNldFVwLCBvdXRjb21lKQorICAgICAgICAgICAgd2l0aCBvdXRjb21lLnRlc3RQYXJ0RXhlY3V0b3Ioc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXRVcCgpCiAgICAgICAgICAgICBpZiBvdXRjb21lLnN1Y2Nlc3M6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZVRlc3RQYXJ0KHRlc3RNZXRob2QsIG91dGNvbWUsIGlzVGVzdD1UcnVlKQotICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVUZXN0UGFydChzZWxmLnRlYXJEb3duLCBvdXRjb21lKQorICAgICAgICAgICAgICAgIG91dGNvbWUuZXhwZWN0aW5nX2ZhaWx1cmUgPSBleHBlY3RpbmdfZmFpbHVyZQorICAgICAgICAgICAgICAgIHdpdGggb3V0Y29tZS50ZXN0UGFydEV4ZWN1dG9yKHNlbGYsIGlzVGVzdD1UcnVlKToKKyAgICAgICAgICAgICAgICAgICAgdGVzdE1ldGhvZCgpCisgICAgICAgICAgICAgICAgb3V0Y29tZS5leHBlY3RpbmdfZmFpbHVyZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgd2l0aCBvdXRjb21lLnRlc3RQYXJ0RXhlY3V0b3Ioc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVhckRvd24oKQogCiAgICAgICAgICAgICBzZWxmLmRvQ2xlYW51cHMoKQorICAgICAgICAgICAgZm9yIHRlc3QsIHJlYXNvbiBpbiBvdXRjb21lLnNraXBwZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fYWRkU2tpcChyZXN1bHQsIHRlc3QsIHJlYXNvbikKKyAgICAgICAgICAgIHNlbGYuX2ZlZWRFcnJvcnNUb1Jlc3VsdChyZXN1bHQsIG91dGNvbWUuZXJyb3JzKQogICAgICAgICAgICAgaWYgb3V0Y29tZS5zdWNjZXNzOgotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRTdWNjZXNzKHNlbGYpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG91dGNvbWUuc2tpcHBlZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkU2tpcChyZXN1bHQsIG91dGNvbWUuc2tpcHBlZCkKLSAgICAgICAgICAgICAgICBmb3IgZXhjX2luZm8gaW4gb3V0Y29tZS5lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRFcnJvcihzZWxmLCBleGNfaW5mbykKLSAgICAgICAgICAgICAgICBmb3IgZXhjX2luZm8gaW4gb3V0Y29tZS5mYWlsdXJlczoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZEZhaWx1cmUoc2VsZiwgZXhjX2luZm8pCi0gICAgICAgICAgICAgICAgaWYgb3V0Y29tZS51bmV4cGVjdGVkU3VjY2VzcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYWRkVW5leHBlY3RlZFN1Y2Nlc3MgPSBnZXRhdHRyKHJlc3VsdCwgJ2FkZFVuZXhwZWN0ZWRTdWNjZXNzJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgYWRkVW5leHBlY3RlZFN1Y2Nlc3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmKQorICAgICAgICAgICAgICAgIGlmIGV4cGVjdGluZ19mYWlsdXJlOgorICAgICAgICAgICAgICAgICAgICBpZiBvdXRjb21lLmV4cGVjdGVkRmFpbHVyZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZEV4cGVjdGVkRmFpbHVyZShyZXN1bHQsIG91dGNvbWUuZXhwZWN0ZWRGYWlsdXJlKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGVzdFJlc3VsdCBoYXMgbm8gYWRkVW5leHBlY3RlZFN1Y2Nlc3MgbWV0aG9kLCByZXBvcnRpbmcgYXMgZmFpbHVyZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRGYWlsdXJlKHNlbGYsIG91dGNvbWUudW5leHBlY3RlZFN1Y2Nlc3MpCi0KLSAgICAgICAgICAgICAgICBpZiBvdXRjb21lLmV4cGVjdGVkRmFpbHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYWRkRXhwZWN0ZWRGYWlsdXJlID0gZ2V0YXR0cihyZXN1bHQsICdhZGRFeHBlY3RlZEZhaWx1cmUnLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBpZiBhZGRFeHBlY3RlZEZhaWx1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgb3V0Y29tZS5leHBlY3RlZEZhaWx1cmUpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUZXN0UmVzdWx0IGhhcyBubyBhZGRFeHBlY3RlZEZhaWx1cmUgbWV0aG9kLCByZXBvcnRpbmcgYXMgcGFzc2VzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkU3VjY2VzcyhzZWxmKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkVW5leHBlY3RlZFN1Y2Nlc3MocmVzdWx0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRTdWNjZXNzKHNlbGYpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXN1bHQuc3RvcFRlc3Qoc2VsZikKQEAgLTQ3NywxMSArNTIxLDExIEBACiAgICAgZGVmIGRvQ2xlYW51cHMoc2VsZik6CiAgICAgICAgICIiIkV4ZWN1dGUgYWxsIGNsZWFudXAgZnVuY3Rpb25zLiBOb3JtYWxseSBjYWxsZWQgZm9yIHlvdSBhZnRlcgogICAgICAgICB0ZWFyRG93bi4iIiIKLSAgICAgICAgb3V0Y29tZSA9IHNlbGYuX291dGNvbWVGb3JEb0NsZWFudXBzIG9yIF9PdXRjb21lKCkKKyAgICAgICAgb3V0Y29tZSA9IHNlbGYuX291dGNvbWUgb3IgX091dGNvbWUoKQogICAgICAgICB3aGlsZSBzZWxmLl9jbGVhbnVwczoKICAgICAgICAgICAgIGZ1bmN0aW9uLCBhcmdzLCBrd2FyZ3MgPSBzZWxmLl9jbGVhbnVwcy5wb3AoKQotICAgICAgICAgICAgcGFydCA9IGxhbWJkYTogZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZVRlc3RQYXJ0KHBhcnQsIG91dGNvbWUpCisgICAgICAgICAgICB3aXRoIG91dGNvbWUudGVzdFBhcnRFeGVjdXRvcihzZWxmKToKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigqYXJncywgKiprd2FyZ3MpCiAKICAgICAgICAgIyByZXR1cm4gdGhpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICAgICAgIyBldmVuIHRob3VnaCB3ZSBubyBsb25nZXIgdXMgaXQgaW50ZXJuYWxseQpAQCAtMTIxMiwzICsxMjU2LDM5IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGVzY3JpcHRpb24KICAgICAgICAgZG9jID0gc2VsZi5fdGVzdEZ1bmMuX19kb2NfXwogICAgICAgICByZXR1cm4gZG9jIGFuZCBkb2Muc3BsaXQoIlxuIilbMF0uc3RyaXAoKSBvciBOb25lCisKKworY2xhc3MgX1N1YlRlc3QoVGVzdENhc2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfY2FzZSwgbWVzc2FnZSwgcGFyYW1zKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuX21lc3NhZ2UgPSBtZXNzYWdlCisgICAgICAgIHNlbGYudGVzdF9jYXNlID0gdGVzdF9jYXNlCisgICAgICAgIHNlbGYucGFyYW1zID0gcGFyYW1zCisgICAgICAgIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiA9IHRlc3RfY2FzZS5mYWlsdXJlRXhjZXB0aW9uCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3VidGVzdHMgY2Fubm90IGJlIHJ1biBkaXJlY3RseSIpCisKKyAgICBkZWYgX3N1YkRlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICBwYXJ0cyA9IFtdCisgICAgICAgIGlmIHNlbGYuX21lc3NhZ2U6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIlt7fV0iLmZvcm1hdChzZWxmLl9tZXNzYWdlKSkKKyAgICAgICAgaWYgc2VsZi5wYXJhbXM6CisgICAgICAgICAgICBwYXJhbXNfZGVzYyA9ICcsICcuam9pbigKKyAgICAgICAgICAgICAgICAie309eyFyfSIuZm9ybWF0KGssIHYpCisgICAgICAgICAgICAgICAgZm9yIChrLCB2KSBpbiBzb3J0ZWQoc2VsZi5wYXJhbXMuaXRlbXMoKSkpCisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIih7fSkiLmZvcm1hdChwYXJhbXNfZGVzYykpCisgICAgICAgIHJldHVybiAiICIuam9pbihwYXJ0cykgb3IgJyg8c3VidGVzdD4pJworCisgICAgZGVmIGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gInt9IHt9Ii5mb3JtYXQoc2VsZi50ZXN0X2Nhc2UuaWQoKSwgc2VsZi5fc3ViRGVzY3JpcHRpb24oKSkKKworICAgIGRlZiBzaG9ydERlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgb25lLWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIHN1YnRlc3QsIG9yIE5vbmUgaWYgbm8KKyAgICAgICAgZGVzY3JpcHRpb24gaGFzIGJlZW4gcHJvdmlkZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2Nhc2Uuc2hvcnREZXNjcmlwdGlvbigpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSB7fSIuZm9ybWF0KHNlbGYudGVzdF9jYXNlLCBzZWxmLl9zdWJEZXNjcmlwdGlvbigpKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L2xvYWRlci5weSBiL0xpYi91bml0dGVzdC9sb2FkZXIucHkKaW5kZXggMmI5MjUyNS4uYWQ4OWNkMCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5CkBAIC0zNCw2ICszNCwxNCBAQAogICAgIFRlc3RDbGFzcyA9IHR5cGUoY2xhc3NuYW1lLCAoY2FzZS5UZXN0Q2FzZSwpLCBhdHRycykKICAgICByZXR1cm4gc3VpdGVDbGFzcygoVGVzdENsYXNzKG1ldGhvZG5hbWUpLCkpCiAKK2RlZiBfbWFrZV9za2lwcGVkX3Rlc3QobWV0aG9kbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKToKKyAgICBAY2FzZS5za2lwKHN0cihleGNlcHRpb24pKQorICAgIGRlZiB0ZXN0U2tpcHBlZChzZWxmKToKKyAgICAgICAgcGFzcworICAgIGF0dHJzID0ge21ldGhvZG5hbWU6IHRlc3RTa2lwcGVkfQorICAgIFRlc3RDbGFzcyA9IHR5cGUoIk1vZHVsZVNraXBwZWQiLCAoY2FzZS5UZXN0Q2FzZSwpLCBhdHRycykKKyAgICByZXR1cm4gc3VpdGVDbGFzcygoVGVzdENsYXNzKG1ldGhvZG5hbWUpLCkpCisKIGRlZiBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KHBhdGgpOgogICAgIGlmIHBhdGgubG93ZXIoKS5lbmRzd2l0aCgnJHB5LmNsYXNzJyk6CiAgICAgICAgIHJldHVybiBwYXRoWzotOV0KQEAgLTE2OSw2ICsxNzcsOSBAQAogICAgICAgICBUaGUgcGF0dGVybiBpcyBkZWxpYmVyYXRlbHkgbm90IHN0b3JlZCBhcyBhIGxvYWRlciBhdHRyaWJ1dGUgc28gdGhhdAogICAgICAgICBwYWNrYWdlcyBjYW4gY29udGludWUgZGlzY292ZXJ5IHRoZW1zZWx2ZXMuIHRvcF9sZXZlbF9kaXIgaXMgc3RvcmVkIHNvCiAgICAgICAgIGxvYWRfdGVzdHMgZG9lcyBub3QgbmVlZCB0byBwYXNzIHRoaXMgYXJndW1lbnQgaW4gdG8gbG9hZGVyLmRpc2NvdmVyKCkuCisKKyAgICAgICAgUGF0aHMgYXJlIHNvcnRlZCBiZWZvcmUgYmVpbmcgaW1wb3J0ZWQgdG8gZW5zdXJlIHJlcHJvZHVjaWJsZSBleGVjdXRpb24KKyAgICAgICAgb3JkZXIgZXZlbiBvbiBmaWxlc3lzdGVtcyB3aXRoIG5vbi1hbHBoYWJldGljYWwgb3JkZXJpbmcgbGlrZSBleHQzLzQuCiAgICAgICAgICIiIgogICAgICAgICBzZXRfaW1wbGljaXRfdG9wID0gRmFsc2UKICAgICAgICAgaWYgdG9wX2xldmVsX2RpciBpcyBOb25lIGFuZCBzZWxmLl90b3BfbGV2ZWxfZGlyIGlzIG5vdCBOb25lOgpAQCAtMjQ1LDcgKzI1Niw3IEBACiAKICAgICBkZWYgX2ZpbmRfdGVzdHMoc2VsZiwgc3RhcnRfZGlyLCBwYXR0ZXJuKToKICAgICAgICAgIiIiVXNlZCBieSBkaXNjb3ZlcnkuIFlpZWxkcyB0ZXN0IHN1aXRlcyBpdCBsb2Fkcy4iIiIKLSAgICAgICAgcGF0aHMgPSBvcy5saXN0ZGlyKHN0YXJ0X2RpcikKKyAgICAgICAgcGF0aHMgPSBzb3J0ZWQob3MubGlzdGRpcihzdGFydF9kaXIpKQogCiAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHN0YXJ0X2RpciwgcGF0aCkKQEAgLTI1OSw2ICsyNzAsOCBAQAogICAgICAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoZnVsbF9wYXRoKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgY2FzZS5Ta2lwVGVzdCBhcyBlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKQogICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgeWllbGQgX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KG5hbWUsIHNlbGYuc3VpdGVDbGFzcykKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMjkxLDggKzMwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlc3RzIGxvYWRlZCBmcm9tIHBhY2thZ2UgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGVzdHMKICAgICAgICAgICAgICAgICAgICAgIyByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fZmluZF90ZXN0cyhmdWxsX3BhdGgsIHBhdHRlcm4pOgotICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGVzdAorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX2ZpbmRfdGVzdHMoZnVsbF9wYXRoLCBwYXR0ZXJuKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxvYWRfdGVzdHMoc2VsZiwgdGVzdHMsIHBhdHRlcm4pCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbWFpbi5weSBiL0xpYi91bml0dGVzdC9tYWluLnB5CmluZGV4IGVhZDY0OTMuLmVkYjE0MWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tYWluLnB5CisrKyBiL0xpYi91bml0dGVzdC9tYWluLnB5CkBAIC0xNjQsNyArMTY0LDEwIEBACiAgICAgICAgICAgICAgICAgIyB0byBzdXBwb3J0IHB5dGhvbiAtbSB1bml0dGVzdCAuLi4KICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSA9IE5vbmUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudGVzdE5hbWVzID0gKHNlbGYuZGVmYXVsdFRlc3QsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmRlZmF1bHRUZXN0LCBzdHIpOgorICAgICAgICAgICAgICAgIHNlbGYudGVzdE5hbWVzID0gKHNlbGYuZGVmYXVsdFRlc3QsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnRlc3ROYW1lcyA9IGxpc3Qoc2VsZi5kZWZhdWx0VGVzdCkKICAgICAgICAgc2VsZi5jcmVhdGVUZXN0cygpCiAKICAgICBkZWYgY3JlYXRlVGVzdHMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5CmluZGV4IDA3Mzg2OWEuLmRjNWMwMzMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC9tb2NrLnB5CkBAIC0yNyw3ICsyNyw3IEBACiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHBwcmludAogaW1wb3J0IHN5cwotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMsIHBhcnRpYWwKIAogCiBCYXNlRXhjZXB0aW9ucyA9IChCYXNlRXhjZXB0aW9uLCkKQEAgLTY2LDU1ICs2Niw0NSBAQAogKQogCiAKLWRlZiBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2U9RmFsc2UpOgotICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSkgYW5kIG5vdCBpbnN0YW5jZToKK2RlZiBfZ2V0X3NpZ25hdHVyZV9vYmplY3QoZnVuYywgYXNfaW5zdGFuY2UsIGVhdF9zZWxmKToKKyAgICAiIiIKKyAgICBHaXZlbiBhbiBhcmJpdHJhcnksIHBvc3NpYmx5IGNhbGxhYmxlIG9iamVjdCwgdHJ5IHRvIGNyZWF0ZSBhIHN1aXRhYmxlCisgICAgc2lnbmF0dXJlIG9iamVjdC4KKyAgICBSZXR1cm4gYSAocmVkdWNlZCBmdW5jLCBzaWduYXR1cmUpIHR1cGxlLCBvciBOb25lLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSkgYW5kIG5vdCBhc19pbnN0YW5jZToKKyAgICAgICAgIyBJZiBpdCdzIGEgdHlwZSBhbmQgc2hvdWxkIGJlIG1vZGVsbGVkIGFzIGEgdHlwZSwgdXNlIF9faW5pdF9fLgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmdW5jID0gZnVuYy5fX2luaXRfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2tpcGZpcnN0ID0gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBTa2lwIHRoZSBgc2VsZmAgYXJndW1lbnQgaW4gX19pbml0X18KKyAgICAgICAgZWF0X3NlbGYgPSBUcnVlCiAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmdW5jLCBGdW5jdGlvblR5cGVzKToKLSAgICAgICAgIyBmb3IgY2xhc3NlcyB3aGVyZSBpbnN0YW5jZSBpcyBUcnVlIHdlIGVuZCB1cCBoZXJlIHRvbworICAgICAgICAjIElmIHdlIHJlYWxseSB3YW50IHRvIG1vZGVsIGFuIGluc3RhbmNlIG9mIHRoZSBwYXNzZWQgdHlwZSwKKyAgICAgICAgIyBfX2NhbGxfXyBzaG91bGQgYmUgbG9va2VkIHVwLCBub3QgX19pbml0X18uCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9fY2FsbF9fCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgIGlmIGVhdF9zZWxmOgorICAgICAgICBzaWdfZnVuYyA9IHBhcnRpYWwoZnVuYywgTm9uZSkKKyAgICBlbHNlOgorICAgICAgICBzaWdfZnVuYyA9IGZ1bmMKICAgICB0cnk6Ci0gICAgICAgIGFyZ3NwZWMgPSBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKGZ1bmMpCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgIyBDIGZ1bmN0aW9uIC8gbWV0aG9kLCBwb3NzaWJseSBpbmhlcml0ZWQgb2JqZWN0KCkuX19pbml0X18KLSAgICAgICAgcmV0dXJuCi0KLSAgICByZWdhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seSwga3dvbmx5ZGVmLCBhbm4gPSBhcmdzcGVjCi0KLQotICAgICMgaW5zdGFuY2UgbWV0aG9kcyBhbmQgY2xhc3NtZXRob2RzIG5lZWQgdG8gbG9zZSB0aGUgc2VsZiBhcmd1bWVudAotICAgIGlmIGdldGF0dHIoZnVuYywgJ19fc2VsZl9fJywgTm9uZSkgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJlZ2FyZ3MgPSByZWdhcmdzWzE6XQotICAgIGlmIHNraXBmaXJzdDoKLSAgICAgICAgIyB0aGlzIGNvbmRpdGlvbiBhbmQgdGhlIGFib3ZlIG9uZSBhcmUgbmV2ZXIgYm90aCBUcnVlIC0gd2h5PwotICAgICAgICByZWdhcmdzID0gcmVnYXJnc1sxOl0KLQotICAgIHNpZ25hdHVyZSA9IGluc3BlY3QuZm9ybWF0YXJnc3BlYygKLSAgICAgICAgcmVnYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLAotICAgICAgICBrd29ubHksIGt3b25seWRlZiwgYW5uLCBmb3JtYXR2YWx1ZT1sYW1iZGEgdmFsdWU6ICIiKQotICAgIHJldHVybiBzaWduYXR1cmVbMTotMV0sIGZ1bmMKKyAgICAgICAgcmV0dXJuIGZ1bmMsIGluc3BlY3Quc2lnbmF0dXJlKHNpZ19mdW5jKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAjIENlcnRhaW4gY2FsbGFibGUgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgaW5zcGVjdC5zaWduYXR1cmUoKQorICAgICAgICByZXR1cm4gTm9uZQogCiAKIGRlZiBfY2hlY2tfc2lnbmF0dXJlKGZ1bmMsIG1vY2ssIHNraXBmaXJzdCwgaW5zdGFuY2U9RmFsc2UpOgotICAgIGlmIG5vdCBfY2FsbGFibGUoZnVuYyk6CisgICAgc2lnID0gX2dldF9zaWduYXR1cmVfb2JqZWN0KGZ1bmMsIGluc3RhbmNlLCBza2lwZmlyc3QpCisgICAgaWYgc2lnIGlzIE5vbmU6CiAgICAgICAgIHJldHVybgotCi0gICAgcmVzdWx0ID0gX2dldHNpZ25hdHVyZShmdW5jLCBza2lwZmlyc3QsIGluc3RhbmNlKQotICAgIGlmIHJlc3VsdCBpcyBOb25lOgotICAgICAgICByZXR1cm4KLSAgICBzaWduYXR1cmUsIGZ1bmMgPSByZXN1bHQKLQotICAgICMgY2FuJ3QgdXNlIHNlbGYgYmVjYXVzZSAic2VsZiIgaXMgY29tbW9uIGFzIGFuIGFyZ3VtZW50IG5hbWUKLSAgICAjIHVuZm9ydHVuYXRlbHkgZXZlbiBub3QgaW4gdGhlIGZpcnN0IHBsYWNlCi0gICAgc3JjID0gImxhbWJkYSBfbW9ja19zZWxmLCAlczogTm9uZSIgJSBzaWduYXR1cmUKLSAgICBjaGVja3NpZyA9IGV2YWwoc3JjLCB7fSkKKyAgICBmdW5jLCBzaWcgPSBzaWcKKyAgICBkZWYgY2hlY2tzaWcoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2lnLmJpbmQoKmFyZ3MsICoqa3dhcmdzKQogICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKICAgICB0eXBlKG1vY2spLl9tb2NrX2NoZWNrX3NpZyA9IGNoZWNrc2lnCiAKQEAgLTE2NiwxNSArMTU2LDEyIEBACiAgICAgICAgIHJldHVybgogCiAgICAgc2tpcGZpcnN0ID0gaXNpbnN0YW5jZShvcmlnaW5hbCwgdHlwZSkKLSAgICByZXN1bHQgPSBfZ2V0c2lnbmF0dXJlKG9yaWdpbmFsLCBza2lwZmlyc3QsIGluc3RhbmNlKQorICAgIHJlc3VsdCA9IF9nZXRfc2lnbmF0dXJlX29iamVjdChvcmlnaW5hbCwgaW5zdGFuY2UsIHNraXBmaXJzdCkKICAgICBpZiByZXN1bHQgaXMgTm9uZToKLSAgICAgICAgIyB3YXMgYSBDIGZ1bmN0aW9uIChlLmcuIG9iamVjdCgpLl9faW5pdF9fICkgdGhhdCBjYW4ndCBiZSBtb2NrZWQKICAgICAgICAgcmV0dXJuCi0KLSAgICBzaWduYXR1cmUsIGZ1bmMgPSByZXN1bHQKLQotICAgIHNyYyA9ICJsYW1iZGEgJXM6IE5vbmUiICUgc2lnbmF0dXJlCi0gICAgY2hlY2tzaWcgPSBldmFsKHNyYywge30pCisgICAgZnVuYywgc2lnID0gcmVzdWx0CisgICAgZGVmIGNoZWNrc2lnKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKICAgICBfY29weV9mdW5jX2RldGFpbHMoZnVuYywgY2hlY2tzaWcpCiAKICAgICBuYW1lID0gb3JpZ2luYWwuX19uYW1lX18KQEAgLTM2OCw3ICszNTUsNyBAQAogICAgIGRlZiBfX2luaXRfXygKICAgICAgICAgICAgIHNlbGYsIHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLAogICAgICAgICAgICAgcGFyZW50PU5vbmUsIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwKLSAgICAgICAgICAgICoqa3dhcmdzCisgICAgICAgICAgICBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwgX2VhdF9zZWxmPU5vbmUsICoqa3dhcmdzCiAgICAgICAgICk6CiAgICAgICAgIGlmIF9uZXdfcGFyZW50IGlzIE5vbmU6CiAgICAgICAgICAgICBfbmV3X3BhcmVudCA9IHBhcmVudApAQCAtMzgyLDggKzM2OSwxMCBAQAogICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNwZWMgPSBzcGVjX3NldAogICAgICAgICAgICAgc3BlY19zZXQgPSBUcnVlCisgICAgICAgIGlmIF9lYXRfc2VsZiBpcyBOb25lOgorICAgICAgICAgICAgX2VhdF9zZWxmID0gcGFyZW50IGlzIG5vdCBOb25lCiAKLSAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCwgX3NwZWNfYXNfaW5zdGFuY2UsIF9lYXRfc2VsZikKIAogICAgICAgICBfX2RpY3RfX1snX21vY2tfY2hpbGRyZW4nXSA9IHt9CiAgICAgICAgIF9fZGljdF9fWydfbW9ja193cmFwcyddID0gd3JhcHMKQEAgLTQyOCwyMCArNDE3LDI2IEBACiAgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCiAKIAotICAgIGRlZiBfbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldCk6CisgICAgZGVmIF9tb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0LCBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2VhdF9zZWxmPUZhbHNlKToKICAgICAgICAgX3NwZWNfY2xhc3MgPSBOb25lCisgICAgICAgIF9zcGVjX3NpZ25hdHVyZSA9IE5vbmUKIAogICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBub3QgX2lzX2xpc3Qoc3BlYyk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNwZWMsIHR5cGUpOgogICAgICAgICAgICAgICAgIF9zcGVjX2NsYXNzID0gc3BlYwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBfc3BlY19jbGFzcyA9IF9nZXRfY2xhc3Moc3BlYykKKyAgICAgICAgICAgIHJlcyA9IF9nZXRfc2lnbmF0dXJlX29iamVjdChzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zcGVjX2FzX2luc3RhbmNlLCBfZWF0X3NlbGYpCisgICAgICAgICAgICBfc3BlY19zaWduYXR1cmUgPSByZXMgYW5kIHJlc1sxXQogCiAgICAgICAgICAgICBzcGVjID0gZGlyKHNwZWMpCiAKICAgICAgICAgX19kaWN0X18gPSBzZWxmLl9fZGljdF9fCiAgICAgICAgIF9fZGljdF9fWydfc3BlY19jbGFzcyddID0gX3NwZWNfY2xhc3MKICAgICAgICAgX19kaWN0X19bJ19zcGVjX3NldCddID0gc3BlY19zZXQKKyAgICAgICAgX19kaWN0X19bJ19zcGVjX3NpZ25hdHVyZSddID0gX3NwZWNfc2lnbmF0dXJlCiAgICAgICAgIF9fZGljdF9fWydfbW9ja19tZXRob2RzJ10gPSBzcGVjCiAKIApAQCAtNjk1LDcgKzY5MCw2IEBACiAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSBfZGVsZXRlZAogCiAKLQogICAgIGRlZiBfZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoc2VsZiwgYXJncywga3dhcmdzKToKICAgICAgICAgbmFtZSA9IHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycKICAgICAgICAgcmV0dXJuIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKQpAQCAtNzExLDYgKzcwNSwyOCBAQAogICAgICAgICByZXR1cm4gbWVzc2FnZSAlIChleHBlY3RlZF9zdHJpbmcsIGFjdHVhbF9zdHJpbmcpCiAKIAorICAgIGRlZiBfY2FsbF9tYXRjaGVyKHNlbGYsIF9jYWxsKToKKyAgICAgICAgIiIiCisgICAgICAgIEdpdmVuIGEgY2FsbCAob3Igc2ltcGx5IGEgKGFyZ3MsIGt3YXJncykgdHVwbGUpLCByZXR1cm4gYQorICAgICAgICBjb21wYXJpc29uIGtleSBzdWl0YWJsZSBmb3IgbWF0Y2hpbmcgd2l0aCBvdGhlciBjYWxscy4KKyAgICAgICAgVGhpcyBpcyBhIGJlc3QgZWZmb3J0IG1ldGhvZCB3aGljaCByZWxpZXMgb24gdGhlIHNwZWMncyBzaWduYXR1cmUsCisgICAgICAgIGlmIGF2YWlsYWJsZSwgb3IgZmFsbHMgYmFjayBvbiB0aGUgYXJndW1lbnRzIHRoZW1zZWx2ZXMuCisgICAgICAgICIiIgorICAgICAgICBzaWcgPSBzZWxmLl9zcGVjX3NpZ25hdHVyZQorICAgICAgICBpZiBzaWcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsZW4oX2NhbGwpID09IDI6CisgICAgICAgICAgICAgICAgbmFtZSA9ICcnCisgICAgICAgICAgICAgICAgYXJncywga3dhcmdzID0gX2NhbGwKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSwgYXJncywga3dhcmdzID0gX2NhbGwKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZSwgc2lnLmJpbmQoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHJldHVybiBlLndpdGhfdHJhY2ViYWNrKE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gX2NhbGwKKworCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCiAKQEAgLTcyMSw5ICs3MzcsMTQgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0V4cGVjdGVkIGNhbGw6ICVzXG5Ob3QgY2FsbGVkJyAlIChleHBlY3RlZCwpKQogCi0gICAgICAgIGlmIHNlbGYuY2FsbF9hcmdzICE9IChhcmdzLCBrd2FyZ3MpOgorICAgICAgICBkZWYgX2Vycm9yX21lc3NhZ2UoKToKICAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2ZhaWx1cmVfbWVzc2FnZShhcmdzLCBrd2FyZ3MpCi0gICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisgICAgICAgICAgICByZXR1cm4gbXNnCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fY2FsbF9tYXRjaGVyKChhcmdzLCBrd2FyZ3MpKQorICAgICAgICBhY3R1YWwgPSBzZWxmLl9jYWxsX21hdGNoZXIoc2VsZi5jYWxsX2FyZ3MpCisgICAgICAgIGlmIGV4cGVjdGVkICE9IGFjdHVhbDoKKyAgICAgICAgICAgIGNhdXNlID0gZXhwZWN0ZWQgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgRXhjZXB0aW9uKSBlbHNlIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKF9lcnJvcl9tZXNzYWdlKCkpIGZyb20gY2F1c2UKIAogCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CkBAIC03NDcsMTggKzc2OCwyMSBAQAogCiAgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIFRydWUgdGhlbiB0aGUgY2FsbHMgY2FuIGJlIGluIGFueSBvcmRlciwgYnV0CiAgICAgICAgIHRoZXkgbXVzdCBhbGwgYXBwZWFyIGluIGBtb2NrX2NhbGxzYC4iIiIKKyAgICAgICAgZXhwZWN0ZWQgPSBbc2VsZi5fY2FsbF9tYXRjaGVyKGMpIGZvciBjIGluIGNhbGxzXQorICAgICAgICBjYXVzZSA9IGV4cGVjdGVkIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIEV4Y2VwdGlvbikgZWxzZSBOb25lCisgICAgICAgIGFsbF9jYWxscyA9IF9DYWxsTGlzdChzZWxmLl9jYWxsX21hdGNoZXIoYykgZm9yIGMgaW4gc2VsZi5tb2NrX2NhbGxzKQogICAgICAgICBpZiBub3QgYW55X29yZGVyOgotICAgICAgICAgICAgaWYgY2FsbHMgbm90IGluIHNlbGYubW9ja19jYWxsczoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIG5vdCBpbiBhbGxfY2FsbHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKICAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkgZnJvbSBjYXVzZQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgYWxsX2NhbGxzID0gbGlzdChzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgIGFsbF9jYWxscyA9IGxpc3QoYWxsX2NhbGxzKQogCiAgICAgICAgIG5vdF9mb3VuZCA9IFtdCi0gICAgICAgIGZvciBrYWxsIGluIGNhbGxzOgorICAgICAgICBmb3Iga2FsbCBpbiBleHBlY3RlZDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBhbGxfY2FsbHMucmVtb3ZlKGthbGwpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTc2Niw3ICs3OTAsNyBAQAogICAgICAgICBpZiBub3RfZm91bmQ6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKICAgICAgICAgICAgICAgICAnJXIgbm90IGFsbCBmb3VuZCBpbiBjYWxsIGxpc3QnICUgKHR1cGxlKG5vdF9mb3VuZCksKQotICAgICAgICAgICAgKQorICAgICAgICAgICAgKSBmcm9tIGNhdXNlCiAKIAogICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTc3NSwxMiArNzk5LDE0IEBACiAgICAgICAgIFRoZSBhc3NlcnQgcGFzc2VzIGlmIHRoZSBtb2NrIGhhcyAqZXZlciogYmVlbiBjYWxsZWQsIHVubGlrZQogICAgICAgICBgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgYGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB0aGF0IG9ubHkgcGFzcyBpZgogICAgICAgICB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLiIiIgotICAgICAgICBrYWxsID0gY2FsbCgqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGlmIGthbGwgbm90IGluIHNlbGYuY2FsbF9hcmdzX2xpc3Q6CisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fY2FsbF9tYXRjaGVyKChhcmdzLCBrd2FyZ3MpKQorICAgICAgICBhY3R1YWwgPSBbc2VsZi5fY2FsbF9tYXRjaGVyKGMpIGZvciBjIGluIHNlbGYuY2FsbF9hcmdzX2xpc3RdCisgICAgICAgIGlmIGV4cGVjdGVkIG5vdCBpbiBhY3R1YWw6CisgICAgICAgICAgICBjYXVzZSA9IGV4cGVjdGVkIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIEV4Y2VwdGlvbikgZWxzZSBOb25lCiAgICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKICAgICAgICAgICAgICAgICAnJXMgY2FsbCBub3QgZm91bmQnICUgZXhwZWN0ZWRfc3RyaW5nCi0gICAgICAgICAgICApCisgICAgICAgICAgICApIGZyb20gY2F1c2UKIAogCiAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3KToKQEAgLTg1MCwxMSArODc2LDEyIEBACiAgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCiAgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQogICAgICAgICBzZWxmLmNhbGxfY291bnQgKz0gMQotICAgICAgICBzZWxmLmNhbGxfYXJncyA9IF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkKLSAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdC5hcHBlbmQoX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKSkKLQogICAgICAgICBfbmV3X25hbWUgPSBzZWxmLl9tb2NrX25ld19uYW1lCiAgICAgICAgIF9uZXdfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisKKyAgICAgICAgX2NhbGwgPSBfQ2FsbCgoYXJncywga3dhcmdzKSwgdHdvPVRydWUpCisgICAgICAgIHNlbGYuY2FsbF9hcmdzID0gX2NhbGwKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdC5hcHBlbmQoX2NhbGwpCiAgICAgICAgIHNlbGYubW9ja19jYWxscy5hcHBlbmQoX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpKSkKIAogICAgICAgICBzZWVuID0gc2V0KCkKQEAgLTkwOSw4ICs5MzYsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgICAgICAgICAgcmV0X3ZhbCA9IGVmZmVjdCgqYXJncywgKiprd2FyZ3MpCi0gICAgICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6Ci0gICAgICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYucmV0dXJuX3ZhbHVlCiAKICAgICAgICAgaWYgKHNlbGYuX21vY2tfd3JhcHMgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgaXMgREVGQVVMVCk6CkBAIC0yMDMwLDYgKzIwNTUsOCBAQAogICAgIGVsaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAjIE5vbmUgd2UgbW9jayB3aXRoIGEgbm9ybWFsIG1vY2sgd2l0aG91dCBhIHNwZWMKICAgICAgICAgX2t3YXJncyA9IHt9CisgICAgaWYgX2t3YXJncyBhbmQgaW5zdGFuY2U6CisgICAgICAgIF9rd2FyZ3NbJ19zcGVjX2FzX2luc3RhbmNlJ10gPSBUcnVlCiAKICAgICBfa3dhcmdzLnVwZGF0ZShrd2FyZ3MpCiAKQEAgLTIwOTYsMTAgKzIxMjMsMTIgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgRnVuY3Rpb25UeXBlcyk6CiAgICAgICAgICAgICAgICAgcGFyZW50ID0gbW9jay5tb2NrCiAKLSAgICAgICAgICAgIG5ldyA9IE1hZ2ljTW9jayhwYXJlbnQ9cGFyZW50LCBuYW1lPWVudHJ5LCBfbmV3X25hbWU9ZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9cGFyZW50LCAqKmt3YXJncykKLSAgICAgICAgICAgIG1vY2suX21vY2tfY2hpbGRyZW5bZW50cnldID0gbmV3CiAgICAgICAgICAgICBza2lwZmlyc3QgPSBfbXVzdF9za2lwKHNwZWMsIGVudHJ5LCBpc190eXBlKQorICAgICAgICAgICAga3dhcmdzWydfZWF0X3NlbGYnXSA9IHNraXBmaXJzdAorICAgICAgICAgICAgbmV3ID0gTWFnaWNNb2NrKHBhcmVudD1wYXJlbnQsIG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1wYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldwogICAgICAgICAgICAgX2NoZWNrX3NpZ25hdHVyZShvcmlnaW5hbCwgbmV3LCBza2lwZmlyc3Q9c2tpcGZpcnN0KQogCiAgICAgICAgICMgc28gZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBfc2V0X3NpZ25hdHVyZSBiZWNvbWUgaW5zdGFuY2UgYXR0cmlidXRlcywKQEAgLTIxMTMsNiArMjE0MiwxMCBAQAogCiAKIGRlZiBfbXVzdF9za2lwKHNwZWMsIGVudHJ5LCBpc190eXBlKToKKyAgICAiIiIKKyAgICBSZXR1cm4gd2hldGhlciB3ZSBzaG91bGQgc2tpcCB0aGUgZmlyc3QgYXJndW1lbnQgb24gc3BlYydzIGBlbnRyeWAKKyAgICBhdHRyaWJ1dGUuCisgICAgIiIiCiAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CiAgICAgICAgIGlmIGVudHJ5IGluIGdldGF0dHIoc3BlYywgJ19fZGljdF9fJywge30pOgogICAgICAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGUgLSBzaG91bGRuJ3Qgc2tpcApAQCAtMjEyNSw3ICsyMTU4LDEyIEBACiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgKHN0YXRpY21ldGhvZCwgY2xhc3NtZXRob2QpKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gaXNfdHlwZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZ2V0YXR0cihyZXN1bHQsICdfX2dldF9fJywgTm9uZSksIE1ldGhvZFdyYXBwZXJUeXBlcyk6CisgICAgICAgICAgICAjIE5vcm1hbCBtZXRob2QgPT4gc2tpcCBpZiBsb29rZWQgdXAgb24gdHlwZQorICAgICAgICAgICAgIyAoaWYgbG9va2VkIHVwIG9uIGluc3RhbmNlLCBzZWxmIGlzIGFscmVhZHkgc2tpcHBlZCkKKyAgICAgICAgICAgIHJldHVybiBpc190eXBlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICMgc2hvdWxkbid0IGdldCBoZXJlIHVubGVzcyBmdW5jdGlvbiBpcyBhIGR5bmFtaWNhbGx5IHByb3ZpZGVkIGF0dHJpYnV0ZQogICAgICMgWFhYWCB1bnRlc3RlZCBiZWhhdmlvdXIKQEAgLTIxNTksOSArMjE5NywzMSBAQAogICAgIHR5cGUoQU5ZLl9fZXFfXyksCiApCiAKK01ldGhvZFdyYXBwZXJUeXBlcyA9ICgKKyAgICB0eXBlKEFOWS5fX2VxX18uX19nZXRfXyksCispCisKIAogZmlsZV9zcGVjID0gTm9uZQogCitkZWYgX2l0ZXJhdGVfcmVhZF9kYXRhKHJlYWRfZGF0YSk6CisgICAgIyBIZWxwZXIgZm9yIG1vY2tfb3BlbjoKKyAgICAjIFJldHJpZXZlIGxpbmVzIGZyb20gcmVhZF9kYXRhIHZpYSBhIGdlbmVyYXRvciBzbyB0aGF0IHNlcGFyYXRlIGNhbGxzIHRvCisgICAgIyByZWFkbGluZSwgcmVhZCwgYW5kIHJlYWRsaW5lcyBhcmUgcHJvcGVybHkgaW50ZXJsZWF2ZWQKKyAgICBkYXRhX2FzX2xpc3QgPSBbJ3t9XG4nLmZvcm1hdChsKSBmb3IgbCBpbiByZWFkX2RhdGEuc3BsaXQoJ1xuJyldCisKKyAgICBpZiBkYXRhX2FzX2xpc3RbLTFdID09ICdcbic6CisgICAgICAgICMgSWYgdGhlIGxhc3QgbGluZSBlbmRlZCBpbiBhIG5ld2xpbmUsIHRoZSBsaXN0IGNvbXByZWhlbnNpb24gd2lsbCBoYXZlIGFuCisgICAgICAgICMgZXh0cmEgZW50cnkgdGhhdCdzIGp1c3QgYSBuZXdsaW5lLiAgUmVtb3ZlIHRoaXMuCisgICAgICAgIGRhdGFfYXNfbGlzdCA9IGRhdGFfYXNfbGlzdFs6LTFdCisgICAgZWxzZToKKyAgICAgICAgIyBJZiB0aGVyZSB3YXNuJ3QgYW4gZXh0cmEgbmV3bGluZSBieSBpdHNlbGYsIHRoZW4gdGhlIGZpbGUgYmVpbmcKKyAgICAgICAgIyBlbXVsYXRlZCBkb2Vzbid0IGhhdmUgYSBuZXdsaW5lIHRvIGVuZCB0aGUgbGFzdCBsaW5lICByZW1vdmUgdGhlCisgICAgICAgICMgbmV3bGluZSB0aGF0IG91ciBuYWl2ZSBmb3JtYXQoKSBhZGRlZAorICAgICAgICBkYXRhX2FzX2xpc3RbLTFdID0gZGF0YV9hc19saXN0Wy0xXVs6LTFdCisKKyAgICBmb3IgbGluZSBpbiBkYXRhX2FzX2xpc3Q6CisgICAgICAgIHlpZWxkIGxpbmUKIAogZGVmIG1vY2tfb3Blbihtb2NrPU5vbmUsIHJlYWRfZGF0YT0nJyk6CiAgICAgIiIiCkBAIC0yMTcyLDkgKzIyMzIsMjcgQEAKICAgICBkZWZhdWx0KSB0aGVuIGEgYE1hZ2ljTW9ja2Agd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UsIHdpdGggdGhlIEFQSSBsaW1pdGVkCiAgICAgdG8gbWV0aG9kcyBvciBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBvbiBzdGFuZGFyZCBmaWxlIGhhbmRsZXMuCiAKLSAgICBgcmVhZF9kYXRhYCBpcyBhIHN0cmluZyBmb3IgdGhlIGByZWFkYCBtZXRob2Qgb2YgdGhlIGZpbGUgaGFuZGxlIHRvIHJldHVybi4KLSAgICBUaGlzIGlzIGFuIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LgorICAgIGByZWFkX2RhdGFgIGlzIGEgc3RyaW5nIGZvciB0aGUgYHJlYWRgIG1ldGhvZGRsaW5lYCwgYW5kIGByZWFkbGluZXNgIG9mIHRoZQorICAgIGZpbGUgaGFuZGxlIHRvIHJldHVybi4gIFRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQuCiAgICAgIiIiCisgICAgZGVmIF9yZWFkbGluZXNfc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgaGFuZGxlLnJlYWRsaW5lcy5yZXR1cm5fdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gaGFuZGxlLnJlYWRsaW5lcy5yZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuIGxpc3QoX2RhdGEpCisKKyAgICBkZWYgX3JlYWRfc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgaGFuZGxlLnJlYWQucmV0dXJuX3ZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGhhbmRsZS5yZWFkLnJldHVybl92YWx1ZQorICAgICAgICByZXR1cm4gJycuam9pbihfZGF0YSkKKworICAgIGRlZiBfcmVhZGxpbmVfc2lkZV9lZmZlY3QoKToKKyAgICAgICAgaWYgaGFuZGxlLnJlYWRsaW5lLnJldHVybl92YWx1ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgeWllbGQgaGFuZGxlLnJlYWRsaW5lLnJldHVybl92YWx1ZQorICAgICAgICBmb3IgbGluZSBpbiBfZGF0YToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworCiAgICAgZ2xvYmFsIGZpbGVfc3BlYwogICAgIGlmIGZpbGVfc3BlYyBpcyBOb25lOgogICAgICAgICBpbXBvcnQgX2lvCkBAIC0yMTg0LDkgKzIyNjIsMTggQEAKICAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhuYW1lPSdvcGVuJywgc3BlYz1vcGVuKQogCiAgICAgaGFuZGxlID0gTWFnaWNNb2NrKHNwZWM9ZmlsZV9zcGVjKQotICAgIGhhbmRsZS53cml0ZS5yZXR1cm5fdmFsdWUgPSBOb25lCiAgICAgaGFuZGxlLl9fZW50ZXJfXy5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKLSAgICBoYW5kbGUucmVhZC5yZXR1cm5fdmFsdWUgPSByZWFkX2RhdGEKKworICAgIF9kYXRhID0gX2l0ZXJhdGVfcmVhZF9kYXRhKHJlYWRfZGF0YSkKKworICAgIGhhbmRsZS53cml0ZS5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgaGFuZGxlLnJlYWQucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgIGhhbmRsZS5yZWFkbGluZS5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgaGFuZGxlLnJlYWRsaW5lcy5yZXR1cm5fdmFsdWUgPSBOb25lCisKKyAgICBoYW5kbGUucmVhZC5zaWRlX2VmZmVjdCA9IF9yZWFkX3NpZGVfZWZmZWN0CisgICAgaGFuZGxlLnJlYWRsaW5lLnNpZGVfZWZmZWN0ID0gX3JlYWRsaW5lX3NpZGVfZWZmZWN0KCkKKyAgICBoYW5kbGUucmVhZGxpbmVzLnNpZGVfZWZmZWN0ID0gX3JlYWRsaW5lc19zaWRlX2VmZmVjdAogCiAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKICAgICByZXR1cm4gbW9jawpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weSBiL0xpYi91bml0dGVzdC9yZXN1bHQucHkKaW5kZXggOTdlNTQyNi4uZjNmNGI2NyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQorKysgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CkBAIC0xMjEsNiArMTIxLDIyIEBACiAgICAgICAgIHNlbGYuZmFpbHVyZXMuYXBwZW5kKCh0ZXN0LCBzZWxmLl9leGNfaW5mb190b19zdHJpbmcoZXJyLCB0ZXN0KSkpCiAgICAgICAgIHNlbGYuX21pcnJvck91dHB1dCA9IFRydWUKIAorICAgIEBmYWlsZmFzdAorICAgIGRlZiBhZGRTdWJUZXN0KHNlbGYsIHRlc3QsIHN1YnRlc3QsIGVycik6CisgICAgICAgICIiIkNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3VidGVzdC4KKyAgICAgICAgJ2VycicgaXMgTm9uZSBpZiB0aGUgc3VidGVzdCBlbmRlZCBzdWNjZXNzZnVsbHksIG90aGVyd2lzZSBpdCdzIGEKKyAgICAgICAgdHVwbGUgb2YgdmFsdWVzIGFzIHJldHVybmVkIGJ5IHN5cy5leGNfaW5mbygpLgorICAgICAgICAiIiIKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB3ZSBkb24ndCBkbyBhbnl0aGluZyB3aXRoIHN1Y2Nlc3NmdWwgc3VidGVzdHMsIGJ1dAorICAgICAgICAjIG1vcmUgc29waGlzdGljYXRlZCB0ZXN0IHJlc3VsdHMgbWlnaHQgd2FudCB0byByZWNvcmQgdGhlbS4KKyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhlcnJbMF0sIHRlc3QuZmFpbHVyZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgZXJyb3JzID0gc2VsZi5mYWlsdXJlcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlcnJvcnMgPSBzZWxmLmVycm9ycworICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoc3VidGVzdCwgc2VsZi5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgdGVzdCkpKQorICAgICAgICAgICAgc2VsZi5fbWlycm9yT3V0cHV0ID0gVHJ1ZQorCiAgICAgZGVmIGFkZFN1Y2Nlc3Moc2VsZiwgdGVzdCk6CiAgICAgICAgICJDYWxsZWQgd2hlbiBhIHRlc3QgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkiCiAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5CmluZGV4IGRiZTRkZGMuLjAyZThmM2EgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3Qvc3VwcG9ydC5weQpAQCAtNDEsNyArNDEsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUHJvYmxlbSBoYXNoaW5nICVzIGFuZCAlczogJXMiICUgKG9ial8xLCBvYmpfMiwgZSkpCiAKIAotY2xhc3MgTG9nZ2luZ1Jlc3VsdCh1bml0dGVzdC5UZXN0UmVzdWx0KToKK2NsYXNzIF9CYXNlTG9nZ2luZ1Jlc3VsdCh1bml0dGVzdC5UZXN0UmVzdWx0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nKToKICAgICAgICAgc2VsZi5fZXZlbnRzID0gbG9nCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAgZGVmIHN0YXJ0VGVzdFJ1bihzZWxmKToKICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgnc3RhcnRUZXN0UnVuJykKLSAgICAgICAgc3VwZXIoTG9nZ2luZ1Jlc3VsdCwgc2VsZikuc3RhcnRUZXN0UnVuKCkKKyAgICAgICAgc3VwZXIoKS5zdGFydFRlc3RSdW4oKQogCiAgICAgZGVmIHN0b3BUZXN0KHNlbGYsIHRlc3QpOgogICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCdzdG9wVGVzdCcpCkBAIC02MCw3ICs2MCw3IEBACiAKICAgICBkZWYgc3RvcFRlc3RSdW4oc2VsZik6CiAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoJ3N0b3BUZXN0UnVuJykKLSAgICAgICAgc3VwZXIoTG9nZ2luZ1Jlc3VsdCwgc2VsZikuc3RvcFRlc3RSdW4oKQorICAgICAgICBzdXBlcigpLnN0b3BUZXN0UnVuKCkKIAogICAgIGRlZiBhZGRGYWlsdXJlKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgnYWRkRmFpbHVyZScpCkBAIC02OCw3ICs2OCw3IEBACiAKICAgICBkZWYgYWRkU3VjY2VzcyhzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoJ2FkZFN1Y2Nlc3MnKQotICAgICAgICBzdXBlcihMb2dnaW5nUmVzdWx0LCBzZWxmKS5hZGRTdWNjZXNzKCphcmdzKQorICAgICAgICBzdXBlcigpLmFkZFN1Y2Nlc3MoKmFyZ3MpCiAKICAgICBkZWYgYWRkRXJyb3Ioc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCdhZGRFcnJvcicpCkBAIC03NiwxNSArNzYsMzkgQEAKIAogICAgIGRlZiBhZGRTa2lwKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgnYWRkU2tpcCcpCi0gICAgICAgIHN1cGVyKExvZ2dpbmdSZXN1bHQsIHNlbGYpLmFkZFNraXAoKmFyZ3MpCisgICAgICAgIHN1cGVyKCkuYWRkU2tpcCgqYXJncykKIAogICAgIGRlZiBhZGRFeHBlY3RlZEZhaWx1cmUoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKCdhZGRFeHBlY3RlZEZhaWx1cmUnKQotICAgICAgICBzdXBlcihMb2dnaW5nUmVzdWx0LCBzZWxmKS5hZGRFeHBlY3RlZEZhaWx1cmUoKmFyZ3MpCisgICAgICAgIHN1cGVyKCkuYWRkRXhwZWN0ZWRGYWlsdXJlKCphcmdzKQogCiAgICAgZGVmIGFkZFVuZXhwZWN0ZWRTdWNjZXNzKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgnYWRkVW5leHBlY3RlZFN1Y2Nlc3MnKQotICAgICAgICBzdXBlcihMb2dnaW5nUmVzdWx0LCBzZWxmKS5hZGRVbmV4cGVjdGVkU3VjY2VzcygqYXJncykKKyAgICAgICAgc3VwZXIoKS5hZGRVbmV4cGVjdGVkU3VjY2VzcygqYXJncykKKworCitjbGFzcyBMZWdhY3lMb2dnaW5nUmVzdWx0KF9CYXNlTG9nZ2luZ1Jlc3VsdCk6CisgICAgIiIiCisgICAgQSBsZWdhY3kgVGVzdFJlc3VsdCBpbXBsZW1lbnRhdGlvbiwgd2l0aG91dCBhbiBhZGRTdWJUZXN0IG1ldGhvZCwKKyAgICB3aGljaCByZWNvcmRzIGl0cyBtZXRob2QgY2FsbHMuCisgICAgIiIiCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkU3ViVGVzdChzZWxmKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKKworCitjbGFzcyBMb2dnaW5nUmVzdWx0KF9CYXNlTG9nZ2luZ1Jlc3VsdCk6CisgICAgIiIiCisgICAgQSBUZXN0UmVzdWx0IGltcGxlbWVudGF0aW9uIHdoaWNoIHJlY29yZHMgaXRzIG1ldGhvZCBjYWxscy4KKyAgICAiIiIKKworICAgIGRlZiBhZGRTdWJUZXN0KHNlbGYsIHRlc3QsIHN1YnRlc3QsIGVycik6CisgICAgICAgIGlmIGVyciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgnYWRkU3ViVGVzdFN1Y2Nlc3MnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgnYWRkU3ViVGVzdEZhaWx1cmUnKQorICAgICAgICBzdXBlcigpLmFkZFN1YlRlc3QodGVzdCwgc3VidGVzdCwgZXJyKQogCiAKIGNsYXNzIFJlc3VsdFdpdGhOb1N0YXJ0VGVzdFJ1blN0b3BUZXN0UnVuKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKaW5kZXggZmRiMmU3OC4uMGQ5MjNmMCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQpAQCAtMTMsNyArMTMsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gLnN1cHBvcnQgaW1wb3J0ICgKLSAgICBUZXN0RXF1YWxpdHksIFRlc3RIYXNoaW5nLCBMb2dnaW5nUmVzdWx0LAorICAgIFRlc3RFcXVhbGl0eSwgVGVzdEhhc2hpbmcsIExvZ2dpbmdSZXN1bHQsIExlZ2FjeUxvZ2dpbmdSZXN1bHQsCiAgICAgUmVzdWx0V2l0aE5vU3RhcnRUZXN0UnVuU3RvcFRlc3RSdW4KICkKIApAQCAtMjk3LDYgKzI5Nyw5OCBAQAogCiAgICAgICAgIEZvbygndGVzdCcpLnJ1bigpCiAKKyAgICBkZWYgX2NoZWNrX2NhbGxfb3JkZXJfX3N1YnRlc3RzKHNlbGYsIHJlc3VsdCwgZXZlbnRzLCBleHBlY3RlZF9ldmVudHMpOgorICAgICAgICBjbGFzcyBGb28oVGVzdC5Mb2dnaW5nVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoRm9vLCBzZWxmKS50ZXN0KCkKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiBbMSwgMiwgM106CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGk9aSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdmYWlsdXJlJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIFsyLCAzXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChqPWopOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpICogaiA9PSA2OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdyYWlzZWQgYnkgRm9vLnRlc3QnKQorICAgICAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgIyBPcmRlciBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAjIGk9MSA9PiBzdWJ0ZXN0IGZhaWx1cmUKKyAgICAgICAgIyBpPTIsIGo9MiA9PiBzdWJ0ZXN0IHN1Y2Nlc3MKKyAgICAgICAgIyBpPTIsIGo9MyA9PiBzdWJ0ZXN0IGVycm9yCisgICAgICAgICMgaT0zLCBqPTIgPT4gc3VidGVzdCBlcnJvcgorICAgICAgICAjIGk9Mywgaj0zID0+IHN1YnRlc3Qgc3VjY2VzcworICAgICAgICAjIHRvcGxldmVsID0+IGVycm9yCisgICAgICAgIEZvbyhldmVudHMpLnJ1bihyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzLCBleHBlY3RlZF9ldmVudHMpCisKKyAgICBkZWYgdGVzdF9ydW5fY2FsbF9vcmRlcl9fc3VidGVzdHMoc2VsZik6CisgICAgICAgIGV2ZW50cyA9IFtdCisgICAgICAgIHJlc3VsdCA9IExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICBleHBlY3RlZCA9IFsnc3RhcnRUZXN0JywgJ3NldFVwJywgJ3Rlc3QnLCAndGVhckRvd24nLAorICAgICAgICAgICAgICAgICAgICAnYWRkU3ViVGVzdEZhaWx1cmUnLCAnYWRkU3ViVGVzdFN1Y2Nlc3MnLAorICAgICAgICAgICAgICAgICAgICAnYWRkU3ViVGVzdEZhaWx1cmUnLCAnYWRkU3ViVGVzdEZhaWx1cmUnLAorICAgICAgICAgICAgICAgICAgICAnYWRkU3ViVGVzdFN1Y2Nlc3MnLCAnYWRkRXJyb3InLCAnc3RvcFRlc3QnXQorICAgICAgICBzZWxmLl9jaGVja19jYWxsX29yZGVyX19zdWJ0ZXN0cyhyZXN1bHQsIGV2ZW50cywgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9ydW5fY2FsbF9vcmRlcl9fc3VidGVzdHNfbGVnYWN5KHNlbGYpOgorICAgICAgICAjIFdpdGggYSBsZWdhY3kgcmVzdWx0IG9iamVjdCAod2l0aG91dCBhIGFkZFN1YlRlc3QgbWV0aG9kKSwKKyAgICAgICAgIyB0ZXh0IGV4ZWN1dGlvbiBzdG9wcyBhZnRlciB0aGUgZmlyc3Qgc3VidGVzdCBmYWlsdXJlLgorICAgICAgICBldmVudHMgPSBbXQorICAgICAgICByZXN1bHQgPSBMZWdhY3lMb2dnaW5nUmVzdWx0KGV2ZW50cykKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ3N0YXJ0VGVzdCcsICdzZXRVcCcsICd0ZXN0JywgJ3RlYXJEb3duJywKKyAgICAgICAgICAgICAgICAgICAgJ2FkZEZhaWx1cmUnLCAnc3RvcFRlc3QnXQorICAgICAgICBzZWxmLl9jaGVja19jYWxsX29yZGVyX19zdWJ0ZXN0cyhyZXN1bHQsIGV2ZW50cywgZXhwZWN0ZWQpCisKKyAgICBkZWYgX2NoZWNrX2NhbGxfb3JkZXJfX3N1YnRlc3RzX3N1Y2Nlc3Moc2VsZiwgcmVzdWx0LCBldmVudHMsIGV4cGVjdGVkX2V2ZW50cyk6CisgICAgICAgIGNsYXNzIEZvbyhUZXN0LkxvZ2dpbmdUZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBzdXBlcihGb28sIHNlbGYpLnRlc3QoKQorICAgICAgICAgICAgICAgIGZvciBpIGluIFsxLCAyXToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaT1pKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIFsyLCAzXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChqPWopOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgRm9vKGV2ZW50cykucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHMsIGV4cGVjdGVkX2V2ZW50cykKKworICAgIGRlZiB0ZXN0X3J1bl9jYWxsX29yZGVyX19zdWJ0ZXN0c19zdWNjZXNzKHNlbGYpOgorICAgICAgICBldmVudHMgPSBbXQorICAgICAgICByZXN1bHQgPSBMb2dnaW5nUmVzdWx0KGV2ZW50cykKKyAgICAgICAgIyBUaGUgNiBzdWJ0ZXN0IHN1Y2Nlc3NlcyBhcmUgaW5kaXZpZHVhbGx5IHJlY29yZGVkLCBpbiBhZGRpdGlvbgorICAgICAgICAjIHRvIHRoZSB3aG9sZSB0ZXN0IHN1Y2Nlc3MuCisgICAgICAgIGV4cGVjdGVkID0gKFsnc3RhcnRUZXN0JywgJ3NldFVwJywgJ3Rlc3QnLCAndGVhckRvd24nXQorICAgICAgICAgICAgICAgICAgICArIDYgKiBbJ2FkZFN1YlRlc3RTdWNjZXNzJ10KKyAgICAgICAgICAgICAgICAgICAgKyBbJ2FkZFN1Y2Nlc3MnLCAnc3RvcFRlc3QnXSkKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FsbF9vcmRlcl9fc3VidGVzdHNfc3VjY2VzcyhyZXN1bHQsIGV2ZW50cywgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9ydW5fY2FsbF9vcmRlcl9fc3VidGVzdHNfc3VjY2Vzc19sZWdhY3koc2VsZik6CisgICAgICAgICMgV2l0aCBhIGxlZ2FjeSByZXN1bHQsIG9ubHkgdGhlIHdob2xlIHRlc3Qgc3VjY2VzcyBpcyByZWNvcmRlZC4KKyAgICAgICAgZXZlbnRzID0gW10KKyAgICAgICAgcmVzdWx0ID0gTGVnYWN5TG9nZ2luZ1Jlc3VsdChldmVudHMpCisgICAgICAgIGV4cGVjdGVkID0gWydzdGFydFRlc3QnLCAnc2V0VXAnLCAndGVzdCcsICd0ZWFyRG93bicsCisgICAgICAgICAgICAgICAgICAgICdhZGRTdWNjZXNzJywgJ3N0b3BUZXN0J10KKyAgICAgICAgc2VsZi5fY2hlY2tfY2FsbF9vcmRlcl9fc3VidGVzdHNfc3VjY2VzcyhyZXN1bHQsIGV2ZW50cywgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9ydW5fY2FsbF9vcmRlcl9fc3VidGVzdHNfZmFpbGZhc3Qoc2VsZik6CisgICAgICAgIGV2ZW50cyA9IFtdCisgICAgICAgIHJlc3VsdCA9IExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICByZXN1bHQuZmFpbGZhc3QgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgRm9vKFRlc3QuTG9nZ2luZ1Rlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHN1cGVyKEZvbywgc2VsZikudGVzdCgpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaT0xKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdmYWlsdXJlJykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpPTIpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ2ZhaWx1cmUnKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnZmFpbHVyZScpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ3N0YXJ0VGVzdCcsICdzZXRVcCcsICd0ZXN0JywgJ3RlYXJEb3duJywKKyAgICAgICAgICAgICAgICAgICAgJ2FkZFN1YlRlc3RGYWlsdXJlJywgJ3N0b3BUZXN0J10KKyAgICAgICAgRm9vKGV2ZW50cykucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHMsIGV4cGVjdGVkKQorCiAgICAgIyAiVGhpcyBjbGFzcyBhdHRyaWJ1dGUgZ2l2ZXMgdGhlIGV4Y2VwdGlvbiByYWlzZWQgYnkgdGhlIHRlc3QoKSBtZXRob2QuCiAgICAgIyBJZiBhIHRlc3QgZnJhbWV3b3JrIG5lZWRzIHRvIHVzZSBhIHNwZWNpYWxpemVkIGV4Y2VwdGlvbiwgcG9zc2libHkgdG8KICAgICAjIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIGl0IG11c3Qgc3ViY2xhc3MgdGhpcyBleGNlcHRpb24gaW4KZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9kaXNjb3ZlcnkucHkKaW5kZXggMWZkZjk5MS4uZWNhMzQ4ZSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9kaXNjb3ZlcnkucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9kaXNjb3ZlcnkucHkKQEAgLTQ2LDkgKzQ2LDkgQEAKICAgICAgICAgZGVmIHJlc3RvcmVfaXNkaXIoKToKICAgICAgICAgICAgIG9zLnBhdGguaXNkaXIgPSBvcmlnaW5hbF9pc2RpcgogCi0gICAgICAgIHBhdGhfbGlzdHMgPSBbWyd0ZXN0MS5weScsICd0ZXN0Mi5weScsICdub3RfYV90ZXN0LnB5JywgJ3Rlc3RfZGlyJywKKyAgICAgICAgcGF0aF9saXN0cyA9IFtbJ3Rlc3QyLnB5JywgJ3Rlc3QxLnB5JywgJ25vdF9hX3Rlc3QucHknLCAndGVzdF9kaXInLAogICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5mb28nLCAndGVzdC1ub3QtYS1tb2R1bGUucHknLCAnYW5vdGhlcl9kaXInXSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3QzLnB5JywgJ3Rlc3Q0LnB5JywgXV0KKyAgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3Q0LnB5JywgJ3Rlc3QzLnB5JywgXV0KICAgICAgICAgb3MubGlzdGRpciA9IGxhbWJkYSBwYXRoOiBwYXRoX2xpc3RzLnBvcCgwKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9saXN0ZGlyKQogCkBAIC03MCw2ICs3MCw4IEBACiAgICAgICAgIGxvYWRlci5fdG9wX2xldmVsX2RpciA9IHRvcF9sZXZlbAogICAgICAgICBzdWl0ZSA9IGxpc3QobG9hZGVyLl9maW5kX3Rlc3RzKHRvcF9sZXZlbCwgJ3Rlc3QqLnB5JykpCiAKKyAgICAgICAgIyBUaGUgdGVzdCBzdWl0ZXMgZm91bmQgc2hvdWxkIGJlIHNvcnRlZCBhbHBoYWJldGljYWxseSBmb3IgcmVsaWFibGUKKyAgICAgICAgIyBleGVjdXRpb24gb3JkZXIuCiAgICAgICAgIGV4cGVjdGVkID0gW25hbWUgKyAnIG1vZHVsZSB0ZXN0cycgZm9yIG5hbWUgaW4KICAgICAgICAgICAgICAgICAgICAgKCd0ZXN0MScsICd0ZXN0MicpXQogICAgICAgICBleHBlY3RlZC5leHRlbmQoWygndGVzdF9kaXIuJXMnICUgbmFtZSkgKyAnIG1vZHVsZSB0ZXN0cycgZm9yIG5hbWUgaW4KQEAgLTEzMiw2ICsxMzQsNyBAQAogICAgICAgICAjIGFuZCBkaXJlY3RseSBmcm9tIHRoZSB0ZXN0X2RpcmVjdG9yeTIgcGFja2FnZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnbG9hZF90ZXN0cycsICd0ZXN0X2RpcmVjdG9yeTInICsgJyBtb2R1bGUgdGVzdHMnXSkKKyAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLCBbJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQogCiAgICAgICAgICMgbG9hZF90ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgpAQCAtMTg0LDExICsxODcsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9maW5kX3Rlc3RzX2FyZ3MsIFsoc3RhcnRfZGlyLCAncGF0dGVybicpXSkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0b3BfbGV2ZWxfZGlyLCBzeXMucGF0aCkKIAotICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfbW9kdWxlc190aGF0X2ZhaWxfdG9faW1wb3J0KHNlbGYpOgotICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLQorICAgIGRlZiBzZXR1cF9pbXBvcnRfaXNzdWVfdGVzdHMoc2VsZiwgZmFrZWZpbGUpOgogICAgICAgICBsaXN0ZGlyID0gb3MubGlzdGRpcgotICAgICAgICBvcy5saXN0ZGlyID0gbGFtYmRhIF86IFsndGVzdF90aGlzX2RvZXNfbm90X2V4aXN0LnB5J10KKyAgICAgICAgb3MubGlzdGRpciA9IGxhbWJkYSBfOiBbZmFrZWZpbGVdCiAgICAgICAgIGlzZmlsZSA9IG9zLnBhdGguaXNmaWxlCiAgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIF86IFRydWUKICAgICAgICAgb3JpZ19zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCkBAIC0xOTgsNiArMTk5LDExIEBACiAgICAgICAgICAgICBzeXMucGF0aFs6XSA9IG9yaWdfc3lzX3BhdGgKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmUpCiAKKyAgICBkZWYgdGVzdF9kaXNjb3Zlcl93aXRoX21vZHVsZXNfdGhhdF9mYWlsX3RvX2ltcG9ydChzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfdGVzdHMoJ3Rlc3RfdGhpc19kb2VzX25vdF9leGlzdC5weScpCisKICAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy4nKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLmdldGN3ZCgpLCBzeXMucGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQpAQCAtMjA2LDYgKzIxMiwyMiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHRlc3QudGVzdF90aGlzX2RvZXNfbm90X2V4aXN0KCkKIAorICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfbW9kdWxlX3RoYXRfcmFpc2VzX1NraXBUZXN0X29uX2ltcG9ydChzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgZGVmIF9nZXRfbW9kdWxlX2Zyb21fbmFtZShuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdza2lwcGVyb28nKQorICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gX2dldF9tb2R1bGVfZnJvbV9uYW1lCisKKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfdGVzdHMoJ3Rlc3Rfc2tpcF9kdW1teS5weScpCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLmNvdW50VGVzdENhc2VzKCksIDEpCisKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHN1aXRlLnJ1bihyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5za2lwcGVkKSwgMSkKKwogICAgIGRlZiB0ZXN0X2NvbW1hbmRfbGluZV9oYW5kbGluZ19wYXJzZUFyZ3Moc2VsZik6CiAgICAgICAgIHByb2dyYW0gPSBUZXN0YWJsZVRlc3RQcm9ncmFtKCkKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CmluZGV4IDk3OTQ4NjguLjk3ZDdhMjQgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKQEAgLTY0LDYgKzY0LDQxIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zdWl0ZUNsYXNzKAogICAgICAgICAgICAgICAgIFtzZWxmLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZShUZXN0X1Rlc3RQcm9ncmFtLkZvb0JhcildKQogCisgICAgICAgIGRlZiBsb2FkVGVzdHNGcm9tTmFtZXMoc2VsZiwgbmFtZXMsIG1vZHVsZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zdWl0ZUNsYXNzKAorICAgICAgICAgICAgICAgIFtzZWxmLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZShUZXN0X1Rlc3RQcm9ncmFtLkZvb0JhcildKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdFRlc3Rfd2l0aF9zdHJpbmcoc2VsZik6CisgICAgICAgIGNsYXNzIEZha2VSdW5uZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBydW4oc2VsZiwgdGVzdCk6CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0ID0gdGVzdAorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgb2xkX2FyZ3YgPSBzeXMuYXJndgorICAgICAgICBzeXMuYXJndiA9IFsnZmFrZXRlc3QnXQorICAgICAgICBydW5uZXIgPSBGYWtlUnVubmVyKCkKKyAgICAgICAgcHJvZ3JhbSA9IHVuaXR0ZXN0LlRlc3RQcm9ncmFtKHRlc3RSdW5uZXI9cnVubmVyLCBleGl0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFRlc3Q9J3VuaXR0ZXN0LnRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdExvYWRlcj1zZWxmLkZvb0JhckxvYWRlcigpKQorICAgICAgICBzeXMuYXJndiA9IG9sZF9hcmd2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCd1bml0dGVzdC50ZXN0JywpLCBwcm9ncmFtLnRlc3ROYW1lcykKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRUZXN0X3dpdGhfaXRlcmFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIEZha2VSdW5uZXIob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBydW4oc2VsZiwgdGVzdCk6CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0ID0gdGVzdAorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgb2xkX2FyZ3YgPSBzeXMuYXJndgorICAgICAgICBzeXMuYXJndiA9IFsnZmFrZXRlc3QnXQorICAgICAgICBydW5uZXIgPSBGYWtlUnVubmVyKCkKKyAgICAgICAgcHJvZ3JhbSA9IHVuaXR0ZXN0LlRlc3RQcm9ncmFtKAorICAgICAgICAgICAgdGVzdFJ1bm5lcj1ydW5uZXIsIGV4aXQ9RmFsc2UsCisgICAgICAgICAgICBkZWZhdWx0VGVzdD1bJ3VuaXR0ZXN0LnRlc3QnLCAndW5pdHRlc3QudGVzdDInXSwKKyAgICAgICAgICAgIHRlc3RMb2FkZXI9c2VsZi5Gb29CYXJMb2FkZXIoKSkKKyAgICAgICAgc3lzLmFyZ3YgPSBvbGRfYXJndgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsndW5pdHRlc3QudGVzdCcsICd1bml0dGVzdC50ZXN0MiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLnRlc3ROYW1lcykKIAogICAgIGRlZiB0ZXN0X05vbkV4aXQoc2VsZik6CiAgICAgICAgIHByb2dyYW0gPSB1bml0dGVzdC5tYWluKGV4aXQ9RmFsc2UsCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CmluZGV4IDFjNThlNjEuLjZkZDliYjAgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CkBAIC0yMjcsNiArMjI3LDQwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0X2Nhc2UgaXMgdGVzdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvcm1hdHRlZF9leGMsIHN0cikKIAorICAgIGRlZiB0ZXN0X2FkZFN1YlRlc3Qoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF8xKHNlbGYpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHN1YnRlc3QKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmb289MSk6CisgICAgICAgICAgICAgICAgICAgIHN1YnRlc3QgPSBzZWxmLl9zdWJ0ZXN0CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mb190dXBsZSA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICMgUmVnaXN0ZXIgYW4gZXJyb3IgYnkgaGFuZCAodG8gY2hlY2sgdGhlIEFQSSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZFN1YlRlc3QodGVzdCwgc3VidGVzdCwgZXhjX2luZm9fdHVwbGUpCisgICAgICAgICAgICAgICAgICAgICMgTm93IHRyaWdnZXIgYSBmYWlsdXJlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic29tZSByZWNvZ25pemFibGUgZmFpbHVyZSIpCisKKyAgICAgICAgc3VidGVzdCA9IE5vbmUKKyAgICAgICAgdGVzdCA9IEZvbygndGVzdF8xJykKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisKKyAgICAgICAgdGVzdC5ydW4ocmVzdWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5mYWlsdXJlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRlc3RzUnVuLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaG91bGRTdG9wLCBGYWxzZSkKKworICAgICAgICB0ZXN0X2Nhc2UsIGZvcm1hdHRlZF9leGMgPSByZXN1bHQuZXJyb3JzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jYXNlLCBzdWJ0ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEluKCJaZXJvRGl2aXNpb25FcnJvciIsIGZvcm1hdHRlZF9leGMpCisgICAgICAgIHRlc3RfY2FzZSwgZm9ybWF0dGVkX2V4YyA9IHJlc3VsdC5mYWlsdXJlc1swXQorICAgICAgICBzZWxmLmFzc2VydElzKHRlc3RfY2FzZSwgc3VidGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic29tZSByZWNvZ25pemFibGUgZmFpbHVyZSIsIGZvcm1hdHRlZF9leGMpCisKICAgICBkZWYgdGVzdEdldERlc2NyaXB0aW9uV2l0aG91dERvY3N0cmluZyhzZWxmKToKICAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQoTm9uZSwgVHJ1ZSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIzNCw2ICsyNjgsMzcgQEAKICAgICAgICAgICAgICAgICAndGVzdEdldERlc2NyaXB0aW9uV2l0aG91dERvY3N0cmluZyAoJyArIF9fbmFtZV9fICsKICAgICAgICAgICAgICAgICAnLlRlc3RfVGVzdFJlc3VsdCknKQogCisgICAgZGVmIHRlc3RHZXRTdWJUZXN0RGVzY3JpcHRpb25XaXRob3V0RG9jc3RyaW5nKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmb289MSwgYmFyPTIpOgorICAgICAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQoTm9uZSwgVHJ1ZSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5nZXREZXNjcmlwdGlvbihzZWxmLl9zdWJ0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgJ3Rlc3RHZXRTdWJUZXN0RGVzY3JpcHRpb25XaXRob3V0RG9jc3RyaW5nICgnICsgX19uYW1lX18gKworICAgICAgICAgICAgICAgICAgICAnLlRlc3RfVGVzdFJlc3VsdCkgKGJhcj0yLCBmb289MSknKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnc29tZSBtZXNzYWdlJyk6CisgICAgICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdChOb25lLCBUcnVlLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmdldERlc2NyaXB0aW9uKHNlbGYuX3N1YnRlc3QpLAorICAgICAgICAgICAgICAgICAgICAndGVzdEdldFN1YlRlc3REZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmcgKCcgKyBfX25hbWVfXyArCisgICAgICAgICAgICAgICAgICAgICcuVGVzdF9UZXN0UmVzdWx0KSBbc29tZSBtZXNzYWdlXScpCisKKyAgICBkZWYgdGVzdEdldFN1YlRlc3REZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmdBbmRQYXJhbXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdChOb25lLCBUcnVlLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmdldERlc2NyaXB0aW9uKHNlbGYuX3N1YnRlc3QpLAorICAgICAgICAgICAgICAgICAgICAndGVzdEdldFN1YlRlc3REZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmdBbmRQYXJhbXMgJworICAgICAgICAgICAgICAgICAgICAnKCcgKyBfX25hbWVfXyArICcuVGVzdF9UZXN0UmVzdWx0KSAoPHN1YnRlc3Q+KScpCisKKyAgICBkZWYgdGVzdEdldE5lc3RlZFN1YlRlc3REZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZvbz0xKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJhcj0yKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdChOb25lLCBUcnVlLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZ2V0RGVzY3JpcHRpb24oc2VsZi5fc3VidGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAndGVzdEdldE5lc3RlZFN1YlRlc3REZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAgJygnICsgX19uYW1lX18gKyAnLlRlc3RfVGVzdFJlc3VsdCkgKGJhcj0yLCBmb289MSknKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCiAgICAgZGVmIHRlc3RHZXREZXNjcmlwdGlvbldpdGhPbmVMaW5lRG9jc3RyaW5nKHNlbGYpOgpAQCAtMjQ3LDYgKzMxMiwxOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RHZXRTdWJUZXN0RGVzY3JpcHRpb25XaXRoT25lTGluZURvY3N0cmluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZ2V0RGVzY3JpcHRpb24oKSBmb3IgYSBtZXRob2Qgd2l0aCBhIGRvY3N0cmluZy4iIiIKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQoTm9uZSwgVHJ1ZSwgMSkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZm9vPTEsIGJhcj0yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgcmVzdWx0LmdldERlc2NyaXB0aW9uKHNlbGYuX3N1YnRlc3QpLAorICAgICAgICAgICAgICAgKCd0ZXN0R2V0U3ViVGVzdERlc2NyaXB0aW9uV2l0aE9uZUxpbmVEb2NzdHJpbmcgJworICAgICAgICAgICAgICAgICcoJyArIF9fbmFtZV9fICsgJy5UZXN0X1Rlc3RSZXN1bHQpIChiYXI9MiwgZm9vPTEpXG4nCisgICAgICAgICAgICAgICAgJ1Rlc3RzIGdldERlc2NyaXB0aW9uKCkgZm9yIGEgbWV0aG9kIHdpdGggYSBkb2NzdHJpbmcuJykpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAorICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdEdldERlc2NyaXB0aW9uV2l0aE11bHRpTGluZURvY3N0cmluZyhzZWxmKToKICAgICAgICAgIiIiVGVzdHMgZ2V0RGVzY3JpcHRpb24oKSBmb3IgYSBtZXRob2Qgd2l0aCBhIGxvbmdlciBkb2NzdHJpbmcuCiAgICAgICAgIFRoZSBzZWNvbmQgbGluZSBvZiB0aGUgZG9jc3RyaW5nLgpAQCAtMjU5LDYgKzMzNiwyMSBAQAogICAgICAgICAgICAgICAgICdUZXN0cyBnZXREZXNjcmlwdGlvbigpIGZvciBhIG1ldGhvZCB3aXRoIGEgbG9uZ2VyICcKICAgICAgICAgICAgICAgICAnZG9jc3RyaW5nLicpKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RHZXRTdWJUZXN0RGVzY3JpcHRpb25XaXRoTXVsdGlMaW5lRG9jc3RyaW5nKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBnZXREZXNjcmlwdGlvbigpIGZvciBhIG1ldGhvZCB3aXRoIGEgbG9uZ2VyIGRvY3N0cmluZy4KKyAgICAgICAgVGhlIHNlY29uZCBsaW5lIG9mIHRoZSBkb2NzdHJpbmcuCisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdChOb25lLCBUcnVlLCAxKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmb289MSwgYmFyPTIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICByZXN1bHQuZ2V0RGVzY3JpcHRpb24oc2VsZi5fc3VidGVzdCksCisgICAgICAgICAgICAgICAoJ3Rlc3RHZXRTdWJUZXN0RGVzY3JpcHRpb25XaXRoTXVsdGlMaW5lRG9jc3RyaW5nICcKKyAgICAgICAgICAgICAgICAnKCcgKyBfX25hbWVfXyArICcuVGVzdF9UZXN0UmVzdWx0KSAoYmFyPTIsIGZvbz0xKVxuJworICAgICAgICAgICAgICAgICdUZXN0cyBnZXREZXNjcmlwdGlvbigpIGZvciBhIG1ldGhvZCB3aXRoIGEgbG9uZ2VyICcKKyAgICAgICAgICAgICAgICAnZG9jc3RyaW5nLicpKQorCiAgICAgZGVmIHRlc3RTdGFja0ZyYW1lVHJpbW1pbmcoc2VsZik6CiAgICAgICAgIGNsYXNzIEZyYW1lKG9iamVjdCk6CiAgICAgICAgICAgICBjbGFzcyB0Yl9mcmFtZShvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9ydW5uZXIucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weQppbmRleCBlMjJlNmJjLi41YTkxZjFiIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBfT3V0Y29tZQogCiBmcm9tIC5zdXBwb3J0IGltcG9ydCBMb2dnaW5nUmVzdWx0LCBSZXN1bHRXaXRoTm9TdGFydFRlc3RSdW5TdG9wVGVzdFJ1bgogCkBAIC00MiwxMiArNDMsOCBAQAogICAgICAgICAgICAgZGVmIHRlc3ROb3RoaW5nKHNlbGYpOgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBjbGFzcyBNb2NrT3V0Y29tZShvYmplY3QpOgotICAgICAgICAgICAgc3VjY2VzcyA9IFRydWUKLSAgICAgICAgICAgIGVycm9ycyA9IFtdCi0KICAgICAgICAgdGVzdCA9IFRlc3RhYmxlVGVzdCgndGVzdE5vdGhpbmcnKQotICAgICAgICB0ZXN0Ll9vdXRjb21lRm9yRG9DbGVhbnVwcyA9IE1vY2tPdXRjb21lCisgICAgICAgIG91dGNvbWUgPSB0ZXN0Ll9vdXRjb21lID0gX091dGNvbWUoKQogCiAgICAgICAgIGV4YzEgPSBFeGNlcHRpb24oJ2ZvbycpCiAgICAgICAgIGV4YzIgPSBFeGNlcHRpb24oJ2JhcicpCkBAIC02MSw5ICs1OCwxMCBAQAogICAgICAgICB0ZXN0LmFkZENsZWFudXAoY2xlYW51cDIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0ZXN0LmRvQ2xlYW51cHMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShNb2NrT3V0Y29tZS5zdWNjZXNzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dGNvbWUuc3VjY2VzcykKIAotICAgICAgICAoVHlwZTEsIGluc3RhbmNlMSwgXyksIChUeXBlMiwgaW5zdGFuY2UyLCBfKSA9IHJldmVyc2VkKE1vY2tPdXRjb21lLmVycm9ycykKKyAgICAgICAgKChfLCAoVHlwZTEsIGluc3RhbmNlMSwgXykpLAorICAgICAgICAgKF8sIChUeXBlMiwgaW5zdGFuY2UyLCBfKSkpID0gcmV2ZXJzZWQob3V0Y29tZS5lcnJvcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKFR5cGUxLCBpbnN0YW5jZTEpLCAoRXhjZXB0aW9uLCBleGMxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoVHlwZTIsIGluc3RhbmNlMiksIChFeGNlcHRpb24sIGV4YzIpKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NraXBwaW5nLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9za2lwcGluZy5weQppbmRleCA5NTIyNDBlLi4zNTU2OTMyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NraXBwaW5nLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rfc2tpcHBpbmcucHkKQEAgLTI5LDYgKzI5LDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNraXBwZWQsIFsodGVzdCwgInRlc3RpbmciKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRlc3RzUnVuLCAxKQogCisgICAgZGVmIHRlc3Rfc2tpcHBpbmdfc3VidGVzdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9za2lwX21lKHNlbGYpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGE9MSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGI9Mik6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJza2lwIDEiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJza2lwIDIiKQorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInNraXAgMyIpCisgICAgICAgIGV2ZW50cyA9IFtdCisgICAgICAgIHJlc3VsdCA9IExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICB0ZXN0ID0gRm9vKCJ0ZXN0X3NraXBfbWUiKQorICAgICAgICB0ZXN0LnJ1bihyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzLCBbJ3N0YXJ0VGVzdCcsICdhZGRTa2lwJywgJ2FkZFNraXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRTa2lwJywgJ3N0b3BUZXN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5za2lwcGVkKSwgMykKKyAgICAgICAgc3VidGVzdCwgbXNnID0gcmVzdWx0LnNraXBwZWRbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csICJza2lwIDEiKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VidGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3VidGVzdCwgdGVzdCkKKyAgICAgICAgc3VidGVzdCwgbXNnID0gcmVzdWx0LnNraXBwZWRbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csICJza2lwIDIiKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VidGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3VidGVzdCwgdGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2tpcHBlZFsyXSwgKHRlc3QsICJza2lwIDMiKSkKKwogICAgIGRlZiB0ZXN0X3NraXBwaW5nX2RlY29yYXRvcnMoc2VsZik6CiAgICAgICAgIG9wX3RhYmxlID0gKCh1bml0dGVzdC5za2lwVW5sZXNzLCBGYWxzZSwgVHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICh1bml0dGVzdC5za2lwSWYsIFRydWUsIEZhbHNlKSkKQEAgLTk1LDYgKzEyMCwzMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5leHBlY3RlZEZhaWx1cmVzWzBdWzBdLCB0ZXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKIAorICAgIGRlZiB0ZXN0X2V4cGVjdGVkX2ZhaWx1cmVfc3VidGVzdHMoc2VsZik6CisgICAgICAgICMgQSBmYWlsdXJlIGluIGFueSBzdWJ0ZXN0IGNvdW50cyBhcyB0aGUgZXhwZWN0ZWQgZmFpbHVyZSBvZiB0aGUKKyAgICAgICAgIyB3aG9sZSB0ZXN0LgorICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgICAgICAgICAgZGVmIHRlc3RfZGllKHNlbGYpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBvbmUgc3VjY2VlZHMKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaGVscCBtZSEiKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBvbmUgZG9lc24ndCBnZXQgZXhlY3V0ZWQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGRuJ3QgY29tZSBoZXJlIikKKyAgICAgICAgZXZlbnRzID0gW10KKyAgICAgICAgcmVzdWx0ID0gTG9nZ2luZ1Jlc3VsdChldmVudHMpCisgICAgICAgIHRlc3QgPSBGb28oInRlc3RfZGllIikKKyAgICAgICAgdGVzdC5ydW4ocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3N0YXJ0VGVzdCcsICdhZGRTdWJUZXN0U3VjY2VzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRFeHBlY3RlZEZhaWx1cmUnLCAnc3RvcFRlc3QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmV4cGVjdGVkRmFpbHVyZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdC5leHBlY3RlZEZhaWx1cmVzWzBdWzBdLCB0ZXN0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKKwogICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VjY2VzcyhzZWxmKToKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKQEAgLTExMCw2ICsxNjAsMzAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudW5leHBlY3RlZFN1Y2Nlc3NlcywgW3Rlc3RdKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSkKIAorICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfc3VjY2Vzc19zdWJ0ZXN0cyhzZWxmKToKKyAgICAgICAgIyBTdWNjZXNzIGluIGFsbCBzdWJ0ZXN0cyBjb3VudHMgYXMgdGhlIHVuZXhwZWN0ZWQgc3VjY2VzcyBvZgorICAgICAgICAjIHRoZSB3aG9sZSB0ZXN0LgorICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgICAgICAgICAgZGVmIHRlc3RfZGllKHNlbGYpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBvbmUgc3VjY2VlZHMKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgICAgICMgU28gZG9lcyB0aGlzIG9uZQorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV2ZW50cyA9IFtdCisgICAgICAgIHJlc3VsdCA9IExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICB0ZXN0ID0gRm9vKCJ0ZXN0X2RpZSIpCisgICAgICAgIHRlc3QucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWydzdGFydFRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkU3ViVGVzdFN1Y2Nlc3MnLCAnYWRkU3ViVGVzdFN1Y2Nlc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkVW5leHBlY3RlZFN1Y2Nlc3MnLCAnc3RvcFRlc3QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHQuZmFpbHVyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnVuZXhwZWN0ZWRTdWNjZXNzZXMsIFt0ZXN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdC53YXNTdWNjZXNzZnVsKCkpCisKICAgICBkZWYgdGVzdF9za2lwX2RvZXNudF9ydW5fc2V0dXAoc2VsZik6CiAgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICB3YXNTZXRVcCA9IEZhbHNlCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CmluZGV4IDhiZmIyOTMuLjhiMmU5NmQgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CkBAIC0zMzcsOSArMzM3LDEwIEBACiAKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICBmb3Igc3BlYyBpbiAoU29tZUNsYXNzLCBTb21lQ2xhc3MoKSk6Ci0gICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFNvbWVDbGFzcykKKyAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhTb21lQ2xhc3MoKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKIAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX3JldHVybl92YWx1ZShzZWxmKToKQEAgLTU3NiwxMCArNTc3LDEwIEBACiAKICAgICBkZWYgdGVzdF9zcGVjX2luaGVyaXRhbmNlX2Zvcl9jbGFzc2VzKHNlbGYpOgogICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgZGVmIGEoc2VsZiwgeCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgZGVmIGYoc2VsZiwgeSk6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBjbGFzc19tb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKQEAgLTU4NywyNiArNTg4LDMwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoY2xhc3NfbW9jaywgY2xhc3NfbW9jaygpKQogCiAgICAgICAgIGZvciB0aGlzX21vY2sgaW4gY2xhc3NfbW9jaywgY2xhc3NfbW9jaygpOgotICAgICAgICAgICAgdGhpc19tb2NrLmEoKQotICAgICAgICAgICAgdGhpc19tb2NrLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGhpc19tb2NrLmEsICdmb28nKQorICAgICAgICAgICAgdGhpc19tb2NrLmEoeD01KQorICAgICAgICAgICAgdGhpc19tb2NrLmEuYXNzZXJ0X2NhbGxlZF93aXRoKHg9NSkKKyAgICAgICAgICAgIHRoaXNfbW9jay5hLmFzc2VydF9jYWxsZWRfd2l0aCg1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aGlzX21vY2suYSwgJ2ZvbycsICdiYXInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHRoaXNfbW9jaywgJ2InKQogCiAgICAgICAgIGluc3RhbmNlX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKCkpCi0gICAgICAgIGluc3RhbmNlX21vY2suYSgpCi0gICAgICAgIGluc3RhbmNlX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlX21vY2suYSwgJ2ZvbycpCisgICAgICAgIGluc3RhbmNlX21vY2suYSg1KQorICAgICAgICBpbnN0YW5jZV9tb2NrLmEuYXNzZXJ0X2NhbGxlZF93aXRoKDUpCisgICAgICAgIGluc3RhbmNlX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoeD01KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlX21vY2suYSwgJ2ZvbycsICdiYXInKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jaywgJ2InKQogCiAgICAgICAgICMgVGhlIHJldHVybiB2YWx1ZSBpc24ndCBpc24ndCBjYWxsYWJsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlX21vY2spCiAKLSAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIuZigpCi0gICAgICAgIGluc3RhbmNlX21vY2suQmFyLmYuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIuZig2KQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mLmFzc2VydF9jYWxsZWRfd2l0aCg2KQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mLmFzc2VydF9jYWxsZWRfd2l0aCh5PTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLkJhciwgJ2cnKQogCi0gICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZigpCi0gICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZi5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhcigpLmYoNikKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIoKS5mLmFzc2VydF9jYWxsZWRfd2l0aCg2KQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhcigpLmYuYXNzZXJ0X2NhbGxlZF93aXRoKHk9NikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2suQmFyKCksICdnJykKIAogCkBAIC02NjMsMTIgKzY2OCwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCiAgICAgICAgIG1vY2soMSwgMikKICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMikKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgYj0yKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChhPTEsIGI9MikKIAogICAgICAgICBmLmYgPSBmCiAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLmYpCiAgICAgICAgIG1vY2suZigzLCA0KQogICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIDQpCisgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoYT0zLCBiPTQpCiAKIAogICAgIGRlZiB0ZXN0X3NraXBfYXR0cmlidXRlZXJyb3JzKHNlbGYpOgpAQCAtNzA0LDkgKzcxMiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCiAgICAgICAgIG1vY2soMSkKICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgsIDIpCiAKICAgICAgICAgbW9jayg0LCA1KQogICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCg0LCA1KQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChhPTQsIGI9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoLCBhPTUsIGI9NCkKIAogCiAgICAgZGVmIHRlc3RfY2xhc3Nfd2l0aF9ub19pbml0KHNlbGYpOgpAQCAtNzE5LDI0ICs3MzEsMjcgQEAKIAogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jYWxsYWJsZShzZWxmKToKICAgICAgICAgY2xhc3MgQ2FsbGFibGUob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CiAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQ2FsbGFibGUpCi0gICAgICAgIG1vY2soKQotICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoeD0xLCB5PTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQogCi0gICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIGluc3RhbmNlID0gbW9jaygxLCAyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQogICAgICAgICBpbnN0YW5jZShhPSdhJykKKyAgICAgICAgaW5zdGFuY2UuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2EnKQogICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChhPSdhJykKICAgICAgICAgaW5zdGFuY2UoJ2EnKQogICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX3dpdGgoJ2EnKQorICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX3dpdGgoYT0nYScpCiAKLSAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhDYWxsYWJsZSgpKQorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKENhbGxhYmxlKDEsIDIpKQogICAgICAgICBtb2NrKGE9J2EnKQogICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCkBAIC03NzksNyArNzk0LDExIEBACiAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGEgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBhLmYoMTApCisgICAgICAgIGEuZi5hc3NlcnRfY2FsbGVkX3dpdGgoMTApCisgICAgICAgIGEuZi5hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZj0xMCkKICAgICAgICAgYS5mKHNlbGY9MTApCisgICAgICAgIGEuZi5hc3NlcnRfY2FsbGVkX3dpdGgoMTApCiAgICAgICAgIGEuZi5hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZj0xMCkKIAogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CmluZGV4IDNkMDc3NmMuLjEyNzc4NmMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CkBAIC0yNSw2ICsyNSwxOCBAQAogICAgIF9fbmV4dF9fID0gbmV4dAogCiAKK2NsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIGRlZiBtZXRoKHNlbGYsIGEsIGIsIGMsIGQ9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjbWV0aChjbHMsIGEsIGIsIGMsIGQ9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc21ldGgoYSwgYiwgYywgZD1Ob25lKToKKyAgICAgICAgcGFzcworCiAKIGNsYXNzIE1vY2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjczLDYgKzI4NSw0MyBAQAogICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCBhPSdmaXNoJywgYj0nbm90aGluZycpCiAKIAorICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aF9mdW5jdGlvbl9zcGVjKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiLCBjLCBkPU5vbmUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9ZikKKworICAgICAgICBtb2NrKDEsIGI9MiwgYz0zKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChhPTEsIGI9MiwgYz0zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGI9MywgYz0yKQorICAgICAgICAjIEV4cGVjdGVkIGNhbGwgZG9lc24ndCBtYXRjaCB0aGUgc3BlYydzIHNpZ25hdHVyZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKGU9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbi5fX2NhdXNlX18sIFR5cGVFcnJvcikKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoX21ldGhvZF9zcGVjKHNlbGYpOgorICAgICAgICBkZWYgX2NoZWNrKG1vY2spOgorICAgICAgICAgICAgbW9jaygxLCBiPTIsIGM9MykKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIDMpCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChhPTEsIGI9MiwgYz0zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgYj0zLCBjPTIpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1Tb21ldGhpbmcoKS5tZXRoKQorICAgICAgICBfY2hlY2sobW9jaykKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1Tb21ldGhpbmcuY21ldGgpCisgICAgICAgIF9jaGVjayhtb2NrKQorICAgICAgICBtb2NrID0gTW9jayhzcGVjPVNvbWV0aGluZygpLmNtZXRoKQorICAgICAgICBfY2hlY2sobW9jaykKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1Tb21ldGhpbmcuc21ldGgpCisgICAgICAgIF9jaGVjayhtb2NrKQorICAgICAgICBtb2NrID0gTW9jayhzcGVjPVNvbWV0aGluZygpLnNtZXRoKQorICAgICAgICBfY2hlY2sobW9jaykKKworCiAgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoc2VsZik6CiAgICAgICAgIG1vY2sgPSBNb2NrKCkKICAgICAgICAgbW9jaygpCkBAIC0yOTcsNiArMzQ2LDI5IEBACiAgICAgICAgICkKIAogCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhfZnVuY3Rpb25fc3BlYyhzZWxmKToKKyAgICAgICAgZGVmIGYoYSwgYiwgYywgZD1Ob25lKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPWYpCisKKyAgICAgICAgbW9jaygxLCBiPTIsIGM9MykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9MSwgYj0yLCBjPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBiPTMsIGM9MikKKyAgICAgICAgIyBFeHBlY3RlZCBjYWxsIGRvZXNuJ3QgbWF0Y2ggdGhlIHNwZWMncyBzaWduYXR1cmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcikgYXMgY206CisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGU9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbi5fX2NhdXNlX18sIFR5cGVFcnJvcikKKyAgICAgICAgIyBNb2NrIGNhbGxlZCBtb3JlIHRoYW4gb25jZSA9PiBhbHdheXMgZmFpbHMKKyAgICAgICAgbW9jayg0LCA1LCA2KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDUsIDYpCisKKwogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9hY2Nlc3NfcmV0dXJuc19tb2NrcyhzZWxmKToKICAgICAgICAgbW9jayA9IE1vY2soKQogICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZwpAQCAtOTk1LDYgKzEwNjcsMzkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICkKIAogCisgICAgZGVmIHRlc3RfYXNzZXJ0X2hhc19jYWxsc193aXRoX2Z1bmN0aW9uX3NwZWMoc2VsZik6CisgICAgICAgIGRlZiBmKGEsIGIsIGMsIGQ9Tm9uZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1mKQorCisgICAgICAgIG1vY2soMSwgYj0yLCBjPTMpCisgICAgICAgIG1vY2soNCwgNSwgYz02LCBkPTcpCisgICAgICAgIG1vY2soMTAsIDExLCBjPTEyKQorICAgICAgICBjYWxscyA9IFsKKyAgICAgICAgICAgICgnJywgKDEsIDIsIDMpLCB7fSksCisgICAgICAgICAgICAoJycsICg0LCA1LCA2KSwgeydkJzogN30pLAorICAgICAgICAgICAgKCgxMCwgMTEsIDEyKSwge30pLAorICAgICAgICAgICAgXQorICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMpCisgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPVRydWUpCisgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxsc1sxOl0pCisgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxsc1sxOl0sIGFueV9vcmRlcj1UcnVlKQorICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHNbOi0xXSkKKyAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzWzotMV0sIGFueV9vcmRlcj1UcnVlKQorICAgICAgICAjIFJldmVyc2VkIG9yZGVyCisgICAgICAgIGNhbGxzID0gbGlzdChyZXZlcnNlZChjYWxscykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMsIGFueV9vcmRlcj1UcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxsc1sxOl0pCisgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxsc1sxOl0sIGFueV9vcmRlcj1UcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxsc1s6LTFdKQorICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHNbOi0xXSwgYW55X29yZGVyPVRydWUpCisKKwogICAgIGRlZiB0ZXN0X2Fzc2VydF9hbnlfY2FsbChzZWxmKToKICAgICAgICAgbW9jayA9IE1vY2soKQogICAgICAgICBtb2NrKDEsIDIpCkBAIC0xMDIxLDYgKzExMjYsMjYgQEAKICAgICAgICAgKQogCiAKKyAgICBkZWYgdGVzdF9hc3NlcnRfYW55X2NhbGxfd2l0aF9mdW5jdGlvbl9zcGVjKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiLCBjLCBkPU5vbmUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9ZikKKworICAgICAgICBtb2NrKDEsIGI9MiwgYz0zKQorICAgICAgICBtb2NrKDQsIDUsIGM9NiwgZD03KQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCAyLCAzKQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbChhPTEsIGI9MiwgYz0zKQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCg0LCA1LCA2LCA3KQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbChhPTQsIGI9NSwgYz02LCBkPTcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9hbnlfY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgYj0zLCBjPTIpCisgICAgICAgICMgRXhwZWN0ZWQgY2FsbCBkb2Vzbid0IG1hdGNoIHRoZSBzcGVjJ3Mgc2lnbmF0dXJlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoZT04KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY20uZXhjZXB0aW9uLl9fY2F1c2VfXywgVHlwZUVycm9yKQorCisKICAgICBkZWYgdGVzdF9tb2NrX2NhbGxzX2NyZWF0ZV9hdXRvc3BlYyhzZWxmKToKICAgICAgICAgZGVmIGYoYSwgYik6CiAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5CmluZGV4IDBhMGNmYWQuLmY1NGUwNTEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5CkBAIC0xNzIsNSArMTcyLDg4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnZm9vJykKIAogCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfZGF0YShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlYWRsaW5lIHdpbGwgcmV0dXJuIGFsbCB0aGUgbGluZXMgZnJvbSB0aGUgZmFrZSBmaWxlCisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4ocmVhZF9kYXRhPSdmb29cbmJhclxuYmF6XG4nKQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICBoID0gb3BlbignYmFyJykKKyAgICAgICAgICAgIGxpbmUxID0gaC5yZWFkbGluZSgpCisgICAgICAgICAgICBsaW5lMiA9IGgucmVhZGxpbmUoKQorICAgICAgICAgICAgbGluZTMgPSBoLnJlYWRsaW5lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lMSwgJ2Zvb1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lMiwgJ2JhclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lMywgJ2JhelxuJykKKworICAgICAgICAjIENoZWNrIHRoYXQgd2UgcHJvcGVybHkgZW11bGF0ZSBhIGZpbGUgdGhhdCBkb2Vzbid0IGVuZCBpbiBhIG5ld2xpbmUKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbihyZWFkX2RhdGE9J2ZvbycpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIGggPSBvcGVuKCdiYXInKQorICAgICAgICAgICAgcmVzdWx0ID0gaC5yZWFkbGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2RhdGEoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGVtdWxhdGluZyBhIGZpbGUgdGhhdCBlbmRzIGluIGEgbmV3bGluZSBjaGFyYWN0ZXIgd29ya3MKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbihyZWFkX2RhdGE9J2Zvb1xuYmFyXG5iYXpcbicpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIGggPSBvcGVuKCdiYXInKQorICAgICAgICAgICAgcmVzdWx0ID0gaC5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWydmb29cbicsICdiYXJcbicsICdiYXpcbiddKQorCisgICAgICAgICMgVGVzdCB0aGF0IGZpbGVzIHdpdGhvdXQgYSBmaW5hbCBuZXdsaW5lIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkKKyAgICAgICAgIyBlbXVsYXRlZAorICAgICAgICBtb2NrID0gbW9ja19vcGVuKHJlYWRfZGF0YT0nZm9vXG5iYXJcbmJheicpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIGggPSBvcGVuKCdiYXInKQorICAgICAgICAgICAgcmVzdWx0ID0gaC5yZWFkbGluZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbJ2Zvb1xuJywgJ2JhclxuJywgJ2JheiddKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX29wZW5fcmVhZF93aXRoX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICAjIEF0IG9uZSBwb2ludCBjYWxsaW5nIHJlYWQgd2l0aCBhbiBhcmd1bWVudCB3YXMgYnJva2VuCisgICAgICAgICMgZm9yIG1vY2tzIHJldHVybmVkIGJ5IG1vY2tfb3BlbgorICAgICAgICBzb21lX2RhdGEgPSAnZm9vXG5iYXJcbmJheicKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbihyZWFkX2RhdGE9c29tZV9kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5yZWFkKDEwKSwgc29tZV9kYXRhKQorCisKKyAgICBkZWYgdGVzdF9pbnRlcmxlYXZlZF9yZWFkcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY2FsbGluZyByZWFkLCByZWFkbGluZSwgYW5kIHJlYWRsaW5lcyBwdWxscyBkYXRhCisgICAgICAgICMgc2VxdWVudGlhbGx5IGZyb20gdGhlIGRhdGEgd2UgcHJlbG9hZCB3aXRoCisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4ocmVhZF9kYXRhPSdmb29cbmJhclxuYmF6XG4nKQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICBoID0gb3BlbignYmFyJykKKyAgICAgICAgICAgIGxpbmUxID0gaC5yZWFkbGluZSgpCisgICAgICAgICAgICByZXN0ID0gaC5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUxLCAnZm9vXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3QsIFsnYmFyXG4nLCAnYmF6XG4nXSkKKworICAgICAgICBtb2NrID0gbW9ja19vcGVuKHJlYWRfZGF0YT0nZm9vXG5iYXJcbmJhelxuJykKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgaCA9IG9wZW4oJ2JhcicpCisgICAgICAgICAgICBsaW5lMSA9IGgucmVhZGxpbmUoKQorICAgICAgICAgICAgcmVzdCA9IGgucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZTEsICdmb29cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdCwgJ2JhclxuYmF6XG4nKQorCisKKyAgICBkZWYgdGVzdF9vdmVycmlkaW5nX3JldHVybl92YWx1ZXMoc2VsZik6CisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4ocmVhZF9kYXRhPSdmb28nKQorICAgICAgICBoYW5kbGUgPSBtb2NrKCkKKworICAgICAgICBoYW5kbGUucmVhZC5yZXR1cm5fdmFsdWUgPSAnYmFyJworICAgICAgICBoYW5kbGUucmVhZGxpbmUucmV0dXJuX3ZhbHVlID0gJ2JhcicKKyAgICAgICAgaGFuZGxlLnJlYWRsaW5lcy5yZXR1cm5fdmFsdWUgPSBbJ2JhciddCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGUucmVhZCgpLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGUucmVhZGxpbmUoKSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlLnJlYWRsaW5lcygpLCBbJ2JhciddKQorCisgICAgICAgICMgY2FsbCByZXBlYXRlZGx5IHRvIGNoZWNrIHRoYXQgYSBTdG9wSXRlcmF0aW9uIGlzIG5vdCBwcm9wYWdhdGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlLnJlYWRsaW5lKCksICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZS5yZWFkbGluZSgpLCAnYmFyJykKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9lcnJvci5weSBiL0xpYi91cmxsaWIvZXJyb3IucHkKaW5kZXggYjcxMmViYi4uNDViNzE2OSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9lcnJvci5weQorKysgYi9MaWIvdXJsbGliL2Vycm9yLnB5CkBAIC0xLDYgKzEsNiBAQAogIiIiRXhjZXB0aW9uIGNsYXNzZXMgcmFpc2VkIGJ5IHVybGxpYi4KIAotVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGlzIFVSTEVycm9yLCB3aGljaCBpbmhlcml0cyBmcm9tIElPRXJyb3IuICBJdAorVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGlzIFVSTEVycm9yLCB3aGljaCBpbmhlcml0cyBmcm9tIE9TRXJyb3IuICBJdAogZG9lc24ndCBkZWZpbmUgYW55IGJlaGF2aW9yIG9mIGl0cyBvd24sIGJ1dCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgYWxsCiBleGNlcHRpb25zIGRlZmluZWQgaW4gdGhpcyBwYWNrYWdlLgogCkBAIC0xNywxMSArMTcsMTEgQEAKIAogCiAjIGRvIHRoZXNlIGVycm9yIGNsYXNzZXMgbWFrZSBzZW5zZT8KLSMgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSU9FcnJvciBzdHVmZiBpcyBvdmVycmlkZGVuLiAgd2UganVzdCB3YW50IHRvIGJlCisjIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIE9TRXJyb3Igc3R1ZmYgaXMgb3ZlcnJpZGRlbi4gIHdlIGp1c3Qgd2FudCB0byBiZQogIyBzdWJ0eXBlcy4KIAotY2xhc3MgVVJMRXJyb3IoSU9FcnJvcik6Ci0gICAgIyBVUkxFcnJvciBpcyBhIHN1Yi10eXBlIG9mIElPRXJyb3IsIGJ1dCBpdCBkb2Vzbid0IHNoYXJlIGFueSBvZgorY2xhc3MgVVJMRXJyb3IoT1NFcnJvcik6CisgICAgIyBVUkxFcnJvciBpcyBhIHN1Yi10eXBlIG9mIE9TRXJyb3IsIGJ1dCBpdCBkb2Vzbid0IHNoYXJlIGFueSBvZgogICAgICMgdGhlIGltcGxlbWVudGF0aW9uLiAgbmVlZCB0byBvdmVycmlkZSBfX2luaXRfXyBhbmQgX19zdHJfXy4KICAgICAjIEl0IHNldHMgc2VsZi5hcmdzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgRW52aXJvbm1lbnRFcnJvcgogICAgICMgc3ViY2xhc3NlcywgYnV0IGFyZ3MgZG9lc24ndCBoYXZlIHRoZSB0eXBpY2FsIGZvcm1hdCB3aXRoIGVycm5vIGluCkBAIC02MSw5ICs2MSwxMyBAQAogICAgIGRlZiByZWFzb24oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm1zZwogCi0gICAgZGVmIGluZm8oc2VsZik6CisgICAgQHByb3BlcnR5CisgICAgZGVmIGhlYWRlcnMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmhkcnMKIAorICAgIEBoZWFkZXJzLnNldHRlcgorICAgIGRlZiBoZWFkZXJzKHNlbGYsIGhlYWRlcnMpOgorICAgICAgICBzZWxmLmhkcnMgPSBoZWFkZXJzCiAKICMgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGRvd25sb2FkZWQgc2l6ZSBkb2VzIG5vdCBtYXRjaCBjb250ZW50LWxlbmd0aAogY2xhc3MgQ29udGVudFRvb1Nob3J0RXJyb3IoVVJMRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9wYXJzZS5weSBiL0xpYi91cmxsaWIvcGFyc2UucHkKaW5kZXggYWJlNWQwZC4uYjQ5YjdhMSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9wYXJzZS5weQorKysgYi9MaWIvdXJsbGliL3BhcnNlLnB5CkBAIC04NDYsNyArODQ2LDYgQEAKICAgICAiIiJzcGxpdHR5cGUoJ3R5cGU6b3BhcXVlc3RyaW5nJykgLS0+ICd0eXBlJywgJ29wYXF1ZXN0cmluZycuIiIiCiAgICAgZ2xvYmFsIF90eXBlcHJvZwogICAgIGlmIF90eXBlcHJvZyBpcyBOb25lOgotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgX3R5cGVwcm9nID0gcmUuY29tcGlsZSgnXihbXi86XSspOicpCiAKICAgICBtYXRjaCA9IF90eXBlcHJvZy5tYXRjaCh1cmwpCkBAIC04NjAsNyArODU5LDYgQEAKICAgICAiIiJzcGxpdGhvc3QoJy8vaG9zdFs6cG9ydF0vcGF0aCcpIC0tPiAnaG9zdFs6cG9ydF0nLCAnL3BhdGgnLiIiIgogICAgIGdsb2JhbCBfaG9zdHByb2cKICAgICBpZiBfaG9zdHByb2cgaXMgTm9uZToKLSAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIF9ob3N0cHJvZyA9IHJlLmNvbXBpbGUoJ14vLyhbXi8/XSopKC4qKSQnKQogCiAgICAgbWF0Y2ggPSBfaG9zdHByb2cubWF0Y2godXJsKQpAQCAtODc3LDcgKzg3NSw2IEBACiAgICAgIiIic3BsaXR1c2VyKCd1c2VyWzpwYXNzd2RdQGhvc3RbOnBvcnRdJykgLS0+ICd1c2VyWzpwYXNzd2RdJywgJ2hvc3RbOnBvcnRdJy4iIiIKICAgICBnbG9iYWwgX3VzZXJwcm9nCiAgICAgaWYgX3VzZXJwcm9nIGlzIE5vbmU6Ci0gICAgICAgIGltcG9ydCByZQogICAgICAgICBfdXNlcnByb2cgPSByZS5jb21waWxlKCdeKC4qKUAoLiopJCcpCiAKICAgICBtYXRjaCA9IF91c2VycHJvZy5tYXRjaChob3N0KQpAQCAtODg5LDcgKzg4Niw2IEBACiAgICAgIiIic3BsaXRwYXNzd2QoJ3VzZXI6cGFzc3dkJykgLT4gJ3VzZXInLCAncGFzc3dkJy4iIiIKICAgICBnbG9iYWwgX3Bhc3N3ZHByb2cKICAgICBpZiBfcGFzc3dkcHJvZyBpcyBOb25lOgotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgX3Bhc3N3ZHByb2cgPSByZS5jb21waWxlKCdeKFteOl0qKTooLiopJCcscmUuUykKIAogICAgIG1hdGNoID0gX3Bhc3N3ZHByb2cubWF0Y2godXNlcikKQEAgLTkwMiw3ICs4OTgsNiBAQAogICAgICIiInNwbGl0cG9ydCgnaG9zdDpwb3J0JykgLS0+ICdob3N0JywgJ3BvcnQnLiIiIgogICAgIGdsb2JhbCBfcG9ydHByb2cKICAgICBpZiBfcG9ydHByb2cgaXMgTm9uZToKLSAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIF9wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopOihbMC05XSspJCcpCiAKICAgICBtYXRjaCA9IF9wb3J0cHJvZy5tYXRjaChob3N0KQpAQCAtOTE3LDcgKzkxMiw2IEBACiAgICAgUmV0dXJuIE5vbmUgaWYgJzonIGJ1dCBub3QgYSB2YWxpZCBudW1iZXIuIiIiCiAgICAgZ2xvYmFsIF9ucG9ydHByb2cKICAgICBpZiBfbnBvcnRwcm9nIGlzIE5vbmU6Ci0gICAgICAgIGltcG9ydCByZQogICAgICAgICBfbnBvcnRwcm9nID0gcmUuY29tcGlsZSgnXiguKik6KC4qKSQnKQogCiAgICAgbWF0Y2ggPSBfbnBvcnRwcm9nLm1hdGNoKGhvc3QpCkBAIC05MzYsNyArOTMwLDYgQEAKICAgICAiIiJzcGxpdHF1ZXJ5KCcvcGF0aD9xdWVyeScpIC0tPiAnL3BhdGgnLCAncXVlcnknLiIiIgogICAgIGdsb2JhbCBfcXVlcnlwcm9nCiAgICAgaWYgX3F1ZXJ5cHJvZyBpcyBOb25lOgotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgX3F1ZXJ5cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopXD8oW14/XSopJCcpCiAKICAgICBtYXRjaCA9IF9xdWVyeXByb2cubWF0Y2godXJsKQpAQCAtOTQ4LDcgKzk0MSw2IEBACiAgICAgIiIic3BsaXR0YWcoJy9wYXRoI3RhZycpIC0tPiAnL3BhdGgnLCAndGFnJy4iIiIKICAgICBnbG9iYWwgX3RhZ3Byb2cKICAgICBpZiBfdGFncHJvZyBpcyBOb25lOgotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgX3RhZ3Byb2cgPSByZS5jb21waWxlKCdeKC4qKSMoW14jXSopJCcpCiAKICAgICBtYXRjaCA9IF90YWdwcm9nLm1hdGNoKHVybCkKQEAgLTk2Niw3ICs5NTgsNiBAQAogICAgICIiInNwbGl0dmFsdWUoJ2F0dHI9dmFsdWUnKSAtLT4gJ2F0dHInLCAndmFsdWUnLiIiIgogICAgIGdsb2JhbCBfdmFsdWVwcm9nCiAgICAgaWYgX3ZhbHVlcHJvZyBpcyBOb25lOgotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgX3ZhbHVlcHJvZyA9IHJlLmNvbXBpbGUoJ14oW149XSopPSguKikkJykKIAogICAgIG1hdGNoID0gX3ZhbHVlcHJvZy5tYXRjaChhdHRyKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGE3NDQ1ZDEuLjQ3NjVhOTQgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTE4LDcgKzE4LDcgQEAKIHVybGxpYi4gIHBhc3MgdGhlIHVybCBhbmQgb3B0aW9uYWxseSBkYXRhIHRvIHBvc3QgdG8gYW4gSFRUUCBVUkwsIGFuZAogZ2V0IGEgZmlsZS1saWtlIG9iamVjdCBiYWNrLiAgT25lIGRpZmZlcmVuY2UgaXMgdGhhdCB5b3UgY2FuIGFsc28gcGFzcwogYSBSZXF1ZXN0IGluc3RhbmNlIGluc3RlYWQgb2YgVVJMLiAgUmFpc2VzIGEgVVJMRXJyb3IgKHN1YmNsYXNzIG9mCi1JT0Vycm9yKTsgZm9yIEhUVFAgZXJyb3JzLCByYWlzZXMgYW4gSFRUUEVycm9yLCB3aGljaCBjYW4gYWxzbyBiZQorT1NFcnJvcik7IGZvciBIVFRQIGVycm9ycywgcmFpc2VzIGFuIEhUVFBFcnJvciwgd2hpY2ggY2FuIGFsc28gYmUKIHRyZWF0ZWQgYXMgYSB2YWxpZCByZXNwb25zZS4KIAogYnVpbGRfb3BlbmVyIC0tIEZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIG5ldyBPcGVuZXJEaXJlY3RvciBpbnN0YW5jZS4KQEAgLTEwMyw3ICsxMDMsOCBAQAogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0ICgKICAgICB1cmxwYXJzZSwgdXJsc3BsaXQsIHVybGpvaW4sIHVud3JhcCwgcXVvdGUsIHVucXVvdGUsCiAgICAgc3BsaXR0eXBlLCBzcGxpdGhvc3QsIHNwbGl0cG9ydCwgc3BsaXR1c2VyLCBzcGxpdHBhc3N3ZCwKLSAgICBzcGxpdGF0dHIsIHNwbGl0cXVlcnksIHNwbGl0dmFsdWUsIHNwbGl0dGFnLCB0b19ieXRlcywgdXJsdW5wYXJzZSkKKyAgICBzcGxpdGF0dHIsIHNwbGl0cXVlcnksIHNwbGl0dmFsdWUsIHNwbGl0dGFnLCB0b19ieXRlcywKKyAgICB1bnF1b3RlX3RvX2J5dGVzLCB1cmx1bnBhcnNlKQogZnJvbSB1cmxsaWIucmVzcG9uc2UgaW1wb3J0IGFkZGluZm91cmwsIGFkZGNsb3NlaG9vawogCiAjIGNoZWNrIGZvciBTU0wKQEAgLTEyMSw3ICsxMjIsNyBAQAogICAgICdIVFRQUGFzc3dvcmRNZ3InLCAnSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbScsCiAgICAgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLAogICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywKLSAgICAnSFRUUEhhbmRsZXInLCAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLAorICAgICdIVFRQSGFuZGxlcicsICdGaWxlSGFuZGxlcicsICdGVFBIYW5kbGVyJywgJ0NhY2hlRlRQSGFuZGxlcicsICdEYXRhSGFuZGxlcicsCiAgICAgJ1Vua25vd25IYW5kbGVyJywgJ0hUVFBFcnJvclByb2Nlc3NvcicsCiAgICAgIyBGdW5jdGlvbnMKICAgICAndXJsb3BlbicsICdpbnN0YWxsX29wZW5lcicsICdidWlsZF9vcGVuZXInLApAQCAtMjI3LDcgKzIyOCw3IEBACiAgICAgZm9yIHRlbXBfZmlsZSBpbiBfdXJsX3RlbXBmaWxlczoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudW5saW5rKHRlbXBfZmlsZSkKLSAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCiAgICAgZGVsIF91cmxfdGVtcGZpbGVzWzpdCkBAIC0yNTgsMjQgKzI1OSw1OSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwKICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgbWV0aG9kPU5vbmUpOgotICAgICAgICAjIHVud3JhcCgnPFVSTDp0eXBlOi8vaG9zdC9wYXRoPicpIC0tPiAndHlwZTovL2hvc3QvcGF0aCcKLSAgICAgICAgc2VsZi5mdWxsX3VybCA9IHVud3JhcCh1cmwpCi0gICAgICAgIHNlbGYuZnVsbF91cmwsIHNlbGYuZnJhZ21lbnQgPSBzcGxpdHRhZyhzZWxmLmZ1bGxfdXJsKQotICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisgICAgICAgIHNlbGYuZnVsbF91cmwgPSB1cmwKICAgICAgICAgc2VsZi5oZWFkZXJzID0ge30KKyAgICAgICAgc2VsZi51bnJlZGlyZWN0ZWRfaGRycyA9IHt9CisgICAgICAgIHNlbGYuX2RhdGEgPSBOb25lCisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKICAgICAgICAgc2VsZi5fdHVubmVsX2hvc3QgPSBOb25lCiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGhlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYuYWRkX2hlYWRlcihrZXksIHZhbHVlKQotICAgICAgICBzZWxmLnVucmVkaXJlY3RlZF9oZHJzID0ge30KICAgICAgICAgaWYgb3JpZ2luX3JlcV9ob3N0IGlzIE5vbmU6CiAgICAgICAgICAgICBvcmlnaW5fcmVxX2hvc3QgPSByZXF1ZXN0X2hvc3Qoc2VsZikKICAgICAgICAgc2VsZi5vcmlnaW5fcmVxX2hvc3QgPSBvcmlnaW5fcmVxX2hvc3QKICAgICAgICAgc2VsZi51bnZlcmlmaWFibGUgPSB1bnZlcmlmaWFibGUKICAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmdWxsX3VybChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5mcmFnbWVudDoKKyAgICAgICAgICAgIHJldHVybiAne30je30nLmZvcm1hdChzZWxmLl9mdWxsX3VybCwgc2VsZi5mcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Z1bGxfdXJsCisKKyAgICBAZnVsbF91cmwuc2V0dGVyCisgICAgZGVmIGZ1bGxfdXJsKHNlbGYsIHVybCk6CisgICAgICAgICMgdW53cmFwKCc8VVJMOnR5cGU6Ly9ob3N0L3BhdGg+JykgLS0+ICd0eXBlOi8vaG9zdC9wYXRoJworICAgICAgICBzZWxmLl9mdWxsX3VybCA9IHVud3JhcCh1cmwpCisgICAgICAgIHNlbGYuX2Z1bGxfdXJsLCBzZWxmLmZyYWdtZW50ID0gc3BsaXR0YWcoc2VsZi5fZnVsbF91cmwpCiAgICAgICAgIHNlbGYuX3BhcnNlKCkKIAorICAgIEBmdWxsX3VybC5kZWxldGVyCisgICAgZGVmIGZ1bGxfdXJsKHNlbGYpOgorICAgICAgICBzZWxmLl9mdWxsX3VybCA9IE5vbmUKKyAgICAgICAgc2VsZi5mcmFnbWVudCA9IE5vbmUKKyAgICAgICAgc2VsZi5zZWxlY3RvciA9ICcnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0YShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEKKworICAgIEBkYXRhLnNldHRlcgorICAgIGRlZiBkYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBpZiBkYXRhICE9IHNlbGYuX2RhdGE6CisgICAgICAgICAgICBzZWxmLl9kYXRhID0gZGF0YQorICAgICAgICAgICAgIyBpc3N1ZSAxNjQ2NAorICAgICAgICAgICAgIyBpZiB3ZSBjaGFuZ2UgZGF0YSB3ZSBuZWVkIHRvIHJlbW92ZSBjb250ZW50LWxlbmd0aCBoZWFkZXIKKyAgICAgICAgICAgICMgKGNhdXNlIGl0J3MgbW9zdCBwcm9iYWJseSBjYWxjdWxhdGVkIGZvciBwcmV2aW91cyB2YWx1ZSkKKyAgICAgICAgICAgIGlmIHNlbGYuaGFzX2hlYWRlcigiQ29udGVudC1sZW5ndGgiKToKKyAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZV9oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikKKworICAgIEBkYXRhLmRlbGV0ZXIKKyAgICBkZWYgZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gTm9uZQorCiAgICAgZGVmIF9wYXJzZShzZWxmKToKLSAgICAgICAgc2VsZi50eXBlLCByZXN0ID0gc3BsaXR0eXBlKHNlbGYuZnVsbF91cmwpCisgICAgICAgIHNlbGYudHlwZSwgcmVzdCA9IHNwbGl0dHlwZShzZWxmLl9mdWxsX3VybCkKICAgICAgICAgaWYgc2VsZi50eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIHVybCB0eXBlOiAlciIgJSBzZWxmLmZ1bGxfdXJsKQogICAgICAgICBzZWxmLmhvc3QsIHNlbGYuc2VsZWN0b3IgPSBzcGxpdGhvc3QocmVzdCkKQEAgLTI5Miw1NCArMzI4LDcgQEAKICAgICAgICAgICAgIHJldHVybiAiR0VUIgogCiAgICAgZGVmIGdldF9mdWxsX3VybChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5mcmFnbWVudDoKLSAgICAgICAgICAgIHJldHVybiAnJXMjJXMnICUgKHNlbGYuZnVsbF91cmwsIHNlbGYuZnJhZ21lbnQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5mdWxsX3VybAotCi0gICAgIyBCZWdpbiBkZXByZWNhdGVkIG1ldGhvZHMKLQotICAgIGRlZiBhZGRfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgbXNnID0gIlJlcXVlc3QuYWRkX2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgotICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCi0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotICAgIGRlZiBoYXNfZGF0YShzZWxmKToKLSAgICAgICAgbXNnID0gIlJlcXVlc3QuaGFzX2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgotICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEgaXMgbm90IE5vbmUKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmKToKLSAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgotICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEKLQotICAgIGRlZiBnZXRfdHlwZShzZWxmKToKLSAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3R5cGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgotICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCi0gICAgICAgIHJldHVybiBzZWxmLnR5cGUKLQotICAgIGRlZiBnZXRfaG9zdChzZWxmKToKLSAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X2hvc3QgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgotICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCi0gICAgICAgIHJldHVybiBzZWxmLmhvc3QKLQotICAgIGRlZiBnZXRfc2VsZWN0b3Ioc2VsZik6Ci0gICAgICAgIG1zZyA9ICJSZXF1ZXN0LmdldF9zZWxlY3RvciBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2VsZWN0b3IKLQotICAgIGRlZiBpc191bnZlcmlmaWFibGUoc2VsZik6Ci0gICAgICAgIG1zZyA9ICJSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKLSAgICAgICAgcmV0dXJuIHNlbGYudW52ZXJpZmlhYmxlCi0KLSAgICBkZWYgZ2V0X29yaWdpbl9yZXFfaG9zdChzZWxmKToKLSAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X29yaWdpbl9yZXFfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKLSAgICAgICAgcmV0dXJuIHNlbGYub3JpZ2luX3JlcV9ob3N0Ci0KLSAgICAjIEVuZCBkZXByZWNhdGVkIG1ldGhvZHMKKyAgICAgICAgcmV0dXJuIHNlbGYuZnVsbF91cmwKIAogICAgIGRlZiBzZXRfcHJveHkoc2VsZiwgaG9zdCwgdHlwZSk6CiAgICAgICAgIGlmIHNlbGYudHlwZSA9PSAnaHR0cHMnIGFuZCBub3Qgc2VsZi5fdHVubmVsX2hvc3Q6CkBAIC0zNjksNiArMzU4LDEwIEBACiAgICAgICAgICAgICBoZWFkZXJfbmFtZSwKICAgICAgICAgICAgIHNlbGYudW5yZWRpcmVjdGVkX2hkcnMuZ2V0KGhlYWRlcl9uYW1lLCBkZWZhdWx0KSkKIAorICAgIGRlZiByZW1vdmVfaGVhZGVyKHNlbGYsIGhlYWRlcl9uYW1lKToKKyAgICAgICAgc2VsZi5oZWFkZXJzLnBvcChoZWFkZXJfbmFtZSwgTm9uZSkKKyAgICAgICAgc2VsZi51bnJlZGlyZWN0ZWRfaGRycy5wb3AoaGVhZGVyX25hbWUsIE5vbmUpCisKICAgICBkZWYgaGVhZGVyX2l0ZW1zKHNlbGYpOgogICAgICAgICBoZHJzID0gc2VsZi51bnJlZGlyZWN0ZWRfaGRycy5jb3B5KCkKICAgICAgICAgaGRycy51cGRhdGUoc2VsZi5oZWFkZXJzKQpAQCAtNTMxLDcgKzUyNCw4IEBACiAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQogICAgIGRlZmF1bHRfY2xhc3NlcyA9IFtQcm94eUhhbmRsZXIsIFVua25vd25IYW5kbGVyLCBIVFRQSGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgSFRUUERlZmF1bHRFcnJvckhhbmRsZXIsIEhUVFBSZWRpcmVjdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIEZUUEhhbmRsZXIsIEZpbGVIYW5kbGVyLCBIVFRQRXJyb3JQcm9jZXNzb3JdCisgICAgICAgICAgICAgICAgICAgICAgIEZUUEhhbmRsZXIsIEZpbGVIYW5kbGVyLCBIVFRQRXJyb3JQcm9jZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgIERhdGFIYW5kbGVyXQogICAgIGlmIGhhc2F0dHIoaHR0cC5jbGllbnQsICJIVFRQU0Nvbm5lY3Rpb24iKToKICAgICAgICAgZGVmYXVsdF9jbGFzc2VzLmFwcGVuZChIVFRQU0hhbmRsZXIpCiAgICAgc2tpcCA9IHNldCgpCkBAIC0xMjQ2LDExICsxMjQwLDE3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaC5yZXF1ZXN0KHJlcS5nZXRfbWV0aG9kKCksIHJlcS5zZWxlY3RvciwgcmVxLmRhdGEsIGhlYWRlcnMpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOiAjIHRpbWVvdXQgZXJyb3IKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOiAjIHRpbWVvdXQgZXJyb3IKICAgICAgICAgICAgIGguY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoZXJyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgciA9IGguZ2V0cmVzcG9uc2UoKQorICAgICAgICAgICAgIyBJZiB0aGUgc2VydmVyIGRvZXMgbm90IHNlbmQgdXMgYSAnQ29ubmVjdGlvbjogY2xvc2UnIGhlYWRlciwKKyAgICAgICAgICAgICMgSFRUUENvbm5lY3Rpb24gYXNzdW1lcyB0aGUgc29ja2V0IHNob3VsZCBiZSBsZWZ0IG9wZW4uIE1hbnVhbGx5CisgICAgICAgICAgICAjIG1hcmsgdGhlIHNvY2tldCB0byBiZSBjbG9zZWQgd2hlbiB0aGlzIHJlc3BvbnNlIG9iamVjdCBnb2VzIGF3YXkuCisgICAgICAgICAgICBpZiBoLnNvY2s6CisgICAgICAgICAgICAgICAgaC5zb2NrLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBoLnNvY2sgPSBOb25lCiAKICAgICAgICAgci51cmwgPSByZXEuZ2V0X2Z1bGxfdXJsKCkKICAgICAgICAgIyBUaGlzIGxpbmUgcmVwbGFjZXMgdGhlIC5tc2cgYXR0cmlidXRlIG9mIHRoZSBIVFRQUmVzcG9uc2UKQEAgLTE0NDUsNyArMTQ0NSw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaG9zdCA9IHNvY2tldC5nZXRob3N0YnluYW1lKGhvc3QpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICByYWlzZSBVUkxFcnJvcihtc2cpCiAgICAgICAgIHBhdGgsIGF0dHJzID0gc3BsaXRhdHRyKHJlcS5zZWxlY3RvcikKICAgICAgICAgZGlycyA9IHBhdGguc3BsaXQoJy8nKQpAQCAtMTUzMSw2ICsxNTMxLDM2IEBACiAgICAgICAgIHNlbGYuY2FjaGUuY2xlYXIoKQogICAgICAgICBzZWxmLnRpbWVvdXQuY2xlYXIoKQogCitjbGFzcyBEYXRhSGFuZGxlcihCYXNlSGFuZGxlcik6CisgICAgZGVmIGRhdGFfb3BlbihzZWxmLCByZXEpOgorICAgICAgICAjIGRhdGEgVVJMcyBhcyBzcGVjaWZpZWQgaW4gUkZDIDIzOTcuCisgICAgICAgICMKKyAgICAgICAgIyBpZ25vcmVzIFBPU1RlZCBkYXRhCisgICAgICAgICMKKyAgICAgICAgIyBzeW50YXg6CisgICAgICAgICMgZGF0YXVybCAgIDo9ICJkYXRhOiIgWyBtZWRpYXR5cGUgXSBbICI7YmFzZTY0IiBdICIsIiBkYXRhCisgICAgICAgICMgbWVkaWF0eXBlIDo9IFsgdHlwZSAiLyIgc3VidHlwZSBdICooICI7IiBwYXJhbWV0ZXIgKQorICAgICAgICAjIGRhdGEgICAgICA6PSAqdXJsY2hhcgorICAgICAgICAjIHBhcmFtZXRlciA6PSBhdHRyaWJ1dGUgIj0iIHZhbHVlCisgICAgICAgIHVybCA9IHJlcS5mdWxsX3VybAorCisgICAgICAgIHNjaGVtZSwgZGF0YSA9IHVybC5zcGxpdCgiOiIsMSkKKyAgICAgICAgbWVkaWF0eXBlLCBkYXRhID0gZGF0YS5zcGxpdCgiLCIsMSkKKworICAgICAgICAjIGV2ZW4gYmFzZTY0IGVuY29kZWQgZGF0YSBVUkxzIG1pZ2h0IGJlIHF1b3RlZCBzbyB1bnF1b3RlIGluIGFueSBjYXNlOgorICAgICAgICBkYXRhID0gdW5xdW90ZV90b19ieXRlcyhkYXRhKQorICAgICAgICBpZiBtZWRpYXR5cGUuZW5kc3dpdGgoIjtiYXNlNjQiKToKKyAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YSkKKyAgICAgICAgICAgIG1lZGlhdHlwZSA9IG1lZGlhdHlwZVs6LTddCisKKyAgICAgICAgaWYgbm90IG1lZGlhdHlwZToKKyAgICAgICAgICAgIG1lZGlhdHlwZSA9ICJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVMtQVNDSUkiCisKKyAgICAgICAgaGVhZGVycyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIkNvbnRlbnQtdHlwZTogJXNcbkNvbnRlbnQtbGVuZ3RoOiAlZFxuIiAlCisgICAgICAgICAgICAobWVkaWF0eXBlLCBsZW4oZGF0YSkpKQorCisgICAgICAgIHJldHVybiBhZGRpbmZvdXJsKGlvLkJ5dGVzSU8oZGF0YSksIGhlYWRlcnMsIHVybCkKKwogCiAjIENvZGUgbW92ZSBmcm9tIHRoZSBvbGQgdXJsbGliIG1vZHVsZQogCkBAIC0xNjU0LDIwICsxNjg0LDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBuYW1lKSh1cmwsIGRhdGEpCi0gICAgICAgIGV4Y2VwdCBIVFRQRXJyb3I6CisgICAgICAgIGV4Y2VwdCAoSFRUUEVycm9yLCBVUkxFcnJvcik6CiAgICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ3NvY2tldCBlcnJvcicsIG1zZykud2l0aF90cmFjZWJhY2soc3lzLmV4Y19pbmZvKClbMl0pCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ3NvY2tldCBlcnJvcicsIG1zZykud2l0aF90cmFjZWJhY2soc3lzLmV4Y19pbmZvKClbMl0pCiAKICAgICBkZWYgb3Blbl91bmtub3duKHNlbGYsIGZ1bGx1cmwsIGRhdGE9Tm9uZSk6CiAgICAgICAgICIiIk92ZXJyaWRhYmxlIGludGVyZmFjZSB0byBvcGVuIHVua25vd24gVVJMIHR5cGUuIiIiCiAgICAgICAgIHR5cGUsIHVybCA9IHNwbGl0dHlwZShmdWxsdXJsKQotICAgICAgICByYWlzZSBJT0Vycm9yKCd1cmwgZXJyb3InLCAndW5rbm93biB1cmwgdHlwZScsIHR5cGUpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoJ3VybCBlcnJvcicsICd1bmtub3duIHVybCB0eXBlJywgdHlwZSkKIAogICAgIGRlZiBvcGVuX3Vua25vd25fcHJveHkoc2VsZiwgcHJveHksIGZ1bGx1cmwsIGRhdGE9Tm9uZSk6CiAgICAgICAgICIiIk92ZXJyaWRhYmxlIGludGVyZmFjZSB0byBvcGVuIHVua25vd24gVVJMIHR5cGUuIiIiCiAgICAgICAgIHR5cGUsIHVybCA9IHNwbGl0dHlwZShmdWxsdXJsKQotICAgICAgICByYWlzZSBJT0Vycm9yKCd1cmwgZXJyb3InLCAnaW52YWxpZCBwcm94eSBmb3IgJXMnICUgdHlwZSwgcHJveHkpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoJ3VybCBlcnJvcicsICdpbnZhbGlkIHByb3h5IGZvciAlcycgJSB0eXBlLCBwcm94eSkKIAogICAgICMgRXh0ZXJuYWwgaW50ZXJmYWNlCiAgICAgZGVmIHJldHJpZXZlKHNlbGYsIHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpOgpAQCAtMTY4Myw3ICsxNzEzLDcgQEAKICAgICAgICAgICAgICAgICBoZHJzID0gZnAuaW5mbygpCiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiB1cmwycGF0aG5hbWUoc3BsaXRob3N0KHVybDEpWzFdKSwgaGRycwotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZnAgPSBzZWxmLm9wZW4odXJsLCBkYXRhKQogICAgICAgICB0cnk6CkBAIC0xNzc2LDcgKzE4MDYsNyBAQAogICAgICAgICAgICAgICAgIGlmIHByb3h5X2J5cGFzcyhyZWFsaG9zdCk6CiAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSByZWFsaG9zdAogCi0gICAgICAgIGlmIG5vdCBob3N0OiByYWlzZSBJT0Vycm9yKCdodHRwIGVycm9yJywgJ25vIGhvc3QgZ2l2ZW4nKQorICAgICAgICBpZiBub3QgaG9zdDogcmFpc2UgT1NFcnJvcignaHR0cCBlcnJvcicsICdubyBob3N0IGdpdmVuJykKIAogICAgICAgICBpZiBwcm94eV9wYXNzd2Q6CiAgICAgICAgICAgICBwcm94eV9wYXNzd2QgPSB1bnF1b3RlKHByb3h5X3Bhc3N3ZCkKQEAgLTE4NDksNyArMTg3OSw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmh0dHBfZXJyb3JfZGVmYXVsdCh1cmwsIGZwLCBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpCiAKICAgICBkZWYgaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsIGVycmNvZGUsIGVycm1zZywgaGVhZGVycyk6Ci0gICAgICAgICIiIkRlZmF1bHQgZXJyb3IgaGFuZGxlcjogY2xvc2UgdGhlIGNvbm5lY3Rpb24gYW5kIHJhaXNlIElPRXJyb3IuIiIiCisgICAgICAgICIiIkRlZmF1bHQgZXJyb3IgaGFuZGxlcjogY2xvc2UgdGhlIGNvbm5lY3Rpb24gYW5kIHJhaXNlIE9TRXJyb3IuIiIiCiAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgcmFpc2UgSFRUUEVycm9yKHVybCwgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzLCBOb25lKQogCkBAIC0xOTc2LDcgKzIwMDYsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBbdHlwZSwgZGF0YV0gPSB1cmwuc3BsaXQoJywnLCAxKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2RhdGEgZXJyb3InLCAnYmFkIGRhdGEgVVJMJykKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2RhdGEgZXJyb3InLCAnYmFkIGRhdGEgVVJMJykKICAgICAgICAgaWYgbm90IHR5cGU6CiAgICAgICAgICAgICB0eXBlID0gJ3RleHQvcGxhaW47Y2hhcnNldD1VUy1BU0NJSScKICAgICAgICAgc2VtaSA9IHR5cGUucmZpbmQoJzsnKQpAQCAtMjQyNSw3ICsyNDU1LDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGhvc3RJUCA9IHNvY2tldC5nZXRob3N0YnluYW1lKGhvc3Rvbmx5KQogICAgICAgICAgICAgICAgICAgICBob3N0SVAgPSBpcDJudW0oaG9zdElQKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGJhc2UgPSBpcDJudW0obS5ncm91cCgxKSkKQEAgLTI1MTEsNyArMjU0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwcm94aWVzWydodHRwcyddID0gJ2h0dHBzOi8vJXMnICUgcHJveHlTZXJ2ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHByb3hpZXNbJ2Z0cCddID0gJ2Z0cDovLyVzJyAlIHByb3h5U2VydmVyCiAgICAgICAgICAgICBpbnRlcm5ldFNldHRpbmdzLkNsb3NlKCkKLSAgICAgICAgZXhjZXB0IChXaW5kb3dzRXJyb3IsIFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvciwgVHlwZUVycm9yKToKICAgICAgICAgICAgICMgRWl0aGVyIHJlZ2lzdHJ5IGtleSBub3QgZm91bmQgZXRjLCBvciB0aGUgdmFsdWUgaW4gYW4KICAgICAgICAgICAgICMgdW5leHBlY3RlZCBmb3JtYXQuCiAgICAgICAgICAgICAjIHByb3hpZXMgYWxyZWFkeSBzZXQgdXAgdG8gYmUgZW1wdHkgc28gbm90aGluZyB0byBkbwpAQCAtMjU0MSw3ICsyNTcxLDcgQEAKICAgICAgICAgICAgIHByb3h5T3ZlcnJpZGUgPSBzdHIod2lucmVnLlF1ZXJ5VmFsdWVFeChpbnRlcm5ldFNldHRpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJveHlPdmVycmlkZScpWzBdKQogICAgICAgICAgICAgIyBeXl5eIFJldHVybmVkIGFzIFVuaWNvZGUgYnV0IHByb2JsZW1zIGlmIG5vdCBjb252ZXJ0ZWQgdG8gQVNDSUkKLSAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICBpZiBub3QgcHJveHlFbmFibGUgb3Igbm90IHByb3h5T3ZlcnJpZGU6CiAgICAgICAgICAgICByZXR1cm4gMApAQCAtMjU1MiwxMyArMjU4MiwxMyBAQAogICAgICAgICAgICAgYWRkciA9IHNvY2tldC5nZXRob3N0YnluYW1lKHJhd0hvc3QpCiAgICAgICAgICAgICBpZiBhZGRyICE9IHJhd0hvc3Q6CiAgICAgICAgICAgICAgICAgaG9zdC5hcHBlbmQoYWRkcikKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZxZG4gPSBzb2NrZXQuZ2V0ZnFkbihyYXdIb3N0KQogICAgICAgICAgICAgaWYgZnFkbiAhPSByYXdIb3N0OgogICAgICAgICAgICAgICAgIGhvc3QuYXBwZW5kKGZxZG4pCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICAjIG1ha2UgYSBjaGVjayB2YWx1ZSBsaXN0IGZyb20gdGhlIHJlZ2lzdHJ5IGVudHJ5OiByZXBsYWNlIHRoZQogICAgICAgICAjICc8bG9jYWw+JyBzdHJpbmcgYnkgdGhlIGxvY2FsaG9zdCBlbnRyeSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggMDQ5YjQ2Yy4uMGNkY2QzOCAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTMyOSw3ICszMjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgd29yZHNbaV0gaW4gaHdfaWRlbnRpZmllcnM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNbZ2V0X2luZGV4KGkpXS5yZXBsYWNlKCc6JywgJycpLCAxNikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgY29udGludWUKICAgICByZXR1cm4gTm9uZQogCkBAIC0zNzEsNyArMzcxLDcgQEAKICAgICBmb3IgZGlyIGluIGRpcnM6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHBpcGUgPSBvcy5wb3Blbihvcy5wYXRoLmpvaW4oZGlyLCAnaXBjb25maWcnKSArICcgL2FsbCcpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBwaXBlOgpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19pbml0X18ucHkgYi9MaWIvdmVudi9fX2luaXRfXy5weQppbmRleCAyNzJhODg3Li40YWRkZTVmIDEwMDY0NAotLS0gYS9MaWIvdmVudi9fX2luaXRfXy5weQorKysgYi9MaWIvdmVudi9fX2luaXRfXy5weQpAQCAtODcsNiArODcsMTQgQEAKICAgICAgICAgICAgIHNlbGYuc2V0dXBfc2NyaXB0cyhjb250ZXh0KQogICAgICAgICAgICAgc2VsZi5wb3N0X3NldHVwKGNvbnRleHQpCiAKKyAgICBkZWYgY2xlYXJfZGlyZWN0b3J5KHNlbGYsIHBhdGgpOgorICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcihwYXRoKToKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHBhdGgsIGZuKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZm4pIG9yIG9zLnBhdGguaXNmaWxlKGZuKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZm4pCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZm4pCisKICAgICBkZWYgZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYsIGVudl9kaXIpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIGVudmlyb25tZW50LgpAQCAtOTgsMTEgKzEwNiwxMSBAQAogICAgICAgICBkZWYgY3JlYXRlX2lmX25lZWRlZChkKToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkKToKICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzbGluayhkKSBvciBvcy5wYXRoLmlzZmlsZShkKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeSAlcicgJSBkKQogCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGVudl9kaXIpIGFuZCBub3QgKHNlbGYuY2xlYXIgb3Igc2VsZi51cGdyYWRlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0RpcmVjdG9yeSBleGlzdHM6ICVzJyAlIGVudl9kaXIpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGVudl9kaXIpIGFuZCBzZWxmLmNsZWFyOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShlbnZfZGlyKQorICAgICAgICAgICAgc2VsZi5jbGVhcl9kaXJlY3RvcnkoZW52X2RpcikKICAgICAgICAgY29udGV4dCA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCiAgICAgICAgIGNvbnRleHQuZW52X2RpciA9IGVudl9kaXIKICAgICAgICAgY29udGV4dC5lbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoZW52X2RpcilbMV0KQEAgLTM3MywxMSArMzgxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hlbiBzeW1saW5rcyBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHBsYXRmb3JtLicpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBlbnZpcm9ubWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMuIElmIG5vdCBzcGVjaWZpZWQgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpcyByYWlzZWQuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjbGVhcicsIGhlbHA9J0RlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHJlYWR5IGV4aXN0cywgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGNyZWF0aW9uLicpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdXBncmFkZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIGVudmlyb25tZW50ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEKaW5kZXggMWM1ZWY5OC4uZGY3ODk2MyAxMDA2NDQKLS0tIGEvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEKQEAgLTEsMjUgKzEsNDAgQEAKK2Z1bmN0aW9uIGdsb2JhbDpkZWFjdGl2YXRlIChbc3dpdGNoXSROb25EZXN0cnVjdGl2ZSkgew0KKyAgICAjIFJldmVydCB0byBvcmlnaW5hbCB2YWx1ZXMNCisgICAgaWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgICAgICBjb3B5LWl0ZW0gZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVCBmdW5jdGlvbjpwcm9tcHQNCisgICAgICAgIHJlbW92ZS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCisgICAgfQ0KKw0KKyAgICBpZiAoVGVzdC1QYXRoIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSkgew0KKyAgICAgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSBlbnY6UFlUSE9OSE9NRQ0KKyAgICAgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorICAgIH0NCisNCisgICAgaWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BBVEgpIHsNCisgICAgICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgICAgIHJlbW92ZS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSA0KKyAgICB9DQorDQorICAgIGlmIChUZXN0LVBhdGggZW52OlZJUlRVQUxfRU5WKSB7DQorICAgICAgICByZW1vdmUtaXRlbSBlbnY6VklSVFVBTF9FTlYNCisgICAgfQ0KKw0KKyAgICBpZiAoISROb25EZXN0cnVjdGl2ZSkgew0KKyAgICAgICAgIyBTZWxmIGRlc3RydWN0IQ0KKyAgICAgICAgcmVtb3ZlLWl0ZW0gZnVuY3Rpb246ZGVhY3RpdmF0ZQ0KKyAgICB9DQorfQ0KKw0KK2RlYWN0aXZhdGUgLW5vbmRlc3RydWN0aXZlDQorCiAkZW52OlZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iDQogDQotIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQotaWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQotICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KLSAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQotfQ0KLQ0KLWlmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQotICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCi0gICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQotfQ0KLQ0KLWlmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQotICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCi0gICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQotfQ0KLQ0KICMgU2V0IHRoZSBwcm9tcHQgdG8gaW5jbHVkZSB0aGUgZW52IG5hbWUNCisjIE1ha2Ugc3VyZSBfT0xEX1ZJUlRVQUxfUFJPTVBUIGlzIGdsb2JhbA0KK2Z1bmN0aW9uIGdsb2JhbDpfT0xEX1ZJUlRVQUxfUFJPTVBUIHsiIn0NCiBjb3B5LWl0ZW0gZnVuY3Rpb246cHJvbXB0IGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCi1mdW5jdGlvbiBwcm9tcHQgew0KLSAgICBXcml0ZS1Ib3N0IC1Ob05ld2xpbmUgLUZvcmVncm91bmRDb2xvciBHcmVlbiAnW19fVkVOVl9OQU1FX19dJw0KK2Z1bmN0aW9uIGdsb2JhbDpwcm9tcHQgew0KKyAgICBXcml0ZS1Ib3N0IC1Ob05ld2xpbmUgLUZvcmVncm91bmRDb2xvciBHcmVlbiAnX19WRU5WX05BTUVfXycNCiAgICAgX09MRF9WSVJUVUFMX1BST01QVA0KIH0NCiANCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L0RlYWN0aXZhdGUucHMxIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QxZTk2Yi4uMDAwMDAwMAotLS0gYS9MaWIvdmVudi9zY3JpcHRzL250L0RlYWN0aXZhdGUucHMxCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQotaWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQotICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KLSAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQotfQ0KLQ0KLWlmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQotICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCi0gICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQotfQ0KLQ0KLWlmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQotICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCi0gICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQotfQ0KLQ0KLWlmIChUZXN0LVBhdGggZW52OlZJUlRVQUxfRU5WKSB7DQotICAgIHJlbW92ZS1pdGVtIGVudjpWSVJUVUFMX0VOVg0KLX0NCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L2FjdGl2YXRlLmNzaCBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUuY3NoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZDc5ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L2FjdGl2YXRlLmNzaApAQCAtMCwwICsxLDM3IEBACisjIFRoaXMgZmlsZSBtdXN0IGJlIHVzZWQgd2l0aCAic291cmNlIGJpbi9hY3RpdmF0ZS5jc2giICpmcm9tIGNzaCouCisjIFlvdSBjYW5ub3QgcnVuIGl0IGRpcmVjdGx5LgorIyBDcmVhdGVkIGJ5IERhdmlkZSBEaSBCbGFzaSA8ZGF2aWRlZGJAZ21haWwuY29tPi4KKyMgUG9ydGVkIHRvIFB5dGhvbiAzLjMgdmVudiBieSBBbmRyZXcgU3ZldGxvdiA8YW5kcmV3LnN2ZXRsb3ZAZ21haWwuY29tPgorCithbGlhcyBkZWFjdGl2YXRlICd0ZXN0ICQ/X09MRF9WSVJUVUFMX1BBVEggIT0gMCAmJiBzZXRlbnYgUEFUSCAiJF9PTERfVklSVFVBTF9QQVRIIiAmJiB1bnNldCBfT0xEX1ZJUlRVQUxfUEFUSDsgcmVoYXNoOyB0ZXN0ICQ/X09MRF9WSVJUVUFMX1BST01QVCAhPSAwICYmIHNldCBwcm9tcHQ9IiRfT0xEX1ZJUlRVQUxfUFJPTVBUIiAmJiB1bnNldCBfT0xEX1ZJUlRVQUxfUFJPTVBUOyB1bnNldGVudiBWSVJUVUFMX0VOVjsgdGVzdCAiXCE6KiIgIT0gIm5vbmRlc3RydWN0aXZlIiAmJiB1bmFsaWFzIGRlYWN0aXZhdGUnCisKKyMgVW5zZXQgaXJyZWxhdmVudCB2YXJpYWJsZXMuCitkZWFjdGl2YXRlIG5vbmRlc3RydWN0aXZlCisKK3NldGVudiBWSVJUVUFMX0VOViAiX19WRU5WX0RJUl9fIgorCitzZXQgX09MRF9WSVJUVUFMX1BBVEg9IiRQQVRIIgorc2V0ZW52IFBBVEggIiRWSVJUVUFMX0VOVi9fX1ZFTlZfQklOX05BTUVfXzokUEFUSCIKKworCitzZXQgX09MRF9WSVJUVUFMX1BST01QVD0iJHByb21wdCIKKworaWYgKCEgIiQ/VklSVFVBTF9FTlZfRElTQUJMRV9QUk9NUFQiKSB0aGVuCisgICAgaWYgKCJfX1ZFTlZfTkFNRV9fIiAhPSAiIikgdGhlbgorICAgICAgICBzZXQgZW52X25hbWUgPSAiX19WRU5WX05BTUVfXyIKKyAgICBlbHNlCisgICAgICAgIGlmIChgYmFzZW5hbWUgIlZJUlRVQUxfRU5WImAgPT0gIl9fIikgdGhlbgorICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIEFzcGVuIG1hZ2ljIGRpcmVjdG9yaWVzCisgICAgICAgICAgICAjIHNlZSBodHRwOi8vd3d3LnpldGFkZXYuY29tL3NvZnR3YXJlL2FzcGVuLworICAgICAgICAgICAgc2V0IGVudl9uYW1lID0gYGJhc2VuYW1lIFxgZGlybmFtZSAiJFZJUlRVQUxfRU5WIlxgYAorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXQgZW52X25hbWUgPSBgYmFzZW5hbWUgIiRWSVJUVUFMX0VOViJgCisgICAgICAgIGVuZGlmCisgICAgZW5kaWYKKyAgICBzZXQgcHJvbXB0ID0gIlskZW52X25hbWVdICRwcm9tcHQiCisgICAgdW5zZXQgZW52X25hbWUKK2VuZGlmCisKK2FsaWFzIHB5ZG9jIHB5dGhvbiAtbSBweWRvYworCityZWhhc2gKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUuZmlzaCBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUuZmlzaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWMxNjM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZS5maXNoCkBAIC0wLDAgKzEsNzQgQEAKKyMgVGhpcyBmaWxlIG11c3QgYmUgdXNlZCB3aXRoICIuIGJpbi9hY3RpdmF0ZS5maXNoIiAqZnJvbSBmaXNoKiAoaHR0cDovL2Zpc2hzaGVsbC5vcmcpCisjIHlvdSBjYW5ub3QgcnVuIGl0IGRpcmVjdGx5CisKK2Z1bmN0aW9uIGRlYWN0aXZhdGUgIC1kICJFeGl0IHZpcnR1YWxlbnYgYW5kIHJldHVybiB0byBub3JtYWwgc2hlbGwgZW52aXJvbm1lbnQiCisgICAgIyByZXNldCBvbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgaWYgdGVzdCAtbiAiJF9PTERfVklSVFVBTF9QQVRIIgorICAgICAgICBzZXQgLWd4IFBBVEggJF9PTERfVklSVFVBTF9QQVRICisgICAgICAgIHNldCAtZSBfT0xEX1ZJUlRVQUxfUEFUSAorICAgIGVuZAorICAgIGlmIHRlc3QgLW4gIiRfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSIKKyAgICAgICAgc2V0IC1neCBQWVRIT05IT01FICRfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQorICAgICAgICBzZXQgLWUgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUKKyAgICBlbmQKKworICAgIGlmIHRlc3QgLW4gIiRfT0xEX0ZJU0hfUFJPTVBUX09WRVJSSURFIgorICAgICAgICBmdW5jdGlvbnMgLWUgZmlzaF9wcm9tcHQKKyAgICAgICAgc2V0IC1lIF9PTERfRklTSF9QUk9NUFRfT1ZFUlJJREUKKyAgICAgICAgLiAoIGJlZ2luCisgICAgICAgICAgICAgICAgcHJpbnRmICJmdW5jdGlvbiBmaXNoX3Byb21wdFxuXHQjIgorICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBfb2xkX2Zpc2hfcHJvbXB0CisgICAgICAgICAgICBlbmQgfCBwc3ViICkKKyAgICAgICAgZnVuY3Rpb25zIC1lIF9vbGRfZmlzaF9wcm9tcHQKKyAgICBlbmQKKworICAgIHNldCAtZSBWSVJUVUFMX0VOVgorICAgIGlmIHRlc3QgIiRhcmd2WzFdIiAhPSAibm9uZGVzdHJ1Y3RpdmUiCisgICAgICAgICMgU2VsZiBkZXN0cnVjdCEKKyAgICAgICAgZnVuY3Rpb25zIC1lIGRlYWN0aXZhdGUKKyAgICBlbmQKK2VuZAorCisjIHVuc2V0IGlycmVsYXZlbnQgdmFyaWFibGVzCitkZWFjdGl2YXRlIG5vbmRlc3RydWN0aXZlCisKK3NldCAtZ3ggVklSVFVBTF9FTlYgIl9fVkVOVl9ESVJfXyIKKworc2V0IC1neCBfT0xEX1ZJUlRVQUxfUEFUSCAkUEFUSAorc2V0IC1neCBQQVRIICIkVklSVFVBTF9FTlYvX19WRU5WX0JJTl9OQU1FX18iICRQQVRICisKKyMgdW5zZXQgUFlUSE9OSE9NRSBpZiBzZXQKK2lmIHNldCAtcSBQWVRIT05IT01FCisgICAgc2V0IC1neCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSAkUFlUSE9OSE9NRQorICAgIHNldCAtZSBQWVRIT05IT01FCitlbmQKKworaWYgdGVzdCAteiAiJFZJUlRVQUxfRU5WX0RJU0FCTEVfUFJPTVBUIgorICAgICMgZmlzaCB1c2VzIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiBhbiBlbnYgdmFyIHRvIGdlbmVyYXRlIHRoZSBwcm9tcHQuCisKKyAgICAjIHNhdmUgdGhlIGN1cnJlbnQgZmlzaF9wcm9tcHQgZnVuY3Rpb24gYXMgdGhlIGZ1bmN0aW9uIF9vbGRfZmlzaF9wcm9tcHQKKyAgICAuICggYmVnaW4KKyAgICAgICAgICAgIHByaW50ZiAiZnVuY3Rpb24gX29sZF9maXNoX3Byb21wdFxuXHQjIgorICAgICAgICAgICAgZnVuY3Rpb25zIGZpc2hfcHJvbXB0CisgICAgICAgIGVuZCB8IHBzdWIgKQorCisgICAgIyB3aXRoIHRoZSBvcmlnaW5hbCBwcm9tcHQgZnVuY3Rpb24gcmVuYW1lZCwgd2UgY2FuIG92ZXJyaWRlIHdpdGggb3VyIG93bi4KKyAgICBmdW5jdGlvbiBmaXNoX3Byb21wdAorICAgICAgICAjIFByb21wdCBvdmVycmlkZT8KKyAgICAgICAgaWYgdGVzdCAtbiAiX19WRU5WX05BTUVfXyIKKyAgICAgICAgICAgIHByaW50ZiAiJXMlcyVzIiAiX19WRU5WX05BTUVfXyIgKHNldF9jb2xvciBub3JtYWwpIChfb2xkX2Zpc2hfcHJvbXB0KQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorICAgICAgICAjIC4uLk90aGVyd2lzZSwgcHJlcGVuZCBlbnYKKyAgICAgICAgc2V0IC1sIF9jaGVja2Jhc2UgKGJhc2VuYW1lICIkVklSVFVBTF9FTlYiKQorICAgICAgICBpZiB0ZXN0ICRfY2hlY2tiYXNlID0gIl9fIgorICAgICAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIEFzcGVuIG1hZ2ljIGRpcmVjdG9yaWVzCisgICAgICAgICAgICAjIHNlZSBodHRwOi8vd3d3LnpldGFkZXYuY29tL3NvZnR3YXJlL2FzcGVuLworICAgICAgICAgICAgcHJpbnRmICIlc1slc10lcyAlcyIgKHNldF9jb2xvciAtYiBibHVlIHdoaXRlKSAoYmFzZW5hbWUgKGRpcm5hbWUgIiRWSVJUVUFMX0VOViIpKSAoc2V0X2NvbG9yIG5vcm1hbCkgKF9vbGRfZmlzaF9wcm9tcHQpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW50ZiAiJXMoJXMpJXMlcyIgKHNldF9jb2xvciAtYiBibHVlIHdoaXRlKSAoYmFzZW5hbWUgIiRWSVJUVUFMX0VOViIpIChzZXRfY29sb3Igbm9ybWFsKSAoX29sZF9maXNoX3Byb21wdCkKKyAgICAgICAgZW5kCisgICAgZW5kCisKKyAgICBzZXQgLWd4IF9PTERfRklTSF9QUk9NUFRfT1ZFUlJJREUgIiRWSVJUVUFMX0VOViIKK2VuZApkaWZmIC0tZ2l0IGEvTGliL3dhcm5pbmdzLnB5IGIvTGliL3dhcm5pbmdzLnB5CmluZGV4IGVkYmJiNWUuLmIwNWEwOGUgMTAwNjQ0Ci0tLSBhL0xpYi93YXJuaW5ncy5weQorKysgYi9MaWIvd2FybmluZ3MucHkKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKICAgICB0cnk6CiAgICAgICAgIGZpbGUud3JpdGUoZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZSkpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHBhc3MgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KIAogZGVmIGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvd2F2ZS5weSBiL0xpYi93YXZlLnB5CmluZGV4IDU0ZjAzMDIuLmY0MzU2OWUgMTAwNjQ0Ci0tLSBhL0xpYi93YXZlLnB5CisrKyBiL0xpYi93YXZlLnB5CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICBnZXRjb21wdHlwZSgpICAgLS0gcmV0dXJucyBjb21wcmVzc2lvbiB0eXBlICgnTk9ORScgZm9yIGxpbmVhciBzYW1wbGVzKQogICAgICAgZ2V0Y29tcG5hbWUoKSAgIC0tIHJldHVybnMgaHVtYW4tcmVhZGFibGUgdmVyc2lvbiBvZgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIHR5cGUgKCdub3QgY29tcHJlc3NlZCcgbGluZWFyIHNhbXBsZXMpCi0gICAgICBnZXRwYXJhbXMoKSAgICAgLS0gcmV0dXJucyBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgYWxsIG9mIHRoZQorICAgICAgZ2V0cGFyYW1zKCkgICAgIC0tIHJldHVybnMgYSBuYW1lZHR1cGxlIGNvbnNpc3Rpbmcgb2YgYWxsIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIGFib3ZlIGluIHRoZSBhYm92ZSBvcmRlcgogICAgICAgZ2V0bWFya2VycygpICAgIC0tIHJldHVybnMgTm9uZSAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICBhaWZjIG1vZHVsZSkKQEAgLTgyLDE0ICs4MiwxMyBAQAogCiBfYXJyYXlfZm10cyA9IE5vbmUsICdiJywgJ2gnLCBOb25lLCAnbCcKIAotIyBEZXRlcm1pbmUgZW5kaWFuLW5lc3MKIGltcG9ydCBzdHJ1Y3QKLWlmIHN0cnVjdC5wYWNrKCJoIiwgMSkgPT0gYiJcMDAwXDAwMSI6Ci0gICAgYmlnX2VuZGlhbiA9IDEKLWVsc2U6Ci0gICAgYmlnX2VuZGlhbiA9IDAKLQoraW1wb3J0IHN5cwogZnJvbSBjaHVuayBpbXBvcnQgQ2h1bmsKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKKworX3Jlc3VsdCA9IG5hbWVkdHVwbGUoJ3BhcmFtcycsCisgICAgICAgICAgICAgICAgICAgICAnbmNoYW5uZWxzIHNhbXB3aWR0aCBmcmFtZXJhdGUgbmZyYW1lcyBjb21wdHlwZSBjb21wbmFtZScpCiAKIGNsYXNzIFdhdmVfcmVhZDoKICAgICAiIiJWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgpAQCAtMTY4LDYgKzE2NywxMyBAQAogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuY2xvc2UoKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgIwogICAgICMgVXNlciB2aXNpYmxlIG1ldGhvZHMuCiAgICAgIwpAQCAtMjA2LDkgKzIxMiw5IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jb21wbmFtZQogCiAgICAgZGVmIGdldHBhcmFtcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0bmNoYW5uZWxzKCksIHNlbGYuZ2V0c2FtcHdpZHRoKCksIFwKLSAgICAgICAgICAgICAgIHNlbGYuZ2V0ZnJhbWVyYXRlKCksIHNlbGYuZ2V0bmZyYW1lcygpLCBcCi0gICAgICAgICAgICAgICBzZWxmLmdldGNvbXB0eXBlKCksIHNlbGYuZ2V0Y29tcG5hbWUoKQorICAgICAgICByZXR1cm4gX3Jlc3VsdChzZWxmLmdldG5jaGFubmVscygpLCBzZWxmLmdldHNhbXB3aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldGZyYW1lcmF0ZSgpLCBzZWxmLmdldG5mcmFtZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRjb21wdHlwZSgpLCBzZWxmLmdldGNvbXBuYW1lKCkpCiAKICAgICBkZWYgZ2V0bWFya2VycyhzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTIzMSw3ICsyMzcsNyBAQAogICAgICAgICAgICAgc2VsZi5fZGF0YV9zZWVrX25lZWRlZCA9IDAKICAgICAgICAgaWYgbmZyYW1lcyA9PSAwOgogICAgICAgICAgICAgcmV0dXJuIGInJwotICAgICAgICBpZiBzZWxmLl9zYW1wd2lkdGggPiAxIGFuZCBiaWdfZW5kaWFuOgorICAgICAgICBpZiBzZWxmLl9zYW1wd2lkdGggPiAxIGFuZCBzeXMuYnl0ZW9yZGVyID09ICdiaWcnOgogICAgICAgICAgICAgIyB1bmZvcnR1bmF0ZWx5IHRoZSBmcm9tZmlsZSgpIG1ldGhvZCBkb2VzIG5vdCB0YWtlCiAgICAgICAgICAgICAjIHNvbWV0aGluZyB0aGF0IG9ubHkgbG9va3MgbGlrZSBhIGZpbGUgb2JqZWN0LCBzbwogICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIHJlYWNoIGludG8gdGhlIGlubmFyZHMgb2YgdGhlIGNodW5rIG9iamVjdApAQCAtMzI0LDYgKzMzMCwxMiBAQAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsb3NlKCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogICAgICMKICAgICAjIFVzZXIgdmlzaWJsZSBtZXRob2RzLgogICAgICMKQEAgLTM5OCw4ICs0MTAsOCBAQAogICAgIGRlZiBnZXRwYXJhbXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9uY2hhbm5lbHMgb3Igbm90IHNlbGYuX3NhbXB3aWR0aCBvciBub3Qgc2VsZi5fZnJhbWVyYXRlOgogICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ25vdCBhbGwgcGFyYW1ldGVycyBzZXQnKQotICAgICAgICByZXR1cm4gc2VsZi5fbmNoYW5uZWxzLCBzZWxmLl9zYW1wd2lkdGgsIHNlbGYuX2ZyYW1lcmF0ZSwgXAotICAgICAgICAgICAgICBzZWxmLl9uZnJhbWVzLCBzZWxmLl9jb21wdHlwZSwgc2VsZi5fY29tcG5hbWUKKyAgICAgICAgcmV0dXJuIF9yZXN1bHQoc2VsZi5fbmNoYW5uZWxzLCBzZWxmLl9zYW1wd2lkdGgsIHNlbGYuX2ZyYW1lcmF0ZSwKKyAgICAgICAgICAgICAgc2VsZi5fbmZyYW1lcywgc2VsZi5fY29tcHR5cGUsIHNlbGYuX2NvbXBuYW1lKQogCiAgICAgZGVmIHNldG1hcmsoc2VsZiwgaWQsIHBvcywgbmFtZSk6CiAgICAgICAgIHJhaXNlIEVycm9yKCdzZXRtYXJrKCkgbm90IHN1cHBvcnRlZCcpCkBAIC00MTgsNyArNDMwLDcgQEAKICAgICAgICAgbmZyYW1lcyA9IGxlbihkYXRhKSAvLyAoc2VsZi5fc2FtcHdpZHRoICogc2VsZi5fbmNoYW5uZWxzKQogICAgICAgICBpZiBzZWxmLl9jb252ZXJ0OgogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2NvbnZlcnQoZGF0YSkKLSAgICAgICAgaWYgc2VsZi5fc2FtcHdpZHRoID4gMSBhbmQgYmlnX2VuZGlhbjoKKyAgICAgICAgaWYgc2VsZi5fc2FtcHdpZHRoID4gMSBhbmQgc3lzLmJ5dGVvcmRlciA9PSAnYmlnJzoKICAgICAgICAgICAgIGltcG9ydCBhcnJheQogICAgICAgICAgICAgZGF0YSA9IGFycmF5LmFycmF5KF9hcnJheV9mbXRzW3NlbGYuX3NhbXB3aWR0aF0sIGRhdGEpCiAgICAgICAgICAgICBkYXRhLmJ5dGVzd2FwKCkKQEAgLTQzNiwxMSArNDQ4LDEzIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLl9lbnN1cmVfaGVhZGVyX3dyaXR0ZW4oMCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2RhdGFsZW5ndGggIT0gc2VsZi5fZGF0YXdyaXR0ZW46Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGF0Y2hoZWFkZXIoKQotICAgICAgICAgICAgc2VsZi5fZmlsZS5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLl9maWxlID0gTm9uZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2Vuc3VyZV9oZWFkZXJfd3JpdHRlbigwKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RhdGFsZW5ndGggIT0gc2VsZi5fZGF0YXdyaXR0ZW46CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhdGNoaGVhZGVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmZsdXNoKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5faV9vcGVuZWRfdGhlX2ZpbGU6CiAgICAgICAgICAgICBzZWxmLl9pX29wZW5lZF90aGVfZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICBzZWxmLl9pX29wZW5lZF90aGVfZmlsZSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi93ZWFrcmVmLnB5IGIvTGliL3dlYWtyZWYucHkKaW5kZXggZmNiNmI3NC4uZjZhNDBjYSAxMDA2NDQKLS0tIGEvTGliL3dlYWtyZWYucHkKKysrIGIvTGliL3dlYWtyZWYucHkKQEAgLTIxLDEzICsyMSw2OSBAQAogZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldCwgX0l0ZXJhdGlvbkd1YXJkCiAKIGltcG9ydCBjb2xsZWN0aW9ucyAgIyBJbXBvcnQgYWZ0ZXIgX3dlYWtyZWYgdG8gYXZvaWQgY2lyY3VsYXIgaW1wb3J0LgoraW1wb3J0IHN5cworaW1wb3J0IGl0ZXJ0b29scwogCiBQcm94eVR5cGVzID0gKFByb3h5VHlwZSwgQ2FsbGFibGVQcm94eVR5cGUpCiAKIF9fYWxsX18gPSBbInJlZiIsICJwcm94eSIsICJnZXR3ZWFrcmVmY291bnQiLCAiZ2V0d2Vha3JlZnMiLAogICAgICAgICAgICAiV2Vha0tleURpY3Rpb25hcnkiLCAiUmVmZXJlbmNlVHlwZSIsICJQcm94eVR5cGUiLAogICAgICAgICAgICAiQ2FsbGFibGVQcm94eVR5cGUiLCAiUHJveHlUeXBlcyIsICJXZWFrVmFsdWVEaWN0aW9uYXJ5IiwKLSAgICAgICAgICAgIldlYWtTZXQiXQorICAgICAgICAgICAiV2Vha1NldCIsICJXZWFrTWV0aG9kIiwgImZpbmFsaXplIl0KKworCitjbGFzcyBXZWFrTWV0aG9kKHJlZik6CisgICAgIiIiCisgICAgQSBjdXN0b20gYHdlYWtyZWYucmVmYCBzdWJjbGFzcyB3aGljaCBzaW11bGF0ZXMgYSB3ZWFrIHJlZmVyZW5jZSB0bworICAgIGEgYm91bmQgbWV0aG9kLCB3b3JraW5nIGFyb3VuZCB0aGUgbGlmZXRpbWUgcHJvYmxlbSBvZiBib3VuZCBtZXRob2RzLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gIl9mdW5jX3JlZiIsICJfbWV0aF90eXBlIiwgIl9hbGl2ZSIsICJfX3dlYWtyZWZfXyIKKworICAgIGRlZiBfX25ld19fKGNscywgbWV0aCwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9iaiA9IG1ldGguX19zZWxmX18KKyAgICAgICAgICAgIGZ1bmMgPSBtZXRoLl9fZnVuY19fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGEgYm91bmQgbWV0aG9kLCBub3Qge30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdCh0eXBlKG1ldGgpKSkgZnJvbSBOb25lCisgICAgICAgIGRlZiBfY2IoYXJnKToKKyAgICAgICAgICAgICMgVGhlIHNlbGYtd2Vha3JlZiB0cmljayBpcyBuZWVkZWQgdG8gYXZvaWQgY3JlYXRpbmcgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICMgY3ljbGUuCisgICAgICAgICAgICBzZWxmID0gc2VsZl93cigpCisgICAgICAgICAgICBpZiBzZWxmLl9hbGl2ZToKKyAgICAgICAgICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgY2FsbGJhY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYpCisgICAgICAgIHNlbGYgPSByZWYuX19uZXdfXyhjbHMsIG9iaiwgX2NiKQorICAgICAgICBzZWxmLl9mdW5jX3JlZiA9IHJlZihmdW5jLCBfY2IpCisgICAgICAgIHNlbGYuX21ldGhfdHlwZSA9IHR5cGUobWV0aCkKKyAgICAgICAgc2VsZi5fYWxpdmUgPSBUcnVlCisgICAgICAgIHNlbGZfd3IgPSByZWYoc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgb2JqID0gc3VwZXIoKS5fX2NhbGxfXygpCisgICAgICAgIGZ1bmMgPSBzZWxmLl9mdW5jX3JlZigpCisgICAgICAgIGlmIG9iaiBpcyBOb25lIG9yIGZ1bmMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9tZXRoX3R5cGUoZnVuYywgb2JqKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFdlYWtNZXRob2QpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsaXZlIG9yIG5vdCBvdGhlci5fYWxpdmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYgaXMgb3RoZXIKKyAgICAgICAgICAgIHJldHVybiByZWYuX19lcV9fKHNlbGYsIG90aGVyKSBhbmQgc2VsZi5fZnVuY19yZWYgPT0gb3RoZXIuX2Z1bmNfcmVmCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFdlYWtNZXRob2QpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsaXZlIG9yIG5vdCBvdGhlci5fYWxpdmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYgaXMgbm90IG90aGVyCisgICAgICAgICAgICByZXR1cm4gcmVmLl9fbmVfXyhzZWxmLCBvdGhlcikgb3Igc2VsZi5fZnVuY19yZWYgIT0gb3RoZXIuX2Z1bmNfcmVmCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBfX2hhc2hfXyA9IHJlZi5fX2hhc2hfXwogCiAKIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnkoY29sbGVjdGlvbnMuTXV0YWJsZU1hcHBpbmcpOgpAQCAtMTUzLDggKzIwOSw3IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIHdpdGggX0l0ZXJhdGlvbkd1YXJkKHNlbGYpOgotICAgICAgICAgICAgZm9yIHdyIGluIHNlbGYuZGF0YS52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICB5aWVsZCB3cgorICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLmRhdGEudmFsdWVzKCkKIAogICAgIGRlZiB2YWx1ZXMoc2VsZik6CiAgICAgICAgIHdpdGggX0l0ZXJhdGlvbkd1YXJkKHNlbGYpOgpAQCAtMzgzLDMgKzQzOCwxNDAgQEAKICAgICAgICAgICAgICAgICBkW3JlZihrZXksIHNlbGYuX3JlbW92ZSldID0gdmFsdWUKICAgICAgICAgaWYgbGVuKGt3YXJncyk6CiAgICAgICAgICAgICBzZWxmLnVwZGF0ZShrd2FyZ3MpCisKKworY2xhc3MgZmluYWxpemU6CisgICAgIiIiQ2xhc3MgZm9yIGZpbmFsaXphdGlvbiBvZiB3ZWFrcmVmYWJsZSBvYmplY3RzCisKKyAgICBmaW5hbGl6ZShvYmosIGZ1bmMsICphcmdzLCAqKmt3YXJncykgcmV0dXJucyBhIGNhbGxhYmxlIGZpbmFsaXplcgorICAgIG9iamVjdCB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIG9iaiBpcyBnYXJiYWdlIGNvbGxlY3RlZC4gVGhlCisgICAgZmlyc3QgdGltZSB0aGUgZmluYWxpemVyIGlzIGNhbGxlZCBpdCBldmFsdWF0ZXMgZnVuYygqYXJnLCAqKmt3YXJncykKKyAgICBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBBZnRlciB0aGlzIHRoZSBmaW5hbGl6ZXIgaXMgZGVhZCwgYW5kCisgICAgY2FsbGluZyBpdCBqdXN0IHJldHVybnMgTm9uZS4KKworICAgIFdoZW4gdGhlIHByb2dyYW0gZXhpdHMgYW55IHJlbWFpbmluZyBmaW5hbGl6ZXJzIGZvciB3aGljaCB0aGUKKyAgICBhdGV4aXQgYXR0cmlidXRlIGlzIHRydWUgd2lsbCBiZSBydW4gaW4gcmV2ZXJzZSBvcmRlciBvZiBjcmVhdGlvbi4KKyAgICBCeSBkZWZhdWx0IGF0ZXhpdCBpcyB0cnVlLgorICAgICIiIgorCisgICAgIyBGaW5hbGl6ZXIgb2JqZWN0cyBkb24ndCBoYXZlIGFueSBzdGF0ZSBvZiB0aGVpciBvd24uICBUaGV5IGFyZQorICAgICMganVzdCB1c2VkIGFzIGtleXMgdG8gbG9va3VwIF9JbmZvIG9iamVjdHMgaW4gdGhlIHJlZ2lzdHJ5LiAgVGhpcworICAgICMgZW5zdXJlcyB0aGF0IHRoZXkgY2Fubm90IGJlIHBhcnQgb2YgYSByZWYtY3ljbGUuCisKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF9yZWdpc3RyeSA9IHt9CisgICAgX3NodXRkb3duID0gRmFsc2UKKyAgICBfaW5kZXhfaXRlciA9IGl0ZXJ0b29scy5jb3VudCgpCisgICAgX2RpcnR5ID0gRmFsc2UKKyAgICBfcmVnaXN0ZXJlZF93aXRoX2F0ZXhpdCA9IEZhbHNlCisKKyAgICBjbGFzcyBfSW5mbzoKKyAgICAgICAgX19zbG90c19fID0gKCJ3ZWFrcmVmIiwgImZ1bmMiLCAiYXJncyIsICJrd2FyZ3MiLCAiYXRleGl0IiwgImluZGV4IikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmosIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9yZWdpc3RlcmVkX3dpdGhfYXRleGl0OgorICAgICAgICAgICAgIyBXZSBtYXkgcmVnaXN0ZXIgdGhlIGV4aXQgZnVuY3Rpb24gbW9yZSB0aGFuIG9uY2UgYmVjYXVzZQorICAgICAgICAgICAgIyBvZiBhIHRocmVhZCByYWNlLCBidXQgdGhhdCBpcyBoYXJtbGVzcworICAgICAgICAgICAgaW1wb3J0IGF0ZXhpdAorICAgICAgICAgICAgYXRleGl0LnJlZ2lzdGVyKHNlbGYuX2V4aXRmdW5jKQorICAgICAgICAgICAgZmluYWxpemUuX3JlZ2lzdGVyZWRfd2l0aF9hdGV4aXQgPSBUcnVlCisgICAgICAgIGluZm8gPSBzZWxmLl9JbmZvKCkKKyAgICAgICAgaW5mby53ZWFrcmVmID0gcmVmKG9iaiwgc2VsZikKKyAgICAgICAgaW5mby5mdW5jID0gZnVuYworICAgICAgICBpbmZvLmFyZ3MgPSBhcmdzCisgICAgICAgIGluZm8ua3dhcmdzID0ga3dhcmdzIG9yIE5vbmUKKyAgICAgICAgaW5mby5hdGV4aXQgPSBUcnVlCisgICAgICAgIGluZm8uaW5kZXggPSBuZXh0KHNlbGYuX2luZGV4X2l0ZXIpCisgICAgICAgIHNlbGYuX3JlZ2lzdHJ5W3NlbGZdID0gaW5mbworICAgICAgICBmaW5hbGl6ZS5fZGlydHkgPSBUcnVlCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgXz1Ob25lKToKKyAgICAgICAgIiIiSWYgYWxpdmUgdGhlbiBtYXJrIGFzIGRlYWQgYW5kIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncyk7CisgICAgICAgIG90aGVyd2lzZSByZXR1cm4gTm9uZSIiIgorICAgICAgICBpbmZvID0gc2VsZi5fcmVnaXN0cnkucG9wKHNlbGYsIE5vbmUpCisgICAgICAgIGlmIGluZm8gYW5kIG5vdCBzZWxmLl9zaHV0ZG93bjoKKyAgICAgICAgICAgIHJldHVybiBpbmZvLmZ1bmMoKmluZm8uYXJncywgKiooaW5mby5rd2FyZ3Mgb3Ige30pKQorCisgICAgZGVmIGRldGFjaChzZWxmKToKKyAgICAgICAgIiIiSWYgYWxpdmUgdGhlbiBtYXJrIGFzIGRlYWQgYW5kIHJldHVybiAob2JqLCBmdW5jLCBhcmdzLCBrd2FyZ3MpOworICAgICAgICBvdGhlcndpc2UgcmV0dXJuIE5vbmUiIiIKKyAgICAgICAgaW5mbyA9IHNlbGYuX3JlZ2lzdHJ5LmdldChzZWxmKQorICAgICAgICBvYmogPSBpbmZvIGFuZCBpbmZvLndlYWtyZWYoKQorICAgICAgICBpZiBvYmogaXMgbm90IE5vbmUgYW5kIHNlbGYuX3JlZ2lzdHJ5LnBvcChzZWxmLCBOb25lKToKKyAgICAgICAgICAgIHJldHVybiAob2JqLCBpbmZvLmZ1bmMsIGluZm8uYXJncywgaW5mby5rd2FyZ3Mgb3Ige30pCisKKyAgICBkZWYgcGVlayhzZWxmKToKKyAgICAgICAgIiIiSWYgYWxpdmUgdGhlbiByZXR1cm4gKG9iaiwgZnVuYywgYXJncywga3dhcmdzKTsKKyAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBOb25lIiIiCisgICAgICAgIGluZm8gPSBzZWxmLl9yZWdpc3RyeS5nZXQoc2VsZikKKyAgICAgICAgb2JqID0gaW5mbyBhbmQgaW5mby53ZWFrcmVmKCkKKyAgICAgICAgaWYgb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIChvYmosIGluZm8uZnVuYywgaW5mby5hcmdzLCBpbmZvLmt3YXJncyBvciB7fSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGl2ZShzZWxmKToKKyAgICAgICAgIiIiV2hldGhlciBmaW5hbGl6ZXIgaXMgYWxpdmUiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fcmVnaXN0cnkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhdGV4aXQoc2VsZik6CisgICAgICAgICIiIldoZXRoZXIgZmluYWxpemVyIHNob3VsZCBiZSBjYWxsZWQgYXQgZXhpdCIiIgorICAgICAgICBpbmZvID0gc2VsZi5fcmVnaXN0cnkuZ2V0KHNlbGYpCisgICAgICAgIHJldHVybiBib29sKGluZm8pIGFuZCBpbmZvLmF0ZXhpdAorCisgICAgQGF0ZXhpdC5zZXR0ZXIKKyAgICBkZWYgYXRleGl0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgaW5mbyA9IHNlbGYuX3JlZ2lzdHJ5LmdldChzZWxmKQorICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgaW5mby5hdGV4aXQgPSBib29sKHZhbHVlKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBpbmZvID0gc2VsZi5fcmVnaXN0cnkuZ2V0KHNlbGYpCisgICAgICAgIG9iaiA9IGluZm8gYW5kIGluZm8ud2Vha3JlZigpCisgICAgICAgIGlmIG9iaiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0IGF0ICUjeDsgZGVhZD4nICUgKHR5cGUoc2VsZikuX19uYW1lX18sIGlkKHNlbGYpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0IGF0ICUjeDsgZm9yICVyIGF0ICUjeD4nICUgXAorICAgICAgICAgICAgICAgICh0eXBlKHNlbGYpLl9fbmFtZV9fLCBpZChzZWxmKSwgdHlwZShvYmopLl9fbmFtZV9fLCBpZChvYmopKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zZWxlY3RfZm9yX2V4aXQoY2xzKToKKyAgICAgICAgIyBSZXR1cm4gbGl2ZSBmaW5hbGl6ZXJzIG1hcmtlZCBmb3IgZXhpdCwgb2xkZXN0IGZpcnN0CisgICAgICAgIEwgPSBbKGYsaSkgZm9yIChmLGkpIGluIGNscy5fcmVnaXN0cnkuaXRlbXMoKSBpZiBpLmF0ZXhpdF0KKyAgICAgICAgTC5zb3J0KGtleT1sYW1iZGEgaXRlbTppdGVtWzFdLmluZGV4KQorICAgICAgICByZXR1cm4gW2YgZm9yIChmLGkpIGluIExdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2V4aXRmdW5jKGNscyk6CisgICAgICAgICMgQXQgc2h1dGRvd24gaW52b2tlIGZpbmFsaXplcnMgZm9yIHdoaWNoIGF0ZXhpdCBpcyB0cnVlLgorICAgICAgICAjIFRoaXMgaXMgY2FsbGVkIG9uY2UgYWxsIG90aGVyIG5vbi1kYWVtb25pYyB0aHJlYWRzIGhhdmUgYmVlbgorICAgICAgICAjIGpvaW5lZC4KKyAgICAgICAgcmVlbmFibGVfZ2MgPSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBjbHMuX3JlZ2lzdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBnYworICAgICAgICAgICAgICAgIGlmIGdjLmlzZW5hYmxlZCgpOgorICAgICAgICAgICAgICAgICAgICByZWVuYWJsZV9nYyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgICAgICAgICAgcGVuZGluZyA9IE5vbmUKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBpZiBwZW5kaW5nIGlzIE5vbmUgb3IgZmluYWxpemUuX2RpcnR5OgorICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZyA9IGNscy5fc2VsZWN0X2Zvcl9leGl0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplLl9kaXJ0eSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZiA9IHBlbmRpbmcucG9wKCkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBnYyBpcyBkaXNhYmxlZCwgc28gKGFzc3VtaW5nIG5vIGRhZW1vbmljCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRocmVhZHMpIHRoZSBmb2xsb3dpbmcgaXMgdGhlIG9ubHkgbGluZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGZ1bmN0aW9uIHdoaWNoIG1pZ2h0IHRyaWdnZXIgY3JlYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICMgb2YgYSBuZXcgZmluYWxpemVyCisgICAgICAgICAgICAgICAgICAgICAgICBmKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGYgbm90IGluIGNscy5fcmVnaXN0cnkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgcHJldmVudCBhbnkgbW9yZSBmaW5hbGl6ZXJzIGZyb20gZXhlY3V0aW5nIGR1cmluZyBzaHV0ZG93bgorICAgICAgICAgICAgZmluYWxpemUuX3NodXRkb3duID0gVHJ1ZQorICAgICAgICAgICAgaWYgcmVlbmFibGVfZ2M6CisgICAgICAgICAgICAgICAgZ2MuZW5hYmxlKCkKZGlmZiAtLWdpdCBhL0xpYi93ZWJicm93c2VyLnB5IGIvTGliL3dlYmJyb3dzZXIucHkKaW5kZXggOTQ1ZWRhNC4uMjcxNGJkMSAxMDA2NDQKLS0tIGEvTGliL3dlYmJyb3dzZXIucHkKKysrIGIvTGliL3dlYmJyb3dzZXIucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNobGV4CitpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3RhdAogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTgzLDcgKzg0LDcgQEAKIAogICAgICIiIgogICAgIGNtZCA9IGJyb3dzZXIuc3BsaXQoKVswXQotICAgIGlmIG5vdCBfaXNjb21tYW5kKGNtZCk6CisgICAgaWYgbm90IHNodXRpbC53aGljaChjbWQpOgogICAgICAgICByZXR1cm4gW05vbmUsIE5vbmVdCiAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoY21kKQogICAgIHRyeToKQEAgLTEwMiwzOCArMTAzLDYgQEAKICAgICByZXR1cm4gW05vbmUsIE5vbmVdCiAKIAotaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAid2luIjoKLSAgICBkZWYgX2lzZXhlY3V0YWJsZShjbWQpOgotICAgICAgICBjbWQgPSBjbWQubG93ZXIoKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjbWQpIGFuZCBjbWQuZW5kc3dpdGgoKCIuZXhlIiwgIi5iYXQiKSk6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBmb3IgZXh0IGluICIuZXhlIiwgIi5iYXQiOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoY21kICsgZXh0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLWVsc2U6Ci0gICAgZGVmIF9pc2V4ZWN1dGFibGUoY21kKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoY21kKToKLSAgICAgICAgICAgIG1vZGUgPSBvcy5zdGF0KGNtZClbc3RhdC5TVF9NT0RFXQotICAgICAgICAgICAgaWYgbW9kZSAmIHN0YXQuU19JWFVTUiBvciBtb2RlICYgc3RhdC5TX0lYR1JQIG9yIG1vZGUgJiBzdGF0LlNfSVhPVEg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLWRlZiBfaXNjb21tYW5kKGNtZCk6Ci0gICAgIiIiUmV0dXJuIFRydWUgaWYgY21kIGlzIGV4ZWN1dGFibGUgb3IgY2FuIGJlIGZvdW5kIG9uIHRoZSBleGVjdXRhYmxlCi0gICAgc2VhcmNoIHBhdGguIiIiCi0gICAgaWYgX2lzZXhlY3V0YWJsZShjbWQpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHBhdGggPSBvcy5lbnZpcm9uLmdldCgiUEFUSCIpCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGZvciBkIGluIHBhdGguc3BsaXQob3MucGF0aHNlcCk6Ci0gICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbihkLCBjbWQpCi0gICAgICAgIGlmIF9pc2V4ZWN1dGFibGUoZXhlKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQogIyBHZW5lcmFsIHBhcmVudCBjbGFzc2VzCiAKIGNsYXNzIEJhc2VCcm93c2VyKG9iamVjdCk6CkBAIC00MTgsMTEgKzM4NywxMSBAQAogICAgICAgICAgICAgIyBuZWVkIHRvIFBJTkcgZWFjaCBvbmUgdW50aWwgd2UgZmluZCBvbmUgdGhhdCdzIGxpdmUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoZm4pCi0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBubyBnb29kOyBhdHRlbXB0IHRvIGNsZWFuIGl0IG91dCwgYnV0IGRvbid0IGZhaWw6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHMKQEAgLTQ1MywyMiArNDIyLDIyIEBACiBkZWYgcmVnaXN0ZXJfWF9icm93c2VycygpOgogCiAgICAgIyB1c2UgeGRnLW9wZW4gaWYgYXJvdW5kCi0gICAgaWYgX2lzY29tbWFuZCgieGRnLW9wZW4iKToKKyAgICBpZiBzaHV0aWwud2hpY2goInhkZy1vcGVuIik6CiAgICAgICAgIHJlZ2lzdGVyKCJ4ZGctb3BlbiIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJ4ZGctb3BlbiIpKQogCiAgICAgIyBUaGUgZGVmYXVsdCBHTk9NRTMgYnJvd3NlcgotICAgIGlmICJHTk9NRV9ERVNLVE9QX1NFU1NJT05fSUQiIGluIG9zLmVudmlyb24gYW5kIF9pc2NvbW1hbmQoImd2ZnMtb3BlbiIpOgorICAgIGlmICJHTk9NRV9ERVNLVE9QX1NFU1NJT05fSUQiIGluIG9zLmVudmlyb24gYW5kIHNodXRpbC53aGljaCgiZ3Zmcy1vcGVuIik6CiAgICAgICAgIHJlZ2lzdGVyKCJndmZzLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigiZ3Zmcy1vcGVuIikpCiAKICAgICAjIFRoZSBkZWZhdWx0IEdOT01FIGJyb3dzZXIKLSAgICBpZiAiR05PTUVfREVTS1RPUF9TRVNTSU9OX0lEIiBpbiBvcy5lbnZpcm9uIGFuZCBfaXNjb21tYW5kKCJnbm9tZS1vcGVuIik6CisgICAgaWYgIkdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCIgaW4gb3MuZW52aXJvbiBhbmQgc2h1dGlsLndoaWNoKCJnbm9tZS1vcGVuIik6CiAgICAgICAgIHJlZ2lzdGVyKCJnbm9tZS1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoImdub21lLW9wZW4iKSkKIAogICAgICMgVGhlIGRlZmF1bHQgS0RFIGJyb3dzZXIKLSAgICBpZiAiS0RFX0ZVTExfU0VTU0lPTiIgaW4gb3MuZW52aXJvbiBhbmQgX2lzY29tbWFuZCgia2ZtY2xpZW50Iik6CisgICAgaWYgIktERV9GVUxMX1NFU1NJT04iIGluIG9zLmVudmlyb24gYW5kIHNodXRpbC53aGljaCgia2ZtY2xpZW50Iik6CiAgICAgICAgIHJlZ2lzdGVyKCJrZm1jbGllbnQiLCBLb25xdWVyb3IsIEtvbnF1ZXJvcigia2ZtY2xpZW50IikpCiAKLSAgICBpZiBfaXNjb21tYW5kKCJ4LXd3dy1icm93c2VyIik6CisgICAgaWYgc2h1dGlsLndoaWNoKCJ4LXd3dy1icm93c2VyIik6CiAgICAgICAgIHJlZ2lzdGVyKCJ4LXd3dy1icm93c2VyIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoIngtd3d3LWJyb3dzZXIiKSkKIAogICAgICMgVGhlIE1vemlsbGEvTmV0c2NhcGUgYnJvd3NlcnMKQEAgLTQ3NiwzOSArNDQ1LDM5IEBACiAgICAgICAgICAgICAgICAgICAgICJtb3ppbGxhLWZpcmViaXJkIiwgImZpcmViaXJkIiwKICAgICAgICAgICAgICAgICAgICAgImljZXdlYXNlbCIsICJpY2VhcGUiLAogICAgICAgICAgICAgICAgICAgICAic2VhbW9ua2V5IiwgIm1vemlsbGEiLCAibmV0c2NhcGUiKToKLSAgICAgICAgaWYgX2lzY29tbWFuZChicm93c2VyKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKGJyb3dzZXIpOgogICAgICAgICAgICAgcmVnaXN0ZXIoYnJvd3NlciwgTm9uZSwgTW96aWxsYShicm93c2VyKSkKIAogICAgICMgS29ucXVlcm9yL2tmbSwgdGhlIEtERSBicm93c2VyLgotICAgIGlmIF9pc2NvbW1hbmQoImtmbSIpOgorICAgIGlmIHNodXRpbC53aGljaCgia2ZtIik6CiAgICAgICAgIHJlZ2lzdGVyKCJrZm0iLCBLb25xdWVyb3IsIEtvbnF1ZXJvcigia2ZtIikpCi0gICAgZWxpZiBfaXNjb21tYW5kKCJrb25xdWVyb3IiKToKKyAgICBlbGlmIHNodXRpbC53aGljaCgia29ucXVlcm9yIik6CiAgICAgICAgIHJlZ2lzdGVyKCJrb25xdWVyb3IiLCBLb25xdWVyb3IsIEtvbnF1ZXJvcigia29ucXVlcm9yIikpCiAKICAgICAjIEdub21lJ3MgR2FsZW9uIGFuZCBFcGlwaGFueQogICAgIGZvciBicm93c2VyIGluICgiZ2FsZW9uIiwgImVwaXBoYW55Iik6Ci0gICAgICAgIGlmIF9pc2NvbW1hbmQoYnJvd3Nlcik6CisgICAgICAgIGlmIHNodXRpbC53aGljaChicm93c2VyKToKICAgICAgICAgICAgIHJlZ2lzdGVyKGJyb3dzZXIsIE5vbmUsIEdhbGVvbihicm93c2VyKSkKIAogICAgICMgU2tpcHN0b25lLCBhbm90aGVyIEd0ay9Nb3ppbGxhIGJhc2VkIGJyb3dzZXIKLSAgICBpZiBfaXNjb21tYW5kKCJza2lwc3RvbmUiKToKKyAgICBpZiBzaHV0aWwud2hpY2goInNraXBzdG9uZSIpOgogICAgICAgICByZWdpc3Rlcigic2tpcHN0b25lIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoInNraXBzdG9uZSIpKQogCiAgICAgIyBHb29nbGUgQ2hyb21lL0Nocm9taXVtIGJyb3dzZXJzCiAgICAgZm9yIGJyb3dzZXIgaW4gKCJnb29nbGUtY2hyb21lIiwgImNocm9tZSIsICJjaHJvbWl1bSIsICJjaHJvbWl1bS1icm93c2VyIik6Ci0gICAgICAgIGlmIF9pc2NvbW1hbmQoYnJvd3Nlcik6CisgICAgICAgIGlmIHNodXRpbC53aGljaChicm93c2VyKToKICAgICAgICAgICAgIHJlZ2lzdGVyKGJyb3dzZXIsIE5vbmUsIENocm9tZShicm93c2VyKSkKIAogICAgICMgT3BlcmEsIHF1aXRlIHBvcHVsYXIKLSAgICBpZiBfaXNjb21tYW5kKCJvcGVyYSIpOgorICAgIGlmIHNodXRpbC53aGljaCgib3BlcmEiKToKICAgICAgICAgcmVnaXN0ZXIoIm9wZXJhIiwgTm9uZSwgT3BlcmEoIm9wZXJhIikpCiAKICAgICAjIE5leHQsIE1vc2FpYyAtLSBvbGQgYnV0IHN0aWxsIGluIHVzZS4KLSAgICBpZiBfaXNjb21tYW5kKCJtb3NhaWMiKToKKyAgICBpZiBzaHV0aWwud2hpY2goIm1vc2FpYyIpOgogICAgICAgICByZWdpc3RlcigibW9zYWljIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoIm1vc2FpYyIpKQogCiAgICAgIyBHcmFpbCwgdGhlIFB5dGhvbiBicm93c2VyLiBEb2VzIGFueWJvZHkgc3RpbGwgdXNlIGl0PwotICAgIGlmIF9pc2NvbW1hbmQoImdyYWlsIik6CisgICAgaWYgc2h1dGlsLndoaWNoKCJncmFpbCIpOgogICAgICAgICByZWdpc3RlcigiZ3JhaWwiLCBHcmFpbCwgTm9uZSkKIAogIyBQcmVmZXIgWCBicm93c2VycyBpZiBwcmVzZW50CkBAIC01MTcsMTggKzQ4NiwxOCBAQAogCiAjIEFsc28gdHJ5IGNvbnNvbGUgYnJvd3NlcnMKIGlmIG9zLmVudmlyb24uZ2V0KCJURVJNIik6Ci0gICAgaWYgX2lzY29tbWFuZCgid3d3LWJyb3dzZXIiKToKKyAgICBpZiBzaHV0aWwud2hpY2goInd3dy1icm93c2VyIik6CiAgICAgICAgIHJlZ2lzdGVyKCJ3d3ctYnJvd3NlciIsIE5vbmUsIEdlbmVyaWNCcm93c2VyKCJ3d3ctYnJvd3NlciIpKQogICAgICMgVGhlIExpbmtzL2VsaW5rcyBicm93c2VycyA8aHR0cDovL2FydGF4Lmthcmxpbi5tZmYuY3VuaS5jei9+bWlrdWxhcy9saW5rcy8+Ci0gICAgaWYgX2lzY29tbWFuZCgibGlua3MiKToKKyAgICBpZiBzaHV0aWwud2hpY2goImxpbmtzIik6CiAgICAgICAgIHJlZ2lzdGVyKCJsaW5rcyIsIE5vbmUsIEdlbmVyaWNCcm93c2VyKCJsaW5rcyIpKQotICAgIGlmIF9pc2NvbW1hbmQoImVsaW5rcyIpOgorICAgIGlmIHNodXRpbC53aGljaCgiZWxpbmtzIik6CiAgICAgICAgIHJlZ2lzdGVyKCJlbGlua3MiLCBOb25lLCBFbGlua3MoImVsaW5rcyIpKQogICAgICMgVGhlIEx5bnggYnJvd3NlciA8aHR0cDovL2x5bnguaXNjLm9yZy8+LCA8aHR0cDovL2x5bnguYnJvd3Nlci5vcmcvPgotICAgIGlmIF9pc2NvbW1hbmQoImx5bngiKToKKyAgICBpZiBzaHV0aWwud2hpY2goImx5bngiKToKICAgICAgICAgcmVnaXN0ZXIoImx5bngiLCBOb25lLCBHZW5lcmljQnJvd3NlcigibHlueCIpKQogICAgICMgVGhlIHczbSBicm93c2VyIDxodHRwOi8vdzNtLnNvdXJjZWZvcmdlLm5ldC8+Ci0gICAgaWYgX2lzY29tbWFuZCgidzNtIik6CisgICAgaWYgc2h1dGlsLndoaWNoKCJ3M20iKToKICAgICAgICAgcmVnaXN0ZXIoInczbSIsIE5vbmUsIEdlbmVyaWNCcm93c2VyKCJ3M20iKSkKIAogIwpAQCAtNTQwLDcgKzUwOSw3IEBACiAgICAgICAgIGRlZiBvcGVuKHNlbGYsIHVybCwgbmV3PTAsIGF1dG9yYWlzZT1UcnVlKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5zdGFydGZpbGUodXJsKQotICAgICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICMgW0Vycm9yIDIyXSBObyBhcHBsaWNhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAogICAgICAgICAgICAgICAgICMgZmlsZSBmb3IgdGhpcyBvcGVyYXRpb246ICc8VVJMPicKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTU1OCw3ICs1MjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5ldCBFeHBsb3JlclxcSUVYUExPUkUuRVhFIikKICAgICBmb3IgYnJvd3NlciBpbiAoImZpcmVmb3giLCAiZmlyZWJpcmQiLCAic2VhbW9ua2V5IiwgIm1vemlsbGEiLAogICAgICAgICAgICAgICAgICAgICAibmV0c2NhcGUiLCAib3BlcmEiLCBpZXhwbG9yZSk6Ci0gICAgICAgIGlmIF9pc2NvbW1hbmQoYnJvd3Nlcik6CisgICAgICAgIGlmIHNodXRpbC53aGljaChicm93c2VyKToKICAgICAgICAgICAgIHJlZ2lzdGVyKGJyb3dzZXIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKGJyb3dzZXIpKQogCiAjCkBAIC02NDQsMTcgKzYxMyw2IEBACiAgICAgcmVnaXN0ZXIoIk1hY09TWCIsIE5vbmUsIE1hY09TWE9TQVNjcmlwdCgnZGVmYXVsdCcpLCAtMSkKIAogCi0jCi0jIFBsYXRmb3JtIHN1cHBvcnQgZm9yIE9TLzIKLSMKLQotaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAib3MyIiBhbmQgX2lzY29tbWFuZCgibmV0c2NhcGUiKToKLSAgICBfdHJ5b3JkZXIgPSBbXQotICAgIF9icm93c2VycyA9IHt9Ci0gICAgcmVnaXN0ZXIoIm9zMm5ldHNjYXBlIiwgTm9uZSwKLSAgICAgICAgICAgICBHZW5lcmljQnJvd3NlcihbInN0YXJ0IiwgIm5ldHNjYXBlIiwgIiVzIl0pLCAtMSkKLQotCiAjIE9LLCBub3cgdGhhdCB3ZSBrbm93IHdoYXQgdGhlIGRlZmF1bHQgcHJlZmVyZW5jZSBvcmRlcnMgZm9yIGVhY2gKICMgcGxhdGZvcm0gYXJlLCBhbGxvdyB1c2VyIHRvIG92ZXJyaWRlIHRoZW0gd2l0aCB0aGUgQlJPV1NFUiB2YXJpYWJsZS4KIGlmICJCUk9XU0VSIiBpbiBvcy5lbnZpcm9uOgpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5IGIvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CmluZGV4IGYwNzRhYjkuLjgxZTJkZjcgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKQEAgLTkwNSwxMSArOTA1LDggQEAKICAgICAgICAgYnVpbGRlciA9IEV4cGF0QnVpbGRlcigpCiAKICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIHN0cik6Ci0gICAgICAgIGZwID0gb3BlbihmaWxlLCAncmInKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmcDoKICAgICAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIucGFyc2VGaWxlKGZwKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgIGVsc2U6CiAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIucGFyc2VGaWxlKGZpbGUpCiAgICAgcmV0dXJuIHJlc3VsdApAQCAtOTM5LDExICs5MzYsOCBAQAogICAgICAgICBidWlsZGVyID0gRnJhZ21lbnRCdWlsZGVyKGNvbnRleHQpCiAKICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIHN0cik6Ci0gICAgICAgIGZwID0gb3BlbihmaWxlLCAncmInKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmcDoKICAgICAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIucGFyc2VGaWxlKGZwKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgIGVsc2U6CiAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIucGFyc2VGaWxlKGZpbGUpCiAgICAgcmV0dXJuIHJlc3VsdApkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50SW5jbHVkZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudEluY2x1ZGUucHkKaW5kZXggNmNjMWI0NC4uNzNlNDkxZSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50SW5jbHVkZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRJbmNsdWRlLnB5CkBAIC03MSw4ICs3MSw4IEBACiAjIEByZXR1cm4gVGhlIGV4cGFuZGVkIHJlc291cmNlLiAgSWYgdGhlIHBhcnNlIG1vZGUgaXMgInhtbCIsIHRoaXMKICMgICAgaXMgYW4gRWxlbWVudFRyZWUgaW5zdGFuY2UuICBJZiB0aGUgcGFyc2UgbW9kZSBpcyAidGV4dCIsIHRoaXMKICMgICAgaXMgYSBVbmljb2RlIHN0cmluZy4gIElmIHRoZSBsb2FkZXIgZmFpbHMsIGl0IGNhbiByZXR1cm4gTm9uZQotIyAgICBvciByYWlzZSBhbiBJT0Vycm9yIGV4Y2VwdGlvbi4KLSMgQHRocm93cyBJT0Vycm9yIElmIHRoZSBsb2FkZXIgZmFpbHMgdG8gbG9hZCB0aGUgcmVzb3VyY2UuCisjICAgIG9yIHJhaXNlIGFuIE9TRXJyb3IgZXhjZXB0aW9uLgorIyBAdGhyb3dzIE9TRXJyb3IgSWYgdGhlIGxvYWRlciBmYWlscyB0byBsb2FkIHRoZSByZXNvdXJjZS4KIAogZGVmIGRlZmF1bHRfbG9hZGVyKGhyZWYsIHBhcnNlLCBlbmNvZGluZz1Ob25lKToKICAgICBpZiBwYXJzZSA9PSAieG1sIjoKQEAgLTk1LDcgKzk1LDcgQEAKICMgICAgIHRoYXQgaW1wbGVtZW50cyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgPGI+ZGVmYXVsdF9sb2FkZXI8L2I+LgogIyBAdGhyb3dzIEZhdGFsSW5jbHVkZUVycm9yIElmIHRoZSBmdW5jdGlvbiBmYWlscyB0byBpbmNsdWRlIGEgZ2l2ZW4KICMgICAgIHJlc291cmNlLCBvciBpZiB0aGUgdHJlZSBjb250YWlucyBtYWxmb3JtZWQgWEluY2x1ZGUgZWxlbWVudHMuCi0jIEB0aHJvd3MgSU9FcnJvciBJZiB0aGUgZnVuY3Rpb24gZmFpbHMgdG8gbG9hZCBhIGdpdmVuIHJlc291cmNlLgorIyBAdGhyb3dzIE9TRXJyb3IgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzIHRvIGxvYWQgYSBnaXZlbiByZXNvdXJjZS4KIAogZGVmIGluY2x1ZGUoZWxlbSwgbG9hZGVyPU5vbmUpOgogICAgIGlmIGxvYWRlciBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKaW5kZXggZTcwMTVjNy4uZDkxNGRkYiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CkBAIC0xMDUsMTQgKzEwNSwxMiBAQAogZGVmIHByZXBhcmVfc3RhcihuZXh0LCB0b2tlbik6CiAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgogICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6Ci0gICAgICAgICAgICBmb3IgZSBpbiBlbGVtOgotICAgICAgICAgICAgICAgIHlpZWxkIGUKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZWxlbQogICAgIHJldHVybiBzZWxlY3QKIAogZGVmIHByZXBhcmVfc2VsZihuZXh0LCB0b2tlbik6CiAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgotICAgICAgICBmb3IgZWxlbSBpbiByZXN1bHQ6Ci0gICAgICAgICAgICB5aWVsZCBlbGVtCisgICAgICAgIHlpZWxkIGZyb20gcmVzdWx0CiAgICAgcmV0dXJuIHNlbGVjdAogCiBkZWYgcHJlcGFyZV9kZXNjZW5kYW50KG5leHQsIHRva2VuKToKQEAgLTE3Niw3ICsxNzQsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZ2V0KGtleSkgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLSIgYW5kIG5vdCByZS5tYXRjaCgiXGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnXQogICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgpAQCAtMTg0LDcgKzE4Miw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5maW5kKHRhZykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLT0nIiBhbmQgbm90IHJlLm1hdGNoKCJcZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CiAgICAgICAgICMgW3RhZz0ndmFsdWUnXQogICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICAgdmFsdWUgPSBwcmVkaWNhdGVbLTFdCkBAIC0xOTgsNyArMTk2LDEwIEBACiAgICAgaWYgc2lnbmF0dXJlID09ICItIiBvciBzaWduYXR1cmUgPT0gIi0oKSIgb3Igc2lnbmF0dXJlID09ICItKCktIjoKICAgICAgICAgIyBbaW5kZXhdIG9yIFtsYXN0KCldIG9yIFtsYXN0KCktaW5kZXhdCiAgICAgICAgIGlmIHNpZ25hdHVyZSA9PSAiLSI6CisgICAgICAgICAgICAjIFtpbmRleF0KICAgICAgICAgICAgIGluZGV4ID0gaW50KHByZWRpY2F0ZVswXSkgLSAxCisgICAgICAgICAgICBpZiBpbmRleCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoIlhQYXRoIHBvc2l0aW9uID49IDEgZXhwZWN0ZWQiKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgcHJlZGljYXRlWzBdICE9ICJsYXN0IjoKICAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigidW5zdXBwb3J0ZWQgZnVuY3Rpb24iKQpAQCAtMjA3LDYgKzIwOCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KHByZWRpY2F0ZVsyXSkgLSAxCiAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJ1bnN1cHBvcnRlZCBleHByZXNzaW9uIikKKyAgICAgICAgICAgICAgICBpZiBpbmRleCA+IC0yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiWFBhdGggb2Zmc2V0IGZyb20gbGFzdCgpIG11c3QgYmUgbmVnYXRpdmUiKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpbmRleCA9IC0xCiAgICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IGYxYTZjOTkuLjU2YzkxY2MgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtMSwyOCArMSw0NyBAQAorIiIiTGlnaHR3ZWlnaHQgWE1MIHN1cHBvcnQgZm9yIFB5dGhvbi4KKworIFhNTCBpcyBhbiBpbmhlcmVudGx5IGhpZXJhcmNoaWNhbCBkYXRhIGZvcm1hdCwgYW5kIHRoZSBtb3N0IG5hdHVyYWwgd2F5IHRvCisgcmVwcmVzZW50IGl0IGlzIHdpdGggYSB0cmVlLiAgVGhpcyBtb2R1bGUgaGFzIHR3byBjbGFzc2VzIGZvciB0aGlzIHB1cnBvc2U6CisKKyAgICAxLiBFbGVtZW50VHJlZSByZXByZXNlbnRzIHRoZSB3aG9sZSBYTUwgZG9jdW1lbnQgYXMgYSB0cmVlIGFuZAorCisgICAgMi4gRWxlbWVudCByZXByZXNlbnRzIGEgc2luZ2xlIG5vZGUgaW4gdGhpcyB0cmVlLgorCisgSW50ZXJhY3Rpb25zIHdpdGggdGhlIHdob2xlIGRvY3VtZW50IChyZWFkaW5nIGFuZCB3cml0aW5nIHRvL2Zyb20gZmlsZXMpIGFyZQorIHVzdWFsbHkgZG9uZSBvbiB0aGUgRWxlbWVudFRyZWUgbGV2ZWwuICBJbnRlcmFjdGlvbnMgd2l0aCBhIHNpbmdsZSBYTUwgZWxlbWVudAorIGFuZCBpdHMgc3ViLWVsZW1lbnRzIGFyZSBkb25lIG9uIHRoZSBFbGVtZW50IGxldmVsLgorCisgRWxlbWVudCBpcyBhIGZsZXhpYmxlIGNvbnRhaW5lciBvYmplY3QgZGVzaWduZWQgdG8gc3RvcmUgaGllcmFyY2hpY2FsIGRhdGEKKyBzdHJ1Y3R1cmVzIGluIG1lbW9yeS4gSXQgY2FuIGJlIGRlc2NyaWJlZCBhcyBhIGNyb3NzIGJldHdlZW4gYSBsaXN0IGFuZCBhCisgZGljdGlvbmFyeS4gIEVhY2ggRWxlbWVudCBoYXMgYSBudW1iZXIgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggaXQ6CisKKyAgICAndGFnJyAtIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQncyBuYW1lLgorCisgICAgJ2F0dHJpYnV0ZXMnIC0gYSBQeXRob24gZGljdGlvbmFyeSBzdG9yaW5nIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy4KKworICAgICd0ZXh0JyAtIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQncyB0ZXh0IGNvbnRlbnQuCisKKyAgICAndGFpbCcgLSBhbiBvcHRpb25hbCBzdHJpbmcgY29udGFpbmluZyB0ZXh0IGFmdGVyIHRoZSBlbGVtZW50J3MgZW5kIHRhZy4KKworICAgIEFuZCBhIG51bWJlciBvZiBjaGlsZCBlbGVtZW50cyBzdG9yZWQgaW4gYSBQeXRob24gc2VxdWVuY2UuCisKKyBUbyBjcmVhdGUgYW4gZWxlbWVudCBpbnN0YW5jZSwgdXNlIHRoZSBFbGVtZW50IGNvbnN0cnVjdG9yLAorIG9yIHRoZSBTdWJFbGVtZW50IGZhY3RvcnkgZnVuY3Rpb24uCisKKyBZb3UgY2FuIGFsc28gdXNlIHRoZSBFbGVtZW50VHJlZSBjbGFzcyB0byB3cmFwIGFuIGVsZW1lbnQgc3RydWN0dXJlCisgYW5kIGNvbnZlcnQgaXQgdG8gYW5kIGZyb20gWE1MLgorCisiIiIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisjIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNmL2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLgogIwogIyBFbGVtZW50VHJlZQotIyAkSWQ6IEVsZW1lbnRUcmVlLnB5IDM0NDAgMjAwOC0wNy0xOCAxNDo0NTowMVogZnJlZHJpayAkCi0jCi0jIGxpZ2h0LXdlaWdodCBYTUwgc3VwcG9ydCBmb3IgUHl0aG9uIDIuMyBhbmQgbGF0ZXIuCi0jCi0jIGhpc3RvcnkgKHNpbmNlIDEuMi42KToKLSMgMjAwNS0xMS0xMiBmbCAgIGFkZGVkIHRvc3RyaW5nbGlzdC9mcm9tc3RyaW5nbGlzdCBoZWxwZXJzCi0jIDIwMDYtMDctMDUgZmwgICBtZXJnZWQgaW4gc2VsZWN0ZWQgY2hhbmdlcyBmcm9tIHRoZSAxLjMgc2FuZGJveAotIyAyMDA2LTA3LTA1IGZsICAgcmVtb3ZlZCBzdXBwb3J0IGZvciAyLjEgYW5kIGVhcmxpZXIKLSMgMjAwNy0wNi0yMSBmbCAgIGFkZGVkIGRlcHJlY2F0aW9uL2Z1dHVyZSB3YXJuaW5ncwotIyAyMDA3LTA4LTI1IGZsICAgYWRkZWQgZG9jdHlwZSBob29rLCBhZGRlZCBwYXJzZXIgdmVyc2lvbiBhdHRyaWJ1dGUgZXRjCi0jIDIwMDctMDgtMjYgZmwgICBhZGRlZCBuZXcgc2VyaWFsaXplciBjb2RlIChiZXR0ZXIgbmFtZXNwYWNlIGhhbmRsaW5nLCBldGMpCi0jIDIwMDctMDgtMjcgZmwgICB3YXJuIGZvciBicm9rZW4gL3RhZyBzZWFyY2hlcyBvbiB0cmVlIGxldmVsCi0jIDIwMDctMDktMDIgZmwgICBhZGRlZCBodG1sL3RleHQgbWV0aG9kcyB0byBzZXJpYWxpemVyIChleHBlcmltZW50YWwpCi0jIDIwMDctMDktMDUgZmwgICBhZGRlZCBtZXRob2QgYXJndW1lbnQgdG8gdG9zdHJpbmcvdG9zdHJpbmdsaXN0Ci0jIDIwMDctMDktMDYgZmwgICBpbXByb3ZlZCBlcnJvciBoYW5kbGluZwotIyAyMDA3LTA5LTEzIGZsICAgYWRkZWQgaXRlcnRleHQsIGl0ZXJmaW5kOyBhc3NvcnRlZCBjbGVhbnVwcwotIyAyMDA3LTEyLTE1IGZsICAgYWRkZWQgQzE0TiBob29rcywgY29weSBtZXRob2QgKGV4cGVyaW1lbnRhbCkKLSMKICMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDggYnkgRnJlZHJpayBMdW5kaC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIGZyZWRyaWtAcHl0aG9ud2FyZS5jb20KICMgaHR0cDovL3d3dy5weXRob253YXJlLmNvbQotIwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUaGUgRWxlbWVudFRyZWUgdG9vbGtpdCBpcwogIwpAQCAtNTEsOSArNzAsNiBAQAogIyBPRiBUSElTIFNPRlRXQVJFLgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0jIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KLSMgU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuCi0KIF9fYWxsX18gPSBbCiAgICAgIyBwdWJsaWMgc3ltYm9scwogICAgICJDb21tZW50IiwKQEAgLTY5LDM0ICs4NSwxMiBAQAogICAgICJUcmVlQnVpbGRlciIsCiAgICAgIlZFUlNJT04iLAogICAgICJYTUwiLCAiWE1MSUQiLAotICAgICJYTUxQYXJzZXIiLCAiWE1MVHJlZUJ1aWxkZXIiLAorICAgICJYTUxQYXJzZXIiLAogICAgICJyZWdpc3Rlcl9uYW1lc3BhY2UiLAogICAgIF0KIAogVkVSU0lPTiA9ICIxLjMuMCIKIAotIyMKLSMgVGhlIDxiPkVsZW1lbnQ8L2I+IHR5cGUgaXMgYSBmbGV4aWJsZSBjb250YWluZXIgb2JqZWN0LCBkZXNpZ25lZCB0bwotIyBzdG9yZSBoaWVyYXJjaGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGluIG1lbW9yeS4gVGhlIHR5cGUgY2FuIGJlCi0jIGRlc2NyaWJlZCBhcyBhIGNyb3NzIGJldHdlZW4gYSBsaXN0IGFuZCBhIGRpY3Rpb25hcnkuCi0jIDxwPgotIyBFYWNoIGVsZW1lbnQgaGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIGl0OgotIyA8dWw+Ci0jIDxsaT5hIDxpPnRhZzwvaT4uIFRoaXMgaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hhdCBraW5kIG9mIGRhdGEKLSMgdGhpcyBlbGVtZW50IHJlcHJlc2VudHMgKHRoZSBlbGVtZW50IHR5cGUsIGluIG90aGVyIHdvcmRzKS48L2xpPgotIyA8bGk+YSBudW1iZXIgb2YgPGk+YXR0cmlidXRlczwvaT4sIHN0b3JlZCBpbiBhIFB5dGhvbiBkaWN0aW9uYXJ5LjwvbGk+Ci0jIDxsaT5hIDxpPnRleHQ8L2k+IHN0cmluZy48L2xpPgotIyA8bGk+YW4gb3B0aW9uYWwgPGk+dGFpbDwvaT4gc3RyaW5nLjwvbGk+Ci0jIDxsaT5hIG51bWJlciBvZiA8aT5jaGlsZCBlbGVtZW50czwvaT4sIHN0b3JlZCBpbiBhIFB5dGhvbiBzZXF1ZW5jZTwvbGk+Ci0jIDwvdWw+Ci0jCi0jIFRvIGNyZWF0ZSBhbiBlbGVtZW50IGluc3RhbmNlLCB1c2UgdGhlIHtAbGluayAjRWxlbWVudH0gY29uc3RydWN0b3IKLSMgb3IgdGhlIHtAbGluayAjU3ViRWxlbWVudH0gZmFjdG9yeSBmdW5jdGlvbi4KLSMgPHA+Ci0jIFRoZSB7QGxpbmsgI0VsZW1lbnRUcmVlfSBjbGFzcyBjYW4gYmUgdXNlZCB0byB3cmFwIGFuIGVsZW1lbnQKLSMgc3RydWN0dXJlLCBhbmQgY29udmVydCBpdCBmcm9tIGFuZCB0byBYTUwuCi0jIwotCiBpbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwpAQCAtMTA2LDgxICsxMDAsNjggQEAKIGZyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKIAogCi0jIwotIyBQYXJzZXIgZXJyb3IuICBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgPGI+U3ludGF4RXJyb3I8L2I+LgotIyA8cD4KLSMgSW4gYWRkaXRpb24gdG8gdGhlIGV4Y2VwdGlvbiB2YWx1ZSwgYW4gZXhjZXB0aW9uIGluc3RhbmNlIGNvbnRhaW5zIGEKLSMgc3BlY2lmaWMgZXhjZXB0aW9uIGNvZGUgaW4gdGhlIDxiPmNvZGU8L2I+IGF0dHJpYnV0ZSwgYW5kIHRoZSBsaW5lIGFuZAotIyBjb2x1bW4gb2YgdGhlIGVycm9yIGluIHRoZSA8Yj5wb3NpdGlvbjwvYj4gYXR0cmlidXRlLgotCiBjbGFzcyBQYXJzZUVycm9yKFN5bnRheEVycm9yKToKKyAgICAiIiJBbiBlcnJvciB3aGVuIHBhcnNpbmcgYW4gWE1MIGRvY3VtZW50LgorCisgICAgSW4gYWRkaXRpb24gdG8gaXRzIGV4Y2VwdGlvbiB2YWx1ZSwgYSBQYXJzZUVycm9yIGNvbnRhaW5zCisgICAgdHdvIGV4dHJhIGF0dHJpYnV0ZXM6CisgICAgICAgICdjb2RlJyAgICAgLSB0aGUgc3BlY2lmaWMgZXhjZXB0aW9uIGNvZGUKKyAgICAgICAgJ3Bvc2l0aW9uJyAtIHRoZSBsaW5lIGFuZCBjb2x1bW4gb2YgdGhlIGVycm9yCisKKyAgICAiIiIKICAgICBwYXNzCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotIyMKLSMgQ2hlY2tzIGlmIGFuIG9iamVjdCBhcHBlYXJzIHRvIGJlIGEgdmFsaWQgZWxlbWVudCBvYmplY3QuCi0jCi0jIEBwYXJhbSBBbiBlbGVtZW50IGluc3RhbmNlLgotIyBAcmV0dXJuIEEgdHJ1ZSB2YWx1ZSBpZiB0aGlzIGlzIGFuIGVsZW1lbnQgb2JqZWN0LgotIyBAZGVmcmV0dXJuIGZsYWcKIAogZGVmIGlzZWxlbWVudChlbGVtZW50KToKLSAgICAjIEZJWE1FOiBub3Qgc3VyZSBhYm91dCB0aGlzOwotICAgICMgaXNpbnN0YW5jZShlbGVtZW50LCBFbGVtZW50KSBvciBsb29rIGZvciB0YWcvYXR0cmliL3RleHQgYXR0cmlidXRlcworICAgICIiIlJldHVybiBUcnVlIGlmICplbGVtZW50KiBhcHBlYXJzIHRvIGJlIGFuIEVsZW1lbnQuIiIiCiAgICAgcmV0dXJuIGhhc2F0dHIoZWxlbWVudCwgJ3RhZycpCiAKLSMjCi0jIEVsZW1lbnQgY2xhc3MuICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIEVsZW1lbnQgaW50ZXJmYWNlLCBhbmQKLSMgcHJvdmlkZXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2UuCi0jIDxwPgotIyBUaGUgZWxlbWVudCBuYW1lLCBhdHRyaWJ1dGUgbmFtZXMsIGFuZCBhdHRyaWJ1dGUgdmFsdWVzIGNhbiBiZQotIyBlaXRoZXIgQVNDSUkgc3RyaW5ncyAob3JkaW5hcnkgUHl0aG9uIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IDctYml0Ci0jIEFTQ0lJIGNoYXJhY3RlcnMpIG9yIFVuaWNvZGUgc3RyaW5ncy4KLSMKLSMgQHBhcmFtIHRhZyBUaGUgZWxlbWVudCBuYW1lLgotIyBAcGFyYW0gYXR0cmliIEFuIG9wdGlvbmFsIGRpY3Rpb25hcnksIGNvbnRhaW5pbmcgZWxlbWVudCBhdHRyaWJ1dGVzLgotIyBAcGFyYW0gKipleHRyYSBBZGRpdGlvbmFsIGF0dHJpYnV0ZXMsIGdpdmVuIGFzIGtleXdvcmQgYXJndW1lbnRzLgotIyBAc2VlIEVsZW1lbnQKLSMgQHNlZSBTdWJFbGVtZW50Ci0jIEBzZWUgQ29tbWVudAotIyBAc2VlIFByb2Nlc3NpbmdJbnN0cnVjdGlvbgogCiBjbGFzcyBFbGVtZW50OgotICAgICMgPHRhZyBhdHRyaWI+dGV4dDxjaGlsZC8+Li4uPC90YWc+dGFpbAorICAgICIiIkFuIFhNTCBlbGVtZW50LgogCi0gICAgIyMKLSAgICAjIChBdHRyaWJ1dGUpIEVsZW1lbnQgdGFnLgorICAgIFRoaXMgY2xhc3MgaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWxlbWVudCBpbnRlcmZhY2UuCisKKyAgICBBbiBlbGVtZW50J3MgbGVuZ3RoIGlzIGl0cyBudW1iZXIgb2Ygc3ViZWxlbWVudHMuICBUaGF0IG1lYW5zIGlmIHlvdQorICAgIHlvdSB3YW50IHRvIGNoZWNrIGlmIGFuIGVsZW1lbnQgaXMgdHJ1bHkgZW1wdHksIHlvdSBzaG91bGQgY2hlY2sgQk9USAorICAgIGl0cyBsZW5ndGggQU5EIGl0cyB0ZXh0IGF0dHJpYnV0ZS4KKworICAgIFRoZSBlbGVtZW50IHRhZywgYXR0cmlidXRlIG5hbWVzLCBhbmQgYXR0cmlidXRlIHZhbHVlcyBjYW4gYmUgZWl0aGVyCisgICAgYnl0ZXMgb3Igc3RyaW5ncy4KKworICAgICp0YWcqIGlzIHRoZSBlbGVtZW50IG5hbWUuICAqYXR0cmliKiBpcyBhbiBvcHRpb25hbCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgICBlbGVtZW50IGF0dHJpYnV0ZXMuICpleHRyYSogYXJlIGFkZGl0aW9uYWwgZWxlbWVudCBhdHRyaWJ1dGVzIGdpdmVuIGFzCisgICAga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICBFeGFtcGxlIGZvcm06CisgICAgICAgIDx0YWcgYXR0cmliPnRleHQ8Y2hpbGQvPi4uLjwvdGFnPnRhaWwKKworICAgICIiIgogCiAgICAgdGFnID0gTm9uZQotCi0gICAgIyMKLSAgICAjIChBdHRyaWJ1dGUpIEVsZW1lbnQgYXR0cmlidXRlIGRpY3Rpb25hcnkuICBXaGVyZSBwb3NzaWJsZSwgdXNlCi0gICAgIyB7QGxpbmsgI0VsZW1lbnQuZ2V0fSwKLSAgICAjIHtAbGluayAjRWxlbWVudC5zZXR9LAotICAgICMge0BsaW5rICNFbGVtZW50LmtleXN9LCBhbmQKLSAgICAjIHtAbGluayAjRWxlbWVudC5pdGVtc30gdG8gYWNjZXNzCi0gICAgIyBlbGVtZW50IGF0dHJpYnV0ZXMuCisgICAgIiIiVGhlIGVsZW1lbnQncyBuYW1lLiIiIgogCiAgICAgYXR0cmliID0gTm9uZQotCi0gICAgIyMKLSAgICAjIChBdHRyaWJ1dGUpIFRleHQgYmVmb3JlIGZpcnN0IHN1YmVsZW1lbnQuICBUaGlzIGlzIGVpdGhlciBhCi0gICAgIyBzdHJpbmcgb3IgdGhlIHZhbHVlIE5vbmUuICBOb3RlIHRoYXQgaWYgdGhlcmUgd2FzIG5vIHRleHQsIHRoaXMKLSAgICAjIGF0dHJpYnV0ZSBtYXkgYmUgZWl0aGVyIE5vbmUgb3IgYW4gZW1wdHkgc3RyaW5nLCBkZXBlbmRpbmcgb24KLSAgICAjIHRoZSBwYXJzZXIuCisgICAgIiIiRGljdGlvbmFyeSBvZiB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMuIiIiCiAKICAgICB0ZXh0ID0gTm9uZQorICAgICIiIgorICAgIFRleHQgYmVmb3JlIGZpcnN0IHN1YmVsZW1lbnQuIFRoaXMgaXMgZWl0aGVyIGEgc3RyaW5nIG9yIHRoZSB2YWx1ZSBOb25lLgorICAgIE5vdGUgdGhhdCBpZiB0aGVyZSBpcyBubyB0ZXh0LCB0aGlzIGF0dHJpYnV0ZSBtYXkgYmUgZWl0aGVyCisgICAgTm9uZSBvciB0aGUgZW1wdHkgc3RyaW5nLCBkZXBlbmRpbmcgb24gdGhlIHBhcnNlci4KIAotICAgICMjCi0gICAgIyAoQXR0cmlidXRlKSBUZXh0IGFmdGVyIHRoaXMgZWxlbWVudCdzIGVuZCB0YWcsIGJ1dCBiZWZvcmUgdGhlCi0gICAgIyBuZXh0IHNpYmxpbmcgZWxlbWVudCdzIHN0YXJ0IHRhZy4gIFRoaXMgaXMgZWl0aGVyIGEgc3RyaW5nIG9yCi0gICAgIyB0aGUgdmFsdWUgTm9uZS4gIE5vdGUgdGhhdCBpZiB0aGVyZSB3YXMgbm8gdGV4dCwgdGhpcyBhdHRyaWJ1dGUKLSAgICAjIG1heSBiZSBlaXRoZXIgTm9uZSBvciBhbiBlbXB0eSBzdHJpbmcsIGRlcGVuZGluZyBvbiB0aGUgcGFyc2VyLgorICAgICIiIgogCi0gICAgdGFpbCA9IE5vbmUgIyB0ZXh0IGFmdGVyIGVuZCB0YWcsIGlmIGFueQorICAgIHRhaWwgPSBOb25lCisgICAgIiIiCisgICAgVGV4dCBhZnRlciB0aGlzIGVsZW1lbnQncyBlbmQgdGFnLCBidXQgYmVmb3JlIHRoZSBuZXh0IHNpYmxpbmcgZWxlbWVudCdzCisgICAgc3RhcnQgdGFnLiAgVGhpcyBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgdGhlIHZhbHVlIE5vbmUuICBOb3RlIHRoYXQgaWYgdGhlcmUKKyAgICB3YXMgbm8gdGV4dCwgdGhpcyBhdHRyaWJ1dGUgbWF5IGJlIGVpdGhlciBOb25lIG9yIGFuIGVtcHR5IHN0cmluZywKKyAgICBkZXBlbmRpbmcgb24gdGhlIHBhcnNlci4KIAotICAgICMgY29uc3RydWN0b3IKKyAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHJpYiwgZGljdCk6CkBAIC0xOTUsMzYgKzE3NiwzMCBAQAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICI8RWxlbWVudCAlcyBhdCAweCV4PiIgJSAocmVwcihzZWxmLnRhZyksIGlkKHNlbGYpKQogCi0gICAgIyMKLSAgICAjIENyZWF0ZXMgYSBuZXcgZWxlbWVudCBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGlzIGVsZW1lbnQuCi0gICAgIwotICAgICMgQHBhcmFtIHRhZyBFbGVtZW50IHRhZy4KLSAgICAjIEBwYXJhbSBhdHRyaWIgRWxlbWVudCBhdHRyaWJ1dGVzLCBnaXZlbiBhcyBhIGRpY3Rpb25hcnkuCi0gICAgIyBAcmV0dXJuIEEgbmV3IGVsZW1lbnQgaW5zdGFuY2UuCi0KICAgICBkZWYgbWFrZWVsZW1lbnQoc2VsZiwgdGFnLCBhdHRyaWIpOgorICAgICAgICAiIiJDcmVhdGUgYSBuZXcgZWxlbWVudCB3aXRoIHRoZSBzYW1lIHR5cGUuCisKKyAgICAgICAgKnRhZyogaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgZWxlbWVudCBuYW1lLgorICAgICAgICAqYXR0cmliKiBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZWxlbWVudCBhdHRyaWJ1dGVzLgorCisgICAgICAgIERvIG5vdCBjYWxsIHRoaXMgbWV0aG9kLCB1c2UgdGhlIFN1YkVsZW1lbnQgZmFjdG9yeSBmdW5jdGlvbiBpbnN0ZWFkLgorCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18odGFnLCBhdHRyaWIpCiAKLSAgICAjIwotICAgICMgKEV4cGVyaW1lbnRhbCkgQ29waWVzIHRoZSBjdXJyZW50IGVsZW1lbnQuICBUaGlzIGNyZWF0ZXMgYQotICAgICMgc2hhbGxvdyBjb3B5OyBzdWJlbGVtZW50cyB3aWxsIGJlIHNoYXJlZCB3aXRoIHRoZSBvcmlnaW5hbCB0cmVlLgotICAgICMKLSAgICAjIEByZXR1cm4gQSBuZXcgZWxlbWVudCBpbnN0YW5jZS4KLQogICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gY29weSBvZiBjdXJyZW50IGVsZW1lbnQuCisKKyAgICAgICAgVGhpcyBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5LiBTdWJlbGVtZW50cyB3aWxsIGJlIHNoYXJlZCB3aXRoIHRoZQorICAgICAgICBvcmlnaW5hbCB0cmVlLgorCisgICAgICAgICIiIgogICAgICAgICBlbGVtID0gc2VsZi5tYWtlZWxlbWVudChzZWxmLnRhZywgc2VsZi5hdHRyaWIpCiAgICAgICAgIGVsZW0udGV4dCA9IHNlbGYudGV4dAogICAgICAgICBlbGVtLnRhaWwgPSBzZWxmLnRhaWwKICAgICAgICAgZWxlbVs6XSA9IHNlbGYKICAgICAgICAgcmV0dXJuIGVsZW0KIAotICAgICMjCi0gICAgIyBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3ViZWxlbWVudHMuICBOb3RlIHRoYXQgdGhpcyBvbmx5IGNvdW50cwotICAgICMgZnVsbCBlbGVtZW50czsgdG8gY2hlY2sgaWYgdGhlcmUncyBhbnkgY29udGVudCBpbiBhbiBlbGVtZW50LCB5b3UKLSAgICAjIGhhdmUgdG8gY2hlY2sgYm90aCB0aGUgbGVuZ3RoIGFuZCB0aGUgPGI+dGV4dDwvYj4gYXR0cmlidXRlLgotICAgICMKLSAgICAjIEByZXR1cm4gVGhlIG51bWJlciBvZiBzdWJlbGVtZW50cy4KLQogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2NoaWxkcmVuKQogCkBAIC0yMzYsMjMgKzIxMSw5IEBACiAgICAgICAgICAgICApCiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5fY2hpbGRyZW4pICE9IDAgIyBlbXVsYXRlIG9sZCBiZWhhdmlvdXIsIGZvciBub3cKIAotICAgICMjCi0gICAgIyBSZXR1cm5zIHRoZSBnaXZlbiBzdWJlbGVtZW50LCBieSBpbmRleC4KLSAgICAjCi0gICAgIyBAcGFyYW0gaW5kZXggV2hhdCBzdWJlbGVtZW50IHRvIHJldHVybi4KLSAgICAjIEByZXR1cm4gVGhlIGdpdmVuIHN1YmVsZW1lbnQuCi0gICAgIyBAZXhjZXB0aW9uIEluZGV4RXJyb3IgSWYgdGhlIGdpdmVuIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QuCi0KICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaW5kZXgpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2hpbGRyZW5baW5kZXhdCiAKLSAgICAjIwotICAgICMgUmVwbGFjZXMgdGhlIGdpdmVuIHN1YmVsZW1lbnQsIGJ5IGluZGV4LgotICAgICMKLSAgICAjIEBwYXJhbSBpbmRleCBXaGF0IHN1YmVsZW1lbnQgdG8gcmVwbGFjZS4KLSAgICAjIEBwYXJhbSBlbGVtZW50IFRoZSBuZXcgZWxlbWVudCB2YWx1ZS4KLSAgICAjIEBleGNlcHRpb24gSW5kZXhFcnJvciBJZiB0aGUgZ2l2ZW4gZWxlbWVudCBkb2VzIG5vdCBleGlzdC4KLQogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgZWxlbWVudCk6CiAgICAgICAgICMgaWYgaXNpbnN0YW5jZShpbmRleCwgc2xpY2UpOgogICAgICAgICAjICAgICBmb3IgZWx0IGluIGVsZW1lbnQ6CkBAIC0yNjEsNzYgKzIyMiw2MiBAQAogICAgICAgICAjICAgICBhc3NlcnQgaXNlbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuW2luZGV4XSA9IGVsZW1lbnQKIAotICAgICMjCi0gICAgIyBEZWxldGVzIHRoZSBnaXZlbiBzdWJlbGVtZW50LCBieSBpbmRleC4KLSAgICAjCi0gICAgIyBAcGFyYW0gaW5kZXggV2hhdCBzdWJlbGVtZW50IHRvIGRlbGV0ZS4KLSAgICAjIEBleGNlcHRpb24gSW5kZXhFcnJvciBJZiB0aGUgZ2l2ZW4gZWxlbWVudCBkb2VzIG5vdCBleGlzdC4KLQogICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6CiAgICAgICAgIGRlbCBzZWxmLl9jaGlsZHJlbltpbmRleF0KIAotICAgICMjCi0gICAgIyBBZGRzIGEgc3ViZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudC4gIEluIGRvY3VtZW50IG9yZGVyLAotICAgICMgdGhlIG5ldyBlbGVtZW50IHdpbGwgYXBwZWFyIGFmdGVyIHRoZSBsYXN0IGV4aXN0aW5nIHN1YmVsZW1lbnQgKG9yCi0gICAgIyBkaXJlY3RseSBhZnRlciB0aGUgdGV4dCwgaWYgaXQncyB0aGUgZmlyc3Qgc3ViZWxlbWVudCksIGJ1dCBiZWZvcmUKLSAgICAjIHRoZSBlbmQgdGFnIGZvciB0aGlzIGVsZW1lbnQuCi0gICAgIwotICAgICMgQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gYWRkLgorICAgIGRlZiBhcHBlbmQoc2VsZiwgc3ViZWxlbWVudCk6CisgICAgICAgICIiIkFkZCAqc3ViZWxlbWVudCogdG8gdGhlIGVuZCBvZiB0aGlzIGVsZW1lbnQuCiAKLSAgICBkZWYgYXBwZW5kKHNlbGYsIGVsZW1lbnQpOgotICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQotICAgICAgICBzZWxmLl9jaGlsZHJlbi5hcHBlbmQoZWxlbWVudCkKKyAgICAgICAgVGhlIG5ldyBlbGVtZW50IHdpbGwgYXBwZWFyIGluIGRvY3VtZW50IG9yZGVyIGFmdGVyIHRoZSBsYXN0IGV4aXN0aW5nCisgICAgICAgIHN1YmVsZW1lbnQgKG9yIGRpcmVjdGx5IGFmdGVyIHRoZSB0ZXh0LCBpZiBpdCdzIHRoZSBmaXJzdCBzdWJlbGVtZW50KSwKKyAgICAgICAgYnV0IGJlZm9yZSB0aGUgZW5kIHRhZyBmb3IgdGhpcyBlbGVtZW50LgogCi0gICAgIyMKLSAgICAjIEFwcGVuZHMgc3ViZWxlbWVudHMgZnJvbSBhIHNlcXVlbmNlLgotICAgICMKLSAgICAjIEBwYXJhbSBlbGVtZW50cyBBIHNlcXVlbmNlIG9iamVjdCB3aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cy4KLSAgICAjIEBzaW5jZSAxLjMKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KHN1YmVsZW1lbnQpCisgICAgICAgIHNlbGYuX2NoaWxkcmVuLmFwcGVuZChzdWJlbGVtZW50KQogCiAgICAgZGVmIGV4dGVuZChzZWxmLCBlbGVtZW50cyk6CisgICAgICAgICIiIkFwcGVuZCBzdWJlbGVtZW50cyBmcm9tIGEgc2VxdWVuY2UuCisKKyAgICAgICAgKmVsZW1lbnRzKiBpcyBhIHNlcXVlbmNlIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzLgorCisgICAgICAgICIiIgogICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuLmV4dGVuZChlbGVtZW50cykKIAotICAgICMjCi0gICAgIyBJbnNlcnRzIGEgc3ViZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBlbGVtZW50LgotICAgICMKLSAgICAjIEBwYXJhbSBpbmRleCBXaGVyZSB0byBpbnNlcnQgdGhlIG5ldyBzdWJlbGVtZW50LgotCi0gICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgZWxlbWVudCk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCi0gICAgICAgIHNlbGYuX2NoaWxkcmVuLmluc2VydChpbmRleCwgZWxlbWVudCkKKyAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCBzdWJlbGVtZW50KToKKyAgICAgICAgIiIiSW5zZXJ0ICpzdWJlbGVtZW50KiBhdCBwb3NpdGlvbiAqaW5kZXgqLiIiIgorICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChzdWJlbGVtZW50KQorICAgICAgICBzZWxmLl9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIHN1YmVsZW1lbnQpCiAKICAgICBkZWYgX2Fzc2VydF9pc19lbGVtZW50KHNlbGYsIGUpOgogICAgICAgICAjIE5lZWQgdG8gcmVmZXIgdG8gdGhlIGFjdHVhbCBQeXRob24gaW1wbGVtZW50YXRpb24sIG5vdCB0aGUKICAgICAgICAgIyBzaGFkb3dpbmcgQyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgX0VsZW1lbnQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLCBfRWxlbWVudF9QeSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGFuIEVsZW1lbnQsIG5vdCAlcycgJSB0eXBlKGUpLl9fbmFtZV9fKQogCi0gICAgIyMKLSAgICAjIFJlbW92ZXMgYSBtYXRjaGluZyBzdWJlbGVtZW50LiAgVW5saWtlIHRoZSA8Yj5maW5kPC9iPiBtZXRob2RzLAotICAgICMgdGhpcyBtZXRob2QgY29tcGFyZXMgZWxlbWVudHMgYmFzZWQgb24gaWRlbnRpdHksIG5vdCBvbiB0YWcKLSAgICAjIHZhbHVlIG9yIGNvbnRlbnRzLiAgVG8gcmVtb3ZlIHN1YmVsZW1lbnRzIGJ5IG90aGVyIG1lYW5zLCB0aGUKLSAgICAjIGVhc2llc3Qgd2F5IGlzIG9mdGVuIHRvIHVzZSBhIGxpc3QgY29tcHJlaGVuc2lvbiB0byBzZWxlY3Qgd2hhdAotICAgICMgZWxlbWVudHMgdG8ga2VlcCwgYW5kIHVzZSBzbGljZSBhc3NpZ25tZW50IHRvIHVwZGF0ZSB0aGUgcGFyZW50Ci0gICAgIyBlbGVtZW50LgotICAgICMKLSAgICAjIEBwYXJhbSBlbGVtZW50IFdoYXQgZWxlbWVudCB0byByZW1vdmUuCi0gICAgIyBAZXhjZXB0aW9uIFZhbHVlRXJyb3IgSWYgYSBtYXRjaGluZyBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC4KKyAgICBkZWYgcmVtb3ZlKHNlbGYsIHN1YmVsZW1lbnQpOgorICAgICAgICAiIiJSZW1vdmUgbWF0Y2hpbmcgc3ViZWxlbWVudC4KIAotICAgIGRlZiByZW1vdmUoc2VsZiwgZWxlbWVudCk6CisgICAgICAgIFVubGlrZSB0aGUgZmluZCBtZXRob2RzLCB0aGlzIG1ldGhvZCBjb21wYXJlcyBlbGVtZW50cyBiYXNlZCBvbgorICAgICAgICBpZGVudGl0eSwgTk9UIE9OIHRhZyB2YWx1ZSBvciBjb250ZW50cy4gIFRvIHJlbW92ZSBzdWJlbGVtZW50cyBieQorICAgICAgICBvdGhlciBtZWFucywgdGhlIGVhc2llc3Qgd2F5IGlzIHRvIHVzZSBhIGxpc3QgY29tcHJlaGVuc2lvbiB0bworICAgICAgICBzZWxlY3Qgd2hhdCBlbGVtZW50cyB0byBrZWVwLCBhbmQgdGhlbiB1c2Ugc2xpY2UgYXNzaWdubWVudCB0byB1cGRhdGUKKyAgICAgICAgdGhlIHBhcmVudCBlbGVtZW50LgorCisgICAgICAgIFZhbHVlRXJyb3IgaXMgcmFpc2VkIGlmIGEgbWF0Y2hpbmcgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQuCisKKyAgICAgICAgIiIiCiAgICAgICAgICMgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQotICAgICAgICBzZWxmLl9jaGlsZHJlbi5yZW1vdmUoZWxlbWVudCkKLQotICAgICMjCi0gICAgIyAoRGVwcmVjYXRlZCkgUmV0dXJucyBhbGwgc3ViZWxlbWVudHMuICBUaGUgZWxlbWVudHMgYXJlIHJldHVybmVkCi0gICAgIyBpbiBkb2N1bWVudCBvcmRlci4KLSAgICAjCi0gICAgIyBAcmV0dXJuIEEgbGlzdCBvZiBzdWJlbGVtZW50cy4KLSAgICAjIEBkZWZyZXR1cm4gbGlzdCBvZiBFbGVtZW50IGluc3RhbmNlcworICAgICAgICBzZWxmLl9jaGlsZHJlbi5yZW1vdmUoc3ViZWxlbWVudCkKIAogICAgIGRlZiBnZXRjaGlsZHJlbihzZWxmKToKKyAgICAgICAgIiIiKERlcHJlY2F0ZWQpIFJldHVybiBhbGwgc3ViZWxlbWVudHMuCisKKyAgICAgICAgRWxlbWVudHMgYXJlIHJldHVybmVkIGluIGRvY3VtZW50IG9yZGVyLgorCisgICAgICAgICIiIgogICAgICAgICB3YXJuaW5ncy53YXJuKAogICAgICAgICAgICAgIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCiAgICAgICAgICAgICAiVXNlICdsaXN0KGVsZW0pJyBvciBpdGVyYXRpb24gb3ZlciBlbGVtIGluc3RlYWQuIiwKQEAgLTMzOCwxMzEgKzI4NSwxMjggQEAKICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHNlbGYuX2NoaWxkcmVuCiAKLSAgICAjIwotICAgICMgRmluZHMgdGhlIGZpcnN0IG1hdGNoaW5nIHN1YmVsZW1lbnQsIGJ5IHRhZyBuYW1lIG9yIHBhdGguCi0gICAgIwotICAgICMgQHBhcmFtIHBhdGggV2hhdCBlbGVtZW50IHRvIGxvb2sgZm9yLgotICAgICMgQGtleXBhcmFtIG5hbWVzcGFjZXMgT3B0aW9uYWwgbmFtZXNwYWNlIHByZWZpeCBtYXAuCi0gICAgIyBAcmV0dXJuIFRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciBOb25lIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kLgotICAgICMgQGRlZnJldHVybiBFbGVtZW50IG9yIE5vbmUKLQogICAgIGRlZiBmaW5kKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBieSB0YWcgbmFtZSBvciBwYXRoLgorCisgICAgICAgICpwYXRoKiBpcyBhIHN0cmluZyBoYXZpbmcgZWl0aGVyIGFuIGVsZW1lbnQgdGFnIG9yIGFuIFhQYXRoLAorICAgICAgICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgorCisgICAgICAgIFJldHVybiB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCwgb3IgTm9uZSBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KKworICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIEVsZW1lbnRQYXRoLmZpbmQoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcykKIAotICAgICMjCi0gICAgIyBGaW5kcyB0ZXh0IGZvciB0aGUgZmlyc3QgbWF0Y2hpbmcgc3ViZWxlbWVudCwgYnkgdGFnIG5hbWUgb3IgcGF0aC4KLSAgICAjCi0gICAgIyBAcGFyYW0gcGF0aCBXaGF0IGVsZW1lbnQgdG8gbG9vayBmb3IuCi0gICAgIyBAcGFyYW0gZGVmYXVsdCBXaGF0IHRvIHJldHVybiBpZiB0aGUgZWxlbWVudCB3YXMgbm90IGZvdW5kLgotICAgICMgQGtleXBhcmFtIG5hbWVzcGFjZXMgT3B0aW9uYWwgbmFtZXNwYWNlIHByZWZpeCBtYXAuCi0gICAgIyBAcmV0dXJuIFRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQsIG9yIHRoZQotICAgICMgICAgIGRlZmF1bHQgdmFsdWUgbm8gZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIGVsZW1lbnQKLSAgICAjICAgICBpcyBmb3VuZCwgYnV0IGhhcyBubyB0ZXh0IGNvbnRlbnQsIHRoaXMgbWV0aG9kIHJldHVybnMgYW4KLSAgICAjICAgICBlbXB0eSBzdHJpbmcuCi0gICAgIyBAZGVmcmV0dXJuIHN0cmluZwotCiAgICAgZGVmIGZpbmR0ZXh0KHNlbGYsIHBhdGgsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKToKKyAgICAgICAgIiIiRmluZCB0ZXh0IGZvciBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGJ5IHRhZyBuYW1lIG9yIHBhdGguCisKKyAgICAgICAgKnBhdGgqIGlzIGEgc3RyaW5nIGhhdmluZyBlaXRoZXIgYW4gZWxlbWVudCB0YWcgb3IgYW4gWFBhdGgsCisgICAgICAgICpkZWZhdWx0KiBpcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgZm91bmQsCisgICAgICAgICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCisKKyAgICAgICAgUmV0dXJuIHRleHQgY29udGVudCBvZiBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciBkZWZhdWx0IHZhbHVlIGlmCisgICAgICAgIG5vbmUgd2FzIGZvdW5kLiAgTm90ZSB0aGF0IGlmIGFuIGVsZW1lbnQgaXMgZm91bmQgaGF2aW5nIG5vIHRleHQKKyAgICAgICAgY29udGVudCwgdGhlIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KKworICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIEVsZW1lbnRQYXRoLmZpbmR0ZXh0KHNlbGYsIHBhdGgsIGRlZmF1bHQsIG5hbWVzcGFjZXMpCiAKLSAgICAjIwotICAgICMgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLgotICAgICMKLSAgICAjIEBwYXJhbSBwYXRoIFdoYXQgZWxlbWVudCB0byBsb29rIGZvci4KLSAgICAjIEBrZXlwYXJhbSBuYW1lc3BhY2VzIE9wdGlvbmFsIG5hbWVzcGFjZSBwcmVmaXggbWFwLgotICAgICMgQHJldHVybiBBIGxpc3Qgb3Igb3RoZXIgc2VxdWVuY2UgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMsCi0gICAgIyAgICBpbiBkb2N1bWVudCBvcmRlci4KLSAgICAjIEBkZWZyZXR1cm4gbGlzdCBvZiBFbGVtZW50IGluc3RhbmNlcwotCiAgICAgZGVmIGZpbmRhbGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKToKKyAgICAgICAgIiIiRmluZCBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMgYnkgdGFnIG5hbWUgb3IgcGF0aC4KKworICAgICAgICAqcGF0aCogaXMgYSBzdHJpbmcgaGF2aW5nIGVpdGhlciBhbiBlbGVtZW50IHRhZyBvciBhbiBYUGF0aCwKKyAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KKworICAgICAgICBSZXR1cm5zIGxpc3QgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBFbGVtZW50UGF0aC5maW5kYWxsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpCiAKLSAgICAjIwotICAgICMgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLgotICAgICMKLSAgICAjIEBwYXJhbSBwYXRoIFdoYXQgZWxlbWVudCB0byBsb29rIGZvci4KLSAgICAjIEBrZXlwYXJhbSBuYW1lc3BhY2VzIE9wdGlvbmFsIG5hbWVzcGFjZSBwcmVmaXggbWFwLgotICAgICMgQHJldHVybiBBbiBpdGVyYXRvciBvciBzZXF1ZW5jZSBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cywKLSAgICAjICAgIGluIGRvY3VtZW50IG9yZGVyLgotICAgICMgQGRlZnJldHVybiBhIGdlbmVyYXRlZCBzZXF1ZW5jZSBvZiBFbGVtZW50IGluc3RhbmNlcwotCiAgICAgZGVmIGl0ZXJmaW5kKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzIGJ5IHRhZyBuYW1lIG9yIHBhdGguCisKKyAgICAgICAgKnBhdGgqIGlzIGEgc3RyaW5nIGhhdmluZyBlaXRoZXIgYW4gZWxlbWVudCB0YWcgb3IgYW4gWFBhdGgsCisgICAgICAgICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCisKKyAgICAgICAgUmV0dXJuIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKworICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIEVsZW1lbnRQYXRoLml0ZXJmaW5kKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpCiAKLSAgICAjIwotICAgICMgUmVzZXRzIGFuIGVsZW1lbnQuICBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYWxsIHN1YmVsZW1lbnRzLCBjbGVhcnMKLSAgICAjIGFsbCBhdHRyaWJ1dGVzLCBhbmQgc2V0cyB0aGUgPGI+dGV4dDwvYj4gYW5kIDxiPnRhaWw8L2I+IGF0dHJpYnV0ZXMKLSAgICAjIHRvIE5vbmUuCi0KICAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgICIiIlJlc2V0IGVsZW1lbnQuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiByZW1vdmVzIGFsbCBzdWJlbGVtZW50cywgY2xlYXJzIGFsbCBhdHRyaWJ1dGVzLCBhbmQgc2V0cworICAgICAgICB0aGUgdGV4dCBhbmQgdGFpbCBhdHRyaWJ1dGVzIHRvIE5vbmUuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXR0cmliLmNsZWFyKCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSBbXQogICAgICAgICBzZWxmLnRleHQgPSBzZWxmLnRhaWwgPSBOb25lCiAKLSAgICAjIwotICAgICMgR2V0cyBhbiBlbGVtZW50IGF0dHJpYnV0ZS4gIEVxdWl2YWxlbnQgdG8gPGI+YXR0cmliLmdldDwvYj4sIGJ1dAotICAgICMgc29tZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGhhbmRsZSB0aGlzIGEgYml0IG1vcmUgZWZmaWNpZW50bHkuCi0gICAgIwotICAgICMgQHBhcmFtIGtleSBXaGF0IGF0dHJpYnV0ZSB0byBsb29rIGZvci4KLSAgICAjIEBwYXJhbSBkZWZhdWx0IFdoYXQgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgd2FzIG5vdCBmb3VuZC4KLSAgICAjIEByZXR1cm4gVGhlIGF0dHJpYnV0ZSB2YWx1ZSwgb3IgdGhlIGRlZmF1bHQgdmFsdWUsIGlmIHRoZQotICAgICMgICAgIGF0dHJpYnV0ZSB3YXMgbm90IGZvdW5kLgotICAgICMgQGRlZnJldHVybiBzdHJpbmcgb3IgTm9uZQotCiAgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICIiIkdldCBlbGVtZW50IGF0dHJpYnV0ZS4KKworICAgICAgICBFcXVpdmFsZW50IHRvIGF0dHJpYi5nZXQsIGJ1dCBzb21lIGltcGxlbWVudGF0aW9ucyBtYXkgaGFuZGxlIHRoaXMgYQorICAgICAgICBiaXQgbW9yZSBlZmZpY2llbnRseS4gICprZXkqIGlzIHdoYXQgYXR0cmlidXRlIHRvIGxvb2sgZm9yLCBhbmQKKyAgICAgICAgKmRlZmF1bHQqIGlzIHdoYXQgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgd2FzIG5vdCBmb3VuZC4KKworICAgICAgICBSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGF0dHJpYnV0ZSB2YWx1ZSwgb3IgdGhlIGRlZmF1bHQgaWYKKyAgICAgICAgYXR0cmlidXRlIHdhcyBub3QgZm91bmQuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmF0dHJpYi5nZXQoa2V5LCBkZWZhdWx0KQogCi0gICAgIyMKLSAgICAjIFNldHMgYW4gZWxlbWVudCBhdHRyaWJ1dGUuICBFcXVpdmFsZW50IHRvIDxiPmF0dHJpYltrZXldID0gdmFsdWU8L2I+LAotICAgICMgYnV0IHNvbWUgaW1wbGVtZW50YXRpb25zIG1heSBoYW5kbGUgdGhpcyBhIGJpdCBtb3JlIGVmZmljaWVudGx5LgotICAgICMKLSAgICAjIEBwYXJhbSBrZXkgV2hhdCBhdHRyaWJ1dGUgdG8gc2V0LgotICAgICMgQHBhcmFtIHZhbHVlIFRoZSBhdHRyaWJ1dGUgdmFsdWUuCi0KICAgICBkZWYgc2V0KHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAiIiJTZXQgZWxlbWVudCBhdHRyaWJ1dGUuCisKKyAgICAgICAgRXF1aXZhbGVudCB0byBhdHRyaWJba2V5XSA9IHZhbHVlLCBidXQgc29tZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGhhbmRsZQorICAgICAgICB0aGlzIGEgYml0IG1vcmUgZWZmaWNpZW50bHkuICAqa2V5KiBpcyB3aGF0IGF0dHJpYnV0ZSB0byBzZXQsIGFuZAorICAgICAgICAqdmFsdWUqIGlzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgdG8gc2V0IGl0IHRvLgorCisgICAgICAgICIiIgogICAgICAgICBzZWxmLmF0dHJpYltrZXldID0gdmFsdWUKIAotICAgICMjCi0gICAgIyBHZXRzIGEgbGlzdCBvZiBhdHRyaWJ1dGUgbmFtZXMuICBUaGUgbmFtZXMgYXJlIHJldHVybmVkIGluIGFuCi0gICAgIyBhcmJpdHJhcnkgb3JkZXIgKGp1c3QgbGlrZSBmb3IgYW4gb3JkaW5hcnkgUHl0aG9uIGRpY3Rpb25hcnkpLgotICAgICMgRXF1aXZhbGVudCB0byA8Yj5hdHRyaWIua2V5cygpPC9iPi4KLSAgICAjCi0gICAgIyBAcmV0dXJuIEEgbGlzdCBvZiBlbGVtZW50IGF0dHJpYnV0ZSBuYW1lcy4KLSAgICAjIEBkZWZyZXR1cm4gbGlzdCBvZiBzdHJpbmdzCi0KICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgIiIiR2V0IGxpc3Qgb2YgYXR0cmlidXRlIG5hbWVzLgorCisgICAgICAgIE5hbWVzIGFyZSByZXR1cm5lZCBpbiBhbiBhcmJpdHJhcnkgb3JkZXIsIGp1c3QgbGlrZSBhbiBvcmRpbmFyeQorICAgICAgICBQeXRob24gZGljdC4gIEVxdWl2YWxlbnQgdG8gYXR0cmliLmtleXMoKQorCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5hdHRyaWIua2V5cygpCiAKLSAgICAjIwotICAgICMgR2V0cyBlbGVtZW50IGF0dHJpYnV0ZXMsIGFzIGEgc2VxdWVuY2UuICBUaGUgYXR0cmlidXRlcyBhcmUKLSAgICAjIHJldHVybmVkIGluIGFuIGFyYml0cmFyeSBvcmRlci4gIEVxdWl2YWxlbnQgdG8gPGI+YXR0cmliLml0ZW1zKCk8L2I+LgotICAgICMKLSAgICAjIEByZXR1cm4gQSBsaXN0IG9mIChuYW1lLCB2YWx1ZSkgdHVwbGVzIGZvciBhbGwgYXR0cmlidXRlcy4KLSAgICAjIEBkZWZyZXR1cm4gbGlzdCBvZiAoc3RyaW5nLCBzdHJpbmcpIHR1cGxlcwotCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAiIiJHZXQgZWxlbWVudCBhdHRyaWJ1dGVzIGFzIGEgc2VxdWVuY2UuCisKKyAgICAgICAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkIGluIGFyYml0cmFyeSBvcmRlci4gIEVxdWl2YWxlbnQgdG8KKyAgICAgICAgYXR0cmliLml0ZW1zKCkuCisKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiAobmFtZSwgdmFsdWUpIHR1cGxlcy4KKworICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuYXR0cmliLml0ZW1zKCkKIAotICAgICMjCi0gICAgIyBDcmVhdGVzIGEgdHJlZSBpdGVyYXRvci4gIFRoZSBpdGVyYXRvciBsb29wcyBvdmVyIHRoaXMgZWxlbWVudAotICAgICMgYW5kIGFsbCBzdWJlbGVtZW50cywgaW4gZG9jdW1lbnQgb3JkZXIsIGFuZCByZXR1cm5zIGFsbCBlbGVtZW50cwotICAgICMgd2l0aCBhIG1hdGNoaW5nIHRhZy4KLSAgICAjIDxwPgotICAgICMgSWYgdGhlIHRyZWUgc3RydWN0dXJlIGlzIG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24sIG5ldyBvciByZW1vdmVkCi0gICAgIyBlbGVtZW50cyBtYXkgb3IgbWF5IG5vdCBiZSBpbmNsdWRlZC4gIFRvIGdldCBhIHN0YWJsZSBzZXQsIHVzZSB0aGUKLSAgICAjIGxpc3QoKSBmdW5jdGlvbiBvbiB0aGUgaXRlcmF0b3IsIGFuZCBsb29wIG92ZXIgdGhlIHJlc3VsdGluZyBsaXN0LgotICAgICMKLSAgICAjIEBwYXJhbSB0YWcgV2hhdCB0YWdzIHRvIGxvb2sgZm9yIChkZWZhdWx0IGlzIHRvIHJldHVybiBhbGwgZWxlbWVudHMpLgotICAgICMgQHJldHVybiBBbiBpdGVyYXRvciBjb250YWluaW5nIGFsbCB0aGUgbWF0Y2hpbmcgZWxlbWVudHMuCi0gICAgIyBAZGVmcmV0dXJuIGl0ZXJhdG9yCi0KICAgICBkZWYgaXRlcihzZWxmLCB0YWc9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSB0cmVlIGl0ZXJhdG9yLgorCisgICAgICAgIFRoZSBpdGVyYXRvciBsb29wcyBvdmVyIHRoZSBlbGVtZW50IGFuZCBhbGwgc3ViZWxlbWVudHMgaW4gZG9jdW1lbnQKKyAgICAgICAgb3JkZXIsIHJldHVybmluZyBhbGwgZWxlbWVudHMgd2l0aCBhIG1hdGNoaW5nIHRhZy4KKworICAgICAgICBJZiB0aGUgdHJlZSBzdHJ1Y3R1cmUgaXMgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbiwgbmV3IG9yIHJlbW92ZWQKKyAgICAgICAgZWxlbWVudHMgbWF5IG9yIG1heSBub3QgYmUgaW5jbHVkZWQuICBUbyBnZXQgYSBzdGFibGUgc2V0LCB1c2UgdGhlCisgICAgICAgIGxpc3QoKSBmdW5jdGlvbiBvbiB0aGUgaXRlcmF0b3IsIGFuZCBsb29wIG92ZXIgdGhlIHJlc3VsdGluZyBsaXN0LgorCisgICAgICAgICp0YWcqIGlzIHdoYXQgdGFncyB0byBsb29rIGZvciAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKQorCisgICAgICAgIFJldHVybiBhbiBpdGVyYXRvciBjb250YWluaW5nIGFsbCB0aGUgbWF0Y2hpbmcgZWxlbWVudHMuCisKKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHRhZyA9PSAiKiI6CiAgICAgICAgICAgICB0YWcgPSBOb25lCiAgICAgICAgIGlmIHRhZyBpcyBOb25lIG9yIHNlbGYudGFnID09IHRhZzoKICAgICAgICAgICAgIHlpZWxkIHNlbGYKICAgICAgICAgZm9yIGUgaW4gc2VsZi5fY2hpbGRyZW46Ci0gICAgICAgICAgICBmb3IgZSBpbiBlLml0ZXIodGFnKToKLSAgICAgICAgICAgICAgICB5aWVsZCBlCisgICAgICAgICAgICB5aWVsZCBmcm9tIGUuaXRlcih0YWcpCiAKICAgICAjIGNvbXBhdGliaWxpdHkKICAgICBkZWYgZ2V0aXRlcmF0b3Ioc2VsZiwgdGFnPU5vbmUpOgpAQCAtNDc0LDc4ICs0MTgsNjcgQEAKICAgICAgICAgKQogICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXIodGFnKSkKIAotICAgICMjCi0gICAgIyBDcmVhdGVzIGEgdGV4dCBpdGVyYXRvci4gIFRoZSBpdGVyYXRvciBsb29wcyBvdmVyIHRoaXMgZWxlbWVudAotICAgICMgYW5kIGFsbCBzdWJlbGVtZW50cywgaW4gZG9jdW1lbnQgb3JkZXIsIGFuZCByZXR1cm5zIGFsbCBpbm5lcgotICAgICMgdGV4dC4KLSAgICAjCi0gICAgIyBAcmV0dXJuIEFuIGl0ZXJhdG9yIGNvbnRhaW5pbmcgYWxsIGlubmVyIHRleHQuCi0gICAgIyBAZGVmcmV0dXJuIGl0ZXJhdG9yCi0KICAgICBkZWYgaXRlcnRleHQoc2VsZik6CisgICAgICAgICIiIkNyZWF0ZSB0ZXh0IGl0ZXJhdG9yLgorCisgICAgICAgIFRoZSBpdGVyYXRvciBsb29wcyBvdmVyIHRoZSBlbGVtZW50IGFuZCBhbGwgc3ViZWxlbWVudHMgaW4gZG9jdW1lbnQKKyAgICAgICAgb3JkZXIsIHJldHVybmluZyBhbGwgaW5uZXIgdGV4dC4KKworICAgICAgICAiIiIKICAgICAgICAgdGFnID0gc2VsZi50YWcKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFnLCBzdHIpIGFuZCB0YWcgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgc2VsZi50ZXh0OgogICAgICAgICAgICAgeWllbGQgc2VsZi50ZXh0CiAgICAgICAgIGZvciBlIGluIHNlbGY6Ci0gICAgICAgICAgICBmb3IgcyBpbiBlLml0ZXJ0ZXh0KCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgeWllbGQgZnJvbSBlLml0ZXJ0ZXh0KCkKICAgICAgICAgICAgIGlmIGUudGFpbDoKICAgICAgICAgICAgICAgICB5aWVsZCBlLnRhaWwKIAotIyBjb21wYXRpYmlsaXR5Ci1fRWxlbWVudCA9IF9FbGVtZW50SW50ZXJmYWNlID0gRWxlbWVudAotCi0jIwotIyBTdWJlbGVtZW50IGZhY3RvcnkuICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW4gZWxlbWVudCBpbnN0YW5jZSwgYW5kCi0jIGFwcGVuZHMgaXQgdG8gYW4gZXhpc3RpbmcgZWxlbWVudC4KLSMgPHA+Ci0jIFRoZSBlbGVtZW50IG5hbWUsIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGF0dHJpYnV0ZSB2YWx1ZXMgY2FuIGJlCi0jIGVpdGhlciA4LWJpdCBBU0NJSSBzdHJpbmdzIG9yIFVuaWNvZGUgc3RyaW5ncy4KLSMKLSMgQHBhcmFtIHBhcmVudCBUaGUgcGFyZW50IGVsZW1lbnQuCi0jIEBwYXJhbSB0YWcgVGhlIHN1YmVsZW1lbnQgbmFtZS4KLSMgQHBhcmFtIGF0dHJpYiBBbiBvcHRpb25hbCBkaWN0aW9uYXJ5LCBjb250YWluaW5nIGVsZW1lbnQgYXR0cmlidXRlcy4KLSMgQHBhcmFtICoqZXh0cmEgQWRkaXRpb25hbCBhdHRyaWJ1dGVzLCBnaXZlbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KLSMgQHJldHVybiBBbiBlbGVtZW50IGluc3RhbmNlLgotIyBAZGVmcmV0dXJuIEVsZW1lbnQKIAogZGVmIFN1YkVsZW1lbnQocGFyZW50LCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgIiIiU3ViZWxlbWVudCBmYWN0b3J5IHdoaWNoIGNyZWF0ZXMgYW4gZWxlbWVudCBpbnN0YW5jZSwgYW5kIGFwcGVuZHMgaXQKKyAgICB0byBhbiBleGlzdGluZyBwYXJlbnQuCisKKyAgICBUaGUgZWxlbWVudCB0YWcsIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGF0dHJpYnV0ZSB2YWx1ZXMgY2FuIGJlIGVpdGhlcgorICAgIGJ5dGVzIG9yIFVuaWNvZGUgc3RyaW5ncy4KKworICAgICpwYXJlbnQqIGlzIHRoZSBwYXJlbnQgZWxlbWVudCwgKnRhZyogaXMgdGhlIHN1YmVsZW1lbnRzIG5hbWUsICphdHRyaWIqIGlzCisgICAgYW4gb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgZWxlbWVudCBhdHRyaWJ1dGVzLCAqZXh0cmEqIGFyZQorICAgIGFkZGl0aW9uYWwgYXR0cmlidXRlcyBnaXZlbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgICIiIgogICAgIGF0dHJpYiA9IGF0dHJpYi5jb3B5KCkKICAgICBhdHRyaWIudXBkYXRlKGV4dHJhKQogICAgIGVsZW1lbnQgPSBwYXJlbnQubWFrZWVsZW1lbnQodGFnLCBhdHRyaWIpCiAgICAgcGFyZW50LmFwcGVuZChlbGVtZW50KQogICAgIHJldHVybiBlbGVtZW50CiAKLSMjCi0jIENvbW1lbnQgZWxlbWVudCBmYWN0b3J5LiAgVGhpcyBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgYSBzcGVjaWFsCi0jIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYXMgYW4gWE1MIGNvbW1lbnQgYnkgdGhlIHN0YW5kYXJkCi0jIHNlcmlhbGl6ZXIuCi0jIDxwPgotIyBUaGUgY29tbWVudCBzdHJpbmcgY2FuIGJlIGVpdGhlciBhbiA4LWJpdCBBU0NJSSBzdHJpbmcgb3IgYSBVbmljb2RlCi0jIHN0cmluZy4KLSMKLSMgQHBhcmFtIHRleHQgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgY29tbWVudCBzdHJpbmcuCi0jIEByZXR1cm4gQW4gZWxlbWVudCBpbnN0YW5jZSwgcmVwcmVzZW50aW5nIGEgY29tbWVudC4KLSMgQGRlZnJldHVybiBFbGVtZW50CiAKIGRlZiBDb21tZW50KHRleHQ9Tm9uZSk6CisgICAgIiIiQ29tbWVudCBlbGVtZW50IGZhY3RvcnkuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzcGVjaWFsIGVsZW1lbnQgd2hpY2ggdGhlIHN0YW5kYXJkIHNlcmlhbGl6ZXIKKyAgICBzZXJpYWxpemVzIGFzIGFuIFhNTCBjb21tZW50LgorCisgICAgKnRleHQqIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbW1lbnQgc3RyaW5nLgorCisgICAgIiIiCiAgICAgZWxlbWVudCA9IEVsZW1lbnQoQ29tbWVudCkKICAgICBlbGVtZW50LnRleHQgPSB0ZXh0CiAgICAgcmV0dXJuIGVsZW1lbnQKIAotIyMKLSMgUEkgZWxlbWVudCBmYWN0b3J5LiAgVGhpcyBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgYSBzcGVjaWFsIGVsZW1lbnQKLSMgdGhhdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYXMgYW4gWE1MIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gYnkgdGhlIHN0YW5kYXJkCi0jIHNlcmlhbGl6ZXIuCi0jCi0jIEBwYXJhbSB0YXJnZXQgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgUEkgdGFyZ2V0LgotIyBAcGFyYW0gdGV4dCBBIHN0cmluZyBjb250YWluaW5nIHRoZSBQSSBjb250ZW50cywgaWYgYW55LgotIyBAcmV0dXJuIEFuIGVsZW1lbnQgaW5zdGFuY2UsIHJlcHJlc2VudGluZyBhIFBJLgotIyBAZGVmcmV0dXJuIEVsZW1lbnQKIAogZGVmIFByb2Nlc3NpbmdJbnN0cnVjdGlvbih0YXJnZXQsIHRleHQ9Tm9uZSk6CisgICAgIiIiUHJvY2Vzc2luZyBJbnN0cnVjdGlvbiBlbGVtZW50IGZhY3RvcnkuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzcGVjaWFsIGVsZW1lbnQgd2hpY2ggdGhlIHN0YW5kYXJkIHNlcmlhbGl6ZXIKKyAgICBzZXJpYWxpemVzIGFzIGFuIFhNTCBjb21tZW50LgorCisgICAgKnRhcmdldCogaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiwgKnRleHQqIGlzIGEKKyAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBjb250ZW50cywgaWYgYW55LgorCisgICAgIiIiCiAgICAgZWxlbWVudCA9IEVsZW1lbnQoUHJvY2Vzc2luZ0luc3RydWN0aW9uKQogICAgIGVsZW1lbnQudGV4dCA9IHRhcmdldAogICAgIGlmIHRleHQ6CkBAIC01NTQsMTcgKzQ4NywyMSBAQAogCiBQSSA9IFByb2Nlc3NpbmdJbnN0cnVjdGlvbgogCi0jIwotIyBRTmFtZSB3cmFwcGVyLiAgVGhpcyBjYW4gYmUgdXNlZCB0byB3cmFwIGEgUU5hbWUgYXR0cmlidXRlIHZhbHVlLCBpbgotIyBvcmRlciB0byBnZXQgcHJvcGVyIG5hbWVzcGFjZSBoYW5kbGluZyBvbiBvdXRwdXQuCi0jCi0jIEBwYXJhbSB0ZXh0IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFFOYW1lIHZhbHVlLCBpbiB0aGUgZm9ybSB7dXJpfWxvY2FsLAotIyAgICAgb3IsIGlmIHRoZSB0YWcgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBVUkkgcGFydCBvZiBhIFFOYW1lLgotIyBAcGFyYW0gdGFnIE9wdGlvbmFsIHRhZy4gIElmIGdpdmVuLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgaW50ZXJwcmV0ZWQgYXMKLSMgICAgIGFuIFVSSSwgYW5kIHRoaXMgYXJndW1lbnQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBsb2NhbCBuYW1lLgotIyBAcmV0dXJuIEFuIG9wYXF1ZSBvYmplY3QsIHJlcHJlc2VudGluZyB0aGUgUU5hbWUuCiAKIGNsYXNzIFFOYW1lOgorICAgICIiIlF1YWxpZmllZCBuYW1lIHdyYXBwZXIuCisKKyAgICBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIHRvIHdyYXAgYSBRTmFtZSBhdHRyaWJ1dGUgdmFsdWUgaW4gb3JkZXIgdG8gZ2V0CisgICAgcHJvcGVyIG5hbWVzcGFjZSBoYW5kaW5nIG9uIG91dHB1dC4KKworICAgICp0ZXh0X29yX3VyaSogaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgUU5hbWUgdmFsdWUgZWl0aGVyIGluIHRoZSBmb3JtCisgICAge3VyaX1sb2NhbCwgb3IgaWYgdGhlIHRhZyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIFVSSSBwYXJ0IG9mIGEgUU5hbWUuCisKKyAgICAqdGFnKiBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBpZiBnaXZlbiwgd2lsbCBtYWtlIHRoZSBmaXJzdAorICAgIGFyZ3VtZW50ICh0ZXh0X29yX3VyaSkgYmUgaW50ZXJwcmV0ZWQgYXMgYSBVUkksIGFuZCB0aGlzIGFyZ3VtZW50ICh0YWcpCisgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBsb2NhbCBuYW1lLgorCisgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHRfb3JfdXJpLCB0YWc9Tm9uZSk6CiAgICAgICAgIGlmIHRhZzoKICAgICAgICAgICAgIHRleHRfb3JfdXJpID0gInslc30lcyIgJSAodGV4dF9vcl91cmksIHRhZykKQEAgLTYwMiw2MyArNTM5LDY1IEBACiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotIyMKLSMgRWxlbWVudFRyZWUgd3JhcHBlciBjbGFzcy4gIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbiBlbnRpcmUgZWxlbWVudAotIyBoaWVyYXJjaHksIGFuZCBhZGRzIHNvbWUgZXh0cmEgc3VwcG9ydCBmb3Igc2VyaWFsaXphdGlvbiB0byBhbmQgZnJvbQotIyBzdGFuZGFyZCBYTUwuCi0jCi0jIEBwYXJhbSBlbGVtZW50IE9wdGlvbmFsIHJvb3QgZWxlbWVudC4KLSMgQGtleXBhcmFtIGZpbGUgT3B0aW9uYWwgZmlsZSBoYW5kbGUgb3IgZmlsZSBuYW1lLiAgSWYgZ2l2ZW4sIHRoZQotIyAgICAgdHJlZSBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGlzIFhNTCBmaWxlLgogCiBjbGFzcyBFbGVtZW50VHJlZToKKyAgICAiIiJBbiBYTUwgZWxlbWVudCBoaWVyYXJjaHkuCiAKKyAgICBUaGlzIGNsYXNzIGFsc28gcHJvdmlkZXMgc3VwcG9ydCBmb3Igc2VyaWFsaXphdGlvbiB0byBhbmQgZnJvbQorICAgIHN0YW5kYXJkIFhNTC4KKworICAgICplbGVtZW50KiBpcyBhbiBvcHRpb25hbCByb290IGVsZW1lbnQgbm9kZSwKKyAgICAqZmlsZSogaXMgYW4gb3B0aW9uYWwgZmlsZSBoYW5kbGUgb3IgZmlsZSBuYW1lIG9mIGFuIFhNTCBmaWxlIHdob3NlCisgICAgY29udGVudHMgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHRyZWUgd2l0aC4KKworICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbGVtZW50PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgICMgYXNzZXJ0IGVsZW1lbnQgaXMgTm9uZSBvciBpc2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fcm9vdCA9IGVsZW1lbnQgIyBmaXJzdCBub2RlCiAgICAgICAgIGlmIGZpbGU6CiAgICAgICAgICAgICBzZWxmLnBhcnNlKGZpbGUpCiAKLSAgICAjIwotICAgICMgR2V0cyB0aGUgcm9vdCBlbGVtZW50IGZvciB0aGlzIHRyZWUuCi0gICAgIwotICAgICMgQHJldHVybiBBbiBlbGVtZW50IGluc3RhbmNlLgotICAgICMgQGRlZnJldHVybiBFbGVtZW50Ci0KICAgICBkZWYgZ2V0cm9vdChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHJvb3QgZWxlbWVudCBvZiB0aGlzIHRyZWUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9yb290CiAKLSAgICAjIwotICAgICMgUmVwbGFjZXMgdGhlIHJvb3QgZWxlbWVudCBmb3IgdGhpcyB0cmVlLiAgVGhpcyBkaXNjYXJkcyB0aGUKLSAgICAjIGN1cnJlbnQgY29udGVudHMgb2YgdGhlIHRyZWUsIGFuZCByZXBsYWNlcyBpdCB3aXRoIHRoZSBnaXZlbgotICAgICMgZWxlbWVudC4gIFVzZSB3aXRoIGNhcmUuCi0gICAgIwotICAgICMgQHBhcmFtIGVsZW1lbnQgQW4gZWxlbWVudCBpbnN0YW5jZS4KLQogICAgIGRlZiBfc2V0cm9vdChzZWxmLCBlbGVtZW50KToKKyAgICAgICAgIiIiUmVwbGFjZSByb290IGVsZW1lbnQgb2YgdGhpcyB0cmVlLgorCisgICAgICAgIFRoaXMgd2lsbCBkaXNjYXJkIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZSB0cmVlIGFuZCByZXBsYWNlIGl0CisgICAgICAgIHdpdGggdGhlIGdpdmVuIGVsZW1lbnQuICBVc2Ugd2l0aCBjYXJlIQorCisgICAgICAgICIiIgogICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fcm9vdCA9IGVsZW1lbnQKIAotICAgICMjCi0gICAgIyBMb2FkcyBhbiBleHRlcm5hbCBYTUwgZG9jdW1lbnQgaW50byB0aGlzIGVsZW1lbnQgdHJlZS4KLSAgICAjCi0gICAgIyBAcGFyYW0gc291cmNlIEEgZmlsZSBuYW1lIG9yIGZpbGUgb2JqZWN0LiAgSWYgYSBmaWxlIG9iamVjdCBpcwotICAgICMgICAgIGdpdmVuLCBpdCBvbmx5IGhhcyB0byBpbXBsZW1lbnQgYSA8Yj5yZWFkKG4pPC9iPiBtZXRob2QuCi0gICAgIyBAa2V5cGFyYW0gcGFyc2VyIEFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4gIElmIG5vdCBnaXZlbiwgdGhlCi0gICAgIyAgICAgc3RhbmRhcmQge0BsaW5rIFhNTFBhcnNlcn0gcGFyc2VyIGlzIHVzZWQuCi0gICAgIyBAcmV0dXJuIFRoZSBkb2N1bWVudCByb290IGVsZW1lbnQuCi0gICAgIyBAZGVmcmV0dXJuIEVsZW1lbnQKLSAgICAjIEBleGNlcHRpb24gUGFyc2VFcnJvciBJZiB0aGUgcGFyc2VyIGZhaWxzIHRvIHBhcnNlIHRoZSBkb2N1bWVudC4KLQogICAgIGRlZiBwYXJzZShzZWxmLCBzb3VyY2UsIHBhcnNlcj1Ob25lKToKKyAgICAgICAgIiIiTG9hZCBleHRlcm5hbCBYTUwgZG9jdW1lbnQgaW50byBlbGVtZW50IHRyZWUuCisKKyAgICAgICAgKnNvdXJjZSogaXMgYSBmaWxlIG5hbWUgb3IgZmlsZSBvYmplY3QsICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlcgorICAgICAgICBpbnN0YW5jZSB0aGF0IGRlZmF1bHRzIHRvIFhNTFBhcnNlci4KKworICAgICAgICBQYXJzZUVycm9yIGlzIHJhaXNlZCBpZiB0aGUgcGFyc2VyIGZhaWxzIHRvIHBhcnNlIHRoZSBkb2N1bWVudC4KKworICAgICAgICBSZXR1cm5zIHRoZSByb290IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNvdXJjZSBkb2N1bWVudC4KKworICAgICAgICAiIiIKICAgICAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICAgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAicmVhZCIpOgogICAgICAgICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICJyYiIpCiAgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBwYXJzZXI6Ci0gICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQotICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIHBhcnNlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICMgSWYgbm8gcGFyc2VyIHdhcyBzcGVjaWZpZWQsIGNyZWF0ZSBhIGRlZmF1bHQgWE1MUGFyc2VyCisgICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKCkKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHBhcnNlciwgJ19wYXJzZV93aG9sZScpOgorICAgICAgICAgICAgICAgICAgICAjIFRoZSBkZWZhdWx0IFhNTFBhcnNlciwgd2hlbiBpdCBjb21lcyBmcm9tIGFuIGFjY2VsZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAjIGNhbiBkZWZpbmUgYW4gaW50ZXJuYWwgX3BhcnNlX3dob2xlIEFQSSBmb3IgZWZmaWNpZW5jeS4KKyAgICAgICAgICAgICAgICAgICAgIyBJdCBjYW4gYmUgdXNlZCB0byBwYXJzZSB0aGUgd2hvbGUgc291cmNlIHdpdGhvdXQgZmVlZGluZworICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggY2h1bmtzLgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gcGFyc2VyLl9wYXJzZV93aG9sZShzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb290CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCg2NTUzNikKICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTY2OSwxNSArNjA4LDE1IEBACiAgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6CiAgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKIAotICAgICMjCi0gICAgIyBDcmVhdGVzIGEgdHJlZSBpdGVyYXRvciBmb3IgdGhlIHJvb3QgZWxlbWVudC4gIFRoZSBpdGVyYXRvciBsb29wcwotICAgICMgb3ZlciBhbGwgZWxlbWVudHMgaW4gdGhpcyB0cmVlLCBpbiBkb2N1bWVudCBvcmRlci4KLSAgICAjCi0gICAgIyBAcGFyYW0gdGFnIFdoYXQgdGFncyB0byBsb29rIGZvciAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKQotICAgICMgQHJldHVybiBBbiBpdGVyYXRvci4KLSAgICAjIEBkZWZyZXR1cm4gaXRlcmF0b3IKLQogICAgIGRlZiBpdGVyKHNlbGYsIHRhZz1Ob25lKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuZCByZXR1cm4gdHJlZSBpdGVyYXRvciBmb3IgdGhlIHJvb3QgZWxlbWVudC4KKworICAgICAgICBUaGUgaXRlcmF0b3IgbG9vcHMgb3ZlciBhbGwgZWxlbWVudHMgaW4gdGhpcyB0cmVlLCBpbiBkb2N1bWVudCBvcmRlci4KKworICAgICAgICAqdGFnKiBpcyBhIHN0cmluZyB3aXRoIHRoZSB0YWcgbmFtZSB0byBpdGVyYXRlIG92ZXIKKyAgICAgICAgKGRlZmF1bHQgaXMgdG8gcmV0dXJuIGFsbCBlbGVtZW50cykuCisKKyAgICAgICAgIiIiCiAgICAgICAgICMgYXNzZXJ0IHNlbGYuX3Jvb3QgaXMgbm90IE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuaXRlcih0YWcpCiAKQEAgLTY5MSwxNSArNjMwLDE3IEBACiAgICAgICAgICkKICAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5pdGVyKHRhZykpCiAKLSAgICAjIwotICAgICMgU2FtZSBhcyBnZXRyb290KCkuZmluZChwYXRoKSwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCi0gICAgIwotICAgICMgQHBhcmFtIHBhdGggV2hhdCBlbGVtZW50IHRvIGxvb2sgZm9yLgotICAgICMgQGtleXBhcmFtIG5hbWVzcGFjZXMgT3B0aW9uYWwgbmFtZXNwYWNlIHByZWZpeCBtYXAuCi0gICAgIyBAcmV0dXJuIFRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciBOb25lIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kLgotICAgICMgQGRlZnJldHVybiBFbGVtZW50IG9yIE5vbmUKLQogICAgIGRlZiBmaW5kKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBieSB0YWcgbmFtZSBvciBwYXRoLgorCisgICAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmQocGF0aCksIHdoaWNoIGlzIEVsZW1lbnQuZmluZCgpCisKKyAgICAgICAgKnBhdGgqIGlzIGEgc3RyaW5nIGhhdmluZyBlaXRoZXIgYW4gZWxlbWVudCB0YWcgb3IgYW4gWFBhdGgsCisgICAgICAgICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCisKKyAgICAgICAgUmV0dXJuIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciBOb25lIGlmIG5vIGVsZW1lbnQgd2FzIGZvdW5kLgorCisgICAgICAgICIiIgogICAgICAgICAjIGFzc2VydCBzZWxmLl9yb290IGlzIG5vdCBOb25lCiAgICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgIHBhdGggPSAiLiIgKyBwYXRoCkBAIC03MTEsMTkgKzY1MiwxNyBAQAogICAgICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuZmluZChwYXRoLCBuYW1lc3BhY2VzKQogCi0gICAgIyMKLSAgICAjIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmR0ZXh0KHBhdGgpLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KLSAgICAjCi0gICAgIyBAcGFyYW0gcGF0aCBXaGF0IGVsZW1lbnQgdG8gbG9vayBmb3IuCi0gICAgIyBAcGFyYW0gZGVmYXVsdCBXaGF0IHRvIHJldHVybiBpZiB0aGUgZWxlbWVudCB3YXMgbm90IGZvdW5kLgotICAgICMgQGtleXBhcmFtIG5hbWVzcGFjZXMgT3B0aW9uYWwgbmFtZXNwYWNlIHByZWZpeCBtYXAuCi0gICAgIyBAcmV0dXJuIFRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQsIG9yIHRoZQotICAgICMgICAgIGRlZmF1bHQgdmFsdWUgbm8gZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIGVsZW1lbnQKLSAgICAjICAgICBpcyBmb3VuZCwgYnV0IGhhcyBubyB0ZXh0IGNvbnRlbnQsIHRoaXMgbWV0aG9kIHJldHVybnMgYW4KLSAgICAjICAgICBlbXB0eSBzdHJpbmcuCi0gICAgIyBAZGVmcmV0dXJuIHN0cmluZwotCiAgICAgZGVmIGZpbmR0ZXh0KHNlbGYsIHBhdGgsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKToKKyAgICAgICAgIiIiRmluZCBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGJ5IHRhZyBuYW1lIG9yIHBhdGguCisKKyAgICAgICAgU2FtZSBhcyBnZXRyb290KCkuZmluZHRleHQocGF0aCksICB3aGljaCBpcyBFbGVtZW50LmZpbmR0ZXh0KCkKKworICAgICAgICAqcGF0aCogaXMgYSBzdHJpbmcgaGF2aW5nIGVpdGhlciBhbiBlbGVtZW50IHRhZyBvciBhbiBYUGF0aCwKKyAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KKworICAgICAgICBSZXR1cm4gdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQsIG9yIE5vbmUgaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuCisKKyAgICAgICAgIiIiCiAgICAgICAgICMgYXNzZXJ0IHNlbGYuX3Jvb3QgaXMgbm90IE5vbmUKICAgICAgICAgaWYgcGF0aFs6MV0gPT0gIi8iOgogICAgICAgICAgICAgcGF0aCA9ICIuIiArIHBhdGgKQEAgLTczNSwxNiArNjc0LDE3IEBACiAgICAgICAgICAgICAgICAgKQogICAgICAgICByZXR1cm4gc2VsZi5fcm9vdC5maW5kdGV4dChwYXRoLCBkZWZhdWx0LCBuYW1lc3BhY2VzKQogCi0gICAgIyMKLSAgICAjIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmRhbGwocGF0aCksIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgotICAgICMKLSAgICAjIEBwYXJhbSBwYXRoIFdoYXQgZWxlbWVudCB0byBsb29rIGZvci4KLSAgICAjIEBrZXlwYXJhbSBuYW1lc3BhY2VzIE9wdGlvbmFsIG5hbWVzcGFjZSBwcmVmaXggbWFwLgotICAgICMgQHJldHVybiBBIGxpc3Qgb3IgaXRlcmF0b3IgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMsCi0gICAgIyAgICBpbiBkb2N1bWVudCBvcmRlci4KLSAgICAjIEBkZWZyZXR1cm4gbGlzdCBvZiBFbGVtZW50IGluc3RhbmNlcwotCiAgICAgZGVmIGZpbmRhbGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKToKKyAgICAgICAgIiIiRmluZCBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMgYnkgdGFnIG5hbWUgb3IgcGF0aC4KKworICAgICAgICBTYW1lIGFzIGdldHJvb3QoKS5maW5kYWxsKHBhdGgpLCB3aGljaCBpcyBFbGVtZW50LmZpbmRhbGwoKS4KKworICAgICAgICAqcGF0aCogaXMgYSBzdHJpbmcgaGF2aW5nIGVpdGhlciBhbiBlbGVtZW50IHRhZyBvciBhbiBYUGF0aCwKKyAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KKworICAgICAgICBSZXR1cm4gbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKworICAgICAgICAiIiIKICAgICAgICAgIyBhc3NlcnQgc2VsZi5fcm9vdCBpcyBub3QgTm9uZQogICAgICAgICBpZiBwYXRoWzoxXSA9PSAiLyI6CiAgICAgICAgICAgICBwYXRoID0gIi4iICsgcGF0aApAQCAtNzU2LDE3ICs2OTYsMTcgQEAKICAgICAgICAgICAgICAgICApCiAgICAgICAgIHJldHVybiBzZWxmLl9yb290LmZpbmRhbGwocGF0aCwgbmFtZXNwYWNlcykKIAotICAgICMjCi0gICAgIyBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguCi0gICAgIyBTYW1lIGFzIGdldHJvb3QoKS5pdGVyZmluZChwYXRoKS4KLSAgICAjCi0gICAgIyBAcGFyYW0gcGF0aCBXaGF0IGVsZW1lbnQgdG8gbG9vayBmb3IuCi0gICAgIyBAa2V5cGFyYW0gbmFtZXNwYWNlcyBPcHRpb25hbCBuYW1lc3BhY2UgcHJlZml4IG1hcC4KLSAgICAjIEByZXR1cm4gQW4gaXRlcmF0b3Igb3Igc2VxdWVuY2UgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMsCi0gICAgIyAgICBpbiBkb2N1bWVudCBvcmRlci4KLSAgICAjIEBkZWZyZXR1cm4gYSBnZW5lcmF0ZWQgc2VxdWVuY2Ugb2YgRWxlbWVudCBpbnN0YW5jZXMKLQogICAgIGRlZiBpdGVyZmluZChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzPU5vbmUpOgorICAgICAgICAiIiJGaW5kIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cyBieSB0YWcgbmFtZSBvciBwYXRoLgorCisgICAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLml0ZXJmaW5kKHBhdGgpLCB3aGljaCBpcyBlbGVtZW50Lml0ZXJmaW5kKCkKKworICAgICAgICAqcGF0aCogaXMgYSBzdHJpbmcgaGF2aW5nIGVpdGhlciBhbiBlbGVtZW50IHRhZyBvciBhbiBYUGF0aCwKKyAgICAgICAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbSBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KKworICAgICAgICBSZXR1cm4gYW4gaXRlcmFibGUgeWllbGRpbmcgYWxsIG1hdGNoaW5nIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorCisgICAgICAgICIiIgogICAgICAgICAjIGFzc2VydCBzZWxmLl9yb290IGlzIG5vdCBOb25lCiAgICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgIHBhdGggPSAiLiIgKyBwYXRoCkBAIC03NzgsMjYgKzcxOCwzNSBAQAogICAgICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIHNlbGYuX3Jvb3QuaXRlcmZpbmQocGF0aCwgbmFtZXNwYWNlcykKIAotICAgICMjCi0gICAgIyBXcml0ZXMgdGhlIGVsZW1lbnQgdHJlZSB0byBhIGZpbGUsIGFzIFhNTC4KLSAgICAjCi0gICAgIyBAZGVmIHdyaXRlKGZpbGUsICoqb3B0aW9ucykKLSAgICAjIEBwYXJhbSBmaWxlIEEgZmlsZSBuYW1lLCBvciBhIGZpbGUgb2JqZWN0IG9wZW5lZCBmb3Igd3JpdGluZy4KLSAgICAjIEBwYXJhbSAqKm9wdGlvbnMgT3B0aW9ucywgZ2l2ZW4gYXMga2V5d29yZCBhcmd1bWVudHMuCi0gICAgIyBAa2V5cGFyYW0gZW5jb2RpbmcgT3B0aW9uYWwgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4KLSAgICAjICAgICBVc2UgInVuaWNvZGUiIHRvIHJldHVybiBhIFVuaWNvZGUgc3RyaW5nLgotICAgICMgQGtleXBhcmFtIHhtbF9kZWNsYXJhdGlvbiBDb250cm9scyBpZiBhbiBYTUwgZGVjbGFyYXRpb24gc2hvdWxkCi0gICAgIyAgICAgYmUgYWRkZWQgdG8gdGhlIGZpbGUuICBVc2UgRmFsc2UgZm9yIG5ldmVyLCBUcnVlIGZvciBhbHdheXMsCi0gICAgIyAgICAgTm9uZSBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZS4gIE5vbmUgaXMgZGVmYXVsdC4KLSAgICAjIEBrZXlwYXJhbSBkZWZhdWx0X25hbWVzcGFjZSBTZXRzIHRoZSBkZWZhdWx0IFhNTCBuYW1lc3BhY2UgKGZvciAieG1sbnMiKS4KLSAgICAjIEBrZXlwYXJhbSBtZXRob2QgT3B0aW9uYWwgb3V0cHV0IG1ldGhvZCAoInhtbCIsICJodG1sIiwgInRleHQiIG9yCi0gICAgIyAgICAgImMxNG4iOyBkZWZhdWx0IGlzICJ4bWwiKS4KLQogICAgIGRlZiB3cml0ZShzZWxmLCBmaWxlX29yX2ZpbGVuYW1lLAogICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLAogICAgICAgICAgICAgICB4bWxfZGVjbGFyYXRpb249Tm9uZSwKICAgICAgICAgICAgICAgZGVmYXVsdF9uYW1lc3BhY2U9Tm9uZSwKLSAgICAgICAgICAgICAgbWV0aG9kPU5vbmUpOgorICAgICAgICAgICAgICBtZXRob2Q9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHM9VHJ1ZSk6CisgICAgICAgICIiIldyaXRlIGVsZW1lbnQgdHJlZSB0byBhIGZpbGUgYXMgWE1MLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAgICAgICAqZmlsZV9vcl9maWxlbmFtZSogLS0gZmlsZSBuYW1lIG9yIGEgZmlsZSBvYmplY3Qgb3BlbmVkIGZvciB3cml0aW5nCisKKyAgICAgICAgICAqZW5jb2RpbmcqIC0tIHRoZSBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQ6IFVTLUFTQ0lJKQorCisgICAgICAgICAgKnhtbF9kZWNsYXJhdGlvbiogLS0gYm9vbCBpbmRpY2F0aW5nIGlmIGFuIFhNTCBkZWNsYXJhdGlvbiBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgb3V0cHV0LiBJZiBOb25lLCBhbiBYTUwgZGVjbGFyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhZGRlZCBpZiBlbmNvZGluZyBJUyBOT1QgZWl0aGVyIG9mOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTLUFTQ0lJLCBVVEYtOCwgb3IgVW5pY29kZQorCisgICAgICAgICAgKmRlZmF1bHRfbmFtZXNwYWNlKiAtLSBzZXRzIHRoZSBkZWZhdWx0IFhNTCBuYW1lc3BhY2UgKGZvciAieG1sbnMiKQorCisgICAgICAgICAgKm1ldGhvZCogLS0gZWl0aGVyICJ4bWwiIChkZWZhdWx0KSwgImh0bWwsICJ0ZXh0Iiwgb3IgImMxNG4iCisKKyAgICAgICAgICAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIC0tIGNvbnRyb2xzIHRoZSBmb3JtYXR0aW5nIG9mIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW4gbm8gY29udGVudC4gSWYgVHJ1ZSAoZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBzaW5nbGUgc2VsZi1jbG9zZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgb3RoZXJ3aXNlIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBwYWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBzdGFydC9lbmQgdGFncworCisgICAgICAgICIiIgogICAgICAgICBpZiBub3QgbWV0aG9kOgogICAgICAgICAgICAgbWV0aG9kID0gInhtbCIKICAgICAgICAgZWxpZiBtZXRob2Qgbm90IGluIF9zZXJpYWxpemU6CkBAIC04MjUsNyArNzc0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCiAgICAgICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCi0gICAgICAgICAgICAgICAgc2VyaWFsaXplKHdyaXRlLCBzZWxmLl9yb290LCBxbmFtZXMsIG5hbWVzcGFjZXMpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplKHdyaXRlLCBzZWxmLl9yb290LCBxbmFtZXMsIG5hbWVzcGFjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPXNob3J0X2VtcHR5X2VsZW1lbnRzKQogCiAgICAgZGVmIHdyaXRlX2MxNG4oc2VsZiwgZmlsZSk6CiAgICAgICAgICMgbHhtbC5ldHJlZSBjb21wYXRpYmlsaXR5LiAgdXNlIG91dHB1dCBtZXRob2QgaW5zdGVhZApAQCAtOTQ3LDcgKzg5Nyw4IEBACiAgICAgICAgICAgICBhZGRfcW5hbWUodGV4dC50ZXh0KQogICAgIHJldHVybiBxbmFtZXMsIG5hbWVzcGFjZXMKIAotZGVmIF9zZXJpYWxpemVfeG1sKHdyaXRlLCBlbGVtLCBxbmFtZXMsIG5hbWVzcGFjZXMpOgorZGVmIF9zZXJpYWxpemVfeG1sKHdyaXRlLCBlbGVtLCBxbmFtZXMsIG5hbWVzcGFjZXMsCisgICAgICAgICAgICAgICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHMsICoqa3dhcmdzKToKICAgICB0YWcgPSBlbGVtLnRhZwogICAgIHRleHQgPSBlbGVtLnRleHQKICAgICBpZiB0YWcgaXMgQ29tbWVudDoKQEAgLTk2MCw3ICs5MTEsOCBAQAogICAgICAgICAgICAgaWYgdGV4dDoKICAgICAgICAgICAgICAgICB3cml0ZShfZXNjYXBlX2NkYXRhKHRleHQpKQogICAgICAgICAgICAgZm9yIGUgaW4gZWxlbToKLSAgICAgICAgICAgICAgICBfc2VyaWFsaXplX3htbCh3cml0ZSwgZSwgcW5hbWVzLCBOb25lKQorICAgICAgICAgICAgICAgIF9zZXJpYWxpemVfeG1sKHdyaXRlLCBlLCBxbmFtZXMsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHM9c2hvcnRfZW1wdHlfZWxlbWVudHMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3cml0ZSgiPCIgKyB0YWcpCiAgICAgICAgICAgICBpdGVtcyA9IGxpc3QoZWxlbS5pdGVtcygpKQpAQCAtOTgyLDEyICs5MzQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBfZXNjYXBlX2F0dHJpYih2KQogICAgICAgICAgICAgICAgICAgICB3cml0ZSgiICVzPVwiJXNcIiIgJSAocW5hbWVzW2tdLCB2KSkKLSAgICAgICAgICAgIGlmIHRleHQgb3IgbGVuKGVsZW0pOgorICAgICAgICAgICAgaWYgdGV4dCBvciBsZW4oZWxlbSkgb3Igbm90IHNob3J0X2VtcHR5X2VsZW1lbnRzOgogICAgICAgICAgICAgICAgIHdyaXRlKCI+IikKICAgICAgICAgICAgICAgICBpZiB0ZXh0OgogICAgICAgICAgICAgICAgICAgICB3cml0ZShfZXNjYXBlX2NkYXRhKHRleHQpKQogICAgICAgICAgICAgICAgIGZvciBlIGluIGVsZW06Ci0gICAgICAgICAgICAgICAgICAgIF9zZXJpYWxpemVfeG1sKHdyaXRlLCBlLCBxbmFtZXMsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIF9zZXJpYWxpemVfeG1sKHdyaXRlLCBlLCBxbmFtZXMsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPXNob3J0X2VtcHR5X2VsZW1lbnRzKQogICAgICAgICAgICAgICAgIHdyaXRlKCI8LyIgKyB0YWcgKyAiPiIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHdyaXRlKCIgLz4iKQpAQCAtMTAwMiw3ICs5NTUsNyBAQAogZXhjZXB0IE5hbWVFcnJvcjoKICAgICBwYXNzCiAKLWRlZiBfc2VyaWFsaXplX2h0bWwod3JpdGUsIGVsZW0sIHFuYW1lcywgbmFtZXNwYWNlcyk6CitkZWYgX3NlcmlhbGl6ZV9odG1sKHdyaXRlLCBlbGVtLCBxbmFtZXMsIG5hbWVzcGFjZXMsICoqa3dhcmdzKToKICAgICB0YWcgPSBlbGVtLnRhZwogICAgIHRleHQgPSBlbGVtLnRleHQKICAgICBpZiB0YWcgaXMgQ29tbWVudDoKQEAgLTEwNjYsMTggKzEwMTksMTkgQEAKICMgICAiYzE0biI6IF9zZXJpYWxpemVfYzE0biwKIH0KIAotIyMKLSMgUmVnaXN0ZXJzIGEgbmFtZXNwYWNlIHByZWZpeC4gIFRoZSByZWdpc3RyeSBpcyBnbG9iYWwsIGFuZCBhbnkKLSMgZXhpc3RpbmcgbWFwcGluZyBmb3IgZWl0aGVyIHRoZSBnaXZlbiBwcmVmaXggb3IgdGhlIG5hbWVzcGFjZSBVUkkKLSMgd2lsbCBiZSByZW1vdmVkLgotIwotIyBAcGFyYW0gcHJlZml4IE5hbWVzcGFjZSBwcmVmaXguCi0jIEBwYXJhbSB1cmkgTmFtZXNwYWNlIHVyaS4gIFRhZ3MgYW5kIGF0dHJpYnV0ZXMgaW4gdGhpcyBuYW1lc3BhY2UKLSMgICAgIHdpbGwgYmUgc2VyaWFsaXplZCB3aXRoIHRoZSBnaXZlbiBwcmVmaXgsIGlmIGF0IGFsbCBwb3NzaWJsZS4KLSMgQGV4Y2VwdGlvbiBWYWx1ZUVycm9yIElmIHRoZSBwcmVmaXggaXMgcmVzZXJ2ZWQsIG9yIGlzIG90aGVyd2lzZQotIyAgICAgaW52YWxpZC4KIAogZGVmIHJlZ2lzdGVyX25hbWVzcGFjZShwcmVmaXgsIHVyaSk6CisgICAgIiIiUmVnaXN0ZXIgYSBuYW1lc3BhY2UgcHJlZml4LgorCisgICAgVGhlIHJlZ2lzdHJ5IGlzIGdsb2JhbCwgYW5kIGFueSBleGlzdGluZyBtYXBwaW5nIGZvciBlaXRoZXIgdGhlCisgICAgZ2l2ZW4gcHJlZml4IG9yIHRoZSBuYW1lc3BhY2UgVVJJIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgICpwcmVmaXgqIGlzIHRoZSBuYW1lc3BhY2UgcHJlZml4LCAqdXJpKiBpcyBhIG5hbWVzcGFjZSB1cmkuIFRhZ3MgYW5kCisgICAgYXR0cmlidXRlcyBpbiB0aGlzIG5hbWVzcGFjZSB3aWxsIGJlIHNlcmlhbGl6ZWQgd2l0aCBwcmVmaXggaWYgcG9zc2libGUuCisKKyAgICBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiBwcmVmaXggaXMgcmVzZXJ2ZWQgb3IgaXMgaW52YWxpZC4KKworICAgICIiIgogICAgIGlmIHJlLm1hdGNoKCJuc1xkKyQiLCBwcmVmaXgpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcmVmaXggZm9ybWF0IHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UiKQogICAgIGZvciBrLCB2IGluIGxpc3QoX25hbWVzcGFjZV9tYXAuaXRlbXMoKSk6CkBAIC0xMTUzLDQwICsxMTA3LDI3IEBACiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotIyMKLSMgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCi0jIHN1YmVsZW1lbnRzLiAgSWYgZW5jb2RpbmcgaXMgInVuaWNvZGUiLCB0aGUgcmV0dXJuIHR5cGUgaXMgYSBzdHJpbmc7Ci0jIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGVzIGFycmF5LgotIwotIyBAcGFyYW0gZWxlbWVudCBBbiBFbGVtZW50IGluc3RhbmNlLgotIyBAa2V5cGFyYW0gZW5jb2RpbmcgT3B0aW9uYWwgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4KLSMgICAgIFVzZSAidW5pY29kZSIgdG8gcmV0dXJuIGEgVW5pY29kZSBzdHJpbmcuCi0jIEBrZXlwYXJhbSBtZXRob2QgT3B0aW9uYWwgb3V0cHV0IG1ldGhvZCAoInhtbCIsICJodG1sIiwgInRleHQiIG9yCi0jICAgICAiYzE0biI7IGRlZmF1bHQgaXMgInhtbCIpLgotIyBAcmV0dXJuIEFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KLSMgQGRlZnJldHVybiBzdHJpbmcKK2RlZiB0b3N0cmluZyhlbGVtZW50LCBlbmNvZGluZz1Ob25lLCBtZXRob2Q9Tm9uZSwgKiwKKyAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1UcnVlKToKKyAgICAiIiJHZW5lcmF0ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgWE1MIGVsZW1lbnQuCiAKLWRlZiB0b3N0cmluZyhlbGVtZW50LCBlbmNvZGluZz1Ob25lLCBtZXRob2Q9Tm9uZSk6CisgICAgQWxsIHN1YmVsZW1lbnRzIGFyZSBpbmNsdWRlZC4gIElmIGVuY29kaW5nIGlzICJ1bmljb2RlIiwgYSBzdHJpbmcKKyAgICBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIGEgYnl0ZXN0cmluZyBpcyByZXR1cm5lZC4KKworICAgICplbGVtZW50KiBpcyBhbiBFbGVtZW50IGluc3RhbmNlLCAqZW5jb2RpbmcqIGlzIGFuIG9wdGlvbmFsIG91dHB1dAorICAgIGVuY29kaW5nIGRlZmF1bHRpbmcgdG8gVVMtQVNDSUksICptZXRob2QqIGlzIGFuIG9wdGlvbmFsIG91dHB1dCB3aGljaCBjYW4KKyAgICBiZSBvbmUgb2YgInhtbCIgKGRlZmF1bHQpLCAiaHRtbCIsICJ0ZXh0IiBvciAiYzE0biIuCisKKyAgICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KKworICAgICIiIgogICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkgaWYgZW5jb2RpbmcgPT0gJ3VuaWNvZGUnIGVsc2UgaW8uQnl0ZXNJTygpCi0gICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPXNob3J0X2VtcHR5X2VsZW1lbnRzKQogICAgIHJldHVybiBzdHJlYW0uZ2V0dmFsdWUoKQogCi0jIwotIyBHZW5lcmF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGVsZW1lbnQsIGluY2x1ZGluZyBhbGwKLSMgc3ViZWxlbWVudHMuCi0jCi0jIEBwYXJhbSBlbGVtZW50IEFuIEVsZW1lbnQgaW5zdGFuY2UuCi0jIEBrZXlwYXJhbSBlbmNvZGluZyBPcHRpb25hbCBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgotIyAgICAgVXNlICJ1bmljb2RlIiB0byByZXR1cm4gYSBVbmljb2RlIHN0cmluZy4KLSMgQGtleXBhcmFtIG1ldGhvZCBPcHRpb25hbCBvdXRwdXQgbWV0aG9kICgieG1sIiwgImh0bWwiLCAidGV4dCIgb3IKLSMgICAgICJjMTRuIjsgZGVmYXVsdCBpcyAieG1sIikuCi0jIEByZXR1cm4gQSBzZXF1ZW5jZSBvYmplY3QgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuCi0jIEBkZWZyZXR1cm4gc2VxdWVuY2UKLSMgQHNpbmNlIDEuMwotCiBjbGFzcyBfTGlzdERhdGFTdHJlYW0oaW8uQnVmZmVyZWRJT0Jhc2UpOgotICAgICIiIiBBbiBhdXhpbGlhcnkgc3RyZWFtIGFjY3VtdWxhdGluZyBpbnRvIGEgbGlzdCByZWZlcmVuY2UKLSAgICAiIiIKKyAgICAiIiJBbiBhdXhpbGlhcnkgc3RyZWFtIGFjY3VtdWxhdGluZyBpbnRvIGEgbGlzdCByZWZlcmVuY2UuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxzdCk6CiAgICAgICAgIHNlbGYubHN0ID0gbHN0CiAKQEAgLTEyMDIsMjIgKzExNDMsMjUgQEAKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmxzdCkKIAotZGVmIHRvc3RyaW5nbGlzdChlbGVtZW50LCBlbmNvZGluZz1Ob25lLCBtZXRob2Q9Tm9uZSk6CitkZWYgdG9zdHJpbmdsaXN0KGVsZW1lbnQsIGVuY29kaW5nPU5vbmUsIG1ldGhvZD1Ob25lLCAqLAorICAgICAgICAgICAgICAgICBzaG9ydF9lbXB0eV9lbGVtZW50cz1UcnVlKToKICAgICBsc3QgPSBbXQogICAgIHN0cmVhbSA9IF9MaXN0RGF0YVN0cmVhbShsc3QpCi0gICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzPXNob3J0X2VtcHR5X2VsZW1lbnRzKQogICAgIHJldHVybiBsc3QKIAotIyMKLSMgV3JpdGVzIGFuIGVsZW1lbnQgdHJlZSBvciBlbGVtZW50IHN0cnVjdHVyZSB0byBzeXMuc3Rkb3V0LiAgVGhpcwotIyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBmb3IgZGVidWdnaW5nIG9ubHkuCi0jIDxwPgotIyBUaGUgZXhhY3Qgb3V0cHV0IGZvcm1hdCBpcyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuICBJbiB0aGlzCi0jIHZlcnNpb24sIGl0J3Mgd3JpdHRlbiBhcyBhbiBvcmRpbmFyeSBYTUwgZmlsZS4KLSMKLSMgQHBhcmFtIGVsZW0gQW4gZWxlbWVudCB0cmVlIG9yIGFuIGluZGl2aWR1YWwgZWxlbWVudC4KIAogZGVmIGR1bXAoZWxlbSk6CisgICAgIiIiV3JpdGUgZWxlbWVudCB0cmVlIG9yIGVsZW1lbnQgc3RydWN0dXJlIHRvIHN5cy5zdGRvdXQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgb25seS4KKworICAgICplbGVtKiBpcyBlaXRoZXIgYW4gRWxlbWVudFRyZWUsIG9yIGEgc2luZ2xlIEVsZW1lbnQuICBUaGUgZXhhY3Qgb3V0cHV0CisgICAgZm9ybWF0IGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gIEluIHRoaXMgdmVyc2lvbiwgaXQncyB3cml0dGVuIGFzIGFuCisgICAgb3JkaW5hcnkgWE1MIGZpbGUuCisKKyAgICAiIiIKICAgICAjIGRlYnVnZ2luZwogICAgIGlmIG5vdCBpc2luc3RhbmNlKGVsZW0sIEVsZW1lbnRUcmVlKToKICAgICAgICAgZWxlbSA9IEVsZW1lbnRUcmVlKGVsZW0pCkBAIC0xMjI5LDE0NCArMTE3MywxNTEgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgcGFyc2luZwogCi0jIwotIyBQYXJzZXMgYW4gWE1MIGRvY3VtZW50IGludG8gYW4gZWxlbWVudCB0cmVlLgotIwotIyBAcGFyYW0gc291cmNlIEEgZmlsZW5hbWUgb3IgZmlsZSBvYmplY3QgY29udGFpbmluZyBYTUwgZGF0YS4KLSMgQHBhcmFtIHBhcnNlciBBbiBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UuICBJZiBub3QgZ2l2ZW4sIHRoZQotIyAgICAgc3RhbmRhcmQge0BsaW5rIFhNTFBhcnNlcn0gcGFyc2VyIGlzIHVzZWQuCi0jIEByZXR1cm4gQW4gRWxlbWVudFRyZWUgaW5zdGFuY2UKIAogZGVmIHBhcnNlKHNvdXJjZSwgcGFyc2VyPU5vbmUpOgorICAgICIiIlBhcnNlIFhNTCBkb2N1bWVudCBpbnRvIGVsZW1lbnQgdHJlZS4KKworICAgICpzb3VyY2UqIGlzIGEgZmlsZW5hbWUgb3IgZmlsZSBvYmplY3QgY29udGFpbmluZyBYTUwgZGF0YSwKKyAgICAqcGFyc2VyKiBpcyBhbiBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UgZGVmYXVsdGluZyB0byBYTUxQYXJzZXIuCisKKyAgICBSZXR1cm4gYW4gRWxlbWVudFRyZWUgaW5zdGFuY2UuCisKKyAgICAiIiIKICAgICB0cmVlID0gRWxlbWVudFRyZWUoKQogICAgIHRyZWUucGFyc2Uoc291cmNlLCBwYXJzZXIpCiAgICAgcmV0dXJuIHRyZWUKIAotIyMKLSMgUGFyc2VzIGFuIFhNTCBkb2N1bWVudCBpbnRvIGFuIGVsZW1lbnQgdHJlZSBpbmNyZW1lbnRhbGx5LCBhbmQgcmVwb3J0cwotIyB3aGF0J3MgZ29pbmcgb24gdG8gdGhlIHVzZXIuCi0jCi0jIEBwYXJhbSBzb3VyY2UgQSBmaWxlbmFtZSBvciBmaWxlIG9iamVjdCBjb250YWluaW5nIFhNTCBkYXRhLgotIyBAcGFyYW0gZXZlbnRzIEEgbGlzdCBvZiBldmVudHMgdG8gcmVwb3J0IGJhY2suICBJZiBvbWl0dGVkLCBvbmx5ICJlbmQiCi0jICAgICBldmVudHMgYXJlIHJlcG9ydGVkLgotIyBAcGFyYW0gcGFyc2VyIEFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4gIElmIG5vdCBnaXZlbiwgdGhlCi0jICAgICBzdGFuZGFyZCB7QGxpbmsgWE1MUGFyc2VyfSBwYXJzZXIgaXMgdXNlZC4KLSMgQHJldHVybiBBIChldmVudCwgZWxlbSkgaXRlcmF0b3IuCiAKIGRlZiBpdGVycGFyc2Uoc291cmNlLCBldmVudHM9Tm9uZSwgcGFyc2VyPU5vbmUpOgorICAgICIiIkluY3JlbWVudGFsbHkgcGFyc2UgWE1MIGRvY3VtZW50IGludG8gRWxlbWVudFRyZWUuCisKKyAgICBUaGlzIGNsYXNzIGFsc28gcmVwb3J0cyB3aGF0J3MgZ29pbmcgb24gdG8gdGhlIHVzZXIgYmFzZWQgb24gdGhlCisgICAgKmV2ZW50cyogaXQgaXMgaW5pdGlhbGl6ZWQgd2l0aC4gIFRoZSBzdXBwb3J0ZWQgZXZlbnRzIGFyZSB0aGUgc3RyaW5ncworICAgICJzdGFydCIsICJlbmQiLCAic3RhcnQtbnMiIGFuZCAiZW5kLW5zIiAodGhlICJucyIgZXZlbnRzIGFyZSB1c2VkIHRvIGdldAorICAgIGRldGFpbGVkIG5hbWVzcGFjZSBpbmZvcm1hdGlvbikuICBJZiAqZXZlbnRzKiBpcyBvbWl0dGVkLCBvbmx5CisgICAgImVuZCIgZXZlbnRzIGFyZSByZXBvcnRlZC4KKworICAgICpzb3VyY2UqIGlzIGEgZmlsZW5hbWUgb3IgZmlsZSBvYmplY3QgY29udGFpbmluZyBYTUwgZGF0YSwgKmV2ZW50cyogaXMKKyAgICBhIGxpc3Qgb2YgZXZlbnRzIHRvIHJlcG9ydCBiYWNrLCAqcGFyc2VyKiBpcyBhbiBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UuCisKKyAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIHByb3ZpZGluZyAoZXZlbnQsIGVsZW0pIHBhaXJzLgorCisgICAgIiIiCiAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAicmIiKQogICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCi0gICAgaWYgbm90IHBhcnNlcjoKLSAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQogICAgIHJldHVybiBfSXRlclBhcnNlSXRlcmF0b3Ioc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlKQogCi1jbGFzcyBfSXRlclBhcnNlSXRlcmF0b3I6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlPUZhbHNlKToKLSAgICAgICAgc2VsZi5fZmlsZSA9IHNvdXJjZQotICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gY2xvc2Vfc291cmNlCi0gICAgICAgIHNlbGYuX2V2ZW50cyA9IFtdCitjbGFzcyBJbmNyZW1lbnRhbFBhcnNlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBldmVudHM9Tm9uZSwgcGFyc2VyPU5vbmUpOgorICAgICAgICAjIF9lbGVtZW50dHJlZS5jIGV4cGVjdHMgYSBsaXN0LCBub3QgYSBkZXF1ZQorICAgICAgICBzZWxmLl9ldmVudHNfcXVldWUgPSBbXQogICAgICAgICBzZWxmLl9pbmRleCA9IDAKLSAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCiAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QgPSBOb25lCisgICAgICAgIGlmIG5vdCBwYXJzZXI6CisgICAgICAgICAgICBwYXJzZXIgPSBYTUxQYXJzZXIodGFyZ2V0PVRyZWVCdWlsZGVyKCkpCiAgICAgICAgIHNlbGYuX3BhcnNlciA9IHBhcnNlcgogICAgICAgICAjIHdpcmUgdXAgdGhlIHBhcnNlciBmb3IgZXZlbnQgcmVwb3J0aW5nCi0gICAgICAgIHBhcnNlciA9IHNlbGYuX3BhcnNlci5fcGFyc2VyCi0gICAgICAgIGFwcGVuZCA9IHNlbGYuX2V2ZW50cy5hcHBlbmQKICAgICAgICAgaWYgZXZlbnRzIGlzIE5vbmU6Ci0gICAgICAgICAgICBldmVudHMgPSBbImVuZCJdCi0gICAgICAgIGZvciBldmVudCBpbiBldmVudHM6Ci0gICAgICAgICAgICBpZiBldmVudCA9PSAic3RhcnQiOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcih0YWcsIGF0dHJpYl9pbiwgZXZlbnQ9ZXZlbnQsIGFwcGVuZD1hcHBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0PXNlbGYuX3BhcnNlci5fc3RhcnRfbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoKGV2ZW50LCBzdGFydCh0YWcsIGF0dHJpYl9pbikpKQotICAgICAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IGhhbmRsZXIKLSAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHRhZywgYXR0cmliX2luLCBldmVudD1ldmVudCwgYXBwZW5kPWFwcGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ9c2VsZi5fcGFyc2VyLl9zdGFydCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoKGV2ZW50LCBzdGFydCh0YWcsIGF0dHJpYl9pbikpKQotICAgICAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IGhhbmRsZXIKLSAgICAgICAgICAgIGVsaWYgZXZlbnQgPT0gImVuZCI6Ci0gICAgICAgICAgICAgICAgZGVmIGhhbmRsZXIodGFnLCBldmVudD1ldmVudCwgYXBwZW5kPWFwcGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ9c2VsZi5fcGFyc2VyLl9lbmQpOgotICAgICAgICAgICAgICAgICAgICBhcHBlbmQoKGV2ZW50LCBlbmQodGFnKSkpCi0gICAgICAgICAgICAgICAgcGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gaGFuZGxlcgotICAgICAgICAgICAgZWxpZiBldmVudCA9PSAic3RhcnQtbnMiOgotICAgICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHByZWZpeCwgdXJpLCBldmVudD1ldmVudCwgYXBwZW5kPWFwcGVuZCk6Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIChwcmVmaXggb3IgIiIsIHVyaSBvciAiIikpKQotICAgICAgICAgICAgICAgIHBhcnNlci5TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gaGFuZGxlcgotICAgICAgICAgICAgZWxpZiBldmVudCA9PSAiZW5kLW5zIjoKLSAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcihwcmVmaXgsIGV2ZW50PWV2ZW50LCBhcHBlbmQ9YXBwZW5kKToKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKChldmVudCwgTm9uZSkpCi0gICAgICAgICAgICAgICAgcGFyc2VyLkVuZE5hbWVzcGFjZURlY2xIYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgZXZlbnRzID0gKCJlbmQiLCkKKyAgICAgICAgc2VsZi5fcGFyc2VyLl9zZXRldmVudHMoc2VsZi5fZXZlbnRzX3F1ZXVlLCBldmVudHMpCisKKyAgICBkZWYgZGF0YV9yZWNlaXZlZChzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgc2VsZi5fcGFyc2VyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkYXRhX3JlY2VpdmVkKCkgY2FsbGVkIGFmdGVyIGVuZCBvZiBzdHJlYW0iKQorICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZS5hcHBlbmQoZXhjKQorCisgICAgZGVmIGVvZl9yZWNlaXZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpCisgICAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5faW5kZXggPj0gbGVuKHNlbGYuX2V2ZW50c19xdWV1ZSk6CisgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290CisKKyAgICBkZWYgZXZlbnRzKHNlbGYpOgorICAgICAgICBldmVudHMgPSBzZWxmLl9ldmVudHNfcXVldWUKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGluZGV4ID0gc2VsZi5faW5kZXgKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBldmVudCA9IGV2ZW50c1tzZWxmLl9pbmRleF0KKyAgICAgICAgICAgICAgICAjIEF2b2lkIHJldGFpbmluZyByZWZlcmVuY2VzIHRvIHBhc3QgZXZlbnRzCisgICAgICAgICAgICAgICAgZXZlbnRzW3NlbGYuX2luZGV4XSA9IE5vbmUKKyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgICAgICAjIENvbXBhY3QgdGhlIGxpc3QgaW4gYSBPKDEpIGFtb3J0aXplZCBmYXNoaW9uCisgICAgICAgICAgICBpZiBpbmRleCAqIDIgPj0gbGVuKGV2ZW50cyk6CisgICAgICAgICAgICAgICAgZXZlbnRzWzppbmRleF0gPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIGV2ZW50ICVyIiAlIGV2ZW50KQorICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gaW5kZXgKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2UgZXZlbnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeWllbGQgZXZlbnQKKyAgICAgICAgaWYgc2VsZi5fcGFyc2VyIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290CisKKworY2xhc3MgX0l0ZXJQYXJzZUl0ZXJhdG9yKEluY3JlbWVudGFsUGFyc2VyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2UsIGV2ZW50cywgcGFyc2VyLCBjbG9zZV9zb3VyY2U9RmFsc2UpOgorICAgICAgICBJbmNyZW1lbnRhbFBhcnNlci5fX2luaXRfXyhzZWxmLCBldmVudHMsIHBhcnNlcikKKyAgICAgICAgc2VsZi5fZmlsZSA9IHNvdXJjZQorICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gY2xvc2Vfc291cmNlCiAKICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF0KLSAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCi0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yOgotICAgICAgICAgICAgICAgIGUgPSBzZWxmLl9lcnJvcgotICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gTm9uZQotICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgICAgIGZvciBldmVudCBpbiBzZWxmLmV2ZW50cygpOgorICAgICAgICAgICAgICAgIHJldHVybiBldmVudAogICAgICAgICAgICAgaWYgc2VsZi5fcGFyc2VyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdAogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKLSAgICAgICAgICAgIGRlbCBzZWxmLl9ldmVudHNbOl0KLSAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNjM4NCkKICAgICAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gZXhjCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhX3JlY2VpdmVkKGRhdGEpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBzZWxmLl9wYXJzZXIuY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLmVvZl9yZWNlaXZlZCgpCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKLSMjCi0jIFBhcnNlcyBhbiBYTUwgZG9jdW1lbnQgZnJvbSBhIHN0cmluZyBjb25zdGFudC4gIFRoaXMgZnVuY3Rpb24gY2FuCi0jIGJlIHVzZWQgdG8gZW1iZWQgIlhNTCBsaXRlcmFscyIgaW4gUHl0aG9uIGNvZGUuCi0jCi0jIEBwYXJhbSBzb3VyY2UgQSBzdHJpbmcgY29udGFpbmluZyBYTUwgZGF0YS4KLSMgQHBhcmFtIHBhcnNlciBBbiBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UuICBJZiBub3QgZ2l2ZW4sIHRoZQotIyAgICAgc3RhbmRhcmQge0BsaW5rIFhNTFBhcnNlcn0gcGFyc2VyIGlzIHVzZWQuCi0jIEByZXR1cm4gQW4gRWxlbWVudCBpbnN0YW5jZS4KLSMgQGRlZnJldHVybiBFbGVtZW50CiAKIGRlZiBYTUwodGV4dCwgcGFyc2VyPU5vbmUpOgorICAgICIiIlBhcnNlIFhNTCBkb2N1bWVudCBmcm9tIHN0cmluZyBjb25zdGFudC4KKworICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZW1iZWQgIlhNTCBMaXRlcmFscyIgaW4gUHl0aG9uIGNvZGUuCisKKyAgICAqdGV4dCogaXMgYSBzdHJpbmcgY29udGFpbmluZyBYTUwgZGF0YSwgKnBhcnNlciogaXMgYW4KKyAgICBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UsIGRlZmF1bHRpbmcgdG8gdGhlIHN0YW5kYXJkIFhNTFBhcnNlci4KKworICAgIFJldHVybnMgYW4gRWxlbWVudCBpbnN0YW5jZS4KKworICAgICIiIgogICAgIGlmIG5vdCBwYXJzZXI6CiAgICAgICAgIHBhcnNlciA9IFhNTFBhcnNlcih0YXJnZXQ9VHJlZUJ1aWxkZXIoKSkKICAgICBwYXJzZXIuZmVlZCh0ZXh0KQogICAgIHJldHVybiBwYXJzZXIuY2xvc2UoKQogCi0jIwotIyBQYXJzZXMgYW4gWE1MIGRvY3VtZW50IGZyb20gYSBzdHJpbmcgY29uc3RhbnQsIGFuZCBhbHNvIHJldHVybnMKLSMgYSBkaWN0aW9uYXJ5IHdoaWNoIG1hcHMgZnJvbSBlbGVtZW50IGlkOnMgdG8gZWxlbWVudHMuCi0jCi0jIEBwYXJhbSBzb3VyY2UgQSBzdHJpbmcgY29udGFpbmluZyBYTUwgZGF0YS4KLSMgQHBhcmFtIHBhcnNlciBBbiBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UuICBJZiBub3QgZ2l2ZW4sIHRoZQotIyAgICAgc3RhbmRhcmQge0BsaW5rIFhNTFBhcnNlcn0gcGFyc2VyIGlzIHVzZWQuCi0jIEByZXR1cm4gQSB0dXBsZSBjb250YWluaW5nIGFuIEVsZW1lbnQgaW5zdGFuY2UgYW5kIGEgZGljdGlvbmFyeS4KLSMgQGRlZnJldHVybiAoRWxlbWVudCwgZGljdGlvbmFyeSkKIAogZGVmIFhNTElEKHRleHQsIHBhcnNlcj1Ob25lKToKKyAgICAiIiJQYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzdHJpbmcgY29uc3RhbnQgZm9yIGl0cyBJRHMuCisKKyAgICAqdGV4dCogaXMgYSBzdHJpbmcgY29udGFpbmluZyBYTUwgZGF0YSwgKnBhcnNlciogaXMgYW4KKyAgICBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UsIGRlZmF1bHRpbmcgdG8gdGhlIHN0YW5kYXJkIFhNTFBhcnNlci4KKworICAgIFJldHVybnMgYW4gKEVsZW1lbnQsIGRpY3QpIHR1cGxlLCBpbiB3aGljaCB0aGUKKyAgICBkaWN0IG1hcHMgZWxlbWVudCBpZDpzIHRvIGVsZW1lbnRzLgorCisgICAgIiIiCiAgICAgaWYgbm90IHBhcnNlcjoKICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQogICAgIHBhcnNlci5mZWVkKHRleHQpCkBAIC0xMzc4LDI3ICsxMzI5LDE4IEBACiAgICAgICAgICAgICBpZHNbaWRdID0gZWxlbQogICAgIHJldHVybiB0cmVlLCBpZHMKIAotIyMKLSMgUGFyc2VzIGFuIFhNTCBkb2N1bWVudCBmcm9tIGEgc3RyaW5nIGNvbnN0YW50LiAgU2FtZSBhcyB7QGxpbmsgI1hNTH0uCi0jCi0jIEBkZWYgZnJvbXN0cmluZyh0ZXh0KQotIyBAcGFyYW0gc291cmNlIEEgc3RyaW5nIGNvbnRhaW5pbmcgWE1MIGRhdGEuCi0jIEByZXR1cm4gQW4gRWxlbWVudCBpbnN0YW5jZS4KLSMgQGRlZnJldHVybiBFbGVtZW50Ci0KKyMgUGFyc2UgWE1MIGRvY3VtZW50IGZyb20gc3RyaW5nIGNvbnN0YW50LiAgQWxpYXMgZm9yIFhNTCgpLgogZnJvbXN0cmluZyA9IFhNTAogCi0jIwotIyBQYXJzZXMgYW4gWE1MIGRvY3VtZW50IGZyb20gYSBzZXF1ZW5jZSBvZiBzdHJpbmcgZnJhZ21lbnRzLgotIwotIyBAcGFyYW0gc2VxdWVuY2UgQSBsaXN0IG9yIG90aGVyIHNlcXVlbmNlIGNvbnRhaW5pbmcgWE1MIGRhdGEgZnJhZ21lbnRzLgotIyBAcGFyYW0gcGFyc2VyIEFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4gIElmIG5vdCBnaXZlbiwgdGhlCi0jICAgICBzdGFuZGFyZCB7QGxpbmsgWE1MUGFyc2VyfSBwYXJzZXIgaXMgdXNlZC4KLSMgQHJldHVybiBBbiBFbGVtZW50IGluc3RhbmNlLgotIyBAZGVmcmV0dXJuIEVsZW1lbnQKLSMgQHNpbmNlIDEuMwotCiBkZWYgZnJvbXN0cmluZ2xpc3Qoc2VxdWVuY2UsIHBhcnNlcj1Ob25lKToKKyAgICAiIiJQYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzZXF1ZW5jZSBvZiBzdHJpbmcgZnJhZ21lbnRzLgorCisgICAgKnNlcXVlbmNlKiBpcyBhIGxpc3Qgb2Ygb3RoZXIgc2VxdWVuY2UsICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlcgorICAgIGluc3RhbmNlLCBkZWZhdWx0aW5nIHRvIHRoZSBzdGFuZGFyZCBYTUxQYXJzZXIuCisKKyAgICBSZXR1cm5zIGFuIEVsZW1lbnQgaW5zdGFuY2UuCisKKyAgICAiIiIKICAgICBpZiBub3QgcGFyc2VyOgogICAgICAgICBwYXJzZXIgPSBYTUxQYXJzZXIodGFyZ2V0PVRyZWVCdWlsZGVyKCkpCiAgICAgZm9yIHRleHQgaW4gc2VxdWVuY2U6CkBAIC0xNDA3LDE5ICsxMzQ5LDIwIEBACiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotIyMKLSMgR2VuZXJpYyBlbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyLiAgVGhpcyBidWlsZGVyIGNvbnZlcnRzIGEgc2VxdWVuY2UKLSMgb2Yge0BsaW5rICNUcmVlQnVpbGRlci5zdGFydH0sIHtAbGluayAjVHJlZUJ1aWxkZXIuZGF0YX0sIGFuZCB7QGxpbmsKLSMgI1RyZWVCdWlsZGVyLmVuZH0gbWV0aG9kIGNhbGxzIHRvIGEgd2VsbC1mb3JtZWQgZWxlbWVudCBzdHJ1Y3R1cmUuCi0jIDxwPgotIyBZb3UgY2FuIHVzZSB0aGlzIGNsYXNzIHRvIGJ1aWxkIGFuIGVsZW1lbnQgc3RydWN0dXJlIHVzaW5nIGEgY3VzdG9tIFhNTAotIyBwYXJzZXIsIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4KLSMKLSMgQHBhcmFtIGVsZW1lbnRfZmFjdG9yeSBPcHRpb25hbCBlbGVtZW50IGZhY3RvcnkuICBUaGlzIGZhY3RvcnkKLSMgICAgaXMgY2FsbGVkIHRvIGNyZWF0ZSBuZXcgRWxlbWVudCBpbnN0YW5jZXMsIGFzIG5lY2Vzc2FyeS4KIAogY2xhc3MgVHJlZUJ1aWxkZXI6CisgICAgIiIiR2VuZXJpYyBlbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyLgogCisgICAgVGhpcyBidWlsZGVyIGNvbnZlcnRzIGEgc2VxdWVuY2Ugb2Ygc3RhcnQsIGRhdGEsIGFuZCBlbmQgbWV0aG9kCisgICAgY2FsbHMgdG8gYSB3ZWxsLWZvcm1lZCBlbGVtZW50IHN0cnVjdHVyZS4KKworICAgIFlvdSBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYnVpbGQgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgdXNpbmcgYSBjdXN0b20gWE1MCisgICAgcGFyc2VyLCBvciBhIHBhcnNlciBmb3Igc29tZSBvdGhlciBYTUwtbGlrZSBmb3JtYXQuCisKKyAgICAqZWxlbWVudF9mYWN0b3J5KiBpcyBhbiBvcHRpb25hbCBlbGVtZW50IGZhY3Rvcnkgd2hpY2ggaXMgY2FsbGVkCisgICAgdG8gY3JlYXRlIG5ldyBFbGVtZW50IGluc3RhbmNlcywgYXMgbmVjZXNzYXJ5LgorCisgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVsZW1lbnRfZmFjdG9yeT1Ob25lKToKICAgICAgICAgc2VsZi5fZGF0YSA9IFtdICMgZGF0YSBjb2xsZWN0b3IKICAgICAgICAgc2VsZi5fZWxlbSA9IFtdICMgZWxlbWVudCBzdGFjawpAQCAtMTQyOSwxNCArMTM3Miw4IEBACiAgICAgICAgICAgICBlbGVtZW50X2ZhY3RvcnkgPSBFbGVtZW50CiAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3RvcnkKIAotICAgICMjCi0gICAgIyBGbHVzaGVzIHRoZSBidWlsZGVyIGJ1ZmZlcnMsIGFuZCByZXR1cm5zIHRoZSB0b3BsZXZlbCBkb2N1bWVudAotICAgICMgZWxlbWVudC4KLSAgICAjCi0gICAgIyBAcmV0dXJuIEFuIEVsZW1lbnQgaW5zdGFuY2UuCi0gICAgIyBAZGVmcmV0dXJuIEVsZW1lbnQKLQogICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiRmx1c2ggYnVpbGRlciBidWZmZXJzIGFuZCByZXR1cm4gdG9wbGV2ZWwgZG9jdW1lbnQgRWxlbWVudC4iIiIKICAgICAgICAgYXNzZXJ0IGxlbihzZWxmLl9lbGVtKSA9PSAwLCAibWlzc2luZyBlbmQgdGFncyIKICAgICAgICAgYXNzZXJ0IHNlbGYuX2xhc3QgaXMgbm90IE5vbmUsICJtaXNzaW5nIHRvcGxldmVsIGVsZW1lbnQiCiAgICAgICAgIHJldHVybiBzZWxmLl9sYXN0CkBAIC0xNDUzLDI0ICsxMzkwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xhc3QudGV4dCA9IHRleHQKICAgICAgICAgICAgIHNlbGYuX2RhdGEgPSBbXQogCi0gICAgIyMKLSAgICAjIEFkZHMgdGV4dCB0byB0aGUgY3VycmVudCBlbGVtZW50LgotICAgICMKLSAgICAjIEBwYXJhbSBkYXRhIEEgc3RyaW5nLiAgVGhpcyBzaG91bGQgYmUgZWl0aGVyIGFuIDgtYml0IHN0cmluZwotICAgICMgICAgY29udGFpbmluZyBBU0NJSSB0ZXh0LCBvciBhIFVuaWNvZGUgc3RyaW5nLgotCiAgICAgZGVmIGRhdGEoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIkFkZCB0ZXh0IHRvIGN1cnJlbnQgZWxlbWVudC4iIiIKICAgICAgICAgc2VsZi5fZGF0YS5hcHBlbmQoZGF0YSkKIAotICAgICMjCi0gICAgIyBPcGVucyBhIG5ldyBlbGVtZW50LgotICAgICMKLSAgICAjIEBwYXJhbSB0YWcgVGhlIGVsZW1lbnQgbmFtZS4KLSAgICAjIEBwYXJhbSBhdHRyaWIgQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgZWxlbWVudCBhdHRyaWJ1dGVzLgotICAgICMgQHJldHVybiBUaGUgb3BlbmVkIGVsZW1lbnQuCi0gICAgIyBAZGVmcmV0dXJuIEVsZW1lbnQKLQogICAgIGRlZiBzdGFydChzZWxmLCB0YWcsIGF0dHJzKToKKyAgICAgICAgIiIiT3BlbiBuZXcgZWxlbWVudCBhbmQgcmV0dXJuIGl0LgorCisgICAgICAgICp0YWcqIGlzIHRoZSBlbGVtZW50IG5hbWUsICphdHRycyogaXMgYSBkaWN0IGNvbnRhaW5pbmcgZWxlbWVudAorICAgICAgICBhdHRyaWJ1dGVzLgorCisgICAgICAgICIiIgogICAgICAgICBzZWxmLl9mbHVzaCgpCiAgICAgICAgIHNlbGYuX2xhc3QgPSBlbGVtID0gc2VsZi5fZmFjdG9yeSh0YWcsIGF0dHJzKQogICAgICAgICBpZiBzZWxmLl9lbGVtOgpAQCAtMTQ3OSwxNCArMTQwOSwxMiBAQAogICAgICAgICBzZWxmLl90YWlsID0gMAogICAgICAgICByZXR1cm4gZWxlbQogCi0gICAgIyMKLSAgICAjIENsb3NlcyB0aGUgY3VycmVudCBlbGVtZW50LgotICAgICMKLSAgICAjIEBwYXJhbSB0YWcgVGhlIGVsZW1lbnQgbmFtZS4KLSAgICAjIEByZXR1cm4gVGhlIGNsb3NlZCBlbGVtZW50LgotICAgICMgQGRlZnJldHVybiBFbGVtZW50Ci0KICAgICBkZWYgZW5kKHNlbGYsIHRhZyk6CisgICAgICAgICIiIkNsb3NlIGFuZCByZXR1cm4gY3VycmVudCBFbGVtZW50LgorCisgICAgICAgICp0YWcqIGlzIHRoZSBlbGVtZW50IG5hbWUuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2ZsdXNoKCkKICAgICAgICAgc2VsZi5fbGFzdCA9IHNlbGYuX2VsZW0ucG9wKCkKICAgICAgICAgYXNzZXJ0IHNlbGYuX2xhc3QudGFnID09IHRhZyxcCkBAIC0xNDk1LDIwICsxNDIzLDE4IEBACiAgICAgICAgIHNlbGYuX3RhaWwgPSAxCiAgICAgICAgIHJldHVybiBzZWxmLl9sYXN0CiAKLSMjCi0jIEVsZW1lbnQgc3RydWN0dXJlIGJ1aWxkZXIgZm9yIFhNTCBzb3VyY2UgZGF0YSwgYmFzZWQgb24gdGhlCi0jIDxiPmV4cGF0PC9iPiBwYXJzZXIuCi0jCi0jIEBrZXlwYXJhbSB0YXJnZXQgVGFyZ2V0IG9iamVjdC4gIElmIG9taXR0ZWQsIHRoZSBidWlsZGVyIHVzZXMgYW4KLSMgICAgIGluc3RhbmNlIG9mIHRoZSBzdGFuZGFyZCB7QGxpbmsgI1RyZWVCdWlsZGVyfSBjbGFzcy4KLSMgQGtleXBhcmFtIGh0bWwgUHJlZGVmaW5lIEhUTUwgZW50aXRpZXMuICBUaGlzIGZsYWcgaXMgbm90IHN1cHBvcnRlZAotIyAgICAgYnkgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCi0jIEBrZXlwYXJhbSBlbmNvZGluZyBPcHRpb25hbCBlbmNvZGluZy4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzCi0jICAgICB0aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGluIHRoZSBYTUwgZmlsZS4KLSMgQHNlZSAjRWxlbWVudFRyZWUKLSMgQHNlZSAjVHJlZUJ1aWxkZXIKIAorIyBhbHNvIHNlZSBFbGVtZW50VHJlZSBhbmQgVHJlZUJ1aWxkZXIKIGNsYXNzIFhNTFBhcnNlcjoKKyAgICAiIiJFbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyIGZvciBYTUwgc291cmNlIGRhdGEgYmFzZWQgb24gdGhlIGV4cGF0IHBhcnNlci4KKworICAgICpodG1sKiBhcmUgcHJlZGVmaW5lZCBIVE1MIGVudGl0aWVzIChub3Qgc3VwcG9ydGVkIGN1cnJlbnRseSksCisgICAgKnRhcmdldCogaXMgYW4gb3B0aW9uYWwgdGFyZ2V0IG9iamVjdCB3aGljaCBkZWZhdWx0cyB0byBhbiBpbnN0YW5jZSBvZiB0aGUKKyAgICBzdGFuZGFyZCBUcmVlQnVpbGRlciBjbGFzcywgKmVuY29kaW5nKiBpcyBhbiBvcHRpb25hbCBlbmNvZGluZyBzdHJpbmcKKyAgICB3aGljaCBpZiBnaXZlbiwgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgaW4gdGhlIFhNTCBmaWxlOgorICAgIGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvY2hhcmFjdGVyLXNldHMKKworICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGh0bWw9MCwgdGFyZ2V0PU5vbmUsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICB0cnk6CkBAIC0xNTYxLDYgKzE0ODcsMzkgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIHVua25vd24KIAorICAgIGRlZiBfc2V0ZXZlbnRzKHNlbGYsIGV2ZW50c19xdWV1ZSwgZXZlbnRzX3RvX3JlcG9ydCk6CisgICAgICAgICMgSW50ZXJuYWwgQVBJIGZvciBJbmNyZW1lbnRhbFBhcnNlcgorICAgICAgICAjIGV2ZW50c190b19yZXBvcnQ6IGEgbGlzdCBvZiBldmVudHMgdG8gcmVwb3J0IGR1cmluZyBwYXJzaW5nIChzYW1lIGFzCisgICAgICAgICMgdGhlICpldmVudHMqIG9mIEluY3JlbWVudGFsUGFyc2VyJ3MgY29uc3RydWN0b3IuCisgICAgICAgICMgZXZlbnRzX3F1ZXVlOiBhIGxpc3Qgb2YgYWN0dWFsIHBhcnNpbmcgZXZlbnRzIHRoYXQgd2lsbCBiZSBwb3B1bGF0ZWQKKyAgICAgICAgIyBieSB0aGUgdW5kZXJseWluZyBwYXJzZXIuCisgICAgICAgICMKKyAgICAgICAgcGFyc2VyID0gc2VsZi5fcGFyc2VyCisgICAgICAgIGFwcGVuZCA9IGV2ZW50c19xdWV1ZS5hcHBlbmQKKyAgICAgICAgZm9yIGV2ZW50X25hbWUgaW4gZXZlbnRzX3RvX3JlcG9ydDoKKyAgICAgICAgICAgIGlmIGV2ZW50X25hbWUgPT0gInN0YXJ0IjoKKyAgICAgICAgICAgICAgICBwYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgICAgIHBhcnNlci5zcGVjaWZpZWRfYXR0cmlidXRlcyA9IDEKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcih0YWcsIGF0dHJpYl9pbiwgZXZlbnQ9ZXZlbnRfbmFtZSwgYXBwZW5kPWFwcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydD1zZWxmLl9zdGFydF9saXN0KToKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKChldmVudCwgc3RhcnQodGFnLCBhdHRyaWJfaW4pKSkKKyAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IGhhbmRsZXIKKyAgICAgICAgICAgIGVsaWYgZXZlbnRfbmFtZSA9PSAiZW5kIjoKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcih0YWcsIGV2ZW50PWV2ZW50X25hbWUsIGFwcGVuZD1hcHBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kPXNlbGYuX2VuZCk6CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIGVuZCh0YWcpKSkKKyAgICAgICAgICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgICAgICBlbGlmIGV2ZW50X25hbWUgPT0gInN0YXJ0LW5zIjoKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlcihwcmVmaXgsIHVyaSwgZXZlbnQ9ZXZlbnRfbmFtZSwgYXBwZW5kPWFwcGVuZCk6CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIChwcmVmaXggb3IgIiIsIHVyaSBvciAiIikpKQorICAgICAgICAgICAgICAgIHBhcnNlci5TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgZWxpZiBldmVudF9uYW1lID09ICJlbmQtbnMiOgorICAgICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHByZWZpeCwgZXZlbnQ9ZXZlbnRfbmFtZSwgYXBwZW5kPWFwcGVuZCk6CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgoZXZlbnQsIE5vbmUpKQorICAgICAgICAgICAgICAgIHBhcnNlci5FbmROYW1lc3BhY2VEZWNsSGFuZGxlciA9IGhhbmRsZXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5rbm93biBldmVudCAlciIgJSBldmVudF9uYW1lKQorCiAgICAgZGVmIF9yYWlzZWVycm9yKHNlbGYsIHZhbHVlKToKICAgICAgICAgZXJyID0gUGFyc2VFcnJvcih2YWx1ZSkKICAgICAgICAgZXJyLmNvZGUgPSB2YWx1ZS5jb2RlCkBAIC0xNjUwLDE1ICsxNjA5LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQogICAgICAgICAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBOb25lCiAKLSAgICAjIwotICAgICMgKERlcHJlY2F0ZWQpIEhhbmRsZXMgYSBkb2N0eXBlIGRlY2xhcmF0aW9uLgotICAgICMKLSAgICAjIEBwYXJhbSBuYW1lIERvY3R5cGUgbmFtZS4KLSAgICAjIEBwYXJhbSBwdWJpZCBQdWJsaWMgaWRlbnRpZmllci4KLSAgICAjIEBwYXJhbSBzeXN0ZW0gU3lzdGVtIGlkZW50aWZpZXIuCi0KICAgICBkZWYgZG9jdHlwZShzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKToKLSAgICAgICAgIiIiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuIiIiCisgICAgICAgICIiIihEZXByZWNhdGVkKSAgSGFuZGxlIGRvY3R5cGUgZGVjbGFyYXRpb24KKworICAgICAgICAqbmFtZSogaXMgdGhlIERvY3R5cGUgbmFtZSwgKnB1YmlkKiBpcyB0aGUgcHVibGljIGlkZW50aWZpZXIsCisgICAgICAgIGFuZCAqc3lzdGVtKiBpcyB0aGUgc3lzdGVtIGlkZW50aWZpZXIuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHdhcm5pbmdzLndhcm4oCiAgICAgICAgICAgICAiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUgZG9jdHlwZSgpICIKICAgICAgICAgICAgICJtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4iLApAQCAtMTY2OCwyNCArMTYyNSwxNSBAQAogICAgICMgc2VudGluZWwsIGlmIGRvY3R5cGUgaXMgcmVkZWZpbmVkIGluIGEgc3ViY2xhc3MKICAgICBfX2RvY3R5cGUgPSBkb2N0eXBlCiAKLSAgICAjIwotICAgICMgRmVlZHMgZGF0YSB0byB0aGUgcGFyc2VyLgotICAgICMKLSAgICAjIEBwYXJhbSBkYXRhIEVuY29kZWQgZGF0YS4KLQogICAgIGRlZiBmZWVkKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJGZWVkIGVuY29kZWQgZGF0YSB0byBwYXJzZXIuIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucGFyc2VyLlBhcnNlKGRhdGEsIDApCiAgICAgICAgIGV4Y2VwdCBzZWxmLl9lcnJvciBhcyB2OgogICAgICAgICAgICAgc2VsZi5fcmFpc2VlcnJvcih2KQogCi0gICAgIyMKLSAgICAjIEZpbmlzaGVzIGZlZWRpbmcgZGF0YSB0byB0aGUgcGFyc2VyLgotICAgICMKLSAgICAjIEByZXR1cm4gQW4gZWxlbWVudCBzdHJ1Y3R1cmUuCi0gICAgIyBAZGVmcmV0dXJuIEVsZW1lbnQKLQogICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiRmluaXNoIGZlZWRpbmcgZGF0YSB0byBwYXJzZXIgYW5kIHJldHVybiBlbGVtZW50IHN0cnVjdHVyZS4iIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2UoIiIsIDEpICMgZW5kIG9mIGRhdGEKICAgICAgICAgZXhjZXB0IHNlbGYuX2Vycm9yIGFzIHY6CkBAIC0xNzA0LDEwMyArMTY1MiwxMiBAQAogCiAjIEltcG9ydCB0aGUgQyBhY2NlbGVyYXRvcnMKIHRyeToKKyAgICAjIEVsZW1lbnQgaXMgZ29pbmcgdG8gYmUgc2hhZG93ZWQgYnkgdGhlIEMgaW1wbGVtZW50YXRpb24uIFdlIG5lZWQgdG8ga2VlcAorICAgICMgdGhlIFB5dGhvbiB2ZXJzaW9uIG9mIGl0IGFjY2Vzc2libGUgZm9yIHNvbWUgImNyZWF0aXZlIiBieSBleHRlcm5hbCBjb2RlCisgICAgIyAoc2VlIHRlc3RzKQorICAgIF9FbGVtZW50X1B5ID0gRWxlbWVudAorCiAgICAgIyBFbGVtZW50LCBTdWJFbGVtZW50LCBQYXJzZUVycm9yLCBUcmVlQnVpbGRlciwgWE1MUGFyc2VyCiAgICAgZnJvbSBfZWxlbWVudHRyZWUgaW1wb3J0ICoKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBwYXNzCi1lbHNlOgotICAgICMgT3ZlcndyaXRlICdFbGVtZW50VHJlZS5wYXJzZScgYW5kICdpdGVycGFyc2UnIHRvIHVzZSB0aGUgQyBYTUxQYXJzZXIKLQotICAgIGNsYXNzIEVsZW1lbnRUcmVlKEVsZW1lbnRUcmVlKToKLSAgICAgICAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOgotICAgICAgICAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgJ3JlYWQnKToKLSAgICAgICAgICAgICAgICBzb3VyY2UgPSBvcGVuKHNvdXJjZSwgJ3JiJykKLSAgICAgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaWYgcGFyc2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDY1NTM2KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuY2xvc2UoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlciA9IFhNTFBhcnNlcigpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlKHNvdXJjZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm9vdAotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCi0KLSAgICBjbGFzcyBpdGVycGFyc2U6Ci0gICAgICAgICIiIlBhcnNlcyBhbiBYTUwgc2VjdGlvbiBpbnRvIGFuIGVsZW1lbnQgdHJlZSBpbmNyZW1lbnRhbGx5LgotCi0gICAgICAgIFJlcG9ydHMgd2hhdOKAmXMgZ29pbmcgb24gdG8gdGhlIHVzZXIuICdzb3VyY2UnIGlzIGEgZmlsZW5hbWUgb3IgZmlsZQotICAgICAgICBvYmplY3QgY29udGFpbmluZyBYTUwgZGF0YS4gJ2V2ZW50cycgaXMgYSBsaXN0IG9mIGV2ZW50cyB0byByZXBvcnQgYmFjay4KLSAgICAgICAgVGhlIHN1cHBvcnRlZCBldmVudHMgYXJlIHRoZSBzdHJpbmdzICJzdGFydCIsICJlbmQiLCAic3RhcnQtbnMiIGFuZAotICAgICAgICAiZW5kLW5zIiAodGhlICJucyIgZXZlbnRzIGFyZSB1c2VkIHRvIGdldCBkZXRhaWxlZCBuYW1lc3BhY2UKLSAgICAgICAgaW5mb3JtYXRpb24pLiBJZiAnZXZlbnRzJyBpcyBvbWl0dGVkLCBvbmx5ICJlbmQiIGV2ZW50cyBhcmUgcmVwb3J0ZWQuCi0gICAgICAgICdwYXJzZXInIGlzIGFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4gSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQKLSAgICAgICAgWE1MUGFyc2VyIHBhcnNlciBpcyB1c2VkLiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHByb3ZpZGluZwotICAgICAgICAoZXZlbnQsIGVsZW0pIHBhaXJzLgotICAgICAgICAiIiIKLQotICAgICAgICByb290ID0gTm9uZQotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgZXZlbnRzPU5vbmUsIHBhcnNlcj1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZQotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKQotICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9maWxlID0gZmlsZQotICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KLSAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAotICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCi0gICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZQotICAgICAgICAgICAgaWYgcGFyc2VyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQotICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCi0gICAgICAgICAgICBzZWxmLl9wYXJzZXIuX3NldGV2ZW50cyhzZWxmLl9ldmVudHMsIGV2ZW50cykKLQotICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBzZWxmLl9lcnJvcgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvciA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5fZXZlbnRzWzpdCi0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCi0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNjM4NCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBleGMKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZQotCi0gICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSMgY29tcGF0aWJpbGl0eQotWE1MVHJlZUJ1aWxkZXIgPSBYTUxQYXJzZXIKLQotIyB3b3JrYXJvdW5kIGNpcmN1bGFyIGltcG9ydC4KLXRyeToKLSAgICBmcm9tIEVsZW1lbnRDMTROIGltcG9ydCBfc2VyaWFsaXplX2MxNG4KLSAgICBfc2VyaWFsaXplWyJjMTRuIl0gPSBfc2VyaWFsaXplX2MxNG4KLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIveG1scnBjL2NsaWVudC5weSBiL0xpYi94bWxycGMvY2xpZW50LnB5CmluZGV4IGQ3YjJkYjMuLmZmNDIyNjUgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvY2xpZW50LnB5CisrKyBiL0xpYi94bWxycGMvY2xpZW50LnB5CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQAogICAgIGd6ZiA9IGd6aXAuR3ppcEZpbGUobW9kZT0icmIiLCBmaWxlb2JqPWYpCiAgICAgdHJ5OgogICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGRhdGEiKQogICAgIGYuY2xvc2UoKQogICAgIGd6Zi5jbG9zZSgpCkBAIC0xMTMwLDggKzExMzAsOSBAQAogICAgICAgICBmb3IgaSBpbiAoMCwgMSk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2luZ2xlX3JlcXVlc3QoaG9zdCwgaGFuZGxlciwgcmVxdWVzdF9ib2R5LCB2ZXJib3NlKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGkgb3IgZS5lcnJubyBub3QgaW4gKGVycm5vLkVDT05OUkVTRVQsIGVycm5vLkVDT05OQUJPUlRFRCwgZXJybm8uRVBJUEUpOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBpIG9yIGUuZXJybm8gbm90IGluIChlcnJuby5FQ09OTlJFU0VULCBlcnJuby5FQ09OTkFCT1JURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8uRVBJUEUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkJhZFN0YXR1c0xpbmU6ICNjbG9zZSBhZnRlciB3ZSBzZW50IHJlcXVlc3QKICAgICAgICAgICAgICAgICBpZiBpOgpAQCAtMTM4NSw3ICsxMzg2LDcgQEAKICAgICAgICAgIyBnZXQgdGhlIHVybAogICAgICAgICB0eXBlLCB1cmkgPSB1cmxsaWIucGFyc2Uuc3BsaXR0eXBlKHVyaSkKICAgICAgICAgaWYgdHlwZSBub3QgaW4gKCJodHRwIiwgImh0dHBzIik6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJ1bnN1cHBvcnRlZCBYTUwtUlBDIHByb3RvY29sIikKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoInVuc3VwcG9ydGVkIFhNTC1SUEMgcHJvdG9jb2wiKQogICAgICAgICBzZWxmLl9faG9zdCwgc2VsZi5fX2hhbmRsZXIgPSB1cmxsaWIucGFyc2Uuc3BsaXRob3N0KHVyaSkKICAgICAgICAgaWYgbm90IHNlbGYuX19oYW5kbGVyOgogICAgICAgICAgICAgc2VsZi5fX2hhbmRsZXIgPSAiL1JQQzIiCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDM0NDhjNjEuLjdkNjU5MWYgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0YXQKQEAgLTE2NCw3ICsxNjQsNyBAQAogICAgIHRyeToKICAgICAgICAgaWYgX0VuZFJlY0RhdGEoZnApOgogICAgICAgICAgICAgcmV0dXJuIFRydWUgICAgICAgICAjIGZpbGUgaGFzIGNvcnJlY3QgbWFnaWMgbnVtYmVyCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByZXR1cm4gRmFsc2UKIApAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9jaGVja196aXBmaWxlKGZwKQotICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBwYXNzCiAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC0xOTAsNyArMTkwLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIGZwaW4uc2VlayhvZmZzZXQgLSBzaXplRW5kQ2VudERpcjY0TG9jYXRvciwgMikKLSAgICBleGNlcHQgSU9FcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgIyBJZiB0aGUgc2VlayBmYWlscywgdGhlIGZpbGUgaXMgbm90IGxhcmdlIGVub3VnaCB0byBjb250YWluIGEgWklQNjQKICAgICAgICAgIyBlbmQtb2YtYXJjaGl2ZSByZWNvcmQsIHNvIGp1c3QgcmV0dXJuIHRoZSBlbmQgcmVjb3JkIHdlIHdlcmUgZ2l2ZW4uCiAgICAgICAgIHJldHVybiBlbmRyZWMKQEAgLTI0Miw3ICsyNDIsNyBAQAogICAgICMgZmlsZSBpZiB0aGlzIGlzIHRoZSBjYXNlKS4KICAgICB0cnk6CiAgICAgICAgIGZwaW4uc2Vlaygtc2l6ZUVuZENlbnREaXIsIDIpCi0gICAgZXhjZXB0IElPRXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgZGF0YSA9IGZwaW4ucmVhZCgpCiAgICAgaWYgKGxlbihkYXRhKSA9PSBzaXplRW5kQ2VudERpciBhbmQKQEAgLTkxMCw3ICs5MTAsNyBAQAogICAgICAgICAgICAgbW9kZURpY3QgPSB7J3InIDogJ3JiJywgJ3cnOiAnd2InLCAnYScgOiAncitiJ30KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmZwID0gaW8ub3BlbihmaWxlLCBtb2RlRGljdFttb2RlXSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAnYSc6CiAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBrZXkgPSAndycKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgbW9kZURpY3RbbW9kZV0pCkBAIC05NjEsNyArOTYxLDcgQEAKICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGVuZHJlYyA9IF9FbmRSZWNEYXRhKGZwKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJGaWxlIGlzIG5vdCBhIHppcCBmaWxlIikKICAgICAgICAgaWYgbm90IGVuZHJlYzoKICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkZpbGUgaXMgbm90IGEgemlwIGZpbGUiKQpAQCAtMTY0NSw4ICsxNjQ1LDggQEAKICAgICAgICAgZmlsZV9weSAgPSBwYXRobmFtZSArICIucHkiCiAgICAgICAgIGZpbGVfcHljID0gcGF0aG5hbWUgKyAiLnB5YyIKICAgICAgICAgZmlsZV9weW8gPSBwYXRobmFtZSArICIucHlvIgotICAgICAgICBweWNhY2hlX3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBUcnVlKQotICAgICAgICBweWNhY2hlX3B5byA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBGYWxzZSkKKyAgICAgICAgcHljYWNoZV9weWMgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBUcnVlKQorICAgICAgICBweWNhY2hlX3B5byA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIEZhbHNlKQogICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAtMToKICAgICAgICAgICAgICMgbGVnYWN5IG1vZGU6IHVzZSB3aGF0ZXZlciBmaWxlIGlzIHByZXNlbnQKICAgICAgICAgICAgIGlmIChvcy5wYXRoLmlzZmlsZShmaWxlX3B5bykgYW5kCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCAwMDQ3NjVhLi42NGM2MTcxIDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTk4MiwyMiArOTgyLDYyIEBACiAgICAgIyB0aGUgZW5kLXVzZXJzIHN5c3RlbS4gQWxzbyByZW1vdmUgdGhlIGRpcmVjdG9yaWVzIGZyb20gX3N5c2NvbmZpZ2RhdGEucHkKICAgICAjIChhZGRlZCBpbiAzLjMpIGlmIGl0IGV4aXN0cy4KIAorICAgIGluY2x1ZGVfcGF0aCA9ICctSSVzL2xpYnJhcmllcy91c3IvbG9jYWwvaW5jbHVkZScgJSAoV09SS0RJUiwpCisgICAgbGliX3BhdGggPSAnLUwlcy9saWJyYXJpZXMvdXNyL2xvY2FsL2xpYicgJSAoV09SS0RJUiwpCisKICAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQotICAgIHBhdGhzID0gW29zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ2NvbmZpZycgKyBjb25maWdfc3VmZml4LCAnTWFrZWZpbGUnKSwKLSAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpXQotICAgIGZvciBwYXRoIGluIHBhdGhzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICBjb250aW51ZQorCisgICAgIyBmaXggTWFrZWZpbGUKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnY29uZmlnJyArIGNvbmZpZ19zdWZmaXgsICdNYWtlZmlsZScpCisgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICBkYXRhID0gZnAucmVhZCgpCisgICAgZnAuY2xvc2UoKQorCisgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgorICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCIgIiArIHAsICcnKQorICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKHAgKyAiICIsICcnKQorCisgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICBmcC53cml0ZShkYXRhKQorICAgIGZwLmNsb3NlKCkKKworICAgICMgZml4IF9zeXNjb25maWdkYXRhIGlmIGl0IGV4aXN0cworICAgICMKKyAgICAjIFRPRE86IG1ha2UgdGhpcyBtb3JlIHJvYnVzdCEgIHRlc3Rfc3lzY29uZmlnX21vZHVsZSBvZgorICAgICMgZGlzdHV0aWxzLnRlc3RzLnRlc3Rfc3lzY29uZmlnLlN5c2NvbmZpZ1Rlc3RDYXNlIHRlc3RzIHRoYXQKKyAgICAjIHRoZSBvdXRwdXQgZnJvbSBnZXRfY29uZmlnX3ZhciBpbiBib3RoIHN5c2NvbmZpZyBhbmQKKyAgICAjIGRpc3R1dGlscy5zeXNjb25maWcgaXMgZXhhY3RseSB0aGUgc2FtZSBmb3IgYm90aCBDRkxBR1MgYW5kCisgICAgIyBMREZMQUdTLiAgVGhlIGZpeGluZyB1cCBpcyBub3cgY29tcGxpY2F0ZWQgYnkgdGhlIHByZXR0eQorICAgICMgcHJpbnRpbmcgaW4gX3N5c2NvbmZpZ2RhdGEucHkuICBBbHNvLCB3ZSBhcmUgdXNpbmcgdGhlCisgICAgIyBwcHJpbnQgZnJvbSB0aGUgUHl0aG9uIHJ1bm5pbmcgdGhlIGluc3RhbGxlciBidWlsZCB3aGljaAorICAgICMgbWF5IG5vdCBjb3NtZXRpY2FsbHkgZm9ybWF0IHRoZSBzYW1lIGFzIHRoZSBwcHJpbnQgaW4gdGhlIFB5dGhvbgorICAgICMgYmVpbmcgYnVpbHQgKGFuZCB3aGljaCBpcyB1c2VkIHRvIG9yaWdpbmFsbHkgZ2VuZXJhdGUKKyAgICAjIF9zeXNjb25maWdkYXRhLnB5KS4KKworICAgIGltcG9ydCBwcHJpbnQKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQogICAgICAgICBkYXRhID0gZnAucmVhZCgpCiAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKKyAgICAgICAgZXhlYyhkYXRhKQorICAgICAgICB2YXJzID0ge30KKyAgICAgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB0eXBlKHYpID09IHR5cGUoJycpOgorICAgICAgICAgICAgICAgIGZvciBwIGluIChpbmNsdWRlX3BhdGgsIGxpYl9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKKyAgICAgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZShwICsgJyAnLCAnJykKKyAgICAgICAgICAgIHZhcnNba10gPSB2CiAKLSAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnIC1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInJShXT1JLRElSLCksICcnKQotICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCcgLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQogICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICBmcC53cml0ZShkYXRhKQorICAgICAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgICAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCisgICAgICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCisgICAgICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKICAgICAgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBZGQgc3ltbGlua3MgaW4gL3Vzci9sb2NhbC9iaW4sIHVzaW5nIHJlbGF0aXZlIGxpbmtzCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvYnVuZGxlYnVpbGRlci5weSBiL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5CmluZGV4IDZjYzEzMGYuLmY1Njc5ZDMgMTAwNjQ0Ci0tLSBhL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5CisrKyBiL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5CkBAIC0yNzAsNyArMjcwLDcgQEAKIGRlbCBfX2xvYWQKICIiIgogCi1NQVlNSVNTX01PRFVMRVMgPSBbJ21hYycsICdvczInLCAnbnQnLCAnbnRwYXRoJywgJ2RvcycsICdkb3NwYXRoJywKK01BWU1JU1NfTU9EVUxFUyA9IFsnbWFjJywgJ250JywgJ250cGF0aCcsICdkb3MnLCAnZG9zcGF0aCcsCiAgICAgJ3dpbjMyYXBpJywgJ2NlJywgJ193aW5yZWcnLCAnbnR1cmwycGF0aCcsICdzaXRlY3VzdG9taXplJywKICAgICAnb3JnLnB5dGhvbi5jb3JlJywgJ3Jpc2NvcycsICdyaXNjb3NlbnZpcm9uJywgJ3Jpc2Nvc3BhdGgnCiBdCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KaW5kZXggZGM4OTVjMC4uODgxZDk0NSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKyBiL01ha2VmaWxlLnByZS5pbgpAQCAtMTI3LDcgKzEyNyw2IEBACiAjIFN5bWJvbHMgdXNlZCBmb3IgdXNpbmcgc2hhcmVkIGxpYnJhcmllcwogU0hMSUJfU1VGRklYPQlAU0hMSUJfU1VGRklYQAogRVhUX1NVRkZJWD0JQEVYVF9TVUZGSVhACi1TTz0JCSQoU0hMSUJfU1VGRklYKQogTERTSEFSRUQ9CUBMRFNIQVJFREAgJChQWV9MREZMQUdTKQogQkxEU0hBUkVEPQlAQkxEU0hBUkVEQCAkKFBZX0xERkxBR1MpCiBMRENYWFNIQVJFRD0JQExEQ1hYU0hBUkVEQApAQCAtMjEyLDYgKzIxMSwxMiBAQAogUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5IC1uIDIgLS13aXRoLWdjIC0td2l0aC1zeXNjaGVjawogI1BST0ZJTEVfVEFTSz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CiAKKyMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKK0NPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCitDT1ZFUkFHRV9SRVBPUlQ9JChhYnNfYnVpbGRkaXIpL2xjb3YtcmVwb3J0CitDT1ZFUkFHRV9SRVBPUlRfT1BUSU9OUz0tLW5vLWJyYW5jaC1jb3ZlcmFnZSAtLXRpdGxlICJDUHl0aG9uIGxjb3YgcmVwb3J0IgorCisKICMgPT09IERlZmluaXRpb25zIGFkZGVkIGJ5IG1ha2VzZXR1cCA9PT0KIAogCkBAIC00NDAsNyArNDQ1LDcgQEAKIAogIyBEZWZhdWx0IHRhcmdldAogYWxsOgkJYnVpbGRfYWxsCi1idWlsZF9hbGw6CSQoQlVJTERQWVRIT04pIG9sZHNoYXJlZG1vZHMgc2hhcmVkbW9kcyBnZGJob29rcyBNb2R1bGVzL190ZXN0ZW1iZWQKK2J1aWxkX2FsbDoJJChCVUlMRFBZVEhPTikgb2xkc2hhcmVkbW9kcyBzaGFyZWRtb2RzIGdkYmhvb2tzIE1vZHVsZXMvX3Rlc3RlbWJlZCBweXRob24tY29uZmlnCiAKICMgQ29tcGlsZSBhIGJpbmFyeSB3aXRoIGdjYyBwcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb24uCiBwcm9maWxlLW9wdDoKQEAgLTQ2NCwxMSArNDY5LDQ4IEBACiBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6CiAJJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLXVzZSAtZnByb2ZpbGUtY29ycmVjdGlvbiIKIAorIyBDb21waWxlIGFuZCBydW4gd2l0aCBnY292CisuUEhPTlk9Y292ZXJhZ2UgY292ZXJhZ2UtbGNvdiBjb3ZlcmFnZS1yZXBvcnQKIGNvdmVyYWdlOgogCUBlY2hvICJCdWlsZGluZyB3aXRoIHN1cHBvcnQgZm9yIGNvdmVyYWdlIGNoZWNraW5nOiIKLQkkKE1BS0UpIGNsZWFuCisJJChNQUtFKSBjbGVhbiBwcm9maWxlLXJlbW92YWwKIAkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtTzAgLXBnIC1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSIgTElCUz0iJChMSUJTKSAtbGdjb3YiCiAKK2NvdmVyYWdlLWxjb3Y6CisJQGVjaG8gIkNyZWF0aW5nIENvdmVyYWdlIEhUTUwgcmVwb3J0IHdpdGggTENPVjoiCisJQHJtIC1mICQoQ09WRVJBR0VfSU5GTykKKwlAcm0gLXJmICQoQ09WRVJBR0VfUkVQT1JUKQorCUBsY292IC0tY2FwdHVyZSAtLWRpcmVjdG9yeSAkKGFic19idWlsZGRpcikgXAorCSAgICAtLWJhc2UtZGlyZWN0b3J5ICQocmVhbHBhdGggJChhYnNfYnVpbGRkaXIpKSBcCisJICAgIC0tcGF0aCAkKHJlYWxwYXRoICQoYWJzX3NyY2RpcikpIFwKKwkgICAgLS1vdXRwdXQtZmlsZSAkKENPVkVSQUdFX0lORk8pCisJOiAjIHJlbW92ZSAzcmQgcGFydHkgbW9kdWxlcyBhbmQgc3lzdGVtIGhlYWRlcnMKKwlAbGNvdiAtLXJlbW92ZSAkKENPVkVSQUdFX0lORk8pIFwKKwkgICAgJyovTW9kdWxlcy9fY3R5cGVzL2xpYmZmaSovKicgXAorCSAgICAnKi9Nb2R1bGVzL19zaGEzL2tlY2Nhay8qJyBcCisJICAgICcqL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvKicgXAorCSAgICAnKi9Nb2R1bGVzL2V4cGF0LyonIFwKKwkgICAgJyovTW9kdWxlcy96bGliLyonIFwKKwkgICAgJyovSW5jbHVkZS8qJyBcCisJICAgICcvdXNyL2luY2x1ZGUvKicgXAorCSAgICAnL3Vzci9sb2NhbC9pbmNsdWRlLyonIFwKKwkgICAgLS1vdXRwdXQtZmlsZSAkKENPVkVSQUdFX0lORk8pCisJQGdlbmh0bWwgJChDT1ZFUkFHRV9JTkZPKSAtLW91dHB1dC1kaXJlY3RvcnkgJChDT1ZFUkFHRV9SRVBPUlQpIFwKKwkgICAgJChDT1ZFUkFHRV9SRVBPUlRfT1BUSU9OUykKKwlAZWNobworCUBlY2hvICJsY292IHJlcG9ydCBhdCAkKENPVkVSQUdFX1JFUE9SVCkvaW5kZXguaHRtbCIKKwlAZWNobworCitjb3ZlcmFnZS1yZXBvcnQ6CisJOiAjIGZvcmNlIHJlYnVpbGRpbmcgb2YgcGFyc2VyIGFuZCBpbXBvcnRsaWIKKwlAdG91Y2ggJChHUkFNTUFSX0lOUFVUKQorCUB0b3VjaCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisJOiAjIGJ1aWxkIHdpdGggY292ZXJhZ2UgaW5mbworCSQoTUFLRSkgY292ZXJhZ2UKKwk6ICMgcnVuIHRlc3RzLCBpZ25vcmUgZmFpbHVyZXMKKwkkKFRFU1RSVU5ORVIpICQoVEVTVE9QVFMpIHx8IHRydWUKKwk6ICMgYnVpbGQgbGNvdiByZXBvcnQKKwkkKE1BS0UpIGNvdmVyYWdlLWxjb3YKIAogIyBCdWlsZCB0aGUgaW50ZXJwcmV0ZXIKICQoQlVJTERQWVRIT04pOglNb2R1bGVzL3B5dGhvbi5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKQEAgLTcwOCwyNyArNzUwLDMxIEBACiAJCQkJJChzcmNkaXIpL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAogCiBCWVRFU1RSX0RFUFMgPSBcCi0JCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIFwKLQkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaCBcCi0JCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKIAotVU5JQ09ERV9ERVBTID0gJChCWVRFU1RSX0RFUFMpIFwKK1VOSUNPREVfREVQUyA9IFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvcmVwbGFjZS5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKIApAQCAtNzQ2LDkgKzc5Miw2IEBACiAKIFB5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgJChzcmNkaXIpL1B5dGhvbi9jZXZhbF9naWwuaAogCi1QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUubzogJChzcmNkaXIpL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIFwKLQkJCQkkKEJZVEVTVFJfREVQUykKLQogUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmgKIAogT2JqZWN0cy90eXBlb2JqZWN0Lm86IE9iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtOTQ1LDcgKzk4OCw3IEBACiAJCWZpOyBcCiAJCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSBweXRob24kKExEVkVSU0lPTikkKEVYRSkgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSk7IFwKIAlmaQotCWlmIHRlc3QgLWYgJChMRExJQlJBUlkpOyB0aGVuIFwKKwlpZiB0ZXN0IC1mICQoTERMSUJSQVJZKSAmJiB0ZXN0ICIkKFBZVEhPTkZSQU1FV09SS0RJUikiID0gIm5vLWZyYW1ld29yayIgOyB0aGVuIFwKIAkJaWYgdGVzdCAtbiAiJChETExMSUJSQVJZKSIgOyB0aGVuIFwKIAkJCSQoSU5TVEFMTF9TSEFSRUQpICQoRExMTElCUkFSWSkgJChERVNURElSKSQoQklORElSKTsgXAogCQllbHNlIFwKQEAgLTExNTIsMTAgKzExOTUsMTkgQEAKIAlmaTsgXAogCWNkICQoc3JjZGlyKS9MaWIvJChQTEFURElSKTsgJChSVU5TSEFSRUQpIC4vcmVnZW4KIAotcHl0aG9uLWNvbmZpZzogJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorcHl0aG9uLWNvbmZpZzogJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBNaXNjL3B5dGhvbi1jb25maWcuc2gKIAkjIFN1YnN0aXR1dGlvbiBoYXBwZW5zIGhlcmUsIGFzIHRoZSBjb21wbGV0ZWx5LWV4cGFuZGVkIEJJTkRJUgogCSMgaXMgbm90IGF2YWlsYWJsZSBpbiBjb25maWd1cmUKLQlzZWQgLWUgInMsQEVYRU5BTUVALCQoQklORElSKS9weXRob24kKExEVkVSU0lPTikkKEVYRSksIiA8ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gPnB5dGhvbi1jb25maWcKKwlzZWQgLWUgInMsQEVYRU5BTUVALCQoQklORElSKS9weXRob24kKExEVkVSU0lPTikkKEVYRSksIiA8ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gPnB5dGhvbi1jb25maWcucHkKKwkjIFJlcGxhY2UgbWFrZWZpbGUgY29tcGF0LiB2YXJpYWJsZSByZWZlcmVuY2VzIHdpdGggc2hlbGwgc2NyaXB0IGNvbXBhdC4gb25lczsgJChWQVIpIC0+ICR7VkFSfQorCXNlZCAtZSAncyxcJCQoXChbQS1aYS16MC05X10qXCkpLFwkJFx7XDFcfSxnJyA8IE1pc2MvcHl0aG9uLWNvbmZpZy5zaCA+cHl0aG9uLWNvbmZpZworCSMgT24gRGFyd2luLCBhbHdheXMgdXNlIHRoZSBweXRob24gdmVyc2lvbiBvZiB0aGUgc2NyaXB0LCB0aGUgc2hlbGwKKwkjIHZlcnNpb24gZG9lc24ndCB1c2UgdGhlIGNvbXBpbGVyIGN1c3RvbWl6YXRpb25zIHRoYXQgYXJlIHByb3ZpZGVkCisJIyBpbiBweXRob24gKF9vc3hfc3VwcG9ydC5weSkuCisJaWYgdGVzdCBgdW5hbWUgLXNgID0gRGFyd2luOyB0aGVuIFwKKwkJY3AgcHl0aG9uLWNvbmZpZy5weSBweXRob24tY29uZmlnOyBcCisJZmkKKwogCiAjIEluc3RhbGwgdGhlIGluY2x1ZGUgZmlsZXMKIElOQ0xESVJTVE9NQUtFPSQoSU5DTFVERURJUikgJChDT05GSU5DTFVERURJUikgJChJTkNMVURFUFkpICQoQ09ORklOQ0xVREVQWSkKQEAgLTEyMTMsOCArMTI2NSw4IEBACiAJJChJTlNUQUxMX0RBVEEpIE1pc2MvcHl0aG9uLnBjICQoREVTVERJUikkKExJQlBDKS9weXRob24tJChWRVJTSU9OKS5wYwogCSQoSU5TVEFMTF9TQ1JJUFQpICQoc3JjZGlyKS9Nb2R1bGVzL21ha2VzZXR1cCAkKERFU1RESVIpJChMSUJQTCkvbWFrZXNldHVwCiAJJChJTlNUQUxMX1NDUklQVCkgJChzcmNkaXIpL2luc3RhbGwtc2ggJChERVNURElSKSQoTElCUEwpL2luc3RhbGwtc2gKKwkkKElOU1RBTExfU0NSSVBUKSBweXRob24tY29uZmlnLnB5ICQoREVTVERJUikkKExJQlBMKS9weXRob24tY29uZmlnLnB5CiAJJChJTlNUQUxMX1NDUklQVCkgcHl0aG9uLWNvbmZpZyAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoTERWRVJTSU9OKS1jb25maWcKLQlybSBweXRob24tY29uZmlnCiAJQGlmIFsgLXMgTW9kdWxlcy9weXRob24uZXhwIC1hIFwKIAkJImBlY2hvICQoTUFDSERFUCkgfCBzZWQgJ3MvXlwoLi4uXCkuKi9cMS8nYCIgPSAiYWl4IiBdOyB0aGVuIFwKIAkJZWNobzsgZWNobyAiSW5zdGFsbGluZyBzdXBwb3J0IGZpbGVzIGZvciBidWlsZGluZyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMgb24gQUlYOiI7IFwKQEAgLTEzOTQsNiArMTQ0Niw4IEBACiAKIHByb2ZpbGUtcmVtb3ZhbDoKIAlmaW5kIC4gLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCisJcm0gLWYgJChDT1ZFUkFHRV9JTkZPKQorCXJtIC1yZiAkKENPVkVSQUdFX1JFUE9SVCkKIAogY2xvYmJlcjogY2xlYW4gcHJvZmlsZS1yZW1vdmFsCiAJLXJtIC1mICQoQlVJTERQWVRIT04pICQoUEdFTikgJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChETExMSUJSQVJZKSBcCkBAIC0xNDAxLDYgKzE0NTUsNyBAQAogCQljb25maWcuY2FjaGUgY29uZmlnLmxvZyBweWNvbmZpZy5oIE1vZHVsZXMvY29uZmlnLmMKIAktcm0gLXJmIGJ1aWxkIHBsYXRmb3JtCiAJLXJtIC1yZiAkKFBZVEhPTkZSQU1FV09SS0RJUikKKwktcm0gLWYgcHl0aG9uLWNvbmZpZy5weSBweXRob24tY29uZmlnCiAKICMgTWFrZSB0aGluZ3MgZXh0cmEgY2xlYW4sIGJlZm9yZSBtYWtpbmcgYSBkaXN0cmlidXRpb246CiAjIHJlbW92ZSBhbGwgZ2VuZXJhdGVkIGZpbGVzLCBldmVuIE1ha2VmaWxlWy5wcmVdCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggMmQzYjkyOS4uNzcxNzk0MSAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtNTYsNiArNTYsNyBAQAogRG9ub3ZhbiBCYWFyZGEKIEFybmUgQmFiZW5oYXVzZXJoZWlkZQogQXR0aWxhIEJhYm8KK01hdHQgQmFjaG1hbm4KIE1hcmNpbiBCYWNocnkKIEFsZm9uc28gQmFjaWVybwogRHdheW5lIEJhaWxleQpAQCAtMTIxLDYgKzEyMiw3IEBACiBNaWNoYWVsIEJpcnR3ZWxsCiBTdHVhcnQgQmlzaG9wCiBSb3kgQml4bGVyCitEYW5pZWwgQmxhY2sKIEpvbmF0aGFuIEJsYWNrCiBSZW5hdWQgQmxhbmNoCiBNaWtlIEJsYW5kCkBAIC0xMzcsNiArMTM5LDcgQEAKIEZvcmVzdCBCb25kCiBHcmVnb3J5IEJvbmQKIE1hdGlhcyBCb3JkZXNlCitKb25hcyBCb3Jnc3Ryw7ZtCiBKdXJqZW4gQm9zCiBQZXRlciBCb3NjaAogRGFuIEJvc3dlbGwKQEAgLTE1MCw4ICsxNTMsMTAgQEAKIEdlb3JnIEJyYW5kbAogQ2hyaXN0b3BoZXIgQnJhbm5vbgogVGVycmVuY2UgQnJhbm5vbgorU3ZlbiBCcmF1Y2gKIEVyaWsgQnJheQogQnJpYW4gQnJhemlsCitEZW1pYW4gQnJlY2h0CiBEYXZlIEJyZW5uYW4KIFRvbSBCcmlkZ21hbgogQW50aG9ueSBCcmlnZ3MKQEAgLTE2OCw5ICsxNzMsMTEgQEAKIEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kKIElhbiBCcnVudGxldHQKIEZsb3JpcyBCcnV5bm9vZ2hlCitNYXR0IEJyeWFudAogU3RhbiBCdWJyb3Vza2kKIEVyaWsgZGUgQnVlZ2VyCiBKYW4tSGVpbiBCw7xocm1hbgorTGFycyBCdWl0aW5jawogRGljayBCdWx0ZXJtYW4KIEJpbGwgQnVtZ2FybmVyCiBKaW1teSBCdXJnZXR0CkBAIC0xOTAsNiArMTk3LDcgQEAKIE1pa2UgQ2FybHRvbgogUGllcnJlIENhcnJpZXIKIFRlcnJ5IENhcnJvbGwKK0Vkd2FyZCBDYXRtdXIKIExvcmVuem8gTS4gQ2F0dWNjaQogRG9ubiBDYXZlCiBDaGFybGVzIENhemFib24KQEAgLTIyMyw2ICsyMzEsNyBAQAogQ3JhaWcgQ2l0cm8KIEdpbGxlcyBDaXZhcmlvCiBDaHJpcyBDbGFyaworTGF1cmllIENsYXJrLU1pY2hhbGVrCiBNaWtlIENsYXJrc29uCiBBbmRyZXcgQ2xlZ2cKIEJyYWQgQ2xlbWVudHMKQEAgLTMxOSw2ICszMjgsNyBAQAogUm9iaW4gRHVubgogTHVrZSBEdW5zdGFuCiBWaXJnaWwgRHVwcmFzCitCcnVubyBEdXB1aXMKIEFuZHkgRHVzdG1hbgogR2FyeSBEdXphbgogRXVnZW5lIER2dXJlY2hlbnNraQpAQCAtMzQxLDYgKzM1MSw3IEBACiBEYXZpZCBFbHkKIEplZmYgRXBsZXIKIFRvbSBFcHBlcmx5CitHw7ZrY2VuIEVyYXNsYW4KIFN0b2ZmZWwgRXJhc211cwogSsO8cmdlbiBBLiBFcmhhcmQKIE1pY2hhZWwgRXJuc3QKQEAgLTQ1MSw2ICs0NjIsNyBAQAogRGFnIEdydW5lYXUKIEZpbGlwIEdydXN6Y3p5xYRza2kKIFRob21hcyBHdWV0dGxlcgorQW51aiBHdXB0YQogTWljaGFlbCBHdXJhdmFnZQogTGFycyBHdXN0w6RiZWwKIFRob21hcyBHw7x0dGxlcgpAQCAtNDYxLDYgKzQ3Myw3IEBACiBSYXNtdXMgSGFobgogUGV0ZXIgSGFpZ2h0CiBWw6FjbGF2IEhhaXNtYW4KK1piaWduaWV3IEhhbGFzCiBXYWxrZXIgSGFsZSBJVgogQm9iIEhhbGxleQogSmVzc2UgSGFsbGlvCkBAIC01OTAsNiArNjAzLDcgQEAKIEZyZWRyaWsgSm9oYW5zc29uCiBHcmVnb3J5IEsuIEpvaG5zb24KIEtlbnQgSm9obnNvbgorTWljaGFlbCBKb2huc29uCiBTaW1vbiBKb2huc3RvbgogTWF0dCBKb2luZXIKIFRob21hcyBKb2xsYW5zCkBAIC02MDgsNiArNjIyLDcgQEAKIFRhdHRvbyBNYWJvbnpvIEsuCiBTYXJhaCBLLgogQm9odXNsYXYgS2FicmRhCitBbGV4ZXkgS2FjaGF5ZXYKIEJvYiBLYWhuCiBLdXJ0IEIuIEthaXNlcgogVGFtaXRvIEthaml5YW1hCkBAIC02ODQsNyArNjk5LDkgQEAKIEVybm8gS3V1c2VsYQogUm9zcyBMYWdlcndhbGwKIENhbWVyb24gTGFpcmQKK0RhdmlkIExhbQogVGhvbWFzIExhbWIKK1ZhbGVyaWUgTGFtYmVydAogSmVhbi1CYXB0aXN0ZSAiSmliYSIgTGFteQogUm9uYW4gTGFteQogVG9yc3RlbiBMYW5kc2Nob2ZmCkBAIC03MjEsOSArNzM4LDExIEBACiBNYXRldXN6IExlbmlrCiBKb2huIExlbnRvbgogS29zdHlhbnR5biBMZXNjaGVua28KK0Jlbm5vIExlc2xpZQogQ2hyaXN0b3BoZXIgVHVyIExlc25pZXdza2ktTGFhcwogQWxhaW4gTGV1ZnJveQogTWFyayBMZXZpbnNvbgorTWFyayBMZXZpdHQKIFdpbGxpYW0gTGV3aXMKIEFraXJhIExpCiBYdWFuamkgTGkKQEAgLTc0Nyw2ICs3NjYsNyBAQAogQW5uZSBMb3JkCiBUb20gTG9yZWRvCiBKdXN0aW4gTG92ZQorTmVkIEphY2tzb24gTG92ZWx5CiBKYXNvbiBMb3dlCiBUb255IExvd25kcwogUmF5IExveXphZ2EKQEAgLTc1NCw2ICs3NzQsNyBAQAogTG9yZW4gTHVrZQogRnJlZHJpayBMdW5kaAogTWFyayBMdXR6CitUYXJhcyBMeWFwdW4KIEppbSBMeW5jaAogTWlrYWVsIEx5bmd2aWcKIE1hcnRpbiB2b24gTMO2d2lzCkBAIC03NjQsOSArNzg1LDExIEBACiBUaW0gTWFjS2VuemllCiBOaWNrIE1hY2xhcmVuCiBEb24gTWFjTWlsbGVuCitUb21hc3ogTWHEh2tvd2lhawogU3RldmUgTWFqZXdza2kKIEdyemVnb3J6IE1ha2FyZXdpY3oKIERhdmlkIE1hbGNvbG0KK0dyZWcgTWFsY29sbQogS2VuIE1hbmhlaW1lcgogVmxhZGltaXIgTWFyYW5nb3pvdgogQ29saW4gTWFyYwpAQCAtNzg4LDYgKzgxMSw3IEBACiBEaWV0ZXIgTWF1cmVyCiBEYW5pZWwgTWF5CiBNYWRpc29uIE1heQorTHVjYXMgTWF5c3RyZQogQXJuYXVkIE1hemluCiBSZWJlY2NhIE1jQ3JlYXJ5CiBLaXJrIE1jRG9uYWxkCkBAIC04NDQsNiArODY4LDcgQEAKIEJlbiBNb3JnYW4KIERlcmVrIE1vcnIKIEphbWVzIEEgTW9ycmlzb24KK01hcnRpbiBNb3JyaXNvbgogRGVyZWsgTWNUYXZpc2ggTW91bmNlCiBBbGVzc2FuZHJvIE1vdXJhCiBQYWJsbyBNb3V6bwpAQCAtODU4LDYgKzg4Myw3IEBACiBMb3VpcyBNdW5ybwogUi4gRGF2aWQgTXVycmF5CiBNYXR0aSBNw6RraQorSsO2cmcgTcO8bGxlcgogRGFsZSBOYWdhdGEKIEpvaG4gTmFnbGUKIFRha2FoaXJvIE5ha2F5YW1hCkBAIC05MjAsNiArOTQ2LDcgQEAKIFRvZGQgUi4gUGFsbWVyCiBKdWFuIERhdmlkIEliw6HDsWV6IFBhbG9tYXIKIEphbiBQYWx1cworTWF0aGlhcyBQYW56ZW5iw7ZjawogTS4gUGFwaWxsb24KIFBldGVyIFBhcmVudGUKIEFsZXhhbmRyZSBQYXJlbnRlYXUKQEAgLTkyOCw2ICs5NTUsNyBAQAogSGVpa2tpIFBhcnRhbmVuCiBIYXJyaSBQYXNhbmVuCiBHYcOrbCBQYXNncmltYXVkCitBc2hpc2ggTml0aW4gUGF0aWwKIFJhbmR5IFBhdXNjaAogU2FtdWVsZSBQZWRyb25pCiBKdXN0aW4gUGVlbApAQCAtOTQ2LDYgKzk3NCw3IEBACiBCZW5qYW1pbiBQZXRlcnNvbgogSm9lIFBldGVyc29uCiBDaHJpcyBQZXRyaWxsaQorUm91bWVuIFBldHJvdgogQmpvcm4gUGV0dGVyc2VuCiBKdXN0aW4gRC4gUGV0dGl0CiBSb25ueSBQZmFubnNjaG1pZHQKQEAgLTk2Niw3ICs5OTUsOSBAQAogSmVhbi1GcmFuw6dvaXMgUGnDqXJvbm5lCiBPbGVnIFBsYWtob3RueXVrCiBSZW1pIFBvaW50ZWwKK0FyaWVsIFBvbGlhawogR3VpbGhlcm1lIFBvbG8KK0lsbGlhIFBvbG9zdWtoaW4KIE1pY2hhZWwgUG9tcmFuaW5nCiBJdXN0aW4gUG9wCiBDbGF1ZGl1IFBvcGEKQEAgLTk3Niw2ICsxMDA3LDcgQEAKIFBhdWwgUHJlc2NvZAogRG9ub3ZhbiBQcmVzdG9uCiBQYXVsIFByaWNlCitJdWxpaWEgUHJvc2t1cm5pYQogSnlya2kgUHVsbGlhaW5lbgogU3RldmUgUHVyY2VsbAogRWR1YXJkbyBQw6lyZXoKQEAgLTk4NCwxMCArMTAxNiwxMiBAQAogQnJpYW4gUXVpbmxhbgogQW5kZXJzIFF2aXN0CiBUaG9tYXMgUmFjaGVsCitSYW0gUmFjaHVtCiBKw6lyw7RtZSBSYWRpeAogQnVydG9uIFJhZG9ucwogSmVmZiBSYW1uYW5pCiBCcm9kaWUgUmFvCitTZW5rbyBSYXNpYwogQW50dGkgUmFzaW5lbgogU3JpZGhhciBSYXRuYWt1bWFyCiBZc2ogUmF5CkBAIC0xMDE5LDcgKzEwNTMsNyBAQAogSmVhbi1DbGF1ZGUgUmltYmF1bHQKIFZsYWQgUmlzY3V0aWEKIFdlcyBSaXNoZWwKLURhbiBSaXRpCitEYW5pZWwgUml0aQogSnVhbiBNLiBCZWxsbyBSaXZhcwogRGF2aWRlIFJpenpvCiBBbnRob255IFJvYWNoCkBAIC0xMTQ3LDYgKzExODEsNyBAQAogS3JhZ2VuIFNpdGFrZXIKIE1pY2hhZWwgU2xvYW4KIE5pY2sgU2xvYW4KK1bDoWNsYXYgxaBtaWxhdWVyCiBDaHJpc3RvcGhlciBTbWl0aAogRXJpYyBWLiBTbWl0aAogR3JlZ29yeSBQLiBTbWl0aApAQCAtMTIwMCw2ICsxMjM1LDcgQEAKIFDDqXRlciBTemFiw7MKIEFtaXIgU3pla2VseQogQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMKK0hpZGVha2kgVGFrYWhhc2hpCiBJbmRyYSBUYWxpcAogTmVpbCBUYWxsaW0KIEdlb2ZmIFRhbHZvbGEKQEAgLTEyMTEsNiArMTI0Nyw3IEBACiBNb250eSBUYXlsb3IKIEFuYXRvbHkgVGVjaHRvbmlrCiBNaWtoYWlsIFRlcmVraG92CitWaWN0b3IgVGVycsOzbgogUmljaGFyZCBNLiBUZXcKIFRvYmlhcyBUaGVsZW4KIEbDqXZyeSBUaGliYXVsdApAQCAtMTIxOCw2ICsxMjU1LDcgQEAKIE5pY29sYXMgTS4gVGhpw6lyeQogSmFtZXMgVGhvbWFzCiBSb2JpbiBUaG9tYXMKK0JyaWFuIFRob3JuZQogU3RlcGhlbiBUaG9ybmUKIEplcmVteSBUaHVyZ29vZAogRXJpYyBUaWVkZW1hbm4KQEAgLTEzNTIsNiArMTM5MCw3IEBACiBHb3Jkb24gV29ybGV5CiBEYXJyZW4gV29ycmFsbAogVGhvbWFzIFdvdXRlcnMKK0RhbmllbCBXb3puaWFrCiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CiBSb2JlcnQgWGlhbwpAQCAtMTM2NCw2ICsxNDAzLDcgQEAKIERhbm55IFlvbwogUm9yeSBZb3JrZQogR2VvcmdlIFlvc2hpZGEKK0thenVoaXJvIFlvc2hpZGEKIE1hc2F6dW1pIFlvc2hpa2F3YQogQXJuYXVkIFlzbWFsCiBCZXJuYXJkIFl1ZQpkaWZmIC0tZ2l0IGEvTWlzYy9ISVNUT1JZIGIvTWlzYy9ISVNUT1JZCmluZGV4IDgzMjdkY2EuLjgzNDIxY2QgMTAwNjQ0Ci0tLSBhL01pc2MvSElTVE9SWQorKysgYi9NaXNjL0hJU1RPUlkKQEAgLTMsMTMgKzMsNDExMCBAQAogCiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHJlbGVhc2UgbWVzc2FnZXMgZm9yIHByZXZpb3VzIFB5dGhvbiByZWxlYXNlcy4KIEFzIHlvdSByZWFkIG9uIHlvdSBnbyBiYWNrIHRvIHRoZSBkYXJrIGFnZXMgb2YgUHl0aG9uJ3MgaGlzdG9yeS4KLShOb3RlOiBuZXdzIGFib3V0IDIuNWMyIGFuZCBsYXRlciAyLjUgcmVsZWFzZXMgaXMgaW4gdGhlIE1pc2MvTkVXUwotZmlsZSBvZiB0aGUgcmVsZWFzZTI1LW1haW50IGJyYW5jaC4pCiAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI5LVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTYwNDY6IEZpeCBsb2FkaW5nIHNvdXJjZWxlc3MgbGVnYWN5IC5weW8gZmlsZXMuCisKKy0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gX190cnVuY19fIHJldHVybnMgYW4gb2JqZWN0CisgIHdob3NlIF9faW50X18gZ2l2ZXMgYSBub24taW50ZWdlci4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjAxMjogRml4IGEgcmVncmVzc2lvbiBpbiBweWV4cGF0LiBUaGUgcGFyc2VyJ3MgVXNlRm9yZWlnbkRURCgpCisgIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIzLVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCgpLgorCistIElzc3VlICMxNTkyNjogRml4IGNyYXNoIGFmdGVyIG11bHRpcGxlIHJlaW5pdGlhbGl6YXRpb25zIG9mIHRoZSBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjMTU4OTU6IEZpeCBGSUxFIHBvaW50ZXIgbGVhayBpbiBvbmUgZXJyb3IgYnJhbmNoIG9mCisgIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKCkgd2hlbiBmaWxlbmFtZSBwb2ludHMgdG8gYSBweWMvcHlvIGZpbGUsIGNsb3NlaXQKKyAgaXMgZmFsc2UgYW4gYW5kIHNldF9tYWluX2xvYWRlcigpIGZhaWxzLgorCistIEZpeGVzIGZvciBhIGZldyBjcmFzaCBhbmQgbWVtb3J5IGxlYWsgcmVncmVzc2lvbnMgZm91bmQgYnkgQ292ZXJpdHkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTU4ODI6IENoYW5nZSBfZGVjaW1hbCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KKyAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKyAgd2l0aCBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbAorICAoaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KKworLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gZW1haWwudXRpbCB3aGVyZSB0aGUgcGFyc2VkYXRlKCkgYW5kCisgIHBhcnNlZGF0ZV90eigpIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKKyAgbm90IGJlIHBhcnNlZC4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1OTczOiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjb21wYXJpbmcgZGF0ZXRpbWUgdGltZXpvbmUKKyAgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgorICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KKworLSBJc3N1ZSAjMTU5Njk6IGZhdWx0aGFuZGxlciBtb2R1bGU6IHJlbmFtZSBkdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGFuZCBjYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KKyAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkuCisKKy0gX2RlY2ltYWwgbW9kdWxlOiB1c2Ugb25seSBDIDg5IHN0eWxlIGNvbW1lbnRzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwOS1TZXAtMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEzOTkyOiBUaGUgdHJhc2hjYW4gbWVjaGFuaXNtIGlzIG5vdyB0aHJlYWQtc2FmZS4gIFRoaXMgZWxpbWluYXRlcworICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvcgorICBjaGFpbnMgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIKKyAgdHlwZXMuCisKKy0gSXNzdWUgIzE1Nzg0OiBNb2RpZnkgT1NFcnJvci5fX3N0cl9fKCkgdG8gYmV0dGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgZXJybm8gZXJyb3IgbnVtYmVycyBhbmQgV2luZG93cyBlcnJvciBudW1iZXJzLgorCistIElzc3VlICMxNTc4MTogRml4IHR3byBzbWFsbCByYWNlIGNvbmRpdGlvbnMgaW4gaW1wb3J0J3MgbW9kdWxlIGxvY2tpbmcuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTU4NDc6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UsIHdoaWNoIGRpZCBub3QgYWNjZXB0IHR1cGxlcworICBhcyBhcmd1bWVudCBsaXN0cyBhbnltb3JlLgorCistIElzc3VlICMxNTgyODogUmVzdG9yZSBzdXBwb3J0IGZvciBDIGV4dGVuc2lvbnMgaW4gaW1wLmxvYWRfbW9kdWxlKCkuCisKKy0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gL2Rldi91cmFuZG9tIGNhbm5vdAorICBiZSBvcGVuZWQuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24gcGF0Y2guCisKKy0gSXNzdWUgIzEwNjUwOiBEZXByZWNhdGUgdGhlIHdhdGNoZXhwIHBhcmFtZXRlciBvZiB0aGUgRGVjaW1hbC5xdWFudGl6ZSgpCisgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSB3aW5kb3cuZ2V0X3djaCgpIEFQSSBvZiB0aGUgY3Vyc2VzIG1vZHVsZTogcmV0dXJuCisgIGEgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIGFuZCBhbiBpbnRlZ2VyIGZvciBzcGVjaWFsIGtleXMsIGluc3RlYWQgb2YKKyAgYWx3YXlzIHJldHVybmluZyBhbiBpbnRlZ2VyLiBTbyBpdCBpcyBub3cgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggc3BlY2lhbAorICBrZXlzIGxpa2Uga2V5cGFkIGtleXMuCisKKy0gSXNzdWUgIzE0MjIzOiBGaXggd2luZG93LmFkZGNoKCkgb2YgdGhlIGN1cnNlcyBtb2R1bGUgZm9yIHNwZWNpYWwgY2hhcmFjdGVycworICBsaWtlIGN1cnNlcy5BQ1NfSExJTkU6IHRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goaW50KSBhbmQgYWRkY2goYnl0ZXMpIGlzIG5vdworICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRjaCgpL212d2FkZGNoKCkgKGFzIGl0IHdhcyBkb25lIGluIFB5dGhvbiAzLjIpLAorICBpbnN0ZWFkIG9mIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpLiBUaGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKHN0cikgaXMgc3RpbGwKKyAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkX3djaCgpL212d2FkZF93Y2goKSBpZiB0aGUgUHl0aG9uIGN1cnNlcyBpcyBsaW5rZWQKKyAgdG8gbGlibmN1cnNlc3cuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNTgyMjogUmVhbGx5IGVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkCisgIChyZXBsYWNlcyBmaXhlcyBmb3IgSXNzdWUgIzE1NjQ1KS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTgxNDogVGhlIG1lbW9yeXZpZXcgZW5oYW5jZW1lbnRzIGluIDMuMy4wIGFjY2lkZW50YWxseSBwZXJtaXR0ZWQKKyAgdGhlIGhhc2hpbmcgb2YgbXVsdGktZGltZW5zaW9uYWwgbWVtb3J2aWV3cyBhbmQgbWVtb3J5dmlld3Mgd2l0aCBtdWx0aS1ieXRlCisgIGl0ZW0gZm9ybWF0cy4gVGhlIGludGVuZGVkIHJlc3RyaWN0aW9ucyBoYXZlIG5vdyBiZWVuIGRvY3VtZW50ZWQgLSB0aGV5CisgIHdpbGwgYmUgY29ycmVjdGx5IGVuZm9yY2VkIGluIDMuMy4xCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI1LUF1Zy0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1NzM6IG1lbW9yeXZpZXcgY29tcGFyaXNvbnMgYXJlIG5vdyBwZXJmb3JtZWQgYnkgdmFsdWUgd2l0aCBmdWxsCisgIHN1cHBvcnQgZm9yIGFueSB2YWxpZCBzdHJ1Y3QgbW9kdWxlIGZvcm1hdCBkZWZpbml0aW9uLgorCistIElzc3VlICMxNTMxNjogV2hlbiBhbiBpdGVtIGluIHRoZSBmcm9tbGlzdCBmb3IgX19pbXBvcnRfXyBkb2Vzbid0IGV4aXN0LAorICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KKyAgbGV0IHRoYXQgcHJvcGFnYXRlLgorCistIElzc3VlICMxNTc3ODogZW5zdXJlIHRoYXQgc3RyKEltcG9ydEVycm9yKG1zZykpIHJldHVybnMgYSBzdHIKKyAgZXZlbiB3aGVuIG1zZyBpc24ndCBhIHN0ci4KKworLSBJc3N1ZSAjMjA1MTogU291cmNlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBvbmNlIGFnYWluIGNvcnJlY3RseQorICBjb3BpZWQgdG8gdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLiAoVGhlIG1pZ3JhdGlvbiB0byBpbXBvcnRsaWIKKyAgcmVpbnRyb2R1Y2VkIHRoaXMgcHJvYmxlbSBiZWNhdXNlIHRoZXNlIHdhcyBubyByZWdyZXNzaW9uIHRlc3QuIEEgdGVzdAorICBoYXMgYmVlbiBhZGRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gpCisKKy0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBQWVRIT05FWEVDVVRBQkxFIGlzIHNldCBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgUHlPYmplY3RfSXNUcnVlKCkgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKKyAgZXJyb3JzIGNvcnJlY3RseS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0ODQ2OiBpbXBvcnRsaWIuRmlsZUZpbmRlciBub3cgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUKKyAgZGlyZWN0b3J5IGJlaW5nIHNlYXJjaGVkIGlzIHJlbW92ZWQgYWZ0ZXIgYSBwcmV2aW91cyBpbXBvcnQgYXR0ZW1wdAorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMKKyAgY29tcGlsZWQgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyCisKKy0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZAorICB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KKworLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgorCistIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KKyAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgorCistIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgorCistIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgZW1haWwudXRpbHMubG9jYWx0aW1lIHRvIHVzZSBkYXRldGltZS5hc3RpbWV6b25lIGFuZAorICBjb3JyZWN0bHkgaGFuZGxlIGhpc3RvcmljIGNoYW5nZXMgaW4gVVRDIG9mZnNldHMuCisKKy0gSXNzdWUgIzE1MTk5OiBGaXggSmF2YVNjcmlwdCdzIGRlZmF1bHQgTUlNRSB0eXBlIHRvIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQuCisgIFBhdGNoIGJ5IEJvaHVzbGF2IEthYnJkYS4KKworLSBJc3N1ZSAjMTI2NDM6IGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlIG5vdyByZXNwZWN0cyBzeXMuZXhjZXB0aG9vayB3aGVuCisgIGRpc3BsYXlpbmcgZXhjZXB0aW9ucyAoUGF0Y2ggYnkgQWFyb24gSWxlcykKKworLSBJc3N1ZSAjMTM1Nzk6IHN0cmluZy5Gb3JtYXR0ZXIgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCisKKy0gSXNzdWUgIzE1NzkzOiBTdGFjayBjb3JydXB0aW9uIGluIHNzbC5SQU5EX2VnZCgpLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTU5NTogRml4IHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgIGZvciBjZXJ0YWluIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQorICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgorCistIElzc3VlICMxNTcxNTogaW1wb3J0bGliLl9faW1wb3J0X18oKSB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUgdXNlCisgIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KKworLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWNPU1gKKyAgYnkgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgorICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjT1NYLgorCistIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCisKKy0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZworICBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyB3aXRob3V0IHRoZSAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIKKyAgaWRpb20uCisKKy0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZQorICAoMy4zLjBiMiByZWdyZXNzaW9uKS4KKworQyBBUEkKKy0tLS0tCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUganNvbiBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgorICBQYXRjaCBieSBDaHJpcyBSZWJlcnQuCisKKy0gQ3JlYXRlIGEgJ0NvbmN1cnJlbnQgRXhlY3V0aW9uJyBzZWN0aW9uIGluIHRoZSBkb2NzLCBhbmQgc3BsaXQgdXAgdGhlCisgICdPcHRpb25hbCBPcGVyYXRpbmcgU3lzdGVtIFNlcnZpY2VzJyBzZWN0aW9uIHRvIHVzZSBhIG1vcmUgdXNlci1jZW50cmljCisgIGNsYXNzaWZpY2F0aW9uIHNjaGVtZSAoc3BsaXR0aW5nIHRoZW0gYWNyb3NzIHRoZSBuZXcgQ0Ugc2VjdGlvbiwgSVBDIGFuZAorICB0ZXh0IHByb2Nlc3NpbmcpLiBPcGVyYXRpbmcgc3lzdGVtIGxpbWl0YXRvbnMgY2FuIGJlIHJlZmxlY3RlZCB3aXRoCisgIHRoZSBTcGhpbnggYGA6cGxhdGZvcm06YGAgdGFnLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYXMgcGFydCBvZiB0aGUgVGFibGUgb2YKKyAgQ29udGVudHMuCisKKy0gSXNzdWUgIzQ5NjY6IEJyaW5nIHRoZSBzZXF1ZW5jZSBkb2NzIHVwIHRvIGRhdGUgZm9yIHRoZSBQeTNrIHRyYW5zaXRpb24KKyAgYW5kIHRoZSBtYW55IGxhbmd1YWdlIGVuaGFuY2VtZW50cyBzaW5jZSB0aGV5IHdlcmUgb3JpZ2luYWwgd3JpdHRlbgorCistIFRoZSAicGF0aCBpbXBvcnRlciIgbWlzbm9tZXIgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBFcmljIFNub3cncworICBtb3JlLWF3a3dhcmQtYnV0LWF0LWxlYXN0LW5vdC13cm9uZyBzdWdnZXN0aW9uIG9mICJwYXRoIGJhc2VkIGZpbmRlciIgaW4KKyAgdGhlIGltcG9ydCBzeXN0ZW0gcmVmZXJlbmNlIGRvY3MKKworLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGltcG9ydGxpYi5hYmMuRmluZGVyIGFzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gUGF0Y2ggYnkKKyAgRGFuaWVsIEVsbGlzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCisgIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZAorICB0ZXN0cyBpbiB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCisKKy0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZworICB0d28gZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZQorICBvZiB0ZXN0LgorCistIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiB1cmxsaWIgdGVzdHMuIFBhdGNoIGJ5CisgIEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1NjE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlJ3MgaGFuZGxpbmcgb2YgaW52YWxpZAorICBpbnB1dCBkYXRhLiAgUGF0Y2ggYnkgS3VzaGFsIERhcy4KKworQnVpbGQKKy0tLS0tCisKKy0gT3V0cHV0IGxpYiBmaWxlcyBmb3IgUEdPIGJ1aWxkIGludG8gUEdPIGRpcmVjdG9yeS4KKworLSBQaWNrIHVwIDMyLWJpdCBsYXVuY2hlciBmcm9tIFBHTyBkaXJlY3Rvcnkgb24gNjQtYml0IFBHTyBidWlsZC4KKworLSBEcm9wIFBDXHB5dGhvbl9udC5oIGFzIGl0J3Mgbm90IHVzZWQuIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQorICBidWlsZCBzdGVwLgorCistIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsCisgIGFtZDY0IGNvbmZpZ3VyYXRpb24uCisKKy0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCisKKy0gSXNzdWUgIzE1NjQ1OiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEyLUF1Zy0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mICJ5aWVsZCBmcm9tIiB3aGVuIFN0b3BJdGVyYXRpb24gaXMKKyAgcmFpc2VkIGJ5IGEgY3VzdG9tIGl0ZXJhdG9yLgorCistIElzc3VlICMxMzExOTogc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCisgIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgorCistIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBfX2ltcG9ydF9fIHRvIGhhdmUgdGhlIHByb3BlciBkZWZhdWx0CisgIHZhbHVlIG9mIDAgZm9yICdsZXZlbCcgYW5kIHRvIG5vdCBtZW50aW9uIG5lZ2F0aXZlIGxldmVscyBzaW5jZSB0aGV5IGFyZSBub3QKKyAgc3VwcG9ydGVkLgorCistIElzc3VlICMxNTQyNTogRWxpbWluYXRlZCB0cmFjZWJhY2sgbm9pc2UgZnJvbSBtb3JlIHNpdHVhdGlvbnMgaW52b2x2aW5nCisgIGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTQ1Nzg6IFN1cHBvcnQgbW9kdWxlcyByZWdpc3RlcmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5IGFnYWluLgorCistIElzc3VlICMxNTQ2NjogU3RvcCB1c2luZyBUWVBFX0lOVDY0IGluIG1hcnNoYWwsIHRvIG1ha2UgaW1wb3J0bGliLmggKGFuZCBvdGhlcgorICBieXRlIGNvZGUgZmlsZXMpIGVxdWFsIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgc3lzdGVtcy4KKworLSBJc3N1ZSAjMTY5MjMzNTogTW92ZSBpbml0aWFsIGV4Y2VwdGlvbiBhcmdzIGFzc2lnbm1lbnQgdG8KKyAgIkJhc2VFeGNlcHRpb24uX19uZXdfXyIgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgorCistIElzc3VlICMxMjgzNDogRml4IFB5QnVmZmVyX1RvQ29udGlndW91cygpIGZvciBub24tY29udGlndW91cyBhcnJheXMuCisKKy0gSXNzdWUgIzE1NDU2OiBGaXggY29kZSBfX3NpemVvZl9fIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgorCistIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gUHlNb2R1bGVfQ3JlYXRlIHRoYXQgY2F1c2VkIHJlZmVyZW5jZXMgdG8gYmUgbGVha2VkCisgIG9uIHNvbWUgZXJyb3IgcGF0aHMgaGFzIGJlZW4gZml4ZWQuICBQYXRjaCBieSBKdWxpYSBMYXdhbGwuCisKKy0gSXNzdWUgIzE1MzY4OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCBieXRlY29kZSBnZW5lcmF0aW9uIHRvIGJlIG5vbi1kZXRlcm1pbmlzdGljCisgIGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNTIwMjogQ29uc2lzdGVudGx5IHVzZSB0aGUgbmFtZSAiZm9sbG93X3N5bWxpbmtzIiBmb3IgbmV3IHBhcmFtZXRlcnMKKyAgaW4gb3MgYW5kIHNodXRpbCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE1MzE0OiBfX21haW5fXy5fX2xvYWRlcl9fIGlzIG5vdyBzZXQgY29ycmVjdGx5IGR1cmluZyBpbnRlcnByZXRlcgorICBzdGFydHVwLgorCistIElzc3VlICMxNTExMTogV2hlbiBhIG1vZHVsZSBpbXBvcnRlZCB1c2luZyAnZnJvbSBpbXBvcnQnIGhhcyBhbiBJbXBvcnRFcnJvcgorICBpbnNpZGUgaXRzZWxmLCBkb24ndCBtYXNrIHRoYXQgZmFjdCBiZWhpbmQgYSBnZW5lcmljIEltcG9ydEVycm9yIGZvciB0aGUKKyAgbW9kdWxlIGl0c2VsZi4KKworLSBJc3N1ZSAjMTUyOTM6IEFkZCBHQyBzdXBwb3J0IHRvIHRoZSBBU1QgYmFzZSBub2RlIHR5cGUuCisKKy0gSXNzdWUgIzE1MjkxOiBGaXggYSBtZW1vcnkgbGVhayB3aGVyZSBBU1Qgbm9kZXMgd2hlcmUgbm90IHByb3Blcmx5CisgIGRlYWxsb2NhdGVkLgorCistIElzc3VlICMxNTExMDogRml4IHRoZSB0cmFjZWJhY2tzIGdlbmVyYXRlZCBieSAiaW1wb3J0IHh4eCIgdG8gbm90IHNob3cgdGhlCisgIGltcG9ydGxpYiBzdGFjayBmcmFtZXMuCisKKy0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdworICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgorCistIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGgsCisgIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KKworLSBJc3N1ZSAjMTUyMjk6IEFuIE9TRXJyb3Igc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKKyAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgorICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCisKKy0gSXNzdWUgMTUzMDc6IFZpcnR1YWwgZW52aXJvbm1lbnRzIG5vdyB1c2Ugc3ltbGlua3Mgd2l0aCBmcmFtZXdvcmsgYnVpbGRzIG9uCisgIE1hYyBPUyBYLCBsaWtlIG90aGVyIFBPU0lYIGJ1aWxkcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNTQyNDogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5CisgIEx1ZHdpZyBIw6RobmUuCisKKy0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgorCistIElzc3VlICMxNTUwMjogSGF2ZSBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSB3b3JrIG9uIHN5cy5tZXRhX3BhdGggaW5zdGVhZAorICBvZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKworLSBJc3N1ZSAjMTUxNjM6IFB5ZG9jIHNob3VsZG4ndCBsaXN0IF9fbG9hZGVyX18gYXMgbW9kdWxlIGRhdGEuCisKKy0gSXNzdWUgIzE1NDcxOiBEbyBub3QgdXNlIG11dGFibGUgb2JqZWN0cyBhcyBkZWZhdWx0cyBmb3IKKyAgaW1wb3J0bGliLl9faW1wb3J0X18oKS4KKworLSBJc3N1ZSAjMTU1NTk6IFRvIGF2b2lkIGEgcHJvYmxlbWF0aWMgZmFpbHVyZSBtb2RlIHdoZW4gcGFzc2VkIHRvIHRoZSBieXRlcworICBjb25zdHJ1Y3Rvciwgb2JqZWN0cyBpbiB0aGUgaXBhZGRyZXNzIG1vZHVsZSBubyBsb25nZXIgaW1wbGVtZW50IF9faW5kZXhfXworICAodGhleSBzdGlsbCBpbXBsZW1lbnQgX19pbnRfXyBhcyBhcHByb3ByaWF0ZSkKKworLSBJc3N1ZSAjMTU1NDY6IEZpeCBoYW5kbGluZyBvZiBwYXRob2xvZ2ljYWwgaW5wdXQgZGF0YSBpbiB0aGUgcGVlaygpIGFuZAorICByZWFkMSgpIG1ldGhvZHMgb2YgdGhlIEJaMkZpbGUsIEd6aXBGaWxlIGFuZCBMWk1BRmlsZSBjbGFzc2VzLgorCistIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKKyAgZW5kZWQgd2l0aCAnXCcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgb3Muc2NoZWRfZ2V0YWZmaW5pdHkgYW5kCisgIG9zLnNjaGVkX3NldGFmZmluaXR5IG5vdyB1c2UgcmVndWxhciBzZXRzIG9mIGludGVnZXJzIHRvIHJlcHJlc2VudCB0aGUgQ1BVcyBhCisgIHByb2Nlc3MgaXMgcmVzdHJpY3RlZCB0by4KKworLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkgZW11bGF0aW9uCisgIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorCistIElzc3VlICMxNTUxOTogUHJvcGVybHkgZXhwb3NlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBpbiBpbXBvcnRsaWIgKGFuZCB1c2UgdGhlCisgIGNvcnJlY3QgdGVybSBmb3IgaXQpLiBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCisKKy0gSXNzdWUgIzE1NTAyOiBCcmluZyB0aGUgaW1wb3J0bGliIEFCQ3MgaW50byBsaW5lIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCisgIGltcG9ydCBwcm90b2NvbHMgZ2l2ZW4gUEVQIDQyMC4gT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorCistIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KKworLSBJc3N1ZSAjMTU0NjM6IFRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRydW5jYXRlcyBzdHJpbmdzIHRvIDUwMCBjaGFyYWN0ZXJzLAorICBpbnN0ZWFkIG9mIDEwMCwgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGxvbmcgZmlsZSBwYXRocy4KKworLSBJc3N1ZSAjNjA1NjogTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0CisgIHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KKworLSBJc3N1ZSAjMTUzNjQ6IEZpeCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCisKKy0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTU0MTM6IG9zLnRpbWVzKCkgaGFkIGRpc2FwcGVhcmVkIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBzeXMuZ2V0c2l6ZW9mIHRvCisgIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuICBJbml0aWFsCisgIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGVtYWlsLkdlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMKKyAgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IgZXBpbG9ndWUuCisKKy0gSXNzdWUgIzE1MDk0OiBJbmNvcnJlY3RseSBwbGFjZWQgI2VuZGlmIGluIF90a2ludGVyLmMuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgorICB0aGUgZmlyc3Qgb25lLgorCistIElzc3VlICMxMjM1MzogYXJncGFyc2Ugbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgorCistIElzc3VlICMxMDAxNywgaXNzdWUgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAorICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgorCistIElzc3VlICMxNTM5NzogaW5zcGVjdC5nZXRtb2R1bGVuYW1lKCkgaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIGltcG9ydGxpYiB2aWEgYQorICBuZXcgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKSBBUEkuCisKKy0gSXNzdWUgIzE0NjM1OiB0ZWxuZXRsaWIgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KKyAgYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KKworLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzLgorCistIElzc3VlICMxNTM0MzogcGtndXRpbCBub3cgaW5jbHVkZXMgYW4gaXRlcl9pbXBvcnRlcl9tb2R1bGVzIGltcGxlbWVudGF0aW9uIGZvcgorICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgKHNpbWlsYXIgdG8gdGhlIHdheSBpdCBhbHJlYWR5IGhhbmRsZWQKKyAgemlwaW1wb3J0LnppcGltcG9ydGVyKS4KKworLSBJc3N1ZSAjMTUzMTQ6IHJ1bnB5IG5vdyBzZXRzIF9fbWFpbl9fLl9fbG9hZGVyX18gY29ycmVjdGx5LgorCistIElzc3VlICMxNTM1NzogVGhlIGltcG9ydCBlbXVsYXRpb24gaW4gcGtndXRpbCBpcyBub3cgZGVwcmVjYXRlZC4gcGtndXRpbCB1c2VzCisgIGltcG9ydGxpYiBpbnRlcm5hbGx5IHJhdGhlciB0aGFuIHRoZSBlbXVsYXRpb24uCisKKy0gSXNzdWUgIzE1MjMzOiBQeXRob24gbm93IGd1YXJhbnRlZXMgdGhhdCBjYWxsYWJsZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhdGV4aXQKKyAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGluIGEgZGV0ZXJtaW5pc3RpYyBvcmRlci4KKworLSBJc3N1ZSAjMTUyMzg6IHNodXRpbC5jb3B5c3RhdCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KKworLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQgaW4KKyAgdGhlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1MzE1OiBTdXBwb3J0IFZTIDIwMTAgaW4gZGlzdHV0aWxzIGN5Z3dpbmNvbXBpbGVyLgorCistIElzc3VlICMxNTI5NDogRml4IGEgcmVncmVzc2lvbiBpbiBwa2d1dGlsLmV4dGVuZF9wYXRoKCkncyBoYW5kbGluZyBvZiBuZXN0ZWQKKyAgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMxNTA1NjogaW1wLmNhY2hlX2Zyb21fc291cmNlKCkgYW5kIHNvdXJjZV9mcm9tX2NhY2hlKCkgcmFpc2UKKyAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgc2V0IHRvIE5vbmUuCisKKy0gSXNzdWUgIzE1MjU2OiBHcmFtbWF0aWNhbCBtaXN0YWtlIGluIGV4Y2VwdGlvbiByYWlzZWQgYnkgaW1wLmZpbmRfbW9kdWxlKCkuCisKKy0gSXNzdWUgIzU5MzE6IHdzZ2lyZWYgZW52aXJvbiB2YXJpYWJsZSBTRVJWRVJfU09GVFdBUkUgd2lsbCBzcGVjaWZ5IGFuCisgIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZSBDUHl0aG9uLCBKeXRob24gaW5zdGVhZCBvZiBnZW5lcmljICJQeXRob24iLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJtYXhfYnVmZmVyX3NpemUiIG9mIEJ1ZmZlcmVkV3JpdGVyIGFuZAorICBCdWZmZXJlZFJXUGFpciwgZnJvbSB0aGUgaW8gbW9kdWxlLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJ2ZXJzaW9uIiBvZiBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci4KKworLSBJc3N1ZSAjMTQ4MTQ6IEltcGxlbWVudCBtb3JlIGNvbnNpc3RlbnQgb3JkZXJpbmcgYW5kIHNvcnRpbmcgYmVoYXZpb3VyIGZvcgorICBpcGFkZHJlc3Mgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ4MTQ6IGlwYWRkcmVzcyBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCisgIGNvbXBhcmVkIHRvIGFyYml0cmFyeSBvYmplY3RzIGluc3RlYWQgb2YgcmFpc2luZyBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcgZGVjbGFyYXRpb24uCisKKy0gSXNzdWUgIzE0ODE0OiBpcGFkZHJlc3Mgbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgd2hlbgorICBjb25zdHJ1Y3RpbmcgaW5zdGFuY2VzIGRpcmVjdGx5IChjaGFuZ2VzIHBlcm1pdHRlZCBkdXJpbmcgYmV0YSBkdWUgdG8KKyAgcHJvdmlzaW9uYWwgQVBJIHN0YXR1cykuCisKKy0gSXNzdWUgIzE1MjQ3OiBGaWxlSU8gbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yIHBvaW50aW5nCisgIHRvIGEgZGlyZWN0b3J5LgorCistIElzc3VlICMxNTI2MTogU3RvcCBvcy5zdGF0KGZkKSBjcmFzaGluZyBvbiBXaW5kb3dzIHdoZW4gZmQgbm90IG9wZW4uCisKKy0gSXNzdWUgIzE1MTY2OiBJbXBsZW1lbnQgaW1wLmdldF90YWcoKSB1c2luZyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnLgorCistIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBpbXBvcnRsaWIuX19pbml0X18gY2FuJ3QgZmluZAorICBfZnJvemVuX2ltcG9ydGxpYiBpbiBzeXMubW9kdWxlcywgbm90IEltcG9ydEVycm9yLgorCistIElzc3VlICMxNTAzMDogaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlciBub3cgc3VwcG9ydHMgdGhlIG5ldyBzb3VyY2Ugc2l6ZQorICBoZWFkZXIgZmllbGQgaW4gLnB5YyBmaWxlcy4KKworLSBJc3N1ZSAjNTM0NjogUHJlc2VydmUgcGVybWlzc2lvbnMgb2YgbWJveCwgTU1ERiBhbmQgQmFieWwgbWFpbGJveCBmaWxlcyBvbgorICBmbHVzaCgpLgorCistIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4gIFBhdGNoIGJ5CisgIEpha3ViIFdpbGsuCisKKy0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIgY3JlYXRlZCBhbmQKKyAgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuIG1ib3gsIE1NREYgb3IgQmFieWwKKyAgbWFpbGJveC4KKworLSBJc3N1ZSAxMDkyNDogRml4ZWQgY3J5cHQubWtzYWx0KCkgdG8gdXNlIGEgUk5HIHRoYXQgaXMgc3VpdGFibGUgZm9yCisgIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KKworLSBJc3N1ZSAjMTUxODQ6IEVuc3VyZSBjb25zaXN0ZW50IHJlc3VsdHMgb2YgT1MgWCBjb25maWd1cmF0aW9uIHRhaWxvcmluZyBmb3IKKyAgdW5pdmVyc2FsIGJ1aWxkcyBieSBmYWN0b3Jpbmcgb3V0IGNvbW1vbiBPUyBYLXNwZWNpZmljIGN1c3RvbWl6YXRpb25zIGZyb20KKyAgc3lzY29uZmlnLCBkaXN0dXRpbHMuc3lzY29uZmlnLCBkaXN0dXRpbHMudXRpbCwgYW5kIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyCisgIGludG8gYSBuZXcgbW9kdWxlIF9vc3hfc3VwcG9ydC4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE1NjEwOiBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpIG5vdyB1c2VzIGEgJ2xldmVsJyBvZiAwIGluc3RlYWQgb2YgLTEuCisKKy0gSXNzdWVzICMxNTE2OSwgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKCkgdXNlZCBieSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBhbmQKKyAgdXNlZCB0aGUgUHl0aG9uIGNvZGUgaW5zdGVhZC4gTGVhZHMgdG8gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoKSB0byBub3QKKyAgdHJ5IHRvIGluZmVyIHRoZSBzb3VyY2UgcGF0aCBmcm9tIHRoZSBieXRlY29kZSBwYXRoIGFzCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGRvZXMuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTY3NjogTm93ICJtbWFwIiBjaGVjayBmb3IgZW1wdHkgZmlsZXMgYmVmb3JlIGRvaW5nIHRoZQorICBvZmZzZXQgY2hlY2suICBQYXRjaCBieSBTdGV2ZW4gV2lsbGlzLgorCistIElzc3VlICM2NDkzOiBBbiBpc3N1ZSBpbiBjdHlwZXMgb24gV2luZG93cyB0aGF0IGNhdXNlZCBzdHJ1Y3R1cmUgYml0ZmllbGRzCisgIG9mIHR5cGUgY3R5cGVzLmNfdWludDMyIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzE1MTk0OiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuMTEgcmVsZWFzZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NDU4OiBweXRob24tY29uZmlnIGdldHMgYSBuZXcgb3B0aW9uIC0tY29uZmlnZGlyIHRvIHByaW50IHRoZSAkTElCUEwKKyAgdmFsdWUuCisKKy0gTW92ZSBpbXBvcnRsaWIudGVzdC5iZW5jaG1hcmsgdG8gVG9vbHMvaW1wb3J0YmVuY2guCisKKy0gSXNzdWUgIzEyNjA1OiBUaGUgZ2RiIGhvb2tzIGZvciBkZWJ1Z2dpbmcgQ1B5dGhvbiAod2l0aGluIFRvb2xzL2dkYikgaGF2ZSBiZWVuCisgIGVuaGFuY2VkIHRvIHNob3cgaW5mb3JtYXRpb24gb24gbW9yZSBDIGZyYW1lcyByZWxldmFudCB0byBDUHl0aG9uIHdpdGhpbiB0aGUKKyAgInB5LWJ0IiBhbmQgInB5LWJ0LWZ1bGwiIGNvbW1hbmRzOgorCisgICogQyBmcmFtZXMgdGhhdCBhcmUgd2FpdGluZyBvbiB0aGUgR0lMCisgICogQyBmcmFtZXMgdGhhdCBhcmUgZ2FyYmFnZS1jb2xsZWN0aW5nCisgICogQyBmcmFtZXMgdGhhdCBhcmUgZHVlIHRvIHRoZSBpbnZvY2F0aW9uIG9mIGEgUHlDRnVuY3Rpb24KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2gKKyAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUyOTU6IFJlb3JnYW5pemUgYW5kIHJld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0uCisKKy0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weSBtb2R1bGUgYW5kCisgIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KKworLSBJc3N1ZSAjMTUwNTM6IENvcHkgUHl0aG9uIDMuMyBpbXBvcnQgbG9jayBjaGFuZ2Ugbm90aWNlIHRvIGFsbCByZWxldmFudAorICBmdW5jdGlvbnMgaW4gaW1wIGluc3RlYWQgb2YganVzdCBhdCB0aGUgdG9wIG9mIHRoZSByZWxldmFudCBzZWN0aW9uLgorCistIElzc3VlICMxNTI4ODogTGluayB0byB0aGUgdGVybSAibG9hZGVyIiBpbiBub3RlcyBpbiBwa2d1dGlsIGFib3V0IGhvdyB0aGluZ3MKKyAgd29uJ3Qgd29yayBhcyBleHBlY3RlZCBpbiBQeXRob24gMy4zIGFuZCBtYXJrIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25zIGFzCisgICJjaGFuZ2VkIiBzaW5jZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIHdvcmsgd2l0aCBtb2R1bGVzIGRpcmVjdGx5IGltcG9ydGVkIGJ5CisgIGltcG9ydCBpdHNlbGYuCisKKy0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGV4ZWMgb3IKKyAgZXhlY2ZpbGUoKS4KKworLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgZmlsZWNtcC5kaXJjbXAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaAorICBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIF9fc2l6ZW9mX18gdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaCBieQorICBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCisgIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTUxNjg6IE1vdmUgaW1wb3J0bGliLnRlc3QgdG8gdGVzdC50ZXN0X2ltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTUwOTE6IFJlYWN0aXZhdGUgYSB0ZXN0IG9uIFVOSVggd2hpY2ggd2FzIGZhaWxpbmcgdGhhbmtzIHRvIGEKKyAgZm9yZ290dGVuIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGNhbGwuCisKKy0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cy4KKworLSBJc3N1ZSAjMTUzMDA6IEVuc3VyZSB0aGUgdGVtcG9yYXJ5IHRlc3Qgd29ya2luZyBkaXJlY3RvcmllcyBhcmUgaW4gdGhlIHNhbWUKKyAgcGFyZW50IGZvbGRlciB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUgZnJvbSBhIFB5dGhvbiBidWlsZC4KKyAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1Mjg0OiBTa2lwIHtzZW5kLHJlY3Z9bXNnIHRlc3RzIGluIHRlc3Rfc29ja2V0IHdoZW4gSVB2NiBpcyBub3QKKyAgZW5hYmxlZC4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxNTI3NzogRml4IGEgcmVzb3VyY2UgbGVhayBpbiBzdXBwb3J0LnB5IHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4gIFBhdGNoCisgIGJ5IEJyaWFuIEJyYXppbC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQgdG9vbHMKKyAgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzE1MDM3OiBCdWlsZCBPUyBYIGluc3RhbGxlcnMgd2l0aCBsb2NhbCBjb3B5IG9mIG5jdXJzZXMgNS45IGxpYnJhcmllcworICB0byBhdm9pZCBjdXJzZXMudW5nZXRfd2NoIGJ1ZyBwcmVzZW50IGluIG9sZGVyIHZlcnNpb25zIG9mIG5jdXJzZXMgc3VjaCBhcworICB0aG9zZSBzaGlwcGVkIHdpdGggT1MgWC4KKworLSBJc3N1ZSAjMTU1NjA6IEZpeCBidWlsZGluZyBfc3FsaXRlMyBleHRlbnNpb24gb24gT1MgWCB3aXRoIGFuIFNESy4gIEFsc28sIGZvcgorICBPUyBYIGluc3RhbGxlcnMsIGVuc3VyZSBjb25zaXN0ZW50IHNxbGl0ZTMgYmVoYXZpb3IgYW5kIGZlYXR1cmUgYXZhaWxhYmlsaXR5CisgIGJ5IGJ1aWxkaW5nIGEgbG9jYWwgY29weSBvZiBsaWJzcWxpdGUzIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGUgd2lkZSByYW5nZQorICBvZiB2ZXJzaW9ucyBzdXBwbGllZCB3aXRoIHZhcmlvdXMgT1MgWCByZWxlYXNlcy4KKworLSBJc3N1ZSAjODg0NzogRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCisKKy0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgorCistIElzc3VlICMxNTQzMTogQWRkIF9mcmVlemVfaW1wb3J0bGliIHByb2plY3QgdG8gcmVnZW5lcmF0ZSBpbXBvcnRsaWIuaCBvbgorICBXaW5kb3dzLiBQYXRjaCBieSBLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24uCisKKy0gSXNzdWUgIzE0MTk3OiBGb3IgT1MgWCBmcmFtZXdvcmsgYnVpbGRzLCBlbnN1cmUgbGlua3MgdG8gdGhlIHNoYXJlZCBsaWJyYXJ5CisgIGFyZSBjcmVhdGVkIHdpdGggdGhlIHByb3BlciBBQkkgc3VmZml4LgorCistIElzc3VlICMxNDMzMDogRm9yIGNyb3NzIGJ1aWxkcywgZG9uJ3QgdXNlIGhvc3QgcHl0aG9uLCB1c2UgaG9zdCBzZWFyY2ggcGF0aHMKKyAgZm9yIGhvc3QgY29tcGlsZXIuCisKKy0gSXNzdWUgIzE1MjM1OiBBbGxvdyBCZXJrbGV5IERCIHZlcnNpb25zIHVwIHRvIDUuMyB0byBidWlsZCB0aGUgZGJtIG1vZHVsZS4KKworLSBJc3N1ZSAjMTUyNjg6IFNlYXJjaCBjdXJzZXMuaCBpbiAvdXNyL2luY2x1ZGUvbmN1cnNlc3cuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyNy1KdW4tMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gRml4IGEgKG1vc3QgbGlrZWx5KSB2ZXJ5IHJhcmUgbWVtb3J5IGxlYWsgd2hlbiBjYWxsaW5nIG1haW4oKSBhbmQgbm90IGJlaW5nCisgIGFibGUgdG8gZGVjb2RlIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50LgorCistIElzc3VlICMxNDgxNTogVXNlIFB5X3NzaXplX3QgaW5zdGVhZCBvZiBsb25nIGZvciB0aGUgb2JqZWN0IGhhc2gsIHRvCisgIHByZXNlcnZlIGFsbCA2NCBiaXRzIG9mIGhhc2ggb24gV2luNjQuCisKKy0gSXNzdWUgIzEyMjY4OiBGaWxlIHJlYWRsaW5lLCByZWFkbGluZXMgYW5kIHJlYWQoKSBvciByZWFkYWxsKCkgbWV0aG9kcworICBubyBsb25nZXIgbG9zZSBkYXRhIHdoZW4gYW4gdW5kZXJseWluZyByZWFkIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkLgorICBJT0Vycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgZHVlIHRvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcgRUlOVFIKKyAgZnJvbSB3aXRoaW4gdGhlc2UgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTE2MjY6IEFkZCBfU2l6ZVQgZnVuY3Rpb25zIHRvIHN0YWJsZSBBQkkuCisKKy0gSXNzdWUgIzE1MTQ2OiBBZGQgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE1MTQyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgaW5zdGFuY2VzIG9mIHR5cGVzCisgIGNyZWF0ZWQgdXNpbmcgUHlUeXBlX0Zyb21TcGVjKCkuCisKKy0gSXNzdWUgIzE1MDQyOiBBZGQgUHlTdGF0ZV9BZGRNb2R1bGUgYW5kIFB5U3RhdGVfUmVtb3ZlTW9kdWxlLiBBZGQgdmVyc2lvbgorICBndWFyZCBmb3IgUHlfTElNSVRFRF9BUEkgYWRkaXRpb25zLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzEwMDUzOiBEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24KKyAgdGhlIHdvcmsgYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzE1MDk2OiBSZW1vdmVkIHN1cHBvcnQgZm9yIHVyJycgYXMgdGhlIHJhdyBub3RhdGlvbiBpc24ndAorICBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzNzgzOiBHZW5lcmF0b3Igb2JqZWN0cyBub3cgdXNlIHRoZSBpZGVudGlmaWVyIEFQSXMgaW50ZXJuYWxseQorCistIElzc3VlICMxNDg3NDogUmVzdG9yZSBjaGFybWFwIGRlY29kaW5nIHNwZWVkIHRvIHByZS1QRVAgMzkzIGxldmVscy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUwMjY6IHV0Zi0xNiBlbmNvZGluZyBpcyBub3cgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKHVwIHRvIDEweCkuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzExMDIyOiBvcGVuKCkgYW5kIGlvLlRleHRJT1dyYXBwZXIgYXJlIG5vdyBjYWxsaW5nCisgIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaW5zdGVhZCBvZiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICBpbiB0ZXh0IG1vZGUgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIERvbid0IGNoYW5nZSB0ZW1wb3JhcnkgdGhlCisgIGxvY2FsZSBlbmNvZGluZyB1c2luZyBsb2NhbGUuc2V0bG9jYWxlKCksIHVzZSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcKKyAgaW5zdGVhZCBvZiB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzE0NjczOiBBZGQgRXJpYyBTbm93J3Mgc3lzLmltcGxlbWVudGF0aW9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxNTAzODogT3B0aW1pemUgcHl0aG9uIExvY2tzIG9uIFdpbmRvd3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjOTgwMzogRG9uJ3QgY2xvc2UgSURMRSBvbiBzYXZpbmcgaWYgYnJlYWtwb2ludCBpcyBvcGVuLgorICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTIyODg6IENvbnNpZGVyICcwJyBhbmQgJzAuMCcgYXMgdmFsaWQgaW5pdGlhbHZhbHVlCisgIGZvciB0a2ludGVyIFNpbXBsZURpYWxvZy4KKworLSBJc3N1ZSAjMTU1MTI6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHBhcnNlci4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0Njk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGRlcXVlIG9iamVjdHMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1NDg5OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBCeXRlc0lPIG9iamVjdHMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1NDg3OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU1MTQ6IENvcnJlY3QgX19zaXplb2ZfXyBzdXBwb3J0IGZvciBjcHVfc2V0LgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTE4NzogQnVnZml4OiByZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHRlc3Rfc2h1dGlsIHdhcyBsZWF2aW5nCisgIGJlaGluZC4KKworLSBJc3N1ZSAjMTUxNzc6IEFkZGVkIGRpcl9mZCBwYXJhbWV0ZXIgdG8gb3MuZndhbGsoKS4KKworLSBJc3N1ZSAjMTUxNzY6IENsYXJpZmllZCBiZWhhdmlvciwgZG9jdW1lbnRhdGlvbiwgYW5kIGltcGxlbWVudGF0aW9uCisgIG9mIG9zLmxpc3RkaXIoKS4KKworLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgorICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKKyAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KKworLSBJc3N1ZSAjMTUxNjQ6IENoYW5nZSByZXR1cm4gdmFsdWUgb2YgcGxhdGZvcm0udW5hbWUoKSBmcm9tIGEKKyAgcGxhaW4gdHVwbGUgdG8gYSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlLgorCistIFN1cHBvcnQgTWFnZWlhIExpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCisKKy0gSXNzdWUgIzExNjc4OiBTdXBwb3J0IEFyY2ggbGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KKworLSBJc3N1ZSAjMTUxMTg6IENoYW5nZSByZXR1cm4gdmFsdWUgb2Ygb3MudW5hbWUoKSBhbmQgb3MudGltZXMoKSBmcm9tCisgIHBsYWluIHR1cGxlcyB0byBpbW11dGFibGUgaXRlcmFibGUgb2JqZWN0cyB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMKKyAgKHN0cnVjdHNlcSBvYmplY3RzKS4KKworLSBTcGVlZCB1cCBfZGVjaW1hbCBieSBhbm90aGVyIDEwLTE1JSBieSBjYWNoaW5nIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICB0aGF0IHdhcyBsYXN0IGFjY2Vzc2VkLiBJbiB0aGUgcGkgYmVuY2htYXJrICg2NC1iaXQgcGxhdGZvcm0sIHByZWM9OSksCisgIF9kZWNpbWFsIGlzIG5vdyBvbmx5IDEuNXggc2xvd2VyIHRoYW4gZmxvYXQuCisKKy0gUmVtb3ZlIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCB3aGljaCBpcyBub3QgcmVhZHkgZm9yIHByaW1lIHRpbWUuCisKKy0gSXNzdWUgIzE1MTU0OiBBZGQgImRpcl9mZCIgcGFyYW1ldGVyIHRvIG9zLnJtZGlyLCByZW1vdmUgInJtZGlyIgorICBwYXJhbWV0ZXIgZnJvbSBvcy5yZW1vdmUgLyBvcy51bmxpbmsuCisKKy0gSXNzdWUgIzQ0ODk6IEFkZCBhIHNodXRpbC5ybXRyZWUgdGhhdCBpc24ndCBzdXNjZXB0aWJsZSB0byBzeW1saW5rIGF0dGFja3MuCisgIEl0IGlzIHVzZWQgYXV0b21hdGljYWxseSBvbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IG9zLm9wZW5hdCgpCisgIGFuZCBvcy51bmxpbmthdCgpIGZ1bmN0aW9ucy4gTWFpbiBjb2RlIGJ5IE1hcnRpbiB2b24gTMO2d2lzLgorCistIElzc3VlICMxNTE1NjogSFRNTFBhcnNlciBub3cgdXNlcyB0aGUgbmV3ICJodG1sLmVudGl0aWVzLmh0bWw1IiBkaWN0aW9uYXJ5LgorCistIElzc3VlICMxMTExMzogYWRkIGEgbmV3ICJodG1sNSIgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lZCBjaGFyYWN0ZXIKKyAgcmVmZXJlbmNlcyBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZCBhbmQgdGhlIGVxdWl2YWxlbnQgVW5pY29kZQorICBjaGFyYWN0ZXIocykgdG8gdGhlIGh0bWwuZW50aXRpZXMgbW9kdWxlLgorCistIElzc3VlICMxNTExNDogdGhlIHN0cmljdCBtb2RlIG9mIEhUTUxQYXJzZXIgYW5kIHRoZSBIVE1MUGFyc2VFcnJvciBleGNlcHRpb24KKyAgYXJlIGRlcHJlY2F0ZWQgbm93IHRoYXQgdGhlIHBhcnNlciBpcyBhYmxlIHRvIHBhcnNlIGludmFsaWQgbWFya3VwLgorCistIElzc3VlICMzNjY1OiBcdSBhbmQgXFUgZXNjYXBlcyBhcmUgbm93IHN1cHBvcnRlZCBpbiB1bmljb2RlIHJlZ3VsYXIKKyAgZXhwcmVzc2lvbnMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTE1MzogQWRkZWQgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMgdG8gc2ltcGxpZnkgd2hpdGUgYm94CisgIHRlc3Rpbmcgb2YgZ2VuZXJhdG9yIHN0YXRlIHVwZGF0ZXMKKworLSBJc3N1ZSAjMTMwNjI6IEFkZGVkIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMgdG8gc2ltcGxpZnkgdGVzdGluZyBzdGF0ZWZ1bAorICBjbG9zdXJlcworCistIElzc3VlICMxMTAyNDogRml4ZXMgYW5kIGFkZGl0aW9uYWwgdGVzdHMgZm9yIFRpbWUySW50ZXJuYWxkYXRlLgorCistIElzc3VlICMxNDYyNjogTGFyZ2UgcmVmYWN0b3Jpbmcgb2YgZnVuY3Rpb25zIC8gcGFyYW1ldGVycyBpbiB0aGUgb3MgbW9kdWxlLgorICBNYW55IGZ1bmN0aW9ucyBub3cgc3VwcG9ydCAiZGlyX2ZkIiBhbmQgImZvbGxvd19zeW1saW5rcyIgcGFyYW1ldGVyczsKKyAgc29tZSBhbHNvIHN1cHBvcnQgYWNjZXB0aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGluIHBsYWNlIG9mIGEgcGF0aAorICBzdHJpbmcuICBBZGRlZCBvcy5zdXBwb3J0XyogY29sbGVjdGlvbnMgYXMgTEJZTCBoZWxwZXJzLiAgUmVtb3ZlZCBtYW55CisgIGZ1bmN0aW9ucyBvbmx5IHByZXZpb3VzbHkgc2VlbiBpbiAzLjMgYWxwaGEgcmVsZWFzZXMgKG9mdGVuIHN0YXJ0aW5nIHdpdGgKKyAgImYiIG9yICJsIiwgb3IgZW5kaW5nIHdpdGggImF0IikuICBPcmlnaW5hbGx5IHN1Z2dlc3RlZCBieSBTZXJoaXkgU3RvcmNoYWthOworICBpbXBsZW1lbnRlZCBieSBMYXJyeSBIYXN0aW5ncy4KKworLSBJc3N1ZSAjMTUwMDg6IEltcGxlbWVudCBQRVAgMzYyICJTaWduYXR1cmUgT2JqZWN0cyIuCisgIFBhdGNoIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlOiAjMTUxMzg6IGJhc2U2NC51cmxzYWZlX3tlbixkZX1jb2RlKCkgYXJlIG5vdyAzLTR4IGZhc3Rlci4KKworLSBJc3N1ZSAjNDQ0NTgyOiBBZGQgc2h1dGlsLndoaWNoLCBmb3IgZmluZGluZyBwcm9ncmFtcyBvbiB0aGUgc3lzdGVtIHBhdGguCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgRGVtYWluZSwgd2l0aCBsYXRlciBpdGVyYXRpb25zIGJ5IEphbiBLaWxsaWFuCisgIGFuZCBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzE0ODM3OiBTU0wgZXJyb3JzIG5vdyBoYXZlIGBgbGlicmFyeWBgIGFuZCBgYHJlYXNvbmBgIGF0dHJpYnV0ZXMKKyAgZGVzY3JpYmluZyBwcmVjaXNlbHkgd2hhdCBoYXBwZW5lZCBhbmQgaW4gd2hpY2ggT3BlblNTTCBzdWJtb2R1bGUuICBUaGUKKyAgc3RyKCkgb2YgYSBTU0xFcnJvciBpcyBhbHNvIGVuaGFuY2VkIGFjY29yZGluZ2x5LgorCistIElzc3VlICM5NTI3OiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kIHdpbGwgbm93IHN1cHBseSBhIGNsYXNzCisgIHRpbWV6b25lIGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN5c3RlbSBsb2NhbCB0aW1lem9uZSB3aGVuCisgIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTQ2NTM6IGVtYWlsLnV0aWxzLm1rdGltZV90eigpIG5vIGxvbmdlciByZWxpZXMgb24gc3lzdGVtCisgIG1rdGltZSgpIHdoZW4gdGltZXpvbmUgb2ZmZXN0IGlzIHN1cHBsaWVkLgorCistIElzc3VlICMxNDY4NDogemxpYi5jb21wcmVzc29iaigpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKSBub3cgc3VwcG9ydCB0aGUgdXNlCisgIG9mIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyaWVzLiBPcmlnaW5hbCBwYXRjaCBieSBTYW0gUnVzaGluZy4KKworLSBGaXggR3ppcEZpbGUncyBoYW5kbGluZyBvZiBmaWxlbmFtZXMgZ2l2ZW4gYXMgYnl0ZXMgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ3NzI6IFJldHVybiBkZXN0aW5hdGlvbiB2YWx1ZXMgZnJvbSBzb21lIHNodXRpbCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE1MDY0OiBJbXBsZW1lbnQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIGZvciBtdWx0aXByb2Nlc3NpbmcgdHlwZXMKKworLSBJc3N1ZSAjMTUxMDE6IE1ha2UgcG9vbCBmaW5hbGl6ZXIgYXZvaWQgam9pbmluZyBjdXJyZW50IHRocmVhZC4KKworLSBJc3N1ZSAjMTQ2NTc6IFRoZSBmcm96ZW4gaW5zdGFuY2Ugb2YgaW1wb3J0bGliIHVzZWQgZm9yIGJvb3RzdHJhcCBpcyBub3cKKyAgYWxzbyB0aGUgbW9kdWxlIGltcG9ydGVkIGFzIGltcG9ydGxpYi5fYm9vdHN0cmFwLgorCistIElzc3VlICMxNDA1NTogQWRkIF9fc2l6ZW9mX18gc3VwcG9ydCB0byBfZWxlbWVudHRyZWUuCisKKy0gSXNzdWUgIzE1MDU0OiBBIGJ1ZyBpbiB0b2tlbml6ZS50b2tlbml6ZSB0aGF0IGNhdXNlZCBzdHJpbmcgbGl0ZXJhbHMKKyAgd2l0aCAnYicgcHJlZml4ZXMgdG8gYmUgaW5jb3JyZWN0bHkgdG9rZW5pemVkIGhhcyBiZWVuIGZpeGVkLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTAwNjogQWxsb3cgZXF1YWxpdHkgY29tcGFyaXNvbiBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZQorICB0aW1lIG9yIGRhdGV0aW1lIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0OTgyOiBEb2N1bWVudCB0aGF0IHBrZ3V0aWwncyBpdGVyYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgdGhlCisgIG5vbi1zdGFuZGFyZCBpdGVyX21vZHVsZXMoKSBtZXRob2QgdG8gYmUgZGVmaW5lZCBieSBhbiBpbXBvcnRlciAoc29tZXRoaW5nCisgIHRoZSBpbXBvcnRsaWIgaW1wb3J0ZXJzIGRvIG5vdCBkZWZpbmUpLgorCistIElzc3VlICMxNTAzNjogTWFpbGJveCBubyBsb25nZXIgdGhyb3dzIGFuIGVycm9yIGlmIGEgZmx1c2ggaXMgZG9uZQorICBiZXR3ZWVuIG9wZXJhdGlvbnMgd2hlbiByZW1vdmluZyBvciBjaGFuZ2luZyBtdWx0aXBsZSBpdGVtcyBpbiBtYm94LAorICBNTURGLCBvciBCYWJ5bCBtYWlsYm94ZXMuCisKKy0gSXNzdWUgIzE0MDU5OiBJbXBsZW1lbnQgbXVsdGlwcm9jZXNzaW5nLkJhcnJpZXIuCisKKy0gSXNzdWUgIzE1MDYxOiBUaGUgaW5hcHByb3ByaWF0ZWx5IG5hbWVkIGhtYWMuc2VjdXJlX2NvbXBhcmUgaGFzIGJlZW4KKyAgcmVuYW1lZCB0byBobWFjLmNvbXBhcmVfZGlnZXN0LCByZXN0cmljdGVkIHRvIG9wZXJhdGluZyBvbiBieXRlcyBpbnB1dHMKKyAgb25seSBhbmQgaGFkIGl0cyBkb2N1bWVudGF0aW9uIHVwZGF0ZWQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgYm90aCBpdHMKKyAgaW50ZW50IGFuZCBpdHMgbGltaXRhdGlvbnMKKworLSBJc3N1ZSAjMTM4NDE6IE1ha2UgY2hpbGQgcHJvY2Vzc2VzIGV4aXQgdXNpbmcgc3lzLmV4aXQoKSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNDkzNjogY3Vyc2VzX3BhbmVsIHdhcyBjb252ZXJ0ZWQgdG8gUEVQIDMxMjEgYW5kIFBFUCAzODQgQVBJLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE2Njc1NDY6IE9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRtX3pvbmUgYW5kIHRtX2dtdG9mZiBmaWVsZHMKKyAgaW4gc3RydWN0IHRtLCB0aW1lLnN0cnVjdF90aW1lIG9iamVjdHMgcmV0dXJuZWQgYnkgdGltZS5nbXRpbWUoKSwKKyAgdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5zdHJwdGltZSgpIGZ1bmN0aW9ucyBub3cgaGF2ZSB0bV96b25lIGFuZAorICB0bV9nbXRvZmYgYXR0cmlidXRlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFBhdWwgQm9kZGllLgorCistIFJlbmFtZSBhZGp1c3RlZCBhdHRyaWJ1dGUgdG8gYWRqdXN0YWJsZSBpbiB0aW1lLmdldF9jbG9ja19pbmZvKCkgcmVzdWx0LgorCistIElzc3VlICMzNTE4OiBSZW1vdmUgcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgQmFzZU1hbmFnZXIuZnJvbV9hZGRyZXNzKCkKKyAgbWV0aG9kLgorCistIElzc3VlICMxMzg1NzogQWRkZWQgdGV4dHdyYXAuaW5kZW50KCkgZnVuY3Rpb24gKGluaXRpYWwgcGF0Y2ggYnkgRXpyYQorICBCZXJjaCkKKworLSBJc3N1ZSAjMjczNjogQWRkZWQgZGF0ZXRpbWUudGltZXN0YW1wKCkgbWV0aG9kLgorCistIElzc3VlICMxMzg1NDogTWFrZSBtdWx0aXByb2Nlc3NpbmcgcHJvcGVybHkgaGFuZGxlIG5vbi1pbnRlZ2VyCisgIG5vbi1zdHJpbmcgYXJndW1lbnQgdG8gU3lzdGVtRXhpdC4KKworLSBJc3N1ZSAjMTIxNTc6IE1ha2UgcG9vbC5tYXAoKSBlbXB0eSBpdGVyYWJsZXMgY29ycmVjdGx5LiAgSW5pdGlhbAorICBwYXRjaCBieSBtb3VhZC4KKworLSBJc3N1ZSAjMTE4MjM6IGRpc2Fzc2VtYmx5IG5vdyBzaG93cyBhcmd1bWVudCBjb3VudHMgb24gY2FsbHMgd2l0aCBrZXl3b3JkIGFyZ3MuCisKKy0gSXNzdWUgIzE0NzExOiBvcy5zdGF0X2Zsb2F0X3RpbWVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworLSBMWk1BRmlsZSBub3cgYWNjZXB0cyB0aGUgbW9kZXMgInJiIi8id2IiLyJhYiIgYXMgc3lub255bXMgb2YgInIiLyJ3Ii8iYSIuCisKKy0gVGhlIGJ6MiBhbmQgbHptYSBtb2R1bGVzIG5vdyBlYWNoIGNvbnRhaW4gYW4gb3BlbigpIGZ1bmN0aW9uLCBhbGxvd2luZworICBjb21wcmVzc2VkIGZpbGVzIHRvIHJlYWRpbHkgYmUgb3BlbmVkIGluIHRleHQgbW9kZSBhcyB3ZWxsIGFzIGJpbmFyeSBtb2RlLgorCistIEJaMkZpbGUuX19pbml0X18oKSBhbmQgTFpNQUZpbGUuX19pbml0X18oKSBub3cgYWNjZXB0IGEgZmlsZSBvYmplY3QgYXMgdGhlaXIKKyAgZmlyc3QgYXJndW1lbnQsIHJhdGhlciB0aGFuIHJlcXVpcmluZyBhIHNlcGFyYXRlICJmaWxlb2JqIiBhcmd1bWVudC4KKworLSBnemlwLm9wZW4oKSBub3cgYWNjZXB0cyBmaWxlIG9iamVjdHMgYXMgd2VsbCBhcyBmaWxlbmFtZXMuCisKKy0gSXNzdWUgIzE0OTkyOiBvcy5tYWtlZGlycyhwYXRoLCBleGlzdF9vaz1UcnVlKSB3b3VsZCByYWlzZSBhbiBPU0Vycm9yCisgIHdoZW4gdGhlIHBhdGggZXhpc3RlZCBhbmQgaGFkIHRoZSBTX0lTR0lEIG1vZGUgYml0IHNldCB3aGVuIGl0IHdhcworICBub3QgZXhwbGljaXRseSBhc2tlZCBmb3IuICBUaGlzIGlzIG5vIGxvbmdlciBhbiBleGNlcHRpb24gYXMgbWtkaXIKKyAgY2Fubm90IGNvbnRyb2wgaWYgdGhlIE9TIHNldHMgdGhhdCBiaXQgZm9yIGl0IG9yIG5vdC4KKworLSBJc3N1ZSAjMTQ5ODk6IE1ha2UgdGhlIENHSSBlbmFibGUgb3B0aW9uIHRvIGh0dHAuc2VydmVyIGF2YWlsYWJsZSB2aWEgY29tbWFuZAorICBsaW5lLgorCistIElzc3VlICMxNDk4NzogQWRkIGEgbWlzc2luZyBpbXBvcnQgc3RhdGVtZW50IHRvIGluc3BlY3QuCisKKy0gSXNzdWUgIzEwNzk6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vdyBjb3JyZWN0bHkgcGFyc2VzIGFsbCB0aGUgZXhhbXBsZXMKKyAgaW4gUkZDMjA0Ny4gIFRoZXJlIGlzIGEgbmVjZXNzYXJ5IHZpc2libGUgYmVoYXZpb3IgY2hhbmdlOiB0aGUgbGVhZGluZyBhbmQvb3IKKyAgdHJhaWxpbmcgd2hpdGVzcGFjZSBvbiBBU0NJSSBwYXJ0cyBpcyBub3cgcHJlc2VydmVkLgorCistIElzc3VlICMxNDk2OTogQmV0dGVyIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbiBjaGFpbmluZyBpbiBjb250ZXh0bGliLkV4aXRTdGFjaworCistIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKKyAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxNDk2MzogQ29udmVydCBjb250ZXh0bGliLkV4aXRTdGFjay5fX2V4aXRfXyB0byB1c2UgYW4gaXRlcmF0aXZlCisgIGFsZ29yaXRobSAoUGF0Y2ggYnkgQWxvbiBIb3JldikKKworLSBJc3N1ZSAjMTQ3ODU6IEFkZCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSB0byBoZWxwIGRlYnVnIGxvdy1sZXZlbCBtZW1vcnkKKyAgYWxsb2NhdGlvbiBpc3N1ZXMKKworLSBJc3N1ZSAjMTQ0NDM6IEVuc3VyZSB0aGF0IC5weSBmaWxlcyBhcmUgYnl0ZS1jb21waWxlZCB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbgorICBleGVjdXRhYmxlIHdpdGhpbiBiZGlzdF9ycG0gZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBSUE0KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzEzNzgzOiBJbmFkdmVydGVudCBhZGRpdGlvbnMgdG8gdGhlIHB1YmxpYyBDIEFQSSBpbiB0aGUgUEVQIDM4MAorICBpbXBsZW1lbnRhdGlvbiBoYXZlIGVpdGhlciBiZWVuIHJlbW92ZWQgb3IgbWFya2VkIGFzIHByaXZhdGUgaW50ZXJmYWNlcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1MDAwOiBTdXBwb3J0IHRoZSAidW5pcXVlIiB4MzIgYXJjaGl0ZWN0dXJlIGluIF9wb3NpeHN1YnByb2Nlc3MuYy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTA4MTogRG9jdW1lbnQgUHlTdGF0ZV9GaW5kTW9kdWxlLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE0ODE0OiBBZGRlZCBmaXJzdCBkcmFmdCBvZiBpcGFkZHJlc3MgbW9kdWxlIEFQSSByZWZlcmVuY2UKKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE0NzY5OiB0ZXN0X2NhcGkgbm93IGhhcyBTa2lwaXRlbVRlc3QsIHdoaWNoIGNsZXZlcmx5IGNoZWNrcworICBmb3IgInBhcml0eSIgYmV0d2VlbiBQeUFyZ19QYXJzZVR1cGxlKCkgYW5kIHRoZSBQeXRob24vZ2V0YXJncy5jIHN0YXRpYworICBmdW5jdGlvbiBza2lwaXRlbSgpIGZvciBhbGwgcG9zc2libGUgImZvcm1hdCB1bml0cyIuCisKKy0gdGVzdF9ubnRwbGliIG5vdyB0b2xlcmF0ZXMgYmVpbmcgcnVuIGZyb20gYmVoaW5kIE5OVFAgZ2F0ZXdheXMgdGhhdCBhZGQKKyAgIlgtQW50aXZpcnVzIiBoZWFkZXJzIHRvIGFydGljbGVzCisKKy0gSXNzdWUgIzE1MDQzOiB0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MKKyAgYmxvY2sgbG9hZGluZyBvZiB0aGUgZ2RiIGhvb2tzCisKKy0gSXNzdWUgIzE0OTYzOiBBZGQgdGVzdCBjYXNlcyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIGJlaGF2aW91cgorICBpbiBjb250ZXh0bGliLkV4aXRTdGFjayAoSW5pdGlhbCBwYXRjaCBieSBBbG9uIEhvcmV2KQorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTM1OTA6IEltcHJvdmUgc3VwcG9ydCBmb3IgT1MgWCBYY29kZSA0OgorICAgICogVHJ5IHRvIGF2b2lkIGJ1aWxkaW5nIFB5dGhvbiBvciBleHRlbnNpb24gbW9kdWxlcyB3aXRoIHByb2JsZW1hdGljCisgICAgICBsbHZtLWdjYyBjb21waWxlci4KKyAgICAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93CisgICAgICBjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHBwYyBhbmQKKyAgICAgIHBwYzY0IGFyY2hzIHdoZW4gbm90IGF2YWlsYWJsZS4KKyAgICAqIFNpbmNlIFhjb2RlIDQgbm8gbG9uZ2VyIGluc3RhbGwgU0RLcyBpbiBkZWZhdWx0IGxvY2F0aW9ucywKKyAgICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcgaW5zdGFsbGVkIGhlYWRlcnMKKyAgICAgIGFuZCBsaWJzIGlmIHRoZSBTREsgdXNlZCB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90CisgICAgICBhdmFpbGFibGUuCisgICAgKiBVcGRhdGUgLi9jb25maWd1cmUgdG8gdXNlIGJldHRlciBkZWZhdWx0cyBmb3IgdW5pdmVyc2FsIGJ1aWxkczsKKyAgICAgIGluIHBhcnRpY3VsYXIsIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz15ZXMgdXNlcyB0aGUgWGNvZGUgZGVmYXVsdAorICAgICAgU0RLIGFuZCAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIG5vdyBkZWZhdWx0cyB0byAiaW50ZWwiIGlmIHBwYworICAgICAgbm90IGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTQyMjU6IEZpeCBVbmljb2RlIHN1cHBvcnQgZm9yIGN1cnNlcyAoIzEyNTY3KSBvbiBPUyBYCisKKy0gSXNzdWUgIzE0OTI4OiBGaXggaW1wb3J0bGliIGJvb3RzdHJhcCBpc3N1ZXMgYnkgdXNpbmcgYSBjdXN0b20gZXhlY3V0YWJsZQorICAoTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYikgdG8gYnVpbGQgUHl0aG9uL2ltcG9ydGxpYi5oLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAzMS1NYXktMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0ODM1OiBNYWtlIHBsaXN0bGliIG91dHB1dCBlbXB0eSBhcnJheXMgJiBkaWN0cyBsaWtlIE9TIFguCisgIFBhdGNoIGJ5IFNpZG5leSBTYW4gTWFydMOtbi4KKworLSBJc3N1ZSAjMTQ3NDQ6IFVzZSB0aGUgbmV3IF9QeVVuaWNvZGVXcml0ZXIgaW50ZXJuYWwgQVBJIHRvIHNwZWVkIHVwCisgIHN0ciVhcmdzIGFuZCBzdHIuZm9ybWF0KGFyZ3MpLgorCistIElzc3VlICMxNDkzMDogTWFrZSBtZW1vcnl2aWV3IG9iamVjdHMgd2Vha3JlZmFibGUuCisKKy0gSXNzdWUgIzE0Nzc1OiBGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlCisgIGNvbGxlY3RvciByZXBlYXRlZGx5IHRyeWluZyB0byB1bnRyYWNrIGRpY3RzLgorCistIElzc3VlICMxNDg1NzogZml4IHJlZ3Jlc3Npb24gaW4gcmVmZXJlbmNlcyB0byBQRVAgMzEzNSBpbXBsaWNpdCBfX2NsYXNzX18KKyAgY2xvc3VyZSB2YXJpYWJsZSAoUmVvcGVucyBpc3N1ZSAjMTIzNzApCisKKy0gSXNzdWUgIzE0NzEyIChQRVAgNDA1KTogVmlydHVhbCBlbnZpcm9ubWVudHMuIEltcGxlbWVudGVkIGJ5IFZpbmF5IFNhamlwLgorCistIElzc3VlICMxNDY2MCAoUEVQIDQyMCk6IE5hbWVzcGFjZSBwYWNrYWdlcy4gSW1wbGVtZW50ZWQgYnkgRXJpYyBTbWl0aC4KKworLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKKyAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgorICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCisKKy0gSXNzdWUgIzkyNjA6IEEgZmluZXItZ3JhaW5lZCBpbXBvcnQgbG9jay4gIE1vc3Qgb2YgdGhlIGltcG9ydCBzZXF1ZW5jZQorICBub3cgdXNlcyBwZXItbW9kdWxlIGxvY2tzIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGVsaW1pbmF0aW5nCisgIHdlbGwta25vd24gaXNzdWVzIHdpdGggdGhyZWFkcyBhbmQgaW1wb3J0cy4KKworLSBJc3N1ZSAjMTQ2MjQ6IFVURi0xNiBkZWNvZGluZyBpcyBub3cgM3ggdG8gNHggZmFzdGVyIG9uIHZhcmlvdXMgaW5wdXRzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIGFzZGxfc2VxIGFuZCBhc2RsX2ludF9zZXEgYXJlIG5vdyBQeV9zc2l6ZV90IHNpemVkLgorCistIElzc3VlICMxNDEzMyAoUEVQIDQxNSk6IEltcGxlbWVudCBzdXBwcmVzc2lvbiBvZiBfX2NvbnRleHRfXyBkaXNwbGF5IHdpdGggYW4KKyAgYXR0cmlidXRlIG9uIEJhc2VFeGNlcHRpb24uIFRoaXMgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG1lY2hhbmlzbSBvZiBQRVAgNDA5LgorCistIElzc3VlICMxNDQxNzogTXV0YXRpbmcgYSBkaWN0IGR1cmluZyBsb29rdXAgbm93IHJlc3RhcnRzIHRoZSBsb29rdXAgaW5zdGVhZAorICBvZiByYWlzaW5nIGEgUnVudGltZUVycm9yICh1bmRvZXMgaXNzdWUgIzE0MjA1KS4KKworLSBJc3N1ZSAjMTQ3Mzg6IFNwZWVkLXVwIFVURi04IGRlY29kaW5nIG9uIG5vbi1BU0NJSSBkYXRhLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcworICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCisKKy0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0CisgIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgorICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE0NjkwOiBVc2UgbW9ub3RvbmljIGNsb2NrIGluc3RlYWQgb2Ygc3lzdGVtIGNsb2NrIGluIHRoZSBzY2hlZCwKKyAgc3VicHJvY2VzcyBhbmQgdHJhY2UgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCisgIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCisKKy0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgorCistIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KKyAgYmRpc3RfcnBtLiBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxNDkyOTogU3RvcCBJZGxlIDMueCBmcm9tIGNsb3Npbmcgb24gVW5pY29kZSBkZWNvZGUgZXJyb3JzIHdoZW4KKyAgZ3JlcHBpbmcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxMjUxNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCBpZiBpdCBnZXRzIHRvIEVPRiB3aGlsZSBwYXJzaW5nCisgIGEgTUlNRSBwYXJ0IHdpdGhvdXQgc2VlaW5nIHRoZSBjbG9zaW5nIE1JTUUgYm91bmRhcnkuCisKKy0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJZGxlLgorICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cworICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTY3MjU2ODogZW1haWwgbm93IGFsd2F5cyBkZWNvZGVzIGJhc2U2NCBwYXlsb2FkcywgYWRkaW5nIHBhZGRpbmcgYW5kCisgIGlnbm9yaW5nIG5vbi1iYXNlNjQtYWxwaGFiZXQgY2hhcmFjdGVycyBpZiBuZWVkZWQsIGFuZCByZWdpc3RlcmluZyBkZWZlY3RzCisgIGZvciBhbnkgc3VjaCBwcm9ibGVtcy4KKworLSBJc3N1ZSAjMTQ5MjU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3Qgd2hlbiB0aGUgcGFyc2VyIGRlY2lkZXMgdGhhdCB0aGVyZQorICBpcyBhIG1pc3NpbmcgaGVhZGVyL2JvZHkgc2VwYXJhdG9yIGxpbmUuICBNYWxmb3JtZWRIZWFkZXJEZWZlY3QsIHdoaWNoIHRoZQorICBleGlzdGluZyBjb2RlIHdvdWxkIG5ldmVyIGFjdHVhbGx5IGdlbmVyYXRlLCBpcyBkZXByZWNhdGVkLgorCistIElzc3VlICMxMDM2NTogRmlsZSBvcGVuIGRpYWxvZyBub3cgd29ya3MgaW5zdGVhZCBvZiBjcmFzaGluZyBldmVuIHdoZW4KKyAgdGhlIHBhcmVudCB3aW5kb3cgaXMgY2xvc2VkIGJlZm9yZSB0aGUgZGlhbG9nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjODczOTogVXBkYXRlZCBzbXRwZCB0byBzdXBwb3J0IFJGQyA1MzIxLCBhbmQgYWRkZWQgc3VwcG9ydCBmb3IgdGhlCisgIFJGQyAxODcwIFNJWkUgZXh0ZW5zaW9uLgorCistIElzc3VlICM2NjUxOTQ6IEFkZGVkIGEgbG9jYWx0aW1lIGZ1bmN0aW9uIHRvIGVtYWlsLnV0aWxzIHRvIHByb3ZpZGUgYW4KKyAgYXdhcmUgbG9jYWwgZGF0ZXRpbWUgZm9yIHVzZSBpbiBzZXR0aW5nIERhdGUgaGVhZGVycy4KKworLSBJc3N1ZSAjMTI1ODY6IEFkZGVkIG5ldyBwcm92aXNpb25hbCBwb2xpY2llcyB0aGF0IGltcGxlbWVudCBjb252ZW5pZW50CisgIHVuaWNvZGUgc3VwcG9ydCBmb3IgZW1haWwgaGVhZGVycy4gIFNlZSBXaGF0J3MgTmV3IGZvciBkZXRhaWxzLgorCistIElzc3VlICMxNDczMTogUmVmYWN0b3JlZCBlbWFpbCBQb2xpY3kgZnJhbWV3b3JrIHRvIHN1cHBvcnQgZnVsbCBiYWNrd2FyZAorICBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMiBieSBkZWZhdWx0IHlldCBhbGxvdyBmb3IgdGhlIGludHJvZHVjdGlvbiBvZgorICBuZXcgZmVhdHVyZXMgdGhyb3VnaCBuZXcgcG9saWNpZXMuICBOb3RlIHRoYXQgUG9saWN5Lm11c3RfYmVfN2JpdCBpcyByZW5hbWVkCisgIHRvIGN0ZV90eXBlLgorCistIElzc3VlICMxNDg3NjogVXNlIHVzZXItc2VsZWN0ZWQgZm9udCBmb3IgaGlnaGxpZ2h0IGNvbmZpZ3VyYXRpb24uCisKKy0gSXNzdWUgIzE0OTIwOiBGaXggdGhlIGhlbHAodXJsbGliLnBhcnNlKSBmYWlsdXJlIG9uIGxvY2FsZSBDIG9uIHRlcm1pbmFscy4KKyAgSGF2ZSBhc2NpaSBjaGFyYWN0ZXJzIGluIGhlbHAuCisKKy0gSXNzdWUgIzE0NTQ4OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBmaW5hbGl6ZXJzIGNoZWNrIHBpZCBiZWZvcmUKKyAgcnVubmluZyB0byBjb3BlIHdpdGggcG9zc2liaWxpdHkgb2YgZ2MgcnVubmluZyBqdXN0IGFmdGVyIGZvcmsuCisKKy0gSXNzdWUgIzE0ODYzOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2Ygb3MuZmRvcGVuKCkgdG8gcmVmbGVjdCB0aGUKKyAgZmFjdCB0aGF0IGl0J3Mgb25seSBhIHRoaW4gd3JhcHBlciBhcm91bmQgb3BlbigpIGFueW1vcmUuCisKKy0gSXNzdWUgIzE0MDM2OiBBZGQgYW4gYWRkaXRpb25hbCBjaGVjayB0byB2YWxpZGF0ZSB0aGF0IHBvcnQgaW4gdXJscGFyc2UgZG9lcworICBub3QgZ28gaW4gaWxsZWdhbCByYW5nZSBhbmQgcmV0dXJucyBOb25lLgorCistIElzc3VlICMxNDg2MjogQWRkIG1pc3NpbmcgbmFtZXMgdG8gb3MuX19hbGxfXworCistIElzc3VlICMxNDg3NTogVXNlIGZsb2F0KCdpbmYnKSBpbnN0ZWFkIG9mIGZsb2F0KCcxZTY2NjY2JykgaW4gdGhlIGpzb24gbW9kdWxlLgorCistIElzc3VlICMxMzU4NTogQWRkZWQgY29udGV4dGxpYi5FeGl0U3RhY2sKKworLSBQRVAgMzE0NCwgSXNzdWUgIzE0ODE0OiBBZGRlZCB0aGUgaXBhZGRyZXNzIG1vZHVsZQorCistIElzc3VlICMxNDQyNjogQ29ycmVjdCB0aGUgRGF0ZSBmb3JtYXQgaW4gRXhwaXJlcyBhdHRyaWJ1dGUgb2YgU2V0LUNvb2tpZQorICBIZWFkZXIgaW4gQ29va2llLnB5LgorCistIElzc3VlICMxNDU4ODogVGhlIHR5cGVzIG1vZHVsZSBub3cgcHJvdmlkZSBuZXdfY2xhc3MoKSBhbmQgcHJlcGFyZV9jbGFzcygpCisgIGZ1bmN0aW9ucyB0byBzdXBwb3J0IFBFUCAzMTE1IGNvbXBsaWFudCBkeW5hbWljIGNsYXNzIGNyZWF0aW9uLiBQYXRjaCBieQorICBEYW5pZWwgVXJiYW4gYW5kIE5pY2sgQ29naGxhbi4KKworLSBJc3N1ZSAjMTMxNTI6IEFsbG93IHRvIHNwZWNpZnkgYSBjdXN0b20gdGFic2l6ZSBmb3IgZXhwYW5kaW5nIHRhYnMgaW4KKyAgdGV4dHdyYXAuIFBhdGNoIGJ5IEpvaG4gRmV1ZXJzdGVpbi4KKworLSBJc3N1ZSAjMTQ3MjE6IFNlbmQgdGhlIGNvcnJlY3QgJ0NvbnRlbnQtbGVuZ3RoOiAwJyBoZWFkZXIgd2hlbiB0aGUgYm9keSBpcyBhbgorICBlbXB0eSBzdHJpbmcgJycuIEluaXRpYWwgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQXJ2ZSBLbnVkc2VuLgorCistIElzc3VlICMxNDA3MjogRml4IHBhcnNpbmcgb2YgJ3RlbCcgVVJJcyBpbiB1cmxwYXJzZSBieSBtYWtpbmcgdGhlIGNoZWNrIGZvcgorICBwb3J0cyBzdHJpY3Rlci4KKworLSBJc3N1ZSAjOTM3NDogR2VuZXJpYyBwYXJzaW5nIG9mIHF1ZXJ5IGFuZCBmcmFnbWVudCBwb3J0aW9ucyBvZiB1cmwgZm9yIGFueQorICBzY2hlbWUuIFN1cHBvcnRlZCBib3RoIGJ5IFJGQzM5ODYgYW5kIFJGQzIzOTYuCisKKy0gSXNzdWUgIzE0Nzk4OiBGaXggdGhlIGZ1bmN0aW9ucyBpbiBweWNsYnIgdG8gcmFpc2UgYW4gSW1wb3J0RXJyb3IKKyAgd2hlbiB0aGUgZmlyc3QgcGFydCBvZiBhIGRvdHRlZCBuYW1lIGlzIG5vdCBhIHBhY2thZ2UuIFBhdGNoIGJ5CisgIFhhdmllciBkZSBHYXllLgorCistIElzc3VlICMxMjA5ODogbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgbm93IHN0YXJ0cyBjaGlsZCBwcm9jZXNzZXMKKyAgdXNpbmcgdGhlIHNhbWUgc3lzLmZsYWdzIGFzIHRoZSBjdXJyZW50IHByb2Nlc3MuICBJbml0aWFsIHBhdGNoIGJ5CisgIFNlcmdleSBNZXplbnRzZXYuCisKKy0gSXNzdWUgIzEzMDMxOiBTbWFsbCBzcGVlZC11cCBmb3IgdGFyZmlsZSB3aGVuIHVuemlwcGluZyB0YXJmaWxlcy4KKyAgUGF0Y2ggYnkgSnVzdGluIFBlZWwuCisKKy0gSXNzdWUgIzE0NzgwOiB1cmxsaWIucmVxdWVzdC51cmxvcGVuKCkgbm93IGhhcyBhIGBgY2FkZWZhdWx0YGAgYXJndW1lbnQKKyAgdG8gdXNlIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlLiAgSW5pdGlhbCBwYXRjaCBieSBKYW1lcyBPYWtsZXkuCisKKy0gSXNzdWUgIzE0ODI5OiBGaXggYmlzZWN0IGFuZCByYW5nZSgpIGluZGV4aW5nIHdpdGggbGFyZ2UgaW5kaWNlcworICAoPj0gMiAqKiAzMikgdW5kZXIgNjQtYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzE0NzMyOiBUaGUgX2NzdiBtb2R1bGUgbm93IHVzZXMgUEVQIDMxMjEgbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE0ODA5OiBBZGQgSFRUUCBzdGF0dXMgY29kZXMgaW50cm9kdWNlZCBieSBSRkMgNjU4NSB0byBodHRwLnNlcnZlcgorICBhbmQgaHR0cC5jbGllbnQuIFBhdGNoIGJ5IEV1bmdKdW4gWWkuCisKKy0gSXNzdWUgIzE0Nzc3OiB0a2ludGVyIG1heSByZXR1cm4gdW5kZWNvZGVkIFVURi04IGJ5dGVzIGFzIGEgc3RyaW5nIHdoZW4KKyAgYWNjZXNzaW5nIHRoZSBUayBjbGlwYm9hcmQuICBNb2RpZnkgY2xpcGJvYWRfZ2V0KCkgdG8gZmlyc3QgcmVxdWVzdCB0eXBlCisgIFVURjhfU1RSSU5HIHdoZW4gbm8gc3BlY2lmaWMgdHlwZSBpcyByZXF1ZXN0ZWQgaW4gYW4gWDExIHdpbmRvd2luZworICBlbnZpcm9ubWVudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IGRlZmF1bHQgdHlwZSBTVFJJTkcgaWYgdGhhdCBmYWlscy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKKy0gSXNzdWUgIzE0NzczOiBGaXggb3MuZndhbGsoKSBmYWlsaW5nIG9uIGRhbmdsaW5nIHN5bWxpbmtzLgorCistIElzc3VlICMxMjU0MTogQmUgbGVuaWVudCB3aXRoIHF1b3RlcyBhcm91bmQgUmVhbG0gZmllbGQgb2YgSFRUUCBCYXNpYworICBBdXRoZW50YXRpb24gaW4gdXJsbGliMi4KKworLSBJc3N1ZSAjMTQ4MDc6IG1vdmUgdW5kb2N1bWVudGVkIHRhcmZpbGUuZmlsZW1vZGUoKSB0byBzdGF0LmZpbGVtb2RlKCkgYW5kIGFkZAorICBkb2MgZW50cnkuIEFkZCB0YXJmaWxlLmZpbGVtb2RlIGFsaWFzIHdpdGggZGVwcmVjYXRpb24gd2FybmluZy4KKworLSBJc3N1ZSAjMTM4MTU6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBub3cgcmV0dXJucyBpby5CdWZmZXJlZFJlYWRlciBvYmplY3RzLgorCistIElzc3VlICMxNDUzMjogQWRkIGEgc2VjdXJlX2NvbXBhcmUoKSBoZWxwZXIgdG8gdGhlIGhtYWMgbW9kdWxlLCB0byBtaXRpZ2F0ZQorICB0aW1pbmcgYXR0YWNrcy4gUGF0Y2ggYnkgSm9uIE9iZXJoZWlkZS4KKworLSBBZGQgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkuCisKKy0gSXNzdWUgIzE0MzY2OiBTdXBwb3J0IGx6bWEgY29tcHJlc3Npb24gaW4gemlwIGZpbGVzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMzk1OTogSW50cm9kdWNlIGltcG9ydGxpYi5maW5kX2xvYWRlcigpIGFuZCBkb2N1bWVudAorICBpbXAuZmluZF9tb2R1bGUvbG9hZF9tb2R1bGUgYXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMTQwODI6IHNodXRpbC5jb3B5MigpIG5vdyBjb3BpZXMgZXh0ZW5kZWQgYXR0cmlidXRlcywgaWYgcG9zc2libGUuCisgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKworLSBJc3N1ZSAjMTM5NTk6IE1ha2UgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLmxvYWRfbW9kdWxlKCkvZ2V0X2ZpbGVuYW1lKCkgYW5kCisgIGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpIGhhdmUgdGhlaXIgc2luZ2xlCisgIGFyZ3VtZW50IGJlIG9wdGlvbmFsLiBBbGxvd3MgZm9yIHRoZSByZXBsYWNlbWVudCAoYW5kIHRodXMgZGVwcmVjYXRpb24pIG9mCisgIGltcC5sb2FkX3NvdXJjZSgpL2xvYWRfcGFja2FnZSgpL2xvYWRfY29tcGlsZWQoKS4KKworLSBJc3N1ZSAjMTM5NTk6IGltcC5nZXRfc3VmZml4ZXMoKSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiB0aGUgbmV3CisgIGF0dHJpYnV0ZXMgb24gaW1wb3J0bGliLm1hY2hpbmVyeTogU09VUkNFX1NVRkZJWEVTLCBERUJVR19CWVRFQ09ERV9TVUZGSVhFUywKKyAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywgYW5kIEVYVEVOU0lPTl9TVUZGSVhFUy4gVGhpcworICBsZWQgdG8gYW4gaW5kaXJlY3QgZGVwcmVjYXRpb24gb2YgaW5zcGVjdC5nZXRtb2R1bGVpbmZvKCkuCisKKy0gSXNzdWUgIzE0NjYyOiBQcmV2ZW50IHNodXRpbCBmYWlsdXJlcyBvbiBPUyBYIHdoZW4gZGVzdGluYXRpb24gZG9lcyBub3QKKyAgc3VwcG9ydCBjaGZsYWcgb3BlcmF0aW9ucy4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKworLSBJc3N1ZSAjMTQxNTc6IEZpeCB0aW1lLnN0cnB0aW1lIGZhaWxpbmcgd2l0aG91dCBhIHllYXIgb24gRmVicnVhcnkgMjl0aC4KKyAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxNDc1MzogTWFrZSBtdWx0aXByb2Nlc3NpbmcncyBoYW5kbGluZyBvZiBuZWdhdGl2ZSB0aW1lb3V0cworICB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uIDMuMi4KKworLSBJc3N1ZSAjMTQ1ODM6IEZpeCBpbXBvcnRsaWIgYnVnIHdoZW4gYSBwYWNrYWdlJ3MgX19pbml0X18ucHkgd291bGQgZmlyc3QKKyAgaW1wb3J0IG9uZSBvZiBpdHMgbW9kdWxlcyB0aGVuIHJhaXNlIGFuIGVycm9yLgorCistIElzc3VlICMxNDc0MTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgRWxsaXBzaXMgKCcuLi4nKSBpbiBwYXJzZXIgbW9kdWxlLgorCistIElzc3VlICMxNDY5NzogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3Igc2V0IGRpc3BsYXlzIGFuZCBzZXQgY29tcHJlaGVuc2lvbnMgaW4KKyAgcGFyc2VyIG1vZHVsZS4KKworLSBJc3N1ZSAjMTQ3MDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yICdyYWlzZSAuLi4gZnJvbScgaW4gcGFyc2VyIG1vZHVsZS4KKworLSBBZGQgc3VwcG9ydCBmb3IgdGltZW91dHMgdG8gdGhlIGFjcXVpcmUoKSBtZXRob2RzIG9mCisgIG11bHRpcHJvY2Vzc2luZydzIGxvY2svc2VtYXBob3JlL2NvbmRpdGlvbiBwcm94aWVzLgorCistIElzc3VlICMxMzk4OTogQWRkIHN1cHBvcnQgZm9yIHRleHQgbW9kZSB0byBnemlwLm9wZW4oKS4KKworLSBJc3N1ZSAjMTQxMjc6IFRoZSBvcy5zdGF0KCkgcmVzdWx0IG9iamVjdCBub3cgcHJvdmlkZXMgdGhyZWUgYWRkaXRpb25hbAorICBmaWVsZHM6IHN0X2N0aW1lX25zLCBzdF9tdGltZV9ucywgYW5kIHN0X2F0aW1lX25zLCBwcm92aWRpbmcgdGhvc2UgdGltZXMgYXMgYW4KKyAgaW50ZWdlciB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4gIFRoZSBmdW5jdGlvbnMgb3MudXRpbWUoKSwgb3MubHV0aW1lcygpLAorICBhbmQgb3MuZnV0aW1lcygpIG5vdyBhY2NlcHQgYSBuZXcgcGFyYW1ldGVyLCBucywgd2hpY2ggYWNjZXB0cyBtdGltZSBhbmQgYXRpbWUKKyAgYXMgaW50ZWdlcnMgd2l0aCBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKKy0gSXNzdWUgIzE0MTI3IGFuZCAjMTAxNDg6IHNodXRpbC5jb3B5c3RhdCBub3cgcHJlc2VydmVzIGV4YWN0IG10aW1lIGFuZCBhdGltZQorICBvbiBmaWxlc3lzdGVtcyBwcm92aWRpbmcgbmFub3NlY29uZCByZXNvbHV0aW9uLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTU6IEJyaW5nIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5IHN1cHBvcnQgdXAgdG8gZGF0ZSB3aXRoCisgIHRoZSBQeXRob24gMy4zIEdyYW1tYXIuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNDQ3MjogVXBkYXRlIC5naXRpZ25vcmUuIFBhdGNoIGJ5IE1hdGVqIENlcGwuCisKKy0gVXBncmFkZSBXaW5kb3dzIGxpYnJhcnkgdmVyc2lvbnM6IGJ6aXAgMS4wLjYsIE9wZW5TU0wgMS4wLjFjLgorCistIElzc3VlICMxNDY5MzogVW5kZXIgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCBoYXNobGliJ3MgZmFsbGJhY2sgbW9kdWxlcyBhcmUKKyAgYWx3YXlzIGNvbXBpbGVkLCBldmVuIGlmIE9wZW5TU0wgaXMgcHJlc2VudCBhdCBidWlsZCB0aW1lLgorCistIElzc3VlICMxMzIxMDogV2luZG93cyBidWlsZCBub3cgdXNlcyBWUzIwMTAsIHBvcnRlZCBmcm9tIFZTMjAwOC4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDU4ODogVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgYWNjdXJhdGVseSBkb2N1bWVudHMgdGhlIFB5dGhvbiAzCisgIGNsYXNzIGRlZmluaXRpb24gcHJvY2Vzcy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLgorCistIElzc3VlICMxNDk0MzogQ29ycmVjdCBhIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHdpbnJlZy5PcGVuS2V5CisgIGFuZCBjb3JyZWN0bHkgbGlzdCB0aGUgYXJndW1lbnQgbmFtZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZXhwbGFuYXRpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDAxLU1heS0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgorCistIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4gaXMgY2xvc2VkLgorCistIElzc3VlICMxNDUyMTogTWFrZSByZXN1bHQgb2YgZmxvYXQoJ25hbicpIGFuZCBmbG9hdCgnLW5hbicpIG1vcmUgY29uc2lzdGVudAorICBhY3Jvc3MgcGxhdGZvcm1zLgorCistIElzc3VlICMxNDY0NjogX19pbXBvcnRfXygpIHNldHMgX19sb2FkZXJfXyBpZiB0aGUgbG9hZGVyIGRpZCBub3QuCisKKy0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5tZXRhX3BhdGguIElmCisgIHN5cy5tZXRhX3BhdGggaXMgZm91bmQgdG8gYmUgZW1wdHksIHJhaXNlIEltcG9ydFdhcm5pbmcuCisKKy0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5wYXRoX2hvb2tzLiBJZgorICBzeXMucGF0aF9ob29rcyBpcyBmb3VuZCB0byBiZSBlbXB0eSwgYSB3YXJuaW5nIHdpbGwgYmUgcmFpc2VkLiBOb25lIGlzIG5vdworICBpbnNlcnRlZCBpbnRvIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlmIG5vIGZpbmRlciB3YXMgZGlzY292ZXJlZC4gVGhpcyBhbHNvCisgIG1lYW5zIGltcC5OdWxsSW1wb3J0ZXIgaXMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgdXNlZC4KKworLSBJc3N1ZSAjMTM5MDM6IEltcGxlbWVudCBQRVAgNDEyLiBJbmRpdmlkdWFsIGRpY3Rpb25hcnkgaW5zdGFuY2VzIGNhbiBub3cgc2hhcmUKKyAgdGhlaXIga2V5cyB3aXRoIG90aGVyIGRpY3Rpb25hcmllcy4gQ2xhc3NlcyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIHRvIHNoYXJlCisgIHRoZWlyIGluc3RhbmNlIGRpY3Rpb25hcnkga2V5cyBmb3IgaW1wcm92ZWQgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZS4KKworLSBJc3N1ZSAjMTE2MDMgKGFnYWluKTogU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IKKyAgd2hlbiByZXByKCkgb3Igc3RyKCkgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gb2JqZWN0LgorCistIElzc3VlICMxNDY1ODogRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYQorICBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisKKy0gSXNzdWUgIzE0NjMwOiBGaXggYSBtZW1vcnkgYWNjZXNzIGJ1ZyBmb3IgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3Mgb2YgaW50CisgIHdpdGggdmFsdWUgMC4KKworLSBJc3N1ZSAjMTQzMzk6IFNwZWVkIGltcHJvdmVtZW50cyB0byBiaW4sIG9jdCBhbmQgaGV4IGZ1bmN0aW9ucy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCisgIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzE0Mzg1OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIGEgY3VzdG9tIHR5cGUgZm9yIHRoZSBfX2J1aWx0aW5zX18KKyAgbmFtZXNwYWNlLCBpbnN0ZWFkIG9mIGEgZGljdC4gSXQgY2FuIGJlIHVzZWQgZm9yIHNhbmRib3hpbmcgZm9yIGV4YW1wbGUuCisgIFJhaXNlIGFsc28gYSBOYW1lRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvciBpZiBfX2J1aWxkX2NsYXNzX18gbmFtZSBpZiBub3QKKyAgZm91bmQgaW4gX19idWlsdGluc19fLgorCistIElzc3VlICMxMjU5OTogQmUgbW9yZSBzdHJpY3QgaW4gYWNjZXB0aW5nIE5vbmUgY29tcGFyZWQgdG8gYSBmYWxzZS1saWtlCisgIG9iamVjdCBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIgYW5kCisgIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci4KKworLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgorCistIElzc3VlICMxNDU5MjogQXR0ZW1wdGluZyBhIHJlbGF0aXZlIGltcG9ydCB3L28gX19wYWNrYWdlX18gb3IgX19uYW1lX18gc2V0IGluCisgIGdsb2JhbHMgcmFpc2VzIGEgS2V5RXJyb3IuCisKKy0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgorCistIElzc3VlICMxMDg1NDogVGhlIEltcG9ydEVycm9yIHJhaXNlZCB3aGVuIGFuIGV4dGVuc2lvbiBtb2R1bGUgb24gV2luZG93cworICBmYWlscyB0byBpbXBvcnQgbm93IHVzZXMgdGhlIG5ldyBwYXRoIGFuZCBuYW1lIGF0dHJpYnV0ZXMgZnJvbQorICBJc3N1ZSAjMTU1OTU0OS4KKworLSBJc3N1ZSAjMTM4ODk6IENoZWNrIGFuZCAoaWYgbmVjZXNzYXJ5KSBzZXQgRlBVIGNvbnRyb2wgd29yZCBiZWZvcmUgY2FsbGluZworICBhbnkgb2YgdGhlIGR0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZgorICBQeXRob24uICBUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgorCistIF9faW1wb3J0X18oKSBub3cgbWF0Y2hlcyBQRVAgMzI4IGFuZCBkb2N1bWVudGF0aW9uIGJ5IGRlZmF1bHRpbmcgJ2luZGV4JyB0byAwCisgIGluc3RlYWQgb2YgLTEgYW5kIHJlbW92aW5nIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIHZhbHVlcy4KKworLSBJc3N1ZSAjMjM3NzogTWFrZSBpbXBvcnRsaWIgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9faW1wb3J0X18oKS4KKworLSBJc3N1ZSAjMTU1OTU0OTogSW1wb3J0RXJyb3Igbm93IGhhcyAnbmFtZScgYW5kICdwYXRoJyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNldAorICB1c2luZyBrZXl3b3JkIGFyZ3VtZW50cyB0byBpdHMgY29uc3RydWN0b3IuIFRoZXkgYXJlIGN1cnJlbnRseSBub3Qgc2V0IGJ5CisgIGltcG9ydCBhcyB0aGV5IGFyZSBtZWFudCBmb3IgdXNlIGJ5IGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTQ0NzQ6IFNhdmUgYW5kIHJlc3RvcmUgZXhjZXB0aW9uIHN0YXRlIGluIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKKyAgd2hpbGUgd3JpdGluZyBlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGEgdW5oYW5kbGVkIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCisgIGJ5IFN1bWFuIFNhaGEuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KKworLSBJc3N1ZSAjMTQzNzE6IFN1cHBvcnQgYnppcDIgaW4gemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMzE4MzogRml4IHBkYiBza2lwcGluZyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKKyAgc3RlcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgorCistIElzc3VlICMxNDY5NjogRml4IHBhcnNlciBtb2R1bGUgdG8gdW5kZXJzdGFuZCAnbm9ubG9jYWwnIGRlY2xhcmF0aW9ucy4KKworLSBJc3N1ZSAjMTA5NDE6IEZpeCBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0IG5lYXIKKyAgdGhlIERTVCB0cmFuc2l0aW9uLiAgUGF0Y2ggYnkgSm9lIFBldGVyc29uLgorCistIElzc3VlICM5MTU0OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kIGZ1bmN0aW9uIGFubm90YXRpb25zLgorCistIElzc3VlICM2MDg1OiBJbiBodHRwLnNlcnZlci5weSBTaW1wbGVIVFRQU2VydmVyLmFkZHJlc3Nfc3RyaW5nIHJldHVybnMgdGhlCisgIGNsaWVudCBpcCBhZGRyZXNzIGluc3RlYWQgY2xpZW50IGhvc3RuYW1lLiBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzE0MzA5OiBEZXByZWNhdGUgdGltZS5jbG9jaygpLCB1c2UgdGltZS5wZXJmX2NvdW50ZXIoKSBvcgorICB0aW1lLnByb2Nlc3NfdGltZSgpIGluc3RlYWQuCisKKy0gSXNzdWUgIzE0NDI4OiBJbXBsZW1lbnQgdGhlIFBFUCA0MTguIEFkZCB0aW1lLmdldF9jbG9ja19pbmZvKCksCisgIHRpbWUucGVyZl9jb3VudGVyKCkgYW5kIHRpbWUucHJvY2Vzc190aW1lKCkgZnVuY3Rpb25zLCBhbmQgcmVuYW1lCisgIHRpbWUuc3RlYWR5KCkgdG8gdGltZS5tb25vdG9uaWMoKS4KKworLSBJc3N1ZSAjMTQ2NDY6IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyKCkgbm93IHNldHMgX19sb2FkZXJfXyBhbmQKKyAgX19wYWNrYWdlX18gKHdoZW4gcG9zc2libGUpLgorCistIElzc3VlICMxNDY2NDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEKKyAgdGVzdCBjbGFzcyB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlIChpLmUuIGEgbWl4aW4pLgorCistIElzc3VlICM0ODkyOiBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbnMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCisgIG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucy4gIFBhdGNoIGJ5IFJpY2hhcmQgT3Vka2VyayAoc2J0KS4KKworLSBJc3N1ZSAjMTQxNjA6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQgdG8gcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuCisgIHRoZSBsaW5rcyB3ZXJlIG5vdCBsb2NhdGVkIGluIGFuIGFyY2hpdmUgc3ViZGlyZWN0b3J5LgorCistIElzc3VlICMxNDYzODogcHlkb2Mgbm93IHRyZWF0cyBub24tc3RyaW5nIF9fbmFtZV9fIHZhbHVlcyBhcyBpZiB0aGV5CisgIHdlcmUgbWlzc2luZywgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgorCistIElzc3VlICMxMzY4NDogRml4IGh0dHBsaWIgdHVubmVsIGlzc3VlIG9mIGluZmluaXRlIGxvb3BzIGZvciBjZXJ0YWluIHNpdGVzCisgIHdoaWNoIHNlbmQgRU9GIHdpdGhvdXQgdHJhaWxpbmcgXHJcbi4KKworLSBJc3N1ZSAjMTQ2MDU6IEFkZCBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuKEZpbGVGaW5kZXIsCisgIFNvdXJjZUZpbGVMb2FkZXIsIFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBFeHRlbnNpb25GaWxlTG9hZGVyKS4KKworLSBJc3N1ZSAjMTM5NTk6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpL3NvdXJjZV9mcm9tX2NhY2hlKCkgbm93IGZvbGxvdworICBvcy5wYXRoLmpvaW4oKS9zcGxpdCgpIHNlbWFudGljcyBmb3IgcGF0aCBtYW5pcHVsYXRpb24gaW5zdGVhZCBvZiBpdHMgcHJpb3IsCisgIGN1c3RvbSBzZW1hbnRpY3Mgb2YgY2FyaW5nIHRoZSByaWdodC1tb3N0IHBhdGggc2VwYXJhdG9yIGZvcndhcmQgaW4gcGF0aAorICBqb2luaW5nLgorCistIElzc3VlICMyMTkzOiBBbGxvdyAiOiIgY2hhcmFjdGVyIGluIENvb2tpZSBOQU1FIHZhbHVlcy4KKworLSBJc3N1ZSAjMTQ2Mjk6IHRva2VuaXplci5kZXRlY3RfZW5jb2Rpbmcgd2lsbCBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBpbiB0aGUKKyAgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmIGZvdW5kIGF0IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUuCisKKy0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQorICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgorCistIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZworICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KKworLSBJc3N1ZSAjMTE3NTA6IFRoZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgc2NhdHRlcmVkIGluIHRoZSBfc3VicHJvY2VzcyBhbmQKKyAgX211bHRpcHJvY2Vzc2luZy53aW4zMiBtb2R1bGVzIG5vdyBsaXZlIGluIGEgc2luZ2xlIG1vZHVsZSAiX3dpbmFwaSIuCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwODc6IG11bHRpcHJvY2Vzc2luZzogYWRkIENvbmRpdGlvbi53YWl0X2ZvcigpLiBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0NTM4OiBIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluCisgIGEgYmFyZSAnLycuCisKKy0gSXNzdWUgIzE0NDUyOiBTeXNMb2dIYW5kbGVyIG5vIGxvbmdlciBpbnNlcnRzIGEgVVRGLTggQk9NIGludG8gdGhlIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzE0Mzg2OiBFeHBvc2UgdGhlIGRpY3RfcHJveHkgaW50ZXJuYWwgdHlwZSBhcyB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXAucmVsb2FkKCkgYWx3YXlzIHVzZSBhIG1vZHVsZSdzIF9fbG9hZGVyX18gdG8gcGVyZm9ybQorICB0aGUgcmVsb2FkLgorCistIElzc3VlICMxMzk1OTogQWRkIGltcC5weSBhbmQgcmVuYW1lIHRoZSBidWlsdC1pbiBtb2R1bGUgdG8gX2ltcCwgYWxsb3dpbmcgZm9yCisgIHJlLWltcGxlbWVudGluZyBwYXJ0cyBvZiB0aGUgbW9kdWxlIGluIHB1cmUgUHl0aG9uLgorCistIElzc3VlICMxMzQ5NjogRml4IHBvdGVudGlhbCBvdmVyZmxvdyBpbiBiaXNlY3QuYmlzZWN0IGFsZ29yaXRobSB3aGVuIGFwcGxpZWQKKyAgdG8gYSBjb2xsZWN0aW9uIG9mIHNpemUgPiBzeXMubWF4c2l6ZSAvIDIuCisKKy0gSGF2ZSBpbXBvcnRsaWIgdGFrZSBhZHZhbnRhZ2Ugb2YgSW1wb3J0RXJyb3IncyBuZXcgJ25hbWUnIGFuZCAncGF0aCcKKyAgYXR0cmlidXRlcy4KKworLSBJc3N1ZSAjMTQzOTk6IHppcGZpbGUgbm93IHJlY29nbml6ZXMgdGhhdCB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBtb2RpZmllZCBldmVuCisgIGlmIG9ubHkgdGhlIGNvbW1lbnQgaXMgY2hhbmdlZC4gIEluIGFkZGl0aW9uLCB0aGUgVHlwZUVycm9yIHRoYXQgcmVzdWx0cyBmcm9tCisgIHRyeWluZyB0byBzZXQgYSBub24tYmluYXJ5IHZhbHVlIGFzIGEgY29tbWVudCBpcyBub3cgcmFpc2VkIGF0IHRoZSB0aW1lCisgIHRoZSBjb21tZW50IGlzIHNldCByYXRoZXIgdGhhbiBhdCB0aGUgdGltZSB0aGUgemlwZmlsZSBpcyB3cml0dGVuLgorCistIHRyYWNlLkNvdmVyYWdlUmVzdWx0cy5pc19pZ25vcmVkX2ZpbGVuYW1lKCkgbm93IGlnbm9yZXMgYW55IG5hbWUgdGhhdCBzdGFydHMKKyAgd2l0aCAiPCIgYW5kIGVuZHMgd2l0aCAiPiIgaW5zdGVhZCBvZiBzcGVjaWFsLWNhc2luZyAiPHN0cmluZz4iIGFuZAorICAiPGRvY3Rlc3QgIi4KKworLSBJc3N1ZSAjMTI1Mzc6IFRoZSBtYWlsYm94IG1vZHVsZSBubyBsb25nZXIgZGVwZW5kcyBvbiBrbm93bGVkZ2Ugb2YgaW50ZXJuYWwKKyAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgZW1haWwgcGFja2FnZSBNZXNzYWdlIG9iamVjdC4KKworLSBJc3N1ZSAjNzk3ODogc29ja2V0c2VydmVyIG5vdyByZXN0YXJ0cyB0aGUgc2VsZWN0KCkgY2FsbCB3aGVuIEVJTlRSIGlzCisgIHJldHVybmVkLiAgVGhpcyBhdm9pZHMgY3Jhc2hpbmcgdGhlIHNlcnZlciBsb29wIHdoZW4gYSBzaWduYWwgaXMgcmVjZWl2ZWQuCisgIFBhdGNoIGJ5IEplcnp5IEtvemVyYS4KKworLSBJc3N1ZSAjMTQ1MjI6IEF2b2lkIGR1cGxpY2F0aW5nIHNvY2tldCBoYW5kbGVzIGluIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLgorICBQYXRjaCBieSBzYnQuCisKKy0gRG9uJ3QgUHlfREVDUkVGIE5VTEwgdmFyaWFibGUgaW4gaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci4KKworLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KKyAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KKworLSBJc3N1ZSAjMTQ0OTY6IEZpeCB3cm9uZyBuYW1lIGluIGlkbGVsaWIvdGFiYmVkcGFnZXMucHkuCisgIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KKworLSBJc3N1ZSAjMzAzMzogQWRkIGRpc3BsYXlvZiBwYXJhbWV0ZXIgdG8gdGtpbnRlciBmb250LiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KKworLSBJc3N1ZSAjMTQ0ODI6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKKyAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfVU5JWCB0eXBlIGFkZHJlc3MgdW5kZXIKKyAgV2luZG93cy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KKworLSBJc3N1ZSAjODAyMzEwOiBHZW5lcmF0ZSBhbHdheXMgdW5pcXVlIHRraW50ZXIgZm9udCBuYW1lcyBpZiBub3QgZGlyZWN0bHkgcGFzc2VkLgorCistIElzc3VlICMxNDE1MTogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQorICBhIG11bHRpcHJvY2Vzc2luZyBDbGllbnQgb3IgTGlzdGVuZXIgd2l0aCBhbiBBRl9QSVBFIHR5cGUgYWRkcmVzcyB1bmRlcgorICBub24tV2luZG93cyBwbGF0Zm9ybXMuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCisKKy0gSXNzdWUgIzE0NDkzOiBVc2UgZ3Zmcy1vcGVuIG9yIHhkZy1vcGVuIGluIHdlYmJyb3dzZXIuCisKK0J1aWxkCistLS0tLQorCistICJtYWtlIHRvdWNoIiB3aWxsIG5vdyB0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBpbnRvIE1lcmN1cmlhbCwKKyAgYWZ0ZXIgYSAiaGcgdXBkYXRlIiB3aGljaCBmYWlsZWQgdG8gYnJpbmcgdGhlIHRpbWVzdGFtcHMgaW50byB0aGUgcmlnaHQgb3JkZXIuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDAyNjogSW4gdGVzdF9jbWRfbGluZV9zY3JpcHQsIGNoZWNrIHRoYXQgc3lzLmFyZ3YgaXMgcG9wdWxhdGVkCisgIGNvcnJlY3RseSBmb3IgdGhlIHZhcmlvdXMgaW52b2NhdGlvbiBhcHByb2FjaGVzIChQYXRjaCBieSBKYXNvbiBZZW8pCisKKy0gSXNzdWUgIzE0MDMyOiBGaXggaW5jb3JyZWN0IHZhcmlhYmxlIG5hbWUgaW4gdGVzdF9jbWRfbGluZV9zY3JpcHQgZGVidWdnaW5nCisgIG1lc3NhZ2UgKFBhdGNoIGJ5IEphc29uIFllbykKKworLSBJc3N1ZSAjMTQ1ODk6IFVwZGF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Igc2hhMjU2LnRicy1pbnRlcm5ldC5jb20sIGZpeGluZworICBhIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KKworLSBJc3N1ZSAjMTQzNTU6IFJlZ3J0ZXN0IG5vdyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLCBhbmQKKyAgd2lsbCB1c2UgaXQgaWYgYSB0ZXN0IGZpbGUgY29udGFpbnMgbm8gYHRlc3RfbWFpbmAgbWV0aG9kLgorCitUb29scyAvIERlbW9zCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzM1NjE6IFRoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaGFzIGFuIG9wdGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvcgorICBwbGFjaW5nIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGludG8gdGhlIHN5c3RlbSAiUGF0aCIgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKKy0gSXNzdWUgIzEzMTY1OiBzdHJpbmdiZW5jaCBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBUb29scy9zdHJpbmdiZW5jaCBmb2xkZXIuCisgIEl0IHVzZWQgdG8gbGl2ZSBpbiBpdHMgb3duIFNWTiBwcm9qZWN0LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwMS1BcHItMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2ODMzNjg6IG9iamVjdC5fX25ld19fIGFuZCBvYmplY3QuX19pbml0X18gcmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhleQorICBhcmUgcGFzc2VkIGFyZ3VtZW50cyBhbmQgdGhlaXIgY29tcGxlbWVudGFyeSBtZXRob2QgaXMgbm90IG92ZXJyaWRkZW4uCisKKy0gSXNzdWUgIzE0Mzc4OiBGaXggY29tcGlsaW5nIGFzdC5JbXBvcnRGcm9tIG5vZGVzIHdpdGggYSAiX19mdXR1cmVfXyIgc3RyaW5nIGFzCisgIHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCisKKy0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKKyAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCisKKy0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAorICBwYXNzZWQgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTQ2OTYyOTogQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZQorICBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZSBpZiBgYHguX19kaWN0X18gaXMgeGBgKS4KKworLSBJc3N1ZSAjMTQyMDU6IGRpY3QgbG9va3VwIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUgZGljdCBpcyBtb2RpZmllZAorICBkdXJpbmcgYSBsb29rdXAuCisKKy0gSXNzdWUgIzE0MjIwOiBXaGVuIGEgZ2VuZXJhdG9yIGlzIGRlbGVnYXRpbmcgdG8gYW5vdGhlciBpdGVyYXRvciB3aXRoIHRoZQorICB5aWVsZCBmcm9tIHN5bnRheCwgaXQgbmVlZHMgdG8gaGF2ZSBpdHMgYGBnaV9ydW5uaW5nYGAgZmxhZyBzZXQgdG8gVHJ1ZS4KKworLSBJc3N1ZSAjMTQ0MzU6IFJlbW92ZSBkZWRpY2F0ZWQgYmxvY2sgYWxsb2NhdG9yIGZyb20gZmxvYXRvYmplY3QuYyBhbmQgcmVseQorICBvbiB0aGUgUHlPYmplY3RfTWFsbG9jKCkgYXBpIGxpa2UgYWxsIG90aGVyIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KKworLSBJc3N1ZSAjMTQyODg6IEFsbG93IHRoZSBzZXJpYWxpemF0aW9uIG9mIGJ1aWx0aW4gaXRlcmF0b3JzCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQzMDA6IFVuZGVyIFdpbmRvd3MsIHNvY2tldHMgY3JlYXRlZCB1c2luZyBzb2NrZXQuZHVwKCkgbm93IGFsbG93CisgIG92ZXJsYXBwZWQgSS9PLiAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKKyAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzE0NDA2OiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIHVzaW5nIGBgY29uY3VycmVudC5mdXR1cmVzLndhaXQoCisgIHJldHVybl93aGVuPUFMTF9DT01QTEVURUQpYGAuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCisKKy0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93CisgIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKKyAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCisgIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKKyAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgorCistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCisKKy0gSXNzdWUgIzE0Mjk1OiBBZGQgdW5pdHRlc3QubW9jaworCistIElzc3VlICM3NjUyOiBBZGQgLS13aXRoLXN5c3RlbS1saWJtcGRlYyBvcHRpb24gdG8gY29uZmlndXJlIGZvciBsaW5raW5nCisgIHRoZSBfZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhbiBpbnN0YWxsZWQgbGlibXBkZWMuCisKKy0gSXNzdWUgIzE0MzgwOiBNSU1FVGV4dCBub3cgZGVmYXVsdHMgdG8gdXRmLTggd2hlbiBwYXNzZWQgbm9uLUFTQ0lJIHVuaWNvZGUKKyAgd2l0aCBubyBjaGFyc2V0IHNwZWNpZmllZC4KKworLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCisgIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAorICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCisKKy0gSXNzdWUgIzE0MjA0OiBUaGUgc3NsIG1vZHVsZSBub3cgaGFzIHN1cHBvcnQgZm9yIHRoZSBOZXh0IFByb3RvY29sCisgIE5lZ290aWF0aW9uIGV4dGVuc2lvbiwgaWYgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgbGlicmFyeS4KKyAgUGF0Y2ggYnkgQ29saW4gTWFyYy4KKworLSBJc3N1ZSAjMzAzNTogVW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIgYXJlIG1hcmtlZCBhcyBwZW5kaW5nIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbworICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KKworLSBJc3N1ZSAjNzY1MjogSW50ZWdyYXRlIHRoZSBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGxpYm1wZGVjIGxpYnJhcnkgdG8gc3BlZWQKKyAgdXAgdGhlIGRlY2ltYWwgbW9kdWxlLiBQZXJmb3JtYW5jZSBnYWlucyBvZiB0aGUgbmV3IEMgaW1wbGVtZW50YXRpb24gYXJlCisgIGJldHdlZW4gMTB4IGFuZCAxMDB4LCBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uLgorCistIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCisgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKKworLSBJc3N1ZSAjMTQyNjk6IFNNVFBEIG5vdyBjb25mb3JtcyB0byB0aGUgUkZDIGFuZCByZXF1aXJlcyBhIEhFTE8gY29tbWFuZAorICBiZWZvcmUgTUFJTCwgUkNQVCwgb3IgREFUQS4KKworLSBJc3N1ZSAjMTM2OTQ6IGFzeW5jaHJvbm91cyBjb25uZWN0IGluIGFzeW5jb3JlLmRpc3BhdGNoZXIgZG9lcyBub3Qgc2V0IGFkZHIKKyAgYXR0cmlidXRlLgorCistIElzc3VlICMxNDM0NDogZml4ZWQgdGhlIHJlcHIgb2YgZW1haWwucG9saWN5IG9iamVjdHMuCisKKy0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCisgIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KKworLSBJc3N1ZSAjMTQzMzU6IG11bHRpcHJvY2Vzc2luZydzIGN1c3RvbSBQaWNrbGVyIHN1YmNsYXNzIG5vdyBpbmhlcml0cyBmcm9tCisgIHRoZSBDLWFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLiAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCisKKy0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCisKKy0gSW1wcm92ZSB0aGUgbWVtb3J5IHV0aWxpemF0aW9uIGFuZCBzcGVlZCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlLgorCistIElzc3VlICMxNDIyMjogVXNlIHRoZSBuZXcgdGltZS5zdGVhZHkoKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRpbWUudGltZSgpIGZvcgorICB0aW1lb3V0IGluIHF1ZXVlIGFuZCB0aHJlYWRpbmcgbW9kdWxlcyB0byBub3QgYmUgYWZmZWN0ZWQgb2Ygc3lzdGVtIHRpbWUKKyAgdXBkYXRlLgorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIGxpYjJ0bzMucHl0cmVlLkJhc2UuZ2V0X3ByZWZpeC9zZXRfcHJlZml4LgorCistIElzc3VlICMxNDIzNDogQ1ZFLTIwMTItMDg3NjogUmFuZG9taXplIGhhc2hlcyBvZiB4bWwgYXR0cmlidXRlcyBpbiB0aGUgaGFzaAorICB0YWJsZSBpbnRlcm5hbCB0byB0aGUgcHlleHBhdCBtb2R1bGUncyBjb3B5IG9mIHRoZSBleHBhdCBsaWJyYXJ5IHRvIGF2b2lkIGEKKyAgZGVuaWFsIG9mIHNlcnZpY2UgZHVlIHRvIGhhc2ggY29sbGlzaW9ucy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0gd2l0aCBzb21lCisgIG1vZGlmaWNhdGlvbnMgYnkgdGhlIGV4cGF0IHByb2plY3QuCisKKy0gSXNzdWUgIzE0MjAwOiBJZGxlIHNoZWxsIGNyYXNoIG9uIHByaW50aW5nIG5vbi1CTVAgdW5pY29kZSBjaGFyYWN0ZXIuCisKKy0gSXNzdWUgIzEyODE4OiBmb3JtYXQgYWRkcmVzcyBubyBsb25nZXIgbmVlZGxlc3NseSBcIGVzY2FwZXMgKClzIGluIG5hbWVzIHdoZW4KKyAgdGhlIG5hbWUgZW5kcyB1cCBiZWluZyBxdW90ZWQuCisKKy0gSXNzdWUgIzE0MDYyOiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IGZvbGRzIEhlYWRlciBvYmplY3RzLAorICBpbmNsdWRpbmcgdXNpbmcgbGluZXNlcCB3aGVuIGZvbGRpbmcuCisKKy0gSXNzdWUgIzEzODM5OiBXaGVuIGludm9rZWQgb24gdGhlIGNvbW1hbmQtbGluZSwgdGhlIHBzdGF0cyBtb2R1bGUgbm93CisgIGFjY2VwdHMgc2V2ZXJhbCBmaWxlbmFtZXMgb2YgcHJvZmlsZSBzdGF0IGZpbGVzIGFuZCBtZXJnZXMgdGhlbSBhbGwuCisgIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCisgIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KKworLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KKworLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KKworLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCisKKy0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCisKKy0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgorICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgorCistIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksCisgIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpCisgIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvciBpZiBsb2NhbHRpbWUoKSBvciBnbXRpbWUoKSBmYWlsZWQuCisKKy0gSXNzdWUgIzE0MTgwOiB0aW1lLmN0aW1lKCksIGdtdGltZSgpLCB0aW1lLmxvY2FsdGltZSgpLAorICBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAorICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yLCBpbnN0ZWFkIG9mCisgIGEgVmFsdWVFcnJvciwgaWYgdGhlIHRpbWVzdGFtcCBkb2VzIG5vdCBmaXQgaW4gdGltZV90LgorCistIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAorICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJvdW5kIG1pY3Jvc2Vjb25kcyB0b3dhcmRzIHplcm8KKyAgaW5zdGVhZCBvZiByb3VuZGluZyB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KKworLSBJc3N1ZSAjMTA1NDM6IEZpeCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB3aXRoIEp5dGhvbiBieXRlY29kZSBmaWxlcy4KKworLSBJc3N1ZSAjMTE3ODg2MzogU2VwYXJhdGUgaW5pdGlhbGlzYXRpb24gZnJvbSBzZXR0aW5nIHdoZW4gaW5pdGlhbGl6aW5nCisgIFRraW50ZXIuVmFyaWFibGVzOyBoYXJtb25pemUgZXhjZXB0aW9ucyB0byBWYWx1ZUVycm9yOyBvbmx5IGRlbGV0ZSB2YXJpYWJsZXMKKyAgdGhhdCBoYXZlIG5vdCBiZWVuIGRlbGV0ZWQ7IGFzc2VydCB0aGF0IHZhcmlhYmxlIG5hbWVzIGFyZSBzdHJpbmdzLgorCistIElzc3VlICMxNDEwNDogSW1wbGVtZW50IHRpbWUubW9ub3RvbmljKCkgb24gTWFjIE9TIFgsIHBhdGNoIHdyaXR0ZW4gYnkKKyAgTmljaG9sYXMgUmlsZXkuCisKKy0gSXNzdWUgIzEzMzk0OiB0aGUgYWlmYyBtb2R1bGUgbm93IHVzZXMgd2FybmluZ3Mud2FybigpIHRvIHNpZ25hbCB3YXJuaW5ncy4KKworLSBJc3N1ZSAjMTQyNTI6IEZpeCBzdWJwcm9jZXNzLlBvcGVuLnRlcm1pbmF0ZSgpIHRvIG5vdCByYWlzZSBhbiBlcnJvciB1bmRlcgorICBXaW5kb3dzIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLgorCistIElzc3VlICMxNDIyMzogY3Vyc2VzLmFkZGNoKCkgaXMgbm8gbW9yZSBsaW1pdGVkIHRvIHRoZSByYW5nZSAwLTI1NSB3aGVuIHRoZQorICBQeXRob24gY3Vyc2VzIGlzIG5vdCBsaW5rZWQgdG8gbGlibmN1cnNlc3cuIEl0IHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZAorICBpbiBQeXRob24gMy4zYTEuCisKKy0gSXNzdWUgIzE0MTY4OiBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgRWxlbWVudC5fYXR0cnMgaW4gbWluaWRvbSBiZWZvcmUKKyAgYWNjZXNzaW5nIGl0LgorCistIElzc3VlICMxMjMyODogRml4IG11bHRpcHJvY2Vzc2luZydzIHVzZSBvZiBvdmVybGFwcGVkIEkvTyBvbiBXaW5kb3dzLgorICBBbHNvLCBhZGQgYSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0KHJsaXN0LCB0aW1lb3V0PU5vbmUpIGZ1bmN0aW9uCisgIGZvciBwb2xsaW5nIG11bHRpcGxlIG9iamVjdHMgYXQgb25jZS4gIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwMDc6IEFjY2VwdCBpbmNvbXBsZXRlIFRyZWVCdWlsZGVyIG9iamVjdHMgKG1pc3Npbmcgc3RhcnQsIGVuZCwKKyAgZGF0YSBvciBjbG9zZSBtZXRob2QpIGZvciB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGFzIHdlbGwuCisgIERyb3AgdGhlIG5vLW9wIFRyZWVCdWlsZGVyKCkueG1sKCkgbWV0aG9kIGZyb20gdGhlIEMgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE0MjEwOiBwZGIgbm93IGhhcyB0YWItY29tcGxldGlvbiBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0CisgIGFsc28gZm9yIHRoZWlyIGFyZ3VtZW50cywgd2hlcmV2ZXIgcG9zc2libGUuCisKKy0gSXNzdWUgIzE0MzEwOiBTb2NrZXRzIGNhbiBub3cgYmUgd2l0aCBvdGhlciBwcm9jZXNzZXMgb24gV2luZG93cyB1c2luZworICB0aGUgYXBpIHNvY2tldC5zb2NrZXQuc2hhcmUoKSBhbmQgc29ja2V0LmZyb21zaGFyZSgpLgorCistIElzc3VlICMxMDU3NjogVGhlIGdjIG1vZHVsZSBub3cgaGFzIGEgJ2NhbGxiYWNrcycgbWVtYmVyIHRoYXQgd2lsbCBnZXQKKyAgY2FsbGVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIHRha2VzIHBsYWNlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTQ1NTc6IEZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgorCistIElzc3VlICMxNDM4NzogRG8gbm90IGluY2x1ZGUgYWNjdS5oIGZyb20gUHl0aG9uLmguCisKKy0gSXNzdWUgIzE0MzU5OiBPbmx5IHVzZSBPX0NMT0VYRUMgaW4gX3Bvc2l4bW9kdWxlLmMgaWYgaXQgaXMgZGVmaW5lZC4KKyAgQmFzZWQgb24gcGF0Y2ggZnJvbSBIZXJ2w6kgQ29hdGFuaGF5LgorCistIElzc3VlICMxNDMyMTogRG8gbm90IHJ1biBwZ2VuIGR1cmluZyB0aGUgYnVpbGQgaWYgZmlsZXMgYXJlIHVwIHRvIGRhdGUuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KKworLSBJc3N1ZSAjMTQzMjQ6IEZpeCBjb25maWd1cmUgdGVzdHMgZm9yIGNyb3NzIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTQzMjc6IENhbGwgQUNfQ0FOT05JQ0FMX0hPU1QgaW4gY29uZmlndXJlLmFjIGFuZCBjaGVjayBpbgorICBjb25maWcue2d1ZXNzLHN1Yn0uIERvbid0IHVzZSB1bmFtZSBjYWxscyBmb3IgY3Jvc3MgYnVpbGRzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTA0MTogQW4gaXNzdWUgaW4gY3R5cGVzLmNfbG9uZ2RvdWJsZSwgY3R5cGVzLmNfZG91YmxlLCBhbmQKKyAgY3R5cGVzLmNfZmxvYXQgdGhhdCBjYXVzZWQgYW4gaW5jb3JyZWN0IGV4Y2VwdGlvbiB0byBiZSByZXR1cm5lZCBpbiB0aGUKKyAgY2FzZSBvZiBvdmVyZmxvdyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTQyMTI6IFRoZSByZSBtb2R1bGUgZGlkbid0IHJldGFpbiBhIHJlZmVyZW5jZSB0byBidWZmZXJzIGl0IHdhcworICBzY2FubmluZywgcmVzdWx0aW5nIGluIHNlZ2ZhdWx0cy4KKworLSBJc3N1ZSAjMTQyNTk6IFRoZSBmaW5kaXRlcigpIG1ldGhvZCBvZiByZSBvYmplY3RzIGRpZCBub3QgdGFrZSBhbnkKKyAga2V5d29yZCBhcmd1bWVudHMsIGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxMDE0MjogU3VwcG9ydCBmb3IgU0VFS19IT0xFL1NFRUtfREFUQSAoZm9yIGV4YW1wbGUsIHVuZGVyIFpGUykuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDQ0MjogQWRkIG1pc3NpbmcgZXJybm8gaW1wb3J0IGluIHRlc3Rfc210cGxpYi4KKworLSBJc3N1ZSAjODMxNTogKHBhcnRpYWwgZml4KSBweXRob24gLW0gdW5pdHRlc3QgdGVzdC50ZXN0X2VtYWlsIG5vdyB3b3Jrcy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDUtTWFyLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDE3MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gbWFyc2hhbGxpbmcgYSBidWZmZXItbGlrZSBvYmplY3QKKyAgKG90aGVyIHRoYW4gYSBieXRlcyBvYmplY3QpLgorCistIElzc3VlICMxMzUyMTogZGljdC5zZXRkZWZhdWx0KCkgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LAorICBtYWtpbmcgaXQgImF0b21pYyIgZm9yIG1hbnkgcHVycG9zZXMuICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIFBFUCA0MDksIElzc3VlICM2MjEwOiAicmFpc2UgWCBmcm9tIE5vbmUiIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBtZWFucyBvZgorICBzdXBwcmVzc2luZyB0aGUgZGlzcGxheSBvZiB0aGUgY2hhaW5lZCBleGNlcHRpb24gY29udGV4dC4gVGhlIGNoYWluZWQKKyAgY29udGV4dCBzdGlsbCByZW1haW5zIGF2YWlsYWJsZSBhcyB0aGUgX19jb250ZXh0X18gYXR0cmlidXRlLgorCistIElzc3VlICMxMDE4MTogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gZml4ZXMgbXVsdGlwbGUgb3duZXJzaGlwCisgIGFuZCBsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFB5X2J1ZmZlciBtZW1iZXJzICgjOTk5MCkKKyAgYXMgd2VsbCBhcyBjcmFzaGVzICgjODMwNSwgIzc0MzMpLiBNYW55IG5ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQKKyAgKFNlZSB3aGF0c25ldy8zLjMpLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCBleHRlbnNpdmVseS4KKyAgVGhlIG5kYXJyYXkgdGVzdCBvYmplY3QgZnJvbSBfdGVzdGJ1ZmZlci5jIGltcGxlbWVudHMgYWxsIGFzcGVjdHMgb2YKKyAgUEVQLTMxMTgsIHNvIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgdG93YXJkcyB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24KKyAgb2YgdGhlIFBFUCBjYW4gcHJvY2VlZCBpbiBhIHRlc3QtZHJpdmVuIG1hbm5lci4KKworICBUaGFua3MgdG8gTmljayBDb2dobGFuLCBBbnRvaW5lIFBpdHJvdSBhbmQgUGF1bGkgVmlydGFuZW4gZm9yIHJldmlldworICBhbmQgbWFueSBpZGVhcy4KKworLSBJc3N1ZSAjMTI4MzQ6IEZpeCBpbmNvcnJlY3QgcmVzdWx0cyBvZiBtZW1vcnl2aWV3LnRvYnl0ZXMoKSBmb3IKKyAgbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgorCistIElzc3VlICM1MjMxOiBJbnRyb2R1Y2UgbWVtb3J5dmlldy5jYXN0KCkgbWV0aG9kIHRoYXQgYWxsb3dzIGNoYW5naW5nCisgIGZvcm1hdCBhbmQgc2hhcGUgd2l0aG91dCBtYWtpbmcgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KKworLSBJc3N1ZSAjMTQwODQ6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIHdpdGggYQorICBiYWQgZW5jb2RpbmcuCisKKy0gVXBncmFkZSBVbmljb2RlIGRhdGEgdG8gVW5pY29kZSA2LjEuCisKKy0gSXNzdWUgIzE0MDQwOiBSZW1vdmUgcmFyZWx5IHVzZWQgZmlsZSBuYW1lIHN1ZmZpeGVzIGZvciBDIGV4dGVuc2lvbnMKKyAgKHVuZGVyIFBPU0lYIG1haW5seSkuCisKKy0gSXNzdWUgIzE0MDUxOiBBbGxvdyBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBiZSBzZXQgb2YgY2xhc3NtZXRob2QgYW5kCisgIHN0YXRpY21ldGhvZC4KKworLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBSYW5kb21pemUgaGFzaGVzIG9mIHN0ciBhbmQgYnl0ZXMgdG8gcHJvdGVjdAorICBhZ2FpbnN0IGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kCisgIHNldCB0eXBlcy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzEzMDIwOiBGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3RzZXF1ZW5jZSBvYmplY3QKKyAgZmFpbHMuICBQYXRjaCBieSBTdW1hbiBTYWhhLgorCistIElzc3VlICMxMzkwODogUmVhZHkgdHlwZXMgcmV0dXJuZWQgZnJvbSBQeVR5cGVfRnJvbVNwZWMuCisKKy0gSXNzdWUgIzExMjM1OiBGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZQorICBtb2RpZmljYXRpb24gdGltZSBkb2Vzbid0IGZpdCBpbiBhIDMyLWJpdCB0aW1lc3RhbXAuCisKKy0gSXNzdWUgIzEyNzA1OiBBIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpcyBub3cgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0bworICBjb21waWxlIG11bHRpcGxlIHN0YXRlbWVudHMgYXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50LgorCistIEZpeCB0aGUgYnVpbHRpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSB0byBzdG9yZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IKKyAgZnV0dXJlIHJlaW5pdGlhbGl6YXRpb24uCisKKy0gSXNzdWUgIzgwNTI6IFRoZSBwb3NpeCBzdWJwcm9jZXNzIG1vZHVsZSB3b3VsZCB0YWtlIGEgbG9uZyB0aW1lIGNsb3NpbmcKKyAgYWxsIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgcmF0aGVyIHRoYW4ganVzdCBvcGVuCisgIGZpbGUgZGVzY3JpcHRvcnMuICBJdCBub3cgY2xvc2VzIG9ubHkgdGhlIG9wZW4gZmRzIGlmIHBvc3NpYmxlIGZvciB0aGUKKyAgZGVmYXVsdCBjbG9zZV9mZHM9VHJ1ZSBiZWhhdmlvci4KKworLSBJc3N1ZSAjMTM2Mjk6IFJlbnVtYmVyIHRoZSB0b2tlbnMgaW4gdG9rZW4uaCBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIGluZGV4ZXMKKyAgaW50byBfUHlQYXJzZXJfVG9rZW5OYW1lcy4KKworLSBJc3N1ZSAjMTM3NTI6IEFkZCBhIGNhc2Vmb2xkKCkgbWV0aG9kIHRvIHN0ci4KKworLSBJc3N1ZSAjMTM3NjE6IEFkZCBhICJmbHVzaCIga2V5d29yZCBhcmd1bWVudCB0byB0aGUgcHJpbnQoKSBmdW5jdGlvbiwKKyAgdXNlZCB0byBlbnN1cmUgZmx1c2hpbmcgdGhlIG91dHB1dCBzdHJlYW0uCisKKy0gSXNzdWUgIzEzNjQ1OiBweWMgZmlsZXMgbm93IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCisgIGNvZGUsIHRvIGF2b2lkIHRpbWVzdGFtcCBjb2xsaXNpb25zIChlc3BlY2lhbGx5IG9uIGZpbGVzeXN0ZW1zIHdpdGggYSBsb3cKKyAgdGltZXN0YW1wIHJlc29sdXRpb24pIHdoZW4gY2hlY2tpbmcgZm9yIGZyZXNobmVzcyBvZiB0aGUgYnl0ZWNvZGUuCisKKy0gUEVQIDM4MCwgSXNzdWUgIzExNjgyOiBBZGQgInlpZWxkIGZyb20gPHg+IiB0byBzdXBwb3J0IGVhc3kgZGVsZWdhdGlvbiB0bworICBzdWJnZW5lcmF0b3JzIChpbml0aWFsIHBhdGNoIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0aW9uIGludG8gMy4zIGJ5CisgIFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHksIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKKworLSBJc3N1ZSAjMTM3NDg6IFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aCB0aGUgYGByYmBgIHByZWZpeAorICBhcyB3ZWxsIGFzIGBgYnJgYC4KKworLSBJc3N1ZSAjMTI3MzY6IFVzZSBmdWxsIHVuaWNvZGUgY2FzZSBtYXBwaW5ncyBmb3IgdXBwZXIsIGxvd2VyLCBhbmQgdGl0bGUgY2FzZS4KKworLSBJc3N1ZSAjMTI3NjA6IEFkZCBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oKS4gUGF0Y2ggYnkgRGF2aWQgVG93bnNoZW5kLgorCistIElzc3VlICMxMzczODogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgYnl0ZXMubG93ZXIoKSBhbmQgYnl0ZXMudXBwZXIoKS4KKworLSBJc3N1ZSAjMTM1Nzc6IEJ1aWx0LWluIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIF9fcXVhbG5hbWVfXy4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICM2Njk1OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBydW5zIG5vdyBjbGVhciB0aGUgZnJlZWxpc3Qgb2Ygc2V0CisgIG9iamVjdHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdHRoaWFzIFRyb2ZmYWVzLgorCistIEZpeCBPU0Vycm9yLl9faW5pdF9fIGFuZCBPU0Vycm9yLl9fbmV3X18gc28gdGhhdCBlYWNoIG9mIHRoZW0gY2FuIGJlCisgIG92ZXJyaWRlbiBhbmQgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoZm9sbG93dXAgdG8gaXNzdWUgIzEyNTU1KS4KKworLSBGaXggdGhlIGZpeCBmb3IgaXNzdWUgIzEyMTQ5OiBpdCB3YXMgaW5jb3JyZWN0LCBhbHRob3VnaCBpdCBoYWQgdGhlIHNpZGUKKyAgZWZmZWN0IG9mIGFwcGVhcmluZyB0byByZXNvbHZlIHRoZSBpc3N1ZS4gIFRoYW5rcyB0byBNYXJrIFNoYW5ub24gZm9yCisgIG5vdGljaW5nLgorCistIElzc3VlICMxMzUwNTogUGlja2xlIGJ5dGVzIG9iamVjdHMgaW4gYSB3YXkgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGgKKyAgUHl0aG9uIDIgd2hlbiB1c2luZyBwcm90b2NvbHMgPD0gMi4KKworLSBJc3N1ZSAjMTExNDc6IEZpeCBhbiB1bnVzZWQgYXJndW1lbnQgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUi4gIChGaXgKKyAgZ2l2ZW4gYnkgQ2FtcGJlbGwgQmFydG9uKS4KKworLSBJc3N1ZSAjMTM1MDM6IFVzZSBhIG1vcmUgZWZmaWNpZW50IHJlZHVjdGlvbiBmb3JtYXQgZm9yIGJ5dGVhcnJheXMgd2l0aAorICBwaWNrbGUgcHJvdG9jb2wgPj0gMy4gIFRoZSBvbGQgcmVkdWN0aW9uIGZvcm1hdCBpcyBrZXB0IHdpdGggb2xkZXIgcHJvdG9jb2xzCisgIGluIG9yZGVyIHRvIGFsbG93IHVucGlja2xpbmcgdW5kZXIgUHl0aG9uIDIuICBQYXRjaCBieSBJcm1lbiBkZSBKb25nLgorCistIElzc3VlICM3MTExOiBQeXRob24gY2FuIG5vdyBiZSBydW4gd2l0aG91dCBhIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyCisgIHN0cmVhbS4gIEl0IHdhcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggUHl0aG9uIDIuICBIb3dldmVyLCB0aGUgY29ycmVzcG9uZGluZworICBzeXMgbW9kdWxlIGVudHJpZXMgYXJlIG5vdyBzZXQgdG8gTm9uZSAoaW5zdGVhZCBvZiBhbiB1bnVzYWJsZSBmaWxlIG9iamVjdCkuCisKKy0gSXNzdWUgIzExODQ5OiBFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZAorICBvbiBQT1NJWCBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5CisgIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTM0NTI6IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKCkgZG9lc24ndCBzdXBwb3J0IGVycm9yIGhhbmRsZXJzCisgIGRpZmZlcmVudCB0aGFuICJzdHJpY3QiIGFueW1vcmUuIFRoZSBjYWxsZXIgd2FzIHVuYWJsZSB0byBjb21wdXRlIHRoZQorICBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyOiBpdCBkZXBlbmRzIG9uIHRoZSBlcnJvciBoYW5kbGVyLgorCistIFBFUCAzMTU1IC8gaXNzdWUgIzEzNDQ4OiBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgorCistIElzc3VlICMxMzQzNjogRml4IGEgYm9ndXMgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIEFTVCBvYmplY3Qgd2FzIHBhc3NlZAorICBhbiBpbnZhbGlkIGludGVnZXIgdmFsdWUuCisKKy0gSXNzdWUgIzEzNDExOiBtZW1vcnl2aWV3IG9iamVjdHMgYXJlIG5vdyBoYXNoYWJsZSB3aGVuIHRoZSB1bmRlcmx5aW5nCisgIG9iamVjdCBpcyBoYXNoYWJsZS4KKworLSBJc3N1ZSAjMTMzMzg6IEhhbmRsZSBhbGwgZW51bWVyYXRpb25zIGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIKKyAgdG8gYWxsb3cgY29tcGlsaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggLVdzd2l0Y2gtZW51bSBvbiBnY2MuCisgIEluaXRpYWwgcGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCisKKy0gSXNzdWUgIzEwMjI3OiBBZGQgYW4gYWxsb2NhdGlvbiBjYWNoZSBmb3IgYSBzaW5nbGUgc2xpY2Ugb2JqZWN0LiAgUGF0Y2ggYnkKKyAgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTMzOTM6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQxKCkgbm93IGFza3MgdGhlIGZ1bGwgcmVxdWVzdGVkIHNpemUgdG8KKyAgdGhlIHJhdyBzdHJlYW0gaW5zdGVhZCBvZiBsaW1pdGluZyBpdHNlbGYgdG8gdGhlIGJ1ZmZlciBzaXplLgorCistIElzc3VlICMxMzM5MjogV3JpdGluZyBhIHB5YyBmaWxlIHNob3VsZCBub3cgYmUgYXRvbWljIHVuZGVyIFdpbmRvd3MgYXMgd2VsbC4KKworLSBJc3N1ZSAjMTMzMzM6IFRoZSBVVEYtNyBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcyAodGhlIGVuY29kZXIKKyAgYWxyZWFkeSBhY2NlcHRzIHRoZW0pLgorCistIElzc3VlICMxMzM4OTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcGFzc2VzIG5vdyBjbGVhciB0aGUgZnJlZWxpc3RzIGZvcgorICBsaXN0IGFuZCBkaWN0IG9iamVjdHMuICBUaGV5IGFscmVhZHkgY2xlYXJlZCBvdGhlciBmcmVlbGlzdHMgaW4gdGhlCisgIGludGVycHJldGVyLgorCistIElzc3VlICMxMzMyNzogUmVtb3ZlIHRoZSBuZWVkIGZvciBhbiBleHBsaWNpdCBOb25lIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQKKyAgdG8gb3MudXRpbWUsIG9zLmx1dGltZXMsIG9zLmZ1dGltZXMsIG9zLmZ1dGltZW5zLCBvcy5mdXRpbWVzYXQsIGluCisgIG9yZGVyIHRvIHVwZGF0ZSB0byB0aGUgY3VycmVudCB0aW1lLiBBbHNvIGFkZGVkIGtleXdvcmQgYXJndW1lbnQKKyAgaGFuZGxpbmcgdG8gb3MudXRpbWVuc2F0IGluIG9yZGVyIHRvIHJlbW92ZSB0aGUgbmVlZCBmb3IgZXhwbGljaXQgTm9uZS4KKworLSBJc3N1ZSAjMTMzNTA6IFNpbXBsaWZ5IHNvbWUgQyBjb2RlIGJ5IHJlcGxhY2luZyBtb3N0IHVzYWdlcyBvZgorICBQeVVuaWNvZGVfRm9ybWF0IGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0LgorCistIElzc3VlICMxMzM0MjogaW5wdXQoKSB1c2VkIHRvIGlnbm9yZSBzeXMuc3RkaW4ncyBhbmQgc3lzLnN0ZG91dCdzIHVuaWNvZGUKKyAgZXJyb3IgaGFuZGxlciBpbiBpbnRlcmFjdGl2ZSBtb2RlICh3aGVuIGNhbGxpbmcgaW50byBQeU9TX1JlYWRsaW5lKCkpLgorCistIElzc3VlICM5ODk2OiBBZGQgc3RhcnQsIHN0b3AsIGFuZCBzdGVwIGF0dHJpYnV0ZXMgdG8gcmFuZ2Ugb2JqZWN0cy4KKworLSBJc3N1ZSAjMTMzNDM6IEZpeCBhIFN5c3RlbUVycm9yIHdoZW4gYSBsYW1iZGEgZXhwcmVzc2lvbiB1c2VzIGEgZ2xvYmFsCisgIHZhcmlhYmxlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50OiBgYGxhbWJkYSAqLAorICBhcmc9R0xPQkFMX05BTUU6IE5vbmVgYAorCistIElzc3VlICMxMjc5NzogQWRkZWQgY3VzdG9tIG9wZW5lciBwYXJhbWV0ZXIgdG8gYnVpbHRpbiBvcGVuKCkgYW5kCisgIEZpbGVJTy5vcGVuKCkuCisKKy0gSXNzdWUgIzEwNTE5OiBBdm9pZCB1bm5lY2Vzc2FyeSByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgaW4KKyAgc2V0b2JqZWN0LmMuCisKKy0gSXNzdWUgIzEwMzYzOiBEZWFsbG9jYXRlIGdsb2JhbCBsb2NrcyBpbiBQeV9GaW5hbGl6ZSgpLgorCistIElzc3VlICMxMzAxODogRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBlcnJvciBwYXRocyBpbiBkaWN0b2JqZWN0LmMuCisgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCisKKy0gSXNzdWUgIzEzMjAxOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24KKyAgdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgb2JqZWN0IGlkZW50aXR5KS4KKworLSBJc3N1ZSAjMTI5NDIzMjogSW4gYSBmZXcgY2FzZXMgaW52b2x2aW5nIG1ldGFjbGFzcyBpbmhlcml0YW5jZSwgdGhlCisgIGludGVycHJldGVyIHdvdWxkIHNvbWV0aW1lcyBpbnZva2UgdGhlIHdyb25nIG1ldGFjbGFzcyB3aGVuIGJ1aWxkaW5nIGEgbmV3CisgIGNsYXNzIG9iamVjdC4gVGhlc2UgY2FzZXMgbm93IGJlaGF2ZSBjb3JyZWN0bHkuIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjMTI3NTM6IEFkZCBzdXBwb3J0IGZvciBVbmljb2RlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLgorICBCb3RoIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCBhbmQgJ1xOey4uLn0nIG5vdyByZXNvbHZlIGFsaWFzZXMsCisgIGFuZCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworLSBJc3N1ZSAjMTIxNzA6IFRoZSBjb3VudCgpLCBmaW5kKCksIHJmaW5kKCksIGluZGV4KCkgYW5kIHJpbmRleCgpIG1ldGhvZHMKKyAgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIG5vdyBhY2NlcHQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDI1NQorICBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgorCistIElzc3VlICMxMjYwNDogVlRSQUNFIG1hY3JvIGV4cGFuZGVkIHRvIG5vLW9wIGluIF9zcmUuYyB0byBhdm9pZCBjb21waWxlcgorICB3YXJuaW5ncy4gUGF0Y2ggYnkgSm9zaCBUcmlwbGV0dCBhbmQgUGV0cmkgTGVodGluZW4uCisKKy0gSXNzdWUgIzEyMjgxOiBSZXdyaXRlIHRoZSBNQkNTIGNvZGVjIHRvIGhhbmRsZSBjb3JyZWN0bHkgcmVwbGFjZSBhbmQgaWdub3JlCisgIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiBUaGUgTUJDUyBjb2RlYyBpcyBub3cgc3VwcG9ydGluZyBhbGwKKyAgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seSByZXBsYWNlIHRvIGVuY29kZSBhbmQgaWdub3JlIHRvIGRlY29kZS4KKworLSBJc3N1ZSAjMTMxODg6IFdoZW4gY2FsbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgdHJhY2ViYWNrIGFyZ3VtZW50LAorICBnZW5lcmF0b3IudGhyb3coKSBub3cgZ2V0cyB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIHBhc3NlZCBleGNlcHRpb24ncworICBgYF9fdHJhY2ViYWNrX19gYCBhdHRyaWJ1dGUuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KKworLSBJc3N1ZSAjMTMxNDY6IFdyaXRpbmcgYSBweWMgZmlsZSBpcyBub3cgYXRvbWljIHVuZGVyIFBPU0lYLgorCistIElzc3VlICM3ODMzOiBFeHRlbnNpb24gbW9kdWxlcyBidWlsdCB1c2luZyBkaXN0dXRpbHMgb24gV2luZG93cyB3aWxsIG5vCisgIGxvbmdlciBpbmNsdWRlIGEgIm1hbmlmZXN0IiB0byBwcmV2ZW50IHRoZW0gZmFpbGluZyBhdCBpbXBvcnQgdGltZSBpbiBzb21lCisgIGVtYmVkZGVkIHNpdHVhdGlvbnMuCisKKy0gUEVQIDMxNTEgLyBpc3N1ZSAjMTI1NTU6IHJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkuCisKKy0gSXNzdWUgIzEzNTYwOiBBZGQgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgpLCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpCisgIGFuZCBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKCkgZnVuY3Rpb25zIHRvIHRoZSBDIEFQSSB0byBkZWNvZGUvZW5jb2RlIGZyb20vdG8KKyAgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgorCistIEFkZCBpbnRlcm5hbCBBUEkgZm9yIHN0YXRpYyBzdHJpbmdzIChfUHlfaWRlbnRpZmllciBldCBhbC4pLgorCistIElzc3VlICMxMzA2MzogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfTk9fREFUQSAobnVtYmVyZWQgMjMyIGFuZCBkZXNjcmliZWQKKyAgYXMgIlRoZSBwaXBlIGlzIGJlaW5nIGNsb3NlZCIpIGlzIG5vdyBtYXBwZWQgdG8gUE9TSVggZXJybm8gRVBJUEUKKyAgKHByZXZpb3VzbHkgRUlOVkFMKS4KKworLSBJc3N1ZSAjMTI5MTE6IEZpeCBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVwcigpIG9mIGh1Z2UKKyAgdHVwbGVzIG9yIGxpc3RzLgorCistIFBFUCAzOTM6IGZsZXhpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhhbmtzIHRvIFRvcnN0ZW4gQmVja2VyIGZvciB0aGUKKyAgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYW5kIFZpY3RvciBTdGlubmVyIGZvciB2YXJpb3VzIGJ1ZyBmaXhlcy4KKworLSBJc3N1ZSAjMTQwODE6IFRoZSAnc2VwJyBhbmQgJ21heHNwbGl0JyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0LCBieXRlcy5zcGxpdCwKKyAgYW5kIGJ5dGVhcnJheS5zcGxpdCBtYXkgbm93IGJlIHBhc3NlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTMwMTI6IFRoZSAna2VlcGVuZHMnIHBhcmFtZXRlciB0byBzdHIuc3BsaXRsaW5lcyBtYXkgbm93IGJlIHBhc3NlZAorICBhcyBhIGtleXdvcmQgYXJndW1lbnQ6ICAibXlfc3RyaW5nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkiLiAgVGhlIHNhbWUKKyAgY2hhbmdlIGFsc28gYXBwbGllcyB0byBieXRlcy5zcGxpdGxpbmVzIGFuZCBieXRlYXJyYXkuc3BsaXRsaW5lcy4KKworLSBJc3N1ZSAjNzczMjogRG9uJ3Qgb3BlbiBhIGRpcmVjdG9yeSBhcyBhIGZpbGUgYW55bW9yZSB3aGlsZSBpbXBvcnRpbmcgYQorICBtb2R1bGUuIElnbm9yZSB0aGUgZGlyZWNvdHJ5IGlmIGl0cyBuYW1lIG1hdGNocyB0aGUgbW9kdWxlIG5hbWUgKGUuZy4KKyAgIl9faW5pdF9fLnB5IikgYW5kIHJhaXNlIGEgSW1wb3J0RXJyb3IgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTMwMjE6IE1pc3NpbmcgZGVjcmVmIG9uIGFuIGVycm9yIHBhdGguICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IKKyAgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KKworLSBJc3N1ZSAjMTI5NzM6IEZpeCBvdmVyZmxvdyBjaGVja3MgdGhhdCByZWxpZWQgb24gdW5kZWZpbmVkIGJlaGF2aW91ciBpbgorICBsaXN0X3JlcGVhdCAobGlzdG9iamVjdC5jKSBhbmQgaXNsaWNlX25leHQgKGl0ZXJ0b29sc21vZHVsZS5jKS4gIFRoZXNlIGJ1Z3MKKyAgY2F1c2VkIHRlc3QgZmFpbHVyZXMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgQ2xhbmcuCisKKy0gSXNzdWUgIzEyOTA0OiBvcy51dGltZSwgb3MuZnV0aW1lcywgb3MubHV0aW1lcywgYW5kIG9zLmZ1dGltZXNhdCBub3cgd3JpdGUKKyAgYXRpbWUgYW5kIG10aW1lIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24gb24gbW9kZXJuIFBPU0lYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMTI4MDI6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX0RJUkVDVE9SWSAobnVtYmVyZWQgMjY3KSBpcyBub3cKKyAgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVOT1RESVIgKHByZXZpb3VzbHkgRUlOVkFMKS4KKworLSBJc3N1ZSAjOTIwMDogVGhlIHN0ci5pcyogbWV0aG9kcyBub3cgd29yayB3aXRoIHN0cmluZ3MgdGhhdCBjb250YWluIG5vbi1CTVAKKyAgY2hhcmFjdGVycyBldmVuIGluIG5hcnJvdyBVbmljb2RlIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTI3OTE6IEJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgZWFybHkgd2hlbiBhIGdlbmVyYXRvciBleGl0cyB3aXRoCisgIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMTI3NzM6IE1ha2UgX19kb2NfXyBtdXRhYmxlIG9uIHVzZXItZGVmaW5lZCBjbGFzc2VzLgorCistIElzc3VlICMxMjc2NjogUmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gY3JlYXRpbmcgYSBjbGFzcyB3aXRoIGEgY2xhc3MgdmFyaWFibGUKKyAgdGhhdCBjb25mbGljdHMgd2l0aCBhIG5hbWUgaW4gX19zbG90c19fLgorCistIElzc3VlICMxMjI2NjogRml4IHN0ci5jYXBpdGFsaXplKCkgdG8gY29ycmVjdGx5IHVwcGVyY2FzZS9sb3dlcmNhc2UKKyAgdGl0bGVjYXNlZCBhbmQgY2FzZWQgbm9uLWxldHRlciBjaGFyYWN0ZXJzLgorCistIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKKyAgb3V0c2lkZSB0aGUgQk1QLgorCistIElzc3VlICMxMjU3NTogVmFsaWRhdGUgdXNlci1nZW5lcmF0ZWQgQVNUIGJlZm9yZSBpdCBpcyBjb21waWxlZC4KKworLSBNYWtlIHR5cGUoTm9uZSksIHR5cGUoRWxsaXBzaXMpLCBhbmQgdHlwZShOb3RJbXBsZW1lbnRlZCkgY2FsbGFibGUuIFRoZXkKKyAgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHNpbmdsZXRvbiBpbnN0YW5jZXMuCisKKy0gRm9yYmlkIHN1bW1pbmcgYnl0ZXMgd2l0aCBzdW0oKS4KKworLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKKyAgY29tcGlsaW5nIHRoZW0uCisKKy0gSXNzdWUgIzEyNjQ3OiBUaGUgTm9uZSBvYmplY3Qgbm93IGhhcyBhIF9fYm9vbF9fKCkgbWV0aG9kIHRoYXQgcmV0dXJucyBGYWxzZS4KKyAgRm9ybWVybHksIGJvb2woTm9uZSkgcmV0dXJuZWQgRmFsc2Ugb25seSBiZWNhdXNlIG9mIHNwZWNpYWwgY2FzZSBsb2dpYworICBpbiBQeU9iamVjdF9Jc1RydWUoKS4KKworLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCisgIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQorICBKdWxpYW4gQmVybWFuLgorCistIElzc3VlICMxMDI3MTogQWxsb3cgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSBiZSBhbnkgY2FsbGFibGUuCisKKy0gSXNzdWUgIzExNjI3OiBGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGEgZXhjZXB0aW9uIHJldHVybnMgYQorICBub24tZXhjZXB0aW9uIGNsYXNzLgorCistIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbmFyeSBnZXRzCisgIGNsZWFyZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgVGhpcyBmaXhlcyBhIHNlZ2ZhdWx0IHdoZW4gYW4gaW5zdGFuY2UKKyAgYW5kIGl0cyB0eXBlIGdldCBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncworICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZworICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCisKKy0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKworLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCisgIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCisKKy0gSXNzdWUgIzk2NDI6IEZpeCBmaWxlc3lzdGVtIGVuY29kaW5nIGluaXRpYWxpemF0aW9uOiB1c2UgdGhlIEFOU0kgY29kZSBwYWdlCisgIG9uIFdpbmRvd3MgaWYgdGhlIG1iY3MgY29kZWMgaXMgbm90IGF2YWlsYWJsZSwgYW5kIGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmCisgIHdlIGNhbm5vdCBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyAoaWYgbmxfbGFuZ2luZm8oQ09ERVNFVCkgaXMgbm90IGF2YWlsYWJsZSkKKyAgaW5zdGVhZCBvZiB1c2luZyBVVEYtOC4KKworLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQorICBnZW5lcmF0b3IuCisKKy0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQorICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KKworLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sCisgIHdpdGggb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTIzNTY6IFdoZW4gcmVxdWlyZWQgcG9zaXRpb25hbCBvciBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBub3QKKyAgZ2l2ZW4sIHByb2R1Y2UgYSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIHdoaWNoIGluY2x1ZGVzIHRoZSBuYW1lKHMpIG9mIHRoZQorICBtaXNzaW5nIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTIzNzA6IEZpeCBzdXBlciB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIF9fY2xhc3NfXyBpcyBvdmVycmlkZW4gaW4gdGhlCisgIGNsYXNzIGJvZHkuCisKKy0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKKyAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgorCistIExvb3NlbiB0eXBlIHJlc3RyaWN0aW9ucyBvbiB0aGUgX19kaXJfXyBtZXRob2QuIF9fZGlyX18gY2FuIG5vdyByZXR1cm4gYW55CisgIHNlcXVlbmNlLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIGxpc3QgYW5kIHNvcnRlZCBieSBkaXIoKS4KKworLSBJc3N1ZSAjMTIyNjU6IE1ha2UgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgYnkgcGFzc2luZyBhbiBpbnZhbGlkIHNldCBvZgorICBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBtb3JlIGluZm9ybWF0aXZlLgorCistIElzc3VlICMxMjIyNTogU3RpbGwgYWxsb3cgUHl0aG9uIHRvIGJ1aWxkIGlmIFB5dGhvbiBpcyBub3QgaW4gaXRzIGhnIHJlcG8gb3IKKyAgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAorICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAorICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCisKKy0gSXNzdWUgIzEyMjE2OiBBbGxvdyB1bmV4cGVjdGVkIEVPRiBlcnJvcnMgdG8gaGFwcGVuIG9uIGFueSBsaW5lIG9mIHRoZSBmaWxlLgorCistIElzc3VlICMxMjE5OTogVGhlIFRyeUV4Y2VwdCBhbmQgVHJ5RmluYWxseSBhbmQgQVNUIG5vZGVzIGhhdmUgYmVlbiB1bmlmaWVkCisgIGludG8gYSBUcnkgbm9kZS4KKworLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KKyAgTWFjIE9TIFggYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhCisgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4KKyAgKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKKworLSBJc3N1ZSAjMTIxMDY6IFRoZSB1c2Ugb2YgdGhlIG11bHRpcGxlLXdpdGggc2hvcnRoYW5kIHN5bnRheCBpcyBub3cgcmVmbGVjdGVkCisgIGluIHRoZSBBU1QuCisKKy0gSXNzdWUgIzEyMTkwOiBUcnkgdG8gdXNlIHRoZSBzYW1lIGZpbGVuYW1lIG9iamVjdCB3aGVuIGNvbXBpbGluZyB1bm1hcnNoYWxsaW5nCisgIGEgY29kZSBvYmplY3RzIGluIHRoZSBzYW1lIGZpbGUuCisKKy0gSXNzdWUgIzEyMTY2OiBNb3ZlIGltcGxlbWVudGF0aW9ucyBvZiBkaXIoKSBzcGVjaWFsaXplZCBmb3IgdmFyaW91cyB0eXBlcyBpbnRvCisgIHRoZSBfX2Rpcl9fKCkgbWV0aG9kcyBvZiB0aG9zZSB0eXBlcy4KKworLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKworLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCisgIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCisKKy0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAorICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxNzQ2NjU2OiBBZGRlZCB0aGUgaWZfbmFtZWluZGV4LCBpZl9pbmRleHRvbmFtZSwgaWZfbmFtZXRvaW5kZXgKKyAgbWV0aG9kcyB0byB0aGUgc29ja2V0IG1vZHVsZS4KKworLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCisgIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5CisgIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCisKKy0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCisgIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgorCistIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQorICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4KKyAgdGhleSB0cnkgdG8gdGFrZSB0aGUgR0lMLgorCistIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAorICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgorICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCisgIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgorICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMDkxNDogSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIGZpbGVzeXN0ZW0gY29kZWMgd2hlbiBjcmVhdGluZyBhIG5ldworICBzdWJpbnRlcnByZXRlciB0byBmaXggYSBib290c3RyYXAgaXNzdWUgd2l0aCBjb2RlY3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBhcworICB0aGUgSVNPLTg4NTktMTUgY29kZWMuCisKKy0gSXNzdWUgIzExOTE4OiBPUy8yIGFuZCBWTVMgYXJlIG5vIG1vcmUgc3VwcG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGxhY2sgb2YKKyAgbWFpbnRhaW5lci4KKworLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCisgIGFjY2VwdGVkIHRvby4KKworLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcworICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAKKyAgY2hhcnMgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KKworLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgorICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCisKKy0gSXNzdWUgIzU2NzM6IEFkZGVkIGEgYHRpbWVvdXRgIGtleXdvcmQgYXJndW1lbnQgdG8gc3VicHJvY2Vzcy5Qb3Blbi53YWl0LAorICBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlZCwgc3VicHJvY2Vzcy5jYWxsLCBzdWJwcm9jZXNzLmNoZWNrX2NhbGwsIGFuZAorICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dC4gIElmIHRoZSBibG9ja2luZyBvcGVyYXRpb24gdGFrZXMgbW9yZSB0aGFuIGB0aW1lb3V0YAorICBzZWNvbmRzLCB0aGUgYHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKy0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCisgIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzkzMTk6IEluY2x1ZGUgdGhlIGZpbGVuYW1lIGluICJOb24tVVRGOCBjb2RlIC4uLiIgc3ludGF4IGVycm9yLgorCistIElzc3VlICMxMDc4NTogU3RvcmUgdGhlIGZpbGVuYW1lIGFzIFVuaWNvZGUgaW4gdGhlIFB5dGhvbiBwYXJzZXIuCisKKy0gSXNzdWUgIzExNjE5OiBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoKSBkb2Vzbid0IGVuY29kZSB0aGUgcGF0aCB0byBieXRlcworICBvbiBXaW5kb3dzLgorCistIElzc3VlICMxMDk5ODogUmVtb3ZlIG1lbnRpb25zIG9mIC1RLCBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyBhbmQKKyAgUHlfRGl2aXNpb25XYXJuaW5nRmxhZyBsZWZ0IG92ZXIgZnJvbSBQeXRob24gMi4KKworLSBJc3N1ZSAjMTEyNDQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBwZWVwaG9sZXIgY2hlY2sgdGhhdCB3YXMgcHJldmVudGluZworICBuZWdhdGl2ZSB6ZXJvcyBmcm9tIGJlaW5nIGNvbnN0YW50LWZvbGRlZCBwcm9wZXJseS4KKworLSBJc3N1ZSAjMTEzOTU6IGlvLkZpbGVJTygpLndyaXRlKCkgY2xhbXBzIHRoZSBkYXRhIGxlbmd0aCB0byAzMiw3NjcgYnl0ZXMgb24KKyAgV2luZG93cyBpZiB0aGUgZmlsZSBpcyBhIFRUWSB0byB3b3JrYXJvdW5kIGEgV2luZG93cyBidWcuIFRoZSBXaW5kb3dzIGNvbnNvbGUKKyAgcmV0dXJucyBhbiBlcnJvciAoMTI6IG5vdCBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYKKyAgc3Rkb3V0IG1vZGUgaXMgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCisgIGRlcGVuZGluZyBvbiBoZWFwIHVzYWdlKS4KKworLSBJc3N1ZSAjMTEzMjA6IGZpeCBib2d1cyBtZW1vcnkgbWFuYWdlbWVudCBpbiBNb2R1bGVzL2dldHBhdGguYywgbGVhZGluZyB0bworICBhIHBvc3NpYmxlIGNyYXNoIHdoZW4gY2FsbGluZyBQeV9TZXRQYXRoKCkuCisKKy0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAorICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCisgIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KKworLSBJc3N1ZSAjOTg1NjogQ2hhbmdlIG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZworICB0byBiZSBhIERlcHJlY2F0aW9uV2FybmluZy4gSW4gMy4yIGl0IHdhcyBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisgIEluIDMuNCBpdCB3aWxsIGJlIGEgVHlwZUVycm9yLgorCistIElzc3VlICMxMTI0NDogVGhlIHBlZXBob2xlIG9wdGltaXplciBpcyBub3cgYWJsZSB0byBjb25zdGFudC1mb2xkCisgIGFyYml0cmFyaWx5IGNvbXBsZXggZXhwcmVzc2lvbnMuICBUaGlzIGFsc28gZml4ZXMgYSAzLjIgcmVncmVzc2lvbiB3aGVyZQorICBvcGVyYXRpb25zIGludm9sdmluZyBuZWdhdGl2ZSBudW1iZXJzIHdlcmUgbm90IGNvbnN0YW50LWZvbGRlZC4KKworLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuCisgIHRoZXJlIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCisKKy0gSXNzdWUgIzExMzM1OiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGxpc3Quc29ydCB3aGVuIHRoZSBrZXkgZnVuY3Rpb24KKyAgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjODkyMzogV2hlbiBhIHN0cmluZyBpcyBlbmNvZGVkIHRvIFVURi04IGluIHN0cmljdCBtb2RlLCB0aGUgcmVzdWx0IGlzCisgIGNhY2hlZCBpbnRvIHRoZSBvYmplY3QuIEV4YW1wbGVzOiBzdHIuZW5jb2RlKCksIHN0ci5lbmNvZGUoJ3V0Zi04JyksCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAorICBOVUxMKS4KKworLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KKworLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQorICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgorCistIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCisKKy0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCisgIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCisgIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgorCistIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoCisgIGEgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KKworLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCisgIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KKworLSBJc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIG5vdyBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KKyAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCisKKy0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KKyAgbmFycm93IGJ1aWxkLgorCistIElzc3VlICMxMTE2ODogUmVtb3ZlIGZpbGVuYW1lIGRlYnVnIHZhcmlhYmxlIGZyb20gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCisgIEl0IGVuY29kZWQgdGhlIFVuaWNvZGUgZmlsZW5hbWUgdG8gVVRGLTgsIGJ1dCB0aGUgZW5jb2RpbmcgZmFpbHMgb24KKyAgdW5kZWNvZGFibGUgZmlsZW5hbWUgKG9uIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzKSB3aGljaCByYWlzZXMgYW4gdW5leHBlY3RlZAorICBVbmljb2RlRW5jb2RlRXJyb3Igb24gcmVjdXJzaW9uIGxpbWl0LgorCistIElzc3VlICMxMTE4NzogUmVtb3ZlIGJvb3RzdHJhcCBjb2RlICh1c2UgQVNDSUkpIG9mCisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSwgaXQgd2FzIHJlcGxhY2VkIGJ5IGEgYmV0dGVyIGZhbGxiYWNrICh1c2UgdGhlCisgIGxvY2FsZSBlbmNvZGluZykgaW4gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLgorCistIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCisKKy0gSXNzdWUgIzEwNTE2OiBOZXcgY29weSgpIGFuZCBjbGVhcigpIG1ldGhvZHMgZm9yIGxpc3RzIGFuZCBieXRlYXJyYXlzLgorCistIElzc3VlICMxMTM4NjogYnl0ZWFycmF5LnBvcCgpIG5vdyB0aHJvd3MgSW5kZXhFcnJvciB3aGVuIHRoZSBieXRlYXJyYXkgaXMKKyAgZW1wdHksIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KKworLSBJc3N1ZSAjMTIzODA6IFRoZSByanVzdCwgbGp1c3QgYW5kIGNlbnRlciBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgbm93IGFjY2VwdCBhIGJ5dGVhcnJheSBhcmd1bWVudC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDE5NTogQW4gaXNzdWUgdGhhdCBjYXVzZWQgd2Vha3JlZi5XZWFrU2V0IGluc3RhbmNlcyB0byBpbmNvcnJlY3RseQorICByZXR1cm4gVHJ1ZSBmb3IgYSBXZWFrU2V0IGluc3RhbmNlICdhJyBpbiBib3RoICdhIDwgYScgYW5kICdhID4gYScgaGFzIGJlZW4KKyAgZml4ZWQuCisKKy0gSXNzdWUgIzE0MTY2OiBQaWNrbGVyIG9iamVjdHMgbm93IGhhdmUgYW4gb3B0aW9uYWwgYGBkaXNwYXRjaF90YWJsZWBgCisgIGF0dHJpYnV0ZSB3aGljaCBhbGxvd3MgdG8gc2V0IGN1c3RvbSBwZXItcGlja2xlciByZWR1Y3Rpb24gZnVuY3Rpb25zLgorICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzE0MTc3OiBtYXJzaGFsLmxvYWRzKCkgbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiB1bmljb2RlCisgIHN0cmluZy4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzU1MDogUmVtb3ZlIHRoZSBkZWJ1ZyBtYWNoaW5lcnkgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZTogcmVtb3ZlCisgIHZlcmJvc2UgYXJndW1lbnRzIGZyb20gYWxsIHRocmVhZGluZyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCisgIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCisgIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgorICBPKG4pLgorCistIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KKyAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgorCistIElzc3VlICMxMTg0MTogRml4IGNvbXBhcmlzb24gYnVnIHdpdGggJ3JjJyB2ZXJzaW9ucyBpbiBwYWNrYWdpbmcudmVyc2lvbi4KKyAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCisgIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCisgIG9uIFdpbmRvd3MuICBBbHNvIGZpeGVkIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjODAzMzogc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zCisgIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcHBlIERldmFsa2VuZWVyLgorCistIEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KKworLSBJc3N1ZSAjMTM2NDE6IERlY29kaW5nIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZTY0IG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKKyAgdW5pY29kZSBzdHJpbmdzLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjMTQwNDM6IFNwZWVkIHVwIGltcG9ydGxpYidzIF9GaWxlRmluZGVyIGJ5IGF0IGxlYXN0IDh4LCBhbmQgYWRkIGEKKyAgbmV3IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGZ1bmN0aW9uLgorCistIElzc3VlICMxNDAwMTogQ1ZFLTIwMTItMDg0NTogeG1scnBjOiBGaXggYW4gZW5kbGVzcyBsb29wIGluCisgIFNpbXBsZVhNTFJQQ1NlcnZlciB1cG9uIG1hbGZvcm1lZCBQT1NUIHJlcXVlc3QuCisKKy0gSXNzdWUgIzEzOTYxOiBNb3ZlIGltcG9ydGxpYiBvdmVyIHRvIHVzaW5nIG9zLnJlcGxhY2UoKSBmb3IgYXRvbWljIHJlbmFtaW5nLgorCistIERvIGF3YXkgd2l0aCBhbWJpZ3VvdXMgbGV2ZWwgdmFsdWVzIChhcyBzdWdnZXN0ZWQgYnkgUEVQIDMyOCkgaW4KKyAgaW1wb3J0bGliLl9faW1wb3J0X18oKSBieSByYWlzaW5nIFZhbHVlRXJyb3Igd2hlbiBsZXZlbCA8IDAuCisKKy0gSXNzdWUgIzI0ODk6IHB0eS5zcGF3biBjb3VsZCBjb25zdW1lIDEwMCUgY3B1IHdoZW4gaXQgZW5jb3VudGVyZWQgYW4gRU9GLgorCistIElzc3VlICMxMzAxNDogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCisKKy0gSXNzdWUgIzEzNzc3OiBBZGQgUEZfU1lTVEVNIHNvY2tldHMgb24gT1MgWC4KKyAgUGF0Y2ggYnkgTWljaGFlbCBHb2RlcmJhdWVyLgorCistIElzc3VlICMxMzAxNTogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gZGVmYXVsdGRpY3QuX19yZXByX18uCisgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCisKKy0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYW5kIHBhY2thZ2luZydzIGJ1aWxkX2V4dCBjb21tYW5kcyBvcHRpb24gbm93CisgIGNvcnJlY3RseSBwYXJzZXMgbXVsdGlwbGUgdmFsdWVzIChzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMpIGdpdmVuCisgIHRvIHRoZWlyIC0tbGlicmFyaWVzIG9wdGlvbi4KKworLSBJc3N1ZSAjMTAyODc6IG5udHBsaWIgbm93IHF1ZXJpZXMgdGhlIHNlcnZlcidzIENBUEFCSUxJVElFUyBmaXJzdCBiZWZvcmUKKyAgc2VuZGluZyBNT0RFIFJFQURFUiwgYW5kIG9ubHkgc2VuZHMgaXQgaWYgbm90IGFscmVhZHkgaW4gUkVBREVSIG1vZGUuCisgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKworLSBJc3N1ZSAjMTM5OTM6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBlbmQgdGFncyB3aGVuCisgIHN0cmljdD1GYWxzZS4KKworLSBJc3N1ZSAjMTM5MzA6IGxpYjJ0bzMgbm93IHN1cHBvcnRzIHdyaXRpbmcgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCisgIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCisgIHN1ZmZpeC4KKworLSBJc3N1ZSAjOTc1MDogRml4IHNxbGl0ZTMuQ29ubmVjdGlvbi5pdGVyZHVtcCBvbiB0YWJsZXMgYW5kIGZpZWxkcworICB3aXRoIGEgbmFtZSB0aGF0IGlzIGEga2V5d29yZCBvciBjb250YWlucyBxdW90ZXMuIFBhdGNoIGJ5IE1hcmtvCisgIEtvaHRhbGEuCisKKy0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgYWdhaW4gYWZ0ZXIKKyAgYXV0aGVudGljYXRpbmcgKHNpbmNlIHRoZSByZXN1bHQgbWF5IGNoYW5nZSwgYWNjb3JkaW5nIHRvIFJGQyA0NjQzKS4KKyAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxMzk4OTogRG9jdW1lbnQgdGhhdCBHemlwRmlsZSBkb2VzIG5vdCBzdXBwb3J0IHRleHQgbW9kZSwgYW5kIGdpdmUgYQorICBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSB3aGVuIG9wZW5lZCB3aXRoIGFuIGludmFsaWQgbW9kZSBzdHJpbmcuCisKKy0gSXNzdWUgIzEzNTkwOiBPbiBPUyBYIDEwLjcgYW5kIDEwLjYgd2l0aCBYY29kZSA0LjIsIGJ1aWxkaW5nCisgIERpc3R1dGlscy1iYXNlZCBwYWNrYWdlcyB3aXRoIEMgZXh0ZW5zaW9uIG1vZHVsZXMgbWF5IGZhaWwgYmVjYXVzZQorICBBcHBsZSBoYXMgcmVtb3ZlZCBnY2MtNC4yLCB0aGUgdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIHB5dGhvbi5vcmcKKyAgNjQtYml0LzMyLWJpdCBQeXRob25zLiAgSWYgdGhlIHVzZXIgZG9lcyBub3QgZXhwbGljaXRseSBvdmVycmlkZQorICB0aGUgZGVmYXVsdCBDIGNvbXBpbGVyIGJ5IHNldHRpbmcgdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlLAorICBEaXN0dXRpbHMgd2lsbCBub3cgYXR0ZW1wdCB0byBjb21waWxlIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggY2xhbmcKKyAgaWYgZ2NjLTQuMiBpcyByZXF1aXJlZCBidXQgbm90IGZvdW5kLiBBbHNvIGFzIGEgY29udmVuaWVuY2UsIGlmCisgIHRoZSB1c2VyIGRvZXMgZXhwbGljaXRseSBzZXQgQ0MsIHN1YnN0aXR1dGUgaXRzIHZhbHVlIGFzIHRoZSBkZWZhdWx0CisgIGNvbXBpbGVyIGluIHRoZSBEaXN0dXRpbHMgTERTSEFSRUQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgT1MgWC4KKyAgKE5vdGUsIHRoZSBweXRob24ub3JnIDMyLWJpdC1vbmx5IFB5dGhvbnMgdXNlIGdjYy00LjAgYW5kIHRoZSAxMC40dQorICBTREssIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGF2YWlsYWJsZSBpbiBYY29kZSA0LiAgVGhpcyBjaGFuZ2UgZG9lcyBub3QKKyAgYXR0ZW1wdCB0byBvdmVycmlkZSBzZXR0aW5ncyB0byBzdXBwb3J0IHRoZWlyIHVzZSB3aXRoIFhjb2RlIDQuKQorCistIElzc3VlICMxMzk2MDogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGNvbW1lbnRzIHdoZW4KKyAgc3RyaWN0PUZhbHNlLgorCistIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAorICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKKyAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKy0gV2hlbiAnJyBpcyBhIHBhdGggKGUuZy4gaW4gc3lzLnBhdGgpLCBtYWtlIHN1cmUgX19maWxlX18gdXNlcyB0aGUgY3VycmVudAorICB3b3JraW5nIGRpcmVjdG9yeSBpbnN0ZWFkIG9mICcnIGluIGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTM2MDk6IEFkZCB0d28gZnVuY3Rpb25zIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5hbCBzaXplOgorICBvcy5nZXRfdGVybWluYWxfc2l6ZSAobG93IGxldmVsKSBhbmQgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIChoaWdoIGxldmVsKS4KKyAgUGF0Y2ggYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lay4KKworLSBJc3N1ZSAjMTM4NDU6IE9uIFdpbmRvd3MsIHRpbWUudGltZSgpIG5vdyB1c2VzIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkKKyAgaW5zdGVhZCBvZiBmdGltZSgpIHRvIGhhdmUgYSByZXNvbHV0aW9uIG9mIDEwMCBucyBpbnN0ZWFkIG9mIDEgbXMgKHRoZSBjbG9jaworICBhY2N1cmFjeSBpcyBiZXR3ZWVuIDAuNSBtcyBhbmQgMTUgbXMpLgorCistIElzc3VlICMxMzg0NjogQWRkIHRpbWUubW9ub3RvbmljKCksIG1vbm90b25pYyBjbG9jay4KKworLSBJc3N1ZSAjODE4NDogbXVsdGlwcm9jZXNzaW5nOiBPbiBXaW5kb3dzLCBkb24ndCBzZXQgU09fUkVVU0VBRERSIG9uCisgIENvbm5lY3Rpb24gc29ja2V0cywgYW5kIHNldCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSBvbiBuYW1lZCBwaXBlcywgdG8KKyAgbWFrZSBzdXJlIHR3byBsaXN0ZW5lcnMgY2FuJ3QgYmluZCB0byB0aGUgc2FtZSBzb2NrZXQvcGlwZSAob3IgYW55IGV4aXN0aW5nCisgIHNvY2tldC9waXBlKS4KKworLSBJc3N1ZSAjMTA4MTE6IEZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywKKyAgcmFpc2UgYSBQcm9ncmFtbWluZ0Vycm9yIG5vdy4KKworLSBJc3N1ZSAjMTA4ODE6IEZpeCB0ZXN0X3NpdGUgZmFpbHVyZSB3aXRoIE9TIFggZnJhbWV3b3JrIGJ1aWxkcy4KKworLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgorICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEzNzM0OiBBZGQgb3MuZndhbGsoKSwgYSBkaXJlY3Rvcnkgd2Fsa2luZyBmdW5jdGlvbiB5aWVsZGluZyBmaWxlCisgIGRlc2NyaXB0b3JzLgorCistIElzc3VlICMyOTQ1OiBNYWtlIHRoZSBkaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgYXdhcmUgb2YgYmRpc3RfcnBtIHByb2R1Y3RzLgorCistIElzc3VlICMxMzcxMjogcHlzZXR1cCBjcmVhdGUgc2hvdWxkIG5vdCBjb252ZXJ0IHBhY2thZ2VfZGF0YSB0byBleHRyYV9maWxlcy4KKworLSBJc3N1ZSAjMTE4MDU6IHBhY2thZ2VfZGF0YSBpbiBzZXR1cC5jZmcgc2hvdWxkIGFsbG93IG1vcmUgdGhhbiBvbmUgdmFsdWUuCisKKy0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAorICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBJc3N1ZSAjMTM5MDE6IFByZXZlbnQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZXMgb24gT1MgWCB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KKworLSBJc3N1ZSAjMTM2NzY6IEhhbmRsZSBzdHJpbmdzIHdpdGggZW1iZWRkZWQgemVyb3MgY29ycmVjdGx5IGluIHNxbGl0ZTMuCisKKy0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCisgIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzg4Mjg6IEFkZCBuZXcgZnVuY3Rpb24gb3MucmVwbGFjZSgpLCBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcKKyAgd2l0aCBvdmVyd3JpdGluZy4KKworLSBJc3N1ZSAjMTM4NDg6IG9wZW4oKSBhbmQgdGhlIEZpbGVJTyBjb25zdHJ1Y3RvciBub3cgY2hlY2sgZm9yIE5VTAorICBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlIG5hbWUuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy0gSXNzdWUgIzEzODA2OiBUaGUgc2l6ZSBjaGVjayBpbiBhdWRpb29wIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zIHdhcyB0b28KKyAgc3RyaWN0IGFuZCBjb3VsZCByZWplY3QgdmFsaWQgY29tcHJlc3NlZCBkYXRhLiAgUGF0Y2ggYnkgT2xlZyBQbGFraG90bnl1ay4KKworLSBJc3N1ZSAjMTM4MTI6IFdoZW4gYSBtdWx0aXByb2Nlc3NpbmcgUHJvY2VzcyBjaGlsZCByYWlzZXMgYW4gZXhjZXB0aW9uLAorICBmbHVzaCBzdGRlcnIgYWZ0ZXIgcHJpbnRpbmcgdGhlIGV4Y2VwdGlvbiB0cmFjZWJhY2suCisKKy0gSXNzdWUgIzEzODg1OiBDVkUtMjAxMS0zMzg5OiB0aGUgX3NzbCBtb2R1bGUgd291bGQgYWx3YXlzIGRpc2FibGUgdGhlIENCQworICBJViBhdHRhY2sgY291bnRlcm1lYXN1cmUuCisKKy0gSXNzdWUgIzEzODQ3OiB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLmdtdGltZSgpIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQKKyAgb2YgVmFsdWVFcnJvciBvbiBmYWlsdXJlLiB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuYXNjdGltZSgpIG5vdyByYWlzZXMgYW4KKyAgT1NFcnJvciBpZiBsb2NhbHRpbWUoKSBmYWlsZWQuIHRpbWUuY2xvY2soKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQorICBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgb3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZAorCistIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQorICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCisKKy0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCisKKy0gSXNzdWUgIzEzNzcyOiBJbiBvcy5zeW1saW5rKCkgdW5kZXIgV2luZG93cywgZG8gbm90IHRyeSB0byBndWVzcyB0aGUgbGluaworICB0YXJnZXQncyB0eXBlIChmaWxlIG9yIGRpcmVjdG9yeSkuICBUaGUgZGV0ZWN0aW9uIHdhcyBidWdneSBhbmQgbWFkZSB0aGUKKyAgY2FsbCBub24tYXRvbWljICh0aGVyZWZvcmUgcHJvbmUgdG8gcmFjZSBjb25kaXRpb25zKS4KKworLSBJc3N1ZSAjNjYzMTogRGlzYWxsb3cgcmVsYXRpdmUgZmlsZSBwYXRocyBpbiB1cmxsaWIgdXJsb3BlbiBtZXRob2RzLgorCistIElzc3VlICMxMzcyMjogQXZvaWQgc2lsZW5jaW5nIEltcG9ydEVycm9ycyB3aGVuIGluaXRpYWxpemluZyB0aGUgY29kZWNzCisgIHJlZ2lzdHJ5LgorCistIElzc3VlICMxMzc4MTogRml4IEd6aXBGaWxlIGJ1ZyB0aGF0IGNhdXNlZCBhbiBleGNlcHRpb24gdG8gYmUgcmFpc2VkIHdoZW4KKyAgb3BlbmluZyBmb3Igd3JpdGluZyB1c2luZyBhIGZpbGVvYmogcmV0dXJuZWQgYnkgb3MuZmRvcGVuKCkuCisKKy0gSXNzdWUgIzEzODAzOiBVbmRlciBTb2xhcmlzLCBkaXN0dXRpbHMgZG9lc24ndCBpbmNsdWRlIGJpdG5lc3MKKyAgaW4gdGhlIGRpcmVjdG9yeSBuYW1lLgorCistIElzc3VlICMxMDI3ODogQWRkIHRpbWUud2FsbGNsb2NrKCkgZnVuY3Rpb24sIG1vbm90b25pYyBjbG9jay4KKworLSBJc3N1ZSAjMTM4MDk6IEZpeCByZWdyZXNzaW9uIHdoZXJlIGJ6MiBtb2R1bGUgd291bGRuJ3Qgd29yayB3aGVuIHRocmVhZHMgYXJlCisgIGRpc2FibGVkLiBPcmlnaW5hbCBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KKworLSBJc3N1ZSAjMTM1ODk6IEZpeCBzb21lIHNlcmlhbGl6YXRpb24gcHJpbWl0aXZlcyBpbiB0aGUgYWlmYyBtb2R1bGUuCisgIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCisKKy0gSXNzdWUgIzEzNjQyOiBVbnF1b3RlIGJlZm9yZSBiNjRlbmNvZGluZyB1c2VyOnBhc3N3b3JkIGR1cmluZyBCYXNpYworICBBdXRoZW50aWNhdGlvbi4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSm9vbmFzIEt1b3JpbGVodG8uCisKKy0gSXNzdWUgIzEzNzI2OiBGaXggdGhlIGFtYmlndW91cyAtUyBmbGFnIGluIHJlZ3J0ZXN0LiBJdCBpcyAtby8tLXNsb3cgZm9yIHNsb3cKKyAgdGVzdHMuCisKKy0gSXNzdWUgIzEyMzY0OiBGaXggYSBoYW5nIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgorICBUaGUgaGFuZyB3b3VsZCBvY2N1ciB3aGVuIHJldHJpZXZpbmcgdGhlIHJlc3VsdCBvZiBhIHNjaGVkdWxlZCBmdXR1cmUgYWZ0ZXIKKyAgdGhlIGV4ZWN1dG9yIGhhZCBiZWVuIHNodXQgZG93bi4KKworLSBJc3N1ZSAjMTM1MDI6IHRocmVhZGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gRXZlbnQud2FpdCgpIHRoYXQgbWFkZSBpdAorICByZXR1cm4gRmFsc2Ugd2hlbiB0aGUgZXZlbnQgd2FzIHNldCBhbmQgY2xlYXJlZCByaWdodCBhZnRlci4KKworLSBJc3N1ZSAjOTk5MzogV2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW1zLAorICBhbmQgdGhlIHNvdXJjZSBpcyBhIHN5bWxpbmssIHNodXRpbC5tb3ZlKCkgbm93IHJlY3JlYXRlcyBhIHN5bWxpbmsgb24gdGhlCisgIGRlc3RpbmF0aW9uIGluc3RlYWQgb2YgY29weWluZyB0aGUgZmlsZSBjb250ZW50cy4gIFBhdGNoIGJ5IEpvbmF0aGFuIE5pZWhvZgorICBhbmQgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxMjkyNjogRml4IGEgYnVnIGluIHRhcmZpbGUncyBsaW5rIGV4dHJhY3Rpb24uCisKKy0gSXNzdWUgIzEzNjk2OiBGaXggdGhlIDMwMiBSZWxhdGl2ZSBVUkwgUmVkaXJlY3Rpb24gcHJvYmxlbS4KKworLSBJc3N1ZSAjMTM2MzY6IFdlYWsgY2lwaGVycyBhcmUgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIHNzbCBtb2R1bGUKKyAgKGV4Y2VwdCB3aGVuIFNTTHYyIGlzIGV4cGxpY2l0bHkgYXNrZWQgZm9yKS4KKworLSBJc3N1ZSAjMTI3MTU6IEFkZCBhbiBvcHRpb25hbCBzeW1saW5rcyBhcmd1bWVudCB0byBzaHV0aWwgZnVuY3Rpb25zCisgIChjb3B5ZmlsZSwgY29weW1vZGUsIGNvcHlzdGF0LCBjb3B5LCBjb3B5MikuICBXaGVuIHRoYXQgcGFyYW1ldGVyIGlzCisgIHRydWUsIHN5bWxpbmtzIGFyZW4ndCBkZXJlZmVyZW5jZWQgYW5kIHRoZSBvcGVyYXRpb24gaW5zdGVhZCBhY3RzIG9uIHRoZQorICBzeW1saW5rIGl0c2VsZiAob3IgY3JlYXRlcyBvbmUsIGlmIHJlbGV2YW50KS4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKworLSBBZGQgYSBmbGFncyBwYXJhbWV0ZXIgdG8gc2VsZWN0LmVwb2xsLgorCistIElzc3VlICMxMzYyNjogQWRkIHN1cHBvcnQgZm9yIFNTTCBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlCisgIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBtZXRob2QgYW5kIHRoZSBzc2wuT1BfU0lOR0xFX0RIX1VTRSBvcHRpb24uCisKKy0gSXNzdWUgIzExMDA2OiBEb24ndCBpc3N1ZSBsb3cgbGV2ZWwgd2FybmluZyBpbiBzdWJwcm9jZXNzIHdoZW4gcGlwZTIoKSBmYWlscy4KKworLSBJc3N1ZSAjMTM2MjA6IFN1cHBvcnQgZm9yIENocm9tZSBicm93c2VyIGluIHdlYmJyb3dzZXIuICBQYXRjaCBjb250cmlidXRlZAorICBieSBBcm5hdWQgQ2FsbWV0dGVzLgorCistIElzc3VlICMxMTgyOTogRml4IGNvZGUgZXhlY3V0aW9uIGhvbGVzIGluIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yCisgIG1ldGFjbGFzc2VzIHdpdGggbWV0YWNsYXNzZXMuIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjMTI3MDg6IEFkZCBzdGFybWFwKCkgYW5kIHN0YXJtYXBfYXN5bmMoKSBtZXRob2RzIChzaW1pbGFyIHRvCisgIGl0ZXJ0b29scy5zdGFybWFwKCkpIHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxNzg1OiBGaXggaW5zcGVjdCBhbmQgcHlkb2Mgd2l0aCBtaXNiZWhhdmluZyBkZXNjcmlwdG9ycy4KKworLSBJc3N1ZSAjMTM2Mzc6ICJhMmIiIGZ1bmN0aW9ucyBpbiB0aGUgYmluYXNjaWkgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQorICB1bmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzNjM0OiBBZGQgc3VwcG9ydCBmb3IgcXVlcnlpbmcgYW5kIGRpc2FibGluZyBTU0wgY29tcHJlc3Npb24uCisKKy0gSXNzdWUgIzEzNjI3OiBBZGQgc3VwcG9ydCBmb3IgU1NMIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuCisgIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUgU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZSgpIG1ldGhvZCBhbmQgdGhlCisgIHNzbC5PUF9TSU5HTEVfRUNESF9VU0Ugb3B0aW9uLgorCistIElzc3VlICMxMzYzNTogQWRkIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIHNvIHRoYXQgU1NMIHNlcnZlcnMKKyAgY2hvb3NlIHRoZSBjaXBoZXIgYmFzZWQgb24gdGhlaXIgb3duIHByZWZlcmVuY2VzLCByYXRoZXIgdGhhbiBvbiB0aGUKKyAgY2xpZW50J3MuCisKKy0gSXNzdWUgIzExODEzOiBGaXggaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IgbW9kdWxlcy4gUGF0Y2ggYnkgQW5kcmVhcworICBTdMO8aHJrLgorCistIElzc3VlICM3NTAyOiBGaXggZXF1YWxpdHkgY29tcGFyaXNvbiBmb3IgRG9jVGVzdENhc2UgaW5zdGFuY2VzLiAgUGF0Y2ggYnkKKyAgQ8OpZHJpYyBLcmllci4KKworLSBJc3N1ZSAjMTE4NzA6IHRocmVhZGluZzogUHJvcGVybHkgcmVpbml0aWFsaXplIHRocmVhZHMgaW50ZXJuYWwgbG9ja3MgYW5kCisgIGNvbmRpdGlvbiB2YXJpYWJsZXMgdG8gYXZvaWQgZGVhZGxvY2tzIGluIGNoaWxkIHByb2Nlc3Nlcy4KKworLSBJc3N1ZSAjODAzNTogdXJsbGliOiBGaXggYSBidWcgd2hlcmUgdGhlIGNsaWVudCBjb3VsZCByZW1haW4gc3R1Y2sgYWZ0ZXIgYQorICByZWRpcmVjdGlvbiBvciBhbiBlcnJvci4KKworLSBJc3N1ZSAjMTM1NjA6IG9zLnN0cmVycm9yKCkgbm93IHVzZXMgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YKKyAgVVRGLTguCisKKy0gSXNzdWUgIzgzNzM6IFRoZSBmaWxlc3lzdGVtIHBhdGggb2YgQUZfVU5JWCBzb2NrZXRzIG5vdyB1c2VzIHRoZSBmaWxlc3lzdGVtCisgIGVuY29kaW5nIGFuZCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsIHJhdGhlciB0aGFuIFVURi04LiAgUGF0Y2gKKyAgYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICMxMDM1MDogUmVhZCBhbmQgc2F2ZSBlcnJubyBiZWZvcmUgY2FsbGluZyBhIGZ1bmN0aW9uIHdoaWNoIG1pZ2h0CisgIG92ZXJ3cml0ZSBpdC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKKy0gSXNzdWUgIzExNjEwOiBJbnRyb2R1Y2UgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGRlY2xhcmUgYWJzdHJhY3QgcHJvcGVydGllcy4KKworLSBJc3N1ZSAjMTM1OTE6IEEgYnVnIGluIGltcG9ydGxpYiBoYXMgYmVlbiBmaXhlZCB0aGF0IGNhdXNlZCBpbXBvcnRfbW9kdWxlCisgIHRvIGxvYWQgYSBtb2R1bGUgdHdpY2UuCisKKy0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAorICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQorICBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTM0NDkgc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG1ldGhvZCBoYXMgYSBuZXcgImJsb2NraW5nIiBwYXJhbWV0ZXIgd2hpY2gKKyAgd2hlbiBzZXQgdG8gRmFsc2UgbWFrZXMgcnVuKCkgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCisgIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sw6AuCisKKy0gSXNzdWUgIzg2ODQgc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZAorICBlbnZpcm9ubWVudHMuICBQYXRjaCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AuCisKKy0gQWxpYXMgcmVzb3VyY2UuZXJyb3IgdG8gT1NFcnJvciBhbGEgUEVQIDMxNTEuCisKKy0gSXNzdWUgIzU2ODk6IEFkZCBzdXBwb3J0IGZvciBsem1hIGNvbXByZXNzaW9uIHRvIHRoZSB0YXJmaWxlIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyNDg6IFR1cm4gMy4yJ3MgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpbnRvIDMuMydzCisgIERlcHJlY2F0aW9uV2FybmluZy4gIEl0IGNvdmVycyAnY2dpLmVzY2FwZScsICdpbXBvcnRsaWIuYWJjLlB5TG9hZGVyJywKKyAgJ2ltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXInLCAnbm50cGxpYi5OTlRQLnhndGl0bGUnLCAnbm50cGxpYi5OTlRQLnhwYXRoJywKKyAgYW5kIHByaXZhdGUgYXR0cmlidXRlcyBvZiAnc210cGQuU01UUENoYW5uZWwnLgorCistIElzc3VlICM1OTA1LCAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCisgIGVuY29kaW5nLCBpbnN0ZWFkIG9mIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgorCistIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KKyAgUGF0Y2ggYnkgVGFsIEVpbmF0LgorCistIElzc3VlICMxMzQ2NDogQWRkIGEgcmVhZGludG8oKSBtZXRob2QgdG8gaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLiAgUGF0Y2gKKyAgYnkgSm9uIEt1aG4uCisKKy0gdGFyZmlsZS5weTogQ29ycmVjdGx5IGRldGVjdCBiemlwMiBjb21wcmVzc2VkIHN0cmVhbXMgd2l0aCBibG9ja3NpemVzCisgIG90aGVyIHRoYW4gOTAway4KKworLSBJc3N1ZSAjMTM0Mzk6IEZpeCBtYW55IGVycm9ycyBpbiB0dXJ0bGUgZG9jc3RyaW5ncy4KKworLSBJc3N1ZSAjNjcxNTogQWRkIGEgbW9kdWxlICdsem1hJyBmb3IgY29tcHJlc3Npb24gdXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLgorICBUaGFua3MgdG8gUGVyIMOYeXZpbmQgS2FybHNlbiBmb3IgdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzEzNDg3OiBNYWtlIGluc3BlY3QuZ2V0bW9kdWxlIHJvYnVzdCBhZ2FpbnN0IGNoYW5nZXMgZG9uZSB0bworICBzeXMubW9kdWxlcyB3aGlsZSBpdCBpcyBpdGVyYXRpbmcgb3ZlciBpdC4KKworLSBJc3N1ZSAjMTI2MTg6IEZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBweV9jb21waWxlIGZyb20gY3JlYXRpbmcgYnl0ZQorICBjb21waWxlZCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJbml0aWFsIHBhdGNoIGJ5IFNqb2VyZCBkZSBWcmllcy4KKworLSBJc3N1ZSAjMTM0NDQ6IFdoZW4gc3Rkb3V0IGhhcyBiZWVuIGNsb3NlZCBleHBsaWNpdGx5LCB3ZSBzaG91bGQgbm90IGF0dGVtcHQKKyAgdG8gZmx1c2ggaXQgYXQgc2h1dGRvd24gYW5kIHByaW50IGFuIGVycm9yLgorCistIElzc3VlICMxMjU2NzogVGhlIGN1cnNlcyBtb2R1bGUgdXNlcyBVbmljb2RlIGZ1bmN0aW9ucyBmb3IgVW5pY29kZSBhcmd1bWVudHMKKyAgd2hlbiBpdCBpcyBsaW5rZWQgdG8gdGhlIG5jdXJzZXMgbGlicmFyeS4gSXQgZW5jb2RlcyBhbHNvIFVuaWNvZGUgc3RyaW5ncyB0bworICB0aGUgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTguCisKKy0gSXNzdWUgIzEyODU2OiBFbnN1cmUgY2hpbGQgcHJvY2Vzc2VzIGRvIG5vdCBpbmhlcml0IHRoZSBwYXJlbnQncyByYW5kb20KKyAgc2VlZCBmb3IgZmlsZW5hbWUgZ2VuZXJhdGlvbiBpbiB0aGUgdGVtcGZpbGUgbW9kdWxlLiAgUGF0Y2ggYnkgQnJpYW4KKyAgSGFycmluZy4KKworLSBJc3N1ZSAjOTk1NzogU3Bvb2xlZFRlbXBvcmFyeUZpbGUudHJ1bmNhdGUoKSBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzaXplCisgIHBhcmFtZXRlciwgYXMgb3RoZXIgZmlsZS1saWtlIG9iamVjdHMuICBQYXRjaCBieSBSeWFuIEtlbGx5LgorCistIElzc3VlICMxMzQ1ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gdGhlIHNzbCBtb2R1bGUgd2hlbiBkZWNvZGluZyBhCisgIGNlcnRpZmljYXRlIHdpdGggYSBzdWJqZWN0QWx0TmFtZS4gIFBhdGNoIGJ5IFJvYmVydCBYaWFvLgorCistIElzc3VlICMxMzQxNTogb3MudW5zZXRlbnYoKSBkb2Vzbid0IGlnbm9yZSBlcnJvcnMgYW55bW9yZS4KKworLSBJc3N1ZSAjMTMyNDU6IHNjaGVkLnNjaGVkdWxlciBjbGFzcyBjb25zdHJ1Y3RvcidzIHRpbWVmdW5jIGFuZAorICBkZWxheWZ1bmN0IHBhcmFtZXRlcnMgYXJlIG5vdyBvcHRpb25hbC4KKyAgc2NoZWR1bGVyLmVudGVyIGFuZCBzY2hlZHVsZXIuZW50ZXJhYnMgbWV0aG9kcyBnYWluZWQgYSBuZXcga3dhcmdzIHBhcmFtZXRlci4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsuCisKKy0gSXNzdWUgIzEyMzI4OiBVbmRlciBXaW5kb3dzLCByZWZhY3RvciBoYW5kbGluZyBvZiBDdHJsLUMgZXZlbnRzIGFuZAorICBtYWtlIF9tdWx0aXByb2Nlc3Npbmcud2luMzIuV2FpdEZvck11bHRpcGxlT2JqZWN0cyBpbnRlcnJ1cHRpYmxlIHdoZW4KKyAgdGhlIHdhaXRfZmxhZyBwYXJhbWV0ZXIgaXMgZmFsc2UuICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzEzMzIyOiBGaXggQnVmZmVyZWRXcml0ZXIud3JpdGUoKSB0byBlbnN1cmUgdGhhdCBCbG9ja2luZ0lPRXJyb3IgaXMKKyAgcmFpc2VkIHdoZW4gdGhlIHdyYXBwZWQgcmF3IGZpbGUgaXMgbm9uLWJsb2NraW5nIGFuZCB0aGUgd3JpdGUgd291bGQgYmxvY2suCisgIFByZXZpb3VzIGNvZGUgYXNzdW1lZCB0aGF0IHRoZSByYXcgd3JpdGUoKSB3b3VsZCByYWlzZSBCbG9ja2luZ0lPRXJyb3IsIGJ1dAorICBSYXdJT0Jhc2Uud3JpdGUoKSBpcyBkZWZpbmVkIHRvIHJldHVybmVkIE5vbmUgd2hlbiB0aGUgY2FsbCB3b3VsZCBibG9jay4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxMzM1ODogSFRNTFBhcnNlciBub3cgY2FsbHMgaGFuZGxlX2RhdGEgb25seSBvbmNlIGZvciBlYWNoIENEQVRBLgorCistIElzc3VlICM0MTQ3OiBtaW5pZG9tJ3MgdG9wcmV0dHl4bWwgbm8gbG9uZ2VyIGFkZHMgd2hpdGVzcGFjZSBhcm91bmQgYSB0ZXh0CisgIG5vZGUgd2hlbiBpdCBpcyB0aGUgb25seSBjaGlsZCBvZiBhbiBlbGVtZW50LiAgSW5pdGlhbCBwYXRjaCBieSBEYW4KKyAgS2VuaWdzYmVyZy4KKworLSBJc3N1ZSAjMTMzNzQ6IFRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHRoZSBvcyBtb2R1bGUuIFVzZQorICBVbmljb2RlIGZpbGVuYW1lcyBpbnN0ZWFkIG9mIGJ5dGVzIGZpbGVuYW1lcyB0byBub3QgZGVwZW5kIG9uIHRoZSBBTlNJIGNvZGUKKyAgcGFnZSBhbnltb3JlIGFuZCB0byBzdXBwb3J0IGFueSBmaWxlbmFtZS4KKworLSBJc3N1ZSAjMTMyOTc6IFVzZSBieXRlcyB0eXBlIHRvIHNlbmQgYW5kIHJlY2VpdmUgYmluYXJ5IGRhdGEgdGhyb3VnaCBYTUxSUEMuCisKKy0gSXNzdWUgIzYzOTc6IFN1cHBvcnQgIi9kZXYvcG9sbCIgcG9sbGluZyBvYmplY3RzIGluIHNlbGVjdCBtb2R1bGUsCisgIHVuZGVyIFNvbGFyaXMgJiBkZXJpdmF0aXZlcy4KKworLSBJc3N1ZXMgIzE3NDU3NjEsICM3NTU2NzAsICMxMzM1NywgIzEyNjI5LCAjMTIwMDMxMzogSFRNTFBhcnNlciBub3cgY29ycmVjdGx5CisgIGhhbmRsZXMgbm9uLXZhbGlkIGF0dHJpYnV0ZXMsIGluY2x1ZGluZyBhZGphY2VudCBhbmQgdW5xdW90ZWQgYXR0cmlidXRlcy4KKworLSBJc3N1ZSAjMTMxOTM6IEZpeCBkaXN0dXRpbHMuZmlsZWxpc3QuRmlsZUxpc3QgYW5kIHBhY2thZ2luZy5tYW5pZmVzdC5NYW5pZmVzdAorICB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxMzM4NDogUmVtb3ZlIHVubmVjZXNzYXJ5IF9fZnV0dXJlX18gaW1wb3J0IGluIExpYi9yYW5kb20ucHkKKworLSBJc3N1ZSAjMTMxNDk6IFNwZWVkIHVwIGFwcGVuZC1vbmx5IFN0cmluZ0lPIG9iamVjdHMuCisKKy0gSXNzdWUgIzEzMzczOiBtdWx0aXByb2Nlc3NpbmcuUXVldWUuZ2V0KCkgY291bGQgc29tZXRpbWVzIGJsb2NrIGluZGVmaW5pdGVseQorICB3aGVuIGNhbGxlZCB3aXRoIGEgdGltZW91dC4gIFBhdGNoIGJ5IEFybmF1ZCBZc21hbC4KKworLSBJc3N1ZSAjMTMyNTQ6IEZpeCBNYWlsZGlyIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgbWFpbGRpciBjb250ZW50cworICBhcmUgcmVhZCBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzMwNjc6IGxvY2FsZS5zZXRsb2NhbGUoKSBub3cgcmFpc2VzIFR5cGVFcnJvciBpZiB0aGUgc2Vjb25kCisgIGFyZ3VtZW50IGlzIGFuIGludmFsaWQgaXRlcmFibGUuIEl0cyBkb2N1bWVudGF0aW9uIGFuZCBkb2NzdHJpbmcKKyAgd2VyZSBhbHNvIHVwZGF0ZWQuIEluaXRpYWwgcGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KKworLSBJc3N1ZSAjMTMxNDA6IEZpeCB0aGUgZGFlbW9uX3RocmVhZHMgYXR0cmlidXRlIG9mIFRocmVhZGluZ01peEluLgorCistIElzc3VlICMxMzMzOTogRml4IGNvbXBpbGUgZXJyb3IgaW4gcG9zaXhtb2R1bGUuYyBkdWUgdG8gbWlzc2luZyBzZW1pY29sb24uCisgIFRoYW5rcyB0byBSb2JlcnQgWGlhby4KKworLSBCeXRlIGNvbXBpbGF0aW9uIGluIHBhY2thZ2luZyBpcyBub3cgaXNvbGF0ZWQgZnJvbSB0aGUgY2FsbGluZyBQeXRob24gLUIgb3IKKyAgLU8gb3B0aW9ucywgaW5zdGVhZCBvZiBiZWluZyBkaXNhbGxvd2VkIHVuZGVyIC1CIG9yIGJ1Z2d5IHVuZGVyIC1PLgorCistIElzc3VlICMxMDU3MDogY3Vyc2VzLnB1dHAoKSBhbmQgY3Vyc2VzLnRwYXJtKCkgYXJlIG5vdyBleHBlY3RpbmcgYSBieXRlCisgIHN0cmluZywgaW5zdGVhZCBvZiBhIFVuaWNvZGUgc3RyaW5nLgorCistIElzc3VlICMxMzI5NTogaHR0cC5zZXJ2ZXIgbm93IHByb2R1Y2VzIHZhbGlkIEhUTUwgNC4wMSBzdHJpY3QuCisKKy0gSXNzdWUgIzI4OTI6IHByZXNlcnZlIGl0ZXJwYXJzZSBldmVudHMgaW4gY2FzZSBvZiBTeW50YXhFcnJvci4KKworLSBJc3N1ZSAjMTMyODc6IHVybGxpYi5yZXF1ZXN0IGFuZCB1cmxsaWIuZXJyb3Igbm93IGNvbnRhaW5zIGFuIF9fYWxsX18KKyAgYXR0cmlidXRlIHRvIGV4cG9zZSBvbmx5IHJlbGV2YW50IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4gIFBhdGNoIGJ5IEZsb3JlbnQKKyAgWGljbHVuYS4KKworLSBJc3N1ZSAjNjcwNjY0OiBGaXggSFRNTFBhcnNlciB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBjb250ZW50IG9mCisgIGBgPHNjcmlwdD4uLi48L3NjcmlwdD5gYCBhbmQgYGA8c3R5bGU+Li4uPC9zdHlsZT5gYC4KKworLSBJc3N1ZSAjMTA4MTc6IEZpeCB1cmxyZXRyaWV2ZSBmdW5jdGlvbiB0byByYWlzZSBDb250ZW50VG9vU2hvcnRFcnJvciBldmVuCisgIHdoZW4gcmVwb3J0aG9vayBpcyBOb25lLiBQYXRjaCBieSBKeXJraSBQdWxsaWFpbmVuLgorCistIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCisgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBGaXggdGhlIHhtbHJwYy5jbGllbnQgdXNlciBhZ2VudCB0byByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgdG8KKyAgdXJsbGliLnJlcXVlc3QgdXNlciBhZ2VudDogIlB5dGhvbi14bWxycGMvMy4zIi4KKworLSBJc3N1ZSAjMTMyOTM6IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIG1hcnNoYWwgYnl0ZXMgdXNpbmcKKyAgeG1scnBjLmNsaWVudC4KKworLSBJc3N1ZSAjMTMyOTE6IE5hbWVFcnJvciBpbiB4bWxycGMgcGFja2FnZS4KKworLSBJc3N1ZSAjMTMyNTg6IFVzZSBjYWxsYWJsZSgpIGJ1aWx0LWluIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgorCistIElzc3VlICMxMzI3MzogZml4IGEgYnVnIHRoYXQgcHJldmVudGVkIEhUTUxQYXJzZXIgdG8gcHJvcGVybHkgZGV0ZWN0IHNvbWUKKyAgdGFncyB3aGVuIHN0cmljdD1GYWxzZS4KKworLSBJc3N1ZSAjMTExODM6IEFkZCBmaW5lci1ncmFpbmVkIGV4Y2VwdGlvbnMgdG8gdGhlIHNzbCBtb2R1bGUsIHNvIHRoYXQKKyAgeW91IGRvbid0IGhhdmUgdG8gaW5zcGVjdCB0aGUgZXhjZXB0aW9uJ3MgYXR0cmlidXRlcyBpbiB0aGUgY29tbW9uIGNhc2UuCisKKy0gSXNzdWUgIzEzMjE2OiBBZGQgY3A2NTAwMSBjb2RlYywgdGhlIFdpbmRvd3MgVVRGLTggKENQX1VURjgpLgorCistIElzc3VlICMxMzIyNjogQWRkIFJUTERfeHh4IGNvbnN0YW50cyB0byB0aGUgb3MgbW9kdWxlLiBUaGVzZSBjb25zdGFudHMgY2FuIGJlCisgIHVzZWQgd2l0aCBzeXMuc2V0ZGxvcGVuZmxhZ3MoKS4KKworLSBJc3N1ZSAjMTAyNzg6IEFkZCBjbG9ja19nZXRyZXMoKSwgY2xvY2tfZ2V0dGltZSgpIGFuZCBDTE9DS194eHggY29uc3RhbnRzIHRvCisgIHRoZSB0aW1lIG1vZHVsZS4gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKSBwcm92aWRlcyBhCisgIG1vbm90b25pYyBjbG9jaworCistIElzc3VlICMxMDMzMjogbXVsdGlwcm9jZXNzaW5nOiBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIGEgUG9vbCBpcyBjbG9zZWQKKyAgYmVmb3JlIGFsbCB0YXNrcyBoYXZlIGNvbXBsZXRlZC4KKworLSBJc3N1ZSAjMTMyNTU6IHdyb25nIGRvY3N0cmluZ3MgaW4gYXJyYXkgbW9kdWxlLgorCistIElzc3VlICM4NTQwOiBSZW1vdmUgZGVwcmVjYXRlZCBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgaW4gRGVjaW1hbCBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM1OiBBZGRlZCBEZXByZWNhdGlvbldhcm5pbmcgdG8gbG9nZ2luZy53YXJuKCkgbWV0aG9kIGFuZCBmdW5jdGlvbi4KKworLSBJc3N1ZSAjOTE2ODogbm93IHNtdHBkIGlzIGFibGUgdG8gYmluZCBwcml2aWxlZ2VkIHBvcnQuCisKKy0gSXNzdWUgIzEyNTI5OiBmaXggY2dpLnBhcnNlX2hlYWRlciBpc3N1ZSBvbiBzdHJpbmdzIHdpdGggZG91YmxlLXF1b3RlcyBhbmQKKyAgc2VtaWNvbG9ucyB0b2dldGhlci4gUGF0Y2ggYnkgQmVuIERhcm5lbGwgYW5kIFBldHJpIExlaHRpbmVuLgorCistIElzc3VlICMxMzIyNzogZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBoYXMgYSBvcHRpb24gdG8gZGlzdGluZ3Vpc2gKKyAgY2FsbHMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMuCisKKy0gSXNzdWUgIzYwOTA6IHppcGZpbGUgcmFpc2VzIGEgVmFsdWVFcnJvciB3aGVuIGEgZG9jdW1lbnQgd2l0aCBhIHRpbWVzdGFtcAorICBlYXJsaWVyIHRoYW4gMTk4MCBpcyBwcm92aWRlZC4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4uCisKKy0gSXNzdWUgIzEzMTUwOiBzeXNjb25maWcgbm8gbG9uZ2VyIHBhcnNlcyB0aGUgTWFrZWZpbGUgYW5kIGNvbmZpZy5oIGZpbGVzCisgIHdoZW4gaW1wb3J0ZWQsIGluc3RlYWQgZG9pbmcgaXQgYXQgYnVpbGQgdGltZS4gIFRoaXMgbWFrZXMgaW1wb3J0aW5nCisgIHN5c2NvbmZpZyBmYXN0ZXIgYW5kIHJlZHVjZXMgUHl0aG9uIHN0YXJ0dXAgdGltZSBieSAyMCUuCisKKy0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAorICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgorCistIElzc3VlICMxMjQ1NDogVGhlIG1haWxib3ggbW9kdWxlIGlzIG5vdyB1c2luZyBBU0NJSSwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlCisgIGVuY29kaW5nLCB0byByZWFkIGFuZCB3cml0ZSAubWhfc2VxdWVuY2VzIGZpbGVzLgorCistIElzc3VlICMxMzE5NDogemxpYi5jb21wcmVzc29iaigpLmNvcHkoKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkuY29weSgpIGFyZQorICBub3cgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE2NzMwMDc6IHVybGxpYi5yZXF1ZXN0IG5vdyBzdXBwb3J0cyBIRUFEIHJlcXVlc3QgdmlhIG5ldyBtZXRob2QgYXJndW1lbnQuCisgIFBhdGNoIGNvbnRyaWJ1dGlvbnMgYnkgRGF2aWQgU3RhbmVrLCBQYXRyaWNrIFdlc3RlcmhvZmYgYW5kIEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjMTIzODY6IHBhY2thZ2luZyBkb2VzIG5vdCBmYWlsIGFueW1vcmUgd2hlbiB3cml0aW5nIHRoZSBSRVNPVVJDRVMKKyAgZmlsZS4KKworLSBJc3N1ZSAjMTMxNTg6IEZpeCBkZWNvZGluZyBhbmQgZW5jb2Rpbmcgb2YgR05VIHRhciBzcGVjaWZpYyBiYXNlLTI1NiBudW1iZXIKKyAgZmllbGRzIGluIHRhcmZpbGUuCisKKy0gSXNzdWUgIzEzMDI1OiBtaW1ldHlwZXMgaXMgbm93IHJlYWRpbmcgTUlNRSB0eXBlcyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcsCisgIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KKworLSBJc3N1ZSAjMTA2NTM6IE9uIFdpbmRvd3MsIHVzZSBzdHJmdGltZSgpIGluc3RlYWQgb2Ygd2NzZnRpbWUoKSBiZWNhdXNlCisgIHdjc2Z0aW1lKCkgZG9lc24ndCBmb3JtYXQgdGltZSB6b25lIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTMxNTA6IFRoZSB0b2tlbml6ZSBtb2R1bGUgZG9lc24ndCBjb21waWxlIGxhcmdlIHJlZ3VsYXIgZXhwcmVzc2lvbnMKKyAgYXQgc3RhcnR1cCBhbnltb3JlLgorCistIElzc3VlICMxMTE3MTogRml4IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lIHdoZW4gUHl0aG9uIHdhcworICBjb25maWd1cmVkIHdpdGggZGlmZmVyZW50IHByZWZpeCBhbmQgZXhlYy1wcmVmaXguCisKKy0gSXNzdWUgIzExMjU0OiBUZWFjaCBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyB0byBjb21waWxlIC5weWMgYW5kIC5weW8gZmlsZXMgaW4KKyAgUEVQIDMxNDctY29tcGxpYW50IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM3MzY3OiBGaXggcGtndXRpbC53YWxrX3BhdGhzIHRvIHNraXAgZGlyZWN0b3JpZXMgd2hvc2UKKyAgY29udGVudHMgY2Fubm90IGJlIHJlYWQuCisKKy0gSXNzdWUgIzMxNjM6IFRoZSBzdHJ1Y3QgbW9kdWxlIGdldHMgbmV3IGZvcm1hdCBjaGFyYWN0ZXJzICduJyBhbmQgJ04nCisgIHN1cHBvcnRpbmcgQyBpbnRlZ2VyIHR5cGVzIGBgc3NpemVfdGBgIGFuZCBgYHNpemVfdGBgLCByZXNwZWN0aXZlbHkuCisKKy0gSXNzdWUgIzEzMDk5OiBGaXggc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkIHVuZGVyIGEgVHVya2lzaCBsb2NhbGUuCisgIFJlcG9ydGVkIGFuZCBkaWFnbm9zZWQgYnkgVGhvbWFzIEtsdXl2ZXIuCisKKy0gSXNzdWUgIzEzMDg3OiBCdWZmZXJlZFJlYWRlci5zZWVrKCkgbm93IGFsd2F5cyByYWlzZXMgVW5zdXBwb3J0ZWRPcGVyYXRpb24KKyAgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyB1bnNlZWthYmxlLCBldmVuIGlmIHRoZSBzZWVrIGNvdWxkIGJlCisgIHNhdGlzZmllZCB1c2luZyB0aGUgaW50ZXJuYWwgYnVmZmVyLiAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KKworLSBJc3N1ZSAjNzY4OTogQWxsb3cgcGlja2xpbmcgb2YgZHluYW1pY2FsbHkgY3JlYXRlZCBjbGFzc2VzIHdoZW4gdGhlaXIKKyAgbWV0YWNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCBjb3B5cmVnLiAgUGF0Y2ggYnkgTmljb2xhcyBNLiBUaGnDqXJ5IGFuZCBDcmFpZworICBDaXRyby4KKworLSBJc3N1ZSAjMTMwMzQ6IFdoZW4gZGVjb2Rpbmcgc29tZSBTU0wgY2VydGlmaWNhdGVzLCB0aGUgc3ViamVjdEFsdE5hbWUKKyAgZXh0ZW5zaW9uIGNvdWxkIGJlIHVucmVwb3J0ZWQuCisKKy0gSXNzdWUgIzk4NzE6IFByZXZlbnQgSURMRSAzIGNyYXNoIHdoZW4gZ2l2ZW4gYnl0ZSBzdGluZ3MKKyAgd2l0aCBpbnZhbGlkIGhleCBlc2NhcGUgc2VxdWVuY2VzLCBsaWtlIGInXHgwJy4KKyAgKE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4pCisKKy0gSXNzdWUgIzEyMzA2OiBFeHBvc2UgdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgemxpYiBDIGxpYnJhcnkgYXMgYSBjb25zdGFudCwKKyAgWkxJQl9SVU5USU1FX1ZFUlNJT04sIGluIHRoZSB6bGliIG1vZHVsZS4gUGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCistIElzc3VlICMxMjk1OTogQWRkIGNvbGxlY3Rpb25zLkNoYWluTWFwIHRvIGNvbGxlY3Rpb25zLl9fYWxsX18uCisKKy0gSXNzdWUgIzg5MzM6IGRpc3R1dGlscycgUEtHLUlORk8gZmlsZXMgYW5kIHBhY2thZ2luZydzIE1FVEFEQVRBIGZpbGVzIHdpbGwKKyAgbm93IGNvcnJlY3RseSByZXBvcnQgTWV0YWRhdGEtVmVyc2lvbjogMS4xIGluc3RlYWQgb2YgMS4wIGlmIGEgQ2xhc3NpZmllciBvcgorICBEb3dubG9hZC1VUkwgZmllbGQgaXMgcHJlc2VudC4KKworLSBJc3N1ZSAjMTI1Njc6IEFkZCBjdXJzZXMudW5nZXRfd2NoKCkgZnVuY3Rpb24uIFB1c2ggYSBjaGFyYWN0ZXIgc28gdGhlIG5leHQKKyAgZ2V0X3djaCgpIHdpbGwgcmV0dXJuIGl0LgorCistIElzc3VlICM5NTYxOiBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyBub3cgd3JpdGVzIGVnZy1pbmZvIGZpbGVzIHVzaW5nIFVURi04LAorICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzgyODY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZCBzZGlzdCB3aWxsIHByaW50IGEgd2FybmluZyBtZXNzYWdlIGluc3RlYWQKKyAgb2YgY3Jhc2hpbmcgd2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgorCistIElzc3VlICMxMjg0MTogdGFyZmlsZSB1bm5lY2Vzc2FyaWx5IGNoZWNrZWQgdGhlIGV4aXN0ZW5jZSBvZiBudW1lcmljYWwgdXNlcgorICBhbmQgZ3JvdXAgaWRzIG9uIGV4dHJhY3Rpb24uIElmIG9uZSBvZiB0aGVtIGRpZCBub3QgZXhpc3QgdGhlIHJlc3BlY3RpdmUgaWQKKyAgb2YgdGhlIGN1cnJlbnQgdXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcAorICBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KKworLSBJc3N1ZSAjMTI4ODg6IEZpeCBhIGJ1ZyBpbiBIVE1MUGFyc2VyLnVuZXNjYXBlIHRoYXQgcHJldmVudGVkIGl0IHRvIGVzY2FwZQorICBtb3JlIHRoYW4gMTI4IGVudGl0aWVzLiAgUGF0Y2ggYnkgUGV0ZXIgT3R0ZW4uCisKKy0gSXNzdWUgIzEyODc4OiBFeHBvc2UgYSBfX2RpY3RfXyBhdHRyaWJ1dGUgb24gaW8uSU9CYXNlIGFuZCBpdHMgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgorCistIElzc3VlICMxMjQ5NDogT24gZXJyb3IsIGNhbGwoKSwgY2hlY2tfY2FsbCgpLCBjaGVja19vdXRwdXQoKSBhbmQKKyAgZ2V0c3RhdHVzb3V0cHV0KCkgZnVuY3Rpb25zIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cga2lsbCB0aGUgcHJvY2VzcywKKyAgcmVhZCBpdHMgc3RhdHVzICh0byBhdm9pZCB6b21iaXMpIGFuZCBjbG9zZSBwaXBlcy4KKworLSBJc3N1ZSAjMTI3MjA6IEV4cG9zZSBsb3ctbGV2ZWwgTGludXggZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGUgZnVuY3Rpb25zIGluIG9zLgorCistIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKKyAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LiAgVGhlIHBhY2thZ2luZyBjb21tYW5kcworICB3ZXJlIGZpeGVkIHRvby4KKworLSBJc3N1ZSAjMTI4NDc6IEZpeCBhIGNyYXNoIHdpdGggbmVnYXRpdmUgUFVUIGFuZCBMT05HX0JJTlBVVCBhcmd1bWVudHMgaW4KKyAgdGhlIEMgcGlja2xlIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxMTU2NDogQXZvaWQgY3Jhc2hlcyB3aGVuIHRyeWluZyB0byBwaWNrbGUgaHVnZSBvYmplY3RzIG9yIGNvbnRhaW5lcnMKKyAgKG1vcmUgdGhhbiAyKiozMSBpdGVtcykuICBJbnN0ZWFkLCBpbiBtb3N0IGNhc2VzLCBhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZC4KKworLSBJc3N1ZSAjMTIyODc6IEZpeCBhIHN0YWNrIGNvcnJ1cHRpb24gaW4gb3NzYXVkaW9kZXYgbW9kdWxlIHdoZW4gdGhlIEZEIGlzCisgIGdyZWF0ZXIgdGhhbiBGRF9TRVRTSVpFLgorCistIElzc3VlICMxMjgzOTogRml4IGNyYXNoIGluIHpsaWIgbW9kdWxlIGR1ZSB0byB2ZXJzaW9uIG1pc21hdGNoLgorICBGaXggYnkgUmljaGFyZCBNLiBUZXcuCisKKy0gSXNzdWUgIzk5MjM6IFRoZSBtYWlsY2FwIG1vZHVsZSBub3cgY29ycmVjdGx5IHVzZXMgdGhlIHBsYXRmb3JtIHBhdGgKKyAgc2VwYXJhdG9yIGZvciB0aGUgTUFJTENBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvbiBub24tUE9TSVggcGxhdGZvcm1zLgorCistIElzc3VlICMxMjgzNTogRm9sbG93IHVwIHRvICM2NTYwIHRoYXQgdW5jb25kaXRpb25hbGx5IHByZXZlbnRzIHVzZSBvZiB0aGUKKyAgdW5lbmNyeXB0ZWQgc2VuZG1zZy9yZWN2bXNnIEFQSXMgb24gU1NMIHdyYXBwZWQgc29ja2V0cy4gUGF0Y2ggYnkgRGF2aWQKKyAgV2F0c29uLgorCistIElzc3VlICMxMjgwMzogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSBub3cgYWNjZXB0cyBhIHBhc3N3b3JkIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4gIFBhdGNoIGJ5IEFkYW0gU2ltcGtpbnMuCisKKy0gSXNzdWUgIzExNjU3OiBGaXggc2VuZGluZyBmaWxlIGRlc2NyaXB0b3JzIG92ZXIgMjU1IG92ZXIgYSBtdWx0aXByb2Nlc3NpbmcKKyAgUGlwZS4KKworLSBJc3N1ZSAjMTI4MTE6IHRhYm5hbm55LmNoZWNrKCkgbm93IHByb21wdGx5IGNsb3NlcyBjaGVja2VkIGZpbGVzLiBQYXRjaCBieQorICBBbnRob255IEJyaWdncy4KKworLSBJc3N1ZSAjNjU2MDogVGhlIHNlbmRtc2cvcmVjdm1zZyBBUEkgaXMgbm93IGV4cG9zZWQgYnkgdGhlIHNvY2tldCBtb2R1bGUKKyAgd2hlbiBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSwgc3VwcG9ydGluZyBwcm9jZXNzaW5nIG9mCisgIGFuY2lsbGFyeSBkYXRhIGluIHB1cmUgUHl0aG9uIGNvZGUuIFBhdGNoIGJ5IERhdmlkIFdhdHNvbiBhbmQgSGVpa28gV3VuZHJhbS4KKworLSBJc3N1ZSAjMTIzMjY6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCisgIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKKyAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uCisKKy0gSXNzdWUgIzEyMjEzOiBGaXggYSBidWZmZXJpbmcgYnVnIHdpdGggaW50ZXJsZWF2ZWQgcmVhZHMgYW5kIHdyaXRlcyB0aGF0CisgIGNvdWxkIGFwcGVhciBvbiBCdWZmZXJlZFJhbmRvbSBzdHJlYW1zLgorCistIElzc3VlICMxMjc3ODogUmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIEpTT04tZW5jb2RpbmcgYSBsYXJnZQorICBjb250YWluZXIgb2YgbWFueSBzbWFsbCBvYmplY3RzLgorCistIElzc3VlICMxMjY1MDogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYSBzdWJwcm9jZXNzLlBvcGVuIGNvdWxkIGxlYWsKKyAgcmVzb3VyY2VzIChGRC96b21iaWUpIHdoZW4ga2lsbGVkIGF0IHRoZSB3cm9uZyB0aW1lLgorCistIElzc3VlICMxMjc0NDogRml4IGluZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzIGJldHdlZW4gMioqMzEgYW5kCisgIDIqKjYzIG9uIHN5c3RlbXMgd2l0aCBhIDY0LWJpdCBDICJsb25nIi4KKworLSBJc3N1ZSAjMTI2NDY6IEFkZCBhbiAnZW9mJyBhdHRyaWJ1dGUgdG8gemxpYi5EZWNvbXByZXNzLCB0byBtYWtlIGl0IGVhc2llciB0bworICBkZXRlY3QgdHJ1bmNhdGVkIGlucHV0IHN0cmVhbXMuCisKKy0gSXNzdWUgIzExNTEzOiBGaXggZXhjZXB0aW9uIGhhbmRsaW5nIGBgdGFyZmlsZS5UYXJGaWxlLmd6b3BlbigpYGAgd2hlbgorICB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgorCistIElzc3VlICMxMjY4NzogRml4IGEgcG9zc2libGUgYnVmZmVyaW5nIGJ1ZyB3aGVuIHVucGlja2xpbmcgdGV4dCBtb2RlCisgIChwcm90b2NvbCAwLCBtb3N0bHkpIHBpY2tsZXMuCisKKy0gSXNzdWUgIzEwMDg3OiBGaXggdGhlIGh0bWwgb3V0cHV0IGZvcm1hdCBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlLgorCistIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcworICBpbiBvcy5raWxsKCkuCisKKy0gSXNzdWUgIzEzMTIxOiBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgorCistIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgorCistIElzc3VlICMxMjY4MzogdXJscGFyc2UgdXBkYXRlZCB0byBpbmNsdWRlIHN2biBhcyBzY2hlbWVzIHRoYXQgdXNlcyByZWxhdGl2ZQorICBwYXRocy4gKHN2biBmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCisKKy0gSXNzdWUgIzEyNjU1OiBFeHBvc2UgZnVuY3Rpb25zIGZyb20gc2NoZWQuaCBpbiB0aGUgb3MgbW9kdWxlOiBzY2hlZF95aWVsZCgpLAorICBzY2hlZF9zZXRzY2hlZHVsZXIoKSwgc2NoZWRfZ2V0c2NoZWR1bGVyKCksIHNjaGVkX3NldHBhcmFtKCksCisgIHNjaGVkX2dldF9taW5fcHJpb3JpdHkoKSwgc2NoZWRfZ2V0X21heF9wcmlvcml0eSgpLCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoKSwKKyAgc2NoZWRfZ2V0YWZmaW5pdHkoKSwgc2NoZWRfc2V0YWZmaW5pdHkoKS4KKworLSBBZGQgVGhyZWFkRXJyb3IgdG8gdGhyZWFkaW5nLl9fYWxsX18uCisKKy0gSXNzdWVzICMxMTEwNCwgIzg2ODg6IEZpeCB0aGUgYmVoYXZpb3Igb2YgZGlzdHV0aWxzJyBzZGlzdCBjb21tYW5kIHdpdGgKKyAgbWFudWFsbHktbWFpbnRhaW5lZCBNQU5JRkVTVCBmaWxlcy4KKworLSBJc3N1ZSAjMTEyODE6IHNtdHBsaWIuU1RNUCBnZXRzIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciwgd2hpY2ggYWRkcyB0aGUKKyAgYWJpbGl0eSB0byBiaW5kIHRvIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIG9uIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlCisgIGludGVyZmFjZXMuIFBhdGNoIGJ5IFBhdWxvIFNjYXJkaW5lLgorCistIElzc3VlICMxMjQ2NDogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5LmNsZWFudXAoKSBzaG91bGQgbm90IGZvbGxvdworICBzeW1saW5rczogZml4IGl0LiBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KKworLSBJc3N1ZSAjODg4NzogInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykKKyAgaW4gUHl0aG9uIGNvZGUpIG5vdyBmaW5kcyB0aGUgZG9jIG9mIHRoZSBtZXRob2QuCisKKy0gSXNzdWUgIzEwOTY4OiBSZW1vdmUgaW5kaXJlY3Rpb24gaW4gdGhyZWFkaW5nLiAgVGhlIHB1YmxpYyBuYW1lcyAoRXZlbnQsCisgIENvbmRpdGlvbiwgZXRjLikgdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIGhpZGRlbgorICBjbGFzc2VzIChfRXZlbnQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcworICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUKKyAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCisgIHVuZGVyc2NvcmVkIG5hbWVzIGxpa2UgbXVsdGlwcm9jZXNzaW5nIGRpZC4KKworLSBJc3N1ZSAjOTcyMzogQWRkIHNobGV4LnF1b3RlIGZ1bmN0aW9ucywgdG8gZXNjYXBlIGZpbGVuYW1lcyBhbmQgY29tbWFuZAorICBsaW5lcy4KKworLSBJc3N1ZSAjMTI2MDM6IEZpeCBweWRvYy5zeW5vcHNpcygpIG9uIGZpbGVzIHdpdGggbm9uLW5lZ2F0aXZlIHN0X210aW1lLgorCistIElzc3VlICMxMjUxNDogVXNlIHRyeS9maW5hbGx5IHRvIGFzc3VyZSB0aGUgdGltZWl0IG1vZHVsZSByZXN0b3JlcyBnYXJiYWdlCisgIGNvbGxlY3Rpb25zIHdoZW4gaXQgaXMgZG9uZS4KKworLSBJc3N1ZSAjMTI2MDc6IEluIHN1YnByb2Nlc3MsIGZpeCBpc3N1ZSB3aGVyZSBpZiBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVyciBpcworICBnaXZlbiBhcyBhIGxvdyBmZCwgaXQgZ2V0cyBvdmVyd3JpdHRlbi4KKworLSBJc3N1ZSAjMTI1OTA6IElETEUgZWRpdG9yIHdpbmRvdyBub3cgYWx3YXlzIGRpc3BsYXlzIHRoZSBmaXJzdCBsaW5lCisgIHdoZW4gb3BlbmluZyBhIGxvbmcgZmlsZS4gIFdpdGggVGsgOC41LCB0aGUgZmlyc3QgbGluZSB3YXMgaGlkZGVuLgorCistIElzc3VlICMxMjU3NjogRml4IHVybG9wZW4gYmVoYXZpb3Igb24gc2l0ZXMgd2hpY2ggZG8gbm90IHNlbmQgKG9yIG9iZnVzY2F0ZXMpCisgIENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyLgorCistIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKKyAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCistIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KKworLSBJc3N1ZSAjMTgxMzogRml4IGNvZGVjIGxvb2t1cCB1bmRlciBUdXJraXNoIGxvY2FsZXMuCisKKy0gSXNzdWUgIzEyNTkxOiBJbXByb3ZlIHN1cHBvcnQgb2YgInVuaXZlcnNhbCBuZXdsaW5lcyIgaW4gdGhlIHN1YnByb2Nlc3MKKyAgbW9kdWxlOiB0aGUgcGlwZWQgc3RyZWFtcyBjYW4gbm93IGJlIHByb3Blcmx5IHJlYWQgZnJvbSBvciB3cml0dGVuIHRvLgorCistIElzc3VlICMxMjU5MTogQWxsb3cgaW8uVGV4dElPV3JhcHBlciB0byB3b3JrIHdpdGggcmF3IElPIG9iamVjdHMgKHdpdGhvdXQKKyAgYSByZWFkMSgpIG1ldGhvZCksIGFuZCBhZGQgYSAqd3JpdGVfdGhyb3VnaCogcGFyYW1ldGVyIHRvIG1hbmRhdGUKKyAgdW5idWZmZXJlZCB3cml0ZXMuCisKKy0gSXNzdWUgIzEwODgzOiBGaXggc29ja2V0IGxlYWtzIGluIHVybGxpYi5yZXF1ZXN0IHdoZW4gdXNpbmcgRlRQLgorCistIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KKworLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgorCistIElzc3VlICMxMjU1MTogUHJvdmlkZSBhIGdldF9jaGFubmVsX2JpbmRpbmcoKSBtZXRob2Qgb24gU1NMIHNvY2tldHMgc28gYXMKKyAgdG8gZ2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciB0aGUgY3VycmVudCBTU0wgc2Vzc2lvbiAob25seSB0aGUKKyAgInRscy11bmlxdWUiIGNoYW5uZWwgYmluZGluZyBpcyBpbXBsZW1lbnRlZCkuICBUaGlzIGFsbG93cyB0aGUgaW1wbGVtZW50YXRpb24KKyAgb2YgY2VydGFpbiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHN1Y2ggYXMgU0NSQU0tU0hBLTEtUExVUy4gIFBhdGNoIGJ5CisgIEphY2VrIEtvbmllY3pueS4KKworLSBJc3N1ZSAjNjY1MTk0OiBlbWFpbC51dGlscyBub3cgaGFzIGZvcm1hdF9kYXRldGltZSBhbmQgcGFyc2VkYXRlX3RvX2RhdGV0aW1lCisgIGZ1bmN0aW9ucywgYWxsb3dpbmcgZm9yIHJvdW5kIHRyaXBwaW5nIG9mIFJGQzI4MjIgZm9ybWF0IGRhdGVzLgorCistIElzc3VlICMxMjU3MTogQWRkIGEgcGxhdC1saW51eDMgZGlyZWN0b3J5IG1pcnJvcmluZyB0aGUgcGxhdC1saW51eDIKKyAgZGlyZWN0b3J5LCBzbyB0aGF0ICJpbXBvcnQgRExGQ04iIGFuZCBvdGhlciBzaW1pbGFyIGltcG9ydHMgd29yayBvbgorICBMaW51eCAzLjAuCisKKy0gSXNzdWUgIzc0ODQ6IHNtdHBsaWIgbm8gbG9uZ2VyIHB1dHMgPD4gYXJvdW5kIGFkZHJlc3NlcyBpbiBWUkZZIGFuZCBFWFBOCisgIGNvbW1hbmRzOyB0aGV5IGFyZW4ndCByZXF1aXJlZCBhbmQgaW4gZmFjdCBwb3N0Zml4IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IGZvcm0uCisKKy0gSXNzdWUgIzEyMjczOiBSZW1vdmUgYXN0Ll9fdmVyc2lvbl9fLiBBU1QgY2hhbmdlcyBjYW4gYmUgYWNjb3VudGVkIGZvciBieQorICBjaGVja2luZyBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5fbWVyY3VyaWFsLgorCistIFNpbGVuY2Ugc3B1cmlvdXMgImJyb2tlbiBwaXBlIiB0cmFjZWJhY2tzIHdoZW4gc2h1dHRpbmcgZG93biBhCisgIFByb2Nlc3NQb29sRXhlY3V0b3IuCisKKy0gRml4IHBvdGVudGlhbCByZXNvdXJjZSBsZWFrcyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcgorICBieSBqb2luaW5nIGFsbCBxdWV1ZXMgYW5kIHByb2Nlc3NlcyB3aGVuIHNodXRkb3duKCkgaXMgY2FsbGVkLgorCistIElzc3VlICMxMTYwMzogRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzExMzIxOiBGaXggYSBjcmFzaCB3aXRoIG11bHRpcGxlIGltcG9ydHMgb2YgdGhlIF9waWNrbGUgbW9kdWxlIHdoZW4KKyAgZW1iZWRkaW5nIFB5dGhvbi4gIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjNjc1NTogQWRkIGdldF93Y2goKSBtZXRob2QgdG8gY3Vyc2VzLndpbmRvdyBjbGFzcy4gUGF0Y2ggYnkgScOxaWdvCisgIFNlcm5hLgorCistIEFkZCBjZ2kuY2xvc2Vsb2coKSBmdW5jdGlvbiB0byBjbG9zZSB0aGUgbG9nIGZpbGUuCisKKy0gSXNzdWUgIzEyNTAyOiBhc3luY29yZTogZml4IHBvbGxpbmcgbG9vcCB3aXRoIEFGX1VOSVggc29ja2V0cy4KKworLSBJc3N1ZSAjNDM3NjogY3R5cGVzIG5vdyBzdXBwb3J0cyBuZXN0ZWQgc3RydWN0dXJlcyBpbiBhIGVuZGlhbiBkaWZmZXJlbnQgdGhhbgorICB0aGUgcGFyZW50IHN0cnVjdHVyZS4gUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KKworLSBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlIF9DSFVOS19TSVpFIGF0dHJpYnV0ZSBvZiBhCisgIFRleHRJT1dyYXBwZXIgdG8gYSBodWdlIHZhbHVlLCBub3QgVHlwZUVycm9yLgorCistIElzc3VlICMxMjUwNDogQ2xvc2UgZmlsZSBoYW5kbGVzIGluIGEgdGltZWx5IG1hbm5lciBpbiBwYWNrYWdpbmcuZGF0YWJhc2UuCisgIFRoaXMgZml4ZXMgYSBidWcgd2l0aCB0aGUgcmVtb3ZlICh1bmluc3RhbGwpIGZlYXR1cmUgb24gV2luZG93cy4KKworLSBJc3N1ZXMgIzEyMTY5IGFuZCAjMTA1MTA6IEZhY3RvciBvdXQgY29kZSB1c2VkIGJ5IHZhcmlvdXMgcGFja2FnaW5nIGNvbW1hbmRzCisgIHRvIG1ha2UgSFRUUCBQT1NUIHJlcXVlc3RzLCBhbmQgbWFrZSBzdXJlIGl0IHVzZXMgQ1JMRi4KKworLSBJc3N1ZSAjMTIwMTY6IE11bHRpYnl0ZSBDSksgZGVjb2RlcnMgbm93IHJlc3luY2hyb25pemUgZmFzdGVyLiBUaGV5IG9ubHkKKyAgaWdub3JlIHRoZSBmaXJzdCBieXRlIG9mIGFuIGludmFsaWQgYnl0ZSBzZXF1ZW5jZS4gRm9yIGV4YW1wbGUsCisgIGInXHhmZlxuJy5kZWNvZGUoJ2diMjMxMicsICdyZXBsYWNlJykgZ2l2ZXMgJ1x1ZmZmZFxuJyBpbnN0ZWFkIG9mICdcdWZmZmQnLgorCistIElzc3VlICMxMjQ1OTogdGltZS5zbGVlcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHRoZSBzbGVlcCBsZW5ndGggaXMKKyAgbmVnYXRpdmUsIGluc3RlYWQgb2YgYW4gaW5maW5pdGUgc2xlZXAgb24gV2luZG93cyBvciByYWlzaW5nIGFuIElPRXJyb3Igb24KKyAgTGludXggZm9yIGV4YW1wbGUsIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIG9uIGFsbCBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzEyNDUxOiBweWRvYzogaHRtbF9nZXRmaWxlKCkgbm93IHVzZXMgdG9rZW5pemUub3BlbigpIHRvIHN1cHBvcnQKKyAgUHl0aG9uIHNjcmlwdHMgdXNpbmcgYSBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiBVVEYtOCAocmVhZCB0aGUgY29kaW5nIGNvb2tpZQorICBvZiB0aGUgc2NyaXB0KS4KKworLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKKyAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCisKKy0gSXNzdWUgIzEyNDY3OiB3YXJuaW5nczogZml4IGEgcmFjZSBjb25kaXRpb24gaWYgYSB3YXJuaW5nIGlzIGVtaXR0ZWQgYXQKKyAgc2h1dGRvd24sIGlmIGdsb2JhbHMoKVsnX19maWxlX18nXSBpcyBOb25lLgorCistIElzc3VlICMxMjQ1MTogcHlkb2M6IGltcG9ydGZpbGUoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCisgIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTI0NTE6IHJ1bnB5OiBydW5fcGF0aCgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKKyAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gc3VwcG9ydCBvdGhlciBlbmNvZGluZ3MKKyAgdGhhbiBVVEYtOCAoc2NyaXB0cyB1c2luZyB0aGUgY29kaW5nIGNvb2tpZSkuCisKKy0gSXNzdWUgIzEyNDUxOiB4bWwuZG9tLnB1bGxkb206IHBhcnNlKCkgbm93IG9wZW5zIGZpbGVzIGluIGJpbmFyeSBtb2RlIGluc3RlYWQKKyAgb2YgdGhlIHRleHQgbW9kZSAodXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZykgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgorCistIElzc3VlICMxMjE0NzogQWRqdXN0IHRoZSBuZXctaW4tMy4yIHNtdHBsaWIuc2VuZF9tZXNzYWdlIG1ldGhvZCBmb3IgYmV0dGVyCisgIGNvbmZvcm1hbmNlIHRvIHRoZSBSRkNzOiAgY29ycmVjdGx5IGhhbmRsZSBTZW5kZXIgYW5kIFJlc2VudC0gaGVhZGVycy4KKworLSBJc3N1ZSAjMTIzNTI6IEZpeCBhIGRlYWRsb2NrIGluIG11bHRpcHJvY2Vzc2luZy5IZWFwIHdoZW4gYSBibG9jayBpcyBmcmVlZCBieQorICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igd2hpbGUgdGhlIEhlYXAgbG9jayBpcyBoZWxkLgorCistIElzc3VlICMxMjQ2MjogdGltZS5zbGVlcCgpIG5vdyBpbW1lZGlhdGVseSBjYWxscyB0aGUgKFB5dGhvbikgc2lnbmFsIGhhbmRsZXIKKyAgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdhaXQgdW50aWwgdGhlIG5leHQKKyAgaW5zdHJ1Y3Rpb24uCisKKy0gSXNzdWUgIzEyNDQyOiBuZXcgc2h1dGlsLmRpc2tfdXNhZ2UgZnVuY3Rpb24sIHByb3ZpZGluZyB0b3RhbCwgdXNlZCBhbmQgZnJlZQorICBkaXNrIHNwYWNlIHN0YXRpc3RpY3MuCisKKy0gSXNzdWUgIzEyNDUxOiBUaGUgWEluY2x1ZGUgZGVmYXVsdCBsb2FkZXIgb2YgeG1sLmV0cmVlIG5vdyBkZWNvZGVzIGZpbGVzIGZyb20KKyAgVVRGLTggaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBJdCBub3cKKyAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlCisgIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZQorICBhbnltb3JlIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLAorICB0byByZWFkIHRoZSBQeXRob24gc2NyaXB0IGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgorCistIElzc3VlICMxMjQ1MTogZGlzdHV0aWxzIG5vdyBvcGVucyB0aGUgc2V0dXAgc2NyaXB0IGluIGJpbmFyeSBtb2RlIHRvIHJlYWQgdGhlCisgIGVuY29kaW5nIGNvb2tpZSwgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIFVURi04LgorCistIElzc3VlICM5NTE2OiBPbiBNYWMgT1MgWCwgY2hhbmdlIERpc3R1dGlscyB0byBubyBsb25nZXIgZ2xvYmFsbHkgYXR0ZW1wdCB0bworICBjaGVjayBvciBzZXQgdGhlIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlCisgIGludGVycHJldGVyIHByb2Nlc3MuICBUaGlzIGNvdWxkIGNhdXNlIGZhaWx1cmVzIGluIG5vbi1EaXN0dXRpbHMgc3VicHJvY2Vzc2VzCisgIGFuZCB3YXMgdW5yZWxpYWJsZSBzaW5jZSB0ZXN0cyBvciB1c2VyIHByb2dyYW1zIGNvdWxkIG1vZGlmeSB0aGUgaW50ZXJwcmV0ZXIKKyAgZW52aXJvbm1lbnQgYWZ0ZXIgRGlzdHV0aWxzIHNldCBpdC4gIEluc3RlYWQsIGhhdmUgRGlzdHV0aWxzIHNldCB0aGUKKyAgZGVwbG95bWVudCB0YXJnZXQgb25seSBpbiB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBidWlsZCBzdWJwcm9jZXNzLiAgSXQgaXMKKyAgc3RpbGwgcG9zc2libGUgdG8gZ2xvYmFsbHkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnkgc2V0dGluZworICBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgYmVmb3JlIGxhdW5jaGluZyB0aGUgaW50ZXJwcmV0ZXI7IGl0cyB2YWx1ZSBtdXN0IGJlCisgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIHRoZSB2YWx1ZSB3aXRoIHdoaWNoIHRoZSBpbnRlcnByZXRlcgorICB3YXMgYnVpbHQuICBBbHNvLCBpbXBsZW1lbnQgdGhlIHNhbWUgaGFuZGxpbmcgaW4gcGFja2FnaW5nLgorCistIElzc3VlICMxMjQyMjogSW4gdGhlIGNvcHkgbW9kdWxlLCBkb24ndCBzdG9yZSBvYmplY3RzIHRoYXQgYXJlIHRoZWlyIG93biBjb3B5CisgIGluIHRoZSBtZW1vIGRpY3QuCisKKy0gSXNzdWUgIzEyMzAzOiBBZGQgc2lnd2FpdGluZm8oKSBhbmQgc2lndGltZWR3YWl0KCkgdG8gdGhlIHNpZ25hbCBtb2R1bGUuCisKKy0gSXNzdWUgIzEyNDA0OiBSZW1vdmUgQzg5IGluY29tcGF0aWJsZSBjb2RlIGZyb20gbW1hcCBtb2R1bGUuIFBhdGNoIGJ5IEFraXJhCisgIEtpdGFkYS4KKworLSBJc3N1ZSAjMTg3NDogZW1haWwgbm93IGRldGVjdHMgYW5kIHJlcG9ydHMgYXMgYSBkZWZlY3QgdGhlIHByZXNlbmNlIG9mCisgIGFueSBDVEUgb3RoZXIgdGhhbiA3Yml0LCA4Yml0LCBvciBiaW5hcnkgb24gYSBtdWx0aXBhcnQuCisKKy0gSXNzdWUgIzEyMzgzOiBGaXggc3VicHJvY2VzcyBtb2R1bGUgd2l0aCBlbnY9e306IGRvbid0IGNvcHkgdGhlIGVudmlyb25tZW50CisgIHZhcmlhYmxlcywgc3RhcnQgd2l0aCBhbiBlbXB0eSBlbnZpcm9ubWVudC4KKworLSBJc3N1ZSAjMTE2Mzc6IEZpeCBzdXBwb3J0IGZvciBpbXBvcnRpbmcgcGFja2FnaW5nIHNldHVwIGhvb2tzIGZyb20gdGhlCisgIHByb2plY3QgZGlyZWN0b3J5LgorCistIElzc3VlICM2NzcxOiBNb3ZlZCB0aGUgY3Vyc2VzLndyYXBwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2luZ2xlLWZ1bmN0aW9uCisgIHdyYXBwZXIgbW9kdWxlIGludG8gX19pbml0X18sIGVsaW1pbmF0aW5nIHRoZSBtb2R1bGUuICBTaW5jZSBfX2luaXRfXyB3YXMKKyAgYWxyZWFkeSBpbXBvcnRpbmcgdGhlIGZ1bmN0aW9uIHRvIGN1cnNlcy53cmFwcGVyLCB0aGVyZSBpcyBubyBBUEkgY2hhbmdlLgorCistIElzc3VlICMxMTU4NDogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSBoZWFkZXIKKyAgcGFzc2VkIHRvIGl0IGlzIGEgSGVhZGVyIG9iamVjdCwgYW5kIEhlYWRlci9tYWtlX2hlYWRlciBubyBsb25nZXIgZmFpbAorICBpZiBnaXZlbiBiaW5hcnkgdW5rbm93bi04Yml0IGlucHV0LgorCistIElzc3VlICMxMTcwMDogbWFpbGJveCBwcm94eSBvYmplY3QgY2xvc2UgbWV0aG9kcyBjYW4gbm93IGJlIGNhbGxlZCBtdWx0aXBsZQorICB0aW1lcyB3aXRob3V0IGVycm9yLgorCistIElzc3VlICMxMTc2NzogQ29ycmVjdCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBtYWlsYm94J3MgX19nZXRpdGVtX18gbWV0aG9kLgorCistIElzc3VlICMxMjEzMzogQWJzdHJhY3RIVFRQSGFuZGxlci5kb19vcGVuKCkgb2YgdXJsbGliLnJlcXVlc3QgY2xvc2VzIHRoZSBIVFRQCisgIGNvbm5lY3Rpb24gaWYgaXRzIGdldHJlc3BvbnNlKCkgbWV0aG9kIGZhaWxzIHdpdGggYSBzb2NrZXQgZXJyb3IuIFBhdGNoCisgIHdyaXR0ZW4gYnkgRXppbyBNZWxvdHRpLgorCistIElzc3VlICMxMjI0MDogQWxsb3cgbXVsdGlwbGUgc2V0dXAgaG9va3MgaW4gcGFja2FnaW5nJ3Mgc2V0dXAuY2ZnIGZpbGVzLgorICBPcmlnaW5hbCBwYXRjaCBieSBFcmlrIEJyYXkuCisKKy0gSXNzdWUgIzkyODQ6IEFsbG93IGluc3BlY3QuZmluZHNvdXJjZSgpIHRvIGZpbmQgdGhlIHNvdXJjZSBvZiBkb2N0ZXN0CisgIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTE1OTU6IEZpeCBhc3NvcnRlZCBidWdzIGluIHBhY2thZ2luZy51dGlsLmNmZ190b19hcmdzLCBhCisgIGNvbXBhdGliaWxpdHkgaGVscGVyIGZvciB0aGUgZGlzdHV0aWxzLXBhY2thZ2luZyB0cmFuc2l0aW9uLiAgT3JpZ2luYWwgcGF0Y2gKKyAgYnkgRXJpayBCcmF5LgorCistIElzc3VlICMxMjI4NzogSW4gb3NzYXVkaW9kZXYsIGNoZWNrIHRoYXQgdGhlIGRldmljZSBpc24ndCBjbG9zZWQgaW4gc2V2ZXJhbAorICBtZXRob2RzLgorCistIElzc3VlICMxMjAwOTogRml4ZWQgcmVncmVzc2lvbiBpbiBuZXRyYyBmaWxlIGNvbW1lbnQgaGFuZGxpbmcuCisKKy0gSXNzdWUgIzEyMjQ2OiBXYXJuIGFuZCBmYWlsIHdoZW4gdHJ5aW5nIHRvIGluc3RhbGwgYSB0aGlyZC1wYXJ0eSBwcm9qZWN0IGZyb20KKyAgYW4gdW5pbnN0YWxsZWQgUHl0aG9uIChidWlsdCBpbiBhIHNvdXJjZSBjaGVja291dCkuICBPcmlnaW5hbCBwYXRjaCBieQorICBUc2hlcGFuZyBMZWtob25raG9iZS4KKworLSBJc3N1ZSAjMTA2OTQ6IHppcGZpbGUgbm93IGlnbm9yZXMgZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIGEgemlwZmlsZS4KKworLSBJc3N1ZSAjMTIyODM6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gc210cGxpYiBxdW90aW5nIG9mIGxlYWRpbmcgZG90cyBpbiBEQVRBLgorCistIElzc3VlICMxMDQyNDogQXJncGFyc2Ugbm93IGluY2x1ZGVzIHRoZSBuYW1lcyBvZiB0aGUgbWlzc2luZyByZXF1aXJlZAorICBhcmd1bWVudHMgaW4gdGhlIG1pc3NpbmcgYXJndW1lbnRzIGVycm9yIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzEyMTY4OiBTeXNMb2dIYW5kbGVyIG5vdyBhbGxvd3MgTlVMIHRlcm1pbmF0aW9uIHRvIGJlIGNvbnRyb2xsZWQgdXNpbmcKKyAgYSBuZXcgJ2FwcGVuZF9udWwnIGF0dHJpYnV0ZSBvbiB0aGUgaGFuZGxlci4KKworLSBJc3N1ZSAjMTE1ODM6IFNwZWVkIHVwIG9zLnBhdGguaXNkaXIgb24gV2luZG93cyBieSB1c2luZyBHZXRGaWxlQXR0cmlidXRlcworICBpbnN0ZWFkIG9mIG9zLnN0YXQuCisKKy0gSXNzdWUgIzEyMDIxOiBNYWtlIG1tYXAncyByZWFkKCkgbWV0aG9kIGFyZ3VtZW50IG9wdGlvbmFsLiBQYXRjaCBieSBQZXRyaQorICBMZWh0aW5lbi4KKworLSBJc3N1ZSAjOTIwNTogY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3Igbm93IGRldGVjdHMga2lsbGVkCisgIGNoaWxkcmVuIGFuZCByYWlzZXMgQnJva2VuUHJvY2Vzc1Bvb2wgaW4gc3VjaCBhIHNpdHVhdGlvbi4gIFByZXZpb3VzbHkgaXQKKyAgd291bGQgcmVsaWFibHkgZnJlZXplL2RlYWRsb2NrLgorCistIElzc3VlICMxMjA0MDogRXhwb3NlIGEgbmV3IGF0dHJpYnV0ZSBgYHNlbnRpbmVsYGAgb24gaW5zdGFuY2VzIG9mCisgIGBgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgYC4gIEFsc28sIGZpeCBQcm9jZXNzLmpvaW4oKSB0byBub3QgdXNlIHBvbGxpbmcKKyAgYW55bW9yZSwgd2hlbiBnaXZlbiBhIHRpbWVvdXQuCisKKy0gSXNzdWUgIzExODkzOiBSZW1vdmUgb2Jzb2xldGUgaW50ZXJuYWwgd3JhcHBlciBjbGFzcyBgYFNTTEZha2VGaWxlYGAgaW4gdGhlCisgIHNtdHBsaWIgbW9kdWxlLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KKworLSBJc3N1ZSAjMTIwODA6IEZpeCBhIERlY2ltYWwucG93ZXIoKSBjYXNlIHRoYXQgdG9vayBhbiB1bnJlYXNvbmFibHkgbG9uZyB0aW1lCisgIHRvIGNvbXB1dGUuCisKKy0gSXNzdWUgIzEyMjIxOiBSZW1vdmUgX192ZXJzaW9uX18gYXR0cmlidXRlcyBmcm9tIHB5ZXhwYXQsIHBpY2tsZSwgdGFyZmlsZSwKKyAgcHlkb2MsIHRraW50ZXIsIGFuZCB4bWwucGFyc2Vycy5leHBhdC4gVGhpcyB3ZXJlIHVzZWxlc3MgdmVyc2lvbiBjb25zdGFudHMKKyAgbGVmdCBvdmVyIGZyb20gdGhlIE1lcmN1cmlhbCB0cmFuc2l0aW9uCisKKy0gTmFtZWQgdHVwbGVzIG5vdyB3b3JrIGNvcnJlY3RseSB3aXRoIHZhcnMoKS4KKworLSBJc3N1ZSAjMTIwODU6IEZpeCBhbiBhdHRyaWJ1dGUgZXJyb3IgaW4gc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIGlmIHRoZQorICBjb25zdHJ1Y3RvciBoYXMgZmFpbGVkLCBlLmcuIGJlY2F1c2Ugb2YgYW4gdW5kZWNsYXJlZCBrZXl3b3JkIGFyZ3VtZW50LiBQYXRjaAorICB3cml0dGVuIGJ5IE9sZWcgT3NobXlhbi4KKworLSBJc3N1ZSAjMTIwMjg6IE1ha2UgdGhyZWFkaW5nLl9nZXRfaWRlbnQoKSBwdWJsaWMsIHJlbmFtZSBpdCB0bworICB0aHJlYWRpbmcuZ2V0X2lkZW50KCkgYW5kIGRvY3VtZW50IGl0LiBUaGlzIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IHVzZWQgdXNpbmcKKyAgX3RocmVhZC5nZXRfaWRlbnQoKS4KKworLSBJc3N1ZSAjMTIxNzE6IEluY3JlbWVudGFsRW5jb2Rlci5yZXNldCgpIG9mIENKSyBjb2RlY3MgKG11bHRpYnl0ZWNvZGVjKSBjYWxscworICBlbmNyZXNldCgpIGluc3RlYWQgb2YgZGVjcmVzZXQoKS4KKworLSBJc3N1ZSAjMTIyMTg6IFJlbW92ZWQgd3NnaXJlZi5lZ2ctaW5mby4KKworLSBJc3N1ZSAjMTIxOTY6IEFkZCBwaXBlMigpIHRvIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLgorICBQYXRjaCBieSBNaGVyIE1vdnNpc3lhbi4KKworLSBJc3N1ZSAjMTYyNTogQloyRmlsZSBhbmQgYnoyLmRlY29tcHJlc3MoKSBub3cgc3VwcG9ydCBtdWx0aS1zdHJlYW0gZmlsZXMuCisgIEluaXRpYWwgcGF0Y2ggYnkgTmlyIEFpZGVzLgorCistIElzc3VlICMxMjE3NTogQnVmZmVyZWRSZWFkZXIucmVhZCgtMSkgbm93IGNhbGxzIHJhdy5yZWFkYWxsKCkgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgb25seSByZWFkcyB0aGUgZmlsZSBwb3NpdGlvbiBhbmQgc2l6ZQorICBvbmNlLgorCistIElzc3VlICMxMjE3NTogUmF3SU9CYXNlLnJlYWRhbGwoKSBub3cgcmV0dXJucyBOb25lIGlmIHJlYWQoKSByZXR1cm5zIE5vbmUuCisKKy0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYW4gSU9FcnJvcgorICBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuCisKKy0gSXNzdWUgIzExMTA5OiBOZXcgc2VydmljZV9hY3Rpb24gbWV0aG9kIGZvciBCYXNlU2VydmVyLCB1c2VkIGJ5IEZvcmtpbmdNaXhJbgorICBjbGFzcyBmb3IgY2xlYW51cC4gSW5pdGlhbCBQYXRjaCBieSBKdXN0aW4gV2Fya2VudGluLgorCistIElzc3VlICMxMjA0NTogQXZvaWQgZHVwbGljYXRlIGV4ZWN1dGlvbiBvZiBjb21tYW5kIGluCisgIGN0eXBlcy51dGlsLl9nZXRfc29uYW1lKCkuICBQYXRjaCBieSBTaWppbiBKb3NlcGguCisKKy0gSXNzdWUgIzEwODE4OiBSZW1vdmUgdGhlIFRrIEdVSSBhbmQgdGhlIHNlcnZlKCkgZnVuY3Rpb24gb2YgdGhlIHB5ZG9jIG1vZHVsZSwKKyAgcHlkb2MgLWcgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yIGFuZCBpdCBoYXMgYSBuZXcgZW5oYW5jZWQgd2ViCisgIHNlcnZlci4KKworLSBJc3N1ZSAjMTQ0MTUzMDogSW4gaW1hcGxpYiwgcmVhZCB0aGUgZGF0YSBpbiBvbmUgY2h1bmsgdG8gc3BlZWQgdXAgbGFyZ2UKKyAgcmVhZHMgYW5kIHNpbXBsaWZ5IGNvZGUuCisKKy0gSXNzdWUgIzEyMDcwOiBGaXggdGhlIE1ha2VmaWxlIHBhcnNlciBvZiB0aGUgc3lzY29uZmlnIG1vZHVsZSB0byBoYW5kbGUKKyAgY29ycmVjdGx5IHJlZmVyZW5jZXMgdG8gImJvZ3VzIHZhcmlhYmxlIiAoZS5nLiAicHJlZml4PSQvb3B0L3B5dGhvbiIpLgorCistIElzc3VlICMxMjEwMDogRG9uJ3QgcmVzZXQgaW5jcmVtZW50YWwgZW5jb2RlcnMgb2YgQ0pLIGNvZGVjcyBhdCBlYWNoIGNhbGwgdG8KKyAgdGhlaXIgZW5jb2RlKCkgbWV0aG9kIGFueW1vcmUsIGJ1dCBjb250aW51ZSB0byBjYWxsIHRoZSByZXNldCgpIG1ldGhvZCBpZiB0aGUKKyAgZmluYWwgYXJndW1lbnQgaXMgVHJ1ZS4KKworLSBJc3N1ZSAjMTIwNDk6IEFkZCBSQU5EX2J5dGVzKCkgYW5kIFJBTkRfcHNldWRvX2J5dGVzKCkgZnVuY3Rpb25zIHRvIHRoZSBzc2wKKyAgbW9kdWxlLgorCistIElzc3VlICM2NTAxOiBvcy5kZXZpY2VfZW5jb2RpbmcoKSByZXR1cm5zIE5vbmUgb24gV2luZG93cyBpZiB0aGUgYXBwbGljYXRpb24KKyAgaGFzIG5vIGNvbnNvbGUuCisKKy0gSXNzdWUgIzEyMTA1OiBBZGQgT19DTE9FWEVDIHRvIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzEyMDc5OiBEZWNpbWFsKCdJbmZpbml0eScpLmZtYShEZWNpbWFsKCcwJyksICgzLjkxMjI0MzE4MTI2Nzg2ZSsxOSswaikpCisgIG5vdyByYWlzZXMgVHlwZUVycm9yIChyZWZsZWN0aW5nIHRoZSBpbnZhbGlkIHR5cGUgb2YgdGhlIDNyZCBhcmd1bWVudCkgcmF0aGVyCisgIHRoYW4gRGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLgorCistIElzc3VlICMxMjEyNDogemlwaW1wb3J0IGRvZXNuJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byB6bGliLmRlY29tcHJlc3MoKSBhbnltb3JlCisgIHRvIGJlIGFibGUgdG8gdW5sb2FkIHRoZSBtb2R1bGUuCisKKy0gQWRkIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCBhbiBpbXByb3ZlZCBmb3JrIG9mIGRpc3R1dGlscyAoYWxzbyBrbm93biBhcworICBkaXN0dXRpbHMyKS4KKworLSBJc3N1ZSAjMTIwNjU6IGNvbm5lY3RfZXgoKSBvbiBhbiBTU0wgc29ja2V0IG5vdyByZXR1cm5zIHRoZSBvcmlnaW5hbCBlcnJubworICB3aGVuIHRoZSBzb2NrZXQncyB0aW1lb3V0IGV4cGlyZXMgKGl0IHVzZWQgdG8gcmV0dXJuIE5vbmUpLgorCistIElzc3VlICM4ODA5OiBUaGUgU01UUF9TU0wgY29uc3RydWN0b3IgYW5kIFNNVFAuc3RhcnR0bHMoKSBub3cgc3VwcG9ydAorICBwYXNzaW5nIGEgYGBjb250ZXh0YGAgYXJndW1lbnQgcG9pbnRpbmcgdG8gYW4gc3NsLlNTTENvbnRleHQgaW5zdGFuY2UuCisgIFBhdGNoIGJ5IEthc3VuIEhlcmF0aC4KKworLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCisgIHdpdGggVGsgOC41LgorCistIElzc3VlICM5NTE2OiBJc3N1ZSAjOTUxNjogYXZvaWQgZXJyb3JzIGluIHN5c2NvbmZpZyB3aGVuIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAorICBpcyBzZXQgaW4gc2hlbGwuCisKKy0gSXNzdWUgIzg2NTA6IE1ha2UgemxpYiBtb2R1bGUgNjQtYml0IGNsZWFuLiBjb21wcmVzcygpLCBkZWNvbXByZXNzKCkgYW5kCisgIHRoZWlyIGluY3JlbWVudGFsIGNvdW50ZXJwYXJ0cyBub3cgcmFpc2UgT3ZlcmZsb3dFcnJvciBpZiBnaXZlbiBhbiBpbnB1dAorICBsYXJnZXIgdGhhbiA0R0IsIGluc3RlYWQgb2Ygc2lsZW50bHkgdHJ1bmNhdGluZyB0aGUgaW5wdXQgYW5kIHJldHVybmluZworICBhbiBpbmNvcnJlY3QgcmVzdWx0LgorCistIElzc3VlICMxMjA1MDogemxpYi5kZWNvbXByZXNzb2JqKCkuZGVjb21wcmVzcygpIG5vdyBjbGVhcnMgdGhlIHVuY29uc3VtZWRfdGFpbAorICBhdHRyaWJ1dGUgd2hlbiBjYWxsZWQgd2l0aG91dCBhIG1heF9sZW5ndGggYXJndW1lbnQuCisKKy0gSXNzdWUgIzEyMDYyOiBGaXggYSBmbHVzaGluZyBidWcgd2hlbiBkb2luZyBhIGNlcnRhaW4gdHlwZSBvZiBJL08gc2VxdWVuY2UKKyAgb24gYSBmaWxlIG9wZW5lZCBpbiByZWFkK3dyaXRlIG1vZGUgKG5hbWVseTogcmVhZGluZywgc2Vla2luZyBhIGJpdCBmb3J3YXJkLAorICB3cml0aW5nLCB0aGVuIHNlZWtpbmcgYmVmb3JlIHRoZSBwcmV2aW91cyB3cml0ZSBidXQgc3RpbGwgd2l0aGluIGJ1ZmZlcmVkCisgIGRhdGEsIGFuZCB3cml0aW5nIGFnYWluKS4KKworLSBJc3N1ZSAjOTk3MTogV3JpdGUgYW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIEJ1ZmZlcmVkUmVhZGVyLnJlYWRpbnRvKCkuCisgIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCisKKy0gSXNzdWUgIzEwMjg6IFRrIHJldHVybnMgaW52YWxpZCBVbmljb2RlIG51bGwgaW4gJUE6IFVuaWNvZGVEZWNvZGVFcnJvci4KKyAgV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZAorICBJRExFIHRvIGV4aXQuICBDb252ZXJ0ZWQgdG8gdmFsaWQgVW5pY29kZSBudWxsIGluIFB5dGhvbkNtZCgpLgorCistIElzc3VlICMxMTc5OTogdXJsbGliLnJlcXVlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlcnMgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IKKyAgd2hlbiBwcmVzZW50ZWQgd2l0aCBhbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuIFBhdGNoIGNvbnRyaWJ1dGVkCisgIGJ5IFl1dmFsIEdyZWVuZmllbGQuCisKKy0gSXNzdWUgIzEwNDE5LCAjNjAxMTogYnVpbGRfc2NyaXB0cyBjb21tYW5kIG9mIGRpc3R1dGlscyBoYW5kbGVzIGNvcnJlY3RseQorICBub24tQVNDSUkgcGF0aCAocGF0aCB0byB0aGUgUHl0aG9uIGV4ZWN1dGFibGUpLiBPcGVuIGFuZCB3cml0ZSB0aGUgc2NyaXB0IGluCisgIGJpbmFyeSBtb2RlLCBidXQgZW5zdXJlIHRoYXQgdGhlIHNoZWJhbmcgaXMgZGVjb2RhYmxlIGZyb20gVVRGLTggYW5kIGZyb20gdGhlCisgIGVuY29kaW5nIG9mIHRoZSBzY3JpcHQuCisKKy0gSXNzdWUgIzg0OTg6IEluIHNvY2tldC5hY2NlcHQoKSwgYWxsb3cgdG8gc3BlY2lmeSAwIGFzIGEgYmFja2xvZyB2YWx1ZSBpbgorICBvcmRlciB0byBhY2NlcHQgZXhhY3RseSBvbmUgY29ubmVjdGlvbi4gIFBhdGNoIGJ5IERhbmllbCBFdmVycy4KKworLSBJc3N1ZSAjMTIwMTE6IHNpZ25hbC5zaWduYWwoKSBhbmQgc2lnbmFsLnNpZ2ludGVycnVwdCgpIHJhaXNlIGFuIE9TRXJyb3IsCisgIGluc3RlYWQgb2YgYSBSdW50aW1lRXJyb3I6IE9TRXJyb3IgaGFzIGFuIGVycm5vIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMzcwOTogYWRkIGEgZmx1c2hfaGVhZGVycyBtZXRob2QgdG8gQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgd2hpY2gKKyAgbWFuYWdlcyB0aGUgc2VuZGluZyBvZiBoZWFkZXJzIHRvIG91dHB1dCBzdHJlYW0gYW5kIGZsdXNoaW5nIHRoZSBpbnRlcm5hbAorICBoZWFkZXJzIGJ1ZmZlci4gUGF0Y2ggY29udHJpYnV0aW9uIGJ5IEFuZHJldyBTY2hhYWYKKworLSBJc3N1ZSAjMTE3NDM6IFJld3JpdGUgbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb24gY2xhc3NlcyBpbiBwdXJlIFB5dGhvbi4KKworLSBJc3N1ZSAjMTExNjQ6IFN0b3AgdHJ5aW5nIHRvIHVzZSBfeG1scGx1cyBpbiB0aGUgeG1sIG1vZHVsZS4KKworLSBJc3N1ZSAjMTE4ODg6IEFkZCBsb2cyIGZ1bmN0aW9uIHRvIG1hdGggbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IE1hcmsKKyAgRGlja2luc29uLgorCistIElzc3VlICMxMjAxMjogc3NsLlBST1RPQ09MX1NTTHYyIGJlY29tZXMgb3B0aW9uYWwuCisKKy0gSXNzdWUgIzg0MDc6IFRoZSBzaWduYWwgaGFuZGxlciB3cml0ZXMgdGhlIHNpZ25hbCBudW1iZXIgYXMgYSBzaW5nbGUgYnl0ZQorICBpbnN0ZWFkIG9mIGEgbnVsIGJ5dGUgaW50byB0aGUgd2FrZXVwIGZpbGUgZGVzY3JpcHRvci4gU28gaXQgaXMgcG9zc2libGUgdG8KKyAgd2FpdCBtb3JlIHRoYW4gb25lIHNpZ25hbCBhbmQga25vdyB3aGljaCBzaWduYWxzIHdlcmUgcmFpc2VkLgorCistIElzc3VlICM4NDA3OiBBZGQgcHRocmVhZF9raWxsKCksIHNpZ3BlbmRpbmcoKSBhbmQgc2lnd2FpdCgpIGZ1bmN0aW9ucyB0byB0aGUKKyAgc2lnbmFsIG1vZHVsZS4KKworLSBJc3N1ZSAjMTE5Mjc6IFNNVFBfU1NMIG5vdyB1c2VzIHBvcnQgNDY1IGJ5IGRlZmF1bHQgYXMgZG9jdW1lbnRlZC4gIFBhdGNoCisgIGJ5IEthc3VuIEhlcmF0aC4KKworLSBJc3N1ZSAjMTIwMDI6IGZ0cGxpYidzIGFib3J0KCkgbWV0aG9kIHJhaXNlcyBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzExOTE2OiBBZGQgYSBudW1iZXIgb2YgTWFjT1NYIHNwZWNpZmljIGRlZmluaXRpb25zIHRvIHRoZSBlcnJubyBtb2R1bGUuCisgIFBhdGNoIGJ5IFBpZXJyZSBDYXJyaWVyLgorCistIElzc3VlICMxMTk5OTogZml4ZWQgc3BvcmFkaWMgc3luYyBmYWlsdXJlIG1haWxib3guTWFpbGRpciBkdWUgdG8gaXRzIHRyeWluZyB0bworICBkZXRlY3QgbXRpbWUgY2hhbmdlcyBieSBjb21wYXJpbmcgdG8gdGhlIHN5c3RlbSBjbG9jayBpbnN0ZWFkIG9mIHRvIHRoZQorICBwcmV2aW91cyB2YWx1ZSBvZiB0aGUgbXRpbWUuCisKKy0gSXNzdWUgIzExMDcyOiBhZGRlZCBNTFNEIGNvbW1hbmQgKFJGQy0zNjU5KSBzdXBwb3J0IHRvIGZ0cGxpYi4KKworLSBJc3N1ZSAjODgwODogVGhlIElNQVA0X1NTTCBjb25zdHJ1Y3RvciBub3cgYWxsb3dzIHBhc3NpbmcgYW4gU1NMQ29udGV4dAorICBwYXJhbWV0ZXIgdG8gY29udHJvbCBwYXJhbWV0ZXJzIG9mIHRoZSBzZWN1cmUgY2hhbm5lbC4gIFBhdGNoIGJ5IFNpamluCisgIEpvc2VwaC4KKworLSBudHBhdGguc2FtZWZpbGUgZmFpbGVkIHRvIG5vdGljZSB0aGF0ICJhLnR4dCIgYW5kICJBLlRYVCIgcmVmZXIgdG8gdGhlIHNhbWUKKyAgZmlsZSBvbiBXaW5kb3dzIFhQLiBBcyBub3RpY2VkIGluIGlzc3VlICMxMDY4NC4KKworLSBJc3N1ZSAjMTIwMDA6IFdoZW4gYSBTU0wgY2VydGlmaWNhdGUgaGFzIGEgc3ViamVjdEFsdE5hbWUgd2l0aG91dCBhbnkKKyAgZE5TTmFtZSBlbnRyeSwgc3NsLm1hdGNoX2hvc3RuYW1lKCkgc2hvdWxkIHVzZSB0aGUgc3ViamVjdCdzIGNvbW1vbk5hbWUuCisgIFBhdGNoIGJ5IE5pY29sYXMgQmFyZWlsLgorCistIElzc3VlICMxMDc3NTogYXNzZXJ0UmFpc2VzLCBhc3NlcnRSYWlzZXNSZWdleCwgYXNzZXJ0V2FybnMsIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4IG5vdyBhY2NlcHQgYSBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIHdoZW4gdXNlZCBhcyBjb250ZXh0CisgIG1hbmFnZXJzLiAgSW5pdGlhbCBwYXRjaCBieSBXaW5zdG9uIEV3ZXJ0LgorCistIElzc3VlICMxMDY4NDogc2h1dGlsLm1vdmUgdXNlZCB0byBkZWxldGUgYSBmb2xkZXIgb24gY2FzZSBpbnNlbnNpdGl2ZQorICBmaWxlc3lzdGVtcyB3aGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0CisgIGZvciB0aGUgY2FzZS4KKworLSBJc3N1ZSAjMTE2NDc6IG9iamVjdHMgY3JlYXRlZCB1c2luZyBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyIG5vdyBzdXBwb3J0CisgIG1vcmUgdGhhbiBvbmUgY2FsbCB0byB0aGUgZnVuY3Rpb24gd2hlbiB1c2VkIGFzIGEgZGVjb3JhdG9yLiBJbml0aWFsIHBhdGNoCisgIGJ5IFlzaiBSYXkuCisKKy0gSXNzdWUgIzExOTMwOiBSZW1vdmVkIGRlcHJlY2F0ZWQgdGltZS5hY2NlcHQyZHllYXIgdmFyaWFibGUuCisgIFJlbW92ZWQgeWVhciA+PSAxMDAwIHJlc3RyaWN0aW9uIGZyb20gZGF0ZXRpbWUuc3RyZnRpbWUuCisKKy0gbG9nZ2luZzogZG9uJ3QgZGVmaW5lIFF1ZXVlTGlzdGVuZXIgaWYgUHl0aG9uIGhhcyBubyB0aHJlYWQgc3VwcG9ydC4KKworLSBmdW5jdG9vbHMuY21wX3RvX2tleSgpIG5vdyB3b3JrcyB3aXRoIGNvbGxlY3Rpb25zLkhhc2hhYmxlKCkuCisKKy0gSXNzdWUgIzExMjc3OiBtbWFwLm1tYXAoKSBjYWxscyBmY250bChmZCwgRl9GVUxMRlNZTkMpIG9uIE1hYyBPUyBYIHRvIGdldAorICBhcm91bmQgYSBtbWFwIGJ1ZyB3aXRoIHNwYXJzZSBmaWxlcy4gUGF0Y2ggd3JpdHRlbiBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCistIElzc3VlICM4NDA3OiBBZGQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpIGZ1bmN0aW9uIHRvIGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlCisgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKworLSBJc3N1ZSAjMTE4NTg6IGNvbmZpZ3BhcnNlci5FeHRlbmRlZEludGVycG9sYXRpb24gZXhwZWN0ZWQgbG93ZXItY2FzZSBzZWN0aW9uCisgIG5hbWVzLgorCistIElzc3VlICMxMTMyNDogQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSkgbm93IHdvcmtzIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTE4MTE6IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCkgaXMgbm93IElQdjYtY29tcGF0aWJsZS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTE3NjM6IGRvbid0IHVzZSBkaWZmbGliIGluIFRlc3RDYXNlLmFzc2VydE11bHRpTGluZUVxdWFsIGlmIHRoZQorICBzdHJpbmdzIGFyZSB0b28gbG9uZy4KKworLSBJc3N1ZSAjMTEyMzY6IGdldHBhc3MuZ2V0cGFzcyByZXNwb25kcyB0byBjdHJsLWMgb3IgY3RybC16IG9uIHRlcm1pbmFsLgorCistIElzc3VlICMxMTg1NjogU3BlZWQgdXAgcGFyc2luZyBvZiBKU09OIG51bWJlcnMuCisKKy0gSXNzdWUgIzExMDA1OiB0aHJlYWRpbmcuUkxvY2soKS5fcmVsZWFzZV9zYXZlKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQorICBsb2NrIHdhcyBub3QgYWNxdWlyZWQuCisKKy0gSXNzdWUgIzExMjU4OiBTcGVlZCB1cCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKSB1bmRlciBMaW51eCBieSBhIGZhY3RvcgorICBvZiA1IHRvIDEwLiAgSW5pdGlhbCBwYXRjaCBieSBKb25hcyBILgorCistIElzc3VlICMxMTM4MjogVHJpdmlhbCBzeXN0ZW0gY2FsbHMsIHN1Y2ggYXMgZHVwKCkgb3IgcGlwZSgpLCBuZWVkbid0CisgIHJlbGVhc2UgdGhlIEdJTC4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTEyMjM6IEFkZCB0aHJlYWRpbmcuX2luZm8oKSBmdW5jdGlvbiBwcm92aWRpbmcgaW5mb3JtYXRpb25zIGFib3V0CisgIHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzExNzMxOiBzaW1wbGlmeS9lbmhhbmNlIGVtYWlsIHBhcnNlci9nZW5lcmF0b3IgQVBJIGJ5IGludHJvZHVjaW5nCisgIHBvbGljeSBvYmplY3RzLgorCistIElzc3VlICMxMTc2ODogVGhlIHNpZ25hbCBoYW5kbGVyIG9mIHRoZSBzaWduYWwgbW9kdWxlIG9ubHkgY2FsbHMKKyAgUHlfQWRkUGVuZGluZ0NhbGwoKSBmb3IgdGhlIGZpcnN0IHNpZ25hbCB0byBmaXggYSBkZWFkbG9jayBvbiByZWVudHJhbnQgb3IKKyAgcGFyYWxsZWwgY2FsbHMuIFB5RXJyX1NldEludGVycnVwdCgpIHdyaXRlcyBhbHNvIGludG8gdGhlIHdha2UgdXAgZmlsZS4KKworLSBJc3N1ZSAjMTE0OTI6IGZpeCBzZXZlcmFsIGlzc3VlcyB3aXRoIGhlYWRlciBmb2xkaW5nIGluIHRoZSBlbWFpbCBwYWNrYWdlLgorCistIElzc3VlICMxMTg1MjogQWRkIG1pc3NpbmcgaW1wb3J0cyBhbmQgdXBkYXRlIHRlc3RzLgorCistIElzc3VlICMxMTg3NTogY29sbGVjdGlvbnMuT3JkZXJlZERpY3QncyBfX3JlZHVjZV9fIHdhcyB0ZW1wb3JhcmlseQorICBtdXRhdGluZyB0aGUgb2JqZWN0IGluc3RlYWQgb2YganVzdCB3b3JraW5nIG9uIGEgY29weS4KKworLSBJc3N1ZSAjMTE0Njc6IEZpeCB1cmxwYXJzZSBiZWhhdmlvciB3aGVuIGhhbmRsaW5nIHVybHMgd2hpY2ggY29udGFpbnMgc2NoZW1lCisgIHNwZWNpZmljIHBhcnQgb25seSBkaWdpdHMuIFBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCistIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS5jb3B5KCkgbm93IHdvcmtzIGNvcnJlY3RseSBmb3Igc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTE0NzQ6IEZpeCB0aGUgYnVnIHdpdGggdXJsMnBhdGhuYW1lKCkgaGFuZGxpbmcgb2YgJy9DfC8nIG9uIFdpbmRvd3MuCisgIFBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCistIElzc3VlICMxMTY4NDogY29tcGxldGUgZW1haWwucGFyc2VyIGJ5dGVzIEFQSSBieSBhZGRpbmcgQnl0ZXNIZWFkZXJQYXJzZXIuCisKKy0gVGhlIGJ6MiBtb2R1bGUgbm93IGhhbmRsZXMgNEdpQisgaW5wdXQgYnVmZmVycyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzkyMzM6IEZpeCBqc29uLmxvYWRzKCd7fScpIHRvIHJldHVybiBhIGRpY3QgKGluc3RlYWQgb2YgYSBsaXN0KSwgd2hlbgorICBfanNvbiBpcyBub3QgYXZhaWxhYmxlLgorCistIElzc3VlICMxMTgzMDogUmVtb3ZlIHVubmVjZXNzYXJ5IGludHJvc3BlY3Rpb24gY29kZSBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuCisKKy0gSXNzdWUgIzExNzAzOiB1cmxsaWIyLmdldHVybCgpIGRvZXMgbm90IHJldHVybiBjb3JyZWN0IHVybCB3aGVuIHRoZSBvcmlnaW5hbAorICB1cmwgY29udGFpbnMgI2ZyYWdtZW50LgorCistIElzc3VlICMxMDAxOTogRml4ZWQgcmVncmVzc2lvbiBpbiBqc29uIG1vZHVsZSB3aGVyZSBhbiBpbmRlbnQgb2YgMCBzdG9wcGVkCisgIGFkZGluZyBuZXdsaW5lcyBhbmQgYWN0ZWQgaW5zdGVhZCBsaWtlICdOb25lJy4KKworLSBJc3N1ZSAjMTExODY6IHB5ZG9jIGlnbm9yZXMgYSBtb2R1bGUgaWYgaXRzIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUKKyAgY2hhcmFjdGVyIGluIHRoZSBpbmRleCBvZiBtb2R1bGVzLgorCistIElzc3VlICMxMTgxNTogVXNlIGEgbGlnaHQtd2VpZ2h0IFNpbXBsZVF1ZXVlIGZvciB0aGUgcmVzdWx0IHF1ZXVlIGluCisgIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgorCistIElzc3VlICM1MTYyOiBUcmVhdCBzZXJ2aWNlcyBsaWtlIGZyb3plbiBleGVjdXRhYmxlcyB0byBhbGxvdyBjaGlsZCBzcGF3bmluZworICBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIG9uIFdpbmRvd3MuCisKKy0gbG9nZ2luZy5iYXNpY0NvbmZpZyBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgJ2hhbmRsZXJzJyBhcmd1bWVudCB0YWtpbmcgYW4KKyAgaXRlcmFibGUgb2YgaGFuZGxlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIHJvb3QgbG9nZ2VyLiBBZGRpdGlvbmFsIHBhcmFtZXRlcgorICBjaGVja3Mgd2VyZSBhbHNvIGFkZGVkIHRvIGJhc2ljQ29uZmlnLgorCistIElzc3VlICMxMTgxNDogRml4IGxpa2VseSB0eXBvIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sLl90ZXJtaW5hdGUoKS4KKworLSBJc3N1ZSAjMTE3NDc6IEZpeCByYW5nZSBmb3JtYXR0aW5nIGluIGRpZmZsaWIuY29udGV4dF9kaWZmKCkgYW5kCisgIGRpZmZsaWIudW5pZmllZF9kaWZmKCkuCisKKy0gSXNzdWUgIzg0Mjg6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sIHdoZW4gdGVybWluYXRpbmcKKyAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nCisgIHNodXQgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMjY1MDogcmUuZXNjYXBlKCkgbm8gbG9uZ2VyIGVzY2FwZXMgdGhlICdfJy4KKworLSBJc3N1ZSAjMTE3NTc6IHNlbGVjdC5zZWxlY3QoKSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhIG5lZ2F0aXZlIHRpbWVvdXQKKyAgaXMgcGFzc2VkIChwcmV2aW91c2x5LCBhIHNlbGVjdC5lcnJvciB3aXRoIEVJTlZBTCB3b3VsZCBiZSByYWlzZWQpLiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICM3MzExOiBmaXggaHRtbC5wYXJzZXIgdG8gYWNjZXB0IG5vbi1BU0NJSSBhdHRyaWJ1dGUgdmFsdWVzLgorCistIElzc3VlICMxMTYwNTogZW1haWwucGFyc2VyLkJ5dGVzRmVlZFBhcnNlciB3YXMgaW5jb3JyZWN0bHkgY29udmVydGluZworICBtdWx0aXBhcnQgc3VicGFydHMgd2l0aCBhbiA4LWJpdCBDVEUgaW50byB1bmljb2RlIGluc3RlYWQgb2YgcHJlc2VydmluZyB0aGUKKyAgYnl0ZXMuCisKKy0gSXNzdWUgIzE2OTA2MDg6IGVtYWlsLnV0aWwuZm9ybWF0YWRkciBpcyBub3cgUkZDIDIwNDcgYXdhcmU6ICBpdCBub3cgaGFzIGEKKyAgY2hhcnNldCBwYXJhbWV0ZXIgdGhhdCBkZWZhdWx0cyB0byB1dGYtOCBhbmQgaXMgdXNlZCBhcyB0aGUgY2hhcnNldCBmb3IgUkZDCisgIDIwNDcgZW5jb2Rpbmcgd2hlbiB0aGUgcmVhbG5hbWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzEwOTYzOiBFbnN1cmUgdGhhdCBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgbmV2ZXIgcmFpc2VzIEVQSVBFLgorCistIElzc3VlICMxMDc5MTogSW1wbGVtZW50IG1pc3NpbmcgbWV0aG9kIEd6aXBGaWxlLnJlYWQxKCksIGFsbG93aW5nIEd6aXBGaWxlCisgIHRvIGJlIHdyYXBwZWQgaW4gYSBUZXh0SU9XcmFwcGVyLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTcwNzogQWRkZWQgYSBmYXN0IEMgdmVyc2lvbiBvZiBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgorICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIElzc3VlICMxMTY4ODogQWRkIHNxbGl0ZTMuQ29ubmVjdGlvbi5zZXRfdHJhY2VfY2FsbGJhY2soKS4gIFBhdGNoIGJ5CisgIFRvcnN0ZW4gTGFuZHNjaG9mZi4KKworLSBJc3N1ZSAjMTE3NDY6IEZpeCBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIHRvIGFjY2VwdCBlbGxpcHRpYyBjdXJ2ZQorICBwcml2YXRlIGtleXMuCisKKy0gSXNzdWUgIzU4NjM6IFJld3JpdGUgQloyRmlsZSBpbiBwdXJlIFB5dGhvbiwgYW5kIGFsbG93IGl0IHRvIGFjY2VwdAorICBmaWxlLWxpa2Ugb2JqZWN0cyB1c2luZyBhIG5ldyBgYGZpbGVvYmpgYCBjb25zdHJ1Y3RvciBhcmd1bWVudC4gIFBhdGNoIGJ5CisgIE5hZGVlbSBWYXdkYS4KKworLSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHMgaGFzIGJlZW4gcmVtb3ZlZC4KKworLSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIGluaXRmc2VuY29kaW5nKCkgd2FzIG5vdAorICBjYWxsZWQgeWV0OiBkZXRlY3QgYm9vdHN0cmFwIChzdGFydHVwKSBpc3N1ZXMgZWFybGllci4KKworLSBJc3N1ZSAjMTEzOTM6IEFkZCB0aGUgbmV3IGZhdWx0aGFuZGxlciBtb2R1bGUuCisKKy0gSXNzdWUgIzExNjE4OiBGaXggdGhlIHRpbWVvdXQgbG9naWMgaW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpIHVuZGVyIFdpbmRvd3MuCisKKy0gUmVtb3ZlZCB0aGUgJ3N0cmljdCcgYXJndW1lbnQgdG8gZW1haWwucGFyc2VyLlBhcnNlciwgd2hpY2ggaGFzIGJlZW4KKyAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMi40LgorCistIElzc3VlICMxMTI1NjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3Mgb24gZnVuY3Rpb25zIHRoYXQgdGFrZSBvbmx5IGtleXdvcmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMxMTY5NjogRml4IElEIGdlbmVyYXRpb24gaW4gbXNpbGliLgorCistIGl0ZXJ0b29scy5hY2N1bXVsYXRlIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAqZnVuYyogYXJndW1lbnQgZm9yCisgIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzExNjkyOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVtbyBmdW5jdGlvbnMgaW4gc3VicHJvY2VzcyBtb2R1bGUuCisKKy0gSXNzdWUgIzk2OTY6IEZpeCBleGNlcHRpb24gaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IHhkcmxpYi5QYWNrZXIucGFja19pbnQgd2hlbgorICB0cnlpbmcgdG8gcGFjayBhIG5lZ2F0aXZlIChpbi1yYW5nZSkgaW50ZWdlci4KKworLSBJc3N1ZSAjMTE2NzU6IG11bHRpcHJvY2Vzc2luZy5bUmF3XUFycmF5IG9iamVjdHMgY3JlYXRlZCBmcm9tIGFuIGludGVnZXIgc2l6ZQorICBhcmUgbm93IHplcm9lZCBvbiBjcmVhdGlvbi4gIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3VyIHNwZWNpZmllZCBieSB0aGUKKyAgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjNzYzOTogRml4IHNob3J0IGZpbGUgbmFtZSBnZW5lcmF0aW9uIGluIGJkaXN0X21zaQorCistIElzc3VlICMxMTY1OTogRml4IFJlc291cmNlV2FybmluZyBpbiB0ZXN0X3N1YnByb2Nlc3MgaW50cm9kdWNlZCBieSAjMTE0NTkuCisgIFBhdGNoIGJ5IEJlbiBIYXlkZW4uCisKKy0gSXNzdWUgIzExNjM1OiBEb24ndCB1c2UgcG9sbGluZyBpbiB3b3JrZXIgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGxhdW5jaGVkIGJ5CisgIGNvbmN1cnJlbnQuZnV0dXJlcy4KKworLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCisgIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQorICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCisKKy0gSXNzdWUgIzg3NTQ6IEhhdmUgaW1wb3J0bGliIHVzZSB0aGUgcmVwciBvZiBhIG1vZHVsZSBuYW1lIGluIGVycm9yIG1lc3NhZ2VzLgorCistIElzc3VlICMxMTU5MTogUHJldmVudCAiaW1wb3J0IHNpdGUiIGZyb20gbW9kaWZ5aW5nIHN5cy5wYXRoIHdoZW4gcHl0aG9uCisgIHdhcyBzdGFydGVkIHdpdGggLVMuCisKKy0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBhZGRzIGEgX3NvdXJjZSBhdHRyaWJ1dGUgdG8gdGhlIGdlbmVyYXRlZAorICBjbGFzcy4gIFRoaXMgbWFrZSB0aGUgc291cmNlIG1vcmUgYWNjZXNzaWJsZSB0aGFuIHRoZSBvdXRkYXRlZAorICAidmVyYm9zZSIgb3B0aW9uIHdoaWNoIHByaW50cyB0byBzdGRvdXQgYnV0IGRvZXNuJ3QgbWFrZSB0aGUgc291cmNlCisgIHN0cmluZyBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzExMzcxOiBNYXJrIGdldG9wdCBlcnJvciBtZXNzYWdlcyBhcyBsb2NhbGl6YWJsZS4gIFBhdGNoIGJ5IEZpbGlwCisgIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzExMzMzOiBBZGQgX19zbG90c19fIHRvIGNvbGxlY3Rpb25zIEFCQ3MuCisKKy0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXy4KKworLSBJc3N1ZSAjMTE2NjY6IGxldCBoZWxwKCkgZGlzcGxheSBuYW1lZCB0dXBsZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzCisgIHRoYXQgc3RhcnQgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZS4KKworLSBJc3N1ZSAjMTE2NjI6IE1ha2UgdXJsbGliIGFuZCB1cmxsaWIyIGlnbm9yZSByZWRpcmVjdGlvbnMgaWYgdGhlCisgIHNjaGVtZSBpcyBub3QgSFRUUCwgSFRUUFMgb3IgRlRQIChDVkUtMjAxMS0xNTIxKS4KKworLSBJc3N1ZSAjNTUzNzogRml4IHRpbWUyaXNveigpIGFuZCB0aW1lMm5ldHNjYXBlKCkgZnVuY3Rpb25zIG9mCisgIGh0dHBsaWIuY29va2llamFyIGZvciBleHBpcmF0aW9uIHllYXIgZ3JlYXRlciB0aGFuIDIwMzggb24gMzItYml0IHN5c3RlbXMuCisKKy0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgZ2V0dGV4dCBwbHVyYWwgZm9ybXMgaW4gb3B0cGFyc2UuCisKKy0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgorCistIElzc3VlICMxMTU2MzogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKKyAgY2xhc3Mgd2hpY2ggaGVscHMgaW4gY2xvc2luZyBvZiBzb2NrZXRzIGFmdGVyIGNvbm5lY3Rpb24gaXMgb3Zlci4gUGF0Y2gKKyAgY29udHJpYnV0aW9ucyBieSBKZWZmIE1jTmVpbCBhbmQgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTQ1OTogQSBgYGJ1ZnNpemVgYCB2YWx1ZSBvZiAwIGluIHN1YnByb2Nlc3MuUG9wZW4oKSByZWFsbHkgY3JlYXRlcworICB1bmJ1ZmZlcmVkIHBpcGVzLCBzdWNoIHRoYXQgc2VsZWN0KCkgd29ya3MgcHJvcGVybHkgb24gdGhlbS4KKworLSBJc3N1ZSAjNTQyMTogRml4IG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIG9uZSBvZiBzb2NrZXQuc2VuZHRvKCkncworICBhcmd1bWVudHMgaGFzIHRoZSB3cm9uZyB0eXBlLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KKworLSBJc3N1ZSAjMTA4MTI6IEFkZCBzb21lIGV4dHJhIHBvc2l4IGZ1bmN0aW9ucyB0byB0aGUgb3MgbW9kdWxlLgorCistIElzc3VlICMxMDk3OTogdW5pdHRlc3Qgc3Rkb3V0IGJ1ZmZlcmluZyBub3cgd29ya3Mgd2l0aCBjbGFzcyBhbmQgbW9kdWxlCisgIHNldHVwIGFuZCB0ZWFyZG93bi4KKworLSBJc3N1ZSAjMTE1Nzc6IGZpeCBSZXNvdXJjZVdhcm5pbmcgdHJpZ2dlcmVkIGJ5IGltcHJvdmVkIGJpbmhleCB0ZXN0IGNvdmVyYWdlCisKKy0gSXNzdWUgIzExMjQzOiBmaXggdGhlIHBhcmFtZXRlciBxdWVyeWluZyBtZXRob2RzIG9mIE1lc3NhZ2UgdG8gd29yayBpZgorICB0aGUgaGVhZGVycyBjb250YWluIHVuLWVuY29kZWQgbm9uLUFTQ0lJIGRhdGEuCisKKy0gSXNzdWUgIzExNDAxOiBmaXggaGFuZGxpbmcgb2YgaGVhZGVycyB3aXRoIG5vIHZhbHVlOyB0aGlzIGZpeGVzIGEgcmVncmVzc2lvbgorICByZWxhdGl2ZSB0byBQeXRob24yIGFuZCB0aGUgcmVzdWx0IGlzIG5vdyB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uMi4KKworLSBJc3N1ZSAjOTI5ODogYmFzZTY0IGJvZGllcyB3ZXJlbid0IGJlaW5nIGZvbGRlZCB0byBsaW5lIGxlbmd0aHMgbGVzcyB0aGFuIDc4LAorICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZQorICBvZiB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KKworLSBJc3N1ZSAjMTE1NjA6IHNodXRpbC51bnBhY2tfYXJjaGl2ZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZvcm1hdAorICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KKworLSBJc3N1ZSAjNTg3MDogQWRkIGBzdWJwcm9jZXNzLkRFVk5VTExgIGNvbnN0YW50LgorCistIElzc3VlICMxMTEzMzogZml4IHR3byBjYXNlcyB3aGVyZSBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGNhbiB0cmlnZ2VyIGNvZGUKKyAgZXhlY3V0aW9uLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzExNTY5OiB1c2UgYWJzb2x1dGUgcGF0aCB0byB0aGUgc3lzY3RsIGNvbW1hbmQgaW4gbXVsdGlwcm9jZXNzaW5nIHRvCisgIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzCisgIHRoYXQgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KKworLSBJc3N1ZSAjMTE1MDE6IGRpc3V0aWxzLmFyY2hpdmVfdXRpbHMubWFrZV96aXBmaWxlIG5vIGxvbmdlciBmYWlscyBpZiB6bGliIGlzCisgIG5vdCBpbnN0YWxsZWQuIEluc3RlYWQsIHRoZSB6aXBmaWxlLlpJUF9TVE9SRUQgY29tcHJlc3Npb24gaXMgdXNlZCB0byBjcmVhdGUKKyAgdGhlIFppcEZpbGUuIFBhdGNoIGJ5IE5hdGFsaWEgQi4gQmlkYXJ0LgorCistIElzc3VlICMxMTI4OTogYHNtdHAuU01UUGAgY2xhc3MgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIHNvIGl0IGNhbiBiZSB1c2VkCisgIGluIGEgYHdpdGhgIHN0YXRlbWVudC4gIENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEuCisKKy0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0CisgIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCisKKy0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgorICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCisKKy0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KKyAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KKworLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBPUyBYIHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQKKyAgSVAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KKworLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGgKKyAgdGhlICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcworICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KKworLSBJc3N1ZSAjMTE2MjQ3NzogUG9zdGVsIFByaW5jaXBsZSBhZGp1c3RtZW50IHRvIGVtYWlsIGRhdGUgcGFyc2luZzogaGFuZGxlIHRoZQorICBmYWN0IHRoYXQgc29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyBpbnN0ZWFkIG9mICc6JyBpbiB0aW1lIHNwZWNzLgorCistIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMKKyAgb3BlcmF0aW9ucyB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgorCistIElzc3VlICM5OTM1OiBTcGVlZCB1cCBwaWNrbGluZyBvZiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMuCisKKy0gSXNzdWUgIzU2MjI6IEZpeCBjdXJzZXMud3JhcHBlciB0byByYWlzZSBjb3JyZWN0IGV4Y2VwdGlvbiBpZiBjdXJzZXMKKyAgaW5pdGlhbGl6YXRpb24gZmFpbHMuCisKKy0gSXNzdWUgIzExNDA4OiBJbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCksIG9ubHkgY2FsbCBnZXR0aW1lb2ZkYXkoKSB3aGVuCisgIHJlYWxseSBuZWNlc3NhcnkuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExMzkxOiBXcml0aW5nIHRvIGEgbW1hcCBvYmplY3QgY3JlYXRlZCB3aXRoCisgIGBgbW1hcC5QUk9UX1JFQUR8bW1hcC5QUk9UX0VYRUNgYCB3b3VsZCBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYQorICBUeXBlRXJyb3IuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzk3OTU6IGFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBmb3Igbm50cGxpYi5OTlRQIGNsYXNzLgorCistIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbgorICBjZXJ0YWluIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieQorICBjaGVja2luZyBmb3IgRUFDQ0VTLCBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgorCistIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycworICBvbiBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCisKKy0gSXNzdWUgIzExMzc3OiBEZXByZWNhdGUgcGxhdGZvcm0ucG9wZW4oKSBhbmQgcmVpbXBsZW1lbnQgaXQgd2l0aCBvcy5wb3BlbigpLgorCistIElzc3VlICM4NTEzOiBPbiBVTklYLCBzdWJwcm9jZXNzIHN1cHBvcnRzIGJ5dGVzIGNvbW1hbmQgc3RyaW5nLgorCistIElzc3VlICMxMDg2NjogQWRkIHNvY2tldC5zZXRob3N0bmFtZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjMTExNDA6IExvY2sucmVsZWFzZSgpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3Igd2hlbiBhdHRlbXB0aW5nCisgIHRvIHJlbGVhc2UgYW4gdW5hY3F1aXJlZCBsb2NrLCBhcyBjbGFpbWVkIGluIHRoZSB0aHJlYWRpbmcgZG9jdW1lbnRhdGlvbi4KKyAgVGhlIF90aHJlYWQuZXJyb3IgZXhjZXB0aW9uIGlzIG5vdyBhbiBhbGlhcyBvZiBSdW50aW1lRXJyb3IuICBQYXRjaCBieQorICBGaWxpcCBHcnVzemN6ecWEc2tpLiAgUGF0Y2ggZm9yIF9kdW1teV90aHJlYWQgYnkgQXltZXJpYyBBdWd1c3Rpbi4KKworLSBJc3N1ZSAjODU5NDogZnRwbGliIG5vdyBwcm92aWRlcyBhIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdoaWNoCisgIChhZGRyZXNzLCBwb3J0KSB0byBiaW5kIHRvIGJlZm9yZSBjb25uZWN0aW5nLgorCistIElzc3VlICMxMTMyNjogQWRkIHRoZSBtaXNzaW5nIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1NMIHNvY2tldHMsCisgIGFuZCBtYWtlIGl0IHdvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KKworLSBJc3N1ZSAjMTEyOTc6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCgpLgorCistIElzc3VlICMxMDc1NTogQWRkIHRoZSBwb3NpeC5mbGlzdGRpcigpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzQ3NjE6IEFkZCB0aGUgYGAqYXQoKWBgIGZhbWlseSBvZiBmdW5jdGlvbnMgKG9wZW5hdCgpLCBldGMuKSB0byB0aGUKKyAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzczMjI6IFRyeWluZyB0byByZWFkIGZyb20gYSBzb2NrZXQncyBmaWxlLWxpa2Ugb2JqZWN0IGFmdGVyIGEgdGltZW91dAorICBvY2N1cnJlZCBub3cgcmFpc2VzIGFuIGVycm9yIGluc3RlYWQgb2Ygc2lsZW50bHkgbG9zaW5nIGRhdGEuCisKKy0gSXNzdWUgIzExMjkxOiBwb3BsaWIuUE9QIG5vIGxvbmdlciBzdXBwcmVzc2VzIGVycm9ycyBvbiBxdWl0KCkuCisKKy0gSXNzdWUgIzExMTc3OiBhc3luY29yZSdzIGNyZWF0ZV9zb2NrZXQoKSBhcmd1bWVudHMgY2FuIG5vdyBiZSBvbWl0dGVkLgorCistIElzc3VlICM2MDY0OiBBZGQgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHRocmVhZGluZy5UaHJlYWQKKyAgYW5kIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzIGNvbnN0cnVjdG9ycyBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKKyAgZGVmYXVsdCBiZWhhdmlvdXIgb2YgaW5oZXJpdGluZyB0aGUgZGFlbW9uaWMgcHJvcGVydHkgZnJvbSB0aGUgY3VycmVudAorICB0aHJlYWQvcHJvY2Vzcy4KKworLSBJc3N1ZSAjMTA5NTY6IEJ1ZmZlcmVkIEkvTyBjbGFzc2VzIHJldHJ5IHJlYWRpbmcgb3Igd3JpdGluZyBhZnRlciBhIHNpZ25hbAorICBoYXMgYXJyaXZlZCBhbmQgdGhlIGhhbmRsZXIgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LgorCistIElzc3VlICMxMDc4NDogTmV3IG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkgZnVuY3Rpb25zLgorCistIElzc3VlICMxMTExNDogRml4IGNhdGFzdHJvcGhpYyBwZXJmb3JtYW5jZSBvZiB0ZWxsKCkgb24gdGV4dCBmaWxlcyAodXAKKyAgdG8gMTAwMHggZmFzdGVyIGluIHNvbWUgY2FzZXMpLiAgSXQgaXMgc3RpbGwgb25lIHRvIHR3byBvcmRlciBvZiBtYWduaXR1ZGVzCisgIHNsb3dlciB0aGFuIGJpbmFyeSB0ZWxsKCkuCisKKy0gSXNzdWUgIzEwODgyOiBBZGQgb3Muc2VuZGZpbGUgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwODY4OiBBbGxvdyB1c2FnZSBvZiB0aGUgcmVnaXN0ZXIgbWV0aG9kIG9mIGFuIEFCQyBhcyBhIGNsYXNzCisgIGRlY29yYXRvci4KKworLSBJc3N1ZSAjMTEyMjQ6IEZpeGVkIGEgcmVncmVzc2lvbiBpbiB0YXJmaWxlIHRoYXQgYWZmZWN0ZWQgdGhlIGZpbGUtbGlrZQorICBvYmplY3RzIHJldHVybmVkIGJ5IFRhckZpbGUuZXh0cmFjdGZpbGUoKSByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIG1lbW9yeQorICBjb25zdW1wdGlvbiBhbmQgZmFpbHVyZXMgd2l0aCB0aGUgc3RyZWFtIGludGVyZmFjZS4KKworLSBJc3N1ZSAjMTA5MjQ6IEFkZGluZyBzYWx0IGFuZCBNb2R1bGFyIENyeXB0IEZvcm1hdCB0byBjcnlwdCBsaWJyYXJ5LgorICBNb3ZlZCBvbGQgQyB3cmFwcGVyIHRvIF9jcnlwdCwgYW5kIGFkZGVkIGEgUHl0aG9uIHdyYXBwZXIgd2l0aAorICBlbmhhbmNlZCBzYWx0IGdlbmVyYXRpb24gYW5kIHNpbXBsZXIgQVBJIGZvciBwYXNzd29yZCBnZW5lcmF0aW9uLgorCistIElzc3VlICMxMTA3NDogTWFrZSAndG9rZW5pemUnIHNvIGl0IGNhbiBiZSByZWxvYWRlZC4KKworLSBJc3N1ZSAjMTEwODU6IE1vdmVkIGNvbGxlY3Rpb25zIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnRvIGEgc2VwYXJhdGUKKyAgbW9kdWxlIGNhbGxlZCBjb2xsZWN0aW9ucy5hYmMsIGZvbGxvd2luZyB0aGUgcGF0dGVybiB1c2VkIGJ5IGltcG9ydGxpYi5hYmMuCisgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjb2xsZWN0aW9ucworICBtb2R1bGUuCisKKy0gSXNzdWUgIzQ2ODE6IEFsbG93IG1tYXAoKSB0byB3b3JrIG9uIGZpbGUgc2l6ZXMgYW5kIG9mZnNldHMgbGFyZ2VyIHRoYW4KKyAgNEdCLCBldmVuIG9uIDMyLWJpdCBidWlsZHMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLCBhZGFwdGVkIGZvcgorICAzMi1iaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCisgIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCisKKy0gSXNzdWUgIzExMDg5OiBGaXggcGVyZm9ybWFuY2UgaXNzdWUgbGltaXRpbmcgdGhlIHVzZSBvZiBDb25maWdQYXJzZXIoKQorICB3aXRoIGxhcmdlIGNvbmZpZyBmaWxlcy4KKworLSBJc3N1ZSAjMTAyNzY6IEZpeCB0aGUgcmVzdWx0cyBvZiB6bGliLmNyYzMyKCkgYW5kIHpsaWIuYWRsZXIzMigpIG9uIGJ1ZmZlcnMKKyAgbGFyZ2VyIHRoYW4gNEdCLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTM4ODogQWRkZWQgYSBjbGVhcigpIG1ldGhvZCB0byBNdXRhYmxlU2VxdWVuY2UKKworLSBJc3N1ZSAjMTExNzQ6IEFkZCBhcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIsIHdoaWNoIHVzZXMgdHlwZSBuYW1lcworICBmb3IgdGhlIG5hbWVzIG9mIG9wdGlvbmFsIGFuZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbiBoZWxwIG1lc3NhZ2VzLgorCistIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KKworLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCisKKy0gSXNzdWUgIzkzNDM6IERvY3VtZW50IHRoYXQgYXJncGFyc2UgcGFyZW50IHBhcnNlcnMgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZQorICB0aGVpciBjaGlsZHJlbi4KKworLSBJc3N1ZSAjOTAyNjogRml4IG9yZGVyIG9mIGFyZ3BhcnNlIHN1Yi1jb21tYW5kcyBpbiBoZWxwIG1lc3NhZ2VzLgorCistIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgorCistIElzc3VlICMxMjE5MTogQWRkZWQgc2h1dGlsLmNob3duKCkgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG93bmVyIG9mIGEKKyAgZ2l2ZW4gcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlaXIgbmFtZXMuCisKKy0gSXNzdWUgIzEzOTg4OiBUaGUgX2VsZW1lbnR0cmVlIGFjY2VsZXJhdG9yIGlzIHVzZWQgd2hlbmV2ZXIgYXZhaWxhYmxlLgorICBOb3cgeG1sLmV0cmVlLmNFbGVtZW50VHJlZSBiZWNvbWVzIGEgZGVwcmVjYXRlZCBhbGlhcyB0byBFbGVtZW50VHJlZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgorCistIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCisKKy0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KKworLSBQRVAgMzkzOiB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2lkZS11bmljb2RlIGlzIHJlbW92ZWQuCisKKy0gSXNzdWUgIzEyODUyOiBTZXQgX1hPUEVOX1NPVVJDRSB0byA3MDAsIGluc3RlYWQgb2YgNjAwLCB0byBnZXQgUE9TSVggMjAwOAorICBmdW5jdGlvbnMgb24gT3BlbkJTRCAoZS5nLiBmZG9wZW5kaXIpLgorCistIElzc3VlICMxMTg2MzogUmVtb3ZlIHN1cHBvcnQgZm9yIGxlZ2FjeSBzeXN0ZW1zIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMgorICAoZm9sbG93aW5nIFBFUCAxMSkuICBUaGVzZSBzeXN0ZW1zIGFyZSBzeXN0ZW1zIHVzaW5nIE1hY2ggQyBUaHJlYWRzLAorICBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMsIEdOVSBwdGggdGhyZWFkcyBhbmQgSVJJWCB0aHJlYWRzLgorCistIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAorICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlCisgIGZ1bmN0aW9ucyAoQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFgKKyAgKFVGX0hJRERFTiBhbmQgVUZfQ09NUFJFU1NFRCkuCisKKy0gSXNzdWUgIzEwNjQ1OiBJbnN0YWxsaW5nIFB5dGhvbiBubyBsb25nZXIgY3JlYXRlcyBhCisgIFB5dGhvbi1YLlkuWi1weVguWS5lZ2ctaW5mbyBmaWxlIGluIHRoZSBsaWItZHlubG9hZCBkaXJlY3RvcnkuCisKKy0gRG8gbm90IGFjY2lkZW50YWxseSBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBzcWxpdGUuaCB0d2ljZSB3aGVuCisgIGJ1aWxkaW5nIHNxbGl0ZTMuCisKKy0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywKKyAgZW5zdXJlICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIKKyAgZmlsZXMgaW4gdGhlIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgorCistIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgorCistIElzc3VlICMxMTQxMTogRml4ICdtYWtlIERFU1RESVI9JyB3aXRoIGEgcmVsYXRpdmUgZGVzdGluYXRpb24uCisKKy0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24KKyAgcGFja2FnZSBoYWQgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTE0OTU6IE9TRiBzdXBwb3J0IGlzIGVsaW1pbmF0ZWQuIEl0IHdhcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIuCisKKworSURMRQorLS0tLQorCistIElzc3VlICMxMTcxODogSURMRSdzIG9wZW4gbW9kdWxlIGRpYWxvZyBjb3VsZG4ndCBmaW5kIHRoZSBfX2luaXRfXy5weQorICBmaWxlIGluIGEgcGFja2FnZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0MDUzOiBwYXRjaGNoZWNrLnB5ICgibWFrZSBwYXRjaGNoZWNrIikgbm93IHdvcmtzIHdpdGggTVEgcGF0Y2hlcy4KKyAgUGF0Y2ggYnkgRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqS4KKworLSBJc3N1ZSAjMTM5MzA6IDJ0bzMgaXMgbm93IGFibGUgdG8gd3JpdGUgaXRzIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgorICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQorICBzdWZmaXguICBTZWUgaXRzIG5ldyAtbywgLVcgYW5kIC0tYWRkLXN1ZmZpeCBvcHRpb25zLiAgVGhpcyBtYWtlcyBpdCBtb3JlCisgIHVzZWZ1bCBpbiBtYW55IGF1dG9tYXRlZCBjb2RlIHRyYW5zbGF0aW9uIHdvcmtmbG93cy4KKworLSBJc3N1ZSAjMTM2Mjg6IHB5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbgorICB0cmFjZWJhY2sgaWYgUHl0aG9uIGlzIG9wdGltaXplZC4KKworLSBJc3N1ZSAjMTE5OTY6IGxpYnB5dGhvbiAoZ2RiKSwgcmVwbGFjZSAicHktYnQiIGNvbW1hbmQgYnkgInB5LWJ0LWZ1bGwiIGFuZAorICBhZGQgYSBzbWFydGVyICJweS1idCIgY29tbWFuZCBwcmludGluZyBhIGNsYXNzaWMgUHl0aG9uIHRyYWNlYmFjay4KKworLSBJc3N1ZSAjMTExNzk6IE1ha2UgY2NiZW5jaCB3b3JrIHVuZGVyIFB5dGhvbiAzLjEgYW5kIDIuNyBhZ2Fpbi4KKworLSBJc3N1ZSAjMTA2Mzk6IHJlaW5kZW50LnB5IG5vIGxvbmdlciBjb252ZXJ0cyBuZXdsaW5lcyBhbmQgd2lsbCByYWlzZQorICBhbiBlcnJvciBpZiBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgYSBmaWxlIHdpdGggbWl4ZWQgbmV3bGluZXMuCisgICItLW5ld2xpbmUiIG9wdGlvbiBhZGRlZCB0byBzcGVjaWZ5IG5ldyBsaW5lIGNoYXJhY3Rlci4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEzODQwOiBUaGUgZXJyb3IgbWVzc2FnZSBwcm9kdWNlZCBieSBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIKKyAgd2hlbiBnaXZlbiBhIFVuaWNvZGUgc3RyaW5nIGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICM5OTc1OiBzb2NrZXQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGZsb3dpbmZvIGFuZCBzY29wZV9pZC4gUGF0Y2ggYnkKKyAgVmlsbW9zIE5lYmVoYWouCisKKy0gSXNzdWUgIzc3Nzc6IHNvY2tldDogQWRkIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKFBGX1JEUykgc3VwcG9ydC4KKworLSBJc3N1ZSAjMTMxNTk6IEZpbGVJTyBhbmQgQloyQ29tcHJlc3Nvci9CWjJEZWNvbXByZXNzb3Igbm93IHVzZSBhIGxpbmVhci10aW1lCisgIGJ1ZmZlciBncm93dGggc3RyYXRlZ3kgaW5zdGVhZCBvZiBhIHF1YWRyYXRpYy10aW1lIG9uZS4KKworLSBJc3N1ZSAjMTAxNDE6IHNvY2tldDogQWRkIFNvY2tldENBTiAoUEZfQ0FOKSBzdXBwb3J0LiBJbml0aWFsIHBhdGNoIGJ5CisgIE1hdHRoaWFzIEZ1Y2hzLCB1cGRhdGVkIGJ5IFRpYWdvIEdvbsOnYWx2ZXMuCisKKy0gSXNzdWUgIzEzMDcwOiBGaXggYSBjcmFzaCB3aGVuIGEgVGV4dElPV3JhcHBlciBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUKKyAgd291bGQgYmUgZmluYWxpemVkIGFmdGVyIHRoZSByZWZlcmVuY2UgdG8gaXRzIHVuZGVybHlpbmcgQnVmZmVyZWRSV1BhaXIncworICB3cml0ZXIgZ290IGNsZWFyZWQgYnkgdGhlIEdDLgorCistIElzc3VlICMxMjg4MTogY3R5cGVzOiBGaXggc2VnZmF1bHQgd2l0aCBsYXJnZSBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMuCisKKy0gSXNzdWUgIzEzMDU4OiBvc3NhdWRpb2RldjogZml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gZXJyb3IuIFBhdGNoIGJ5CisgIFRob21hcyBKYXJvc2NoLgorCistIElzc3VlICMxMzAxMzogY3R5cGVzOiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiBQeUNBcnJheVR5cGVfZnJvbV9jdHlwZS4KKyAgVGhhbmtzIHRvIFN1bWFuIFNhaGEgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIGEgcGF0Y2guCisKKy0gSXNzdWUgIzEzMDIyOiBGaXg6IF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKCkgZG9lc24ndCBjaGVjayB0aGF0CisgIGZpbGUgZGVzY3JpcHRvciB3YXMgYWN0dWFsbHkgcmVjZWl2ZWQuCisKKy0gSXNzdWUgIzExNzI3MTE6IEFkZCAnbG9uZyBsb25nJyBzdXBwb3J0IHRvIHRoZSBhcnJheSBtb2R1bGUuCisgIEluaXRpYWwgcGF0Y2ggYnkgT3JlbiBUaXJvc2ggYW5kIEhpcm9rYXp1IFlhbWFtb3RvLgorCistIElzc3VlICMxMjQ4MzogY3R5cGVzOiBGaXggYSBjcmFzaCB3aGVuIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGNhbGxiYWNrCisgIG9iamVjdCB0cmlnZ2VycyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisKKy0gSXNzdWUgIzEyOTUwOiBGaXggcGFzc2luZyBmaWxlIGRlc2NyaXB0b3JzIGluIG11bHRpcHJvY2Vzc2luZywgdW5kZXIKKyAgT3BlbkluZGlhbmEvSWxsdW1vcy4KKworLSBJc3N1ZSAjMTI3NjQ6IEZpeCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHRoZSBuYW1lIG9mIGEgU3RydWN0dXJlIGZpZWxkIGlzIG5vdAorICBhIHN0cmluZy4KKworLSBJc3N1ZSAjMTEyNDE6IHN1YmNsYXNzZXMgb2YgY3R5cGVzLkFycmF5IGNhbiBub3cgYmUgc3ViY2xhc3NlZC4KKworLSBJc3N1ZSAjOTY1MTogRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0bworICBzb21lIGZ1bmN0aW9ucyBsaWtlIGZpbGUud3JpdGUoKS4KKworLSBJc3N1ZSAjMTAzMDk6IERlZmluZSBfR05VX1NPVVJDRSBzbyB0aGF0IG1yZW1hcCgpIGdldHMgdGhlIHByb3BlcgorICBzaWduYXR1cmUuICBXaXRob3V0IHRoaXMsIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mIHZvaWQqICE9IHNpemVvZiBpbnQgYXJlCisgIGJyb2tlbi4gIFBhdGNoIGdpdmVuIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKKy0gSXNzdWUgIzEyMDUxOiBGaXggc2VnZmF1bHQgaW4ganNvbi5kdW1wcygpIHdoaWxlIGVuY29kaW5nIGhpZ2hseS1uZXN0ZWQKKyAgb2JqZWN0cyB1c2luZyB0aGUgQyBhY2NlbGVyYXRpb25zLgorCistIElzc3VlICMxMjAxNzogRml4IHNlZ2ZhdWx0IGluIGpzb24ubG9hZHMoKSB3aGlsZSBkZWNvZGluZyBoaWdobHktbmVzdGVkCisgIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KKworLSBJc3N1ZSAjMTgzODogUHJldmVudCBzZWdmYXVsdCBpbiBjdHlwZXMsIHdoZW4gX2FzX3BhcmFtZXRlcl8gb24gYSBjbGFzcyBpcyBzZXQKKyAgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0CisKKy0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCisKKy0gSXNzdWUgIzEzNzI1OiBGaXggcmVncnRlc3QgdG8gcmVjb2duaXplIHRoZSBkb2N1bWVudGVkIC1kIGZsYWcuCisgIFBhdGNoIGJ5IEVybm8gVHVraWEuCisKKy0gSXNzdWUgIzEzMzA0OiBTa2lwIHRlc3QgY2FzZSBpZiB1c2VyIHNpdGUtcGFja2FnZXMgZGlzYWJsZWQgKC1zIG9yCisgIFBZVEhPTk5PVVNFUlNJVEUpLiAgKFBhdGNoIGJ5IENhcmwgTWV5ZXIpCisKKy0gSXNzdWUgIzU2NjE6IEFkZCBhIHRlc3QgZm9yIEVDT05OUkVTRVQvRVBJUEUgaGFuZGxpbmcgdG8gdGVzdF9hc3luY29yZS4gUGF0Y2gKKyAgYnkgWGF2aWVyIGRlIEdheWUuCisKKy0gSXNzdWUgIzEzMjE4OiBGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KKworLSBSZS1lbmFibGUgbGliMnRvMydzIHRlc3RfcGFyc2VyLnB5IHRlc3RzLCB0aG91Z2ggd2l0aCBhbiBleHBlY3RlZCBmYWlsdXJlCisgIChzZWUgaXNzdWUgMTMxMjUpLgorCistIElzc3VlICMxMjY1NjogQWRkIHRlc3RzIGZvciBJUHY2IGFuZCBVbml4IHNvY2tldHMgdG8gdGVzdF9hc3luY29yZS4KKworLSBJc3N1ZSAjNjQ4NDogQWRkIHVuaXQgdGVzdHMgZm9yIG1haWxjYXAgbW9kdWxlIChwYXRjaCBieSBHcmVnb3J5IE5vZmkpCisKKy0gSXNzdWUgIzExNjUxOiBJbXByb3ZlIHRoZSBNYWtlZmlsZSB0ZXN0IHRhcmdldHMgdG8gcnVuIG1vcmUgb2YgdGhlIHRlc3Qgc3VpdGUKKyAgbW9yZSBxdWlja2x5LiBUaGUgLS1tdWx0aXByb2Nlc3Mgb3B0aW9uIGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHJlZHVjaW5nCisgIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcnVuIHRoZSB0ZXN0cy4gIm1ha2UgdGVzdCIgYW5kICJtYWtlIHF1aWNrdGVzdCIKKyAgbm93IGluY2x1ZGUgc29tZSByZXNvdXJjZS1pbnRlbnNpdmUgdGVzdHMsIGJ1dCBubyBsb25nZXIgcnVuIHRoZSB0ZXN0IHN1aXRlCisgIHR3aWNlIHRvIGNoZWNrIGZvciBidWdzIGluIC5weWMgZ2VuZXJhdGlvbi4gVG9vbHMvc2NyaXB0cy9ydW5fdGVzdC5weSBwcm92aWRlcworICBhbiBlYXN5IHBsYXRmb3JtLWluZGVwZW5kZW50IHdheSB0byBydW4gdGVzdCBzdWl0ZSB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgorCistIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIHRoZSBwYWNrYWdpbmcgbW9kdWxlIGNhbiBub3cgcnVuIGZyb20gYW4KKyAgaW5zdGFsbGVkIFB5dGhvbi4KKworLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciBsaWIydG8zIGNhbiBub3cgcnVuIGZyb20gYW4gaW5zdGFsbGVkCisgIFB5dGhvbi4KKworLSBJc3N1ZSAjMTI2MjY6IEluIHJlZ3J0ZXN0LCBhbGxvdyB0byBmaWx0ZXIgdGVzdHMgdXNpbmcgYSBnbG9iIGZpbHRlcgorICB3aXRoIHRoZSBgYC1tYGAgKG9yIGBgLS1tYXRjaGBgKSBvcHRpb24uICBUaGlzIHdvcmtzIHdpdGggYWxsIHRlc3QgY2FzZXMKKyAgdXNpbmcgdGhlIHVuaXR0ZXN0IG1vZHVsZS4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcworICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICMxMjYyNDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGZhaWwgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUgd2hlbgorICBydW5uaW5nIGluIHZlcmJvc2UgbW9kZSAoYGAtdmBgIG9yIGBgLVdgYCksIGJ5IHVzaW5nIHRoZSBgYC0tZmFpbGZhc3RgYAorICAob3IgYGAtR2BgKSBvcHRpb24gdG8gcmVncnRlc3QuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKKyAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTI1ODc6IENvcnJlY3QgZmF1bHR5IHRlc3QgZmlsZSBhbmQgcmVmZXJlbmNlIGluIHRlc3RfdG9rZW5pemUuCisgIChQYXRjaCBieSBSb2JlcnQgWGlhbykKKworLSBJc3N1ZSAjMTI1NzM6IEFkZCByZXNvdXJjZSBjaGVja3MgZm9yIGRhbmdsaW5nIFRocmVhZCBhbmQgUHJvY2VzcyBvYmplY3RzLgorCistIElzc3VlICMxMjU0OTogQ29ycmVjdCB0ZXN0X3BsYXRmb3JtIHRvIG5vdCBmYWlsIHdoZW4gT1MgWCByZXR1cm5zICd4ODZfNjQnCisgIGFzIHRoZSBwcm9jZXNzb3IgdHlwZSBvbiBzb21lIE1hYyBzeXN0ZW1zLgorCistIFNraXAgbmV0d29yayB0ZXN0cyB3aGVuIGdldGFkZHJpbmZvKCkgcmV0dXJucyBFQUlfQUdBSU4sIG1lYW5pbmcgYSB0ZW1wb3JhcnkKKyAgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uCisKKy0gSXNzdWUgIzExODEyOiBTb2x2ZSB0cmFuc2llbnQgc29ja2V0IGZhaWx1cmUgdG8gY29ubmVjdCB0byAnbG9jYWxob3N0JworICBpbiB0ZXN0X3RlbG5ldGxpYi5weS4KKworLSBTb2x2ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gdGVzdF90ZWxuZXRsaWIucHkuIFJlbGF0ZWQgdG8gaXNzdWUgIzExODEyLgorCistIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF9yb2JvdHBhcnNlciB3aGVuIG11ZWJsZXNtb3JhbGVkYS5jb20gaXMgZmxha3kgYW5kCisgIGFuIG92ZXJ6ZWFsb3VzIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlZGlyZWN0cyB0byBhIHBsYWNlaG9sZGVyCisgIFdlYiBzaXRlLgorCistIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF91cmxsaWJuZXQudGVzdF9iYWRfYWRkcmVzcyB3aGVuIHNvbWUgb3ZlcnplYWxvdXMKKyAgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVzb2x2ZXMgYSBub24tZXhpc3RlbnQgZG9tYWluIG5hbWUuICBUaGUgdGVzdAorICBpcyBub3cgc2tpcHBlZCBpbnN0ZWFkLgorCistIElzc3VlICMxMjQ0MDogV2hlbiB0ZXN0aW5nIHdoZXRoZXIgc29tZSBiaXRzIGluIFNTTENvbnRleHQub3B0aW9ucyBjYW4gYmUKKyAgcmVzZXQsIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGhlYWRlcnMgUHl0aG9uIHdhcyBjb21waWxlZCBhZ2FpbnN0LAorICByYXRoZXIgdGhhbiB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGxpYnJhcnkuCisKKy0gSXNzdWUgIzExNTEyOiBBZGQgYSB0ZXN0IHN1aXRlIGZvciB0aGUgY2dpdGIgbW9kdWxlLiBQYXRjaCBieSBSb2JiaWUgQ2xlbW9ucy4KKworLSBJc3N1ZSAjMTI0OTc6IEluc3RhbGwgdGVzdC9kYXRhIHRvIHByZXZlbnQgZmFpbHVyZXMgb2YgdGhlIHZhcmlvdXMgY29kZWNtYXBzCisgIHRlc3RzLgorCistIElzc3VlICMxMjQ5NjogSW5zdGFsbCB0ZXN0L2NhcGF0aCBkaXJlY3RvcnkgdG8gcHJldmVudCB0ZXN0X2Nvbm5lY3RfY2FwYXRoCisgIHRlc3RjYXNlIGZhaWx1cmUgaW4gdGVzdF9zc2wuCisKKy0gSXNzdWUgIzEyNDY5OiBSdW4gd2FrZXVwIGFuZCBwZW5kaW5nIHNpZ25hbCB0ZXN0cyBpbiBhIHN1YnByb2Nlc3MgdG8gcnVuIHRoZQorICB0ZXN0IGluIGEgZnJlc2ggcHJvY2VzcyB3aXRoIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwKKyAgaGFuZGxpbmcgb2YgdGhlIHBhcmVudCBwcm9jZXNzLgorCistIElzc3VlICM4NzE2OiBBdm9pZCBjcmFzaGVzIGNhdXNlZCBieSBBcXVhIFRrIG9uIE9TWCB3aGVuIGF0dGVtcHRpbmcgdG8gcnVuCisgIHRlc3RfdGsgb3IgdGVzdF90dGtfZ3Vpb25seSB1bmRlciBhIHVzZXJuYW1lIHRoYXQgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQKKyAgaW4gdG8gdGhlIGNvbnNvbGUgd2luZG93c2VydmVyIChhcyBtYXkgYmUgdGhlIGNhc2UgdW5kZXIgYnVpbGRib3Qgb3Igc3NoKS4KKworLSBJc3N1ZSAjMTI0MDc6IEV4cGxpY2l0bHkgc2tpcCB0ZXN0X2NhcGkuRW1iZWRkaW5nVGVzdCB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxMjQwMDogcmVncnRlc3QgLVcgZG9lc24ndCByZXJ1biB0aGUgdGVzdHMgdHdpY2UgYW55bW9yZSwgYnV0IGNhcHR1cmVzCisgIHRoZSBvdXRwdXQgYW5kIGRpc3BsYXlzIGl0IG9uIGZhaWx1cmUgaW5zdGVhZC4gcmVncnRlc3QgLXYgZG9lc24ndCBwcmludCB0aGUKKyAgZXJyb3IgdHdpY2UgYW55bW9yZSBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4KKworLSBJc3N1ZSAjMTIxNDE6IEluc3RhbGwgY29waWVzIG9mIHRlbXBsYXRlIEMgbW9kdWxlIGZpbGUgc28gdGhhdAorICB0ZXN0X2J1aWxkX2V4dCBvZiB0ZXN0X2Rpc3R1dGlscyBhbmQgdGVzdF9jb21tYW5kX2J1aWxkX2V4dCBvZgorICB0ZXN0X3BhY2thZ2luZyBhcmUgbm8gbG9uZ2VyIHNpbGVudGx5IHNraXBwZWQgd2hlbgorICBydW4gb3V0c2lkZSBvZiBhIGJ1aWxkIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjODc0NjogQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIG9zLmNoZmxhZ3MoKSBhbmQgb3MubGNoZmxhZ3MoKS4KKyAgUGF0Y2ggYnkgR2FycmV0dCBDb29wZXIuCisKKy0gSXNzdWUgIzEwNzM2OiBGaXggdGVzdF90dGsgdGVzdF93aWRnZXRzIGZhaWx1cmVzIHdpdGggQ29jb2EgVGsgOC41LjkKKyAgMi44ICsgIG9uIE1hYyBPUyBYLiAgKFBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKKworLSBJc3N1ZSAjMTIwNTc6IEFkZCB0ZXN0cyBmb3IgSVNPIDIwMjIgY29kZWNzIChpc28yMDIyX2pwLCBpc28yMDIyX2pwXzIsCisgIGlzbzIwMjJfa3IpLgorCistIElzc3VlICMxMjA5NjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGVzdF90aHJlYWRpbmcudGVzdF93YWl0Zm9yKCkuIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMTYxNDogaW1wb3J0IF9faGVsbG9fXyBwcmludHMgIkhlbGxvIFdvcmxkISIuIFBhdGNoIHdyaXR0ZW4gYnkKKyAgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICM1NzIzOiBJbXByb3ZlIGpzb24gdGVzdHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zLgorCistIElzc3VlICMxMjA0MTogTWFrZSB0ZXN0X3dhaXQzIG1vcmUgcm9idXN0LgorCistIElzc3VlICMxMTg3MzogQ2hhbmdlIHJlZ2V4IGluIHRlc3RfY29tcGlsZWFsbCB0byBmaXggb2NjYXNpb25hbCBmYWlsdXJlcyB3aGVuCisgIHdoZW4gdGhlIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZW1wb3JhcnkgcGF0aCBoYXBwZW5lZCB0byBtYXRjaCB0aGUgcmVnZXguCisKKy0gSXNzdWUgIzExOTU4OiBGaXggRlRQIHRlc3RzIGZvciBJUHY2LCBiaW5kIHRvICI6OjEiIGluc3RlYWQgb2YgImxvY2FsaG9zdCIuCisgIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzg0MDcsICMxMTg1OTogRml4IHRlc3RzIG9mIHRlc3RfaW8gdXNpbmcgdGhyZWFkcyBhbmQgYW4gYWxhcm06IHVzZQorICBwdGhyZWFkX3NpZ21hc2soKSB0byBlbnN1cmUgdGhhdCB0aGUgU0lHQUxSTSBzaWduYWwgaXMgcmVjZWl2ZWQgYnkgdGhlIG1haW4KKyAgdGhyZWFkLgorCistIElzc3VlICMxMTgxMTogRmFjdG9yIG91dCBkZXRlY3Rpb24gb2YgSVB2NiBzdXBwb3J0IG9uIHRoZSBjdXJyZW50IGhvc3QKKyAgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIGFzIGBgdGVzdC5zdXBwb3J0LklQVjZfRU5BQkxFRGBgLiAgUGF0Y2ggYnkKKyAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMDkxNDogQWRkIGEgbWluaW1hbCBlbWJlZGRpbmcgdGVzdCB0byB0ZXN0X2NhcGkuCisKKy0gSXNzdWUgIzExMjIzOiBTa2lwIHRlc3RfbG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIGFuZAorICB0ZXN0X3Jsb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgb2YgdGVzdF90aHJlYWRzaWduYWxzIGlmIGEgdGhyZWFkIGxvY2sgaXMKKyAgaW1wbGVtZW50ZWQgdXNpbmcgYSBQT1NJWCBtdXRleCBhbmQgYSBQT1NJWCBjb25kaXRpb24gdmFyaWFibGUuIEEgUE9TSVgKKyAgY29uZGl0aW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZS5nLiBvbiBMaW51eCwgdGhlCisgIGZ1dGV4IHN5c3RlbSBjYWxsIGlzIHJlc3RhcnRlZCkuCisKKy0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCisKKy0gRml4IHBvc3NpYmxlICJmaWxlIGFscmVhZHkgZXhpc3RzIiBlcnJvciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHBhcmFsbGVsLgorCistIElzc3VlICMxMTcxOTogRml4IG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCB0ZXN0X21zaWxpYiBza2lwIG9uIG5vbi1XaW5kb3dzCisgIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTcyNzogQWRkIGEgLS10aW1lb3V0IG9wdGlvbiB0byByZWdydGVzdDogaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgorICBUSU1FT1VUIHNlY29uZHMsIGR1bXBzIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgYW5kIGV4aXRzLgorCistIElzc3VlICMxMTY1MzogZml4IC1XIHdpdGggLWogaW4gcmVncnRlc3QuCisKKy0gVGhlIGVtYWlsIHRlc3Qgc3VpdGUgbm93IGxpdmVzIGluIHRoZSBMaWIvdGVzdC90ZXN0X2VtYWlsIHBhY2thZ2UuICBUaGUgdGVzdAorICBoYXJuZXNzIGNvZGUgaGFzIGFsc28gYmVlbiBtb2Rlcm5pemVkIHRvIGFsbG93IHVzZSBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMuCisKKy0gcmVncnRlc3Qgbm93IGRpc2NvdmVycyB0ZXN0IHBhY2thZ2VzIGFzIHdlbGwgYXMgdGVzdCBtb2R1bGVzLgorCistIElzc3VlICMxMTU3NzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIGJpbmhleC5weS4gUGF0Y2ggYnkgQXJrYWR5IEtvcGx5YXJvdi4KKworLSBOZXcgdGVzdF9jcmFzaGVycyBhZGRlZCB0byBleGVyY2lzZSB0aGUgc2NyaXB0cyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMKKyAgZGlyZWN0b3J5IGFuZCBjb25maXJtIHRoZXkgZmFpbCBhcyBleHBlY3RlZAorCistIElzc3VlICMxMTU3ODogYWRkZWQgdGVzdCBmb3IgdGhlIHRpbWVpdCBtb2R1bGUuICBQYXRjaCBieSBNaWNoYWVsIEhlbnJ5LgorCistIElzc3VlICMxMTUwMzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHBvc2l4cGF0aC5weS4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgorCistIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHksIGluY3JlYXNlcyBncmFudWxhcml0eSBvZgorICBzdHJpbmcuRm9ybWF0dGVyIHRlc3RzLiBJbml0aWFsIHBhdGNoIGJ5IEFsaWNpYSBBcmxlbi4KKworLSBJc3N1ZSAjMTE1NDg6IEltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiB0aGUgc2h1dGlsIG1vZHVsZS4gUGF0Y2ggYnkKKyAgRXZhbiBEYW5kcmVhLgorCistIElzc3VlICMxMTU1NDogUmVhY3RpdmF0ZWQgdGVzdF9lbWFpbF9jb2RlY3MuCisKKy0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weS4gUGF0Y2ggYnkgQWxpY2lhCisgIEFybGVuCisKKy0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQorICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgorCistIElzc3VlICMxMTIyMzogRml4IHRlc3RfdGhyZWFkc2lnbmFscyB0byBmYWlsLCBub3QgaGFuZywgd2hlbiB0aGUKKyAgbm9uLXNlbWFwaG9yZSBpbXBsZW1lbnRhdGlvbiBvZiBsb2NrcyBpcyB1c2VkIHVuZGVyIFBPU0lYLgorCistIElzc3VlICMxMDkxMTogQWRkIHRlc3RzIG9uIENHSSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiBQYXRjaCB3cml0dGVuIGJ5CisgIFBpZXJyZSBRdWVudGVsLgorCistIElzc3VlICM5OTMxOiBGaXggaGFuZ3MgaW4gR1VJIHRlc3RzIHVuZGVyIFdpbmRvd3MgaW4gY2VydGFpbiBjb25kaXRpb25zLgorICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTA1MTI6IFByb3Blcmx5IGNsb3NlIHNvY2tldHMgdW5kZXIgdGVzdC50ZXN0X2NnaS4KKworLSBJc3N1ZSAjMTA5OTI6IE1ha2UgdGVzdHMgcGFzcyB1bmRlciBjb3ZlcmFnZS4KKworLSBJc3N1ZSAjMTA4MjY6IFByZXZlbnQgc3BvcmFkaWMgZmFpbHVyZSBpbiB0ZXN0X3N1YnByb2Nlc3Mgb24gU29sYXJpcyBkdWUKKyAgdG8gb3BlbiBkb29yIGZpbGVzLgorCistIElzc3VlICMxMDk5MDogUHJldmVudCB0ZXN0cyBmcm9tIGNsb2JiZXJpbmcgYSBzZXQgdHJhY2UgZnVuY3Rpb24uCisKK0MtQVBJCistLS0tLQorCistIEFkZCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCBhbmQgUHlPYmplY3RfR2VuZXJpU2V0RGljdC4gVGhleSBhcmUgZ2VuZXJpYworICBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBnZXR0ZXIgYW5kIHNldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yIG9mIEMKKyAgdHlwZXMuCisKKy0gSXNzdWUgIzEzNzI3OiBBZGQgMyBtYWNyb3MgdG8gYWNjZXNzIFB5RGF0ZVRpbWVfRGVsdGEgbWVtYmVyczoKKyAgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUywgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUywKKyAgUHlEYXRlVGltZV9ERUxUQV9HRVRfTUlDUk9TRUNPTkRTLgorCistIElzc3VlICMxMDU0MjogQWRkIDQgbWFjcm9zIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzOiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURSwKKyAgUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSwgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFLAorICBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUy4KKworLSBJc3N1ZSAjMTI3MjQ6IEFkZCBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQgbWFjcm8gZm9yIHJldHVybmluZyBOb3RJbXBsZW1lbnRlZC4KKworLSBQWV9QQVRDSExFVkVMX1JFVklTSU9OIGhhcyBiZWVuIHJlbW92ZWQsIHNpbmNlIGl0J3MgbWVhbmluZ2xlc3Mgd2l0aAorICBNZXJjdXJpYWwuCisKKy0gSXNzdWUgIzEyMTczOiBUaGUgZmlyc3QgYXJndW1lbnQgb2YgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwgaXMgbm93IGBjb25zdAorICBjaGFyICpgIGluc3RlYWQgb2YgYGNoYXIgKmAuCisKKy0gSXNzdWUgIzEyMzgwOiBQeUFyZ19QYXJzZVR1cGxlIG5vdyBhY2NlcHRzIGEgYnl0ZWFycmF5IGZvciB0aGUgJ2MnIGZvcm1hdC4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KKyAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgorCistIElzc3VlICMxMzQwMjogRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgorCistIElzc3VlICMxMzg4MzogUFlUSE9OQ0FTRU9LIGFsc28gd29ya3Mgb24gT1MgWC4KKworLSBJc3N1ZSAjOTAyMTogQWRkIGFuIGludHJvZHVjdGlvbiB0byB0aGUgY29weSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjNjAwNTogRXhhbXBsZXMgaW4gdGhlIHNvY2tldCBsaWJyYXJ5IGRvY3VtZW50YXRpb24gdXNlIHNlbmRhbGwsIHdoZXJlCisgIHJlbGV2YW50LCBpbnN0ZWFkIHNlbmQgbWV0aG9kLgorCistIElzc3VlICMxMjc5ODogVXBkYXRlZCB0aGUgbWltZXR5cGVzIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzEyOTQ5OiBEb2N1bWVudCB0aGUga3dvbmx5YXJnY291bnQgYXJndW1lbnQgZm9yIHRoZSBQeUNvZGVfTmV3CisgIEMgQVBJIGZ1bmN0aW9uLgorCistIElzc3VlICMxMzUxMzogRml4IGlvLklPQmFzZSBkb2N1bWVudGF0aW9uIHRvIGNvcnJlY3RseSBsaW5rIHRvIHRoZQorICBpby5JT0Jhc2UucmVhZGxpbmUgbWV0aG9kIGluc3RlYWQgb2YgdGhlIHJlYWRsaW5lIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyMzc6IFJlb3JnYW5pc2Ugc3VicHJvY2VzcyBkb2N1bWVudGF0aW9uIHRvIGVtcGhhc2lzZSBjb252ZW5pZW5jZQorICBmdW5jdGlvbnMgYW5kIHRoZSBtb3N0IGNvbW1vbmx5IG5lZWRlZCBhcmd1bWVudHMgdG8gUG9wZW4uCisKKy0gSXNzdWUgIzEzMTQxOiBEZW1vbnN0cmF0ZSByZWNvbW1lbmRlZCBzdHlsZSBmb3Igc29ja2V0c2VydmVyIGV4YW1wbGVzLgorCistIElzc3VlICMxMTgxODogRml4IHRlbXBmaWxlIGV4YW1wbGVzIGZvciBQeXRob24gMy4KKworCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjI/CiA9PT09PT09PT09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCBkYjhhNDE4Li41YzczNDc5IDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0yLDQ1ICsyLDExMiBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjAgQWxwaGEgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSpOb3QgeWV0IHJlbGVhc2VkLCBzZWUgc2VjdGlvbnMgYmVsb3cgZm9yIGNoYW5nZXMgcmVsZWFzZWQgaW4gMy4zLjIqCi0KLS4uICpSZWxlYXNlIGRhdGU6IFRCRCoKK1Byb2plY3RlZCBSZWxlYXNlIGRhdGU6IDIwMTMtMDktMDgKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE2NDk5OiBBZGQgY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgaXNvbGF0ZWQgbW9kZS4KKworLSBJc3N1ZSAjMTUzMDE6IFBhcnNpbmcgZmQsIHVpZCwgYW5kIGdpZCBwYXJhbWV0ZXJzIGZvciBidWlsdGlucworICBpbiBNb2R1bGVzL3Bvc2l4bW9kdWxlLmMgaXMgbm93IGZhciBtb3JlIHJvYnVzdC4KKwogLSBJc3N1ZSAjMTgzNjg6IFB5T1NfU3RkaW9SZWFkbGluZSgpIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgd2hlbiByZWFsbG9jKCkKLSAgZmFpbHMuCisgIGZhaWwuCisKKy0gSXNzdWUgIzE3OTM0OiBBZGQgYSBjbGVhcigpIG1ldGhvZCB0byBmcmFtZSBvYmplY3RzLCB0byBoZWxwIGNsZWFuIHVwCisgIGV4cGVuc2l2ZSBkZXRhaWxzIChsb2NhbCB2YXJpYWJsZXMpIGFuZCBicmVhayByZWZlcmVuY2UgY3ljbGVzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzgxMTI6IHhsbXJwYy5zZXJ2ZXIncyBEb2NYTUxSUENTZXJ2ZXIgc2VydmVyIG5vIGxvbmdlciByYWlzZXMgYW4gZXJyb3IKKyAgaWYgbWV0aG9kcyBoYXZlIGFubm90YXRpb25zOyBpdCBub3cgY29ycmVjdGx5IGRpc3BsYXlzIHRoZSBhbm5vdGF0aW9ucy4KKworLSBJc3N1ZSAjMTg2MDA6IEFkZGVkIHBvbGljeSBhcmd1bWVudCB0byBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nLAorICBhbmQgYXNfYnl0ZXMgYW5kIF9fYnl0ZXNfXyBtZXRob2RzIHRvIE1lc3NhZ2UuCisKKy0gSXNzdWUgIzE4NjcxOiBPdXRwdXQgbW9yZSBpbmZvcm1hdGlvbiB3aGVuIGxvZ2dpbmcgZXhjZXB0aW9ucyBvY2N1ci4KKworLSBJc3N1ZSAjMTg2MjE6IFByZXZlbnQgdGhlIHNpdGUgbW9kdWxlJ3MgcGF0Y2hlZCBidWlsdGlucyBmcm9tIGtlZXBpbmcKKyAgdG9vIG1hbnkgcmVmZXJlbmNlcyBhbGl2ZSBmb3IgdG9vIGxvbmcuCisKKy0gSXNzdWUgIzQ4ODU6IEFkZCB3ZWFrcmVmIHN1cHBvcnQgdG8gbW1hcCBvYmplY3RzLiAgUGF0Y2ggYnkgVmFsZXJpZSBMYW1iZXJ0LgorCistIElzc3VlICM4ODYwOiBGaXhlZCByb3VuZGluZyBpbiB0aW1lZGVsdGEgY29uc3RydWN0b3IuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjAgQWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxMy0wOC0wMworCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KIAogLSBJc3N1ZSAjMTY3NDE6IEZpeCBhbiBlcnJvciByZXBvcnRpbmcgaW4gaW50KCkuCiAKIC0gSXNzdWUgIzE3ODk5OiBGaXggcmFyZSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBvcy5saXN0ZGlyKCkuCiAKKy0gSXNzdWUgIzkwMzU6IGlzbW91bnQgbm93IHJlY29nbmlzZXMgdm9sdW1lcyBtb3VudGVkIGJlbG93IGEgZHJpdmUgcm9vdAorICBvbiBXaW5kb3dzLiBPcmlnaW5hbCBwYXRjaCBieSBBdHN1byBJc2hpbW90by4KKworLSBJc3N1ZSAjMTgyMTQ6IEltcHJvdmUgZmluYWxpemF0aW9uIG9mIFB5dGhvbiBtb2R1bGVzIHRvIGF2b2lkIHNldHRpbmcKKyAgdGhlaXIgZ2xvYmFscyB0byBOb25lLCBpbiBtb3N0IGNhc2VzLgorCistIElzc3VlICMxODExMjogUEVQIDQ0MiBpbXBsZW1lbnRhdGlvbiAoc2FmZSBvYmplY3QgZmluYWxpemF0aW9uKS4KKwogLSBJc3N1ZSAjMTg1NTI6IENoZWNrIHJldHVybiB2YWx1ZSBvZiBQeUFyZW5hX0FkZFB5T2JqZWN0KCkgaW4KICAgb2JqMmFzdF9vYmplY3QoKS4KIAogLSBJc3N1ZSAjMTg1NjA6IEZpeCBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHN1bSgpLgogCistIElzc3VlICMxODUyMDogQWRkIGEgbmV3IFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCkgZnVuY3Rpb24sIHNhbWUgdGhhbgorICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCkgZXhjZXB0IHRoYXQgaXQgaGFzIGEgcmV0dXJuIHZhbHVlICgwIG9uIHN1Y2Nlc3MsCisgIC0xIG9uIGVycm9yKS4KKwogLSBJc3N1ZSAjMTU5MDU6IEZpeCB0aGVvcmV0aWNhbCBidWZmZXIgb3ZlcmZsb3cgaW4gaGFuZGxpbmcgb2Ygc3lzLmFyZ3ZbMF0sCiAgIHByZWZpeCBhbmQgZXhlY19wcmVmaXggaWYgdGhlIG9wZXJhdGlvbiBzeXN0ZW0gZG9lcyBub3Qgb2JleSBNQVhQQVRITEVOLgogCistIElzc3VlICMxODQwODogRml4IG1hbnkgdmFyaW91cyBidWdzIGluIGNvZGUgaGFuZGxpbmcgZXJyb3JzLCBlc3BlY2lhbGx5CisgIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgKE1lbW9yeUVycm9yKS4KKwogLSBJc3N1ZSAjMTgzNDQ6IEZpeCBwb3RlbnRpYWwgcmVmLWxlYWtzIGluIF9idWZmZXJlZHJlYWRlcl9yZWFkX2FsbCgpLgogCistIElzc3VlICMxODM0MjogVXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgd2hlbiBhbiBpbXBvcnQgZmFpbHMgd2hlbiB1c2luZworICBgYGZyb20gLi4uIGltcG9ydCAuLi5gYC4KKwogLSBJc3N1ZSAjMTc4NzI6IEZpeCBhIHNlZ2ZhdWx0IGluIG1hcnNoYWwubG9hZCgpIHdoZW4gaW5wdXQgc3RyZWFtIHJldHVybnMKICAgbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4KIAorLSBJc3N1ZSAjMTgzMzg6IGBweXRob24gLS12ZXJzaW9uYCBub3cgcHJpbnRzIHZlcnNpb24gc3RyaW5nIHRvIHN0ZG91dCwgYW5kCisgIG5vdCB0byBzdGRlcnIuICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnIGFuZCBNaWNoYWVsIERpY2tlbnMuCisKIC0gSXNzdWUgIzE4NDI2OiBGaXggTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIEMgZXh0ZW5zaW9uIGltcG9ydCB3aGVuCiAgIFB5TW9kdWxlX0dldERlZigpIHJldHVybnMgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzE3MjA2OiBPbiBXaW5kb3dzLCBpbmNyZWFzZSB0aGUgc3RhY2sgc2l6ZSBmcm9tIDIgTUIgdG8gNC4yIE1CIHRvIGZpeAorICBhIHN0YWNrIG92ZXJmbG93IGluIHRoZSBtYXJzaGFsIG1vZHVsZSAoZml4IGEgY3Jhc2ggaW4gdGVzdF9tYXJzaGFsKS4KKyAgUGF0Y2ggd3JpdHRlbiBieSBKZXJlbXkgS2xvdGguCisKKy0gSXNzdWUgIzMzMjk6IEltcGxlbWVudCB0aGUgUEVQIDQ0NTogQWRkIG5ldyBBUElzIHRvIGN1c3RvbWl6ZSBQeXRob24gbWVtb3J5CisgIGFsbG9jYXRvcnMuCisKIC0gSXNzdWUgIzE4MzI4OiBSZW9yZGVyIG9wcyBpbiBQeVRocmVhZFN0YXRlX0RlbGV0ZSooKSBmdW5jdGlvbnMuIE5vdyB0aGUKICAgdHN0YXRlIGlzIGZpcnN0IHJlbW92ZWQgZnJvbSBUTFMgYW5kIHRoZW4gZGVhbGxvY2F0ZWQuCiAKKy0gSXNzdWUgIzEzNDgzOiBVc2UgVmlydHVhbEFsbG9jIGluIG9ibWFsbG9jIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzE4MTg0OiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGFuZCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBub3cgcmFpc2UKICAgT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGFyZ3VtZW50IG9mICVjIGZvcm1hdCBpcyBvdXQgb2YgcmFuZ2UuCiAKKy0gSXNzdWUgIzE4MTExOiBUaGUgbWluKCkgYW5kIG1heCgpIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCBhIGRlZmF1bHQgYXJndW1lbnQKKyAgdG8gYmUgcmV0dXJuZWQgaW5zdGVhZCBvZiByYWlzaW5nIGEgVmFsdWVFcnJvciBvbiBhbiBlbXB0eSBzZXF1ZW5jZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEp1bGlhbiBCZXJtYW4uKQorCiAtIElzc3VlICMxODEzNzogRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgb24gcHJlY2lzaW9uIGluIGZsb2F0Ll9fZm9ybWF0X18oKQogICBhbmQgY29tcGxleC5fX2Zvcm1hdF9fKCkuCiAKQEAgLTUyLDUwICsxMTksMTc1IEBACiAtIElzc3VlICMxODAzODogU3ludGF4RXJyb3IgcmFpc2VkIGR1cmluZyBjb21waWxhdGlvbiBzb3VyY2VzIHdpdGggaWxsZWdhbAogICBlbmNvZGluZyBub3cgYWx3YXlzIGNvbnRhaW5zIGFuIGVuY29kaW5nIG5hbWUuCiAKKy0gSXNzdWUgIzE3OTMxOiBSZXNvbHZlIGNvbmZ1c2lvbiBvbiBXaW5kb3dzIGJldHdlZW4gcGlkcyBhbmQgcHJvY2VzcworICBoYW5kbGVzLgorCistIFR3ZWFrIHRoZSBleGNlcHRpb24gbWVzc2FnZSB3aGVuIHRoZSBtYWdpYyBudW1iZXIgb3Igc2l6ZSB2YWx1ZSBpbiBhIGJ5dGVjb2RlCisgIGZpbGUgaXMgdHJ1bmNhdGVkLgorCistIElzc3VlICMxNzkzMjogRml4IGFuIGludGVnZXIgb3ZlcmZsb3cgaXNzdWUgb24gV2luZG93cyA2NC1iaXQgaW4gaXRlcmF0b3JzOgorICBjaGFuZ2UgdGhlIEMgdHlwZSBvZiBzZXFpdGVyb2JqZWN0Lml0X2luZGV4IGZyb20gbG9uZyB0byBQeV9zc2l6ZV90LgorCistIElzc3VlICMxODA2NTogRG9uJ3Qgc2V0IF9fcGF0aF9fIHRvIHRoZSBwYWNrYWdlIG5hbWUgZm9yIGZyb3plbiBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMTgwODg6IFdoZW4gcmVsb2FkaW5nIGEgbW9kdWxlLCB1bmNvbmRpdGlvbmFsbHkgcmVzZXQgYWxsIHJlbGV2YW50CisgIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZSAoZS5nLiBfX25hbWVfXywgX19sb2FkZXJfXywgX19wYWNrYWdlX18sIF9fZmlsZV9fLAorICBfX2NhY2hlZF9fKS4KKworLSBJc3N1ZSAjMTc5Mzc6IFRyeSBoYXJkZXIgdG8gY29sbGVjdCBjeWNsaWMgZ2FyYmFnZSBhdCBzaHV0ZG93bi4KKworLSBJc3N1ZSAjMTIzNzA6IFByZXZlbnQgY2xhc3MgYm9kaWVzIGZyb20gaW50ZXJmZXJpbmcgd2l0aCB0aGUgX19jbGFzc19fCisgIGNsb3N1cmUuCisKIC0gSXNzdWUgIzE3NjQ0OiBGaXggYSBjcmFzaCBpbiBzdHIuZm9ybWF0IHdoZW4gY3VybHkgYnJhY2VzIGFyZSB1c2VkIGluIHNxdWFyZQogICBicmFja2V0cy4KIAotLSBJc3N1ZSAjMTc5ODM6IFJhaXNlIGEgU3ludGF4RXJyb3IgZm9yIGEgYGBnbG9iYWwgX19jbGFzc19fYGAgc3RhdGVtZW50IGluIGEKLSAgY2xhc3MgYm9keS4KKy0gSXNzdWUgIzE3MjM3OiBGaXggY3Jhc2ggaW4gdGhlIEFTQ0lJIGRlY29kZXIgb24gbTY4ay4KIAotLSBJc3N1ZSAjMTc5Mjc6IEZyYW1lIG9iamVjdHMga2VwdCBhcmd1bWVudHMgYWxpdmUgaWYgdGhleSBoYWQgYmVlbiBjb3BpZWQgaW50bwotICBhIGNlbGwsIGV2ZW4gaWYgdGhlIGNlbGwgd2FzIGNsZWFyZWQuCistIElzc3VlICMxNzkyNzogRnJhbWUgb2JqZWN0cyBrZXB0IGFyZ3VtZW50cyBhbGl2ZSBpZiB0aGV5IGhhZCBiZWVuCisgIGNvcGllZCBpbnRvIGEgY2VsbCwgZXZlbiBpZiB0aGUgY2VsbCB3YXMgY2xlYXJlZC4KKworLSBJc3N1ZSAjMTU0NTQ2MzogQXQgc2h1dGRvd24sIGRlZmVyIGZpbmFsaXphdGlvbiBvZiBjb2RlYyBtb2R1bGVzIHNvCisgIHRoYXQgc3RkZXJyIHJlbWFpbnMgdXNhYmxlLgorCistIElzc3VlICM3MzMwOiBJbXBsZW1lbnQgd2lkdGggYW5kIHByZWNpc2lvbiAoZXg6ICIlNS4zcyIpIGZvciB0aGUgZm9ybWF0CisgIHN0cmluZyBvZiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGZ1bmN0aW9uLCBvcmlnaW5hbCBwYXRjaCB3cml0dGVuIGJ5IFlzaiBSYXkuCisKKy0gSXNzdWUgIzE1NDU0NjM6IEdsb2JhbCB2YXJpYWJsZXMgY2F1Z2h0IGluIHJlZmVyZW5jZSBjeWNsZXMgYXJlIG5vdworICBnYXJiYWdlLWNvbGxlY3RlZCBhdCBzaHV0ZG93bi4KKworLSBJc3N1ZSAjMTcwOTQ6IENsZWFyIHN0YWxlIHRocmVhZCBzdGF0ZXMgYWZ0ZXIgZm9yaygpLiAgTm90ZSB0aGF0IHRoaXMKKyAgaXMgYSBwb3RlbnRpYWxseSBkaXNydXB0aXZlIGNoYW5nZSBzaW5jZSBpdCBtYXkgcmVsZWFzZSBzb21lIHN5c3RlbQorICByZXNvdXJjZXMgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHJlbWFpbiBwZXJwZXR1YWxseSBhbGl2ZSAoZS5nLiBkYXRhYmFzZQorICBjb25uZWN0aW9ucyBrZXB0IGluIHRocmVhZC1sb2NhbCBzdG9yYWdlKS4KKworLSBJc3N1ZSAjMTc0MDg6IEF2b2lkIHVzaW5nIGFuIG9ic29sZXRlIGluc3RhbmNlIG9mIHRoZSBjb3B5cmVnIG1vZHVsZSB3aGVuCisgIHRoZSBpbnRlcnByZXRlciBpcyBzaHV0ZG93biBhbmQgdGhlbiBzdGFydGVkIGFnYWluLgorCistIElzc3VlICM1ODQ1OiBFbmFibGUgdGFiLWNvbXBsZXRpb24gaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIGJ5CisgIGRlZmF1bHQsIHRoYW5rcyB0byBhIG5ldyBzeXMuX19pbnRlcmFjdGl2ZWhvb2tfXy4KKworLSBJc3N1ZSAjMTcxMTUsMTcxMTY6IE1vZHVsZSBpbml0aWFsaXphdGlvbiBub3cgaW5jbHVkZXMgc2V0dGluZyBfX3BhY2thZ2VfXyBhbmQKKyAgX19sb2FkZXJfXyBhdHRyaWJ1dGVzIHRvIE5vbmUuCisKKy0gSXNzdWUgIzE3ODUzOiBFbnN1cmUgbG9jYWxzIG9mIGEgY2xhc3MgdGhhdCBzaGFkb3cgZnJlZSB2YXJpYWJsZXMgYWx3YXlzIHdpbgorICBvdmVyIHRoZSBjbG9zdXJlcy4KKworLSBJc3N1ZSAjMTc4NjM6IEluIHRoZSBpbnRlcmFjdGl2ZSBjb25zb2xlLCBkb24ndCBsb29wIGZvcmV2ZXIgaWYgdGhlIGVuY29kaW5nCisgIGNhbid0IGJlIGZldGNoZWQgZnJvbSBzdGRpbi4KKworLSBJc3N1ZSAjMTc4Njc6IFJhaXNlIGFuIEltcG9ydEVycm9yIGlmIF9faW1wb3J0X18gaXMgbm90IGZvdW5kIGluIF9fYnVpbHRpbnNfXy4KKworLSBJc3N1ZSAjMTc4NTc6IFByZXZlbnQgYnVpbGQgZmFpbHVyZXMgd2l0aCBwcmUtMy41LjAgdmVyc2lvbnMgb2Ygc3FsaXRlMywKKyAgc3VjaCBhcyB3YXMgc2hpcHBlZCB3aXRoIENlbnRvcyA1IGFuZCBNYWMgT1MgWCAxMC40LgorCistIElzc3VlICMxNzQxMzogc3lzLnNldHRyYWNlIGNhbGxiYWNrcyB3ZXJlIGJlaW5nIHBhc3NlZCBhIHN0cmluZyBpbnN0ZWFkIG9mIGFuCisgIGV4Y2VwdGlvbiBpbnN0YW5jZSBmb3IgdGhlICd2YWx1ZScgZWxlbWVudCBvZiB0aGUgYXJnIHR1cGxlIGlmIHRoZSBleGNlcHRpb24KKyAgb3JpZ2luYXRlZCBmcm9tIEMgY29kZTsgbm93IGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBpcyBhbHdheXMgcHJvdmlkZWQuCisKKy0gSXNzdWUgIzE3NzgyOiBGaXggdW5kZWZpbmVkIGJlaGF2aW91ciBvbiBwbGF0Zm9ybXMgd2hlcmUKKyAgYGBzdHJ1Y3QgdGltZXNwZWNgYCdzICJ0dl9uc2VjIiBtZW1iZXIgaXMgbm90IGEgQyBsb25nLgorCistIElzc3VlICMxNzcyMjogV2hlbiBsb29raW5nIHVwIF9fcm91bmRfXywgcmVzb2x2ZSBkZXNjcmlwdG9ycy4KKworLSBJc3N1ZSAjMTYwNjE6IFNwZWVkIHVwIHN0ci5yZXBsYWNlKCkgZm9yIHJlcGxhY2luZyAxLWNoYXJhY3RlciBzdHJpbmdzLgorCistIElzc3VlICMxNzcxNTogRml4IHNlZ21lbnRhdGlvbiBmYXVsdCBmcm9tIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGluIGEgX190cnVuY19fCisgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTc2NDM6IEFkZCBfX2NhbGxiYWNrX18gYXR0cmlidXRlIHRvIHdlYWtyZWYucmVmLgorCistIElzc3VlICMxNjQ0NzogRml4ZWQgcG90ZW50aWFsIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHNldHRpbmcgX19uYW1lX18gb24gYQorICBjbGFzcy4KKworLSBJc3N1ZSAjMTc2Njk6IEZpeCBjcmFzaCBpbnZvbHZpbmcgZmluYWxpemF0aW9uIG9mIGdlbmVyYXRvcnMgdXNpbmcgeWllbGQgZnJvbS4KKworLSBJc3N1ZSAjMTQ0Mzk6IFB5dGhvbiBub3cgcHJpbnRzIHRoZSB0cmFjZWJhY2sgb24gcnVucHkgZmFpbHVyZSBhdCBzdGFydHVwLgorCisKKy0gSXNzdWUgIzE3NDY5OiBGaXggX1B5X0dldEFsbG9jYXRlZEJsb2NrcygpIGFuZCBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzKCkKKyAgd2hlbiBydW5uaW5nIG9uIHZhbGdyaW5kLgorCistIElzc3VlICMxNzYxOTogTWFrZSBpbnB1dCgpIGNoZWNrIGZvciBDdHJsLUMgY29ycmVjdGx5IG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE3MzU3OiBBZGQgbWlzc2luZyB2ZXJib3NpdHkgbWVzc2FnZXMgZm9yIC12Ly12diB0aGF0IHdlcmUgbG9zdCBkdXJpbmcKKyAgdGhlIGltcG9ydGxpYiB0cmFuc2l0aW9uLgorCistIElzc3VlICMxNzYxMDogRG9uJ3QgcmVseSBvbiBub24tc3RhbmRhcmQgYmVoYXZpb3Igb2YgdGhlIEMgcXNvcnQoKSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTczMjM6IFRoZSAiW1ggcmVmcywgWSBibG9ja3NdIiBwcmludGVkIGJ5IGRlYnVnIGJ1aWxkcyBoYXMgYmVlbgorICBkaXNhYmxlZCBieSBkZWZhdWx0LiAgSXQgY2FuIGJlIHJlLWVuYWJsZWQgd2l0aCB0aGUgYC1YIHNob3dyZWZjb3VudGAgb3B0aW9uLgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzE4NjgxOiBGaXggYSBOYW1lRXJyb3IgaW4gaW1wLnJlbG9hZCgpIChub3RpY2VkIGJ5IFdlaXpoYW8gTGkpLgorLSBJc3N1ZSAjMTg2ODE6IEZpeCBhIE5hbWVFcnJvciBpbiBpbXBvcnRsaWIucmVsb2FkKCkgKG5vdGljZWQgYnkgV2VpemhhbyBMaSkuCiAKLS0gSXNzdWUgIzgxMTI6IHhsbXJwYy5zZXJ2ZXIncyBEb2NYTUxSUENTZXJ2ZXIgc2VydmVyIG5vIGxvbmdlciByYWlzZXMgYW4gZXJyb3IKLSAgaWYgbWV0aG9kcyBoYXZlIGFubm90YXRpb25zOyBpdCBub3cgY29ycmVjdGx5IGRpc3BsYXlzIHRoZSBhbm5vdGF0aW9ucy4KKy0gSXNzdWUgIzE0MzIzOiBFeHBhbmRlZCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgY29lZmZpY2llbnRzIGZvciB0aGUKKyAgUkdCIC0tIFlJUSBjb252ZXJzaW9ucyBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIEZDQyBOVFNDIHZlcnNpb25zLgogCiAtIElzc3VlICMxNzk5ODogRml4IGFuIGludGVybmFsIGVycm9yIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUuCiAKIC0gSXNzdWUgIzE3NTU3OiBGaXggb3MuZ2V0Z3JvdXBzKCkgdG8gd29yayB3aXRoIHRoZSBtb2RpZmllZCBiZWhhdmlvciBvZgogICBnZXRncm91cHMoMikgb24gT1MgWCAxMC44LiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWF0ZXVzeiBMZW5pay4KIAorLSBJc3N1ZSAjMTg2MDg6IEF2b2lkIGtlZXBpbmcgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBsb2NhbGUgbW9kdWxlCisgIGluc2lkZSB0aGUgX2lvIG1vZHVsZS4KKworLSBJc3N1ZSAjMTg2MTk6IEZpeCBhdGV4aXQgbGVha2luZyBjYWxsYmFja3MgcmVnaXN0ZXJlZCBmcm9tIHN1Yi1pbnRlcnByZXRlcnMsCisgIGFuZCBtYWtlIGl0IEdDLWF3YXJlLgorCistIElzc3VlICMxNTY5OTogVGhlIHJlYWRsaW5lIG1vZHVsZSBub3cgdXNlcyBQRVAgMzEyMS1zdHlsZSBtb2R1bGUKKyAgaW5pdGlhbGl6YXRpb24sIHNvIGFzIHRvIHJlY2xhaW0gYWxsb2NhdGVkIHJlc291cmNlcyAoUHl0aG9uIGNhbGxiYWNrcykKKyAgYXQgc2h1dGRvd24uICBPcmlnaW5hbCBwYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE3NjE2OiB3YXZlLm9wZW4gbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wuCisKIC0gSXNzdWUgIzE4NTk5OiBGaXggbmFtZSBhdHRyaWJ1dGUgb2YgX3NoYTEuc2hhMSgpIG9iamVjdC4gSXQgbm93IHJldHVybnMKICAgJ1NIQTEnIGluc3RlYWQgb2YgJ1NIQScuCiAKKy0gSXNzdWUgIzEzMjY2OiBBZGRlZCBpbnNwZWN0LnVud3JhcCB0byBlYXNpbHkgdW5yYXZlbCBfX3dyYXBwZWRfXyBjaGFpbnMKKyAgKGluaXRpYWwgcGF0Y2ggYnkgRGFuaWVsIFVyYmFuIGFuZCBBYXJvbiBJbGVzKQorCiAtIElzc3VlICMxODU2MTogU2tpcCBuYW1lIGluIGN0eXBlcycgX2J1aWxkX2NhbGxhcmdzKCkgaWYgbmFtZSBpcyBOVUxMLgogCiAtIElzc3VlICMxODU1OTogRml4IE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBlcnJvciBpbiBfcGlja2xlIG1vZHVsZQogCi0tIElzc3VlICMxODU1NjogQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgY2FsbCBpbgotICBjdHlwZXMnIFVfc2V0KCkuCistIElzc3VlICMxODU1NjogQ2hlY2sgdGhlIHJldHVybiB0eXBlIG9mIFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgaW4gY3R5cGUncworICBVX3NldCgpLgorCistIElzc3VlICMxNzgxODogYWlmYy5nZXRwYXJhbXMgbm93IHJldHVybnMgYSBuYW1lZHR1cGxlLgogCiAtIElzc3VlICMxODU0OTogRWxpbWluYXRlIGRlYWQgY29kZSBpbiBzb2NrZXRfbnRvaGwoKQogCistIElzc3VlICMxODUzMDogUmVtb3ZlIGFkZGl0aW9uYWwgc3RhdCBjYWxsIGZyb20gcG9zaXhwYXRoLmlzbW91bnQuCisgIFBhdGNoIGJ5IEFsZXggR2F5bm9yLgorCiAtIElzc3VlICMxODUxNDogRml4IHVucmVhY2hhYmxlIFB5X0RFQ1JFRigpIGNhbGwgaW4gUHlDRGF0YV9Gcm9tQmFzZU9iaigpCiAKKy0gSXNzdWUgIzkxNzc6IENhbGxpbmcgcmVhZCgpIG9yIHdyaXRlKCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yLCBub3QKKyAgQXR0cmlidXRlRXJyb3IsIG9uIGEgY2xvc2VkIFNTTCBzb2NrZXQuICBQYXRjaCBieSBTZW5rbyBSYXNpYy4KKwogLSBJc3N1ZSAjMTg1MTM6IEZpeCBiZWhhdmlvdXIgb2YgY21hdGgucmVjdCB3LnIudC4gc2lnbmVkIHplcm9zIG9uIE9TIFggMTAuOCArCiAgIGdjYy4KIAorLSBJc3N1ZSAjMTg0Nzk6IENoYW5nZWQgdmVudiBBY3RpdmF0ZS5wczEgdG8gbWFrZSBkZWFjdGl2YXRlIGEgZnVuY3Rpb24sIGFuZAorICByZW1vdmVkIERlYWN0aXZhdGUucHMxLgorCiAtIElzc3VlICMxODQ4MDogQWRkIG1pc3NpbmcgY2FsbCB0byBQeVR5cGVfUmVhZHkgdG8gdGhlIF9lbGVtZW50dHJlZSBleHRlbnNpb24uCiAKIC0gSXNzdWUgIzE3Nzc4OiBGaXggdGVzdCBkaXNjb3ZlcnkgZm9yIHRlc3RfbXVsdGlwcm9jZXNzaW5nLiAoUGF0Y2ggYnkKICAgWmFjaGFyeSBXYXJlLikKIAorLSBJc3N1ZSAjMTgzOTM6IFRoZSBwcml2YXRlIG1vZHVsZSBfZ2VzdGFsdCBhbmQgcHJpdmF0ZSBmdW5jdGlvbnMKKyAgcGxhdGZvcm0uX21hY192ZXJfZ2VzdGFsdCwgcGxhdGZvcm0uX21hY192ZXJfbG9va3VwIGFuZAorICBwbGF0Zm9ybS5fYmNkMnN0ciBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIHB1YmxpYworICBpbnRlcmZhY2Ugb2YgdGhlIHBsYXRmb3JtIG1vZHVsZS4KKworLSBJc3N1ZSAjMTc0ODI6IGZ1bmN0b29scy51cGRhdGVfd3JhcHBlciAoYW5kIGZ1bmN0b29scy53cmFwcykgbm93IHNldCB0aGUKKyAgX193cmFwcGVkX18gYXR0cmlidXRlIGNvcnJlY3RseSBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGhhcyBhCisgIF9fd3JhcHBlZF9fIGF0dHJpYnV0ZSBzZXQuCisKIC0gSXNzdWUgIzE4NDMxOiBUaGUgbmV3IGVtYWlsIGhlYWRlciBwYXJzZXIgbm93IGRlY29kZXMgUkZDMjA0NyBlbmNvZGVkIHdvcmRzCiAgIGluIHN0cnVjdHVyZWQgaGVhZGVycy4KIApAQCAtMTA5LDExICszMDEsMTggQEAKIC0gSXNzdWUgIzE4MTAxOiBUY2wuc3BsaXQoKSBub3cgcHJvY2VzcyBzdHJpbmdzIG5lc3RlZCBpbiBhIHR1cGxlIGFzIGl0CiAgIGRvIHdpdGggYnl0ZSBzdHJpbmdzLgogCistIElzc3VlICMxODExNjogZ2V0cGFzcyB3YXMgYWx3YXlzIGdldHRpbmcgYW4gZXJyb3Igd2hlbiB0ZXN0aW5nIC9kZXYvdHR5LAorICBhbmQgdGh1cyB3YXMgYWx3YXlzIGZhbGxpbmcgYmFjayB0byBzdGRpbi4gIEl0IGFsc28gbGVha2VkIGFuIG9wZW4gZmlsZQorICB3aGVuIGl0IGRpZCBzby4gIEJvdGggb2YgdGhlc2UgaXNzdWVzIGFyZSBub3cgZml4ZWQuCisKIC0gSXNzdWUgIzE3MTk4OiBGaXggYSBOYW1lRXJyb3IgaW4gdGhlIGRibSBtb2R1bGUuICBQYXRjaCBieSBWYWxlbnRpbmEKICAgTXVraGFtZWR6aGFub3ZhLgogCiAtIElzc3VlICMxODAxMzogRml4IGNnaS5GaWVsZFN0b3JhZ2UgdG8gcGFyc2UgdGhlIFczQyBzYW1wbGUgZm9ybS4KIAorLSBJc3N1ZSAjMTgwMjA6IGltcHJvdmUgaHRtbC5lc2NhcGUgc3BlZWQgYnkgYW4gb3JkZXIgb2YgbWFnbml0dWRlLgorICBQYXRjaCBieSBNYXR0IEJyeWFudC4KKwogLSBJc3N1ZSAjMTgzNDc6IEVsZW1lbnRUcmVlJ3MgaHRtbCBzZXJpYWxpemVyIG5vdyBwcmVzZXJ2ZXMgdGhlIGNhc2Ugb2YKICAgY2xvc2luZyB0YWdzLgogCkBAIC0xMjgsNiArMzI3LDkgQEAKIC0gSXNzdWUgIzE4MzM5OiBOZWdhdGl2ZSBpbnRzIGtleXMgaW4gdW5waWNrbGVyLm1lbW8gZGljdCBubyBsb25nZXIgY2F1c2UgYQogICBzZWdmYXVsdCBpbnNpZGUgdGhlIF9waWNrbGUgQyBleHRlbnNpb24uCiAKKy0gSXNzdWUgMTgyNDA6IFRoZSBITUFDIG1vZHVsZSBpcyBubyBsb25nZXIgcmVzdHJpY3RlZCB0byBieXRlcyBhbmQgYWNjZXB0cworICBhbnkgYnl0ZXMtbGlrZSBvYmplY3QsIGUuZy4gbWVtb3J5dmlldy4gT3JpZ2luYWwgcGF0Y2ggYnkgSm9uYXMgQm9yZ3N0csO2bS4KKwogLSBJc3N1ZSAjMTgyMjQ6IFJlbW92ZWQgcHlkb2Mgc2NyaXB0IGZyb20gY3JlYXRlZCB2ZW52LCBhcyBpdCBjYXVzZXMgcHJvYmxlbXMKICAgb24gV2luZG93cyBhbmQgYWRkcyBubyB2YWx1ZSBvdmVyIGFuZCBhYm92ZSBweXRob24gLW0gcHlkb2MgLi4uCiAKQEAgLTEzOCwzMSArMzQwLDkzIEBACiAtIElzc3VlICMxNDM2MDogZW5jb2RlX3F1b3ByaSBjYW4gbm93IGJlIHN1Y2Nlc3NmdWxseSB1c2VkIGFzIGFuIGVuY29kZXIKICAgd2hlbiBjb25zdHJ1Y3RpbmcgYSBNSU1FQXBwbGljYXRpb24gb2JqZWN0LgogCistIElzc3VlICMxMTM5MDogQWRkIC1vIGFuZCAtZiBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byB0aGUgZG9jdGVzdCBDTEkgdG8KKyAgc3BlY2lmeSBkb2N0ZXN0IG9wdGlvbnMgKGFuZCBjb252ZXJ0IGl0IHRvIHVzaW5nIGFyZ3BhcnNlKS4KKwogLSBJc3N1ZSAjMTgxMzU6IHNzbC5TU0xTb2NrZXQud3JpdGUoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGlucHV0CiAgIHN0cmluZyBpbiBsb25nZXIgdGhhbiAyIGdpZ2FieXRlcywgYW5kIHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpCiAgIHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHBhc3N3b3JkIGlzIGxvbmdlciB0aGFuIDIgZ2lnYWJ5dGVzLiBUaGUgc3NsCiAgIG1vZHVsZSBkb2VzIG5vdCBzdXBwb3J0IHBhcnRpYWwgd3JpdGUuCiAKKy0gSXNzdWUgIzExMDE2OiBBZGQgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhdCBtb2R1bGUgYXMgX3N0YXQuCisKIC0gSXNzdWUgIzE4MjQ4OiBGaXggbGliZmZpIGJ1aWxkIG9uIEFJWC4KIAogLSBJc3N1ZSAjMTgyNTk6IERlY2xhcmUgc2V0aG9zdG5hbWUgaW4gc29ja2V0bW9kdWxlLmMgZm9yIEFJWAogCistIElzc3VlICMxODE0NzogQWRkIGRpYWdub3N0aWMgZnVuY3Rpb25zIHRvIHNzbC5TU0xDb250ZXh0KCkuIGdldF9jYV9saXN0KCkKKyAgbGlzdHMgYWxsIGxvYWRlZCBDQSBjZXJ0aWZpY2F0ZXMgYW5kIGNlcnRfc3RvcmVfc3RhdHMoKSByZXR1cm5zIGFtb3VudCBvZgorICBsb2FkZWQgWC41MDkgY2VydHMsIFguNTA5IENBIGNlcnRzIGFuZCBDUkxzLgorCiAtIElzc3VlICMxODE2NzogY2dpLkZpZWxkU3RvcmFnZSBubyBsb25nZXIgZmFpbHMgdG8gaGFuZGxlIG11bHRpcGFydC9mb3JtLWRhdGEKICAgd2hlbiBcclxuIGFwcGVhcnMgYXQgZW5kIG9mIDY1NTM1IGJ5dGVzIHdpdGhvdXQgb3RoZXIgbmV3bGluZXMuCiAKKy0gSXNzdWUgIzE4MDc2OiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuZGVjb2RlX3NvdXJjZSgpLgorLSBJc3N1ZSAjMTgzNTc6IGFkZCB0ZXN0cyBmb3IgZGljdHZpZXcgc2V0IGRpZmZlcmVuY2UuCisgIFBhdGNoIGJ5IEZyYXNlciBUd2VlZGFsZS4KKworCistIGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLmdldF9zb3VyY2UoKSBubyBsb25nZXIgY2hhbmdlcyBTeW50YXhFcnJvciBvcgorICBVbmljb2RlRGVjb2RlRXJyb3IgaW50byBJbXBvcnRFcnJvci4KKworLSBJc3N1ZSAjMTgwNTgsIDE4MDU3OiBNYWtlIHRoZSBuYW1lc3BhY2UgcGFja2FnZSBsb2FkZXIgbWVldCB0aGUKKyAgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyIEFCQywgYWxsb3dpbmcgZm9yIG5hbWVzcGFjZSBwYWNrYWdlcyB0byB3b3JrIHdpdGgKKyAgcnVucHkuCisKKy0gSXNzdWUgIzE3MTc3OiBUaGUgaW1wIG1vZHVsZSBpcyBwZW5kaW5nIGRlcHJlY2F0aW9uLgorCiAtIHN1YnByb2Nlc3M6IFByZXZlbnQgYSBwb3NzaWJsZSBkb3VibGUgY2xvc2Ugb2YgcGFyZW50IHBpcGUgZmRzIHdoZW4gdGhlCiAgIHN1YnByb2Nlc3MgZXhlYyBydW5zIGludG8gYW4gZXJyb3IuICBQcmV2ZW50IGEgcmVndWxhciBtdWx0aS1jbG9zZSBvZiB0aGUKICAgL2Rldi9udWxsIGZkIHdoZW4gYW55IG9mIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciB3YXMgc2V0IHRvIERFVk5VTEwuCiAKKy0gSXNzdWUgIzE4MTk0OiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoKSBhbmQKKyAgc291cmNlX2Zyb21fY2FjaGUoKSB3aGlsZSBkb2N1bWVudGluZyB0aGUgZXF1aXZhbGVudCBmdW5jdGlvbnMgaW4gaW1wIGFzCisgIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE3OTA3OiBEb2N1bWVudCBpbXAubmV3X21vZHVsZSgpIGFzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCisgIHR5cGVzLk1vZHVsZVR5cGUuCisKKy0gSXNzdWUgIzE4MTkyOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuTUFHSUNfTlVNQkVSIGFuZCBkb2N1bWVudCBhcyBkZXByZWNhdGVkCisgIGltcC5nZXRfbWFnaWMoKS4KKworLSBJc3N1ZSAjMTgxNDk6IEFkZCBmaWxlY21wLmNsZWFyX2NhY2hlKCkgdG8gbWFudWFsbHkgY2xlYXIgdGhlIGZpbGVjbXAgY2FjaGUuCisgIFBhdGNoIGJ5IE1hcmsgTGV2aXR0CisKKy0gSXNzdWUgIzE4MTkzOiBBZGQgaW1wb3J0bGliLnJlbG9hZCgpLgorCistIElzc3VlICMxODE1NzogU3RvcCB1c2luZyBpbXAubG9hZF9tb2R1bGUoKSBpbiBweWRvYy4KKwogLSBJc3N1ZSAjMTYxMDI6IE1ha2UgdXVpZC5fbmV0Ymlvc19nZXRub2RlKCkgd29yayBhZ2FpbiBvbiBQeXRob24gMy4KIAorLSBJc3N1ZSAjMTcxMzQ6IEFkZCBzc2wuZW51bV9jZXJ0X3N0b3JlKCkgYXMgaW50ZXJmYWNlIHRvIFdpbmRvd3MnIGNlcnQgc3RvcmUuCisKKy0gSXNzdWUgIzE4MTQzOiBJbXBsZW1lbnQgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIGluIG9yZGVyIHRvIGRlYnVnCisgIHRoZSBkZWZhdWx0IGxvY2F0aW9ucyBmb3IgY2FmaWxlIGFuZCBjYXBhdGguCisKKy0gSXNzdWUgIzE3MzE0OiBNb3ZlIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIG92ZXIgdG8gaW1wb3J0bGliLgorCistIElzc3VlICMxMTk1OTogU01UUFNlcnZlciBhbmQgU01UUENoYW5uZWwgbm93IHRha2UgYW4gb3B0aW9uYWwgbWFwLCB1c2Ugb2YKKyAgd2hpY2ggYXZvaWRzIGFmZmVjdGluZyBnbG9iYWwgc3RhdGUuCisKIC0gSXNzdWUgIzE4MTA5OiBvcy51bmFtZSgpIG5vdyBkZWNvZGVzIGZpZWxkcyBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGFuZAogICBzb2NrZXQuZ2V0aG9zdG5hbWUoKSBub3cgZGVjb2RlcyB0aGUgaG9zdG5hbWUgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLAogICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZyBpbiBzdHJpY3QgbW9kZS4KIAorLSBJc3N1ZSAjMTgwODk6IEltcGxlbWVudCBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIubG9hZF9tb2R1bGUuCisKKy0gSXNzdWUgIzE4MDg4OiBJbnRyb2R1Y2UgaW1wb3J0bGliLmFiYy5Mb2FkZXIuaW5pdF9tb2R1bGVfYXR0cnMgZm9yIHNldHRpbmcKKyAgbW9kdWxlIGF0dHJpYnV0ZXMuIExlYWRzIHRvIHRoZSBwZW5kaW5nIGRlcHJlY2F0aW9uIG9mCisgIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLgorCiAtIElzc3VlICMxNzQwMzogdXJsbGliLnBhcnNlLnJvYm90cGFyc2VyIG5vcm1hbGl6ZXMgdGhlIHVybHMgYmVmb3JlIGFkZGluZyB0bwogICBydWxlbGluZS4gVGhpcyBoZWxwcyBpbiBoYW5kbGluZyBjZXJ0YWluIHR5cGVzIGludmFsaWQgdXJscyBpbiBhIGNvbnNlcnZhdGl2ZQotICBtYW5uZXIuCisgIG1hbm5lci4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgTWhlciBNb3ZzaXN5YW4uCisKKy0gSXNzdWUgIzE4MDcwOiBIYXZlIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyKCkgc2V0IGF0dHJpYnV0ZXMKKyAgdW5jb25kaXRpb25hbGx5IGluIG9yZGVyIHRvIHByb3Blcmx5IHN1cHBvcnQgcmVsb2FkaW5nLgorCistIEFkZGVkIGltcG9ydGxpYi51dGlsLm1vZHVsZV90b19sb2FkIHRvIHJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0byBwcm92aWRlIHRoZQorICBwcm9wZXIgbW9kdWxlIG9iamVjdCB0byBsb2FkLgogCiAtIElzc3VlICMxODAyNTogRml4ZWQgYSBzZWdmYXVsdCBpbiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50bygpIHdoZW4gcmF3CiAgIHN0cmVhbSdzIHJlYWQoKSByZXR1cm5zIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCkBAIC0xNzEsMjkgKzQzNSwyMDQgQEAKICAgbm9uLWFscGhhYmV0IGNoYXJhY3RlcnMgcHJlc2VudCBpbiB0aGUgaW5wdXQgc3RyaW5nIHRvIGNvbmZvcm0gYSBkb2NzdHJpbmcuCiAgIFVwZGF0ZWQgdGhlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgogCi0tIElzc3VlICMxMzc3MjogUmVzdG9yZWQgZGlyZWN0b3J5IGRldGVjdGlvbiBvZiB0YXJnZXRzIGluIGBgb3Muc3ltbGlua2BgIG9uCi0gIFdpbmRvd3MsIHdoaWNoIHdhcyB0ZW1wb3JhcmlseSByZW1vdmVkIGluIFB5dGhvbiAzLjIuMyBkdWUgdG8gYW4gaW5jb21wbGV0ZQotICBpbXBsZW1lbnRhdGlvbi4gVGhlIGltcGxlbWVudGF0aW9uIG5vdyB3b3JrcyBldmVuIGlmIHRoZSBzeW1saW5rIGlzIGNyZWF0ZWQKLSAgaW4gYSBsb2NhdGlvbiBvdGhlciB0aGFuIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKy0gSXNzdWUgIzE4MDcyOiBJbXBsZW1lbnQgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLmdldF9jb2RlKCkgYW5kCisgIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyLmdldF9jb2RlKCkuCisKKy0gSXNzdWUgIzgyNDA6IFNldCB0aGUgU1NMX01PREVfQUNDRVBUX01PVklOR19XUklURV9CVUZGRVIgZmxhZyBvbiBTU0wKKyAgc29ja2V0cy4KKworLSBJc3N1ZSAjMTcyNjk6IFdvcmthcm91bmQgZm9yIHNvY2tldC5nZXRhZGRyaW5mbyBjcmFzaCBvbiBNYWNPUyBYCisgIHdpdGggcG9ydCBOb25lIG9yICIwIiBhbmQgZmxhZ3MgQUlfTlVNRVJJQ1NFUlYuCiAKIC0gSXNzdWUgIzE2OTg2OiBFbGVtZW50VHJlZSBub3cgY29ycmVjdGx5IHBhcnNlcyBhIHN0cmluZyBpbnB1dCBub3Qgb25seSB3aGVuCiAgIGFuIGludGVybmFsIFhNTCBlbmNvZGluZyBpcyBVVEYtOCBvciBVUy1BU0NJSS4KIAorLSBJc3N1ZSAjMTc5OTY6IHNvY2tldCBtb2R1bGUgbm93IGV4cG9zZXMgQUZfTElOSyBjb25zdGFudCBvbiBCU0QgYW5kIE9TWC4KKworLSBJc3N1ZSAjMTc5MDA6IEFsbG93ZWQgcGlja2xpbmcgb2YgcmVjdXJzaXZlIE9yZGVyZWREaWN0cy4gIERlY3JlYXNlZCBwaWNrbGVkCisgIHNpemUgYW5kIHBpY2tsaW5nIHRpbWUuCisKKy0gSXNzdWUgIzE3OTE0OiBBZGQgb3MuY3B1X2NvdW50KCkuIFBhdGNoIGJ5IFlvZ2VzaCBDaGF1ZGhhcmksIGJhc2VkIG9uIGFuCisgIGluaXRpYWwgcGF0Y2ggYnkgVHJlbnQgTmVsc29uLgorCiAtIElzc3VlICMxNzgxMjogRml4ZWQgcXVhZHJhdGljIGNvbXBsZXhpdHkgb2YgYmFzZTY0LmIzMmVuY29kZSgpLgorICBPcHRpbWl6ZSBiYXNlNjQuYjMyZW5jb2RlKCkgYW5kIGJhc2U2NC5iMzJkZWNvZGUoKSAoc3BlZWQgdXAgdG8gM3gpLgogCiAtIElzc3VlICMxNzk4MDogRml4IHBvc3NpYmxlIGFidXNlIG9mIHNzbC5tYXRjaF9ob3N0bmFtZSgpIGZvciBkZW5pYWwgb2YKICAgc2VydmljZSB1c2luZyBjZXJ0aWZpY2F0ZXMgd2l0aCBtYW55IHdpbGRjYXJkcyAoQ1ZFLTIwMTMtMjA5OSkuCiAKKy0gSXNzdWUgIzE1NzU4OiBGaXggRmlsZUlPLnJlYWRhbGwoKSBzbyBpdCBubyBsb25nZXIgaGFzIE8obioqMikgY29tcGxleGl0eS4KKworLSBJc3N1ZSAjMTQ1OTY6IFRoZSBzdHJ1Y3QuU3RydWN0KCkgb2JqZWN0cyBub3cgdXNlIG1vcmUgY29tcGFjdCBpbXBsZW1lbnRhdGlvbi4KKwogLSBJc3N1ZSAjMTc5ODE6IENsb3NlZCBzb2NrZXQgb24gZXJyb3IgaW4gU3lzTG9nSGFuZGxlci4KIAorLSBJc3N1ZSAjMTc5NjQ6IEZpeCBvcy5zeXNjb25mKCk6IHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgQyBzeXNjb25mKCkgZnVuY3Rpb24KKyAgaXMgbG9uZywgbm90IGludC4KKwogLSBGaXggdHlwb3MgaW4gdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUuCiAKIC0gSXNzdWUgIzE3NzU0OiBNYWtlIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpIGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUuCiAKIC0gSXNzdWUgIzE3OTY4OiBGaXggbWVtb3J5IGxlYWsgaW4gb3MubGlzdHhhdHRyKCkuCiAKLS0gSXNzdWUgIzE3MjY5OiBXb3JrYXJvdW5kIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8gY3Jhc2ggb24gTWFjT1MgWAotICB3aXRoIHBvcnQgTm9uZSBvciAiMCIgYW5kIGZsYWdzIEFJX05VTUVSSUNTRVJWLgorLSBJc3N1ZSAjMTc2MDY6IEZpeGVkIHN1cHBvcnQgb2YgZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gdGhlIFhNTEdlbmVyYXRvcgorICBjaGFyYWN0ZXJzKCkgYW5kIGlnbm9yYWJsZVdoaXRlc3BhY2UoKSBtZXRob2RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2ViYXN0aWFuCisgIE9ydGl6IFZhc3F1ZXouCisKKy0gSXNzdWUgIzE3NzMyOiBJZ25vcmUgZGlzdHV0aWxzLmNmZyBvcHRpb25zIHBlcnRhaW5pbmcgdG8gaW5zdGFsbCBwYXRocyBpZiBhCisgIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZlLgorCistIElzc3VlICMxNzkxNTogRml4IGludGVyb3BlcmFiaWxpdHkgb2YgeG1sLnNheCB3aXRoIGZpbGUgb2JqZWN0cyByZXR1cm5lZCBieQorICBjb2RlY3Mub3BlbigpLgorCistIElzc3VlICMxNjYwMTogUmVzdGFydGluZyBpdGVyYXRpb24gb3ZlciB0YXJmaWxlIG5vIG1vcmUgY29udGludWVzIGZyb20gd2hlcmUKKyAgaXQgbGVmdCBvZmYuICBQYXRjaCBieSBNaWNoYWVsIEJpcnR3ZWxsLgorCistIElzc3VlICMxNzI4OTogVGhlIHJlYWRsaW5lIG1vZHVsZSBub3cgcGxheXMgbmljZXIgd2l0aCBleHRlcm5hbCBtb2R1bGVzCisgIG9yIGFwcGxpY2F0aW9ucyBjaGFuZ2luZyB0aGUgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycyBnbG9iYWwKKyAgdmFyaWFibGUuICBJbml0aWFsIHBhdGNoIGJ5IEJyYWRsZXkgRnJvZWhsZS4KKworLSBJc3N1ZSAjMTIxODE6IHNlbGVjdCBtb2R1bGU6IEZpeCBzdHJ1Y3Qga2V2ZW50IGRlZmluaXRpb24gb24gT3BlbkJTRCA2NC1iaXQKKyAgcGxhdGZvcm1zLiBQYXRjaCBieSBGZWRlcmljbyBTY2h3aW5kdC4KKworLSBJc3N1ZSAjMTE4MTY6IG11bHRpcGxlIGltcHJvdmVtZW50cyB0byB0aGUgZGlzIG1vZHVsZTogZ2V0X2luc3RydWN0aW9ucworICBnZW5lcmF0b3IsIGFiaWxpdHkgdG8gcmVkaXJlY3Qgb3V0cHV0IHRvIGEgZmlsZSwgQnl0ZWNvZGUgYW5kIEluc3RydWN0aW9uCisgIGFic3RyYWN0aW9ucy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLCBSeWFuIEtlbGx5IGFuZCBUaG9tYXMgS2x1eXZlci4KKworLSBJc3N1ZSAjMTM4MzE6IEVtYmVkIHN0cmluZ2lmaWNhdGlvbiBvZiByZW1vdGUgdHJhY2ViYWNrIGluIGxvY2FsCisgIHRyYWNlYmFjayByYWlzZWQgd2hlbiBwb29sIHRhc2sgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMTU1Mjg6IEFkZCB3ZWFrcmVmLmZpbmFsaXplIHRvIHN1cHBvcnQgZmluYWxpemF0aW9uIHVzaW5nCisgIHdlYWtyZWYgY2FsbGJhY2tzLgorCistIElzc3VlICMxNDE3MzogQXZvaWQgY3Jhc2hpbmcgd2hlbiByZWFkaW5nIGEgc2lnbmFsIGhhbmRsZXIgZHVyaW5nCisgIGludGVycHJldGVyIHNodXRkb3duLgorCistIElzc3VlICMxNTkwMjogRml4IGltcC5sb2FkX21vZHVsZSgpIGFjY2VwdGluZyBOb25lIGFzIGEgZmlsZSB3aGVuIGxvYWRpbmcgYW4KKyAgZXh0ZW5zaW9uIG1vZHVsZS4KKworLSBJc3N1ZSAjMTM3MjE6IFNTTFNvY2tldC5nZXRwZWVyY2VydCgpIGFuZCBTU0xTb2NrZXQuZG9faGFuZHNoYWtlKCkgbm93CisgIHJhaXNlIGFuIE9TRXJyb3Igd2l0aCBFTk9UQ09OTiwgaW5zdGVhZCBvZiBhbiBBdHRyaWJ1dGVFcnJvciwgd2hlbiB0aGUKKyAgU1NMU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQuCisKKy0gSXNzdWUgIzE0Njc5OiBhZGQgYW4gX19hbGxfXyAodGhhdCBjb250YWlucyBvbmx5IEhUTUxQYXJzZXIpIHRvIGh0bWwucGFyc2VyLgorCistIElzc3VlICMxNzgwMjogRml4IGFuIFVuYm91bmRMb2NhbEVycm9yIGluIGh0bWwucGFyc2VyLiAgSW5pdGlhbCB0ZXN0cyBieQorICBUaG9tYXMgQmFybG93LgorCistIElzc3VlICMxNzM1ODogTW9kdWxlcyBsb2FkZWQgYnkgaW1wLmxvYWRfc291cmNlKCkgYW5kIGxvYWRfY29tcGlsZWQoKSAoYW5kIGJ5CisgIGV4dGVudGlvbiBsb2FkX21vZHVsZSgpKSBub3cgaGF2ZSBhIGJldHRlciBjaGFuY2Ugb2Ygd29ya2luZyB3aGVuIHJlbG9hZGVkLgorCistIElzc3VlICMxNzgwNDogTmV3IGZ1bmN0aW9uIGBgc3RydWN0Lml0ZXJfdW5wYWNrYGAgYWxsb3dzIGZvciBzdHJlYW1pbmcKKyAgc3RydWN0IHVucGFja2luZy4KKworLSBJc3N1ZSAjMTc4MzA6IFdoZW4ga2V5d29yZC5weSBpcyB1c2VkIHRvIHVwZGF0ZSBhIGtleXdvcmQgZmlsZSwgaXQgbm93CisgIHByZXNlcnZlcyB0aGUgbGluZSBlbmRpbmdzIG9mIHRoZSBvcmlnaW5hbCBmaWxlLgorCistIElzc3VlICMxNzI3MjogTWFraW5nIHRoZSB1cmxsaWIucmVxdWVzdCdzIFJlcXVlc3QuZnVsbF91cmwgYSBkZXNjcmlwdG9yLgorICBGaXhlcyBidWdzIHdpdGggYXNzaWdubWVudCB0byBmdWxsX3VybC4gUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMTczNTM6IFBsaXN0bGliIGVtaXR0ZWQgZW1wdHkgZGF0YSB0YWdzIHdpdGggZGVlcGx5IG5lc3RlZCBkYXRhc3RydWN0dXJlcworCistIElzc3VlICMxMTcxNDogVXNlICd3aXRoJyBzdGF0ZW1lbnRzIHRvIGFzc3VyZSBhIFNlbWFwaG9yZSByZWxlYXNlcyBhCisgIGNvbmRpdGlvbiB2YXJpYWJsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBSYWNoZWwuCisKKy0gSXNzdWUgIzE2NjI0OiBgc3VicHJvY2Vzcy5jaGVja19vdXRwdXRgIG5vdyBhY2NlcHRzIGFuIGBpbnB1dGAgYXJndW1lbnQsCisgIGFsbG93aW5nIHRoZSBzdWJwcm9jZXNzJ3Mgc3RkaW4gdG8gYmUgcHJvdmlkZWQgYXMgYSAoYnl0ZSkgc3RyaW5nLgorICBQYXRjaCBieSBaYWNrIFdlaW5iZXJnLgorCistIElzc3VlICMxNzc5NTogUmV2ZXJ0ZWQgYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2UgaW4gU3lzTG9nSGFuZGxlciB3aXRoCisgIFVuaXggZG9tYWluIHNvY2tldHMuCisKKy0gSXNzdWUgIzE2Njk0OiBBZGQgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgbW9kdWxlLgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzExMTgyOiByZW1vdmUgdGhlIHVudXNlZCBhbmQgdW5kb2N1bWVudGVkIHB5ZG9jLlNjYW5uZXIgY2xhc3MuCisgIFBhdGNoIGJ5IE1hcnRpbiBNb3JyaXNvbi4KKworLSBJc3N1ZSAjMTc3NDE6IEFkZCBFbGVtZW50VHJlZS5JbmNyZW1lbnRhbFBhcnNlciwgYW4gZXZlbnQtZHJpdmVuIHBhcnNlcgorICBmb3Igbm9uLWJsb2NraW5nIGFwcGxpY2F0aW9ucy4KKworLSBJc3N1ZSAjMTc1NTU6IEZpeCBGb3JrQXdhcmVUaHJlYWRMb2NrIHNvIHRoYXQgc2l6ZSBvZiBhZnRlciBmb3JrCisgIHJlZ2lzdHJ5IGRvZXMgbm90IGdyb3cgZXhwb25lbnRpYWxseSB3aXRoIGdlbmVyYXRpb24gb2YgcHJvY2Vzcy4KKworLSBJc3N1ZSAjMTc3MDc6IG11bHRpcHJvY2Vzc2luZy5RdWV1ZSdzIGdldCgpIG1ldGhvZCBkb2VzIG5vdCBibG9jayBmb3Igc2hvcnQKKyAgdGltZW91dHMuCisKKy0gSXN1c2UgIzE3NzIwOiBGaXggdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBwaWNrbGUuVW5waWNrbGVyIHRvIGNvcnJlY3RseQorICBwcm9jZXNzIHRoZSBBUFBFTkRTIG9wY29kZSB3aGVuIGl0IGlzIHVzZWQgb24gbm9uLWxpc3Qgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTcwMTI6IHNodXRpbC53aGljaCgpIG5vIGxvbmdlciBmYWxsYmFja3MgdG8gdGhlIFBBVEggZW52aXJvbm1lbnQKKyAgdmFyaWFibGUgaWYgZW1wdHkgcGF0aCBhcmd1bWVudCBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNzcxMDogRml4IHBpY2tsZSByYWlzaW5nIGEgU3lzdGVtRXJyb3Igb24gYm9ndXMgaW5wdXQuCisKKy0gSXNzdWUgIzE3MzQxOiBJbmNsdWRlIHRoZSBpbnZhbGlkIG5hbWUgaW4gdGhlIGVycm9yIG1lc3NhZ2VzIGZyb20gcmUgYWJvdXQKKyAgaW52YWxpZCBncm91cCBuYW1lcy4KKworLSBJc3N1ZSAjMTc3MDI6IG9zLmVudmlyb24gbm93IHJhaXNlcyBLZXlFcnJvciB3aXRoIHRoZSBvcmlnaW5hbCBlbnZpcm9ubWVudAorICB2YXJpYWJsZSBuYW1lIChzdHIgb24gVU5JWCksIGluc3RlYWQgb2YgdXNpbmcgdGhlIGVuY29kZWQgbmFtZSAoYnl0ZXMgb24KKyAgVU5JWCkuCisKKy0gSXNzdWUgIzE2MTYzOiBNYWtlIHRoZSBpbXBvcnRsaWIgYmFzZWQgdmVyc2lvbiBvZiBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzCisgIHdvcmsgZm9yIHN1Ym1vZHVsZXMuIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKworLSBJc3N1ZSAjMTY4MDQ6IEZpeCBhIGJ1ZyBpbiB0aGUgJ3NpdGUnIG1vZHVsZSB0aGF0IGNhdXNlZCBydW5uaW5nCisgICdweXRob24gLVMgLW0gc2l0ZScgdG8gaW5jb3JyZWN0bHkgdGhyb3cgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNTQ4MDogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIGFuZCB1bnVzZWQgVFlQRV9JTlQ2NCBjb2RlIGZyb20gbWFyc2hhbC4KKyAgSW5pdGlhbCBwYXRjaCBieSBEYW5pZWwgUml0aS4KKworLSBJc3N1ZSAjMjExODogU01UUEV4Y2VwdGlvbiBpcyBub3cgYSBzdWJjbGFzcyBvZiBJT0Vycm9yLgorCistIElzc3VlICMxNzAxNjogR2V0IHJpZCBvZiBwb3NzaWJsZSBwb2ludGVyIHdyYXBhcm91bmRzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cworICBpbiB0aGUgcmUgbW9kdWxlLiAgUGF0Y2ggYnkgTmlja29sYWkgWmVsZG92aWNoLgorCistIElzc3VlICMxNjY1ODogYWRkIG1pc3NpbmcgcmV0dXJuIHRvIEhUVFBDb25uZWN0aW9uLnNlbmQoKQorICBQYXRjaCBieSBKZWZmIEtudXBwLgorCistIElzc3VlICM5NTU2OiBBbGxvd2VkIHNwZWNpZnlpbmcgYSB0aW1lLW9mLWRheSBmb3IgYSBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIKKyAgdG8gcm90YXRlLgorCistIElzc3VlICMxNDk3MTogdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgbm8gbG9uZ2VyIGdldHMgY29uZnVzZWQgd2hlbiBhIGZ1bmN0aW9uCisgIGhhcyBhIGRpZmZlcmVudCBfX25hbWVfXyB0aGFuIGl0cyBuYW1lIGluIHRoZSBUZXN0Q2FzZSBjbGFzcyBkaWN0aW9uYXJ5LgorCistIElzc3VlICMxNzQ4NzogVGhlIHdhdmUgZ2V0cGFyYW1zIG1ldGhvZCBub3cgcmV0dXJucyBhIG5hbWVkdHVwbGUgcmF0aGVyIHRoYW4KKyAgYSBwbGFpbiB0dXBsZS4KKworLSBJc3N1ZSAjMTc2NzU6IHNvY2tldCByZXByKCkgcHJvdmlkZXMgbG9jYWwgYW5kIHJlbW90ZSBhZGRyZXNzZXMgKGlmIGFueSkuCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnCisKKy0gSXNzdWUgIzE3MDkzOiBNYWtlIHRoZSBBQkNzIGluIGltcG9ydGxpYi5hYmMgcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBvciByYWlzZQorICByZWFzb25hYmxlIGV4Y2VwdGlvbnMgZm9yIHRoZWlyIG1ldGhvZHMgdG8gbWFrZSB0aGVtIG1vcmUgYW1lbmFibGUgdG8gc3VwZXIoKQorICBjYWxscy4KKworLSBJc3N1ZSAjMTc1NjY6IE1ha2UgaW1wb3J0bGliLmFiYy5Mb2FkZXIubW9kdWxlX3JlcHIoKSBvcHRpb25hbCBpbnN0ZWFkIG9mIGFuCisgIGFic3RyYWN0bWV0aG9kIGFuZCByYWlzaW5nIE5vdEltcGxlbWVudGVkRXJyb3Igc28gYXMgdG8gYmUgaWdub3JlZCBieSBkZWZhdWx0LgorCistIElzc3VlICMxNzY3ODogUmVtb3ZlIHRoZSB1c2Ugb2YgZGVwcmVjYXRlZCBtZXRob2QgaW4gaHR0cC9jb29raWVqYXIucHkuCisgIENoYW5naW5nIHRoZSB1c2FnZSBvZiBnZXRfb3JpZ2luX3JlcV9ob3N0KCkgdG8gb3JpZ2luX3JlcV9ob3N0LgorCistIElzc3VlICMxNzY2NjogRml4IHJlYWRpbmcgZ3ppcCBmaWxlcyB3aXRoIGFuIGV4dHJhIGZpZWxkLgorCistIElzc3VlICMxNjQ3NTogU3VwcG9ydCBvYmplY3QgaW5zdGFuY2luZywgcmVjdXJzaW9uIGFuZCBpbnRlcm5lZCBzdHJpbmdzCisgIGluIG1hcnNoYWwKKworLSBJc3N1ZSAjMTc1MDI6IFByb2Nlc3MgREVGQVVMVCB2YWx1ZXMgaW4gbW9jayBzaWRlX2VmZmVjdCB0aGF0IHJldHVybnMgaXRlcmF0b3IuCisKKy0gSXNzdWUgIzE2Nzk1OiBPbiB0aGUgYXN0LmFyZ3VtZW50cyBvYmplY3QsIHVuaWZ5IHZhcmFyZyB3aXRoIHZhcmFyZ2Fubm90YXRpb24KKyAgYW5kIGt3YXJnIGFuZCBrd2FyZ2Fubm90YXRpb24uIENoYW5nZSB0aGUgY29sdW1uIG9mZnNldCBvZiBhc3QuQXR0cmlidXRlIHRvIGJlCisgIGF0IHRoZSBhdHRyaWJ1dGUgbmFtZS4KKworLSBJc3N1ZSAjMTc0MzQ6IFByb3Blcmx5IHJhaXNlIGEgU3ludGF4RXJyb3Igd2hlbiBhIHN0cmluZyBvY2N1cnMgYmV0d2VlbiBmdXR1cmUKKyAgaW1wb3J0cy4KKworLSBJc3N1ZSAjMTcxMTc6IEltcG9ydCBhbmQgQGltcG9ydGxpYi51dGlsLnNldF9sb2FkZXIgbm93IHNldCBfX2xvYWRlcl9fIHdoZW4KKyAgaXQgaGFzIGEgdmFsdWUgb2YgTm9uZSBvciB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QuCisKKy0gSXNzdWUgIzE3MDMyOiBUaGUgImdsb2JhbCIgaW4gdGhlICJOYW1lRXJyb3I6IGdsb2JhbCBuYW1lICd4JyBpcyBub3QgZGVmaW5lZCIKKyAgZXJyb3IgbWVzc2FnZSBoYXMgYmVlbiByZW1vdmVkLiAgUGF0Y2ggYnkgUmFtIFJhY2h1bS4KIAogLSBJc3N1ZSAjMTgwODA6IFdoZW4gYnVpbGRpbmcgYSBDIGV4dGVuc2lvbiBtb2R1bGUgb24gT1MgWCwgaWYgdGhlIGNvbXBpbGVyCiAgIGlzIG92ZXJyaWRlbiB3aXRoIHRoZSBDQyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdXNlIHRoZSBuZXcgY29tcGlsZXIgYXMKQEAgLTIwMywxMSArNjQyLDEzMCBAQAogLSBJc3N1ZSAjMTgxMTM6IEZpeGVkIGEgcmVmY291bnQgbGVhayBpbiB0aGUgY3Vyc2VzLnBhbmVsIG1vZHVsZSdzCiAgIHNldF91c2VycHRyKCkgbWV0aG9kLiAgUmVwb3J0ZWQgYnkgQXRzdW8gSXNoaW1vdG8uCiAKLUMgQVBJCistIEltcGxlbWVudCBQRVAgNDQzICJTaW5nbGUtZGlzcGF0Y2ggZ2VuZXJpYyBmdW5jdGlvbnMiLgorCistIEltcGxlbWVudCBQRVAgNDM1ICJBZGRpbmcgYW4gRW51bSB0eXBlIHRvIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSIuCisKK1Rlc3RzCiAtLS0tLQogCi0tIElzc3VlICMxODM1MTogRml4IHZhcmlvdXMgaXNzdWVzIHdpdGggYSBoZWxwZXIgZnVuY3Rpb24gaW4gaW1wb3J0bGliIHVzZWQKLSAgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgKGFuZCB0aHVzIGJ5IGV4dGVuc2lvbiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZSgpIGFuZCBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KCkpLgorLSBJc3N1ZSAjMTgyNzM6IG1vdmUgdGhlIHRlc3RzIGluIExpYi90ZXN0L2pzb25fdGVzdHMgdG8gTGliL3Rlc3QvdGVzdF9qc29uCisgIGFuZCBtYWtlIHRoZW0gZGlzY292ZXJhYmxlIGJ5IHVuaXR0ZXN0LiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIEZpeCBhIGZjbnRsIHRlc3QgY2FzZSBvbiBLRnJlZUJTRCwgRGViaWFuICM3MDg2NTMgKFBldHIgU2FsaW5nZXIpLgorCistIElzc3VlICMxODM5NjogRml4IHNwdXJpb3VzIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NpZ25hbCBvbiBXaW5kb3dzIHdoZW4KKyAgZmF1bHRoYW5kbGVyIGlzIGVuYWJsZWQgKFBhdGNoIGJ5IEplcmVteSBLbG90aCkKKworLSBJc3N1ZSAjMTcwNDY6IEZpeCBicm9rZW4gdGVzdF9leGVjdXRhYmxlX3dpdGhvdXRfY3dkIGluIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTU0MTU6IEFkZCBuZXcgdGVtcF9kaXIoKSBhbmQgY2hhbmdlX2N3ZCgpIGNvbnRleHQgbWFuYWdlcnMgdG8KKyAgdGVzdC5zdXBwb3J0LCBhbmQgcmVmYWN0b3IgdGVtcF9jd2QoKSB0byB1c2UgdGhlbS4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTQ5NDogdGVzdC5zdXBwb3J0IGlzIG5vdyBhIHBhY2thZ2UgcmF0aGVyIHRoYW4gYSBtb2R1bGUgKEluaXRpYWwKKyAgcGF0Y2ggYnkgSW5kcmEgVGFsaXApCisKKy0gSXNzdWUgIzE3OTQ0OiB0ZXN0X3ppcGZpbGUgbm93IGRpc2NvdmVyYWJsZSBhbmQgdXNlcyBzdWJjbGFzc2luZyB0bworICBnZW5lcmF0ZSB0ZXN0cyBmb3IgZGlmZmVyZW50IGNvbXByZXNzaW9uIHR5cGVzLiAgRml4ZWQgYSBidWcgd2l0aCBza2lwcGluZworICBzb21lIHRlc3RzIGR1ZSB0byB1c2Ugb2YgZXhoYXVzdGVkIGl0ZXJhdG9ycy4KKworLSBJc3N1ZSAjMTgyNjY6IHRlc3RfbGFyZ2VmaWxlIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IGFuZAorICBzdXBwb3J0cyBydW5uaW5nIG9ubHkgc2VsZWN0ZWQgdGVzdHMuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3NzY3OiB0ZXN0X2xvY2FsZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxODM3NTogQXNzdW1lIC0tcmFuZG9taXplIHdoZW4gLS1yYW5kc2VlZCBpcyB1c2VkIGZvciBydW5uaW5nIHRoZQorICB0ZXN0c3VpdGUuCisKKy0gSXNzdWUgIzExMTg1OiBGaXggdGVzdF93YWl0NCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KKworLSBJc3N1ZSAjMTgyMDc6IEZpeCB0ZXN0X3NzbCBmb3Igc29tZSB2ZXJzaW9ucyBvZiBPcGVuU1NMIHRoYXQgaWdub3JlIHNlY29uZHMKKyAgaW4gQVNOMV9USU1FIGZpZWxkcy4KKworLSBJc3N1ZSAjMTgwOTQ6IHRlc3RfdXVpZCBubyBtb3JlIHJlcG9ydHMgc2tpcHBlZCB0ZXN0cyBhcyBwYXNzZWQuCisKKy0gSXNzdWUgIzE3OTkyOiBBZGQgdGltZW91dHMgdG8gYXN5bmNvcmUgYW5kIGFzeW5jaGF0IHRlc3RzIHNvIHRoYXQgdGhleSB3b24ndAorICBhY2NpZGVudGFsbHkgaGFuZy4KKworLSBJc3N1ZSAjMTc4MzM6IEZpeCB0ZXN0X2dkYiBmYWlsdXJlcyBzZWVuIG9uIG1hY2hpbmVzIHdoZXJlIGRlYnVnIHN5bWJvbHMKKyAgZm9yIGdsaWJjIGFyZSBhdmFpbGFibGUgKHNlZW4gb24gUFBDNjQgTGludXgpLgorCistIElzc3VlICM3ODU1OiBBZGQgdGVzdHMgZm9yIGN0eXBlcy93aW5yZWcgZm9yIGlzc3VlcyBmb3VuZCBpbiBJcm9uUHl0aG9uLgorICBJbml0aWFsIHBhdGNoIGJ5IERpbm8gVmllaGxhbmQuCisKKy0gSXNzdWUgIzExMDc4OiB0ZXN0X19fYWxsX18gbm93IGNoZWNrcyBmb3IgZHVwbGljYXRlcyBpbiBfX2FsbF9fLgorICBJbml0aWFsIHBhdGNoIGJ5IFIuIERhdmlkIE11cnJheS4KKworLSBJc3N1ZSAjMTc3MTI6IEZpeCB0ZXN0X2dkYiBmYWlsdXJlcyBvbiBVYnVudHUgMTMuMDQuCisKKy0gSXNzdWUgIzE3ODM1OiBGaXggdGVzdF9pbyB3aGVuIHRoZSBkZWZhdWx0IE9TIHBpcGUgYnVmZmVyIHNpemUgaXMgbGFyZ2VyCisgIHRoYW4gb25lIG1pbGxpb24gYnl0ZXMuCisKKy0gSXNzdWUgIzE3MDY1OiBVc2UgcHJvY2Vzcy11bmlxdWUga2V5IGZvciB3aW5yZWcgdGVzdHMgdG8gYXZvaWQgZmFpbHVyZXMgaWYKKyAgdGVzdCBpcyBydW4gbXVsdGlwbGUgdGltZXMgaW4gcGFyYWxsZWwgKGVnOiBvbiBhIGJ1aWxkYm90IGhvc3QpLgorCistIElzc3VlICMxMjgyMDogYWRkIHRlc3RzIGZvciB0aGUgeG1sLmRvbS5taW5pY29tcGF0IG1vZHVsZS4KKyAgUGF0Y2ggYnkgSm9obiBDaGFuZGxlciBhbmQgUGhpbCBDb25uZWxsLgorCistIElzc3VlICMxNzY5MTogdGVzdF91bml2bmV3bGluZXMgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTc3OTA6IHRlc3Rfc2V0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3Nzg5OiB0ZXN0X3JhbmRvbSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzc3OTogdGVzdF9vc3hfZW52IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3NzY2OiB0ZXN0X2l0ZXJsZW4gbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTc2OTA6IHRlc3RfdGltZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzY5MjogdGVzdF9zcWxpdGUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTE5OTU6IHRlc3RfcHlkb2MgZG9lc24ndCBpbXBvcnQgYWxsIHN5cy5wYXRoIG1vZHVsZXMgYW55bW9yZS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxODQ0MDogQ2xhcmlmeSB0aGF0IGBoYXNoKClgIGNhbiB0cnVuY2F0ZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbgorICBvYmplY3QncyBjdXN0b20gYF9faGFzaF9fKClgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTc4NDQ6IEFkZCBsaW5rcyB0byBlbmNvZGVycyBhbmQgZGVjb2RlcnMgZm9yIGJ5dGVzLXRvLWJ5dGVzIGNvZGVjcy4KKworLSBJc3N1ZSAjMTQwOTc6IGltcHJvdmUgdGhlICJpbnRyb2R1Y3Rpb24iIHBhZ2Ugb2YgdGhlIHR1dG9yaWFsLgorCistIElzc3VlICMxNzk3NzogVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjYWRlZmF1bHQgYXJndW1lbnQncyBkZWZhdWx0IHZhbHVlCisgIGluIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oKSBpcyBmaXhlZCB0byBtYXRjaCB0aGUgY29kZS4KKworLSBJc3N1ZSAjMTU5NDA6IFNwZWNpZnkgZWZmZWN0IG9mIGxvY2FsZSBvbiB0aW1lIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjNjY5NjogYWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBQcm9maWxlIG9iamVjdHMsIGFuZCBpbXByb3ZlCisgIHByb2ZpbGUvY1Byb2ZpbGUgZG9jcy4gIFBhdGNoIGJ5IFRvbSBQaW5ja25leS4KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE4MzUxOiBGaXggdmFyaW91cyBpc3N1ZXMgaW4gYSBmdW5jdGlvbiBpbiBpbXBvcnRsaWIgcHJvdmlkZWQgdG8gaGVscAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSAoYW5kIHRodXMgYnkgZXh0ZW5zaW9uIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKCkgYW5kIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgoKSkuCisKKy0gSXNzdWUgIzkzNjk6IFRoZSB0eXBlcyBvZiBgY2hhcipgIGFyZ3VtZW50cyBvZiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKSBhbmQKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZCgpIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuICBCYXNlZCBvbiBwYXRjaGVzIGJ5CisgIErDtnJnIE3DvGxsZXIgYW5kIExhcnMgQnVpdGluY2suCisKKy0gSXNzdWUgIzE3MjA2OiBQeV9DTEVBUigpLCBQeV9ERUNSRUYoKSwgUHlfWElOQ1JFRigpIGFuZCBQeV9YREVDUkVGKCkgbm93CisgIGV4cGFuZCB0aGVpciBhcmd1bWVudHMgb25jZSBpbnN0ZWFkIG9mIG11bHRpcGxlIHRpbWVzLiAgUGF0Y2ggd3JpdHRlbiBieSBJbGxpYQorICBQb2xvc3VraGluLgorCistIElzc3VlICMxNzUyMjogQWRkIHRoZSBQeUdJTFN0YXRlX0NoZWNrKCkgQVBJLgorCistIElzc3VlICMxNzMyNzogQWRkIFB5RGljdF9TZXREZWZhdWx0LgogCiBJRExFCiAtLS0tCkBAIC0yNDMsNjggKzgwMSw0NiBAQAogCiAtIElzc3VlICMxNDE0NjogSGlnaGxpZ2h0IHNvdXJjZSBsaW5lIHdoaWxlIGRlYnVnZ2luZyBvbiBXaW5kb3dzLgogCistIElzc3VlICMxNzgzODogQWxsb3cgc3lzLnN0ZGluIHRvIGJlIHJlYXNzaWduZWQuCisKKy0gSXNzdWUgIzEzNDk1OiBBdm9pZCBsb2FkaW5nIHRoZSBjb2xvciBkZWxlZ2F0b3IgdHdpY2UgaW4gSURMRS4KKworLSBJc3N1ZSAjMTc3OTg6IEFsbG93IElETEUgdG8gZWRpdCBuZXcgZmlsZXMgd2hlbiBzcGVjaWZpZWQgb24gY29tbWFuZCBsaW5lLgorCistIElzc3VlICMxNDczNTogVXBkYXRlIElETEUgZG9jcyB0byBvbWl0ICJDb250cm9sLXogb24gV2luZG93cyIuCisKIC0gSXNzdWUgIzE3NTMyOiBBbHdheXMgaW5jbHVkZSBPcHRpb25zIG1lbnUgZm9yIElETEUgb24gT1MgWC4KICAgUGF0Y2ggYnkgR3VpbGhlcm1lIFNpbcO1ZXMuCiAKLVRlc3RzCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzE4NTY5OiBUaGUgaW5zdGFsbGVyIG5vdyBhZGRzIC5weSB0byB0aGUgUEFUSEVYVCB2YXJpYWJsZSB3aGVuIGV4dGVuc2lvbnMKKyAgYXJlIHJlZ2lzdGVyZWQuIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKK0J1aWxkCiAtLS0tLQogCi0tIElzc3VlICMxODM1NzogYWRkIHRlc3RzIGZvciBkaWN0dmlldyBzZXQgZGlmZmVyZW5jZS4KLSAgUGF0Y2ggYnkgRnJhc2VyIFR3ZWVkYWxlLgorLSBJc3N1ZSAjMTYwNjc6IEFkZCBkZXNjcmlwdGlvbiBpbnRvIE1TSSBmaWxlIHRvIHJlcGxhY2UgaW5zdGFsbGVyJ3MgCisgIHRlbXBvcmFyeSBuYW1lLgogCi0tIElzc3VlICMxODI3MzogbW92ZSB0aGUgdGVzdHMgaW4gTGliL3Rlc3QvanNvbl90ZXN0cyB0byBMaWIvdGVzdC90ZXN0X2pzb24KLSAgYW5kIG1ha2UgdGhlbSBkaXNjb3ZlcmFibGUgYnkgdW5pdHRlc3QuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCistIElzc3VlICMxODI1NzogRml4IHJlYWRsaW5rIHVzYWdlIGluIHB5dGhvbi1jb25maWcuICBJbnN0YWxsIHRoZSBweXRob24KKyAgdmVyc2lvbiBhZ2FpbiBvbiBEYXJ3aW4uCiAKLS0gRml4IGEgZmNudGwgdGVzdCBjYXNlIG9uIEtGcmVlQlNELCBEZWJpYW4gIzcwODY1MyAoUGV0ciBTYWxpbmdlcikuCistIElzc3VlICMxODQ4MTogQWRkIEMgY292ZXJhZ2UgcmVwb3J0aW5nIHdpdGggZ2NvdiBhbmQgbGNvdi4gQSBuZXcgbWFrZSB0YXJnZXQKKyAgImNvdmVyYWdlLXJlcG9ydCIgY3JlYXRlcyBhbiBpbnN0cnVtZW50ZWQgUHl0aG9uIGJ1aWxkLCBydW5zIHVuaXQgdGVzdHMKKyAgYW5kIGNyZWF0ZXMgYSBIVE1MLiBUaGUgcmVwb3J0IGNhbiBiZSB1cGRhdGVkIHdpdGggIm1ha2UgY292ZXJhZ2UtbGNvdiIuCiAKLS0gSXNzdWUgIzE4Mzk2OiBGaXggc3B1cmlvdXMgdGVzdCBmYWlsdXJlIGluIHRlc3Rfc2lnbmFsIG9uIFdpbmRvd3Mgd2hlbgotICBmYXVsdGhhbmRsZXIgaXMgZW5hYmxlZCAoUGF0Y2ggYnkgSmVyZW15IEtsb3RoKQorLSBJc3N1ZSAjMTc4NDU6IENsYXJpZmllZCB0aGUgbWVzc2FnZSBwcmludGVkIHdoZW4gc29tZSBtb2R1bGUgYXJlIG5vdCBidWlsdC4KIAotLSBJc3N1ZSAjMTcwNDY6IEZpeCBicm9rZW4gdGVzdF9leGVjdXRhYmxlX3dpdGhvdXRfY3dkIGluIHRlc3Rfc3VicHJvY2Vzcy4KKy0gSXNzdWUgIzE4MjU2OiBDb21waWxhdGlvbiBmaXggZm9yIHJlY2VudCBBSVggcmVsZWFzZXMuICBQYXRjaCBieQorICBEYXZpZCBFZGVsc29obi4KIAotLSBJc3N1ZSAjMTU0MTU6IEFkZCBuZXcgdGVtcF9kaXIoKSBhbmQgY2hhbmdlX2N3ZCgpIGNvbnRleHQgbWFuYWdlcnMgdG8KLSAgdGVzdC5zdXBwb3J0LCBhbmQgcmVmYWN0b3IgdGVtcF9jd2QoKSB0byB1c2UgdGhlbS4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorLSBJc3N1ZSAjMTc1NDc6IEluIGNvbmZpZ3VyZSwgZXhwbGljaXRseSBwYXNzIC1XZm9ybWF0IGZvciB0aGUgYmVuZWZpdCBmb3IgR0NDCisgIDQuOC4KIAotLSBJc3N1ZSAjMTU0OTQ6IHRlc3Quc3VwcG9ydCBpcyBub3cgYSBwYWNrYWdlIHJhdGhlciB0aGFuIGEgbW9kdWxlIChJbml0aWFsCi0gIHBhdGNoIGJ5IEluZHJhIFRhbGlwKQotCi0tIElzc3VlICMxNzk0NDogdGVzdF96aXBmaWxlIG5vdyBkaXNjb3ZlcmFibGUgYW5kIHVzZXMgc3ViY2xhc3NpbmcgdG8KLSAgZ2VuZXJhdGUgdGVzdHMgZm9yIGRpZmZlcmVudCBjb21wcmVzc2lvbiB0eXBlcy4gIEZpeGVkIGEgYnVnIHdpdGggc2tpcHBpbmcKLSAgc29tZSB0ZXN0cyBkdWUgdG8gdXNlIG9mIGV4aGF1c3RlZCBpdGVyYXRvcnMuCi0KLS0gSXNzdWUgIzE4MjY2OiB0ZXN0X2xhcmdlZmlsZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSBhbmQKLSAgc3VwcG9ydHMgcnVubmluZyBvbmx5IHNlbGVjdGVkIHRlc3RzLiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzc2NzogdGVzdF9sb2NhbGUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTgzNzU6IEFzc3VtZSAtLXJhbmRvbWl6ZSB3aGVuIC0tcmFuZHNlZWQgaXMgdXNlZCBmb3IgcnVubmluZyB0aGUKLSAgdGVzdHN1aXRlLgotCi0tIElzc3VlICMxMTE4NTogRml4IHRlc3Rfd2FpdDQgdW5kZXIgQUlYLiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCi0KLS0gSXNzdWUgIzE3NjkxOiB0ZXN0X3VuaXZuZXdsaW5lcyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxODA5NDogdGVzdF91dWlkIG5vIG1vcmUgcmVwb3J0cyBza2lwcGVkIHRlc3RzIGFzIHBhc3NlZC4KLQotLSBJc3N1ZSAjMTE5OTU6IHRlc3RfcHlkb2MgZG9lc24ndCBpbXBvcnQgYWxsIHN5cy5wYXRoIG1vZHVsZXMgYW55bW9yZS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODQ0MDogQ2xhcmlmeSB0aGF0IGBoYXNoKClgIGNhbiB0cnVuY2F0ZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbgotICBvYmplY3QncyBjdXN0b20gYF9faGFzaF9fKClgIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTc5NTM6IE1lbnRpb24gdGhhdCB5b3Ugc2hvdWxkbid0IHJlcGxhY2Ugc3lzLm1vZHVsZXMgYW5kIGRlbGV0aW5nIGtleQotICBpdGVtcyB3aWxsIGNhdXNlIFB5dGhvbiB0byBub3QgYmUgaGFwcHkuCi0KLS0gSXNzdWUgIzE3ODQ0OiBBZGQgbGlua3MgdG8gZW5jb2RlcnMgYW5kIGRlY29kZXJzIGZvciBieXRlcy10by1ieXRlcyBjb2RlY3MuCi0KLS0gSXNzdWUgIzE0MDk3OiBpbXByb3ZlIHRoZSAiaW50cm9kdWN0aW9uIiBwYWdlIG9mIHRoZSB0dXRvcmlhbC4KLQotLSBJc3N1ZSAjMTc5Nzc6IFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgY2FkZWZhdWx0IGFyZ3VtZW50J3MgZGVmYXVsdCB2YWx1ZQotICBpbiB1cmxsaWIucmVxdWVzdC51cmxvcGVuKCkgaXMgZml4ZWQgdG8gbWF0Y2ggdGhlIGNvZGUuCistIElzc3VlICMxNTE3MjogRG9jdW1lbnQgTkFTTSAyLjEwKyBhcyByZXF1aXJlbWVudCBmb3IgYnVpbGRpbmcgT3BlblNTTCAxLjAuMQorICBvbiBXaW5kb3dzLgogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KQEAgLTMxOSwyODcgKzg1NSw5IEBACiAtIElzc3VlICMxODQ0OTogTWFrZSBUb29scy9kZW1vL3NzMS5weSB3b3JrIGFnYWluIG9uIFB5dGhvbiAzLiAgUGF0Y2ggYnkKICAgRsOpdnJ5IFRoaWJhdWx0LgogCi0tIElzc3VlICMxNTIzOTogTWFrZSBta3N0cmluZ3ByZXAucHkgd29yayBhZ2FpbiBvbiBQeXRob24gMy4KLQogLSBJc3N1ZSAjMTI5OTA6IFRoZSAiUHl0aG9uIExhdW5jaGVyIiBvbiBPU1ggY291bGQgbm90IGxhdW5jaCBweXRob24gc2NyaXB0cwogICB0aGF0IGhhdmUgcGF0aHMgdGhhdCBpbmNsdWRlIHdpZGUgY2hhcmFjdGVycy4KIAotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE2MDY3OiBBZGQgZGVzY3JpcHRpb24gaW50byBNU0kgZmlsZSB0byByZXBsYWNlIGluc3RhbGxlcidzIHRlbXBvcmFyeSBuYW1lLgotCi0tIElzc3VlICMxODI1NjogQ29tcGlsYXRpb24gZml4IGZvciByZWNlbnQgQUlYIHJlbGVhc2VzLiAgUGF0Y2ggYnkKLSAgRGF2aWQgRWRlbHNvaG4uCi0KLS0gSXNzdWUgIzE1MTcyOiBEb2N1bWVudCBOQVNNIDIuMTArIGFzIHJlcXVpcmVtZW50IGZvciBidWlsZGluZyBPcGVuU1NMIDEuMC4xCi0gIG9uIFdpbmRvd3MuCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEzLU1heS0yMDEzKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTcyMzc6IEZpeCBjcmFzaCBpbiB0aGUgQVNDSUkgZGVjb2RlciBvbiBtNjhrLgotCi0tIElzc3VlICMxNzQwODogQXZvaWQgdXNpbmcgYW4gb2Jzb2xldGUgaW5zdGFuY2Ugb2YgdGhlIGNvcHlyZWcgbW9kdWxlIHdoZW4KLSAgdGhlIGludGVycHJldGVyIGlzIHNodXRkb3duIGFuZCB0aGVuIHN0YXJ0ZWQgYWdhaW4uCi0KLS0gSXNzdWUgIzE3ODYzOiBJbiB0aGUgaW50ZXJhY3RpdmUgY29uc29sZSwgZG9uJ3QgbG9vcCBmb3JldmVyIGlmIHRoZSBlbmNvZGluZwotICBjYW4ndCBiZSBmZXRjaGVkIGZyb20gc3RkaW4uCi0KLS0gSXNzdWUgIzE3ODY3OiBSYWlzZSBhbiBJbXBvcnRFcnJvciBpZiBfX2ltcG9ydF9fIGlzIG5vdCBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCi0KLS0gSXNzdWUgIzE3ODU3OiBQcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdpdGggcHJlLTMuNS4wIHZlcnNpb25zIG9mIHNxbGl0ZTMsCi0gIHN1Y2ggYXMgd2FzIHNoaXBwZWQgd2l0aCBDZW50b3MgNSBhbmQgTWFjIE9TIFggMTAuNC4KLQotLSBJc3N1ZSAjMTc0MTM6IHN5cy5zZXR0cmFjZSBjYWxsYmFja3Mgd2VyZSBiZWluZyBwYXNzZWQgYSBzdHJpbmcgaW5zdGVhZCBvZiBhbgotICBleGNlcHRpb24gaW5zdGFuY2UgZm9yIHRoZSAndmFsdWUnIGVsZW1lbnQgb2YgdGhlIGFyZyB0dXBsZSBpZiB0aGUgZXhjZXB0aW9uCi0gIG9yaWdpbmF0ZWQgZnJvbSBDIGNvZGU7IG5vdyBhbiBleGNlcHRpb24gaW5zdGFuY2UgaXMgYWx3YXlzIHByb3ZpZGVkLgotCi0tIElzc3VlICMxNzc4MjogRml4IHVuZGVmaW5lZCBiZWhhdmlvdXIgb24gcGxhdGZvcm1zIHdoZXJlCi0gIGBgc3RydWN0IHRpbWVzcGVjYGAncyAidHZfbnNlYyIgbWVtYmVyIGlzIG5vdCBhIEMgbG9uZy4KLQotLSBJc3N1ZSAjMTc3MTU6IEZpeCBzZWdtZW50YXRpb24gZmF1bHQgZnJvbSByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpbiBhIF9fdHJ1bmNfXwotICBtZXRob2QuCi0KLS0gSXNzdWUgIzE2NDQ3OiBGaXhlZCBwb3RlbnRpYWwgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gc2V0dGluZyBfX25hbWVfXyBvbiBhCi0gIGNsYXNzLgotCi0tIElzc3VlICMxNzY2OTogRml4IGNyYXNoIGludm9sdmluZyBmaW5hbGl6YXRpb24gb2YgZ2VuZXJhdG9ycyB1c2luZyB5aWVsZCBmcm9tLgotCi0tIElzc3VlICMxNzYxOTogTWFrZSBpbnB1dCgpIGNoZWNrIGZvciBDdHJsLUMgY29ycmVjdGx5IG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE3NjEwOiBEb24ndCByZWx5IG9uIG5vbi1zdGFuZGFyZCBiZWhhdmlvciBvZiB0aGUgQyBxc29ydCgpIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxNzM1NzogQWRkIG1pc3NpbmcgdmVyYm9zaXR5IG91dHB1dCB3aGVuIHVzaW5nIC12Ly12di4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNzYwNjogRml4ZWQgc3VwcG9ydCBvZiBlbmNvZGVkIGJ5dGUgc3RyaW5ncyBpbiB0aGUgWE1MR2VuZXJhdG9yCi0gIGNoYXJhY3RlcnMoKSBhbmQgaWdub3JhYmxlV2hpdGVzcGFjZSgpIG1ldGhvZHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZWJhc3RpYW4KLSAgT3J0aXogVmFzcXVlei4KLQotLSBJc3N1ZSAjMTc3MzI6IElnbm9yZSBkaXN0dXRpbHMuY2ZnIG9wdGlvbnMgcGVydGFpbmluZyB0byBpbnN0YWxsIHBhdGhzIGlmIGEKLSAgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUuCi0KLS0gSXNzdWUgIzExNTkwNTE6IEJhY2sgb3V0IGEgZml4IGZvciBoYW5kbGluZyBjb3JydXB0ZWQgZ3ppcCBmaWxlcyB0aGF0Ci0gIGJyb2tlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotCi0tIElzc3VlICMxNzkxNTogRml4IGludGVyb3BlcmFiaWxpdHkgb2YgeG1sLnNheCB3aXRoIGZpbGUgb2JqZWN0cyByZXR1cm5lZCBieQotICBjb2RlY3Mub3BlbigpLgotCi0tIElzc3VlICMxNjYwMTogUmVzdGFydGluZyBpdGVyYXRpb24gb3ZlciB0YXJmaWxlIG5vIG1vcmUgY29udGludWVzIGZyb20gd2hlcmUKLSAgaXQgbGVmdCBvZmYuICBQYXRjaCBieSBNaWNoYWVsIEJpcnR3ZWxsLgotCi0tIElzc3VlICMxNzI4OTogVGhlIHJlYWRsaW5lIG1vZHVsZSBub3cgcGxheXMgbmljZXIgd2l0aCBleHRlcm5hbCBtb2R1bGVzCi0gIG9yIGFwcGxpY2F0aW9ucyBjaGFuZ2luZyB0aGUgcmxfY29tcGxldGVyX3dvcmRfYnJlYWtfY2hhcmFjdGVycyBnbG9iYWwKLSAgdmFyaWFibGUuICBJbml0aWFsIHBhdGNoIGJ5IEJyYWRsZXkgRnJvZWhsZS4KLQotLSBJc3N1ZSAjMTIxODE6IHNlbGVjdCBtb2R1bGU6IEZpeCBzdHJ1Y3Qga2V2ZW50IGRlZmluaXRpb24gb24gT3BlbkJTRCA2NC1iaXQKLSAgcGxhdGZvcm1zLiBQYXRjaCBieSBGZWRlcmljbyBTY2h3aW5kdC4KLQotLSBJc3N1ZSAjMTQxNzM6IEF2b2lkIGNyYXNoaW5nIHdoZW4gcmVhZGluZyBhIHNpZ25hbCBoYW5kbGVyIGR1cmluZwotICBpbnRlcnByZXRlciBzaHV0ZG93bi4KLQotLSBJc3N1ZSAjMTYzMTY6IG1pbWV0eXBlcyBub3cgcmVjb2duaXplcyB0aGUgLnh6IGFuZCAudHh6ICgudGFyLnh6KSBleHRlbnNpb25zLgotCi0tIElzc3VlICMxNTkwMjogRml4IGltcC5sb2FkX21vZHVsZSgpIGFjY2VwdGluZyBOb25lIGFzIGEgZmlsZSB3aGVuIGxvYWRpbmcgYW4KLSAgZXh0ZW5zaW9uIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTc4MDI6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBodG1sLnBhcnNlci4gIEluaXRpYWwgdGVzdHMgYnkKLSAgVGhvbWFzIEJhcmxvdy4KLQotLSBJc3N1ZSAjMTU1MzU6IEZpeCBuYW1lZHR1cGxlIHBpY2tsZXMgd2hpY2ggd2VyZSBwaWNraW5nIHVwIHRoZSBPcmRlcmVkRGljdAotICBpbnN0ZWFkIG9mIGp1c3QgdGhlIHVuZGVybHlpbmcgdHVwbGUuCi0KLS0gSXNzdWUgIzE3MTkyOiBSZXN0b3JlIHRoZSBwYXRjaCBmb3IgSXNzdWUgIzExNzI5IHdoaWNoIHdhcyBvbW1pdHRlZCBpbgotICAzLjMuMSB3aGVuIHVwZGF0aW5nIHRoZSBidW5kbGVkIHZlcnNpb24gb2YgbGliZmZpIHVzZWQgYnkgY3R5cGVzLiAgVXBkYXRlCi0gIG1hbnkgbGliZmZpIGZpbGVzIHRoYXQgd2VyZSBtaXNzZWQgaW4gMy4zLjEncyB1cGRhdGUgdG8gbGliZmZpLTMuMC4xMy4KLQotLSBJc3N1ZSAjMTczNTg6IE1vZHVsZXMgbG9hZGVkIGJ5IGltcC5sb2FkX3NvdXJjZSgpIGFuZCBsb2FkX2NvbXBpbGVkKCkgKGFuZCBieQotICBleHRlbnRpb24gbG9hZF9tb2R1bGUoKSkgbm93IGhhdmUgYSBiZXR0ZXIgY2hhbmNlIG9mIHdvcmtpbmcgd2hlbiByZWxvYWRlZC4KLQotLSBJc3N1ZSAjMTczNTM6IFBsaXN0bGliIGVtaXR0ZWQgZW1wdHkgZGF0YSB0YWdzIHdpdGggZGVlcGx5IG5lc3RlZCBkYXRhc3RydWN0dXJlcwotCi0tIElzc3VlICMxMTcxNDogVXNlICd3aXRoJyBzdGF0ZW1lbnRzIHRvIGFzc3VyZSBhIFNlbWFwaG9yZSByZWxlYXNlcyBhCi0gIGNvbmRpdGlvbiB2YXJpYWJsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBSYWNoZWwuCi0KLS0gSXNzdWUgIzE3Nzk1OiBSZXZlcnRlZCBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZSBpbiBTeXNMb2dIYW5kbGVyIHdpdGgKLSAgVW5peCBkb21haW4gc29ja2V0cy4KLQotLSBJc3N1ZSAjMTc1NTU6IEZpeCBGb3JrQXdhcmVUaHJlYWRMb2NrIHNvIHRoYXQgc2l6ZSBvZiBhZnRlciBmb3JrCi0gIHJlZ2lzdHJ5IGRvZXMgbm90IGdyb3cgZXhwb25lbnRpYWxseSB3aXRoIGdlbmVyYXRpb24gb2YgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTc3MDc6IG11bHRpcHJvY2Vzc2luZy5RdWV1ZSdzIGdldCgpIG1ldGhvZCBkb2VzIG5vdCBibG9jayBmb3Igc2hvcnQKLSAgdGltZW91dHMuCi0KLS0gSXN1c2UgIzE3NzIwOiBGaXggdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBwaWNrbGUuVW5waWNrbGVyIHRvIGNvcnJlY3RseQotICBwcm9jZXNzIHRoZSBBUFBFTkRTIG9wY29kZSB3aGVuIGl0IGlzIHVzZWQgb24gbm9uLWxpc3Qgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTcwMTI6IHNodXRpbC53aGljaCgpIG5vIGxvbmdlciBmYWxsYmFja3MgdG8gdGhlIFBBVEggZW52aXJvbm1lbnQKLSAgdmFyaWFibGUgaWYgZW1wdHkgcGF0aCBhcmd1bWVudCBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNzcxMDogRml4IHBpY2tsZSByYWlzaW5nIGEgU3lzdGVtRXJyb3Igb24gYm9ndXMgaW5wdXQuCi0KLS0gSXNzdWUgIzE3MzQxOiBJbmNsdWRlIHRoZSBpbnZhbGlkIG5hbWUgaW4gdGhlIGVycm9yIG1lc3NhZ2VzIGZyb20gcmUgYWJvdXQKLSAgaW52YWxpZCBncm91cCBuYW1lcy4KLQotLSBJc3N1ZSAjMTc3MDI6IG9zLmVudmlyb24gbm93IHJhaXNlcyBLZXlFcnJvciB3aXRoIHRoZSBvcmlnaW5hbCBlbnZpcm9ubWVudAotICB2YXJpYWJsZSBuYW1lIChzdHIgb24gVU5JWCksIGluc3RlYWQgb2YgdXNpbmcgdGhlIGVuY29kZWQgbmFtZSAoYnl0ZXMgb24KLSAgVU5JWCkuCi0KLS0gSXNzdWUgIzE2MTYzOiBNYWtlIHRoZSBpbXBvcnRsaWIgYmFzZWQgdmVyc2lvbiBvZiBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzCi0gIHdvcmsgZm9yIHN1Ym1vZHVsZXMuIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KLQotLSBJc3N1ZSAjMTY4MDQ6IEZpeCBhIGJ1ZyBpbiB0aGUgJ3NpdGUnIG1vZHVsZSB0aGF0IGNhdXNlZCBydW5uaW5nCi0gICdweXRob24gLVMgLW0gc2l0ZScgdG8gaW5jb3JyZWN0bHkgdGhyb3cgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICMxNzAxNjogR2V0IHJpZCBvZiBwb3NzaWJsZSBwb2ludGVyIHdyYXBhcm91bmRzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cwotICBpbiB0aGUgcmUgbW9kdWxlLiAgUGF0Y2ggYnkgTmlja29sYWkgWmVsZG92aWNoLgotCi0tIElzc3VlICMxNjY1ODogYWRkIG1pc3NpbmcgcmV0dXJuIHRvIEhUVFBDb25uZWN0aW9uLnNlbmQoKQotICBQYXRjaCBieSBKZWZmIEtudXBwLgotCi0tIElzc3VlICMxNDk3MTogdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgbm8gbG9uZ2VyIGdldHMgY29uZnVzZWQgd2hlbiBhIGZ1bmN0aW9uCi0gIGhhcyBhIGRpZmZlcmVudCBfX25hbWVfXyB0aGFuIGl0cyBuYW1lIGluIHRoZSBUZXN0Q2FzZSBjbGFzcyBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxNzY3ODogRml4IERlcHJlY2F0aW9uV2FybmluZyBpbiB0aGUgaHR0cC9jb29raWVqYXIucHkgYnkgY2hhbmdpbmcgdGhlCi0gIHVzYWdlIG9mIGdldF9vcmlnaW5fcmVxX2hvc3QoKSB0byBvcmlnaW5fcmVxX2hvc3QuCi0KLS0gSXNzdWUgIzE3NjY2OiBGaXggcmVhZGluZyBnemlwIGZpbGVzIHdpdGggYW4gZXh0cmEgZmllbGQuCi0KLS0gSXNzdWUgIzE3NTAyOiBQcm9jZXNzIERFRkFVTFQgdmFsdWVzIGluIG1vY2sgc2lkZV9lZmZlY3QgdGhhdCByZXR1cm5zIGl0ZXJhdG9yLgotICBQYXRjaCBieSBNaWNoYWVsIEZvb3JkLgotCi0tIElzc3VlICMxNzU3MjogQXZvaWQgY2hhaW5lZCBleGNlcHRpb25zIHdoaWxlIHBhc3NpbmcgYmFkIGRpcmVjdGl2ZXMgdG8KLSAgdGltZS5zdHJwdGltZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzE3NDM1OiB0aHJlYWRpbmcuVGltZXIncyBfX2luaXRfXyBtZXRob2Qgbm8gbG9uZ2VyIHVzZXMgbXV0YWJsZQotICBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIGFyZ3MgYW5kIGt3YXJncyBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICMxNzUyNjogZml4IGFuIEluZGV4RXJyb3IgcmFpc2VkIHdoaWxlIHBhc3NpbmcgY29kZSB3aXRob3V0IGZpbGVuYW1lIHRvCi0gIGluc3BlY3QuZmluZHNvdXJjZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBUeWxlciBEb3lsZS4KLQotLSBJc3N1ZSAjMTY1NTA6IFVwZGF0ZSB0aGUgb3Bjb2RlIGRlc2NyaXB0aW9ucyBvZiBwaWNrbGV0b29scyB0byB1c2UgdW5zaWduZWQKLSAgaW50ZWdlcnMgd2hlcmUgYXBwcm9wcmlhdGUuICBJbml0aWFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTc4Mzg6IEFsbG93IHN5cy5zdGRpbiB0byBiZSByZWFzc2lnbmVkLgotCi0tIElzc3VlICMxMzQ5NTogQXZvaWQgbG9hZGluZyB0aGUgY29sb3IgZGVsZWdhdG9yIHR3aWNlIGluIElETEUuCi0KLS0gSXNzdWUgIzE3Nzk4OiBBbGxvdyBJRExFIHRvIGVkaXQgbmV3IGZpbGVzIHdoZW4gc3BlY2lmaWVkIG9uIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjMTQ3MzU6IFVwZGF0ZSBJRExFIGRvY3MgdG8gb21pdCAiQ29udHJvbC16IG9uIFdpbmRvd3MiLgotCi0tIElzc3VlICMxNzU4NTogRml4ZWQgSURMRSByZWdyZXNzaW9uLiBOb3cgY2xvc2VzIHdoZW4gdXNpbmcgZXhpdCgpIG9yIHF1aXQoKS4KLQotLSBJc3N1ZSAjMTc2NTc6IFNob3cgZnVsbCBUayB2ZXJzaW9uIGluIElETEUncyBhYm91dCBkaWFsb2cuCi0gIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgotCi0tIElzc3VlICMxNzYxMzogUHJldmVudCB0cmFjZWJhY2sgd2hlbiByZW1vdmluZyBzeW50YXggY29sb3JpemVyIGluIElETEUuCi0KLS0gSXNzdWUgIzEyMDc1ODk6IEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHBhdGNoIGZvciByaWdodC1jbGljayBtZW51IGluIElETEUuCi0KLS0gSXNzdWUgIzE2ODg3OiBJRExFIG5vdyBhY2NlcHRzIENhbmNlbCBpbiB0YWJpZnkvdW50YWJpZnkgZGlhbG9nIGJveC4KLQotLSBJc3N1ZSAjMTc2MjU6IEluIElETEUsIGNsb3NlIHRoZSByZXBsYWNlIGRpYWxvZyBhZnRlciBpdCBpcyB1c2VkLgotCi0tIElzc3VlICMxNDI1NDogSURMRSBub3cgaGFuZGxlcyByZWFkbGluZSBjb3JyZWN0bHkgYWNyb3NzIHNoZWxsIHJlc3RhcnRzLgotCi0tIElzc3VlICMxNzYxNDogSURMRSBubyBsb25nZXIgcmFpc2VzIGV4Y2VwdGlvbiB3aGVuIHF1aWNrbHkgY2xvc2luZyBhIGZpbGUuCi0KLS0gSXNzdWUgIzY2OTg6IElETEUgbm93IG9wZW5zIGp1c3QgYW4gZWRpdG9yIHdpbmRvdyB3aGVuIGNvbmZpZ3VyZWQgdG8gZG8gc28uCi0KLS0gSXNzdWUgIzg5MDA6IFVzaW5nIGtleWJvYXJkIHNob3J0Y3V0cyBpbiBJRExFIHRvIG9wZW4gYSBmaWxlIG5vIGxvbmdlcgotICByYWlzZXMgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICM2NjQ5OiBGaXhlZCBtaXNzaW5nIGV4aXQgc3RhdHVzIGluIElETEUuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTc4MzM6IEZpeCB0ZXN0X2dkYiBmYWlsdXJlcyBzZWVuIG9uIG1hY2hpbmVzIHdoZXJlIGRlYnVnIHN5bWJvbHMKLSAgZm9yIGdsaWJjIGFyZSBhdmFpbGFibGUgKHNlZW4gb24gUFBDNjQgTGludXgpLgotCi0tIElzc3VlICM3ODU1OiBBZGQgdGVzdHMgZm9yIGN0eXBlcy93aW5yZWcgZm9yIGlzc3VlcyBmb3VuZCBpbiBJcm9uUHl0aG9uLgotICBJbml0aWFsIHBhdGNoIGJ5IERpbm8gVmllaGxhbmQuCi0KLS0gSXNzdWUgIzE3NzEyOiBGaXggdGVzdF9nZGIgZmFpbHVyZXMgb24gVWJ1bnR1IDEzLjA0LgotCi0tIElzc3VlICMxNzgzNTogRml4IHRlc3RfaW8gd2hlbiB0aGUgZGVmYXVsdCBPUyBwaXBlIGJ1ZmZlciBzaXplIGlzIGxhcmdlcgotICB0aGFuIG9uZSBtaWxsaW9uIGJ5dGVzLgotCi0tIElzc3VlICMxNzA2NTogVXNlIHByb2Nlc3MtdW5pcXVlIGtleSBmb3Igd2lucmVnIHRlc3RzIHRvIGF2b2lkIGZhaWx1cmVzIGlmCi0gIHRlc3QgaXMgcnVuIG11bHRpcGxlIHRpbWVzIGluIHBhcmFsbGVsIChlZzogb24gYSBidWlsZGJvdCBob3N0KS4KLQotLSBJc3N1ZSAjMTI4MjA6IGFkZCB0ZXN0cyBmb3IgdGhlIHhtbC5kb20ubWluaWNvbXBhdCBtb2R1bGUuCi0gIFBhdGNoIGJ5IEpvaG4gQ2hhbmRsZXIgYW5kIFBoaWwgQ29ubmVsbC4KLQotLSBJc3N1ZSAjMTc3OTA6IHRlc3Rfc2V0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3Nzg5OiB0ZXN0X3JhbmRvbSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzc3OTogdGVzdF9vc3hfZW52IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCi0KLS0gSXNzdWUgIzE3NzY2OiB0ZXN0X2l0ZXJsZW4gbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTc2OTA6IHRlc3RfdGltZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNzY5MjogdGVzdF9zcWxpdGUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMTc4NDM6IFJlbW92ZWQgYnoyIHRlc3QgZGF0YSBmaWxlIHRoYXQgd2FzIHRyaWdnZXJpbmcgZmFsc2UtcG9zaXRpdmUKLSAgdmlydXMgd2FybmluZ3Mgd2l0aCBjZXJ0YWluIGFudGl2aXJ1cyBzb2Z0d2FyZS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTk0MDogU3BlY2lmeSBlZmZlY3Qgb2YgbG9jYWxlIG9uIHRpbWUgZnVuY3Rpb25zLgotCi0tIElzc3VlICM2Njk2OiBhZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFByb2ZpbGUgb2JqZWN0cywgYW5kIGltcHJvdmUKLSAgcHJvZmlsZS9jUHJvZmlsZSBkb2NzLiAgUGF0Y2ggYnkgVG9tIFBpbmNrbmV5LgotCi0tIElzc3VlICMxNzkxNTogRml4IGludGVyb3BlcmFiaWxpdHkgb2YgeG1sLnNheCB3aXRoIGZpbGUgb2JqZWN0cyByZXR1cm5lZCBieQotICBjb2RlY3Mub3BlbigpLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTc1NDc6IEluIGNvbmZpZ3VyZSwgZXhwbGljaXRseSBwYXNzIC1XZm9ybWF0IGZvciB0aGUgYmVuZWZpdCBmb3IgR0NDCi0gIDQuOC4KLQotLSBJc3N1ZSAjMTc5NjI6IEJ1aWxkIHdpdGggT3BlblNTTCAxLjAuMWUgb24gV2luZG93cy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwNy1BcHItMjAxMyoKLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE3NTUwOiBGaXggdGhlIC0tZW5hYmxlLXByb2ZpbGluZyBjb25maWd1cmUgc3dpdGNoLgotCi1JRExFCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3NjI1OiBJbiBJRExFLCBjbG9zZSB0aGUgcmVwbGFjZSBkaWFsb2cgYWZ0ZXIgaXQgaXMgdXNlZC4KLQotCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMSByZWxlYXNlIGNhbmRpZGF0ZSAxPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtNjEwLDI0ICs4NjgsMjMgQEAKIAogLSBJc3N1ZSAjMTczMjg6IEZpeCBwb3NzaWJsZSByZWZsZWFrIGluIGRpY3Quc2V0ZGVmYXVsdC4KIAotLSBJc3N1ZSAjMTcyMjM6IEZpeCBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKSBmb3Igc3RyaW5nIG9mIDEgY2hhcmFjdGVyIG91dHNpZGUKLSAgdGhlIHJhbmdlIFUrMDAwMC1VKzEwZmZmZi4KLQotLSBJc3N1ZSAjMTY5MjMzNTogTW92ZSBpbml0aWFsIGFyZ3MgYXNzaWdubWVudCB0bwotICBCYXNlRXhjZXB0aW9uLl9fbmV3X18gdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgotCiAtIElzc3VlICMxNzI3NTogQ29ycmVjdGVkIGNsYXNzIG5hbWUgaW4gaW5pdCBlcnJvciBtZXNzYWdlcyBvZiB0aGUgQyB2ZXJzaW9uIG9mCiAgIEJ1ZmZlcmVkV3JpdGVyIGFuZCBCdWZmZXJlZFJhbmRvbS4KIAogLSBJc3N1ZSAjNzk2MzogRml4ZWQgbWlzbGVhZGluZyBlcnJvciBtZXNzYWdlIHRoYXQgaXNzdWVkIHdoZW4gb2JqZWN0IGlzCiAgIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KIAorLSBJc3N1ZSAjODc0NTogU21hbGwgc3BlZWQgdXAgemlwaW1wb3J0IG9uIFdpbmRvd3MuIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCisKIC0gSXNzdWUgIzUzMDg6IFJhaXNlIFZhbHVlRXJyb3Igd2hlbiBtYXJzaGFsbGluZyB0b28gbGFyZ2Ugb2JqZWN0IChhIHNlcXVlbmNlCiAgIHdpdGggc2l6ZSA+PSAyKiozMSksIGluc3RlYWQgb2YgcHJvZHVjaW5nIGlsbGVnYWwgbWFyc2hhbCBkYXRhLgogCiAtIElzc3VlICMxMjk4MzogQnl0ZXMgbGl0ZXJhbHMgd2l0aCBpbnZhbGlkIFx4IGVzY2FwZSBub3cgcmFpc2UgYSBTeW50YXhFcnJvcgogICBhbmQgYSBmdWxsIHRyYWNlYmFjayBpbmNsdWRpbmcgbGluZSBudW1iZXIuCiAKKy0gSXNzdWUgIzE2OTY3OiBJbiBmdW5jdGlvbiBkZWZpbml0aW9uLCBldmFsdWF0ZSBwb3NpdGlvbmFsIGRlZmF1bHRzIGJlZm9yZQorICBrZXl3b3JkLW9ubHkgZGVmYXVsdHMuCisKIC0gSXNzdWUgIzE3MTczOiBSZW1vdmUgdXNlcyBvZiBsb2NhbGUtZGVwZW5kZW50IEMgZnVuY3Rpb25zIChpc2FscGhhKCkgZXRjLikKICAgaW4gdGhlIGludGVycHJldGVyLgogCkBAIC02NDIsNiArODk5LDEwIEBACiAKIC0gSXNzdWUgIzE2OTc5OiBGaXggZXJyb3IgaGFuZGxpbmcgYnVncyBpbiB0aGUgdW5pY29kZS1lc2NhcGUtZGVjb2RlIGRlY29kZXIuCiAKKy0gSXNzdWUgIzE2NzcyOiBUaGUgYmFzZSBhcmd1bWVudCB0byB0aGUgaW50IGNvbnN0cnVjdG9yIG5vIGxvbmdlciBhY2NlcHRzCisgIGZsb2F0cywgb3Igb3RoZXIgbm9uLWludGVnZXIgb2JqZWN0cyB3aXRoIGFuIF9faW50X18gbWV0aG9kLiAgT2JqZWN0cworICB3aXRoIGFuIF9faW5kZXhfXyBtZXRob2QgYXJlIG5vdyBhY2NlcHRlZC4KKwogLSBJc3N1ZSAjMTAxNTY6IEluIHRoZSBpbnRlcnByZXRlcidzIGluaXRpYWxpemF0aW9uIHBoYXNlLCB1bmljb2RlIGdsb2JhbHMKICAgYXJlIG5vdyBpbml0aWFsaXplZCBkeW5hbWljYWxseSBhcyBuZWVkZWQuCiAKQEAgLTY2OSwxMiArOTMwLDYgQEAKIAogLSBJc3N1ZSAjMTYzNjc6IEZpeCBGaWxlSU8ucmVhZGFsbCgpIG9uIFdpbmRvd3MgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDIgR0IuCiAKLS0gSXNzdWUgIzE2NDU1OiBPbiBGcmVlQlNEIGFuZCBTb2xhcmlzLCBpZiB0aGUgbG9jYWxlIGlzIEMsIHRoZQotICBBU0NJSS9zdXJyb2dhdGVlc2NhcGUgY29kZWMgaXMgbm93IHVzZWQsIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8KLSAgZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiBUaGlzIGNoYW5nZSBmaXhlcyBpbmNvbnNpc3RlbmNpZXMgd2l0aAotICBvcy5mc2VuY29kZSgpIGFuZCBvcy5mc2RlY29kZSgpIGJlY2F1c2UgdGhlc2Ugb3BlcmF0aW5nIHN5c3RlbXMgYW5ub3VuY2VzIGFuCi0gIEFTQ0lJIGxvY2FsZSBlbmNvZGluZywgd2hlcmVhcyB0aGUgSVNPLTg4NTktMSBlbmNvZGluZyBpcyB1c2VkIGluIHByYWN0aWNlLgotCiAtIElzc3VlICMxNjc2MTogQ2FsbGluZyBpbnQoKSB3aXRoIGJhc2UgYXJndW1lbnQgb25seSBub3cgcmFpc2VzIFR5cGVFcnJvci4KIAogLSBJc3N1ZSAjMTY3NTk6IFN1cHBvcnQgdGhlIGZ1bGwgRFdPUkQgKHVuc2lnbmVkIGxvbmcpIHJhbmdlIGluIFJlZzJQeQpAQCAtNjg0LDI0ICs5MzksNTEgQEAKIC0gSXNzdWUgIzE0NDIwOiBTdXBwb3J0IHRoZSBmdWxsIERXT1JEICh1bnNpZ25lZCBsb25nKSByYW5nZSBpbiBQeTJSZWcKICAgd2hlbiBwYXNzZWQgYSBSRUdfRFdPUkQgdmFsdWUuIEZpeGVzIE92ZXJmbG93RXJyb3IgaW4gd2lucmVnLlNldFZhbHVlRXguCiAKKy0gSXNzdWUgIzExOTM5OiBTZXQgdGhlIHN0X2RldiBhdHRyaWJ1dGUgb2Ygc3RhdF9yZXN1bHQgdG8gYWxsb3cgV2luZG93cyB0bworICB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3MucGF0aC5zYW1lZmlsZS9zYW1lb3BlbmZpbGUvc2FtZXN0YXQgaW1wbGVtZW50YXRpb25zCisgIHVzZWQgYnkgb3RoZXIgcGxhdGZvcm1zLgorCistIElzc3VlICMxNjc3MjogVGhlIGludCgpIGNvbnN0cnVjdG9yJ3Mgc2Vjb25kIGFyZ3VtZW50IChiYXNlKSBubyBsb25nZXIKKyAgYWNjZXB0cyBub24gaW50ZWdlciB2YWx1ZXMuICBDb25zaXN0ZW50IHdpdGggdGhlIGJlaGF2aW9yIGluIFB5dGhvbiAyLgorCistIElzc3VlICMxNDQ3MDogUmVtb3ZlIHc5eHBvcGVuIHN1cHBvcnQgcGVyIFBFUCAxMS4KKworLSBJc3N1ZSAjOTg1NjogUmVwbGFjZSBkZXByZWNhdGlvbiB3YXJuaW5nIHdpdGggcmFpc2luZyBUeXBlRXJyb3IKKyAgaW4gb2JqZWN0Ll9fZm9ybWF0X18uIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKwogLSBJc3N1ZSAjMTY1OTc6IEluIGJ1ZmZlcmVkIGFuZCB0ZXh0IElPLCBjYWxsIGNsb3NlKCkgb24gdGhlIHVuZGVybHlpbmcgc3RyZWFtCiAgIGlmIGludm9raW5nIGZsdXNoKCkgZmFpbHMuCiAKIC0gSXNzdWUgIzE2NzIyOiBJbiB0aGUgYnl0ZXMoKSBjb25zdHJ1Y3RvciwgdHJ5IHRvIGNhbGwgX19ieXRlc19fIG9uIHRoZQogICBhcmd1bWVudCBiZWZvcmUgX19pbmRleF9fLgogCistIElzc3VlICMxNjQyMTogbG9hZGluZyBtdWx0aXBsZSBtb2R1bGVzIGZyb20gb25lIHNoYXJlZCBvYmplY3QgaXMgbm93CisgIGhhbmRsZWQgY29ycmVjdGx5IChwcmV2aW91c2x5LCB0aGUgZmlyc3QgbW9kdWxlIGxvYWRlZCBmcm9tIHRoYXQgZmlsZQorICB3YXMgc2lsZW50bHkgcmV0dXJuZWQpLiBQYXRjaCBieSBWw6FjbGF2IMWgbWlsYXVlci4KKwogLSBJc3N1ZSAjMTY2MDI6IFdoZW4gYSB3ZWFrcmVmJ3MgdGFyZ2V0IHdhcyBwYXJ0IG9mIGEgbG9uZyBkZWFsbG9jYXRpb24KICAgY2hhaW4sIHRoZSBvYmplY3QgY291bGQgcmVtYWluIHJlYWNoYWJsZSB0aHJvdWdoIGl0cyB3ZWFrcmVmIGV2ZW4gdGhvdWdoCiAgIGl0cyByZWZjb3VudCBoYWQgZHJvcHBlZCB0byB6ZXJvLgogCi0tIElzc3VlICMxNjQxNjogT24gTWFjIE9TIFgsIG9wZXJhdGluZyBzeXN0ZW0gZGF0YSBhcmUgbm93IGFsd2F5cwotICBlbmNvZGVkL2RlY29kZWQgdG8vZnJvbSBVVEYtOC9zdXJyb2dhdGVlc2NhcGUsIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZwotICAod2hpY2ggbWF5IGJlIEFTQ0lJIGlmIG5vIGxvY2FsZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQpLCB0byBhdm9pZAotICBpbmNvbnNpc3RlbmNpZXMgd2l0aCBvcy5mc2VuY29kZSgpIGFuZCBvcy5mc2RlY29kZSgpIGZ1bmN0aW9ucyB3aGljaCBhcmUKLSAgYWxyZWFkeSB1c2luZyBVVEYtOC9zdXJyb2dhdGVlc2NhcGUuCistIElzc3VlICMxNjQ5NTogUmVtb3ZlIGV4dHJhbmVvdXMgTlVMTCBlbmNvZGluZyBjaGVjayBmcm9tIGJ5dGVzX2RlY29kZSgpLgorCistIElzc3VlICMxNjYxOTogQ3JlYXRlIE5hbWVDb25zdGFudCBBU1QgY2xhc3MgdG8gcmVwcmVzZW50IE5vbmUsIFRydWUsIGFuZCBGYWxzZQorICBsaXRlcmFscy4gQXMgYSByZXN1bHQsIHRoZXNlIGNvbnN0YW50cyBhcmUgbmV2ZXIgbG9hZGVkIGF0IHJ1bnRpbWUgZnJvbQorICBidWlsdGlucy4KKworLSBJc3N1ZSAjMTY0NTU6IE9uIEZyZWVCU0QgYW5kIFNvbGFyaXMsIGlmIHRoZSBsb2NhbGUgaXMgQywgdGhlCisgIEFTQ0lJL3N1cnJvZ2F0ZWVzY2FwZSBjb2RlYyBpcyBub3cgdXNlZCwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLCB0bworICBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuIFRoaXMgY2hhbmdlIGZpeGVzIGluY29uc2lzdGVuY2llcyB3aXRoCisgIG9zLmZzZW5jb2RlKCkgYW5kIG9zLmZzZGVjb2RlKCkgYmVjYXVzZSB0aGVzZSBvcGVyYXRpbmcgc3lzdGVtcyBhbm5vdW5jZXMgYW4KKyAgQVNDSUkgbG9jYWxlIGVuY29kaW5nLCB3aGVyZWFzIHRoZSBJU08tODg1OS0xIGVuY29kaW5nIGlzIHVzZWQgaW4gcHJhY3RpY2UuCisKKy0gSXNzdWUgIzE2NTYyOiBPcHRpbWl6ZSBkaWN0IGVxdWFsaXR5IHRlc3RpbmcuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNjU4ODogU2lsZW5jZSB1bnVzZWQtYnV0LXNldCB3YXJuaW5ncyBpbiBQeXRob24vdGhyZWFkX3B0aHJlYWQKIAorLSBJc3N1ZSAjMTY1OTI6IHN0cmluZ2xpYl9ieXRlc19qb2luIGRvZXNuJ3QgcmFpc2UgTWVtb3J5RXJyb3Igb24gYWxsb2NhdGlvbgorICBmYWlsdXJlLgorCiAtIElzc3VlICMxNjU0NjogRml4OiBhc3QuWWllbGRGcm9tIGFyZ3VtZW50IGlzIG5vdyBtYW5kYXRvcnkuCiAKIC0gSXNzdWUgIzE2NTE0OiBGaXggcmVncmVzc2lvbiBjYXVzaW5nIGEgdHJhY2ViYWNrIHdoZW4gc3lzLnBhdGhbMF0gaXMgTm9uZQpAQCAtNzEzLDExICs5OTUsMjMgQEAKIC0gSXNzdWUgIzE2MjE1OiBGaXggcG90ZW50aWFsIGRvdWJsZSBtZW1vcnkgZnJlZSBpbiBzdHIucmVwbGFjZSgpLiAgUGF0Y2gKICAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMTYyOTA6IEEgZmxvYXQgcmV0dXJuIHZhbHVlIGZyb20gdGhlIF9fY29tcGxleF9fIHNwZWNpYWwgbWV0aG9kIGlzIG5vCisgIGxvbmdlciBhY2NlcHRlZCBpbiB0aGUgY29tcGxleCgpIGNvbnN0cnVjdG9yLgorCistIElzc3VlICMxNjQxNjogT24gTWFjIE9TIFgsIG9wZXJhdGluZyBzeXN0ZW0gZGF0YSBhcmUgbm93IGFsd2F5cworICBlbmNvZGVkL2RlY29kZWQgdG8vZnJvbSBVVEYtOC9zdXJyb2dhdGVlc2NhcGUsIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZworICAod2hpY2ggbWF5IGJlIEFTQ0lJIGlmIG5vIGxvY2FsZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQpLCB0byBhdm9pZAorICBpbmNvbnNpc3RlbmNpZXMgd2l0aCBvcy5mc2VuY29kZSgpIGFuZCBvcy5mc2RlY29kZSgpIGZ1bmN0aW9ucyB3aGljaCBhcmUKKyAgYWxyZWFkeSB1c2luZyBVVEYtOC9zdXJyb2dhdGVlc2NhcGUuCisKIC0gSXNzdWUgIzE2NDUzOiBGaXggZXF1YWxpdHkgdGVzdGluZyBvZiBkZWFkIHdlYWtyZWYgb2JqZWN0cy4KIAogLSBJc3N1ZSAjOTUzNTogRml4IHBlbmRpbmcgc2lnbmFscyB0aGF0IGhhdmUgYmVlbiByZWNlaXZlZCBidXQgbm90IHlldAogICBoYW5kbGVkIGJ5IFB5dGhvbiB0byBub3QgcGVyc2lzdCBhZnRlciBvcy5mb3JrKCkgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCiAKKy0gSXNzdWUgIzE0Nzk0OiBGaXggc2xpY2UuaW5kaWNlcyB0byByZXR1cm4gY29ycmVjdCByZXN1bHRzIGZvciBodWdlIHZhbHVlcywKKyAgcmF0aGVyIHRoYW4gcmFpc2luZyBPdmVyZmxvd0Vycm9yLgorCiAtIElzc3VlICMxNTAwMTogZml4IHNlZ2ZhdWx0IG9uICJkZWwgc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10iLiBQYXRjaCBieSBWaWN0b3IKICAgU3Rpbm5lci4KIApAQCAtNzM3LDIzICsxMDMxLDQzIEBACiAtIElzc3VlICM4NDAxOiBhc3NpZ25pbmcgYW4gaW50IHRvIGEgYnl0ZWFycmF5IHNsaWNlIChlLmcuIGJbMzo0XSA9IDUpIG5vdwogICByYWlzZXMgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzczMTc6IERpc3BsYXkgZnVsbCB0cmFjZWJhY2tzIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGFzeW5jaHJvbm91c2x5LgorICBQYXRjaCBieSBBbG9uIEhvcmV2IHdpdGggdXBkYXRlIGJ5IEFsZXhleSBLYWNoYXlldi4KKworLSBJc3N1ZSAjMTYzMDk6IE1ha2UgUFlUSE9OUEFUSD0iIiBiZWhhdmlvciB0aGUgc2FtZSBhcyBpZiBQWVRIT05QQVRICisgIG5vdCBzZXQgYXQgYWxsLgorCistIElzc3VlICMxMDE4OTogSW1wcm92ZSB0aGUgZXJyb3IgcmVwb3J0aW5nIG9mIFN5bnRheEVycm9ycyByZWxhdGVkIHRvIGdsb2JhbAorICBhbmQgbm9ubG9jYWwgc3RhdGVtZW50cy4KKwogLSBGaXggc2VnZmF1bHRzIG9uIHNldHRpbmcgX19xdWFsbmFtZV9fIG9uIGJ1aWx0aW4gdHlwZXMgYW5kIGF0dGVtcHRpbmcgdG8KICAgZGVsZXRlIGl0IG9uIGFueSB0eXBlLgogCistIElzc3VlICMxNDYyNTogUmV3cml0ZSB0aGUgVVRGLTMyIGRlY29kZXIuIEl0IGlzIG5vdyAzeCB0byA0eCBmYXN0ZXIuIFBhdGNoCisgIHdyaXR0ZW4gYnkgU2VyaGl5IFN0b3JjaGFrYS4KKwogLSBJc3N1ZSAjMTYzNDU6IEZpeCBhbiBpbmZpbml0ZSBsb29wIHdoZW4gYGBmcm9ta2V5c2BgIG9uIGEgZGljdCBzdWJjbGFzcwogICByZWNlaXZlZCBhIG5vbmVtcHR5IGRpY3QgZnJvbSB0aGUgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzE2MjcxOiBGaXggc3RyYW5nZSBidWdzIHRoYXQgcmVzdWx0ZWQgZnJvbSBfX3F1YWxuYW1lX18gYXBwZWFyaW5nIGluIGEKICAgY2xhc3MncyBfX2RpY3RfXyBhbmQgb24gdHlwZS4KIAorLSBJc3N1ZSAjMTI4MDU6IE1ha2UgYnl0ZXMuam9pbiBhbmQgYnl0ZWFycmF5LmpvaW4gZmFzdGVyIHdoZW4gdGhlIHNlcGFyYXRvcgorICBpcyBlbXB0eS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzYwNzQ6IEVuc3VyZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZXMgY2FuIGFsd2F5cyBiZSB1cGRhdGVkIGJ5IHRoZQogICB1c2VyIHRoYXQgY3JlYXRlZCB0aGVtLCBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIHJlYWQtb25seS4KIAorLSBJc3N1ZSAjMTU5NTg6IGJ5dGVzLmpvaW4gYW5kIGJ5dGVhcnJheS5qb2luIG5vdyBhY2NlcHQgYXJiaXRyYXJ5IGJ1ZmZlcgorICBvYmplY3RzLgorCiAtIElzc3VlICMxNDc4MzogSW1wcm92ZSBpbnQoKSBkb2NzdHJpbmcgYW5kIHN3aXRjaCBkb2NzdHJpbmdzIGZvciBzdHIoKSwKICAgcmFuZ2UoKSwgYW5kIHNsaWNlKCkgdG8gdXNlIG11bHRpLWxpbmUgc2lnbmF0dXJlcy4KIAogLSBJc3N1ZSAjMTYxNjA6IFN1YmNsYXNzIHN1cHBvcnQgbm93IHdvcmtzIGZvciB0eXBlcy5TaW1wbGVOYW1lc3BhY2UuCiAKKy0gVXBncmFkZSBVbmljb2RlIGRhdGEgKFVDRCkgdG8gdmVyc2lvbiA2LjIuCisKIC0gSXNzdWUgIzE1Mzc5OiBGaXggcGFzc2luZyBvZiBub24tQk1QIGNoYXJhY3RlcnMgYXMgaW50ZWdlcnMgZm9yIHRoZSBjaGFybWFwCiAgIGRlY29kZXIgKGFscmVhZHkgd29ya2luZyBhcyB1bmljb2RlIHN0cmluZ3MpLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIApAQCAtNzY2LDI1ICsxMDgwLDUwIEBACiAKIC0gSXNzdWUgIzE1ODM5OiBDb252ZXJ0IFN5c3RlbUVycm9ycyBpbiBgc3VwZXIoKWAgdG8gUnVudGltZUVycm9ycy4KIAorLSBJc3N1ZSAjMTU0NDg6IEJ1ZmZlcmVkIElPIG5vdyBmcmVlcyB0aGUgYnVmZmVyIHdoZW4gY2xvc2VkLCBpbnN0ZWFkCisgIG9mIHdoZW4gZGVhbGxvY2F0aW5nLgorCiAtIElzc3VlICMxNTg0NjogRml4IFN5c3RlbUVycm9yIHdoaWNoIGhhcHBlbmVkIHdoZW4gdXNpbmcgYGFzdC5wYXJzZSgpYCBpbiBhbgogICBleGNlcHRpb24gaGFuZGxlciBvbiBjb2RlIHdpdGggc3ludGF4IGVycm9ycy4KIAorLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCisgIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgorCiAtIElzc3VlICMxNTgwMTogTWFrZSBzdXJlIG1hcHBpbmdzIHBhc3NlZCB0byAnJScgZm9ybWF0dGluZyBhcmUgYWN0dWFsbHkKICAgc3Vic2NyaXB0YWJsZS4KIAotLSBJc3N1ZSAjMTUxMTE6IF9faW1wb3J0X18gc2hvdWxkIGxldCBJbXBvcnRFcnJvciBwcm9wYWdhdGUgd2hlbiBhIG1vZHVsZSB0aGF0Ci0gIGlzIGltcG9ydGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdXNpbmcgZnJvbWxpc3QgdHJpZXMgdG8gaW1wb3J0IGEgbW9kdWxlCi0gIHRoYXQgY2Fubm90IGJlIGZvdW5kLgorLSBJc3N1ZSAjMTUxMTE6IF9faW1wb3J0X18gc2hvdWxkIHByb3BhZ2F0ZSBJbXBvcnRFcnJvciB3aGVuIHJhaXNlZCBhcyBhCisgIHNpZGUtZWZmZWN0IG9mIGEgbW9kdWxlIHRyaWdnZXJlZCBmcm9tIHVzaW5nIGZyb21saXN0LgogCistIElzc3VlICMxNTAyMjogQWRkIHBpY2tsZSBhbmQgY29tcGFyaXNvbiBzdXBwb3J0IHRvIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KIAogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxNTU5NjogRmFzdGVyIHBpY2tsaW5nIG9mIHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTc1NzI6IEF2b2lkIGNoYWluZWQgZXhjZXB0aW9ucyB3aGlsZSBwYXNzaW5nIGJhZCBkaXJlY3RpdmVzIHRvCisgIHRpbWUuc3RycHRpbWUoKS4gIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxNzQzNTogdGhyZWFkaW5nLlRpbWVyJ3MgX19pbml0X18gbWV0aG9kIG5vIGxvbmdlciB1c2VzIG11dGFibGUKKyAgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBhcmdzIGFuZCBrd2FyZ3MgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjMTc1MjY6IGZpeCBhbiBJbmRleEVycm9yIHJhaXNlZCB3aGlsZSBwYXNzaW5nIGNvZGUgd2l0aG91dCBmaWxlbmFtZSB0bworICBpbnNwZWN0LmZpbmRzb3VyY2UoKS4gIEluaXRpYWwgcGF0Y2ggYnkgVHlsZXIgRG95bGUuCisKIC0gSXNzdWUgIzE3NTQwOiBBZGRlZCBzdHlsZSB0byBmb3JtYXR0ZXIgY29uZmlndXJhdGlvbiBieSBkaWN0LgogCistIElzc3VlICMxNjY5MjogVGhlIHNzbCBtb2R1bGUgbm93IHN1cHBvcnRzIFRMUyAxLjEgYW5kIFRMUyAxLjIuICBJbml0aWFsCisgIHBhdGNoIGJ5IE1pY2hlbGUgT3Jyw7kuCisKKy0gSXNzdWUgIzE3MDI1OiBtdWx0aXByb2Nlc3Npbmc6IFJlZHVjZSBRdWV1ZSBhbmQgU2ltcGxlUXVldWUgY29udGVudGlvbi4KKwogLSBJc3N1ZSAjMTc1MzY6IEFkZCB0byB3ZWJicm93c2VyJ3MgYnJvd3NlciBsaXN0OiB3d3ctYnJvd3NlciwgeC13d3ctYnJvd3NlciwKICAgaWNld2Vhc2VsLCBpY2VhcGUuCiAKKy0gSXNzdWUgIzE3MTUwOiBwcHJpbnQgbm93IHVzZXMgbGluZSBjb250aW51YXRpb25zIHRvIHdyYXAgbG9uZyBzdHJpbmcKKyAgbGl0ZXJhbHMuCisKIC0gSXNzdWUgIzE3NDg4OiBDaGFuZ2UgdGhlIHN1YnByb2Nlc3MuUG9wZW4gYnVmc2l6ZSBwYXJhbWV0ZXIgZGVmYXVsdCB2YWx1ZQogICBmcm9tIHVuYnVmZmVyZWQgKDApIHRvIGJ1ZmZlcmluZyAoLTEpIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBleGlzdGluZyBjb2RlCiAgIGV4cGVjdHMgYW5kIG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgaW4gUHl0aG9uIDIgdG8gYXZvaWQKQEAgLTgwMyw2ICsxMTQyLDE4IEBACiAgIHNlbmRpbmcgbWFpbCBieSBjbG9zaW5nIHRoZSBzb2NrZXQgYW5kIHJlcG9ydGluZyB0aGUgNDIxIGVycm9yIGNvZGUgdmlhIHRoZQogICBleGNlcHRpb24gYXBwcm9wcmlhdGUgdG8gdGhlIGNvbW1hbmQgdGhhdCByZWNlaXZlZCB0aGUgZXJyb3IgcmVzcG9uc2UuCiAKKy0gSXNzdWUgIzE2OTk3OiB1bml0dGVzdC5UZXN0Q2FzZSBub3cgcHJvdmlkZXMgYSBzdWJUZXN0KCkgY29udGV4dCBtYW5hZ2VyCisgIHRvIHByb2NlZHVyYWxseSBnZW5lcmF0ZSwgaW4gYW4gZWFzeSB3YXksIHNtYWxsIHRlc3QgaW5zdGFuY2VzLgorCistIElzc3VlICMxNzQ4NTogQWxzbyBkZWxldGUgdGhlIFJlcXVlc3QgQ29udGVudC1MZW5ndGggaGVhZGVyIGlmIHRoZSBkYXRhCisgIGF0dHJpYnV0ZSBpcyBkZWxldGVkLiAgKEZvbGxvdyBvbiB0byBpc3N1ZSAxNjQ2NCkuCisKKy0gSXNzdWUgIzE1OTI3OiBDVlMgbm93IGNvcnJlY3RseSBwYXJzZXMgZXNjYXBlZCBuZXdsaW5lcyBhbmQgY2FycmlhZ2UKKyAgd2hlbiBwYXJzaW5nIHdpdGggcXVvdGluZyB0dXJuZWQgb2ZmLgorCistIElzc3VlICMxNzQ2NzogYWRkIHJlYWRsaW5lIGFuZCByZWFkbGluZXMgc3VwcG9ydCB0byBtb2NrX29wZW4gaW4KKyAgdW5pdHRlc3QubW9jay4KKwogLSBJc3N1ZSAjMTcxOTI6IFVwZGF0ZSB0aGUgY3R5cGVzIG1vZHVsZSdzIGxpYmZmaSB0byB2My4wLjEzLiAgVGhpcwogICBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgc3RhY2sgbWlzYWxpZ25tZW50IGlzc3VlIG9uIHg4NiBhbmQgaXNzdWVzIG9uCiAgIHNvbWUgbW9yZSByZWNlbnQgcGxhdGZvcm1zLgpAQCAtODE2LDIwICsxMTY3LDUxIEBACiAtIElzc3VlICMxNzQ3NjogRml4ZWQgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yIGluIHVuZG9jdW1lbnRlZCBweWRvYwogICAnYWxsbWV0aG9kcyc7IGl0IHdhcyBtaXNzaW5nIHVuYm91bmQgbWV0aG9kcyBvbiB0aGUgY2xhc3MuCiAKKy0gSXNzdWUgIzE3NDc0OiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kcyBvZiBSZXF1ZXN0IGNsYXNzLgorCistIElzc3VlICMxNjcwOTogdW5pdHRlc3QgZGlzY292ZXIgb3JkZXIgaXMgbm8tbG9uZ2VyIGZpbGVzeXN0ZW0gc3BlY2lmaWMuIFBhdGNoCisgIGJ5IEplZmYgUmFtbmFuaS4KKworLSBVc2UgdGhlIEhUVFBTIFB5UEkgdXJsIGZvciB1cGxvYWQsIG92ZXJyaWRpbmcgYW55IHBsYWluIEhUVFAgVVJMIGluIHB5cGlyYy4KKworLSBJc3N1ZSAjNTAyNDogc25kaGRyLndoaWNoaGRyIG5vdyByZXR1cm5zIHRoZSBmcmFtZSBjb3VudCBmb3IgV0FWIGZpbGVzCisgIHJhdGhlciB0aGFuIC0xLgorCistIElzc3VlICMxNzQ2MDogUmVtb3ZlIHRoZSBzdHJpY3QgYXJndW1lbnQgb2YgSFRUUENvbm5lY3Rpb24gYW5kIHJlbW92aW5nIHRoZQorICBEZXByZWNhdGlvbldhcm5pbmcgYmVpbmcgaXNzdWVkIGZyb20gMy4yIG9ud2FyZHMuCisKIC0gSXNzdWUgIzE2ODgwOiBEbyBub3QgYXNzdW1lIF9pbXAubG9hZF9keW5hbWljKCkgaXMgZGVmaW5lZCBpbiB0aGUgaW1wIG1vZHVsZS4KIAogLSBJc3N1ZSAjMTYzODk6IEZpeGVkIGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24gMy4xIGluIHRoZQogICBjYWNoaW5nIG9mIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCiAKKy0gQWRkZWQgbWlzc2luZyBGZWVkUGFyc2VyIGFuZCBCeXRlc0ZlZWRQYXJzZXIgdG8gZW1haWwucGFyc2VyLl9fYWxsX18uCisKIC0gSXNzdWUgIzE3NDMxOiBGaXggbWlzc2luZyBpbXBvcnQgb2YgQnl0ZXNGZWVkUGFyc2VyIGluIGVtYWlsLnBhcnNlci4KIAorLSBJc3N1ZSAjMTI5MjE6IGh0dHAuc2VydmVyJ3Mgc2VuZF9lcnJvciB0YWtlcyBhbiBleHBsYWluIGFyZ3VtZW50IHRvIHNlbmQgbW9yZQorICBpbmZvcm1hdGlvbiBpbiByZXNwb25zZS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgS2FybC4KKworLSBJc3N1ZSAjMTc0MTQ6IEFkZCB0aW1laXQsIHJlcGVhdCwgYW5kIGRlZmF1bHRfdGltZXIgdG8gdGltZWl0Ll9fYWxsX18uCisKIC0gSXNzdWUgIzEyODUwODY6IEdldCByaWQgb2YgdGhlIHJlZmNvdW50aW5nIGhhY2sgYW5kIHNwZWVkIHVwCiAgIHVybGxpYi5wYXJzZS51bnF1b3RlKCkgYW5kIHVybGxpYi5wYXJzZS51bnF1b3RlX3RvX2J5dGVzKCkuCiAKKy0gSXNzdWUgIzE3MDk5OiBIYXZlIGltcG9ydGxpYi5maW5kX2xvYWRlcigpIHJhaXNlIFZhbHVlRXJyb3Igd2hlbiBfX2xvYWRlcl9fCisgIGlzIG5vdCBzZXQsIGhhcm1vbml6aW5nIHdpdGggd2hhdCBoYXBwZW5zIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBzZXQgdG8gTm9uZS4KKworLSBFeHBvc2UgdGhlIE9fUEFUSCBjb25zdGFudCBpbiB0aGUgb3MgbW9kdWxlIGlmIGl0IGlzIGF2YWlsYWJsZS4KKwogLSBJc3N1ZSAjMTczNjg6IEZpeCBhbiBvZmYtYnktb25lIGVycm9yIGluIHRoZSBQeXRob24gSlNPTiBkZWNvZGVyIHRoYXQgY2F1c2VkCiAgIGEgZmFpbHVyZSB3aGlsZSBkZWNvZGluZyBlbXB0eSBvYmplY3QgbGl0ZXJhbHMgd2hlbiBvYmplY3RfcGFpcnNfaG9vayB3YXMKICAgc3BlY2lmaWVkLgogCistIElzc3VlICMxNzM4NTogRml4IHF1YWRyYXRpYyBiZWhhdmlvciBpbiB0aHJlYWRpbmcuQ29uZGl0aW9uLiAgVGhlIEZJRk8KKyAgcXVldWUgbm93IHVzZXMgYSBkZXF1ZSBpbnN0ZWFkIG9mIGEgbGlzdC4KKworLSBJc3N1ZSAjMTU4MDY6IEFkZCBjb250ZXh0bGliLmlnbm9yZWQoKS4gIFRoaXMgY3JlYXRlcyBhIGNvbnRleHQgbWFuYWdlcgorICB0byBpZ25vcmUgc3BlY2lmaWVkIGV4Y2VwdGlvbnMsIHJlcGxhY2luZyB0aGUgImV4Y2VwdCBFeGM6IHBhc3MiIGlkaW9tLgorCiAtIElzc3VlICMxNDY0NTogVGhlIGVtYWlsIGdlbmVyYXRvciBjbGFzc2VzIG5vdyBwcm9kdWNlIG91dHB1dCB1c2luZyB0aGUKICAgc3BlY2lmaWVkIGxpbmVzZXAgdGhyb3VnaG91dC4gIFByZXZpb3VzbHkgaWYgdGhlIHByb2xvZywgZXBpbG9nLCBvcgogICBib2R5IHdlcmUgc3RvcmVkIHdpdGggYSBkaWZmZXJlbnQgbGluZXNlcCwgdGhhdCBsaW5lc2VwIHdhcyB1c2VkLiAgVGhpcwpAQCAtODQxLDE4ICsxMjIzLDMwIEBACiAtIElzc3VlICMxNjk2MjogVXNlIGdldGRlbnRzNjQgaW5zdGVhZCBvZiB0aGUgb2Jzb2xldGUgZ2V0ZGVudHMgc3lzY2FsbAogICBpbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgb24gTGludXguCiAKKy0gSXNzdWUgIzE2OTM1OiB1bml0dGVzdCBub3cgY291bnRzIHRoZSBtb2R1bGUgYXMgc2tpcHBlZCBpZiBpdCByYWlzZXMgU2tpcFRlc3QsCisgIGluc3RlYWQgb2YgY291bnRpbmcgaXQgYXMgYW4gZXJyb3IuICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKIC0gSXNzdWUgIzE3MDE4OiBNYWtlIFByb2Nlc3Muam9pbigpIHJldHJ5IGlmIG9zLndhaXRwaWQoKSBmYWlscyB3aXRoIEVJTlRSLgogCiAtIElzc3VlICMxNzIyMzogYXJyYXkgbW9kdWxlOiBGaXggYSBjcmFzaGVyIHdoZW4gY29udmVydGluZyBhbiBhcnJheSBjb250YWluaW5nCiAgIGludmFsaWQgY2hhcmFjdGVycyAob3V0c2lkZSByYW5nZSBbVSswMDAwOyBVKzEwZmZmZl0pIHRvIFVuaWNvZGU6CiAgIHJlcHIoYXJyYXkpLCBzdHIoYXJyYXkpIGFuZCBhcnJheS50b3VuaWNvZGUoKS4gUGF0Y2ggd3JpdHRlbiBieSBNYW51ZWwgSmFjb2IuCiAKKy0gSXNzdWUgIzE3MTk3OiBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgcmVmYWN0b3JlZCBzbyB0aGF0IGNvZGUgb2YgcnVuKCkgYW5kCisgIHJ1bmN0eCgpIHV0aWxpdHkgZnVuY3Rpb25zIGlzIG5vdCBkdXBsaWNhdGVkIGluIGJvdGggbW9kdWxlcy4KKwogLSBJc3N1ZSAjMTQ3MjA6IHNxbGl0ZTM6IENvbnZlcnQgZGF0ZXRpbWUgbWljcm9zZWNvbmRzIGNvcnJlY3RseS4KICAgUGF0Y2ggYnkgTG93ZSBUaGlkZXJtYW4uCiAKKy0gSXNzdWUgIzE1MTMyOiBBbGxvdyBhIGxpc3QgZm9yIHRoZSBkZWZhdWx0VGVzdCBhcmd1bWVudCBvZgorICB1bml0dGVzdC5UZXN0UHJvZ3JhbS4gUGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KKwogLSBJc3N1ZSAjMTcyMjU6IEpTT04gZGVjb2RlciBub3cgY291bnRzIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGxpbmUgc3RhcnRpbmcKICAgd2l0aCAxLCBhcyBpbiBvdGhlciBsaW5lcy4KIAorLSBJc3N1ZSAjNjYyMzogQWRkZWQgZXhwbGljaXQgRGVwcmVjYXRpb25XYXJuaW5nIGZvciBmdHBsaWIubmV0cmMsIHdoaWNoIGhhcworICBiZWVuIGRlcHJlY2F0ZWQgYW5kIHVuZG9jdW1lbnRlZCBmb3IgYSBsb25nIHRpbWUuCisKIC0gSXNzdWUgIzEzNzAwOiBGaXggYnl0ZS9zdHJpbmcgaGFuZGxpbmcgaW4gaW1hcGxpYiBhdXRoZW50aWNhdGlvbiB3aGVuIGFuCiAgIGF1dGhvYmplY3QgaXMgc3BlY2lmaWVkLgogCkBAIC04NjksMTEgKzEyNjMsMTkgQEAKIC0gSXNzdWUgIzE3MTQzOiBGaXggYSBtaXNzaW5nIGltcG9ydCBpbiB0aGUgdHJhY2UgbW9kdWxlLiAgSW5pdGlhbCBwYXRjaCBieQogICBCZXJrZXIgUGVrc2FnLgogCistIElzc3VlICMxNTIyMDogZW1haWwuZmVlZHBhcnNlcidzIGxpbmUgc3BsaXR0aW5nIGFsZ29yaXRobSBpcyBub3cgc2ltcGxlciBhbmQKKyAgZmFzdGVyLgorCiAtIElzc3VlICMxNjc0MzogRml4IG1tYXAgb3ZlcmZsb3cgY2hlY2sgb24gMzIgYml0IFdpbmRvd3MuCiAKKy0gSXNzdWUgIzE2OTk2OiB3ZWJicm93c2VyIG1vZHVsZSBub3cgdXNlcyBzaHV0aWwud2hpY2goKSB0byBmaW5kIGEKKyAgd2ViLWJyb3dzZXIgb24gdGhlIGV4ZWN1dGFibGUgc2VhcmNoIHBhdGguCisKIC0gSXNzdWUgIzE2ODAwOiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkgbm8gbG9uZ2VyIGxlZnQgdGVtcG9yYXJ5IGZpbGVzIHdoZW4KICAgdGhlIGRpc2sgaXMgZnVsbC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFtaXIgU3pla2VseS4KIAorLSBJc3N1ZSAjMTcxOTI6IEltcG9ydCBsaWJmZmktMy4wLjEyLgorCiAtIElzc3VlICMxNjU2NDogRml4ZWQgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yIGluIHRoZSBvcGVyYXRpb24gb2YKICAgZW1haWwuZW5jb2RlcnMuZW5jb2RlXzdvcjhiaXQgd2hlbiB1c2VkIHdpdGggYmluYXJ5IGRhdGEuCiAKQEAgLTg5MSw2ICsxMjkzLDkgQEAKIC0gSXNzdWUgIzY5NzU6IG9zLnBhdGgucmVhbHBhdGgoKSBub3cgY29ycmVjdGx5IHJlc29sdmVzIG11bHRpcGxlIG5lc3RlZAogICBzeW1saW5rcyBvbiBQT1NJWCBwbGF0Zm9ybXMuCiAKKy0gSXNzdWUgIzEzNzczOiBzcWxpdGUzLmNvbm5lY3QoKSBnZXRzIGEgbmV3IGB1cmlgIHBhcmFtZXRlciB0byBwYXNzIHRoZQorICBmaWxlbmFtZSBhcyBhIFVSSSwgYWxsb3dpbmcgdG8gcGFzcyBjdXN0b20gb3B0aW9ucy4KKwogLSBJc3N1ZSAjMTY1NjQ6IEZpeGVkIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMiBpbiB0aGUgb3BlcmF0aW9uIG9mCiAgIGVtYWlsLmVuY29kZXJzLmVuY29kZV9ub29wIHdoZW4gdXNlZCB3aXRoIGJpbmFyeSBkYXRhLgogCkBAIC05MDksNiArMTMxNCw5IEBACiAtIElzc3VlICMxNjcyMzogaHR0cGxpYi5IVFRQUmVzcG9uc2Ugbm8gbG9uZ2VyIG1hcmtlZCBjbG9zZWQgd2hlbiB0aGUgY29ubmVjdGlvbgogICBpcyBhdXRvbWF0aWNhbGx5IGNsb3NlZC4KIAorLSBJc3N1ZSAjMTUzNTk6IEFkZCBDQU5fQkNNIHByb3RvY29sIHN1cHBvcnQgdG8gdGhlIHNvY2tldCBtb2R1bGUuIFBhdGNoIGJ5CisgIEJyaWFuIFRob3JuZS4KKwogLSBJc3N1ZSAjMTY5NDg6IEZpeCBxdW90ZWQgcHJpbnRhYmxlIGJvZHkgZW5jb2RpbmcgZm9yIG5vbi1sYXRpbjEgY2hhcmFjdGVyCiAgIHNldHMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuCiAKQEAgLTkzMyw2ICsxMzQxLDEwIEBACiAgIHN0cmVhbSBvciBhIGRlY29kZXIgcHJvZHVjZXMgZGF0YSBvZiBhbiB1bmV4cGVjdGVkIHR5cGUgKGkuZS4gd2hlbgogICBpby5UZXh0SU9XcmFwcGVyIGluaXRpYWxpemVkIHdpdGggdGV4dCBzdHJlYW0gb3IgdXNlIGJ5dGVzLXRvLWJ5dGVzIGNvZGVjKS4KIAorLSBJc3N1ZSAjMTcwMTU6IFdoZW4gaXQgaGFzIGEgc3BlYywgYSBNb2NrIG9iamVjdCBub3cgaW5zcGVjdHMgaXRzIHNpZ25hdHVyZQorICB3aGVuIG1hdGNoaW5nIGNhbGxzLCBzbyB0aGF0IGFyZ3VtZW50cyBjYW4gYmUgbWF0Y2hlZCBwb3NpdGlvbmFsbHkgb3IKKyAgYnkgbmFtZS4KKwogLSBJc3N1ZSAjMTU2MzM6IGh0dHBsaWIuSFRUUFJlc3BvbnNlIGlzIG5vdyBtYXJrIGNsb3NlZCB3aGVuIHRoZSBzZXJ2ZXIKICAgc2VuZHMgbGVzcyB0aGFuIHRoZSBhZHZlcnRpc2VkIENvbnRlbnQtTGVuZ3RoLgogCkBAIC05NTIsNiArMTM2NCwxNCBAQAogLSBJc3N1ZSAjMTIwMDQ6IEZpeCBhbiBpbnRlcm5hbCBlcnJvciBpbiBQeVppcEZpbGUgd2hlbiB3cml0aW5nIGFuIGludmFsaWQKICAgUHl0aG9uIGZpbGUuICBQYXRjaCBieSBCZW4gTW9yZ2FuLgogCistIEhhdmUgcHlfY29tcGlsZSB1c2UgaW1wb3J0bGliIGFzIG11Y2ggYXMgcG9zc2libGUgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4KKyAgQ29kZSBub3cgcmFpc2VzIEZpbGVFeGlzdHNFcnJvciBpZiB0aGUgZmlsZSBwYXRoIHRvIGJlIHVzZWQgZm9yIHRoZQorICBieXRlLWNvbXBpbGVkIGZpbGUgaXMgYSBzeW1saW5rIG9yIG5vbi1yZWd1bGFyIGZpbGUgYXMgYSB3YXJuaW5nIHRoYXQgaW1wb3J0CisgIHdpbGwgbm90IGtlZXAgdGhlIGZpbGUgcGF0aCB0eXBlIGlmIGl0IHdyaXRlcyB0byB0aGF0IHBhdGguCisKKy0gSXNzdWUgIzE4MDAyMjogSGF2ZSBzaXRlLmFkZHBhY2thZ2UoKSBjb25zaWRlciBhbHJlYWR5IGtub3duIHBhdGhzIGV2ZW4gd2hlbgorICBub25lIGFyZSBleHBsaWNpdGx5IHBhc3NlZCBpbi4gQnVnIHJlcG9ydCBhbmQgZml4IGJ5IEtpcmlsbC4KKwogLSBJc3N1ZSAjMTYwMjEzMzogb24gTWFjIE9TIFggYSBzaGFyZWQgbGlicmFyeSBidWlsZCAoYGAtLWVuYWJsZS1zaGFyZWRgYCkKICAgbm93IGZpbGxzIHRoZSBgYG9zLmVudmlyb25gYCB2YXJpYWJsZSBjb3JyZWN0bHkuCiAKQEAgLTk2OCw2ICsxMzg4LDkgQEAKICAgY3VycmVudCBkaXJlY3Rvcnkgb24gVW5peCBhbmQgbm8gbG9uZ2VyIHNlYXJjaGVzIGEgcmVsYXRpdmUgZmlsZSBwYXRoIHdpdGgKICAgYSBkaXJlY3RvcnkgcGFydCBpbiBQQVRIIGRpcmVjdG9yaWVzLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCiAKKy0gSXNzdWUgIzExNTkwNTE6IEd6aXBGaWxlIG5vdyByYWlzZXMgRU9GRXJyb3Igd2hlbiByZWFkaW5nIGEgY29ycnVwdGVkIGZpbGUKKyAgd2l0aCB0cnVuY2F0ZWQgaGVhZGVyIG9yIGZvb3Rlci4KKwogLSBJc3N1ZSAjMTY5OTM6IHNodXRpbC53aGljaCgpIG5vdyBwcmVzZXJ2ZXMgdGhlIGNhc2Ugb2YgdGhlIHBhdGggYW5kIGV4dGVuc2lvbgogICBvbiBXaW5kb3dzLgogCkBAIC05ODAsOCArMTQwMyw2IEBACiAtIElzc3VlICMxNTg2MTogdGtpbnRlciBub3cgY29ycmVjdGx5IHdvcmtzIHdpdGggbGlzdHMgYW5kIHR1cGxlcyBjb250YWluaW5nCiAgIHN0cmluZ3Mgd2l0aCB3aGl0ZXNwYWNlcywgYmFja3NsYXNoZXMgb3IgdW5iYWxhbmNlZCBicmFjZXMuCiAKLS0gSXNzdWUgIzEwNTI3OiBVc2UgcG9sbCgpIGluc3RlYWQgb2Ygc2VsZWN0KCkgZm9yIG11bHRpcHJvY2Vzc2luZyBwaXBlcy4KLQogLSBJc3N1ZSAjOTcyMDogemlwZmlsZSBub3cgd3JpdGVzIGNvcnJlY3QgbG9jYWwgaGVhZGVycyBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4KICAgNCBHaUIuCiAKQEAgLTk5MCw2ICsxNDExLDEzIEBACiAKIC0gU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG5vdyBwcm9wZXJseSBjbG9zZXMgdGhlIGlucHV0IGZpbGUuCiAKKy0gSXNzdWUgIzE1MDMxOiBSZWZhY3RvciBzb21lIC5weWMgbWFuYWdlbWVudCBjb2RlIHRvIGN1dCBkb3duIG9uIGNvZGUKKyAgZHVwbGljYXRpb24uIFRoYW5rcyB0byBSb25hbiBMYW15IGZvciB0aGUgcmVwb3J0IGFuZCB0YWtpbmcgYW4gaW5pdGlhbCBzdGFiCisgIGF0IHRoZSBwcm9ibGVtLgorCistIElzc3VlICMxNjM5ODogT3B0aW1pemUgZGVxdWUucm90YXRlKCkgc28gdGhhdCBpdCBvbmx5IG1vdmVzIHBvaW50ZXJzCisgIGFuZCBkb2Vzbid0IHRvdWNoIHRoZSB1bmRlcmx5aW5nIGRhdGEgd2l0aCBpbmNyZWZzIGFuZCBkZWNyZWZzLgorCiAtIElzc3VlICMxNjkwMDogSXNzdWUgYSBSZXNvdXJjZVdhcm5pbmcgd2hlbiBhbiBzc2wgc29ja2V0IGlzIGxlZnQgdW5jbG9zZWQuCiAKIC0gSXNzdWUgIzEzODk5OiBcQSwgXFosIGFuZCBcQiBub3cgY29ycmVjdGx5IG1hdGNoIHRoZSBBLCBaLCBhbmQgQiBsaXRlcmFscwpAQCAtOTk5LDEyICsxNDI3LDI5IEBACiAgIGZhaWxpbmcgaWYgdGhlIGNvbm5lY3Rpb24gdXNlZCBhIHJvdyBmYWN0b3J5IChzdWNoIGFzIHNxbGl0ZTMuUm93KSB0aGF0CiAgIHByb2R1Y2VkIHVuc29ydGFibGUgb2JqZWN0cy4gKFJlZ3Jlc3Npb24gd2FzIGludHJvZHVjZWQgYnkgZml4IGZvciA5NzUwKS4KIAorLSBmY250bDogYWRkIEZfRFVQRkRfQ0xPRVhFQyBjb25zdGFudCwgYXZhaWxhYmxlIG9uIExpbnV4IDIuNi4yNCsuCisKIC0gSXNzdWUgIzE1OTcyOiBGaXggZXJyb3IgbWVzc2FnZXMgd2hlbiBvcyBmdW5jdGlvbnMgZXhwZWN0aW5nIGEgZmlsZSBuYW1lIG9yCiAgIGZpbGUgZGVzY3JpcHRvciByZWNlaXZlIHRoZSBpbmNvcnJlY3QgdHlwZS4KIAorLSBJc3N1ZSAjODEwOTogVGhlIHNzbCBtb2R1bGUgbm93IGhhcyBzdXBwb3J0IGZvciBzZXJ2ZXItc2lkZSBTTkksIHRoYW5rcworICB0byBhIDptZXRoOmBTU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrYCBtZXRob2QuICBQYXRjaCBieSBEYW5pZWwKKyAgQmxhY2suCisKKy0gSXNzdWUgIzE2ODYwOiBJbiB0ZW1wZmlsZSwgdXNlIE9fQ0xPRVhFQyB3aGVuIGF2YWlsYWJsZSB0byBzZXQgdGhlCisgIGNsb3NlLW9uLWV4ZWMgZmxhZyBhdG9taWNhbGx5LgorCistIElzc3VlICMxNjY3NDogcmFuZG9tLmdldHJhbmRiaXRzKCkgaXMgbm93IDIwLTQwJSBmYXN0ZXIgZm9yIHNtYWxsIGludGVnZXJzLgorCistIElzc3VlICMxNjAwOTogSlNPTiBlcnJvciBtZXNzYWdlcyBub3cgcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uLgorCiAtIElzc3VlICMxNjgyODogRml4IGVycm9yIGluY29ycmVjdGx5IHJhaXNlZCBieSBiejIuY29tcHJlc3MoYicnKSBhbmQKICAgYnoyLkJaMkNvbXByZXNzb3IuY29tcHJlc3MoYicnKS4gSW5pdGlhbCBwYXRjaCBieSBNYXJ0aW4gUGFja21hbi4KIAorLSBJc3N1ZSAjMTY4MzM6IEluIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLCBkbyBub3QgY29uY2F0ZW5hdGUgdGhlIHJlcXVlc3QKKyAgaGVhZGVycyBhbmQgYm9keSB3aGVuIHRoZSBwYXlsb2FkIGV4Y2VlZHMgMTYgS0IsIHNpbmNlIGl0IGNhbiBjb25zdW1lIG1vcmUKKyAgbWVtb3J5IGZvciBubyBiZW5lZml0LiAgUGF0Y2ggYnkgQmVubm8gTGVzbGllLgorCiAtIElzc3VlICMxNjU0MTogdGtfc2V0UGFsZXR0ZSgpIG5vdyB3b3JrcyB3aXRoIGtleXdvcmQgYXJndW1lbnRzLgogCiAtIElzc3VlICMxNjgyMDogSW4gY29uZmlncGFyc2VyLCBgcGFyc2VyLnBvcGl0ZW0oKWAgbm8gbG9uZ2VyIHJhaXNlcyBWYWx1ZUVycm9yLgpAQCAtMTAyMCwxNCArMTQ2NSwyMSBAQAogCiAtIElzc3VlICM5NTg2OiBSZWRlZmluZSBTRU1fRkFJTEVEIG9uIE1hY09TWCB0byBrZWVwIGNvbXBpbGVyIGhhcHB5LgogCistIElzc3VlICMxNjc4NzogSW5jcmVhc2UgYXN5bmNvcmUgYW5kIGFzeW5jaGF0IGRlZmF1bHQgb3V0cHV0IGJ1ZmZlcnMgc2l6ZSwgdG8KKyAgZGVjcmVhc2UgQ1BVIHVzYWdlIGFuZCBpbmNyZWFzZSB0aHJvdWdocHV0LgorCiAtIElzc3VlICMxMDUyNzogbWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHBvbGwoKSBpbnN0ZWFkIG9mIHNlbGVjdCgpIGlmIGF2YWlsYWJsZS4KIAogLSBJc3N1ZSAjMTY2ODg6IE5vdyByZWdleGVzIGNvbnRhaW5lZCBiYWNrcmVmZXJlbmNlcyBjb3JyZWN0bHkgd29yayB3aXRoCiAgIG5vbi1BU0NJSSBzdHJpbmdzLiAgUGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgogCistIElzc3VlICMxNjQ4NjogTWFrZSBhaWZjIGZpbGVzIGFjdCBhcyBjb250ZXh0IG1hbmFnZXJzLgorCiAtIElzc3VlICMxNjQ4NTogTm93IGZpbGUgZGVzY3JpcHRvcnMgYXJlIGNsb3NlZCBpZiBmaWxlIGhlYWRlciBwYXRjaGluZyBmYWlsZWQKICAgb24gY2xvc2luZyBhbiBhaWZjIGZpbGUuCiAKKy0gSXNzdWUgIzE2NjQwOiBSdW4gbGVzcyBjb2RlIHVuZGVyIGEgbG9jayBpbiBzY2hlZCBtb2R1bGUuCisKIC0gSXNzdWUgIzE2MTY1OiBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbm8gbG9uZ2VyIGJsb2NrcyBhIHNjaGVkdWxlciBmb3Igb3RoZXIKICAgdGhyZWFkcy4KIApAQCAtMTAzNyw2ICsxNDg5LDggQEAKIC0gSXNzdWUgIzE2NjE4OiBNYWtlIGdsb2IuZ2xvYiBtYXRjaCBjb25zaXN0ZW50bHkgYWNyb3NzIHN0cmluZ3MgYW5kIGJ5dGVzCiAgIHJlZ2FyZGluZyBsZWFkaW5nIGRvdHMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMxNjc4ODogQWRkIHNhbWVzdGF0IHRvIExpYi9udHBhdGgucHkKKwogLSBJc3N1ZSAjMTY3MTM6IFBhcnNpbmcgb2YgJ3RlbCcgdXJscyB1c2luZyB1cmxwYXJzZSBzZXBhcmF0ZXMgcGFyYW1zIGZyb20KICAgcGF0aC4KIApAQCAtMTA1OCwxMCArMTUxMiwyNSBAQAogICBzdXBwb3J0cyBhbGwgTm9uZSBkZWZhdWx0IHZhbHVlcyBwcmVzZW50IGluIGRlY2ltYWwucHkuIFRoZXNlIHZhbHVlcyB3ZXJlCiAgIGxhcmdlbHkgdW5kb2N1bWVudGVkLgogCistIElzc3VlICMxMTE3NTogYXJncGFyc2UuRmlsZVR5cGUgbm93IGFjY2VwdHMgZW5jb2RpbmcgYW5kIGVycm9ycworICBhcmd1bWVudHMuIFBhdGNoIGJ5IEx1Y2FzIE1heXN0cmUuCisKKy0gSXNzdWUgIzE2NDg4OiBlcG9sbCgpIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGB3aXRoYCBzdGF0ZW1lbnQuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCiAtIElzc3VlICMxNjI5ODogSW4gSFRUUFJlc3BvbnNlLnJlYWQoKSwgY2xvc2UgdGhlIHNvY2tldCB3aGVuIHRoZXJlIGlzIG5vCiAgIENvbnRlbnQtTGVuZ3RoIGFuZCB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIGZpbmlzaGVkLiAgUGF0Y2ggYnkgRXJhbgogICBSdW5kc3RlaW4uCiAKKy0gQWRkIGFiYy5BQkMgY2xhc3MgdG8gdXNlIGluaGVyaXRhbmNlIHJhdGhlciB0aGFuIGEgZGlyZWN0IGludm9jYXRpb24gb2YKKyAgQUJDTWV0YSBtZXRhY2xhc3MuIFBhdGNoIGJ5IEJydW5vIER1cHVpcy4KKworLSBFeHBvc2UgdGhlIFRDUF9GQVNUT1BFTiBhbmQgTVNHX0ZBU1RPUEVOIGZsYWdzIGluIHNvY2tldCB3aGVuIHRoZXkncmUKKyAgYXZhaWxhYmxlLgorCistIElzc3VlICMxNTcwMTogQWRkIGEgLmhlYWRlcnMgYXR0cmlidXRlIHRvIHVybGxpYi5lcnJvci5IVFRQRXJyb3IuIFBhdGNoCisgIGNvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcuCisKIC0gSXNzdWUgIzE1ODcyOiBGaXggMy4zIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSB0aGUgbmV3IGZkLWJhc2VkIHNodXRpbC5ybXRyZWUKICAgdGhhdCBjYXVzZWQgaXQgdG8gbm90IGlnbm9yZSBjZXJ0YWluIGVycm9ycyB3aGVuIGlnbm9yZV9lcnJvcnMgd2FzIHNldC4KICAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYSBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KQEAgLTEwNjksNiArMTUzOCw5IEBACiAtIElzc3VlICMxNjI0ODogRGlzYWJsZSBjb2RlIGV4ZWN1dGlvbiBmcm9tIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgYnkKICAgdGtpbnRlciB3aGVuIHRoZSAtRSBmbGFnIGlzIHBhc3NlZCB0byBQeXRob24uICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCiAKKy0gSXNzdWUgIzEzMzkwOiBOZXcgZnVuY3Rpb24gOmZ1bmM6YHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKWAgcmV0dXJucyB0aGUKKyAgbnVtYmVyIG9mIG1lbW9yeSBibG9ja3MgY3VycmVudGx5IGFsbG9jYXRlZC4KKwogLSBJc3N1ZSAjMTY2Mjg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIGN0eXBlcy5yZXNpemUoKS4KIAogLSBJc3N1ZSAjMTM2MTQ6IEZpeCBzZXR1cC5weSByZWdpc3RlciBmYWlsdXJlIHdpdGggaW52YWxpZCByc3QgaW4gZGVzY3JpcHRpb24uCkBAIC0xMDg5LDYgKzE1NjEsOSBAQAogLSBJc3N1ZSAjMTAxODI6IFRoZSByZSBtb2R1bGUgZG9lc24ndCB0cnVuY2F0ZSBpbmRpY2VzIHRvIDMyIGJpdHMgYW55bW9yZS4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMTYzMzM6IHVzZSAoIiwiLCAiOiAiKSBhcyBkZWZhdWx0IHNlcGFyYXRvciB3aGVuIGluZGVudCBpcyBzcGVjaWZpZWQKKyAgdG8gYXZvaWQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzE2NTczOiBJbiAydG8zLCB0cmVhdCBlbnVtZXJhdGUoKSBsaWtlIGEgY29uc3VtaW5nIGNhbGwsIHNvIHN1cGVyZmx1b3VzCiAgIGxpc3QoKSBjYWxscyBhcmVuJ3QgYWRkZWQgdG8gZmlsdGVyKCksIG1hcCgpLCBhbmQgemlwKCkgd2hpY2ggYXJlIGRpcmVjdGx5CiAgIHBhc3NlZCBlbnVtZXJhdGUoKS4KQEAgLTEwOTcsMTcgKzE1NzIsNDYgQEAKICAgbGVuZ3RocyBhcyB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlcnMsIGxpa2UgdGhlIEMgaW1wbGVtZW50YXRpb24gZG9lcy4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMTY0MjM6IHVybGxpYi5yZXF1ZXN0IG5vdyBoYXMgc3VwcG9ydCBmb3IgYGBkYXRhOmBgIFVSTHMuICBQYXRjaCBieQorICBNYXRoaWFzIFBhbnplbmLDtmNrLgorCistIElzc3VlICM0NDczOiBBZGQgYSBQT1AzLnN0bHMoKSB0byBzd2l0Y2ggYSBjbGVhci10ZXh0IFBPUDMgc2Vzc2lvbiBpbnRvCisgIGFuIGVuY3J5cHRlZCBQT1AzIHNlc3Npb24sIG9uIHN1cHBvcnRlZCBzZXJ2ZXJzLiAgUGF0Y2ggYnkgTG9yZW56byBDYXR1Y2NpLgorCistIElzc3VlICM0NDczOiBBZGQgYSBQT1AzLmNhcGEoKSBtZXRob2QgdG8gcXVlcnkgdGhlIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkCisgIGJ5IHRoZSBQT1AzIHNlcnZlci4gIFBhdGNoIGJ5IExvcmVuem8gQ2F0dWNjaS4KKworLSBJc3N1ZSAjNDQ3MzogRW5zdXJlIHRoZSBzb2NrZXQgaXMgc2h1dGRvd24gY2xlYW5seSBpbiBQT1AzLmNsb3NlKCkuCisgIFBhdGNoIGJ5IExvcmVuem8gQ2F0dWNjaS4KKworLSBJc3N1ZSAjMTY1MjI6IGFkZGVkIEZBSUxfRkFTVCBmbGFnIHRvIGRvY3Rlc3QuCisKKy0gSXNzdWUgIzE1NjI3OiBBZGQgdGhlIGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5zb3VyY2VfdG9fY29kZSgpIG1ldGhvZC4KKwogLSBJc3N1ZSAjMTY0MDg6IEZpeCBmaWxlIGRlc2NyaXB0b3JzIG5vdCBiZWluZyBjbG9zZWQgaW4gZXJyb3IgY29uZGl0aW9ucwogICBpbiB0aGUgemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMxNDYzMTogQWRkIGEgbmV3IDpjbGFzczpgd2Vha3JlZi5XZWFrTWV0aG9kYCB0byBzaW11bGF0ZSB3ZWFrCisgIHJlZmVyZW5jZXMgdG8gYm91bmQgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTY0Njk6IEZpeCBleGNlcHRpb25zIGZyb20gZmxvYXQgLT4gRnJhY3Rpb24gYW5kIERlY2ltYWwgLT4gRnJhY3Rpb24KKyAgY29udmVyc2lvbnMgZm9yIHNwZWNpYWwgdmFsdWVzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aG9zZSBmb3IgZmxvYXQgLT4gaW50CisgIGFuZCBEZWNpbWFsIC0+IGludC4gIFBhdGNoIGJ5IEFsZXhleSBLYWNoYXlldi4KKwogLSBJc3N1ZSAjMTY0ODE6IG11bHRpcHJvY2Vzc2luZyBubyBsb25nZXIgbGVha3MgcHJvY2VzcyBoYW5kbGVzIG9uIFdpbmRvd3MuCiAKKy0gSXNzdWUgIzEyNDI4OiBBZGQgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdG9vbHMucGFydGlhbCgpLgorICBQYXRjaCBieSBCcmlhbiBUaG9ybmUuCisKIC0gSXNzdWUgIzE2MTQwOiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm8gbG9uZ2VyIGRvdWJsZSBjbG9zZXMgaXRzIGNoaWxkCiAgIHN1YnByb2Nlc3MuUElQRSBwYXJlbnQgZmlsZSBkZXNjcmlwdG9ycyBvbiBjaGlsZCBlcnJvciBwcmlvciB0byBleGVjKCkuCiAKIC0gUmVtb3ZlIGEgYmFyZSBwcmludCB0byBzdGRvdXQgZnJvbSB0aGUgc3VicHJvY2VzcyBtb2R1bGUgdGhhdCBjb3VsZCBoYXZlCiAgIGhhcHBlbmVkIGlmIHRoZSBjaGlsZCBwcm9jZXNzIHdyb3RlIGdhcmJhZ2UgdG8gaXRzIHByZS1leGVjIGVycm9yIHBpcGUuCiAKKy0gVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyByYWlzZXMgaXRzIG93biBTdWJwcm9jZXNzRXJyb3IgaW5zdGVhZCBvZiBhCisgIFJ1bnRpbWVFcnJvciBpbiB2YXJpb3VzIGVycm9yIHNpdHVhdGlvbnMgd2hpY2ggc2hvdWxkIG5vdCBub3JtYWxseSBoYXBwZW4uCisKIC0gSXNzdWUgIzE2MzI3OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm8gbG9uZ2VyIGxlYWtzIGZpbGUgZGVzY3JpcHRvcnMKICAgdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyciBwaXBlcyB0byB0aGUgY2hpbGQgd2hlbiBmb3JrKCkgZmFpbHMuCiAKQEAgLTExMjgsNiArMTYzMiw5IEBACiAtIElzc3VlICMxNjQzMTogVXNlIHRoZSB0eXBlIGluZm9ybWF0aW9uIHdoZW4gY29uc3RydWN0aW5nIGEgRGVjaW1hbCBzdWJ0eXBlCiAgIGZyb20gYSBEZWNpbWFsIGFyZ3VtZW50LgogCistIElzc3VlICMxNTY0MTogQ2xlYW4gdXAgZGVwcmVjYXRlZCBjbGFzc2VzIGZyb20gaW1wb3J0bGliCisgIFBhdGNoIGJ5IFRhcmFzIEx5YXB1bi4KKwogLSBJc3N1ZSAjMTYzNTA6IHpsaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgYWNjdW11bGF0ZXMgZGF0YSBmcm9tCiAgIHN1Y2Nlc3NpdmUgY2FsbHMgYWZ0ZXIgRU9GIGluIHVudXNlZF9kYXRhLCBpbnN0ZWFkIG9mIG9ubHkgc2F2aW5nIHRoZSBhcmd1bWVudAogICB0byB0aGUgbGFzdCBjYWxsLiBkZWNvbXByZXNzb2JqKCkuZmx1c2goKSBub3cgY29ycmVjdGx5IHNldHMgdW51c2VkX2RhdGEgYW5kCkBAIC0xMTQwLDMwICsxNjQ3LDU3IEBACiAtIElzc3VlICMxNjE1MjogZml4IHRva2VuaXplIHRvIGlnbm9yZSB3aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGNvZGUgd2hlbgogICBubyBuZXdsaW5lIGlzIGZvdW5kLiAgUGF0Y2ggYnkgTmVkIEJhdGNoZWxkZXIuCiAKKy0gSXNzdWUgIzE2Mjg0OiBQcmV2ZW50IGtlZXBpbmcgdW5uZWNlc3NhcnkgcmVmZXJlbmNlcyB0byB3b3JrZXIgZnVuY3Rpb25zCisgIGluIGNvbmN1cnJlbnQuZnV0dXJlcyBUaHJlYWRQb29sRXhlY3V0b3IuCisKIC0gSXNzdWUgIzE2MjMwOiBGaXggYSBjcmFzaCBpbiBzZWxlY3Quc2VsZWN0KCkgd2hlbiBvbmUgdGhlIGxpc3RzIGNoYW5nZXMKICAgc2l6ZSB3aGlsZSBpdGVyYXRlZCBvbi4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKIC0gSXNzdWUgIzE2MjI4OiBGaXggYSBjcmFzaCBpbiB0aGUganNvbiBtb2R1bGUgd2hlcmUgYSBsaXN0IGNoYW5nZXMgc2l6ZQogICB3aGlsZSBpdCBpcyBiZWluZyBlbmNvZGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMTYzNTE6IE5ldyBmdW5jdGlvbiBnYy5nZXRfc3RhdHMoKSByZXR1cm5zIHBlci1nZW5lcmF0aW9uIGNvbGxlY3Rpb24KKyAgc3RhdGlzdGljcy4KKwogLSBJc3N1ZSAjMTQ4OTc6IEVuaGFuY2UgZXJyb3IgbWVzc2FnZXMgb2Ygc3RydWN0LnBhY2sgYW5kCiAgIHN0cnVjdC5wYWNrX2ludG8uIFBhdGNoIGJ5IE1hdHRpIE3DpGtpLgogCistIElzc3VlICMxNjMxNjogbWltZXR5cGVzIG5vdyByZWNvZ25pemVzIHRoZSAueHogYW5kIC50eHogKC50YXIueHopIGV4dGVuc2lvbnMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzEyODkwOiBjZ2l0YiBubyBsb25nZXIgcHJpbnRzIHNwdXJpb3VzIDxwPiB0YWdzIGluIHRleHQKICAgbW9kZSB3aGVuIHRoZSBsb2dkaXIgb3B0aW9uIGlzIHNwZWNpZmllZC4KIAogLSBJc3N1ZSAjMTYzMDc6IEZpeCBtdWx0aXByb2Nlc3NpbmcuUG9vbC5tYXBfYXN5bmMgbm90IGNhbGxpbmcgaXRzIGNhbGxiYWNrcy4KICAgUGF0Y2ggYnkgSmFubmUgS2FyaWxhLgogCi0tIElzc3VlICMxNjI1MDogRml4IFVSTEVycm9yIGludm9jYXRpb24gd2l0aCBwcm9wZXIgYXJncy4KKy0gSXNzdWUgIzE2MzA1OiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgb2NjdXJyaW5nIHdoZW4gaW50ZXJydXB0aW5nCisgIG1hdGguZmFjdG9yaWFsLgogCiAtIElzc3VlICMxNjExNjogRml4IGluY2x1ZGUgYW5kIGxpYnJhcnkgcGF0aHMgdG8gYmUgY29ycmVjdCB3aGVuIGJ1aWxkaW5nIEMKICAgZXh0ZW5zaW9ucyBpbiB2ZW52cy4KIAogLSBJc3N1ZSAjMTYyNDU6IEZpeCB0aGUgdmFsdWUgb2YgYSBmZXcgZW50aXRpZXMgaW4gaHRtbC5lbnRpdGllcy5odG1sNS4KIAorLSBJc3N1ZSAjMTYzMDE6IEZpeCB0aGUgbG9jYWxob3N0IHZlcmlmaWNhdGlvbiBpbiB1cmxsaWIvcmVxdWVzdC5weSBmb3IgZmlsZTovLworICB1cmxzLgorCistIElzc3VlICMxNjI1MDogRml4IHRoZSBpbnZvY2F0aW9ucyBvZiBVUkxFcnJvciB3aGljaCBoYWQgbWlzcGxhY2VkIGZpbGVuYW1lCisgIGF0dHJpYnV0ZSBmb3IgZXhjZXB0aW9uLgorCistIElzc3VlICMxMDgzNjogRml4IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaWxlIG5vdCBmb3VuZCBpbiB1cmxyZXRyaWV2ZQorICBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KKwogLSBJc3N1ZSAjMTQzOTg6IEZpeCBzaXplIHRydW5jYXRpb24gYW5kIG92ZXJmbG93IGJ1Z3MgaW4gdGhlIGJ6MiBtb2R1bGUuCiAKKy0gSXNzdWUgIzEyNjkyOiBGaXggcmVzb3VyY2UgbGVhayBpbiB1cmxsaWIucmVxdWVzdCB3aGVuIHRhbGtpbmcgdG8gYW4gSFRUUAorICBzZXJ2ZXIgdGhhdCBkb2VzIG5vdCBpbmNsdWRlIGEgIkNvbm5lY3Rpb246IGNsb3NlIiBoZWFkZXIgaW4gaXRzIHJlc3BvbnNlcy4KKworLSBJc3N1ZSAjMTIwMzQ6IEZpeCBib2d1cyBjYWNoaW5nIG9mIHJlc3VsdCBpbiBjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUuCisgIFBhdGNoIGJ5IEF0c3VvIElzaGltb3RvLgorCistIEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgYGx6bWEuTFpNQUZpbGVgLgorCiAtIElzc3VlICMxNjIyMDogd3NnaXJlZiBub3cgYWx3YXlzIGNhbGxzIGNsb3NlKCkgb24gYW4gaXRlcmFibGUgcmVzcG9uc2UuCiAgIFBhdGNoIGJ5IEJyZW50IFR1YmJzLgogCkBAIC0xMTc1LDI3ICsxNzA5LDM3IEBACiAKIC0gSXNzdWUgIzE2MTc2OiBQcm9wZXJseSBpZGVudGlmeSBXaW5kb3dzIDggdmlhIHBsYXRmb3JtLnBsYXRmb3JtKCkKIAorLSBJc3N1ZSAjMTYwODg6IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIncyBzZW5kX2Vycm9yIG1ldGhvZCBpbmNsdWRlcyBhCisgIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpbiBpdCdzIHJlc3BvbnNlIG5vdy4gUGF0Y2ggYnkgQW50b2luZSBQaXRyb3UuCisKIC0gSXNzdWUgIzE2MTE0OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm8gbG9uZ2VyIHByb3ZpZGVzIGEgbWlzbGVhZGluZyBlcnJvcgogICBtZXNzYWdlIHN0YXRpbmcgdGhhdCBhcmdzWzBdIGRpZCBub3QgZXhpc3Qgd2hlbiBlaXRoZXIgdGhlIGN3ZCBvciBleGVjdXRhYmxlCiAgIGtleXdvcmQgYXJndW1lbnRzIHNwZWNpZmllZCBhIHBhdGggdGhhdCBkaWQgbm90IGV4aXN0LgogCiAtIElzc3VlICMxNjE2OTogRml4IGN0eXBlcy5XaW5FcnJvcigpJ3MgY29uZnVzaW9uIGJldHdlZW4gZXJybm8gYW5kIHdpbmVycm9yLgogCi0tIElzc3VlICMxNjA3NjogTWFkZSBfZWxlbWVudHRyZWUuRWxlbWVudCBwaWNrbGVhYmxlIGluIGEgd2F5IHRoYXQgaXMgY29tcGF0aWJsZQotICB3aXRoIHRoZSBQeXRob24gRWxlbWVudC4gUGlja2xpbmcvdW5waWNrbGluZyBvZiB4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudAotICB3b3JrcyBhZ2FpbiAtIHRoaXMgd2FzIGEgdGVtcG9yYXJ5IHJlZ3Jlc3Npb24gZnJvbSAzLjIgd2hlcmUgdGhlIGJ5LWRlZmF1bHQKLSAgaW1wb3J0ZWQgX2VsZW1lbnR0cmVlIGhhZCBubyBwaWNrbGluZyBjYXBhYmlsaXR5LgorLSBJc3N1ZSAjMTQ5MjcwNDogc2h1dGlsLmNvcHlmaWxlKCkgcmFpc2VzIGEgZGlzdGluY3QgU2FtZUZpbGVFcnJvciBub3cgaWYKKyAgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUgZmlsZS4gUGF0Y2ggYnkgQXRzdW8gSXNoaW1vdG8uCisKKy0gSXNzdWUgIzEzODk2OiBNYWtlIHNoZWxmIGluc3RhbmNlcyB3b3JrIHdpdGggJ3dpdGgnIGFzIGNvbnRleHQgbWFuYWdlcnMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzE1NDE3OiBBZGQgc3VwcG9ydCBmb3IgY3NoIGFuZCBmaXNoIGluIHZlbnYgYWN0aXZhdGlvbiBzY3JpcHRzLgorCistIElzc3VlICMxNDM3NzogRWxlbWVudFRyZWUud3JpdGUgYW5kIHNvbWUgb2YgdGhlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMgaGF2ZQorICBhIG5ldyBwYXJhbWV0ZXIgLSAqc2hvcnRfZW1wdHlfZWxlbWVudHMqLiBJdCBjb250cm9scyBob3cgZWxlbWVudHMgd2l0aCBubworICBjb250ZW50cyBhcmUgZW1pdHRlZC4KIAogLSBJc3N1ZSAjMTYwODk6IEFsbG93IEVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyIHRvIHdvcmsgYWdhaW4gd2l0aCBhIG5vbi1FbGVtZW50CiAgIGVsZW1lbnRfZmFjdG9yeSAoZml4ZXMgYSByZWdyZXNzaW9uIGluIFNpbXBsZVRBTCkuCiAKLS0gSXNzdWUgIzE2OTEzOiBGaXggRWxlbWVudC5pdGVydGV4dCgpJ3MgaGFuZGxpbmcgb2YgdGV4dCB3aXRoIFhNTCBlbnRpdGllcy4sCistIElzc3VlICM5NjUwOiBMaXN0IGNvbW1vbmx5IHVzZWQgZm9ybWF0IGNvZGVzIGluIHRpbWUuc3RyZnRpbWUgYW5kCisgIHRpbWUuc3RycHRpbWUgZG9jc3R0aW5ncy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1pa2UgSG95LgogCiAtIElzc3VlICMxNjAzNDogRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGluIHRoZSBuZXcgYGJ6Mi5CWjJGaWxlYAogICBpbXBsZW1lbnRhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCi0gIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KKy0gYHB0eS5zcGF3bigpYCBub3cgcmV0dXJucyB0aGUgY2hpbGQgcHJvY2VzcyBzdGF0dXMgcmV0dXJuZWQgYnkgYG9zLndhaXRwaWQoKWAuCiAKIC0gSXNzdWUgIzE1NzU2OiBgc3VicHJvY2Vzcy5wb2xsKClgIG5vdyBwcm9wZXJseSBoYW5kbGVzIGBlcnJuby5FQ0hJTERgIHRvCiAgIHJldHVybiBhIHJldHVybmNvZGUgb2YgMCB3aGVuIHRoZSBjaGlsZCBoYXMgYWxyZWFkeSBleGl0ZWQgb3IgY2Fubm90IGJlIHdhaXRlZApAQCAtMTIxNSw2ICsxNzU5LDkgQEAKIC0gSXNzdWUgIzE1NDIxOiBGaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBgQ2FsZW5kYXIuaXRlcm1vbnRoZGF0ZXMoKWAgYWZ0ZXIKICAgYGRhdGV0aW1lLk1BWFlFQVJgLiAgUGF0Y2ggYnkgQ8OpZHJpYyBLcmllci4KIAorLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCisgIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KKwogLSBJc3N1ZSAjMTU5NzA6IGB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAogICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCiAKQEAgLTEyMzcsMjIgKzE3ODQsNjEgQEAKICAgUG9wZW4gd2hlbiBgYCVhY3Rpb25gYCBzdWJzdGl0dXRpb25zIHByb2R1Y2UgZW1wdHkgc3RyaW5ncy4KIAogLSBJc3N1ZSAjMTI3NzYsIGlzc3VlICMxMTgzOTogQ2FsbCBgYXJncGFyc2VgIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieQotICBhZGRfYXJndW1lbnQpIG9ubHkgb25jZS4gIEJlZm9yZSwgdGhlIHR5cGUgZnVuY3Rpb24gd2FzIGNhbGxlZCB0d2ljZSBpbiB0aGUKKyAgYWRkX2FyZ3VtZW50KSBvbmx5IG9uY2UuIEJlZm9yZSwgdGhlIHR5cGUgZnVuY3Rpb24gd2FzIGNhbGxlZCB0d2ljZSBpbiB0aGUKICAgY2FzZSB3aGVyZSB0aGUgZGVmYXVsdCB3YXMgc3BlY2lmaWVkIGFuZCB0aGUgYXJndW1lbnQgd2FzIGdpdmVuIGFzIHdlbGwuICBUaGlzCiAgIHdhcyBlc3BlY2lhbGx5IHByb2JsZW1hdGljIGZvciB0aGUgRmlsZVR5cGUgdHlwZSwgYXMgYSBkZWZhdWx0IGZpbGUgd291bGQKICAgYWx3YXlzIGJlIG9wZW5lZCwgZXZlbiBpZiBhIGZpbGUgYXJndW1lbnQgd2FzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgogCi0tIElzc3VlICMxNTkwNjogRml4IGEgcmVncmVzc2lvbiBpbiBgYXJncGFyc2VgIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKKy0gSXNzdWUgIzE1OTA2OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKICAgd2hlbiBgYGFjdGlvbj0nYXBwZW5kJ2BgLCBgYHR5cGU9J3N0cidgYCBhbmQgYGBkZWZhdWx0PVtdYGAuCiAKKy0gSXNzdWUgIzE2MTEzOiBBZGRlZCBzaGEzIG1vZHVsZSBiYXNlZCBvbiB0aGUgS2VjY2FrIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbgorICAzLjIuIFRoZSBgaGFzaGxpYmAgbW9kdWxlIGhhcyBmb3VyIGFkZGl0aW9uYWwgaGFzaCBhbGdvcml0aG1zOiBgc2hhM18yMjRgLAorICBgc2hhM18yNTZgLCBgc2hhM18zODRgIGFuZCBgc2hhM181MTJgLiBBcyBwYXJ0IG9mIHRoZSBwYXRjaCBzb21lIGNvbW1vbgorICBjb2RlIHdhcyBtb3ZlZCBmcm9tIF9oYXNob3BlbnNzbC5jIHRvIGhhc2hsaWIuaC4KKworLSBjdHlwZXMuY2FsbF9jb21tZXRob2Qgd2FzIHJlbW92ZWQsIHNpbmNlIGl0cyBvbmx5IHVzYWdlIHdhcyBpbiB0aGUgZGVmdW5jdAorICBzYW1wbGVzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTY2OTI6IEFkZGVkIFRMU3YxLjEgYW5kIFRMU3YxLjIgc3VwcG9ydCBmb3IgdGhlIHNzbCBtb2R1bGVzLgorCistIElzc3VlICMxNjgzMjogYWRkIGFiYy5nZXRfY2FjaGVfdG9rZW4oKSB0byBleHBvc2UgY2FjaGUgdmFsaWRpdHkgY2hlY2tpbmcKKyAgc3VwcG9ydCBpbiBBQkNNZXRhLgorCiBJRExFCiAtLS0tCiAKKy0gSXNzdWUgIzE3NTg1OiBGaXhlZCBJRExFIHJlZ3Jlc3Npb24uIE5vdyBjbG9zZXMgd2hlbiB1c2luZyBleGl0KCkgb3IgcXVpdCgpLgorCistIElzc3VlICMxNzY1NzogU2hvdyBmdWxsIFRrIHZlcnNpb24gaW4gSURMRSdzIGFib3V0IGRpYWxvZy4KKyAgUGF0Y2ggYnkgVG9kZCBSb3ZpdG8uCisKKy0gSXNzdWUgIzE3NjEzOiBQcmV2ZW50IHRyYWNlYmFjayB3aGVuIHJlbW92aW5nIHN5bnRheCBjb2xvcml6ZXIgaW4gSURMRS4KKworLSBJc3N1ZSAjMTIwNzU4OTogQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgcGF0Y2ggZm9yIHJpZ2h0LWNsaWNrIG1lbnUgaW4gSURMRS4KKworLSBJc3N1ZSAjMTY4ODc6IElETEUgbm93IGFjY2VwdHMgQ2FuY2VsIGluIHRhYmlmeS91bnRhYmlmeSBkaWFsb2cgYm94LgorCistIElzc3VlICMxNzYyNTogSW4gSURMRSwgY2xvc2UgdGhlIHJlcGxhY2UgZGlhbG9nIGFmdGVyIGl0IGlzIHVzZWQuCisKKy0gSXNzdWUgIzE0MjU0OiBJRExFIG5vdyBoYW5kbGVzIHJlYWRsaW5lIGNvcnJlY3RseSBhY3Jvc3Mgc2hlbGwgcmVzdGFydHMuCisKKy0gSXNzdWUgIzE3NjE0OiBJRExFIG5vIGxvbmdlciByYWlzZXMgZXhjZXB0aW9uIHdoZW4gcXVpY2tseSBjbG9zaW5nIGEgZmlsZS4KKworLSBJc3N1ZSAjNjY5ODogSURMRSBub3cgb3BlbnMganVzdCBhbiBlZGl0b3Igd2luZG93IHdoZW4gY29uZmlndXJlZCB0byBkbyBzby4KKworLSBJc3N1ZSAjODkwMDogVXNpbmcga2V5Ym9hcmQgc2hvcnRjdXRzIGluIElETEUgdG8gb3BlbiBhIGZpbGUgbm8gbG9uZ2VyCisgIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzY2NDk6IEZpeGVkIG1pc3NpbmcgZXhpdCBzdGF0dXMgaW4gSURMRS4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKIC0gSXNzdWUgIzE3MTE0OiBJRExFIG5vdyB1c2VzIG5vbi1zdHJpY3QgY29uZmlnIHBhcnNlci4KIAogLSBJc3N1ZSAjOTI5MDogSW4gSURMRSB0aGUgc3lzLnN0ZCogc3RyZWFtcyBub3cgaW1wbGVtZW50IGlvLlRleHRJT0Jhc2UKICAgaW50ZXJmYWNlIGFuZCBzdXBwb3J0IGFsbCBtYW5kYXRvcnkgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4KIAorLSBJc3N1ZSAjNTA2NjogVXBkYXRlIElETEUgZG9jcy4gUGF0Y2ggYnkgVG9kZCBSb3ZpdG8uCisKIC0gSXNzdWUgIzE2ODI5OiBJRExFIHByaW50aW5nIG5vIGxvbmdlciBmYWlscyBpZiB0aGVyZSBhcmUgc3BhY2VzIG9yIG90aGVyCiAgIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBwYXRoLgogCkBAIC0xMjY5LDYgKzE4NTUsOSBAQAogLSBJc3N1ZSAjMTIwNzU4OTogQWRkIEN1dC9Db3B5L1Bhc3RlIGl0ZW1zIHRvIElETEUgcmlnaHQgY2xpY2sgQ29udGV4dCBNZW51CiAgIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgogCistIElzc3VlICMxNjEyMzogSURMRSAtIGRlcHJlY2F0ZSBydW5uaW5nIHdpdGhvdXQgYSBzdWJwcm9jZXNzLgorICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKwogVGVzdHMKIC0tLS0tCiAKQEAgLTEyODksOCArMTg3OCwxNSBAQAogCiAtIElzc3VlICMxMzg5ODogdGVzdF9zc2wgbm8gbG9uZ2VyIHByaW50cyBhIHNwdXJpb3VzIHN0YWNrIHRyYWNlIG9uIFVidW50dS4KIAorLSBJc3N1ZSAjMTcyODM6IFNoYXJlIGNvZGUgYmV0d2VlbiBgX19tYWluX18ucHlgIGFuZCBgcmVncnRlc3QucHlgIGluCisgIGBMaWIvdGVzdGAuCisKIC0gSXNzdWUgIzE3MjQ5OiBjb252ZXJ0IGEgdGVzdCBpbiB0ZXN0X2NhcGkgdG8gdXNlIHVuaXR0ZXN0IGFuZCByZWFwIHRocmVhZHMuCiAKKy0gSXNzdWUgIzE3MTA3OiBUZXN0IGNsaWVudC1zaWRlIFNOSSBzdXBwb3J0IGluIHVybGxpYi5yZXF1ZXN0IHRoYW5rcyB0bworICB0aGUgbmV3IHNlcnZlci1zaWRlIFNOSSBzdXBwb3J0IGluIHRoZSBzc2wgbW9kdWxlLiAgSW5pdGlhbCBwYXRjaCBieQorICBEYW5pZWwgQmxhY2suCisKIC0gSXNzdWUgIzE3MDQxOiBGaXggdGVzdGluZyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGggdGhlCiAgIC0td2l0aG91dC1kb2Mtc3RyaW5ncy4KIApAQCAtMTI5OCw2ICsxODk0LDggQEAKIAogLSBJc3N1ZSAjMTU1Mzk6IEFkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIFRvb2xzL3NjcmlwdHMvcGluZGVudC5weS4KIAorLSBJc3N1ZSAjMTY4MzY6IEVuYWJsZSBJUHY2IHN1cHBvcnQgZXZlbiBpZiBJUHY2IGlzIGRpc2FibGVkIG9uIHRoZSBidWlsZCBob3N0LgorCiAtIElzc3VlICMxNzQ3OTogdGVzdF9pbyBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KICAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgogCkBAIC0xMzU3LDYgKzE5NTUsMTEgQEAKIAogLSBJc3N1ZSAjMTY3NDg6IHRlc3RfaGVhcHEgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCiAKKy0gSXNzdWUgIzEwNjQ2OiBUZXN0cyByZWFycmFuZ2VkIGZvciBvcy5zYW1lZmlsZS9zYW1lc3RhdCB0byBjaGVjayBmb3Igbm90CisgIGp1c3Qgc3ltbGlua3MgYnV0IGFsc28gaGFyZCBsaW5rcy4KKworLSBJc3N1ZSAjMTUzMDI6IFN3aXRjaCByZWdydGVzdCBmcm9tIHVzaW5nIGdldG9wdCB0byB1c2luZyBhcmdwYXJzZS4KKwogLSBJc3N1ZSAjMTUzMjQ6IEZpeCByZWdydGVzdCBwYXJzaW5nIG9mIC0tZnJvbWZpbGUsIC0tbWF0Y2gsIGFuZCAtLXJhbmRvbWl6ZQogICBvcHRpb25zLgogCkBAIC0xMzY2LDYgKzE5NjksOSBAQAogLSBJc3N1ZSAjMTY2NjQ6IEFkZCByZWdyZXNzaW9uIHRlc3RzIGZvciBnbG9iJ3MgYmVoYXZpb3VyIGNvbmNlcm5pbmcgZW50cmllcwogICBzdGFydGluZyB3aXRoIGEgIi4iLiAgUGF0Y2ggYnkgU2ViYXN0aWFuIEtyZWZ0LgogCistIElzc3VlICMxMzM5MDogVGhlIGBgLVJgYCBvcHRpb24gdG8gcmVncnRlc3Qgbm93IGFsc28gY2hlY2tzIGZvciBtZW1vcnkKKyAgYWxsb2NhdGlvbiBsZWFrcywgdXNpbmcgOmZ1bmM6YHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MoKWAuCisKIC0gSXNzdWUgIzE2NTU5OiBBZGQgbW9yZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlLCBpbmNsdWRpbmcgc29tZSBmcm9tIHRoZQogICBvZmZpY2lhbCB0ZXN0IHN1aXRlIGF0IGpzb24ub3JnLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIApAQCAtMTM4NCw3ICsxOTkwLDcgQEAKIC0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBgVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wKClgLiBQYXRjaCBieQogICBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTU1NzogQWRkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIGB3ZWJicm93c2VyYCBtb2R1bGUsIHRoYW5rcyB0byBBbnRvbgorLSBJc3N1ZSAjMTU1NTc6IEFkZGVkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIHdlYmJyb3dzZXIgbW9kdWxlLCB0aGFua3MgdG8gQW50b24KICAgQmFya292c2t5LgogCiAtIElzc3VlICMxNjY5ODogU2tpcCBwb3NpeCB0ZXN0X2dldGdyb3VwcyB3aGVuIGJ1aWx0IHdpdGggT1MgWApAQCAtMTM5Myw2ICsxOTk5LDkgQEAKIEJ1aWxkCiAtLS0tLQogCistIElzc3VlICMxNzU5MTogVXNlIGxvd2VyY2FzZSBmaWxlbmFtZXMgd2hlbiBpbmNsdWRpbmcgV2luZG93cyBoZWFkZXIgZmlsZXMuCisgIFBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YuCisKIC0gSXNzdWUgIzE3NTUwOiBGaXggdGhlIC0tZW5hYmxlLXByb2ZpbGluZyBjb25maWd1cmUgc3dpdGNoLgogCiAtIElzc3VlICMxNzQyNTogQnVpbGQgd2l0aCBvcGVuc3NsIDEuMC4xZCBvbiBXaW5kb3dzLgpAQCAtMTQwOCw2ICsyMDE3LDEwIEBACiAKIC0gSXNzdWUgIzM3MTg6IFVzZSBBQ19BUkdfVkFSIHRvIHNldCBNQUNIREVQIGluIGNvbmZpZ3VyZS5hYy4KIAorLSBJc3N1ZSAjMTYyMzU6IEltcGxlbWVudCBweXRob24tY29uZmlnIGFzIGEgc2hlbGwgc2NyaXB0LgorCistIElzc3VlICMxNjc2OTogUmVtb3ZlIG91dGRhdGVkIFZpc3VhbCBTdHVkaW8gcHJvamVjdHMuCisKIC0gSXNzdWUgIzE3MDMxOiBGaXggcnVubmluZyByZWdlbiBpbiBjcm9zcyBidWlsZHMuCiAKIC0gSXNzdWUgIzM3NTQ6IGZpeCB0eXBvIGluIHB0aHJlYWQgQUNfQ0FDSEVfVkFMLgpAQCAtMTQxNSwxMiArMjAyOCwxNCBAQAogLSBJc3N1ZSAjMTU0ODQ6IEZpeCBfUFlUSE9OX1BST0pFQ1RfQkFTRSBmb3Igc3JjZGlyICE9IGJ1aWxkZGlyIGJ1aWxkczsKICAgdXNlIF9QWVRIT05fUFJPSkVDVF9CQVNFIGluIGRpc3R1dGlscy9zeXNjb25maWcucHkuCiAKKy0gRHJvcCBzdXBwb3J0IGZvciBXaW5kb3dzIDIwMDAuCisKIC0gSXNzdWUgIzE3MDI5OiBMZXQgaDJweSBzZWFyY2ggdGhlIG11bHRpYXJjaCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcnkuCiAKIC0gSXNzdWUgIzE2OTUzOiBGaXggc29ja2V0IG1vZHVsZSBjb21waWxhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aAogICBIQVZFX0JST0tFTl9QT0xMLiBQYXRjaCBieSBKZWZmcmV5IEFybXN0cm9uZy4KIAotLSBJc3N1ZSAjMTY4MzY6IEVuYWJsZSBJUHY2IHN1cHBvcnQgZXZlbiBpZiBJUHY2IGlzIGRpc2FibGVkIG9uIHRoZSBidWlsZCBob3N0LgorLSBJc3N1ZSAjMTYzMjA6IFJlbW92ZSByZWR1bmRhbnQgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGZvciBzdHJpbmdzIGFuZCBieXRlcy4KIAogLSBDcm9zcyBjb21waWxpbmcgbmVlZHMgaG9zdCBhbmQgYnVpbGQgc2V0dGluZ3MuIGNvbmZpZ3VyZSBubyBsb25nZXIKICAgY3JlYXRlcyBhIGJyb2tlbiBQWVRIT05fRk9SX0JVSUxEIHZhcmlhYmxlIHdoZW4gLS1idWlsZCBpcyBtaXNzaW5nLgpAQCAtMTQ0Miw2ICsyMDU3LDggQEAKIC0gSXNzdWUgIzE1OTIzOiBGaXggYSBtaXN0YWtlIGluIGBgYXNkbF9jLnB5YGAgdGhhdCByZXN1bHRlZCBpbiBhIFR5cGVFcnJvcgogICBhZnRlciAyODAxYmY4NzVhMjQgKHNlZSAjMTU4MDEpLgogCistIElzc3VlICMxNjEzNTogUmVtb3ZlIE9TLzIgc3VwcG9ydC4KKwogLSBJc3N1ZSAjMTU4MTk6IE1ha2Ugc3VyZSB3ZSBjYW4gYnVpbGQgUHl0aG9uIG91dC1vZi10cmVlIGZyb20gYSByZWFkLW9ubHkKICAgc291cmNlIGRpcmVjdG9yeS4gIChTb21ld2hhdCByZWxhdGVkIHRvIGlzc3VlICM5ODYwLikKIApAQCAtMTQ1Niw5ICsyMDczLDI0IEBACiAKIC0gSXNzdWUgIzE2ODgxOiBGaXggUHlfQVJSQVlfTEVOR1RIIG1hY3JvIGZvciBHQ0MgPCAzLjEuCiAKKy0gSXNzdWUgIzE1NDIyOiBHZXQgcmlkIG9mIFB5Q0Z1bmN0aW9uX05ldyBtYWNyby4gVXNlIFB5Q0Z1bmN0aW9uX05ld0V4CisgIGZ1bmN0aW9uIChQeUNGdW5jdGlvbl9OZXcgZnVuYyBpcyBzdGlsbCBwcmVzZW50IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4KKworLSBJc3N1ZSAjMTY1MDU6IFJlbW92ZSB1bnVzZWQgUHlfVFBGTEFHU19JTlRfU1VCQ0xBU1MuCisKKy0gSXNzdWUgIzE2MDg2OiBQeVR5cGVPYmplY3QudHBfZmxhZ3MgYW5kIFB5VHlwZV9TcGVjLmZsYWdzIGFyZSBub3cgdW5zaWduZWQKKyAgKHVuc2lnbmVkIGxvbmcgYW5kIHVuc2lnbmVkIGludCkgdG8gYXZvaWQgYW4gdW5kZWZpbmVkIGJlaGF2aW91ciB3aXRoCisgIFB5X1RQRkxBR1NfVFlQRV9TVUJDTEFTUyAoKDEgPDwgMzEpLiBQeVR5cGVfR2V0RmxhZ3MoKSByZXN1bHQgdHlwZSBpcworICBub3cgdW5zaWduZWQgdG9vICh1bnNpZ25lZCBsb25nLCBpbnN0ZWFkIG9mIGxvbmcpLgorCistIElzc3VlICMxNjE2NjogQWRkIFBZX0xJVFRMRV9FTkRJQU4gYW5kIFBZX0JJR19FTkRJQU4gbWFjcm9zIGFuZCB1bmlmaWVkCisgIGVuZGlhbm5lc3MgZGV0ZWN0aW9uIGFuZCBoYW5kbGluZy4KKwogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxNTk0MDogU3BlY2lmeSBlZmZlY3Qgb2YgbG9jYWxlIG9uIHRpbWUgZnVuY3Rpb25zLgorCiAtIElzc3VlIDE3NTM4OiBEb2N1bWVudCBYTUwgdnVsbmVyYWJpbHRpZXMKIAogLSBJc3N1ZSAjMTY2NDI6IHNjaGVkLnNjaGVkdWxlciB0aW1lZnVuYyBpbml0aWFsIGRlZmF1bHQgaXMgdGltZS5tb25vdG9uaWMuCkBAIC0xNTAzLDggKzIxMzUsOCBAQAogCiAtIElzc3VlICMxMzUzODogSW1wcm92ZSBzdHIoKSBhbmQgb2JqZWN0Ll9fc3RyX18oKSBkb2N1bWVudGF0aW9uLgogCi0tIElzc3VlICMxNjQ4OTogTWFrZSBpdCBjbGVhcmVyIHRoYXQgaW1wb3J0bGliLmZpbmRfbG9hZGVyKCkgcmVxdWlyZXMgYW55IGFuZAotICBhbGwgcGFja2FnZXMgdG8gYmUgc2VwYXJhdGVseSBpbXBvcnRlZC4KKy0gSXNzdWUgIzE2NDg5OiBNYWtlIGl0IGNsZWFyZXIgdGhhdCBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBuZWVkcyBwYXJlbnQKKyAgcGFja2FnZXMgdG8gYmUgZXhwbGljaXRseSBpbXBvcnRlZC4KIAogLSBJc3N1ZSAjMTY0MDA6IFVwZGF0ZSB0aGUgZGVzY3JpcHRpb24gb2Ygd2hpY2ggdmVyc2lvbnMgb2YgYSBnaXZlbiBwYWNrYWdlCiAgIFB5UEkgZGlzcGxheXMuCkBAIC0xNTI3LDYgKzIxNTksOSBAQAogLSBJc3N1ZSAjMTYxMTU6IEltcHJvdmUgc3VicHJvY2Vzcy5Qb3BlbigpIGRvY3VtZW50YXRpb24gYXJvdW5kIGFyZ3MsIHNoZWxsLAogICBhbmQgZXhlY3V0YWJsZSBhcmd1bWVudHMuCiAKKy0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCisgIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCisKIC0gSXNzdWUgIzE1NTMzOiBDbGFyaWZ5IGRvY3MgYW5kIGFkZCB0ZXN0cyBmb3IgYHN1YnByb2Nlc3MuUG9wZW4oKWAncyBjd2QKICAgYXJndW1lbnQuCiAKQEAgLTE1NDcsNiArMjE4MiwxMSBAQAogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE1MjM5OiBNYWtlIG1rc3RyaW5ncHJlcC5weSB3b3JrIGFnYWluIG9uIFB5dGhvbiAzLgorCistIElzc3VlICMxNzAyODogQWxsb3dlZCBQeXRob24gYXJndW1lbnRzIHRvIGJlIHN1cHBsaWVkIHRvIHRoZSBXaW5kb3dzCisgIGxhdW5jaGVyLgorCiAtIElzc3VlICMxNzE1NjogcHlnZXR0ZXh0LnB5IG5vdyB1c2VzIGFuIGVuY29kaW5nIG9mIHNvdXJjZSBmaWxlIGFuZCBjb3JyZWN0bHkKICAgd3JpdGVzIGFuZCBlc2NhcGVzIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLgogCkBAIC0xNTU1LDkgKzIxOTUsMTggQEAKICAgaW1wcm9wZXIgaW5kZW50YXRpb24uICBwaW5kZW50LnB5IG5vdyB3b3JrcyB3aXRoIGNvbnRpbnVlZCBsaW5lcyBicm9rZW4gYWZ0ZXIKICAgImNsYXNzIiBvciAiZGVmIiBrZXl3b3JkcyBhbmQgd2l0aCBjb250aW51YXRpb25zIGF0IHRoZSBzdGFydCBvZiBsaW5lLgogCi0tIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxMTc5NzogQWRkIGEgMnRvMyBmaXhlciB0aGF0IG1hcHMgcmVsb2FkKCkgdG8gaW1wLnJlbG9hZCgpLgogCi0tIElzc3VlICMxNjQ3NjogRml4IGpzb24udG9vbCB0byBhdm9pZCBpbmNsdWRpbmcgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKy0gSXNzdWUgIzEwOTY2OiBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgdW5leHBlY3RlZCBza2lwcGVkIHRlc3RzLgorCistIElzc3VlICM5ODkzOiBSZW1vdmVkIHRoZSBNaXNjL1ZpbSBkaXJlY3RvcnkuCisKKy0gUmVtb3ZlZCB0aGUgTWlzYy9UZXh0TWF0ZSBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE2MjQ1OiBBZGQgdGhlIFRvb2xzL3NjcmlwdHMvcGFyc2VfaHRtbDVfZW50aXRpZXMucHkgc2NyaXB0IHRvIHBhcnNlCisgIHRoZSBsaXN0IG9mIEhUTUw1IGVudGl0aWVzIGFuZCB1cGRhdGUgdGhlIGh0bWwuZW50aXRpZXMuaHRtbDUgZGljdGlvbmFyeS4KKworLSBJc3N1ZSAjMTUzNzg6IEZpeCBUb29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNjU0OTogTWFrZSBqc29uLnRvb2wgd29yayBhZ2FpbiBvbiBQeXRob24gMyBhbmQgYWRkIHRlc3RzLgogICBJbml0aWFsIHBhdGNoIGJ5IEJlcmtlciBQZWtzYWcgYW5kIFNlcmhpeSBTdG9yY2hha2EuCkBAIC0xNjUyLDYgKzIzMDEsOSBAQAogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxNzE1ODogQWRkICdzeW1ib2xzJyB0byBoZWxwKCkgd2VsY29tZSBtZXNzYWdlOyBjbGFyaWZ5CisgICdtb2R1bGVzIHNwYW0nIG1lc3NhZ2VzLgorCiAtIElzc3VlICMxNTg0NzogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSwgd2hpY2ggZGlkIG5vdCBhY2NlcHQgdHVwbGVzIGFzCiAgIGFyZ3VtZW50IGxpc3RzIGFueW1vcmUuCiAKQEAgLTE3MjcsNiArMjM3OSw4IEBACiBMaWJyYXJ5CiAtLS0tLS0tCiAKKy0gSXNzdWUgIzEzMjQ4OiByZW1vdmVkIGRlcHJlY2F0ZWQgYW5kIHVuZG9jdW1lbnRlZCBkaWZmbGliLmlzYmp1bmssIGlzYnBvcHVsYXIuCisKIC0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMgY29tcGlsZWQKICAgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyLgogCkBAIC0yMTQyLDYgKzI3OTYsMTAgQEAKIC0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGBmaWxlY21wLmRpcmNtcCgpYCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgogCistIElzc3VlICMxNTQ0MjogRXhwb3NlIHRoZSBkZWZhdWx0IGxpc3Qgb2YgZGlyZWN0b3JpZXMgaWdub3JlZCBieQorICBgZmlsZWNtcC5kaXJjbXAoKWAgYXMgYSBtb2R1bGUgYXR0cmlidXRlLCBhbmQgZXhwYW5kIHRoZSBsaXN0IHRvIG1vcmUgbW9kZXJuCisgIHZhbHVlcy4KKwogVGVzdHMKIC0tLS0tCiAKQEAgLTIyNTQsOSArMjkxMiw2IEBACiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzE2MzA1OiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgb2NjdXJyaW5nIHdoZW4gaW50ZXJydXB0aW5nCi0gIG1hdGguZmFjdG9yaWFsLgotCiAtIElzc3VlICMxMjI4ODogQ29uc2lkZXIgJzAnIGFuZCAnMC4wJyBhcyB2YWxpZCBpbml0aWFsdmFsdWUKICAgZm9yIHRraW50ZXIgU2ltcGxlRGlhbG9nLgogCkBAIC0zOTUxLDcgKzQ2MDYsNyBAQAogLSBJc3N1ZSAjMTM1ODk6IEZpeCBzb21lIHNlcmlhbGl6YXRpb24gcHJpbWl0aXZlcyBpbiB0aGUgYWlmYyBtb2R1bGUuCiAgIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCiAKLS0gSXNzdWUgIzEzNjQyOiBVbnF1b3RlIGJlZm9yZSBiNjRlbmNvZGluZyBgYHVzZXI6cGFzc3dvcmRgYCBkdXJpbmcgQmFzaWMKKy0gSXNzdWUgIzEzNjQyOiBVbnF1b3RlIGJlZm9yZSBiNjRlbmNvZGluZyB1c2VyOnBhc3N3b3JkIGR1cmluZyBCYXNpYwogICBBdXRoZW50aWNhdGlvbi4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSm9vbmFzIEt1b3JpbGVodG8uCiAKIC0gSXNzdWUgIzEyMzY0OiBGaXggYSBoYW5nIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgpAQCAtNDQxMCw4ICs1MDY1LDggQEAKIC0gSXNzdWUgIzEyNjA3OiBJbiBzdWJwcm9jZXNzLCBmaXggaXNzdWUgd2hlcmUgaWYgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIgaXMKICAgZ2l2ZW4gYXMgYSBsb3cgZmQsIGl0IGdldHMgb3ZlcndyaXR0ZW4uCiAKLS0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlKQotICBhIGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIuCistIElzc3VlICMxMjU3NjogRml4IHVybG9wZW4gYmVoYXZpb3Igb24gc2l0ZXMgd2hpY2ggZG8gbm90IHNlbmQgKG9yIG9iZnVzY2F0ZXMpCisgIENvbm5lY3Rpb246Y2xvc2UgaGVhZGVyLgogCiAtIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KIApAQCAtNDk2OSw2ICs1NjI0LDkgQEAKIC0gSXNzdWUgIzExNjM1OiBEb24ndCB1c2UgcG9sbGluZyBpbiB3b3JrZXIgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGxhdW5jaGVkIGJ5CiAgIGNvbmN1cnJlbnQuZnV0dXJlcy4KIAorLSBJc3N1ZSAjNTg0NTogQXV0b21hdGljYWxseSByZWFkIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGNvbXBsZXRpb24KKyAgaW4gaW50ZXJhY3RpdmUgbW9kZS4KKwogLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCiAgIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQogICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCkBAIC01MDAzLDcgKzU2NjEsNyBAQAogCiAtIElzc3VlICMxMTEyNzogUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gcGlja2xlIGEgc29ja2V0IG9iamVjdC4KIAotLSBJc3N1ZSAjMTE1NjM6IGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKKy0gSXNzdWUgIzExNTYzOiBDb25uZWN0aW9uOmNsb3NlIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgogICBjbGFzcyB3aGljaCBoZWxwcyBpbiBjbG9zaW5nIG9mIHNvY2tldHMgYWZ0ZXIgY29ubmVjdGlvbiBpcyBvdmVyLiBQYXRjaAogICBjb250cmlidXRpb25zIGJ5IEplZmYgTWNOZWlsIGFuZCBOYWRlZW0gVmF3ZGEuCiAKQEAgLTU1NzksNyArNjIzNyw3IEBACiAtIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQogICBBcmxlbgogCi0tIElzc3VlICMxMTQ5MDogdGVzdF9zdWJwcm9jZXNzLnRlc3RfbGVha2luZ19mZHNfb25fZXJyb3Igbm8gbG9uZ2VyIGdpdmVzIGEKKy0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQogICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgogCiAtIElzc3VlICMxMTIyMzogRml4IHRlc3RfdGhyZWFkc2lnbmFscyB0byBmYWlsLCBub3QgaGFuZywgd2hlbiB0aGUKZGlmZiAtLWdpdCBhL01pc2MvUkVBRE1FIGIvTWlzYy9SRUFETUUKaW5kZXggMTE4ZjZjNy4uZTc3ODBhMiAxMDA2NDQKLS0tIGEvTWlzYy9SRUFETUUKKysrIGIvTWlzYy9SRUFETUUKQEAgLTIyLDkgKzIyLDcgQEAKIFJFQURNRS5jb3Zlcml0eSAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHJ1bm5pbmcgQ292ZXJpdHkncyBQcmV2ZW50IG9uIFB5dGhvbgogUkVBRE1FLnZhbGdyaW5kICAgICAgICAgSW5mb3JtYXRpb24gZm9yIFZhbGdyaW5kIHVzZXJzLCBzZWUgdmFsZ3JpbmQtcHl0aG9uLnN1cHAKIFJQTSAgICAgICAgICAgICAgICAgICAgIChPbGQpIHRvb2xzIHRvIGJ1aWxkIFJQTXMKLXN2bm1hcC50eHQgICAgICAgICAgICAgIE1hcCBvZiBvbGQgU1ZOIHJldnMgYW5kIGJyYW5jaGVzIHRvIGhnIGNoYW5nZXNldCBpZHMKIFNwZWNpYWxCdWlsZHMudHh0ICAgICAgIERlc2NyaWJlcyBleHRyYSBzeW1ib2xzIHlvdSBjYW4gc2V0IGZvciBkZWJ1ZyBidWlsZHMKLVRleHRNYXRlICAgICAgICAgICAgICAgIEEgVGV4dE1hdGUgYnVuZGxlIGZvciBQeXRob24gZGV2ZWxvcG1lbnQKK3N2bm1hcC50eHQgICAgICAgICAgICAgIE1hcCBvZiBvbGQgU1ZOIHJldnMgYW5kIGJyYW5jaGVzIHRvIGhnIGNoYW5nZXNldCBpZHMKIHZhbGdyaW5kLXB5dGhvbi5zdXBwICAgIFZhbGdyaW5kIHN1cHByZXNzaW9uIGZpbGUsIHNlZSBSRUFETUUudmFsZ3JpbmQKIHZncmluZGVmcyAgICAgICAgICAgICAgIFB5dGhvbiBjb25maWd1cmF0aW9uIGZvciB2Z3JpbmQgKGEgZ2VuZXJpYyBwcmV0dHkgcHJpbnRlcikKLVZpbSAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBkZXZlbG9wbWVudCB1dGlsaXRpZXMgZm9yIHRoZSBWaW0gZWRpdG9yCmRpZmYgLS1naXQgYS9NaXNjL1JQTS9weXRob24tMy4zLnNwZWMgYi9NaXNjL1JQTS9weXRob24tMy40LnNwZWMKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCnJlbmFtZSB0byBNaXNjL1JQTS9weXRob24tMy40LnNwZWMKaW5kZXggYTliNDg5Yi4uNTI2OTk4YyAxMDA2NDQKLS0tIGEvTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCisrKyBiL01pc2MvUlBNL3B5dGhvbi0zLjQuc3BlYwpAQCAtMzksOCArMzksOCBAQAogCiAlZGVmaW5lIG5hbWUgcHl0aG9uCiAjLS1zdGFydCBjb25zdGFudHMtLQotJWRlZmluZSB2ZXJzaW9uIDMuMy4yCi0lZGVmaW5lIGxpYnZlcnMgMy4zCislZGVmaW5lIHZlcnNpb24gMy40LjBhMQorJWRlZmluZSBsaWJ2ZXJzIDMuNAogIy0tZW5kIGNvbnN0YW50cy0tCiAlZGVmaW5lIHJlbGVhc2UgMXB5ZG90b3JnCiAlZGVmaW5lIF9fcHJlZml4IC91c3IKQEAgLTgzLDggKzgzLDcgQEAKIGxpYnJhcmllcywgYXMgd2VsbCBhcyB0byB2YXJpb3VzIHdpbmRvdyBzeXN0ZW1zLCBhbmQgaXMgZXh0ZW5zaWJsZSBpbiBDIG9yCiBDKysuIEl0IGlzIGFsc28gdXNhYmxlIGFzIGFuIGV4dGVuc2lvbiBsYW5ndWFnZSBmb3IgYXBwbGljYXRpb25zIHRoYXQgbmVlZAogYSBwcm9ncmFtbWFibGUgaW50ZXJmYWNlLiAgRmluYWxseSwgUHl0aG9uIGlzIHBvcnRhYmxlOiBpdCBydW5zIG9uIG1hbnkKLWJyYW5kcyBvZiBVTklYLCBvbiBQQ3MgdW5kZXIgV2luZG93cywgTVMtRE9TLCBhbmQgT1MvMiwgYW5kIG9uIHRoZQotTWFjLgorYnJhbmRzIG9mIFVOSVgsIG9uIFBDcyB1bmRlciBXaW5kb3dzLCBNUy1ET1MsIGFuZCBvbiB0aGUgTWFjLgogCiAlcGFja2FnZSBkZXZlbAogU3VtbWFyeTogVGhlIGxpYnJhcmllcyBhbmQgaGVhZGVyIGZpbGVzIG5lZWRlZCBmb3IgUHl0aG9uIGV4dGVuc2lvbiBkZXZlbG9wbWVudC4KZGlmZiAtLWdpdCBhL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9Db21tYW5kcy8yIHRvIDMgLSBNb2R1bGUgRGVsZXRpb24udG1Db21tYW5kIGIvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL0NvbW1hbmRzLzIgdG8gMyAtIE1vZHVsZSBEZWxldGlvbi50bUNvbW1hbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZmFkYTguLjAwMDAwMDAKLS0tIGEvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL0NvbW1hbmRzLzIgdG8gMyAtIE1vZHVsZSBEZWxldGlvbi50bUNvbW1hbmQKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxrZXk+YmVmb3JlUnVubmluZ0NvbW1hbmQ8L2tleT4KLQk8c3RyaW5nPm5vcDwvc3RyaW5nPgotCTxrZXk+Y29tbWFuZDwva2V5PgotCTxzdHJpbmc+IyEvdXNyL2Jpbi9weXRob24KLSIiIkdlbmVyYXRlIGNvZGUgdG8gd2FybiBhYm91dCBhIG1vZHVsZSdzIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KLQotWFhYIE5vdCBzdXBwb3J0ZWQ6Ci0tIE1vZHVsZSdzIGluIGEgcGFja2FnZSBkbyBub3QgaGF2ZSB0aGVpciBmdWxsIG5hbWUgZ2VuZXJhdGVkLgotLSBQYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlOyBzaG91bGQgZGV0ZWN0IGFuZCB1c2UgdGhlIHBhY2thZ2UncyBuYW1lIGluc3RlYWQuCi0KLSIiIgotcHlfdGVtcGxhdGUgPSAiIiJmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJucHkzawotd2FybnB5M2soInRoZSAkezE6JXN9IG1vZHVsZSBoYXMgYmVlbiByZW1vdmVkIGluIFB5dGhvbiAzLjAiLCBzdGFja2xldmVsPTIpCi1kZWwgd2FybnB5M2skMCIiIgotCi1jX3RlbXBsYXRlID0gIiIiCi1pZiAoUHlFcnJfV2FyblB5M2soInRoZSAkezE6JXN9IG1vZHVsZSBoYXMgYmVlbiByZW1vdmVkIGluICIKLSAgICAgICAgICAgICAgICAgICAiUHl0aG9uIDMuMCIsIDIpICZsdDsgMCkKLSAgICByZXR1cm47JDAiIiIKLQotCi1pbXBvcnQgaW1wCi1pbXBvcnQgb3MKLQotZmlsZV9uYW1lID0gb3MucGF0aC5zcGxpdChvcy5lbnZpcm9uWydUTV9GSUxFUEFUSCddKVsxXQotCi1weV9zdWZmaXhlcyA9IHJldmVyc2VkKHNvcnRlZCgoc3VmZml4WzBdIGZvciBzdWZmaXggaW4gaW1wLmdldF9zdWZmaXhlcygpIGlmIHN1ZmZpeFsyXSA9PSBpbXAuUFlfU09VUkNFKSwga2V5PWxlbikpCi1jX3N1ZmZpeGVzID0gcmV2ZXJzZWQoc29ydGVkKChvcy5wYXRoLnNwbGl0ZXh0KHN1ZmZpeFswXSlbMF0gKyAnLmMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gaW1wLmdldF9zdWZmaXhlcygpIGlmIHN1ZmZpeFsyXSA9PSBpbXAuQ19FWFRFTlNJT04pLCBrZXk9bGVuKSkKLQotcGFpcmluZ3MgPSAoKHB5X3N1ZmZpeGVzLCBweV90ZW1wbGF0ZSksIChjX3N1ZmZpeGVzLCBjX3RlbXBsYXRlKSkKLQotZGVmIGNyZWF0ZV90ZW1wbGF0ZShzdWZmaXhlcywgdGVtcGxhdGUpOgotICAgIGZvciBzdWZmaXggaW4gc3VmZml4ZXM6Ci0gICAgICAgIGlmIG5vdCBmaWxlX25hbWUuZW5kc3dpdGgoc3VmZml4KToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIG1vZHVsZV9uYW1lID0gZmlsZV9uYW1lWzotbGVuKHN1ZmZpeCldCi0gICAgICAgIHJldHVybiB0ZW1wbGF0ZSAlIG1vZHVsZV9uYW1lCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotZm9yIHRlbXBsYXRlIGluIChjcmVhdGVfdGVtcGxhdGUoKnBhaXIpIGZvciBwYWlyIGluIHBhaXJpbmdzKToKLSAgICBpZiBub3QgdGVtcGxhdGU6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgcHJpbnQgdGVtcGxhdGUsCi0gICAgYnJlYWsKLWVsc2U6Ci0gICAgcHJpbnQgJ1hYWCBDb3VsZCBub3QgZ2VuZXJhdGUgY29kZS4nPC9zdHJpbmc+Ci0JPGtleT5pbnB1dDwva2V5PgotCTxzdHJpbmc+bm9uZTwvc3RyaW5nPgotCTxrZXk+bmFtZTwva2V5PgotCTxzdHJpbmc+MiB0byAzIC0gTW9kdWxlIERlbGV0aW9uPC9zdHJpbmc+Ci0JPGtleT5vdXRwdXQ8L2tleT4KLQk8c3RyaW5nPmluc2VydEFzU25pcHBldDwvc3RyaW5nPgotCTxrZXk+dGFiVHJpZ2dlcjwva2V5PgotCTxzdHJpbmc+MnRvM21vZGRlbDwvc3RyaW5nPgotCTxrZXk+dXVpZDwva2V5PgotCTxzdHJpbmc+OTUxOUMyMkItNkFCOC00MUExLTk0RjYtMDc5RTBCNDVDMTQ3PC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpkaWZmIC0tZ2l0IGEvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL0NvbW1hbmRzL0J1aWxkIERvY3MudG1Db21tYW5kIGIvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL0NvbW1hbmRzL0J1aWxkIERvY3MudG1Db21tYW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTRkNTNiLi4wMDAwMDAwCi0tLSBhL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9Db21tYW5kcy9CdWlsZCBEb2NzLnRtQ29tbWFuZAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5iZWZvcmVSdW5uaW5nQ29tbWFuZDwva2V5PgotCTxzdHJpbmc+bm9wPC9zdHJpbmc+Ci0JPGtleT5jb21tYW5kPC9rZXk+Ci0JPHN0cmluZz4jIFhYWCBMZW9wYXJkLXNwZWNpZmljIHVubGVzcyBoYXZlIGVhc3kgd2F5IHRvIHNwZWNpZmljIGFsdGVybmF0aXZlIFB5dGhvbiBleGVjdXRhYmxlLgotCi1jZCAkVE1fUFJPSkVDVF9ESVJFQ1RPUlkvRG9jCi1tYWtlIGh0bWwgMiZndDsmYW1wOzEgfCBwcmUKLQotcmVzY2FuX3Byb2plY3Q8L3N0cmluZz4KLQk8a2V5PmlucHV0PC9rZXk+Ci0JPHN0cmluZz5ub25lPC9zdHJpbmc+Ci0JPGtleT5uYW1lPC9rZXk+Ci0JPHN0cmluZz5CdWlsZCBEb2NzPC9zdHJpbmc+Ci0JPGtleT5vdXRwdXQ8L2tleT4KLQk8c3RyaW5nPnNob3dBc0hUTUw8L3N0cmluZz4KLQk8a2V5PnV1aWQ8L2tleT4KLQk8c3RyaW5nPjZFRjE1MUU1LTcxNDktNEY4Mi04Nzk2LTBDQzQwRkU1ODlGQTwvc3RyaW5nPgotPC9kaWN0PgotPC9wbGlzdD4KZGlmZiAtLWdpdCBhL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9Db21tYW5kcy9CdWlsZC50bUNvbW1hbmQgYi9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvQ29tbWFuZHMvQnVpbGQudG1Db21tYW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmZkYTVjLi4wMDAwMDAwCi0tLSBhL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9Db21tYW5kcy9CdWlsZC50bUNvbW1hbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxrZXk+YmVmb3JlUnVubmluZ0NvbW1hbmQ8L2tleT4KLQk8c3RyaW5nPm5vcDwvc3RyaW5nPgotCTxrZXk+Y29tbWFuZDwva2V5PgotCTxzdHJpbmc+IyBYWFggVE9ETwotIyAtIEhpZ2hsaWdodCBhbnkgY29tcGlsZXIgd2FybmluZ3MgZm9yIFB5dGhvbiBjb2RlLgotIyAtIFBvaW50IG91dCBpZiBjb21waWxlIGZhaWxlZC4KLQotY2QgJFRNX1BST0pFQ1RfRElSRUNUT1JZCi1tYWtlIC1zIC1qMiAyJmd0OyZhbXA7MSB8IHByZQotCi1yZXNjYW5fcHJvamVjdDwvc3RyaW5nPgotCTxrZXk+aW5wdXQ8L2tleT4KLQk8c3RyaW5nPm5vbmU8L3N0cmluZz4KLQk8a2V5Pm5hbWU8L2tleT4KLQk8c3RyaW5nPkJ1aWxkIFB5dGhvbjwvc3RyaW5nPgotCTxrZXk+b3V0cHV0PC9rZXk+Ci0JPHN0cmluZz5zaG93QXNIVE1MPC9zdHJpbmc+Ci0JPGtleT51dWlkPC9rZXk+Ci0JPHN0cmluZz5CNTQ1QkIxQi1BOEUxLTQyNkMtQjUwQS00MjZFNzhCOTZEMzg8L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvQ29tbWFuZHMvR28gdG8gSXNzdWUudG1Db21tYW5kIGIvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL0NvbW1hbmRzL0dvIHRvIElzc3VlLnRtQ29tbWFuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkMzBiYy4uMDAwMDAwMAotLS0gYS9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvQ29tbWFuZHMvR28gdG8gSXNzdWUudG1Db21tYW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PmJlZm9yZVJ1bm5pbmdDb21tYW5kPC9rZXk+Ci0JPHN0cmluZz5ub3A8L3N0cmluZz4KLQk8a2V5PmNvbW1hbmQ8L2tleT4KLQk8c3RyaW5nPm9wZW4gImh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUkKGNhdCkiPC9zdHJpbmc+Ci0JPGtleT5mYWxsYmFja0lucHV0PC9rZXk+Ci0JPHN0cmluZz53b3JkPC9zdHJpbmc+Ci0JPGtleT5pbnB1dDwva2V5PgotCTxzdHJpbmc+c2VsZWN0aW9uPC9zdHJpbmc+Ci0JPGtleT5uYW1lPC9rZXk+Ci0JPHN0cmluZz5HbyB0byBJc3N1ZTwvc3RyaW5nPgotCTxrZXk+b3V0cHV0PC9rZXk+Ci0JPHN0cmluZz5kaXNjYXJkPC9zdHJpbmc+Ci0JPGtleT51dWlkPC9rZXk+Ci0JPHN0cmluZz5GRDI1QThEQy0yMkRDLTRFRDQtQjIyMi1COTQzQzhBOTExN0Q8L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvQ29tbWFuZHMvT3BlbiBEb2NzLnRtQ29tbWFuZCBiL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9Db21tYW5kcy9PcGVuIERvY3MudG1Db21tYW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDFiZTQzLi4wMDAwMDAwCi0tLSBhL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9Db21tYW5kcy9PcGVuIERvY3MudG1Db21tYW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PmJlZm9yZVJ1bm5pbmdDb21tYW5kPC9rZXk+Ci0JPHN0cmluZz5ub3A8L3N0cmluZz4KLQk8a2V5PmNvbW1hbmQ8L2tleT4KLQk8c3RyaW5nPiMgU2VhcmNoIG9yZGVyOgotIyAgLSBDdXJyZW50IHByb2plY3QuCi0jICAtIFRNX1BZVEhPTkRFVl9ET0NTLgotIyAgLSBPbmxpbmUgZG9jcyBpbiBkZXZlbG9wbWVudC4KLQotaHRtbF9pbmRleD0kVE1fUFJPSkVDVF9ESVJFQ1RPUlkvRG9jL2J1aWxkL2h0bWwvaW5kZXguaHRtbAotaWYgW1sgLWYgJGh0bWxfaW5kZXggXV07IHRoZW4KLQlvcGVuICRodG1sX2luZGV4Ci1lbGlmIFtbICRUTV9QWVRIT05ERVZfRE9DUyBdXTsgdGhlbgotCW9wZW4gJFRNX1BZVEhPTkRFVl9ET0NTCi1lbHNlCi0Jb3BlbiBodHRwOi8vZG9jcy5weXRob24ub3JnL2Rldi8KLWZpPC9zdHJpbmc+Ci0JPGtleT5pbnB1dDwva2V5PgotCTxzdHJpbmc+bm9uZTwvc3RyaW5nPgotCTxrZXk+a2V5RXF1aXZhbGVudDwva2V5PgotCTxzdHJpbmc+QEg8L3N0cmluZz4KLQk8a2V5Pm5hbWU8L2tleT4KLQk8c3RyaW5nPk9wZW4gRG9jczwvc3RyaW5nPgotCTxrZXk+b3V0cHV0PC9rZXk+Ci0JPHN0cmluZz5kaXNjYXJkPC9zdHJpbmc+Ci0JPGtleT51dWlkPC9rZXk+Ci0JPHN0cmluZz5CRjMzNkZGRi1FMTRELTRCRjEtQTE1Ni03MUNGNzY4QUMwMzQ8L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CmRpZmYgLS1naXQgYS9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvQ29tbWFuZHMvT3BlbiBQRVAudG1Db21tYW5kIGIvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL0NvbW1hbmRzL09wZW4gUEVQLnRtQ29tbWFuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1NTMzYS4uMDAwMDAwMAotLS0gYS9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvQ29tbWFuZHMvT3BlbiBQRVAudG1Db21tYW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8a2V5PmJlZm9yZVJ1bm5pbmdDb21tYW5kPC9rZXk+Ci0JPHN0cmluZz5ub3A8L3N0cmluZz4KLQk8a2V5PmNvbW1hbmQ8L2tleT4KLQk8c3RyaW5nPiMgWFhYIFdvcnRoIHN1cHBvcnRpbmcgdXNpbmcgYSBsb2NhbCBjb3B5PwotCi0jIER1bWIgbHVjayB0aGF0IGFuIHVucmVjb2duaXplZCBudW1iZXIgbGVhZHMgdG8gYSAwIGJlaW5nIHVzZWQuCi1vcGVuIGBwcmludGYgImh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtJTA0ZCIgJChjYXQpYDwvc3RyaW5nPgotCTxrZXk+ZmFsbGJhY2tJbnB1dDwva2V5PgotCTxzdHJpbmc+d29yZDwvc3RyaW5nPgotCTxrZXk+aW5wdXQ8L2tleT4KLQk8c3RyaW5nPnNlbGVjdGlvbjwvc3RyaW5nPgotCTxrZXk+bmFtZTwva2V5PgotCTxzdHJpbmc+T3BlbiBQRVA8L3N0cmluZz4KLQk8a2V5Pm91dHB1dDwva2V5PgotCTxzdHJpbmc+ZGlzY2FyZDwvc3RyaW5nPgotCTxrZXk+dXVpZDwva2V5PgotCTxzdHJpbmc+RURCQjAzN0YtQUFFMy00NTEyLTg2M0YtRDlBQTgyQzlFNTFFPC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpkaWZmIC0tZ2l0ICJhL01pc2MvVGV4dE1hdGUvUHl0aG9uLURldi50bWJ1bmRsZS9TbmlwcGV0cy8yIHRvIDMgLSBNb2R1bGUgRGVsZXRpb24gXDA1MGRvY3NcMDUxLnRtU25pcHBldCIgImIvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL1NuaXBwZXRzLzIgdG8gMyAtIE1vZHVsZSBEZWxldGlvbiBcMDUwZG9jc1wwNTEudG1TbmlwcGV0IgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlOGJhZS4uMDAwMDAwMAotLS0gImEvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL1NuaXBwZXRzLzIgdG8gMyAtIE1vZHVsZSBEZWxldGlvbiBcMDUwZG9jc1wwNTEudG1TbmlwcGV0IgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5jb250ZW50PC9rZXk+Ci0JPHN0cmluZz4uLiBkZXByZWNhdGVkOjogMi42Ci0gICBUaGUgOm1vZDpcYCR7MX1cYCBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotJHswfTwvc3RyaW5nPgotCTxrZXk+bmFtZTwva2V5PgotCTxzdHJpbmc+MiB0byAzIC0gTW9kdWxlIERlbGV0aW9uIChkb2NzKTwvc3RyaW5nPgotCTxrZXk+dGFiVHJpZ2dlcjwva2V5PgotCTxzdHJpbmc+MnRvM2RvY2RlbDwvc3RyaW5nPgotCTxrZXk+dXVpZDwva2V5PgotCTxzdHJpbmc+MDU2ODQxMEQtRUFGMS00QUYzLUI2REUtOEFGMTMzQTkxODIxPC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpkaWZmIC0tZ2l0IGEvTWlzYy9UZXh0TWF0ZS9QeXRob24tRGV2LnRtYnVuZGxlL2luZm8ucGxpc3QgYi9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvaW5mby5wbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUxMGQ1ZC4uMDAwMDAwMAotLS0gYS9NaXNjL1RleHRNYXRlL1B5dGhvbi1EZXYudG1idW5kbGUvaW5mby5wbGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5tYWluTWVudTwva2V5PgotCTxkaWN0PgotCQk8a2V5Pml0ZW1zPC9rZXk+Ci0JCTxhcnJheT4KLQkJCTxzdHJpbmc+OTUxOUMyMkItNkFCOC00MUExLTk0RjYtMDc5RTBCNDVDMTQ3PC9zdHJpbmc+Ci0JCQk8c3RyaW5nPjA1Njg0MTBELUVBRjEtNEFGMy1CNkRFLThBRjEzM0E5MTgyMTwvc3RyaW5nPgotCQkJPHN0cmluZz4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L3N0cmluZz4KLQkJCTxzdHJpbmc+QjU0NUJCMUItQThFMS00MjZDLUI1MEEtNDI2RTc4Qjk2RDM4PC9zdHJpbmc+Ci0JCQk8c3RyaW5nPjZFRjE1MUU1LTcxNDktNEY4Mi04Nzk2LTBDQzQwRkU1ODlGQTwvc3RyaW5nPgotCQkJPHN0cmluZz4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L3N0cmluZz4KLQkJCTxzdHJpbmc+QkYzMzZGRkYtRTE0RC00QkYxLUExNTYtNzFDRjc2OEFDMDM0PC9zdHJpbmc+Ci0JCQk8c3RyaW5nPkZEMjVBOERDLTIyREMtNEVENC1CMjIyLUI5NDNDOEE5MTE3RDwvc3RyaW5nPgotCQkJPHN0cmluZz5FREJCMDM3Ri1BQUUzLTQ1MTItODYzRi1EOUFBODJDOUU1MUU8L3N0cmluZz4KLQkJPC9hcnJheT4KLQkJPGtleT5zdWJtZW51czwva2V5PgotCQk8ZGljdC8+Ci0JPC9kaWN0PgotCTxrZXk+bmFtZTwva2V5PgotCTxzdHJpbmc+UHl0aG9uLURldjwvc3RyaW5nPgotCTxrZXk+b3JkZXJpbmc8L2tleT4KLQk8YXJyYXk+Ci0JCTxzdHJpbmc+OTUxOUMyMkItNkFCOC00MUExLTk0RjYtMDc5RTBCNDVDMTQ3PC9zdHJpbmc+Ci0JCTxzdHJpbmc+MDU2ODQxMEQtRUFGMS00QUYzLUI2REUtOEFGMTMzQTkxODIxPC9zdHJpbmc+Ci0JCTxzdHJpbmc+QjU0NUJCMUItQThFMS00MjZDLUI1MEEtNDI2RTc4Qjk2RDM4PC9zdHJpbmc+Ci0JCTxzdHJpbmc+NkVGMTUxRTUtNzE0OS00RjgyLTg3OTYtMENDNDBGRTU4OUZBPC9zdHJpbmc+Ci0JCTxzdHJpbmc+RkQyNUE4REMtMjJEQy00RUQ0LUIyMjItQjk0M0M4QTkxMTdEPC9zdHJpbmc+Ci0JCTxzdHJpbmc+QkYzMzZGRkYtRTE0RC00QkYxLUExNTYtNzFDRjc2OEFDMDM0PC9zdHJpbmc+Ci0JCTxzdHJpbmc+RURCQjAzN0YtQUFFMy00NTEyLTg2M0YtRDlBQTgyQzlFNTFFPC9zdHJpbmc+Ci0JPC9hcnJheT4KLQk8a2V5PnV1aWQ8L2tleT4KLQk8c3RyaW5nPkE5MzJFQ0QxLUQ0M0EtNEY1Ny1CN0ZCLUExQ0VDM0I2NUQyMDwvc3RyaW5nPgotPC9kaWN0PgotPC9wbGlzdD4KZGlmZiAtLWdpdCBhL01pc2MvVmltL3B5dGhvbi52aW0gYi9NaXNjL1ZpbS9weXRob24udmltCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWVlN2ViLi4wMDAwMDAwCi0tLSBhL01pc2MvVmltL3B5dGhvbi52aW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotIiBBdXRvLWdlbmVyYXRlZCBWaW0gc3ludGF4IGZpbGUgZm9yIFB5dGhvbiAodHJ1bms6IHI2MDM3Nk0pLgotIgotIiBUbyB1c2U6IGNvcHkgb3Igc3ltbGluayB0byB+Ly52aW0vc3ludGF4L3B5dGhvbi52aW0KLQotCi1pZiBleGlzdHMoImI6Y3VycmVudF9zeW50YXgiKQotICBmaW5pc2gKLWVuZGlmCi0KLWlmIGV4aXN0cygicHl0aG9uX2hpZ2hsaWdodF9hbGwiKQotICBsZXQgcHl0aG9uX2hpZ2hsaWdodF9udW1iZXJzID0gMQotICBsZXQgcHl0aG9uX2hpZ2hsaWdodF9idWlsdGlucyA9IDEKLSAgbGV0IHB5dGhvbl9oaWdobGlnaHRfZXhjZXB0aW9ucyA9IDEKLSAgbGV0IHB5dGhvbl9oaWdobGlnaHRfc3BhY2VfZXJyb3JzID0gMQotZW5kaWYKLQotc3luIGtleXdvcmQgcHl0aG9uU3RhdGVtZW50ICAgIGFzIGFzc2VydCBicmVhayBjb250aW51ZSBkZWwgZXhjZXB0IGV4ZWMgZmluYWxseQotc3luIGtleXdvcmQgcHl0aG9uU3RhdGVtZW50ICAgIGdsb2JhbCBsYW1iZGEgcGFzcyBwcmludCByYWlzZSByZXR1cm4gdHJ5IHdpdGgKLXN5biBrZXl3b3JkIHB5dGhvblN0YXRlbWVudCAgICB5aWVsZAotCi1zeW4ga2V5d29yZCBweXRob25TdGF0ZW1lbnQgICAgZGVmIGNsYXNzIG5leHRncm91cD1weXRob25GdW5jdGlvbiBza2lwd2hpdGUKLQotc3luIG1hdGNoIHB5dGhvbkZ1bmN0aW9uICAgICJbYS16QS1aX11bYS16QS1aMC05X10qIiBjb250YWluZWQKLQotc3luIGtleXdvcmQgcHl0aG9uUmVwZWF0ICAgIGZvciB3aGlsZQotCi1zeW4ga2V5d29yZCBweXRob25Db25kaXRpb25hbCAgICBpZiBlbGlmIGVsc2UKLQotc3luIGtleXdvcmQgcHl0aG9uT3BlcmF0b3IgICAgYW5kIGluIGlzIG5vdCBvcgotCi1zeW4ga2V5d29yZCBweXRob25QcmVDb25kaXQgICAgaW1wb3J0IGZyb20KLQotc3luIG1hdGNoIHB5dGhvbkNvbW1lbnQgICAgIiMuKiQiIGNvbnRhaW5zPXB5dGhvblRvZG8KLQotc3luIGtleXdvcmQgcHl0aG9uVG9kbyAgICBUT0RPIEZJWE1FIFhYWCBjb250YWluZWQKLQotc3luIHJlZ2lvbiBweXRob25TdHJpbmcgICAgbWF0Y2hncm91cD1Ob3JtYWwgc3RhcnQ9K1t1VV1cPScrIGVuZD0rJysgc2tpcD0rXFxcXFx8XFwnKyBjb250YWlucz1weXRob25Fc2NhcGUKLXN5biByZWdpb24gcHl0aG9uU3RyaW5nICAgIG1hdGNoZ3JvdXA9Tm9ybWFsIHN0YXJ0PStbdVVdXD0iKyBlbmQ9KyIrIHNraXA9K1xcXFxcfFxcIisgY29udGFpbnM9cHl0aG9uRXNjYXBlCi1zeW4gcmVnaW9uIHB5dGhvblN0cmluZyAgICBtYXRjaGdyb3VwPU5vcm1hbCBzdGFydD0rW3VVXVw9IiIiKyBlbmQ9KyIiIisgIGNvbnRhaW5zPXB5dGhvbkVzY2FwZQotc3luIHJlZ2lvbiBweXRob25TdHJpbmcgICAgbWF0Y2hncm91cD1Ob3JtYWwgc3RhcnQ9K1t1VV1cPScnJysgZW5kPSsnJycrICBjb250YWlucz1weXRob25Fc2NhcGUKLXN5biByZWdpb24gcHl0aG9uU3RyaW5nICAgIG1hdGNoZ3JvdXA9Tm9ybWFsIHN0YXJ0PStbdVVdXD1bclJdJysgZW5kPSsnKyBza2lwPStcXFxcXHxcXCcrIAotc3luIHJlZ2lvbiBweXRob25TdHJpbmcgICAgbWF0Y2hncm91cD1Ob3JtYWwgc3RhcnQ9K1t1VV1cPVtyUl0iKyBlbmQ9KyIrIHNraXA9K1xcXFxcfFxcIisgCi1zeW4gcmVnaW9uIHB5dGhvblN0cmluZyAgICBtYXRjaGdyb3VwPU5vcm1hbCBzdGFydD0rW3VVXVw9W3JSXSIiIisgZW5kPSsiIiIrICAKLXN5biByZWdpb24gcHl0aG9uU3RyaW5nICAgIG1hdGNoZ3JvdXA9Tm9ybWFsIHN0YXJ0PStbdVVdXD1bclJdJycnKyBlbmQ9KycnJysgIAotCi1zeW4gbWF0Y2ggcHl0aG9uRXNjYXBlICAgICtcXFthYmZucnR2XCciXFxdKyBjb250YWluZWQKLXN5biBtYXRjaCBweXRob25Fc2NhcGUgICAgIlxcXG9cezEsM30iIGNvbnRhaW5lZAotc3luIG1hdGNoIHB5dGhvbkVzY2FwZSAgICAiXFx4XHhcezJ9IiBjb250YWluZWQKLXN5biBtYXRjaCBweXRob25Fc2NhcGUgICAgIlwoXFx1XHhcezR9XHxcXFVceFx7OH1cKSIgY29udGFpbmVkCi0KLXN5biBtYXRjaCBweXRob25Fc2NhcGUgICAgIlxcJCIKLQotCi1pZiBleGlzdHMoInB5dGhvbl9oaWdobGlnaHRfbnVtYmVycyIpCi0gIHN5biBtYXRjaCBweXRob25OdW1iZXIgICAgIlw8MHhceFwrW0xsXVw9XD4iCi0gIHN5biBtYXRjaCBweXRob25OdW1iZXIgICAgIlw8XGRcK1tMbGpKXVw9XD4iCi0gIHN5biBtYXRjaCBweXRob25OdW1iZXIgICAgIlwuXGRcK1woW2VFXVsrLV1cPVxkXCtcKVw9W2pKXVw9XD4iCi0gIHN5biBtYXRjaCBweXRob25OdW1iZXIgICAgIlw8XGRcK1wuXChbZUVdWystXVw9XGRcK1wpXD1bakpdXD1cPiIKLSAgc3luIG1hdGNoIHB5dGhvbk51bWJlciAgICAiXDxcZFwrXC5cZFwrXChbZUVdWystXVw9XGRcK1wpXD1bakpdXD1cPiIKLQotZW5kaWYKLQotCi1pZiBleGlzdHMoInB5dGhvbl9oaWdobGlnaHRfYnVpbHRpbnMiKQotICBzeW4ga2V5d29yZCBweXRob25CdWlsdGluICAgIEVsbGlwc2lzIEZhbHNlIE5vbmUgTm90SW1wbGVtZW50ZWQgVHJ1ZSBfX2RlYnVnX18KLSAgc3luIGtleXdvcmQgcHl0aG9uQnVpbHRpbiAgICBfX2ltcG9ydF9fIGFicyBhbGwgYW55IGJvb2wKLSAgc3luIGtleXdvcmQgcHl0aG9uQnVpbHRpbiAgICBidWZmZXIgY2FsbGFibGUgY2hyIGNsYXNzbWV0aG9kIGNtcAotICBzeW4ga2V5d29yZCBweXRob25CdWlsdGluICAgIGNvbXBsZXggY29weXJpZ2h0IGNyZWRpdHMgZGVsYXR0ciBkaWN0Ci0gIHN5biBrZXl3b3JkIHB5dGhvbkJ1aWx0aW4gICAgZGlyIGRpdm1vZCBlbnVtZXJhdGUgZXZhbCBleGVjIGV4aXQKLSAgc3luIGtleXdvcmQgcHl0aG9uQnVpbHRpbiAgICBmaWx0ZXIgZmxvYXQgZnJvemVuc2V0IGdldGF0dHIgZ2xvYmFscyBoYXNhdHRyCi0gIHN5biBrZXl3b3JkIHB5dGhvbkJ1aWx0aW4gICAgaGFzaCBoZWxwIGhleCBpZCBpbnQgaXNpbnN0YW5jZQotICBzeW4ga2V5d29yZCBweXRob25CdWlsdGluICAgIGlzc3ViY2xhc3MgaXRlciBsZW4gbGljZW5zZSBsaXN0IGxvY2FscyBtYXAKLSAgc3luIGtleXdvcmQgcHl0aG9uQnVpbHRpbiAgICBtYXggbWluIG9iamVjdCBvY3Qgb3BlbiBvcmQgcG93IHByb3BlcnR5IHF1aXQKLSAgc3luIGtleXdvcmQgcHl0aG9uQnVpbHRpbiAgICByYW5nZSByZWxvYWQgcmVwciByZXZlcnNlZCByb3VuZAotICBzeW4ga2V5d29yZCBweXRob25CdWlsdGluICAgIHNldCBzZXRhdHRyIHNsaWNlIHNvcnRlZCBzdGF0aWNtZXRob2Qgc3RyIHN1bQotICBzeW4ga2V5d29yZCBweXRob25CdWlsdGluICAgIHN1cGVyIHRydW5jIHR1cGxlIHR5cGUgdW5pY29kZSB2YXJzIAotICBzeW4ga2V5d29yZCBweXRob25CdWlsdGluICAgIHppcAotCi1lbmRpZgotCi0KLWlmIGV4aXN0cygicHl0aG9uX2hpZ2hsaWdodF9leGNlcHRpb25zIikKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIEFyaXRobWV0aWNFcnJvciBBc3NlcnRpb25FcnJvciBBdHRyaWJ1dGVFcnJvcgotICBzeW4ga2V5d29yZCBweXRob25FeGNlcHRpb24gICAgQmFzZUV4Y2VwdGlvbiBEZXByZWNhdGlvbldhcm5pbmcgRU9GRXJyb3IKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIEVudmlyb25tZW50RXJyb3IgRXhjZXB0aW9uIEZsb2F0aW5nUG9pbnRFcnJvcgotICBzeW4ga2V5d29yZCBweXRob25FeGNlcHRpb24gICAgRnV0dXJlV2FybmluZyBHZW5lcmF0b3JFeGl0IElPRXJyb3IgSW1wb3J0RXJyb3IKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIEltcG9ydFdhcm5pbmcgSW5kZW50YXRpb25FcnJvciBJbmRleEVycm9yCi0gIHN5biBrZXl3b3JkIHB5dGhvbkV4Y2VwdGlvbiAgICBLZXlFcnJvciBLZXlib2FyZEludGVycnVwdCBMb29rdXBFcnJvcgotICBzeW4ga2V5d29yZCBweXRob25FeGNlcHRpb24gICAgTWVtb3J5RXJyb3IgTmFtZUVycm9yIE5vdEltcGxlbWVudGVkRXJyb3IKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIE9TRXJyb3IgT3ZlcmZsb3dFcnJvciBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nCi0gIHN5biBrZXl3b3JkIHB5dGhvbkV4Y2VwdGlvbiAgICBSZWZlcmVuY2VFcnJvciBSdW50aW1lRXJyb3IgUnVudGltZVdhcm5pbmcKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIFN0b3BJdGVyYXRpb24gU3ludGF4RXJyb3IKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIFN5bnRheFdhcm5pbmcgU3lzdGVtRXJyb3IgU3lzdGVtRXhpdCBUYWJFcnJvcgotICBzeW4ga2V5d29yZCBweXRob25FeGNlcHRpb24gICAgVHlwZUVycm9yIFVuYm91bmRMb2NhbEVycm9yIFVuaWNvZGVEZWNvZGVFcnJvcgotICBzeW4ga2V5d29yZCBweXRob25FeGNlcHRpb24gICAgVW5pY29kZUVuY29kZUVycm9yIFVuaWNvZGVFcnJvcgotICBzeW4ga2V5d29yZCBweXRob25FeGNlcHRpb24gICAgVW5pY29kZVRyYW5zbGF0ZUVycm9yIFVuaWNvZGVXYXJuaW5nCi0gIHN5biBrZXl3b3JkIHB5dGhvbkV4Y2VwdGlvbiAgICBVc2VyV2FybmluZyBWYWx1ZUVycm9yIFdhcm5pbmcKLSAgc3luIGtleXdvcmQgcHl0aG9uRXhjZXB0aW9uICAgIFplcm9EaXZpc2lvbkVycm9yCi0KLWVuZGlmCi0KLQotaWYgZXhpc3RzKCJweXRob25faGlnaGxpZ2h0X3NwYWNlX2Vycm9ycyIpCi0gIHN5biBtYXRjaCBweXRob25TcGFjZUVycm9yICAgIGRpc3BsYXkgZXhjbHVkZW5sICJcU1xzXCskIm1zPXMrMQotICBzeW4gbWF0Y2ggcHl0aG9uU3BhY2VFcnJvciAgICBkaXNwbGF5ICIgXCtcdCIKLSAgc3luIG1hdGNoIHB5dGhvblNwYWNlRXJyb3IgICAgZGlzcGxheSAiXHRcKyAiCi0KLWVuZGlmCi0KLQotICBoaSBkZWYgbGluayBweXRob25TdGF0ZW1lbnQgU3RhdGVtZW50Ci0gIGhpIGRlZiBsaW5rIHB5dGhvblN0YXRlbWVudCBTdGF0ZW1lbnQKLSAgaGkgZGVmIGxpbmsgcHl0aG9uRnVuY3Rpb24gRnVuY3Rpb24KLSAgaGkgZGVmIGxpbmsgcHl0aG9uUmVwZWF0IFJlcGVhdAotICBoaSBkZWYgbGluayBweXRob25Db25kaXRpb25hbCBDb25kaXRpb25hbAotICBoaSBkZWYgbGluayBweXRob25PcGVyYXRvciBPcGVyYXRvcgotICBoaSBkZWYgbGluayBweXRob25QcmVDb25kaXQgUHJlQ29uZGl0Ci0gIGhpIGRlZiBsaW5rIHB5dGhvbkNvbW1lbnQgQ29tbWVudAotICBoaSBkZWYgbGluayBweXRob25Ub2RvIFRvZG8KLSAgaGkgZGVmIGxpbmsgcHl0aG9uU3RyaW5nIFN0cmluZwotICBoaSBkZWYgbGluayBweXRob25Fc2NhcGUgU3BlY2lhbAotICBoaSBkZWYgbGluayBweXRob25Fc2NhcGUgU3BlY2lhbAotCi0gIGlmIGV4aXN0cygicHl0aG9uX2hpZ2hsaWdodF9udW1iZXJzIikKLSAgICBoaSBkZWYgbGluayBweXRob25OdW1iZXIgTnVtYmVyCi0gIGVuZGlmCi0KLSAgaWYgZXhpc3RzKCJweXRob25faGlnaGxpZ2h0X2J1aWx0aW5zIikKLSAgICBoaSBkZWYgbGluayBweXRob25CdWlsdGluIEZ1bmN0aW9uCi0gIGVuZGlmCi0KLSAgaWYgZXhpc3RzKCJweXRob25faGlnaGxpZ2h0X2V4Y2VwdGlvbnMiKQotICAgIGhpIGRlZiBsaW5rIHB5dGhvbkV4Y2VwdGlvbiBFeGNlcHRpb24KLSAgZW5kaWYKLQotICBpZiBleGlzdHMoInB5dGhvbl9oaWdobGlnaHRfc3BhY2VfZXJyb3JzIikKLSAgICBoaSBkZWYgbGluayBweXRob25TcGFjZUVycm9yIEVycm9yCi0gIGVuZGlmCi0KLQotIiBVbmNvbW1lbnQgdGhlICdtaW5saW5lcycgc3RhdGVtZW50IGxpbmUgYW5kIGNvbW1lbnQgb3V0IHRoZSAnbWF4bGluZXMnCi0iIHN0YXRlbWVudCBsaW5lOyBjaGFuZ2VzIGJlaGF2aW91ciB0byBsb29rIGF0IGxlYXN0IDIwMDAgbGluZXMgcHJldmlvdXNseSBmb3IKLSIgc3ludGF4IG1hdGNoZXMgaW5zdGVhZCBvZiBhdCBtb3N0IDIwMCBsaW5lcwotc3luIHN5bmMgbWF0Y2ggcHl0aG9uU3luYyBncm91cGhlcmUgTk9ORSAiKTokIgotc3luIHN5bmMgbWF4bGluZXM9MjAwCi0ic3luIHN5bmMgbWlubGluZXM9MjAwMAotCi1sZXQgYjpjdXJyZW50X3N5bnRheCA9ICJweXRob24iCmRpZmYgLS1naXQgYS9NaXNjL1ZpbS9zeW50YXhfdGVzdC5weSBiL01pc2MvVmltL3N5bnRheF90ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDIwODY2Li4wMDAwMDAwCi0tLSBhL01pc2MvVmltL3N5bnRheF90ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotIiIiVGVzdCBmaWxlIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nIG9mIGVkaXRvcnMuCi0KLU1lYW50IHRvIGNvdmVyIGEgd2lkZSByYW5nZSBvZiBkaWZmZXJlbnQgdHlwZXMgb2Ygc3RhdGVtZW50cyBhbmQgZXhwcmVzc2lvbnMuCi1Ob3QgbmVjZXNzYXJpbHkgc2Vuc2ljYWwgb3IgY29tcHJlaGVuc2l2ZSAoYXNzdW1lIHRoYXQgaWYgb25lIGV4Y2VwdGlvbiBpcwotaGlnaGxpZ2h0ZWQgdGhhdCBhbGwgYXJlLCBmb3IgaW5zdGFuY2UpLgotCi1FeHRyYW5lb3VzIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2FuJ3QgYmUgdGVzdGVkIGJlY2F1c2Ugb2Ygc3ZuIHByZS1jb21taXQgaG9vawotY2hlY2tzIGZvciBzdWNoIHRoaW5ncy4KLQotIiIiCi0jIENvbW1lbnQKLSMgT1BUSU9OQUw6IFhYWCBjYXRjaCB5b3VyIGF0dGVudGlvbgotCi0jIFN0YXRlbWVudHMKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQgICMgSW1wb3J0Ci1mcm9tIHN5cyBpbXBvcnQgcGF0aCBhcyB0aGluZwotYXNzZXJ0IFRydWUgIyBrZXl3b3JkCi1kZWYgZm9vKCk6ICAjIGZ1bmN0aW9uIGRlZmluaXRpb24KLSAgICByZXR1cm4gW10KLWNsYXNzIEJhcihvYmplY3QpOiAgIyBDbGFzcyBkZWZpbml0aW9uCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcGFzcwotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHBhc3MKLWZvbygpICAjIFVOQ09MT1VSRUQ6IGZ1bmN0aW9uIGNhbGwKLXdoaWxlIEZhbHNlOiAgIyAnd2hpbGUnCi0gICAgY29udGludWUKLWZvciB4IGluIGZvbygpOiAgIyAnZm9yJwotICAgIGJyZWFrCi13aXRoIEJhcigpIGFzIHN0dWZmOgotICAgIHBhc3MKLWlmIEZhbHNlOiBwYXNzICAjICdpZicKLWVsaWYgRmFsc2U6IHBhc3MKLWVsc2U6IHBhc3MKLQotIyBDb25zdGFudHMKLSdzaW5nbGUtcXVvdGUnLCB1J3VuaWNvZGUnICMgU3RyaW5ncyBvZiBhbGwga2luZHM7IHByZWZpeGVzIG5vdCBoaWdobGlnaHRlZAotImRvdWJsZS1xdW90ZSIKLSIiInRyaXBsZSBkb3VibGUtcXVvdGUiIiIKLScnJ3RyaXBsZSBzaW5nbGUtcXVvdGUnJycKLXIncmF3JwotdXIndW5pY29kZSByYXcnCi0nZXNjYXBlXG4nCi0nXDA0JyAgIyBvY3RhbAotJ1x4RkYnICMgaGV4Ci0nXHUxMTExJyAjIHVuaWNvZGUgY2hhcmFjdGVyCi0xICAjIEludGVncmFsCi0xTAotMS4wICAjIEZsb2F0Ci0uMQotMSsyaiAgIyBDb21wbGV4Ci0KLSMgRXhwcmVzc2lvbnMKLTEgYW5kIDIgb3IgMyAgIyBCb29sZWFuIG9wZXJhdG9ycwotMiA8IDMgICMgVU5DT0xPVVJFRDogY29tcGFyaXNvbiBvcGVyYXRvcnMKLXNwYW0gPSA0MiAgIyBVTkNPTE9VUkVEOiBhc3NpZ25tZW50Ci0yICsgMyAgIyBVTkNPTE9VUkVEOiBudW1iZXIgb3BlcmF0b3JzCi1bXSAgIyBVTkNPTE9VUkVEOiBsaXN0Ci17fSAgIyBVTkNPTE9VUkVEOiBkaWN0Ci0oMSwpICAjIFVOQ09MT1VSRUQ6IHR1cGxlCi1hbGwgICMgQnVpbHQtaW4gZnVuY3Rpb25zCi1HZW5lcmF0b3JFeGl0ICAjIEV4Y2VwdGlvbnMKZGlmZiAtLWdpdCBhL01pc2MvVmltL3ZpbV9zeW50YXgucHkgYi9NaXNjL1ZpbS92aW1fc3ludGF4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzJiMzUwLi4wMDAwMDAwCi0tLSBhL01pc2MvVmltL3ZpbV9zeW50YXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotIyBYWFgobm5vcndpdHopOiB3aGF0IHZlcnNpb25zIG9mIHB5dGhvbiBpcyB0aGlzIGZpbGUgc3VwcG9zZWQgdG8gd29yayB3aXRoPwotIyBJdCB1c2VzIHRoZSBvbGQgcHJpbnQgc3RhdGVtZW50IG5vdCBpbiBweTNrLgotCi1pbXBvcnQga2V5d29yZAotaW1wb3J0IGV4Y2VwdGlvbnMKLWltcG9ydCBidWlsdGlucwotZnJvbSBzdHJpbmcgaW1wb3J0IFRlbXBsYXRlCi1mcm9tIHN5cyBpbXBvcnQgc3VidmVyc2lvbgotCi1jb21tZW50X2hlYWRlciA9ICcnJyIgQXV0by1nZW5lcmF0ZWQgVmltIHN5bnRheCBmaWxlIGZvciBQeXRob24gKCVzOiByJXMpLgotIgotIiBUbyB1c2U6IGNvcHkgb3Igc3ltbGluayB0byB+Ly52aW0vc3ludGF4L3B5dGhvbi52aW0nJycKLQotc3RhdGVtZW50X2hlYWRlciA9ICIiIgotaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKLSAgZmluaXNoCi1lbmRpZiIiIgotCi1zdGF0ZW1lbnRfZm9vdGVyID0gJycnCi0iIFVuY29tbWVudCB0aGUgJ21pbmxpbmVzJyBzdGF0ZW1lbnQgbGluZSBhbmQgY29tbWVudCBvdXQgdGhlICdtYXhsaW5lcycKLSIgc3RhdGVtZW50IGxpbmU7IGNoYW5nZXMgYmVoYXZpb3VyIHRvIGxvb2sgYXQgbGVhc3QgMjAwMCBsaW5lcyBwcmV2aW91c2x5IGZvcgotIiBzeW50YXggbWF0Y2hlcyBpbnN0ZWFkIG9mIGF0IG1vc3QgMjAwIGxpbmVzCi1zeW4gc3luYyBtYXRjaCBweXRob25TeW5jIGdyb3VwaGVyZSBOT05FICIpOiQiCi1zeW4gc3luYyBtYXhsaW5lcz0yMDAKLSJzeW4gc3luYyBtaW5saW5lcz0yMDAwCi0KLWxldCBiOmN1cnJlbnRfc3ludGF4ID0gInB5dGhvbiInJycKLQotbG9vcGluZyA9ICgnZm9yJywgJ3doaWxlJykKLWNvbmRpdGlvbmFscyA9ICgnaWYnLCAnZWxpZicsICdlbHNlJykKLWJvb2xlYW5fb3BzID0gKCdhbmQnLCAnaW4nLCAnaXMnLCAnbm90JywgJ29yJykKLWltcG9ydF9zdG10cyA9ICgnaW1wb3J0JywgJ2Zyb20nKQotb2JqZWN0X2RlZnMgPSAoJ2RlZicsICdjbGFzcycpCi0KLWV4Y2VwdGlvbl9uYW1lcyA9IHNvcnRlZChleGMgZm9yIGV4YyBpbiBkaXIoZXhjZXB0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGV4Yy5zdGFydHN3aXRoKCdfXycpKQotCi0jIE5lZWQgdG8gaW5jbHVkZSBmdW5jdGlvbnMgdGhhdCBzdGFydCB3aXRoICdfXycgKGUuZy4sIF9faW1wb3J0X18pLCBidXQKLSMgbm90aGluZyB0aGF0IGNvbWVzIHdpdGggbW9kdWxlcyAoZS5nLiwgX19uYW1lX18pLCBzbyBqdXN0IGV4Y2x1ZGUgYW55dGhpbmcgaW4KLSMgdGhlICdleGNlcHRpb25zJyBtb2R1bGUgc2luY2Ugd2Ugd2FudCB0byBpZ25vcmUgZXhjZXB0aW9ucyAqYW5kKiB3aGF0IGFueQotIyBtb2R1bGUgd291bGQgaGF2ZQotYnVpbHRpbl9uYW1lcyA9IHNvcnRlZChidWlsdGluIGZvciBidWlsdGluIGluIGRpcihidWlsdGlucykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsdGluIG5vdCBpbiBkaXIoZXhjZXB0aW9ucykpCi0KLWVzY2FwZXMgPSAocicrXFxbYWJmbnJ0dlwnIlxcXSsnLCByJyJcXFxvXHsxLDN9IicsIHInIlxceFx4XHsyfSInLAotICAgICAgICAgICAgciciXChcXHVceFx7NH1cfFxcVVx4XHs4fVwpIicsIHInIlxcJCInKQotCi10b2RvcyA9ICgiVE9ETyIsICJGSVhNRSIsICJYWFgiKQotCi0jIFhYWCBjb2RpZnk/Ci1udW1iZXJzID0gKHInIlw8MHhceFwrW0xsXVw9XD4iJywgciciXDxcZFwrW0xsakpdXD1cPiInLAotICAgICAgICAgICAgJyJcLlxkXCtcKFtlRV1bKy1dXD1cZFwrXClcPVtqSl1cPVw+IicsCi0gICAgICAgICAgICAnIlw8XGRcK1wuXChbZUVdWystXVw9XGRcK1wpXD1bakpdXD1cPiInLAotICAgICAgICAgICAgJyJcPFxkXCtcLlxkXCtcKFtlRV1bKy1dXD1cZFwrXClcPVtqSl1cPVw+IicpCi0KLWNvbnRhaW5lZCA9IGxhbWJkYSB4OiAiJXMgY29udGFpbmVkIiAlIHgKLQotZGVmIHN0cl9yZWdleGVzKCk6Ci0gICAgIiIiR2VuZXJhdG9yIHRvIHlpZWxkIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIHN0cmluZ3MgcmVnZXhlcyIiIgotICAgIHJlZ2V4X3RlbXBsYXRlID0gVGVtcGxhdGUoJ21hdGNoZ3JvdXA9Tm9ybWFsICcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnQ9K1t1VV1cPSR7cmF3fSR7c2VwfSsgJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmQ9KyR7c2VwfSsgJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke3NraXB9ICcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtjb250YWluc30nKQotICAgIHNraXBfcmVnZXggPSBUZW1wbGF0ZShyJ3NraXA9K1xcXFxcfFxcJHtzZXB9KycpCi0gICAgZm9yIHJhdyBpbiAoJycsICdbclJdJyk6Ci0gICAgICAgIGZvciBzZXBhcmF0b3IgaW4gKCInIiwgJyInLCAnIiIiJywgIicnJyIpOgotICAgICAgICAgICAgaWYgbGVuKHNlcGFyYXRvcikgPT0gMToKLSAgICAgICAgICAgICAgICBza2lwID0gc2tpcF9yZWdleC5zdWJzdGl0dXRlKHNlcD1zZXBhcmF0b3IpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNraXAgPSAnJwotICAgICAgICAgICAgY29udGFpbnMgPSAnY29udGFpbnM9cHl0aG9uRXNjYXBlJyBpZiBub3QgcmF3IGVsc2UgJycKLSAgICAgICAgICAgIHlpZWxkIHJlZ2V4X3RlbXBsYXRlLnN1YnN0aXR1dGUocmF3PXJhdywgc2VwPXNlcGFyYXRvciwgc2tpcD1za2lwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyA9IGNvbnRhaW5zKQotCi1zcGFjZV9lcnJvcnMgPSAocidleGNsdWRlbmwgIlxTXHNcKyQibXM9cysxJywgciciIFwrXHQiJywgciciXHRcKyAiJykKLQotc3RhdGVtZW50cyA9ICgKLSAgICAgICAgICAgICAgICAoJycsCi0gICAgICAgICAgICAgICAgICAgICMgWFhYIE1pZ2h0IG5lZWQgdG8gY2hhbmdlIHB5dGhvblN0YXRlbWVudCBzaW5jZSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICMgc3BlY2lmaWMgUmVwZWF0LCBDb25kaXRpb25hbCwgT3BlcmF0b3IsIGV0Yy4gZm9yICd3aGlsZScsCi0gICAgICAgICAgICAgICAgICAgICMgZXRjLgotICAgICAgICAgICAgICAgICAgICBbKCJTdGF0ZW1lbnQiLCAicHl0aG9uU3RhdGVtZW50IiwgImtleXdvcmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgKGt3IGZvciBrdyBpbiBrZXl3b3JkLmt3bGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGt3IG5vdCBpbiAobG9vcGluZyArIGNvbmRpdGlvbmFscyArIGJvb2xlYW5fb3BzICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfc3RtdHMgKyBvYmplY3RfZGVmcykpCi0gICAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgICgiU3RhdGVtZW50IiwgInB5dGhvblN0YXRlbWVudCIsICJrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoJyAnLmpvaW4ob2JqZWN0X2RlZnMpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBuZXh0Z3JvdXA9cHl0aG9uRnVuY3Rpb24gc2tpcHdoaXRlJykpLAotICAgICAgICAgICAgICAgICAgICAgKCJGdW5jdGlvbiIsInB5dGhvbkZ1bmN0aW9uIiwgIm1hdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZWQoJyJbYS16QS1aX11bYS16QS1aMC05X10qIicpKSwKLSAgICAgICAgICAgICAgICAgICAgICgiUmVwZWF0IiwgInB5dGhvblJlcGVhdCIsICJrZXl3b3JkIiwgbG9vcGluZyksCi0gICAgICAgICAgICAgICAgICAgICAoIkNvbmRpdGlvbmFsIiwgInB5dGhvbkNvbmRpdGlvbmFsIiwgImtleXdvcmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFscyksCi0gICAgICAgICAgICAgICAgICAgICAoIk9wZXJhdG9yIiwgInB5dGhvbk9wZXJhdG9yIiwgImtleXdvcmQiLCBib29sZWFuX29wcyksCi0gICAgICAgICAgICAgICAgICAgICAoIlByZUNvbmRpdCIsICJweXRob25QcmVDb25kaXQiLCAia2V5d29yZCIsIGltcG9ydF9zdG10cyksCi0gICAgICAgICAgICAgICAgICAgICAoIkNvbW1lbnQiLCAicHl0aG9uQ29tbWVudCIsICJtYXRjaCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyIjLiokIiBjb250YWlucz1weXRob25Ub2RvJyksCi0gICAgICAgICAgICAgICAgICAgICAoIlRvZG8iLCAicHl0aG9uVG9kbyIsICJrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZWQoJyAnLmpvaW4odG9kb3MpKSksCi0gICAgICAgICAgICAgICAgICAgICAoIlN0cmluZyIsICJweXRob25TdHJpbmciLCAicmVnaW9uIiwgc3RyX3JlZ2V4ZXMoKSksCi0gICAgICAgICAgICAgICAgICAgICAoIlNwZWNpYWwiLCAicHl0aG9uRXNjYXBlIiwgIm1hdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGFpbmVkKGVzYykgZm9yIGVzYyBpbiBlc2NhcGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAnJCcgaW4gZXNjKSksCi0gICAgICAgICAgICAgICAgICAgICAoIlNwZWNpYWwiLCAicHl0aG9uRXNjYXBlIiwgIm1hdGNoIiwgciciXFwkIicpLAotICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAoInB5dGhvbl9oaWdobGlnaHRfbnVtYmVycyIsCi0gICAgICAgICAgICAgICAgICAgIFsoIk51bWJlciIsICJweXRob25OdW1iZXIiLCAibWF0Y2giLCBudW1iZXJzKV0KLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICgicHl0aG9uX2hpZ2hsaWdodF9idWlsdGlucyIsCi0gICAgICAgICAgICAgICAgICAgIFsoIkZ1bmN0aW9uIiwgInB5dGhvbkJ1aWx0aW4iLCAia2V5d29yZCIsIGJ1aWx0aW5fbmFtZXMpXQotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKCJweXRob25faGlnaGxpZ2h0X2V4Y2VwdGlvbnMiLAotICAgICAgICAgICAgICAgICAgICBbKCJFeGNlcHRpb24iLCAicHl0aG9uRXhjZXB0aW9uIiwgImtleXdvcmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWVzKV0KLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICgicHl0aG9uX2hpZ2hsaWdodF9zcGFjZV9lcnJvcnMiLAotICAgICAgICAgICAgICAgICAgICBbKCJFcnJvciIsICJweXRob25TcGFjZUVycm9yIiwgIm1hdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICgiZGlzcGxheSAiICsgZXJyIGZvciBlcnIgaW4gc3BhY2VfZXJyb3JzKSldCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICkKLQotZGVmIHN5bl9wcmVmaXgodHlwZV8sIGtpbmQpOgotICAgIHJldHVybiAnc3luICVzICVzICAgICcgJSAodHlwZV8sIGtpbmQpCi0KLWRlZiBmaWxsX3N0bXQoaXRlcmFibGUsIGZpbGxfbGVuKToKLSAgICAiIiJZaWVsZCBhIHN0cmluZyB0aGF0IGZpbGxzIGF0IG1vc3QgZmlsbF9sZW4gY2hhcmFjdGVycyB3aXRoIHN0cmluZ3MKLSAgICByZXR1cm5lZCBieSAnaXRlcmFibGUnIGFuZCBzZXBhcmF0ZWQgYnkgYSBzcGFjZSIiIgotICAgICMgRGVhbCB3aXRoIHRyYWlsaW5nIGNoYXIgdG8gaGFuZGxlICcgJy5qb2luKCkgY2FsY3VsYXRpb24KLSAgICBmaWxsX2xlbiArPSAxCi0gICAgb3ZlcmZsb3cgPSBOb25lCi0gICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGJ1ZmZlcl8gPSBbXQotICAgICAgICB0b3RhbF9sZW4gPSAwCi0gICAgICAgIGlmIG92ZXJmbG93OgotICAgICAgICAgICAgYnVmZmVyXy5hcHBlbmQob3ZlcmZsb3cpCi0gICAgICAgICAgICB0b3RhbF9sZW4gKz0gbGVuKG92ZXJmbG93KSArIDEKLSAgICAgICAgICAgIG92ZXJmbG93ID0gTm9uZQotICAgICAgICB3aGlsZSB0b3RhbF9sZW4gPCBmaWxsX2xlbjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuZXdfaXRlbSA9IG5leHQoaXQpCi0gICAgICAgICAgICAgICAgYnVmZmVyXy5hcHBlbmQobmV3X2l0ZW0pCi0gICAgICAgICAgICAgICAgdG90YWxfbGVuICs9IGxlbihuZXdfaXRlbSkgKyAxCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAgICBpZiBidWZmZXJfOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIG92ZXJmbG93OgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBvdmVyZmxvdwotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiB0b3RhbF9sZW4gPiBmaWxsX2xlbjoKLSAgICAgICAgICAgIG92ZXJmbG93ID0gYnVmZmVyXy5wb3AoKQotICAgICAgICAgICAgdG90YWxfbGVuIC09IGxlbihvdmVyZmxvdykgLSAxCi0gICAgICAgIHJldCA9ICcgJy5qb2luKGJ1ZmZlcl8pCi0gICAgICAgIGFzc2VydCBsZW4ocmV0KSA8PSBmaWxsX2xlbgotICAgICAgICB5aWVsZCByZXQKLQotRklMTCA9IDgwCi0KLWRlZiBtYWluKGZpbGVfcGF0aCk6Ci0gICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgJ3cnKSBhcyBGSUxFOgotICAgICAgICAjIENvbW1lbnQgZm9yIGZpbGUKLSAgICAgICAgcHJpbnQ+PkZJTEUsIGNvbW1lbnRfaGVhZGVyICUgc3VidmVyc2lvblsxOl0KLSAgICAgICAgcHJpbnQ+PkZJTEUsICcnCi0gICAgICAgICMgU3RhdGVtZW50cyBhdCBzdGFydCBvZiBmaWxlCi0gICAgICAgIHByaW50Pj5GSUxFLCBzdGF0ZW1lbnRfaGVhZGVyCi0gICAgICAgIHByaW50Pj5GSUxFLCAnJwotICAgICAgICAjIEdlbmVyYXRlIGNhc2UgZm9yIHB5dGhvbl9oaWdobGlnaHRfYWxsCi0gICAgICAgIHByaW50Pj5GSUxFLCAnaWYgZXhpc3RzKCJweXRob25faGlnaGxpZ2h0X2FsbCIpJwotICAgICAgICBmb3Igc3RhdGVtZW50X3Zhciwgc3RhdGVtZW50X3BhcnRzIGluIHN0YXRlbWVudHM6Ci0gICAgICAgICAgICBpZiBzdGF0ZW1lbnRfdmFyOgotICAgICAgICAgICAgICAgIHByaW50Pj5GSUxFLCAnICBsZXQgJXMgPSAxJyAlIHN0YXRlbWVudF92YXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50Pj5GSUxFLCAnZW5kaWYnCi0gICAgICAgICAgICBwcmludD4+RklMRSwgJycKLSAgICAgICAgIyBHZW5lcmF0ZSBQeXRob24gZ3JvdXBzCi0gICAgICAgIGZvciBzdGF0ZW1lbnRfdmFyLCBzdGF0ZW1lbnRfcGFydHMgaW4gc3RhdGVtZW50czoKLSAgICAgICAgICAgIGlmIHN0YXRlbWVudF92YXI6Ci0gICAgICAgICAgICAgICAgcHJpbnQ+PkZJTEUsICdpZiBleGlzdHMoIiVzIiknICUgc3RhdGVtZW50X3ZhcgotICAgICAgICAgICAgICAgIGluZGVudCA9ICcgICcKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaW5kZW50ID0gJycKLSAgICAgICAgICAgIGZvciBjb2xvdXJfZ3JvdXAsIGdyb3VwLCB0eXBlXywgYXJndW1lbnRzIGluIHN0YXRlbWVudF9wYXJ0czoKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmd1bWVudHMsIGJhc2VzdHJpbmcpOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBzeW5fcHJlZml4KHR5cGVfLCBncm91cCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwZV8gPT0gJ2tleXdvcmQnOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF9pdGVyID0gZmlsbF9zdG10KGFyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMTCAtIGxlbihwcmVmaXgpIC0gbGVuKGluZGVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQ+PkZJTEUsIGluZGVudCArIHByZWZpeCArIG5leHQoc3RtdF9pdGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQ+PkZJTEUsICcnCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgYXJndW1lbnQgaW4gYXJndW1lbnRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Pj5GSUxFLCBpbmRlbnQgKyBwcmVmaXggKyBhcmd1bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludD4+RklMRSwgJycKLQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50Pj5GSUxFLCBpbmRlbnQgKyBzeW5fcHJlZml4KHR5cGVfLCBncm91cCkgKyBhcmd1bWVudHMKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQ+PkZJTEUsICcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIHN0YXRlbWVudF92YXI6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50Pj5GSUxFLCAnZW5kaWYnCi0gICAgICAgICAgICAgICAgICAgIHByaW50Pj5GSUxFLCAnJwotICAgICAgICAgICAgcHJpbnQ+PkZJTEUsICcnCi0gICAgICAgICMgQXNzb2NpYXRpbmcgUHl0aG9uIGdyb3VwIHdpdGggVmltIGNvbG91ciBncm91cAotICAgICAgICBmb3Igc3RhdGVtZW50X3Zhciwgc3RhdGVtZW50X3BhcnRzIGluIHN0YXRlbWVudHM6Ci0gICAgICAgICAgICBpZiBzdGF0ZW1lbnRfdmFyOgotICAgICAgICAgICAgICAgIHByaW50Pj5GSUxFLCAnICBpZiBleGlzdHMoIiVzIiknICUgc3RhdGVtZW50X3ZhcgotICAgICAgICAgICAgICAgIGluZGVudCA9ICcgICAgJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbmRlbnQgPSAnICAnCi0gICAgICAgICAgICBmb3IgY29sb3VyX2dyb3VwLCBncm91cCwgdHlwZV8sIGFyZ3VtZW50cyBpbiBzdGF0ZW1lbnRfcGFydHM6Ci0gICAgICAgICAgICAgICAgcHJpbnQ+PkZJTEUsIChpbmRlbnQgKyAiaGkgZGVmIGxpbmsgJXMgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3VwLCBjb2xvdXJfZ3JvdXApKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzdGF0ZW1lbnRfdmFyOgotICAgICAgICAgICAgICAgICAgICBwcmludD4+RklMRSwgJyAgZW5kaWYnCi0gICAgICAgICAgICAgICAgcHJpbnQ+PkZJTEUsICcnCi0gICAgICAgICMgU3RhdGVtZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCi0gICAgICAgIHByaW50Pj5GSUxFLCBzdGF0ZW1lbnRfZm9vdGVyCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigicHl0aG9uLnZpbSIpCmRpZmYgLS1naXQgYS9NaXNjL1ZpbS92aW1yYyBiL01pc2MvVmltL3ZpbXJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzk4Y2NhLi4wMDAwMDAwCi0tLSBhL01pc2MvVmltL3ZpbXJjCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotIiB2aW1yYyBmaWxlIGZvciBmb2xsb3dpbmcgdGhlIGNvZGluZyBzdGFuZGFyZHMgc3BlY2lmaWVkIGluIFBFUCA3ICYgOC4KLSIKLSIgVG8gdXNlIHRoaXMgZmlsZSwgc291cmNlIGl0IGluIHlvdXIgb3duIHBlcnNvbmFsIC52aW1yYyBmaWxlIChgYHNvdXJjZQotIiA8ZmlsZW5hbWU+YGApIG9yLCBpZiB5b3UgZG9uJ3QgaGF2ZSBhIC52aW1yYyBmaWxlLCB5b3UgY2FuIGp1c3Qgc3ltbGluayB0byBpdAotIiAoYGBsbiAtcyA8dGhpcyBmaWxlPiB+Ly52aW1yY2BgKS4gIEFsbCBvcHRpb25zIGFyZSBwcm90ZWN0ZWQgYnkgYXV0b2NtZHMKLSIgKHJlYWQgYmVsb3cgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBjb21tYW5kKSBzbyBibGluZCBzb3VyY2luZyBvZiB0aGlzIGZpbGUKLSIgaXMgc2FmZSBhbmQgd2lsbCBub3QgYWZmZWN0IHlvdXIgc2V0dGluZ3MgZm9yIG5vbi1QeXRob24gb3Igbm9uLUMgZmlsZXMuCi0iCi0iCi0iIEFsbCBzZXR0aW5nIGFyZSBwcm90ZWN0ZWQgYnkgJ2F1JyAoJ2F1dG9jbWQnKSBzdGF0ZW1lbnRzLiAgT25seSBmaWxlcyBlbmRpbmcKLSIgaW4gLnB5IG9yIC5weXcgd2lsbCB0cmlnZ2VyIHRoZSBQeXRob24gc2V0dGluZ3Mgd2hpbGUgZmlsZXMgZW5kaW5nIGluICouYyBvcgotIiAqLmggd2lsbCB0cmlnZ2VyIHRoZSBDIHNldHRpbmdzLiAgVGhpcyBtYWtlcyB0aGUgZmlsZSAic2FmZSIgaW4gdGVybXMgb2Ygb25seQotIiBhZGp1c3Rpbmcgc2V0dGluZ3MgZm9yIFB5dGhvbiBhbmQgQyBmaWxlcy4KLSIKLSIgT25seSBiYXNpYyBzZXR0aW5ncyBuZWVkZWQgdG8gZW5mb3JjZSB0aGUgc3R5bGUgZ3VpZGVsaW5lcyBhcmUgc2V0LgotIiBTb21lIHN1Z2dlc3RlZCBvcHRpb25zIGFyZSBsaXN0ZWQgYnV0IGNvbW1lbnRlZCBvdXQgYXQgdGhlIGVuZCBvZiB0aGlzIGZpbGUuCi0KLSIgTnVtYmVyIG9mIHNwYWNlcyB0aGF0IGEgcHJlLWV4aXN0aW5nIHRhYiBpcyBlcXVhbCB0by4KLSIgRm9yIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCBmb3IgYSBuZXcgdGFiIHVzZSBzaGlmdHdpZHRoLgotYXUgQnVmUmVhZCxCdWZOZXdGaWxlICpweSwqcHl3LCouYywqLmggc2V0IHRhYnN0b3A9OAotCi0iIFdoYXQgdG8gdXNlIGZvciBhbiBpbmRlbnQuCi0iIFRoaXMgd2lsbCBhZmZlY3QgQ3RybC1UIGFuZCAnYXV0b2luZGVudCcuCi0iIFB5dGhvbjogNCBzcGFjZXMKLSIgQzogdGFicyAocHJlLWV4aXN0aW5nIGZpbGVzKSBvciA0IHNwYWNlcyAobmV3IGZpbGVzKQotYXUgQnVmUmVhZCxCdWZOZXdGaWxlICoucHksKnB5dyBzZXQgc2hpZnR3aWR0aD00Ci1hdSBCdWZSZWFkLEJ1Zk5ld0ZpbGUgKi5weSwqLnB5dyBzZXQgZXhwYW5kdGFiCi1mdSBTZWxlY3RfY19zdHlsZSgpCi0gICAgaWYgc2VhcmNoKCdeXHQnLCAnbicsIDE1MCkKLSAgICAgICAgc2V0IHNoaWZ0d2lkdGg9OAotICAgICAgICBzZXQgbm9leHBhbmR0YWIKLSAgICBlbCAKLSAgICAgICAgc2V0IHNoaWZ0d2lkdGg9NAotICAgICAgICBzZXQgZXhwYW5kdGFiCi0gICAgZW4KLWVuZGYKLWF1IEJ1ZlJlYWQsQnVmTmV3RmlsZSAqLmMsKi5oIGNhbGwgU2VsZWN0X2Nfc3R5bGUoKQotYXUgQnVmUmVhZCxCdWZOZXdGaWxlIE1ha2VmaWxlKiBzZXQgbm9leHBhbmR0YWIKLQotIiBVc2UgdGhlIGJlbG93IGhpZ2hsaWdodCBncm91cCB3aGVuIGRpc3BsYXlpbmcgYmFkIHdoaXRlc3BhY2UgaXMgZGVzaXJlZC4KLWhpZ2hsaWdodCBCYWRXaGl0ZXNwYWNlIGN0ZXJtYmc9cmVkIGd1aWJnPXJlZAotCi0iIERpc3BsYXkgdGFicyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBQeXRob24gbW9kZSBhcyBiYWQuCi1hdSBCdWZSZWFkLEJ1Zk5ld0ZpbGUgKi5weSwqLnB5dyBtYXRjaCBCYWRXaGl0ZXNwYWNlIC9eXHRcKy8KLSIgTWFrZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGJlIGZsYWdnZWQgYXMgYmFkLgotYXUgQnVmUmVhZCxCdWZOZXdGaWxlICoucHksKi5weXcsKi5jLCouaCwqLnJzdCBtYXRjaCBCYWRXaGl0ZXNwYWNlIC9cc1wrJC8KLQotIiBXcmFwIHRleHQgYWZ0ZXIgYSBjZXJ0YWluIG51bWJlciBvZiBjaGFyYWN0ZXJzCi0iIFB5dGhvbjogNzkgCi0iIEM6IDc5Ci1hdSBCdWZSZWFkLEJ1Zk5ld0ZpbGUgKi5weSwqLnB5dywqLmMsKi5oIHNldCB0ZXh0d2lkdGg9NzkKLQotIiBUdXJuIG9mZiBzZXR0aW5ncyBpbiAnZm9ybWF0b3B0aW9ucycgcmVsYXRpbmcgdG8gY29tbWVudCBmb3JtYXR0aW5nLgotIiAtIGMgOiBkbyBub3QgYXV0b21hdGljYWxseSBpbnNlcnQgdGhlIGNvbW1lbnQgbGVhZGVyIHdoZW4gd3JhcHBpbmcgYmFzZWQgb24KLSIgICAgJ3RleHR3aWR0aCcKLSIgLSBvIDogZG8gbm90IGluc2VydCB0aGUgY29tbWVudCBsZWFkZXIgd2hlbiB1c2luZyAnbycgb3IgJ08nIGZyb20gY29tbWFuZCBtb2RlCi0iIC0gciA6IGRvIG5vdCBpbnNlcnQgdGhlIGNvbW1lbnQgbGVhZGVyIHdoZW4gaGl0dGluZyA8RW50ZXI+IGluIGluc2VydCBtb2RlCi0iIFB5dGhvbjogbm90IG5lZWRlZAotIiBDOiBwcmV2ZW50cyBpbnNlcnRpb24gb2YgJyonIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgbGluZSBpbiBhIGNvbW1lbnQKLWF1IEJ1ZlJlYWQsQnVmTmV3RmlsZSAqLmMsKi5oIHNldCBmb3JtYXRvcHRpb25zLT1jIGZvcm1hdG9wdGlvbnMtPW8gZm9ybWF0b3B0aW9ucy09cgotCi0iIFVzZSBVTklYIChcbikgbGluZSBlbmRpbmdzLgotIiBPbmx5IHVzZWQgZm9yIG5ldyBmaWxlcyBzbyBhcyB0byBub3QgZm9yY2UgZXhpc3RpbmcgZmlsZXMgdG8gY2hhbmdlIHRoZWlyCi0iIGxpbmUgZW5kaW5ncy4KLSIgUHl0aG9uOiB5ZXMKLSIgQzogeWVzCi1hdSBCdWZOZXdGaWxlICoucHksKi5weXcsKi5jLCouaCBzZXQgZmlsZWZvcm1hdD11bml4Ci0KLQotIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0iIFRoZSBmb2xsb3dpbmcgc2VjdGlvbiBjb250YWlucyBzdWdnZXN0ZWQgc2V0dGluZ3MuICBXaGlsZSBpbiBubyB3YXkgcmVxdWlyZWQKLSIgdG8gbWVldCBjb2Rpbmcgc3RhbmRhcmRzLCB0aGV5IGFyZSBoZWxwZnVsLgotCi0iIFNldCB0aGUgZGVmYXVsdCBmaWxlIGVuY29kaW5nIHRvIFVURi04OiBgYHNldCBlbmNvZGluZz11dGYtOGBgCi0KLSIgUHV0cyBhIG1hcmtlciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBVVEYgYW5kCi0iIFVDUyBlbmNvZGluZyAoV0FSTklORzogY2FuIHRyaWNrIHNoZWxscyBpbnRvIHRoaW5raW5nIGEgdGV4dCBmaWxlIGlzIGFjdHVhbGx5Ci0iIGEgYmluYXJ5IGZpbGUgd2hlbiBleGVjdXRpbmcgdGhlIHRleHQgZmlsZSk6IGBgc2V0IGJvbWJgYAotCi0iIEZvciBmdWxsIHN5bnRheCBoaWdobGlnaHRpbmc6Ci0iYGBsZXQgcHl0aG9uX2hpZ2hsaWdodF9hbGw9MWBgCi0iYGBzeW50YXggb25gYAotCi0iIEF1dG9tYXRpY2FsbHkgaW5kZW50IGJhc2VkIG9uIGZpbGUgdHlwZTogYGBmaWxldHlwZSBpbmRlbnQgb25gYAotIiBLZWVwIGluZGVudGF0aW9uIGxldmVsIGZyb20gcHJldmlvdXMgbGluZTogYGBzZXQgYXV0b2luZGVudGBgCi0KLSIgRm9sZGluZyBiYXNlZCBvbiBpbmRlbnRhdGlvbjogYGBzZXQgZm9sZG1ldGhvZD1pbmRlbnRgYApkaWZmIC0tZ2l0IGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZjNhZWIKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qIENvdmVyaXR5IFNjYW4gbW9kZWwKKyAqCisgKiBUaGlzIGlzIGEgbW9kZWxpbmcgZmlsZSBmb3IgQ292ZXJpdHkgU2Nhbi4gTW9kZWxpbmcgaGVscHMgdG8gYXZvaWQgZmFsc2UKKyAqIHBvc2l0aXZlcy4KKyAqCisgKiAtIEEgbW9kZWwgZmlsZSBjYW4ndCBpbXBvcnQgYW55IGhlYWRlciBmaWxlcy4KKyAqIC0gVGhlcmVmb3JlIG9ubHkgc29tZSBidWlsdC1pbiBwcmltaXRpdmVzIGxpa2UgaW50LCBjaGFyIGFuZCB2b2lkIGFyZQorICogICBhdmFpbGFibGUgYnV0IG5vdCB3Y2hhcl90LCBOVUxMIGV0Yy4KKyAqIC0gTW9kZWxpbmcgZG9lc24ndCBuZWVkIGZ1bGwgc3RydWN0cyBhbmQgdHlwZWRlZnMuIFJ1ZGltZW50YXJ5IHN0cnVjdHMKKyAqICAgYW5kIHNpbWlsYXIgdHlwZXMgYXJlIHN1ZmZpY2llbnQuCisgKiAtIEFuIHVuaW5pdGlhbGl6ZWQgbG9jYWwgcG9pbnRlciBpcyBub3QgYW4gZXJyb3IuIEl0IHNpZ25pZmllcyB0aGF0IHRoZQorICogICB2YXJpYWJsZSBjb3VsZCBiZSBlaXRoZXIgTlVMTCBvciBoYXZlIHNvbWUgZGF0YS4KKyAqCisgKiBDb3Zlcml0eSBTY2FuIGRvZXNuJ3QgcGljayB1cCBtb2RpZmljYXRpb25zIGF1dG9tYXRpY2FsbHkuIFRoZSBtb2RlbCBmaWxlCisgKiBtdXN0IGJlIHVwbG9hZGVkIGJ5IGFuIGFkbWluIGluIHRoZSBhbmFseXNpcyBzZXR0aW5ncyBvZgorICogaHR0cDovL3NjYW4uY292ZXJpdHkuY29tL3Byb2plY3RzLzIwMAorICovCisKKy8qIGR1bW15IGRlZmluaXRpb25zLCBpbiBtb3N0IGNhc2VzIHN0cnVjdCBmaWVsZHMgYXJlbid0IHJlcXVpcmVkLiAqLworCisjZGVmaW5lIE5VTEwgKHZvaWQgKikwCisjZGVmaW5lIGFzc2VydChvcCkgLyogZW1wdHkgKi8KK3R5cGVkZWYgaW50IHNkaWdpdDsKK3R5cGVkZWYgbG9uZyBQeV9zc2l6ZV90OwordHlwZWRlZiBsb25nIGxvbmcgUFlfTE9OR19MT05HOwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB3Y2hhcl90OwordHlwZWRlZiBzdHJ1Y3Qge30gUHlPYmplY3Q7Cit0eXBlZGVmIHN0cnVjdCB7fSBncmFtbWFyOwordHlwZWRlZiBzdHJ1Y3Qge30gRElSOwordHlwZWRlZiBzdHJ1Y3Qge30gUkZJTEU7CisKKy8qIFB5dGhvbi9weXRob25ydW4uYworICogcmVzb3VyZWNlIGxlYWsgZmFsc2UgcG9zaXRpdmUgKi8KKwordm9pZCBQeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1zZykgeworICAgIF9fY292ZXJpdHlfcGFuaWNfXygpOworfQorCisvKiBPYmplY3RzL2xvbmdvYmplY3QuYworICogTkVHQVRJVkVfUkVUVVJOUyBmYWxzZSBwb3NpdGl2ZSAqLworCitzdGF0aWMgUHlPYmplY3QgKmdldF9zbWFsbF9pbnQoc2RpZ2l0IGl2YWwpCit7CisgICAgLyogTmV2ZXIgcmV0dXJucyBOVUxMICovCisgICAgUHlPYmplY3QgKnA7CisgICAgYXNzZXJ0KHAgIT0gTlVMTCk7CisgICAgcmV0dXJuIHA7Cit9CisKK1B5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmcobG9uZyBpdmFsKQoreworICAgIFB5T2JqZWN0ICpwOworICAgIGludCBtYXliZTsKKworICAgIGlmICgoaXZhbCA+PSAtNSkgJiYgKGl2YWwgPCAyNTcgKyA1KSkgeworICAgICAgICBwID0gZ2V0X3NtYWxsX2ludChpdmFsKTsKKyAgICAgICAgYXNzZXJ0KHAgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBwOworICAgIH0KKyAgICBpZiAobWF5YmUpCisgICAgICAgIHJldHVybiBwOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaXZhbCk7Cit9CisKK1B5T2JqZWN0ICpQeUxvbmdfRnJvbVNzaXplX3QoUHlfc3NpemVfdCBpdmFsKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaXZhbCk7Cit9CisKKy8qIHRhaW50ZWQgc2lua3MKKyAqCisgKiBDb3Zlcml0eSBjb25zaWRlcnMgYXJndiwgZW52aXJvbiwgcmVhZCgpIGRhdGEgZXRjIGFzIHRhaW5lZC4KKyAqLworCitQeU9iamVjdCAqUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5T2JqZWN0ICpleGMsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhmaWxlbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIFB5dGhvbi9maWxldXRpbHMuYyAqLword2NoYXJfdCAqX1B5X2NoYXIyd2NoYXIoY29uc3QgY2hhciogYXJnLCBzaXplX3QgKnNpemUpCit7CisgICB3Y2hhcl90ICp3OworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhhcmcpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhzaXplKTsKKyAgIHJldHVybiB3OworfQorCisvKiBQYXJzZXIvcGdlbm1haW4uYyAqLworZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBncmFtbWFyICpnOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhmaWxlbmFtZSk7CisgICAgcmV0dXJuIGc7Cit9CisKKy8qIFB5dGhvbi9tYXJzaGFsLmMgKi8KKworc3RhdGljIFB5X3NzaXplX3Qgcl9zdHJpbmcoY2hhciAqcywgUHlfc3NpemVfdCBuLCBSRklMRSAqcCkKK3sKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfc3RyaW5nX2FyZ3VtZW50X18ocyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIHJfbG9uZyhSRklMRSAqcCkKK3sKKyAgICBsb25nIGw7CisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbNF07CisKKyAgICByX3N0cmluZygoY2hhciAqKWJ1ZmZlciwgNCwgcCk7CisgICAgX19jb3Zlcml0eV90YWludGVkX3N0cmluZ19zYW5pdGl6ZV9jb250ZW50X18oYnVmZmVyKTsKKyAgICBsID0gKGxvbmcpYnVmZmVyOworICAgIHJldHVybiBsOworfQorCisvKiBDb3Zlcml0eSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhhdCBmZG9wZW5kaXIoKSBtYXkgdGFrZSBvd25lcnNoaXAgb2YgZmQuICovCisKK0RJUiAqZmRvcGVuZGlyKGludCBmZCkgeworICAgIERJUiAqZDsKKyAgICBpZiAoZCkgeworICAgICAgICBfX2NvdmVyaXR5X2Nsb3NlX18oZmQpOworICAgIH0KKyAgICByZXR1cm4gZDsKK30KKwpkaWZmIC0tZ2l0IGEvTWlzYy9weXRob24tY29uZmlnLmluIGIvTWlzYy9weXRob24tY29uZmlnLmluCmluZGV4IGFjM2EyYzcuLjBiOWI1ZGMgMTAwNjQ0Ci0tLSBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorKysgYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KQEAgLTEsNiArMSw4IEBACiAjIUBFWEVOQU1FQAogIyAtKi0gcHl0aG9uIC0qLQogCisjIEtlZXAgdGhpcyBzY3JpcHQgaW4gc3luYyB3aXRoIHB5dGhvbi1jb25maWcuc2guaW4KKwogaW1wb3J0IGdldG9wdAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi1jb25maWcuc2guaW4gYi9NaXNjL3B5dGhvbi1jb25maWcuc2guaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhM2RiZQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvcHl0aG9uLWNvbmZpZy5zaC5pbgpAQCAtMCwwICsxLDExMSBAQAorIyEvYmluL3NoCisKKyMgS2VlcCB0aGlzIHNjcmlwdCBpbiBzeW5jIHdpdGggcHl0aG9uLWNvbmZpZy5pbgorCitleGl0X3dpdGhfdXNhZ2UgKCkKK3sKKyAgICBlY2hvICJVc2FnZTogJDAgLS1wcmVmaXh8LS1leGVjLXByZWZpeHwtLWluY2x1ZGVzfC0tbGlic3wtLWNmbGFnc3wtLWxkZmxhZ3N8LS1leHRlbnNpb24tc3VmZml4fC0taGVscHwtLWFiaWZsYWdzfC0tY29uZmlnZGlyIgorICAgIGV4aXQgJDEKK30KKworaWYgWyAiJDEiID0gIiIgXSA7IHRoZW4KKyAgICBleGl0X3dpdGhfdXNhZ2UgMQorZmkKKworIyBSZXR1cm5zIHRoZSBhY3R1YWwgcHJlZml4IHdoZXJlIHRoaXMgc2NyaXB0IHdhcyBpbnN0YWxsZWQgdG8uCitpbnN0YWxsZWRfcHJlZml4ICgpCit7CisgICAgUkVTVUxUPSQoZGlybmFtZSAkKGNkICQoZGlybmFtZSAiJDEiKSAmJiBwd2QgLVApKQorICAgIGlmIHdoaWNoIHJlYWRsaW5rID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgICAgICAgaWYgcmVhZGxpbmsgLWYgIiRSRVNVTFQiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIFJFU1VMVD0kKHJlYWRsaW5rIC1mICIkUkVTVUxUIikKKyAgICAgICAgZmkKKyAgICBmaQorICAgIGVjaG8gJFJFU1VMVAorfQorCitwcmVmaXhfYnVpbGQ9IkBwcmVmaXhAIgorcHJlZml4X3JlYWw9JChpbnN0YWxsZWRfcHJlZml4ICIkMCIpCisKKyMgVXNlIHNlZCB0byBmaXggcGF0aHMgZnJvbSB0aGVpciBidWlsdC10byBsb2NhdGlvbnMgdG8gdGhlaXIgaW5zdGFsbGVkLXRvCisjIGxvY2F0aW9ucy4KK3ByZWZpeD0kKGVjaG8gIiRwcmVmaXhfYnVpbGQiIHwgc2VkICJzIyRwcmVmaXhfYnVpbGQjJHByZWZpeF9yZWFsIyIpCitleGVjX3ByZWZpeF9idWlsZD0iQGV4ZWNfcHJlZml4QCIKK2V4ZWNfcHJlZml4PSQoZWNobyAiJGV4ZWNfcHJlZml4X2J1aWxkIiB8IHNlZCAicyMkZXhlY19wcmVmaXhfYnVpbGQjJHByZWZpeF9yZWFsIyIpCitpbmNsdWRlZGlyPSQoZWNobyAiQGluY2x1ZGVkaXJAIiB8IHNlZCAicyMkcHJlZml4X2J1aWxkIyRwcmVmaXhfcmVhbCMiKQorbGliZGlyPSQoZWNobyAiQGxpYmRpckAiIHwgc2VkICJzIyRwcmVmaXhfYnVpbGQjJHByZWZpeF9yZWFsIyIpCitDRkxBR1M9JChlY2hvICJAQ0ZMQUdTQCIgfCBzZWQgInMjJHByZWZpeF9idWlsZCMkcHJlZml4X3JlYWwjIikKK1ZFUlNJT049IkBWRVJTSU9OQCIKK0xJQk09IkBMSUJNQCIKK0xJQkM9IkBMSUJDQCIKK1NZU0xJQlM9IiRMSUJNICRMSUJDIgorQUJJRkxBR1M9IkBBQklGTEFHU0AiCitMSUJTPSJATElCU0AgJFNZU0xJQlMgLWxweXRob24ke1ZFUlNJT059JHtBQklGTEFHU30iCitCQVNFQ0ZMQUdTPSJAQkFTRUNGTEFHU0AiCitMRExJQlJBUlk9IkBMRExJQlJBUllAIgorTElOS0ZPUlNIQVJFRD0iQExJTktGT1JTSEFSRURAIgorT1BUPSJAT1BUQCIKK1BZX0VOQUJMRV9TSEFSRUQ9IkBQWV9FTkFCTEVfU0hBUkVEQCIKK0xEVkVSU0lPTj0iQExEVkVSU0lPTkAiCitMSUJERVNUPSR7cHJlZml4fS9saWIvcHl0aG9uJHtWRVJTSU9OfQorTElCUEw9JChlY2hvICJATElCUExAIiB8IHNlZCAicyMkcHJlZml4X2J1aWxkIyRwcmVmaXhfcmVhbCMiKQorU089IkBTT0AiCitQWVRIT05GUkFNRVdPUks9IkBQWVRIT05GUkFNRVdPUktAIgorSU5DRElSPSItSSRpbmNsdWRlZGlyL3B5dGhvbiR7VkVSU0lPTn0ke0FCSUZMQUdTfSIKK1BMQVRJTkNESVI9Ii1JJGluY2x1ZGVkaXIvcHl0aG9uJHtWRVJTSU9OfSR7QUJJRkxBR1N9IgorCisjIFNjYW4gZm9yIC0taGVscCBvciB1bmtub3duIGFyZ3VtZW50LgorZm9yIEFSRyBpbiAkKgorZG8KKyAgICBjYXNlICRBUkcgaW4KKyAgICAgICAgLS1oZWxwKQorICAgICAgICAgICAgZXhpdF93aXRoX3VzYWdlIDAKKyAgICAgICAgOzsKKyAgICAgICAgLS1wcmVmaXh8LS1leGVjLXByZWZpeHwtLWluY2x1ZGVzfC0tbGlic3wtLWNmbGFnc3wtLWxkZmxhZ3N8LS1leHRlbnNpb24tc3VmZml4fC0tYWJpZmxhZ3N8LS1jb25maWdkaXIpCisgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICBleGl0X3dpdGhfdXNhZ2UgMQorICAgICAgICA7OworICAgIGVzYWMKK2RvbmUKKworZm9yIEFSRyBpbiAiJEAiCitkbworICAgIGNhc2UgIiRBUkciIGluCisgICAgICAgIC0tcHJlZml4KQorICAgICAgICAgICAgZWNobyAiJHByZWZpeCIKKyAgICAgICAgOzsKKyAgICAgICAgLS1leGVjLXByZWZpeCkKKyAgICAgICAgICAgIGVjaG8gIiRleGVjX3ByZWZpeCIKKyAgICAgICAgOzsKKyAgICAgICAgLS1pbmNsdWRlcykKKyAgICAgICAgICAgIGVjaG8gIiRJTkNESVIgJFBMQVRJTkNESVIiCisgICAgICAgIDs7CisgICAgICAgIC0tY2ZsYWdzKQorICAgICAgICAgICAgZWNobyAiJElOQ0RJUiAkUExBVElOQ0RJUiAkQkFTRUNGTEFHUyAkQ0ZMQUdTICRPUFQiCisgICAgICAgIDs7CisgICAgICAgIC0tbGlicykKKyAgICAgICAgICAgIGVjaG8gIiRMSUJTIgorICAgICAgICA7OworICAgICAgICAtLWxkZmxhZ3MpCisgICAgICAgICAgICBMSU5LRk9SU0hBUkVEVVNFRD0KKyAgICAgICAgICAgIGlmIFsgLXogIiRQWVRIT05GUkFNRVdPUksiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgTElOS0ZPUlNIQVJFRFVTRUQ9JExJTktGT1JTSEFSRUQKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBMSUJQTFVTRUQ9CisgICAgICAgICAgICBpZiBbICIkUFlfRU5BQkxFX1NIQVJFRCIgPSAiMCIgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICBMSUJQTFVTRUQ9Ii1MJExJQlBMIgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGVjaG8gIiRMSUJQTFVTRUQgLUwkbGliZGlyICRMSUJTICRMSU5LRk9SU0hBUkVEVVNFRCIKKyAgICAgICAgOzsKKyAgICAgICAgLS1leHRlbnNpb24tc3VmZml4KQorICAgICAgICAgICAgZWNobyAiJFNPIgorICAgICAgICA7OworICAgICAgICAtLWFiaWZsYWdzKQorICAgICAgICAgICAgZWNobyAiJEFCSUZMQUdTIgorICAgICAgICA7OworICAgICAgICAtLWNvbmZpZ2RpcikKKyAgICAgICAgICAgIGVjaG8gIiRMSUJQTCIKKyAgICAgICAgOzsKK2VzYWMKK2RvbmUKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLm1hbiBiL01pc2MvcHl0aG9uLm1hbgppbmRleCBiY2IzZWM4Li41MmFlZGVlIDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi5tYW4KKysrIGIvTWlzYy9weXRob24ubWFuCkBAIC0yNiwxMSArMjYsMTQgQEAKIC5CIFwtaQogXQogWwotLkIgXC1tCi0uSSBtb2R1bGUtbmFtZQorLkIgXC1JCiBdCiAuYnIKICAgICAgICBbCisuQiBcLW0KKy5JIG1vZHVsZS1uYW1lCitdCitbCiAuQiBcLXEKIF0KIFsKQEAgLTEzOSw2ICsxNDIsMTMgQEAKIHVzZWZ1bCB0byBpbnNwZWN0IGdsb2JhbCB2YXJpYWJsZXMgb3IgYSBzdGFjayB0cmFjZSB3aGVuIGEgc2NyaXB0CiByYWlzZXMgYW4gZXhjZXB0aW9uLgogLlRQCisuQiBcLUkKK1J1biBQeXRob24gaW4gaXNvbGF0ZWQgbW9kZS4gVGhpcyBhbHNvIGltcGxpZXMgXGZCXC1FXGZQIGFuZCBcZkJcLVNcZlAuIEluCitpc29sYXRlZCBtb2RlIHN5cy5wYXRoIGNvbnRhaW5zIG5laXRoZXIgdGhlIHNjcmlwdOKAmXMgZGlyZWN0b3J5IG5vciB0aGUgdXNlcuKAmXMKK3NpdGUtcGFja2FnZXMgZGlyZWN0b3J5LiBBbGwgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGlnbm9yZWQsIHRvby4KK0Z1cnRoZXIgcmVzdHJpY3Rpb25zIG1heSBiZSBpbXBvc2VkIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbmplY3RpbmcKK21hbGljaW91cyBjb2RlLgorLlRQCiAuQkkgIlwtbSAiIG1vZHVsZS1uYW1lCiBTZWFyY2hlcyAKIC5JIHN5cy5wYXRoIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IGY0NWRlNWMuLmViZjgxNzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTExMyw5ICsxMTMsMTEgQEAKIF9jb2RlY3MgX2NvZGVjc21vZHVsZS5jCQkjIGFjY2VzcyB0byB0aGUgYnVpbHRpbiBjb2RlY3MgYW5kIGNvZGVjIHJlZ2lzdHJ5CiBfd2Vha3JlZiBfd2Vha3JlZi5jCQkjIHdlYWsgcmVmZXJlbmNlcwogX2Z1bmN0b29scyBfZnVuY3Rvb2xzbW9kdWxlLmMgICAjIFRvb2xzIGZvciB3b3JraW5nIHdpdGggZnVuY3Rpb25zIGFuZCBjYWxsYWJsZSBvYmplY3RzCi1vcGVyYXRvciBvcGVyYXRvci5jCSAgICAgICAgIyBvcGVyYXRvci5hZGQoKSBhbmQgc2ltaWxhciBnb29kaWVzCitfb3BlcmF0b3IgX29wZXJhdG9yLmMJICAgICAgICAjIG9wZXJhdG9yLmFkZCgpIGFuZCBzaW1pbGFyIGdvb2RpZXMKIF9jb2xsZWN0aW9ucyBfY29sbGVjdGlvbnNtb2R1bGUuYyAjIENvbnRhaW5lciB0eXBlcwogaXRlcnRvb2xzIGl0ZXJ0b29sc21vZHVsZS5jICAgICMgRnVuY3Rpb25zIGNyZWF0aW5nIGl0ZXJhdG9ycyBmb3IgZWZmaWNpZW50IGxvb3BpbmcgCithdGV4aXQgYXRleGl0bW9kdWxlLmMgICAgICAjIFJlZ2lzdGVyIGZ1bmN0aW9ucyB0byBiZSBydW4gYXQgaW50ZXJwcmV0ZXItc2h1dGRvd24KK19zdGF0IF9zdGF0LmMJCQkjIHN0YXQuaCBpbnRlcmZhY2UKIAogIyBhY2Nlc3MgdG8gSVNPIEMgbG9jYWxlIHN1cHBvcnQKIF9sb2NhbGUgX2xvY2FsZW1vZHVsZS5jICAjIC1saW50bApAQCAtMTcwLDcgKzE3Miw2IEBACiAjX3dlYWtyZWYgX3dlYWtyZWYuYwkjIGJhc2ljIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQKICNfdGVzdGNhcGkgX3Rlc3RjYXBpbW9kdWxlLmMgICAgIyBQeXRob24gQyBBUEkgdGVzdCBtb2R1bGUKICNfcmFuZG9tIF9yYW5kb21tb2R1bGUuYwkjIFJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCi0jYXRleGl0IGF0ZXhpdG1vZHVsZS5jICAgICAgIyBSZWdpc3RlciBmdW5jdGlvbnMgdG8gYmUgcnVuIGF0IGludGVycHJldGVyLXNodXRkb3duCiAjX2VsZW1lbnR0cmVlIC1JJChzcmNkaXIpL01vZHVsZXMvZXhwYXQgLURIQVZFX0VYUEFUX0NPTkZJR19IIC1EVVNFX1BZRVhQQVRfQ0FQSSBfZWxlbWVudHRyZWUuYwkjIGVsZW1lbnR0cmVlIGFjY2VsZXJhdG9yCiAjX3BpY2tsZSBfcGlja2xlLmMJIyBwaWNrbGUgYWNjZWxlcmF0b3IKICNfZGF0ZXRpbWUgX2RhdGV0aW1lbW9kdWxlLmMJIyBkYXRldGltZSBhY2NlbGVyYXRvcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYnoybW9kdWxlLmMgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwppbmRleCA0ZWVlNWEyLi5hYmM0ZDVkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19iejJtb2R1bGUuYworKysgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwpAQCAtMzYsOCArMzYsNiBAQAogI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQogI2VuZGlmCiAKLSNkZWZpbmUgTUlOKFgsIFkpICgoKFgpIDwgKFkpKSA/IChYKSA6IChZKSkKLQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTQ5LDcgKzE0Nyw3IEBACiAgICAgYy0+YnpzLm5leHRfaW4gPSBkYXRhOwogICAgIGMtPmJ6cy5hdmFpbF9pbiA9IDA7CiAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBjLT5ienMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBTTUFMTENIVU5LOwogICAgIGZvciAoOzspIHsKICAgICAgICAgY2hhciAqdGhpc19vdXQ7CiAgICAgICAgIGludCBiemVycm9yOwpAQCAtMTU3LDcgKzE1NSw3IEBACiAgICAgICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgbGVuIG1pZ2h0IG5vdCBmaXQgaW4gYXZhaWxfaW4gKGFuIHVuc2lnbmVkIGludCkuCiAgICAgICAgICAgIERvIGNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMgZWFjaC4gKi8KICAgICAgICAgaWYgKGMtPmJ6cy5hdmFpbF9pbiA9PSAwICYmIGxlbiA+IDApIHsKLSAgICAgICAgICAgIGMtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICAgICAgICAgIGMtPmJ6cy5hdmFpbF9pbiA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGxlbiwgVUlOVF9NQVgpOwogICAgICAgICAgICAgbGVuIC09IGMtPmJ6cy5hdmFpbF9pbjsKICAgICAgICAgfQogCkBAIC0xNzMsNyArMTcxLDcgQEAKICAgICAgICAgICAgICAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYy0+YnpzLmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICAgICAgYy0+YnpzLmF2YWlsX291dCA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7CiAgICAgICAgIH0KIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yNTAsNiArMjQ4LDI0IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIHZvaWQqCitCWjJfTWFsbG9jKHZvaWQqIGN0eCwgaW50IGl0ZW1zLCBpbnQgc2l6ZSkKK3sKKyAgICBpZiAoaXRlbXMgPCAwIHx8IHNpemUgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoKHNpemVfdClpdGVtcyA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyAoc2l6ZV90KXNpemUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFB5TWVtX01hbGxvYygpIGNhbm5vdCBiZSB1c2VkOiBjb21wcmVzcygpIGFuZCBkZWNvbXByZXNzKCkKKyAgICAgICByZWxlYXNlIHRoZSBHSUwgKi8KKyAgICByZXR1cm4gUHlNZW1fUmF3TWFsbG9jKGl0ZW1zICogc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitCWjJfRnJlZSh2b2lkKiBjdHgsIHZvaWQgKnB0cikKK3sKKyAgICBQeU1lbV9SYXdGcmVlKHB0cik7Cit9CisKIHN0YXRpYyBpbnQKIEJaMkNvbXByZXNzb3JfaW5pdChCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKQEAgLTI3Miw2ICsyODgsOSBAQAogICAgIH0KICNlbmRpZgogCisgICAgc2VsZi0+YnpzLm9wYXF1ZSA9IE5VTEw7CisgICAgc2VsZi0+YnpzLmJ6YWxsb2MgPSBCWjJfTWFsbG9jOworICAgIHNlbGYtPmJ6cy5iemZyZWUgPSBCWjJfRnJlZTsKICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KCZzZWxmLT5ienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOwogICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0zNzAsMTAgKzM4OSwxMCBAQAogICAgIGQtPmJ6cy5uZXh0X2luID0gZGF0YTsKICAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGxlbiBtaWdodCBub3QgZml0IGluIGF2YWlsX2luIChhbiB1bnNpZ25lZCBpbnQpLgogICAgICAgIERvIGRlY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcyBlYWNoLiAqLwotICAgIGQtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICBkLT5ienMuYXZhaWxfaW4gPSAodW5zaWduZWQgaW50KVB5X01JTihsZW4sIFVJTlRfTUFYKTsKICAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOwogICAgIGQtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgZC0+YnpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBkLT5ienMuYXZhaWxfb3V0ID0gU01BTExDSFVOSzsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGNoYXIgKnRoaXNfb3V0OwogICAgICAgICBpbnQgYnplcnJvcjsKQEAgLTM5OSw3ICs0MTgsNyBAQAogICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX2luID09IDApIHsKICAgICAgICAgICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9pbiA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGxlbiwgVUlOVF9NQVgpOwogICAgICAgICAgICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKICAgICAgICAgfQogICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX291dCA9PSAwKSB7CkBAIC00MTAsNyArNDI5LDcgQEAKICAgICAgICAgICAgICAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZC0+YnpzLmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICAgICAgZC0+YnpzLmF2YWlsX291dCA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwppbmRleCAzNGExYTkwLi5lNWRmZGI0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKQEAgLTMsMzAgKzMsMzIgQEAKIAogLyogY29sbGVjdGlvbnMgbW9kdWxlIGltcGxlbWVudGF0aW9uIG9mIGEgZGVxdWUoKSBkYXRhdHlwZQogICAgV3JpdHRlbiBhbmQgbWFpbnRhaW5lZCBieSBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uQHJjbi5jb20+Ci0gICBDb3B5cmlnaHQgKGMpIDIwMDQgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICBDb3B5cmlnaHQgKGMpIDIwMDQtMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqLwogCiAvKiBUaGUgYmxvY2sgbGVuZ3RoIG1heSBiZSBzZXQgdG8gYW55IG51bWJlciBvdmVyIDEuICBMYXJnZXIgbnVtYmVycwotICogcmVkdWNlIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gdGhlIG1lbW9yeSBhbGxvY2F0b3IgYnV0IHRha2UgbW9yZQotICogbWVtb3J5LiAgSWRlYWxseSwgQkxPQ0tMRU4gc2hvdWxkIGJlIHNldCB3aXRoIGFuIGV5ZSB0byB0aGUKLSAqIGxlbmd0aCBvZiBhIGNhY2hlIGxpbmUuCisgKiByZWR1Y2UgdGhlIG51bWJlciBvZiBjYWxscyB0byB0aGUgbWVtb3J5IGFsbG9jYXRvciwgZ2l2ZSBmYXN0ZXIKKyAqIGluZGV4aW5nIGFuZCByb3RhdGlvbiwgYW5kIHJlZHVjZSB0aGUgbGluazo6ZGF0YSBvdmVyaGVhZCByYXRpby4KKyAqCisgKiBJZGVhbGx5LCB0aGUgYmxvY2sgbGVuZ3RoIHdpbGwgYmUgc2V0IHRvIHR3byBsZXNzIHRoYW4gc29tZQorICogbXVsdGlwbGUgb2YgdGhlIGNhY2hlLWxpbmUgbGVuZ3RoIChzbyB0aGF0IHRoZSBmdWxsIGJsb2NrCisgKiBpbmNsdWRpbmcgdGhlIGxlZnRsaW5rIGFuZCByaWdodGxpbmsgd2lsbCBmaXQgbmVhdGx5IGludG8KKyAqIGNhY2hlIGxpbmVzKS4KICAqLwogCiAjZGVmaW5lIEJMT0NLTEVOIDYyCiAjZGVmaW5lIENFTlRFUiAoKEJMT0NLTEVOIC0gMSkgLyAyKQogCiAvKiBBIGBkZXF1ZW9iamVjdGAgaXMgY29tcG9zZWQgb2YgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgYGJsb2NrYCBub2Rlcy4KLSAqIFRoaXMgbGlzdCBpcyBub3QgY2lyY3VsYXIgKHRoZSBsZWZ0bW9zdCBibG9jayBoYXMgbGVmdGxpbms9PU5VTEwsCi0gKiBhbmQgdGhlIHJpZ2h0bW9zdCBibG9jayBoYXMgcmlnaHRsaW5rPT1OVUxMKS4gIEEgZGVxdWUgZCdzIGZpcnN0Ci0gKiBlbGVtZW50IGlzIGF0IGQubGVmdGJsb2NrW2xlZnRpbmRleF0gYW5kIGl0cyBsYXN0IGVsZW1lbnQgaXMgYXQKLSAqIGQucmlnaHRibG9ja1tyaWdodGluZGV4XTsgbm90ZSB0aGF0LCB1bmxpa2UgYXMgZm9yIFB5dGhvbiBzbGljZQotICogaW5kaWNlcywgdGhlc2UgaW5kaWNlcyBhcmUgaW5jbHVzaXZlIG9uIGJvdGggZW5kcy4gIEJ5IGJlaW5nIGluY2x1c2l2ZQotICogb24gYm90aCBlbmRzLCBhbGdvcml0aG1zIGZvciBsZWZ0IGFuZCByaWdodCBvcGVyYXRpb25zIGJlY29tZQotICogc3ltbWV0cmljYWwgd2hpY2ggc2ltcGxpZmllcyB0aGUgZGVzaWduLgotICoKICAqIFRoZSBsaXN0IG9mIGJsb2NrcyBpcyBuZXZlciBlbXB0eSwgc28gZC5sZWZ0YmxvY2sgYW5kIGQucmlnaHRibG9jawotICogYXJlIG5ldmVyIGVxdWFsIHRvIE5VTEwuCisgKiBhcmUgbmV2ZXIgZXF1YWwgdG8gTlVMTC4gIFRoZSBsaXN0IGlzIG5vdCBjaXJjdWxhci4KKyAqCisgKiBBIGRlcXVlIGQncyBmaXJzdCBlbGVtZW50IGlzIGF0IGQubGVmdGJsb2NrW2xlZnRpbmRleF0KKyAqIGFuZCBpdHMgbGFzdCBlbGVtZW50IGlzIGF0IGQucmlnaHRibG9ja1tyaWdodGluZGV4XS4KKyAqIFVubGlrZSBQeXRob24gc2xpY2UgaW5kaWNlcywgdGhlc2UgaW5kaWNlcyBhcmUgaW5jbHVzaXZlCisgKiBvbiBib3RoIGVuZHMuICBUaGlzIG1ha2VzIHRoZSBhbGdvcml0aG1zIGZvciBsZWZ0IGFuZAorICogcmlnaHQgb3BlcmF0aW9ucyBtb3JlIHN5bW1ldHJpY2FsIGFuZCBzaW1wbGlmaWVzIHRoZSBkZXNpZ24uCiAgKgogICogVGhlIGluZGljZXMsIGQubGVmdGluZGV4IGFuZCBkLnJpZ2h0aW5kZXggYXJlIGFsd2F5cyBpbiB0aGUgcmFuZ2UKICAqICAgICAwIDw9IGluZGV4IDwgQkxPQ0tMRU4uCkBAIC00Nyw0MiArNDksNjAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgQkxPQ0sgewogICAgIHN0cnVjdCBCTE9DSyAqbGVmdGxpbms7Ci0gICAgc3RydWN0IEJMT0NLICpyaWdodGxpbms7CiAgICAgUHlPYmplY3QgKmRhdGFbQkxPQ0tMRU5dOworICAgIHN0cnVjdCBCTE9DSyAqcmlnaHRsaW5rOwogfSBibG9jazsKIAorLyogRm9yIGRlYnVnIGJ1aWxkcywgYWRkIGVycm9yIGNoZWNraW5nIHRvIHRyYWNrIHRoZSBlbmRwb2ludHMKKyAqIGluIHRoZSBjaGFpbiBvZiBsaW5rcy4gIFRoZSBnb2FsIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGxpbmsKKyAqIGFzc2lnbm1lbnRzIG9ubHkgdGFrZSBwbGFjZSBhdCBlbmRwb2ludHMgc28gdGhhdCBsaW5rcyBhbHJlYWR5CisgKiBpbiB1c2UgZG8gbm90IGdldCBvdmVyd3JpdHRlbi4KKyAqCisgKiBDSEVDS19FTkQgc2hvdWxkIGhhcHBlbiBiZWZvcmUgZWFjaCBhc3NpZ25tZW50IHRvIGEgYmxvY2sncyBsaW5rIGZpZWxkLgorICogTUFSS19FTkQgc2hvdWxkIGhhcHBlbiB3aGVuZXZlciBhIGxpbmsgZmllbGQgYmVjb21lcyBhIG5ldyBlbmRwb2ludC4KKyAqIFRoaXMgaGFwcGVucyB3aGVuIG5ldyBibG9ja3MgYXJlIGFkZGVkIG9yIHdoZW5ldmVyIGFuIGV4aXN0aW5nCisgKiBibG9jayBpcyBmcmVlZCBsZWF2aW5nIGFub3RoZXIgZXhpc3RpbmcgYmxvY2sgYXMgdGhlIG5ldyBlbmRwb2ludC4KKyAqLworCisjaWZuZGVmIE5ERUJVRworI2RlZmluZSBNQVJLX0VORChsaW5rKSAgbGluayA9IE5VTEw7CisjZGVmaW5lIENIRUNLX0VORChsaW5rKSBhc3NlcnQobGluayA9PSBOVUxMKTsKKyNkZWZpbmUgQ0hFQ0tfTk9UX0VORChsaW5rKSBhc3NlcnQobGluayAhPSBOVUxMKTsKKyNlbHNlCisjZGVmaW5lIE1BUktfRU5EKGxpbmspCisjZGVmaW5lIENIRUNLX0VORChsaW5rKQorI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCisjZW5kaWYKKworLyogQSBzaW1wbGUgZnJlZWxpc3Rpbmcgc2NoZW1lIGlzIHVzZWQgdG8gbWluaW1pemUgY2FsbHMgdG8gdGhlIG1lbW9yeQorICAgYWxsb2NhdG9yLiAgSXQgYWNjb21vZGF0ZXMgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBuZXcgYmxvY2tzIGFyZSBiZWluZworICAgYWRkZWQgYXQgYWJvdXQgdGhlIHNhbWUgcmF0ZSBhcyBvbGQgYmxvY2tzIGFyZSBiZWluZyBmcmVlZC4KKyAqLworCiAjZGVmaW5lIE1BWEZSRUVCTE9DS1MgMTAKIHN0YXRpYyBQeV9zc2l6ZV90IG51bWZyZWVibG9ja3MgPSAwOwogc3RhdGljIGJsb2NrICpmcmVlYmxvY2tzW01BWEZSRUVCTE9DS1NdOwogCiBzdGF0aWMgYmxvY2sgKgotbmV3YmxvY2soYmxvY2sgKmxlZnRsaW5rLCBibG9jayAqcmlnaHRsaW5rLCBQeV9zc2l6ZV90IGxlbikgeworbmV3YmxvY2soUHlfc3NpemVfdCBsZW4pIHsKICAgICBibG9jayAqYjsKLSAgICAvKiBUbyBwcmV2ZW50IGxlbiBmcm9tIG92ZXJmbG93aW5nIFBZX1NTSVpFX1RfTUFYIG9uIDY0LWJpdCBtYWNoaW5lcywgd2UKLSAgICAgKiByZWZ1c2UgdG8gYWxsb2NhdGUgbmV3IGJsb2NrcyBpZiB0aGUgY3VycmVudCBsZW4gaXMgZGFuZ2Vyb3VzbHkKLSAgICAgKiBjbG9zZS4gIFRoZXJlIGlzIHNvbWUgZXh0cmEgbWFyZ2luIHRvIHByZXZlbnQgc3B1cmlvdXMgYXJpdGhtZXRpYwotICAgICAqIG92ZXJmbG93cyBhdCB2YXJpb3VzIHBsYWNlcy4gIFRoZSBmb2xsb3dpbmcgY2hlY2sgZW5zdXJlcyB0aGF0Ci0gICAgICogdGhlIGJsb2NrcyBhbGxvY2F0ZWQgdG8gdGhlIGRlcXVlLCBpbiB0aGUgd29yc3QgY2FzZSwgY2FuIG9ubHkKLSAgICAgKiBoYXZlIFBZX1NTSVpFX1RfTUFYLTIgZW50cmllcyBpbiB0b3RhbC4KLSAgICAgKi8KKyAgICAvKiBUbyBwcmV2ZW50IGxlbiBmcm9tIG92ZXJmbG93aW5nIFBZX1NTSVpFX1RfTUFYLCB3ZSByZWZ1c2UgdG8KKyAgICAgKiBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LiAqLwogICAgIGlmIChsZW4gPj0gUFlfU1NJWkVfVF9NQVggLSAyKkJMT0NLTEVOKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBibG9ja3MgdG8gdGhlIGRlcXVlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAobnVtZnJlZWJsb2NrcykgewotICAgICAgICBudW1mcmVlYmxvY2tzIC09IDE7Ci0gICAgICAgIGIgPSBmcmVlYmxvY2tzW251bWZyZWVibG9ja3NdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGIgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKGJsb2NrKSk7Ci0gICAgICAgIGlmIChiID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBudW1mcmVlYmxvY2tzLS07CisgICAgICAgIHJldHVybiBmcmVlYmxvY2tzW251bWZyZWVibG9ja3NdOwogICAgIH0KLSAgICBiLT5sZWZ0bGluayA9IGxlZnRsaW5rOwotICAgIGItPnJpZ2h0bGluayA9IHJpZ2h0bGluazsKLSAgICByZXR1cm4gYjsKKyAgICBiID0gUHlNZW1fTWFsbG9jKHNpemVvZihibG9jaykpOworICAgIGlmIChiICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGI7CisgICAgfQorICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC05NywxNCArMTE3LDEzIEBACiB9CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3RfVkFSX0hFQUQKICAgICBibG9jayAqbGVmdGJsb2NrOwogICAgIGJsb2NrICpyaWdodGJsb2NrOwogICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OyAgICAgICAvKiBpbiByYW5nZShCTE9DS0xFTikgKi8KICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogaW4gcmFuZ2UoQkxPQ0tMRU4pICovCi0gICAgUHlfc3NpemVfdCBsZW47CisgICAgbG9uZyBzdGF0ZTsgICAgICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBpbmRpY2VzIG1vdmUgKi8KICAgICBQeV9zc2l6ZV90IG1heGxlbjsKLSAgICBsb25nIHN0YXRlOyAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBpbmRpY2VzIG1vdmUgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiB9IGRlcXVlb2JqZWN0OwogCkBAIC0xMTgsOSArMTM3LDkgQEAKICAqLwogCiAjZGVmaW5lIFRSSU0oZCwgcG9wZnVuY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChkLT5tYXhsZW4gIT0gLTEgJiYgZC0+bGVuID4gZC0+bWF4bGVuKSB7ICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZC0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZCkgPiBkLT5tYXhsZW4pIHsgICAgICAgXAogICAgICAgICBQeU9iamVjdCAqcnYgPSBwb3BmdW5jdGlvbihkLCBOVUxMKTsgICAgICAgICAgICAgICAgXAotICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCAgJiYgIGQtPmxlbiA8PSBkLT5tYXhsZW4pOyAgICAgICAgXAorICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCAgJiYgIFB5X1NJWkUoZCkgPD0gZC0+bWF4bGVuKTsgICAgXAogICAgICAgICBQeV9ERUNSRUYocnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIApAQCAtMTM3LDE4ICsxNTYsMjAgQEAKICAgICBpZiAoZGVxdWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBiID0gbmV3YmxvY2soTlVMTCwgTlVMTCwgMCk7CisgICAgYiA9IG5ld2Jsb2NrKDApOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGRlcXVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIE1BUktfRU5EKGItPmxlZnRsaW5rKTsKKyAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOwogCiAgICAgYXNzZXJ0KEJMT0NLTEVOID49IDIpOwogICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOwogICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKLSAgICBkZXF1ZS0+bGVuID0gMDsKKyAgICBQeV9TSVpFKGRlcXVlKSA9IDA7CiAgICAgZGVxdWUtPnN0YXRlID0gMDsKICAgICBkZXF1ZS0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIGRlcXVlLT5tYXhsZW4gPSAtMTsKQEAgLTE2MiwxNyArMTgzLDE3IEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgYmxvY2sgKnByZXZibG9jazsKIAotICAgIGlmIChkZXF1ZS0+bGVuID09IDApIHsKKyAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpdGVtID0gZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdOwogICAgIGRlcXVlLT5yaWdodGluZGV4LS07Ci0gICAgZGVxdWUtPmxlbi0tOworICAgIFB5X1NJWkUoZGVxdWUpLS07CiAgICAgZGVxdWUtPnN0YXRlKys7CiAKICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gLTEpIHsKLSAgICAgICAgaWYgKGRlcXVlLT5sZW4gPT0gMCkgeworICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7CiAgICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KQEAgLTE4Miw3ICsyMDMsOCBAQAogICAgICAgICAgICAgcHJldmJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2stPmxlZnRsaW5rOwogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOwogICAgICAgICAgICAgZnJlZWJsb2NrKGRlcXVlLT5yaWdodGJsb2NrKTsKLSAgICAgICAgICAgIHByZXZibG9jay0+cmlnaHRsaW5rID0gTlVMTDsKKyAgICAgICAgICAgIENIRUNLX05PVF9FTkQocHJldmJsb2NrKTsKKyAgICAgICAgICAgIE1BUktfRU5EKHByZXZibG9jay0+cmlnaHRsaW5rKTsKICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrID0gcHJldmJsb2NrOwogICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDE7CiAgICAgICAgIH0KQEAgLTE5OCwxOCArMjIwLDE4IEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgYmxvY2sgKnByZXZibG9jazsKIAotICAgIGlmIChkZXF1ZS0+bGVuID09IDApIHsKKyAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBOVUxMKTsKICAgICBpdGVtID0gZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XTsKICAgICBkZXF1ZS0+bGVmdGluZGV4Kys7Ci0gICAgZGVxdWUtPmxlbi0tOworICAgIFB5X1NJWkUoZGVxdWUpLS07CiAgICAgZGVxdWUtPnN0YXRlKys7CiAKICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSBCTE9DS0xFTikgewotICAgICAgICBpZiAoZGVxdWUtPmxlbiA9PSAwKSB7CisgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7CiAgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CiAgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA9PSBkZXF1ZS0+cmlnaHRpbmRleCsxKTsKICAgICAgICAgICAgIC8qIHJlLWNlbnRlciBpbnN0ZWFkIG9mIGZyZWVpbmcgYSBibG9jayAqLwpAQCAtMjE5LDggKzI0MSw4IEBACiAgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBkZXF1ZS0+cmlnaHRibG9jayk7CiAgICAgICAgICAgICBwcmV2YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrLT5yaWdodGxpbms7CiAgICAgICAgICAgICBmcmVlYmxvY2soZGVxdWUtPmxlZnRibG9jayk7Ci0gICAgICAgICAgICBhc3NlcnQocHJldmJsb2NrICE9IE5VTEwpOwotICAgICAgICAgICAgcHJldmJsb2NrLT5sZWZ0bGluayA9IE5VTEw7CisgICAgICAgICAgICBDSEVDS19OT1RfRU5EKHByZXZibG9jayk7CisgICAgICAgICAgICBNQVJLX0VORChwcmV2YmxvY2stPmxlZnRsaW5rKTsKICAgICAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBwcmV2YmxvY2s7CiAgICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gMDsKICAgICAgICAgfQpAQCAtMjM1LDE2ICsyNTcsMTggQEAKIHsKICAgICBkZXF1ZS0+c3RhdGUrKzsKICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4tMSkgewotICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKGRlcXVlLT5yaWdodGJsb2NrLCBOVUxMLCBkZXF1ZS0+bGVuKTsKKyAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CiAgICAgICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNzZXJ0KGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmsgPT0gTlVMTCk7CisgICAgICAgIGItPmxlZnRsaW5rID0gZGVxdWUtPnJpZ2h0YmxvY2s7CisgICAgICAgIENIRUNLX0VORChkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rKTsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7CiAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICAgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAtMTsKICAgICB9CiAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgIGRlcXVlLT5sZW4rKzsKKyAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKICAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3BsZWZ0KTsKQEAgLTI1OCwxNiArMjgyLDE4IEBACiB7CiAgICAgZGVxdWUtPnN0YXRlKys7CiAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gMCkgewotICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKE5VTEwsIGRlcXVlLT5sZWZ0YmxvY2ssIGRlcXVlLT5sZW4pOworICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jay0+bGVmdGxpbmsgPT0gTlVMTCk7CisgICAgICAgIGItPnJpZ2h0bGluayA9IGRlcXVlLT5sZWZ0YmxvY2s7CisgICAgICAgIENIRUNLX0VORChkZXF1ZS0+bGVmdGJsb2NrLT5sZWZ0bGluayk7CiAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rID0gYjsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jayA9IGI7CisgICAgICAgIE1BUktfRU5EKGItPmxlZnRsaW5rKTsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IEJMT0NLTEVOOwogICAgIH0KICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgZGVxdWUtPmxlbisrOworICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgIGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF0gPSBpdGVtOwogICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcCk7CkBAIC0zMDksNiArMzM1LDE0IEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgLyogU3BhY2Ugc2F2aW5nIGhldXJpc3RpYy4gIFN0YXJ0IGZpbGxpbmcgZnJvbSB0aGUgbGVmdCAqLworICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7CisgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKKyAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7CisgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSAxOworICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IDA7CisgICAgfQorCiAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTksMTkgKzM1MywyMCBAQAogICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKICAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOLTEpIHsKLSAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soZGVxdWUtPnJpZ2h0YmxvY2ssIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcXVlLT5sZW4pOworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9PSBOVUxMKTsKKyAgICAgICAgICAgIGItPmxlZnRsaW5rID0gZGVxdWUtPnJpZ2h0YmxvY2s7CisgICAgICAgICAgICBDSEVDS19FTkQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayk7CiAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rID0gYjsKICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICAgICAgICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CiAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IC0xOwogICAgICAgICB9Ci0gICAgICAgIGRlcXVlLT5sZW4rKzsKKyAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKICAgICAgICAgVFJJTShkZXF1ZSwgZGVxdWVfcG9wbGVmdCk7CkBAIC0zNjEsNiArMzk2LDE0IEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgLyogU3BhY2Ugc2F2aW5nIGhldXJpc3RpYy4gIFN0YXJ0IGZpbGxpbmcgZnJvbSB0aGUgcmlnaHQgKi8KKyAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgeworICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CisgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID09IGRlcXVlLT5yaWdodGluZGV4KzEpOworICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQkxPQ0tMRU4gLSAxOworICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMjsKKyAgICB9CisKICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM3MSwxOSArNDE0LDIwIEBACiAgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIGRlcXVlLT5zdGF0ZSsrOwogICAgICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSAwKSB7Ci0gICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKE5VTEwsIGRlcXVlLT5sZWZ0YmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcXVlLT5sZW4pOworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jay0+bGVmdGxpbmsgPT0gTlVMTCk7CisgICAgICAgICAgICBiLT5yaWdodGxpbmsgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgICAgICAgICAgQ0hFQ0tfRU5EKGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rKTsKICAgICAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rID0gYjsKICAgICAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOworICAgICAgICAgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOwogICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IEJMT0NLTEVOOwogICAgICAgICB9Ci0gICAgICAgIGRlcXVlLT5sZW4rKzsKKyAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKICAgICAgICAgVFJJTShkZXF1ZSwgZGVxdWVfcG9wKTsKQEAgLTQxMyw3ICs0NTcsMTMgQEAKIHN0YXRpYyBpbnQKIF9kZXF1ZV9yb3RhdGUoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCiB7Ci0gICAgUHlfc3NpemVfdCBtLCBsZW49ZGVxdWUtPmxlbiwgaGFsZmxlbj1sZW4+PjE7CisgICAgYmxvY2sgKmIgPSBOVUxMOworICAgIGJsb2NrICpsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIGJsb2NrICpyaWdodGJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2s7CisgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleCA9IGRlcXVlLT5yaWdodGluZGV4OworICAgIFB5X3NzaXplX3QgbGVuPVB5X1NJWkUoZGVxdWUpLCBoYWxmbGVuPWxlbj4+MTsKKyAgICBpbnQgcnYgPSAtMTsKIAogICAgIGlmIChsZW4gPD0gMSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MjksNzYgKzQ3OSwxMDMgQEAKIAogICAgIGRlcXVlLT5zdGF0ZSsrOwogICAgIHdoaWxlIChuID4gMCkgewotICAgICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSAwKSB7Ci0gICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKE5VTEwsIGRlcXVlLT5sZWZ0YmxvY2ssIGxlbik7Ci0gICAgICAgICAgICBpZiAoYiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrLT5sZWZ0bGluayA9PSBOVUxMKTsKLSAgICAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rID0gYjsKLSAgICAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOwotICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IEJMT0NLTEVOOworICAgICAgICBpZiAobGVmdGluZGV4ID09IDApIHsKKyAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBiID0gbmV3YmxvY2sobGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiLT5yaWdodGxpbmsgPSBsZWZ0YmxvY2s7CisgICAgICAgICAgICBDSEVDS19FTkQobGVmdGJsb2NrLT5sZWZ0bGluayk7CisgICAgICAgICAgICBsZWZ0YmxvY2stPmxlZnRsaW5rID0gYjsKKyAgICAgICAgICAgIGxlZnRibG9jayA9IGI7CisgICAgICAgICAgICBNQVJLX0VORChiLT5sZWZ0bGluayk7CisgICAgICAgICAgICBsZWZ0aW5kZXggPSBCTE9DS0xFTjsKKyAgICAgICAgICAgIGIgPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID4gMCk7CisgICAgICAgIGFzc2VydChsZWZ0aW5kZXggPiAwKTsKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKipzcmMsICoqZGVzdDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbSA9IG47CiAKLSAgICAgICAgbSA9IG47Ci0gICAgICAgIGlmIChtID4gZGVxdWUtPnJpZ2h0aW5kZXggKyAxKQotICAgICAgICAgICAgbSA9IGRlcXVlLT5yaWdodGluZGV4ICsgMTsKLSAgICAgICAgaWYgKG0gPiBkZXF1ZS0+bGVmdGluZGV4KQotICAgICAgICAgICAgbSA9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgICAgIGFzc2VydCAobSA+IDAgJiYgbSA8PSBsZW4pOwotICAgICAgICBtZW1jcHkoJmRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleCAtIG1dLAotICAgICAgICAgICAgICAgJmRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4ICsgMSAtIG1dLAotICAgICAgICAgICAgICAgbSAqIHNpemVvZihQeU9iamVjdCAqKSk7Ci0gICAgICAgIGRlcXVlLT5yaWdodGluZGV4IC09IG07Ci0gICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggLT0gbTsKLSAgICAgICAgbiAtPSBtOwotCi0gICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSAtMSkgewotICAgICAgICAgICAgYmxvY2sgKnByZXZibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrLT5sZWZ0bGluazsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+cmlnaHRibG9jayAhPSBOVUxMKTsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrICE9IGRlcXVlLT5yaWdodGJsb2NrKTsKLSAgICAgICAgICAgIGZyZWVibG9jayhkZXF1ZS0+cmlnaHRibG9jayk7Ci0gICAgICAgICAgICBwcmV2YmxvY2stPnJpZ2h0bGluayA9IE5VTEw7Ci0gICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jayA9IHByZXZibG9jazsKLSAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQkxPQ0tMRU4gLSAxOworICAgICAgICAgICAgaWYgKG0gPiByaWdodGluZGV4ICsgMSkKKyAgICAgICAgICAgICAgICBtID0gcmlnaHRpbmRleCArIDE7CisgICAgICAgICAgICBpZiAobSA+IGxlZnRpbmRleCkKKyAgICAgICAgICAgICAgICBtID0gbGVmdGluZGV4OworICAgICAgICAgICAgYXNzZXJ0IChtID4gMCAmJiBtIDw9IGxlbik7CisgICAgICAgICAgICBzcmMgPSAmcmlnaHRibG9jay0+ZGF0YVtyaWdodGluZGV4XTsKKyAgICAgICAgICAgIGRlc3QgPSAmbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleCAtIDFdOworICAgICAgICAgICAgcmlnaHRpbmRleCAtPSBtOworICAgICAgICAgICAgbGVmdGluZGV4IC09IG07CisgICAgICAgICAgICBuIC09IG07CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgKihkZXN0LS0pID0gKihzcmMtLSk7CisgICAgICAgICAgICB9IHdoaWxlICgtLW0pOworICAgICAgICB9CisgICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CisgICAgICAgICAgICBhc3NlcnQobGVmdGJsb2NrICE9IHJpZ2h0YmxvY2spOworICAgICAgICAgICAgYXNzZXJ0KGIgPT0gTlVMTCk7CisgICAgICAgICAgICBiID0gcmlnaHRibG9jazsKKyAgICAgICAgICAgIENIRUNLX05PVF9FTkQocmlnaHRibG9jay0+bGVmdGxpbmspOworICAgICAgICAgICAgcmlnaHRibG9jayA9IHJpZ2h0YmxvY2stPmxlZnRsaW5rOworICAgICAgICAgICAgTUFSS19FTkQocmlnaHRibG9jay0+cmlnaHRsaW5rKTsKKyAgICAgICAgICAgIHJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDE7CiAgICAgICAgIH0KICAgICB9CiAgICAgd2hpbGUgKG4gPCAwKSB7Ci0gICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKLSAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soZGVxdWUtPnJpZ2h0YmxvY2ssIE5VTEwsIGxlbik7Ci0gICAgICAgICAgICBpZiAoYiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rID09IE5VTEwpOwotICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7Ci0gICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jayA9IGI7Ci0gICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IC0xOworICAgICAgICBpZiAocmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKKyAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBiID0gbmV3YmxvY2sobGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiLT5sZWZ0bGluayA9IHJpZ2h0YmxvY2s7CisgICAgICAgICAgICBDSEVDS19FTkQocmlnaHRibG9jay0+cmlnaHRsaW5rKTsKKyAgICAgICAgICAgIHJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7CisgICAgICAgICAgICByaWdodGJsb2NrID0gYjsKKyAgICAgICAgICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgICAgICAgICByaWdodGluZGV4ID0gLTE7CisgICAgICAgICAgICBiID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBhc3NlcnQgKGRlcXVlLT5yaWdodGluZGV4IDwgQkxPQ0tMRU4gLSAxKTsKKyAgICAgICAgYXNzZXJ0IChyaWdodGluZGV4IDwgQkxPQ0tMRU4gLSAxKTsKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKipzcmMsICoqZGVzdDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbSA9IC1uOwogCi0gICAgICAgIG0gPSAtbjsKLSAgICAgICAgaWYgKG0gPiBCTE9DS0xFTiAtIGRlcXVlLT5sZWZ0aW5kZXgpCi0gICAgICAgICAgICBtID0gQkxPQ0tMRU4gLSBkZXF1ZS0+bGVmdGluZGV4OwotICAgICAgICBpZiAobSA+IEJMT0NLTEVOIC0gMSAtIGRlcXVlLT5yaWdodGluZGV4KQotICAgICAgICAgICAgbSA9IEJMT0NLTEVOIC0gMSAtIGRlcXVlLT5yaWdodGluZGV4OwotICAgICAgICBhc3NlcnQgKG0gPiAwICYmIG0gPD0gbGVuKTsKLSAgICAgICAgbWVtY3B5KCZkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleCArIDFdLAotICAgICAgICAgICAgICAgJmRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF0sCi0gICAgICAgICAgICAgICBtICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKLSAgICAgICAgZGVxdWUtPmxlZnRpbmRleCArPSBtOwotICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCArPSBtOwotICAgICAgICBuICs9IG07Ci0KLSAgICAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gQkxPQ0tMRU4pIHsKLSAgICAgICAgICAgIGJsb2NrICpuZXh0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrLT5yaWdodGxpbms7Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBkZXF1ZS0+cmlnaHRibG9jayk7Ci0gICAgICAgICAgICBmcmVlYmxvY2soZGVxdWUtPmxlZnRibG9jayk7Ci0gICAgICAgICAgICBhc3NlcnQobmV4dGJsb2NrICE9IE5VTEwpOwotICAgICAgICAgICAgbmV4dGJsb2NrLT5sZWZ0bGluayA9IE5VTEw7Ci0gICAgICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrID0gbmV4dGJsb2NrOwotICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IDA7CisgICAgICAgICAgICBpZiAobSA+IEJMT0NLTEVOIC0gbGVmdGluZGV4KQorICAgICAgICAgICAgICAgIG0gPSBCTE9DS0xFTiAtIGxlZnRpbmRleDsKKyAgICAgICAgICAgIGlmIChtID4gQkxPQ0tMRU4gLSAxIC0gcmlnaHRpbmRleCkKKyAgICAgICAgICAgICAgICBtID0gQkxPQ0tMRU4gLSAxIC0gcmlnaHRpbmRleDsKKyAgICAgICAgICAgIGFzc2VydCAobSA+IDAgJiYgbSA8PSBsZW4pOworICAgICAgICAgICAgc3JjID0gJmxlZnRibG9jay0+ZGF0YVtsZWZ0aW5kZXhdOworICAgICAgICAgICAgZGVzdCA9ICZyaWdodGJsb2NrLT5kYXRhW3JpZ2h0aW5kZXggKyAxXTsKKyAgICAgICAgICAgIGxlZnRpbmRleCArPSBtOworICAgICAgICAgICAgcmlnaHRpbmRleCArPSBtOworICAgICAgICAgICAgbiArPSBtOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICooZGVzdCsrKSA9ICooc3JjKyspOworICAgICAgICAgICAgfSB3aGlsZSAoLS1tKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVmdGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBhc3NlcnQobGVmdGJsb2NrICE9IHJpZ2h0YmxvY2spOworICAgICAgICAgICAgYXNzZXJ0KGIgPT0gTlVMTCk7CisgICAgICAgICAgICBiID0gbGVmdGJsb2NrOworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7CisgICAgICAgICAgICBsZWZ0YmxvY2sgPSBsZWZ0YmxvY2stPnJpZ2h0bGluazsKKyAgICAgICAgICAgIE1BUktfRU5EKGxlZnRibG9jay0+bGVmdGxpbmspOworICAgICAgICAgICAgbGVmdGluZGV4ID0gMDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBydiA9IDA7Citkb25lOgorICAgIGlmIChiICE9IE5VTEwpCisgICAgICAgIGZyZWVibG9jayhiKTsKKyAgICBkZXF1ZS0+bGVmdGJsb2NrID0gbGVmdGJsb2NrOworICAgIGRlcXVlLT5yaWdodGJsb2NrID0gcmlnaHRibG9jazsKKyAgICBkZXF1ZS0+bGVmdGluZGV4ID0gbGVmdGluZGV4OworICAgIGRlcXVlLT5yaWdodGluZGV4ID0gcmlnaHRpbmRleDsKKworICAgIHJldHVybiBydjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUyMywxMyArNjAwLDE1IEBACiAgICAgYmxvY2sgKnJpZ2h0YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICBQeV9zc2l6ZV90IGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCByaWdodGluZGV4ID0gZGVxdWUtPnJpZ2h0aW5kZXg7Ci0gICAgUHlfc3NpemVfdCBuID0gKGRlcXVlLT5sZW4pLzI7CisgICAgUHlfc3NpemVfdCBuID0gKFB5X1NJWkUoZGVxdWUpKS8yOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqdG1wOwogCiAgICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKICAgICAgICAgLyogVmFsaWRhdGUgdGhhdCBwb2ludGVycyBoYXZlbid0IG1ldCBpbiB0aGUgbWlkZGxlICovCiAgICAgICAgIGFzc2VydChsZWZ0YmxvY2sgIT0gcmlnaHRibG9jayB8fCBsZWZ0aW5kZXggPCByaWdodGluZGV4KTsKKyAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2spOworICAgICAgICBDSEVDS19OT1RfRU5EKHJpZ2h0YmxvY2spOwogCiAgICAgICAgIC8qIFN3YXAgKi8KICAgICAgICAgdG1wID0gbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CkBAIC01MzksOCArNjE4LDYgQEAKICAgICAgICAgLyogQWR2YW5jZSBsZWZ0IGJsb2NrL2luZGV4IHBhaXIgKi8KICAgICAgICAgbGVmdGluZGV4Kys7CiAgICAgICAgIGlmIChsZWZ0aW5kZXggPT0gQkxPQ0tMRU4pIHsKLSAgICAgICAgICAgIGlmIChsZWZ0YmxvY2stPnJpZ2h0bGluayA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGVmdGJsb2NrID0gbGVmdGJsb2NrLT5yaWdodGxpbms7CiAgICAgICAgICAgICBsZWZ0aW5kZXggPSAwOwogICAgICAgICB9CkBAIC01NDgsOCArNjI1LDYgQEAKICAgICAgICAgLyogU3RlcCBiYWNrd2FyZHMgd2l0aCB0aGUgcmlnaHQgYmxvY2svaW5kZXggcGFpciAqLwogICAgICAgICByaWdodGluZGV4LS07CiAgICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7Ci0gICAgICAgICAgICBpZiAocmlnaHRibG9jay0+bGVmdGxpbmsgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHJpZ2h0YmxvY2sgPSByaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIHJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDE7CiAgICAgICAgIH0KQEAgLTU2Myw5ICs2MzgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2NvdW50KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKnYpCiB7Ci0gICAgYmxvY2sgKmxlZnRibG9jayA9IGRlcXVlLT5sZWZ0YmxvY2s7Ci0gICAgUHlfc3NpemVfdCBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwotICAgIFB5X3NzaXplX3QgbiA9IGRlcXVlLT5sZW47CisgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBQeU9iamVjdCAqaXRlbTsKQEAgLTU3Myw3ICs2NDgsOCBAQAogICAgIGludCBjbXA7CiAKICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewotICAgICAgICBpdGVtID0gbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CisgICAgICAgIENIRUNLX05PVF9FTkQoYik7CisgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKICAgICAgICAgaWYgKGNtcCA+IDApCiAgICAgICAgICAgICBjb3VudCsrOwpAQCAtNTg3LDEyICs2NjMsMTAgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIEFkdmFuY2UgbGVmdCBibG9jay9pbmRleCBwYWlyICovCi0gICAgICAgIGxlZnRpbmRleCsrOwotICAgICAgICBpZiAobGVmdGluZGV4ID09IEJMT0NLTEVOKSB7Ci0gICAgICAgICAgICBpZiAobGVmdGJsb2NrLT5yaWdodGxpbmsgPT0gTlVMTCkgIC8qIGNhbiBvY2N1ciB3aGVuIGk9PW4tMSAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgbGVmdGJsb2NrID0gbGVmdGJsb2NrLT5yaWdodGxpbms7Ci0gICAgICAgICAgICBsZWZ0aW5kZXggPSAwOworICAgICAgICBpbmRleCsrOworICAgICAgICBpZiAoaW5kZXggPT0gQkxPQ0tMRU4pIHsKKyAgICAgICAgICAgIGIgPSBiLT5yaWdodGxpbms7CisgICAgICAgICAgICBpbmRleCA9IDA7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChjb3VudCk7CkBAIC02MDQsMTkgKzY3OCwxOSBAQAogc3RhdGljIFB5X3NzaXplX3QKIGRlcXVlX2xlbihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgcmV0dXJuIGRlcXVlLT5sZW47CisgICAgcmV0dXJuIFB5X1NJWkUoZGVxdWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfcmVtb3ZlKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5X3NzaXplX3QgaSwgbj1kZXF1ZS0+bGVuOworICAgIFB5X3NzaXplX3QgaSwgbj1QeV9TSVpFKGRlcXVlKTsKIAogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XTsKICAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2YWx1ZSwgUHlfRVEpOwogCi0gICAgICAgIGlmIChkZXF1ZS0+bGVuICE9IG4pIHsKKyAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpICE9IG4pIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICJkZXF1ZSBtdXRhdGVkIGR1cmluZyByZW1vdmUoKS4iKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjQ3LDE0ICs3MjEsMTQgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlbTsKIAotICAgIHdoaWxlIChkZXF1ZS0+bGVuKSB7CisgICAgd2hpbGUgKFB5X1NJWkUoZGVxdWUpKSB7CiAgICAgICAgIGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOwogICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICB9CiAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2sgJiYKICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCAtIDEgPT0gZGVxdWUtPnJpZ2h0aW5kZXggJiYKLSAgICAgICAgICAgZGVxdWUtPmxlbiA9PSAwKTsKKyAgICAgICAgICAgUHlfU0laRShkZXF1ZSkgPT0gMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC02NjQsNyArNzM4LDcgQEAKICAgICBQeU9iamVjdCAqaXRlbTsKICAgICBQeV9zc2l6ZV90IG4sIGluZGV4PWk7CiAKLSAgICBpZiAoaSA8IDAgfHwgaSA+PSBkZXF1ZS0+bGVuKSB7CisgICAgaWYgKGkgPCAwIHx8IGkgPj0gUHlfU0laRShkZXF1ZSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjczLDE5ICs3NDcsMTkgQEAKICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgIGkgPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgICAgICBiID0gZGVxdWUtPmxlZnRibG9jazsKLSAgICB9IGVsc2UgaWYgKGkgPT0gZGVxdWUtPmxlbiAtIDEpIHsKKyAgICB9IGVsc2UgaWYgKGkgPT0gUHlfU0laRShkZXF1ZSkgLSAxKSB7CiAgICAgICAgIGkgPSBkZXF1ZS0+cmlnaHRpbmRleDsKICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGkgKz0gZGVxdWUtPmxlZnRpbmRleDsKICAgICAgICAgbiA9IGkgLyBCTE9DS0xFTjsKICAgICAgICAgaSAlPSBCTE9DS0xFTjsKLSAgICAgICAgaWYgKGluZGV4IDwgKGRlcXVlLT5sZW4gPj4gMSkpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgKFB5X1NJWkUoZGVxdWUpID4+IDEpKSB7CiAgICAgICAgICAgICBiID0gZGVxdWUtPmxlZnRibG9jazsKICAgICAgICAgICAgIHdoaWxlIChuLS0pCiAgICAgICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG4gPSAoZGVxdWUtPmxlZnRpbmRleCArIGRlcXVlLT5sZW4gLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgICAgIG4gPSAoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkgLyBCTE9DS0xFTiAtIG47CiAgICAgICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgICAgICB3aGlsZSAobi0tKQogICAgICAgICAgICAgICAgIGIgPSBiLT5sZWZ0bGluazsKQEAgLTcwOCw3ICs3ODIsNyBAQAogewogICAgIFB5T2JqZWN0ICppdGVtOwogCi0gICAgYXNzZXJ0IChpID49IDAgJiYgaSA8IGRlcXVlLT5sZW4pOworICAgIGFzc2VydCAoaSA+PSAwICYmIGkgPCBQeV9TSVpFKGRlcXVlKSk7CiAgICAgaWYgKF9kZXF1ZV9yb3RhdGUoZGVxdWUsIC1pKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC03MjQsNyArNzk4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOwogICAgIGJsb2NrICpiOwotICAgIFB5X3NzaXplX3QgbiwgbGVuPWRlcXVlLT5sZW4sIGhhbGZsZW49KGxlbisxKT4+MSwgaW5kZXg9aTsKKyAgICBQeV9zc2l6ZV90IG4sIGxlbj1QeV9TSVpFKGRlcXVlKSwgaGFsZmxlbj0obGVuKzEpPj4xLCBpbmRleD1pOwogCiAgICAgaWYgKGkgPCAwIHx8IGkgPj0gbGVuKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLApAQCAtNzg3LDE3ICs4NjEsMTcgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIFB5X3NzaXplX3QgaW5kZXhsbyA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAKLSAgICBmb3IgKGIgPSBkZXF1ZS0+bGVmdGJsb2NrOyBiICE9IE5VTEw7IGIgPSBiLT5yaWdodGxpbmspIHsKLSAgICAgICAgY29uc3QgUHlfc3NpemVfdCBpbmRleGhpID0gYiA9PSBkZXF1ZS0+cmlnaHRibG9jayA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA6Ci0gICAgICAgICAgICAgICAgICAgICBCTE9DS0xFTiAtIDE7Ci0KLSAgICAgICAgZm9yIChpbmRleCA9IGluZGV4bG87IGluZGV4IDw9IGluZGV4aGk7ICsraW5kZXgpIHsKKyAgICBmb3IgKGIgPSBkZXF1ZS0+bGVmdGJsb2NrOyBiICE9IGRlcXVlLT5yaWdodGJsb2NrOyBiID0gYi0+cmlnaHRsaW5rKSB7CisgICAgICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8IEJMT0NLTEVOIDsgaW5kZXgrKykgewogICAgICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICAgICAgUHlfVklTSVQoaXRlbSk7CiAgICAgICAgIH0KICAgICAgICAgaW5kZXhsbyA9IDA7CiAgICAgfQorICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8PSBkZXF1ZS0+cmlnaHRpbmRleDsgaW5kZXgrKykgeworICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CisgICAgICAgIFB5X1ZJU0lUKGl0ZW0pOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtODg3LDggKzk2MSw4IEBACiAgICAgfQogCiAgICAgLyogU2hvcnRjdXRzICovCi0gICAgdnMgPSAoKGRlcXVlb2JqZWN0ICopdiktPmxlbjsKLSAgICB3cyA9ICgoZGVxdWVvYmplY3QgKil3KS0+bGVuOworICAgIHZzID0gUHlfU0laRSgoZGVxdWVvYmplY3QgKil2KTsKKyAgICB3cyA9IFB5X1NJWkUoKGRlcXVlb2JqZWN0ICopdyk7CiAgICAgaWYgKG9wID09IFB5X0VRKSB7CiAgICAgICAgIGlmICh2ID09IHcpCiAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKQEAgLTk4OSw4ICsxMDYzLDggQEAKICAgICBQeV9zc2l6ZV90IGJsb2NrczsKIAogICAgIHJlcyA9IHNpemVvZihkZXF1ZW9iamVjdCk7Ci0gICAgYmxvY2tzID0gKGRlcXVlLT5sZWZ0aW5kZXggKyBkZXF1ZS0+bGVuICsgQkxPQ0tMRU4gLSAxKSAvIEJMT0NLTEVOOwotICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ICsgZGVxdWUtPmxlbiAtIDEgPT0KKyAgICBibG9ja3MgPSAoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpICsgQkxPQ0tMRU4gLSAxKSAvIEJMT0NLTEVOOworICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxID09CiAgICAgICAgICAgIChibG9ja3MgLSAxKSAqIEJMT0NLTEVOICsgZGVxdWUtPnJpZ2h0aW5kZXgpOwogICAgIHJlcyArPSBibG9ja3MgKiBzaXplb2YoYmxvY2spOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKQEAgLTExNDMsNyArMTIxNyw3IEBACiAgICAgUHlfSU5DUkVGKGRlcXVlKTsKICAgICBpdC0+ZGVxdWUgPSBkZXF1ZTsKICAgICBpdC0+c3RhdGUgPSBkZXF1ZS0+c3RhdGU7Ci0gICAgaXQtPmNvdW50ZXIgPSBkZXF1ZS0+bGVuOworICAgIGl0LT5jb3VudGVyID0gUHlfU0laRShkZXF1ZSk7CiAgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KQEAgLTExODIsNyArMTI1Niw3IEBACiAgICAgaXQtPmluZGV4Kys7CiAgICAgaXQtPmNvdW50ZXItLTsKICAgICBpZiAoaXQtPmluZGV4ID09IEJMT0NLTEVOICYmIGl0LT5jb3VudGVyID4gMCkgewotICAgICAgICBhc3NlcnQgKGl0LT5iLT5yaWdodGxpbmsgIT0gTlVMTCk7CisgICAgICAgIENIRUNLX05PVF9FTkQoaXQtPmItPnJpZ2h0bGluayk7CiAgICAgICAgIGl0LT5iID0gaXQtPmItPnJpZ2h0bGluazsKICAgICAgICAgaXQtPmluZGV4ID0gMDsKICAgICB9CkBAIC0xMjMwLDcgKzEzMDQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlaXRlcl9yZWR1Y2UoZGVxdWVpdGVyb2JqZWN0ICppdCkKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGl0KSwgaXQtPmRlcXVlLCBpdC0+ZGVxdWUtPmxlbiAtIGl0LT5jb3VudGVyKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGl0KSwgaXQtPmRlcXVlLCBQeV9TSVpFKGl0LT5kZXF1ZSkgLSBpdC0+Y291bnRlcik7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBkZXF1ZWl0ZXJfbWV0aG9kc1tdID0gewpAQCAtMTI5OSw3ICsxMzczLDcgQEAKICAgICBQeV9JTkNSRUYoZGVxdWUpOwogICAgIGl0LT5kZXF1ZSA9IGRlcXVlOwogICAgIGl0LT5zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKLSAgICBpdC0+Y291bnRlciA9IGRlcXVlLT5sZW47CisgICAgaXQtPmNvdW50ZXIgPSBQeV9TSVpFKGRlcXVlKTsKICAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQpAQCAtMTMyNCw3ICsxMzk4LDcgQEAKICAgICBpdC0+aW5kZXgtLTsKICAgICBpdC0+Y291bnRlci0tOwogICAgIGlmIChpdC0+aW5kZXggPT0gLTEgJiYgaXQtPmNvdW50ZXIgPiAwKSB7Ci0gICAgICAgIGFzc2VydCAoaXQtPmItPmxlZnRsaW5rICE9IE5VTEwpOworICAgICAgICBDSEVDS19OT1RfRU5EKGl0LT5iLT5sZWZ0bGluayk7CiAgICAgICAgIGl0LT5iID0gaXQtPmItPmxlZnRsaW5rOwogICAgICAgICBpdC0+aW5kZXggPSBCTE9DS0xFTiAtIDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA0OGE1Y2Y4Li4yMmFjMjY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtNTEsNyArNTEsNyBAQAogdHlwZWRlZiBlbnVtIHsKICAgICBTVEFSVF9SRUNPUkQsIFNUQVJUX0ZJRUxELCBFU0NBUEVEX0NIQVIsIElOX0ZJRUxELAogICAgIElOX1FVT1RFRF9GSUVMRCwgRVNDQVBFX0lOX1FVT1RFRF9GSUVMRCwgUVVPVEVfSU5fUVVPVEVEX0ZJRUxELAotICAgIEVBVF9DUk5MCisgICAgRUFUX0NSTkwsQUZURVJfRVNDQVBFRF9DUk5MCiB9IFBhcnNlclN0YXRlOwogCiB0eXBlZGVmIGVudW0gewpAQCAtNjQ0LDYgKzY0NCwxMiBAQAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVNDQVBFRF9DSEFSOgorICAgICAgICBpZiAoYyA9PSAnXG4nIHx8IGM9PSdccicpIHsKKyAgICAgICAgICAgIGlmIChwYXJzZV9hZGRfY2hhcihzZWxmLCBjKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgc2VsZi0+c3RhdGUgPSBBRlRFUl9FU0NBUEVEX0NSTkw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAoYyA9PSAnXDAnKQogICAgICAgICAgICAgYyA9ICdcbic7CiAgICAgICAgIGlmIChwYXJzZV9hZGRfY2hhcihzZWxmLCBjKSA8IDApCkBAIC02NTEsNiArNjU3LDExIEBACiAgICAgICAgIHNlbGYtPnN0YXRlID0gSU5fRklFTEQ7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBBRlRFUl9FU0NBUEVEX0NSTkw6CisgICAgICAgIGlmIChjID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLypmYWxsdGhydSovCisKICAgICBjYXNlIElOX0ZJRUxEOgogICAgICAgICAvKiBpbiB1bnF1b3RlZCBmaWVsZCAqLwogICAgICAgICBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcMCcpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDlhMzdhYWMuLjdjMzRmNzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMTMyNiw3ICsxMzI2LDcgQEAKICAgICBpZiAoc3RnZGljdC0+Zm9ybWF0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgc3RnZGljdC0+bmRpbSA9IGl0ZW1kaWN0LT5uZGltICsgMTsKLSAgICBzdGdkaWN0LT5zaGFwZSA9IFB5TWVtX01hbGxvYyhzaXplb2YoUHlfc3NpemVfdCAqKSAqIHN0Z2RpY3QtPm5kaW0pOworICAgIHN0Z2RpY3QtPnNoYXBlID0gUHlNZW1fTWFsbG9jKHNpemVvZihQeV9zc2l6ZV90KSAqIHN0Z2RpY3QtPm5kaW0pOwogICAgIGlmIChzdGdkaWN0LT5zaGFwZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHN0Z2RpY3QtPnNoYXBlWzBdID0gbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCmluZGV4IDM0YzQ2YWQuLjg2MjMyMzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKQEAgLTk4LDIwICs5OCwzNyBAQAogICAgIFB5T2JqZWN0ICpweV9nbG9iYWxzID0gMDsKICAgICBQeUNvZGVPYmplY3QgKnB5X2NvZGUgPSAwOwogICAgIFB5RnJhbWVPYmplY3QgKnB5X2ZyYW1lID0gMDsKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdmFsdWUsICp0YjsKKworICAgIC8qIChTYXZlIGFuZCkgQ2xlYXIgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLiBQeXRob24gZnVuY3Rpb25zIG11c3Qgbm90IGJlCisgICAgICAgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldC4gQ2FsbGluZyBQeXRob24gZnVuY3Rpb25zIGhhcHBlbnMgd2hlbgorICAgICAgIHRoZSBjb2RlYyBvZiB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBpcyBpbXBsZW1lbnRlZCBpbiBwdXJlIFB5dGhvbi4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdmFsdWUsICZ0Yik7CiAKICAgICBweV9nbG9iYWxzID0gUHlEaWN0X05ldygpOwotICAgIGlmICghcHlfZ2xvYmFscykgZ290byBiYWQ7CisgICAgaWYgKCFweV9nbG9iYWxzKQorICAgICAgICBnb3RvIGJhZDsKICAgICBweV9jb2RlID0gUHlDb2RlX05ld0VtcHR5KGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vKTsKLSAgICBpZiAoIXB5X2NvZGUpIGdvdG8gYmFkOworICAgIGlmICghcHlfY29kZSkKKyAgICAgICAgZ290byBiYWQ7CiAgICAgcHlfZnJhbWUgPSBQeUZyYW1lX05ldygKICAgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSwgLypQeVRocmVhZFN0YXRlICp0c3RhdGUsKi8KICAgICAgICAgcHlfY29kZSwgICAgICAgICAgICAgLypQeUNvZGVPYmplY3QgKmNvZGUsKi8KICAgICAgICAgcHlfZ2xvYmFscywgICAgICAgICAgLypQeU9iamVjdCAqZ2xvYmFscywqLwogICAgICAgICAwICAgICAgICAgICAgICAgICAgICAvKlB5T2JqZWN0ICpsb2NhbHMqLwogICAgICAgICApOwotICAgIGlmICghcHlfZnJhbWUpIGdvdG8gYmFkOworICAgIGlmICghcHlfZnJhbWUpCisgICAgICAgIGdvdG8gYmFkOwogICAgIHB5X2ZyYW1lLT5mX2xpbmVubyA9IGxpbmVubzsKKworICAgIFB5RXJyX1Jlc3RvcmUoZXhjZXB0aW9uLCB2YWx1ZSwgdGIpOwogICAgIFB5VHJhY2VCYWNrX0hlcmUocHlfZnJhbWUpOworCisgICAgUHlfREVDUkVGKHB5X2dsb2JhbHMpOworICAgIFB5X0RFQ1JFRihweV9jb2RlKTsKKyAgICBQeV9ERUNSRUYocHlfZnJhbWUpOworICAgIHJldHVybjsKKwogICBiYWQ6CiAgICAgUHlfWERFQ1JFRihweV9nbG9iYWxzKTsKICAgICBQeV9YREVDUkVGKHB5X2NvZGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwppbmRleCBhZGU1MmZkLi5lYWQxYzZmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwpAQCAtMjYxLDE4ICsyNjEsMTggQEAKICAgICAgICAgICAgdG8gYSB2aXJ0dWFsIGFkZHJlc3MgZm9yIHdoaWNoIGl0IGRvZXMgbm90CiAgICAgICAgICAgIGhhdmUgdGhlIGFwcHJvcHJpYXRlIGFjY2Vzcy4gKi8KICAgICAgICAgaWYgKHByLT5FeGNlcHRpb25JbmZvcm1hdGlvblswXSA9PSAwKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gcmVhZGluZyAlcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHItPkV4Y2VwdGlvbkluZm9ybWF0aW9uWzFdKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gd3JpdGluZyAlcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHItPkV4Y2VwdGlvbkluZm9ybWF0aW9uWzFdKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVYQ0VQVElPTl9CUkVBS1BPSU5UOgogICAgICAgICAvKiBBIGJyZWFrcG9pbnQgd2FzIGVuY291bnRlcmVkLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGJyZWFrcG9pbnQgZW5jb3VudGVyZWQiKTsKICAgICAgICAgYnJlYWs7CiAKQEAgLTI4MiwxNCArMjgyLDE0IEBACiAgICAgICAgICAgIGFsaWdubWVudC4gRm9yIGV4YW1wbGUsIDE2LWJpdCB2YWx1ZXMgbXVzdCBiZQogICAgICAgICAgICBhbGlnbmVkIG9uIDItYnl0ZSBib3VuZGFyaWVzLCAzMi1iaXQgdmFsdWVzIG9uCiAgICAgICAgICAgIDQtYnl0ZSBib3VuZGFyaWVzLCBhbmQgc28gb24uICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19XaW5kb3dzRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogZGF0YXR5cGUgbWlzYWxpZ25tZW50Iik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBFWENFUFRJT05fU0lOR0xFX1NURVA6CiAgICAgICAgIC8qIEEgdHJhY2UgdHJhcCBvciBvdGhlciBzaW5nbGUtaW5zdHJ1Y3Rpb24gbWVjaGFuaXNtCiAgICAgICAgICAgIHNpZ25hbGVkIHRoYXQgb25lIGluc3RydWN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHNpbmdsZSBzdGVwIik7CiAgICAgICAgIGJyZWFrOwogCkBAIC0yOTcsNyArMjk3LDcgQEAKICAgICAgICAgLyogVGhlIHRocmVhZCBhdHRlbXB0ZWQgdG8gYWNjZXNzIGFuIGFycmF5IGVsZW1lbnQKICAgICAgICAgICAgdGhhdCBpcyBvdXQgb2YgYm91bmRzLCBhbmQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUKICAgICAgICAgICAgc3VwcG9ydHMgYm91bmRzIGNoZWNraW5nLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGFycmF5IGJvdW5kcyBleGNlZWRlZCIpOwogICAgICAgICBicmVhazsKIApAQCAtMzA2LDI4ICszMDYsMjggQEAKICAgICAgICAgICAgaXMgZGVub3JtYWwuIEEgZGVub3JtYWwgdmFsdWUgaXMgb25lIHRoYXQgaXMgdG9vCiAgICAgICAgICAgIHNtYWxsIHRvIHJlcHJlc2VudCBhcyBhIHN0YW5kYXJkIGZsb2F0aW5nLXBvaW50CiAgICAgICAgICAgIHZhbHVlLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGZsb2F0aW5nLXBvaW50IG9wZXJhbmQgZGVub3JtYWwiKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVYQ0VQVElPTl9GTFRfRElWSURFX0JZX1pFUk86CiAgICAgICAgIC8qIFRoZSB0aHJlYWQgYXR0ZW1wdGVkIHRvIGRpdmlkZSBhIGZsb2F0aW5nLXBvaW50CiAgICAgICAgICAgIHZhbHVlIGJ5IGEgZmxvYXRpbmctcG9pbnQgZGl2aXNvciBvZiB6ZXJvLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGZsb2F0IGRpdmlkZSBieSB6ZXJvIik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBFWENFUFRJT05fRkxUX0lORVhBQ1RfUkVTVUxUOgogICAgICAgICAvKiBUaGUgcmVzdWx0IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGNhbm5vdCBiZQogICAgICAgICAgICByZXByZXNlbnRlZCBleGFjdGx5IGFzIGEgZGVjaW1hbCBmcmFjdGlvbi4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBmbG9hdCBpbmV4YWN0Iik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBFWENFUFRJT05fRkxUX0lOVkFMSURfT1BFUkFUSU9OOgogICAgICAgICAvKiBUaGlzIGV4Y2VwdGlvbiByZXByZXNlbnRzIGFueSBmbG9hdGluZy1wb2ludAogICAgICAgICAgICBleGNlcHRpb24gbm90IGluY2x1ZGVkIGluIHRoaXMgbGlzdC4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBmbG9hdCBpbnZhbGlkIG9wZXJhdGlvbiIpOwogICAgICAgICBicmVhazsKIApAQCAtMzM1LDIxICszMzUsMjEgQEAKICAgICAgICAgLyogVGhlIGV4cG9uZW50IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGlzCiAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiB0aGUgbWFnbml0dWRlIGFsbG93ZWQgYnkgdGhlCiAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdHlwZS4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBmbG9hdCBvdmVyZmxvdyIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX0ZMVF9TVEFDS19DSEVDSzoKICAgICAgICAgLyogVGhlIHN0YWNrIG92ZXJmbG93ZWQgb3IgdW5kZXJmbG93ZWQgYXMgdGhlIHJlc3VsdAogICAgICAgICAgICBvZiBhIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbi4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBzdGFjayBvdmVyL3VuZGVyZmxvdyIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XOgogICAgICAgICAvKiBUaGUgc3RhY2sgb3ZlcmZsb3dlZCBvciB1bmRlcmZsb3dlZCBhcyB0aGUgcmVzdWx0CiAgICAgICAgICAgIG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHN0YWNrIG92ZXJmbG93Iik7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zNTcsMjEgKzM1NywyMSBAQAogICAgICAgICAvKiBUaGUgZXhwb25lbnQgb2YgYSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb24gaXMgbGVzcwogICAgICAgICAgICB0aGFuIHRoZSBtYWduaXR1ZGUgYWxsb3dlZCBieSB0aGUgY29ycmVzcG9uZGluZwogICAgICAgICAgICB0eXBlLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IGZsb2F0IHVuZGVyZmxvdyIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTzoKICAgICAgICAgLyogVGhlIHRocmVhZCBhdHRlbXB0ZWQgdG8gZGl2aWRlIGFuIGludGVnZXIgdmFsdWUgYnkKICAgICAgICAgICAgYW4gaW50ZWdlciBkaXZpc29yIG9mIHplcm8uICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19XaW5kb3dzRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogaW50ZWdlciBkaXZpZGUgYnkgemVybyIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9PVkVSRkxPVzoKICAgICAgICAgLyogVGhlIHJlc3VsdCBvZiBhbiBpbnRlZ2VyIG9wZXJhdGlvbiBjYXVzZWQgYSBjYXJyeQogICAgICAgICAgICBvdXQgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSByZXN1bHQuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19XaW5kb3dzRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogaW50ZWdlciBvdmVyZmxvdyIpOwogICAgICAgICBicmVhazsKIApAQCAtMzc5LDE0ICszNzksMTQgQEAKICAgICAgICAgLyogVGhlIHRocmVhZCBhdHRlbXB0ZWQgdG8gZXhlY3V0ZSBhbiBpbnN0cnVjdGlvbgogICAgICAgICAgICB3aG9zZSBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgICAgbWFjaGluZSBtb2RlLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHByaXZpbGVkZ2VkIGluc3RydWN0aW9uIik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OOgogICAgICAgICAvKiBUaGUgdGhyZWFkIGF0dGVtcHRlZCB0byBjb250aW51ZSBleGVjdXRpb24gYWZ0ZXIgYQogICAgICAgICAgICBub25jb250aW51YWJsZSBleGNlcHRpb24gb2NjdXJyZWQuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19XaW5kb3dzRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogbm9jb250aW51YWJsZSIpOwogICAgICAgICBicmVhazsKIApAQCAtNjIwLDYgKzYyMCw4IEBACiAgICAgICAgIGFzc2VydChkaWN0LT5wYXJhbWZ1bmMpOwogICAgICAgICAvKiBJZiBpdCBoYXMgYW4gc3RnZGljdCwgaXQgaXMgYSBDRGF0YU9iamVjdCAqLwogICAgICAgICBjYXJnID0gZGljdC0+cGFyYW1mdW5jKChDRGF0YU9iamVjdCAqKW9iaik7CisgICAgICAgIGlmIChjYXJnID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHBhLT5mZmlfdHlwZSA9IGNhcmctPnBmZmlfdHlwZTsKICAgICAgICAgbWVtY3B5KCZwYS0+dmFsdWUsICZjYXJnLT52YWx1ZSwgc2l6ZW9mKHBhLT52YWx1ZSkpOwogICAgICAgICBwYS0+a2VlcCA9IChQeU9iamVjdCAqKWNhcmc7CkBAIC0xMTA1LDkgKzExMDcsNyBAQAogICAgICAgICBpZiAoYXJndHlwZXMgJiYgYXJndHlwZV9jb3VudCA+IGkpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwogICAgICAgICAgICAgY29udmVydGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmd0eXBlcywgaSk7Ci0gICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhjb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhjb252ZXJ0ZXIsIGFyZywgTlVMTCk7CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlFeGNfQXJnRXJyb3IsICJhcmd1bWVudCAlZDogIiwgaSsxKTsKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CkBAIC0xMjcyLDYyICsxMjcyLDYgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotLyogb2Jzb2xldGUsIHNob3VsZCBiZSByZW1vdmVkICovCi0vKiBPbmx5IHVzZWQgYnkgc2FtcGxlIGNvZGUgKGluIHNhbXBsZXNcV2luZG93c1xDT00ucHkpICovCi1zdGF0aWMgUHlPYmplY3QgKgotY2FsbF9jb21tZXRob2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIElVbmtub3duICpwSXVuazsKLSAgICBpbnQgaW5kZXg7Ci0gICAgUHlPYmplY3QgKmFyZ3VtZW50czsKLSAgICBQUFJPQyAqbHBWdGJsOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgQ0RhdGFPYmplY3QgKnBjb207Ci0gICAgUHlPYmplY3QgKmFyZ3R5cGVzID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiT2lPIXxPISIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwY29tLCAmaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZhcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZhcmd0eXBlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGFyZ3R5cGVzICYmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3VtZW50cykgIT0gUHlUdXBsZV9HRVRfU0laRShhcmd0eXBlcykpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTWV0aG9kIHRha2VzICVkIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJndHlwZXMpLCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3VtZW50cykpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoIUNEYXRhT2JqZWN0X0NoZWNrKHBjb20pIHx8IChwY29tLT5iX3NpemUgIT0gc2l6ZW9mKHZvaWQgKikpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ09NIFBvaW50ZXIgZXhwZWN0ZWQgaW5zdGVhZCBvZiAlcyBpbnN0YW5jZSIsCi0gICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBjb20pLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKCgqKHZvaWQgKiopKHBjb20tPmJfcHRyKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgQ09NICd0aGlzJyBwb2ludGVyIGlzIE5VTEwiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcEl1bmsgPSAoSVVua25vd24gKikoKih2b2lkICoqKShwY29tLT5iX3B0cikpOwotICAgIGxwVnRibCA9IChQUFJPQyAqKShwSXVuay0+bHBWdGJsKTsKLQotICAgIHJlc3VsdCA9ICBfY3R5cGVzX2NhbGxwcm9jKGxwVnRibFtpbmRleF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMsCi0jaWZkZWYgTVNfV0lOMzIKLSAgICAgICAgICAgICAgICAgICAgICAgIHBJdW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ0ZMQUdfSFJFU1VMVCwgLyogZmxhZ3MgKi8KLSAgICAgICAgICAgICAgICBhcmd0eXBlcywgLyogc2VsZi0+YXJndHlwZXMgKi8KLSAgICAgICAgICAgICAgICBOVUxMLCAvKiBzZWxmLT5yZXN0eXBlICovCi0gICAgICAgICAgICAgICAgTlVMTCk7IC8qIGNoZWNrZXIgKi8KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBzdGF0aWMgY2hhciBjb3B5X2NvbV9wb2ludGVyX2RvY1tdID0KICJDb3B5Q29tUG9pbnRlcihzcmMsIGRzdCkgLT4gSFJFU1VMVCB2YWx1ZVxuIjsKIApAQCAtMTQ4OSw5ICsxNDMzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgIEZVTkNGTEFHX0NERUNMLCAvKiBmbGFncyAqLwotICAgICAgICAgICAgICAgIE5VTEwsIC8qIHNlbGYtPmFyZ3R5cGVzICovCi0gICAgICAgICAgICAgICAgTlVMTCwgLyogc2VsZi0+cmVzdHlwZSAqLwotICAgICAgICAgICAgICAgIE5VTEwpOyAvKiBjaGVja2VyICovCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAvKiBzZWxmLT5hcmd0eXBlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgLyogc2VsZi0+cmVzdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7IC8qIGNoZWNrZXIgKi8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xODIyLDcgKzE3NjYsNiBAQAogICAgIHsiRm9ybWF0RXJyb3IiLCBmb3JtYXRfZXJyb3IsIE1FVEhfVkFSQVJHUywgZm9ybWF0X2Vycm9yX2RvY30sCiAgICAgeyJMb2FkTGlicmFyeSIsIGxvYWRfbGlicmFyeSwgTUVUSF9WQVJBUkdTLCBsb2FkX2xpYnJhcnlfZG9jfSwKICAgICB7IkZyZWVMaWJyYXJ5IiwgZnJlZV9saWJyYXJ5LCBNRVRIX1ZBUkFSR1MsIGZyZWVfbGlicmFyeV9kb2N9LAotICAgIHsiY2FsbF9jb21tZXRob2QiLCBjYWxsX2NvbW1ldGhvZCwgTUVUSF9WQVJBUkdTIH0sCiAgICAgeyJfY2hlY2tfSFJFU1VMVCIsIGNoZWNrX2hyZXN1bHQsIE1FVEhfVkFSQVJHU30sCiAjZWxzZQogICAgIHsiZGxvcGVuIiwgcHlfZGxfb3BlbiwgTUVUSF9WQVJBUkdTLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9vc3gvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX29zeC9mZmkuYwppbmRleCBiZjQyMDkzLi45NjgyNmI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX29zeC9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX29zeC9mZmkuYwpAQCAtMzgsMTIgKzM4LDEzIEBACiAvKkBvdXRAKi8JZmZpX3R5cGUqCWFyZykKIHsKIC8qQC11c2VkZWZAKi8KKwlmZmlfdHlwZSoqCXB0cjsKIAogCWlmIChhcmcgPT0gTlVMTCB8fCBhcmctPmVsZW1lbnRzID09IE5VTEwgfHwKIAkJYXJnLT5zaXplICE9IDAgfHwgYXJnLT5hbGlnbm1lbnQgIT0gMCkKIAkJcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKIAotCWZmaV90eXBlKioJcHRyID0gJihhcmctPmVsZW1lbnRzWzBdKTsKKyAgICBwdHIgPSAmKGFyZy0+ZWxlbWVudHNbMF0pOwogCiAJd2hpbGUgKCgqcHRyKSAhPSBOVUxMKQogCXsKQEAgLTEzNSwxNiArMTM2LDE2IEBACiAvKkBkZXBlbmRlbnRAKi8gLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX3R5cGUqCXJ0eXBlLCAKIC8qQGRlcGVuZGVudEAqLwkJCWZmaV90eXBlKioJCWF0eXBlcykKIHsKKwl1bnNpZ25lZCBpbnQJYnl0ZXMJPSAwOworCXVuc2lnbmVkIGludAlpOworCWZmaV90eXBlKioJCXB0cjsKKwogCWlmIChjaWYgPT0gTlVMTCkKIAkJcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKIAogCWlmIChhYmkgPD0gRkZJX0ZJUlNUX0FCSSB8fCBhYmkgPiBGRklfREVGQVVMVF9BQkkpCiAJCXJldHVybiBGRklfQkFEX0FCSTsKIAotCXVuc2lnbmVkIGludAlieXRlcwk9IDA7Ci0JdW5zaWduZWQgaW50CWk7Ci0JZmZpX3R5cGUqKgkJcHRyOwotCiAJY2lmLT5hYmkgPSBhYmk7CiAJY2lmLT5hcmdfdHlwZXMgPSBhdHlwZXM7CiAJY2lmLT5uYXJncyA9IG5hcmdzOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9vc3gveDg2L3g4Ni1mZmk2NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9vc3gveDg2L3g4Ni1mZmk2NC5jCmluZGV4IDJhZmZiMTQuLmYyNjEwYzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfb3N4L3g4Ni94ODYtZmZpNjQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX29zeC94ODYveDg2LWZmaTY0LmMKQEAgLTIyNSwxNCArMjI1LDE2IEBACiAJCQkvKiBNZXJnZSB0aGUgZmllbGRzIG9mIHN0cnVjdHVyZS4gICovCiAJCQlmb3IgKHB0ciA9IHR5cGUtPmVsZW1lbnRzOyAqcHRyICE9IE5VTEw7IHB0cisrKQogCQkJeworCQkJCWludCBudW0sIHBvczsKKwogCQkJCWJ5dGVfb2Zmc2V0ID0gQUxJR04oYnl0ZV9vZmZzZXQsICgqcHRyKS0+YWxpZ25tZW50KTsKIAotCQkJCWludAludW0gPSBjbGFzc2lmeV9hcmd1bWVudCgqcHRyLCBzdWJjbGFzc2VzLCBieXRlX29mZnNldCAlIDgpOworCQkJCW51bSA9IGNsYXNzaWZ5X2FyZ3VtZW50KCpwdHIsIHN1YmNsYXNzZXMsIGJ5dGVfb2Zmc2V0ICUgOCk7CiAKIAkJCQlpZiAobnVtID09IDApCiAJCQkJCXJldHVybiAwOwogCi0JCQkJaW50IHBvcyA9IGJ5dGVfb2Zmc2V0IC8gODsKKwkJCQlwb3MgPSBieXRlX29mZnNldCAvIDg7CiAKIAkJCQlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCiAJCQkJewpAQCAtNTg5LDExICs1OTEsMTIgQEAKIAl2b2lkCQkJKCpmdW4pKGZmaV9jaWYqLCB2b2lkKiwgdm9pZCoqLCB2b2lkKiksCiAJdm9pZCoJCQl1c2VyX2RhdGEpCiB7CisJCXZvbGF0aWxlIHVuc2lnbmVkIHNob3J0Kgl0cmFtcDsKKwogCWlmIChjaWYtPmFiaSAhPSBGRklfVU5JWDY0KQogCQlyZXR1cm4gRkZJX0JBRF9BQkk7CiAKLQl2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCoJdHJhbXAgPQotCQkodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQqKSZjbG9zdXJlLT50cmFtcFswXTsKKwl0cmFtcCA9ICh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCopJmNsb3N1cmUtPnRyYW1wWzBdOwogCiAJdHJhbXBbMF0gPSAweGJiNDk7CQkvKiBtb3YgPGNvZGU+LCAlcjExCSovCiAJKih2b2lkKiB2b2xhdGlsZSopJnRyYW1wWzFdID0gZmZpX2Nsb3N1cmVfdW5peDY0OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwppbmRleCBmNTYwNzAyLi44N2I5YzA1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYworKysgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwpAQCAtMTE3LDcgKzExNyw3IEBACiB7CiAgICAgbGlzdF9vZl9wYW5lbHMgKm5ldzsKIAotICAgIGlmICgobmV3ID0gKGxpc3Rfb2ZfcGFuZWxzICopbWFsbG9jKHNpemVvZihsaXN0X29mX3BhbmVscykpKSA9PSBOVUxMKSB7CisgICAgaWYgKChuZXcgPSAobGlzdF9vZl9wYW5lbHMgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKGxpc3Rfb2ZfcGFuZWxzKSkpID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTEzNiw3ICsxMzYsNyBAQAogICAgIHRlbXAgPSBsb3A7CiAgICAgaWYgKHRlbXAtPnBvID09IHBvKSB7CiAgICAgICAgIGxvcCA9IHRlbXAtPm5leHQ7Ci0gICAgICAgIGZyZWUodGVtcCk7CisgICAgICAgIFB5TWVtX0ZyZWUodGVtcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd2hpbGUgKHRlbXAtPm5leHQgPT0gTlVMTCB8fCB0ZW1wLT5uZXh0LT5wbyAhPSBwbykgewpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgICAgIHRlbXAgPSB0ZW1wLT5uZXh0OwogICAgIH0KICAgICBuID0gdGVtcC0+bmV4dC0+bmV4dDsKLSAgICBmcmVlKHRlbXAtPm5leHQpOworICAgIFB5TWVtX0ZyZWUodGVtcC0+bmV4dCk7CiAgICAgdGVtcC0+bmV4dCA9IG47CiAgICAgcmV0dXJuOwogfQpAQCAtNTEzLDYgKzUxMyw4IEBACiAgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIGltcG9ydF9jdXJzZXMoKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBmYWlsOwogCiAgICAgLyogRm9yIGV4Y2VwdGlvbiBfY3Vyc2VzX3BhbmVsLmVycm9yICovCiAgICAgX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc0Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfY3Vyc2VzX3BhbmVsLmVycm9yIiwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IGY1ZGY4MGMuLjI3ZTU1NzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xNjgsMTAgKzE2OCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBjYWxsIHN0YXJ0X2NvbG9yKCkgZmlyc3QiKTsgICAgICAgXAogICAgICAgICByZXR1cm4gMDsgfQogCi0jaWZuZGVmIE1JTgotI2RlZmluZSBNSU4oeCx5KSAoKHgpIDwgKHkpID8gKHgpIDogKHkpKQotI2VuZGlmCi0KIC8qIFV0aWxpdHkgRnVuY3Rpb25zICovCiAKIC8qCkBAIC01MzMsNyArNTI5LDcgQEAKICAgICB3byA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1dpbmRvd09iamVjdCwgJlB5Q3Vyc2VzV2luZG93X1R5cGUpOwogICAgIGlmICh3byA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICB3by0+d2luID0gd2luOwotICAgIHdvLT5lbmNvZGluZyA9IHN0cmR1cChlbmNvZGluZyk7CisgICAgd28tPmVuY29kaW5nID0gX1B5TWVtX1N0cmR1cChlbmNvZGluZyk7CiAgICAgaWYgKHdvLT5lbmNvZGluZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih3byk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01NDcsNyArNTQzLDcgQEAKIHsKICAgICBpZiAod28tPndpbiAhPSBzdGRzY3IpIGRlbHdpbih3by0+d2luKTsKICAgICBpZiAod28tPmVuY29kaW5nICE9IE5VTEwpCi0gICAgICAgIGZyZWUod28tPmVuY29kaW5nKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3by0+ZW5jb2RpbmcpOwogICAgIFB5T2JqZWN0X0RFTCh3byk7CiB9CiAKQEAgLTEyMTIsNyArMTIwOCw3IEBACiAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpO24iLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBydG4yID0gd2dldG5zdHIoc2VsZi0+d2luLHJ0bixNSU4obiwgMTAyMykpOworICAgICAgICBydG4yID0gd2dldG5zdHIoc2VsZi0+d2luLCBydG4sIFB5X01JTihuLCAxMDIzKSk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKQEAgLTEyMzIsMTEgKzEyMjgsMTEgQEAKICNpZmRlZiBTVFJJQ1RfU1lTVl9DVVJTRVMKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBydG4yID0gd21vdmUoc2VsZi0+d2luLHkseCk9PUVSUiA/IEVSUiA6Ci0gICAgICAgIHdnZXRuc3RyKHNlbGYtPndpbiwgcnRuLCBNSU4obiwgMTAyMykpOworICAgICAgICB3Z2V0bnN0cihzZWxmLT53aW4sIHJ0biwgUHlfTUlOKG4sIDEwMjMpKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICNlbHNlCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcnRuMiA9IG12d2dldG5zdHIoc2VsZi0+d2luLCB5LCB4LCBydG4sIE1JTihuLCAxMDIzKSk7CisgICAgICAgIHJ0bjIgPSBtdndnZXRuc3RyKHNlbGYtPndpbiwgeSwgeCwgcnRuLCBQeV9NSU4obiwgMTAyMykpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwpAQCAtMTM3NCw3ICsxMzcwLDcgQEAKICAgICBjYXNlIDE6CiAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpO24iLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcnRuMiA9IHdpbm5zdHIoc2VsZi0+d2luLHJ0bixNSU4obiwxMDIzKSk7CisgICAgICAgIHJ0bjIgPSB3aW5uc3RyKHNlbGYtPndpbiwgcnRuLCBQeV9NSU4obiwgMTAyMykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDI6CiAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTt5LHgiLCZ5LCZ4KSkKQEAgLTEzODQsNyArMTM4MCw3IEBACiAgICAgY2FzZSAzOgogICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaTt5LHgsbiIsICZ5LCAmeCwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJ0bjIgPSBtdndpbm5zdHIoc2VsZi0+d2luLCB5LCB4LCBydG4sIE1JTihuLDEwMjMpKTsKKyAgICAgICAgcnRuMiA9IG12d2lubnN0cihzZWxmLT53aW4sIHksIHgsIHJ0biwgUHlfTUlOKG4sMTAyMykpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW5zdHIgcmVxdWlyZXMgMCBvciAzIGFyZ3VtZW50cyIpOwpAQCAtMTk0MiwxMyArMTkzOCwxMyBAQAogICAgIGFzY2lpID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodmFsdWUpOwogICAgIGlmIChhc2NpaSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgZW5jb2RpbmcgPSBzdHJkdXAoUHlCeXRlc19BU19TVFJJTkcoYXNjaWkpKTsKKyAgICBlbmNvZGluZyA9IF9QeU1lbV9TdHJkdXAoUHlCeXRlc19BU19TVFJJTkcoYXNjaWkpKTsKICAgICBQeV9ERUNSRUYoYXNjaWkpOwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZnJlZShzZWxmLT5lbmNvZGluZyk7CisgICAgUHlNZW1fRnJlZShzZWxmLT5lbmNvZGluZyk7CiAgICAgc2VsZi0+ZW5jb2RpbmcgPSBlbmNvZGluZzsKICAgICByZXR1cm4gMDsKIH0KQEAgLTM0MTQsNyArMzQxMCw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc3RybmNtcChrZXlfbiwiS0VZX0YoIiw2KT09MCkgewogICAgICAgICAgICAgICAgIGNoYXIgKnAxLCAqcDI7Ci0gICAgICAgICAgICAgICAga2V5X24yID0gbWFsbG9jKHN0cmxlbihrZXlfbikrMSk7CisgICAgICAgICAgICAgICAga2V5X24yID0gUHlNZW1fTWFsbG9jKHN0cmxlbihrZXlfbikrMSk7CiAgICAgICAgICAgICAgICAgaWYgKCFrZXlfbjIpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNDMzLDcgKzM0MjksNyBAQAogICAgICAgICAgICAgICAgIGtleV9uMiA9IGtleV9uOwogICAgICAgICAgICAgU2V0RGljdEludChrZXlfbjIsa2V5KTsKICAgICAgICAgICAgIGlmIChrZXlfbjIgIT0ga2V5X24pCi0gICAgICAgICAgICAgICAgZnJlZShrZXlfbjIpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoa2V5X24yKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIFNldERpY3RJbnQoIktFWV9NSU4iLCBLRVlfTUlOKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCmluZGV4IDdjNzE3MGQuLjkxZDMwYTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwpAQCAtMTQwLDE5ICsxNDAsNiBAQAogICAgIHJldHVybiBxdW87CiB9CiAKLS8qIFJvdW5kIGEgZG91YmxlIHRvIHRoZSBuZWFyZXN0IGxvbmcuICB8eHwgbXVzdCBiZSBzbWFsbCBlbm91Z2ggdG8gZml0Ci0gKiBpbiBhIEMgbG9uZzsgdGhpcyBpcyBub3QgY2hlY2tlZC4KLSAqLwotc3RhdGljIGxvbmcKLXJvdW5kX3RvX2xvbmcoZG91YmxlIHgpCi17Ci0gICAgaWYgKHggPj0gMC4wKQotICAgICAgICB4ID0gZmxvb3IoeCArIDAuNSk7Ci0gICAgZWxzZQotICAgICAgICB4ID0gY2VpbCh4IC0gMC41KTsKLSAgICByZXR1cm4gKGxvbmcpeDsKLX0KLQogLyogTmVhcmVzdCBpbnRlZ2VyIHRvIG0gLyBuIGZvciBpbnRlZ2VycyBtIGFuZCBuLiBIYWxmLWludGVnZXIgcmVzdWx0cwogICogYXJlIHJvdW5kZWQgdG8gZXZlbi4KICAqLwpAQCAtMTM5Nyw3ICsxMzg0LDcgQEAKICAqLwogCiAvKiBDb252ZXJzaW9uIGZhY3RvcnMuICovCi1zdGF0aWMgUHlPYmplY3QgKnVzX3Blcl91cyA9IE5VTEw7ICAgICAgLyogMSAqLworc3RhdGljIFB5T2JqZWN0ICpvbmUgPSBOVUxMOyAgICAgIC8qIDEgKi8KIHN0YXRpYyBQeU9iamVjdCAqdXNfcGVyX21zID0gTlVMTDsgICAgICAvKiAxMDAwICovCiBzdGF0aWMgUHlPYmplY3QgKnVzX3Blcl9zZWNvbmQgPSBOVUxMOyAgLyogMTAwMDAwMCAqLwogc3RhdGljIFB5T2JqZWN0ICp1c19wZXJfbWludXRlID0gTlVMTDsgIC8qIDFlNiAqIDYwIGFzIFB5dGhvbiBpbnQgKi8KQEAgLTIxMTksNyArMjEwNiw3IEBACiAgICAgICAgIGdvdG8gRG9uZQogCiAgICAgaWYgKHVzKSB7Ci0gICAgICAgIHkgPSBhY2N1bSgibWljcm9zZWNvbmRzIiwgeCwgdXMsIHVzX3Blcl91cywgJmxlZnRvdmVyX3VzKTsKKyAgICAgICAgeSA9IGFjY3VtKCJtaWNyb3NlY29uZHMiLCB4LCB1cywgb25lLCAmbGVmdG92ZXJfdXMpOwogICAgICAgICBDTEVBTlVQOwogICAgIH0KICAgICBpZiAobXMpIHsKQEAgLTIxNDgsNyArMjEzNSwzMyBAQAogICAgIH0KICAgICBpZiAobGVmdG92ZXJfdXMpIHsKICAgICAgICAgLyogUm91bmQgdG8gbmVhcmVzdCB3aG9sZSAjIG9mIHVzLCBhbmQgYWRkIGludG8geC4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeUxvbmdfRnJvbUxvbmcocm91bmRfdG9fbG9uZyhsZWZ0b3Zlcl91cykpOworICAgICAgICBkb3VibGUgd2hvbGVfdXMgPSByb3VuZChsZWZ0b3Zlcl91cyk7CisgICAgICAgIGludCB4X2lzX29kZDsKKyAgICAgICAgUHlPYmplY3QgKnRlbXA7CisKKyAgICAgICAgd2hvbGVfdXMgPSByb3VuZChsZWZ0b3Zlcl91cyk7CisgICAgICAgIGlmIChmYWJzKHdob2xlX3VzIC0gbGVmdG92ZXJfdXMpID09IDAuNSkgeworICAgICAgICAgICAgLyogV2UncmUgZXhhY3RseSBoYWxmd2F5IGJldHdlZW4gdHdvIGludGVnZXJzLiAgSW4gb3JkZXIKKyAgICAgICAgICAgICAqIHRvIGRvIHJvdW5kLWhhbGYtdG8tZXZlbiwgd2UgbXVzdCBkZXRlcm1pbmUgd2hldGhlciB4CisgICAgICAgICAgICAgKiBpcyBvZGQuIE5vdGUgdGhhdCB4IGlzIG9kZCB3aGVuIGl0J3MgbGFzdCBiaXQgaXMgMS4gVGhlCisgICAgICAgICAgICAgKiBjb2RlIGJlbG93IHVzZXMgYml0d2lzZSBhbmQgb3BlcmF0aW9uIHRvIGNoZWNrIHRoZSBsYXN0CisgICAgICAgICAgICAgKiBiaXQuICovCisJICAgIHRlbXAgPSBQeU51bWJlcl9BbmQoeCwgb25lKTsgIC8qIHRlbXAgPC0geCAmIDEgKi8KKyAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeF9pc19vZGQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICBpZiAoeF9pc19vZGQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hvbGVfdXMgPSAyLjAgKiByb3VuZCgobGVmdG92ZXJfdXMgKyB4X2lzX29kZCkgKiAwLjUpIC0geF9pc19vZGQ7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wID0gUHlMb25nX0Zyb21Mb25nKHdob2xlX3VzKTsKKwogICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICBnb3RvIERvbmU7CkBAIC0yMjM5LDIyICsyMjUyLDE0IEBACiB7CiAgICAgUHlPYmplY3QgKnRvdGFsX3NlY29uZHM7CiAgICAgUHlPYmplY3QgKnRvdGFsX21pY3Jvc2Vjb25kczsKLSAgICBQeU9iamVjdCAqb25lX21pbGxpb247CiAKICAgICB0b3RhbF9taWNyb3NlY29uZHMgPSBkZWx0YV90b19taWNyb3NlY29uZHMoKFB5RGF0ZVRpbWVfRGVsdGEgKilzZWxmKTsKICAgICBpZiAodG90YWxfbWljcm9zZWNvbmRzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgb25lX21pbGxpb24gPSBQeUxvbmdfRnJvbUxvbmcoMTAwMDAwMEwpOwotICAgIGlmIChvbmVfbWlsbGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0b3RhbF9taWNyb3NlY29uZHMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICB0b3RhbF9zZWNvbmRzID0gUHlOdW1iZXJfVHJ1ZURpdmlkZSh0b3RhbF9taWNyb3NlY29uZHMsIG9uZV9taWxsaW9uKTsKKyAgICB0b3RhbF9zZWNvbmRzID0gUHlOdW1iZXJfVHJ1ZURpdmlkZSh0b3RhbF9taWNyb3NlY29uZHMsIHVzX3Blcl9zZWNvbmQpOwogCiAgICAgUHlfREVDUkVGKHRvdGFsX21pY3Jvc2Vjb25kcyk7Ci0gICAgUHlfREVDUkVGKG9uZV9taWxsaW9uKTsKICAgICByZXR1cm4gdG90YWxfc2Vjb25kczsKIH0KIApAQCAtNDc0OSw3ICs0NzU0LDcgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIHJlc3VsdCA9IG5ld190aW1lem9uZShkZWx0YSwgbmFtZW8pOwotICAgIFB5X0RFQ1JFRihuYW1lbyk7CisgICAgUHlfWERFQ1JFRihuYW1lbyk7CiAgIGVycm9yOgogICAgIFB5X0RFQ1JFRihkZWx0YSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ4NzMsOSArNDg3OCwxNiBAQAogICAgICAgICB0aW1lLnRtX3dkYXkgPSAtMTsKICAgICAgICAgdGltZS50bV9pc2RzdCA9IC0xOwogICAgICAgICB0aW1lc3RhbXAgPSBta3RpbWUoJnRpbWUpOwotICAgICAgICAvKiBSZXR1cm4gdmFsdWUgb2YgLTEgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiBhbiBlcnJvciwgYnV0IHRtX3dkYXkKLSAgICAgICAgICogY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KLSAgICAgICAgaWYgKHRpbWVzdGFtcCA9PSAodGltZV90KSgtMSkgJiYgdGltZS50bV93ZGF5ID09IC0xKSB7CisgICAgICAgIGlmICh0aW1lc3RhbXAgPT0gKHRpbWVfdCkoLTEpCisjaWZuZGVmIF9BSVgKKyAgICAgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLAorICAgICAgICAgICAgICogYnV0IHRtX3dkYXkgY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KKyAgICAgICAgICAgICYmIHRpbWUudG1fd2RheSA9PSAtMQorI2Vsc2UKKyAgICAgICAgICAgIC8qIG9uIEFJWCwgdG1fd2RheSBpcyBhbHdheXMgc2V0cywgZXZlbiBvbiBlcnJvciAqLworI2VuZGlmCisgICAgICAgICAgKQorICAgICAgICB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01Mjk5LDggKzUzMTEsOCBAQAogICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTUlOWUVBUiIsIE1JTllFQVIpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNQVhZRUFSIiwgTUFYWUVBUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTUlOWUVBUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTUFYWUVBUik7CiAKICAgICBQeV9JTkNSRUYoJlB5RGF0ZVRpbWVfRGF0ZVR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZGF0ZSIsIChQeU9iamVjdCAqKSAmUHlEYXRlVGltZV9EYXRlVHlwZSk7CkBAIC01MzQ0LDEyICs1MzU2LDEyIEBACiAgICAgYXNzZXJ0KERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKICAgICBhc3NlcnQoREkxMDBZID09IGRheXNfYmVmb3JlX3llYXIoMTAwKzEpKTsKIAotICAgIHVzX3Blcl91cyA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBvbmUgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CiAgICAgdXNfcGVyX21zID0gUHlMb25nX0Zyb21Mb25nKDEwMDApOwogICAgIHVzX3Blcl9zZWNvbmQgPSBQeUxvbmdfRnJvbUxvbmcoMTAwMDAwMCk7CiAgICAgdXNfcGVyX21pbnV0ZSA9IFB5TG9uZ19Gcm9tTG9uZyg2MDAwMDAwMCk7CiAgICAgc2Vjb25kc19wZXJfZGF5ID0gUHlMb25nX0Zyb21Mb25nKDI0ICogMzYwMCk7Ci0gICAgaWYgKHVzX3Blcl91cyA9PSBOVUxMIHx8IHVzX3Blcl9tcyA9PSBOVUxMIHx8IHVzX3Blcl9zZWNvbmQgPT0gTlVMTCB8fAorICAgIGlmIChvbmUgPT0gTlVMTCB8fCB1c19wZXJfbXMgPT0gTlVMTCB8fCB1c19wZXJfc2Vjb25kID09IE5VTEwgfHwKICAgICAgICAgdXNfcGVyX21pbnV0ZSA9PSBOVUxMIHx8IHNlY29uZHNfcGVyX2RheSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCAzMjdiODczLi4xY2U4NWY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMTQsMTEgKzE0LDcgQEAKICAqLwogI2lmIGRlZmluZWQoSEFWRV9OREJNX0gpCiAjaW5jbHVkZSA8bmRibS5oPgotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmICFkZWZpbmVkKFBZQ0NfR0NDKQotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJuZGJtIjsKLSNlbHNlCiBzdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KLSNlbmRpZgogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fTkRCTV9IKQogI2luY2x1ZGUgPGdkYm0vbmRibS5oPgogc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJHTlUgZ2RibSI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCBjMTc5ZTk2Li4zYzEzNThjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTEsNjMgKzEsMjIgQEAKLS8qCi0gKiBFbGVtZW50VHJlZQotICogJElkOiBfZWxlbWVudHRyZWUuYyAzNDczIDIwMDktMDEtMTEgMjI6NTM6NTVaIGZyZWRyaWsgJAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorICogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuCiAgKgotICogZWxlbWVudHRyZWUgYWNjZWxlcmF0b3IKLSAqCi0gKiBIaXN0b3J5OgotICogMTk5OS0wNi0yMCBmbCAgY3JlYXRlZCAoYXMgcGFydCBvZiBzZ21sb3ApCi0gKiAyMDAxLTA1LTI5IGZsICBlZmZkb20gZWRpdGlvbgotICogMjAwMy0wMi0yNyBmbCAgZWxlbWVudHRyZWUgZWRpdGlvbiAoYWxwaGEpCi0gKiAyMDA0LTA2LTAzIGZsICB1cGRhdGVzIGZvciBlbGVtZW50dHJlZSAxLjIKLSAqIDIwMDUtMDEtMDUgZmwgIG1ham9yIG9wdGltaXphdGlvbiBlZmZvcnQKLSAqIDIwMDUtMDEtMTEgZmwgIGZpcnN0IHB1YmxpYyByZWxlYXNlIChjRWxlbWVudFRyZWUgMC44KQotICogMjAwNS0wMS0xMiBmbCAgc3BsaXQgZWxlbWVudCBvYmplY3QgaW50byBiYXNlIGFuZCBleHRyYXMKLSAqIDIwMDUtMDEtMTMgZmwgIHVzZSB0YWdnZWQgcG9pbnRlcnMgZm9yIHRhaWwvdGV4dCAoY0VsZW1lbnRUcmVlIDAuOSkKLSAqIDIwMDUtMDEtMTcgZmwgIGFkZGVkIHRyZWVidWlsZGVyIGNsb3NlIG1ldGhvZAotICogMjAwNS0wMS0xNyBmbCAgZml4ZWQgY3Jhc2ggaW4gZ2V0Y2hpbGRyZW4KLSAqIDIwMDUtMDEtMTggZmwgIHJlbW92ZWQgb2JzZXJ2ZXIgYXBpLCBhZGRlZCBpdGVycGFyc2UgKGNFbGVtZW50VHJlZSAwLjkuMykKLSAqIDIwMDUtMDEtMjMgZmwgIHJldmlzZWQgaXRlcnBhcnNlIGFwaTsgYWRkZWQgbmFtZXNwYWNlIGV2ZW50IHN1cHBvcnQgKDAuOS44KQotICogMjAwNS0wMS0yNiBmbCAgYWRkZWQgVkVSU0lPTiBtb2R1bGUgcHJvcGVydHkgKGNFbGVtZW50VHJlZSAxLjApCi0gKiAyMDA1LTAxLTI4IGZsICBhZGRlZCByZW1vdmUgbWV0aG9kICgxLjAuMSkKLSAqIDIwMDUtMDMtMDEgZmwgIGFkZGVkIGlzZWxlbWVudCBmdW5jdGlvbjsgZml4ZWQgbWFrZWVsZW1lbnQgYWxpYXNpbmcgKDEuMC4yKQotICogMjAwNS0wMy0xMyBmbCAgZXhwb3J0IENvbW1lbnQgYW5kIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi9QSSBoZWxwZXJzCi0gKiAyMDA1LTAzLTI2IGZsICBhZGRlZCBDb21tZW50IGFuZCBQSSBzdXBwb3J0IHRvIFhNTFBhcnNlcgotICogMjAwNS0wMy0yNyBmbCAgZXZlbnQgb3B0aW1pemF0aW9uczsgY29tcGxhaW4gYWJvdXQgYm9ndXMgZXZlbnRzCi0gKiAyMDA1LTA4LTA4IGZsICBmaXhlZCByZWFkIGVycm9yIGhhbmRsaW5nIGluIHBhcnNlCi0gKiAyMDA1LTA4LTExIGZsICBhZGRlZCBydW50aW1lIHRlc3QgZm9yIGNvcHkgd29ya2Fyb3VuZCAoMS4wLjMpCi0gKiAyMDA1LTEyLTEzIGZsICBhZGRlZCBleHBhdF9jYXBpIHN1cHBvcnQgKGZvciB4bWwuZXRyZWUpICgxLjAuNCkKLSAqIDIwMDUtMTItMTYgZmwgIGFkZGVkIHN1cHBvcnQgZm9yIG5vbi1zdGFuZGFyZCBlbmNvZGluZ3MKLSAqIDIwMDYtMDMtMDggZmwgIGZpeGVkIGEgY291cGxlIG9mIHBvdGVudGlhbCBudWxsLXJlZnMgYW5kIGxlYWtzCi0gKiAyMDA2LTAzLTEyIGZsICBtZXJnZSBpbiAyLjUgc3NpemVfdCBjaGFuZ2VzCi0gKiAyMDA3LTA4LTI1IGZsICBjYWxsIGN1c3RvbSBidWlsZGVyJ3MgY2xvc2UgbWV0aG9kIGZyb20gWE1MUGFyc2VyCi0gKiAyMDA3LTA4LTMxIGZsICBhZGRlZCBpdGVyLCBleHRlbmQgZnJvbSBFVCAxLjMKLSAqIDIwMDctMDktMDEgZmwgIGZpeGVkIFBhcnNlRXJyb3IgZXhjZXB0aW9uLCBzZXRzbGljZSBzb3VyY2UgdHlwZSwgZXRjCi0gKiAyMDA3LTA5LTAzIGZsICBmaXhlZCBoYW5kbGluZyBvZiBuZWdhdGl2ZSBpbnNlcnQgaW5kZXhlcwotICogMjAwNy0wOS0wNCBmbCAgYWRkZWQgaXRlcnRleHQgZnJvbSBFVCAxLjMKLSAqIDIwMDctMDktMDYgZmwgIGFkZGVkIHBvc2l0aW9uIGF0dHJpYnV0ZSB0byBQYXJzZUVycm9yIGV4Y2VwdGlvbgotICogMjAwOC0wNi0wNiBmbCAgZGVsYXkgZXJyb3IgcmVwb3J0aW5nIGluIGl0ZXJwYXJzZSAoZnJvbSBIcnZvamUgTmlrc2ljKQotICoKKyAqIF9lbGVtZW50dHJlZSAtIEMgYWNjZWxlcmF0b3IgZm9yIHhtbC5ldHJlZS5FbGVtZW50VHJlZQogICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDkgYnkgU2VjcmV0IExhYnMgQUIuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDkgYnkgRnJlZHJpayBMdW5kaC4KICAqCiAgKiBpbmZvQHB5dGhvbndhcmUuY29tCiAgKiBodHRwOi8vd3d3LnB5dGhvbndhcmUuY29tCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotLyogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LiAqLwotLyogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuICovCi0KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAotI2RlZmluZSBWRVJTSU9OICIxLjAuNiIKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGNvbmZpZ3VyYXRpb24gKi8KIAotLyogTGVhdmUgZGVmaW5lZCB0byBpbmNsdWRlIHRoZSBleHBhdC1iYXNlZCBYTUxQYXJzZXIgdHlwZSAqLwotI2RlZmluZSBVU0VfRVhQQVQKLQogLyogQW4gZWxlbWVudCBjYW4gaG9sZCB0aGlzIG1hbnkgY2hpbGRyZW4gd2l0aG91dCBleHRyYSBtZW1vcnkKICAgIGFsbG9jYXRpb25zLiAqLwogI2RlZmluZSBTVEFUSUNfQ0hJTERSRU4gNApAQCAtMTA3LDEwICs2Niw1MSBAQAogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZTsKIAogCi0vKiBnbHVlIGZ1bmN0aW9ucyAoc2VlIHRoZSBpbml0IGZ1bmN0aW9uIGZvciBkZXRhaWxzKSAqLwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50cGF0aF9vYmo7CisvKiBQZXItbW9kdWxlIHN0YXRlOyBQRVAgMzEyMSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpwYXJzZWVycm9yX29iajsKKyAgICBQeU9iamVjdCAqZGVlcGNvcHlfb2JqOworICAgIFB5T2JqZWN0ICplbGVtZW50cGF0aF9vYmo7Cit9IGVsZW1lbnR0cmVlc3RhdGU7CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgZWxlbWVudHRyZWVtb2R1bGU7CisKKy8qIEdpdmVuIGEgbW9kdWxlIG9iamVjdCAoYXNzdW1lZCB0byBiZSBfZWxlbWVudHRyZWUpLCBnZXQgaXRzIHBlci1tb2R1bGUKKyAqIHN0YXRlLgorICovCisjZGVmaW5lIEVUX1NUQVRFKG1vZCkgKChlbGVtZW50dHJlZXN0YXRlICopIFB5TW9kdWxlX0dldFN0YXRlKG1vZCkpCisKKy8qIEZpbmQgdGhlIG1vZHVsZSBpbnN0YW5jZSBpbXBvcnRlZCBpbiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgc3ViLWludGVycHJldGVyCisgKiBhbmQgZ2V0IGl0cyBzdGF0ZS4KKyAqLworI2RlZmluZSBFVF9TVEFURV9HTE9CQUwgXAorICAgICgoZWxlbWVudHRyZWVzdGF0ZSAqKSBQeU1vZHVsZV9HZXRTdGF0ZShQeVN0YXRlX0ZpbmRNb2R1bGUoJmVsZW1lbnR0cmVlbW9kdWxlKSkpCisKK3N0YXRpYyBpbnQKK2VsZW1lbnR0cmVlX2NsZWFyKFB5T2JqZWN0ICptKQoreworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEUobSk7CisgICAgUHlfQ0xFQVIoc3QtPnBhcnNlZXJyb3Jfb2JqKTsKKyAgICBQeV9DTEVBUihzdC0+ZGVlcGNvcHlfb2JqKTsKKyAgICBQeV9DTEVBUihzdC0+ZWxlbWVudHBhdGhfb2JqKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudHRyZWVfdHJhdmVyc2UoUHlPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEUobSk7CisgICAgUHlfVklTSVQoc3QtPnBhcnNlZXJyb3Jfb2JqKTsKKyAgICBQeV9WSVNJVChzdC0+ZGVlcGNvcHlfb2JqKTsKKyAgICBQeV9WSVNJVChzdC0+ZWxlbWVudHBhdGhfb2JqKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2VsZW1lbnR0cmVlX2ZyZWUodm9pZCAqbSkKK3sKKyAgICBlbGVtZW50dHJlZV9jbGVhcigoUHlPYmplY3QgKiltKTsKK30KIAogLyogaGVscGVycyAqLwogCkBAIC0xMTgsMTEgKzExOCwxMSBAQAogZGVlcGNvcHkoUHlPYmplY3QqIG9iamVjdCwgUHlPYmplY3QqIG1lbW8pCiB7CiAgICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLwotCiAgICAgUHlPYmplY3QqIGFyZ3M7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAotICAgIGlmICghZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqKSB7CisgICAgaWYgKCFzdC0+ZGVlcGNvcHlfb2JqKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICJkZWVwY29weSBoZWxwZXIgbm90IGZvdW5kIgpAQCAtMTMzLDcgKzEzMyw3IEBACiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBvYmplY3QsIG1lbW8pOwogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9kZWVwY29weV9vYmosIGFyZ3MpOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3Qoc3QtPmRlZXBjb3B5X29iaiwgYXJncyk7CiAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMTcsOCArMjE3LDEwIEBACiBjcmVhdGVfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGF0dHJpYikKIHsKICAgICBzZWxmLT5leHRyYSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKSk7Ci0gICAgaWYgKCFzZWxmLT5leHRyYSkKKyAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKQEAgLTI3MSwxMyArMjczLDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwogCi0gICAgaWYgKGF0dHJpYiAhPSBQeV9Ob25lICYmICFpc19lbXB0eV9kaWN0KGF0dHJpYikpIHsKLSAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBhdHRyaWIpIDwgMCkgewotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBQeV9JTkNSRUYodGFnKTsKICAgICBzZWxmLT50YWcgPSB0YWc7CiAKQEAgLTI5MSw2ICsyODYsMTQgQEAKIAogICAgIEFMTE9DKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImNyZWF0ZSBlbGVtZW50Iik7CiAgICAgUHlPYmplY3RfR0NfVHJhY2soc2VsZik7CisKKyAgICBpZiAoYXR0cmliICE9IFB5X05vbmUgJiYgIWlzX2VtcHR5X2RpY3QoYXR0cmliKSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIGF0dHJpYikgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwogfQogCkBAIC0zNDYsNiArMzQ5LDcgQEAKIAogICAgIFB5X0RFQ1JFRihhdHRyaWJfc3RyKTsKIAorICAgIC8qIGF0dHJpYiBjYW4gYmUgTlVMTCBpZiBQeURpY3RfTmV3IGZhaWxlZCAqLwogICAgIGlmIChhdHRyaWIpCiAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGF0dHJpYiwga3dkcykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MjEsOCArNDI1LDEwIEBACiAgICAgLyogbWFrZSBzdXJlIHNlbGYtPmNoaWxkcmVuIGNhbiBob2xkIHRoZSBnaXZlbiBudW1iZXIgb2YgZXh0cmEKICAgICAgICBlbGVtZW50cy4gIHNldCBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiBhbGxvY2F0aW9uIGZhaWxlZCAqLwogCi0gICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOworICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgc2l6ZSA9IHNlbGYtPmV4dHJhLT5sZW5ndGggKyBleHRyYTsKIApAQCAtNTc0LDggKzU4MCw5IEBACiAgICAgfQogCiAgICAgZWxlbSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7Ci0KICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICBpZiAoZWxlbSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChlbGVtZW50X2FkZF9zdWJlbGVtZW50KHBhcmVudCwgZWxlbSkgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKQEAgLTEwODEsNiArMTA4OCw3IEBACiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZCIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCkBAIC0xMDg5LDcgKzEwOTcsNyBAQAogICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZCk7CiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAotICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogICAgIH0KIApAQCAtMTExNyw2ICsxMTI1LDcgQEAKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAgICAgX1B5X0lERU5USUZJRVIoZmluZHRleHQpOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCAwfTsKKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POmZpbmR0ZXh0Iiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCkBAIC0xMTI0LDcgKzExMzMsNyBAQAogCiAgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmR0ZXh0LCAiT09PTyIsIHNlbGYsIHRhZywgZGVmYXVsdF92YWx1ZSwgbmFtZXNwYWNlcworICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZHRleHQsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewpAQCAtMTE1Niw2ICsxMTY1LDcgQEAKICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kYWxsIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKQEAgLTExNjQsNyArMTE3NCw3IEBACiAgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgewogICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kYWxsKTsKICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmRhbGwsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmRhbGwsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAgICAgfQogCkBAIC0xMTk2LDEzICsxMjA2LDE0IEBACiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwogICAgIF9QeV9JREVOVElGSUVSKGl0ZXJmaW5kKTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzppdGVyZmluZCIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCi0gICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKKyAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgKTsKIH0KIApAQCAtMTMxNCw4ICsxMzI1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZFbGVtZW50X1R5cGUsICZlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgaW5kZXggKz0gc2VsZi0+ZXh0cmEtPmxlbmd0aDsKQEAgLTE0NTYsOCArMTQ2OSwxMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086c2V0IiwgJmtleSwgJnZhbHVlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGF0dHJpYiA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKICAgICBpZiAoIWF0dHJpYikKQEAgLTE1NzIsOCArMTU4NywxMCBAQAogICAgICAgICBQeU9iamVjdCogcmVjeWNsZSA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0KiBzZXEgPSBOVUxMOwogCi0gICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLAogICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGgsCkBAIC0xNzg4LDcgKzE4MDUsNyBAQAogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewogICAgICAgICByZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOwotICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgUHlfWElOQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KIApAQCAtMTgwMyw4ICsxODIwLDEwIEBACiAgICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X3RhaWwoc2VsZik7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwogICAgIH0KIApAQCAtMTgyMSwxMCArMTg0MCwxMCBAQAogICAgIGNoYXIgKm5hbWUgPSAiIjsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQogICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLQotICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKKworICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnRhZyk7CiAgICAgICAgIHNlbGYtPnRhZyA9IHZhbHVlOwogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFnKTsKQEAgLTE4MzcsOCArMTg1NiwxMCBAQAogICAgICAgICBzZWxmLT50YWlsID0gdmFsdWU7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CisgICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogICAgICAgICBzZWxmLT5leHRyYS0+YXR0cmliID0gdmFsdWU7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKQEAgLTIxNTQsMTQgKzIxNzUsNiBAQAogICAgIGl0ID0gUHlPYmplY3RfR0NfTmV3KEVsZW1lbnRJdGVyT2JqZWN0LCAmRWxlbWVudEl0ZXJfVHlwZSk7CiAgICAgaWYgKCFpdCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCEoaXQtPnBhcmVudF9zdGFjayA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpKSkgewotICAgICAgICBQeU9iamVjdF9HQ19EZWwoaXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgPSBOVUxMOwotICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4ID0gMDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5uZXh0ID0gTlVMTDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodGFnKSkKICAgICAgICAgc3RhciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIqIik7CkBAIC0yMTcwLDE3ICsyMTgzLDI3IEBACiAKICAgICBpZiAoc3RhciAmJiBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodGFnLCBzdGFyLCBQeV9FUSkgPT0gMSkKICAgICAgICAgdGFnID0gUHlfTm9uZTsKLQogICAgIFB5X1hERUNSRUYoc3Rhcik7CisKKyAgICBQeV9JTkNSRUYodGFnKTsKICAgICBpdC0+c291Z2h0X3RhZyA9IHRhZzsKICAgICBpdC0+cm9vdF9kb25lID0gMDsKICAgICBpdC0+Z2V0dGV4dCA9IGdldHRleHQ7CisgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgIGl0LT5yb290X2VsZW1lbnQgPSBzZWxmOwogCi0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIFB5X0lOQ1JFRih0YWcpOwotCiAgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOworCisgICAgaXQtPnBhcmVudF9zdGFjayA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGlmIChpdC0+cGFyZW50X3N0YWNrID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCA9IE5VTEw7CisgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXggPSAwOworICAgIGl0LT5wYXJlbnRfc3RhY2stPm5leHQgPSBOVUxMOworCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQogCkBAIC0yMzczLDYgKzIzOTYsNyBAQAogewogICAgIFB5T2JqZWN0KiBub2RlOwogICAgIFB5T2JqZWN0KiB0aGlzOworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCiAgICAgaWYgKHNlbGYtPmRhdGEpIHsKICAgICAgICAgaWYgKHNlbGYtPnRoaXMgPT0gc2VsZi0+bGFzdCkgewpAQCAtMjQwMyw3ICsyNDI3LDcgQEAKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc2VsZi0+cm9vdCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgICAgIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgIHN0LT5wYXJzZWVycm9yX29iaiwKICAgICAgICAgICAgICAgICAibXVsdGlwbGUgZWxlbWVudHMgb24gdG9wIGxldmVsIgogICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY5MCwxMCArMjcxNCwxMiBAQAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qIHRoZSBleHBhdCBpbnRlcmZhY2UgKi8KIAotI2lmIGRlZmluZWQoVVNFX0VYUEFUKQotCiAjaW5jbHVkZSAiZXhwYXQuaCIKICNpbmNsdWRlICJweWV4cGF0LmgiCisKKy8qIFRoZSBQeUV4cGF0X0NBUEkgc3RydWN0dXJlIGlzIGFuIGltbXV0YWJsZSBkaXNwYXRjaCB0YWJsZSwgc28gaXQgY2FuIGJlCisgKiBjYWNoZWQgZ2xvYmFsbHkgd2l0aG91dCBiZWluZyBpbiBwZXItbW9kdWxlIHN0YXRlLgorICovCiBzdGF0aWMgc3RydWN0IFB5RXhwYXRfQ0FQSSAqZXhwYXRfY2FwaTsKICNkZWZpbmUgRVhQQVQoZnVuYykgKGV4cGF0X2NhcGktPmZ1bmMpCiAKQEAgLTI3NjAsNiArMjc4NiwxMCBAQAogICAgICAgICBpZiAoaSAhPSBzaXplKSB7CiAgICAgICAgICAgICAvKiBjb252ZXJ0IHRvIHVuaXZlcnNhbCBuYW1lICovCiAgICAgICAgICAgICB0YWcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUrMSk7CisgICAgICAgICAgICBpZiAodGFnID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyh0YWcpOwogICAgICAgICAgICAgcFswXSA9ICd7JzsKICAgICAgICAgICAgIG1lbWNweShwKzEsIHN0cmluZywgc2l6ZSk7CkBAIC0yNzk5LDYgKzI4MjksNyBAQAogZXhwYXRfc2V0X2Vycm9yKGVudW0gWE1MX0Vycm9yIGVycm9yX2NvZGUsIGludCBsaW5lLCBpbnQgY29sdW1uLCBjaGFyICptZXNzYWdlKQogewogICAgIFB5T2JqZWN0ICplcnJtc2csICplcnJvciwgKnBvc2l0aW9uLCAqY29kZTsKKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAogICAgIGVycm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlZCwgY29sdW1uICVkIiwKICAgICAgICAgICAgICAgICBtZXNzYWdlID8gbWVzc2FnZSA6IEVYUEFUKEVycm9yU3RyaW5nKShlcnJvcl9jb2RlKSwKQEAgLTI4MDYsNyArMjgzNyw3IEBACiAgICAgaWYgKGVycm1zZyA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAKLSAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiwgIk8iLCBlcnJtc2cpOworICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHN0LT5wYXJzZWVycm9yX29iaiwgIk8iLCBlcnJtc2cpOwogICAgIFB5X0RFQ1JFRihlcnJtc2cpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTI4MzYsNyArMjg2Nyw3IEBACiAgICAgfQogICAgIFB5X0RFQ1JFRihwb3NpdGlvbik7CiAKLSAgICBQeUVycl9TZXRPYmplY3QoZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmosIGVycm9yKTsKKyAgICBQeUVycl9TZXRPYmplY3Qoc3QtPnBhcnNlZXJyb3Jfb2JqLCBlcnJvcik7CiAgICAgUHlfREVDUkVGKGVycm9yKTsKIH0KIApAQCAtMjg1NCw2ICsyODg1LDkgQEAKICAgICBpZiAoZGF0YV9sZW4gPCAyIHx8IGRhdGFfaW5bMF0gIT0gJyYnKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAga2V5ID0gUHlVbmljb2RlX0RlY29kZVVURjgoZGF0YV9pbiArIDEsIGRhdGFfbGVuIC0gMiwgInN0cmljdCIpOwogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm47CkBAIC0yODk0LDYgKzI5MjgsOSBAQAogICAgIFB5T2JqZWN0KiBhdHRyaWI7CiAgICAgaW50IG9rOwogCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8qIHRhZyBuYW1lICovCiAgICAgdGFnID0gbWFrZXVuaXZlcnNhbChzZWxmLCB0YWdfaW4pOwogICAgIGlmICghdGFnKQpAQCAtMjk1Miw2ICsyOTg5LDkgQEAKICAgICBQeU9iamVjdCogZGF0YTsKICAgICBQeU9iamVjdCogcmVzOwogCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGRhdGEgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChkYXRhX2luLCBkYXRhX2xlbiwgInN0cmljdCIpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOyAvKiBwYXJzZXIgd2lsbCBsb29rIGZvciBlcnJvcnMgKi8KQEAgLTI5NzUsNiArMzAxNSw5IEBACiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogcmVzID0gTlVMTDsKIAorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKQogICAgICAgICAvKiBzaG9ydGN1dCAqLwogICAgICAgICAvKiB0aGUgc3RhbmRhcmQgdHJlZSBidWlsZGVyIGRvZXNuJ3QgbG9vayBhdCB0aGUgZW5kIHRhZyAqLwpAQCAtMjk5OSw2ICszMDQyLDkgQEAKICAgICBQeU9iamVjdCogc3ByZWZpeCA9IE5VTEw7CiAgICAgUHlPYmplY3QqIHN1cmkgPSBOVUxMOwogCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHN1cmkgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCh1cmksIHN0cmxlbih1cmkpLCAic3RyaWN0Iik7CiAgICAgaWYgKCFzdXJpKQogICAgICAgICByZXR1cm47CkBAIC0zMDIzLDYgKzMwNjksOSBAQAogc3RhdGljIHZvaWQKIGV4cGF0X2VuZF9uc19oYW5kbGVyKFhNTFBhcnNlck9iamVjdCogc2VsZiwgY29uc3QgWE1MX0NoYXIqIHByZWZpeF9pbikKIHsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdHJlZWJ1aWxkZXJfaGFuZGxlX25hbWVzcGFjZSgKICAgICAgICAgKFRyZWVCdWlsZGVyT2JqZWN0Kikgc2VsZi0+dGFyZ2V0LCAwLCBOVUxMLCBOVUxMCiAgICAgICAgICk7CkBAIC0zMDM0LDYgKzMwODMsOSBAQAogICAgIFB5T2JqZWN0KiBjb21tZW50OwogICAgIFB5T2JqZWN0KiByZXM7CiAKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHNlbGYtPmhhbmRsZV9jb21tZW50KSB7CiAgICAgICAgIGNvbW1lbnQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChjb21tZW50X2luLCBzdHJsZW4oY29tbWVudF9pbiksICJzdHJpY3QiKTsKICAgICAgICAgaWYgKGNvbW1lbnQpIHsKQEAgLTMwNTYsNiArMzEwOCw5IEBACiAgICAgUHlPYmplY3QgKnBhcnNlcl9kb2N0eXBlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBkb2N0eXBlX25hbWVfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBkb2N0eXBlX25hbWUpOwogICAgIGlmICghZG9jdHlwZV9uYW1lX29iaikKICAgICAgICAgcmV0dXJuOwpAQCAtMzEyNCw2ICszMTc5LDkgQEAKICAgICBQeU9iamVjdCogZGF0YTsKICAgICBQeU9iamVjdCogcmVzOwogCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChzZWxmLT5oYW5kbGVfcGkpIHsKICAgICAgICAgdGFyZ2V0ID0gUHlVbmljb2RlX0RlY29kZVVURjgodGFyZ2V0X2luLCBzdHJsZW4odGFyZ2V0X2luKSwgInN0cmljdCIpOwogICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RlY29kZVVURjgoZGF0YV9pbiwgc3RybGVuKGRhdGFfaW4pLCAic3RyaWN0Iik7CkBAIC0zMjk2LDYgKzMzNTQsNyBAQAogewogICAgIGludCBvazsKIAorICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgb2sgPSBFWFBBVChQYXJzZSkoc2VsZi0+cGFyc2VyLCBkYXRhLCBkYXRhX2xlbiwgZmluYWwpOwogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCkBAIC0zMzcyLDEwICszNDMxLDkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX3BhcnNlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit4bWxwYXJzZXJfcGFyc2Vfd2hvbGUoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKLSAgICAvKiAoaW50ZXJuYWwpIHBhcnNlIHVudGlsIGVuZCBvZiBpbnB1dCBzdHJlYW0gKi8KLQorICAgIC8qIChpbnRlcm5hbCkgcGFyc2UgdGhlIHdob2xlIGlucHV0LCB1bnRpbCBlbmQgb2Ygc3RyZWFtICovCiAgICAgUHlPYmplY3QqIHJlYWRlcjsKICAgICBQeU9iamVjdCogYnVmZmVyOwogICAgIFB5T2JqZWN0KiB0ZW1wOwpAQCAtMzQ1NiwxNCArMzUxNCwxNCBAQAogeG1scGFyc2VyX3NldGV2ZW50cyhYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCisgICAgUHlfc3NpemVfdCBpLCBzZXFsZW47CisgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnRhcmdldDsKIAotICAgIFB5X3NzaXplX3QgaTsKLSAgICBUcmVlQnVpbGRlck9iamVjdCogdGFyZ2V0OwotCi0gICAgUHlPYmplY3QqIGV2ZW50czsgLyogZXZlbnQgY29sbGVjdG9yICovCi0gICAgUHlPYmplY3QqIGV2ZW50X3NldCA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOl9zZXRldmVudHMiLCAgJlB5TGlzdF9UeXBlLCAmZXZlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnRfc2V0KSkKKyAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOworICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZXZlbnRzX3NlcTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86X3NldGV2ZW50cyIsICAmUHlMaXN0X1R5cGUsICZldmVudHNfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZldmVudHNfdG9fcmVwb3J0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewpAQCAtMzQ3Nyw5ICszNTM1LDkgQEAKIAogICAgIHRhcmdldCA9IChUcmVlQnVpbGRlck9iamVjdCopIHNlbGYtPnRhcmdldDsKIAotICAgIFB5X0lOQ1JFRihldmVudHMpOworICAgIFB5X0lOQ1JFRihldmVudHNfcXVldWUpOwogICAgIFB5X1hERUNSRUYodGFyZ2V0LT5ldmVudHMpOwotICAgIHRhcmdldC0+ZXZlbnRzID0gZXZlbnRzOworICAgIHRhcmdldC0+ZXZlbnRzID0gZXZlbnRzX3F1ZXVlOwogCiAgICAgLyogY2xlYXIgb3V0IGV4aXN0aW5nIGV2ZW50cyAqLwogICAgIFB5X0NMRUFSKHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqKTsKQEAgLTM0ODcsNzUgKzM1NDUsNzEgQEAKICAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaik7CiAgICAgUHlfQ0xFQVIodGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqKTsKIAotICAgIGlmIChldmVudF9zZXQgPT0gUHlfTm9uZSkgeworICAgIGlmIChldmVudHNfdG9fcmVwb3J0ID09IFB5X05vbmUpIHsKICAgICAgICAgLyogZGVmYXVsdCBpcyAiZW5kIiBvbmx5ICovCiAgICAgICAgIHRhcmdldC0+ZW5kX2V2ZW50X29iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJlbmQiKTsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCi0gICAgaWYgKCFQeVR1cGxlX0NoZWNrKGV2ZW50X3NldCkpIC8qIEZJWE1FOiBoYW5kbGUgYXJiaXRyYXJ5IHNlcXVlbmNlcyAqLwotICAgICAgICBnb3RvIGVycm9yOworICAgIGlmICghKGV2ZW50c19zZXEgPSBQeVNlcXVlbmNlX0Zhc3QoZXZlbnRzX3RvX3JlcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMgbXVzdCBiZSBhIHNlcXVlbmNlIikpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGV2ZW50X3NldCk7IGkrKykgewotICAgICAgICBQeU9iamVjdCogaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oZXZlbnRfc2V0LCBpKTsKLSAgICAgICAgY2hhciogZXZlbnQ7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgICAgIGV2ZW50ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhpdGVtKTsKLSAgICAgICAgICAgIGlmIChldmVudCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0gZWxzZSBpZiAoUHlCeXRlc19DaGVjayhpdGVtKSkKLSAgICAgICAgICAgIGV2ZW50ID0gUHlCeXRlc19BU19TVFJJTkcoaXRlbSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX1NpemUoZXZlbnRzX3NlcSk7CisgICAgZm9yIChpID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7CisgICAgICAgIFB5T2JqZWN0ICpldmVudF9uYW1lX29iaiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShldmVudHNfc2VxLCBpKTsKKyAgICAgICAgY2hhciAqZXZlbnRfbmFtZSA9IE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZXZlbnRfbmFtZV9vYmopKSB7CisgICAgICAgICAgICBldmVudF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhldmVudF9uYW1lX29iaik7CisgICAgICAgIH0gZWxzZSBpZiAoUHlCeXRlc19DaGVjayhldmVudF9uYW1lX29iaikpIHsKKyAgICAgICAgICAgIGV2ZW50X25hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhldmVudF9uYW1lX29iaik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmNtcChldmVudCwgInN0YXJ0IikgPT0gMCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICAgICAgdGFyZ2V0LT5zdGFydF9ldmVudF9vYmogPSBpdGVtOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChldmVudCwgImVuZCIpID09IDApIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKworICAgICAgICBpZiAoZXZlbnRfbmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXZlbnRzX3NlcSk7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZXZlbnRzIHNlcXVlbmNlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZXZlbnRfbmFtZSwgInN0YXJ0IikgPT0gMCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGV2ZW50X25hbWVfb2JqKTsKKyAgICAgICAgICAgIHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqID0gZXZlbnRfbmFtZV9vYmo7CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGV2ZW50X25hbWUsICJlbmQiKSA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoZXZlbnRfbmFtZV9vYmopOwogICAgICAgICAgICAgUHlfWERFQ1JFRih0YXJnZXQtPmVuZF9ldmVudF9vYmopOwotICAgICAgICAgICAgdGFyZ2V0LT5lbmRfZXZlbnRfb2JqID0gaXRlbTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZXZlbnQsICJzdGFydC1ucyIpID09IDApIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIHRhcmdldC0+ZW5kX2V2ZW50X29iaiA9IGV2ZW50X25hbWVfb2JqOworICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChldmVudF9uYW1lLCAic3RhcnQtbnMiKSA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoZXZlbnRfbmFtZV9vYmopOwogICAgICAgICAgICAgUHlfWERFQ1JFRih0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaik7Ci0gICAgICAgICAgICB0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IGl0ZW07CisgICAgICAgICAgICB0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IGV2ZW50X25hbWVfb2JqOwogICAgICAgICAgICAgRVhQQVQoU2V0TmFtZXNwYWNlRGVjbEhhbmRsZXIpKAogICAgICAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgICAgICAgICAoWE1MX1N0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIpIGV4cGF0X3N0YXJ0X25zX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgKFhNTF9FbmROYW1lc3BhY2VEZWNsSGFuZGxlcikgZXhwYXRfZW5kX25zX2hhbmRsZXIKICAgICAgICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChldmVudCwgImVuZC1ucyIpID09IDApIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZXZlbnRfbmFtZSwgImVuZC1ucyIpID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihldmVudF9uYW1lX29iaik7CiAgICAgICAgICAgICBQeV9YREVDUkVGKHRhcmdldC0+ZW5kX25zX2V2ZW50X29iaik7Ci0gICAgICAgICAgICB0YXJnZXQtPmVuZF9uc19ldmVudF9vYmogPSBpdGVtOworICAgICAgICAgICAgdGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqID0gZXZlbnRfbmFtZV9vYmo7CiAgICAgICAgICAgICBFWFBBVChTZXROYW1lc3BhY2VEZWNsSGFuZGxlcikoCiAgICAgICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAgICAgICAgIChYTUxfU3RhcnROYW1lc3BhY2VEZWNsSGFuZGxlcikgZXhwYXRfc3RhcnRfbnNfaGFuZGxlciwKICAgICAgICAgICAgICAgICAoWE1MX0VuZE5hbWVzcGFjZURlY2xIYW5kbGVyKSBleHBhdF9lbmRfbnNfaGFuZGxlcgogICAgICAgICAgICAgICAgICk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAidW5rbm93biBldmVudCAnJXMnIiwgZXZlbnQKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgUHlfREVDUkVGKGV2ZW50c19zZXEpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmtub3duIGV2ZW50ICclcyciLCBldmVudF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogCisgICAgUHlfREVDUkVGKGV2ZW50c19zZXEpOwogICAgIFB5X1JFVFVSTl9OT05FOwotCi0gIGVycm9yOgotICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAiaW52YWxpZCBldmVudCB0dXBsZSIKLSAgICAgICAgKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIHhtbHBhcnNlcl9tZXRob2RzW10gPSB7CiAgICAgeyJmZWVkIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZmVlZCwgTUVUSF9PfSwKICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfcGFyc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9wYXJzZSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Il9wYXJzZV93aG9sZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3BhcnNlX3dob2xlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX3NldGV2ZW50cyIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTfSwKICAgICB7ImRvY3R5cGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9kb2N0eXBlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQpAQCAtMzYyNyw4ICszNjgxLDYgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCi0jZW5kaWYKLQogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qIHB5dGhvbiBtb2R1bGUgaW50ZXJmYWNlICovCiAKQEAgLTM2MzgsMjIgKzM2OTAsMjkgQEAKIH07CiAKIAotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfZWxlbWVudHRyZWVtb2R1bGUgPSB7Ci0gICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAgICAgIl9lbGVtZW50dHJlZSIsCi0gICAgICAgIE5VTEwsCi0gICAgICAgIC0xLAotICAgICAgICBfZnVuY3Rpb25zLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGVsZW1lbnR0cmVlbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2VsZW1lbnR0cmVlIiwKKyAgICBOVUxMLAorICAgIHNpemVvZihlbGVtZW50dHJlZXN0YXRlKSwKKyAgICBfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgZWxlbWVudHRyZWVfdHJhdmVyc2UsCisgICAgZWxlbWVudHRyZWVfY2xlYXIsCisgICAgZWxlbWVudHRyZWVfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fZWxlbWVudHRyZWUodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSwgKnRlbXA7CisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3Q7CisKKyAgICBtID0gUHlTdGF0ZV9GaW5kTW9kdWxlKCZlbGVtZW50dHJlZW1vZHVsZSk7CisgICAgaWYgKG0pIHsKKyAgICAgICAgUHlfSU5DUkVGKG0pOworICAgICAgICByZXR1cm4gbTsKKyAgICB9CiAKICAgICAvKiBJbml0aWFsaXplIG9iamVjdCB0eXBlcyAqLwogICAgIGlmIChQeVR5cGVfUmVhZHkoJkVsZW1lbnRJdGVyX1R5cGUpIDwgMCkKQEAgLTM2NjIsMjEgKzM3MjEsMjAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmRWxlbWVudF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotI2lmIGRlZmluZWQoVVNFX0VYUEFUKQogICAgIGlmIChQeVR5cGVfUmVhZHkoJlhNTFBhcnNlcl9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotI2VuZGlmCiAKLSAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfZWxlbWVudHRyZWVtb2R1bGUpOworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmVsZW1lbnR0cmVlbW9kdWxlKTsKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0ID0gRVRfU1RBVEUobSk7CiAKICAgICBpZiAoISh0ZW1wID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJjb3B5IikpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbGVtZW50dHJlZV9kZWVwY29weV9vYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJkZWVwY29weSIpOworICAgIHN0LT5kZWVwY29weV9vYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJkZWVwY29weSIpOwogICAgIFB5X1hERUNSRUYodGVtcCk7CiAKLSAgICBpZiAoIShlbGVtZW50cGF0aF9vYmogPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInhtbC5ldHJlZS5FbGVtZW50UGF0aCIpKSkKKyAgICBpZiAoIShzdC0+ZWxlbWVudHBhdGhfb2JqID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ4bWwuZXRyZWUuRWxlbWVudFBhdGgiKSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogbGluayBhZ2FpbnN0IHB5ZXhwYXQgKi8KQEAgLTM2OTYsMTEgKzM3NTQsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oCisgICAgc3QtPnBhcnNlZXJyb3Jfb2JqID0gUHlFcnJfTmV3RXhjZXB0aW9uKAogICAgICAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlBhcnNlRXJyb3IiLCBQeUV4Y19TeW50YXhFcnJvciwgTlVMTAogICAgICAgICApOwotICAgIFB5X0lOQ1JFRihlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQYXJzZUVycm9yIiwgZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmopOworICAgIFB5X0lOQ1JFRihzdC0+cGFyc2VlcnJvcl9vYmopOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUGFyc2VFcnJvciIsIHN0LT5wYXJzZWVycm9yX29iaik7CiAKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFbGVtZW50IiwgKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSk7CkBAIC0zNzA4LDEwICszNzY2LDggQEAKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJlRyZWVCdWlsZGVyX1R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVHJlZUJ1aWxkZXIiLCAoUHlPYmplY3QgKikmVHJlZUJ1aWxkZXJfVHlwZSk7CiAKLSNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJlhNTFBhcnNlcl9UeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlhNTFBhcnNlciIsIChQeU9iamVjdCAqKSZYTUxQYXJzZXJfVHlwZSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jIGIvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCmluZGV4IDhmMDdhODkuLjU3YjFhYzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAgIG9mIGZyb3plbiBtb2R1bGVzIGluc3RlYWQsIGxlZnQgZGVsaWJlcmF0ZWx5IGJsYW5rIHNvIGFzIHRvIGF2b2lkCiAgICB1bmludGVudGlvbmFsIGltcG9ydCBvZiBhIHN0YWxlIHZlcnNpb24gb2YgX2Zyb3plbl9pbXBvcnRsaWIuICovCiAKLXN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworY29uc3Qgc3RhdGljIHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CiAgICAgezAsIDAsIDB9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yNSw3ICsyNSw3IEBACiAvKiBPbiBXaW5kb3dzLCB0aGlzIGxpbmtzIHdpdGggdGhlIHJlZ3VsYXIgcHl0aG9uWFkuZGxsLCBzbyB0aGlzIHZhcmlhYmxlIGNvbWVzCiAgICBmcm9tIGZyb3plbi5vYmouIEluIHRoZSBNYWtlZmlsZSwgZnJvemVuLm8gaXMgbm90IGxpbmtlZCBpbnRvIHRoaXMgZXhlY3V0YWJsZSwKICAgIHNvIHdlIGRlZmluZSB0aGUgdmFyaWFibGUgaGVyZS4gKi8KLXN0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOworY29uc3Qgc3RydWN0IF9mcm96ZW4gKlB5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CiAjZW5kaWYKIAogY29uc3QgY2hhciBoZWFkZXJbXSA9ICIvKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8iOwpAQCAtMTA2LDcgKzEwNiw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGZwcmludGYob3V0ZmlsZSwgIiVzXG4iLCBoZWFkZXIpOwotICAgIGZwcmludGYob3V0ZmlsZSwgInVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0ge1xuIik7CisgICAgZnByaW50ZihvdXRmaWxlLCAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKICAgICBmb3IgKG4gPSAwOyBuIDwgZGF0YV9zaXplOyBuICs9IDE2KSB7CiAgICAgICAgIHNpemVfdCBpLCBlbmQgPSBQeV9NSU4obiArIDE2LCBkYXRhX3NpemUpOwogICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19nZXN0YWx0LmMgYi9Nb2R1bGVzL19nZXN0YWx0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMzA2ODMuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fZ2VzdGFsdC5jCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1Db3B5cmlnaHQgMTk5MS0xOTk3IGJ5IFN0aWNodGluZyBNYXRoZW1hdGlzY2ggQ2VudHJ1bSwgQW1zdGVyZGFtLAotVGhlIE5ldGhlcmxhbmRzLgotCi0gICAgICAgICAgICAgICAgICAgICAgICBBbGwgUmlnaHRzIFJlc2VydmVkCi0KLVBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwotZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLAotcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdAotYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluCi1zdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lcyBvZiBTdGljaHRpbmcgTWF0aGVtYXRpc2NoCi1DZW50cnVtIG9yIENXSSBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0bwotZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uCi0KLVNUSUNIVElORyBNQVRIRU1BVElTQ0ggQ0VOVFJVTSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8KLVRISVMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKLUZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIFNUSUNIVElORyBNQVRIRU1BVElTQ0ggQ0VOVFJVTSBCRSBMSUFCTEUKLUZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCi1XSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLUFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUCi1PRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIE1hY2ludG9zaCBHZXN0YWx0IGludGVyZmFjZSAqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0KLSNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+Ci0KLS8qIENvbnZlcnQgYSA0LWNoYXIgc3RyaW5nIG9iamVjdCBhcmd1bWVudCB0byBhbiBPU1R5cGUgdmFsdWUgKi8KLXN0YXRpYyBpbnQKLWNvbnZlcnRfdG9fT1NUeXBlKFB5T2JqZWN0ICp2LCBPU1R5cGUgKnByKQotewotICAgIHVpbnQzMl90IHRtcDsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeVVuaWNvZGVfR2V0TGVuZ3RoKHYpICE9IDQpIHsKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiT1NUeXBlIGFyZyBtdXN0IGJlIHN0cmluZyBvZiA0IGNoYXJzIik7Ci0gICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIG1lbWNweSgoY2hhciAqKSZ0bXAsIF9QeVVuaWNvZGVfQXNTdHJpbmcodiksIDQpOwotICAgICpwciA9IChPU1R5cGUpbnRvaGwodG1wKTsKLSAgICByZXR1cm4gMTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWdlc3RhbHRfZ2VzdGFsdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgT1NFcnIgaUVycjsKLSAgICBPU1R5cGUgc2VsZWN0b3I7Ci0gICAgU0ludDMyIHJlc3BvbnNlOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyYiLCBjb252ZXJ0X3RvX09TVHlwZSwgJnNlbGVjdG9yKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaUVyciA9IEdlc3RhbHQoc2VsZWN0b3IsICZyZXNwb25zZSk7Ci0gICAgaWYgKGlFcnIgIT0gMCkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAibm9uLXplcm8gZXhpdCBjb2RlISIpOwotICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJlc3BvbnNlKTsKLX0KLQotc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBnZXN0YWx0X21ldGhvZHNbXSA9IHsKLSAgICB7Imdlc3RhbHQiLCBnZXN0YWx0X2dlc3RhbHQsIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsIE5VTEx9IC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGdlc3RhbHRtb2R1bGUgPSB7Ci0gICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJfZ2VzdGFsdCIsCi0gICAgTlVMTCwKLSAgICAtMSwKLSAgICBnZXN0YWx0X21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9fZ2VzdGFsdCh2b2lkKQotewotICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJmdlc3RhbHRtb2R1bGUpOwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggM2FiMWMwYy4uYzhkYjVlZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0xNywyNCArMTcsNiBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKIAotI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKLSAgICAjZGVmaW5lIEVOVEVSX0hBU0hMSUIob2JqKSBcCi0gICAgICAgIGlmICgob2JqKS0+bG9jaykgeyBcCi0gICAgICAgICAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXAotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAotICAgICAgICAgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCi0gICAgICAgICAgICB9IFwKLSAgICAgICAgfQotICAgICNkZWZpbmUgTEVBVkVfSEFTSExJQihvYmopIFwKLSAgICAgICAgaWYgKChvYmopLT5sb2NrKSB7IFwKLSAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jaygob2JqKS0+bG9jayk7IFwKLSAgICAgICAgfQotI2Vsc2UKLSAgICAjZGVmaW5lIEVOVEVSX0hBU0hMSUIob2JqKQotICAgICNkZWZpbmUgTEVBVkVfSEFTSExJQihvYmopCi0jZW5kaWYKIAogLyogRVZQIGlzIHRoZSBwcmVmZXJyZWQgaW50ZXJmYWNlIHRvIGhhc2hpbmcgaW4gT3BlblNTTCAqLwogI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CkBAIC00MywxMCArMjUsNiBAQAogCiAjZGVmaW5lIE1VTkNIX1NJWkUgSU5UX01BWAogCi0vKiBUT0RPKGdwcyk6IFdlIHNob3VsZCBwcm9iYWJseSBtYWtlIHRoaXMgYSBtb2R1bGUgb3IgRVZQb2JqZWN0IGF0dHJpYnV0ZQotICogdG8gYWxsb3cgdGhlIHVzZXIgdG8gb3B0aW1pemUgYmFzZWQgb24gdGhlIHBsYXRmb3JtIHRoZXkncmUgdXNpbmcuICovCi0jZGVmaW5lIEhBU0hMSUJfR0lMX01JTlNJWkUgMjA0OAotCiAjaWZuZGVmIEhBU0hfT0JKX0NPTlNUUlVDVE9SCiAjZGVmaW5lIEhBU0hfT0JKX0NPTlNUUlVDVE9SIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKaW5kZXggZjM3N2U5Yy4uOTZhZmNkYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGVhcHFtb2R1bGUuYworKysgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCkBAIC0xNjgsNyArMTY4LDEwIEBACiAKICAgICBsYXN0ZWx0ID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIG4tMSkgOwogICAgIFB5X0lOQ1JFRihsYXN0ZWx0KTsKLSAgICBQeUxpc3RfU2V0U2xpY2UoaGVhcCwgbi0xLCBuLCBOVUxMKTsKKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGhlYXAsIG4tMSwgbiwgTlVMTCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihsYXN0ZWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIG4tLTsKIAogICAgIGlmICghbikKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggNGE3ZTc1OC4uMTQ0NTdlOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTUzMyw2ICs1MzMsMzEgQEAKIH0KIAogCitQeU9iamVjdCAqCitfUHlJT19nZXRfbG9jYWxlX21vZHVsZShfUHlJT19TdGF0ZSAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKm1vZDsKKyAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgIT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoUHlXZWFrcmVmX0NoZWNrUmVmKHN0YXRlLT5sb2NhbGVfbW9kdWxlKSk7CisgICAgICAgIG1vZCA9IFB5V2Vha3JlZl9HRVRfT0JKRUNUKHN0YXRlLT5sb2NhbGVfbW9kdWxlKTsKKyAgICAgICAgaWYgKG1vZCAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgIH0KKyAgICAgICAgUHlfQ0xFQVIoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOworICAgIH0KKyAgICBtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImxvY2FsZSIpOworICAgIGlmIChtb2QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RhdGUtPmxvY2FsZV9tb2R1bGUgPSBQeVdlYWtyZWZfTmV3UmVmKG1vZCwgTlVMTCk7CisgICAgaWYgKHN0YXRlLT5sb2NhbGVfbW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG1vZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gbW9kOworfQorCisKIHN0YXRpYyBpbnQKIGlvbW9kdWxlX3RyYXZlcnNlKFB5T2JqZWN0ICptb2QsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKSB7CiAgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fTU9EX1NUQVRFKG1vZCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaCBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCmluZGV4IDBmZTkwYTMuLmI5MGE2NTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5oCkBAIC03Nyw3ICs3Nyw3IEBACiAgICBsb25nIHdpdGggIiVsbGQiIGV2ZW4gd2hlbiBib3RoIGxvbmcgYW5kIGxvbmcgbG9uZyBoYXZlIHRoZSBzYW1lCiAgICBwcmVjaXNpb24uICovCiAKLSNpZiBkZWZpbmVkKE1TX1dJTjY0KSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiBXaW5kb3dzIHVzZXMgbG9uZyBsb25nIGZvciBvZmZzZXRzICovCiB0eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKQEAgLTEzNyw2ICsxMzcsOCBAQAogI2RlZmluZSBJT19NT0RfU1RBVEUobW9kKSAoKF9QeUlPX1N0YXRlICopUHlNb2R1bGVfR2V0U3RhdGUobW9kKSkKICNkZWZpbmUgSU9fU1RBVEUgSU9fTU9EX1NUQVRFKFB5U3RhdGVfRmluZE1vZHVsZSgmX1B5SU9fTW9kdWxlKSkKIAorZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19nZXRfbG9jYWxlX21vZHVsZShfUHlJT19TdGF0ZSAqKTsKKwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfY2xvc2U7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9jbG9zZWQ7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9kZWNvZGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKaW5kZXggM2FmZTdiMS4uNmZlNWQ1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCisrKyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwpAQCAtMTkwLDcgKzE5MCw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAvKnRwX2ZsYWdzKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgLyp0cF9mbGFncyovCiAgICAgYnVmZmVyZWRpb2Jhc2VfZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtMjA5LDYgKzIxMCwxNiBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCkBAIC0yMjAsNyArMjMxLDcgQEAKICAgICBpbnQgZGV0YWNoZWQ7CiAgICAgaW50IHJlYWRhYmxlOwogICAgIGludCB3cml0YWJsZTsKLSAgICBpbnQgZGVhbGxvY2F0aW5nOworICAgIGNoYXIgZmluYWxpemluZzsKIAogICAgIC8qIFRydWUgaWYgdGhpcyBpcyBhIHZhbmlsbGEgQnVmZmVyZWQgb2JqZWN0IChyYXRoZXIgdGhhbiBhIHVzZXIgZGVyaXZlZAogICAgICAgIGNsYXNzKSAqYW5kKiB0aGUgcmF3IHN0cmVhbSBpcyBhIHZhbmlsbGEgRmlsZUlPIG9iamVjdC4gKi8KQEAgLTM4NCw4ICszOTUsOCBAQAogc3RhdGljIHZvaWQKIGJ1ZmZlcmVkX2RlYWxsb2MoYnVmZmVyZWQgKnNlbGYpCiB7Ci0gICAgc2VsZi0+ZGVhbGxvY2F0aW5nID0gMTsKLSAgICBpZiAoc2VsZi0+b2sgJiYgX1B5SU9CYXNlX2ZpbmFsaXplKChQeU9iamVjdCAqKSBzZWxmKSA8IDApCisgICAgc2VsZi0+ZmluYWxpemluZyA9IDE7CisgICAgaWYgKF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQogICAgICAgICByZXR1cm47CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CiAgICAgc2VsZi0+b2sgPSAwOwpAQCAtNDI4LDggKzQzOSw2IEBACiBzdGF0aWMgaW50CiBidWZmZXJlZF9jbGVhcihidWZmZXJlZCAqc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+b2sgJiYgX1B5SU9CYXNlX2ZpbmFsaXplKChQeU9iamVjdCAqKSBzZWxmKSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKICAgICBzZWxmLT5vayA9IDA7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmF3KTsKICAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKQEAgLTUwOCw3ICs1MTcsNyBAQAogICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+ZGVhbGxvY2F0aW5nKSB7CisgICAgaWYgKHNlbGYtPmZpbmFsaXppbmcpIHsKICAgICAgICAgUHlPYmplY3QgKnIgPSBidWZmZXJlZF9kZWFsbG9jX3dhcm4oc2VsZiwgKFB5T2JqZWN0ICopIHNlbGYpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKQEAgLTUyNyw2ICs1MzYsMTEgQEAKIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPnJhdywgX1B5SU9fc3RyX2Nsb3NlLCBOVUxMKTsKIAorICAgIGlmIChzZWxmLT5idWZmZXIpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5idWZmZXIpOworICAgICAgICBzZWxmLT5idWZmZXIgPSBOVUxMOworICAgIH0KKwogICAgIGlmIChleGMgIT0gTlVMTCkgewogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CkBAIC02NTgsNiArNjcyLDExIEBACiBfc2V0X0Jsb2NraW5nSU9FcnJvcihjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKIHsKICAgICBQeU9iamVjdCAqZXJyOworI2lmZGVmIFB5X0RFQlVHCisgICAgLyogaW4gZGVidWcgbW9kZSwgUHlFdmFsX0V2YWxGcmFtZUV4KCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24gZXJyb3IKKyAgICAgICBpZiBhbiBleGNlcHRpb24gaXMgc2V0IHdoZW4gaXQgaXMgY2FsbGVkICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKyNlbmRpZgogICAgIGVyciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19CbG9ja2luZ0lPRXJyb3IsICJpc24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubywgbXNnLCB3cml0dGVuKTsKICAgICBpZiAoZXJyKQpAQCAtMTczOSw2ICsxNzU4LDcgQEAKIAogc3RhdGljIFB5TWVtYmVyRGVmIGJ1ZmZlcmVkcmVhZGVyX21lbWJlcnNbXSA9IHsKICAgICB7InJhdyIsIFRfT0JKRUNULCBvZmZzZXRvZihidWZmZXJlZCwgcmF3KSwgUkVBRE9OTFl9LAorICAgIHsiX2ZpbmFsaXppbmciLCBUX0JPT0wsIG9mZnNldG9mKGJ1ZmZlcmVkLCBmaW5hbGl6aW5nKSwgMH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xNzcxLDcgKzE3OTEsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKLSAgICAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKnRwX2ZsYWdzKi8KKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLwogICAgIGJ1ZmZlcmVkcmVhZGVyX2RvYywgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWJ1ZmZlcmVkX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KWJ1ZmZlcmVkX2NsZWFyLCAgICAvKiB0cF9jbGVhciAqLwpAQCAtMTc5MCw2ICsxODEwLDE2IEBACiAgICAgKGluaXRwcm9jKWJ1ZmZlcmVkcmVhZGVyX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogDAogCkBAIC0yMTIwLDYgKzIxNTAsNyBAQAogCiBzdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWR3cml0ZXJfbWVtYmVyc1tdID0gewogICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTIxNTIsNyArMjE4Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAvKnRwX2ZsYWdzKi8KKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgLyp0cF9mbGFncyovCiAgICAgYnVmZmVyZWR3cml0ZXJfZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCkBAIC0yMTcxLDYgKzIyMDIsMTYgQEAKICAgICAoaW5pdHByb2MpYnVmZmVyZWR3cml0ZXJfaW5pdCwgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAMCiAKQEAgLTI0MDYsNyArMjQ0Nyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAvKiB0cF9mbGFncyAqLworICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKiB0cF9mbGFncyAqLwogICAgIGJ1ZmZlcmVkcndwYWlyX2RvYywgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWJ1ZmZlcmVkcndwYWlyX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KWJ1ZmZlcmVkcndwYWlyX2NsZWFyLCAvKiB0cF9jbGVhciAqLwpAQCAtMjQyNSw2ICsyNDY2LDE2IEBACiAgICAgKGluaXRwcm9jKWJ1ZmZlcmVkcndwYWlyX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogDAogCkBAIC0yNTEyLDYgKzI1NjMsNyBAQAogCiBzdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWRyYW5kb21fbWVtYmVyc1tdID0gewogICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTI1NDQsNyArMjU5Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAvKnRwX2ZsYWdzKi8KKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgLyp0cF9mbGFncyovCiAgICAgYnVmZmVyZWRyYW5kb21fZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCkBAIC0yNTYzLDQgKzI2MTUsMTQgQEAKICAgICAoaW5pdHByb2MpYnVmZmVyZWRyYW5kb21faW5pdCwgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDJkMDIzOWUuLmU4OGFlODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC01MSw3ICs1MSw3IEBACiAgICAgdW5zaWduZWQgaW50IHdyaXRhYmxlIDogMTsKICAgICBzaWduZWQgaW50IHNlZWthYmxlIDogMjsgLyogLTEgbWVhbnMgdW5rbm93biAqLwogICAgIHVuc2lnbmVkIGludCBjbG9zZWZkIDogMTsKLSAgICB1bnNpZ25lZCBpbnQgZGVhbGxvY2F0aW5nOiAxOworICAgIGNoYXIgZmluYWxpemluZzsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiB9IGZpbGVpbzsKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgICAgICBzZWxmLT5mZCA9IC0xOwogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9Ci0gICAgaWYgKHNlbGYtPmRlYWxsb2NhdGluZykgeworICAgIGlmIChzZWxmLT5maW5hbGl6aW5nKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyID0gZmlsZWlvX2RlYWxsb2Nfd2FybihzZWxmLCAoUHlPYmplY3QgKikgc2VsZik7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwpAQCAtMzkxLDEyICszOTEsNyBAQAogCiAgICAgICAgIGZkX2lzX293biA9IDE7CiAgICAgICAgIGlmIChzZWxmLT5mZCA8IDApIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgbmFtZW9iaik7Ci0gICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgbmFtZSk7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgbmFtZW9iaik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQpAQCAtNDUyLDcgKzQ0Nyw3IEBACiBzdGF0aWMgdm9pZAogZmlsZWlvX2RlYWxsb2MoZmlsZWlvICpzZWxmKQogewotICAgIHNlbGYtPmRlYWxsb2NhdGluZyA9IDE7CisgICAgc2VsZi0+ZmluYWxpemluZyA9IDE7CiAgICAgaWYgKF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQogICAgICAgICByZXR1cm47CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CkBAIC01MzgsNyArNTMzLDcgQEAKICAgICAgICAgbGVuID0gcGJ1Zi5sZW47CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgZXJybm8gPSAwOwotI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQogICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKICAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsIHBidWYuYnVmLCAoaW50KWxlbik7CkBAIC01NjEsMzMgKzU1NiwyNyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7CiB9CiAKKyNpZm5kZWYgSEFWRV9GU1RBVAorCitzdGF0aWMgUHlPYmplY3QgKgorZmlsZWlvX3JlYWRhbGwoZmlsZWlvICpzZWxmKQoreworICAgIF9QeV9JREVOVElGSUVSKHJlYWRhbGwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcmVhZGFsbCwgIk8iLCBzZWxmKTsKK30KKworI2Vsc2UKKwogc3RhdGljIHNpemVfdAotbmV3X2J1ZmZlcnNpemUoZmlsZWlvICpzZWxmLCBzaXplX3QgY3VycmVudHNpemUKLSNpZmRlZiBIQVZFX0ZTVEFUCi0gICAgICAgICAgICAgICAsIFB5X29mZl90IHBvcywgUHlfb2ZmX3QgZW5kCi0jZW5kaWYKLSAgICAgICAgICAgICAgICkKK25ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplKQogewogICAgIHNpemVfdCBhZGRlbmQ7Ci0jaWZkZWYgSEFWRV9GU1RBVAotICAgIGlmIChlbmQgIT0gKFB5X29mZl90KS0xKSB7Ci0gICAgICAgIC8qIEZpbGVzIGNsYWltaW5nIGEgc2l6ZSBzbWFsbGVyIHRoYW4gU01BTExDSFVOSyBtYXkKLSAgICAgICAgICAgYWN0dWFsbHkgYmUgc3RyZWFtaW5nIHBzZXVkby1maWxlcy4gSW4gdGhpcyBjYXNlLCB3ZQotICAgICAgICAgICBhcHBseSB0aGUgbW9yZSBhZ2dyZXNzaXZlIGFsZ29yaXRobSBiZWxvdy4KLSAgICAgICAgKi8KLSAgICAgICAgaWYgKGVuZCA+PSBTTUFMTENIVU5LICYmIGVuZCA+PSBwb3MgJiYgcG9zID49IDApIHsKLSAgICAgICAgICAgIC8qIEFkZCAxIHNvIGlmIHRoZSBmaWxlIHdlcmUgdG8gZ3JvdyB3ZSdkIG5vdGljZS4gKi8KLSAgICAgICAgICAgIFB5X29mZl90IGJ1ZnNpemUgPSBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7Ci0gICAgICAgICAgICBpZiAoYnVmc2l6ZSA8IFBZX1NTSVpFX1RfTUFYKQotICAgICAgICAgICAgICAgIHJldHVybiAoc2l6ZV90KWJ1ZnNpemU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBZX1NTSVpFX1RfTUFYOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCisKICAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCiAgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gIEZvciBiaWdnZXIgc2l6ZXMsIHVzZSBhCiAgICAgICAgbGVzcy10aGFuLWRvdWJsZSBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIGFzc2VydChjdXJyZW50c2l6ZSA8PSBQWV9TU0laRV9UX01BWCk7CiAgICAgaWYgKGN1cnJlbnRzaXplID4gNjU1MzYpCiAgICAgICAgIGFkZGVuZCA9IGN1cnJlbnRzaXplID4+IDM7CiAgICAgZWxzZQpAQCAtNjAxLDI2ICs1OTAsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWxlaW9fcmVhZGFsbChmaWxlaW8gKnNlbGYpCiB7Ci0jaWZkZWYgSEFWRV9GU1RBVAogICAgIHN0cnVjdCBzdGF0IHN0OwogICAgIFB5X29mZl90IHBvcywgZW5kOwotI2VuZGlmCiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IHRvdGFsID0gMDsKKyAgICBQeV9zc2l6ZV90IGJ5dGVzX3JlYWQgPSAwOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzaXplX3QgbmV3c2l6ZTsKKyAgICBzaXplX3QgYnVmc2l6ZTsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWZkZWYgSEFWRV9GU1RBVAotI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgcG9zID0gX2xzZWVraTY0KHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOwogI2Vsc2UKICAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKQEAgLTYyOSw0NCArNjExLDQ2IEBACiAgICAgICAgIGVuZCA9IHN0LnN0X3NpemU7CiAgICAgZWxzZQogICAgICAgICBlbmQgPSAoUHlfb2ZmX3QpLTE7Ci0jZW5kaWYKLSAgICB3aGlsZSAoMSkgewotI2lmZGVmIEhBVkVfRlNUQVQKLSAgICAgICAgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsLCBwb3MsIGVuZCk7Ci0jZWxzZQotICAgICAgICBuZXdzaXplID0gbmV3X2J1ZmZlcnNpemUoc2VsZiwgdG90YWwpOwotI2VuZGlmCi0gICAgICAgIGlmIChuZXdzaXplID4gUFlfU1NJWkVfVF9NQVggfHwgbmV3c2l6ZSA8PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAidW5ib3VuZGVkIHJlYWQgcmV0dXJuZWQgbW9yZSBieXRlcyAiCi0gICAgICAgICAgICAgICAgInRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkICIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgPCAoUHlfc3NpemVfdCluZXdzaXplKSB7Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5ld3NpemUpIDwgMCkgewotICAgICAgICAgICAgICAgIGlmICh0b3RhbCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChlbmQgPiAwICYmIGVuZCA+PSBwb3MgJiYgcG9zID49IDAgJiYgZW5kIC0gcG9zIDwgUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgLyogVGhpcyBpcyBwcm9iYWJseSBhIHJlYWwgZmlsZSwgc28gd2UgdHJ5IHRvIGFsbG9jYXRlIGEKKyAgICAgICAgICAgYnVmZmVyIG9uZSBieXRlIGxhcmdlciB0aGFuIHRoZSByZXN0IG9mIHRoZSBmaWxlLiAgSWYgdGhlCisgICAgICAgICAgIGNhbGN1bGF0aW9uIGlzIHJpZ2h0IHRoZW4gd2Ugc2hvdWxkIGdldCBFT0Ygd2l0aG91dCBoYXZpbmcKKyAgICAgICAgICAgdG8gZW5sYXJnZSB0aGUgYnVmZmVyLiAqLworICAgICAgICBidWZzaXplID0gKHNpemVfdCkoZW5kIC0gcG9zICsgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnVmc2l6ZSA9IFNNQUxMQ0hVTks7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZzaXplKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKGJ5dGVzX3JlYWQgPj0gKFB5X3NzaXplX3QpYnVmc2l6ZSkgeworICAgICAgICAgICAgYnVmc2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIGJ5dGVzX3JlYWQpOworICAgICAgICAgICAgaWYgKGJ1ZnNpemUgPiBQWV9TU0laRV9UX01BWCB8fCBidWZzaXplIDw9IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbiBhIFB5dGhvbiBzdHJpbmcgY2FuIGhvbGQiKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSA8IChQeV9zc2l6ZV90KWJ1ZnNpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGJ1ZnNpemUpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgIG4gPSBuZXdzaXplIC0gdG90YWw7Ci0jaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICBuID0gYnVmc2l6ZSAtIGJ5dGVzX3JlYWQ7CisjaWZkZWYgTVNfV0lORE9XUwogICAgICAgICBpZiAobiA+IElOVF9NQVgpCiAgICAgICAgICAgICBuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsCi0gICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyB0b3RhbCwKLSAgICAgICAgICAgICAgICAgKGludCluKTsKKyAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBieXRlc19yZWFkLCAoaW50KW4pOwogI2Vsc2UKLSAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsCi0gICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyB0b3RhbCwKLSAgICAgICAgICAgICAgICAgbik7CisgICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgbik7CiAjZW5kaWYKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaWYgKG4gPT0gMCkKQEAgLTY3OSw3ICs2NjMsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0b3RhbCA+IDApCisgICAgICAgICAgICBpZiAoYnl0ZXNfcmVhZCA+IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC02ODksMjIgKzY3MywxOSBAQAogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgdG90YWwgKz0gbjsKLSNpZmRlZiBIQVZFX0ZTVEFUCisgICAgICAgIGJ5dGVzX3JlYWQgKz0gbjsKICAgICAgICAgcG9zICs9IG47Ci0jZW5kaWYKICAgICB9CiAKLSAgICBpZiAoUHlCeXRlc19HRVRfU0laRShyZXN1bHQpID4gdG90YWwpIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCB0b3RhbCkgPCAwKSB7Ci0gICAgICAgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UgKi8KLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgPiBieXRlc19yZWFkKSB7CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgYnl0ZXNfcmVhZCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2VuZGlmIC8qIEhBVkVfRlNUQVQgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19yZWFkKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03MjUsNyArNzA2LDcgQEAKICAgICAgICAgcmV0dXJuIGZpbGVpb19yZWFkYWxsKHNlbGYpOwogICAgIH0KIAotI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHNpemUgPiBJTlRfTUFYKQogICAgICAgICBzaXplID0gSU5UX01BWDsKICNlbmRpZgpAQCAtNzM3LDcgKzcxOCw3IEBACiAgICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBlcnJubyA9IDA7Ci0jaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgbiA9IHJlYWQoc2VsZi0+ZmQsIHB0ciwgKGludClzaXplKTsKICNlbHNlCiAgICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwdHIsIHNpemUpOwpAQCAtNzU4LDcgKzczOSw3IEBACiAKICAgICBpZiAobiAhPSBzaXplKSB7CiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ5dGVzLCBuKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTc4NSw3ICs3NjYsNyBAQAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0jaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgaWYgKGxlbiA+IDMyNzY3ICYmIGlzYXR0eShzZWxmLT5mZCkpIHsKICAgICAgICAgICAgIC8qIElzc3VlICMxMTM5NTogdGhlIFdpbmRvd3MgY29uc29sZSByZXR1cm5zIGFuIGVycm9yICgxMjogbm90CiAgICAgICAgICAgICAgICBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYgc3Rkb3V0IG1vZGUgaXMKQEAgLTg1OCw3ICs4MzksNyBAQAogCiAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCB3aGVuY2UpOwogI2Vsc2UKICAgICAgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKQEAgLTEyMDEsNiArMTE4MiwxMSBAQAogICAgIHtOVUxMfSwKIH07CiAKK3N0YXRpYyBQeU1lbWJlckRlZiBmaWxlaW9fbWVtYmVyc1tdID0geworICAgIHsiX2ZpbmFsaXppbmciLCBUX0JPT0wsIG9mZnNldG9mKGZpbGVpbywgZmluYWxpemluZyksIDB9LAorICAgIHtOVUxMfQorfTsKKwogUHlUeXBlT2JqZWN0IFB5RmlsZUlPX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIl9pby5GaWxlSU8iLApAQCAtMTIyMiw3ICsxMjA4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCi0gICAgICAgICAgICAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAvKiB0cF9mbGFncyAqLworICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBmaWxlaW9fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZmlsZWlvX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlmaWxlaW9fY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xMjMxLDcgKzEyMTcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBmaWxlaW9fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBmaWxlaW9fbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICBmaWxlaW9fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtMTI0Miw0ICsxMjI4LDEzIEBACiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIGZpbGVpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2lvYmFzZS5jIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKaW5kZXggZTM4NDczYS4uYWUxODhkZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vaW9iYXNlLmMKKysrIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKQEAgLTE5NiwyNiArMTk2LDI0IEBACiAKIC8qIEZpbmFsaXphdGlvbiBhbmQgZ2FyYmFnZSBjb2xsZWN0aW9uIHN1cHBvcnQgKi8KIAotaW50Ci1fUHlJT0Jhc2VfZmluYWxpemUoUHlPYmplY3QgKnNlbGYpCitzdGF0aWMgdm9pZAoraW9iYXNlX2ZpbmFsaXplKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKnRwLCAqdiwgKnRiOwotICAgIGludCBjbG9zZWQgPSAxOwotICAgIGludCBpc196b21iaWU7CisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKyAgICBpbnQgY2xvc2VkOworICAgIF9QeV9JREVOVElGSUVSKF9maW5hbGl6aW5nKTsKIAotICAgIC8qIElmIF9QeUlPQmFzZV9maW5hbGl6ZSgpIGlzIGNhbGxlZCBmcm9tIGEgZGVzdHJ1Y3Rvciwgd2UgbmVlZCB0bwotICAgICAgIHJlc3VycmVjdCB0aGUgb2JqZWN0IGFzIGNhbGxpbmcgY2xvc2UoKSBjYW4gaW52b2tlIGFyYml0cmFyeSBjb2RlLiAqLwotICAgIGlzX3pvbWJpZSA9IChQeV9SRUZDTlQoc2VsZikgPT0gMCk7Ci0gICAgaWYgKGlzX3pvbWJpZSkgewotICAgICAgICArK1B5X1JFRkNOVChzZWxmKTsKLSAgICB9Ci0gICAgUHlFcnJfRmV0Y2goJnRwLCAmdiwgJnRiKTsKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCiAgICAgLyogSWYgYGNsb3NlZGAgZG9lc24ndCBleGlzdCBvciBjYW4ndCBiZSBldmFsdWF0ZWQgYXMgYm9vbCwgdGhlbiB0aGUKICAgICAgICBvYmplY3QgaXMgcHJvYmFibHkgaW4gYW4gdW51c2FibGUgc3RhdGUsIHNvIGlnbm9yZS4gKi8KICAgICByZXMgPSBQeU9iamVjdF9HZXRBdHRyKHNlbGYsIF9QeUlPX3N0cl9jbG9zZWQpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgY2xvc2VkID0gLTE7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBjbG9zZWQgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0yMjMsNiArMjIxLDEwIEBACiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KICAgICBpZiAoY2xvc2VkID09IDApIHsKKyAgICAgICAgLyogU2lnbmFsIGNsb3NlKCkgdGhhdCBpdCB3YXMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIG9iamVjdAorICAgICAgICAgICBmaW5hbGl6YXRpb24gcHJvY2Vzcy4gKi8KKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoc2VsZiwgJlB5SWRfX2ZpbmFsaXppbmcsIFB5X1RydWUpKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKFB5T2JqZWN0ICopIHNlbGYsIF9QeUlPX3N0cl9jbG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICAvKiBTaWxlbmNpbmcgSS9PIGVycm9ycyBpcyBiYWQsIGJ1dCBwcmludGluZyBzcHVyaW91cyB0cmFjZWJhY2tzIGlzCkBAIC0yMzMsMzEgKzIzNSwyNSBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICB9Ci0gICAgUHlFcnJfUmVzdG9yZSh0cCwgdiwgdGIpOwotICAgIGlmIChpc196b21iaWUpIHsKLSAgICAgICAgaWYgKC0tUHlfUkVGQ05UKHNlbGYpICE9IDApIHsKLSAgICAgICAgICAgIC8qIFRoZSBvYmplY3QgbGl2ZXMgYWdhaW4uIFRoZSBmb2xsb3dpbmcgY29kZSBpcyB0YWtlbiBmcm9tCi0gICAgICAgICAgICAgICBzbG90X3RwX2RlbCBpbiB0eXBlb2JqZWN0LmMuICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlZmNudCA9IFB5X1JFRkNOVChzZWxmKTsKLSAgICAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2Uoc2VsZik7Ci0gICAgICAgICAgICBQeV9SRUZDTlQoc2VsZikgPSByZWZjbnQ7Ci0gICAgICAgICAgICAvKiBJZiBQeV9SRUZfREVCVUcsIF9QeV9OZXdSZWZlcmVuY2UgYnVtcGVkIF9QeV9SZWZUb3RhbCwgc28KLSAgICAgICAgICAgICAqIHdlIG5lZWQgdG8gdW5kbyB0aGF0LiAqLwotICAgICAgICAgICAgX1B5X0RFQ19SRUZUT1RBTDsKLSAgICAgICAgICAgIC8qIElmIFB5X1RSQUNFX1JFRlMsIF9QeV9OZXdSZWZlcmVuY2UgcmUtYWRkZWQgc2VsZiB0byB0aGUgb2JqZWN0Ci0gICAgICAgICAgICAgKiBjaGFpbiwgc28gbm8gbW9yZSB0byBkbyB0aGVyZS4KLSAgICAgICAgICAgICAqIElmIENPVU5UX0FMTE9DUywgdGhlIG9yaWdpbmFsIGRlY3JlZiBidW1wZWQgdHBfZnJlZXMsIGFuZAotICAgICAgICAgICAgICogX1B5X05ld1JlZmVyZW5jZSBidW1wZWQgdHBfYWxsb2NzOiAgYm90aCBvZiB0aG9zZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgKiB1bmRvbmUuCi0gICAgICAgICAgICAgKi8KLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICAgICAgICAgIC0tUHlfVFlQRShzZWxmKS0+dHBfZnJlZXM7Ci0gICAgICAgICAgICAtLVB5X1RZUEUoc2VsZiktPnRwX2FsbG9jczsKLSNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKworaW50CitfUHlJT0Jhc2VfZmluYWxpemUoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaW50IGlzX3pvbWJpZTsKKworICAgIC8qIElmIF9QeUlPQmFzZV9maW5hbGl6ZSgpIGlzIGNhbGxlZCBmcm9tIGEgZGVzdHJ1Y3Rvciwgd2UgbmVlZCB0bworICAgICAgIHJlc3VycmVjdCB0aGUgb2JqZWN0IGFzIGNhbGxpbmcgY2xvc2UoKSBjYW4gaW52b2tlIGFyYml0cmFyeSBjb2RlLiAqLworICAgIGlzX3pvbWJpZSA9IChQeV9SRUZDTlQoc2VsZikgPT0gMCk7CisgICAgaWYgKGlzX3pvbWJpZSkKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhzZWxmKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3RfQ2FsbEZpbmFsaXplcihzZWxmKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CkBAIC0yNzAsOCArMjY2LDYgQEAKIHN0YXRpYyBpbnQKIGlvYmFzZV9jbGVhcihpb2Jhc2UgKnNlbGYpCiB7Ci0gICAgaWYgKF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQotICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC03NDEsNyArNzM1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCi0gICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgIC8qdHBfZmxhZ3MqLworICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KICAgICBpb2Jhc2VfZG9jLCAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylpb2Jhc2VfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpaW9iYXNlX2NsZWFyLCAgICAgIC8qIHRwX2NsZWFyICovCkBAIC03NjAsNiArNzU0LDE2IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3IpaW9iYXNlX2ZpbmFsaXplLCAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCkBAIC05MDUsNyArOTA5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgIC8qdHBfZmxhZ3MqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAvKnRwX2ZsYWdzKi8KICAgICByYXdpb2Jhc2VfZG9jLCAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC05MjQsNCArOTI4LDE0IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCBjZDc1MWMxLi43YjhkZTkwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtMTczLDcgKzE3Myw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAvKnRwX2ZsYWdzKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgLyp0cF9mbGFncyovCiAgICAgdGV4dGlvYmFzZV9kb2MsICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtMTkyLDYgKzE5MywxNiBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCkBAIC02OTEsNyArNzAyLDcgQEAKICAgICBjaGFyIHNlZWthYmxlOwogICAgIGNoYXIgaGFzX3JlYWQxOwogICAgIGNoYXIgdGVsbGluZzsKLSAgICBjaGFyIGRlYWxsb2NhdGluZzsKKyAgICBjaGFyIGZpbmFsaXppbmc7CiAgICAgLyogU3BlY2lhbGl6ZWQgZW5jb2RpbmcgZnVuYyAoc2VlIGJlbG93KSAqLwogICAgIGVuY29kZWZ1bmNfdCBlbmNvZGVmdW5jOwogICAgIC8qIFdoZXRoZXIgb3Igbm90IGl0J3MgdGhlIHN0YXJ0IG9mIHRoZSBzdHJlYW0gKi8KQEAgLTc1OCw3ICs3NjksNyBAQAogewogICAgIGlmICghc2VsZi0+ZW5jb2Rpbmdfc3RhcnRfb2Zfc3RyZWFtKSB7CiAgICAgICAgIC8qIFNraXAgdGhlIEJPTSBhbmQgdXNlIG5hdGl2ZSBieXRlIG9yZGVyaW5nICovCi0jaWYgZGVmaW5lZChXT1JEU19CSUdFTkRJQU4pCisjaWYgUFlfQklHX0VORElBTgogICAgICAgICByZXR1cm4gdXRmMTZiZV9lbmNvZGUoc2VsZiwgdGV4dCk7CiAjZWxzZQogICAgICAgICByZXR1cm4gdXRmMTZsZV9lbmNvZGUoc2VsZiwgdGV4dCk7CkBAIC03ODcsNyArNzk4LDcgQEAKIHsKICAgICBpZiAoIXNlbGYtPmVuY29kaW5nX3N0YXJ0X29mX3N0cmVhbSkgewogICAgICAgICAvKiBTa2lwIHRoZSBCT00gYW5kIHVzZSBuYXRpdmUgYnl0ZSBvcmRlcmluZyAqLwotI2lmIGRlZmluZWQoV09SRFNfQklHRU5ESUFOKQorI2lmIFBZX0JJR19FTkRJQU4KICAgICAgICAgcmV0dXJuIHV0ZjMyYmVfZW5jb2RlKHNlbGYsIHRleHQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIHV0ZjMybGVfZW5jb2RlKHNlbGYsIHRleHQpOwpAQCAtOTA2LDM1ICs5MTcsMjkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCAmJiBzZWxmLT5lbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChzdGF0ZS0+bG9jYWxlX21vZHVsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzdGF0ZS0+bG9jYWxlX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgibG9jYWxlIik7Ci0gICAgICAgICAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGNhdGNoX0ltcG9ydEVycm9yOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdvdG8gdXNlX2xvY2FsZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICB1c2VfbG9jYWxlOgotICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAotICAgICAgICAgICAgICAgIHN0YXRlLT5sb2NhbGVfbW9kdWxlLCAmUHlJZF9nZXRwcmVmZXJyZWRlbmNvZGluZywgIk8iLCBQeV9GYWxzZSk7Ci0gICAgICAgICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICAgICAgICBjYXRjaF9JbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICBJbXBvcnRpbmcgbG9jYWxlIGNhbiByYWlzZSBhIEltcG9ydEVycm9yIGJlY2F1c2Ugb2YKLSAgICAgICAgICAgICAgICAgX2Z1bmN0b29scywgYW5kIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyBjYW4gcmFpc2UgYQotICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvciBpZiBfbG9jYWxlIGlzIG5vdCBhdmFpbGFibGUuICBUaGVzZSB3aWxsIGhhcHBlbgotICAgICAgICAgICAgICAgICBkdXJpbmcgbW9kdWxlIGJ1aWxkaW5nLgotICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW1wb3J0RXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYtPmVuY29kaW5nID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImFzY2lpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgUHlPYmplY3QgKmxvY2FsZV9tb2R1bGUgPSBfUHlJT19nZXRfbG9jYWxlX21vZHVsZShzdGF0ZSk7CisgICAgICAgIGlmIChsb2NhbGVfbW9kdWxlID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGNhdGNoX0ltcG9ydEVycm9yOworICAgICAgICBzZWxmLT5lbmNvZGluZyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBsb2NhbGVfbW9kdWxlLCAmUHlJZF9nZXRwcmVmZXJyZWRlbmNvZGluZywgIk8iLCBQeV9GYWxzZSk7CisgICAgICAgIFB5X0RFQ1JFRihsb2NhbGVfbW9kdWxlKTsKKyAgICAgICAgaWYgKHNlbGYtPmVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgICBjYXRjaF9JbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgSW1wb3J0aW5nIGxvY2FsZSBjYW4gcmFpc2UgYSBJbXBvcnRFcnJvciBiZWNhdXNlIG9mCisgICAgICAgICAgICAgX2Z1bmN0b29scywgYW5kIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyBjYW4gcmFpc2UgYQorICAgICAgICAgICAgIEltcG9ydEVycm9yIGlmIF9sb2NhbGUgaXMgbm90IGF2YWlsYWJsZS4gIFRoZXNlIHdpbGwgaGFwcGVuCisgICAgICAgICAgICAgZHVyaW5nIG1vZHVsZSBidWlsZGluZy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIHNlbGYtPmVuY29kaW5nID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImFzY2lpIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYtPmVuY29kaW5nKSkKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5lbmNvZGluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYtPmVuY29kaW5nKSkKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVuY29kaW5nKTsKICAgICB9CiAgICAgaWYgKHNlbGYtPmVuY29kaW5nICE9IE5VTEwpIHsKICAgICAgICAgZW5jb2RpbmcgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHNlbGYtPmVuY29kaW5nKTsKQEAgLTExMTIsOCArMTExNyw2IEBACiBzdGF0aWMgaW50CiBfdGV4dGlvd3JhcHBlcl9jbGVhcih0ZXh0aW8gKnNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPm9rICYmIF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQotICAgICAgICByZXR1cm4gLTE7CiAgICAgc2VsZi0+b2sgPSAwOwogICAgIFB5X0NMRUFSKHNlbGYtPmJ1ZmZlcik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZW5jb2RpbmcpOwpAQCAtMTEzMSw5ICsxMTM0LDEwIEBACiBzdGF0aWMgdm9pZAogdGV4dGlvd3JhcHBlcl9kZWFsbG9jKHRleHRpbyAqc2VsZikKIHsKLSAgICBzZWxmLT5kZWFsbG9jYXRpbmcgPSAxOwotICAgIGlmIChfdGV4dGlvd3JhcHBlcl9jbGVhcihzZWxmKSA8IDApCisgICAgc2VsZi0+ZmluYWxpemluZyA9IDE7CisgICAgaWYgKF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQogICAgICAgICByZXR1cm47CisgICAgX3RleHRpb3dyYXBwZXJfY2xlYXIoc2VsZik7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CiAgICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCiAgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopc2VsZik7CkBAIC0xOTM3LDEwICsxOTQxLDcgQEAKIAogI2RlZmluZSBDT09LSUVfQlVGX0xFTiAgICAgIChzaXplb2YoUHlfb2ZmX3QpICsgMyAqIHNpemVvZihpbnQpICsgc2l6ZW9mKGNoYXIpKQogCi0jaWYgZGVmaW5lZChXT1JEU19CSUdFTkRJQU4pCi0KLSMgZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gICAwCi0KKyNpZiBQWV9CSUdfRU5ESUFOCiAvKiBXZSB3YW50IHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIG9mIHN0YXJ0X3BvcyB0byBhbHNvIGJlIHRoZSBsZWFzdAogICAgc2lnbmlmaWNhbnQgYnl0ZSBvZiB0aGUgY29va2llLCB3aGljaCBtZWFucyB0aGF0IGluIGJpZy1lbmRpYW4gbW9kZSB3ZQogICAgbXVzdCBjb3B5IHRoZSBmaWVsZHMgaW4gcmV2ZXJzZSBvcmRlci4gKi8KQEAgLTE5NTIsOSArMTk1Myw2IEBACiAjIGRlZmluZSBPRkZfTkVFRF9FT0YgICAgICAgMAogCiAjZWxzZQotCi0jIGRlZmluZSBJU19MSVRUTEVfRU5ESUFOICAgMQotCiAvKiBMaXR0bGUtZW5kaWFuIG1vZGU6IHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIG9mIHN0YXJ0X3BvcyB3aWxsCiAgICBuYXR1cmFsbHkgZW5kIHVwIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIG9mIHRoZSBjb29raWUuICovCiAKQEAgLTE5NzUsNyArMTk3Myw3IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChfUHlMb25nX0FzQnl0ZUFycmF5KGNvb2tpZUxvbmcsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfTElUVExFX0VORElBTiwgMCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTElUVExFX0VORElBTiwgMCkgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjb29raWVMb25nKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTIwMDEsOSArMTk5OSw5IEBACiAgICAgbWVtY3B5KGJ1ZmZlciArIE9GRl9DSEFSU19UT19TS0lQLCAmY29va2llLT5jaGFyc190b19za2lwLCBzaXplb2YoY29va2llLT5jaGFyc190b19za2lwKSk7CiAgICAgbWVtY3B5KGJ1ZmZlciArIE9GRl9ORUVEX0VPRiwgJmNvb2tpZS0+bmVlZF9lb2YsIHNpemVvZihjb29raWUtPm5lZWRfZW9mKSk7CiAKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIElTX0xJVFRMRV9FTkRJQU4sIDApOworICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sIDApOwogfQotI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAogc3RhdGljIGludAogX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZSh0ZXh0aW8gKnNlbGYsIGNvb2tpZV90eXBlICpjb29raWUpCkBAIC0yMzUzLDcgKzIzNTEsNyBAQAogCiAgICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KICAgICBjb29raWUuc3RhcnRfcG9zICs9IHNraXBfYnl0ZXM7Ci0gICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBjaGFyc190b19za2lwOworICAgIGNvb2tpZS5jaGFyc190b19za2lwID0gUHlfU0FGRV9ET1dOQ0FTVChjaGFyc190b19za2lwLCBQeV9zc2l6ZV90LCBpbnQpOwogICAgIGlmIChjaGFyc190b19za2lwID09IDApCiAgICAgICAgIGdvdG8gZmluYWxseTsKIApAQCAtMjU3OSw3ICsyNTc3LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMLCAqdmFsLCAqdGI7Ci0gICAgICAgIGlmIChzZWxmLT5kZWFsbG9jYXRpbmcpIHsKKyAgICAgICAgaWYgKHNlbGYtPmZpbmFsaXppbmcpIHsKICAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9fZGVhbGxvY193YXJuLCAiTyIsIHNlbGYpOwogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTI3NDAsNiArMjczOCw3IEBACiAgICAgeyJlbmNvZGluZyIsIFRfT0JKRUNULCBvZmZzZXRvZih0ZXh0aW8sIGVuY29kaW5nKSwgUkVBRE9OTFl9LAogICAgIHsiYnVmZmVyIiwgVF9PQkpFQ1QsIG9mZnNldG9mKHRleHRpbywgYnVmZmVyKSwgUkVBRE9OTFl9LAogICAgIHsibGluZV9idWZmZXJpbmciLCBUX0JPT0wsIG9mZnNldG9mKHRleHRpbywgbGluZV9idWZmZXJpbmcpLCBSRUFET05MWX0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YodGV4dGlvLCBmaW5hbGl6aW5nKSwgMH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0yNzc2LDcgKzI3NzUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKLSAgICAgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKnRwX2ZsYWdzKi8KKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLwogICAgIHRleHRpb3dyYXBwZXJfZG9jLCAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKXRleHRpb3dyYXBwZXJfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpdGV4dGlvd3JhcHBlcl9jbGVhciwgLyogdHBfY2xlYXIgKi8KQEAgLTI3OTUsNCArMjc5NCwxNCBAQAogICAgIChpbml0cHJvYyl0ZXh0aW93cmFwcGVyX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IGRiNDVjMjguLjMwMWJjODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTIsMjAgKzIsNiBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImFjY3UuaCIKIAotI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA2MDAwMCAmJiAhZGVmaW5lZChQeV9UWVBFKQotI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQotI2VuZGlmCi0jaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwICYmICFkZWZpbmVkKFBZX1NTSVpFX1RfTUlOKQotdHlwZWRlZiBpbnQgUHlfc3NpemVfdDsKLSNkZWZpbmUgUFlfU1NJWkVfVF9NQVggSU5UX01BWAotI2RlZmluZSBQWV9TU0laRV9UX01JTiBJTlRfTUlOCi0jZGVmaW5lIFB5SW50X0Zyb21Tc2l6ZV90IFB5SW50X0Zyb21Mb25nCi0jZGVmaW5lIFB5SW50X0FzU3NpemVfdCBQeUludF9Bc0xvbmcKLSNlbmRpZgotI2lmbmRlZiBQeV9JU19GSU5JVEUKLSNkZWZpbmUgUHlfSVNfRklOSVRFKFgpICghUHlfSVNfSU5GSU5JVFkoWCkgJiYgIVB5X0lTX05BTihYKSkKLSNlbmRpZgotCiAjaWZkZWYgX19HTlVDX18KICNkZWZpbmUgVU5VU0VEIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKQogI2Vsc2UKQEAgLTEyOSwzMyArMTE1LDE0IEBACiByYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpOwogc3RhdGljIFB5T2JqZWN0ICoKIGVuY29kZXJfZW5jb2RlX3N0cmluZyhQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpvYmopOwotc3RhdGljIGludAotX2NvbnZlcnRQeUludF9Bc1NzaXplX3QoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgKnNpemVfcHRyKTsKIHN0YXRpYyBQeU9iamVjdCAqCi1fY29udmVydFB5SW50X0Zyb21Tc2l6ZV90KFB5X3NzaXplX3QgKnNpemVfcHRyKTsKK2VuY29kZXJfZW5jb2RlX2xvbmcoUHlFbmNvZGVyT2JqZWN0KiBzIFVOVVNFRCwgUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgUHlPYmplY3QgKgogZW5jb2Rlcl9lbmNvZGVfZmxvYXQoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqb2JqKTsKIAogI2RlZmluZSBTX0NIQVIoYykgKGMgPj0gJyAnICYmIGMgPD0gJ34nICYmIGMgIT0gJ1xcJyAmJiBjICE9ICciJykKICNkZWZpbmUgSVNfV0hJVEVTUEFDRShjKSAoKChjKSA9PSAnICcpIHx8ICgoYykgPT0gJ1x0JykgfHwgKChjKSA9PSAnXG4nKSB8fCAoKGMpID09ICdccicpKQogCi1zdGF0aWMgaW50Ci1fY29udmVydFB5SW50X0FzU3NpemVfdChQeU9iamVjdCAqbywgUHlfc3NpemVfdCAqc2l6ZV9wdHIpCi17Ci0gICAgLyogUHlPYmplY3QgdG8gUHlfc3NpemVfdCBjb252ZXJ0ZXIgKi8KLSAgICAqc2l6ZV9wdHIgPSBQeUxvbmdfQXNTc2l6ZV90KG8pOwotICAgIGlmICgqc2l6ZV9wdHIgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1fY29udmVydFB5SW50X0Zyb21Tc2l6ZV90KFB5X3NzaXplX3QgKnNpemVfcHRyKQotewotICAgIC8qIFB5X3NzaXplX3QgdG8gUHlPYmplY3QgY29udmVydGVyICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCgqc2l6ZV9wdHIpOwotfQotCiBzdGF0aWMgUHlfc3NpemVfdAogYXNjaWlfZXNjYXBlX3VuaWNoYXIoUHlfVUNTNCBjLCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIFB5X3NzaXplX3QgY2hhcnMpCiB7CkBAIC0xNzQsMTQgKzE0MSwxMyBAQAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIC8qIFVURi0xNiBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgICAgIFB5X1VDUzQgdiA9IGMgLSAweDEwMDAwOwotICAgICAgICAgICAgICAgIGMgPSAweGQ4MDAgfCAoKHYgPj4gMTApICYgMHgzZmYpOworICAgICAgICAgICAgICAgIFB5X1VDUzQgdiA9IFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoYyk7CiAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgNCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwotICAgICAgICAgICAgICAgIGMgPSAweGRjMDAgfCAodiAmIDB4M2ZmKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKHYgPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKHYgPj4gIDgpICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKHYgPj4gIDQpICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKHYgICAgICApICYgMHhmXTsKKyAgICAgICAgICAgICAgICBjID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGMpOwogICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICdcXCc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7CkBAIC0yNjgsMTMgKzIzNCwyMyBAQAogICAgICAgICBpZiAoZXJybXNnX2ZuID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHB5bXNnID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGVycm1zZ19mbiwgIih6T08mKSIsIG1zZywgcywgX2NvbnZlcnRQeUludF9Gcm9tU3NpemVfdCwgJmVuZCk7CisgICAgcHltc2cgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZXJybXNnX2ZuLCAiKHpPbikiLCBtc2csIHMsIGVuZCk7CiAgICAgaWYgKHB5bXNnKSB7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19WYWx1ZUVycm9yLCBweW1zZyk7CiAgICAgICAgIFB5X0RFQ1JFRihweW1zZyk7CiAgICAgfQogfQogCitzdGF0aWMgdm9pZAorcmFpc2Vfc3RvcF9pdGVyYXRpb24oUHlfc3NpemVfdCBpZHgpCit7CisgICAgUHlPYmplY3QgKnZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KGlkeCk7CisgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIHZhbHVlKTsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICB9Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVpbGRfcnZhbF9pbmRleF90dXBsZShQeU9iamVjdCAqcnZhbCwgUHlfc3NpemVfdCBpZHgpIHsKICAgICAvKiByZXR1cm4gKHJ2YWwsIGlkeCkgdHVwbGUsIHN0ZWFsaW5nIHJlZmVyZW5jZSB0byBydmFsICovCkBAIC0zNDQsNyArMzIwLDcgQEAKICAgICBidWYgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKIAotICAgIGlmIChlbmQgPCAwIHx8IGxlbiA8PSBlbmQpIHsKKyAgICBpZiAoZW5kIDwgMCB8fCBsZW4gPCBlbmQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbmQgaXMgb3V0IG9mIGJvdW5kcyIpOwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQpAQCAtNDMzLDcgKzQwOSw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogU3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGlmICgoYyAmIDB4ZmMwMCkgPT0gMHhkODAwKSB7CisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjKSkgewogICAgICAgICAgICAgICAgIFB5X1VDUzQgYzIgPSAwOwogICAgICAgICAgICAgICAgIGlmIChlbmQgKyA2ID49IGxlbikgewogICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwpAQCAtNDY0LDEzICs0NDAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChjMiAmIDB4ZmMwMCkgIT0gMHhkYzAwKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoYzIpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiVW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYyA9IDB4MTAwMDAgKyAoKChjIC0gMHhkODAwKSA8PCAxMCkgfCAoYzIgLSAweGRjMDApKTsKKyAgICAgICAgICAgICAgICBjID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoYywgYzIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKGMgJiAweGZjMDApID09IDB4ZGMwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGMpKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnBhaXJlZCBsb3cgc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTUyNyw3ICs1MDMsNyBAQAogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5X3NzaXplX3QgbmV4dF9lbmQgPSAtMTsKICAgICBpbnQgc3RyaWN0ID0gMTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PJnxpOnNjYW5zdHJpbmciLCAmcHlzdHIsIF9jb252ZXJ0UHlJbnRfQXNTc2l6ZV90LCAmZW5kLCAmc3RyaWN0KSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT258aTpzY2Fuc3RyaW5nIiwgJnB5c3RyLCAmZW5kLCAmc3RyaWN0KSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhweXN0cikpIHsKQEAgLTY0MiwxMiArNjE4LDEyIEBACiAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCxzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgIC8qIG9ubHkgbG9vcCBpZiB0aGUgb2JqZWN0IGlzIG5vbi1lbXB0eSAqLwotICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7Ci0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgeworICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnfScpIHsKKyAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICptZW1va2V5OwogCiAgICAgICAgICAgICAvKiByZWFkIGtleSAqLwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnIicpIHsKKyAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnIicpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMiLCBweXN0ciwgaWR4KTsKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICB9CkBAIC03MDQsMTEgKzY4MCw5IEBACiAgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogYmFpbCBpZiB0aGUgb2JqZWN0IGlzIGNsb3NlZCBvciB3ZSBkaWRuJ3QgZ2V0IHRoZSAsIGRlbGltaXRlciAqLwotICAgICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHgpIGJyZWFrOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnfScpIHsKKyAgICAgICAgICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ30nKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICcsJykgeworICAgICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICcsJykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBweXN0ciwgaWR4KTsKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICB9CkBAIC03MTksMTIgKzY5Myw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiB2ZXJpZnkgdGhhdCBpZHggPCBlbmRfaWR4LCBzdHJbaWR4XSBzaG91bGQgYmUgJ30nICovCi0gICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICd9JykgewotICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyBvYmplY3QiLCBweXN0ciwgZW5kX2lkeCk7Ci0gICAgICAgIGdvdG8gYmFpbDsKLSAgICB9Ci0KICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgMTsKIAogICAgIGlmIChoYXNfcGFpcnNfaG9vaykgewpAQCAtNzc2LDggKzc0NCw4IEBACiAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CiAKICAgICAvKiBvbmx5IGxvb3AgaWYgdGhlIGFycmF5IGlzIG5vbi1lbXB0eSAqLwotICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ10nKSB7Ci0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgeworICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnXScpIHsKKyAgICAgICAgd2hpbGUgKDEpIHsKIAogICAgICAgICAgICAgLyogcmVhZCBhbnkgSlNPTiB0ZXJtICAqLwogICAgICAgICAgICAgdmFsID0gc2Nhbl9vbmNlX3VuaWNvZGUocywgcHlzdHIsIGlkeCwgJm5leHRfaWR4KTsKQEAgLTc5NCwxMSArNzYyLDkgQEAKICAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBiYWlsIGlmIHRoZSBhcnJheSBpcyBjbG9zZWQgb3Igd2UgZGlkbid0IGdldCB0aGUgLCBkZWxpbWl0ZXIgKi8KLSAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSBicmVhazsKLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ10nKSB7CisgICAgICAgICAgICBpZiAoaWR4IDw9IGVuZF9pZHggJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICddJykKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnLCcpIHsKKyAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnLCcpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQpAQCAtODExLDcgKzc3Nyw3IEBACiAKICAgICAvKiB2ZXJpZnkgdGhhdCBpZHggPCBlbmRfaWR4LCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgc2hvdWxkIGJlICddJyAqLwogICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnXScpIHsKLSAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3Rpbmcgb2JqZWN0IiwgcHlzdHIsIGVuZF9pZHgpOworICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHB5c3RyLCBlbmRfaWR4KTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgMTsKQEAgLTg3OSw3ICs4NDUsNyBAQAogICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJy0nKSB7CiAgICAgICAgIGlkeCsrOwogICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgewotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIHJhaXNlX3N0b3BfaXRlcmF0aW9uKHN0YXJ0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtODk1LDcgKzg2MSw3IEBACiAgICAgfQogICAgIC8qIG5vIGludGVnZXIgZGlnaXRzLCBlcnJvciAqLwogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByYWlzZV9zdG9wX2l0ZXJhdGlvbihzdGFydCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTg4LDcgKzk1NCw3IEBACiAgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOwogCiAgICAgaWYgKGlkeCA+PSBsZW5ndGgpIHsKLSAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmFpc2Vfc3RvcF9pdGVyYXRpb24oaWR4KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMDkwLDcgKzEwNTYsNyBAQAogICAgIFB5U2Nhbm5lck9iamVjdCAqczsKICAgICBhc3NlcnQoUHlTY2FubmVyX0NoZWNrKHNlbGYpKTsKICAgICBzID0gKFB5U2Nhbm5lck9iamVjdCAqKXNlbGY7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PJjpzY2FuX29uY2UiLCBrd2xpc3QsICZweXN0ciwgX2NvbnZlcnRQeUludF9Bc1NzaXplX3QsICZpZHgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPbjpzY2FuX29uY2UiLCBrd2xpc3QsICZweXN0ciwgJmlkeCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhweXN0cikpIHsKQEAgLTEyOTEsOCArMTI1Nyw4IEBACiAKICAgICBhc3NlcnQoUHlFbmNvZGVyX0NoZWNrKHNlbGYpKTsKICAgICBzID0gKFB5RW5jb2Rlck9iamVjdCAqKXNlbGY7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PJjpfaXRlcmVuY29kZSIsIGt3bGlzdCwKLSAgICAgICAgJm9iaiwgX2NvbnZlcnRQeUludF9Bc1NzaXplX3QsICZpbmRlbnRfbGV2ZWwpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPbjpfaXRlcmVuY29kZSIsIGt3bGlzdCwKKyAgICAgICAgJm9iaiwgJmluZGVudF9sZXZlbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChfUHlBY2N1X0luaXQoJmFjYykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMzOCwxMyArMTMwNCw0NSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZW5jb2Rlcl9lbmNvZGVfbG9uZyhQeUVuY29kZXJPYmplY3QqIHMgVU5VU0VELCBQeU9iamVjdCAqb2JqKQoreworICAgIC8qIFJldHVybiB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5TG9uZyBhbmQgUHlMb25nIHN1YmNsYXNzZXMuCisgICAgICAgQ2FsbHMgaW50KCkgb24gUHlMb25nIHN1YmNsYXNzZXMgaW4gY2FzZSB0aGUgc3RyKCkgd2FzIGNoYW5nZWQuCisgICAgICAgQWRkZWQgc3BlY2lmaWNhbGx5IHRvIGRlYWwgd2l0aCBJbnRFbnVtLiAgU2VlIElzc3VlMTgyNjQuICovCisgICAgUHlPYmplY3QgKmVuY29kZWQsICpsb25nb2JqOworICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGVuY29kZWQgPSBQeU9iamVjdF9TdHIob2JqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxvbmdvYmogPSBQeU51bWJlcl9Mb25nKG9iaik7CisgICAgICAgIGlmIChsb25nb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb2VyY2UgaW50IHN1YmNsYXNzIHRvIGludCIKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVuY29kZWQgPSBQeU9iamVjdF9TdHIobG9uZ29iaik7CisgICAgICAgIFB5X0RFQ1JFRihsb25nb2JqKTsKKyAgICB9CisgICAgcmV0dXJuIGVuY29kZWQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKIGVuY29kZXJfZW5jb2RlX2Zsb2F0KFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKm9iaikKIHsKLSAgICAvKiBSZXR1cm4gdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBQeUZsb2F0ICovCisgICAgLyogUmV0dXJuIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHlGbG9hdC4KKyAgICAgICBNb2RpZmllZCB0byBjYWxsIGZsb2F0KCkgb24gZmxvYXQgc3ViY2xhc3NlcyBpbiBjYXNlIHRoZSBzdWJjbGFzcworICAgICAgIGNoYW5nZXMgdGhlIHJlcHIuICBTZWUgSXNzdWUxODI2NC4gICovCisgICAgUHlPYmplY3QgKmVuY29kZWQsICpmbG9hdG9iajsKICAgICBkb3VibGUgaSA9IFB5RmxvYXRfQVNfRE9VQkxFKG9iaik7CiAgICAgaWYgKCFQeV9JU19GSU5JVEUoaSkpIHsKICAgICAgICAgaWYgKCFzLT5hbGxvd19uYW4pIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiT3V0IG9mIHJhbmdlIGZsb2F0IHZhbHVlcyBhcmUgbm90IEpTT04gY29tcGxpYW50Iik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJPdXQgb2YgcmFuZ2UgZmxvYXQgdmFsdWVzIGFyZSBub3QgSlNPTiBjb21wbGlhbnQiCisgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoaSA+IDApIHsKQEAgLTEzNTcsOCArMTM1NSwyNCBAQAogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJOYU4iKTsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBVc2UgYSBiZXR0ZXIgZmxvYXQgZm9ybWF0IGhlcmU/ICovCi0gICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIob2JqKTsKKyAgICAvKiBjb2VyY2UgZmxvYXQgc3ViY2xhc3NlcyB0byBmbG9hdCAocHJpbWFyaWx5IGZvciBFbnVtKSAqLworICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAvKiBVc2UgYSBiZXR0ZXIgZmxvYXQgZm9ybWF0IGhlcmU/ICovCisgICAgICAgIGVuY29kZWQgPSBQeU9iamVjdF9SZXByKG9iaik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmbG9hdG9iaiA9IFB5TnVtYmVyX0Zsb2F0KG9iaik7CisgICAgICAgIGlmIChmbG9hdG9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29lcmNlIGZsb2F0IHN1YmNsYXNzIHRvIGZsb2F0IgorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZW5jb2RlZCA9IFB5T2JqZWN0X1JlcHIoZmxvYXRvYmopOworICAgICAgICBQeV9ERUNSRUYoZmxvYXRvYmopOworICAgIH0KKyAgICByZXR1cm4gZW5jb2RlZDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0MDIsNyArMTQxNiw3IEBACiAgICAgICAgIHJldHVybiBfc3RlYWxfYWNjdW11bGF0ZShhY2MsIGVuY29kZWQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sob2JqKSkgewotICAgICAgICBQeU9iamVjdCAqZW5jb2RlZCA9IFB5T2JqZWN0X1N0cihvYmopOworICAgICAgICBQeU9iamVjdCAqZW5jb2RlZCA9IGVuY29kZXJfZW5jb2RlX2xvbmcocywgb2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgZW5jb2RlZCk7CkBAIC0xNTg3LDkgKzE2MDEsMTAgQEAKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgIGtzdHIgPSBQeU9iamVjdF9TdHIoa2V5KTsKLSAgICAgICAgICAgIGlmIChrc3RyID09IE5VTEwpCisgICAgICAgICAgICBrc3RyID0gZW5jb2Rlcl9lbmNvZGVfbG9uZyhzLCBrZXkpOworICAgICAgICAgICAgaWYgKGtzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChza2lwa2V5cykgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwppbmRleCBjYzY4OGJhLi5iMTk2NzQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwpAQCAtMTQ3LDI2ICsxNDcsMzIgQEAKICAgICAvKiBob3BlZnVsbHksIHRoZSBsb2NhbGVjb252IHJlc3VsdCBzdXJ2aXZlcyB0aGUgQyBsaWJyYXJ5IGNhbGxzCiAgICAgICAgaW52b2x2ZWQgaGVyZWluICovCiAKKyNkZWZpbmUgUkVTVUxUKGtleSwgb2JqKVwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKG9iaiA9PSBOVUxMKSBcCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsgXAorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcocmVzdWx0LCBrZXksIG9iaikgPCAwKSBcCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsgXAorICAgICAgICBQeV9ERUNSRUYob2JqKTsgXAorICAgIH0gd2hpbGUgKDApCisKICNkZWZpbmUgUkVTVUxUX1NUUklORyhzKVwKLSAgICB4ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShsLT5zLCBOVUxMKTsgICBcCi0gICAgaWYgKCF4KSBnb3RvIGZhaWxlZDtcCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcocmVzdWx0LCAjcywgeCk7XAotICAgIFB5X1hERUNSRUYoeCkKKyAgICBkbyB7IFwKKyAgICAgICAgeCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUobC0+cywgTlVMTCk7IFwKKyAgICAgICAgUkVTVUxUKCNzLCB4KTsgXAorICAgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgUkVTVUxUX0lOVChpKVwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKGwtPmkpO1wKLSAgICBpZiAoIXgpIGdvdG8gZmFpbGVkO1wKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhyZXN1bHQsICNpLCB4KTtcCi0gICAgUHlfWERFQ1JFRih4KQorICAgIGRvIHsgXAorICAgICAgICB4ID0gUHlMb25nX0Zyb21Mb25nKGwtPmkpOyBcCisgICAgICAgIFJFU1VMVCgjaSwgeCk7IFwKKyAgICB9IHdoaWxlICgwKQogCiAgICAgLyogTnVtZXJpYyBpbmZvcm1hdGlvbiAqLwogICAgIFJFU1VMVF9TVFJJTkcoZGVjaW1hbF9wb2ludCk7CiAgICAgUkVTVUxUX1NUUklORyh0aG91c2FuZHNfc2VwKTsKICAgICB4ID0gY29weV9ncm91cGluZyhsLT5ncm91cGluZyk7Ci0gICAgaWYgKCF4KQotICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhyZXN1bHQsICJncm91cGluZyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUkVTVUxUKCJncm91cGluZyIsIHgpOwogCiAgICAgLyogTW9uZXRhcnkgaW5mb3JtYXRpb24gKi8KICAgICBSRVNVTFRfU1RSSU5HKGludF9jdXJyX3N5bWJvbCk7CkBAIC0xNzQsMTAgKzE4MCw4IEBACiAgICAgUkVTVUxUX1NUUklORyhtb25fZGVjaW1hbF9wb2ludCk7CiAgICAgUkVTVUxUX1NUUklORyhtb25fdGhvdXNhbmRzX3NlcCk7CiAgICAgeCA9IGNvcHlfZ3JvdXBpbmcobC0+bW9uX2dyb3VwaW5nKTsKLSAgICBpZiAoIXgpCi0gICAgICAgIGdvdG8gZmFpbGVkOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHJlc3VsdCwgIm1vbl9ncm91cGluZyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUkVTVUxUKCJtb25fZ3JvdXBpbmciLCB4KTsKKwogICAgIFJFU1VMVF9TVFJJTkcocG9zaXRpdmVfc2lnbik7CiAgICAgUkVTVUxUX1NUUklORyhuZWdhdGl2ZV9zaWduKTsKICAgICBSRVNVTFRfSU5UKGludF9mcmFjX2RpZ2l0cyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IGIwYTIyNmIuLjg5NDc4ODkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0zNiwxMiArMzYsOCBAQAogI2Vycm9yICJUaGlzIG1vZHVsZSByZXF1aXJlcyBnZXR0aW1lb2ZkYXkoKSBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMhIgogI2VuZGlmCiAKLSNpZiAoZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykpCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbHNlCiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWVzLmg+Ci0jZW5kaWYKIAogc3RhdGljIFBZX0xPTkdfTE9ORwogaHBUaW1lcih2b2lkKQpAQCAtMjI3LDcgKzIyMyw3IEBACiBuZXdQcm9maWxlckVudHJ5KFByb2ZpbGVyT2JqZWN0ICpwT2JqLCB2b2lkICprZXksIFB5T2JqZWN0ICp1c2VyT2JqKQogewogICAgIFByb2ZpbGVyRW50cnkgKnNlbGY7Ci0gICAgc2VsZiA9IChQcm9maWxlckVudHJ5KikgbWFsbG9jKHNpemVvZihQcm9maWxlckVudHJ5KSk7CisgICAgc2VsZiA9IChQcm9maWxlckVudHJ5KikgUHlNZW1fTWFsbG9jKHNpemVvZihQcm9maWxlckVudHJ5KSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBwT2JqLT5mbGFncyB8PSBQT0ZfTk9NRU1PUlk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjM1LDcgKzIzMSw3IEBACiAgICAgdXNlck9iaiA9IG5vcm1hbGl6ZVVzZXJPYmoodXNlck9iaik7CiAgICAgaWYgKHVzZXJPYmogPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBmcmVlKHNlbGYpOworICAgICAgICBQeU1lbV9GcmVlKHNlbGYpOwogICAgICAgICBwT2JqLT5mbGFncyB8PSBQT0ZfTk9NRU1PUlk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI2OCw3ICsyNjQsNyBAQAogbmV3U3ViRW50cnkoUHJvZmlsZXJPYmplY3QgKnBPYmosICBQcm9maWxlckVudHJ5ICpjYWxsZXIsIFByb2ZpbGVyRW50cnkqIGVudHJ5KQogewogICAgIFByb2ZpbGVyU3ViRW50cnkgKnNlbGY7Ci0gICAgc2VsZiA9IChQcm9maWxlclN1YkVudHJ5KikgbWFsbG9jKHNpemVvZihQcm9maWxlclN1YkVudHJ5KSk7CisgICAgc2VsZiA9IChQcm9maWxlclN1YkVudHJ5KikgUHlNZW1fTWFsbG9jKHNpemVvZihQcm9maWxlclN1YkVudHJ5KSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBwT2JqLT5mbGFncyB8PSBQT0ZfTk9NRU1PUlk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg2LDcgKzI4Miw3IEBACiBzdGF0aWMgaW50IGZyZWVTdWJFbnRyeShyb3RhdGluZ19ub2RlX3QgKmhlYWRlciwgdm9pZCAqYXJnKQogewogICAgIFByb2ZpbGVyU3ViRW50cnkgKnN1YmVudHJ5ID0gKFByb2ZpbGVyU3ViRW50cnkqKSBoZWFkZXI7Ci0gICAgZnJlZShzdWJlbnRyeSk7CisgICAgUHlNZW1fRnJlZShzdWJlbnRyeSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI5NSw3ICsyOTEsNyBAQAogICAgIFByb2ZpbGVyRW50cnkgKmVudHJ5ID0gKFByb2ZpbGVyRW50cnkqKSBoZWFkZXI7CiAgICAgUm90YXRpbmdUcmVlX0VudW0oZW50cnktPmNhbGxzLCBmcmVlU3ViRW50cnksIE5VTEwpOwogICAgIFB5X0RFQ1JFRihlbnRyeS0+dXNlck9iaik7Ci0gICAgZnJlZShlbnRyeSk7CisgICAgUHlNZW1fRnJlZShlbnRyeSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTMwNSwxMyArMzAxLDEzIEBACiAgICAgcE9iai0+cHJvZmlsZXJFbnRyaWVzID0gRU1QVFlfUk9UQVRJTkdfVFJFRTsKICAgICAvKiByZWxlYXNlIHRoZSBtZW1vcnkgaG9sZCBieSB0aGUgUHJvZmlsZXJDb250ZXh0cyAqLwogICAgIGlmIChwT2JqLT5jdXJyZW50UHJvZmlsZXJDb250ZXh0KSB7Ci0gICAgICAgIGZyZWUocE9iai0+Y3VycmVudFByb2ZpbGVyQ29udGV4dCk7CisgICAgICAgIFB5TWVtX0ZyZWUocE9iai0+Y3VycmVudFByb2ZpbGVyQ29udGV4dCk7CiAgICAgICAgIHBPYmotPmN1cnJlbnRQcm9maWxlckNvbnRleHQgPSBOVUxMOwogICAgIH0KICAgICB3aGlsZSAocE9iai0+ZnJlZWxpc3RQcm9maWxlckNvbnRleHQpIHsKICAgICAgICAgUHJvZmlsZXJDb250ZXh0ICpjID0gcE9iai0+ZnJlZWxpc3RQcm9maWxlckNvbnRleHQ7CiAgICAgICAgIHBPYmotPmZyZWVsaXN0UHJvZmlsZXJDb250ZXh0ID0gYy0+cHJldmlvdXM7Ci0gICAgICAgIGZyZWUoYyk7CisgICAgICAgIFB5TWVtX0ZyZWUoYyk7CiAgICAgfQogICAgIHBPYmotPmZyZWVsaXN0UHJvZmlsZXJDb250ZXh0ID0gTlVMTDsKIH0KQEAgLTM5Nyw3ICszOTMsNyBAQAogICAgIGVsc2UgewogICAgICAgICAvKiBmcmVlIGxpc3QgZXhoYXVzdGVkLCBhbGxvY2F0ZSBhIG5ldyBvbmUgKi8KICAgICAgICAgcENvbnRleHQgPSAoUHJvZmlsZXJDb250ZXh0KikKLSAgICAgICAgICAgIG1hbGxvYyhzaXplb2YoUHJvZmlsZXJDb250ZXh0KSk7CisgICAgICAgICAgICBQeU1lbV9NYWxsb2Moc2l6ZW9mKFByb2ZpbGVyQ29udGV4dCkpOwogICAgICAgICBpZiAocENvbnRleHQgPT0gTlVMTCkgewogICAgICAgICAgICAgcE9iai0+ZmxhZ3MgfD0gUE9GX05PTUVNT1JZOwogICAgICAgICAgICAgZ290byByZXN0b3JlUHllcnI7CkBAIC03MTYsNyArNzEyLDcgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcE9iai0+Y3VycmVudFByb2ZpbGVyQ29udGV4dCA9IHBDb250ZXh0LT5wcmV2aW91czsKICAgICAgICAgaWYgKHBDb250ZXh0KQotICAgICAgICAgICAgZnJlZShwQ29udGV4dCk7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHBDb250ZXh0KTsKICAgICB9CiAKIH0KQEAgLTg4OCwxMCArODg0LDEyIEBACiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlByb2ZpbGVyIiwgKFB5T2JqZWN0ICopJlB5UHJvZmlsZXJfVHlwZSk7CiAKICAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlN0YXRzRW50cnlUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9maWxlcl9lbnRyeV9kZXNjKTsKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RhdHNTdWJFbnRyeVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2ZpbGVyX3N1YmVudHJ5X2Rlc2MpOworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0YXRzRW50cnlUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2ZpbGVyX2VudHJ5X2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0YXRzU3ViRW50cnlUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2ZpbGVyX3N1YmVudHJ5X2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlN0YXRzRW50cnlUeXBlKTsKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlN0YXRzU3ViRW50cnlUeXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBiNDgyYTc3Li41ZDYxMGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC01MSw2ICs1MSw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECisgICAgbHptYV9hbGxvY2F0b3IgYWxsb2M7CiAgICAgbHptYV9zdHJlYW0gbHpzOwogICAgIGludCBmbHVzaGVkOwogI2lmZGVmIFdJVEhfVEhSRUFECkBAIC02MCw2ICs2MSw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECisgICAgbHptYV9hbGxvY2F0b3IgYWxsb2M7CiAgICAgbHptYV9zdHJlYW0gbHpzOwogICAgIGludCBjaGVjazsKICAgICBjaGFyIGVvZjsKQEAgLTExNyw2ICsxMTksMjIgQEAKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkKgorUHlMem1hX01hbGxvYyh2b2lkICpvcGFxdWUsIHNpemVfdCBpdGVtcywgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKGl0ZW1zID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIHNpemUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFB5TWVtX01hbGxvYygpIGNhbm5vdCBiZSB1c2VkOgorICAgICAgIHRoZSBHSUwgaXMgbm90IGhlbGQgd2hlbiBsem1hX2NvZGUoKSBpcyBjYWxsZWQgKi8KKyAgICByZXR1cm4gUHlNZW1fUmF3TWFsbG9jKGl0ZW1zICogc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitQeUx6bWFfRnJlZSh2b2lkICpvcGFxdWUsIHZvaWQgKnB0cikKK3sKKyAgICBQeU1lbV9SYXdGcmVlKHB0cik7Cit9CisKICNpZiBCVUZTSVogPCA4MTkyCiAjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgODE5MgogI2Vsc2UKQEAgLTY1Niw2ICs2NzQsMTEgQEAKICAgICAgICAgaWYgKCF1aW50MzJfY29udmVydGVyKHByZXNldF9vYmosICZwcmVzZXQpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgc2VsZi0+YWxsb2Mub3BhcXVlID0gTlVMTDsKKyAgICBzZWxmLT5hbGxvYy5hbGxvYyA9IFB5THptYV9NYWxsb2M7CisgICAgc2VsZi0+YWxsb2MuZnJlZSA9IFB5THptYV9GcmVlOworICAgIHNlbGYtPmx6cy5hbGxvY2F0b3IgPSAmc2VsZi0+YWxsb2M7CisKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CiAgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgewpAQCAtOTIyLDYgKzk0NSwxMSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgc2VsZi0+YWxsb2Mub3BhcXVlID0gTlVMTDsKKyAgICBzZWxmLT5hbGxvYy5hbGxvYyA9IFB5THptYV9NYWxsb2M7CisgICAgc2VsZi0+YWxsb2MuZnJlZSA9IFB5THptYV9GcmVlOworICAgIHNlbGYtPmx6cy5hbGxvY2F0b3IgPSAmc2VsZi0+YWxsb2M7CisKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CiAgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCmluZGV4IDk0NjBjODkuLmE0YzRiMmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKQEAgLTEwLDI1ICsxMCwyMyBAQAogI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgogCiAKLVB5T2JqZWN0ICpQcm9jZXNzRXJyb3IsICpCdWZmZXJUb29TaG9ydDsKLQogLyoKICAqIEZ1bmN0aW9uIHdoaWNoIHJhaXNlcyBleGNlcHRpb25zIGJhc2VkIG9uIGVycm9yIGNvZGVzCiAgKi8KIAogUHlPYmplY3QgKgotbXBfU2V0RXJyb3IoUHlPYmplY3QgKlR5cGUsIGludCBudW0pCitfUHlNcF9TZXRFcnJvcihQeU9iamVjdCAqVHlwZSwgaW50IG51bSkKIHsKICAgICBzd2l0Y2ggKG51bSkgewogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBjYXNlIE1QX1NUQU5EQVJEX0VSUk9SOgogICAgICAgICBpZiAoVHlwZSA9PSBOVUxMKQotICAgICAgICAgICAgVHlwZSA9IFB5RXhjX1dpbmRvd3NFcnJvcjsKKyAgICAgICAgICAgIFR5cGUgPSBQeUV4Y19PU0Vycm9yOwogICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihUeXBlLCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNUF9TT0NLRVRfRVJST1I6CiAgICAgICAgIGlmIChUeXBlID09IE5VTEwpCi0gICAgICAgICAgICBUeXBlID0gUHlFeGNfV2luZG93c0Vycm9yOworICAgICAgICAgICAgVHlwZSA9IFB5RXhjX09TRXJyb3I7CiAgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFR5cGUsIFdTQUdldExhc3RFcnJvcigpKTsKICAgICAgICAgYnJlYWs7CiAjZWxzZSAvKiAhTVNfV0lORE9XUyAqLwpAQCAtMTU5LDE5ICsxNTcsMTIgQEAKICAgICBpZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBHZXQgY29weSBvZiBCdWZmZXJUb29TaG9ydCAqLwotICAgIHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm11bHRpcHJvY2Vzc2luZyIpOwotICAgIGlmICghdGVtcCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQnVmZmVyVG9vU2hvcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJCdWZmZXJUb29TaG9ydCIpOwotICAgIFB5X1hERUNSRUYodGVtcCk7Ci0KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkpCi0gICAgLyogQWRkIFNlbUxvY2sgdHlwZSB0byBtb2R1bGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZTZW1Mb2NrVHlwZSkgPCAwKQorICAgIC8qIEFkZCBfUHlNcF9TZW1Mb2NrIHR5cGUgdG8gbW9kdWxlICovCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmX1B5TXBfU2VtTG9ja1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKCZTZW1Mb2NrVHlwZSk7CisgICAgUHlfSU5DUkVGKCZfUHlNcF9TZW1Mb2NrVHlwZSk7CiAgICAgewogICAgICAgICBQeU9iamVjdCAqcHlfc2VtX3ZhbHVlX21heDsKICAgICAgICAgLyogU29tZSBzeXN0ZW1zIGRlZmluZSBTRU1fVkFMVUVfTUFYIGFzIGFuIHVuc2lnbmVkIHZhbHVlIHRoYXQKQEAgLTE4MiwxMCArMTczLDEwIEBACiAgICAgICAgICAgICBweV9zZW1fdmFsdWVfbWF4ID0gUHlMb25nX0Zyb21Mb25nKFNFTV9WQUxVRV9NQVgpOwogICAgICAgICBpZiAocHlfc2VtX3ZhbHVlX21heCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKFNlbUxvY2tUeXBlLnRwX2RpY3QsICJTRU1fVkFMVUVfTUFYIiwKKyAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoX1B5TXBfU2VtTG9ja1R5cGUudHBfZGljdCwgIlNFTV9WQUxVRV9NQVgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV9zZW1fdmFsdWVfbWF4KTsKICAgICB9Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIlNlbUxvY2siLCAoUHlPYmplY3QqKSZTZW1Mb2NrVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIlNlbUxvY2siLCAoUHlPYmplY3QqKSZfUHlNcF9TZW1Mb2NrVHlwZSk7CiAjZW5kaWYKIAogICAgIC8qIEFkZCBjb25maWd1cmF0aW9uIG1hY3JvcyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCmluZGV4IGUzZGU5YmEuLjY4YTU5ODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAorKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKQEAgLTkxLDIzICs5MSwxMiBAQAogI2RlZmluZSBNUF9TT0NLRVRfRVJST1IgKC0xMDAyKQogI2RlZmluZSBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUICgtMTAwMykKIAotUHlPYmplY3QgKm1wX1NldEVycm9yKFB5T2JqZWN0ICpUeXBlLCBpbnQgbnVtKTsKK1B5T2JqZWN0ICpfUHlNcF9TZXRFcnJvcihQeU9iamVjdCAqVHlwZSwgaW50IG51bSk7CiAKIC8qCiAgKiBFeHRlcm5zIC0gbm90IGFsbCB3aWxsIHJlYWxseSBleGlzdCBvbiBhbGwgcGxhdGZvcm1zCiAgKi8KIAotZXh0ZXJuIFB5T2JqZWN0ICpCdWZmZXJUb29TaG9ydDsKLWV4dGVybiBQeVR5cGVPYmplY3QgU2VtTG9ja1R5cGU7Ci1leHRlcm4gUHlUeXBlT2JqZWN0IFBpcGVDb25uZWN0aW9uVHlwZTsKLQotLyoKLSAqIE1pc2NlbGxhbmVvdXMKLSAqLwotCi0jaWZuZGVmIE1JTgotIyAgZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8geCA6IHkpCi0jICBkZWZpbmUgTUFYKHgsIHkpICgoeCkgPiAoeSkgPyB4IDogeSkKLSNlbmRpZgorZXh0ZXJuIFB5VHlwZU9iamVjdCBfUHlNcF9TZW1Mb2NrVHlwZTsKIAogI2VuZGlmIC8qIE1VTFRJUFJPQ0VTU0lOR19IICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMKaW5kZXggMmMyYjAyMC4uZGNmM2I0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYwpAQCAtNDMsNyArNDMsNyBAQAogewogICAgIGxvbmcgcHJldmlvdXM7CiAKLSAgICBzd2l0Y2ggKFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCAwKSkgeworICAgIHN3aXRjaCAoV2FpdEZvclNpbmdsZU9iamVjdEV4KGhhbmRsZSwgMCwgRkFMU0UpKSB7CiAgICAgY2FzZSBXQUlUX09CSkVDVF8wOgogICAgICAgICBpZiAoIVJlbGVhc2VTZW1hcGhvcmUoaGFuZGxlLCAxLCAmcHJldmlvdXMpKQogICAgICAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwpAQCAtOTksNyArOTksNyBAQAogICAgIH0KIAogICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgY2FuIGFjcXVpcmUgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCBhbmQgYmxvY2tpbmcgKi8KLSAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLT5oYW5kbGUsIDApID09IFdBSVRfT0JKRUNUXzApIHsKKyAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdEV4KHNlbGYtPmhhbmRsZSwgMCwgRkFMU0UpID09IFdBSVRfT0JKRUNUXzApIHsKICAgICAgICAgc2VsZi0+bGFzdF90aWQgPSBHZXRDdXJyZW50VGhyZWFkSWQoKTsKICAgICAgICAgKytzZWxmLT5jb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMKQogICAgICAgICBSZXNldEV2ZW50KHNpZ2ludF9ldmVudCk7Ci0gICAgcmVzID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cyhuaGFuZGxlcywgaGFuZGxlcywgRkFMU0UsIGZ1bGxfbXNlY3MpOworICAgIHJlcyA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHNFeChuaGFuZGxlcywgaGFuZGxlcywgRkFMU0UsIGZ1bGxfbXNlY3MsIEZBTFNFKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgLyogaGFuZGxlIHJlc3VsdCAqLwpAQCAtMjAwLDcgKzIwMCw3IEBACiAjaWZuZGVmIEhBVkVfU0VNX1RJTUVEV0FJVAogIyAgZGVmaW5lIHNlbV90aW1lZHdhaXQoc2VtLGRlYWRsaW5lKSBzZW1fdGltZWR3YWl0X3NhdmUoc2VtLGRlYWRsaW5lLF9zYXZlKQogCi1pbnQKK3N0YXRpYyBpbnQKIHNlbV90aW1lZHdhaXRfc2F2ZShzZW1fdCAqc2VtLCBzdHJ1Y3QgdGltZXNwZWMgKmRlYWRsaW5lLCBQeVRocmVhZFN0YXRlICpfc2F2ZSkKIHsKICAgICBpbnQgcmVzOwpAQCAtNDUxLDcgKzQ1MSw3IEBACiAgIGZhaWx1cmU6CiAgICAgaWYgKGhhbmRsZSAhPSBTRU1fRkFJTEVEKQogICAgICAgICBTRU1fQ0xPU0UoaGFuZGxlKTsKLSAgICBtcF9TZXRFcnJvcihOVUxMLCBNUF9TVEFOREFSRF9FUlJPUik7CisgICAgX1B5TXBfU2V0RXJyb3IoTlVMTCwgTVBfU1RBTkRBUkRfRVJST1IpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC00OTgsNyArNDk4LDcgQEAKICNlbHNlCiAgICAgaW50IHN2YWw7CiAgICAgaWYgKFNFTV9HRVRWQUxVRShzZWxmLT5oYW5kbGUsICZzdmFsKSA8IDApCi0gICAgICAgIHJldHVybiBtcF9TZXRFcnJvcihOVUxMLCBNUF9TVEFOREFSRF9FUlJPUik7CisgICAgICAgIHJldHVybiBfUHlNcF9TZXRFcnJvcihOVUxMLCBNUF9TVEFOREFSRF9FUlJPUik7CiAgICAgLyogc29tZSBwb3NpeCBpbXBsZW1lbnRhdGlvbnMgdXNlIG5lZ2F0aXZlIG51bWJlcnMgdG8gaW5kaWNhdGUKICAgICAgICB0aGUgbnVtYmVyIG9mIHdhaXRpbmcgdGhyZWFkcyAqLwogICAgIGlmIChzdmFsIDwgMCkKQEAgLTUxNCwxNiArNTE0LDE2IEBACiAgICAgaWYgKHNlbV90cnl3YWl0KHNlbGYtPmhhbmRsZSkgPCAwKSB7CiAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCiAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgcmV0dXJuIG1wX1NldEVycm9yKE5VTEwsIE1QX1NUQU5EQVJEX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIF9QeU1wX1NldEVycm9yKE5VTEwsIE1QX1NUQU5EQVJEX0VSUk9SKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc2VtX3Bvc3Qoc2VsZi0+aGFuZGxlKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gbXBfU2V0RXJyb3IoTlVMTCwgTVBfU1RBTkRBUkRfRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIF9QeU1wX1NldEVycm9yKE5VTEwsIE1QX1NUQU5EQVJEX0VSUk9SKTsKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KICNlbHNlCiAgICAgaW50IHN2YWw7CiAgICAgaWYgKFNFTV9HRVRWQUxVRShzZWxmLT5oYW5kbGUsICZzdmFsKSA8IDApCi0gICAgICAgIHJldHVybiBtcF9TZXRFcnJvcihOVUxMLCBNUF9TVEFOREFSRF9FUlJPUik7CisgICAgICAgIHJldHVybiBfUHlNcF9TZXRFcnJvcihOVUxMLCBNUF9TVEFOREFSRF9FUlJPUik7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylzdmFsID09IDApOwogI2VuZGlmCiB9CkBAIC01ODEsNyArNTgxLDcgQEAKICAqIFNlbWFwaG9yZSB0eXBlCiAgKi8KIAotUHlUeXBlT2JqZWN0IFNlbUxvY2tUeXBlID0geworUHlUeXBlT2JqZWN0IF9QeU1wX1NlbUxvY2tUeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIC8qIHRwX25hbWUgICAgICAgICAgICovICJfbXVsdGlwcm9jZXNzaW5nLlNlbUxvY2siLAogICAgIC8qIHRwX2Jhc2ljc2l6ZSAgICAgICovIHNpemVvZihTZW1Mb2NrT2JqZWN0KSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3BlcmF0b3IuYyBiL01vZHVsZXMvX29wZXJhdG9yLmMKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTW9kdWxlcy9vcGVyYXRvci5jCnJlbmFtZSB0byBNb2R1bGVzL19vcGVyYXRvci5jCmluZGV4IDUxNTZiNmIuLmU4YmVmMDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL19vcGVyYXRvci5jCkBAIC0yMDgsNiArMjA4LDMxIEBACiAgICAgcmV0dXJuIChyZXN1bHQgPT0gMCk7CiB9CiAKK1B5RG9jX1NUUlZBUihsZW5ndGhfaGludF9fZG9jX18sCisibGVuZ3RoX2hpbnQob2JqLCBkZWZhdWx0PTApIC0+IGludFxuIgorIlJldHVybiBhbiBlc3RpbWF0ZSBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIG9iai5cbiIKKyJUaGlzIGlzIHVzZWZ1bCBmb3IgcHJlc2l6aW5nIGNvbnRhaW5lcnMgd2hlbiBidWlsZGluZyBmcm9tIGFuXG4iCisiaXRlcmFibGUuXG4iCisiXG4iCisiSWYgdGhlIG9iamVjdCBzdXBwb3J0cyBsZW4oKSwgdGhlIHJlc3VsdCB3aWxsIGJlXG4iCisiZXhhY3QuIE90aGVyd2lzZSwgaXQgbWF5IG92ZXItIG9yIHVuZGVyLWVzdGltYXRlIGJ5IGFuXG4iCisiYXJiaXRyYXJ5IGFtb3VudC4gVGhlIHJlc3VsdCB3aWxsIGJlIGFuIGludGVnZXIgPj0gMC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICpsZW5ndGhfaGludChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeV9zc2l6ZV90IGRlZmF1bHR2YWx1ZSA9IDAsIHJlczsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98bjpsZW5ndGhfaGludCIsICZvYmosICZkZWZhdWx0dmFsdWUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXMgPSBQeU9iamVjdF9MZW5ndGhIaW50KG9iaiwgZGVmYXVsdHZhbHVlKTsKKyAgICBpZiAocmVzID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKK30KKworCiBQeURvY19TVFJWQVIoY29tcGFyZV9kaWdlc3RfX2RvY19fLAogImNvbXBhcmVfZGlnZXN0KGEsIGIpIC0+IGJvb2xcbiIKICJcbiIKQEAgLTI5NywxNyArMzIyLDE1IEBACiAvKiBvcGVyYXRvciBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNkZWZpbmUgc3BhbTEoT1AsRE9DKSB7I09QLCBPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sCi0jZGVmaW5lIHNwYW0yKE9QLEFMVE9QLERPQykgeyNPUCwgb3BfIyNPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHsjQUxUT1AsIG9wXyMjT1AsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKERPQyl9LAorI2RlZmluZSBzcGFtMihPUCxET0MpIHsjT1AsIG9wXyMjT1AsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKERPQyl9LAogI2RlZmluZSBzcGFtMW8oT1AsRE9DKSB7I09QLCBPUCwgTUVUSF9PLCBQeURvY19TVFIoRE9DKX0sCi0jZGVmaW5lIHNwYW0ybyhPUCxBTFRPUCxET0MpIHsjT1AsIG9wXyMjT1AsIE1FVEhfTywgUHlEb2NfU1RSKERPQyl9LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7I0FMVE9QLCBvcF8jI09QLCBNRVRIX08sIFB5RG9jX1NUUihET0MpfSwKKyNkZWZpbmUgc3BhbTJvKE9QLERPQykgeyNPUCwgb3BfIyNPUCwgTUVUSF9PLCBQeURvY19TVFIoRE9DKX0sCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgb3BlcmF0b3JfbWV0aG9kc1tdID0gewogCiBzcGFtMW8odHJ1dGgsCiAgInRydXRoKGEpIC0tIFJldHVybiBUcnVlIGlmIGEgaXMgdHJ1ZSwgRmFsc2Ugb3RoZXJ3aXNlLiIpCi1zcGFtMihjb250YWlucyxfX2NvbnRhaW5zX18sCitzcGFtMihjb250YWlucywKICAiY29udGFpbnMoYSwgYikgLS0gU2FtZSBhcyBiIGluIGEgKG5vdGUgcmV2ZXJzZWQgb3BlcmFuZHMpLiIpCiBzcGFtMShpbmRleE9mLAogICJpbmRleE9mKGEsIGIpIC0tIFJldHVybiB0aGUgZmlyc3QgaW5kZXggb2YgYiBpbiBhLiIpCkBAIC0zMTYsNTYgKzMzOSw1OCBAQAogCiBzcGFtMShpc18sICJpc18oYSwgYikgLS0gU2FtZSBhcyBhIGlzIGIuIikKIHNwYW0xKGlzX25vdCwgImlzX25vdChhLCBiKSAtLSBTYW1lIGFzIGEgaXMgbm90IGIuIikKLXNwYW0ybyhpbmRleCwgX19pbmRleF9fLCAiaW5kZXgoYSkgLS0gU2FtZSBhcyBhLl9faW5kZXhfXygpIikKLXNwYW0yKGFkZCxfX2FkZF9fLCAiYWRkKGEsIGIpIC0tIFNhbWUgYXMgYSArIGIuIikKLXNwYW0yKHN1YixfX3N1Yl9fLCAic3ViKGEsIGIpIC0tIFNhbWUgYXMgYSAtIGIuIikKLXNwYW0yKG11bCxfX211bF9fLCAibXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqIGIuIikKLXNwYW0yKGZsb29yZGl2LF9fZmxvb3JkaXZfXywgImZsb29yZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvLyBiLiIpCi1zcGFtMih0cnVlZGl2LF9fdHJ1ZWRpdl9fLCAidHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLyBiLiIpCi1zcGFtMihtb2QsX19tb2RfXywgIm1vZChhLCBiKSAtLSBTYW1lIGFzIGEgJSBiLiIpCi1zcGFtMm8obmVnLF9fbmVnX18sICJuZWcoYSkgLS0gU2FtZSBhcyAtYS4iKQotc3BhbTJvKHBvcyxfX3Bvc19fLCAicG9zKGEpIC0tIFNhbWUgYXMgK2EuIikKLXNwYW0ybyhhYnMsX19hYnNfXywgImFicyhhKSAtLSBTYW1lIGFzIGFicyhhKS4iKQotc3BhbTJvKGludixfX2ludl9fLCAiaW52KGEpIC0tIFNhbWUgYXMgfmEuIikKLXNwYW0ybyhpbnZlcnQsX19pbnZlcnRfXywgImludmVydChhKSAtLSBTYW1lIGFzIH5hLiIpCi1zcGFtMihsc2hpZnQsX19sc2hpZnRfXywgImxzaGlmdChhLCBiKSAtLSBTYW1lIGFzIGEgPDwgYi4iKQotc3BhbTIocnNoaWZ0LF9fcnNoaWZ0X18sICJyc2hpZnQoYSwgYikgLS0gU2FtZSBhcyBhID4+IGIuIikKLXNwYW0ybyhub3RfLF9fbm90X18sICJub3RfKGEpIC0tIFNhbWUgYXMgbm90IGEuIikKLXNwYW0yKGFuZF8sX19hbmRfXywgImFuZF8oYSwgYikgLS0gU2FtZSBhcyBhICYgYi4iKQotc3BhbTIoeG9yLF9feG9yX18sICJ4b3IoYSwgYikgLS0gU2FtZSBhcyBhIF4gYi4iKQotc3BhbTIob3JfLF9fb3JfXywgIm9yXyhhLCBiKSAtLSBTYW1lIGFzIGEgfCBiLiIpCi1zcGFtMihpYWRkLF9faWFkZF9fLCAiYSA9IGlhZGQoYSwgYikgLS0gU2FtZSBhcyBhICs9IGIuIikKLXNwYW0yKGlzdWIsX19pc3ViX18sICJhID0gaXN1YihhLCBiKSAtLSBTYW1lIGFzIGEgLT0gYi4iKQotc3BhbTIoaW11bCxfX2ltdWxfXywgImEgPSBpbXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqPSBiLiIpCi1zcGFtMihpZmxvb3JkaXYsX19pZmxvb3JkaXZfXywgImEgPSBpZmxvb3JkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC8vPSBiLiIpCi1zcGFtMihpdHJ1ZWRpdixfX2l0cnVlZGl2X18sICJhID0gaXRydWVkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC89IGIiKQotc3BhbTIoaW1vZCxfX2ltb2RfXywgImEgPSBpbW9kKGEsIGIpIC0tIFNhbWUgYXMgYSAlPSBiLiIpCi1zcGFtMihpbHNoaWZ0LF9faWxzaGlmdF9fLCAiYSA9IGlsc2hpZnQoYSwgYikgLS0gU2FtZSBhcyBhIDw8PSBiLiIpCi1zcGFtMihpcnNoaWZ0LF9faXJzaGlmdF9fLCAiYSA9IGlyc2hpZnQoYSwgYikgLS0gU2FtZSBhcyBhID4+PSBiLiIpCi1zcGFtMihpYW5kLF9faWFuZF9fLCAiYSA9IGlhbmQoYSwgYikgLS0gU2FtZSBhcyBhICY9IGIuIikKLXNwYW0yKGl4b3IsX19peG9yX18sICJhID0gaXhvcihhLCBiKSAtLSBTYW1lIGFzIGEgXj0gYi4iKQotc3BhbTIoaW9yLF9faW9yX18sICJhID0gaW9yKGEsIGIpIC0tIFNhbWUgYXMgYSB8PSBiLiIpCi1zcGFtMihjb25jYXQsX19jb25jYXRfXywKK3NwYW0ybyhpbmRleCwgImluZGV4KGEpIC0tIFNhbWUgYXMgYS5fX2luZGV4X18oKSIpCitzcGFtMihhZGQsICJhZGQoYSwgYikgLS0gU2FtZSBhcyBhICsgYi4iKQorc3BhbTIoc3ViLCAic3ViKGEsIGIpIC0tIFNhbWUgYXMgYSAtIGIuIikKK3NwYW0yKG11bCwgIm11bChhLCBiKSAtLSBTYW1lIGFzIGEgKiBiLiIpCitzcGFtMihmbG9vcmRpdiwgImZsb29yZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvLyBiLiIpCitzcGFtMih0cnVlZGl2LCAidHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLyBiLiIpCitzcGFtMihtb2QsICJtb2QoYSwgYikgLS0gU2FtZSBhcyBhICUgYi4iKQorc3BhbTJvKG5lZywgIm5lZyhhKSAtLSBTYW1lIGFzIC1hLiIpCitzcGFtMm8ocG9zLCAicG9zKGEpIC0tIFNhbWUgYXMgK2EuIikKK3NwYW0ybyhhYnMsICJhYnMoYSkgLS0gU2FtZSBhcyBhYnMoYSkuIikKK3NwYW0ybyhpbnYsICJpbnYoYSkgLS0gU2FtZSBhcyB+YS4iKQorc3BhbTJvKGludmVydCwgImludmVydChhKSAtLSBTYW1lIGFzIH5hLiIpCitzcGFtMihsc2hpZnQsICJsc2hpZnQoYSwgYikgLS0gU2FtZSBhcyBhIDw8IGIuIikKK3NwYW0yKHJzaGlmdCwgInJzaGlmdChhLCBiKSAtLSBTYW1lIGFzIGEgPj4gYi4iKQorc3BhbTJvKG5vdF8sICJub3RfKGEpIC0tIFNhbWUgYXMgbm90IGEuIikKK3NwYW0yKGFuZF8sICJhbmRfKGEsIGIpIC0tIFNhbWUgYXMgYSAmIGIuIikKK3NwYW0yKHhvciwgInhvcihhLCBiKSAtLSBTYW1lIGFzIGEgXiBiLiIpCitzcGFtMihvcl8sICJvcl8oYSwgYikgLS0gU2FtZSBhcyBhIHwgYi4iKQorc3BhbTIoaWFkZCwgImEgPSBpYWRkKGEsIGIpIC0tIFNhbWUgYXMgYSArPSBiLiIpCitzcGFtMihpc3ViLCAiYSA9IGlzdWIoYSwgYikgLS0gU2FtZSBhcyBhIC09IGIuIikKK3NwYW0yKGltdWwsICJhID0gaW11bChhLCBiKSAtLSBTYW1lIGFzIGEgKj0gYi4iKQorc3BhbTIoaWZsb29yZGl2LCAiYSA9IGlmbG9vcmRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLy89IGIuIikKK3NwYW0yKGl0cnVlZGl2LCAiYSA9IGl0cnVlZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvPSBiIikKK3NwYW0yKGltb2QsICJhID0gaW1vZChhLCBiKSAtLSBTYW1lIGFzIGEgJT0gYi4iKQorc3BhbTIoaWxzaGlmdCwgImEgPSBpbHNoaWZ0KGEsIGIpIC0tIFNhbWUgYXMgYSA8PD0gYi4iKQorc3BhbTIoaXJzaGlmdCwgImEgPSBpcnNoaWZ0KGEsIGIpIC0tIFNhbWUgYXMgYSA+Pj0gYi4iKQorc3BhbTIoaWFuZCwgImEgPSBpYW5kKGEsIGIpIC0tIFNhbWUgYXMgYSAmPSBiLiIpCitzcGFtMihpeG9yLCAiYSA9IGl4b3IoYSwgYikgLS0gU2FtZSBhcyBhIF49IGIuIikKK3NwYW0yKGlvciwgImEgPSBpb3IoYSwgYikgLS0gU2FtZSBhcyBhIHw9IGIuIikKK3NwYW0yKGNvbmNhdCwKICAiY29uY2F0KGEsIGIpIC0tIFNhbWUgYXMgYSArIGIsIGZvciBhIGFuZCBiIHNlcXVlbmNlcy4iKQotc3BhbTIoaWNvbmNhdCxfX2ljb25jYXRfXywKK3NwYW0yKGljb25jYXQsCiAgImEgPSBpY29uY2F0KGEsIGIpIC0tIFNhbWUgYXMgYSArPSBiLCBmb3IgYSBhbmQgYiBzZXF1ZW5jZXMuIikKLXNwYW0yKGdldGl0ZW0sX19nZXRpdGVtX18sCitzcGFtMihnZXRpdGVtLAogICJnZXRpdGVtKGEsIGIpIC0tIFNhbWUgYXMgYVtiXS4iKQotc3BhbTIoc2V0aXRlbSxfX3NldGl0ZW1fXywKK3NwYW0yKHNldGl0ZW0sCiAgInNldGl0ZW0oYSwgYiwgYykgLS0gU2FtZSBhcyBhW2JdID0gYy4iKQotc3BhbTIoZGVsaXRlbSxfX2RlbGl0ZW1fXywKK3NwYW0yKGRlbGl0ZW0sCiAgImRlbGl0ZW0oYSwgYikgLS0gU2FtZSBhcyBkZWwgYVtiXS4iKQotc3BhbTIocG93LF9fcG93X18sICJwb3coYSwgYikgLS0gU2FtZSBhcyBhICoqIGIuIikKLXNwYW0yKGlwb3csX19pcG93X18sICJhID0gaXBvdyhhLCBiKSAtLSBTYW1lIGFzIGEgKio9IGIuIikKLXNwYW0yKGx0LF9fbHRfXywgImx0KGEsIGIpIC0tIFNhbWUgYXMgYTxiLiIpCi1zcGFtMihsZSxfX2xlX18sICJsZShhLCBiKSAtLSBTYW1lIGFzIGE8PWIuIikKLXNwYW0yKGVxLF9fZXFfXywgImVxKGEsIGIpIC0tIFNhbWUgYXMgYT09Yi4iKQotc3BhbTIobmUsX19uZV9fLCAibmUoYSwgYikgLS0gU2FtZSBhcyBhIT1iLiIpCi1zcGFtMihndCxfX2d0X18sICJndChhLCBiKSAtLSBTYW1lIGFzIGE+Yi4iKQotc3BhbTIoZ2UsX19nZV9fLCAiZ2UoYSwgYikgLS0gU2FtZSBhcyBhPj1iLiIpCitzcGFtMihwb3csICJwb3coYSwgYikgLS0gU2FtZSBhcyBhICoqIGIuIikKK3NwYW0yKGlwb3csICJhID0gaXBvdyhhLCBiKSAtLSBTYW1lIGFzIGEgKio9IGIuIikKK3NwYW0yKGx0LCAibHQoYSwgYikgLS0gU2FtZSBhcyBhPGIuIikKK3NwYW0yKGxlLCAibGUoYSwgYikgLS0gU2FtZSBhcyBhPD1iLiIpCitzcGFtMihlcSwgImVxKGEsIGIpIC0tIFNhbWUgYXMgYT09Yi4iKQorc3BhbTIobmUsICJuZShhLCBiKSAtLSBTYW1lIGFzIGEhPWIuIikKK3NwYW0yKGd0LCAiZ3QoYSwgYikgLS0gU2FtZSBhcyBhPmIuIikKK3NwYW0yKGdlLCAiZ2UoYSwgYikgLS0gU2FtZSBhcyBhPj1iLiIpCiAKICAgICB7Il9jb21wYXJlX2RpZ2VzdCIsIChQeUNGdW5jdGlvbiljb21wYXJlX2RpZ2VzdCwgTUVUSF9WQVJBUkdTLAogICAgICBjb21wYXJlX2RpZ2VzdF9fZG9jX199LAorICAgICB7Imxlbmd0aF9oaW50IiwgKFB5Q0Z1bmN0aW9uKWxlbmd0aF9oaW50LCBNRVRIX1ZBUkFSR1MsCisgICAgIGxlbmd0aF9oaW50X19kb2NfX30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIAogfTsKQEAgLTg5MiwxMiArOTE3LDEyIEBACiB9OwogCiAKLS8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF9vcGVyYXRvcikgKi8KKy8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF9fb3BlcmF0b3IpICovCiAKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBvcGVyYXRvcm1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgIm9wZXJhdG9yIiwKKyAgICAiX29wZXJhdG9yIiwKICAgICBvcGVyYXRvcl9kb2MsCiAgICAgLTEsCiAgICAgb3BlcmF0b3JfbWV0aG9kcywKQEAgLTkwOCw3ICs5MzMsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9vcGVyYXRvcih2b2lkKQorUHlJbml0X19vcGVyYXRvcih2b2lkKQogewogICAgIFB5T2JqZWN0ICptOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19waWNrbGUuYyBiL01vZHVsZXMvX3BpY2tsZS5jCmluZGV4IGNlNTczY2YuLmFmNzNhODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3BpY2tsZS5jCisrKyBiL01vZHVsZXMvX3BpY2tsZS5jCkBAIC00MzYsNiArNDM2LDcgQEAKICAgICBuZXctPm10X3RhYmxlID0gUHlNZW1fTUFMTE9DKHNlbGYtPm10X2FsbG9jYXRlZCAqIHNpemVvZihQeU1lbW9FbnRyeSkpOwogICAgIGlmIChuZXctPm10X3RhYmxlID09IE5VTEwpIHsKICAgICAgICAgUHlNZW1fRlJFRShuZXcpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPm10X2FsbG9jYXRlZDsgaSsrKSB7CkBAIC01MjksNyArNTMwLDcgQEAKICAgICBvbGR0YWJsZSA9IHNlbGYtPm10X3RhYmxlOwogICAgIHNlbGYtPm10X3RhYmxlID0gUHlNZW1fTUFMTE9DKG5ld19zaXplICogc2l6ZW9mKFB5TWVtb0VudHJ5KSk7CiAgICAgaWYgKHNlbGYtPm10X3RhYmxlID09IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRlJFRShvbGR0YWJsZSk7CisgICAgICAgIHNlbGYtPm10X3RhYmxlID0gb2xkdGFibGU7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC03NzQsMTcgKzc3NSwxNCBAQAogICAgIHNlbGYtPmZhc3RfbmVzdGluZyA9IDA7CiAgICAgc2VsZi0+Zml4X2ltcG9ydHMgPSAwOwogICAgIHNlbGYtPmZhc3RfbWVtbyA9IE5VTEw7Ci0KLSAgICBzZWxmLT5tZW1vID0gUHlNZW1vVGFibGVfTmV3KCk7Ci0gICAgaWYgKHNlbGYtPm1lbW8gPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBzZWxmLT5tYXhfb3V0cHV0X2xlbiA9IFdSSVRFX0JVRl9TSVpFOwogICAgIHNlbGYtPm91dHB1dF9sZW4gPSAwOworCisgICAgc2VsZi0+bWVtbyA9IFB5TWVtb1RhYmxlX05ldygpOwogICAgIHNlbGYtPm91dHB1dF9idWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bWF4X291dHB1dF9sZW4pOwotICAgIGlmIChzZWxmLT5vdXRwdXRfYnVmZmVyID09IE5VTEwpIHsKKworICAgIGlmIChzZWxmLT5tZW1vID09IE5VTEwgfHwgc2VsZi0+b3V0cHV0X2J1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTAwNiw4ICsxMDA0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipyZXN1bHQpCiB7CiAgICAgY2hhciAqaW5wdXRfbGluZSA9IFB5TWVtX1JlYWxsb2Moc2VsZi0+aW5wdXRfbGluZSwgbGVuICsgMSk7Ci0gICAgaWYgKGlucHV0X2xpbmUgPT0gTlVMTCkKKyAgICBpZiAoaW5wdXRfbGluZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICBtZW1jcHkoaW5wdXRfbGluZSwgbGluZSwgbGVuKTsKICAgICBpbnB1dF9saW5lW2xlbl0gPSAnXDAnOwpAQCAtMTEwNCw4ICsxMTA0LDEwIEBACiBfVW5waWNrbGVyX05ld01lbW8oUHlfc3NpemVfdCBuZXdfc2l6ZSkKIHsKICAgICBQeU9iamVjdCAqKm1lbW8gPSBQeU1lbV9NQUxMT0MobmV3X3NpemUgKiBzaXplb2YoUHlPYmplY3QgKikpOwotICAgIGlmIChtZW1vID09IE5VTEwpCisgICAgaWYgKG1lbW8gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgbWVtc2V0KG1lbW8sIDAsIG5ld19zaXplICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICByZXR1cm4gbWVtbzsKIH0KQEAgLTExMzYsMjAgKzExMzgsNiBAQAogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2VsZi0+c3RhY2sgPSAoUGRhdGEgKilQZGF0YV9OZXcoKTsKLSAgICBpZiAoc2VsZi0+c3RhY2sgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBtZW1zZXQoJnNlbGYtPmJ1ZmZlciwgMCwgc2l6ZW9mKFB5X2J1ZmZlcikpOwotCi0gICAgc2VsZi0+bWVtb19zaXplID0gMzI7Ci0gICAgc2VsZi0+bWVtbyA9IF9VbnBpY2tsZXJfTmV3TWVtbyhzZWxmLT5tZW1vX3NpemUpOwotICAgIGlmIChzZWxmLT5tZW1vID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBzZWxmLT5hcmcgPSBOVUxMOwogICAgIHNlbGYtPnBlcnNfZnVuYyA9IE5VTEw7CiAgICAgc2VsZi0+aW5wdXRfYnVmZmVyID0gTlVMTDsKQEAgLTExNjcsNiArMTE1NSwxNSBAQAogICAgIHNlbGYtPm1hcmtzX3NpemUgPSAwOwogICAgIHNlbGYtPnByb3RvID0gMDsKICAgICBzZWxmLT5maXhfaW1wb3J0cyA9IDA7CisgICAgbWVtc2V0KCZzZWxmLT5idWZmZXIsIDAsIHNpemVvZihQeV9idWZmZXIpKTsKKyAgICBzZWxmLT5tZW1vX3NpemUgPSAzMjsKKyAgICBzZWxmLT5tZW1vID0gX1VucGlja2xlcl9OZXdNZW1vKHNlbGYtPm1lbW9fc2l6ZSk7CisgICAgc2VsZi0+c3RhY2sgPSAoUGRhdGEgKilQZGF0YV9OZXcoKTsKKworICAgIGlmIChzZWxmLT5tZW1vID09IE5VTEwgfHwgc2VsZi0+c3RhY2sgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTIxMyw4ICsxMjEwLDggQEAKICAgICBpZiAoZXJyb3JzID09IE5VTEwpCiAgICAgICAgIGVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgc2VsZi0+ZW5jb2RpbmcgPSBzdHJkdXAoZW5jb2RpbmcpOwotICAgIHNlbGYtPmVycm9ycyA9IHN0cmR1cChlcnJvcnMpOworICAgIHNlbGYtPmVuY29kaW5nID0gX1B5TWVtX1N0cmR1cChlbmNvZGluZyk7CisgICAgc2VsZi0+ZXJyb3JzID0gX1B5TWVtX1N0cmR1cChlcnJvcnMpOwogICAgIGlmIChzZWxmLT5lbmNvZGluZyA9PSBOVUxMIHx8IHNlbGYtPmVycm9ycyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEzNjQsOCArMTM2MSwxMCBAQAogCiAgIHNlYXJjaDoKICAgICBtb2R1bGVzX2RpY3QgPSBQeVN5c19HZXRPYmplY3QoIm1vZHVsZXMiKTsKLSAgICBpZiAobW9kdWxlc19kaWN0ID09IE5VTEwpCisgICAgaWYgKG1vZHVsZXNfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5tb2R1bGVzIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGkgPSAwOwogICAgIG1vZHVsZV9uYW1lID0gTlVMTDsKQEAgLTE3NDgsOCArMTc0NywxMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGlmIChsYXRpbjEgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJsYXRpbjEiKTsKLSAgICAgICAgICAgICAgICBpZiAobGF0aW4xID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKGxhdGluMSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX3N0cik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCIoTyhPTykpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzX2VuY29kZSwgdW5pY29kZV9zdHIsIGxhdGluMSk7CkBAIC0xODczLDYzICsxODc0LDk3IEBACiB9CiAKIHN0YXRpYyBpbnQKK3dyaXRlX3V0ZjgoUGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqZGF0YSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNoYXIgcGRhdGFbNV07CisKKyNpZiBTSVpFT0ZfU0laRV9UID4gNAorICAgIGlmIChzaXplID4gMHhmZmZmZmZmZlVMKSB7CisgICAgICAgIC8qIHN0cmluZyB0b28gbGFyZ2UgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHNlcmlhbGl6ZSBhIHN0cmluZyBsYXJnZXIgdGhhbiA0R2lCIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIHBkYXRhWzBdID0gQklOVU5JQ09ERTsKKyAgICBwZGF0YVsxXSA9ICh1bnNpZ25lZCBjaGFyKShzaXplICYgMHhmZik7CisgICAgcGRhdGFbMl0gPSAodW5zaWduZWQgY2hhcikoKHNpemUgPj4gOCkgJiAweGZmKTsKKyAgICBwZGF0YVszXSA9ICh1bnNpZ25lZCBjaGFyKSgoc2l6ZSA+PiAxNikgJiAweGZmKTsKKyAgICBwZGF0YVs0XSA9ICh1bnNpZ25lZCBjaGFyKSgoc2l6ZSA+PiAyNCkgJiAweGZmKTsKKworICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCBwZGF0YSwgc2l6ZW9mKHBkYXRhKSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgZGF0YSwgc2l6ZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAord3JpdGVfdW5pY29kZV9iaW5hcnkoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKK3sKKyAgICBQeU9iamVjdCAqZW5jb2RlZCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGNoYXIgKmRhdGE7CisgICAgaW50IHI7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGRhdGEgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShvYmosICZzaXplKTsKKyAgICBpZiAoZGF0YSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gd3JpdGVfdXRmOChzZWxmLCBkYXRhLCBzaXplKTsKKworICAgIC8qIElzc3VlICM4MzgzOiBmb3Igc3RyaW5ncyB3aXRoIGxvbmUgc3Vycm9nYXRlcywgZmFsbGJhY2sgb24gdGhlCisgICAgICAgInN1cnJvZ2F0ZXBhc3MiIGVycm9yIGhhbmRsZXIuICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmosICJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIik7CisgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgciA9IHdyaXRlX3V0Zjgoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoZW5jb2RlZCksCisgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShlbmNvZGVkKSk7CisgICAgUHlfREVDUkVGKGVuY29kZWQpOworICAgIHJldHVybiByOworfQorCitzdGF0aWMgaW50CiBzYXZlX3VuaWNvZGUoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKmVuY29kZWQgPSBOVUxMOwotCiAgICAgaWYgKHNlbGYtPmJpbikgewotICAgICAgICBjaGFyIHBkYXRhWzVdOwotCi0gICAgICAgIGVuY29kZWQgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iaiwgInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKTsKLSAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoZW5jb2RlZCk7Ci0gICAgICAgIGlmIChzaXplID4gMHhmZmZmZmZmZkwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplIGEgc3RyaW5nIGxhcmdlciB0aGFuIDQgR2lCIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAvKiBzdHJpbmcgdG9vIGxhcmdlICovCi0gICAgICAgIH0KLQotICAgICAgICBwZGF0YVswXSA9IEJJTlVOSUNPREU7Ci0gICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpKHNpemUgJiAweGZmKTsKLSAgICAgICAgcGRhdGFbMl0gPSAodW5zaWduZWQgY2hhcikoKHNpemUgPj4gOCkgJiAweGZmKTsKLSAgICAgICAgcGRhdGFbM10gPSAodW5zaWduZWQgY2hhcikoKHNpemUgPj4gMTYpICYgMHhmZik7Ci0gICAgICAgIHBkYXRhWzRdID0gKHVuc2lnbmVkIGNoYXIpKChzaXplID4+IDI0KSAmIDB4ZmYpOwotCi0gICAgICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCBwZGF0YSwgNSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoZW5jb2RlZCksIHNpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmICh3cml0ZV91bmljb2RlX2JpbmFyeShzZWxmLCBvYmopIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICplbmNvZGVkOworICAgICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgICAgIGNvbnN0IGNoYXIgdW5pY29kZV9vcCA9IFVOSUNPREU7CiAKICAgICAgICAgZW5jb2RlZCA9IHJhd191bmljb2RlX2VzY2FwZShvYmopOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgJnVuaWNvZGVfb3AsIDEpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCAmdW5pY29kZV9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KIAogICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShlbmNvZGVkKTsKLSAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGVuY29kZWQpLCBzaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoZW5jb2RlZCksIHNpemUpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVuY29kZWQpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKIAogICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgIlxuIiwgMSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG1lbW9fcHV0KHNlbGYsIG9iaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOworICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CiAgICAgcmV0dXJuIDA7Ci0KLSAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihlbmNvZGVkKTsKLSAgICByZXR1cm4gLTE7CiB9CiAKIC8qIEEgaGVscGVyIGZvciBzYXZlX3R1cGxlLiAgUHVzaCB0aGUgbGVuIGVsZW1lbnRzIGluIHR1cGxlIHQgb24gdGhlIHN0YWNrLiAqLwpAQCAtNDE3MSwzNiArNDIwNiwyMyBAQAogCiAgICAgaWYgKChsZW4gPSBfVW5waWNrbGVyX1JlYWRsaW5lKHNlbGYsICZzKSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGxlbiA8IDIpCi0gICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKLSAgICBpZiAoKHMgPSBzdHJkdXAocykpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQorICAgIC8qIFN0cmlwIHRoZSBuZXdsaW5lICovCisgICAgbGVuLS07CiAgICAgLyogU3RyaXAgb3V0ZXJtb3N0IHF1b3RlcyAqLwotICAgIHdoaWxlIChsZW4gPiAwICYmIHNbbGVuIC0gMV0gPD0gJyAnKQotICAgICAgICBsZW4tLTsKLSAgICBpZiAobGVuID4gMSAmJiBzWzBdID09ICciJyAmJiBzW2xlbiAtIDFdID09ICciJykgewotICAgICAgICBzW2xlbiAtIDFdID0gJ1wwJzsKLSAgICAgICAgcCA9IHMgKyAxOwotICAgICAgICBsZW4gLT0gMjsKLSAgICB9Ci0gICAgZWxzZSBpZiAobGVuID4gMSAmJiBzWzBdID09ICdcJycgJiYgc1tsZW4gLSAxXSA9PSAnXCcnKSB7Ci0gICAgICAgIHNbbGVuIC0gMV0gPSAnXDAnOworICAgIGlmIChsZW4gPj0gMiAmJiBzWzBdID09IHNbbGVuIC0gMV0gJiYgKHNbMF0gPT0gJ1wnJyB8fCBzWzBdID09ICciJykpIHsKICAgICAgICAgcCA9IHMgKyAxOwogICAgICAgICBsZW4gLT0gMjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGZyZWUocyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW5zZWN1cmUgc3RyaW5nIHBpY2tsZSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBTVFJJTkcgb3Bjb2RlIGFyZ3VtZW50IG11c3QgYmUgcXVvdGVkIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIAogICAgIC8qIFVzZSB0aGUgUHlCeXRlcyBBUEkgdG8gZGVjb2RlIHRoZSBzdHJpbmcsIHNpbmNlIHRoYXQgaXMgd2hhdCBpcyB1c2VkCiAgICAgICAgdG8gZW5jb2RlLCBhbmQgdGhlbiBjb2VyY2UgdGhlIHJlc3VsdCB0byBVbmljb2RlLiAqLwogICAgIGJ5dGVzID0gUHlCeXRlc19EZWNvZGVFc2NhcGUocCwgbGVuLCBOVUxMLCAwLCBOVUxMKTsKLSAgICBmcmVlKHMpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KGJ5dGVzLCBzZWxmLT5lbmNvZGluZywgc2VsZi0+ZXJyb3JzKTsKQEAgLTQyMjYsOCArNDI0OCw3IEBACiAgICAgaWYgKHggPCAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIkJJTkJZVEVTIGV4Y2VlZHMgc3lzdGVtJ3MgbWF4aW11bSBzaXplIG9mICV6ZCBieXRlcyIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0laRV9UX01BWAotICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgUFlfU1NJWkVfVF9NQVgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC00MzUxLDggKzQzNzIsNyBAQAogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJCSU5VTklDT0RFIGV4Y2VlZHMgc3lzdGVtJ3MgbWF4aW11bSBzaXplIG9mICV6ZCBieXRlcyIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0laRV9UX01BWAotICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgUFlfU1NJWkVfVF9NQVgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC01NTI2LDggKzU1NDYsMTAgQEAKICAgICB9CiAKICAgICBtb2R1bGVzX2RpY3QgPSBQeVN5c19HZXRPYmplY3QoIm1vZHVsZXMiKTsKLSAgICBpZiAobW9kdWxlc19kaWN0ID09IE5VTEwpCisgICAgaWYgKG1vZHVsZXNfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5tb2R1bGVzIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIG1vZHVsZSA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKG1vZHVsZXNfZGljdCwgbW9kdWxlX25hbWUpOwogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewpAQCAtNTU3MSw4ICs1NTkzLDggQEAKICAgICBfVW5waWNrbGVyX01lbW9DbGVhbnVwKHNlbGYpOwogICAgIFB5TWVtX0ZyZWUoc2VsZi0+bWFya3MpOwogICAgIFB5TWVtX0ZyZWUoc2VsZi0+aW5wdXRfbGluZSk7Ci0gICAgZnJlZShzZWxmLT5lbmNvZGluZyk7Ci0gICAgZnJlZShzZWxmLT5lcnJvcnMpOworICAgIFB5TWVtX0ZyZWUoc2VsZi0+ZW5jb2RpbmcpOworICAgIFB5TWVtX0ZyZWUoc2VsZi0+ZXJyb3JzKTsKIAogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CkBAIC01NjA4LDkgKzU2MzAsOSBAQAogICAgIHNlbGYtPm1hcmtzID0gTlVMTDsKICAgICBQeU1lbV9GcmVlKHNlbGYtPmlucHV0X2xpbmUpOwogICAgIHNlbGYtPmlucHV0X2xpbmUgPSBOVUxMOwotICAgIGZyZWUoc2VsZi0+ZW5jb2RpbmcpOworICAgIFB5TWVtX0ZyZWUoc2VsZi0+ZW5jb2RpbmcpOwogICAgIHNlbGYtPmVuY29kaW5nID0gTlVMTDsKLSAgICBmcmVlKHNlbGYtPmVycm9ycyk7CisgICAgUHlNZW1fRnJlZShzZWxmLT5lcnJvcnMpOwogICAgIHNlbGYtPmVycm9ycyA9IE5VTEw7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggMDdkNzA5Ni4uYzRhNmI3YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTQ5MSw3ICs0OTEsNyBAQAogICAgICAgICAvKiBXZSBjYW4ndCBjYWxsIHN0cmVycm9yKHNhdmVkX2Vycm5vKS4gIEl0IGlzIG5vdCBhc3luYyBzaWduYWwgc2FmZS4KICAgICAgICAgICogVGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbG9vayB0aGUgZXJyb3IgbWVzc2FnZSB1cC4gKi8KICAgICB9IGVsc2UgewotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiUnVudGltZUVycm9yOjA6IiwgMTUpOworICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOwogICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOwogICAgIH0KICAgICBpZiAodW51c2VkKSByZXR1cm47ICAvKiBzaWxseT8geWVzISBhdm9pZHMgZ2NjIGNvbXBpbGVyIHdhcm5pbmcuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IDY1NDBhYjkuLjU5YzE1YjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC0xNjgsOSArMTY4LDkgQEAKIC8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi8KIC8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWluaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGluaXRfa2V5W10sIHVuc2lnbmVkIGxvbmcga2V5X2xlbmd0aCkKK2luaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGluaXRfa2V5W10sIHNpemVfdCBrZXlfbGVuZ3RoKQogewotICAgIHVuc2lnbmVkIGludCBpLCBqLCBrOyAgICAgICAvKiB3YXMgc2lnbmVkIGluIHRoZSBvcmlnaW5hbCBjb2RlLiBSREggMTIvMTYvMjAwMiAqLworICAgIHNpemVfdCBpLCBqLCBrOyAgICAgICAvKiB3YXMgc2lnbmVkIGluIHRoZSBvcmlnaW5hbCBjb2RlLiBSREggMTIvMTYvMjAwMiAqLwogICAgIHVuc2lnbmVkIGxvbmcgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKQEAgLTIwNywxNCArMjA3LDExIEBACiByYW5kb21fc2VlZChSYW5kb21PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOyAgICAgICAgICAgIC8qIGd1aWx0eSB1bnRpbCBwcm92ZWQgaW5ub2NlbnQgKi8KLSAgICBQeU9iamVjdCAqbWFza2xvd2VyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdGhpcnR5dHdvID0gTlVMTDsKICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqbmV3X2tleSwgKmtleSA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyBrZXltYXg7ICAgICAgICAgICAgICAgLyogIyBvZiBhbGxvY2F0ZWQgc2xvdHMgaW4ga2V5ICovCi0gICAgdW5zaWduZWQgbG9uZyBrZXl1c2VkOyAgICAgICAgICAgICAgLyogIyBvZiB1c2VkIHNsb3RzIGluIGtleSAqLwotICAgIGludCBlcnI7Ci0KKyAgICB1bnNpZ25lZCBsb25nICprZXkgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmtleV9hc19ieXRlcyA9IE5VTEw7CisgICAgc2l6ZV90IGJpdHMsIGtleXVzZWQsIGk7CisgICAgaW50IHJlczsKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNlZWQiLCAwLCAxLCAmYXJnKSkKQEAgLTI0Myw2OSArMjQwLDQ2IEBACiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZ290byBEb25lOwogCi0gICAgLyogTm93IHNwbGl0IG4gaW50byAzMi1iaXQgY2h1bmtzLCBmcm9tIHRoZSByaWdodC4gIEVhY2ggcGllY2UgaXMKLSAgICAgKiBzdG9yZWQgaW50byBrZXksIHdoaWNoIGhhcyBhIGNhcGFjaXR5IG9mIGtleW1heCBjaHVua3MsIG9mIHdoaWNoCi0gICAgICoga2V5dXNlZCBhcmUgZmlsbGVkLiAgQWxhcywgdGhlIHJlcGVhdGVkIHNoaWZ0aW5nIG1ha2VzIHRoaXMgYQotICAgICAqIHF1YWRyYXRpYy10aW1lIGFsZ29yaXRobTsgd2UnZCByZWFsbHkgbGlrZSB0byB1c2UKLSAgICAgKiBfUHlMb25nX0FzQnl0ZUFycmF5IGhlcmUsIGJ1dCB0aGVuIHdlJ2QgaGF2ZSB0byBicmVhayBpbnRvIHRoZQotICAgICAqIGxvbmcgcmVwcmVzZW50YXRpb24gdG8gZmlndXJlIG91dCBob3cgYmlnIGFuIGFycmF5IHdhcyBuZWVkZWQKLSAgICAgKiBpbiBhZHZhbmNlLgotICAgICAqLwotICAgIGtleW1heCA9IDg7ICAgICAgICAgLyogYXJiaXRyYXJ5OyBncm93cyBsYXRlciBpZiBuZWVkZWQgKi8KLSAgICBrZXl1c2VkID0gMDsKLSAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX01hbGxvYyhrZXltYXggKiBzaXplb2YoKmtleSkpOwotICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAvKiBOb3cgc3BsaXQgbiBpbnRvIDMyLWJpdCBjaHVua3MsIGZyb20gdGhlIHJpZ2h0LiAqLworICAgIGJpdHMgPSBfUHlMb25nX051bUJpdHMobik7CisgICAgaWYgKGJpdHMgPT0gKHNpemVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIERvbmU7CiAKLSAgICBtYXNrbG93ZXIgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygweGZmZmZmZmZmVSk7Ci0gICAgaWYgKG1hc2tsb3dlciA9PSBOVUxMKQotICAgICAgICBnb3RvIERvbmU7Ci0gICAgdGhpcnR5dHdvID0gUHlMb25nX0Zyb21Mb25nKDMyTCk7Ci0gICAgaWYgKHRoaXJ0eXR3byA9PSBOVUxMKQotICAgICAgICBnb3RvIERvbmU7Ci0gICAgd2hpbGUgKChlcnI9UHlPYmplY3RfSXNUcnVlKG4pKSkgewotICAgICAgICBQeU9iamVjdCAqbmV3bjsKLSAgICAgICAgUHlPYmplY3QgKnB5Y2h1bms7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgY2h1bms7CisgICAgLyogRmlndXJlIG91dCBob3cgbWFueSAzMi1iaXQgY2h1bmtzIHRoaXMgZ2l2ZXMgdXMuICovCisgICAga2V5dXNlZCA9IGJpdHMgPT0gMCA/IDEgOiAoYml0cyAtIDEpIC8gMzIgKyAxOwogCi0gICAgICAgIGlmIChlcnIgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIERvbmU7Ci0gICAgICAgIHB5Y2h1bmsgPSBQeU51bWJlcl9BbmQobiwgbWFza2xvd2VyKTsKLSAgICAgICAgaWYgKHB5Y2h1bmsgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgY2h1bmsgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocHljaHVuayk7Ci0gICAgICAgIFB5X0RFQ1JFRihweWNodW5rKTsKLSAgICAgICAgaWYgKGNodW5rID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBnb3RvIERvbmU7Ci0gICAgICAgIG5ld24gPSBQeU51bWJlcl9Sc2hpZnQobiwgdGhpcnR5dHdvKTsKLSAgICAgICAgaWYgKG5ld24gPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgUHlfREVDUkVGKG4pOwotICAgICAgICBuID0gbmV3bjsKLSAgICAgICAgaWYgKGtleXVzZWQgPj0ga2V5bWF4KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJpZ2dlciA9IGtleW1heCA8PCAxOwotICAgICAgICAgICAgaWYgKChiaWdnZXIgPj4gMSkgIT0ga2V5bWF4IHx8Ci0gICAgICAgICAgICAgICAgYmlnZ2VyID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoKmtleSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5ld19rZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX1JlYWxsb2Moa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlnZ2VyICogc2l6ZW9mKCprZXkpKTsKLSAgICAgICAgICAgIGlmIChuZXdfa2V5ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBEb25lOwotICAgICAgICAgICAga2V5ID0gbmV3X2tleTsKLSAgICAgICAgICAgIGtleW1heCA9IGJpZ2dlcjsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQoa2V5dXNlZCA8IGtleW1heCk7Ci0gICAgICAgIGtleVtrZXl1c2VkKytdID0gY2h1bms7CisgICAgLyogQ29udmVydCBzZWVkIHRvIGJ5dGUgc2VxdWVuY2UuICovCisgICAga2V5X2FzX2J5dGVzID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CisgICAgaWYgKGtleV9hc19ieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gRG9uZTsKKyAgICB9CisgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9hc19ieXRlcywga2V5dXNlZCAqIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAgLyogbGl0dGxlLWVuZGlhbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7IC8qIHVuc2lnbmVkICovCisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICBQeU1lbV9GcmVlKGtleV9hc19ieXRlcyk7CisgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAKLSAgICBpZiAoa2V5dXNlZCA9PSAwKQotICAgICAgICBrZXlba2V5dXNlZCsrXSA9IDBVTDsKKyAgICAvKiBGaWxsIGFycmF5IG9mIHVuc2lnbmVkIGxvbmdzIGZyb20gYnl0ZSBzZXF1ZW5jZS4gKi8KKyAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX01hbGxvYyhzaXplb2YodW5zaWduZWQgbG9uZykgKiBrZXl1c2VkKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOworICAgICAgICBnb3RvIERvbmU7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBrZXl1c2VkOyBpKyspIHsKKyAgICAgICAga2V5W2ldID0KKyAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgMF0gPDwgMCkgKworICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKWtleV9hc19ieXRlc1s0KmkgKyAxXSA8PCA4KSArCisgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpa2V5X2FzX2J5dGVzWzQqaSArIDJdIDw8IDE2KSArCisgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpa2V5X2FzX2J5dGVzWzQqaSArIDNdIDw8IDI0KTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOwogICAgIHJlc3VsdCA9IGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBrZXl1c2VkKTsKIERvbmU6Ci0gICAgUHlfWERFQ1JFRihtYXNrbG93ZXIpOwotICAgIFB5X1hERUNSRUYodGhpcnR5dHdvKTsKICAgICBQeV9YREVDUkVGKG4pOwogICAgIFB5TWVtX0ZyZWUoa2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzg5LDYgKzM2Myw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChrIDw9IDMyKSAgLyogRmFzdCBwYXRoICovCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhnZW5yYW5kX2ludDMyKHNlbGYpID4+ICgzMiAtIGspKTsKKwogICAgIGJ5dGVzID0gKChrIC0gMSkgLyAzMiArIDEpICogNDsKICAgICBieXRlYXJyYXkgPSAodW5zaWduZWQgY2hhciAqKVB5TWVtX01hbGxvYyhieXRlcyk7CiAgICAgaWYgKGJ5dGVhcnJheSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2NsZWFudXAucHkgYi9Nb2R1bGVzL19zaGEzL2NsZWFudXAucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWFiY2IwNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weQpAQCAtMCwwICsxLDQ5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEyICAgQ2hyaXN0aWFuIEhlaW1lcyAoY2hyaXN0aWFuQHB5dGhvbi5vcmcpCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KKyMKKyMgY2xlYW51cCBLZWNjYWsgc291cmNlcworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitDUFAxID0gcmUuY29tcGlsZSgiXi8vKC4qKSIpCitDUFAyID0gcmUuY29tcGlsZSgiXCAvLyguKikiKQorCitTVEFUSUNTID0gKCJ2b2lkICIsICJpbnQgIiwgIkhhc2hSZXR1cm4gIiwgImNvbnN0IFVJTlQ2NCAiLCAiVUlOVDE2ICIpCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0tFQ0NBSyA9IG9zLnBhdGguam9pbihIRVJFLCAia2VjY2FrIikKKworZGVmIGdldGZpbGVzKCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihLRUNDQUspOgorICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKEtFQ0NBSywgbmFtZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6CisgICAgICAgICAgICB5aWVsZCBuYW1lCisKK2RlZiBjbGVhbnVwKGYpOgorICAgIGJ1ZiA9IFtdCisgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgIyBtYXJrIGFsbCBmdW5jdGlvbnMgYW5kIGdsb2JhbCBkYXRhIGFzIHN0YXRpYworICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoU1RBVElDUyk6CisgICAgICAgICAgICBidWYuYXBwZW5kKCJzdGF0aWMgIiArIGxpbmUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIHJlbW92ZSBVSU5UNjQgdHlwZWRlZiwgd2UgaGF2ZSBvdXIgb3duCisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgidHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50Iik6CisgICAgICAgICAgICBidWYuYXBwZW5kKCIvKiAlcyAqL1xuIiAlIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgcmVtb3ZlICNpbmNsdWRlICJicmdfZW5kaWFuLmgiCisgICAgICAgIGlmICJicmdfZW5kaWFuLmgiIGluIGxpbmU6CisgICAgICAgICAgICBidWYuYXBwZW5kKCIvKiAlcyAqL1xuIiAlIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgdHJhbnNmb3JtIEMrKyBjb21tZW50cyBpbnRvIEFOU0kgQyBjb21tZW50cworICAgICAgICBsaW5lID0gQ1BQMS5zdWIociIvKiBcMSAqLyIsIGxpbmUpCisgICAgICAgIGxpbmUgPSBDUFAyLnN1YihyIiAvKiBcMSAqLyIsIGxpbmUpCisgICAgICAgIGJ1Zi5hcHBlbmQobGluZSkKKyAgICByZXR1cm4gIiIuam9pbihidWYpCisKK2ZvciBuYW1lIGluIGdldGZpbGVzKCk6CisgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgIHJlcyA9IGNsZWFudXAoZikKKyAgICB3aXRoIG9wZW4obmFtZSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKHJlcykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi1ydmsubWFjcm9zIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLTMyLXJ2ay5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjOTAyOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi1ydmsubWFjcm9zCkBAIC0wLDAgKzEsNTU1IEBACisvKgorVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IFJvbm55IFZhbiBLZWVyLAoraGVyZWJ5IGRlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKK3N0YXRpYyBjb25zdCBVSU5UMzIgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyWzIqMjRdID0KK3sKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4MDAwMDAwODlVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDAwOGJVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDgwODBVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4MDAwMDAwOGJVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4MDAwMDgwMDBVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4ODAwMDgwODhVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4ODAwMDAwODJVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4MDAwMDAwMGJVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4MDAwMDAwMGFVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4MDAwMDgwODJVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4MDAwMDgwMDNVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4MDAwMDgwOGJVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4ODAwMDAwMGJVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4ODAwMDAwOGFVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4ODAwMDAwODFVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDAwODFVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDAwMDhVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4MDAwMDAwODNVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDgwMDNVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4ODAwMDgwODhVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDAwODhVTCwKKyAgICAweDAwMDAwMDAxVUwsICAgIDB4MDAwMDgwMDBVTCwKKyAgICAweDAwMDAwMDAwVUwsICAgIDB4ODAwMDgwODJVTAorfTsKKworI3VuZGVmIHJvdW5kcworCisjZGVmaW5lIHJvdW5kcyBcCit7IFwKKyAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7IFwKKyAgICBVSU5UMzIgRGExLCBEZTEsIERpMSwgRG8xLCBEdTE7IFwKKyAgICBVSU5UMzIgQmEsIEJlLCBCaSwgQm8sIEJ1OyBcCisgICAgVUlOVDMyIEFiYTAsIEFiZTAsIEFiaTAsIEFibzAsIEFidTA7IFwKKyAgICBVSU5UMzIgQWJhMSwgQWJlMSwgQWJpMSwgQWJvMSwgQWJ1MTsgXAorICAgIFVJTlQzMiBBZ2EwLCBBZ2UwLCBBZ2kwLCBBZ28wLCBBZ3UwOyBcCisgICAgVUlOVDMyIEFnYTEsIEFnZTEsIEFnaTEsIEFnbzEsIEFndTE7IFwKKyAgICBVSU5UMzIgQWthMCwgQWtlMCwgQWtpMCwgQWtvMCwgQWt1MDsgXAorICAgIFVJTlQzMiBBa2ExLCBBa2UxLCBBa2kxLCBBa28xLCBBa3UxOyBcCisgICAgVUlOVDMyIEFtYTAsIEFtZTAsIEFtaTAsIEFtbzAsIEFtdTA7IFwKKyAgICBVSU5UMzIgQW1hMSwgQW1lMSwgQW1pMSwgQW1vMSwgQW11MTsgXAorICAgIFVJTlQzMiBBc2EwLCBBc2UwLCBBc2kwLCBBc28wLCBBc3UwOyBcCisgICAgVUlOVDMyIEFzYTEsIEFzZTEsIEFzaTEsIEFzbzEsIEFzdTE7IFwKKyAgICBVSU5UMzIgQ3csIEN4LCBDeSwgQ3o7IFwKKyAgICBVSU5UMzIgRWJhMCwgRWJlMCwgRWJpMCwgRWJvMCwgRWJ1MDsgXAorICAgIFVJTlQzMiBFYmExLCBFYmUxLCBFYmkxLCBFYm8xLCBFYnUxOyBcCisgICAgVUlOVDMyIEVnYTAsIEVnZTAsIEVnaTAsIEVnbzAsIEVndTA7IFwKKyAgICBVSU5UMzIgRWdhMSwgRWdlMSwgRWdpMSwgRWdvMSwgRWd1MTsgXAorICAgIFVJTlQzMiBFa2EwLCBFa2UwLCBFa2kwLCBFa28wLCBFa3UwOyBcCisgICAgVUlOVDMyIEVrYTEsIEVrZTEsIEVraTEsIEVrbzEsIEVrdTE7IFwKKyAgICBVSU5UMzIgRW1hMCwgRW1lMCwgRW1pMCwgRW1vMCwgRW11MDsgXAorICAgIFVJTlQzMiBFbWExLCBFbWUxLCBFbWkxLCBFbW8xLCBFbXUxOyBcCisgICAgVUlOVDMyIEVzYTAsIEVzZTAsIEVzaTAsIEVzbzAsIEVzdTA7IFwKKyAgICBVSU5UMzIgRXNhMSwgRXNlMSwgRXNpMSwgRXNvMSwgRXN1MTsgXAorCWNvbnN0IFVJTlQzMiAqIHBSb3VuZENvbnN0YW50cyA9IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50MjsgXAorICAgIFVJTlQzMiBpOyBcCitcCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkgXAorXAorICAgIGZvciggaSA9IDEyOyBpICE9IDA7IC0taSApIHsgXAorCSAgICBDeCA9IEFidTBeQWd1MF5Ba3UwXkFtdTBeQXN1MDsgXAorCSAgICBEdTEgPSBBYmUxXkFnZTFeQWtlMV5BbWUxXkFzZTE7IFwKKwkgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorCSAgICBDeiA9IEFidTFeQWd1MV5Ba3UxXkFtdTFeQXN1MTsgXAorCSAgICBEdTAgPSBBYmUwXkFnZTBeQWtlMF5BbWUwXkFzZTA7IFwKKwkgICAgRGExID0gQ3peRHUwOyBcCitcCisJICAgIEN3ID0gQWJpMF5BZ2kwXkFraTBeQW1pMF5Bc2kwOyBcCisJICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorCSAgICBDeSA9IEFiaTFeQWdpMV5Ba2kxXkFtaTFeQXNpMTsgXAorCSAgICBEbzEgPSBDeV5DeDsgXAorXAorCSAgICBDeCA9IEFiYTBeQWdhMF5Ba2EwXkFtYTBeQXNhMDsgXAorCSAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKwkgICAgQ3ogPSBBYmExXkFnYTFeQWthMV5BbWExXkFzYTE7IFwKKwkgICAgRGUxID0gQ3peQ3c7IFwKK1wKKwkgICAgQ3kgPSBBYm8xXkFnbzFeQWtvMV5BbW8xXkFzbzE7IFwKKwkgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorCSAgICBDdyA9IEFibzBeQWdvMF5Ba28wXkFtbzBeQXNvMDsgXAorCSAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKwkgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisJICAgIER1MSA9IEN5XkN4OyBcCitcCisJICAgIEFiYTAgXj0gRGEwOyBcCisJICAgIEJhID0gQWJhMDsgXAorCSAgICBBZ2UwIF49IERlMDsgXAorCSAgICBCZSA9IFJPTDMyKEFnZTAsIDIyKTsgXAorCSAgICBBa2kxIF49IERpMTsgXAorCSAgICBCaSA9IFJPTDMyKEFraTEsIDIyKTsgXAorCSAgICBBbW8xIF49IERvMTsgXAorCSAgICBCbyA9IFJPTDMyKEFtbzEsIDExKTsgXAorCSAgICBBc3UwIF49IER1MDsgXAorCSAgICBCdSA9IFJPTDMyKEFzdTAsIDcpOyBcCisJICAgIEViYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApIF4gKihwUm91bmRDb25zdGFudHMrKyk7IFwKKwkgICAgRWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgRWJpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgRWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgRWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgQWJvMCBePSBEbzA7IFwKKwkgICAgQmEgPSBST0wzMihBYm8wLCAxNCk7IFwKKwkgICAgQWd1MCBePSBEdTA7IFwKKwkgICAgQmUgPSBST0wzMihBZ3UwLCAxMCk7IFwKKwkgICAgQWthMSBePSBEYTE7IFwKKwkgICAgQmkgPSBST0wzMihBa2ExLCAyKTsgXAorCSAgICBBbWUxIF49IERlMTsgXAorCSAgICBCbyA9IFJPTDMyKEFtZTEsIDIzKTsgXAorCSAgICBBc2kxIF49IERpMTsgXAorCSAgICBCdSA9IFJPTDMyKEFzaTEsIDMxKTsgXAorCSAgICBFZ2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBFZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsgXAorCSAgICBFZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsgXAorCSAgICBFZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsgXAorCSAgICBFZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsgXAorXAorCSAgICBBYmUxIF49IERlMTsgXAorCSAgICBCYSA9IFJPTDMyKEFiZTEsIDEpOyBcCisJICAgIEFnaTAgXj0gRGkwOyBcCisJICAgIEJlID0gUk9MMzIoQWdpMCwgMyk7IFwKKwkgICAgQWtvMSBePSBEbzE7IFwKKwkgICAgQmkgPSBST0wzMihBa28xLCAxMyk7IFwKKwkgICAgQW11MCBePSBEdTA7IFwKKwkgICAgQm8gPSBST0wzMihBbXUwLCA0KTsgXAorCSAgICBBc2EwIF49IERhMDsgXAorCSAgICBCdSA9IFJPTDMyKEFzYTAsIDkpOyBcCisJICAgIEVrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOyBcCisJICAgIEVrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEVraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEVrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEVrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCitcCisJICAgIEFidTEgXj0gRHUxOyBcCisJICAgIEJhID0gUk9MMzIoQWJ1MSwgMTQpOyBcCisJICAgIEFnYTAgXj0gRGEwOyBcCisJICAgIEJlID0gUk9MMzIoQWdhMCwgMTgpOyBcCisJICAgIEFrZTAgXj0gRGUwOyBcCisJICAgIEJpID0gUk9MMzIoQWtlMCwgNSk7IFwKKwkgICAgQW1pMSBePSBEaTE7IFwKKwkgICAgQm8gPSBST0wzMihBbWkxLCA4KTsgXAorCSAgICBBc28wIF49IERvMDsgXAorCSAgICBCdSA9IFJPTDMyKEFzbzAsIDI4KTsgXAorCSAgICBFbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBFbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsgXAorCSAgICBFbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsgXAorCSAgICBFbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsgXAorCSAgICBFbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsgXAorXAorCSAgICBBYmkwIF49IERpMDsgXAorCSAgICBCYSA9IFJPTDMyKEFiaTAsIDMxKTsgXAorCSAgICBBZ28xIF49IERvMTsgXAorCSAgICBCZSA9IFJPTDMyKEFnbzEsIDI4KTsgXAorCSAgICBBa3UxIF49IER1MTsgXAorCSAgICBCaSA9IFJPTDMyKEFrdTEsIDIwKTsgXAorCSAgICBBbWExIF49IERhMTsgXAorCSAgICBCbyA9IFJPTDMyKEFtYTEsIDIxKTsgXAorCSAgICBBc2UwIF49IERlMDsgXAorCSAgICBCdSA9IFJPTDMyKEFzZTAsIDEpOyBcCisJICAgIEVzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOyBcCisJICAgIEVzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEVzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEVzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEVzdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCitcCisJICAgIEFiYTEgXj0gRGExOyBcCisJICAgIEJhID0gQWJhMTsgXAorCSAgICBBZ2UxIF49IERlMTsgXAorCSAgICBCZSA9IFJPTDMyKEFnZTEsIDIyKTsgXAorCSAgICBBa2kwIF49IERpMDsgXAorCSAgICBCaSA9IFJPTDMyKEFraTAsIDIxKTsgXAorCSAgICBBbW8wIF49IERvMDsgXAorCSAgICBCbyA9IFJPTDMyKEFtbzAsIDEwKTsgXAorCSAgICBBc3UxIF49IER1MTsgXAorCSAgICBCdSA9IFJPTDMyKEFzdTEsIDcpOyBcCisJICAgIEViYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOyBcCisJICAgIEViYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7IFwKKwkgICAgRWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgRWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgRWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgRWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgQWJvMSBePSBEbzE7IFwKKwkgICAgQmEgPSBST0wzMihBYm8xLCAxNCk7IFwKKwkgICAgQWd1MSBePSBEdTE7IFwKKwkgICAgQmUgPSBST0wzMihBZ3UxLCAxMCk7IFwKKwkgICAgQWthMCBePSBEYTA7IFwKKwkgICAgQmkgPSBST0wzMihBa2EwLCAxKTsgXAorCSAgICBBbWUwIF49IERlMDsgXAorCSAgICBCbyA9IFJPTDMyKEFtZTAsIDIyKTsgXAorCSAgICBBc2kwIF49IERpMDsgXAorCSAgICBCdSA9IFJPTDMyKEFzaTAsIDMwKTsgXAorCSAgICBFZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBFZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsgXAorCSAgICBFZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsgXAorCSAgICBFZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsgXAorCSAgICBFZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsgXAorXAorCSAgICBBYmUwIF49IERlMDsgXAorCSAgICBCYSA9IEFiZTA7IFwKKwkgICAgQWdpMSBePSBEaTE7IFwKKwkgICAgQmUgPSBST0wzMihBZ2kxLCAzKTsgXAorCSAgICBBa28wIF49IERvMDsgXAorCSAgICBCaSA9IFJPTDMyKEFrbzAsIDEyKTsgXAorCSAgICBBbXUxIF49IER1MTsgXAorCSAgICBCbyA9IFJPTDMyKEFtdTEsIDQpOyBcCisJICAgIEFzYTEgXj0gRGExOyBcCisJICAgIEJ1ID0gUk9MMzIoQXNhMSwgOSk7IFwKKwkgICAgRWthMSA9ICAgQmEgXigofkJlKSYgIEJpICk7IFwKKwkgICAgRWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgRWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgRWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgRWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgQWJ1MCBePSBEdTA7IFwKKwkgICAgQmEgPSBST0wzMihBYnUwLCAxMyk7IFwKKwkgICAgQWdhMSBePSBEYTE7IFwKKwkgICAgQmUgPSBST0wzMihBZ2ExLCAxOCk7IFwKKwkgICAgQWtlMSBePSBEZTE7IFwKKwkgICAgQmkgPSBST0wzMihBa2UxLCA1KTsgXAorCSAgICBBbWkwIF49IERpMDsgXAorCSAgICBCbyA9IFJPTDMyKEFtaTAsIDcpOyBcCisJICAgIEFzbzEgXj0gRG8xOyBcCisJICAgIEJ1ID0gUk9MMzIoQXNvMSwgMjgpOyBcCisJICAgIEVtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOyBcCisJICAgIEVtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEVtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEVtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEVtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCitcCisJICAgIEFiaTEgXj0gRGkxOyBcCisJICAgIEJhID0gUk9MMzIoQWJpMSwgMzEpOyBcCisJICAgIEFnbzAgXj0gRG8wOyBcCisJICAgIEJlID0gUk9MMzIoQWdvMCwgMjcpOyBcCisJICAgIEFrdTAgXj0gRHUwOyBcCisJICAgIEJpID0gUk9MMzIoQWt1MCwgMTkpOyBcCisJICAgIEFtYTAgXj0gRGEwOyBcCisJICAgIEJvID0gUk9MMzIoQW1hMCwgMjApOyBcCisJICAgIEFzZTEgXj0gRGUxOyBcCisJICAgIEJ1ID0gUk9MMzIoQXNlMSwgMSk7IFwKKwkgICAgRXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7IFwKKwkgICAgRXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgRXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgRXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgRXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgQ3ggPSBFYnUwXkVndTBeRWt1MF5FbXUwXkVzdTA7IFwKKwkgICAgRHUxID0gRWJlMV5FZ2UxXkVrZTFeRW1lMV5Fc2UxOyBcCisJICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKwkgICAgQ3ogPSBFYnUxXkVndTFeRWt1MV5FbXUxXkVzdTE7IFwKKwkgICAgRHUwID0gRWJlMF5FZ2UwXkVrZTBeRW1lMF5Fc2UwOyBcCisJICAgIERhMSA9IEN6XkR1MDsgXAorXAorCSAgICBDdyA9IEViaTBeRWdpMF5Fa2kwXkVtaTBeRXNpMDsgXAorCSAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKwkgICAgQ3kgPSBFYmkxXkVnaTFeRWtpMV5FbWkxXkVzaTE7IFwKKwkgICAgRG8xID0gQ3leQ3g7IFwKK1wKKwkgICAgQ3ggPSBFYmEwXkVnYTBeRWthMF5FbWEwXkVzYTA7IFwKKwkgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisJICAgIEN6ID0gRWJhMV5FZ2ExXkVrYTFeRW1hMV5Fc2ExOyBcCisJICAgIERlMSA9IEN6XkN3OyBcCitcCisJICAgIEN5ID0gRWJvMV5FZ28xXkVrbzFeRW1vMV5Fc28xOyBcCisJICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKwkgICAgQ3cgPSBFYm8wXkVnbzBeRWtvMF5FbW8wXkVzbzA7IFwKKwkgICAgRGkxID0gRHUxXkN3OyBcCitcCisJICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorCSAgICBEdTEgPSBDeV5DeDsgXAorXAorCSAgICBFYmEwIF49IERhMDsgXAorCSAgICBCYSA9IEViYTA7IFwKKwkgICAgRWdlMCBePSBEZTA7IFwKKwkgICAgQmUgPSBST0wzMihFZ2UwLCAyMik7IFwKKwkgICAgRWtpMSBePSBEaTE7IFwKKwkgICAgQmkgPSBST0wzMihFa2kxLCAyMik7IFwKKwkgICAgRW1vMSBePSBEbzE7IFwKKwkgICAgQm8gPSBST0wzMihFbW8xLCAxMSk7IFwKKwkgICAgRXN1MCBePSBEdTA7IFwKKwkgICAgQnUgPSBST0wzMihFc3UwLCA3KTsgXAorCSAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOyBcCisJICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCitcCisJICAgIEVibzAgXj0gRG8wOyBcCisJICAgIEJhID0gUk9MMzIoRWJvMCwgMTQpOyBcCisJICAgIEVndTAgXj0gRHUwOyBcCisJICAgIEJlID0gUk9MMzIoRWd1MCwgMTApOyBcCisJICAgIEVrYTEgXj0gRGExOyBcCisJICAgIEJpID0gUk9MMzIoRWthMSwgMik7IFwKKwkgICAgRW1lMSBePSBEZTE7IFwKKwkgICAgQm8gPSBST0wzMihFbWUxLCAyMyk7IFwKKwkgICAgRXNpMSBePSBEaTE7IFwKKwkgICAgQnUgPSBST0wzMihFc2kxLCAzMSk7IFwKKwkgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7IFwKKwkgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgRWJlMSBePSBEZTE7IFwKKwkgICAgQmEgPSBST0wzMihFYmUxLCAxKTsgXAorCSAgICBFZ2kwIF49IERpMDsgXAorCSAgICBCZSA9IFJPTDMyKEVnaTAsIDMpOyBcCisJICAgIEVrbzEgXj0gRG8xOyBcCisJICAgIEJpID0gUk9MMzIoRWtvMSwgMTMpOyBcCisJICAgIEVtdTAgXj0gRHUwOyBcCisJICAgIEJvID0gUk9MMzIoRW11MCwgNCk7IFwKKwkgICAgRXNhMCBePSBEYTA7IFwKKwkgICAgQnUgPSBST0wzMihFc2EwLCA5KTsgXAorCSAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsgXAorCSAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsgXAorCSAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsgXAorCSAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsgXAorXAorCSAgICBFYnUxIF49IER1MTsgXAorCSAgICBCYSA9IFJPTDMyKEVidTEsIDE0KTsgXAorCSAgICBFZ2EwIF49IERhMDsgXAorCSAgICBCZSA9IFJPTDMyKEVnYTAsIDE4KTsgXAorCSAgICBFa2UwIF49IERlMDsgXAorCSAgICBCaSA9IFJPTDMyKEVrZTAsIDUpOyBcCisJICAgIEVtaTEgXj0gRGkxOyBcCisJICAgIEJvID0gUk9MMzIoRW1pMSwgOCk7IFwKKwkgICAgRXNvMCBePSBEbzA7IFwKKwkgICAgQnUgPSBST0wzMihFc28wLCAyOCk7IFwKKwkgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7IFwKKwkgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgRWJpMCBePSBEaTA7IFwKKwkgICAgQmEgPSBST0wzMihFYmkwLCAzMSk7IFwKKwkgICAgRWdvMSBePSBEbzE7IFwKKwkgICAgQmUgPSBST0wzMihFZ28xLCAyOCk7IFwKKwkgICAgRWt1MSBePSBEdTE7IFwKKwkgICAgQmkgPSBST0wzMihFa3UxLCAyMCk7IFwKKwkgICAgRW1hMSBePSBEYTE7IFwKKwkgICAgQm8gPSBST0wzMihFbWExLCAyMSk7IFwKKwkgICAgRXNlMCBePSBEZTA7IFwKKwkgICAgQnUgPSBST0wzMihFc2UwLCAxKTsgXAorCSAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsgXAorCSAgICBBc2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsgXAorCSAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsgXAorCSAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsgXAorXAorCSAgICBFYmExIF49IERhMTsgXAorCSAgICBCYSA9IEViYTE7IFwKKwkgICAgRWdlMSBePSBEZTE7IFwKKwkgICAgQmUgPSBST0wzMihFZ2UxLCAyMik7IFwKKwkgICAgRWtpMCBePSBEaTA7IFwKKwkgICAgQmkgPSBST0wzMihFa2kwLCAyMSk7IFwKKwkgICAgRW1vMCBePSBEbzA7IFwKKwkgICAgQm8gPSBST0wzMihFbW8wLCAxMCk7IFwKKwkgICAgRXN1MSBePSBEdTE7IFwKKwkgICAgQnUgPSBST0wzMihFc3UxLCA3KTsgXAorCSAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOyBcCisJICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEFibzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCitcCisJICAgIEVibzEgXj0gRG8xOyBcCisJICAgIEJhID0gUk9MMzIoRWJvMSwgMTQpOyBcCisJICAgIEVndTEgXj0gRHUxOyBcCisJICAgIEJlID0gUk9MMzIoRWd1MSwgMTApOyBcCisJICAgIEVrYTAgXj0gRGEwOyBcCisJICAgIEJpID0gUk9MMzIoRWthMCwgMSk7IFwKKwkgICAgRW1lMCBePSBEZTA7IFwKKwkgICAgQm8gPSBST0wzMihFbWUwLCAyMik7IFwKKwkgICAgRXNpMCBePSBEaTA7IFwKKwkgICAgQnUgPSBST0wzMihFc2kwLCAzMCk7IFwKKwkgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7IFwKKwkgICAgQWdlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7IFwKKwkgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7IFwKKwkgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7IFwKKwkgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7IFwKK1wKKwkgICAgRWJlMCBePSBEZTA7IFwKKwkgICAgQmEgPSBFYmUwOyBcCisJICAgIEVnaTEgXj0gRGkxOyBcCisJICAgIEJlID0gUk9MMzIoRWdpMSwgMyk7IFwKKwkgICAgRWtvMCBePSBEbzA7IFwKKwkgICAgQmkgPSBST0wzMihFa28wLCAxMik7IFwKKwkgICAgRW11MSBePSBEdTE7IFwKKwkgICAgQm8gPSBST0wzMihFbXUxLCA0KTsgXAorCSAgICBFc2ExIF49IERhMTsgXAorCSAgICBCdSA9IFJPTDMyKEVzYTEsIDkpOyBcCisJICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOyBcCisJICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCitcCisJICAgIEVidTAgXj0gRHUwOyBcCisJICAgIEJhID0gUk9MMzIoRWJ1MCwgMTMpOyBcCisJICAgIEVnYTEgXj0gRGExOyBcCisJICAgIEJlID0gUk9MMzIoRWdhMSwgMTgpOyBcCisJICAgIEVrZTEgXj0gRGUxOyBcCisJICAgIEJpID0gUk9MMzIoRWtlMSwgNSk7IFwKKwkgICAgRW1pMCBePSBEaTA7IFwKKwkgICAgQm8gPSBST0wzMihFbWkwLCA3KTsgXAorCSAgICBFc28xIF49IERvMTsgXAorCSAgICBCdSA9IFJPTDMyKEVzbzEsIDI4KTsgXAorCSAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsgXAorCSAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsgXAorCSAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsgXAorCSAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsgXAorCSAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsgXAorXAorCSAgICBFYmkxIF49IERpMTsgXAorCSAgICBCYSA9IFJPTDMyKEViaTEsIDMxKTsgXAorCSAgICBFZ28wIF49IERvMDsgXAorCSAgICBCZSA9IFJPTDMyKEVnbzAsIDI3KTsgXAorCSAgICBFa3UwIF49IER1MDsgXAorCSAgICBCaSA9IFJPTDMyKEVrdTAsIDE5KTsgXAorCSAgICBFbWEwIF49IERhMDsgXAorCSAgICBCbyA9IFJPTDMyKEVtYTAsIDIwKTsgXAorCSAgICBFc2UxIF49IERlMTsgXAorCSAgICBCdSA9IFJPTDMyKEVzZTEsIDEpOyBcCisJICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOyBcCisJICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOyBcCisJICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOyBcCisJICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOyBcCisJICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOyBcCisgICAgfSBcCisgICAgY29weVRvU3RhdGUoc3RhdGUsIEEpIFwKK30KKworI2RlZmluZSBjb3B5RnJvbVN0YXRlKFgsIHN0YXRlKSBcCisgICAgWCMjYmEwID0gc3RhdGVbIDBdOyBcCisgICAgWCMjYmExID0gc3RhdGVbIDFdOyBcCisgICAgWCMjYmUwID0gc3RhdGVbIDJdOyBcCisgICAgWCMjYmUxID0gc3RhdGVbIDNdOyBcCisgICAgWCMjYmkwID0gc3RhdGVbIDRdOyBcCisgICAgWCMjYmkxID0gc3RhdGVbIDVdOyBcCisgICAgWCMjYm8wID0gc3RhdGVbIDZdOyBcCisgICAgWCMjYm8xID0gc3RhdGVbIDddOyBcCisgICAgWCMjYnUwID0gc3RhdGVbIDhdOyBcCisgICAgWCMjYnUxID0gc3RhdGVbIDldOyBcCisgICAgWCMjZ2EwID0gc3RhdGVbMTBdOyBcCisgICAgWCMjZ2ExID0gc3RhdGVbMTFdOyBcCisgICAgWCMjZ2UwID0gc3RhdGVbMTJdOyBcCisgICAgWCMjZ2UxID0gc3RhdGVbMTNdOyBcCisgICAgWCMjZ2kwID0gc3RhdGVbMTRdOyBcCisgICAgWCMjZ2kxID0gc3RhdGVbMTVdOyBcCisgICAgWCMjZ28wID0gc3RhdGVbMTZdOyBcCisgICAgWCMjZ28xID0gc3RhdGVbMTddOyBcCisgICAgWCMjZ3UwID0gc3RhdGVbMThdOyBcCisgICAgWCMjZ3UxID0gc3RhdGVbMTldOyBcCisgICAgWCMja2EwID0gc3RhdGVbMjBdOyBcCisgICAgWCMja2ExID0gc3RhdGVbMjFdOyBcCisgICAgWCMja2UwID0gc3RhdGVbMjJdOyBcCisgICAgWCMja2UxID0gc3RhdGVbMjNdOyBcCisgICAgWCMja2kwID0gc3RhdGVbMjRdOyBcCisgICAgWCMja2kxID0gc3RhdGVbMjVdOyBcCisgICAgWCMja28wID0gc3RhdGVbMjZdOyBcCisgICAgWCMja28xID0gc3RhdGVbMjddOyBcCisgICAgWCMja3UwID0gc3RhdGVbMjhdOyBcCisgICAgWCMja3UxID0gc3RhdGVbMjldOyBcCisgICAgWCMjbWEwID0gc3RhdGVbMzBdOyBcCisgICAgWCMjbWExID0gc3RhdGVbMzFdOyBcCisgICAgWCMjbWUwID0gc3RhdGVbMzJdOyBcCisgICAgWCMjbWUxID0gc3RhdGVbMzNdOyBcCisgICAgWCMjbWkwID0gc3RhdGVbMzRdOyBcCisgICAgWCMjbWkxID0gc3RhdGVbMzVdOyBcCisgICAgWCMjbW8wID0gc3RhdGVbMzZdOyBcCisgICAgWCMjbW8xID0gc3RhdGVbMzddOyBcCisgICAgWCMjbXUwID0gc3RhdGVbMzhdOyBcCisgICAgWCMjbXUxID0gc3RhdGVbMzldOyBcCisgICAgWCMjc2EwID0gc3RhdGVbNDBdOyBcCisgICAgWCMjc2ExID0gc3RhdGVbNDFdOyBcCisgICAgWCMjc2UwID0gc3RhdGVbNDJdOyBcCisgICAgWCMjc2UxID0gc3RhdGVbNDNdOyBcCisgICAgWCMjc2kwID0gc3RhdGVbNDRdOyBcCisgICAgWCMjc2kxID0gc3RhdGVbNDVdOyBcCisgICAgWCMjc28wID0gc3RhdGVbNDZdOyBcCisgICAgWCMjc28xID0gc3RhdGVbNDddOyBcCisgICAgWCMjc3UwID0gc3RhdGVbNDhdOyBcCisgICAgWCMjc3UxID0gc3RhdGVbNDldOyBcCisKKyNkZWZpbmUgY29weVRvU3RhdGUoc3RhdGUsIFgpIFwKKyAgICBzdGF0ZVsgMF0gPSBYIyNiYTA7IFwKKyAgICBzdGF0ZVsgMV0gPSBYIyNiYTE7IFwKKyAgICBzdGF0ZVsgMl0gPSBYIyNiZTA7IFwKKyAgICBzdGF0ZVsgM10gPSBYIyNiZTE7IFwKKyAgICBzdGF0ZVsgNF0gPSBYIyNiaTA7IFwKKyAgICBzdGF0ZVsgNV0gPSBYIyNiaTE7IFwKKyAgICBzdGF0ZVsgNl0gPSBYIyNibzA7IFwKKyAgICBzdGF0ZVsgN10gPSBYIyNibzE7IFwKKyAgICBzdGF0ZVsgOF0gPSBYIyNidTA7IFwKKyAgICBzdGF0ZVsgOV0gPSBYIyNidTE7IFwKKyAgICBzdGF0ZVsxMF0gPSBYIyNnYTA7IFwKKyAgICBzdGF0ZVsxMV0gPSBYIyNnYTE7IFwKKyAgICBzdGF0ZVsxMl0gPSBYIyNnZTA7IFwKKyAgICBzdGF0ZVsxM10gPSBYIyNnZTE7IFwKKyAgICBzdGF0ZVsxNF0gPSBYIyNnaTA7IFwKKyAgICBzdGF0ZVsxNV0gPSBYIyNnaTE7IFwKKyAgICBzdGF0ZVsxNl0gPSBYIyNnbzA7IFwKKyAgICBzdGF0ZVsxN10gPSBYIyNnbzE7IFwKKyAgICBzdGF0ZVsxOF0gPSBYIyNndTA7IFwKKyAgICBzdGF0ZVsxOV0gPSBYIyNndTE7IFwKKyAgICBzdGF0ZVsyMF0gPSBYIyNrYTA7IFwKKyAgICBzdGF0ZVsyMV0gPSBYIyNrYTE7IFwKKyAgICBzdGF0ZVsyMl0gPSBYIyNrZTA7IFwKKyAgICBzdGF0ZVsyM10gPSBYIyNrZTE7IFwKKyAgICBzdGF0ZVsyNF0gPSBYIyNraTA7IFwKKyAgICBzdGF0ZVsyNV0gPSBYIyNraTE7IFwKKyAgICBzdGF0ZVsyNl0gPSBYIyNrbzA7IFwKKyAgICBzdGF0ZVsyN10gPSBYIyNrbzE7IFwKKyAgICBzdGF0ZVsyOF0gPSBYIyNrdTA7IFwKKyAgICBzdGF0ZVsyOV0gPSBYIyNrdTE7IFwKKyAgICBzdGF0ZVszMF0gPSBYIyNtYTA7IFwKKyAgICBzdGF0ZVszMV0gPSBYIyNtYTE7IFwKKyAgICBzdGF0ZVszMl0gPSBYIyNtZTA7IFwKKyAgICBzdGF0ZVszM10gPSBYIyNtZTE7IFwKKyAgICBzdGF0ZVszNF0gPSBYIyNtaTA7IFwKKyAgICBzdGF0ZVszNV0gPSBYIyNtaTE7IFwKKyAgICBzdGF0ZVszNl0gPSBYIyNtbzA7IFwKKyAgICBzdGF0ZVszN10gPSBYIyNtbzE7IFwKKyAgICBzdGF0ZVszOF0gPSBYIyNtdTA7IFwKKyAgICBzdGF0ZVszOV0gPSBYIyNtdTE7IFwKKyAgICBzdGF0ZVs0MF0gPSBYIyNzYTA7IFwKKyAgICBzdGF0ZVs0MV0gPSBYIyNzYTE7IFwKKyAgICBzdGF0ZVs0Ml0gPSBYIyNzZTA7IFwKKyAgICBzdGF0ZVs0M10gPSBYIyNzZTE7IFwKKyAgICBzdGF0ZVs0NF0gPSBYIyNzaTA7IFwKKyAgICBzdGF0ZVs0NV0gPSBYIyNzaTE7IFwKKyAgICBzdGF0ZVs0Nl0gPSBYIyNzbzA7IFwKKyAgICBzdGF0ZVs0N10gPSBYIyNzbzE7IFwKKyAgICBzdGF0ZVs0OF0gPSBYIyNzdTA7IFwKKyAgICBzdGF0ZVs0OV0gPSBYIyNzdTE7IFwKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLTMyLXMxLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi1zMS5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczZDYxZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi1zMS5tYWNyb3MKQEAgLTAsMCArMSwxMTg3IEBACisvKgorQ29kZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBLZWNjYWtUb29scyEKKworVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCitoZXJlYnkgZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFVJTlQzMiBBYmEwLCBBYmUwLCBBYmkwLCBBYm8wLCBBYnUwOyBcCisgICAgVUlOVDMyIEFiYTEsIEFiZTEsIEFiaTEsIEFibzEsIEFidTE7IFwKKyAgICBVSU5UMzIgQWdhMCwgQWdlMCwgQWdpMCwgQWdvMCwgQWd1MDsgXAorICAgIFVJTlQzMiBBZ2ExLCBBZ2UxLCBBZ2kxLCBBZ28xLCBBZ3UxOyBcCisgICAgVUlOVDMyIEFrYTAsIEFrZTAsIEFraTAsIEFrbzAsIEFrdTA7IFwKKyAgICBVSU5UMzIgQWthMSwgQWtlMSwgQWtpMSwgQWtvMSwgQWt1MTsgXAorICAgIFVJTlQzMiBBbWEwLCBBbWUwLCBBbWkwLCBBbW8wLCBBbXUwOyBcCisgICAgVUlOVDMyIEFtYTEsIEFtZTEsIEFtaTEsIEFtbzEsIEFtdTE7IFwKKyAgICBVSU5UMzIgQXNhMCwgQXNlMCwgQXNpMCwgQXNvMCwgQXN1MDsgXAorICAgIFVJTlQzMiBBc2ExLCBBc2UxLCBBc2kxLCBBc28xLCBBc3UxOyBcCisgICAgVUlOVDMyIEJiYTAsIEJiZTAsIEJiaTAsIEJibzAsIEJidTA7IFwKKyAgICBVSU5UMzIgQmJhMSwgQmJlMSwgQmJpMSwgQmJvMSwgQmJ1MTsgXAorICAgIFVJTlQzMiBCZ2EwLCBCZ2UwLCBCZ2kwLCBCZ28wLCBCZ3UwOyBcCisgICAgVUlOVDMyIEJnYTEsIEJnZTEsIEJnaTEsIEJnbzEsIEJndTE7IFwKKyAgICBVSU5UMzIgQmthMCwgQmtlMCwgQmtpMCwgQmtvMCwgQmt1MDsgXAorICAgIFVJTlQzMiBCa2ExLCBCa2UxLCBCa2kxLCBCa28xLCBCa3UxOyBcCisgICAgVUlOVDMyIEJtYTAsIEJtZTAsIEJtaTAsIEJtbzAsIEJtdTA7IFwKKyAgICBVSU5UMzIgQm1hMSwgQm1lMSwgQm1pMSwgQm1vMSwgQm11MTsgXAorICAgIFVJTlQzMiBCc2EwLCBCc2UwLCBCc2kwLCBCc28wLCBCc3UwOyBcCisgICAgVUlOVDMyIEJzYTEsIEJzZTEsIEJzaTEsIEJzbzEsIEJzdTE7IFwKKyAgICBVSU5UMzIgQ2EwLCBDZTAsIENpMCwgQ28wLCBDdTA7IFwKKyAgICBVSU5UMzIgQ2ExLCBDZTEsIENpMSwgQ28xLCBDdTE7IFwKKyAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7IFwKKyAgICBVSU5UMzIgRGExLCBEZTEsIERpMSwgRG8xLCBEdTE7IFwKKyAgICBVSU5UMzIgRWJhMCwgRWJlMCwgRWJpMCwgRWJvMCwgRWJ1MDsgXAorICAgIFVJTlQzMiBFYmExLCBFYmUxLCBFYmkxLCBFYm8xLCBFYnUxOyBcCisgICAgVUlOVDMyIEVnYTAsIEVnZTAsIEVnaTAsIEVnbzAsIEVndTA7IFwKKyAgICBVSU5UMzIgRWdhMSwgRWdlMSwgRWdpMSwgRWdvMSwgRWd1MTsgXAorICAgIFVJTlQzMiBFa2EwLCBFa2UwLCBFa2kwLCBFa28wLCBFa3UwOyBcCisgICAgVUlOVDMyIEVrYTEsIEVrZTEsIEVraTEsIEVrbzEsIEVrdTE7IFwKKyAgICBVSU5UMzIgRW1hMCwgRW1lMCwgRW1pMCwgRW1vMCwgRW11MDsgXAorICAgIFVJTlQzMiBFbWExLCBFbWUxLCBFbWkxLCBFbW8xLCBFbXUxOyBcCisgICAgVUlOVDMyIEVzYTAsIEVzZTAsIEVzaTAsIEVzbzAsIEVzdTA7IFwKKyAgICBVSU5UMzIgRXNhMSwgRXNlMSwgRXNpMSwgRXNvMSwgRXN1MTsgXAorCisjZGVmaW5lIHByZXBhcmVUaGV0YSBcCisgICAgQ2EwID0gQWJhMF5BZ2EwXkFrYTBeQW1hMF5Bc2EwOyBcCisgICAgQ2ExID0gQWJhMV5BZ2ExXkFrYTFeQW1hMV5Bc2ExOyBcCisgICAgQ2UwID0gQWJlMF5BZ2UwXkFrZTBeQW1lMF5Bc2UwOyBcCisgICAgQ2UxID0gQWJlMV5BZ2UxXkFrZTFeQW1lMV5Bc2UxOyBcCisgICAgQ2kwID0gQWJpMF5BZ2kwXkFraTBeQW1pMF5Bc2kwOyBcCisgICAgQ2kxID0gQWJpMV5BZ2kxXkFraTFeQW1pMV5Bc2kxOyBcCisgICAgQ28wID0gQWJvMF5BZ28wXkFrbzBeQW1vMF5Bc28wOyBcCisgICAgQ28xID0gQWJvMV5BZ28xXkFrbzFeQW1vMV5Bc28xOyBcCisgICAgQ3UwID0gQWJ1MF5BZ3UwXkFrdTBeQW11MF5Bc3UwOyBcCisgICAgQ3UxID0gQWJ1MV5BZ3UxXkFrdTFeQW11MV5Bc3UxOyBcCisKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKy8qICAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisvKiAgLS0tIHVzaW5nIGZhY3RvciAyIGludGVybGVhdmluZywgNjQtYml0IGxhbmVzIG1hcHBlZCB0byAzMi1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhMCA9IEN1MF5ST0wzMihDZTEsIDEpOyBcCisgICAgRGExID0gQ3UxXkNlMDsgXAorICAgIERlMCA9IENhMF5ST0wzMihDaTEsIDEpOyBcCisgICAgRGUxID0gQ2ExXkNpMDsgXAorICAgIERpMCA9IENlMF5ST0wzMihDbzEsIDEpOyBcCisgICAgRGkxID0gQ2UxXkNvMDsgXAorICAgIERvMCA9IENpMF5ST0wzMihDdTEsIDEpOyBcCisgICAgRG8xID0gQ2kxXkN1MDsgXAorICAgIER1MCA9IENvMF5ST0wzMihDYTEsIDEpOyBcCisgICAgRHUxID0gQ28xXkNhMDsgXAorXAorICAgIEEjI2JhMCBePSBEYTA7IFwKKyAgICBCYmEwID0gQSMjYmEwOyBcCisgICAgQSMjZ2UwIF49IERlMDsgXAorICAgIEJiZTAgPSBST0wzMihBIyNnZTAsIDIyKTsgXAorICAgIEEjI2tpMSBePSBEaTE7IFwKKyAgICBCYmkwID0gUk9MMzIoQSMja2kxLCAyMik7IFwKKyAgICBBIyNtbzEgXj0gRG8xOyBcCisgICAgQmJvMCA9IFJPTDMyKEEjI21vMSwgMTEpOyBcCisgICAgQSMjc3UwIF49IER1MDsgXAorICAgIEJidTAgPSBST0wzMihBIyNzdTAsIDcpOyBcCisgICAgRSMjYmEwID0gICBCYmEwIF4oICBCYmUwIHwgIEJiaTAgKTsgXAorICAgIEUjI2JhMCBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMFtpXTsgXAorICAgIENhMCA9IEUjI2JhMDsgXAorICAgIEUjI2JlMCA9ICAgQmJlMCBeKCh+QmJpMCl8ICBCYm8wICk7IFwKKyAgICBDZTAgPSBFIyNiZTA7IFwKKyAgICBFIyNiaTAgPSAgIEJiaTAgXiggIEJibzAgJiAgQmJ1MCApOyBcCisgICAgQ2kwID0gRSMjYmkwOyBcCisgICAgRSMjYm8wID0gICBCYm8wIF4oICBCYnUwIHwgIEJiYTAgKTsgXAorICAgIENvMCA9IEUjI2JvMDsgXAorICAgIEUjI2J1MCA9ICAgQmJ1MCBeKCAgQmJhMCAmICBCYmUwICk7IFwKKyAgICBDdTAgPSBFIyNidTA7IFwKK1wKKyAgICBBIyNiYTEgXj0gRGExOyBcCisgICAgQmJhMSA9IEEjI2JhMTsgXAorICAgIEEjI2dlMSBePSBEZTE7IFwKKyAgICBCYmUxID0gUk9MMzIoQSMjZ2UxLCAyMik7IFwKKyAgICBBIyNraTAgXj0gRGkwOyBcCisgICAgQmJpMSA9IFJPTDMyKEEjI2tpMCwgMjEpOyBcCisgICAgQSMjbW8wIF49IERvMDsgXAorICAgIEJibzEgPSBST0wzMihBIyNtbzAsIDEwKTsgXAorICAgIEEjI3N1MSBePSBEdTE7IFwKKyAgICBCYnUxID0gUk9MMzIoQSMjc3UxLCA3KTsgXAorICAgIEUjI2JhMSA9ICAgQmJhMSBeKCAgQmJlMSB8ICBCYmkxICk7IFwKKyAgICBFIyNiYTEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyXzFbaV07IFwKKyAgICBDYTEgPSBFIyNiYTE7IFwKKyAgICBFIyNiZTEgPSAgIEJiZTEgXigofkJiaTEpfCAgQmJvMSApOyBcCisgICAgQ2UxID0gRSMjYmUxOyBcCisgICAgRSMjYmkxID0gICBCYmkxIF4oICBCYm8xICYgIEJidTEgKTsgXAorICAgIENpMSA9IEUjI2JpMTsgXAorICAgIEUjI2JvMSA9ICAgQmJvMSBeKCAgQmJ1MSB8ICBCYmExICk7IFwKKyAgICBDbzEgPSBFIyNibzE7IFwKKyAgICBFIyNidTEgPSAgIEJidTEgXiggIEJiYTEgJiAgQmJlMSApOyBcCisgICAgQ3UxID0gRSMjYnUxOyBcCitcCisgICAgQSMjYm8wIF49IERvMDsgXAorICAgIEJnYTAgPSBST0wzMihBIyNibzAsIDE0KTsgXAorICAgIEEjI2d1MCBePSBEdTA7IFwKKyAgICBCZ2UwID0gUk9MMzIoQSMjZ3UwLCAxMCk7IFwKKyAgICBBIyNrYTEgXj0gRGExOyBcCisgICAgQmdpMCA9IFJPTDMyKEEjI2thMSwgMik7IFwKKyAgICBBIyNtZTEgXj0gRGUxOyBcCisgICAgQmdvMCA9IFJPTDMyKEEjI21lMSwgMjMpOyBcCisgICAgQSMjc2kxIF49IERpMTsgXAorICAgIEJndTAgPSBST0wzMihBIyNzaTEsIDMxKTsgXAorICAgIEUjI2dhMCA9ICAgQmdhMCBeKCAgQmdlMCB8ICBCZ2kwICk7IFwKKyAgICBDYTAgXj0gRSMjZ2EwOyBcCisgICAgRSMjZ2UwID0gICBCZ2UwIF4oICBCZ2kwICYgIEJnbzAgKTsgXAorICAgIENlMCBePSBFIyNnZTA7IFwKKyAgICBFIyNnaTAgPSAgIEJnaTAgXiggIEJnbzAgfCh+Qmd1MCkpOyBcCisgICAgQ2kwIF49IEUjI2dpMDsgXAorICAgIEUjI2dvMCA9ICAgQmdvMCBeKCAgQmd1MCB8ICBCZ2EwICk7IFwKKyAgICBDbzAgXj0gRSMjZ28wOyBcCisgICAgRSMjZ3UwID0gICBCZ3UwIF4oICBCZ2EwICYgIEJnZTAgKTsgXAorICAgIEN1MCBePSBFIyNndTA7IFwKK1wKKyAgICBBIyNibzEgXj0gRG8xOyBcCisgICAgQmdhMSA9IFJPTDMyKEEjI2JvMSwgMTQpOyBcCisgICAgQSMjZ3UxIF49IER1MTsgXAorICAgIEJnZTEgPSBST0wzMihBIyNndTEsIDEwKTsgXAorICAgIEEjI2thMCBePSBEYTA7IFwKKyAgICBCZ2kxID0gUk9MMzIoQSMja2EwLCAxKTsgXAorICAgIEEjI21lMCBePSBEZTA7IFwKKyAgICBCZ28xID0gUk9MMzIoQSMjbWUwLCAyMik7IFwKKyAgICBBIyNzaTAgXj0gRGkwOyBcCisgICAgQmd1MSA9IFJPTDMyKEEjI3NpMCwgMzApOyBcCisgICAgRSMjZ2ExID0gICBCZ2ExIF4oICBCZ2UxIHwgIEJnaTEgKTsgXAorICAgIENhMSBePSBFIyNnYTE7IFwKKyAgICBFIyNnZTEgPSAgIEJnZTEgXiggIEJnaTEgJiAgQmdvMSApOyBcCisgICAgQ2UxIF49IEUjI2dlMTsgXAorICAgIEUjI2dpMSA9ICAgQmdpMSBeKCAgQmdvMSB8KH5CZ3UxKSk7IFwKKyAgICBDaTEgXj0gRSMjZ2kxOyBcCisgICAgRSMjZ28xID0gICBCZ28xIF4oICBCZ3UxIHwgIEJnYTEgKTsgXAorICAgIENvMSBePSBFIyNnbzE7IFwKKyAgICBFIyNndTEgPSAgIEJndTEgXiggIEJnYTEgJiAgQmdlMSApOyBcCisgICAgQ3UxIF49IEUjI2d1MTsgXAorXAorICAgIEEjI2JlMSBePSBEZTE7IFwKKyAgICBCa2EwID0gUk9MMzIoQSMjYmUxLCAxKTsgXAorICAgIEEjI2dpMCBePSBEaTA7IFwKKyAgICBCa2UwID0gUk9MMzIoQSMjZ2kwLCAzKTsgXAorICAgIEEjI2tvMSBePSBEbzE7IFwKKyAgICBCa2kwID0gUk9MMzIoQSMja28xLCAxMyk7IFwKKyAgICBBIyNtdTAgXj0gRHUwOyBcCisgICAgQmtvMCA9IFJPTDMyKEEjI211MCwgNCk7IFwKKyAgICBBIyNzYTAgXj0gRGEwOyBcCisgICAgQmt1MCA9IFJPTDMyKEEjI3NhMCwgOSk7IFwKKyAgICBFIyNrYTAgPSAgIEJrYTAgXiggIEJrZTAgfCAgQmtpMCApOyBcCisgICAgQ2EwIF49IEUjI2thMDsgXAorICAgIEUjI2tlMCA9ICAgQmtlMCBeKCAgQmtpMCAmICBCa28wICk7IFwKKyAgICBDZTAgXj0gRSMja2UwOyBcCisgICAgRSMja2kwID0gICBCa2kwIF4oKH5Ca28wKSYgIEJrdTAgKTsgXAorICAgIENpMCBePSBFIyNraTA7IFwKKyAgICBFIyNrbzAgPSAofkJrbzApXiggIEJrdTAgfCAgQmthMCApOyBcCisgICAgQ28wIF49IEUjI2tvMDsgXAorICAgIEUjI2t1MCA9ICAgQmt1MCBeKCAgQmthMCAmICBCa2UwICk7IFwKKyAgICBDdTAgXj0gRSMja3UwOyBcCitcCisgICAgQSMjYmUwIF49IERlMDsgXAorICAgIEJrYTEgPSBBIyNiZTA7IFwKKyAgICBBIyNnaTEgXj0gRGkxOyBcCisgICAgQmtlMSA9IFJPTDMyKEEjI2dpMSwgMyk7IFwKKyAgICBBIyNrbzAgXj0gRG8wOyBcCisgICAgQmtpMSA9IFJPTDMyKEEjI2tvMCwgMTIpOyBcCisgICAgQSMjbXUxIF49IER1MTsgXAorICAgIEJrbzEgPSBST0wzMihBIyNtdTEsIDQpOyBcCisgICAgQSMjc2ExIF49IERhMTsgXAorICAgIEJrdTEgPSBST0wzMihBIyNzYTEsIDkpOyBcCisgICAgRSMja2ExID0gICBCa2ExIF4oICBCa2UxIHwgIEJraTEgKTsgXAorICAgIENhMSBePSBFIyNrYTE7IFwKKyAgICBFIyNrZTEgPSAgIEJrZTEgXiggIEJraTEgJiAgQmtvMSApOyBcCisgICAgQ2UxIF49IEUjI2tlMTsgXAorICAgIEUjI2tpMSA9ICAgQmtpMSBeKCh+QmtvMSkmICBCa3UxICk7IFwKKyAgICBDaTEgXj0gRSMja2kxOyBcCisgICAgRSMja28xID0gKH5Ca28xKV4oICBCa3UxIHwgIEJrYTEgKTsgXAorICAgIENvMSBePSBFIyNrbzE7IFwKKyAgICBFIyNrdTEgPSAgIEJrdTEgXiggIEJrYTEgJiAgQmtlMSApOyBcCisgICAgQ3UxIF49IEUjI2t1MTsgXAorXAorICAgIEEjI2J1MSBePSBEdTE7IFwKKyAgICBCbWEwID0gUk9MMzIoQSMjYnUxLCAxNCk7IFwKKyAgICBBIyNnYTAgXj0gRGEwOyBcCisgICAgQm1lMCA9IFJPTDMyKEEjI2dhMCwgMTgpOyBcCisgICAgQSMja2UwIF49IERlMDsgXAorICAgIEJtaTAgPSBST0wzMihBIyNrZTAsIDUpOyBcCisgICAgQSMjbWkxIF49IERpMTsgXAorICAgIEJtbzAgPSBST0wzMihBIyNtaTEsIDgpOyBcCisgICAgQSMjc28wIF49IERvMDsgXAorICAgIEJtdTAgPSBST0wzMihBIyNzbzAsIDI4KTsgXAorICAgIEUjI21hMCA9ICAgQm1hMCBeKCAgQm1lMCAmICBCbWkwICk7IFwKKyAgICBDYTAgXj0gRSMjbWEwOyBcCisgICAgRSMjbWUwID0gICBCbWUwIF4oICBCbWkwIHwgIEJtbzAgKTsgXAorICAgIENlMCBePSBFIyNtZTA7IFwKKyAgICBFIyNtaTAgPSAgIEJtaTAgXigofkJtbzApfCAgQm11MCApOyBcCisgICAgQ2kwIF49IEUjI21pMDsgXAorICAgIEUjI21vMCA9ICh+Qm1vMCleKCAgQm11MCAmICBCbWEwICk7IFwKKyAgICBDbzAgXj0gRSMjbW8wOyBcCisgICAgRSMjbXUwID0gICBCbXUwIF4oICBCbWEwIHwgIEJtZTAgKTsgXAorICAgIEN1MCBePSBFIyNtdTA7IFwKK1wKKyAgICBBIyNidTAgXj0gRHUwOyBcCisgICAgQm1hMSA9IFJPTDMyKEEjI2J1MCwgMTMpOyBcCisgICAgQSMjZ2ExIF49IERhMTsgXAorICAgIEJtZTEgPSBST0wzMihBIyNnYTEsIDE4KTsgXAorICAgIEEjI2tlMSBePSBEZTE7IFwKKyAgICBCbWkxID0gUk9MMzIoQSMja2UxLCA1KTsgXAorICAgIEEjI21pMCBePSBEaTA7IFwKKyAgICBCbW8xID0gUk9MMzIoQSMjbWkwLCA3KTsgXAorICAgIEEjI3NvMSBePSBEbzE7IFwKKyAgICBCbXUxID0gUk9MMzIoQSMjc28xLCAyOCk7IFwKKyAgICBFIyNtYTEgPSAgIEJtYTEgXiggIEJtZTEgJiAgQm1pMSApOyBcCisgICAgQ2ExIF49IEUjI21hMTsgXAorICAgIEUjI21lMSA9ICAgQm1lMSBeKCAgQm1pMSB8ICBCbW8xICk7IFwKKyAgICBDZTEgXj0gRSMjbWUxOyBcCisgICAgRSMjbWkxID0gICBCbWkxIF4oKH5CbW8xKXwgIEJtdTEgKTsgXAorICAgIENpMSBePSBFIyNtaTE7IFwKKyAgICBFIyNtbzEgPSAofkJtbzEpXiggIEJtdTEgJiAgQm1hMSApOyBcCisgICAgQ28xIF49IEUjI21vMTsgXAorICAgIEUjI211MSA9ICAgQm11MSBeKCAgQm1hMSB8ICBCbWUxICk7IFwKKyAgICBDdTEgXj0gRSMjbXUxOyBcCitcCisgICAgQSMjYmkwIF49IERpMDsgXAorICAgIEJzYTAgPSBST0wzMihBIyNiaTAsIDMxKTsgXAorICAgIEEjI2dvMSBePSBEbzE7IFwKKyAgICBCc2UwID0gUk9MMzIoQSMjZ28xLCAyOCk7IFwKKyAgICBBIyNrdTEgXj0gRHUxOyBcCisgICAgQnNpMCA9IFJPTDMyKEEjI2t1MSwgMjApOyBcCisgICAgQSMjbWExIF49IERhMTsgXAorICAgIEJzbzAgPSBST0wzMihBIyNtYTEsIDIxKTsgXAorICAgIEEjI3NlMCBePSBEZTA7IFwKKyAgICBCc3UwID0gUk9MMzIoQSMjc2UwLCAxKTsgXAorICAgIEUjI3NhMCA9ICAgQnNhMCBeKCh+QnNlMCkmICBCc2kwICk7IFwKKyAgICBDYTAgXj0gRSMjc2EwOyBcCisgICAgRSMjc2UwID0gKH5Cc2UwKV4oICBCc2kwIHwgIEJzbzAgKTsgXAorICAgIENlMCBePSBFIyNzZTA7IFwKKyAgICBFIyNzaTAgPSAgIEJzaTAgXiggIEJzbzAgJiAgQnN1MCApOyBcCisgICAgQ2kwIF49IEUjI3NpMDsgXAorICAgIEUjI3NvMCA9ICAgQnNvMCBeKCAgQnN1MCB8ICBCc2EwICk7IFwKKyAgICBDbzAgXj0gRSMjc28wOyBcCisgICAgRSMjc3UwID0gICBCc3UwIF4oICBCc2EwICYgIEJzZTAgKTsgXAorICAgIEN1MCBePSBFIyNzdTA7IFwKK1wKKyAgICBBIyNiaTEgXj0gRGkxOyBcCisgICAgQnNhMSA9IFJPTDMyKEEjI2JpMSwgMzEpOyBcCisgICAgQSMjZ28wIF49IERvMDsgXAorICAgIEJzZTEgPSBST0wzMihBIyNnbzAsIDI3KTsgXAorICAgIEEjI2t1MCBePSBEdTA7IFwKKyAgICBCc2kxID0gUk9MMzIoQSMja3UwLCAxOSk7IFwKKyAgICBBIyNtYTAgXj0gRGEwOyBcCisgICAgQnNvMSA9IFJPTDMyKEEjI21hMCwgMjApOyBcCisgICAgQSMjc2UxIF49IERlMTsgXAorICAgIEJzdTEgPSBST0wzMihBIyNzZTEsIDEpOyBcCisgICAgRSMjc2ExID0gICBCc2ExIF4oKH5Cc2UxKSYgIEJzaTEgKTsgXAorICAgIENhMSBePSBFIyNzYTE7IFwKKyAgICBFIyNzZTEgPSAofkJzZTEpXiggIEJzaTEgfCAgQnNvMSApOyBcCisgICAgQ2UxIF49IEUjI3NlMTsgXAorICAgIEUjI3NpMSA9ICAgQnNpMSBeKCAgQnNvMSAmICBCc3UxICk7IFwKKyAgICBDaTEgXj0gRSMjc2kxOyBcCisgICAgRSMjc28xID0gICBCc28xIF4oICBCc3UxIHwgIEJzYTEgKTsgXAorICAgIENvMSBePSBFIyNzbzE7IFwKKyAgICBFIyNzdTEgPSAgIEJzdTEgXiggIEJzYTEgJiAgQnNlMSApOyBcCisgICAgQ3UxIF49IEUjI3N1MTsgXAorXAorCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kIChsYW5lIGNvbXBsZW1lbnRpbmcgcGF0dGVybiAnYmViaWdva2ltaXNhJykgKi8KKy8qICAtLS0gdXNpbmcgZmFjdG9yIDIgaW50ZXJsZWF2aW5nLCA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDMyLWJpdCB3b3JkcyAqLworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSBcCisgICAgRGEwID0gQ3UwXlJPTDMyKENlMSwgMSk7IFwKKyAgICBEYTEgPSBDdTFeQ2UwOyBcCisgICAgRGUwID0gQ2EwXlJPTDMyKENpMSwgMSk7IFwKKyAgICBEZTEgPSBDYTFeQ2kwOyBcCisgICAgRGkwID0gQ2UwXlJPTDMyKENvMSwgMSk7IFwKKyAgICBEaTEgPSBDZTFeQ28wOyBcCisgICAgRG8wID0gQ2kwXlJPTDMyKEN1MSwgMSk7IFwKKyAgICBEbzEgPSBDaTFeQ3UwOyBcCisgICAgRHUwID0gQ28wXlJPTDMyKENhMSwgMSk7IFwKKyAgICBEdTEgPSBDbzFeQ2EwOyBcCitcCisgICAgQSMjYmEwIF49IERhMDsgXAorICAgIEJiYTAgPSBBIyNiYTA7IFwKKyAgICBBIyNnZTAgXj0gRGUwOyBcCisgICAgQmJlMCA9IFJPTDMyKEEjI2dlMCwgMjIpOyBcCisgICAgQSMja2kxIF49IERpMTsgXAorICAgIEJiaTAgPSBST0wzMihBIyNraTEsIDIyKTsgXAorICAgIEEjI21vMSBePSBEbzE7IFwKKyAgICBCYm8wID0gUk9MMzIoQSMjbW8xLCAxMSk7IFwKKyAgICBBIyNzdTAgXj0gRHUwOyBcCisgICAgQmJ1MCA9IFJPTDMyKEEjI3N1MCwgNyk7IFwKKyAgICBFIyNiYTAgPSAgIEJiYTAgXiggIEJiZTAgfCAgQmJpMCApOyBcCisgICAgRSMjYmEwIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8wW2ldOyBcCisgICAgRSMjYmUwID0gICBCYmUwIF4oKH5CYmkwKXwgIEJibzAgKTsgXAorICAgIEUjI2JpMCA9ICAgQmJpMCBeKCAgQmJvMCAmICBCYnUwICk7IFwKKyAgICBFIyNibzAgPSAgIEJibzAgXiggIEJidTAgfCAgQmJhMCApOyBcCisgICAgRSMjYnUwID0gICBCYnUwIF4oICBCYmEwICYgIEJiZTAgKTsgXAorXAorICAgIEEjI2JhMSBePSBEYTE7IFwKKyAgICBCYmExID0gQSMjYmExOyBcCisgICAgQSMjZ2UxIF49IERlMTsgXAorICAgIEJiZTEgPSBST0wzMihBIyNnZTEsIDIyKTsgXAorICAgIEEjI2tpMCBePSBEaTA7IFwKKyAgICBCYmkxID0gUk9MMzIoQSMja2kwLCAyMSk7IFwKKyAgICBBIyNtbzAgXj0gRG8wOyBcCisgICAgQmJvMSA9IFJPTDMyKEEjI21vMCwgMTApOyBcCisgICAgQSMjc3UxIF49IER1MTsgXAorICAgIEJidTEgPSBST0wzMihBIyNzdTEsIDcpOyBcCisgICAgRSMjYmExID0gICBCYmExIF4oICBCYmUxIHwgIEJiaTEgKTsgXAorICAgIEUjI2JhMSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMVtpXTsgXAorICAgIEUjI2JlMSA9ICAgQmJlMSBeKCh+QmJpMSl8ICBCYm8xICk7IFwKKyAgICBFIyNiaTEgPSAgIEJiaTEgXiggIEJibzEgJiAgQmJ1MSApOyBcCisgICAgRSMjYm8xID0gICBCYm8xIF4oICBCYnUxIHwgIEJiYTEgKTsgXAorICAgIEUjI2J1MSA9ICAgQmJ1MSBeKCAgQmJhMSAmICBCYmUxICk7IFwKK1wKKyAgICBBIyNibzAgXj0gRG8wOyBcCisgICAgQmdhMCA9IFJPTDMyKEEjI2JvMCwgMTQpOyBcCisgICAgQSMjZ3UwIF49IER1MDsgXAorICAgIEJnZTAgPSBST0wzMihBIyNndTAsIDEwKTsgXAorICAgIEEjI2thMSBePSBEYTE7IFwKKyAgICBCZ2kwID0gUk9MMzIoQSMja2ExLCAyKTsgXAorICAgIEEjI21lMSBePSBEZTE7IFwKKyAgICBCZ28wID0gUk9MMzIoQSMjbWUxLCAyMyk7IFwKKyAgICBBIyNzaTEgXj0gRGkxOyBcCisgICAgQmd1MCA9IFJPTDMyKEEjI3NpMSwgMzEpOyBcCisgICAgRSMjZ2EwID0gICBCZ2EwIF4oICBCZ2UwIHwgIEJnaTAgKTsgXAorICAgIEUjI2dlMCA9ICAgQmdlMCBeKCAgQmdpMCAmICBCZ28wICk7IFwKKyAgICBFIyNnaTAgPSAgIEJnaTAgXiggIEJnbzAgfCh+Qmd1MCkpOyBcCisgICAgRSMjZ28wID0gICBCZ28wIF4oICBCZ3UwIHwgIEJnYTAgKTsgXAorICAgIEUjI2d1MCA9ICAgQmd1MCBeKCAgQmdhMCAmICBCZ2UwICk7IFwKK1wKKyAgICBBIyNibzEgXj0gRG8xOyBcCisgICAgQmdhMSA9IFJPTDMyKEEjI2JvMSwgMTQpOyBcCisgICAgQSMjZ3UxIF49IER1MTsgXAorICAgIEJnZTEgPSBST0wzMihBIyNndTEsIDEwKTsgXAorICAgIEEjI2thMCBePSBEYTA7IFwKKyAgICBCZ2kxID0gUk9MMzIoQSMja2EwLCAxKTsgXAorICAgIEEjI21lMCBePSBEZTA7IFwKKyAgICBCZ28xID0gUk9MMzIoQSMjbWUwLCAyMik7IFwKKyAgICBBIyNzaTAgXj0gRGkwOyBcCisgICAgQmd1MSA9IFJPTDMyKEEjI3NpMCwgMzApOyBcCisgICAgRSMjZ2ExID0gICBCZ2ExIF4oICBCZ2UxIHwgIEJnaTEgKTsgXAorICAgIEUjI2dlMSA9ICAgQmdlMSBeKCAgQmdpMSAmICBCZ28xICk7IFwKKyAgICBFIyNnaTEgPSAgIEJnaTEgXiggIEJnbzEgfCh+Qmd1MSkpOyBcCisgICAgRSMjZ28xID0gICBCZ28xIF4oICBCZ3UxIHwgIEJnYTEgKTsgXAorICAgIEUjI2d1MSA9ICAgQmd1MSBeKCAgQmdhMSAmICBCZ2UxICk7IFwKK1wKKyAgICBBIyNiZTEgXj0gRGUxOyBcCisgICAgQmthMCA9IFJPTDMyKEEjI2JlMSwgMSk7IFwKKyAgICBBIyNnaTAgXj0gRGkwOyBcCisgICAgQmtlMCA9IFJPTDMyKEEjI2dpMCwgMyk7IFwKKyAgICBBIyNrbzEgXj0gRG8xOyBcCisgICAgQmtpMCA9IFJPTDMyKEEjI2tvMSwgMTMpOyBcCisgICAgQSMjbXUwIF49IER1MDsgXAorICAgIEJrbzAgPSBST0wzMihBIyNtdTAsIDQpOyBcCisgICAgQSMjc2EwIF49IERhMDsgXAorICAgIEJrdTAgPSBST0wzMihBIyNzYTAsIDkpOyBcCisgICAgRSMja2EwID0gICBCa2EwIF4oICBCa2UwIHwgIEJraTAgKTsgXAorICAgIEUjI2tlMCA9ICAgQmtlMCBeKCAgQmtpMCAmICBCa28wICk7IFwKKyAgICBFIyNraTAgPSAgIEJraTAgXigofkJrbzApJiAgQmt1MCApOyBcCisgICAgRSMja28wID0gKH5Ca28wKV4oICBCa3UwIHwgIEJrYTAgKTsgXAorICAgIEUjI2t1MCA9ICAgQmt1MCBeKCAgQmthMCAmICBCa2UwICk7IFwKK1wKKyAgICBBIyNiZTAgXj0gRGUwOyBcCisgICAgQmthMSA9IEEjI2JlMDsgXAorICAgIEEjI2dpMSBePSBEaTE7IFwKKyAgICBCa2UxID0gUk9MMzIoQSMjZ2kxLCAzKTsgXAorICAgIEEjI2tvMCBePSBEbzA7IFwKKyAgICBCa2kxID0gUk9MMzIoQSMja28wLCAxMik7IFwKKyAgICBBIyNtdTEgXj0gRHUxOyBcCisgICAgQmtvMSA9IFJPTDMyKEEjI211MSwgNCk7IFwKKyAgICBBIyNzYTEgXj0gRGExOyBcCisgICAgQmt1MSA9IFJPTDMyKEEjI3NhMSwgOSk7IFwKKyAgICBFIyNrYTEgPSAgIEJrYTEgXiggIEJrZTEgfCAgQmtpMSApOyBcCisgICAgRSMja2UxID0gICBCa2UxIF4oICBCa2kxICYgIEJrbzEgKTsgXAorICAgIEUjI2tpMSA9ICAgQmtpMSBeKCh+QmtvMSkmICBCa3UxICk7IFwKKyAgICBFIyNrbzEgPSAofkJrbzEpXiggIEJrdTEgfCAgQmthMSApOyBcCisgICAgRSMja3UxID0gICBCa3UxIF4oICBCa2ExICYgIEJrZTEgKTsgXAorXAorICAgIEEjI2J1MSBePSBEdTE7IFwKKyAgICBCbWEwID0gUk9MMzIoQSMjYnUxLCAxNCk7IFwKKyAgICBBIyNnYTAgXj0gRGEwOyBcCisgICAgQm1lMCA9IFJPTDMyKEEjI2dhMCwgMTgpOyBcCisgICAgQSMja2UwIF49IERlMDsgXAorICAgIEJtaTAgPSBST0wzMihBIyNrZTAsIDUpOyBcCisgICAgQSMjbWkxIF49IERpMTsgXAorICAgIEJtbzAgPSBST0wzMihBIyNtaTEsIDgpOyBcCisgICAgQSMjc28wIF49IERvMDsgXAorICAgIEJtdTAgPSBST0wzMihBIyNzbzAsIDI4KTsgXAorICAgIEUjI21hMCA9ICAgQm1hMCBeKCAgQm1lMCAmICBCbWkwICk7IFwKKyAgICBFIyNtZTAgPSAgIEJtZTAgXiggIEJtaTAgfCAgQm1vMCApOyBcCisgICAgRSMjbWkwID0gICBCbWkwIF4oKH5CbW8wKXwgIEJtdTAgKTsgXAorICAgIEUjI21vMCA9ICh+Qm1vMCleKCAgQm11MCAmICBCbWEwICk7IFwKKyAgICBFIyNtdTAgPSAgIEJtdTAgXiggIEJtYTAgfCAgQm1lMCApOyBcCitcCisgICAgQSMjYnUwIF49IER1MDsgXAorICAgIEJtYTEgPSBST0wzMihBIyNidTAsIDEzKTsgXAorICAgIEEjI2dhMSBePSBEYTE7IFwKKyAgICBCbWUxID0gUk9MMzIoQSMjZ2ExLCAxOCk7IFwKKyAgICBBIyNrZTEgXj0gRGUxOyBcCisgICAgQm1pMSA9IFJPTDMyKEEjI2tlMSwgNSk7IFwKKyAgICBBIyNtaTAgXj0gRGkwOyBcCisgICAgQm1vMSA9IFJPTDMyKEEjI21pMCwgNyk7IFwKKyAgICBBIyNzbzEgXj0gRG8xOyBcCisgICAgQm11MSA9IFJPTDMyKEEjI3NvMSwgMjgpOyBcCisgICAgRSMjbWExID0gICBCbWExIF4oICBCbWUxICYgIEJtaTEgKTsgXAorICAgIEUjI21lMSA9ICAgQm1lMSBeKCAgQm1pMSB8ICBCbW8xICk7IFwKKyAgICBFIyNtaTEgPSAgIEJtaTEgXigofkJtbzEpfCAgQm11MSApOyBcCisgICAgRSMjbW8xID0gKH5CbW8xKV4oICBCbXUxICYgIEJtYTEgKTsgXAorICAgIEUjI211MSA9ICAgQm11MSBeKCAgQm1hMSB8ICBCbWUxICk7IFwKK1wKKyAgICBBIyNiaTAgXj0gRGkwOyBcCisgICAgQnNhMCA9IFJPTDMyKEEjI2JpMCwgMzEpOyBcCisgICAgQSMjZ28xIF49IERvMTsgXAorICAgIEJzZTAgPSBST0wzMihBIyNnbzEsIDI4KTsgXAorICAgIEEjI2t1MSBePSBEdTE7IFwKKyAgICBCc2kwID0gUk9MMzIoQSMja3UxLCAyMCk7IFwKKyAgICBBIyNtYTEgXj0gRGExOyBcCisgICAgQnNvMCA9IFJPTDMyKEEjI21hMSwgMjEpOyBcCisgICAgQSMjc2UwIF49IERlMDsgXAorICAgIEJzdTAgPSBST0wzMihBIyNzZTAsIDEpOyBcCisgICAgRSMjc2EwID0gICBCc2EwIF4oKH5Cc2UwKSYgIEJzaTAgKTsgXAorICAgIEUjI3NlMCA9ICh+QnNlMCleKCAgQnNpMCB8ICBCc28wICk7IFwKKyAgICBFIyNzaTAgPSAgIEJzaTAgXiggIEJzbzAgJiAgQnN1MCApOyBcCisgICAgRSMjc28wID0gICBCc28wIF4oICBCc3UwIHwgIEJzYTAgKTsgXAorICAgIEUjI3N1MCA9ICAgQnN1MCBeKCAgQnNhMCAmICBCc2UwICk7IFwKK1wKKyAgICBBIyNiaTEgXj0gRGkxOyBcCisgICAgQnNhMSA9IFJPTDMyKEEjI2JpMSwgMzEpOyBcCisgICAgQSMjZ28wIF49IERvMDsgXAorICAgIEJzZTEgPSBST0wzMihBIyNnbzAsIDI3KTsgXAorICAgIEEjI2t1MCBePSBEdTA7IFwKKyAgICBCc2kxID0gUk9MMzIoQSMja3UwLCAxOSk7IFwKKyAgICBBIyNtYTAgXj0gRGEwOyBcCisgICAgQnNvMSA9IFJPTDMyKEEjI21hMCwgMjApOyBcCisgICAgQSMjc2UxIF49IERlMTsgXAorICAgIEJzdTEgPSBST0wzMihBIyNzZTEsIDEpOyBcCisgICAgRSMjc2ExID0gICBCc2ExIF4oKH5Cc2UxKSYgIEJzaTEgKTsgXAorICAgIEUjI3NlMSA9ICh+QnNlMSleKCAgQnNpMSB8ICBCc28xICk7IFwKKyAgICBFIyNzaTEgPSAgIEJzaTEgXiggIEJzbzEgJiAgQnN1MSApOyBcCisgICAgRSMjc28xID0gICBCc28xIF4oICBCc3UxIHwgIEJzYTEgKTsgXAorICAgIEUjI3N1MSA9ICAgQnN1MSBeKCAgQnNhMSAmICBCc2UxICk7IFwKK1wKKworI2Vsc2UgLyogIFVzZUJlYmlnb2tpbWlzYSAqLworLyogIC0tLSBDb2RlIGZvciByb3VuZCwgd2l0aCBwcmVwYXJlLXRoZXRhICovCisvKiAgLS0tIHVzaW5nIGZhY3RvciAyIGludGVybGVhdmluZywgNjQtYml0IGxhbmVzIG1hcHBlZCB0byAzMi1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhMCA9IEN1MF5ST0wzMihDZTEsIDEpOyBcCisgICAgRGExID0gQ3UxXkNlMDsgXAorICAgIERlMCA9IENhMF5ST0wzMihDaTEsIDEpOyBcCisgICAgRGUxID0gQ2ExXkNpMDsgXAorICAgIERpMCA9IENlMF5ST0wzMihDbzEsIDEpOyBcCisgICAgRGkxID0gQ2UxXkNvMDsgXAorICAgIERvMCA9IENpMF5ST0wzMihDdTEsIDEpOyBcCisgICAgRG8xID0gQ2kxXkN1MDsgXAorICAgIER1MCA9IENvMF5ST0wzMihDYTEsIDEpOyBcCisgICAgRHUxID0gQ28xXkNhMDsgXAorXAorICAgIEEjI2JhMCBePSBEYTA7IFwKKyAgICBCYmEwID0gQSMjYmEwOyBcCisgICAgQSMjZ2UwIF49IERlMDsgXAorICAgIEJiZTAgPSBST0wzMihBIyNnZTAsIDIyKTsgXAorICAgIEEjI2tpMSBePSBEaTE7IFwKKyAgICBCYmkwID0gUk9MMzIoQSMja2kxLCAyMik7IFwKKyAgICBBIyNtbzEgXj0gRG8xOyBcCisgICAgQmJvMCA9IFJPTDMyKEEjI21vMSwgMTEpOyBcCisgICAgQSMjc3UwIF49IER1MDsgXAorICAgIEJidTAgPSBST0wzMihBIyNzdTAsIDcpOyBcCisgICAgRSMjYmEwID0gICBCYmEwIF4oKH5CYmUwKSYgIEJiaTAgKTsgXAorICAgIEUjI2JhMCBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMFtpXTsgXAorICAgIENhMCA9IEUjI2JhMDsgXAorICAgIEUjI2JlMCA9ICAgQmJlMCBeKCh+QmJpMCkmICBCYm8wICk7IFwKKyAgICBDZTAgPSBFIyNiZTA7IFwKKyAgICBFIyNiaTAgPSAgIEJiaTAgXigofkJibzApJiAgQmJ1MCApOyBcCisgICAgQ2kwID0gRSMjYmkwOyBcCisgICAgRSMjYm8wID0gICBCYm8wIF4oKH5CYnUwKSYgIEJiYTAgKTsgXAorICAgIENvMCA9IEUjI2JvMDsgXAorICAgIEUjI2J1MCA9ICAgQmJ1MCBeKCh+QmJhMCkmICBCYmUwICk7IFwKKyAgICBDdTAgPSBFIyNidTA7IFwKK1wKKyAgICBBIyNiYTEgXj0gRGExOyBcCisgICAgQmJhMSA9IEEjI2JhMTsgXAorICAgIEEjI2dlMSBePSBEZTE7IFwKKyAgICBCYmUxID0gUk9MMzIoQSMjZ2UxLCAyMik7IFwKKyAgICBBIyNraTAgXj0gRGkwOyBcCisgICAgQmJpMSA9IFJPTDMyKEEjI2tpMCwgMjEpOyBcCisgICAgQSMjbW8wIF49IERvMDsgXAorICAgIEJibzEgPSBST0wzMihBIyNtbzAsIDEwKTsgXAorICAgIEEjI3N1MSBePSBEdTE7IFwKKyAgICBCYnUxID0gUk9MMzIoQSMjc3UxLCA3KTsgXAorICAgIEUjI2JhMSA9ICAgQmJhMSBeKCh+QmJlMSkmICBCYmkxICk7IFwKKyAgICBFIyNiYTEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyXzFbaV07IFwKKyAgICBDYTEgPSBFIyNiYTE7IFwKKyAgICBFIyNiZTEgPSAgIEJiZTEgXigofkJiaTEpJiAgQmJvMSApOyBcCisgICAgQ2UxID0gRSMjYmUxOyBcCisgICAgRSMjYmkxID0gICBCYmkxIF4oKH5CYm8xKSYgIEJidTEgKTsgXAorICAgIENpMSA9IEUjI2JpMTsgXAorICAgIEUjI2JvMSA9ICAgQmJvMSBeKCh+QmJ1MSkmICBCYmExICk7IFwKKyAgICBDbzEgPSBFIyNibzE7IFwKKyAgICBFIyNidTEgPSAgIEJidTEgXigofkJiYTEpJiAgQmJlMSApOyBcCisgICAgQ3UxID0gRSMjYnUxOyBcCitcCisgICAgQSMjYm8wIF49IERvMDsgXAorICAgIEJnYTAgPSBST0wzMihBIyNibzAsIDE0KTsgXAorICAgIEEjI2d1MCBePSBEdTA7IFwKKyAgICBCZ2UwID0gUk9MMzIoQSMjZ3UwLCAxMCk7IFwKKyAgICBBIyNrYTEgXj0gRGExOyBcCisgICAgQmdpMCA9IFJPTDMyKEEjI2thMSwgMik7IFwKKyAgICBBIyNtZTEgXj0gRGUxOyBcCisgICAgQmdvMCA9IFJPTDMyKEEjI21lMSwgMjMpOyBcCisgICAgQSMjc2kxIF49IERpMTsgXAorICAgIEJndTAgPSBST0wzMihBIyNzaTEsIDMxKTsgXAorICAgIEUjI2dhMCA9ICAgQmdhMCBeKCh+QmdlMCkmICBCZ2kwICk7IFwKKyAgICBDYTAgXj0gRSMjZ2EwOyBcCisgICAgRSMjZ2UwID0gICBCZ2UwIF4oKH5CZ2kwKSYgIEJnbzAgKTsgXAorICAgIENlMCBePSBFIyNnZTA7IFwKKyAgICBFIyNnaTAgPSAgIEJnaTAgXigofkJnbzApJiAgQmd1MCApOyBcCisgICAgQ2kwIF49IEUjI2dpMDsgXAorICAgIEUjI2dvMCA9ICAgQmdvMCBeKCh+Qmd1MCkmICBCZ2EwICk7IFwKKyAgICBDbzAgXj0gRSMjZ28wOyBcCisgICAgRSMjZ3UwID0gICBCZ3UwIF4oKH5CZ2EwKSYgIEJnZTAgKTsgXAorICAgIEN1MCBePSBFIyNndTA7IFwKK1wKKyAgICBBIyNibzEgXj0gRG8xOyBcCisgICAgQmdhMSA9IFJPTDMyKEEjI2JvMSwgMTQpOyBcCisgICAgQSMjZ3UxIF49IER1MTsgXAorICAgIEJnZTEgPSBST0wzMihBIyNndTEsIDEwKTsgXAorICAgIEEjI2thMCBePSBEYTA7IFwKKyAgICBCZ2kxID0gUk9MMzIoQSMja2EwLCAxKTsgXAorICAgIEEjI21lMCBePSBEZTA7IFwKKyAgICBCZ28xID0gUk9MMzIoQSMjbWUwLCAyMik7IFwKKyAgICBBIyNzaTAgXj0gRGkwOyBcCisgICAgQmd1MSA9IFJPTDMyKEEjI3NpMCwgMzApOyBcCisgICAgRSMjZ2ExID0gICBCZ2ExIF4oKH5CZ2UxKSYgIEJnaTEgKTsgXAorICAgIENhMSBePSBFIyNnYTE7IFwKKyAgICBFIyNnZTEgPSAgIEJnZTEgXigofkJnaTEpJiAgQmdvMSApOyBcCisgICAgQ2UxIF49IEUjI2dlMTsgXAorICAgIEUjI2dpMSA9ICAgQmdpMSBeKCh+QmdvMSkmICBCZ3UxICk7IFwKKyAgICBDaTEgXj0gRSMjZ2kxOyBcCisgICAgRSMjZ28xID0gICBCZ28xIF4oKH5CZ3UxKSYgIEJnYTEgKTsgXAorICAgIENvMSBePSBFIyNnbzE7IFwKKyAgICBFIyNndTEgPSAgIEJndTEgXigofkJnYTEpJiAgQmdlMSApOyBcCisgICAgQ3UxIF49IEUjI2d1MTsgXAorXAorICAgIEEjI2JlMSBePSBEZTE7IFwKKyAgICBCa2EwID0gUk9MMzIoQSMjYmUxLCAxKTsgXAorICAgIEEjI2dpMCBePSBEaTA7IFwKKyAgICBCa2UwID0gUk9MMzIoQSMjZ2kwLCAzKTsgXAorICAgIEEjI2tvMSBePSBEbzE7IFwKKyAgICBCa2kwID0gUk9MMzIoQSMja28xLCAxMyk7IFwKKyAgICBBIyNtdTAgXj0gRHUwOyBcCisgICAgQmtvMCA9IFJPTDMyKEEjI211MCwgNCk7IFwKKyAgICBBIyNzYTAgXj0gRGEwOyBcCisgICAgQmt1MCA9IFJPTDMyKEEjI3NhMCwgOSk7IFwKKyAgICBFIyNrYTAgPSAgIEJrYTAgXigofkJrZTApJiAgQmtpMCApOyBcCisgICAgQ2EwIF49IEUjI2thMDsgXAorICAgIEUjI2tlMCA9ICAgQmtlMCBeKCh+QmtpMCkmICBCa28wICk7IFwKKyAgICBDZTAgXj0gRSMja2UwOyBcCisgICAgRSMja2kwID0gICBCa2kwIF4oKH5Ca28wKSYgIEJrdTAgKTsgXAorICAgIENpMCBePSBFIyNraTA7IFwKKyAgICBFIyNrbzAgPSAgIEJrbzAgXigofkJrdTApJiAgQmthMCApOyBcCisgICAgQ28wIF49IEUjI2tvMDsgXAorICAgIEUjI2t1MCA9ICAgQmt1MCBeKCh+QmthMCkmICBCa2UwICk7IFwKKyAgICBDdTAgXj0gRSMja3UwOyBcCitcCisgICAgQSMjYmUwIF49IERlMDsgXAorICAgIEJrYTEgPSBBIyNiZTA7IFwKKyAgICBBIyNnaTEgXj0gRGkxOyBcCisgICAgQmtlMSA9IFJPTDMyKEEjI2dpMSwgMyk7IFwKKyAgICBBIyNrbzAgXj0gRG8wOyBcCisgICAgQmtpMSA9IFJPTDMyKEEjI2tvMCwgMTIpOyBcCisgICAgQSMjbXUxIF49IER1MTsgXAorICAgIEJrbzEgPSBST0wzMihBIyNtdTEsIDQpOyBcCisgICAgQSMjc2ExIF49IERhMTsgXAorICAgIEJrdTEgPSBST0wzMihBIyNzYTEsIDkpOyBcCisgICAgRSMja2ExID0gICBCa2ExIF4oKH5Ca2UxKSYgIEJraTEgKTsgXAorICAgIENhMSBePSBFIyNrYTE7IFwKKyAgICBFIyNrZTEgPSAgIEJrZTEgXigofkJraTEpJiAgQmtvMSApOyBcCisgICAgQ2UxIF49IEUjI2tlMTsgXAorICAgIEUjI2tpMSA9ICAgQmtpMSBeKCh+QmtvMSkmICBCa3UxICk7IFwKKyAgICBDaTEgXj0gRSMja2kxOyBcCisgICAgRSMja28xID0gICBCa28xIF4oKH5Ca3UxKSYgIEJrYTEgKTsgXAorICAgIENvMSBePSBFIyNrbzE7IFwKKyAgICBFIyNrdTEgPSAgIEJrdTEgXigofkJrYTEpJiAgQmtlMSApOyBcCisgICAgQ3UxIF49IEUjI2t1MTsgXAorXAorICAgIEEjI2J1MSBePSBEdTE7IFwKKyAgICBCbWEwID0gUk9MMzIoQSMjYnUxLCAxNCk7IFwKKyAgICBBIyNnYTAgXj0gRGEwOyBcCisgICAgQm1lMCA9IFJPTDMyKEEjI2dhMCwgMTgpOyBcCisgICAgQSMja2UwIF49IERlMDsgXAorICAgIEJtaTAgPSBST0wzMihBIyNrZTAsIDUpOyBcCisgICAgQSMjbWkxIF49IERpMTsgXAorICAgIEJtbzAgPSBST0wzMihBIyNtaTEsIDgpOyBcCisgICAgQSMjc28wIF49IERvMDsgXAorICAgIEJtdTAgPSBST0wzMihBIyNzbzAsIDI4KTsgXAorICAgIEUjI21hMCA9ICAgQm1hMCBeKCh+Qm1lMCkmICBCbWkwICk7IFwKKyAgICBDYTAgXj0gRSMjbWEwOyBcCisgICAgRSMjbWUwID0gICBCbWUwIF4oKH5CbWkwKSYgIEJtbzAgKTsgXAorICAgIENlMCBePSBFIyNtZTA7IFwKKyAgICBFIyNtaTAgPSAgIEJtaTAgXigofkJtbzApJiAgQm11MCApOyBcCisgICAgQ2kwIF49IEUjI21pMDsgXAorICAgIEUjI21vMCA9ICAgQm1vMCBeKCh+Qm11MCkmICBCbWEwICk7IFwKKyAgICBDbzAgXj0gRSMjbW8wOyBcCisgICAgRSMjbXUwID0gICBCbXUwIF4oKH5CbWEwKSYgIEJtZTAgKTsgXAorICAgIEN1MCBePSBFIyNtdTA7IFwKK1wKKyAgICBBIyNidTAgXj0gRHUwOyBcCisgICAgQm1hMSA9IFJPTDMyKEEjI2J1MCwgMTMpOyBcCisgICAgQSMjZ2ExIF49IERhMTsgXAorICAgIEJtZTEgPSBST0wzMihBIyNnYTEsIDE4KTsgXAorICAgIEEjI2tlMSBePSBEZTE7IFwKKyAgICBCbWkxID0gUk9MMzIoQSMja2UxLCA1KTsgXAorICAgIEEjI21pMCBePSBEaTA7IFwKKyAgICBCbW8xID0gUk9MMzIoQSMjbWkwLCA3KTsgXAorICAgIEEjI3NvMSBePSBEbzE7IFwKKyAgICBCbXUxID0gUk9MMzIoQSMjc28xLCAyOCk7IFwKKyAgICBFIyNtYTEgPSAgIEJtYTEgXigofkJtZTEpJiAgQm1pMSApOyBcCisgICAgQ2ExIF49IEUjI21hMTsgXAorICAgIEUjI21lMSA9ICAgQm1lMSBeKCh+Qm1pMSkmICBCbW8xICk7IFwKKyAgICBDZTEgXj0gRSMjbWUxOyBcCisgICAgRSMjbWkxID0gICBCbWkxIF4oKH5CbW8xKSYgIEJtdTEgKTsgXAorICAgIENpMSBePSBFIyNtaTE7IFwKKyAgICBFIyNtbzEgPSAgIEJtbzEgXigofkJtdTEpJiAgQm1hMSApOyBcCisgICAgQ28xIF49IEUjI21vMTsgXAorICAgIEUjI211MSA9ICAgQm11MSBeKCh+Qm1hMSkmICBCbWUxICk7IFwKKyAgICBDdTEgXj0gRSMjbXUxOyBcCitcCisgICAgQSMjYmkwIF49IERpMDsgXAorICAgIEJzYTAgPSBST0wzMihBIyNiaTAsIDMxKTsgXAorICAgIEEjI2dvMSBePSBEbzE7IFwKKyAgICBCc2UwID0gUk9MMzIoQSMjZ28xLCAyOCk7IFwKKyAgICBBIyNrdTEgXj0gRHUxOyBcCisgICAgQnNpMCA9IFJPTDMyKEEjI2t1MSwgMjApOyBcCisgICAgQSMjbWExIF49IERhMTsgXAorICAgIEJzbzAgPSBST0wzMihBIyNtYTEsIDIxKTsgXAorICAgIEEjI3NlMCBePSBEZTA7IFwKKyAgICBCc3UwID0gUk9MMzIoQSMjc2UwLCAxKTsgXAorICAgIEUjI3NhMCA9ICAgQnNhMCBeKCh+QnNlMCkmICBCc2kwICk7IFwKKyAgICBDYTAgXj0gRSMjc2EwOyBcCisgICAgRSMjc2UwID0gICBCc2UwIF4oKH5Cc2kwKSYgIEJzbzAgKTsgXAorICAgIENlMCBePSBFIyNzZTA7IFwKKyAgICBFIyNzaTAgPSAgIEJzaTAgXigofkJzbzApJiAgQnN1MCApOyBcCisgICAgQ2kwIF49IEUjI3NpMDsgXAorICAgIEUjI3NvMCA9ICAgQnNvMCBeKCh+QnN1MCkmICBCc2EwICk7IFwKKyAgICBDbzAgXj0gRSMjc28wOyBcCisgICAgRSMjc3UwID0gICBCc3UwIF4oKH5Cc2EwKSYgIEJzZTAgKTsgXAorICAgIEN1MCBePSBFIyNzdTA7IFwKK1wKKyAgICBBIyNiaTEgXj0gRGkxOyBcCisgICAgQnNhMSA9IFJPTDMyKEEjI2JpMSwgMzEpOyBcCisgICAgQSMjZ28wIF49IERvMDsgXAorICAgIEJzZTEgPSBST0wzMihBIyNnbzAsIDI3KTsgXAorICAgIEEjI2t1MCBePSBEdTA7IFwKKyAgICBCc2kxID0gUk9MMzIoQSMja3UwLCAxOSk7IFwKKyAgICBBIyNtYTAgXj0gRGEwOyBcCisgICAgQnNvMSA9IFJPTDMyKEEjI21hMCwgMjApOyBcCisgICAgQSMjc2UxIF49IERlMTsgXAorICAgIEJzdTEgPSBST0wzMihBIyNzZTEsIDEpOyBcCisgICAgRSMjc2ExID0gICBCc2ExIF4oKH5Cc2UxKSYgIEJzaTEgKTsgXAorICAgIENhMSBePSBFIyNzYTE7IFwKKyAgICBFIyNzZTEgPSAgIEJzZTEgXigofkJzaTEpJiAgQnNvMSApOyBcCisgICAgQ2UxIF49IEUjI3NlMTsgXAorICAgIEUjI3NpMSA9ICAgQnNpMSBeKCh+QnNvMSkmICBCc3UxICk7IFwKKyAgICBDaTEgXj0gRSMjc2kxOyBcCisgICAgRSMjc28xID0gICBCc28xIF4oKH5Cc3UxKSYgIEJzYTEgKTsgXAorICAgIENvMSBePSBFIyNzbzE7IFwKKyAgICBFIyNzdTEgPSAgIEJzdTEgXigofkJzYTEpJiAgQnNlMSApOyBcCisgICAgQ3UxIF49IEUjI3N1MTsgXAorXAorCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kICovCisvKiAgLS0tIHVzaW5nIGZhY3RvciAyIGludGVybGVhdmluZywgNjQtYml0IGxhbmVzIG1hcHBlZCB0byAzMi1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhMCA9IEN1MF5ST0wzMihDZTEsIDEpOyBcCisgICAgRGExID0gQ3UxXkNlMDsgXAorICAgIERlMCA9IENhMF5ST0wzMihDaTEsIDEpOyBcCisgICAgRGUxID0gQ2ExXkNpMDsgXAorICAgIERpMCA9IENlMF5ST0wzMihDbzEsIDEpOyBcCisgICAgRGkxID0gQ2UxXkNvMDsgXAorICAgIERvMCA9IENpMF5ST0wzMihDdTEsIDEpOyBcCisgICAgRG8xID0gQ2kxXkN1MDsgXAorICAgIER1MCA9IENvMF5ST0wzMihDYTEsIDEpOyBcCisgICAgRHUxID0gQ28xXkNhMDsgXAorXAorICAgIEEjI2JhMCBePSBEYTA7IFwKKyAgICBCYmEwID0gQSMjYmEwOyBcCisgICAgQSMjZ2UwIF49IERlMDsgXAorICAgIEJiZTAgPSBST0wzMihBIyNnZTAsIDIyKTsgXAorICAgIEEjI2tpMSBePSBEaTE7IFwKKyAgICBCYmkwID0gUk9MMzIoQSMja2kxLCAyMik7IFwKKyAgICBBIyNtbzEgXj0gRG8xOyBcCisgICAgQmJvMCA9IFJPTDMyKEEjI21vMSwgMTEpOyBcCisgICAgQSMjc3UwIF49IER1MDsgXAorICAgIEJidTAgPSBST0wzMihBIyNzdTAsIDcpOyBcCisgICAgRSMjYmEwID0gICBCYmEwIF4oKH5CYmUwKSYgIEJiaTAgKTsgXAorICAgIEUjI2JhMCBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMFtpXTsgXAorICAgIEUjI2JlMCA9ICAgQmJlMCBeKCh+QmJpMCkmICBCYm8wICk7IFwKKyAgICBFIyNiaTAgPSAgIEJiaTAgXigofkJibzApJiAgQmJ1MCApOyBcCisgICAgRSMjYm8wID0gICBCYm8wIF4oKH5CYnUwKSYgIEJiYTAgKTsgXAorICAgIEUjI2J1MCA9ICAgQmJ1MCBeKCh+QmJhMCkmICBCYmUwICk7IFwKK1wKKyAgICBBIyNiYTEgXj0gRGExOyBcCisgICAgQmJhMSA9IEEjI2JhMTsgXAorICAgIEEjI2dlMSBePSBEZTE7IFwKKyAgICBCYmUxID0gUk9MMzIoQSMjZ2UxLCAyMik7IFwKKyAgICBBIyNraTAgXj0gRGkwOyBcCisgICAgQmJpMSA9IFJPTDMyKEEjI2tpMCwgMjEpOyBcCisgICAgQSMjbW8wIF49IERvMDsgXAorICAgIEJibzEgPSBST0wzMihBIyNtbzAsIDEwKTsgXAorICAgIEEjI3N1MSBePSBEdTE7IFwKKyAgICBCYnUxID0gUk9MMzIoQSMjc3UxLCA3KTsgXAorICAgIEUjI2JhMSA9ICAgQmJhMSBeKCh+QmJlMSkmICBCYmkxICk7IFwKKyAgICBFIyNiYTEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyXzFbaV07IFwKKyAgICBFIyNiZTEgPSAgIEJiZTEgXigofkJiaTEpJiAgQmJvMSApOyBcCisgICAgRSMjYmkxID0gICBCYmkxIF4oKH5CYm8xKSYgIEJidTEgKTsgXAorICAgIEUjI2JvMSA9ICAgQmJvMSBeKCh+QmJ1MSkmICBCYmExICk7IFwKKyAgICBFIyNidTEgPSAgIEJidTEgXigofkJiYTEpJiAgQmJlMSApOyBcCitcCisgICAgQSMjYm8wIF49IERvMDsgXAorICAgIEJnYTAgPSBST0wzMihBIyNibzAsIDE0KTsgXAorICAgIEEjI2d1MCBePSBEdTA7IFwKKyAgICBCZ2UwID0gUk9MMzIoQSMjZ3UwLCAxMCk7IFwKKyAgICBBIyNrYTEgXj0gRGExOyBcCisgICAgQmdpMCA9IFJPTDMyKEEjI2thMSwgMik7IFwKKyAgICBBIyNtZTEgXj0gRGUxOyBcCisgICAgQmdvMCA9IFJPTDMyKEEjI21lMSwgMjMpOyBcCisgICAgQSMjc2kxIF49IERpMTsgXAorICAgIEJndTAgPSBST0wzMihBIyNzaTEsIDMxKTsgXAorICAgIEUjI2dhMCA9ICAgQmdhMCBeKCh+QmdlMCkmICBCZ2kwICk7IFwKKyAgICBFIyNnZTAgPSAgIEJnZTAgXigofkJnaTApJiAgQmdvMCApOyBcCisgICAgRSMjZ2kwID0gICBCZ2kwIF4oKH5CZ28wKSYgIEJndTAgKTsgXAorICAgIEUjI2dvMCA9ICAgQmdvMCBeKCh+Qmd1MCkmICBCZ2EwICk7IFwKKyAgICBFIyNndTAgPSAgIEJndTAgXigofkJnYTApJiAgQmdlMCApOyBcCitcCisgICAgQSMjYm8xIF49IERvMTsgXAorICAgIEJnYTEgPSBST0wzMihBIyNibzEsIDE0KTsgXAorICAgIEEjI2d1MSBePSBEdTE7IFwKKyAgICBCZ2UxID0gUk9MMzIoQSMjZ3UxLCAxMCk7IFwKKyAgICBBIyNrYTAgXj0gRGEwOyBcCisgICAgQmdpMSA9IFJPTDMyKEEjI2thMCwgMSk7IFwKKyAgICBBIyNtZTAgXj0gRGUwOyBcCisgICAgQmdvMSA9IFJPTDMyKEEjI21lMCwgMjIpOyBcCisgICAgQSMjc2kwIF49IERpMDsgXAorICAgIEJndTEgPSBST0wzMihBIyNzaTAsIDMwKTsgXAorICAgIEUjI2dhMSA9ICAgQmdhMSBeKCh+QmdlMSkmICBCZ2kxICk7IFwKKyAgICBFIyNnZTEgPSAgIEJnZTEgXigofkJnaTEpJiAgQmdvMSApOyBcCisgICAgRSMjZ2kxID0gICBCZ2kxIF4oKH5CZ28xKSYgIEJndTEgKTsgXAorICAgIEUjI2dvMSA9ICAgQmdvMSBeKCh+Qmd1MSkmICBCZ2ExICk7IFwKKyAgICBFIyNndTEgPSAgIEJndTEgXigofkJnYTEpJiAgQmdlMSApOyBcCitcCisgICAgQSMjYmUxIF49IERlMTsgXAorICAgIEJrYTAgPSBST0wzMihBIyNiZTEsIDEpOyBcCisgICAgQSMjZ2kwIF49IERpMDsgXAorICAgIEJrZTAgPSBST0wzMihBIyNnaTAsIDMpOyBcCisgICAgQSMja28xIF49IERvMTsgXAorICAgIEJraTAgPSBST0wzMihBIyNrbzEsIDEzKTsgXAorICAgIEEjI211MCBePSBEdTA7IFwKKyAgICBCa28wID0gUk9MMzIoQSMjbXUwLCA0KTsgXAorICAgIEEjI3NhMCBePSBEYTA7IFwKKyAgICBCa3UwID0gUk9MMzIoQSMjc2EwLCA5KTsgXAorICAgIEUjI2thMCA9ICAgQmthMCBeKCh+QmtlMCkmICBCa2kwICk7IFwKKyAgICBFIyNrZTAgPSAgIEJrZTAgXigofkJraTApJiAgQmtvMCApOyBcCisgICAgRSMja2kwID0gICBCa2kwIF4oKH5Ca28wKSYgIEJrdTAgKTsgXAorICAgIEUjI2tvMCA9ICAgQmtvMCBeKCh+Qmt1MCkmICBCa2EwICk7IFwKKyAgICBFIyNrdTAgPSAgIEJrdTAgXigofkJrYTApJiAgQmtlMCApOyBcCitcCisgICAgQSMjYmUwIF49IERlMDsgXAorICAgIEJrYTEgPSBBIyNiZTA7IFwKKyAgICBBIyNnaTEgXj0gRGkxOyBcCisgICAgQmtlMSA9IFJPTDMyKEEjI2dpMSwgMyk7IFwKKyAgICBBIyNrbzAgXj0gRG8wOyBcCisgICAgQmtpMSA9IFJPTDMyKEEjI2tvMCwgMTIpOyBcCisgICAgQSMjbXUxIF49IER1MTsgXAorICAgIEJrbzEgPSBST0wzMihBIyNtdTEsIDQpOyBcCisgICAgQSMjc2ExIF49IERhMTsgXAorICAgIEJrdTEgPSBST0wzMihBIyNzYTEsIDkpOyBcCisgICAgRSMja2ExID0gICBCa2ExIF4oKH5Ca2UxKSYgIEJraTEgKTsgXAorICAgIEUjI2tlMSA9ICAgQmtlMSBeKCh+QmtpMSkmICBCa28xICk7IFwKKyAgICBFIyNraTEgPSAgIEJraTEgXigofkJrbzEpJiAgQmt1MSApOyBcCisgICAgRSMja28xID0gICBCa28xIF4oKH5Ca3UxKSYgIEJrYTEgKTsgXAorICAgIEUjI2t1MSA9ICAgQmt1MSBeKCh+QmthMSkmICBCa2UxICk7IFwKK1wKKyAgICBBIyNidTEgXj0gRHUxOyBcCisgICAgQm1hMCA9IFJPTDMyKEEjI2J1MSwgMTQpOyBcCisgICAgQSMjZ2EwIF49IERhMDsgXAorICAgIEJtZTAgPSBST0wzMihBIyNnYTAsIDE4KTsgXAorICAgIEEjI2tlMCBePSBEZTA7IFwKKyAgICBCbWkwID0gUk9MMzIoQSMja2UwLCA1KTsgXAorICAgIEEjI21pMSBePSBEaTE7IFwKKyAgICBCbW8wID0gUk9MMzIoQSMjbWkxLCA4KTsgXAorICAgIEEjI3NvMCBePSBEbzA7IFwKKyAgICBCbXUwID0gUk9MMzIoQSMjc28wLCAyOCk7IFwKKyAgICBFIyNtYTAgPSAgIEJtYTAgXigofkJtZTApJiAgQm1pMCApOyBcCisgICAgRSMjbWUwID0gICBCbWUwIF4oKH5CbWkwKSYgIEJtbzAgKTsgXAorICAgIEUjI21pMCA9ICAgQm1pMCBeKCh+Qm1vMCkmICBCbXUwICk7IFwKKyAgICBFIyNtbzAgPSAgIEJtbzAgXigofkJtdTApJiAgQm1hMCApOyBcCisgICAgRSMjbXUwID0gICBCbXUwIF4oKH5CbWEwKSYgIEJtZTAgKTsgXAorXAorICAgIEEjI2J1MCBePSBEdTA7IFwKKyAgICBCbWExID0gUk9MMzIoQSMjYnUwLCAxMyk7IFwKKyAgICBBIyNnYTEgXj0gRGExOyBcCisgICAgQm1lMSA9IFJPTDMyKEEjI2dhMSwgMTgpOyBcCisgICAgQSMja2UxIF49IERlMTsgXAorICAgIEJtaTEgPSBST0wzMihBIyNrZTEsIDUpOyBcCisgICAgQSMjbWkwIF49IERpMDsgXAorICAgIEJtbzEgPSBST0wzMihBIyNtaTAsIDcpOyBcCisgICAgQSMjc28xIF49IERvMTsgXAorICAgIEJtdTEgPSBST0wzMihBIyNzbzEsIDI4KTsgXAorICAgIEUjI21hMSA9ICAgQm1hMSBeKCh+Qm1lMSkmICBCbWkxICk7IFwKKyAgICBFIyNtZTEgPSAgIEJtZTEgXigofkJtaTEpJiAgQm1vMSApOyBcCisgICAgRSMjbWkxID0gICBCbWkxIF4oKH5CbW8xKSYgIEJtdTEgKTsgXAorICAgIEUjI21vMSA9ICAgQm1vMSBeKCh+Qm11MSkmICBCbWExICk7IFwKKyAgICBFIyNtdTEgPSAgIEJtdTEgXigofkJtYTEpJiAgQm1lMSApOyBcCitcCisgICAgQSMjYmkwIF49IERpMDsgXAorICAgIEJzYTAgPSBST0wzMihBIyNiaTAsIDMxKTsgXAorICAgIEEjI2dvMSBePSBEbzE7IFwKKyAgICBCc2UwID0gUk9MMzIoQSMjZ28xLCAyOCk7IFwKKyAgICBBIyNrdTEgXj0gRHUxOyBcCisgICAgQnNpMCA9IFJPTDMyKEEjI2t1MSwgMjApOyBcCisgICAgQSMjbWExIF49IERhMTsgXAorICAgIEJzbzAgPSBST0wzMihBIyNtYTEsIDIxKTsgXAorICAgIEEjI3NlMCBePSBEZTA7IFwKKyAgICBCc3UwID0gUk9MMzIoQSMjc2UwLCAxKTsgXAorICAgIEUjI3NhMCA9ICAgQnNhMCBeKCh+QnNlMCkmICBCc2kwICk7IFwKKyAgICBFIyNzZTAgPSAgIEJzZTAgXigofkJzaTApJiAgQnNvMCApOyBcCisgICAgRSMjc2kwID0gICBCc2kwIF4oKH5Cc28wKSYgIEJzdTAgKTsgXAorICAgIEUjI3NvMCA9ICAgQnNvMCBeKCh+QnN1MCkmICBCc2EwICk7IFwKKyAgICBFIyNzdTAgPSAgIEJzdTAgXigofkJzYTApJiAgQnNlMCApOyBcCitcCisgICAgQSMjYmkxIF49IERpMTsgXAorICAgIEJzYTEgPSBST0wzMihBIyNiaTEsIDMxKTsgXAorICAgIEEjI2dvMCBePSBEbzA7IFwKKyAgICBCc2UxID0gUk9MMzIoQSMjZ28wLCAyNyk7IFwKKyAgICBBIyNrdTAgXj0gRHUwOyBcCisgICAgQnNpMSA9IFJPTDMyKEEjI2t1MCwgMTkpOyBcCisgICAgQSMjbWEwIF49IERhMDsgXAorICAgIEJzbzEgPSBST0wzMihBIyNtYTAsIDIwKTsgXAorICAgIEEjI3NlMSBePSBEZTE7IFwKKyAgICBCc3UxID0gUk9MMzIoQSMjc2UxLCAxKTsgXAorICAgIEUjI3NhMSA9ICAgQnNhMSBeKCh+QnNlMSkmICBCc2kxICk7IFwKKyAgICBFIyNzZTEgPSAgIEJzZTEgXigofkJzaTEpJiAgQnNvMSApOyBcCisgICAgRSMjc2kxID0gICBCc2kxIF4oKH5Cc28xKSYgIEJzdTEgKTsgXAorICAgIEUjI3NvMSA9ICAgQnNvMSBeKCh+QnN1MSkmICBCc2ExICk7IFwKKyAgICBFIyNzdTEgPSAgIEJzdTEgXigofkJzYTEpJiAgQnNlMSApOyBcCitcCisKKyNlbmRpZiAvKiAgVXNlQmViaWdva2ltaXNhICovCisKK2NvbnN0IFVJTlQzMiBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMFsyNF0gPSB7CisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAxVUwsCisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAxVUwsCisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAxVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAwVUwgfTsKKworY29uc3QgVUlOVDMyIEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8xWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDA4OVVMLAorICAgIDB4ODAwMDAwOGJVTCwKKyAgICAweDgwMDA4MDgwVUwsCisgICAgMHgwMDAwMDA4YlVMLAorICAgIDB4MDAwMDgwMDBVTCwKKyAgICAweDgwMDA4MDg4VUwsCisgICAgMHg4MDAwMDA4MlVMLAorICAgIDB4MDAwMDAwMGJVTCwKKyAgICAweDAwMDAwMDBhVUwsCisgICAgMHgwMDAwODA4MlVMLAorICAgIDB4MDAwMDgwMDNVTCwKKyAgICAweDAwMDA4MDhiVUwsCisgICAgMHg4MDAwMDAwYlVMLAorICAgIDB4ODAwMDAwOGFVTCwKKyAgICAweDgwMDAwMDgxVUwsCisgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4ODAwMDAwMDhVTCwKKyAgICAweDAwMDAwMDgzVUwsCisgICAgMHg4MDAwODAwM1VMLAorICAgIDB4ODAwMDgwODhVTCwKKyAgICAweDgwMDAwMDg4VUwsCisgICAgMHgwMDAwODAwMFVMLAorICAgIDB4ODAwMDgwODJVTCB9OworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDI0Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYTAgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgWCMjYmExID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JlMCA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICBYIyNiZTEgPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgWCMjYmkwID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2JpMSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICBYIyNibzAgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgWCMjYm8xID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2J1MCA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICBYIyNidTEgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgWCMjZ2EwID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2dhMSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICBYIyNnZTAgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgWCMjZ2UxID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2dpMCA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICBYIyNnaTEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgWCMjZ28wID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgIFgjI2dvMSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICBYIyNndTAgPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgWCMjZ3UxID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgIFgjI2thMCA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICBYIyNrYTEgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgWCMja2UwID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgIFgjI2tlMSA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICBYIyNraTAgPSBzdGF0ZVsyNF1eaW5wdXRbMjRdOyBcCisgICAgWCMja2kxID0gc3RhdGVbMjVdXmlucHV0WzI1XTsgXAorICAgIFgjI2tvMCA9IHN0YXRlWzI2XV5pbnB1dFsyNl07IFwKKyAgICBYIyNrbzEgPSBzdGF0ZVsyN11eaW5wdXRbMjddOyBcCisgICAgWCMja3UwID0gc3RhdGVbMjhdXmlucHV0WzI4XTsgXAorICAgIFgjI2t1MSA9IHN0YXRlWzI5XV5pbnB1dFsyOV07IFwKKyAgICBYIyNtYTAgPSBzdGF0ZVszMF1eaW5wdXRbMzBdOyBcCisgICAgWCMjbWExID0gc3RhdGVbMzFdXmlucHV0WzMxXTsgXAorICAgIFgjI21lMCA9IHN0YXRlWzMyXTsgXAorICAgIFgjI21lMSA9IHN0YXRlWzMzXTsgXAorICAgIFgjI21pMCA9IHN0YXRlWzM0XTsgXAorICAgIFgjI21pMSA9IHN0YXRlWzM1XTsgXAorICAgIFgjI21vMCA9IHN0YXRlWzM2XTsgXAorICAgIFgjI21vMSA9IHN0YXRlWzM3XTsgXAorICAgIFgjI211MCA9IHN0YXRlWzM4XTsgXAorICAgIFgjI211MSA9IHN0YXRlWzM5XTsgXAorICAgIFgjI3NhMCA9IHN0YXRlWzQwXTsgXAorICAgIFgjI3NhMSA9IHN0YXRlWzQxXTsgXAorICAgIFgjI3NlMCA9IHN0YXRlWzQyXTsgXAorICAgIFgjI3NlMSA9IHN0YXRlWzQzXTsgXAorICAgIFgjI3NpMCA9IHN0YXRlWzQ0XTsgXAorICAgIFgjI3NpMSA9IHN0YXRlWzQ1XTsgXAorICAgIFgjI3NvMCA9IHN0YXRlWzQ2XTsgXAorICAgIFgjI3NvMSA9IHN0YXRlWzQ3XTsgXAorICAgIFgjI3N1MCA9IHN0YXRlWzQ4XTsgXAorICAgIFgjI3N1MSA9IHN0YXRlWzQ5XTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDg4Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYTAgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgWCMjYmExID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JlMCA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICBYIyNiZTEgPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgWCMjYmkwID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2JpMSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICBYIyNibzAgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgWCMjYm8xID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2J1MCA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICBYIyNidTEgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgWCMjZ2EwID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2dhMSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICBYIyNnZTAgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgWCMjZ2UxID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2dpMCA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICBYIyNnaTEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgWCMjZ28wID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgIFgjI2dvMSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICBYIyNndTAgPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgWCMjZ3UxID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgIFgjI2thMCA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICBYIyNrYTEgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgWCMja2UwID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgIFgjI2tlMSA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICBYIyNraTAgPSBzdGF0ZVsyNF1eaW5wdXRbMjRdOyBcCisgICAgWCMja2kxID0gc3RhdGVbMjVdXmlucHV0WzI1XTsgXAorICAgIFgjI2tvMCA9IHN0YXRlWzI2XV5pbnB1dFsyNl07IFwKKyAgICBYIyNrbzEgPSBzdGF0ZVsyN11eaW5wdXRbMjddOyBcCisgICAgWCMja3UwID0gc3RhdGVbMjhdXmlucHV0WzI4XTsgXAorICAgIFgjI2t1MSA9IHN0YXRlWzI5XV5pbnB1dFsyOV07IFwKKyAgICBYIyNtYTAgPSBzdGF0ZVszMF1eaW5wdXRbMzBdOyBcCisgICAgWCMjbWExID0gc3RhdGVbMzFdXmlucHV0WzMxXTsgXAorICAgIFgjI21lMCA9IHN0YXRlWzMyXV5pbnB1dFszMl07IFwKKyAgICBYIyNtZTEgPSBzdGF0ZVszM11eaW5wdXRbMzNdOyBcCisgICAgWCMjbWkwID0gc3RhdGVbMzRdOyBcCisgICAgWCMjbWkxID0gc3RhdGVbMzVdOyBcCisgICAgWCMjbW8wID0gc3RhdGVbMzZdOyBcCisgICAgWCMjbW8xID0gc3RhdGVbMzddOyBcCisgICAgWCMjbXUwID0gc3RhdGVbMzhdOyBcCisgICAgWCMjbXUxID0gc3RhdGVbMzldOyBcCisgICAgWCMjc2EwID0gc3RhdGVbNDBdOyBcCisgICAgWCMjc2ExID0gc3RhdGVbNDFdOyBcCisgICAgWCMjc2UwID0gc3RhdGVbNDJdOyBcCisgICAgWCMjc2UxID0gc3RhdGVbNDNdOyBcCisgICAgWCMjc2kwID0gc3RhdGVbNDRdOyBcCisgICAgWCMjc2kxID0gc3RhdGVbNDVdOyBcCisgICAgWCMjc28wID0gc3RhdGVbNDZdOyBcCisgICAgWCMjc28xID0gc3RhdGVbNDddOyBcCisgICAgWCMjc3UwID0gc3RhdGVbNDhdOyBcCisgICAgWCMjc3UxID0gc3RhdGVbNDldOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhMCA9IHN0YXRlWyAwXTsgXAorICAgIFgjI2JhMSA9IHN0YXRlWyAxXTsgXAorICAgIFgjI2JlMCA9IHN0YXRlWyAyXTsgXAorICAgIFgjI2JlMSA9IHN0YXRlWyAzXTsgXAorICAgIFgjI2JpMCA9IHN0YXRlWyA0XTsgXAorICAgIFgjI2JpMSA9IHN0YXRlWyA1XTsgXAorICAgIFgjI2JvMCA9IHN0YXRlWyA2XTsgXAorICAgIFgjI2JvMSA9IHN0YXRlWyA3XTsgXAorICAgIFgjI2J1MCA9IHN0YXRlWyA4XTsgXAorICAgIFgjI2J1MSA9IHN0YXRlWyA5XTsgXAorICAgIFgjI2dhMCA9IHN0YXRlWzEwXTsgXAorICAgIFgjI2dhMSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2dlMCA9IHN0YXRlWzEyXTsgXAorICAgIFgjI2dlMSA9IHN0YXRlWzEzXTsgXAorICAgIFgjI2dpMCA9IHN0YXRlWzE0XTsgXAorICAgIFgjI2dpMSA9IHN0YXRlWzE1XTsgXAorICAgIFgjI2dvMCA9IHN0YXRlWzE2XTsgXAorICAgIFgjI2dvMSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI2d1MCA9IHN0YXRlWzE4XTsgXAorICAgIFgjI2d1MSA9IHN0YXRlWzE5XTsgXAorICAgIFgjI2thMCA9IHN0YXRlWzIwXTsgXAorICAgIFgjI2thMSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI2tlMCA9IHN0YXRlWzIyXTsgXAorICAgIFgjI2tlMSA9IHN0YXRlWzIzXTsgXAorICAgIFgjI2tpMCA9IHN0YXRlWzI0XTsgXAorICAgIFgjI2tpMSA9IHN0YXRlWzI1XTsgXAorICAgIFgjI2tvMCA9IHN0YXRlWzI2XTsgXAorICAgIFgjI2tvMSA9IHN0YXRlWzI3XTsgXAorICAgIFgjI2t1MCA9IHN0YXRlWzI4XTsgXAorICAgIFgjI2t1MSA9IHN0YXRlWzI5XTsgXAorICAgIFgjI21hMCA9IHN0YXRlWzMwXTsgXAorICAgIFgjI21hMSA9IHN0YXRlWzMxXTsgXAorICAgIFgjI21lMCA9IHN0YXRlWzMyXTsgXAorICAgIFgjI21lMSA9IHN0YXRlWzMzXTsgXAorICAgIFgjI21pMCA9IHN0YXRlWzM0XTsgXAorICAgIFgjI21pMSA9IHN0YXRlWzM1XTsgXAorICAgIFgjI21vMCA9IHN0YXRlWzM2XTsgXAorICAgIFgjI21vMSA9IHN0YXRlWzM3XTsgXAorICAgIFgjI211MCA9IHN0YXRlWzM4XTsgXAorICAgIFgjI211MSA9IHN0YXRlWzM5XTsgXAorICAgIFgjI3NhMCA9IHN0YXRlWzQwXTsgXAorICAgIFgjI3NhMSA9IHN0YXRlWzQxXTsgXAorICAgIFgjI3NlMCA9IHN0YXRlWzQyXTsgXAorICAgIFgjI3NlMSA9IHN0YXRlWzQzXTsgXAorICAgIFgjI3NpMCA9IHN0YXRlWzQ0XTsgXAorICAgIFgjI3NpMSA9IHN0YXRlWzQ1XTsgXAorICAgIFgjI3NvMCA9IHN0YXRlWzQ2XTsgXAorICAgIFgjI3NvMSA9IHN0YXRlWzQ3XTsgXAorICAgIFgjI3N1MCA9IHN0YXRlWzQ4XTsgXAorICAgIFgjI3N1MSA9IHN0YXRlWzQ5XTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gWCMjYmEwOyBcCisgICAgc3RhdGVbIDFdID0gWCMjYmExOyBcCisgICAgc3RhdGVbIDJdID0gWCMjYmUwOyBcCisgICAgc3RhdGVbIDNdID0gWCMjYmUxOyBcCisgICAgc3RhdGVbIDRdID0gWCMjYmkwOyBcCisgICAgc3RhdGVbIDVdID0gWCMjYmkxOyBcCisgICAgc3RhdGVbIDZdID0gWCMjYm8wOyBcCisgICAgc3RhdGVbIDddID0gWCMjYm8xOyBcCisgICAgc3RhdGVbIDhdID0gWCMjYnUwOyBcCisgICAgc3RhdGVbIDldID0gWCMjYnUxOyBcCisgICAgc3RhdGVbMTBdID0gWCMjZ2EwOyBcCisgICAgc3RhdGVbMTFdID0gWCMjZ2ExOyBcCisgICAgc3RhdGVbMTJdID0gWCMjZ2UwOyBcCisgICAgc3RhdGVbMTNdID0gWCMjZ2UxOyBcCisgICAgc3RhdGVbMTRdID0gWCMjZ2kwOyBcCisgICAgc3RhdGVbMTVdID0gWCMjZ2kxOyBcCisgICAgc3RhdGVbMTZdID0gWCMjZ28wOyBcCisgICAgc3RhdGVbMTddID0gWCMjZ28xOyBcCisgICAgc3RhdGVbMThdID0gWCMjZ3UwOyBcCisgICAgc3RhdGVbMTldID0gWCMjZ3UxOyBcCisgICAgc3RhdGVbMjBdID0gWCMja2EwOyBcCisgICAgc3RhdGVbMjFdID0gWCMja2ExOyBcCisgICAgc3RhdGVbMjJdID0gWCMja2UwOyBcCisgICAgc3RhdGVbMjNdID0gWCMja2UxOyBcCisgICAgc3RhdGVbMjRdID0gWCMja2kwOyBcCisgICAgc3RhdGVbMjVdID0gWCMja2kxOyBcCisgICAgc3RhdGVbMjZdID0gWCMja28wOyBcCisgICAgc3RhdGVbMjddID0gWCMja28xOyBcCisgICAgc3RhdGVbMjhdID0gWCMja3UwOyBcCisgICAgc3RhdGVbMjldID0gWCMja3UxOyBcCisgICAgc3RhdGVbMzBdID0gWCMjbWEwOyBcCisgICAgc3RhdGVbMzFdID0gWCMjbWExOyBcCisgICAgc3RhdGVbMzJdID0gWCMjbWUwOyBcCisgICAgc3RhdGVbMzNdID0gWCMjbWUxOyBcCisgICAgc3RhdGVbMzRdID0gWCMjbWkwOyBcCisgICAgc3RhdGVbMzVdID0gWCMjbWkxOyBcCisgICAgc3RhdGVbMzZdID0gWCMjbW8wOyBcCisgICAgc3RhdGVbMzddID0gWCMjbW8xOyBcCisgICAgc3RhdGVbMzhdID0gWCMjbXUwOyBcCisgICAgc3RhdGVbMzldID0gWCMjbXUxOyBcCisgICAgc3RhdGVbNDBdID0gWCMjc2EwOyBcCisgICAgc3RhdGVbNDFdID0gWCMjc2ExOyBcCisgICAgc3RhdGVbNDJdID0gWCMjc2UwOyBcCisgICAgc3RhdGVbNDNdID0gWCMjc2UxOyBcCisgICAgc3RhdGVbNDRdID0gWCMjc2kwOyBcCisgICAgc3RhdGVbNDVdID0gWCMjc2kxOyBcCisgICAgc3RhdGVbNDZdID0gWCMjc28wOyBcCisgICAgc3RhdGVbNDddID0gWCMjc28xOyBcCisgICAgc3RhdGVbNDhdID0gWCMjc3UwOyBcCisgICAgc3RhdGVbNDldID0gWCMjc3UxOyBcCisKKyNkZWZpbmUgY29weVN0YXRlVmFyaWFibGVzKFgsIFkpIFwKKyAgICBYIyNiYTAgPSBZIyNiYTA7IFwKKyAgICBYIyNiYTEgPSBZIyNiYTE7IFwKKyAgICBYIyNiZTAgPSBZIyNiZTA7IFwKKyAgICBYIyNiZTEgPSBZIyNiZTE7IFwKKyAgICBYIyNiaTAgPSBZIyNiaTA7IFwKKyAgICBYIyNiaTEgPSBZIyNiaTE7IFwKKyAgICBYIyNibzAgPSBZIyNibzA7IFwKKyAgICBYIyNibzEgPSBZIyNibzE7IFwKKyAgICBYIyNidTAgPSBZIyNidTA7IFwKKyAgICBYIyNidTEgPSBZIyNidTE7IFwKKyAgICBYIyNnYTAgPSBZIyNnYTA7IFwKKyAgICBYIyNnYTEgPSBZIyNnYTE7IFwKKyAgICBYIyNnZTAgPSBZIyNnZTA7IFwKKyAgICBYIyNnZTEgPSBZIyNnZTE7IFwKKyAgICBYIyNnaTAgPSBZIyNnaTA7IFwKKyAgICBYIyNnaTEgPSBZIyNnaTE7IFwKKyAgICBYIyNnbzAgPSBZIyNnbzA7IFwKKyAgICBYIyNnbzEgPSBZIyNnbzE7IFwKKyAgICBYIyNndTAgPSBZIyNndTA7IFwKKyAgICBYIyNndTEgPSBZIyNndTE7IFwKKyAgICBYIyNrYTAgPSBZIyNrYTA7IFwKKyAgICBYIyNrYTEgPSBZIyNrYTE7IFwKKyAgICBYIyNrZTAgPSBZIyNrZTA7IFwKKyAgICBYIyNrZTEgPSBZIyNrZTE7IFwKKyAgICBYIyNraTAgPSBZIyNraTA7IFwKKyAgICBYIyNraTEgPSBZIyNraTE7IFwKKyAgICBYIyNrbzAgPSBZIyNrbzA7IFwKKyAgICBYIyNrbzEgPSBZIyNrbzE7IFwKKyAgICBYIyNrdTAgPSBZIyNrdTA7IFwKKyAgICBYIyNrdTEgPSBZIyNrdTE7IFwKKyAgICBYIyNtYTAgPSBZIyNtYTA7IFwKKyAgICBYIyNtYTEgPSBZIyNtYTE7IFwKKyAgICBYIyNtZTAgPSBZIyNtZTA7IFwKKyAgICBYIyNtZTEgPSBZIyNtZTE7IFwKKyAgICBYIyNtaTAgPSBZIyNtaTA7IFwKKyAgICBYIyNtaTEgPSBZIyNtaTE7IFwKKyAgICBYIyNtbzAgPSBZIyNtbzA7IFwKKyAgICBYIyNtbzEgPSBZIyNtbzE7IFwKKyAgICBYIyNtdTAgPSBZIyNtdTA7IFwKKyAgICBYIyNtdTEgPSBZIyNtdTE7IFwKKyAgICBYIyNzYTAgPSBZIyNzYTA7IFwKKyAgICBYIyNzYTEgPSBZIyNzYTE7IFwKKyAgICBYIyNzZTAgPSBZIyNzZTA7IFwKKyAgICBYIyNzZTEgPSBZIyNzZTE7IFwKKyAgICBYIyNzaTAgPSBZIyNzaTA7IFwKKyAgICBYIyNzaTEgPSBZIyNzaTE7IFwKKyAgICBYIyNzbzAgPSBZIyNzbzA7IFwKKyAgICBYIyNzbzEgPSBZIyNzbzE7IFwKKyAgICBYIyNzdTAgPSBZIyNzdTA7IFwKKyAgICBYIyNzdTEgPSBZIyNzdTE7IFwKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLTMyLXMyLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi1zMi5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExMTc2MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi1zMi5tYWNyb3MKQEAgLTAsMCArMSwxMTg3IEBACisvKgorQ29kZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBLZWNjYWtUb29scyEKKworVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCitoZXJlYnkgZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFVJTlQzMiBBYmEwLCBBYmUwLCBBYmkwLCBBYm8wLCBBYnUwOyBcCisgICAgVUlOVDMyIEFiYTEsIEFiZTEsIEFiaTEsIEFibzEsIEFidTE7IFwKKyAgICBVSU5UMzIgQWdhMCwgQWdlMCwgQWdpMCwgQWdvMCwgQWd1MDsgXAorICAgIFVJTlQzMiBBZ2ExLCBBZ2UxLCBBZ2kxLCBBZ28xLCBBZ3UxOyBcCisgICAgVUlOVDMyIEFrYTAsIEFrZTAsIEFraTAsIEFrbzAsIEFrdTA7IFwKKyAgICBVSU5UMzIgQWthMSwgQWtlMSwgQWtpMSwgQWtvMSwgQWt1MTsgXAorICAgIFVJTlQzMiBBbWEwLCBBbWUwLCBBbWkwLCBBbW8wLCBBbXUwOyBcCisgICAgVUlOVDMyIEFtYTEsIEFtZTEsIEFtaTEsIEFtbzEsIEFtdTE7IFwKKyAgICBVSU5UMzIgQXNhMCwgQXNlMCwgQXNpMCwgQXNvMCwgQXN1MDsgXAorICAgIFVJTlQzMiBBc2ExLCBBc2UxLCBBc2kxLCBBc28xLCBBc3UxOyBcCisgICAgVUlOVDMyIEJiYTAsIEJiZTAsIEJiaTAsIEJibzAsIEJidTA7IFwKKyAgICBVSU5UMzIgQmJhMSwgQmJlMSwgQmJpMSwgQmJvMSwgQmJ1MTsgXAorICAgIFVJTlQzMiBCZ2EwLCBCZ2UwLCBCZ2kwLCBCZ28wLCBCZ3UwOyBcCisgICAgVUlOVDMyIEJnYTEsIEJnZTEsIEJnaTEsIEJnbzEsIEJndTE7IFwKKyAgICBVSU5UMzIgQmthMCwgQmtlMCwgQmtpMCwgQmtvMCwgQmt1MDsgXAorICAgIFVJTlQzMiBCa2ExLCBCa2UxLCBCa2kxLCBCa28xLCBCa3UxOyBcCisgICAgVUlOVDMyIEJtYTAsIEJtZTAsIEJtaTAsIEJtbzAsIEJtdTA7IFwKKyAgICBVSU5UMzIgQm1hMSwgQm1lMSwgQm1pMSwgQm1vMSwgQm11MTsgXAorICAgIFVJTlQzMiBCc2EwLCBCc2UwLCBCc2kwLCBCc28wLCBCc3UwOyBcCisgICAgVUlOVDMyIEJzYTEsIEJzZTEsIEJzaTEsIEJzbzEsIEJzdTE7IFwKKyAgICBVSU5UMzIgQ2EwLCBDZTAsIENpMCwgQ28wLCBDdTA7IFwKKyAgICBVSU5UMzIgQ2ExLCBDZTEsIENpMSwgQ28xLCBDdTE7IFwKKyAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7IFwKKyAgICBVSU5UMzIgRGExLCBEZTEsIERpMSwgRG8xLCBEdTE7IFwKKyAgICBVSU5UMzIgRWJhMCwgRWJlMCwgRWJpMCwgRWJvMCwgRWJ1MDsgXAorICAgIFVJTlQzMiBFYmExLCBFYmUxLCBFYmkxLCBFYm8xLCBFYnUxOyBcCisgICAgVUlOVDMyIEVnYTAsIEVnZTAsIEVnaTAsIEVnbzAsIEVndTA7IFwKKyAgICBVSU5UMzIgRWdhMSwgRWdlMSwgRWdpMSwgRWdvMSwgRWd1MTsgXAorICAgIFVJTlQzMiBFa2EwLCBFa2UwLCBFa2kwLCBFa28wLCBFa3UwOyBcCisgICAgVUlOVDMyIEVrYTEsIEVrZTEsIEVraTEsIEVrbzEsIEVrdTE7IFwKKyAgICBVSU5UMzIgRW1hMCwgRW1lMCwgRW1pMCwgRW1vMCwgRW11MDsgXAorICAgIFVJTlQzMiBFbWExLCBFbWUxLCBFbWkxLCBFbW8xLCBFbXUxOyBcCisgICAgVUlOVDMyIEVzYTAsIEVzZTAsIEVzaTAsIEVzbzAsIEVzdTA7IFwKKyAgICBVSU5UMzIgRXNhMSwgRXNlMSwgRXNpMSwgRXNvMSwgRXN1MTsgXAorCisjZGVmaW5lIHByZXBhcmVUaGV0YSBcCisgICAgQ2EwID0gQWJhMF5BZ2EwXkFrYTBeQW1hMF5Bc2EwOyBcCisgICAgQ2ExID0gQWJhMV5BZ2ExXkFrYTFeQW1hMV5Bc2ExOyBcCisgICAgQ2UwID0gQWJlMF5BZ2UwXkFrZTBeQW1lMF5Bc2UwOyBcCisgICAgQ2UxID0gQWJlMV5BZ2UxXkFrZTFeQW1lMV5Bc2UxOyBcCisgICAgQ2kwID0gQWJpMF5BZ2kwXkFraTBeQW1pMF5Bc2kwOyBcCisgICAgQ2kxID0gQWJpMV5BZ2kxXkFraTFeQW1pMV5Bc2kxOyBcCisgICAgQ28wID0gQWJvMF5BZ28wXkFrbzBeQW1vMF5Bc28wOyBcCisgICAgQ28xID0gQWJvMV5BZ28xXkFrbzFeQW1vMV5Bc28xOyBcCisgICAgQ3UwID0gQWJ1MF5BZ3UwXkFrdTBeQW11MF5Bc3UwOyBcCisgICAgQ3UxID0gQWJ1MV5BZ3UxXkFrdTFeQW11MV5Bc3UxOyBcCisKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKy8qICAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisvKiAgLS0tIHVzaW5nIGZhY3RvciAyIGludGVybGVhdmluZywgNjQtYml0IGxhbmVzIG1hcHBlZCB0byAzMi1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhMCA9IEN1MF5ST0wzMihDZTEsIDEpOyBcCisgICAgRGExID0gQ3UxXkNlMDsgXAorICAgIERlMCA9IENhMF5ST0wzMihDaTEsIDEpOyBcCisgICAgRGUxID0gQ2ExXkNpMDsgXAorICAgIERpMCA9IENlMF5ST0wzMihDbzEsIDEpOyBcCisgICAgRGkxID0gQ2UxXkNvMDsgXAorICAgIERvMCA9IENpMF5ST0wzMihDdTEsIDEpOyBcCisgICAgRG8xID0gQ2kxXkN1MDsgXAorICAgIER1MCA9IENvMF5ST0wzMihDYTEsIDEpOyBcCisgICAgRHUxID0gQ28xXkNhMDsgXAorXAorICAgIEEjI2JhMCBePSBEYTA7IFwKKyAgICBCYmEwID0gQSMjYmEwOyBcCisgICAgQSMjZ2UwIF49IERlMDsgXAorICAgIEJiZTAgPSBST0wzMihBIyNnZTAsIDIyKTsgXAorICAgIEEjI2tpMSBePSBEaTE7IFwKKyAgICBCYmkwID0gUk9MMzIoQSMja2kxLCAyMik7IFwKKyAgICBFIyNiYTAgPSAgIEJiYTAgXiggIEJiZTAgfCAgQmJpMCApOyBcCisgICAgRSMjYmEwIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8wW2ldOyBcCisgICAgQ2EwID0gRSMjYmEwOyBcCisgICAgQSMjbW8xIF49IERvMTsgXAorICAgIEJibzAgPSBST0wzMihBIyNtbzEsIDExKTsgXAorICAgIEUjI2JlMCA9ICAgQmJlMCBeKCh+QmJpMCl8ICBCYm8wICk7IFwKKyAgICBDZTAgPSBFIyNiZTA7IFwKKyAgICBBIyNzdTAgXj0gRHUwOyBcCisgICAgQmJ1MCA9IFJPTDMyKEEjI3N1MCwgNyk7IFwKKyAgICBFIyNiaTAgPSAgIEJiaTAgXiggIEJibzAgJiAgQmJ1MCApOyBcCisgICAgQ2kwID0gRSMjYmkwOyBcCisgICAgRSMjYm8wID0gICBCYm8wIF4oICBCYnUwIHwgIEJiYTAgKTsgXAorICAgIENvMCA9IEUjI2JvMDsgXAorICAgIEUjI2J1MCA9ICAgQmJ1MCBeKCAgQmJhMCAmICBCYmUwICk7IFwKKyAgICBDdTAgPSBFIyNidTA7IFwKK1wKKyAgICBBIyNiYTEgXj0gRGExOyBcCisgICAgQmJhMSA9IEEjI2JhMTsgXAorICAgIEEjI2dlMSBePSBEZTE7IFwKKyAgICBCYmUxID0gUk9MMzIoQSMjZ2UxLCAyMik7IFwKKyAgICBBIyNraTAgXj0gRGkwOyBcCisgICAgQmJpMSA9IFJPTDMyKEEjI2tpMCwgMjEpOyBcCisgICAgRSMjYmExID0gICBCYmExIF4oICBCYmUxIHwgIEJiaTEgKTsgXAorICAgIEUjI2JhMSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMVtpXTsgXAorICAgIENhMSA9IEUjI2JhMTsgXAorICAgIEEjI21vMCBePSBEbzA7IFwKKyAgICBCYm8xID0gUk9MMzIoQSMjbW8wLCAxMCk7IFwKKyAgICBFIyNiZTEgPSAgIEJiZTEgXigofkJiaTEpfCAgQmJvMSApOyBcCisgICAgQ2UxID0gRSMjYmUxOyBcCisgICAgQSMjc3UxIF49IER1MTsgXAorICAgIEJidTEgPSBST0wzMihBIyNzdTEsIDcpOyBcCisgICAgRSMjYmkxID0gICBCYmkxIF4oICBCYm8xICYgIEJidTEgKTsgXAorICAgIENpMSA9IEUjI2JpMTsgXAorICAgIEUjI2JvMSA9ICAgQmJvMSBeKCAgQmJ1MSB8ICBCYmExICk7IFwKKyAgICBDbzEgPSBFIyNibzE7IFwKKyAgICBFIyNidTEgPSAgIEJidTEgXiggIEJiYTEgJiAgQmJlMSApOyBcCisgICAgQ3UxID0gRSMjYnUxOyBcCitcCisgICAgQSMjYm8wIF49IERvMDsgXAorICAgIEJnYTAgPSBST0wzMihBIyNibzAsIDE0KTsgXAorICAgIEEjI2d1MCBePSBEdTA7IFwKKyAgICBCZ2UwID0gUk9MMzIoQSMjZ3UwLCAxMCk7IFwKKyAgICBBIyNrYTEgXj0gRGExOyBcCisgICAgQmdpMCA9IFJPTDMyKEEjI2thMSwgMik7IFwKKyAgICBFIyNnYTAgPSAgIEJnYTAgXiggIEJnZTAgfCAgQmdpMCApOyBcCisgICAgQ2EwIF49IEUjI2dhMDsgXAorICAgIEEjI21lMSBePSBEZTE7IFwKKyAgICBCZ28wID0gUk9MMzIoQSMjbWUxLCAyMyk7IFwKKyAgICBFIyNnZTAgPSAgIEJnZTAgXiggIEJnaTAgJiAgQmdvMCApOyBcCisgICAgQ2UwIF49IEUjI2dlMDsgXAorICAgIEEjI3NpMSBePSBEaTE7IFwKKyAgICBCZ3UwID0gUk9MMzIoQSMjc2kxLCAzMSk7IFwKKyAgICBFIyNnaTAgPSAgIEJnaTAgXiggIEJnbzAgfCh+Qmd1MCkpOyBcCisgICAgQ2kwIF49IEUjI2dpMDsgXAorICAgIEUjI2dvMCA9ICAgQmdvMCBeKCAgQmd1MCB8ICBCZ2EwICk7IFwKKyAgICBDbzAgXj0gRSMjZ28wOyBcCisgICAgRSMjZ3UwID0gICBCZ3UwIF4oICBCZ2EwICYgIEJnZTAgKTsgXAorICAgIEN1MCBePSBFIyNndTA7IFwKK1wKKyAgICBBIyNibzEgXj0gRG8xOyBcCisgICAgQmdhMSA9IFJPTDMyKEEjI2JvMSwgMTQpOyBcCisgICAgQSMjZ3UxIF49IER1MTsgXAorICAgIEJnZTEgPSBST0wzMihBIyNndTEsIDEwKTsgXAorICAgIEEjI2thMCBePSBEYTA7IFwKKyAgICBCZ2kxID0gUk9MMzIoQSMja2EwLCAxKTsgXAorICAgIEUjI2dhMSA9ICAgQmdhMSBeKCAgQmdlMSB8ICBCZ2kxICk7IFwKKyAgICBDYTEgXj0gRSMjZ2ExOyBcCisgICAgQSMjbWUwIF49IERlMDsgXAorICAgIEJnbzEgPSBST0wzMihBIyNtZTAsIDIyKTsgXAorICAgIEUjI2dlMSA9ICAgQmdlMSBeKCAgQmdpMSAmICBCZ28xICk7IFwKKyAgICBDZTEgXj0gRSMjZ2UxOyBcCisgICAgQSMjc2kwIF49IERpMDsgXAorICAgIEJndTEgPSBST0wzMihBIyNzaTAsIDMwKTsgXAorICAgIEUjI2dpMSA9ICAgQmdpMSBeKCAgQmdvMSB8KH5CZ3UxKSk7IFwKKyAgICBDaTEgXj0gRSMjZ2kxOyBcCisgICAgRSMjZ28xID0gICBCZ28xIF4oICBCZ3UxIHwgIEJnYTEgKTsgXAorICAgIENvMSBePSBFIyNnbzE7IFwKKyAgICBFIyNndTEgPSAgIEJndTEgXiggIEJnYTEgJiAgQmdlMSApOyBcCisgICAgQ3UxIF49IEUjI2d1MTsgXAorXAorICAgIEEjI2JlMSBePSBEZTE7IFwKKyAgICBCa2EwID0gUk9MMzIoQSMjYmUxLCAxKTsgXAorICAgIEEjI2dpMCBePSBEaTA7IFwKKyAgICBCa2UwID0gUk9MMzIoQSMjZ2kwLCAzKTsgXAorICAgIEEjI2tvMSBePSBEbzE7IFwKKyAgICBCa2kwID0gUk9MMzIoQSMja28xLCAxMyk7IFwKKyAgICBFIyNrYTAgPSAgIEJrYTAgXiggIEJrZTAgfCAgQmtpMCApOyBcCisgICAgQ2EwIF49IEUjI2thMDsgXAorICAgIEEjI211MCBePSBEdTA7IFwKKyAgICBCa28wID0gUk9MMzIoQSMjbXUwLCA0KTsgXAorICAgIEUjI2tlMCA9ICAgQmtlMCBeKCAgQmtpMCAmICBCa28wICk7IFwKKyAgICBDZTAgXj0gRSMja2UwOyBcCisgICAgQSMjc2EwIF49IERhMDsgXAorICAgIEJrdTAgPSBST0wzMihBIyNzYTAsIDkpOyBcCisgICAgRSMja2kwID0gICBCa2kwIF4oKH5Ca28wKSYgIEJrdTAgKTsgXAorICAgIENpMCBePSBFIyNraTA7IFwKKyAgICBFIyNrbzAgPSAofkJrbzApXiggIEJrdTAgfCAgQmthMCApOyBcCisgICAgQ28wIF49IEUjI2tvMDsgXAorICAgIEUjI2t1MCA9ICAgQmt1MCBeKCAgQmthMCAmICBCa2UwICk7IFwKKyAgICBDdTAgXj0gRSMja3UwOyBcCitcCisgICAgQSMjYmUwIF49IERlMDsgXAorICAgIEJrYTEgPSBBIyNiZTA7IFwKKyAgICBBIyNnaTEgXj0gRGkxOyBcCisgICAgQmtlMSA9IFJPTDMyKEEjI2dpMSwgMyk7IFwKKyAgICBBIyNrbzAgXj0gRG8wOyBcCisgICAgQmtpMSA9IFJPTDMyKEEjI2tvMCwgMTIpOyBcCisgICAgRSMja2ExID0gICBCa2ExIF4oICBCa2UxIHwgIEJraTEgKTsgXAorICAgIENhMSBePSBFIyNrYTE7IFwKKyAgICBBIyNtdTEgXj0gRHUxOyBcCisgICAgQmtvMSA9IFJPTDMyKEEjI211MSwgNCk7IFwKKyAgICBFIyNrZTEgPSAgIEJrZTEgXiggIEJraTEgJiAgQmtvMSApOyBcCisgICAgQ2UxIF49IEUjI2tlMTsgXAorICAgIEEjI3NhMSBePSBEYTE7IFwKKyAgICBCa3UxID0gUk9MMzIoQSMjc2ExLCA5KTsgXAorICAgIEUjI2tpMSA9ICAgQmtpMSBeKCh+QmtvMSkmICBCa3UxICk7IFwKKyAgICBDaTEgXj0gRSMja2kxOyBcCisgICAgRSMja28xID0gKH5Ca28xKV4oICBCa3UxIHwgIEJrYTEgKTsgXAorICAgIENvMSBePSBFIyNrbzE7IFwKKyAgICBFIyNrdTEgPSAgIEJrdTEgXiggIEJrYTEgJiAgQmtlMSApOyBcCisgICAgQ3UxIF49IEUjI2t1MTsgXAorXAorICAgIEEjI2J1MSBePSBEdTE7IFwKKyAgICBCbWEwID0gUk9MMzIoQSMjYnUxLCAxNCk7IFwKKyAgICBBIyNnYTAgXj0gRGEwOyBcCisgICAgQm1lMCA9IFJPTDMyKEEjI2dhMCwgMTgpOyBcCisgICAgQSMja2UwIF49IERlMDsgXAorICAgIEJtaTAgPSBST0wzMihBIyNrZTAsIDUpOyBcCisgICAgRSMjbWEwID0gICBCbWEwIF4oICBCbWUwICYgIEJtaTAgKTsgXAorICAgIENhMCBePSBFIyNtYTA7IFwKKyAgICBBIyNtaTEgXj0gRGkxOyBcCisgICAgQm1vMCA9IFJPTDMyKEEjI21pMSwgOCk7IFwKKyAgICBFIyNtZTAgPSAgIEJtZTAgXiggIEJtaTAgfCAgQm1vMCApOyBcCisgICAgQ2UwIF49IEUjI21lMDsgXAorICAgIEEjI3NvMCBePSBEbzA7IFwKKyAgICBCbXUwID0gUk9MMzIoQSMjc28wLCAyOCk7IFwKKyAgICBFIyNtaTAgPSAgIEJtaTAgXigofkJtbzApfCAgQm11MCApOyBcCisgICAgQ2kwIF49IEUjI21pMDsgXAorICAgIEUjI21vMCA9ICh+Qm1vMCleKCAgQm11MCAmICBCbWEwICk7IFwKKyAgICBDbzAgXj0gRSMjbW8wOyBcCisgICAgRSMjbXUwID0gICBCbXUwIF4oICBCbWEwIHwgIEJtZTAgKTsgXAorICAgIEN1MCBePSBFIyNtdTA7IFwKK1wKKyAgICBBIyNidTAgXj0gRHUwOyBcCisgICAgQm1hMSA9IFJPTDMyKEEjI2J1MCwgMTMpOyBcCisgICAgQSMjZ2ExIF49IERhMTsgXAorICAgIEJtZTEgPSBST0wzMihBIyNnYTEsIDE4KTsgXAorICAgIEEjI2tlMSBePSBEZTE7IFwKKyAgICBCbWkxID0gUk9MMzIoQSMja2UxLCA1KTsgXAorICAgIEUjI21hMSA9ICAgQm1hMSBeKCAgQm1lMSAmICBCbWkxICk7IFwKKyAgICBDYTEgXj0gRSMjbWExOyBcCisgICAgQSMjbWkwIF49IERpMDsgXAorICAgIEJtbzEgPSBST0wzMihBIyNtaTAsIDcpOyBcCisgICAgRSMjbWUxID0gICBCbWUxIF4oICBCbWkxIHwgIEJtbzEgKTsgXAorICAgIENlMSBePSBFIyNtZTE7IFwKKyAgICBBIyNzbzEgXj0gRG8xOyBcCisgICAgQm11MSA9IFJPTDMyKEEjI3NvMSwgMjgpOyBcCisgICAgRSMjbWkxID0gICBCbWkxIF4oKH5CbW8xKXwgIEJtdTEgKTsgXAorICAgIENpMSBePSBFIyNtaTE7IFwKKyAgICBFIyNtbzEgPSAofkJtbzEpXiggIEJtdTEgJiAgQm1hMSApOyBcCisgICAgQ28xIF49IEUjI21vMTsgXAorICAgIEUjI211MSA9ICAgQm11MSBeKCAgQm1hMSB8ICBCbWUxICk7IFwKKyAgICBDdTEgXj0gRSMjbXUxOyBcCitcCisgICAgQSMjYmkwIF49IERpMDsgXAorICAgIEJzYTAgPSBST0wzMihBIyNiaTAsIDMxKTsgXAorICAgIEEjI2dvMSBePSBEbzE7IFwKKyAgICBCc2UwID0gUk9MMzIoQSMjZ28xLCAyOCk7IFwKKyAgICBBIyNrdTEgXj0gRHUxOyBcCisgICAgQnNpMCA9IFJPTDMyKEEjI2t1MSwgMjApOyBcCisgICAgRSMjc2EwID0gICBCc2EwIF4oKH5Cc2UwKSYgIEJzaTAgKTsgXAorICAgIENhMCBePSBFIyNzYTA7IFwKKyAgICBBIyNtYTEgXj0gRGExOyBcCisgICAgQnNvMCA9IFJPTDMyKEEjI21hMSwgMjEpOyBcCisgICAgRSMjc2UwID0gKH5Cc2UwKV4oICBCc2kwIHwgIEJzbzAgKTsgXAorICAgIENlMCBePSBFIyNzZTA7IFwKKyAgICBBIyNzZTAgXj0gRGUwOyBcCisgICAgQnN1MCA9IFJPTDMyKEEjI3NlMCwgMSk7IFwKKyAgICBFIyNzaTAgPSAgIEJzaTAgXiggIEJzbzAgJiAgQnN1MCApOyBcCisgICAgQ2kwIF49IEUjI3NpMDsgXAorICAgIEUjI3NvMCA9ICAgQnNvMCBeKCAgQnN1MCB8ICBCc2EwICk7IFwKKyAgICBDbzAgXj0gRSMjc28wOyBcCisgICAgRSMjc3UwID0gICBCc3UwIF4oICBCc2EwICYgIEJzZTAgKTsgXAorICAgIEN1MCBePSBFIyNzdTA7IFwKK1wKKyAgICBBIyNiaTEgXj0gRGkxOyBcCisgICAgQnNhMSA9IFJPTDMyKEEjI2JpMSwgMzEpOyBcCisgICAgQSMjZ28wIF49IERvMDsgXAorICAgIEJzZTEgPSBST0wzMihBIyNnbzAsIDI3KTsgXAorICAgIEEjI2t1MCBePSBEdTA7IFwKKyAgICBCc2kxID0gUk9MMzIoQSMja3UwLCAxOSk7IFwKKyAgICBFIyNzYTEgPSAgIEJzYTEgXigofkJzZTEpJiAgQnNpMSApOyBcCisgICAgQ2ExIF49IEUjI3NhMTsgXAorICAgIEEjI21hMCBePSBEYTA7IFwKKyAgICBCc28xID0gUk9MMzIoQSMjbWEwLCAyMCk7IFwKKyAgICBFIyNzZTEgPSAofkJzZTEpXiggIEJzaTEgfCAgQnNvMSApOyBcCisgICAgQ2UxIF49IEUjI3NlMTsgXAorICAgIEEjI3NlMSBePSBEZTE7IFwKKyAgICBCc3UxID0gUk9MMzIoQSMjc2UxLCAxKTsgXAorICAgIEUjI3NpMSA9ICAgQnNpMSBeKCAgQnNvMSAmICBCc3UxICk7IFwKKyAgICBDaTEgXj0gRSMjc2kxOyBcCisgICAgRSMjc28xID0gICBCc28xIF4oICBCc3UxIHwgIEJzYTEgKTsgXAorICAgIENvMSBePSBFIyNzbzE7IFwKKyAgICBFIyNzdTEgPSAgIEJzdTEgXiggIEJzYTEgJiAgQnNlMSApOyBcCisgICAgQ3UxIF49IEUjI3N1MTsgXAorXAorCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kIChsYW5lIGNvbXBsZW1lbnRpbmcgcGF0dGVybiAnYmViaWdva2ltaXNhJykgKi8KKy8qICAtLS0gdXNpbmcgZmFjdG9yIDIgaW50ZXJsZWF2aW5nLCA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDMyLWJpdCB3b3JkcyAqLworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSBcCisgICAgRGEwID0gQ3UwXlJPTDMyKENlMSwgMSk7IFwKKyAgICBEYTEgPSBDdTFeQ2UwOyBcCisgICAgRGUwID0gQ2EwXlJPTDMyKENpMSwgMSk7IFwKKyAgICBEZTEgPSBDYTFeQ2kwOyBcCisgICAgRGkwID0gQ2UwXlJPTDMyKENvMSwgMSk7IFwKKyAgICBEaTEgPSBDZTFeQ28wOyBcCisgICAgRG8wID0gQ2kwXlJPTDMyKEN1MSwgMSk7IFwKKyAgICBEbzEgPSBDaTFeQ3UwOyBcCisgICAgRHUwID0gQ28wXlJPTDMyKENhMSwgMSk7IFwKKyAgICBEdTEgPSBDbzFeQ2EwOyBcCitcCisgICAgQSMjYmEwIF49IERhMDsgXAorICAgIEJiYTAgPSBBIyNiYTA7IFwKKyAgICBBIyNnZTAgXj0gRGUwOyBcCisgICAgQmJlMCA9IFJPTDMyKEEjI2dlMCwgMjIpOyBcCisgICAgQSMja2kxIF49IERpMTsgXAorICAgIEJiaTAgPSBST0wzMihBIyNraTEsIDIyKTsgXAorICAgIEUjI2JhMCA9ICAgQmJhMCBeKCAgQmJlMCB8ICBCYmkwICk7IFwKKyAgICBFIyNiYTAgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyXzBbaV07IFwKKyAgICBBIyNtbzEgXj0gRG8xOyBcCisgICAgQmJvMCA9IFJPTDMyKEEjI21vMSwgMTEpOyBcCisgICAgRSMjYmUwID0gICBCYmUwIF4oKH5CYmkwKXwgIEJibzAgKTsgXAorICAgIEEjI3N1MCBePSBEdTA7IFwKKyAgICBCYnUwID0gUk9MMzIoQSMjc3UwLCA3KTsgXAorICAgIEUjI2JpMCA9ICAgQmJpMCBeKCAgQmJvMCAmICBCYnUwICk7IFwKKyAgICBFIyNibzAgPSAgIEJibzAgXiggIEJidTAgfCAgQmJhMCApOyBcCisgICAgRSMjYnUwID0gICBCYnUwIF4oICBCYmEwICYgIEJiZTAgKTsgXAorXAorICAgIEEjI2JhMSBePSBEYTE7IFwKKyAgICBCYmExID0gQSMjYmExOyBcCisgICAgQSMjZ2UxIF49IERlMTsgXAorICAgIEJiZTEgPSBST0wzMihBIyNnZTEsIDIyKTsgXAorICAgIEEjI2tpMCBePSBEaTA7IFwKKyAgICBCYmkxID0gUk9MMzIoQSMja2kwLCAyMSk7IFwKKyAgICBFIyNiYTEgPSAgIEJiYTEgXiggIEJiZTEgfCAgQmJpMSApOyBcCisgICAgRSMjYmExIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8xW2ldOyBcCisgICAgQSMjbW8wIF49IERvMDsgXAorICAgIEJibzEgPSBST0wzMihBIyNtbzAsIDEwKTsgXAorICAgIEUjI2JlMSA9ICAgQmJlMSBeKCh+QmJpMSl8ICBCYm8xICk7IFwKKyAgICBBIyNzdTEgXj0gRHUxOyBcCisgICAgQmJ1MSA9IFJPTDMyKEEjI3N1MSwgNyk7IFwKKyAgICBFIyNiaTEgPSAgIEJiaTEgXiggIEJibzEgJiAgQmJ1MSApOyBcCisgICAgRSMjYm8xID0gICBCYm8xIF4oICBCYnUxIHwgIEJiYTEgKTsgXAorICAgIEUjI2J1MSA9ICAgQmJ1MSBeKCAgQmJhMSAmICBCYmUxICk7IFwKK1wKKyAgICBBIyNibzAgXj0gRG8wOyBcCisgICAgQmdhMCA9IFJPTDMyKEEjI2JvMCwgMTQpOyBcCisgICAgQSMjZ3UwIF49IER1MDsgXAorICAgIEJnZTAgPSBST0wzMihBIyNndTAsIDEwKTsgXAorICAgIEEjI2thMSBePSBEYTE7IFwKKyAgICBCZ2kwID0gUk9MMzIoQSMja2ExLCAyKTsgXAorICAgIEUjI2dhMCA9ICAgQmdhMCBeKCAgQmdlMCB8ICBCZ2kwICk7IFwKKyAgICBBIyNtZTEgXj0gRGUxOyBcCisgICAgQmdvMCA9IFJPTDMyKEEjI21lMSwgMjMpOyBcCisgICAgRSMjZ2UwID0gICBCZ2UwIF4oICBCZ2kwICYgIEJnbzAgKTsgXAorICAgIEEjI3NpMSBePSBEaTE7IFwKKyAgICBCZ3UwID0gUk9MMzIoQSMjc2kxLCAzMSk7IFwKKyAgICBFIyNnaTAgPSAgIEJnaTAgXiggIEJnbzAgfCh+Qmd1MCkpOyBcCisgICAgRSMjZ28wID0gICBCZ28wIF4oICBCZ3UwIHwgIEJnYTAgKTsgXAorICAgIEUjI2d1MCA9ICAgQmd1MCBeKCAgQmdhMCAmICBCZ2UwICk7IFwKK1wKKyAgICBBIyNibzEgXj0gRG8xOyBcCisgICAgQmdhMSA9IFJPTDMyKEEjI2JvMSwgMTQpOyBcCisgICAgQSMjZ3UxIF49IER1MTsgXAorICAgIEJnZTEgPSBST0wzMihBIyNndTEsIDEwKTsgXAorICAgIEEjI2thMCBePSBEYTA7IFwKKyAgICBCZ2kxID0gUk9MMzIoQSMja2EwLCAxKTsgXAorICAgIEUjI2dhMSA9ICAgQmdhMSBeKCAgQmdlMSB8ICBCZ2kxICk7IFwKKyAgICBBIyNtZTAgXj0gRGUwOyBcCisgICAgQmdvMSA9IFJPTDMyKEEjI21lMCwgMjIpOyBcCisgICAgRSMjZ2UxID0gICBCZ2UxIF4oICBCZ2kxICYgIEJnbzEgKTsgXAorICAgIEEjI3NpMCBePSBEaTA7IFwKKyAgICBCZ3UxID0gUk9MMzIoQSMjc2kwLCAzMCk7IFwKKyAgICBFIyNnaTEgPSAgIEJnaTEgXiggIEJnbzEgfCh+Qmd1MSkpOyBcCisgICAgRSMjZ28xID0gICBCZ28xIF4oICBCZ3UxIHwgIEJnYTEgKTsgXAorICAgIEUjI2d1MSA9ICAgQmd1MSBeKCAgQmdhMSAmICBCZ2UxICk7IFwKK1wKKyAgICBBIyNiZTEgXj0gRGUxOyBcCisgICAgQmthMCA9IFJPTDMyKEEjI2JlMSwgMSk7IFwKKyAgICBBIyNnaTAgXj0gRGkwOyBcCisgICAgQmtlMCA9IFJPTDMyKEEjI2dpMCwgMyk7IFwKKyAgICBBIyNrbzEgXj0gRG8xOyBcCisgICAgQmtpMCA9IFJPTDMyKEEjI2tvMSwgMTMpOyBcCisgICAgRSMja2EwID0gICBCa2EwIF4oICBCa2UwIHwgIEJraTAgKTsgXAorICAgIEEjI211MCBePSBEdTA7IFwKKyAgICBCa28wID0gUk9MMzIoQSMjbXUwLCA0KTsgXAorICAgIEUjI2tlMCA9ICAgQmtlMCBeKCAgQmtpMCAmICBCa28wICk7IFwKKyAgICBBIyNzYTAgXj0gRGEwOyBcCisgICAgQmt1MCA9IFJPTDMyKEEjI3NhMCwgOSk7IFwKKyAgICBFIyNraTAgPSAgIEJraTAgXigofkJrbzApJiAgQmt1MCApOyBcCisgICAgRSMja28wID0gKH5Ca28wKV4oICBCa3UwIHwgIEJrYTAgKTsgXAorICAgIEUjI2t1MCA9ICAgQmt1MCBeKCAgQmthMCAmICBCa2UwICk7IFwKK1wKKyAgICBBIyNiZTAgXj0gRGUwOyBcCisgICAgQmthMSA9IEEjI2JlMDsgXAorICAgIEEjI2dpMSBePSBEaTE7IFwKKyAgICBCa2UxID0gUk9MMzIoQSMjZ2kxLCAzKTsgXAorICAgIEEjI2tvMCBePSBEbzA7IFwKKyAgICBCa2kxID0gUk9MMzIoQSMja28wLCAxMik7IFwKKyAgICBFIyNrYTEgPSAgIEJrYTEgXiggIEJrZTEgfCAgQmtpMSApOyBcCisgICAgQSMjbXUxIF49IER1MTsgXAorICAgIEJrbzEgPSBST0wzMihBIyNtdTEsIDQpOyBcCisgICAgRSMja2UxID0gICBCa2UxIF4oICBCa2kxICYgIEJrbzEgKTsgXAorICAgIEEjI3NhMSBePSBEYTE7IFwKKyAgICBCa3UxID0gUk9MMzIoQSMjc2ExLCA5KTsgXAorICAgIEUjI2tpMSA9ICAgQmtpMSBeKCh+QmtvMSkmICBCa3UxICk7IFwKKyAgICBFIyNrbzEgPSAofkJrbzEpXiggIEJrdTEgfCAgQmthMSApOyBcCisgICAgRSMja3UxID0gICBCa3UxIF4oICBCa2ExICYgIEJrZTEgKTsgXAorXAorICAgIEEjI2J1MSBePSBEdTE7IFwKKyAgICBCbWEwID0gUk9MMzIoQSMjYnUxLCAxNCk7IFwKKyAgICBBIyNnYTAgXj0gRGEwOyBcCisgICAgQm1lMCA9IFJPTDMyKEEjI2dhMCwgMTgpOyBcCisgICAgQSMja2UwIF49IERlMDsgXAorICAgIEJtaTAgPSBST0wzMihBIyNrZTAsIDUpOyBcCisgICAgRSMjbWEwID0gICBCbWEwIF4oICBCbWUwICYgIEJtaTAgKTsgXAorICAgIEEjI21pMSBePSBEaTE7IFwKKyAgICBCbW8wID0gUk9MMzIoQSMjbWkxLCA4KTsgXAorICAgIEUjI21lMCA9ICAgQm1lMCBeKCAgQm1pMCB8ICBCbW8wICk7IFwKKyAgICBBIyNzbzAgXj0gRG8wOyBcCisgICAgQm11MCA9IFJPTDMyKEEjI3NvMCwgMjgpOyBcCisgICAgRSMjbWkwID0gICBCbWkwIF4oKH5CbW8wKXwgIEJtdTAgKTsgXAorICAgIEUjI21vMCA9ICh+Qm1vMCleKCAgQm11MCAmICBCbWEwICk7IFwKKyAgICBFIyNtdTAgPSAgIEJtdTAgXiggIEJtYTAgfCAgQm1lMCApOyBcCitcCisgICAgQSMjYnUwIF49IER1MDsgXAorICAgIEJtYTEgPSBST0wzMihBIyNidTAsIDEzKTsgXAorICAgIEEjI2dhMSBePSBEYTE7IFwKKyAgICBCbWUxID0gUk9MMzIoQSMjZ2ExLCAxOCk7IFwKKyAgICBBIyNrZTEgXj0gRGUxOyBcCisgICAgQm1pMSA9IFJPTDMyKEEjI2tlMSwgNSk7IFwKKyAgICBFIyNtYTEgPSAgIEJtYTEgXiggIEJtZTEgJiAgQm1pMSApOyBcCisgICAgQSMjbWkwIF49IERpMDsgXAorICAgIEJtbzEgPSBST0wzMihBIyNtaTAsIDcpOyBcCisgICAgRSMjbWUxID0gICBCbWUxIF4oICBCbWkxIHwgIEJtbzEgKTsgXAorICAgIEEjI3NvMSBePSBEbzE7IFwKKyAgICBCbXUxID0gUk9MMzIoQSMjc28xLCAyOCk7IFwKKyAgICBFIyNtaTEgPSAgIEJtaTEgXigofkJtbzEpfCAgQm11MSApOyBcCisgICAgRSMjbW8xID0gKH5CbW8xKV4oICBCbXUxICYgIEJtYTEgKTsgXAorICAgIEUjI211MSA9ICAgQm11MSBeKCAgQm1hMSB8ICBCbWUxICk7IFwKK1wKKyAgICBBIyNiaTAgXj0gRGkwOyBcCisgICAgQnNhMCA9IFJPTDMyKEEjI2JpMCwgMzEpOyBcCisgICAgQSMjZ28xIF49IERvMTsgXAorICAgIEJzZTAgPSBST0wzMihBIyNnbzEsIDI4KTsgXAorICAgIEEjI2t1MSBePSBEdTE7IFwKKyAgICBCc2kwID0gUk9MMzIoQSMja3UxLCAyMCk7IFwKKyAgICBFIyNzYTAgPSAgIEJzYTAgXigofkJzZTApJiAgQnNpMCApOyBcCisgICAgQSMjbWExIF49IERhMTsgXAorICAgIEJzbzAgPSBST0wzMihBIyNtYTEsIDIxKTsgXAorICAgIEUjI3NlMCA9ICh+QnNlMCleKCAgQnNpMCB8ICBCc28wICk7IFwKKyAgICBBIyNzZTAgXj0gRGUwOyBcCisgICAgQnN1MCA9IFJPTDMyKEEjI3NlMCwgMSk7IFwKKyAgICBFIyNzaTAgPSAgIEJzaTAgXiggIEJzbzAgJiAgQnN1MCApOyBcCisgICAgRSMjc28wID0gICBCc28wIF4oICBCc3UwIHwgIEJzYTAgKTsgXAorICAgIEUjI3N1MCA9ICAgQnN1MCBeKCAgQnNhMCAmICBCc2UwICk7IFwKK1wKKyAgICBBIyNiaTEgXj0gRGkxOyBcCisgICAgQnNhMSA9IFJPTDMyKEEjI2JpMSwgMzEpOyBcCisgICAgQSMjZ28wIF49IERvMDsgXAorICAgIEJzZTEgPSBST0wzMihBIyNnbzAsIDI3KTsgXAorICAgIEEjI2t1MCBePSBEdTA7IFwKKyAgICBCc2kxID0gUk9MMzIoQSMja3UwLCAxOSk7IFwKKyAgICBFIyNzYTEgPSAgIEJzYTEgXigofkJzZTEpJiAgQnNpMSApOyBcCisgICAgQSMjbWEwIF49IERhMDsgXAorICAgIEJzbzEgPSBST0wzMihBIyNtYTAsIDIwKTsgXAorICAgIEUjI3NlMSA9ICh+QnNlMSleKCAgQnNpMSB8ICBCc28xICk7IFwKKyAgICBBIyNzZTEgXj0gRGUxOyBcCisgICAgQnN1MSA9IFJPTDMyKEEjI3NlMSwgMSk7IFwKKyAgICBFIyNzaTEgPSAgIEJzaTEgXiggIEJzbzEgJiAgQnN1MSApOyBcCisgICAgRSMjc28xID0gICBCc28xIF4oICBCc3UxIHwgIEJzYTEgKTsgXAorICAgIEUjI3N1MSA9ICAgQnN1MSBeKCAgQnNhMSAmICBCc2UxICk7IFwKK1wKKworI2Vsc2UgLyogIFVzZUJlYmlnb2tpbWlzYSAqLworLyogIC0tLSBDb2RlIGZvciByb3VuZCwgd2l0aCBwcmVwYXJlLXRoZXRhICovCisvKiAgLS0tIHVzaW5nIGZhY3RvciAyIGludGVybGVhdmluZywgNjQtYml0IGxhbmVzIG1hcHBlZCB0byAzMi1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhMCA9IEN1MF5ST0wzMihDZTEsIDEpOyBcCisgICAgRGExID0gQ3UxXkNlMDsgXAorICAgIERlMCA9IENhMF5ST0wzMihDaTEsIDEpOyBcCisgICAgRGUxID0gQ2ExXkNpMDsgXAorICAgIERpMCA9IENlMF5ST0wzMihDbzEsIDEpOyBcCisgICAgRGkxID0gQ2UxXkNvMDsgXAorICAgIERvMCA9IENpMF5ST0wzMihDdTEsIDEpOyBcCisgICAgRG8xID0gQ2kxXkN1MDsgXAorICAgIER1MCA9IENvMF5ST0wzMihDYTEsIDEpOyBcCisgICAgRHUxID0gQ28xXkNhMDsgXAorXAorICAgIEEjI2JhMCBePSBEYTA7IFwKKyAgICBCYmEwID0gQSMjYmEwOyBcCisgICAgQSMjZ2UwIF49IERlMDsgXAorICAgIEJiZTAgPSBST0wzMihBIyNnZTAsIDIyKTsgXAorICAgIEEjI2tpMSBePSBEaTE7IFwKKyAgICBCYmkwID0gUk9MMzIoQSMja2kxLCAyMik7IFwKKyAgICBFIyNiYTAgPSAgIEJiYTAgXigofkJiZTApJiAgQmJpMCApOyBcCisgICAgRSMjYmEwIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8wW2ldOyBcCisgICAgQ2EwID0gRSMjYmEwOyBcCisgICAgQSMjbW8xIF49IERvMTsgXAorICAgIEJibzAgPSBST0wzMihBIyNtbzEsIDExKTsgXAorICAgIEUjI2JlMCA9ICAgQmJlMCBeKCh+QmJpMCkmICBCYm8wICk7IFwKKyAgICBDZTAgPSBFIyNiZTA7IFwKKyAgICBBIyNzdTAgXj0gRHUwOyBcCisgICAgQmJ1MCA9IFJPTDMyKEEjI3N1MCwgNyk7IFwKKyAgICBFIyNiaTAgPSAgIEJiaTAgXigofkJibzApJiAgQmJ1MCApOyBcCisgICAgQ2kwID0gRSMjYmkwOyBcCisgICAgRSMjYm8wID0gICBCYm8wIF4oKH5CYnUwKSYgIEJiYTAgKTsgXAorICAgIENvMCA9IEUjI2JvMDsgXAorICAgIEUjI2J1MCA9ICAgQmJ1MCBeKCh+QmJhMCkmICBCYmUwICk7IFwKKyAgICBDdTAgPSBFIyNidTA7IFwKK1wKKyAgICBBIyNiYTEgXj0gRGExOyBcCisgICAgQmJhMSA9IEEjI2JhMTsgXAorICAgIEEjI2dlMSBePSBEZTE7IFwKKyAgICBCYmUxID0gUk9MMzIoQSMjZ2UxLCAyMik7IFwKKyAgICBBIyNraTAgXj0gRGkwOyBcCisgICAgQmJpMSA9IFJPTDMyKEEjI2tpMCwgMjEpOyBcCisgICAgRSMjYmExID0gICBCYmExIF4oKH5CYmUxKSYgIEJiaTEgKTsgXAorICAgIEUjI2JhMSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMVtpXTsgXAorICAgIENhMSA9IEUjI2JhMTsgXAorICAgIEEjI21vMCBePSBEbzA7IFwKKyAgICBCYm8xID0gUk9MMzIoQSMjbW8wLCAxMCk7IFwKKyAgICBFIyNiZTEgPSAgIEJiZTEgXigofkJiaTEpJiAgQmJvMSApOyBcCisgICAgQ2UxID0gRSMjYmUxOyBcCisgICAgQSMjc3UxIF49IER1MTsgXAorICAgIEJidTEgPSBST0wzMihBIyNzdTEsIDcpOyBcCisgICAgRSMjYmkxID0gICBCYmkxIF4oKH5CYm8xKSYgIEJidTEgKTsgXAorICAgIENpMSA9IEUjI2JpMTsgXAorICAgIEUjI2JvMSA9ICAgQmJvMSBeKCh+QmJ1MSkmICBCYmExICk7IFwKKyAgICBDbzEgPSBFIyNibzE7IFwKKyAgICBFIyNidTEgPSAgIEJidTEgXigofkJiYTEpJiAgQmJlMSApOyBcCisgICAgQ3UxID0gRSMjYnUxOyBcCitcCisgICAgQSMjYm8wIF49IERvMDsgXAorICAgIEJnYTAgPSBST0wzMihBIyNibzAsIDE0KTsgXAorICAgIEEjI2d1MCBePSBEdTA7IFwKKyAgICBCZ2UwID0gUk9MMzIoQSMjZ3UwLCAxMCk7IFwKKyAgICBBIyNrYTEgXj0gRGExOyBcCisgICAgQmdpMCA9IFJPTDMyKEEjI2thMSwgMik7IFwKKyAgICBFIyNnYTAgPSAgIEJnYTAgXigofkJnZTApJiAgQmdpMCApOyBcCisgICAgQ2EwIF49IEUjI2dhMDsgXAorICAgIEEjI21lMSBePSBEZTE7IFwKKyAgICBCZ28wID0gUk9MMzIoQSMjbWUxLCAyMyk7IFwKKyAgICBFIyNnZTAgPSAgIEJnZTAgXigofkJnaTApJiAgQmdvMCApOyBcCisgICAgQ2UwIF49IEUjI2dlMDsgXAorICAgIEEjI3NpMSBePSBEaTE7IFwKKyAgICBCZ3UwID0gUk9MMzIoQSMjc2kxLCAzMSk7IFwKKyAgICBFIyNnaTAgPSAgIEJnaTAgXigofkJnbzApJiAgQmd1MCApOyBcCisgICAgQ2kwIF49IEUjI2dpMDsgXAorICAgIEUjI2dvMCA9ICAgQmdvMCBeKCh+Qmd1MCkmICBCZ2EwICk7IFwKKyAgICBDbzAgXj0gRSMjZ28wOyBcCisgICAgRSMjZ3UwID0gICBCZ3UwIF4oKH5CZ2EwKSYgIEJnZTAgKTsgXAorICAgIEN1MCBePSBFIyNndTA7IFwKK1wKKyAgICBBIyNibzEgXj0gRG8xOyBcCisgICAgQmdhMSA9IFJPTDMyKEEjI2JvMSwgMTQpOyBcCisgICAgQSMjZ3UxIF49IER1MTsgXAorICAgIEJnZTEgPSBST0wzMihBIyNndTEsIDEwKTsgXAorICAgIEEjI2thMCBePSBEYTA7IFwKKyAgICBCZ2kxID0gUk9MMzIoQSMja2EwLCAxKTsgXAorICAgIEUjI2dhMSA9ICAgQmdhMSBeKCh+QmdlMSkmICBCZ2kxICk7IFwKKyAgICBDYTEgXj0gRSMjZ2ExOyBcCisgICAgQSMjbWUwIF49IERlMDsgXAorICAgIEJnbzEgPSBST0wzMihBIyNtZTAsIDIyKTsgXAorICAgIEUjI2dlMSA9ICAgQmdlMSBeKCh+QmdpMSkmICBCZ28xICk7IFwKKyAgICBDZTEgXj0gRSMjZ2UxOyBcCisgICAgQSMjc2kwIF49IERpMDsgXAorICAgIEJndTEgPSBST0wzMihBIyNzaTAsIDMwKTsgXAorICAgIEUjI2dpMSA9ICAgQmdpMSBeKCh+QmdvMSkmICBCZ3UxICk7IFwKKyAgICBDaTEgXj0gRSMjZ2kxOyBcCisgICAgRSMjZ28xID0gICBCZ28xIF4oKH5CZ3UxKSYgIEJnYTEgKTsgXAorICAgIENvMSBePSBFIyNnbzE7IFwKKyAgICBFIyNndTEgPSAgIEJndTEgXigofkJnYTEpJiAgQmdlMSApOyBcCisgICAgQ3UxIF49IEUjI2d1MTsgXAorXAorICAgIEEjI2JlMSBePSBEZTE7IFwKKyAgICBCa2EwID0gUk9MMzIoQSMjYmUxLCAxKTsgXAorICAgIEEjI2dpMCBePSBEaTA7IFwKKyAgICBCa2UwID0gUk9MMzIoQSMjZ2kwLCAzKTsgXAorICAgIEEjI2tvMSBePSBEbzE7IFwKKyAgICBCa2kwID0gUk9MMzIoQSMja28xLCAxMyk7IFwKKyAgICBFIyNrYTAgPSAgIEJrYTAgXigofkJrZTApJiAgQmtpMCApOyBcCisgICAgQ2EwIF49IEUjI2thMDsgXAorICAgIEEjI211MCBePSBEdTA7IFwKKyAgICBCa28wID0gUk9MMzIoQSMjbXUwLCA0KTsgXAorICAgIEUjI2tlMCA9ICAgQmtlMCBeKCh+QmtpMCkmICBCa28wICk7IFwKKyAgICBDZTAgXj0gRSMja2UwOyBcCisgICAgQSMjc2EwIF49IERhMDsgXAorICAgIEJrdTAgPSBST0wzMihBIyNzYTAsIDkpOyBcCisgICAgRSMja2kwID0gICBCa2kwIF4oKH5Ca28wKSYgIEJrdTAgKTsgXAorICAgIENpMCBePSBFIyNraTA7IFwKKyAgICBFIyNrbzAgPSAgIEJrbzAgXigofkJrdTApJiAgQmthMCApOyBcCisgICAgQ28wIF49IEUjI2tvMDsgXAorICAgIEUjI2t1MCA9ICAgQmt1MCBeKCh+QmthMCkmICBCa2UwICk7IFwKKyAgICBDdTAgXj0gRSMja3UwOyBcCitcCisgICAgQSMjYmUwIF49IERlMDsgXAorICAgIEJrYTEgPSBBIyNiZTA7IFwKKyAgICBBIyNnaTEgXj0gRGkxOyBcCisgICAgQmtlMSA9IFJPTDMyKEEjI2dpMSwgMyk7IFwKKyAgICBBIyNrbzAgXj0gRG8wOyBcCisgICAgQmtpMSA9IFJPTDMyKEEjI2tvMCwgMTIpOyBcCisgICAgRSMja2ExID0gICBCa2ExIF4oKH5Ca2UxKSYgIEJraTEgKTsgXAorICAgIENhMSBePSBFIyNrYTE7IFwKKyAgICBBIyNtdTEgXj0gRHUxOyBcCisgICAgQmtvMSA9IFJPTDMyKEEjI211MSwgNCk7IFwKKyAgICBFIyNrZTEgPSAgIEJrZTEgXigofkJraTEpJiAgQmtvMSApOyBcCisgICAgQ2UxIF49IEUjI2tlMTsgXAorICAgIEEjI3NhMSBePSBEYTE7IFwKKyAgICBCa3UxID0gUk9MMzIoQSMjc2ExLCA5KTsgXAorICAgIEUjI2tpMSA9ICAgQmtpMSBeKCh+QmtvMSkmICBCa3UxICk7IFwKKyAgICBDaTEgXj0gRSMja2kxOyBcCisgICAgRSMja28xID0gICBCa28xIF4oKH5Ca3UxKSYgIEJrYTEgKTsgXAorICAgIENvMSBePSBFIyNrbzE7IFwKKyAgICBFIyNrdTEgPSAgIEJrdTEgXigofkJrYTEpJiAgQmtlMSApOyBcCisgICAgQ3UxIF49IEUjI2t1MTsgXAorXAorICAgIEEjI2J1MSBePSBEdTE7IFwKKyAgICBCbWEwID0gUk9MMzIoQSMjYnUxLCAxNCk7IFwKKyAgICBBIyNnYTAgXj0gRGEwOyBcCisgICAgQm1lMCA9IFJPTDMyKEEjI2dhMCwgMTgpOyBcCisgICAgQSMja2UwIF49IERlMDsgXAorICAgIEJtaTAgPSBST0wzMihBIyNrZTAsIDUpOyBcCisgICAgRSMjbWEwID0gICBCbWEwIF4oKH5CbWUwKSYgIEJtaTAgKTsgXAorICAgIENhMCBePSBFIyNtYTA7IFwKKyAgICBBIyNtaTEgXj0gRGkxOyBcCisgICAgQm1vMCA9IFJPTDMyKEEjI21pMSwgOCk7IFwKKyAgICBFIyNtZTAgPSAgIEJtZTAgXigofkJtaTApJiAgQm1vMCApOyBcCisgICAgQ2UwIF49IEUjI21lMDsgXAorICAgIEEjI3NvMCBePSBEbzA7IFwKKyAgICBCbXUwID0gUk9MMzIoQSMjc28wLCAyOCk7IFwKKyAgICBFIyNtaTAgPSAgIEJtaTAgXigofkJtbzApJiAgQm11MCApOyBcCisgICAgQ2kwIF49IEUjI21pMDsgXAorICAgIEUjI21vMCA9ICAgQm1vMCBeKCh+Qm11MCkmICBCbWEwICk7IFwKKyAgICBDbzAgXj0gRSMjbW8wOyBcCisgICAgRSMjbXUwID0gICBCbXUwIF4oKH5CbWEwKSYgIEJtZTAgKTsgXAorICAgIEN1MCBePSBFIyNtdTA7IFwKK1wKKyAgICBBIyNidTAgXj0gRHUwOyBcCisgICAgQm1hMSA9IFJPTDMyKEEjI2J1MCwgMTMpOyBcCisgICAgQSMjZ2ExIF49IERhMTsgXAorICAgIEJtZTEgPSBST0wzMihBIyNnYTEsIDE4KTsgXAorICAgIEEjI2tlMSBePSBEZTE7IFwKKyAgICBCbWkxID0gUk9MMzIoQSMja2UxLCA1KTsgXAorICAgIEUjI21hMSA9ICAgQm1hMSBeKCh+Qm1lMSkmICBCbWkxICk7IFwKKyAgICBDYTEgXj0gRSMjbWExOyBcCisgICAgQSMjbWkwIF49IERpMDsgXAorICAgIEJtbzEgPSBST0wzMihBIyNtaTAsIDcpOyBcCisgICAgRSMjbWUxID0gICBCbWUxIF4oKH5CbWkxKSYgIEJtbzEgKTsgXAorICAgIENlMSBePSBFIyNtZTE7IFwKKyAgICBBIyNzbzEgXj0gRG8xOyBcCisgICAgQm11MSA9IFJPTDMyKEEjI3NvMSwgMjgpOyBcCisgICAgRSMjbWkxID0gICBCbWkxIF4oKH5CbW8xKSYgIEJtdTEgKTsgXAorICAgIENpMSBePSBFIyNtaTE7IFwKKyAgICBFIyNtbzEgPSAgIEJtbzEgXigofkJtdTEpJiAgQm1hMSApOyBcCisgICAgQ28xIF49IEUjI21vMTsgXAorICAgIEUjI211MSA9ICAgQm11MSBeKCh+Qm1hMSkmICBCbWUxICk7IFwKKyAgICBDdTEgXj0gRSMjbXUxOyBcCitcCisgICAgQSMjYmkwIF49IERpMDsgXAorICAgIEJzYTAgPSBST0wzMihBIyNiaTAsIDMxKTsgXAorICAgIEEjI2dvMSBePSBEbzE7IFwKKyAgICBCc2UwID0gUk9MMzIoQSMjZ28xLCAyOCk7IFwKKyAgICBBIyNrdTEgXj0gRHUxOyBcCisgICAgQnNpMCA9IFJPTDMyKEEjI2t1MSwgMjApOyBcCisgICAgRSMjc2EwID0gICBCc2EwIF4oKH5Cc2UwKSYgIEJzaTAgKTsgXAorICAgIENhMCBePSBFIyNzYTA7IFwKKyAgICBBIyNtYTEgXj0gRGExOyBcCisgICAgQnNvMCA9IFJPTDMyKEEjI21hMSwgMjEpOyBcCisgICAgRSMjc2UwID0gICBCc2UwIF4oKH5Cc2kwKSYgIEJzbzAgKTsgXAorICAgIENlMCBePSBFIyNzZTA7IFwKKyAgICBBIyNzZTAgXj0gRGUwOyBcCisgICAgQnN1MCA9IFJPTDMyKEEjI3NlMCwgMSk7IFwKKyAgICBFIyNzaTAgPSAgIEJzaTAgXigofkJzbzApJiAgQnN1MCApOyBcCisgICAgQ2kwIF49IEUjI3NpMDsgXAorICAgIEUjI3NvMCA9ICAgQnNvMCBeKCh+QnN1MCkmICBCc2EwICk7IFwKKyAgICBDbzAgXj0gRSMjc28wOyBcCisgICAgRSMjc3UwID0gICBCc3UwIF4oKH5Cc2EwKSYgIEJzZTAgKTsgXAorICAgIEN1MCBePSBFIyNzdTA7IFwKK1wKKyAgICBBIyNiaTEgXj0gRGkxOyBcCisgICAgQnNhMSA9IFJPTDMyKEEjI2JpMSwgMzEpOyBcCisgICAgQSMjZ28wIF49IERvMDsgXAorICAgIEJzZTEgPSBST0wzMihBIyNnbzAsIDI3KTsgXAorICAgIEEjI2t1MCBePSBEdTA7IFwKKyAgICBCc2kxID0gUk9MMzIoQSMja3UwLCAxOSk7IFwKKyAgICBFIyNzYTEgPSAgIEJzYTEgXigofkJzZTEpJiAgQnNpMSApOyBcCisgICAgQ2ExIF49IEUjI3NhMTsgXAorICAgIEEjI21hMCBePSBEYTA7IFwKKyAgICBCc28xID0gUk9MMzIoQSMjbWEwLCAyMCk7IFwKKyAgICBFIyNzZTEgPSAgIEJzZTEgXigofkJzaTEpJiAgQnNvMSApOyBcCisgICAgQ2UxIF49IEUjI3NlMTsgXAorICAgIEEjI3NlMSBePSBEZTE7IFwKKyAgICBCc3UxID0gUk9MMzIoQSMjc2UxLCAxKTsgXAorICAgIEUjI3NpMSA9ICAgQnNpMSBeKCh+QnNvMSkmICBCc3UxICk7IFwKKyAgICBDaTEgXj0gRSMjc2kxOyBcCisgICAgRSMjc28xID0gICBCc28xIF4oKH5Cc3UxKSYgIEJzYTEgKTsgXAorICAgIENvMSBePSBFIyNzbzE7IFwKKyAgICBFIyNzdTEgPSAgIEJzdTEgXigofkJzYTEpJiAgQnNlMSApOyBcCisgICAgQ3UxIF49IEUjI3N1MTsgXAorXAorCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kICovCisvKiAgLS0tIHVzaW5nIGZhY3RvciAyIGludGVybGVhdmluZywgNjQtYml0IGxhbmVzIG1hcHBlZCB0byAzMi1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhMCA9IEN1MF5ST0wzMihDZTEsIDEpOyBcCisgICAgRGExID0gQ3UxXkNlMDsgXAorICAgIERlMCA9IENhMF5ST0wzMihDaTEsIDEpOyBcCisgICAgRGUxID0gQ2ExXkNpMDsgXAorICAgIERpMCA9IENlMF5ST0wzMihDbzEsIDEpOyBcCisgICAgRGkxID0gQ2UxXkNvMDsgXAorICAgIERvMCA9IENpMF5ST0wzMihDdTEsIDEpOyBcCisgICAgRG8xID0gQ2kxXkN1MDsgXAorICAgIER1MCA9IENvMF5ST0wzMihDYTEsIDEpOyBcCisgICAgRHUxID0gQ28xXkNhMDsgXAorXAorICAgIEEjI2JhMCBePSBEYTA7IFwKKyAgICBCYmEwID0gQSMjYmEwOyBcCisgICAgQSMjZ2UwIF49IERlMDsgXAorICAgIEJiZTAgPSBST0wzMihBIyNnZTAsIDIyKTsgXAorICAgIEEjI2tpMSBePSBEaTE7IFwKKyAgICBCYmkwID0gUk9MMzIoQSMja2kxLCAyMik7IFwKKyAgICBFIyNiYTAgPSAgIEJiYTAgXigofkJiZTApJiAgQmJpMCApOyBcCisgICAgRSMjYmEwIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8wW2ldOyBcCisgICAgQSMjbW8xIF49IERvMTsgXAorICAgIEJibzAgPSBST0wzMihBIyNtbzEsIDExKTsgXAorICAgIEUjI2JlMCA9ICAgQmJlMCBeKCh+QmJpMCkmICBCYm8wICk7IFwKKyAgICBBIyNzdTAgXj0gRHUwOyBcCisgICAgQmJ1MCA9IFJPTDMyKEEjI3N1MCwgNyk7IFwKKyAgICBFIyNiaTAgPSAgIEJiaTAgXigofkJibzApJiAgQmJ1MCApOyBcCisgICAgRSMjYm8wID0gICBCYm8wIF4oKH5CYnUwKSYgIEJiYTAgKTsgXAorICAgIEUjI2J1MCA9ICAgQmJ1MCBeKCh+QmJhMCkmICBCYmUwICk7IFwKK1wKKyAgICBBIyNiYTEgXj0gRGExOyBcCisgICAgQmJhMSA9IEEjI2JhMTsgXAorICAgIEEjI2dlMSBePSBEZTE7IFwKKyAgICBCYmUxID0gUk9MMzIoQSMjZ2UxLCAyMik7IFwKKyAgICBBIyNraTAgXj0gRGkwOyBcCisgICAgQmJpMSA9IFJPTDMyKEEjI2tpMCwgMjEpOyBcCisgICAgRSMjYmExID0gICBCYmExIF4oKH5CYmUxKSYgIEJiaTEgKTsgXAorICAgIEUjI2JhMSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMVtpXTsgXAorICAgIEEjI21vMCBePSBEbzA7IFwKKyAgICBCYm8xID0gUk9MMzIoQSMjbW8wLCAxMCk7IFwKKyAgICBFIyNiZTEgPSAgIEJiZTEgXigofkJiaTEpJiAgQmJvMSApOyBcCisgICAgQSMjc3UxIF49IER1MTsgXAorICAgIEJidTEgPSBST0wzMihBIyNzdTEsIDcpOyBcCisgICAgRSMjYmkxID0gICBCYmkxIF4oKH5CYm8xKSYgIEJidTEgKTsgXAorICAgIEUjI2JvMSA9ICAgQmJvMSBeKCh+QmJ1MSkmICBCYmExICk7IFwKKyAgICBFIyNidTEgPSAgIEJidTEgXigofkJiYTEpJiAgQmJlMSApOyBcCitcCisgICAgQSMjYm8wIF49IERvMDsgXAorICAgIEJnYTAgPSBST0wzMihBIyNibzAsIDE0KTsgXAorICAgIEEjI2d1MCBePSBEdTA7IFwKKyAgICBCZ2UwID0gUk9MMzIoQSMjZ3UwLCAxMCk7IFwKKyAgICBBIyNrYTEgXj0gRGExOyBcCisgICAgQmdpMCA9IFJPTDMyKEEjI2thMSwgMik7IFwKKyAgICBFIyNnYTAgPSAgIEJnYTAgXigofkJnZTApJiAgQmdpMCApOyBcCisgICAgQSMjbWUxIF49IERlMTsgXAorICAgIEJnbzAgPSBST0wzMihBIyNtZTEsIDIzKTsgXAorICAgIEUjI2dlMCA9ICAgQmdlMCBeKCh+QmdpMCkmICBCZ28wICk7IFwKKyAgICBBIyNzaTEgXj0gRGkxOyBcCisgICAgQmd1MCA9IFJPTDMyKEEjI3NpMSwgMzEpOyBcCisgICAgRSMjZ2kwID0gICBCZ2kwIF4oKH5CZ28wKSYgIEJndTAgKTsgXAorICAgIEUjI2dvMCA9ICAgQmdvMCBeKCh+Qmd1MCkmICBCZ2EwICk7IFwKKyAgICBFIyNndTAgPSAgIEJndTAgXigofkJnYTApJiAgQmdlMCApOyBcCitcCisgICAgQSMjYm8xIF49IERvMTsgXAorICAgIEJnYTEgPSBST0wzMihBIyNibzEsIDE0KTsgXAorICAgIEEjI2d1MSBePSBEdTE7IFwKKyAgICBCZ2UxID0gUk9MMzIoQSMjZ3UxLCAxMCk7IFwKKyAgICBBIyNrYTAgXj0gRGEwOyBcCisgICAgQmdpMSA9IFJPTDMyKEEjI2thMCwgMSk7IFwKKyAgICBFIyNnYTEgPSAgIEJnYTEgXigofkJnZTEpJiAgQmdpMSApOyBcCisgICAgQSMjbWUwIF49IERlMDsgXAorICAgIEJnbzEgPSBST0wzMihBIyNtZTAsIDIyKTsgXAorICAgIEUjI2dlMSA9ICAgQmdlMSBeKCh+QmdpMSkmICBCZ28xICk7IFwKKyAgICBBIyNzaTAgXj0gRGkwOyBcCisgICAgQmd1MSA9IFJPTDMyKEEjI3NpMCwgMzApOyBcCisgICAgRSMjZ2kxID0gICBCZ2kxIF4oKH5CZ28xKSYgIEJndTEgKTsgXAorICAgIEUjI2dvMSA9ICAgQmdvMSBeKCh+Qmd1MSkmICBCZ2ExICk7IFwKKyAgICBFIyNndTEgPSAgIEJndTEgXigofkJnYTEpJiAgQmdlMSApOyBcCitcCisgICAgQSMjYmUxIF49IERlMTsgXAorICAgIEJrYTAgPSBST0wzMihBIyNiZTEsIDEpOyBcCisgICAgQSMjZ2kwIF49IERpMDsgXAorICAgIEJrZTAgPSBST0wzMihBIyNnaTAsIDMpOyBcCisgICAgQSMja28xIF49IERvMTsgXAorICAgIEJraTAgPSBST0wzMihBIyNrbzEsIDEzKTsgXAorICAgIEUjI2thMCA9ICAgQmthMCBeKCh+QmtlMCkmICBCa2kwICk7IFwKKyAgICBBIyNtdTAgXj0gRHUwOyBcCisgICAgQmtvMCA9IFJPTDMyKEEjI211MCwgNCk7IFwKKyAgICBFIyNrZTAgPSAgIEJrZTAgXigofkJraTApJiAgQmtvMCApOyBcCisgICAgQSMjc2EwIF49IERhMDsgXAorICAgIEJrdTAgPSBST0wzMihBIyNzYTAsIDkpOyBcCisgICAgRSMja2kwID0gICBCa2kwIF4oKH5Ca28wKSYgIEJrdTAgKTsgXAorICAgIEUjI2tvMCA9ICAgQmtvMCBeKCh+Qmt1MCkmICBCa2EwICk7IFwKKyAgICBFIyNrdTAgPSAgIEJrdTAgXigofkJrYTApJiAgQmtlMCApOyBcCitcCisgICAgQSMjYmUwIF49IERlMDsgXAorICAgIEJrYTEgPSBBIyNiZTA7IFwKKyAgICBBIyNnaTEgXj0gRGkxOyBcCisgICAgQmtlMSA9IFJPTDMyKEEjI2dpMSwgMyk7IFwKKyAgICBBIyNrbzAgXj0gRG8wOyBcCisgICAgQmtpMSA9IFJPTDMyKEEjI2tvMCwgMTIpOyBcCisgICAgRSMja2ExID0gICBCa2ExIF4oKH5Ca2UxKSYgIEJraTEgKTsgXAorICAgIEEjI211MSBePSBEdTE7IFwKKyAgICBCa28xID0gUk9MMzIoQSMjbXUxLCA0KTsgXAorICAgIEUjI2tlMSA9ICAgQmtlMSBeKCh+QmtpMSkmICBCa28xICk7IFwKKyAgICBBIyNzYTEgXj0gRGExOyBcCisgICAgQmt1MSA9IFJPTDMyKEEjI3NhMSwgOSk7IFwKKyAgICBFIyNraTEgPSAgIEJraTEgXigofkJrbzEpJiAgQmt1MSApOyBcCisgICAgRSMja28xID0gICBCa28xIF4oKH5Ca3UxKSYgIEJrYTEgKTsgXAorICAgIEUjI2t1MSA9ICAgQmt1MSBeKCh+QmthMSkmICBCa2UxICk7IFwKK1wKKyAgICBBIyNidTEgXj0gRHUxOyBcCisgICAgQm1hMCA9IFJPTDMyKEEjI2J1MSwgMTQpOyBcCisgICAgQSMjZ2EwIF49IERhMDsgXAorICAgIEJtZTAgPSBST0wzMihBIyNnYTAsIDE4KTsgXAorICAgIEEjI2tlMCBePSBEZTA7IFwKKyAgICBCbWkwID0gUk9MMzIoQSMja2UwLCA1KTsgXAorICAgIEUjI21hMCA9ICAgQm1hMCBeKCh+Qm1lMCkmICBCbWkwICk7IFwKKyAgICBBIyNtaTEgXj0gRGkxOyBcCisgICAgQm1vMCA9IFJPTDMyKEEjI21pMSwgOCk7IFwKKyAgICBFIyNtZTAgPSAgIEJtZTAgXigofkJtaTApJiAgQm1vMCApOyBcCisgICAgQSMjc28wIF49IERvMDsgXAorICAgIEJtdTAgPSBST0wzMihBIyNzbzAsIDI4KTsgXAorICAgIEUjI21pMCA9ICAgQm1pMCBeKCh+Qm1vMCkmICBCbXUwICk7IFwKKyAgICBFIyNtbzAgPSAgIEJtbzAgXigofkJtdTApJiAgQm1hMCApOyBcCisgICAgRSMjbXUwID0gICBCbXUwIF4oKH5CbWEwKSYgIEJtZTAgKTsgXAorXAorICAgIEEjI2J1MCBePSBEdTA7IFwKKyAgICBCbWExID0gUk9MMzIoQSMjYnUwLCAxMyk7IFwKKyAgICBBIyNnYTEgXj0gRGExOyBcCisgICAgQm1lMSA9IFJPTDMyKEEjI2dhMSwgMTgpOyBcCisgICAgQSMja2UxIF49IERlMTsgXAorICAgIEJtaTEgPSBST0wzMihBIyNrZTEsIDUpOyBcCisgICAgRSMjbWExID0gICBCbWExIF4oKH5CbWUxKSYgIEJtaTEgKTsgXAorICAgIEEjI21pMCBePSBEaTA7IFwKKyAgICBCbW8xID0gUk9MMzIoQSMjbWkwLCA3KTsgXAorICAgIEUjI21lMSA9ICAgQm1lMSBeKCh+Qm1pMSkmICBCbW8xICk7IFwKKyAgICBBIyNzbzEgXj0gRG8xOyBcCisgICAgQm11MSA9IFJPTDMyKEEjI3NvMSwgMjgpOyBcCisgICAgRSMjbWkxID0gICBCbWkxIF4oKH5CbW8xKSYgIEJtdTEgKTsgXAorICAgIEUjI21vMSA9ICAgQm1vMSBeKCh+Qm11MSkmICBCbWExICk7IFwKKyAgICBFIyNtdTEgPSAgIEJtdTEgXigofkJtYTEpJiAgQm1lMSApOyBcCitcCisgICAgQSMjYmkwIF49IERpMDsgXAorICAgIEJzYTAgPSBST0wzMihBIyNiaTAsIDMxKTsgXAorICAgIEEjI2dvMSBePSBEbzE7IFwKKyAgICBCc2UwID0gUk9MMzIoQSMjZ28xLCAyOCk7IFwKKyAgICBBIyNrdTEgXj0gRHUxOyBcCisgICAgQnNpMCA9IFJPTDMyKEEjI2t1MSwgMjApOyBcCisgICAgRSMjc2EwID0gICBCc2EwIF4oKH5Cc2UwKSYgIEJzaTAgKTsgXAorICAgIEEjI21hMSBePSBEYTE7IFwKKyAgICBCc28wID0gUk9MMzIoQSMjbWExLCAyMSk7IFwKKyAgICBFIyNzZTAgPSAgIEJzZTAgXigofkJzaTApJiAgQnNvMCApOyBcCisgICAgQSMjc2UwIF49IERlMDsgXAorICAgIEJzdTAgPSBST0wzMihBIyNzZTAsIDEpOyBcCisgICAgRSMjc2kwID0gICBCc2kwIF4oKH5Cc28wKSYgIEJzdTAgKTsgXAorICAgIEUjI3NvMCA9ICAgQnNvMCBeKCh+QnN1MCkmICBCc2EwICk7IFwKKyAgICBFIyNzdTAgPSAgIEJzdTAgXigofkJzYTApJiAgQnNlMCApOyBcCitcCisgICAgQSMjYmkxIF49IERpMTsgXAorICAgIEJzYTEgPSBST0wzMihBIyNiaTEsIDMxKTsgXAorICAgIEEjI2dvMCBePSBEbzA7IFwKKyAgICBCc2UxID0gUk9MMzIoQSMjZ28wLCAyNyk7IFwKKyAgICBBIyNrdTAgXj0gRHUwOyBcCisgICAgQnNpMSA9IFJPTDMyKEEjI2t1MCwgMTkpOyBcCisgICAgRSMjc2ExID0gICBCc2ExIF4oKH5Cc2UxKSYgIEJzaTEgKTsgXAorICAgIEEjI21hMCBePSBEYTA7IFwKKyAgICBCc28xID0gUk9MMzIoQSMjbWEwLCAyMCk7IFwKKyAgICBFIyNzZTEgPSAgIEJzZTEgXigofkJzaTEpJiAgQnNvMSApOyBcCisgICAgQSMjc2UxIF49IERlMTsgXAorICAgIEJzdTEgPSBST0wzMihBIyNzZTEsIDEpOyBcCisgICAgRSMjc2kxID0gICBCc2kxIF4oKH5Cc28xKSYgIEJzdTEgKTsgXAorICAgIEUjI3NvMSA9ICAgQnNvMSBeKCh+QnN1MSkmICBCc2ExICk7IFwKKyAgICBFIyNzdTEgPSAgIEJzdTEgXigofkJzYTEpJiAgQnNlMSApOyBcCitcCisKKyNlbmRpZiAvKiAgVXNlQmViaWdva2ltaXNhICovCisKK2NvbnN0IFVJTlQzMiBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJfMFsyNF0gPSB7CisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAxVUwsCisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAxVUwsCisgICAgMHgwMDAwMDAwMVVMLAorICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwKKyAgICAweDAwMDAwMDAxVUwsCisgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwKKyAgICAweDAwMDAwMDAwVUwgfTsKKworY29uc3QgVUlOVDMyIEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNfaW50Ml8xWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDA4OVVMLAorICAgIDB4ODAwMDAwOGJVTCwKKyAgICAweDgwMDA4MDgwVUwsCisgICAgMHgwMDAwMDA4YlVMLAorICAgIDB4MDAwMDgwMDBVTCwKKyAgICAweDgwMDA4MDg4VUwsCisgICAgMHg4MDAwMDA4MlVMLAorICAgIDB4MDAwMDAwMGJVTCwKKyAgICAweDAwMDAwMDBhVUwsCisgICAgMHgwMDAwODA4MlVMLAorICAgIDB4MDAwMDgwMDNVTCwKKyAgICAweDAwMDA4MDhiVUwsCisgICAgMHg4MDAwMDAwYlVMLAorICAgIDB4ODAwMDAwOGFVTCwKKyAgICAweDgwMDAwMDgxVUwsCisgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4ODAwMDAwMDhVTCwKKyAgICAweDAwMDAwMDgzVUwsCisgICAgMHg4MDAwODAwM1VMLAorICAgIDB4ODAwMDgwODhVTCwKKyAgICAweDgwMDAwMDg4VUwsCisgICAgMHgwMDAwODAwMFVMLAorICAgIDB4ODAwMDgwODJVTCB9OworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDI0Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYTAgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgWCMjYmExID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JlMCA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICBYIyNiZTEgPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgWCMjYmkwID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2JpMSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICBYIyNibzAgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgWCMjYm8xID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2J1MCA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICBYIyNidTEgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgWCMjZ2EwID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2dhMSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICBYIyNnZTAgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgWCMjZ2UxID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2dpMCA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICBYIyNnaTEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgWCMjZ28wID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgIFgjI2dvMSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICBYIyNndTAgPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgWCMjZ3UxID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgIFgjI2thMCA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICBYIyNrYTEgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgWCMja2UwID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgIFgjI2tlMSA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICBYIyNraTAgPSBzdGF0ZVsyNF1eaW5wdXRbMjRdOyBcCisgICAgWCMja2kxID0gc3RhdGVbMjVdXmlucHV0WzI1XTsgXAorICAgIFgjI2tvMCA9IHN0YXRlWzI2XV5pbnB1dFsyNl07IFwKKyAgICBYIyNrbzEgPSBzdGF0ZVsyN11eaW5wdXRbMjddOyBcCisgICAgWCMja3UwID0gc3RhdGVbMjhdXmlucHV0WzI4XTsgXAorICAgIFgjI2t1MSA9IHN0YXRlWzI5XV5pbnB1dFsyOV07IFwKKyAgICBYIyNtYTAgPSBzdGF0ZVszMF1eaW5wdXRbMzBdOyBcCisgICAgWCMjbWExID0gc3RhdGVbMzFdXmlucHV0WzMxXTsgXAorICAgIFgjI21lMCA9IHN0YXRlWzMyXTsgXAorICAgIFgjI21lMSA9IHN0YXRlWzMzXTsgXAorICAgIFgjI21pMCA9IHN0YXRlWzM0XTsgXAorICAgIFgjI21pMSA9IHN0YXRlWzM1XTsgXAorICAgIFgjI21vMCA9IHN0YXRlWzM2XTsgXAorICAgIFgjI21vMSA9IHN0YXRlWzM3XTsgXAorICAgIFgjI211MCA9IHN0YXRlWzM4XTsgXAorICAgIFgjI211MSA9IHN0YXRlWzM5XTsgXAorICAgIFgjI3NhMCA9IHN0YXRlWzQwXTsgXAorICAgIFgjI3NhMSA9IHN0YXRlWzQxXTsgXAorICAgIFgjI3NlMCA9IHN0YXRlWzQyXTsgXAorICAgIFgjI3NlMSA9IHN0YXRlWzQzXTsgXAorICAgIFgjI3NpMCA9IHN0YXRlWzQ0XTsgXAorICAgIFgjI3NpMSA9IHN0YXRlWzQ1XTsgXAorICAgIFgjI3NvMCA9IHN0YXRlWzQ2XTsgXAorICAgIFgjI3NvMSA9IHN0YXRlWzQ3XTsgXAorICAgIFgjI3N1MCA9IHN0YXRlWzQ4XTsgXAorICAgIFgjI3N1MSA9IHN0YXRlWzQ5XTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDg4Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYTAgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgWCMjYmExID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JlMCA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICBYIyNiZTEgPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgWCMjYmkwID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2JpMSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICBYIyNibzAgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgWCMjYm8xID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2J1MCA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICBYIyNidTEgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgWCMjZ2EwID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2dhMSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICBYIyNnZTAgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgWCMjZ2UxID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2dpMCA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICBYIyNnaTEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgWCMjZ28wID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgIFgjI2dvMSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICBYIyNndTAgPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgWCMjZ3UxID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgIFgjI2thMCA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICBYIyNrYTEgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgWCMja2UwID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgIFgjI2tlMSA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICBYIyNraTAgPSBzdGF0ZVsyNF1eaW5wdXRbMjRdOyBcCisgICAgWCMja2kxID0gc3RhdGVbMjVdXmlucHV0WzI1XTsgXAorICAgIFgjI2tvMCA9IHN0YXRlWzI2XV5pbnB1dFsyNl07IFwKKyAgICBYIyNrbzEgPSBzdGF0ZVsyN11eaW5wdXRbMjddOyBcCisgICAgWCMja3UwID0gc3RhdGVbMjhdXmlucHV0WzI4XTsgXAorICAgIFgjI2t1MSA9IHN0YXRlWzI5XV5pbnB1dFsyOV07IFwKKyAgICBYIyNtYTAgPSBzdGF0ZVszMF1eaW5wdXRbMzBdOyBcCisgICAgWCMjbWExID0gc3RhdGVbMzFdXmlucHV0WzMxXTsgXAorICAgIFgjI21lMCA9IHN0YXRlWzMyXV5pbnB1dFszMl07IFwKKyAgICBYIyNtZTEgPSBzdGF0ZVszM11eaW5wdXRbMzNdOyBcCisgICAgWCMjbWkwID0gc3RhdGVbMzRdOyBcCisgICAgWCMjbWkxID0gc3RhdGVbMzVdOyBcCisgICAgWCMjbW8wID0gc3RhdGVbMzZdOyBcCisgICAgWCMjbW8xID0gc3RhdGVbMzddOyBcCisgICAgWCMjbXUwID0gc3RhdGVbMzhdOyBcCisgICAgWCMjbXUxID0gc3RhdGVbMzldOyBcCisgICAgWCMjc2EwID0gc3RhdGVbNDBdOyBcCisgICAgWCMjc2ExID0gc3RhdGVbNDFdOyBcCisgICAgWCMjc2UwID0gc3RhdGVbNDJdOyBcCisgICAgWCMjc2UxID0gc3RhdGVbNDNdOyBcCisgICAgWCMjc2kwID0gc3RhdGVbNDRdOyBcCisgICAgWCMjc2kxID0gc3RhdGVbNDVdOyBcCisgICAgWCMjc28wID0gc3RhdGVbNDZdOyBcCisgICAgWCMjc28xID0gc3RhdGVbNDddOyBcCisgICAgWCMjc3UwID0gc3RhdGVbNDhdOyBcCisgICAgWCMjc3UxID0gc3RhdGVbNDldOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhMCA9IHN0YXRlWyAwXTsgXAorICAgIFgjI2JhMSA9IHN0YXRlWyAxXTsgXAorICAgIFgjI2JlMCA9IHN0YXRlWyAyXTsgXAorICAgIFgjI2JlMSA9IHN0YXRlWyAzXTsgXAorICAgIFgjI2JpMCA9IHN0YXRlWyA0XTsgXAorICAgIFgjI2JpMSA9IHN0YXRlWyA1XTsgXAorICAgIFgjI2JvMCA9IHN0YXRlWyA2XTsgXAorICAgIFgjI2JvMSA9IHN0YXRlWyA3XTsgXAorICAgIFgjI2J1MCA9IHN0YXRlWyA4XTsgXAorICAgIFgjI2J1MSA9IHN0YXRlWyA5XTsgXAorICAgIFgjI2dhMCA9IHN0YXRlWzEwXTsgXAorICAgIFgjI2dhMSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2dlMCA9IHN0YXRlWzEyXTsgXAorICAgIFgjI2dlMSA9IHN0YXRlWzEzXTsgXAorICAgIFgjI2dpMCA9IHN0YXRlWzE0XTsgXAorICAgIFgjI2dpMSA9IHN0YXRlWzE1XTsgXAorICAgIFgjI2dvMCA9IHN0YXRlWzE2XTsgXAorICAgIFgjI2dvMSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI2d1MCA9IHN0YXRlWzE4XTsgXAorICAgIFgjI2d1MSA9IHN0YXRlWzE5XTsgXAorICAgIFgjI2thMCA9IHN0YXRlWzIwXTsgXAorICAgIFgjI2thMSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI2tlMCA9IHN0YXRlWzIyXTsgXAorICAgIFgjI2tlMSA9IHN0YXRlWzIzXTsgXAorICAgIFgjI2tpMCA9IHN0YXRlWzI0XTsgXAorICAgIFgjI2tpMSA9IHN0YXRlWzI1XTsgXAorICAgIFgjI2tvMCA9IHN0YXRlWzI2XTsgXAorICAgIFgjI2tvMSA9IHN0YXRlWzI3XTsgXAorICAgIFgjI2t1MCA9IHN0YXRlWzI4XTsgXAorICAgIFgjI2t1MSA9IHN0YXRlWzI5XTsgXAorICAgIFgjI21hMCA9IHN0YXRlWzMwXTsgXAorICAgIFgjI21hMSA9IHN0YXRlWzMxXTsgXAorICAgIFgjI21lMCA9IHN0YXRlWzMyXTsgXAorICAgIFgjI21lMSA9IHN0YXRlWzMzXTsgXAorICAgIFgjI21pMCA9IHN0YXRlWzM0XTsgXAorICAgIFgjI21pMSA9IHN0YXRlWzM1XTsgXAorICAgIFgjI21vMCA9IHN0YXRlWzM2XTsgXAorICAgIFgjI21vMSA9IHN0YXRlWzM3XTsgXAorICAgIFgjI211MCA9IHN0YXRlWzM4XTsgXAorICAgIFgjI211MSA9IHN0YXRlWzM5XTsgXAorICAgIFgjI3NhMCA9IHN0YXRlWzQwXTsgXAorICAgIFgjI3NhMSA9IHN0YXRlWzQxXTsgXAorICAgIFgjI3NlMCA9IHN0YXRlWzQyXTsgXAorICAgIFgjI3NlMSA9IHN0YXRlWzQzXTsgXAorICAgIFgjI3NpMCA9IHN0YXRlWzQ0XTsgXAorICAgIFgjI3NpMSA9IHN0YXRlWzQ1XTsgXAorICAgIFgjI3NvMCA9IHN0YXRlWzQ2XTsgXAorICAgIFgjI3NvMSA9IHN0YXRlWzQ3XTsgXAorICAgIFgjI3N1MCA9IHN0YXRlWzQ4XTsgXAorICAgIFgjI3N1MSA9IHN0YXRlWzQ5XTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gWCMjYmEwOyBcCisgICAgc3RhdGVbIDFdID0gWCMjYmExOyBcCisgICAgc3RhdGVbIDJdID0gWCMjYmUwOyBcCisgICAgc3RhdGVbIDNdID0gWCMjYmUxOyBcCisgICAgc3RhdGVbIDRdID0gWCMjYmkwOyBcCisgICAgc3RhdGVbIDVdID0gWCMjYmkxOyBcCisgICAgc3RhdGVbIDZdID0gWCMjYm8wOyBcCisgICAgc3RhdGVbIDddID0gWCMjYm8xOyBcCisgICAgc3RhdGVbIDhdID0gWCMjYnUwOyBcCisgICAgc3RhdGVbIDldID0gWCMjYnUxOyBcCisgICAgc3RhdGVbMTBdID0gWCMjZ2EwOyBcCisgICAgc3RhdGVbMTFdID0gWCMjZ2ExOyBcCisgICAgc3RhdGVbMTJdID0gWCMjZ2UwOyBcCisgICAgc3RhdGVbMTNdID0gWCMjZ2UxOyBcCisgICAgc3RhdGVbMTRdID0gWCMjZ2kwOyBcCisgICAgc3RhdGVbMTVdID0gWCMjZ2kxOyBcCisgICAgc3RhdGVbMTZdID0gWCMjZ28wOyBcCisgICAgc3RhdGVbMTddID0gWCMjZ28xOyBcCisgICAgc3RhdGVbMThdID0gWCMjZ3UwOyBcCisgICAgc3RhdGVbMTldID0gWCMjZ3UxOyBcCisgICAgc3RhdGVbMjBdID0gWCMja2EwOyBcCisgICAgc3RhdGVbMjFdID0gWCMja2ExOyBcCisgICAgc3RhdGVbMjJdID0gWCMja2UwOyBcCisgICAgc3RhdGVbMjNdID0gWCMja2UxOyBcCisgICAgc3RhdGVbMjRdID0gWCMja2kwOyBcCisgICAgc3RhdGVbMjVdID0gWCMja2kxOyBcCisgICAgc3RhdGVbMjZdID0gWCMja28wOyBcCisgICAgc3RhdGVbMjddID0gWCMja28xOyBcCisgICAgc3RhdGVbMjhdID0gWCMja3UwOyBcCisgICAgc3RhdGVbMjldID0gWCMja3UxOyBcCisgICAgc3RhdGVbMzBdID0gWCMjbWEwOyBcCisgICAgc3RhdGVbMzFdID0gWCMjbWExOyBcCisgICAgc3RhdGVbMzJdID0gWCMjbWUwOyBcCisgICAgc3RhdGVbMzNdID0gWCMjbWUxOyBcCisgICAgc3RhdGVbMzRdID0gWCMjbWkwOyBcCisgICAgc3RhdGVbMzVdID0gWCMjbWkxOyBcCisgICAgc3RhdGVbMzZdID0gWCMjbW8wOyBcCisgICAgc3RhdGVbMzddID0gWCMjbW8xOyBcCisgICAgc3RhdGVbMzhdID0gWCMjbXUwOyBcCisgICAgc3RhdGVbMzldID0gWCMjbXUxOyBcCisgICAgc3RhdGVbNDBdID0gWCMjc2EwOyBcCisgICAgc3RhdGVbNDFdID0gWCMjc2ExOyBcCisgICAgc3RhdGVbNDJdID0gWCMjc2UwOyBcCisgICAgc3RhdGVbNDNdID0gWCMjc2UxOyBcCisgICAgc3RhdGVbNDRdID0gWCMjc2kwOyBcCisgICAgc3RhdGVbNDVdID0gWCMjc2kxOyBcCisgICAgc3RhdGVbNDZdID0gWCMjc28wOyBcCisgICAgc3RhdGVbNDddID0gWCMjc28xOyBcCisgICAgc3RhdGVbNDhdID0gWCMjc3UwOyBcCisgICAgc3RhdGVbNDldID0gWCMjc3UxOyBcCisKKyNkZWZpbmUgY29weVN0YXRlVmFyaWFibGVzKFgsIFkpIFwKKyAgICBYIyNiYTAgPSBZIyNiYTA7IFwKKyAgICBYIyNiYTEgPSBZIyNiYTE7IFwKKyAgICBYIyNiZTAgPSBZIyNiZTA7IFwKKyAgICBYIyNiZTEgPSBZIyNiZTE7IFwKKyAgICBYIyNiaTAgPSBZIyNiaTA7IFwKKyAgICBYIyNiaTEgPSBZIyNiaTE7IFwKKyAgICBYIyNibzAgPSBZIyNibzA7IFwKKyAgICBYIyNibzEgPSBZIyNibzE7IFwKKyAgICBYIyNidTAgPSBZIyNidTA7IFwKKyAgICBYIyNidTEgPSBZIyNidTE7IFwKKyAgICBYIyNnYTAgPSBZIyNnYTA7IFwKKyAgICBYIyNnYTEgPSBZIyNnYTE7IFwKKyAgICBYIyNnZTAgPSBZIyNnZTA7IFwKKyAgICBYIyNnZTEgPSBZIyNnZTE7IFwKKyAgICBYIyNnaTAgPSBZIyNnaTA7IFwKKyAgICBYIyNnaTEgPSBZIyNnaTE7IFwKKyAgICBYIyNnbzAgPSBZIyNnbzA7IFwKKyAgICBYIyNnbzEgPSBZIyNnbzE7IFwKKyAgICBYIyNndTAgPSBZIyNndTA7IFwKKyAgICBYIyNndTEgPSBZIyNndTE7IFwKKyAgICBYIyNrYTAgPSBZIyNrYTA7IFwKKyAgICBYIyNrYTEgPSBZIyNrYTE7IFwKKyAgICBYIyNrZTAgPSBZIyNrZTA7IFwKKyAgICBYIyNrZTEgPSBZIyNrZTE7IFwKKyAgICBYIyNraTAgPSBZIyNraTA7IFwKKyAgICBYIyNraTEgPSBZIyNraTE7IFwKKyAgICBYIyNrbzAgPSBZIyNrbzA7IFwKKyAgICBYIyNrbzEgPSBZIyNrbzE7IFwKKyAgICBYIyNrdTAgPSBZIyNrdTA7IFwKKyAgICBYIyNrdTEgPSBZIyNrdTE7IFwKKyAgICBYIyNtYTAgPSBZIyNtYTA7IFwKKyAgICBYIyNtYTEgPSBZIyNtYTE7IFwKKyAgICBYIyNtZTAgPSBZIyNtZTA7IFwKKyAgICBYIyNtZTEgPSBZIyNtZTE7IFwKKyAgICBYIyNtaTAgPSBZIyNtaTA7IFwKKyAgICBYIyNtaTEgPSBZIyNtaTE7IFwKKyAgICBYIyNtbzAgPSBZIyNtbzA7IFwKKyAgICBYIyNtbzEgPSBZIyNtbzE7IFwKKyAgICBYIyNtdTAgPSBZIyNtdTA7IFwKKyAgICBYIyNtdTEgPSBZIyNtdTE7IFwKKyAgICBYIyNzYTAgPSBZIyNzYTA7IFwKKyAgICBYIyNzYTEgPSBZIyNzYTE7IFwKKyAgICBYIyNzZTAgPSBZIyNzZTA7IFwKKyAgICBYIyNzZTEgPSBZIyNzZTE7IFwKKyAgICBYIyNzaTAgPSBZIyNzaTA7IFwKKyAgICBYIyNzaTEgPSBZIyNzaTE7IFwKKyAgICBYIyNzbzAgPSBZIyNzbzA7IFwKKyAgICBYIyNzbzEgPSBZIyNzbzE7IFwKKyAgICBYIyNzdTAgPSBZIyNzdTA7IFwKKyAgICBYIyNzdTEgPSBZIyNzdTE7IFwKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLTMyLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFkZTYwMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC0zMi5tYWNyb3MKQEAgLTAsMCArMSwyNiBAQAorLyoKK1RoZSBLZWNjYWsgc3BvbmdlIGZ1bmN0aW9uLCBkZXNpZ25lZCBieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1lbiwKK01pY2hhw6tsIFBlZXRlcnMgYW5kIEdpbGxlcyBWYW4gQXNzY2hlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IKK3F1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlOiBodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgZGVzaWduZXJzLAoraGVyZWJ5IGRlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpZmRlZiBVc2VTY2hlZHVsZQorICAgICNpZiAoVXNlU2NoZWR1bGUgPT0gMSkKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha0YtMTYwMC0zMi1zMS5tYWNyb3MiCisgICAgI2VsaWYgKFVzZVNjaGVkdWxlID09IDIpCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtGLTE2MDAtMzItczIubWFjcm9zIgorICAgICNlbGlmIChVc2VTY2hlZHVsZSA9PSAzKQorICAgICAgICAjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLTMyLXJ2ay5tYWNyb3MiCisgICAgI2Vsc2UKKyAgICAgICAgI2Vycm9yICJUaGlzIHNjaGVkdWxlIGlzIG5vdCBzdXBwb3J0ZWQuIgorICAgICNlbmRpZgorI2Vsc2UKKyAgICAjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLTMyLXMxLm1hY3JvcyIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLTY0Lm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC02NC5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMwZjc4OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC02NC5tYWNyb3MKQEAgLTAsMCArMSw3MjggQEAKKy8qCitDb2RlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IEtlY2Nha1Rvb2xzIQorCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjZGVmaW5lIGRlY2xhcmVBQkNERSBcCisgICAgVUlOVDY0IEFiYSwgQWJlLCBBYmksIEFibywgQWJ1OyBcCisgICAgVUlOVDY0IEFnYSwgQWdlLCBBZ2ksIEFnbywgQWd1OyBcCisgICAgVUlOVDY0IEFrYSwgQWtlLCBBa2ksIEFrbywgQWt1OyBcCisgICAgVUlOVDY0IEFtYSwgQW1lLCBBbWksIEFtbywgQW11OyBcCisgICAgVUlOVDY0IEFzYSwgQXNlLCBBc2ksIEFzbywgQXN1OyBcCisgICAgVUlOVDY0IEJiYSwgQmJlLCBCYmksIEJibywgQmJ1OyBcCisgICAgVUlOVDY0IEJnYSwgQmdlLCBCZ2ksIEJnbywgQmd1OyBcCisgICAgVUlOVDY0IEJrYSwgQmtlLCBCa2ksIEJrbywgQmt1OyBcCisgICAgVUlOVDY0IEJtYSwgQm1lLCBCbWksIEJtbywgQm11OyBcCisgICAgVUlOVDY0IEJzYSwgQnNlLCBCc2ksIEJzbywgQnN1OyBcCisgICAgVUlOVDY0IENhLCBDZSwgQ2ksIENvLCBDdTsgXAorICAgIFVJTlQ2NCBEYSwgRGUsIERpLCBEbywgRHU7IFwKKyAgICBVSU5UNjQgRWJhLCBFYmUsIEViaSwgRWJvLCBFYnU7IFwKKyAgICBVSU5UNjQgRWdhLCBFZ2UsIEVnaSwgRWdvLCBFZ3U7IFwKKyAgICBVSU5UNjQgRWthLCBFa2UsIEVraSwgRWtvLCBFa3U7IFwKKyAgICBVSU5UNjQgRW1hLCBFbWUsIEVtaSwgRW1vLCBFbXU7IFwKKyAgICBVSU5UNjQgRXNhLCBFc2UsIEVzaSwgRXNvLCBFc3U7IFwKKworI2RlZmluZSBwcmVwYXJlVGhldGEgXAorICAgIENhID0gQWJhXkFnYV5Ba2FeQW1hXkFzYTsgXAorICAgIENlID0gQWJlXkFnZV5Ba2VeQW1lXkFzZTsgXAorICAgIENpID0gQWJpXkFnaV5Ba2leQW1pXkFzaTsgXAorICAgIENvID0gQWJvXkFnb15Ba29eQW1vXkFzbzsgXAorICAgIEN1ID0gQWJ1XkFndV5Ba3VeQW11XkFzdTsgXAorCisjaWZkZWYgVXNlQmViaWdva2ltaXNhCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworLyogIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSl8ICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXiggIEJiYSAmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCAgQmdpICYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCAgQmdhICYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCAgQm1lICYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAofkJtbyleKCAgQm11ICYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICh+QnNlKV4oICBCc2kgfCAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oICBCc2EgJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kIChsYW5lIGNvbXBsZW1lbnRpbmcgcGF0dGVybiAnYmViaWdva2ltaXNhJykgKi8KKy8qICAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCAgQmJlIHwgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSl8ICBCYm8gKTsgXAorICAgIEUjI2JpID0gICBCYmkgXiggIEJibyAmICBCYnUgKTsgXAorICAgIEUjI2JvID0gICBCYm8gXiggIEJidSB8ICBCYmEgKTsgXAorICAgIEUjI2J1ID0gICBCYnUgXiggIEJiYSAmICBCYmUgKTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCAgQmdlIHwgIEJnaSApOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCAgQmdpICYgIEJnbyApOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCAgQmdvIHwofkJndSkpOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCAgQmd1IHwgIEJnYSApOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCAgQmdhICYgIEJnZSApOyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCAgQmtlIHwgIEJraSApOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCAgQmtpICYgIEJrbyApOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgRSMja28gPSAofkJrbyleKCAgQmt1IHwgIEJrYSApOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCAgQmthICYgIEJrZSApOyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCAgQm1lICYgIEJtaSApOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCAgQm1pIHwgIEJtbyApOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKXwgIEJtdSApOyBcCisgICAgRSMjbW8gPSAofkJtbyleKCAgQm11ICYgIEJtYSApOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCAgQm1hIHwgIEJtZSApOyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBFIyNzZSA9ICh+QnNlKV4oICBCc2kgfCAgQnNvICk7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oICBCc28gJiAgQnN1ICk7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oICBCc3UgfCAgQnNhICk7IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oICBCc2EgJiAgQnNlICk7IFwKK1wKKworI2Vsc2UgLyogIFVzZUJlYmlnb2tpbWlzYSAqLworLyogIC0tLSBDb2RlIGZvciByb3VuZCwgd2l0aCBwcmVwYXJlLXRoZXRhICovCisvKiAgLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXigofkJiZSkmICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBDYSA9IEUjI2JhOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKSYgIEJibyApOyBcCisgICAgQ2UgPSBFIyNiZTsgXAorICAgIEUjI2JpID0gICBCYmkgXigofkJibykmICBCYnUgKTsgXAorICAgIENpID0gRSMjYmk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oKH5CYnUpJiAgQmJhICk7IFwKKyAgICBDbyA9IEUjI2JvOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCh+QmJhKSYgIEJiZSApOyBcCisgICAgQ3UgPSBFIyNidTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCh+QmdlKSYgIEJnaSApOyBcCisgICAgQ2EgXj0gRSMjZ2E7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oKH5CZ2kpJiAgQmdvICk7IFwKKyAgICBDZSBePSBFIyNnZTsgXAorICAgIEUjI2dpID0gICBCZ2kgXigofkJnbykmICBCZ3UgKTsgXAorICAgIENpIF49IEUjI2dpOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCh+Qmd1KSYgIEJnYSApOyBcCisgICAgQ28gXj0gRSMjZ287IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oKH5CZ2EpJiAgQmdlICk7IFwKKyAgICBDdSBePSBFIyNndTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXigofkJrZSkmICBCa2kgKTsgXAorICAgIENhIF49IEUjI2thOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCh+QmtpKSYgIEJrbyApOyBcCisgICAgQ2UgXj0gRSMja2U7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBDaSBePSBFIyNraTsgXAorICAgIEUjI2tvID0gICBCa28gXigofkJrdSkmICBCa2EgKTsgXAorICAgIENvIF49IEUjI2tvOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCh+QmthKSYgIEJrZSApOyBcCisgICAgQ3UgXj0gRSMja3U7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oKH5CbWUpJiAgQm1pICk7IFwKKyAgICBDYSBePSBFIyNtYTsgXAorICAgIEUjI21lID0gICBCbWUgXigofkJtaSkmICBCbW8gKTsgXAorICAgIENlIF49IEUjI21lOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKSYgIEJtdSApOyBcCisgICAgQ2kgXj0gRSMjbWk7IFwKKyAgICBFIyNtbyA9ICAgQm1vIF4oKH5CbXUpJiAgQm1hICk7IFwKKyAgICBDbyBePSBFIyNtbzsgXAorICAgIEUjI211ID0gICBCbXUgXigofkJtYSkmICBCbWUgKTsgXAorICAgIEN1IF49IEUjI211OyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBDYSBePSBFIyNzYTsgXAorICAgIEUjI3NlID0gICBCc2UgXigofkJzaSkmICBCc28gKTsgXAorICAgIENlIF49IEUjI3NlOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCh+QnNvKSYgIEJzdSApOyBcCisgICAgQ2kgXj0gRSMjc2k7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oKH5Cc3UpJiAgQnNhICk7IFwKKyAgICBDbyBePSBFIyNzbzsgXAorICAgIEUjI3N1ID0gICBCc3UgXigofkJzYSkmICBCc2UgKTsgXAorICAgIEN1IF49IEUjI3N1OyBcCitcCisKKy8qICAtLS0gQ29kZSBmb3Igcm91bmQgKi8KKy8qICAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIEUjI2JpID0gICBCYmkgXigofkJibykmICBCYnUgKTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCh+QmdlKSYgIEJnaSApOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCh+Qmd1KSYgIEJnYSApOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCh+QmtpKSYgIEJrbyApOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCh+QmthKSYgIEJrZSApOyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKSYgIEJtdSApOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oKH5Cc3UpJiAgQnNhICk7IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKK1wKKworI2VuZGlmIC8qICBVc2VCZWJpZ29raW1pc2EgKi8KKworc3RhdGljIGNvbnN0IFVJTlQ2NCBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwMDAwMDAwMDFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDgyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4YVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDhiVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4YVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwODhVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4OVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDNVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4MFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODBVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwOFVMTCB9OworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3I1NzZiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjgzMmJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgWCMjZ2kgPSBzdGF0ZVsgN11eaW5wdXRbIDddOyBcCisgICAgWCMjZ28gPSBzdGF0ZVsgOF1eaW5wdXRbIDhdOyBcCisgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgWCMja2EgPSBzdGF0ZVsxMF1eaW5wdXRbMTBdOyBcCisgICAgWCMja2UgPSBzdGF0ZVsxMV1eaW5wdXRbMTFdOyBcCisgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjEwMjRiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdXmlucHV0WzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdXmlucHV0WzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDg4Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICBYIyNiZSA9IHN0YXRlWyAxXV5pbnB1dFsgMV07IFwKKyAgICBYIyNiaSA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICBYIyNnYSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICBYIyNnaSA9IHN0YXRlWyA3XV5pbnB1dFsgN107IFwKKyAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICBYIyNrbyA9IHN0YXRlWzEzXV5pbnB1dFsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICBYIyNtYSA9IHN0YXRlWzE1XV5pbnB1dFsxNV07IFwKKyAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjExNTJiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdXmlucHV0WzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdXmlucHV0WzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjEzNDRiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdXmlucHV0WzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdXmlucHV0WzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgIFgjI211ID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdOyBcCisgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weVRvU3RhdGUoc3RhdGUsIFgpIFwKKyAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorCisjZGVmaW5lIGNvcHlTdGF0ZVZhcmlhYmxlcyhYLCBZKSBcCisgICAgWCMjYmEgPSBZIyNiYTsgXAorICAgIFgjI2JlID0gWSMjYmU7IFwKKyAgICBYIyNiaSA9IFkjI2JpOyBcCisgICAgWCMjYm8gPSBZIyNibzsgXAorICAgIFgjI2J1ID0gWSMjYnU7IFwKKyAgICBYIyNnYSA9IFkjI2dhOyBcCisgICAgWCMjZ2UgPSBZIyNnZTsgXAorICAgIFgjI2dpID0gWSMjZ2k7IFwKKyAgICBYIyNnbyA9IFkjI2dvOyBcCisgICAgWCMjZ3UgPSBZIyNndTsgXAorICAgIFgjI2thID0gWSMja2E7IFwKKyAgICBYIyNrZSA9IFkjI2tlOyBcCisgICAgWCMja2kgPSBZIyNraTsgXAorICAgIFgjI2tvID0gWSMja287IFwKKyAgICBYIyNrdSA9IFkjI2t1OyBcCisgICAgWCMjbWEgPSBZIyNtYTsgXAorICAgIFgjI21lID0gWSMjbWU7IFwKKyAgICBYIyNtaSA9IFkjI21pOyBcCisgICAgWCMjbW8gPSBZIyNtbzsgXAorICAgIFgjI211ID0gWSMjbXU7IFwKKyAgICBYIyNzYSA9IFkjI3NhOyBcCisgICAgWCMjc2UgPSBZIyNzZTsgXAorICAgIFgjI3NpID0gWSMjc2k7IFwKKyAgICBYIyNzbyA9IFkjI3NvOyBcCisgICAgWCMjc3UgPSBZIyNzdTsgXAorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtaW50LXNldC5oIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLWludC1zZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWQxZDgwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLWludC1zZXQuaApAQCAtMCwwICsxLDYgQEAKKyNkZWZpbmUgUHJvdmlkZUZhc3Q1NzYKKyNkZWZpbmUgUHJvdmlkZUZhc3Q4MzIKKyNkZWZpbmUgUHJvdmlkZUZhc3QxMDI0CisjZGVmaW5lIFByb3ZpZGVGYXN0MTA4OAorI2RlZmluZSBQcm92aWRlRmFzdDExNTIKKyNkZWZpbmUgUHJvdmlkZUZhc3QxMzQ0CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtaW50ZXJmYWNlLmggYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtaW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UyNzEwZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC1pbnRlcmZhY2UuaApAQCAtMCwwICsxLDQ2IEBACisvKgorVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCitoZXJlYnkgZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUGVybXV0YXRpb25JbnRlcmZhY2VfaF8KKyNkZWZpbmUgX0tlY2Nha1Blcm11dGF0aW9uSW50ZXJmYWNlX2hfCisKKyNpbmNsdWRlICJLZWNjYWtGLTE2MDAtaW50LXNldC5oIgorCitzdGF0aWMgdm9pZCBLZWNjYWtJbml0aWFsaXplKCB2b2lkICk7CitzdGF0aWMgdm9pZCBLZWNjYWtJbml0aWFsaXplU3RhdGUodW5zaWduZWQgY2hhciAqc3RhdGUpOworc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb24odW5zaWduZWQgY2hhciAqc3RhdGUpOworI2lmZGVmIFByb3ZpZGVGYXN0NTc2CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmI1NzZiaXRzKHVuc2lnbmVkIGNoYXIgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKKyNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0ODMyCitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmI4MzJiaXRzKHVuc2lnbmVkIGNoYXIgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKKyNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorc3RhdGljIHZvaWQgS2VjY2FrQWJzb3JiMTAyNGJpdHModW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpOworI2VuZGlmCisjaWZkZWYgUHJvdmlkZUZhc3QxMDg4CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIxMDg4Yml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSk7CisjZW5kaWYKKyNpZmRlZiBQcm92aWRlRmFzdDExNTIKK3N0YXRpYyB2b2lkIEtlY2Nha0Fic29yYjExNTJiaXRzKHVuc2lnbmVkIGNoYXIgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKKyNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0MTM0NAorc3RhdGljIHZvaWQgS2VjY2FrQWJzb3JiMTM0NGJpdHModW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpOworI2VuZGlmCitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIodW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpOworI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorc3RhdGljIHZvaWQgS2VjY2FrRXh0cmFjdDEwMjRiaXRzKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKKyNlbmRpZgorc3RhdGljIHZvaWQgS2VjY2FrRXh0cmFjdChjb25zdCB1bnNpZ25lZCBjaGFyICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDMyLXNldHRpbmdzLmggYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtb3B0MzItc2V0dGluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTVjNzgyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDMyLXNldHRpbmdzLmgKQEAgLTAsMCArMSw2IEBACisvKgorI2RlZmluZSBVbnJvbGxpbmcgMgorI2RlZmluZSBVc2VCZWJpZ29raW1pc2EKKyNkZWZpbmUgVXNlSW50ZXJsZWF2ZVRhYmxlcworI2RlZmluZSBVc2VTY2hlZHVsZSAzCisqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDMyLmMgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtb3B0MzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmE2ZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDMyLmMKQEAgLTAsMCArMSw1MjQgQEAKKy8qCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha0YtMTYwMC1vcHQzMi1zZXR0aW5ncy5oIgorI2luY2x1ZGUgIktlY2Nha0YtMTYwMC1pbnRlcmZhY2UuaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVSU5UMTY7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMzI7CisvKiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgVUlOVDY0OyAqLworCisjaWZkZWYgVXNlSW50ZXJsZWF2ZVRhYmxlcworc3RhdGljIGludCBpbnRlcmxlYXZlVGFibGVzQnVpbHQgPSAwOworc3RhdGljIFVJTlQxNiBpbnRlcmxlYXZlVGFibGVbNjU1MzZdOworc3RhdGljIFVJTlQxNiBkZWludGVybGVhdmVUYWJsZVs2NTUzNl07CisKK3N0YXRpYyB2b2lkIGJ1aWxkSW50ZXJsZWF2ZVRhYmxlcygpCit7CisgICAgVUlOVDMyIGksIGo7CisgICAgVUlOVDE2IHg7CisKKyAgICBpZiAoIWludGVybGVhdmVUYWJsZXNCdWlsdCkgeworICAgICAgICBmb3IoaT0wOyBpPDY1NTM2OyBpKyspIHsKKyAgICAgICAgICAgIHggPSAwOworICAgICAgICAgICAgZm9yKGo9MDsgajwxNjsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgJiAoMSA8PCBqKSkKKyAgICAgICAgICAgICAgICAgICAgeCB8PSAoMSA8PCAoai8yICsgOCooaiUyKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50ZXJsZWF2ZVRhYmxlW2ldID0geDsKKyAgICAgICAgICAgIGRlaW50ZXJsZWF2ZVRhYmxlW3hdID0gKFVJTlQxNilpOworICAgICAgICB9CisgICAgICAgIGludGVybGVhdmVUYWJsZXNCdWlsdCA9IDE7CisgICAgfQorfQorCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKworI2RlZmluZSB4b3IyYnl0ZXNJbnRvSW50ZXJsZWF2ZWRXb3JkcyhldmVuLCBvZGQsIHNvdXJjZSwgaikgXAorICAgIGkjI2ogPSBpbnRlcmxlYXZlVGFibGVbKChjb25zdCBVSU5UMTYqKXNvdXJjZSlbal1dOyBcCisgICAgKChVSU5UOCopZXZlbilbal0gXj0gaSMjaiAmIDB4RkY7IFwKKyAgICAoKFVJTlQ4KilvZGQpW2pdIF49IGkjI2ogPj4gODsKKworI2RlZmluZSBzZXRJbnRlcmxlYXZlZFdvcmRzSW50bzJieXRlcyhkZXN0LCBldmVuLCBvZGQsIGopIFwKKyAgICBkIyNqID0gZGVpbnRlcmxlYXZlVGFibGVbKChldmVuID4+IChqKjgpKSAmIDB4RkYpIF4gKCgob2RkID4+IChqKjgpKSAmIDB4RkYpIDw8IDgpXTsgXAorICAgICgoVUlOVDE2KilkZXN0KVtqXSA9IGQjI2o7CisKKyNlbHNlIC8qICAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19CSUdfRU5ESUFOKSAqLworCisjZGVmaW5lIHhvcjJieXRlc0ludG9JbnRlcmxlYXZlZFdvcmRzKGV2ZW4sIG9kZCwgc291cmNlLCBqKSBcCisgICAgaSMjaiA9IGludGVybGVhdmVUYWJsZVtzb3VyY2VbMipqXSBeICgoVUlOVDE2KXNvdXJjZVsyKmorMV0gPDwgOCldOyBcCisgICAgKmV2ZW4gXj0gKGkjI2ogJiAweEZGKSA8PCAoaio4KTsgXAorICAgICpvZGQgXj0gKChpIyNqID4+IDgpICYgMHhGRikgPDwgKGoqOCk7CisKKyNkZWZpbmUgc2V0SW50ZXJsZWF2ZWRXb3Jkc0ludG8yYnl0ZXMoZGVzdCwgZXZlbiwgb2RkLCBqKSBcCisgICAgZCMjaiA9IGRlaW50ZXJsZWF2ZVRhYmxlWygoZXZlbiA+PiAoaio4KSkgJiAweEZGKSBeICgoKG9kZCA+PiAoaio4KSkgJiAweEZGKSA8PCA4KV07IFwKKyAgICBkZXN0WzIqal0gPSBkIyNqICYgMHhGRjsgXAorICAgIGRlc3RbMipqKzFdID0gZCMjaiA+PiA4OworCisjZW5kaWYgLyogIEVuZGlhbm5lc3MgKi8KKworc3RhdGljIHZvaWQgeG9yOGJ5dGVzSW50b0ludGVybGVhdmVkV29yZHMoVUlOVDMyICpldmVuLCBVSU5UMzIgKm9kZCwgY29uc3QgVUlOVDgqIHNvdXJjZSkKK3sKKyAgICBVSU5UMTYgaTAsIGkxLCBpMiwgaTM7CisKKyAgICB4b3IyYnl0ZXNJbnRvSW50ZXJsZWF2ZWRXb3JkcyhldmVuLCBvZGQsIHNvdXJjZSwgMCkKKyAgICB4b3IyYnl0ZXNJbnRvSW50ZXJsZWF2ZWRXb3JkcyhldmVuLCBvZGQsIHNvdXJjZSwgMSkKKyAgICB4b3IyYnl0ZXNJbnRvSW50ZXJsZWF2ZWRXb3JkcyhldmVuLCBvZGQsIHNvdXJjZSwgMikKKyAgICB4b3IyYnl0ZXNJbnRvSW50ZXJsZWF2ZWRXb3JkcyhldmVuLCBvZGQsIHNvdXJjZSwgMykKK30KKworI2RlZmluZSB4b3JMYW5lc0ludG9TdGF0ZShsYW5lQ291bnQsIHN0YXRlLCBpbnB1dCkgXAorICAgIHsgXAorICAgICAgICBpbnQgaTsgXAorICAgICAgICBmb3IoaT0wOyBpPChsYW5lQ291bnQpOyBpKyspIFwKKyAgICAgICAgICAgIHhvcjhieXRlc0ludG9JbnRlcmxlYXZlZFdvcmRzKHN0YXRlK2kqMiwgc3RhdGUraSoyKzEsIGlucHV0K2kqOCk7IFwKKyAgICB9CisKK3N0YXRpYyB2b2lkIHNldEludGVybGVhdmVkV29yZHNJbnRvOGJ5dGVzKFVJTlQ4KiBkZXN0LCBVSU5UMzIgZXZlbiwgVUlOVDMyIG9kZCkKK3sKKyAgICBVSU5UMTYgZDAsIGQxLCBkMiwgZDM7CisKKyAgICBzZXRJbnRlcmxlYXZlZFdvcmRzSW50bzJieXRlcyhkZXN0LCBldmVuLCBvZGQsIDApCisgICAgc2V0SW50ZXJsZWF2ZWRXb3Jkc0ludG8yYnl0ZXMoZGVzdCwgZXZlbiwgb2RkLCAxKQorICAgIHNldEludGVybGVhdmVkV29yZHNJbnRvMmJ5dGVzKGRlc3QsIGV2ZW4sIG9kZCwgMikKKyAgICBzZXRJbnRlcmxlYXZlZFdvcmRzSW50bzJieXRlcyhkZXN0LCBldmVuLCBvZGQsIDMpCit9CisKKyNkZWZpbmUgZXh0cmFjdExhbmVzKGxhbmVDb3VudCwgc3RhdGUsIGRhdGEpIFwKKyAgICB7IFwKKyAgICAgICAgaW50IGk7IFwKKyAgICAgICAgZm9yKGk9MDsgaTwobGFuZUNvdW50KTsgaSsrKSBcCisgICAgICAgICAgICBzZXRJbnRlcmxlYXZlZFdvcmRzSW50bzhieXRlcyhkYXRhK2kqOCwgKChVSU5UMzIqKXN0YXRlKVtpKjJdLCAoKFVJTlQzMiopc3RhdGUpW2kqMisxXSk7IFwKKyAgICB9CisKKyNlbHNlIC8qICBObyBpbnRlcmxlYXZpbmcgdGFibGVzICovCisKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorCisvKiAgQ3JlZGl0OiBIZW5yeSBTLiBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIEFkZGlzb24tV2VzbGV5LCAyMDAyICovCisjZGVmaW5lIHhvckludGVybGVhdmVkTEUocmF0ZUluTGFuZXMsIHN0YXRlLCBpbnB1dCkgXAorCXsgXAorCQljb25zdCBVSU5UMzIgKiBwSSA9IChjb25zdCBVSU5UMzIgKilpbnB1dDsgXAorCQlVSU5UMzIgKiBwUyA9IHN0YXRlOyBcCisJCVVJTlQzMiB0LCB4MCwgeDE7IFwKKwkgICAgaW50IGk7IFwKKwkgICAgZm9yIChpID0gKHJhdGVJbkxhbmVzKS0xOyBpID49IDA7IC0taSkgXAorCQl7IFwKKwkJCXgwID0gKihwSSsrKTsgXAorCQkJdCA9ICh4MCBeICh4MCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgeDAgPSB4MCBeIHQgXiAodCA8PCAgMSk7IFwKKwkJCXQgPSAoeDAgXiAoeDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHgwID0geDAgXiB0IF4gKHQgPDwgIDIpOyBcCisJCQl0ID0gKHgwIF4gKHgwID4+ICA0KSkgJiAweDAwRjAwMEYwVUw7ICB4MCA9IHgwIF4gdCBeICh0IDw8ICA0KTsgXAorCQkJdCA9ICh4MCBeICh4MCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgeDAgPSB4MCBeIHQgXiAodCA8PCAgOCk7IFwKKyAJCQl4MSA9ICoocEkrKyk7IFwKKwkJCXQgPSAoeDEgXiAoeDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHgxID0geDEgXiB0IF4gKHQgPDwgIDEpOyBcCisJCQl0ID0gKHgxIF4gKHgxID4+ICAyKSkgJiAweDBDMEMwQzBDVUw7ICB4MSA9IHgxIF4gdCBeICh0IDw8ICAyKTsgXAorCQkJdCA9ICh4MSBeICh4MSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgeDEgPSB4MSBeIHQgXiAodCA8PCAgNCk7IFwKKwkJCXQgPSAoeDEgXiAoeDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHgxID0geDEgXiB0IF4gKHQgPDwgIDgpOyBcCisJCQkqKHBTKyspIF49IChVSU5UMTYpeDAgfCAoeDEgPDwgMTYpOyBcCisJCQkqKHBTKyspIF49ICh4MCA+PiAxNikgfCAoeDEgJiAweEZGRkYwMDAwKTsgXAorCQl9IFwKKwl9CisKKyNkZWZpbmUgeG9yTGFuZXNJbnRvU3RhdGUobGFuZUNvdW50LCBzdGF0ZSwgaW5wdXQpIFwKKyAgICB4b3JJbnRlcmxlYXZlZExFKGxhbmVDb3VudCwgc3RhdGUsIGlucHV0KQorCisjZWxzZSAvKiAgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfQklHX0VORElBTikgKi8KKworLyogIENyZWRpdDogSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworVUlOVDY0IHRvSW50ZXJsZWF2aW5nKFVJTlQ2NCB4KSAKK3sKKyAgIFVJTlQ2NCB0OworCisgICB0ID0gKHggXiAoeCA+PiAgMSkpICYgMHgyMjIyMjIyMjIyMjIyMjIyVUxMOyAgeCA9IHggXiB0IF4gKHQgPDwgIDEpOworICAgdCA9ICh4IF4gKHggPj4gIDIpKSAmIDB4MEMwQzBDMEMwQzBDMEMwQ1VMTDsgIHggPSB4IF4gdCBeICh0IDw8ICAyKTsKKyAgIHQgPSAoeCBeICh4ID4+ICA0KSkgJiAweDAwRjAwMEYwMDBGMDAwRjBVTEw7ICB4ID0geCBeIHQgXiAodCA8PCAgNCk7CisgICB0ID0gKHggXiAoeCA+PiAgOCkpICYgMHgwMDAwRkYwMDAwMDBGRjAwVUxMOyAgeCA9IHggXiB0IF4gKHQgPDwgIDgpOworICAgdCA9ICh4IF4gKHggPj4gMTYpKSAmIDB4MDAwMDAwMDBGRkZGMDAwMFVMTDsgIHggPSB4IF4gdCBeICh0IDw8IDE2KTsKKworICAgcmV0dXJuIHg7Cit9CisKK3N0YXRpYyB2b2lkIHhvcjhieXRlc0ludG9JbnRlcmxlYXZlZFdvcmRzKFVJTlQzMiogZXZlbkFuZE9kZCwgY29uc3QgVUlOVDgqIHNvdXJjZSkKK3sKKyAgICAvKiAgVGhpcyBjYW4gYmUgb3B0aW1pemVkICovCisgICAgVUlOVDY0IHNvdXJjZVdvcmQgPQorICAgICAgICAoVUlOVDY0KXNvdXJjZVswXQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbMV0pIDw8ICA4KQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbMl0pIDw8IDE2KQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbM10pIDw8IDI0KQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbNF0pIDw8IDMyKQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbNV0pIDw8IDQwKQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbNl0pIDw8IDQ4KQorICAgICAgICBeICgoKFVJTlQ2NClzb3VyY2VbN10pIDw8IDU2KTsKKyAgICBVSU5UNjQgZXZlbkFuZE9kZFdvcmQgPSB0b0ludGVybGVhdmluZyhzb3VyY2VXb3JkKTsKKyAgICBldmVuQW5kT2RkWzBdIF49IChVSU5UMzIpZXZlbkFuZE9kZFdvcmQ7CisgICAgZXZlbkFuZE9kZFsxXSBePSAoVUlOVDMyKShldmVuQW5kT2RkV29yZCA+PiAzMik7Cit9CisKKyNkZWZpbmUgeG9yTGFuZXNJbnRvU3RhdGUobGFuZUNvdW50LCBzdGF0ZSwgaW5wdXQpIFwKKyAgICB7IFwKKyAgICAgICAgaW50IGk7IFwKKyAgICAgICAgZm9yKGk9MDsgaTwobGFuZUNvdW50KTsgaSsrKSBcCisgICAgICAgICAgICB4b3I4Ynl0ZXNJbnRvSW50ZXJsZWF2ZWRXb3JkcyhzdGF0ZStpKjIsIGlucHV0K2kqOCk7IFwKKyAgICB9CisKKyNlbmRpZiAvKiAgRW5kaWFubmVzcyAqLworCisvKiAgQ3JlZGl0OiBIZW5yeSBTLiBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIEFkZGlzb24tV2VzbGV5LCAyMDAyICovCitVSU5UNjQgZnJvbUludGVybGVhdmluZyhVSU5UNjQgeCkKK3sKKyAgIFVJTlQ2NCB0OworCisgICB0ID0gKHggXiAoeCA+PiAxNikpICYgMHgwMDAwMDAwMEZGRkYwMDAwVUxMOyAgeCA9IHggXiB0IF4gKHQgPDwgMTYpOworICAgdCA9ICh4IF4gKHggPj4gIDgpKSAmIDB4MDAwMEZGMDAwMDAwRkYwMFVMTDsgIHggPSB4IF4gdCBeICh0IDw8ICA4KTsKKyAgIHQgPSAoeCBeICh4ID4+ICA0KSkgJiAweDAwRjAwMEYwMDBGMDAwRjBVTEw7ICB4ID0geCBeIHQgXiAodCA8PCAgNCk7CisgICB0ID0gKHggXiAoeCA+PiAgMikpICYgMHgwQzBDMEMwQzBDMEMwQzBDVUxMOyAgeCA9IHggXiB0IF4gKHQgPDwgIDIpOworICAgdCA9ICh4IF4gKHggPj4gIDEpKSAmIDB4MjIyMjIyMjIyMjIyMjIyMlVMTDsgIHggPSB4IF4gdCBeICh0IDw8ICAxKTsKKworICAgcmV0dXJuIHg7Cit9CisKK3N0YXRpYyB2b2lkIHNldEludGVybGVhdmVkV29yZHNJbnRvOGJ5dGVzKFVJTlQ4KiBkZXN0LCBVSU5UMzIqIGV2ZW5BbmRPZGQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAoKFVJTlQ2NCopZGVzdClbMF0gPSBmcm9tSW50ZXJsZWF2aW5nKCooVUlOVDY0KilldmVuQW5kT2RkKTsKKyNlbHNlIC8qICAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19CSUdfRU5ESUFOKSAqLworICAgIC8qICBUaGlzIGNhbiBiZSBvcHRpbWl6ZWQgKi8KKyAgICBVSU5UNjQgZXZlbkFuZE9kZFdvcmQgPSAoVUlOVDY0KWV2ZW5BbmRPZGRbMF0gXiAoKFVJTlQ2NClldmVuQW5kT2RkWzFdIDw8IDMyKTsKKyAgICBVSU5UNjQgZGVzdFdvcmQgPSBmcm9tSW50ZXJsZWF2aW5nKGV2ZW5BbmRPZGRXb3JkKTsKKyAgICBkZXN0WzBdID0gZGVzdFdvcmQgJiAweEZGOworICAgIGRlc3RbMV0gPSAoZGVzdFdvcmQgPj4gOCkgJiAweEZGOworICAgIGRlc3RbMl0gPSAoZGVzdFdvcmQgPj4gMTYpICYgMHhGRjsKKyAgICBkZXN0WzNdID0gKGRlc3RXb3JkID4+IDI0KSAmIDB4RkY7CisgICAgZGVzdFs0XSA9IChkZXN0V29yZCA+PiAzMikgJiAweEZGOworICAgIGRlc3RbNV0gPSAoZGVzdFdvcmQgPj4gNDApICYgMHhGRjsKKyAgICBkZXN0WzZdID0gKGRlc3RXb3JkID4+IDQ4KSAmIDB4RkY7CisgICAgZGVzdFs3XSA9IChkZXN0V29yZCA+PiA1NikgJiAweEZGOworI2VuZGlmIC8qICBFbmRpYW5uZXNzICovCit9CisKKyNkZWZpbmUgZXh0cmFjdExhbmVzKGxhbmVDb3VudCwgc3RhdGUsIGRhdGEpIFwKKyAgICB7IFwKKyAgICAgICAgaW50IGk7IFwKKyAgICAgICAgZm9yKGk9MDsgaTwobGFuZUNvdW50KTsgaSsrKSBcCisgICAgICAgICAgICBzZXRJbnRlcmxlYXZlZFdvcmRzSW50bzhieXRlcyhkYXRhK2kqOCwgKFVJTlQzMiopc3RhdGUraSoyKTsgXAorICAgIH0KKworI2VuZGlmIC8qICBXaXRoIG9yIHdpdGhvdXQgaW50ZXJsZWF2aW5nIHRhYmxlcyAqLworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgUk9MMzIoYSwgb2Zmc2V0KSBfcm90bChhLCBvZmZzZXQpCisjZWxpZiAoZGVmaW5lZCAoX19hcm1fXykgJiYgZGVmaW5lZChfX0FSTUNDX1ZFUlNJT04pKQorI2RlZmluZSBST0wzMihhLCBvZmZzZXQpIF9fcm9yKGEsIDMyLShvZmZzZXQpKQorI2Vsc2UKKyNkZWZpbmUgUk9MMzIoYSwgb2Zmc2V0KSAoKCgoVUlOVDMyKWEpIDw8IChvZmZzZXQpKSBeICgoKFVJTlQzMilhKSA+PiAoMzItKG9mZnNldCkpKSkKKyNlbmRpZgorCisjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLXVucm9sbGluZy5tYWNyb3MiCisjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLTMyLm1hY3JvcyIKKworI2lmIChVc2VTY2hlZHVsZSA9PSAzKQorCisjaWZkZWYgVXNlQmViaWdva2ltaXNhCisjZXJyb3IgIk5vIGxhbmUgY29tcGxlbWVudGluZyB3aXRoIHNjaGVkdWxlIDMuIgorI2VuZGlmCisKKyNpZiAoVW5yb2xsaW5nICE9IDIpCisjZXJyb3IgIk9ubHkgdW5yb2xsaW5nIDIgaXMgc3VwcG9ydGVkIGJ5IHNjaGVkdWxlIDMuIgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3JkcyhVSU5UMzIgKnN0YXRlKQoreworICAgIHJvdW5kcworfQorCitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZyhVSU5UMzIgKnN0YXRlLCBjb25zdCBVSU5UOCAqaW5wdXQsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisgICAgeG9yTGFuZXNJbnRvU3RhdGUobGFuZUNvdW50LCBzdGF0ZSwgaW5wdXQpCisgICAgcm91bmRzCit9CisKKyNpZmRlZiBQcm92aWRlRmFzdDU3Ngorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc1NzZiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICB4b3JMYW5lc0ludG9TdGF0ZSg5LCBzdGF0ZSwgaW5wdXQpCisgICAgcm91bmRzCit9CisjZW5kaWYKKworI2lmZGVmIFByb3ZpZGVGYXN0ODMyCitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzgzMmJpdHMoVUlOVDMyICpzdGF0ZSwgY29uc3QgVUlOVDggKmlucHV0KQoreworICAgIHhvckxhbmVzSW50b1N0YXRlKDEzLCBzdGF0ZSwgaW5wdXQpCisgICAgcm91bmRzCit9CisjZW5kaWYKKworI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMDI0Yml0cyhVSU5UMzIgKnN0YXRlLCBjb25zdCBVSU5UOCAqaW5wdXQpCit7CisgICAgeG9yTGFuZXNJbnRvU3RhdGUoMTYsIHN0YXRlLCBpbnB1dCkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDg4CitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwODhiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICB4b3JMYW5lc0ludG9TdGF0ZSgxNywgc3RhdGUsIGlucHV0KQorICAgIHJvdW5kcworfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDExNTIKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nMTE1MmJpdHMoVUlOVDMyICpzdGF0ZSwgY29uc3QgVUlOVDggKmlucHV0KQoreworICAgIHhvckxhbmVzSW50b1N0YXRlKDE4LCBzdGF0ZSwgaW5wdXQpCisgICAgcm91bmRzCit9CisjZW5kaWYKKworI2lmZGVmIFByb3ZpZGVGYXN0MTM0NAorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMzQ0Yml0cyhVSU5UMzIgKnN0YXRlLCBjb25zdCBVSU5UOCAqaW5wdXQpCit7CisgICAgeG9yTGFuZXNJbnRvU3RhdGUoMjEsIHN0YXRlLCBpbnB1dCkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjZWxzZSAvKiAgKFNjaGVkdWxlICE9IDMpICovCisKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3JkcyhVSU5UMzIgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorI2lmIChVbnJvbGxpbmcgIT0gMjQpCisgICAgdW5zaWduZWQgaW50IGk7CisjZW5kaWYKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGUpCisgICAgcm91bmRzCit9CisKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKGxhbmVDb3VudCwgc3RhdGUsIGlucHV0KQorICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGUpCisgICAgcm91bmRzCit9CisKKyNpZmRlZiBQcm92aWRlRmFzdDU3Ngorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc1NzZiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKDksIHN0YXRlLCBpbnB1dCkKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlKQorICAgIHJvdW5kcworfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDgzMgorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc4MzJiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKDEzLCBzdGF0ZSwgaW5wdXQpCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDI0CitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwMjRiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKDE2LCBzdGF0ZSwgaW5wdXQpCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDg4CitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwODhiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKDE3LCBzdGF0ZSwgaW5wdXQpCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMTUyCitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzExNTJiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKDE4LCBzdGF0ZSwgaW5wdXQpCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMzQ0CitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEzNDRiaXRzKFVJTlQzMiAqc3RhdGUsIGNvbnN0IFVJTlQ4ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIHhvckxhbmVzSW50b1N0YXRlKDIxLCBzdGF0ZSwgaW5wdXQpCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkKKyAgICByb3VuZHMKK30KKyNlbmRpZgorCisjZW5kaWYKKworc3RhdGljIHZvaWQgS2VjY2FrSW5pdGlhbGl6ZSgpCit7CisjaWZkZWYgVXNlSW50ZXJsZWF2ZVRhYmxlcworICAgIGJ1aWxkSW50ZXJsZWF2ZVRhYmxlcygpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIEtlY2Nha0luaXRpYWxpemVTdGF0ZSh1bnNpZ25lZCBjaGFyICpzdGF0ZSkKK3sKKyAgICBtZW1zZXQoc3RhdGUsIDAsIDIwMCk7CisjaWZkZWYgVXNlQmViaWdva2ltaXNhCisgICAgKChVSU5UMzIqKXN0YXRlKVsgMl0gPSB+KFVJTlQzMikwOworICAgICgoVUlOVDMyKilzdGF0ZSlbIDNdID0gfihVSU5UMzIpMDsKKyAgICAoKFVJTlQzMiopc3RhdGUpWyA0XSA9IH4oVUlOVDMyKTA7CisgICAgKChVSU5UMzIqKXN0YXRlKVsgNV0gPSB+KFVJTlQzMikwOworICAgICgoVUlOVDMyKilzdGF0ZSlbMTZdID0gfihVSU5UMzIpMDsKKyAgICAoKFVJTlQzMiopc3RhdGUpWzE3XSA9IH4oVUlOVDMyKTA7CisgICAgKChVSU5UMzIqKXN0YXRlKVsyNF0gPSB+KFVJTlQzMikwOworICAgICgoVUlOVDMyKilzdGF0ZSlbMjVdID0gfihVSU5UMzIpMDsKKyAgICAoKFVJTlQzMiopc3RhdGUpWzM0XSA9IH4oVUlOVDMyKTA7CisgICAgKChVSU5UMzIqKXN0YXRlKVszNV0gPSB+KFVJTlQzMikwOworICAgICgoVUlOVDMyKilzdGF0ZSlbNDBdID0gfihVSU5UMzIpMDsKKyAgICAoKFVJTlQzMiopc3RhdGUpWzQxXSA9IH4oVUlOVDMyKTA7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb24odW5zaWduZWQgY2hhciAqc3RhdGUpCit7CisgICAgLyogIFdlIGFzc3VtZSB0aGUgc3RhdGUgaXMgYWx3YXlzIHN0b3JlZCBhcyBpbnRlcmxlYXZlZCAzMi1iaXQgd29yZHMgKi8KKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHMoKFVJTlQzMiopc3RhdGUpOworfQorCisjaWZkZWYgUHJvdmlkZUZhc3Q1NzYKK3N0YXRpYyB2b2lkIEtlY2Nha0Fic29yYjU3NmJpdHModW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCit7CisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc1NzZiaXRzKChVSU5UMzIqKXN0YXRlLCBkYXRhKTsKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3Q4MzIKK3N0YXRpYyB2b2lkIEtlY2Nha0Fic29yYjgzMmJpdHModW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCit7CisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc4MzJiaXRzKChVSU5UMzIqKXN0YXRlLCBkYXRhKTsKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDI0CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIxMDI0Yml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwMjRiaXRzKChVSU5UMzIqKXN0YXRlLCBkYXRhKTsKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDg4CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIxMDg4Yml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwODhiaXRzKChVSU5UMzIqKXN0YXRlLCBkYXRhKTsKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMTUyCitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIxMTUyYml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzExNTJiaXRzKChVSU5UMzIqKXN0YXRlLCBkYXRhKTsKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMzQ0CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIxMzQ0Yml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEzNDRiaXRzKChVSU5UMzIqKXN0YXRlLCBkYXRhKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIodW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcoKFVJTlQzMiopc3RhdGUsIGRhdGEsIGxhbmVDb3VudCk7Cit9CisKKyNpZmRlZiBQcm92aWRlRmFzdDEwMjQKK3N0YXRpYyB2b2lkIEtlY2Nha0V4dHJhY3QxMDI0Yml0cyhjb25zdCB1bnNpZ25lZCBjaGFyICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyAgICBleHRyYWN0TGFuZXMoMTYsIHN0YXRlLCBkYXRhKQorI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorICAgICgoVUlOVDMyKilkYXRhKVsgMl0gPSB+KChVSU5UMzIqKWRhdGEpWyAyXTsKKyAgICAoKFVJTlQzMiopZGF0YSlbIDNdID0gfigoVUlOVDMyKilkYXRhKVsgM107CisgICAgKChVSU5UMzIqKWRhdGEpWyA0XSA9IH4oKFVJTlQzMiopZGF0YSlbIDRdOworICAgICgoVUlOVDMyKilkYXRhKVsgNV0gPSB+KChVSU5UMzIqKWRhdGEpWyA1XTsKKyAgICAoKFVJTlQzMiopZGF0YSlbMTZdID0gfigoVUlOVDMyKilkYXRhKVsxNl07CisgICAgKChVSU5UMzIqKWRhdGEpWzE3XSA9IH4oKFVJTlQzMiopZGF0YSlbMTddOworICAgICgoVUlOVDMyKilkYXRhKVsyNF0gPSB+KChVSU5UMzIqKWRhdGEpWzI0XTsKKyAgICAoKFVJTlQzMiopZGF0YSlbMjVdID0gfigoVUlOVDMyKilkYXRhKVsyNV07CisjZW5kaWYKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBLZWNjYWtFeHRyYWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworICAgIGV4dHJhY3RMYW5lcyhsYW5lQ291bnQsIHN0YXRlLCBkYXRhKQorI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDMyKilkYXRhKVsgMl0gPSB+KChVSU5UMzIqKWRhdGEpWyAyXTsKKyAgICAgICAgKChVSU5UMzIqKWRhdGEpWyAzXSA9IH4oKFVJTlQzMiopZGF0YSlbIDNdOworICAgICAgICBpZiAobGFuZUNvdW50ID4gMikgeworICAgICAgICAgICAgKChVSU5UMzIqKWRhdGEpWyA0XSA9IH4oKFVJTlQzMiopZGF0YSlbIDRdOworICAgICAgICAgICAgKChVSU5UMzIqKWRhdGEpWyA1XSA9IH4oKFVJTlQzMiopZGF0YSlbIDVdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQzMiopZGF0YSlbMTZdID0gfigoVUlOVDMyKilkYXRhKVsxNl07CisgICAgICAgICAgICAgICAgKChVSU5UMzIqKWRhdGEpWzE3XSA9IH4oKFVJTlQzMiopZGF0YSlbMTddOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQzMiopZGF0YSlbMjRdID0gfigoVUlOVDMyKilkYXRhKVsyNF07CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDMyKilkYXRhKVsyNV0gPSB+KChVSU5UMzIqKWRhdGEpWzI1XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQzMiopZGF0YSlbMzRdID0gfigoVUlOVDMyKilkYXRhKVszNF07CisgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQzMiopZGF0YSlbMzVdID0gfigoVUlOVDMyKilkYXRhKVszNV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQzMiopZGF0YSlbNDBdID0gfigoVUlOVDMyKilkYXRhKVs0MF07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UMzIqKWRhdGEpWzQxXSA9IH4oKFVJTlQzMiopZGF0YSlbNDFdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtb3B0NjQtc2V0dGluZ3MuaCBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC1vcHQ2NC1zZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmODNlNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtb3B0NjQtc2V0dGluZ3MuaApAQCAtMCwwICsxLDkgQEAKKy8qCisjZGVmaW5lIFVucm9sbGluZyAyNAorI2RlZmluZSBVc2VCZWJpZ29raW1pc2EKKyNkZWZpbmUgVXNlU1NFCisjZGVmaW5lIFVzZU9ubHlTSU1ENjQKKyNkZWZpbmUgVXNlTU1YCisjZGVmaW5lIFVzZVNITEQKKyNkZWZpbmUgVXNlWE9QCisqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDY0LmMgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtb3B0NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTliMThiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDY0LmMKQEAgLTAsMCArMSw1MTAgQEAKKy8qCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha0YtMTYwMC1vcHQ2NC1zZXR0aW5ncy5oIgorI2luY2x1ZGUgIktlY2Nha0YtMTYwMC1pbnRlcmZhY2UuaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworLyogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IFVJTlQ2NDsgKi8KKworI2lmIGRlZmluZWQoX19HTlVDX18pCisjZGVmaW5lIEFMSUdOIF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDMyKSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBBTElHTiBfX2RlY2xzcGVjKGFsaWduKDMyKSkKKyNlbHNlCisjZGVmaW5lIEFMSUdOCisjZW5kaWYKKworI2lmIGRlZmluZWQoVXNlU1NFKQorICAgICNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyAgICB0eXBlZGVmIF9fbTEyOGkgVjY0OworICAgIHR5cGVkZWYgX19tMTI4aSBWMTI4OworICAgIHR5cGVkZWYgdW5pb24geworICAgICAgICBWMTI4IHYxMjg7CisgICAgICAgIFVJTlQ2NCB2NjRbMl07CisgICAgfSBWNjQ2NDsKKworICAgICNkZWZpbmUgQU5EbnU2NChhLCBiKSAgICAgICBfbW1fYW5kbm90X3NpMTI4KGEsIGIpCisgICAgI2RlZmluZSBMT0FENjQoYSkgICAgICAgICAgIF9tbV9sb2FkbF9lcGk2NCgoY29uc3QgVjY0ICopJihhKSkKKyAgICAjZGVmaW5lIENPTlNUNjQoYSkgICAgICAgICAgX21tX2xvYWRsX2VwaTY0KChjb25zdCBWNjQgKikmKGEpKQorICAgICNkZWZpbmUgUk9MNjQoYSwgbykgICAgICAgICBfbW1fb3Jfc2kxMjgoX21tX3NsbGlfZXBpNjQoYSwgbyksIF9tbV9zcmxpX2VwaTY0KGEsIDY0LShvKSkpCisgICAgI2RlZmluZSBTVE9SRTY0KGEsIGIpICAgICAgIF9tbV9zdG9yZWxfZXBpNjQoKFY2NCAqKSYoYSksIGIpCisgICAgI2RlZmluZSBYT1I2NChhLCBiKSAgICAgICAgIF9tbV94b3Jfc2kxMjgoYSwgYikKKyAgICAjZGVmaW5lIFhPUmVxNjQoYSwgYikgICAgICAgYSA9IF9tbV94b3Jfc2kxMjgoYSwgYikKKyAgICAjZGVmaW5lIFNIVUZGTEVCWVRFUzEyOChhLCBiKSAgIF9tbV9zaHVmZmxlX2VwaTgoYSwgYikKKworICAgICNkZWZpbmUgQU5EbnUxMjgoYSwgYikgICAgICBfbW1fYW5kbm90X3NpMTI4KGEsIGIpCisgICAgI2RlZmluZSBMT0FENjQ2NChhLCBiKSAgICAgIF9tbV9zZXRfZXBpNjQoKF9fbTY0KShhKSwgKF9fbTY0KShiKSkKKyAgICAjZGVmaW5lIENPTlNUMTI4KGEpICAgICAgICAgX21tX2xvYWRfc2kxMjgoKGNvbnN0IFYxMjggKikmKGEpKQorICAgICNkZWZpbmUgTE9BRDEyOChhKSAgICAgICAgICBfbW1fbG9hZF9zaTEyOCgoY29uc3QgVjEyOCAqKSYoYSkpCisgICAgI2RlZmluZSBMT0FEMTI4dShhKSAgICAgICAgIF9tbV9sb2FkdV9zaTEyOCgoY29uc3QgVjEyOCAqKSYoYSkpCisgICAgI2RlZmluZSBST0w2NGluMTI4KGEsIG8pICAgIF9tbV9vcl9zaTEyOChfbW1fc2xsaV9lcGk2NChhLCBvKSwgX21tX3NybGlfZXBpNjQoYSwgNjQtKG8pKSkKKyAgICAjZGVmaW5lIFNUT1JFMTI4KGEsIGIpICAgICAgX21tX3N0b3JlX3NpMTI4KChWMTI4ICopJihhKSwgYikKKyAgICAjZGVmaW5lIFhPUjEyOChhLCBiKSAgICAgICAgX21tX3hvcl9zaTEyOChhLCBiKQorICAgICNkZWZpbmUgWE9SZXExMjgoYSwgYikgICAgICBhID0gX21tX3hvcl9zaTEyOChhLCBiKQorICAgICNkZWZpbmUgR0VUNjRMT0xPKGEsIGIpICAgICBfbW1fdW5wYWNrbG9fZXBpNjQoYSwgYikKKyAgICAjZGVmaW5lIEdFVDY0SElISShhLCBiKSAgICAgX21tX3VucGFja2hpX2VwaTY0KGEsIGIpCisgICAgI2RlZmluZSBDT1BZNjRISTJMTyhhKSAgICAgIF9tbV9zaHVmZmxlX2VwaTMyKGEsIDB4RUUpCisgICAgI2RlZmluZSBDT1BZNjRMTzJISShhKSAgICAgIF9tbV9zaHVmZmxlX2VwaTMyKGEsIDB4NDQpCisgICAgI2RlZmluZSBaRVJPMTI4KCkgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4KCkKKworICAgICNpZmRlZiBVc2VPbmx5U0lNRDY0CisgICAgI2luY2x1ZGUgIktlY2Nha0YtMTYwMC1zaW1kNjQubWFjcm9zIgorICAgICNlbHNlCitBTElHTiBjb25zdCBVSU5UNjQgcmhvOF81NlsyXSA9IHsweDA2MDUwNDAzMDIwMTAwMDcsIDB4MDgwRjBFMEQwQzBCMEEwOX07CisgICAgI2luY2x1ZGUgIktlY2Nha0YtMTYwMC1zaW1kMTI4Lm1hY3JvcyIKKyAgICAjZW5kaWYKKworICAgICNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKyAgICAjZXJyb3IgIlVzZUJlYmlnb2tpbWlzYSBjYW5ub3QgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIFVzZVNTRSIKKyAgICAjZW5kaWYKKyNlbGlmIGRlZmluZWQoVXNlWE9QKQorICAgICNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyAgICB0eXBlZGVmIF9fbTEyOGkgVjY0OworICAgIHR5cGVkZWYgX19tMTI4aSBWMTI4OworICAgCisgICAgI2RlZmluZSBMT0FENjQoYSkgICAgICAgICAgIF9tbV9sb2FkbF9lcGk2NCgoY29uc3QgVjY0ICopJihhKSkKKyAgICAjZGVmaW5lIENPTlNUNjQoYSkgICAgICAgICAgX21tX2xvYWRsX2VwaTY0KChjb25zdCBWNjQgKikmKGEpKQorICAgICNkZWZpbmUgU1RPUkU2NChhLCBiKSAgICAgICBfbW1fc3RvcmVsX2VwaTY0KChWNjQgKikmKGEpLCBiKQorICAgICNkZWZpbmUgWE9SNjQoYSwgYikgICAgICAgICBfbW1feG9yX3NpMTI4KGEsIGIpCisgICAgI2RlZmluZSBYT1JlcTY0KGEsIGIpICAgICAgIGEgPSBfbW1feG9yX3NpMTI4KGEsIGIpCisKKyAgICAjZGVmaW5lIEFORG51MTI4KGEsIGIpICAgICAgX21tX2FuZG5vdF9zaTEyOChhLCBiKQorICAgICNkZWZpbmUgTE9BRDY0NjQoYSwgYikgICAgICBfbW1fc2V0X2VwaTY0KChfX202NCkoYSksIChfX202NCkoYikpCisgICAgI2RlZmluZSBDT05TVDEyOChhKSAgICAgICAgIF9tbV9sb2FkX3NpMTI4KChjb25zdCBWMTI4ICopJihhKSkKKyAgICAjZGVmaW5lIExPQUQxMjgoYSkgICAgICAgICAgX21tX2xvYWRfc2kxMjgoKGNvbnN0IFYxMjggKikmKGEpKQorICAgICNkZWZpbmUgTE9BRDEyOHUoYSkgICAgICAgICBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IFYxMjggKikmKGEpKQorICAgICNkZWZpbmUgU1RPUkUxMjgoYSwgYikgICAgICBfbW1fc3RvcmVfc2kxMjgoKFYxMjggKikmKGEpLCBiKQorICAgICNkZWZpbmUgWE9SMTI4KGEsIGIpICAgICAgICBfbW1feG9yX3NpMTI4KGEsIGIpCisgICAgI2RlZmluZSBYT1JlcTEyOChhLCBiKSAgICAgIGEgPSBfbW1feG9yX3NpMTI4KGEsIGIpCisgICAgI2RlZmluZSBaRVJPMTI4KCkgICAgICAgICAgIF9tbV9zZXR6ZXJvX3NpMTI4KCkKKworICAgICNkZWZpbmUgU1dBUDY0KGEpICAgICAgICAgICBfbW1fc2h1ZmZsZV9lcGkzMihhLCAweDRFKQorICAgICNkZWZpbmUgR0VUNjRMT0xPKGEsIGIpICAgICBfbW1fdW5wYWNrbG9fZXBpNjQoYSwgYikKKyAgICAjZGVmaW5lIEdFVDY0SElISShhLCBiKSAgICAgX21tX3VucGFja2hpX2VwaTY0KGEsIGIpCisgICAgI2RlZmluZSBHRVQ2NExPSEkoYSwgYikgICAgICgoX19tMTI4aSlfbW1fYmxlbmRfcGQoKF9fbTEyOGQpYSwgKF9fbTEyOGQpYiwgMikpCisgICAgI2RlZmluZSBHRVQ2NEhJTE8oYSwgYikgICAgIFNXQVA2NChHRVQ2NExPSEkoYiwgYSkpCisgICAgI2RlZmluZSBDT1BZNjRISTJMTyhhKSAgICAgIF9tbV9zaHVmZmxlX2VwaTMyKGEsIDB4RUUpCisgICAgI2RlZmluZSBDT1BZNjRMTzJISShhKSAgICAgIF9tbV9zaHVmZmxlX2VwaTMyKGEsIDB4NDQpCisgCisgICAgI2RlZmluZSBST0w2NDY0c2FtZShhLCBvKSAgIF9tbV9yb3RpX2VwaTY0KGEsIG8pCisgICAgI2RlZmluZSBST0w2NDY0KGEsIHIxLCByMikgIF9tbV9yb3RfZXBpNjQoYSwgQ09OU1QxMjgoIHJvdF8jI3IxIyNfIyNyMiApKQorQUxJR04gY29uc3QgVUlOVDY0IHJvdF8wXzIwWzJdICA9IHsgMCwgMjB9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF80NF8zWzJdICA9IHs0NCwgIDN9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF80M180NVsyXSA9IHs0MywgNDV9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF8yMV82MVsyXSA9IHsyMSwgNjF9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF8xNF8yOFsyXSA9IHsxNCwgMjh9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF8xXzM2WzJdICA9IHsgMSwgMzZ9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF82XzEwWzJdICA9IHsgNiwgMTB9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF8yNV8xNVsyXSA9IHsyNSwgMTV9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF84XzU2WzJdICA9IHsgOCwgNTZ9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF8xOF8yN1syXSA9IHsxOCwgMjd9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF82Ml81NVsyXSA9IHs2MiwgNTV9OworQUxJR04gY29uc3QgVUlOVDY0IHJvdF8zOV80MVsyXSA9IHszOSwgNDF9OworCisjaWYgZGVmaW5lZChVc2VTaW11bGF0ZWRYT1ApCisgICAgLyogIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIHdoZW4gWE9QIGlzIG5vdCBhdmFpbGFibGUgKi8KKyAgICAjdW5kZWYgUk9MNjQ2NAorICAgICN1bmRlZiBST0w2NDY0c2FtZQorICAgICNkZWZpbmUgUk9MNjQ2NHNhbWUoYSwgbykgICBfbW1fb3Jfc2kxMjgoX21tX3NsbGlfZXBpNjQoYSwgbyksIF9tbV9zcmxpX2VwaTY0KGEsIDY0LShvKSkpCisgICAgVjEyOCBST0w2NDY0KFYxMjggYSwgaW50IHIwLCBpbnQgcjEpCisgICAgeworICAgICAgICBWMTI4IGEwID0gUk9MNjQoYSwgcjApOworICAgICAgICBWMTI4IGExID0gQ09QWTY0SEkyTE8oUk9MNjQoYSwgcjEpKTsKKyAgICAgICAgcmV0dXJuIEdFVDY0TE9MTyhhMCwgYTEpOworICAgIH0KKyNlbmRpZgorICAgIAorICAgICNpbmNsdWRlICJLZWNjYWtGLTE2MDAteG9wLm1hY3JvcyIKKworICAgICNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKyAgICAjZXJyb3IgIlVzZUJlYmlnb2tpbWlzYSBjYW5ub3QgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIFVzZVhPUCIKKyAgICAjZW5kaWYKKyNlbGlmIGRlZmluZWQoVXNlTU1YKQorICAgICNpbmNsdWRlIDxtbWludHJpbi5oPgorICAgIHR5cGVkZWYgX19tNjQgVjY0OworICAgICNkZWZpbmUgQU5EbnU2NChhLCBiKSAgICAgICBfbW1fYW5kbm90X3NpNjQoYSwgYikKKworICAgICNpZiAoZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZCAoX19JTlRFTF9DT01QSUxFUikpCisgICAgICAgICNkZWZpbmUgTE9BRDY0KGEpICAgICAgICooVjY0KikmKGEpCisgICAgICAgICNkZWZpbmUgQ09OU1Q2NChhKSAgICAgICooVjY0KikmKGEpCisgICAgICAgICNkZWZpbmUgU1RPUkU2NChhLCBiKSAgICooVjY0KikmKGEpID0gYgorICAgICNlbHNlCisgICAgICAgICNkZWZpbmUgTE9BRDY0KGEpICAgICAgIChWNjQpYQorICAgICAgICAjZGVmaW5lIENPTlNUNjQoYSkgICAgICAoVjY0KWEKKyAgICAgICAgI2RlZmluZSBTVE9SRTY0KGEsIGIpICAgYSA9IChVSU5UNjQpYgorICAgICNlbmRpZgorICAgICNkZWZpbmUgUk9MNjQoYSwgbykgICAgICAgICBfbW1fb3Jfc2k2NChfbW1fc2xsaV9zaTY0KGEsIG8pLCBfbW1fc3JsaV9zaTY0KGEsIDY0LShvKSkpCisgICAgI2RlZmluZSBYT1I2NChhLCBiKSAgICAgICAgIF9tbV94b3Jfc2k2NChhLCBiKQorICAgICNkZWZpbmUgWE9SZXE2NChhLCBiKSAgICAgICBhID0gX21tX3hvcl9zaTY0KGEsIGIpCisKKyAgICAjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLXNpbWQ2NC5tYWNyb3MiCisKKyAgICAjaWZkZWYgVXNlQmViaWdva2ltaXNhCisgICAgI2Vycm9yICJVc2VCZWJpZ29raW1pc2EgY2Fubm90IGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBVc2VNTVgiCisgICAgI2VuZGlmCisjZWxzZQorICAgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgICNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSBfcm90bDY0KGEsIG9mZnNldCkKKyAgICAjZWxpZiBkZWZpbmVkKFVzZVNITEQpCisgICAgICAjZGVmaW5lIFJPTDY0KHgsTikgKHsgXAorICAgICAgICByZWdpc3RlciBVSU5UNjQgX19vdXQ7IFwKKyAgICAgICAgcmVnaXN0ZXIgVUlOVDY0IF9faW4gPSB4OyBcCisgICAgICAgIF9fYXNtX18gKCJzaGxkICUyLCUwLCUwIiA6ICI9ciIoX19vdXQpIDogIjAiKF9faW4pLCAiaSIoTikpOyBcCisgICAgICAgIF9fb3V0OyBcCisgICAgICB9KQorICAgICNlbHNlCisgICAgI2RlZmluZSBST0w2NChhLCBvZmZzZXQpICgoKChVSU5UNjQpYSkgPDwgb2Zmc2V0KSBeICgoKFVJTlQ2NClhKSA+PiAoNjQtb2Zmc2V0KSkpCisgICAgI2VuZGlmCisKKyAgICAjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLTY0Lm1hY3JvcyIKKyNlbmRpZgorCisjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLXVucm9sbGluZy5tYWNyb3MiCisKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3JkcyhVSU5UNjQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorI2lmIChVbnJvbGxpbmcgIT0gMjQpCisgICAgdW5zaWduZWQgaW50IGk7CisjZW5kaWYKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGUpCisgICAgcm91bmRzCisjaWYgZGVmaW5lZChVc2VNTVgpCisgICAgX21tX2VtcHR5KCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcoVUlOVDY0ICpzdGF0ZSwgY29uc3QgVUlOVDY0ICppbnB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyNpZiAoVW5yb2xsaW5nICE9IDI0KQorICAgIHVuc2lnbmVkIGludCBpOworI2VuZGlmCisJdW5zaWduZWQgaW50IGo7CisKKyAgICBmb3Ioaj0wOyBqPGxhbmVDb3VudDsgaisrKQorICAgICAgICBzdGF0ZVtqXSBePSBpbnB1dFtqXTsJCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZSkKKyAgICByb3VuZHMKKyNpZiBkZWZpbmVkKFVzZU1NWCkKKyAgICBfbW1fZW1wdHkoKTsKKyNlbmRpZgorfQorCisjaWZkZWYgUHJvdmlkZUZhc3Q1NzYKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nNTc2Yml0cyhVSU5UNjQgKnN0YXRlLCBjb25zdCBVSU5UNjQgKmlucHV0KQoreworICAgIGRlY2xhcmVBQkNERQorI2lmIChVbnJvbGxpbmcgIT0gMjQpCisgICAgdW5zaWduZWQgaW50IGk7CisjZW5kaWYKKworICAgIGNvcHlGcm9tU3RhdGVBbmRYb3I1NzZiaXRzKEEsIHN0YXRlLCBpbnB1dCkKKyAgICByb3VuZHMKKyNpZiBkZWZpbmVkKFVzZU1NWCkKKyAgICBfbW1fZW1wdHkoKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDgzMgorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc4MzJiaXRzKFVJTlQ2NCAqc3RhdGUsIGNvbnN0IFVJTlQ2NCAqaW5wdXQpCit7CisgICAgZGVjbGFyZUFCQ0RFCisjaWYgKFVucm9sbGluZyAhPSAyNCkKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyNlbmRpZgorCisgICAgY29weUZyb21TdGF0ZUFuZFhvcjgzMmJpdHMoQSwgc3RhdGUsIGlucHV0KQorICAgIHJvdW5kcworI2lmIGRlZmluZWQoVXNlTU1YKQorICAgIF9tbV9lbXB0eSgpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMDI0Yml0cyhVSU5UNjQgKnN0YXRlLCBjb25zdCBVSU5UNjQgKmlucHV0KQoreworICAgIGRlY2xhcmVBQkNERQorI2lmIChVbnJvbGxpbmcgIT0gMjQpCisgICAgdW5zaWduZWQgaW50IGk7CisjZW5kaWYKKworICAgIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDI0Yml0cyhBLCBzdGF0ZSwgaW5wdXQpCisgICAgcm91bmRzCisjaWYgZGVmaW5lZChVc2VNTVgpCisgICAgX21tX2VtcHR5KCk7CisjZW5kaWYKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDg4CitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwODhiaXRzKFVJTlQ2NCAqc3RhdGUsIGNvbnN0IFVJTlQ2NCAqaW5wdXQpCit7CisgICAgZGVjbGFyZUFCQ0RFCisjaWYgKFVucm9sbGluZyAhPSAyNCkKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyNlbmRpZgorCisgICAgY29weUZyb21TdGF0ZUFuZFhvcjEwODhiaXRzKEEsIHN0YXRlLCBpbnB1dCkKKyAgICByb3VuZHMKKyNpZiBkZWZpbmVkKFVzZU1NWCkKKyAgICBfbW1fZW1wdHkoKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDExNTIKK3N0YXRpYyB2b2lkIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nMTE1MmJpdHMoVUlOVDY0ICpzdGF0ZSwgY29uc3QgVUlOVDY0ICppbnB1dCkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyNpZiAoVW5yb2xsaW5nICE9IDI0KQorICAgIHVuc2lnbmVkIGludCBpOworI2VuZGlmCisKKyAgICBjb3B5RnJvbVN0YXRlQW5kWG9yMTE1MmJpdHMoQSwgc3RhdGUsIGlucHV0KQorICAgIHJvdW5kcworI2lmIGRlZmluZWQoVXNlTU1YKQorICAgIF9tbV9lbXB0eSgpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmZGVmIFByb3ZpZGVGYXN0MTM0NAorc3RhdGljIHZvaWQgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMzQ0Yml0cyhVSU5UNjQgKnN0YXRlLCBjb25zdCBVSU5UNjQgKmlucHV0KQoreworICAgIGRlY2xhcmVBQkNERQorI2lmIChVbnJvbGxpbmcgIT0gMjQpCisgICAgdW5zaWduZWQgaW50IGk7CisjZW5kaWYKKworICAgIGNvcHlGcm9tU3RhdGVBbmRYb3IxMzQ0Yml0cyhBLCBzdGF0ZSwgaW5wdXQpCisgICAgcm91bmRzCisjaWYgZGVmaW5lZChVc2VNTVgpCisgICAgX21tX2VtcHR5KCk7CisjZW5kaWYKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBLZWNjYWtJbml0aWFsaXplKCkKK3sKK30KKworc3RhdGljIHZvaWQgS2VjY2FrSW5pdGlhbGl6ZVN0YXRlKHVuc2lnbmVkIGNoYXIgKnN0YXRlKQoreworICAgIG1lbXNldChzdGF0ZSwgMCwgMjAwKTsKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyAxXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsgMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDhdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzEyXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxN10gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMjBdID0gfihVSU5UNjQpMDsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBLZWNjYWtQZXJtdXRhdGlvbih1bnNpZ25lZCBjaGFyICpzdGF0ZSkKK3sKKyAgICAvKiAgV2UgYXNzdW1lIHRoZSBzdGF0ZSBpcyBhbHdheXMgc3RvcmVkIGFzIHdvcmRzICovCisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzKChVSU5UNjQqKXN0YXRlKTsKK30KKworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0JJR19FTkRJQU4pCitzdGF0aWMgdm9pZCBmcm9tQnl0ZXNUb1dvcmQoVUlOVDY0ICp3b3JkLCBjb25zdCBVSU5UOCAqYnl0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICAqd29yZCA9IDA7CisgICAgZm9yKGk9MDsgaTwoNjQvOCk7IGkrKykKKyAgICAgICAgKndvcmQgfD0gKFVJTlQ2NCkoYnl0ZXNbaV0pIDw8ICg4KmkpOworfQorI2VuZGlmCisKKworI2lmZGVmIFByb3ZpZGVGYXN0NTc2CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmI1NzZiaXRzKHVuc2lnbmVkIGNoYXIgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3Jpbmc1NzZiaXRzKChVSU5UNjQqKXN0YXRlLCAoY29uc3QgVUlOVDY0KilkYXRhKTsKKyNlbHNlCisgICAgVUlOVDY0IGRhdGFBc1dvcmRzWzldOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTw5OyBpKyspCisgICAgICAgIGZyb21CeXRlc1RvV29yZChkYXRhQXNXb3JkcytpLCBkYXRhKyhpKjgpKTsKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzU3NmJpdHMoKFVJTlQ2NCopc3RhdGUsIGRhdGFBc1dvcmRzKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDgzMgorc3RhdGljIHZvaWQgS2VjY2FrQWJzb3JiODMyYml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nODMyYml0cygoVUlOVDY0KilzdGF0ZSwgKGNvbnN0IFVJTlQ2NCopZGF0YSk7CisjZWxzZQorICAgIFVJTlQ2NCBkYXRhQXNXb3Jkc1sxM107CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPDEzOyBpKyspCisgICAgICAgIGZyb21CeXRlc1RvV29yZChkYXRhQXNXb3JkcytpLCBkYXRhKyhpKjgpKTsKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzgzMmJpdHMoKFVJTlQ2NCopc3RhdGUsIGRhdGFBc1dvcmRzKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDEwMjQKK3N0YXRpYyB2b2lkIEtlY2Nha0Fic29yYjEwMjRiaXRzKHVuc2lnbmVkIGNoYXIgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMDI0Yml0cygoVUlOVDY0KilzdGF0ZSwgKGNvbnN0IFVJTlQ2NCopZGF0YSk7CisjZWxzZQorICAgIFVJTlQ2NCBkYXRhQXNXb3Jkc1sxNl07CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPDE2OyBpKyspCisgICAgICAgIGZyb21CeXRlc1RvV29yZChkYXRhQXNXb3JkcytpLCBkYXRhKyhpKjgpKTsKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEwMjRiaXRzKChVSU5UNjQqKXN0YXRlLCBkYXRhQXNXb3Jkcyk7CisjZW5kaWYKK30KKyNlbmRpZgorCisjaWZkZWYgUHJvdmlkZUZhc3QxMDg4CitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIxMDg4Yml0cyh1bnNpZ25lZCBjaGFyICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nMTA4OGJpdHMoKFVJTlQ2NCopc3RhdGUsIChjb25zdCBVSU5UNjQqKWRhdGEpOworI2Vsc2UKKyAgICBVSU5UNjQgZGF0YUFzV29yZHNbMTddOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTwxNzsgaSsrKQorICAgICAgICBmcm9tQnl0ZXNUb1dvcmQoZGF0YUFzV29yZHMraSwgZGF0YSsoaSo4KSk7CisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMDg4Yml0cygoVUlOVDY0KilzdGF0ZSwgZGF0YUFzV29yZHMpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmZGVmIFByb3ZpZGVGYXN0MTE1Mgorc3RhdGljIHZvaWQgS2VjY2FrQWJzb3JiMTE1MmJpdHModW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzExNTJiaXRzKChVSU5UNjQqKXN0YXRlLCAoY29uc3QgVUlOVDY0KilkYXRhKTsKKyNlbHNlCisgICAgVUlOVDY0IGRhdGFBc1dvcmRzWzE4XTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8MTg7IGkrKykKKyAgICAgICAgZnJvbUJ5dGVzVG9Xb3JkKGRhdGFBc1dvcmRzK2ksIGRhdGErKGkqOCkpOworICAgIEtlY2Nha1Blcm11dGF0aW9uT25Xb3Jkc0FmdGVyWG9yaW5nMTE1MmJpdHMoKFVJTlQ2NCopc3RhdGUsIGRhdGFBc1dvcmRzKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZmRlZiBQcm92aWRlRmFzdDEzNDQKK3N0YXRpYyB2b2lkIEtlY2Nha0Fic29yYjEzNDRiaXRzKHVuc2lnbmVkIGNoYXIgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgS2VjY2FrUGVybXV0YXRpb25PbldvcmRzQWZ0ZXJYb3JpbmcxMzQ0Yml0cygoVUlOVDY0KilzdGF0ZSwgKGNvbnN0IFVJTlQ2NCopZGF0YSk7CisjZWxzZQorICAgIFVJTlQ2NCBkYXRhQXNXb3Jkc1syMV07CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPDIxOyBpKyspCisgICAgICAgIGZyb21CeXRlc1RvV29yZChkYXRhQXNXb3JkcytpLCBkYXRhKyhpKjgpKTsKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZzEzNDRiaXRzKChVSU5UNjQqKXN0YXRlLCBkYXRhQXNXb3Jkcyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBLZWNjYWtBYnNvcmIodW5zaWduZWQgY2hhciAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZygoVUlOVDY0KilzdGF0ZSwgKGNvbnN0IFVJTlQ2NCopZGF0YSwgbGFuZUNvdW50KTsKKyNlbHNlCisgICAgVUlOVDY0IGRhdGFBc1dvcmRzWzI1XTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspCisgICAgICAgIGZyb21CeXRlc1RvV29yZChkYXRhQXNXb3JkcytpLCBkYXRhKyhpKjgpKTsKKyAgICBLZWNjYWtQZXJtdXRhdGlvbk9uV29yZHNBZnRlclhvcmluZygoVUlOVDY0KilzdGF0ZSwgZGF0YUFzV29yZHMsIGxhbmVDb3VudCk7CisjZW5kaWYKK30KKworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0JJR19FTkRJQU4pCitzdGF0aWMgdm9pZCBmcm9tV29yZFRvQnl0ZXMoVUlOVDggKmJ5dGVzLCBjb25zdCBVSU5UNjQgd29yZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8KDY0LzgpOyBpKyspCisgICAgICAgIGJ5dGVzW2ldID0gKHdvcmQgPj4gKDgqaSkpICYgMHhGRjsKK30KKyNlbmRpZgorCisKKyNpZmRlZiBQcm92aWRlRmFzdDEwMjQKK3N0YXRpYyB2b2lkIEtlY2Nha0V4dHJhY3QxMDI0Yml0cyhjb25zdCB1bnNpZ25lZCBjaGFyICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIG1lbWNweShkYXRhLCBzdGF0ZSwgMTI4KTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPDE2OyBpKyspCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyhkYXRhKyhpKjgpLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyNlbmRpZgorI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorICAgICgoVUlOVDY0KilkYXRhKVsgMV0gPSB+KChVSU5UNjQqKWRhdGEpWyAxXTsKKyAgICAoKFVJTlQ2NCopZGF0YSlbIDJdID0gfigoVUlOVDY0KilkYXRhKVsgMl07CisgICAgKChVSU5UNjQqKWRhdGEpWyA4XSA9IH4oKFVJTlQ2NCopZGF0YSlbIDhdOworICAgICgoVUlOVDY0KilkYXRhKVsxMl0gPSB+KChVSU5UNjQqKWRhdGEpWzEyXTsKKyNlbmRpZgorfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIEtlY2Nha0V4dHJhY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBtZW1jcHkoZGF0YSwgc3RhdGUsIGxhbmVDb3VudCo4KTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKQorICAgICAgICBmcm9tV29yZFRvQnl0ZXMoZGF0YSsoaSo4KSwgKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXSk7CisjZW5kaWYKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKyAgICBpZiAobGFuZUNvdW50ID4gMSkgeworICAgICAgICAoKFVJTlQ2NCopZGF0YSlbIDFdID0gfigoVUlOVDY0KilkYXRhKVsgMV07CisgICAgICAgIGlmIChsYW5lQ291bnQgPiAyKSB7CisgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbIDJdID0gfigoVUlOVDY0KilkYXRhKVsgMl07CisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gOCkgeworICAgICAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsgOF0gPSB+KChVSU5UNjQqKWRhdGEpWyA4XTsKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMTIpIHsKKyAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzEyXSA9IH4oKFVJTlQ2NCopZGF0YSlbMTJdOworICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsxN10gPSB+KChVSU5UNjQqKWRhdGEpWzE3XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAyMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsyMF0gPSB+KChVSU5UNjQqKWRhdGEpWzIwXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXNpbWQxMjgubWFjcm9zIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXNpbWQxMjgubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZTQ3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtc2ltZDEyOC5tYWNyb3MKQEAgLTAsMCArMSw2NTEgQEAKKy8qCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjZGVmaW5lIGRlY2xhcmVBQkNERSBcCisgICAgVjY0NjQgQWJhZ2UsIEFiZWdpLCBBYmlnbywgQWJvZ3UsIEFidWdhOyBcCisgICAgVjY0NjQgQWthbWUsIEFrZW1pLCBBa2ltbywgQWtvbXUsIEFrdW1hOyBcCisgICAgVjY0NjQgQWJhZSwgQWJpbywgQWdhZSwgQWdpbywgQWthZSwgQWtpbywgQW1hZSwgQW1pbywgQXNhZSwgQXNpbzsgXAorICAgIFY2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFY2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFY2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFY2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFY2NCBBc2EsIEFzZSwgQXNpLCBBc28sIEFzdTsgXAorICAgIFYxMjggQmJhZ2UsIEJiZWdpLCBCYmlnbywgQmJvZ3UsIEJidWdhOyBcCisgICAgVjEyOCBCa2FtZSwgQmtlbWksIEJraW1vLCBCa29tdSwgQmt1bWE7IFwKKyAgICBWNjQgQmJhLCBCYmUsIEJiaSwgQmJvLCBCYnU7IFwKKyAgICBWNjQgQmdhLCBCZ2UsIEJnaSwgQmdvLCBCZ3U7IFwKKyAgICBWNjQgQmthLCBCa2UsIEJraSwgQmtvLCBCa3U7IFwKKyAgICBWNjQgQm1hLCBCbWUsIEJtaSwgQm1vLCBCbXU7IFwKKyAgICBWNjQgQnNhLCBCc2UsIEJzaSwgQnNvLCBCc3U7IFwKKyAgICBWMTI4IENhZSwgQ2VpLCBDaW8sIENvdSwgQ3VhLCBEZWksIERvdTsgXAorICAgIFY2NCBDYSwgQ2UsIENpLCBDbywgQ3U7IFwKKyAgICBWNjQgRGEsIERlLCBEaSwgRG8sIER1OyBcCisgICAgVjY0NjQgRWJhZ2UsIEViZWdpLCBFYmlnbywgRWJvZ3UsIEVidWdhOyBcCisgICAgVjY0NjQgRWthbWUsIEVrZW1pLCBFa2ltbywgRWtvbXUsIEVrdW1hOyBcCisgICAgVjY0IEViYSwgRWJlLCBFYmksIEVibywgRWJ1OyBcCisgICAgVjY0IEVnYSwgRWdlLCBFZ2ksIEVnbywgRWd1OyBcCisgICAgVjY0IEVrYSwgRWtlLCBFa2ksIEVrbywgRWt1OyBcCisgICAgVjY0IEVtYSwgRW1lLCBFbWksIEVtbywgRW11OyBcCisgICAgVjY0IEVzYSwgRXNlLCBFc2ksIEVzbywgRXN1OyBcCisgICAgVjEyOCBaZXJvOworCisjZGVmaW5lIHByZXBhcmVUaGV0YQorCisjZGVmaW5lIGNvbXB1dGVEIFwKKyAgICBDdWEgPSBHRVQ2NExPTE8oQ3UsIENhZSk7IFwKKyAgICBEZWkgPSBYT1IxMjgoQ2FlLCBST0w2NGluMTI4KENpbywgMSkpOyBcCisgICAgRG91ID0gWE9SMTI4KENpbywgUk9MNjRpbjEyOChDdWEsIDEpKTsgXAorICAgIERhID0gWE9SNjQoQ3UsIFJPTDY0aW4xMjgoQ09QWTY0SEkyTE8oQ2FlKSwgMSkpOyBcCisgICAgRGUgPSBEZWk7IFwKKyAgICBEaSA9IENPUFk2NEhJMkxPKERlaSk7IFwKKyAgICBEbyA9IERvdTsgXAorICAgIER1ID0gQ09QWTY0SEkyTE8oRG91KTsKKworLyogIC0tLSBUaGV0YSBSaG8gUGkgQ2hpIElvdGEgUHJlcGFyZS10aGV0YSAqLworLyogIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCBhbmQgMTI4LWJpdCB3b3JkcyAqLworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgY29tcHV0ZUQgXAorICAgIFwKKyAgICBBIyNiYSA9IExPQUQ2NChBIyNiYWdlLnY2NFswXSk7IFwKKyAgICBYT1JlcTY0KEEjI2JhLCBEYSk7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIFhPUmVxNjQoQSMjZ3UsIER1KTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBCYmFnZSA9IEdFVDY0TE9MTyhCYmEsIEJnZSk7IFwKKyAgICBBIyNnZSA9IExPQUQ2NChBIyNiYWdlLnY2NFsxXSk7IFwKKyAgICBYT1JlcTY0KEEjI2dlLCBEZSk7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2EgPSBMT0FENjQoQSMja2FtZS52NjRbMF0pOyBcCisgICAgWE9SZXE2NChBIyNrYSwgRGEpOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQmJlZ2kgPSBHRVQ2NExPTE8oQmJlLCBCZ2kpOyBcCisgICAgWE9SZXE2NChBIyNraSwgRGkpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21lID0gTE9BRDY0KEEjI2thbWUudjY0WzFdKTsgXAorICAgIFhPUmVxNjQoQSMjbWUsIERlKTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBCYmlnbyA9IEdFVDY0TE9MTyhCYmksIEJnbyk7IFwKKyAgICBFIyNiYWdlLnYxMjggPSBYT1IxMjgoQmJhZ2UsIEFORG51MTI4KEJiZWdpLCBCYmlnbykpOyBcCisgICAgWE9SZXExMjgoRSMjYmFnZS52MTI4LCBDT05TVDY0KEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV0pKTsgXAorICAgIENhZSA9IEUjI2JhZ2UudjEyODsgXAorICAgIFhPUmVxNjQoQSMjbW8sIERvKTsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBYT1JlcTY0KEEjI3NpLCBEaSk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgQmJvZ3UgPSBHRVQ2NExPTE8oQmJvLCBCZ3UpOyBcCisgICAgRSMjYmVnaS52MTI4ID0gWE9SMTI4KEJiZWdpLCBBTkRudTEyOChCYmlnbywgQmJvZ3UpKTsgXAorICAgIENlaSA9IEUjI2JlZ2kudjEyODsgXAorICAgIFhPUmVxNjQoQSMjc3UsIER1KTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBYT1JlcTY0KEEjI2JvLCBEbyk7IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQmJ1Z2EgPSBHRVQ2NExPTE8oQmJ1LCBCZ2EpOyBcCisgICAgRSMjYmlnby52MTI4ID0gWE9SMTI4KEJiaWdvLCBBTkRudTEyOChCYm9ndSwgQmJ1Z2EpKTsgXAorICAgIEUjI2JpID0gRSMjYmlnby52MTI4OyBcCisgICAgRSMjZ28gPSBHRVQ2NEhJSEkoRSMjYmlnby52MTI4LCBFIyNiaWdvLnYxMjgpOyBcCisgICAgQ2lvID0gRSMjYmlnby52MTI4OyBcCisgICAgRSMjYm9ndS52MTI4ID0gWE9SMTI4KEJib2d1LCBBTkRudTEyOChCYnVnYSwgQmJhZ2UpKTsgXAorICAgIEUjI2JvID0gRSMjYm9ndS52MTI4OyBcCisgICAgRSMjZ3UgPSBHRVQ2NEhJSEkoRSMjYm9ndS52MTI4LCBFIyNib2d1LnYxMjgpOyBcCisgICAgQ291ID0gRSMjYm9ndS52MTI4OyBcCisgICAgRSMjYnVnYS52MTI4ID0gWE9SMTI4KEJidWdhLCBBTkRudTEyOChCYmFnZSwgQmJlZ2kpKTsgXAorICAgIEUjI2J1ID0gRSMjYnVnYS52MTI4OyBcCisgICAgRSMjZ2EgPSBHRVQ2NEhJSEkoRSMjYnVnYS52MTI4LCBFIyNidWdhLnYxMjgpOyBcCisgICAgQ3VhID0gRSMjYnVnYS52MTI4OyBcCitcCisgICAgQSMjYmUgPSBMT0FENjQoQSMjYmVnaS52NjRbMF0pOyBcCisgICAgWE9SZXE2NChBIyNiZSwgRGUpOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgWE9SZXE2NChBIyNnYSwgRGEpOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEJrYW1lID0gR0VUNjRMT0xPKEJrYSwgQm1lKTsgXAorICAgIEEjI2dpID0gTE9BRDY0KEEjI2JlZ2kudjY0WzFdKTsgXAorICAgIFhPUmVxNjQoQSMjZ2ksIERpKTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tlID0gTE9BRDY0KEEjI2tlbWkudjY0WzBdKTsgXAorICAgIFhPUmVxNjQoQSMja2UsIERlKTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBCa2VtaSA9IEdFVDY0TE9MTyhCa2UsIEJtaSk7IFwKKyAgICBYT1JlcTY0KEEjI2tvLCBEbyk7IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbWkgPSBMT0FENjQoQSMja2VtaS52NjRbMV0pOyBcCisgICAgWE9SZXE2NChBIyNtaSwgRGkpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEJraW1vID0gR0VUNjRMT0xPKEJraSwgQm1vKTsgXAorICAgIEUjI2thbWUudjEyOCA9IFhPUjEyOChCa2FtZSwgQU5EbnUxMjgoQmtlbWksIEJraW1vKSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIEUjI2thbWUudjEyOCk7IFwKKyAgICBCa29tdSA9IEdFVDY0TE9MTyhYT1I2NChBIyNtdSwgRHUpLCBYT1I2NChBIyNzbywgRG8pKTsgXAorICAgIEJrb211ID0gU0hVRkZMRUJZVEVTMTI4KEJrb211LCBDT05TVDEyOChyaG84XzU2KSk7IFwKKyAgICBFIyNrZW1pLnYxMjggPSBYT1IxMjgoQmtlbWksIEFORG51MTI4KEJraW1vLCBCa29tdSkpOyBcCisgICAgWE9SZXExMjgoQ2VpLCBFIyNrZW1pLnYxMjgpOyBcCisgICAgWE9SZXE2NChBIyNzYSwgRGEpOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIFhPUmVxNjQoQSMjYnUsIER1KTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBCa3VtYSA9IEdFVDY0TE9MTyhCa3UsIEJtYSk7IFwKKyAgICBFIyNraW1vLnYxMjggPSBYT1IxMjgoQmtpbW8sIEFORG51MTI4KEJrb211LCBCa3VtYSkpOyBcCisgICAgRSMja2kgPSBFIyNraW1vLnYxMjg7IFwKKyAgICBFIyNtbyA9IEdFVDY0SElISShFIyNraW1vLnYxMjgsIEUjI2tpbW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIEUjI2tpbW8udjEyOCk7IFwKKyAgICBFIyNrb211LnYxMjggPSBYT1IxMjgoQmtvbXUsIEFORG51MTI4KEJrdW1hLCBCa2FtZSkpOyBcCisgICAgRSMja28gPSBFIyNrb211LnYxMjg7IFwKKyAgICBFIyNtdSA9IEdFVDY0SElISShFIyNrb211LnYxMjgsIEUjI2tvbXUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDb3UsIEUjI2tvbXUudjEyOCk7IFwKKyAgICBFIyNrdW1hLnYxMjggPSBYT1IxMjgoQmt1bWEsIEFORG51MTI4KEJrYW1lLCBCa2VtaSkpOyBcCisgICAgRSMja3UgPSBFIyNrdW1hLnYxMjg7IFwKKyAgICBFIyNtYSA9IEdFVDY0SElISShFIyNrdW1hLnYxMjgsIEUjI2t1bWEudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDdWEsIEUjI2t1bWEudjEyOCk7IFwKK1wKKyAgICBYT1JlcTY0KEEjI2JpLCBEaSk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgWE9SZXE2NChBIyNnbywgRG8pOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIFhPUmVxNjQoQSMja3UsIER1KTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBFIyNzYSA9IFhPUjY0KEJzYSwgQU5EbnU2NChCc2UsIEJzaSkpOyBcCisgICAgQ2EgPSBFIyNzYTsgXAorICAgIFhPUmVxNjQoQSMjbWEsIERhKTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBFIyNzZSA9IFhPUjY0KEJzZSwgQU5EbnU2NChCc2ksIEJzbykpOyBcCisgICAgQ2UgPSBFIyNzZTsgXAorICAgIFhPUmVxMTI4KENhZSwgR0VUNjRMT0xPKENhLCBDZSkpOyBcCisgICAgWE9SZXE2NChBIyNzZSwgRGUpOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2kgPSBYT1I2NChCc2ksIEFORG51NjQoQnNvLCBCc3UpKTsgXAorICAgIENpID0gRSMjc2k7IFwKKyAgICBFIyNzbyA9IFhPUjY0KEJzbywgQU5EbnU2NChCc3UsIEJzYSkpOyBcCisgICAgQ28gPSBFIyNzbzsgXAorICAgIFhPUmVxMTI4KENpbywgR0VUNjRMT0xPKENpLCBDbykpOyBcCisgICAgRSMjc3UgPSBYT1I2NChCc3UsIEFORG51NjQoQnNhLCBCc2UpKTsgXAorICAgIEN1ID0gRSMjc3U7IFwKK1wKKyAgICBaZXJvID0gWkVSTzEyOCgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBHRVQ2NEhJSEkoQ3VhLCBaZXJvKSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIEdFVDY0TE9MTyhaZXJvLCBDZWkpKTsgXAorICAgIFhPUmVxMTI4KENpbywgR0VUNjRISUhJKENlaSwgWmVybykpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBHRVQ2NExPTE8oWmVybywgQ291KSk7IFwKKyAgICBYT1JlcTEyOChDdWEsIEdFVDY0SElISShDb3UsIFplcm8pKTsgXAorICAgIFhPUmVxNjQoQ3UsIEN1YSk7IFwKKworLyogIC0tLSBUaGV0YSBSaG8gUGkgQ2hpIElvdGEgKi8KKy8qICAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgYW5kIDEyOC1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkKKworc3RhdGljIGNvbnN0IFVJTlQ2NCBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwMDAwMDAwMDFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDgyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4YVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDhiVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4YVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwODhVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4OVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDNVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4MFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODBVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwOFVMTCB9OworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3I1NzZiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhZS52MTI4ID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDBdKSwgTE9BRDEyOHUoaW5wdXRbIDBdKSk7IFwKKyAgICBYIyNiYSA9IFgjI2JhZS52MTI4OyBcCisgICAgWCMjYmUgPSBHRVQ2NEhJSEkoWCMjYmFlLnYxMjgsIFgjI2JhZS52MTI4KTsgXAorICAgIENhZSA9IFgjI2JhZS52MTI4OyBcCisgICAgWCMjYmlvLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMl0pLCBMT0FEMTI4dShpbnB1dFsgMl0pKTsgXAorICAgIFgjI2JpID0gWCMjYmlvLnYxMjg7IFwKKyAgICBYIyNibyA9IEdFVDY0SElISShYIyNiaW8udjEyOCwgWCMjYmlvLnYxMjgpOyBcCisgICAgQ2lvID0gWCMjYmlvLnYxMjg7IFwKKyAgICBYIyNidSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNF0pLCBMT0FENjQoaW5wdXRbIDRdKSk7IFwKKyAgICBDdSA9IFgjI2J1OyBcCisgICAgWCMjZ2FlLnYxMjggPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbIDVdKSwgTE9BRDEyOHUoaW5wdXRbIDVdKSk7IFwKKyAgICBYIyNnYSA9IFgjI2dhZS52MTI4OyBcCisgICAgWCMjZ2UgPSBHRVQ2NEhJSEkoWCMjZ2FlLnYxMjgsIFgjI2dhZS52MTI4KTsgXAorICAgIFgjI2JhZ2UudjEyOCA9IEdFVDY0TE9MTyhYIyNiYSwgWCMjZ2UpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNnYWUudjEyOCk7IFwKKyAgICBYIyNnaW8udjEyOCA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgN10pLCBMT0FEMTI4dShpbnB1dFsgN10pKTsgXAorICAgIFgjI2dpID0gWCMjZ2lvLnYxMjg7IFwKKyAgICBYIyNiZWdpLnYxMjggPSBHRVQ2NExPTE8oWCMjYmUsIFgjI2dpKTsgXAorICAgIFgjI2dvID0gR0VUNjRISUhJKFgjI2dpby52MTI4LCBYIyNnaW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2dpby52MTI4KTsgXAorICAgIFgjI2d1ID0gTE9BRDY0KHN0YXRlWyA5XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNndSk7IFwKKyAgICBYIyNrYWUudjEyOCA9IExPQUQxMjgoc3RhdGVbMTBdKTsgXAorICAgIFgjI2thID0gWCMja2FlLnYxMjg7IFwKKyAgICBYIyNrZSA9IEdFVDY0SElISShYIyNrYWUudjEyOCwgWCMja2FlLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUudjEyOCk7IFwKKyAgICBYIyNraW8udjEyOCA9IExPQUQxMjgoc3RhdGVbMTJdKTsgXAorICAgIFgjI2tpID0gWCMja2lvLnYxMjg7IFwKKyAgICBYIyNrbyA9IEdFVDY0SElISShYIyNraW8udjEyOCwgWCMja2lvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNraW8udjEyOCk7IFwKKyAgICBYIyNrdSA9IExPQUQ2NChzdGF0ZVsxNF0pOyBcCisgICAgWE9SZXE2NChDdSwgWCMja3UpOyBcCisgICAgWCMjbWFlLnYxMjggPSBMT0FEMTI4dShzdGF0ZVsxNV0pOyBcCisgICAgWCMjbWEgPSBYIyNtYWUudjEyODsgXAorICAgIFgjI21lID0gR0VUNjRISUhJKFgjI21hZS52MTI4LCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNrYW1lLnYxMjggPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjbWFlLnYxMjgpOyBcCisgICAgWCMjbWlvLnYxMjggPSBMT0FEMTI4dShzdGF0ZVsxN10pOyBcCisgICAgWCMjbWkgPSBYIyNtaW8udjEyODsgXAorICAgIFgjI2tlbWkudjEyOCA9IEdFVDY0TE9MTyhYIyNrZSwgWCMjbWkpOyBcCisgICAgWCMjbW8gPSBHRVQ2NEhJSEkoWCMjbWlvLnYxMjgsIFgjI21pby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjbWlvLnYxMjgpOyBcCisgICAgWCMjbXUgPSBMT0FENjQoc3RhdGVbMTldKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI211KTsgXAorICAgIFgjI3NhZS52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2EgPSBYIyNzYWUudjEyODsgXAorICAgIFgjI3NlID0gR0VUNjRISUhJKFgjI3NhZS52MTI4LCBYIyNzYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3NhZS52MTI4KTsgXAorICAgIFgjI3Npby52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc2kgPSBYIyNzaW8udjEyODsgXAorICAgIFgjI3NvID0gR0VUNjRISUhJKFgjI3Npby52MTI4LCBYIyNzaW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI3Npby52MTI4KTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNzdSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yODMyYml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAwXSksIExPQUQxMjh1KGlucHV0WyAwXSkpOyBcCisgICAgWCMjYmEgPSBYIyNiYWUudjEyODsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZS52MTI4LCBYIyNiYWUudjEyOCk7IFwKKyAgICBDYWUgPSBYIyNiYWUudjEyODsgXAorICAgIFgjI2Jpby52MTI4ID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDJdKSwgTE9BRDEyOHUoaW5wdXRbIDJdKSk7IFwKKyAgICBYIyNiaSA9IFgjI2Jpby52MTI4OyBcCisgICAgWCMjYm8gPSBHRVQ2NEhJSEkoWCMjYmlvLnYxMjgsIFgjI2Jpby52MTI4KTsgXAorICAgIENpbyA9IFgjI2Jpby52MTI4OyBcCisgICAgWCMjYnUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDRdKSwgTE9BRDY0KGlucHV0WyA0XSkpOyBcCisgICAgQ3UgPSBYIyNidTsgXAorICAgIFgjI2dhZS52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA1XSksIExPQUQxMjh1KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2EgPSBYIyNnYWUudjEyODsgXAorICAgIFgjI2dlID0gR0VUNjRISUhJKFgjI2dhZS52MTI4LCBYIyNnYWUudjEyOCk7IFwKKyAgICBYIyNiYWdlLnYxMjggPSBHRVQ2NExPTE8oWCMjYmEsIFgjI2dlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjZ2FlLnYxMjgpOyBcCisgICAgWCMjZ2lvLnYxMjggPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbIDddKSwgTE9BRDEyOHUoaW5wdXRbIDddKSk7IFwKKyAgICBYIyNnaSA9IFgjI2dpby52MTI4OyBcCisgICAgWCMjYmVnaS52MTI4ID0gR0VUNjRMT0xPKFgjI2JlLCBYIyNnaSk7IFwKKyAgICBYIyNnbyA9IEdFVDY0SElISShYIyNnaW8udjEyOCwgWCMjZ2lvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNnaW8udjEyOCk7IFwKKyAgICBYIyNndSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOV0pLCBMT0FENjQoaW5wdXRbIDldKSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNndSk7IFwKKyAgICBYIyNrYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEwXSksIExPQUQxMjh1KGlucHV0WzEwXSkpOyBcCisgICAgWCMja2EgPSBYIyNrYWUudjEyODsgXAorICAgIFgjI2tlID0gR0VUNjRISUhJKFgjI2thZS52MTI4LCBYIyNrYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2thZS52MTI4KTsgXAorICAgIFgjI2tpby52MTI4ID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTJdKSwgTE9BRDY0KGlucHV0WzEyXSkpOyBcCisgICAgWCMja2kgPSBYIyNraW8udjEyODsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpby52MTI4LCBYIyNraW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpby52MTI4KTsgXAorICAgIFgjI2t1ID0gTE9BRDY0KHN0YXRlWzE0XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNrdSk7IFwKKyAgICBYIyNtYWUudjEyOCA9IExPQUQxMjh1KHN0YXRlWzE1XSk7IFwKKyAgICBYIyNtYSA9IFgjI21hZS52MTI4OyBcCisgICAgWCMjbWUgPSBHRVQ2NEhJSEkoWCMjbWFlLnYxMjgsIFgjI21hZS52MTI4KTsgXAorICAgIFgjI2thbWUudjEyOCA9IEdFVDY0TE9MTyhYIyNrYSwgWCMjbWUpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNtaW8udjEyOCA9IExPQUQxMjh1KHN0YXRlWzE3XSk7IFwKKyAgICBYIyNtaSA9IFgjI21pby52MTI4OyBcCisgICAgWCMja2VtaS52MTI4ID0gR0VUNjRMT0xPKFgjI2tlLCBYIyNtaSk7IFwKKyAgICBYIyNtbyA9IEdFVDY0SElISShYIyNtaW8udjEyOCwgWCMjbWlvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNtaW8udjEyOCk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWE9SZXE2NChDdSwgWCMjbXUpOyBcCisgICAgWCMjc2FlLnYxMjggPSBMT0FEMTI4KHN0YXRlWzIwXSk7IFwKKyAgICBYIyNzYSA9IFgjI3NhZS52MTI4OyBcCisgICAgWCMjc2UgPSBHRVQ2NEhJSEkoWCMjc2FlLnYxMjgsIFgjI3NhZS52MTI4KTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjc2FlLnYxMjgpOyBcCisgICAgWCMjc2lvLnYxMjggPSBMT0FEMTI4KHN0YXRlWzIyXSk7IFwKKyAgICBYIyNzaSA9IFgjI3Npby52MTI4OyBcCisgICAgWCMjc28gPSBHRVQ2NEhJSEkoWCMjc2lvLnYxMjgsIFgjI3Npby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjc2lvLnYxMjgpOyBcCisgICAgWCMjc3UgPSBMT0FENjQoc3RhdGVbMjRdKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDI0Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAwXSksIExPQUQxMjh1KGlucHV0WyAwXSkpOyBcCisgICAgWCMjYmEgPSBYIyNiYWUudjEyODsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZS52MTI4LCBYIyNiYWUudjEyOCk7IFwKKyAgICBDYWUgPSBYIyNiYWUudjEyODsgXAorICAgIFgjI2Jpby52MTI4ID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDJdKSwgTE9BRDEyOHUoaW5wdXRbIDJdKSk7IFwKKyAgICBYIyNiaSA9IFgjI2Jpby52MTI4OyBcCisgICAgWCMjYm8gPSBHRVQ2NEhJSEkoWCMjYmlvLnYxMjgsIFgjI2Jpby52MTI4KTsgXAorICAgIENpbyA9IFgjI2Jpby52MTI4OyBcCisgICAgWCMjYnUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDRdKSwgTE9BRDY0KGlucHV0WyA0XSkpOyBcCisgICAgQ3UgPSBYIyNidTsgXAorICAgIFgjI2dhZS52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA1XSksIExPQUQxMjh1KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2EgPSBYIyNnYWUudjEyODsgXAorICAgIFgjI2dlID0gR0VUNjRISUhJKFgjI2dhZS52MTI4LCBYIyNnYWUudjEyOCk7IFwKKyAgICBYIyNiYWdlLnYxMjggPSBHRVQ2NExPTE8oWCMjYmEsIFgjI2dlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjZ2FlLnYxMjgpOyBcCisgICAgWCMjZ2lvLnYxMjggPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbIDddKSwgTE9BRDEyOHUoaW5wdXRbIDddKSk7IFwKKyAgICBYIyNnaSA9IFgjI2dpby52MTI4OyBcCisgICAgWCMjYmVnaS52MTI4ID0gR0VUNjRMT0xPKFgjI2JlLCBYIyNnaSk7IFwKKyAgICBYIyNnbyA9IEdFVDY0SElISShYIyNnaW8udjEyOCwgWCMjZ2lvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNnaW8udjEyOCk7IFwKKyAgICBYIyNndSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOV0pLCBMT0FENjQoaW5wdXRbIDldKSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNndSk7IFwKKyAgICBYIyNrYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEwXSksIExPQUQxMjh1KGlucHV0WzEwXSkpOyBcCisgICAgWCMja2EgPSBYIyNrYWUudjEyODsgXAorICAgIFgjI2tlID0gR0VUNjRISUhJKFgjI2thZS52MTI4LCBYIyNrYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2thZS52MTI4KTsgXAorICAgIFgjI2tpby52MTI4ID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTJdKSwgTE9BRDEyOHUoaW5wdXRbMTJdKSk7IFwKKyAgICBYIyNraSA9IFgjI2tpby52MTI4OyBcCisgICAgWCMja28gPSBHRVQ2NEhJSEkoWCMja2lvLnYxMjgsIFgjI2tpby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMja2lvLnYxMjgpOyBcCisgICAgWCMja3UgPSBYT1I2NChMT0FENjQoc3RhdGVbMTRdKSwgTE9BRDY0KGlucHV0WzE0XSkpOyBcCisgICAgWE9SZXE2NChDdSwgWCMja3UpOyBcCisgICAgWCMjbWFlLnYxMjggPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbMTVdKSwgTE9BRDY0KGlucHV0WzE1XSkpOyBcCisgICAgWCMjbWEgPSBYIyNtYWUudjEyODsgXAorICAgIFgjI21lID0gR0VUNjRISUhJKFgjI21hZS52MTI4LCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNrYW1lLnYxMjggPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjbWFlLnYxMjgpOyBcCisgICAgWCMjbWlvLnYxMjggPSBMT0FEMTI4dShzdGF0ZVsxN10pOyBcCisgICAgWCMjbWkgPSBYIyNtaW8udjEyODsgXAorICAgIFgjI2tlbWkudjEyOCA9IEdFVDY0TE9MTyhYIyNrZSwgWCMjbWkpOyBcCisgICAgWCMjbW8gPSBHRVQ2NEhJSEkoWCMjbWlvLnYxMjgsIFgjI21pby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjbWlvLnYxMjgpOyBcCisgICAgWCMjbXUgPSBMT0FENjQoc3RhdGVbMTldKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI211KTsgXAorICAgIFgjI3NhZS52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2EgPSBYIyNzYWUudjEyODsgXAorICAgIFgjI3NlID0gR0VUNjRISUhJKFgjI3NhZS52MTI4LCBYIyNzYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3NhZS52MTI4KTsgXAorICAgIFgjI3Npby52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc2kgPSBYIyNzaW8udjEyODsgXAorICAgIFgjI3NvID0gR0VUNjRISUhJKFgjI3Npby52MTI4LCBYIyNzaW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI3Npby52MTI4KTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNzdSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yMTA4OGJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmFlLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMF0pLCBMT0FEMTI4dShpbnB1dFsgMF0pKTsgXAorICAgIFgjI2JhID0gWCMjYmFlLnYxMjg7IFwKKyAgICBYIyNiZSA9IEdFVDY0SElISShYIyNiYWUudjEyOCwgWCMjYmFlLnYxMjgpOyBcCisgICAgQ2FlID0gWCMjYmFlLnYxMjg7IFwKKyAgICBYIyNiaW8udjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAyXSksIExPQUQxMjh1KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYmkgPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2JvID0gR0VUNjRISUhJKFgjI2Jpby52MTI4LCBYIyNiaW8udjEyOCk7IFwKKyAgICBDaW8gPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2J1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA0XSksIExPQUQ2NChpbnB1dFsgNF0pKTsgXAorICAgIEN1ID0gWCMjYnU7IFwKKyAgICBYIyNnYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgNV0pLCBMT0FEMTI4dShpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlLnYxMjg7IFwKKyAgICBYIyNnZSA9IEdFVDY0SElISShYIyNnYWUudjEyOCwgWCMjZ2FlLnYxMjgpOyBcCisgICAgWCMjYmFnZS52MTI4ID0gR0VUNjRMT0xPKFgjI2JhLCBYIyNnZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2dhZS52MTI4KTsgXAorICAgIFgjI2dpby52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA3XSksIExPQUQxMjh1KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ2kgPSBYIyNnaW8udjEyODsgXAorICAgIFgjI2JlZ2kudjEyOCA9IEdFVDY0TE9MTyhYIyNiZSwgWCMjZ2kpOyBcCisgICAgWCMjZ28gPSBHRVQ2NEhJSEkoWCMjZ2lvLnYxMjgsIFgjI2dpby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjZ2lvLnYxMjgpOyBcCisgICAgWCMjZ3UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDldKSwgTE9BRDY0KGlucHV0WyA5XSkpOyBcCisgICAgWE9SZXE2NChDdSwgWCMjZ3UpOyBcCisgICAgWCMja2FlLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxMF0pLCBMT0FEMTI4dShpbnB1dFsxMF0pKTsgXAorICAgIFgjI2thID0gWCMja2FlLnYxMjg7IFwKKyAgICBYIyNrZSA9IEdFVDY0SElISShYIyNrYWUudjEyOCwgWCMja2FlLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUudjEyOCk7IFwKKyAgICBYIyNraW8udjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEyXSksIExPQUQxMjh1KGlucHV0WzEyXSkpOyBcCisgICAgWCMja2kgPSBYIyNraW8udjEyODsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpby52MTI4LCBYIyNraW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpby52MTI4KTsgXAorICAgIFgjI2t1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWzE0XSksIExPQUQ2NChpbnB1dFsxNF0pKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI2t1KTsgXAorICAgIFgjI21hZS52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWzE1XSksIExPQUQxMjh1KGlucHV0WzE1XSkpOyBcCisgICAgWCMjbWEgPSBYIyNtYWUudjEyODsgXAorICAgIFgjI21lID0gR0VUNjRISUhJKFgjI21hZS52MTI4LCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNrYW1lLnYxMjggPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjbWFlLnYxMjgpOyBcCisgICAgWCMjbWlvLnYxMjggPSBMT0FEMTI4dShzdGF0ZVsxN10pOyBcCisgICAgWCMjbWkgPSBYIyNtaW8udjEyODsgXAorICAgIFgjI2tlbWkudjEyOCA9IEdFVDY0TE9MTyhYIyNrZSwgWCMjbWkpOyBcCisgICAgWCMjbW8gPSBHRVQ2NEhJSEkoWCMjbWlvLnYxMjgsIFgjI21pby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjbWlvLnYxMjgpOyBcCisgICAgWCMjbXUgPSBMT0FENjQoc3RhdGVbMTldKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI211KTsgXAorICAgIFgjI3NhZS52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2EgPSBYIyNzYWUudjEyODsgXAorICAgIFgjI3NlID0gR0VUNjRISUhJKFgjI3NhZS52MTI4LCBYIyNzYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3NhZS52MTI4KTsgXAorICAgIFgjI3Npby52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc2kgPSBYIyNzaW8udjEyODsgXAorICAgIFgjI3NvID0gR0VUNjRISUhJKFgjI3Npby52MTI4LCBYIyNzaW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI3Npby52MTI4KTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNzdSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yMTE1MmJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmFlLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMF0pLCBMT0FEMTI4dShpbnB1dFsgMF0pKTsgXAorICAgIFgjI2JhID0gWCMjYmFlLnYxMjg7IFwKKyAgICBYIyNiZSA9IEdFVDY0SElISShYIyNiYWUudjEyOCwgWCMjYmFlLnYxMjgpOyBcCisgICAgQ2FlID0gWCMjYmFlLnYxMjg7IFwKKyAgICBYIyNiaW8udjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAyXSksIExPQUQxMjh1KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYmkgPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2JvID0gR0VUNjRISUhJKFgjI2Jpby52MTI4LCBYIyNiaW8udjEyOCk7IFwKKyAgICBDaW8gPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2J1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA0XSksIExPQUQ2NChpbnB1dFsgNF0pKTsgXAorICAgIEN1ID0gWCMjYnU7IFwKKyAgICBYIyNnYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgNV0pLCBMT0FEMTI4dShpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlLnYxMjg7IFwKKyAgICBYIyNnZSA9IEdFVDY0SElISShYIyNnYWUudjEyOCwgWCMjZ2FlLnYxMjgpOyBcCisgICAgWCMjYmFnZS52MTI4ID0gR0VUNjRMT0xPKFgjI2JhLCBYIyNnZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2dhZS52MTI4KTsgXAorICAgIFgjI2dpby52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA3XSksIExPQUQxMjh1KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ2kgPSBYIyNnaW8udjEyODsgXAorICAgIFgjI2JlZ2kudjEyOCA9IEdFVDY0TE9MTyhYIyNiZSwgWCMjZ2kpOyBcCisgICAgWCMjZ28gPSBHRVQ2NEhJSEkoWCMjZ2lvLnYxMjgsIFgjI2dpby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjZ2lvLnYxMjgpOyBcCisgICAgWCMjZ3UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDldKSwgTE9BRDY0KGlucHV0WyA5XSkpOyBcCisgICAgWE9SZXE2NChDdSwgWCMjZ3UpOyBcCisgICAgWCMja2FlLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxMF0pLCBMT0FEMTI4dShpbnB1dFsxMF0pKTsgXAorICAgIFgjI2thID0gWCMja2FlLnYxMjg7IFwKKyAgICBYIyNrZSA9IEdFVDY0SElISShYIyNrYWUudjEyOCwgWCMja2FlLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUudjEyOCk7IFwKKyAgICBYIyNraW8udjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEyXSksIExPQUQxMjh1KGlucHV0WzEyXSkpOyBcCisgICAgWCMja2kgPSBYIyNraW8udjEyODsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpby52MTI4LCBYIyNraW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpby52MTI4KTsgXAorICAgIFgjI2t1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWzE0XSksIExPQUQ2NChpbnB1dFsxNF0pKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI2t1KTsgXAorICAgIFgjI21hZS52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWzE1XSksIExPQUQxMjh1KGlucHV0WzE1XSkpOyBcCisgICAgWCMjbWEgPSBYIyNtYWUudjEyODsgXAorICAgIFgjI21lID0gR0VUNjRISUhJKFgjI21hZS52MTI4LCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNrYW1lLnYxMjggPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjbWFlLnYxMjgpOyBcCisgICAgWCMjbWlvLnYxMjggPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbMTddKSwgTE9BRDY0KGlucHV0WzE3XSkpOyBcCisgICAgWCMjbWkgPSBYIyNtaW8udjEyODsgXAorICAgIFgjI2tlbWkudjEyOCA9IEdFVDY0TE9MTyhYIyNrZSwgWCMjbWkpOyBcCisgICAgWCMjbW8gPSBHRVQ2NEhJSEkoWCMjbWlvLnYxMjgsIFgjI21pby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjbWlvLnYxMjgpOyBcCisgICAgWCMjbXUgPSBMT0FENjQoc3RhdGVbMTldKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI211KTsgXAorICAgIFgjI3NhZS52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2EgPSBYIyNzYWUudjEyODsgXAorICAgIFgjI3NlID0gR0VUNjRISUhJKFgjI3NhZS52MTI4LCBYIyNzYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3NhZS52MTI4KTsgXAorICAgIFgjI3Npby52MTI4ID0gTE9BRDEyOChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc2kgPSBYIyNzaW8udjEyODsgXAorICAgIFgjI3NvID0gR0VUNjRISUhJKFgjI3Npby52MTI4LCBYIyNzaW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI3Npby52MTI4KTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNzdSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yMTM0NGJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmFlLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMF0pLCBMT0FEMTI4dShpbnB1dFsgMF0pKTsgXAorICAgIFgjI2JhID0gWCMjYmFlLnYxMjg7IFwKKyAgICBYIyNiZSA9IEdFVDY0SElISShYIyNiYWUudjEyOCwgWCMjYmFlLnYxMjgpOyBcCisgICAgQ2FlID0gWCMjYmFlLnYxMjg7IFwKKyAgICBYIyNiaW8udjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAyXSksIExPQUQxMjh1KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYmkgPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2JvID0gR0VUNjRISUhJKFgjI2Jpby52MTI4LCBYIyNiaW8udjEyOCk7IFwKKyAgICBDaW8gPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2J1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA0XSksIExPQUQ2NChpbnB1dFsgNF0pKTsgXAorICAgIEN1ID0gWCMjYnU7IFwKKyAgICBYIyNnYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgNV0pLCBMT0FEMTI4dShpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlLnYxMjg7IFwKKyAgICBYIyNnZSA9IEdFVDY0SElISShYIyNnYWUudjEyOCwgWCMjZ2FlLnYxMjgpOyBcCisgICAgWCMjYmFnZS52MTI4ID0gR0VUNjRMT0xPKFgjI2JhLCBYIyNnZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2dhZS52MTI4KTsgXAorICAgIFgjI2dpby52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA3XSksIExPQUQxMjh1KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ2kgPSBYIyNnaW8udjEyODsgXAorICAgIFgjI2JlZ2kudjEyOCA9IEdFVDY0TE9MTyhYIyNiZSwgWCMjZ2kpOyBcCisgICAgWCMjZ28gPSBHRVQ2NEhJSEkoWCMjZ2lvLnYxMjgsIFgjI2dpby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjZ2lvLnYxMjgpOyBcCisgICAgWCMjZ3UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDldKSwgTE9BRDY0KGlucHV0WyA5XSkpOyBcCisgICAgWE9SZXE2NChDdSwgWCMjZ3UpOyBcCisgICAgWCMja2FlLnYxMjggPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxMF0pLCBMT0FEMTI4dShpbnB1dFsxMF0pKTsgXAorICAgIFgjI2thID0gWCMja2FlLnYxMjg7IFwKKyAgICBYIyNrZSA9IEdFVDY0SElISShYIyNrYWUudjEyOCwgWCMja2FlLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUudjEyOCk7IFwKKyAgICBYIyNraW8udjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEyXSksIExPQUQxMjh1KGlucHV0WzEyXSkpOyBcCisgICAgWCMja2kgPSBYIyNraW8udjEyODsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpby52MTI4LCBYIyNraW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpby52MTI4KTsgXAorICAgIFgjI2t1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWzE0XSksIExPQUQ2NChpbnB1dFsxNF0pKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI2t1KTsgXAorICAgIFgjI21hZS52MTI4ID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWzE1XSksIExPQUQxMjh1KGlucHV0WzE1XSkpOyBcCisgICAgWCMjbWEgPSBYIyNtYWUudjEyODsgXAorICAgIFgjI21lID0gR0VUNjRISUhJKFgjI21hZS52MTI4LCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNrYW1lLnYxMjggPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjbWFlLnYxMjgpOyBcCisgICAgWCMjbWlvLnYxMjggPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbMTddKSwgTE9BRDEyOHUoaW5wdXRbMTddKSk7IFwKKyAgICBYIyNtaSA9IFgjI21pby52MTI4OyBcCisgICAgWCMja2VtaS52MTI4ID0gR0VUNjRMT0xPKFgjI2tlLCBYIyNtaSk7IFwKKyAgICBYIyNtbyA9IEdFVDY0SElISShYIyNtaW8udjEyOCwgWCMjbWlvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNtaW8udjEyOCk7IFwKKyAgICBYIyNtdSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxOV0pLCBMT0FENjQoaW5wdXRbMTldKSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNtdSk7IFwKKyAgICBYIyNzYWUudjEyOCA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzIwXSksIExPQUQ2NChpbnB1dFsyMF0pKTsgXAorICAgIFgjI3NhID0gWCMjc2FlLnYxMjg7IFwKKyAgICBYIyNzZSA9IEdFVDY0SElISShYIyNzYWUudjEyOCwgWCMjc2FlLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNzYWUudjEyOCk7IFwKKyAgICBYIyNzaW8udjEyOCA9IExPQUQxMjgoc3RhdGVbMjJdKTsgXAorICAgIFgjI3NpID0gWCMjc2lvLnYxMjg7IFwKKyAgICBYIyNzbyA9IEdFVDY0SElISShYIyNzaW8udjEyOCwgWCMjc2lvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNzaW8udjEyOCk7IFwKKyAgICBYIyNzdSA9IExPQUQ2NChzdGF0ZVsyNF0pOyBcCisgICAgWE9SZXE2NChDdSwgWCMjc3UpOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhZS52MTI4ID0gTE9BRDEyOChzdGF0ZVsgMF0pOyBcCisgICAgWCMjYmEgPSBYIyNiYWUudjEyODsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZS52MTI4LCBYIyNiYWUudjEyOCk7IFwKKyAgICBDYWUgPSBYIyNiYWUudjEyODsgXAorICAgIFgjI2Jpby52MTI4ID0gTE9BRDEyOChzdGF0ZVsgMl0pOyBcCisgICAgWCMjYmkgPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2JvID0gR0VUNjRISUhJKFgjI2Jpby52MTI4LCBYIyNiaW8udjEyOCk7IFwKKyAgICBDaW8gPSBYIyNiaW8udjEyODsgXAorICAgIFgjI2J1ID0gTE9BRDY0KHN0YXRlWyA0XSk7IFwKKyAgICBDdSA9IFgjI2J1OyBcCisgICAgWCMjZ2FlLnYxMjggPSBMT0FEMTI4dShzdGF0ZVsgNV0pOyBcCisgICAgWCMjZ2EgPSBYIyNnYWUudjEyODsgXAorICAgIFgjI2dlID0gR0VUNjRISUhJKFgjI2dhZS52MTI4LCBYIyNnYWUudjEyOCk7IFwKKyAgICBYIyNiYWdlLnYxMjggPSBHRVQ2NExPTE8oWCMjYmEsIFgjI2dlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjZ2FlLnYxMjgpOyBcCisgICAgWCMjZ2lvLnYxMjggPSBMT0FEMTI4dShzdGF0ZVsgN10pOyBcCisgICAgWCMjZ2kgPSBYIyNnaW8udjEyODsgXAorICAgIFgjI2JlZ2kudjEyOCA9IEdFVDY0TE9MTyhYIyNiZSwgWCMjZ2kpOyBcCisgICAgWCMjZ28gPSBHRVQ2NEhJSEkoWCMjZ2lvLnYxMjgsIFgjI2dpby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjZ2lvLnYxMjgpOyBcCisgICAgWCMjZ3UgPSBMT0FENjQoc3RhdGVbIDldKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI2d1KTsgXAorICAgIFgjI2thZS52MTI4ID0gTE9BRDEyOChzdGF0ZVsxMF0pOyBcCisgICAgWCMja2EgPSBYIyNrYWUudjEyODsgXAorICAgIFgjI2tlID0gR0VUNjRISUhJKFgjI2thZS52MTI4LCBYIyNrYWUudjEyOCk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2thZS52MTI4KTsgXAorICAgIFgjI2tpby52MTI4ID0gTE9BRDEyOChzdGF0ZVsxMl0pOyBcCisgICAgWCMja2kgPSBYIyNraW8udjEyODsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpby52MTI4LCBYIyNraW8udjEyOCk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpby52MTI4KTsgXAorICAgIFgjI2t1ID0gTE9BRDY0KHN0YXRlWzE0XSk7IFwKKyAgICBYT1JlcTY0KEN1LCBYIyNrdSk7IFwKKyAgICBYIyNtYWUudjEyOCA9IExPQUQxMjh1KHN0YXRlWzE1XSk7IFwKKyAgICBYIyNtYSA9IFgjI21hZS52MTI4OyBcCisgICAgWCMjbWUgPSBHRVQ2NEhJSEkoWCMjbWFlLnYxMjgsIFgjI21hZS52MTI4KTsgXAorICAgIFgjI2thbWUudjEyOCA9IEdFVDY0TE9MTyhYIyNrYSwgWCMjbWUpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNtYWUudjEyOCk7IFwKKyAgICBYIyNtaW8udjEyOCA9IExPQUQxMjh1KHN0YXRlWzE3XSk7IFwKKyAgICBYIyNtaSA9IFgjI21pby52MTI4OyBcCisgICAgWCMja2VtaS52MTI4ID0gR0VUNjRMT0xPKFgjI2tlLCBYIyNtaSk7IFwKKyAgICBYIyNtbyA9IEdFVDY0SElISShYIyNtaW8udjEyOCwgWCMjbWlvLnYxMjgpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNtaW8udjEyOCk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWE9SZXE2NChDdSwgWCMjbXUpOyBcCisgICAgWCMjc2FlLnYxMjggPSBMT0FEMTI4KHN0YXRlWzIwXSk7IFwKKyAgICBYIyNzYSA9IFgjI3NhZS52MTI4OyBcCisgICAgWCMjc2UgPSBHRVQ2NEhJSEkoWCMjc2FlLnYxMjgsIFgjI3NhZS52MTI4KTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjc2FlLnYxMjgpOyBcCisgICAgWCMjc2lvLnYxMjggPSBMT0FEMTI4KHN0YXRlWzIyXSk7IFwKKyAgICBYIyNzaSA9IFgjI3Npby52MTI4OyBcCisgICAgWCMjc28gPSBHRVQ2NEhJSEkoWCMjc2lvLnYxMjgsIFgjI3Npby52MTI4KTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjc2lvLnYxMjgpOyBcCisgICAgWCMjc3UgPSBMT0FENjQoc3RhdGVbMjRdKTsgXAorICAgIFhPUmVxNjQoQ3UsIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gQSMjYmFnZS52NjRbMF07IFwKKyAgICBzdGF0ZVsgMV0gPSBBIyNiZWdpLnY2NFswXTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDJdLCBYIyNiaSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWyAzXSwgWCMjYm8pOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgNF0sIFgjI2J1KTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDVdLCBYIyNnYSk7IFwKKyAgICBzdGF0ZVsgNl0gPSBBIyNiYWdlLnY2NFsxXTsgXAorICAgIHN0YXRlWyA3XSA9IEEjI2JlZ2kudjY0WzFdOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgOF0sIFgjI2dvKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDldLCBYIyNndSk7IFwKKyAgICBzdGF0ZVsxMF0gPSBYIyNrYW1lLnY2NFswXTsgXAorICAgIHN0YXRlWzExXSA9IFgjI2tlbWkudjY0WzBdOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxMl0sIFgjI2tpKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMTNdLCBYIyNrbyk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzE0XSwgWCMja3UpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxNV0sIFgjI21hKTsgXAorICAgIHN0YXRlWzE2XSA9IFgjI2thbWUudjY0WzFdOyBcCisgICAgc3RhdGVbMTddID0gWCMja2VtaS52NjRbMV07IFwKKyAgICBTVE9SRTY0KHN0YXRlWzE4XSwgWCMjbW8pOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxOV0sIFgjI211KTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMjBdLCBYIyNzYSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzIxXSwgWCMjc2UpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsyMl0sIFgjI3NpKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMjNdLCBYIyNzbyk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzI0XSwgWCMjc3UpOyBcCisKKyNkZWZpbmUgY29weVN0YXRlVmFyaWFibGVzKFgsIFkpIFwKKyAgICBYIyNiYWdlID0gWSMjYmFnZTsgXAorICAgIFgjI2JlZ2kgPSBZIyNiZWdpOyBcCisgICAgWCMjYmkgPSBZIyNiaTsgXAorICAgIFgjI2JvID0gWSMjYm87IFwKKyAgICBYIyNidSA9IFkjI2J1OyBcCisgICAgWCMjZ2EgPSBZIyNnYTsgXAorICAgIFgjI2dvID0gWSMjZ287IFwKKyAgICBYIyNndSA9IFkjI2d1OyBcCisgICAgWCMja2FtZSA9IFkjI2thbWU7IFwKKyAgICBYIyNrZW1pID0gWSMja2VtaTsgXAorICAgIFgjI2tpID0gWSMja2k7IFwKKyAgICBYIyNrbyA9IFkjI2tvOyBcCisgICAgWCMja3UgPSBZIyNrdTsgXAorICAgIFgjI21hID0gWSMjbWE7IFwKKyAgICBYIyNtbyA9IFkjI21vOyBcCisgICAgWCMjbXUgPSBZIyNtdTsgXAorICAgIFgjI3NhID0gWSMjc2E7IFwKKyAgICBYIyNzZSA9IFkjI3NlOyBcCisgICAgWCMjc2kgPSBZIyNzaTsgXAorICAgIFgjI3NvID0gWSMjc287IFwKKyAgICBYIyNzdSA9IFkjI3N1OyBcCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC1zaW1kNjQubWFjcm9zIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXNpbWQ2NC5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZhMzBlMgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha0YtMTYwMC1zaW1kNjQubWFjcm9zCkBAIC0wLDAgKzEsNTE3IEBACisvKgorQ29kZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBLZWNjYWtUb29scyEKKworVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCitoZXJlYnkgZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFY2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFY2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFY2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFY2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFY2NCBBc2EsIEFzZSwgQXNpLCBBc28sIEFzdTsgXAorICAgIFY2NCBCYmEsIEJiZSwgQmJpLCBCYm8sIEJidTsgXAorICAgIFY2NCBCZ2EsIEJnZSwgQmdpLCBCZ28sIEJndTsgXAorICAgIFY2NCBCa2EsIEJrZSwgQmtpLCBCa28sIEJrdTsgXAorICAgIFY2NCBCbWEsIEJtZSwgQm1pLCBCbW8sIEJtdTsgXAorICAgIFY2NCBCc2EsIEJzZSwgQnNpLCBCc28sIEJzdTsgXAorICAgIFY2NCBDYSwgQ2UsIENpLCBDbywgQ3U7IFwKKyAgICBWNjQgRGEsIERlLCBEaSwgRG8sIER1OyBcCisgICAgVjY0IEViYSwgRWJlLCBFYmksIEVibywgRWJ1OyBcCisgICAgVjY0IEVnYSwgRWdlLCBFZ2ksIEVnbywgRWd1OyBcCisgICAgVjY0IEVrYSwgRWtlLCBFa2ksIEVrbywgRWt1OyBcCisgICAgVjY0IEVtYSwgRW1lLCBFbWksIEVtbywgRW11OyBcCisgICAgVjY0IEVzYSwgRXNlLCBFc2ksIEVzbywgRXN1OyBcCisKKyNkZWZpbmUgcHJlcGFyZVRoZXRhIFwKKyAgICBDYSA9IFhPUjY0KEFiYSwgWE9SNjQoQWdhLCBYT1I2NChBa2EsIFhPUjY0KEFtYSwgQXNhKSkpKTsgXAorICAgIENlID0gWE9SNjQoQWJlLCBYT1I2NChBZ2UsIFhPUjY0KEFrZSwgWE9SNjQoQW1lLCBBc2UpKSkpOyBcCisgICAgQ2kgPSBYT1I2NChBYmksIFhPUjY0KEFnaSwgWE9SNjQoQWtpLCBYT1I2NChBbWksIEFzaSkpKSk7IFwKKyAgICBDbyA9IFhPUjY0KEFibywgWE9SNjQoQWdvLCBYT1I2NChBa28sIFhPUjY0KEFtbywgQXNvKSkpKTsgXAorICAgIEN1ID0gWE9SNjQoQWJ1LCBYT1I2NChBZ3UsIFhPUjY0KEFrdSwgWE9SNjQoQW11LCBBc3UpKSkpOyBcCisKKy8qICAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAqLworLyogIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBYT1I2NChDdSwgUk9MNjQoQ2UsIDEpKTsgXAorICAgIERlID0gWE9SNjQoQ2EsIFJPTDY0KENpLCAxKSk7IFwKKyAgICBEaSA9IFhPUjY0KENlLCBST0w2NChDbywgMSkpOyBcCisgICAgRG8gPSBYT1I2NChDaSwgUk9MNjQoQ3UsIDEpKTsgXAorICAgIER1ID0gWE9SNjQoQ28sIFJPTDY0KENhLCAxKSk7IFwKK1wKKyAgICBYT1JlcTY0KEEjI2JhLCBEYSk7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIFhPUmVxNjQoQSMjZ2UsIERlKTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBYT1JlcTY0KEEjI2tpLCBEaSk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgRSMjYmEgPSBYT1I2NChCYmEsIEFORG51NjQoQmJlLCBCYmkpKTsgXAorICAgIFhPUmVxNjQoRSMjYmEsIENPTlNUNjQoS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXSkpOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIFhPUmVxNjQoQSMjbW8sIERvKTsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBFIyNiZSA9IFhPUjY0KEJiZSwgQU5EbnU2NChCYmksIEJibykpOyBcCisgICAgQ2UgPSBFIyNiZTsgXAorICAgIFhPUmVxNjQoQSMjc3UsIER1KTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiaSA9IFhPUjY0KEJiaSwgQU5EbnU2NChCYm8sIEJidSkpOyBcCisgICAgQ2kgPSBFIyNiaTsgXAorICAgIEUjI2JvID0gWE9SNjQoQmJvLCBBTkRudTY0KEJidSwgQmJhKSk7IFwKKyAgICBDbyA9IEUjI2JvOyBcCisgICAgRSMjYnUgPSBYT1I2NChCYnUsIEFORG51NjQoQmJhLCBCYmUpKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBYT1JlcTY0KEEjI2JvLCBEbyk7IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgWE9SZXE2NChBIyNndSwgRHUpOyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIFhPUmVxNjQoQSMja2EsIERhKTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEUjI2dhID0gWE9SNjQoQmdhLCBBTkRudTY0KEJnZSwgQmdpKSk7IFwKKyAgICBYT1JlcTY0KENhLCBFIyNnYSk7IFwKKyAgICBYT1JlcTY0KEEjI21lLCBEZSk7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgRSMjZ2UgPSBYT1I2NChCZ2UsIEFORG51NjQoQmdpLCBCZ28pKTsgXAorICAgIFhPUmVxNjQoQ2UsIEUjI2dlKTsgXAorICAgIFhPUmVxNjQoQSMjc2ksIERpKTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnaSA9IFhPUjY0KEJnaSwgQU5EbnU2NChCZ28sIEJndSkpOyBcCisgICAgWE9SZXE2NChDaSwgRSMjZ2kpOyBcCisgICAgRSMjZ28gPSBYT1I2NChCZ28sIEFORG51NjQoQmd1LCBCZ2EpKTsgXAorICAgIFhPUmVxNjQoQ28sIEUjI2dvKTsgXAorICAgIEUjI2d1ID0gWE9SNjQoQmd1LCBBTkRudTY0KEJnYSwgQmdlKSk7IFwKKyAgICBYT1JlcTY0KEN1LCBFIyNndSk7IFwKK1wKKyAgICBYT1JlcTY0KEEjI2JlLCBEZSk7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBYT1JlcTY0KEEjI2dpLCBEaSk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBYT1JlcTY0KEEjI2tvLCBEbyk7IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgRSMja2EgPSBYT1I2NChCa2EsIEFORG51NjQoQmtlLCBCa2kpKTsgXAorICAgIFhPUmVxNjQoQ2EsIEUjI2thKTsgXAorICAgIFhPUmVxNjQoQSMjbXUsIER1KTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEUjI2tlID0gWE9SNjQoQmtlLCBBTkRudTY0KEJraSwgQmtvKSk7IFwKKyAgICBYT1JlcTY0KENlLCBFIyNrZSk7IFwKKyAgICBYT1JlcTY0KEEjI3NhLCBEYSk7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2kgPSBYT1I2NChCa2ksIEFORG51NjQoQmtvLCBCa3UpKTsgXAorICAgIFhPUmVxNjQoQ2ksIEUjI2tpKTsgXAorICAgIEUjI2tvID0gWE9SNjQoQmtvLCBBTkRudTY0KEJrdSwgQmthKSk7IFwKKyAgICBYT1JlcTY0KENvLCBFIyNrbyk7IFwKKyAgICBFIyNrdSA9IFhPUjY0KEJrdSwgQU5EbnU2NChCa2EsIEJrZSkpOyBcCisgICAgWE9SZXE2NChDdSwgRSMja3UpOyBcCitcCisgICAgWE9SZXE2NChBIyNidSwgRHUpOyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIFhPUmVxNjQoQSMjZ2EsIERhKTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBYT1JlcTY0KEEjI2tlLCBEZSk7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgRSMjbWEgPSBYT1I2NChCbWEsIEFORG51NjQoQm1lLCBCbWkpKTsgXAorICAgIFhPUmVxNjQoQ2EsIEUjI21hKTsgXAorICAgIFhPUmVxNjQoQSMjbWksIERpKTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBFIyNtZSA9IFhPUjY0KEJtZSwgQU5EbnU2NChCbWksIEJtbykpOyBcCisgICAgWE9SZXE2NChDZSwgRSMjbWUpOyBcCisgICAgWE9SZXE2NChBIyNzbywgRG8pOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21pID0gWE9SNjQoQm1pLCBBTkRudTY0KEJtbywgQm11KSk7IFwKKyAgICBYT1JlcTY0KENpLCBFIyNtaSk7IFwKKyAgICBFIyNtbyA9IFhPUjY0KEJtbywgQU5EbnU2NChCbXUsIEJtYSkpOyBcCisgICAgWE9SZXE2NChDbywgRSMjbW8pOyBcCisgICAgRSMjbXUgPSBYT1I2NChCbXUsIEFORG51NjQoQm1hLCBCbWUpKTsgXAorICAgIFhPUmVxNjQoQ3UsIEUjI211KTsgXAorXAorICAgIFhPUmVxNjQoQSMjYmksIERpKTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBYT1JlcTY0KEEjI2dvLCBEbyk7IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgWE9SZXE2NChBIyNrdSwgRHUpOyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEUjI3NhID0gWE9SNjQoQnNhLCBBTkRudTY0KEJzZSwgQnNpKSk7IFwKKyAgICBYT1JlcTY0KENhLCBFIyNzYSk7IFwKKyAgICBYT1JlcTY0KEEjI21hLCBEYSk7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgRSMjc2UgPSBYT1I2NChCc2UsIEFORG51NjQoQnNpLCBCc28pKTsgXAorICAgIFhPUmVxNjQoQ2UsIEUjI3NlKTsgXAorICAgIFhPUmVxNjQoQSMjc2UsIERlKTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NpID0gWE9SNjQoQnNpLCBBTkRudTY0KEJzbywgQnN1KSk7IFwKKyAgICBYT1JlcTY0KENpLCBFIyNzaSk7IFwKKyAgICBFIyNzbyA9IFhPUjY0KEJzbywgQU5EbnU2NChCc3UsIEJzYSkpOyBcCisgICAgWE9SZXE2NChDbywgRSMjc28pOyBcCisgICAgRSMjc3UgPSBYT1I2NChCc3UsIEFORG51NjQoQnNhLCBCc2UpKTsgXAorICAgIFhPUmVxNjQoQ3UsIEUjI3N1KTsgXAorXAorCisvKiAgLS0tIENvZGUgZm9yIHJvdW5kICovCisvKiAgLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IFhPUjY0KEN1LCBST0w2NChDZSwgMSkpOyBcCisgICAgRGUgPSBYT1I2NChDYSwgUk9MNjQoQ2ksIDEpKTsgXAorICAgIERpID0gWE9SNjQoQ2UsIFJPTDY0KENvLCAxKSk7IFwKKyAgICBEbyA9IFhPUjY0KENpLCBST0w2NChDdSwgMSkpOyBcCisgICAgRHUgPSBYT1I2NChDbywgUk9MNjQoQ2EsIDEpKTsgXAorXAorICAgIFhPUmVxNjQoQSMjYmEsIERhKTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgWE9SZXE2NChBIyNnZSwgRGUpOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIFhPUmVxNjQoQSMja2ksIERpKTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBFIyNiYSA9IFhPUjY0KEJiYSwgQU5EbnU2NChCYmUsIEJiaSkpOyBcCisgICAgWE9SZXE2NChFIyNiYSwgQ09OU1Q2NChLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldKSk7IFwKKyAgICBYT1JlcTY0KEEjI21vLCBEbyk7IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgRSMjYmUgPSBYT1I2NChCYmUsIEFORG51NjQoQmJpLCBCYm8pKTsgXAorICAgIFhPUmVxNjQoQSMjc3UsIER1KTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiaSA9IFhPUjY0KEJiaSwgQU5EbnU2NChCYm8sIEJidSkpOyBcCisgICAgRSMjYm8gPSBYT1I2NChCYm8sIEFORG51NjQoQmJ1LCBCYmEpKTsgXAorICAgIEUjI2J1ID0gWE9SNjQoQmJ1LCBBTkRudTY0KEJiYSwgQmJlKSk7IFwKK1wKKyAgICBYT1JlcTY0KEEjI2JvLCBEbyk7IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgWE9SZXE2NChBIyNndSwgRHUpOyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIFhPUmVxNjQoQSMja2EsIERhKTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEUjI2dhID0gWE9SNjQoQmdhLCBBTkRudTY0KEJnZSwgQmdpKSk7IFwKKyAgICBYT1JlcTY0KEEjI21lLCBEZSk7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgRSMjZ2UgPSBYT1I2NChCZ2UsIEFORG51NjQoQmdpLCBCZ28pKTsgXAorICAgIFhPUmVxNjQoQSMjc2ksIERpKTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnaSA9IFhPUjY0KEJnaSwgQU5EbnU2NChCZ28sIEJndSkpOyBcCisgICAgRSMjZ28gPSBYT1I2NChCZ28sIEFORG51NjQoQmd1LCBCZ2EpKTsgXAorICAgIEUjI2d1ID0gWE9SNjQoQmd1LCBBTkRudTY0KEJnYSwgQmdlKSk7IFwKK1wKKyAgICBYT1JlcTY0KEEjI2JlLCBEZSk7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBYT1JlcTY0KEEjI2dpLCBEaSk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBYT1JlcTY0KEEjI2tvLCBEbyk7IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgRSMja2EgPSBYT1I2NChCa2EsIEFORG51NjQoQmtlLCBCa2kpKTsgXAorICAgIFhPUmVxNjQoQSMjbXUsIER1KTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEUjI2tlID0gWE9SNjQoQmtlLCBBTkRudTY0KEJraSwgQmtvKSk7IFwKKyAgICBYT1JlcTY0KEEjI3NhLCBEYSk7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2kgPSBYT1I2NChCa2ksIEFORG51NjQoQmtvLCBCa3UpKTsgXAorICAgIEUjI2tvID0gWE9SNjQoQmtvLCBBTkRudTY0KEJrdSwgQmthKSk7IFwKKyAgICBFIyNrdSA9IFhPUjY0KEJrdSwgQU5EbnU2NChCa2EsIEJrZSkpOyBcCitcCisgICAgWE9SZXE2NChBIyNidSwgRHUpOyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIFhPUmVxNjQoQSMjZ2EsIERhKTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBYT1JlcTY0KEEjI2tlLCBEZSk7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgRSMjbWEgPSBYT1I2NChCbWEsIEFORG51NjQoQm1lLCBCbWkpKTsgXAorICAgIFhPUmVxNjQoQSMjbWksIERpKTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBFIyNtZSA9IFhPUjY0KEJtZSwgQU5EbnU2NChCbWksIEJtbykpOyBcCisgICAgWE9SZXE2NChBIyNzbywgRG8pOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21pID0gWE9SNjQoQm1pLCBBTkRudTY0KEJtbywgQm11KSk7IFwKKyAgICBFIyNtbyA9IFhPUjY0KEJtbywgQU5EbnU2NChCbXUsIEJtYSkpOyBcCisgICAgRSMjbXUgPSBYT1I2NChCbXUsIEFORG51NjQoQm1hLCBCbWUpKTsgXAorXAorICAgIFhPUmVxNjQoQSMjYmksIERpKTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBYT1JlcTY0KEEjI2dvLCBEbyk7IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgWE9SZXE2NChBIyNrdSwgRHUpOyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEUjI3NhID0gWE9SNjQoQnNhLCBBTkRudTY0KEJzZSwgQnNpKSk7IFwKKyAgICBYT1JlcTY0KEEjI21hLCBEYSk7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgRSMjc2UgPSBYT1I2NChCc2UsIEFORG51NjQoQnNpLCBCc28pKTsgXAorICAgIFhPUmVxNjQoQSMjc2UsIERlKTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NpID0gWE9SNjQoQnNpLCBBTkRudTY0KEJzbywgQnN1KSk7IFwKKyAgICBFIyNzbyA9IFhPUjY0KEJzbywgQU5EbnU2NChCc3UsIEJzYSkpOyBcCisgICAgRSMjc3UgPSBYT1I2NChCc3UsIEFORG51NjQoQnNhLCBCc2UpKTsgXAorXAorCitzdGF0aWMgY29uc3QgVUlOVDY0IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbMjRdID0geworICAgIDB4MDAwMDAwMDAwMDAwMDAwMVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwODJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDhhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwMFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwOGJVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDlVTEwsCisgICAgMHgwMDAwMDAwMDAwMDAwMDhhVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4OFVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwMDlVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwODA4YlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDAwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDg5VUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwM1VMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDgwVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODAwYVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDAwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDgxVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4MFVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMDFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDA4VUxMIH07CisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjU3NmJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmEgPSBYT1I2NChMT0FENjQoc3RhdGVbIDBdKSwgTE9BRDY0KGlucHV0WyAwXSkpOyBcCisgICAgWCMjYmUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDFdKSwgTE9BRDY0KGlucHV0WyAxXSkpOyBcCisgICAgWCMjYmkgPSBYT1I2NChMT0FENjQoc3RhdGVbIDJdKSwgTE9BRDY0KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYm8gPSBYT1I2NChMT0FENjQoc3RhdGVbIDNdKSwgTE9BRDY0KGlucHV0WyAzXSkpOyBcCisgICAgWCMjYnUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDRdKSwgTE9BRDY0KGlucHV0WyA0XSkpOyBcCisgICAgWCMjZ2EgPSBYT1I2NChMT0FENjQoc3RhdGVbIDVdKSwgTE9BRDY0KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDZdKSwgTE9BRDY0KGlucHV0WyA2XSkpOyBcCisgICAgWCMjZ2kgPSBYT1I2NChMT0FENjQoc3RhdGVbIDddKSwgTE9BRDY0KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ28gPSBYT1I2NChMT0FENjQoc3RhdGVbIDhdKSwgTE9BRDY0KGlucHV0WyA4XSkpOyBcCisgICAgWCMjZ3UgPSBMT0FENjQoc3RhdGVbIDldKTsgXAorICAgIFgjI2thID0gTE9BRDY0KHN0YXRlWzEwXSk7IFwKKyAgICBYIyNrZSA9IExPQUQ2NChzdGF0ZVsxMV0pOyBcCisgICAgWCMja2kgPSBMT0FENjQoc3RhdGVbMTJdKTsgXAorICAgIFgjI2tvID0gTE9BRDY0KHN0YXRlWzEzXSk7IFwKKyAgICBYIyNrdSA9IExPQUQ2NChzdGF0ZVsxNF0pOyBcCisgICAgWCMjbWEgPSBMT0FENjQoc3RhdGVbMTVdKTsgXAorICAgIFgjI21lID0gTE9BRDY0KHN0YXRlWzE2XSk7IFwKKyAgICBYIyNtaSA9IExPQUQ2NChzdGF0ZVsxN10pOyBcCisgICAgWCMjbW8gPSBMT0FENjQoc3RhdGVbMThdKTsgXAorICAgIFgjI211ID0gTE9BRDY0KHN0YXRlWzE5XSk7IFwKKyAgICBYIyNzYSA9IExPQUQ2NChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2UgPSBMT0FENjQoc3RhdGVbMjFdKTsgXAorICAgIFgjI3NpID0gTE9BRDY0KHN0YXRlWzIyXSk7IFwKKyAgICBYIyNzbyA9IExPQUQ2NChzdGF0ZVsyM10pOyBcCisgICAgWCMjc3UgPSBMT0FENjQoc3RhdGVbMjRdKTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3I4MzJiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhID0gWE9SNjQoTE9BRDY0KHN0YXRlWyAwXSksIExPQUQ2NChpbnB1dFsgMF0pKTsgXAorICAgIFgjI2JlID0gWE9SNjQoTE9BRDY0KHN0YXRlWyAxXSksIExPQUQ2NChpbnB1dFsgMV0pKTsgXAorICAgIFgjI2JpID0gWE9SNjQoTE9BRDY0KHN0YXRlWyAyXSksIExPQUQ2NChpbnB1dFsgMl0pKTsgXAorICAgIFgjI2JvID0gWE9SNjQoTE9BRDY0KHN0YXRlWyAzXSksIExPQUQ2NChpbnB1dFsgM10pKTsgXAorICAgIFgjI2J1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA0XSksIExPQUQ2NChpbnB1dFsgNF0pKTsgXAorICAgIFgjI2dhID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA1XSksIExPQUQ2NChpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dlID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA2XSksIExPQUQ2NChpbnB1dFsgNl0pKTsgXAorICAgIFgjI2dpID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA3XSksIExPQUQ2NChpbnB1dFsgN10pKTsgXAorICAgIFgjI2dvID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA4XSksIExPQUQ2NChpbnB1dFsgOF0pKTsgXAorICAgIFgjI2d1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA5XSksIExPQUQ2NChpbnB1dFsgOV0pKTsgXAorICAgIFgjI2thID0gWE9SNjQoTE9BRDY0KHN0YXRlWzEwXSksIExPQUQ2NChpbnB1dFsxMF0pKTsgXAorICAgIFgjI2tlID0gWE9SNjQoTE9BRDY0KHN0YXRlWzExXSksIExPQUQ2NChpbnB1dFsxMV0pKTsgXAorICAgIFgjI2tpID0gWE9SNjQoTE9BRDY0KHN0YXRlWzEyXSksIExPQUQ2NChpbnB1dFsxMl0pKTsgXAorICAgIFgjI2tvID0gTE9BRDY0KHN0YXRlWzEzXSk7IFwKKyAgICBYIyNrdSA9IExPQUQ2NChzdGF0ZVsxNF0pOyBcCisgICAgWCMjbWEgPSBMT0FENjQoc3RhdGVbMTVdKTsgXAorICAgIFgjI21lID0gTE9BRDY0KHN0YXRlWzE2XSk7IFwKKyAgICBYIyNtaSA9IExPQUQ2NChzdGF0ZVsxN10pOyBcCisgICAgWCMjbW8gPSBMT0FENjQoc3RhdGVbMThdKTsgXAorICAgIFgjI211ID0gTE9BRDY0KHN0YXRlWzE5XSk7IFwKKyAgICBYIyNzYSA9IExPQUQ2NChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2UgPSBMT0FENjQoc3RhdGVbMjFdKTsgXAorICAgIFgjI3NpID0gTE9BRDY0KHN0YXRlWzIyXSk7IFwKKyAgICBYIyNzbyA9IExPQUQ2NChzdGF0ZVsyM10pOyBcCisgICAgWCMjc3UgPSBMT0FENjQoc3RhdGVbMjRdKTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDI0Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgMF0pLCBMT0FENjQoaW5wdXRbIDBdKSk7IFwKKyAgICBYIyNiZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgMV0pLCBMT0FENjQoaW5wdXRbIDFdKSk7IFwKKyAgICBYIyNiaSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgMl0pLCBMT0FENjQoaW5wdXRbIDJdKSk7IFwKKyAgICBYIyNibyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgM10pLCBMT0FENjQoaW5wdXRbIDNdKSk7IFwKKyAgICBYIyNidSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNF0pLCBMT0FENjQoaW5wdXRbIDRdKSk7IFwKKyAgICBYIyNnYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNV0pLCBMT0FENjQoaW5wdXRbIDVdKSk7IFwKKyAgICBYIyNnZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNl0pLCBMT0FENjQoaW5wdXRbIDZdKSk7IFwKKyAgICBYIyNnaSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgN10pLCBMT0FENjQoaW5wdXRbIDddKSk7IFwKKyAgICBYIyNnbyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOF0pLCBMT0FENjQoaW5wdXRbIDhdKSk7IFwKKyAgICBYIyNndSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOV0pLCBMT0FENjQoaW5wdXRbIDldKSk7IFwKKyAgICBYIyNrYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxMF0pLCBMT0FENjQoaW5wdXRbMTBdKSk7IFwKKyAgICBYIyNrZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxMV0pLCBMT0FENjQoaW5wdXRbMTFdKSk7IFwKKyAgICBYIyNraSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxMl0pLCBMT0FENjQoaW5wdXRbMTJdKSk7IFwKKyAgICBYIyNrbyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxM10pLCBMT0FENjQoaW5wdXRbMTNdKSk7IFwKKyAgICBYIyNrdSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxNF0pLCBMT0FENjQoaW5wdXRbMTRdKSk7IFwKKyAgICBYIyNtYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxNV0pLCBMT0FENjQoaW5wdXRbMTVdKSk7IFwKKyAgICBYIyNtZSA9IExPQUQ2NChzdGF0ZVsxNl0pOyBcCisgICAgWCMjbWkgPSBMT0FENjQoc3RhdGVbMTddKTsgXAorICAgIFgjI21vID0gTE9BRDY0KHN0YXRlWzE4XSk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWCMjc2EgPSBMT0FENjQoc3RhdGVbMjBdKTsgXAorICAgIFgjI3NlID0gTE9BRDY0KHN0YXRlWzIxXSk7IFwKKyAgICBYIyNzaSA9IExPQUQ2NChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc28gPSBMT0FENjQoc3RhdGVbMjNdKTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yMTA4OGJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmEgPSBYT1I2NChMT0FENjQoc3RhdGVbIDBdKSwgTE9BRDY0KGlucHV0WyAwXSkpOyBcCisgICAgWCMjYmUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDFdKSwgTE9BRDY0KGlucHV0WyAxXSkpOyBcCisgICAgWCMjYmkgPSBYT1I2NChMT0FENjQoc3RhdGVbIDJdKSwgTE9BRDY0KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYm8gPSBYT1I2NChMT0FENjQoc3RhdGVbIDNdKSwgTE9BRDY0KGlucHV0WyAzXSkpOyBcCisgICAgWCMjYnUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDRdKSwgTE9BRDY0KGlucHV0WyA0XSkpOyBcCisgICAgWCMjZ2EgPSBYT1I2NChMT0FENjQoc3RhdGVbIDVdKSwgTE9BRDY0KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDZdKSwgTE9BRDY0KGlucHV0WyA2XSkpOyBcCisgICAgWCMjZ2kgPSBYT1I2NChMT0FENjQoc3RhdGVbIDddKSwgTE9BRDY0KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ28gPSBYT1I2NChMT0FENjQoc3RhdGVbIDhdKSwgTE9BRDY0KGlucHV0WyA4XSkpOyBcCisgICAgWCMjZ3UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDldKSwgTE9BRDY0KGlucHV0WyA5XSkpOyBcCisgICAgWCMja2EgPSBYT1I2NChMT0FENjQoc3RhdGVbMTBdKSwgTE9BRDY0KGlucHV0WzEwXSkpOyBcCisgICAgWCMja2UgPSBYT1I2NChMT0FENjQoc3RhdGVbMTFdKSwgTE9BRDY0KGlucHV0WzExXSkpOyBcCisgICAgWCMja2kgPSBYT1I2NChMT0FENjQoc3RhdGVbMTJdKSwgTE9BRDY0KGlucHV0WzEyXSkpOyBcCisgICAgWCMja28gPSBYT1I2NChMT0FENjQoc3RhdGVbMTNdKSwgTE9BRDY0KGlucHV0WzEzXSkpOyBcCisgICAgWCMja3UgPSBYT1I2NChMT0FENjQoc3RhdGVbMTRdKSwgTE9BRDY0KGlucHV0WzE0XSkpOyBcCisgICAgWCMjbWEgPSBYT1I2NChMT0FENjQoc3RhdGVbMTVdKSwgTE9BRDY0KGlucHV0WzE1XSkpOyBcCisgICAgWCMjbWUgPSBYT1I2NChMT0FENjQoc3RhdGVbMTZdKSwgTE9BRDY0KGlucHV0WzE2XSkpOyBcCisgICAgWCMjbWkgPSBMT0FENjQoc3RhdGVbMTddKTsgXAorICAgIFgjI21vID0gTE9BRDY0KHN0YXRlWzE4XSk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWCMjc2EgPSBMT0FENjQoc3RhdGVbMjBdKTsgXAorICAgIFgjI3NlID0gTE9BRDY0KHN0YXRlWzIxXSk7IFwKKyAgICBYIyNzaSA9IExPQUQ2NChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc28gPSBMT0FENjQoc3RhdGVbMjNdKTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yMTE1MmJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmEgPSBYT1I2NChMT0FENjQoc3RhdGVbIDBdKSwgTE9BRDY0KGlucHV0WyAwXSkpOyBcCisgICAgWCMjYmUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDFdKSwgTE9BRDY0KGlucHV0WyAxXSkpOyBcCisgICAgWCMjYmkgPSBYT1I2NChMT0FENjQoc3RhdGVbIDJdKSwgTE9BRDY0KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYm8gPSBYT1I2NChMT0FENjQoc3RhdGVbIDNdKSwgTE9BRDY0KGlucHV0WyAzXSkpOyBcCisgICAgWCMjYnUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDRdKSwgTE9BRDY0KGlucHV0WyA0XSkpOyBcCisgICAgWCMjZ2EgPSBYT1I2NChMT0FENjQoc3RhdGVbIDVdKSwgTE9BRDY0KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDZdKSwgTE9BRDY0KGlucHV0WyA2XSkpOyBcCisgICAgWCMjZ2kgPSBYT1I2NChMT0FENjQoc3RhdGVbIDddKSwgTE9BRDY0KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ28gPSBYT1I2NChMT0FENjQoc3RhdGVbIDhdKSwgTE9BRDY0KGlucHV0WyA4XSkpOyBcCisgICAgWCMjZ3UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDldKSwgTE9BRDY0KGlucHV0WyA5XSkpOyBcCisgICAgWCMja2EgPSBYT1I2NChMT0FENjQoc3RhdGVbMTBdKSwgTE9BRDY0KGlucHV0WzEwXSkpOyBcCisgICAgWCMja2UgPSBYT1I2NChMT0FENjQoc3RhdGVbMTFdKSwgTE9BRDY0KGlucHV0WzExXSkpOyBcCisgICAgWCMja2kgPSBYT1I2NChMT0FENjQoc3RhdGVbMTJdKSwgTE9BRDY0KGlucHV0WzEyXSkpOyBcCisgICAgWCMja28gPSBYT1I2NChMT0FENjQoc3RhdGVbMTNdKSwgTE9BRDY0KGlucHV0WzEzXSkpOyBcCisgICAgWCMja3UgPSBYT1I2NChMT0FENjQoc3RhdGVbMTRdKSwgTE9BRDY0KGlucHV0WzE0XSkpOyBcCisgICAgWCMjbWEgPSBYT1I2NChMT0FENjQoc3RhdGVbMTVdKSwgTE9BRDY0KGlucHV0WzE1XSkpOyBcCisgICAgWCMjbWUgPSBYT1I2NChMT0FENjQoc3RhdGVbMTZdKSwgTE9BRDY0KGlucHV0WzE2XSkpOyBcCisgICAgWCMjbWkgPSBYT1I2NChMT0FENjQoc3RhdGVbMTddKSwgTE9BRDY0KGlucHV0WzE3XSkpOyBcCisgICAgWCMjbW8gPSBMT0FENjQoc3RhdGVbMThdKTsgXAorICAgIFgjI211ID0gTE9BRDY0KHN0YXRlWzE5XSk7IFwKKyAgICBYIyNzYSA9IExPQUQ2NChzdGF0ZVsyMF0pOyBcCisgICAgWCMjc2UgPSBMT0FENjQoc3RhdGVbMjFdKTsgXAorICAgIFgjI3NpID0gTE9BRDY0KHN0YXRlWzIyXSk7IFwKKyAgICBYIyNzbyA9IExPQUQ2NChzdGF0ZVsyM10pOyBcCisgICAgWCMjc3UgPSBMT0FENjQoc3RhdGVbMjRdKTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMzQ0Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgMF0pLCBMT0FENjQoaW5wdXRbIDBdKSk7IFwKKyAgICBYIyNiZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgMV0pLCBMT0FENjQoaW5wdXRbIDFdKSk7IFwKKyAgICBYIyNiaSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgMl0pLCBMT0FENjQoaW5wdXRbIDJdKSk7IFwKKyAgICBYIyNibyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgM10pLCBMT0FENjQoaW5wdXRbIDNdKSk7IFwKKyAgICBYIyNidSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNF0pLCBMT0FENjQoaW5wdXRbIDRdKSk7IFwKKyAgICBYIyNnYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNV0pLCBMT0FENjQoaW5wdXRbIDVdKSk7IFwKKyAgICBYIyNnZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNl0pLCBMT0FENjQoaW5wdXRbIDZdKSk7IFwKKyAgICBYIyNnaSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgN10pLCBMT0FENjQoaW5wdXRbIDddKSk7IFwKKyAgICBYIyNnbyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOF0pLCBMT0FENjQoaW5wdXRbIDhdKSk7IFwKKyAgICBYIyNndSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOV0pLCBMT0FENjQoaW5wdXRbIDldKSk7IFwKKyAgICBYIyNrYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxMF0pLCBMT0FENjQoaW5wdXRbMTBdKSk7IFwKKyAgICBYIyNrZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxMV0pLCBMT0FENjQoaW5wdXRbMTFdKSk7IFwKKyAgICBYIyNraSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxMl0pLCBMT0FENjQoaW5wdXRbMTJdKSk7IFwKKyAgICBYIyNrbyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxM10pLCBMT0FENjQoaW5wdXRbMTNdKSk7IFwKKyAgICBYIyNrdSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxNF0pLCBMT0FENjQoaW5wdXRbMTRdKSk7IFwKKyAgICBYIyNtYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxNV0pLCBMT0FENjQoaW5wdXRbMTVdKSk7IFwKKyAgICBYIyNtZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxNl0pLCBMT0FENjQoaW5wdXRbMTZdKSk7IFwKKyAgICBYIyNtaSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxN10pLCBMT0FENjQoaW5wdXRbMTddKSk7IFwKKyAgICBYIyNtbyA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxOF0pLCBMT0FENjQoaW5wdXRbMThdKSk7IFwKKyAgICBYIyNtdSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxOV0pLCBMT0FENjQoaW5wdXRbMTldKSk7IFwKKyAgICBYIyNzYSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsyMF0pLCBMT0FENjQoaW5wdXRbMjBdKSk7IFwKKyAgICBYIyNzZSA9IExPQUQ2NChzdGF0ZVsyMV0pOyBcCisgICAgWCMjc2kgPSBMT0FENjQoc3RhdGVbMjJdKTsgXAorICAgIFgjI3NvID0gTE9BRDY0KHN0YXRlWzIzXSk7IFwKKyAgICBYIyNzdSA9IExPQUQ2NChzdGF0ZVsyNF0pOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhID0gTE9BRDY0KHN0YXRlWyAwXSk7IFwKKyAgICBYIyNiZSA9IExPQUQ2NChzdGF0ZVsgMV0pOyBcCisgICAgWCMjYmkgPSBMT0FENjQoc3RhdGVbIDJdKTsgXAorICAgIFgjI2JvID0gTE9BRDY0KHN0YXRlWyAzXSk7IFwKKyAgICBYIyNidSA9IExPQUQ2NChzdGF0ZVsgNF0pOyBcCisgICAgWCMjZ2EgPSBMT0FENjQoc3RhdGVbIDVdKTsgXAorICAgIFgjI2dlID0gTE9BRDY0KHN0YXRlWyA2XSk7IFwKKyAgICBYIyNnaSA9IExPQUQ2NChzdGF0ZVsgN10pOyBcCisgICAgWCMjZ28gPSBMT0FENjQoc3RhdGVbIDhdKTsgXAorICAgIFgjI2d1ID0gTE9BRDY0KHN0YXRlWyA5XSk7IFwKKyAgICBYIyNrYSA9IExPQUQ2NChzdGF0ZVsxMF0pOyBcCisgICAgWCMja2UgPSBMT0FENjQoc3RhdGVbMTFdKTsgXAorICAgIFgjI2tpID0gTE9BRDY0KHN0YXRlWzEyXSk7IFwKKyAgICBYIyNrbyA9IExPQUQ2NChzdGF0ZVsxM10pOyBcCisgICAgWCMja3UgPSBMT0FENjQoc3RhdGVbMTRdKTsgXAorICAgIFgjI21hID0gTE9BRDY0KHN0YXRlWzE1XSk7IFwKKyAgICBYIyNtZSA9IExPQUQ2NChzdGF0ZVsxNl0pOyBcCisgICAgWCMjbWkgPSBMT0FENjQoc3RhdGVbMTddKTsgXAorICAgIFgjI21vID0gTE9BRDY0KHN0YXRlWzE4XSk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWCMjc2EgPSBMT0FENjQoc3RhdGVbMjBdKTsgXAorICAgIFgjI3NlID0gTE9BRDY0KHN0YXRlWzIxXSk7IFwKKyAgICBYIyNzaSA9IExPQUQ2NChzdGF0ZVsyMl0pOyBcCisgICAgWCMjc28gPSBMT0FENjQoc3RhdGVbMjNdKTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKworI2RlZmluZSBjb3B5VG9TdGF0ZShzdGF0ZSwgWCkgXAorICAgIFNUT1JFNjQoc3RhdGVbIDBdLCBYIyNiYSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWyAxXSwgWCMjYmUpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgMl0sIFgjI2JpKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDNdLCBYIyNibyk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWyA0XSwgWCMjYnUpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgNV0sIFgjI2dhKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDZdLCBYIyNnZSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWyA3XSwgWCMjZ2kpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgOF0sIFgjI2dvKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDldLCBYIyNndSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzEwXSwgWCMja2EpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxMV0sIFgjI2tlKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMTJdLCBYIyNraSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzEzXSwgWCMja28pOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxNF0sIFgjI2t1KTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMTVdLCBYIyNtYSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzE2XSwgWCMjbWUpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxN10sIFgjI21pKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMThdLCBYIyNtbyk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzE5XSwgWCMjbXUpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsyMF0sIFgjI3NhKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMjFdLCBYIyNzZSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzIyXSwgWCMjc2kpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsyM10sIFgjI3NvKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMjRdLCBYIyNzdSk7IFwKKworI2RlZmluZSBjb3B5U3RhdGVWYXJpYWJsZXMoWCwgWSkgXAorICAgIFgjI2JhID0gWSMjYmE7IFwKKyAgICBYIyNiZSA9IFkjI2JlOyBcCisgICAgWCMjYmkgPSBZIyNiaTsgXAorICAgIFgjI2JvID0gWSMjYm87IFwKKyAgICBYIyNidSA9IFkjI2J1OyBcCisgICAgWCMjZ2EgPSBZIyNnYTsgXAorICAgIFgjI2dlID0gWSMjZ2U7IFwKKyAgICBYIyNnaSA9IFkjI2dpOyBcCisgICAgWCMjZ28gPSBZIyNnbzsgXAorICAgIFgjI2d1ID0gWSMjZ3U7IFwKKyAgICBYIyNrYSA9IFkjI2thOyBcCisgICAgWCMja2UgPSBZIyNrZTsgXAorICAgIFgjI2tpID0gWSMja2k7IFwKKyAgICBYIyNrbyA9IFkjI2tvOyBcCisgICAgWCMja3UgPSBZIyNrdTsgXAorICAgIFgjI21hID0gWSMjbWE7IFwKKyAgICBYIyNtZSA9IFkjI21lOyBcCisgICAgWCMjbWkgPSBZIyNtaTsgXAorICAgIFgjI21vID0gWSMjbW87IFwKKyAgICBYIyNtdSA9IFkjI211OyBcCisgICAgWCMjc2EgPSBZIyNzYTsgXAorICAgIFgjI3NlID0gWSMjc2U7IFwKKyAgICBYIyNzaSA9IFkjI3NpOyBcCisgICAgWCMjc28gPSBZIyNzbzsgXAorICAgIFgjI3N1ID0gWSMjc3U7IFwKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXVucm9sbGluZy5tYWNyb3MgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAtdW5yb2xsaW5nLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2M2OTRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXVucm9sbGluZy5tYWNyb3MKQEAgLTAsMCArMSwxMjQgQEAKKy8qCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWYgKFVucm9sbGluZyA9PSAyNCkKKyNkZWZpbmUgcm91bmRzIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorICAgIGNvcHlUb1N0YXRlKHN0YXRlLCBBKQorI2VsaWYgKFVucm9sbGluZyA9PSAxMikKKyNkZWZpbmUgcm91bmRzIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTEyKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDUsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA3LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDgsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgOSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEwLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMTEsIEUsIEEpIFwKKyAgICB9IFwKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZSwgQSkKKyNlbGlmIChVbnJvbGxpbmcgPT0gOCkKKyNkZWZpbmUgcm91bmRzIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTgpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzYsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs3LCBFLCBBKSBcCisgICAgfSBcCisgICAgY29weVRvU3RhdGUoc3RhdGUsIEEpCisjZWxpZiAoVW5yb2xsaW5nID09IDYpCisjZGVmaW5lIHJvdW5kcyBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz02KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzUsIEUsIEEpIFwKKyAgICB9IFwKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZSwgQSkKKyNlbGlmIChVbnJvbGxpbmcgPT0gNCkKKyNkZWZpbmUgcm91bmRzIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZSwgQSkKKyNlbGlmIChVbnJvbGxpbmcgPT0gMykKKyNkZWZpbmUgcm91bmRzIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTMpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorICAgIGNvcHlUb1N0YXRlKHN0YXRlLCBBKQorI2VsaWYgKFVucm9sbGluZyA9PSAyKQorI2RlZmluZSByb3VuZHMgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZSwgQSkKKyNlbGlmIChVbnJvbGxpbmcgPT0gMSkKKyNkZWZpbmUgcm91bmRzIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrKykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorICAgIGNvcHlUb1N0YXRlKHN0YXRlLCBBKQorI2Vsc2UKKyNlcnJvciAiVW5yb2xsaW5nIGlzIG5vdCBjb3JyZWN0bHkgc3BlY2lmaWVkISIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXhvcC5tYWNyb3MgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtGLTE2MDAteG9wLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjNjOTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrRi0xNjAwLXhvcC5tYWNyb3MKQEAgLTAsMCArMSw1NzMgQEAKKy8qCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjZGVmaW5lIGRlY2xhcmVBQkNERSBcCisgICAgVjEyOCBBYmFnZSwgQWJlZ2ksIEFiaWdvLCBBYm9ndSwgQWJ1Z2E7IFwKKyAgICBWMTI4IEFrYW1lLCBBa2VtaSwgQWtpbW8sIEFrb211LCBBa3VtYTsgXAorICAgIFYxMjggQWJhZSwgQWJpbywgQWdhZSwgQWdpbywgQWthZSwgQWtpbywgQW1hZSwgQW1pbzsgXAorICAgIFY2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFY2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFY2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFY2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFYxMjggQXNhc2UsIEFzaXNvOyBcCisgICAgVjY0IEFzdTsgXAorICAgIFYxMjggQmJhZ2UsIEJiZWdpLCBCYmlnbywgQmJvZ3UsIEJidWdhOyBcCisgICAgVjEyOCBCa2FtZSwgQmtlbWksIEJraW1vLCBCa29tdSwgQmt1bWE7IFwKKyAgICBWMTI4IEJzYXNlLCBCc2VzaSwgQnNpc28sIEJzb3N1LCBCc3VzYTsgXAorICAgIFYxMjggQ2FlLCBDZWksIENpbywgQ291LCBDdWE7IFwKKyAgICBWMTI4IERhdSwgRGVhLCBEaWUsIERvaSwgRHVvOyBcCisgICAgVjEyOCBEdWEsIERhZSwgRGVpLCBEaW8sIERvdTsgXAorICAgIFYxMjggRWJhZ2UsIEViZWdpLCBFYmlnbywgRWJvZ3UsIEVidWdhOyBcCisgICAgVjEyOCBFa2FtZSwgRWtlbWksIEVraW1vLCBFa29tdSwgRWt1bWE7IFwKKyAgICBWMTI4IEVzYXNlLCBFc2lzbzsgXAorICAgIFY2NCBFc3U7IFwKKyAgICBWMTI4IFplcm87CisKKyNkZWZpbmUgcHJlcGFyZVRoZXRhCisKKyNkZWZpbmUgY29tcHV0ZUQgXAorICAgIEN1YSA9IEdFVDY0TE9MTyhDdWEsIENhZSk7IFwKKyAgICBEZWkgPSBYT1IxMjgoQ2FlLCBST0w2NDY0c2FtZShDaW8sIDEpKTsgXAorICAgIERvdSA9IFhPUjEyOChDaW8sIFJPTDY0NjRzYW1lKEN1YSwgMSkpOyBcCisgICAgQ2VpID0gR0VUNjRISUxPKENhZSwgQ2lvKTsgXAorICAgIERhZSA9IFhPUjEyOChDdWEsIFJPTDY0NjRzYW1lKENlaSwgMSkpOyBcCisgICAgRGF1ID0gR0VUNjRMT0hJKERhZSwgRG91KTsgXAorICAgIERlYSA9IFNXQVA2NChEYWUpOyBcCisgICAgRGllID0gU1dBUDY0KERlaSk7IFwKKyAgICBEb2kgPSBHRVQ2NExPTE8oRG91LCBEaWUpOyBcCisgICAgRHVvID0gU1dBUDY0KERvdSk7CisKKy8qICAtLS0gVGhldGEgUmhvIFBpIENoaSBJb3RhIFByZXBhcmUtdGhldGEgKi8KKy8qICAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgYW5kIDEyOC1iaXQgd29yZHMgKi8KKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIGNvbXB1dGVEIFwKKyAgICBcCisgICAgQmJhZ2UgPSBYT1IxMjgoR0VUNjRMT0hJKEEjI2JhZ2UsIEEjI2JvZ3UpLCBEYXUpOyBcCisgICAgQmJhZ2UgPSBST0w2NDY0KEJiYWdlLCAwLCAyMCk7IFwKKyAgICBCYmVnaSA9IFhPUjEyOChHRVQ2NEhJTE8oQSMjYmFnZSwgQSMja2FtZSksIERlYSk7IFwKKyAgICBCYmVnaSA9IFJPTDY0NjQoQmJlZ2ksIDQ0LCAzKTsgXAorICAgIEJiaWdvID0gWE9SMTI4KEdFVDY0TE9ISShBIyNraW1vLCBBIyNrYW1lKSwgRGllKTsgXAorICAgIEJiaWdvID0gUk9MNjQ2NChCYmlnbywgNDMsIDQ1KTsgXAorICAgIEUjI2JhZ2UgPSBYT1IxMjgoQmJhZ2UsIEFORG51MTI4KEJiZWdpLCBCYmlnbykpOyBcCisgICAgWE9SZXExMjgoRSMjYmFnZSwgQ09OU1Q2NChLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldKSk7IFwKKyAgICBDYWUgPSBFIyNiYWdlOyBcCisgICAgQmJvZ3UgPSBYT1IxMjgoR0VUNjRISUxPKEEjI2tpbW8sIEEjI3Npc28pLCBEb2kpOyBcCisgICAgQmJvZ3UgPSBST0w2NDY0KEJib2d1LCAyMSwgNjEpOyBcCisgICAgRSMjYmVnaSA9IFhPUjEyOChCYmVnaSwgQU5EbnUxMjgoQmJpZ28sIEJib2d1KSk7IFwKKyAgICBDZWkgPSBFIyNiZWdpOyBcCisgICAgQmJ1Z2EgPSBYT1IxMjgoR0VUNjRMT0xPKEEjI3N1LCBBIyNib2d1KSwgRHVvKTsgXAorICAgIEJidWdhID0gUk9MNjQ2NChCYnVnYSwgMTQsIDI4KTsgXAorICAgIEUjI2JpZ28gPSBYT1IxMjgoQmJpZ28sIEFORG51MTI4KEJib2d1LCBCYnVnYSkpOyBcCisgICAgQ2lvID0gRSMjYmlnbzsgXAorICAgIEUjI2JvZ3UgPSBYT1IxMjgoQmJvZ3UsIEFORG51MTI4KEJidWdhLCBCYmFnZSkpOyBcCisgICAgQ291ID0gRSMjYm9ndTsgXAorICAgIEUjI2J1Z2EgPSBYT1IxMjgoQmJ1Z2EsIEFORG51MTI4KEJiYWdlLCBCYmVnaSkpOyBcCisgICAgQ3VhID0gRSMjYnVnYTsgXAorXAorICAgIEJrYW1lID0gWE9SMTI4KEdFVDY0TE9ISShBIyNiZWdpLCBBIyNidWdhKSwgRGVhKTsgXAorICAgIEJrYW1lID0gUk9MNjQ2NChCa2FtZSwgMSwgMzYpOyBcCisgICAgQmtlbWkgPSBYT1IxMjgoR0VUNjRISUxPKEEjI2JlZ2ksIEEjI2tlbWkpLCBEaWUpOyBcCisgICAgQmtlbWkgPSBST0w2NDY0KEJrZW1pLCA2LCAxMCk7IFwKKyAgICBCa2ltbyA9IFhPUjEyOChHRVQ2NExPSEkoQSMja29tdSwgQSMja2VtaSksIERvaSk7IFwKKyAgICBCa2ltbyA9IFJPTDY0NjQoQmtpbW8sIDI1LCAxNSk7IFwKKyAgICBFIyNrYW1lID0gWE9SMTI4KEJrYW1lLCBBTkRudTEyOChCa2VtaSwgQmtpbW8pKTsgXAorICAgIFhPUmVxMTI4KENhZSwgRSMja2FtZSk7IFwKKyAgICBCa29tdSA9IFhPUjEyOChHRVQ2NEhJSEkoQSMja29tdSwgQSMjc2lzbyksIER1byk7IFwKKyAgICBCa29tdSA9IFJPTDY0NjQoQmtvbXUsIDgsIDU2KTsgXAorICAgIEUjI2tlbWkgPSBYT1IxMjgoQmtlbWksIEFORG51MTI4KEJraW1vLCBCa29tdSkpOyBcCisgICAgWE9SZXExMjgoQ2VpLCBFIyNrZW1pKTsgXAorICAgIEJrdW1hID0gWE9SMTI4KEdFVDY0TE9MTyhBIyNzYXNlLCBBIyNidWdhKSwgRGF1KTsgXAorICAgIEJrdW1hID0gUk9MNjQ2NChCa3VtYSwgMTgsIDI3KTsgXAorICAgIEUjI2tpbW8gPSBYT1IxMjgoQmtpbW8sIEFORG51MTI4KEJrb211LCBCa3VtYSkpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBFIyNraW1vKTsgXAorICAgIEUjI2tvbXUgPSBYT1IxMjgoQmtvbXUsIEFORG51MTI4KEJrdW1hLCBCa2FtZSkpOyBcCisgICAgWE9SZXExMjgoQ291LCBFIyNrb211KTsgXAorICAgIEUjI2t1bWEgPSBYT1IxMjgoQmt1bWEsIEFORG51MTI4KEJrYW1lLCBCa2VtaSkpOyBcCisgICAgWE9SZXExMjgoQ3VhLCBFIyNrdW1hKTsgXAorXAorICAgIEJzYXNlID0gWE9SMTI4KEEjI2JpZ28sIFNXQVA2NChEb2kpKTsgXAorICAgIEJzYXNlID0gUk9MNjQ2NChCc2FzZSwgNjIsIDU1KTsgXAorICAgIEJzaXNvID0gWE9SMTI4KEEjI2t1bWEsIFNXQVA2NChEYXUpKTsgXAorICAgIEJzaXNvID0gUk9MNjQ2NChCc2lzbywgMzksIDQxKTsgXAorICAgIEJzdXNhID0gWE9SNjQoQ09QWTY0SEkyTE8oQSMjc2FzZSksIERlaSk7IFwKKyAgICBCc3VzYSA9IFJPTDY0NjRzYW1lKEJzdXNhLCAyKTsgXAorICAgIEJzdXNhID0gR0VUNjRMT0xPKEJzdXNhLCBCc2FzZSk7IFwKKyAgICBCc2VzaSA9IEdFVDY0SElMTyhCc2FzZSwgQnNpc28pOyBcCisgICAgQnNvc3UgPSBHRVQ2NEhJTE8oQnNpc28sIEJzdXNhKTsgXAorICAgIEUjI3Nhc2UgPSBYT1IxMjgoQnNhc2UsIEFORG51MTI4KEJzZXNpLCBCc2lzbykpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBFIyNzYXNlKTsgXAorICAgIEUjI3Npc28gPSBYT1IxMjgoQnNpc28sIEFORG51MTI4KEJzb3N1LCBCc3VzYSkpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBFIyNzaXNvKTsgXAorICAgIEUjI3N1ID0gR0VUNjRMT0xPKFhPUjEyOChCc3VzYSwgQU5EbnUxMjgoQnNhc2UsIEJzZXNpKSksIFplcm8pOyBcCisgICAgWE9SZXExMjgoQ3VhLCBFIyNzdSk7IFwKK1wKKyAgICBaZXJvID0gWkVSTzEyOCgpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBHRVQ2NEhJSEkoQ3VhLCBaZXJvKSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIEdFVDY0TE9MTyhaZXJvLCBDZWkpKTsgXAorICAgIFhPUmVxMTI4KENpbywgR0VUNjRISUhJKENlaSwgWmVybykpOyBcCisgICAgWE9SZXExMjgoQ2lvLCBHRVQ2NExPTE8oWmVybywgQ291KSk7IFwKKyAgICBYT1JlcTEyOChDdWEsIEdFVDY0SElISShDb3UsIFplcm8pKTsgXAorCisvKiAgLS0tIFRoZXRhIFJobyBQaSBDaGkgSW90YSAqLworLyogIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCBhbmQgMTI4LWJpdCB3b3JkcyAqLworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKQorCitzdGF0aWMgY29uc3QgVUlOVDY0IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbMjRdID0geworICAgIDB4MDAwMDAwMDAwMDAwMDAwMVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwODJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDhhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwMFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwOGJVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDlVTEwsCisgICAgMHgwMDAwMDAwMDAwMDAwMDhhVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4OFVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwMDlVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwODA4YlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDAwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDg5VUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwM1VMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDgwVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODAwYVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDAwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDgxVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4MFVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMDFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDA4VUxMIH07CisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjU3NmJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmFlID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDBdKSwgTE9BRDEyOHUoaW5wdXRbIDBdKSk7IFwKKyAgICBYIyNiYSA9IFgjI2JhZTsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZSwgWCMjYmFlKTsgXAorICAgIENhZSA9IFgjI2JhZTsgXAorICAgIFgjI2JpbyA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAyXSksIExPQUQxMjh1KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYmkgPSBYIyNiaW87IFwKKyAgICBYIyNibyA9IEdFVDY0SElISShYIyNiaW8sIFgjI2Jpbyk7IFwKKyAgICBDaW8gPSBYIyNiaW87IFwKKyAgICBYIyNidSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNF0pLCBMT0FENjQoaW5wdXRbIDRdKSk7IFwKKyAgICBDdWEgPSBYIyNidTsgXAorICAgIFgjI2dhZSA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgNV0pLCBMT0FEMTI4dShpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlOyBcCisgICAgWCMjYnVnYSA9IEdFVDY0TE9MTyhYIyNidSwgWCMjZ2EpOyBcCisgICAgWCMjZ2UgPSBHRVQ2NEhJSEkoWCMjZ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjYmFnZSA9IEdFVDY0TE9MTyhYIyNiYSwgWCMjZ2UpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjZ2lvID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA3XSksIExPQUQxMjh1KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ2kgPSBYIyNnaW87IFwKKyAgICBYIyNiZWdpID0gR0VUNjRMT0xPKFgjI2JlLCBYIyNnaSk7IFwKKyAgICBYIyNnbyA9IEdFVDY0SElISShYIyNnaW8sIFgjI2dpbyk7IFwKKyAgICBYIyNiaWdvID0gR0VUNjRMT0xPKFgjI2JpLCBYIyNnbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2dpbyk7IFwKKyAgICBYIyNndSA9IExPQUQ2NChzdGF0ZVsgOV0pOyBcCisgICAgWCMjYm9ndSA9IEdFVDY0TE9MTyhYIyNibywgWCMjZ3UpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI2d1KTsgXAorICAgIFgjI2thZSA9IExPQUQxMjgoc3RhdGVbMTBdKTsgXAorICAgIFgjI2thID0gWCMja2FlOyBcCisgICAgWCMja2UgPSBHRVQ2NEhJSEkoWCMja2FlLCBYIyNrYWUpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUpOyBcCisgICAgWCMja2lvID0gTE9BRDEyOChzdGF0ZVsxMl0pOyBcCisgICAgWCMja2kgPSBYIyNraW87IFwKKyAgICBYIyNrbyA9IEdFVDY0SElISShYIyNraW8sIFgjI2tpbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpbyk7IFwKKyAgICBYIyNrdW1hID0gTE9BRDEyOChzdGF0ZVsxNF0pOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI2t1bWEpOyBcCisgICAgWCMjbWUgPSBMT0FENjQoc3RhdGVbMTZdKTsgXAorICAgIFgjI2thbWUgPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgR0VUNjRISUhJKFgjI2t1bWEsIFgjI2thbWUpKTsgXAorICAgIFgjI21pbyA9IExPQUQxMjh1KHN0YXRlWzE3XSk7IFwKKyAgICBYIyNtaSA9IFgjI21pbzsgXAorICAgIFgjI2tlbWkgPSBHRVQ2NExPTE8oWCMja2UsIFgjI21pKTsgXAorICAgIFgjI21vID0gR0VUNjRISUhJKFgjI21pbywgWCMjbWlvKTsgXAorICAgIFgjI2tpbW8gPSBHRVQ2NExPTE8oWCMja2ksIFgjI21vKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjbWlvKTsgXAorICAgIFgjI211ID0gTE9BRDY0KHN0YXRlWzE5XSk7IFwKKyAgICBYIyNrb211ID0gR0VUNjRMT0xPKFgjI2tvLCBYIyNtdSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMjbXUpOyBcCisgICAgWCMjc2FzZSA9IExPQUQxMjgoc3RhdGVbMjBdKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjc2FzZSk7IFwKKyAgICBYIyNzaXNvID0gTE9BRDEyOChzdGF0ZVsyMl0pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNzaXNvKTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMjc3UpOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjgzMmJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmFlID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDBdKSwgTE9BRDEyOHUoaW5wdXRbIDBdKSk7IFwKKyAgICBYIyNiYSA9IFgjI2JhZTsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZSwgWCMjYmFlKTsgXAorICAgIENhZSA9IFgjI2JhZTsgXAorICAgIFgjI2JpbyA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAyXSksIExPQUQxMjh1KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYmkgPSBYIyNiaW87IFwKKyAgICBYIyNibyA9IEdFVDY0SElISShYIyNiaW8sIFgjI2Jpbyk7IFwKKyAgICBDaW8gPSBYIyNiaW87IFwKKyAgICBYIyNidSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNF0pLCBMT0FENjQoaW5wdXRbIDRdKSk7IFwKKyAgICBDdWEgPSBYIyNidTsgXAorICAgIFgjI2dhZSA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgNV0pLCBMT0FEMTI4dShpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlOyBcCisgICAgWCMjYnVnYSA9IEdFVDY0TE9MTyhYIyNidSwgWCMjZ2EpOyBcCisgICAgWCMjZ2UgPSBHRVQ2NEhJSEkoWCMjZ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjYmFnZSA9IEdFVDY0TE9MTyhYIyNiYSwgWCMjZ2UpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjZ2lvID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA3XSksIExPQUQxMjh1KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ2kgPSBYIyNnaW87IFwKKyAgICBYIyNiZWdpID0gR0VUNjRMT0xPKFgjI2JlLCBYIyNnaSk7IFwKKyAgICBYIyNnbyA9IEdFVDY0SElISShYIyNnaW8sIFgjI2dpbyk7IFwKKyAgICBYIyNiaWdvID0gR0VUNjRMT0xPKFgjI2JpLCBYIyNnbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2dpbyk7IFwKKyAgICBYIyNndSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOV0pLCBMT0FENjQoaW5wdXRbIDldKSk7IFwKKyAgICBYIyNib2d1ID0gR0VUNjRMT0xPKFgjI2JvLCBYIyNndSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMjZ3UpOyBcCisgICAgWCMja2FlID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTBdKSwgTE9BRDEyOHUoaW5wdXRbMTBdKSk7IFwKKyAgICBYIyNrYSA9IFgjI2thZTsgXAorICAgIFgjI2tlID0gR0VUNjRISUhJKFgjI2thZSwgWCMja2FlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMja2FlKTsgXAorICAgIFgjI2tpbyA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEyXSksIExPQUQ2NChpbnB1dFsxMl0pKTsgXAorICAgIFgjI2tpID0gWCMja2lvOyBcCisgICAgWCMja28gPSBHRVQ2NEhJSEkoWCMja2lvLCBYIyNraW8pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNraW8pOyBcCisgICAgWCMja3VtYSA9IExPQUQxMjgoc3RhdGVbMTRdKTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNrdW1hKTsgXAorICAgIFgjI21lID0gTE9BRDY0KHN0YXRlWzE2XSk7IFwKKyAgICBYIyNrYW1lID0gR0VUNjRMT0xPKFgjI2thLCBYIyNtZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIEdFVDY0SElISShYIyNrdW1hLCBYIyNrYW1lKSk7IFwKKyAgICBYIyNtaW8gPSBMT0FEMTI4dShzdGF0ZVsxN10pOyBcCisgICAgWCMjbWkgPSBYIyNtaW87IFwKKyAgICBYIyNrZW1pID0gR0VUNjRMT0xPKFgjI2tlLCBYIyNtaSk7IFwKKyAgICBYIyNtbyA9IEdFVDY0SElISShYIyNtaW8sIFgjI21pbyk7IFwKKyAgICBYIyNraW1vID0gR0VUNjRMT0xPKFgjI2tpLCBYIyNtbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI21pbyk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWCMja29tdSA9IEdFVDY0TE9MTyhYIyNrbywgWCMjbXUpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI211KTsgXAorICAgIFgjI3Nhc2UgPSBMT0FEMTI4KHN0YXRlWzIwXSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3Nhc2UpOyBcCisgICAgWCMjc2lzbyA9IExPQUQxMjgoc3RhdGVbMjJdKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjc2lzbyk7IFwKKyAgICBYIyNzdSA9IExPQUQ2NChzdGF0ZVsyNF0pOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMDI0Yml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYWUgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMF0pLCBMT0FEMTI4dShpbnB1dFsgMF0pKTsgXAorICAgIFgjI2JhID0gWCMjYmFlOyBcCisgICAgWCMjYmUgPSBHRVQ2NEhJSEkoWCMjYmFlLCBYIyNiYWUpOyBcCisgICAgQ2FlID0gWCMjYmFlOyBcCisgICAgWCMjYmlvID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDJdKSwgTE9BRDEyOHUoaW5wdXRbIDJdKSk7IFwKKyAgICBYIyNiaSA9IFgjI2JpbzsgXAorICAgIFgjI2JvID0gR0VUNjRISUhJKFgjI2JpbywgWCMjYmlvKTsgXAorICAgIENpbyA9IFgjI2JpbzsgXAorICAgIFgjI2J1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA0XSksIExPQUQ2NChpbnB1dFsgNF0pKTsgXAorICAgIEN1YSA9IFgjI2J1OyBcCisgICAgWCMjZ2FlID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA1XSksIExPQUQxMjh1KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2EgPSBYIyNnYWU7IFwKKyAgICBYIyNidWdhID0gR0VUNjRMT0xPKFgjI2J1LCBYIyNnYSk7IFwKKyAgICBYIyNnZSA9IEdFVDY0SElISShYIyNnYWUsIFgjI2dhZSk7IFwKKyAgICBYIyNiYWdlID0gR0VUNjRMT0xPKFgjI2JhLCBYIyNnZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2dhZSk7IFwKKyAgICBYIyNnaW8gPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbIDddKSwgTE9BRDEyOHUoaW5wdXRbIDddKSk7IFwKKyAgICBYIyNnaSA9IFgjI2dpbzsgXAorICAgIFgjI2JlZ2kgPSBHRVQ2NExPTE8oWCMjYmUsIFgjI2dpKTsgXAorICAgIFgjI2dvID0gR0VUNjRISUhJKFgjI2dpbywgWCMjZ2lvKTsgXAorICAgIFgjI2JpZ28gPSBHRVQ2NExPTE8oWCMjYmksIFgjI2dvKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjZ2lvKTsgXAorICAgIFgjI2d1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA5XSksIExPQUQ2NChpbnB1dFsgOV0pKTsgXAorICAgIFgjI2JvZ3UgPSBHRVQ2NExPTE8oWCMjYm8sIFgjI2d1KTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNndSk7IFwKKyAgICBYIyNrYWUgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxMF0pLCBMT0FEMTI4dShpbnB1dFsxMF0pKTsgXAorICAgIFgjI2thID0gWCMja2FlOyBcCisgICAgWCMja2UgPSBHRVQ2NEhJSEkoWCMja2FlLCBYIyNrYWUpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUpOyBcCisgICAgWCMja2lvID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTJdKSwgTE9BRDEyOHUoaW5wdXRbMTJdKSk7IFwKKyAgICBYIyNraSA9IFgjI2tpbzsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpbywgWCMja2lvKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMja2lvKTsgXAorICAgIFgjI2t1bWEgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxNF0pLCBMT0FEMTI4KGlucHV0WzE0XSkpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI2t1bWEpOyBcCisgICAgWCMjbWUgPSBMT0FENjQoc3RhdGVbMTZdKTsgXAorICAgIFgjI2thbWUgPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgR0VUNjRISUhJKFgjI2t1bWEsIFgjI2thbWUpKTsgXAorICAgIFgjI21pbyA9IExPQUQxMjh1KHN0YXRlWzE3XSk7IFwKKyAgICBYIyNtaSA9IFgjI21pbzsgXAorICAgIFgjI2tlbWkgPSBHRVQ2NExPTE8oWCMja2UsIFgjI21pKTsgXAorICAgIFgjI21vID0gR0VUNjRISUhJKFgjI21pbywgWCMjbWlvKTsgXAorICAgIFgjI2tpbW8gPSBHRVQ2NExPTE8oWCMja2ksIFgjI21vKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjbWlvKTsgXAorICAgIFgjI211ID0gTE9BRDY0KHN0YXRlWzE5XSk7IFwKKyAgICBYIyNrb211ID0gR0VUNjRMT0xPKFgjI2tvLCBYIyNtdSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMjbXUpOyBcCisgICAgWCMjc2FzZSA9IExPQUQxMjgoc3RhdGVbMjBdKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjc2FzZSk7IFwKKyAgICBYIyNzaXNvID0gTE9BRDEyOChzdGF0ZVsyMl0pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNzaXNvKTsgXAorICAgIFgjI3N1ID0gTE9BRDY0KHN0YXRlWzI0XSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMjc3UpOyBcCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZUFuZFhvcjEwODhiaXRzKFgsIHN0YXRlLCBpbnB1dCkgXAorICAgIFgjI2JhZSA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAwXSksIExPQUQxMjh1KGlucHV0WyAwXSkpOyBcCisgICAgWCMjYmEgPSBYIyNiYWU7IFwKKyAgICBYIyNiZSA9IEdFVDY0SElISShYIyNiYWUsIFgjI2JhZSk7IFwKKyAgICBDYWUgPSBYIyNiYWU7IFwKKyAgICBYIyNiaW8gPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMl0pLCBMT0FEMTI4dShpbnB1dFsgMl0pKTsgXAorICAgIFgjI2JpID0gWCMjYmlvOyBcCisgICAgWCMjYm8gPSBHRVQ2NEhJSEkoWCMjYmlvLCBYIyNiaW8pOyBcCisgICAgQ2lvID0gWCMjYmlvOyBcCisgICAgWCMjYnUgPSBYT1I2NChMT0FENjQoc3RhdGVbIDRdKSwgTE9BRDY0KGlucHV0WyA0XSkpOyBcCisgICAgQ3VhID0gWCMjYnU7IFwKKyAgICBYIyNnYWUgPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbIDVdKSwgTE9BRDEyOHUoaW5wdXRbIDVdKSk7IFwKKyAgICBYIyNnYSA9IFgjI2dhZTsgXAorICAgIFgjI2J1Z2EgPSBHRVQ2NExPTE8oWCMjYnUsIFgjI2dhKTsgXAorICAgIFgjI2dlID0gR0VUNjRISUhJKFgjI2dhZSwgWCMjZ2FlKTsgXAorICAgIFgjI2JhZ2UgPSBHRVQ2NExPTE8oWCMjYmEsIFgjI2dlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMjZ2FlKTsgXAorICAgIFgjI2dpbyA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgN10pLCBMT0FEMTI4dShpbnB1dFsgN10pKTsgXAorICAgIFgjI2dpID0gWCMjZ2lvOyBcCisgICAgWCMjYmVnaSA9IEdFVDY0TE9MTyhYIyNiZSwgWCMjZ2kpOyBcCisgICAgWCMjZ28gPSBHRVQ2NEhJSEkoWCMjZ2lvLCBYIyNnaW8pOyBcCisgICAgWCMjYmlnbyA9IEdFVDY0TE9MTyhYIyNiaSwgWCMjZ28pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNnaW8pOyBcCisgICAgWCMjZ3UgPSBYT1I2NChMT0FENjQoc3RhdGVbIDldKSwgTE9BRDY0KGlucHV0WyA5XSkpOyBcCisgICAgWCMjYm9ndSA9IEdFVDY0TE9MTyhYIyNibywgWCMjZ3UpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI2d1KTsgXAorICAgIFgjI2thZSA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEwXSksIExPQUQxMjh1KGlucHV0WzEwXSkpOyBcCisgICAgWCMja2EgPSBYIyNrYWU7IFwKKyAgICBYIyNrZSA9IEdFVDY0SElISShYIyNrYWUsIFgjI2thZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2thZSk7IFwKKyAgICBYIyNraW8gPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxMl0pLCBMT0FEMTI4dShpbnB1dFsxMl0pKTsgXAorICAgIFgjI2tpID0gWCMja2lvOyBcCisgICAgWCMja28gPSBHRVQ2NEhJSEkoWCMja2lvLCBYIyNraW8pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNraW8pOyBcCisgICAgWCMja3VtYSA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzE0XSksIExPQUQxMjgoaW5wdXRbMTRdKSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMja3VtYSk7IFwKKyAgICBYIyNtZSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsxNl0pLCBMT0FENjQoaW5wdXRbMTZdKSk7IFwKKyAgICBYIyNrYW1lID0gR0VUNjRMT0xPKFgjI2thLCBYIyNtZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIEdFVDY0SElISShYIyNrdW1hLCBYIyNrYW1lKSk7IFwKKyAgICBYIyNtaW8gPSBMT0FEMTI4dShzdGF0ZVsxN10pOyBcCisgICAgWCMjbWkgPSBYIyNtaW87IFwKKyAgICBYIyNrZW1pID0gR0VUNjRMT0xPKFgjI2tlLCBYIyNtaSk7IFwKKyAgICBYIyNtbyA9IEdFVDY0SElISShYIyNtaW8sIFgjI21pbyk7IFwKKyAgICBYIyNraW1vID0gR0VUNjRMT0xPKFgjI2tpLCBYIyNtbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI21pbyk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWCMja29tdSA9IEdFVDY0TE9MTyhYIyNrbywgWCMjbXUpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI211KTsgXAorICAgIFgjI3Nhc2UgPSBMT0FEMTI4KHN0YXRlWzIwXSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3Nhc2UpOyBcCisgICAgWCMjc2lzbyA9IExPQUQxMjgoc3RhdGVbMjJdKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjc2lzbyk7IFwKKyAgICBYIyNzdSA9IExPQUQ2NChzdGF0ZVsyNF0pOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRYb3IxMTUyYml0cyhYLCBzdGF0ZSwgaW5wdXQpIFwKKyAgICBYIyNiYWUgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsgMF0pLCBMT0FEMTI4dShpbnB1dFsgMF0pKTsgXAorICAgIFgjI2JhID0gWCMjYmFlOyBcCisgICAgWCMjYmUgPSBHRVQ2NEhJSEkoWCMjYmFlLCBYIyNiYWUpOyBcCisgICAgQ2FlID0gWCMjYmFlOyBcCisgICAgWCMjYmlvID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDJdKSwgTE9BRDEyOHUoaW5wdXRbIDJdKSk7IFwKKyAgICBYIyNiaSA9IFgjI2JpbzsgXAorICAgIFgjI2JvID0gR0VUNjRISUhJKFgjI2JpbywgWCMjYmlvKTsgXAorICAgIENpbyA9IFgjI2JpbzsgXAorICAgIFgjI2J1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA0XSksIExPQUQ2NChpbnB1dFsgNF0pKTsgXAorICAgIEN1YSA9IFgjI2J1OyBcCisgICAgWCMjZ2FlID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA1XSksIExPQUQxMjh1KGlucHV0WyA1XSkpOyBcCisgICAgWCMjZ2EgPSBYIyNnYWU7IFwKKyAgICBYIyNidWdhID0gR0VUNjRMT0xPKFgjI2J1LCBYIyNnYSk7IFwKKyAgICBYIyNnZSA9IEdFVDY0SElISShYIyNnYWUsIFgjI2dhZSk7IFwKKyAgICBYIyNiYWdlID0gR0VUNjRMT0xPKFgjI2JhLCBYIyNnZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI2dhZSk7IFwKKyAgICBYIyNnaW8gPSBYT1IxMjgoTE9BRDEyOHUoc3RhdGVbIDddKSwgTE9BRDEyOHUoaW5wdXRbIDddKSk7IFwKKyAgICBYIyNnaSA9IFgjI2dpbzsgXAorICAgIFgjI2JlZ2kgPSBHRVQ2NExPTE8oWCMjYmUsIFgjI2dpKTsgXAorICAgIFgjI2dvID0gR0VUNjRISUhJKFgjI2dpbywgWCMjZ2lvKTsgXAorICAgIFgjI2JpZ28gPSBHRVQ2NExPTE8oWCMjYmksIFgjI2dvKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjZ2lvKTsgXAorICAgIFgjI2d1ID0gWE9SNjQoTE9BRDY0KHN0YXRlWyA5XSksIExPQUQ2NChpbnB1dFsgOV0pKTsgXAorICAgIFgjI2JvZ3UgPSBHRVQ2NExPTE8oWCMjYm8sIFgjI2d1KTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNndSk7IFwKKyAgICBYIyNrYWUgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxMF0pLCBMT0FEMTI4dShpbnB1dFsxMF0pKTsgXAorICAgIFgjI2thID0gWCMja2FlOyBcCisgICAgWCMja2UgPSBHRVQ2NEhJSEkoWCMja2FlLCBYIyNrYWUpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNrYWUpOyBcCisgICAgWCMja2lvID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTJdKSwgTE9BRDEyOHUoaW5wdXRbMTJdKSk7IFwKKyAgICBYIyNraSA9IFgjI2tpbzsgXAorICAgIFgjI2tvID0gR0VUNjRISUhJKFgjI2tpbywgWCMja2lvKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMja2lvKTsgXAorICAgIFgjI2t1bWEgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsxNF0pLCBMT0FEMTI4KGlucHV0WzE0XSkpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI2t1bWEpOyBcCisgICAgWCMjbWUgPSBYT1I2NChMT0FENjQoc3RhdGVbMTZdKSwgTE9BRDY0KGlucHV0WzE2XSkpOyBcCisgICAgWCMja2FtZSA9IEdFVDY0TE9MTyhYIyNrYSwgWCMjbWUpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBHRVQ2NEhJSEkoWCMja3VtYSwgWCMja2FtZSkpOyBcCisgICAgWCMjbWlvID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWzE3XSksIExPQUQ2NChpbnB1dFsxN10pKTsgXAorICAgIFgjI21pID0gWCMjbWlvOyBcCisgICAgWCMja2VtaSA9IEdFVDY0TE9MTyhYIyNrZSwgWCMjbWkpOyBcCisgICAgWCMjbW8gPSBHRVQ2NEhJSEkoWCMjbWlvLCBYIyNtaW8pOyBcCisgICAgWCMja2ltbyA9IEdFVDY0TE9MTyhYIyNraSwgWCMjbW8pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNtaW8pOyBcCisgICAgWCMjbXUgPSBMT0FENjQoc3RhdGVbMTldKTsgXAorICAgIFgjI2tvbXUgPSBHRVQ2NExPTE8oWCMja28sIFgjI211KTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNtdSk7IFwKKyAgICBYIyNzYXNlID0gTE9BRDEyOChzdGF0ZVsyMF0pOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNzYXNlKTsgXAorICAgIFgjI3Npc28gPSBMT0FEMTI4KHN0YXRlWzIyXSk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI3Npc28pOyBcCisgICAgWCMjc3UgPSBMT0FENjQoc3RhdGVbMjRdKTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNzdSk7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kWG9yMTM0NGJpdHMoWCwgc3RhdGUsIGlucHV0KSBcCisgICAgWCMjYmFlID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbIDBdKSwgTE9BRDEyOHUoaW5wdXRbIDBdKSk7IFwKKyAgICBYIyNiYSA9IFgjI2JhZTsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZSwgWCMjYmFlKTsgXAorICAgIENhZSA9IFgjI2JhZTsgXAorICAgIFgjI2JpbyA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWyAyXSksIExPQUQxMjh1KGlucHV0WyAyXSkpOyBcCisgICAgWCMjYmkgPSBYIyNiaW87IFwKKyAgICBYIyNibyA9IEdFVDY0SElISShYIyNiaW8sIFgjI2Jpbyk7IFwKKyAgICBDaW8gPSBYIyNiaW87IFwKKyAgICBYIyNidSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgNF0pLCBMT0FENjQoaW5wdXRbIDRdKSk7IFwKKyAgICBDdWEgPSBYIyNidTsgXAorICAgIFgjI2dhZSA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsgNV0pLCBMT0FEMTI4dShpbnB1dFsgNV0pKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlOyBcCisgICAgWCMjYnVnYSA9IEdFVDY0TE9MTyhYIyNidSwgWCMjZ2EpOyBcCisgICAgWCMjZ2UgPSBHRVQ2NEhJSEkoWCMjZ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjYmFnZSA9IEdFVDY0TE9MTyhYIyNiYSwgWCMjZ2UpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjZ2lvID0gWE9SMTI4KExPQUQxMjh1KHN0YXRlWyA3XSksIExPQUQxMjh1KGlucHV0WyA3XSkpOyBcCisgICAgWCMjZ2kgPSBYIyNnaW87IFwKKyAgICBYIyNiZWdpID0gR0VUNjRMT0xPKFgjI2JlLCBYIyNnaSk7IFwKKyAgICBYIyNnbyA9IEdFVDY0SElISShYIyNnaW8sIFgjI2dpbyk7IFwKKyAgICBYIyNiaWdvID0gR0VUNjRMT0xPKFgjI2JpLCBYIyNnbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2dpbyk7IFwKKyAgICBYIyNndSA9IFhPUjY0KExPQUQ2NChzdGF0ZVsgOV0pLCBMT0FENjQoaW5wdXRbIDldKSk7IFwKKyAgICBYIyNib2d1ID0gR0VUNjRMT0xPKFgjI2JvLCBYIyNndSk7IFwKKyAgICBYT1JlcTY0KEN1YSwgWCMjZ3UpOyBcCisgICAgWCMja2FlID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTBdKSwgTE9BRDEyOHUoaW5wdXRbMTBdKSk7IFwKKyAgICBYIyNrYSA9IFgjI2thZTsgXAorICAgIFgjI2tlID0gR0VUNjRISUhJKFgjI2thZSwgWCMja2FlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMja2FlKTsgXAorICAgIFgjI2tpbyA9IFhPUjEyOChMT0FEMTI4KHN0YXRlWzEyXSksIExPQUQxMjh1KGlucHV0WzEyXSkpOyBcCisgICAgWCMja2kgPSBYIyNraW87IFwKKyAgICBYIyNrbyA9IEdFVDY0SElISShYIyNraW8sIFgjI2tpbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI2tpbyk7IFwKKyAgICBYIyNrdW1hID0gWE9SMTI4KExPQUQxMjgoc3RhdGVbMTRdKSwgTE9BRDEyOChpbnB1dFsxNF0pKTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNrdW1hKTsgXAorICAgIFgjI21lID0gWE9SNjQoTE9BRDY0KHN0YXRlWzE2XSksIExPQUQ2NChpbnB1dFsxNl0pKTsgXAorICAgIFgjI2thbWUgPSBHRVQ2NExPTE8oWCMja2EsIFgjI21lKTsgXAorICAgIFhPUmVxMTI4KENhZSwgR0VUNjRISUhJKFgjI2t1bWEsIFgjI2thbWUpKTsgXAorICAgIFgjI21pbyA9IFhPUjEyOChMT0FEMTI4dShzdGF0ZVsxN10pLCBMT0FEMTI4dShpbnB1dFsxN10pKTsgXAorICAgIFgjI21pID0gWCMjbWlvOyBcCisgICAgWCMja2VtaSA9IEdFVDY0TE9MTyhYIyNrZSwgWCMjbWkpOyBcCisgICAgWCMjbW8gPSBHRVQ2NEhJSEkoWCMjbWlvLCBYIyNtaW8pOyBcCisgICAgWCMja2ltbyA9IEdFVDY0TE9MTyhYIyNraSwgWCMjbW8pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNtaW8pOyBcCisgICAgWCMjbXUgPSBYT1I2NChMT0FENjQoc3RhdGVbMTldKSwgTE9BRDY0KGlucHV0WzE5XSkpOyBcCisgICAgWCMja29tdSA9IEdFVDY0TE9MTyhYIyNrbywgWCMjbXUpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI211KTsgXAorICAgIFgjI3Nhc2UgPSBYT1IxMjgoTE9BRDEyOChzdGF0ZVsyMF0pLCBMT0FENjQoaW5wdXRbMjBdKSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3Nhc2UpOyBcCisgICAgWCMjc2lzbyA9IExPQUQxMjgoc3RhdGVbMjJdKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjc2lzbyk7IFwKKyAgICBYIyNzdSA9IExPQUQ2NChzdGF0ZVsyNF0pOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGUoWCwgc3RhdGUpIFwKKyAgICBYIyNiYWUgPSBMT0FEMTI4KHN0YXRlWyAwXSk7IFwKKyAgICBYIyNiYSA9IFgjI2JhZTsgXAorICAgIFgjI2JlID0gR0VUNjRISUhJKFgjI2JhZSwgWCMjYmFlKTsgXAorICAgIENhZSA9IFgjI2JhZTsgXAorICAgIFgjI2JpbyA9IExPQUQxMjgoc3RhdGVbIDJdKTsgXAorICAgIFgjI2JpID0gWCMjYmlvOyBcCisgICAgWCMjYm8gPSBHRVQ2NEhJSEkoWCMjYmlvLCBYIyNiaW8pOyBcCisgICAgQ2lvID0gWCMjYmlvOyBcCisgICAgWCMjYnUgPSBMT0FENjQoc3RhdGVbIDRdKTsgXAorICAgIEN1YSA9IFgjI2J1OyBcCisgICAgWCMjZ2FlID0gTE9BRDEyOHUoc3RhdGVbIDVdKTsgXAorICAgIFgjI2dhID0gWCMjZ2FlOyBcCisgICAgWCMjYnVnYSA9IEdFVDY0TE9MTyhYIyNidSwgWCMjZ2EpOyBcCisgICAgWCMjZ2UgPSBHRVQ2NEhJSEkoWCMjZ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjYmFnZSA9IEdFVDY0TE9MTyhYIyNiYSwgWCMjZ2UpOyBcCisgICAgWE9SZXExMjgoQ2FlLCBYIyNnYWUpOyBcCisgICAgWCMjZ2lvID0gTE9BRDEyOHUoc3RhdGVbIDddKTsgXAorICAgIFgjI2dpID0gWCMjZ2lvOyBcCisgICAgWCMjYmVnaSA9IEdFVDY0TE9MTyhYIyNiZSwgWCMjZ2kpOyBcCisgICAgWCMjZ28gPSBHRVQ2NEhJSEkoWCMjZ2lvLCBYIyNnaW8pOyBcCisgICAgWCMjYmlnbyA9IEdFVDY0TE9MTyhYIyNiaSwgWCMjZ28pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNnaW8pOyBcCisgICAgWCMjZ3UgPSBMT0FENjQoc3RhdGVbIDldKTsgXAorICAgIFgjI2JvZ3UgPSBHRVQ2NExPTE8oWCMjYm8sIFgjI2d1KTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNndSk7IFwKKyAgICBYIyNrYWUgPSBMT0FEMTI4KHN0YXRlWzEwXSk7IFwKKyAgICBYIyNrYSA9IFgjI2thZTsgXAorICAgIFgjI2tlID0gR0VUNjRISUhJKFgjI2thZSwgWCMja2FlKTsgXAorICAgIFhPUmVxMTI4KENhZSwgWCMja2FlKTsgXAorICAgIFgjI2tpbyA9IExPQUQxMjgoc3RhdGVbMTJdKTsgXAorICAgIFgjI2tpID0gWCMja2lvOyBcCisgICAgWCMja28gPSBHRVQ2NEhJSEkoWCMja2lvLCBYIyNraW8pOyBcCisgICAgWE9SZXExMjgoQ2lvLCBYIyNraW8pOyBcCisgICAgWCMja3VtYSA9IExPQUQxMjgoc3RhdGVbMTRdKTsgXAorICAgIFhPUmVxNjQoQ3VhLCBYIyNrdW1hKTsgXAorICAgIFgjI21lID0gTE9BRDY0KHN0YXRlWzE2XSk7IFwKKyAgICBYIyNrYW1lID0gR0VUNjRMT0xPKFgjI2thLCBYIyNtZSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIEdFVDY0SElISShYIyNrdW1hLCBYIyNrYW1lKSk7IFwKKyAgICBYIyNtaW8gPSBMT0FEMTI4dShzdGF0ZVsxN10pOyBcCisgICAgWCMjbWkgPSBYIyNtaW87IFwKKyAgICBYIyNrZW1pID0gR0VUNjRMT0xPKFgjI2tlLCBYIyNtaSk7IFwKKyAgICBYIyNtbyA9IEdFVDY0SElISShYIyNtaW8sIFgjI21pbyk7IFwKKyAgICBYIyNraW1vID0gR0VUNjRMT0xPKFgjI2tpLCBYIyNtbyk7IFwKKyAgICBYT1JlcTEyOChDaW8sIFgjI21pbyk7IFwKKyAgICBYIyNtdSA9IExPQUQ2NChzdGF0ZVsxOV0pOyBcCisgICAgWCMja29tdSA9IEdFVDY0TE9MTyhYIyNrbywgWCMjbXUpOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI211KTsgXAorICAgIFgjI3Nhc2UgPSBMT0FEMTI4KHN0YXRlWzIwXSk7IFwKKyAgICBYT1JlcTEyOChDYWUsIFgjI3Nhc2UpOyBcCisgICAgWCMjc2lzbyA9IExPQUQxMjgoc3RhdGVbMjJdKTsgXAorICAgIFhPUmVxMTI4KENpbywgWCMjc2lzbyk7IFwKKyAgICBYIyNzdSA9IExPQUQ2NChzdGF0ZVsyNF0pOyBcCisgICAgWE9SZXE2NChDdWEsIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgU1RPUkU2NChzdGF0ZVsgMF0sIFgjI2JhZ2UpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgMV0sIFgjI2JlZ2kpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgMl0sIFgjI2JpZ28pOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgM10sIFgjI2JvZ3UpOyBcCisgICAgU1RPUkUxMjgoc3RhdGVbIDRdLCBYIyNidWdhKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDZdLCBDT1BZNjRISTJMTyhYIyNiYWdlKSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWyA3XSwgQ09QWTY0SEkyTE8oWCMjYmVnaSkpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsgOF0sIENPUFk2NEhJMkxPKFgjI2JpZ28pKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbIDldLCBDT1BZNjRISTJMTyhYIyNib2d1KSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzEwXSwgWCMja2FtZSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzExXSwgWCMja2VtaSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzEyXSwgWCMja2ltbyk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzEzXSwgWCMja29tdSk7IFwKKyAgICBTVE9SRTEyOChzdGF0ZVsxNF0sIFgjI2t1bWEpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxNl0sIENPUFk2NEhJMkxPKFgjI2thbWUpKTsgXAorICAgIFNUT1JFNjQoc3RhdGVbMTddLCBDT1BZNjRISTJMTyhYIyNrZW1pKSk7IFwKKyAgICBTVE9SRTY0KHN0YXRlWzE4XSwgQ09QWTY0SEkyTE8oWCMja2ltbykpOyBcCisgICAgU1RPUkU2NChzdGF0ZVsxOV0sIENPUFk2NEhJMkxPKFgjI2tvbXUpKTsgXAorICAgIFNUT1JFMTI4KHN0YXRlWzIwXSwgWCMjc2FzZSk7IFwKKyAgICBTVE9SRTEyOChzdGF0ZVsyMl0sIFgjI3Npc28pOyBcCisgICAgU1RPUkU2NChzdGF0ZVsyNF0sIFgjI3N1KTsgXAorCisjZGVmaW5lIGNvcHlTdGF0ZVZhcmlhYmxlcyhYLCBZKSBcCisgICAgWCMjYmFnZSA9IFkjI2JhZ2U7IFwKKyAgICBYIyNiZWdpID0gWSMjYmVnaTsgXAorICAgIFgjI2JpZ28gPSBZIyNiaWdvOyBcCisgICAgWCMjYm9ndSA9IFkjI2JvZ3U7IFwKKyAgICBYIyNidWdhID0gWSMjYnVnYTsgXAorICAgIFgjI2thbWUgPSBZIyNrYW1lOyBcCisgICAgWCMja2VtaSA9IFkjI2tlbWk7IFwKKyAgICBYIyNraW1vID0gWSMja2ltbzsgXAorICAgIFgjI2tvbXUgPSBZIyNrb211OyBcCisgICAgWCMja3VtYSA9IFkjI2t1bWE7IFwKKyAgICBYIyNzYXNlID0gWSMjc2FzZTsgXAorICAgIFgjI3Npc28gPSBZIyNzaXNvOyBcCisgICAgWCMjc3UgPSBZIyNzdTsgXAorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtOSVNUSW50ZXJmYWNlLmMgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtOSVNUSW50ZXJmYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk0MDgyYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha05JU1RJbnRlcmZhY2UuYwpAQCAtMCwwICsxLDgzIEBACisvKgorVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCitoZXJlYnkgZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgIktlY2Nha05JU1RJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJLZWNjYWtGLTE2MDAtaW50ZXJmYWNlLmgiCisKK3N0YXRpYyBIYXNoUmV0dXJuIEluaXQoaGFzaFN0YXRlICpzdGF0ZSwgaW50IGhhc2hiaXRsZW4pCit7CisgICAgc3dpdGNoKGhhc2hiaXRsZW4pIHsKKyAgICAgICAgY2FzZSAwOiAvKiAgRGVmYXVsdCBwYXJhbWV0ZXJzLCBhcmJpdHJhcnkgbGVuZ3RoIG91dHB1dCAqLworICAgICAgICAgICAgSW5pdFNwb25nZSgoc3BvbmdlU3RhdGUqKXN0YXRlLCAxMDI0LCA1NzYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjI0OgorICAgICAgICAgICAgSW5pdFNwb25nZSgoc3BvbmdlU3RhdGUqKXN0YXRlLCAxMTUyLCA0NDgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjU2OgorICAgICAgICAgICAgSW5pdFNwb25nZSgoc3BvbmdlU3RhdGUqKXN0YXRlLCAxMDg4LCA1MTIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzg0OgorICAgICAgICAgICAgSW5pdFNwb25nZSgoc3BvbmdlU3RhdGUqKXN0YXRlLCA4MzIsIDc2OCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA1MTI6CisgICAgICAgICAgICBJbml0U3BvbmdlKChzcG9uZ2VTdGF0ZSopc3RhdGUsIDU3NiwgMTAyNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBCQURfSEFTSExFTjsKKyAgICB9CisgICAgc3RhdGUtPmZpeGVkT3V0cHV0TGVuZ3RoID0gaGFzaGJpdGxlbjsKKyAgICByZXR1cm4gU1VDQ0VTUzsKK30KKworc3RhdGljIEhhc2hSZXR1cm4gVXBkYXRlKGhhc2hTdGF0ZSAqc3RhdGUsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pCit7CisgICAgaWYgKChkYXRhYml0bGVuICUgOCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIEFic29yYigoc3BvbmdlU3RhdGUqKXN0YXRlLCBkYXRhLCBkYXRhYml0bGVuKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSGFzaFJldHVybiByZXQgPSBBYnNvcmIoKHNwb25nZVN0YXRlKilzdGF0ZSwgZGF0YSwgZGF0YWJpdGxlbiAtIChkYXRhYml0bGVuICUgOCkpOworICAgICAgICBpZiAocmV0ID09IFNVQ0NFU1MpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGFzdEJ5dGU7IAorICAgICAgICAgICAgLyogIEFsaWduIHRoZSBsYXN0IHBhcnRpYWwgYnl0ZSB0byB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworICAgICAgICAgICAgbGFzdEJ5dGUgPSBkYXRhW2RhdGFiaXRsZW4vOF0gPj4gKDggLSAoZGF0YWJpdGxlbiAlIDgpKTsKKyAgICAgICAgICAgIHJldHVybiBBYnNvcmIoKHNwb25nZVN0YXRlKilzdGF0ZSwgJmxhc3RCeXRlLCBkYXRhYml0bGVuICUgOCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9Cit9CisKK3N0YXRpYyBIYXNoUmV0dXJuIEZpbmFsKGhhc2hTdGF0ZSAqc3RhdGUsIEJpdFNlcXVlbmNlICpoYXNodmFsKQoreworICAgIHJldHVybiBTcXVlZXplKHN0YXRlLCBoYXNodmFsLCBzdGF0ZS0+Zml4ZWRPdXRwdXRMZW5ndGgpOworfQorCisvKgorc3RhdGljIEhhc2hSZXR1cm4gSGFzaChpbnQgaGFzaGJpdGxlbiwgY29uc3QgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbiwgQml0U2VxdWVuY2UgKmhhc2h2YWwpCit7CisgICAgaGFzaFN0YXRlIHN0YXRlOworICAgIEhhc2hSZXR1cm4gcmVzdWx0OworCisgICAgaWYgKChoYXNoYml0bGVuICE9IDIyNCkgJiYgKGhhc2hiaXRsZW4gIT0gMjU2KSAmJiAoaGFzaGJpdGxlbiAhPSAzODQpICYmIChoYXNoYml0bGVuICE9IDUxMikpCisgICAgICAgIHJldHVybiBCQURfSEFTSExFTjsgKiAgT25seSB0aGUgZm91ciBmaXhlZCBvdXRwdXQgbGVuZ3RocyBhdmFpbGFibGUgdGhyb3VnaCB0aGlzIEFQSSAqCisgICAgcmVzdWx0ID0gSW5pdCgmc3RhdGUsIGhhc2hiaXRsZW4pOworICAgIGlmIChyZXN1bHQgIT0gU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXN1bHQgPSBVcGRhdGUoJnN0YXRlLCBkYXRhLCBkYXRhYml0bGVuKTsKKyAgICBpZiAocmVzdWx0ICE9IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmVzdWx0ID0gRmluYWwoJnN0YXRlLCBoYXNodmFsKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorKi8KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrTklTVEludGVyZmFjZS5oIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrTklTVEludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NDQzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtOSVNUSW50ZXJmYWNlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKK1RoZSBLZWNjYWsgc3BvbmdlIGZ1bmN0aW9uLCBkZXNpZ25lZCBieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1lbiwKK01pY2hhw6tsIFBlZXRlcnMgYW5kIEdpbGxlcyBWYW4gQXNzY2hlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IKK3F1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlOiBodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgZGVzaWduZXJzLAoraGVyZWJ5IGRlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpZm5kZWYgX0tlY2Nha05JU1RJbnRlcmZhY2VfaF8KKyNkZWZpbmUgX0tlY2Nha05JU1RJbnRlcmZhY2VfaF8KKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQml0U2VxdWVuY2U7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBEYXRhTGVuZ3RoOwordHlwZWRlZiBlbnVtIHsgU1VDQ0VTUyA9IDAsIEZBSUwgPSAxLCBCQURfSEFTSExFTiA9IDIgfSBIYXNoUmV0dXJuOworCit0eXBlZGVmIHNwb25nZVN0YXRlIGhhc2hTdGF0ZTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24uCisgICogVGhlIHJhdGUgciBhbmQgY2FwYWNpdHkgYyB2YWx1ZXMgYXJlIGRldGVybWluZWQgZnJvbSBAYSBoYXNoYml0bGVuLgorICAqIEBwYXJhbSAgc3RhdGUgICAgICAgUG9pbnRlciB0byB0aGUgc3RhdGUgb2YgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBiZSBpbml0aWFsaXplZC4KKyAgKiBAcGFyYW0gIGhhc2hiaXRsZW4gIFRoZSBkZXNpcmVkIG51bWJlciBvZiBvdXRwdXQgYml0cywgCisgICogICAgICAgICAgICAgICAgICAgICBvciAwIGZvciBLZWNjYWtbXSB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycworICAqICAgICAgICAgICAgICAgICAgICAgYW5kIGFyYml0cmFyaWx5LWxvbmcgb3V0cHV0LgorICAqIEBwcmUgICAgVGhlIHZhbHVlIG9mIGhhc2hiaXRsZW4gbXVzdCBiZSBvbmUgb2YgMCwgMjI0LCAyNTYsIDM4NCBhbmQgNTEyLgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBCQURfSEFTSExFTiBpZiB0aGUgdmFsdWUgb2YgaGFzaGJpdGxlbiBpcyBpbmNvcnJlY3QuCisgICovCitzdGF0aWMgSGFzaFJldHVybiBJbml0KGhhc2hTdGF0ZSAqc3RhdGUsIGludCBoYXNoYml0bGVuKTsKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIuCisgICogQHBhcmFtICBzdGF0ZSAgICAgICBQb2ludGVyIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGluaXRpYWxpemVkIGJ5IEluaXQoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IGRhdGEuIAorICAqICAgICAgICAgICAgICAgICAgICAgV2hlbiBAYSBkYXRhYml0TGVuIGlzIG5vdCBhIG11bHRpcGxlIG9mIDgsIHRoZSBsYXN0IGJpdHMgb2YgZGF0YSBtdXN0IGJlCisgICogICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUuCisgICogQHBhcmFtICBkYXRhYml0TGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJpdHMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBJbiB0aGUgcHJldmlvdXMgY2FsbCB0byBBYnNvcmIoKSwgZGF0YWJpdExlbiB3YXMgYSBtdWx0aXBsZSBvZiA4LgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK3N0YXRpYyBIYXNoUmV0dXJuIFVwZGF0ZShoYXNoU3RhdGUgKnN0YXRlLCBjb25zdCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKTsKKy8qKgorICAqIEZ1bmN0aW9uIHRvIHNxdWVlemUgb3V0cHV0IGRhdGEgZnJvbSB0aGUgc3BvbmdlIGZ1bmN0aW9uLgorICAqIElmIEBhIGhhc2hiaXRsZW4gd2FzIG5vdCAwIGluIHRoZSBjYWxsIHRvIEluaXQoKSwgdGhlIG51bWJlciBvZiBvdXRwdXQgYml0cyBpcyBlcXVhbCB0byBAYSBoYXNoYml0bGVuLgorICAqIElmIEBhIGhhc2hiaXRsZW4gd2FzIDAgaW4gdGhlIGNhbGwgdG8gSW5pdCgpLCB0aGUgb3V0cHV0IGJpdHMgbXVzdCBiZSBleHRyYWN0ZWQgdXNpbmcgdGhlIFNxdWVlemUoKSBmdW5jdGlvbi4KKyAgKiBAcGFyYW0gIHN0YXRlICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXRlIG9mIHRoZSBzcG9uZ2UgZnVuY3Rpb24gaW5pdGlhbGl6ZWQgYnkgSW5pdCgpLgorICAqIEBwYXJhbSAgaGFzaHZhbCAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgZGF0YS4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitzdGF0aWMgSGFzaFJldHVybiBGaW5hbChoYXNoU3RhdGUgKnN0YXRlLCBCaXRTZXF1ZW5jZSAqaGFzaHZhbCk7CisvKioKKyAgKiBGdW5jdGlvbiB0byBjb21wdXRlIGEgaGFzaCB1c2luZyB0aGUgS2VjY2FrW3IsIGNdIHNwb25nZSBmdW5jdGlvbi4KKyAgKiBUaGUgcmF0ZSByIGFuZCBjYXBhY2l0eSBjIHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBmcm9tIEBhIGhhc2hiaXRsZW4uCisgICogQHBhcmFtICBoYXNoYml0bGVuICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJpdHMuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBpbnB1dCBkYXRhLiAKKyAgKiAgICAgICAgICAgICAgICAgICAgIFdoZW4gQGEgZGF0YWJpdExlbiBpcyBub3QgYSBtdWx0aXBsZSBvZiA4LCB0aGUgbGFzdCBiaXRzIG9mIGRhdGEgbXVzdCBiZQorICAqICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgbGFzdCBieXRlLgorICAqIEBwYXJhbSAgZGF0YWJpdExlbiAgVGhlIG51bWJlciBvZiBpbnB1dCBiaXRzIHByb3ZpZGVkIGluIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwYXJhbSAgaGFzaHZhbCAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgZGF0YS4KKyAgKiBAcHJlICAgIFRoZSB2YWx1ZSBvZiBoYXNoYml0bGVuIG11c3QgYmUgb25lIG9mIDIyNCwgMjU2LCAzODQgYW5kIDUxMi4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgQkFEX0hBU0hMRU4gaWYgdGhlIHZhbHVlIG9mIGhhc2hiaXRsZW4gaXMgaW5jb3JyZWN0LgorICAqLworLyoKK3N0YXRpYyBIYXNoUmV0dXJuIEhhc2goaW50IGhhc2hiaXRsZW4sIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4sIEJpdFNlcXVlbmNlICpoYXNodmFsKTsKKyovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrU3BvbmdlLmMgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtTcG9uZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2E2YmYwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvS2VjY2FrU3BvbmdlLmMKQEAgLTAsMCArMSwyNjYgQEAKKy8qCitUaGUgS2VjY2FrIHNwb25nZSBmdW5jdGlvbiwgZGVzaWduZWQgYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sCitNaWNoYcOrbCBQZWV0ZXJzIGFuZCBHaWxsZXMgVmFuIEFzc2NoZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yCitxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZTogaHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KKworSW1wbGVtZW50YXRpb24gYnkgdGhlIGRlc2lnbmVycywKK2hlcmVieSBkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiS2VjY2FrU3BvbmdlLmgiCisjaW5jbHVkZSAiS2VjY2FrRi0xNjAwLWludGVyZmFjZS5oIgorI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorI2luY2x1ZGUgImRpc3BsYXlJbnRlcm1lZGlhdGVWYWx1ZXMuaCIKKyNlbmRpZgorCitzdGF0aWMgaW50IEluaXRTcG9uZ2Uoc3BvbmdlU3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5KQoreworICAgIGlmIChyYXRlK2NhcGFjaXR5ICE9IDE2MDApCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+PSAxNjAwKSB8fCAoKHJhdGUgJSA2NCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIEtlY2Nha0luaXRpYWxpemUoKTsKKyAgICBzdGF0ZS0+cmF0ZSA9IHJhdGU7CisgICAgc3RhdGUtPmNhcGFjaXR5ID0gY2FwYWNpdHk7CisgICAgc3RhdGUtPmZpeGVkT3V0cHV0TGVuZ3RoID0gMDsKKyAgICBLZWNjYWtJbml0aWFsaXplU3RhdGUoc3RhdGUtPnN0YXRlKTsKKyAgICBtZW1zZXQoc3RhdGUtPmRhdGFRdWV1ZSwgMCwgS2VjY2FrTWF4aW11bVJhdGVJbkJ5dGVzKTsKKyAgICBzdGF0ZS0+Yml0c0luUXVldWUgPSAwOworICAgIHN0YXRlLT5zcXVlZXppbmcgPSAwOworICAgIHN0YXRlLT5iaXRzQXZhaWxhYmxlRm9yU3F1ZWV6aW5nID0gMDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBBYnNvcmJRdWV1ZShzcG9uZ2VTdGF0ZSAqc3RhdGUpCit7CisgICAgLyogIHN0YXRlLT5iaXRzSW5RdWV1ZSBpcyBhc3N1bWVkIHRvIGJlIGVxdWFsIHRvIHN0YXRlLT5yYXRlICovCisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBzdGF0ZS0+ZGF0YVF1ZXVlLCBzdGF0ZS0+cmF0ZS84KTsKKyAgICAjZW5kaWYKKyNpZmRlZiBQcm92aWRlRmFzdDU3NgorICAgIGlmIChzdGF0ZS0+cmF0ZSA9PSA1NzYpCisgICAgICAgIEtlY2Nha0Fic29yYjU3NmJpdHMoc3RhdGUtPnN0YXRlLCBzdGF0ZS0+ZGF0YVF1ZXVlKTsKKyAgICBlbHNlIAorI2VuZGlmCisjaWZkZWYgUHJvdmlkZUZhc3Q4MzIKKyAgICBpZiAoc3RhdGUtPnJhdGUgPT0gODMyKQorICAgICAgICBLZWNjYWtBYnNvcmI4MzJiaXRzKHN0YXRlLT5zdGF0ZSwgc3RhdGUtPmRhdGFRdWV1ZSk7CisgICAgZWxzZSAKKyNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorICAgIGlmIChzdGF0ZS0+cmF0ZSA9PSAxMDI0KQorICAgICAgICBLZWNjYWtBYnNvcmIxMDI0Yml0cyhzdGF0ZS0+c3RhdGUsIHN0YXRlLT5kYXRhUXVldWUpOworICAgIGVsc2UgCisjZW5kaWYKKyNpZmRlZiBQcm92aWRlRmFzdDEwODgKKyAgICBpZiAoc3RhdGUtPnJhdGUgPT0gMTA4OCkKKyAgICAgICAgS2VjY2FrQWJzb3JiMTA4OGJpdHMoc3RhdGUtPnN0YXRlLCBzdGF0ZS0+ZGF0YVF1ZXVlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBQcm92aWRlRmFzdDExNTIKKyAgICBpZiAoc3RhdGUtPnJhdGUgPT0gMTE1MikKKyAgICAgICAgS2VjY2FrQWJzb3JiMTE1MmJpdHMoc3RhdGUtPnN0YXRlLCBzdGF0ZS0+ZGF0YVF1ZXVlKTsKKyAgICBlbHNlIAorI2VuZGlmCisjaWZkZWYgUHJvdmlkZUZhc3QxMzQ0CisgICAgaWYgKHN0YXRlLT5yYXRlID09IDEzNDQpCisgICAgICAgIEtlY2Nha0Fic29yYjEzNDRiaXRzKHN0YXRlLT5zdGF0ZSwgc3RhdGUtPmRhdGFRdWV1ZSk7CisgICAgZWxzZSAKKyNlbmRpZgorICAgICAgICBLZWNjYWtBYnNvcmIoc3RhdGUtPnN0YXRlLCBzdGF0ZS0+ZGF0YVF1ZXVlLCBzdGF0ZS0+cmF0ZS82NCk7CisgICAgc3RhdGUtPmJpdHNJblF1ZXVlID0gMDsKK30KKworc3RhdGljIGludCBBYnNvcmIoc3BvbmdlU3RhdGUgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YWJpdGxlbikKK3sKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgaSwgaiwgd2hvbGVCbG9ja3M7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jaywgcGFydGlhbEJ5dGU7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VyRGF0YTsKKworICAgIGlmICgoc3RhdGUtPmJpdHNJblF1ZXVlICUgOCkgIT0gMCkKKyAgICAgICAgcmV0dXJuIDE7IC8qICBPbmx5IHRoZSBsYXN0IGNhbGwgbWF5IGNvbnRhaW4gYSBwYXJ0aWFsIGJ5dGUgKi8KKyAgICBpZiAoc3RhdGUtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qICBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisgICAgaSA9IDA7CisgICAgd2hpbGUoaSA8IGRhdGFiaXRsZW4pIHsKKyAgICAgICAgaWYgKChzdGF0ZS0+Yml0c0luUXVldWUgPT0gMCkgJiYgKGRhdGFiaXRsZW4gPj0gc3RhdGUtPnJhdGUpICYmIChpIDw9IChkYXRhYml0bGVuLXN0YXRlLT5yYXRlKSkpIHsKKyAgICAgICAgICAgIHdob2xlQmxvY2tzID0gKGRhdGFiaXRsZW4taSkvc3RhdGUtPnJhdGU7CisgICAgICAgICAgICBjdXJEYXRhID0gZGF0YStpLzg7CisjaWZkZWYgUHJvdmlkZUZhc3Q1NzYKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+cmF0ZSA9PSA1NzYpIHsKKyAgICAgICAgICAgICAgICBmb3Ioaj0wOyBqPHdob2xlQmxvY2tzOyBqKyssIGN1ckRhdGErPTU3Ni84KSB7CisgICAgICAgICAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCIsIGN1ckRhdGEsIHN0YXRlLT5yYXRlLzgpOworICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgS2VjY2FrQWJzb3JiNTc2Yml0cyhzdGF0ZS0+c3RhdGUsIGN1ckRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0ODMyCisgICAgICAgICAgICBpZiAoc3RhdGUtPnJhdGUgPT0gODMyKSB7CisgICAgICAgICAgICAgICAgZm9yKGo9MDsgajx3aG9sZUJsb2NrczsgaisrLCBjdXJEYXRhKz04MzIvOCkgeworICAgICAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBjdXJEYXRhLCBzdGF0ZS0+cmF0ZS84KTsKKyAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIEtlY2Nha0Fic29yYjgzMmJpdHMoc3RhdGUtPnN0YXRlLCBjdXJEYXRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBQcm92aWRlRmFzdDEwMjQKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+cmF0ZSA9PSAxMDI0KSB7CisgICAgICAgICAgICAgICAgZm9yKGo9MDsgajx3aG9sZUJsb2NrczsgaisrLCBjdXJEYXRhKz0xMDI0LzgpIHsKKyAgICAgICAgICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VyRGF0YSwgc3RhdGUtPnJhdGUvOCk7CisgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgICBLZWNjYWtBYnNvcmIxMDI0Yml0cyhzdGF0ZS0+c3RhdGUsIGN1ckRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0MTA4OAorICAgICAgICAgICAgaWYgKHN0YXRlLT5yYXRlID09IDEwODgpIHsKKyAgICAgICAgICAgICAgICBmb3Ioaj0wOyBqPHdob2xlQmxvY2tzOyBqKyssIGN1ckRhdGErPTEwODgvOCkgeworICAgICAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBjdXJEYXRhLCBzdGF0ZS0+cmF0ZS84KTsKKyAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIEtlY2Nha0Fic29yYjEwODhiaXRzKHN0YXRlLT5zdGF0ZSwgY3VyRGF0YSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgUHJvdmlkZUZhc3QxMTUyCisgICAgICAgICAgICBpZiAoc3RhdGUtPnJhdGUgPT0gMTE1MikgeworICAgICAgICAgICAgICAgIGZvcihqPTA7IGo8d2hvbGVCbG9ja3M7IGorKywgY3VyRGF0YSs9MTE1Mi84KSB7CisgICAgICAgICAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCIsIGN1ckRhdGEsIHN0YXRlLT5yYXRlLzgpOworICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgS2VjY2FrQWJzb3JiMTE1MmJpdHMoc3RhdGUtPnN0YXRlLCBjdXJEYXRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBQcm92aWRlRmFzdDEzNDQKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+cmF0ZSA9PSAxMzQ0KSB7CisgICAgICAgICAgICAgICAgZm9yKGo9MDsgajx3aG9sZUJsb2NrczsgaisrLCBjdXJEYXRhKz0xMzQ0LzgpIHsKKyAgICAgICAgICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VyRGF0YSwgc3RhdGUtPnJhdGUvOCk7CisgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgICBLZWNjYWtBYnNvcmIxMzQ0Yml0cyhzdGF0ZS0+c3RhdGUsIGN1ckRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvcihqPTA7IGo8d2hvbGVCbG9ja3M7IGorKywgY3VyRGF0YSs9c3RhdGUtPnJhdGUvOCkgeworICAgICAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBjdXJEYXRhLCBzdGF0ZS0+cmF0ZS84KTsKKyAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIEtlY2Nha0Fic29yYihzdGF0ZS0+c3RhdGUsIGN1ckRhdGEsIHN0YXRlLT5yYXRlLzY0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpICs9IHdob2xlQmxvY2tzKnN0YXRlLT5yYXRlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludCkoZGF0YWJpdGxlbiAtIGkpOworICAgICAgICAgICAgaWYgKHBhcnRpYWxCbG9jaytzdGF0ZS0+Yml0c0luUXVldWUgPiBzdGF0ZS0+cmF0ZSkKKyAgICAgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSBzdGF0ZS0+cmF0ZS1zdGF0ZS0+Yml0c0luUXVldWU7CisgICAgICAgICAgICBwYXJ0aWFsQnl0ZSA9IHBhcnRpYWxCbG9jayAlIDg7CisgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgLT0gcGFydGlhbEJ5dGU7CisgICAgICAgICAgICBtZW1jcHkoc3RhdGUtPmRhdGFRdWV1ZStzdGF0ZS0+Yml0c0luUXVldWUvOCwgZGF0YStpLzgsIHBhcnRpYWxCbG9jay84KTsKKyAgICAgICAgICAgIHN0YXRlLT5iaXRzSW5RdWV1ZSArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgICAgICBpICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGlmIChzdGF0ZS0+Yml0c0luUXVldWUgPT0gc3RhdGUtPnJhdGUpCisgICAgICAgICAgICAgICAgQWJzb3JiUXVldWUoc3RhdGUpOworICAgICAgICAgICAgaWYgKHBhcnRpYWxCeXRlID4gMCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWFzayA9ICgxIDw8IHBhcnRpYWxCeXRlKS0xOworICAgICAgICAgICAgICAgIHN0YXRlLT5kYXRhUXVldWVbc3RhdGUtPmJpdHNJblF1ZXVlLzhdID0gZGF0YVtpLzhdICYgbWFzazsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+Yml0c0luUXVldWUgKz0gcGFydGlhbEJ5dGU7CisgICAgICAgICAgICAgICAgaSArPSBwYXJ0aWFsQnl0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgUGFkQW5kU3dpdGNoVG9TcXVlZXppbmdQaGFzZShzcG9uZ2VTdGF0ZSAqc3RhdGUpCit7CisgICAgLyogIE5vdGU6IHRoZSBiaXRzIGFyZSBudW1iZXJlZCBmcm9tIDA9TFNCIHRvIDc9TVNCICovCisgICAgaWYgKHN0YXRlLT5iaXRzSW5RdWV1ZSArIDEgPT0gc3RhdGUtPnJhdGUpIHsKKyAgICAgICAgc3RhdGUtPmRhdGFRdWV1ZVtzdGF0ZS0+Yml0c0luUXVldWUvOCBdIHw9IDEgPDwgKHN0YXRlLT5iaXRzSW5RdWV1ZSAlIDgpOworICAgICAgICBBYnNvcmJRdWV1ZShzdGF0ZSk7CisgICAgICAgIG1lbXNldChzdGF0ZS0+ZGF0YVF1ZXVlLCAwLCBzdGF0ZS0+cmF0ZS84KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1lbXNldChzdGF0ZS0+ZGF0YVF1ZXVlICsgKHN0YXRlLT5iaXRzSW5RdWV1ZSs3KS84LCAwLCBzdGF0ZS0+cmF0ZS84IC0gKHN0YXRlLT5iaXRzSW5RdWV1ZSs3KS84KTsKKyAgICAgICAgc3RhdGUtPmRhdGFRdWV1ZVtzdGF0ZS0+Yml0c0luUXVldWUvOCBdIHw9IDEgPDwgKHN0YXRlLT5iaXRzSW5RdWV1ZSAlIDgpOworICAgIH0KKyAgICBzdGF0ZS0+ZGF0YVF1ZXVlWyhzdGF0ZS0+cmF0ZS0xKS84XSB8PSAxIDw8ICgoc3RhdGUtPnJhdGUtMSkgJSA4KTsKKyAgICBBYnNvcmJRdWV1ZShzdGF0ZSk7CisKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheVRleHQoMSwgIi0tLSBTd2l0Y2hpbmcgdG8gc3F1ZWV6aW5nIHBoYXNlIC0tLSIpOworICAgICNlbmRpZgorI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorICAgIGlmIChzdGF0ZS0+cmF0ZSA9PSAxMDI0KSB7CisgICAgICAgIEtlY2Nha0V4dHJhY3QxMDI0Yml0cyhzdGF0ZS0+c3RhdGUsIHN0YXRlLT5kYXRhUXVldWUpOworICAgICAgICBzdGF0ZS0+Yml0c0F2YWlsYWJsZUZvclNxdWVlemluZyA9IDEwMjQ7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgS2VjY2FrRXh0cmFjdChzdGF0ZS0+c3RhdGUsIHN0YXRlLT5kYXRhUXVldWUsIHN0YXRlLT5yYXRlLzY0KTsKKyAgICAgICAgc3RhdGUtPmJpdHNBdmFpbGFibGVGb3JTcXVlZXppbmcgPSBzdGF0ZS0+cmF0ZTsKKyAgICB9CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgYXZhaWxhYmxlIGZvciBzcXVlZXppbmciLCBzdGF0ZS0+ZGF0YVF1ZXVlLCBzdGF0ZS0+Yml0c0F2YWlsYWJsZUZvclNxdWVlemluZy84KTsKKyAgICAjZW5kaWYKKyAgICBzdGF0ZS0+c3F1ZWV6aW5nID0gMTsKK30KKworc3RhdGljIGludCBTcXVlZXplKHNwb25nZVN0YXRlICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBsb25nIGxvbmcgb3V0cHV0TGVuZ3RoKQoreworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisKKyAgICBpZiAoIXN0YXRlLT5zcXVlZXppbmcpCisgICAgICAgIFBhZEFuZFN3aXRjaFRvU3F1ZWV6aW5nUGhhc2Uoc3RhdGUpOworICAgIGlmICgob3V0cHV0TGVuZ3RoICUgOCkgIT0gMCkKKyAgICAgICAgcmV0dXJuIDE7IC8qICBPbmx5IG11bHRpcGxlIG9mIDggYml0cyBhcmUgYWxsb3dlZCwgdHJ1bmNhdGlvbiBjYW4gYmUgZG9uZSBhdCB1c2VyIGxldmVsICovCisKKyAgICBpID0gMDsKKyAgICB3aGlsZShpIDwgb3V0cHV0TGVuZ3RoKSB7CisgICAgICAgIGlmIChzdGF0ZS0+Yml0c0F2YWlsYWJsZUZvclNxdWVlemluZyA9PSAwKSB7CisgICAgICAgICAgICBLZWNjYWtQZXJtdXRhdGlvbihzdGF0ZS0+c3RhdGUpOworI2lmZGVmIFByb3ZpZGVGYXN0MTAyNAorICAgICAgICAgICAgaWYgKHN0YXRlLT5yYXRlID09IDEwMjQpIHsKKyAgICAgICAgICAgICAgICBLZWNjYWtFeHRyYWN0MTAyNGJpdHMoc3RhdGUtPnN0YXRlLCBzdGF0ZS0+ZGF0YVF1ZXVlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+Yml0c0F2YWlsYWJsZUZvclNxdWVlemluZyA9IDEwMjQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBLZWNjYWtFeHRyYWN0KHN0YXRlLT5zdGF0ZSwgc3RhdGUtPmRhdGFRdWV1ZSwgc3RhdGUtPnJhdGUvNjQpOworICAgICAgICAgICAgICAgIHN0YXRlLT5iaXRzQXZhaWxhYmxlRm9yU3F1ZWV6aW5nID0gc3RhdGUtPnJhdGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIGF2YWlsYWJsZSBmb3Igc3F1ZWV6aW5nIiwgc3RhdGUtPmRhdGFRdWV1ZSwgc3RhdGUtPmJpdHNBdmFpbGFibGVGb3JTcXVlZXppbmcvOCk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBwYXJ0aWFsQmxvY2sgPSBzdGF0ZS0+Yml0c0F2YWlsYWJsZUZvclNxdWVlemluZzsKKyAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nIGxvbmcpcGFydGlhbEJsb2NrID4gb3V0cHV0TGVuZ3RoIC0gaSkKKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKG91dHB1dExlbmd0aCAtIGkpOworICAgICAgICBtZW1jcHkob3V0cHV0K2kvOCwgc3RhdGUtPmRhdGFRdWV1ZSsoc3RhdGUtPnJhdGUtc3RhdGUtPmJpdHNBdmFpbGFibGVGb3JTcXVlZXppbmcpLzgsIHBhcnRpYWxCbG9jay84KTsKKyAgICAgICAgc3RhdGUtPmJpdHNBdmFpbGFibGVGb3JTcXVlZXppbmcgLT0gcGFydGlhbEJsb2NrOworICAgICAgICBpICs9IHBhcnRpYWxCbG9jazsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtTcG9uZ2UuaCBiL01vZHVsZXMvX3NoYTMva2VjY2FrL0tlY2Nha1Nwb25nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1NDVjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9LZWNjYWtTcG9uZ2UuaApAQCAtMCwwICsxLDc2IEBACisvKgorVGhlIEtlY2NhayBzcG9uZ2UgZnVuY3Rpb24sIGRlc2lnbmVkIGJ5IEd1aWRvIEJlcnRvbmksIEpvYW4gRGFlbWVuLAorTWljaGHDq2wgUGVldGVycyBhbmQgR2lsbGVzIFZhbiBBc3NjaGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvcgorcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGU6IGh0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCisKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBkZXNpZ25lcnMsCitoZXJlYnkgZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrU3BvbmdlX2hfCisjZGVmaW5lIF9LZWNjYWtTcG9uZ2VfaF8KKworI2RlZmluZSBLZWNjYWtQZXJtdXRhdGlvblNpemUgMTYwMAorI2RlZmluZSBLZWNjYWtQZXJtdXRhdGlvblNpemVJbkJ5dGVzIChLZWNjYWtQZXJtdXRhdGlvblNpemUvOCkKKyNkZWZpbmUgS2VjY2FrTWF4aW11bVJhdGUgMTUzNgorI2RlZmluZSBLZWNjYWtNYXhpbXVtUmF0ZUluQnl0ZXMgKEtlY2Nha01heGltdW1SYXRlLzgpCisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBBTElHTiBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCgzMikpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUxJR04gX19kZWNsc3BlYyhhbGlnbigzMikpCisjZWxzZQorI2RlZmluZSBBTElHTgorI2VuZGlmCisKK0FMSUdOIHR5cGVkZWYgc3RydWN0IHNwb25nZVN0YXRlU3RydWN0IHsKKyAgICBBTElHTiB1bnNpZ25lZCBjaGFyIHN0YXRlW0tlY2Nha1Blcm11dGF0aW9uU2l6ZUluQnl0ZXNdOworICAgIEFMSUdOIHVuc2lnbmVkIGNoYXIgZGF0YVF1ZXVlW0tlY2Nha01heGltdW1SYXRlSW5CeXRlc107CisgICAgdW5zaWduZWQgaW50IHJhdGU7CisgICAgdW5zaWduZWQgaW50IGNhcGFjaXR5OworICAgIHVuc2lnbmVkIGludCBiaXRzSW5RdWV1ZTsKKyAgICB1bnNpZ25lZCBpbnQgZml4ZWRPdXRwdXRMZW5ndGg7CisgICAgaW50IHNxdWVlemluZzsKKyAgICB1bnNpZ25lZCBpbnQgYml0c0F2YWlsYWJsZUZvclNxdWVlemluZzsKK30gc3BvbmdlU3RhdGU7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uLgorICAqIFRoZSBzcG9uZ2UgZnVuY3Rpb24gaXMgc2V0IHRvIHRoZSBhYnNvcmJpbmcgcGhhc2UuCisgICogQHBhcmFtICBzdGF0ZSAgICAgICBQb2ludGVyIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHByZSAgICBPbmUgbXVzdCBoYXZlIHIrYz0xNjAwIGFuZCB0aGUgcmF0ZSBhIG11bHRpcGxlIG9mIDY0IGJpdHMgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitzdGF0aWMgaW50IEluaXRTcG9uZ2Uoc3BvbmdlU3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5KTsKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIuCisgICogQHBhcmFtICBzdGF0ZSAgICAgICBQb2ludGVyIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGluaXRpYWxpemVkIGJ5IEluaXRTcG9uZ2UoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IGRhdGEuIAorICAqICAgICAgICAgICAgICAgICAgICAgV2hlbiBAYSBkYXRhYml0TGVuIGlzIG5vdCBhIG11bHRpcGxlIG9mIDgsIHRoZSBsYXN0IGJpdHMgb2YgZGF0YSBtdXN0IGJlCisgICogICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgbGFzdCBieXRlLgorICAqIEBwYXJhbSAgZGF0YWJpdExlbiAgVGhlIG51bWJlciBvZiBpbnB1dCBiaXRzIHByb3ZpZGVkIGluIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwcmUgICAgSW4gdGhlIHByZXZpb3VzIGNhbGwgdG8gQWJzb3JiKCksIGRhdGFiaXRMZW4gd2FzIGEgbXVsdGlwbGUgb2YgOC4KKyAgKiBAcHJlICAgIFRoZSBzcG9uZ2UgZnVuY3Rpb24gbXVzdCBiZSBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLAorICAqICAgICAgICAgaS5lLiwgU3F1ZWV6ZSgpIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK3N0YXRpYyBpbnQgQWJzb3JiKHNwb25nZVN0YXRlICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgbG9uZyBsb25nIGRhdGFiaXRsZW4pOworLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YSBmcm9tIHRoZSBzcG9uZ2UgZnVuY3Rpb24uCisgICogSWYgdGhlIHNwb25nZSBmdW5jdGlvbiB3YXMgaW4gdGhlIGFic29yYmluZyBwaGFzZSwgdGhpcyBmdW5jdGlvbiAKKyAgKiBzd2l0Y2hlcyBpdCB0byB0aGUgc3F1ZWV6aW5nIHBoYXNlLgorICAqIEBwYXJhbSAgc3RhdGUgICAgICAgUG9pbnRlciB0byB0aGUgc3RhdGUgb2YgdGhlIHNwb25nZSBmdW5jdGlvbiBpbml0aWFsaXplZCBieSBJbml0U3BvbmdlKCkuCisgICogQHBhcmFtICBvdXRwdXQgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEBwYXJhbSAgb3V0cHV0TGVuZ3RoICAgIFRoZSBudW1iZXIgb2Ygb3V0cHV0IGJpdHMgZGVzaXJlZC4KKyAgKiAgICAgICAgICAgICAgICAgICAgIEl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4LgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK3N0YXRpYyBpbnQgU3F1ZWV6ZShzcG9uZ2VTdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgbG9uZyBsb25nIG91dHB1dExlbmd0aCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rZWNjYWsvYnJnX2VuZGlhbi5oIGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvYnJnX2VuZGlhbi5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcyMjZlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tlY2Nhay9icmdfZW5kaWFuLmgKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDgsIEJyaWFuIEdsYWRtYW4sIFdvcmNlc3RlciwgVUsuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyBMSUNFTlNFIFRFUk1TCisKKyBUaGUgcmVkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB0aGlzIHNvZnR3YXJlICh3aXRoIG9yIHdpdGhvdXQgY2hhbmdlcykKKyBpcyBhbGxvd2VkIHdpdGhvdXQgdGhlIHBheW1lbnQgb2YgZmVlcyBvciByb3lhbHRpZXMgcHJvdmlkZWQgdGhhdDoKKworICAxLiBzb3VyY2UgY29kZSBkaXN0cmlidXRpb25zIGluY2x1ZGUgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAgICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXI7CisKKyAgMi4gYmluYXJ5IGRpc3RyaWJ1dGlvbnMgaW5jbHVkZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0CisgICAgIG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVpciBkb2N1bWVudGF0aW9uOworCisgIDMuIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGlzIG5vdCB1c2VkIHRvIGVuZG9yc2UgcHJvZHVjdHMKKyAgICAgYnVpbHQgdXNpbmcgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworIERJU0NMQUlNRVIKKworIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzIGlzJyB3aXRoIG5vIGV4cGxpY2l0IG9yIGltcGxpZWQgd2FycmFudGllcworIGluIHJlc3BlY3Qgb2YgaXRzIHByb3BlcnRpZXMsIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvLCBjb3JyZWN0bmVzcworIGFuZC9vciBmaXRuZXNzIGZvciBwdXJwb3NlLgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIElzc3VlIERhdGU6IDIwLzEyLzIwMDcKKyBDaGFuZ2VzIGZvciBBUk0gOS85LzIwMTAKKyovCisKKyNpZm5kZWYgX0JSR19FTkRJQU5fSAorI2RlZmluZSBfQlJHX0VORElBTl9ICisKKyNkZWZpbmUgSVNfQklHX0VORElBTiAgICAgIDQzMjEgLyogYnl0ZSAwIGlzIG1vc3Qgc2lnbmlmaWNhbnQgKG1jNjhrKSAqLworI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOICAgMTIzNCAvKiBieXRlIDAgaXMgbGVhc3Qgc2lnbmlmaWNhbnQgKGkzODYpICovCisKKyNpZiAwCisvKiBJbmNsdWRlIGZpbGVzIHdoZXJlIGVuZGlhbiBkZWZpbmVzIGFuZCBieXRlc3dhcCBmdW5jdGlvbnMgbWF5IHJlc2lkZSAqLworI2lmIGRlZmluZWQoIF9fc3VuICkKKyMgIGluY2x1ZGUgPHN5cy9pc2FfZGVmcy5oPgorI2VsaWYgZGVmaW5lZCggX19GcmVlQlNEX18gKSB8fCBkZWZpbmVkKCBfX09wZW5CU0RfXyApIHx8IGRlZmluZWQoIF9fTmV0QlNEX18gKQorIyAgaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgorI2VsaWYgZGVmaW5lZCggQlNEICkgJiYgKCBCU0QgPj0gMTk5MTAzICkgfHwgZGVmaW5lZCggX19BUFBMRV9fICkgfHwgXAorICAgICAgZGVmaW5lZCggX19DWUdXSU4zMl9fICkgfHwgZGVmaW5lZCggX19ESkdQUF9fICkgfHwgZGVmaW5lZCggX19vc2ZfXyApCisjICBpbmNsdWRlIDxtYWNoaW5lL2VuZGlhbi5oPgorI2VsaWYgZGVmaW5lZCggX19saW51eF9fICkgfHwgZGVmaW5lZCggX19HTlVDX18gKSB8fCBkZWZpbmVkKCBfX0dOVV9MSUJSQVJZX18gKQorIyAgaWYgIWRlZmluZWQoIF9fTUlOR1czMl9fICkgJiYgIWRlZmluZWQoIF9BSVggKQorIyAgICBpbmNsdWRlIDxlbmRpYW4uaD4KKyMgICAgaWYgIWRlZmluZWQoIF9fQkVPU19fICkKKyMgICAgICBpbmNsdWRlIDxieXRlc3dhcC5oPgorIyAgICBlbmRpZgorIyAgZW5kaWYKKyNlbmRpZgorI2VuZGlmCisKKy8qIE5vdyBhdHRlbXB0IHRvIHNldCB0aGUgZGVmaW5lIGZvciBwbGF0Zm9ybSBieXRlIG9yZGVyIHVzaW5nIGFueSAgKi8KKy8qIG9mIHRoZSBmb3VyIGZvcm1zIFNZTUJPTCwgX1NZTUJPTCwgX19TWU1CT0wgJiBfX1NZTUJPTF9fLCB3aGljaCAgKi8KKy8qIHNlZW0gdG8gZW5jb21wYXNzIG1vc3QgZW5kaWFuIHN5bWJvbCBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgKi8KKworI2lmIGRlZmluZWQoIEJJR19FTkRJQU4gKSAmJiBkZWZpbmVkKCBMSVRUTEVfRU5ESUFOICkKKyMgIGlmIGRlZmluZWQoIEJZVEVfT1JERVIgKSAmJiBCWVRFX09SREVSID09IEJJR19FTkRJQU4KKyMgICAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfQklHX0VORElBTgorIyAgZWxpZiBkZWZpbmVkKCBCWVRFX09SREVSICkgJiYgQllURV9PUkRFUiA9PSBMSVRUTEVfRU5ESUFOCisjICAgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0xJVFRMRV9FTkRJQU4KKyMgIGVuZGlmCisjZWxpZiBkZWZpbmVkKCBCSUdfRU5ESUFOICkKKyMgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbGlmIGRlZmluZWQoIExJVFRMRV9FTkRJQU4gKQorIyAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKCBfQklHX0VORElBTiApICYmIGRlZmluZWQoIF9MSVRUTEVfRU5ESUFOICkKKyMgIGlmIGRlZmluZWQoIF9CWVRFX09SREVSICkgJiYgX0JZVEVfT1JERVIgPT0gX0JJR19FTkRJQU4KKyMgICAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfQklHX0VORElBTgorIyAgZWxpZiBkZWZpbmVkKCBfQllURV9PUkRFUiApICYmIF9CWVRFX09SREVSID09IF9MSVRUTEVfRU5ESUFOCisjICAgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0xJVFRMRV9FTkRJQU4KKyMgIGVuZGlmCisjZWxpZiBkZWZpbmVkKCBfQklHX0VORElBTiApCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19CSUdfRU5ESUFOCisjZWxpZiBkZWZpbmVkKCBfTElUVExFX0VORElBTiApCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjZW5kaWYKKworI2lmIGRlZmluZWQoIF9fQklHX0VORElBTiApICYmIGRlZmluZWQoIF9fTElUVExFX0VORElBTiApCisjICBpZiBkZWZpbmVkKCBfX0JZVEVfT1JERVIgKSAmJiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCisjICAgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyMgIGVsaWYgZGVmaW5lZCggX19CWVRFX09SREVSICkgJiYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgorIyAgICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjICBlbmRpZgorI2VsaWYgZGVmaW5lZCggX19CSUdfRU5ESUFOICkKKyMgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbGlmIGRlZmluZWQoIF9fTElUVExFX0VORElBTiApCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjZW5kaWYKKworI2lmIGRlZmluZWQoIF9fQklHX0VORElBTl9fICkgJiYgZGVmaW5lZCggX19MSVRUTEVfRU5ESUFOX18gKQorIyAgaWYgZGVmaW5lZCggX19CWVRFX09SREVSX18gKSAmJiBfX0JZVEVfT1JERVJfXyA9PSBfX0JJR19FTkRJQU5fXworIyAgICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19CSUdfRU5ESUFOCisjICBlbGlmIGRlZmluZWQoIF9fQllURV9PUkRFUl9fICkgJiYgX19CWVRFX09SREVSX18gPT0gX19MSVRUTEVfRU5ESUFOX18KKyMgICAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorIyAgZW5kaWYKKyNlbGlmIGRlZmluZWQoIF9fQklHX0VORElBTl9fICkKKyMgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbGlmIGRlZmluZWQoIF9fTElUVExFX0VORElBTl9fICkKKyMgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0xJVFRMRV9FTkRJQU4KKyNlbmRpZgorCisvKiAgaWYgdGhlIHBsYXRmb3JtIGJ5dGUgb3JkZXIgY291bGQgbm90IGJlIGRldGVybWluZWQsIHRoZW4gdHJ5IHRvICovCisvKiAgc2V0IHRoaXMgZGVmaW5lIHVzaW5nIGNvbW1vbiBtYWNoaW5lIGRlZmluZXMgICAgICAgICAgICAgICAgICAgICovCisjaWYgIWRlZmluZWQoUExBVEZPUk1fQllURV9PUkRFUikKKworI2lmICAgZGVmaW5lZCggX19hbHBoYV9fICkgfHwgZGVmaW5lZCggX19hbHBoYSApIHx8IGRlZmluZWQoIGkzODYgKSAgICAgICB8fCBcCisgICAgICBkZWZpbmVkKCBfX2kzODZfXyApICB8fCBkZWZpbmVkKCBfTV9JODYgKSAgfHwgZGVmaW5lZCggX01fSVg4NiApICAgIHx8IFwKKyAgICAgIGRlZmluZWQoIF9fT1MyX18gKSAgIHx8IGRlZmluZWQoIHN1bjM4NiApICB8fCBkZWZpbmVkKCBfX1RVUkJPQ19fICkgfHwgXAorICAgICAgZGVmaW5lZCggdmF4ICkgICAgICAgfHwgZGVmaW5lZCggdm1zICkgICAgIHx8IGRlZmluZWQoIFZNUyApICAgICAgICB8fCBcCisgICAgICBkZWZpbmVkKCBfX1ZNUyApICAgICB8fCBkZWZpbmVkKCBfTV9YNjQgKQorIyAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorCisjZWxpZiBkZWZpbmVkKCBBTUlHQSApICAgfHwgZGVmaW5lZCggYXBwbGVjICkgICAgfHwgZGVmaW5lZCggX19BUzQwMF9fICkgIHx8IFwKKyAgICAgIGRlZmluZWQoIF9DUkFZICkgICB8fCBkZWZpbmVkKCBfX2hwcGEgKSAgICB8fCBkZWZpbmVkKCBfX2hwOTAwMCApICAgfHwgXAorICAgICAgZGVmaW5lZCggaWJtMzcwICkgIHx8IGRlZmluZWQoIG1jNjgwMDAgKSAgIHx8IGRlZmluZWQoIG02OGsgKSAgICAgICB8fCBcCisgICAgICBkZWZpbmVkKCBfX01SQ19fICkgfHwgZGVmaW5lZCggX19NVlNfXyApICAgfHwgZGVmaW5lZCggX19NV0VSS1NfXyApIHx8IFwKKyAgICAgIGRlZmluZWQoIHNwYXJjICkgICB8fCBkZWZpbmVkKCBfX3NwYXJjKSAgICB8fCBkZWZpbmVkKCBTWU1BTlRFQ19DICkgfHwgXAorICAgICAgZGVmaW5lZCggX19WT1NfXyApIHx8IGRlZmluZWQoIF9fVElHQ0NfXyApIHx8IGRlZmluZWQoIF9fVEFOREVNICkgICB8fCBcCisgICAgICBkZWZpbmVkKCBUSElOS19DICkgfHwgZGVmaW5lZCggX19WTUNNU19fICkgfHwgZGVmaW5lZCggX0FJWCApCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19CSUdfRU5ESUFOCisKKyNlbGlmIGRlZmluZWQoX19hcm1fXykKKyMgaWZkZWYgX19CSUdfRU5ESUFOCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19CSUdfRU5ESUFOCisjIGVsc2UKKyMgIGRlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0xJVFRMRV9FTkRJQU4KKyMgZW5kaWYKKyNlbGlmIDEgICAgIC8qICoqKiogRURJVCBIRVJFIElGIE5FQ0VTU0FSWSAqKioqICovCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjZWxpZiAwICAgICAvKiAqKioqIEVESVQgSEVSRSBJRiBORUNFU1NBUlkgKioqKiAqLworIyAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfQklHX0VORElBTgorI2Vsc2UKKyMgIGVycm9yIFBsZWFzZSBlZGl0IGxpbmVzIDEzMiBvciAxMzQgaW4gYnJnX2VuZGlhbi5oIHRvIHNldCB0aGUgcGxhdGZvcm0gYnl0ZSBvcmRlcgorI2VuZGlmCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Eub3V0IGIvTW9kdWxlcy9fc2hhMy9rZWNjYWsvY3J5cHRvX2hhc2guaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQKcmVuYW1lIHRvIE1vZHVsZXMvX3NoYTMva2VjY2FrL2NyeXB0b19oYXNoLmgKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvc2hhM21vZHVsZS5jIGIvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU2MzUyYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMvc2hhM21vZHVsZS5jCkBAIC0wLDAgKzEsNTg1IEBACisvKiBTSEEzIG1vZHVsZQorICoKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgU0hBMyBhbGdvcml0aG0KKyAqCisgKiBTZWUgYmVsb3cgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcmlnaW5hbCBjb2RlIHRoaXMgbW9kdWxlIHdhcworICogYmFzZWQgdXBvbi4gQWRkaXRpb25hbCB3b3JrIHBlcmZvcm1lZCBieToKKyAqCisgKiAgQW5kcmV3IEt1Y2hsaW5nIChhbWtAYW1rLmNhKQorICogIEdyZWcgU3RlaW4gKGdzdGVpbkBseXJhLm9yZykKKyAqICBUcmV2b3IgUGVycmluICh0cmV2cEB0cmV2cC5uZXQpCisgKiAgR3JlZ29yeSBQLiBTbWl0aCAoZ3JlZ0BrcnlwdG8ub3JnKQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgICBDaHJpc3RpYW4gSGVpbWVzIChjaHJpc3RpYW5AcHl0aG9uLm9yZykKKyAqICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisgKgorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBLTMgKEtlY2NhaykKKyAqCisgKiBUaGUgY29kZSBpcyBiYXNlZCBvbiBLZWNjYWtSZWZlcmVuY2VBbmRPcHRpbWl6ZWQtMy4yLnppcCBmcm9tIDI5IE1heSAyMDEyLgorICoKKyAqIFRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgYWx0ZXJlZCBpbiB0aGlzIHBvaW50czoKKyAqICAtIEMrKyBjb21tZW50cyBhcmUgY29udmVydGVkIHRvIEFOU0kgQyBjb21tZW50cy4KKyAqICAtIEFsbCBmdW5jdGlvbnMgYW5kIGdsb2JhbHMgYXJlIGRlY2xhcmVkIHN0YXRpYy4KKyAqICAtIFRoZSB0eXBlZGVmIGZvciBVSU5UNjQgaXMgY29tbWVudGVkIG91dC4KKyAqICAtIEtlY2Nha0YtMTYwMC1vcHRbMzJ8NjRdLXNldHRpbmdzLmggYXJlIGNvbW1lbnRlZCBvdXQKKyAqICAtIFNvbWUgdW51c2VkIGZ1bmN0aW9ucyBhcmUgY29tbWVudGVkIG91dCB0byBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmdzLgorICoKKyAqIEluIG9yZGVyIHRvIGF2b2lkIG5hbWUgY2xhc2hlcyB3aXRoIG90aGVyIHNvZnR3YXJlIEkgaGF2ZSB0byBkZWNsYXJlIGFsbAorICogS2VjY2FrIGZ1bmN0aW9ucyBhbmQgZ2xvYmFsIGRhdGEgYXMgc3RhdGljLiBUaGUgQyBjb2RlIGlzIGRpcmVjdGx5CisgKiBpbmNsdWRlZCBpbnRvIHRoaXMgZmlsZSBpbiBvcmRlciB0byBhY2Nlc3MgdGhlIHN0YXRpYyBmdW5jdGlvbnMuCisgKgorICogS2VjY2FrIGNhbiBiZSB0dW5lZCB3aXRoIHNldmVyYWwgcGFyYW1lbnRlcnMuIEkgdHJ5IHRvIGV4cGxhaW4gYWxsIG9wdGlvbnMKKyAqIGFzIGZhciBhcyBJIHVuZGVyc3RhbmQgdGhlbS4gVGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGNvbnRhaW5zCisgKiBhc3NlbWJsZXIgY29kZSBmb3IgQVJNIHBsYXRmb3JtcyAoTkVPTiBpbnN0cnVjdGlvbnMpLgorICoKKyAqIENvbW1vbgorICogPT09PT09CisgKgorICogT3B0aW9uczoKKyAqICAgVXNlQmViaWdva2ltaXNhLCBVbnJvbGxpbmcKKyAqCisgKiAtIFVucm9sbGluZzogbG9vcCB1bnJvbGxpbmcgKDI0LCAxMiwgOCwgNiwgNCwgMywgMiwgMSkKKyAqIC0gVXNlQmViaWdva2ltaXNhOiBsYW5lIGNvbXBsZW1lbnRpbmcKKyAqCisgKiA2NGJpdCBwbGF0Zm9ybXMKKyAqID09PT09PT09PT09PT09PQorICoKKyAqIEFkZGl0aW9uYWwgb3B0aW9uczoKKyAqICAgVXNlU1NFLCBVc2VPbmx5U0lNRDY0LCBVc2VNTVgsIFVzZVhPUCwgVXNlU0hMRAorICoKKyAqIE9wdGltaXplZCBpbnN0cnVjdGlvbnMgKGRpc2FibGVkIGJ5IGRlZmF1bHQpOgorICogICAtIFVzZVNTRTogdXNlIFN0cmVhbSBTSU1EIGV4dGVuc2lvbnMKKyAqICAgICBvIFVzZU9ubHlTSU1ENjQ6IGxpbWl0IHRvIDY0Yml0IGluc3RydWN0aW9ucywgb3RoZXJ3aXNlIDEyOGJpdAorICogICAgIG8gdy9vIFVzZU9ubHlTSU1ENjQ6IHJlcXVpcmVzIGNvbXBpbGVyIGFndW1lbnQgLW1zc3NlMyBvciAtbXR1bmUKKyAqICAgLSBVc2VNTVg6IHVzZSA2NGJpdCBNTVggaW5zdHJ1Y3Rpb25zCisgKiAgIC0gVXNlWE9QOiB1c2UgQU1EJ3MgZVh0ZW5kZWQgT3BlcmF0aW9ucyAoMTI4Yml0IFNTRSBleHRlbnNpb24pCisgKgorICogT3RoZXI6CisgKiAgIC0gVW5yb2xsaW5nOiBkZWZhdWx0IDI0CisgKiAgIC0gVXNlQmViaWdva2ltaXNhOiBkZWZhdWx0IDEKKyAqCisgKiBXaGVuIG5laXRoZXIgVXNlU1NFLCBVc2VNTVggbm9yIFVzZVhPUCBpcyBjb25maWd1cmVkLCBST0w2NCAocm90YXRlIGxlZnQKKyAqIDY0KSBpcyBpbXBsZW1lbnRlZCBhczoKKyAqICAgLSBXaW5kb3dzOiBfcm90bDY0KCkKKyAqICAgLSBVc2VTSExEOiB1c2Ugc2hsZCAoc2hpZnQgbGVmdCkgYXNtIG9wdGltaXphdGlvbgorICogICAtIG90aGVyd2lzZTogc2hpZnQgYW5kIHhvcgorICoKKyAqIFVzZUJlYmlnb2tpbWlzYSBjYW4ndCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggVXNlU1NFLCBVc2VNTVggb3IKKyAqIFVzZVhPUC4gVXNlT25seVNJTUQ2NCBoYXMgbm8gZWZmZWN0IHVubGVzcyBVc2VTU0UgaXMgc3BlY2lmaWVkLgorICoKKyAqIFRlc3RzIGhhdmUgc2hvd24gdGhhdCBVc2VTU0UgKyBVc2VPbmx5U0lNRDY0IGlzIGFib3V0IHRocmVlIHRvIGZvdXIKKyAqIHRpbWVzIFNMT1dFUiB0aGFuIFVzZUJlYmlnb2tpbWlzYS4gVXNlU1NFIGFuZCBVc2VNTVggYXJlIGFib3V0IHR3byB0aW1lcworICogc2xvd2VyLiAodGVzdGVkIGJ5IENIIGFuZCBBUCkKKyAqCisgKiAzMmJpdCBwbGF0Zm9ybXMKKyAqID09PT09PT09PT09PT09PQorICoKKyAqIEFkZGl0aW9uYWwgb3B0aW9uczoKKyAqICAgVXNlSW50ZXJsZWF2ZVRhYmxlcywgVXNlU2NoZWR1bGUKKyAqCisgKiAgIC0gVW5yb2xsaW5nOiBkZWZhdWx0IDIKKyAqICAgLSBVc2VCZWJpZ29raW1pc2E6IGRlZmF1bHQgbi9hCisgKiAgIC0gVXNlU2NoZWR1bGU6ID8/PywgKDEsIDIsIDM7IGRlZmF1bHQgMykKKyAqICAgLSBVc2VJbnRlcmxlYXZlVGFibGVzOiB1c2UgdHdvIDY0ayBsb29rdXAgdGFibGVzIGZvciAoZGUpaW50ZXJsZWF2aW5nCisgKiAgICAgZGVmYXVsdDogbi9hCisgKgorICogc2NoZWR1bGVzOgorICogICAtIDM6IG5vIFVzZUJlYmlnb2tpbWlzYSwgVW5yb2xsaW5nIG11c3QgYmUgMgorICogICAtIDIgKyAxOiA/Pz8KKyAqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgX19zcGFyYworICAvKiBvcHQ2NCB1c2VzIHVuLWFsaWduZWQgbWVtb3J5IGFjY2VzcyB0aGF0IGNhdXNlcyBhIEJVUyBlcnJvciB3aXRoIG1zZworICAgKiAnaW52YWxpZCBhZGRyZXNzIGFsaWdubWVudCcgb24gU1BBUkMuICovCisgICNkZWZpbmUgS2VjY2FrT3B0IDMyCisjZWxpZiBTSVpFT0ZfVk9JRF9QID09IDggJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogb3B0NjQgd29ya3Mgb25seSBmb3IgNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgNjQKKyNlbHNlCisgIC8qIG9wdDMyIGlzIHVzZWQgZm9yIHRoZSByZW1haW5pbmcgMzIgYW5kIDY0Yml0IHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VuZGlmCisKKyNpZiBLZWNjYWtPcHQgPT0gNjQgJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBVbnJvbGxpbmcgMjQKKyAgI2RlZmluZSBVc2VCZWJpZ29raW1pc2EKKyAgdHlwZWRlZiBQWV9VSU5UNjRfVCBVSU5UNjQ7CisjZWxpZiBLZWNjYWtPcHQgPT0gMzIgJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogMzJiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBVbnJvbGxpbmcgMgorICAjZGVmaW5lIFVzZVNjaGVkdWxlIDMKKyAgdHlwZWRlZiBQWV9VSU5UNjRfVCBVSU5UNjQ7CisjZWxzZQorICAvKiAzMiBvciA2NGJpdCBwbGF0Zm9ybXMgd2l0aG91dCB1bnNpZ25lZCBpbnQ2NCAqLworICAjZGVmaW5lIFVucm9sbGluZyAyCisgICNkZWZpbmUgVXNlU2NoZWR1bGUgMworICAjZGVmaW5lIFVzZUludGVybGVhdmVUYWJsZXMKKyNlbmRpZgorCisvKiByZXBsYWNlbWVudCBmb3IgYnJnX2VuZGlhbi5oICovCisjZGVmaW5lIElTX0JJR19FTkRJQU4gNDMyMQorI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOIDEyMzQKKyNpZiBQWV9CSUdfRU5ESUFOCisjICBkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19CSUdfRU5ESUFOCisjZWxzZQorIyAgZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorI2VuZGlmCisKKy8qIGlubGluZSBhbGwgS2VjY2FrIGRlcGVuZGVuY2llcyAqLworI2luY2x1ZGUgImtlY2Nhay9LZWNjYWtOSVNUSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAia2VjY2FrL0tlY2Nha05JU1RJbnRlcmZhY2UuYyIKKyNpbmNsdWRlICJrZWNjYWsvS2VjY2FrU3BvbmdlLmMiCisjaWYgS2VjY2FrT3B0ID09IDY0CisgICNpbmNsdWRlICJrZWNjYWsvS2VjY2FrRi0xNjAwLW9wdDY0LmMiCisjZWxpZiBLZWNjYWtPcHQgPT0gMzIKKyAgI2luY2x1ZGUgImtlY2Nhay9LZWNjYWtGLTE2MDAtb3B0MzIuYyIKKyNlbmRpZgorCisvKiAjZGVmaW5lIFNIQTNfQkxPQ0tTSVpFIDIwMCAvLyAxNjAwIGJpdHMgICovCisjZGVmaW5lIFNIQTNfTUFYX0RJR0VTVFNJWkUgNjQgLyogNTEyIGJpdHMgKi8KKyNkZWZpbmUgU0hBM19zdGF0ZSBoYXNoU3RhdGUKKyNkZWZpbmUgU0hBM19pbml0IEluaXQKKyNkZWZpbmUgU0hBM19wcm9jZXNzIFVwZGF0ZQorI2RlZmluZSBTSEEzX2RvbmUgRmluYWwKKyNkZWZpbmUgU0hBM19jb3B5c3RhdGUoZGVzdCwgc3JjKSBtZW1jcHkoJihkZXN0KSwgJihzcmMpLCBzaXplb2YoU0hBM19zdGF0ZSkpCisjZGVmaW5lIFNIQTNfY2xlYXJzdGF0ZShzdGF0ZSkgbWVtc2V0KCYoc3RhdGUpLCAwLCBzaXplb2YoU0hBM19zdGF0ZSkpCisKKy8qIFRoZSBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgU0hBMyBpbmZvICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGhhc2hiaXRsZW47CisgICAgU0hBM19zdGF0ZSBoYXNoX3N0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKKworfSBTSEEzb2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTN0eXBlOworCisKK3N0YXRpYyBTSEEzb2JqZWN0ICoKK25ld1NIQTNvYmplY3QoaW50IGhhc2hiaXRsZW4pCit7CisgICAgU0hBM29iamVjdCAqbmV3b2JqOworCisgICAgLyogY2hlY2sgaGFzaGJpdGxlbiAqLworICAgIHN3aXRjaChoYXNoYml0bGVuKSB7CisgICAgICAgIC8qIHN1cHBvcnRlZCBoYXNoIGxlbmd0aCAqLworICAgICAgICBjYXNlIDIyNDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI1NjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM4NDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDUxMjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAvKiAgYXJiaXRyYXJpbHktbG9uZyBvdXRwdXQgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBldmVyeXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IgKi8KKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiaGFzaGJpdGxlbiBtdXN0IGJlIG9uZSBvZiAyMjQsIDI1NiwgMzg0IG9yIDUxMi4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZXdvYmogPSAoU0hBM29iamVjdCAqKVB5T2JqZWN0X05ldyhTSEEzb2JqZWN0LCAmU0hBM3R5cGUpOworICAgIGlmIChuZXdvYmogPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmV3b2JqLT5oYXNoYml0bGVuID0gaGFzaGJpdGxlbjsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIG5ld29iai0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gbmV3b2JqOworfQorCisKKy8qIEludGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KKworc3RhdGljIHZvaWQKK1NIQTNfZGVhbGxvYyhTSEEzb2JqZWN0ICpzZWxmKQoreworICAgIFNIQTNfY2xlYXJzdGF0ZShzZWxmLT5oYXNoX3N0YXRlKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLworCitQeURvY19TVFJWQVIoU0hBM19jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19jb3B5KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgU0hBM29iamVjdCAqbmV3b2JqOworCisgICAgaWYgKChuZXdvYmogPSBuZXdTSEEzb2JqZWN0KHNlbGYtPmhhc2hiaXRsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKG5ld29iai0+aGFzaF9zdGF0ZSwgc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3b2JqOworfQorCisKK1B5RG9jX1NUUlZBUihTSEEzX2RpZ2VzdF9fZG9jX18sCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkVdOworICAgIFNIQTNfc3RhdGUgdGVtcDsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUodGVtcCwgc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXMgPSBTSEEzX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CisgICAgU0hBM19jbGVhcnN0YXRlKHRlbXApOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaGJpdGxlbiAvIDgpOworfQorCisKK1B5RG9jX1NUUlZBUihTSEEzX2hleGRpZ2VzdF9fZG9jX18sCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19oZXhkaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OworICAgIGludCBkaWdlc3RsZW4sIGksIGo7CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIFNIQTNfY2xlYXJzdGF0ZSh0ZW1wKTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCisgICAgZGlnZXN0bGVuID0gc2VsZi0+aGFzaGJpdGxlbiAvIDg7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhkaWdlc3RsZW4gKiAyLCAxMjcpOworICAgIGlmICghcmV0dmFsKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CisKKyAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KKyAgICBmb3IoaT1qPTA7IGkgPCBkaWdlc3RsZW47IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CisgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CisgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOworICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoU0hBM191cGRhdGVfX2RvY19fLAorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM191cGRhdGUoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeV9idWZmZXIgYnVmOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKKworICAgIC8qIGFkZCBuZXcgZGF0YSwgdGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXMgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgfQorICAgIC8qIE9uY2UgYSBsb2NrIGV4aXN0cyBhbGwgY29kZSBwYXRocyBtdXN0IGJlIHN5bmNocm9uaXplZC4gV2UgaGF2ZSB0bworICAgICAqIHJlbGVhc2UgdGhlIEdJTCBldmVuIGZvciBzbWFsbCBidWZmZXJzIGFzIGFjcXVpcmluZyB0aGUgbG9jayBtYXkgdGFrZQorICAgICAqIGFuIHVubGltaXRlZCBhbW91bnQgb2YgdGltZSB3aGVuIGFub3RoZXIgdGhyZWFkIHVwZGF0ZXMgdGhpcyBvYmplY3QKKyAgICAgKiB3aXRoIGxvdHMgb2YgZGF0YS4gKi8KKyAgICBpZiAoc2VsZi0+bG9jaykgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrLCAxKTsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgIH0KKyNlbHNlCisgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworCisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIFNIQTNfbWV0aG9kc1tdID0geworICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKVNIQTNfY29weSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgICAgIFNIQTNfY29weV9fZG9jX199LAorICAgIHsiZGlnZXN0IiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTNfZGlnZXN0LCAgICBNRVRIX05PQVJHUywKKyAgICAgICAgIFNIQTNfZGlnZXN0X19kb2NfX30sCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBM19oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLAorICAgICAgICAgU0hBM19oZXhkaWdlc3RfX2RvY19ffSwKKyAgICB7InVwZGF0ZSIsICAgIChQeUNGdW5jdGlvbilTSEEzX3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLAorICAgICAgICAgU0hBM191cGRhdGVfX2RvY19ffSwKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9ibG9ja19zaXplKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgLyogSE1BQy1TSEEzIGhhc24ndCBiZWVuIHNwZWNpZmllZCB5ZXQgYW5kIG5vIG9mZmljaWFsIHRlc3QgdmVjdG9ycyBhcmUKKyAgICAgKiBhdmFpbGFibGUuIFRodXMgYmxvY2tfc2l6ZSByZXR1cm5zIE5vdEltcGxlbWVudGVkIHRvIHByZXZlbnQgcGVvcGxlCisgICAgICogZnJvbSB1c2luZyBTSEEzIHdpdGggdGhlIGhtYWMgbW9kdWxlLgorICAgICAqLworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X25hbWUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoInNoYTNfJWkiLCBzZWxmLT5oYXNoYml0bGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X2RpZ2VzdF9zaXplKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5oYXNoYml0bGVuIC8gOCk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFNIQTNfZ2V0c2V0ZXJzW10gPSB7CisgICAgeyJibG9ja19zaXplIiwgKGdldHRlcilTSEEzX2dldF9ibG9ja19zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKVNIQTNfZ2V0X25hbWUsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKVNIQTNfZ2V0X2RpZ2VzdF9zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTN0eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfc2hhMy5TSEEzIiwgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihTSEEzb2JqZWN0KSwgLyogdHBfc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiAgbWV0aG9kcyAgKi8KKyAgICAoZGVzdHJ1Y3RvcilTSEEzX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgU0hBM19tZXRob2RzLCAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgU0hBM19nZXRzZXRlcnMsICAgICAvKiB0cF9nZXRzZXQgKi8KK307CisKKworLyogY29uc3RydWN0b3IgaGVscGVyICovCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19mYWN0b3J5KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0LCBjb25zdCBjaGFyICpmbXQsCisgICAgICAgICAgICAgaW50IGhhc2hiaXRsZW4pCit7CisgICAgU0hBM29iamVjdCAqbmV3b2JqID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkYXRhX29iaiA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgZm10LCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworCisgICAgaWYgKChuZXdvYmogPSBuZXdTSEEzb2JqZWN0KGhhc2hiaXRsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKFNIQTNfaW5pdCgmbmV3b2JqLT5oYXNoX3N0YXRlLCBoYXNoYml0bGVuKSAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChkYXRhX29iaikgeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIGlmIChidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgICAgIC8qIGludmFyaWFudDogTmV3IG9iamVjdHMgY2FuJ3QgYmUgYWNjZXNzZWQgYnkgb3RoZXIgY29kZSB5ZXQsCisgICAgICAgICAgICAgKiB0aHVzIGl0J3Mgc2FmZSB0byByZWxlYXNlIHRoZSBHSUwgd2l0aG91dCBsb2NraW5nIHRoZSBvYmplY3QuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJlcyA9IFNIQTNfcHJvY2VzcygmbmV3b2JqLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZuZXdvYmotPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZuZXdvYmotPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyNlbmRpZgorICAgICAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIFNIQTMgVXBkYXRlKCkiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3b2JqOworCisgIGVycm9yOgorICAgIGlmIChuZXdvYmopIHsKKyAgICAgICAgU0hBM19kZWFsbG9jKG5ld29iaik7CisgICAgfQorICAgIGlmIChkYXRhX29iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKKworfQorCitQeURvY19TVFJWQVIoc2hhM18yMjRfX2RvY19fLAorInNoYTNfMjI0KFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMjggYnl0ZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaGEzXzIyNChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCit7CisgICAgcmV0dXJuIFNIQTNfZmFjdG9yeShhcmdzLCBrd2RpY3QsICJ8TzpzaGEzXzIyNCIsIDIyNCk7Cit9CisKKworUHlEb2NfU1RSVkFSKHNoYTNfMjU2X19kb2NfXywKKyJzaGEzXzI1Nihbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDMyIGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2hhM18yNTYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQoreworICAgIHJldHVybiBTSEEzX2ZhY3RvcnkoYXJncywga3dkaWN0LCAifE86c2hhM18yNTYiLCAyNTYpOworfQorCitQeURvY19TVFJWQVIoc2hhM18zODRfX2RvY19fLAorInNoYTNfMzg0KFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaGEzXzM4NChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCit7CisgICAgcmV0dXJuIFNIQTNfZmFjdG9yeShhcmdzLCBrd2RpY3QsICJ8TzpzaGEzXzM4NCIsIDM4NCk7Cit9CisKK1B5RG9jX1NUUlZBUihzaGEzXzUxMl9fZG9jX18sCisic2hhM181MTIoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NoYTNfNTEyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK3sKKyAgICByZXR1cm4gU0hBM19mYWN0b3J5KGFyZ3MsIGt3ZGljdCwgInxPOnNoYTNfNTEyIiwgNTEyKTsKK30KKworCisvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBTSEEzX2Z1bmN0aW9uc1tdID0geworICAgIHsic2hhM18yMjQiLCAoUHlDRnVuY3Rpb24pc2hhM18yMjQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICAgc2hhM18yMjRfX2RvY19ffSwKKyAgICB7InNoYTNfMjU2IiwgKFB5Q0Z1bmN0aW9uKXNoYTNfMjU2LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgICAgIHNoYTNfMjU2X19kb2NfX30sCisgICAgeyJzaGEzXzM4NCIsIChQeUNGdW5jdGlvbilzaGEzXzM4NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgICAgICBzaGEzXzM4NF9fZG9jX199LAorICAgIHsic2hhM181MTIiLCAoUHlDRnVuY3Rpb24pc2hhM181MTIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICAgc2hhM181MTJfX2RvY19ffSwKKyAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKKy8qIEluaXRpYWxpemUgdGhpcyBtb2R1bGUuICovCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9TSEEzbW9kdWxlID0geworICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgICAgICJfc2hhMyIsCisgICAgICAgIE5VTEwsCisgICAgICAgIC0xLAorICAgICAgICBTSEEzX2Z1bmN0aW9ucywKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fc2hhMyh2b2lkKQoreworICAgIFB5X1RZUEUoJlNIQTN0eXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZTSEEzdHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJl9TSEEzbW9kdWxlKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDI4YmQ2NDcuLmY1ZTA0MjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtNjAsNyArNjAsMTEgQEAKIAogaW50IHB5c3FsaXRlX2Nvbm5lY3Rpb25faW5pdChweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImRhdGFiYXNlIiwgInRpbWVvdXQiLCAiZGV0ZWN0X3R5cGVzIiwgImlzb2xhdGlvbl9sZXZlbCIsICJjaGVja19zYW1lX3RocmVhZCIsICJmYWN0b3J5IiwgImNhY2hlZF9zdGF0ZW1lbnRzIiwgTlVMTCwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgICAiZGF0YWJhc2UiLCAidGltZW91dCIsICJkZXRlY3RfdHlwZXMiLCAiaXNvbGF0aW9uX2xldmVsIiwKKyAgICAgICAgImNoZWNrX3NhbWVfdGhyZWFkIiwgImZhY3RvcnkiLCAiY2FjaGVkX3N0YXRlbWVudHMiLCAidXJpIiwKKyAgICAgICAgTlVMTAorICAgIH07CiAKICAgICBjaGFyKiBkYXRhYmFzZTsKICAgICBpbnQgZGV0ZWN0X3R5cGVzID0gMDsKQEAgLTY4LDExICs3MiwxNCBAQAogICAgIFB5T2JqZWN0KiBmYWN0b3J5ID0gTlVMTDsKICAgICBpbnQgY2hlY2tfc2FtZV90aHJlYWQgPSAxOwogICAgIGludCBjYWNoZWRfc3RhdGVtZW50cyA9IDEwMDsKKyAgICBpbnQgdXJpID0gMDsKICAgICBkb3VibGUgdGltZW91dCA9IDUuMDsKICAgICBpbnQgcmM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzfGRpT2lPaSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJhc2UsICZ0aW1lb3V0LCAmZGV0ZWN0X3R5cGVzLCAmaXNvbGF0aW9uX2xldmVsLCAmY2hlY2tfc2FtZV90aHJlYWQsICZmYWN0b3J5LCAmY2FjaGVkX3N0YXRlbWVudHMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8ZGlPaU9pcCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJhc2UsICZ0aW1lb3V0LCAmZGV0ZWN0X3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc29sYXRpb25fbGV2ZWwsICZjaGVja19zYW1lX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmFjdG9yeSwgJmNhY2hlZF9zdGF0ZW1lbnRzLCAmdXJpKSkKICAgICB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC05MSw4ICs5OCwxOSBAQAogICAgIFB5X0lOQ1JFRigmUHlVbmljb2RlX1R5cGUpOwogICAgIHNlbGYtPnRleHRfZmFjdG9yeSA9IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlOwogCisjaWZkZWYgU1FMSVRFX09QRU5fVVJJCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJjID0gc3FsaXRlM19vcGVuX3YyKGRhdGFiYXNlLCAmc2VsZi0+ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1FMSVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAodXJpID8gU1FMSVRFX09QRU5fVVJJIDogMCksIE5VTEwpOworI2Vsc2UKKyAgICBpZiAodXJpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Ob3RTdXBwb3J0ZWRFcnJvciwgIlVSSXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IHNxbGl0ZTNfb3BlbihkYXRhYmFzZSwgJnNlbGYtPmRiKTsKKyNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CkBAIC02NzksNiArNjk3LDggQEAKICAgICBQeU9iamVjdCoqIGFnZ3JlZ2F0ZV9pbnN0YW5jZTsKICAgICBfUHlfSURFTlRJRklFUihmaW5hbGl6ZSk7CiAgICAgaW50IG9rOworICAgIFB5T2JqZWN0ICpleGNlcHRpb24sICp2YWx1ZSwgKnRiOworICAgIGludCByZXN0b3JlOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeUdJTFN0YXRlX1NUQVRFIHRocmVhZHN0YXRlOwpAQCAtNjk0LDcgKzcxNCwxMiBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAorICAgIC8qIEtlZXAgdGhlIGV4Y2VwdGlvbiAoaWYgYW55KSBvZiB0aGUgbGFzdCBjYWxsIHRvIHN0ZXAoKSAqLworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJnRiKTsKKyAgICByZXN0b3JlID0gMTsKKwogICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsICIiKTsKKwogICAgIFB5X0RFQ1JFRigqYWdncmVnYXRlX2luc3RhbmNlKTsKIAogICAgIG9rID0gMDsKQEAgLTcwOSw2ICs3MzQsMTcgQEAKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgX3NxbGl0ZTNfcmVzdWx0X2Vycm9yKGNvbnRleHQsICJ1c2VyLWRlZmluZWQgYWdncmVnYXRlJ3MgJ2ZpbmFsaXplJyBtZXRob2QgcmFpc2VkIGVycm9yIiwgLTEpOworI2lmIFNRTElURV9WRVJTSU9OX05VTUJFUiA8IDMwMDMwMDMKKyAgICAgICAgLyogd2l0aCBvbGQgU1FMaXRlIHZlcnNpb25zLCBfc3FsaXRlM19yZXN1bHRfZXJyb3IoKSBzZXRzIGEgbmV3IFB5dGhvbgorICAgICAgICAgICBleGNlcHRpb24sIHNvIGRvbid0IHJlc3RvcmUgdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiAqLworICAgICAgICByZXN0b3JlID0gMDsKKyNlbmRpZgorICAgIH0KKworICAgIGlmIChyZXN0b3JlKSB7CisgICAgICAgIC8qIFJlc3RvcmUgdGhlIGV4Y2VwdGlvbiAoaWYgYW55KSBvZiB0aGUgbGFzdCBjYWxsIHRvIHN0ZXAoKSwKKyAgICAgICAgICAgYnV0IGNsZWFyIGFsc28gdGhlIGN1cnJlbnQgZXhjZXB0aW9uIGlmIGZpbmFsaXplKCkgZmFpbGVkICovCisgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjZXB0aW9uLCB2YWx1ZSwgdGIpOwogICAgIH0KIAogZXJyb3I6CkBAIC04NTYsMjIgKzg5MiwyOSBAQAogCiAgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCisKICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgImlzc3NzIiwgYWN0aW9uLCBhcmcxLCBhcmcyLCBkYm5hbWUsIGFjY2Vzc19hdHRlbXB0X3NvdXJjZSk7CiAKLSAgICBpZiAoIXJldCkgewotICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpCiAgICAgICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9CiAKICAgICAgICAgcmMgPSBTUUxJVEVfREVOWTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhyZXQpKSB7CiAgICAgICAgICAgICByYyA9IF9QeUxvbmdfQXNJbnQocmV0KTsKLSAgICAgICAgICAgIGlmIChyYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgaWYgKHJjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICByYyA9IFNRTElURV9ERU5ZOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmMgPSBTUUxJVEVfREVOWTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmV0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwppbmRleCA0OTk5NDE1Li44ZjliZDY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCkBAIC0zMzksNiArMzM5LDExIEBACiAgICAgICAgICAgICAgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPnRleHRfZmFjdG9yeSA9PSAoUHlPYmplY3QqKSZQeVVuaWNvZGVfVHlwZSkgewogICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUodmFsX3N0ciwgbmJ5dGVzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWQpIHsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4gZGVidWcgbW9kZSwgdHlwZV9jYWxsKCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSBzcWxpdGUzX2NvbHVtbl9uYW1lKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2xuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbmFtZSA9ICI8dW5rbm93biBjb2x1bW4gbmFtZT4iOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCmluZGV4IGJlYTZkNmEuLjdhN2U4NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKQEAgLTUwLDE5ICs1MCwyNiBAQAogICAgICAqIEMtbGV2ZWwsIHNvIHRoaXMgY29kZSBpcyByZWR1bmRhbnQgd2l0aCB0aGUgb25lIGluIGNvbm5lY3Rpb25faW5pdCBpbgogICAgICAqIGNvbm5lY3Rpb24uYyBhbmQgbXVzdCBhbHdheXMgYmUgY29waWVkIGZyb20gdGhlcmUgLi4uICovCiAKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImRhdGFiYXNlIiwgInRpbWVvdXQiLCAiZGV0ZWN0X3R5cGVzIiwgImlzb2xhdGlvbl9sZXZlbCIsICJjaGVja19zYW1lX3RocmVhZCIsICJmYWN0b3J5IiwgImNhY2hlZF9zdGF0ZW1lbnRzIiwgTlVMTCwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgICAiZGF0YWJhc2UiLCAidGltZW91dCIsICJkZXRlY3RfdHlwZXMiLCAiaXNvbGF0aW9uX2xldmVsIiwKKyAgICAgICAgImNoZWNrX3NhbWVfdGhyZWFkIiwgImZhY3RvcnkiLCAiY2FjaGVkX3N0YXRlbWVudHMiLCAidXJpIiwKKyAgICAgICAgTlVMTAorICAgIH07CiAgICAgY2hhciogZGF0YWJhc2U7CiAgICAgaW50IGRldGVjdF90eXBlcyA9IDA7CiAgICAgUHlPYmplY3QqIGlzb2xhdGlvbl9sZXZlbDsKICAgICBQeU9iamVjdCogZmFjdG9yeSA9IE5VTEw7CiAgICAgaW50IGNoZWNrX3NhbWVfdGhyZWFkID0gMTsKICAgICBpbnQgY2FjaGVkX3N0YXRlbWVudHM7CisgICAgaW50IHVyaSA9IDA7CiAgICAgZG91YmxlIHRpbWVvdXQgPSA1LjA7CiAKICAgICBQeU9iamVjdCogcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAic3xkaU9pT2kiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFiYXNlLCAmdGltZW91dCwgJmRldGVjdF90eXBlcywgJmlzb2xhdGlvbl9sZXZlbCwgJmNoZWNrX3NhbWVfdGhyZWFkLCAmZmFjdG9yeSwgJmNhY2hlZF9zdGF0ZW1lbnRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzfGRpT2lPaXAiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFiYXNlLCAmdGltZW91dCwgJmRldGVjdF90eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNvbGF0aW9uX2xldmVsLCAmY2hlY2tfc2FtZV90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZhY3RvcnksICZjYWNoZWRfc3RhdGVtZW50cywgJnVyaSkpCiAgICAgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03Nyw3ICs4NCw4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfY29ubmVjdF9kb2MsCi0iY29ubmVjdChkYXRhYmFzZVssIHRpbWVvdXQsIGlzb2xhdGlvbl9sZXZlbCwgZGV0ZWN0X3R5cGVzLCBmYWN0b3J5XSlcblwKKyJjb25uZWN0KGRhdGFiYXNlWywgdGltZW91dCwgZGV0ZWN0X3R5cGVzLCBpc29sYXRpb25fbGV2ZWwsXG5cCisgICAgICAgIGNoZWNrX3NhbWVfdGhyZWFkLCBmYWN0b3J5LCBjYWNoZWRfc3RhdGVtZW50cywgdXJpXSlcblwKIFxuXAogT3BlbnMgYSBjb25uZWN0aW9uIHRvIHRoZSBTUUxpdGUgZGF0YWJhc2UgZmlsZSAqZGF0YWJhc2UqLiBZb3UgY2FuIHVzZVxuXAogXCI6bWVtb3J5OlwiIHRvIG9wZW4gYSBkYXRhYmFzZSBjb25uZWN0aW9uIHRvIGEgZGF0YWJhc2UgdGhhdCByZXNpZGVzIGluXG5cCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwppbmRleCBkODhiYzNmLi4zMTJmZTNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKQEAgLTEzMiw3ICsxMzIsNyBAQAogICAgIH0KICMgZW5kaWYKICNlbmRpZgotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh2YWx1ZSwgc3FsaXRlX2ludDY0LCBsb25nKSk7CiB9CiAKIHNxbGl0ZV9pbnQ2NApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCAyZWNiY2MwLi5hNjkzM2U4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtMTg3MSw3ICsxODcxLDcgQEAKIHBhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKIHsKICAgICBTUkVfU1RBVEUgc3RhdGU7Ci0gICAgaW50IHN0YXR1czsKKyAgICBQeV9zc2l6ZV90IHN0YXR1czsKIAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CkBAIC0yMDQwLDcgKzIwNDAsNyBAQAogewogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeU9iamVjdCogbGlzdDsKLSAgICBpbnQgc3RhdHVzOworICAgIFB5X3NzaXplX3Qgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgaSwgYiwgZTsKIAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CkBAIC0yMTY2LDcgKzIxNjYsNyBAQAogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeU9iamVjdCogbGlzdDsKICAgICBQeU9iamVjdCogaXRlbTsKLSAgICBpbnQgc3RhdHVzOworICAgIFB5X3NzaXplX3Qgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgdm9pZCogbGFzdDsKQEAgLTIyODIsNyArMjI4Miw3IEBACiAgICAgUHlPYmplY3QqIGFyZ3M7CiAgICAgUHlPYmplY3QqIG1hdGNoOwogICAgIHZvaWQqIHB0cjsKLSAgICBpbnQgc3RhdHVzOworICAgIFB5X3NzaXplX3Qgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeV9zc2l6ZV90IGksIGIsIGU7CiAgICAgaW50IGxvZ2ljYWxfY2hhcnNpemUsIGNoYXJzaXplOwpAQCAtMjMwMSw3ICsyMzAxLDcgQEAKICAgICAgICAgcHRyID0gZ2V0c3RyaW5nKHB0ZW1wbGF0ZSwgJm4sICZsb2dpY2FsX2NoYXJzaXplLCAmY2hhcnNpemUsICZ2aWV3KTsKICAgICAgICAgYiA9IGNoYXJzaXplOwogICAgICAgICBpZiAocHRyKSB7Ci0gICAgICAgICAgICBsaXRlcmFsID0gc3JlX2xpdGVyYWxfdGVtcGxhdGUoYiwgcHRyLCBuKTsKKyAgICAgICAgICAgIGxpdGVyYWwgPSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZShjaGFyc2l6ZSwgcHRyLCBuKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBsaXRlcmFsID0gMDsKQEAgLTM3NjcsNyArMzc2Nyw3IEBACiB7CiAgICAgU1JFX1NUQVRFKiBzdGF0ZSA9ICZzZWxmLT5zdGF0ZTsKICAgICBQeU9iamVjdCogbWF0Y2g7Ci0gICAgaW50IHN0YXR1czsKKyAgICBQeV9zc2l6ZV90IHN0YXR1czsKIAogICAgIHN0YXRlX3Jlc2V0KHN0YXRlKTsKIApAQCAtMzc5OCw3ICszNzk4LDcgQEAKIHsKICAgICBTUkVfU1RBVEUqIHN0YXRlID0gJnNlbGYtPnN0YXRlOwogICAgIFB5T2JqZWN0KiBtYXRjaDsKLSAgICBpbnQgc3RhdHVzOworICAgIFB5X3NzaXplX3Qgc3RhdHVzOwogCiAgICAgc3RhdGVfcmVzZXQoc3RhdGUpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2wuYyBiL01vZHVsZXMvX3NzbC5jCmluZGV4IDg0OGI5NjIuLjExNjMxMWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NzbC5jCisrKyBiL01vZHVsZXMvX3NzbC5jCkBAIC00MCw2ICs0MCw3MCBAQAogCiAjZW5kaWYKIAorLyogSW5jbHVkZSBzeW1ib2xzIGZyb20gX3NvY2tldCBtb2R1bGUgKi8KKyNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKKworc3RhdGljIFB5U29ja2V0TW9kdWxlX0FQSU9iamVjdCBQeVNvY2tldE1vZHVsZTsKKworI2lmIGRlZmluZWQoSEFWRV9QT0xMX0gpCisjaW5jbHVkZSA8cG9sbC5oPgorI2VsaWYgZGVmaW5lZChIQVZFX1NZU19QT0xMX0gpCisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyNlbmRpZgorCisvKiBJbmNsdWRlIE9wZW5TU0wgaGVhZGVyIGZpbGVzICovCisjaW5jbHVkZSAib3BlbnNzbC9yc2EuaCIKKyNpbmNsdWRlICJvcGVuc3NsL2NyeXB0by5oIgorI2luY2x1ZGUgIm9wZW5zc2wveDUwOS5oIgorI2luY2x1ZGUgIm9wZW5zc2wveDUwOXYzLmgiCisjaW5jbHVkZSAib3BlbnNzbC9wZW0uaCIKKyNpbmNsdWRlICJvcGVuc3NsL3NzbC5oIgorI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCisjaW5jbHVkZSAib3BlbnNzbC9yYW5kLmgiCisKKy8qIFNTTCBlcnJvciBvYmplY3QgKi8KK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMRU9GRXJyb3JPYmplY3Q7CisKKy8qIEVycm9yIG1hcHBpbmdzICovCitzdGF0aWMgUHlPYmplY3QgKmVycl9jb2Rlc190b19uYW1lczsKK3N0YXRpYyBQeU9iamVjdCAqZXJyX25hbWVzX3RvX2NvZGVzOworc3RhdGljIFB5T2JqZWN0ICpsaWJfY29kZXNfdG9fbmFtZXM7CisKK3N0cnVjdCBweV9zc2xfZXJyb3JfY29kZSB7CisgICAgY29uc3QgY2hhciAqbW5lbW9uaWM7CisgICAgaW50IGxpYnJhcnksIHJlYXNvbjsKK307CitzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSB7CisgICAgY29uc3QgY2hhciAqbGlicmFyeTsKKyAgICBpbnQgY29kZTsKK307CisKKy8qIEluY2x1ZGUgZ2VuZXJhdGVkIGRhdGEgKGVycm9yIGNvZGVzKSAqLworI2luY2x1ZGUgIl9zc2xfZGF0YS5oIgorCisvKiBPcGVuc3NsIGNvbWVzIHdpdGggVExTdjEuMSBhbmQgVExTdjEuMiBiZXR3ZWVuIDEuMC4waCBhbmQgMS4wLjEKKyAgICBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvY2hhbmdlbG9nLmh0bWwKKyAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMTAwMEwKKyMgZGVmaW5lIEhBVkVfVExTdjFfMiAxCisjZWxzZQorIyBkZWZpbmUgSEFWRV9UTFN2MV8yIDAKKyNlbmRpZgorCisvKiBTTkkgc3VwcG9ydCAoY2xpZW50LSBhbmQgc2VydmVyLXNpZGUpIGFwcGVhcmVkIGluIE9wZW5TU0wgMS4wLjAuCisgKiBUaGlzIGluY2x1ZGVzIHRoZSBTU0xfc2V0X1NTTF9DVFgoKSBmdW5jdGlvbi4KKyAqLworI2lmZGVmIFNTTF9DVFJMX1NFVF9UTFNFWFRfSE9TVE5BTUUKKyMgZGVmaW5lIEhBVkVfU05JIDEKKyNlbHNlCisjIGRlZmluZSBIQVZFX1NOSSAwCisjZW5kaWYKKwogZW51bSBweV9zc2xfZXJyb3IgewogICAgIC8qIHRoZXNlIG1pcnJvciBzc2wuaCAqLwogICAgIFBZX1NTTF9FUlJPUl9OT05FLApAQCAtNzMsNTUgKzEzNywxNCBAQAogI2VuZGlmCiAgICAgUFlfU1NMX1ZFUlNJT05fU1NMMz0xLAogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDIzLAorI2lmIEhBVkVfVExTdjFfMgorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTMV8xLAorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMgorI2Vsc2UKICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxCi19OwotCi1zdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgewotICAgIGNvbnN0IGNoYXIgKm1uZW1vbmljOwotICAgIGludCBsaWJyYXJ5LCByZWFzb247Ci19OwotCi1zdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSB7Ci0gICAgY29uc3QgY2hhciAqbGlicmFyeTsKLSAgICBpbnQgY29kZTsKLX07Ci0KLS8qIEluY2x1ZGUgc3ltYm9scyBmcm9tIF9zb2NrZXQgbW9kdWxlICovCi0jaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCi0KLXN0YXRpYyBQeVNvY2tldE1vZHVsZV9BUElPYmplY3QgUHlTb2NrZXRNb2R1bGU7Ci0KLSNpZiBkZWZpbmVkKEhBVkVfUE9MTF9IKQotI2luY2x1ZGUgPHBvbGwuaD4KLSNlbGlmIGRlZmluZWQoSEFWRV9TWVNfUE9MTF9IKQotI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiAjZW5kaWYKLQotLyogSW5jbHVkZSBPcGVuU1NMIGhlYWRlciBmaWxlcyAqLwotI2luY2x1ZGUgIm9wZW5zc2wvcnNhLmgiCi0jaW5jbHVkZSAib3BlbnNzbC9jcnlwdG8uaCIKLSNpbmNsdWRlICJvcGVuc3NsL3g1MDkuaCIKLSNpbmNsdWRlICJvcGVuc3NsL3g1MDl2My5oIgotI2luY2x1ZGUgIm9wZW5zc2wvcGVtLmgiCi0jaW5jbHVkZSAib3BlbnNzbC9zc2wuaCIKLSNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgotI2luY2x1ZGUgIm9wZW5zc2wvcmFuZC5oIgotCi0vKiBJbmNsdWRlIGdlbmVyYXRlZCBkYXRhIChlcnJvciBjb2RlcykgKi8KLSNpbmNsdWRlICJfc3NsX2RhdGEuaCIKLQotLyogU1NMIGVycm9yIG9iamVjdCAqLwotc3RhdGljIFB5T2JqZWN0ICpQeVNTTEVycm9yT2JqZWN0Owotc3RhdGljIFB5T2JqZWN0ICpQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdDsKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0Owotc3RhdGljIFB5T2JqZWN0ICpQeVNTTFdhbnRXcml0ZUVycm9yT2JqZWN0Owotc3RhdGljIFB5T2JqZWN0ICpQeVNTTFN5c2NhbGxFcnJvck9iamVjdDsKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xFT0ZFcnJvck9iamVjdDsKLQotLyogRXJyb3IgbWFwcGluZ3MgKi8KLXN0YXRpYyBQeU9iamVjdCAqZXJyX2NvZGVzX3RvX25hbWVzOwotc3RhdGljIFB5T2JqZWN0ICplcnJfbmFtZXNfdG9fY29kZXM7Ci1zdGF0aWMgUHlPYmplY3QgKmxpYl9jb2Rlc190b19uYW1lczsKK307CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogCkBAIC0xODEsMTIgKzIwNCwxNiBAQAogICAgIGNoYXIgKm5wbl9wcm90b2NvbHM7CiAgICAgaW50IG5wbl9wcm90b2NvbHNfbGVuOwogI2VuZGlmCisjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisgICAgUHlPYmplY3QgKnNldF9ob3N0bmFtZTsKKyNlbmRpZgogfSBQeVNTTENvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKlNvY2tldDsgLyogd2Vha3JlZiB0byBzb2NrZXQgb24gd2hpY2ggd2UncmUgbGF5ZXJlZCAqLwogICAgIFNTTCAqc3NsOworICAgIFB5U1NMQ29udGV4dCAqY3R4OyAvKiB3ZWFrcmVmIHRvIFNTTCBjb250ZXh0ICovCiAgICAgWDUwOSAqcGVlcl9jZXJ0OwogICAgIGludCBzaHV0ZG93bl9zZWVuX3plcm87CiAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZTsKQEAgLTQzNywxMSArNDY0LDEzIEBACiAgKi8KIAogc3RhdGljIFB5U1NMU29ja2V0ICoKLW5ld1B5U1NMU29ja2V0KFNTTF9DVFggKmN0eCwgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrLAorbmV3UHlTU0xTb2NrZXQoUHlTU0xDb250ZXh0ICpzc2xjdHgsIFB5U29ja2V0U29ja09iamVjdCAqc29jaywKICAgICAgICAgICAgICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGUsCiAgICAgICAgICAgICAgICBjaGFyICpzZXJ2ZXJfaG9zdG5hbWUpCiB7CiAgICAgUHlTU0xTb2NrZXQgKnNlbGY7CisgICAgU1NMX0NUWCAqY3R4ID0gc3NsY3R4LT5jdHg7CisgICAgbG9uZyBtb2RlOwogCiAgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhQeVNTTFNvY2tldCwgJlB5U1NMU29ja2V0X1R5cGUpOwogICAgIGlmIChzZWxmID09IE5VTEwpCkBAIC00NTAsNiArNDc5LDggQEAKICAgICBzZWxmLT5wZWVyX2NlcnQgPSBOVUxMOwogICAgIHNlbGYtPnNzbCA9IE5VTEw7CiAgICAgc2VsZi0+U29ja2V0ID0gTlVMTDsKKyAgICBzZWxmLT5jdHggPSBzc2xjdHg7CisgICAgUHlfSU5DUkVGKHNzbGN0eCk7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhlIFNTTCBlcnJvciBzdGF0ZSBpcyBpbml0aWFsaXplZCAqLwogICAgICh2b2lkKSBFUlJfZ2V0X3N0YXRlKCk7CkBAIC00NTgsMTIgKzQ4OSwxNSBAQAogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBzZWxmLT5zc2wgPSBTU0xfbmV3KGN0eCk7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBTU0xfc2V0X2FwcF9kYXRhKHNlbGYtPnNzbCxzZWxmKTsKICAgICBTU0xfc2V0X2ZkKHNlbGYtPnNzbCwgc29jay0+c29ja19mZCk7CisgICAgbW9kZSA9IFNTTF9NT0RFX0FDQ0VQVF9NT1ZJTkdfV1JJVEVfQlVGRkVSOwogI2lmZGVmIFNTTF9NT0RFX0FVVE9fUkVUUlkKLSAgICBTU0xfc2V0X21vZGUoc2VsZi0+c3NsLCBTU0xfTU9ERV9BVVRPX1JFVFJZKTsKKyAgICBtb2RlIHw9IFNTTF9NT0RFX0FVVE9fUkVUUlk7CiAjZW5kaWYKKyAgICBTU0xfc2V0X21vZGUoc2VsZi0+c3NsLCBtb2RlKTsKIAotI2lmZGVmIFNTTF9DVFJMX1NFVF9UTFNFWFRfSE9TVE5BTUUKKyNpZiBIQVZFX1NOSQogICAgIGlmIChzZXJ2ZXJfaG9zdG5hbWUgIT0gTlVMTCkKICAgICAgICAgU1NMX3NldF90bHNleHRfaG9zdF9uYW1lKHNlbGYtPnNzbCwgc2VydmVyX2hvc3RuYW1lKTsKICNlbmRpZgpAQCAtOTkxLDYgKzEwMjUsMjQgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK19jZXJ0aWZpY2F0ZV90b19kZXIoWDUwOSAqY2VydGlmaWNhdGUpCit7CisgICAgdW5zaWduZWQgY2hhciAqYnl0ZXNfYnVmID0gTlVMTDsKKyAgICBpbnQgbGVuOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBieXRlc19idWYgPSBOVUxMOworICAgIGxlbiA9IGkyZF9YNTA5KGNlcnRpZmljYXRlLCAmYnl0ZXNfYnVmKTsKKyAgICBpZiAobGVuIDwgMCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIC8qIHRoaXMgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlIGJ5dGVzIHNlcXVlbmNlICovCisgICAgcmV0dmFsID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKSBieXRlc19idWYsIGxlbik7CisgICAgT1BFTlNTTF9mcmVlKGJ5dGVzX2J1Zik7CisgICAgcmV0dXJuIHJldHZhbDsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX3Rlc3RfZGVjb2RlX2NlcnRpZmljYXRlIChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYXJncykgewpAQCAtMTAzNiw4ICsxMDg4LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9wZWVyY2VydChQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgaW50IGxlbjsKICAgICBpbnQgdmVyaWZpY2F0aW9uOwogICAgIGludCBiaW5hcnlfbW9kZSA9IDA7CiAKQEAgLTEwNDksMjEgKzEwOTksNyBAQAogCiAgICAgaWYgKGJpbmFyeV9tb2RlKSB7CiAgICAgICAgIC8qIHJldHVybiBjZXJ0IGluIERFUi1lbmNvZGVkIGZvcm1hdCAqLwotCi0gICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ5dGVzX2J1ZiA9IE5VTEw7Ci0KLSAgICAgICAgYnl0ZXNfYnVmID0gTlVMTDsKLSAgICAgICAgbGVuID0gaTJkX1g1MDkoc2VsZi0+cGVlcl9jZXJ0LCAmYnl0ZXNfYnVmKTsKLSAgICAgICAgaWYgKGxlbiA8IDApIHsKLSAgICAgICAgICAgIFB5U1NMX1NldEVycm9yKHNlbGYsIGxlbiwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIC8qIHRoaXMgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlIGJ5dGVzIHNlcXVlbmNlICovCi0gICAgICAgIHJldHZhbCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKLSAgICAgICAgICAoKGNvbnN0IGNoYXIgKikgYnl0ZXNfYnVmLCBsZW4pOwotICAgICAgICBPUEVOU1NMX2ZyZWUoYnl0ZXNfYnVmKTsKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKLQorICAgICAgICByZXR1cm4gX2NlcnRpZmljYXRlX3RvX2RlcihzZWxmLT5wZWVyX2NlcnQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHZlcmlmaWNhdGlvbiA9IFNTTF9DVFhfZ2V0X3ZlcmlmeV9tb2RlKFNTTF9nZXRfU1NMX0NUWChzZWxmLT5zc2wpKTsKICAgICAgICAgaWYgKCh2ZXJpZmljYXRpb24gJiBTU0xfVkVSSUZZX1BFRVIpID09IDApCkBAIC0xMTY2LDYgKzEyMDIsNDMgQEAKICNlbmRpZgogfQogCitzdGF0aWMgUHlTU0xDb250ZXh0ICpQeVNTTF9nZXRfY29udGV4dChQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIFB5X0lOQ1JFRihzZWxmLT5jdHgpOworICAgIHJldHVybiBzZWxmLT5jdHg7Cit9CisKK3N0YXRpYyBpbnQgUHlTU0xfc2V0X2NvbnRleHQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSkgeworCisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayh2YWx1ZSwgJlB5U1NMQ29udGV4dF9UeXBlKSkgeworI2lmICFIQVZFX1NOSQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwgInNldHRpbmcgYSBzb2NrZXQncyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiY29udGV4dCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgT3BlblNTTCBsaWJyYXJ5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5jdHgpOworICAgICAgICBzZWxmLT5jdHggPSAoUHlTU0xDb250ZXh0ICopIHZhbHVlOworICAgICAgICBTU0xfc2V0X1NTTF9DVFgoc2VsZi0+c3NsLCBzZWxmLT5jdHgtPmN0eCk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiVGhlIHZhbHVlIG11c3QgYmUgYSBTU0xDb250ZXh0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX3NldF9jb250ZXh0X2RvYywKKyJfc2V0dGVyX2NvbnRleHQoY3R4KVxuXAorXAorVGhpcyBjaGFuZ2VzIHRoZSBjb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgU1NMU29ja2V0LiBUaGlzIGlzIHR5cGljYWxseVxuXAordXNlZCBmcm9tIHdpdGhpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIHNldCBieSB0aGUgc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tcblwKK29uIHRoZSBTU0xDb250ZXh0IHRvIGNoYW5nZSB0aGUgY2VydGlmaWNhdGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZVxuXAorU1NMU29ja2V0IGJlZm9yZSB0aGUgY3J5cHRvZ3JhcGhpYyBleGNoYW5nZSBoYW5kc2hha2UgbWVzc2FnZXNcbiIpOworCisKKwogc3RhdGljIHZvaWQgUHlTU0xfZGVhbGxvYyhQeVNTTFNvY2tldCAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+cGVlcl9jZXJ0KSAgICAgICAgLyogUG9zc2libGUgbm90IHRvIGhhdmUgb25lPyAqLwpAQCAtMTE3Myw2ICsxMjQ2LDcgQEAKICAgICBpZiAoc2VsZi0+c3NsKQogICAgICAgICBTU0xfZnJlZShzZWxmLT5zc2wpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+U29ja2V0KTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPmN0eCk7CiAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwogfQogCkBAIC0xNjEzLDYgKzE2ODcsMTIgQEAKIAogI2VuZGlmIC8qIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAqLwogCitzdGF0aWMgUHlHZXRTZXREZWYgc3NsX2dldHNldGxpc3RbXSA9IHsKKyAgICB7ImNvbnRleHQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfY29udGV4dCwgUHlTU0xfc2V0X2NvbnRleHRfZG9jfSwKKyAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIHN0YXRpYyBQeU1ldGhvZERlZiBQeVNTTE1ldGhvZHNbXSA9IHsKICAgICB7ImRvX2hhbmRzaGFrZSIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xkb19oYW5kc2hha2UsIE1FVEhfTk9BUkdTfSwKICAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHdyaXRlLCBNRVRIX1ZBUkFSR1MsCkBAIC0xNjY3LDYgKzE3NDcsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCiAgICAgUHlTU0xNZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLworICAgIHNzbF9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KIH07CiAKIApAQCAtMTY5MCw2ICsxNzcyLDEyIEBACiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMUzEpCiAgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFRMU3YxX21ldGhvZCgpKTsKKyNpZiBIQVZFX1RMU3YxXzIKKyAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMUzFfMSkKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTdjFfMV9tZXRob2QoKSk7CisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMxXzIpCisgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFRMU3YxXzJfbWV0aG9kKCkpOworI2VuZGlmCiAgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9TU0wzKQogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhTU0x2M19tZXRob2QoKSk7CiAjaWZuZGVmIE9QRU5TU0xfTk9fU1NMMgpAQCAtMTcyMyw2ICsxODExLDkgQEAKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECiAgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IE5VTEw7CiAjZW5kaWYKKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKyAgICBzZWxmLT5zZXRfaG9zdG5hbWUgPSBOVUxMOworI2VuZGlmCiAgICAgLyogRGVmYXVsdHMgKi8KICAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VsZi0+Y3R4LCBTU0xfVkVSSUZZX05PTkUsIE5VTEwpOwogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LApAQCAtMTczNiw5ICsxODI3LDI4IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKK3N0YXRpYyBpbnQKK2NvbnRleHRfdHJhdmVyc2UoUHlTU0xDb250ZXh0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKKyAgICBQeV9WSVNJVChzZWxmLT5zZXRfaG9zdG5hbWUpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfY2xlYXIoUHlTU0xDb250ZXh0ICpzZWxmKQoreworI2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAorICAgIFB5X0NMRUFSKHNlbGYtPnNldF9ob3N0bmFtZSk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQKIGNvbnRleHRfZGVhbGxvYyhQeVNTTENvbnRleHQgKnNlbGYpCiB7CisgICAgY29udGV4dF9jbGVhcihzZWxmKTsKICAgICBTU0xfQ1RYX2ZyZWUoc2VsZi0+Y3R4KTsKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECiAgICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKQEAgLTE5NjIsOCArMjA3Miw4IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgZnJlZShwd19pbmZvLT5wYXNzd29yZCk7Ci0gICAgcHdfaW5mby0+cGFzc3dvcmQgPSBtYWxsb2Moc2l6ZSk7CisgICAgUHlNZW1fRnJlZShwd19pbmZvLT5wYXNzd29yZCk7CisgICAgcHdfaW5mby0+cGFzc3dvcmQgPSBQeU1lbV9NYWxsb2Moc2l6ZSk7CiAgICAgaWYgKCFwd19pbmZvLT5wYXNzd29yZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGFsbG9jYXRlIHBhc3N3b3JkIGJ1ZmZlciIpOwpAQCAtMjEwNywxMyArMjIxNywxMyBAQAogICAgIH0KICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKLSAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOworICAgIFB5TWVtX0ZyZWUocHdfaW5mby5wYXNzd29yZCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAKIGVycm9yOgogICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiKHNlbGYtPmN0eCwgb3JpZ19wYXNzd2RfY2IpOwogICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhKHNlbGYtPmN0eCwgb3JpZ19wYXNzd2RfdXNlcmRhdGEpOwotICAgIGZyZWUocHdfaW5mby5wYXNzd29yZCk7CisgICAgUHlNZW1fRnJlZShwd19pbmZvLnBhc3N3b3JkKTsKICAgICBQeV9YREVDUkVGKGtleWZpbGVfYnl0ZXMpOwogICAgIFB5X1hERUNSRUYoY2VydGZpbGVfYnl0ZXMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMjIyOSw3ICsyMzM5LDcgQEAKICAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAiaWRuYSIsICZob3N0bmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSNpZm5kZWYgU1NMX0NUUkxfU0VUX1RMU0VYVF9IT1NUTkFNRQorI2lmICFIQVZFX1NOSQogICAgICAgICBQeU1lbV9GcmVlKGhvc3RuYW1lKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzZXJ2ZXJfaG9zdG5hbWUgaXMgbm90IHN1cHBvcnRlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgeW91ciBPcGVuU1NMIGxpYnJhcnkiKTsKQEAgLTIyMzcsNyArMjM0Nyw3IEBACiAjZW5kaWYKICAgICB9CiAKLSAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZi0+Y3R4LCBzb2NrLCBzZXJ2ZXJfc2lkZSwKKyAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lKTsKICAgICBpZiAoaG9zdG5hbWUgIT0gTlVMTCkKICAgICAgICAgUHlNZW1fRnJlZShob3N0bmFtZSk7CkBAIC0yMzIyLDYgKzI0MzIsMjQ4IEBACiB9CiAjZW5kaWYKIAorI2lmIEhBVkVfU05JICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQorc3RhdGljIGludAorX3NlcnZlcm5hbWVfY2FsbGJhY2soU1NMICpzLCBpbnQgKmFsLCB2b2lkICphcmdzKQoreworICAgIGludCByZXQ7CisgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOworICAgIFB5U1NMU29ja2V0ICpzc2w7CisgICAgUHlPYmplY3QgKnNlcnZlcm5hbWVfbzsKKyAgICBQeU9iamVjdCAqc2VydmVybmFtZV9pZG5hOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgLyogVGhlIGhpZ2gtbGV2ZWwgc3NsLlNTTFNvY2tldCBvYmplY3QgKi8KKyAgICBQeU9iamVjdCAqc3NsX3NvY2tldDsKKyAgICBjb25zdCBjaGFyICpzZXJ2ZXJuYW1lID0gU1NMX2dldF9zZXJ2ZXJuYW1lKHMsIFRMU0VYVF9OQU1FVFlQRV9ob3N0X25hbWUpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9TVEFURSBnc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisKKyAgICBpZiAoc3NsX2N0eC0+c2V0X2hvc3RuYW1lID09IE5VTEwpIHsKKyAgICAgICAgLyogcmVtb3ZlIHJhY2UgY29uZGl0aW9uIGluIHRoaXMgdGhlIGNhbGwgYmFjayB3aGlsZSBpZiByZW1vdmluZyB0aGUKKyAgICAgICAgICogY2FsbGJhY2sgaXMgaW4gcHJvZ3Jlc3MgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ3N0YXRlKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gU1NMX1RMU0VYVF9FUlJfT0s7CisgICAgfQorCisgICAgc3NsID0gU1NMX2dldF9hcHBfZGF0YShzKTsKKyAgICBhc3NlcnQoUHlTU0xTb2NrZXRfQ2hlY2soc3NsKSk7CisgICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5Tb2NrZXQpOworICAgIFB5X0lOQ1JFRihzc2xfc29ja2V0KTsKKyAgICBpZiAoc3NsX3NvY2tldCA9PSBQeV9Ob25lKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKHNlcnZlcm5hbWUgPT0gTlVMTCkgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNzbF9jdHgtPnNldF9ob3N0bmFtZSwgc3NsX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBzc2xfY3R4LCBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNlcnZlcm5hbWVfbyA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhzZXJ2ZXJuYW1lKTsKKyAgICAgICAgaWYgKHNlcnZlcm5hbWVfbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHNzbF9jdHgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzZXJ2ZXJuYW1lX2lkbmEgPSBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Qoc2VydmVybmFtZV9vLCAiaWRuYSIsIE5VTEwpOworICAgICAgICBpZiAoc2VydmVybmFtZV9pZG5hID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShzZXJ2ZXJuYW1lX28pOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcnZlcm5hbWVfbyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzZXJ2ZXJuYW1lX28pOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNzbF9jdHgtPnNldF9ob3N0bmFtZSwgc3NsX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJuYW1lX2lkbmEsIHNzbF9jdHgsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VydmVybmFtZV9pZG5hKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHNzbF9zb2NrZXQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShzc2xfY3R4LT5zZXRfaG9zdG5hbWUpOworICAgICAgICAqYWwgPSBTU0xfQURfSEFORFNIQUtFX0ZBSUxVUkU7CisgICAgICAgIHJldCA9IFNTTF9UTFNFWFRfRVJSX0FMRVJUX0ZBVEFMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICAqYWwgPSAoaW50KSBQeUxvbmdfQXNMb25nKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShyZXN1bHQpOworICAgICAgICAgICAgICAgICphbCA9IFNTTF9BRF9JTlRFUk5BTF9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldCA9IFNTTF9UTFNFWFRfRVJSX0FMRVJUX0ZBVEFMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0ID0gU1NMX1RMU0VYVF9FUlJfT0s7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ3N0YXRlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihzc2xfc29ja2V0KTsKKyAgICAqYWwgPSBTU0xfQURfSU5URVJOQUxfRVJST1I7CisgICAgcmV0ID0gU1NMX1RMU0VYVF9FUlJfQUxFUlRfRkFUQUw7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ3N0YXRlKTsKKyNlbmRpZgorICAgIHJldHVybiByZXQ7Cit9CisjZW5kaWYKKworUHlEb2NfU1RSVkFSKFB5U1NMX3NldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrX2RvYywKKyJzZXRfc2VydmVybmFtZV9jYWxsYmFjayhtZXRob2QpXG5cCitcblwKK1RoaXMgc2V0cyBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbiBhIHNlcnZlciBuYW1lIGlzIHByb3ZpZGVkIGJ5XG5cCit0aGUgU1NML1RMUyBjbGllbnQgaW4gdGhlIFNOSSBleHRlbnNpb24uXG5cCitcblwKK0lmIHRoZSBhcmd1bWVudCBpcyBOb25lIHRoZW4gdGhlIGNhbGxiYWNrIGlzIGRpc2FibGVkLiBUaGUgbWV0aG9kIGlzIGNhbGxlZFxuXAord2l0aCB0aGUgU1NMU29ja2V0LCB0aGUgc2VydmVyIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCB0aGUgU1NMQ29udGV4dCBvYmplY3QuXG5cCitTZWUgUkZDIDYwNjYgZm9yIGRldGFpbHMgb2YgdGhlIFNOSSBleHRlbnNpb24uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzZXRfc2VydmVybmFtZV9jYWxsYmFjayhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmIEhBVkVfU05JICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTRVhUKQorICAgIFB5T2JqZWN0ICpjYjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIsICZjYikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQ0xFQVIoc2VsZi0+c2V0X2hvc3RuYW1lKTsKKyAgICBpZiAoY2IgPT0gUHlfTm9uZSkgeworICAgICAgICBTU0xfQ1RYX3NldF90bHNleHRfc2VydmVybmFtZV9jYWxsYmFjayhzZWxmLT5jdHgsIE5VTEwpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGNiKSkgeworICAgICAgICAgICAgU1NMX0NUWF9zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2soc2VsZi0+Y3R4LCBOVUxMKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhIGNhbGxhYmxlIG9iamVjdCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKGNiKTsKKyAgICAgICAgc2VsZi0+c2V0X2hvc3RuYW1lID0gY2I7CisgICAgICAgIFNTTF9DVFhfc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKHNlbGYtPmN0eCwgX3NlcnZlcm5hbWVfY2FsbGJhY2spOworICAgICAgICBTU0xfQ1RYX3NldF90bHNleHRfc2VydmVybmFtZV9hcmcoc2VsZi0+Y3R4LCBzZWxmKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAiVGhlIFRMUyBleHRlbnNpb24gc2VydmVybmFtZSBjYWxsYmFjaywgIgorICAgICAgICAgICAgICAgICAgICAiU1NMX0NUWF9zZXRfdGxzZXh0X3NlcnZlcm5hbWVfY2FsbGJhY2ssICIKKyAgICAgICAgICAgICAgICAgICAgImlzIG5vdCBpbiB0aGUgY3VycmVudCBPcGVuU1NMIGxpYnJhcnkuIik7CisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zdGF0c19kb2MsCisiY2VydF9zdG9yZV9zdGF0cygpIC0+IHsnY3JsJzogaW50LCAneDUwOV9jYSc6IGludCwgJ3g1MDknOiBpbnR9XG5cCitcblwKK1JldHVybnMgcXVhbnRpdGllcyBvZiBsb2FkZWQgWC41MDkgY2VydGlmaWNhdGVzLiBYLjUwOSBjZXJ0aWZpY2F0ZXMgd2l0aCBhXG5cCitDQSBleHRlbnNpb24gYW5kIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdHMgaW5zaWRlIHRoZSBjb250ZXh0J3MgY2VydFxuXAorc3RvcmUuXG5cCitOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuXAorYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjZXJ0X3N0b3JlX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZikKK3sKKyAgICBYNTA5X1NUT1JFICpzdG9yZTsKKyAgICBYNTA5X09CSkVDVCAqb2JqOworICAgIGludCB4NTA5ID0gMCwgY3JsID0gMCwgcGtleSA9IDAsIGNhID0gMCwgaTsKKworICAgIHN0b3JlID0gU1NMX0NUWF9nZXRfY2VydF9zdG9yZShzZWxmLT5jdHgpOworICAgIGZvciAoaSA9IDA7IGkgPCBza19YNTA5X09CSkVDVF9udW0oc3RvcmUtPm9ianMpOyBpKyspIHsKKyAgICAgICAgb2JqID0gc2tfWDUwOV9PQkpFQ1RfdmFsdWUoc3RvcmUtPm9ianMsIGkpOworICAgICAgICBzd2l0Y2ggKG9iai0+dHlwZSkgeworICAgICAgICAgICAgY2FzZSBYNTA5X0xVX1g1MDk6CisgICAgICAgICAgICAgICAgeDUwOSsrOworICAgICAgICAgICAgICAgIGlmIChYNTA5X2NoZWNrX2NhKG9iai0+ZGF0YS54NTA5KSkgeworICAgICAgICAgICAgICAgICAgICBjYSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgWDUwOV9MVV9DUkw6CisgICAgICAgICAgICAgICAgY3JsKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFg1MDlfTFVfUEtFWToKKyAgICAgICAgICAgICAgICBwa2V5Kys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8qIElnbm9yZSBYNTA5X0xVX0ZBSUwsIFg1MDlfTFVfUkVUUlksIFg1MDlfTFVfUEtFWS4KKyAgICAgICAgICAgICAgICAgKiBBcyBmYXIgYXMgSSBjYW4gdGVsbCB0aGV5IGFyZSBpbnRlcm5hbCBzdGF0ZXMgYW5kIG5ldmVyCisgICAgICAgICAgICAgICAgICogc3RvcmVkIGluIGEgY2VydCBzdG9yZSAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ7c2lzaXNpfSIsICJ4NTA5IiwgeDUwOSwgImNybCIsIGNybCwKKyAgICAgICAgIng1MDlfY2EiLCBjYSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfY2FfY2VydHNfZG9jLAorImdldF9jYV9jZXJ0cyhbZGVyPUZhbHNlXSkgLT4gbGlzdCBvZiBsb2FkZWQgY2VydGlmaWNhdGVcblwKK1xuXAorUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuIElmIHRoZVxuXAorb3B0aW9uYWwgYXJndW1lbnQgaXMgVHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlIENBIGNlcnRpZmljYXRlLlxuXAorTk9URTogQ2VydGlmaWNhdGVzIGluIGEgY2FwYXRoIGRpcmVjdG9yeSBhcmVuJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcblwKK2JlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgWDUwOV9TVE9SRSAqc3RvcmU7CisgICAgUHlPYmplY3QgKmNpID0gTlVMTCwgKnJsaXN0ID0gTlVMTDsKKyAgICBpbnQgaTsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpnZXRfY2FfY2VydHMiLCAmYmluYXJ5X21vZGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICgocmxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0b3JlID0gU1NMX0NUWF9nZXRfY2VydF9zdG9yZShzZWxmLT5jdHgpOworICAgIGZvciAoaSA9IDA7IGkgPCBza19YNTA5X09CSkVDVF9udW0oc3RvcmUtPm9ianMpOyBpKyspIHsKKyAgICAgICAgWDUwOV9PQkpFQ1QgKm9iajsKKyAgICAgICAgWDUwOSAqY2VydDsKKworICAgICAgICBvYmogPSBza19YNTA5X09CSkVDVF92YWx1ZShzdG9yZS0+b2JqcywgaSk7CisgICAgICAgIGlmIChvYmotPnR5cGUgIT0gWDUwOV9MVV9YNTA5KSB7CisgICAgICAgICAgICAvKiBub3QgYSB4NTA5IGNlcnQgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8qIENBIGZvciBhbnkgcHVycG9zZSAqLworICAgICAgICBjZXJ0ID0gb2JqLT5kYXRhLng1MDk7CisgICAgICAgIGlmICghWDUwOV9jaGVja19jYShjZXJ0KSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJpbmFyeV9tb2RlKSB7CisgICAgICAgICAgICBjaSA9IF9jZXJ0aWZpY2F0ZV90b19kZXIoY2VydCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaSA9IF9kZWNvZGVfY2VydGlmaWNhdGUoY2VydCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocmxpc3QsIGNpKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9DTEVBUihjaSk7CisgICAgfQorICAgIHJldHVybiBybGlzdDsKKworICBlcnJvcjoKKyAgICBQeV9YREVDUkVGKGNpKTsKKyAgICBQeV9YREVDUkVGKHJsaXN0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCiBzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJvcHRpb25zIiwgKGdldHRlcikgZ2V0X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X29wdGlvbnMsIE5VTEx9LApAQCAtMjM1MSw2ICsyNzAzLDEyIEBACiAgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbikgc2V0X2VjZGhfY3VydmUsCiAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCiAjZW5kaWYKKyAgICB7InNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfc2VydmVybmFtZV9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBQeVNTTF9zZXRfc2VydmVybmFtZV9jYWxsYmFja19kb2N9LAorICAgIHsiY2VydF9zdG9yZV9zdGF0cyIsIChQeUNGdW5jdGlvbikgY2VydF9zdG9yZV9zdGF0cywKKyAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIFB5U1NMX2dldF9zdGF0c19kb2N9LAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKSBnZXRfY2FfY2VydHMsCisgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgUHlTU0xfZ2V0X2NhX2NlcnRzX2RvY30sCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjM3NCwxMCArMjczMiwxMCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgLyp0cF9mbGFncyovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyp0cF9mbGFncyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLworICAgICh0cmF2ZXJzZXByb2MpIGNvbnRleHRfdHJhdmVyc2UsICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAoaW5xdWlyeSkgY29udGV4dF9jbGVhciwgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KQEAgLTI1MjYsNyArMjg4NCwxNjkgQEAKIAogI2VuZGlmCiAKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfZG9jLAorImdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIC0+IHR1cGxlXG5cCitcblwKK1JldHVybiBzZWFyY2ggcGF0aHMgYW5kIGVudmlyb25tZW50IHZhcnMgdGhhdCBhcmUgdXNlZCBieSBTU0xDb250ZXh0J3NcblwKK3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIHRvIGxvYWQgZGVmYXVsdCBDQXMuIFRoZSB2YWx1ZXMgYXJlXG5cCisnY2VydF9maWxlX2VudicsICdjZXJ0X2ZpbGUnLCAnY2VydF9kaXJfZW52JywgJ2NlcnRfZGlyJy4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqb2ZpbGVfZW52ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2ZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvZGlyX2VudiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9kaXIgPSBOVUxMOworCisjZGVmaW5lIGNvbnZlcnQoaW5mbywgdGFyZ2V0KSB7IFwKKyAgICAgICAgY29uc3QgY2hhciAqdG1wID0gKGluZm8pOyBcCisgICAgICAgIHRhcmdldCA9IE5VTEw7IFwKKyAgICAgICAgaWYgKCF0bXApIHsgUHlfSU5DUkVGKFB5X05vbmUpOyB0YXJnZXQgPSBQeV9Ob25lOyB9IFwKKyAgICAgICAgZWxzZSBpZiAoKHRhcmdldCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQodG1wKSkgPT0gTlVMTCkgeyBcCisgICAgICAgICAgICB0YXJnZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmcodG1wKTsgfSBcCisgICAgICAgIGlmICghdGFyZ2V0KSBnb3RvIGVycm9yOyBcCisgICAgfSB3aGlsZSgwKQorCisgICAgY29udmVydChYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZV9lbnYoKSwgb2ZpbGVfZW52KTsKKyAgICBjb252ZXJ0KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlKCksIG9maWxlKTsKKyAgICBjb252ZXJ0KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52KCksIG9kaXJfZW52KTsKKyAgICBjb252ZXJ0KFg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXIoKSwgb2Rpcik7CisjdW5kZWYgY29udmVydAorCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5OTk4iLCBvZmlsZV9lbnYsIG9maWxlLCBvZGlyX2Vudiwgb2Rpcik7CisKKyAgZXJyb3I6CisgICAgUHlfWERFQ1JFRihvZmlsZV9lbnYpOworICAgIFB5X1hERUNSRUYob2ZpbGUpOworICAgIFB5X1hERUNSRUYob2Rpcl9lbnYpOworICAgIFB5X1hERUNSRUYob2Rpcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNpZmRlZiBfTVNDX1ZFUgorUHlEb2NfU1RSVkFSKFB5U1NMX2VudW1fY2VydF9zdG9yZV9kb2MsCisiZW51bV9jZXJ0X3N0b3JlKHN0b3JlX25hbWUsIGNlcnRfdHlwZT0nY2VydGlmaWNhdGUnKSAtPiBbXVxuXAorXG5cCitSZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSBXaW5kb3dzJyBjZXJ0IHN0b3JlLiBzdG9yZV9uYW1lIG1heSBiZSBvbmUgb2ZcblwKKydDQScsICdST09UJyBvciAnTVknLiBUaGUgc3lzdGVtIG1heSBwcm92aWRlIG1vcmUgY2VydCBzdG9yYWdlcywgdG9vLlxuXAorY2VydF90eXBlIG11c3QgYmUgZWl0aGVyICdjZXJ0aWZpY2F0ZScgb3IgJ2NybCcuXG5cCitUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLCBlbmNvZGluZ190eXBlKSB0dXBsZXMuIFRoZVxuXAorZW5jb2RpbmdfdHlwZSBmbGFnIGNhbiBiZSBpbnRlcnByZXRlZCB3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yXG5cCitQS0NTXzdfQVNOX0VOQ09ESU5HLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZW51bV9jZXJ0X3N0b3JlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgY2hhciAqa3dsaXN0W10gPSB7InN0b3JlX25hbWUiLCAiY2VydF90eXBlIiwgTlVMTH07CisgICAgY2hhciAqc3RvcmVfbmFtZTsKKyAgICBjaGFyICpjZXJ0X3R5cGUgPSAiY2VydGlmaWNhdGUiOworICAgIEhDRVJUU1RPUkUgaFN0b3JlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdHVwID0gTlVMTCwgKmNlcnQgPSBOVUxMLCAqZW5jID0gTlVMTDsKKyAgICBpbnQgb2sgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInN8czplbnVtX2NlcnRfc3RvcmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN0b3JlX25hbWUsICZjZXJ0X3R5cGUpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoKHN0cmNtcChjZXJ0X3R5cGUsICJjZXJ0aWZpY2F0ZSIpICE9IDApICYmCisgICAgICAgIChzdHJjbXAoY2VydF90eXBlLCAiY3JsIikgIT0gMCkpIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0X3R5cGUgbXVzdCBiZSAnY2VydGlmaWNhdGUnIG9yICdjcmwnLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLCBjZXJ0X3R5cGUpOworICAgIH0KKworICAgIGlmICgocmVzdWx0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoKGhTdG9yZSA9IENlcnRPcGVuU3lzdGVtU3RvcmUoTlVMTCwgc3RvcmVfbmFtZSkpID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorCisgICAgaWYgKHN0cmNtcChjZXJ0X3R5cGUsICJjZXJ0aWZpY2F0ZSIpID09IDApIHsKKyAgICAgICAgUENDRVJUX0NPTlRFWFQgcENlcnRDdHggPSBOVUxMOworICAgICAgICB3aGlsZSAocENlcnRDdHggPSBDZXJ0RW51bUNlcnRpZmljYXRlc0luU3RvcmUoaFN0b3JlLCBwQ2VydEN0eCkpIHsKKyAgICAgICAgICAgIGNlcnQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilwQ2VydEN0eC0+cGJDZXJ0RW5jb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDZXJ0Q3R4LT5jYkNlcnRFbmNvZGVkKTsKKyAgICAgICAgICAgIGlmICghY2VydCkgeworICAgICAgICAgICAgICAgIG9rID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZW5jID0gUHlMb25nX0Zyb21Mb25nKHBDZXJ0Q3R4LT5kd0NlcnRFbmNvZGluZ1R5cGUpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgb2sgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCh0dXAgPSBQeVR1cGxlX05ldygyKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG9rID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwLCAwLCBjZXJ0KTsgY2VydCA9IE5VTEw7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cCwgMSwgZW5jKTsgZW5jID0gTlVMTDsKKworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocmVzdWx0LCB0dXApIDwgMCkgeworICAgICAgICAgICAgICAgIG9rID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHR1cCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBDZXJ0Q3R4KSB7CisgICAgICAgICAgICAvKiBsb29wIGVuZGVkIHdpdGggYW4gZXJyb3IsIG5lZWQgdG8gY2xlYW4gdXAgY29udGV4dCBtYW51YWxseSAqLworICAgICAgICAgICAgQ2VydEZyZWVDZXJ0aWZpY2F0ZUNvbnRleHQocENlcnRDdHgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgUENDUkxfQ09OVEVYVCBwQ3JsQ3R4ID0gTlVMTDsKKyAgICAgICAgd2hpbGUgKHBDcmxDdHggPSBDZXJ0RW51bUNSTHNJblN0b3JlKGhTdG9yZSwgcENybEN0eCkpIHsKKyAgICAgICAgICAgIGNlcnQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilwQ3JsQ3R4LT5wYkNybEVuY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQ3JsQ3R4LT5jYkNybEVuY29kZWQpOworICAgICAgICAgICAgaWYgKCFjZXJ0KSB7CisgICAgICAgICAgICAgICAgb2sgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChlbmMgPSBQeUxvbmdfRnJvbUxvbmcocENybEN0eC0+ZHdDZXJ0RW5jb2RpbmdUeXBlKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG9rID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgodHVwID0gUHlUdXBsZV9OZXcoMikpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBvayA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cCwgMCwgY2VydCk7IGNlcnQgPSBOVUxMOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXAsIDEsIGVuYyk7IGVuYyA9IE5VTEw7CisKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHJlc3VsdCwgdHVwKSA8IDApIHsKKyAgICAgICAgICAgICAgICBvayA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0dXApOworICAgICAgICB9CisgICAgICAgIGlmIChwQ3JsQ3R4KSB7CisgICAgICAgICAgICAvKiBsb29wIGVuZGVkIHdpdGggYW4gZXJyb3IsIG5lZWQgdG8gY2xlYW4gdXAgY29udGV4dCBtYW51YWxseSAqLworICAgICAgICAgICAgQ2VydEZyZWVDUkxDb250ZXh0KHBDcmxDdHgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogSW4gZXJyb3IgY2FzZXMgY2VydCwgZW5jIGFuZCB0dXAgbWF5IG5vdCBiZSBOVUxMICovCisgICAgUHlfWERFQ1JFRihjZXJ0KTsKKyAgICBQeV9YREVDUkVGKGVuYyk7CisgICAgUHlfWERFQ1JFRih0dXApOworCisgICAgaWYgKCFDZXJ0Q2xvc2VTdG9yZShoU3RvcmUsIDApKSB7CisgICAgICAgIC8qIFRoaXMgZXJyb3IgY2FzZSBtaWdodCBzaGFkb3cgYW5vdGhlciBleGNlcHRpb24uKi8KKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgfQorICAgIGlmIChvaykgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisjZW5kaWYKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICovCiAKQEAgLTI1NDUsNiArMzA2NSwxMiBAQAogICAgIHsiUkFORF9zdGF0dXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeVNTTF9SQU5EX3N0YXR1cywgTUVUSF9OT0FSR1MsCiAgICAgIFB5U1NMX1JBTkRfc3RhdHVzX2RvY30sCiAjZW5kaWYKKyAgICB7ImdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyIsIChQeUNGdW5jdGlvbilQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsCisgICAgIE1FVEhfTk9BUkdTLCBQeVNTTF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfZG9jfSwKKyNpZmRlZiBfTVNDX1ZFUgorICAgIHsiZW51bV9jZXJ0X3N0b3JlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2VudW1fY2VydF9zdG9yZSwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgUHlTU0xfZW51bV9jZXJ0X3N0b3JlX2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0yNTk0LDcgKzMxMjAsNyBAQAogICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgX3NzbF9sb2Nrc19jb3VudCA9IENSWVBUT19udW1fbG9ja3MoKTsKICAgICAgICAgX3NzbF9sb2NrcyA9IChQeVRocmVhZF90eXBlX2xvY2sgKikKLSAgICAgICAgICAgIG1hbGxvYyhzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSAqIF9zc2xfbG9ja3NfY291bnQpOworICAgICAgICAgICAgUHlNZW1fTWFsbG9jKHNpemVvZihQeVRocmVhZF90eXBlX2xvY2spICogX3NzbF9sb2Nrc19jb3VudCk7CiAgICAgICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgbWVtc2V0KF9zc2xfbG9ja3MsIDAsCkBAIC0yNjA2LDcgKzMxMzIsNyBAQAogICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7ICBqIDwgaTsgIGorKykgewogICAgICAgICAgICAgICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soX3NzbF9sb2Nrc1tqXSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZyZWUoX3NzbF9sb2Nrcyk7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShfc3NsX2xvY2tzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjc1Nyw2ICszMjgzLDYzIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNFUlRfUkVRVUlSRUQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9DRVJUX1JFUVVJUkVEKTsKIAorI2lmZGVmIF9NU0NfVkVSCisgICAgLyogV2luZG93cyBkd0NlcnRFbmNvZGluZ1R5cGUgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYNTA5X0FTTl9FTkNPRElORyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUEtDU183X0FTTl9FTkNPRElORyk7CisjZW5kaWYKKworICAgIC8qIEFsZXJ0IERlc2NyaXB0aW9ucyBmcm9tIHNzbC5oICovCisgICAgLyogbm90ZSBSRVNFUlZFRCBjb25zdGFudHMgbm8gbG9uZ2VyIGludGVuZGVkIGZvciB1c2UgaGF2ZSBiZWVuIHJlbW92ZWQgKi8KKyAgICAvKiBodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL3Rscy1wYXJhbWV0ZXJzL3Rscy1wYXJhbWV0ZXJzLnhtbCN0bHMtcGFyYW1ldGVycy02ICovCisKKyNkZWZpbmUgQUREX0FEX0NPTlNUQU5UKHMpIFwKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUxFUlRfREVTQ1JJUFRJT05fIiNzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX0FEXyMjcykKKworICAgIEFERF9BRF9DT05TVEFOVChDTE9TRV9OT1RJRlkpOworICAgIEFERF9BRF9DT05TVEFOVChVTkVYUEVDVEVEX01FU1NBR0UpOworICAgIEFERF9BRF9DT05TVEFOVChCQURfUkVDT1JEX01BQyk7CisgICAgQUREX0FEX0NPTlNUQU5UKFJFQ09SRF9PVkVSRkxPVyk7CisgICAgQUREX0FEX0NPTlNUQU5UKERFQ09NUFJFU1NJT05fRkFJTFVSRSk7CisgICAgQUREX0FEX0NPTlNUQU5UKEhBTkRTSEFLRV9GQUlMVVJFKTsKKyAgICBBRERfQURfQ09OU1RBTlQoQkFEX0NFUlRJRklDQVRFKTsKKyAgICBBRERfQURfQ09OU1RBTlQoVU5TVVBQT1JURURfQ0VSVElGSUNBVEUpOworICAgIEFERF9BRF9DT05TVEFOVChDRVJUSUZJQ0FURV9SRVZPS0VEKTsKKyAgICBBRERfQURfQ09OU1RBTlQoQ0VSVElGSUNBVEVfRVhQSVJFRCk7CisgICAgQUREX0FEX0NPTlNUQU5UKENFUlRJRklDQVRFX1VOS05PV04pOworICAgIEFERF9BRF9DT05TVEFOVChJTExFR0FMX1BBUkFNRVRFUik7CisgICAgQUREX0FEX0NPTlNUQU5UKFVOS05PV05fQ0EpOworICAgIEFERF9BRF9DT05TVEFOVChBQ0NFU1NfREVOSUVEKTsKKyAgICBBRERfQURfQ09OU1RBTlQoREVDT0RFX0VSUk9SKTsKKyAgICBBRERfQURfQ09OU1RBTlQoREVDUllQVF9FUlJPUik7CisgICAgQUREX0FEX0NPTlNUQU5UKFBST1RPQ09MX1ZFUlNJT04pOworICAgIEFERF9BRF9DT05TVEFOVChJTlNVRkZJQ0lFTlRfU0VDVVJJVFkpOworICAgIEFERF9BRF9DT05TVEFOVChJTlRFUk5BTF9FUlJPUik7CisgICAgQUREX0FEX0NPTlNUQU5UKFVTRVJfQ0FOQ0VMTEVEKTsKKyAgICBBRERfQURfQ09OU1RBTlQoTk9fUkVORUdPVElBVElPTik7CisgICAgLyogTm90IGFsbCBjb25zdGFudHMgYXJlIGluIG9sZCBPcGVuU1NMIHZlcnNpb25zICovCisjaWZkZWYgU1NMX0FEX1VOU1VQUE9SVEVEX0VYVEVOU0lPTgorICAgIEFERF9BRF9DT05TVEFOVChVTlNVUFBPUlRFRF9FWFRFTlNJT04pOworI2VuZGlmCisjaWZkZWYgU1NMX0FEX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRQorICAgIEFERF9BRF9DT05TVEFOVChDRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUpOworI2VuZGlmCisjaWZkZWYgU1NMX0FEX1VOUkVDT0dOSVpFRF9OQU1FCisgICAgQUREX0FEX0NPTlNUQU5UKFVOUkVDT0dOSVpFRF9OQU1FKTsKKyNlbmRpZgorI2lmZGVmIFNTTF9BRF9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFCisgICAgQUREX0FEX0NPTlNUQU5UKEJBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0UpOworI2VuZGlmCisjaWZkZWYgU1NMX0FEX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFCisgICAgQUREX0FEX0NPTlNUQU5UKEJBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFKTsKKyNlbmRpZgorI2lmZGVmIFNTTF9BRF9VTktOT1dOX1BTS19JREVOVElUWQorICAgIEFERF9BRF9DT05TVEFOVChVTktOT1dOX1BTS19JREVOVElUWSk7CisjZW5kaWYKKworI3VuZGVmIEFERF9BRF9DT05TVEFOVAorCiAgICAgLyogcHJvdG9jb2wgdmVyc2lvbnMgKi8KICNpZm5kZWYgT1BFTlNTTF9OT19TU0wyCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1NTTHYyIiwKQEAgLTI3NjgsNiArMzM1MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1NTTDIzKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTdjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEpOworI2lmIEhBVkVfVExTdjFfMgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFN2MV8xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzEpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFN2MV8yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzIpOworI2VuZGlmCiAKICAgICAvKiBwcm90b2NvbCBvcHRpb25zICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0FMTCIsCkBAIC0yNzc1LDYgKzMzNjQsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fU1NMdjIiLCBTU0xfT1BfTk9fU1NMdjIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19TU0x2MyIsIFNTTF9PUF9OT19TU0x2Myk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxIiwgU1NMX09QX05PX1RMU3YxKTsKKyNpZiBIQVZFX1RMU3YxXzIKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjFfMSIsIFNTTF9PUF9OT19UTFN2MV8xKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjFfMiIsIFNTTF9PUF9OT19UTFN2MV8yKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfREhfVVNFIiwgU1NMX09QX1NJTkdMRV9ESF9VU0UpOwpAQCAtMjc4Niw3ICszMzc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfTk9fQ09NUFJFU1NJT04pOwogI2VuZGlmCiAKLSNpZmRlZiBTU0xfQ1RSTF9TRVRfVExTRVhUX0hPU1ROQU1FCisjaWYgSEFWRV9TTkkKICAgICByID0gUHlfVHJ1ZTsKICNlbHNlCiAgICAgciA9IFB5X0ZhbHNlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RhdC5jIGIvTW9kdWxlcy9fc3RhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDFmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zdGF0LmMKQEAgLTAsMCArMSw1NjMgQEAKKy8qIHN0YXQuaCBpbnRlcmZhY2UKKyAqCisgKiBUaGUgbW9kdWxlIGRlZmluZXMgYWxsIFNfSUYqLCBTX0kqLCBVRl8qLCBTRl8qIGFuZCBTVF8qIGNvbnN0YW50cyB0bworICogc2Vuc2libGUgZGVmYXVsdCB2YWx1ZXMgYXMgd2VsbCBhcyBkZWZpbmVzIFNfSVMqKCkgbWFjcm9zIGluIG9yZGVyIHRvIGtlZXAKKyAqIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIHN0YXQucHkgbW9kdWxlLgorICoKKyAqIE5ldyBjb25zdGFudHMgYW5kIG1hY3JvcyBzdWNoIGFzIFNfSUZET09SIC8gU19JU0RPT1IoKSBhcmUgYWx3YXlzIGRlZmluZWQKKyAqIGFzIGludCAwLgorICoKKyAqIE5PVEU6IFBPU0lYIG9ubHkgZGVmaW5lcyB0aGUgdmFsdWVzIG9mIHRoZSBTX0kqIHBlcm1pc3Npb24gYml0cy4KKyAqCisgKi8KKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCisKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmIC8qIEhBVkVfU1lTX1NUQVRfSCAqLworCisjaWZkZWYgTVNfV0lORE9XUwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBtb2RlX3Q7CisjZW5kaWYKKworLyogRnJvbSBQeXRob24ncyBzdGF0LnB5ICovCisjaWZuZGVmIFNfSU1PREUKKyMgIGRlZmluZSBTX0lNT0RFIDA3Nzc3CisjZW5kaWYKKworLyogU19JRlhYWCBjb25zdGFudHMgKGZpbGUgdHlwZXMpCisgKgorICogT25seSB0aGUgbmFtZXMgYXJlIGRlZmluZWQgYnkgUE9TSVggYnV0IG5vdCB0aGVpciB2YWx1ZS4gQWxsIGNvbW1vbiBmaWxlCisgKiB0eXBlcyBzZWVtcyB0byBoYXZlIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgb24gYWxsIHBsYXRmb3JtcywgdGhvdWdoLgorICoKKyAqIHB5cG9ydC5oIGd1YXJhbnRlZXMgU19JRk1ULCBTX0lGRElSLCBTX0lGQ0hSLCBTX0lGUkVHIGFuZCBTX0lGTE5LCisgKi8KKworI2lmbmRlZiBTX0lGQkxLCisjICBkZWZpbmUgU19JRkJMSyAwMDYwMDAwCisjZW5kaWYKKworI2lmbmRlZiBTX0lGSUZPCisjICBkZWZpbmUgU19JRklGTyAwMDEwMDAwCisjZW5kaWYKKworI2lmbmRlZiBTX0lGU09DSworIyAgZGVmaW5lIFNfSUZTT0NLIDAxNDAwMDAKKyNlbmRpZgorCisjaWZuZGVmIFNfSUZET09SCisjICBkZWZpbmUgU19JRkRPT1IgMAorI2VuZGlmCisKKyNpZm5kZWYgU19JRlBPUlQKKyMgIGRlZmluZSBTX0lGUE9SVCAwCisjZW5kaWYKKworI2lmbmRlZiBTX0lGV0hUCisjICBkZWZpbmUgU19JRldIVCAwCisjZW5kaWYKKworCisvKiBTX0lTWFhYKCkKKyAqIHB5cG9ydC5oIGRlZmluZXMgU19JU0RJUigpLCBTX0lTUkVHKCkgYW5kIFNfSVNDSFIoKQorICovCisKKyNpZm5kZWYgU19JU0JMSworIyAgZGVmaW5lIFNfSVNCTEsobW9kZSkgKCgobW9kZSkgJiBTX0lGTVQpID09IFNfSUZCTEspCisjZW5kaWYKKworI2lmbmRlZiBTX0lTRklGTworIyAgZGVmaW5lIFNfSVNGSUZPKG1vZGUpICgoKG1vZGUpICYgU19JRk1UKSA9PSBTX0lGSUZPKQorI2VuZGlmCisKKyNpZm5kZWYgU19JU0xOSworIyAgZGVmaW5lIFNfSVNMTksobW9kZSkgKCgobW9kZSkgJiBTX0lGTVQpID09IFNfSUZMTkspCisjZW5kaWYKKworI2lmbmRlZiBTX0lTU09DSworIyAgZGVmaW5lIFNfSVNTT0NLKG1vZGUpICgoKG1vZGUpICYgU19JRk1UKSA9PSBTX0lGU09DSykKKyNlbmRpZgorCisjaWZuZGVmIFNfSVNET09SCisjICBkZWZpbmUgU19JU0RPT1IobW9kZSkgMAorI2VuZGlmCisKKyNpZm5kZWYgU19JU1BPUlQKKyMgIGRlZmluZSBTX0lTUE9SVChtb2RlKSAwCisjZW5kaWYKKworI2lmbmRlZiBTX0lTV0hUCisjICBkZWZpbmUgU19JU1dIVChtb2RlKSAwCisjZW5kaWYKKworCisvKiBTX0kqIGZpbGUgcGVybWlzc2lvbgorICoKKyAqIFRoZSBwZXJtaXNzaW9uIGJpdCB2YWx1ZSBhcmUgZGVmaW5lZCBieSBQT1NJWCBzdGFuZGFyZHMuCisgKi8KKyNpZm5kZWYgU19JU1VJRAorIyAgZGVmaW5lIFNfSVNVSUQgMDQwMDAKKyNlbmRpZgorCisjaWZuZGVmIFNfSVNHSUQKKyMgIGRlZmluZSBTX0lTR0lEIDAyMDAwCisjZW5kaWYKKworLyogd2hhdCBpcyBTX0VORk1UPyAqLworI2lmbmRlZiBTX0VORk1UCisjICBkZWZpbmUgU19FTkZNVCBTX0lTR0lECisjZW5kaWYKKworI2lmbmRlZiBTX0lTVlRYCisjICBkZWZpbmUgU19JU1ZUWCAwMTAwMAorI2VuZGlmCisKKyNpZm5kZWYgU19JUkVBRAorIyAgZGVmaW5lIFNfSVJFQUQgMDA0MDAKKyNlbmRpZgorCisjaWZuZGVmIFNfSVdSSVRFCisjICBkZWZpbmUgU19JV1JJVEUgMDAyMDAKKyNlbmRpZgorCisjaWZuZGVmIFNfSUVYRUMKKyMgIGRlZmluZSBTX0lFWEVDIDAwMTAwCisjZW5kaWYKKworI2lmbmRlZiBTX0lSV1hVCisjICBkZWZpbmUgU19JUldYVSAwMDcwMAorI2VuZGlmCisKKyNpZm5kZWYgU19JUlVTUgorIyAgZGVmaW5lIFNfSVJVU1IgMDA0MDAKKyNlbmRpZgorCisjaWZuZGVmIFNfSVdVU1IKKyMgIGRlZmluZSBTX0lXVVNSIDAwMjAwCisjZW5kaWYKKworI2lmbmRlZiBTX0lYVVNSCisjICBkZWZpbmUgU19JWFVTUiAwMDEwMAorI2VuZGlmCisKKyNpZm5kZWYgU19JUldYRworIyAgZGVmaW5lIFNfSVJXWEcgMDAwNzAKKyNlbmRpZgorCisjaWZuZGVmIFNfSVJHUlAKKyMgIGRlZmluZSBTX0lSR1JQIDAwMDQwCisjZW5kaWYKKworI2lmbmRlZiBTX0lXR1JQCisjICBkZWZpbmUgU19JV0dSUCAwMDAyMAorI2VuZGlmCisKKyNpZm5kZWYgU19JWEdSUAorIyAgZGVmaW5lIFNfSVhHUlAgMDAwMTAKKyNlbmRpZgorCisjaWZuZGVmIFNfSVJXWE8KKyMgIGRlZmluZSBTX0lSV1hPIDAwMDA3CisjZW5kaWYKKworI2lmbmRlZiBTX0lST1RICisjICBkZWZpbmUgU19JUk9USCAwMDAwNAorI2VuZGlmCisKKyNpZm5kZWYgU19JV09USAorIyAgZGVmaW5lIFNfSVdPVEggMDAwMDIKKyNlbmRpZgorCisjaWZuZGVmIFNfSVhPVEgKKyMgIGRlZmluZSBTX0lYT1RIIDAwMDAxCisjZW5kaWYKKworCisvKiBOYW1lcyBmb3IgZmlsZSBmbGFncyAqLworI2lmbmRlZiBVRl9OT0RVTVAKKyMgIGRlZmluZSBVRl9OT0RVTVAgMHgwMDAwMDAwMQorI2VuZGlmCisKKyNpZm5kZWYgVUZfSU1NVVRBQkxFCisjICBkZWZpbmUgVUZfSU1NVVRBQkxFIDB4MDAwMDAwMDIKKyNlbmRpZgorCisjaWZuZGVmIFVGX0FQUEVORAorIyAgZGVmaW5lIFVGX0FQUEVORCAweDAwMDAwMDA0CisjZW5kaWYKKworI2lmbmRlZiBVRl9PUEFRVUUKKyMgIGRlZmluZSBVRl9PUEFRVUUgMHgwMDAwMDAwOAorI2VuZGlmCisKKyNpZm5kZWYgVUZfTk9VTkxJTksKKyMgIGRlZmluZSBVRl9OT1VOTElOSyAweDAwMDAwMDEwCisjZW5kaWYKKworI2lmbmRlZiBVRl9DT01QUkVTU0VECisjICBkZWZpbmUgVUZfQ09NUFJFU1NFRCAweDAwMDAwMDIwCisjZW5kaWYKKworI2lmbmRlZiBVRl9ISURERU4KKyMgIGRlZmluZSBVRl9ISURERU4gMHgwMDAwODAwMAorI2VuZGlmCisKKyNpZm5kZWYgU0ZfQVJDSElWRUQKKyMgIGRlZmluZSBTRl9BUkNISVZFRCAweDAwMDEwMDAwCisjZW5kaWYKKworI2lmbmRlZiBTRl9JTU1VVEFCTEUKKyMgIGRlZmluZSBTRl9JTU1VVEFCTEUgMHgwMDAyMDAwMAorI2VuZGlmCisKKyNpZm5kZWYgU0ZfQVBQRU5ECisjICBkZWZpbmUgU0ZfQVBQRU5EIDB4MDAwNDAwMDAKKyNlbmRpZgorCisjaWZuZGVmIFNGX05PVU5MSU5LCisjICBkZWZpbmUgU0ZfTk9VTkxJTksgMHgwMDEwMDAwMAorI2VuZGlmCisKKyNpZm5kZWYgU0ZfU05BUFNIT1QKKyMgIGRlZmluZSBTRl9TTkFQU0hPVCAweDAwMjAwMDAwCisjZW5kaWYKKworc3RhdGljIG1vZGVfdAorX1B5TG9uZ19Bc01vZGVfdChQeU9iamVjdCAqb3ApCit7CisgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKKyAgICBtb2RlX3QgbW9kZTsKKworICAgIHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG9wKTsKKyAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBsb25nKS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gKG1vZGVfdCktMTsKKworICAgIG1vZGUgPSAobW9kZV90KXZhbHVlOworICAgIGlmICgodW5zaWduZWQgbG9uZyltb2RlICE9IHZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibW9kZSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIChtb2RlX3QpLTE7CisgICAgfQorICAgIHJldHVybiBtb2RlOworfQorCisKKyNkZWZpbmUgc3RhdF9TX0lTRlVOQyhpc2Z1bmMsIGRvYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0XyAjI2lzZnVuYyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvbW9kZSkgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBtb2RlX3QgbW9kZSA9IF9QeUxvbmdfQXNNb2RlX3Qob21vZGUpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgaWYgKChtb2RlID09IChtb2RlX3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICBcCisgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhpc2Z1bmMobW9kZSkpOyAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlEb2NfU1RSVkFSKHN0YXRfICMjIGlzZnVuYyAjIyBfZG9jLCBkb2MpCisKK3N0YXRfU19JU0ZVTkMoU19JU0RJUiwKKyAgICAiU19JU0RJUihtb2RlKSAtPiBib29sXG5cbiIKKyAgICAiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZGlyZWN0b3J5LiIpOworCitzdGF0X1NfSVNGVU5DKFNfSVNDSFIsCisgICAgIlNfSVNDSFIobW9kZSkgLT4gYm9vbFxuXG4iCisgICAgIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGNoYXJhY3RlciBzcGVjaWFsIGRldmljZSBmaWxlLiIpOworCitzdGF0X1NfSVNGVU5DKFNfSVNCTEssCisgICAgIlNfSVNCTEsobW9kZSkgLT4gYm9vbFxuXG4iCisgICAgIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlIGZpbGUuIik7CisKK3N0YXRfU19JU0ZVTkMoU19JU1JFRywKKyAgICAiU19JU1JFRyhtb2RlKSAtPiBib29sXG5cbiIKKyAgICAiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgcmVndWxhciBmaWxlLiIpOworCitzdGF0X1NfSVNGVU5DKFNfSVNGSUZPLAorICAgICJTX0lTRklGTyhtb2RlKSAtPiBib29sXG5cbiIKKyAgICAiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgRklGTyAobmFtZWQgcGlwZSkuIik7CisKK3N0YXRfU19JU0ZVTkMoU19JU0xOSywKKyAgICAiU19JU0xOSyhtb2RlKSAtPiBib29sXG5cbiIKKyAgICAiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgc3ltYm9saWMgbGluay4iKTsKKworc3RhdF9TX0lTRlVOQyhTX0lTU09DSywKKyAgICAiU19JU1NPQ0sobW9kZSkgLT4gYm9vbFxuXG4iCisgICAgIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHNvY2tldC4iKTsKKworc3RhdF9TX0lTRlVOQyhTX0lTRE9PUiwKKyAgICAiU19JU0RPT1IobW9kZSkgLT4gYm9vbFxuXG4iCisgICAgIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGRvb3IuIik7CisKK3N0YXRfU19JU0ZVTkMoU19JU1BPUlQsCisgICAgIlNfSVNQT1JUKG1vZGUpIC0+IGJvb2xcblxuIgorICAgICJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYW4gZXZlbnQgcG9ydC4iKTsKKworc3RhdF9TX0lTRlVOQyhTX0lTV0hULAorICAgICJTX0lTV0hUKG1vZGUpIC0+IGJvb2xcblxuIgorICAgICJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSB3aGl0ZW91dC4iKTsKKworCitQeURvY19TVFJWQVIoc3RhdF9TX0lNT0RFX2RvYywKKyJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgY2FuIGJlIHNldCBieSBvcy5jaG1vZCgpLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3RhdF9TX0lNT0RFKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb21vZGUpCit7CisgICAgbW9kZV90IG1vZGUgPSBfUHlMb25nX0FzTW9kZV90KG9tb2RlKTsKKyAgICBpZiAoKG1vZGUgPT0gKG1vZGVfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG1vZGUgJiBTX0lNT0RFKTsKK30KKworCitQeURvY19TVFJWQVIoc3RhdF9TX0lGTVRfZG9jLAorIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBkZXNjcmliZXMgdGhlIGZpbGUgdHlwZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0YXRfU19JRk1UKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb21vZGUpCit7CisgICAgbW9kZV90IG1vZGUgPSBfUHlMb25nX0FzTW9kZV90KG9tb2RlKTsKKyAgICBpZiAoKG1vZGUgPT0gKG1vZGVfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG1vZGUgJiBTX0lGTVQpOworfQorCisvKiBmaWxlIHR5cGUgY2hhcnMgYWNjb3JkaW5nIHRvCisgICBodHRwOi8vZW4ud2lraWJvb2tzLm9yZy93aWtpL0NfUHJvZ3JhbW1pbmcvUE9TSVhfUmVmZXJlbmNlL3N5cy9zdGF0LmggKi8KKworc3RhdGljIGNoYXIKK2ZpbGV0eXBlKG1vZGVfdCBtb2RlKQoreworICAgIC8qIGNvbW1vbiBjYXNlcyBmaXJzdCAqLworICAgIGlmIChTX0lTUkVHKG1vZGUpKSAgcmV0dXJuICctJzsKKyAgICBpZiAoU19JU0RJUihtb2RlKSkgIHJldHVybiAnZCc7CisgICAgaWYgKFNfSVNMTksobW9kZSkpICByZXR1cm4gJ2wnOworICAgIC8qIHNwZWNpYWwgZmlsZXMgKi8KKyAgICBpZiAoU19JU0JMSyhtb2RlKSkgIHJldHVybiAnYic7CisgICAgaWYgKFNfSVNDSFIobW9kZSkpICByZXR1cm4gJ2MnOworICAgIGlmIChTX0lTRklGTyhtb2RlKSkgcmV0dXJuICdwJzsKKyAgICBpZiAoU19JU1NPQ0sobW9kZSkpIHJldHVybiAncyc7CisgICAgLyogbm9uLXN0YW5kYXJkIHR5cGVzICovCisgICAgaWYgKFNfSVNET09SKG1vZGUpKSByZXR1cm4gJ0QnOworICAgIGlmIChTX0lTUE9SVChtb2RlKSkgcmV0dXJuICdQJzsKKyAgICBpZiAoU19JU1dIVChtb2RlKSkgIHJldHVybiAndyc7CisgICAgLyogdW5rbm93biAqLworICAgIHJldHVybiAnPyc7Cit9CisKK3N0YXRpYyB2b2lkCitmaWxlcGVybShtb2RlX3QgbW9kZSwgY2hhciAqYnVmKQoreworICAgIGJ1ZlswXSA9IG1vZGUgJiBTX0lSVVNSID8gJ3InIDogJy0nOworICAgIGJ1ZlsxXSA9IG1vZGUgJiBTX0lXVVNSID8gJ3cnIDogJy0nOworICAgIGlmIChtb2RlICYgU19JU1VJRCkgeworICAgICAgICBidWZbMl0gPSBtb2RlICYgU19JWFVTUiA/ICdzJyA6ICdTJzsKKyAgICB9IGVsc2UgeworICAgICAgICBidWZbMl0gPSBtb2RlICYgU19JWFVTUiA/ICd4JyA6ICctJzsKKyAgICB9CisgICAgYnVmWzNdID0gbW9kZSAmIFNfSVJHUlAgPyAncicgOiAnLSc7CisgICAgYnVmWzRdID0gbW9kZSAmIFNfSVdHUlAgPyAndycgOiAnLSc7CisgICAgaWYgKG1vZGUgJiBTX0lTR0lEKSB7CisgICAgICAgIGJ1Zls1XSA9IG1vZGUgJiBTX0lYR1JQID8gJ3MnIDogJ1MnOworICAgIH0gZWxzZSB7CisgICAgICAgIGJ1Zls1XSA9IG1vZGUgJiBTX0lYR1JQID8gJ3gnIDogJy0nOworICAgIH0KKyAgICBidWZbNl0gPSBtb2RlICYgU19JUk9USCA/ICdyJyA6ICctJzsKKyAgICBidWZbN10gPSBtb2RlICYgU19JV09USCA/ICd3JyA6ICctJzsKKyAgICBpZiAobW9kZSAmIFNfSVNWVFgpIHsKKyAgICAgICAgYnVmWzhdID0gbW9kZSAmIFNfSVhPVEggPyAndCcgOiAnVCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnVmWzhdID0gbW9kZSAmIFNfSVhPVEggPyAneCcgOiAnLSc7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoc3RhdF9maWxlbW9kZV9kb2MsCisiQ29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mIHRoZSBmb3JtICctcnd4cnd4cnd4JyIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3RhdF9maWxlbW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9tb2RlKQoreworICAgIGNoYXIgYnVmWzEwXTsKKyAgICBtb2RlX3QgbW9kZTsKKworICAgIG1vZGUgPSBfUHlMb25nX0FzTW9kZV90KG9tb2RlKTsKKyAgICBpZiAoKG1vZGUgPT0gKG1vZGVfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBidWZbMF0gPSBmaWxldHlwZShtb2RlKTsKKyAgICBmaWxlcGVybShtb2RlLCAmYnVmWzFdKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZiwgMTApOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBzdGF0X21ldGhvZHNbXSA9IHsKKyAgICB7IlNfSVNESVIiLCAgICAgICAgIHN0YXRfU19JU0RJUiwgIE1FVEhfTywgc3RhdF9TX0lTRElSX2RvY30sCisgICAgeyJTX0lTQ0hSIiwgICAgICAgICBzdGF0X1NfSVNDSFIsICBNRVRIX08sIHN0YXRfU19JU0NIUl9kb2N9LAorICAgIHsiU19JU0JMSyIsICAgICAgICAgc3RhdF9TX0lTQkxLLCAgTUVUSF9PLCBzdGF0X1NfSVNCTEtfZG9jfSwKKyAgICB7IlNfSVNSRUciLCAgICAgICAgIHN0YXRfU19JU1JFRywgIE1FVEhfTywgc3RhdF9TX0lTUkVHX2RvY30sCisgICAgeyJTX0lTRklGTyIsICAgICAgICBzdGF0X1NfSVNGSUZPLCBNRVRIX08sIHN0YXRfU19JU0ZJRk9fZG9jfSwKKyAgICB7IlNfSVNMTksiLCAgICAgICAgIHN0YXRfU19JU0xOSywgIE1FVEhfTywgc3RhdF9TX0lTTE5LX2RvY30sCisgICAgeyJTX0lTU09DSyIsICAgICAgICBzdGF0X1NfSVNTT0NLLCBNRVRIX08sIHN0YXRfU19JU1NPQ0tfZG9jfSwKKyAgICB7IlNfSVNET09SIiwgICAgICAgIHN0YXRfU19JU0RPT1IsIE1FVEhfTywgc3RhdF9TX0lTRE9PUl9kb2N9LAorICAgIHsiU19JU1BPUlQiLCAgICAgICAgc3RhdF9TX0lTUE9SVCwgTUVUSF9PLCBzdGF0X1NfSVNQT1JUX2RvY30sCisgICAgeyJTX0lTV0hUIiwgICAgICAgICBzdGF0X1NfSVNXSFQsICBNRVRIX08sIHN0YXRfU19JU1dIVF9kb2N9LAorICAgIHsiU19JTU9ERSIsICAgICAgICAgc3RhdF9TX0lNT0RFLCAgTUVUSF9PLCBzdGF0X1NfSU1PREVfZG9jfSwKKyAgICB7IlNfSUZNVCIsICAgICAgICAgIHN0YXRfU19JRk1ULCAgIE1FVEhfTywgc3RhdF9TX0lGTVRfZG9jfSwKKyAgICB7ImZpbGVtb2RlIiwgICAgICAgIHN0YXRfZmlsZW1vZGUsIE1FVEhfTywgc3RhdF9maWxlbW9kZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAorIlNfSUZNVF86IGZpbGUgdHlwZSBiaXRzXG5cCitTX0lGRElSOiBkaXJlY3RvcnlcblwKK1NfSUZDSFI6IGNoYXJhY3RlciBkZXZpY2VcblwKK1NfSUZCTEs6IGJsb2NrIGRldmljZVxuXAorU19JRlJFRzogcmVndWxhciBmaWxlXG5cCitTX0lGSUZPOiBmaWZvIChuYW1lZCBwaXBlKVxuXAorU19JRkxOSzogc3ltYm9saWMgbGlua1xuXAorU19JRlNPQ0s6IHNvY2tldCBmaWxlXG5cCitTX0lGRE9PUjogZG9vclxuXAorU19JRlBPUlQ6IGV2ZW50IHBvcnRcblwKK1NfSUZXSFQ6IHdoaXRlb3V0XG5cCitcbiIKKworIlNfSVNVSUQ6IHNldCBVSUQgYml0XG5cCitTX0lTR0lEOiBzZXQgR0lEIGJpdFxuXAorU19FTkZNVDogZmlsZSBsb2NraW5nIGVuZm9yY2VtZW50XG5cCitTX0lTVlRYOiBzdGlja3kgYml0XG5cCitTX0lSRUFEOiBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVJVU1JcblwKK1NfSVdSSVRFOiBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVdVU1JcblwKK1NfSUVYRUM6IFVuaXggVjcgc3lub255bSBmb3IgU19JWFVTUlxuXAorU19JUldYVTogbWFzayBmb3Igb3duZXIgcGVybWlzc2lvbnNcblwKK1NfSVJVU1I6IHJlYWQgYnkgb3duZXJcblwKK1NfSVdVU1I6IHdyaXRlIGJ5IG93bmVyXG5cCitTX0lYVVNSOiBleGVjdXRlIGJ5IG93bmVyXG5cCitTX0lSV1hHOiBtYXNrIGZvciBncm91cCBwZXJtaXNzaW9uc1xuXAorU19JUkdSUDogcmVhZCBieSBncm91cFxuXAorU19JV0dSUDogd3JpdGUgYnkgZ3JvdXBcblwKK1NfSVhHUlA6IGV4ZWN1dGUgYnkgZ3JvdXBcblwKK1NfSVJXWE86IG1hc2sgZm9yIG90aGVycyAobm90IGluIGdyb3VwKSBwZXJtaXNzaW9uc1xuXAorU19JUk9USDogcmVhZCBieSBvdGhlcnNcblwKK1NfSVdPVEg6IHdyaXRlIGJ5IG90aGVyc1xuXAorU19JWE9USDogZXhlY3V0ZSBieSBvdGhlcnNcblwKK1xuIgorCisiVUZfTk9EVU1QOiBkbyBub3QgZHVtcCBmaWxlXG5cCitVRl9JTU1VVEFCTEU6IGZpbGUgbWF5IG5vdCBiZSBjaGFuZ2VkXG5cCitVRl9BUFBFTkQ6IGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG9cblwKK1VGX09QQVFVRTogZGlyZWN0b3J5IGlzIG9wYXF1ZSB3aGVuIHZpZXdlZCB0aHJvdWdoIGEgdW5pb24gc3RhY2tcblwKK1VGX05PVU5MSU5LOiBmaWxlIG1heSBub3QgYmUgcmVuYW1lZCBvciBkZWxldGVkXG5cCitVRl9DT01QUkVTU0VEOiBPUyBYOiBmaWxlIGlzIGhmcy1jb21wcmVzc2VkXG5cCitVRl9ISURERU46IE9TIFg6IGZpbGUgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWRcblwKK1NGX0FSQ0hJVkVEOiBmaWxlIG1heSBiZSBhcmNoaXZlZFxuXAorU0ZfSU1NVVRBQkxFOiBmaWxlIG1heSBub3QgYmUgY2hhbmdlZFxuXAorU0ZfQVBQRU5EOiBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvXG5cCitTRl9OT1VOTElOSzogZmlsZSBtYXkgbm90IGJlIHJlbmFtZWQgb3IgZGVsZXRlZFxuXAorU0ZfU05BUFNIT1Q6IGZpbGUgaXMgYSBzbmFwc2hvdCBmaWxlXG5cCitcbiIKKworIlNUX01PREVcblwKK1NUX0lOT1xuXAorU1RfREVWXG5cCitTVF9OTElOS1xuXAorU1RfVUlEXG5cCitTVF9HSURcblwKK1NUX1NJWkVcblwKK1NUX0FUSU1FXG5cCitTVF9NVElNRVxuXAorU1RfQ1RJTUVcblwKKyIpOworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc3RhdG1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl9zdGF0IiwKKyAgICBtb2R1bGVfZG9jLAorICAgIC0xLAorICAgIHN0YXRfbWV0aG9kcywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19zdGF0KHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmc3RhdG1vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JRkRJUikpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lGQ0hSKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSUZCTEspKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JRlJFRykpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lGSUZPKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSUZMTkspKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JRlNPQ0spKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JRkRPT1IpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JRlBPUlQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JRldIVCkpIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSVNVSUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JU0dJRCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lTVlRYKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfRU5GTVQpKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lSRUFEKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSVdSSVRFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSUVYRUMpKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lSV1hVKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSVJVU1IpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JV1VTUikpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lYVVNSKSkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JUldYRykpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lSR1JQKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSVdHUlApKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JWEdSUCkpIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSVJXWE8pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU19JUk9USCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTX0lXT1RIKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNfSVhPVEgpKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBVRl9OT0RVTVApKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVUZfSU1NVVRBQkxFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFVGX0FQUEVORCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBVRl9PUEFRVUUpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVUZfTk9VTkxJTkspKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVUZfQ09NUFJFU1NFRCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBVRl9ISURERU4pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0ZfQVJDSElWRUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0ZfSU1NVVRBQkxFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNGX0FQUEVORCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTRl9OT1VOTElOSykpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTRl9TTkFQU0hPVCkpIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9NT0RFIiwgMCkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1RfSU5PIiwgMSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1RfREVWIiwgMikpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1RfTkxJTksiLCAzKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9VSUQiLCA0KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9HSUQiLCA1KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9TSVpFIiwgNikpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1RfQVRJTUUiLCA3KSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9NVElNRSIsIDgpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNUX0NUSU1FIiwgOSkpIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIG07Cit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdHJ1Y3QuYyBiL01vZHVsZXMvX3N0cnVjdC5jCmluZGV4IDI4NDg2MTQuLjU4NDhiMTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX3N0cnVjdC5jCkBAIC0yNiw2ICsyNiw3IEBACiAgICAgY29uc3Qgc3RydWN0IF9mb3JtYXRkZWYgKmZtdGRlZjsKICAgICBQeV9zc2l6ZV90IG9mZnNldDsKICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfc3NpemVfdCByZXBlYXQ7CiB9IGZvcm1hdGNvZGU7CiAKIC8qIFN0cnVjdCBvYmplY3QgaW50ZXJmYWNlICovCkBAIC0xMTk5LDEyICsxMjAwLDExIEBACiAgICAgY2FzZSAnISc6IC8qIE5ldHdvcmsgYnl0ZSBvcmRlciBpcyBiaWctZW5kaWFuICovCiAgICAgICAgIHJldHVybiBiaWdlbmRpYW5fdGFibGU7CiAgICAgY2FzZSAnPSc6IHsgLyogSG9zdCBieXRlIG9yZGVyIC0tIGRpZmZlcmVudCBmcm9tIG5hdGl2ZSBpbiBhbGlnbm1lbnQhICovCi0gICAgICAgIGludCBuID0gMTsKLSAgICAgICAgY2hhciAqcCA9IChjaGFyICopICZuOwotICAgICAgICBpZiAoKnAgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBsaWxlbmRpYW5fdGFibGU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBiaWdlbmRpYW5fdGFibGU7CisjaWYgUFlfTElUVExFX0VORElBTgorICAgICAgICByZXR1cm4gbGlsZW5kaWFuX3RhYmxlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJpZ2VuZGlhbl90YWJsZTsKKyNlbmRpZgogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICAtLSpwZm10OyAvKiBCYWNrIG91dCBvZiBwb2ludGVyIGluY3JlbWVudCAqLwpAQCAtMTI0OCw2ICsxMjQ4LDkgQEAKICAgICByZXR1cm4gc2l6ZTsKIH0KIAorLyoKKyAqIFN0cnVjdCBvYmplY3QgaW1wbGVtZW50YXRpb24uCisgKi8KIAogLyogY2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgZm9ybWF0IHN0cmluZyAqLwogCkBAIC0xMjYxLDcgKzEyNjQsNyBAQAogICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgY29uc3QgY2hhciAqZm10OwogICAgIGNoYXIgYzsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGxlbiwgbnVtLCBpdGVtc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGxlbiwgbmNvZGVzLCBudW0sIGl0ZW1zaXplOwogCiAgICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+c19mb3JtYXQpOwogCkBAIC0xMjcwLDYgKzEyNzMsNyBAQAogICAgIHMgPSBmbXQ7CiAgICAgc2l6ZSA9IDA7CiAgICAgbGVuID0gMDsKKyAgICBuY29kZXMgPSAwOwogICAgIHdoaWxlICgoYyA9ICpzKyspICE9ICdcMCcpIHsKICAgICAgICAgaWYgKFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soYykpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjk5LDkgKzEzMDMsOSBAQAogCiAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgY2FzZSAncyc6IC8qIGZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAgY2FzZSAncCc6IGxlbisrOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3AnOiBsZW4rKzsgbmNvZGVzKys7IGJyZWFrOwogICAgICAgICAgICAgY2FzZSAneCc6IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDogbGVuICs9IG51bTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBsZW4gKz0gbnVtOyBpZiAobnVtKSBuY29kZXMrKzsgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpdGVtc2l6ZSA9IGUtPnNpemU7CkBAIC0xMzE2LDE0ICsxMzIwLDE0IEBACiAgICAgfQogCiAgICAgLyogY2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgaWYgKChsZW4gKyAxKSA+IChQWV9TU0laRV9UX01BWCAvIHNpemVvZihmb3JtYXRjb2RlKSkpIHsKKyAgICBpZiAoKG5jb2RlcyArIDEpID4gKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKGZvcm1hdGNvZGUpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgc2VsZi0+c19zaXplID0gc2l6ZTsKICAgICBzZWxmLT5zX2xlbiA9IGxlbjsKLSAgICBjb2RlcyA9IFB5TWVtX01BTExPQygobGVuICsgMSkgKiBzaXplb2YoZm9ybWF0Y29kZSkpOworICAgIGNvZGVzID0gUHlNZW1fTUFMTE9DKChuY29kZXMgKyAxKSAqIHNpemVvZihmb3JtYXRjb2RlKSk7CiAgICAgaWYgKGNvZGVzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTM1NSwyMyArMTM1OSwyNCBAQAogICAgICAgICAgICAgY29kZXMtPm9mZnNldCA9IHNpemU7CiAgICAgICAgICAgICBjb2Rlcy0+c2l6ZSA9IG51bTsKICAgICAgICAgICAgIGNvZGVzLT5mbXRkZWYgPSBlOworICAgICAgICAgICAgY29kZXMtPnJlcGVhdCA9IDE7CiAgICAgICAgICAgICBjb2RlcysrOwogICAgICAgICAgICAgc2l6ZSArPSBudW07CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAneCcpIHsKICAgICAgICAgICAgIHNpemUgKz0gbnVtOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2hpbGUgKC0tbnVtID49IDApIHsKLSAgICAgICAgICAgICAgICBjb2Rlcy0+b2Zmc2V0ID0gc2l6ZTsKLSAgICAgICAgICAgICAgICBjb2Rlcy0+c2l6ZSA9IGUtPnNpemU7Ci0gICAgICAgICAgICAgICAgY29kZXMtPmZtdGRlZiA9IGU7Ci0gICAgICAgICAgICAgICAgY29kZXMrKzsKLSAgICAgICAgICAgICAgICBzaXplICs9IGUtPnNpemU7Ci0gICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobnVtKSB7CisgICAgICAgICAgICBjb2Rlcy0+b2Zmc2V0ID0gc2l6ZTsKKyAgICAgICAgICAgIGNvZGVzLT5zaXplID0gZS0+c2l6ZTsKKyAgICAgICAgICAgIGNvZGVzLT5mbXRkZWYgPSBlOworICAgICAgICAgICAgY29kZXMtPnJlcGVhdCA9IG51bTsKKyAgICAgICAgICAgIGNvZGVzKys7CisgICAgICAgICAgICBzaXplICs9IGUtPnNpemUgKiBudW07CiAgICAgICAgIH0KICAgICB9CiAgICAgY29kZXMtPmZtdGRlZiA9IE5VTEw7CiAgICAgY29kZXMtPm9mZnNldCA9IHNpemU7CiAgICAgY29kZXMtPnNpemUgPSAwOworICAgIGNvZGVzLT5yZXBlYXQgPSAwOwogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTE0NjAsMjIgKzE0NjUsMjYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGNvZGUgPSBzb3NlbGYtPnNfY29kZXM7IGNvZGUtPmZtdGRlZiAhPSBOVUxMOyBjb2RlKyspIHsKLSAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgIGNvbnN0IGZvcm1hdGRlZiAqZSA9IGNvZGUtPmZtdGRlZjsKICAgICAgICAgY29uc3QgY2hhciAqcmVzID0gc3RhcnRmcm9tICsgY29kZS0+b2Zmc2V0OwotICAgICAgICBpZiAoZS0+Zm9ybWF0ID09ICdzJykgewotICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocmVzLCBjb2RlLT5zaXplKTsKLSAgICAgICAgfSBlbHNlIGlmIChlLT5mb3JtYXQgPT0gJ3AnKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSAqKHVuc2lnbmVkIGNoYXIqKXJlczsKLSAgICAgICAgICAgIGlmIChuID49IGNvZGUtPnNpemUpCi0gICAgICAgICAgICAgICAgbiA9IGNvZGUtPnNpemUgLSAxOwotICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocmVzICsgMSwgbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ID0gZS0+dW5wYWNrKHJlcywgZSk7CisgICAgICAgIFB5X3NzaXplX3QgaiA9IGNvZGUtPnJlcGVhdDsKKyAgICAgICAgd2hpbGUgKGotLSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnY7CisgICAgICAgICAgICBpZiAoZS0+Zm9ybWF0ID09ICdzJykgeworICAgICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHJlcywgY29kZS0+c2l6ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGUtPmZvcm1hdCA9PSAncCcpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSAqKHVuc2lnbmVkIGNoYXIqKXJlczsKKyAgICAgICAgICAgICAgICBpZiAobiA+PSBjb2RlLT5zaXplKQorICAgICAgICAgICAgICAgICAgICBuID0gY29kZS0+c2l6ZSAtIDE7CisgICAgICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocmVzICsgMSwgbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHYgPSBlLT51bnBhY2socmVzLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGkrKywgdik7CisgICAgICAgICAgICByZXMgKz0gY29kZS0+c2l6ZTsKICAgICAgICAgfQotICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSsrLCB2KTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTU1Nyw2ICsxNTY2LDE0MiBAQAogfQogCiAKKy8qIFVucGFjayBpdGVyYXRvciB0eXBlICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlTdHJ1Y3RPYmplY3QgKnNvOworICAgIFB5X2J1ZmZlciBidWY7CisgICAgUHlfc3NpemVfdCBpbmRleDsKK30gdW5wYWNraXRlcm9iamVjdDsKKworc3RhdGljIHZvaWQKK3VucGFja2l0ZXJfZGVhbGxvYyh1bnBhY2tpdGVyb2JqZWN0ICpzZWxmKQoreworICAgIFB5X1hERUNSRUYoc2VsZi0+c28pOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPmJ1Zik7CisgICAgUHlPYmplY3RfR0NfRGVsKHNlbGYpOworfQorCitzdGF0aWMgaW50Cit1bnBhY2tpdGVyX3RyYXZlcnNlKHVucGFja2l0ZXJvYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnNvKTsKKyAgICBQeV9WSVNJVChzZWxmLT5idWYub2JqKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja2l0ZXJfbGVuKHVucGFja2l0ZXJvYmplY3QgKnNlbGYpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaWYgKHNlbGYtPnNvID09IE5VTEwpCisgICAgICAgIGxlbiA9IDA7CisgICAgZWxzZQorICAgICAgICBsZW4gPSAoc2VsZi0+YnVmLmxlbiAtIHNlbGYtPmluZGV4KSAvIHNlbGYtPnNvLT5zX3NpemU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgdW5wYWNraXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pIHVucGFja2l0ZXJfbGVuLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tpdGVyX2l0ZXJuZXh0KHVucGFja2l0ZXJvYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpZiAoc2VsZi0+c28gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNlbGYtPmluZGV4ID49IHNlbGYtPmJ1Zi5sZW4pIHsKKyAgICAgICAgLyogSXRlcmF0b3IgZXhoYXVzdGVkICovCisgICAgICAgIFB5X0NMRUFSKHNlbGYtPnNvKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZi0+YnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChzZWxmLT5pbmRleCArIHNlbGYtPnNvLT5zX3NpemUgPD0gc2VsZi0+YnVmLmxlbik7CisgICAgcmVzdWx0ID0gc191bnBhY2tfaW50ZXJuYWwoc2VsZi0+c28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKSBzZWxmLT5idWYuYnVmICsgc2VsZi0+aW5kZXgpOworICAgIHNlbGYtPmluZGV4ICs9IHNlbGYtPnNvLT5zX3NpemU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlUeXBlT2JqZWN0IHVucGFja2l0ZXJfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJ1bnBhY2tfaXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZih1bnBhY2tpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKXVucGFja2l0ZXJfZGVhbGxvYywgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl1bnBhY2tpdGVyX3RyYXZlcnNlLCAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpdW5wYWNraXRlcl9pdGVybmV4dCwgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB1bnBhY2tpdGVyX21ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KK307CisKK1B5RG9jX1NUUlZBUihzX2l0ZXJfdW5wYWNrX19kb2NfXywKKyJTLml0ZXJfdW5wYWNrKGJ1ZmZlcikgLT4gaXRlcmF0b3IodjEsIHYyLCAuLi4pXG5cCitcblwKK1JldHVybiBhbiBpdGVyYXRvciB5aWVsZGluZyB0dXBsZXMgdW5wYWNrZWQgZnJvbSB0aGUgZ2l2ZW4gYnl0ZXNcblwKK3NvdXJjZSwgbGlrZSBhIHJlcGVhdGVkIGludm9jYXRpb24gb2YgdW5wYWNrX2Zyb20oKS4gIFJlcXVpcmVzXG5cCit0aGF0IHRoZSBieXRlcyBsZW5ndGggYmUgYSBtdWx0aXBsZSBvZiB0aGUgc3RydWN0IHNpemUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzX2l0ZXJfdW5wYWNrKFB5T2JqZWN0ICpfc28sIFB5T2JqZWN0ICppbnB1dCkKK3sKKyAgICBQeVN0cnVjdE9iamVjdCAqc28gPSAoUHlTdHJ1Y3RPYmplY3QgKikgX3NvOworICAgIHVucGFja2l0ZXJvYmplY3QgKnNlbGY7CisKKyAgICBhc3NlcnQoUHlTdHJ1Y3RfQ2hlY2soX3NvKSk7CisgICAgYXNzZXJ0KHNvLT5zX2NvZGVzICE9IE5VTEwpOworCisgICAgaWYgKHNvLT5zX3NpemUgPT0gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGl0ZXJhdGl2ZWx5IHVucGFjayB3aXRoIGEgc3RydWN0IG9mIGxlbmd0aCAwIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYgPSAodW5wYWNraXRlcm9iamVjdCAqKSBQeVR5cGVfR2VuZXJpY0FsbG9jKCZ1bnBhY2tpdGVyX3R5cGUsIDApOworICAgIGlmIChzZWxmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihpbnB1dCwgJnNlbGYtPmJ1ZiwgUHlCVUZfU0lNUExFKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNlbGYtPmJ1Zi5sZW4gJSBzby0+c19zaXplICE9IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdGl2ZSB1bnBhY2tpbmcgcmVxdWlyZXMgYSBieXRlcyBsZW5ndGggIgorICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIG9mICV6ZCIsCisgICAgICAgICAgICAgICAgICAgICBzby0+c19zaXplKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKHNvKTsKKyAgICBzZWxmLT5zbyA9IHNvOworICAgIHNlbGYtPmluZGV4ID0gMDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Cit9CisKKwogLyoKICAqIEd1dHMgb2YgdGhlIHBhY2sgZnVuY3Rpb24uCiAgKgpAQCAtMTU3OCw2MiArMTcyMyw2NyBAQAogICAgIG1lbXNldChidWYsICdcMCcsIHNvc2VsZi0+c19zaXplKTsKICAgICBpID0gb2Zmc2V0OwogICAgIGZvciAoY29kZSA9IHNvc2VsZi0+c19jb2RlczsgY29kZS0+Zm10ZGVmICE9IE5VTEw7IGNvZGUrKykgewotICAgICAgICBQeV9zc2l6ZV90IG47Ci0gICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKyspOwogICAgICAgICBjb25zdCBmb3JtYXRkZWYgKmUgPSBjb2RlLT5mbXRkZWY7CiAgICAgICAgIGNoYXIgKnJlcyA9IGJ1ZiArIGNvZGUtPm9mZnNldDsKLSAgICAgICAgaWYgKGUtPmZvcm1hdCA9PSAncycpIHsKLSAgICAgICAgICAgIGludCBpc3N0cmluZzsKLSAgICAgICAgICAgIHZvaWQgKnA7Ci0gICAgICAgICAgICBpc3N0cmluZyA9IFB5Qnl0ZXNfQ2hlY2sodik7Ci0gICAgICAgICAgICBpZiAoIWlzc3RyaW5nICYmICFQeUJ5dGVBcnJheV9DaGVjayh2KSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciAncycgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCIpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc3N0cmluZykgewotICAgICAgICAgICAgICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOwotICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRSh2KTsKLSAgICAgICAgICAgICAgICBwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG4gPiBjb2RlLT5zaXplKQotICAgICAgICAgICAgICAgIG4gPSBjb2RlLT5zaXplOwotICAgICAgICAgICAgaWYgKG4gPiAwKQotICAgICAgICAgICAgICAgIG1lbWNweShyZXMsIHAsIG4pOwotICAgICAgICB9IGVsc2UgaWYgKGUtPmZvcm1hdCA9PSAncCcpIHsKLSAgICAgICAgICAgIGludCBpc3N0cmluZzsKLSAgICAgICAgICAgIHZvaWQgKnA7Ci0gICAgICAgICAgICBpc3N0cmluZyA9IFB5Qnl0ZXNfQ2hlY2sodik7Ci0gICAgICAgICAgICBpZiAoIWlzc3RyaW5nICYmICFQeUJ5dGVBcnJheV9DaGVjayh2KSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciAncCcgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCIpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc3N0cmluZykgewotICAgICAgICAgICAgICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOwotICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRSh2KTsKLSAgICAgICAgICAgICAgICBwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG4gPiAoY29kZS0+c2l6ZSAtIDEpKQotICAgICAgICAgICAgICAgIG4gPSBjb2RlLT5zaXplIC0gMTsKLSAgICAgICAgICAgIGlmIChuID4gMCkKLSAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgMSwgcCwgbik7Ci0gICAgICAgICAgICBpZiAobiA+IDI1NSkKLSAgICAgICAgICAgICAgICBuID0gMjU1OwotICAgICAgICAgICAgKnJlcyA9IFB5X1NBRkVfRE9XTkNBU1QobiwgUHlfc3NpemVfdCwgdW5zaWduZWQgY2hhcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZS0+cGFjayhyZXMsIHYsIGUpIDwgMCkgewotICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2sodikgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgUHlfc3NpemVfdCBqID0gY29kZS0+cmVwZWF0OworICAgICAgICB3aGlsZSAoai0tKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSsrKTsKKyAgICAgICAgICAgIGlmIChlLT5mb3JtYXQgPT0gJ3MnKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuOworICAgICAgICAgICAgICAgIGludCBpc3N0cmluZzsKKyAgICAgICAgICAgICAgICB2b2lkICpwOworICAgICAgICAgICAgICAgIGlzc3RyaW5nID0gUHlCeXRlc19DaGVjayh2KTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzc3RyaW5nICYmICFQeUJ5dGVBcnJheV9DaGVjayh2KSkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyB0b28gbGFyZ2UgdG8gY29udmVydCB0byBpbnQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yICdzJyBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzc3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOworICAgICAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUodik7CisgICAgICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcodik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChuID4gY29kZS0+c2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgbiA9IGNvZGUtPnNpemU7CisgICAgICAgICAgICAgICAgaWYgKG4gPiAwKQorICAgICAgICAgICAgICAgICAgICBtZW1jcHkocmVzLCBwLCBuKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZS0+Zm9ybWF0ID09ICdwJykgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbjsKKyAgICAgICAgICAgICAgICBpbnQgaXNzdHJpbmc7CisgICAgICAgICAgICAgICAgdm9pZCAqcDsKKyAgICAgICAgICAgICAgICBpc3N0cmluZyA9IFB5Qnl0ZXNfQ2hlY2sodik7CisgICAgICAgICAgICAgICAgaWYgKCFpc3N0cmluZyAmJiAhUHlCeXRlQXJyYXlfQ2hlY2sodikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciAncCcgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc3N0cmluZykgeworICAgICAgICAgICAgICAgICAgICBuID0gUHlCeXRlc19HRVRfU0laRSh2KTsKKyAgICAgICAgICAgICAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHYpOworICAgICAgICAgICAgICAgICAgICBwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobiA+IChjb2RlLT5zaXplIC0gMSkpCisgICAgICAgICAgICAgICAgICAgIG4gPSBjb2RlLT5zaXplIC0gMTsKKyAgICAgICAgICAgICAgICBpZiAobiA+IDApCisgICAgICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyAxLCBwLCBuKTsKKyAgICAgICAgICAgICAgICBpZiAobiA+IDI1NSkKKyAgICAgICAgICAgICAgICAgICAgbiA9IDI1NTsKKyAgICAgICAgICAgICAgICAqcmVzID0gUHlfU0FGRV9ET1dOQ0FTVChuLCBQeV9zc2l6ZV90LCB1bnNpZ25lZCBjaGFyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGUtPnBhY2socmVzLCB2LCBlKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb25nIHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIGludCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzICs9IGNvZGUtPnNpemU7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE3NjksMTQgKzE5MTksMTggQEAKIHNfc2l6ZW9mKFB5U3RydWN0T2JqZWN0ICpzZWxmLCB2b2lkICp1bnVzZWQpCiB7CiAgICAgUHlfc3NpemVfdCBzaXplOworICAgIGZvcm1hdGNvZGUgKmNvZGU7CiAKLSAgICBzaXplID0gc2l6ZW9mKFB5U3RydWN0T2JqZWN0KSArIHNpemVvZihmb3JtYXRjb2RlKSAqIChzZWxmLT5zX2xlbiArIDEpOworICAgIHNpemUgPSBzaXplb2YoUHlTdHJ1Y3RPYmplY3QpICsgc2l6ZW9mKGZvcm1hdGNvZGUpOworICAgIGZvciAoY29kZSA9IHNlbGYtPnNfY29kZXM7IGNvZGUtPmZtdGRlZiAhPSBOVUxMOyBjb2RlKyspCisgICAgICAgIHNpemUgKz0gc2l6ZW9mKGZvcm1hdGNvZGUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgc19tZXRob2RzW10gPSB7CisgICAgeyJpdGVyX3VucGFjayIsICAgICBzX2l0ZXJfdW5wYWNrLCAgTUVUSF9PLCBzX2l0ZXJfdW5wYWNrX19kb2NfX30sCiAgICAgeyJwYWNrIiwgICAgICAgICAgICBzX3BhY2ssICAgICAgICAgTUVUSF9WQVJBUkdTLCBzX3BhY2tfX2RvY19ffSwKICAgICB7InBhY2tfaW50byIsICAgICAgIHNfcGFja19pbnRvLCAgICBNRVRIX1ZBUkFSR1MsIHNfcGFja19pbnRvX19kb2NfX30sCiAgICAgeyJ1bnBhY2siLCAgICAgICAgICBzX3VucGFjaywgICAgICAgTUVUSF9PLCBzX3VucGFja19fZG9jX199LApAQCAtMjAyNiw5ICsyMTgwLDM0IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUHlEb2NfU1RSVkFSKGl0ZXJfdW5wYWNrX2RvYywKKyJpdGVyX3VucGFjayhmbXQsIGJ1ZmZlcikgLT4gaXRlcmF0b3IodjEsIHYyLCAuLi4pXG5cCitcblwKK1JldHVybiBhbiBpdGVyYXRvciB5aWVsZGluZyB0dXBsZXMgdW5wYWNrZWQgZnJvbSB0aGUgZ2l2ZW4gYnl0ZXNcblwKK3NvdXJjZSBhY2NvcmRpbmcgdG8gdGhlIGZvcm1hdCBzdHJpbmcsIGxpa2UgYSByZXBlYXRlZCBpbnZvY2F0aW9uIG9mXG5cCit1bnBhY2tfZnJvbSgpLiAgUmVxdWlyZXMgdGhhdCB0aGUgYnl0ZXMgbGVuZ3RoIGJlIGEgbXVsdGlwbGUgb2YgdGhlXG5cCitmb3JtYXQgc3RydWN0IHNpemUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitpdGVyX3VucGFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnNfb2JqZWN0LCAqZm10LCAqaW5wdXQsICpyZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POml0ZXJfdW5wYWNrIiwgJmZtdCwgJmlucHV0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzX29iamVjdCA9IGNhY2hlX3N0cnVjdChmbXQpOworICAgIGlmIChzX29iamVjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBzX2l0ZXJfdW5wYWNrKHNfb2JqZWN0LCBpbnB1dCk7CisgICAgUHlfREVDUkVGKHNfb2JqZWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1vZHVsZV9mdW5jdGlvbnNbXSA9IHsKICAgICB7Il9jbGVhcmNhY2hlIiwgICAgIChQeUNGdW5jdGlvbiljbGVhcmNhY2hlLCAgICAgICAgTUVUSF9OT0FSR1MsICAgIGNsZWFyY2FjaGVfZG9jfSwKICAgICB7ImNhbGNzaXplIiwgICAgICAgIGNhbGNzaXplLCAgICAgICBNRVRIX08sIGNhbGNzaXplX2RvY30sCisgICAgeyJpdGVyX3VucGFjayIsICAgICBpdGVyX3VucGFjaywgICAgTUVUSF9WQVJBUkdTLCAgIGl0ZXJfdW5wYWNrX2RvY30sCiAgICAgeyJwYWNrIiwgICAgICAgICAgICBwYWNrLCAgICAgICAgICAgTUVUSF9WQVJBUkdTLCAgIHBhY2tfZG9jfSwKICAgICB7InBhY2tfaW50byIsICAgICAgIHBhY2tfaW50bywgICAgICBNRVRIX1ZBUkFSR1MsICAgcGFja19pbnRvX2RvY30sCiAgICAgeyJ1bnBhY2siLCAgICAgICAgICB1bnBhY2ssIE1FVEhfVkFSQVJHUywgICB1bnBhY2tfZG9jfSwKQEAgLTIwOTgsMTMgKzIyNzcsMTMgQEAKIAogICAgIC8qIENoZWNrIGVuZGlhbiBhbmQgc3dhcCBpbiBmYXN0ZXIgZnVuY3Rpb25zICovCiAgICAgewotICAgICAgICBpbnQgb25lID0gMTsKICAgICAgICAgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CiAgICAgICAgIGZvcm1hdGRlZiAqb3RoZXIsICpwdHI7Ci0gICAgICAgIGlmICgoaW50KSoodW5zaWduZWQgY2hhciopJm9uZSkKLSAgICAgICAgICAgIG90aGVyID0gbGlsZW5kaWFuX3RhYmxlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdGhlciA9IGJpZ2VuZGlhbl90YWJsZTsKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgICAgIG90aGVyID0gbGlsZW5kaWFuX3RhYmxlOworI2Vsc2UKKyAgICAgICAgb3RoZXIgPSBiaWdlbmRpYW5fdGFibGU7CisjZW5kaWYKICAgICAgICAgLyogU2NhbiB0aHJvdWdoIHRoZSBuYXRpdmUgdGFibGUsIGZpbmQgYSBtYXRjaGluZwogICAgICAgICAgICBlbnRyeSBpbiB0aGUgZW5kaWFuIHRhYmxlIGFuZCBzd2FwIGluIHRoZQogICAgICAgICAgICBuYXRpdmUgaW1wbGVtZW50YXRpb25zIHdoZW5ldmVyIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKaW5kZXggMzE2NjY2ZS4uYTRlMTY0MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMjgzNywzNiArMjgzNywzNiBAQAogICAgIGlmIChzaW1wbGVfZm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX01BWF9ORElNIiwgTkRfTUFYX05ESU0pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9WQVJFWFBPUlQiLCBORF9WQVJFWFBPUlQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9XUklUQUJMRSIsIE5EX1dSSVRBQkxFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfRk9SVFJBTiIsIE5EX0ZPUlRSQU4pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9TQ0FMQVIiLCBORF9TQ0FMQVIpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9QSUwiLCBORF9QSUwpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9HRVRCVUZfRkFJTCIsIE5EX0dFVEJVRl9GQUlMKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfR0VUQlVGX1VOREVGSU5FRCIsIE5EX0dFVEJVRl9VTkRFRklORUQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9SRURJUkVDVCIsIE5EX1JFRElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORF9NQVhfTkRJTSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkRfVkFSRVhQT1JUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORF9XUklUQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkRfRk9SVFJBTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkRfU0NBTEFSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORF9QSUwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5EX0dFVEJVRl9GQUlMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORF9HRVRCVUZfVU5ERUZJTkVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORF9SRURJUkVDVCk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU0lNUExFIiwgUHlCVUZfU0lNUExFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfV1JJVEFCTEUiLCBQeUJVRl9XUklUQUJMRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZPUk1BVCIsIFB5QlVGX0ZPUk1BVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX05EIiwgUHlCVUZfTkQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVTIiwgUHlCVUZfU1RSSURFUyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0lORElSRUNUIiwgUHlCVUZfSU5ESVJFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9DX0NPTlRJR1VPVVMiLCBQeUJVRl9DX0NPTlRJR1VPVVMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GX0NPTlRJR1VPVVMiLCBQeUJVRl9GX0NPTlRJR1VPVVMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9BTllfQ09OVElHVU9VUyIsIFB5QlVGX0FOWV9DT05USUdVT1VTKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRlVMTCIsIFB5QlVGX0ZVTEwpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GVUxMX1JPIiwgUHlCVUZfRlVMTF9STyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQ09SRFMiLCBQeUJVRl9SRUNPUkRTKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVDT1JEU19STyIsIFB5QlVGX1JFQ09SRFNfUk8pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVEIiwgUHlCVUZfU1RSSURFRCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NUUklERURfUk8iLCBQeUJVRl9TVFJJREVEX1JPKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ09OVElHIiwgUHlCVUZfQ09OVElHKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ09OVElHX1JPIiwgUHlCVUZfQ09OVElHX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9TSU1QTEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFB5QlVGX1dSSVRBQkxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9GT1JNQVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFB5QlVGX05EKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9TVFJJREVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9JTkRJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUHlCVUZfQ19DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9GX0NPTlRJR1VPVVMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFB5QlVGX0FOWV9DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9GVUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9GVUxMX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9SRUNPUkRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9SRUNPUkRTX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9TVFJJREVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9TVFJJREVEX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9DT05USUcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFB5QlVGX0NPTlRJR19STyk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVBRCIsIFB5QlVGX1JFQUQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9XUklURSIsIFB5QlVGX1dSSVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9SRUFEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQeUJVRl9XUklURSk7CiAKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IDg2ZWY3MTMuLjU5ZDMxODIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtMTQyNCw2ICsxNDI0LDIwIEBACiAgICAgZWxzZQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tVW5pY29kZShMXCJcXFUwMDExMDAwMFwiLCAxKSBkaWRuJ3QgZmFpbCIpOworCisgICAgd2lkZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAxKTsKKyAgICBpZiAod2lkZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh3aWRlKVswXSA9IGludmFsaWRbMF07CisgICAgaWYgKF9QeVVuaWNvZGVfUmVhZHkod2lkZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRih3aWRlKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRih3aWRlKTsKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfUmVhZHkoKSBkaWRuJ3QgZmFpbCIpOworICAgIH0KICNlbmRpZgogCiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0yNDc3LDYgKzI0OTEsMjkzIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgX1B5TG9uZ19Gcm9tVGltZV90KHNlYyksIG5zZWMpOwogfQogCitzdGF0aWMgdm9pZAorc2xvdF90cF9kZWwoUHlPYmplY3QgKnNlbGYpCit7CisgICAgX1B5X0lERU5USUZJRVIoX190cF9kZWxfXyk7CisgICAgUHlPYmplY3QgKmRlbCwgKnJlczsKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgLyogVGVtcG9yYXJpbHkgcmVzdXJyZWN0IHRoZSBvYmplY3QuICovCisgICAgYXNzZXJ0KHNlbGYtPm9iX3JlZmNudCA9PSAwKTsKKyAgICBzZWxmLT5vYl9yZWZjbnQgPSAxOworCisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIC8qIEV4ZWN1dGUgX19kZWxfXyBtZXRob2QsIGlmIGFueS4gKi8KKyAgICBkZWwgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChzZWxmLCAmUHlJZF9fX3RwX2RlbF9fKTsKKyAgICBpZiAoZGVsICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZGVsLCBOVUxMKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGRlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBQeV9ERUNSRUYoZGVsKTsKKyAgICB9CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIC8qIFVuZG8gdGhlIHRlbXBvcmFyeSByZXN1cnJlY3Rpb247IGNhbid0IHVzZSBERUNSRUYgaGVyZSwgaXQgd291bGQKKyAgICAgKiBjYXVzZSBhIHJlY3Vyc2l2ZSBjYWxsLgorICAgICAqLworICAgIGFzc2VydChzZWxmLT5vYl9yZWZjbnQgPiAwKTsKKyAgICBpZiAoLS1zZWxmLT5vYl9yZWZjbnQgPT0gMCkKKyAgICAgICAgcmV0dXJuOyAgICAgICAgIC8qIHRoaXMgaXMgdGhlIG5vcm1hbCBwYXRoIG91dCAqLworCisgICAgLyogX19kZWxfXyByZXN1cnJlY3RlZCBpdCEgIE1ha2UgaXQgbG9vayBsaWtlIHRoZSBvcmlnaW5hbCBQeV9ERUNSRUYKKyAgICAgKiBuZXZlciBoYXBwZW5lZC4KKyAgICAgKi8KKyAgICB7CisgICAgICAgIFB5X3NzaXplX3QgcmVmY250ID0gc2VsZi0+b2JfcmVmY250OworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKHNlbGYpOworICAgICAgICBzZWxmLT5vYl9yZWZjbnQgPSByZWZjbnQ7CisgICAgfQorICAgIGFzc2VydCghUHlUeXBlX0lTX0dDKFB5X1RZUEUoc2VsZikpIHx8CisgICAgICAgICAgIF9QeV9BU19HQyhzZWxmKS0+Z2MuZ2NfcmVmcyAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7CisgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCisgICAgICogd2UgbmVlZCB0byB1bmRvIHRoYXQuICovCisgICAgX1B5X0RFQ19SRUZUT1RBTDsKKyAgICAvKiBJZiBQeV9UUkFDRV9SRUZTLCBfUHlfTmV3UmVmZXJlbmNlIHJlLWFkZGVkIHNlbGYgdG8gdGhlIG9iamVjdAorICAgICAqIGNoYWluLCBzbyBubyBtb3JlIHRvIGRvIHRoZXJlLgorICAgICAqIElmIENPVU5UX0FMTE9DUywgdGhlIG9yaWdpbmFsIGRlY3JlZiBidW1wZWQgdHBfZnJlZXMsIGFuZAorICAgICAqIF9QeV9OZXdSZWZlcmVuY2UgYnVtcGVkIHRwX2FsbG9jczogIGJvdGggb2YgdGhvc2UgbmVlZCB0byBiZQorICAgICAqIHVuZG9uZS4KKyAgICAgKi8KKyNpZmRlZiBDT1VOVF9BTExPQ1MKKyAgICAtLVB5X1RZUEUoc2VsZiktPnRwX2ZyZWVzOworICAgIC0tUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aXRoX3RwX2RlbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeVR5cGVPYmplY3QgKnRwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOndpdGhfdHBfZGVsIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRwID0gKFB5VHlwZU9iamVjdCAqKSBvYmo7CisgICAgaWYgKCFQeVR5cGVfQ2hlY2sob2JqKSB8fCAhUHlUeXBlX0hhc0ZlYXR1cmUodHAsIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaGVhcCB0eXBlIGV4cGVjdGVkLCBnb3QgJVIiLCBvYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdHAtPnRwX2RlbCA9IHNsb3RfdHBfZGVsOworICAgIFB5X0lOQ1JFRihvYmopOworICAgIHJldHVybiBvYmo7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdF9pbmNyZWYoUHlPYmplY3QgKm9iKQoreworICAgIFB5X0lOQ1JFRihvYik7CisgICAgcmV0dXJuIG9iOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF94aW5jcmVmX2RvZXNudF9sZWFrKFB5T2JqZWN0ICpvYikKK3sKKyAgICBQeU9iamVjdCAqb2JqID0gUHlMb25nX0Zyb21Mb25nKDApOworICAgIFB5X1hJTkNSRUYoX3Rlc3RfaW5jcmVmKG9iaikpOworICAgIFB5X0RFQ1JFRihvYmopOworICAgIFB5X0RFQ1JFRihvYmopOworICAgIFB5X0RFQ1JFRihvYmopOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9pbmNyZWZfZG9lc250X2xlYWsoUHlPYmplY3QgKm9iKQoreworICAgIFB5T2JqZWN0ICpvYmogPSBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgUHlfSU5DUkVGKF90ZXN0X2luY3JlZihvYmopKTsKKyAgICBQeV9ERUNSRUYob2JqKTsKKyAgICBQeV9ERUNSRUYob2JqKTsKKyAgICBQeV9ERUNSRUYob2JqKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfeGRlY3JlZl9kb2VzbnRfbGVhayhQeU9iamVjdCAqb2IpCit7CisgICAgUHlfWERFQ1JFRihQeUxvbmdfRnJvbUxvbmcoMCkpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9kZWNyZWZfZG9lc250X2xlYWsoUHlPYmplY3QgKm9iKQoreworICAgIFB5X0RFQ1JFRihQeUxvbmdfRnJvbUxvbmcoMCkpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9pbmNyZWZfZGVjcmVmX0FQSShQeU9iamVjdCAqb2IpCit7CisgICAgUHlPYmplY3QgKm9iaiA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBQeV9JbmNSZWYob2IpOworICAgIFB5X0RlY1JlZihvYmopOworICAgIFB5X0RlY1JlZihvYmopOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weW1lbV9hbGxvYzAoUHlPYmplY3QgKnNlbGYpCit7CisgICAgdm9pZCAqcHRyOworCisgICAgcHRyID0gUHlNZW1fTWFsbG9jKDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fTWFsbG9jKDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fRnJlZShwdHIpOworCisgICAgcHRyID0gUHlPYmplY3RfTWFsbG9jKDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlPYmplY3RfTWFsbG9jKDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlPYmplY3RfRnJlZShwdHIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKworICAgIHNpemVfdCBtYWxsb2Nfc2l6ZTsKKyAgICB2b2lkICpyZWFsbG9jX3B0cjsKKyAgICBzaXplX3QgcmVhbGxvY19uZXdfc2l6ZTsKKyAgICB2b2lkICpmcmVlX3B0cjsKK30gYWxsb2NfaG9va190OworCitzdGF0aWMgdm9pZCogaG9va19tYWxsb2MgKHZvaWQqIGN0eCwgc2l6ZV90IHNpemUpCit7CisgICAgYWxsb2NfaG9va190ICpob29rID0gKGFsbG9jX2hvb2tfdCAqKWN0eDsKKyAgICBob29rLT5tYWxsb2Nfc2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIGhvb2stPmFsbG9jLm1hbGxvYyhob29rLT5hbGxvYy5jdHgsIHNpemUpOworfQorCitzdGF0aWMgdm9pZCogaG9va19yZWFsbG9jICh2b2lkKiBjdHgsIHZvaWQqIHB0ciwgc2l6ZV90IG5ld19zaXplKQoreworICAgIGFsbG9jX2hvb2tfdCAqaG9vayA9IChhbGxvY19ob29rX3QgKiljdHg7CisgICAgaG9vay0+cmVhbGxvY19wdHIgPSBwdHI7CisgICAgaG9vay0+cmVhbGxvY19uZXdfc2l6ZSA9IG5ld19zaXplOworICAgIHJldHVybiBob29rLT5hbGxvYy5yZWFsbG9jKGhvb2stPmFsbG9jLmN0eCwgcHRyLCBuZXdfc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGhvb2tfZnJlZSAodm9pZCAqY3R4LCB2b2lkICpwdHIpCit7CisgICAgYWxsb2NfaG9va190ICpob29rID0gKGFsbG9jX2hvb2tfdCAqKWN0eDsKKyAgICBob29rLT5mcmVlX3B0ciA9IHB0cjsKKyAgICBob29rLT5hbGxvYy5mcmVlKGhvb2stPmFsbG9jLmN0eCwgcHRyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3Rfc2V0YWxsb2NhdG9ycyhQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4pCit7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JfbXNnOworICAgIGFsbG9jX2hvb2tfdCBob29rOworICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworICAgIHNpemVfdCBzaXplLCBzaXplMjsKKyAgICB2b2lkICpwdHIsICpwdHIyOworCisgICAgaG9vay5tYWxsb2Nfc2l6ZSA9IDA7CisgICAgaG9vay5yZWFsbG9jX3B0ciA9IE5VTEw7CisgICAgaG9vay5yZWFsbG9jX25ld19zaXplID0gMDsKKyAgICBob29rLmZyZWVfcHRyID0gTlVMTDsKKworICAgIGFsbG9jLmN0eCA9ICZob29rOworICAgIGFsbG9jLm1hbGxvYyA9ICZob29rX21hbGxvYzsKKyAgICBhbGxvYy5yZWFsbG9jID0gJmhvb2tfcmVhbGxvYzsKKyAgICBhbGxvYy5mcmVlID0gJmhvb2tfZnJlZTsKKyAgICBQeU1lbV9HZXRBbGxvY2F0b3IoZG9tYWluLCAmaG9vay5hbGxvYyk7CisgICAgUHlNZW1fU2V0QWxsb2NhdG9yKGRvbWFpbiwgJmFsbG9jKTsKKworICAgIHNpemUgPSA0MjsKKyAgICBzd2l0Y2goZG9tYWluKQorICAgIHsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9SQVc6IHB0ciA9IFB5TWVtX1Jhd01hbGxvYyhzaXplKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fTUVNOiBwdHIgPSBQeU1lbV9NYWxsb2Moc2l6ZSk7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX09CSjogcHRyID0gUHlPYmplY3RfTWFsbG9jKHNpemUpOyBicmVhazsKKyAgICBkZWZhdWx0OiBwdHIgPSBOVUxMOyBicmVhazsKKyAgICB9CisKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgZXJyb3JfbXNnID0gIm1hbGxvYyBmYWlsZWQiOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgaWYgKGhvb2subWFsbG9jX3NpemUgIT0gc2l6ZSkgeworICAgICAgICBlcnJvcl9tc2cgPSAibWFsbG9jIGludmFsaWQgc2l6ZSI7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBzaXplMiA9IDIwMDsKKyAgICBzd2l0Y2goZG9tYWluKQorICAgIHsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9SQVc6IHB0cjIgPSBQeU1lbV9SYXdSZWFsbG9jKHB0ciwgc2l6ZTIpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9NRU06IHB0cjIgPSBQeU1lbV9SZWFsbG9jKHB0ciwgc2l6ZTIpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6IHB0cjIgPSBQeU9iamVjdF9SZWFsbG9jKHB0ciwgc2l6ZTIpOyBicmVhazsKKyAgICBkZWZhdWx0OiBwdHIyID0gTlVMTDsgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHB0cjIgPT0gTlVMTCkgeworICAgICAgICBlcnJvcl9tc2cgPSAicmVhbGxvYyBmYWlsZWQiOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgaWYgKGhvb2sucmVhbGxvY19wdHIgIT0gcHRyCisgICAgICAgIHx8IGhvb2sucmVhbGxvY19uZXdfc2l6ZSAhPSBzaXplMikgeworICAgICAgICBlcnJvcl9tc2cgPSAicmVhbGxvYyBpbnZhbGlkIHBhcmFtZXRlcnMiOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgc3dpdGNoKGRvbWFpbikKKyAgICB7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fUkFXOiBQeU1lbV9SYXdGcmVlKHB0cjIpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9NRU06IFB5TWVtX0ZyZWUocHRyMik7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX09CSjogUHlPYmplY3RfRnJlZShwdHIyKTsgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGhvb2suZnJlZV9wdHIgIT0gcHRyMikgeworICAgICAgICBlcnJvcl9tc2cgPSAiZnJlZSBpbnZhbGlkIHBvaW50ZXIiOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJlcyA9IFB5X05vbmU7CisgICAgZ290byBmaW5hbGx5OworCitmYWlsOgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm9yX21zZyk7CisKK2ZpbmFsbHk6CisgICAgUHlNZW1fU2V0QWxsb2NhdG9yKGRvbWFpbiwgJmhvb2suYWxsb2MpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5bWVtX3NldHJhd2FsbG9jYXRvcnMoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIHRlc3Rfc2V0YWxsb2NhdG9ycyhQWU1FTV9ET01BSU5fUkFXKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHltZW1fc2V0YWxsb2NhdG9ycyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gdGVzdF9zZXRhbGxvY2F0b3JzKFBZTUVNX0RPTUFJTl9NRU0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weW9iamVjdF9zZXRhbGxvY2F0b3JzKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiB0ZXN0X3NldGFsbG9jYXRvcnMoUFlNRU1fRE9NQUlOX09CSik7Cit9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjQ4Nyw2ICsyNzg4LDExIEBACiAgICAgeyJ0ZXN0X2RpY3RfaXRlcmF0aW9uIiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2RpY3RfaXRlcmF0aW9uLE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FwaSwgICAgICBNRVRIX05PQVJHU30sCisgICAgeyJ0ZXN0X3hpbmNyZWZfZG9lc250X2xlYWsiLChQeUNGdW5jdGlvbil0ZXN0X3hpbmNyZWZfZG9lc250X2xlYWssICAgICAgTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9pbmNyZWZfZG9lc250X2xlYWsiLCAoUHlDRnVuY3Rpb24pdGVzdF9pbmNyZWZfZG9lc250X2xlYWssICAgICAgTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF94ZGVjcmVmX2RvZXNudF9sZWFrIiwoUHlDRnVuY3Rpb24pdGVzdF94ZGVjcmVmX2RvZXNudF9sZWFrLCAgICAgIE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfZGVjcmVmX2RvZXNudF9sZWFrIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfZGVjcmVmX2RvZXNudF9sZWFrLCAgICAgIE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfaW5jcmVmX2RlY3JlZl9BUEkiLCAgKFB5Q0Z1bmN0aW9uKXRlc3RfaW5jcmVmX2RlY3JlZl9BUEksICAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19hbmRfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FuZF9vdmVyZmxvdywKICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FzX2RvdWJsZSIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FzX2RvdWJsZSxNRVRIX05PQVJHU30sCkBAIC0yNTc0LDYgKzI4ODAsMTUgQEAKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZV90IiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjIiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCAgTUVUSF9WQVJBUkdTfSwKKyAgICB7IndpdGhfdHBfZGVsIiwgICAgICAgICAgICAgd2l0aF90cF9kZWwsICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRlc3RfcHltZW0iLAorICAgICAoUHlDRnVuY3Rpb24pdGVzdF9weW1lbV9hbGxvYzAsIE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfcHltZW1fYWxsb2MwIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfcHltZW1fc2V0cmF3YWxsb2NhdG9ycywgTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9weW1lbV9zZXRhbGxvY2F0b3JzIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfcHltZW1fc2V0YWxsb2NhdG9ycywgTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9weW9iamVjdF9zZXRhbGxvY2F0b3JzIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfcHlvYmplY3Rfc2V0YWxsb2NhdG9ycywgTUVUSF9OT0FSR1N9LAogICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGltcG9ydG11bHRpcGxlLmMgYi9Nb2R1bGVzL190ZXN0aW1wb3J0bXVsdGlwbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2FlYjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdGltcG9ydG11bHRpcGxlLmMKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIEMgZXh0ZW5zaW9ucyBtb2R1bGUgdG8gdGVzdCBpbXBvcnRpbmcgbXVsdGlwbGUgbW9kdWxlcyBmcm9tIG9uZSBjb21waWxlZAorICogZmlsZSAoaXNzdWUxNjQyMSkuIFRoaXMgZmlsZSBkZWZpbmVzIDMgbW9kdWxlcyAoX3Rlc3RpbXBvcnRtb2R1bGUsCisgKiBmb28sIGJhciksIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyBjYWxsZWQgdGhlIHNhbWUgYXMgdGhlIGNvbXBpbGVkIGZpbGUuCisgKi8KKyNpbmNsdWRlPFB5dGhvbi5oPgorCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF90ZXN0aW1wb3J0bXVsdGlwbGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfdGVzdGltcG9ydG11bHRpcGxlIiwKKyAgICAiX3Rlc3RpbXBvcnRtdWx0aXBsZSBkb2MiLAorICAgIC0xLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMgUHlJbml0X190ZXN0aW1wb3J0bXVsdGlwbGUodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZfdGVzdGltcG9ydG11bHRpcGxlKTsKK30KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfZm9vbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX3Rlc3RpbXBvcnRtdWx0aXBsZV9mb28iLAorICAgICJfdGVzdGltcG9ydG11bHRpcGxlX2ZvbyBkb2MiLAorICAgIC0xLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMgUHlJbml0X190ZXN0aW1wb3J0bXVsdGlwbGVfZm9vKHZvaWQpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlX0NyZWF0ZSgmX2Zvb21vZHVsZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2Jhcm1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl90ZXN0aW1wb3J0bXVsdGlwbGVfYmFyIiwKKyAgICAiX3Rlc3RpbXBvcnRtdWx0aXBsZV9iYXIgZG9jIiwKKyAgICAtMSwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKK1B5TU9ESU5JVF9GVU5DIFB5SW5pdF9fdGVzdGltcG9ydG11bHRpcGxlX2Jhcih2b2lkKXsKKyAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZfYmFybW9kdWxlKTsKK30KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwppbmRleCBkMWRjNjFkLi5jYmIyOTAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYworKysgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwpAQCAtNzQxLDcgKzc0MSw3IEBACiAgICAgd3IgPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKSBzZWxmLCBOVUxMKTsKICAgICBpZiAod3IgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnI7Ci0gICAgc2VsZi0+d3JfY2FsbGJhY2sgPSBQeUNGdW5jdGlvbl9OZXcoJndyX2NhbGxiYWNrX2RlZiwgd3IpOworICAgIHNlbGYtPndyX2NhbGxiYWNrID0gUHlDRnVuY3Rpb25fTmV3RXgoJndyX2NhbGxiYWNrX2RlZiwgd3IsIE5VTEwpOwogICAgIFB5X0RFQ1JFRih3cik7CiAgICAgaWYgKHNlbGYtPndyX2NhbGxiYWNrID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGtpbnRlci5jIGIvTW9kdWxlcy9fdGtpbnRlci5jCmluZGV4IGNkYjI4ZTUuLjI2ZjEwZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RraW50ZXIuYworKysgYi9Nb2R1bGVzL190a2ludGVyLmMKQEAgLTEyNSw1MiArMTI1LDYwIEBACiAKIC8qIFRoZSB0aHJlYWRpbmcgc2l0dWF0aW9uIGlzIGNvbXBsaWNhdGVkLiAgVGNsIGlzIG5vdCB0aHJlYWQtc2FmZSwgZXhjZXB0CiAgICB3aGVuIGNvbmZpZ3VyZWQgd2l0aCAtLWVuYWJsZS10aHJlYWRzLgotICAgU28gd2UgbmVlZCB0byB1c2UgYSBsb2NrIGFyb3VuZCBhbGwgdXNlcyBvZiBUY2wuICBQcmV2aW91c2x5LCB0aGUgUHl0aG9uCi0gICBpbnRlcnByZXRlciBsb2NrIHdhcyB1c2VkIGZvciB0aGlzLiAgSG93ZXZlciwgdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2hlbgotICAgb3RoZXIgUHl0aG9uIHRocmVhZHMgbmVlZCB0byBydW4gd2hpbGUgVGNsIGlzIGJsb2NrZWQgd2FpdGluZyBmb3IgZXZlbnRzLgogCi0gICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIGEgc2VwYXJhdGUgbG9jayBmb3IgVGNsIGlzIGludHJvZHVjZWQuICBIb2xkaW5nIGl0Ci0gICBpcyBpbmNvbXBhdGlibGUgd2l0aCBob2xkaW5nIFB5dGhvbidzIGludGVycHJldGVyIGxvY2suICBUaGUgZm9sbG93aW5nIGZvdXIKLSAgIG1hY3JvcyBtYW5pcHVsYXRlIGJvdGggbG9ja3MgdG9nZXRoZXIuCisgICBTbyB3ZSBuZWVkIHRvIHVzZSBhIGxvY2sgYXJvdW5kIGFsbCB1c2VzIG9mIFRjbC4gIFByZXZpb3VzbHksIHRoZQorICAgUHl0aG9uIGludGVycHJldGVyIGxvY2sgd2FzIHVzZWQgZm9yIHRoaXMuICBIb3dldmVyLCB0aGlzIGNhdXNlcworICAgcHJvYmxlbXMgd2hlbiBvdGhlciBQeXRob24gdGhyZWFkcyBuZWVkIHRvIHJ1biB3aGlsZSBUY2wgaXMgYmxvY2tlZAorICAgd2FpdGluZyBmb3IgZXZlbnRzLgogCi0gICBFTlRFUl9UQ0wgYW5kIExFQVZFX1RDTCBhcmUgYnJhY2tldHMsIGp1c3QgbGlrZSBQeV9CRUdJTl9BTExPV19USFJFQURTIGFuZAotICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMuICBUaGV5IHNob3VsZCBiZSB1c2VkIHdoZW5ldmVyIGEgY2FsbCBpbnRvIFRjbCBpcyBtYWRlCi0gICB0aGF0IGNvdWxkIGNhbGwgYW4gZXZlbnQgaGFuZGxlciwgb3Igb3RoZXJ3aXNlIGFmZmVjdCB0aGUgc3RhdGUgb2YgYSBUY2wKLSAgIGludGVycHJldGVyLiAgVGhlc2UgYXNzdW1lIHRoYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaGFzIHRoZSBQeXRob24KLSAgIGludGVycHJldGVyIGxvY2s7IGluc2lkZSB0aGUgYnJhY2tldHMsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgbG9jayBoYXMgYmVlbgotICAgcmVsZWFzZWQgYW5kIHRoZSBsb2NrIGZvciBUY2wgaGFzIGJlZW4gYWNxdWlyZWQuCisgICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIGEgc2VwYXJhdGUgbG9jayBmb3IgVGNsIGlzIGludHJvZHVjZWQuCisgICBIb2xkaW5nIGl0IGlzIGluY29tcGF0aWJsZSB3aXRoIGhvbGRpbmcgUHl0aG9uJ3MgaW50ZXJwcmV0ZXIgbG9jay4KKyAgIFRoZSBmb2xsb3dpbmcgZm91ciBtYWNyb3MgbWFuaXB1bGF0ZSBib3RoIGxvY2tzIHRvZ2V0aGVyLgogCi0gICBTb21ldGltZXMsIGl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlIGJvdGggdGhlIFB5dGhvbiBsb2NrIGFuZCB0aGUgVGNsIGxvY2suCi0gICAoRm9yIGV4YW1wbGUsIHdoZW4gdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSB0aGUgVGNsIGludGVycHJldGVyIHJlc3VsdCB0byBhCi0gICBQeXRob24gc3RyaW5nIG9iamVjdC4pICBUaGlzIGNhbiBiZSBkb25lIGJ5IHVzaW5nIGRpZmZlcmVudCBtYWNyb3MgdG8gY2xvc2UKLSAgIHRoZSBFTlRFUl9UQ0wgYmxvY2s6IEVOVEVSX09WRVJMQVAgcmVhY3F1aXJlcyB0aGUgUHl0aG9uIGxvY2sgKGFuZCByZXN0b3JlcwotICAgdGhlIHRocmVhZCBzdGF0ZSkgYnV0IGRvZXNuJ3QgcmVsZWFzZSB0aGUgVGNsIGxvY2s7IExFQVZFX09WRVJMQVBfVENMCi0gICByZWxlYXNlcyB0aGUgVGNsIGxvY2suCisgICBFTlRFUl9UQ0wgYW5kIExFQVZFX1RDTCBhcmUgYnJhY2tldHMsIGp1c3QgbGlrZQorICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBhbmQgUHlfRU5EX0FMTE9XX1RIUkVBRFMuICBUaGV5IHNob3VsZCBiZQorICAgdXNlZCB3aGVuZXZlciBhIGNhbGwgaW50byBUY2wgaXMgbWFkZSB0aGF0IGNvdWxkIGNhbGwgYW4gZXZlbnQKKyAgIGhhbmRsZXIsIG9yIG90aGVyd2lzZSBhZmZlY3QgdGhlIHN0YXRlIG9mIGEgVGNsIGludGVycHJldGVyLiAgVGhlc2UKKyAgIGFzc3VtZSB0aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGhhcyB0aGUgUHl0aG9uIGludGVycHJldGVyIGxvY2s7CisgICBpbnNpZGUgdGhlIGJyYWNrZXRzLCB0aGUgUHl0aG9uIGludGVycHJldGVyIGxvY2sgaGFzIGJlZW4gcmVsZWFzZWQKKyAgIGFuZCB0aGUgbG9jayBmb3IgVGNsIGhhcyBiZWVuIGFjcXVpcmVkLgorCisgICBTb21ldGltZXMsIGl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlIGJvdGggdGhlIFB5dGhvbiBsb2NrIGFuZCB0aGUgVGNsCisgICBsb2NrLiAgKEZvciBleGFtcGxlLCB3aGVuIHRyYW5zZmVycmluZyBkYXRhIGZyb20gdGhlIFRjbAorICAgaW50ZXJwcmV0ZXIgcmVzdWx0IHRvIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuKSAgVGhpcyBjYW4gYmUgZG9uZSBieQorICAgdXNpbmcgZGlmZmVyZW50IG1hY3JvcyB0byBjbG9zZSB0aGUgRU5URVJfVENMIGJsb2NrOiBFTlRFUl9PVkVSTEFQCisgICByZWFjcXVpcmVzIHRoZSBQeXRob24gbG9jayAoYW5kIHJlc3RvcmVzIHRoZSB0aHJlYWQgc3RhdGUpIGJ1dAorICAgZG9lc24ndCByZWxlYXNlIHRoZSBUY2wgbG9jazsgTEVBVkVfT1ZFUkxBUF9UQ0wgcmVsZWFzZXMgdGhlIFRjbAorICAgbG9jay4KIAogICAgQnkgY29udHJhc3QsIEVOVEVSX1BZVEhPTiBhbmQgTEVBVkVfUFlUSE9OIGFyZSB1c2VkIGluIFRjbCBldmVudAotICAgaGFuZGxlcnMgd2hlbiB0aGUgaGFuZGxlciBuZWVkcyB0byB1c2UgUHl0aG9uLiAgU3VjaCBldmVudCBoYW5kbGVycyBhcmUKLSAgIGVudGVyZWQgd2hpbGUgdGhlIGxvY2sgZm9yIFRjbCBpcyBoZWxkOyB0aGUgZXZlbnQgaGFuZGxlciBwcmVzdW1hYmx5IG5lZWRzCi0gICB0byB1c2UgUHl0aG9uLiAgRU5URVJfUFlUSE9OIHJlbGVhc2VzIHRoZSBsb2NrIGZvciBUY2wgYW5kIGFjcXVpcmVzCi0gICB0aGUgUHl0aG9uIGludGVycHJldGVyIGxvY2ssIHJlc3RvcmluZyB0aGUgYXBwcm9wcmlhdGUgdGhyZWFkIHN0YXRlLCBhbmQKLSAgIExFQVZFX1BZVEhPTiByZWxlYXNlcyB0aGUgUHl0aG9uIGludGVycHJldGVyIGxvY2sgYW5kIHJlLWFjcXVpcmVzIHRoZSBsb2NrCi0gICBmb3IgVGNsLiAgSXQgaXMgb2theSBmb3IgRU5URVJfVENML0xFQVZFX1RDTCBwYWlycyB0byBiZSBjb250YWluZWQgaW5zaWRlCi0gICB0aGUgY29kZSBiZXR3ZWVuIEVOVEVSX1BZVEhPTiBhbmQgTEVBVkVfUFlUSE9OLgorICAgaGFuZGxlcnMgd2hlbiB0aGUgaGFuZGxlciBuZWVkcyB0byB1c2UgUHl0aG9uLiAgU3VjaCBldmVudCBoYW5kbGVycworICAgYXJlIGVudGVyZWQgd2hpbGUgdGhlIGxvY2sgZm9yIFRjbCBpcyBoZWxkOyB0aGUgZXZlbnQgaGFuZGxlcgorICAgcHJlc3VtYWJseSBuZWVkcyB0byB1c2UgUHl0aG9uLiAgRU5URVJfUFlUSE9OIHJlbGVhc2VzIHRoZSBsb2NrIGZvcgorICAgVGNsIGFuZCBhY3F1aXJlcyB0aGUgUHl0aG9uIGludGVycHJldGVyIGxvY2ssIHJlc3RvcmluZyB0aGUKKyAgIGFwcHJvcHJpYXRlIHRocmVhZCBzdGF0ZSwgYW5kIExFQVZFX1BZVEhPTiByZWxlYXNlcyB0aGUgUHl0aG9uCisgICBpbnRlcnByZXRlciBsb2NrIGFuZCByZS1hY3F1aXJlcyB0aGUgbG9jayBmb3IgVGNsLiAgSXQgaXMgb2theSBmb3IKKyAgIEVOVEVSX1RDTC9MRUFWRV9UQ0wgcGFpcnMgdG8gYmUgY29udGFpbmVkIGluc2lkZSB0aGUgY29kZSBiZXR3ZWVuCisgICBFTlRFUl9QWVRIT04gYW5kIExFQVZFX1BZVEhPTi4KIAotICAgVGhlc2UgbG9ja3MgZXhwYW5kIHRvIHNldmVyYWwgc3RhdGVtZW50cyBhbmQgYnJhY2tldHM7IHRoZXkgc2hvdWxkIG5vdCBiZQotICAgdXNlZCBpbiBicmFuY2hlcyBvZiBpZiBzdGF0ZW1lbnRzIGFuZCB0aGUgbGlrZS4KKyAgIFRoZXNlIGxvY2tzIGV4cGFuZCB0byBzZXZlcmFsIHN0YXRlbWVudHMgYW5kIGJyYWNrZXRzOyB0aGV5IHNob3VsZAorICAgbm90IGJlIHVzZWQgaW4gYnJhbmNoZXMgb2YgaWYgc3RhdGVtZW50cyBhbmQgdGhlIGxpa2UuCiAKLSAgIElmIFRjbCBpcyB0aHJlYWRlZCwgdGhpcyBhcHByb2FjaCB3b24ndCB3b3JrIGFueW1vcmUuIFRoZSBUY2wgaW50ZXJwcmV0ZXIgaXMKLSAgIG9ubHkgdmFsaWQgaW4gdGhlIHRocmVhZCB0aGF0IGNyZWF0ZWQgaXQsIGFuZCBhbGwgVGsgYWN0aXZpdHkgbXVzdCBoYXBwZW4gaW4gdGhpcwotICAgdGhyZWFkLCBhbHNvLiBUaGF0IG1lYW5zIHRoYXQgdGhlIG1haW5sb29wIG11c3QgYmUgaW52b2tlZCBpbiB0aGUgdGhyZWFkIHRoYXQKLSAgIGNyZWF0ZWQgdGhlIGludGVycHJldGVyLiBJbnZva2luZyBjb21tYW5kcyBmcm9tIG90aGVyIHRocmVhZHMgaXMgcG9zc2libGU7Ci0gICBfdGtpbnRlciB3aWxsIHF1ZXVlIGFuIGV2ZW50IGZvciB0aGUgaW50ZXJwcmV0ZXIgdGhyZWFkLCB3aGljaCB3aWxsIHRoZW4KLSAgIGV4ZWN1dGUgdGhlIGNvbW1hbmQgYW5kIHBhc3MgYmFjayB0aGUgcmVzdWx0LiBJZiB0aGUgbWFpbiB0aHJlYWQgaXMgbm90IGluIHRoZQotICAgbWFpbmxvb3AsIGFuZCBpbnZva2luZyBjb21tYW5kcyBjYXVzZXMgYW4gZXhjZXB0aW9uOyBpZiB0aGUgbWFpbiBsb29wIGlzIHJ1bm5pbmcKLSAgIGJ1dCBub3QgcHJvY2Vzc2luZyBldmVudHMsIHRoZSBjb21tYW5kIGludm9jYXRpb24gd2lsbCBibG9jay4KKyAgIElmIFRjbCBpcyB0aHJlYWRlZCwgdGhpcyBhcHByb2FjaCB3b24ndCB3b3JrIGFueW1vcmUuIFRoZSBUY2wKKyAgIGludGVycHJldGVyIGlzIG9ubHkgdmFsaWQgaW4gdGhlIHRocmVhZCB0aGF0IGNyZWF0ZWQgaXQsIGFuZCBhbGwgVGsKKyAgIGFjdGl2aXR5IG11c3QgaGFwcGVuIGluIHRoaXMgdGhyZWFkLCBhbHNvLiBUaGF0IG1lYW5zIHRoYXQgdGhlCisgICBtYWlubG9vcCBtdXN0IGJlIGludm9rZWQgaW4gdGhlIHRocmVhZCB0aGF0IGNyZWF0ZWQgdGhlCisgICBpbnRlcnByZXRlci4gSW52b2tpbmcgY29tbWFuZHMgZnJvbSBvdGhlciB0aHJlYWRzIGlzIHBvc3NpYmxlOworICAgX3RraW50ZXIgd2lsbCBxdWV1ZSBhbiBldmVudCBmb3IgdGhlIGludGVycHJldGVyIHRocmVhZCwgd2hpY2ggd2lsbAorICAgdGhlbiBleGVjdXRlIHRoZSBjb21tYW5kIGFuZCBwYXNzIGJhY2sgdGhlIHJlc3VsdC4gSWYgdGhlIG1haW4KKyAgIHRocmVhZCBpcyBub3QgaW4gdGhlIG1haW5sb29wLCBhbmQgaW52b2tpbmcgY29tbWFuZHMgY2F1c2VzIGFuCisgICBleGNlcHRpb247IGlmIHRoZSBtYWluIGxvb3AgaXMgcnVubmluZyBidXQgbm90IHByb2Nlc3NpbmcgZXZlbnRzLAorICAgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiB3aWxsIGJsb2NrLgogCi0gICBJbiBhZGRpdGlvbiwgZm9yIGEgdGhyZWFkZWQgVGNsLCBhIHNpbmdsZSBnbG9iYWwgdGNsX3RzdGF0ZSB3b24ndCBiZSBzdWZmaWNpZW50Ci0gICBhbnltb3JlLCBzaW5jZSBtdWx0aXBsZSBUY2wgaW50ZXJwcmV0ZXJzIG1heSBzaW11bHRhbmVvdXNseSBkaXNwYXRjaCBpbiBkaWZmZXJlbnQKLSAgIHRocmVhZHMuIFNvIHdlIHVzZSB0aGUgVGNsIFRMUyBBUEkuCisgICBJbiBhZGRpdGlvbiwgZm9yIGEgdGhyZWFkZWQgVGNsLCBhIHNpbmdsZSBnbG9iYWwgdGNsX3RzdGF0ZSB3b24ndAorICAgYmUgc3VmZmljaWVudCBhbnltb3JlLCBzaW5jZSBtdWx0aXBsZSBUY2wgaW50ZXJwcmV0ZXJzIG1heQorICAgc2ltdWx0YW5lb3VzbHkgZGlzcGF0Y2ggaW4gZGlmZmVyZW50IHRocmVhZHMuIFNvIHdlIHVzZSB0aGUgVGNsIFRMUworICAgQVBJLgogCiAqLwogCkBAIC0xNzksNyArMTg3LDggQEAKICNpZmRlZiBUQ0xfVEhSRUFEUwogc3RhdGljIFRjbF9UaHJlYWREYXRhS2V5IHN0YXRlX2tleTsKIHR5cGVkZWYgUHlUaHJlYWRTdGF0ZSAqVGhyZWFkU3BlY2lmaWNEYXRhOwotI2RlZmluZSB0Y2xfdHN0YXRlICgqKFB5VGhyZWFkU3RhdGUqKilUY2xfR2V0VGhyZWFkRGF0YSgmc3RhdGVfa2V5LCBzaXplb2YoUHlUaHJlYWRTdGF0ZSopKSkKKyNkZWZpbmUgdGNsX3RzdGF0ZSBcCisgICAgKCooUHlUaHJlYWRTdGF0ZSoqKVRjbF9HZXRUaHJlYWREYXRhKCZzdGF0ZV9rZXksIHNpemVvZihQeVRocmVhZFN0YXRlKikpKQogI2Vsc2UKIHN0YXRpYyBQeVRocmVhZFN0YXRlICp0Y2xfdHN0YXRlID0gTlVMTDsKICNlbmRpZgpAQCAtMTg5LDcgKzE5OCw4IEBACiAgICAgICAgIGlmKHRjbF9sb2NrKVB5VGhyZWFkX2FjcXVpcmVfbG9jayh0Y2xfbG9jaywgMSk7IHRjbF90c3RhdGUgPSB0c3RhdGU7CiAKICNkZWZpbmUgTEVBVkVfVENMIFwKLSAgICB0Y2xfdHN0YXRlID0gTlVMTDsgaWYodGNsX2xvY2spUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHRjbF9sb2NrKTsgUHlfRU5EX0FMTE9XX1RIUkVBRFN9CisgICAgdGNsX3RzdGF0ZSA9IE5VTEw7IFwKKyAgICBpZih0Y2xfbG9jaylQeVRocmVhZF9yZWxlYXNlX2xvY2sodGNsX2xvY2spOyBQeV9FTkRfQUxMT1dfVEhSRUFEU30KIAogI2RlZmluZSBFTlRFUl9PVkVSTEFQIFwKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMTk5LDcgKzIwOSw4IEBACiAKICNkZWZpbmUgRU5URVJfUFlUSE9OIFwKICAgICB7IFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IHRjbF90c3RhdGU7IHRjbF90c3RhdGUgPSBOVUxMOyBcCi0gICAgICAgIGlmKHRjbF9sb2NrKVB5VGhyZWFkX3JlbGVhc2VfbG9jayh0Y2xfbG9jayk7IFB5RXZhbF9SZXN0b3JlVGhyZWFkKCh0c3RhdGUpKTsgfQorICAgICAgICBpZih0Y2xfbG9jaykgXAorICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0Y2xfbG9jayk7IFB5RXZhbF9SZXN0b3JlVGhyZWFkKCh0c3RhdGUpKTsgfQogCiAjZGVmaW5lIExFQVZFX1BZVEhPTiBcCiAgICAgeyBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOyBcCkBAIC0yMDgsNyArMjE5LDggQEAKICNkZWZpbmUgQ0hFQ0tfVENMX0FQUEFSVE1FTlQgXAogICAgIGlmICgoKFRrYXBwT2JqZWN0ICopc2VsZiktPnRocmVhZGVkICYmIFwKICAgICAgICAgKChUa2FwcE9iamVjdCAqKXNlbGYpLT50aHJlYWRfaWQgIT0gVGNsX0dldEN1cnJlbnRUaHJlYWQoKSkgeyBcCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJDYWxsaW5nIFRjbCBmcm9tIGRpZmZlcmVudCBhcHBhcnRtZW50Iik7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmcgVGNsIGZyb20gZGlmZmVyZW50IGFwcGFydG1lbnQiKTsgXAogICAgICAgICByZXR1cm4gMDsgXAogICAgIH0KIApAQCAtMjMwLDcgKzI0Miw3IEBACiAKIC8qKioqIFRrYXBwIE9iamVjdCBEZWNsYXJhdGlvbiAqKioqLwogCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFRrYXBwX1R5cGU7CitzdGF0aWMgUHlPYmplY3QgKlRrYXBwX1R5cGU7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0yNTAsNyArMjYyLDYgQEAKICAgICBUY2xfT2JqVHlwZSAqU3RyaW5nVHlwZTsKIH0gVGthcHBPYmplY3Q7CiAKLSNkZWZpbmUgVGthcHBfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gJlRrYXBwX1R5cGUpCiAjZGVmaW5lIFRrYXBwX0ludGVycCh2KSAoKChUa2FwcE9iamVjdCAqKSAodikpLT5pbnRlcnApCiAjZGVmaW5lIFRrYXBwX1Jlc3VsdCh2KSBUY2xfR2V0U3RyaW5nUmVzdWx0KFRrYXBwX0ludGVycCh2KSkKIApAQCAtMzIzLDExNSArMzM0LDkgQEAKICNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwogCiAKLXN0YXRpYyBjaGFyICoKLUFzU3RyaW5nKFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRtcCkKLXsKLSAgICBpZiAoUHlCeXRlc19DaGVjayh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp2ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyh2YWx1ZSk7Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQodG1wLCB2KSAhPSAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0FzU3RyaW5nKHYpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnYgPSBQeU9iamVjdF9TdHIodmFsdWUpOwotICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHRtcCwgdikgIT0gMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Bc1N0cmluZyh2KTsKLSAgICB9Ci19Ci0KLQogCiAjZGVmaW5lIEFSR1NaIDY0CiAKLXN0YXRpYyBjaGFyICoKLU1lcmdlKFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOwotICAgIGNoYXIgKmFyZ3ZTdG9yZVtBUkdTWl07Ci0gICAgY2hhciAqKmFyZ3YgPSBOVUxMOwotICAgIGludCBmdlN0b3JlW0FSR1NaXTsKLSAgICBpbnQgKmZ2ID0gTlVMTDsKLSAgICBpbnQgYXJnYyA9IDAsIGZ2YyA9IDAsIGk7Ci0gICAgY2hhciAqcmVzID0gTlVMTDsKLQotICAgIGlmICghKHRtcCA9IFB5TGlzdF9OZXcoMCkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGFyZ3YgPSBhcmd2U3RvcmU7Ci0gICAgZnYgPSBmdlN0b3JlOwotCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgYXJnYyA9IDA7Ci0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewotICAgICAgICBhcmdjID0gMTsKLSAgICAgICAgZnZbMF0gPSAwOwotICAgICAgICBpZiAoIShhcmd2WzBdID0gQXNTdHJpbmcoYXJncywgdG1wKSkpCi0gICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3MpOwotCi0gICAgICAgIGlmIChhcmdjID4gQVJHU1opIHsKLSAgICAgICAgICAgIGFyZ3YgPSAoY2hhciAqKilja2FsbG9jKGFyZ2MgKiBzaXplb2YoY2hhciAqKSk7Ci0gICAgICAgICAgICBmdiA9IChpbnQgKilja2FsbG9jKGFyZ2MgKiBzaXplb2YoaW50KSk7Ci0gICAgICAgICAgICBpZiAoYXJndiA9PSBOVUxMIHx8IGZ2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIGkpOwotICAgICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2sodikpIHsKLSAgICAgICAgICAgICAgICBmdltpXSA9IDE7Ci0gICAgICAgICAgICAgICAgaWYgKCEoYXJndltpXSA9IE1lcmdlKHYpKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAgICAgICAgIGZ2YysrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgYXJnYyA9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBmdltpXSA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKCEoYXJndltpXSA9IEFzU3RyaW5nKHYsIHRtcCkpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgICAgICAgICAgZnZjKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmVzID0gVGNsX01lcmdlKGFyZ2MsIGFyZ3YpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRraW50ZXJfVGNsRXJyb3IsICJtZXJnZSBmYWlsZWQiKTsKLQotICBmaW5hbGx5OgotICAgIGZvciAoaSA9IDA7IGkgPCBmdmM7IGkrKykKLSAgICAgICAgaWYgKGZ2W2ldKSB7Ci0gICAgICAgICAgICBja2ZyZWUoYXJndltpXSk7Ci0gICAgICAgIH0KLSAgICBpZiAoYXJndiAhPSBhcmd2U3RvcmUpCi0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBhcmd2KTsKLSAgICBpZiAoZnYgIT0gZnZTdG9yZSkKLSAgICAgICAgY2tmcmVlKEZSRUVDQVNUIGZ2KTsKLQotICAgIFB5X0RFQ1JFRih0bXApOwotICAgIHJldHVybiByZXM7Ci19Ci0KIAogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQyLDggKzM0Nyw3IEBACiAgICAgUHlPYmplY3QgKnY7CiAKICAgICBpZiAobGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAogICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKQEAgLTQ3NSw5ICszNzksOSBAQAogICAgIHJldHVybiB2OwogfQogCi0vKiBJbiBzb21lIGNhc2VzLCBUY2wgd2lsbCBzdGlsbCByZXR1cm4gc3RyaW5ncyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZQotICAgbGlzdHMuIFNwbGl0T2JqIHdhbGtzIHRocm91Z2ggYSBuZXN0ZWQgdHVwbGUsIGZpbmRpbmcgc3RyaW5nIG9iamVjdHMgdGhhdAotICAgbmVlZCB0byBiZSBzcGxpdC4gKi8KKy8qIEluIHNvbWUgY2FzZXMsIFRjbCB3aWxsIHN0aWxsIHJldHVybiBzdHJpbmdzIHRoYXQgYXJlIHN1cHBvc2VkIHRvCisgICBiZSBsaXN0cy4gU3BsaXRPYmogd2Fsa3MgdGhyb3VnaCBhIG5lc3RlZCB0dXBsZSwgZmluZGluZyBzdHJpbmcKKyAgIG9iamVjdHMgdGhhdCBuZWVkIHRvIGJlIHNwbGl0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogU3BsaXRPYmooUHlPYmplY3QgKmFyZykKQEAgLTYwOSw3ICs1MTMsNyBAQAogICAgIFRrYXBwT2JqZWN0ICp2OwogICAgIGNoYXIgKmFyZ3YwOwogCi0gICAgdiA9IFB5T2JqZWN0X05ldyhUa2FwcE9iamVjdCwgJlRrYXBwX1R5cGUpOworICAgIHYgPSBQeU9iamVjdF9OZXcoVGthcHBPYmplY3QsIChQeVR5cGVPYmplY3QgKikgVGthcHBfVHlwZSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTYyMiw3ICs1MjYsOCBAQAogCiAjaWZuZGVmIFRDTF9USFJFQURTCiAgICAgaWYgKHYtPnRocmVhZGVkKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJUY2wgaXMgdGhyZWFkZWQgYnV0IF90a2ludGVyIGlzIG5vdCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRjbCBpcyB0aHJlYWRlZCBidXQgX3RraW50ZXIgaXMgbm90Iik7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNzU5LDE0ICs2NjQsMTQgQEAKICAgICBQeU9iamVjdCAqc3RyaW5nOyAvKiBUaGlzIGNhbm5vdCBjYXVzZSBjeWNsZXMuICovCiB9IFB5VGNsT2JqZWN0OwogCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFB5VGNsT2JqZWN0X1R5cGU7Ci0jZGVmaW5lIFB5VGNsT2JqZWN0X0NoZWNrKHYpICAgICgodiktPm9iX3R5cGUgPT0gJlB5VGNsT2JqZWN0X1R5cGUpCitzdGF0aWMgUHlPYmplY3QgKlB5VGNsT2JqZWN0X1R5cGU7CisjZGVmaW5lIFB5VGNsT2JqZWN0X0NoZWNrKHYpICgodiktPm9iX3R5cGUgPT0gKFB5VHlwZU9iamVjdCAqKSBQeVRjbE9iamVjdF9UeXBlKQogCiBzdGF0aWMgUHlPYmplY3QgKgogbmV3UHlUY2xPYmplY3QoVGNsX09iaiAqYXJnKQogewogICAgIFB5VGNsT2JqZWN0ICpzZWxmOwotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoUHlUY2xPYmplY3QsICZQeVRjbE9iamVjdF9UeXBlKTsKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5VGNsT2JqZWN0LCAoUHlUeXBlT2JqZWN0ICopIFB5VGNsT2JqZWN0X1R5cGUpOwogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFRjbF9JbmNyUmVmQ291bnQoYXJnKTsKQEAgLTkwMCw1MCArODA1LDI1IEBACiAgICAgezB9LAogfTsKIAotc3RhdGljIFB5VHlwZU9iamVjdCBQeVRjbE9iamVjdF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfdGtpbnRlci5UY2xfT2JqIiwgICAgICAgICAgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5VGNsT2JqZWN0KSwgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcilQeVRjbE9iamVjdF9kZWFsbG9jLC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIChyZXByZnVuYylQeVRjbE9iamVjdF9yZXByLCAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIChyZXByZnVuYylQeVRjbE9iamVjdF9zdHIsICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIFB5VGNsT2JqZWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIFB5VGNsT2JqZWN0X2dldHNldGxpc3QsICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCitzdGF0aWMgUHlUeXBlX1Nsb3QgUHlUY2xPYmplY3RfVHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9kZWFsbG9jLCAoZGVzdHJ1Y3RvcilQeVRjbE9iamVjdF9kZWFsbG9jfSwKKyAgICB7UHlfdHBfcmVwciwgKHJlcHJmdW5jKVB5VGNsT2JqZWN0X3JlcHJ9LAorICAgIHtQeV90cF9zdHIsIChyZXByZnVuYylQeVRjbE9iamVjdF9zdHJ9LAorICAgIHtQeV90cF9nZXRhdHRybywgUHlPYmplY3RfR2VuZXJpY0dldEF0dHJ9LAorICAgIHtQeV90cF9yaWNoY29tcGFyZSwgUHlUY2xPYmplY3RfcmljaGNvbXBhcmV9LAorICAgIHtQeV90cF9nZXRzZXQsIFB5VGNsT2JqZWN0X2dldHNldGxpc3R9LAorICAgIHswLCAwfQogfTsKIAorc3RhdGljIFB5VHlwZV9TcGVjIFB5VGNsT2JqZWN0X1R5cGVfc3BlYyA9IHsKKyAgICAiX3RraW50ZXIuVGNsX09iaiIsCisgICAgc2l6ZW9mKFB5VGNsT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICBQeVRjbE9iamVjdF9UeXBlX3Nsb3RzLAorfTsKKworCiBzdGF0aWMgVGNsX09iaioKIEFzT2JqKFB5T2JqZWN0ICp2YWx1ZSkKIHsKQEAgLTEzNDcsNDIgKzEyMjcsNiBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9HbG9iYWxDYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICAvKiBDb3VsZCBkbyB0aGUgc2FtZSBoZXJlIGFzIGZvciBUa2FwcF9DYWxsKCksIGJ1dCB0aGlzIGlzIG5vdCB1c2VkCi0gICAgICAgbXVjaCwgc28gSSBjYW4ndCBiZSBib3RoZXJlZC4gIFVuZm9ydHVuYXRlbHkgVGNsIGRvZXNuJ3QgZXhwb3J0IGEKLSAgICAgICB3YXkgZm9yIHRoZSB1c2VyIHRvIGRvIHdoYXQgYWxsIGl0cyBHbG9iYWwqIHZhcmlhbnRzIGRvIChzYXZlIGFuZAotICAgICAgIHJlc2V0IHRoZSBzY29wZSBwb2ludGVyLCBjYWxsIHRoZSBsb2NhbCB2ZXJzaW9uLCByZXN0b3JlIHRoZSBzYXZlZAotICAgICAgIHNjb3BlIHBvaW50ZXIpLiAqLwotCi0gICAgY2hhciAqY21kOwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotCi0gICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsY2FsbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKLSAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKLQotICAgIGNtZCAgPSBNZXJnZShhcmdzKTsKLSAgICBpZiAoY21kKSB7Ci0gICAgICAgIGludCBlcnI7Ci0gICAgICAgIEVOVEVSX1RDTAotICAgICAgICBlcnIgPSBUY2xfR2xvYmFsRXZhbChUa2FwcF9JbnRlcnAoc2VsZiksIGNtZCk7Ci0gICAgICAgIEVOVEVSX09WRVJMQVAKLSAgICAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpCi0gICAgICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwotICAgICAgICBMRUFWRV9PVkVSTEFQX1RDTAotICAgICAgICBja2ZyZWUoY21kKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogVGthcHBfRXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgY2hhciAqc2NyaXB0OwpAQCAtMTQwNiwzNCArMTI1MCw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9HbG9iYWxFdmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpzY3JpcHQ7Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgaW50IGVycjsKLQotICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgImdsb2JhbGV2YWwgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCi0gICAgICAgICAgICAgICAgICAgICAxKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdsb2JhbGV2YWwiLCAmc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKLQotICAgIEVOVEVSX1RDTAotICAgIGVyciA9IFRjbF9HbG9iYWxFdmFsKFRrYXBwX0ludGVycChzZWxmKSwgc2NyaXB0KTsKLSAgICBFTlRFUl9PVkVSTEFQCi0gICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwotICAgIExFQVZFX09WRVJMQVBfVENMCi0gICAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKIFRrYXBwX0V2YWxGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBjaGFyICpmaWxlTmFtZTsKQEAgLTE0OTMsOCArMTMwOSw3IEBACiAgICAgVGNsX0FkZEVycm9ySW5mbyhUa2FwcF9JbnRlcnAoc2VsZiksIG1zZyk7CiAgICAgTEVBVkVfVENMCiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIApAQCAtMTY5Miw3ICsxNTA3LDggQEAKICAgICB0cmVzID0gVGNsX0dldFZhcjJFeChUa2FwcF9JbnRlcnAoc2VsZiksIG5hbWUxLCBuYW1lMiwgZmxhZ3MpOwogICAgIEVOVEVSX09WRVJMQVAKICAgICBpZiAodHJlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhUa2ludGVyX1RjbEVycm9yLCBUY2xfR2V0U3RyaW5nUmVzdWx0KFRrYXBwX0ludGVycChzZWxmKSkpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGtpbnRlcl9UY2xFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRjbF9HZXRTdHJpbmdSZXN1bHQoVGthcHBfSW50ZXJwKHNlbGYpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCgoVGthcHBPYmplY3QqKXNlbGYpLT53YW50b2JqZWN0cykgewogICAgICAgICAgICAgcmVzID0gRnJvbU9iaihzZWxmLCB0cmVzKTsKQEAgLTE3NTEsNyArMTU2Nyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogVGthcHBfR2xvYmFsVW5zZXRWYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiB2YXJfaW52b2tlKFVuc2V0VmFyLCBzZWxmLCBhcmdzLCBUQ0xfTEVBVkVfRVJSX01TRyB8IFRDTF9HTE9CQUxfT05MWSk7CisgICAgcmV0dXJuIHZhcl9pbnZva2UoVW5zZXRWYXIsIHNlbGYsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgVENMX0xFQVZFX0VSUl9NU0cgfCBUQ0xfR0xPQkFMX09OTFkpOwogfQogCiAKQEAgLTE5NzYsMjcgKzE3OTMsNiBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfTWVyZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKnM7Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0KLSAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICJtZXJnZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKLSAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBzID0gTWVyZ2UoYXJncyk7Ci0KLSAgICBpZiAocykgewotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzKTsKLSAgICAgICAgY2tmcmVlKHMpOwotICAgIH0KLQotICAgIHJldHVybiByZXM7Ci19Ci0KIAogCiAvKiogVGNsIENvbW1hbmQgKiovCkBAIC0yMTgyLDggKzE5NzgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIApAQCAtMjIyNCw4ICsyMDE5LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRraW50ZXJfVGNsRXJyb3IsICJjYW4ndCBkZWxldGUgVGNsIGNvbW1hbmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCkBAIC0yMzI5LDggKzIxMjMsNyBAQAogICAgIEVOVEVSX1RDTAogICAgIFRjbF9DcmVhdGVGaWxlSGFuZGxlcih0ZmlsZSwgbWFzaywgRmlsZUhhbmRsZXIsIChDbGllbnREYXRhKSBkYXRhKTsKICAgICBMRUFWRV9UQ0wKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMzU0LDE1ICsyMTQ3LDE0IEBACiAgICAgRU5URVJfVENMCiAgICAgVGNsX0RlbGV0ZUZpbGVIYW5kbGVyKHRmaWxlKTsKICAgICBMRUFWRV9UQ0wKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9DUkVBVEVGSUxFSEFORExFUiAqLwogCiAKIC8qKioqIFRrdHQgT2JqZWN0ICh0aW1lciB0b2tlbikgKioqKi8KIAotc3RhdGljIFB5VHlwZU9iamVjdCBUa3R0X1R5cGU7CitzdGF0aWMgUHlPYmplY3QgKlRrdHRfVHlwZTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTIzODcsOCArMjE3OSw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgUHlfREVDUkVGKHYpOyAvKiBTZWUgVGt0dF9OZXcoKSAqLwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUa3R0X21ldGhvZHNbXSA9CkBAIC0yNDAyLDcgKzIxOTMsNyBAQAogewogICAgIFRrdHRPYmplY3QgKnY7CiAKLSAgICB2ID0gUHlPYmplY3RfTmV3KFRrdHRPYmplY3QsICZUa3R0X1R5cGUpOworICAgIHYgPSBQeU9iamVjdF9OZXcoVGt0dE9iamVjdCwgKFB5VHlwZU9iamVjdCAqKSBUa3R0X1R5cGUpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yNDM1LDM4ICsyMjI2LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7CiB9CiAKLXN0YXRpYyBQeVR5cGVPYmplY3QgVGt0dF9UeXBlID0KLXsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAidGt0aW1lcnRva2VuIiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmFtZSAqLwotICAgIHNpemVvZihUa3R0T2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUgKi8KLSAgICBUa3R0X0RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQgKi8KLSAgICBUa3R0X1JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZmxhZ3MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgVGt0dF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLworc3RhdGljIFB5VHlwZV9TbG90IFRrdHRfVHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9kZWFsbG9jLCBUa3R0X0RlYWxsb2N9LAorICAgIHtQeV90cF9yZXByLCBUa3R0X1JlcHJ9LAorICAgIHtQeV90cF9tZXRob2RzLCBUa3R0X21ldGhvZHN9LAorICAgIHswLCAwfQogfTsKIAorc3RhdGljIFB5VHlwZV9TcGVjIFRrdHRfVHlwZV9zcGVjID0geworICAgICJ0a3RpbWVydG9rZW4iLAorICAgIHNpemVvZihUa3R0T2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICBUa3R0X1R5cGVfc2xvdHMsCit9OwogCiAKIC8qKiBUaW1lciBIYW5kbGVyICoqLwpAQCAtMjU4OCw4ICsyMzYxLDcgQEAKICAgICAgICAgZXhjSW5DbWQgPSB2YWxJbkNtZCA9IHRyYkluQ21kID0gTlVMTDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2MTUsOCArMjM4Nyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcXVpdE1haW5Mb29wID0gMTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNjY2LDE1ICsyNDM3LDE1IEBACiAgICAgfQogICAgIGlmIChfdGtfZXhpc3RzID09IE5VTEwgfHwgc3RyY21wKF90a19leGlzdHMsICIxIikgIT0gMCkgICAgIHsKICAgICAgICAgaWYgKFRrX0luaXQoaW50ZXJwKSAgICAgICAgICAgICA9PSBUQ0xfRVJST1IpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhUa2ludGVyX1RjbEVycm9yLCBUY2xfR2V0U3RyaW5nUmVzdWx0KFRrYXBwX0ludGVycChzZWxmKSkpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRraW50ZXJfVGNsRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGNsX0dldFN0cmluZ1Jlc3VsdChUa2FwcF9JbnRlcnAoc2VsZikpKTsKICNpZmRlZiBUS0lOVEVSX1BST1RFQ1RfTE9BRFRLCiAgICAgICAgICAgICB0a19sb2FkX2ZhaWxlZCA9IDE7CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2ODgsOCArMjQ1OSw3IEBACiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKChUa2FwcE9iamVjdCopc2VsZiktPndhbnRvYmplY3RzKTsKICAgICAoKFRrYXBwT2JqZWN0KilzZWxmKS0+d2FudG9iamVjdHMgPSB3YW50b2JqZWN0czsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2OTgsOCArMjQ2OCw3IEBACiAKICAgICAoKFRrYXBwT2JqZWN0KilzZWxmKS0+ZGlzcGF0Y2hpbmcgPSAxOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKQEAgLTI3MTAsOSArMjQ3OSw3IEBACiAgICAgeyJ3aWxsZGlzcGF0Y2giLCAgICAgICBUa2FwcF9XaWxsRGlzcGF0Y2gsIE1FVEhfTk9BUkdTfSwKICAgICB7IndhbnRvYmplY3RzIiwgICAgICAgICAgICBUa2FwcF9XYW50T2JqZWN0cywgTUVUSF9WQVJBUkdTfSwKICAgICB7ImNhbGwiLCAgICAgICAgICAgICAgICAgICBUa2FwcF9DYWxsLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2xvYmFsY2FsbCIsICAgICAgICAgICAgIFRrYXBwX0dsb2JhbENhbGwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJldmFsIiwgICAgICAgICAgICAgICAgICAgVGthcHBfRXZhbCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbGV2YWwiLCAgICAgICAgICAgICBUa2FwcF9HbG9iYWxFdmFsLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZXZhbGZpbGUiLCAgICAgICAgICAgICAgIFRrYXBwX0V2YWxGaWxlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVjb3JkIiwgICAgICAgICAgICAgICAgIFRrYXBwX1JlY29yZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImFkZGVycm9yaW5mbyIsICAgICAgIFRrYXBwX0FkZEVycm9ySW5mbywgTUVUSF9WQVJBUkdTfSwKQEAgLTI3MzEsNyArMjQ5OCw2IEBACiAgICAgeyJleHByYm9vbGVhbiIsICAgICAgICBUa2FwcF9FeHByQm9vbGVhbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7InNwbGl0bGlzdCIsICAgICAgICAgICAgICBUa2FwcF9TcGxpdExpc3QsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzcGxpdCIsICAgICAgICAgICAgICAgICAgVGthcHBfU3BsaXQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJtZXJnZSIsICAgICAgICAgICAgICAgICAgVGthcHBfTWVyZ2UsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjcmVhdGVjb21tYW5kIiwgICAgICBUa2FwcF9DcmVhdGVDb21tYW5kLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZGVsZXRlY29tbWFuZCIsICAgICAgVGthcHBfRGVsZXRlQ29tbWFuZCwgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0NSRUFURUZJTEVIQU5ETEVSCkBAIC0yNzYyLDM2ICsyNTI4LDE5IEBACiAgICAgRGlzYWJsZUV2ZW50SG9vaygpOwogfQogCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFRrYXBwX1R5cGUgPQotewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJ0a2FwcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lICovCi0gICAgc2l6ZW9mKFRrYXBwT2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSAqLwotICAgIFRrYXBwX0RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBUa2FwcF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCitzdGF0aWMgUHlUeXBlX1Nsb3QgVGthcHBfVHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9kZWFsbG9jLCBUa2FwcF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgVGthcHBfbWV0aG9kc30sCisgICAgezAsIDB9Cit9OworCisKK3N0YXRpYyBQeVR5cGVfU3BlYyBUa2FwcF9UeXBlX3NwZWMgPSB7CisgICAgInRrYXBwIiwKKyAgICBzaXplb2YoVGthcHBPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFRrYXBwX1R5cGVfc2xvdHMsCiB9OwogCiAKQEAgLTI5MzEsNyArMjY4MCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBUa2FwcF9OZXcoc2NyZWVuTmFtZSwgY2xhc3NOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlLCB3YW50b2JqZWN0cywgICAgIHdhbnRUaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHdhbnRUaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jLCB1c2UpOwogfQogCkBAIC0yOTQ3LDggKzI2OTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgVGtpbnRlcl9idXN5d2FpdGludGVydmFsID0gbmV3X3ZhbDsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBjaGFyIHNldGJ1c3l3YWl0aW50ZXJ2YWxfZG9jW10gPQpAQCAtMzA4MSwyNyArMjgyOSw2IEBACiB9CiAKIAotLyogYWxsIGVycm9ycyB3aWxsIGJlIGNoZWNrZWQgaW4gb25lIGZlbGwgc3dvb3AgaW4gaW5pdF90a2ludGVyKCkgKi8KLXN0YXRpYyB2b2lkCi1pbnNfbG9uZyhQeU9iamVjdCAqZCwgY2hhciAqbmFtZSwgbG9uZyB2YWwpCi17Ci0gICAgUHlPYmplY3QgKnYgPSBQeUxvbmdfRnJvbUxvbmcodmFsKTsKLSAgICBpZiAodikgewotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBuYW1lLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KLX0KLXN0YXRpYyB2b2lkCi1pbnNfc3RyaW5nKFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBjaGFyICp2YWwpCi17Ci0gICAgUHlPYmplY3QgKnYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh2YWwpOwotICAgIGlmICh2KSB7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQotfQotCi0KIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX3RraW50ZXJtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICJfdGtpbnRlciIsCkBAIC0zMTE3LDQ1ICsyODQ0LDExMSBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fdGtpbnRlcih2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqZCwgKnVleGUsICpjZXhlOwotCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmVGthcHBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgUHlPYmplY3QgKm0sICp1ZXhlLCAqY2V4ZSwgKm87CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHRjbF9sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmICh0Y2xfbG9jayA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3RraW50ZXJtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgVGtpbnRlcl9UY2xFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3RraW50ZXIuVGNsRXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVGNsRXJyb3IiLCBUa2ludGVyX1RjbEVycm9yKTsKLQotICAgIGluc19sb25nKGQsICJSRUFEQUJMRSIsIFRDTF9SRUFEQUJMRSk7Ci0gICAgaW5zX2xvbmcoZCwgIldSSVRBQkxFIiwgVENMX1dSSVRBQkxFKTsKLSAgICBpbnNfbG9uZyhkLCAiRVhDRVBUSU9OIiwgVENMX0VYQ0VQVElPTik7Ci0gICAgaW5zX2xvbmcoZCwgIldJTkRPV19FVkVOVFMiLCBUQ0xfV0lORE9XX0VWRU5UUyk7Ci0gICAgaW5zX2xvbmcoZCwgIkZJTEVfRVZFTlRTIiwgVENMX0ZJTEVfRVZFTlRTKTsKLSAgICBpbnNfbG9uZyhkLCAiVElNRVJfRVZFTlRTIiwgVENMX1RJTUVSX0VWRU5UUyk7Ci0gICAgaW5zX2xvbmcoZCwgIklETEVfRVZFTlRTIiwgVENMX0lETEVfRVZFTlRTKTsKLSAgICBpbnNfbG9uZyhkLCAiQUxMX0VWRU5UUyIsIFRDTF9BTExfRVZFTlRTKTsKLSAgICBpbnNfbG9uZyhkLCAiRE9OVF9XQUlUIiwgVENMX0RPTlRfV0FJVCk7Ci0gICAgaW5zX3N0cmluZyhkLCAiVEtfVkVSU0lPTiIsIFRLX1ZFUlNJT04pOwotICAgIGluc19zdHJpbmcoZCwgIlRDTF9WRVJTSU9OIiwgVENMX1ZFUlNJT04pOwotCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRrYXBwVHlwZSIsIChQeU9iamVjdCAqKSZUa2FwcF9UeXBlKTsKLQotICAgIGlmIChQeVR5cGVfUmVhZHkoJlRrdHRfVHlwZSkgPCAwKSB7CisgICAgbyA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3RraW50ZXIuVGNsRXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJUa3R0VHlwZSIsIChQeU9iamVjdCAqKSZUa3R0X1R5cGUpOworICAgIFB5X0lOQ1JFRihvKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJUY2xFcnJvciIsIG8pKSB7CisgICAgICAgIFB5X0RFQ1JFRihvKTsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgVGtpbnRlcl9UY2xFcnJvciA9IG87CiAKLSAgICBQeV9UWVBFKCZQeVRjbE9iamVjdF9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVGNsX09iaiIsIChQeU9iamVjdCAqKSZQeVRjbE9iamVjdF9UeXBlKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJFQURBQkxFIiwgVENMX1JFQURBQkxFKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIldSSVRBQkxFIiwgVENMX1dSSVRBQkxFKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVYQ0VQVElPTiIsIFRDTF9FWENFUFRJT04pKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiV0lORE9XX0VWRU5UUyIsIFRDTF9XSU5ET1dfRVZFTlRTKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkZJTEVfRVZFTlRTIiwgVENMX0ZJTEVfRVZFTlRTKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJTUVSX0VWRU5UUyIsIFRDTF9USU1FUl9FVkVOVFMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSURMRV9FVkVOVFMiLCBUQ0xfSURMRV9FVkVOVFMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUxMX0VWRU5UUyIsIFRDTF9BTExfRVZFTlRTKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkRPTlRfV0FJVCIsIFRDTF9ET05UX1dBSVQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiVEtfVkVSU0lPTiIsIFRLX1ZFUlNJT04pKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiVENMX1ZFUlNJT04iLCBUQ0xfVkVSU0lPTikpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvID0gUHlUeXBlX0Zyb21TcGVjKCZUa2FwcF9UeXBlX3NwZWMpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVGthcHBUeXBlIiwgbykpIHsKKyAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBUa2FwcF9UeXBlID0gbzsKKworICAgIG8gPSBQeVR5cGVfRnJvbVNwZWMoJlRrdHRfVHlwZV9zcGVjKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlRrdHRUeXBlIiwgbykpIHsKKyAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBUa3R0X1R5cGUgPSBvOworCisgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmUHlUY2xPYmplY3RfVHlwZV9zcGVjKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlRjbF9PYmoiLCBvKSkgeworICAgICAgICBQeV9ERUNSRUYobyk7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5VGNsT2JqZWN0X1R5cGUgPSBvOwogCiAjaWZkZWYgVEtfQVFVQQogICAgIC8qIFRrX01hY09TWFNldHVwVGtOb3RpZmllciBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgVGNsJ3Mgc3Vic3lzdGVtcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2luYXBpLmMgYi9Nb2R1bGVzL193aW5hcGkuYwppbmRleCAxMDc0ODkxLi5jMzRkMmRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL193aW5hcGkuYworKysgYi9Nb2R1bGVzL193aW5hcGkuYwpAQCAtNjIsNiArNjIsOCBAQAogCiAjZGVmaW5lIFRfSEFORExFIFRfUE9JTlRFUgogCisjZGVmaW5lIERXT1JEX01BWCA0Mjk0OTY3Mjk1VQorCiAvKiBHcmFiIENhbmNlbElvRXggZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwogc3RhdGljIGludCBoYXNfQ2FuY2VsSW9FeCA9IC0xOwogc3RhdGljIEJPT0wgKENBTExCQUNLICpQeV9DYW5jZWxJb0V4KShIQU5ETEUsIExQT1ZFUkxBUFBFRCk7CkBAIC0xMTQyLDcgKzExNDQsNyBAQAogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgUHlfYnVmZmVyIF9idWYsICpidWY7CiAgICAgUHlPYmplY3QgKmJ1Zm9iajsKLSAgICBEV09SRCB3cml0dGVuOworICAgIERXT1JEIGxlbiwgd3JpdHRlbjsKICAgICBCT09MIHJldDsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIERXT1JEIGVycjsKQEAgLTExNzAsNyArMTE3Miw4IEBACiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IFdyaXRlRmlsZShoYW5kbGUsIGJ1Zi0+YnVmLCBidWYtPmxlbiwgJndyaXR0ZW4sCisgICAgbGVuID0gKERXT1JEKVB5X01JTihidWYtPmxlbiwgRFdPUkRfTUFYKTsKKyAgICByZXQgPSBXcml0ZUZpbGUoaGFuZGxlLCBidWYtPmJ1ZiwgbGVuLCAmd3JpdHRlbiwKICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IDk2YzllNWIuLmY1NzA2ZGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTk2OCw4ICs5NjgsMTMgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShzZWxmKTsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzZWxmaSA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLCBpKTsKLSAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmaSwgdiwgUHlfRVEpOworICAgICAgICBQeU9iamVjdCAqc2VsZmk7CisgICAgICAgIGludCBjbXA7CisKKyAgICAgICAgc2VsZmkgPSBnZXRhcnJheWl0ZW0oKFB5T2JqZWN0ICopc2VsZiwgaSk7CisgICAgICAgIGlmIChzZWxmaSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmaSwgdiwgUHlfRVEpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZmkpOwogICAgICAgICBpZiAoY21wID4gMCkKICAgICAgICAgICAgIGNvdW50Kys7CkBAIC05OTAsOCArOTk1LDEzIEBACiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoc2VsZik7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqc2VsZmkgPSBnZXRhcnJheWl0ZW0oKFB5T2JqZWN0ICopc2VsZiwgaSk7Ci0gICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZmksIHYsIFB5X0VRKTsKKyAgICAgICAgUHlPYmplY3QgKnNlbGZpOworICAgICAgICBpbnQgY21wOworCisgICAgICAgIHNlbGZpID0gZ2V0YXJyYXlpdGVtKChQeU9iamVjdCAqKXNlbGYsIGkpOworICAgICAgICBpZiAoc2VsZmkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZmksIHYsIFB5X0VRKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGZpKTsKICAgICAgICAgaWYgKGNtcCA+IDApIHsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaSk7CkBAIC0xMDE2LDYgKzEwMjYsOCBAQAogCiAgICAgZm9yIChpID0gMCwgY21wID0gMCA7IGNtcCA9PSAwICYmIGkgPCBQeV9TSVpFKHNlbGYpOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnNlbGZpID0gZ2V0YXJyYXlpdGVtKChQeU9iamVjdCAqKXNlbGYsIGkpOworICAgICAgICBpZiAoc2VsZmkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGZpLCB2LCBQeV9FUSk7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmaSk7CiAgICAgfQpAQCAtMTAyOCw4ICsxMDQwLDEzIEBACiAgICAgaW50IGk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShzZWxmKTsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzZWxmaSA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLGkpOwotICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGZpLCB2LCBQeV9FUSk7CisgICAgICAgIFB5T2JqZWN0ICpzZWxmaTsKKyAgICAgICAgaW50IGNtcDsKKworICAgICAgICBzZWxmaSA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLGkpOworICAgICAgICBpZiAoc2VsZmkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZmksIHYsIFB5X0VRKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGZpKTsKICAgICAgICAgaWYgKGNtcCA+IDApIHsKICAgICAgICAgICAgIGlmIChhcnJheV9hc3Nfc2xpY2Uoc2VsZiwgaSwgaSsxLApAQCAtMTA2OCw3ICsxMDg1LDkgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJwb3AgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB2ID0gZ2V0YXJyYXlpdGVtKChQeU9iamVjdCAqKXNlbGYsaSk7CisgICAgdiA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLCBpKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM4NiwxMyArMTQwNSwxNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShzZWxmKTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gZ2V0YXJyYXlpdGVtKChQeU9iamVjdCAqKXNlbGYsIGkpOwotICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeUxpc3RfU2V0SXRlbShsaXN0LCBpLCB2KTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChQeUxpc3RfU2V0SXRlbShsaXN0LCBpLCB2KSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICByZXR1cm4gbGlzdDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGxpc3QpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIodG9saXN0X2RvYywKQEAgLTE2NjQsMTEgKzE2ODYsOCBAQAogc3RhdGljIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZQogdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKGNoYXIgdHlwZWNvZGUpCiB7Ci0jaWZkZWYgV09SRFNfQklHRU5ESUFOCi0gICAgY29uc3QgaW50IGlzX2JpZ19lbmRpYW4gPSAxOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgaXNfYmlnX2VuZGlhbiA9IDA7Ci0jZW5kaWYKKyAgICBjb25zdCBpbnQgaXNfYmlnX2VuZGlhbiA9IFBZX0JJR19FTkRJQU47CisKICAgICBzaXplX3QgaW50c2l6ZTsKICAgICBpbnQgaXNfc2lnbmVkOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jIGIvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYwppbmRleCBmNjhkODA0Li45ODg3MDE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKQEAgLTEwLDggKzEwLDYgQEAKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAoZm9yIGF0ZXhpdF9jbGVhbnVwKSAqLwogc3RhdGljIFB5T2JqZWN0ICphdGV4aXRfY2xlYXIoUHlPYmplY3QqLCBQeU9iamVjdCopOwotLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAoZm9yIGF0ZXhpdF9jYWxsZnVuY3MpICovCi1zdGF0aWMgdm9pZCBhdGV4aXRfY2xlYW51cChQeU9iamVjdCopOwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBtb2R1bGUgb2JqZWN0ICovCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGF0ZXhpdG1vZHVsZTsKIApAQCAtMzMsNiArMzEsMzUgQEAKICNkZWZpbmUgR0VUX0FURVhJVF9TVEFURShtb2QpICgoYXRleGl0bW9kdWxlX3N0YXRlKilQeU1vZHVsZV9HZXRTdGF0ZShtb2QpKQogCiAKK3N0YXRpYyB2b2lkCithdGV4aXRfZGVsZXRlX2NiKGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGUsIGludCBpKQoreworICAgIGF0ZXhpdF9jYWxsYmFjayAqY2I7CisKKyAgICBjYiA9IG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzW2ldOworICAgIG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzW2ldID0gTlVMTDsKKyAgICBQeV9ERUNSRUYoY2ItPmZ1bmMpOworICAgIFB5X0RFQ1JFRihjYi0+YXJncyk7CisgICAgUHlfWERFQ1JFRihjYi0+a3dhcmdzKTsKKyAgICBQeU1lbV9GcmVlKGNiKTsKK30KKworLyogQ2xlYXIgYWxsIGNhbGxiYWNrcyB3aXRob3V0IGNhbGxpbmcgdGhlbSAqLworc3RhdGljIHZvaWQKK2F0ZXhpdF9jbGVhbnVwKGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGUpCit7CisgICAgYXRleGl0X2NhbGxiYWNrICpjYjsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbW9kc3RhdGUtPm5jYWxsYmFja3M7IGkrKykgeworICAgICAgICBjYiA9IG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzW2ldOworICAgICAgICBpZiAoY2IgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF0ZXhpdF9kZWxldGVfY2IobW9kc3RhdGUsIGkpOworICAgIH0KKyAgICBtb2RzdGF0ZS0+bmNhbGxiYWNrcyA9IDA7Cit9CisKIC8qIEluc3RhbGxlZCBpbnRvIHB5dGhvbnJ1bi5jJ3MgYXRleGl0IG1lY2hhbmlzbSAqLwogCiBzdGF0aWMgdm9pZApAQCAtNzgsMzQgKzEwNSwxMiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgYXRleGl0X2NsZWFudXAobW9kdWxlKTsKKyAgICBhdGV4aXRfY2xlYW51cChtb2RzdGF0ZSk7CiAKICAgICBpZiAoZXhjX3R5cGUpCiAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKTsKIH0KIAotc3RhdGljIHZvaWQKLWF0ZXhpdF9kZWxldGVfY2IoUHlPYmplY3QgKnNlbGYsIGludCBpKQotewotICAgIGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGU7Ci0gICAgYXRleGl0X2NhbGxiYWNrICpjYjsKLQotICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShzZWxmKTsKLSAgICBjYiA9IG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzW2ldOwotICAgIG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzW2ldID0gTlVMTDsKLSAgICBQeV9ERUNSRUYoY2ItPmZ1bmMpOwotICAgIFB5X0RFQ1JFRihjYi0+YXJncyk7Ci0gICAgUHlfWERFQ1JFRihjYi0+a3dhcmdzKTsKLSAgICBQeU1lbV9GcmVlKGNiKTsKLX0KLQotc3RhdGljIHZvaWQKLWF0ZXhpdF9jbGVhbnVwKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpyID0gYXRleGl0X2NsZWFyKHNlbGYsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihyKTsKLX0KLQogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiBNb2R1bGUgbWV0aG9kcy4gKi8KIApAQCAtMTk0LDIxICsxOTksNTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdGV4aXRfY2xlYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CisgICAgYXRleGl0X2NsZWFudXAoR0VUX0FURVhJVF9TVEFURShzZWxmKSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihhdGV4aXRfbmNhbGxiYWNrc19fZG9jX18sCisiX25jYWxsYmFja3MoKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZCBleGl0IGZ1bmN0aW9ucy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2F0ZXhpdF9uY2FsbGJhY2tzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorewogICAgIGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGU7Ci0gICAgYXRleGl0X2NhbGxiYWNrICpjYjsKLSAgICBpbnQgaTsKIAogICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShzZWxmKTsKIAorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobW9kc3RhdGUtPm5jYWxsYmFja3MpOworfQorCitzdGF0aWMgaW50CithdGV4aXRfbV90cmF2ZXJzZShQeU9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgaW50IGk7CisgICAgYXRleGl0bW9kdWxlX3N0YXRlICptb2RzdGF0ZTsKKworICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShzZWxmKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kc3RhdGUtPm5jYWxsYmFja3M7IGkrKykgewotICAgICAgICBjYiA9IG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzW2ldOworICAgICAgICBhdGV4aXRfY2FsbGJhY2sgKmNiID0gbW9kc3RhdGUtPmF0ZXhpdF9jYWxsYmFja3NbaV07CiAgICAgICAgIGlmIChjYiA9PSBOVUxMKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXRleGl0X2RlbGV0ZV9jYihzZWxmLCBpKTsKKyAgICAgICAgUHlfVklTSVQoY2ItPmZ1bmMpOworICAgICAgICBQeV9WSVNJVChjYi0+YXJncyk7CisgICAgICAgIFB5X1ZJU0lUKGNiLT5rd2FyZ3MpOwogICAgIH0KLSAgICBtb2RzdGF0ZS0+bmNhbGxiYWNrcyA9IDA7Ci0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2F0ZXhpdF9tX2NsZWFyKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGU7CisgICAgbW9kc3RhdGUgPSBHRVRfQVRFWElUX1NUQVRFKHNlbGYpOworICAgIGF0ZXhpdF9jbGVhbnVwKG1vZHN0YXRlKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIxNiw2ICsyNTAsNyBAQAogewogICAgIGF0ZXhpdG1vZHVsZV9zdGF0ZSAqbW9kc3RhdGU7CiAgICAgbW9kc3RhdGUgPSBHRVRfQVRFWElUX1NUQVRFKG0pOworICAgIGF0ZXhpdF9jbGVhbnVwKG1vZHN0YXRlKTsKICAgICBQeU1lbV9GcmVlKG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzKTsKIH0KIApAQCAtMjQ2LDcgKzI4MSw3IEBACiAgICAgICAgIGlmIChlcSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGVxKQotICAgICAgICAgICAgYXRleGl0X2RlbGV0ZV9jYihzZWxmLCBpKTsKKyAgICAgICAgICAgIGF0ZXhpdF9kZWxldGVfY2IobW9kc3RhdGUsIGkpOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTI2MCw2ICsyOTUsOCBAQAogICAgICAgICBhdGV4aXRfdW5yZWdpc3Rlcl9fZG9jX199LAogICAgIHsiX3J1bl9leGl0ZnVuY3MiLCAoUHlDRnVuY3Rpb24pIGF0ZXhpdF9ydW5fZXhpdGZ1bmNzLCBNRVRIX05PQVJHUywKICAgICAgICAgYXRleGl0X3J1bl9leGl0ZnVuY3NfX2RvY19ffSwKKyAgICB7Il9uY2FsbGJhY2tzIiwgKFB5Q0Z1bmN0aW9uKSBhdGV4aXRfbmNhbGxiYWNrcywgTUVUSF9OT0FSR1MsCisgICAgICAgIGF0ZXhpdF9uY2FsbGJhY2tzX19kb2NfX30sCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjc1LDE1ICszMTIsMTUgQEAKIAogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGF0ZXhpdG1vZHVsZSA9IHsKLQlQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0JImF0ZXhpdCIsCi0JYXRleGl0X19kb2NfXywKLQlzaXplb2YoYXRleGl0bW9kdWxlX3N0YXRlKSwKLQlhdGV4aXRfbWV0aG9kcywKLQlOVUxMLAotCU5VTEwsCi0JTlVMTCwKLQkoZnJlZWZ1bmMpYXRleGl0X2ZyZWUKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgImF0ZXhpdCIsCisgICAgYXRleGl0X19kb2NfXywKKyAgICBzaXplb2YoYXRleGl0bW9kdWxlX3N0YXRlKSwKKyAgICBhdGV4aXRfbWV0aG9kcywKKyAgICBOVUxMLAorICAgIGF0ZXhpdF9tX3RyYXZlcnNlLAorICAgIGF0ZXhpdF9tX2NsZWFyLAorICAgIChmcmVlZnVuYylhdGV4aXRfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggN2U0MGJiZC4uNzE3NWNlYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTM3LDcgKzM3LDcgQEAKICAgICAgICAgdmFsID0gbWF4dmFsOwogICAgIGVsc2UgaWYgKHZhbCA8IG1pbnZhbCArIDEpCiAgICAgICAgIHZhbCA9IG1pbnZhbDsKLSAgICByZXR1cm4gdmFsOworICAgIHJldHVybiAoaW50KXZhbDsKIH0KIAogCkBAIC0xMTM3LDggKzExMzcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IGZvciBvdXRwdXQgYnVmZmVyIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwcmV2X2kgPSAoaW50ICopIG1hbGxvYyhuY2hhbm5lbHMgKiBzaXplb2YoaW50KSk7Ci0gICAgY3VyX2kgPSAoaW50ICopIG1hbGxvYyhuY2hhbm5lbHMgKiBzaXplb2YoaW50KSk7CisgICAgcHJldl9pID0gKGludCAqKSBQeU1lbV9NYWxsb2MobmNoYW5uZWxzICogc2l6ZW9mKGludCkpOworICAgIGN1cl9pID0gKGludCAqKSBQeU1lbV9NYWxsb2MobmNoYW5uZWxzICogc2l6ZW9mKGludCkpOwogICAgIGlmIChwcmV2X2kgPT0gTlVMTCB8fCBjdXJfaSA9PSBOVUxMKSB7CiAgICAgICAgICh2b2lkKSBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXQ7CkBAIC0xMjU3LDEwICsxMjU3LDggQEAKICAgICAgICAgfQogICAgIH0KICAgZXhpdDoKLSAgICBpZiAocHJldl9pICE9IE5VTEwpCi0gICAgICAgIGZyZWUocHJldl9pKTsKLSAgICBpZiAoY3VyX2kgIT0gTlVMTCkKLSAgICAgICAgZnJlZShjdXJfaSk7CisgICAgUHlNZW1fRnJlZShwcmV2X2kpOworICAgIFB5TWVtX0ZyZWUoY3VyX2kpOwogICAgIHJldHVybiBydjsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDM0MGVjOWMuLjM4NmMyZGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTM2MSw4ICszNjEsNyBAQAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAogICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICBydiA9IE5VTEw7CisgICAgICAgIFB5X0NMRUFSKHJ2KTsKICAgICB9CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJpbik7CiAgICAgcmV0dXJuIHJ2OwpAQCAtNDkxLDggKzQ5MCw3IEBACiAgICAgKi8KICAgICBpZiAoYmluX2xlbiA+IDApIHsKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIGJpbl9sZW4pIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgICAgIHJ2ID0gTlVMTDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJ2KTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKQEAgLTU2Myw4ICs1NjEsNyBAQAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAogICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICBydiA9IE5VTEw7CisgICAgICAgIFB5X0NMRUFSKHJ2KTsKICAgICB9CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CiAgICAgcmV0dXJuIHJ2OwpAQCAtNjQyLDggKzYzOSw3IEBACiAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCiAgICAgICAgICAgICAgICAgICAgICAgIChiaW5fZGF0YSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICBydiA9IE5VTEw7CisgICAgICAgIFB5X0NMRUFSKHJ2KTsKICAgICB9CiAgICAgaWYgKHJ2KSB7CiAgICAgICAgIFB5T2JqZWN0ICpycnYgPSBQeV9CdWlsZFZhbHVlKCJPaSIsIHJ2LCBkb25lKTsKQEAgLTcxMyw4ICs3MDksNyBAQAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAogICAgICAgICAgICAgICAgICAgICAgICAob3V0X2RhdGEgLQogICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcnYgPSBOVUxMOworICAgICAgICBQeV9DTEVBUihydik7CiAgICAgfQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogICAgIHJldHVybiBydjsKQEAgLTc3MCw4ICs3NjUsNyBAQAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAogICAgICAgICAgICAgICAgICAgICAgICAoYXNjaWlfZGF0YSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KSkpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICBydiA9IE5VTEw7CisgICAgICAgIFB5X0NMRUFSKHJ2KTsKICAgICB9CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJpbik7CiAgICAgcmV0dXJuIHJ2OwpAQCAtODM0LDcgKzgyOCw3IEBACiAgICAgICAgICAgICAgaWYgKCAtLW91dF9sZW5fbGVmdCA8IDAgKSB7IFwKICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG91dF9sZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIDIqb3V0X2xlbikgPCAwKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICB7IFB5X0RFQ1JFRihydik7IFB5QnVmZmVyX1JlbGVhc2UoJnBpbik7IHJldHVybiBOVUxMOyB9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgUHlfWERFQ1JFRihydik7IFB5QnVmZmVyX1JlbGVhc2UoJnBpbik7IHJldHVybiBOVUxMOyB9IFwKICAgICAgICAgICAgICAgICAgICAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG91dF9sZW47IFwKICAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuX2xlZnQgPSBvdXRfbGVuLTE7IFwKQEAgLTg4Nyw4ICs4ODEsNyBAQAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAogICAgICAgICAgICAgICAgICAgICAgICAob3V0X2RhdGEgLQogICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcnYgPSBOVUxMOworICAgICAgICBQeV9DTEVBUihydik7CiAgICAgfQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBpbik7CiAgICAgcmV0dXJuIHJ2OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCmluZGV4IDllOWU5NmMuLjI4NWRhMWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKQEAgLTIzLDEyICsyMywxMiBAQAogICogQTg0NCAgICAgICAgIHVuZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgVSsyMDE1IEhPUklaT05UQUwgQkFSCiAgKi8KIAotI2RlZmluZSBHQktfREVDT0RFKGRjMSwgZGMyLCBhc3NpKSBcCi0gICAgaWYgKChkYzEpID09IDB4YTEgJiYgKGRjMikgPT0gMHhhYSkgKGFzc2kpID0gMHgyMDE0OyBcCi0gICAgZWxzZSBpZiAoKGRjMSkgPT0gMHhhOCAmJiAoZGMyKSA9PSAweDQ0KSAoYXNzaSkgPSAweDIwMTU7IFwKLSAgICBlbHNlIGlmICgoZGMxKSA9PSAweGExICYmIChkYzIpID09IDB4YTQpIChhc3NpKSA9IDB4MDBiNzsgXAotICAgIGVsc2UgVFJZTUFQX0RFQyhnYjIzMTIsIGFzc2ksIGRjMSBeIDB4ODAsIGRjMiBeIDB4ODApOyBcCi0gICAgZWxzZSBUUllNQVBfREVDKGdia2V4dCwgYXNzaSwgZGMxLCBkYzIpOworI2RlZmluZSBHQktfREVDT0RFKGRjMSwgZGMyLCB3cml0ZXIpIFwKKyAgICBpZiAoKGRjMSkgPT0gMHhhMSAmJiAoZGMyKSA9PSAweGFhKSBPVVRDSEFSKDB4MjAxNCk7IFwKKyAgICBlbHNlIGlmICgoZGMxKSA9PSAweGE4ICYmIChkYzIpID09IDB4NDQpIE9VVENIQVIoMHgyMDE1KTsgXAorICAgIGVsc2UgaWYgKChkYzEpID09IDB4YTEgJiYgKGRjMikgPT0gMHhhNCkgT1VUQ0hBUigweDAwYjcpOyBcCisgICAgZWxzZSBUUllNQVBfREVDKGdiMjMxMiwgd3JpdGVyLCBkYzEgXiAweDgwLCBkYzIgXiAweDgwKTsgXAorICAgIGVsc2UgVFJZTUFQX0RFQyhnYmtleHQsIHdyaXRlciwgZGMxLCBkYzIpOwogCiAjZGVmaW5lIEdCS19FTkNPREUoY29kZSwgYXNzaSkgXAogICAgIGlmICgoY29kZSkgPT0gMHgyMDE0KSAoYXNzaSkgPSAweGExYWE7IFwKQEAgLTQyLDE2ICs0MiwxOCBAQAogCiBFTkNPREVSKGdiMjMxMikKIHsKLSAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBJTjE7CisgICAgd2hpbGUgKCppbnBvcyA8IGlubGVuKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IElOQ0hBUjE7CiAgICAgICAgIERCQ0hBUiBjb2RlOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgV1JJVEUxKCh1bnNpZ25lZCBjaGFyKWMpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBXUklURUJZVEUxKCh1bnNpZ25lZCBjaGFyKWMpCisgICAgICAgICAgICBORVhUKDEsIDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgVUNTNElOVkFMSUQoYykKKworICAgICAgICBpZiAoYyA+IDB4RkZGRikKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIFJFUVVJUkVfT1VUQlVGKDIpCiAgICAgICAgIFRSWU1BUF9FTkMoZ2Jjb21tb24sIGNvZGUsIGMpOwpAQCAtNjAsOSArNjIsOSBAQAogICAgICAgICBpZiAoY29kZSAmIDB4ODAwMCkgLyogTVNCIHNldDogR0JLICovCiAgICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBPVVQxKChjb2RlID4+IDgpIHwgMHg4MCkKLSAgICAgICAgT1VUMigoY29kZSAmIDB4RkYpIHwgMHg4MCkKLSAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICBPVVRCWVRFMSgoY29kZSA+PiA4KSB8IDB4ODApCisgICAgICAgIE9VVEJZVEUyKChjb2RlICYgMHhGRikgfCAweDgwKQorICAgICAgICBORVhUKDEsIDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtNzMsMTcgKzc1LDE1IEBACiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKippbmJ1ZjsKIAotICAgICAgICBSRVFVSVJFX09VVEJVRigxKQotCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgT1VUMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKLSAgICAgICAgVFJZTUFQX0RFQyhnYjIzMTIsICoqb3V0YnVmLCBjIF4gMHg4MCwgSU4yIF4gMHg4MCkgewotICAgICAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICBUUllNQVBfREVDKGdiMjMxMiwgd3JpdGVyLCBjIF4gMHg4MCwgSU5CWVRFMiBeIDB4ODApIHsKKyAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICB9CkBAIC05OCwyOCArOTgsMzAgQEAKIAogRU5DT0RFUihnYmspCiB7Ci0gICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gSU4xOworICAgIHdoaWxlICgqaW5wb3MgPCBpbmxlbikgeworICAgICAgICBQeV9VQ1M0IGMgPSBJTkNIQVIxOwogICAgICAgICBEQkNIQVIgY29kZTsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKLSAgICAgICAgICAgIFdSSVRFMSgodW5zaWduZWQgY2hhciljKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgV1JJVEVCWVRFMSgodW5zaWduZWQgY2hhciljKQorICAgICAgICAgICAgTkVYVCgxLCAxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIFVDUzRJTlZBTElEKGMpCisKKyAgICAgICAgaWYgKGMgPiAweEZGRkYpCisgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBSRVFVSVJFX09VVEJVRigyKQogCiAgICAgICAgIEdCS19FTkNPREUoYywgY29kZSkKICAgICAgICAgZWxzZSByZXR1cm4gMTsKIAotICAgICAgICBPVVQxKChjb2RlID4+IDgpIHwgMHg4MCkKKyAgICAgICAgT1VUQllURTEoKGNvZGUgPj4gOCkgfCAweDgwKQogICAgICAgICBpZiAoY29kZSAmIDB4ODAwMCkKLSAgICAgICAgICAgIE9VVDIoKGNvZGUgJiAweEZGKSkgLyogTVNCIHNldDogR0JLICovCisgICAgICAgICAgICBPVVRCWVRFMigoY29kZSAmIDB4RkYpKSAvKiBNU0Igc2V0OiBHQksgKi8KICAgICAgICAgZWxzZQotICAgICAgICAgICAgT1VUMigoY29kZSAmIDB4RkYpIHwgMHg4MCkgLyogTVNCIHVuc2V0OiBHQjIzMTIgKi8KLSAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICAgICAgT1VUQllURTIoKGNvZGUgJiAweEZGKSB8IDB4ODApIC8qIE1TQiB1bnNldDogR0IyMzEyICovCisgICAgICAgIE5FWFQoMSwgMik7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMjgsMjIgKzEzMCwyMCBAQAogREVDT0RFUihnYmspCiB7CiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU4xOwotCi0gICAgICAgIFJFUVVJUkVfT1VUQlVGKDEpCisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOQllURTE7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBPVVQxKGMpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBPVVRDSEFSKGMpOworICAgICAgICAgICAgTkVYVF9JTigxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogCi0gICAgICAgIEdCS19ERUNPREUoYywgSU4yLCAqKm91dGJ1ZikKKyAgICAgICAgR0JLX0RFQ09ERShjLCBJTkJZVEUyLCB3cml0ZXIpCiAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKLSAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICBORVhUX0lOKDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTU2LDQxICsxNTYsMzEgQEAKIAogRU5DT0RFUihnYjE4MDMwKQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVjczRfdCBjID0gSU4xOworICAgIHdoaWxlICgqaW5wb3MgPCBpbmxlbikgeworICAgICAgICBQeV9VQ1M0IGMgPSBJTkNIQVIxOwogICAgICAgICBEQkNIQVIgY29kZTsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKLSAgICAgICAgICAgIFdSSVRFMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgV1JJVEVCWVRFMShjKQorICAgICAgICAgICAgTkVYVCgxLCAxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgREVDT0RFX1NVUlJPR0FURShjKQotICAgICAgICBpZiAoYyA+IDB4MTBGRkZGKQotI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0gICAgICAgICAgICByZXR1cm4gMjsgLyogc3Vycm9nYXRlcyBwYWlyICovCi0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0jZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoYyA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICB1Y3M0X3QgdGMgPSBjIC0gMHgxMDAwMDsKKyAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgUHlfVUNTNCB0YyA9IGMgLSAweDEwMDAwOworICAgICAgICAgICAgYXNzZXJ0IChjIDw9IDB4MTBGRkZGKTsKIAogICAgICAgICAgICAgUkVRVUlSRV9PVVRCVUYoNCkKIAotICAgICAgICAgICAgT1VUNCgodW5zaWduZWQgY2hhcikodGMgJSAxMCkgKyAweDMwKQorICAgICAgICAgICAgT1VUQllURTQoKHVuc2lnbmVkIGNoYXIpKHRjICUgMTApICsgMHgzMCkKICAgICAgICAgICAgIHRjIC89IDEwOwotICAgICAgICAgICAgT1VUMygodW5zaWduZWQgY2hhcikodGMgJSAxMjYpICsgMHg4MSkKKyAgICAgICAgICAgIE9VVEJZVEUzKCh1bnNpZ25lZCBjaGFyKSh0YyAlIDEyNikgKyAweDgxKQogICAgICAgICAgICAgdGMgLz0gMTI2OwotICAgICAgICAgICAgT1VUMigodW5zaWduZWQgY2hhcikodGMgJSAxMCkgKyAweDMwKQorICAgICAgICAgICAgT1VUQllURTIoKHVuc2lnbmVkIGNoYXIpKHRjICUgMTApICsgMHgzMCkKICAgICAgICAgICAgIHRjIC89IDEwOwotICAgICAgICAgICAgT1VUMSgodW5zaWduZWQgY2hhcikodGMgKyAweDkwKSkKKyAgICAgICAgICAgIE9VVEJZVEUxKCh1bnNpZ25lZCBjaGFyKSh0YyArIDB4OTApKQogCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSAgICAgICAgICAgIE5FWFQoMiwgNCkgLyogc3Vycm9nYXRlcyBwYWlyICovCi0jZWxzZQotICAgICAgICAgICAgTkVYVCgxLCA0KQotI2VuZGlmCisgICAgICAgICAgICBORVhUKDEsIDQpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMjA4LDIwICsxOTgsMjAgQEAKICAgICAgICAgICAgICAgICAgdXRycmFuZ2UrKykKICAgICAgICAgICAgICAgICBpZiAodXRycmFuZ2UtPmZpcnN0IDw9IGMgJiYKICAgICAgICAgICAgICAgICAgICAgYyA8PSB1dHJyYW5nZS0+bGFzdCkgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIHRjOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IHRjOwogCiAgICAgICAgICAgICAgICAgICAgIHRjID0gYyAtIHV0cnJhbmdlLT5maXJzdCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgdXRycmFuZ2UtPmJhc2U7CiAKLSAgICAgICAgICAgICAgICAgICAgT1VUNCgodW5zaWduZWQgY2hhcikodGMgJSAxMCkgKyAweDMwKQorICAgICAgICAgICAgICAgICAgICBPVVRCWVRFNCgodW5zaWduZWQgY2hhcikodGMgJSAxMCkgKyAweDMwKQogICAgICAgICAgICAgICAgICAgICB0YyAvPSAxMDsKLSAgICAgICAgICAgICAgICAgICAgT1VUMygodW5zaWduZWQgY2hhcikodGMgJSAxMjYpICsgMHg4MSkKKyAgICAgICAgICAgICAgICAgICAgT1VUQllURTMoKHVuc2lnbmVkIGNoYXIpKHRjICUgMTI2KSArIDB4ODEpCiAgICAgICAgICAgICAgICAgICAgIHRjIC89IDEyNjsKLSAgICAgICAgICAgICAgICAgICAgT1VUMigodW5zaWduZWQgY2hhcikodGMgJSAxMCkgKyAweDMwKQorICAgICAgICAgICAgICAgICAgICBPVVRCWVRFMigodW5zaWduZWQgY2hhcikodGMgJSAxMCkgKyAweDMwKQogICAgICAgICAgICAgICAgICAgICB0YyAvPSAxMDsKLSAgICAgICAgICAgICAgICAgICAgT1VUMSgodW5zaWduZWQgY2hhcil0YyArIDB4ODEpCisgICAgICAgICAgICAgICAgICAgIE9VVEJZVEUxKCh1bnNpZ25lZCBjaGFyKXRjICsgMHg4MSkKIAotICAgICAgICAgICAgICAgICAgICBORVhUKDEsIDQpCisgICAgICAgICAgICAgICAgICAgIE5FWFQoMSwgNCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjMwLDEzICsyMjAsMTMgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgT1VUMSgoY29kZSA+PiA4KSB8IDB4ODApCisgICAgICAgIE9VVEJZVEUxKChjb2RlID4+IDgpIHwgMHg4MCkKICAgICAgICAgaWYgKGNvZGUgJiAweDgwMDApCi0gICAgICAgICAgICBPVVQyKChjb2RlICYgMHhGRikpIC8qIE1TQiBzZXQ6IEdCSyBvciBHQjE4MDMwZXh0ICovCisgICAgICAgICAgICBPVVRCWVRFMigoY29kZSAmIDB4RkYpKSAvKiBNU0Igc2V0OiBHQksgb3IgR0IxODAzMGV4dCAqLwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBPVVQyKChjb2RlICYgMHhGRikgfCAweDgwKSAvKiBNU0IgdW5zZXQ6IEdCMjMxMiAqLworICAgICAgICAgICAgT1VUQllURTIoKGNvZGUgJiAweEZGKSB8IDB4ODApIC8qIE1TQiB1bnNldDogR0IyMzEyICovCiAKLSAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICBORVhUKDEsIDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjQ1LDYxICsyMzUsNTkgQEAKIERFQ09ERVIoZ2IxODAzMCkKIHsKICAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTjEsIGMyOwotCi0gICAgICAgIFJFUVVJUkVfT1VUQlVGKDEpCisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOQllURTEsIGMyOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgT1VUMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKIAotICAgICAgICBjMiA9IElOMjsKKyAgICAgICAgYzIgPSBJTkJZVEUyOwogICAgICAgICBpZiAoYzIgPj0gMHgzMCAmJiBjMiA8PSAweDM5KSB7IC8qIDQgYnl0ZXMgc2VxICovCiAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2diMTgwMzBfdG9fdW5pYm1wX3JhbmdlcyAqdXRyOwogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMywgYzQ7Ci0gICAgICAgICAgICB1Y3M0X3QgbHNlcTsKKyAgICAgICAgICAgIFB5X1VDUzQgbHNlcTsKIAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRig0KQotICAgICAgICAgICAgYzMgPSBJTjM7Ci0gICAgICAgICAgICBjNCA9IElONDsKKyAgICAgICAgICAgIGMzID0gSU5CWVRFMzsKKyAgICAgICAgICAgIGM0ID0gSU5CWVRFNDsKICAgICAgICAgICAgIGlmIChjIDwgMHg4MSB8fCBjMyA8IDB4ODEgfHwgYzQgPCAweDMwIHx8IGM0ID4gMHgzOSkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIGMgLT0gMHg4MTsgIGMyIC09IDB4MzA7CiAgICAgICAgICAgICBjMyAtPSAweDgxOyBjNCAtPSAweDMwOwogCiAgICAgICAgICAgICBpZiAoYyA8IDQpIHsgLyogVSswMDgwIC0gVStGRkZGICovCi0gICAgICAgICAgICAgICAgbHNlcSA9ICgodWNzNF90KWMgKiAxMCArIGMyKSAqIDEyNjAgKwotICAgICAgICAgICAgICAgICAgICAodWNzNF90KWMzICogMTAgKyBjNDsKKyAgICAgICAgICAgICAgICBsc2VxID0gKChQeV9VQ1M0KWMgKiAxMCArIGMyKSAqIDEyNjAgKworICAgICAgICAgICAgICAgICAgICAoUHlfVUNTNCljMyAqIDEwICsgYzQ7CiAgICAgICAgICAgICAgICAgaWYgKGxzZXEgPCAzOTQyMCkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHV0ciA9IGdiMTgwMzBfdG9fdW5pYm1wX3JhbmdlczsKICAgICAgICAgICAgICAgICAgICAgICAgICBsc2VxID49ICh1dHIgKyAxKS0+YmFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICB1dHIrKykgOwotICAgICAgICAgICAgICAgICAgICBPVVQxKHV0ci0+Zmlyc3QgLSB1dHItPmJhc2UgKyBsc2VxKQotICAgICAgICAgICAgICAgICAgICBORVhUKDQsIDEpCisgICAgICAgICAgICAgICAgICAgIE9VVENIQVIodXRyLT5maXJzdCAtIHV0ci0+YmFzZSArIGxzZXEpOworICAgICAgICAgICAgICAgICAgICBORVhUX0lOKDQpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49IDE1KSB7IC8qIFUrMTAwMDAgLSBVKzEwRkZGRiAqLwotICAgICAgICAgICAgICAgIGxzZXEgPSAweDEwMDAwICsgKCgodWNzNF90KWMtMTUpICogMTAgKyBjMikKLSAgICAgICAgICAgICAgICAgICAgKiAxMjYwICsgKHVjczRfdCljMyAqIDEwICsgYzQ7CisgICAgICAgICAgICAgICAgbHNlcSA9IDB4MTAwMDAgKyAoKChQeV9VQ1M0KWMtMTUpICogMTAgKyBjMikKKyAgICAgICAgICAgICAgICAgICAgKiAxMjYwICsgKFB5X1VDUzQpYzMgKiAxMCArIGM0OwogICAgICAgICAgICAgICAgIGlmIChsc2VxIDw9IDB4MTBGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdSSVRFVUNTNChsc2VxKTsKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9JTig0KQorICAgICAgICAgICAgICAgICAgICBPVVRDSEFSKGxzZXEpOworICAgICAgICAgICAgICAgICAgICBORVhUX0lOKDQpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogCi0gICAgICAgIEdCS19ERUNPREUoYywgYzIsICoqb3V0YnVmKQotICAgICAgICBlbHNlIFRSWU1BUF9ERUMoZ2IxODAzMGV4dCwgKipvdXRidWYsIGMsIGMyKTsKKyAgICAgICAgR0JLX0RFQ09ERShjLCBjMiwgd3JpdGVyKQorICAgICAgICBlbHNlIFRSWU1BUF9ERUMoZ2IxODAzMGV4dCwgd3JpdGVyLCBjLCBjMik7CiAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKLSAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICBORVhUX0lOKDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMzE5LDMzICszMDcsMzQgQEAKIEVOQ09ERVJfUkVTRVQoaHopCiB7CiAgICAgaWYgKHN0YXRlLT5pICE9IDApIHsKLSAgICAgICAgV1JJVEUyKCd+JywgJ30nKQorICAgICAgICBXUklURUJZVEUyKCd+JywgJ30nKQogICAgICAgICBzdGF0ZS0+aSA9IDA7Ci0gICAgICAgIE5FWFRfT1VUKDIpCisgICAgICAgIE5FWFRfT1VUKDIpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAogRU5DT0RFUihoeikKIHsKLSAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBJTjE7CisgICAgd2hpbGUgKCppbnBvcyA8IGlubGVuKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IElOQ0hBUjE7CiAgICAgICAgIERCQ0hBUiBjb2RlOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewogICAgICAgICAgICAgaWYgKHN0YXRlLT5pID09IDApIHsKLSAgICAgICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpYykKLSAgICAgICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICAgICAgV1JJVEVCWVRFMSgodW5zaWduZWQgY2hhciljKQorICAgICAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBXUklURTMoJ34nLCAnfScsICh1bnNpZ25lZCBjaGFyKWMpCi0gICAgICAgICAgICAgICAgTkVYVCgxLCAzKQorICAgICAgICAgICAgICAgIFdSSVRFQllURTMoJ34nLCAnfScsICh1bnNpZ25lZCBjaGFyKWMpCisgICAgICAgICAgICAgICAgTkVYVCgxLCAzKTsKICAgICAgICAgICAgICAgICBzdGF0ZS0+aSA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFVDUzRJTlZBTElEKGMpCisgICAgICAgIGlmIChjID4gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgVFJZTUFQX0VOQyhnYmNvbW1vbiwgY29kZSwgYyk7CiAgICAgICAgIGVsc2UgcmV0dXJuIDE7CkBAIC0zNTQsMTMgKzM0MywxMyBAQAogICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgaWYgKHN0YXRlLT5pID09IDApIHsKLSAgICAgICAgICAgIFdSSVRFNCgnficsICd7JywgY29kZSA+PiA4LCBjb2RlICYgMHhmZikKLSAgICAgICAgICAgIE5FWFQoMSwgNCkKKyAgICAgICAgICAgIFdSSVRFQllURTQoJ34nLCAneycsIGNvZGUgPj4gOCwgY29kZSAmIDB4ZmYpCisgICAgICAgICAgICBORVhUKDEsIDQpOwogICAgICAgICAgICAgc3RhdGUtPmkgPSAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgV1JJVEUyKGNvZGUgPj4gOCwgY29kZSAmIDB4ZmYpCi0gICAgICAgICAgICBORVhUKDEsIDIpCisgICAgICAgICAgICBXUklURUJZVEUyKGNvZGUgPj4gOCwgY29kZSAmIDB4ZmYpCisgICAgICAgICAgICBORVhUKDEsIDIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODIsMTUgKzM3MSwxNSBAQAogREVDT0RFUihoeikKIHsKICAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTjE7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOQllURTE7CiAKICAgICAgICAgaWYgKGMgPT0gJ34nKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyID0gSU4yOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMiA9IElOQllURTI7CiAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKICAgICAgICAgICAgIGlmIChjMiA9PSAnficpIHsKLSAgICAgICAgICAgICAgICBXUklURTEoJ34nKQotICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgICAgICAgICBPVVRDSEFSKCd+Jyk7CisgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMyID09ICd7JyAmJiBzdGF0ZS0+aSA9PSAwKQpAQCAtNDAxLDcgKzM5MCw3IEBACiAgICAgICAgICAgICAgICAgOyAvKiBsaW5lLWNvbnRpbnVhdGlvbiAqLwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgTkVYVCgyLCAwKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00MDksMTQgKzM5OCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgaWYgKHN0YXRlLT5pID09IDApIHsgLyogQVNDSUkgbW9kZSAqLwotICAgICAgICAgICAgV1JJVEUxKGMpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBPVVRDSEFSKGMpOworICAgICAgICAgICAgTkVYVF9JTigxKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsgLyogR0IgbW9kZSAqLwogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQotICAgICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKLSAgICAgICAgICAgIFRSWU1BUF9ERUMoZ2IyMzEyLCAqKm91dGJ1ZiwgYywgSU4yKSB7Ci0gICAgICAgICAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICAgICAgVFJZTUFQX0RFQyhnYjIzMTIsIHdyaXRlciwgYywgSU5CWVRFMikgeworICAgICAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMKaW5kZXggZDNhZDA0Yi4uZmU1ZjU5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYwpAQCAtMzgsMzUgKzM4LDM5IEBACiAKIEVOQ09ERVIoYmlnNWhrc2NzKQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVjczRfdCBjID0gKippbmJ1ZjsKKyAgICB3aGlsZSAoKmlucG9zIDwgaW5sZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjID0gSU5DSEFSMTsKICAgICAgICAgREJDSEFSIGNvZGU7CiAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewogICAgICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKICAgICAgICAgICAgICoqb3V0YnVmID0gKHVuc2lnbmVkIGNoYXIpYzsKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIERFQ09ERV9TVVJST0dBVEUoYykKLSAgICAgICAgaW5zaXplID0gR0VUX0lOU0laRShjKTsKLQorICAgICAgICBpbnNpemUgPSAxOwogICAgICAgICBSRVFVSVJFX09VVEJVRigyKQogCiAgICAgICAgIGlmIChjIDwgMHgxMDAwMCkgewogICAgICAgICAgICAgVFJZTUFQX0VOQyhiaWc1aGtzY3NfYm1wLCBjb2RlLCBjKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gTVVMVElDKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmxlZnQgPj0gMiAmJgorICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGMyOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5sZW4gLSAqaW5wb3MgPj0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gSU5DSEFSMjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYzIgPSAwOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmxlbiAtICppbnBvcyA+PSAyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiAweGZmZGYpID09IDB4MDBjYSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICgoKCppbmJ1ZilbMV0gJiAweGZmZjcpID09IDB4MDMwNCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoYzIgJiAweGZmZjcpID09IDB4MDMwNCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBiaWc1aGtzY3NfcGFpcmVuY190YWJsZVsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgPj4gNCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCppbmJ1ZilbMV0gPj4gMykpICYgM107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjMiA+PiAzKSkgJiAzXTsKICAgICAgICAgICAgICAgICAgICAgICAgIGluc2l6ZSA9IDI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5sZWZ0IDwgMiAmJgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmxlbiAtICppbnBvcyA8IDIgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIE1CRU5DX0ZMVVNIKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNQkVSUl9UT09GRVc7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtODksOSArOTMsOSBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gaW5zaXplOwogCi0gICAgICAgIE9VVDEoY29kZSA+PiA4KQotICAgICAgICBPVVQyKGNvZGUgJiAweEZGKQotICAgICAgICBORVhUKGluc2l6ZSwgMikKKyAgICAgICAgT1VUQllURTEoY29kZSA+PiA4KQorICAgICAgICBPVVRCWVRFMihjb2RlICYgMHhGRikKKyAgICAgICAgTkVYVChpbnNpemUsIDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTAyLDMzICsxMDYsMzEgQEAKIERFQ09ERVIoYmlnNWhrc2NzKQogewogICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOMTsKLSAgICAgICAgdWNzNF90IGRlY29kZWQ7Ci0KLSAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU5CWVRFMTsKKyAgICAgICAgUHlfVUNTNCBkZWNvZGVkOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgT1VUMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKIAotICAgICAgICBpZiAoMHhjNiA+IGMgfHwgYyA+IDB4YzggfHwgKGMgPCAweGM3ICYmIElOMiA8IDB4YTEpKSB7Ci0gICAgICAgICAgICBUUllNQVBfREVDKGJpZzUsICoqb3V0YnVmLCBjLCBJTjIpIHsKLSAgICAgICAgICAgICAgICBORVhUKDIsIDEpCisgICAgICAgIGlmICgweGM2ID4gYyB8fCBjID4gMHhjOCB8fCAoYyA8IDB4YzcgJiYgSU5CWVRFMiA8IDB4YTEpKSB7CisgICAgICAgICAgICBUUllNQVBfREVDKGJpZzUsIHdyaXRlciwgYywgSU5CWVRFMikgeworICAgICAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBUUllNQVBfREVDKGJpZzVoa3NjcywgZGVjb2RlZCwgYywgSU4yKQorICAgICAgICBUUllNQVBfREVDX0NIQVIoYmlnNWhrc2NzLCBkZWNvZGVkLCBjLCBJTkJZVEUyKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcyA9IEJIMlMoYywgSU4yKTsKKyAgICAgICAgICAgIGludCBzID0gQkgyUyhjLCBJTkJZVEUyKTsKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhpbnRiYXNlOwogCiAgICAgICAgICAgICBhc3NlcnQoMHg4NyA8PSBjICYmIGMgPD0gMHhmZSk7Ci0gICAgICAgICAgICBhc3NlcnQoMHg0MCA8PSBJTjIgJiYgSU4yIDw9IDB4ZmUpOworICAgICAgICAgICAgYXNzZXJ0KDB4NDAgPD0gSU5CWVRFMiAmJiBJTkJZVEUyIDw9IDB4ZmUpOwogCiAgICAgICAgICAgICBpZiAoQkgyUygweDg3LCAweDQwKSA8PSBzICYmIHMgPD0gQkgyUygweGEwLCAweGZlKSkgewogICAgICAgICAgICAgICAgICAgICBoaW50YmFzZSA9IGJpZzVoa3Njc19waGludF8wOwpAQCAtMTQ2LDI1ICsxNDgsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1CRVJSX0lOVEVSTkFMOwogCiAgICAgICAgICAgICBpZiAoaGludGJhc2VbcyA+PiAzXSAmICgxIDw8IChzICYgNykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdSSVRFVUNTNChkZWNvZGVkIHwgMHgyMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9JTigyKQorICAgICAgICAgICAgICAgICAgICBPVVRDSEFSKGRlY29kZWQgfCAweDIwMDAwKTsKKyAgICAgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBPVVQxKGRlY29kZWQpCi0gICAgICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgICAgICAgICAgICAgT1VUQ0hBUihkZWNvZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoICgoYyA8PCA4KSB8IElOMikgewotICAgICAgICBjYXNlIDB4ODg2MjogV1JJVEUyKDB4MDBjYSwgMHgwMzA0KTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgMHg4ODY0OiBXUklURTIoMHgwMGNhLCAweDAzMGMpOyBicmVhazsKLSAgICAgICAgY2FzZSAweDg4YTM6IFdSSVRFMigweDAwZWEsIDB4MDMwNCk7IGJyZWFrOwotICAgICAgICBjYXNlIDB4ODhhNTogV1JJVEUyKDB4MDBlYSwgMHgwMzBjKTsgYnJlYWs7CisgICAgICAgIHN3aXRjaCAoKGMgPDwgOCkgfCBJTkJZVEUyKSB7CisgICAgICAgIGNhc2UgMHg4ODYyOiBPVVRDSEFSMigweDAwY2EsIDB4MDMwNCk7IGJyZWFrOworICAgICAgICBjYXNlIDB4ODg2NDogT1VUQ0hBUjIoMHgwMGNhLCAweDAzMGMpOyBicmVhazsKKyAgICAgICAgY2FzZSAweDg4YTM6IE9VVENIQVIyKDB4MDBlYSwgMHgwMzA0KTsgYnJlYWs7CisgICAgICAgIGNhc2UgMHg4OGE1OiBPVVRDSEFSMigweDAwZWEsIDB4MDMwYyk7IGJyZWFrOwogICAgICAgICBkZWZhdWx0OiByZXR1cm4gMTsKICAgICAgICAgfQogCi0gICAgICAgIE5FWFQoMiwgMikgLyogYWxsIGRlY29kZWQgY29kZXBvaW50cyBhcmUgcGFpcnMsIGFib3ZlLiAqLworICAgICAgICBORVhUX0lOKDIpOyAvKiBhbGwgZGVjb2RlZCBjb2RlcG9pbnRzIGFyZSBwYWlycywgYWJvdmUuICovCiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCmluZGV4IGNiYzE1NDIuLmJiNjM4MzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jCkBAIC0xMDIsOCArMTAyLDggQEAKIC8qLSotIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyAtKi0qLwogCiB0eXBlZGVmIGludCAoKmlzbzIwMjJfaW5pdF9mdW5jKSh2b2lkKTsKLXR5cGVkZWYgdWNzNF90ICgqaXNvMjAyMl9kZWNvZGVfZnVuYykoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSk7Ci10eXBlZGVmIERCQ0hBUiAoKmlzbzIwMjJfZW5jb2RlX2Z1bmMpKGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKTsKK3R5cGVkZWYgUHlfVUNTNCAoKmlzbzIwMjJfZGVjb2RlX2Z1bmMpKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpOwordHlwZWRlZiBEQkNIQVIgKCppc28yMDIyX2VuY29kZV9mdW5jKShjb25zdCBQeV9VQ1M0ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpOwogCiBzdHJ1Y3QgaXNvMjAyMl9kZXNpZ25hdGlvbiB7CiAgICAgdW5zaWduZWQgY2hhciBtYXJrOwpAQCAtMTQxLDEzICsxNDEsMTMgQEAKIEVOQ09ERVJfUkVTRVQoaXNvMjAyMikKIHsKICAgICBpZiAoU1RBVEVfR0VURkxBRyhGX1NISUZURUQpKSB7Ci0gICAgICAgIFdSSVRFMShTSSkKLSAgICAgICAgTkVYVF9PVVQoMSkKKyAgICAgICAgV1JJVEVCWVRFMShTSSkKKyAgICAgICAgTkVYVF9PVVQoMSk7CiAgICAgICAgIFNUQVRFX0NMRUFSRkxBRyhGX1NISUZURUQpCiAgICAgfQogICAgIGlmIChTVEFURV9HMCAhPSBDSEFSU0VUX0FTQ0lJKSB7Ci0gICAgICAgIFdSSVRFMyhFU0MsICcoJywgJ0InKQotICAgICAgICBORVhUX09VVCgzKQorICAgICAgICBXUklURUJZVEUzKEVTQywgJygnLCAnQicpCisgICAgICAgIE5FWFRfT1VUKDMpOwogICAgICAgICBTVEFURV9TRVRHMChDSEFSU0VUX0FTQ0lJKQogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTE1NSwzMCArMTU1LDI5IEBACiAKIEVOQ09ERVIoaXNvMjAyMikKIHsKLSAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgeworICAgIHdoaWxlICgqaW5wb3MgPCBpbmxlbikgewogICAgICAgICBjb25zdCBzdHJ1Y3QgaXNvMjAyMl9kZXNpZ25hdGlvbiAqZHNnOwogICAgICAgICBEQkNIQVIgZW5jb2RlZDsKLSAgICAgICAgdWNzNF90IGMgPSAqKmluYnVmOworICAgICAgICBQeV9VQ1M0IGMgPSBJTkNIQVIxOwogICAgICAgICBQeV9zc2l6ZV90IGluc2l6ZTsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKICAgICAgICAgICAgIGlmIChTVEFURV9HMCAhPSBDSEFSU0VUX0FTQ0lJKSB7Ci0gICAgICAgICAgICAgICAgV1JJVEUzKEVTQywgJygnLCAnQicpCisgICAgICAgICAgICAgICAgV1JJVEVCWVRFMyhFU0MsICcoJywgJ0InKQogICAgICAgICAgICAgICAgIFNUQVRFX1NFVEcwKENIQVJTRVRfQVNDSUkpCi0gICAgICAgICAgICAgICAgTkVYVF9PVVQoMykKKyAgICAgICAgICAgICAgICBORVhUX09VVCgzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChTVEFURV9HRVRGTEFHKEZfU0hJRlRFRCkpIHsKLSAgICAgICAgICAgICAgICBXUklURTEoU0kpCisgICAgICAgICAgICAgICAgV1JJVEVCWVRFMShTSSkKICAgICAgICAgICAgICAgICBTVEFURV9DTEVBUkZMQUcoRl9TSElGVEVEKQotICAgICAgICAgICAgICAgIE5FWFRfT1VUKDEpCisgICAgICAgICAgICAgICAgTkVYVF9PVVQoMSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoKHVuc2lnbmVkIGNoYXIpYykKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIERFQ09ERV9TVVJST0dBVEUoYykKLSAgICAgICAgaW5zaXplID0gR0VUX0lOU0laRShjKTsKKyAgICAgICAgaW5zaXplID0gMTsKIAogICAgICAgICBlbmNvZGVkID0gTUFQX1VOTUFQUEFCTEU7CiAgICAgICAgIGZvciAoZHNnID0gQ09ORklHX0RFU0lHTkFUSU9OUzsgZHNnLT5tYXJrOyBkc2crKykgewpAQCAtMTg3LDI0ICsxODYsMTQgQEAKICAgICAgICAgICAgIGlmIChlbmNvZGVkID09IE1BUF9NVUxUSVBMRV9BVkFJTCkgewogICAgICAgICAgICAgICAgIC8qIHRoaXMgaW1wbGVtZW50YXRpb24gd29uJ3Qgd29yayBmb3IgcGFpcgogICAgICAgICAgICAgICAgICAqIG9mIG5vbi1ibXAgY2hhcmFjdGVycy4gKi8KLSAgICAgICAgICAgICAgICBpZiAoaW5sZWZ0IDwgMikgeworICAgICAgICAgICAgICAgIGlmIChpbmxlbiAtICppbnBvcyA8IDIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZmxhZ3MgJiBNQkVOQ19GTFVTSCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTUJFUlJfVE9PRkVXOwogICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAyOwotI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjczRfdCB1NGluWzJdOwotICAgICAgICAgICAgICAgICAgICB1NGluWzBdID0gKHVjczRfdClJTjE7Ci0gICAgICAgICAgICAgICAgICAgIHU0aW5bMV0gPSAodWNzNF90KUlOMjsKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IGRzZy0+ZW5jb2Rlcih1NGluLCAmbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IGRzZy0+ZW5jb2RlcigmYywgJmxlbmd0aCk7Ci0jZWxzZQogICAgICAgICAgICAgICAgIGVuY29kZWQgPSBkc2ctPmVuY29kZXIoJmMsICZsZW5ndGgpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKGVuY29kZWQgIT0gTUFQX1VOTUFQUEFCTEUpIHsKICAgICAgICAgICAgICAgICAgICAgaW5zaXplID0gbGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyMSw0NyArMjEwLDQ3IEBACiAgICAgICAgIHN3aXRjaCAoZHNnLT5wbGFuZSkgewogICAgICAgICBjYXNlIDA6IC8qIEcwICovCiAgICAgICAgICAgICBpZiAoU1RBVEVfR0VURkxBRyhGX1NISUZURUQpKSB7Ci0gICAgICAgICAgICAgICAgV1JJVEUxKFNJKQorICAgICAgICAgICAgICAgIFdSSVRFQllURTEoU0kpCiAgICAgICAgICAgICAgICAgU1RBVEVfQ0xFQVJGTEFHKEZfU0hJRlRFRCkKLSAgICAgICAgICAgICAgICBORVhUX09VVCgxKQorICAgICAgICAgICAgICAgIE5FWFRfT1VUKDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFNUQVRFX0cwICE9IGRzZy0+bWFyaykgewogICAgICAgICAgICAgICAgIGlmIChkc2ctPndpZHRoID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgV1JJVEUzKEVTQywgJygnLCBFU0NNQVJLKGRzZy0+bWFyaykpCisgICAgICAgICAgICAgICAgICAgIFdSSVRFQllURTMoRVNDLCAnKCcsIEVTQ01BUksoZHNnLT5tYXJrKSkKICAgICAgICAgICAgICAgICAgICAgU1RBVEVfU0VURzAoZHNnLT5tYXJrKQotICAgICAgICAgICAgICAgICAgICBORVhUX09VVCgzKQorICAgICAgICAgICAgICAgICAgICBORVhUX09VVCgzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZHNnLT5tYXJrID09IENIQVJTRVRfSklTWDAyMDgpIHsKLSAgICAgICAgICAgICAgICAgICAgV1JJVEUzKEVTQywgJyQnLCBFU0NNQVJLKGRzZy0+bWFyaykpCisgICAgICAgICAgICAgICAgICAgIFdSSVRFQllURTMoRVNDLCAnJCcsIEVTQ01BUksoZHNnLT5tYXJrKSkKICAgICAgICAgICAgICAgICAgICAgU1RBVEVfU0VURzAoZHNnLT5tYXJrKQotICAgICAgICAgICAgICAgICAgICBORVhUX09VVCgzKQorICAgICAgICAgICAgICAgICAgICBORVhUX09VVCgzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFdSSVRFNChFU0MsICckJywgJygnLAorICAgICAgICAgICAgICAgICAgICBXUklURUJZVEU0KEVTQywgJyQnLCAnKCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBFU0NNQVJLKGRzZy0+bWFyaykpCiAgICAgICAgICAgICAgICAgICAgIFNUQVRFX1NFVEcwKGRzZy0+bWFyaykKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoNCkKKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoNCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMTogLyogRzEgKi8KICAgICAgICAgICAgIGlmIChTVEFURV9HMSAhPSBkc2ctPm1hcmspIHsKICAgICAgICAgICAgICAgICBpZiAoZHNnLT53aWR0aCA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdSSVRFMyhFU0MsICcpJywgRVNDTUFSSyhkc2ctPm1hcmspKQorICAgICAgICAgICAgICAgICAgICBXUklURUJZVEUzKEVTQywgJyknLCBFU0NNQVJLKGRzZy0+bWFyaykpCiAgICAgICAgICAgICAgICAgICAgIFNUQVRFX1NFVEcxKGRzZy0+bWFyaykKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoMykKKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoMyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBXUklURTQoRVNDLCAnJCcsICcpJywKKyAgICAgICAgICAgICAgICAgICAgV1JJVEVCWVRFNChFU0MsICckJywgJyknLAogICAgICAgICAgICAgICAgICAgICAgICAgRVNDTUFSSyhkc2ctPm1hcmspKQogICAgICAgICAgICAgICAgICAgICBTVEFURV9TRVRHMShkc2ctPm1hcmspCi0gICAgICAgICAgICAgICAgICAgIE5FWFRfT1VUKDQpCisgICAgICAgICAgICAgICAgICAgIE5FWFRfT1VUKDQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghU1RBVEVfR0VURkxBRyhGX1NISUZURUQpKSB7Ci0gICAgICAgICAgICAgICAgV1JJVEUxKFNPKQorICAgICAgICAgICAgICAgIFdSSVRFQllURTEoU08pCiAgICAgICAgICAgICAgICAgU1RBVEVfU0VURkxBRyhGX1NISUZURUQpCi0gICAgICAgICAgICAgICAgTkVYVF9PVVQoMSkKKyAgICAgICAgICAgICAgICBORVhUX09VVCgxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OiAvKiBHMiBhbmQgRzMgaXMgbm90IHN1cHBvcnRlZDogbm8gZW5jb2RpbmcgaW4KQEAgLTI3MCwxNCArMjU5LDE0IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZHNnLT53aWR0aCA9PSAxKSB7Ci0gICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpZW5jb2RlZCkKLSAgICAgICAgICAgIE5FWFRfT1VUKDEpCisgICAgICAgICAgICBXUklURUJZVEUxKCh1bnNpZ25lZCBjaGFyKWVuY29kZWQpCisgICAgICAgICAgICBORVhUX09VVCgxKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFdSSVRFMihlbmNvZGVkID4+IDgsIGVuY29kZWQgJiAweGZmKQotICAgICAgICAgICAgTkVYVF9PVVQoMikKKyAgICAgICAgICAgIFdSSVRFQllURTIoZW5jb2RlZCA+PiA4LCBlbmNvZGVkICYgMHhmZikKKyAgICAgICAgICAgIE5FWFRfT1VUKDIpOwogICAgICAgICB9Ci0gICAgICAgIE5FWFRfSU4oaW5zaXplKQorICAgICAgICBORVhUX0lOQ0hBUihpbnNpemUpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMzIzLDI2ICszMTIsMjYgQEAKIAogICAgIHN3aXRjaCAoZXNjbGVuKSB7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoSU4yID09ICckJykgewotICAgICAgICAgICAgY2hhcnNldCA9IElOMyB8IENIQVJTRVRfREJDUzsKKyAgICAgICAgaWYgKElOQllURTIgPT0gJyQnKSB7CisgICAgICAgICAgICBjaGFyc2V0ID0gSU5CWVRFMyB8IENIQVJTRVRfREJDUzsKICAgICAgICAgICAgIGRlc2lnbmF0aW9uID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNoYXJzZXQgPSBJTjM7Ci0gICAgICAgICAgICBpZiAoSU4yID09ICcoJykgZGVzaWduYXRpb24gPSAwOwotICAgICAgICAgICAgZWxzZSBpZiAoSU4yID09ICcpJykgZGVzaWduYXRpb24gPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoQ09ORklHX0lTU0VUKFVTRV9HMikgJiYgSU4yID09ICcuJykKKyAgICAgICAgICAgIGNoYXJzZXQgPSBJTkJZVEUzOworICAgICAgICAgICAgaWYgKElOQllURTIgPT0gJygnKSBkZXNpZ25hdGlvbiA9IDA7CisgICAgICAgICAgICBlbHNlIGlmIChJTkJZVEUyID09ICcpJykgZGVzaWduYXRpb24gPSAxOworICAgICAgICAgICAgZWxzZSBpZiAoQ09ORklHX0lTU0VUKFVTRV9HMikgJiYgSU5CWVRFMiA9PSAnLicpCiAgICAgICAgICAgICAgICAgZGVzaWduYXRpb24gPSAyOwogICAgICAgICAgICAgZWxzZSByZXR1cm4gMzsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmIChJTjIgIT0gJyQnKQorICAgICAgICBpZiAoSU5CWVRFMiAhPSAnJCcpCiAgICAgICAgICAgICByZXR1cm4gNDsKIAotICAgICAgICBjaGFyc2V0ID0gSU40IHwgQ0hBUlNFVF9EQkNTOwotICAgICAgICBpZiAoSU4zID09ICcoJykgZGVzaWduYXRpb24gPSAwOwotICAgICAgICBlbHNlIGlmIChJTjMgPT0gJyknKSBkZXNpZ25hdGlvbiA9IDE7CisgICAgICAgIGNoYXJzZXQgPSBJTkJZVEU0IHwgQ0hBUlNFVF9EQkNTOworICAgICAgICBpZiAoSU5CWVRFMyA9PSAnKCcpIGRlc2lnbmF0aW9uID0gMDsKKyAgICAgICAgZWxzZSBpZiAoSU5CWVRFMyA9PSAnKScpIGRlc2lnbmF0aW9uID0gMTsKICAgICAgICAgZWxzZSByZXR1cm4gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA2OiAvKiBkZXNpZ25hdGlvbiB3aXRoIHByZWZpeCAqLwpAQCAtMzc2LDQ1ICszNjUsNDMgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2RlZmluZSBJU084ODU5XzdfREVDT0RFKGMsIGFzc2kpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICgoYykgPCAweGEwKSAoYXNzaSkgPSAoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKChjKSA8IDB4YzAgJiYgKDB4Mjg4ZjNiYzlMICYgKDFMIDw8ICgoYyktMHhhMCkpKSkgICAgICAgICAgXAotICAgICAgICAoYXNzaSkgPSAoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKChjKSA+PSAweGI0ICYmIChjKSA8PSAweGZlICYmICgoYykgPj0gMHhkNCB8fCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICgweGJmZmZmZDc3TCAmICgxTCA8PCAoKGMpLTB4YjQpKSkpKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoYXNzaSkgPSAweDAyZDAgKyAoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKChjKSA9PSAweGExKSAoYXNzaSkgPSAweDIwMTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKChjKSA9PSAweGEyKSAoYXNzaSkgPSAweDIwMTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKChjKSA9PSAweGFmKSAoYXNzaSkgPSAweDIwMTU7CisjZGVmaW5lIElTTzg4NTlfN19ERUNPREUoYywgd3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChjKSA8IDB4YTApIE9VVENIQVIoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKChjKSA8IDB4YzAgJiYgKDB4Mjg4ZjNiYzlMICYgKDFMIDw8ICgoYyktMHhhMCkpKSkgICAgXAorICAgICAgICBPVVRDSEFSKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICgoYykgPj0gMHhiNCAmJiAoYykgPD0gMHhmZSAmJiAoKGMpID49IDB4ZDQgfHwgICAgICAgIFwKKyAgICAgICAgICAgICAoMHhiZmZmZmQ3N0wgJiAoMUwgPDwgKChjKS0weGI0KSkpKSkgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgT1VUQ0hBUigweDAyZDAgKyAoYykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoKGMpID09IDB4YTEpIE9VVENIQVIoMHgyMDE4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKChjKSA9PSAweGEyKSBPVVRDSEFSKDB4MjAxOSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICgoYykgPT0gMHhhZikgT1VUQ0hBUigweDIwMTUpOwogCiBzdGF0aWMgUHlfc3NpemVfdAogaXNvMjAyMnByb2Nlc3NnMihjb25zdCB2b2lkICpjb25maWcsIE11bHRpYnl0ZUNvZGVjX1N0YXRlICpzdGF0ZSwKICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmluYnVmLCBQeV9zc2l6ZV90ICppbmxlZnQsCi0gICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKipvdXRidWYsIFB5X3NzaXplX3QgKm91dGxlZnQpCisgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICAvKiBub3Qgd3JpdHRlbiB0byB1c2UgZW5jb2RlciwgZGVjb2RlciBmdW5jdGlvbnMgYmVjYXVzZSBvbmx5IGZldwogICAgICAqIGVuY29kaW5ncyB1c2UgRzIgZGVzaWduYXRpb25zIGluIENKS0NvZGVjcyAqLwogICAgIGlmIChTVEFURV9HMiA9PSBDSEFSU0VUX0lTTzg4NTlfMSkgewotICAgICAgICBpZiAoSU4zIDwgMHg4MCkKLSAgICAgICAgICAgIE9VVDEoSU4zICsgMHg4MCkKKyAgICAgICAgaWYgKElOQllURTMgPCAweDgwKQorICAgICAgICAgICAgT1VUQ0hBUihJTkJZVEUzICsgMHg4MCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiAzOwogICAgIH0KICAgICBlbHNlIGlmIChTVEFURV9HMiA9PSBDSEFSU0VUX0lTTzg4NTlfNykgewotICAgICAgICBJU084ODU5XzdfREVDT0RFKElOMyBeIDB4ODAsICoqb3V0YnVmKQorICAgICAgICBJU084ODU5XzdfREVDT0RFKElOQllURTMgXiAweDgwLCB3cml0ZXIpCiAgICAgICAgIGVsc2UgcmV0dXJuIDM7CiAgICAgfQogICAgIGVsc2UgaWYgKFNUQVRFX0cyID09IENIQVJTRVRfQVNDSUkpIHsKLSAgICAgICAgaWYgKElOMyAmIDB4ODApIHJldHVybiAzOwotICAgICAgICBlbHNlICoqb3V0YnVmID0gSU4zOworICAgICAgICBpZiAoSU5CWVRFMyAmIDB4ODApIHJldHVybiAzOworICAgICAgICBlbHNlIE9VVENIQVIoSU5CWVRFMyk7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIE1CRVJSX0lOVEVSTkFMOwogCiAgICAgKCppbmJ1ZikgKz0gMzsKICAgICAqaW5sZWZ0IC09IDM7Ci0gICAgKCpvdXRidWYpICs9IDE7Ci0gICAgKm91dGxlZnQgLT0gMTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDIzLDE0ICs0MTAsMTQgQEAKICAgICBjb25zdCBzdHJ1Y3QgaXNvMjAyMl9kZXNpZ25hdGlvbiAqZHNnY2FjaGUgPSBOVUxMOwogCiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU4xOworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTkJZVEUxOwogICAgICAgICBQeV9zc2l6ZV90IGVycjsKIAogICAgICAgICBpZiAoU1RBVEVfR0VURkxBRyhGX0VTQ1RIUk9VR0hPVVQpKSB7CiAgICAgICAgICAgICAvKiBFU0MgdGhyb3VnaG91dCBtb2RlOgogICAgICAgICAgICAgICogZm9yIG5vbi1pc28yMDIyIGVzY2FwZSBzZXF1ZW5jZXMgKi8KLSAgICAgICAgICAgIFdSSVRFMShjKSAvKiBhc3N1bWUgYXMgSVNPLTg4NTktMSAqLwotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsgLyogYXNzdW1lIGFzIElTTy04ODU5LTEgKi8KKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBpZiAoSVNfRVNDRU5EKGMpKSB7CiAgICAgICAgICAgICAgICAgU1RBVEVfQ0xFQVJGTEFHKEZfRVNDVEhST1VHSE9VVCkKICAgICAgICAgICAgIH0KQEAgLTQ0MCw0MSArNDI3LDQxIEBACiAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICBjYXNlIEVTQzoKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKLSAgICAgICAgICAgIGlmIChJU19JU08yMDIyRVNDKElOMikpIHsKKyAgICAgICAgICAgIGlmIChJU19JU08yMDIyRVNDKElOQllURTIpKSB7CiAgICAgICAgICAgICAgICAgZXJyID0gaXNvMjAyMnByb2Nlc3Nlc2MoY29uZmlnLCBzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmJ1ZiwgJmlubGVmdCk7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoQ09ORklHX0lTU0VUKFVTRV9HMikgJiYgSU4yID09ICdOJykgey8qIFNTMiAqLworICAgICAgICAgICAgZWxzZSBpZiAoQ09ORklHX0lTU0VUKFVTRV9HMikgJiYgSU5CWVRFMiA9PSAnTicpIHsvKiBTUzIgKi8KICAgICAgICAgICAgICAgICBSRVFVSVJFX0lOQlVGKDMpCiAgICAgICAgICAgICAgICAgZXJyID0gaXNvMjAyMnByb2Nlc3NnMihjb25maWcsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICBpbmJ1ZiwgJmlubGVmdCwgb3V0YnVmLCAmb3V0bGVmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmJ1ZiwgJmlubGVmdCwgd3JpdGVyKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBXUklURTEoRVNDKQorICAgICAgICAgICAgICAgIE9VVENIQVIoRVNDKTsKICAgICAgICAgICAgICAgICBTVEFURV9TRVRGTEFHKEZfRVNDVEhST1VHSE9VVCkKLSAgICAgICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICAgICAgTkVYVF9JTigxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNJOgogICAgICAgICAgICAgaWYgKENPTkZJR19JU1NFVChOT19TSElGVCkpCiAgICAgICAgICAgICAgICAgZ290byBieXBhc3M7CiAgICAgICAgICAgICBTVEFURV9DTEVBUkZMQUcoRl9TSElGVEVEKQotICAgICAgICAgICAgTkVYVF9JTigxKQorICAgICAgICAgICAgTkVYVF9JTigxKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNPOgogICAgICAgICAgICAgaWYgKENPTkZJR19JU1NFVChOT19TSElGVCkpCiAgICAgICAgICAgICAgICAgZ290byBieXBhc3M7CiAgICAgICAgICAgICBTVEFURV9TRVRGTEFHKEZfU0hJRlRFRCkKLSAgICAgICAgICAgIE5FWFRfSU4oMSkKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMRjoKICAgICAgICAgICAgIFNUQVRFX0NMRUFSRkxBRyhGX1NISUZURUQpCi0gICAgICAgICAgICBXUklURTEoTEYpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBPVVRDSEFSKExGKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChjIDwgMHgyMCkgLyogQzAgKi8KQEAgLTQ4NCw3ICs0NzEsNyBAQAogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlzbzIwMjJfZGVzaWduYXRpb24gKmRzZzsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoYXJzZXQ7Ci0gICAgICAgICAgICAgICAgdWNzNF90IGRlY29kZWQ7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBkZWNvZGVkOwogCiAgICAgICAgICAgICAgICAgaWYgKFNUQVRFX0dFVEZMQUcoRl9TSElGVEVEKSkKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IFNUQVRFX0cxOwpAQCAtNDkyLDggKzQ3OSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBTVEFURV9HMDsKIAogICAgICAgICAgICAgICAgIGlmIChjaGFyc2V0ID09IENIQVJTRVRfQVNDSUkpIHsKLWJ5cGFzczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUklURTEoYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVhUKDEsIDEpCitieXBhc3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVhUX0lOKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTUxOCwxNyArNTA1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRzZy0+d2lkdGg7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29kZWQgPCAweDEwMDAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEUxKGRlY29kZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVVRDSEFSKGRlY29kZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlY29kZWQgPCAweDMwMDAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVVQ1M0KGRlY29kZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VUQ0hBUihkZWNvZGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLyogSklTIFggMDIxMyBwYWlycyAqLwotICAgICAgICAgICAgICAgICAgICBXUklURTIoZGVjb2RlZCA+PiAxNiwgZGVjb2RlZCAmIDB4ZmZmZikKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoMikKKyAgICAgICAgICAgICAgICAgICAgT1VUQ0hBUjIoZGVjb2RlZCA+PiAxNiwgZGVjb2RlZCAmIDB4ZmZmZik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIE5FWFRfSU4oZHNnLT53aWR0aCkKKyAgICAgICAgICAgICAgICBORVhUX0lOKGRzZy0+d2lkdGgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU3NywxOCArNTYyLDE4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB1Y3M0X3QKK3N0YXRpYyBQeV9VQ1M0CiBrc3gxMDAxX2RlY29kZXIoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKIHsKLSAgICB1Y3M0X3QgdTsKLSAgICBUUllNQVBfREVDKGtzeDEwMDEsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCisgICAgUHlfVUNTNCB1OworICAgIFRSWU1BUF9ERUNfQ0hBUihrc3gxMDAxLCB1LCBkYXRhWzBdLCBkYXRhWzFdKQogICAgICAgICByZXR1cm4gdTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBNQVBfVU5NQVBQQUJMRTsKIH0KIAogc3RhdGljIERCQ0hBUgota3N4MTAwMV9lbmNvZGVyKGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQora3N4MTAwMV9lbmNvZGVyKGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQ7CiAgICAgYXNzZXJ0KCpsZW5ndGggPT0gMSk7CkBAIC02MTMsMjAgKzU5OCwyMCBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdWNzNF90CitzdGF0aWMgUHlfVUNTNAogamlzeDAyMDhfZGVjb2Rlcihjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKQogewotICAgIHVjczRfdCB1OworICAgIFB5X1VDUzQgdTsKICAgICBpZiAoZGF0YVswXSA9PSAweDIxICYmIGRhdGFbMV0gPT0gMHg0MCkgLyogRi9XIFJFVkVSU0UgU09MSURVUyAqLwogICAgICAgICByZXR1cm4gMHhmZjNjOwotICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIwOCwgdSwgZGF0YVswXSwgZGF0YVsxXSkKKyAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIwOCwgdSwgZGF0YVswXSwgZGF0YVsxXSkKICAgICAgICAgcmV0dXJuIHU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTUFQX1VOTUFQUEFCTEU7CiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjA4X2VuY29kZXIoY29uc3QgdWNzNF90ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpCitqaXN4MDIwOF9lbmNvZGVyKGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQ7CiAgICAgYXNzZXJ0KCpsZW5ndGggPT0gMSk7CkBAIC02NTQsMTggKzYzOSwxOCBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdWNzNF90CitzdGF0aWMgUHlfVUNTNAogamlzeDAyMTJfZGVjb2Rlcihjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKQogewotICAgIHVjczRfdCB1OwotICAgIFRSWU1BUF9ERUMoamlzeDAyMTIsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCisgICAgUHlfVUNTNCB1OworICAgIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxMiwgdSwgZGF0YVswXSwgZGF0YVsxXSkKICAgICAgICAgcmV0dXJuIHU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTUFQX1VOTUFQUEFCTEU7CiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjEyX2VuY29kZXIoY29uc3QgdWNzNF90ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpCitqaXN4MDIxMl9lbmNvZGVyKGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQ7CiAgICAgYXNzZXJ0KCpsZW5ndGggPT0gMSk7CkBAIC03MDUsMzAgKzY5MCwzMCBAQAogfQogCiAjZGVmaW5lIGNvbmZpZyAoKHZvaWQgKikyMDAwKQotc3RhdGljIHVjczRfdAorc3RhdGljIFB5X1VDUzQKIGppc3gwMjEzXzIwMDBfMV9kZWNvZGVyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCiB7Ci0gICAgdWNzNF90IHU7CisgICAgUHlfVUNTNCB1OwogICAgIEVNVUxBVEVfSklTWDAyMTNfMjAwMF9ERUNPREVfUExBTkUxKHUsIGRhdGFbMF0sIGRhdGFbMV0pCiAgICAgZWxzZSBpZiAoZGF0YVswXSA9PSAweDIxICYmIGRhdGFbMV0gPT0gMHg0MCkgLyogRi9XIFJFVkVSU0UgU09MSURVUyAqLwogICAgICAgICByZXR1cm4gMHhmZjNjOwotICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIwOCwgdSwgZGF0YVswXSwgZGF0YVsxXSk7Ci0gICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzFfYm1wLCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKLSAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMTNfMV9lbXAsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCisgICAgZWxzZSBUUllNQVBfREVDX0NIQVIoamlzeDAyMDgsIHUsIGRhdGFbMF0sIGRhdGFbMV0pOworICAgIGVsc2UgVFJZTUFQX0RFQ19DSEFSKGppc3gwMjEzXzFfYm1wLCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKKyAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxM18xX2VtcCwgdSwgZGF0YVswXSwgZGF0YVsxXSkKICAgICAgICAgdSB8PSAweDIwMDAwOwotICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM19wYWlyLCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKKyAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxM19wYWlyLCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBNQVBfVU5NQVBQQUJMRTsKICAgICByZXR1cm4gdTsKIH0KIAotc3RhdGljIHVjczRfdAorc3RhdGljIFB5X1VDUzQKIGppc3gwMjEzXzIwMDBfMl9kZWNvZGVyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCiB7Ci0gICAgdWNzNF90IHU7Ci0gICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTIodSwgZGF0YVswXSwgZGF0YVsxXSkKLSAgICBUUllNQVBfREVDKGppc3gwMjEzXzJfYm1wLCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKLSAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMTNfMl9lbXAsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCisgICAgUHlfVUNTNCB1OworICAgIEVNVUxBVEVfSklTWDAyMTNfMjAwMF9ERUNPREVfUExBTkUyX0NIQVIodSwgZGF0YVswXSwgZGF0YVsxXSkKKyAgICBUUllNQVBfREVDX0NIQVIoamlzeDAyMTNfMl9ibXAsIHUsIGRhdGFbMF0sIGRhdGFbMV0pOworICAgIGVsc2UgVFJZTUFQX0RFQ19DSEFSKGppc3gwMjEzXzJfZW1wLCB1LCBkYXRhWzBdLCBkYXRhWzFdKQogICAgICAgICB1IHw9IDB4MjAwMDA7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTUFQX1VOTUFQUEFCTEU7CkBAIC03MzYsMjggKzcyMSwyOCBAQAogfQogI3VuZGVmIGNvbmZpZwogCi1zdGF0aWMgdWNzNF90CitzdGF0aWMgUHlfVUNTNAogamlzeDAyMTNfMjAwNF8xX2RlY29kZXIoY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSkKIHsKLSAgICB1Y3M0X3QgdTsKKyAgICBQeV9VQ1M0IHU7CiAgICAgaWYgKGRhdGFbMF0gPT0gMHgyMSAmJiBkYXRhWzFdID09IDB4NDApIC8qIEYvVyBSRVZFUlNFIFNPTElEVVMgKi8KICAgICAgICAgcmV0dXJuIDB4ZmYzYzsKLSAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMDgsIHUsIGRhdGFbMF0sIGRhdGFbMV0pOwotICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18xX2JtcCwgdSwgZGF0YVswXSwgZGF0YVsxXSk7Ci0gICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzFfZW1wLCB1LCBkYXRhWzBdLCBkYXRhWzFdKQorICAgIGVsc2UgVFJZTUFQX0RFQ19DSEFSKGppc3gwMjA4LCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKKyAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxM18xX2JtcCwgdSwgZGF0YVswXSwgZGF0YVsxXSk7CisgICAgZWxzZSBUUllNQVBfREVDX0NIQVIoamlzeDAyMTNfMV9lbXAsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCiAgICAgICAgIHUgfD0gMHgyMDAwMDsKLSAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMTNfcGFpciwgdSwgZGF0YVswXSwgZGF0YVsxXSk7CisgICAgZWxzZSBUUllNQVBfREVDX0NIQVIoamlzeDAyMTNfcGFpciwgdSwgZGF0YVswXSwgZGF0YVsxXSk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTUFQX1VOTUFQUEFCTEU7CiAgICAgcmV0dXJuIHU7CiB9CiAKLXN0YXRpYyB1Y3M0X3QKK3N0YXRpYyBQeV9VQ1M0CiBqaXN4MDIxM18yMDA0XzJfZGVjb2Rlcihjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKQogewotICAgIHVjczRfdCB1OwotICAgIFRSWU1BUF9ERUMoamlzeDAyMTNfMl9ibXAsIHUsIGRhdGFbMF0sIGRhdGFbMV0pOwotICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18yX2VtcCwgdSwgZGF0YVswXSwgZGF0YVsxXSkKKyAgICBQeV9VQ1M0IHU7CisgICAgVFJZTUFQX0RFQ19DSEFSKGppc3gwMjEzXzJfYm1wLCB1LCBkYXRhWzBdLCBkYXRhWzFdKTsKKyAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxM18yX2VtcCwgdSwgZGF0YVswXSwgZGF0YVsxXSkKICAgICAgICAgdSB8PSAweDIwMDAwOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIE1BUF9VTk1BUFBBQkxFOwpAQCAtNzY1LDcgKzc1MCw3IEBACiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjEzX2VuY29kZXIoY29uc3QgdWNzNF90ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgsIHZvaWQgKmNvbmZpZykKK2ppc3gwMjEzX2VuY29kZXIoY29uc3QgUHlfVUNTNCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoLCB2b2lkICpjb25maWcpCiB7CiAgICAgREJDSEFSIGNvZGVkOwogCkBAIC04MTksNyArODA0LDcgQEAKIH0KIAogc3RhdGljIERCQ0hBUgotamlzeDAyMTNfMjAwMF8xX2VuY29kZXIoY29uc3QgdWNzNF90ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpCitqaXN4MDIxM18yMDAwXzFfZW5jb2Rlcihjb25zdCBQeV9VQ1M0ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpCiB7CiAgICAgREJDSEFSIGNvZGVkID0gamlzeDAyMTNfZW5jb2RlcihkYXRhLCBsZW5ndGgsICh2b2lkICopMjAwMCk7CiAgICAgaWYgKGNvZGVkID09IE1BUF9VTk1BUFBBQkxFIHx8IGNvZGVkID09IE1BUF9NVUxUSVBMRV9BVkFJTCkKQEAgLTgzMSw3ICs4MTYsNyBAQAogfQogCiBzdGF0aWMgREJDSEFSCi1qaXN4MDIxM18yMDAwXzFfZW5jb2Rlcl9wYWlyb25seShjb25zdCB1Y3M0X3QgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKK2ppc3gwMjEzXzIwMDBfMV9lbmNvZGVyX3BhaXJvbmx5KGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQ7CiAgICAgUHlfc3NpemVfdCBpbGVuZ3RoID0gKmxlbmd0aDsKQEAgLTg1NCw3ICs4MzksNyBAQAogfQogCiBzdGF0aWMgREJDSEFSCi1qaXN4MDIxM18yMDAwXzJfZW5jb2Rlcihjb25zdCB1Y3M0X3QgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKK2ppc3gwMjEzXzIwMDBfMl9lbmNvZGVyKGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQgPSBqaXN4MDIxM19lbmNvZGVyKGRhdGEsIGxlbmd0aCwgKHZvaWQgKikyMDAwKTsKICAgICBpZiAoY29kZWQgPT0gTUFQX1VOTUFQUEFCTEUgfHwgY29kZWQgPT0gTUFQX01VTFRJUExFX0FWQUlMKQpAQCAtODY2LDcgKzg1MSw3IEBACiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjEzXzIwMDRfMV9lbmNvZGVyKGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQoramlzeDAyMTNfMjAwNF8xX2VuY29kZXIoY29uc3QgUHlfVUNTNCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQogewogICAgIERCQ0hBUiBjb2RlZCA9IGppc3gwMjEzX2VuY29kZXIoZGF0YSwgbGVuZ3RoLCBOVUxMKTsKICAgICBpZiAoY29kZWQgPT0gTUFQX1VOTUFQUEFCTEUgfHwgY29kZWQgPT0gTUFQX01VTFRJUExFX0FWQUlMKQpAQCAtODc4LDcgKzg2Myw3IEBACiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjEzXzIwMDRfMV9lbmNvZGVyX3BhaXJvbmx5KGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQoramlzeDAyMTNfMjAwNF8xX2VuY29kZXJfcGFpcm9ubHkoY29uc3QgUHlfVUNTNCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQogewogICAgIERCQ0hBUiBjb2RlZDsKICAgICBQeV9zc2l6ZV90IGlsZW5ndGggPSAqbGVuZ3RoOwpAQCAtOTAxLDcgKzg4Niw3IEBACiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjEzXzIwMDRfMl9lbmNvZGVyKGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQoramlzeDAyMTNfMjAwNF8yX2VuY29kZXIoY29uc3QgUHlfVUNTNCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQogewogICAgIERCQ0hBUiBjb2RlZCA9IGppc3gwMjEzX2VuY29kZXIoZGF0YSwgbGVuZ3RoLCBOVUxMKTsKICAgICBpZiAoY29kZWQgPT0gTUFQX1VOTUFQUEFCTEUgfHwgY29kZWQgPT0gTUFQX01VTFRJUExFX0FWQUlMKQpAQCAtOTEyLDE3ICs4OTcsMTcgQEAKICAgICAgICAgcmV0dXJuIE1BUF9VTk1BUFBBQkxFOwogfQogCi1zdGF0aWMgdWNzNF90CitzdGF0aWMgUHlfVUNTNAogamlzeDAyMDFfcl9kZWNvZGVyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCiB7Ci0gICAgdWNzNF90IHU7Ci0gICAgSklTWDAyMDFfUl9ERUNPREUoKmRhdGEsIHUpCisgICAgUHlfVUNTNCB1OworICAgIEpJU1gwMjAxX1JfREVDT0RFX0NIQVIoKmRhdGEsIHUpCiAgICAgZWxzZSByZXR1cm4gTUFQX1VOTUFQUEFCTEU7CiAgICAgcmV0dXJuIHU7CiB9CiAKIHN0YXRpYyBEQkNIQVIKLWppc3gwMjAxX3JfZW5jb2Rlcihjb25zdCB1Y3M0X3QgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKK2ppc3gwMjAxX3JfZW5jb2Rlcihjb25zdCBQeV9VQ1M0ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpCiB7CiAgICAgREJDSEFSIGNvZGVkOwogICAgIEpJU1gwMjAxX1JfRU5DT0RFKCpkYXRhLCBjb2RlZCkKQEAgLTkzMCwxNyArOTE1LDE3IEBACiAgICAgcmV0dXJuIGNvZGVkOwogfQogCi1zdGF0aWMgdWNzNF90CitzdGF0aWMgUHlfVUNTNAogamlzeDAyMDFfa19kZWNvZGVyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCiB7Ci0gICAgdWNzNF90IHU7Ci0gICAgSklTWDAyMDFfS19ERUNPREUoKmRhdGEgXiAweDgwLCB1KQorICAgIFB5X1VDUzQgdTsKKyAgICBKSVNYMDIwMV9LX0RFQ09ERV9DSEFSKCpkYXRhIF4gMHg4MCwgdSkKICAgICBlbHNlIHJldHVybiBNQVBfVU5NQVBQQUJMRTsKICAgICByZXR1cm4gdTsKIH0KIAogc3RhdGljIERCQ0hBUgotamlzeDAyMDFfa19lbmNvZGVyKGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQoramlzeDAyMDFfa19lbmNvZGVyKGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQ7CiAgICAgSklTWDAyMDFfS19FTkNPREUoKmRhdGEsIGNvZGVkKQpAQCAtOTYxLDE4ICs5NDYsMTggQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHVjczRfdAorc3RhdGljIFB5X1VDUzQKIGdiMjMxMl9kZWNvZGVyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCiB7Ci0gICAgdWNzNF90IHU7Ci0gICAgVFJZTUFQX0RFQyhnYjIzMTIsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCisgICAgUHlfVUNTNCB1OworICAgIFRSWU1BUF9ERUNfQ0hBUihnYjIzMTIsIHUsIGRhdGFbMF0sIGRhdGFbMV0pCiAgICAgICAgIHJldHVybiB1OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIE1BUF9VTk1BUFBBQkxFOwogfQogCiBzdGF0aWMgREJDSEFSCi1nYjIzMTJfZW5jb2Rlcihjb25zdCB1Y3M0X3QgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKK2diMjMxMl9lbmNvZGVyKGNvbnN0IFB5X1VDUzQgKmRhdGEsIFB5X3NzaXplX3QgKmxlbmd0aCkKIHsKICAgICBEQkNIQVIgY29kZWQ7CiAgICAgYXNzZXJ0KCpsZW5ndGggPT0gMSk7CkBAIC05ODYsMTQgKzk3MSwxNCBAQAogfQogCiAKLXN0YXRpYyB1Y3M0X3QKK3N0YXRpYyBQeV9VQ1M0CiBkdW1teV9kZWNvZGVyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCiB7CiAgICAgcmV0dXJuIE1BUF9VTk1BUFBBQkxFOwogfQogCiBzdGF0aWMgREJDSEFSCi1kdW1teV9lbmNvZGVyKGNvbnN0IHVjczRfdCAqZGF0YSwgUHlfc3NpemVfdCAqbGVuZ3RoKQorZHVtbXlfZW5jb2Rlcihjb25zdCBQeV9VQ1M0ICpkYXRhLCBQeV9zc2l6ZV90ICpsZW5ndGgpCiB7CiAgICAgcmV0dXJuIE1BUF9VTk1BUFBBQkxFOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jCmluZGV4IGE1MDA2OTYuLjdhYjMxOGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfanAuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2pwLmMKQEAgLTE5LDM4ICsxOSwzOSBAQAogCiBFTkNPREVSKGNwOTMyKQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IElOMTsKKyAgICB3aGlsZSAoKmlucG9zIDwgaW5sZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjID0gSU5DSEFSMTsKICAgICAgICAgREJDSEFSIGNvZGU7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzEsIGMyOwogCiAgICAgICAgIGlmIChjIDw9IDB4ODApIHsKLSAgICAgICAgICAgIFdSSVRFMSgodW5zaWduZWQgY2hhciljKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgV1JJVEVCWVRFMSgodW5zaWduZWQgY2hhciljKQorICAgICAgICAgICAgTkVYVCgxLCAxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHhmZjYxICYmIGMgPD0gMHhmZjlmKSB7Ci0gICAgICAgICAgICBXUklURTEoYyAtIDB4ZmVjMCkKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoYyAtIDB4ZmVjMCkKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID49IDB4ZjhmMCAmJiBjIDw9IDB4ZjhmMykgewogICAgICAgICAgICAgLyogV2luZG93cyBjb21wYXRpYmlsaXR5ICovCiAgICAgICAgICAgICBSRVFVSVJFX09VVEJVRigxKQogICAgICAgICAgICAgaWYgKGMgPT0gMHhmOGYwKQotICAgICAgICAgICAgICAgIE9VVDEoMHhhMCkKKyAgICAgICAgICAgICAgICBPVVRCWVRFMSgweGEwKQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIE9VVDEoYyAtIDB4ZmVmMSArIDB4ZmQpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICAgICAgT1VUQllURTEoYyAtIDB4ZmVmMSArIDB4ZmQpCisgICAgICAgICAgICBORVhUKDEsIDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBVQ1M0SU5WQUxJRChjKQorICAgICAgICBpZiAoYyA+IDB4RkZGRikKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICBSRVFVSVJFX09VVEJVRigyKQogCiAgICAgICAgIFRSWU1BUF9FTkMoY3A5MzJleHQsIGNvZGUsIGMpIHsKLSAgICAgICAgICAgIE9VVDEoY29kZSA+PiA4KQotICAgICAgICAgICAgT1VUMihjb2RlICYgMHhmZikKKyAgICAgICAgICAgIE9VVEJZVEUxKGNvZGUgPj4gOCkKKyAgICAgICAgICAgIE9VVEJZVEUyKGNvZGUgJiAweGZmKQogICAgICAgICB9CiAgICAgICAgIGVsc2UgVFJZTUFQX0VOQyhqaXN4Y29tbW9uLCBjb2RlLCBjKSB7CiAgICAgICAgICAgICBpZiAoY29kZSAmIDB4ODAwMCkgLyogTVNCIHNldDogSklTIFggMDIxMiAqLwpAQCAtNjEsMjAgKzYyLDIwIEBACiAgICAgICAgICAgICBjMiA9IGNvZGUgJiAweGZmOwogICAgICAgICAgICAgYzIgPSAoKChjMSAtIDB4MjEpICYgMSkgPyAweDVlIDogMCkgKyAoYzIgLSAweDIxKTsKICAgICAgICAgICAgIGMxID0gKGMxIC0gMHgyMSkgPj4gMTsKLSAgICAgICAgICAgIE9VVDEoYzEgPCAweDFmID8gYzEgKyAweDgxIDogYzEgKyAweGMxKQotICAgICAgICAgICAgT1VUMihjMiA8IDB4M2YgPyBjMiArIDB4NDAgOiBjMiArIDB4NDEpCisgICAgICAgICAgICBPVVRCWVRFMShjMSA8IDB4MWYgPyBjMSArIDB4ODEgOiBjMSArIDB4YzEpCisgICAgICAgICAgICBPVVRCWVRFMihjMiA8IDB4M2YgPyBjMiArIDB4NDAgOiBjMiArIDB4NDEpCiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYyA+PSAweGUwMDAgJiYgYyA8IDB4ZTc1OCkgewogICAgICAgICAgICAgLyogVXNlci1kZWZpbmVkIGFyZWEgKi8KLSAgICAgICAgICAgIGMxID0gKFB5X1VOSUNPREUpKGMgLSAweGUwMDApIC8gMTg4OwotICAgICAgICAgICAgYzIgPSAoUHlfVU5JQ09ERSkoYyAtIDB4ZTAwMCkgJSAxODg7Ci0gICAgICAgICAgICBPVVQxKGMxICsgMHhmMCkKLSAgICAgICAgICAgIE9VVDIoYzIgPCAweDNmID8gYzIgKyAweDQwIDogYzIgKyAweDQxKQorICAgICAgICAgICAgYzEgPSAoUHlfVUNTNCkoYyAtIDB4ZTAwMCkgLyAxODg7CisgICAgICAgICAgICBjMiA9IChQeV9VQ1M0KShjIC0gMHhlMDAwKSAlIDE4ODsKKyAgICAgICAgICAgIE9VVEJZVEUxKGMxICsgMHhmMCkKKyAgICAgICAgICAgIE9VVEJZVEUyKGMyIDwgMHgzZiA/IGMyICsgMHg0MCA6IGMyICsgMHg0MSkKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBORVhUKDEsIDIpCisgICAgICAgIE5FWFQoMSwgMik7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC04MywzMyArODQsMzIgQEAKIERFQ09ERVIoY3A5MzIpCiB7CiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU4xLCBjMjsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU5CWVRFMSwgYzI7CiAKLSAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKICAgICAgICAgaWYgKGMgPD0gMHg4MCkgewotICAgICAgICAgICAgT1VUMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID49IDB4YTAgJiYgYyA8PSAweGRmKSB7CiAgICAgICAgICAgICBpZiAoYyA9PSAweGEwKQotICAgICAgICAgICAgICAgIE9VVDEoMHhmOGYwKSAvKiBoYWxmLXdpZHRoIGthdGFrYW5hICovCisgICAgICAgICAgICAgICAgT1VUQ0hBUigweGY4ZjApOyAvKiBoYWxmLXdpZHRoIGthdGFrYW5hICovCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgT1VUMSgweGZlYzAgKyBjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgICAgIE9VVENIQVIoMHhmZWMwICsgYyk7CisgICAgICAgICAgICBORVhUX0lOKDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYyA+PSAweGZkLyogJiYgYyA8PSAweGZmKi8pIHsKICAgICAgICAgICAgIC8qIFdpbmRvd3MgY29tcGF0aWJpbGl0eSAqLwotICAgICAgICAgICAgT1VUMSgweGY4ZjEgLSAweGZkICsgYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE9VVENIQVIoMHhmOGYxIC0gMHhmZCArIGMpOworICAgICAgICAgICAgTkVYVF9JTigxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQotICAgICAgICBjMiA9IElOMjsKKyAgICAgICAgYzIgPSBJTkJZVEUyOwogCi0gICAgICAgIFRSWU1BUF9ERUMoY3A5MzJleHQsICoqb3V0YnVmLCBjLCBjMik7CisgICAgICAgIFRSWU1BUF9ERUMoY3A5MzJleHQsIHdyaXRlciwgYywgYzIpOwogICAgICAgICBlbHNlIGlmICgoYyA+PSAweDgxICYmIGMgPD0gMHg5ZikgfHwgKGMgPj0gMHhlMCAmJiBjIDw9IDB4ZWEpKXsKICAgICAgICAgICAgIGlmIChjMiA8IDB4NDAgfHwgKGMyID4gMHg3ZSAmJiBjMiA8IDB4ODApIHx8IGMyID4gMHhmYykKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTExOSwyMSArMTE5LDIxIEBACiAgICAgICAgICAgICBjID0gKDIgKiBjICsgKGMyIDwgMHg1ZSA/IDAgOiAxKSArIDB4MjEpOwogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDVlID8gYzIgOiBjMiAtIDB4NWUpICsgMHgyMTsKIAotICAgICAgICAgICAgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsIGMsIGMyKTsKKyAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMDgsIHdyaXRlciwgYywgYzIpOwogICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID49IDB4ZjAgJiYgYyA8PSAweGY5KSB7CiAgICAgICAgICAgICBpZiAoKGMyID49IDB4NDAgJiYgYzIgPD0gMHg3ZSkgfHwKICAgICAgICAgICAgICAgICAoYzIgPj0gMHg4MCAmJiBjMiA8PSAweGZjKSkKLSAgICAgICAgICAgICAgICBPVVQxKDB4ZTAwMCArIDE4OCAqIChjIC0gMHhmMCkgKwotICAgICAgICAgICAgICAgICAgICAgKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSkpCisgICAgICAgICAgICAgICAgT1VUQ0hBUigweGUwMDAgKyAxODggKiAoYyAtIDB4ZjApICsKKyAgICAgICAgICAgICAgICAgICAgKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiAxOwogCi0gICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgTkVYVF9JTigyKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTE0NiwyNSArMTQ2LDI0IEBACiAKIEVOQ09ERVIoZXVjX2ppc18yMDA0KQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVjczRfdCBjID0gSU4xOworICAgIHdoaWxlICgqaW5wb3MgPCBpbmxlbikgeworICAgICAgICBQeV9VQ1M0IGMgPSBJTkNIQVIxOwogICAgICAgICBEQkNIQVIgY29kZTsKICAgICAgICAgUHlfc3NpemVfdCBpbnNpemU7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBXUklURTEoYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoYykKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIERFQ09ERV9TVVJST0dBVEUoYykKLSAgICAgICAgaW5zaXplID0gR0VUX0lOU0laRShjKTsKKyAgICAgICAgaW5zaXplID0gMTsKIAogICAgICAgICBpZiAoYyA8PSAweEZGRkYpIHsKICAgICAgICAgICAgIEVNVUxBVEVfSklTWDAyMTNfMjAwMF9FTkNPREVfQk1QKGNvZGUsIGMpCiAgICAgICAgICAgICBlbHNlIFRSWU1BUF9FTkMoamlzeDAyMTNfYm1wLCBjb2RlLCBjKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gTVVMVElDKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmxlZnQgPCAyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmxlbiAtICppbnBvcyA8IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIE1CRU5DX0ZMVVNIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGZpbmRfcGFpcmVuY21hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVjczJfdCljLCAwLApAQCAtMTc3LDggKzE3Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1CRVJSX1RPT0ZFVzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgYzIgPSBJTkNIQVIyOwogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGZpbmRfcGFpcmVuY21hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWNzMl90KWMsICgqaW5idWYpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1Y3MyX3QpYywgYzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlzeDAyMTNfcGFpcl9lbmNtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSklTWDAyMTNfRU5DUEFJUlMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gREJDSU5WKSB7CkBAIC0xOTYsOCArMTk2LDggQEAKICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0VOQyhqaXN4Y29tbW9uLCBjb2RlLCBjKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHhmZjYxICYmIGMgPD0gMHhmZjlmKSB7CiAgICAgICAgICAgICAgICAgLyogSklTIFggMDIwMSBoYWxmLXdpZHRoIGthdGFrYW5hICovCi0gICAgICAgICAgICAgICAgV1JJVEUyKDB4OGUsIGMgLSAweGZlYzApCi0gICAgICAgICAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICAgICAgICAgIFdSSVRFQllURTIoMHg4ZSwgYyAtIDB4ZmVjMCkKKyAgICAgICAgICAgICAgICBORVhUKDEsIDIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAweGZmM2MpCkBAIC0yMTksMTIgKzIxOSwxMiBAQAogCiAgICAgICAgIGlmIChjb2RlICYgMHg4MDAwKSB7CiAgICAgICAgICAgICAvKiBDb2Rlc2V0IDIgKi8KLSAgICAgICAgICAgIFdSSVRFMygweDhmLCBjb2RlID4+IDgsIChjb2RlICYgMHhGRikgfCAweDgwKQotICAgICAgICAgICAgTkVYVChpbnNpemUsIDMpCisgICAgICAgICAgICBXUklURUJZVEUzKDB4OGYsIGNvZGUgPj4gOCwgKGNvZGUgJiAweEZGKSB8IDB4ODApCisgICAgICAgICAgICBORVhUKGluc2l6ZSwgMyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBDb2Rlc2V0IDEgKi8KLSAgICAgICAgICAgIFdSSVRFMigoY29kZSA+PiA4KSB8IDB4ODAsIChjb2RlICYgMHhGRikgfCAweDgwKQotICAgICAgICAgICAgTkVYVChpbnNpemUsIDIpCisgICAgICAgICAgICBXUklURUJZVEUyKChjb2RlID4+IDgpIHwgMHg4MCwgKGNvZGUgJiAweEZGKSB8IDB4ODApCisgICAgICAgICAgICBORVhUKGluc2l6ZSwgMik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzNCwxNCArMjM0LDEyIEBACiBERUNPREVSKGV1Y19qaXNfMjAwNCkKIHsKICAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTjE7Ci0gICAgICAgIHVjczRfdCBjb2RlOwotCi0gICAgICAgIFJFUVVJUkVfT1VUQlVGKDEpCisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOQllURTE7CisgICAgICAgIFB5X1VDUzQgY29kZTsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKLSAgICAgICAgICAgIE9VVDEoYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE9VVENIQVIoYyk7CisgICAgICAgICAgICBORVhUX0lOKDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMjUwLDEwICsyNDgsMTAgQEAKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzI7CiAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKLSAgICAgICAgICAgIGMyID0gSU4yOworICAgICAgICAgICAgYzIgPSBJTkJZVEUyOwogICAgICAgICAgICAgaWYgKGMyID49IDB4YTEgJiYgYzIgPD0gMHhkZikgewotICAgICAgICAgICAgICAgIE9VVDEoMHhmZWMwICsgYzIpCi0gICAgICAgICAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICAgICAgICAgIE9VVENIQVIoMHhmZWMwICsgYzIpOworICAgICAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0yNjIsNDYgKzI2MCw0NiBAQAogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMiwgYzM7CiAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMykKLSAgICAgICAgICAgIGMyID0gSU4yIF4gMHg4MDsKLSAgICAgICAgICAgIGMzID0gSU4zIF4gMHg4MDsKKyAgICAgICAgICAgIGMyID0gSU5CWVRFMiBeIDB4ODA7CisgICAgICAgICAgICBjMyA9IElOQllURTMgXiAweDgwOwogCiAgICAgICAgICAgICAvKiBKSVMgWCAwMjEzIFBsYW5lIDIgb3IgSklTIFggMDIxMiAoc2VlIE5PVEVTKSAqLwotICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTIoKipvdXRidWYsIGMyLCBjMykKLSAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18yX2JtcCwgKipvdXRidWYsIGMyLCBjMykgOwotICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzJfZW1wLCBjb2RlLCBjMiwgYzMpIHsKLSAgICAgICAgICAgICAgICBXUklURVVDUzQoRU1QQkFTRSB8IGNvZGUpCi0gICAgICAgICAgICAgICAgTkVYVF9JTigzKQorICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTIod3JpdGVyLCBjMiwgYzMpCisgICAgICAgICAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMTNfMl9ibXAsIHdyaXRlciwgYzIsIGMzKSA7CisgICAgICAgICAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxM18yX2VtcCwgY29kZSwgYzIsIGMzKSB7CisgICAgICAgICAgICAgICAgT1VUQ0hBUihFTVBCQVNFIHwgY29kZSk7CisgICAgICAgICAgICAgICAgTkVYVF9JTigzKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxMiwgKipvdXRidWYsIGMyLCBjMykgOworICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEyLCB3cml0ZXIsIGMyLCBjMykgOwogICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKLSAgICAgICAgICAgIE5FWFQoMywgMSkKKyAgICAgICAgICAgIE5FWFRfSU4oMyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyOwogCiAgICAgICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAgICAgICAgICAgICBjIF49IDB4ODA7Ci0gICAgICAgICAgICBjMiA9IElOMiBeIDB4ODA7CisgICAgICAgICAgICBjMiA9IElOQllURTIgXiAweDgwOwogCiAgICAgICAgICAgICAvKiBKSVMgWCAwMjEzIFBsYW5lIDEgKi8KLSAgICAgICAgICAgIEVNVUxBVEVfSklTWDAyMTNfMjAwMF9ERUNPREVfUExBTkUxKCoqb3V0YnVmLCBjLCBjMikKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMSAmJiBjMiA9PSAweDQwKSAqKm91dGJ1ZiA9IDB4ZmYzYzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMiAmJiBjMiA9PSAweDMyKSAqKm91dGJ1ZiA9IDB4ZmY1ZTsKLSAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsIGMsIGMyKTsKLSAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18xX2JtcCwgKipvdXRidWYsIGMsIGMyKTsKLSAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18xX2VtcCwgY29kZSwgYywgYzIpIHsKLSAgICAgICAgICAgICAgICBXUklURVVDUzQoRU1QQkFTRSB8IGNvZGUpCi0gICAgICAgICAgICAgICAgTkVYVF9JTigyKQorICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTEod3JpdGVyLCBjLCBjMikKKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMSAmJiBjMiA9PSAweDQwKSBPVVRDSEFSKDB4ZmYzYyk7CisgICAgICAgICAgICBlbHNlIGlmIChjID09IDB4MjIgJiYgYzIgPT0gMHgzMikgT1VUQ0hBUigweGZmNWUpOworICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjA4LCB3cml0ZXIsIGMsIGMyKTsKKyAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18xX2JtcCwgd3JpdGVyLCBjLCBjMik7CisgICAgICAgICAgICBlbHNlIFRSWU1BUF9ERUNfQ0hBUihqaXN4MDIxM18xX2VtcCwgY29kZSwgYywgYzIpIHsKKyAgICAgICAgICAgICAgICBPVVRDSEFSKEVNUEJBU0UgfCBjb2RlKTsKKyAgICAgICAgICAgICAgICBORVhUX0lOKDIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzX3BhaXIsIGNvZGUsIGMsIGMyKSB7Ci0gICAgICAgICAgICAgICAgV1JJVEUyKGNvZGUgPj4gMTYsIGNvZGUgJiAweGZmZmYpCi0gICAgICAgICAgICAgICAgTkVYVCgyLCAyKQorICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDX0NIQVIoamlzeDAyMTNfcGFpciwgY29kZSwgYywgYzIpIHsKKyAgICAgICAgICAgICAgICBPVVRDSEFSMihjb2RlID4+IDE2LCBjb2RlICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICBORVhUX0lOKDIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKLSAgICAgICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxNSwzNSArMzEzLDM2IEBACiAKIEVOQ09ERVIoZXVjX2pwKQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IElOMTsKKyAgICB3aGlsZSAoKmlucG9zIDwgaW5sZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjID0gSU5DSEFSMTsKICAgICAgICAgREJDSEFSIGNvZGU7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoKHVuc2lnbmVkIGNoYXIpYykKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFVDUzRJTlZBTElEKGMpCisgICAgICAgIGlmIChjID4gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgVFJZTUFQX0VOQyhqaXN4Y29tbW9uLCBjb2RlLCBjKTsKICAgICAgICAgZWxzZSBpZiAoYyA+PSAweGZmNjEgJiYgYyA8PSAweGZmOWYpIHsKICAgICAgICAgICAgIC8qIEpJUyBYIDAyMDEgaGFsZi13aWR0aCBrYXRha2FuYSAqLwotICAgICAgICAgICAgV1JJVEUyKDB4OGUsIGMgLSAweGZlYzApCi0gICAgICAgICAgICBORVhUKDEsIDIpCisgICAgICAgICAgICBXUklURUJZVEUyKDB4OGUsIGMgLSAweGZlYzApCisgICAgICAgICAgICBORVhUKDEsIDIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNpZm5kZWYgU1RSSUNUX0JVSUxECiAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHhmZjNjKSAvKiBGVUxMLVdJRFRIIFJFVkVSU0UgU09MSURVUyAqLwogICAgICAgICAgICAgY29kZSA9IDB4MjE0MDsKICAgICAgICAgZWxzZSBpZiAoYyA9PSAweGE1KSB7IC8qIFlFTiBTSUdOICovCi0gICAgICAgICAgICBXUklURTEoMHg1Yyk7Ci0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBXUklURUJZVEUxKDB4NWMpOworICAgICAgICAgICAgTkVYVCgxLCAxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgaWYgKGMgPT0gMHgyMDNlKSB7IC8qIE9WRVJMSU5FICovCi0gICAgICAgICAgICBXUklURTEoMHg3ZSk7Ci0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBXUklURUJZVEUxKDB4N2UpOworICAgICAgICAgICAgTkVYVCgxLCAxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTM1MiwxMiArMzUxLDEyIEBACiAKICAgICAgICAgaWYgKGNvZGUgJiAweDgwMDApIHsKICAgICAgICAgICAgIC8qIEpJUyBYIDAyMTIgKi8KLSAgICAgICAgICAgIFdSSVRFMygweDhmLCBjb2RlID4+IDgsIChjb2RlICYgMHhGRikgfCAweDgwKQotICAgICAgICAgICAgTkVYVCgxLCAzKQorICAgICAgICAgICAgV1JJVEVCWVRFMygweDhmLCBjb2RlID4+IDgsIChjb2RlICYgMHhGRikgfCAweDgwKQorICAgICAgICAgICAgTkVYVCgxLCAzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIEpJUyBYIDAyMDggKi8KLSAgICAgICAgICAgIFdSSVRFMigoY29kZSA+PiA4KSB8IDB4ODAsIChjb2RlICYgMHhGRikgfCAweDgwKQotICAgICAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICAgICAgV1JJVEVCWVRFMigoY29kZSA+PiA4KSB8IDB4ODAsIChjb2RlICYgMHhGRikgfCAweDgwKQorICAgICAgICAgICAgTkVYVCgxLCAyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzY3LDEzICszNjYsMTEgQEAKIERFQ09ERVIoZXVjX2pwKQogewogICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOMTsKLQotICAgICAgICBSRVFVSVJFX09VVEJVRigxKQorICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTkJZVEUxOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgT1VUMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zODIsMTAgKzM3OSwxMCBAQAogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMjsKIAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQotICAgICAgICAgICAgYzIgPSBJTjI7CisgICAgICAgICAgICBjMiA9IElOQllURTI7CiAgICAgICAgICAgICBpZiAoYzIgPj0gMHhhMSAmJiBjMiA8PSAweGRmKSB7Ci0gICAgICAgICAgICAgICAgT1VUMSgweGZlYzAgKyBjMikKLSAgICAgICAgICAgICAgICBORVhUKDIsIDEpCisgICAgICAgICAgICAgICAgT1VUQ0hBUigweGZlYzAgKyBjMik7CisgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTM5NCwxMSArMzkxLDExIEBACiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyLCBjMzsKIAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigzKQotICAgICAgICAgICAgYzIgPSBJTjI7Ci0gICAgICAgICAgICBjMyA9IElOMzsKKyAgICAgICAgICAgIGMyID0gSU5CWVRFMjsKKyAgICAgICAgICAgIGMzID0gSU5CWVRFMzsKICAgICAgICAgICAgIC8qIEpJUyBYIDAyMTIgKi8KLSAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMTIsICoqb3V0YnVmLCBjMiBeIDB4ODAsIGMzIF4gMHg4MCkgewotICAgICAgICAgICAgICAgIE5FWFQoMywgMSkKKyAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMTIsIHdyaXRlciwgYzIgXiAweDgwLCBjMyBeIDB4ODApIHsKKyAgICAgICAgICAgICAgICBORVhUX0lOKDMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtNDA3LDE4ICs0MDQsMTggQEAKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzI7CiAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKLSAgICAgICAgICAgIGMyID0gSU4yOworICAgICAgICAgICAgYzIgPSBJTkJZVEUyOwogICAgICAgICAgICAgLyogSklTIFggMDIwOCAqLwogI2lmbmRlZiBTVFJJQ1RfQlVJTEQKICAgICAgICAgICAgIGlmIChjID09IDB4YTEgJiYgYzIgPT0gMHhjMCkKICAgICAgICAgICAgICAgICAvKiBGVUxMLVdJRFRIIFJFVkVSU0UgU09MSURVUyAqLwotICAgICAgICAgICAgICAgICoqb3V0YnVmID0gMHhmZjNjOworICAgICAgICAgICAgICAgIE9VVENIQVIoMHhmZjNjKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMDgsICoqb3V0YnVmLAorICAgICAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMDgsIHdyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgXiAweDgwLCBjMiBeIDB4ODApIDsKICAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7Ci0gICAgICAgICAgICBORVhUKDIsIDEpCisgICAgICAgICAgICBORVhUX0lOKDIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzIsOCArNDI5LDggQEAKIAogRU5DT0RFUihzaGlmdF9qaXMpCiB7Ci0gICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gSU4xOworICAgIHdoaWxlICgqaW5wb3MgPCBpbmxlbikgeworICAgICAgICBQeV9VQ1M0IGMgPSBJTkNIQVIxOwogICAgICAgICBEQkNIQVIgY29kZTsKICAgICAgICAgdW5zaWduZWQgY2hhciBjMSwgYzI7CiAKQEAgLTQ0NSwxNCArNDQyLDE2IEBACiAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyMDNlKSBjb2RlID0gMHg3ZTsgLyogT1ZFUkxJTkUgKi8KICNlbmRpZgogICAgICAgICBlbHNlIEpJU1gwMjAxX0tfRU5DT0RFKGMsIGNvZGUpCi0gICAgICAgIGVsc2UgVUNTNElOVkFMSUQoYykKLSAgICAgICAgZWxzZSBjb2RlID0gTk9DSEFSOworICAgICAgICBlbHNlIGlmIChjID4gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGUgPSBOT0NIQVI7CiAKICAgICAgICAgaWYgKGNvZGUgPCAweDgwIHx8IChjb2RlID49IDB4YTEgJiYgY29kZSA8PSAweGRmKSkgewogICAgICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKIAotICAgICAgICAgICAgT1VUMSgodW5zaWduZWQgY2hhciljb2RlKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQllURTEoKHVuc2lnbmVkIGNoYXIpY29kZSkKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NzUsOSArNDc0LDkgQEAKICAgICAgICAgYzIgPSBjb2RlICYgMHhmZjsKICAgICAgICAgYzIgPSAoKChjMSAtIDB4MjEpICYgMSkgPyAweDVlIDogMCkgKyAoYzIgLSAweDIxKTsKICAgICAgICAgYzEgPSAoYzEgLSAweDIxKSA+PiAxOwotICAgICAgICBPVVQxKGMxIDwgMHgxZiA/IGMxICsgMHg4MSA6IGMxICsgMHhjMSkKLSAgICAgICAgT1VUMihjMiA8IDB4M2YgPyBjMiArIDB4NDAgOiBjMiArIDB4NDEpCi0gICAgICAgIE5FWFQoMSwgMikKKyAgICAgICAgT1VUQllURTEoYzEgPCAweDFmID8gYzEgKyAweDgxIDogYzEgKyAweGMxKQorICAgICAgICBPVVRCWVRFMihjMiA8IDB4M2YgPyBjMiArIDB4NDAgOiBjMiArIDB4NDEpCisgICAgICAgIE5FWFQoMSwgMik7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC00ODYsMjEgKzQ4NSwxOSBAQAogREVDT0RFUihzaGlmdF9qaXMpCiB7CiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU4xOwotCi0gICAgICAgIFJFUVVJUkVfT1VUQlVGKDEpCisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOQllURTE7CiAKICNpZmRlZiBTVFJJQ1RfQlVJTEQKLSAgICAgICAgSklTWDAyMDFfUl9ERUNPREUoYywgKipvdXRidWYpCisgICAgICAgIEpJU1gwMjAxX1JfREVDT0RFKGMsIHdyaXRlcikKICNlbHNlCi0gICAgICAgIGlmIChjIDwgMHg4MCkgKipvdXRidWYgPSBjOworICAgICAgICBpZiAoYyA8IDB4ODApIE9VVENIQVIoYyk7CiAjZW5kaWYKLSAgICAgICAgZWxzZSBKSVNYMDIwMV9LX0RFQ09ERShjLCAqKm91dGJ1ZikKKyAgICAgICAgZWxzZSBKSVNYMDIwMV9LX0RFQ09ERShjLCB3cml0ZXIpCiAgICAgICAgIGVsc2UgaWYgKChjID49IDB4ODEgJiYgYyA8PSAweDlmKSB8fCAoYyA+PSAweGUwICYmIGMgPD0gMHhlYSkpewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMSwgYzI7CiAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKLSAgICAgICAgICAgIGMyID0gSU4yOworICAgICAgICAgICAgYzIgPSBJTkJZVEUyOwogICAgICAgICAgICAgaWYgKGMyIDwgMHg0MCB8fCAoYzIgPiAweDdlICYmIGMyIDwgMHg4MCkgfHwgYzIgPiAweGZjKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwogCkBAIC01MTIsMTMgKzUwOSwxMyBAQAogI2lmbmRlZiBTVFJJQ1RfQlVJTEQKICAgICAgICAgICAgIGlmIChjMSA9PSAweDIxICYmIGMyID09IDB4NDApIHsKICAgICAgICAgICAgICAgICAvKiBGVUxMLVdJRFRIIFJFVkVSU0UgU09MSURVUyAqLwotICAgICAgICAgICAgICAgIE9VVDEoMHhmZjNjKQotICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgICAgICAgICBPVVRDSEFSKDB4ZmYzYyk7CisgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsIGMxLCBjMikgewotICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMDgsIHdyaXRlciwgYzEsIGMyKSB7CisgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTUyNyw3ICs1MjQsNyBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBORVhUKDEsIDEpIC8qIEpJUyBYIDAyMDEgKi8KKyAgICAgICAgTkVYVF9JTigxKTsgLyogSklTIFggMDIwMSAqLwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtNTQwLDMwICs1MzcsMjkgQEAKIAogRU5DT0RFUihzaGlmdF9qaXNfMjAwNCkKIHsKLSAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICB1Y3M0X3QgYyA9IElOMTsKKyAgICB3aGlsZSAoKmlucG9zIDwgaW5sZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjID0gSU5DSEFSMTsKICAgICAgICAgREJDSEFSIGNvZGUgPSBOT0NIQVI7CiAgICAgICAgIGludCBjMSwgYzI7CiAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplOwogCiAgICAgICAgIEpJU1gwMjAxX0VOQ09ERShjLCBjb2RlKQotICAgICAgICBlbHNlIERFQ09ERV9TVVJST0dBVEUoYykKIAogICAgICAgICBpZiAoY29kZSA8IDB4ODAgfHwgKGNvZGUgPj0gMHhhMSAmJiBjb2RlIDw9IDB4ZGYpKSB7Ci0gICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpY29kZSkKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoKHVuc2lnbmVkIGNoYXIpY29kZSkKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFJFUVVJUkVfT1VUQlVGKDIpCi0gICAgICAgIGluc2l6ZSA9IEdFVF9JTlNJWkUoYyk7CisgICAgICAgIGluc2l6ZSA9IDE7CiAKICAgICAgICAgaWYgKGNvZGUgPT0gTk9DSEFSKSB7CiAgICAgICAgICAgICBpZiAoYyA8PSAweGZmZmYpIHsKICAgICAgICAgICAgICAgICBFTVVMQVRFX0pJU1gwMjEzXzIwMDBfRU5DT0RFX0JNUChjb2RlLCBjKQogICAgICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0VOQyhqaXN4MDIxM19ibXAsIGNvZGUsIGMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gTVVMVElDKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5sZWZ0IDwgMikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlubGVuIC0gKmlucG9zIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIE1CRU5DX0ZMVVNIKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGZpbmRfcGFpcmVuY21hcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVjczJfdCljLCAwLApAQCAtNTc2LDggKzU3Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNQkVSUl9UT09GRVc7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoMiA9IElOQ0hBUjI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGZpbmRfcGFpcmVuY21hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVjczJfdCljLCBJTjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1Y3MyX3QpYywgY2gyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlzeDAyMTNfcGFpcl9lbmNtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpJU1gwMjEzX0VOQ1BBSVJTKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9PSBEQkNJTlYpIHsKQEAgLTYyMiwxMCArNjE5LDEwIEBACiAKICAgICAgICAgaWYgKGMxICYgMSkgYzIgKz0gMHg1ZTsKICAgICAgICAgYzEgPj49IDE7Ci0gICAgICAgIE9VVDEoYzEgKyAoYzEgPCAweDFmID8gMHg4MSA6IDB4YzEpKQotICAgICAgICBPVVQyKGMyICsgKGMyIDwgMHgzZiA/IDB4NDAgOiAweDQxKSkKKyAgICAgICAgT1VUQllURTEoYzEgKyAoYzEgPCAweDFmID8gMHg4MSA6IDB4YzEpKQorICAgICAgICBPVVRCWVRFMihjMiArIChjMiA8IDB4M2YgPyAweDQwIDogMHg0MSkpCiAKLSAgICAgICAgTkVYVChpbnNpemUsIDIpCisgICAgICAgIE5FWFQoaW5zaXplLCAyKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTYzNCwxNiArNjMxLDE1IEBACiBERUNPREVSKHNoaWZ0X2ppc18yMDA0KQogewogICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOMTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU5CWVRFMTsKIAotICAgICAgICBSRVFVSVJFX09VVEJVRigxKQotICAgICAgICBKSVNYMDIwMV9ERUNPREUoYywgKipvdXRidWYpCisgICAgICAgIEpJU1gwMjAxX0RFQ09ERShjLCB3cml0ZXIpCiAgICAgICAgIGVsc2UgaWYgKChjID49IDB4ODEgJiYgYyA8PSAweDlmKSB8fCAoYyA+PSAweGUwICYmIGMgPD0gMHhmYykpewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMSwgYzI7Ci0gICAgICAgICAgICB1Y3M0X3QgY29kZTsKKyAgICAgICAgICAgIFB5X1VDUzQgY29kZTsKIAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQotICAgICAgICAgICAgYzIgPSBJTjI7CisgICAgICAgICAgICBjMiA9IElOQllURTI7CiAgICAgICAgICAgICBpZiAoYzIgPCAweDQwIHx8IChjMiA+IDB4N2UgJiYgYzIgPCAweDgwKSB8fCBjMiA+IDB4ZmMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKQEAgLTY1NCw1MCArNjUwLDQ3IEBACiAKICAgICAgICAgICAgIGlmIChjMSA8IDB4NWUpIHsgLyogUGxhbmUgMSAqLwogICAgICAgICAgICAgICAgIGMxICs9IDB4MjE7Ci0gICAgICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTEoKipvdXRidWYsCisgICAgICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTEod3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSwgYzIpCi0gICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjA4LCAqKm91dGJ1ZiwgYzEsIGMyKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5FWFRfT1VUKDEpCisgICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjA4LCB3cml0ZXIsIGMxLCBjMikgewogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMTNfMV9ibXAsICoqb3V0YnVmLAorICAgICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM18xX2JtcCwgd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSwgYzIpIHsKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PVVQoMSkKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzFfZW1wLCBjb2RlLCBjMSwgYzIpIHsKLSAgICAgICAgICAgICAgICAgICAgV1JJVEVVQ1M0KEVNUEJBU0UgfCBjb2RlKQorICAgICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQ19DSEFSKGppc3gwMjEzXzFfZW1wLCBjb2RlLCBjMSwgYzIpIHsKKyAgICAgICAgICAgICAgICAgICAgT1VUQ0hBUihFTVBCQVNFIHwgY29kZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxM19wYWlyLCBjb2RlLCBjMSwgYzIpIHsKLSAgICAgICAgICAgICAgICAgICAgV1JJVEUyKGNvZGUgPj4gMTYsIGNvZGUgJiAweGZmZmYpCi0gICAgICAgICAgICAgICAgICAgIE5FWFRfT1VUKDIpCisgICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDX0NIQVIoamlzeDAyMTNfcGFpciwgY29kZSwgYzEsIGMyKSB7CisgICAgICAgICAgICAgICAgICAgIE9VVENIQVIyKGNvZGUgPj4gMTYsIGNvZGUgJiAweGZmZmYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgICAgIE5FWFRfSU4oMikKKyAgICAgICAgICAgICAgICBORVhUX0lOKDIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIFBsYW5lIDIgKi8KICAgICAgICAgICAgICAgICBpZiAoYzEgPj0gMHg2NykgYzEgKz0gMHgwNzsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChjMSA+PSAweDYzIHx8IGMxID09IDB4NWYpIGMxIC09IDB4Mzc7CiAgICAgICAgICAgICAgICAgZWxzZSBjMSAtPSAweDNkOwogCi0gICAgICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTIoKipvdXRidWYsCisgICAgICAgICAgICAgICAgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTIod3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMSwgYzIpCi0gICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzJfYm1wLCAqKm91dGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEsIGMyKSA7Ci0gICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzJfZW1wLCBjb2RlLCBjMSwgYzIpIHsKLSAgICAgICAgICAgICAgICAgICAgV1JJVEVVQ1M0KEVNUEJBU0UgfCBjb2RlKQotICAgICAgICAgICAgICAgICAgICBORVhUX0lOKDIpCisgICAgICAgICAgICAgICAgZWxzZSBUUllNQVBfREVDKGppc3gwMjEzXzJfYm1wLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxLCBjMikgeworICAgICAgICAgICAgICAgIH0gZWxzZSBUUllNQVBfREVDX0NIQVIoamlzeDAyMTNfMl9lbXAsIGNvZGUsIGMxLCBjMikgeworICAgICAgICAgICAgICAgICAgICBPVVRDSEFSKEVNUEJBU0UgfCBjb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBORVhUKDEsIDEpIC8qIEpJUyBYIDAyMDEgKi8KKyAgICAgICAgTkVYVF9JTigxKTsgLyogSklTIFggMDIwMSAqLwogICAgIH0KIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jCmluZGV4IGY1Njk3ZGQuLjBjMjMwOWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3Nfa3IuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMKQEAgLTMzLDE2ICszMywxOCBAQAogCiBFTkNPREVSKGV1Y19rcikKIHsKLSAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBJTjE7CisgICAgd2hpbGUgKCppbnBvcyA8IGlubGVuKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IElOQ0hBUjE7CiAgICAgICAgIERCQ0hBUiBjb2RlOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgV1JJVEUxKCh1bnNpZ25lZCBjaGFyKWMpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBXUklURUJZVEUxKCh1bnNpZ25lZCBjaGFyKWMpCisgICAgICAgICAgICBORVhUKDEsIDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgVUNTNElOVkFMSUQoYykKKworICAgICAgICBpZiAoYyA+IDB4RkZGRikKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIFJFUVVJUkVfT1VUQlVGKDIpCiAgICAgICAgIFRSWU1BUF9FTkMoY3A5NDksIGNvZGUsIGMpOwpAQCAtNTAsOSArNTIsOSBAQAogCiAgICAgICAgIGlmICgoY29kZSAmIDB4ODAwMCkgPT0gMCkgewogICAgICAgICAgICAgLyogS1MgWCAxMDAxIGNvZGVkIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgT1VUMSgoY29kZSA+PiA4KSB8IDB4ODApCi0gICAgICAgICAgICBPVVQyKChjb2RlICYgMHhGRikgfCAweDgwKQotICAgICAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICAgICAgT1VUQllURTEoKGNvZGUgPj4gOCkgfCAweDgwKQorICAgICAgICAgICAgT1VUQllURTIoKGNvZGUgJiAweEZGKSB8IDB4ODApCisgICAgICAgICAgICBORVhUKDEsIDIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeyAgICAgICAgICAvKiBNYXBwaW5nIGlzIGZvdW5kIGluIENQOTQ5IGV4dGVuc2lvbiwKICAgICAgICAgICAgICAgICAgKiBidXQgd2UgZW5jb2RlIGl0IGluIEtTIFggMTAwMToxOTk4IEFubmV4IDMsCkBAIC02MSwyMyArNjMsMjMgQEAKICAgICAgICAgICAgIFJFUVVJUkVfT1VUQlVGKDgpCiAKICAgICAgICAgICAgIC8qIHN5bGxhYmxlIGNvbXBvc2l0aW9uIHByZWNlZGVuY2UgKi8KLSAgICAgICAgICAgIE9VVDEoRVVDS1JfSkFNT19GSVJTVEJZVEUpCi0gICAgICAgICAgICBPVVQyKEVVQ0tSX0pBTU9fRklMTEVSKQorICAgICAgICAgICAgT1VUQllURTEoRVVDS1JfSkFNT19GSVJTVEJZVEUpCisgICAgICAgICAgICBPVVRCWVRFMihFVUNLUl9KQU1PX0ZJTExFUikKIAogICAgICAgICAgICAgLyogQWxsIGNvZGVwb2ludHMgaW4gQ1A5NDkgZXh0ZW5zaW9uIGFyZSBpbiB1bmljb2RlCiAgICAgICAgICAgICAgKiBIYW5ndWwgU3lsbGFibGUgYXJlYS4gKi8KICAgICAgICAgICAgIGFzc2VydCgweGFjMDAgPD0gYyAmJiBjIDw9IDB4ZDdhMyk7CiAgICAgICAgICAgICBjIC09IDB4YWMwMDsKIAotICAgICAgICAgICAgT1VUMyhFVUNLUl9KQU1PX0ZJUlNUQllURSkKLSAgICAgICAgICAgIE9VVDQodTJjZ2tfY2hvc2VvbmdbYyAvIDU4OF0pCi0gICAgICAgICAgICBORVhUX09VVCg0KQorICAgICAgICAgICAgT1VUQllURTMoRVVDS1JfSkFNT19GSVJTVEJZVEUpCisgICAgICAgICAgICBPVVRCWVRFNCh1MmNna19jaG9zZW9uZ1tjIC8gNTg4XSkKKyAgICAgICAgICAgIE5FWFRfT1VUKDQpOwogCi0gICAgICAgICAgICBPVVQxKEVVQ0tSX0pBTU9fRklSU1RCWVRFKQotICAgICAgICAgICAgT1VUMih1MmNna19qdW5nc2VvbmdbKGMgLyAyOCkgJSAyMV0pCi0gICAgICAgICAgICBPVVQzKEVVQ0tSX0pBTU9fRklSU1RCWVRFKQotICAgICAgICAgICAgT1VUNCh1MmNna19qb25nc2VvbmdbYyAlIDI4XSkKLSAgICAgICAgICAgIE5FWFQoMSwgNCkKKyAgICAgICAgICAgIE9VVEJZVEUxKEVVQ0tSX0pBTU9fRklSU1RCWVRFKQorICAgICAgICAgICAgT1VUQllURTIodTJjZ2tfanVuZ3Nlb25nWyhjIC8gMjgpICUgMjFdKQorICAgICAgICAgICAgT1VUQllURTMoRVVDS1JfSkFNT19GSVJTVEJZVEUpCisgICAgICAgICAgICBPVVRCWVRFNCh1MmNna19qb25nc2VvbmdbYyAlIDI4XSkKKyAgICAgICAgICAgIE5FWFQoMSwgNCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMiwyMCArMTA0LDE4IEBACiBERUNPREVSKGV1Y19rcikKIHsKICAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTjE7Ci0KLSAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU5CWVRFMTsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKLSAgICAgICAgICAgIE9VVDEoYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE9VVENIQVIoYyk7CisgICAgICAgICAgICBORVhUX0lOKDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAKICAgICAgICAgaWYgKGMgPT0gRVVDS1JfSkFNT19GSVJTVEJZVEUgJiYKLSAgICAgICAgICAgIElOMiA9PSBFVUNLUl9KQU1PX0ZJTExFUikgeworICAgICAgICAgICAgSU5CWVRFMiA9PSBFVUNLUl9KQU1PX0ZJTExFUikgewogICAgICAgICAgICAgLyogS1MgWCAxMDAxOjE5OTggQW5uZXggMyBtYWtlLXVwIHNlcXVlbmNlICovCiAgICAgICAgICAgICBEQkNIQVIgY2hvLCBqdW5nLCBqb25nOwogCkBAIC0xNDUsMTEgKzE0NSwxMSBAQAogICAgICAgICAgICAgaWYgKGNobyA9PSBOT05FIHx8IGp1bmcgPT0gTk9ORSB8fCBqb25nID09IE5PTkUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICAgICAgICAgIE9VVDEoMHhhYzAwICsgY2hvKjU4OCArIGp1bmcqMjggKyBqb25nKTsKLSAgICAgICAgICAgIE5FWFQoOCwgMSkKKyAgICAgICAgICAgIE9VVENIQVIoMHhhYzAwICsgY2hvKjU4OCArIGp1bmcqMjggKyBqb25nKTsKKyAgICAgICAgICAgIE5FWFRfSU4oOCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBUUllNQVBfREVDKGtzeDEwMDEsICoqb3V0YnVmLCBjIF4gMHg4MCwgSU4yIF4gMHg4MCkgewotICAgICAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICBlbHNlIFRSWU1BUF9ERUMoa3N4MTAwMSwgd3JpdGVyLCBjIF4gMHg4MCwgSU5CWVRFMiBeIDB4ODApIHsKKyAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNjYsMjcgKzE2NiwyOSBAQAogCiBFTkNPREVSKGNwOTQ5KQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IElOMTsKKyAgICB3aGlsZSAoKmlucG9zIDwgaW5sZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjID0gSU5DSEFSMTsKICAgICAgICAgREJDSEFSIGNvZGU7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoKHVuc2lnbmVkIGNoYXIpYykKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBVQ1M0SU5WQUxJRChjKQorCisgICAgICAgIGlmIChjID4gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMikKICAgICAgICAgVFJZTUFQX0VOQyhjcDk0OSwgY29kZSwgYyk7CiAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKLSAgICAgICAgT1VUMSgoY29kZSA+PiA4KSB8IDB4ODApCisgICAgICAgIE9VVEJZVEUxKChjb2RlID4+IDgpIHwgMHg4MCkKICAgICAgICAgaWYgKGNvZGUgJiAweDgwMDApCi0gICAgICAgICAgICBPVVQyKGNvZGUgJiAweEZGKSAvKiBNU0Igc2V0OiBDUDk0OSAqLworICAgICAgICAgICAgT1VUQllURTIoY29kZSAmIDB4RkYpIC8qIE1TQiBzZXQ6IENQOTQ5ICovCiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIE9VVDIoKGNvZGUgJiAweEZGKSB8IDB4ODApIC8qIE1TQiB1bnNldDoga3MgeCAxMDAxICovCi0gICAgICAgIE5FWFQoMSwgMikKKyAgICAgICAgICAgIE9VVEJZVEUyKChjb2RlICYgMHhGRikgfCAweDgwKSAvKiBNU0IgdW5zZXQ6IGtzIHggMTAwMSAqLworICAgICAgICBORVhUKDEsIDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTk1LDIyICsxOTcsMjAgQEAKIERFQ09ERVIoY3A5NDkpCiB7CiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU4xOwotCi0gICAgICAgIFJFUVVJUkVfT1VUQlVGKDEpCisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOQllURTE7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBPVVQxKGMpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBPVVRDSEFSKGMpOworICAgICAgICAgICAgTkVYVF9JTigxKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQotICAgICAgICBUUllNQVBfREVDKGtzeDEwMDEsICoqb3V0YnVmLCBjIF4gMHg4MCwgSU4yIF4gMHg4MCk7Ci0gICAgICAgIGVsc2UgVFJZTUFQX0RFQyhjcDk0OWV4dCwgKipvdXRidWYsIGMsIElOMik7CisgICAgICAgIFRSWU1BUF9ERUMoa3N4MTAwMSwgd3JpdGVyLCBjIF4gMHg4MCwgSU5CWVRFMiBeIDB4ODApOworICAgICAgICBlbHNlIFRSWU1BUF9ERUMoY3A5NDlleHQsIHdyaXRlciwgYywgSU5CWVRFMik7CiAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKLSAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICBORVhUX0lOKDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjUwLDE2ICsyNTAsMTggQEAKIAogRU5DT0RFUihqb2hhYikKIHsKLSAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBJTjE7CisgICAgd2hpbGUgKCppbnBvcyA8IGlubGVuKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IElOQ0hBUjE7CiAgICAgICAgIERCQ0hBUiBjb2RlOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgV1JJVEUxKCh1bnNpZ25lZCBjaGFyKWMpCi0gICAgICAgICAgICBORVhUKDEsIDEpCisgICAgICAgICAgICBXUklURUJZVEUxKCh1bnNpZ25lZCBjaGFyKWMpCisgICAgICAgICAgICBORVhUKDEsIDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgVUNTNElOVkFMSUQoYykKKworICAgICAgICBpZiAoYyA+IDB4RkZGRikKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIFJFUVVJUkVfT1VUQlVGKDIpCiAKQEAgLTI4NSw5ICsyODcsOSBAQAogICAgICAgICAgICAgICAgIHQxID0gKGMxIDwgMHg0YSA/IChjMSAtIDB4MjEgKyAweDFiMikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAoYzEgLSAweDIxICsgMHgxOTcpKTsKICAgICAgICAgICAgICAgICB0MiA9ICgodDEgJiAxKSA/IDB4NWUgOiAwKSArIChjMiAtIDB4MjEpOwotICAgICAgICAgICAgICAgIE9VVDEodDEgPj4gMSkKLSAgICAgICAgICAgICAgICBPVVQyKHQyIDwgMHg0ZSA/IHQyICsgMHgzMSA6IHQyICsgMHg0MykKLSAgICAgICAgICAgICAgICBORVhUKDEsIDIpCisgICAgICAgICAgICAgICAgT1VUQllURTEodDEgPj4gMSkKKyAgICAgICAgICAgICAgICBPVVRCWVRFMih0MiA8IDB4NGUgPyB0MiArIDB4MzEgOiB0MiArIDB4NDMpCisgICAgICAgICAgICAgICAgTkVYVCgxLCAyKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTI5Niw5ICsyOTgsOSBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gMTsKIAotICAgICAgICBPVVQxKGNvZGUgPj4gOCkKLSAgICAgICAgT1VUMihjb2RlICYgMHhmZikKLSAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICBPVVRCWVRFMShjb2RlID4+IDgpCisgICAgICAgIE9VVEJZVEUyKGNvZGUgJiAweGZmKQorICAgICAgICBORVhUKDEsIDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMzQ4LDE4ICszNTAsMTYgQEAKIERFQ09ERVIoam9oYWIpCiB7CiAgICAgd2hpbGUgKGlubGVmdCA+IDApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciAgICBjID0gSU4xLCBjMjsKLQotICAgICAgICBSRVFVSVJFX09VVEJVRigxKQorICAgICAgICB1bnNpZ25lZCBjaGFyICAgIGMgPSBJTkJZVEUxLCBjMjsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKLSAgICAgICAgICAgIE9VVDEoYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE9VVENIQVIoYyk7CisgICAgICAgICAgICBORVhUX0lOKDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCi0gICAgICAgIGMyID0gSU4yOworICAgICAgICBjMiA9IElOQllURTI7CiAKICAgICAgICAgaWYgKGMgPCAweGQ4KSB7CiAgICAgICAgICAgICAvKiBqb2hhYiBoYW5ndWwgKi8KQEAgLTM4MSwzMyArMzgxLDMzIEBACiAgICAgICAgICAgICBpZiAoaV9jaG8gPT0gRklMTCkgewogICAgICAgICAgICAgICAgIGlmIChpX2p1bmcgPT0gRklMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoaV9qb25nID09IEZJTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBPVVQxKDB4MzAwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIE9VVENIQVIoMHgzMDAwKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgT1VUMSgweDMxMDAgfAotICAgICAgICAgICAgICAgICAgICAgICAgICBqb2hhYmphbW9fam9uZ3Nlb25nW2Nfam9uZ10pCisgICAgICAgICAgICAgICAgICAgICAgICBPVVRDSEFSKDB4MzEwMCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9oYWJqYW1vX2pvbmdzZW9uZ1tjX2pvbmddKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpX2pvbmcgPT0gRklMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIE9VVDEoMHgzMTAwIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgam9oYWJqYW1vX2p1bmdzZW9uZ1tjX2p1bmddKQorICAgICAgICAgICAgICAgICAgICAgICAgT1VUQ0hBUigweDMxMDAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaGFiamFtb19qdW5nc2VvbmdbY19qdW5nXSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGlfanVuZyA9PSBGSUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpX2pvbmcgPT0gRklMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIE9VVDEoMHgzMTAwIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgam9oYWJqYW1vX2Nob3Nlb25nW2NfY2hvXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIE9VVENIQVIoMHgzMTAwIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2hhYmphbW9fY2hvc2VvbmdbY19jaG9dKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgT1VUMSgweGFjMDAgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGlfY2hvICogNTg4ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpX2p1bmcgKiAyOCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGlfam9uZyA9PSBGSUxMID8gMCA6IGlfam9uZykpCisgICAgICAgICAgICAgICAgICAgIE9VVENIQVIoMHhhYzAwICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlfY2hvICogNTg4ICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlfanVuZyAqIDI4ICsKKyAgICAgICAgICAgICAgICAgICAgICAgIChpX2pvbmcgPT0gRklMTCA/IDAgOiBpX2pvbmcpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIE5FWFQoMiwgMSkKKyAgICAgICAgICAgIE5FWFRfSU4oMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBLUyBYIDEwMDEgZXhjZXB0IGhhbmd1bCBqYW1vcyBhbmQgc3lsbGFibGVzICovCiAgICAgICAgICAgICBpZiAoYyA9PSAweGRmIHx8IGMgPiAweGY5IHx8CkBAIC00MjQsOSArNDI0LDkgQEAKICAgICAgICAgICAgICAgICB0MSA9IHQxICsgKHQyIDwgMHg1ZSA/IDAgOiAxKSArIDB4MjE7CiAgICAgICAgICAgICAgICAgdDIgPSAodDIgPCAweDVlID8gdDIgOiB0MiAtIDB4NWUpICsgMHgyMTsKIAotICAgICAgICAgICAgICAgIFRSWU1BUF9ERUMoa3N4MTAwMSwgKipvdXRidWYsIHQxLCB0Mik7CisgICAgICAgICAgICAgICAgVFJZTUFQX0RFQyhrc3gxMDAxLCB3cml0ZXIsIHQxLCB0Mik7CiAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKLSAgICAgICAgICAgICAgICBORVhUKDIsIDEpCisgICAgICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYwppbmRleCA5MTYyOThkLi44MGUwYjgxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX3R3LmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc190dy5jCkBAIC0xMywyNiArMTMsMjggQEAKIAogRU5DT0RFUihiaWc1KQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9ICoqaW5idWY7CisgICAgd2hpbGUgKCppbnBvcyA8IGlubGVuKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IElOQ0hBUjE7CiAgICAgICAgIERCQ0hBUiBjb2RlOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewogICAgICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKICAgICAgICAgICAgICoqb3V0YnVmID0gKHVuc2lnbmVkIGNoYXIpYzsKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBVQ1M0SU5WQUxJRChjKQorCisgICAgICAgIGlmIChjID4gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMikKIAogICAgICAgICBUUllNQVBfRU5DKGJpZzUsIGNvZGUsIGMpOwogICAgICAgICBlbHNlIHJldHVybiAxOwogCi0gICAgICAgIE9VVDEoY29kZSA+PiA4KQotICAgICAgICBPVVQyKGNvZGUgJiAweEZGKQotICAgICAgICBORVhUKDEsIDIpCisgICAgICAgIE9VVEJZVEUxKGNvZGUgPj4gOCkKKyAgICAgICAgT1VUQllURTIoY29kZSAmIDB4RkYpCisgICAgICAgIE5FWFQoMSwgMik7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC00MSwxOSArNDMsMTcgQEAKIERFQ09ERVIoYmlnNSkKIHsKICAgICB3aGlsZSAoaW5sZWZ0ID4gMCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTjE7Ci0KLSAgICAgICAgUkVRVUlSRV9PVVRCVUYoMSkKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gSU5CWVRFMTsKIAogICAgICAgICBpZiAoYyA8IDB4ODApIHsKLSAgICAgICAgICAgIE9VVDEoYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIE9VVENIQVIoYyk7CisgICAgICAgICAgICBORVhUX0lOKDEpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCi0gICAgICAgIFRSWU1BUF9ERUMoYmlnNSwgKipvdXRidWYsIGMsIElOMikgewotICAgICAgICAgICAgTkVYVCgyLCAxKQorICAgICAgICBUUllNQVBfREVDKGJpZzUsIHdyaXRlciwgYywgSU5CWVRFMikgeworICAgICAgICAgICAgTkVYVF9JTigyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHJldHVybiAxOwogICAgIH0KQEAgLTY4LDI1ICs2OCwyNyBAQAogCiBFTkNPREVSKGNwOTUwKQogewotICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IElOMTsKKyAgICB3aGlsZSAoKmlucG9zIDwgaW5sZW4pIHsKKyAgICAgICAgUHlfVUNTNCBjID0gSU5DSEFSMTsKICAgICAgICAgREJDSEFSIGNvZGU7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpYykKLSAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIFdSSVRFQllURTEoKHVuc2lnbmVkIGNoYXIpYykKKyAgICAgICAgICAgIE5FWFQoMSwgMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBVQ1M0SU5WQUxJRChjKQorCisgICAgICAgIGlmIChjID4gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgUkVRVUlSRV9PVVRCVUYoMikKICAgICAgICAgVFJZTUFQX0VOQyhjcDk1MGV4dCwgY29kZSwgYyk7CiAgICAgICAgIGVsc2UgVFJZTUFQX0VOQyhiaWc1LCBjb2RlLCBjKTsKICAgICAgICAgZWxzZSByZXR1cm4gMTsKIAotICAgICAgICBPVVQxKGNvZGUgPj4gOCkKLSAgICAgICAgT1VUMihjb2RlICYgMHhGRikKLSAgICAgICAgTkVYVCgxLCAyKQorICAgICAgICBPVVRCWVRFMShjb2RlID4+IDgpCisgICAgICAgIE9VVEJZVEUyKGNvZGUgJiAweEZGKQorICAgICAgICBORVhUKDEsIDIpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtOTUsMjMgKzk3LDIxIEBACiBERUNPREVSKGNwOTUwKQogewogICAgIHdoaWxlIChpbmxlZnQgPiAwKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9IElOMTsKLQotICAgICAgICBSRVFVSVJFX09VVEJVRigxKQorICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBJTkJZVEUxOwogCiAgICAgICAgIGlmIChjIDwgMHg4MCkgewotICAgICAgICAgICAgT1VUMShjKQotICAgICAgICAgICAgTkVYVCgxLCAxKQorICAgICAgICAgICAgT1VUQ0hBUihjKTsKKyAgICAgICAgICAgIE5FWFRfSU4oMSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKIAotICAgICAgICBUUllNQVBfREVDKGNwOTUwZXh0LCAqKm91dGJ1ZiwgYywgSU4yKTsKLSAgICAgICAgZWxzZSBUUllNQVBfREVDKGJpZzUsICoqb3V0YnVmLCBjLCBJTjIpOworICAgICAgICBUUllNQVBfREVDKGNwOTUwZXh0LCB3cml0ZXIsIGMsIElOQllURTIpOworICAgICAgICBlbHNlIFRSWU1BUF9ERUMoYmlnNSwgd3JpdGVyLCBjLCBJTkJZVEUyKTsKICAgICAgICAgZWxzZSByZXR1cm4gMTsKIAotICAgICAgICBORVhUKDIsIDEpCisgICAgICAgIE5FWFRfSU4oMik7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9hbGdfamlzeDAyMDEuaCBiL01vZHVsZXMvY2prY29kZWNzL2FsZ19qaXN4MDIwMS5oCmluZGV4IDBiYzdkYjUuLjk4YzYzZTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL2FsZ19qaXN4MDIwMS5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2FsZ19qaXN4MDIwMS5oCkBAIC0xMCwxNSArMTAsMjQgQEAKICAgICBKSVNYMDIwMV9SX0VOQ09ERShjLCBhc3NpKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGVsc2UgSklTWDAyMDFfS19FTkNPREUoYywgYXNzaSkKIAotI2RlZmluZSBKSVNYMDIwMV9SX0RFQ09ERShjLCBhc3NpKSAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIEpJU1gwMjAxX1JfREVDT0RFX0NIQVIoYywgYXNzaSkgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoKGMpIDwgMHg1YykgKGFzc2kpID0gKGMpOyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGVsc2UgaWYgKChjKSA9PSAweDVjKSAoYXNzaSkgPSAweDAwYTU7ICAgICAgICAgICAgICBcCiAgICAgZWxzZSBpZiAoKGMpIDwgMHg3ZSkgKGFzc2kpID0gKGMpOyAgICAgICAgICAgICAgICAgIFwKICAgICBlbHNlIGlmICgoYykgPT0gMHg3ZSkgKGFzc2kpID0gMHgyMDNlOyAgICAgICAgICAgICAgXAogICAgIGVsc2UgaWYgKChjKSA9PSAweDdmKSAoYXNzaSkgPSAweDdmOwotI2RlZmluZSBKSVNYMDIwMV9LX0RFQ09ERShjLCBhc3NpKSAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIEpJU1gwMjAxX1JfREVDT0RFKGMsIHdyaXRlcikgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKGMpIDwgMHg1YykgT1VUQ0hBUihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICgoYykgPT0gMHg1YykgT1VUQ0hBUigweDAwYTUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICgoYykgPCAweDdlKSBPVVRDSEFSKGMpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICgoYykgPT0gMHg3ZSkgT1VUQ0hBUigweDIwM2UpOyAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmICgoYykgPT0gMHg3ZikgT1VUQ0hBUigweDdmKTsKKyNkZWZpbmUgSklTWDAyMDFfS19ERUNPREUoYywgd3JpdGVyKSAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICgoYykgPj0gMHhhMSAmJiAoYykgPD0gMHhkZikgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKGFzc2kpID0gMHhmZWMwICsgKGMpOwotI2RlZmluZSBKSVNYMDIwMV9ERUNPREUoYywgYXNzaSkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgSklTWDAyMDFfUl9ERUNPREUoYywgYXNzaSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIEpJU1gwMjAxX0tfREVDT0RFKGMsIGFzc2kpCisgICAgICAgIE9VVENIQVIoMHhmZWMwICsgKGMpKTsKKyNkZWZpbmUgSklTWDAyMDFfS19ERUNPREVfQ0hBUihjLCBhc3NpKSAgICAgICAgICAgICAgICAgXAorICAgIGlmICgoYykgPj0gMHhhMSAmJiAoYykgPD0gMHhkZikgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChhc3NpKSA9IDB4ZmVjMCArIChjKTsKKyNkZWZpbmUgSklTWDAyMDFfREVDT0RFKGMsIHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEpJU1gwMjAxX1JfREVDT0RFKGMsIHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBKSVNYMDIwMV9LX0RFQ09ERShjLCB3cml0ZXIpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jamtjb2RlY3MuaCBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCmluZGV4IGFiMDY4MmEuLjllOTJkYjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCkBAIC0zMyw3ICszMyw3IEBACiB0eXBlZGVmIHN0cnVjdCBkYmNzX2luZGV4IGRlY29kZV9tYXA7CiAKIHN0cnVjdCB3aWRlZGJjc19pbmRleCB7Ci0gICAgY29uc3QgdWNzNF90ICptYXA7CisgICAgY29uc3QgUHlfVUNTNCAqbWFwOwogICAgIHVuc2lnbmVkIGNoYXIgYm90dG9tLCB0b3A7CiB9OwogdHlwZWRlZiBzdHJ1Y3Qgd2lkZWRiY3NfaW5kZXggd2lkZWRlY29kZV9tYXA7CkBAIC01Niw3ICs1Niw3IEBACiB9OwogCiBzdHJ1Y3QgcGFpcl9lbmNvZGVtYXAgewotICAgIHVjczRfdCB1bmlzZXE7CisgICAgUHlfVUNTNCB1bmlzZXE7CiAgICAgREJDSEFSIGNvZGU7CiB9OwogCkBAIC03Miw3ICs3Miw4IEBACiAjZGVmaW5lIEVOQ09ERVIoZW5jb2RpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgc3RhdGljIFB5X3NzaXplX3QgZW5jb2RpbmcjI19lbmNvZGUoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlICpzdGF0ZSwgY29uc3Qgdm9pZCAqY29uZmlnLCAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKippbmJ1ZiwgUHlfc3NpemVfdCBpbmxlZnQsICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGludCBraW5kLCB2b2lkICpkYXRhLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90ICppbnBvcywgUHlfc3NpemVfdCBpbmxlbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB1bnNpZ25lZCBjaGFyICoqb3V0YnVmLCBQeV9zc2l6ZV90IG91dGxlZnQsIGludCBmbGFncykKICNkZWZpbmUgRU5DT0RFUl9SRVNFVChlbmNvZGluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBzdGF0aWMgUHlfc3NpemVfdCBlbmNvZGluZyMjX2VuY29kZV9yZXNldCggICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTg2LDI4ICs4NywzMCBAQAogICAgIHN0YXRpYyBQeV9zc2l6ZV90IGVuY29kaW5nIyNfZGVjb2RlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBNdWx0aWJ5dGVDb2RlY19TdGF0ZSAqc3RhdGUsIGNvbnN0IHZvaWQgKmNvbmZpZywgICAgICAgICAgICAgICAgXAogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW5idWYsIFB5X3NzaXplX3QgaW5sZWZ0LCAgICAgICAgICAgICAgICAgXAotICAgICAgICBQeV9VTklDT0RFICoqb3V0YnVmLCBQeV9zc2l6ZV90IG91dGxlZnQpCisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKICNkZWZpbmUgREVDT0RFUl9SRVNFVChlbmNvZGluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBzdGF0aWMgUHlfc3NpemVfdCBlbmNvZGluZyMjX2RlY29kZV9yZXNldCggICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTXVsdGlieXRlQ29kZWNfU3RhdGUgKnN0YXRlLCBjb25zdCB2b2lkICpjb25maWcpCiAKLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gNAotI2RlZmluZSBVQ1M0SU5WQUxJRChjb2RlKSAgICAgICBcCi0gICAgaWYgKChjb2RlKSA+IDB4RkZGRikgICAgICAgIFwKLSAgICByZXR1cm4gMTsKLSNlbHNlCi0jZGVmaW5lIFVDUzRJTlZBTElEKGNvZGUpICAgICAgIFwKLSAgICBpZiAoMCkgOwotI2VuZGlmCi0KICNkZWZpbmUgTkVYVF9JTihpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKmluYnVmKSArPSAoaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoaW5sZWZ0KSAtPSAoaSk7CisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgqaW5idWYpICs9IChpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChpbmxlZnQpIC09IChpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgTkVYVF9JTkNIQVIoaSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCppbnBvcykgKz0gKGkpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQogI2RlZmluZSBORVhUX09VVChvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgqb3V0YnVmKSArPSAobyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChvdXRsZWZ0KSAtPSAobyk7CisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgqb3V0YnVmKSArPSAobyk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChvdXRsZWZ0KSAtPSAobyk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKICNkZWZpbmUgTkVYVChpLCBvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORVhUX0lOKGkpIE5FWFRfT1VUKG8pCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE5FWFRfSU5DSEFSKGkpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTkVYVF9PVVQobyk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgUkVRVUlSRV9JTkJVRihuKSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoaW5sZWZ0IDwgKG4pKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTExNiw0OCArMTE5LDU1IEBACiAgICAgaWYgKG91dGxlZnQgPCAobikpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBNQkVSUl9UT09TTUFMTDsKIAotI2RlZmluZSBJTjEgKCgqaW5idWYpWzBdKQotI2RlZmluZSBJTjIgKCgqaW5idWYpWzFdKQotI2RlZmluZSBJTjMgKCgqaW5idWYpWzJdKQotI2RlZmluZSBJTjQgKCgqaW5idWYpWzNdKQorI2RlZmluZSBJTkJZVEUxICgoKmluYnVmKVswXSkKKyNkZWZpbmUgSU5CWVRFMiAoKCppbmJ1ZilbMV0pCisjZGVmaW5lIElOQllURTMgKCgqaW5idWYpWzJdKQorI2RlZmluZSBJTkJZVEU0ICgoKmluYnVmKVszXSkKIAotI2RlZmluZSBPVVQxKGMpICgoKm91dGJ1ZilbMF0pID0gKGMpOwotI2RlZmluZSBPVVQyKGMpICgoKm91dGJ1ZilbMV0pID0gKGMpOwotI2RlZmluZSBPVVQzKGMpICgoKm91dGJ1ZilbMl0pID0gKGMpOwotI2RlZmluZSBPVVQ0KGMpICgoKm91dGJ1ZilbM10pID0gKGMpOworI2RlZmluZSBJTkNIQVIxIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsICppbnBvcykKKyNkZWZpbmUgSU5DSEFSMiBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAqaW5wb3MgKyAxKQogCi0jZGVmaW5lIFdSSVRFMShjMSkgICAgICAgICAgICAgIFwKKyNkZWZpbmUgT1VUQ0hBUihjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFyKHdyaXRlciwgKGMpKSA8IDApICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBNQkVSUl9FWENFUFRJT047ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBPVVRDSEFSMihjMSwgYzIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9VQ1M0IF9jMSA9IChjMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9VQ1M0IF9jMiA9IChjMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgMiwgUHlfTUFYKF9jMSwgYzIpKSA8IDApICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIE1CRVJSX0VYQ0VQVElPTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCB3cml0ZXItPnBvcywgX2MxKTsgICAgIFwKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCB3cml0ZXItPnBvcyArIDEsIF9jMik7IFwKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIE9VVEJZVEUxKGMpICgoKm91dGJ1ZilbMF0pID0gKGMpOworI2RlZmluZSBPVVRCWVRFMihjKSAoKCpvdXRidWYpWzFdKSA9IChjKTsKKyNkZWZpbmUgT1VUQllURTMoYykgKCgqb3V0YnVmKVsyXSkgPSAoYyk7CisjZGVmaW5lIE9VVEJZVEU0KGMpICgoKm91dGJ1ZilbM10pID0gKGMpOworCisjZGVmaW5lIFdSSVRFQllURTEoYzEpICAgICAgICAgICAgICBcCiAgICAgUkVRVUlSRV9PVVRCVUYoMSkgICAgICAgICAgIFwKICAgICAoKm91dGJ1ZilbMF0gPSAoYzEpOwotI2RlZmluZSBXUklURTIoYzEsIGMyKSAgICAgICAgICBcCisjZGVmaW5lIFdSSVRFQllURTIoYzEsIGMyKSAgICAgICAgICBcCiAgICAgUkVRVUlSRV9PVVRCVUYoMikgICAgICAgICAgIFwKICAgICAoKm91dGJ1ZilbMF0gPSAoYzEpOyAgICAgICAgXAogICAgICgqb3V0YnVmKVsxXSA9IChjMik7Ci0jZGVmaW5lIFdSSVRFMyhjMSwgYzIsIGMzKSAgICAgIFwKKyNkZWZpbmUgV1JJVEVCWVRFMyhjMSwgYzIsIGMzKSAgICAgIFwKICAgICBSRVFVSVJFX09VVEJVRigzKSAgICAgICAgICAgXAogICAgICgqb3V0YnVmKVswXSA9IChjMSk7ICAgICAgICBcCiAgICAgKCpvdXRidWYpWzFdID0gKGMyKTsgICAgICAgIFwKICAgICAoKm91dGJ1ZilbMl0gPSAoYzMpOwotI2RlZmluZSBXUklURTQoYzEsIGMyLCBjMywgYzQpICBcCisjZGVmaW5lIFdSSVRFQllURTQoYzEsIGMyLCBjMywgYzQpICBcCiAgICAgUkVRVUlSRV9PVVRCVUYoNCkgICAgICAgICAgIFwKICAgICAoKm91dGJ1ZilbMF0gPSAoYzEpOyAgICAgICAgXAogICAgICgqb3V0YnVmKVsxXSA9IChjMik7ICAgICAgICBcCiAgICAgKCpvdXRidWYpWzJdID0gKGMzKTsgICAgICAgIFwKICAgICAoKm91dGJ1ZilbM10gPSAoYzQpOwogCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSMgZGVmaW5lIFdSSVRFVUNTNChjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUkVRVUlSRV9PVVRCVUYoMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgqb3V0YnVmKVswXSA9IDB4ZDgwMCArICgoKGMpIC0gMHgxMDAwMCkgPj4gMTApOyAgICAgICAgICAgIFwKLSAgICAoKm91dGJ1ZilbMV0gPSAweGRjMDAgKyAoKChjKSAtIDB4MTAwMDApICYgMHgzZmYpOyAgICAgICAgICBcCi0gICAgTkVYVF9PVVQoMikKLSNlbHNlCi0jIGRlZmluZSBXUklURVVDUzQoYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFJFUVVJUkVfT1VUQlVGKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAqKm91dGJ1ZiA9IChQeV9VTklDT0RFKShjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkVYVF9PVVQoMSkKLSNlbmRpZgotCiAjZGVmaW5lIF9UUllNQVBfRU5DKG0sIGFzc2ksIHZhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICgobSktPm1hcCAhPSBOVUxMICYmICh2YWwpID49IChtKS0+Ym90dG9tICYmICAgICAgICAgICAgICAgIFwKICAgICAgICAgKHZhbCk8PSAobSktPnRvcCAmJiAoKGFzc2kpID0gKG0pLT5tYXBbKHZhbCkgLSAgICAgICAgICBcCkBAIC0xNjcsMzkgKzE3Nyw0MSBAQAogI2RlZmluZSBUUllNQVBfRU5DKGNoYXJzZXQsIGFzc2ksIHVuaSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiBUUllNQVBfRU5DX0NPTkQoY2hhcnNldCwgYXNzaSwgdW5pKQogCi0jZGVmaW5lIF9UUllNQVBfREVDKG0sIGFzc2ksIHZhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgobSktPm1hcCAhPSBOVUxMICYmICh2YWwpID49IChtKS0+Ym90dG9tICYmICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHZhbCk8PSAobSktPnRvcCAmJiAoKGFzc2kpID0gKG0pLT5tYXBbKHZhbCkgLSAgICAgICAgICBcCi0gICAgICAgIChtKS0+Ym90dG9tXSkgIT0gVU5JSU5WKQotI2RlZmluZSBUUllNQVBfREVDKGNoYXJzZXQsIGFzc2ksIGMxLCBjMikgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiBfVFJZTUFQX0RFQygmY2hhcnNldCMjX2RlY21hcFtjMV0sIGFzc2ksIGMyKQorUHlfTE9DQUxfSU5MSU5FKGludCkKK19UUllNQVBfREVDX1dSSVRFKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjKQoreworICAgIGlmIChjID09IFVOSUlOViB8fCBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcih3cml0ZXIsIGMpIDwgMCkKKyAgICAgICAgcmV0dXJuIFVOSUlOVjsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBjOworfQogCi0jZGVmaW5lIF9UUllNQVBfRU5DX01QTEFORShtLCBhc3NwbGFuZSwgYXNzaGksIGFzc2xvLCB2YWwpICAgICAgXAotICAgICgobSktPm1hcCAhPSBOVUxMICYmICh2YWwpID49IChtKS0+Ym90dG9tICYmICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHZhbCk8PSAobSktPnRvcCAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICgoYXNzcGxhbmUpID0gKG0pLT5tYXBbKCh2YWwpIC0gKG0pLT5ib3R0b20pKjNdKSAhPSAwICYmIFwKKyNkZWZpbmUgX1RSWU1BUF9ERUMobSwgd3JpdGVyLCB2YWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChtKS0+bWFwICE9IE5VTEwgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAodmFsKSA+PSAobSktPmJvdHRvbSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKHZhbCk8PSAobSktPnRvcCAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIF9UUllNQVBfREVDX1dSSVRFKHdyaXRlciwgKG0pLT5tYXBbKHZhbCkgLSAobSktPmJvdHRvbV0pICE9IFVOSUlOVikKKyNkZWZpbmUgX1RSWU1BUF9ERUNfQ0hBUihtLCBhc3NpLCB2YWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChtKS0+bWFwICE9IE5VTEwgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAodmFsKSA+PSAobSktPmJvdHRvbSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKHZhbCk8PSAobSktPnRvcCAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoYXNzaSkgPSAobSktPm1hcFsodmFsKSAtIChtKS0+Ym90dG9tXSkgIT0gVU5JSU5WKQorI2RlZmluZSBUUllNQVBfREVDKGNoYXJzZXQsIHdyaXRlciwgYzEsIGMyKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiBfVFJZTUFQX0RFQygmY2hhcnNldCMjX2RlY21hcFtjMV0sIHdyaXRlciwgYzIpCisjZGVmaW5lIFRSWU1BUF9ERUNfQ0hBUihjaGFyc2V0LCBhc3NpLCBjMSwgYzIpICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIF9UUllNQVBfREVDX0NIQVIoJmNoYXJzZXQjI19kZWNtYXBbYzFdLCBhc3NpLCBjMikKKworI2RlZmluZSBfVFJZTUFQX0VOQ19NUExBTkUobSwgYXNzcGxhbmUsIGFzc2hpLCBhc3NsbywgdmFsKSAgICAgICAgXAorICAgICgobSktPm1hcCAhPSBOVUxMICYmICh2YWwpID49IChtKS0+Ym90dG9tICYmICAgICAgICAgICAgICAgICAgXAorICAgICAgICAodmFsKTw9IChtKS0+dG9wICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKGFzc3BsYW5lKSA9IChtKS0+bWFwWygodmFsKSAtIChtKS0+Ym90dG9tKSozXSkgIT0gMCAmJiAgXAogICAgICAgICAoKChhc3NoaSkgPSAobSktPm1hcFsoKHZhbCkgLSAobSktPmJvdHRvbSkqMyArIDFdKSwgMSkgJiYgXAogICAgICAgICAoKChhc3NsbykgPSAobSktPm1hcFsoKHZhbCkgLSAobSktPmJvdHRvbSkqMyArIDJdKSwgMSkpCiAjZGVmaW5lIFRSWU1BUF9FTkNfTVBMQU5FKGNoYXJzZXQsIGFzc3BsYW5lLCBhc3NoaSwgYXNzbG8sIHVuaSkgXAogICAgIGlmIF9UUllNQVBfRU5DX01QTEFORSgmY2hhcnNldCMjX2VuY21hcFsodW5pKSA+PiA4XSwgXAogICAgICAgICAgICAgICAgICAgICAgICBhc3NwbGFuZSwgYXNzaGksIGFzc2xvLCAodW5pKSAmIDB4ZmYpCi0jZGVmaW5lIFRSWU1BUF9ERUNfTVBMQU5FKGNoYXJzZXQsIGFzc2ksIHBsYW5lLCBjMSwgYzIpICAgICAgICAgXAotICAgIGlmIF9UUllNQVBfREVDKCZjaGFyc2V0IyNfZGVjbWFwW3BsYW5lXVtjMV0sIGFzc2ksIGMyKQotCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSNkZWZpbmUgREVDT0RFX1NVUlJPR0FURShjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKGMgPj4gMTAgPT0gMHhkODAwID4+IDEwKSB7IC8qIGhpZ2ggc3Vycm9nYXRlICovICAgICAgICAgXAotICAgICAgICBSRVFVSVJFX0lOQlVGKDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKElOMiA+PiAxMCA9PSAweGRjMDAgPj4gMTApIHsgLyogbG93IHN1cnJvZ2F0ZSAqLyBcCi0gICAgICAgICAgICBjID0gMHgxMDAwMCArICgodWNzNF90KShjIC0gMHhkODAwKSA8PCAxMCkgKyBcCi0gICAgICAgICAgICAoKHVjczRfdCkoSU4yKSAtIDB4ZGMwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0jZGVmaW5lIEdFVF9JTlNJWkUoYykgICAoKGMpID4gMHhmZmZmID8gMiA6IDEpCi0jZWxzZQotI2RlZmluZSBERUNPREVfU1VSUk9HQVRFKGMpIHs7fQotI2RlZmluZSBHRVRfSU5TSVpFKGMpICAgMQotI2VuZGlmCisjZGVmaW5lIFRSWU1BUF9ERUNfTVBMQU5FKGNoYXJzZXQsIHdyaXRlciwgcGxhbmUsIGMxLCBjMikgICAgICAgICBcCisgICAgaWYgX1RSWU1BUF9ERUMoJmNoYXJzZXQjI19kZWNtYXBbcGxhbmVdW2MxXSwgd3JpdGVyLCBjMikKIAogI2RlZmluZSBCRUdJTl9NQVBQSU5HU19MSVNUIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGJjc19tYXAgX21hcHBpbmdfbGlzdFtdID0gewogI2RlZmluZSBNQVBQSU5HX0VOQ09OTFkoZW5jKSB7I2VuYywgKHZvaWQqKWVuYyMjX2VuY21hcCwgTlVMTH0sCkBAIC0zMjQsNyArMzM2LDcgQEAKICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcGFpcl9lbmNvZGVtYXAgKmhheXN0YWNrLCBpbnQgaGF5c3RhY2tzaXplKQogewogICAgIGludCBwb3MsIG1pbiwgbWF4OwotICAgIHVjczRfdCB2YWx1ZSA9IGJvZHkgPDwgMTYgfCBtb2RpZmllcjsKKyAgICBQeV9VQ1M0IHZhbHVlID0gYm9keSA8PCAxNiB8IG1vZGlmaWVyOwogCiAgICAgbWluID0gMDsKICAgICBtYXggPSBoYXlzdGFja3NpemU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9lbXVfamlzeDAyMTNfMjAwMC5oIGIvTW9kdWxlcy9jamtjb2RlY3MvZW11X2ppc3gwMjEzXzIwMDAuaAppbmRleCA0MjI3ZmIyLi44NzczMzdlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9lbXVfamlzeDAyMTNfMjAwMC5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2VtdV9qaXN4MDIxM18yMDAwLmgKQEAgLTM4LDYgKzM4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICgoYzEpID09IDB4N0UgJiYgKGMyKSA9PSAweDdFKSkpICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIEVNVUxBVEVfSklTWDAyMTNfMjAwMF9ERUNPREVfSU5WQUxJRDsKIAotI2RlZmluZSBFTVVMQVRFX0pJU1gwMjEzXzIwMDBfREVDT0RFX1BMQU5FMihhc3NpLCBjMSwgYzIpICAgICAgICAgICAgICAgXAorI2RlZmluZSBFTVVMQVRFX0pJU1gwMjEzXzIwMDBfREVDT0RFX1BMQU5FMih3cml0ZXIsIGMxLCBjMikgICAgICAgICAgICAgICBcCisgICAgaWYgKGNvbmZpZyA9PSAodm9pZCAqKTIwMDAgJiYgKGMxKSA9PSAweDdEICYmIChjMikgPT0gMHgzQikgICAgICAgICBcCisgICAgICAgIE9VVENIQVIoMHg5QjFEKTsKKyNkZWZpbmUgRU1VTEFURV9KSVNYMDIxM18yMDAwX0RFQ09ERV9QTEFORTJfQ0hBUihhc3NpLCBjMSwgYzIpICAgICAgICAgICAgICAgXAogICAgIGlmIChjb25maWcgPT0gKHZvaWQgKikyMDAwICYmIChjMSkgPT0gMHg3RCAmJiAoYzIpID09IDB4M0IpICAgICAgICAgXAogICAgICAgICAoYXNzaSkgPSAweDlCMUQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tYXBwaW5nc19jbi5oIGIvTW9kdWxlcy9jamtjb2RlY3MvbWFwcGluZ3NfY24uaAppbmRleCBhNmRjZWJmLi4xZjhjMjk5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tYXBwaW5nc19jbi5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL21hcHBpbmdzX2NuLmgKQEAgLTQwNDksNyArNDA0OSw3IEBACiAKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBfZ2IxODAzMF90b191bmlibXBfcmFuZ2VzIHsKLSAgICBQeV9VTklDT0RFICAgZmlyc3QsIGxhc3Q7CisgICAgUHlfVUNTNCAgIGZpcnN0LCBsYXN0OwogICAgIERCQ0hBUiAgICAgICBiYXNlOwogfSBnYjE4MDMwX3RvX3VuaWJtcF9yYW5nZXNbXSA9IHsKIHsxMjgsMTYzLDB9LHsxNjUsMTY2LDM2fSx7MTY5LDE3NSwzOH0sezE3OCwxODIsNDV9LHsxODQsMjE0LDUwfSx7MjE2LDIyMyw4MX0sewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIGIvTW9kdWxlcy9jamtjb2RlY3MvbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oCmluZGV4IGVkYThlOWUuLjcyOWU0YmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL21hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaAorKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tYXBwaW5nc19qaXN4MDIxM19wYWlyLmgKQEAgLTMsNyArMyw3IEBACiBzdGF0aWMgY29uc3Qgc3RydWN0IHdpZGVkYmNzX2luZGV4ICpqaXN4MDIxM19wYWlyX2RlY21hcDsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGFpcl9lbmNvZGVtYXAgKmppc3gwMjEzX3BhaXJfZW5jbWFwOwogI2Vsc2UKLXN0YXRpYyBjb25zdCB1Y3M0X3QgX19qaXN4MDIxM19wYWlyX2RlY21hcFs0OV0gPSB7CitzdGF0aWMgY29uc3QgUHlfVUNTNCBfX2ppc3gwMjEzX3BhaXJfZGVjbWFwWzQ5XSA9IHsKIDgxMDIzNDAxMCw4MTAzNjUwODIsODEwNDk2MTU0LDgxMDYyNzIyNiw4MTA3NTgyOTgsODE2NTI1NDY2LDgxNjY1NjUzOCwKIDgxNjc4NzYxMCw4MTY5MTg2ODIsODE3MDQ5NzU0LDgxNzU3NDA0Miw4MTgxNjM4NjYsODE4NDI2MDEwLDgzODI4MzQxOCwKIDE1MDc0MDQ4LFUsVSxVLDM5MDYwMjI0LDM5MDYwMjI1LDQyNzMwMjQwLDQyNzMwMjQxLDM5Mzg3OTA0LDM5Mzg3OTA1LDM5NDUzNDQwLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKaW5kZXggYzAzMmNkYi4uM2M1MTczZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC0xMCwxNSArMTAsMTYgQEAKICNpbmNsdWRlICJtdWx0aWJ5dGVjb2RlYy5oIgogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAgICAqaW5idWYsICppbmJ1Zl90b3AsICppbmJ1Zl9lbmQ7CisgICAgUHlPYmplY3QgICAgICAgICAgICAqaW5vYmo7CisgICAgUHlfc3NpemVfdCAgICAgICAgICBpbnBvcywgaW5sZW47CiAgICAgdW5zaWduZWQgY2hhciAgICAgICAqb3V0YnVmLCAqb3V0YnVmX2VuZDsKICAgICBQeU9iamVjdCAgICAgICAgICAgICpleGNvYmosICpvdXRvYmo7CiB9IE11bHRpYnl0ZUVuY29kZUJ1ZmZlcjsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluYnVmLCAqaW5idWZfdG9wLCAqaW5idWZfZW5kOwotICAgIFB5X1VOSUNPREUgICAgICAgICAgKm91dGJ1ZiwgKm91dGJ1Zl9lbmQ7Ci0gICAgUHlPYmplY3QgICAgICAgICAgICAqZXhjb2JqLCAqb3V0b2JqOworICAgIFB5T2JqZWN0ICAgICAgICAgICAgKmV4Y29iajsKKyAgICBfUHlVbmljb2RlV3JpdGVyICAgIHdyaXRlcjsKIH0gTXVsdGlieXRlRGVjb2RlQnVmZmVyOwogCiBQeURvY19TVFJWQVIoTXVsdGlieXRlQ29kZWNfRW5jb2RlX19kb2NfXywKQEAgLTQ1LDcgKzQ2LDcgQEAKIHN0YXRpYyBjaGFyICpzdHJlYW1rd2FyZ2xpc3RbXSA9IHsic3RyZWFtIiwgImVycm9ycyIsIE5VTEx9OwogCiBzdGF0aWMgUHlPYmplY3QgKm11bHRpYnl0ZWNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlYyAqLAotICAgICAgICAgICAgICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlICosIGNvbnN0IFB5X1VOSUNPREUgKiosIFB5X3NzaXplX3QsCisgICAgICAgICAgICAgICAgTXVsdGlieXRlQ29kZWNfU3RhdGUgKiwgUHlPYmplY3QgKiwgUHlfc3NpemVfdCAqLAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIGludCk7CiAKICNkZWZpbmUgTUJFTkNfUkVTRVQgICAgIE1CRU5DX01BWDw8MSAvKiByZXNldCBhZnRlciBhbiBlbmNvZGluZyBzZXNzaW9uICovCkBAIC0xOTcsMjkgKzE5OCw2IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKLXN0YXRpYyBpbnQKLWV4cGFuZF9kZWNvZGVidWZmZXIoTXVsdGlieXRlRGVjb2RlQnVmZmVyICpidWYsIFB5X3NzaXplX3QgZXNpemUpCi17Ci0gICAgUHlfc3NpemVfdCBvcmdwb3MsIG9yZ3NpemU7Ci0KLSAgICBvcmdwb3MgPSAoUHlfc3NpemVfdCkoYnVmLT5vdXRidWYgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShidWYtPm91dG9iaikpOwotICAgIG9yZ3NpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoYnVmLT5vdXRvYmopOwotICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZidWYtPm91dG9iaiwgb3Jnc2l6ZSArICgKLSAgICAgICAgZXNpemUgPCAob3Jnc2l6ZSA+PiAxKSA/IChvcmdzaXplID4+IDEpIHwgMSA6IGVzaXplKSkgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGJ1Zi0+b3V0YnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLT5vdXRvYmopICsgb3JncG9zOwotICAgIGJ1Zi0+b3V0YnVmX2VuZCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGJ1Zi0+b3V0b2JqKQotICAgICAgICAgICAgICAgICAgICAgICsgUHlVbmljb2RlX0dFVF9TSVpFKGJ1Zi0+b3V0b2JqKTsKLQotICAgIHJldHVybiAwOwotfQotI2RlZmluZSBSRVFVSVJFX0RFQ09ERUJVRkZFUihidWYsIHMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICgocykgPCAxIHx8IChidWYpLT5vdXRidWYgKyAocykgPiAoYnVmKS0+b3V0YnVmX2VuZCkgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZXhwYW5kX2RlY29kZWJ1ZmZlcihidWYsIHMpID09IC0xKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotCiAKIC8qKgogICogTXVsdGlieXRlQ29kZWMgb2JqZWN0CkBAIC0yNDcsNyArMjI1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOyAvKiByZXRyeSBpdCAqLwogICAgICAgICBjYXNlIE1CRVJSX1RPT0ZFVzoKICAgICAgICAgICAgIHJlYXNvbiA9ICJpbmNvbXBsZXRlIG11bHRpYnl0ZSBzZXF1ZW5jZSI7Ci0gICAgICAgICAgICBlc2l6ZSA9IChQeV9zc2l6ZV90KShidWYtPmluYnVmX2VuZCAtIGJ1Zi0+aW5idWYpOworICAgICAgICAgICAgZXNpemUgPSAoUHlfc3NpemVfdClidWYtPmlucG9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUJFUlJfSU5URVJOQUw6CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMjYxLDE0ICsyMzksMjQgQEAKICAgICB9CiAKICAgICBpZiAoZXJyb3JzID09IEVSUk9SX1JFUExBQ0UpIHsKLSAgICAgICAgY29uc3QgUHlfVU5JQ09ERSByZXBsY2hhciA9ICc/JywgKmluYnVmID0gJnJlcGxjaGFyOworICAgICAgICBQeU9iamVjdCAqcmVwbGNoYXI7CiAgICAgICAgIFB5X3NzaXplX3QgcjsKKyAgICAgICAgUHlfc3NpemVfdCBpbnBvczsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CiAKKyAgICAgICAgcmVwbGNoYXIgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJz8nKTsKKyAgICAgICAgaWYgKHJlcGxjaGFyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcGxjaGFyKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcGxjaGFyKTsKKworICAgICAgICBpbnBvcyA9IDA7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0bGVmdDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0bGVmdCA9IChQeV9zc2l6ZV90KShidWYtPm91dGJ1Zl9lbmQgLSBidWYtPm91dGJ1Zik7CiAKLSAgICAgICAgICAgIG91dGxlZnQgPSAoUHlfc3NpemVfdCkoYnVmLT5vdXRidWZfZW5kIC0gYnVmLT5vdXRidWYpOwotICAgICAgICAgICAgciA9IGNvZGVjLT5lbmNvZGUoc3RhdGUsIGNvZGVjLT5jb25maWcsICZpbmJ1ZiwgMSwKKyAgICAgICAgICAgIHIgPSBjb2RlYy0+ZW5jb2RlKHN0YXRlLCBjb2RlYy0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCwgZGF0YSwgJmlucG9zLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1Zi0+b3V0YnVmLCBvdXRsZWZ0LCAwKTsKICAgICAgICAgICAgIGlmIChyID09IE1CRVJSX1RPT1NNQUxMKSB7CiAgICAgICAgICAgICAgICAgUkVRVUlSRV9FTkNPREVCVUZGRVIoYnVmLCAtMSk7CkBAIC0yNzgsMjUgKzI2NiwyNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgUHlfREVDUkVGKHJlcGxjaGFyKTsKKwogICAgICAgICBpZiAociAhPSAwKSB7CiAgICAgICAgICAgICBSRVFVSVJFX0VOQ09ERUJVRkZFUihidWYsIDEpOwogICAgICAgICAgICAgKmJ1Zi0+b3V0YnVmKysgPSAnPyc7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGVycm9ycyA9PSBFUlJPUl9JR05PUkUgfHwgZXJyb3JzID09IEVSUk9SX1JFUExBQ0UpIHsKLSAgICAgICAgYnVmLT5pbmJ1ZiArPSBlc2l6ZTsKKyAgICAgICAgYnVmLT5pbnBvcyArPSBlc2l6ZTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgc3RhcnQgPSAoUHlfc3NpemVfdCkoYnVmLT5pbmJ1ZiAtIGJ1Zi0+aW5idWZfdG9wKTsKKyAgICBzdGFydCA9IChQeV9zc2l6ZV90KWJ1Zi0+aW5wb3M7CiAgICAgZW5kID0gc3RhcnQgKyBlc2l6ZTsKIAogICAgIC8qIHVzZSBjYWNoZWQgZXhjZXB0aW9uIG9iamVjdCBpZiBhdmFpbGFibGUgKi8KICAgICBpZiAoYnVmLT5leGNvYmogPT0gTlVMTCkgewotICAgICAgICBidWYtPmV4Y29iaiA9IFB5VW5pY29kZUVuY29kZUVycm9yX0NyZWF0ZShjb2RlYy0+ZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBidWYtPmluYnVmX3RvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi0+aW5idWZfZW5kIC0gYnVmLT5pbmJ1Zl90b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCByZWFzb24pOworICAgICAgICBidWYtPmV4Y29iaiA9ICBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNPbm5zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLT5lbmNvZGluZywgYnVmLT5pbm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIHJlYXNvbik7CiAgICAgICAgIGlmIChidWYtPmV4Y29iaiA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgfQpAQCAtMzI1LDEwICszMTUsMTAgQEAKICAgICB9CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRvYmopKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVyYXcgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0b2JqKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbnBvczsKIAotICAgICAgICByZXRzdHIgPSBtdWx0aWJ5dGVjb2RlY19lbmNvZGUoY29kZWMsIHN0YXRlLCAmdXJhdywKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0b2JqKSwgRVJST1JfU1RSSUNULAorICAgICAgICByZXRzdHIgPSBtdWx0aWJ5dGVjb2RlY19lbmNvZGUoY29kZWMsIHN0YXRlLCB0b2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgJmlucG9zLCBFUlJPUl9TVFJJQ1QsCiAgICAgICAgICAgICAgICAgICAgICAgICBNQkVOQ19GTFVTSCk7CiAgICAgICAgIGlmIChyZXRzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OwpAQCAtMzQ3LDE1ICszMzcsMTUgQEAKIAogICAgIG5ld3BvcyA9IFB5TG9uZ19Bc1NzaXplX3QoUHlUdXBsZV9HRVRfSVRFTShyZXRvYmosIDEpKTsKICAgICBpZiAobmV3cG9zIDwgMCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgbmV3cG9zICs9IChQeV9zc2l6ZV90KShidWYtPmluYnVmX2VuZCAtIGJ1Zi0+aW5idWZfdG9wKTsKLSAgICBpZiAobmV3cG9zIDwgMCB8fCBidWYtPmluYnVmX3RvcCArIG5ld3BvcyA+IGJ1Zi0+aW5idWZfZW5kKSB7CisgICAgICAgIG5ld3BvcyArPSAoUHlfc3NpemVfdClidWYtPmlubGVuOworICAgIGlmIChuZXdwb3MgPCAwIHx8IG5ld3BvcyA+IGJ1Zi0+aW5sZW4pIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb24gJXpkIGZyb20gZXJyb3IgaGFuZGxlciBvdXQgb2YgYm91bmRzIiwKICAgICAgICAgICAgICAgICAgICAgIG5ld3Bvcyk7CiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIH0KLSAgICBidWYtPmluYnVmID0gYnVmLT5pbmJ1Zl90b3AgKyBuZXdwb3M7CisgICAgYnVmLT5pbnBvcyA9IG5ld3BvczsKIAogICAgIFB5X0RFQ1JFRihyZXRvYmopOwogICAgIFB5X0RFQ1JFRihyZXRzdHIpOwpAQCAtMzc0LDcgKzM2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXJyb3JzLCBQeV9zc2l6ZV90IGUpCiB7CiAgICAgUHlPYmplY3QgKnJldG9iaiA9IE5VTEwsICpyZXR1bmkgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmV0dW5pc2l6ZSwgbmV3cG9zOworICAgIFB5X3NzaXplX3QgbmV3cG9zOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbjsKICAgICBQeV9zc2l6ZV90IGVzaXplLCBzdGFydCwgZW5kOwogCkBAIC0zODUsNyArMzc1LDYgQEAKICAgICBlbHNlIHsKICAgICAgICAgc3dpdGNoIChlKSB7CiAgICAgICAgIGNhc2UgTUJFUlJfVE9PU01BTEw6Ci0gICAgICAgICAgICBSRVFVSVJFX0RFQ09ERUJVRkZFUihidWYsIC0xKTsKICAgICAgICAgICAgIHJldHVybiAwOyAvKiByZXRyeSBpdCAqLwogICAgICAgICBjYXNlIE1CRVJSX1RPT0ZFVzoKICAgICAgICAgICAgIHJlYXNvbiA9ICJpbmNvbXBsZXRlIG11bHRpYnl0ZSBzZXF1ZW5jZSI7CkBAIC0zOTUsNiArMzg0LDggQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGNvZGVjIGVycm9yIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGNhc2UgTUJFUlJfRVhDRVBUSU9OOgorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBydW50aW1lIGVycm9yIik7CkBAIC00MDMsOCArMzk0LDkgQEAKICAgICB9CiAKICAgICBpZiAoZXJyb3JzID09IEVSUk9SX1JFUExBQ0UpIHsKLSAgICAgICAgUkVRVUlSRV9ERUNPREVCVUZGRVIoYnVmLCAxKTsKLSAgICAgICAgKmJ1Zi0+b3V0YnVmKysgPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUjsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFyKCZidWYtPndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICB9CiAgICAgaWYgKGVycm9ycyA9PSBFUlJPUl9JR05PUkUgfHwgZXJyb3JzID09IEVSUk9SX1JFUExBQ0UpIHsKICAgICAgICAgYnVmLT5pbmJ1ZiArPSBlc2l6ZTsKQEAgLTQ0NywxNSArNDM5LDggQEAKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9Bc1VuaWNvZGUocmV0dW5pKSA9PSBOVUxMKQorICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKCZidWYtPndyaXRlciwgcmV0dW5pKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwotICAgIHJldHVuaXNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmV0dW5pKTsKLSAgICBpZiAocmV0dW5pc2l6ZSA+IDApIHsKLSAgICAgICAgUkVRVUlSRV9ERUNPREVCVUZGRVIoYnVmLCByZXR1bmlzaXplKTsKLSAgICAgICAgbWVtY3B5KChjaGFyICopYnVmLT5vdXRidWYsIFB5VW5pY29kZV9BU19VTklDT0RFKHJldHVuaSksCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1bmlzaXplICogUHlfVU5JQ09ERV9TSVpFKTsKLSAgICAgICAgYnVmLT5vdXRidWYgKz0gcmV0dW5pc2l6ZTsKLSAgICB9CiAKICAgICBuZXdwb3MgPSBQeUxvbmdfQXNTc2l6ZV90KFB5VHVwbGVfR0VUX0lURU0ocmV0b2JqLCAxKSk7CiAgICAgaWYgKG5ld3BvcyA8IDAgJiYgIVB5RXJyX09jY3VycmVkKCkpCkBAIC00NzksMTkgKzQ2NCwyOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG11bHRpYnl0ZWNvZGVjX2VuY29kZShNdWx0aWJ5dGVDb2RlYyAqY29kZWMsCiAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlieXRlQ29kZWNfU3RhdGUgKnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKipkYXRhLCBQeV9zc2l6ZV90IGRhdGFsZW4sCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQsIFB5X3NzaXplX3QgKmlucG9zX3QsCiAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVycm9ycywgaW50IGZsYWdzKQogewogICAgIE11bHRpYnl0ZUVuY29kZUJ1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCBmaW5hbHNpemUsIHIgPSAwOworICAgIFB5X3NzaXplX3QgZGF0YWxlbjsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0ZXh0KSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZXh0KTsKIAogICAgIGlmIChkYXRhbGVuID09IDAgJiYgIShmbGFncyAmIE1CRU5DX1JFU0VUKSkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKICAgICBidWYuZXhjb2JqID0gTlVMTDsKICAgICBidWYub3V0b2JqID0gTlVMTDsKLSAgICBidWYuaW5idWYgPSBidWYuaW5idWZfdG9wID0gKmRhdGE7Ci0gICAgYnVmLmluYnVmX2VuZCA9IGJ1Zi5pbmJ1Zl90b3AgKyBkYXRhbGVuOworICAgIGJ1Zi5pbm9iaiA9IHRleHQ7ICAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgYnVmLmlucG9zID0gMDsKKyAgICBidWYuaW5sZW4gPSBkYXRhbGVuOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChidWYuaW5vYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShidWYuaW5vYmopOwogCiAgICAgaWYgKGRhdGFsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAxNikgLyAyKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01MDQsMTQgKzQ5OSwxNCBAQAogICAgIGJ1Zi5vdXRidWYgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ1Zi5vdXRvYmopOwogICAgIGJ1Zi5vdXRidWZfZW5kID0gYnVmLm91dGJ1ZiArIFB5Qnl0ZXNfR0VUX1NJWkUoYnVmLm91dG9iaik7CiAKLSAgICB3aGlsZSAoYnVmLmluYnVmIDwgYnVmLmluYnVmX2VuZCkgewotICAgICAgICBQeV9zc2l6ZV90IGlubGVmdCwgb3V0bGVmdDsKLQorICAgIHdoaWxlIChidWYuaW5wb3MgPCBidWYuaW5sZW4pIHsKICAgICAgICAgLyogd2UgZG9uJ3QgcmV1c2UgaW5sZWZ0IGFuZCBvdXRsZWZ0IGhlcmUuCiAgICAgICAgICAqIGVycm9yIGNhbGxiYWNrcyBjYW4gcmVsb2NhdGUgdGhlIGN1cnNvciBhbnl3aGVyZSBvbiBidWZmZXIqLwotICAgICAgICBpbmxlZnQgPSAoUHlfc3NpemVfdCkoYnVmLmluYnVmX2VuZCAtIGJ1Zi5pbmJ1Zik7Ci0gICAgICAgIG91dGxlZnQgPSAoUHlfc3NpemVfdCkoYnVmLm91dGJ1Zl9lbmQgLSBidWYub3V0YnVmKTsKLSAgICAgICAgciA9IGNvZGVjLT5lbmNvZGUoc3RhdGUsIGNvZGVjLT5jb25maWcsICZidWYuaW5idWYsIGlubGVmdCwKKyAgICAgICAgUHlfc3NpemVfdCBvdXRsZWZ0ID0gKFB5X3NzaXplX3QpKGJ1Zi5vdXRidWZfZW5kIC0gYnVmLm91dGJ1Zik7CisKKyAgICAgICAgciA9IGNvZGVjLT5lbmNvZGUoc3RhdGUsIGNvZGVjLT5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQsIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZidWYuaW5wb3MsIGJ1Zi5pbmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1Zi5vdXRidWYsIG91dGxlZnQsIGZsYWdzKTsKICAgICAgICAgaWYgKChyID09IDApIHx8IChyID09IE1CRVJSX1RPT0ZFVyAmJiAhKGZsYWdzICYgTUJFTkNfRkxVU0gpKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTQyLDcgKzUzNyw4IEBACiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ1Zi5vdXRvYmosIGZpbmFsc2l6ZSkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKIAotICAgICpkYXRhID0gYnVmLmluYnVmOworICAgIGlmIChpbnBvc190KQorICAgICAgICAqaW5wb3NfdCA9IGJ1Zi5pbnBvczsKICAgICBQeV9YREVDUkVGKGJ1Zi5leGNvYmopOwogICAgIHJldHVybiBidWYub3V0b2JqOwogCkBAIC01NTcsNyArNTUzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBNdWx0aWJ5dGVDb2RlY19TdGF0ZSBzdGF0ZTsKLSAgICBQeV9VTklDT0RFICpkYXRhOwogICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqciwgKmFyZywgKnVjdnQ7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW47CkBAIC01ODAsMTEgKzU3NSwxMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZGF0YSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKGFyZywgJmRhdGFsZW4pOwotICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPCAwKSB7CiAgICAgICAgIFB5X1hERUNSRUYodWN2dCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXJnKTsKIAogICAgIGVycm9yY2IgPSBpbnRlcm5hbF9lcnJvcl9jYWxsYmFjayhlcnJvcnMpOwogICAgIGlmIChlcnJvcmNiID09IE5VTEwpIHsKQEAgLTU5Niw3ICs1OTEsNyBAQAogICAgICAgICBzZWxmLT5jb2RlYy0+ZW5jaW5pdCgmc3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIHIgPSBtdWx0aWJ5dGVjb2RlY19lbmNvZGUoc2VsZi0+Y29kZWMsICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFB5X1VOSUNPREUgKiopJmRhdGEsIGRhdGFsZW4sIGVycm9yY2IsCisgICAgICAgICAgICAgICAgICAgIGFyZywgTlVMTCwgZXJyb3JjYiwKICAgICAgICAgICAgICAgICAgICAgTUJFTkNfRkxVU0ggfCBNQkVOQ19SRVNFVCk7CiAgICAgaWYgKHIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CkBAIC02MTcsMTAgKzYxMiwxMCBAQAogewogICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlIHN0YXRlOwogICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciBidWY7Ci0gICAgUHlPYmplY3QgKmVycm9yY2I7CisgICAgUHlPYmplY3QgKmVycm9yY2IsICpyZXM7CiAgICAgUHlfYnVmZmVyIHBkYXRhOwogICAgIGNvbnN0IGNoYXIgKmRhdGEsICplcnJvcnMgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgZGF0YWxlbiwgZmluYWxzaXplOworICAgIFB5X3NzaXplX3QgZGF0YWxlbjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfHo6ZGVjb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY2t3YXJnbGlzdCwgJnBkYXRhLCAmZXJyb3JzKSkKQEAgLTY0MCwyOSArNjM1LDIzIEBACiAgICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9OZXcoMCwgMCksIDApOwogICAgIH0KIAorICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmYnVmLndyaXRlcik7CisgICAgYnVmLndyaXRlci5taW5fbGVuZ3RoID0gZGF0YWxlbjsKICAgICBidWYuZXhjb2JqID0gTlVMTDsKICAgICBidWYuaW5idWYgPSBidWYuaW5idWZfdG9wID0gKHVuc2lnbmVkIGNoYXIgKilkYXRhOwogICAgIGJ1Zi5pbmJ1Zl9lbmQgPSBidWYuaW5idWZfdG9wICsgZGF0YWxlbjsKLSAgICBidWYub3V0b2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGRhdGFsZW4pOwotICAgIGlmIChidWYub3V0b2JqID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JleGl0OwotICAgIGJ1Zi5vdXRidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShidWYub3V0b2JqKTsKLSAgICBpZiAoYnVmLm91dGJ1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yZXhpdDsKLSAgICBidWYub3V0YnVmX2VuZCA9IGJ1Zi5vdXRidWYgKyBQeVVuaWNvZGVfR0VUX1NJWkUoYnVmLm91dG9iaik7CiAKICAgICBpZiAoc2VsZi0+Y29kZWMtPmRlY2luaXQgIT0gTlVMTCAmJgogICAgICAgICBzZWxmLT5jb2RlYy0+ZGVjaW5pdCgmc3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCiAgICAgd2hpbGUgKGJ1Zi5pbmJ1ZiA8IGJ1Zi5pbmJ1Zl9lbmQpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpbmxlZnQsIG91dGxlZnQsIHI7CisgICAgICAgIFB5X3NzaXplX3QgaW5sZWZ0LCByOwogCiAgICAgICAgIGlubGVmdCA9IChQeV9zc2l6ZV90KShidWYuaW5idWZfZW5kIC0gYnVmLmluYnVmKTsKLSAgICAgICAgb3V0bGVmdCA9IChQeV9zc2l6ZV90KShidWYub3V0YnVmX2VuZCAtIGJ1Zi5vdXRidWYpOwogCiAgICAgICAgIHIgPSBzZWxmLT5jb2RlYy0+ZGVjb2RlKCZzdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICZidWYuaW5idWYsIGlubGVmdCwgJmJ1Zi5vdXRidWYsIG91dGxlZnQpOworICAgICAgICAgICAgICAgICAgICAgICAgJmJ1Zi5pbmJ1ZiwgaW5sZWZ0LCAmYnVmLndyaXRlcik7CiAgICAgICAgIGlmIChyID09IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZWxzZSBpZiAobXVsdGlieXRlY29kZWNfZGVjZXJyb3Ioc2VsZi0+Y29kZWMsICZzdGF0ZSwKQEAgLTY3MCwyMyArNjU5LDIwIEBACiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICB9CiAKLSAgICBmaW5hbHNpemUgPSAoUHlfc3NpemVfdCkoYnVmLm91dGJ1ZiAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGJ1Zi5vdXRvYmopKTsKLQotICAgIGlmIChmaW5hbHNpemUgIT0gUHlVbmljb2RlX0dFVF9TSVpFKGJ1Zi5vdXRvYmopKQotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmYnVmLm91dG9iaiwgZmluYWxzaXplKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OworICAgIHJlcyA9IF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZidWYud3JpdGVyKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CiAgICAgRVJST1JfREVDUkVGKGVycm9yY2IpOwotICAgIHJldHVybiBtYWtlX3R1cGxlKGJ1Zi5vdXRvYmosIGRhdGFsZW4pOworICAgIHJldHVybiBtYWtlX3R1cGxlKHJlcywgZGF0YWxlbik7CiAKIGVycm9yZXhpdDoKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgRVJST1JfREVDUkVGKGVycm9yY2IpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7Ci0gICAgUHlfWERFQ1JFRihidWYub3V0b2JqKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJmJ1Zi53cml0ZXIpOwogCiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC03NTIsOSArNzM4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmlzdHIsIGludCBmaW5hbCkKIHsKICAgICBQeU9iamVjdCAqdWN2dCwgKnIgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKmluYnVmLCAqaW5idWZfZW5kLCAqaW5idWZfdG1wID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGRhdGFsZW4sIG9yaWdwZW5kaW5nOwotICAgIHdjaGFyX3QgKmRhdGE7CisgICAgUHlPYmplY3QgKmluYnVmID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGlucG9zLCBkYXRhbGVuOworICAgIFB5T2JqZWN0ICpvcmlncGVuZGluZyA9IE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHVuaXN0cikpCiAgICAgICAgIHVjdnQgPSBOVUxMOwpAQCAtNzcwLDY5ICs3NTYsNjYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGRhdGEgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmlzdHIsICZkYXRhbGVuKTsKLSAgICBpZiAoZGF0YSA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yZXhpdDsKLSAgICBvcmlncGVuZGluZyA9IGN0eC0+cGVuZGluZ3NpemU7CisgICAgaWYgKGN0eC0+cGVuZGluZykgeworICAgICAgICBQeU9iamVjdCAqaW5idWZfdG1wOwogCi0gICAgaWYgKG9yaWdwZW5kaW5nID4gMCkgewotICAgICAgICBpZiAoZGF0YWxlbiA+IFBZX1NTSVpFX1RfTUFYIC0gY3R4LT5wZW5kaW5nc2l6ZSkgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIC8qIGluYnVmX3RtcCA9PSBOVUxMICovCi0gICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKLSAgICAgICAgfQotICAgICAgICBpbmJ1Zl90bXAgPSBQeU1lbV9OZXcoUHlfVU5JQ09ERSwgZGF0YWxlbiArIGN0eC0+cGVuZGluZ3NpemUpOworICAgICAgICBQeV9JTkNSRUYoY3R4LT5wZW5kaW5nKTsKKyAgICAgICAgb3JpZ3BlbmRpbmcgPSBjdHgtPnBlbmRpbmc7CisKKyAgICAgICAgUHlfSU5DUkVGKGN0eC0+cGVuZGluZyk7CisgICAgICAgIGluYnVmX3RtcCA9IGN0eC0+cGVuZGluZzsKKyAgICAgICAgUHlVbmljb2RlX0FwcGVuZCgmaW5idWZfdG1wLCB1bmlzdHIpOwogICAgICAgICBpZiAoaW5idWZfdG1wID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKLSAgICAgICAgbWVtY3B5KGluYnVmX3RtcCwgY3R4LT5wZW5kaW5nLAotICAgICAgICAgICAgUHlfVU5JQ09ERV9TSVpFICogY3R4LT5wZW5kaW5nc2l6ZSk7Ci0gICAgICAgIG1lbWNweShpbmJ1Zl90bXAgKyBjdHgtPnBlbmRpbmdzaXplLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pc3RyKSwKLSAgICAgICAgICAgIFB5X1VOSUNPREVfU0laRSAqIGRhdGFsZW4pOwotICAgICAgICBkYXRhbGVuICs9IGN0eC0+cGVuZGluZ3NpemU7Ci0gICAgICAgIGN0eC0+cGVuZGluZ3NpemUgPSAwOworICAgICAgICBQeV9DTEVBUihjdHgtPnBlbmRpbmcpOwogICAgICAgICBpbmJ1ZiA9IGluYnVmX3RtcDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBpbmJ1ZiA9IChQeV9VTklDT0RFICopUHlVbmljb2RlX0FTX1VOSUNPREUodW5pc3RyKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3JpZ3BlbmRpbmcgPSBOVUxMOwogCi0gICAgaW5idWZfZW5kID0gaW5idWYgKyBkYXRhbGVuOworICAgICAgICBQeV9JTkNSRUYodW5pc3RyKTsKKyAgICAgICAgaW5idWYgPSB1bmlzdHI7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5idWYpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CisgICAgaW5wb3MgPSAwOworICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbmJ1Zik7CiAKICAgICByID0gbXVsdGlieXRlY29kZWNfZW5jb2RlKGN0eC0+Y29kZWMsICZjdHgtPnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAoY29uc3QgUHlfVU5JQ09ERSAqKikmaW5idWYsIGRhdGFsZW4sCi0gICAgICAgICAgICAgICAgICAgIGN0eC0+ZXJyb3JzLCBmaW5hbCA/IE1CRU5DX0ZMVVNIIHwgTUJFTkNfUkVTRVQgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYnVmLCAmaW5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmVycm9ycywgZmluYWwgPyBNQkVOQ19GTFVTSCB8IE1CRU5DX1JFU0VUIDogMCk7CiAgICAgaWYgKHIgPT0gTlVMTCkgewogICAgICAgICAvKiByZWNvdmVyIHRoZSBvcmlnaW5hbCBwZW5kaW5nIGJ1ZmZlciAqLwotICAgICAgICBpZiAob3JpZ3BlbmRpbmcgPiAwKQotICAgICAgICAgICAgbWVtY3B5KGN0eC0+cGVuZGluZywgaW5idWZfdG1wLAotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfU0laRSAqIG9yaWdwZW5kaW5nKTsKLSAgICAgICAgY3R4LT5wZW5kaW5nc2l6ZSA9IG9yaWdwZW5kaW5nOworICAgICAgICBQeV9DTEVBUihjdHgtPnBlbmRpbmcpOworICAgICAgICBjdHgtPnBlbmRpbmcgPSBvcmlncGVuZGluZzsKKyAgICAgICAgb3JpZ3BlbmRpbmcgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICB9CisgICAgUHlfWERFQ1JFRihvcmlncGVuZGluZyk7CiAKLSAgICBpZiAoaW5idWYgPCBpbmJ1Zl9lbmQpIHsKLSAgICAgICAgY3R4LT5wZW5kaW5nc2l6ZSA9IChQeV9zc2l6ZV90KShpbmJ1Zl9lbmQgLSBpbmJ1Zik7Ci0gICAgICAgIGlmIChjdHgtPnBlbmRpbmdzaXplID4gTUFYRU5DUEVORElORykgeworICAgIGlmIChpbnBvcyA8IGRhdGFsZW4pIHsKKyAgICAgICAgaWYgKGRhdGFsZW4gLSBpbnBvcyA+IE1BWEVOQ1BFTkRJTkcpIHsKICAgICAgICAgICAgIC8qIG5vcm1hbCBjb2RlY3MgY2FuJ3QgcmVhY2ggaGVyZSAqLwotICAgICAgICAgICAgY3R4LT5wZW5kaW5nc2l6ZSA9IDA7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVW5pY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZW5kaW5nIGJ1ZmZlciBvdmVyZmxvdyIpOwogICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGN0eC0+cGVuZGluZywgaW5idWYsCi0gICAgICAgICAgICBjdHgtPnBlbmRpbmdzaXplICogUHlfVU5JQ09ERV9TSVpFKTsKKyAgICAgICAgY3R4LT5wZW5kaW5nID0gUHlVbmljb2RlX1N1YnN0cmluZyhpbmJ1ZiwgaW5wb3MsIGRhdGFsZW4pOworICAgICAgICBpZiAoY3R4LT5wZW5kaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBjb2RlY3MgY2FuJ3QgcmVhY2ggaGVyZSAqLworICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaW5idWZfdG1wICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0RlbChpbmJ1Zl90bXApOworICAgIFB5X0RFQ1JFRihpbmJ1Zik7CiAgICAgUHlfWERFQ1JFRih1Y3Z0KTsKICAgICByZXR1cm4gcjsKIAogZXJyb3JleGl0OgotICAgIGlmIChpbmJ1Zl90bXAgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRGVsKGluYnVmX3RtcCk7CiAgICAgUHlfWERFQ1JFRihyKTsKICAgICBQeV9YREVDUkVGKHVjdnQpOworICAgIFB5X1hERUNSRUYob3JpZ3BlbmRpbmcpOworICAgIFB5X1hERUNSRUYoaW5idWYpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC04NTksMTcgKzg0Miw3IEBACiB7CiAgICAgYnVmLT5pbmJ1ZiA9IGJ1Zi0+aW5idWZfdG9wID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilkYXRhOwogICAgIGJ1Zi0+aW5idWZfZW5kID0gYnVmLT5pbmJ1Zl90b3AgKyBzaXplOwotICAgIGlmIChidWYtPm91dG9iaiA9PSBOVUxMKSB7IC8qIG9ubHkgaWYgb3V0b2JqIGlzIG5vdCBhbGxvY2F0ZWQgeWV0ICovCi0gICAgICAgIGJ1Zi0+b3V0b2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwotICAgICAgICBpZiAoYnVmLT5vdXRvYmogPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgYnVmLT5vdXRidWYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGJ1Zi0+b3V0b2JqKTsKLSAgICAgICAgaWYgKGJ1Zi0+b3V0YnVmID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGJ1Zi0+b3V0YnVmX2VuZCA9IGJ1Zi0+b3V0YnVmICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGJ1Zi0+b3V0b2JqKTsKLSAgICB9Ci0KKyAgICBidWYtPndyaXRlci5taW5fbGVuZ3RoICs9IHNpemU7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg3OCwxNCArODUxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciAqYnVmKQogewogICAgIHdoaWxlIChidWYtPmluYnVmIDwgYnVmLT5pbmJ1Zl9lbmQpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpbmxlZnQsIG91dGxlZnQ7CisgICAgICAgIFB5X3NzaXplX3QgaW5sZWZ0OwogICAgICAgICBQeV9zc2l6ZV90IHI7CiAKICAgICAgICAgaW5sZWZ0ID0gKFB5X3NzaXplX3QpKGJ1Zi0+aW5idWZfZW5kIC0gYnVmLT5pbmJ1Zik7Ci0gICAgICAgIG91dGxlZnQgPSAoUHlfc3NpemVfdCkoYnVmLT5vdXRidWZfZW5kIC0gYnVmLT5vdXRidWYpOwogCiAgICAgICAgIHIgPSBjdHgtPmNvZGVjLT5kZWNvZGUoJmN0eC0+c3RhdGUsIGN0eC0+Y29kZWMtPmNvbmZpZywKLSAgICAgICAgICAgICZidWYtPmluYnVmLCBpbmxlZnQsICZidWYtPm91dGJ1Ziwgb3V0bGVmdCk7CisgICAgICAgICAgICAmYnVmLT5pbmJ1ZiwgaW5sZWZ0LCAmYnVmLT53cml0ZXIpOwogICAgICAgICBpZiAociA9PSAwIHx8IHIgPT0gTUJFUlJfVE9PRkVXKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGVsc2UgaWYgKG11bHRpYnl0ZWNvZGVjX2RlY2Vycm9yKGN0eC0+Y29kZWMsICZjdHgtPnN0YXRlLApAQCAtOTI3LDcgKzg5OSw3IEBACiAgICAgICAgIGlmIChyICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgc2VsZi0+cGVuZGluZ3NpemUgPSAwOworICAgIFB5X0NMRUFSKHNlbGYtPnBlbmRpbmcpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC05NjMsNyArOTM1LDcgQEAKICAgICB9CiAKICAgICBzZWxmLT5jb2RlYyA9ICgoTXVsdGlieXRlQ29kZWNPYmplY3QgKiljb2RlYyktPmNvZGVjOwotICAgIHNlbGYtPnBlbmRpbmdzaXplID0gMDsKKyAgICBzZWxmLT5wZW5kaW5nID0gTlVMTDsKICAgICBzZWxmLT5lcnJvcnMgPSBpbnRlcm5hbF9lcnJvcl9jYWxsYmFjayhlcnJvcnMpOwogICAgIGlmIChzZWxmLT5lcnJvcnMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CkBAIC0xMDU4LDggKzEwMzAsOSBAQAogICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciBidWY7CiAgICAgY2hhciAqZGF0YSwgKndkYXRhID0gTlVMTDsKICAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgUHlfc3NpemVfdCB3c2l6ZSwgZmluYWxzaXplID0gMCwgc2l6ZSwgb3JpZ3BlbmRpbmc7CisgICAgUHlfc3NpemVfdCB3c2l6ZSwgc2l6ZSwgb3JpZ3BlbmRpbmc7CiAgICAgaW50IGZpbmFsID0gMDsKKyAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aTpkZWNvZGUiLAogICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbGt3YXJnbGlzdCwgJnBkYXRhLCAmZmluYWwpKQpAQCAtMTA2Nyw3ICsxMDQwLDggQEAKICAgICBkYXRhID0gcGRhdGEuYnVmOwogICAgIHNpemUgPSBwZGF0YS5sZW47CiAKLSAgICBidWYub3V0b2JqID0gYnVmLmV4Y29iaiA9IE5VTEw7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZidWYud3JpdGVyKTsKKyAgICBidWYuZXhjb2JqID0gTlVMTDsKICAgICBvcmlncGVuZGluZyA9IHNlbGYtPnBlbmRpbmdzaXplOwogCiAgICAgaWYgKHNlbGYtPnBlbmRpbmdzaXplID09IDApIHsKQEAgLTEwODEsOCArMTA1NSwxMCBAQAogICAgICAgICB9CiAgICAgICAgIHdzaXplID0gc2l6ZSArIHNlbGYtPnBlbmRpbmdzaXplOwogICAgICAgICB3ZGF0YSA9IFB5TWVtX01hbGxvYyh3c2l6ZSk7Ci0gICAgICAgIGlmICh3ZGF0YSA9PSBOVUxMKQorICAgICAgICBpZiAod2RhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OworICAgICAgICB9CiAgICAgICAgIG1lbWNweSh3ZGF0YSwgc2VsZi0+cGVuZGluZywgc2VsZi0+cGVuZGluZ3NpemUpOwogICAgICAgICBtZW1jcHkod2RhdGEgKyBzZWxmLT5wZW5kaW5nc2l6ZSwgZGF0YSwgc2l6ZSk7CiAgICAgICAgIHNlbGYtPnBlbmRpbmdzaXplID0gMDsKQEAgLTExMDksMjMgKzEwODUsMjIgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIH0KIAotICAgIGZpbmFsc2l6ZSA9IChQeV9zc2l6ZV90KShidWYub3V0YnVmIC0gUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLm91dG9iaikpOwotICAgIGlmIChmaW5hbHNpemUgIT0gUHlVbmljb2RlX0dFVF9TSVpFKGJ1Zi5vdXRvYmopKQotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmYnVmLm91dG9iaiwgZmluYWxzaXplKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OworICAgIHJlcyA9IF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZidWYud3JpdGVyKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIGlmICh3ZGF0YSAhPSBkYXRhKQogICAgICAgICBQeU1lbV9EZWwod2RhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7Ci0gICAgcmV0dXJuIGJ1Zi5vdXRvYmo7CisgICAgcmV0dXJuIHJlczsKIAogZXJyb3JleGl0OgogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICBpZiAod2RhdGEgIT0gTlVMTCAmJiB3ZGF0YSAhPSBkYXRhKQogICAgICAgICBQeU1lbV9EZWwod2RhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7Ci0gICAgUHlfWERFQ1JFRihidWYub3V0b2JqKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJmJ1Zi53cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xMjY1LDEzICsxMjQwLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRob2QsIFB5X3NzaXplX3Qgc2l6ZWhpbnQpCiB7CiAgICAgTXVsdGlieXRlRGVjb2RlQnVmZmVyIGJ1ZjsKLSAgICBQeU9iamVjdCAqY3JlczsKLSAgICBQeV9zc2l6ZV90IHJzaXplLCBmaW5hbHNpemUgPSAwOworICAgIFB5T2JqZWN0ICpjcmVzLCAqcmVzOworICAgIFB5X3NzaXplX3QgcnNpemU7CiAKICAgICBpZiAoc2l6ZWhpbnQgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAKLSAgICBidWYub3V0b2JqID0gYnVmLmV4Y29iaiA9IE5VTEw7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZidWYud3JpdGVyKTsKKyAgICBidWYuZXhjb2JqID0gTlVMTDsKICAgICBjcmVzID0gTlVMTDsKIAogICAgIGZvciAoOzspIHsKQEAgLTEzMDMsMTkgKzEyNzksMTkgQEAKICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGNyZXMpID4gUFlfU1NJWkVfVF9NQVggLSBzZWxmLT5wZW5kaW5nc2l6ZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcnNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGNyZXMpICsgc2VsZi0+cGVuZGluZ3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGN0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcnNpemUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7Ci0gICAgICAgICAgICAgICAgICAgIGN0cmRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhjdHIpOwotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoY3RyZGF0YSwgc2VsZi0+cGVuZGluZywgc2VsZi0+cGVuZGluZ3NpemUpOwotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoY3RyZGF0YSArIHNlbGYtPnBlbmRpbmdzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGNyZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoY3JlcykpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3Jlcyk7Ci0gICAgICAgICAgICAgICAgICAgIGNyZXMgPSBjdHI7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYtPnBlbmRpbmdzaXplID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJzaXplID0gUHlCeXRlc19HRVRfU0laRShjcmVzKSArIHNlbGYtPnBlbmRpbmdzaXplOworICAgICAgICAgICAgY3RyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByc2l6ZSk7CisgICAgICAgICAgICBpZiAoY3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CisgICAgICAgICAgICBjdHJkYXRhID0gUHlCeXRlc19BU19TVFJJTkcoY3RyKTsKKyAgICAgICAgICAgIG1lbWNweShjdHJkYXRhLCBzZWxmLT5wZW5kaW5nLCBzZWxmLT5wZW5kaW5nc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkoY3RyZGF0YSArIHNlbGYtPnBlbmRpbmdzaXplLAorICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjcmVzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShjcmVzKSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY3Jlcyk7CisgICAgICAgICAgICBjcmVzID0gY3RyOworICAgICAgICAgICAgc2VsZi0+cGVuZGluZ3NpemUgPSAwOwogICAgICAgICB9CiAKICAgICAgICAgcnNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGNyZXMpOwpAQCAtMTM0MCwyOSArMTMxNiwyNyBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgICAgICB9CiAKLSAgICAgICAgZmluYWxzaXplID0gKFB5X3NzaXplX3QpKGJ1Zi5vdXRidWYgLQotICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLm91dG9iaikpOwogICAgICAgICBQeV9ERUNSRUYoY3Jlcyk7CiAgICAgICAgIGNyZXMgPSBOVUxMOwogCi0gICAgICAgIGlmIChzaXplaGludCA8IDAgfHwgZmluYWxzaXplICE9IDAgfHwgcnNpemUgPT0gMCkKKyAgICAgICAgaWYgKHNpemVoaW50IDwgMCB8fCBidWYud3JpdGVyLnBvcyAhPSAwIHx8IHJzaXplID09IDApCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBzaXplaGludCA9IDE7IC8qIHJlYWQgMSBtb3JlIGJ5dGUgYW5kIHJldHJ5ICovCiAgICAgfQogCi0gICAgaWYgKGZpbmFsc2l6ZSAhPSBQeVVuaWNvZGVfR0VUX1NJWkUoYnVmLm91dG9iaikpCi0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZidWYub3V0b2JqLCBmaW5hbHNpemUpID09IC0xKQotICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CisgICAgcmVzID0gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJmJ1Zi53cml0ZXIpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAKICAgICBQeV9YREVDUkVGKGNyZXMpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7Ci0gICAgcmV0dXJuIGJ1Zi5vdXRvYmo7CisgICAgcmV0dXJuIHJlczsKIAogZXJyb3JleGl0OgogICAgIFB5X1hERUNSRUYoY3Jlcyk7CiAgICAgUHlfWERFQ1JFRihidWYuZXhjb2JqKTsKLSAgICBQeV9YREVDUkVGKGJ1Zi5vdXRvYmopOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmYnVmLndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE2NDksMTggKzE2MjMsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYnN0cmVhbXdyaXRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcGVuZGluZzsKICAgICBQeU9iamVjdCAqcHdydDsKIAotICAgIHBlbmRpbmcgPSBzZWxmLT5wZW5kaW5nOwogICAgIHB3cnQgPSBtdWx0aWJ5dGVjb2RlY19lbmNvZGUoc2VsZi0+Y29kZWMsICZzZWxmLT5zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgJnBlbmRpbmcsIHNlbGYtPnBlbmRpbmdzaXplLCBzZWxmLT5lcnJvcnMsCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPnBlbmRpbmcsIE5VTEwsIHNlbGYtPmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgTUJFTkNfRkxVU0ggfCBNQkVOQ19SRVNFVCk7CiAgICAgLyogc29tZSBwZW5kaW5nIGJ1ZmZlciBjYW4gYmUgdHJ1bmNhdGVkIHdoZW4gVW5pY29kZUVuY29kZUVycm9yIGlzCiAgICAgICogcmFpc2VkIG9uICdzdHJpY3QnIG1vZGUuIGJ1dCwgJ3Jlc2V0JyBtZXRob2QgaXMgZGVzaWduZWQgdG8KICAgICAgKiByZXNldCB0aGUgcGVuZGluZyBidWZmZXIgb3Igc3RhdGVzIHNvIGZhaWxlZCBzdHJpbmcgc2VxdWVuY2UKICAgICAgKiBvdWdodCB0byBiZSBtaXNzZWQgKi8KLSAgICBzZWxmLT5wZW5kaW5nc2l6ZSA9IDA7CisgICAgUHlfQ0xFQVIoc2VsZi0+cGVuZGluZyk7CiAgICAgaWYgKHB3cnQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3MDYsNyArMTY3OCw3IEBACiAgICAgc2VsZi0+Y29kZWMgPSAoKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICopY29kZWMpLT5jb2RlYzsKICAgICBzZWxmLT5zdHJlYW0gPSBzdHJlYW07CiAgICAgUHlfSU5DUkVGKHN0cmVhbSk7Ci0gICAgc2VsZi0+cGVuZGluZ3NpemUgPSAwOworICAgIHNlbGYtPnBlbmRpbmcgPSBOVUxMOwogICAgIHNlbGYtPmVycm9ycyA9IGludGVybmFsX2Vycm9yX2NhbGxiYWNrKGVycm9ycyk7CiAgICAgaWYgKHNlbGYtPmVycm9ycyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmggYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5oCmluZGV4IDFiNmVmNTUuLjdjZGU4ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmgKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuaApAQCAtMTAsMTIgKzEwLDYgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZmRlZiB1aW50MzJfdAotdHlwZWRlZiB1aW50MzJfdCB1Y3M0X3Q7Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWNzNF90OwotI2VuZGlmCi0KICNpZmRlZiB1aW50MTZfdAogdHlwZWRlZiB1aW50MTZfdCB1Y3MyX3QsIERCQ0hBUjsKICNlbHNlCkBAIC0yNywxMyArMjEsMTQgQEAKICAgICBpbnQgaTsKICAgICB1bnNpZ25lZCBjaGFyIGNbOF07CiAgICAgdWNzMl90IHUyWzRdOwotICAgIHVjczRfdCB1NFsyXTsKKyAgICBQeV9VQ1M0IHU0WzJdOwogfSBNdWx0aWJ5dGVDb2RlY19TdGF0ZTsKIAogdHlwZWRlZiBpbnQgKCptYmNvZGVjX2luaXQpKGNvbnN0IHZvaWQgKmNvbmZpZyk7CiB0eXBlZGVmIFB5X3NzaXplX3QgKCptYmVuY29kZV9mdW5jKShNdWx0aWJ5dGVDb2RlY19TdGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICoqaW5idWYsIFB5X3NzaXplX3QgaW5sZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGtpbmQsIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICppbnBvcywgUHlfc3NpemVfdCBpbmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipvdXRidWYsIFB5X3NzaXplX3Qgb3V0bGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CiB0eXBlZGVmIGludCAoKm1iZW5jb2RlaW5pdF9mdW5jKShNdWx0aWJ5dGVDb2RlY19TdGF0ZSAqc3RhdGUsCkBAIC00NCw3ICszOSw3IEBACiB0eXBlZGVmIFB5X3NzaXplX3QgKCptYmRlY29kZV9mdW5jKShNdWx0aWJ5dGVDb2RlY19TdGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW5idWYsIFB5X3NzaXplX3QgaW5sZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqKm91dGJ1ZiwgUHlfc3NpemVfdCBvdXRsZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcik7CiB0eXBlZGVmIGludCAoKm1iZGVjb2RlaW5pdF9mdW5jKShNdWx0aWJ5dGVDb2RlY19TdGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25maWcpOwogdHlwZWRlZiBQeV9zc2l6ZV90ICgqbWJkZWNvZGVyZXNldF9mdW5jKShNdWx0aWJ5dGVDb2RlY19TdGF0ZSAqc3RhdGUsCkBAIC04MSw4ICs3Niw3IEBACiAjZGVmaW5lIE1BWEVOQ1BFTkRJTkcgICAyCiAjZGVmaW5lIF9NdWx0aWJ5dGVTdGF0ZWZ1bEVuY29kZXJfSEVBRCAgICAgICAgICBcCiAgICAgX011bHRpYnl0ZVN0YXRlZnVsQ29kZWNfSEVBRCAgICAgICAgICAgICAgICBcCi0gICAgUHlfVU5JQ09ERSBwZW5kaW5nW01BWEVOQ1BFTkRJTkddOyAgICAgICAgICBcCi0gICAgUHlfc3NpemVfdCBwZW5kaW5nc2l6ZTsKKyAgICBQeU9iamVjdCAqcGVuZGluZzsKIHR5cGVkZWYgc3RydWN0IHsKICAgICBfTXVsdGlieXRlU3RhdGVmdWxFbmNvZGVyX0hFQUQKIH0gTXVsdGlieXRlU3RhdGVmdWxFbmNvZGVyQ29udGV4dDsKQEAgLTExOCw2ICsxMTIsNyBAQAogI2RlZmluZSBNQkVSUl9UT09TTUFMTCAgICAgICAgICAoLTEpIC8qIGluc3VmZmljaWVudCBvdXRwdXQgYnVmZmVyIHNwYWNlICovCiAjZGVmaW5lIE1CRVJSX1RPT0ZFVyAgICAgICAgICAgICgtMikgLyogaW5jb21wbGV0ZSBpbnB1dCBidWZmZXIgKi8KICNkZWZpbmUgTUJFUlJfSU5URVJOQUwgICAgICAgICAgKC0zKSAvKiBpbnRlcm5hbCBydW50aW1lIGVycm9yICovCisjZGVmaW5lIE1CRVJSX0VYQ0VQVElPTiAgICAgICAgICgtNCkgLyogYW4gZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZCAqLwogCiAjZGVmaW5lIEVSUk9SX1NUUklDVCAgICAgICAgICAgIChQeU9iamVjdCAqKSgxKQogI2RlZmluZSBFUlJPUl9JR05PUkUgICAgICAgICAgICAoUHlPYmplY3QgKikoMikKZGlmZiAtLWdpdCBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCmluZGV4IGM4NmEyN2YuLjE3Mjk0NWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKKysrIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwpAQCAtMjIsNyArMjIsOSBAQAogIyAgZGVmaW5lIEZBVUxUSEFORExFUl9VU0VSCiAjZW5kaWYKIAotI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorLyogY2FzdCBzaXplX3QgdG8gaW50IGJlY2F1c2Ugd3JpdGUoKSB0YWtlcyBhbiBpbnQgb24gV2luZG93cworICAgKGFueXdheSwgdGhlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gMzAgY2hhcmFjdGVycykgKi8KKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSB3cml0ZShmZCwgc3RyLCAoaW50KXN0cmxlbihzdHIpKQogCiAjaWZkZWYgSEFWRV9TSUdBQ1RJT04KIHR5cGVkZWYgc3RydWN0IHNpZ2FjdGlvbiBfUHlfc2lnaGFuZGxlcl90OwpAQCAtNzksOSArODEsNiBAQAogc3RhdGljIHVzZXJfc2lnbmFsX3QgKnVzZXJfc2lnbmFsczsKIAogLyogdGhlIGZvbGxvd2luZyBtYWNyb3MgY29tZSBmcm9tIFB5dGhvbjogTW9kdWxlcy9zaWduYWxtb2R1bGUuYyAqLwotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmICFkZWZpbmVkKFBZQ0NfR0NDKQotI2RlZmluZSBOU0lHIDEyCi0jZW5kaWYKICNpZm5kZWYgTlNJRwogIyBpZiBkZWZpbmVkKF9OU0lHKQogIyAgZGVmaW5lIE5TSUcgX05TSUcgICAgICAgICAgICAvKiBGb3IgQlNEL1N5c1YgKi8KQEAgLTQ0OCw3ICs0NDcsNyBAQAogICAgICAgICAvKiBnZXQgdGhlIHRocmVhZCBob2xkaW5nIHRoZSBHSUwsIE5VTEwgaWYgbm8gdGhyZWFkIGhvbGQgdGhlIEdJTCAqLwogICAgICAgICBjdXJyZW50ID0gX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOwogCi0gICAgICAgIHdyaXRlKHRocmVhZC5mZCwgdGhyZWFkLmhlYWRlciwgdGhyZWFkLmhlYWRlcl9sZW4pOworICAgICAgICB3cml0ZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIChpbnQpdGhyZWFkLmhlYWRlcl9sZW4pOwogCiAgICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh0aHJlYWQuZmQsIHRocmVhZC5pbnRlcnAsIGN1cnJlbnQpOwogICAgICAgICBvayA9IChlcnJtc2cgPT0gTlVMTCk7CkBAIC00NzYsNyArNDc1LDcgQEAKIAogICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKICAgICBpZiAodGhyZWFkLmhlYWRlcikgewotICAgICAgICBmcmVlKHRocmVhZC5oZWFkZXIpOworICAgICAgICBQeU1lbV9GcmVlKHRocmVhZC5oZWFkZXIpOwogICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKICAgICB9CiB9CkBAIC01MDUsNyArNTA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1KSFcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMpOwogCi0gICAgcmV0dXJuIHN0cmR1cChidWZmZXIpOworICAgIHJldHVybiBfUHlNZW1fU3RyZHVwKGJ1ZmZlcik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTU3MSw3ICs1NzAsNyBAQAogICAgIGlmIChQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl90aHJlYWQsIE5VTEwpID09IC0xKSB7CiAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CiAgICAgICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKLSAgICAgICAgZnJlZShoZWFkZXIpOworICAgICAgICBQeU1lbV9GcmVlKGhlYWRlcik7CiAgICAgICAgIHRocmVhZC5oZWFkZXIgPSBOVUxMOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBzdGFydCB3YXRjaGRvZyB0aHJlYWQiKTsKQEAgLTczMCw5ICs3MjksMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpIHsKLSAgICAgICAgdXNlcl9zaWduYWxzID0gY2FsbG9jKE5TSUcsIHNpemVvZih1c2VyX3NpZ25hbF90KSk7CisgICAgICAgIHVzZXJfc2lnbmFscyA9IFB5TWVtX01hbGxvYyhOU0lHICogc2l6ZW9mKHVzZXJfc2lnbmFsX3QpKTsKICAgICAgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIG1lbXNldCh1c2VyX3NpZ25hbHMsIDAsIE5TSUcgKiBzaXplb2YodXNlcl9zaWduYWxfdCkpOwogICAgIH0KICAgICB1c2VyID0gJnVzZXJfc2lnbmFsc1tzaWdudW1dOwogCkBAIC0xMTM3LDcgKzExMzcsNyBAQAogICAgIGlmICh1c2VyX3NpZ25hbHMgIT0gTlVMTCkgewogICAgICAgICBmb3IgKHNpZ251bT0wOyBzaWdudW0gPCBOU0lHOyBzaWdudW0rKykKICAgICAgICAgICAgIGZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKCZ1c2VyX3NpZ25hbHNbc2lnbnVtXSwgc2lnbnVtKTsKLSAgICAgICAgZnJlZSh1c2VyX3NpZ25hbHMpOworICAgICAgICBQeU1lbV9GcmVlKHVzZXJfc2lnbmFscyk7CiAgICAgICAgIHVzZXJfc2lnbmFscyA9IE5VTEw7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKaW5kZXggNmI3ZTNmYy4uMzhlZjU1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mY250bG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZmNudGxtb2R1bGUuYwpAQCAtMzI1LDExICszMjUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJsb2NrZiBub3Qgc3VwcG9ydGVkIG9uIE9TLzIgKEVNWCkiKTsKLSAgICByZXR1cm4gTlVMTDsKLSNlbHNlCiAjaWZuZGVmIExPQ0tfU0gKICNkZWZpbmUgTE9DS19TSCAgICAgICAgIDEgICAgICAgLyogc2hhcmVkIGxvY2sgKi8KICNkZWZpbmUgTE9DS19FWCAgICAgICAgIDIgICAgICAgLyogZXhjbHVzaXZlIGxvY2sgKi8KQEAgLTM4Myw3ICszNzgsNiBAQAogICAgIH0KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7Ci0jZW5kaWYgIC8qIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpICovCiB9CiAKIFB5RG9jX1NUUlZBUihsb2NrZl9kb2MsCkBAIC00MzAsMTg4ICs0MjQsMTc5IEBACiAKIC8qIE1vZHVsZSBpbml0aWFsaXNhdGlvbiAqLwogCi1zdGF0aWMgaW50Ci1pbnMoUHlPYmplY3QqIGQsIGNoYXIqIHN5bWJvbCwgbG9uZyB2YWx1ZSkKLXsKLSAgICBQeU9iamVjdCogdiA9IFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7Ci0gICAgaWYgKCF2IHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIHN5bWJvbCwgdikgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBQeV9ERUNSRUYodik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNkZWZpbmUgSU5TKHgpIGlmIChpbnMoZCwgI3gsIChsb25nKXgpKSByZXR1cm4gLTEKIAogc3RhdGljIGludAotYWxsX2lucyhQeU9iamVjdCogZCkKK2FsbF9pbnMoUHlPYmplY3QqIG0pCiB7Ci0gICAgaWYgKGlucyhkLCAiTE9DS19TSCIsIChsb25nKUxPQ0tfU0gpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiTE9DS19FWCIsIChsb25nKUxPQ0tfRVgpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiTE9DS19OQiIsIChsb25nKUxPQ0tfTkIpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiTE9DS19VTiIsIChsb25nKUxPQ0tfVU4pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0tfU0gpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0tfRVgpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0tfTkIpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0tfVU4pKSByZXR1cm4gLTE7CiAvKiBHTlUgZXh0ZW5zaW9ucywgYXMgb2YgZ2xpYmMgMi4yLjQgKi8KICNpZmRlZiBMT0NLX01BTkQKLSAgICBpZiAoaW5zKGQsICJMT0NLX01BTkQiLCAobG9uZylMT0NLX01BTkQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0tfTUFORCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIExPQ0tfUkVBRAotICAgIGlmIChpbnMoZCwgIkxPQ0tfUkVBRCIsIChsb25nKUxPQ0tfUkVBRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9DS19SRUFEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgTE9DS19XUklURQotICAgIGlmIChpbnMoZCwgIkxPQ0tfV1JJVEUiLCAobG9uZylMT0NLX1dSSVRFKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NLX1dSSVRFKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgTE9DS19SVwotICAgIGlmIChpbnMoZCwgIkxPQ0tfUlciLCAobG9uZylMT0NLX1JXKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NLX1JXKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKICNpZmRlZiBGX0RVUEZECi0gICAgaWYgKGlucyhkLCAiRl9EVVBGRCIsIChsb25nKUZfRFVQRkQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfRFVQRkQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX0RVUEZEX0NMT0VYRUMKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9EVVBGRF9DTE9FWEVDKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9HRVRGRAotICAgIGlmIChpbnMoZCwgIkZfR0VURkQiLCAobG9uZylGX0dFVEZEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX0dFVEZEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9TRVRGRAotICAgIGlmIChpbnMoZCwgIkZfU0VURkQiLCAobG9uZylGX1NFVEZEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX1NFVEZEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9HRVRGTAotICAgIGlmIChpbnMoZCwgIkZfR0VURkwiLCAobG9uZylGX0dFVEZMKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX0dFVEZMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9TRVRGTAotICAgIGlmIChpbnMoZCwgIkZfU0VURkwiLCAobG9uZylGX1NFVEZMKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX1NFVEZMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9HRVRMSwotICAgIGlmIChpbnMoZCwgIkZfR0VUTEsiLCAobG9uZylGX0dFVExLKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX0dFVExLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9TRVRMSwotICAgIGlmIChpbnMoZCwgIkZfU0VUTEsiLCAobG9uZylGX1NFVExLKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX1NFVExLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9TRVRMS1cKLSAgICBpZiAoaW5zKGQsICJGX1NFVExLVyIsIChsb25nKUZfU0VUTEtXKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX1NFVExLVykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfR0VUT1dOCi0gICAgaWYgKGlucyhkLCAiRl9HRVRPV04iLCAobG9uZylGX0dFVE9XTikpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9HRVRPV04pKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX1NFVE9XTgotICAgIGlmIChpbnMoZCwgIkZfU0VUT1dOIiwgKGxvbmcpRl9TRVRPV04pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfU0VUT1dOKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9HRVRTSUcKLSAgICBpZiAoaW5zKGQsICJGX0dFVFNJRyIsIChsb25nKUZfR0VUU0lHKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX0dFVFNJRykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfU0VUU0lHCi0gICAgaWYgKGlucyhkLCAiRl9TRVRTSUciLCAobG9uZylGX1NFVFNJRykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9TRVRTSUcpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX1JETENLCi0gICAgaWYgKGlucyhkLCAiRl9SRExDSyIsIChsb25nKUZfUkRMQ0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfUkRMQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX1dSTENLCi0gICAgaWYgKGlucyhkLCAiRl9XUkxDSyIsIChsb25nKUZfV1JMQ0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfV1JMQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX1VOTENLCi0gICAgaWYgKGlucyhkLCAiRl9VTkxDSyIsIChsb25nKUZfVU5MQ0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfVU5MQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKIC8qIExGUyBjb25zdGFudHMgKi8KICNpZmRlZiBGX0dFVExLNjQKLSAgICBpZiAoaW5zKGQsICJGX0dFVExLNjQiLCAobG9uZylGX0dFVExLNjQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfR0VUTEs2NCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfU0VUTEs2NAotICAgIGlmIChpbnMoZCwgIkZfU0VUTEs2NCIsIChsb25nKUZfU0VUTEs2NCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9TRVRMSzY0KSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9TRVRMS1c2NAotICAgIGlmIChpbnMoZCwgIkZfU0VUTEtXNjQiLCAobG9uZylGX1NFVExLVzY0KSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX1NFVExLVzY0KSkgcmV0dXJuIC0xOwogI2VuZGlmCiAvKiBHTlUgZXh0ZW5zaW9ucywgYXMgb2YgZ2xpYmMgMi4yLjQuICovCiAjaWZkZWYgRkFTWU5DCi0gICAgaWYgKGlucyhkLCAiRkFTWU5DIiwgKGxvbmcpRkFTWU5DKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGQVNZTkMpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX1NFVExFQVNFCi0gICAgaWYgKGlucyhkLCAiRl9TRVRMRUFTRSIsIChsb25nKUZfU0VUTEVBU0UpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfU0VUTEVBU0UpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX0dFVExFQVNFCi0gICAgaWYgKGlucyhkLCAiRl9HRVRMRUFTRSIsIChsb25nKUZfR0VUTEVBU0UpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfR0VUTEVBU0UpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBGX05PVElGWQotICAgIGlmIChpbnMoZCwgIkZfTk9USUZZIiwgKGxvbmcpRl9OT1RJRlkpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfTk9USUZZKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAvKiBPbGQgQlNEIGZsb2NrKCkuICovCiAjaWZkZWYgRl9FWExDSwotICAgIGlmIChpbnMoZCwgIkZfRVhMQ0siLCAobG9uZylGX0VYTENLKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX0VYTENLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRl9TSExDSwotICAgIGlmIChpbnMoZCwgIkZfU0hMQ0siLCAobG9uZylGX1NITENLKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX1NITENLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKIC8qIE9TIFggc3BlY2lmaWNzICovCiAjaWZkZWYgRl9GVUxMRlNZTkMKLSAgICBpZiAoaW5zKGQsICJGX0ZVTExGU1lOQyIsIChsb25nKUZfRlVMTEZTWU5DKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX0ZVTExGU1lOQykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfTk9DQUNIRQotICAgIGlmIChpbnMoZCwgIkZfTk9DQUNIRSIsIChsb25nKUZfTk9DQUNIRSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9OT0NBQ0hFKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKIC8qIEZvciBGX3tHRVR8U0VUfUZMICovCiAjaWZkZWYgRkRfQ0xPRVhFQwotICAgIGlmIChpbnMoZCwgIkZEX0NMT0VYRUMiLCAobG9uZylGRF9DTE9FWEVDKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGRF9DTE9FWEVDKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKIC8qIEZvciBGX05PVElGWSAqLwogI2lmZGVmIEROX0FDQ0VTUwotICAgIGlmIChpbnMoZCwgIkROX0FDQ0VTUyIsIChsb25nKUROX0FDQ0VTUykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRE5fQUNDRVNTKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRE5fTU9ESUZZCi0gICAgaWYgKGlucyhkLCAiRE5fTU9ESUZZIiwgKGxvbmcpRE5fTU9ESUZZKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBETl9NT0RJRlkpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBETl9DUkVBVEUKLSAgICBpZiAoaW5zKGQsICJETl9DUkVBVEUiLCAobG9uZylETl9DUkVBVEUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEROX0NSRUFURSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEROX0RFTEVURQotICAgIGlmIChpbnMoZCwgIkROX0RFTEVURSIsIChsb25nKUROX0RFTEVURSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRE5fREVMRVRFKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgRE5fUkVOQU1FCi0gICAgaWYgKGlucyhkLCAiRE5fUkVOQU1FIiwgKGxvbmcpRE5fUkVOQU1FKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBETl9SRU5BTUUpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBETl9BVFRSSUIKLSAgICBpZiAoaW5zKGQsICJETl9BVFRSSUIiLCAobG9uZylETl9BVFRSSUIpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEROX0FUVFJJQikpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEROX01VTFRJU0hPVAotICAgIGlmIChpbnMoZCwgIkROX01VTFRJU0hPVCIsIChsb25nKUROX01VTFRJU0hPVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRE5fTVVMVElTSE9UKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NUUk9QVFNfSAogICAgIC8qIFVuaXggOTggZ3VhcmFudGVlcyB0aGF0IHRoZXNlIGFyZSBpbiBzdHJvcHRzLmguICovCi0gICAgSU5TKElfUFVTSCk7Ci0gICAgSU5TKElfUE9QKTsKLSAgICBJTlMoSV9MT09LKTsKLSAgICBJTlMoSV9GTFVTSCk7Ci0gICAgSU5TKElfRkxVU0hCQU5EKTsKLSAgICBJTlMoSV9TRVRTSUcpOwotICAgIElOUyhJX0dFVFNJRyk7Ci0gICAgSU5TKElfRklORCk7Ci0gICAgSU5TKElfUEVFSyk7Ci0gICAgSU5TKElfU1JET1BUKTsKLSAgICBJTlMoSV9HUkRPUFQpOwotICAgIElOUyhJX05SRUFEKTsKLSAgICBJTlMoSV9GRElOU0VSVCk7Ci0gICAgSU5TKElfU1RSKTsKLSAgICBJTlMoSV9TV1JPUFQpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX1BVU0gpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfUE9QKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX0xPT0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfRkxVU0gpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfRkxVU0hCQU5EKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX1NFVFNJRykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSV9HRVRTSUcpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfRklORCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSV9QRUVLKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX1NSRE9QVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSV9HUkRPUFQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfTlJFQUQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfRkRJTlNFUlQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfU1RSKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX1NXUk9QVCkpIHJldHVybiAtMTsKICNpZmRlZiBJX0dXUk9QVAogICAgIC8qIGRlc3BpdGUgdGhlIGNvbW1lbnQgYWJvdmUsIG9sZC1pc2ggZ2xpYmNzIG1pc3MgYSBjb3VwbGUuLi4gKi8KLSAgICBJTlMoSV9HV1JPUFQpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX0dXUk9QVCkpIHJldHVybiAtMTsKICNlbmRpZgotICAgIElOUyhJX1NFTkRGRCk7Ci0gICAgSU5TKElfUkVDVkZEKTsKLSAgICBJTlMoSV9MSVNUKTsKLSAgICBJTlMoSV9BVE1BUkspOwotICAgIElOUyhJX0NLQkFORCk7Ci0gICAgSU5TKElfR0VUQkFORCk7Ci0gICAgSU5TKElfQ0FOUFVUKTsKLSAgICBJTlMoSV9TRVRDTFRJTUUpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX1NFTkRGRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSV9SRUNWRkQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfTElTVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSV9BVE1BUkspKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfQ0tCQU5EKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX0dFVEJBTkQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfQ0FOUFVUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJX1NFVENMVElNRSkpIHJldHVybiAtMTsKICNpZmRlZiBJX0dFVENMVElNRQotICAgIElOUyhJX0dFVENMVElNRSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfR0VUQ0xUSU1FKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0gICAgSU5TKElfTElOSyk7Ci0gICAgSU5TKElfVU5MSU5LKTsKLSAgICBJTlMoSV9QTElOSyk7Ci0gICAgSU5TKElfUFVOTElOSyk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfTElOSykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSV9VTkxJTkspKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfUExJTkspKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElfUFVOTElOSykpIHJldHVybiAtMTsKICNlbmRpZgogCiAgICAgcmV0dXJuIDA7CkBAIC02MzMsNyArNjE4LDcgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfZmNudGwodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQ7CisgICAgUHlPYmplY3QgKm07CiAKICAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSBhbmQgYWRkIHRoZSBmdW5jdGlvbnMgYW5kIGRvY3VtZW50YXRpb24gKi8KICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZmY250bG1vZHVsZSk7CkBAIC02NDEsNyArNjI2LDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIGFsbF9pbnMoZCk7CisgICAgYWxsX2lucyhtKTsKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCBmNzgyZGQwLi4wMmUwY2I4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0xMTgsNyArMTE4LDcgQEAKIAogLyoKICAgIE5PVEU6IGFib3V0IHVudHJhY2tpbmcgb2YgbXV0YWJsZSBvYmplY3RzLgotICAgCisKICAgIENlcnRhaW4gdHlwZXMgb2YgY29udGFpbmVyIGNhbm5vdCBwYXJ0aWNpcGF0ZSBpbiBhIHJlZmVyZW5jZSBjeWNsZSwgYW5kCiAgICBzbyBkbyBub3QgbmVlZCB0byBiZSB0cmFja2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gVW50cmFja2luZyB0aGVzZQogICAgb2JqZWN0cyByZWR1Y2VzIHRoZSBjb3N0IG9mIGdhcmJhZ2UgY29sbGVjdGlvbnMuIEhvd2V2ZXIsIGRldGVybWluaW5nCkBAIC0xMzYsMTAgKzEzNiwxMCBAQAogICAgbm90IHN1cnZpdmUgdW50aWwgZ2FyYmFnZSBjb2xsZWN0aW9uLiBJdCBpcyB0aGVyZWZvcmUgbm90IHdvcnRod2hpbGUKICAgIHRvIHVudHJhY2sgZWxpZ2libGUgdHVwbGVzIGF0IGNyZWF0aW9uIHRpbWUuCiAKLSAgIEluc3RlYWQsIGFsbCB0dXBsZXMgZXhjZXB0IHRoZSBlbXB0eSB0dXBsZSBhcmUgdHJhY2tlZCB3aGVuIGNyZWF0ZWQuIAotICAgRHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiBpdCBpcyBkZXRlcm1pbmVkIHdoZXRoZXIgYW55IHN1cnZpdmluZyB0dXBsZXMgCi0gICBjYW4gYmUgdW50cmFja2VkLiBBIHR1cGxlIGNhbiBiZSB1bnRyYWNrZWQgaWYgYWxsIG9mIGl0cyBjb250ZW50cyBhcmUgCi0gICBhbHJlYWR5IG5vdCB0cmFja2VkLiBUdXBsZXMgYXJlIGV4YW1pbmVkIGZvciB1bnRyYWNraW5nIGluIGFsbCBnYXJiYWdlIAorICAgSW5zdGVhZCwgYWxsIHR1cGxlcyBleGNlcHQgdGhlIGVtcHR5IHR1cGxlIGFyZSB0cmFja2VkIHdoZW4gY3JlYXRlZC4KKyAgIER1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24gaXQgaXMgZGV0ZXJtaW5lZCB3aGV0aGVyIGFueSBzdXJ2aXZpbmcgdHVwbGVzCisgICBjYW4gYmUgdW50cmFja2VkLiBBIHR1cGxlIGNhbiBiZSB1bnRyYWNrZWQgaWYgYWxsIG9mIGl0cyBjb250ZW50cyBhcmUKKyAgIGFscmVhZHkgbm90IHRyYWNrZWQuIFR1cGxlcyBhcmUgZXhhbWluZWQgZm9yIHVudHJhY2tpbmcgaW4gYWxsIGdhcmJhZ2UKICAgIGNvbGxlY3Rpb24gY3ljbGVzLiBJdCBtYXkgdGFrZSBtb3JlIHRoYW4gb25lIGN5Y2xlIHRvIHVudHJhY2sgYSB0dXBsZS4KIAogICAgRGljdGlvbmFyaWVzIGNvbnRhaW5pbmcgb25seSBpbW11dGFibGUgb2JqZWN0cyBhbHNvIGRvIG5vdCBuZWVkIHRvIGJlCkBAIC0xNTIsOCArMTUyLDggQEAKICAgIFRoZSBtb2R1bGUgcHJvdmlkZXMgdGhlIHB5dGhvbiBmdW5jdGlvbiBpc190cmFja2VkKG9iaiksIHdoaWNoIHJldHVybnMKICAgIHRoZSBDVVJSRU5UIHRyYWNraW5nIHN0YXR1cyBvZiB0aGUgb2JqZWN0LiBTdWJzZXF1ZW50IGdhcmJhZ2UKICAgIGNvbGxlY3Rpb25zIG1heSBjaGFuZ2UgdGhlIHRyYWNraW5nIHN0YXR1cyBvZiB0aGUgb2JqZWN0LgotICAgCi0gICBVbnRyYWNraW5nIG9mIGNlcnRhaW4gY29udGFpbmVycyB3YXMgaW50cm9kdWNlZCBpbiBpc3N1ZSAjNDY4OCwgYW5kIAorCisgICBVbnRyYWNraW5nIG9mIGNlcnRhaW4gY29udGFpbmVycyB3YXMgaW50cm9kdWNlZCBpbiBpc3N1ZSAjNDY4OCwgYW5kCiAgICB0aGUgYWxnb3JpdGhtIHdhcyByZWZpbmVkIGluIHJlc3BvbnNlIHRvIGlzc3VlICMxNDc3NS4KICovCiAKQEAgLTE2OCw2ICsxNjgsMTggQEAKIHN0YXRpYyBpbnQgZGVidWc7CiBzdGF0aWMgUHlPYmplY3QgKnRtb2QgPSBOVUxMOwogCisvKiBSdW5uaW5nIHN0YXRzIHBlciBnZW5lcmF0aW9uICovCitzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyB7CisgICAgLyogdG90YWwgbnVtYmVyIG9mIGNvbGxlY3Rpb25zICovCisgICAgUHlfc3NpemVfdCBjb2xsZWN0aW9uczsKKyAgICAvKiB0b3RhbCBudW1iZXIgb2YgY29sbGVjdGVkIG9iamVjdHMgKi8KKyAgICBQeV9zc2l6ZV90IGNvbGxlY3RlZDsKKyAgICAvKiB0b3RhbCBudW1iZXIgb2YgdW5jb2xsZWN0YWJsZSBvYmplY3RzIChwdXQgaW50byBnYy5nYXJiYWdlKSAqLworICAgIFB5X3NzaXplX3QgdW5jb2xsZWN0YWJsZTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyBnZW5lcmF0aW9uX3N0YXRzW05VTV9HRU5FUkFUSU9OU107CisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGdjX3JlZnMgdmFsdWVzLgogCkBAIC0yMTEsMTAgKzIyMywxMCBAQAogI2RlZmluZSBHQ19SRUFDSEFCTEUgICAgICAgICAgICAgICAgICAgIF9QeUdDX1JFRlNfUkVBQ0hBQkxFCiAjZGVmaW5lIEdDX1RFTlRBVElWRUxZX1VOUkVBQ0hBQkxFICAgICAgX1B5R0NfUkVGU19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRQogCi0jZGVmaW5lIElTX1RSQUNLRUQobykgKChBU19HQyhvKSktPmdjLmdjX3JlZnMgIT0gR0NfVU5UUkFDS0VEKQotI2RlZmluZSBJU19SRUFDSEFCTEUobykgKChBU19HQyhvKSktPmdjLmdjX3JlZnMgPT0gR0NfUkVBQ0hBQkxFKQorI2RlZmluZSBJU19UUkFDS0VEKG8pIChfUHlHQ19SRUZTKG8pICE9IEdDX1VOVFJBQ0tFRCkKKyNkZWZpbmUgSVNfUkVBQ0hBQkxFKG8pIChfUHlHQ19SRUZTKG8pID09IEdDX1JFQUNIQUJMRSkKICNkZWZpbmUgSVNfVEVOVEFUSVZFTFlfVU5SRUFDSEFCTEUobykgKCBcCi0gICAgKEFTX0dDKG8pKS0+Z2MuZ2NfcmVmcyA9PSBHQ19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRSkKKyAgICBfUHlHQ19SRUZTKG8pID09IEdDX1RFTlRBVElWRUxZX1VOUkVBQ0hBQkxFKQogCiAvKioqIGxpc3QgZnVuY3Rpb25zICoqKi8KIApAQCAtMzI5LDggKzM0MSw4IEBACiB7CiAgICAgUHlHQ19IZWFkICpnYyA9IGNvbnRhaW5lcnMtPmdjLmdjX25leHQ7CiAgICAgZm9yICg7IGdjICE9IGNvbnRhaW5lcnM7IGdjID0gZ2MtPmdjLmdjX25leHQpIHsKLSAgICAgICAgYXNzZXJ0KGdjLT5nYy5nY19yZWZzID09IEdDX1JFQUNIQUJMRSk7Ci0gICAgICAgIGdjLT5nYy5nY19yZWZzID0gUHlfUkVGQ05UKEZST01fR0MoZ2MpKTsKKyAgICAgICAgYXNzZXJ0KF9QeUdDSGVhZF9SRUZTKGdjKSA9PSBHQ19SRUFDSEFCTEUpOworICAgICAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZ2MsIFB5X1JFRkNOVChGUk9NX0dDKGdjKSkpOwogICAgICAgICAvKiBQeXRob24ncyBjeWNsaWMgZ2Mgc2hvdWxkIG5ldmVyIHNlZSBhbiBpbmNvbWluZyByZWZjb3VudAogICAgICAgICAgKiBvZiAwOiAgaWYgc29tZXRoaW5nIGRlY3JlZidlZCB0byAwLCBpdCBzaG91bGQgaGF2ZSBiZWVuCiAgICAgICAgICAqIGRlYWxsb2NhdGVkIGltbWVkaWF0ZWx5IGF0IHRoYXQgdGltZS4KQEAgLTM0OSw3ICszNjEsNyBAQAogICAgICAgICAgKiBzbyBzZXJpb3VzIHRoYXQgbWF5YmUgdGhpcyBzaG91bGQgYmUgYSByZWxlYXNlLWJ1aWxkCiAgICAgICAgICAqIGNoZWNrIGluc3RlYWQgb2YgYW4gYXNzZXJ0PwogICAgICAgICAgKi8KLSAgICAgICAgYXNzZXJ0KGdjLT5nYy5nY19yZWZzICE9IDApOworICAgICAgICBhc3NlcnQoX1B5R0NIZWFkX1JFRlMoZ2MpICE9IDApOwogICAgIH0KIH0KIApAQCAtMzY0LDkgKzM3Niw5IEBACiAgICAgICAgICAqIGdlbmVyYXRpb24gYmVpbmcgY29sbGVjdGVkLCB3aGljaCBjYW4gYmUgcmVjb2duaXplZAogICAgICAgICAgKiBiZWNhdXNlIG9ubHkgdGhleSBoYXZlIHBvc2l0aXZlIGdjX3JlZnMuCiAgICAgICAgICAqLwotICAgICAgICBhc3NlcnQoZ2MtPmdjLmdjX3JlZnMgIT0gMCk7IC8qIGVsc2UgcmVmY291bnQgd2FzIHRvbyBzbWFsbCAqLwotICAgICAgICBpZiAoZ2MtPmdjLmdjX3JlZnMgPiAwKQotICAgICAgICAgICAgZ2MtPmdjLmdjX3JlZnMtLTsKKyAgICAgICAgYXNzZXJ0KF9QeUdDSGVhZF9SRUZTKGdjKSAhPSAwKTsgLyogZWxzZSByZWZjb3VudCB3YXMgdG9vIHNtYWxsICovCisgICAgICAgIGlmIChfUHlHQ0hlYWRfUkVGUyhnYykgPiAwKQorICAgICAgICAgICAgX1B5R0NIZWFkX0RFQ1JFRihnYyk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMzk1LDcgKzQwNyw3IEBACiB7CiAgICAgaWYgKFB5T2JqZWN0X0lTX0dDKG9wKSkgewogICAgICAgICBQeUdDX0hlYWQgKmdjID0gQVNfR0Mob3ApOwotICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGdjX3JlZnMgPSBnYy0+Z2MuZ2NfcmVmczsKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCBnY19yZWZzID0gX1B5R0NIZWFkX1JFRlMoZ2MpOwogCiAgICAgICAgIGlmIChnY19yZWZzID09IDApIHsKICAgICAgICAgICAgIC8qIFRoaXMgaXMgaW4gbW92ZV91bnJlYWNoYWJsZSdzICd5b3VuZycgbGlzdCwgYnV0CkBAIC00MDMsNyArNDE1LDcgQEAKICAgICAgICAgICAgICAqIHdlIG5lZWQgdG8gZG8gaXMgdGVsbCBtb3ZlX3VucmVhY2hhYmxlIHRoYXQgaXQncwogICAgICAgICAgICAgICogcmVhY2hhYmxlLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBnYy0+Z2MuZ2NfcmVmcyA9IDE7CisgICAgICAgICAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZ2MsIDEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGdjX3JlZnMgPT0gR0NfVEVOVEFUSVZFTFlfVU5SRUFDSEFCTEUpIHsKICAgICAgICAgICAgIC8qIFRoaXMgaGFkIGdjX3JlZnMgPSAwIHdoZW4gbW92ZV91bnJlYWNoYWJsZSBnb3QKQEAgLTQxMyw3ICs0MjUsNyBAQAogICAgICAgICAgICAgICogYWdhaW4uCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGdjX2xpc3RfbW92ZShnYywgcmVhY2hhYmxlKTsKLSAgICAgICAgICAgIGdjLT5nYy5nY19yZWZzID0gMTsKKyAgICAgICAgICAgIF9QeUdDSGVhZF9TRVRfUkVGUyhnYywgMSk7CiAgICAgICAgIH0KICAgICAgICAgLyogRWxzZSB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCiAgICAgICAgICAqIElmIGdjX3JlZnMgPiAwLCBpdCBtdXN0IGJlIGluIG1vdmVfdW5yZWFjaGFibGUncyAneW91bmcnCkBAIC00NTcsNyArNDY5LDcgQEAKICAgICB3aGlsZSAoZ2MgIT0geW91bmcpIHsKICAgICAgICAgUHlHQ19IZWFkICpuZXh0OwogCi0gICAgICAgIGlmIChnYy0+Z2MuZ2NfcmVmcykgeworICAgICAgICBpZiAoX1B5R0NIZWFkX1JFRlMoZ2MpKSB7CiAgICAgICAgICAgICAvKiBnYyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBmcm9tIG91dHNpZGUgdGhlCiAgICAgICAgICAgICAgKiBvcmlnaW5hbCAneW91bmcnLiAgTWFyayBpdCBhcyBzdWNoLCBhbmQgdHJhdmVyc2UKICAgICAgICAgICAgICAqIGl0cyBwb2ludGVycyB0byBmaW5kIGFueSBvdGhlciBvYmplY3RzIHRoYXQgbWF5CkBAIC00NjgsOCArNDgwLDggQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm9wID0gRlJPTV9HQyhnYyk7CiAgICAgICAgICAgICB0cmF2ZXJzZXByb2MgdHJhdmVyc2UgPSBQeV9UWVBFKG9wKS0+dHBfdHJhdmVyc2U7Ci0gICAgICAgICAgICBhc3NlcnQoZ2MtPmdjLmdjX3JlZnMgPiAwKTsKLSAgICAgICAgICAgIGdjLT5nYy5nY19yZWZzID0gR0NfUkVBQ0hBQkxFOworICAgICAgICAgICAgYXNzZXJ0KF9QeUdDSGVhZF9SRUZTKGdjKSA+IDApOworICAgICAgICAgICAgX1B5R0NIZWFkX1NFVF9SRUZTKGdjLCBHQ19SRUFDSEFCTEUpOwogICAgICAgICAgICAgKHZvaWQpIHRyYXZlcnNlKG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2aXNpdHByb2MpdmlzaXRfcmVhY2hhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopeW91bmcpOwpAQCAtNDg4LDcgKzUwMCw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG5leHQgPSBnYy0+Z2MuZ2NfbmV4dDsKICAgICAgICAgICAgIGdjX2xpc3RfbW92ZShnYywgdW5yZWFjaGFibGUpOwotICAgICAgICAgICAgZ2MtPmdjLmdjX3JlZnMgPSBHQ19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRTsKKyAgICAgICAgICAgIF9QeUdDSGVhZF9TRVRfUkVGUyhnYywgR0NfVEVOVEFUSVZFTFlfVU5SRUFDSEFCTEUpOwogICAgICAgICB9CiAgICAgICAgIGdjID0gbmV4dDsKICAgICB9CkBAIC01MDgsMjIgKzUyMCwxOSBAQAogICAgIH0KIH0KIAotLyogUmV0dXJuIHRydWUgaWYgb2JqZWN0IGhhcyBhIGZpbmFsaXphdGlvbiBtZXRob2QuICovCisvKiBSZXR1cm4gdHJ1ZSBpZiBvYmplY3QgaGFzIGEgcHJlLVBFUCA0NDIgZmluYWxpemF0aW9uIG1ldGhvZC4gKi8KIHN0YXRpYyBpbnQKLWhhc19maW5hbGl6ZXIoUHlPYmplY3QgKm9wKQoraGFzX2xlZ2FjeV9maW5hbGl6ZXIoUHlPYmplY3QgKm9wKQogewotICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KG9wKSkKLSAgICAgICAgcmV0dXJuIFB5R2VuX05lZWRzRmluYWxpemluZygoUHlHZW5PYmplY3QgKilvcCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gb3AtPm9iX3R5cGUtPnRwX2RlbCAhPSBOVUxMOworICAgIHJldHVybiBvcC0+b2JfdHlwZS0+dHBfZGVsICE9IE5VTEw7CiB9CiAKLS8qIE1vdmUgdGhlIG9iamVjdHMgaW4gdW5yZWFjaGFibGUgd2l0aCBfX2RlbF9fIG1ldGhvZHMgaW50byBgZmluYWxpemVyc2AuCisvKiBNb3ZlIHRoZSBvYmplY3RzIGluIHVucmVhY2hhYmxlIHdpdGggdHBfZGVsIHNsb3RzIGludG8gYGZpbmFsaXplcnNgLgogICogT2JqZWN0cyBtb3ZlZCBpbnRvIGBmaW5hbGl6ZXJzYCBoYXZlIGdjX3JlZnMgc2V0IHRvIEdDX1JFQUNIQUJMRTsgdGhlCiAgKiBvYmplY3RzIHJlbWFpbmluZyBpbiB1bnJlYWNoYWJsZSBhcmUgbGVmdCBhdCBHQ19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRS4KICAqLwogc3RhdGljIHZvaWQKLW1vdmVfZmluYWxpemVycyhQeUdDX0hlYWQgKnVucmVhY2hhYmxlLCBQeUdDX0hlYWQgKmZpbmFsaXplcnMpCittb3ZlX2xlZ2FjeV9maW5hbGl6ZXJzKFB5R0NfSGVhZCAqdW5yZWFjaGFibGUsIFB5R0NfSGVhZCAqZmluYWxpemVycykKIHsKICAgICBQeUdDX0hlYWQgKmdjOwogICAgIFB5R0NfSGVhZCAqbmV4dDsKQEAgLTUzNywxNCArNTQ2LDE0IEBACiAgICAgICAgIGFzc2VydChJU19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRShvcCkpOwogICAgICAgICBuZXh0ID0gZ2MtPmdjLmdjX25leHQ7CiAKLSAgICAgICAgaWYgKGhhc19maW5hbGl6ZXIob3ApKSB7CisgICAgICAgIGlmIChoYXNfbGVnYWN5X2ZpbmFsaXplcihvcCkpIHsKICAgICAgICAgICAgIGdjX2xpc3RfbW92ZShnYywgZmluYWxpemVycyk7Ci0gICAgICAgICAgICBnYy0+Z2MuZ2NfcmVmcyA9IEdDX1JFQUNIQUJMRTsKKyAgICAgICAgICAgIF9QeUdDSGVhZF9TRVRfUkVGUyhnYywgR0NfUkVBQ0hBQkxFKTsKICAgICAgICAgfQogICAgIH0KIH0KIAotLyogQSB0cmF2ZXJzYWwgY2FsbGJhY2sgZm9yIG1vdmVfZmluYWxpemVyX3JlYWNoYWJsZS4gKi8KKy8qIEEgdHJhdmVyc2FsIGNhbGxiYWNrIGZvciBtb3ZlX2xlZ2FjeV9maW5hbGl6ZXJfcmVhY2hhYmxlLiAqLwogc3RhdGljIGludAogdmlzaXRfbW92ZShQeU9iamVjdCAqb3AsIFB5R0NfSGVhZCAqdG9saXN0KQogewpAQCAtNTUyLDcgKzU2MSw3IEBACiAgICAgICAgIGlmIChJU19URU5UQVRJVkVMWV9VTlJFQUNIQUJMRShvcCkpIHsKICAgICAgICAgICAgIFB5R0NfSGVhZCAqZ2MgPSBBU19HQyhvcCk7CiAgICAgICAgICAgICBnY19saXN0X21vdmUoZ2MsIHRvbGlzdCk7Ci0gICAgICAgICAgICBnYy0+Z2MuZ2NfcmVmcyA9IEdDX1JFQUNIQUJMRTsKKyAgICAgICAgICAgIF9QeUdDSGVhZF9TRVRfUkVGUyhnYywgR0NfUkVBQ0hBQkxFKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTU2Miw3ICs1NzEsNyBAQAogICogaW50byBmaW5hbGl6ZXJzIHNldC4KICAqLwogc3RhdGljIHZvaWQKLW1vdmVfZmluYWxpemVyX3JlYWNoYWJsZShQeUdDX0hlYWQgKmZpbmFsaXplcnMpCittb3ZlX2xlZ2FjeV9maW5hbGl6ZXJfcmVhY2hhYmxlKFB5R0NfSGVhZCAqZmluYWxpemVycykKIHsKICAgICB0cmF2ZXJzZXByb2MgdHJhdmVyc2U7CiAgICAgUHlHQ19IZWFkICpnYyA9IGZpbmFsaXplcnMtPmdjLmdjX25leHQ7CkBAIC03MzUsNyArNzQ0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSwgb3ApOwogfQogCi0vKiBIYW5kbGUgdW5jb2xsZWN0YWJsZSBnYXJiYWdlIChjeWNsZXMgd2l0aCBmaW5hbGl6ZXJzLCBhbmQgc3R1ZmYgcmVhY2hhYmxlCisvKiBIYW5kbGUgdW5jb2xsZWN0YWJsZSBnYXJiYWdlIChjeWNsZXMgd2l0aCB0cF9kZWwgc2xvdHMsIGFuZCBzdHVmZiByZWFjaGFibGUKICAqIG9ubHkgZnJvbSBzdWNoIGN5Y2xlcykuCiAgKiBJZiBERUJVR19TQVZFQUxMLCBhbGwgb2JqZWN0cyBpbiBmaW5hbGl6ZXJzIGFyZSBhcHBlbmRlZCB0byB0aGUgbW9kdWxlCiAgKiBnYXJiYWdlIGxpc3QgKGEgUHl0aG9uIGxpc3QpLCBlbHNlIG9ubHkgdGhlIG9iamVjdHMgaW4gZmluYWxpemVycyB3aXRoCkBAIC03NDUsNyArNzU0LDcgQEAKICAqIFRoZSBmaW5hbGl6ZXJzIGxpc3QgaXMgbWFkZSBlbXB0eSBvbiBhIHN1Y2Nlc3NmdWwgcmV0dXJuLgogICovCiBzdGF0aWMgaW50Ci1oYW5kbGVfZmluYWxpemVycyhQeUdDX0hlYWQgKmZpbmFsaXplcnMsIFB5R0NfSGVhZCAqb2xkKQoraGFuZGxlX2xlZ2FjeV9maW5hbGl6ZXJzKFB5R0NfSGVhZCAqZmluYWxpemVycywgUHlHQ19IZWFkICpvbGQpCiB7CiAgICAgUHlHQ19IZWFkICpnYyA9IGZpbmFsaXplcnMtPmdjLmdjX25leHQ7CiAKQEAgLTc1Nyw3ICs3NjYsNyBAQAogICAgIGZvciAoOyBnYyAhPSBmaW5hbGl6ZXJzOyBnYyA9IGdjLT5nYy5nY19uZXh0KSB7CiAgICAgICAgIFB5T2JqZWN0ICpvcCA9IEZST01fR0MoZ2MpOwogCi0gICAgICAgIGlmICgoZGVidWcgJiBERUJVR19TQVZFQUxMKSB8fCBoYXNfZmluYWxpemVyKG9wKSkgeworICAgICAgICBpZiAoKGRlYnVnICYgREVCVUdfU0FWRUFMTCkgfHwgaGFzX2xlZ2FjeV9maW5hbGl6ZXIob3ApKSB7CiAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChnYXJiYWdlLCBvcCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNzY3LDYgKzc3Niw2MiBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZAorZmluYWxpemVfZ2FyYmFnZShQeUdDX0hlYWQgKmNvbGxlY3RhYmxlLCBQeUdDX0hlYWQgKm9sZCkKK3sKKyAgICBkZXN0cnVjdG9yIGZpbmFsaXplOworICAgIFB5R0NfSGVhZCAqZ2MgPSBjb2xsZWN0YWJsZS0+Z2MuZ2NfbmV4dDsKKworICAgIGZvciAoOyBnYyAhPSBjb2xsZWN0YWJsZTsgZ2MgPSBnYy0+Z2MuZ2NfbmV4dCkgeworICAgICAgICBQeU9iamVjdCAqb3AgPSBGUk9NX0dDKGdjKTsKKworICAgICAgICBpZiAoIV9QeUdDSGVhZF9GSU5BTElaRUQoZ2MpICYmCisgICAgICAgICAgICBQeVR5cGVfSGFzRmVhdHVyZShQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFKSAmJgorICAgICAgICAgICAgKGZpbmFsaXplID0gUHlfVFlQRShvcCktPnRwX2ZpbmFsaXplKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBfUHlHQ0hlYWRfU0VUX0ZJTkFMSVpFRChnYywgMSk7CisgICAgICAgICAgICBQeV9JTkNSRUYob3ApOworICAgICAgICAgICAgZmluYWxpemUob3ApOworICAgICAgICAgICAgaWYgKFB5X1JFRkNOVChvcCkgPT0gMSkgeworICAgICAgICAgICAgICAgIC8qIG9wIHdpbGwgYmUgZGVzdHJveWVkICovCisgICAgICAgICAgICAgICAgZ2MgPSBnYy0+Z2MuZ2NfcHJldjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihvcCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qIFdhbGsgdGhlIGNvbGxlY3RhYmxlIGxpc3QgYW5kIGNoZWNrIHRoYXQgdGhleSBhcmUgcmVhbGx5IHVucmVhY2hhYmxlCisgICBmcm9tIHRoZSBvdXRzaWRlIChzb21lIG9iamVjdHMgY291bGQgaGF2ZSBiZWVuIHJlc3VycmVjdGVkIGJ5IGEKKyAgIGZpbmFsaXplcikuICovCitzdGF0aWMgaW50CitjaGVja19nYXJiYWdlKFB5R0NfSGVhZCAqY29sbGVjdGFibGUpCit7CisgICAgUHlHQ19IZWFkICpnYzsKKyAgICBmb3IgKGdjID0gY29sbGVjdGFibGUtPmdjLmdjX25leHQ7IGdjICE9IGNvbGxlY3RhYmxlOworICAgICAgICAgZ2MgPSBnYy0+Z2MuZ2NfbmV4dCkgeworICAgICAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZ2MsIFB5X1JFRkNOVChGUk9NX0dDKGdjKSkpOworICAgICAgICBhc3NlcnQoX1B5R0NIZWFkX1JFRlMoZ2MpICE9IDApOworICAgIH0KKyAgICBzdWJ0cmFjdF9yZWZzKGNvbGxlY3RhYmxlKTsKKyAgICBmb3IgKGdjID0gY29sbGVjdGFibGUtPmdjLmdjX25leHQ7IGdjICE9IGNvbGxlY3RhYmxlOworICAgICAgICAgZ2MgPSBnYy0+Z2MuZ2NfbmV4dCkgeworICAgICAgICBhc3NlcnQoX1B5R0NIZWFkX1JFRlMoZ2MpID49IDApOworICAgICAgICBpZiAoX1B5R0NIZWFkX1JFRlMoZ2MpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorcmV2aXZlX2dhcmJhZ2UoUHlHQ19IZWFkICpjb2xsZWN0YWJsZSkKK3sKKyAgICBQeUdDX0hlYWQgKmdjOworICAgIGZvciAoZ2MgPSBjb2xsZWN0YWJsZS0+Z2MuZ2NfbmV4dDsgZ2MgIT0gY29sbGVjdGFibGU7CisgICAgICAgICBnYyA9IGdjLT5nYy5nY19uZXh0KSB7CisgICAgICAgIF9QeUdDSGVhZF9TRVRfUkVGUyhnYywgR0NfUkVBQ0hBQkxFKTsKKyAgICB9Cit9CisKIC8qIEJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgYnkgY2xlYXJpbmcgdGhlIGNvbnRhaW5lcnMgaW52b2x2ZWQuICBUaGlzIGlzCiAgKiB0cmlja3kgYnVzaW5lc3MgYXMgdGhlIGxpc3RzIGNhbiBiZSBjaGFuZ2luZyBhbmQgd2UgZG9uJ3Qga25vdyB3aGljaAogICogb2JqZWN0cyBtYXkgYmUgZnJlZWQuICBJdCBpcyBwb3NzaWJsZSBJIHNjcmV3ZWQgc29tZXRoaW5nIHVwIGhlcmUuCkBAIC03ODAsNyArODQ1LDYgQEAKICAgICAgICAgUHlHQ19IZWFkICpnYyA9IGNvbGxlY3RhYmxlLT5nYy5nY19uZXh0OwogICAgICAgICBQeU9iamVjdCAqb3AgPSBGUk9NX0dDKGdjKTsKIAotICAgICAgICBhc3NlcnQoSVNfVEVOVEFUSVZFTFlfVU5SRUFDSEFCTEUob3ApKTsKICAgICAgICAgaWYgKGRlYnVnICYgREVCVUdfU0FWRUFMTCkgewogICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChnYXJiYWdlLCBvcCk7CiAgICAgICAgIH0KQEAgLTc5NCw3ICs4NTgsNyBAQAogICAgICAgICBpZiAoY29sbGVjdGFibGUtPmdjLmdjX25leHQgPT0gZ2MpIHsKICAgICAgICAgICAgIC8qIG9iamVjdCBpcyBzdGlsbCBhbGl2ZSwgbW92ZSBpdCwgaXQgbWF5IGRpZSBsYXRlciAqLwogICAgICAgICAgICAgZ2NfbGlzdF9tb3ZlKGdjLCBvbGQpOwotICAgICAgICAgICAgZ2MtPmdjLmdjX3JlZnMgPSBHQ19SRUFDSEFCTEU7CisgICAgICAgICAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZ2MsIEdDX1JFQUNIQUJMRSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04NDEsNyArOTA1LDggQEAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCiAgKiBjb2xsZWN0aW9uIHByb2Nlc3Mgd29ya3MuICovCiBzdGF0aWMgUHlfc3NpemVfdAotY29sbGVjdChpbnQgZ2VuZXJhdGlvbiwgUHlfc3NpemVfdCAqbl9jb2xsZWN0ZWQsIFB5X3NzaXplX3QgKm5fdW5jb2xsZWN0YWJsZSkKK2NvbGxlY3QoaW50IGdlbmVyYXRpb24sIFB5X3NzaXplX3QgKm5fY29sbGVjdGVkLCBQeV9zc2l6ZV90ICpuX3VuY29sbGVjdGFibGUsCisgICAgICAgIGludCBub2ZhaWwpCiB7CiAgICAgaW50IGk7CiAgICAgUHlfc3NpemVfdCBtID0gMDsgLyogIyBvYmplY3RzIGNvbGxlY3RlZCAqLwpAQCAtODUyLDYgKzkxNyw3IEBACiAgICAgUHlHQ19IZWFkIGZpbmFsaXplcnM7ICAvKiBvYmplY3RzIHdpdGgsICYgcmVhY2hhYmxlIGZyb20sIF9fZGVsX18gKi8KICAgICBQeUdDX0hlYWQgKmdjOwogICAgIGRvdWJsZSB0MSA9IDAuMDsKKyAgICBzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyAqc3RhdHMgPSAmZ2VuZXJhdGlvbl9zdGF0c1tnZW5lcmF0aW9uXTsKIAogICAgIGlmIChkZWJ1ZyAmIERFQlVHX1NUQVRTKSB7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogY29sbGVjdGluZyBnZW5lcmF0aW9uICVkLi4uXG4iLApAQCAtOTE1LDE5ICs5ODEsMTUgQEAKICAgICB9CiAKICAgICAvKiBBbGwgb2JqZWN0cyBpbiB1bnJlYWNoYWJsZSBhcmUgdHJhc2gsIGJ1dCBvYmplY3RzIHJlYWNoYWJsZSBmcm9tCi0gICAgICogZmluYWxpemVycyBjYW4ndCBzYWZlbHkgYmUgZGVsZXRlZC4gIFB5dGhvbiBwcm9ncmFtbWVycyBzaG91bGQgdGFrZQotICAgICAqIGNhcmUgbm90IHRvIGNyZWF0ZSBzdWNoIHRoaW5ncy4gIEZvciBQeXRob24sIGZpbmFsaXplcnMgbWVhbnMKLSAgICAgKiBpbnN0YW5jZSBvYmplY3RzIHdpdGggX19kZWxfXyBtZXRob2RzLiAgV2Vha3JlZnMgd2l0aCBjYWxsYmFja3MKLSAgICAgKiBjYW4gYWxzbyBjYWxsIGFyYml0cmFyeSBQeXRob24gY29kZSBidXQgdGhleSB3aWxsIGJlIGRlYWx0IHdpdGggYnkKLSAgICAgKiBoYW5kbGVfd2Vha3JlZnMoKS4KKyAgICAgKiBsZWdhY3kgZmluYWxpemVycyAoZS5nLiB0cF9kZWwpIGNhbid0IHNhZmVseSBiZSBkZWxldGVkLgogICAgICAqLwogICAgIGdjX2xpc3RfaW5pdCgmZmluYWxpemVycyk7Ci0gICAgbW92ZV9maW5hbGl6ZXJzKCZ1bnJlYWNoYWJsZSwgJmZpbmFsaXplcnMpOwotICAgIC8qIGZpbmFsaXplcnMgY29udGFpbnMgdGhlIHVucmVhY2hhYmxlIG9iamVjdHMgd2l0aCBhIGZpbmFsaXplcjsKKyAgICBtb3ZlX2xlZ2FjeV9maW5hbGl6ZXJzKCZ1bnJlYWNoYWJsZSwgJmZpbmFsaXplcnMpOworICAgIC8qIGZpbmFsaXplcnMgY29udGFpbnMgdGhlIHVucmVhY2hhYmxlIG9iamVjdHMgd2l0aCBhIGxlZ2FjeSBmaW5hbGl6ZXI7CiAgICAgICogdW5yZWFjaGFibGUgb2JqZWN0cyByZWFjaGFibGUgKmZyb20qIHRob3NlIGFyZSBhbHNvIHVuY29sbGVjdGFibGUsCiAgICAgICogYW5kIHdlIG1vdmUgdGhvc2UgaW50byB0aGUgZmluYWxpemVycyBsaXN0IHRvby4KICAgICAgKi8KLSAgICBtb3ZlX2ZpbmFsaXplcl9yZWFjaGFibGUoJmZpbmFsaXplcnMpOworICAgIG1vdmVfbGVnYWN5X2ZpbmFsaXplcl9yZWFjaGFibGUoJmZpbmFsaXplcnMpOwogCiAgICAgLyogQ29sbGVjdCBzdGF0aXN0aWNzIG9uIGNvbGxlY3RhYmxlIG9iamVjdHMgZm91bmQgYW5kIHByaW50CiAgICAgICogZGVidWdnaW5nIGluZm9ybWF0aW9uLgpAQCAtOTQzLDExICsxMDA1LDIwIEBACiAgICAgLyogQ2xlYXIgd2Vha3JlZnMgYW5kIGludm9rZSBjYWxsYmFja3MgYXMgbmVjZXNzYXJ5LiAqLwogICAgIG0gKz0gaGFuZGxlX3dlYWtyZWZzKCZ1bnJlYWNoYWJsZSwgb2xkKTsKIAotICAgIC8qIENhbGwgdHBfY2xlYXIgb24gb2JqZWN0cyBpbiB0aGUgdW5yZWFjaGFibGUgc2V0LiAgVGhpcyB3aWxsIGNhdXNlCi0gICAgICogdGhlIHJlZmVyZW5jZSBjeWNsZXMgdG8gYmUgYnJva2VuLiAgSXQgbWF5IGFsc28gY2F1c2Ugc29tZSBvYmplY3RzCi0gICAgICogaW4gZmluYWxpemVycyB0byBiZSBmcmVlZC4KLSAgICAgKi8KLSAgICBkZWxldGVfZ2FyYmFnZSgmdW5yZWFjaGFibGUsIG9sZCk7CisgICAgLyogQ2FsbCB0cF9maW5hbGl6ZSBvbiBvYmplY3RzIHdoaWNoIGhhdmUgb25lLiAqLworICAgIGZpbmFsaXplX2dhcmJhZ2UoJnVucmVhY2hhYmxlLCBvbGQpOworCisgICAgaWYgKGNoZWNrX2dhcmJhZ2UoJnVucmVhY2hhYmxlKSkgeworICAgICAgICByZXZpdmVfZ2FyYmFnZSgmdW5yZWFjaGFibGUpOworICAgICAgICBnY19saXN0X21lcmdlKCZ1bnJlYWNoYWJsZSwgb2xkKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIENhbGwgdHBfY2xlYXIgb24gb2JqZWN0cyBpbiB0aGUgdW5yZWFjaGFibGUgc2V0LiAgVGhpcyB3aWxsIGNhdXNlCisgICAgICAgICAqIHRoZSByZWZlcmVuY2UgY3ljbGVzIHRvIGJlIGJyb2tlbi4gIEl0IG1heSBhbHNvIGNhdXNlIHNvbWUgb2JqZWN0cworICAgICAgICAgKiBpbiBmaW5hbGl6ZXJzIHRvIGJlIGZyZWVkLgorICAgICAgICAgKi8KKyAgICAgICAgZGVsZXRlX2dhcmJhZ2UoJnVucmVhY2hhYmxlLCBvbGQpOworICAgIH0KIAogICAgIC8qIENvbGxlY3Qgc3RhdGlzdGljcyBvbiB1bmNvbGxlY3RhYmxlIG9iamVjdHMgZm91bmQgYW5kIHByaW50CiAgICAgICogZGVidWdnaW5nIGluZm9ybWF0aW9uLiAqLwpAQCAtOTc4LDcgKzEwNDksNyBAQAogICAgICAqIHJlYWNoYWJsZSBsaXN0IG9mIGdhcmJhZ2UuICBUaGUgcHJvZ3JhbW1lciBoYXMgdG8gZGVhbCB3aXRoCiAgICAgICogdGhpcyBpZiB0aGV5IGluc2lzdCBvbiBjcmVhdGluZyB0aGlzIHR5cGUgb2Ygc3RydWN0dXJlLgogICAgICAqLwotICAgICh2b2lkKWhhbmRsZV9maW5hbGl6ZXJzKCZmaW5hbGl6ZXJzLCBvbGQpOworICAgICh2b2lkKWhhbmRsZV9sZWdhY3lfZmluYWxpemVycygmZmluYWxpemVycywgb2xkKTsKIAogICAgIC8qIENsZWFyIGZyZWUgbGlzdCBvbmx5IGR1cmluZyB0aGUgY29sbGVjdGlvbiBvZiB0aGUgaGlnaGVzdAogICAgICAqIGdlbmVyYXRpb24gKi8KQEAgLTk4NywxNiArMTA1OCwyNSBAQAogICAgIH0KIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmIChnY19zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIGdjX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJnYXJiYWdlIGNvbGxlY3Rpb24iKTsKLSAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGdjX3N0cik7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInVuZXhwZWN0ZWQgZXhjZXB0aW9uIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24iKTsKKyAgICAgICAgaWYgKG5vZmFpbCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChnY19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnY19zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZ2FyYmFnZSBjb2xsZWN0aW9uIik7CisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZ2Nfc3RyKTsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoInVuZXhwZWN0ZWQgZXhjZXB0aW9uIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24iKTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIC8qIFVwZGF0ZSBzdGF0cyAqLwogICAgIGlmIChuX2NvbGxlY3RlZCkKICAgICAgICAgKm5fY29sbGVjdGVkID0gbTsKICAgICBpZiAobl91bmNvbGxlY3RhYmxlKQogICAgICAgICAqbl91bmNvbGxlY3RhYmxlID0gbjsKKyAgICBzdGF0cy0+Y29sbGVjdGlvbnMrKzsKKyAgICBzdGF0cy0+Y29sbGVjdGVkICs9IG07CisgICAgc3RhdHMtPnVuY29sbGVjdGFibGUgKz0gbjsKICAgICByZXR1cm4gbittOwogfQogCkBAIC0xMDQ1LDcgKzExMjUsNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzdWx0LCBjb2xsZWN0ZWQsIHVuY29sbGVjdGFibGU7CiAgICAgaW52b2tlX2djX2NhbGxiYWNrKCJzdGFydCIsIGdlbmVyYXRpb24sIDAsIDApOwotICAgIHJlc3VsdCA9IGNvbGxlY3QoZ2VuZXJhdGlvbiwgJmNvbGxlY3RlZCwgJnVuY29sbGVjdGFibGUpOworICAgIHJlc3VsdCA9IGNvbGxlY3QoZ2VuZXJhdGlvbiwgJmNvbGxlY3RlZCwgJnVuY29sbGVjdGFibGUsIDApOwogICAgIGludm9rZV9nY19jYWxsYmFjaygic3RvcCIsIGdlbmVyYXRpb24sIGNvbGxlY3RlZCwgdW5jb2xsZWN0YWJsZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzNDMsNiArMTQyMyw1MiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1B5RG9jX1NUUlZBUihnY19nZXRfc3RhdHNfX2RvY19fLAorImdldF9zdGF0cygpIC0+IFsuLi5dXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgY29udGFpbmluZyBwZXItZ2VuZXJhdGlvbiBzdGF0aXN0aWNzLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitnY19nZXRfc3RhdHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyBzdGF0c1tOVU1fR0VORVJBVElPTlNdLCAqc3Q7CisKKyAgICAvKiBUbyBnZXQgY29uc2lzdGVudCB2YWx1ZXMgZGVzcGl0ZSBhbGxvY2F0aW9ucyB3aGlsZSBjb25zdHJ1Y3RpbmcKKyAgICAgICB0aGUgcmVzdWx0IGxpc3QsIHdlIHVzZSBhIHNuYXBzaG90IG9mIHRoZSBydW5uaW5nIHN0YXRzLiAqLworICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fR0VORVJBVElPTlM7IGkrKykgeworICAgICAgICBzdGF0c1tpXSA9IGdlbmVyYXRpb25fc3RhdHNbaV07CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IE5VTV9HRU5FUkFUSU9OUzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpkaWN0OworICAgICAgICBzdCA9ICZzdGF0c1tpXTsKKyAgICAgICAgZGljdCA9IFB5X0J1aWxkVmFsdWUoIntzbnNuc259IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbGxlY3Rpb25zIiwgc3QtPmNvbGxlY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29sbGVjdGVkIiwgc3QtPmNvbGxlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY29sbGVjdGFibGUiLCBzdC0+dW5jb2xsZWN0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChyZXN1bHQsIGRpY3QpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCisKIFB5RG9jX1NUUlZBUihnY19pc190cmFja2VkX19kb2NfXywKICJpc190cmFja2VkKG9iaikgLT4gYm9vbFxuIgogIlxuIgpAQCAtMTM5Myw2ICsxNTE5LDcgQEAKICAgICB7ImNvbGxlY3QiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilnY19jb2xsZWN0LAogICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAgICAgICAgICAgZ2NfY29sbGVjdF9fZG9jX199LAogICAgIHsiZ2V0X29iamVjdHMiLCAgICBnY19nZXRfb2JqZWN0cyxNRVRIX05PQVJHUywgIGdjX2dldF9vYmplY3RzX19kb2NfX30sCisgICAgeyJnZXRfc3RhdHMiLCAgICAgIGdjX2dldF9zdGF0cywgTUVUSF9OT0FSR1MsIGdjX2dldF9zdGF0c19fZG9jX199LAogICAgIHsiaXNfdHJhY2tlZCIsICAgICBnY19pc190cmFja2VkLCBNRVRIX08sICAgICAgIGdjX2lzX3RyYWNrZWRfX2RvY19ffSwKICAgICB7ImdldF9yZWZlcnJlcnMiLCAgZ2NfZ2V0X3JlZmVycmVycywgTUVUSF9WQVJBUkdTLAogICAgICAgICBnY19nZXRfcmVmZXJyZXJzX19kb2NfX30sCkBAIC0xNDgwLDggKzE2MDcsMjIgQEAKICAgICByZXR1cm4gbjsKIH0KIAorUHlfc3NpemVfdAorX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKQoreworICAgIFB5X3NzaXplX3QgbjsKKworICAgIC8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIGludGVycHJldGVyIHNodXRkb3duLCBhbmQKKyAgICAgICB0aGVyZWZvcmUgbm90IHJlY3Vyc2l2ZWx5LiAqLworICAgIGFzc2VydCghY29sbGVjdGluZyk7CisgICAgY29sbGVjdGluZyA9IDE7CisgICAgbiA9IGNvbGxlY3QoTlVNX0dFTkVSQVRJT05TIC0gMSwgTlVMTCwgTlVMTCwgMSk7CisgICAgY29sbGVjdGluZyA9IDA7CisgICAgcmV0dXJuIG47Cit9CisKIHZvaWQKLV9QeUdDX0Zpbmkodm9pZCkKK19QeUdDX0R1bXBTaHV0ZG93blN0YXRzKHZvaWQpCiB7CiAgICAgaWYgKCEoZGVidWcgJiBERUJVR19TQVZFQUxMKQogICAgICAgICAmJiBnYXJiYWdlICE9IE5VTEwgJiYgUHlMaXN0X0dFVF9TSVpFKGdhcmJhZ2UpID4gMCkgewpAQCAtMTQ5Miw4ICsxNjMzLDEyIEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1lc3NhZ2UgPSAiZ2M6ICV6ZCB1bmNvbGxlY3RhYmxlIG9iamVjdHMgYXQgIiBcCiAgICAgICAgICAgICAgICAgInNodXRkb3duOyB1c2UgZ2Muc2V0X2RlYnVnKGdjLkRFQlVHX1VOQ09MTEVDVEFCTEUpIHRvIGxpc3QgdGhlbSI7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMCwgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9TSVpFKGdhcmJhZ2UpKSA8IDApCisgICAgICAgIC8qIFB5RXJyX1dhcm5Gb3JtYXQgZG9lcyB0b28gbWFueSB0aGluZ3MgYW5kIHdlIGFyZSBhdCBzaHV0ZG93biwKKyAgICAgICAgICAgdGhlIHdhcm5pbmdzIG1vZHVsZSdzIGRlcGVuZGVuY2llcyAoZS5nLiBsaW5lY2FjaGUpIG1heSBiZSBnb25lCisgICAgICAgICAgIGFscmVhZHkuICovCisgICAgICAgIGlmIChQeUVycl9XYXJuRXhwbGljaXRGb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAiZ2MiLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnYyIsIE5VTEwsIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9TSVpFKGdhcmJhZ2UpKSkKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShOVUxMKTsKICAgICAgICAgaWYgKGRlYnVnICYgREVCVUdfVU5DT0xMRUNUQUJMRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnJlcHIgPSBOVUxMLCAqYnl0ZXMgPSBOVUxMOwpAQCAtMTUwMiw3ICsxNjQ3LDcgQEAKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZ2FyYmFnZSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAgICAgIiAgICAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIiAgICAgICVzXG4iLAogICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcykKICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIH0KQEAgLTE1MTAsNyArMTY1NSwxMyBAQAogICAgICAgICAgICAgUHlfWERFQ1JFRihieXRlcyk7CiAgICAgICAgIH0KICAgICB9Cit9CisKK3ZvaWQKK19QeUdDX0Zpbmkodm9pZCkKK3sKICAgICBQeV9DTEVBUihjYWxsYmFja3MpOworICAgIFB5X0NMRUFSKHRtb2QpOwogfQogCiAvKiBmb3IgZGVidWdnaW5nICovCkBAIC0xNTY5LDcgKzE3MjAsOCBAQAogICAgICAgICBzaXplb2YoUHlHQ19IZWFkKSArIGJhc2ljc2l6ZSk7CiAgICAgaWYgKGcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgZy0+Z2MuZ2NfcmVmcyA9IEdDX1VOVFJBQ0tFRDsKKyAgICBnLT5nYy5nY19yZWZzID0gMDsKKyAgICBfUHlHQ0hlYWRfU0VUX1JFRlMoZywgR0NfVU5UUkFDS0VEKTsKICAgICBnZW5lcmF0aW9uc1swXS5jb3VudCsrOyAvKiBudW1iZXIgb2YgYWxsb2NhdGVkIEdDIG9iamVjdHMgKi8KICAgICBpZiAoZ2VuZXJhdGlvbnNbMF0uY291bnQgPiBnZW5lcmF0aW9uc1swXS50aHJlc2hvbGQgJiYKICAgICAgICAgZW5hYmxlZCAmJgpAQCAtMTU5Niw4ICsxNzQ4LDE1IEBACiBQeVZhck9iamVjdCAqCiBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqdHAsIFB5X3NzaXplX3Qgbml0ZW1zKQogewotICAgIGNvbnN0IHNpemVfdCBzaXplID0gX1B5T2JqZWN0X1ZBUl9TSVpFKHRwLCBuaXRlbXMpOwotICAgIFB5VmFyT2JqZWN0ICpvcCA9IChQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemUpOworICAgIHNpemVfdCBzaXplOworICAgIFB5VmFyT2JqZWN0ICpvcDsKKworICAgIGlmIChuaXRlbXMgPCAwKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2l6ZSA9IF9QeU9iamVjdF9WQVJfU0laRSh0cCwgbml0ZW1zKTsKKyAgICBvcCA9IChQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemUpOwogICAgIGlmIChvcCAhPSBOVUxMKQogICAgICAgICBvcCA9IFB5T2JqZWN0X0lOSVRfVkFSKG9wLCB0cCwgbml0ZW1zKTsKICAgICByZXR1cm4gb3A7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldHBhdGguYyBiL01vZHVsZXMvZ2V0cGF0aC5jCmluZGV4IGZmMTRmZGQuLjFhNDMxNTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCisrKyBiL01vZHVsZXMvZ2V0cGF0aC5jCkBAIC0zNDYsNyArMzQ2LDcgQEAKICAgICAgICAgICAgIHdjc25jcHkocHJlZml4LCBhcmd2MF9wYXRoLCBNQVhQQVRITEVOKTsKICAgICAgICAgICAgIHByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwogICAgICAgICAgICAgam9pbnBhdGgocHJlZml4LCB2cGF0aCk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHZwYXRoKTsKKyAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodnBhdGgpOwogICAgICAgICAgICAgam9pbnBhdGgocHJlZml4LCBMIkxpYiIpOwogICAgICAgICAgICAgam9pbnBhdGgocHJlZml4LCBMQU5ETUFSSyk7CiAgICAgICAgICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkKQEAgLTU2Miw4ICs1NjIsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHByb2dwYXRoWzBdID0gJ1wwJzsKLSAgICBpZiAocGF0aF9idWZmZXIgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShwYXRoX2J1ZmZlcik7CisgICAgUHlNZW1fUmF3RnJlZShwYXRoX2J1ZmZlcik7CiAgICAgaWYgKHByb2dwYXRoWzBdICE9IFNFUCAmJiBwcm9ncGF0aFswXSAhPSAnXDAnKQogICAgICAgICBhYnNvbHV0aXplKHByb2dwYXRoKTsKICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHByb2dwYXRoLCBNQVhQQVRITEVOKTsKQEAgLTYwNSw3ICs2MDQsNyBAQAogICAgICAgICAgICAgLyogVXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeSBhcyB0aGUgcHJvZ3BhdGggKi8KICAgICAgICAgICAgIHdjc25jcHkoYXJndjBfcGF0aCwgd2J1ZiwgTUFYUEFUSExFTik7CiAgICAgICAgIH0KLSAgICAgICAgUHlNZW1fRnJlZSh3YnVmKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzA3LDEzICs3MDYsMTEgQEAKICAgICAgKi8KICAgICBidWZzeiA9IDA7CiAKLSAgICBpZiAoX3J0cHlwYXRoKSB7CisgICAgaWYgKF9ydHB5cGF0aCAmJiBfcnRweXBhdGhbMF0gIT0gJ1wwJykgewogICAgICAgICBzaXplX3QgcnRweXBhdGhfbGVuOwogICAgICAgICBydHB5cGF0aCA9IF9QeV9jaGFyMndjaGFyKF9ydHB5cGF0aCwgJnJ0cHlwYXRoX2xlbik7CiAgICAgICAgIGlmIChydHB5cGF0aCAhPSBOVUxMKQogICAgICAgICAgICAgYnVmc3ogKz0gcnRweXBhdGhfbGVuICsgMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgX3J0cHlwYXRoID0gTlVMTDsKICAgICB9CiAKICAgICBkZWZwYXRoID0gX3B5dGhvbnBhdGg7CkBAIC04MTgsMTEgKzgxNSwxMCBAQAogICAgIGVsc2UKICAgICAgICAgd2NzbmNweShleGVjX3ByZWZpeCwgX2V4ZWNfcHJlZml4LCBNQVhQQVRITEVOKTsKIAotICAgIFB5TWVtX0ZyZWUoX3B5dGhvbnBhdGgpOwotICAgIFB5TWVtX0ZyZWUoX3ByZWZpeCk7Ci0gICAgUHlNZW1fRnJlZShfZXhlY19wcmVmaXgpOwotICAgIGlmIChydHB5cGF0aCAhPSBOVUxMKQotICAgICAgICBQeU1lbV9GcmVlKHJ0cHlwYXRoKTsKKyAgICBQeU1lbV9SYXdGcmVlKF9weXRob25wYXRoKTsKKyAgICBQeU1lbV9SYXdGcmVlKF9wcmVmaXgpOworICAgIFB5TWVtX1Jhd0ZyZWUoX2V4ZWNfcHJlZml4KTsKKyAgICBQeU1lbV9SYXdGcmVlKHJ0cHlwYXRoKTsKIH0KIAogCkBAIC04MzIsNyArODI4LDcgQEAKIHsKICAgICBpZiAobW9kdWxlX3NlYXJjaF9wYXRoICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG1vZHVsZV9zZWFyY2hfcGF0aF9tYWxsb2NlZCkKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUobW9kdWxlX3NlYXJjaF9wYXRoKTsKKyAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobW9kdWxlX3NlYXJjaF9wYXRoKTsKICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoX21hbGxvY2VkID0gMDsKICAgICB9CkBAIC04NDEsNyArODM3LDcgQEAKICAgICAgICAgd2NoYXJfdCAqcHJvZyA9IFB5X0dldFByb2dyYW1OYW1lKCk7CiAgICAgICAgIHdjc25jcHkocHJvZ3BhdGgsIHByb2csIE1BWFBBVEhMRU4pOwogICAgICAgICBleGVjX3ByZWZpeFswXSA9IHByZWZpeFswXSA9IEwnXDAnOwotICAgICAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBQeU1lbV9NYWxsb2MoKHdjc2xlbihwYXRoKSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gUHlNZW1fUmF3TWFsbG9jKCh3Y3NsZW4ocGF0aCkgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aF9tYWxsb2NlZCA9IDE7CiAgICAgICAgIGlmIChtb2R1bGVfc2VhcmNoX3BhdGggIT0gTlVMTCkKICAgICAgICAgICAgIHdjc2NweShtb2R1bGVfc2VhcmNoX3BhdGgsIHBhdGgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggMDQyY2YwNS4uYTg1YTI3MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC0yMTAsOSArMjEwLDE0IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlN0cnVjdEdycFR5cGUsICZzdHJ1Y3RfZ3JvdXBfdHlwZV9kZXNjKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAic3RydWN0X2dyb3VwIiwgKFB5T2JqZWN0ICopICZTdHJ1Y3RHcnBUeXBlKTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0R3JwVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfZ3JvdXBfdHlwZV9kZXNjKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJzdHJ1Y3RfZ3JvdXAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmU3RydWN0R3JwVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2hsaWIuaCBiL01vZHVsZXMvaGFzaGxpYi5oCmluZGV4IDQ1OTkxNDYuLjUxYzY4ZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaGxpYi5oCisrKyBiL01vZHVsZXMvaGFzaGxpYi5oCkBAIC0yNiwzICsyNiwzNiBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKICAgICAgICAgfSBcCiAgICAgfSB3aGlsZSgwKTsKKworLyoKKyAqIEhlbHBlciBjb2RlIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byB0aGUgaGFzaCBvYmplY3Qgd2hlbiB0aGUgR0lMIGlzCisgKiByZWxlYXNlZCBhcm91bmQgYSBDUFUgY29uc3VtaW5nIGhhc2hsaWIgb3BlcmF0aW9uLiBBbGwgY29kZSBwYXRocyB0aGF0CisgKiBhY2Nlc3MgYSBtdXRhYmxlIHBhcnQgb2Ygb2JqIG11c3QgYmUgZW5jbG9zZWQgaW4gYSBFTlRFUl9IQVNITElCIC8KKyAqIExFQVZFX0hBU0hMSUIgYmxvY2sgb3IgZXhwbGljaXRseSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSBsb2NrIGluc2lkZQorICogYSBQWV9CRUdJTiAvIEVORF9BTExPV19USFJFQURTIGJsb2NrIGlmIHRoZXkgd2lzaCB0byByZWxlYXNlIHRoZSBHSUwgZm9yCisgKiBhbiBvcGVyYXRpb24uCisgKi8KKworI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyAgICAjZGVmaW5lIEVOVEVSX0hBU0hMSUIob2JqKSBcCisgICAgICAgIGlmICgob2JqKS0+bG9jaykgeyBcCisgICAgICAgICAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXAorICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAorICAgICAgICAgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKKyAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfQorICAgICNkZWZpbmUgTEVBVkVfSEFTSExJQihvYmopIFwKKyAgICAgICAgaWYgKChvYmopLT5sb2NrKSB7IFwKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jaygob2JqKS0+bG9jayk7IFwKKyAgICAgICAgfQorI2Vsc2UKKyAgICAjZGVmaW5lIEVOVEVSX0hBU0hMSUIob2JqKQorICAgICNkZWZpbmUgTEVBVkVfSEFTSExJQihvYmopCisjZW5kaWYKKworLyogVE9ETyhncHMpOiBXZSBzaG91bGQgcHJvYmFibHkgbWFrZSB0aGlzIGEgbW9kdWxlIG9yIEVWUG9iamVjdCBhdHRyaWJ1dGUKKyAqIHRvIGFsbG93IHRoZSB1c2VyIHRvIG9wdGltaXplIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybSB0aGV5J3JlIHVzaW5nLiAqLworI2RlZmluZSBIQVNITElCX0dJTF9NSU5TSVpFIDIwNDgKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWluLmMgYi9Nb2R1bGVzL21haW4uYwppbmRleCAzY2ZjOWMzLi4yNTE5MGI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21haW4uYworKysgYi9Nb2R1bGVzL21haW4uYwpAQCAtMjIsMTUgKzIyLDExIEBACiAjaW5jbHVkZSA8Y3J0ZGJnLmg+CiAjZW5kaWYKIAotI2lmIChkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAjZGVmaW5lIFBZVEhPTkhPTUVIRUxQICI8cHJlZml4PlxcbGliIgogI2Vsc2UKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQotI2RlZmluZSBQWVRIT05IT01FSEVMUCAiPHByZWZpeD4vTGliIgotI2Vsc2UKICNkZWZpbmUgUFlUSE9OSE9NRUhFTFAgIjxwcmVmaXg+L3B5dGhvblguWCIKICNlbmRpZgotI2VuZGlmCiAKICNpbmNsdWRlICJweWdldG9wdC5oIgogCkBAIC00Nyw3ICs0Myw3IEBACiBzdGF0aWMgaW50ICBvcmlnX2FyZ2M7CiAKIC8qIGNvbW1hbmQgbGluZSBvcHRpb25zICovCi0jZGVmaW5lIEJBU0VfT1BUUyBMImJCYzpkRWhpSm06T3FSc1N0dXZWVzp4WDo/IgorI2RlZmluZSBCQVNFX09QVFMgTCJiQmM6ZEVoaUlKbTpPcVJzU3R1dlZXOnhYOj8iCiAKICNkZWZpbmUgUFJPR1JBTV9PUFRTIEJBU0VfT1BUUwogCkBAIC02OSw2ICs2NSw3IEBACiBzdGF0aWMgY2hhciAqdXNhZ2VfMiA9ICJcCiAtaSAgICAgOiBpbnNwZWN0IGludGVyYWN0aXZlbHkgYWZ0ZXIgcnVubmluZyBzY3JpcHQ7IGZvcmNlcyBhIHByb21wdCBldmVuXG5cCiAgICAgICAgICBpZiBzdGRpbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB0ZXJtaW5hbDsgYWxzbyBQWVRIT05JTlNQRUNUPXhcblwKKy1JICAgICA6IGlzb2xhdGUgUHl0aG9uIGZyb20gdGhlIHVzZXIncyBlbnZpcm9ubWVudCAoaW1wbGllcyAtRSBhbmQgLXMpXG5cCiAtbSBtb2QgOiBydW4gbGlicmFyeSBtb2R1bGUgYXMgYSBzY3JpcHQgKHRlcm1pbmF0ZXMgb3B0aW9uIGxpc3QpXG5cCiAtTyAgICAgOiBvcHRpbWl6ZSBnZW5lcmF0ZWQgYnl0ZWNvZGUgc2xpZ2h0bHk7IGFsc28gUFlUSE9OT1BUSU1JWkU9eFxuXAogLU9PICAgIDogcmVtb3ZlIGRvYy1zdHJpbmdzIGluIGFkZGl0aW9uIHRvIHRoZSAtTyBvcHRpbWl6YXRpb25zXG5cCkBAIC0xNjUsNiArMTYyLDMyIEBACiAgICAgfQogfQogCitzdGF0aWMgdm9pZCBSdW5JbnRlcmFjdGl2ZUhvb2sodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqc3lzLCAqaG9vaywgKnJlc3VsdDsKKyAgICBzeXMgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInN5cyIpOworICAgIGlmIChzeXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBob29rID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIik7CisgICAgUHlfREVDUkVGKHN5cyk7CisgICAgaWYgKGhvb2sgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChob29rLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGhvb2spOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuOworCitlcnJvcjoKKyAgICBQeVN5c19Xcml0ZVN0ZGVycigiRmFpbGVkIGNhbGxpbmcgc3lzLl9faW50ZXJhY3RpdmVob29rX19cbiIpOworICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlFcnJfQ2xlYXIoKTsKK30KKwogCiBzdGF0aWMgaW50IFJ1bk1vZHVsZSh3Y2hhcl90ICptb2RuYW1lLCBpbnQgc2V0X2FyZ3YwKQogewpAQCAtMTcyLDE3ICsxOTUsMjAgQEAKICAgICBydW5weSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgicnVucHkiKTsKICAgICBpZiAocnVucHkgPT0gTlVMTCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBpbXBvcnQgcnVucHkgbW9kdWxlXG4iKTsKKyAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBydW5tb2R1bGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHJ1bnB5LCAiX3J1bl9tb2R1bGVfYXNfbWFpbiIpOwogICAgIGlmIChydW5tb2R1bGUgPT0gTlVMTCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBhY2Nlc3MgcnVucHkuX3J1bl9tb2R1bGVfYXNfbWFpblxuIik7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CiAgICAgICAgIFB5X0RFQ1JFRihydW5weSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbW9kdWxlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihtb2RuYW1lLCB3Y3NsZW4obW9kbmFtZSkpOwogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBjb252ZXJ0IG1vZHVsZSBuYW1lIHRvIHVuaWNvZGVcbiIpOworICAgICAgICBQeUVycl9QcmludCgpOwogICAgICAgICBQeV9ERUNSRUYocnVucHkpOwogICAgICAgICBQeV9ERUNSRUYocnVubW9kdWxlKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTkxLDYgKzIxNyw3IEBACiAgICAgaWYgKHJ1bmFyZ3MgPT0gTlVMTCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICJDb3VsZCBub3QgY3JlYXRlIGFyZ3VtZW50cyBmb3IgcnVucHkuX3J1bl9tb2R1bGVfYXNfbWFpblxuIik7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CiAgICAgICAgIFB5X0RFQ1JFRihydW5weSk7CiAgICAgICAgIFB5X0RFQ1JFRihydW5tb2R1bGUpOwogICAgICAgICBQeV9ERUNSRUYobW9kdWxlKTsKQEAgLTIzNSw4ICsyNjIsMTAgQEAKICAgICAvKiBhcmd2MCBpcyB1c2FibGUgYXMgYW4gaW1wb3J0IHNvdXJjZSwgc28gcHV0IGl0IGluIHN5cy5wYXRoWzBdCiAgICAgICAgYW5kIGltcG9ydCBfX21haW5fXyAqLwogICAgIHN5c19wYXRoID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoIik7Ci0gICAgaWYgKHN5c19wYXRoID09IE5VTEwpCisgICAgaWYgKHN5c19wYXRoID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLnBhdGgiKTsKICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAgICAgaWYgKFB5TGlzdF9TZXRJdGVtKHN5c19wYXRoLCAwLCBhcmd2MCkpIHsKICAgICAgICAgYXJndjAgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMzY2LDcgKzM5NSw3IEBACiAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGludGVycHJldC4gKi8KIAogICAgICAgICAgICAgbGVuID0gd2NzbGVuKF9QeU9TX29wdGFyZykgKyAxICsgMTsKLSAgICAgICAgICAgIGNvbW1hbmQgPSAod2NoYXJfdCAqKW1hbGxvYyhzaXplb2Yod2NoYXJfdCkgKiBsZW4pOworICAgICAgICAgICAgY29tbWFuZCA9ICh3Y2hhcl90ICopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIGxlbik7CiAgICAgICAgICAgICBpZiAoY29tbWFuZCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgLWMgYXJndW1lbnQiKTsKQEAgLTM5OCw2ICs0MjcsMTIgQEAKICAgICAgICAgICAgIFB5X0ludGVyYWN0aXZlRmxhZysrOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSAnSSc6CisgICAgICAgICAgICBQeV9Jc29sYXRlZEZsYWcrKzsKKyAgICAgICAgICAgIFB5X05vVXNlclNpdGVEaXJlY3RvcnkrKzsKKyAgICAgICAgICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZysrOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgLyogY2FzZSAnSic6IHJlc2VydmVkIGZvciBKeXRob24gKi8KIAogICAgICAgICBjYXNlICdPJzoKQEAgLTQ3NSw3ICs1MTAsNyBAQAogICAgICAgICByZXR1cm4gdXNhZ2UoMCwgYXJndlswXSk7CiAKICAgICBpZiAodmVyc2lvbikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlB5dGhvbiAlc1xuIiwgUFlfVkVSU0lPTik7CisgICAgICAgIHByaW50ZigiUHl0aG9uICVzXG4iLCBQWV9WRVJTSU9OKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC00OTUsNyArNTMwLDcgQEAKICAgICAgICAgKndwICE9IEwnXDAnKSB7CiAgICAgICAgIHdjaGFyX3QgKmJ1ZiwgKndhcm5pbmc7CiAKLSAgICAgICAgYnVmID0gKHdjaGFyX3QgKiltYWxsb2MoKHdjc2xlbih3cCkgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fUmF3TWFsbG9jKCh3Y3NsZW4od3ApICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9OV0FSTklOR1MiKTsKQEAgLTUwNSw3ICs1NDAsNyBAQAogICAgICAgICAgICAgIHdhcm5pbmcgPSB3Y3N0b2soTlVMTCwgTCIsIikpIHsKICAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb24od2FybmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZShidWYpOworICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgfQogI2Vsc2UKICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTldBUk5JTkdTIikpICYmICpwICE9ICdcMCcpIHsKQEAgLTUxNCwxMiArNTQ5LDEyIEBACiAKICAgICAgICAgLyogc2V0dGxlIGZvciBzdHJ0b2sgaGVyZSBhcyB0aGVyZSdzIG5vIG9uZSBzdGFuZGFyZAogICAgICAgICAgICBDODkgd2NzdG9rICovCi0gICAgICAgIGJ1ZiA9IChjaGFyICopbWFsbG9jKHN0cmxlbihwKSArIDEpOworICAgICAgICBidWYgPSAoY2hhciAqKVB5TWVtX1Jhd01hbGxvYyhzdHJsZW4ocCkgKyAxKTsKICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSB0byBjb3B5IFBZVEhPTldBUk5JTkdTIik7CiAgICAgICAgIHN0cmNweShidWYsIHApOwotICAgICAgICBvbGRsb2MgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOworICAgICAgICBvbGRsb2MgPSBfUHlNZW1fUmF3U3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKICAgICAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwogICAgICAgICBmb3IgKHAgPSBzdHJ0b2soYnVmLCAiLCIpOyBwICE9IE5VTEw7IHAgPSBzdHJ0b2soTlVMTCwgIiwiKSkgewogI2lmZGVmIF9fQVBQTEVfXwpAQCAtNTM3LDggKzU3Miw4IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgICAgIH0KICAgICAgICAgc2V0bG9jYWxlKExDX0FMTCwgb2xkbG9jKTsKLSAgICAgICAgZnJlZShvbGRsb2MpOwotICAgICAgICBmcmVlKGJ1Zik7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUob2xkbG9jKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgIH0KICNlbmRpZgogCkBAIC02MDgsNyArNjQzLDcgQEAKICAgICAgICAgd2NoYXJfdCogYnVmZmVyOwogICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKHApICsgMTsKIAotICAgICAgICBidWZmZXIgPSBtYWxsb2MobGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgYnVmZmVyID0gUHlNZW1fUmF3TWFsbG9jKGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeSB0byBjb3B5IFBZVEhPTkVYRUNVVEFCTEUiKTsKQEAgLTY4Miw3ICs3MTcsNyBAQAogCiAgICAgaWYgKGNvbW1hbmQpIHsKICAgICAgICAgc3RzID0gcnVuX2NvbW1hbmQoY29tbWFuZCwgJmNmKTsKLSAgICAgICAgZnJlZShjb21tYW5kKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShjb21tYW5kKTsKICAgICB9IGVsc2UgaWYgKG1vZHVsZSkgewogICAgICAgICBzdHMgPSAoUnVuTW9kdWxlKG1vZHVsZSwgMSkgIT0gMCk7CiAgICAgfQpAQCAtNjkxLDYgKzcyNiw3IEBACiAgICAgICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMICYmIHN0ZGluX2lzX2ludGVyYWN0aXZlKSB7CiAgICAgICAgICAgICBQeV9JbnNwZWN0RmxhZyA9IDA7IC8qIGRvIGV4aXQgb24gU3lzdGVtRXhpdCAqLwogICAgICAgICAgICAgUnVuU3RhcnR1cEZpbGUoJmNmKTsKKyAgICAgICAgICAgIFJ1bkludGVyYWN0aXZlSG9vaygpOwogICAgICAgICB9CiAgICAgICAgIC8qIFhYWCAqLwogCkBAIC03NTYsNiArNzkyLDcgQEAKICAgICBpZiAoUHlfSW5zcGVjdEZsYWcgJiYgc3RkaW5faXNfaW50ZXJhY3RpdmUgJiYKICAgICAgICAgKGZpbGVuYW1lICE9IE5VTEwgfHwgY29tbWFuZCAhPSBOVUxMIHx8IG1vZHVsZSAhPSBOVUxMKSkgewogICAgICAgICBQeV9JbnNwZWN0RmxhZyA9IDA7CisgICAgICAgIFJ1bkludGVyYWN0aXZlSG9vaygpOwogICAgICAgICAvKiBYWFggKi8KICAgICAgICAgc3RzID0gUHlSdW5fQW55RmlsZUZsYWdzKHN0ZGluLCAiPHN0ZGluPiIsICZjZikgIT0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCAxMmUxODdjLi43ZGMzOGVhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTkxLDEwICs5MSw2IEBACiAgICAgICAgKHkpWzNdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjI0KSYyNTUpOyAoeSlbMl0gPSAodW5zaWduZWQgY2hhcikoKCh4KT4+MTYpJjI1NSk7ICAgXAogICAgICAgICh5KVsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj44KSYyNTUpOyAoeSlbMF0gPSAodW5zaWduZWQgY2hhcikoKHgpJjI1NSk7IH0KIAotI2lmbmRlZiBNSU4KLSAgICNkZWZpbmUgTUlOKHgsIHkpICggKCh4KTwoeSkpPyh4KTooeSkgKQotI2VuZGlmCi0KIAogLyogTUQ1IG1hY3JvcyAqLwogCkBAIC0yNDQsOSArMjQwLDkgQEAKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gTUQ1X0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gTUQ1X0JMT0NLU0laRTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFB5X3NzaXplX3QpKE1ENV9CTE9DS1NJWkUgLSBtZDUtPmN1cmxlbikpOworICAgICAgICAgICBuID0gUHlfTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoTUQ1X0JMT0NLU0laRSAtIG1kNS0+Y3VybGVuKSk7CiAgICAgICAgICAgIG1lbWNweShtZDUtPmJ1ZiArIG1kNS0+Y3VybGVuLCBpbiwgKHNpemVfdCluKTsKLSAgICAgICAgICAgbWQ1LT5jdXJsZW4gICAgKz0gbjsKKyAgICAgICAgICAgbWQ1LT5jdXJsZW4gICAgKz0gKE1ENV9JTlQzMiluOwogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBuOwogICAgICAgICAgICBpbmxlbiAgICAgICAgICAtPSBuOwogICAgICAgICAgICBpZiAobWQ1LT5jdXJsZW4gPT0gTUQ1X0JMT0NLU0laRSkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCAxMTA3ZWI4Li40YjRiZTYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2lmbmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFVOSVgKQEAgLTEwOCw2ICsxMDksNyBAQAogICAgIGludCBmZDsKICNlbmRpZgogCisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogICAgIGFjY2Vzc19tb2RlIGFjY2VzczsKIH0gbW1hcF9vYmplY3Q7CiAKQEAgLTEzNCw2ICsxMzYsOCBAQAogICAgIH0KICNlbmRpZiAvKiBVTklYICovCiAKKyAgICBpZiAobV9vYmotPndlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIG1fb2JqKTsKICAgICBQeV9UWVBFKG1fb2JqKS0+dHBfZnJlZSgoUHlPYmplY3QqKW1fb2JqKTsKIH0KIApAQCAtMTAzMiw3ICsxMDM2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YobW1hcF9vYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBtbWFwX29iamVjdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KQEAgLTExOTAsNiArMTE5NCw3IEBACiAgICAgbV9vYmotPmRhdGEgPSBOVUxMOwogICAgIG1fb2JqLT5zaXplID0gKHNpemVfdCkgbWFwX3NpemU7CiAgICAgbV9vYmotPnBvcyA9IChzaXplX3QpIDA7CisgICAgbV9vYmotPndlYWtyZWZsaXN0ID0gTlVMTDsKICAgICBtX29iai0+ZXhwb3J0cyA9IDA7CiAgICAgbV9vYmotPm9mZnNldCA9IG9mZnNldDsKICAgICBpZiAoZmQgPT0gLTEpIHsKQEAgLTEzOTQsNiArMTM5OSw3IEBACiAgICAgLyogc2V0IHRoZSBpbml0aWFsIHBvc2l0aW9uICovCiAgICAgbV9vYmotPnBvcyA9IChzaXplX3QpIDA7CiAKKyAgICBtX29iai0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIG1fb2JqLT5leHBvcnRzID0gMDsKICAgICAvKiBzZXQgdGhlIHRhZyBuYW1lICovCiAgICAgaWYgKHRhZ25hbWUgIT0gTlVMTCAmJiAqdGFnbmFtZSAhPSAnXDAnKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggNTBlMjY2Zi4uNWU0NWFiZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtMjQ1LDcgKzI0NSw3IEBACiAgICAgaW50IGFyZzsKIAogICAgIGFzc2VydChzdHJsZW4oZm5hbWUpIDw9IDMwKTsKLSAgICBzdHJjYXQoYXJnZm10LCBmbmFtZSk7CisgICAgc3RybmNhdChhcmdmbXQsIGZuYW1lLCAzMCk7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGFyZ2ZtdCwgJmFyZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yNzAsNyArMjcwLDcgQEAKICAgICBpbnQgYXJnID0gMDsKIAogICAgIGFzc2VydChzdHJsZW4oZm5hbWUpIDw9IDMwKTsKLSAgICBzdHJjYXQoYXJnZm10LCBmbmFtZSk7CisgICAgc3RybmNhdChhcmdmbXQsIGZuYW1lLCAzMCk7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGFyZ2ZtdCwgJmFyZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBhc3NlcnQoc3RybGVuKGZuYW1lKSA8PSAzMCk7Ci0gICAgc3RyY2F0KGFyZ2ZtdCwgZm5hbWUpOworICAgIHN0cm5jYXQoYXJnZm10LCBmbmFtZSwgMzApOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBhcmdmbXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggZTg2ZmU0ZC4uN2E2ZTQ1NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC04Myw1NCArODMsNzggQEAKICAgICAgICAgICAgaW50IGxpbmVubywgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIGxpbmUgbnVtYmVycz8gICAgICAgICAqLwogICAgICAgICAgICBpbnQgY29sX29mZnNldCkgICAgICAgICAgICAgIC8qIGluY2x1ZGUgY29sdW1uIG9mZnNldHM/ICAgICAgICovCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEwsICp3OworCiAgICAgaWYgKG4gPT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiAoUHlfTm9uZSk7CisgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KKwogICAgIGlmIChJU05PTlRFUk1JTkFMKFRZUEUobikpKSB7CiAgICAgICAgIGludCBpOwotICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgUHlPYmplY3QgKnc7CiAKLSAgICAgICAgdiA9IG1rc2VxKDEgKyBOQ0gobikgKyAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSk7Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gKHYpOworICAgICAgICByZXN1bHQgPSBta3NlcSgxICsgTkNIKG4pICsgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgIHcgPSBQeUxvbmdfRnJvbUxvbmcoVFlQRShuKSk7Ci0gICAgICAgIGlmICh3ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIHJldHVybiAoKFB5T2JqZWN0KikgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgKHZvaWQpIGFkZGVsZW0odiwgMCwgdyk7CisgICAgICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAodm9pZCkgYWRkZWxlbShyZXN1bHQsIDAsIHcpOworCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkrKykgewogICAgICAgICAgICAgdyA9IG5vZGUydHVwbGUoQ0hJTEQobiwgaSksIG1rc2VxLCBhZGRlbGVtLCBsaW5lbm8sIGNvbF9vZmZzZXQpOwotICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKChQeU9iamVjdCopIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0odiwgaSsxLCB3KTsKKyAgICAgICAgICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICh2b2lkKSBhZGRlbGVtKHJlc3VsdCwgaSsxLCB3KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpCi0gICAgICAgICAgICAodm9pZCkgYWRkZWxlbSh2LCBpKzEsIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFNUUihuKSkpOwotICAgICAgICByZXR1cm4gKHYpOworICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7CisgICAgICAgICAgICB3ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoU1RSKG4pKTsKKyAgICAgICAgICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICh2b2lkKSBhZGRlbGVtKHJlc3VsdCwgaSsxLCB3KTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChJU1RFUk1JTkFMKFRZUEUobikpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBta3NlcSgyICsgbGluZW5vICsgY29sX29mZnNldCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAwLCBQeUxvbmdfRnJvbUxvbmcoVFlQRShuKSkpOwotICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAxLCBQeVVuaWNvZGVfRnJvbVN0cmluZyhTVFIobikpKTsKLSAgICAgICAgICAgIGlmIChsaW5lbm8gPT0gMSkKLSAgICAgICAgICAgICAgICAodm9pZCkgYWRkZWxlbShyZXN1bHQsIDIsIFB5TG9uZ19Gcm9tTG9uZyhuLT5uX2xpbmVubykpOwotICAgICAgICAgICAgaWYgKGNvbF9vZmZzZXQgPT0gMSkKLSAgICAgICAgICAgICAgICAodm9pZCkgYWRkZWxlbShyZXN1bHQsIDMsIFB5TG9uZ19Gcm9tTG9uZyhuLT5uX2NvbF9vZmZzZXQpKTsKKyAgICAgICAgcmVzdWx0ID0gbWtzZXEoMiArIGxpbmVubyArIGNvbF9vZmZzZXQpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIHcgPSBQeUxvbmdfRnJvbUxvbmcoVFlQRShuKSk7CisgICAgICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAodm9pZCkgYWRkZWxlbShyZXN1bHQsIDAsIHcpOworCisgICAgICAgIHcgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhTVFIobikpOworICAgICAgICBpZiAodyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAxLCB3KTsKKworICAgICAgICBpZiAobGluZW5vID09IDEpIHsKKyAgICAgICAgICAgIHcgPSBQeUxvbmdfRnJvbUxvbmcobi0+bl9saW5lbm8pOworICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAyLCB3KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gKHJlc3VsdCk7CisKKyAgICAgICAgaWYgKGNvbF9vZmZzZXQgPT0gMSkgeworICAgICAgICAgICAgdyA9IFB5TG9uZ19Gcm9tTG9uZyhuLT5uX2NvbF9vZmZzZXQpOworICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAzLCB3KTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInVucmVjb2duaXplZCBwYXJzZSB0cmVlIG5vZGUgdHlwZSIpOwogICAgICAgICByZXR1cm4gKChQeU9iamVjdCopIE5VTEwpOwogICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAvKgogICogIEVuZCBvZiBtYXRlcmlhbCBjb3B5cmlnaHRlZCBieSBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0uCkBAIC04MDksOCArODMzLDEzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdHJuID0gKGNoYXIgKilQeU9iamVjdF9NQUxMT0MobGVuICsgMSk7Ci0gICAgICAgICAgICBpZiAoc3RybiAhPSBOVUxMKQotICAgICAgICAgICAgICAgICh2b2lkKSBtZW1jcHkoc3RybiwgdGVtcF9zdHIsIGxlbiArIDEpOworICAgICAgICAgICAgaWYgKHN0cm4gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAodm9pZCkgbWVtY3B5KHN0cm4sIHRlbXBfc3RyLCBsZW4gKyAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghSVNOT05URVJNSU5BTCh0eXBlKSkgewpAQCAtODcwLDcgKzg5OSw3IEBACiAgICAgICAgICAqICBUaGUgdHVwbGUgaXMgc2ltcGxlLCBidXQgaXQgZG9lc24ndCBzdGFydCB3aXRoIGEgc3RhcnQgc3ltYm9sLgogICAgICAgICAgKiAgUmFpc2UgYW4gZXhjZXB0aW9uIG5vdyBhbmQgYmUgZG9uZSB3aXRoIGl0LgogICAgICAgICAgKi8KLSAgICAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJvcyIsIHR1cGxlLAorICAgICAgICB0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIk9zIiwgdHVwbGUsCiAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIHN5bnRheC10cmVlOyBjYW5ub3Qgc3RhcnQgd2l0aCB0ZXJtaW5hbCBzeW1ib2wuIik7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChwYXJzZXJfZXJyb3IsIHR1cGxlKTsKICAgICAgICAgUHlfWERFQ1JFRih0dXBsZSk7CkBAIC05MDYsOCArOTM1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXMtPm5fc3RyID0gKGNoYXIgKilQeU9iamVjdF9NQUxMT0MobGVuICsgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcy0+bl9zdHIgIT0gTlVMTCAmJiB0ZW1wICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSBtZW1jcHkocmVzLT5uX3N0ciwgdGVtcCwgbGVuICsgMSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcy0+bl9zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICh2b2lkKSBtZW1jcHkocmVzLT5uX3N0ciwgdGVtcCwgbGVuICsgMSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCmluZGV4IDMyYzg1YjguLjUxNDVlM2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKQEAgLTEsMTUgKzEsMTIgQEAKIAogLyogUE9TSVggbW9kdWxlIGltcGxlbWVudGF0aW9uICovCiAKLS8qIFRoaXMgZmlsZSBpcyBhbHNvIHVzZWQgZm9yIFdpbmRvd3MgTlQvTVMtV2luIGFuZCBPUy8yLiAgSW4gdGhhdCBjYXNlIHRoZQotICAgbW9kdWxlIGFjdHVhbGx5IGNhbGxzIGl0c2VsZiAnbnQnIG9yICdvczInLCBub3QgJ3Bvc2l4JywgYW5kIGEgZmV3CisvKiBUaGlzIGZpbGUgaXMgYWxzbyB1c2VkIGZvciBXaW5kb3dzIE5UL01TLVdpbi4gIEluIHRoYXQgY2FzZSB0aGUKKyAgIG1vZHVsZSBhY3R1YWxseSBjYWxscyBpdHNlbGYgJ250Jywgbm90ICdwb3NpeCcsIGFuZCBhIGZldwogICAgZnVuY3Rpb25zIGFyZSBlaXRoZXIgdW5pbXBsZW1lbnRlZCBvciBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseS4gIFRoZSBzb3VyY2UKICAgIGFzc3VtZXMgdGhhdCBmb3IgV2luZG93cyBOVCwgdGhlIG1hY3JvICdNU19XSU5ET1dTJyBpcyBkZWZpbmVkIGluZGVwZW5kZW50CiAgICBvZiB0aGUgY29tcGlsZXIgdXNlZC4gIERpZmZlcmVudCBjb21waWxlcnMgZGVmaW5lIHRoZWlyIG93biBmZWF0dXJlCi0gICB0ZXN0IG1hY3JvLCBlLmcuICdfX0JPUkxBTkRDX18nIG9yICdfTVNDX1ZFUicuICBGb3IgT1MvMiwgdGhlIGNvbXBpbGVyCi0gICBpbmRlcGVuZGVudCBtYWNybyBQWU9TX09TMiBzaG91bGQgYmUgZGVmaW5lZC4gIE9uIE9TLzIgdGhlIGRlZmF1bHQKLSAgIGNvbXBpbGVyIGlzIGFzc3VtZWQgdG8gYmUgSUJNJ3MgVmlzdWFsQWdlIEMrKyAoVkFDUFApLiAgUFlDQ19HQ0MgaXMgdXNlZAotICAgYXMgdGhlIGNvbXBpbGVyIHNwZWNpZmljIG1hY3JvIGZvciB0aGUgRU1YIHBvcnQgb2YgZ2NjIHRvIE9TLzIuICovCisgICB0ZXN0IG1hY3JvLCBlLmcuICdfX0JPUkxBTkRDX18nIG9yICdfTVNDX1ZFUicuICovCiAKICNpZmRlZiBfX0FQUExFX18KICAgIC8qCkBAIC00NiwyMiArNDMsNiBAQAogY29ycmVzcG9uZGluZyBVbml4IG1hbnVhbCBlbnRyaWVzIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNhbGxzLiIpOwogCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotI2Vycm9yICJQRVAgMTE6IE9TLzIgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgotI2RlZmluZSAgSU5DTF9ET1MKLSNkZWZpbmUgIElOQ0xfRE9TRVJST1JTCi0jZGVmaW5lICBJTkNMX0RPU1BST0NFU1MKLSNkZWZpbmUgIElOQ0xfTk9QTUFQSQotI2luY2x1ZGUgPG9zMi5oPgotI2lmIGRlZmluZWQoUFlDQ19HQ0MpCi0jaW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlIDxpby5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8cHJvY2Vzcy5oPgotI2VuZGlmCi0jaW5jbHVkZSAib3NkZWZzLmgiCi0jZW5kaWYKLQogI2lmZGVmIEhBVkVfU1lTX1VJT19ICiAjaW5jbHVkZSA8c3lzL3Vpby5oPgogI2VuZGlmCkBAIC0xMzIsNiArMTEzLDE4IEBACiAjaW5jbHVkZSA8ZGxmY24uaD4KICNlbmRpZgogCisjaWZkZWYgX19ocHV4CisjaW5jbHVkZSA8c3lzL21wY3RsLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgXAorICAgIGRlZmluZWQoX19PcGVuQlNEX18pICAgfHwgXAorICAgIGRlZmluZWQoX19GcmVlQlNEX18pICAgfHwgXAorICAgIGRlZmluZWQoX19OZXRCU0RfXykgICAgfHwgXAorICAgIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogIyAgZGVmaW5lIFRFUk1TSVpFX1VTRV9DT05JTwogI2VsaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKQpAQCAtMTQ2LDE3ICsxMzksMTAgQEAKIAogLyogVmFyaW91cyBjb21waWxlcnMgaGF2ZSBvbmx5IGNlcnRhaW4gcG9zaXggZnVuY3Rpb25zICovCiAvKiBYWFggR29zaCBJIHdpc2ggdGhlc2Ugd2VyZSBhbGwgbW92ZWQgaW50byBweWNvbmZpZy5oICovCi0jaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQotI2luY2x1ZGUgPHByb2Nlc3MuaD4KLSNlbHNlCiAjaWYgZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoX19RTlhfXykgICAgICAgICAgIC8qIFdhdGNvbSBjb21waWxlciAqLwogI2RlZmluZSBIQVZFX0dFVENXRCAgICAgMQogI2RlZmluZSBIQVZFX09QRU5ESVIgICAgMQogI2RlZmluZSBIQVZFX1NZU1RFTSAgICAgMQotI2lmIGRlZmluZWQoX19PUzJfXykKLSNkZWZpbmUgSEFWRV9FWEVDViAgICAgIDEKLSNkZWZpbmUgSEFWRV9XQUlUICAgICAgIDEKLSNlbmRpZgogI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNlbHNlCiAjaWZkZWYgX19CT1JMQU5EQ19fICAgICAgICAgICAgIC8qIEJvcmxhbmQgY29tcGlsZXIgKi8KQEAgLTE3OSw4ICsxNjUsOCBAQAogI2RlZmluZSBIQVZFX0ZTWU5DICAgICAgMQogI2RlZmluZSBmc3luYyBfY29tbWl0CiAjZWxzZQotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpIHx8IGRlZmluZWQoX19WTVMpCi0vKiBFdmVyeXRoaW5nIG5lZWRlZCBpcyBkZWZpbmVkIGluIFBDL29zMmVteC9weWNvbmZpZy5oIG9yIHZtcy9weWNvbmZpZy5oICovCisjaWYgZGVmaW5lZChfX1ZNUykKKy8qIEV2ZXJ5dGhpbmcgbmVlZGVkIGlzIGRlZmluZWQgaW4gdm1zL3B5Y29uZmlnLmggKi8KICNlbHNlICAgICAgICAgICAgICAgICAgIC8qIGFsbCBvdGhlciBjb21waWxlcnMgKi8KIC8qIFVuaXggZnVuY3Rpb25zIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBjaGVjayBmb3IgKi8KICNkZWZpbmUgSEFWRV9FWEVDViAgICAgIDEKQEAgLTIwMCwxMSArMTg2LDEwIEBACiAjZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCiAjZGVmaW5lIEhBVkVfV0FJVCAgICAgICAxCiAjZGVmaW5lIEhBVkVfVFRZTkFNRSAgICAxCi0jZW5kaWYgIC8qIFBZT1NfT1MyICYmIFBZQ0NfR0NDICYmIF9fVk1TICovCisjZW5kaWYgIC8qIF9fVk1TICovCiAjZW5kaWYgIC8qIF9NU0NfVkVSICovCiAjZW5kaWYgIC8qIF9fQk9STEFORENfXyAqLwogI2VuZGlmICAvKiAhIF9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KLSNlbmRpZiAvKiAhIF9fSUJNQ19fICovCiAKIAogCkBAIC0zMzUsMTAgKzMyMCw2IEBACiAjZW5kaWYKICNlbmRpZiAvKiBfTVNDX1ZFUiAqLwogCi0jaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQotI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYgLyogT1MyICovCi0KICNpZm5kZWYgTUFYUEFUSExFTgogI2lmIGRlZmluZWQoUEFUSF9NQVgpICYmIFBBVEhfTUFYID4gMTAyNAogI2RlZmluZSBNQVhQQVRITEVOIFBBVEhfTUFYCkBAIC0zODAsNyArMzYxLDcgQEAKICN1bmRlZiBTVEFUCiAjdW5kZWYgRlNUQVQKICN1bmRlZiBTVFJVQ1RfU1RBVAotI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBNU19XSU5ET1dTCiAjICAgICAgIGRlZmluZSBTVEFUIHdpbjMyX3N0YXQKICMgICAgICAgZGVmaW5lIExTVEFUIHdpbjMyX2xzdGF0CiAjICAgICAgIGRlZmluZSBGU1RBVCB3aW4zMl9mc3RhdApAQCAtNDM2LDEwOCArNDE3LDIxMyBAQAogaW50CiBfUHlfVWlkX0NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCB2b2lkICpwKQogeworICAgIHVpZF90IHVpZDsKKyAgICBQeU9iamVjdCAqaW5kZXg7CiAgICAgaW50IG92ZXJmbG93OwogICAgIGxvbmcgcmVzdWx0OwotICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiKTsKKyAgICB1bnNpZ25lZCBsb25nIHVyZXN1bHQ7CisKKyAgICBpbmRleCA9IFB5TnVtYmVyX0luZGV4KG9iaik7CisgICAgaWYgKGluZGV4ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ1aWQgc2hvdWxkIGJlIGludGVnZXIsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhvYmosICZvdmVyZmxvdyk7Ci0gICAgaWYgKG92ZXJmbG93IDwgMCkKLSAgICAgICAgZ290byBPdmVyZmxvd0Rvd247Ci0gICAgaWYgKCFvdmVyZmxvdyAmJiByZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgLyogZXJyb3Igb3IgLTEgKi8KLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgKih1aWRfdCAqKXAgPSAodWlkX3QpLTE7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiB1bnNpZ25lZCB1aWRfdCAqLwotICAgICAgICB1bnNpZ25lZCBsb25nIHVyZXN1bHQ7Ci0gICAgICAgIGlmIChvdmVyZmxvdyA+IDApIHsKLSAgICAgICAgICAgIHVyZXN1bHQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcob2JqKTsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3dVcDsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgodWlkX3QpdXJlc3VsdCA9PSAodWlkX3QpLTEpCi0gICAgICAgICAgICAgICAgZ290byBPdmVyZmxvd1VwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgICAgICAgICAgZ290byBPdmVyZmxvd0Rvd247Ci0gICAgICAgICAgICB1cmVzdWx0ID0gcmVzdWx0OworCisgICAgLyoKKyAgICAgKiBIYW5kbGluZyB1aWRfdCBpcyBjb21wbGljYXRlZCBmb3IgdHdvIHJlYXNvbnM6CisgICAgICogICogQWx0aG91Z2ggdWlkX3QgaXMgKGFsd2F5cz8pIHVuc2lnbmVkLCBpdCBzdGlsbAorICAgICAqICAgIGFjY2VwdHMgLTEuCisgICAgICogICogV2UgZG9uJ3Qga25vdyBpdHMgc2l6ZSBpbiBhZHZhbmNlLS1pdCBtYXkgYmUKKyAgICAgKiAgICBiaWdnZXIgdGhhbiBhbiBpbnQsIG9yIGl0IG1heSBiZSBzbWFsbGVyIHRoYW4KKyAgICAgKiAgICBhIGxvbmcuCisgICAgICoKKyAgICAgKiBTbyBhIGJpdCBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgaXMgaW4gb3JkZXIuCisgICAgICogU3RhcnQgd2l0aCBpbnRlcnByZXRpbmcgdGhlIHZhbHVlIHBhc3NlZAorICAgICAqIGluIGFzIGEgc2lnbmVkIGxvbmcgYW5kIHNlZSBpZiBpdCB3b3Jrcy4KKyAgICAgKi8KKworICAgIHJlc3VsdCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpbmRleCwgJm92ZXJmbG93KTsKKworICAgIGlmICghb3ZlcmZsb3cpIHsKKyAgICAgICAgdWlkID0gKHVpZF90KXJlc3VsdDsKKworICAgICAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAvKiBJdCdzIGEgbGVnaXRpbWF0ZSAtMSwgd2UncmUgZG9uZS4gKi8KKyAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKICAgICAgICAgfQorCisgICAgICAgIC8qIEFueSBvdGhlciBuZWdhdGl2ZSBudW1iZXIgaXMgZGlzYWxsb3dlZC4gKi8KKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICBnb3RvIHVuZGVyZmxvdzsKKworICAgICAgICAvKiBFbnN1cmUgdGhlIHZhbHVlIHdhc24ndCB0cnVuY2F0ZWQuICovCiAgICAgICAgIGlmIChzaXplb2YodWlkX3QpIDwgc2l6ZW9mKGxvbmcpICYmCi0gICAgICAgICAgICAodW5zaWduZWQgbG9uZykodWlkX3QpdXJlc3VsdCAhPSB1cmVzdWx0KQotICAgICAgICAgICAgZ290byBPdmVyZmxvd1VwOwotICAgICAgICAqKHVpZF90ICopcCA9ICh1aWRfdCl1cmVzdWx0OworICAgICAgICAgICAgKGxvbmcpdWlkICE9IHJlc3VsdCkKKyAgICAgICAgICAgIGdvdG8gdW5kZXJmbG93OworICAgICAgICBnb3RvIHN1Y2Nlc3M7CiAgICAgfQorCisgICAgaWYgKG92ZXJmbG93IDwgMCkKKyAgICAgICAgZ290byB1bmRlcmZsb3c7CisKKyAgICAvKgorICAgICAqIE9rYXksIHRoZSB2YWx1ZSBvdmVyZmxvd2VkIGEgc2lnbmVkIGxvbmcuICBJZiBpdAorICAgICAqIGZpdHMgaW4gYW4gKnVuc2lnbmVkKiBsb25nLCBpdCBtYXkgc3RpbGwgYmUgb2theSwKKyAgICAgKiBhcyB1aWRfdCBtYXkgYmUgdW5zaWduZWQgbG9uZyBvbiB0aGlzIHBsYXRmb3JtLgorICAgICAqLworICAgIHVyZXN1bHQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoaW5kZXgpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIHVpZCA9ICh1aWRfdCl1cmVzdWx0OworCisgICAgLyoKKyAgICAgKiBJZiB1aWQgPT0gKHVpZF90KS0xLCB0aGUgdXNlciBhY3R1YWxseSBwYXNzZWQgaW4gVUxPTkdfTUFYLAorICAgICAqIGJ1dCB0aGlzIHZhbHVlIHdvdWxkIGdldCBpbnRlcnByZXRlZCBhcyAodWlkX3QpLTEgIGJ5IGNob3duCisgICAgICogYW5kIGl0cyBzaWJsaW5ncy4gICBUaGF0J3Mgbm90IHdoYXQgdGhlIHVzZXIgbWVhbnQhICBTbyB3ZQorICAgICAqIHRocm93IGFuIG92ZXJmbG93IGV4Y2VwdGlvbiBpbnN0ZWFkLiAgIChXZSBhbHJlYWR5CisgICAgICogaGFuZGxlZCBhIHJlYWwgLTEgd2l0aCBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coKSBhYm92ZS4pIAorICAgICAqLworICAgIGlmICh1aWQgPT0gKHVpZF90KS0xKQorICAgICAgICBnb3RvIG92ZXJmbG93OworCisgICAgLyogRW5zdXJlIHRoZSB2YWx1ZSB3YXNuJ3QgdHJ1bmNhdGVkLiAqLworICAgIGlmIChzaXplb2YodWlkX3QpIDwgc2l6ZW9mKGxvbmcpICYmCisgICAgICAgICh1bnNpZ25lZCBsb25nKXVpZCAhPSB1cmVzdWx0KQorICAgICAgICBnb3RvIG92ZXJmbG93OworICAgIC8qIGZhbGx0aHJvdWdoICovCisKK3N1Y2Nlc3M6CisgICAgUHlfREVDUkVGKGluZGV4KTsKKyAgICAqKHVpZF90ICopcCA9IHVpZDsKICAgICByZXR1cm4gMTsKIAotT3ZlcmZsb3dEb3duOgordW5kZXJmbG93OgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAidXNlciBpZCBpcyBsZXNzIHRoYW4gbWluaW11bSIpOwotICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICAidWlkIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CisgICAgZ290byBmYWlsOwogCi1PdmVyZmxvd1VwOgorb3ZlcmZsb3c6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJ1c2VyIGlkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CisgICAgICAgICAgICAgICAgICAgICJ1aWQgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0iKTsKKyAgICAvKiBmYWxsdGhyb3VnaCAqLworCitmYWlsOgorICAgIFB5X0RFQ1JFRihpbmRleCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGludAogX1B5X0dpZF9Db252ZXJ0ZXIoUHlPYmplY3QgKm9iaiwgdm9pZCAqcCkKIHsKKyAgICBnaWRfdCBnaWQ7CisgICAgUHlPYmplY3QgKmluZGV4OwogICAgIGludCBvdmVyZmxvdzsKICAgICBsb25nIHJlc3VsdDsKLSAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0Iik7CisgICAgdW5zaWduZWQgbG9uZyB1cmVzdWx0OworCisgICAgaW5kZXggPSBQeU51bWJlcl9JbmRleChvYmopOworICAgIGlmIChpbmRleCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZ2lkIHNob3VsZCBiZSBpbnRlZ2VyLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXN1bHQgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOwotICAgIGlmIChvdmVyZmxvdyA8IDApCi0gICAgICAgIGdvdG8gT3ZlcmZsb3dEb3duOwotICAgIGlmICghb3ZlcmZsb3cgJiYgcmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIC8qIGVycm9yIG9yIC0xICovCi0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICooZ2lkX3QgKilwID0gKGdpZF90KS0xOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogdW5zaWduZWQgZ2lkX3QgKi8KLSAgICAgICAgdW5zaWduZWQgbG9uZyB1cmVzdWx0OwotICAgICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7Ci0gICAgICAgICAgICB1cmVzdWx0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG9iaik7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93VXA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGdpZF90KXVyZXN1bHQgPT0gKGdpZF90KS0xKQotICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3dVcDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3dEb3duOwotICAgICAgICAgICAgdXJlc3VsdCA9IHJlc3VsdDsKKworICAgIC8qCisgICAgICogSGFuZGxpbmcgZ2lkX3QgaXMgY29tcGxpY2F0ZWQgZm9yIHR3byByZWFzb25zOgorICAgICAqICAqIEFsdGhvdWdoIGdpZF90IGlzIChhbHdheXM/KSB1bnNpZ25lZCwgaXQgc3RpbGwKKyAgICAgKiAgICBhY2NlcHRzIC0xLgorICAgICAqICAqIFdlIGRvbid0IGtub3cgaXRzIHNpemUgaW4gYWR2YW5jZS0taXQgbWF5IGJlCisgICAgICogICAgYmlnZ2VyIHRoYW4gYW4gaW50LCBvciBpdCBtYXkgYmUgc21hbGxlciB0aGFuCisgICAgICogICAgYSBsb25nLgorICAgICAqCisgICAgICogU28gYSBiaXQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nIGlzIGluIG9yZGVyLgorICAgICAqIFN0YXJ0IHdpdGggaW50ZXJwcmV0aW5nIHRoZSB2YWx1ZSBwYXNzZWQKKyAgICAgKiBpbiBhcyBhIHNpZ25lZCBsb25nIGFuZCBzZWUgaWYgaXQgd29ya3MuCisgICAgICovCisKKyAgICByZXN1bHQgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coaW5kZXgsICZvdmVyZmxvdyk7CisKKyAgICBpZiAoIW92ZXJmbG93KSB7CisgICAgICAgIGdpZCA9IChnaWRfdClyZXN1bHQ7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgLyogSXQncyBhIGxlZ2l0aW1hdGUgLTEsIHdlJ3JlIGRvbmUuICovCisgICAgICAgICAgICBnb3RvIHN1Y2Nlc3M7CiAgICAgICAgIH0KKworICAgICAgICAvKiBBbnkgb3RoZXIgbmVnYXRpdmUgbnVtYmVyIGlzIGRpc2FsbG93ZWQuICovCisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBnb3RvIHVuZGVyZmxvdzsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEVuc3VyZSB0aGUgdmFsdWUgd2Fzbid0IHRydW5jYXRlZC4gKi8KICAgICAgICAgaWYgKHNpemVvZihnaWRfdCkgPCBzaXplb2YobG9uZykgJiYKLSAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShnaWRfdCl1cmVzdWx0ICE9IHVyZXN1bHQpCi0gICAgICAgICAgICBnb3RvIE92ZXJmbG93VXA7Ci0gICAgICAgICooZ2lkX3QgKilwID0gKGdpZF90KXVyZXN1bHQ7CisgICAgICAgICAgICAobG9uZylnaWQgIT0gcmVzdWx0KQorICAgICAgICAgICAgZ290byB1bmRlcmZsb3c7CisgICAgICAgIGdvdG8gc3VjY2VzczsKICAgICB9CisKKyAgICBpZiAob3ZlcmZsb3cgPCAwKQorICAgICAgICBnb3RvIHVuZGVyZmxvdzsKKworICAgIC8qCisgICAgICogT2theSwgdGhlIHZhbHVlIG92ZXJmbG93ZWQgYSBzaWduZWQgbG9uZy4gIElmIGl0CisgICAgICogZml0cyBpbiBhbiAqdW5zaWduZWQqIGxvbmcsIGl0IG1heSBzdGlsbCBiZSBva2F5LAorICAgICAqIGFzIGdpZF90IG1heSBiZSB1bnNpZ25lZCBsb25nIG9uIHRoaXMgcGxhdGZvcm0uCisgICAgICovCisgICAgdXJlc3VsdCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhpbmRleCk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgZ2lkID0gKGdpZF90KXVyZXN1bHQ7CisKKyAgICAvKgorICAgICAqIElmIGdpZCA9PSAoZ2lkX3QpLTEsIHRoZSB1c2VyIGFjdHVhbGx5IHBhc3NlZCBpbiBVTE9OR19NQVgsCisgICAgICogYnV0IHRoaXMgdmFsdWUgd291bGQgZ2V0IGludGVycHJldGVkIGFzIChnaWRfdCktMSAgYnkgY2hvd24KKyAgICAgKiBhbmQgaXRzIHNpYmxpbmdzLiAgIFRoYXQncyBub3Qgd2hhdCB0aGUgdXNlciBtZWFudCEgIFNvIHdlCisgICAgICogdGhyb3cgYW4gb3ZlcmZsb3cgZXhjZXB0aW9uIGluc3RlYWQuICAgKFdlIGFscmVhZHkKKyAgICAgKiBoYW5kbGVkIGEgcmVhbCAtMSB3aXRoIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdygpIGFib3ZlLikgCisgICAgICovCisgICAgaWYgKGdpZCA9PSAoZ2lkX3QpLTEpCisgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisKKyAgICAvKiBFbnN1cmUgdGhlIHZhbHVlIHdhc24ndCB0cnVuY2F0ZWQuICovCisgICAgaWYgKHNpemVvZihnaWRfdCkgPCBzaXplb2YobG9uZykgJiYKKyAgICAgICAgKHVuc2lnbmVkIGxvbmcpZ2lkICE9IHVyZXN1bHQpCisgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKworc3VjY2VzczoKKyAgICBQeV9ERUNSRUYoaW5kZXgpOworICAgICooZ2lkX3QgKilwID0gZ2lkOwogICAgIHJldHVybiAxOwogCi1PdmVyZmxvd0Rvd246Cit1bmRlcmZsb3c6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJncm91cCBpZCBpcyBsZXNzIHRoYW4gbWluaW11bSIpOwotICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICAiZ2lkIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CisgICAgZ290byBmYWlsOwogCi1PdmVyZmxvd1VwOgorb3ZlcmZsb3c6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJncm91cCBpZCBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSIpOworICAgICAgICAgICAgICAgICAgICAiZ2lkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CisgICAgLyogZmFsbHRocm91Z2ggKi8KKworZmFpbDoKKyAgICBQeV9ERUNSRUYoaW5kZXgpOwogICAgIHJldHVybiAwOwogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KQEAgLTU2MCwyNSArNjQ2LDI5IEBACiBfZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCBpbnQgKnAsIGNvbnN0IGNoYXIgKmFsbG93ZWQpCiB7CiAgICAgaW50IG92ZXJmbG93OwotICAgIGxvbmcgbG9uZ192YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhvLCAmb3ZlcmZsb3cpOwotICAgIGlmIChQeUZsb2F0X0NoZWNrKG8pIHx8Ci0gICAgICAgIChsb25nX3ZhbHVlID09IC0xICYmICFvdmVyZmxvdyAmJiBQeUVycl9PY2N1cnJlZCgpKSkgewotICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGxvbmcgbG9uZ192YWx1ZTsKKworICAgIFB5T2JqZWN0ICppbmRleCA9IFB5TnVtYmVyX0luZGV4KG8pOworICAgIGlmIChpbmRleCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQsIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSAlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkLCBQeV9UWVBFKG8pLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgbG9uZ192YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpbmRleCwgJm92ZXJmbG93KTsKKyAgICBQeV9ERUNSRUYoaW5kZXgpOwogICAgIGlmIChvdmVyZmxvdyA+IDAgfHwgbG9uZ192YWx1ZSA+IElOVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2lnbmVkIGludGVnZXIgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJmZCBpcyBncmVhdGVyIHRoYW4gbWF4aW11bSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKG92ZXJmbG93IDwgMCB8fCBsb25nX3ZhbHVlIDwgSU5UX01JTikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzaWduZWQgaW50ZWdlciBpcyBsZXNzIHRoYW4gbWluaW11bSIpOworICAgICAgICAgICAgICAgICAgICAgICAgImZkIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgICpwID0gKGludClsb25nX3ZhbHVlOwogICAgIHJldHVybiAxOwogfQpAQCAtNjc4LDggKzc2OCw4IEBACiAgKiBwYXRoX2NsZWFudXAoKS4gIEhvd2V2ZXIgaXQgaXMgc2FmZSB0byBkbyBzby4pCiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKLSAgICBjaGFyICpmdW5jdGlvbl9uYW1lOwotICAgIGNoYXIgKmFyZ3VtZW50X25hbWU7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZTsKKyAgICBjb25zdCBjaGFyICphcmd1bWVudF9uYW1lOwogICAgIGludCBudWxsYWJsZTsKICAgICBpbnQgYWxsb3dfZmQ7CiAgICAgd2NoYXJfdCAqd2lkZTsKQEAgLTExMDUsMTAgKzExOTUsNiBAQAogI2Vsc2UKICAgICBjaGFyICoqZTsKICNlbmRpZgotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgQVBJUkVUIHJjOwotICAgIGNoYXIgICBidWZmZXJbMTAyNF07IC8qIE9TLzIgUHJvdmlkZXMgYSBEb2N1bWVudGVkIE1heCBvZiAxMDI0IENoYXJzICovCi0jZW5kaWYKIAogICAgIGQgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKGQgPT0gTlVMTCkKQEAgLTExNzcsMjAgKzEyNjMsNiBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQogI2VuZGlmCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICByYyA9IERvc1F1ZXJ5RXh0TElCUEFUSChidWZmZXIsIEJFR0lOX0xJQlBBVEgpOwotICAgIGlmIChyYyA9PSBOT19FUlJPUikgeyAvKiAobm90IGEgdHlwZSwgZW52bmFtZSBpcyBOT1QgJ0JFR0lOX0xJQlBBVEgnKSAqLwotICAgICAgICBQeU9iamVjdCAqdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhidWZmZXIpOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQkVHSU5MSUJQQVRIIiwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9Ci0gICAgcmMgPSBEb3NRdWVyeUV4dExJQlBBVEgoYnVmZmVyLCBFTkRfTElCUEFUSCk7Ci0gICAgaWYgKHJjID09IE5PX0VSUk9SKSB7IC8qIChub3QgYSB0eXBvLCBlbnZuYW1lIGlzIE5PVCAnRU5EX0xJQlBBVEgnKSAqLwotICAgICAgICBQeU9iamVjdCAqdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhidWZmZXIpOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRU5ETElCUEFUSCIsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQotI2VuZGlmCiAgICAgcmV0dXJuIGQ7CiB9CiAKQEAgLTEyMDEsMjUgKzEyNzMsNiBAQAogewogICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiB9Ci1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShjaGFyKiBuYW1lKQotewotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfT1NFcnJvciwgbmFtZSk7Ci19Ci0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKFB5T2JqZWN0KiBuYW1lKQotewotICAgIFB5T2JqZWN0ICpuYW1lX3N0ciwgKnJjOwotICAgIG5hbWVfc3RyID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19Bc1N0cmluZyhuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUobmFtZSkpOwotICAgIFB5X0RFQ1JFRihuYW1lKTsKLSAgICByYyA9IFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfc3RyKTsKLSAgICBQeV9YREVDUkVGKG5hbWVfc3RyKTsKLSAgICByZXR1cm4gcmM7Ci19CiAKICNpZmRlZiBNU19XSU5ET1dTCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIzOCwyNCArMTI5MSwxMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfZXJyb3JfdW5pY29kZShjaGFyKiBmdW5jdGlvbiwgd2NoYXJfdCogZmlsZW5hbWUpCi17Ci0gICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCi0gICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKLSAgICBpZiAoZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhVbmljb2RlRmlsZW5hbWUoZXJybm8sIGZpbGVuYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnJubyk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiB3aW4zMl9lcnJvcl9vYmplY3QoY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBmaWxlbmFtZSkKIHsKICAgICAvKiBYWFggLSBzZWUgd2luMzJfZXJyb3IgZm9yIGNvbW1lbnRzIG9uICdmdW5jdGlvbicgKi8KICAgICBlcnJubyA9IEdldExhc3RFcnJvcigpOwogICAgIGlmIChmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19XaW5kb3dzRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGVycm5vLAogICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSk7CiAgICAgZWxzZQpAQCAtMTI2NCwxMDkgKzEzMDYsMTcgQEAKIAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAotLyoKLSAqIFNvbWUgZnVuY3Rpb25zIHJldHVybiBXaW4zMiBlcnJvcnMsIG90aGVycyBvbmx5IGV2ZXIgdXNlIHBvc2l4X2Vycm9yCi0gKiAodGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGNlcHRpb25zKQotICovCiBzdGF0aWMgUHlPYmplY3QgKgotcGF0aF9wb3NpeF9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgpCi17Ci0gICAgaWYgKHBhdGgtPm5hcnJvdykKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfZmlsZW5hbWUocGF0aC0+bmFycm93KTsKLSAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXBhdGhfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoKQorcGF0aF9lcnJvcihwYXRoX3QgKnBhdGgpCiB7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT5uYXJyb3cpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcihmdW5jdGlvbl9uYW1lLCBwYXRoLT5uYXJyb3cpOwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZShmdW5jdGlvbl9uYW1lLCBwYXRoLT53aWRlKTsKLSAgICByZXR1cm4gd2luMzJfZXJyb3IoZnVuY3Rpb25fbmFtZSwgTlVMTCk7CisgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHBhdGgtPm9iamVjdCk7CiAjZWxzZQotICAgIHJldHVybiBwYXRoX3Bvc2l4X2Vycm9yKGZ1bmN0aW9uX25hbWUsIHBhdGgpOworICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aC0+b2JqZWN0KTsKICNlbmRpZgogfQogCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiAgICAgICAgIEhlbHBlciBGdW5jdGlvbiB0byBUcmltIGFuZCBGb3JtYXQgT1MvMiBNZXNzYWdlcwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZAotb3MyX2Zvcm1hdG1zZyhjaGFyICptc2didWYsIGludCBtc2dsZW4sIGNoYXIgKnJlYXNvbikKLXsKLSAgICBtc2didWZbbXNnbGVuXSA9ICdcMCc7IC8qIE9TLzIgRG9lc24ndCBHdWFyYW50ZWUgYSBUZXJtaW5hdG9yICovCi0KLSAgICBpZiAoc3RybGVuKG1zZ2J1ZikgPiAwKSB7IC8qIElmIE5vbi1FbXB0eSBNc2csIFRyaW0gQ1JMRiAqLwotICAgICAgICBjaGFyICpsYXN0YyA9ICZtc2didWZbIHN0cmxlbihtc2didWYpLTEgXTsKLQotICAgICAgICB3aGlsZSAobGFzdGMgPiBtc2didWYgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqbGFzdGMpKSkKLSAgICAgICAgICAgICpsYXN0Yy0tID0gJ1wwJzsgLyogVHJpbSBUcmFpbGluZyBXaGl0ZXNwYWNlIChDUkxGKSAqLwotICAgIH0KLQotICAgIC8qIEFkZCBPcHRpb25hbCBSZWFzb24gVGV4dCAqLwotICAgIGlmIChyZWFzb24pIHsKLSAgICAgICAgc3RyY2F0KG1zZ2J1ZiwgIiA6ICIpOwotICAgICAgICBzdHJjYXQobXNnYnVmLCByZWFzb24pOwotICAgIH0KLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqICAgICAgICAgICAgIERlY29kZSBhbiBPUy8yIE9wZXJhdGluZyBTeXN0ZW0gRXJyb3IgQ29kZQotICoKLSAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gbG9va3VwIGFuIE9TLzIgZXJyb3IgY29kZSBhbmQgcmV0dXJuIGEKLSAqIHRleHQgbWVzc2FnZSB3ZSBjYW4gdXNlIHRvIHJhaXNlIGEgUHl0aG9uIGV4Y2VwdGlvbi4KLSAqCi0gKiBOb3RlczoKLSAqICAgVGhlIG1lc3NhZ2VzIGZvciBlcnJvcnMgcmV0dXJuZWQgZnJvbSB0aGUgT1MvMiBrZXJuZWwgcmVzaWRlIGluCi0gKiAgIHRoZSBmaWxlIE9TTzAwMS5NU0cgaW4gdGhlIFxPUzIgZGlyZWN0b3J5IGhpZXJhcmNoeS4KLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyBjaGFyICoKLW9zMl9zdHJlcnJvcihjaGFyICptc2didWYsIGludCBtc2didWZsZW4sIGludCBlcnJvcmNvZGUsIGNoYXIgKnJlYXNvbikKLXsKLSAgICBBUElSRVQgcmM7Ci0gICAgVUxPTkcgIG1zZ2xlbjsKLQotICAgIC8qIFJldHJpZXZlIEtlcm5lbC1SZWxhdGVkIEVycm9yIE1lc3NhZ2UgZnJvbSBPU08wMDEuTVNHIEZpbGUgKi8KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBEb3NHZXRNZXNzYWdlKE5VTEwsIDAsIG1zZ2J1ZiwgbXNnYnVmbGVuLAotICAgICAgICAgICAgICAgICAgICAgICBlcnJvcmNvZGUsICJvc28wMDEubXNnIiwgJm1zZ2xlbik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyYyA9PSBOT19FUlJPUikKLSAgICAgICAgb3MyX2Zvcm1hdG1zZyhtc2didWYsIG1zZ2xlbiwgcmVhc29uKTsKLSAgICBlbHNlCi0gICAgICAgIFB5T1Nfc25wcmludGYobXNnYnVmLCBtc2didWZsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgInVua25vd24gT1MgZXJyb3IgIyVkIiwgZXJyb3Jjb2RlKTsKLQotICAgIHJldHVybiBtc2didWY7Ci19Ci0KLS8qIFNldCBhbiBPUy8yLXNwZWNpZmljIGVycm9yIGFuZCByZXR1cm4gTlVMTC4gIE9TLzIga2VybmVsCi0gICBlcnJvcnMgYXJlIG5vdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBlLmcuICdlcnJubycgbm9yIGFyZQotICAgdGhleSBjb25ncnVlbnQgd2l0aCBwb3NpeCBlcnJvciBudW1iZXJzLiAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotb3MyX2Vycm9yKGludCBjb2RlKQotewotICAgIGNoYXIgdGV4dFsxMDI0XTsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIG9zMl9zdHJlcnJvcih0ZXh0LCBzaXplb2YodGV4dCksIGNvZGUsICIiKTsKLQotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgY29kZSwgdGV4dCk7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfT1NFcnJvciwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7IC8qIFNpZ25hbCB0byBQeXRob24gdGhhdCBhbiBFeGNlcHRpb24gaXMgUGVuZGluZyAqLwotfQotCi0jZW5kaWYgLyogT1MyICovCi0KIC8qIFBPU0lYIGdlbmVyaWMgbWV0aG9kcyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM4OSw2NSArMTMzOSwzMSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfMXN0cihQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCBpbnQgKCpmdW5jKShjb25zdCBjaGFyKikpCitwb3NpeF8xc3RyKGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwgUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwKKyAgICAgICAgICAgaW50ICgqZnVuYykoY29uc3QgY2hhciopKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDEgPSBOVUxMOwotICAgIGNoYXIgKnBhdGgxOworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXM7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9IGZ1bmNfbmFtZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoMSA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgxKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gKCpmdW5jKShwYXRoMSk7CisgICAgcmVzID0gKCpmdW5jKShwYXRoLm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoMSk7Ci0gICAgUHlfREVDUkVGKG9wYXRoMSk7CisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAogCiAjaWZkZWYgTVNfV0lORE9XUwotc3RhdGljIFB5T2JqZWN0Kgotd2luMzJfMXN0cihQeU9iamVjdCogYXJncywgY2hhciogZnVuYywKLSAgICAgICAgICAgY2hhciogZm9ybWF0LCBCT09MIChfX3N0ZGNhbGwgKmZ1bmNBKShMUENTVFIpLAotICAgICAgICAgICBjaGFyKiB3Zm9ybWF0LCBCT09MIChfX3N0ZGNhbGwgKmZ1bmNXKShMUFdTVFIpKQotewotICAgIFB5T2JqZWN0ICp1bmk7Ci0gICAgY29uc3QgY2hhciAqYW5zaTsKLSAgICBCT09MIHJlc3VsdDsKLQotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIHdmb3JtYXQsICZ1bmkpKQotICAgIHsKLSAgICAgICAgd2NoYXJfdCAqd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pKTsKLSAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlc3VsdCA9IGZ1bmNXKHdzdHIpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoZnVuYywgdW5pKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsICZhbnNpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBmdW5jQShhbnNpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoZnVuYywgYW5zaSk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi19Ci0KIC8qIFRoaXMgaXMgYSByZWltcGxlbWVudGF0aW9uIG9mIHRoZSBDIGxpYnJhcnkncyBjaGRpciBmdW5jdGlvbiwKICAgIGJ1dCBvbmUgdGhhdCBwcm9kdWNlcyBXaW4zMiBlcnJvcnMgaW5zdGVhZCBvZiBET1MgZXJyb3IgY29kZXMuCiAgICBjaGRpciBpcyBlc3NlbnRpYWxseSBhIHdyYXBwZXIgYXJvdW5kIFNldEN1cnJlbnREaXJlY3Rvcnk7IGhvd2V2ZXIsCkBAIC0xNDkxLDE0ICsxNDA3LDE0IEBACiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICBpZiAocmVzdWx0ID4gTUFYX1BBVEgrMSkgewotICAgICAgICBuZXdfcGF0aCA9IG1hbGxvYyhyZXN1bHQgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBuZXdfcGF0aCA9IFB5TWVtX1Jhd01hbGxvYyhyZXN1bHQgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoIW5ld19wYXRoKSB7CiAgICAgICAgICAgICBTZXRMYXN0RXJyb3IoRVJST1JfT1VUT0ZNRU1PUlkpOwogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IEdldEN1cnJlbnREaXJlY3RvcnlXKHJlc3VsdCwgbmV3X3BhdGgpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgZnJlZShuZXdfcGF0aCk7CisgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKG5ld19wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgfQogICAgIH0KQEAgLTE1MDksNyArMTQyNSw3IEBACiAgICAgZW52WzFdID0gbmV3X3BhdGhbMF07CiAgICAgcmVzdWx0ID0gU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoZW52LCBuZXdfcGF0aCk7CiAgICAgaWYgKG5ld19wYXRoICE9IF9uZXdfcGF0aCkKLSAgICAgICAgZnJlZShuZXdfcGF0aCk7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUobmV3X3BhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTE1MjQsMTMgKzE0NDAsMTMgQEAKICNkZWZpbmUgSEFWRV9TVEFUX05TRUMgMQogCiBzdHJ1Y3Qgd2luMzJfc3RhdHsKLSAgICBpbnQgc3RfZGV2OworICAgIHVuc2lnbmVkIGxvbmcgc3RfZGV2OwogICAgIF9faW50NjQgc3RfaW5vOwogICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgaW50IHN0X25saW5rOwogICAgIGludCBzdF91aWQ7CiAgICAgaW50IHN0X2dpZDsKLSAgICBpbnQgc3RfcmRldjsKKyAgICB1bnNpZ25lZCBsb25nIHN0X3JkZXY7CiAgICAgX19pbnQ2NCBzdF9zaXplOwogICAgIHRpbWVfdCBzdF9hdGltZTsKICAgICBpbnQgc3RfYXRpbWVfbnNlYzsKQEAgLTE1ODksNiArMTUwNSw4IEBACiAgICAgbWVtc2V0KHJlc3VsdCwgMCwgc2l6ZW9mKCpyZXN1bHQpKTsKICAgICByZXN1bHQtPnN0X21vZGUgPSBhdHRyaWJ1dGVzX3RvX21vZGUoaW5mby0+ZHdGaWxlQXR0cmlidXRlcyk7CiAgICAgcmVzdWx0LT5zdF9zaXplID0gKCgoX19pbnQ2NClpbmZvLT5uRmlsZVNpemVIaWdoKTw8MzIpICsgaW5mby0+bkZpbGVTaXplTG93OworICAgIHJlc3VsdC0+c3RfZGV2ID0gaW5mby0+ZHdWb2x1bWVTZXJpYWxOdW1iZXI7CisgICAgcmVzdWx0LT5zdF9yZGV2ID0gcmVzdWx0LT5zdF9kZXY7CiAgICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdENyZWF0aW9uVGltZSwgJnJlc3VsdC0+c3RfY3RpbWUsICZyZXN1bHQtPnN0X2N0aW1lX25zZWMpOwogICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRMYXN0V3JpdGVUaW1lLCAmcmVzdWx0LT5zdF9tdGltZSwgJnJlc3VsdC0+c3RfbXRpbWVfbnNlYyk7CiAgICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdExhc3RBY2Nlc3NUaW1lLCAmcmVzdWx0LT5zdF9hdGltZSwgJnJlc3VsdC0+c3RfYXRpbWVfbnNlYyk7CkBAIC0xNTk2LDkgKzE1MTQsOSBAQAogICAgIHJlc3VsdC0+c3RfaW5vID0gKCgoX19pbnQ2NClpbmZvLT5uRmlsZUluZGV4SGlnaCk8PDMyKSArIGluZm8tPm5GaWxlSW5kZXhMb3c7CiAgICAgaWYgKHJlcGFyc2VfdGFnID09IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspIHsKICAgICAgICAgLyogZmlyc3QgY2xlYXIgdGhlIFNfSUZNVCBiaXRzICovCi0gICAgICAgIHJlc3VsdC0+c3RfbW9kZSBePSAocmVzdWx0LT5zdF9tb2RlICYgMDE3MDAwMCk7CisgICAgICAgIHJlc3VsdC0+c3RfbW9kZSBePSAocmVzdWx0LT5zdF9tb2RlICYgU19JRk1UKTsKICAgICAgICAgLyogbm93IHNldCB0aGUgYml0cyB0aGF0IG1ha2UgdGhpcyBhIHN5bWxpbmsgKi8KLSAgICAgICAgcmVzdWx0LT5zdF9tb2RlIHw9IDAxMjAwMDA7CisgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSBTX0lGTE5LOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTY1MSw3ICsxNTY5LDcgQEAKIH0KIAogLyogR3JhYiBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwotc3RhdGljIGludCBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlID0gMDsKK3N0YXRpYyBpbnQgaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSA9IC0xOwogc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVykoSEFORExFLCBMUFdTVFIsIERXT1JELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQpOwogc3RhdGljIGludApAQCAtMTY2Miw3ICsxNTgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKIAogICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmICghaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKKyAgICBpZiAoLTEgPT0gaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKICAgICB7CiAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOwogICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLApAQCAtMTY4OCw3ICsxNjA2LDcgQEAKICAgICBpZighYnVmX3NpemUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGJ1ZiA9ICh3Y2hhcl90ICopbWFsbG9jKChidWZfc2l6ZSsxKSpzaXplb2Yod2NoYXJfdCkpOworICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fTWFsbG9jKChidWZfc2l6ZSsxKSpzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghYnVmKSB7CiAgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9PVVRPRk1FTU9SWSk7CiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTE2OTgsMTIgKzE2MTYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKIAogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKSB7Ci0gICAgICAgIGZyZWUoYnVmKTsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCiAgICAgaWYoIUNsb3NlSGFuZGxlKGhkbCkpIHsKLSAgICAgICAgZnJlZShidWYpOworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTE3OTQsNyArMTcxMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICAgICAgICAgIGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsX3codGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOwotICAgICAgICAgICAgICAgIGZyZWUodGFyZ2V0X3BhdGgpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUodGFyZ2V0X3BhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTE4OTAsNyArMTgwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICAgICAgICAgIGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsX3codGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOwotICAgICAgICAgICAgICAgIGZyZWUodGFyZ2V0X3BhdGgpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUodGFyZ2V0X3BhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTIyODksNyArMjIwNyw5IEBACiAjZWxzZQogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMSwgUHlMb25nX0Zyb21Mb25nKChsb25nKXN0LT5zdF9pbm8pKTsKICNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMiwgUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoc3QtPnN0X2RldikpOworI2VsaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc3QtPnN0X2RldikpOwogI2Vsc2UKQEAgLTI0MjQsOCArMjM0NCw5IEBACiAgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0ICE9IDApCi0gICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCJzdGF0IiwgcGF0aCk7CisgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOworICAgIH0KIAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CkBAIC0yNDU2LDYgKzIzNzcsNyBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInN0YXQiOwogICAgIHBhdGguYWxsb3dfZmQgPSAxOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIGtleXdvcmRzLAogICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCkBAIC0yNDg2LDYgKzI0MDgsNyBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxzdGF0IjsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBrZXl3b3JkcywKICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAogI2lmZGVmIEhBVkVfRlNUQVRBVApAQCAtMjY5NCw2ICsyNjE3LDcgQEAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwogCiAgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaGRpciI7CiAjaWZkZWYgSEFWRV9GQ0hESVIKICAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgpAQCAtMjcwOSw4ICsyNjMzLDYgQEAKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHdpbjMyX2NoZGlyKHBhdGgubmFycm93KTsKICAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBvbiB1bml4LCBzdWNjZXNzID0gMCwgb24gd2luZG93cywgc3VjY2VzcyA9ICEwICovCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQotICAgIHJlc3VsdCA9IF9jaGRpcjIocGF0aC5uYXJyb3cpOwogI2Vsc2UKICNpZmRlZiBIQVZFX0ZDSERJUgogICAgIGlmIChwYXRoLmZkICE9IC0xKQpAQCAtMjcyMiw3ICsyNjQ0LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJjaGRpciIsICZwYXRoKTsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKQEAgLTI3ODYsNiArMjcwOCw3IEBACiAjZW5kaWYKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2htb2QiOwogI2lmZGVmIEhBVkVfRkNITU9ECiAgICAgcGF0aC5hbGxvd19mZCA9IDE7CiAjZW5kaWYKQEAgLTI4MjYsNyArMjc0OSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgiY2htb2QiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwpAQCAtMjg4MCw3ICsyODAzLDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoImNobW9kIiwgJnBhdGgpOworICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAjZW5kaWYKQEAgLTI5MjQsMjAgKzI4NDcsMjMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBpOwogICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6bGNobW9kIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZpKSkKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxjaG1vZCI7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6bGNobW9kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmaSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNobW9kKHBhdGgsIGkpOworICAgIHJlcyA9IGxjaG1vZChwYXRoLm5hcnJvdywgaSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0xDSE1PRCAqLwpAQCAtMjk2NSw2ICsyODkxLDcgQEAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2hmbGFncyI7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfCRpOmNoZmxhZ3MiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQpAQCAtMjk4NSw3ICsyOTEyLDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJjaGZsYWdzIiwgJnBhdGgpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KIApAQCAtMzAwOCwyMiArMjkzNSwyNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2xjaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCByZXM7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2hmbGFncyI7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6bGNoZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJmZsYWdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGxjaGZsYWdzKHBhdGgsIGZsYWdzKTsKKyAgICByZXMgPSBsY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfTENIRkxBR1MgKi8KIApAQCAtMzAzNSw3ICsyOTY0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9jaHJvb3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaHJvb3QiLCBjaHJvb3QpOworICAgIHJldHVybiBwb3NpeF8xc3RyKCJjaHJvb3QiLCBhcmdzLCAiTyY6Y2hyb290IiwgY2hyb290KTsKIH0KICNlbmRpZgogCkBAIC0zMTE3LDYgKzMwNDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2hvd24iOwogI2lmZGVmIEhBVkVfRkNIT1dOCiAgICAgcGF0aC5hbGxvd19mZCA9IDE7CiAjZW5kaWYKQEAgLTMxNzQsNyArMzEwNCw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9wb3NpeF9lcnJvcigiY2hvd24iLCAmcGF0aCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCkBAIC0zMjIzLDIzICszMTUzLDI2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfbGNob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIGludCByZXM7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2hvd24iOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOmxjaG93biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNob3duKHBhdGgsIHVpZCwgZ2lkKTsKKyAgICByZXMgPSBsY2hvd24ocGF0aC5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTMyNjUsNyArMzE5OCw3IEBACiAgICAgICAgICAgIHRlcm1pbmF0aW5nIFwwLiBJZiB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbCwgbGVuIGluY2x1ZGVzCiAgICAgICAgICAgIHRoZSBzcGFjZSBuZWVkZWQgZm9yIHRoZSB0ZXJtaW5hdG9yLiAqLwogICAgICAgICBpZiAobGVuID49IHNpemVvZiB3YnVmLyBzaXplb2Ygd2J1ZlswXSkgewotICAgICAgICAgICAgd2J1ZjIgPSBtYWxsb2MobGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIHdidWYyID0gUHlNZW1fUmF3TWFsbG9jKGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgICAgICBpZiAod2J1ZjIpCiAgICAgICAgICAgICAgICAgbGVuID0gR2V0Q3VycmVudERpcmVjdG9yeVcobGVuLCB3YnVmMik7CiAgICAgICAgIH0KQEAgLTMyNzUsMTEgKzMyMDgsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghbGVuKSB7Ci0gICAgICAgICAgICBpZiAod2J1ZjIgIT0gd2J1ZikgZnJlZSh3YnVmMik7Ci0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImdldGN3ZHUiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICh3YnVmMiAhPSB3YnVmKQorICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1ZjIpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgICAgICB9CiAgICAgICAgIHJlc29iaiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod2J1ZjIsIGxlbik7Ci0gICAgICAgIGlmICh3YnVmMiAhPSB3YnVmKSBmcmVlKHdidWYyKTsKKyAgICAgICAgaWYgKHdidWYyICE9IHdidWYpCisgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdidWYyKTsKICAgICAgICAgcmV0dXJuIHJlc29iajsKICAgICB9CiAKQEAgLTMyODgsMTEgKzMyMjMsNyBAQAogI2VuZGlmCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICByZXMgPSBfZ2V0Y3dkMihidWYsIHNpemVvZiBidWYpOwotI2Vsc2UKICAgICByZXMgPSBnZXRjd2QoYnVmLCBzaXplb2YgYnVmKTsKLSNlbmRpZgogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKQEAgLTMzNTksNiArMzI5MCw4IEBACiAKICAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwogICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgc3JjLmZ1bmN0aW9uX25hbWUgPSAibGluayI7CisgICAgZHN0LmZ1bmN0aW9uX25hbWUgPSAibGluayI7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxPJk8mcDpsaW5rIiwga2V5d29yZHMsCiAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywKICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LApAQCAtMzM4OSw3ICszMzIyLDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJsaW5rIiwgZHN0Lm9iamVjdCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnNyYyk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAjZWxzZQpAQCAtMzQwNyw3ICszMzQwLDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJsaW5rIiwgJmRzdCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnNyYyk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAjZW5kaWYKQEAgLTM0MzcsMTcgKzMzNzAsMTEgQEAKICAgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LlxuXAogICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGlzdGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07Ci0jaWZkZWYgSEFWRV9GRE9QRU5ESVIKLSAgICBpbnQgZmQgPSAtMTsKLSNlbmRpZiAvKiBIQVZFX0ZET1BFTkRJUiAqLwotCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCitzdGF0aWMgUHlPYmplY3QgKgorX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmxpc3QpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqdjsKICAgICBIQU5ETEUgaEZpbmRGaWxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAgICAgQk9PTCByZXN1bHQ7CkBAIC0zNDU4LDUxICszMzg1LDIwIEBACiAgICAgUHlfc3NpemVfdCBsZW4gPSBzaXplb2YobmFtZWJ1ZiktNTsKICAgICBQeU9iamVjdCAqcG8gPSBOVUxMOwogICAgIHdjaGFyX3QgKnduYW1lYnVmID0gTlVMTDsKLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0jaWZuZGVmIE1BWF9QQVRICi0jZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKLSNlbmRpZgotICAgIGNoYXIgKnB0OwotICAgIFB5T2JqZWN0ICp2OwotICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKLSAgICBIRElSICBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgICBlcDsKLSAgICBBUElSRVQgcmM7Ci0jZWxzZQotICAgIFB5T2JqZWN0ICp2OwotICAgIERJUiAqZGlycCA9IE5VTEw7Ci0gICAgc3RydWN0IGRpcmVudCAqZXA7Ci0gICAgaW50IHJldHVybl9zdHI7IC8qIGlmIGZhbHNlLCByZXR1cm4gYnl0ZXMgKi8KLSNlbmRpZgogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGgubnVsbGFibGUgPSAxOwotI2lmZGVmIEhBVkVfRkRPUEVORElSCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgcGF0aC5mZCA9IC0xOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOmxpc3RkaXIiLCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogWFhYIFNob3VsZCByZWRvIHRoaXMgcHV0dGluZyB0aGUgKG5vdyBmb3VyKSB2ZXJzaW9ucyBvZiBvcGVuZGlyCi0gICAgICAgaW4gc2VwYXJhdGUgZmlsZXMgaW5zdGVhZCBvZiBoYXZpbmcgdGhlbSBhbGwgaGVyZS4uLiAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoSEFWRV9PUEVORElSKQotICAgIGlmICghcGF0aC5uYXJyb3cpIHsKKyAgICBpZiAoIXBhdGgtPm5hcnJvdykgewogICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKICAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOwogCi0gICAgICAgIGlmICghcGF0aC53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgaWYgKCFwYXRoLT53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KICAgICAgICAgICAgIHBvX3djaGFycyA9IEwiLiI7CiAgICAgICAgICAgICBsZW4gPSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9fd2NoYXJzID0gcGF0aC53aWRlOwotICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgud2lkZSk7CisgICAgICAgICAgICBwb193Y2hhcnMgPSBwYXRoLT53aWRlOworICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgtPndpZGUpOwogICAgICAgICB9CiAgICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwotICAgICAgICB3bmFtZWJ1ZiA9IG1hbGxvYygobGVuICsgNSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICB3bmFtZWJ1ZiA9IFB5TWVtX01hbGxvYygobGVuICsgNSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoIXduYW1lYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBleGl0OwpAQCAtMzUyNSw4ICszNDIxLDcgQEAKICAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICBsaXN0ID0gTlVMTDsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRGaXJzdEZpbGVXIiwgd25hbWVidWYpOworICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgZG8gewpAQCAtMzU1NSwxNSArMzQ1MCwxNSBAQAogICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmROZXh0RmlsZVciLCB3bmFtZWJ1Zik7CisgICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKICAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOwotICAgIGxlbiA9IHBhdGgubGVuZ3RoOworICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLT5uYXJyb3cpOworICAgIGxlbiA9IHBhdGgtPmxlbmd0aDsKICAgICBpZiAobGVuID4gMCkgewogICAgICAgICBjaGFyIGNoID0gbmFtZWJ1ZltsZW4tMV07CiAgICAgICAgIGlmIChjaCAhPSBTRVAgJiYgY2ggIT0gQUxUU0VQICYmIGNoICE9ICc6JykKQEAgLTM1ODIsNyArMzQ3Nyw3IEBACiAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkKICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmRGaXJzdEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZG8gewpAQCAtMzYxMCw3ICszNTA1LDcgQEAKICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgaWYgKCFyZXN1bHQgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9fTU9SRV9GSUxFUykgewogICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yKCJGaW5kTmV4dEZpbGUiLCBuYW1lYnVmKTsKKyAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfSB3aGlsZSAocmVzdWx0ID09IFRSVUUpOwpAQCAtMzYyMCw4NiArMzUxNSwzNCBAQAogICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKICAgICAgICAgICAgIGlmIChsaXN0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiRmluZENsb3NlIiwgcGF0aC5vYmplY3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmICh3bmFtZWJ1ZikKLSAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBQeU1lbV9GcmVlKHduYW1lYnVmKTsKIAogICAgIHJldHVybiBsaXN0OworfSAgLyogZW5kIG9mIF9saXN0ZGlyX3dpbmRvd3Nfbm9fb3BlbmRpciAqLwogCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIGlmIChwYXRoLmxlbmd0aCA+PSBNQVhfUEFUSCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KLSAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOwotICAgIGZvciAocHQgPSBuYW1lYnVmOyAqcHQ7IHB0KyspCi0gICAgICAgIGlmICgqcHQgPT0gQUxUU0VQKQotICAgICAgICAgICAgKnB0ID0gU0VQOwotICAgIGlmIChuYW1lYnVmW2xlbi0xXSAhPSBTRVApCi0gICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwotICAgIHN0cmNweShuYW1lYnVmICsgbGVuLCAiKi4qIik7CisjZWxzZSAgLyogdGh1cyBQT1NJWCwgaWU6IG5vdCAoTVNfV0lORE9XUyBhbmQgbm90IEhBVkVfT1BFTkRJUikgKi8KIAotICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KLQotICAgIHJjID0gRG9zRmluZEZpcnN0KG5hbWVidWYsICAgICAgICAgLyogV2lsZGNhcmQgUGF0dGVybiB0byBNYXRjaCAqLwotICAgICAgICAgICAgICAgICAgICAgICZoZGlyLCAgICAgICAgICAgLyogSGFuZGxlIHRvIFVzZSBXaGlsZSBTZWFyY2ggRGlyZWN0b3J5ICovCi0gICAgICAgICAgICAgICAgICAgICAgRklMRV9SRUFET05MWSB8IEZJTEVfSElEREVOIHwgRklMRV9TWVNURU0gfCBGSUxFX0RJUkVDVE9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAmZXAsIHNpemVvZihlcCksIC8qIFN0cnVjdHVyZSB0byBSZWNlaXZlIERpcmVjdG9yeSBFbnRyeSAqLwotICAgICAgICAgICAgICAgICAgICAgICZzcmNoY250LCAgICAgICAgLyogTWF4IGFuZCBBY3R1YWwgQ291bnQgb2YgRW50cmllcyBQZXIgSXRlcmF0aW9uICovCi0gICAgICAgICAgICAgICAgICAgICAgRklMX1NUQU5EQVJEKTsgICAvKiBGb3JtYXQgb2YgRW50cnkgKEVBcyBvciBOb3QpICovCi0KLSAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgZXJybm8gPSBFTk9FTlQ7Ci0gICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgbGlzdCA9IHBvc2l4X2Vycm9yX3dpdGhfZmlsZW5hbWUocGF0aC5uYXJyb3cpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgaWYgKHNyY2hjbnQgPiAwKSB7IC8qIElmIERpcmVjdG9yeSBpcyBOT1QgVG90YWxseSBFbXB0eSwgKi8KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKGVwLmFjaE5hbWVbMF0gPT0gJy4nCi0gICAgICAgICAgICAmJiAoZXAuYWNoTmFtZVsxXSA9PSAnXDAnIHx8IChlcC5hY2hOYW1lWzFdID09ICcuJyAmJiBlcC5hY2hOYW1lWzJdID09ICdcMCcpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogU2tpcCBPdmVyICIuIiBhbmQgIi4uIiBOYW1lcyAqLwotCi0gICAgICAgICAgICBzdHJjcHkobmFtZWJ1ZiwgZXAuYWNoTmFtZSk7Ci0KLSAgICAgICAgICAgIC8qIExlYXZlIENhc2Ugb2YgTmFtZSBBbG9uZSAtLSBJbiBOYXRpdmUgRm9ybSAqLwotICAgICAgICAgICAgLyogKFJlbW92ZWQgRm9yY2VkIExvd2VyY2FzaW5nIENvZGUpICovCi0KLSAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcobmFtZWJ1Zik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIH0gd2hpbGUgKERvc0ZpbmROZXh0KGhkaXIsICZlcCwgc2l6ZW9mKGVwKSwgJnNyY2hjbnQpID09IE5PX0VSUk9SICYmIHNyY2hjbnQgPiAwKTsKLSAgICB9Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLQotICAgIHJldHVybiBsaXN0OwotI2Vsc2UKK3N0YXRpYyBQeU9iamVjdCAqCitfcG9zaXhfbGlzdGRpcihwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICpsaXN0KQoreworICAgIFB5T2JqZWN0ICp2OworICAgIERJUiAqZGlycCA9IE5VTEw7CisgICAgc3RydWN0IGRpcmVudCAqZXA7CisgICAgaW50IHJldHVybl9zdHI7IC8qIGlmIGZhbHNlLCByZXR1cm4gYnl0ZXMgKi8KKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIGludCBmZCA9IC0xOworI2VuZGlmCiAKICAgICBlcnJubyA9IDA7CiAjaWZkZWYgSEFWRV9GRE9QRU5ESVIKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkgeworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkgewogICAgICAgICAvKiBjbG9zZWRpcigpIGNsb3NlcyB0aGUgRkQsIHNvIHdlIGR1cGxpY2F0ZSBpdCAqLwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGZkID0gZHVwKHBhdGguZmQpOworICAgICAgICBmZCA9IGR1cChwYXRoLT5mZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICAgICAgaWYgKGZkID09IC0xKSB7CkBAIC0zNzE3LDEwICszNTYwLDEwIEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIGNoYXIgKm5hbWU7Ci0gICAgICAgIGlmIChwYXRoLm5hcnJvdykgewotICAgICAgICAgICAgbmFtZSA9IHBhdGgubmFycm93OworICAgICAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgICAgICBuYW1lID0gcGF0aC0+bmFycm93OwogICAgICAgICAgICAgLyogb25seSByZXR1cm4gYnl0ZXMgaWYgdGhleSBzcGVjaWZpZWQgYSBieXRlcyBvYmplY3QgKi8KLSAgICAgICAgICAgIHJldHVybl9zdHIgPSAhKFB5Qnl0ZXNfQ2hlY2socGF0aC5vYmplY3QpKTsKKyAgICAgICAgICAgIHJldHVybl9zdHIgPSAhKFB5Qnl0ZXNfQ2hlY2socGF0aC0+b2JqZWN0KSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBuYW1lID0gIi4iOwpAQCAtMzczMywxNCArMzU3NiwxNCBAQAogICAgIH0KIAogICAgIGlmIChkaXJwID09IE5VTEwpIHsKLSAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKHBhdGgpOwogI2lmZGVmIEhBVkVfRkRPUEVORElSCiAgICAgICAgIGlmIChmZCAhPSAtMSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgfQotI2VuZGlmIC8qIEhBVkVfRkRPUEVORElSICovCisjZW5kaWYKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7CkBAIC0zNzU2LDcgKzM1OTksNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNzg2LDE3ICszNjI5LDQ0IEBACiAjaWZkZWYgSEFWRV9GRE9QRU5ESVIKICAgICAgICAgaWYgKGZkID4gLTEpCiAgICAgICAgICAgICByZXdpbmRkaXIoZGlycCk7Ci0jZW5kaWYgLyogSEFWRV9GRE9QRU5ESVIgKi8KKyNlbmRpZgogICAgICAgICBjbG9zZWRpcihkaXJwKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotCiAgICAgcmV0dXJuIGxpc3Q7Cit9ICAvKiBlbmQgb2YgX3Bvc2l4X2xpc3RkaXIgKi8KKyNlbmRpZiAgLyogd2hpY2ggT1MgKi8KIAotI2VuZGlmIC8qIHdoaWNoIE9TICovCi19ICAvKiBlbmQgb2YgcG9zaXhfbGlzdGRpciAqLworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxpc3RkaXIiOworICAgIHBhdGgubnVsbGFibGUgPSAxOworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgcGF0aC5mZCA9IC0xOworI2VuZGlmCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6bGlzdGRpciIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCisgICAgcmV0dXJuX3ZhbHVlID0gX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKCZwYXRoLCBsaXN0KTsKKyNlbHNlCisgICAgcmV0dXJuX3ZhbHVlID0gX3Bvc2l4X2xpc3RkaXIoJnBhdGgsIGxpc3QpOworI2VuZGlmCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiAjaWZkZWYgTVNfV0lORE9XUwogLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGFic3BhdGggb24gd2luMzIgKi8KQEAgLTM4MjMsNyArMzY5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvdXRidWYsICZ3dGVtcCk7CiAgICAgICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKLSAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX01hbGxvYyhyZXN1bHQgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7CkBAIC0zODMzLDcgKzM3MDMsNyBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcG8pOwogICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKLSAgICAgICAgICAgIGZyZWUod291dGJ1ZnApOworICAgICAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KICAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCkBAIC0zOTAzLDcgKzM3NzMsNyBAQAogICAgIGlmKCFidWZfc2l6ZSkKICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcG8pOwogCi0gICAgdGFyZ2V0X3BhdGggPSAod2NoYXJfdCAqKW1hbGxvYygoYnVmX3NpemUrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICB0YXJnZXRfcGF0aCA9ICh3Y2hhcl90ICopUHlNZW1fTWFsbG9jKChidWZfc2l6ZSsxKSpzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmKCF0YXJnZXRfcGF0aCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKQEAgLTM5MTcsMzYgKzM3ODcsMTEgQEAKIAogICAgIHRhcmdldF9wYXRoW3Jlc3VsdF9sZW5ndGhdID0gMDsKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKLSAgICBmcmVlKHRhcmdldF9wYXRoKTsKKyAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogCiB9IC8qIGVuZCBvZiBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2dldGZpbGVpbmZvcm1hdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhGaWxlOwotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87Ci0gICAgaW50IGZkOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9nZXRmaWxlaW5mb3JtYXRpb24iLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KLSAgICBoRmlsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwotICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KLSAgICBpZiAoIUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhGaWxlLCAmaW5mbykpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigiX2dldGZpbGVpbmZvcm1hdGlvbiIsIE5VTEwpOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIGluZm8uZHdWb2x1bWVTZXJpYWxOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubkZpbGVJbmRleEhpZ2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubkZpbGVJbmRleExvdyk7Ci19Ci0KIFB5RG9jX1NUUlZBUihwb3NpeF9faXNkaXJfX2RvY19fLAogIlJldHVybiB0cnVlIGlmIHRoZSBwYXRobmFtZSByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiIpOwogCkBAIC0zOTg1LDYgKzM4MzAsNDcgQEAKICAgICBlbHNlCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KKworUHlEb2NfU1RSVkFSKHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX18sCisiUmV0dXJuIHZvbHVtZSBtb3VudCBwb2ludCBvZiB0aGUgc3BlY2lmaWVkIHBhdGguIik7CisKKy8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBpc21vdW50IG9uIHdpbmRvd3MgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKKyAgICB3Y2hhcl90ICpwYXRoLCAqbW91bnRwYXRoPU5VTEw7CisgICAgc2l6ZV90IGJ1ZnNpemU7CisgICAgQk9PTCByZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXR2b2x1bWVwYXRobmFtZSIsICZwbykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFZvbHVtZSBwYXRoIHNob3VsZCBiZSBzaG9ydGVyIHRoYW4gZW50aXJlIHBhdGggKi8KKyAgICBidWZzaXplID0gbWF4KE1BWF9QQVRILCB3Y3NsZW4ocGF0aCkgKiAyICogc2l6ZW9mKHdjaGFyX3QpKzEpOworICAgIG1vdW50cGF0aCA9ICh3Y2hhcl90ICopUHlNZW1fTWFsbG9jKGJ1ZnNpemUpOworICAgIGlmIChtb3VudHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gR2V0Vm9sdW1lUGF0aE5hbWVXKHBhdGgsIG1vdW50cGF0aCwgYnVmc2l6ZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmV0KSB7CisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiX2dldHZvbHVtZXBhdGhuYW1lIiwgcG8pOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIobW91bnRwYXRoLCB3Y3NsZW4obW91bnRwYXRoKSk7CisKK2V4aXQ6CisgICAgUHlNZW1fRnJlZShtb3VudHBhdGgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisvKiBlbmQgb2YgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lICovCisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9ta2Rpcl9fZG9jX18sCkBAIC00MDA5LDYgKzM4OTUsNyBAQAogICAgIGludCByZXN1bHQ7CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gIm1rZGlyIjsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwga2V5d29yZHMsCiAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCiAjaWZkZWYgSEFWRV9NS0RJUkFUCkBAIC00MDI4LDcgKzM5MTUsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoIm1rZGlyIiwgcGF0aC5vYmplY3QpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICNlbHNlCkBAIC00MDQ1LDcgKzM5MzIsNyBAQAogI2VuZGlmCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJta2RpciIsICZwYXRoKTsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAjZW5kaWYKQEAgLTQxNjMsNiArNDA1MCw4IEBACiAKICAgICBtZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwogICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgc3JjLmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lOworICAgIGRzdC5mdW5jdGlvbl9uYW1lID0gZnVuY3Rpb25fbmFtZTsKICAgICBzdHJjcHkoZm9ybWF0LCAiTyZPJnwkTyZPJjoiKTsKICAgICBzdHJjYXQoZm9ybWF0LCBmdW5jdGlvbl9uYW1lKTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsIGZvcm1hdCwga2V5d29yZHMsCkBAIC00MTk2LDcgKzQwODUsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoZnVuY3Rpb25fbmFtZSwgZHN0Lm9iamVjdCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnNyYyk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKQEAgLTQyMTEsNyArNDEwMCw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcihmdW5jdGlvbl9uYW1lLCAmZHN0KTsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmc3JjKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICNlbmRpZgpAQCAtNDI3NSw2ICs0MTY0LDcgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicm1kaXIiOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIGtleXdvcmRzLAogICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAogI2lmZGVmIEhBVkVfVU5MSU5LQVQKQEAgLTQzMDMsNyArNDE5Myw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigicm1kaXIiLCAmcGF0aCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCkBAIC00NDMxLDYgKzQzMjEsNyBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogCiAgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJ1bmxpbmsiOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBrZXl3b3JkcywKICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKICNpZmRlZiBIQVZFX1VOTElOS0FUCkBAIC00NDU5LDcgKzQzNTAsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInVubGluayIsICZwYXRoKTsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKQEAgLTQ3NjIsNiArNDY1Myw3IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInV0aW1lIjsKICAgICBtZW1zZXQoJnV0aW1lLCAwLCBzaXplb2YodXRpbWVfdCkpOwogI2lmIFVUSU1FX0hBVkVfRkQKICAgICBwYXRoLmFsbG93X2ZkID0gMTsKQEAgLTQ4NTcsNyArNDc0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgidXRpbWUiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCkBAIC00ODY2LDcgKzQ3NTgsNyBAQAogICAgICAgICBHZXRTeXN0ZW1UaW1lKCZub3cpOwogICAgICAgICBpZiAoIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZtdGltZSkgfHwKICAgICAgICAgICAgICFTeXN0ZW1UaW1lVG9GaWxlVGltZSgmbm93LCAmYXRpbWUpKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfQpAQCAtNDg3OSw3ICs0NzcxLDcgQEAKICAgICAgICAgICAgYXMgdGhhdCBtYXkgY29uZnVzZSB0aGUgdXNlciBpbnRvIGJlbGlldmluZyB0aGF0CiAgICAgICAgICAgIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBmaWxlLCB3aGVuIGl0IGFsc28KICAgICAgICAgICAgY291bGQgYmUgdGhlIHRpbWUgc3RhbXAgdGhhdCBnaXZlcyBhIHByb2JsZW0uICovCi0gICAgICAgIHdpbjMyX2Vycm9yKCJ1dGltZSIsIE5VTEwpOworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KQEAgLTUwMTMsMTAgKzQ5MDUsNiBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogT21pdCBQc2V1ZG8tRW52IFZhcnMgdGhhdCBXb3VsZCBDb25mdXNlIFByb2dyYW1zIGlmIFBhc3NlZCBPbiAqLwotICAgICAgICBpZiAoc3RyaWNtcChrLCAiQkVHSU5MSUJQQVRIIikgIT0gMCAmJiBzdHJpY21wKGssICJFTkRMSUJQQVRIIikgIT0gMCkgewotI2VuZGlmCiAgICAgICAgIGsgPSBQeUJ5dGVzX0FzU3RyaW5nKGtleTIpOwogICAgICAgICB2ID0gUHlCeXRlc19Bc1N0cmluZyh2YWwyKTsKICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShrZXkyKSArIFB5Qnl0ZXNfR0VUX1NJWkUodmFsMikgKyAyOwpAQCAtNTAzMiw5ICs0OTIwLDYgQEAKICAgICAgICAgZW52bGlzdFtlbnZjKytdID0gcDsKICAgICAgICAgUHlfREVDUkVGKGtleTIpOwogICAgICAgICBQeV9ERUNSRUYodmFsMik7Ci0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIFB5X0RFQ1JFRih2YWxzKTsKICAgICBQeV9ERUNSRUYoa2V5cyk7CkBAIC01MTYwLDYgKzUwNDUsNyBAQAogICAgICAgIGxpa2UgcG9zaXguZW52aXJvbi4gKi8KIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiZXhlY3ZlIjsKICNpZmRlZiBIQVZFX0ZFWEVDVkUKICAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgpAQCAtNTE5OSw3ICs1MDg1LDcgQEAKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCi0gICAgcGF0aF9wb3NpeF9lcnJvcigiZXhlY3ZlIiwgJnBhdGgpOworICAgIHBhdGhfZXJyb3IoJnBhdGgpOwogCiAgICAgd2hpbGUgKC0tZW52YyA+PSAwKQogICAgICAgICBQeU1lbV9ERUwoZW52bGlzdFtlbnZjXSk7CkBAIC01Mjc1LDE4ICs1MTYxLDEyIEBACiAgICAgfQogICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKIAotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNwYXdudmFsID0gc3Bhd252KG1vZGUsIHBhdGgsIGFyZ3ZsaXN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotI2Vsc2UKICAgICBpZiAobW9kZSA9PSBfT0xEX1BfT1ZFUkxBWSkKICAgICAgICAgbW9kZSA9IF9QX09WRVJMQVk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgc3Bhd252YWwgPSBfc3Bhd252KG1vZGUsIHBhdGgsIGFyZ3ZsaXN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotI2VuZGlmCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CiAgICAgUHlfREVDUkVGKG9wYXRoKTsKQEAgLTUyOTQsMTEgKzUxNzQsNyBAQAogICAgIGlmIChzcGF3bnZhbCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgZWxzZQotI2lmIFNJWkVPRl9MT05HID09IFNJWkVPRl9WT0lEX1AKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImwiLCAobG9uZykgc3Bhd252YWwpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIkwiLCAoUFlfTE9OR19MT05HKSBzcGF3bnZhbCk7Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoX1B5X1BBUlNFX0lOVFBUUiwgc3Bhd252YWwpOwogfQogCiAKQEAgLTUzNzQsMjcgKzUyNTAsMTcgQEAKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWxfMTsKIAotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNwYXdudmFsID0gc3Bhd252ZShtb2RlLCBwYXRoLCBhcmd2bGlzdCwgZW52bGlzdCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSNlbHNlCiAgICAgaWYgKG1vZGUgPT0gX09MRF9QX09WRVJMQVkpCiAgICAgICAgIG1vZGUgPSBfUF9PVkVSTEFZOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aCwgYXJndmxpc3QsIGVudmxpc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZW5kaWYKIAogICAgIGlmIChzcGF3bnZhbCA9PSAtMSkKICAgICAgICAgKHZvaWQpIHBvc2l4X2Vycm9yKCk7CiAgICAgZWxzZQotI2lmIFNJWkVPRl9MT05HID09IFNJWkVPRl9WT0lEX1AKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgibCIsIChsb25nKSBzcGF3bnZhbCk7Ci0jZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJMIiwgKFBZX0xPTkdfTE9ORykgc3Bhd252YWwpOwotI2VuZGlmCisgICAgICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoX1B5X1BBUlNFX0lOVFBUUiwgc3Bhd252YWwpOwogCiAgICAgd2hpbGUgKC0tZW52YyA+PSAwKQogICAgICAgICBQeU1lbV9ERUwoZW52bGlzdFtlbnZjXSk7CkBAIC01NDA2LDE4MyArNTI3Miw2IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotLyogT1MvMiBzdXBwb3J0cyBzcGF3bnZwICYgc3Bhd252cGUgbmF0aXZlbHkgKi8KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotUHlEb2NfU1RSVkFSKHBvc2l4X3NwYXdudnBfX2RvY19fLAotInNwYXdudnAobW9kZSwgZmlsZSwgYXJncylcblxuXAotRXhlY3V0ZSB0aGUgcHJvZ3JhbSAnZmlsZScgaW4gYSBuZXcgcHJvY2VzcywgdXNpbmcgdGhlIGVudmlyb25tZW50XG5cCi1zZWFyY2ggcGF0aCB0byBmaW5kIHRoZSBmaWxlLlxuXAotXG5cCi0gICAgbW9kZTogbW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uXG5cCi0gICAgZmlsZTogZXhlY3V0YWJsZSBmaWxlIG5hbWVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NwYXdudnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2OwotICAgIGNoYXIgKiphcmd2bGlzdDsKLSAgICBpbnQgbW9kZSwgaSwgYXJnYzsKLSAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKLSAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKLQotICAgIC8qIHNwYXdudnAgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQotICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCi0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252cCIsICZtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGF3bnZwKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOwotICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkgewotICAgICAgICAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGkpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAic3Bhd252cCgpIGFyZyAyIG11c3QgY29udGFpbiBvbmx5IHN0cmluZ3MiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWYgZGVmaW5lZChQWUNDX0dDQykKLSAgICBzcGF3bnZhbCA9IHNwYXdudnAobW9kZSwgcGF0aCwgYXJndmxpc3QpOwotI2Vsc2UKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZwKG1vZGUsIHBhdGgsIGFyZ3ZsaXN0KTsKLSNlbmRpZgotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLQotICAgIGlmIChzcGF3bnZhbCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibCIsIChsb25nKSBzcGF3bnZhbCk7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKHBvc2l4X3NwYXdudnBlX19kb2NfXywKLSJzcGF3bnZwZShtb2RlLCBmaWxlLCBhcmdzLCBlbnYpXG5cblwKLUV4ZWN1dGUgdGhlIHByb2dyYW0gJ2ZpbGUnIGluIGEgbmV3IHByb2Nlc3MsIHVzaW5nIHRoZSBlbnZpcm9ubWVudFxuXAotc2VhcmNoIHBhdGggdG8gZmluZCB0aGUgZmlsZS5cblwKLVxuXAotICAgIG1vZGU6IG1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvblxuXAotICAgIGZpbGU6IGV4ZWN1dGFibGUgZmlsZSBuYW1lXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MiKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NwYXdudnBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndiwgKmVudjsKLSAgICBjaGFyICoqYXJndmxpc3Q7Ci0gICAgY2hhciAqKmVudmxpc3Q7Ci0gICAgUHlPYmplY3QgKnJlcz1OVUxMOwotICAgIGludCBtb2RlOwotICAgIFB5X3NzaXplX3QgYXJnYywgaSwgZW52YzsKLSAgICBQeV9pbnRwdHJfdCBzcGF3bnZhbDsKLSAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKLSAgICBpbnQgbGFzdGFyZyA9IDA7Ci0KLSAgICAvKiBzcGF3bnZwZSBoYXMgZm91ciBhcmd1bWVudHM6IChtb2RlLCBwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQotICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MgYW5kIGVudiBpcyBhIGRpY3Rpb25hcnkKLSAgICAgICBsaWtlIHBvc2l4LmVudmlyb24uICovCi0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlldE9POnNwYXdudnBlIiwgJm1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndiwgJmVudikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7Ci0gICAgICAgIGFyZ2MgPSBQeVR1cGxlX1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeVR1cGxlX0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNwYXdudnBlKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7Ci0gICAgfQotICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGVudikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGF3bnZwZSgpIGFyZyAzIG11c3QgYmUgYSBtYXBwaW5nIG9iamVjdCIpOwotICAgICAgICBnb3RvIGZhaWxfMDsKLSAgICB9Ci0KLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7Ci0gICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBmYWlsXzA7Ci0gICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgaWYgKCFmc2NvbnZlcnRfc3RyZHVwKCgqZ2V0aXRlbSkoYXJndiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndmxpc3RbaV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBsYXN0YXJnID0gaTsKLSAgICAgICAgICAgIGdvdG8gZmFpbF8xOwotICAgICAgICB9Ci0gICAgfQotICAgIGxhc3RhcmcgPSBhcmdjOwotICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKLQotICAgIGVudmxpc3QgPSBwYXJzZV9lbnZsaXN0KGVudiwgJmVudmMpOwotICAgIGlmIChlbnZsaXN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbF8xOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgc3Bhd252YWwgPSBzcGF3bnZwZShtb2RlLCBwYXRoLCBhcmd2bGlzdCwgZW52bGlzdCk7Ci0jZWxzZQotICAgIHNwYXdudmFsID0gX3NwYXdudnBlKG1vZGUsIHBhdGgsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKLSNlbmRpZgotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoc3Bhd252YWwgPT0gLTEpCi0gICAgICAgICh2b2lkKSBwb3NpeF9lcnJvcigpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgibCIsIChsb25nKSBzcGF3bnZhbCk7Ci0KLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7Ci0gIGZhaWxfMToKLSAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgbGFzdGFyZyk7Ci0gIGZhaWxfMDoKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiByZXM7Ci19Ci0jZW5kaWYgLyogUFlPU19PUzIgKi8KICNlbmRpZiAvKiBIQVZFX1NQQVdOViAqLwogCiAKQEAgLTY2MzIsMjMgKzYzMjEsOCBAQAogICAgIGludCBzaWc7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6a2lsbCIsICZwaWQsICZzaWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKLSAgICBpZiAoc2lnID09IFhDUFRfU0lHTkFMX0lOVFIgfHwgc2lnID09IFhDUFRfU0lHTkFMX0JSRUFLKSB7Ci0gICAgICAgIEFQSVJFVCByYzsKLSAgICAgICAgaWYgKChyYyA9IERvc1NlbmRTaWduYWxFeGNlcHRpb24ocGlkLCBzaWcpKSAhPSBOT19FUlJPUikKLSAgICAgICAgICAgIHJldHVybiBvczJfZXJyb3IocmMpOwotCi0gICAgfSBlbHNlIGlmIChzaWcgPT0gWENQVF9TSUdOQUxfS0lMTFBST0MpIHsKLSAgICAgICAgQVBJUkVUIHJjOwotICAgICAgICBpZiAoKHJjID0gRG9zS2lsbFByb2Nlc3MoREtQX1BST0NFU1MsIHBpZCkpICE9IE5PX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIG9zMl9lcnJvcihyYyk7Ci0KLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIE5VTEw7IC8qIFVucmVjb2duaXplZCBTaWduYWwgUmVxdWVzdGVkICovCi0jZWxzZQogICAgIGlmIChraWxsKHBpZCwgc2lnKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0jZW5kaWYKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC02Njg2LDE2ICs2MzYwLDE3IEBACiB3aW4zMl9raWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIERXT1JEIHBpZCwgc2lnLCBlcnI7CisgICAgcGlkX3QgcGlkOworICAgIERXT1JEIHNpZywgZXJyOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImtrOmtpbGwiLCAmcGlkLCAmc2lnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiazpraWxsIiwgJnBpZCwgJnNpZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQ29uc29sZSBwcm9jZXNzZXMgd2hpY2ggc2hhcmUgYSBjb21tb24gY29uc29sZSBjYW4gYmUgc2VudCBDVFJMK0Mgb3IKICAgICAgICBDVFJMK0JSRUFLIGV2ZW50cywgcHJvdmlkZWQgdGhleSBoYW5kbGUgc2FpZCBldmVudHMuICovCiAgICAgaWYgKHNpZyA9PSBDVFJMX0NfRVZFTlQgfHwgc2lnID09IENUUkxfQlJFQUtfRVZFTlQpIHsKLSAgICAgICAgaWYgKEdlbmVyYXRlQ29uc29sZUN0cmxFdmVudChzaWcsIHBpZCkgPT0gMCkgeworICAgICAgICBpZiAoR2VuZXJhdGVDb25zb2xlQ3RybEV2ZW50KHNpZywgKERXT1JEKXBpZCkgPT0gMCkgewogICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOwogICAgICAgICB9CkBAIC02NzA1LDcgKzYzODAsNyBAQAogCiAgICAgLyogSWYgdGhlIHNpZ25hbCBpcyBvdXRzaWRlIG9mIHdoYXQgR2VuZXJhdGVDb25zb2xlQ3RybEV2ZW50IGNhbiB1c2UsCiAgICAgICAgYXR0ZW1wdCB0byBvcGVuIGFuZCB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MuICovCi0gICAgaGFuZGxlID0gT3BlblByb2Nlc3MoUFJPQ0VTU19BTExfQUNDRVNTLCBGQUxTRSwgcGlkKTsKKyAgICBoYW5kbGUgPSBPcGVuUHJvY2VzcyhQUk9DRVNTX0FMTF9BQ0NFU1MsIEZBTFNFLCAoRFdPUkQpcGlkKTsKICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOwpAQCAtNzExMSw3ICs2Nzg2LDcgQEAKICAgICBQeV9pbnRwdHJfdCBwaWQ7CiAgICAgaW50IHN0YXR1cywgb3B0aW9uczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLCAmcGlkLCAmb3B0aW9ucykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsICZwaWQsICZvcHRpb25zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHBpZCA9IF9jd2FpdCgmc3RhdHVzLCBwaWQsIG9wdGlvbnMpOwpAQCAtNzEyMCw3ICs2Nzk1LDcgQEAKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKICAgICAvKiBzaGlmdCB0aGUgc3RhdHVzIGxlZnQgYSBieXRlIHNvIHRoaXMgaXMgbW9yZSBsaWtlIHRoZSBQT1NJWCB3YWl0cGlkICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5pIiwgUHlMb25nX0Zyb21QaWQocGlkKSwgc3RhdHVzIDw8IDgpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKF9QeV9QQVJTRV9JTlRQVFIgImkiLCBwaWQsIHN0YXR1cyA8PCA4KTsKIH0KICNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgfHwgSEFWRV9DV0FJVCAqLwogCkBAIC03MTcxLDYgKzY4NDYsNyBAQAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogCiAgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJyZWFkbGluayI7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKICNpZmRlZiBIQVZFX1JFQURMSU5LQVQKQEAgLTcxOTEsNyArNjg2Nyw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChsZW5ndGggPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoInJlYWRsaW5rIiwgJnBhdGgpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KIApAQCAtNzIyNyw4ICs2OTAzLDkgQEAKIC8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCiBzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpID0gTlVMTDsKIHN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua0EpKExQU1RSLCBMUFNUUiwgRFdPUkQpID0gTlVMTDsKKwogc3RhdGljIGludAotY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkKK2NoZWNrX0NyZWF0ZVN5bWJvbGljTGluayh2b2lkKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CiAgICAgLyogb25seSByZWNoZWNrICovCkBAIC03MjQyLDU1ICs2OTE5LDU3IEBACiAgICAgcmV0dXJuIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICYmIFB5X0NyZWF0ZVN5bWJvbGljTGlua0EpOwogfQogCi12b2lkIF9kaXJuYW1lVyhXQ0hBUiAqcGF0aCkgewotICAgIC8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi0KKy8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCitzdGF0aWMgdm9pZAorX2Rpcm5hbWVXKFdDSEFSICpwYXRoKQorewogICAgIFdDSEFSICpwdHI7CiAKICAgICAvKiB3YWxrIHRoZSBwYXRoIGZyb20gdGhlIGVuZCB1bnRpbCBhIGJhY2tzbGFzaCBpcyBlbmNvdW50ZXJlZCAqLwotICAgIGZvcihwdHIgPSBwYXRoICsgd2NzbGVuKHBhdGgpOyBwdHIgIT0gcGF0aDsgcHRyLS0pCi0gICAgewotICAgICAgICBpZigqcHRyID09ICpMIlxcIiB8fCAqcHRyID09ICpMIi8iKSB7CisgICAgZm9yKHB0ciA9IHBhdGggKyB3Y3NsZW4ocGF0aCk7IHB0ciAhPSBwYXRoOyBwdHItLSkgeworICAgICAgICBpZiAoKnB0ciA9PSBMJ1xcJyB8fCAqcHRyID09IEwnLycpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgIH0KICAgICAqcHRyID0gMDsKIH0KIAotdm9pZCBfZGlybmFtZUEoY2hhciAqcGF0aCkgewotICAgIC8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi0KKy8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCitzdGF0aWMgdm9pZAorX2Rpcm5hbWVBKGNoYXIgKnBhdGgpCit7CiAgICAgY2hhciAqcHRyOwogCiAgICAgLyogd2FsayB0aGUgcGF0aCBmcm9tIHRoZSBlbmQgdW50aWwgYSBiYWNrc2xhc2ggaXMgZW5jb3VudGVyZWQgKi8KLSAgICBmb3IocHRyID0gcGF0aCArIHN0cmxlbihwYXRoKTsgcHRyICE9IHBhdGg7IHB0ci0tKQotICAgIHsKLSAgICAgICAgaWYoKnB0ciA9PSAnXFwnIHx8ICpwdHIgPT0gJy8nKSB7CisgICAgZm9yKHB0ciA9IHBhdGggKyBzdHJsZW4ocGF0aCk7IHB0ciAhPSBwYXRoOyBwdHItLSkgeworICAgICAgICBpZiAoKnB0ciA9PSAnXFwnIHx8ICpwdHIgPT0gJy8nKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICB9CiAgICAgKnB0ciA9IDA7CiB9CiAKLWludCBfaXNfYWJzVyhXQ0hBUiAqcGF0aCkgewotICAgIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KLQorLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLworc3RhdGljIGludAorX2lzX2Fic1coY29uc3QgV0NIQVIgKnBhdGgpCit7CiAgICAgcmV0dXJuIHBhdGhbMF0gPT0gTCdcXCcgfHwgcGF0aFswXSA9PSBMJy8nIHx8IHBhdGhbMV0gPT0gTCc6JzsKIAogfQogCi1pbnQgX2lzX2Fic0EoY2hhciAqcGF0aCkgewotICAgIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KLQorLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLworc3RhdGljIGludAorX2lzX2Fic0EoY29uc3QgY2hhciAqcGF0aCkKK3sKICAgICByZXR1cm4gcGF0aFswXSA9PSAnXFwnIHx8IHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMV0gPT0gJzonOwogCiB9CiAKLXZvaWQgX2pvaW5XKFdDSEFSICpkZXN0X3BhdGgsIGNvbnN0IFdDSEFSICpyb290LCBjb25zdCBXQ0hBUiAqcmVzdCkgewotICAgIC8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCi0gICAgaW50IHJvb3RfbGVuOworLyogam9pbiByb290IGFuZCByZXN0IHdpdGggYSBiYWNrc2xhc2ggKi8KK3N0YXRpYyB2b2lkCitfam9pblcoV0NIQVIgKmRlc3RfcGF0aCwgY29uc3QgV0NIQVIgKnJvb3QsIGNvbnN0IFdDSEFSICpyZXN0KQoreworICAgIHNpemVfdCByb290X2xlbjsKIAotICAgIGlmKF9pc19hYnNXKHJlc3QpKSB7CisgICAgaWYgKF9pc19hYnNXKHJlc3QpKSB7CiAgICAgICAgIHdjc2NweShkZXN0X3BhdGgsIHJlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzI5OSwxNyArNjk3OCwxOSBAQAogCiAgICAgd2NzY3B5KGRlc3RfcGF0aCwgcm9vdCk7CiAgICAgaWYocm9vdF9sZW4pIHsKLSAgICAgICAgZGVzdF9wYXRoW3Jvb3RfbGVuXSA9ICpMIlxcIjsKLSAgICAgICAgcm9vdF9sZW4gKz0gMTsKKyAgICAgICAgZGVzdF9wYXRoW3Jvb3RfbGVuXSA9IEwnXFwnOworICAgICAgICByb290X2xlbisrOwogICAgIH0KICAgICB3Y3NjcHkoZGVzdF9wYXRoK3Jvb3RfbGVuLCByZXN0KTsKIH0KIAotdm9pZCBfam9pbkEoY2hhciAqZGVzdF9wYXRoLCBjb25zdCBjaGFyICpyb290LCBjb25zdCBjaGFyICpyZXN0KSB7Ci0gICAgLyogam9pbiByb290IGFuZCByZXN0IHdpdGggYSBiYWNrc2xhc2ggKi8KLSAgICBpbnQgcm9vdF9sZW47CisvKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLworc3RhdGljIHZvaWQKK19qb2luQShjaGFyICpkZXN0X3BhdGgsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKnJlc3QpCit7CisgICAgc2l6ZV90IHJvb3RfbGVuOwogCi0gICAgaWYoX2lzX2Fic0EocmVzdCkpIHsKKyAgICBpZiAoX2lzX2Fic0EocmVzdCkpIHsKICAgICAgICAgc3RyY3B5KGRlc3RfcGF0aCwgcmVzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03MzE5LDE0ICs3MDAwLDE1IEBACiAgICAgc3RyY3B5KGRlc3RfcGF0aCwgcm9vdCk7CiAgICAgaWYocm9vdF9sZW4pIHsKICAgICAgICAgZGVzdF9wYXRoW3Jvb3RfbGVuXSA9ICdcXCc7Ci0gICAgICAgIHJvb3RfbGVuICs9IDE7CisgICAgICAgIHJvb3RfbGVuKys7CiAgICAgfQogICAgIHN0cmNweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwogfQogCi1pbnQgX2NoZWNrX2RpclcoV0NIQVIgKnNyYywgV0NIQVIgKmRlc3QpCisvKiBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCBhdCBzcmMgcmVsYXRpdmUgdG8gZGVzdCBpcyBhIGRpcmVjdG9yeSAqLworc3RhdGljIGludAorX2NoZWNrX2RpclcoV0NIQVIgKnNyYywgV0NIQVIgKmRlc3QpCiB7Ci0gICAgLyogUmV0dXJuIFRydWUgaWYgdGhlIHBhdGggYXQgc3JjIHJlbGF0aXZlIHRvIGRlc3QgaXMgYSBkaXJlY3RvcnkgKi8KICAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIHNyY19pbmZvOwogICAgIFdDSEFSIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKICAgICBXQ0hBUiBzcmNfcmVzb2x2ZWRbTUFYX1BBVEhdID0gTCIiOwpAQCAtNzM0MiwxOCArNzAyNCwxOSBAQAogICAgICk7CiB9CiAKLWludCBfY2hlY2tfZGlyQShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCisvKiBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCBhdCBzcmMgcmVsYXRpdmUgdG8gZGVzdCBpcyBhIGRpcmVjdG9yeSAqLworc3RhdGljIGludAorX2NoZWNrX2RpckEoY2hhciAqc3JjLCBjaGFyICpkZXN0KQogewotICAgIC8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKICAgICBjaGFyIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKICAgICBjaGFyIHNyY19yZXNvbHZlZFtNQVhfUEFUSF0gPSAiIjsKIAogICAgIC8qIGRlc3RfcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpICovCiAgICAgc3RyY3B5KGRlc3RfcGFyZW50LCBkZXN0KTsKLSAgICBfZGlybmFtZVcoZGVzdF9wYXJlbnQpOworICAgIF9kaXJuYW1lQShkZXN0X3BhcmVudCk7CiAgICAgLyogc3JjX3Jlc29sdmVkID0gb3MucGF0aC5qb2luKGRlc3RfcGFyZW50LCBzcmMpICovCi0gICAgX2pvaW5XKHNyY19yZXNvbHZlZCwgZGVzdF9wYXJlbnQsIHNyYyk7CisgICAgX2pvaW5BKHNyY19yZXNvbHZlZCwgZGVzdF9wYXJlbnQsIHNyYyk7CiAgICAgcmV0dXJuICgKICAgICAgICAgR2V0RmlsZUF0dHJpYnV0ZXNFeEEoc3JjX3Jlc29sdmVkLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZzcmNfaW5mbykKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQpAQCAtNzM3OSw4ICs3MDYyLDEwIEBACiAjZW5kaWYKIAogICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7CisgICAgc3JjLmZ1bmN0aW9uX25hbWUgPSAic3ltbGluayI7CiAgICAgc3JjLmFyZ3VtZW50X25hbWUgPSAic3JjIjsKICAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIGRzdC5mdW5jdGlvbl9uYW1lID0gInN5bWxpbmsiOwogICAgIGRzdC5hcmd1bWVudF9uYW1lID0gImRzdCI7CiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC03NDMzLDcgKzcxMTgsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoInN5bWxpbmsiLCBzcmMub2JqZWN0KTsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmc3JjKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KIApAQCAtNzQ0OSw3ICs3MTM0LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJzeW1saW5rIiwgJmRzdCk7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnNyYyk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAjZW5kaWYKQEAgLTc2MTEsMzEgKzcyOTYsNyBAQAogdGltZXMuICBUaGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlc2UgZmllbGRzOlxuXAogICAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKSIpOwogCi0jaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQotc3RhdGljIGxvbmcKLXN5c3RlbV91cHRpbWUodm9pZCkKLXsKLSAgICBVTE9ORyAgICAgdmFsdWUgPSAwOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIERvc1F1ZXJ5U3lzSW5mbyhRU1ZfTVNfQ09VTlQsIFFTVl9NU19DT1VOVCwgJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgLyogQ3VycmVudGx5IE9ubHkgVXB0aW1lIGlzIFByb3ZpZGVkIC0tIE90aGVycyBMYXRlciAqLwotICAgIHJldHVybiBidWlsZF90aW1lc19yZXN1bHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX3V0aW1lIC8gSFogKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX3N0aW1lIC8gSFogKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX2N1dGltZSAvIEhaICovLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpMCAvKiB0LnRtc19jc3RpbWUgLyBIWiAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN5c3RlbV91cHRpbWUoKSAvIDEwMDApOwotfQotI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKQEAgLTc2NTcsNyArNzMxOCw3IEBACiAgICAgICAgIChkb3VibGUpMCwKICAgICAgICAgKGRvdWJsZSkwKTsKIH0KLSNlbHNlIC8qIE5laXRoZXIgV2luZG93cyBub3IgT1MvMiAqLworI2Vsc2UgLyogTm90IFdpbmRvd3MgKi8KICNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECiBzdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzc5OCw2ICs3NDU5LDcgQEAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwogCiAgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJvcGVuIjsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCiAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKICAgICAgICAgJmZsYWdzLCAmbW9kZSwKQEAgLTc4MjQsMTMgKzc0ODYsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoZmQgPT0gLTEpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIC8qIGZvcmNlIHVzZSBvZiBwb3NpeF9lcnJvciBoZXJlIGZvciBleGFjdCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLwotICAgICAgICBpZiAocGF0aC53aWRlKQotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoIm9wZW4iLCAmcGF0aCk7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoLm9iamVjdCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKQEAgLTc5NTksNyArNzYxNSw3IEBACiBwb3NpeF9sc2VlayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGZkLCBob3c7Ci0jaWYgZGVmaW5lZChNU19XSU42NCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQWV9MT05HX0xPTkcgcG9zLCByZXM7CiAjZWxzZQogICAgIG9mZl90IHBvcywgcmVzOwpAQCAtNzk4Nyw3ICs3NjQzLDcgQEAKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZiBkZWZpbmVkKE1TX1dJTjY0KSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgTVNfV0lORE9XUwogICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCBob3cpOwogI2Vsc2UKICAgICByZXMgPSBsc2VlayhmZCwgcG9zLCBob3cpOwpAQCAtODE5Myw3ICs3ODQ5LDcgQEAKICAgICB9CiAgICAgbGVuID0gcGJ1Zi5sZW47CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGxlbiA+IElOVF9NQVgpCiAgICAgICAgIGxlbiA9IElOVF9NQVg7CiAgICAgc2l6ZSA9IHdyaXRlKGZkLCBwYnVmLmJ1ZiwgKGludClsZW4pOwpAQCAtODIzMCwxMiArNzg4NiwxMyBAQAogICAgIG9mZl90IHNieXRlczsKICAgICBzdHJ1Y3Qgc2ZfaGR0ciBzZjsKICAgICBpbnQgZmxhZ3MgPSAwOwotICAgIHNmLmhlYWRlcnMgPSBOVUxMOwotICAgIHNmLnRyYWlsZXJzID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsib3V0IiwgImluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsICJjb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIiwgInRyYWlsZXJzIiwgImZsYWdzIiwgTlVMTH07CiAKKyAgICBzZi5oZWFkZXJzID0gTlVMTDsKKyAgICBzZi50cmFpbGVycyA9IE5VTEw7CisKICNpZmRlZiBfX0FQUExFX18KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCkBAIC04MzY4LDcgKzgwMjUsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyAhPSAwKSB7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImZzdGF0IiwgTlVMTCk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogI2VuZGlmCkBAIC04NDAxLDE2ICs4MDU4LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9waXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgSEZJTEUgcmVhZCwgd3JpdGU7Ci0gICAgQVBJUkVUIHJjOwotCi0gICAgcmMgPSBEb3NDcmVhdGVQaXBlKCAmcmVhZCwgJndyaXRlLCA0MDk2KTsKLSAgICBpZiAocmMgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiBvczJfZXJyb3IocmMpOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihpaSkiLCByZWFkLCB3cml0ZSk7Ci0jZWxzZQogI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaW50IGZkc1syXTsKICAgICBpbnQgcmVzOwpAQCAtODQyNCwxMiArODA3MSwxMSBAQAogICAgIEJPT0wgb2s7CiAgICAgb2sgPSBDcmVhdGVQaXBlKCZyZWFkLCAmd3JpdGUsIE5VTEwsIDApOwogICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigiQ3JlYXRlUGlwZSIsIE5VTEwpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgcmVhZF9mZCA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgMCk7CiAgICAgd3JpdGVfZmQgPSBfb3Blbl9vc2ZoYW5kbGUoKFB5X2ludHB0cl90KXdyaXRlLCAxKTsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKGlpKSIsIHJlYWRfZmQsIHdyaXRlX2ZkKTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0jZW5kaWYKIH0KICNlbmRpZiAgLyogSEFWRV9QSVBFICovCiAKQEAgLTg3MjgsNiArODM3NCw3IEBACiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInRydW5jYXRlIjsKICNpZmRlZiBIQVZFX0ZUUlVOQ0FURQogICAgIHBhdGguYWxsb3dfZmQgPSAxOwogI2VuZGlmCkBAIC04NzQ1LDcgKzgzOTIsNyBAQAogICAgICAgICByZXMgPSB0cnVuY2F0ZShwYXRoLm5hcnJvdywgbGVuZ3RoKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXN1bHQgPSBwYXRoX3Bvc2l4X2Vycm9yKCJ0cnVuY2F0ZSIsICZwYXRoKTsKKyAgICAgICAgcmVzdWx0ID0gcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKQEAgLTkyMTcsNiArODg2NCw3IEBACiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInN0YXR2ZnMiOwogI2lmZGVmIEhBVkVfRlNUQVRWRlMKICAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgpAQCAtOTI0Myw3ICs4ODkxLDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJzdGF0dmZzIiwgJnBhdGgpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KIApAQCAtOTQ4MCw2ICs5MTI4LDcgQEAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInBhdGhjb25mIjsKICNpZmRlZiBIQVZFX0ZQQVRIQ09ORgogICAgIHBhdGguYWxsb3dfZmQgPSAxOwogI2VuZGlmCkBAIC05NTAwLDcgKzkxNDksNyBAQAogICAgICAgICAgICAgLyogY291bGQgYmUgYSBwYXRoIG9yIG5hbWUgcHJvYmxlbSAqLwogICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gcGF0aF9wb3NpeF9lcnJvcigicGF0aGNvbmYiLCAmcGF0aCk7CisgICAgICAgICAgICByZXN1bHQgPSBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcobGltaXQpOwpAQCAtOTY4Miw3ICs5MzMxLDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgbmFtZTsKICAgICBjaGFyIGJ1ZmZlclsyNTVdOwotICAgIGludCBsZW47CisgICAgc2l6ZV90IGxlbjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTk2OTksNyArOTM0OCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoKHVuc2lnbmVkIGludClsZW4gPj0gc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICBpZiAobGVuID49IHNpemVvZihidWZmZXIpKSB7CiAgICAgICAgIGNoYXIgKmJ1ZiA9IFB5TWVtX01hbGxvYyhsZW4pOwogICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEwMjI5LDcgKzk4NzgsNyBAQAogICAgIGludCBuYW1lOwogCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkgewotICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgIGxvbmcgdmFsdWU7CiAKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICB2YWx1ZSA9IHN5c2NvbmYobmFtZSk7CkBAIC0xMDU1OSw2ICsxMDIwOCw4IEBACiAKICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CiAgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiZ2V0eGF0dHIiOworICAgIGF0dHJpYnV0ZS5mdW5jdGlvbl9uYW1lID0gImdldHhhdHRyIjsKICAgICBwYXRoLmFsbG93X2ZkID0gMTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOmdldHhhdHRyIiwga2V5d29yZHMsCiAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKQEAgLTEwNTc1LDcgKzEwMjI2LDcgQEAKICAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKLSAgICAgICAgICAgIHBhdGhfZXJyb3IoImdldHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZmZXJfc2l6ZSk7CkBAIC0xMDU5Nyw3ICsxMDI0OCw3IEBACiAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHBhdGhfZXJyb3IoImdldHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KIApAQCAtMTA2MzYsNiArMTAyODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAic2V0eGF0dHIiOwogICAgIHBhdGguYWxsb3dfZmQgPSAxOwogICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CiAgICAgbWVtc2V0KCZ2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7CkBAIC0xMDY2Myw3ICsxMDMxNSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInNldHhhdHRyIiwgJnBhdGgpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KIApAQCAtMTA2OTcsNyArMTAzNDksOSBAQAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicmVtb3ZleGF0dHIiOwogICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgYXR0cmlidXRlLmZ1bmN0aW9uX25hbWUgPSAicmVtb3ZleGF0dHIiOwogICAgIHBhdGguYWxsb3dfZmQgPSAxOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLApAQCAtMTA3MTksNyArMTAzNzMsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJyZW1vdmV4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKQEAgLTEwNzU1LDYgKzEwNDA5LDcgQEAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGlzdHhhdHRyIjsKICAgICBwYXRoLmFsbG93X2ZkID0gMTsKICAgICBwYXRoLmZkID0gLTE7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mJHA6bGlzdHhhdHRyIiwga2V5d29yZHMsCkBAIC0xMDc3Myw3ICsxMDQyOCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwotICAgICAgICAgICAgcGF0aF9lcnJvcigibGlzdHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBidWZmZXIgPSBQeU1lbV9NQUxMT0MoYnVmZmVyX3NpemUpOwpAQCAtMTA3OTcsNyArMTA0NTIsNyBAQAogICAgICAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwYXRoX2Vycm9yKCJsaXN0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCZwYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTEwOTc1LDYgKzEwNjMwLDQxIEBACiB9CiAjZW5kaWYgLyogZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKSAqLwogCitQeURvY19TVFJWQVIocG9zaXhfY3B1X2NvdW50X19kb2NfXywKKyJjcHVfY291bnQoKSAtPiBpbnRlZ2VyXG5cblwKK1JldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbSwgb3IgTm9uZSBpZiB0aGlzIHZhbHVlIGNhbm5vdCBiZVxuXAorZXN0YWJsaXNoZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9jcHVfY291bnQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaW50IG5jcHUgPSAwOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBTWVNURU1fSU5GTyBzeXNpbmZvOworICAgIEdldFN5c3RlbUluZm8oJnN5c2luZm8pOworICAgIG5jcHUgPSBzeXNpbmZvLmR3TnVtYmVyT2ZQcm9jZXNzb3JzOworI2VsaWYgZGVmaW5lZChfX2hwdXgpCisgICAgbmNwdSA9IG1wY3RsKE1QQ19HRVROVU1TUFVTLCBOVUxMLCBOVUxMKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKF9TQ19OUFJPQ0VTU09SU19PTkxOKQorICAgIG5jcHUgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKKyNlbGlmIGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgXAorICAgICAgZGVmaW5lZChfX09wZW5CU0RfXykgICB8fCBcCisgICAgICBkZWZpbmVkKF9fRnJlZUJTRF9fKSAgIHx8IFwKKyAgICAgIGRlZmluZWQoX19OZXRCU0RfXykgICAgfHwgXAorICAgICAgZGVmaW5lZChfX0FQUExFX18pCisgICAgaW50IG1pYlsyXTsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKG5jcHUpOworICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBIV19OQ1BVOworICAgIGlmIChzeXNjdGwobWliLCAyLCAmbmNwdSwgJmxlbiwgTlVMTCwgMCkgIT0gMCkKKyAgICAgICAgbmNwdSA9IDA7CisjZW5kaWYKKyAgICBpZiAobmNwdSA+PSAxKQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG5jcHUpOworICAgIGVsc2UKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIHBvc2l4X21ldGhvZHNbXSA9IHsKICAgICB7ImFjY2VzcyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9hY2Nlc3MsCkBAIC0xMTEwNSwxMCArMTA3OTUsNiBAQAogI2lmZGVmIEhBVkVfU1BBV05WCiAgICAgeyJzcGF3bnYiLCAgICAgICAgICBwb3NpeF9zcGF3bnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3Bhd252X19kb2NfX30sCiAgICAgeyJzcGF3bnZlIiwgICAgICAgICBwb3NpeF9zcGF3bnZlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NwYXdudmVfX2RvY19ffSwKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIHsic3Bhd252cCIsICAgICAgICAgcG9zaXhfc3Bhd252cCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZwX19kb2NfX30sCi0gICAgeyJzcGF3bnZwZSIsICAgICAgICBwb3NpeF9zcGF3bnZwZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZwZV9fZG9jX199LAotI2VuZGlmIC8qIFBZT1NfT1MyICovCiAjZW5kaWYgLyogSEFWRV9TUEFXTlYgKi8KICNpZmRlZiBIQVZFX0ZPUksxCiAgICAgeyJmb3JrMSIsICAgICAgIHBvc2l4X2ZvcmsxLCBNRVRIX05PQVJHUywgcG9zaXhfZm9yazFfX2RvY19ffSwKQEAgLTExMzg3LDkgKzExMDczLDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJfZ2V0ZnVsbHBhdGhuYW1lIiwgICAgICAgIHBvc2l4X19nZXRmdWxscGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsICAgICAgIHBvc2l4X19nZXRmaW5hbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX2dldGZpbGVpbmZvcm1hdGlvbiIsICAgICBwb3NpeF9fZ2V0ZmlsZWluZm9ybWF0aW9uLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHsiX2lzZGlyIiwgICAgICAgICAgICAgICAgICBwb3NpeF9faXNkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2lzZGlyX19kb2NfX30sCiAgICAgeyJfZ2V0ZGlza3VzYWdlIiwgICAgICAgICAgIHdpbjMyX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHUywgd2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX199LAorICAgIHsiX2dldHZvbHVtZXBhdGhuYW1lIiwgICAgICBwb3NpeF9fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0dFVExPQURBVkcKICAgICB7ImdldGxvYWRhdmciLCAgICAgIHBvc2l4X2dldGxvYWRhdmcsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2FkYXZnX19kb2NfX30sCkBAIC0xMTQyNSw2OSArMTExMTEsMTIgQEAKICNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCiAgICAgeyJnZXRfdGVybWluYWxfc2l6ZSIsIGdldF90ZXJtaW5hbF9zaXplLCBNRVRIX1ZBUkFSR1MsIHRlcm1zaXplX19kb2NfX30sCiAjZW5kaWYKKyAgICB7ImNwdV9jb3VudCIsIChQeUNGdW5jdGlvbilwb3NpeF9jcHVfY291bnQsCisgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgcG9zaXhfY3B1X2NvdW50X19kb2NfX30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCiAKLXN0YXRpYyBpbnQKLWlucyhQeU9iamVjdCAqbW9kdWxlLCBjaGFyICpzeW1ib2wsIGxvbmcgdmFsdWUpCi17Ci0gICAgcmV0dXJuIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG1vZHVsZSwgc3ltYm9sLCB2YWx1ZSk7Ci19Ci0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotLyogSW5zZXJ0IFBsYXRmb3JtLVNwZWNpZmljIENvbnN0YW50IFZhbHVlcyAoU3RyaW5ncyAmIE51bWJlcnMpIG9mIENvbW1vbiBVc2UgKi8KLXN0YXRpYyBpbnQgaW5zZXJ0dmFsdWVzKFB5T2JqZWN0ICptb2R1bGUpCi17Ci0gICAgQVBJUkVUICAgIHJjOwotICAgIFVMT05HICAgICB2YWx1ZXNbUVNWX01BWCsxXTsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBjaGFyICAgICAqdmVyLCB0bXBbNTBdOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gRG9zUXVlcnlTeXNJbmZvKDFMLCBRU1ZfTUFYLCAmdmFsdWVzWzFdLCBzaXplb2YoVUxPTkcpICogUVNWX01BWCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyYyAhPSBOT19FUlJPUikgewotICAgICAgICBvczJfZXJyb3IocmMpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaWYgKGlucyhtb2R1bGUsICJtZW1pbnN0YWxsZWQiLCB2YWx1ZXNbUVNWX1RPVFBIWVNNRU1dKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMobW9kdWxlLCAibWVta2VybmVsIiwgICAgdmFsdWVzW1FTVl9UT1RSRVNNRU1dKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMobW9kdWxlLCAibWVtdmlydHVhbCIsICAgdmFsdWVzW1FTVl9UT1RBVkFJTE1FTV0pKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhtb2R1bGUsICJtYXhwYXRobGVuIiwgICB2YWx1ZXNbUVNWX01BWF9QQVRIX0xFTkdUSF0pKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhtb2R1bGUsICJtYXhuYW1lbGVuIiwgICB2YWx1ZXNbUVNWX01BWF9DT01QX0xFTkdUSF0pKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhtb2R1bGUsICJyZXZpc2lvbiIsICAgICB2YWx1ZXNbUVNWX1ZFUlNJT05fUkVWSVNJT05dKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMobW9kdWxlLCAidGltZXNsaWNlIiwgICAgdmFsdWVzW1FTVl9NSU5fU0xJQ0VdKSkgcmV0dXJuIC0xOwotCi0gICAgc3dpdGNoICh2YWx1ZXNbUVNWX1ZFUlNJT05fTUlOT1JdKSB7Ci0gICAgY2FzZSAwOiAgdmVyID0gIjIuMDAiOyBicmVhazsKLSAgICBjYXNlIDEwOiB2ZXIgPSAiMi4xMCI7IGJyZWFrOwotICAgIGNhc2UgMTE6IHZlciA9ICIyLjExIjsgYnJlYWs7Ci0gICAgY2FzZSAzMDogdmVyID0gIjMuMDAiOyBicmVhazsKLSAgICBjYXNlIDQwOiB2ZXIgPSAiNC4wMCI7IGJyZWFrOwotICAgIGNhc2UgNTA6IHZlciA9ICI1LjAwIjsgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUHlPU19zbnByaW50Zih0bXAsIHNpemVvZih0bXApLAotICAgICAgICAgICAgICAgICAgICAgICIlZC0lZCIsIHZhbHVlc1tRU1ZfVkVSU0lPTl9NQUpPUl0sCi0gICAgICAgICAgICAgICAgICAgICAgdmFsdWVzW1FTVl9WRVJTSU9OX01JTk9SXSk7Ci0gICAgICAgIHZlciA9ICZ0bXBbMF07Ci0gICAgfQotCi0gICAgLyogQWRkIEluZGljYXRvciBvZiB0aGUgVmVyc2lvbiBvZiB0aGUgT3BlcmF0aW5nIFN5c3RlbSAqLwotICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtb2R1bGUsICJ2ZXJzaW9uIiwgdG1wKSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIC8qIEFkZCBJbmRpY2F0b3Igb2YgV2hpY2ggRHJpdmUgd2FzIFVzZWQgdG8gQm9vdCB0aGUgU3lzdGVtICovCi0gICAgdG1wWzBdID0gJ0EnICsgdmFsdWVzW1FTVl9CT09UX0RSSVZFXSAtIDE7Ci0gICAgdG1wWzFdID0gJzonOwotICAgIHRtcFsyXSA9ICdcMCc7Ci0KLSAgICByZXR1cm4gUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobW9kdWxlLCAiYm9vdGRyaXZlIiwgdG1wKTsKLX0KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKIHN0YXRpYyBpbnQKIGVuYWJsZV9zeW1saW5rKCkKQEAgLTExNTE4LDQwMSArMTExNDcsMzc4IEBACiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAogc3RhdGljIGludAotYWxsX2lucyhQeU9iamVjdCAqZCkKK2FsbF9pbnMoUHlPYmplY3QgKm0pCiB7CiAjaWZkZWYgRl9PSwotICAgIGlmIChpbnMoZCwgIkZfT0siLCAobG9uZylGX09LKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGX09LKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUl9PSwotICAgIGlmIChpbnMoZCwgIlJfT0siLCAobG9uZylSX09LKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSX09LKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgV19PSwotICAgIGlmIChpbnMoZCwgIldfT0siLCAobG9uZylXX09LKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBXX09LKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgWF9PSwotICAgIGlmIChpbnMoZCwgIlhfT0siLCAobG9uZylYX09LKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYX09LKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgTkdST1VQU19NQVgKLSAgICBpZiAoaW5zKGQsICJOR1JPVVBTX01BWCIsIChsb25nKU5HUk9VUFNfTUFYKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBOR1JPVVBTX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFRNUF9NQVgKLSAgICBpZiAoaW5zKGQsICJUTVBfTUFYIiwgKGxvbmcpVE1QX01BWCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVE1QX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFdDT05USU5VRUQKLSAgICBpZiAoaW5zKGQsICJXQ09OVElOVUVEIiwgKGxvbmcpV0NPTlRJTlVFRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgV0NPTlRJTlVFRCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFdOT0hBTkcKLSAgICBpZiAoaW5zKGQsICJXTk9IQU5HIiwgKGxvbmcpV05PSEFORykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgV05PSEFORykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFdVTlRSQUNFRAotICAgIGlmIChpbnMoZCwgIldVTlRSQUNFRCIsIChsb25nKVdVTlRSQUNFRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgV1VOVFJBQ0VEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19SRE9OTFkKLSAgICBpZiAoaW5zKGQsICJPX1JET05MWSIsIChsb25nKU9fUkRPTkxZKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1JET05MWSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fV1JPTkxZCi0gICAgaWYgKGlucyhkLCAiT19XUk9OTFkiLCAobG9uZylPX1dST05MWSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19XUk9OTFkpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX1JEV1IKLSAgICBpZiAoaW5zKGQsICJPX1JEV1IiLCAobG9uZylPX1JEV1IpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fUkRXUikpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fTkRFTEFZCi0gICAgaWYgKGlucyhkLCAiT19OREVMQVkiLCAobG9uZylPX05ERUxBWSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19OREVMQVkpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX05PTkJMT0NLCi0gICAgaWYgKGlucyhkLCAiT19OT05CTE9DSyIsIChsb25nKU9fTk9OQkxPQ0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTk9OQkxPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0FQUEVORAotICAgIGlmIChpbnMoZCwgIk9fQVBQRU5EIiwgKGxvbmcpT19BUFBFTkQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fQVBQRU5EKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19EU1lOQwotICAgIGlmIChpbnMoZCwgIk9fRFNZTkMiLCAobG9uZylPX0RTWU5DKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0RTWU5DKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19SU1lOQwotICAgIGlmIChpbnMoZCwgIk9fUlNZTkMiLCAobG9uZylPX1JTWU5DKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1JTWU5DKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19TWU5DCi0gICAgaWYgKGlucyhkLCAiT19TWU5DIiwgKGxvbmcpT19TWU5DKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1NZTkMpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX05PQ1RUWQotICAgIGlmIChpbnMoZCwgIk9fTk9DVFRZIiwgKGxvbmcpT19OT0NUVFkpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTk9DVFRZKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19DUkVBVAotICAgIGlmIChpbnMoZCwgIk9fQ1JFQVQiLCAobG9uZylPX0NSRUFUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0NSRUFUKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19FWENMCi0gICAgaWYgKGlucyhkLCAiT19FWENMIiwgKGxvbmcpT19FWENMKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYQ0wpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX1RSVU5DCi0gICAgaWYgKGlucyhkLCAiT19UUlVOQyIsIChsb25nKU9fVFJVTkMpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fVFJVTkMpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0JJTkFSWQotICAgIGlmIChpbnMoZCwgIk9fQklOQVJZIiwgKGxvbmcpT19CSU5BUlkpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fQklOQVJZKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19URVhUCi0gICAgaWYgKGlucyhkLCAiT19URVhUIiwgKGxvbmcpT19URVhUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1RFWFQpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX1hBVFRSCi0gICAgaWYgKGlucyhkLCAiT19YQVRUUiIsIChsb25nKU9fWEFUVFIpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fWEFUVFIpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0xBUkdFRklMRQotICAgIGlmIChpbnMoZCwgIk9fTEFSR0VGSUxFIiwgKGxvbmcpT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTEFSR0VGSUxFKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19TSExPQ0sKLSAgICBpZiAoaW5zKGQsICJPX1NITE9DSyIsIChsb25nKU9fU0hMT0NLKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1NITE9DSykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fRVhMT0NLCi0gICAgaWYgKGlucyhkLCAiT19FWExPQ0siLCAobG9uZylPX0VYTE9DSykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0VYRUMKLSAgICBpZiAoaW5zKGQsICJPX0VYRUMiLCAobG9uZylPX0VYRUMpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fRVhFQykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fU0VBUkNICi0gICAgaWYgKGlucyhkLCAiT19TRUFSQ0giLCAobG9uZylPX1NFQVJDSCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19TRUFSQ0gpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX1BBVEgKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19QQVRIKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19UVFlfSU5JVAotICAgIGlmIChpbnMoZCwgIk9fVFRZX0lOSVQiLCAobG9uZylPX1RUWV9JTklUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1RUWV9JTklUKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUFJJT19QUk9DRVNTCi0gICAgaWYgKGlucyhkLCAiUFJJT19QUk9DRVNTIiwgKGxvbmcpUFJJT19QUk9DRVNTKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQUklPX1BST0NFU1MpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBQUklPX1BHUlAKLSAgICBpZiAoaW5zKGQsICJQUklPX1BHUlAiLCAobG9uZylQUklPX1BHUlApKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBSSU9fUEdSUCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFBSSU9fVVNFUgotICAgIGlmIChpbnMoZCwgIlBSSU9fVVNFUiIsIChsb25nKVBSSU9fVVNFUikpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUFJJT19VU0VSKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19DTE9FWEVDCi0gICAgaWYgKGlucyhkLCAiT19DTE9FWEVDIiwgKGxvbmcpT19DTE9FWEVDKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0NMT0VYRUMpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0FDQ01PREUKLSAgICBpZiAoaW5zKGQsICJPX0FDQ01PREUiLCAobG9uZylPX0FDQ01PREUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fQUNDTU9ERSkpIHJldHVybiAtMTsKICNlbmRpZgogCiAKICNpZmRlZiBTRUVLX0hPTEUKLSAgICBpZiAoaW5zKGQsICJTRUVLX0hPTEUiLCAobG9uZylTRUVLX0hPTEUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNFRUtfSE9MRSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNFRUtfREFUQQotICAgIGlmIChpbnMoZCwgIlNFRUtfREFUQSIsIChsb25nKVNFRUtfREFUQSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0VFS19EQVRBKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKIC8qIE1TIFdpbmRvd3MgKi8KICNpZmRlZiBPX05PSU5IRVJJVAogICAgIC8qIERvbid0IGluaGVyaXQgaW4gY2hpbGQgcHJvY2Vzc2VzLiAqLwotICAgIGlmIChpbnMoZCwgIk9fTk9JTkhFUklUIiwgKGxvbmcpT19OT0lOSEVSSVQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTk9JTkhFUklUKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgX09fU0hPUlRfTElWRUQKICAgICAvKiBPcHRpbWl6ZSBmb3Igc2hvcnQgbGlmZSAoa2VlcCBpbiBtZW1vcnkpLiAqLwogICAgIC8qIE1TIGZvcmdvdCB0byBkZWZpbmUgdGhpcyBvbmUgd2l0aCBhIG5vbi11bmRlcnNjb3JlIGZvcm0gdG9vLiAqLwotICAgIGlmIChpbnMoZCwgIk9fU0hPUlRfTElWRUQiLCAobG9uZylfT19TSE9SVF9MSVZFRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9fU0hPUlRfTElWRUQiLCBfT19TSE9SVF9MSVZFRCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fVEVNUE9SQVJZCiAgICAgLyogQXV0b21hdGljYWxseSBkZWxldGUgd2hlbiBsYXN0IGhhbmRsZSBpcyBjbG9zZWQuICovCi0gICAgaWYgKGlucyhkLCAiT19URU1QT1JBUlkiLCAobG9uZylPX1RFTVBPUkFSWSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19URU1QT1JBUlkpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX1JBTkRPTQogICAgIC8qIE9wdGltaXplIGZvciByYW5kb20gYWNjZXNzLiAqLwotICAgIGlmIChpbnMoZCwgIk9fUkFORE9NIiwgKGxvbmcpT19SQU5ET00pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fUkFORE9NKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19TRVFVRU5USUFMCiAgICAgLyogT3B0aW1pemUgZm9yIHNlcXVlbnRpYWwgYWNjZXNzLiAqLwotICAgIGlmIChpbnMoZCwgIk9fU0VRVUVOVElBTCIsIChsb25nKU9fU0VRVUVOVElBTCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19TRVFVRU5USUFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKIC8qIEdOVSBleHRlbnNpb25zLiAqLwogI2lmZGVmIE9fQVNZTkMKICAgICAvKiBTZW5kIGEgU0lHSU8gc2lnbmFsIHdoZW5ldmVyIGlucHV0IG9yIG91dHB1dAogICAgICAgIGJlY29tZXMgYXZhaWxhYmxlIG9uIGZpbGUgZGVzY3JpcHRvciAqLwotICAgIGlmIChpbnMoZCwgIk9fQVNZTkMiLCAobG9uZylPX0FTWU5DKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0FTWU5DKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19ESVJFQ1QKICAgICAvKiBEaXJlY3QgZGlzayBhY2Nlc3MuICovCi0gICAgaWYgKGlucyhkLCAiT19ESVJFQ1QiLCAobG9uZylPX0RJUkVDVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19ESVJFQ1QpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX0RJUkVDVE9SWQogICAgIC8qIE11c3QgYmUgYSBkaXJlY3RvcnkuICAgICAgKi8KLSAgICBpZiAoaW5zKGQsICJPX0RJUkVDVE9SWSIsIChsb25nKU9fRElSRUNUT1JZKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0RJUkVDVE9SWSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fTk9GT0xMT1cKICAgICAvKiBEbyBub3QgZm9sbG93IGxpbmtzLiAgICAgICovCi0gICAgaWYgKGlucyhkLCAiT19OT0ZPTExPVyIsIChsb25nKU9fTk9GT0xMT1cpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTk9GT0xMT1cpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX05PTElOS1MKICAgICAvKiBGYWlscyBpZiBsaW5rIGNvdW50IG9mIHRoZSBuYW1lZCBmaWxlIGlzIGdyZWF0ZXIgdGhhbiAxICovCi0gICAgaWYgKGlucyhkLCAiT19OT0xJTktTIiwgKGxvbmcpT19OT0xJTktTKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX05PTElOS1MpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBPX05PQVRJTUUKICAgICAvKiBEbyBub3QgdXBkYXRlIHRoZSBhY2Nlc3MgdGltZS4gKi8KLSAgICBpZiAoaW5zKGQsICJPX05PQVRJTUUiLCAobG9uZylPX05PQVRJTUUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTk9BVElNRSkpIHJldHVybiAtMTsKICNlbmRpZgogCiAgICAgLyogVGhlc2UgY29tZSBmcm9tIHN5c2V4aXRzLmggKi8KICNpZmRlZiBFWF9PSwotICAgIGlmIChpbnMoZCwgIkVYX09LIiwgKGxvbmcpRVhfT0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX09LKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIEVYX09LICovCiAjaWZkZWYgRVhfVVNBR0UKLSAgICBpZiAoaW5zKGQsICJFWF9VU0FHRSIsIChsb25nKUVYX1VTQUdFKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFWF9VU0FHRSkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9VU0FHRSAqLwogI2lmZGVmIEVYX0RBVEFFUlIKLSAgICBpZiAoaW5zKGQsICJFWF9EQVRBRVJSIiwgKGxvbmcpRVhfREFUQUVSUikpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVhfREFUQUVSUikpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9EQVRBRVJSICovCiAjaWZkZWYgRVhfTk9JTlBVVAotICAgIGlmIChpbnMoZCwgIkVYX05PSU5QVVQiLCAobG9uZylFWF9OT0lOUFVUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFWF9OT0lOUFVUKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIEVYX05PSU5QVVQgKi8KICNpZmRlZiBFWF9OT1VTRVIKLSAgICBpZiAoaW5zKGQsICJFWF9OT1VTRVIiLCAobG9uZylFWF9OT1VTRVIpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX05PVVNFUikpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9OT1VTRVIgKi8KICNpZmRlZiBFWF9OT0hPU1QKLSAgICBpZiAoaW5zKGQsICJFWF9OT0hPU1QiLCAobG9uZylFWF9OT0hPU1QpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX05PSE9TVCkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9OT0hPU1QgKi8KICNpZmRlZiBFWF9VTkFWQUlMQUJMRQotICAgIGlmIChpbnMoZCwgIkVYX1VOQVZBSUxBQkxFIiwgKGxvbmcpRVhfVU5BVkFJTEFCTEUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX1VOQVZBSUxBQkxFKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIEVYX1VOQVZBSUxBQkxFICovCiAjaWZkZWYgRVhfU09GVFdBUkUKLSAgICBpZiAoaW5zKGQsICJFWF9TT0ZUV0FSRSIsIChsb25nKUVYX1NPRlRXQVJFKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFWF9TT0ZUV0FSRSkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9TT0ZUV0FSRSAqLwogI2lmZGVmIEVYX09TRVJSCi0gICAgaWYgKGlucyhkLCAiRVhfT1NFUlIiLCAobG9uZylFWF9PU0VSUikpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVhfT1NFUlIpKSByZXR1cm4gLTE7CiAjZW5kaWYgLyogRVhfT1NFUlIgKi8KICNpZmRlZiBFWF9PU0ZJTEUKLSAgICBpZiAoaW5zKGQsICJFWF9PU0ZJTEUiLCAobG9uZylFWF9PU0ZJTEUpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX09TRklMRSkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9PU0ZJTEUgKi8KICNpZmRlZiBFWF9DQU5UQ1JFQVQKLSAgICBpZiAoaW5zKGQsICJFWF9DQU5UQ1JFQVQiLCAobG9uZylFWF9DQU5UQ1JFQVQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX0NBTlRDUkVBVCkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9DQU5UQ1JFQVQgKi8KICNpZmRlZiBFWF9JT0VSUgotICAgIGlmIChpbnMoZCwgIkVYX0lPRVJSIiwgKGxvbmcpRVhfSU9FUlIpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX0lPRVJSKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIEVYX0lPRVJSICovCiAjaWZkZWYgRVhfVEVNUEZBSUwKLSAgICBpZiAoaW5zKGQsICJFWF9URU1QRkFJTCIsIChsb25nKUVYX1RFTVBGQUlMKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFWF9URU1QRkFJTCkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9URU1QRkFJTCAqLwogI2lmZGVmIEVYX1BST1RPQ09MCi0gICAgaWYgKGlucyhkLCAiRVhfUFJPVE9DT0wiLCAobG9uZylFWF9QUk9UT0NPTCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVhfUFJPVE9DT0wpKSByZXR1cm4gLTE7CiAjZW5kaWYgLyogRVhfUFJPVE9DT0wgKi8KICNpZmRlZiBFWF9OT1BFUk0KLSAgICBpZiAoaW5zKGQsICJFWF9OT1BFUk0iLCAobG9uZylFWF9OT1BFUk0pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX05PUEVSTSkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9OT1BFUk0gKi8KICNpZmRlZiBFWF9DT05GSUcKLSAgICBpZiAoaW5zKGQsICJFWF9DT05GSUciLCAobG9uZylFWF9DT05GSUcpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX0NPTkZJRykpIHJldHVybiAtMTsKICNlbmRpZiAvKiBFWF9DT05GSUcgKi8KICNpZmRlZiBFWF9OT1RGT1VORAotICAgIGlmIChpbnMoZCwgIkVYX05PVEZPVU5EIiwgKGxvbmcpRVhfTk9URk9VTkQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVYX05PVEZPVU5EKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIEVYX05PVEZPVU5EICovCiAKICAgICAvKiBzdGF0dmZzICovCiAjaWZkZWYgU1RfUkRPTkxZCi0gICAgaWYgKGlucyhkLCAiU1RfUkRPTkxZIiwgKGxvbmcpU1RfUkRPTkxZKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTVF9SRE9OTFkpKSByZXR1cm4gLTE7CiAjZW5kaWYgLyogU1RfUkRPTkxZICovCiAjaWZkZWYgU1RfTk9TVUlECi0gICAgaWYgKGlucyhkLCAiU1RfTk9TVUlEIiwgKGxvbmcpU1RfTk9TVUlEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTVF9OT1NVSUQpKSByZXR1cm4gLTE7CiAjZW5kaWYgLyogU1RfTk9TVUlEICovCiAKICAgICAvKiBGcmVlQlNEIHNlbmRmaWxlKCkgY29uc3RhbnRzICovCiAjaWZkZWYgU0ZfTk9ESVNLSU8KLSAgICBpZiAoaW5zKGQsICJTRl9OT0RJU0tJTyIsIChsb25nKVNGX05PRElTS0lPKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTRl9OT0RJU0tJTykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNGX01OT1dBSVQKLSAgICBpZiAoaW5zKGQsICJTRl9NTk9XQUlUIiwgKGxvbmcpU0ZfTU5PV0FJVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0ZfTU5PV0FJVCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNGX1NZTkMKLSAgICBpZiAoaW5zKGQsICJTRl9TWU5DIiwgKGxvbmcpU0ZfU1lOQykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0ZfU1lOQykpIHJldHVybiAtMTsKICNlbmRpZgogCiAgICAgLyogY29uc3RhbnRzIGZvciBwb3NpeF9mYWR2aXNlICovCiAjaWZkZWYgUE9TSVhfRkFEVl9OT1JNQUwKLSAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX05PUk1BTCIsIChsb25nKVBPU0lYX0ZBRFZfTk9STUFMKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT1NJWF9GQURWX05PUk1BTCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFBPU0lYX0ZBRFZfU0VRVUVOVElBTAotICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfU0VRVUVOVElBTCIsIChsb25nKVBPU0lYX0ZBRFZfU0VRVUVOVElBTCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9TSVhfRkFEVl9TRVFVRU5USUFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUE9TSVhfRkFEVl9SQU5ET00KLSAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1JBTkRPTSIsIChsb25nKVBPU0lYX0ZBRFZfUkFORE9NKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT1NJWF9GQURWX1JBTkRPTSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFBPU0lYX0ZBRFZfTk9SRVVTRQotICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfTk9SRVVTRSIsIChsb25nKVBPU0lYX0ZBRFZfTk9SRVVTRSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9TSVhfRkFEVl9OT1JFVVNFKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUE9TSVhfRkFEVl9XSUxMTkVFRAotICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfV0lMTE5FRUQiLCAobG9uZylQT1NJWF9GQURWX1dJTExORUVEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT1NJWF9GQURWX1dJTExORUVEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUE9TSVhfRkFEVl9ET05UTkVFRAotICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfRE9OVE5FRUQiLCAobG9uZylQT1NJWF9GQURWX0RPTlRORUVEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT1NJWF9GQURWX0RPTlRORUVEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKICAgICAvKiBjb25zdGFudHMgZm9yIHdhaXRpZCAqLwogI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKEhBVkVfV0FJVElEKQotICAgIGlmIChpbnMoZCwgIlBfUElEIiwgKGxvbmcpUF9QSUQpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9QR0lEIiwgKGxvbmcpUF9QR0lEKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfQUxMIiwgKGxvbmcpUF9BTEwpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBfUElEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQX1BHSUQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBfQUxMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgV0VYSVRFRAotICAgIGlmIChpbnMoZCwgIldFWElURUQiLCAobG9uZylXRVhJVEVEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBXRVhJVEVEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgV05PV0FJVAotICAgIGlmIChpbnMoZCwgIldOT1dBSVQiLCAobG9uZylXTk9XQUlUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBXTk9XQUlUKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgV1NUT1BQRUQKLSAgICBpZiAoaW5zKGQsICJXU1RPUFBFRCIsIChsb25nKVdTVE9QUEVEKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBXU1RPUFBFRCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIENMRF9FWElURUQKLSAgICBpZiAoaW5zKGQsICJDTERfRVhJVEVEIiwgKGxvbmcpQ0xEX0VYSVRFRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xEX0VYSVRFRCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIENMRF9EVU1QRUQKLSAgICBpZiAoaW5zKGQsICJDTERfRFVNUEVEIiwgKGxvbmcpQ0xEX0RVTVBFRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xEX0RVTVBFRCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIENMRF9UUkFQUEVECi0gICAgaWYgKGlucyhkLCAiQ0xEX1RSQVBQRUQiLCAobG9uZylDTERfVFJBUFBFRCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xEX1RSQVBQRUQpKSByZXR1cm4gLTE7CiAjZW5kaWYKICNpZmRlZiBDTERfQ09OVElOVUVECi0gICAgaWYgKGlucyhkLCAiQ0xEX0NPTlRJTlVFRCIsIChsb25nKUNMRF9DT05USU5VRUQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMRF9DT05USU5VRUQpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAogICAgIC8qIGNvbnN0YW50cyBmb3IgbG9ja2YgKi8KICNpZmRlZiBGX0xPQ0sKLSAgICBpZiAoaW5zKGQsICJGX0xPQ0siLCAobG9uZylGX0xPQ0spKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZfTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfVExPQ0sKLSAgICBpZiAoaW5zKGQsICJGX1RMT0NLIiwgKGxvbmcpRl9UTE9DSykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9UTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfVUxPQ0sKLSAgICBpZiAoaW5zKGQsICJGX1VMT0NLIiwgKGxvbmcpRl9VTE9DSykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9VTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIEZfVEVTVAotICAgIGlmIChpbnMoZCwgIkZfVEVTVCIsIChsb25nKUZfVEVTVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRl9URVNUKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NQQVdOVgotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgaWYgKGlucyhkLCAiUF9XQUlUIiwgKGxvbmcpUF9XQUlUKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfTk9XQUlUIiwgKGxvbmcpUF9OT1dBSVQpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9PVkVSTEFZIiwgKGxvbmcpUF9PVkVSTEFZKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfREVCVUciLCAobG9uZylQX0RFQlVHKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfU0VTU0lPTiIsIChsb25nKVBfU0VTU0lPTikpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX0RFVEFDSCIsIChsb25nKVBfREVUQUNIKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfUE0iLCAobG9uZylQX1BNKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfREVGQVVMVCIsIChsb25nKVBfREVGQVVMVCkpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX01JTklNSVpFIiwgKGxvbmcpUF9NSU5JTUlaRSkpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX01BWElNSVpFIiwgKGxvbmcpUF9NQVhJTUlaRSkpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX0ZVTExTQ1JFRU4iLCAobG9uZylQX0ZVTExTQ1JFRU4pKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9XSU5ET1dFRCIsIChsb25nKVBfV0lORE9XRUQpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9GT1JFR1JPVU5EIiwgKGxvbmcpUF9GT1JFR1JPVU5EKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfQkFDS0dST1VORCIsIChsb25nKVBfQkFDS0dST1VORCkpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX05PQ0xPU0UiLCAobG9uZylQX05PQ0xPU0UpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9OT1NFU1NJT04iLCAobG9uZylQX05PU0VTU0lPTikpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX1FVT1RFIiwgKGxvbmcpUF9RVU9URSkpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX1RJTERFIiwgKGxvbmcpUF9USUxERSkpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX1VOUkVMQVRFRCIsIChsb25nKVBfVU5SRUxBVEVEKSkgcmV0dXJuIC0xOwotICAgIGlmIChpbnMoZCwgIlBfREVCVUdERVNDIiwgKGxvbmcpUF9ERUJVR0RFU0MpKSByZXR1cm4gLTE7Ci0jZWxzZQotICAgIGlmIChpbnMoZCwgIlBfV0FJVCIsIChsb25nKV9QX1dBSVQpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9OT1dBSVQiLCAobG9uZylfUF9OT1dBSVQpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9PVkVSTEFZIiwgKGxvbmcpX09MRF9QX09WRVJMQVkpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiUF9OT1dBSVRPIiwgKGxvbmcpX1BfTk9XQUlUTykpIHJldHVybiAtMTsKLSAgICBpZiAoaW5zKGQsICJQX0RFVEFDSCIsIChsb25nKV9QX0RFVEFDSCkpIHJldHVybiAtMTsKLSNlbmRpZgorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUF9XQUlUIiwgX1BfV0FJVCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBfTk9XQUlUIiwgX1BfTk9XQUlUKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUF9PVkVSTEFZIiwgX09MRF9QX09WRVJMQVkpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQX05PV0FJVE8iLCBfUF9OT1dBSVRPKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUF9ERVRBQ0giLCBfUF9ERVRBQ0gpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfSAotICAgIGlmIChpbnMoZCwgIlNDSEVEX09USEVSIiwgKGxvbmcpU0NIRURfT1RIRVIpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiU0NIRURfRklGTyIsIChsb25nKVNDSEVEX0ZJRk8pKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiU0NIRURfUlIiLCAobG9uZylTQ0hFRF9SUikpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0NIRURfT1RIRVIpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNDSEVEX0ZJRk8pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNDSEVEX1JSKSkgcmV0dXJuIC0xOwogI2lmZGVmIFNDSEVEX1NQT1JBRElDCi0gICAgaWYgKGlucyhkLCAiU0NIRURfU1BPUkFESUMiLCAobG9uZylTQ0hFRF9TUE9SQURJQykgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTQ0hFRF9TUE9SQURJQykgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgU0NIRURfQkFUQ0gKLSAgICBpZiAoaW5zKGQsICJTQ0hFRF9CQVRDSCIsIChsb25nKVNDSEVEX0JBVENIKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTQ0hFRF9CQVRDSCkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNDSEVEX0lETEUKLSAgICBpZiAoaW5zKGQsICJTQ0hFRF9JRExFIiwgKGxvbmcpU0NIRURfSURMRSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0NIRURfSURMRSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNDSEVEX1JFU0VUX09OX0ZPUksKLSAgICBpZiAoaW5zKGQsICJTQ0hFRF9SRVNFVF9PTl9GT1JLIiwgKGxvbmcpU0NIRURfUkVTRVRfT05fRk9SSykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0NIRURfUkVTRVRfT05fRk9SSykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNDSEVEX1NZUwotICAgIGlmIChpbnMoZCwgIlNDSEVEX1NZUyIsIChsb25nKVNDSEVEX1NZUykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0NIRURfU1lTKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgU0NIRURfSUEKLSAgICBpZiAoaW5zKGQsICJTQ0hFRF9JQSIsIChsb25nKVNDSEVEX0lBKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTQ0hFRF9JQSkpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIFNDSEVEX0ZTUwotICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZTUyIsIChsb25nKVNDSEVEX0ZTUykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0NIRURfRlNTKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgU0NIRURfRlgKLSAgICBpZiAoaW5zKGQsICJTQ0hFRF9GWCIsIChsb25nKVNDSEVEX0ZTUykpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNDSEVEX0ZYIiwgU0NIRURfRlNTKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjZW5kaWYKIAogI2lmZGVmIFVTRV9YQVRUUlMKLSAgICBpZiAoaW5zKGQsICJYQVRUUl9DUkVBVEUiLCAobG9uZylYQVRUUl9DUkVBVEUpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiWEFUVFJfUkVQTEFDRSIsIChsb25nKVhBVFRSX1JFUExBQ0UpKSByZXR1cm4gLTE7Ci0gICAgaWYgKGlucyhkLCAiWEFUVFJfU0laRV9NQVgiLCAobG9uZylYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgWEFUVFJfQ1JFQVRFKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYQVRUUl9SRVBMQUNFKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogCiAjaWZkZWYgUlRMRF9MQVpZCi0gICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTEFaWSkpIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9MQVpZKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUlRMRF9OT1cKLSAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT1cpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9XKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUlRMRF9HTE9CQUwKLSAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9HTE9CQUwpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUlRMRF9MT0NBTAotICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0xPQ0FMKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0xPQ0FMKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUlRMRF9OT0RFTEVURQotICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PREVMRVRFKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PREVMRVRFKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUlRMRF9OT0xPQUQKLSAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT0xPQUQpKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgUlRMRF9ERUVQQklORAotICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0RFRVBCSU5EKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0RFRVBCSU5EKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIGlmIChpbnNlcnR2YWx1ZXMoZCkpIHJldHVybiAtMTsKLSNlbmRpZgogICAgIHJldHVybiAwOwogfQogCkBAIC0xMTkyMSwxMCArMTE1MjcsNiBAQAogI2RlZmluZSBJTklURlVOQyBQeUluaXRfbnQKICNkZWZpbmUgTU9ETkFNRSAibnQiCiAKLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0jZGVmaW5lIElOSVRGVU5DIFB5SW5pdF9vczIKLSNkZWZpbmUgTU9ETkFNRSAib3MyIgotCiAjZWxzZQogI2RlZmluZSBJTklURlVOQyBQeUluaXRfcG9zaXgKICNkZWZpbmUgTU9ETkFNRSAicG9zaXgiCkBAIC0xMjEwOCwxOSArMTE3MTAsMjMgQEAKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQogICAgICAgICB3YWl0aWRfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi53YWl0aWRfcmVzdWx0IjsKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmV2FpdGlkUmVzdWx0VHlwZSwgJndhaXRpZF9yZXN1bHRfZGVzYyk7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmV2FpdGlkUmVzdWx0VHlwZSwgJndhaXRpZF9yZXN1bHRfZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc3RhdF9yZXN1bHQiOwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLmZpZWxkc1s3XS5uYW1lID0gUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQ7CiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MuZmllbGRzWzhdLm5hbWUgPSBQeVN0cnVjdFNlcXVlbmNlX1VubmFtZWRGaWVsZDsKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5maWVsZHNbOV0ubmFtZSA9IFB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkOwotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdGF0UmVzdWx0VHlwZSwgJnN0YXRfcmVzdWx0X2Rlc2MpOworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0YXRSZXN1bHRUeXBlLCAmc3RhdF9yZXN1bHRfZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHN0cnVjdHNlcV9uZXcgPSBTdGF0UmVzdWx0VHlwZS50cF9uZXc7CiAgICAgICAgIFN0YXRSZXN1bHRUeXBlLnRwX25ldyA9IHN0YXRyZXN1bHRfbmV3OwogCiAgICAgICAgIHN0YXR2ZnNfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zdGF0dmZzX3Jlc3VsdCI7Ci0gICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlN0YXRWRlNSZXN1bHRUeXBlLCAmc3RhdHZmc19yZXN1bHRfZGVzYyk7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RhdFZGU1Jlc3VsdFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhdHZmc19yZXN1bHRfZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAjaWZkZWYgTkVFRF9USUNLU19QRVJfU0VDT05ECiAjICBpZiBkZWZpbmVkKEhBVkVfU1lTQ09ORikgJiYgZGVmaW5lZChfU0NfQ0xLX1RDSykKICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOwpAQCAtMTIxMzMsMTIgKzExNzM5LDE1IEBACiAKICNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCiAgICAgICAgIHNjaGVkX3BhcmFtX2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zY2hlZF9wYXJhbSI7Ci0gICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlNjaGVkUGFyYW1UeXBlLCAmc2NoZWRfcGFyYW1fZGVzYyk7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU2NoZWRQYXJhbVR5cGUsICZzY2hlZF9wYXJhbV9kZXNjKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gc2NoZWRfcGFyYW1fbmV3OwogI2VuZGlmCiAKICAgICAgICAgLyogaW5pdGlhbGl6ZSBUZXJtaW5hbFNpemVfaW5mbyAqLwotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUZXJtaW5hbFNpemVUeXBlLCAmVGVybWluYWxTaXplX2Rlc2MpOworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlRlcm1pbmFsU2l6ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmVGVybWluYWxTaXplX2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKQEAgLTEyMTU2LDExICsxMTc2NSwxMyBAQAogI2VuZGlmCiAKICAgICB0aW1lc19yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnRpbWVzX3Jlc3VsdCI7Ci0gICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGltZXNSZXN1bHRUeXBlLCAmdGltZXNfcmVzdWx0X2Rlc2MpOworICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmVGltZXNSZXN1bHRUeXBlLCAmdGltZXNfcmVzdWx0X2Rlc2MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0aW1lc19yZXN1bHQiLCAoUHlPYmplY3QgKikmVGltZXNSZXN1bHRUeXBlKTsKIAogICAgIHVuYW1lX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIudW5hbWVfcmVzdWx0IjsKLSAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZVbmFtZVJlc3VsdFR5cGUsICZ1bmFtZV9yZXN1bHRfZGVzYyk7CisgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZVbmFtZVJlc3VsdFR5cGUsICZ1bmFtZV9yZXN1bHRfZGVzYykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInVuYW1lX3Jlc3VsdCIsIChQeU9iamVjdCAqKSZVbmFtZVJlc3VsdFR5cGUpOwogCiAjaWZkZWYgX19BUFBMRV9fCkBAIC0xMjIzOCw3ICsxMTg0OSw2IEBACiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogCiAgICAgcmV0dXJuIG07Ci0KIH0KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B3ZG1vZHVsZS5jIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwppbmRleCAyODVmZDljLi45OTA5NDAwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcHdkbW9kdWxlLmMKQEAgLTE2OCwxMiArMTY4LDggQEAKICAgICBzdHJ1Y3QgcGFzc3dkICpwOwogICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgaWYgKChwID0gZ2V0cHd1aWQoMCkpICE9IE5VTEwpIHsKLSNlbHNlCiAgICAgc2V0cHdlbnQoKTsKICAgICB3aGlsZSAoKHAgPSBnZXRwd2VudCgpKSAhPSBOVUxMKSB7Ci0jZW5kaWYKICAgICAgICAgUHlPYmplY3QgKnYgPSBta3B3ZW50KHApOwogICAgICAgICBpZiAodiA9PSBOVUxMIHx8IFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgewogICAgICAgICAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTIyMCw4ICsyMTYsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RydWN0UHdkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3B3ZF90eXBlX2Rlc2MpOworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0cnVjdFB3ZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3B3ZF90eXBlX2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgfQogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikgJlN0cnVjdFB3ZFR5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCA3ZTUxZDM1Li4xNTZkYmYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtMTAsNiArMTAsOSBAQAogCiAjZGVmaW5lIEZJWF9UUkFDRQogCitzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBFeHBhdE1lbW9yeUhhbmRsZXIgPSB7CisgICAgUHlPYmplY3RfTWFsbG9jLCBQeU9iamVjdF9SZWFsbG9jLCBQeU9iamVjdF9GcmVlfTsKKwogZW51bSBIYW5kbGVyVHlwZXMgewogICAgIFN0YXJ0RWxlbWVudCwKICAgICBFbmRFbGVtZW50LApAQCAtNDA0LDYgKzQwNywxMCBAQAogbXlfQ2hhcmFjdGVyRGF0YUhhbmRsZXIodm9pZCAqdXNlckRhdGEsIGNvbnN0IFhNTF9DaGFyICpkYXRhLCBpbnQgbGVuKQogewogICAgIHhtbHBhcnNlb2JqZWN0ICpzZWxmID0gKHhtbHBhcnNlb2JqZWN0ICopIHVzZXJEYXRhOworCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChzZWxmLT5idWZmZXIgPT0gTlVMTCkKICAgICAgICAgY2FsbF9jaGFyYWN0ZXJfaGFuZGxlcihzZWxmLCBkYXRhLCBsZW4pOwogICAgIGVsc2UgewpAQCAtNDM4LDYgKzQ0NSw5IEBACiAgICAgICAgIFB5T2JqZWN0ICpjb250YWluZXIsICpydiwgKmFyZ3M7CiAgICAgICAgIGludCBpLCBtYXg7CiAKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKGZsdXNoX2NoYXJhY3Rlcl9idWZmZXIoc2VsZikgPCAwKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvKiBTZXQgbWF4IHRvIHRoZSBudW1iZXIgb2Ygc2xvdHMgZmlsbGVkIGluIGF0dHNbXTsgbWF4LzIgaXMKQEAgLTUyMSw2ICs1MzEsOCBAQAogICAgIElOSVQgXAogXAogICAgIGlmIChoYXZlX2hhbmRsZXIoc2VsZiwgTkFNRSkpIHsgXAorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgXAorICAgICAgICAgICAgcmV0dXJuIFJFVFVSTjsgXAogICAgICAgICBpZiAoZmx1c2hfY2hhcmFjdGVyX2J1ZmZlcihzZWxmKSA8IDApIFwKICAgICAgICAgICAgIHJldHVybiBSRVRVUk47IFwKICAgICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUgUEFSQU1fRk9STUFUIDtcCkBAIC02MzUsNiArNjQ3LDkgQEAKICAgICAgICAgUHlPYmplY3QgKnJ2ID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKm1vZGVsb2JqLCAqbmFtZW9iajsKIAorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAoZmx1c2hfY2hhcmFjdGVyX2J1ZmZlcihzZWxmKSA8IDApCiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgIG1vZGVsb2JqID0gY29udl9jb250ZW50X21vZGVsKG1vZGVsLCAoY29udl9zdHJpbmdfdG9fdW5pY29kZSkpOwpAQCAtMTAwMiw3ICsxMDE3LDcgQEAKICAgICBQeU9iamVjdF9HQ19UcmFjayhuZXdfcGFyc2VyKTsKIAogICAgIGlmIChzZWxmLT5idWZmZXIgIT0gTlVMTCkgewotICAgICAgICBuZXdfcGFyc2VyLT5idWZmZXIgPSBtYWxsb2MobmV3X3BhcnNlci0+YnVmZmVyX3NpemUpOworICAgICAgICBuZXdfcGFyc2VyLT5idWZmZXIgPSBQeU1lbV9NYWxsb2MobmV3X3BhcnNlci0+YnVmZmVyX3NpemUpOwogICAgICAgICBpZiAobmV3X3BhcnNlci0+YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdfcGFyc2VyKTsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTAxOSw3ICsxMDM0LDcgQEAKICAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspCiAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CiAKLSAgICBuZXdfcGFyc2VyLT5oYW5kbGVycyA9IG1hbGxvYyhzaXplb2YoUHlPYmplY3QgKikgKiBpKTsKKyAgICBuZXdfcGFyc2VyLT5oYW5kbGVycyA9IFB5TWVtX01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikgKiBpKTsKICAgICBpZiAoIW5ld19wYXJzZXItPmhhbmRsZXJzKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdfcGFyc2VyKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0xMTI3LDE0ICsxMTQyLDE5IEBACiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKIAorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKKwogICAgIGlmICh0ZW1wbGF0ZV9idWZmZXJbMV0gPT0gMCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgICAgICB0ZW1wbGF0ZV9idWZmZXJbaV0gPSBpOwogICAgIH0KIAogICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlKChjaGFyKikgdGVtcGxhdGVfYnVmZmVyLCAyNTYsIG5hbWUsICJyZXBsYWNlIik7Ci0gICAgaWYgKHUgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkodSkpCisgICAgaWYgKHUgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkodSkpIHsKKyAgICAgICAgUHlfWERFQ1JFRih1KTsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CisgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpICE9IDI1NikgewogICAgICAgICBQeV9ERUNSRUYodSk7CkBAIC0xMTgwLDExICsxMjAwLDE4IEBACiAgICAgc2VsZi0+aW5fY2FsbGJhY2sgPSAwOwogICAgIHNlbGYtPm5zX3ByZWZpeGVzID0gMDsKICAgICBzZWxmLT5oYW5kbGVycyA9IE5VTEw7Ci0gICAgaWYgKG5hbWVzcGFjZV9zZXBhcmF0b3IgIT0gTlVMTCkgewotICAgICAgICBzZWxmLT5pdHNlbGYgPSBYTUxfUGFyc2VyQ3JlYXRlTlMoZW5jb2RpbmcsICpuYW1lc3BhY2Vfc2VwYXJhdG9yKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNlbGYtPml0c2VsZiA9IFhNTF9QYXJzZXJDcmVhdGUoZW5jb2RpbmcpOworICAgIHNlbGYtPmludGVybiA9IGludGVybjsKKyAgICBQeV9YSU5DUkVGKHNlbGYtPmludGVybik7CisgICAgUHlPYmplY3RfR0NfVHJhY2soc2VsZik7CisKKyAgICAvKiBuYW1lc3BhY2Vfc2VwYXJhdG9yIGlzIGVpdGhlciBOVUxMIG9yIGNvbnRhaW5zIG9uZSBjaGFyICsgXDAgKi8KKyAgICBzZWxmLT5pdHNlbGYgPSBYTUxfUGFyc2VyQ3JlYXRlX01NKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlX3NlcGFyYXRvcik7CisgICAgaWYgKHNlbGYtPml0c2VsZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiWE1MX1BhcnNlckNyZWF0ZSBmYWlsZWQiKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjaWYgKChYTUxfTUFKT1JfVkVSU0lPTiA+PSAyKSAmJiAoWE1MX01JTk9SX1ZFUlNJT04gPj0gMSkpIHx8IGRlZmluZWQoWE1MX0hBU19TRVRfSEFTSF9TQUxUKQogICAgIC8qIFRoaXMgZmVhdHVyZSB3YXMgYWRkZWQgdXBzdHJlYW0gaW4gbGliZXhwYXQgMi4xLjAuICBPdXIgZXhwYXQgY29weQpAQCAtMTE5MywxNSArMTIyMCw2IEBACiAgICAgWE1MX1NldEhhc2hTYWx0KHNlbGYtPml0c2VsZiwKICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpX1B5X0hhc2hTZWNyZXQucHJlZml4KTsKICNlbmRpZgotICAgIHNlbGYtPmludGVybiA9IGludGVybjsKLSAgICBQeV9YSU5DUkVGKHNlbGYtPmludGVybik7Ci0gICAgUHlPYmplY3RfR0NfVHJhY2soc2VsZik7Ci0gICAgaWYgKHNlbGYtPml0c2VsZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiWE1MX1BhcnNlckNyZWF0ZSBmYWlsZWQiKTsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgWE1MX1NldFVzZXJEYXRhKHNlbGYtPml0c2VsZiwgKHZvaWQgKilzZWxmKTsKICAgICBYTUxfU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlcihzZWxmLT5pdHNlbGYsCiAgICAgICAgICAgICAgICAgICAoWE1MX1Vua25vd25FbmNvZGluZ0hhbmRsZXIpIFB5VW5rbm93bkVuY29kaW5nSGFuZGxlciwgTlVMTCk7CkBAIC0xMjA5LDcgKzEyMjcsNyBAQAogICAgIGZvciAoaSA9IDA7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykKICAgICAgICAgLyogZG8gbm90aGluZyAqLzsKIAotICAgIHNlbGYtPmhhbmRsZXJzID0gbWFsbG9jKHNpemVvZihQeU9iamVjdCAqKSAqIGkpOworICAgIHNlbGYtPmhhbmRsZXJzID0gUHlNZW1fTWFsbG9jKHNpemVvZihQeU9iamVjdCAqKSAqIGkpOwogICAgIGlmICghc2VsZi0+aGFuZGxlcnMpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEyMzYsMTEgKzEyNTQsMTEgQEAKICAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZShzZWxmLT5oYW5kbGVycyk7CisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+aGFuZGxlcnMpOwogICAgICAgICBzZWxmLT5oYW5kbGVycyA9IE5VTEw7CiAgICAgfQogICAgIGlmIChzZWxmLT5idWZmZXIgIT0gTlVMTCkgewotICAgICAgICBmcmVlKHNlbGYtPmJ1ZmZlcik7CisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmZmVyKTsKICAgICAgICAgc2VsZi0+YnVmZmVyID0gTlVMTDsKICAgICB9CiAgICAgUHlfWERFQ1JFRihzZWxmLT5pbnRlcm4pOwpAQCAtMTQ0MCw3ICsxNDU4LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKGIpIHsKICAgICAgICAgICAgIGlmIChzZWxmLT5idWZmZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciA9IG1hbGxvYyhzZWxmLT5idWZmZXJfc2l6ZSk7CisgICAgICAgICAgICAgICAgc2VsZi0+YnVmZmVyID0gUHlNZW1fTWFsbG9jKHNlbGYtPmJ1ZmZlcl9zaXplKTsKICAgICAgICAgICAgICAgICBpZiAoc2VsZi0+YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQ1MSw3ICsxNDY5LDcgQEAKICAgICAgICAgZWxzZSBpZiAoc2VsZi0+YnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChmbHVzaF9jaGFyYWN0ZXJfYnVmZmVyKHNlbGYpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBmcmVlKHNlbGYtPmJ1ZmZlcik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1ZmZlcik7CiAgICAgICAgICAgICBzZWxmLT5idWZmZXIgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTUxMyw5ICsxNTMxLDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBmcmVlIGV4aXN0aW5nIGJ1ZmZlciAqLwotICAgICAgICBmcmVlKHNlbGYtPmJ1ZmZlcik7CisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmZmVyKTsKICAgICAgIH0KLSAgICAgIHNlbGYtPmJ1ZmZlciA9IG1hbGxvYyhuZXdfYnVmZmVyX3NpemUpOworICAgICAgc2VsZi0+YnVmZmVyID0gUHlNZW1fTWFsbG9jKG5ld19idWZmZXJfc2l6ZSk7CiAgICAgICBpZiAoc2VsZi0+YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weXRob24uYyBiL01vZHVsZXMvcHl0aG9uLmMKaW5kZXggZjc4MWQ5YS4uOTgxMWMwMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weXRob24uYworKysgYi9Nb2R1bGVzL3B5dGhvbi5jCkBAIC0yMyw5ICsyMywxMiBAQAogICAgIHdjaGFyX3QgKiphcmd2X2NvcHkyOwogICAgIGludCBpLCByZXM7CiAgICAgY2hhciAqb2xkbG9jOworI2lmZGVmIF9fRnJlZUJTRF9fCisgICAgZnBfZXhjZXB0X3QgbTsKKyNlbmRpZgogCi0gICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fTWFsbG9jKHNpemVvZih3Y2hhcl90KikqKGFyZ2MrMSkpOwotICAgIGFyZ3ZfY29weTIgPSAod2NoYXJfdCAqKilQeU1lbV9NYWxsb2Moc2l6ZW9mKHdjaGFyX3QqKSooYXJnYysxKSk7CisgICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CisgICAgYXJndl9jb3B5MiA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGlmICghYXJndl9jb3B5IHx8ICFhcmd2X2NvcHkyKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAib3V0IG9mIG1lbW9yeVxuIik7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMzcsMTcgKzQwLDIxIEBACiAgICAgICogZXhjZXB0aW9ucyBieSBkZWZhdWx0LiAgSGVyZSB3ZSBkaXNhYmxlIHRoZW0uCiAgICAgICovCiAjaWZkZWYgX19GcmVlQlNEX18KLSAgICBmcF9leGNlcHRfdCBtOwotCiAgICAgbSA9IGZwZ2V0bWFzaygpOwogICAgIGZwc2V0bWFzayhtICYgfkZQX1hfT0ZMKTsKICNlbmRpZgotICAgIG9sZGxvYyA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7CisKKyAgICBvbGRsb2MgPSBfUHlNZW1fUmF3U3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKKyAgICBpZiAoIW9sZGxvYykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnlcbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKICAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICBhcmd2X2NvcHlbaV0gPSBfUHlfY2hhcjJ3Y2hhcihhcmd2W2ldLCBOVUxMKTsKICAgICAgICAgaWYgKCFhcmd2X2NvcHlbaV0pIHsKLSAgICAgICAgICAgIGZyZWUob2xkbG9jKTsKKyAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUob2xkbG9jKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpOwpAQCAtNTgsMTMgKzY1LDEzIEBACiAgICAgYXJndl9jb3B5MlthcmdjXSA9IGFyZ3ZfY29weVthcmdjXSA9IE5VTEw7CiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCBvbGRsb2MpOwotICAgIGZyZWUob2xkbG9jKTsKKyAgICBQeU1lbV9SYXdGcmVlKG9sZGxvYyk7CiAgICAgcmVzID0gUHlfTWFpbihhcmdjLCBhcmd2X2NvcHkpOwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgUHlNZW1fRnJlZShhcmd2X2NvcHkyW2ldKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkyW2ldKTsKICAgICB9Ci0gICAgUHlNZW1fRnJlZShhcmd2X2NvcHkpOwotICAgIFB5TWVtX0ZyZWUoYXJndl9jb3B5Mik7CisgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkpOworICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5Mik7CiAgICAgcmV0dXJuIHJlczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDcxYzI0MjMuLmFiMjQ2MzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTYsNiArNiw3IEBACiAKIC8qIFN0YW5kYXJkIGRlZmluaXRpb25zICovCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c2V0am1wLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTc0LDYgKzc1LDU1IEBACiAgICAoc2VlIGlzc3VlICMxNzI4OSBmb3IgdGhlIG1vdGl2YXRpb24pLiAqLwogc3RhdGljIGNoYXIgKmNvbXBsZXRlcl93b3JkX2JyZWFrX2NoYXJhY3RlcnM7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgUHlPYmplY3QgKmNvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2s7CisgIFB5T2JqZWN0ICpzdGFydHVwX2hvb2s7CisgIFB5T2JqZWN0ICpwcmVfaW5wdXRfaG9vazsKKyAgUHlPYmplY3QgKmNvbXBsZXRlcjsKKyAgUHlPYmplY3QgKmJlZ2lkeDsKKyAgUHlPYmplY3QgKmVuZGlkeDsKK30gcmVhZGxpbmVzdGF0ZTsKKworCisjZGVmaW5lIHJlYWRsaW5lX3N0YXRlKG8pICgocmVhZGxpbmVzdGF0ZSAqKVB5TW9kdWxlX0dldFN0YXRlKG8pKQorCitzdGF0aWMgaW50CityZWFkbGluZV9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgIHJlYWRsaW5lc3RhdGUgKnN0YXRlID0gcmVhZGxpbmVfc3RhdGUobSk7CisgICBQeV9DTEVBUihzdGF0ZS0+Y29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayk7CisgICBQeV9DTEVBUihzdGF0ZS0+c3RhcnR1cF9ob29rKTsKKyAgIFB5X0NMRUFSKHN0YXRlLT5wcmVfaW5wdXRfaG9vayk7CisgICBQeV9DTEVBUihzdGF0ZS0+Y29tcGxldGVyKTsKKyAgIFB5X0NMRUFSKHN0YXRlLT5iZWdpZHgpOworICAgUHlfQ0xFQVIoc3RhdGUtPmVuZGlkeCk7CisgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorcmVhZGxpbmVfdHJhdmVyc2UoUHlPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIHJlYWRsaW5lc3RhdGUgKnN0YXRlID0gcmVhZGxpbmVfc3RhdGUobSk7CisgICAgUHlfVklTSVQoc3RhdGUtPmNvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2spOworICAgIFB5X1ZJU0lUKHN0YXRlLT5zdGFydHVwX2hvb2spOworICAgIFB5X1ZJU0lUKHN0YXRlLT5wcmVfaW5wdXRfaG9vayk7CisgICAgUHlfVklTSVQoc3RhdGUtPmNvbXBsZXRlcik7CisgICAgUHlfVklTSVQoc3RhdGUtPmJlZ2lkeCk7CisgICAgUHlfVklTSVQoc3RhdGUtPmVuZGlkeCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCityZWFkbGluZV9mcmVlKHZvaWQgKm0pCit7CisgICAgcmVhZGxpbmVfY2xlYXIoKFB5T2JqZWN0ICopbSk7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZiByZWFkbGluZW1vZHVsZTsKKworI2RlZmluZSByZWFkbGluZXN0YXRlX2dsb2JhbCAoKHJlYWRsaW5lc3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShQeVN0YXRlX0ZpbmRNb2R1bGUoJnJlYWRsaW5lbW9kdWxlKSkpCisKKwogLyogRXhwb3J0ZWQgZnVuY3Rpb24gdG8gc2VuZCBvbmUgbGluZSB0byByZWFkbGluZSdzIGluaXQgZmlsZSBwYXJzZXIgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg0LDEyICsxMzQsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogTWFrZSBhIGNvcHkgLS0gcmxfcGFyc2VfYW5kX2JpbmQoKSBtb2RpZmllcyBpdHMgYXJndW1lbnQgKi8KICAgICAvKiBCZXJuYXJkIEhlcnpvZyAqLwotICAgIGNvcHkgPSBtYWxsb2MoMSArIHN0cmxlbihzKSk7CisgICAgY29weSA9IFB5TWVtX01hbGxvYygxICsgc3RybGVuKHMpKTsKICAgICBpZiAoY29weSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICBzdHJjcHkoY29weSwgcyk7CiAgICAgcmxfcGFyc2VfYW5kX2JpbmQoY29weSk7Ci0gICAgZnJlZShjb3B5KTsgLyogRnJlZSB0aGUgY29weSAqLworICAgIFB5TWVtX0ZyZWUoY29weSk7IC8qIEZyZWUgdGhlIGNvcHkgKi8KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMjUwLDIzICszMDAsMjEgQEAKIAogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIHRvIHNwZWNpZnkgaG9vayBmdW5jdGlvbnMgaW4gUHl0aG9uICovCiAKLXN0YXRpYyBQeU9iamVjdCAqY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayA9IE5VTEw7Ci1zdGF0aWMgUHlPYmplY3QgKnN0YXJ0dXBfaG9vayA9IE5VTEw7CiAKICNpZmRlZiBIQVZFX1JMX1BSRV9JTlBVVF9IT09LCi1zdGF0aWMgUHlPYmplY3QgKnByZV9pbnB1dF9ob29rID0gTlVMTDsKKwogI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IHNldF9ob29rKCJjb21wbGV0aW9uX2Rpc3BsYXlfbWF0Y2hlc19ob29rIiwKLSAgICAgICAgICAgICAgICAgICAgJmNvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2ssIGFyZ3MpOworICAgICAgICAgICAgICAgICAgICAmcmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmNvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2ssIGFyZ3MpOwogI2lmZGVmIEhBVkVfUkxfQ09NUExFVElPTl9ESVNQTEFZX01BVENIRVNfSE9PSwogICAgIC8qIFdlIGNhbm5vdCBzZXQgdGhpcyBob29rIGdsb2JhbGx5LCBzaW5jZSBpdCByZXBsYWNlcyB0aGUKICAgICAgICBkZWZhdWx0IGNvbXBsZXRpb24gZGlzcGxheS4gKi8KICAgICBybF9jb21wbGV0aW9uX2Rpc3BsYXlfbWF0Y2hlc19ob29rID0KLSAgICAgICAgY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayA/CisgICAgICAgIHJlYWRsaW5lc3RhdGVfZ2xvYmFsLT5jb21wbGV0aW9uX2Rpc3BsYXlfbWF0Y2hlc19ob29rID8KICNpZiBkZWZpbmVkKF9STF9GVU5DVElPTl9UWVBFREVGKQogICAgICAgICAocmxfY29tcGRpc3BfZnVuY190ICopb25fY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vayA6IDA7CiAjZWxzZQpAQCAtMjg3LDcgKzMzNSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3N0YXJ0dXBfaG9vayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIHNldF9ob29rKCJzdGFydHVwX2hvb2siLCAmc3RhcnR1cF9ob29rLCBhcmdzKTsKKyAgICByZXR1cm4gc2V0X2hvb2soInN0YXJ0dXBfaG9vayIsICZyZWFkbGluZXN0YXRlX2dsb2JhbC0+c3RhcnR1cF9ob29rLCBhcmdzKTsKIH0KIAogUHlEb2NfU1RSVkFSKGRvY19zZXRfc3RhcnR1cF9ob29rLApAQCAtMzA0LDcgKzM1Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3ByZV9pbnB1dF9ob29rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gc2V0X2hvb2soInByZV9pbnB1dF9ob29rIiwgJnByZV9pbnB1dF9ob29rLCBhcmdzKTsKKyAgICByZXR1cm4gc2V0X2hvb2soInByZV9pbnB1dF9ob29rIiwgJnJlYWRsaW5lc3RhdGVfZ2xvYmFsLT5wcmVfaW5wdXRfaG9vaywgYXJncyk7CiB9CiAKIFB5RG9jX1NUUlZBUihkb2Nfc2V0X3ByZV9pbnB1dF9ob29rLApAQCAtMzE5LDEwICszNjcsMTAgQEAKIAogLyogRXhwb3J0ZWQgZnVuY3Rpb24gdG8gc3BlY2lmeSBhIHdvcmQgY29tcGxldGVyIGluIFB5dGhvbiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKmNvbXBsZXRlciA9IE5VTEw7CiAKLXN0YXRpYyBQeU9iamVjdCAqYmVnaWR4ID0gTlVMTDsKLXN0YXRpYyBQeU9iamVjdCAqZW5kaWR4ID0gTlVMTDsKKworCisKIAogCiAvKiBHZXQgdGhlIGNvbXBsZXRpb24gdHlwZSBmb3IgdGhlIHNjb3BlIG9mIHRoZSB0YWItY29tcGxldGlvbiAqLwpAQCAtMzQyLDggKzM5MCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X2JlZ2lkeChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJnKQogewotICAgIFB5X0lOQ1JFRihiZWdpZHgpOwotICAgIHJldHVybiBiZWdpZHg7CisgICAgUHlfSU5DUkVGKHJlYWRsaW5lc3RhdGVfZ2xvYmFsLT5iZWdpZHgpOworICAgIHJldHVybiByZWFkbGluZXN0YXRlX2dsb2JhbC0+YmVnaWR4OwogfQogCiBQeURvY19TVFJWQVIoZG9jX2dldF9iZWdpZHgsCkBAIC0zNTYsOCArNDA0LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfZW5kaWR4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmcpCiB7Ci0gICAgUHlfSU5DUkVGKGVuZGlkeCk7Ci0gICAgcmV0dXJuIGVuZGlkeDsKKyAgICBQeV9JTkNSRUYocmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmVuZGlkeCk7CisgICAgcmV0dXJuIHJlYWRsaW5lc3RhdGVfZ2xvYmFsLT5lbmRpZHg7CiB9CiAKIFB5RG9jX1NUUlZBUihkb2NfZ2V0X2VuZGlkeCwKQEAgLTUyMiw3ICs1NzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9jb21wbGV0ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBzZXRfaG9vaygiY29tcGxldGVyIiwgJmNvbXBsZXRlciwgYXJncyk7CisgICAgcmV0dXJuIHNldF9ob29rKCJjb21wbGV0ZXIiLCAmcmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmNvbXBsZXRlciwgYXJncyk7CiB9CiAKIFB5RG9jX1NUUlZBUihkb2Nfc2V0X2NvbXBsZXRlciwKQEAgLTUzNiwxMSArNTg0LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X2NvbXBsZXRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKLSAgICBpZiAoY29tcGxldGVyID09IE5VTEwpIHsKKyAgICBpZiAocmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmNvbXBsZXRlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KLSAgICBQeV9JTkNSRUYoY29tcGxldGVyKTsKLSAgICByZXR1cm4gY29tcGxldGVyOworICAgIFB5X0lOQ1JFRihyZWFkbGluZXN0YXRlX2dsb2JhbC0+Y29tcGxldGVyKTsKKyAgICByZXR1cm4gcmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmNvbXBsZXRlcjsKIH0KIAogUHlEb2NfU1RSVkFSKGRvY19nZXRfY29tcGxldGVyLApAQCAtNzQ0LDkgKzc5Miw2IEBACiAgICAgaW50IHJlc3VsdCA9IDA7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcjsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKLSNlbmRpZgogICAgICAgICByID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGZ1bmMsIE5VTEwpOwogICAgICAgICBpZiAociA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTc2Myw5ICs4MDgsNiBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9YREVDUkVGKHIpOwogICAgICAgZG9uZToKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ2lsc3RhdGUpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC03NzQsMTQgKzgxNiwzMCBAQAogc3RhdGljIGludAogb25fc3RhcnR1cF9ob29rKHZvaWQpCiB7Ci0gICAgcmV0dXJuIG9uX2hvb2soc3RhcnR1cF9ob29rKTsKKyAgICBpbnQgcjsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisgICAgciA9IG9uX2hvb2socmVhZGxpbmVzdGF0ZV9nbG9iYWwtPnN0YXJ0dXBfaG9vayk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1JlbGVhc2UoZ2lsc3RhdGUpOworI2VuZGlmCisgICAgcmV0dXJuIHI7CiB9CiAKICNpZmRlZiBIQVZFX1JMX1BSRV9JTlBVVF9IT09LCiBzdGF0aWMgaW50CiBvbl9wcmVfaW5wdXRfaG9vayh2b2lkKQogewotICAgIHJldHVybiBvbl9ob29rKHByZV9pbnB1dF9ob29rKTsKKyAgICBpbnQgcjsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisgICAgciA9IG9uX2hvb2socmVhZGxpbmVzdGF0ZV9nbG9iYWwtPnByZV9pbnB1dF9ob29rKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxzdGF0ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcjsKIH0KICNlbmRpZgogCkBAIC04MDgsNyArODY2LDcgQEAKICAgICAgICAgaWYgKFB5TGlzdF9TZXRJdGVtKG0sIGksIHMpID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjb21wbGV0aW9uX2Rpc3BsYXlfbWF0Y2hlc19ob29rLAorICAgIHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24ocmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmNvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic09pIiwgbWF0Y2hlc1swXSwgbSwgbWF4X2xlbmd0aCk7CiAKICAgICBQeV9ERUNSRUYobSk7IG09TlVMTDsKQEAgLTgzOCwxMyArODk2LDEzIEBACiBvbl9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGF0ZSkKIHsKICAgICBjaGFyICpyZXN1bHQgPSBOVUxMOwotICAgIGlmIChjb21wbGV0ZXIgIT0gTlVMTCkgeworICAgIGlmIChyZWFkbGluZXN0YXRlX2dsb2JhbC0+Y29tcGxldGVyICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnI7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICAgICAgUHlHSUxTdGF0ZV9TVEFURSBnaWxzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CiAjZW5kaWYKICAgICAgICAgcmxfYXR0ZW1wdGVkX2NvbXBsZXRpb25fb3ZlciA9IDE7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY29tcGxldGVyLCAic2kiLCB0ZXh0LCBzdGF0ZSk7CisgICAgICAgIHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24ocmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmNvbXBsZXRlciwgInNpIiwgdGV4dCwgc3RhdGUpOwogICAgICAgICBpZiAociA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgaWYgKHIgPT0gUHlfTm9uZSkgewpAQCAtODc3LDI0ICs5MzUsMzIgQEAKIHN0YXRpYyBjaGFyICoqCiBmbGV4X2NvbXBsZXRlKGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIHsKKyAgICBjaGFyICoqcmVzdWx0OworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9TVEFURSBnaWxzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CisjZW5kaWYKICNpZmRlZiBIQVZFX1JMX0NPTVBMRVRJT05fQVBQRU5EX0NIQVJBQ1RFUgogICAgIHJsX2NvbXBsZXRpb25fYXBwZW5kX2NoYXJhY3RlciA9J1wwJzsKICNlbmRpZgogI2lmZGVmIEhBVkVfUkxfQ09NUExFVElPTl9TVVBQUkVTU19BUFBFTkQKICAgICBybF9jb21wbGV0aW9uX3N1cHByZXNzX2FwcGVuZCA9IDA7CiAjZW5kaWYKLSAgICBQeV9YREVDUkVGKGJlZ2lkeCk7Ci0gICAgUHlfWERFQ1JFRihlbmRpZHgpOwotICAgIGJlZ2lkeCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3RhcnQpOwotICAgIGVuZGlkeCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgZW5kKTsKLSAgICByZXR1cm4gY29tcGxldGlvbl9tYXRjaGVzKHRleHQsICpvbl9jb21wbGV0aW9uKTsKKyAgICBQeV9YREVDUkVGKHJlYWRsaW5lc3RhdGVfZ2xvYmFsLT5iZWdpZHgpOworICAgIFB5X1hERUNSRUYocmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmVuZGlkeCk7CisgICAgcmVhZGxpbmVzdGF0ZV9nbG9iYWwtPmJlZ2lkeCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3RhcnQpOworICAgIHJlYWRsaW5lc3RhdGVfZ2xvYmFsLT5lbmRpZHggPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIGVuZCk7CisgICAgcmVzdWx0ID0gY29tcGxldGlvbl9tYXRjaGVzKHRleHQsICpvbl9jb21wbGV0aW9uKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxzdGF0ZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAKIC8qIEhlbHBlciB0byBpbml0aWFsaXplIEdOVSByZWFkbGluZSBwcm9wZXJseS4gKi8KIAogc3RhdGljIHZvaWQKLXNldHVwX3JlYWRsaW5lKHZvaWQpCitzZXR1cF9yZWFkbGluZShyZWFkbGluZXN0YXRlICptb2Rfc3RhdGUpCiB7CiAjaWZkZWYgU0FWRV9MT0NBTEUKICAgICBjaGFyICpzYXZlZF9sb2NhbGUgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKSk7CkBAIC05MTMsMTAgKzk3OSw2IEBACiAgICAgdXNpbmdfaGlzdG9yeSgpOwogCiAgICAgcmxfcmVhZGxpbmVfbmFtZSA9ICJweXRob24iOwotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgLyogQWxsb3cgJGlmIHRlcm09IGluIC5pbnB1dHJjIHRvIHdvcmsgKi8KLSAgICBybF90ZXJtaW5hbF9uYW1lID0gZ2V0ZW52KCJURVJNIik7Ci0jZW5kaWYKICAgICAvKiBGb3JjZSByZWJpbmQgb2YgVEFCIHRvIGluc2VydC10YWIgKi8KICAgICBybF9iaW5kX2tleSgnXHQnLCBybF9pbnNlcnQpOwogICAgIC8qIEJpbmQgYm90aCBFU0MtVEFCIGFuZCBFU0MtRVNDIHRvIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9uICovCkBAIC05MzUsOCArOTk3LDggQEAKICAgICAgICAgc3RyZHVwKCIgXHRcbmB+IUAjJCVeJiooKS09K1t7XX1cXHw7OidcIiw8Pi8/Iik7CiAgICAgICAgIC8qIEFsbCBub25hbHBoYW51bXMgZXhjZXB0ICcuJyAqLwogCi0gICAgYmVnaWR4ID0gUHlMb25nX0Zyb21Mb25nKDBMKTsKLSAgICBlbmRpZHggPSBQeUxvbmdfRnJvbUxvbmcoMEwpOworICAgIG1vZF9zdGF0ZS0+YmVnaWR4ID0gUHlMb25nX0Zyb21Mb25nKDBMKTsKKyAgICBtb2Rfc3RhdGUtPmVuZGlkeCA9IFB5TG9uZ19Gcm9tTG9uZygwTCk7CiAgICAgLyogSW5pdGlhbGl6ZSAoYWxsb3dzIC5pbnB1dHJjIHRvIG92ZXJyaWRlKQogICAgICAqCiAgICAgICogWFhYOiBBIGJ1ZyBpbiB0aGUgcmVhZGxpbmUtMi4yIGxpYnJhcnkgY2F1c2VzIGEgbWVtb3J5IGxlYWsKQEAgLTExNTgsMTIgKzEyMjAsMTIgQEAKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgInJlYWRsaW5lIiwKICAgICBkb2NfbW9kdWxlLAotICAgIC0xLAorICAgIHNpemVvZihyZWFkbGluZXN0YXRlKSwKICAgICByZWFkbGluZV9tZXRob2RzLAogICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKKyAgICByZWFkbGluZV90cmF2ZXJzZSwKKyAgICByZWFkbGluZV9jbGVhciwKKyAgICByZWFkbGluZV9mcmVlCiB9OwogCiAKQEAgLTExNzEsNiArMTIzMyw3IEBACiBQeUluaXRfcmVhZGxpbmUodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbTsKKyAgICByZWFkbGluZXN0YXRlICptb2Rfc3RhdGU7CiAKICNpZmRlZiBfX0FQUExFX18KICAgICBpZiAoc3RybmNtcChybF9saWJyYXJ5X3ZlcnNpb24sIGxpYmVkaXRfdmVyc2lvbl90YWcsIHN0cmxlbihsaWJlZGl0X3ZlcnNpb25fdGFnKSkgPT0gMCkgewpAQCAtMTE4Nyw3ICsxMjUwLDggQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIG1vZF9zdGF0ZSA9IChyZWFkbGluZXN0YXRlICopIFB5TW9kdWxlX0dldFN0YXRlKG0pOwogICAgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgPSBjYWxsX3JlYWRsaW5lOwotICAgIHNldHVwX3JlYWRsaW5lKCk7CisgICAgc2V0dXBfcmVhZGxpbmUobW9kX3N0YXRlKTsKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCBiMjk0YThjLi44NzY4MzE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0yNjMsODAgKzI2Myw4MyBAQAogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RSVXNhZ2VUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfcnVzYWdlX2Rlc2MpOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZTdHJ1Y3RSVXNhZ2VUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF9ydXNhZ2VfZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RSVXNhZ2VUeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0cnVjdF9ydXNhZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSAmU3RydWN0UlVzYWdlVHlwZSk7CiAKICAgICAvKiBpbnNlcnQgY29uc3RhbnRzICovCiAjaWZkZWYgUkxJTUlUX0NQVQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSTElNSVRfQ1BVIiwgUkxJTUlUX0NQVSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX0NQVSk7CiAjZW5kaWYKIAogI2lmZGVmIFJMSU1JVF9GU0laRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSTElNSVRfRlNJWkUiLCBSTElNSVRfRlNJWkUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJMSU1JVF9GU0laRSk7CiAjZW5kaWYKIAogI2lmZGVmIFJMSU1JVF9EQVRBCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9EQVRBIiwgUkxJTUlUX0RBVEEpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJMSU1JVF9EQVRBKTsKICNlbmRpZgogCiAjaWZkZWYgUkxJTUlUX1NUQUNLCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9TVEFDSyIsIFJMSU1JVF9TVEFDSyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX1NUQUNLKTsKICNlbmRpZgogCiAjaWZkZWYgUkxJTUlUX0NPUkUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkxJTUlUX0NPUkUiLCBSTElNSVRfQ09SRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX0NPUkUpOwogI2VuZGlmCiAKICNpZmRlZiBSTElNSVRfTk9GSUxFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9OT0ZJTEUiLCBSTElNSVRfTk9GSUxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSTElNSVRfTk9GSUxFKTsKICNlbmRpZgogCiAjaWZkZWYgUkxJTUlUX09GSUxFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9PRklMRSIsIFJMSU1JVF9PRklMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX09GSUxFKTsKICNlbmRpZgogCiAjaWZkZWYgUkxJTUlUX1ZNRU0KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkxJTUlUX1ZNRU0iLCBSTElNSVRfVk1FTSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX1ZNRU0pOwogI2VuZGlmCiAKICNpZmRlZiBSTElNSVRfQVMKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkxJTUlUX0FTIiwgUkxJTUlUX0FTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSTElNSVRfQVMpOwogI2VuZGlmCiAKICNpZmRlZiBSTElNSVRfUlNTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9SU1MiLCBSTElNSVRfUlNTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSTElNSVRfUlNTKTsKICNlbmRpZgogCiAjaWZkZWYgUkxJTUlUX05QUk9DCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9OUFJPQyIsIFJMSU1JVF9OUFJPQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX05QUk9DKTsKICNlbmRpZgogCiAjaWZkZWYgUkxJTUlUX01FTUxPQ0sKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkxJTUlUX01FTUxPQ0siLCBSTElNSVRfTUVNTE9DSyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkxJTUlUX01FTUxPQ0spOwogI2VuZGlmCiAKICNpZmRlZiBSTElNSVRfU0JTSVpFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJMSU1JVF9TQlNJWkUiLCBSTElNSVRfU0JTSVpFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSTElNSVRfU0JTSVpFKTsKICNlbmRpZgogCiAjaWZkZWYgUlVTQUdFX1NFTEYKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUlVTQUdFX1NFTEYiLCBSVVNBR0VfU0VMRik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlVTQUdFX1NFTEYpOwogI2VuZGlmCiAKICNpZmRlZiBSVVNBR0VfQ0hJTERSRU4KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUlVTQUdFX0NISUxEUkVOIiwgUlVTQUdFX0NISUxEUkVOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVVNBR0VfQ0hJTERSRU4pOwogI2VuZGlmCiAKICNpZmRlZiBSVVNBR0VfQk9USAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSVVNBR0VfQk9USCIsIFJVU0FHRV9CT1RIKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVVNBR0VfQk9USCk7CiAjZW5kaWYKIAogI2lmZGVmIFJVU0FHRV9USFJFQUQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUlVTQUdFX1RIUkVBRCIsIFJVU0FHRV9USFJFQUQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJVU0FHRV9USFJFQUQpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggMmNhMmQ0MS4uMjUyZGVlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC00NywxMSArNDcsNiBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2luY2x1ZGUgPHV0aWxzLmg+Ci0jZW5kaWYKLQogI2lmZGVmIE1TX1dJTkRPV1MKICMgIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCiAjICBpbmNsdWRlIDx3aW5zb2NrLmg+CkBAIC0zMDQsOSArMjk5LDkgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0ID0gUHlUdXBsZV9QYWNrKDMsIGlmZGxpc3QsIG9mZGxpc3QsIGVmZGxpc3QpOwogCi0gICAgICAgIFB5X0RFQ1JFRihpZmRsaXN0KTsKLSAgICAgICAgUHlfREVDUkVGKG9mZGxpc3QpOwotICAgICAgICBQeV9ERUNSRUYoZWZkbGlzdCk7CisgICAgICAgIFB5X1hERUNSRUYoaWZkbGlzdCk7CisgICAgICAgIFB5X1hERUNSRUYob2ZkbGlzdCk7CisgICAgICAgIFB5X1hERUNSRUYoZWZkbGlzdCk7CiAgICAgfQogCiAgIGZpbmFsbHk6CkBAIC0xNDAzLDYgKzEzOTgsMjQgQEAKIGluIHNlY29uZHMgKGFzIGZsb2F0KS4gLTEgbWFrZXMgcG9sbCB3YWl0IGluZGVmaW5pdGVseS5cblwKIFVwIHRvIG1heGV2ZW50cyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXBvbGxfZW50ZXIocHlFcG9sbF9PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChzZWxmLT5lcGZkIDwgMCkKKyAgICAgICAgcmV0dXJuIHB5ZXBvbGxfZXJyX2Nsb3NlZCgpOworCisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcHllcG9sbF9leGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9jbG9zZSwgTlVMTCk7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBweWVwb2xsX21ldGhvZHNbXSA9IHsKICAgICB7ImZyb21mZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilweWVwb2xsX2Zyb21mZCwKICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9DTEFTUywgcHllcG9sbF9mcm9tZmRfZG9jfSwKQEAgLTE0MTgsNiArMTQzMSwxMCBAQAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAgICAgIHB5ZXBvbGxfdW5yZWdpc3Rlcl9kb2N9LAogICAgIHsicG9sbCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXB5ZXBvbGxfcG9sbCwKICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgICAgICBweWVwb2xsX3BvbGxfZG9jfSwKKyAgICB7Il9fZW50ZXJfXyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcHllcG9sbF9lbnRlciwgICAgIE1FVEhfTk9BUkdTLAorICAgICBOVUxMfSwKKyAgICB7Il9fZXhpdF9fIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilweWVwb2xsX2V4aXQsICAgICBNRVRIX1ZBUkFSR1MsCisgICAgIE5VTEx9LAogICAgIHtOVUxMLCAgICAgIE5VTEx9LAogfTsKIApAQCAtMjE2Niw3ICsyMTgzLDcgQEAKICN1bmRlZiBQSVBFX0JVRgogI2RlZmluZSBQSVBFX0JVRiA1MTIKICNlbmRpZgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQSVBFX0JVRiIsIFBJUEVfQlVGKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQSVBFX0JVRik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9QT0xMKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QT0xMKQpAQCAtMjE4MSwyNyArMjE5OCwyNyBAQAogI2VuZGlmCiAgICAgICAgIGlmIChQeVR5cGVfUmVhZHkoJnBvbGxfVHlwZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQT0xMSU4iLCBQT0xMSU4pOwotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTFBSSSIsIFBPTExQUkkpOwotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTE9VVCIsIFBPTExPVVQpOwotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTEVSUiIsIFBPTExFUlIpOwotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTEhVUCIsIFBPTExIVVApOwotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTE5WQUwiLCBQT0xMTlZBTCk7CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExJTik7CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExQUkkpOworICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMT1VUKTsKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTEVSUik7CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExIVVApOworICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMTlZBTCk7CiAKICNpZmRlZiBQT0xMUkROT1JNCi0gICAgICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQT0xMUkROT1JNIiwgUE9MTFJETk9STSk7CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExSRE5PUk0pOwogI2VuZGlmCiAjaWZkZWYgUE9MTFJEQkFORAotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTFJEQkFORCIsIFBPTExSREJBTkQpOworICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMUkRCQU5EKTsKICNlbmRpZgogI2lmZGVmIFBPTExXUk5PUk0KLSAgICAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBPTExXUk5PUk0iLCBQT0xMV1JOT1JNKTsKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTFdSTk9STSk7CiAjZW5kaWYKICNpZmRlZiBQT0xMV1JCQU5ECi0gICAgICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQT0xMV1JCQU5EIiwgUE9MTFdSQkFORCk7CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExXUkJBTkQpOwogI2VuZGlmCiAjaWZkZWYgUE9MTE1TRwotICAgICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUE9MTE1TRyIsIFBPTExNU0cpOworICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQT0xMTVNHKTsKICNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KQEAgLTIyMTksMjUgKzIyMzYsMjUgQEAKICAgICBQeV9JTkNSRUYoJnB5RXBvbGxfVHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcG9sbCIsIChQeU9iamVjdCAqKSAmcHlFcG9sbF9UeXBlKTsKIAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTElOIiwgRVBPTExJTik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMT1VUIiwgRVBPTExPVVQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFBSSSIsIEVQT0xMUFJJKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExFUlIiLCBFUE9MTEVSUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMSFVQIiwgRVBPTExIVVApOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTEVUIiwgRVBPTExFVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExJTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExPVVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUFJJKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVSUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExIVVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMRVQpOwogI2lmZGVmIEVQT0xMT05FU0hPVAogICAgIC8qIEtlcm5lbCAyLjYuMisgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExPTkVTSE9UIiwgRVBPTExPTkVTSE9UKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTE9ORVNIT1QpOwogI2VuZGlmCiAgICAgLyogUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMX1JESFVQIiwgRVBPTExSREhVUCk7ICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMUkROT1JNIiwgRVBPTExSRE5PUk0pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFJEQkFORCIsIEVQT0xMUkRCQU5EKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExXUk5PUk0iLCBFUE9MTFdSTk9STSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMV1JCQU5EIiwgRVBPTExXUkJBTkQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTE1TRyIsIEVQT0xMTVNHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTFJETk9STSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSREJBTkQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMV1JOT1JNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTFdSQkFORCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExNU0cpOwogCiAjaWZkZWYgRVBPTExfQ0xPRVhFQwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9DTE9FWEVDIiwgRVBPTExfQ0xPRVhFQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExfQ0xPRVhFQyk7CiAjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0VQT0xMICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggZDBmMzE4ZC4uZTdjN2VhNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTkyLDEwICs5Miw2IEBACiAgICAgICh5KVs0XSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj4yNCkmMjU1KTsgKHkpWzVdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjE2KSYyNTUpOyAgICAgXAogICAgICAoeSlbNl0gPSAodW5zaWduZWQgY2hhcikoKCh4KT4+OCkmMjU1KTsgKHkpWzddID0gKHVuc2lnbmVkIGNoYXIpKCh4KSYyNTUpOyB9CiAKLSNpZm5kZWYgTUlOCi0gICAjZGVmaW5lIE1JTih4LCB5KSAoICgoeCk8KHkpKT8oeCk6KHkpICkKLSNlbmRpZgotCiAKIC8qIFNIQTEgbWFjcm9zICovCiAKQEAgLTIyMCw5ICsyMTYsOSBAQAogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBTSEExX0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gU0hBMV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChQeV9zc2l6ZV90KShTSEExX0JMT0NLU0laRSAtIHNoYTEtPmN1cmxlbikpOworICAgICAgICAgICBuID0gUHlfTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoU0hBMV9CTE9DS1NJWkUgLSBzaGExLT5jdXJsZW4pKTsKICAgICAgICAgICAgbWVtY3B5KHNoYTEtPmJ1ZiArIHNoYTEtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7Ci0gICAgICAgICAgIHNoYTEtPmN1cmxlbiAgICs9IG47CisgICAgICAgICAgIHNoYTEtPmN1cmxlbiAgICs9IChTSEExX0lOVDMyKW47CiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IG47CiAgICAgICAgICAgIGlubGVuICAgICAgICAgIC09IG47CiAgICAgICAgICAgIGlmIChzaGExLT5jdXJsZW4gPT0gU0hBMV9CTE9DS1NJWkUpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCmluZGV4IDlmNmI0MTYuLjc2N2JmYWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwpAQCAtMjEsMTMgKzIxLDYgQEAKICNpbmNsdWRlICJoYXNobGliLmgiCiAKIAotLyogRW5kaWFubmVzcyB0ZXN0aW5nIGFuZCBkZWZpbml0aW9ucyAqLwotI2RlZmluZSBUZXN0RW5kaWFubmVzcyh2YXJpYWJsZSkge2ludCBpPTE7IHZhcmlhYmxlPVBDVF9CSUdfRU5ESUFOO1wKLSAgICAgICAgaWYgKCooKGNoYXIqKSZpKT09MSkgdmFyaWFibGU9UENUX0xJVFRMRV9FTkRJQU47fQotCi0jZGVmaW5lIFBDVF9MSVRUTEVfRU5ESUFOIDEKLSNkZWZpbmUgUENUX0JJR19FTkRJQU4gMAotCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU0hBX0JZVEU7CkBAIC01MCw3ICs0Myw2IEBACiAgICAgU0hBX0lOVDMyIGRpZ2VzdFs4XTsgICAgICAgICAgICAgICAgLyogTWVzc2FnZSBkaWdlc3QgKi8KICAgICBTSEFfSU5UMzIgY291bnRfbG8sIGNvdW50X2hpOyAgICAgICAvKiA2NC1iaXQgYml0IGNvdW50ICovCiAgICAgU0hBX0JZVEUgZGF0YVtTSEFfQkxPQ0tTSVpFXTsgICAgICAgLyogU0hBIGRhdGEgYnVmZmVyICovCi0gICAgaW50IEVuZGlhbm5lc3M7CiAgICAgaW50IGxvY2FsOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdW5wcm9jZXNzZWQgYW1vdW50IGluIGRhdGEgKi8KICAgICBpbnQgZGlnZXN0c2l6ZTsKIH0gU0hBb2JqZWN0OwpAQCAtNTgsMTMgKzUwLDExIEBACiAvKiBXaGVuIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gQ1BVIHdlIG5lZWQgdG8gcGVyZm9ybSBieXRlIHJldmVyc2FsIG9uIGFuCiAgICBhcnJheSBvZiBsb25nd29yZHMuICovCiAKLXN0YXRpYyB2b2lkIGxvbmdSZXZlcnNlKFNIQV9JTlQzMiAqYnVmZmVyLCBpbnQgYnl0ZUNvdW50LCBpbnQgRW5kaWFubmVzcykKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCitzdGF0aWMgdm9pZCBsb25nUmV2ZXJzZShTSEFfSU5UMzIgKmJ1ZmZlciwgaW50IGJ5dGVDb3VudCkKIHsKICAgICBTSEFfSU5UMzIgdmFsdWU7CiAKLSAgICBpZiAoIEVuZGlhbm5lc3MgPT0gUENUX0JJR19FTkRJQU4gKQotICAgICAgICByZXR1cm47Ci0KICAgICBieXRlQ291bnQgLz0gc2l6ZW9mKCpidWZmZXIpOwogICAgIHdoaWxlIChieXRlQ291bnQtLSkgewogICAgICAgICB2YWx1ZSA9ICpidWZmZXI7CkBAIC03MywxMCArNjMsMTAgQEAKICAgICAgICAgKmJ1ZmZlcisrID0gKCB2YWx1ZSA8PCAxNiApIHwgKCB2YWx1ZSA+PiAxNiApOwogICAgIH0KIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBTSEFjb3B5KFNIQW9iamVjdCAqc3JjLCBTSEFvYmplY3QgKmRlc3QpCiB7Ci0gICAgZGVzdC0+RW5kaWFubmVzcyA9IHNyYy0+RW5kaWFubmVzczsKICAgICBkZXN0LT5sb2NhbCA9IHNyYy0+bG9jYWw7CiAgICAgZGVzdC0+ZGlnZXN0c2l6ZSA9IHNyYy0+ZGlnZXN0c2l6ZTsKICAgICBkZXN0LT5jb3VudF9sbyA9IHNyYy0+Y291bnRfbG87CkBAIC0xMzEsNyArMTIxLDkgQEAKICAgICAgICAgU0hBX0lOVDMyIFNbOF0sIFdbNjRdLCB0MCwgdDE7CiAKICAgICBtZW1jcHkoVywgc2hhX2luZm8tPmRhdGEsIHNpemVvZihzaGFfaW5mby0+ZGF0YSkpOwotICAgIGxvbmdSZXZlcnNlKFcsIChpbnQpc2l6ZW9mKHNoYV9pbmZvLT5kYXRhKSwgc2hhX2luZm8tPkVuZGlhbm5lc3MpOworI2lmIFBZX0xJVFRMRV9FTkRJQU4KKyAgICBsb25nUmV2ZXJzZShXLCAoaW50KXNpemVvZihzaGFfaW5mby0+ZGF0YSkpOworI2VuZGlmCiAKICAgICBmb3IgKGkgPSAxNjsgaSA8IDY0OyArK2kpIHsKICAgICAgICAgICAgICAgICBXW2ldID0gR2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgR2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl07CkBAIC0yMjgsNyArMjIwLDYgQEAKIHN0YXRpYyB2b2lkCiBzaGFfaW5pdChTSEFvYmplY3QgKnNoYV9pbmZvKQogewotICAgIFRlc3RFbmRpYW5uZXNzKHNoYV9pbmZvLT5FbmRpYW5uZXNzKQogICAgIHNoYV9pbmZvLT5kaWdlc3RbMF0gPSAweDZBMDlFNjY3TDsKICAgICBzaGFfaW5mby0+ZGlnZXN0WzFdID0gMHhCQjY3QUU4NUw7CiAgICAgc2hhX2luZm8tPmRpZ2VzdFsyXSA9IDB4M0M2RUYzNzJMOwpAQCAtMjQ2LDcgKzIzNyw2IEBACiBzdGF0aWMgdm9pZAogc2hhMjI0X2luaXQoU0hBb2JqZWN0ICpzaGFfaW5mbykKIHsKLSAgICBUZXN0RW5kaWFubmVzcyhzaGFfaW5mby0+RW5kaWFubmVzcykKICAgICBzaGFfaW5mby0+ZGlnZXN0WzBdID0gMHhjMTA1OWVkOEw7CiAgICAgc2hhX2luZm8tPmRpZ2VzdFsxXSA9IDB4MzY3Y2Q1MDdMOwogICAgIHNoYV9pbmZvLT5kaWdlc3RbMl0gPSAweDMwNzBkZDE3TDsKQEAgLTI4NCw3ICsyNzQsNyBAQAogICAgICAgICBtZW1jcHkoKChTSEFfQllURSAqKSBzaGFfaW5mby0+ZGF0YSkgKyBzaGFfaW5mby0+bG9jYWwsIGJ1ZmZlciwgaSk7CiAgICAgICAgIGNvdW50IC09IGk7CiAgICAgICAgIGJ1ZmZlciArPSBpOwotICAgICAgICBzaGFfaW5mby0+bG9jYWwgKz0gaTsKKyAgICAgICAgc2hhX2luZm8tPmxvY2FsICs9IChpbnQpaTsKICAgICAgICAgaWYgKHNoYV9pbmZvLT5sb2NhbCA9PSBTSEFfQkxPQ0tTSVpFKSB7CiAgICAgICAgICAgICBzaGFfdHJhbnNmb3JtKHNoYV9pbmZvKTsKICAgICAgICAgfQpAQCAtMjk5LDcgKzI4OSw3IEBACiAgICAgICAgIHNoYV90cmFuc2Zvcm0oc2hhX2luZm8pOwogICAgIH0KICAgICBtZW1jcHkoc2hhX2luZm8tPmRhdGEsIGJ1ZmZlciwgY291bnQpOwotICAgIHNoYV9pbmZvLT5sb2NhbCA9IGNvdW50OworICAgIHNoYV9pbmZvLT5sb2NhbCA9IChpbnQpY291bnQ7CiB9CiAKIC8qIGZpbmlzaCBjb21wdXRpbmcgdGhlIFNIQSBkaWdlc3QgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCmluZGV4IDU1MzZmZDUuLjY2YzJjNDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtMjIsMTMgKzIyLDYgQEAKIAogI2lmZGVmIFBZX0xPTkdfTE9ORyAvKiBJZiBubyBQWV9MT05HX0xPTkcsIGRvbid0IGNvbXBpbGUgYW55dGhpbmchICovCiAKLS8qIEVuZGlhbm5lc3MgdGVzdGluZyBhbmQgZGVmaW5pdGlvbnMgKi8KLSNkZWZpbmUgVGVzdEVuZGlhbm5lc3ModmFyaWFibGUpIHtpbnQgaT0xOyB2YXJpYWJsZT1QQ1RfQklHX0VORElBTjtcCi0gICAgICAgIGlmICgqKChjaGFyKikmaSk9PTEpIHZhcmlhYmxlPVBDVF9MSVRUTEVfRU5ESUFOO30KLQotI2RlZmluZSBQQ1RfTElUVExFX0VORElBTiAxCi0jZGVmaW5lIFBDVF9CSUdfRU5ESUFOIDAKLQogLyogU29tZSB1c2VmdWwgdHlwZXMgKi8KIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFNIQV9CWVRFOwpAQCAtNTIsNyArNDUsNiBAQAogICAgIFNIQV9JTlQ2NCBkaWdlc3RbOF07ICAgICAgICAgICAgICAgIC8qIE1lc3NhZ2UgZGlnZXN0ICovCiAgICAgU0hBX0lOVDMyIGNvdW50X2xvLCBjb3VudF9oaTsgICAgICAgLyogNjQtYml0IGJpdCBjb3VudCAqLwogICAgIFNIQV9CWVRFIGRhdGFbU0hBX0JMT0NLU0laRV07ICAgICAgIC8qIFNIQSBkYXRhIGJ1ZmZlciAqLwotICAgIGludCBFbmRpYW5uZXNzOwogICAgIGludCBsb2NhbDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVucHJvY2Vzc2VkIGFtb3VudCBpbiBkYXRhICovCiAgICAgaW50IGRpZ2VzdHNpemU7CiB9IFNIQW9iamVjdDsKQEAgLTYwLDEzICs1MiwxMSBAQAogLyogV2hlbiBydW4gb24gYSBsaXR0bGUtZW5kaWFuIENQVSB3ZSBuZWVkIHRvIHBlcmZvcm0gYnl0ZSByZXZlcnNhbCBvbiBhbgogICAgYXJyYXkgb2YgbG9uZ3dvcmRzLiAqLwogCi1zdGF0aWMgdm9pZCBsb25nUmV2ZXJzZShTSEFfSU5UNjQgKmJ1ZmZlciwgaW50IGJ5dGVDb3VudCwgaW50IEVuZGlhbm5lc3MpCisjaWYgUFlfTElUVExFX0VORElBTgorc3RhdGljIHZvaWQgbG9uZ1JldmVyc2UoU0hBX0lOVDY0ICpidWZmZXIsIGludCBieXRlQ291bnQpCiB7CiAgICAgU0hBX0lOVDY0IHZhbHVlOwogCi0gICAgaWYgKCBFbmRpYW5uZXNzID09IFBDVF9CSUdfRU5ESUFOICkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYnl0ZUNvdW50IC89IHNpemVvZigqYnVmZmVyKTsKICAgICB3aGlsZSAoYnl0ZUNvdW50LS0pIHsKICAgICAgICAgdmFsdWUgPSAqYnVmZmVyOwpAQCAtODMsMTAgKzczLDEwIEBACiAgICAgICAgICAgICAgICAgYnVmZmVyKys7CiAgICAgfQogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIFNIQWNvcHkoU0hBb2JqZWN0ICpzcmMsIFNIQW9iamVjdCAqZGVzdCkKIHsKLSAgICBkZXN0LT5FbmRpYW5uZXNzID0gc3JjLT5FbmRpYW5uZXNzOwogICAgIGRlc3QtPmxvY2FsID0gc3JjLT5sb2NhbDsKICAgICBkZXN0LT5kaWdlc3RzaXplID0gc3JjLT5kaWdlc3RzaXplOwogICAgIGRlc3QtPmNvdW50X2xvID0gc3JjLT5jb3VudF9sbzsKQEAgLTE0MSw3ICsxMzEsOSBAQAogICAgIFNIQV9JTlQ2NCBTWzhdLCBXWzgwXSwgdDAsIHQxOwogCiAgICAgbWVtY3B5KFcsIHNoYV9pbmZvLT5kYXRhLCBzaXplb2Yoc2hhX2luZm8tPmRhdGEpKTsKLSAgICBsb25nUmV2ZXJzZShXLCAoaW50KXNpemVvZihzaGFfaW5mby0+ZGF0YSksIHNoYV9pbmZvLT5FbmRpYW5uZXNzKTsKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgbG9uZ1JldmVyc2UoVywgKGludClzaXplb2Yoc2hhX2luZm8tPmRhdGEpKTsKKyNlbmRpZgogCiAgICAgZm9yIChpID0gMTY7IGkgPCA4MDsgKytpKSB7CiAgICAgICAgICAgICAgICAgV1tpXSA9IEdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIEdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdOwpAQCAtMjU0LDcgKzI0Niw2IEBACiBzdGF0aWMgdm9pZAogc2hhNTEyX2luaXQoU0hBb2JqZWN0ICpzaGFfaW5mbykKIHsKLSAgICBUZXN0RW5kaWFubmVzcyhzaGFfaW5mby0+RW5kaWFubmVzcykKICAgICBzaGFfaW5mby0+ZGlnZXN0WzBdID0gUHlfVUxMKDB4NmEwOWU2NjdmM2JjYzkwOCk7CiAgICAgc2hhX2luZm8tPmRpZ2VzdFsxXSA9IFB5X1VMTCgweGJiNjdhZTg1ODRjYWE3M2IpOwogICAgIHNoYV9pbmZvLT5kaWdlc3RbMl0gPSBQeV9VTEwoMHgzYzZlZjM3MmZlOTRmODJiKTsKQEAgLTI3Miw3ICsyNjMsNiBAQAogc3RhdGljIHZvaWQKIHNoYTM4NF9pbml0KFNIQW9iamVjdCAqc2hhX2luZm8pCiB7Ci0gICAgVGVzdEVuZGlhbm5lc3Moc2hhX2luZm8tPkVuZGlhbm5lc3MpCiAgICAgc2hhX2luZm8tPmRpZ2VzdFswXSA9IFB5X1VMTCgweGNiYmI5ZDVkYzEwNTllZDgpOwogICAgIHNoYV9pbmZvLT5kaWdlc3RbMV0gPSBQeV9VTEwoMHg2MjlhMjkyYTM2N2NkNTA3KTsKICAgICBzaGFfaW5mby0+ZGlnZXN0WzJdID0gUHlfVUxMKDB4OTE1OTAxNWEzMDcwZGQxNyk7CkBAIC0zMTAsNyArMzAwLDcgQEAKICAgICAgICAgbWVtY3B5KCgoU0hBX0JZVEUgKikgc2hhX2luZm8tPmRhdGEpICsgc2hhX2luZm8tPmxvY2FsLCBidWZmZXIsIGkpOwogICAgICAgICBjb3VudCAtPSBpOwogICAgICAgICBidWZmZXIgKz0gaTsKLSAgICAgICAgc2hhX2luZm8tPmxvY2FsICs9IGk7CisgICAgICAgIHNoYV9pbmZvLT5sb2NhbCArPSAoaW50KWk7CiAgICAgICAgIGlmIChzaGFfaW5mby0+bG9jYWwgPT0gU0hBX0JMT0NLU0laRSkgewogICAgICAgICAgICAgc2hhNTEyX3RyYW5zZm9ybShzaGFfaW5mbyk7CiAgICAgICAgIH0KQEAgLTMyNSw3ICszMTUsNyBAQAogICAgICAgICBzaGE1MTJfdHJhbnNmb3JtKHNoYV9pbmZvKTsKICAgICB9CiAgICAgbWVtY3B5KHNoYV9pbmZvLT5kYXRhLCBidWZmZXIsIGNvdW50KTsKLSAgICBzaGFfaW5mby0+bG9jYWwgPSBjb3VudDsKKyAgICBzaGFfaW5mby0+bG9jYWwgPSAoaW50KWNvdW50OwogfQogCiAvKiBmaW5pc2ggY29tcHV0aW5nIHRoZSBTSEEgZGlnZXN0ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCBmYmUxYmI3Li4wODEwNjMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTksNyArOSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgogI2lmZGVmIEhBVkVfUFJPQ0VTU19ICiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2VuZGlmCkBAIC0zNywxMSArMzcsNiBAQAogI2RlZmluZSBTSUdfRVJSICgoUHlPU19zaWdoYW5kbGVyX3QpKC0xKSkKICNlbmRpZgogCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCi0jZGVmaW5lIE5TSUcgMTIKLSNpbmNsdWRlIDxwcm9jZXNzLmg+Ci0jZW5kaWYKLQogI2lmbmRlZiBOU0lHCiAjIGlmIGRlZmluZWQoX05TSUcpCiAjICBkZWZpbmUgTlNJRyBfTlNJRyAgICAgICAgICAgIC8qIEZvciBCU0QvU3lzViAqLwpAQCAtOTgzLDkgKzk3OCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogI2lmIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTaWdpbmZvVHlwZSwgJnN0cnVjdF9zaWdpbmZvX2Rlc2MpOwotCisgICAgaWYgKCFpbml0aWFsaXplZCkgeworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlNpZ2luZm9UeXBlLCAmc3RydWN0X3NpZ2luZm9fZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU2lnaW5mb1R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3NpZ2luZm8iLCAoUHlPYmplY3QqKSAmU2lnaW5mb1R5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCmluZGV4IDEyMDJkMzguLjFlMmU4NGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwpAQCAtMTUsNyArMTUsNyBAQAogCiBNb2R1bGUgaW50ZXJmYWNlOgogCi0tIHNvY2tldC5lcnJvcjogZXhjZXB0aW9uIHJhaXNlZCBmb3Igc29ja2V0IHNwZWNpZmljIGVycm9ycworLSBzb2NrZXQuZXJyb3I6IGV4Y2VwdGlvbiByYWlzZWQgZm9yIHNvY2tldCBzcGVjaWZpYyBlcnJvcnMsIGFsaWFzIGZvciBPU0Vycm9yCiAtIHNvY2tldC5nYWllcnJvcjogZXhjZXB0aW9uIHJhaXNlZCBmb3IgZ2V0YWRkcmluZm8vZ2V0bmFtZWluZm8gZXJyb3JzLAogICAgIGEgc3ViY2xhc3Mgb2Ygc29ja2V0LmVycm9yCiAtIHNvY2tldC5oZXJyb3I6IGV4Y2VwdGlvbiByYWlzZWQgZm9yIGdldGhvc3RieSogZXJyb3JzLApAQCAtOTUsOSArOTUsNiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCi0jdW5kZWYgTUFYCi0jZGVmaW5lIE1BWCh4LCB5KSAoKHgpIDwgKHkpID8gKHkpIDogKHgpKQotCiAvKiBTb2NrZXQgb2JqZWN0IGRvY3VtZW50YXRpb24gKi8KIFB5RG9jX1NUUlZBUihzb2NrX2RvYywKICJzb2NrZXQoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkgLT4gc29ja2V0IG9iamVjdFxuXApAQCAtMjIzLDEzICsyMjAsNiBAQAogI2VuZGlmCiAKIAotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0jIGRlZmluZSAgSU5DTF9ET1MKLSMgZGVmaW5lICBJTkNMX0RPU0VSUk9SUwotIyBkZWZpbmUgIElOQ0xfTk9QTUFQSQotIyBpbmNsdWRlIDxvczIuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChfX3NnaSkgJiYgX0NPTVBJTEVSX1ZFUlNJT04+NzAwICYmICFfU0dJQVBJCiAvKiBtYWtlIHN1cmUgdGhhdCB0aGUgcmVlbnRyYW50IChnZXRob3N0YnlhZGRyX3IgZXRjKQogICAgZnVuY3Rpb25zIGFyZSBkZWNsYXJlZCBjb3JyZWN0bHkgaWYgY29tcGlsaW5nIHdpdGgKQEAgLTI4NiwxMiArMjc2LDcgQEAKICMgaW5jbHVkZSA8dW5pc3RkLmg+CiAKIC8qIEhlYWRlcnMgbmVlZGVkIGZvciBpbmV0X250b2EoKSBhbmQgaW5ldF9hZGRyKCkgKi8KLSMgaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX1ZBQ1BQKQotIyAgaW5jbHVkZSA8bmV0ZGIuaD4KLXR5cGVkZWYgc2l6ZV90IHNvY2tsZW5fdDsKLSMgZWxzZQogIyAgIGluY2x1ZGUgPGFycGEvaW5ldC5oPgotIyBlbmRpZgogCiAjICBpbmNsdWRlIDxmY250bC5oPgogCkBAIC0zOTUsMTEgKzM4MCw2IEBACiAjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKLSNkZWZpbmUgU09DS0VUQ0xPU0Ugc29jbG9zZQotI2RlZmluZSBOT19EVVAgLyogU29ja2V0cyBhcmUgTm90IEFjdHVhbCBGaWxlIEhhbmRsZXMgdW5kZXIgT1MvMiAqLwotI2VuZGlmCi0KICNpZm5kZWYgU09DS0VUQ0xPU0UKICNkZWZpbmUgU09DS0VUQ0xPU0UgY2xvc2UKICNlbmRpZgpAQCAtNTM0LDQyICs1MTQsNiBAQAogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgZXJyX25vKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCi0gICAgaWYgKHNvY2tfZXJybm8oKSAhPSBOT19FUlJPUikgewotICAgICAgICBBUElSRVQgcmM7Ci0gICAgICAgIFVMT05HICBtc2dsZW47Ci0gICAgICAgIGNoYXIgb3V0YnVmWzEwMF07Ci0gICAgICAgIGludCBteWVycm9yY29kZSA9IHNvY2tfZXJybm8oKTsKLQotICAgICAgICAvKiBSZXRyaWV2ZSBzb2NrZXQtcmVsYXRlZCBlcnJvciBtZXNzYWdlIGZyb20gTVBUTi5NU0cgZmlsZSAqLwotICAgICAgICByYyA9IERvc0dldE1lc3NhZ2UoTlVMTCwgMCwgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ZXJyb3Jjb2RlIC0gU09DQkFTRUVSUiArIDI2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1wdG4ubXNnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZtc2dsZW4pOwotICAgICAgICBpZiAocmMgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotCi0gICAgICAgICAgICAvKiBPUy8yIGRvZXNuJ3QgZ3VhcmFudGVlIGEgdGVybWluYXRvciAqLwotICAgICAgICAgICAgb3V0YnVmW21zZ2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgaWYgKHN0cmxlbihvdXRidWYpID4gMCkgewotICAgICAgICAgICAgICAgIC8qIElmIG5vbi1lbXB0eSBtc2csIHRyaW0gQ1JMRiAqLwotICAgICAgICAgICAgICAgIGNoYXIgKmxhc3RjID0gJm91dGJ1Zlsgc3RybGVuKG91dGJ1ZiktMSBdOwotICAgICAgICAgICAgICAgIHdoaWxlIChsYXN0YyA+IG91dGJ1ZiAmJgotICAgICAgICAgICAgICAgICAgICAgICBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpsYXN0YykpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFRyaW0gdHJhaWxpbmcgd2hpdGVzcGFjZSAoQ1JMRikgKi8KLSAgICAgICAgICAgICAgICAgICAgKmxhc3RjLS0gPSAnXDAnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgbXllcnJvcmNvZGUsIG91dGJ1Zik7Ci0gICAgICAgICAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX09TRXJyb3IsIHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogfQogCkBAIC02NTgsMjAgKzYwMiwxNyBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmbmRlZiBNU19XSU5ET1dTCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCi0gICAgYmxvY2sgPSAhYmxvY2s7Ci0gICAgaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKGNhZGRyX3QpJmJsb2NrLCBzaXplb2YoYmxvY2spKTsKLSNlbGlmIGRlZmluZWQoX19WTVMpCisjaWYgZGVmaW5lZChfX1ZNUykKICAgICBibG9jayA9ICFibG9jazsKICAgICBpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKTsKLSNlbHNlICAvKiAhUFlPU19PUzIgJiYgIV9fVk1TICovCisjZWxzZSAgLyogIV9fVk1TICovCiAgICAgZGVsYXlfZmxhZyA9IGZjbnRsKHMtPnNvY2tfZmQsIEZfR0VURkwsIDApOwogICAgIGlmIChibG9jaykKICAgICAgICAgZGVsYXlfZmxhZyAmPSAofk9fTk9OQkxPQ0spOwogICAgIGVsc2UKICAgICAgICAgZGVsYXlfZmxhZyB8PSBPX05PTkJMT0NLOwogICAgIGZjbnRsKHMtPnNvY2tfZmQsIEZfU0VURkwsIGRlbGF5X2ZsYWcpOwotI2VuZGlmIC8qICFQWU9TX09TMiAqLworI2VuZGlmIC8qICFfX1ZNUyAqLwogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwogICAgIGJsb2NrID0gIWJsb2NrOwogICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICh1X2xvbmcqKSZibG9jayk7CkBAIC0xMzI5LDExICsxMjcwLDcgQEAKICAgICAgICAgfQogICAgICAgICBhZGRyLT5zdW5fZmFtaWx5ID0gcy0+c29ja19mYW1pbHk7CiAgICAgICAgIG1lbWNweShhZGRyLT5zdW5fcGF0aCwgcGF0aCwgbGVuKTsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqYWRkcik7Ci0jZWxzZQogICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwotI2VuZGlmCiAgICAgICAgIHJldHZhbCA9IDE7CiAgICAgdW5peF9vdXQ6CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKQEAgLTE2NTgsNiArMTU5NSw4IEBACiAgICAgY2FzZSBBRl9DQU46CiAgICAgICAgIHN3aXRjaCAocy0+c29ja19wcm90bykgewogICAgICAgICBjYXNlIENBTl9SQVc6CisgICAgICAgIC8qIGZhbGwtdGhyb3VnaCAqLworICAgICAgICBjYXNlIENBTl9CQ006CiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmFkZHI7CiAgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJmYWNlTmFtZTsKQEAgLTI2MTMsOCArMjU1MiwxNSBAQAogICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkKKyAgICBpZiAoIXRpbWVvdXQpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQorICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKKyAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCAoaW50KWxlbiwgZmxhZ3MpOworI2Vsc2UKICAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzKTsKKyNlbmRpZgorICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHRpbWVvdXQgPT0gMSkgewpAQCAtMjgyMSwxMyArMjc2NywxMCBAQAogICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwogICAgIGlmICghdGltZW91dCkgewogI2lmbmRlZiBNU19XSU5ET1dTCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCi0gICAgICAgIG4gPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHJlY3Zmcm9tKHMtPnNvY2tfZmQsIGNidWYsIGxlbiwgZmxhZ3MsCisgICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQorICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKKyAgICAgICAgbiA9IHJlY3Zmcm9tKHMtPnNvY2tfZmQsIGNidWYsIChpbnQpbGVuLCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICZhZGRyYnVmLCAmYWRkcmxlbik7Ci0jZW5kaWYKICNlbHNlCiAgICAgICAgIG4gPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pOwpAQCAtMzMwNSwxMiArMzI0OCwxNyBAQAogICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMSwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkKKyAgICBpZiAoIXRpbWVvdXQpIHsKICNpZmRlZiBfX1ZNUwogICAgICAgICBuID0gc2VuZHNlZ21lbnRlZChzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MpOworI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKKyAgICAgICAgICAgIGxlbiA9IElOVF9NQVg7CisgICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgKGludClsZW4sIGZsYWdzKTsKICNlbHNlCiAgICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgbGVuLCBmbGFncyk7CiAjZW5kaWYKKyAgICB9CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAodGltZW91dCA9PSAxKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwpAQCAtMzM2MCw2ICszMzA4LDEwIEBACiAgICAgICAgIGlmICghdGltZW91dCkgewogI2lmZGVmIF9fVk1TCiAgICAgICAgICAgICBuID0gc2VuZHNlZ21lbnRlZChzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MpOworI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCisgICAgICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKKyAgICAgICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgKGludClsZW4sIGZsYWdzKTsKICNlbHNlCiAgICAgICAgICAgICBuID0gc2VuZChzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MpOwogI2VuZGlmCkBAIC0zNDU0LDggKzM0MDYsMTcgQEAKICAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpCi0gICAgICAgIG4gPSBzZW5kdG8ocy0+c29ja19mZCwgYnVmLCBsZW4sIGZsYWdzLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuKTsKKyAgICBpZiAoIXRpbWVvdXQpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQorICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKKyAgICAgICAgbiA9IHNlbmR0byhzLT5zb2NrX2ZkLCBidWYsIChpbnQpbGVuLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuKTsKKyNlbHNlCisgICAgICAgIG4gPSBzZW5kdG8ocy0+c29ja19mZCwgYnVmLCBsZW4sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4pOworI2VuZGlmCisgICAgfQogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAodGltZW91dCA9PSAxKSB7CkBAIC00ODg1LDcgKzQ4NDYsNyBAQAogICAgIGNoYXIqIGlwOwogICAgIGludCByZXR2YWw7CiAjaWZkZWYgRU5BQkxFX0lQVjYKLSAgICBjaGFyIHBhY2tlZFtNQVgoc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpXTsKKyAgICBjaGFyIHBhY2tlZFtQeV9NQVgoc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpXTsKICNlbHNlCiAgICAgY2hhciBwYWNrZWRbc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKV07CiAjZW5kaWYKQEAgLTQ5MzYsNyArNDg5Nyw3IEBACiAgICAgaW50IGxlbjsKICAgICBjb25zdCBjaGFyKiByZXR2YWw7CiAjaWZkZWYgRU5BQkxFX0lQVjYKLSAgICBjaGFyIGlwW01BWChJTkVUX0FERFJTVFJMRU4sIElORVQ2X0FERFJTVFJMRU4pICsgMV07CisgICAgY2hhciBpcFtQeV9NQVgoSU5FVF9BRERSU1RSTEVOLCBJTkVUNl9BRERSU1RSTEVOKSArIDFdOwogI2Vsc2UKICAgICBjaGFyIGlwW0lORVRfQUREUlNUUkxFTiArIDFdOwogI2VuZGlmCkBAIC01NTIyLDMyICs1NDgzLDYgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIAotI2lmZGVmIFBZT1NfT1MyCi0jZGVmaW5lIE9TX0lOSVRfREVGSU5FRAotCi0vKiBBZGRpdGlvbmFsIGluaXRpYWxpemF0aW9uIGZvciBPUy8yICovCi0KLXN0YXRpYyBpbnQKLW9zX2luaXQodm9pZCkKLXsKLSNpZm5kZWYgUFlDQ19HQ0MKLSAgICBpbnQgcmMgPSBzb2NrX2luaXQoKTsKLQotICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgIHJldHVybiAxOyAvKiBTdWNjZXNzICovCi0gICAgfQotCi0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLCAiT1MvMiBUQ1AvSVAgRXJyb3IjICVkIiwgc29ja19lcnJubygpKTsKLQotICAgIHJldHVybiAwOyAgLyogRmFpbHVyZSAqLwotI2Vsc2UKLSAgICAvKiBObyBuZWVkIHRvIGluaXRpYWxpemUgc29ja2V0cyB3aXRoIEdDQy9FTVggKi8KLSAgICByZXR1cm4gMTsgLyogU3VjY2VzcyAqLwotI2VuZGlmCi19Ci0KLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotCiAKICNpZm5kZWYgT1NfSU5JVF9ERUZJTkVECiBzdGF0aWMgaW50CkBAIC01NjU3LDE4NCArNTU5MiwxODcgQEAKIAogICAgIC8qIEFkZHJlc3MgZmFtaWxpZXMgKHdlIG9ubHkgc3VwcG9ydCBBRl9JTkVUIGFuZCBBRl9VTklYKSAqLwogI2lmZGVmIEFGX1VOU1BFQwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9VTlNQRUMiLCBBRl9VTlNQRUMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOU1BFQyk7CiAjZW5kaWYKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfSU5FVCIsIEFGX0lORVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQpOwogI2lmZGVmIEFGX0lORVQ2Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX0lORVQ2IiwgQUZfSU5FVDYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQ2KTsKICNlbmRpZiAvKiBBRl9JTkVUNiAqLwogI2lmIGRlZmluZWQoQUZfVU5JWCkKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfVU5JWCIsIEFGX1VOSVgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOSVgpOwogI2VuZGlmIC8qIEFGX1VOSVggKi8KICNpZmRlZiBBRl9BWDI1CiAgICAgLyogQW1hdGV1ciBSYWRpbyBBWC4yNSAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9BWDI1IiwgQUZfQVgyNSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQVgyNSk7CiAjZW5kaWYKICNpZmRlZiBBRl9JUFgKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfSVBYIiwgQUZfSVBYKTsgLyogTm92ZWxsIElQWCAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lQWCk7IC8qIE5vdmVsbCBJUFggKi8KICNlbmRpZgogI2lmZGVmIEFGX0FQUExFVEFMSwogICAgIC8qIEFwcGxldGFsayBERFAgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQVBQTEVUQUxLIiwgQUZfQVBQTEVUQUxLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BUFBMRVRBTEspOwogI2VuZGlmCiAjaWZkZWYgQUZfTkVUUk9NCiAgICAgLyogQW1hdGV1ciByYWRpbyBOZXRST00gKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfTkVUUk9NIiwgQUZfTkVUUk9NKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9ORVRST00pOwogI2VuZGlmCiAjaWZkZWYgQUZfQlJJREdFCiAgICAgLyogTXVsdGlwcm90b2NvbCBicmlkZ2UgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQlJJREdFIiwgQUZfQlJJREdFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9CUklER0UpOwogI2VuZGlmCiAjaWZkZWYgQUZfQVRNUFZDCiAgICAgLyogQVRNIFBWQ3MgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQVRNUFZDIiwgQUZfQVRNUFZDKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BVE1QVkMpOwogI2VuZGlmCiAjaWZkZWYgQUZfQUFMNQogICAgIC8qIFJlc2VydmVkIGZvciBXZXJuZXIncyBBVE0gKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQUFMNSIsIEFGX0FBTDUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FBTDUpOwogI2VuZGlmCiAjaWZkZWYgQUZfWDI1CiAgICAgLyogUmVzZXJ2ZWQgZm9yIFguMjUgcHJvamVjdCAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9YMjUiLCBBRl9YMjUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1gyNSk7CiAjZW5kaWYKICNpZmRlZiBBRl9JTkVUNgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9JTkVUNiIsIEFGX0lORVQ2KTsgLyogSVAgdmVyc2lvbiA2ICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVDYpOyAvKiBJUCB2ZXJzaW9uIDYgKi8KICNlbmRpZgogI2lmZGVmIEFGX1JPU0UKICAgICAvKiBBbWF0ZXVyIFJhZGlvIFguMjUgUExQICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX1JPU0UiLCBBRl9ST1NFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9ST1NFKTsKICNlbmRpZgogI2lmZGVmIEFGX0RFQ25ldAogICAgIC8qIFJlc2VydmVkIGZvciBERUNuZXQgcHJvamVjdCAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9ERUNuZXQiLCBBRl9ERUNuZXQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0RFQ25ldCk7CiAjZW5kaWYKICNpZmRlZiBBRl9ORVRCRVVJCiAgICAgLyogUmVzZXJ2ZWQgZm9yIDgwMi4yTExDIHByb2plY3QgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfTkVUQkVVSSIsIEFGX05FVEJFVUkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX05FVEJFVUkpOwogI2VuZGlmCiAjaWZkZWYgQUZfU0VDVVJJVFkKICAgICAvKiBTZWN1cml0eSBjYWxsYmFjayBwc2V1ZG8gQUYgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfU0VDVVJJVFkiLCBBRl9TRUNVUklUWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfU0VDVVJJVFkpOwogI2VuZGlmCiAjaWZkZWYgQUZfS0VZCiAgICAgLyogUEZfS0VZIGtleSBtYW5hZ2VtZW50IEFQSSAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9LRVkiLCBBRl9LRVkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0tFWSk7CiAjZW5kaWYKICNpZmRlZiBBRl9ORVRMSU5LCiAgICAgLyogICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX05FVExJTksiLCBBRl9ORVRMSU5LKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkVUTElOS19ST1VURSIsIE5FVExJTktfUk9VVEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX05FVExJTkspOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfUk9VVEUpOwogI2lmZGVmIE5FVExJTktfU0tJUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORVRMSU5LX1NLSVAiLCBORVRMSU5LX1NLSVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfU0tJUCk7CiAjZW5kaWYKICNpZmRlZiBORVRMSU5LX1cxCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5FVExJTktfVzEiLCBORVRMSU5LX1cxKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1cxKTsKICNlbmRpZgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORVRMSU5LX1VTRVJTT0NLIiwgTkVUTElOS19VU0VSU09DSyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5FVExJTktfRklSRVdBTEwiLCBORVRMSU5LX0ZJUkVXQUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1VTRVJTT0NLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX0ZJUkVXQUxMKTsKICNpZmRlZiBORVRMSU5LX1RDUERJQUcKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkVUTElOS19UQ1BESUFHIiwgTkVUTElOS19UQ1BESUFHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1RDUERJQUcpOwogI2VuZGlmCiAjaWZkZWYgTkVUTElOS19ORkxPRwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORVRMSU5LX05GTE9HIiwgTkVUTElOS19ORkxPRyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19ORkxPRyk7CiAjZW5kaWYKICNpZmRlZiBORVRMSU5LX1hGUk0KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkVUTElOS19YRlJNIiwgTkVUTElOS19YRlJNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1hGUk0pOwogI2VuZGlmCiAjaWZkZWYgTkVUTElOS19BUlBECi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5FVExJTktfQVJQRCIsIE5FVExJTktfQVJQRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19BUlBEKTsKICNlbmRpZgogI2lmZGVmIE5FVExJTktfUk9VVEU2Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5FVExJTktfUk9VVEU2IiwgTkVUTElOS19ST1VURTYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfUk9VVEU2KTsKICNlbmRpZgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORVRMSU5LX0lQNl9GVyIsIE5FVExJTktfSVA2X0ZXKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX0lQNl9GVyk7CiAjaWZkZWYgTkVUTElOS19ETlJUTVNHCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5FVExJTktfRE5SVE1TRyIsIE5FVExJTktfRE5SVE1TRyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19ETlJUTVNHKTsKICNlbmRpZgogI2lmZGVmIE5FVExJTktfVEFQQkFTRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORVRMSU5LX1RBUEJBU0UiLCBORVRMSU5LX1RBUEJBU0UpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfVEFQQkFTRSk7CiAjZW5kaWYKICNlbmRpZiAvKiBBRl9ORVRMSU5LICovCiAjaWZkZWYgQUZfUk9VVEUKICAgICAvKiBBbGlhcyB0byBlbXVsYXRlIDQuNEJTRCAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9ST1VURSIsIEFGX1JPVVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9ST1VURSk7CisjZW5kaWYKKyNpZmRlZiBBRl9MSU5LCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfTElOSyk7CiAjZW5kaWYKICNpZmRlZiBBRl9BU0gKICAgICAvKiBBc2ggKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQVNIIiwgQUZfQVNIKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BU0gpOwogI2VuZGlmCiAjaWZkZWYgQUZfRUNPTkVUCiAgICAgLyogQWNvcm4gRWNvbmV0ICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX0VDT05FVCIsIEFGX0VDT05FVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfRUNPTkVUKTsKICNlbmRpZgogI2lmZGVmIEFGX0FUTVNWQwogICAgIC8qIEFUTSBTVkNzICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX0FUTVNWQyIsIEFGX0FUTVNWQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQVRNU1ZDKTsKICNlbmRpZgogI2lmZGVmIEFGX1NOQQogICAgIC8qIExpbnV4IFNOQSBQcm9qZWN0IChudXR0ZXJzISkgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfU05BIiwgQUZfU05BKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9TTkEpOwogI2VuZGlmCiAjaWZkZWYgQUZfSVJEQQogICAgIC8qIElSREEgc29ja2V0cyAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9JUkRBIiwgQUZfSVJEQSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSVJEQSk7CiAjZW5kaWYKICNpZmRlZiBBRl9QUFBPWAogICAgIC8qIFBQUG9YIHNvY2tldHMgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfUFBQT1giLCBBRl9QUFBPWCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfUFBQT1gpOwogI2VuZGlmCiAjaWZkZWYgQUZfV0FOUElQRQogICAgIC8qIFdhbnBpcGUgQVBJIFNvY2tldHMgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfV0FOUElQRSIsIEFGX1dBTlBJUEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1dBTlBJUEUpOwogI2VuZGlmCiAjaWZkZWYgQUZfTExDCiAgICAgLyogTGludXggTExDICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX0xMQyIsIEFGX0xMQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfTExDKTsKICNlbmRpZgogCiAjaWZkZWYgVVNFX0JMVUVUT09USAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9CTFVFVE9PVEgiLCBBRl9CTFVFVE9PVEgpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCVFBST1RPX0wyQ0FQIiwgQlRQUk9UT19MMkNBUCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJUUFJPVE9fSENJIiwgQlRQUk9UT19IQ0kpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfSENJIiwgU09MX0hDSSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQkxVRVRPT1RIKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBCVFBST1RPX0wyQ0FQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBCVFBST1RPX0hDSSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX0hDSSk7CiAjaWYgIWRlZmluZWQoX19OZXRCU0RfXykgJiYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSENJX0ZJTFRFUiIsIEhDSV9GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEhDSV9GSUxURVIpOwogI2VuZGlmCiAjaWYgIWRlZmluZWQoX19GcmVlQlNEX18pCiAjaWYgIWRlZmluZWQoX19OZXRCU0RfXykgJiYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSENJX1RJTUVfU1RBTVAiLCBIQ0lfVElNRV9TVEFNUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSENJX1RJTUVfU1RBTVApOwogI2VuZGlmCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkhDSV9EQVRBX0RJUiIsIEhDSV9EQVRBX0RJUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJUUFJPVE9fU0NPIiwgQlRQUk9UT19TQ08pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEhDSV9EQVRBX0RJUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQlRQUk9UT19TQ08pOwogI2VuZGlmCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJUUFJPVE9fUkZDT01NIiwgQlRQUk9UT19SRkNPTU0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEJUUFJPVE9fUkZDT01NKTsKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiQkRBRERSX0FOWSIsICIwMDowMDowMDowMDowMDowMCIpOwogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJCREFERFJfTE9DQUwiLCAiMDA6MDA6MDA6RkY6RkY6RkYiKTsKICNlbmRpZgogCiAjaWZkZWYgQUZfQ0FOCiAgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQ0FOIiwgQUZfQ0FOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9DQU4pOwogI2VuZGlmCiAjaWZkZWYgUEZfQ0FOCiAgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfQ0FOIiwgUEZfQ0FOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQRl9DQU4pOwogI2VuZGlmCiAKIC8qIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKi8KICNpZmRlZiBBRl9SRFMKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfUkRTIiwgQUZfUkRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9SRFMpOwogI2VuZGlmCiAjaWZkZWYgUEZfUkRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX1JEUyIsIFBGX1JEUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUEZfUkRTKTsKICNlbmRpZgogCiAvKiBLZXJuZWwgZXZlbnQgbWVzc2FnZXMgKi8KICNpZmRlZiBQRl9TWVNURU0KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfU1lTVEVNIiwgUEZfU1lTVEVNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQRl9TWVNURU0pOwogI2VuZGlmCiAjaWZkZWYgQUZfU1lTVEVNCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX1NZU1RFTSIsIEFGX1NZU1RFTSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfU1lTVEVNKTsKICNlbmRpZgogCiAjaWZkZWYgQUZfUEFDS0VUCkBAIC01ODY2LDEzNCArNTgwNCwxMjkgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSU5VWF9USVBDX0gKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfVElQQyIsIEFGX1RJUEMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1RJUEMpOwogCiAgICAgLyogZm9yIGFkZHJlc3NlcyAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX0FERFJfTkFNRVNFUSIsIFRJUENfQUREUl9OQU1FU0VRKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVElQQ19BRERSX05BTUUiLCBUSVBDX0FERFJfTkFNRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfQUREUl9JRCIsIFRJUENfQUREUl9JRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19BRERSX05BTUVTRVEpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfQUREUl9OQU1FKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX0FERFJfSUQpOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfWk9ORV9TQ09QRSIsIFRJUENfWk9ORV9TQ09QRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfQ0xVU1RFUl9TQ09QRSIsIFRJUENfQ0xVU1RFUl9TQ09QRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfTk9ERV9TQ09QRSIsIFRJUENfTk9ERV9TQ09QRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19aT05FX1NDT1BFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX0NMVVNURVJfU0NPUEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfTk9ERV9TQ09QRSk7CiAKICAgICAvKiBmb3Igc2V0c29ja29wdCgpICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9USVBDIiwgU09MX1RJUEMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX0lNUE9SVEFOQ0UiLCBUSVBDX0lNUE9SVEFOQ0UpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX1NSQ19EUk9QUEFCTEUiLCBUSVBDX1NSQ19EUk9QUEFCTEUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX0RFU1RfRFJPUFBBQkxFIiwKLSAgICAgICAgICAgICAgICAgICAgVElQQ19ERVNUX0RST1BQQUJMRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfQ09OTl9USU1FT1VUIiwgVElQQ19DT05OX1RJTUVPVVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9USVBDKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX0lNUE9SVEFOQ0UpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfU1JDX0RST1BQQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19ERVNUX0RST1BQQUJMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19DT05OX1RJTUVPVVQpOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfTE9XX0lNUE9SVEFOQ0UiLAotICAgICAgICAgICAgICAgICAgICBUSVBDX0xPV19JTVBPUlRBTkNFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVElQQ19NRURJVU1fSU1QT1JUQU5DRSIsCi0gICAgICAgICAgICAgICAgICAgIFRJUENfTUVESVVNX0lNUE9SVEFOQ0UpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX0hJR0hfSU1QT1JUQU5DRSIsCi0gICAgICAgICAgICAgICAgICAgIFRJUENfSElHSF9JTVBPUlRBTkNFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVElQQ19DUklUSUNBTF9JTVBPUlRBTkNFIiwKLSAgICAgICAgICAgICAgICAgICAgVElQQ19DUklUSUNBTF9JTVBPUlRBTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX0xPV19JTVBPUlRBTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX01FRElVTV9JTVBPUlRBTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX0hJR0hfSU1QT1JUQU5DRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19DUklUSUNBTF9JTVBPUlRBTkNFKTsKIAogICAgIC8qIGZvciBzdWJzY3JpcHRpb25zICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfU1VCX1BPUlRTIiwgVElQQ19TVUJfUE9SVFMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX1NVQl9TRVJWSUNFIiwgVElQQ19TVUJfU0VSVklDRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19TVUJfUE9SVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfU1VCX1NFUlZJQ0UpOwogI2lmZGVmIFRJUENfU1VCX0NBTkNFTAogICAgIC8qIGRvZXNuJ3Qgc2VlbSB0byBiZSBhdmFpbGFibGUgZXZlcnl3aGVyZSAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX1NVQl9DQU5DRUwiLCBUSVBDX1NVQl9DQU5DRUwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfU1VCX0NBTkNFTCk7CiAjZW5kaWYKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVElQQ19XQUlUX0ZPUkVWRVIiLCBUSVBDX1dBSVRfRk9SRVZFUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRJUENfUFVCTElTSEVEIiwgVElQQ19QVUJMSVNIRUQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX1dJVEhEUkFXTiIsIFRJUENfV0lUSERSQVdOKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVElQQ19TVUJTQ1JfVElNRU9VVCIsIFRJUENfU1VCU0NSX1RJTUVPVVQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX0NGR19TUlYiLCBUSVBDX0NGR19TUlYpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUSVBDX1RPUF9TUlYiLCBUSVBDX1RPUF9TUlYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfV0FJVF9GT1JFVkVSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX1BVQkxJU0hFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19XSVRIRFJBV04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfU1VCU0NSX1RJTUVPVVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfQ0ZHX1NSVik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19UT1BfU1JWKTsKICNlbmRpZgogCiAgICAgLyogU29ja2V0IHR5cGVzICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPQ0tfU1RSRUFNIiwgU09DS19TVFJFQU0pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0NLX0RHUkFNIiwgU09DS19ER1JBTSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TVFJFQU0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfREdSQU0pOwogLyogV2UgaGF2ZSBpbmNvbXBsZXRlIHNvY2tldCBzdXBwb3J0LiAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0NLX1JBVyIsIFNPQ0tfUkFXKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09DS19TRVFQQUNLRVQiLCBTT0NLX1NFUVBBQ0tFVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SQVcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfU0VRUEFDS0VUKTsKICNpZiBkZWZpbmVkKFNPQ0tfUkRNKQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0NLX1JETSIsIFNPQ0tfUkRNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JETSk7CiAjZW5kaWYKICNpZmRlZiBTT0NLX0NMT0VYRUMKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09DS19DTE9FWEVDIiwgU09DS19DTE9FWEVDKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX0NMT0VYRUMpOwogI2VuZGlmCiAjaWZkZWYgU09DS19OT05CTE9DSwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0NLX05PTkJMT0NLIiwgU09DS19OT05CTE9DSyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19OT05CTE9DSyk7CiAjZW5kaWYKIAogI2lmZGVmICBTT19ERUJVRwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19ERUJVRyIsIFNPX0RFQlVHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19ERUJVRyk7CiAjZW5kaWYKICNpZmRlZiAgU09fQUNDRVBUQ09OTgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19BQ0NFUFRDT05OIiwgU09fQUNDRVBUQ09OTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQUNDRVBUQ09OTik7CiAjZW5kaWYKICNpZmRlZiAgU09fUkVVU0VBRERSCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1JFVVNFQUREUiIsIFNPX1JFVVNFQUREUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUkVVU0VBRERSKTsKICNlbmRpZgogI2lmZGVmIFNPX0VYQ0xVU0lWRUFERFJVU0UKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fRVhDTFVTSVZFQUREUlVTRSIsIFNPX0VYQ0xVU0lWRUFERFJVU0UpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0VYQ0xVU0lWRUFERFJVU0UpOwogI2VuZGlmCiAKICNpZmRlZiAgU09fS0VFUEFMSVZFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX0tFRVBBTElWRSIsIFNPX0tFRVBBTElWRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fS0VFUEFMSVZFKTsKICNlbmRpZgogI2lmZGVmICBTT19ET05UUk9VVEUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fRE9OVFJPVVRFIiwgU09fRE9OVFJPVVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19ET05UUk9VVEUpOwogI2VuZGlmCiAjaWZkZWYgIFNPX0JST0FEQ0FTVAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19CUk9BRENBU1QiLCBTT19CUk9BRENBU1QpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0JST0FEQ0FTVCk7CiAjZW5kaWYKICNpZmRlZiAgU09fVVNFTE9PUEJBQ0sKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fVVNFTE9PUEJBQ0siLCBTT19VU0VMT09QQkFDSyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fVVNFTE9PUEJBQ0spOwogI2VuZGlmCiAjaWZkZWYgIFNPX0xJTkdFUgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19MSU5HRVIiLCBTT19MSU5HRVIpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0xJTkdFUik7CiAjZW5kaWYKICNpZmRlZiAgU09fT09CSU5MSU5FCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX09PQklOTElORSIsIFNPX09PQklOTElORSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fT09CSU5MSU5FKTsKICNlbmRpZgogI2lmZGVmICBTT19SRVVTRVBPUlQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUkVVU0VQT1JUIiwgU09fUkVVU0VQT1JUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19SRVVTRVBPUlQpOwogI2VuZGlmCiAjaWZkZWYgIFNPX1NOREJVRgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19TTkRCVUYiLCBTT19TTkRCVUYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1NOREJVRik7CiAjZW5kaWYKICNpZmRlZiAgU09fUkNWQlVGCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1JDVkJVRiIsIFNPX1JDVkJVRik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUkNWQlVGKTsKICNlbmRpZgogI2lmZGVmICBTT19TTkRMT1dBVAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19TTkRMT1dBVCIsIFNPX1NORExPV0FUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19TTkRMT1dBVCk7CiAjZW5kaWYKICNpZmRlZiAgU09fUkNWTE9XQVQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUkNWTE9XQVQiLCBTT19SQ1ZMT1dBVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUkNWTE9XQVQpOwogI2VuZGlmCiAjaWZkZWYgIFNPX1NORFRJTUVPCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1NORFRJTUVPIiwgU09fU05EVElNRU8pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1NORFRJTUVPKTsKICNlbmRpZgogI2lmZGVmICBTT19SQ1ZUSU1FTwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19SQ1ZUSU1FTyIsIFNPX1JDVlRJTUVPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19SQ1ZUSU1FTyk7CiAjZW5kaWYKICNpZmRlZiAgU09fRVJST1IKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fRVJST1IiLCBTT19FUlJPUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fRVJST1IpOwogI2VuZGlmCiAjaWZkZWYgIFNPX1RZUEUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fVFlQRSIsIFNPX1RZUEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1RZUEUpOwogI2VuZGlmCiAjaWZkZWYgIFNPX1NFVEZJQgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19TRVRGSUIiLCBTT19TRVRGSUIpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1NFVEZJQik7CiAjZW5kaWYKICNpZmRlZiAgU09fUEFTU0NSRUQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEFTU0NSRUQiLCBTT19QQVNTQ1JFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUEFTU0NSRUQpOwogI2VuZGlmCiAjaWZkZWYgIFNPX1BFRVJDUkVECi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1BFRVJDUkVEIiwgU09fUEVFUkNSRUQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BFRVJDUkVEKTsKICNlbmRpZgogI2lmZGVmICBMT0NBTF9QRUVSQ1JFRAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0NBTF9QRUVSQ1JFRCIsIExPQ0FMX1BFRVJDUkVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NBTF9QRUVSQ1JFRCk7CiAjZW5kaWYKICNpZmRlZiAgU09fQklORFRPREVWSUNFCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKQEAgLTYwMDEsMzEyICs1OTM0LDMzMCBAQAogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT01BWENPTk4iLCBTT01BWENPTk4pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTUFYQ09OTik7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT01BWENPTk4iLCA1KTsgLyogQ29tbW9uIHZhbHVlICovCiAjZW5kaWYKIAogICAgIC8qIEFuY2lsbGlhcnkgbWVzc2FnZSB0eXBlcyAqLwogI2lmZGVmICBTQ01fUklHSFRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNDTV9SSUdIVFMiLCBTQ01fUklHSFRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTQ01fUklHSFRTKTsKICNlbmRpZgogI2lmZGVmICBTQ01fQ1JFREVOVElBTFMKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX0NSRURFTlRJQUxTIiwgU0NNX0NSRURFTlRJQUxTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTQ01fQ1JFREVOVElBTFMpOwogI2VuZGlmCiAjaWZkZWYgIFNDTV9DUkVEUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFRFMiLCBTQ01fQ1JFRFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNDTV9DUkVEUyk7CiAjZW5kaWYKIAogICAgIC8qIEZsYWdzIGZvciBzZW5kLCByZWN2ICovCiAjaWZkZWYgIE1TR19PT0IKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX09PQiIsIE1TR19PT0IpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TR19PT0IpOwogI2VuZGlmCiAjaWZkZWYgIE1TR19QRUVLCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19QRUVLIiwgTVNHX1BFRUspOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TR19QRUVLKTsKICNlbmRpZgogI2lmZGVmICBNU0dfRE9OVFJPVVRFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19ET05UUk9VVEUiLCBNU0dfRE9OVFJPVVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfRE9OVFJPVVRFKTsKICNlbmRpZgogI2lmZGVmICBNU0dfRE9OVFdBSVQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0RPTlRXQUlUIiwgTVNHX0RPTlRXQUlUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfRE9OVFdBSVQpOwogI2VuZGlmCiAjaWZkZWYgIE1TR19FT1IKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VPUiIsIE1TR19FT1IpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TR19FT1IpOwogI2VuZGlmCiAjaWZkZWYgIE1TR19UUlVOQwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfVFJVTkMiLCBNU0dfVFJVTkMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TR19UUlVOQyk7CiAjZW5kaWYKICNpZmRlZiAgTVNHX0NUUlVOQwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQ1RSVU5DIiwgTVNHX0NUUlVOQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNHX0NUUlVOQyk7CiAjZW5kaWYKICNpZmRlZiAgTVNHX1dBSVRBTEwKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX1dBSVRBTEwiLCBNU0dfV0FJVEFMTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNHX1dBSVRBTEwpOwogI2VuZGlmCiAjaWZkZWYgIE1TR19CVEFHCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19CVEFHIiwgTVNHX0JUQUcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TR19CVEFHKTsKICNlbmRpZgogI2lmZGVmICBNU0dfRVRBRwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRVRBRyIsIE1TR19FVEFHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfRVRBRyk7CiAjZW5kaWYKICNpZmRlZiAgTVNHX05PU0lHTkFMCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1NJR05BTCIsIE1TR19OT1NJR05BTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNHX05PU0lHTkFMKTsKICNlbmRpZgogI2lmZGVmICBNU0dfTk9USUZJQ0FUSU9OCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1RJRklDQVRJT04iLCBNU0dfTk9USUZJQ0FUSU9OKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfTk9USUZJQ0FUSU9OKTsKICNlbmRpZgogI2lmZGVmICBNU0dfQ01TR19DTE9FWEVDCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19DTVNHX0NMT0VYRUMiLCBNU0dfQ01TR19DTE9FWEVDKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfQ01TR19DTE9FWEVDKTsKICNlbmRpZgogI2lmZGVmICBNU0dfRVJSUVVFVUUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VSUlFVRVVFIiwgTVNHX0VSUlFVRVVFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfRVJSUVVFVUUpOwogI2VuZGlmCiAjaWZkZWYgIE1TR19DT05GSVJNCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19DT05GSVJNIiwgTVNHX0NPTkZJUk0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TR19DT05GSVJNKTsKICNlbmRpZgogI2lmZGVmICBNU0dfTU9SRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTU9SRSIsIE1TR19NT1JFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfTU9SRSk7CiAjZW5kaWYKICNpZmRlZiAgTVNHX0VPRgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRU9GIiwgTVNHX0VPRik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNHX0VPRik7CiAjZW5kaWYKICNpZmRlZiAgTVNHX0JDQVNUCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19CQ0FTVCIsIE1TR19CQ0FTVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNHX0JDQVNUKTsKICNlbmRpZgogI2lmZGVmICBNU0dfTUNBU1QKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX01DQVNUIiwgTVNHX01DQVNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0dfTUNBU1QpOworI2VuZGlmCisjaWZkZWYgTVNHX0ZBU1RPUEVOCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNHX0ZBU1RPUEVOKTsKICNlbmRpZgogCiAgICAgLyogUHJvdG9jb2wgbGV2ZWwgYW5kIG51bWJlcnMsIHVzYWJsZSBmb3IgW2dzXWV0c29ja29wdCAqLwogI2lmZGVmICBTT0xfU09DS0VUCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9TT0NLRVQiLCBTT0xfU09DS0VUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfU09DS0VUKTsKICNlbmRpZgogI2lmZGVmICBTT0xfSVAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0lQIiwgU09MX0lQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfSVApOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0lQIiwgMCk7CiAjZW5kaWYKICNpZmRlZiAgU09MX0lQWAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfSVBYIiwgU09MX0lQWCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX0lQWCk7CiAjZW5kaWYKICNpZmRlZiAgU09MX0FYMjUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0FYMjUiLCBTT0xfQVgyNSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX0FYMjUpOwogI2VuZGlmCiAjaWZkZWYgIFNPTF9BVEFMSwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfQVRBTEsiLCBTT0xfQVRBTEspOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9BVEFMSyk7CiAjZW5kaWYKICNpZmRlZiAgU09MX05FVFJPTQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfTkVUUk9NIiwgU09MX05FVFJPTSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX05FVFJPTSk7CiAjZW5kaWYKICNpZmRlZiAgU09MX1JPU0UKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1JPU0UiLCBTT0xfUk9TRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX1JPU0UpOwogI2VuZGlmCiAjaWZkZWYgIFNPTF9UQ1AKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1RDUCIsIFNPTF9UQ1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9UQ1ApOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1RDUCIsIDYpOwogI2VuZGlmCiAjaWZkZWYgIFNPTF9VRFAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1VEUCIsIFNPTF9VRFApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9VRFApOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1VEUCIsIDE3KTsKICNlbmRpZgogI2lmZGVmIFNPTF9DQU5fQkFTRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfQ0FOX0JBU0UiLCBTT0xfQ0FOX0JBU0UpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9DQU5fQkFTRSk7CiAjZW5kaWYKICNpZmRlZiBTT0xfQ0FOX1JBVwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfQ0FOX1JBVyIsIFNPTF9DQU5fUkFXKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBVyIsIENBTl9SQVcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9DQU5fUkFXKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXKTsKICNlbmRpZgogI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0gKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VGRl9GTEFHIiwgQ0FOX0VGRl9GTEFHKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JUUl9GTEFHIiwgQ0FOX1JUUl9GTEFHKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VSUl9GTEFHIiwgQ0FOX0VSUl9GTEFHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fRUZGX0ZMQUcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9SVFJfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX0VSUl9GTEFHKTsKIAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fU0ZGX01BU0siLCBDQU5fU0ZGX01BU0spOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRUZGX01BU0siLCBDQU5fRUZGX01BU0spOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRVJSX01BU0siLCBDQU5fRVJSX01BU0spOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9TRkZfTUFTSyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX0VGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fRVJSX01BU0spOwogI2VuZGlmCiAjaWZkZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19GSUxURVIiLCBDQU5fUkFXX0ZJTFRFUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfRVJSX0ZJTFRFUiIsIENBTl9SQVdfRVJSX0ZJTFRFUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfTE9PUEJBQ0siLCBDQU5fUkFXX0xPT1BCQUNLKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19SRUNWX09XTl9NU0dTIiwgQ0FOX1JBV19SRUNWX09XTl9NU0dTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX0ZJTFRFUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX1JBV19FUlJfRklMVEVSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX0xPT1BCQUNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX1JFQ1ZfT1dOX01TR1MpOworI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fQkNNX0gKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fQkNNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9UWF9TRVRVUCIsIFRYX1NFVFVQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9UWF9ERUxFVEUiLCBUWF9ERUxFVEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fQkNNX1RYX1JFQUQiLCBUWF9SRUFEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9UWF9TRU5EIiwgVFhfU0VORCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fUlhfU0VUVVAiLCBSWF9TRVRVUCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fUlhfREVMRVRFIiwgUlhfREVMRVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9SWF9SRUFEIiwgUlhfUkVBRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fVFhfU1RBVFVTIiwgVFhfU1RBVFVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9UWF9FWFBJUkVEIiwgVFhfRVhQSVJFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fUlhfU1RBVFVTIiwgUlhfU1RBVFVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0JDTV9SWF9USU1FT1VUIiwgUlhfVElNRU9VVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fUlhfQ0hBTkdFRCIsIFJYX0NIQU5HRUQpOwogI2VuZGlmCiAjaWZkZWYgU09MX1JEUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfUkRTIiwgU09MX1JEUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX1JEUyk7CiAjZW5kaWYKICNpZmRlZiBSRFNfQ0FOQ0VMX1NFTlRfVE8KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NBTkNFTF9TRU5UX1RPIiwgUkRTX0NBTkNFTF9TRU5UX1RPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOwogI2VuZGlmCiAjaWZkZWYgUkRTX0dFVF9NUgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfR0VUX01SIiwgUkRTX0dFVF9NUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkRTX0dFVF9NUik7CiAjZW5kaWYKICNpZmRlZiBSRFNfRlJFRV9NUgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfRlJFRV9NUiIsIFJEU19GUkVFX01SKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfRlJFRV9NUik7CiAjZW5kaWYKICNpZmRlZiBSRFNfUkVDVkVSUgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkVDVkVSUiIsIFJEU19SRUNWRVJSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfUkVDVkVSUik7CiAjZW5kaWYKICNpZmRlZiBSRFNfQ09OR19NT05JVE9SCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DT05HX01PTklUT1IiLCBSRFNfQ09OR19NT05JVE9SKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfQ09OR19NT05JVE9SKTsKICNlbmRpZgogI2lmZGVmIFJEU19HRVRfTVJfRk9SX0RFU1QKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0dFVF9NUl9GT1JfREVTVCIsIFJEU19HRVRfTVJfRk9SX0RFU1QpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19HRVRfTVJfRk9SX0RFU1QpOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fSVAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19JUCIsIElQUFJPVE9fSVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fSVApOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19JUCIsIDApOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fSE9QT1BUUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0hPUE9QVFMiLCBJUFBST1RPX0hPUE9QVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fSE9QT1BUUyk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19JQ01QCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSUNNUCIsIElQUFJPVE9fSUNNUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19JQ01QKTsKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSUNNUCIsIDEpOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fSUdNUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0lHTVAiLCBJUFBST1RPX0lHTVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fSUdNUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19HR1AKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19HR1AiLCBJUFBST1RPX0dHUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19HR1ApOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fSVBWNAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0lQVjQiLCBJUFBST1RPX0lQVjQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fSVBWNCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19JUFY2Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSVBWNiIsIElQUFJPVE9fSVBWNik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19JUFY2KTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX0lQSVAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19JUElQIiwgSVBQUk9UT19JUElQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX0lQSVApOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fVENQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fVENQIiwgSVBQUk9UT19UQ1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fVENQKTsKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fVENQIiwgNik7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19FR1AKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19FR1AiLCBJUFBST1RPX0VHUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19FR1ApOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fUFVQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fUFVQIiwgSVBQUk9UT19QVVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fUFVQKTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX1VEUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1VEUCIsIElQUFJPVE9fVURQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX1VEUCk7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1VEUCIsIDE3KTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX0lEUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0lEUCIsIElQUFJPVE9fSURQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX0lEUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19IRUxMTwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0hFTExPIiwgSVBQUk9UT19IRUxMTyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19IRUxMTyk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19ORAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX05EIiwgSVBQUk9UT19ORCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19ORCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19UUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1RQIiwgSVBQUk9UT19UUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19UUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19JUFY2Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSVBWNiIsIElQUFJPVE9fSVBWNik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19JUFY2KTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX1JPVVRJTkcKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19ST1VUSU5HIiwgSVBQUk9UT19ST1VUSU5HKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX1JPVVRJTkcpOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fRlJBR01FTlQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19GUkFHTUVOVCIsIElQUFJPVE9fRlJBR01FTlQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fRlJBR01FTlQpOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fUlNWUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1JTVlAiLCBJUFBST1RPX1JTVlApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fUlNWUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19HUkUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19HUkUiLCBJUFBST1RPX0dSRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19HUkUpOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fRVNQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fRVNQIiwgSVBQUk9UT19FU1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fRVNQKTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX0FICi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fQUgiLCBJUFBST1RPX0FIKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX0FIKTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX01PQklMRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX01PQklMRSIsIElQUFJPVE9fTU9CSUxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX01PQklMRSk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19JQ01QVjYKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19JQ01QVjYiLCBJUFBST1RPX0lDTVBWNik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19JQ01QVjYpOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fTk9ORQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX05PTkUiLCBJUFBST1RPX05PTkUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fTk9ORSk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19EU1RPUFRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fRFNUT1BUUyIsIElQUFJPVE9fRFNUT1BUUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19EU1RPUFRTKTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX1hUUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1hUUCIsIElQUFJPVE9fWFRQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX1hUUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19FT04KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19FT04iLCBJUFBST1RPX0VPTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19FT04pOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fUElNCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fUElNIiwgSVBQUk9UT19QSU0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fUElNKTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX0lQQ09NUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0lQQ09NUCIsIElQUFJPVE9fSVBDT01QKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX0lQQ09NUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19WUlJQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fVlJSUCIsIElQUFJPVE9fVlJSUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19WUlJQKTsKICNlbmRpZgogI2lmZGVmICBJUFBST1RPX1NDVFAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19TQ1RQIiwgSVBQUk9UT19TQ1RQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX1NDVFApOwogI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fQklQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fQklQIiwgSVBQUk9UT19CSVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUFJPVE9fQklQKTsKICNlbmRpZgogLyoqLwogI2lmZGVmICBJUFBST1RPX1JBVwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1JBVyIsIElQUFJPVE9fUkFXKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBST1RPX1JBVyk7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1JBVyIsIDI1NSk7CiAjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19NQVgKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19NQVgiLCBJUFBST1RPX01BWCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBQUk9UT19NQVgpOwogI2VuZGlmCiAKICNpZmRlZiAgU1lTUFJPVE9fQ09OVFJPTAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTWVNQUk9UT19DT05UUk9MIiwgU1lTUFJPVE9fQ09OVFJPTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU1lTUFJPVE9fQ09OVFJPTCk7CiAjZW5kaWYKIAogICAgIC8qIFNvbWUgcG9ydCBjb25maWd1cmF0aW9uICovCiAjaWZkZWYgIElQUE9SVF9SRVNFUlZFRAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBPUlRfUkVTRVJWRUQiLCBJUFBPUlRfUkVTRVJWRUQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQUE9SVF9SRVNFUlZFRCk7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBPUlRfUkVTRVJWRUQiLCAxMDI0KTsKICNlbmRpZgogI2lmZGVmICBJUFBPUlRfVVNFUlJFU0VSVkVECi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUE9SVF9VU0VSUkVTRVJWRUQiLCBJUFBPUlRfVVNFUlJFU0VSVkVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFBPUlRfVVNFUlJFU0VSVkVEKTsKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUE9SVF9VU0VSUkVTRVJWRUQiLCA1MDAwKTsKICNlbmRpZgogCiAgICAgLyogU29tZSByZXNlcnZlZCBJUCB2LjQgYWRkcmVzc2VzICovCiAjaWZkZWYgIElOQUREUl9BTlkKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX0FOWSIsIElOQUREUl9BTlkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElOQUREUl9BTlkpOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX0FOWSIsIDB4MDAwMDAwMDApOwogI2VuZGlmCiAjaWZkZWYgIElOQUREUl9CUk9BRENBU1QKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX0JST0FEQ0FTVCIsIElOQUREUl9CUk9BRENBU1QpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElOQUREUl9CUk9BRENBU1QpOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX0JST0FEQ0FTVCIsIDB4ZmZmZmZmZmYpOwogI2VuZGlmCiAjaWZkZWYgIElOQUREUl9MT09QQkFDSwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJTkFERFJfTE9PUEJBQ0siLCBJTkFERFJfTE9PUEJBQ0spOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElOQUREUl9MT09QQkFDSyk7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJTkFERFJfTE9PUEJBQ0siLCAweDdGMDAwMDAxKTsKICNlbmRpZgogI2lmZGVmICBJTkFERFJfVU5TUEVDX0dST1VQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklOQUREUl9VTlNQRUNfR1JPVVAiLCBJTkFERFJfVU5TUEVDX0dST1VQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJTkFERFJfVU5TUEVDX0dST1VQKTsKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklOQUREUl9VTlNQRUNfR1JPVVAiLCAweGUwMDAwMDAwKTsKICNlbmRpZgpAQCAtNjMxNywzNTQgKzYyNjgsMzUzIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklOQUREUl9BTExIT1NUU19HUk9VUCIsIDB4ZTAwMDAwMDEpOwogI2VuZGlmCiAjaWZkZWYgIElOQUREUl9NQVhfTE9DQUxfR1JPVVAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX01BWF9MT0NBTF9HUk9VUCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5BRERSX01BWF9MT0NBTF9HUk9VUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSU5BRERSX01BWF9MT0NBTF9HUk9VUCk7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJTkFERFJfTUFYX0xPQ0FMX0dST1VQIiwgMHhlMDAwMDBmZik7CiAjZW5kaWYKICNpZmRlZiAgSU5BRERSX05PTkUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX05PTkUiLCBJTkFERFJfTk9ORSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSU5BRERSX05PTkUpOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSU5BRERSX05PTkUiLCAweGZmZmZmZmZmKTsKICNlbmRpZgogCiAgICAgLyogSVB2NCBbZ3NdZXRzb2Nrb3B0IG9wdGlvbnMgKi8KICNpZmRlZiAgSVBfT1BUSU9OUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9PUFRJT05TIiwgSVBfT1BUSU9OUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfT1BUSU9OUyk7CiAjZW5kaWYKICNpZmRlZiAgSVBfSERSSU5DTAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9IRFJJTkNMIiwgSVBfSERSSU5DTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfSERSSU5DTCk7CiAjZW5kaWYKICNpZmRlZiAgSVBfVE9TCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX1RPUyIsIElQX1RPUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfVE9TKTsKICNlbmRpZgogI2lmZGVmICBJUF9UVEwKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfVFRMIiwgSVBfVFRMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUF9UVEwpOwogI2VuZGlmCiAjaWZkZWYgIElQX1JFQ1ZPUFRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX1JFQ1ZPUFRTIiwgSVBfUkVDVk9QVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQX1JFQ1ZPUFRTKTsKICNlbmRpZgogI2lmZGVmICBJUF9SRUNWUkVUT1BUUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9SRUNWUkVUT1BUUyIsIElQX1JFQ1ZSRVRPUFRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUF9SRUNWUkVUT1BUUyk7CiAjZW5kaWYKICNpZmRlZiAgSVBfUkVDVkRTVEFERFIKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfUkVDVkRTVEFERFIiLCBJUF9SRUNWRFNUQUREUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfUkVDVkRTVEFERFIpOwogI2VuZGlmCiAjaWZkZWYgIElQX1JFVE9QVFMKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfUkVUT1BUUyIsIElQX1JFVE9QVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQX1JFVE9QVFMpOwogI2VuZGlmCiAjaWZkZWYgIElQX01VTFRJQ0FTVF9JRgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9NVUxUSUNBU1RfSUYiLCBJUF9NVUxUSUNBU1RfSUYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQX01VTFRJQ0FTVF9JRik7CiAjZW5kaWYKICNpZmRlZiAgSVBfTVVMVElDQVNUX1RUTAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9NVUxUSUNBU1RfVFRMIiwgSVBfTVVMVElDQVNUX1RUTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfTVVMVElDQVNUX1RUTCk7CiAjZW5kaWYKICNpZmRlZiAgSVBfTVVMVElDQVNUX0xPT1AKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfTVVMVElDQVNUX0xPT1AiLCBJUF9NVUxUSUNBU1RfTE9PUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfTVVMVElDQVNUX0xPT1ApOwogI2VuZGlmCiAjaWZkZWYgIElQX0FERF9NRU1CRVJTSElQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX0FERF9NRU1CRVJTSElQIiwgSVBfQUREX01FTUJFUlNISVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQX0FERF9NRU1CRVJTSElQKTsKICNlbmRpZgogI2lmZGVmICBJUF9EUk9QX01FTUJFUlNISVAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfRFJPUF9NRU1CRVJTSElQIiwgSVBfRFJPUF9NRU1CRVJTSElQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUF9EUk9QX01FTUJFUlNISVApOwogI2VuZGlmCiAjaWZkZWYgIElQX0RFRkFVTFRfTVVMVElDQVNUX1RUTAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMKTsKICNlbmRpZgogI2lmZGVmICBJUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1ApOwogI2VuZGlmCiAjaWZkZWYgIElQX01BWF9NRU1CRVJTSElQUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9NQVhfTUVNQkVSU0hJUFMiLCBJUF9NQVhfTUVNQkVSU0hJUFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQX01BWF9NRU1CRVJTSElQUyk7CiAjZW5kaWYKICNpZmRlZiAgSVBfVFJBTlNQQVJFTlQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfVFJBTlNQQVJFTlQiLCBJUF9UUkFOU1BBUkVOVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBfVFJBTlNQQVJFTlQpOwogI2VuZGlmCiAKICAgICAvKiBJUHY2IFtnc11ldHNvY2tvcHQgb3B0aW9ucywgZGVmaW5lZCBpbiBSRkMyNTUzICovCiAjaWZkZWYgIElQVjZfSk9JTl9HUk9VUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X0pPSU5fR1JPVVAiLCBJUFY2X0pPSU5fR1JPVVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfSk9JTl9HUk9VUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBWNl9MRUFWRV9HUk9VUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X0xFQVZFX0dST1VQIiwgSVBWNl9MRUFWRV9HUk9VUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9MRUFWRV9HUk9VUCk7CiAjZW5kaWYKICNpZmRlZiAgSVBWNl9NVUxUSUNBU1RfSE9QUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X01VTFRJQ0FTVF9IT1BTIiwgSVBWNl9NVUxUSUNBU1RfSE9QUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9NVUxUSUNBU1RfSE9QUyk7CiAjZW5kaWYKICNpZmRlZiAgSVBWNl9NVUxUSUNBU1RfSUYKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9NVUxUSUNBU1RfSUYiLCBJUFY2X01VTFRJQ0FTVF9JRik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9NVUxUSUNBU1RfSUYpOwogI2VuZGlmCiAjaWZkZWYgIElQVjZfTVVMVElDQVNUX0xPT1AKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9NVUxUSUNBU1RfTE9PUCIsIElQVjZfTVVMVElDQVNUX0xPT1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfTVVMVElDQVNUX0xPT1ApOwogI2VuZGlmCiAjaWZkZWYgIElQVjZfVU5JQ0FTVF9IT1BTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfVU5JQ0FTVF9IT1BTIiwgSVBWNl9VTklDQVNUX0hPUFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfVU5JQ0FTVF9IT1BTKTsKICNlbmRpZgogICAgIC8qIEFkZGl0aW9uYWwgSVBWNiBzb2NrZXQgb3B0aW9ucywgZGVmaW5lZCBpbiBSRkMgMzQ5MyAqLwogI2lmZGVmIElQVjZfVjZPTkxZCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfVjZPTkxZIiwgSVBWNl9WNk9OTFkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfVjZPTkxZKTsKICNlbmRpZgogICAgIC8qIEFkdmFuY2VkIElQVjYgc29ja2V0IG9wdGlvbnMsIGZyb20gUkZDIDM1NDIgKi8KICNpZmRlZiBJUFY2X0NIRUNLU1VNCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfQ0hFQ0tTVU0iLCBJUFY2X0NIRUNLU1VNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFY2X0NIRUNLU1VNKTsKICNlbmRpZgogI2lmZGVmIElQVjZfRE9OVEZSQUcKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9ET05URlJBRyIsIElQVjZfRE9OVEZSQUcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfRE9OVEZSQUcpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9EU1RPUFRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfRFNUT1BUUyIsIElQVjZfRFNUT1BUUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9EU1RPUFRTKTsKICNlbmRpZgogI2lmZGVmIElQVjZfSE9QTElNSVQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9IT1BMSU1JVCIsIElQVjZfSE9QTElNSVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfSE9QTElNSVQpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9IT1BPUFRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfSE9QT1BUUyIsIElQVjZfSE9QT1BUUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9IT1BPUFRTKTsKICNlbmRpZgogI2lmZGVmIElQVjZfTkVYVEhPUAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X05FWFRIT1AiLCBJUFY2X05FWFRIT1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfTkVYVEhPUCk7CiAjZW5kaWYKICNpZmRlZiBJUFY2X1BBVEhNVFUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9QQVRITVRVIiwgSVBWNl9QQVRITVRVKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFY2X1BBVEhNVFUpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9QS1RJTkZPCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfUEtUSU5GTyIsIElQVjZfUEtUSU5GTyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9QS1RJTkZPKTsKICNlbmRpZgogI2lmZGVmIElQVjZfUkVDVkRTVE9QVFMKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9SRUNWRFNUT1BUUyIsIElQVjZfUkVDVkRTVE9QVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfUkVDVkRTVE9QVFMpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9SRUNWSE9QTElNSVQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9SRUNWSE9QTElNSVQiLCBJUFY2X1JFQ1ZIT1BMSU1JVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9SRUNWSE9QTElNSVQpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9SRUNWSE9QT1BUUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X1JFQ1ZIT1BPUFRTIiwgSVBWNl9SRUNWSE9QT1BUUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9SRUNWSE9QT1BUUyk7CiAjZW5kaWYKICNpZmRlZiBJUFY2X1JFQ1ZQS1RJTkZPCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfUkVDVlBLVElORk8iLCBJUFY2X1JFQ1ZQS1RJTkZPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFY2X1JFQ1ZQS1RJTkZPKTsKICNlbmRpZgogI2lmZGVmIElQVjZfUkVDVlJUSERSCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfUkVDVlJUSERSIiwgSVBWNl9SRUNWUlRIRFIpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfUkVDVlJUSERSKTsKICNlbmRpZgogI2lmZGVmIElQVjZfUkVDVlRDTEFTUwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X1JFQ1ZUQ0xBU1MiLCBJUFY2X1JFQ1ZUQ0xBU1MpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfUkVDVlRDTEFTUyk7CiAjZW5kaWYKICNpZmRlZiBJUFY2X1JUSERSCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfUlRIRFIiLCBJUFY2X1JUSERSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJUFY2X1JUSERSKTsKICNlbmRpZgogI2lmZGVmIElQVjZfUlRIRFJEU1RPUFRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfUlRIRFJEU1RPUFRTIiwgSVBWNl9SVEhEUkRTVE9QVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfUlRIRFJEU1RPUFRTKTsKICNlbmRpZgogI2lmZGVmIElQVjZfUlRIRFJfVFlQRV8wCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQVjZfUlRIRFJfVFlQRV8wIiwgSVBWNl9SVEhEUl9UWVBFXzApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfUlRIRFJfVFlQRV8wKTsKICNlbmRpZgogI2lmZGVmIElQVjZfUkVDVlBBVEhNVFUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9SRUNWUEFUSE1UVSIsIElQVjZfUkVDVlBBVEhNVFUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElQVjZfUkVDVlBBVEhNVFUpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9UQ0xBU1MKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBWNl9UQ0xBU1MiLCBJUFY2X1RDTEFTUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9UQ0xBU1MpOwogI2VuZGlmCiAjaWZkZWYgSVBWNl9VU0VfTUlOX01UVQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFY2X1VTRV9NSU5fTVRVIiwgSVBWNl9VU0VfTUlOX01UVSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBWNl9VU0VfTUlOX01UVSk7CiAjZW5kaWYKIAogICAgIC8qIFRDUCBvcHRpb25zICovCiAjaWZkZWYgIFRDUF9OT0RFTEFZCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRDUF9OT0RFTEFZIiwgVENQX05PREVMQVkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRDUF9OT0RFTEFZKTsKICNlbmRpZgogI2lmZGVmICBUQ1BfTUFYU0VHCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRDUF9NQVhTRUciLCBUQ1BfTUFYU0VHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfTUFYU0VHKTsKICNlbmRpZgogI2lmZGVmICBUQ1BfQ09SSwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUQ1BfQ09SSyIsIFRDUF9DT1JLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfQ09SSyk7CiAjZW5kaWYKICNpZmRlZiAgVENQX0tFRVBJRExFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRDUF9LRUVQSURMRSIsIFRDUF9LRUVQSURMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX0tFRVBJRExFKTsKICNlbmRpZgogI2lmZGVmICBUQ1BfS0VFUElOVFZMCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRDUF9LRUVQSU5UVkwiLCBUQ1BfS0VFUElOVFZMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfS0VFUElOVFZMKTsKICNlbmRpZgogI2lmZGVmICBUQ1BfS0VFUENOVAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUQ1BfS0VFUENOVCIsIFRDUF9LRUVQQ05UKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfS0VFUENOVCk7CiAjZW5kaWYKICNpZmRlZiAgVENQX1NZTkNOVAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUQ1BfU1lOQ05UIiwgVENQX1NZTkNOVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX1NZTkNOVCk7CiAjZW5kaWYKICNpZmRlZiAgVENQX0xJTkdFUjIKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVENQX0xJTkdFUjIiLCBUQ1BfTElOR0VSMik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX0xJTkdFUjIpOwogI2VuZGlmCiAjaWZkZWYgIFRDUF9ERUZFUl9BQ0NFUFQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVENQX0RFRkVSX0FDQ0VQVCIsIFRDUF9ERUZFUl9BQ0NFUFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRDUF9ERUZFUl9BQ0NFUFQpOwogI2VuZGlmCiAjaWZkZWYgIFRDUF9XSU5ET1dfQ0xBTVAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVENQX1dJTkRPV19DTEFNUCIsIFRDUF9XSU5ET1dfQ0xBTVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRDUF9XSU5ET1dfQ0xBTVApOwogI2VuZGlmCiAjaWZkZWYgIFRDUF9JTkZPCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRDUF9JTkZPIiwgVENQX0lORk8pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRDUF9JTkZPKTsKICNlbmRpZgogI2lmZGVmICBUQ1BfUVVJQ0tBQ0sKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVENQX1FVSUNLQUNLIiwgVENQX1FVSUNLQUNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUQ1BfUVVJQ0tBQ0spOwogI2VuZGlmCi0KKyNpZmRlZiAgVENQX0ZBU1RPUEVOCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX0ZBU1RPUEVOKTsKKyNlbmRpZgogCiAgICAgLyogSVBYIG9wdGlvbnMgKi8KICNpZmRlZiAgSVBYX1RZUEUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBYX1RZUEUiLCBJUFhfVFlQRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVBYX1RZUEUpOwogI2VuZGlmCiAKIC8qIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKi8KICNpZmRlZiBSRFNfQ01TR19SRE1BX0FSR1MKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9BUkdTIiwgUkRTX0NNU0dfUkRNQV9BUkdTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfQ01TR19SRE1BX0FSR1MpOwogI2VuZGlmCiAjaWZkZWYgUkRTX0NNU0dfUkRNQV9ERVNUCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfREVTVCIsIFJEU19DTVNHX1JETUFfREVTVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkRTX0NNU0dfUkRNQV9ERVNUKTsKICNlbmRpZgogI2lmZGVmIFJEU19DTVNHX1JETUFfTUFQCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfTUFQIiwgUkRTX0NNU0dfUkRNQV9NQVApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19DTVNHX1JETUFfTUFQKTsKICNlbmRpZgogI2lmZGVmIFJEU19DTVNHX1JETUFfU1RBVFVTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfU1RBVFVTIiwgUkRTX0NNU0dfUkRNQV9TVEFUVVMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19DTVNHX1JETUFfU1RBVFVTKTsKICNlbmRpZgogI2lmZGVmIFJEU19DTVNHX1JETUFfVVBEQVRFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfVVBEQVRFIiwgUkRTX0NNU0dfUkRNQV9VUERBVEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19DTVNHX1JETUFfVVBEQVRFKTsKICNlbmRpZgogI2lmZGVmIFJEU19SRE1BX1JFQURXUklURQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9SRUFEV1JJVEUiLCBSRFNfUkRNQV9SRUFEV1JJVEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19SRE1BX1JFQURXUklURSk7CiAjZW5kaWYKICNpZmRlZiBSRFNfUkRNQV9GRU5DRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9GRU5DRSIsIFJEU19SRE1BX0ZFTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfUkRNQV9GRU5DRSk7CiAjZW5kaWYKICNpZmRlZiBSRFNfUkRNQV9JTlZBTElEQVRFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0lOVkFMSURBVEUiLCBSRFNfUkRNQV9JTlZBTElEQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfUkRNQV9JTlZBTElEQVRFKTsKICNlbmRpZgogI2lmZGVmIFJEU19SRE1BX1VTRV9PTkNFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX1VTRV9PTkNFIiwgUkRTX1JETUFfVVNFX09OQ0UpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19SRE1BX1VTRV9PTkNFKTsKICNlbmRpZgogI2lmZGVmIFJEU19SRE1BX0RPTlRXQUlUCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0RPTlRXQUlUIiwgUkRTX1JETUFfRE9OVFdBSVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19SRE1BX0RPTlRXQUlUKTsKICNlbmRpZgogI2lmZGVmIFJEU19SRE1BX05PVElGWV9NRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9OT1RJRllfTUUiLCBSRFNfUkRNQV9OT1RJRllfTUUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19SRE1BX05PVElGWV9NRSk7CiAjZW5kaWYKICNpZmRlZiBSRFNfUkRNQV9TSUxFTlQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfU0lMRU5UIiwgUkRTX1JETUFfU0lMRU5UKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfUkRNQV9TSUxFTlQpOwogI2VuZGlmCiAKICAgICAvKiBnZXR7YWRkcixuYW1lfWluZm8gcGFyYW1ldGVycyAqLwogI2lmZGVmIEVBSV9BRERSRkFNSUxZCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVBSV9BRERSRkFNSUxZIiwgRUFJX0FERFJGQU1JTFkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVBSV9BRERSRkFNSUxZKTsKICNlbmRpZgogI2lmZGVmIEVBSV9BR0FJTgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfQUdBSU4iLCBFQUlfQUdBSU4pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVBSV9BR0FJTik7CiAjZW5kaWYKICNpZmRlZiBFQUlfQkFERkxBR1MKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX0JBREZMQUdTIiwgRUFJX0JBREZMQUdTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFQUlfQkFERkxBR1MpOwogI2VuZGlmCiAjaWZkZWYgRUFJX0ZBSUwKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX0ZBSUwiLCBFQUlfRkFJTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRUFJX0ZBSUwpOwogI2VuZGlmCiAjaWZkZWYgRUFJX0ZBTUlMWQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfRkFNSUxZIiwgRUFJX0ZBTUlMWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRUFJX0ZBTUlMWSk7CiAjZW5kaWYKICNpZmRlZiBFQUlfTUVNT1JZCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVBSV9NRU1PUlkiLCBFQUlfTUVNT1JZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFQUlfTUVNT1JZKTsKICNlbmRpZgogI2lmZGVmIEVBSV9OT0RBVEEKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX05PREFUQSIsIEVBSV9OT0RBVEEpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVBSV9OT0RBVEEpOwogI2VuZGlmCiAjaWZkZWYgRUFJX05PTkFNRQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfTk9OQU1FIiwgRUFJX05PTkFNRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRUFJX05PTkFNRSk7CiAjZW5kaWYKICNpZmRlZiBFQUlfT1ZFUkZMT1cKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX09WRVJGTE9XIiwgRUFJX09WRVJGTE9XKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFQUlfT1ZFUkZMT1cpOwogI2VuZGlmCiAjaWZkZWYgRUFJX1NFUlZJQ0UKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX1NFUlZJQ0UiLCBFQUlfU0VSVklDRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRUFJX1NFUlZJQ0UpOwogI2VuZGlmCiAjaWZkZWYgRUFJX1NPQ0tUWVBFCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVBSV9TT0NLVFlQRSIsIEVBSV9TT0NLVFlQRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRUFJX1NPQ0tUWVBFKTsKICNlbmRpZgogI2lmZGVmIEVBSV9TWVNURU0KLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX1NZU1RFTSIsIEVBSV9TWVNURU0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVBSV9TWVNURU0pOwogI2VuZGlmCiAjaWZkZWYgRUFJX0JBREhJTlRTCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVBSV9CQURISU5UUyIsIEVBSV9CQURISU5UUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRUFJX0JBREhJTlRTKTsKICNlbmRpZgogI2lmZGVmIEVBSV9QUk9UT0NPTAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfUFJPVE9DT0wiLCBFQUlfUFJPVE9DT0wpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVBSV9QUk9UT0NPTCk7CiAjZW5kaWYKICNpZmRlZiBFQUlfTUFYCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVBSV9NQVgiLCBFQUlfTUFYKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFQUlfTUFYKTsKICNlbmRpZgogI2lmZGVmIEFJX1BBU1NJVkUKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUlfUEFTU0lWRSIsIEFJX1BBU1NJVkUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX1BBU1NJVkUpOwogI2VuZGlmCiAjaWZkZWYgQUlfQ0FOT05OQU1FCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFJX0NBTk9OTkFNRSIsIEFJX0NBTk9OTkFNRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUlfQ0FOT05OQU1FKTsKICNlbmRpZgogI2lmZGVmIEFJX05VTUVSSUNIT1NUCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFJX05VTUVSSUNIT1NUIiwgQUlfTlVNRVJJQ0hPU1QpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX05VTUVSSUNIT1NUKTsKICNlbmRpZgogI2lmZGVmIEFJX05VTUVSSUNTRVJWCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFJX05VTUVSSUNTRVJWIiwgQUlfTlVNRVJJQ1NFUlYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX05VTUVSSUNTRVJWKTsKICNlbmRpZgogI2lmZGVmIEFJX01BU0sKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUlfTUFTSyIsIEFJX01BU0spOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX01BU0spOwogI2VuZGlmCiAjaWZkZWYgQUlfQUxMCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFJX0FMTCIsIEFJX0FMTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUlfQUxMKTsKICNlbmRpZgogI2lmZGVmIEFJX1Y0TUFQUEVEX0NGRwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBSV9WNE1BUFBFRF9DRkciLCBBSV9WNE1BUFBFRF9DRkcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX1Y0TUFQUEVEX0NGRyk7CiAjZW5kaWYKICNpZmRlZiBBSV9BRERSQ09ORklHCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFJX0FERFJDT05GSUciLCBBSV9BRERSQ09ORklHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBSV9BRERSQ09ORklHKTsKICNlbmRpZgogI2lmZGVmIEFJX1Y0TUFQUEVECi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFJX1Y0TUFQUEVEIiwgQUlfVjRNQVBQRUQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX1Y0TUFQUEVEKTsKICNlbmRpZgogI2lmZGVmIEFJX0RFRkFVTFQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUlfREVGQVVMVCIsIEFJX0RFRkFVTFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFJX0RFRkFVTFQpOwogI2VuZGlmCiAjaWZkZWYgTklfTUFYSE9TVAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJOSV9NQVhIT1NUIiwgTklfTUFYSE9TVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTklfTUFYSE9TVCk7CiAjZW5kaWYKICNpZmRlZiBOSV9NQVhTRVJWCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5JX01BWFNFUlYiLCBOSV9NQVhTRVJWKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBOSV9NQVhTRVJWKTsKICNlbmRpZgogI2lmZGVmIE5JX05PRlFETgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJOSV9OT0ZRRE4iLCBOSV9OT0ZRRE4pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5JX05PRlFETik7CiAjZW5kaWYKICNpZmRlZiBOSV9OVU1FUklDSE9TVAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJOSV9OVU1FUklDSE9TVCIsIE5JX05VTUVSSUNIT1NUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBOSV9OVU1FUklDSE9TVCk7CiAjZW5kaWYKICNpZmRlZiBOSV9OQU1FUkVRRAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJOSV9OQU1FUkVRRCIsIE5JX05BTUVSRVFEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBOSV9OQU1FUkVRRCk7CiAjZW5kaWYKICNpZmRlZiBOSV9OVU1FUklDU0VSVgotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJOSV9OVU1FUklDU0VSViIsIE5JX05VTUVSSUNTRVJWKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBOSV9OVU1FUklDU0VSVik7CiAjZW5kaWYKICNpZmRlZiBOSV9ER1JBTQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJOSV9ER1JBTSIsIE5JX0RHUkFNKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBOSV9ER1JBTSk7CiAjZW5kaWYKIAogICAgIC8qIHNodXRkb3duKCkgcGFyYW1ldGVycyAqLwogI2lmZGVmIFNIVVRfUkQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0hVVF9SRCIsIFNIVVRfUkQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNIVVRfUkQpOwogI2VsaWYgZGVmaW5lZChTRF9SRUNFSVZFKQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTSFVUX1JEIiwgU0RfUkVDRUlWRSk7CiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTSFVUX1JEIiwgMCk7CiAjZW5kaWYKICNpZmRlZiBTSFVUX1dSCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNIVVRfV1IiLCBTSFVUX1dSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSFVUX1dSKTsKICNlbGlmIGRlZmluZWQoU0RfU0VORCkKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0hVVF9XUiIsIFNEX1NFTkQpOwogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0hVVF9XUiIsIDEpOwogI2VuZGlmCiAjaWZkZWYgU0hVVF9SRFdSCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNIVVRfUkRXUiIsIFNIVVRfUkRXUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0hVVF9SRFdSKTsKICNlbGlmIGRlZmluZWQoU0RfQk9USCkKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0hVVF9SRFdSIiwgU0RfQk9USCk7CiAjZWxzZQpAQCAtNjY4NCwxNCArNjYzNCwxNCBAQAogICAgICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sIG5hbWVzW2ldLCB0bXApOwogICAgICAgICB9CiAgICAgfQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSQ1ZBTExfT0ZGIiwgUkNWQUxMX09GRik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJDVkFMTF9PTiIsIFJDVkFMTF9PTik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJDVkFMTF9TT0NLRVRMRVZFTE9OTFkiLCBSQ1ZBTExfU09DS0VUTEVWRUxPTkxZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSQ1ZBTExfT0ZGKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSQ1ZBTExfT04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJDVkFMTF9TT0NLRVRMRVZFTE9OTFkpOwogI2lmZGVmIFJDVkFMTF9JUExFVkVMCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJDVkFMTF9JUExFVkVMIiwgUkNWQUxMX0lQTEVWRUwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJDVkFMTF9JUExFVkVMKTsKICNlbmRpZgogI2lmZGVmIFJDVkFMTF9NQVgKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkNWQUxMX01BWCIsIFJDVkFMTF9NQVgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJDVkFMTF9NQVgpOwogI2VuZGlmCiAjZW5kaWYgLyogX01TVENQSVBfICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmggYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCmluZGV4IDA0MzU4NzguLmI4M2Y5YWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaApAQCAtOCw3ICs4LDcgQEAKICMgICBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjIGVuZGlmCiAjIGluY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSMgaWYgIShkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IChkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfVkFDUFApKSkKKyMgaWYgIWRlZmluZWQoX19DWUdXSU5fXykKICMgIGluY2x1ZGUgPG5ldGluZXQvdGNwLmg+CiAjIGVuZGlmCiAKQEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9CQ01fSAorI2luY2x1ZGUgPGxpbnV4L2Nhbi9iY20uaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfU1lTX0RPTUFJTl9ICiAjaW5jbHVkZSA8c3lzL3N5c19kb21haW4uaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwppbmRleCAxOTRhZTE5Li5kMDZmOGNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwpAQCAtMTk2LDkgKzE5NiwxMSBAQAogICAgIG09UHlNb2R1bGVfQ3JlYXRlKCZzcHdkbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RTcHdkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3Nwd2RfdHlwZV9kZXNjKTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0U3B3ZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3Nwd2RfdHlwZV9kZXNjKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSAmU3RydWN0U3B3ZFR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3Nwd2QiLCAoUHlPYmplY3QgKikgJlN0cnVjdFNwd2RUeXBlKTsKICAgICBpbml0aWFsaXplZCA9IDE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKaW5kZXggMDJhODFmMS4uZmJjMWZmNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwpAQCAtNjksMzAgKzY5LDMwIEBACiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmc3ltdGFibGVtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJVU0UiLCBVU0UpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJERUZfR0xPQkFMIiwgREVGX0dMT0JBTCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkRFRl9MT0NBTCIsIERFRl9MT0NBTCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkRFRl9QQVJBTSIsIERFRl9QQVJBTSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkRFRl9GUkVFIiwgREVGX0ZSRUUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJERUZfRlJFRV9DTEFTUyIsIERFRl9GUkVFX0NMQVNTKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiREVGX0lNUE9SVCIsIERFRl9JTVBPUlQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJERUZfQk9VTkQiLCBERUZfQk9VTkQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFVTRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0dMT0JBTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0xPQ0FMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfUEFSQU0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9GUkVFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfRlJFRV9DTEFTUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0lNUE9SVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0JPVU5EKTsKIAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0ZVTkNUSU9OIiwgRnVuY3Rpb25CbG9jayk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfQ0xBU1MiLCBDbGFzc0Jsb2NrKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9NT0RVTEUiLCBNb2R1bGVCbG9jayk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BUX0lNUE9SVF9TVEFSIiwgT1BUX0lNUE9SVF9TVEFSKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BUX1RPUExFVkVMIiwgT1BUX1RPUExFVkVMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPUFRfSU1QT1JUX1NUQVIpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9QVF9UT1BMRVZFTCk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9DQUwiLCBMT0NBTCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkdMT0JBTF9FWFBMSUNJVCIsIEdMT0JBTF9FWFBMSUNJVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkdMT0JBTF9JTVBMSUNJVCIsIEdMT0JBTF9JTVBMSUNJVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkZSRUUiLCBGUkVFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0VMTCIsIENFTEwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0FMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHTE9CQUxfRVhQTElDSVQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdMT0JBTF9JTVBMSUNJVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRlJFRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0VMTCk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NPUEVfT0ZGIiwgU0NPUEVfT0ZGU0VUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NPUEVfTUFTSyIsIFNDT1BFX01BU0spOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNDT1BFX01BU0spOwogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKaW5kZXggOGI4NzdjZi4uOWQ3OWVlYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCkBAIC0yNzgsNDQgKzI3OCw0NCBAQAogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAKICAgICAvKiBQcmlvcml0aWVzICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19FTUVSRyIsICAgICAgIExPR19FTUVSRyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19BTEVSVCIsICAgICAgIExPR19BTEVSVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DUklUIiwgICAgICAgIExPR19DUklUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0VSUiIsICAgICAgICAgTE9HX0VSUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19XQVJOSU5HIiwgTE9HX1dBUk5JTkcpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTk9USUNFIiwgIExPR19OT1RJQ0UpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfSU5GTyIsICAgICAgICBMT0dfSU5GTyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19ERUJVRyIsICAgICAgIExPR19ERUJVRyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX0VNRVJHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfQUxFUlQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19DUklUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfRVJSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfV0FSTklORyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX05PVElDRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX0lORk8pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19ERUJVRyk7CiAKICAgICAvKiBvcGVubG9nKCkgb3B0aW9uIGZsYWdzICovCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19QSUQiLCAgICAgICAgIExPR19QSUQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQ09OUyIsICAgICAgICBMT0dfQ09OUyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19OREVMQVkiLCAgTE9HX05ERUxBWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX1BJRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX0NPTlMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19OREVMQVkpOwogI2lmZGVmIExPR19PREVMQVkKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX09ERUxBWSIsICBMT0dfT0RFTEFZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfT0RFTEFZKTsKICNlbmRpZgogI2lmZGVmIExPR19OT1dBSVQKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX05PV0FJVCIsICBMT0dfTk9XQUlUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTk9XQUlUKTsKICNlbmRpZgogI2lmZGVmIExPR19QRVJST1IKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1BFUlJPUiIsICBMT0dfUEVSUk9SKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfUEVSUk9SKTsKICNlbmRpZgogCiAgICAgLyogRmFjaWxpdGllcyAqLwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfS0VSTiIsICAgICAgICBMT0dfS0VSTik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19VU0VSIiwgICAgICAgIExPR19VU0VSKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX01BSUwiLCAgICAgICAgTE9HX01BSUwpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfREFFTU9OIiwgIExPR19EQUVNT04pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQVVUSCIsICAgICAgICBMT0dfQVVUSCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19MUFIiLCAgICAgICAgIExPR19MUFIpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUwwIiwgIExPR19MT0NBTDApOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUwxIiwgIExPR19MT0NBTDEpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUwyIiwgIExPR19MT0NBTDIpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUwzIiwgIExPR19MT0NBTDMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUw0IiwgIExPR19MT0NBTDQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUw1IiwgIExPR19MT0NBTDUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUw2IiwgIExPR19MT0NBTDYpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTE9DQUw3IiwgIExPR19MT0NBTDcpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19LRVJOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfVVNFUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX01BSUwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19EQUVNT04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19BVVRIKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTFBSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUwwKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUwxKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUwyKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUwzKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUw0KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUw1KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUw2KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTE9DQUw3KTsKIAogI2lmbmRlZiBMT0dfU1lTTE9HCiAjZGVmaW5lIExPR19TWVNMT0cgICAgICAgICAgICAgIExPR19EQUVNT04KQEAgLTMzMCwxMyArMzMwLDEzIEBACiAjZGVmaW5lIExPR19DUk9OICAgICAgICAgICAgICAgIExPR19EQUVNT04KICNlbmRpZgogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19TWVNMT0ciLCAgTE9HX1NZU0xPRyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DUk9OIiwgICAgICAgIExPR19DUk9OKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1VVQ1AiLCAgICAgICAgTE9HX1VVQ1ApOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTkVXUyIsICAgICAgICBMT0dfTkVXUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX1NZU0xPRyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9HX0NST04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPR19VVUNQKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfTkVXUyk7CiAKICNpZmRlZiBMT0dfQVVUSFBSSVYKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0FVVEhQUklWIiwgICAgTE9HX0FVVEhQUklWKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0dfQVVUSFBSSVYpOwogI2VuZGlmCiAKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGltZW1vZHVsZS5jIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKaW5kZXggMDM0NzZkOS4uOGQxNjFkNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy90aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKQEAgLTM3LDE2ICszNyw2IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qICFfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotI2RlZmluZSBJTkNMX0RPUwotI2RlZmluZSBJTkNMX0VSUk9SUwotI2luY2x1ZGUgPG9zMi5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChfX0FQUExFX18pCiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KICNlbmRpZgpAQCAtNTQzLDYgKzUzMywyNiBAQAogICAgLyogd2NzZnRpbWUoKSBkb2Vzbid0IGZvcm1hdCBjb3JyZWN0bHkgdGltZSB6b25lcywgc2VlIGlzc3VlICMxMDY1MyAqLwogIyAgdW5kZWYgSEFWRV9XQ1NGVElNRQogI2VuZGlmCisjZGVmaW5lIFNUUkZUSU1FX0ZPUk1BVF9DT0RFUyBcCisiQ29tbW9ubHkgdXNlZCBmb3JtYXQgY29kZXM6XG5cCitcblwKKyVZICBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyLlxuXAorJW0gIE1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAxLDEyXS5cblwKKyVkICBEYXkgb2YgdGhlIG1vbnRoIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAxLDMxXS5cblwKKyVIICBIb3VyICgyNC1ob3VyIGNsb2NrKSBhcyBhIGRlY2ltYWwgbnVtYmVyIFswMCwyM10uXG5cCislTSAgTWludXRlIGFzIGEgZGVjaW1hbCBudW1iZXIgWzAwLDU5XS5cblwKKyVTICBTZWNvbmQgYXMgYSBkZWNpbWFsIG51bWJlciBbMDAsNjFdLlxuXAorJXogIFRpbWUgem9uZSBvZmZzZXQgZnJvbSBVVEMuXG5cCislYSAgTG9jYWxlJ3MgYWJicmV2aWF0ZWQgd2Vla2RheSBuYW1lLlxuXAorJUEgIExvY2FsZSdzIGZ1bGwgd2Vla2RheSBuYW1lLlxuXAorJWIgIExvY2FsZSdzIGFiYnJldmlhdGVkIG1vbnRoIG5hbWUuXG5cCislQiAgTG9jYWxlJ3MgZnVsbCBtb250aCBuYW1lLlxuXAorJWMgIExvY2FsZSdzIGFwcHJvcHJpYXRlIGRhdGUgYW5kIHRpbWUgcmVwcmVzZW50YXRpb24uXG5cCislSSAgSG91ciAoMTItaG91ciBjbG9jaykgYXMgYSBkZWNpbWFsIG51bWJlciBbMDEsMTJdLlxuXAorJXAgIExvY2FsZSdzIGVxdWl2YWxlbnQgb2YgZWl0aGVyIEFNIG9yIFBNLlxuXAorXG5cCitPdGhlciBjb2RlcyBtYXkgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uICBTZWUgZG9jdW1lbnRhdGlvbiBmb3JcblwKK3RoZSBDIGxpYnJhcnkgc3RyZnRpbWUgZnVuY3Rpb24uXG4iCiAKICNpZmRlZiBIQVZFX1NUUkZUSU1FCiAjaWZkZWYgSEFWRV9XQ1NGVElNRQpAQCAtNjg3LDEzICs2OTcsMTMgQEAKIAogI3VuZGVmIHRpbWVfY2hhcgogI3VuZGVmIGZvcm1hdF90aW1lCi0KIFB5RG9jX1NUUlZBUihzdHJmdGltZV9kb2MsCiAic3RyZnRpbWUoZm9ybWF0WywgdHVwbGVdKSAtPiBzdHJpbmdcblwKIFxuXAogQ29udmVydCBhIHRpbWUgdHVwbGUgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIGEgZm9ybWF0IHNwZWNpZmljYXRpb24uXG5cCiBTZWUgdGhlIGxpYnJhcnkgcmVmZXJlbmNlIG1hbnVhbCBmb3IgZm9ybWF0dGluZyBjb2Rlcy4gV2hlbiB0aGUgdGltZSB0dXBsZVxuXAotaXMgbm90IHByZXNlbnQsIGN1cnJlbnQgdGltZSBhcyByZXR1cm5lZCBieSBsb2NhbHRpbWUoKSBpcyB1c2VkLiIpOworaXMgbm90IHByZXNlbnQsIGN1cnJlbnQgdGltZSBhcyByZXR1cm5lZCBieSBsb2NhbHRpbWUoKSBpcyB1c2VkLlxuXAorXG4iIFNUUkZUSU1FX0ZPUk1BVF9DT0RFUyk7CiAjZW5kaWYgLyogSEFWRV9TVFJGVElNRSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzE2LDcgKzcyNiw5IEBACiAic3RycHRpbWUoc3RyaW5nLCBmb3JtYXQpIC0+IHN0cnVjdF90aW1lXG5cCiBcblwKIFBhcnNlIGEgc3RyaW5nIHRvIGEgdGltZSB0dXBsZSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgc3BlY2lmaWNhdGlvbi5cblwKLVNlZSB0aGUgbGlicmFyeSByZWZlcmVuY2UgbWFudWFsIGZvciBmb3JtYXR0aW5nIGNvZGVzIChzYW1lIGFzIHN0cmZ0aW1lKCkpLiIpOworU2VlIHRoZSBsaWJyYXJ5IHJlZmVyZW5jZSBtYW51YWwgZm9yIGZvcm1hdHRpbmcgY29kZXMgKHNhbWUgYXNcblwKK3N0cmZ0aW1lKCkpLlxuXAorXG4iIFNUUkZUSU1FX0ZPUk1BVF9DT0RFUyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfYXNjdGltZShzdHJ1Y3QgdG0gKnRpbWVwdHIpCkBAIC03OTUsNyArODA3LDE2IEBACiAgICAgdHQgPSBta3RpbWUoJmJ1Zik7CiAgICAgLyogUmV0dXJuIHZhbHVlIG9mIC0xIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsIGJ1dCB0bV93ZGF5CiAgICAgICogY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KLSAgICBpZiAodHQgPT0gKHRpbWVfdCkoLTEpICYmIGJ1Zi50bV93ZGF5ID09IC0xKSB7CisgICAgaWYgKHR0ID09ICh0aW1lX3QpKC0xKQorI2lmbmRlZiBfQUlYCisgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLCBidXQKKyAgICAgICAgICogdG1fd2RheSBjYW5ub3QgcmVtYWluIHNldCB0byAtMSBpZiBta3RpbWUgc3VjY2VlZGVkLiAqLworICAgICAgICAmJiBidWYudG1fd2RheSA9PSAtMQorI2Vsc2UKKyAgICAgICAgLyogb24gQUlYLCB0bV93ZGF5IGlzIGFsd2F5cyBzZXRzLCBldmVuIG9uIGVycm9yICovCisjZW5kaWYKKyAgICAgICApCisgICAgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJta3RpbWUgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODMwLDYgKzg1MSw4IEBACiAgICAgLyogUmVzZXQgdGltZXpvbmUsIGFsdHpvbmUsIGRheWxpZ2h0IGFuZCB0em5hbWUgKi8KICAgICBQeUluaXRfdGltZXpvbmUobSk7CiAgICAgUHlfREVDUkVGKG0pOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTEyNjYsMTkgKzEyODksMTEgQEAKICNpZiBkZWZpbmVkKEhBVkVfVFpOQU1FKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCiAgICAgUHlPYmplY3QgKm90ejAsICpvdHoxOwogICAgIHR6c2V0KCk7Ci0jaWZkZWYgUFlPU19PUzIKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAidGltZXpvbmUiLCBfdGltZXpvbmUpOwotI2Vsc2UgLyogIVBZT1NfT1MyICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgInRpbWV6b25lIiwgdGltZXpvbmUpOwotI2VuZGlmIC8qIFBZT1NfT1MyICovCiAjaWZkZWYgSEFWRV9BTFRaT05FCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImFsdHpvbmUiLCBhbHR6b25lKTsKICNlbHNlCi0jaWZkZWYgUFlPU19PUzIKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiYWx0em9uZSIsIF90aW1lem9uZS0zNjAwKTsKLSNlbHNlIC8qICFQWU9TX09TMiAqLwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJhbHR6b25lIiwgdGltZXpvbmUtMzYwMCk7Ci0jZW5kaWYgLyogUFlPU19PUzIgKi8KICNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJkYXlsaWdodCIsIGRheWxpZ2h0KTsKICAgICBvdHowID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh0em5hbWVbMF0sICJzdXJyb2dhdGVlc2NhcGUiKTsKQEAgLTE0NjEsOCArMTQ3Niw5IEBACiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RUaW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKTsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZTdHJ1Y3RUaW1lVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfdGltZV90eXBlX2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgICAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOwpAQCAtMTU3NCw3ICsxNTkwLDcgQEAKICAgICAgICAgICAgIERXT1JEIHJjOwogICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CiAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7Ci0gICAgICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMpOworICAgICAgICAgICAgcmMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMsIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChyYyA9PSBXQUlUX09CSkVDVF8wKSB7CiAgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwogICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVFI7CkBAIC0xNTg0LDE1ICsxNjAwLDYgQEAKICAgICAgICAgfQogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0KLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgLyogVGhpcyBTbGVlcCAqSVMqIEludGVycnVwdGFibGUgYnkgRXhjZXB0aW9ucyAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoRG9zU2xlZXAoc2VjcyAqIDEwMDApICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAjZWxzZQogICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaCBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAppbmRleCA1ZDVkY2E4Li45M2EwOWNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCkBAIC0xLDYgKzEsNiBAQAogLyogdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgMy4yICovCiAKLSNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI2LjEuMCIKKyNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI2LjIuMCIKIC8qIGEgbGlzdCBvZiB1bmlxdWUgZGF0YWJhc2UgcmVjb3JkcyAqLwogY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCBfUHlVbmljb2RlX0RhdGFiYXNlX1JlY29yZHNbXSA9IHsKICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCkBAIC0xNDQ0LDQxICsxNDQ0LDQwIEBACiAgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAogICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MSwgODEsIAorICAgIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNDk4LDE1ICsxNDk3LDE2IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAogICAgIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTY0NSwxNSArMTY0NSwxNSBAQAogICAgIDIxMSwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxMCwgMzQsIDM0LCAzNCwgMzQsIDIxMCwgMjEwLCAyMTAsIDIxMCwgCiAgICAgMjEwLCAyMTEsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAogICAgIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjE2LCAyMTcsIDg1LCA4NSwgCi0gICAgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NSwgMTc1LCA4MSwgODEsIAotICAgIDgxLCA4MSwgMTc1LCAxNzUsIDE3NSwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NSwgMTc1LCAKLSAgICA4MSwgODYsIDgxLCAxNzUsIDE3NSwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMTgsIDIxOCwgNDksIDIxOSwgMjYsIDIxOSwgMjE4LCA0OSwgMjYsIDIxOSwgMzUsIDQ5LCA0OSwgCi0gICAgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjE5LCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIAotICAgIDI2LCAyMTgsIDIxOSwgMjE5LCAyNiwgNDksIDI2LCAyMjAsIDI2LCA0OSwgMjYsIDE4MywgMjIwLCA0OSwgNDksIDIyMSwgCi0gICAgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIxOCwgMzUsIDM1LCA0OSwgNDksIAotICAgIDIyMiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjIzLCAKKyAgICAyMywgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NSwgMTc1LCA4MSwgCisgICAgODEsIDgxLCA4MSwgMTc1LCAxNzUsIDE3NSwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NSwgCisgICAgMTc1LCA4MSwgODYsIDgxLCAxNzUsIDE3NSwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMTgsIDIxOCwgNDksIDIxOSwgMjYsIDIxOSwgMjE4LCA0OSwgMjYsIDIxOSwgMzUsIDQ5LCAKKyAgICA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjE5LCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMjYsIDI2LCAyMTgsIDIxOSwgMjE5LCAyNiwgNDksIDI2LCAyMjAsIDI2LCA0OSwgMjYsIDE4MywgMjIwLCA0OSwgNDksIAorICAgIDIyMSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIxOCwgMzUsIDM1LCA0OSwgCisgICAgNDksIDIyMiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjIzLCAKICAgICAyMjMsIDIyMywgMzcsIDM3LCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAzNywgMzcsIDM3LCAzNywgMjIzLCAyMjQsIAogICAgIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDIyNSwgMjI1LCAKICAgICAyMjUsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCAyMjUsIDIyNSwgCkBAIC0yMDcyLDEyICsyMDcyLDExIEBACiAgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAogICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKICAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIApAQCAtMjA4Niw3ICsyMDg1LDcgQEAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgMjY5LCAyNjksIAogICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKICAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCiAgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIApAQCAtMjA5NSw3ICsyMDk0LDcgQEAKICAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCiAgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAogICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI3MCwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjcwLCAyNzAsIAogICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKICAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCiAgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIApAQCAtMjEwNiwxMyArMjEwNSwxMyBAQAogICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKICAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCiAgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMTcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAxNzAsIDI3MCwgMjcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDE3MCwgMTcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAogICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKICAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgMjcwLCAKICAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCiAgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAogICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKQEAgLTIxMjAsMjIgKzIxMTksMjIgQEAKICAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCiAgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAogICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzEsIDI3MiwgMjcxLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyMTEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKLSAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMCwgMjcxLCAyNzEsIAotICAgIDAsIDI3MSwgMjcxLCAwLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzMsIDEzMCwgCisgICAgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjcxLCAyNzIsIDI3MSwgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjExLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAwLCAyNzEsIDAsIDI3MSwgMjcxLCAwLCAKKyAgICAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjczLCAxMzAsIDEzMCwgCiAgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAogICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCiAgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAogICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAogICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCiAgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIApAQCAtMjE1MiwyNiArMjE1MSwyNiBAQAogICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCiAgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAotICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxOTUsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTk1LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKLSAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAotICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKLSAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxMzAsIAotICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKLSAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAotICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAyNzYsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzgsIDI3OSwgCi0gICAgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjc3LCAyODAsIDI4MCwgMjgxLCAyODEsIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAKLSAgICAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjQzLCAyNDMsIDI3OCwgMjc5LCAyNzcsIDI3NywgCi0gICAgMjc3LCAyNzcsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjc3LCAyODIsIDAsIDI3NywgMjgyLCAyNzcsIDI3NywgMjgwLCAyODMsIAotICAgIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODUsIDI3NywgMjc3LCAyODYsIDI4NywgMjg4LCAyODgsIDI4OSwgMCwgMjc3LCAKLSAgICAyOTAsIDI4NSwgMjc3LCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMTcsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDI3NiwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3OCwgMjc5LCAyNzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcsIAorICAgIDI4MCwgMjgwLCAyODEsIDI4MSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAKKyAgICAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNDMsIDI0MywgMjc4LCAyNzksIDI3NywgMjc3LCAyNzcsIDI3NywgCisgICAgMjgxLCAyODEsIDI4MSwgMjgyLCAyNzcsIDI4MiwgMCwgMjc3LCAyODIsIDI3NywgMjc3LCAyODAsIDI4MywgMjg0LCAyODMsIAorICAgIDI4NCwgMjgzLCAyODQsIDI4NSwgMjc3LCAyNzcsIDI4NiwgMjg3LCAyODgsIDI4OCwgMjg5LCAwLCAyNzcsIDI5MCwgMjg1LCAKKyAgICAyNzcsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDExNywgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCiAgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAogICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCkBAIC0yMTgxLDI5NiArMjE4MCwyODkgQEAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCiAgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAogICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKLSAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxODcsIDAsIDI5MSwgMjkxLCAyOTIsIDI5MywgMjkyLCAyOTEsIAotICAgIDI5MSwgMjk0LCAyOTUsIDI5MSwgMjk2LCAyOTcsIDI5OCwgMjk3LCAyOTcsIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAKLSAgICAyOTksIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk3LCAyOTEsIDMwMCwgMzAxLCAzMDAsIDI5MSwgMjkxLCAzMDIsIDMwMiwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxODcsIDAsIDI5MSwgMjkxLCAyOTIsIDI5MywgMjkyLCAyOTEsIDI5MSwgMjk0LCAKKyAgICAyOTUsIDI5MSwgMjk2LCAyOTcsIDI5OCwgMjk3LCAyOTcsIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAyOTksIDI5OSwgCisgICAgMjk5LCAyOTksIDI5OSwgMjk3LCAyOTEsIDMwMCwgMzAxLCAzMDAsIDI5MSwgMjkxLCAzMDIsIDMwMiwgMzAyLCAzMDIsIAogICAgIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAKLSAgICAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDI5NCwgMjkxLCAyOTUsIDMwMywgCi0gICAgMzA0LCAzMDMsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIAorICAgIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAyOTQsIDI5MSwgMjk1LCAzMDMsIDMwNCwgMzAzLCAKICAgICAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgCi0gICAgMjk0LCAzMDEsIDI5NSwgMzAxLCAyOTQsIDI5NSwgMzA2LCAzMDcsIDMwOCwgMzA2LCAzMDYsIDMwOSwgMzA5LCAzMDksIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzEwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAyOTQsIDMwMSwgCisgICAgMjk1LCAzMDEsIDI5NCwgMjk1LCAzMDYsIDMwNywgMzA4LCAzMDYsIDMwNiwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMTAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKICAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCiAgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMTAsIDMxMCwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMTAsIDMxMCwgMzA5LCAzMDksIDMwOSwgCiAgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMCwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCi0gICAgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCi0gICAgMCwgMCwgMCwgMjkzLCAyOTMsIDMwMSwgMzAzLCAzMTEsIDI5MywgMjkzLCAwLCAzMTIsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEyLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDI2LCAzMCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDAsIAorICAgIDAsIDAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDAsIDAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDAsIDAsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDAsIDAsIDMwOSwgMzA5LCAzMDksIDAsIDAsIDAsIDI5MywgCisgICAgMjkzLCAzMDEsIDMwMywgMzExLCAyOTMsIDI5MywgMCwgMzEyLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMiwgMzEyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCi0gICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAotICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCi0gICAgMzE2LCAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNSwgODYsIDEzNSwgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NSwgCi0gICAgODYsIDAsIDAsIDAsIDAsIDE0MiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAzMTYsIDMxNiwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCi0gICAgMzE2LCAzMTYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIAotICAgIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAKLSAgICAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAwLCAxMzksIDEzNSwgCi0gICAgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNDIsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIAotICAgIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxNDIsIDE0MSwgODMsIDgzLCAKLSAgICAxODgsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDksIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzUsIDE1MCwgMTUwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDE0MiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzQsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE3NCwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgCi0gICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAwLCAxMDQsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKKyAgICAzMTYsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzUsIDg2LCAwLCAwLCAwLCAwLCAxNDIsIAorICAgIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgCisgICAgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzE2LCAzMTYsIAorICAgIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgCisgICAgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIAorICAgIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIAorICAgIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc0LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCisgICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDE0NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAotICAgIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOSwgMzE5LCAKLSAgICAxNzUsIDE3NSwgMTc1LCA4MCwgODAsIDgwLCAzMjAsIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxODcsIDE4NywgMTg3LCAKLSAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MCwgODAsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOCwgMzE4LCAKLSAgICAzMTgsIDMxOCwgMzE4LCAzMTgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTksIDMxOSwgMTc1LCAxNzUsIDE3NSwgODAsIDgwLCA4MCwgCisgICAgMzIwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgCi0gICAgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCAKKyAgICA0OSwgNDksIDAsIDAsIDQ5LCAwLCAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAKKyAgICA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKLSAgICA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjEsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjIsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKQEAgLTI0ODAsNzcgKzI0NzIsODQgQEAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMjIsIDMyMiwgCiAgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAogICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKICAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKICAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAotICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMCwgCi0gICAgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAKLSAgICAwLCAxMzAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKLSAgICAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAKLSAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIAotICAgIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCi0gICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDAsIAorICAgIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMTMwLCAKKyAgICAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIAorICAgIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzNywgCi0gICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAotICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKLSAgICAzMjMsIDAsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCi0gICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAotICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKLSAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCi0gICAgMzI0LCAzMjQsIDMyNCwgMjE4LCAyMTgsIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCi0gICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAotICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAyMzcsIDMyNCwgMzI0LCAKLSAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQsIDI2NCwgCi0gICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAotICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKLSAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAzMjMsIDAsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMjE4LCAyMTgsIDAsIDAsIDAsIDAsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAyMzcsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCkBAIC0yNTYwLDc3ICsyNTU5LDc2IEBACiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKLSAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAogICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAKKyAgICAyNzAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAogICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKICAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCiAgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAogICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKICAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCiAgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAotICAgIDE4NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCiAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCiAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCiAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCkBAIC0yNjQzLDggKzI2NDEsOCBAQAogICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAogICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAogICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKICAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCiAgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAogICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKQEAgLTI2NTIsOCArMjY1MCw4IEBACiAgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAogICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKICAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDAsIAotICAgIDAsIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDAsIDAsIAogfTsKIAogLyogZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC01ODYzLDcgKzU4NjEsNyBAQAogICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCA0LCAwLCAwLCAzNywgMzgsIDM5LCA0MCwgCiAgICAgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCA0LCAzNiwgOCwgNiwgNywgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgCiAgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggMzgzODg4Mi4uMDg0ZjAxMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNjUsOSArNjUsOSBAQAogICAgIDc2LCA4NSwgMTk3LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgCiAgICAgNzUsIDY1LCAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIAogICAgIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgCi0gICAgODQsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDc3LCA2NSwgMTI4LCAKLSAgICA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDgwLCA2NSwgMTI4LCA4OSwgNjUsIAorICAgIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgCisgICAgNzIsIDIwMSwgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODksIDY5LCAyMDMsIDc3LCA2OSwgNjksIDg0LCA2OSwgMjAxLCA3OCwgCisgICAgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjUsIDEyOCwgODksIDY1LCAKICAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA3MywgODgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCAKICAgICA2OSwgODAsIDY3LCA3MiwgMTkzLCA3OCwgNjUsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDc2LCA3OSwgNzgsIAogICAgIDE5OSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIApAQCAtNTI1LDc5ICs1MjUsNzkgQEAKICAgICA4NCwgODUsIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIAogICAgIDg0LCAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgCiAgICAgNjksIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIAotICAgIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgCi0gICAgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgCi0gICAgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgCi0gICAgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIDEyOCwgCi0gICAgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIDg1LCAKLSAgICA3MSwgMTc4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDg0LCA4NSwgNjUsIAotICAgIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDcxLCAxMjgsIAotICAgIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgCi0gICAgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgCi0gICAgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCAKLSAgICA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgCi0gICAgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAKLSAgICA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIAotICAgIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgCi0gICAgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAKLSAgICAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCAKLSAgICA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgNjUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgMTI4LCA4NCwgODMsIAotICAgIDcyLCA3OSwgNzksIDc1LCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgCi0gICAgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIAotICAgIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCA2NSwgNjUsIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgCi0gICAgODQsIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCAKLSAgICA4NCwgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIAotICAgIDc3LCA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCA4NCwgCi0gICAgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIDc3LCAKLSAgICA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIAotICAgIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzYsIAotICAgIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIDEyOCwgCi0gICAgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgNzMsIAotICAgIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCA4NCwgCi0gICAgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgNzksIAotICAgIDg1LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3OSwgNjgsIDEyOCwgCi0gICAgODQsIDgyLCA3MywgODAsIDc2LCA3MywgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDE5NywgODQsIDgyLCA3MywgNzksIAotICAgIDIwNiwgODQsIDgyLCA3MywgNzMsIDgzLCA2NSwgODAsIDEyOCwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCi0gICAgMjExLCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCAyMDUsIDg0LCA4MiwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc2LCA3MywgCi0gICAgNjUsIDg0LCAxOTcsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA4MiwgNzMsIDY4LCA2OSwgNzgsIAotICAgIDIxMiwgODQsIDgyLCA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgCi0gICAgNjUsIDIxMCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODQsIDgyLCAKLSAgICA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4MiwgNzMsIDY1LCA3OCwgCi0gICAgNzEsIDc2LCA2OSwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA4NCwgODIsIDczLCA2NSwgMTI4LCAKLSAgICA4NCwgODIsIDczLCAxMjgsIDg0LCA4MiwgNjksIDgzLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4NCwgODIsIDY5LCA3OCwgNjgsIAotICAgIDEyOCwgODQsIDgyLCA2OSwgNzgsIDE5NiwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MSwgMTI4LCA4NCwgCi0gICAgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNDksIAotICAgIDEyOCwgODQsIDgyLCA2OSwgNjksIDEyOCwgODQsIDgyLCA2OSwgMTk3LCA4NCwgODIsIDY5LCA2NSwgNjgsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgODQsIDgyLCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgODAsIDY5LCA5MCwgNzMsIDg1LCA3NywgMTI4LCAKLSAgICA4NCwgODIsIDY1LCA3OCwgODMsIDg2LCA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NCwgODIsIDY1LCA3OCwgODMsIDgwLCA3OSwgCi0gICAgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCAyMTIsIDg0LCA4MiwgNjUsIDc4LCAKLSAgICA4MywgNzcsIDczLCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDgzLCA4MywgCi0gICAgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNjUsIDc3LCA4NywgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDc3LCAxMjgsIDg0LCAKLSAgICA4MiwgNjUsIDIwNSwgODQsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDczLCAyMDYsIDg0LCA4MiwgNjUsIAotICAgIDczLCA3NiwgNzMsIDc4LCAxOTksIDg0LCA4MiwgNjUsIDcwLCA3MCwgNzMsIDY3LCAxMjgsIDg0LCA4MiwgNjUsIDcwLCA3MCwgCi0gICAgNzMsIDE5NSwgODQsIDgyLCA2NSwgNjgsIDE5NywgODQsIDgyLCA2NSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODQsIDgyLCAKLSAgICA2NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgMTI4LCA4NCwgNzksIDg4LCAxMjgsIDg0LCA3OSwgODcsIDY5LCA4MiwgMTI4LCAKLSAgICA4NCwgNzksIDg1LCA4MiwgNzgsIDc5LCA3MywgMjExLCA4NCwgNzksIDg0LCA2NSwgMjA0LCA4NCwgNzksIDg0LCAxMjgsIAotICAgIDg0LCA3OSwgODIsIDg0LCA3OSwgNzMsIDgzLCAxOTcsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4NCwgCi0gICAgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgMjExLCA4NCwgNzksIDgyLCA2NywgNzIsIDEyOCwgODQsIDc5LCA4MSwgMTI4LCAKLSAgICA4NCwgNzksIDgwLCA2NiwgNjUsIDgyLCAxMjgsIDg0LCA3OSwgODAsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIAotICAgIDg0LCA3OSwgODAsIDEyOCwgODQsIDc5LCAyMDgsIDg0LCA3OSwgNzksIDg0LCA3MiwgMTI4LCA4NCwgNzksIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA3OSwgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgMTI4LCA4NCwgNzksIDc4LCAKLSAgICA3MSwgODUsIDE5NywgODQsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NiwgMTI4LCA4NCwgNzksIAotICAgIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTQsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MywgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUyLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTEsIDEyOCwgODQsIDc5LCAKLSAgICA3OCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIAotICAgIDg0LCA3OSwgNzgsIDY1LCAyMDQsIDg0LCA3OSwgNzcsIDgwLCA3MywgMTI4LCA4NCwgNzksIDc3LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDg0LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3NSwgODksIDIwNywgODQsIDc5LCA3MywgNzYsIAotICAgIDY5LCA4NCwgMTI4LCA4NCwgNzksIDcxLCA2OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgODQsIDc5LCA2OCwgMjA3LCA4NCwgCi0gICAgNzksIDY1LCA3OCwgNjgsIDY1LCA3NSwgNzIsIDczLCA2NSwgODQsIDEyOCwgODQsIDc5LCA2NSwgMTI4LCA4NCwgNzgsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgCisgICAgMjAwLCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAKKyAgICAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIAorICAgIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgCisgICAgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCAKKyAgICA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIAorICAgIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIAorICAgIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgCisgICAgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAKKyAgICAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCAKKyAgICA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIAorICAgIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgCisgICAgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgCisgICAgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCAKKyAgICA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIAorICAgIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCAKKyAgICA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIAorICAgIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIAorICAgIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAKKyAgICAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIAorICAgIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIAorICAgIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgCisgICAgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgCisgICAgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCAKKyAgICA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgCisgICAgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCAKKyAgICA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgCisgICAgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIAorICAgIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgCisgICAgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIAorICAgIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgCisgICAgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCAKKyAgICA3MywgODQsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIAorICAgIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDgyLCA3MywgCisgICAgODAsIDc5LCA2OCwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgMTk3LCAKKyAgICA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIAorICAgIDY1LCA3NywgNzcsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCAKKyAgICA3OSwgNzYsIDczLCA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIAorICAgIDY5LCA3OCwgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgCisgICAgODUsIDc2LCA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCAKKyAgICA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgCisgICAgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIAorICAgIDc4LCA2OCwgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIAorICAgIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIAorICAgIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDIxMiwgODQsIDgyLCA2NSwgCisgICAgNzgsIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIAorICAgIDgzLCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzcsIDg3LCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgNzcsIDEyOCwgCisgICAgODQsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDY1LCA3MywgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzMsIDIwNiwgODQsIDgyLCAKKyAgICA2NSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgODQsIDgyLCA2NSwgNzAsIDcwLCA3MywgNjcsIDEyOCwgODQsIDgyLCA2NSwgNzAsIAorICAgIDcwLCA3MywgMTk1LCA4NCwgODIsIDY1LCA2OCwgMTk3LCA4NCwgODIsIDY1LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4NCwgCisgICAgODIsIDY1LCA2NywgNzUsIDEyOCwgODQsIDgyLCAxMjgsIDg0LCA3OSwgODgsIDEyOCwgODQsIDc5LCA4NywgNjksIDgyLCAKKyAgICAxMjgsIDg0LCA3OSwgODUsIDgyLCA3OCwgNzksIDczLCAyMTEsIDg0LCA3OSwgODQsIDY1LCAyMDQsIDg0LCA3OSwgODQsIAorICAgIDEyOCwgODQsIDc5LCA4MiwgODQsIDc5LCA3MywgODMsIDE5NywgODQsIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDgzLCAKKyAgICAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCAyMTEsIDg0LCA3OSwgODIsIDY3LCA3MiwgMTI4LCA4NCwgNzksIAorICAgIDgxLCAxMjgsIDg0LCA3OSwgODAsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCA4MCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgCisgICAgNjksIDE5NiwgODQsIDc5LCA4MCwgMTI4LCA4NCwgNzksIDIwOCwgODQsIDc5LCA3OSwgODQsIDcyLCAxMjgsIDg0LCA3OSwgCisgICAgNzksIDc4LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCAKKyAgICA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIAorICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgCisgICAgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCAKKyAgICA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIAorICAgIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgCisgICAgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCAKKyAgICA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIAorICAgIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgCiAgICAgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIAogICAgIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCiAgICAgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCAKQEAgLTQ2MzUsNyArNDYzNSw3IEBACiAgICAgNTU3LCA4NTAsIDg2MCwgODY3LCA4NzMsIDg3OSwgODg2LCA4OTQsIDg5OCwgNzQ5LCA5MDYsIDkxNSwgNTAzLCA5MjMsIAogICAgIDkyOCwgOTM0LCAxNywgOTQzLCA5NDgsIDk1MSwgOTU1LCA5NTksIDk2NiwgOTY5LCA5NzYsIDk4MCwgOTg4LCA5OTIsIAogICAgIDEwMDAsIDEwMDQsIDEwMDcsIDEwMTQsIDEwMjEsIDE5MiwgMTAyNCwgMTAyOSwgMTAzOSwgMTA0OCwgMTA1NSwgMTA2MSwgCi0gICAgMTA2OSwgMTA3MiwgMTA3NywgMTA4MywgMTA5MSwgMTA5NywgMTEwMiwgMTEwNSwgMTEwOCwgMTExLCAxMTEzLCAxMTE3LCAKKyAgICAxMDY3LCAxMDc1LCAxMDc4LCAxMDgzLCAxMDg5LCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAxMTEsIDExMTMsIDExMTcsIAogICAgIDExMjMsIDExMjksIDExMzIsIDExMzgsIDExNDIsIDExNDcsIDExNTMsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAogICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAogICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIApAQCAtNDc1NSw3MzczICs0NzU1LDczNzQgQEAKICAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKICAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKICAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKLSAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA3NjgsIAotICAgIDg5OTMsIDg5OTcsIDkwMDIsIDkwMDcsIDkwMTIsIDkwMTYsIDkwMjIsIDkwMzAsIDkwMzYsIDkwNDAsIDkwNDYsIDkwNTYsIAotICAgIDkwNjAsIDkwNjYsIDkwNzEsIDkwNzUsIDkwODEsIDkwODcsIDIxNjEsIDkwOTIsIDkwOTQsIDkwOTksIDkxMDcsIDkxMTYsIAotICAgIDkxMjAsIDkxMjYsIDkxMzEsIDkxMzYsIDkxNDEsIDkxNDYsIDkxNTIsIDkxNTcsIDkxNjIsIDQwMDYsIDkxNjcsIDkxNzIsIAotICAgIDkxNzYsIDkxODIsIDkxODcsIDkxOTMsIDkxOTgsIDkyMDMsIDkyMDksIDkyMTQsIDkxMjEsIDkyMjAsIDkyMjQsIDkyMzEsIAotICAgIDkyMzcsIDkyNDIsIDkyNDYsIDYxODMsIDkyNTEsIDkyNjAsIDkyNjUsIDkyNzAsIDgyMTgsIDgyMjUsIDkyNzUsIDI4NTMsIAotICAgIDkyNzksIDkyODQsIDkyODksIDkxMzIsIDkyOTMsIDkyOTgsIDkxMzcsIDkxNDIsIDkzMDMsIDkzMTAsIDkzMTcsIDkzMjMsIAotICAgIDkzMjksIDkzMzUsIDkzNDAsIDkzNDUsIDkzNTAsIDkxNDcsIDkxNTMsIDkzNTYsIDkzNjIsIDkzNjcsIDkzNzUsIDkxNTgsIAotICAgIDkzODAsIDk5MCwgOTM4MywgOTM5MSwgOTM5NywgOTQwMywgOTQxMiwgOTQyMCwgOTQyNSwgOTQzMSwgOTQzOSwgOTQ0NiwgCi0gICAgOTQ2MSwgOTQ3OCwgOTQ5NywgOTUwNiwgOTUxNCwgOTUyOSwgOTU0MCwgOTU1MCwgOTU2MCwgOTU2OCwgOTU3NCwgOTU4NiwgCi0gICAgOTU5NSwgOTYwMywgOTYxMCwgOTYxNywgOTYyMywgOTYyOCwgOTYzNiwgOTY0NiwgOTY1MywgOTY2MywgOTY3MywgOTY4MywgCi0gICAgOTY5MSwgOTY5OCwgOTcwNywgOTcxNywgOTczMSwgOTc0NiwgOTc1NSwgOTc2MywgOTc2OCwgOTc3MiwgOTc4MSwgOTc4NywgCi0gICAgOTc5MiwgOTgwMiwgOTgxMiwgOTgyMiwgOTgyNywgOTgzMSwgOTg0MCwgOTg0NSwgOTg1NSwgOTg2NiwgOTg3OSwgOTg4NywgCi0gICAgOTkwMCwgOTkxMiwgOTkyMCwgOTkyNSwgOTkyOSwgOTkzNSwgOTk0MCwgOTk0OCwgOTk1NiwgOTk2MywgOTk2OCwgOTk3NiwgCi0gICAgOTk4MiwgOTk4NSwgOTk4OSwgOTk5NSwgMTAwMDMsIDEwMDA4LCAxMDAxMiwgMTAwMjAsIDEwMDI5LCAxMDAzNywgMTAwNDMsIAotICAgIDEwMDQ3LCAxMDA1NCwgMTAwNjUsIDEwMDY5LCAxMDA3MiwgMTAwNzgsIDkxNjMsIDEwMDgzLCAxMDA4OSwgMTAwOTYsIAotICAgIDEwMTAyLCAxMDEwNywgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKLSAgICAxMDE2OCwgOTQ3NCwgMTAxNzMsIDEwMTc5LCAxMDE4NiwgMTAxOTMsIDEwMTk4LCAxMDIwNSwgMTAyMTQsIDEwMjE4LCAKLSAgICAxMDIzMCwgODI1NiwgMTAyMzQsIDEwMjM3LCAxMDI0MSwgMTAyNDUsIDEwMjQ5LCAxMDI1MywgMTAyNTksIDEwMjY1LCAKLSAgICAxMDI3MCwgMTAyNzYsIDEwMjgxLCAxMDI4NiwgMTAyOTIsIDEwMjk3LCAxMDMwMiwgODk1MiwgMTAzMDcsIDEwMzExLCAKLSAgICAxMDMxNSwgMTAzMTksIDEwMzI0LCAxMDMyOSwgMTAzMzcsIDEwMzQzLCAxMDM0NywgMTAzNTEsIDEwMzU4LCAxMDM2MywgCi0gICAgMTAzNzEsIDEwMzc2LCAxMDM4MCwgMTAzODMsIDEwMzg5LCAxMDM5NiwgMTA0MDAsIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAotICAgIDQwNDUsIDEwNDE4LCAxMDQyNywgMzYsIDEwNDM1LCAxMDQ0MSwgMTA0NDYsIDg5NjcsIDEwNDUxLCAxMDQ1NiwgMTA0NjAsIAotICAgIDEwNDYzLCAxMDQ3OCwgMTA0OTcsIDEwNTA5LCAxMDUyMiwgMTA1MzUsIDEwNTQ4LCAxMDU2MiwgMTA1NzUsIDEwNTkwLCAKLSAgICAxMDU5NywgOTE2OCwgMTA2MDMsIDEwNjE3LCAxMDYyMiwgMTA2MjgsIDEwNjMzLCAxMDY0MSwgMTA2NDYsIDgwNDAsIAotICAgIDEwNjUxLCAxMDY1NCwgMTA2NjEsIDEwNjY2LCAxMDY3MCwgMjg1OCwgOTk4LCAxMDY3NiwgMTA2ODAsIDEwNjg2LCAxMDY5MiwgCi0gICAgMTA2OTcsIDEwNzAzLCAxMDcwOCwgOTE3NywgMTA3MTQsIDEwNzIwLCAxMDcyNSwgMTA3MzAsIDEwNzM4LCAxMDc0NCwgCi0gICAgMTA3NTcsIDEwNzY1LCAxMDc3MiwgOTE4MywgMTA3NzgsIDEwNzg2LCAxMDc5NCwgMTA4MDEsIDEwODE0LCAxMDgyNiwgCi0gICAgMTA4MzYsIDEwODQ0LCAxMDg1MSwgMTA4NTgsIDEwODY3LCAxMDg3NiwgMTA4ODQsIDEwODkxLCAxMDg5NiwgMTA5MDIsIAotICAgIDkxODgsIDEwOTA3LCAxMDkxMywgOTE5NCwgMTA5MTgsIDEwOTIxLCAxMDkyOCwgMTA5MzQsIDEwOTQ3LCA4NjY5LCAxMDk1OCwgCi0gICAgMTA5NjQsIDEwOTczLCAxMDk4MSwgMTA5ODgsIDEwOTk0LCAxMTAwMCwgMTEwMDUsIDExMDA5LCAxMTAxNCwgMTA0NzAsIAotICAgIDExMDIwLCA5MTk5LCAxMTAyNywgMTEwMzIsIDExMDM5LCAxMTA0NSwgMTEwNTEsIDExMDU2LCAxMTA2NCwgMTEwNzIsIAotICAgIDExMDc5LCAxMTA4MywgMTEwOTcsIDExMTA3LCAxMTExMiwgMTExMTYsIDExMTI3LCAxMTEzMywgMTExMzgsIDExMTQzLCAKLSAgICA5MjA0LCA5MjEwLCAxMTE0NywgMTExNTAsIDExMTU1LCAxMTE2NywgMTExNzQsIDExMTc5LCAxMTE4MywgMTExODgsIAotICAgIDExMTkyLCAxMTE5OSwgMTEyMDUsIDkyMTUsIDkxMjIsIDExMjEyLCAyODYzLCA4LCAxMTIxOSwgMTEyMjQsIDExMjI4LCAKLSAgICAxMTIzNCwgMTEyNDIsIDExMjUyLCAxMTI1NywgMTEyNjIsIDExMjY5LCAxMTI3NiwgMTEyODAsIDExMjkxLCAxMTMwMSwgCi0gICAgMTEzMTAsIDExMzIyLCAxMTMyNywgMTEzMzEsIDExMzM5LCAxMTM1MywgMTEzNTcsIDExMzYwLCAxMTM2OCwgMTEzNzUsIAotICAgIDExMzgzLCAxMTM4NywgMTEzOTgsIDExNDAyLCAxMTQwOSwgMTE0MTQsIDExNDE4LCAxMTQyNCwgMTE0MjksIDExNDMzLCAKLSAgICAxMTQzOSwgMTE0NDQsIDExNDU1LCAxMTQ1OSwgMTE0NjIsIDExNDY4LCAxMTQ3MywgMTE0NzksIDExNDg1LCAxMTQ5MiwgCi0gICAgMTE1MDMsIDExNTEzLCAxMTUyMywgMTE1MzIsIDExNTM5LCAxMTU0OCwgOTIyNSwgOTIzMiwgOTIzOCwgOTI0MywgMTE1NTQsIAotICAgIDExNTYwLCA5MjQ3LCAxMTU2NiwgMTE1NjksIDExNTc2LCAxMTU4MSwgMTE1OTYsIDExNjEyLCAxMTYyNywgMTE2MzUsIAotICAgIDExNjQxLCAxMTY0NiwgODM4LCA0MjAsIDExNjUxLCAxMTY1OSwgMTE2NjYsIDExNjcyLCAxMTY3NywgMTE2ODIsIDkyNTIsIAotICAgIDExNjg0LCAxMTY4OCwgMTE2OTMsIDExNjk3LCAxMTcwNywgMTE3MTIsIDExNzE2LCAxMTcyNSwgMTE3MjksIDExNzMyLCAKLSAgICA5MjYxLCAxMTczOSwgMTE3NDIsIDExNzUwLCAxMTc1NywgMTE3NjUsIDExNzY5LCAxMTc3NiwgMTE3ODUsIDExNzg4LCAKLSAgICAxMTc5MiwgMTE3OTYsIDExODAyLCAxMTgwNiwgMTE4MTAsIDExODE0LCAxMTgyMCwgMTE4MzAsIDExODM0LCAxMTg0MiwgCi0gICAgMTE4NDYsIDExODUzLCAxMTg1NywgMTE4NjIsIDExODY2LCAxMTg3MywgMTE4NzksIDExODg3LCAxMTg5MywgMTE4OTgsIAotICAgIDExOTA4LCAxMTkxMywgMTE5MTgsIDExOTIyLCAxMTkzMCwgMzkwNSwgMTE5MzgsIDExOTQzLCA5MjY2LCAxMTk0NywgCi0gICAgMTE5NTEsIDExOTU0LCAxMTk2MiwgMTE5NjksIDExOTczLCA1OTkxLCAxMTk3NywgMTE5ODIsIDExOTg2LCAxMTk5NywgCi0gICAgMTIwMDcsIDEyMDEyLCAxMjAxOCwgMTIwMjIsIDEyMDI1LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA1MCwgMTIwNTUsIAotICAgIDkyNzEsIDEyMDYwLCAxMjA2NCwgMTIwNzEsIDE3MjIsIDYxNDUsIDEyMDc2LCAxMjA4MSwgMTIwODYsIDEyMDkxLCAxMjA5NywgCi0gICAgMTIxMDIsIDEyMTA4LCAxMjExMywgMTIxMTgsIDEyMTIzLCAxMjEyOCwgMTIxMzMsIDEyMTM4LCAxMjE0MywgMTIxNDgsIAotICAgIDEyMTUzLCAxMjE1OCwgMTIxNjMsIDEyMTY4LCAxMjE3MywgMTIxNzgsIDEyMTgzLCAxMjE4OCwgMTIxOTQsIDEyMTk5LCAKLSAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjUsIDEyMjMwLCAxMjIzNSwgMTIyNDEsIDEyMjQ2LCAxMjI1MiwgCi0gICAgMTIyNTcsIDEyMjYzLCAxMjI2OCwgMTIyNzMsIDEyMjc4LCAxMjI4MywgMTIyODksIDEyMjk0LCAxMjI5OSwgMTIzMDQsIAotICAgIDczNywgMTM5LCAxMjMxMiwgMTIzMTYsIDEyMzIxLCAxMjMyNiwgMTIzMzAsIDEyMzM0LCAxMjMzOCwgMTIzNDMsIDEyMzQ3LCAKLSAgICAxMjM1MiwgMTIzNTYsIDEyMzU5LCAxMjM2MywgMTIzNjcsIDEyMzczLCAxMjM3OCwgMTIzODgsIDEyMzk0LCAxMjQwMiwgCi0gICAgMTI0MDYsIDEyNDEwLCAxMjQxNywgMTI0MjUsIDEyNDM0LCAxMjQ0NSwgMTI0NTIsIDEyNDU5LCAxMjQ2MywgMTI0NzIsIAotICAgIDEyNDgxLCAxMjQ4OSwgMTI0OTgsIDEyNTA3LCAxMjUxNiwgMTI1MjUsIDEyNTM1LCAxMjU0NSwgMTI1NTUsIDEyNTY1LCAKLSAgICAxMjU3NSwgMTI1ODQsIDEyNTk0LCAxMjYwNCwgMTI2MTQsIDEyNjI0LCAxMjYzNCwgMTI2NDQsIDEyNjU0LCAxMjY2MywgCi0gICAgMTI2NzMsIDEyNjgzLCAxMjY5MywgMTI3MDMsIDEyNzEzLCAxMjcyMywgMTI3MzIsIDEyNzQyLCAxMjc1MiwgMTI3NjIsIAotICAgIDEyNzcyLCAxMjc4MiwgMTI3OTIsIDEyODAyLCAxMjgxMiwgMTI4MjIsIDEyODMxLCAxMjg0MSwgMTI4NTEsIDEyODYxLCAKLSAgICAxMjg3MSwgMTI4ODEsIDEyODkxLCAxMjkwMSwgMTI5MTEsIDEyOTIxLCAxMjkzMSwgMTI5NDAsIDEyNTYsIDEyOTQ2LCAKLSAgICAxMjk0OSwgMTI5NTMsIDEyOTU4LCAxMjk2NSwgMTI5NzEsIDEyOTc2LCAxMjk4MCwgMTI5ODUsIDEyOTk0LCAxMzAwMiwgCi0gICAgMTMwMDcsIDEzMDExLCAxMzAxNSwgMTMwMjEsIDEzMDI2LCAxMzAzMiwgOTI4MCwgMTMwMzcsIDEzMDQyLCAxMzA1MSwgCi0gICAgOTI4NSwgMTMwNTYsIDEzMDU5LCAxMzA2NSwgMTMwNzMsIDkyOTAsIDEzMDgwLCAxMzA4NCwgMTMwODgsIDEzMDkyLCAKLSAgICAxMzEwMiwgMTMxMDgsIDEzMTE0LCAxMzExOSwgMTMxMjgsIDEzMTM2LCAxMzE0MywgMTMxNTAsIDEzMTU1LCAxMzE2MiwgCi0gICAgMTMxNjcsIDEzMTcxLCAxMzE3NCwgMTMxODUsIDEzMTk1LCAxMzIwNCwgMTMyMTIsIDEzMjIzLCAxMzIzNSwgMTMyNDUsIAotICAgIDEzMjUwLCAxMzI1NCwgMTMyNTksIDEzMjY0LCAxMzI2OCwgMTMyNzQsIDEzMjgyLCAxMzI4OSwgMTMzMDAsIDEzMzA1LCAKLSAgICAxMzMxNSwgMTMzMTksIDEzMzIyLCAxMzMyOSwgMTMzMzksIDEzMzQ4LCAxMzM1NSwgMTMzNTksIDEzMzY2LCAxMzM3MiwgCi0gICAgMTMzNzcsIDEzMzgyLCAxMzM4NiwgMTMzOTUsIDEzNDAwLCAxMzQwNiwgMTM0MTAsIDEzNDE1LCAxMzQxOSwgMTM0MjgsIAotICAgIDEzNDM2LCAxMzQ0NCwgMTM0NTEsIDEzNDU5LCAxMzQ3MSwgMTM0ODIsIDEzNDkyLCAxMzQ5OSwgMTM1MDUsIDEzNTE0LCAKLSAgICAxMzUyNSwgMTM1MzQsIDEzNTQ2LCAxMzU1OCwgMTM1NzAsIDEzNTgwLCAxMzU4OSwgMTM1OTgsIDEzNjA2LCAxMzYxMywgCi0gICAgMTM2MjIsIDEzNjMwLCAxMzYzNCwgMTM2NDAsIDEzNjQ2LCAxMzY1MSwgNzc1MywgMTM2NTUsIDEzNjU3LCAxMzY2MSwgCi0gICAgMTM2NjYsIDEzNjcyLCAxMzY4MSwgMTM2ODUsIDEzNjkzLCAxMzcwMCwgMTM3MDksIDEzNzE4LCAxMzcyNywgMTM3MzYsIAotICAgIDEzNzQ1LCAxMzc1NCwgMTM3NjMsIDEzNzcyLCAxMzc4MiwgMTM3OTIsIDEzODAxLCAxMzgwNywgMTM4MTQsIDEzODIxLCAKLSAgICAxMzgyNywgMTM4NDEsIDEzODQ4LCAxMzg1NiwgMTM4NjUsIDEzODcxLCAxMzg4MCwgMTM4ODksIDEzOTAwLCAxMzkxMCwgCi0gICAgMTM5MTgsIDEzOTI1LCAxMzkzMywgMTM5NDIsIDEzOTU1LCAxMzk2MywgMTM5NzAsIDEzOTgzLCAxMzk4OSwgMTM5OTUsIAotICAgIDE0MDA1LCAxNDAxNCwgMTQwMjMsIDE0MDI4LCAxNDAzMiwgMTQwMzgsIDE0MDQ0LCAxNDA1MSwgODk2NiwgMTQwNTYsIAotICAgIDE0MDYxLCAxNDA2OCwgMTQwNzMsIDEyMzY5LCAxNDA3OCwgMTQwODYsIDE0MDkyLCAxNDA5NywgMTQxMDUsIDE0MTEzLCAKLSAgICAxNDEyMCwgMTQxMjgsIDE0MTM0LCAxNDE0MiwgMTQxNTAsIDE0MTU2LCAxNDE2MSwgMTQxNjcsIDE0MTc0LCAxNDE4MCwgCi0gICAgMTQxODUsIDE0MTg5LCAxNDIwMCwgMTQyMDgsIDE0MjE0LCAxNDIxOSwgMTQyMjgsIDE0MjM0LCAxNDIzOSwgMTQyNDgsIAotICAgIDE0MjYyLCAzODUzLCAxNDI2NiwgMTQyNzEsIDE0Mjc2LCAxNDI4MiwgMTQyODcsIDE0MjkyLCAxNDI5NiwgMTQzMDEsIAotICAgIDE0MzA2LCAxNDMxMSwgNzc1MiwgMTQzMTYsIDE0MzIxLCAxNDMyNiwgMTQzMzEsIDE0MzM2LCAxNDM0MCwgMTQzNDUsIAotICAgIDE0MzUwLCAxNDM1NSwgMTQzNjAsIDE0MzY2LCAxNDM3MiwgMTQzNzcsIDE0MzgxLCAxNDM4NiwgMTQzOTEsIDE0Mzk2LCAKLSAgICA5Mjk0LCAxNDQwMSwgMTQ0MDYsIDE0NDExLCAxNDQxNiwgMTQ0MjEsIDE0NDM4LCAxNDQ1NiwgMTQ0NjgsIDE0NDgxLCAKLSAgICAxNDQ5OCwgMTQ1MTQsIDE0NTMxLCAxNDU0MSwgMTQ1NjAsIDE0NTcxLCAxNDU4MiwgMTQ1OTMsIDE0NjA0LCAxNDYxNiwgCi0gICAgMTQ2MjcsIDE0NjM4LCAxNDY1NSwgMTQ2NjYsIDE0Njc3LCAxNDY4MiwgOTI5OSwgMTQ2ODcsIDE0NjkxLCAyMzgxLCAKLSAgICAxNDY5NSwgMTQ2OTgsIDE0NzA0LCAxNDcxMiwgMTQ3MjAsIDE0NzI1LCAxNDczMywgMTQ3NDEsIDE0NzQ4LCAxNDc1MywgCi0gICAgMTQ3NTksIDE0NzY2LCAxNDc3NCwgMTQ3ODEsIDE0NzkzLCAxNDgwMSwgMTQ4MDYsIDExNTkwLCAxNDgxMiwgMTQ4MjEsIAotICAgIDE0ODMwLCAxNDgzOCwgMTQ4NDUsIDE0ODUxLCAxNDg1OSwgMTQ4NjYsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODk0LCAKLSAgICAxNDkwMiwgMTQ5MTIsIDE0OTE5LCAxNDkyNSwgMTQ5MzMsIDE0OTM5LCAxNDk0NywgMTQ5NTQsIDE0OTY3LCAxNDk3NCwgCi0gICAgMTQ5ODMsIDE0OTkyLCAxNTAwMSwgMTUwMDksIDE1MDE5LCAxNTAyNiwgMTUwMzEsIDM1NjAsIDE1MDM4LCAxNTA0MywgCi0gICAgMTM3MiwgMTUwNDcsIDE0MzE3LCAxNTA1MSwgMTUwNTcsIDE1MDYxLCAxNTA2OSwgMTUwODEsIDE1MDg2LCAxNTA5MywgCi0gICAgMTUwOTksIDE1MTA0LCAxNTExMSwgMTQzMjIsIDE1MTE1LCAxNTExOSwgMTUxMjMsIDE0MzI3LCAxNTEyNywgMTQzMzIsIAotICAgIDE1MTMxLCAxNTEzOCwgMTUxNDMsIDE1MTQ3LCAxNTE1NCwgMTUxNTgsIDE1MTY2LCAxNTE3MywgMTUxNzcsIDE1MTg0LCAKLSAgICAxNTIwMSwgMTUyMTAsIDE1MjE0LCAxNTIxNywgMTUyMjUsIDE1MjMxLCAxNTIzNiwgMzYzOCwgMTUyNDAsIDE1MjQyLCAKLSAgICAxNTI1MCwgMTUyNTcsIDE1MjY3LCAxNTI3OSwgMTUyODQsIDE1MjkwLCAxNTI5NSwgMTUyOTksIDE1MzA1LCAxNTMxMCwgCi0gICAgMTUzMTYsIDE1MzE5LCAxNTMyNiwgMTUzMzQsIDE1MzQxLCAxNTM0NywgMTUzNTMsIDE1MzU4LCAxNTM2NSwgMTUzNzEsIAotICAgIDE1Mzc2LCAxNTM4MywgMTUzODcsIDE1MzkzLCAxNTM5NywgMTU0MDQsIDE1NDEwLCAxNTQxNiwgMTU0MjQsIDE1NDMwLCAKLSAgICAxNTQzNSwgMTU0NDEsIDE1NDQ5LCAxNTQ1NywgMTU0NjMsIDE1NDY5LCAxNTQ3NCwgMTU0ODEsIDE1NDg2LCAxNTQ5MCwgCi0gICAgMTU0OTYsIDE1NTAxLCAxNTUwOCwgMTU1MTMsIDE1NTE5LCAxNTUyMiwgMTU1MjgsIDE1NTM0LCAxNTUzNywgMTU1NDEsIAotICAgIDE1NTUzLCAxNTU1OSwgMTU1NjQsIDE1NTcxLCAxNTU3NywgMTU1ODMsIDE1NTk0LCAxNTYwNCwgMTU2MTMsIDE1NjIxLCAKLSAgICAxNTYyOCwgMTU2MzksIDE1NjQ5LCAxNTY1OSwgMTU2NjcsIDE1NjcwLCAxNDM0NiwgMTU2NzUsIDE1NjgwLCAxNDM1MSwgCi0gICAgMTQ0ODYsIDE1Njg4LCAxNTcwMSwgMTU3MTYsIDE1NzI3LCAxNDUwMywgMTU3NDUsIDE1NzU4LCAxNTc3MSwgMTU3ODIsIAotICAgIDEwNDg1LCAxNTc5MywgMTU4MDYsIDE1ODI1LCAxNTgzNiwgMTU4NDcsIDE1ODU4LCAyNjQ5LCAxNTg3MSwgMTU4NzUsIAotICAgIDE1ODgzLCAxNTg5OCwgMTU5MTMsIDE1OTI0LCAxNTkzMSwgMTU5MzcsIDE1OTQ1LCAxNTk0OSwgMTU5NTUsIDE1OTU4LCAKLSAgICAxNTk2OCwgMTU5NzYsIDE1OTgzLCAxNTk5MSwgMTYwMDEsIDE2MDA2LCAxNjAxMywgMTYwMTgsIDE2MDI1LCAxNjAzNiwgCi0gICAgMTYwNDYsIDE2MDUyLCAxNjA1NywgMTYwNjIsIDE0MzU2LCAxNjA2NiwgMTYwNzIsIDE2MDc4LCAxNjA4MywgMTYwODgsIAotICAgIDE2MDkzLCAxNjA5NywgMTQzNjEsIDE0MzY3LCAxNjEwMSwgMTQzNzMsIDE2MTA2LCAxNjExNCwgMTYxMjMsIDE2MTMwLCAKLSAgICA5MTQzLCAxNjEzNCwgMTYxMzYsIDE2MTQxLCAxNjE0NiwgMTYxNTIsIDE2MTU3LCAxNjE2MiwgMTYxNjcsIDE2MTcyLCAKLSAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5MywgMTYxOTksIDE2MjA0LCAxNjIwOSwgMTYyMTUsIDE2MjIwLCAxNjIyNSwgCi0gICAgMTYyMzAsIDE2MjM1LCAxNjI0MSwgMTYyNDYsIDE2MjUxLCAxNjI1NywgMTYyNjMsIDE2MjY4LCAxNjI3MywgMTYyODAsIAotICAgIDE2Mjg2LCAxNjI5NywgMTYzMDQsIDE2MzA5LCAxNjMxMywgMTYzMTcsIDE2MzIwLCAxNjMyOCwgMTYzMzMsIDE2MzQwLCAKLSAgICAxNjM0NywgMTYzNTMsIDE2MzU4LCAxNjM2MywgMTYzNzAsIDE2MzgwLCAxNjM4NSwgMTYzOTIsIDE2Mzk4LCAxNjQwOCwgCi0gICAgMTY0MTgsIDE2NDMyLCAxNjQ0NiwgMTY0NjAsIDE2NDc0LCAxNjQ4OSwgMTY1MDQsIDE2NTIxLCAxNjUzOSwgMTY1NTIsIAotICAgIDE2NTU4LCAxNjU2MywgMTY1NjgsIDE2NTcyLCAxNjU3NywgMTY1ODUsIDE2NTkxLCAxNjU5NiwgMTY2MDEsIDE2NjA1LCAKLSAgICAxNjYxMCwgMTY2MTQsIDE2NjE5LCAxNjYyMywgMTY2MzQsIDE2NjQwLCAxNjY0NSwgMTY2NTAsIDE2NjU3LCAxNjY2MiwgCi0gICAgMTY2NjYsIDE2NjcxLCAxNjY3NiwgMTY2ODIsIDE2Njg5LCAxNjY5NSwgMTY3MDAsIDE2NzA0LCAxNjcxMCwgMTY3MTUsIAotICAgIDE2NzIwLCAxNjcyNCwgMTY3MzAsIDE2NzM1LCAxNjc0MCwgMTY3NDcsIDE2NzUyLCAxMzEwNCwgMTY3NTYsIDE2NzYxLCAKLSAgICAxNjc2NSwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODksIDE2Nzk5LCAxNjgwNywgMTY4MTQsIDE2ODE5LCAxNjgyMywgCi0gICAgMTY4MzIsIDE2ODQwLCAxNjg0NywgMTY4NTQsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc2LCAxNjg4MiwgMTY4ODcsIAotICAgIDE2ODkzLCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNywgMTY5MjMsIDE2OTI4LCAxNjkzMywgOTM0MSwgMTY5NDIsIAotICAgIDE2OTQ1LCAxNjk1MSwgMTY5NTYsIDE2OTYxLCAxNjk3MSwgMTY5NzgsIDE2OTg0LCAxNjk4OSwgMTY5OTQsIDE3MDAwLCAKLSAgICAxNzAwNSwgMTcwMTEsIDE3MDE2LCAxNzAyMiwgMTcwMjgsIDE3MDMzLCAxNzA0MSwgMTcwNDgsIDE3MDUzLCAxNzA1OCwgCi0gICAgMTcwNjQsIDE3MDY5LCAxNzA3MywgMTcwODIsIDE3MDkzLCAxNzEwMCwgMTcxMDUsIDE3MTEzLCAxNzExOSwgMTcxMjYsIAotICAgIDE3MTMyLCAxNzEzNywgMTcxNDEsIDE3MTQ3LCAxNzE1MiwgMTcxNTcsIDE3MTYyLCAxNDQwLCA3Nzc3LCAyODc3LCAxNzE2NiwgCi0gICAgMTcxNzAsIDE3MTc0LCAxNzE3OCwgMTcxODIsIDE3MTg2LCAxNzE4OSwgMTcxOTYsIDE3MjA0LCAxNDM4NywgMTcyMTEsIAotICAgIDE3MjIxLCAxNzIyOSwgMTcyMzYsIDE3MjQ0LCAxNzI1NCwgMTcyNjMsIDE3Mjc2LCAxNzI4MSwgMTcyODYsIDE3Mjk0LCAKLSAgICAxNzMwMSwgMTMyMDAsIDEzMjA5LCAxNzMwOCwgMTczMTgsIDE3MzMzLCAxNzMzOSwgMTczNDYsIDE3MzUzLCAxNzM1OSwgCi0gICAgMTczNjcsIDE3Mzc3LCAxNzM4NywgMTQzOTIsIDE3Mzk2LCAxNzQwMiwgMTc0MDgsIDE3NDE2LCAxNzQyNCwgMTc0MjksIAotICAgIDE3NDM4LCAxNzQ0NiwgMTc0NTgsIDE3NDY4LCAxNzQ3OCwgMTc0ODgsIDE3NDk3LCAxNzUwOSwgMTc1MTksIDE3NTI5LCAKLSAgICAxNzU0MCwgMTc1NDUsIDE3NTU3LCAxNzU2OSwgMTc1ODEsIDE3NTkzLCAxNzYwNSwgMTc2MTcsIDE3NjI5LCAxNzY0MSwgCi0gICAgMTc2NTMsIDE3NjY1LCAxNzY3NiwgMTc2ODgsIDE3NzAwLCAxNzcxMiwgMTc3MjQsIDE3NzM2LCAxNzc0OCwgMTc3NjAsIAotICAgIDE3NzcyLCAxNzc4NCwgMTc3OTYsIDE3ODA3LCAxNzgxOSwgMTc4MzEsIDE3ODQzLCAxNzg1NSwgMTc4NjcsIDE3ODc5LCAKLSAgICAxNzg5MSwgMTc5MDMsIDE3OTE1LCAxNzkyNywgMTc5MzgsIDE3OTUwLCAxNzk2MiwgMTc5NzQsIDE3OTg2LCAxNzk5OCwgCi0gICAgMTgwMTAsIDE4MDIyLCAxODAzNCwgMTgwNDYsIDE4MDU4LCAxODA2OSwgMTgwODEsIDE4MDkzLCAxODEwNSwgMTgxMTcsIAotICAgIDE4MTI5LCAxODE0MSwgMTgxNTMsIDE4MTY1LCAxODE3NywgMTgxODksIDE4MjAwLCAxODIxMiwgMTgyMjQsIDE4MjM2LCAKLSAgICAxODI0OCwgMTgyNjAsIDE4MjcyLCAxODI4NCwgMTgyOTYsIDE4MzA4LCAxODMyMCwgMTgzMzEsIDE4MzQzLCAxODM1NSwgCi0gICAgMTgzNjcsIDE4Mzc5LCAxODM5MSwgMTg0MDMsIDE4NDE1LCAxODQyNywgMTg0MzksIDE4NDUxLCAxODQ2MiwgMTg0NzQsIAotICAgIDE4NDg2LCAxODQ5OCwgMTg1MTAsIDE4NTIzLCAxODUzNiwgMTg1NDksIDE4NTYyLCAxODU3NSwgMTg1ODgsIDE4NjAxLCAKLSAgICAxODYxMywgMTg2MjYsIDE4NjM5LCAxODY1MiwgMTg2NjUsIDE4Njc4LCAxODY5MSwgMTg3MDQsIDE4NzE3LCAxODczMCwgCi0gICAgMTg3NDMsIDE4NzU1LCAxODc2OCwgMTg3ODEsIDE4Nzk0LCAxODgwNywgMTg4MjAsIDE4ODMzLCAxODg0NiwgMTg4NTksIAotICAgIDE4ODcyLCAxODg4NSwgMTg4OTcsIDE4OTEwLCAxODkyMywgMTg5MzYsIDE4OTQ5LCAxODk2MiwgMTg5NzUsIDE4OTg4LCAKLSAgICAxOTAwMSwgMTkwMTQsIDE5MDI3LCAxOTAzOSwgMTkwNTIsIDE5MDY1LCAxOTA3OCwgMTkwOTEsIDE5MTA0LCAxOTExNywgCi0gICAgMTkxMzAsIDE5MTQzLCAxOTE1NiwgMTkxNjksIDE5MTgxLCAxOTE5NCwgMTkyMDcsIDE5MjIwLCAxOTIzMywgMTkyNDYsIAotICAgIDE5MjU5LCAxOTI3MiwgMTkyODUsIDE5Mjk4LCAxOTMxMSwgMTkzMjMsIDE5MzM0LCAxOTM0NywgMTkzNjAsIDE5MzczLCAKLSAgICAxOTM4NiwgMTkzOTksIDE5NDEyLCAxOTQyNSwgMTk0MzgsIDE5NDUxLCAxOTQ2NCwgMTk0NzYsIDE5NDg5LCAxOTUwMiwgCi0gICAgMTk1MTUsIDE5NTI4LCAxOTU0MSwgMTk1NTQsIDE5NTY3LCAxOTU4MCwgMTk1OTMsIDE5NjA2LCAxOTYxOCwgMTk2MzEsIAotICAgIDE5NjQ0LCAxOTY1NywgMTk2NzAsIDE5NjgzLCAxOTY5NiwgMTk3MDksIDE5NzIyLCAxOTczNSwgMTk3NDgsIDE5NzYwLCAKLSAgICAxOTc3MywgMTk3ODYsIDE5Nzk5LCAxOTgxMiwgMTk4MjUsIDE5ODM4LCAxOTg1MSwgMTk4NjQsIDE5ODc3LCAxOTg5MCwgCi0gICAgMTk5MDIsIDE5OTE1LCAxOTkyOCwgMTk5NDEsIDE5OTU0LCAxOTk2NywgMTk5ODAsIDE5OTkzLCAyMDAwNiwgMjAwMTksIAotICAgIDIwMDMyLCAyMDA0NCwgMjAwNTcsIDIwMDcwLCAyMDA4MywgMjAwOTYsIDIwMTA5LCAyMDEyMiwgMjAxMzUsIDIwMTQ4LCAKLSAgICAyMDE2MSwgMjAxNzQsIDIwMTg2LCAyMDE5OSwgMjAyMTIsIDIwMjI1LCAyMDIzOCwgMjAyNTEsIDIwMjY0LCAyMDI3NywgCi0gICAgMjAyOTAsIDIwMzAzLCAyMDMxNiwgMjAzMjgsIDIwMzQxLCAyMDM1NCwgMjAzNjcsIDIwMzgwLCAyMDM5MywgMjA0MDYsIAotICAgIDIwNDE5LCAyMDQzMiwgMjA0NDUsIDIwNDU4LCAyMDQ3MCwgMjA0ODMsIDIwNDk2LCAyMDUwOSwgMjA1MjIsIDIwNTM1LCAKLSAgICAyMDU0OCwgMjA1NjEsIDIwNTc0LCAyMDU4NywgMjA2MDAsIDIwNjEyLCAyMDYyNSwgMjA2MzgsIDIwNjUxLCAyMDY2NCwgCi0gICAgMjA2NzcsIDIwNjkwLCAyMDcwMywgMjA3MTYsIDIwNzI5LCAyMDc0MiwgMjA3NTQsIDIwNzY1LCAyMDc3MywgMjA3ODEsIAotICAgIDIwNzg4LCAyMDc5NCwgMjA3OTgsIDIwODA0LCAyMDgxMCwgMjA4MTgsIDIwODI0LCAyMDgyOSwgMjA4MzMsIDIwODQyLCAKLSAgICA5MTQ4LCAyMDg1MywgMjA4NjAsIDIwODY4LCAyMDg3NSwgMjA4ODIsIDEwOTQxLCAyMDg4OSwgMjA4OTgsIDIwOTAzLCAKLSAgICAyMDkwOCwgNzgwNSwgMjA5MTUsIDIwOTIwLCAyMDkyMywgMjA5MjgsIDIwOTM2LCAyMDk0MywgMjA5NTAsIDIwOTU3LCAKLSAgICAyMDk2MywgMjA5NzIsIDIwOTgxLCAyMDk4NywgMjA5OTYsIDIxMDAwLCAyMTAwNiwgMjEwMTEsIDIxMDIxLCAyMTAyOCwgCi0gICAgMjEwMzQsIDIxMDQyLCAyMTA0OCwgMjEwNTUsIDIxMDY1LCAyMTA3NCwgMjEwNzgsIDIxMDg1LCAyMTA4OSwgMjEwOTQsIAotICAgIDIxMTAwLCAyMTEwOCwgMjExMTIsIDIxMTIyLCAxNDQwMiwgMjExMzEsIDIxMTM3LCAyMTE0MSwgMjExNTAsIDE0NDA3LCAKLSAgICAyMTE1NiwgMjExNjMsIDIxMTc0LCAyMTE4MiwgMjExOTEsIDIxMTk5LCA4OTMxLCAyMTIwNywgMjEyMTIsIDIxMjE4LCAKLSAgICAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgOTYzMiwgMjEyNDAsIDIxMjQ4LCAyMTI1NSwgMjEyNjQsIDIxMjcxLCAKLSAgICAyMTI3OCwgMTA4NzEsIDIxMjg1LCAyMTI5MSwgMjEyOTUsIDIxMzAxLCAyMTMwOCwgMjEzMTQsIDIxMzIyLCAyMTMyOCwgCi0gICAgMjEzMzUsIDIxMzQxLCAyMTM0NywgMjEzNTYsIDIxMzYwLCAyMTM2OCwgMjEzNzcsIDIxMzg0LCAyMTM4OSwgMjEzOTMsIAotICAgIDIxNDA0LCAyMTQwOSwgMjE0MTQsIDIxNDE5LCAyMTQzMiwgNzk5NSwgMjE0MzYsIDIxNDQyLCAyMTQ1MCwgMjE0NTQsIAotICAgIDIxNDYxLCAyMTQ3MCwgMjE0NzUsIDE0Njc4LCAyMTQ4MywgMjE0ODcsIDIxNDk5LCAyMTUwNCwgMjE1MDgsIDIxNTExLCAKLSAgICAyMTUxNywgMjE1MjMsIDIxNTI4LCAyMTUzMiwgMjE1MzUsIDIxNTQ2LCAyMTU1MSwgOTM3NiwgMjE1NTgsIDIxNTYzLCAKLSAgICA5MzgxLCAyMTU2OCwgMjE1NzMsIDIxNTc4LCAyMTU4MywgMjE1ODgsIDIxNTkzLCAyMTU5OCwgMjE2MDMsIDIxNjA4LCAKLSAgICAyMTYxMywgMjE2MTgsIDIxNjIzLCAyMTYyOSwgMjE2MzQsIDIxNjM5LCAyMTY0NCwgMjE2NDksIDIxNjU0LCAyMTY1OSwgCi0gICAgMjE2NjQsIDIxNjY5LCAyMTY3NCwgMjE2ODAsIDIxNjg2LCAyMTY5MSwgMjE2OTYsIDIxNzAxLCAyMTcwNiwgMjE3MTEsIAotICAgIDIxNzE2LCAyMTcyMSwgMjE3MjYsIDIxNzMxLCAyMTczNywgMjE3NDIsIDIxNzQ3LCAyMTc1MiwgMjE3NTgsIDIxNzY0LCAKLSAgICAyMTc2OSwgMjE3NzQsIDIxNzc5LCAyMTc4NCwgMjE3ODksIDIxNzk0LCAyMTc5OSwgMjE4MDQsIDIxODEwLCAyMTgxNSwgCi0gICAgMjE4MjAsIDIxODI1LCAyMTgzMCwgMjE4MzYsIDIxODQxLCAyMTg0NiwgMjE4NTAsIDEzNjgsIDEyOSwgMjE4NTgsIDIxODYyLCAKLSAgICAyMTg2NiwgMjE4NzAsIDIxODc1LCAyMTg3OSwgMTMxMTAsIDEyNDY5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAyMTg5NywgCi0gICAgMjE5MDEsIDIxOTA2LCAyMTkxMCwgMjE5MTYsIDIxOTIxLCAyMTkyNSwgMjE5MjksIDIxOTM3LCAyMTk0MSwgMjE5NDUsIAotICAgIDIxOTUwLCAyMTk1NSwgMjE5NTksIDIxOTY1LCAyMTk3MCwgMjE5NzQsIDIxOTc5LCAyMTk4NCwgMjE5ODgsIDIxOTk1LCAKLSAgICAyMjAwMiwgMjIwMDksIDIyMDEzLCAyMjAxNywgMjIwMjIsIDIyMDI2LCAyMjAyOSwgMjIwMzUsIDIyMDQ4LCAyMjA1MywgCi0gICAgMjIwNjIsIDIyMDY3LCA5NDIxLCAyMjA3MiwgMjIwNzUsIDI3MTIsIDI3MTcsIDIyMDc5LCAyMjA4NSwgMjIwOTEsIDcyMDksIAotICAgIDIyMDk2LCAyMjEwMSwgMjIxMDYsIDIyMTEyLCAyMjExNywgMTM4OTYsIDIyMTIyLCAyMjEyNywgMjIxMzIsIDIyMTM3LCAKLSAgICAyMjE0MywgMjIxNDgsIDIyMTUzLCAyMjE1OSwgMjIxNjQsIDIyMTY4LCAyMjE3MywgMjIxNzgsIDIyMTgzLCAyMjE4OCwgCi0gICAgMjIxOTIsIDIyMTk3LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAyMjIxNiwgMjIyMjEsIDIyMjI1LCAyMjIzMCwgMjIyMzQsIAotICAgIDIyMjM5LCAyMjI0NCwgMjIyNDksIDIyMjU0LCAyODg2LCAyMjE2OSwgMjIyNTgsIDIyMjY2LCAyMjI3MywgOTcyNiwgCi0gICAgMjIyODUsIDIyMjkzLCAyMjE3NCwgMjIzMDAsIDIyMzA1LCAyMjMxMywgMjIxNzksIDIyMzE4LCAyMjMyMywgMjIzMzEsIAotICAgIDIyMzM2LCAyMjE4NCwgMjIzNDEsIDIyMzQ2LCAyMjM1MCwgMjIzNTYsIDIyMzY0LCAyMjM2NywgMjIzNzQsIDIyMzc4LCAKLSAgICAyMjM4MiwgMjIzODgsIDIyMzk1LCAyMjQwMCwgODk1OCwgMTcyNywgMTczMiwgMjI0MDQsIDIyNDEwLCAyMjQxNiwgMjI0MjEsIAotICAgIDIyNDI1LCAyMjQyOSwgMjI0MzMsIDIyNDM3LCAyMjQ0MSwgMjI0NDUsIDIyNDQ5LCAyMjQ1MiwgMjI0NTgsIDIyNDY1LCAKLSAgICAyMjQ3MywgMjI0NzksIDIyNDg1LCAyMjQ5MCwgMjI0OTUsIDIyNDk5LCAxMzgxNiwgMTM4MjMsIDIyNTA0LCAyMjUxNiwgCi0gICAgMjI1MTksIDIyNTI2LCAxNjM0OSwgMjI1MzMsIDIyNTQxLCAyMjU1MiwgMjI1NjEsIDIyNTc0LCAyMjU4NCwgMjI1OTgsIAotICAgIDIyNjEwLCAyMjYyNCwgMjI2MzYsIDIyNjQ2LCAyMjY1OCwgMjI2NjQsIDIyNjc5LCAyMjcwMywgMjI3MjEsIDIyNzQwLCAKLSAgICAyMjc1MywgMjI3NjcsIDIyNzg1LCAyMjgwMSwgMjI4MTgsIDIyODM2LCAyMjg0NywgMjI4NjYsIDIyODgzLCAyMjkwMywgCi0gICAgMjI5MjEsIDIyOTMzLCAyMjk0NywgMjI5NjEsIDIyOTczLCAyMjk5MCwgMjMwMDksIDIzMDI3LCAyMzAzOSwgMjMwNTcsIAotICAgIDIzMDc2LCAxNDU0NiwgMjMwODksIDIzMTA5LCAyMzEyMSwgMTA1MTYsIDIzMTMzLCAyMzEzOCwgMjMxNDMsIDIzMTQ4LCAKLSAgICAyMzE1NCwgMjMxNTksIDIzMTYzLCAyMzE3MCwgMjM5OCwgMjMxNzQsIDIzMTgwLCAyMzE4NCwgMjMxODcsIDIzMTkxLCAKLSAgICAyMzE5OSwgMjMyMDUsIDIyMjAyLCAyMzIwOSwgMjMyMTgsIDIzMjI5LCAyMzIzNSwgMjMyNDEsIDIzMjUwLCAyMzI1OCwgCi0gICAgMjMyNjUsIDIzMjcwLCAyMzI3NCwgMjMyODEsIDIzMjg3LCAyMzI5NiwgMjMzMDQsIDIzMzExLCAyMzMyMSwgMjMzMzAsIAotICAgIDIzMzQwLCAyMzM0NSwgMjMzNTQsIDIzMzYzLCAyMzM3NCwgMjMzODUsIDM5NjMsIDIzMzk1LCAyMzM5OSwgMjM0MDksIAotICAgIDIzNDE3LCAyMzQyNywgMjM0MzgsIDIzNDQzLCAyMzQ1MywgMjM0NjEsIDIzNDY4LCAyMzQ3NCwgMjM0ODEsIDIzNDg2LCAKLSAgICAyMjIxMiwgMjM0OTAsIDIzNDk5LCAyMzUwMywgMjM1MDYsIDIzNTExLCAyMzUxOCwgMjM1MjcsIDIzNTM1LCAyMzU0MywgCi0gICAgMjM1NTMsIDIzNTYyLCAyMzU2OCwgMjM1NzQsIDIyMjE3LCAyMjIyMiwgMjM1NzgsIDIzNTg4LCAyMzU5OCwgMjM2MDgsIAotICAgIDIzNjE2LCAyMzYyMywgMjM2MzMsIDIzNjQxLCAyMzY0OSwgMjM2NTUsIDIzNjYzLCA5MzAsIDIzNjcyLCAxNDczNywgNTQyLCAKLSAgICAyMzY4NiwgMjM2OTUsIDIzNzAzLCAyMzcxNCwgMjM3MjUsIDIzNzM1LCAyMzc0NCwgMjM3NTYsIDIzNzY1LCAyMzc3NCwgCi0gICAgMjM3ODAsIDIzNzg5LCAyMzc5OCwgMjM4MDgsIDIzODE2LCAyMzgyNCwgOTM1MywgMjM4MzAsIDIzODMzLCAyMzgzNywgCi0gICAgMjM4NDIsIDIzODQ3LCA5ODQxLCAyMjIzNSwgMjIyNDAsIDIzODU1LCAyMzg2MSwgMjM4NjcsIDIzODcyLCAyMzg3NywgCi0gICAgMjM4ODEsIDIzODg5LCAyMzg5NSwgMjM5MDEsIDIzOTA1LCAzNTI1LCAyMzkxMywgMjM5MTgsIDIzOTIzLCAyMzkyNywgCi0gICAgMjM5MzEsIDk5MjEsIDIzOTM4LCAyMzk0NiwgMjM5NjAsIDIzOTY3LCAyMzk3MywgOTkzMCwgOTkzNiwgMjM5ODEsIDIzOTg5LCAKLSAgICAyMzk5NiwgMjQwMDEsIDI0MDA2LCAyMjI0NSwgMjQwMTIsIDI0MDIzLCAyNDAyNywgMjQwMzIsIDI2MDEsIDI0MDM3LCAKLSAgICAyNDA0OCwgMjQwNTQsIDI0MDU5LCAyNDA2MywgMjQwNjcsIDI0MDcwLCAyNDA3NywgMjQwODQsIDI0MDkxLCAyNDA5NywgCi0gICAgMjQxMDEsIDIyMjUwLCAyNDEwNiwgMjQxMTAsIDI0MTE0LCAxMDM3LCAyNDExOSwgMjQxMjQsIDI0MTI5LCAyNDEzNCwgCi0gICAgMjQxMzksIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjksIDI0MTc0LCAyNDE3OSwgMjQxODQsIAotICAgIDI0MTkwLCAyNDE5NSwgMjQyMDAsIDI0MjA1LCAyNDIxMCwgMjQyMTUsIDI0MjIwLCAyNDIyNiwgMjQyMzEsIDI0MjM2LCAKLSAgICAyNDI0MSwgMjQyNDYsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY3LCAyNDI3MywgMjQyNzgsIDI0Mjg0LCAyNDI4OSwgCi0gICAgMjQyOTQsIDUsIDI0MzAwLCAyNDMwNCwgMjQzMDgsIDI0MzEyLCAyNDMxNywgMjQzMjEsIDI0MzI1LCAyNDMyOSwgMjQzMzMsIAotICAgIDI0MzM4LCAyNDM0MiwgMjQzNDcsIDI0MzUxLCAyNDM1NCwgMjQzNTgsIDI0MzYzLCAyNDM2NywgMjQzNzIsIDI0Mzc2LCAKLSAgICAyNDM4MCwgMjQzODQsIDI0Mzg5LCAyNDM5MywgMjQzOTcsIDI0NDA3LCAyNDQxMiwgMjQ0MTYsIDI0NDIwLCAyNDQyNSwgCi0gICAgMjQ0MzAsIDI0NDM5LCAyNDQ0NCwgMjQ0NDksIDI0NDUzLCAyNDQ1NywgMjQ0NzAsIDI0NDgyLCAyNDQ5MSwgMjQ1MDAsIAotICAgIDI0NTA2LCAyNDUxMSwgMjQ1MTUsIDI0NTE5LCAyNDUyOSwgMjQ1MzgsIDI0NTQ2LCAyNDU1MiwgMjQ1NTcsIDI0NTYxLCAKLSAgICAyNDU2OCwgMjQ1NzgsIDI0NTg3LCAyNDU5NSwgMjQ2MDMsIDI0NjEwLCAyNDYxOCwgMjQ2MjcsIDI0NjM2LCAyNDY0NCwgCi0gICAgMjQ2NDksIDI0NjUzLCAyNDY1NywgMjQ2NjAsIDI0NjYyLCAyNDY2NiwgMjQ2NzAsIDI0Njc1LCAyNDY4MCwgMjQ2ODQsIAotICAgIDI0Njg4LCAyNDY5MSwgMjQ2OTUsIDI0Njk4LCAyNDcwMiwgMjQ3MDUsIDI0NzA4LCAyNDcxMiwgMjQ3MTgsIDI0NzIyLCAKLSAgICAyNDcyNiwgMjQ3MzAsIDI0NzM1LCAyNDc0MCwgMjQ3NDUsIDI0NzQ5LCAyNDc1MiwgMjQ3NTcsIDI0NzYzLCAyNDc2OCwgCi0gICAgMjQ3NzQsIDI0Nzc5LCAyNDc4MywgMjQ3ODcsIDI0NzkxLCAyNDc5NiwgMjQ4MDAsIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIAotICAgIDI0ODIwLCAyNDgyNCwgMjQ4MjcsIDI0ODMxLCAyNDgzNywgMjQ4NDMsIDI0ODQ3LCAyNDg1MSwgMjQ4NTYsIDI0ODYzLCAKLSAgICAyNDg2OSwgMjQ4NzMsIDI0ODgyLCAyNDg4NiwgMjQ4OTAsIDI0ODkzLCAyNDg5OSwgMjQ5MDQsIDI0OTEwLCAxNDg5LCAKLSAgICAxNzkxLCAyNDkxNSwgMjQ5MjAsIDI0OTI1LCAyNDkzMCwgMjQ5MzUsIDI0OTQwLCAyNDk0NSwgMjE0OCwgMjE5NCwgMjQ5NTAsIAotICAgIDI0OTUzLCAyNDk1NywgMjQ5NjEsIDI0OTY2LCAyNDk3MCwgMjQ5NzQsIDI0OTc3LCAyNDk4MiwgMjQ5ODcsIDI0OTkxLCAKLSAgICAyNDk5NCwgMjQ5OTksIDI1MDAzLCAyNTAwOCwgMjUwMTIsIDE0NzQ5LCAyNTAxNywgMjUwMjAsIDI1MDIzLCAyNTAyNywgCi0gICAgMjUwMzIsIDI1MDM2LCAyNTA0OSwgMjUwNTMsIDI1MDU2LCAyNTA2NCwgMjUwNzMsIDI1MDgwLCAyNTA4NSwgMjUwOTEsIAotICAgIDI1MDk3LCAyNTEwNSwgMjUxMTIsIDI1MTE5LCAyNTEyMywgMjUxMjcsIDI1MTMxLCAyNTEzNiwgMjUxNDEsIDI1MTQ1LCAKLSAgICAyNTE1MywgMjUxNTgsIDI1MTcwLCAyNTE4MSwgMjUxODYsIDI1MTkwLCAyNTE5NCwgMjUyMDAsIDI1MjA1LCAyNTIxMCwgCi0gICAgMjUyMTQsIDI1MjE4LCAyNTIyMSwgMjUyMjcsIDc5MTUsIDIzMTYsIDI1MjMxLCAyNTIzNiwgMjUyNTIsIDk0NjgsIDI1MjcyLCAKLSAgICAyNTI4MSwgMjUyOTcsIDI1MzAxLCAyNTMwNCwgMjUzMTAsIDI1MzIwLCAyNTMyNiwgMjUzMzUsIDI1MzUwLCAyNTM2MiwgCi0gICAgMjUzNzMsIDI1MzgxLCAyNTM5MCwgMjUzOTYsIDI1NDA1LCAyNTQxNSwgMjU0MjYsIDI1NDM3LCAyNTQ0NiwgMjU0NTMsIAotICAgIDI1NDYyLCAyNTQ3MCwgMjU0NzcsIDI1NDg1LCAyNTQ5MiwgMjU0OTksIDI1NTEyLCAyNTUxOSwgMjU1MjUsIDI1NTMwLCAKLSAgICAyNTUzOSwgMjU1NDUsIDI1NTUwLCAyNTU1OCwgMjU1NjUsIDIzNDE5LCAyNTU3NywgMjU1ODksIDI1NjAzLCAyNTYxMSwgCi0gICAgMjU2MTgsIDI1NjMwLCAyNTYzOSwgMjU2NDgsIDI1NjU2LCAyNTY2NCwgMjU2NzIsIDI1Njc5LCAyNTY4OCwgMjU2OTYsIAotICAgIDI1NzA2LCAyNTcxNSwgMjU3MjUsIDI1NzM0LCAyNTc0MywgMjU3NTEsIDI1NzU2LCAyNTc2MCwgMjU3NjMsIDI1NzY3LCAKLSAgICAyNTc3MSwgMjU3NzUsIDI1Nzc5LCAyNTc4MywgMjU3ODksIDI1Nzk1LCAyNTgwMywgMTQ3OTQsIDI1ODEwLCAyNTgxNSwgCi0gICAgMjU4MjIsIDI1ODI4LCAyNTgzNSwgMTQ4MDIsIDI1ODQyLCAyNTg0NSwgMjU4NTcsIDI1ODY1LCAyNTg3MSwgMjU4NzYsIAotICAgIDI1ODgwLCA5ODcxLCAyNTg5MSwgMjU5MDEsIDI1OTEwLCAyNTkxNywgMjU5MjEsIDE0ODA3LCAyNTkyNCwgMjU5MzEsIAotICAgIDI1OTM1LCAyNTk0MSwgMjU5NDQsIDI1OTUxLCAyNTk1NywgMjU5NjQsIDI1OTcwLCAyNTk3NCwgMjU5NzksIDI1OTgzLCAKLSAgICAyNTk5MiwgMjU5OTksIDI2MDA1LCA3OTU2LCAyNjAxMiwgMjYwMjAsIDI2MDI3LCAyNjAzMywgMjYwMzgsIDI2MDQ0LCAKLSAgICAyNjA1MCwgMjYwNTgsIDI2MDYyLCAyNjA2NSwgMjYwNjcsIDI1NzY4LCAyNjA3NiwgMjYwODIsIDI2MDkyLCAyNjA5NywgCi0gICAgMjYxMDQsIDI2MTEwLCAyNjExNSwgMjYxMjAsIDI2MTI1LCAyNjEyOSwgMjYxMzQsIDI2MTQxLCAyNjE1MCwgMjYxNTQsIAotICAgIDI2MTYxLCAyNjE3MCwgMjYxNzYsIDI2MTgxLCAyNjE4NywgMjYxOTIsIDI2MTk5LCAyNjIxMCwgMjYyMTUsIDI2MjE5LCAKLSAgICAyNjIyOSwgMjYyMzUsIDI2MjM5LCAyNjI0NCwgMjYyNTQsIDI2MjYzLCAyNjI2NywgMjYyNzQsIDI2MjgyLCAyNjI4OSwgCi0gICAgMjYyOTUsIDI2MzAwLCAyNjMwOCwgMjYzMTUsIDI2MzI3LCAyNjMzNiwgMjYzNDAsIDEzMDQ2LCAyNjM0OCwgMjYzNTgsIAotICAgIDI2MzYyLCAyNTA2MCwgMjYzNzMsIDI2Mzc4LCAyNjM4MiwgMjYzODksIDI2Mzk2LCAyMTk2MSwgMjU2OTMsIDI2NDAxLCAKLSAgICAyNjQwNSwgMjY0MDgsIDIyODUzLCAyNjQxMywgMjY0MjcsIDI2NDQzLCAyNjQ2MSwgMjY0ODAsIDI2NDk3LCAyNjUxNSwgCi0gICAgMjI4NzIsIDI2NTMyLCAyNjU1MiwgMjI4ODksIDI2NTY0LCAyNjU3NiwgMTU3MzIsIDI2NTg4LCAyMjkwOSwgMjY2MDIsIAotICAgIDI2NjE0LCAxMDUyOSwgMjY2MjgsIDI2NjMzLCAyNjYzOCwgMjY2NDMsIDI2NjQ5LCAyNjY1NSwgMjY2NjEsIDI2NjY1LCAKLSAgICAyNjY3MiwgMjY2NzcsIDI2Njg3LCAyNjY5MywgMTAxNzYsIDI2Njk5LCAyNjcwMSwgMjY3MDYsIDI2NzE0LCAyNjcxOCwgCi0gICAgMjYxMzcsIDI2NzI0LCAyNjczMSwgMTE1MTcsIDExNTI3LCAyNjczOCwgMjY3NDgsIDI2NzUzLCAyNjc1NywgMjY3NjAsIAotICAgIDI2NzY2LCAyNjc3NCwgMjY3ODYsIDI2Nzk2LCAyNjgxMiwgMjY4MjUsIDI2ODM5LCAxNTc1MCwgMjY4NTMsIDI2ODYwLCAKLSAgICAyNjg2NCwgMjY4NjcsIDI2ODcyLCAyNjg3NiwgMjY4ODMsIDI2ODkwLCAyNjkwMCwgMjY5MDUsIDI2OTEwLCAyNjkxNSwgCi0gICAgMjY5MjMsIDI2OTMxLCAyNjk0MCwgMjY5NDUsIDk1NjUsIDI2OTQ5LCAyNjk1MiwgMjY5NTUsIDI2OTYwLCAyNjk2NywgCi0gICAgMjY5NzIsIDI2OTg4LCAyNjk5NiwgMjcwMDQsIDk0MTYsIDI3MDEyLCAyNzAxNywgMjcwMjEsIDI3MDI3LCAyNzAzMywgCi0gICAgMjcwMzYsIDI3MDQyLCAyNzA1NCwgMjcwNjIsIDI3MDY5LCAyNzA3NSwgMjcwODIsIDI3MDkzLCAyNzEwNywgMjcxMjAsIAotICAgIDI3MTI5LCAyNzEzOCwgMjcxNTAsIDI3MTYxLCAyNzE3MSwgMjcxODAsIDI3MTg5LCAyNzE5NywgMjcyMDgsIDc5MzgsIAotICAgIDI3MjE1LCAyNzIyMSwgMjcyMjYsIDI3MjMyLCAyNzIzOSwgMjcyNDksIDI3MjU5LCAyNzI2OCwgMjcyNzQsIDI3MjgxLCAKLSAgICAyNzI4NiwgMjcyOTMsIDI3MzAxLCAyNzMwOSwgMjczMjEsIDYyNDYsIDI3MzI4LCAyNzMzNywgMjczNDUsIDI3MzUxLCAKLSAgICAyNzM1NywgMjczNjIsIDI3MzY2LCAyNzM2OSwgMjczNzUsIDI3MzgyLCAyNzM4NywgMjczOTIsIDI3Mzk2LCAyNzQwOCwgCi0gICAgMjc0MTksIDI3NDI4LCAyNzQzNiwgMTQ5MzQsIDI3NDQxLCAyNzQ0NywgMjc0NTMsIDExNTEwLCA4NjM1LCAyNzQ1OCwgCi0gICAgMjc0NjIsIDI3NDY1LCAyNzQ2OCwgMjc0NzQsIDI3NDgyLCAyNzQ5MCwgMjc0OTQsIDI3NDk4LCAyNzUwMywgMjc1MDYsIAotICAgIDI3NTE1LCAyNzUxOSwgMjc1MjcsIDI3NTM4LCAyNzU0MiwgMjc1NDgsIDI3NTU0LCAyNzU1OCwgMjc1NjQsIDI3NTcyLCAKLSAgICAyNzU5NCwgMjc2MTgsIDI3NjI1LCAyNzYzMiwgMjc2MzgsIDI3NjQ2LCAyNzY1MiwgMjc2NTcsIDI3NjY4LCAyNzY4NiwgCi0gICAgMjc2OTMsIDI3NzAxLCAyNzcwNSwgMjc3MTQsIDI3NzI3LCAyNzczNSwgMjc3NDcsIDI3NzU4LCAyNzc2OCwgMjc3ODIsIAotICAgIDI3NzkxLCAyNzc5OSwgMjc4MTEsIDk0ODUsIDI3ODIyLCAyNzgzMywgMjc4NDUsIDI3ODU1LCAyNzg2NCwgMjc4NjksIAotICAgIDI3ODczLCAyNzg4MSwgMjc4OTEsIDI3ODk2LCAyNzkwMCwgMjc5MDMsIDI3OTA2LCAyNzkxNCwgMjc5MjIsIDI3OTMxLCAKLSAgICAyNzk0MSwgMjc5NTAsIDI3OTU2LCAyNzk3MCwgMjY2MywgMjc5OTIsIDI4MDAzLCAyODAxMiwgMjgwMjIsIDI4MDM0LCAKLSAgICAyODA0MywgMjgwNTIsIDI4MDYyLCAyODA3MCwgMjgwNzgsIDI4MDg3LCAyODA5MiwgMjgxMDMsIDI4MTA4LCAyODExOSwgCi0gICAgMjgxMjMsIDI4MTMzLCAyODE0MiwgMjgxNTAsIDI4MTYwLCAyODE3MCwgMjgxNzgsIDI4MTg3LCAyODE5NCwgMjgyMDIsIAotICAgIDI4MjA5LCAyODIxOCwgMjgyMjIsIDI4MjMwLCAyODIzNywgMjgyNDUsIDI4MjUyLCAyODI2MywgMjgyNzgsIDI4Mjg1LCAKLSAgICAyODI5MSwgMjgzMDEsIDI4MzEwLCAyODMxNiwgMjgzMjAsIDI4MzI3LCAyODMzMSwgMTQwMTgsIDI4MzM3LCAyODM0MSwgCi0gICAgMjgzNDYsIDI4MzUzLCAyODM1NywgMjgzNjEsIDI4MzY5LCAyODM3NywgMjgzODMsIDI4MzkyLCAyODM5OSwgMjg0MDQsIAotICAgIDI4NDA5LCAyODQxOSwgMjM0ODgsIDI4NDIzLCAyODQyNiwgMjg0MzEsIDI4NDM2LCAyODQ0MSwgMjg0NDYsIDI4NDUxLCAKLSAgICAyODQ1NiwgMjg0NjEsIDI4NDY2LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4OCwgMTIxOCwgNzA0LCAyODQ5MywgMjg1MDIsIAotICAgIDIzNjQsIDI4NTA5LCAyODUxNCwgMjg1MTgsIDI4NTI0LCAxMjY3LCA1NDYsIDMxOCwgMjg1MjksIDI4NTM4LCAyODU0NiwgCi0gICAgMjg1NTUsIDI4NTYzLCAyODU3NCwgMjg1ODMsIDI4NTkxLCAyODU5NSwgMjg1OTgsIDI4NjA2LCAyODYxNCwgMjg2MTksIAotICAgIDE0NzYyLCAyODYyNSwgMjg2MzEsIDI4NjM3LCA1ODcyLCAyODY0MiwgMjg2NDYsIDI4NjUyLCAyODY1NiwgMjg2NjMsIAotICAgIDE0NTUsIDI4NjY5LCAyODY3NiwgOTU3MiwgMjg2ODAsIDI4NjkwLCAyODY5OCwgMjg3MDQsIDI4NzEzLCAyODcyMSwgCi0gICAgMjg3MjcsIDI4NzM1LCAyODc0MiwgMTExMDMsIDI4NzQ4LCAyODc1NSwgMjg3NjAsIDI4NzY3LCAxNDk2LCAyMTQ3LCAKLSAgICAyODc3MywgMjg3NzksIDI4Nzg2LCAyODc5NywgMjg4MDgsIDI4ODE2LCAyODgyMywgMjg4MzMsIDI4ODQyLCAyODg1MCwgCi0gICAgMjg4NTksIDI4ODY2LCAyODg3MywgMjg4ODYsIDI4ODk3LCAxMjcyLCAyODkxNiwgMjg5MjEsIDI4OTI5LCAzNTc1LCAKLSAgICAyODkzMywgMjg5MzgsIDI4OTQyLCAxNDU5LCAyNDY4OSwgMjg5NTIsIDI4OTU2LCAyODk2MSwgMjg5NjUsIDM0OTMsIAotICAgIDI4OTcxLCAyODk3OSwgMjg5ODYsIDI4OTk3LCAyOTAwNSwgMjkwMTMsIDM1NzYsIDI3OSwgMjkwMTgsIDI5MDI2LCAyOTAzNCwgCi0gICAgMjkwNDEsIDI5MDQ3LCAyOTA1MiwgMjIxNiwgMjkwNTksIDI5MDY1LCAyNTk3NSwgMjYyMDUsIDI5MDcxLCAxMDYsIDI5MDc1LCAKLSAgICAyOTA3OSwgMjkwODUsIDYxNSwgOTMyMSwgMjkwOTAsIDI5MDk3LCAyOTEwMywgMjMyNywgMjkxMDcsIDI5MTExLCAxNTE3NCwgCi0gICAgMjkxMTQsIDI5MTE5LCAyOTEyNiwgMjkxMzIsIDI5MTM3LCAyOTE0NSwgMjkxNTIsIDI5MTU4LCAyMjMzOCwgMjkxNjIsIAotICAgIDI5MTY2LCAzNjQ2LCAxNjYxMiwgMjkxNzAsIDI5MTc1LCAyOTE3OCwgMjkxODYsIDI5MTk0LCAyOTE5OSwgMjkyMDIsIAotICAgIDI5MjA5LCAyOTIxOSwgMjkyMzEsIDI5MjM2LCAyOTI0MCwgMjkyNDgsIDI5MjU1LCAyOTI2MSwgMjkyNjgsIDI5Mjc1LCAKLSAgICAyOTI3OCwgMjkyODIsIDI5Mjg2LCAxNDYzLCAyOTI5NiwgMjkyOTgsIDI5MzAzLCAyOTMwOSwgMjkzMTUsIDI5MzIwLCAKLSAgICAyOTMyNSwgMjkzMzAsIDI5MzM1LCAyOTM0MCwgMjkzNDUsIDI5MzUwLCAyOTM1NSwgMjkzNjAsIDI5MzY1LCAyOTM3MCwgCi0gICAgMjkzNzUsIDI5MzgwLCAyOTM4NSwgMjkzOTEsIDI5Mzk3LCAyOTQwMywgMjk0MDksIDI5NDE0LCAyOTQxOSwgMjk0MjQsIAotICAgIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYyLCAyOTQ2NywgMjk0NzIsIDI5NDc3LCAKLSAgICAyOTQ4MiwgMjk0ODgsIDI5NDkzLCAyOTQ5OSwgMjk1MDQsIDI5NTA5LCAyOTUxNCwgMjk1MTksIDI5NTI1LCAyOTUzMCwgCi0gICAgMjk1MzYsIDI5NTQxLCAyOTU0NiwgMjk1NTEsIDI5NTU2LCAyOTU2MSwgMjk1NjYsIDI5NTcxLCAyOTU3NiwgMjk1ODEsIAotICAgIDI5NTg3LCAyOTU5MywgMjk1OTksIDI5NjA0LCAyOTYwOSwgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzEsIDI5NjM3LCAKLSAgICAyOTY0MywgMjk2NDksIDI5NjU1LCAyOTY2MCwgMjk2NjYsIDI5NjcxLCAyOTY3NiwgMjk2ODEsIDI5Njg2LCAyOTY5MiwgCi0gICAgMjQ0MywgMjk2OTcsIDI0NTAsIDI0NTcsIDI3NTQsIDI5NzAyLCAyNDYzLCAyNDczLCAyOTcwOCwgMjk3MTIsIDI5NzE3LCAKLSAgICAyOTcyMiwgMjk3MjgsIDI5NzMzLCAyOTczOCwgMjk3NDIsIDI5NzQ3LCAyOTc1MywgMjk3NTgsIDI5NzYzLCAyOTc2OCwgCi0gICAgMjk3NzQsIDI5Nzc5LCAyOTc4MywgMjk3ODcsIDI5NzkyLCAyOTc5NywgMjk4MDIsIDI5ODA3LCAyOTgxMiwgMjk4MTgsIAotICAgIDI5ODI0LCAyOTgyOSwgMjk4MzMsIDI5ODM4LCAyOTg0NCwgMjk4NDgsIDI5ODUzLCAyOTg1OCwgMjk4NjMsIDI5ODY4LCAKLSAgICAyOTg3MiwgMjk4NzUsIDI5ODgwLCAyOTg4NSwgMjk4OTAsIDI5ODk1LCAyOTkwMCwgMjk5MDYsIDI5OTEyLCAyOTkxNywgCi0gICAgMjk5MjIsIDI5OTI2LCAyOTkzMSwgMjk5MzYsIDI5OTQxLCAyOTk0NiwgMjk5NTEsIDI5OTU1LCAyOTk2MCwgMjk5NjUsIAotICAgIDI5OTcwLCAyOTk3NCwgMjk5NzgsIDI5OTgyLCAyOTk4NywgMjk5OTUsIDMwMDAwLCAzMDAwNiwgMzAwMTIsIDMwMDE4LCAKLSAgICAzMDAyMywgMzAwMjcsIDMwMDMwLCAzMDAzNSwgMzAwNDAsIDMwMDQ0LCAzMDA0OSwgMzAwNTMsIDMwMDU4LCAzMDA2MiwgCi0gICAgMzAwNjUsIDMwMDcwLCAxNzI4OSwgMzAwNzUsIDMwMDgwLCAzMDA4NSwgMzAwOTMsIDIxMjY3LCAyODY3MywgOTAxOSwgCi0gICAgMzAwOTgsIDMwMTAzLCAzMDEwNywgMzAxMTIsIDMwMTE2LCAzMDEyMCwgMzAxMjUsIDMwMTI5LCAzMDEzMiwgMzAxMzUsIAotICAgIDMwMTM5LCAzMDE0NCwgMzAxNDgsIDMwMTU2LCAzMDE2MCwgMzAxNjMsIDMwMTY4LCAzMDE3MiwgMzAxNzYsIDMwMTgxLCAKLSAgICAzMDE4NiwgMzAxOTAsIDMwMTk2LCAzMDIwMSwgMzAyMDYsIDMwMjEzLCAzMDIyMCwgMzAyMjQsIDMwMjI3LCAzMDIzMywgCi0gICAgMzAyNDIsIDMwMjQ5LCAzMDI1NywgMzAyNjQsIDMwMjY4LCAzMDI3MywgMzAyNzcsIDMwMjgxLCAzMDI4NywgMzAyOTMsIAotICAgIDMwMjk3LCAzMDMwMywgMzAzMDgsIDMwMzEzLCAzMDMyMCwgMzAzMjYsIDMwMzMyLCAzMDMzOCwgMzAzNDQsIDMwMzUxLCAKLSAgICAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIDMwMzg3LCAzMDM5MywgMzA0MDAsIDMwNDA2LCAzMDQxMywgCi0gICAgMzA0MTksIDMwNDI1LCAzMDQzMSwgMzA0MzcsIDMwNDQzLCAzMDQ0OSwgMzA0NTUsIDMwNDYxLCAzMDQ2NywgMTE0MTEsIAotICAgIDMwNDczLCAzMDQ3OCwgMzA0ODMsIDMwNDg2LCAzMDQ5NCwgMzA0OTksIDMwNTA4LCAzMDUxNCwgMzA1MTksIDMwNTI0LCAKLSAgICAzMDUyOSwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU1OCwgMzA1NjUsIDMwNTcyLCAzMDU3OCwgCi0gICAgMzA1ODQsIDMwNTg5LCAxNjI5MCwgMzA1OTYsIDMwNjAyLCAzMDYwOSwgMzA2MTUsIDMwNjIxLCAzMDYyNiwgMzA2MzQsIAotICAgIDMwNjM5LCAxNjA2OSwgMzA2NDMsIDMwNjQ4LCAzMDY1MywgMzA2NTksIDMwNjY0LCAzMDY2OSwgMzA2NzMsIDMwNjc4LCAKLSAgICAzMDY4MywgMzA2ODksIDMwNjk0LCAzMDY5OSwgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTcsIDMwNzIyLCAzMDcyNywgCi0gICAgMzA3MzIsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUxLCAzMDc1NSwgMzA3NTksIDE1MjgwLCAzMDc2MywgMzA3NzIsIAotICAgIDMwNzc4LCAzMDc4NCwgMzA3OTMsIDMwODAxLCAzMDgxMCwgMzA4MTgsIDMwODIzLCAzMDgyNywgMzA4MzQsIDMwODQwLCAKLSAgICAzMDg0NCwgMzA4NDcsIDMwODUyLCAzMDg2MSwgMzA4NjksIDMwODc0LCAxNDk1LCAzMDg4MCwgMzA4ODMsIDMwODg3LCAKLSAgICAyMjQxMSwgMjI0MTcsIDMwODkzLCAzMDg5NywgMzA5MDgsIDMwOTE5LCAzMDkzMCwgMzA5NDIsIDMwOTQ5LCAzMDk1NiwgCi0gICAgMzA5NjEsIDMwOTY1LCA1OTA5LCA3NTUsIDIxMjY2LCAzMDk3MywgMzA5NzgsIDMwOTgyLCAzMDk4NywgMzA5OTEsIDMwOTk3LCAKLSAgICAzMTAwMiwgMzEwMDgsIDMxMDEzLCAzMTAxOSwgMzEwMjQsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIDMxMDQ3LCAzMTA1MywgCi0gICAgMzEwNTgsIDMxMDE0LCAzMTAyMCwgMzEwNjIsIDMxMDY3LCAzMTA3MywgMzEwNzgsIDMxMDg0LCAzMTA4OSwgMzEwOTUsIAotICAgIDMxMTAwLCAzMTAyNSwgMTA0MTQsIDMxMTA0LCAzMTAzNiwgMzEwNDIsIDMxMDQ4LCAyODMxLCAzNDIzLCAzMTExMCwgCi0gICAgMzExMTMsIDMxMTE5LCAzMTEyNSwgMzExMzEsIDMxMTM4LCAzMTE0NCwgMzExNTAsIDMxMTU2LCAzMTE2MiwgMzExNjgsIAotICAgIDMxMTc0LCAzMTE4MCwgMzExODYsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNywgMzEyMjMsIDMxMjI5LCAKLSAgICAzMTIzNSwgMzEyNDEsIDMxMjQ3LCAzMTI1MCwgMzEyNTUsIDMxMjU4LCAzMTI2NSwgMzEyNzMsIDMxMjc4LCAzMTI4MywgCi0gICAgMzEyODksIDMxMjk0LCAzMTI5OSwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI1LCAzMTMzMCwgMzEzMzYsIAotICAgIDMxMzQxLCAzMTM0NywgMzEzNTMsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg2LCAKLSAgICAzMTM5MSwgMzEzOTYsIDMxNDAyLCAzMTQwOCwgMzE0MTQsIDMxNDIwLCAzMTQyNSwgMzE0MjksIDMxNDMyLCAzMTQzOCwgCi0gICAgMzE0NDQsIDMxNDUzLCAzMTQ2MSwgMzE0NjgsIDMxNDczLCAzMTQ3NywgMzE0ODEsIDMxNDg2LCAxNTEzMywgMzE0OTEsIAotICAgIDMxNDk5LCAzMTUwNSwgMzY4MywgMTM3NywgMzE1MTAsIDMxNTE0LCA4MDA1LCAzMTUyMCwgMzE1MjYsIDMxNTMzLCA4MDE0LCAKLSAgICAzMTUzNywgMzE1NDMsIDMxNTUwLCAzMTU1NiwgMzE1NjUsIDMxNTczLCAzMTU4NSwgMzE1ODksIDMxNTk2LCAzMTYwMiwgCi0gICAgMzE2MDYsIDMxNjA5LCAzMTYxOCwgMzE2MjYsIDMxMDE1LCAzMTYzMSwgMzE2NDEsIDMxNjUxLCAzMTY2MSwgMzE2NjcsIAotICAgIDMxNjcyLCAzMTY4MiwgMzE2ODcsIDMxNzAwLCAzMTcxNCwgMzE3MjUsIDMxNzM3LCAzMTc0OSwgMzE3NjMsIDMxNzc2LCAKLSAgICAzMTc4OCwgMzE4MDAsIDE0NTg3LCAzMTgxNCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzIsIDMxODM2LCAxNzgwLCAKLSAgICAyNzE1OSwgMzE4NDAsIDMxODQ1LCAzMTA2MywgMzE4NTAsIDMxODUzLCAzMTg1OCwgMzE4NjMsIDMxODY4LCAzMTg3NCwgCi0gICAgMzE4ODAsIDEwMDkxLCAzMTg4NSwgMzE4OTIsIDE1Njg0LCAzMTg5OCwgMzE5MDMsIDMxOTA4LCAzMTkxMiwgMzE5MTcsIAotICAgIDMxOTIyLCAzMTA2OCwgMzE5MjcsIDMxOTMyLCAzMTkzNywgMzE5NDMsIDMxMDc0LCAzMTk0OCwgMzE5NTEsIDMxOTU4LCAKLSAgICAzMTk2NiwgMzE5NzIsIDMxOTc4LCAzMTk4NCwgMzE5OTUsIDMyMDAwLCAzMjAwNywgMzIwMTQsIDMyMDIxLCAzMjAyOSwgCi0gICAgMzIwMzgsIDMyMDQ3LCAzMjA1MywgMzIwNTksIDMyMDY3LCAzMTA3OSwgMzIwNzIsIDMyMDc4LCAzMjA4NCwgMzEwODUsIAotICAgIDMyMDg5LCAzMjA5NCwgMzIxMDIsIDMyMTEwLCAzMjExNiwgMzIxMjMsIDMyMTI5LCAzMjEzNiwgMzIxNDMsIDMyMTQ5LCAKLSAgICAzMjE1NywgMzIxNjcsIDMyMTc0LCAzMjE3OSwgMzIxODUsIDMyMTkwLCAzMjE5NSwgMzIyMDIsIDMyMjExLCAzMjIxOSwgCi0gICAgMzIyMjQsIDMyMjMwLCAzMjIzNywgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjIsIDMyMjcxLCAyNzkzNiwgMzIyNzgsIAotICAgIDMyMjgyLCAzMjI4NywgMzIyOTYsIDMyMzAxLCAzMjMwNiwgMzIzMTEsIDEyMzk4LCAzMjMxOSwgMzIzMjQsIDMyMzI5LCAKLSAgICAzMjMzNCwgMzIzMzgsIDMyMzQzLCAzMjM0OCwgMzIzNTUsIDMyMzYwLCAzMjM2NSwgMzIzNzAsIDMxMDkwLCAyMTIwMywgCi0gICAgMzIzNzYsIDI1MTksIDI0NCwgMzIzNzksIDMyMzgyLCAzMjM4NiwgMzIzOTAsIDMyNDAwLCAzMjQwOCwgMzI0MTIsIDMyNDE5LCAKLSAgICAzMjQyNiwgMzI0MzAsIDMyNDMzLCAzMjQzOSwgMzI0NDcsIDMyNDU1LCAzMjQ1OSwgMzI0NjMsIDMyNDY2LCAzMjQ3MywgCi0gICAgMzI0NzcsIDMyNDgxLCAzMjQ4OCwgMzI0OTYsIDMxMDI2LCAzMjUwMywgMzI1MTEsIDEwMTUxLCA2NjAsIDMwOCwgMzI1MjMsIAotICAgIDMyNTI4LCAzMjUzMywgMzI1MzksIDMyNTQ0LCAzMjU0OSwgMzcwNCwgMzI1NTQsIDMyNTU3LCAzMjU2MiwgMzI1NjcsIAotICAgIDMyNTcyLCAzMjU3NywgMzI1ODIsIDMyNTg5LCAyMjUxMiwgMzI1OTQsIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE0LCAKLSAgICAzMjYyMCwgMzI2MjUsIDMyNjMxLCAzMTI2MSwgMzI2MzcsIDMyNjQyLCAzMjY0OCwgMzI2NTQsIDMyNjY0LCAzMjY2OSwgCi0gICAgMzI2NzQsIDMyNjc4LCAzMjY4MywgMzI2ODgsIDMyNjkzLCAzMjY5OCwgMzI3MTEsIDMyNzE2LCAyMjI4OSwgMTY2OTIsIAotICAgIDM3MTAsIDMyNzIwLCAzMjcyNSwgMzI3MzAsIDMyNzM2LCAzMjc0MSwgMzI3NDYsIDMyNzUwLCAzMjc1NSwgMzI3NjAsIAotICAgIDMyNzY2LCAzMjc3MSwgMzI3NzYsIDEzODIsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjc5OSwgMzI4MDQsIAotICAgIDMyODA5LCAzMjgxNCwgMzI4MjAsIDMyODI2LCAzMjgzMSwgMzI4MzUsIDMyODM5LCAzMjg0NCwgMzI4NDksIDMyODU0LCAKLSAgICAzMjg1OCwgMzI4NjYsIDMyODcwLCAzMjg3NiwgMzI4ODAsIDMyODg3LCAxNjQ4NSwgMzEwMzcsIDMyODkzLCAzMjkwMCwgCi0gICAgMzI5MDgsIDMyOTE1LCAzMjkyMSwgMzI5MzQsIDMyOTQ2LCAzMjk1MiwgMzI5NTYsIDI3NzMsIDMyOTYwLCAzMjk2NCwgCi0gICAgMzI0NjgsIDMyOTczLCAzMjk4NCwgMzI5ODksIDMyOTk0LCAzMjk5OSwgMzMwMDMsIDMzMDA4LCAyMjQyMiwgMzMwMTIsIAotICAgIDMzMDE2LCAzMzAyMSwgMzEwNDMsIDIxMjg3LCAzMzAyNSwgMzMwMzAsIDMzMDM2LCAzMzA0MSwgMzMwNDUsIDMzMDQ5LCAKLSAgICAzMzA1MiwgMzMwNTYsIDMzMDYyLCAzMzA3MywgMzMwODUsIDMxMDQ5LCAzMzA5MCwgMzMwOTMsIDMzMDk3LCAzNDcsIAotICAgIDMzMTAyLCAzMzEwNywgMzMxMTIsIDMzMTE3LCAzMzEyMiwgMzMxMjcsIDMzMTMzLCAzMzEzOCwgMzMxNDMsIDMzMTQ5LCAKLSAgICAzMzE1NCwgMzMxNjAsIDMzMTY1LCAzMzE3MSwgMzMxNzYsIDMzMTgxLCAzMzE4NiwgMzMxOTEsIDMzMTk2LCAzMzIwMSwgCi0gICAgMzMyMDYsIDMzMjExLCAzMzIxNywgMzMyMjIsIDMzMjI3LCAzMzIzMiwgMzMyMzcsIDMzMjQyLCAzMzI0NywgMzMyNTIsIAotICAgIDMzMjU4LCAzMzI2NCwgMzMyNjksIDMzMjc0LCAzMzI3OSwgMzMyODQsIDMzMjg5LCAzMzI5NCwgMzMyOTksIDMzMzA0LCAKLSAgICAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIDMzMzQ5LCAzMzM1NCwgCi0gICAgMzMzNjAsIDMxMywgMjYsIDMzMzY1LCAzMzM2OSwgMzMzNzMsIDMzMzgxLCAzMzM4NSwgMzMzODksIDMzMzkyLCAzMzM5NSwgCi0gICAgMzMzOTcsIDMzNDAyLCAzMzQwNiwgMzM0MTEsIDMzNDE1LCAzMzQyMCwgMzM0MjQsIDMzNDI5LCAzMzQzMywgMzM0MzYsIAotICAgIDMzNDM4LCAzMzQ0MiwgMzM0NDcsIDMzNDUxLCAzMzQ2MiwgMzM0NjUsIDMzNDY3LCAzMzQ3MSwgMzM0ODMsIDMzNDkyLCAKLSAgICAzMzQ5NiwgMzM1MDAsIDMzNTA2LCAzMzUxMSwgMzM1MjAsIDMzNTI2LCAzMzUzMSwgMzM1MzYsIDMzNTQwLCAzMzU0NSwgCi0gICAgMzM1NTIsIDMzNTU3LCAzMzU2MywgMzM1NjgsIDMzNTcyLCAzMzU3OSwgMjU3MDEsIDI1NzExLCAzMzU4MywgMzM1ODgsIAotICAgIDMzNTkzLCAzMzU5OCwgMzM2MDUsIDMzNjA5LCAzMzYxNiwgODExMywgMzM2MjIsIDMzNjMxLCAzMzYzOSwgMzM2NTQsIAotICAgIDMzNjY4LCAzMzY3NiwgMzM2ODcsIDMzNjk2LCAzMzcwMSwgNzIyNywgMzM3MTEsIDMzNzE2LCAzMzcyMSwgMzM3MjUsIAotICAgIDMzNzI4LCAzMzczMiwgMzM3MzcsIDMzNzQxLCAzMzc0OCwgMzM3NTMsIDMzNzU4LCA4OTEyLCAzMzc2OCwgMzM3NzAsIAotICAgIDMzNzczLCAzMzc3NywgMzM3ODMsIDMzNzg3LCAzMzc5MiwgMzM3OTcsIDMzODAzLCAzMzgwOCwgMzM4MTQsIDMzODE5LCAKLSAgICAzMzgyOSwgMzM4MzgsIDMzODQ2LCAzMzg1MSwgMzM4NTcsIDMzODYyLCAzMzg2OSwgMzM4NzMsIDMzODgxLCAzMzg4OCwgCi0gICAgMzM5MDEsIDMzOTA5LCAzMzkxMywgMzM5MjMsIDMzOTI4LCAzMzkzMiwgMzM5NDAsIDMzOTQ4LCAzMzk1MiwgMzM5NjEsIAotICAgIDMzOTY3LCAzMzk3MiwgMzM5ODAsIDMzOTkwLCAzMzk5OSwgMzQwMDgsIDM0MDE3LCAzNDAyOCwgMzQwMzYsIDM0MDQ3LCAKLSAgICAzNDA1NiwgMzQwNjMsIDM0MDY5LCAzNDA3NCwgMzQwODUsIDM0MDkwLCAzNDA5NCwgMzQwOTcsIDM0MTAxLCAzNDEwOSwgCi0gICAgMzQxMTUsIDM0MTIzLCAzNDEzMCwgMzQxMzYsIDM0MTQxLCAzNDE0NywgMjQxOCwgMzQxNTEsIDM0MTUzLCAzNDE1OCwgCi0gICAgMzQxNjMsIDM0MTY4LCAzNDE3MSwgMzQxNzMsIDM0MTc3LCAzNDE4MCwgMzQxODcsIDM0MTkxLCA5ODg0LCAzNDE5NSwgCi0gICAgMzQyMDEsIDM0MjExLCAzNDIxNiwgMzQyMjIsIDM0MjI2LCAzNDIzMSwgMzQyNDQsIDI2MDg3LCAzNDI1MCwgMzQyNTksIAotICAgIDE3NDYyLCAzNDI2NiwgMzQyNzUsIDMxNjQ3LCAzNDI4MywgMzQyODgsIDM0MjkyLCAzNDMwMCwgMzQzMDcsIDM0MzEyLCAKLSAgICAzNDMxNiwgMzQzMjEsIDM0MzI1LCAzNDMzMywgMzQzMzksIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzU3LCAzNDM2MiwgCi0gICAgMzQzNzUsIDM0MzkxLCAyMjk3OSwgMzQ0MDgsIDM0NDIwLCAzNDQzNywgMzQ0NDksIDM0NDYzLCAyMjk5NiwgMjMwMTUsIAotICAgIDM0NDc1LCAzNDQ4NywgMjY4MCwgMzQ1MDEsIDM0NTA2LCAzNDUxMSwgMzQ1MTYsIDM0NTIwLCAzNDUyNywgMzQ1MzksIAotICAgIDM0NTQ1LCAzNDU0OCwgMzQ1NTksIDM0NTcwLCAzNDU3NSwgMzIwNjQsIDY5NSwgMzQ1NzksIDM0NTgzLCAzNDU4NywgCi0gICAgMzQ1OTAsIDM0NTk1LCAzNDYwMCwgMzQ2MDYsIDM0NjExLCAzNDYxNiwgMzQ2MjIsIDM0NjI4LCAzNDYzMywgMzQ2MzcsIAotICAgIDM0NjQyLCAzNDY0NywgMzQ2NTIsIDM0NjU2LCAzNDY1OSwgMzQ2NjUsIDM0NjcwLCAzNDY3NSwgMzQ2ODAsIDM0Njg0LCAKLSAgICAzNDY4OSwgMzQ2OTUsIDM0NzAzLCAyNjMyMCwgMzQ3MDgsIDM0NzEzLCAzNDcyMCwgMzQ3MjYsIDM0NzMyLCAzNDczNywgCi0gICAgMzQ3NDUsIDIyNTIxLCAzNDc1MiwgMzQ3NTcsIDM0NzYyLCAzNDc2NywgMzQ3NzEsIDM0Nzc0LCAzNDc3OSwgMzQ3ODMsIAotICAgIDM0Nzg3LCAzNDc5NCwgMzQ4MDAsIDM0ODA2LCAzNDgxMiwgMzQ4MTksIDM0ODI0LCAzNDgzMCwgMzM5NDMsIDM0ODM0LCAKLSAgICAzNDgzOCwgMzQ4NDMsIDM0ODU2LCAzNDg2MSwgMzQ4NjcsIDM0ODc1LCAzNDg4MiwgMzQ4OTAsIDM0OTAwLCAzNDkwNiwgCi0gICAgMzQ5MTIsIDM0OTE4LCAzNDkyMiwgMzQ5MzEsIDM0OTM5LCAzNDk0NiwgMzQ5NTEsIDM0OTU2LCAxMDQzNywgMzQ5NjEsIAotICAgIDM0OTY5LCAzNDk3NiwgMzQ5ODIsIDM0OTkyLCAzNDk5NywgMzUwMDMsIDM1MDExLCAzNjA4LCAzNTAxOCwgMzUwMjUsIAotICAgIDM2MTQsIDM1MDI5LCAzNTAzNCwgMzUwNDUsIDM1MDUyLCAzNTA1OCwgMzUwNjcsIDM1MDcxLCA0MDE1LCAzNTA3NCwgCi0gICAgMzUwODEsIDM1MDg3LCAzNTA5MywgMzUxMDEsIDM1MTExLCAyOTA0MiwgMzUxMTgsIDM1MTI2LCAzNTEzMSwgMzUxMzcsIAotICAgIDM1MTQyLCAyNTk0NywgMzUxNDgsIDM1MTU1LCAzNTE2MSwgMzUxNzAsIDIzNjYwLCAzNTE3NywgMzUxODIsIDM1MTg2LCAKLSAgICAzNTE5NCwgMzUyMDIsIDk2MDAsIDU4OTUsIDM1MjA5LCAzNTIxMywgMzUyMTUsIDM1MjE5LCAzNTIyNCwgMzUyMjYsIAotICAgIDM1MjMyLCAzNTIzNywgMzUyNDIsIDM1MjQ5LCAzMjU4NSwgMzUyNTUsIDM1MjYwLCAzNTI2NCwgMzUyNjksIDM1MjczLCAKLSAgICAzNTI4MiwgMzUyODYsIDM1MjkyLCAzNTI5OSwgMzUzMDUsIDM1MzEyLCAzNTMxNywgMzUzMjYsIDM1MzMxLCAzNTMzNSwgCi0gICAgMzUzNDAsIDM1MzQ3LCAzNTM1NSwgMzUzNjMsIDM1MzY4LCAyMTM0MywgMzUzNzIsIDM1Mzc1LCAzNTM3OSwgMzUzODMsIAotICAgIDM1Mzg3LCAzNTM5MCwgMzUzOTIsIDM1NDAwLCAzNTQwNCwgMzU0MTEsIDM1NDE1LCAzNTQxOSwgMzU0MjcsIDM1NDM0LCAKLSAgICAzNTQ0NCwgMzU0NDgsIDM1NDUyLCAzNTQ2MCwgMzU0NjgsIDM1NDc0LCAzNTQ3OSwgMzU0ODgsIDEzMzUwLCAzNTQ5NCwgCi0gICAgMzU1MDMsIDM1NTA4LCAzNTUxNSwgMzU1MjMsIDM1NTMxLCAzNTUzOSwgMzU1NDYsIDM1NTUzLCAzNTU2MCwgMzU1NjcsIAotICAgIDM1NTc0LCAzNTU3OSwgMzU1ODUsIDM1NjAyLCAzNTYxMCwgMzU2MjAsIDM1NjI4LCAzNTYzNSwgNDA3LCAzNTYzOSwgCi0gICAgMzU2NDUsIDM1NjQ5LCAzNTY1NCwgMzM2OTIsIDM1NjYwLCAzNTY2MywgMzU2NjcsIDM1Njc1LCAzNjE5LCAzNTY4MywgCi0gICAgMzU2ODksIDM1Njk1LCAzNTcwNCwgMzU3MTQsIDM1NzIxLCAzNTcyNywgMzYyNSwgMzYzMSwgMzU3MzYsIDM1NzQzLCAKLSAgICAzNTc1MSwgMzU3NTYsIDM1NzYwLCAzNTc2NywgMzU3NzUsIDM1NzgyLCAzNTc4OCwgMzU3OTcsIDM1ODA3LCAzNTgxMywgCi0gICAgMzU4MjEsIDM1ODMwLCAzNTgzNywgMzU4NDUsIDM1ODUyLCAyMjAxOSwgMzU4NTYsIDM1ODYzLCAzNTg2OSwgMzU4NzksIAotICAgIDM1ODg4LCAzNTg5OSwgMzU5MDMsIDM1OTEzLCAzNTkxOSwgMzU5MjYsIDM1OTM0LCAzNTk0MywgMzU5NTIsIDM1OTYyLCAKLSAgICAzNTk3MywgMzU5ODAsIDM1OTg1LCAzNTk5MiwgMzAyOSwgMzYwMDAsIDM2MDA2LCAzNjAxMSwgMzYwMTcsIDM2MDIzLCAKLSAgICAzNjAyOCwgMzYwNDEsIDM2MDU0LCAzNjA2NywgMzYwNzQsIDM2MDgwLCAzNjA4OCwgMzYwOTYsIDM2MTAxLCAzNjEwNSwgCi0gICAgMTQ2OSwgMzYxMDksIDM2MTE0LCAzNjExOSwgMzYxMjQsIDM2MTI5LCAzNjEzNSwgMzYxNDAsIDM2MTQ1LCAzNjE1MCwgCi0gICAgMzYxNTUsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc2LCAzNjE4MiwgMzYxODcsIDM2MTkyLCAzNjE5OCwgMzYyMDMsIAotICAgIDM2MjA4LCAzNjIxMywgMzYyMTksIDM2MjI0LCAzNjIyOSwgMzYyMzQsIDM2MjM5LCAzNjI0NSwgMzYyNTAsIDM2MjU1LCAKLSAgICAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NiwgMzYyODEsIDM2Mjg2LCAzNjI5MiwgMzYyOTcsIDM2MzAzLCAzNjMwOCwgCi0gICAgMzYzMTQsIDM2MzE5LCAzNjMyNCwgMzYzMjksIDM2MzM1LCAzNjM0MSwgMzYzNDcsIDM2MzUzLCAzNjM1OSwgMzYzNjUsIAotICAgIDM2MzcxLCAzNjM3NywgMzYzODIsIDM2Mzg3LCAzNjM5MywgMzYzOTgsIDM2NDAzLCAzNjQwOCwgMzY0MTMsIDM2NDE4LCAKLSAgICAzNjQyMywgMzY0MjgsIDM2NDM0LCAzNjQzOSwgMzY0NDQsIDM2NDUwLCAzNjQ1NiwgMTAxLCAzNjQ2MSwgMzY0NjMsIAotICAgIDM2NDY3LCAzNjQ3MSwgMzY0NzUsIDM2NDgwLCAzNjQ4NCwgOTUyMSwgMzY0ODgsIDM2NDk0LCAxNzQxLCA2MjgwLCAzNjUwMCwgCi0gICAgMzY1MDMsIDM2NTA4LCAzNjUxMiwgMzY1MTcsIDM2NTIxLCAzNjUyNSwgMzY1MzAsIDEwMjM4LCAzNjUzNCwgMzY1MzgsIAotICAgIDM2NTQyLCAzNjU0NiwgMTUzNzIsIDM2NTUxLCAzNjU1NSwgMzY1NjAsIDM2NTY1LCAzNjU3MCwgMzY1NzQsIDM2NTgxLCAKLSAgICAyNjExMSwgMzY1ODcsIDM2NTkwLCAzNjU5NCwgMzY1OTksIDM2NjA1LCAzNjYwOSwgMzY2MTcsIDM2NjIzLCAzNjYyOCwgCi0gICAgMzY2MzIsIDM2NjM4LCAzNjY0MiwgMzY2NDYsIDM0NjIsIDM0NjcsIDI5MjM0LCAzNjY0OSwgMzY2NTMsIDM2NjU3LCAKLSAgICAzNjY2MSwgMzY2NjksIDM2Njc2LCAzNjY4MCwgMzY2ODcsIDM2NjkyLCAzMTcsIDM2Njk3LCAzNjcwMSwgMzY3MDcsIAotICAgIDM2NzE5LCAzNjcyNSwgMzY3MzEsIDM2NzM1LCAzNjc0MSwgMzY3NTAsIDM2NzU0LCAzNjc1OCwgMzY3NjMsIDM2NzY5LCAKLSAgICAzNjc3NCwgMzY3NzgsIDM2NzgzLCAzNjc4NywgMzY3OTEsIDM2Nzk4LCAzNjgwNCwgMzY4MDksIDM2ODI0LCAzNjgzOSwgCi0gICAgMzY4NTQsIDM2ODcwLCAzNjg4OCwgMTAxODgsIDM2OTAyLCAzNjkwOSwgMzY5MTMsIDM2OTE2LCAzNjkyNSwgMzY5MzAsIAotICAgIDM2OTM0LCAzNjk0MiwgMzM4OTQsIDM2OTUwLCAzNjk1NCwgMzY5NjQsIDM2OTc1LCAyOTIwNCwgMzY5ODgsIDM2OTkyLCAKLSAgICAzNzAwMSwgMzcwMDksIDk3NzgsIDE0OTAwLCAzNzAxMywgMjI0MzQsIDM3MDE2LCAzMDE1MiwgMzcwMjEsIDk3NzcsIAotICAgIDM3MDI2LCAzNzAzMiwgMzcwMzcsIDM3MDQzLCAzNzA0OCwgMzcwNTQsIDM3MDU5LCAzNzA2NSwgMzcwNzAsIDM3MDc2LCAKLSAgICAzNzA4MiwgMzcwODgsIDM3MDkzLCAzNzA0OSwgMzcwNTUsIDM3MDYwLCAzNzA2NiwgMzcwNzEsIDM3MDc3LCAzNzA4MywgCi0gICAgODEyNiwgMzg3NCwgMzcwOTcsIDM3MTA1LCAzNzEwOSwgMzcxMTIsIDM3MTE2LCAzNzEyMSwgMzcxMjYsIDM3MTMyLCAKLSAgICAzNzEzOCwgMzcxNDMsIDM3MTQ3LCAyNTk1OSwgMzcxNTEsIDM3MTU1LCAzNzE2MSwgMzcxNjUsIDkwNDIsIDM3MTc0LCAKLSAgICAzNzE4MSwgMzcxODUsIDExODY4LCAzNzE5MiwgMzcxOTgsIDM3MjAzLCAzNzIxMCwgMzcyMTcsIDM3MjI0LCAyODU1MCwgCi0gICAgODA0OSwgMzcyMzEsIDM3MjM4LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgMzcyNzQsIDM3MjgwLCAzNzI4NSwgCi0gICAgMzcyOTAsIDM3Mjk1LCAzNzMwMiwgMzcwNTAsIDM3MzA2LCAzNzMxNiwgMzczMjcsIDM3MzMzLCAzNzMzOCwgMzczNDMsIAotICAgIDM3MzQ4LCAzNzM1MywgMzczNTgsIDM3MzYyLCAzNzM2NiwgMzczNzIsIDM3MzgwLCAyMzE5LCA4NjUsIDEwMjU0LCAxMDI2NiwgCi0gICAgMTAyNzEsIDEwMjc3LCAzNzM4OSwgMTAyODIsIDEwMjg3LCAxMDI5MywgMzczOTQsIDM3NDA0LCAzNzQwOCwgMTAyOTgsIAotICAgIDM3NDEzLCAxNjg5MCwgMzc0MTYsIDM3NDIxLCAzNzQyNSwgMzc0MzAsIDM3NDM1LCAzNzQ0MiwgMzc0NDksIDM3NDUzLCAKLSAgICAzNzQ1NiwgMzc0NjQsIDEwMjAxLCAzNzQ3MSwgMzc0NzQsIDM3NDgwLCAzNzQ5MCwgNTkyOSwgMzc0OTksIDM3NTAzLCAKLSAgICAzNzUxMSwgMzc1MTUsIDM3NTI1LCAzNzUzMSwgMzc1NDIsIDM3NTQ4LCAzNzU1NCwgMzc1NTksIDM3NTY1LCAzNzU3MSwgCi0gICAgMzc1NzcsIDM3NTgyLCAzNzU4NSwgMzc1OTIsIDM3NTk4LCAzNzYwMywgMzc2MTAsIDM3NjE3LCAzNzYyMSwgMzc2MzEsIAotICAgIDM3NjQ0LCAzNzY1MywgMzc2NjIsIDM3NjczLCAzNzY4NiwgMzc2OTcsIDM3NzA2LCAzNzcxNywgMzc3MjIsIDM3NzMxLCAKLSAgICAzNzczNiwgMTAzMDMsIDM3NzQyLCAzNzc0OSwgMzc3NTcsIDM3NzYyLCAzNzc2NiwgMzc3NzMsIDM3NzgwLCAzODI5LCAxNiwgCi0gICAgMzc3ODQsIDM3Nzg5LCAxNjc0NCwgMzc3OTMsIDM3Nzk2LCAzNzc5OSwgMjgwNTYsIDM3ODAzLCAyODU1OSwgMzc4MTEsIAotICAgIDM3ODE1LCAzNzgxOSwgMzc4MjIsIDM3ODI4LCAzNzA3MiwgMzc4MzQsIDM3ODQyLCAzNzg0OCwgMzc4NTUsIDI4MDM5LCAKLSAgICAzNzg1OSwgMjgyMzMsIDM3ODYzLCAzNzg3MiwgMzc4NzgsIDM3ODg0LCAzNzg4OSwgMzc4OTMsIDM3ODk5LCAzNzkwMywgCi0gICAgMzc5MTEsIDM3OTE5LCAyNjE3NywgMzc5MjUsIDM3OTMyLCAzNzkzOCwgMzc5NDMsIDM3OTQ4LCAzNzk1MiwgMzc5NTgsIAotICAgIDM3OTYzLCAzNzk2OSwgNDA1NiwgNzkxLCAzNzk3NiwgMzc5ODAsIDM3OTgzLCAxNTI2MiwgMzc5OTUsIDM1ODI2LCAzODAwNiwgCi0gICAgMzgwMDksIDM4MDE2LCAzODAyMCwgMzgwMjYsIDM4MDMwLCAzODAzNiwgMzgwNDEsIDM4MDQ3LCAzODA1MiwgMzgwNTcsIAotICAgIDM4MDYxLCAzODA2NSwgMzgwNzAsIDM4MDc1LCAzODA4NSwgMzgwOTEsIDM4MTA0LCAzODExMCwgMzgxMTYsIDM4MTIzLCAKLSAgICAzODEyOCwgMzgxMzQsIDM4MTM5LCAxNjYzMCwgMTQ3MiwgMTAxOSwgMzExOTMsIDMxMTk5LCAzODE0NCwgMzEyMDUsIAotICAgIDMxMjE4LCAzMTIyNCwgMzEyMzAsIDM4MTUwLCAzMTIzNiwgMzEyNDIsIDM4MTU2LCAzODE2MiwgMjIsIDM4MTcwLCAzODE3NywgCi0gICAgMzgxODEsIDM4MTg1LCAzODE5MywgMzE5NTMsIDM4MTk3LCAzODIwMSwgMzgyMDgsIDM4MjEzLCAzODIxNywgMzgyMjIsIAotICAgIDM4MjI4LCAzODIzMywgMzgyMzksIDM4MjQ0LCAzODI0OCwgMzgyNTIsIDM4MjU2LCAzODI2MSwgMzgyNjUsIDM4MjcwLCAKLSAgICAzODI3NCwgMzgyODEsIDM4Mjg2LCAzODI5MCwgMzgyOTUsIDM4Mjk5LCAzODMwNCwgMzgzMDgsIDM4MzEzLCAzODMxOSwgCi0gICAgMTU0ODIsIDE1NDg3LCAzODMyNCwgMzgzMjgsIDM4MzMxLCAzODMzNSwgMjExNzAsIDM4MzQwLCAzODM0NCwgMzgzNTAsIAotICAgIDM4MzU3LCAzODM2MiwgMzgzNzIsIDM4Mzc3LCAzODM4NSwgMzgzODksIDM4MzkyLCAzMTk2OCwgMzgzOTYsIDQxMDksIAotICAgIDM4NDAxLCAzODQwNiwgMzg0MTAsIDM4NDE1LCAzODQxOSwgMzg0MjQsIDEzMzY4LCAzODQzNSwgMzg0MzksIDM4NDQyLCAKLSAgICAzODQ0NywgMzg0NTEsIDM4NDU1LCAzODQ1OCwgMzg0NjIsIDgxNDUsIDEzMzg0LCAzODQ2NSwgMzg0NjgsIDM4NDc0LCAKLSAgICAzODQ3OSwgMzg0ODUsIDM4NDkwLCAzODQ5NiwgMzg1MDEsIDM4NTA3LCAzODUxMiwgMzg1MTgsIDM4NTI0LCAzODUzMCwgCi0gICAgMzg1MzUsIDM4NTM5LCAzODU0MywgMzg1NTIsIDM4NTY4LCAzODU4NCwgMzg1OTQsIDI3OTQ2LCAzODYwMSwgMzg2MDUsIAotICAgIDM4NjEwLCAzODYxNSwgMzg2MTksIDM4NjIzLCAzNTk0NywgMzg2MjksIDM4NjM0LCAzODYzOCwgMzg2NDUsIDM4NjUwLCAKLSAgICAzODY1NCwgMzg2NTgsIDI2OTc5LCAzODY2NCwgMjE0MzgsIDM4NjY5LCAzODY3NiwgMzg2ODQsIDM4NjkwLCAzODY5NywgCi0gICAgMzg3MDUsIDM4NzExLCAzODcxNSwgMzg3MjEsIDM4NzI5LCAzODczMywgMzg3NDIsIDk1MDIsIDM4NzUwLCAzODc1NCwgCi0gICAgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIDM4NzgzLCAzODc4NiwgMzg3OTAsIDM4NzkzLCAzODc5NywgMzg4MDQsIAotICAgIDM4ODA5LCAzODgxNSwgMjYzOTgsIDMxMjU2LCAzODgxOSwgMzg4MjYsIDM4ODMyLCAzODgzOCwgMzg4NDMsIDM4ODQ2LCAKLSAgICAzODg0OCwgMzg4NTUsIDM4ODYyLCAzODg2OCwgMzg4NzIsIDM4ODc1LCAzODg3OSwgMzg4ODMsIDM4ODg3LCAzODg5MiwgCi0gICAgMzg4OTYsIDM4OTAwLCAzODkwMywgMzg5MDcsIDM4OTIxLCAyMzA0NSwgMzg5NDAsIDM4OTUzLCAzODk2NiwgMzg5NzksIAotICAgIDIzMDYzLCAzODk5NCwgMTA0OTAsIDM5MDA5LCAzOTAxNSwgMzkwMTksIDM5MDIzLCAzOTAzMCwgMzkwMzUsIDM5MDM5LCAKLSAgICAzOTA0NiwgMzkwNTIsIDM5MDU3LCAzOTA2MywgMzkwNzMsIDM5MDg1LCAzOTA5NiwgMzkxMDEsIDM5MTA4LCAzOTExMiwgCi0gICAgMzkxMTYsIDM5MTE5LCAxNTg3OCwgMzY3NywgMzkxMjcsIDE1NTA5LCAzOTE0MCwgMzkxNDcsIDM5MTUxLCAzOTE1NSwgCi0gICAgMzkxNjAsIDM5MTY1LCAzOTE3MSwgMzkxNzUsIDM5MTc5LCAzOTE4MiwgNzc0MiwgMTU1MjAsIDM5MTg3LCAzOTE5MSwgCi0gICAgMzkxOTcsIDM5MjA2LCAzOTIxMSwgMzkyMTgsIDM1ODAzLCAzOTIyNCwgMzkyMjksIDM5MjMzLCAzOTIzOCwgMzkyNDUsIAotICAgIDM5MjQ5LCAzOTI1MiwgMzkyNTYsIDM5MjYxLCAxNDU1MiwgMzkyNjgsIDM5Mjc1LCAxMDY2LCAzOTI3OSwgMzkyODQsIAotICAgIDM5Mjg5LCAzOTI5NSwgMzkzMDAsIDM5MzA1LCAzOTMwOSwgMzkzMTksIDM5MzI0LCAzOTMzMCwgMzkzMzUsIDM5MzQxLCAKLSAgICAzOTM0NiwgMzkzNTIsIDM5MzYyLCAzOTM2NywgMzkzNzIsIDM5Mzc2LCA3MjI5LCA3MjQxLCAzOTM4MSwgMzkzODQsIAotICAgIDM5MzkxLCAzOTM5NywgMzQwNTksIDM0MDY2LCAzOTQwNiwgMzk0MTAsIDMyMDE2LCAzOTQxOCwgMzk0MjksIDM5NDM3LCAKLSAgICAzNTk5NSwgMzk0NDQsIDM5NDQ5LCAzOTQ1NCwgMzk0NjUsIDM5NDcyLCAzOTQ4MywgMzIwNDAsIDIxNDQ0LCAzOTQ5MSwgCi0gICAgNzM1LCAzOTQ5NiwgMzk1MDIsIDI4MDMwLCAzOTUwOCwgMzk1MTMsIDM5NTIzLCAzOTUzMiwgMzk1MzksIDM5NTQ1LCAKLSAgICAzOTU0OSwgMzk1NTIsIDM5NTU5LCAzOTU2NSwgMzk1NzIsIDM5NTc4LCAzOTU4OCwgMzk1OTYsIDM5NjAyLCAzOTYwOCwgCi0gICAgMzk2MTMsIDM5NjE3LCAzOTYyNCwgMzk2MzAsIDM5NjM3LCAzODg4OCwgNTM1LCAxMzgwNSwgMzk2NDMsIDM5NjQ4LCAKLSAgICAzOTY1MSwgMzk2NTcsIDM5NjY1LCAxMzk2LCAzOTY3MCwgMzk2NzQsIDM5Njc5LCAzOTY4NiwgMzk2OTIsIDM5Njk2LCAKLSAgICAzOTcwMCwgMzk3MDUsIDM5NzE0LCAzOTcyMSwgMzk3MzEsIDM5NzM3LCAyODA3NCwgMzk3NTQsIDM5NzYzLCAzOTc3MSwgCi0gICAgMzk3NzcsIDM5NzgyLCAzOTc4OSwgMzk3OTUsIDM5ODAzLCAzOTgxMiwgMzk4MjAsIDM5ODI0LCAzOTgyOSwgMzk4MzcsIAotICAgIDMyMDQ5LCAzOTg0MywgMzk4NjIsIDE1ODExLCAzOTg3NiwgMzk4OTIsIDM5OTA2LCAzOTkxMiwgMzk5MTcsIDM5OTIyLCAKLSAgICAzOTkyNywgMzk5MzMsIDMyMDU1LCAzOTkzOCwgMzk5NDUsIDM5OTUwLCAzOTk1NCwgMzQ1LCAyOTM2LCAzOTk2MSwgMzk5NjYsIAotICAgIDM5OTcxLCAyNzMwNSwgMzk3OTIsIDM5OTc1LCAzOTk4MCwgMzk5ODgsIDM5OTkyLCAzOTk5NSwgNDAwMDEsIDQwMDA3LCAKLSAgICA0MDAxMSwgMjgxMjksIDQwMDE0LCA0MDAxOSwgNDAwMjMsIDQwMDI2LCA0MDAzMSwgNDAwMzUsIDQwMDQwLCA0MDA0NSwgCi0gICAgNDAwNDksIDQwMDU0LCA0MDA1OCwgNDAwNjIsIDIxMTY2LCAyMTE3NywgNDAwNjYsIDQwMDcxLCA0MDA3NywgMjY5MzYsIAotICAgIDQwMDgyLCA0MDA4NiwgMjEyNTMsIDE2MDU5LCA0MDA4OSwgNDAwOTQsIDQwMDk5LCA0MDEwNCwgNDAxMDksIDQwMTE0LCAKLSAgICA0MDExOSwgNDAxMjQsIDQ0NywgNDMsIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMzEzMDAsIDQwMTI5LCAKLSAgICAzMTMwNCwgNDAxMzMsIDQwMTM3LCA0MDE0MSwgMzEzMDksIDMxMzE1LCA0MDE1NSwgMzEzMjYsIDMxMzMxLCA0MDE2MywgCi0gICAgNDAxNjgsIDMxMzM3LCA0MDE3MywgNDAxNzgsIDQwMTgzLCA0MDE4OCwgNDAxOTQsIDQwMjAwLCA0MDIwNiwgMzEzNTQsIAotICAgIDQwMjE5LCA0MDIyNSwgMzEzNTgsIDQwMjI5LCAzMTM2MywgNDAyMzQsIDMxMzY4LCAzMTM3MywgNDAyMzcsIDQwMjQyLCAKLSAgICA0MDI0NiwgMzA5MjMsIDQwMjUyLCAxMzU5MiwgNDAyNTksIDQwMjY0LCAzMTM3OCwgNDAyNjgsIDQwMjczLCA0MDI3OCwgCi0gICAgNDAyODMsIDQwMjg3LCA0MDI5MiwgNDAyOTcsIDQwMzAzLCA0MDMwOCwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzAsIAotICAgIDQwMzM0LCA0MDMzOSwgNDAzNDQsIDQwMzQ5LCA0MDM1MywgNDAzNTgsIDQwMzYzLCA0MDM2OCwgNDAzNzQsIDQwMzgwLCAKLSAgICA0MDM4NiwgNDAzOTEsIDQwMzk1LCA0MDQwMCwgNDA0MDQsIDMxMzgyLCAzMTM4NywgMzEzOTIsIDQwNDA4LCA0MDQxMiwgCi0gICAgNDA0MTYsIDMxMzk3LCAzMTQwMywgMzE0MDksIDMxNDIxLCA0MDQyOCwgMjU5OTYsIDQwNDMyLCA0MDQzNiwgNDA0NDEsIAotICAgIDQwNDQ2LCA0MDQ1MSwgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgNDA0NzQsIDQwNDc5LCA0MDQ4NCwgNDA0ODgsIDQwNDkyLCAKLSAgICA0MDQ5NSwgNDA1MDMsIDMxNDY5LCA0MDUwOCwgMTQ3OSwgNDA1MTQsIDQwNTIyLCA0MDUzMSwgNDA1MzUsIDQwNTM5LCAKLSAgICA0MDU0NywgNDA1NTMsIDQwNTYxLCA0MDU3NywgNDA1ODEsIDQwNTg1LCA0MDU5MCwgNDA2MDUsIDMxNTA2LCAxNzQ5LCAKLSAgICAxMjA0OCwgNDA2MDksIDEzNzgsIDQwNjIxLCA0MDYyMiwgNDA2MzAsIDQwNjM3LCA0MDY0MiwgNDA2NDksIDQwNjU0LCAKLSAgICA5MzcyLCAxMTE0LCAxMDMyNSwgNDA2NjEsIDQwNjY2LCA0MDY2OSwgNDA2NzIsIDQwNjgxLCAxMjg2LCA0MDY4NiwgMzkwMzYsIAotICAgIDQwNjkzLCA0MDY5OCwgMjI0ODYsIDI1NTcsIDQwNzAyLCAxMDczNCwgNDA3MTIsIDQwNzE4LCAyMzM3LCAyMzQ3LCA0MDcyNywgCi0gICAgNDA3MzYsIDQwNzQ2LCA0MDc1NywgMzI5MywgMzQyMTIsIDEwMzc3LCAzODA3LCAxNjY2OCwgMTI5MSwgNDA3NjIsIDQwNzcwLCAKLSAgICA0MDc3NywgNDA3ODIsIDQwNzg2LCA0MDc5MCwgMjM4NTgsIDEwNDA0LCA0MDc5OCwgNDA4MDcsIDQwODE2LCA0MDgyNCwgCi0gICAgNDA4MzEsIDQwODQyLCA0MDg0NywgNDA4NjAsIDQwODczLCA0MDg4NSwgNDA4OTcsIDQwOTA5LCA0MDkyMiwgNDA5MzMsIAotICAgIDQwOTQ0LCA0MDk1NCwgNDA5NjIsIDQwOTcwLCA0MDk4MiwgNDA5OTQsIDQxMDA1LCA0MTAxNCwgNDEwMjIsIDQxMDI5LCAKLSAgICA0MTA0MSwgNDEwNDgsIDQxMDU3LCA0MTA2NCwgNDEwNzcsIDQxMDgyLCA0MTA5MiwgNDEwOTcsIDQxMTAzLCA0MTEwOCwgCi0gICAgMzcxODIsIDQxMTEyLCA0MTExOSwgNDExMjMsIDQxMTMwLCA0MTEzOCwgMjUxOCwgNDExNDUsIDQxMTU2LCA0MTE2NiwgCi0gICAgNDExNzUsIDQxMTgzLCA0MTE5MywgNDEyMDEsIDQxMjExLCA0MTIyMCwgNDEyMjUsIDQxMjMxLCA0MTIzNywgMzcwOSwgCi0gICAgNDEyNDgsIDQxMjU4LCA0MTI2NywgNDEyNzYsIDQxMjg2LCA0MTI5NCwgNDEzMDMsIDQxMzA4LCA0MTMxMywgNDEzMTgsIAotICAgIDE3MDUsIDM3LCA0MTMyNiwgNDEzMzQsIDQxMzQ1LCA0MTM1NiwgMTYzNDMsIDQxMzY2LCA0MTM3MCwgNDEzNzcsIDQxMzgzLCAKLSAgICA0MTM4OCwgNDEzOTIsIDQxNDAzLCA0MTQxMywgNDE0MjIsIDQxNDMzLCAxNjcxNywgMTY3MjIsIDQxNDM4LCA0MTQ0NywgCi0gICAgNDE0NTIsIDQxNDYyLCA0MTQ2NywgNDE0NzUsIDQxNDgzLCA0MTQ5MCwgNDE0OTYsIDcwNzgsIDIyOCwgNDE1MDAsIDQxNTA2LCAKLSAgICA0MTUxMSwgNDE1MTQsIDIxMTcsIDM5MTUyLCA0MTUyMiwgNDE1MjYsIDQxNTI5LCAxNTEyLCA0MTUzNSwgMTM5NjcsIDEyOTYsIAotICAgIDQxNTQwLCA0MTU1MywgNDE1NjcsIDI2NDMsIDQxNTg1LCA0MTU5NywgNDE2MDksIDI2NTcsIDI2NzQsIDQxNjIzLCA0MTYzNiwgCi0gICAgMjY4OSwgNDE2NTAsIDQxNjYyLCAyNzA0LCA0MTY3NiwgMTMwMiwgMTMwOCwgMTMxNCwgMTA2NTIsIDQxNjgxLCA0MTY4NiwgCi0gICAgNDE2OTEsIDQxNjk1LCA0MTcxMCwgNDE3MjUsIDQxNzQwLCA0MTc1NSwgNDE3NzAsIDQxNzg1LCA0MTgwMCwgNDE4MTUsIAotICAgIDQxODMwLCA0MTg0NSwgNDE4NjAsIDQxODc1LCA0MTg5MCwgNDE5MDUsIDQxOTIwLCA0MTkzNSwgNDE5NTAsIDQxOTY1LCAKLSAgICA0MTk4MCwgNDE5OTUsIDQyMDEwLCA0MjAyNSwgNDIwNDAsIDQyMDU1LCA0MjA3MCwgNDIwODUsIDQyMTAwLCA0MjExNSwgCi0gICAgNDIxMzAsIDQyMTQ1LCA0MjE2MCwgNDIxNzUsIDQyMTkwLCA0MjIwNSwgNDIyMjAsIDQyMjM1LCA0MjI1MCwgNDIyNjUsIAotICAgIDQyMjgwLCA0MjI5NSwgNDIzMTAsIDQyMzI1LCA0MjM0MCwgNDIzNTUsIDQyMzcwLCA0MjM4NSwgNDI0MDAsIDQyNDE1LCAKLSAgICA0MjQzMCwgNDI0NDUsIDQyNDYwLCA0MjQ3NSwgNDI0OTAsIDQyNTA1LCA0MjUyMCwgNDI1MzUsIDQyNTUwLCA0MjU2NSwgCi0gICAgNDI1ODAsIDQyNTk1LCA0MjYxMCwgNDI2MjUsIDQyNjQwLCA0MjY1NSwgNDI2NzAsIDQyNjg1LCA0MjcwMCwgNDI3MTUsIAotICAgIDQyNzMwLCA0Mjc0NSwgNDI3NjAsIDQyNzc1LCA0Mjc5MCwgNDI4MDUsIDQyODIwLCA0MjgzNSwgNDI4NTAsIDQyODY1LCAKLSAgICA0Mjg4MCwgNDI4OTUsIDQyOTEwLCA0MjkyNSwgNDI5NDAsIDQyOTU1LCA0Mjk3MCwgNDI5ODUsIDQzMDAwLCA0MzAxNSwgCi0gICAgNDMwMzAsIDQzMDQ1LCA0MzA2MCwgNDMwNzUsIDQzMDkwLCA0MzEwNSwgNDMxMjAsIDQzMTM1LCA0MzE1MCwgNDMxNjUsIAotICAgIDQzMTgwLCA0MzE5NSwgNDMyMTAsIDQzMjI1LCA0MzI0MCwgNDMyNTUsIDQzMjcwLCA0MzI4NSwgNDMzMDAsIDQzMzE1LCAKLSAgICA0MzMzMCwgNDMzNDUsIDQzMzYwLCA0MzM3NSwgNDMzOTAsIDQzNDA1LCA0MzQyMCwgNDM0MzUsIDQzNDUwLCA0MzQ2NSwgCi0gICAgNDM0ODAsIDQzNDk1LCA0MzUxMCwgNDM1MjUsIDQzNTQwLCA0MzU1NSwgNDM1NzAsIDQzNTg1LCA0MzYwMCwgNDM2MTUsIAotICAgIDQzNjMwLCA0MzY0NSwgNDM2NjAsIDQzNjc1LCA0MzY5MCwgNDM3MDUsIDQzNzIwLCA0MzczNSwgNDM3NTAsIDQzNzY1LCAKLSAgICA0Mzc4MCwgNDM3OTUsIDQzODEwLCA0MzgyNSwgNDM4NDAsIDQzODU1LCA0Mzg3MCwgNDM4ODUsIDQzOTAwLCA0MzkxNSwgCi0gICAgNDM5MzAsIDQzOTQ1LCA0Mzk2MCwgNDM5NzUsIDQzOTkwLCA0NDAwNSwgNDQwMjAsIDQ0MDM1LCA0NDA1MCwgNDQwNjUsIAotICAgIDQ0MDgwLCA0NDA5NSwgNDQxMTAsIDQ0MTI1LCA0NDE0MCwgNDQxNTUsIDQ0MTcwLCA0NDE4NSwgNDQyMDAsIDQ0MjE1LCAKLSAgICA0NDIzMCwgNDQyNDUsIDQ0MjYwLCA0NDI3NSwgNDQyOTAsIDQ0MzA1LCA0NDMyMCwgNDQzMzUsIDQ0MzUwLCA0NDM2NSwgCi0gICAgNDQzODAsIDQ0Mzk1LCA0NDQxMCwgNDQ0MjUsIDQ0NDQwLCA0NDQ1NSwgNDQ0NzAsIDQ0NDg1LCA0NDUwMCwgNDQ1MTUsIAotICAgIDQ0NTMwLCA0NDU0NSwgNDQ1NjAsIDQ0NTc1LCA0NDU5MCwgNDQ2MDUsIDQ0NjIwLCA0NDYzNSwgNDQ2NTAsIDQ0NjY1LCAKLSAgICA0NDY4MCwgNDQ2OTUsIDQ0NzEwLCA0NDcyNSwgNDQ3NDAsIDQ0NzU1LCA0NDc3MCwgNDQ3ODUsIDQ0ODAwLCA0NDgxNSwgCi0gICAgNDQ4MzAsIDQ0ODQ1LCA0NDg2MCwgNDQ4NzUsIDQ0ODkwLCA0NDkwNSwgNDQ5MjAsIDQ0OTM1LCA0NDk1MCwgNDQ5NjUsIAotICAgIDQ0OTgwLCA0NDk5NSwgNDUwMTAsIDQ1MDI1LCA0NTA0MCwgNDUwNTUsIDQ1MDcwLCA0NTA4NSwgNDUxMDAsIDQ1MTE1LCAKLSAgICA0NTEzMCwgNDUxNDUsIDQ1MTYwLCA0NTE3NSwgNDUxOTAsIDQ1MjA1LCA0NTIyMCwgNDUyMzUsIDQ1MjUwLCA0NTI2NSwgCi0gICAgNDUyODAsIDQ1Mjk1LCA0NTMxMCwgNDUzMjUsIDQ1MzQwLCA0NTM1NSwgNDUzNzAsIDQ1Mzg1LCA0NTQwMCwgNDU0MTUsIAotICAgIDQ1NDMwLCA0NTQ0NSwgNDU0NjAsIDQ1NDc1LCA0NTQ5MCwgNDU1MDUsIDQ1NTIwLCA0NTUzNSwgNDU1NTAsIDQ1NTY1LCAKLSAgICA0NTU4MCwgNDU1OTUsIDQ1NjEwLCA0NTYyNSwgNDU2NDAsIDQ1NjU1LCA0NTY3MCwgNDU2ODUsIDQ1NzAwLCA0NTcxNSwgCi0gICAgNDU3MzAsIDQ1NzQ1LCA0NTc2MCwgNDU3NzUsIDQ1NzkwLCA0NTgwNSwgNDU4MjAsIDQ1ODM1LCA0NTg1MCwgNDU4NjUsIAotICAgIDQ1ODgwLCA0NTg5NSwgNDU5MTAsIDQ1OTI1LCA0NTk0MCwgNDU5NTUsIDQ1OTcwLCA0NTk4NSwgNDYwMDAsIDQ2MDE1LCAKLSAgICA0NjAzMCwgNDYwNDUsIDQ2MDYwLCA0NjA3NSwgNDYwOTAsIDQ2MTA1LCA0NjEyMCwgNDYxMzUsIDQ2MTUwLCA0NjE2NSwgCi0gICAgNDYxODAsIDQ2MTk1LCA0NjIxMCwgNDYyMjUsIDQ2MjQwLCA0NjI1NSwgNDYyNzAsIDQ2Mjg1LCA0NjMwMCwgNDYzMTUsIAotICAgIDQ2MzMwLCA0NjM0NSwgNDYzNjAsIDQ2Mzc1LCA0NjM5MCwgNDY0MDUsIDQ2NDIwLCA0NjQzNSwgNDY0NTAsIDQ2NDY1LCAKLSAgICA0NjQ4MCwgNDY0OTUsIDQ2NTEwLCA0NjUyNSwgNDY1NDAsIDQ2NTU1LCA0NjU3MCwgNDY1ODUsIDQ2NjAwLCA0NjYxNSwgCi0gICAgNDY2MzAsIDQ2NjQ1LCA0NjY2MCwgNDY2NzUsIDQ2NjkwLCA0NjcwNSwgNDY3MjAsIDQ2NzM1LCA0Njc1MCwgNDY3NjUsIAotICAgIDQ2NzgwLCA0Njc5NSwgNDY4MTAsIDQ2ODI1LCA0Njg0MCwgNDY4NTUsIDQ2ODcwLCA0Njg4NSwgNDY5MDAsIDQ2OTE1LCAKLSAgICA0NjkzMCwgNDY5NDUsIDQ2OTYwLCA0Njk3NSwgNDY5OTAsIDQ3MDA1LCA0NzAyMCwgNDcwMzUsIDQ3MDUwLCA0NzA2NSwgCi0gICAgNDcwODAsIDQ3MDk1LCA0NzExMCwgNDcxMjUsIDQ3MTQwLCA0NzE1NSwgNDcxNzAsIDQ3MTg1LCA0NzIwMCwgNDcyMTUsIAotICAgIDQ3MjMwLCA0NzI0NSwgNDcyNjAsIDQ3Mjc1LCA0NzI5MCwgNDczMDUsIDQ3MzIwLCA0NzMzNSwgNDczNTAsIDQ3MzY1LCAKLSAgICA0NzM4MCwgNDczOTUsIDQ3NDEwLCA0NzQyNSwgNDc0NDAsIDQ3NDU1LCA0NzQ3MCwgNDc0ODUsIDQ3NTAwLCA0NzUxNSwgCi0gICAgNDc1MzAsIDQ3NTQ1LCA0NzU2MCwgNDc1NzUsIDQ3NTkwLCA0NzYwNSwgNDc2MjAsIDQ3NjM1LCA0NzY1MCwgNDc2NjUsIAotICAgIDQ3NjgwLCA0NzY5NSwgNDc3MTAsIDQ3NzI1LCA0Nzc0MCwgNDc3NTUsIDQ3NzcwLCA0Nzc4NSwgNDc4MDAsIDQ3ODE1LCAKLSAgICA0NzgzMCwgNDc4NDUsIDQ3ODYwLCA0Nzg3NSwgNDc4OTAsIDQ3OTA1LCA0NzkyMCwgNDc5MzUsIDQ3OTUwLCA0Nzk2NSwgCi0gICAgNDc5ODAsIDQ3OTk1LCA0ODAxMCwgNDgwMjUsIDQ4MDQwLCA0ODA1NSwgNDgwNzAsIDQ4MDg1LCA0ODEwMCwgNDgxMTUsIAotICAgIDQ4MTMwLCA0ODE0NSwgNDgxNjAsIDQ4MTc1LCA0ODE5MCwgNDgyMDUsIDQ4MjIwLCA0ODIzNSwgNDgyNTAsIDQ4MjY1LCAKLSAgICA0ODI4MCwgNDgyOTUsIDQ4MzEwLCA0ODMyNSwgNDgzNDAsIDQ4MzU1LCA0ODM3MCwgNDgzODUsIDQ4NDAwLCA0ODQxNSwgCi0gICAgNDg0MzAsIDQ4NDQ1LCA0ODQ2MCwgNDg0NzUsIDQ4NDkwLCA0ODUwNSwgNDg1MjAsIDQ4NTM1LCA0ODU1MCwgNDg1NjUsIAotICAgIDQ4NTgwLCA0ODU5NSwgNDg2MTAsIDQ4NjI1LCA0ODY0MCwgNDg2NTUsIDQ4NjcwLCA0ODY4NSwgNDg3MDAsIDQ4NzE1LCAKLSAgICA0ODczMCwgNDg3NDUsIDQ4NzYwLCA0ODc3NSwgNDg3OTAsIDQ4ODA1LCA0ODgyMCwgNDg4MzUsIDQ4ODUwLCA0ODg2NSwgCi0gICAgNDg4ODAsIDQ4ODk1LCA0ODkxMCwgNDg5MjUsIDQ4OTQwLCA0ODk1NSwgNDg5NzAsIDQ4OTg1LCA0OTAwMCwgNDkwMTUsIAotICAgIDQ5MDMwLCA0OTA0NSwgNDkwNjAsIDQ5MDc1LCA0OTA5MCwgNDkxMDUsIDQ5MTIwLCA0OTEzNSwgNDkxNTAsIDQ5MTY1LCAKLSAgICA0OTE4MCwgNDkxOTUsIDQ5MjEwLCA0OTIyNSwgNDkyNDAsIDQ5MjU1LCA0OTI3MCwgNDkyODUsIDQ5MzAwLCA0OTMxNSwgCi0gICAgNDkzMzAsIDQ5MzQ1LCA0OTM2MCwgNDkzNzUsIDQ5MzkwLCA0OTQwNSwgNDk0MjAsIDQ5NDM1LCA0OTQ1MCwgNDk0NjUsIAotICAgIDQ5NDgwLCA0OTQ5NSwgNDk1MTEsIDQ5NTI3LCA0OTU0MywgNDk1NTksIDQ5NTc1LCA0OTU5MSwgNDk2MDcsIDQ5NjIzLCAKLSAgICA0OTYzOSwgNDk2NTUsIDQ5NjcxLCA0OTY4NywgNDk3MDMsIDQ5NzE5LCA0OTczNSwgNDk3NTEsIDQ5NzY3LCA0OTc4MywgCi0gICAgNDk3OTksIDQ5ODE1LCA0OTgzMSwgNDk4NDcsIDQ5ODYzLCA0OTg3OSwgNDk4OTUsIDQ5OTExLCA0OTkyNywgNDk5NDMsIAotICAgIDQ5OTU5LCA0OTk3NSwgNDk5OTEsIDUwMDA3LCA1MDAyMywgNTAwMzksIDUwMDU1LCA1MDA3MSwgNTAwODcsIDUwMTAzLCAKLSAgICA1MDExOSwgNTAxMzUsIDUwMTUxLCA1MDE2NywgNTAxODMsIDUwMTk5LCA1MDIxNSwgNTAyMzEsIDUwMjQ3LCA1MDI2MywgCi0gICAgNTAyNzksIDUwMjk1LCA1MDMxMSwgNTAzMjcsIDUwMzQzLCA1MDM1OSwgNTAzNzUsIDUwMzkxLCA1MDQwNywgNTA0MjMsIAotICAgIDUwNDM5LCA1MDQ1NSwgNTA0NzEsIDUwNDg3LCA1MDUwMywgNTA1MTksIDUwNTM1LCA1MDU1MSwgNTA1NjcsIDUwNTgzLCAKLSAgICA1MDU5OSwgNTA2MTUsIDUwNjMxLCA1MDY0NywgNTA2NjMsIDUwNjc5LCA1MDY5NSwgNTA3MTEsIDUwNzI3LCA1MDc0MywgCi0gICAgNTA3NTksIDUwNzc1LCA1MDc5MSwgNTA4MDcsIDUwODIzLCA1MDgzOSwgNTA4NTUsIDUwODcxLCA1MDg4NywgNTA5MDMsIAotICAgIDUwOTE5LCA1MDkzNSwgNTA5NTEsIDUwOTY3LCA1MDk4MywgNTA5OTksIDUxMDE1LCA1MTAzMSwgNTEwNDcsIDUxMDYzLCAKLSAgICA1MTA3OSwgNTEwOTUsIDUxMTExLCA1MTEyNywgNTExNDMsIDUxMTU5LCA1MTE3NSwgNTExOTEsIDUxMjA3LCA1MTIyMywgCi0gICAgNTEyMzksIDUxMjU1LCA1MTI3MSwgNTEyODcsIDUxMzAzLCA1MTMxOSwgNTEzMzUsIDUxMzUxLCA1MTM2NywgNTEzODMsIAotICAgIDUxMzk5LCA1MTQxNSwgNTE0MzEsIDUxNDQ3LCA1MTQ2MywgNTE0NzksIDUxNDk1LCA1MTUxMSwgNTE1MjcsIDUxNTQzLCAKLSAgICA1MTU1OSwgNTE1NzUsIDUxNTkxLCA1MTYwNywgNTE2MjMsIDUxNjM5LCA1MTY1NSwgNTE2NzEsIDUxNjg3LCA1MTcwMywgCi0gICAgNTE3MTksIDUxNzM1LCA1MTc1MSwgNTE3NjcsIDUxNzgzLCA1MTc5OSwgNTE4MTUsIDUxODMxLCA1MTg0NywgNTE4NjMsIAotICAgIDUxODc5LCA1MTg5NSwgNTE5MTEsIDUxOTI3LCA1MTk0MywgNTE5NTksIDUxOTc1LCA1MTk5MSwgNTIwMDcsIDUyMDIzLCAKLSAgICA1MjAzOSwgNTIwNTUsIDUyMDcxLCA1MjA4NywgNTIxMDMsIDUyMTE5LCA1MjEzNSwgNTIxNTEsIDUyMTY3LCA1MjE4MywgCi0gICAgNTIxOTksIDUyMjE1LCA1MjIzMSwgNTIyNDcsIDUyMjYzLCA1MjI3OSwgNTIyOTUsIDUyMzExLCA1MjMyNywgNTIzNDMsIAotICAgIDUyMzU5LCA1MjM3NSwgNTIzOTEsIDUyNDA3LCA1MjQyMywgNTI0MzksIDUyNDU1LCA1MjQ3MSwgNTI0ODcsIDUyNTAzLCAKLSAgICA1MjUxOSwgNTI1MzUsIDUyNTUxLCA1MjU2NywgNTI1ODMsIDUyNTk5LCA1MjYxNSwgNTI2MzEsIDUyNjQ3LCA1MjY2MywgCi0gICAgNTI2NzksIDUyNjk1LCA1MjcxMSwgNTI3MjcsIDUyNzQzLCA1Mjc1OSwgNTI3NzUsIDUyNzkxLCA1MjgwNywgNTI4MjMsIAotICAgIDUyODM5LCA1Mjg1NSwgNTI4NzEsIDUyODg3LCA1MjkwMywgNTI5MTksIDUyOTM1LCA1Mjk1MSwgNTI5NjcsIDUyOTgzLCAKLSAgICA1Mjk5OSwgNTMwMTUsIDUzMDMxLCA1MzA0NywgNTMwNjMsIDUzMDc5LCA1MzA5NSwgNTMxMTEsIDUzMTI3LCA1MzE0MywgCi0gICAgNTMxNTksIDUzMTc1LCA1MzE5MSwgNTMyMDcsIDUzMjIzLCA1MzIzOSwgNTMyNTUsIDUzMjcxLCA1MzI4NywgNTMzMDMsIAotICAgIDUzMzE5LCA1MzMzNSwgNTMzNTEsIDUzMzY3LCA1MzM4MywgNTMzOTksIDUzNDE1LCA1MzQzMSwgNTM0NDcsIDUzNDYzLCAKLSAgICA1MzQ3OSwgNTM0OTUsIDUzNTExLCA1MzUyNywgNTM1NDMsIDUzNTU5LCA1MzU3NSwgNTM1OTEsIDUzNjA3LCA1MzYyMywgCi0gICAgNTM2MzksIDUzNjU1LCA1MzY3MSwgNTM2ODcsIDUzNzAzLCA1MzcxOSwgNTM3MzUsIDUzNzUxLCA1Mzc2NywgNTM3ODMsIAotICAgIDUzNzk5LCA1MzgxNSwgNTM4MzEsIDUzODQ3LCA1Mzg2MywgNTM4NzksIDUzODk1LCA1MzkxMSwgNTM5MjcsIDUzOTQzLCAKLSAgICA1Mzk1OSwgNTM5NzUsIDUzOTkxLCA1NDAwNywgNTQwMjMsIDU0MDM5LCA1NDA1NSwgNTQwNzEsIDU0MDg3LCA1NDEwMywgCi0gICAgNTQxMTksIDU0MTM1LCA1NDE1MSwgNTQxNjcsIDU0MTgzLCA1NDE5OSwgNTQyMTUsIDU0MjMxLCA1NDI0NywgNTQyNjMsIAotICAgIDU0Mjc5LCA1NDI5NSwgNTQzMTEsIDU0MzI3LCA1NDM0MywgNTQzNTksIDU0Mzc1LCA1NDM5MSwgNTQ0MDcsIDU0NDIzLCAKLSAgICA1NDQzOSwgNTQ0NTUsIDU0NDcxLCA1NDQ4NywgNTQ1MDMsIDU0NTE5LCA1NDUzNSwgNTQ1NTEsIDU0NTY3LCA1NDU4MywgCi0gICAgNTQ1OTksIDU0NjE1LCA1NDYzMSwgNTQ2NDcsIDU0NjYzLCA1NDY3OSwgNTQ2OTUsIDU0NzExLCA1NDcyNywgNTQ3NDMsIAotICAgIDU0NzU5LCA1NDc3NSwgNTQ3OTEsIDU0ODA3LCA1NDgyMywgNTQ4MzksIDU0ODU1LCA1NDg3MSwgNTQ4ODcsIDU0OTAzLCAKLSAgICA1NDkxOSwgNTQ5MzUsIDU0OTUxLCA1NDk2NywgNTQ5ODMsIDU0OTk5LCA1NTAxNSwgNTUwMzEsIDU1MDQ3LCA1NTA2MywgCi0gICAgNTUwNzksIDU1MDk1LCA1NTExMSwgNTUxMjcsIDU1MTQzLCA1NTE1OSwgNTUxNzUsIDU1MTkxLCA1NTIwNywgNTUyMjMsIAotICAgIDU1MjM5LCA1NTI1NSwgNTUyNzEsIDU1Mjg3LCA1NTMwMywgNTUzMTksIDU1MzM1LCA1NTM1MSwgNTUzNjcsIDU1MzgzLCAKLSAgICA1NTM5OSwgNTU0MTUsIDU1NDMxLCA1NTQ0NywgNTU0NjMsIDU1NDc5LCA1NTQ5NSwgNTU1MTEsIDU1NTI3LCA1NTU0MywgCi0gICAgNTU1NTksIDU1NTc1LCA1NTU5MSwgNTU2MDcsIDU1NjIzLCA1NTYzOSwgNTU2NTUsIDU1NjcxLCA1NTY4NywgNTU3MDMsIAotICAgIDU1NzE5LCA1NTczNSwgNTU3NTEsIDU1NzY3LCA1NTc4MywgNTU3OTksIDU1ODE1LCA1NTgzMSwgNTU4NDcsIDU1ODYzLCAKLSAgICA1NTg3OSwgNTU4OTUsIDU1OTExLCA1NTkyNywgNTU5NDMsIDU1OTU5LCA1NTk3NSwgNTU5OTEsIDU2MDA3LCA1NjAyMywgCi0gICAgNTYwMzksIDU2MDU1LCA1NjA3MSwgNTYwODcsIDU2MTAzLCA1NjExOSwgNTYxMzUsIDU2MTUxLCA1NjE2NywgNTYxODMsIAotICAgIDU2MTk5LCA1NjIxNSwgNTYyMzEsIDU2MjQ3LCA1NjI2MywgNTYyNzksIDU2Mjk1LCA1NjMxMSwgNTYzMjcsIDU2MzQzLCAKLSAgICA1NjM1OSwgNTYzNzUsIDU2MzkxLCA1NjQwNywgNTY0MjMsIDU2NDM5LCA1NjQ1NSwgNTY0NzEsIDU2NDg3LCA1NjUwMywgCi0gICAgNTY1MTksIDU2NTM1LCA1NjU1MSwgNTY1NjcsIDU2NTgzLCA1NjU5OSwgNTY2MTUsIDU2NjMxLCA1NjY0NywgNTY2NjMsIAotICAgIDU2Njc5LCA1NjY5NSwgNTY3MTEsIDU2NzI3LCA1Njc0MywgNTY3NTksIDU2Nzc1LCA1Njc5MSwgNTY4MDcsIDU2ODIzLCAKLSAgICA1NjgzOSwgNTY4NTUsIDU2ODcxLCA1Njg4NywgNTY5MDMsIDU2OTE5LCA1NjkzNSwgNTY5NTEsIDU2OTY3LCA1Njk4MywgCi0gICAgNTY5OTksIDU3MDE1LCA1NzAzMSwgNTcwNDcsIDU3MDYzLCA1NzA3OSwgNTcwOTUsIDU3MTExLCA1NzEyNywgNTcxNDMsIAotICAgIDU3MTU5LCA1NzE3NSwgNTcxOTEsIDU3MjA3LCA1NzIyMywgNTcyMzksIDU3MjU1LCA1NzI3MSwgNTcyODcsIDU3MzAzLCAKLSAgICA1NzMxOSwgNTczMzUsIDU3MzUxLCA1NzM2NywgNTczODMsIDU3Mzk5LCA1NzQxNSwgNTc0MzEsIDU3NDQ3LCA1NzQ2MywgCi0gICAgNTc0NzksIDU3NDk1LCA1NzUxMSwgNTc1MjcsIDU3NTQzLCA1NzU1OSwgNTc1NzUsIDU3NTkxLCA1NzYwNywgNTc2MjMsIAotICAgIDU3NjM5LCA1NzY1NSwgNTc2NzEsIDU3Njg3LCA1NzcwMywgNTc3MTksIDU3NzM1LCA1Nzc1MSwgNTc3NjcsIDU3NzgzLCAKLSAgICA1Nzc5OSwgNTc4MTUsIDU3ODMxLCA1Nzg0NywgNTc4NjMsIDU3ODc5LCA1Nzg5NSwgNTc5MTEsIDU3OTI3LCA1Nzk0MywgCi0gICAgNTc5NTksIDU3OTc1LCA1Nzk5MSwgNTgwMDcsIDU4MDIzLCA1ODAzOSwgNTgwNTUsIDU4MDcxLCA1ODA4NywgNTgxMDMsIAotICAgIDU4MTE5LCA1ODEzNSwgNTgxNTEsIDU4MTY3LCA1ODE4MiwgMTY3NDksIDU4MTkxLCA1ODE5NywgNTgyMDMsIDU4MjEzLCAKLSAgICA1ODIyMSwgMTQ4ODEsIDE1NDMyLCA5OTUzLCA1ODIzNCwgMTUyMCwgNTgyNDIsIDM3NjEsIDI3NDE1LCA3MTgzLCA1ODI0OCwgCi0gICAgNTgyNTMsIDU4MjU4LCA1ODI2MywgNTgyNjgsIDU4Mjc0LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5NiwgNTgzMDEsIAotICAgIDU4MzA2LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzIsIDU4MzM3LCA1ODM0MiwgNTgzNDcsIDU4MzUyLCAKLSAgICA1ODM1NywgNTgzNjMsIDU4MzY4LCA1ODM3NCwgNTgzODEsIDI1NjEsIDU4Mzg2LCA1ODM5MiwgODUyNiwgNTgzOTYsIAotICAgIDU4NDAxLCA1ODQwOCwgNTg0MTYsIDQwLCA1ODQyMCwgNTg0MjYsIDU4NDMxLCA1ODQzNiwgNTg0NDAsIDU4NDQ1LCA1ODQ0OSwgCi0gICAgNTg0NTMsIDEwNjc3LCA1ODQ1NywgNTg0NjcsIDU4NDgwLCA1ODQ5MSwgNTg1MDQsIDU4NTExLCA1ODUxNywgNTg1MjIsIAotICAgIDU4NTI4LCA1ODUzNCwgNTg1NDAsIDU4NTQ1LCA1ODU1MCwgNTg1NTUsIDU4NTYwLCA1ODU2NCwgNTg1NjksIDU4NTc0LCAKLSAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5NywgNTg2MDIsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgCi0gICAgNTg2MzAsIDU4NjM1LCA1ODYzOSwgMTA2OTMsIDEwNzA0LCAxMDcwOSwgMTU2MywgNTg2NDMsIDE1NjgsIDU4NjQ5LCAKLSAgICAxNjIyNiwgNTg2NTIsIDU4NjU4LCAxNTk5LCA1ODY2NCwgMTYwNSwgMTYxMSwgMTA3MzksIDU4NjY5LCA1ODY3NywgNTg2ODQsIAotICAgIDU4Njg4LCA1ODY5NCwgNTg2OTksIDMwOTUyLCA1ODcwNCwgNTg3MTEsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDE2MTYsIAotICAgIDE2MzE4LCA1ODczMywgNTg3MzcsIDE2MzI5LCAxMTIwLCA1ODc0MSwgNTg3NDgsIDU4NzUzLCA1ODc1NywgMTYzNTQsIAotICAgIDE2MjAsIDM3MzIxLCA1ODc2MCwgNTg3NjUsIDU4Nzc1LCA1ODc4NCwgNTg3ODksIDU4NzkzLCA1ODc5OSwgMTYyNSwgCi0gICAgMzkyMzAsIDU4ODA0LCA1ODgxMywgNTg4MTksIDU4ODI0LCAxMDg5NywgMTA5MDMsIDU4ODMwLCA1ODg0MiwgNTg4NTksIAotICAgIDU4ODc2LCA1ODg5MywgNTg5MTAsIDU4OTI3LCA1ODk0NCwgNTg5NjEsIDU4OTc4LCA1ODk5NSwgNTkwMTIsIDU5MDI5LCAKLSAgICA1OTA0NiwgNTkwNjMsIDU5MDgwLCA1OTA5NywgNTkxMTQsIDU5MTMxLCA1OTE0OCwgNTkxNjUsIDU5MTgyLCA1OTE5OSwgCi0gICAgNTkyMTYsIDU5MjMzLCA1OTI1MCwgNTkyNjcsIDU5Mjg0LCA1OTMwMSwgNTkzMTgsIDU5MzM1LCA1OTM1MiwgNTkzNjksIAotICAgIDU5Mzg2LCA1OTQwMywgNTk0MjAsIDU5NDM3LCA1OTQ1NCwgNTk0NzEsIDU5NDg4LCA1OTUwNSwgNTk1MjIsIDU5NTM5LCAKLSAgICA1OTU1NiwgNTk1NzMsIDU5NTkwLCA1OTYwNywgNTk2MjQsIDU5NjQxLCA1OTY1OCwgNTk2NzUsIDU5Njg2LCA1OTY5MSwgCi0gICAgMTYzMCwgNTk2OTUsIDU5NzAxLCA1OTcwNiwgNTk3MTEsIDkzMTksIDE2MzUsIDU5NzE3LCA1OTcyNiwgMjc3MTAsIDU5NzMxLCAKLSAgICA1OTc0MiwgNTk3NTIsIDU5NzU3LCA1OTc2NCwgNTk3NzAsIDU5Nzc1LCA1OTc4MCwgMTY2MDYsIDU5Nzg0LCAxMDkxNCwgCi0gICAgMTY0MCwgMTA5MTksIDU5NzkwLCA1OTc5NSwgNTk4MDEsIDU5ODA2LCA1OTgxMSwgNTk4MTYsIDU5ODIxLCA1OTgyNiwgCi0gICAgNTk4MzEsIDU5ODM2LCA1OTg0MiwgNTk4NDgsIDU5ODU0LCA1OTg1OSwgNTk4NjMsIDU5ODY4LCA1OTg3MywgNTk4NzcsIAotICAgIDU5ODgyLCA1OTg4NywgNTk4OTIsIDU5ODk2LCA1OTkwMSwgNTk5MDcsIDU5OTEyLCA1OTkxNywgNTk5MjEsIDU5OTI2LCAKLSAgICA1OTkzMSwgNTk5MzcsIDU5OTQyLCA1OTk0NywgNTk5NTMsIDU5OTU5LCA1OTk2NCwgNTk5NjgsIDU5OTczLCA1OTk3OCwgCi0gICAgNTk5ODMsIDU5OTg3LCA1OTk5MiwgNTk5OTcsIDYwMDAyLCA2MDAwOCwgNjAwMTQsIDYwMDE5LCA2MDAyMywgNjAwMjcsIAotICAgIDYwMDMyLCA2MDAzNywgNjAwNDIsIDI5MTA4LCA2MDA0NiwgNjAwNTEsIDYwMDU2LCA2MDA2MiwgNjAwNjcsIDYwMDcyLCAKLSAgICA2MDA3NiwgNjAwODEsIDYwMDg2LCA2MDA5MiwgNjAwOTcsIDYwMTAyLCA2MDEwOCwgNjAxMTQsIDYwMTE5LCA2MDEyMywgCi0gICAgNjAxMjgsIDYwMTMzLCA2MDEzNywgNjAxNDIsIDYwMTQ3LCA2MDE1MiwgNjAxNTgsIDYwMTY0LCA2MDE2OSwgNjAxNzMsIAotICAgIDYwMTc4LCA2MDE4MywgNjAxODcsIDYwMTkyLCA2MDE5NywgNjAyMDIsIDYwMjA2LCA2MDIwOSwgMzE2MTQsIDYwMjE0LCAKLSAgICA2MDIyMiwgMTY2NzIsIDM2NjMsIDExMDEwLCA2MDIyOCwgNjAyMzgsIDYwMjUzLCAxMTAxNSwgNjAyNjQsIDYwMjY5LCAKLSAgICA2MDI4MCwgNjAyOTIsIDYwMzA0LCA2MDMxNiwgMjY5NSwgNjAzMjgsIDYwMzMzLCA2MDM0NSwgNjAzNDksIDYwMzU1LCAKLSAgICA2MDM2MSwgNjAzNjYsIDE2NTIsIDEwNjcsIDYwMzc1LCA2MDM4MCwgMzkyODAsIDYwMzg0LCA2MDM4OCwgNjAzOTMsIAotICAgIDYwMzk3LCAxNjc1NywgNjA0MDIsIDYwNDA1LCA2MDQxMywgNjA0MjEsIDE2NTYsIDExMDQwLCAxMTA0NiwgMTY2MSwgCi0gICAgNjA0MjksIDYwNDM2LCA2MDQ0MSwgNjA0NTAsIDYwNDYwLCA2MDQ2NywgNjA0NzIsIDYwNDc3LCAxNjY2LCA2MDQ4NCwgCi0gICAgNjA0ODksIDE2ODcyLCA2MDQ5MywgNjA0OTgsIDYwNTA1LCA2MDUxMSwgNjA1MTUsIDYwNTI2LCA2MDUzNiwgMTY4OTQsIAotICAgIDkyMjcsIDkyMzQsIDE2NzEsIDYwNTQzLCA2MDU0OSwgNjA1NTcsIDYwNTY0LCA2MDU3MCwgNjA1NzcsIDYwNTg5LCA2MDU5NSwgCi0gICAgNjA2MDAsIDYwNjEyLCA2MDYyMywgNjA2MzIsIDYwNjQyLCAzNzQwLCAzMDc4OCwgMzA3OTcsIDE2OTM0LCAxNjc2LCAxNjgwLCAKLSAgICA2MDY1MCwgNjA2NjEsIDYwNjY2LCAxNjgzLCA2MDY3NCwgNjA2NzksIDE2OTg1LCA2MDY5MSwgNjA2OTcsIDYwNzAyLCAKLSAgICA2MDcxMCwgMTY4OCwgNjA3MTUsIDYwNzIwLCA2MDcyOCwgNjA3MzYsIDYwNzQzLCA2MDc1MiwgNjA3NjAsIDYwNzY5LCAKLSAgICAxNjkzLCA2MDc3MywgMTY5OCwgNjA3NzgsIDYwNzg1LCAxNzA1OSwgNjA3OTMsIDYwNzk5LCA2MDgwNCwgNjA4MTIsIAotICAgIDYwODE5LCA2MDgyNywgMjI1NTcsIDYwODMyLCAxMTE3NSwgNjA4NDEsIDYwODQ3LCA2MDg1NCwgNjA4NjEsIDYwODY3LCAKLSAgICA2MDg3NywgNjA4ODMsIDYwODg4LCA2MDg5OSwgNjA5MDQsIDYwOTEyLCAxMTE4NCwgMTExODksIDYwOTIwLCA2MDkyNiwgCi0gICAgNjA5MzQsIDM4MDUsIDE3MTAxLCAzOTM2OCwgNjA5MzksIDYwOTQ1LCA2MDk1MCwgNjA5NTgsIDYwOTY1LCAxMjAyOSwgCi0gICAgNjA5NzAsIDYwOTc2LCAxNzA5LCA2MDk4MSwgNjA5ODQsIDExMjcsIDYwOTkwLCA2MDk5NSwgNjEwMDAsIDYxMDA2LCAKLSAgICA2MTAxMSwgNjEwMTYsIDYxMDIxLCA2MTAyNiwgNjEwMzEsIDYxMDM2LCAxNzE4LCA5LCA2MTA0MiwgNjEwNDYsIDYxMDUxLCAKLSAgICA2MTA1NSwgNjEwNTksIDYxMDYzLCAzMTg1NCwgNjEwNjgsIDYxMDczLCA2MTA3OCwgNjEwODIsIDYxMDg1LCA2MTA4OSwgCi0gICAgNjEwOTMsIDYxMDk4LCA2MTEwMiwgNjExMDcsIDYxMTExLCAzNDU5MSwgMzQ1OTYsIDM0NjAxLCA2MTExNCwgNjExMjEsIAotICAgIDYxMTI3LCAzOTA4OSwgNjExMzcsIDM0NjA3LCAzMjExMiwgMzE4NjksIDMxODc1LCAzNDYyMywgMzE4ODEsIDYxMTQyLCAKLSAgICA2MTE0NywgMzIxNDUsIDYxMTUxLCA2MTE1NCwgNjExNTgsIDYxMTY1LCA2MTE2OCwgNjExNzMsIDYxMTc3LCA2MTE4MSwgCi0gICAgNjExODQsIDYxMTk0LCA2MTIwNiwgNjEyMTMsIDYxMjE5LCA2MTIyNiwgMzM1NDgsIDYxMjI5LCA4NTQzLCA4NzcsIDYxMjMyLCAKLSAgICA2MTIzNiwgNjEyNDEsIDM2OTAsIDYxMjQ1LCA2MTI0OCwgMTM2MjUsIDYxMjU1LCA2MTI2MiwgNjEyNzUsIDYxMjgzLCAKLSAgICA2MTI5MiwgNjEzMDEsIDYxMzA2LCA2MTMxNiwgNjEzMjksIDYxMzQxLCA2MTM0OCwgNjEzNTMsIDYxMzYyLCA2MTM3NSwgCi0gICAgMzYwMzUsIDYxMzkzLCA2MTM5OCwgNjE0MDUsIDYxNDExLCA2NTIsIDYxNDE2LCA2MTQyNCwgNjE0MzEsIDI3MjU0LCA2MjcsIAotICAgIDYxNDM3LCA2MTQ0MywgNjE0NTMsIDYxNDU5LCA2MTQ2NCwgMzE4OTksIDYwMDMsIDMxOTEzLCA2MTQ2OCwgNjE0NzgsIAotICAgIDYxNDgzLCA2MTQ5MywgNjE1MDgsIDYxNTE0LCA2MTUyMCwgMzE5MjMsIDYxNTI1LCAzMTA2OSwgNjE1MjksIDYxNTM0LCAKLSAgICA2MTUzOSwgNjE1NDMsIDYxNTQ4LCAxNjkzNywgNjE1NTUsIDYxNTYwLCA2MTU2NCwgNjA0NCwgMzE5NDksIDYxNTY4LCAKLSAgICA2MTU3NCwgMzEyLCA2MTU4NCwgNjE1OTEsIDYxNTk4LCA2MTYwMywgNjE2MTIsIDU4NzY5LCA2MTYxOCwgNjE2MjYsIAotICAgIDYxNjMwLCA2MTYzNCwgNjE2MzgsIDYxNjQyLCA2MTY0NywgNjE2NTEsIDYxNjU3LCA2MTY2NSwgNjE2NzAsIDYxNjc1LCAKLSAgICA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5MiwgNjE2OTgsIDYxNzA0LCA2MTcwOSwgNjE3MTMsIDMyMDczLCA2MTcxOCwgCi0gICAgMzIwNzksIDMyMDg1LCA2MTcyMywgNjE3MjksIDYxNzM2LCA2MTc0MSwgNjE3NDUsIDMxMDg2LCAxNjU5OSwgNjE3NDgsIAotICAgIDYxNzUyLCA2MTc1NywgNjE3NjQsIDYxNzcwLCA2MTc3NCwgNjE3NzksIDM4Nzk5LCA2MTc4NSwgNjE3ODksIDYxNzkzLCAKLSAgICA2MTc5OCwgNjE4MDQsIDYxODEwLCA2MTgyMiwgNjE4MzEsIDYxODQxLCA2MTg0NywgNjE4NTQsIDYxODU5LCA2MTg2NCwgCi0gICAgNjE4NjgsIDYxODcxLCA2MTg3NywgNjE4ODQsIDYxODg5LCA2MTg5NCwgNjE5MDEsIDYxOTA4LCA2MTkxNCwgNjE5MTksIAotICAgIDYxOTI0LCA2MTkzMiwgMzIwOTAsIDI0MjMsIDYxOTM3LCA2MTk0MiwgNjE5NDgsIDYxOTUzLCA2MTk1OSwgNjE5NjQsIAotICAgIDYxOTY5LCA2MTk3NCwgNjE5ODAsIDMyMTExLCA2MTk4NSwgNjE5OTEsIDYxOTk3LCA2MjAwMywgMzIxNzUsIDYyMDA4LCAKLSAgICA2MjAxMywgNjIwMTgsIDMyMTg2LCA2MjAyMywgNjIwMjgsIDYyMDMzLCA2MjAzOSwgNjIwNDUsIDMyMTkxLCA2MjA1MCwgCi0gICAgNjIwNTUsIDYyMDYwLCAzMjI0NiwgMzIyNTIsIDYyMDY1LCA2MjA3MCwgMzIyNTcsIDYyMDc1LCAyNzkzNywgMzIyNzksIAotICAgIDMyMjgzLCA2MjA4MCwgNjIwNTYsIDYyMDg0LCA2MjA5MiwgNjIwOTgsIDYyMTA2LCA2MjExMywgNjIxMTksIDYyMTI5LCAKLSAgICA2MjEzNSwgNjIxNDIsIDEwNjI0LCAzMjI5NywgNjIxNDgsIDYyMTYxLCA2MjE3MCwgNjIxNzYsIDYyMTg1LCA2MjE5MSwgCi0gICAgMjM0OTUsIDYyMTk4LCA2MjIwNSwgNjIyMTUsIDMyMjQ3LCA2MjIxOCwgNjIyMjUsIDYyMjMwLCA2MjIzNCwgNjIyMzgsIAotICAgIDYyMjQzLCA2MTIwLCA2MjI0NywgNjIyNTIsIDYyMjU3LCAzNDY4NSwgMzQ2OTAsIDYyMjYxLCAzNDcwNCwgNjIyNjYsIAotICAgIDM0NzA5LCA2MjI3MSwgNjIyNzcsIDM0NzIxLCAzNDcyNywgMzQ3MzMsIDYyMjgyLCA2MjI4OCwgMjI1MjIsIDYyMjk5LCAKLSAgICA2MjMwMiwgNjIzMTQsIDYyMzIyLCAzMjMyMCwgNjIzMjYsIDYyMzM1LCA2MjM0NSwgNjIzNTQsIDMyMzMwLCA2MjM1OSwgCi0gICAgNjIzNjYsIDYyMzc1LCA2MjM4MSwgNjIzODksIDYyMzk2LCA2MDk1LCA0Mzk3LCA2MjQwMSwgMzIyNTgsIDYyNDA3LCAKLSAgICA2MjQxMCwgNjI0MTYsIDYyNDIzLCA2MjQyOCwgNjI0MzMsIDIzNDA1LCA2MjQzNywgNjI0NDMsIDYyNDQ5LCA2MjQ1NCwgCi0gICAgNjI0NTksIDYyNDYzLCA2MjQ2OSwgNjI0NzUsIDMzNDU4LCA4NjMsIDM1Njk4LCAzNjYxOSwgMzY2MjUsIDMyMzY2LCAKLSAgICA2MjQ4MCwgNjI0ODQsIDYyNDg4LCA2MjQ5MSwgNjI1MDQsIDYyNTEwLCA2MjUxNCwgNjI1MTcsIDYyNTIyLCAzMzc2MSwgCi0gICAgNjI1MjYsIDMxMDkxLCAyMTI3NCwgNjI1MzIsIDYwMjQsIDYwMzIsIDkwNjgsIDYyNTM1LCA2MjU0MCwgNjI1NDUsIDYyNTUwLCAKLSAgICA2MjU1NSwgNjI1NjAsIDYyNTY1LCA2MjU3MCwgNjI1NzUsIDYyNTgwLCA2MjU4NiwgNjI1OTEsIDYyNTk2LCA2MjYwMiwgCi0gICAgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjIsIDYyNjI3LCA2MjYzMiwgNjI2MzgsIDYyNjQzLCA2MjY0OSwgNjI2NTQsIAotICAgIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc0LCA2MjY3OSwgNjI2ODQsIDYyNjg5LCA2MjY5NCwgNjI2OTksIDYyNzA1LCAKLSAgICA2MjcxMCwgNjI3MTUsIDYyNzIwLCA2MjcyNSwgNjI3MzAsIDYyNzM1LCA2Mjc0MSwgNjI3NDYsIDYyNzUxLCA2Mjc1NiwgCi0gICAgNjI3NjEsIDYyNzY2LCA2Mjc3MSwgNjI3NzYsIDYyNzgxLCA2Mjc4NiwgNjI3OTIsIDYyNzk3LCA2MjgwMiwgNjI4MDcsIAotICAgIDYyODEyLCA2MjgxOCwgNjI4MjQsIDYyODI5LCA2MjgzNSwgNjI4NDAsIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCAKLSAgICAxNTEzLCAyNDUsIDYyODY1LCA2Mjg2OSwgNjI4NzMsIDYyODc3LCAyNTExNiwgNjI4ODEsIDYyODg1LCA2Mjg5MCwgNjI4OTQsIAotICAgIDYyODk5LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMSwgNjI5MzUsIDEzMzYyLCAKLSAgICA2Mjk0MCwgNjI5NDQsIDYyOTUxLCA2Mjk2MSwgMTUxOTMsIDYyOTcwLCA2Mjk3OSwgNjI5ODMsIDYyOTg4LCA2Mjk5MywgCi0gICAgNjI5OTcsIDI0OTA3LCAzMDE5LCA2MzAwMSwgMTczNTAsIDYzMDA3LCA2MzAxNiwgNjMwMjQsIDYzMDMwLCA2MzA0MiwgCi0gICAgNjMwNTQsIDYzMDU4LCA2MzA2MywgNjMwNjcsIDYzMDczLCA2MzA3OSwgNjMwODQsIDYzMDk0LCA2MzEwNCwgNjMxMTAsIAotICAgIDYzMTE1LCA2MzExOSwgNjMxMjQsIDYzMTMwLCA2MzEzOSwgNjMxNDgsIDYzMTU2LCAxNTU0NywgNjMxNjAsIDYzMTY5LCAKLSAgICA2MzE3NywgNjMxODksIDYzMjAwLCA2MzIxMSwgNjMyMjAsIDYzMjI0LCA2MzIzMywgNjMyNDMsIDYzMjUxLCA2MzI1NywgCi0gICAgNjMyNjIsIDYzMjY4LCA2MzI3MywgOTgsIDMwOTAwLCA2MzI4NCwgMjYyNDksIDI2MjU5LCA2MzI5MCwgNjMyOTcsIDYzMzAzLCAKLSAgICA2MzMwNywgNjMzMTcsIDYzMzI4LCA2MzMzNiwgNjMzNDUsIDYzMzUwLCA2MzM1NSwgNjMzNTksIDE3MzA0LCA2MzM2NywgCi0gICAgNjMzNzEsIDYzMzc3LCA2MzM4NywgNjMzOTQsIDYzNDAwLCAzNDc4NCwgNjM0MDYsIDYzNDA4LCA2MzQxMSwgNjM0MTUsIAotICAgIDYzNDI1LCA2MzQzMSwgNjM0MzgsIDEzMzA4LCA2MzQ0NSwgNjM0NTEsIDYzNDYwLCA2MzQ2OSwgNjM0NzUsIDYzNDgxLCAKLSAgICA2MzQ4NywgNjM0OTIsIDYzNDk5LCA2MzUwNiwgNjM1MTIsIDYzNTI1LCA2MzUzNCwgNjM1NDMsIDYzNTQ4LCA2MzU1MiwgCi0gICAgNjM1NTgsIDYzNTY1LCA2MzU3MiwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MDksIAotICAgIDYzNjE5LCA2MzYyMywgNjM2MzUsIDYzNjQ0LCA2MzY0OCwgNjM2NTMsIDYzNjU3LCA2MzY2MywgNjM2NjgsIDYzNjc1LCAKLSAgICA2MzY4NCwgNjM2OTIsIDYzNzAwLCA2MzcwNSwgNjM3MDksIDYzNzE0LCA2MzcxOSwgNjM3MjksIDYzNzM3LCA2Mzc0MiwgCi0gICAgNjM3NDYsIDYzNzUwLCA2Mzc1NiwgNjM3NjgsIDYzNzc2LCA2Mzc4NiwgNjM3OTMsIDYzNzk5LCA2MzgwNCwgNjM4MDgsIAotICAgIDYzODEyLCA2MzgxNiwgNjM4MjUsIDYzODM0LCA2Mzg0MywgNjM4NDksIDYzODU1LCA2Mzg2MSwgNjM4NjYsIDYzODczLCAKLSAgICA2Mzg3OSwgNjM4ODcsIDYzODk0LCAxMjQ1NiwgNjM5MDAsIDYzOTA2LCA2MzkxMCwgMTQyMzEsIDYzOTE0LCA2MzkxOSwgCi0gICAgNjM5MjksIDYzOTM4LCA2Mzk0NCwgNjM5NTAsIDYzOTU4LCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3OSwgNjM5ODcsIAotICAgIDYzOTk0LCA2NDAwMCwgNjQwMTEsIDY0MDE1LCA2NDAxOSwgNjQwMjMsIDY0MDI2LCA2NDAzMiwgNjQwMzcsIDY0MDQxLCAKLSAgICA2NDA0NSwgNjQwNTQsIDY0MDYyLCA2NDA2OSwgNjQwNzUsIDY0MDgyLCAyNDAyOSwgMzg4NDEsIDY0MDg3LCA2NDA5NSwgCi0gICAgNjQwOTksIDY0MTAzLCA2NDEwNiwgNjQxMTQsIDY0MTIxLCA2NDEyNywgNjQxMzYsIDY0MTQ0LCA2NDE1MCwgNjQxNTUsIAotICAgIDY0MTU5LCA2NDE2NCwgNjQxNjgsIDY0MTcyLCA2NDE3NywgNjQxODYsIDY0MTkwLCA2NDE5NywgNjQyMDQsIDY0MjEwLCAKLSAgICA2NDIxOCwgNjQyMjQsIDY0MjM1LCA2NDI0MywgNjQyNDksIDIyNjUyLCA2NDI1OCwgNjQyNjUsIDY0MjcyLCA2NDI3OSwgCi0gICAgNjQyODYsIDY0MjkzLCA0MTg3MCwgMTMxNDYsIDY0MzAwLCA2NDMwNywgNjQzMTIsIDM0ODIwLCA2MjE3LCA2NDMxOCwgCi0gICAgNjQzMjMsIDY0MzI4LCA2NDMzNCwgNjQzNDAsIDY0MzQ2LCA2NDM1MSwgNjQzNTYsIDY0MzYxLCA2NDM2NiwgNjQzNzIsIAotICAgIDY0Mzc3LCA2NDM4MywgNjQzODgsIDY0Mzk0LCA2NDM5OSwgNjQ0MDQsIDY0NDA5LCA2NDQxNCwgNjQ0MTksIDY0NDI0LCAKLSAgICA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NiwgNjQ0NTEsIDY0NDU2LCA2NDQ2MSwgNjQ0NjYsIDY0NDcxLCA2NDQ3NiwgCi0gICAgNjQ0ODIsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIDY0NTE3LCA2NDUyMiwgNjQ1MjcsIAotICAgIDY0NTMyLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCA2NDU2OCwgNjQ1NzMsIDY0NTc4LCAKLSAgICA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgCi0gICAgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgNjQ2NTAsIDE4MzQsIDIyNCwgMzc0MTcsIDY0NjU1LCA2NDY1OCwgNjQ2NjMsIDY0NjY3LCAKLSAgICA2NDY3MCwgNjQ2NzUsIDYzNjk2LCA2NDY4NiwgNjQ2OTYsIDY0NzAzLCA2NDcxOSwgNjQ3MjgsIDY0NzM4LCA2NDc0OCwgCi0gICAgNjQ3NTYsIDY0NzcwLCA2NDc3OCwgNjQ3ODIsIDY0Nzg1LCA2NDc5MiwgNjQ3OTgsIDY0ODA5LCA2NDgyMSwgNjQ4MzIsIAotICAgIDY0ODQxLCA2NDg0OCwgMTI5NywgMjMyOTQsIDY0ODU4LCAyNTkwLCA2NDg2MiwgNjQ4NzEsIDExMzMsIDE3Mjc3LCAzODA1NCwgCi0gICAgNjQ4NzksIDY0ODg3LCA2NDkwMSwgNjQ5MTQsIDY0OTE4LCA2NDkyMywgNjQ5MjgsIDY0OTMzLCA2NDkzOSwgNjQ5NDUsIAotICAgIDY0OTUwLCA4NTM1LCA2NDk1NSwgNjQ5NTksIDY0OTY3LCAxMTA0MSwgNjQ5NzIsIDY0OTc4LCA2NDk4NywgMTcyMSwgCi0gICAgMTEwNTMsIDczNiwgNjQ5OTEsIDY1MDAwLCA2NTAxMCwgMjcwMTMsIDY1MDE5LCA2NTAyNSwgMTY4NDksIDY1MDMxLCAKLSAgICA2NTAzNSwgMzk2NCwgMTEzODQsIDY1MDQxLCA2NTA0OCwgNjA2NTYsIDY1MDUyLCA2NTA1NiwgMzk4OCwgMTg5LCAxNDE0NiwgCi0gICAgNjUwNjIsIDY1MDc0LCA2NTA3OCwgNjUwODQsIDI3NzMwLCA2NTA4OCwgMTEzNzIsIDI3MzAsIDQsIDY1MDkzLCA2NTEwMywgCi0gICAgNjUxMDksIDY1MTIwLCA2NTEyNywgNjUxMzMsIDY1MTM5LCA2NTE0NywgNjUxNTQsIDY1MTYwLCA2NTE3MCwgNjUxODAsIAotICAgIDY1MTkwLCAyMzQ4MiwgMTMwOSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTMsIDY1MjE3LCAyNzUzLCAyNzU5LCA4NTMyLCAKLSAgICAyMjY0LCA2NTIyMSwgNjUyMjUsIDY1MjM0LCA2NTI0MiwgNjUyNTMsIDY1MjYxLCA2NTI2OSwgNjUyNzUsIDY1MjgwLCAKLSAgICA2NTI5MSwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgOTY4NywgNjUzMjEsIDY1MzI5LCA2NTMzMywgNjUzMzcsIDY1MzQxLCAKLSAgICA2NTM1MywgMjgxMTUsIDY1MzYwLCA2NTM3MCwgNjUzNzYsIDY1MzgyLCA5Nzg5LCA2NTM5MiwgNjU0MDMsIDY1NDEzLCAKLSAgICA2NTQyMiwgNjU0MjYsIDY1NDMzLCAxMTM1LCAxMTcwLCA2NTQ0MywgNjU0NDgsIDY1NDU2LCA2NTQ2NCwgNjU0NzUsIAotICAgIDY1NDgyLCA2NTQ5NiwgMTQwNzUsIDM5MywgNjU1MDYsIDY1NTEwLCA2NTUxOCwgNjU1MjcsIDY1NTM1LCA2NTU0MSwgCi0gICAgNjU1NTUsIDY1NTYyLCA2NTU2OCwgNjU1NzcsIDY1NTg0LCA2NTU5NCwgNjU2MDIsIDM4MTIsIDE1NiwgNjU2MTAsIDY1NjIxLCAKLSAgICA2NTYyNSwgNjU2MzcsIDI3OTI4LCAxNjEsIDY1NjQzLCA2NTY0OCwgNjU2NTIsIDY1NjU5LCA2NTY2NSwgNjU2NzMsIAotICAgIDY1NjgwLCA4ODE4LCA2NTY4NywgNjU2OTYsIDY1NzA0LCAzODc4LCA2NTcxNywgODE5OSwgNjU3MjEsIDI3OTgsIDQ1MCwgCi0gICAgNjU3MjYsIDY1NzM5LCA2NTc0NCwgMTgzMywgNjY4LCA2NTc0OCwgMzg5NSwgNjU3NTYsIDY1NzYyLCA2NTc2NiwgOTMxLCAKLSAgICA2NTc3NiwgNjU3ODUsIDY1NzkwLCAxNDkxNSwgMTQ5MjIsIDQ1MjMyLCA2NTc5NCwgMzgyMiwgMTMwMzQsIDY1ODAyLCAKLSAgICA2NTgwOSwgMjM1MzgsIDY1ODEzLCA2NTgyMCwgNjU4MjYsIDY1ODMxLCA2NTgzNiwgMTQ5MzUsIDM3MiwgNjU4NDEsIAotICAgIDY1ODUzLCA2NTg1OSwgNjU4NjcsIDI4MTAsIDE3NTMsIDY1ODc1LCA2NTg3NywgNjU4ODIsIDY1ODg3LCA2NTg5MiwgCi0gICAgNjU4OTgsIDY1OTAzLCA2NTkwOCwgNjU5MTMsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTM0LCA2NTkzOSwgNjU5NDQsIAotICAgIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzQsIDY1OTgwLCA2NTk4NSwgNjU5OTAsIDY1OTk1LCAKLSAgICA2NjAwMSwgNjYwMDYsIDY2MDEyLCA2NjAxNywgNjYwMjIsIDY2MDI3LCA2NjAzMiwgNjYwMzcsIDY2MDQyLCA2NjA0NywgCi0gICAgNjYwNTMsIDY2MDU4LCA2NjA2NCwgNjYwNjksIDY2MDc0LCA2NjA3OSwgNjYwODQsIDY2MDg5LCA2NjA5NCwgNjYwOTksIAotICAgIDY2MTA0LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMjksIDY2MTMzLCA2NjEzOCwgNjYxNDIsIDY2MTQ3LCAKLSAgICA2NjE1MiwgNjYxNTgsIDY2MTYzLCA2NjE2NywgNjYxNzIsIDY2MTc2LCA2NjE3OSwgNjYxODEsIDY2MTg1LCA2NjE4OCwgCi0gICAgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxOCwgNjYyMjIsIDMyNTI0LCA2NjIyNSwgMzI1MjksIAotICAgIDY2MjMyLCA2NjIzNywgMzI1MzQsIDY2MjQ2LCA2NjI1NSwgMzI1NDAsIDY2MjYwLCAzMjU0NSwgNjYyNjksIDY2Mjc0LCAKLSAgICAxMTU3MSwgNjYyNzgsIDY2MjgzLCA2NjI4OCwgMzI1NTAsIDY2MjkyLCA0MDE5NiwgNjYyOTYsIDY2Mjk5LCA2NjMwMywgCi0gICAgODIxMSwgNjYzMDksIDY2MzE0LCA2NjMxOCwgMzcwNSwgMzI1NTUsIDY2MzIxLCA2NjMyNSwgNjYzMjgsIDY2MzMzLCAKLSAgICA2NjMzNywgNjYzNDMsIDY2MzUxLCA2NjM2NCwgNjYzNzMsIDY2Mzc5LCA2NjM4NCwgNjYzOTAsIDY2Mzk0LCA2NjQwMCwgCi0gICAgNjY0MDgsIDY2NDEzLCA2NjQxNywgNjY0MjQsIDY2NDMwLCA2NjQzOCwgNjY0NDcsIDY2NDU1LCAzMjU1OCwgNjY0NjIsIAotICAgIDY2NDcyLCA2NjQ4MSwgNjY0OTQsIDY2NDk5LCA2NjUwNCwgNjY1MTMsIDY2NTE5LCA2NjUyNiwgNjY1MzcsIDY2NTQ5LCAKLSAgICA2NjU1NiwgNjY1NjUsIDY2NTc0LCA2NjU4MywgNjY1OTAsIDY2NTk2LCA2NjYwMywgNjY2MTEsIDY2NjE4LCA2NjYyNiwgCi0gICAgNjY2MzUsIDY2NjQzLCA2NjY1MCwgNjY2NTgsIDY2NjY3LCA2NjY3NSwgNjY2ODQsIDY2Njk0LCA2NjcwMywgNjY3MTEsIAotICAgIDY2NzE4LCA2NjcyNiwgNjY3MzUsIDY2NzQzLCA2Njc1MiwgNjY3NjIsIDY2NzcxLCA2Njc3OSwgNjY3ODgsIDY2Nzk4LCAKLSAgICA2NjgwNywgNjY4MTcsIDY2ODI4LCA2NjgzOCwgNjY4NDcsIDY2ODU1LCA2Njg2MiwgNjY4NzAsIDY2ODc5LCA2Njg4NywgCi0gICAgNjY4OTYsIDY2OTA2LCA2NjkxNSwgNjY5MjMsIDY2OTMyLCA2Njk0MiwgNjY5NTEsIDY2OTYxLCA2Njk3MiwgNjY5ODIsIAotICAgIDY2OTkxLCA2Njk5OSwgNjcwMDgsIDY3MDE4LCA2NzAyNywgNjcwMzcsIDY3MDQ4LCA2NzA1OCwgNjcwNjcsIDY3MDc3LCAKLSAgICA2NzA4OCwgNjcwOTgsIDY3MTA5LCA2NzEyMSwgNjcxMzIsIDY3MTQyLCA2NzE1MSwgNjcxNTksIDY3MTY2LCA2NzE3NCwgCi0gICAgNjcxODMsIDY3MTkxLCA2NzIwMCwgNjcyMTAsIDY3MjE5LCA2NzIyNywgNjcyMzYsIDY3MjQ2LCA2NzI1NSwgNjcyNjUsIAotICAgIDY3Mjc2LCA2NzI4NiwgNjcyOTUsIDY3MzAzLCA2NzMxMiwgNjczMjIsIDY3MzMxLCA2NzM0MSwgNjczNTIsIDY3MzYyLCAKLSAgICA2NzM3MSwgNjczODEsIDY3MzkyLCA2NzQwMiwgNjc0MTMsIDY3NDI1LCA2NzQzNiwgNjc0NDYsIDY3NDU1LCA2NzQ2MywgCi0gICAgNjc0NzIsIDY3NDgyLCA2NzQ5MSwgNjc1MDEsIDY3NTEyLCA2NzUyMiwgNjc1MzEsIDY3NTQxLCA2NzU1MiwgNjc1NjIsIAotICAgIDY3NTczLCA2NzU4NSwgNjc1OTYsIDY3NjA2LCA2NzYxNSwgNjc2MjUsIDY3NjM2LCA2NzY0NiwgNjc2NTcsIDY3NjY5LCAKLSAgICA2NzY4MCwgNjc2OTAsIDY3NzAxLCA2NzcxMywgNjc3MjQsIDY3NzM2LCA2Nzc0OSwgNjc3NjEsIDY3NzcyLCA2Nzc4MiwgCi0gICAgNjc3OTEsIDY3Nzk5LCA2NzgwNiwgNjc4MTQsIDY3ODIzLCA2NzgzMSwgNjc4NDAsIDY3ODUwLCA2Nzg1OSwgNjc4NjcsIAotICAgIDY3ODc2LCA2Nzg4NiwgNjc4OTUsIDY3OTA1LCA2NzkxNiwgNjc5MjYsIDY3OTM1LCA2Nzk0MywgNjc5NTIsIDY3OTYyLCAKLSAgICA2Nzk3MSwgNjc5ODEsIDY3OTkyLCA2ODAwMiwgNjgwMTEsIDY4MDIxLCA2ODAzMiwgNjgwNDIsIDY4MDUzLCA2ODA2NSwgCi0gICAgNjgwNzYsIDY4MDg2LCA2ODA5NSwgNjgxMDMsIDY4MTEyLCA2ODEyMiwgNjgxMzEsIDY4MTQxLCA2ODE1MiwgNjgxNjIsIAotICAgIDY4MTcxLCA2ODE4MSwgNjgxOTIsIDY4MjAyLCA2ODIxMywgNjgyMjUsIDY4MjM2LCA2ODI0NiwgNjgyNTUsIDY4MjY1LCAKLSAgICA2ODI3NiwgNjgyODYsIDY4Mjk3LCA2ODMwOSwgNjgzMjAsIDY4MzMwLCA2ODM0MSwgNjgzNTMsIDY4MzY0LCA2ODM3NiwgCi0gICAgNjgzODksIDY4NDAxLCA2ODQxMiwgNjg0MjIsIDY4NDMxLCA2ODQzOSwgNjg0NDgsIDY4NDU4LCA2ODQ2NywgNjg0NzcsIAotICAgIDY4NDg4LCA2ODQ5OCwgNjg1MDcsIDY4NTE3LCA2ODUyOCwgNjg1MzgsIDY4NTQ5LCA2ODU2MSwgNjg1NzIsIDY4NTgyLCAKLSAgICA2ODU5MSwgNjg2MDEsIDY4NjEyLCA2ODYyMiwgNjg2MzMsIDY4NjQ1LCA2ODY1NiwgNjg2NjYsIDY4Njc3LCA2ODY4OSwgCi0gICAgNjg3MDAsIDY4NzEyLCA2ODcyNSwgNjg3MzcsIDY4NzQ4LCA2ODc1OCwgNjg3NjcsIDY4Nzc3LCA2ODc4OCwgNjg3OTgsIAotICAgIDY4ODA5LCA2ODgyMSwgNjg4MzIsIDY4ODQyLCA2ODg1MywgNjg4NjUsIDY4ODc2LCA2ODg4OCwgNjg5MDEsIDY4OTEzLCAKLSAgICA2ODkyNCwgNjg5MzQsIDY4OTQ1LCA2ODk1NywgNjg5NjgsIDY4OTgwLCA2ODk5MywgNjkwMDUsIDY5MDE2LCA2OTAyOCwgCi0gICAgNjkwNDEsIDY5MDUzLCA2OTA2NiwgNjkwODAsIDY5MDkzLCA2OTEwNSwgNjkxMTYsIDY5MTI2LCA2OTEzNSwgNjkxNDMsIAotICAgIDY5MTUwLCA2OTE1NSwgODA1OCwgNjkxNjIsIDMyNTY4LCA2OTE2NywgNjkxNzIsIDMyNTczLCA2OTE3OCwgMjA5MTYsIAotICAgIDMyNTc4LCA2OTE4MywgNjkxODksIDY5MTk3LCA2OTIwMywgNjkyMDksIDY5MjE2LCA2OTIyMywgNjkyMjgsIDY5MjMyLCAKLSAgICA2OTIzNSwgNjkyMzksIDY5MjQ4LCA2OTI1NCwgNjkyNjYsIDY5Mjc3LCA2OTI4MSwgMzA4MSwgODAzMywgNjkyODYsIAotICAgIDY5Mjg5LCA2OTI5MSwgNjkyOTUsIDY5Mjk5LCA2OTMwMywgNjkzMDksIDY5MzE0LCAyNTkyNywgNjkzMTksIDY5MzIzLCAKLSAgICA2OTMyNiwgNjkzMzEsIDY5MzM1LCA2OTM0MiwgNjkzNDgsIDY5MzUyLCA2MTcwLCA2OTM1NiwgMzI1OTUsIDY5MzYxLCAKLSAgICA2OTM2OCwgNjkzNzcsIDY5Mzg1LCA2OTM5NiwgNjk0MDQsIDY5NDEyLCA2OTQxOSwgNjk0MjYsIDY5NDMyLCA2OTQ0MywgCi0gICAgMzI2MDAsIDY5NDQ4LCA2OTQ1OSwgNjk0NzEsIDY5NDc5LCA2OTQ5MCwgNjk0OTksIDY5NTEwLCA2OTUxNSwgNjk1MjMsIAotICAgIDI1NTYsIDY5NTI4LCAzNDI3MCwgNjk1NDEsIDY5NTQ1LCA2OTU1NywgNjk1NjUsIDY5NTcwLCA2OTU3OCwgMTc0NzIsIAotICAgIDY5NTg5LCA2OTU5NSwgNjk2MDIsIDY5NjEwLCA2OTYxNiwgMzI2MTAsIDY5NjIxLCAzOTE0LCA1ODIxNywgNjk2MjgsIAotICAgIDY5NjMxLCA2OTYzOSwgNjk2NTIsIDY5NjY1LCA2OTY3OCwgNjk2OTEsIDY5Njk4LCA2OTcwOSwgNjk3MTgsIDQxNjg3LCAKLSAgICA0MTY5MiwgNjk3MjMsIDY5NzI3LCA2OTczNSwgNjk3NDIsIDY5NzUxLCA2OTc1OSwgNjk3NjUsIDY5Nzc0LCA2OTc4MiwgCi0gICAgNjk3OTAsIDY5Nzk0LCA2OTgwMywgNjk4MTIsIDY5ODIyLCA2OTgzNSwgNjk4NDgsIDY5ODU4LCAzMjYxNSwgNjk4NjQsIAotICAgIDY5ODcxLCA2OTg3NywgMzI2MjEsIDY5ODgyLCA2OTg4NSwgNjk4ODksIDY5ODk3LCA2OTkwNiwgNDE0MjUsIDY5OTE0LCAKLSAgICA2OTkyMywgNjk5MzEsIDY5OTM4LCA2OTk0NiwgNjk5NTYsIDY5OTY1LCA2OTk3NCwgNjk5ODMsIDY5OTkxLCA3MDAwMiwgCi0gICAgNzAwMTIsIDkzNTksIDIxNTU0LCA3MDAyMSwgNzAwMjYsIDcwMDMxLCA3MDAzNSwgNzAwMzksIDcwMDQ0LCA3MDA1MCwgCi0gICAgNzAwNTUsIDcwMDYwLCA3MDA2NiwgNzAwNzEsIDcwMDc2LCAyMTUxOSwgNzAwODEsIDcwMDg4LCA3MDA5NiwgNzAxMDQsIAotICAgIDcwMTA5LCA3MDExNiwgNzAxMjMsIDcwMTI4LCA3MDEzMiwgNzAxMzYsIDcwMTQ0LCA3MDE1MiwgMzI2MzgsIDcwMTU4LCAKLSAgICA3MDE2NCwgNzAxNzYsIDcwMTgyLCA3MDE4NiwgNzAxOTMsIDcwMTk4LCA3MDIwOSwgNzAyMTksIDcwMjI5LCA3MDI0MSwgCi0gICAgNzAyNDcsIDcwMjU3LCA3MDI2NywgMzI2NjUsIDcwMjc2LCA3MDI4NSwgNzAyOTEsIDcwMzAzLCA3MDMxNCwgNzAzMjEsIAotICAgIDcwMzI2LCA3MDMzMCwgNzAzMzgsIDcwMzQ0LCA3MDM0OSwgNzAzNTQsIDcwMzYxLCA3MDM2OSwgNzAzODEsIDcwMzkxLCAKLSAgICA3MDQwMCwgNzA0MDksIDcwNDE2LCAzNDEzMiwgMjM4MzQsIDcwNDIyLCA3MDQyNywgNzA0MzEsIDcwNDM1LCA3MDQ0MCwgCi0gICAgNzA0NDYsIDcwNDU3LCA3MDQ3MCwgNzA0NzUsIDcwNDgyLCAzMjY3MCwgNzA0ODcsIDcwNDk5LCA3MDUwOCwgNzA1MTgsIAotICAgIDcwNTI5LCA3MDU0MiwgNzA1NDksIDcwNTU4LCA3MDU2NywgNzA1NzUsIDcwNTgwLCA3MDU4NiwgMTA1OCwgNzA1OTEsIAotICAgIDcwNTk2LCA3MDYwMSwgNzA2MDYsIDcwNjEyLCA3MDYxNywgNzA2MjIsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQzLCAKLSAgICA3MDY0OCwgNzA2NTMsIDcwNjU4LCA1ODcyOSwgNzA2NjMsIDcwNjY4LCA3MDY3MywgNzA2NzgsIDcwNjg0LCA3MDY5MCwgCi0gICAgNzA2OTUsIDcwNjk5LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcyMCwgNzA3MjUsIDcwNzMxLCA3MDczNiwgNzA3NDEsIAotICAgIDcwNzQ2LCA3MDc1MSwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzUsIDcwNzgwLCA3MDc4NSwgNzA3OTAsIDcwNzk1LCAKLSAgICA3MDc5OSwgNzA4MDYsIDcwODEyLCAxNzEyMiwgMTcxMjksIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgCi0gICAgNDU0ODcsIDcwODM3LCA3MDc2NywgNzA4MzksIDcwODQ5LCAzMjY3OSwgNzA4NTIsIDcwODYxLCA3MDg2NywgNjE0MywgCi0gICAgMzI2ODQsIDcwODcxLCA3MDg3NywgNzA4ODIsIDcwODg4LCA3MDg5MywgNzA4OTcsIDcwOTA0LCA3MDkwOSwgNzA5MTksIAotICAgIDcwOTI4LCA3MDkzMiwgNzA5MzgsIDcwOTQ0LCA3MDk1MCwgNzA5NTQsIDcwOTYyLCA3MDk2OSwgNzA5NzcsIDcwOTg1LCAKLSAgICAzMjY4OSwgNzA5OTIsIDcwOTk1LCA3MTAwMiwgNzEwMDgsIDcxMDEzLCA3MTAxNywgNzEwMjMsIDcxMDMwLCA3MTAzNSwgCi0gICAgNzEwMzksIDcxMDQ4LCA3MTA1NiwgNzEwNjIsIDcxMDY3LCAzMjY5NCwgNzEwNzQsIDcxMDgxLCA3MTA4NywgNzEwOTIsIAotICAgIDcxMDk4LCA3MTEwNSwgNzExMTEsIDIxMjgxLCAyNzQzOCwgNzExMTcsIDcxMTIyLCA3MTEyOCwgNzExNDAsIDcwODAwLCAKLSAgICA3MDgwNywgMjE0NTcsIDcxMTUwLCA3MTE1NSwgNzExNjIsIDcxMTY4LCA3MTE3NSwgNzExODEsIDcxMTkyLCA3MTE5NywgCi0gICAgOTEwMywgNzEyMDUsIDcxMjA4LCA3MTIxNCwgNzEyMTgsIDcxMjIyLCA3MTIyNSwgNzEyMzEsIDMyNDQzLCA2MTk0LCA5NjQsIAotICAgIDEzNDEyLCA3MTIzOCwgNzEyNDQsIDcxMjUwLCA3MTI1NiwgNzEyNjIsIDcxMjY4LCA3MTI3NCwgNzEyODAsIDcxMjg2LCAKLSAgICA3MTI5MSwgNzEyOTYsIDcxMzAxLCA3MTMwNiwgNzEzMTEsIDcxMzE2LCA3MTMyMSwgNzEzMjYsIDcxMzMxLCA3MTMzNiwgCi0gICAgNzEzNDEsIDcxMzQ2LCA3MTM1MSwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzMsIDcxMzc4LCA3MTM4MywgNzEzODksIAotICAgIDcxMzk1LCA3MTQwMSwgNzE0MDcsIDcxNDEzLCA3MTQxOSwgNzE0MjUsIDcxNDMxLCA3MTQzNywgNzE0NDIsIDcxNDQ3LCAKLSAgICA3MTQ1MywgNzE0NTgsIDcxNDYzLCA3MTQ2OSwgNzE0NzQsIDcxNDc5LCA3MTQ4NCwgNzE0ODksIDcxNDk0LCA3MTQ5OSwgCi0gICAgNzE1MDQsIDcxNTA5LCA3MTUxNCwgNzE1MTksIDcxNTI0LCA3MTUyOSwgNzE1MzUsIDcxNTQwLCA3MTU0NSwgNzE1NTAsIAotICAgIDcxNTU2LCA3MTU2MSwgNzE1NjYsIDcxNTcxLCA3MTU3NiwgNzE1ODIsIDcxNTg3LCA3MTU5MiwgNzE1OTcsIDcxNjAyLCAKLSAgICA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMiwgNzE2MjcsIDcxNjMyLCA3MTYzNywgNzE2NDIsIDcxNjQ3LCA3MTY1MiwgCi0gICAgNzE2NTcsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MywgNzE2ODgsIDcxNjkzLCA3MTY5OCwgNzE3MDMsIAotICAgIDcxNzA4LCA3MTcxMywgNzE3MTgsIDE4NjQsIDE0MiwgNzE3MjMsIDcxNzI3LCA3MTczMSwgNzE3MzYsIDcxNzQ0LCA3MTc0OCwgCi0gICAgNzE3NTUsIDcxNzYzLCA3MTc2NywgNzE3ODAsIDcxNzg4LCA3MTc5MiwgNzE3OTUsIDcxODAwLCA3MTgwNCwgNzE4MDksIAotICAgIDcxODEzLCA3MTgyMSwgNzE4MjUsIDIwOTI0LCA3MTgzMCwgNzE4MzQsIDYwOTMwLCA3MTgzOCwgNzE4NDEsIDcxODQ5LCAKLSAgICA3MTg1NywgNzE4NjUsIDcxODcwLCA3MTg3NywgNzE4ODMsIDcxODg5LCA3MTg5NCwgNzE5MDEsIDcxOTA2LCA3MTkxNCwgCi0gICAgNjQ5MDYsIDcxOTIxLCA3MTkyNiwgNzE5MzEsIDcxOTM1LCAxMTYzOCwgNzE5MzksIDcxOTQ0LCA3MTk0OSwgNzE5NTMsIAotICAgIDcxOTU2LCA3MTk2MiwgNzE5NjYsIDcxOTc2LCA3MTk4NSwgNzE5ODgsIDcxOTkyLCA3MTk5OSwgNzIwMTIsIDcyMDE4LCAKLSAgICA3MjAyNiwgNzIwMzcsIDcyMDQ4LCA3MjA1OSwgNzIwNzAsIDcyMDc5LCA3MjA4NSwgNzIwOTQsIDcyMTAyLCA3MjExMiwgCi0gICAgNzIxMjUsIDcyMTMyLCA3MjE0MywgNzIxNDksIDcyMTU0LCA3MjE1OSwgNzIxNjUsIDcyMTcxLCA3MjE4MSwgNzIxOTAsIAotICAgIDcwNDg5LCA3MjE5OCwgNzIyMDQsIDcyMjEyLCA3MjIxOCwgNzIyMjYsIDcyMjI5LCA3MjIzMywgNzIyMzcsIDcyMjQwLCAKLSAgICA3MjI0NiwgNzIyNTIsIDcyMjYwLCA3MjI3MiwgNzIyODQsIDcyMjkxLCA3MjI5NSwgNzIzMDYsIDcyMzE0LCA3MjMyMSwgCi0gICAgNzIzMzMsIDcyMzQxLCA3MjM0OSwgNzIzNTYsIDcyMzYyLCA3MjM3MiwgNzIzODEsIDcyMzg2LCA3MjM5NiwgNzI0MDUsIAotICAgIDQwNzUxLCA3MjQxMiwgNzI0MTYsIDcyNDIxLCA3MjQyOSwgNzI0MzYsIDcyNDQyLCA3MjQ0NiwgNzI0NTYsIDcyNDY3LCAKLSAgICA3MjQ3NSwgNzI0ODIsIDcyNDk0LCA3MjUwNiwgNzI1MTUsIDY5NTMxLCA3MjUyMiwgNzI1MzMsIDcyNTQ3LCA3MjU1NSwgCi0gICAgNzI1NjUsIDcyNTcyLCA3MjU4MCwgNzI1OTIsIDcyNjAxLCA3MjYwOSwgNzI2MTksIDcyNjMwLCA3MjY0MiwgNzI2NTEsIAotICAgIDcyNjYxLCA3MjY2OCwgNzI2NzcsIDcyNjkyLCA3MjcwMCwgNzI3MTAsIDcyNzE5LCA3MjcyNywgNzI3NDAsIDcyNzU1LCAKLSAgICA3Mjc1OSwgNzI3NjgsIDcyNzgwLCA3Mjc5MSwgNzI4MDIsIDcyODEzLCA3MjgyMywgNzI4MzQsIDcyODQyLCA3Mjg0OCwgCi0gICAgNzI4NTgsIDcyODY2LCA3Mjg3MiwgMjkwMDcsIDcyODc3LCA3Mjg4MywgNzI4ODgsIDcyODk1LCA5NzAxLCAxNzQ5MiwgCi0gICAgNzI5MDEsIDcyOTEwLCA3MjkxNSwgNzI5MTksIDcyOTI2LCA3MjkzMiwgNzI5MzcsIDcyOTQyLCA3Mjk1MCwgNzI5NTgsIAotICAgIDcyOTYyLCA3Mjk2NSwgNzI5NjgsIDcyOTcwLCA3Mjk3NywgNzI5ODMsIDcyOTk0LCA3Mjk5OSwgNzMwMDMsIDczMDEwLCAKLSAgICA3MzAxNiwgNzMwMjEsIDczMDI5LCA2NTQwNSwgNjU0MTUsIDczMDM1LCA3MzA0MiwgNzMwNTIsIDEwNjExLCA3MzA1OSwgCi0gICAgNzMwNjQsIDI5MjAzLCA3MzA3MywgNzMwNzgsIDczMDg1LCA3MzA5NSwgNzMxMDMsIDczMTExLCA3MzEyMCwgNzMxMjYsIAotICAgIDczMTMyLCA3MzEzOSwgNzMxNDYsIDczMTUxLCA3MzE1NSwgNzMxNjMsIDczMTY4LCA3MzE3MywgNzMxODEsIDczMTg4LCAKLSAgICA3MzE5MywgNzMxOTksIDczMjAyLCA3MzIwNiwgNzMyMTUsIDcxNzc1LCA3MzIyNCwgNzMyMjgsIDczMjM0LCA3MzI0NSwgCi0gICAgNzMyNTUsIDE3NTAxLCA3MzI2NiwgNzMyNzQsIDE3NTEzLCA3MzI4MSwgNzMyODUsIDczMjk0LCAyNzMyNCwgNzMzMDEsIAotICAgIDczMzA1LCA3MzMxMCwgNzMzMjcsIDczMzM5LCAxMDU2OSwgNzMzNTEsIDczMzU2LCA3MzM2MSwgNzMzNjYsIDIwOTk3LCAKLSAgICA3MzM3MCwgNzMzNzUsIDczMzgwLCA3MzM4NiwgNzMzOTEsIDU4NDYsIDIxMDAxLCA3MzM5NiwgNzM0MDEsIDczNDA3LCAKLSAgICA3MzQxNCwgNzM0MTksIDczNDI0LCA3MzQzMCwgNzM0MzYsIDczNDQyLCA3MzQ0NywgNzM0NTMsIDczNDU3LCA3MzQ3MSwgCi0gICAgNzM0NzksIDczNDg3LCA3MzQ5MywgNzM0OTgsIDczNTA1LCA3MzUxNSwgNzM1MjQsIDczNTI5LCA3MzUzNCwgNzM1NDIsIAotICAgIDczNTQ3LCA3MzU1MywgNzM1NTgsIDczNTY3LCA1OTc4NiwgNzM1NzIsIDczNTc1LCA3MzU5MywgNzM2MTIsIDczNjI1LCAKLSAgICA3MzYzOSwgNzM2NTUsIDczNjYyLCA3MzY2OSwgNzM2NzUsIDczNjgyLCA3MzY4NywgNzM2OTMsIDczNjk5LCA3MzcwNywgCi0gICAgNzM3MTMsIDczNzE4LCA3MzcyMywgNzM3MzksIDEwNTgyLCA3Mzc1MywgNzM3NjAsIDczNzY4LCA3Mzc3NCwgNzM3NzgsIAotICAgIDczNzgxLCA3Mzc4NiwgNzM3OTEsIDczNzk4LCA3MzgwMywgNzM4MTIsIDczODE3LCA3MzgyMywgNzM4MzIsIDczODQxLCAKLSAgICA3Mzg0NiwgNzM4NTAsIDczODU4LCA3Mzg2NywgMTE2NjcsIDczODc2LCA3Mzg4NCwgNzM4ODksIDczODk1LCAxMTY3OCwgCi0gICAgNzM5MDAsIDczOTAzLCA3MzkwOCwgNzM5MTgsIDczOTI3LCA3MzkzMiwgNzM5MzgsIDczOTQzLCA3Mzk1MSwgNzM5NTgsIAotICAgIDczOTY5LCA3Mzk3OSwgNzM5ODQsIDY0ODM0LCA3Mzk4OSwgNzM5OTUsIDc0MDAwLCA3NDAwNywgNzQwMTYsIDc0MDI0LCAKLSAgICA3NDAzMCwgNzQwMzYsIDc0MDQzLCA3NDA0OSwgNzQwNTMsIDE2OTQ3LCAzMDU1LCA3NDA1OCwgNzQwNjIsIDc0MDY2LCAKLSAgICA3NDA3MiwgNzQwODEsIDc0MDg3LCA3NDA5NCwgNzQwOTgsIDc0MTE5LCA3NDE0MSwgNzQxNTcsIDc0MTc0LCA3NDE5MywgCi0gICAgNzQyMDIsIDc0MjEyLCA3NDIxOSwgNzQyMjYsIDI3MjExLCA3NDIzMiwgNzQyMzYsIDc0MjQ0LCA3NDI1NiwgNzQyNjIsIAotICAgIDc0MjcwLCA3NDI3NCwgNzQyODIsIDc0Mjg5LCA3NDI5MywgNzQyOTksIDc0MzA1LCA3NDMxMCwgMzU2MywgNDE4ODcsIAotICAgIDc0MzE2LCA3NDMyMCwgNzQzMjQsIDc0MzI4LCA3NDMzMywgNzQzMzgsIDc0MzQzLCA3NDM0OSwgNzQzNTUsIDc0MzYxLCAKLSAgICA3NDM2OCwgNzQzNzQsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk4LCA3NDQwNCwgNzQ0MDksIDc0NDEzLCA3NDQxOCwgCi0gICAgNzQ0MjIsIDc0NDI3LCA0MTkwMiwgNzQ0MzEsIDc0NDM2LCA3NDQ0NCwgNzQ0NDgsIDc0NDUzLCA3NDQ2MCwgNzQ0NjksIAotICAgIDc0NDc1LCA3NDQ3OSwgNzQ0ODYsIDc0NDkwLCA3NDQ5MywgNzQ1MDAsIDc0NTA5LCA3NDUxNCwgNzQ1MTgsIDc0NTI2LCAKLSAgICA3NDUzNSwgNzQ1MzksIDc0NTQ3LCA3NDU1MywgNzQ1NTgsIDc0NTYzLCA3NDU2OSwgNzQ1NzUsIDc0NTgwLCA3NDU4NCwgCi0gICAgNzQ1OTAsIDc0NTk1LCA3NDU5OSwgNzQ2MDMsIDc0NjA2LCA3NDYxMSwgNzQ2MTksIDc0NjI5LCA3NDYzNCwgMzkzODcsIAotICAgIDc0NjQyLCA3NDY1NCwgNzQ2NTgsIDc0NjY0LCA3NDY3NiwgNzQ2ODcsIDc0Njk0LCA3NDcwMCwgNzQ3MDcsIDc0NzE5LCAKLSAgICA3NDcyNiwgNzQ3MzIsIDIxMDc1LCA3NDczNiwgNzQ3NDIsIDc0NzQ5LCA3NDc1NSwgNzQ3NjEsIDc0NzY2LCA3NDc3MSwgCi0gICAgNzQ3NzYsIDc0Nzg1LCA3MDMzLCA3NDc5MCwgMTY0MTMsIDc0Nzk2LCA3NDgwMCwgNzQ4MDQsIDc0ODA4LCA3NDgxNiwgCi0gICAgNzQ4MjUsIDc0ODI5LCA3NDgzNiwgNzQ4NDUsIDc0ODU4LCA3NDg2NCwgNzQ0MjMsIDMwMDY3LCA3NDg2OSwgNzQ4NzEsIAotICAgIDc0ODc2LCA3NDg4MSwgNzQ4ODYsIDc0ODkxLCA3NDg5NiwgNzQ5MDEsIDc0OTA2LCA3NDkxMSwgNzQ5MTYsIDc0OTIxLCAKLSAgICA3NDkyNiwgNzQ5MzEsIDc0OTM2LCA3NDk0MSwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIDc0OTY3LCA3NDk3MiwgCi0gICAgNzQ5NzcsIDc0OTgyLCA3NDk4NywgNzQ5OTMsIDc0OTk5LCA3NTAwNSwgNzUwMTAsIDc1MDE1LCA3NTAyNywgNzUwMzIsIAotICAgIDE4NzAsIDQ5LCA3NTAzNywgNzUwNDIsIDMyNzIxLCA3NTA0NiwgMzI3MjYsIDMyNzMxLCAzMjczNywgMzI3NDIsIDc1MDUwLCAKLSAgICAzMjc0NywgMjIwNzAsIDc1MDcyLCA3NTA3NiwgNzUwODAsIDc1MDg1LCA3NTA4OSwgMzI3NTEsIDc1MDkzLCA3NTEwMSwgCi0gICAgMzI3NTYsIDc1MTA4LCA3NTExMSwgNzUxMTYsIDc1MTIwLCA5NTM2LCA3NTEyOSwgMzI3NjEsIDIxOTMyLCA3NTEzMiwgCi0gICAgNzUxMzYsIDE0MjgsIDc1MTQxLCAzMjc3MiwgNzUxNDQsIDc1MTQ5LCAyNTcyMCwgMjU3MzAsIDM1MjMzLCA3NTE1NCwgCi0gICAgNzUxNTksIDc1MTY0LCA3NTE2OSwgNzUxNzUsIDc1MTgwLCA3NTE4OSwgNzUxOTQsIDc1MjAxLCA3NTIwNywgNzUyMTIsIAotICAgIDc1MjE3LCA3NTIyMiwgNzUyMzIsIDc1MjQxLCA3NTI0NiwgNzUyNTQsIDc1MjU4LCA3NTI2NiwgMzI1ODYsIDM3Mjg4LCAKLSAgICA3NTI3MywgNzUyNzksIDc1Mjg0LCA3NTI4OSwgMTIwMDksIDc1Mjk0LCA3NTMwMCwgNzUzMDUsIDc1MzEyLCA3NTMxOCwgCi0gICAgNzUzMjMsIDc1MzMxLCA3NTM0MSwgNzUzNTEsIDc1MzU3LCA3NTM2MiwgNzUzNjgsIDE3NTIzLCA3NTM3NSwgMzYwNDgsIAotICAgIDc1Mzg4LCA3NTM5MywgNzUzOTksIDMwOTY4LCA3NTQxMiwgNzU0MTgsIDc1NDIyLCA3NTQzMSwgNzU0MzgsIDc1NDQ0LCAKLSAgICA3NTQ1MiwgNzU0NjEsIDc1NDY4LCA3NTQ3NCwgNzU0NzcsIDc1NDgxLCAyNTg2MSwgNzU0ODUsIDc1NDkyLCA3NTQ5OCwgCi0gICAgNzU1MDYsIDc1NTExLCAyMzk3NywgNzU1MTcsIDc1NTIwLCA3NTUyOCwgNzU1MzYsIDc1NTUwLCA3NTU1NywgNzU1NjMsIAotICAgIDc1NTcwLCA3NTU3NiwgMzI3ODYsIDc1NTgwLCA3NTU4NywgNzU1OTUsIDc1NjAzLCA3NTYwOSwgMzI3OTEsIDc1NjE3LCAKLSAgICA3NTYyMywgNzU2MjgsIDc1NjM4LCA3NTY0NCwgNzU2NTMsIDMwODA1LCAzNDY5MSwgNzU2NjEsIDc1NjY2LCA3NTY3MSwgCi0gICAgNzU2NzUsIDc1NjgwLCA3NTY4NCwgNzU2OTIsIDE0OTA3LCAzOTQwMCwgNzU2OTcsIDc1NzAyLCAzMjc5NiwgNjIyMzIsIAotICAgIDc1NzA2LCA3NTcxMSwgNzU3MTUsIDc1NzI0LCA3NTczMiwgNzU3MzgsIDc1NzQzLCA3NTc0OSwgNzU3NTYsIDc1NzYyLCAKLSAgICA3NTc2NywgNzU3NzIsIDc1NzgxLCA3NTc5MywgNzU4MDgsIDMzMDU4LCA3NTgxNCwgMTY1MzIsIDMyODAwLCA3NTgxOCwgCi0gICAgNzU4MjUsIDI0MDg3LCA3NTgzMSwgNzU4MzgsIDc1ODQ3LCA3NTg1NCwgNzU4NjMsIDc1ODY5LCA3NTg3NCwgNzU4ODIsIAotICAgIDc1ODg4LCAzMjgxMCwgNzU4OTMsIDc1OTAyLCA3NDY4MiwgNzU5MTEsIDc1OTE4LCA3NTkyNCwgNzU5MzAsIDc1OTQwLCAKLSAgICA3NTk0OCwgNzU5NTUsIDc1OTU5LCAzMjgxNSwgNzU5NjIsIDMyODIxLCAzMjgyNywgNzU5NjcsIDc1OTc1LCA3NTk4MywgCi0gICAgNzU5OTMsIDc2MDAyLCA3NjAxMCwgNzYwMTcsIDc2MDI3LCAzMjgzMiwgNzYwMzEsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAotICAgIDc2MDQ2LCA3NjA1MCwgNzYwNTYsIDc2MDYxLCA3NjA2NSwgNzYwNzYsIDc2MDgxLCA3NjA4NiwgMzA2MCwgNzYwOTAsIAotICAgIDc2MDk3LCA3NjEwMSwgNzYxMTAsIDc2MTE4LCA3NjEyNSwgNzYxMzAsIDc2MTM1LCA2MjI3OCwgNzYxMzksIDc2MTQyLCAKLSAgICA3NjE0OCwgNzYxNTYsIDc2MTYyLCA3NjE2NiwgNzYxNzEsIDc2MTc4LCA3NjE4MywgNzYxODksIDM0NzIyLCA3NjE5NCwgCi0gICAgNzYxOTcsIDc2MjAyLCA3NjIwNiwgNzYyMTEsIDc2MjE2LCA3NjIyMCwgNzYyMjgsIDc2MjMyLCAyNTczOSwgMjU3NDgsIAotICAgIDc2MjM4LCA3NjI0NCwgNzYyNTAsIDc2MjU1LCA3NjI1OSwgNzYyNjIsIDc2MjcyLCA3NjI4MSwgNzYyODYsIDc2MjkyLCAKLSAgICA3NjI5OSwgNzYzMDUsIDc2MzA5LCA3NjMxNywgNzYzMjIsIDM0NzI4LCA3NjMyNiwgNzYzMzQsIDc2MzQwLCA3NjM0NywgCi0gICAgNzYzNTIsIDc2MzU2LCA3NjM2MSwgNTg0MDMsIDM0NzM0LCA3NjM2NywgNzYzNzIsIDc2Mzc2LCA3NjM4MSwgNzYzODYsIAotICAgIDc2MzkxLCA3NjM5NSwgNzY0MDAsIDc2NDA1LCA3NjQxMSwgNzY0MTYsIDc2NDIxLCA3NjQyNywgNzY0MzMsIDc2NDM4LCAKLSAgICA3NjQ0MiwgNzY0NDcsIDc2NDUyLCA3NjQ1NywgNzY0NjEsIDI0MDg2LCA3NjQ2NiwgNzY0NzEsIDc2NDc3LCA3NjQ4MywgCi0gICAgNzY0ODksIDc2NDk0LCA3NjQ5OCwgNzY1MDMsIDc2NTA4LCA3NjUxMywgNzY1MTcsIDc2NTIyLCA3NjUyNywgNzY1MzIsIAotICAgIDc2NTM3LCA3NjU0MSwgMzI4NDAsIDc2NTQ5LCA3NjU1MywgNzY1NjEsIDc2NTY5LCA3NjU4MCwgNzY1ODUsIDc2NTg5LCAKLSAgICAyMjM4NCwgNzY1OTQsIDc2NjAwLCA3NjYxMCwgNzY2MTcsIDc2NjIyLCA3NjYzMSwgNzY2MzYsIDc2NjQwLCA3NjY0NSwgCi0gICAgNzY2NTMsIDc2NjYxLCA3NjY2OCwgNjUwNjgsIDc2Njc0LCA3NjY4MiwgNzY2ODksIDc2NzAwLCA3NjcwNiwgNzY3MTAsIAotICAgIDc2NzE2LCAzMjg1MCwgNzY3MTksIDc2NzI2LCA3NjczNCwgNzY3MzksIDM5NTkxLCA3Njc0MywgNzY3NDgsIDc2NzU1LCAKLSAgICA3Njc2MCwgODk4NSwgNzY3NjQsIDc2NzcyLCA3Njc3OSwgNzY3ODYsIDc2NzkyLCA3NjgwNiwgNjMzNDAsIDc2ODE0LCAKLSAgICA3NjgyMCwgNzY4MjQsIDc2ODI3LCA3NjgzNSwgNzY4NDIsIDc2ODQ3LCA3Njg2MCwgNzY4NjcsIDc2ODcxLCA3Njg3OCwgCi0gICAgNzY4ODMsIDYwODIzLCA3Njg4OCwgNzY4OTEsIDc2ODk4LCA3NjkwNCwgNzY5MDgsIDc2OTE2LCA3NjkyNSwgNzY5MzUsIAotICAgIDc2OTQ1LCA3Njk1NCwgNzY5NjIsIDc2OTczLCA3Njk3OCwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgMzUzNjQsIDc2OTk5LCAKLSAgICAyMTM0NCwgMzUzNzMsIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDE5LCA3NzAyNCwgNzcwMjksIDc3MDM0LCA3NzAzOCwgCi0gICAgNzcwNDMsIDc3MDQ4LCA3NzA1MywgNzcwNTgsIDc3MDYzLCA3NzA2OCwgNzcwNzIsIDc3MDc3LCA3NzA4MiwgNzcwODYsIAotICAgIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAzLCA3NzEwOCwgNzcxMTIsIDc3MTE3LCA3NzEyMSwgNzcxMjUsIDc3MTMwLCAKLSAgICA3NzEzNSwgNzcxNDAsIDc3MTQ1LCA3NzE0OSwgNzcxNTQsIDc3MTU5LCA3NzE2MywgNzcxNjgsIDc3MTczLCA3NzE3OCwgCi0gICAgNzcxODMsIDc3MTg4LCA3NzE5MywgNzcxOTgsIDc3MjAzLCA3NzIwOCwgNzcyMTMsIDc3MjE4LCA3NzIyMywgNzcyMjgsIAotICAgIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1MywgNzcyNTgsIDc3MjYzLCA3NzI2NywgNzcyNzIsIDc3Mjc3LCAKLSAgICA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgNzczMTcsIDc3MzIyLCA3NzMyNiwgCi0gICAgNzczMzEsIDc3MzM1LCA3NzM0MCwgNzczNDUsIDc3MzUwLCA3NzM1NSwgNzczNjAsIDc3MzY1LCA3NzM3MCwgNzczNzUsIAotICAgIDc3MzgwLCA3NzM4NCwgNzczODgsIDc3MzkzLCA3NzM5OCwgNzc0MDIsIDc3NDA3LCA3NzQxMiwgNzc0MTYsIDc3NDIxLCAKLSAgICA3NzQyNiwgNzc0MzEsIDc3NDM2LCA3NzQ0MCwgNzc0NDUsIDc3NDUwLCA3NzQ1NCwgNzc0NTksIDc3NDYzLCA3NzQ2NywgCi0gICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODQsIDc3NDg4LCA3NzQ5MiwgNzc0OTYsIDc3NTAwLCA3NzUwNCwgNzc1MDgsIAotICAgIDc3NTEyLCA3NzUxNiwgNzc1MjEsIDc3NTI2LCA3NzUzMSwgNzc1MzYsIDc3NTQxLCA3NzU0NiwgNzc1NTEsIDc3NTU2LCAKLSAgICA3NzU2MSwgNzc1NjYsIDc3NTcwLCA3NzU3NCwgNzc1NzgsIDc3NTgyLCA3NzU4NiwgNzc1OTAsIDc3NTk1LCA3NzU5OSwgCi0gICAgNzc2MDQsIDc3NjA4LCA3NzYxMywgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzEsIDc3NjM1LCA3NzYzOSwgNzc2NDMsIAotICAgIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgNzc2NzksIDc3NjgzLCAKLSAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMSwgNzc3MDUsIDc3NzA5LCA3NzcxMywgNzc3MTcsIDc3NzIxLCA3NzcyNiwgCi0gICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTUsIDc3NzU5LCA3Nzc2NCwgNzc3NjgsIAotICAgIDc3NzcyLCA3Nzc3NiwgNzc3ODAsIDc3Nzg0LCA3Nzc4OCwgNzc3OTIsIDc3Nzk2LCA3NzgwMCwgNzc4MDQsIDc3ODA4LCAKLSAgICA3NzgxMywgNzc4MTcsIDc3ODIxLCA3NzgyNSwgNzc4MjksIDc3ODMzLCA3NzgzNywgNzc4NDEsIDc3ODQ1LCA3Nzg0OSwgCi0gICAgNzc4NTMsIDc3ODU3LCA3Nzg2MiwgNzc4NjYsIDc3ODcwLCA3Nzg3NSwgNzc4ODAsIDc3ODg0LCA3Nzg4OCwgNzc4OTIsIAotICAgIDc3ODk2LCA3NzkwMCwgNzc5MDQsIDc3OTA4LCA3NzkxMiwgNzc5MTcsIDc3OTIxLCA3NzkyNiwgNzc5MzAsIDc3OTM1LCAKLSAgICA3NzkzOSwgNzc5NDQsIDc3OTQ4LCA3Nzk1NCwgNzc5NTksIDc3OTYzLCA3Nzk2OCwgNzc5NzIsIDc3OTc3LCA3Nzk4MSwgCi0gICAgNzc5ODYsIDc3OTkwLCA3Nzk5NSwgMTUyMSwgNzc5OTksIDI4MjQsIDE3NTksIDE3NjQsIDc4MDAzLCA3ODAwNywgMjgyOCwgCi0gICAgNzgwMTEsIDEzOTcsIDc4MDE2LCAxMzQyLCA3ODAyMCwgMjg0MCwgNzgwMjQsIDc4MDMxLCA3ODAzOCwgNzgwNTIsIDI4NDQsIAotICAgIDcxMzEsIDc4MDYxLCA3ODA2OSwgNzgwNzYsIDc4MDg3LCA3ODA5NiwgNzgxMDMsIDc4MTE1LCA3ODEyOCwgNzgxNDEsIAotICAgIDc4MTUyLCA3ODE1NywgNzgxNjQsIDc4MTc2LCA3ODE4MCwgMjg0OCwgMTE3NDAsIDc4MTkwLCA3ODE5NSwgNzgyMDQsIAotICAgIDc4MjE0LCAyODUyLCA3ODIxOSwgNzgyMjMsIDc4MjI4LCA3ODIzNSwgNzgyNDEsIDc4MjQ5LCA3ODI2MSwgMTM0NywgCi0gICAgMTMwMzUsIDc4MjcxLCA3ODI3NSwgNzgyODEsIDc4Mjk1LCA3ODMwNywgNzgzMTksIDc4MzI5LCA3ODMzOCwgNzgzNDcsIAotICAgIDc4MzU2LCA3ODM2NCwgNzgzNzUsIDc4MzgzLCA0MDUxLCA3ODM5MywgNzg0MDQsIDc4NDEzLCA3ODQxOSwgNzg0MzQsIAotICAgIDc4NDQxLCA3ODQ0NywgMzU0ODksIDc4NDUyLCAyODc2LCAxMzAzOSwgNzg0NTYsIDc4NDYzLCA4OTMwLCA3ODQ3MiwgMjg4MSwgCi0gICAgMzIzMzYsIDc4NDc4LCA2MDU3MiwgNzg0ODUsIDc4NDkxLCA3ODUwMiwgNzg1MDgsIDc4NTE1LCA3ODUyMSwgNzg1MjksIAotICAgIDc4NTM2LCA3ODU0MiwgNzg1NTIsIDc4NTYxLCA3ODU3MiwgNzg1NzksIDc4NTg1LCA3ODU5NSwgNzg2MDMsIDc4NjA5LCAKLSAgICA3ODYyNCwgNzg2MzAsIDc4NjM1LCA3ODY0MiwgNzg2NDUsIDc4NjUxLCA3ODY1OCwgNzg2NjQsIDc4NjcyLCA3ODY4MSwgCi0gICAgNzg2ODksIDc4Njk1LCA3ODcwNCwgNDE0MjcsIDc4NzE4LCA3ODcyMywgNzg3MjksIDE0NzQ0LCA3ODczNCwgNzg3NDcsIAotICAgIDc4NzU2LCA3ODc2NCwgNzg3NzEsIDc4Nzc1LCA3ODc3OSwgNzg3ODIsIDc4Nzg5LCA3ODc5NiwgNzg4MDQsIDc4ODEyLCAKLSAgICA3ODgyMSwgNzg4MjksIDE0NjcxLCA3ODgzNywgNzg4NDIsIDc4ODQ2LCA3ODg1OCwgNzg4NjUsIDc4ODc0LCA3NDgsIAotICAgIDc4ODg0LCA3ODg5MywgNzg5MDQsIDI4OTcsIDc4OTA4LCA3ODkxMiwgNzg5MTgsIDc4OTMxLCA3ODk0MywgNzg5NTMsIAotICAgIDc4OTYyLCA3ODk3NCwgMjYzNTIsIDc4OTg1LCA3ODk5MywgNzkwMDIsIDc5MDEzLCA3OTAyNCwgNzkwMzQsIDc5MDQ0LCAKLSAgICA3OTA1MywgNzkwNjEsIDExMzA1LCA3OTA2OCwgNzkwNzIsIDc5MDc1LCA3OTA4MCwgNzkwODUsIDc5MDg5LCA3OTA5NSwgCi0gICAgMTM1MiwgMTE4MTEsIDc5MTAyLCA3OTExMywgNzkxMjIsIDc5MTMwLCA3OTEzOSwgNzkxNDcsIDc5MTYzLCA3OTE3NCwgCi0gICAgNzkxODMsIDc5MTkxLCA3OTIwMywgNzkyMTQsIDc5MjMwLCA3OTI0MCwgNzkyNjEsIDc5Mjc0LCA3OTI4MiwgNzkyODksIAotICAgIDE0ODU1LCA3OTMwMiwgNzkzMDcsIDc5MzEzLCA1OTA4LCA3OTMxOSwgNzkzMjIsIDc5MzI5LCA3OTMzOSwgODE3NiwgCi0gICAgNzkzNDYsIDc5MzUxLCA3OTM1NiwgNzkzNjEsIDc5MzY5LCA3OTM3OCwgNzkzODYsIDk3NDksIDk3NTgsIDc5MzkxLCAKLSAgICA3OTQwMiwgNzk0MDcsIDc5NDEzLCAyOTEzLCAyOTE4LCA3OTQxOSwgMTA4NzIsIDc5NDI1LCA3OTQzMiwgNzk0MzksIAotICAgIDc5NDUyLCAyMjUxLCA2OCwgNzk0NTcsIDc5NDYyLCA3OTQ3MiwgNzk0NzgsIDc5NDg3LCA3OTQ5NSwgNzk1MDUsIDc5NTA5LCAKLSAgICA3OTUxNCwgNzk1MTgsIDc5NTMwLCAyOTQxLCA3OTUzOCwgNzk1NDYsIDc5NTUxLCA3OTU2MiwgNzk1NzMsIDc5NTgyLCAKLSAgICA3OTU4NywgNzk1OTMsIDc5NTk4LCA3OTYwOCwgNzk2MTgsIDc5NjIzLCA3OTYyOSwgNzk2MzQsIDc5NjQzLCAyMTM5NywgCi0gICAgNzk2NDcsIDQxMjgsIDIwLCA3OTY1MiwgNzk2NjEsIDc5NjY4LCA3OTY3NSwgNzk2ODEsIDc5Njg3LCA4NjQsIDc5NjkyLCAKLSAgICA3OTY5NywgNjA5MDAsIDc5NzAyLCA3OTcwNywgNzk3MTMsIDc5NzE5LCA3OTcyNywgNzk3MzIsIDc5NzM5LCA3OTc0NSwgCi0gICAgNzk3NTAsIDM4MDAxLCA0MTMyMSwgNzk3NTYsIDI5NDUsIDMyLCA3OTc2NiwgNzk3NzksIDc5Nzg0LCA3OTc5MiwgNzk3OTcsIAotICAgIDc5ODAzLCAyOTY3LCAyODI4OSwgNzk4MDgsIDc5ODE2LCA3OTgyMywgNzk4MjgsIDU4NjQ1LCA2MTkwMywgNzk4MzcsIAotICAgIDc5ODQxLCAxNzA0LCAxODEzLCA3OTg0NiwgNzk4NTEsIDc5ODU4LCAxODE3LCAyNDcsIDc5ODY1LCA3OTg3MSwgMjk4OSwgCi0gICAgNzk4NzYsIDc5ODgxLCA3OTg4OCwgMTgyMSwgNzk4OTMsIDc5ODk5LCA3OTkwNCwgNzk5MTYsIDYxMTksIDc5OTI2LCAxODI4LCAKLSAgICA3OTkzMiwgNzk5MzcsIDc5OTQ0LCA3OTk1MSwgNzk5NjYsIDc5OTczLCA3OTk4NCwgNzk5OTIsIDI2MTgsIDc5OTk2LCAKLSAgICA4MDAwOCwgODAwMTMsIDgwMDE3LCA4MDAyMywgMjgxMTQsIDIyNTYsIDgwMDI3LCA4MDAzOCwgODAwNDIsIDgwMDQ2LCAKLSAgICA4MDA1MiwgODAwNTYsIDgwMDY1LCA4MDA2OSwgODAwODAsIDgwMDg0LCAyMzAyLCAzMjE2NSwgODAwODgsIDgwMDk4LCAKLSAgICAzMDgwLCA5MzY0LCA4MDEwNiwgODAxMTEsIDgwMTE1LCA4MDEyNCwgODAxMzEsIDgwMTM3LCAzMDUwLCAxNzEzOSwgODAxNDEsIAotICAgIDgwMTU0LCA4MDE3MiwgODAxNzcsIDgwMTg1LCA4MDE5MywgODAyMDMsIDk5NzgsIDEzMTQ3LCA4MDIxNSwgODAyMjgsIAotICAgIDgwMjM1LCA4MDI0MiwgODAyNTgsIDgwMjY1LCA4MDI3MSwgMTA5NSwgODAyNzgsIDgwMjg1LCA4MDI5NSwgODAzMDQsIAotICAgIDgwMzE2LCA0MjI5MSwgODAzMjQsIDMwNjQsIDEyMDIzLCA4MDMyNywgODAzMzUsIDgwMzM5LCA3ODIzMSwgMzA2OCwgCi0gICAgODAzNDMsIDIxMTc4LCAxMjAzOSwgMzc1NiwgODAzNDcsIDMwNzQsIDgwMzUxLCA4MDM2MSwgODAzNjcsIDgwMzczLCAKLSAgICA4MDM3OSwgODAzODUsIDgwMzkxLCA4MDM5NywgODA0MDMsIDgwNDA5LCA4MDQxNSwgODA0MjEsIDgwNDI3LCA4MDQzMywgCi0gICAgODA0MzksIDgwNDQ1LCA4MDQ1MSwgODA0NTcsIDgwNDYzLCA4MDQ2OSwgODA0NzUsIDgwNDgxLCA4MDQ4NywgODA0OTMsIAotICAgIDgwNDk5LCA4MDUwNSwgODA1MTEsIDgwNTE4LCA4MDUyNSwgODA1MzEsIDgwNTM3LCA4MDU0MywgODA1NDksIDgwNTU1LCAKLSAgICA4MDU2MSwgMTM1NywgMTYwNDksIDEyMDYxLCA4MDU2NywgODA1NzIsIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCAKLSAgICA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgCi0gICAgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgODA2OTIsIAotICAgIDgwNjk4LCA4MDcwMywgODA3MDgsIDgwNzE0LCA4MDcxOSwgODA3MjUsIDgwNzMwLCA4MDczNSwgODA3NDEsIDgwNzQ2LCAKLSAgICA4MDc1MSwgODA3NTYsIDgwNzYxLCA4MDc2NiwgODA3NzEsIDgwNzc2LCA4MDc4MSwgODAzNjIsIDgwMzY4LCA4MDM3NCwgCi0gICAgODAzODAsIDgwMzg2LCA4MDM5MiwgODAzOTgsIDgwNDA0LCA4MDQxMCwgODA0MTYsIDgwNDIyLCA4MDQyOCwgODA0MzQsIAotICAgIDgwNDQwLCA4MDQ0NiwgODA3ODcsIDgwNDUyLCA4MDQ1OCwgODA0NjQsIDgwNzkzLCA4MDQ3MCwgODA0NzYsIDgwNDgyLCAKLSAgICA4MDQ4OCwgODA0OTQsIDgwNTAwLCA4MDUwNiwgODA1MjYsIDgwNzk5LCA4MDgwNSwgODA1MzIsIDgwODExLCA4MDUzOCwgCi0gICAgODA1NDQsIDgwNTUwLCA4MDU1NiwgODA1NjIsIDMwOTEsIDMwOTYsIDgwODE3LCA4MDgyMiwgODA4MjUsIDgwODMxLCAKLSAgICA4MDgzNywgODA4NDQsIDgwODQ5LCA4MDg1NCwgMjMwNywgCisgICAgODkzNSwgODkzOSwgODk0NCwgODk0OSwgODk1NiwgODk2MiwgODk3MiwgNzkwOSwgODk3OCwgODk4MiwgODk4OSwgODk5NiwgCisgICAgNzY4LCA5MDAwLCA5MDA0LCA5MDA5LCA5MDE0LCA5MDE5LCA5MDIzLCA5MDI5LCA5MDM3LCA5MDQzLCA5MDQ3LCA5MDUzLCAKKyAgICA5MDYzLCA5MDY3LCA5MDczLCA5MDc4LCA5MDgyLCA5MDg4LCA5MDk0LCAyMTYxLCA5MDk5LCA5MTAxLCA5MTA2LCA5MTE0LCAKKyAgICA5MTIzLCA5MTI3LCA5MTMzLCA5MTM4LCA5MTQzLCA5MTQ4LCA5MTUzLCA5MTU5LCA5MTY0LCA5MTY5LCA0MDA2LCA5MTc0LCAKKyAgICA5MTc5LCA5MTgzLCA5MTg5LCA5MTk0LCA5MjAwLCA5MjA1LCA5MjEwLCA5MjE2LCA5MjIxLCA5MTI4LCA5MjI3LCA5MjMxLCAKKyAgICA5MjM4LCA5MjQ0LCA5MjQ5LCA5MjUzLCA2MTgzLCA5MjU4LCA5MjY3LCA5MjcyLCA5Mjc3LCA4MjE4LCA4MjI1LCA5MjgyLCAKKyAgICAyODUzLCA5Mjg2LCA5MjkxLCA5Mjk2LCA5MTM5LCA5MzAwLCA5MzA1LCA5MTQ0LCA5MTQ5LCA5MzEwLCA5MzE3LCA5MzI0LCAKKyAgICA5MzMwLCA5MzM2LCA5MzQyLCA5MzQ3LCA5MzUyLCA5MzU3LCA5MTU0LCA5MTYwLCA5MzYzLCA5MzY5LCA5Mzc0LCA5MzgyLCAKKyAgICA5MTY1LCA5Mzg3LCA5OTAsIDkzOTAsIDkzOTgsIDk0MDQsIDk0MTAsIDk0MTksIDk0MjcsIDk0MzIsIDk0MzgsIDk0NDYsIAorICAgIDk0NTMsIDk0NjgsIDk0ODUsIDk1MDQsIDk1MTMsIDk1MjEsIDk1MzYsIDk1NDcsIDk1NTcsIDk1NjcsIDk1NzUsIDk1ODEsIAorICAgIDk1OTMsIDk2MDIsIDk2MTAsIDk2MTcsIDk2MjQsIDk2MzAsIDk2MzUsIDk2NDMsIDk2NTMsIDk2NjAsIDk2NzAsIDk2ODAsIAorICAgIDk2OTAsIDk2OTgsIDk3MDUsIDk3MTQsIDk3MjQsIDk3MzgsIDk3NTMsIDk3NjIsIDk3NzAsIDk3NzUsIDk3NzksIDk3ODgsIAorICAgIDk3OTQsIDk3OTksIDk4MDksIDk4MTksIDk4MjksIDk4MzQsIDk4MzgsIDk4NDcsIDk4NTIsIDk4NjIsIDk4NzMsIDk4ODYsIAorICAgIDk4OTQsIDk5MDcsIDk5MTksIDk5MjcsIDk5MzIsIDk5MzYsIDk5NDIsIDk5NDcsIDk5NTUsIDk5NjMsIDk5NzAsIDk5NzUsIAorICAgIDk5ODMsIDk5ODksIDk5OTIsIDk5OTYsIDEwMDAyLCAxMDAxMCwgMTAwMTUsIDEwMDE5LCAxMDAyNywgMTAwMzYsIDEwMDQ0LCAKKyAgICAxMDA1MCwgMTAwNTQsIDEwMDYxLCAxMDA3MiwgMTAwNzYsIDEwMDc5LCAxMDA4NSwgOTE3MCwgMTAwOTAsIDEwMDk2LCAKKyAgICAxMDEwMywgMTAxMDksIDEwMTE0LCAxMDEyMSwgMTAxMjgsIDEwMTM1LCAxMDE0MiwgMTAxNDksIDEwMTU2LCAxMDE2MywgCisgICAgMTAxNzAsIDEwMTc1LCA5NDgxLCAxMDE4MCwgMTAxODYsIDEwMTkzLCAxMDIwMCwgMTAyMDUsIDEwMjEyLCAxMDIyMSwgCisgICAgMTAyMjUsIDEwMjM3LCA4MjU2LCAxMDI0MSwgMTAyNDQsIDEwMjQ4LCAxMDI1MiwgMTAyNTYsIDEwMjYwLCAxMDI2NiwgCisgICAgMTAyNzIsIDEwMjc3LCAxMDI4MywgMTAyODgsIDEwMjkzLCAxMDI5OSwgMTAzMDQsIDEwMzA5LCA4OTUyLCAxMDMxNCwgCisgICAgMTAzMTgsIDEwMzIyLCAxMDMyNiwgMTAzMzEsIDEwMzM2LCAxMDM0NCwgMTAzNTAsIDEwMzU0LCAxMDM1OCwgMTAzNjUsIAorICAgIDEwMzcwLCAxMDM3OCwgMTAzODMsIDEwMzg3LCAxMDM5MCwgMTAzOTYsIDEwNDAzLCAxMDQwNywgMTA0MTAsIDEwNDE1LCAKKyAgICAxMDQxOSwgNDA0NSwgMTA0MjUsIDEwNDM0LCAzNiwgMTA0NDIsIDEwNDQ4LCAxMDQ1MywgODk2NywgMTA0NTgsIDEwNDYzLCAKKyAgICAxMDQ2NywgMTA0NzAsIDEwNDg1LCAxMDUwNCwgMTA1MTYsIDEwNTI5LCAxMDU0MiwgMTA1NTUsIDEwNTY5LCAxMDU4MiwgCisgICAgMTA1OTcsIDEwNjA0LCA5MTc1LCAxMDYxMCwgMTA2MjQsIDEwNjI5LCAxMDYzNSwgMTA2NDAsIDEwNjQ4LCAxMDY1MywgCisgICAgODA0MCwgMTA2NTgsIDEwNjYxLCAxMDY2OCwgMTA2NzMsIDEwNjc3LCAyODU4LCA5OTgsIDEwNjgzLCAxMDY4NywgMTA2OTMsIAorICAgIDEwNjk5LCAxMDcwNCwgMTA3MTAsIDEwNzE1LCA5MTg0LCAxMDcyMSwgMTA3MjcsIDEwNzMyLCAxMDczNywgMTA3NDUsIAorICAgIDEwNzUxLCAxMDc2NCwgMTA3NzIsIDEwNzc5LCA5MTkwLCAxMDc4NSwgMTA3OTMsIDEwODAxLCAxMDgwOCwgMTA4MjEsIAorICAgIDEwODMzLCAxMDg0MywgMTA4NTEsIDEwODU4LCAxMDg2NSwgMTA4NzQsIDEwODgzLCAxMDg5MSwgMTA4OTgsIDEwOTAzLCAKKyAgICAxMDkwOSwgOTE5NSwgMTA5MTQsIDEwOTIwLCA5MjAxLCAxMDkyNSwgMTA5MjgsIDEwOTM1LCAxMDk0MSwgMTA5NTQsIDg2NjksIAorICAgIDEwOTY1LCAxMDk3MSwgMTA5ODAsIDEwOTg4LCAxMDk5NSwgMTEwMDEsIDExMDA3LCAxMTAxMiwgMTEwMTYsIDExMDIxLCAKKyAgICAxMDQ3NywgMTEwMjcsIDkyMDYsIDExMDM0LCAxMTAzOSwgMTEwNDYsIDExMDUyLCAxMTA1OCwgMTEwNjMsIDExMDcxLCAKKyAgICAxMTA3OSwgMTEwODYsIDExMDkwLCAxMTEwNCwgMTExMTQsIDExMTE5LCAxMTEyMywgMTExMzQsIDExMTQwLCAxMTE0NSwgCisgICAgMTExNTAsIDkyMTEsIDkyMTcsIDExMTU0LCAxMTE1NywgMTExNjIsIDExMTc0LCAxMTE4MSwgMTExODYsIDExMTkwLCAKKyAgICAxMTE5NSwgMTExOTksIDExMjA2LCAxMTIxMiwgOTIyMiwgOTEyOSwgMTEyMTksIDI4NjMsIDgsIDExMjI2LCAxMTIzMSwgCisgICAgMTEyMzUsIDExMjQxLCAxMTI0OSwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzYsIDExMjgzLCAxMTI4NywgMTEyOTgsIAorICAgIDExMzA4LCAxMTMxNywgMTEzMjksIDExMzM0LCAxMTMzOCwgMTEzNDYsIDExMzYwLCAxMTM2NCwgMTEzNjcsIDExMzc1LCAKKyAgICAxMTM4MiwgMTEzOTAsIDExMzk0LCAxMTQwNSwgMTE0MDksIDExNDE2LCAxMTQyMSwgMTE0MjUsIDExNDMxLCAxMTQzNiwgCisgICAgMTE0NDAsIDExNDQ2LCAxMTQ1MSwgMTE0NjIsIDExNDY2LCAxMTQ2OSwgMTE0NzUsIDExNDgwLCAxMTQ4NiwgMTE0OTIsIAorICAgIDExNDk5LCAxMTUxMCwgMTE1MjAsIDExNTMwLCAxMTUzOSwgMTE1NDYsIDExNTU1LCA5MjMyLCA5MjM5LCA5MjQ1LCA5MjUwLCAKKyAgICAxMTU2MSwgMTE1NjcsIDkyNTQsIDExNTczLCAxMTU3NiwgMTE1ODMsIDExNTg4LCAxMTYwMywgMTE2MTksIDExNjM0LCAKKyAgICAxMTY0MiwgMTE2NDgsIDExNjUzLCA4MzgsIDQyMCwgMTE2NTgsIDExNjY2LCAxMTY3MywgMTE2NzksIDExNjg0LCAxMTY4OSwgCisgICAgOTI1OSwgMTE2OTEsIDExNjk1LCAxMTcwMCwgMTE3MDQsIDExNzE0LCAxMTcxOSwgMTE3MjMsIDExNzMyLCAxMTczNiwgCisgICAgMTE3MzksIDkyNjgsIDExNzQ2LCAxMTc0OSwgMTE3NTcsIDExNzY0LCAxMTc3MiwgMTE3NzYsIDExNzgzLCAxMTc5MiwgCisgICAgMTE3OTUsIDExNzk5LCAxMTgwMywgMTE4MDksIDExODEzLCAxMTgxNywgMTE4MjEsIDExODI3LCAxMTgzNywgMTE4NDEsIAorICAgIDExODQ5LCAxMTg1MywgMTE4NjAsIDExODY0LCAxMTg2OSwgMTE4NzMsIDExODgwLCAxMTg4NiwgMTE4OTQsIDExOTAwLCAKKyAgICAxMTkwNSwgMTE5MTUsIDExOTIwLCAxMTkyNSwgMTE5MjksIDExOTM3LCAzOTA1LCAxMTk0NSwgMTE5NTAsIDkyNzMsIAorICAgIDExOTU0LCAxMTk1OCwgMTE5NjEsIDExOTY5LCAxMTk3NiwgMTE5ODAsIDU5OTEsIDExOTg0LCAxMTk4OSwgMTE5OTMsIAorICAgIDEyMDA0LCAxMjAxNCwgMTIwMTksIDEyMDI1LCAxMjAyOSwgMTIwMzIsIDEyMDQwLCAxMjA0NSwgMTIwNTAsIDEyMDU3LCAKKyAgICAxMjA2MiwgOTI3OCwgMTIwNjcsIDEyMDcxLCAxMjA3OCwgMTcyMiwgNjE0NSwgMTIwODMsIDEyMDg4LCAxMjA5MywgMTIwOTgsIAorICAgIDEyMTA0LCAxMjEwOSwgMTIxMTUsIDEyMTIwLCAxMjEyNSwgMTIxMzAsIDEyMTM1LCAxMjE0MCwgMTIxNDUsIDEyMTUwLCAKKyAgICAxMjE1NSwgMTIxNjAsIDEyMTY1LCAxMjE3MCwgMTIxNzUsIDEyMTgwLCAxMjE4NSwgMTIxOTAsIDEyMTk1LCAxMjIwMSwgCisgICAgMTIyMDYsIDEyMjExLCAxMjIxNiwgMTIyMjEsIDEyMjI2LCAxMjIzMiwgMTIyMzcsIDEyMjQyLCAxMjI0OCwgMTIyNTMsIAorICAgIDEyMjU5LCAxMjI2NCwgMTIyNzAsIDEyMjc1LCAxMjI4MCwgMTIyODUsIDEyMjkwLCAxMjI5NiwgMTIzMDEsIDEyMzA2LCAKKyAgICAxMjMxMSwgNzM3LCAxMzksIDEyMzE5LCAxMjMyMywgMTIzMjgsIDEyMzMzLCAxMjMzNywgMTIzNDEsIDEyMzQ1LCAxMjM1MCwgCisgICAgMTIzNTQsIDEyMzU5LCAxMjM2MywgMTIzNjYsIDEyMzcwLCAxMjM3NCwgMTIzODAsIDEyMzg1LCAxMjM5NSwgMTI0MDEsIAorICAgIDEyNDA5LCAxMjQxMywgMTI0MTcsIDEyNDI0LCAxMjQzMiwgMTI0NDEsIDEyNDUyLCAxMjQ1OSwgMTI0NjYsIDEyNDcwLCAKKyAgICAxMjQ3OSwgMTI0ODgsIDEyNDk2LCAxMjUwNSwgMTI1MTQsIDEyNTIzLCAxMjUzMiwgMTI1NDIsIDEyNTUyLCAxMjU2MiwgCisgICAgMTI1NzIsIDEyNTgyLCAxMjU5MSwgMTI2MDEsIDEyNjExLCAxMjYyMSwgMTI2MzEsIDEyNjQxLCAxMjY1MSwgMTI2NjEsIAorICAgIDEyNjcwLCAxMjY4MCwgMTI2OTAsIDEyNzAwLCAxMjcxMCwgMTI3MjAsIDEyNzMwLCAxMjczOSwgMTI3NDksIDEyNzU5LCAKKyAgICAxMjc2OSwgMTI3NzksIDEyNzg5LCAxMjc5OSwgMTI4MDksIDEyODE5LCAxMjgyOSwgMTI4MzgsIDEyODQ4LCAxMjg1OCwgCisgICAgMTI4NjgsIDEyODc4LCAxMjg4OCwgMTI4OTgsIDEyOTA4LCAxMjkxOCwgMTI5MjgsIDEyOTM4LCAxMjk0NywgMTI1NiwgCisgICAgMTI5NTMsIDEyOTU2LCAxMjk2MCwgMTI5NjUsIDEyOTcyLCAxMjk3OCwgMTI5ODMsIDEyOTg3LCAxMjk5MiwgMTMwMDEsIAorICAgIDEzMDA5LCAxMzAxNCwgMTMwMTgsIDEzMDIyLCAxMzAyOCwgMTMwMzMsIDEzMDM5LCA5Mjg3LCAxMzA0NCwgMTMwNDksIAorICAgIDEzMDU4LCA5MjkyLCAxMzA2MywgMTMwNjYsIDEzMDcyLCAxMzA4MCwgOTI5NywgMTMwODcsIDEzMDkxLCAxMzA5NSwgCisgICAgMTMwOTksIDEzMTA5LCAxMzExNSwgMTMxMjEsIDEzMTI2LCAxMzEzNSwgMTMxNDMsIDEzMTUwLCAxMzE1NywgMTMxNjIsIAorICAgIDEzMTY5LCAxMzE3NCwgMTMxNzgsIDEzMTgxLCAxMzE5MiwgMTMyMDIsIDEzMjExLCAxMzIxOSwgMTMyMzAsIDEzMjQyLCAKKyAgICAxMzI1MiwgMTMyNTcsIDEzMjYxLCAxMzI2NiwgMTMyNzEsIDEzMjc1LCAxMzI4MSwgMTMyODksIDEzMjk2LCAxMzMwNywgCisgICAgMTMzMTIsIDEzMzIyLCAxMzMyNiwgMTMzMjksIDEzMzM2LCAxMzM0NiwgMTMzNTUsIDEzMzYyLCAxMzM2NiwgMTMzNzMsIAorICAgIDEzMzc5LCAxMzM4NCwgMTMzODksIDEzMzkzLCAxMzQwMiwgMTM0MDcsIDEzNDEzLCAxMzQxNywgMTM0MjIsIDEzNDI2LCAKKyAgICAxMzQzNSwgMTM0NDMsIDEzNDUxLCAxMzQ1OCwgMTM0NjYsIDEzNDc4LCAxMzQ4OSwgMTM0OTksIDEzNTA2LCAxMzUxMiwgCisgICAgMTM1MjEsIDEzNTMyLCAxMzU0MSwgMTM1NTMsIDEzNTY1LCAxMzU3NywgMTM1ODcsIDEzNTk2LCAxMzYwNSwgMTM2MTMsIAorICAgIDEzNjIwLCAxMzYyOSwgMTM2MzcsIDEzNjQxLCAxMzY0NywgMTM2NTMsIDEzNjU4LCA3NzUzLCAxMzY2MiwgMTM2NjQsIAorICAgIDEzNjY4LCAxMzY3MywgMTM2NzksIDEzNjg4LCAxMzY5MiwgMTM3MDAsIDEzNzA3LCAxMzcxNiwgMTM3MjUsIDEzNzM0LCAKKyAgICAxMzc0MywgMTM3NTIsIDEzNzYxLCAxMzc3MCwgMTM3NzksIDEzNzg5LCAxMzc5OSwgMTM4MDgsIDEzODE0LCAxMzgyMSwgCisgICAgMTM4MjgsIDEzODM0LCAxMzg0OCwgMTM4NTUsIDEzODYzLCAxMzg3MiwgMTM4NzgsIDEzODg3LCAxMzg5NiwgMTM5MDcsIAorICAgIDEzOTE3LCAxMzkyNSwgMTM5MzIsIDEzOTQwLCAxMzk0OSwgMTM5NjIsIDEzOTcwLCAxMzk3NywgMTM5OTAsIDEzOTk2LCAKKyAgICAxNDAwMiwgMTQwMTIsIDE0MDIxLCAxNDAzMCwgMTQwMzUsIDE0MDM5LCAxNDA0NSwgMTQwNTEsIDE0MDU4LCA4OTY2LCAKKyAgICAxNDA2MywgMTQwNjgsIDE0MDc1LCAxNDA4MCwgMTIzNzYsIDE0MDg1LCAxNDA5MywgMTQwOTksIDE0MTA0LCAxNDExMiwgCisgICAgMTQxMjAsIDE0MTI3LCAxNDEzNSwgMTQxNDEsIDE0MTQ5LCAxNDE1NywgMTQxNjMsIDE0MTY4LCAxNDE3NCwgMTQxODEsIAorICAgIDE0MTg3LCAxNDE5MiwgMTQxOTYsIDE0MjA3LCAxNDIxNSwgMTQyMjEsIDE0MjI2LCAxNDIzNSwgMTQyNDEsIDE0MjQ2LCAKKyAgICAxNDI1NSwgMTQyNjksIDM4NTMsIDE0MjczLCAxNDI3OCwgMTQyODMsIDE0Mjg5LCAxNDI5NCwgMTQyOTksIDE0MzAzLCAKKyAgICAxNDMwOCwgMTQzMTMsIDE0MzE4LCA3NzUyLCAxNDMyMywgMTQzMjgsIDE0MzMzLCAxNDMzOCwgMTQzNDMsIDE0MzQ3LCAKKyAgICAxNDM1MiwgMTQzNTcsIDE0MzYyLCAxNDM2NywgMTQzNzMsIDE0Mzc5LCAxNDM4NCwgMTQzODgsIDE0MzkzLCAxNDM5OCwgCisgICAgMTQ0MDMsIDkzMDEsIDE0NDA4LCAxNDQxMywgMTQ0MTgsIDE0NDIzLCAxNDQyOCwgMTQ0NDUsIDE0NDYzLCAxNDQ3NSwgCisgICAgMTQ0ODgsIDE0NTA1LCAxNDUyMSwgMTQ1MzgsIDE0NTQ4LCAxNDU2NywgMTQ1NzgsIDE0NTg5LCAxNDYwMCwgMTQ2MTEsIAorICAgIDE0NjIzLCAxNDYzNCwgMTQ2NDUsIDE0NjYyLCAxNDY3MywgMTQ2ODQsIDE0Njg5LCA5MzA2LCAxNDY5NCwgMTQ2OTgsIAorICAgIDIzODEsIDE0NzAyLCAxNDcwNSwgMTQ3MTEsIDE0NzE5LCAxNDcyNywgMTQ3MzIsIDE0NzQwLCAxNDc0OCwgMTQ3NTUsIAorICAgIDE0NzYwLCAxNDc2NiwgMTQ3NzMsIDE0NzgxLCAxNDc4OCwgMTQ4MDAsIDE0ODA4LCAxNDgxMywgMTE1OTcsIDE0ODE5LCAKKyAgICAxNDgyOCwgMTQ4MzcsIDE0ODQ1LCAxNDg1MiwgMTQ4NTgsIDE0ODY2LCAxNDg3MywgMTQ4NzksIDE0ODg2LCAxNDg5MiwgCisgICAgMTQ5MDEsIDE0OTA5LCAxNDkxOSwgMTQ5MjYsIDE0OTMyLCAxNDk0MCwgMTQ5NDYsIDE0OTU0LCAxNDk2MSwgMTQ5NzQsIAorICAgIDE0OTgxLCAxNDk5MCwgMTQ5OTksIDE1MDA4LCAxNTAxNiwgMTUwMjYsIDE1MDMzLCAxNTAzOCwgMzU2MCwgMTUwNDUsIAorICAgIDE1MDUwLCAxMzcyLCAxNTA1NCwgMTQzMjQsIDE1MDU4LCAxNTA2NCwgMTUwNjgsIDE1MDc2LCAxNTA4OCwgMTUwOTMsIAorICAgIDE1MTAwLCAxNTEwNiwgMTUxMTEsIDE1MTE4LCAxNDMyOSwgMTUxMjIsIDE1MTI2LCAxNTEzMCwgMTQzMzQsIDE1MTM0LCAKKyAgICAxNDMzOSwgMTUxMzgsIDE1MTQ1LCAxNTE1MCwgMTUxNTQsIDE1MTYxLCAxNTE2NSwgMTUxNzMsIDE1MTgwLCAxNTE4NCwgCisgICAgMTUxOTEsIDE1MjA4LCAxNTIxNywgMTUyMjEsIDE1MjI0LCAxNTIzMiwgMTUyMzgsIDE1MjQzLCAzNjM4LCAxNTI0NywgCisgICAgMTUyNDksIDE1MjU3LCAxNTI2NCwgMTUyNzQsIDE1Mjg2LCAxNTI5MSwgMTUyOTcsIDE1MzAyLCAxNTMwNiwgMTUzMTIsIAorICAgIDE1MzE3LCAxNTMyMywgMTUzMjYsIDE1MzMzLCAxNTM0MSwgMTUzNDgsIDE1MzU0LCAxNTM2MCwgMTUzNjUsIDE1MzcyLCAKKyAgICAxNTM3OCwgMTUzODMsIDE1MzkwLCAxNTM5NCwgMTU0MDAsIDE1NDA0LCAxNTQxMSwgMTU0MTcsIDE1NDIzLCAxNTQzMSwgCisgICAgMTU0MzcsIDE1NDQyLCAxNTQ0OCwgMTU0NTYsIDE1NDY0LCAxNTQ3MCwgMTU0NzYsIDE1NDgxLCAxNTQ4OCwgMTU0OTMsIAorICAgIDE1NDk3LCAxNTUwMywgMTU1MDgsIDE1NTE1LCAxNTUyMCwgMTU1MjYsIDE1NTI5LCAxNTUzNSwgMTU1NDEsIDE1NTQ0LCAKKyAgICAxNTU0OCwgMTU1NjAsIDE1NTY2LCAxNTU3MSwgMTU1NzgsIDE1NTg0LCAxNTU5MCwgMTU2MDEsIDE1NjExLCAxNTYyMCwgCisgICAgMTU2MjgsIDE1NjM1LCAxNTY0NiwgMTU2NTYsIDE1NjY2LCAxNTY3NCwgMTU2NzcsIDE0MzUzLCAxNTY4MiwgMTU2ODcsIAorICAgIDE0MzU4LCAxNDQ5MywgMTU2OTUsIDE1NzA4LCAxNTcyMywgMTU3MzQsIDE0NTEwLCAxNTc1MiwgMTU3NjUsIDE1Nzc4LCAKKyAgICAxNTc4OSwgMTA0OTIsIDE1ODAwLCAxNTgxMywgMTU4MzIsIDE1ODQzLCAxNTg1NCwgMTU4NjUsIDI2NDksIDE1ODc4LCAKKyAgICAxNTg4MiwgMTU4OTAsIDE1OTA1LCAxNTkyMCwgMTU5MzEsIDE1OTM4LCAxNTk0NCwgMTU5NTIsIDE1OTU2LCAxNTk2MiwgCisgICAgMTU5NjUsIDE1OTc1LCAxNTk4MywgMTU5OTAsIDE1OTk4LCAxNjAwOCwgMTYwMTMsIDE2MDIwLCAxNjAyNSwgMTYwMzIsIAorICAgIDE2MDQzLCAxNjA1MywgMTYwNTksIDE2MDY0LCAxNjA2OSwgMTQzNjMsIDE2MDczLCAxNjA3OSwgMTYwODUsIDE2MDkwLCAKKyAgICAxNjA5NSwgMTYxMDAsIDE2MTA0LCAxNDM2OCwgMTQzNzQsIDE2MTA4LCAxNDM4MCwgMTYxMTMsIDE2MTIxLCAxNjEzMCwgCisgICAgMTYxMzcsIDkxNTAsIDE2MTQxLCAxNjE0MywgMTYxNDgsIDE2MTUzLCAxNjE1OSwgMTYxNjQsIDE2MTY5LCAxNjE3NCwgCisgICAgMTYxNzksIDE2MTgzLCAxNjE4OSwgMTYxOTUsIDE2MjAwLCAxNjIwNiwgMTYyMTEsIDE2MjE2LCAxNjIyMiwgMTYyMjcsIAorICAgIDE2MjMyLCAxNjIzNywgMTYyNDIsIDE2MjQ4LCAxNjI1MywgMTYyNTgsIDE2MjY0LCAxNjI3MCwgMTYyNzUsIDE2MjgwLCAKKyAgICAxNjI4NywgMTYyOTMsIDE2MzA0LCAxNjMxMSwgMTYzMTYsIDE2MzIwLCAxNjMyNCwgMTYzMjcsIDE2MzM1LCAxNjM0MCwgCisgICAgMTYzNDcsIDE2MzU0LCAxNjM2MCwgMTYzNjUsIDE2MzcwLCAxNjM3NywgMTYzODcsIDE2MzkyLCAxNjM5OSwgMTY0MDUsIAorICAgIDE2NDE1LCAxNjQyNSwgMTY0MzksIDE2NDUzLCAxNjQ2NywgMTY0ODEsIDE2NDk2LCAxNjUxMSwgMTY1MjgsIDE2NTQ2LCAKKyAgICAxNjU1OSwgMTY1NjUsIDE2NTcwLCAxNjU3NSwgMTY1NzksIDE2NTg0LCAxNjU5MiwgMTY1OTgsIDE2NjAzLCAxNjYwOCwgCisgICAgMTY2MTIsIDE2NjE3LCAxNjYyMSwgMTY2MjYsIDE2NjMwLCAxNjY0MSwgMTY2NDcsIDE2NjUyLCAxNjY1NywgMTY2NjQsIAorICAgIDE2NjY5LCAxNjY3MywgMTY2NzgsIDE2NjgzLCAxNjY4OSwgMTY2OTYsIDE2NzAyLCAxNjcwNywgMTY3MTEsIDE2NzE3LCAKKyAgICAxNjcyMiwgMTY3MjcsIDE2NzMxLCAxNjczNywgMTY3NDIsIDE2NzQ3LCAxNjc1NCwgMTY3NTksIDEzMTExLCAxNjc2MywgCisgICAgMTY3NjgsIDE2NzcyLCAxNjc3NywgMTY3ODMsIDE2Nzg5LCAxNjc5NiwgMTY4MDYsIDE2ODE0LCAxNjgyMSwgMTY4MjYsIAorICAgIDE2ODMwLCAxNjgzOSwgMTY4NDcsIDE2ODU0LCAxNjg2MSwgMTY4NjcsIDE2ODczLCAxNjg3OCwgMTY4ODMsIDE2ODg5LCAKKyAgICAxNjg5NCwgMTY5MDAsIDE2OTA1LCAxNjkxMSwgMTY5MTcsIDE2OTI0LCAxNjkzMCwgMTY5MzUsIDE2OTQwLCA5MzQ4LCAKKyAgICAxNjk0OSwgMTY5NTIsIDE2OTU4LCAxNjk2MywgMTY5NjgsIDE2OTc4LCAxNjk4NSwgMTY5OTEsIDE2OTk2LCAxNzAwMSwgCisgICAgMTcwMDcsIDE3MDEyLCAxNzAxOCwgMTcwMjMsIDE3MDI5LCAxNzAzNSwgMTcwNDAsIDE3MDQ4LCAxNzA1NSwgMTcwNjAsIAorICAgIDE3MDY1LCAxNzA3MSwgMTcwNzYsIDE3MDgwLCAxNzA4OSwgMTcxMDAsIDE3MTA3LCAxNzExMiwgMTcxMjAsIDE3MTI2LCAKKyAgICAxNzEzMywgMTcxMzksIDE3MTQ0LCAxNzE0OCwgMTcxNTQsIDE3MTU5LCAxNzE2NCwgMTcxNjksIDE0NDAsIDc3NzcsIDI4NzcsIAorICAgIDE3MTczLCAxNzE3NywgMTcxODEsIDE3MTg1LCAxNzE4OSwgMTcxOTMsIDE3MTk2LCAxNzIwMywgMTcyMTEsIDE0Mzk0LCAKKyAgICAxNzIxOCwgMTcyMjgsIDE3MjM2LCAxNzI0MywgMTcyNTEsIDE3MjYxLCAxNzI3MCwgMTcyODMsIDE3Mjg4LCAxNzI5MywgCisgICAgMTczMDEsIDE3MzA4LCAxMzIwNywgMTMyMTYsIDE3MzE1LCAxNzMyNSwgMTczNDAsIDE3MzQ2LCAxNzM1MywgMTczNjAsIAorICAgIDE3MzY2LCAxNzM3NCwgMTczODQsIDE3Mzk0LCAxNDM5OSwgMTc0MDMsIDE3NDA5LCAxNzQxNSwgMTc0MjMsIDE3NDMxLCAKKyAgICAxNzQzNiwgMTc0NDUsIDE3NDUzLCAxNzQ2NSwgMTc0NzUsIDE3NDg1LCAxNzQ5NSwgMTc1MDQsIDE3NTE2LCAxNzUyNiwgCisgICAgMTc1MzYsIDE3NTQ3LCAxNzU1MiwgMTc1NjQsIDE3NTc2LCAxNzU4OCwgMTc2MDAsIDE3NjEyLCAxNzYyNCwgMTc2MzYsIAorICAgIDE3NjQ4LCAxNzY2MCwgMTc2NzIsIDE3NjgzLCAxNzY5NSwgMTc3MDcsIDE3NzE5LCAxNzczMSwgMTc3NDMsIDE3NzU1LCAKKyAgICAxNzc2NywgMTc3NzksIDE3NzkxLCAxNzgwMywgMTc4MTQsIDE3ODI2LCAxNzgzOCwgMTc4NTAsIDE3ODYyLCAxNzg3NCwgCisgICAgMTc4ODYsIDE3ODk4LCAxNzkxMCwgMTc5MjIsIDE3OTM0LCAxNzk0NSwgMTc5NTcsIDE3OTY5LCAxNzk4MSwgMTc5OTMsIAorICAgIDE4MDA1LCAxODAxNywgMTgwMjksIDE4MDQxLCAxODA1MywgMTgwNjUsIDE4MDc2LCAxODA4OCwgMTgxMDAsIDE4MTEyLCAKKyAgICAxODEyNCwgMTgxMzYsIDE4MTQ4LCAxODE2MCwgMTgxNzIsIDE4MTg0LCAxODE5NiwgMTgyMDcsIDE4MjE5LCAxODIzMSwgCisgICAgMTgyNDMsIDE4MjU1LCAxODI2NywgMTgyNzksIDE4MjkxLCAxODMwMywgMTgzMTUsIDE4MzI3LCAxODMzOCwgMTgzNTAsIAorICAgIDE4MzYyLCAxODM3NCwgMTgzODYsIDE4Mzk4LCAxODQxMCwgMTg0MjIsIDE4NDM0LCAxODQ0NiwgMTg0NTgsIDE4NDY5LCAKKyAgICAxODQ4MSwgMTg0OTMsIDE4NTA1LCAxODUxNywgMTg1MzAsIDE4NTQzLCAxODU1NiwgMTg1NjksIDE4NTgyLCAxODU5NSwgCisgICAgMTg2MDgsIDE4NjIwLCAxODYzMywgMTg2NDYsIDE4NjU5LCAxODY3MiwgMTg2ODUsIDE4Njk4LCAxODcxMSwgMTg3MjQsIAorICAgIDE4NzM3LCAxODc1MCwgMTg3NjIsIDE4Nzc1LCAxODc4OCwgMTg4MDEsIDE4ODE0LCAxODgyNywgMTg4NDAsIDE4ODUzLCAKKyAgICAxODg2NiwgMTg4NzksIDE4ODkyLCAxODkwNCwgMTg5MTcsIDE4OTMwLCAxODk0MywgMTg5NTYsIDE4OTY5LCAxODk4MiwgCisgICAgMTg5OTUsIDE5MDA4LCAxOTAyMSwgMTkwMzQsIDE5MDQ2LCAxOTA1OSwgMTkwNzIsIDE5MDg1LCAxOTA5OCwgMTkxMTEsIAorICAgIDE5MTI0LCAxOTEzNywgMTkxNTAsIDE5MTYzLCAxOTE3NiwgMTkxODgsIDE5MjAxLCAxOTIxNCwgMTkyMjcsIDE5MjQwLCAKKyAgICAxOTI1MywgMTkyNjYsIDE5Mjc5LCAxOTI5MiwgMTkzMDUsIDE5MzE4LCAxOTMzMCwgMTkzNDEsIDE5MzU0LCAxOTM2NywgCisgICAgMTkzODAsIDE5MzkzLCAxOTQwNiwgMTk0MTksIDE5NDMyLCAxOTQ0NSwgMTk0NTgsIDE5NDcxLCAxOTQ4MywgMTk0OTYsIAorICAgIDE5NTA5LCAxOTUyMiwgMTk1MzUsIDE5NTQ4LCAxOTU2MSwgMTk1NzQsIDE5NTg3LCAxOTYwMCwgMTk2MTMsIDE5NjI1LCAKKyAgICAxOTYzOCwgMTk2NTEsIDE5NjY0LCAxOTY3NywgMTk2OTAsIDE5NzAzLCAxOTcxNiwgMTk3MjksIDE5NzQyLCAxOTc1NSwgCisgICAgMTk3NjcsIDE5NzgwLCAxOTc5MywgMTk4MDYsIDE5ODE5LCAxOTgzMiwgMTk4NDUsIDE5ODU4LCAxOTg3MSwgMTk4ODQsIAorICAgIDE5ODk3LCAxOTkwOSwgMTk5MjIsIDE5OTM1LCAxOTk0OCwgMTk5NjEsIDE5OTc0LCAxOTk4NywgMjAwMDAsIDIwMDEzLCAKKyAgICAyMDAyNiwgMjAwMzksIDIwMDUxLCAyMDA2NCwgMjAwNzcsIDIwMDkwLCAyMDEwMywgMjAxMTYsIDIwMTI5LCAyMDE0MiwgCisgICAgMjAxNTUsIDIwMTY4LCAyMDE4MSwgMjAxOTMsIDIwMjA2LCAyMDIxOSwgMjAyMzIsIDIwMjQ1LCAyMDI1OCwgMjAyNzEsIAorICAgIDIwMjg0LCAyMDI5NywgMjAzMTAsIDIwMzIzLCAyMDMzNSwgMjAzNDgsIDIwMzYxLCAyMDM3NCwgMjAzODcsIDIwNDAwLCAKKyAgICAyMDQxMywgMjA0MjYsIDIwNDM5LCAyMDQ1MiwgMjA0NjUsIDIwNDc3LCAyMDQ5MCwgMjA1MDMsIDIwNTE2LCAyMDUyOSwgCisgICAgMjA1NDIsIDIwNTU1LCAyMDU2OCwgMjA1ODEsIDIwNTk0LCAyMDYwNywgMjA2MTksIDIwNjMyLCAyMDY0NSwgMjA2NTgsIAorICAgIDIwNjcxLCAyMDY4NCwgMjA2OTcsIDIwNzEwLCAyMDcyMywgMjA3MzYsIDIwNzQ5LCAyMDc2MSwgMjA3NzIsIDIwNzgwLCAKKyAgICAyMDc4OCwgMjA3OTUsIDIwODAxLCAyMDgwNSwgMjA4MTEsIDIwODE3LCAyMDgyNSwgMjA4MzEsIDIwODM2LCAyMDg0MCwgCisgICAgMjA4NDksIDkxNTUsIDIwODYwLCAyMDg2NywgMjA4NzUsIDIwODgyLCAyMDg4OSwgMTA5NDgsIDIwODk2LCAyMDkwNSwgCisgICAgMjA5MTAsIDIwOTE1LCA3ODA1LCAyMDkyMiwgMjA5MjcsIDIwOTMwLCAyMDkzNSwgMjA5NDMsIDIwOTUwLCAyMDk1NywgCisgICAgMjA5NjQsIDIwOTcwLCAyMDk3OSwgMjA5ODgsIDIwOTk0LCAyMTAwMywgMjEwMDcsIDIxMDEzLCAyMTAxOCwgMjEwMjgsIAorICAgIDIxMDM1LCAyMTA0MSwgMjEwNDksIDIxMDU1LCAyMTA2MiwgMjEwNzIsIDIxMDgxLCAyMTA4NSwgMjEwOTIsIDIxMDk2LCAKKyAgICAyMTEwMSwgMjExMDcsIDIxMTE1LCAyMTExOSwgMjExMjksIDE0NDA5LCAyMTEzOCwgMjExNDQsIDIxMTQ4LCAyMTE1NywgCisgICAgMTQ0MTQsIDIxMTYzLCAyMTE3MCwgMjExODEsIDIxMTg5LCAyMTE5OCwgMjEyMDYsIDg5MzEsIDIxMjE0LCAyMTIxOSwgCisgICAgMjEyMjUsIDIxMjMwLCAyMTIzNCwgMjEyMzgsIDIxMjQyLCA5NjM5LCAyMTI0NywgMjEyNTUsIDIxMjYyLCAyMTI3MSwgCisgICAgMjEyNzgsIDIxMjg1LCAxMDg3OCwgMjEyOTIsIDIxMjk4LCAyMTMwMiwgMjEzMDgsIDIxMzE1LCAyMTMyMSwgMjEzMjksIAorICAgIDIxMzM1LCAyMTM0MiwgMjEzNDgsIDIxMzU0LCAyMTM2MywgMjEzNjcsIDIxMzc1LCAyMTM4NCwgMjEzOTEsIDIxMzk2LCAKKyAgICAyMTQwMCwgMjE0MTEsIDIxNDE2LCAyMTQyMSwgMjE0MjYsIDIxNDM5LCA3OTk1LCAyMTQ0MywgMjE0NDksIDIxNDU3LCAKKyAgICAyMTQ2MSwgMjE0NjgsIDIxNDc3LCAyMTQ4MiwgMTQ2ODUsIDIxNDkwLCAyMTQ5NCwgMjE1MDYsIDIxNTExLCAyMTUxNSwgCisgICAgMjE1MTgsIDIxNTI0LCAyMTUzMCwgMjE1MzUsIDIxNTM5LCAyMTU0MiwgMjE1NTMsIDIxNTU4LCA5MzgzLCAyMTU2NSwgCisgICAgMjE1NzAsIDkzODgsIDIxNTc1LCAyMTU4MCwgMjE1ODUsIDIxNTkwLCAyMTU5NSwgMjE2MDAsIDIxNjA1LCAyMTYxMCwgCisgICAgMjE2MTUsIDIxNjIwLCAyMTYyNSwgMjE2MzAsIDIxNjM2LCAyMTY0MSwgMjE2NDYsIDIxNjUxLCAyMTY1NiwgMjE2NjEsIAorICAgIDIxNjY2LCAyMTY3MSwgMjE2NzYsIDIxNjgxLCAyMTY4NywgMjE2OTMsIDIxNjk4LCAyMTcwMywgMjE3MDgsIDIxNzEzLCAKKyAgICAyMTcxOCwgMjE3MjMsIDIxNzI4LCAyMTczMywgMjE3MzgsIDIxNzQ0LCAyMTc0OSwgMjE3NTQsIDIxNzU5LCAyMTc2NSwgCisgICAgMjE3NzEsIDIxNzc2LCAyMTc4MSwgMjE3ODYsIDIxNzkxLCAyMTc5NiwgMjE4MDEsIDIxODA2LCAyMTgxMSwgMjE4MTcsIAorICAgIDIxODIyLCAyMTgyNywgMjE4MzIsIDIxODM3LCAyMTg0MywgMjE4NDgsIDIxODUzLCAyMTg1NywgMTM2OCwgMTI5LCAyMTg2NSwgCisgICAgMjE4NjksIDIxODczLCAyMTg3NywgMjE4ODIsIDIxODg2LCAxMzExNywgMTI0NzYsIDIxODkwLCAyMTg5NSwgMjE4OTksIAorICAgIDIxOTA0LCAyMTkwOCwgMjE5MTMsIDIxOTE3LCAyMTkyMywgMjE5MjgsIDIxOTMyLCAyMTkzNiwgMjE5NDQsIDIxOTQ4LCAKKyAgICAyMTk1MiwgMjE5NTcsIDIxOTYyLCAyMTk2NiwgMjE5NzIsIDIxOTc3LCAyMTk4MSwgMjE5ODYsIDIxOTkxLCAyMTk5NSwgCisgICAgMjIwMDIsIDIyMDA5LCAyMjAxNiwgMjIwMjAsIDIyMDI0LCAyMjAyOSwgMjIwMzMsIDIyMDM2LCAyMjA0MiwgMjIwNTUsIAorICAgIDIyMDYwLCAyMjA2OSwgMjIwNzQsIDk0MjgsIDIyMDc5LCAyMjA4MiwgMjcxMiwgMjcxNywgMjIwODYsIDIyMDkyLCAyMjA5OCwgCisgICAgNzIwOSwgMjIxMDMsIDIyMTA4LCAyMjExMywgMjIxMTksIDIyMTI0LCAxMzkwMywgMjIxMjksIDIyMTM0LCAyMjEzOSwgCisgICAgMjIxNDQsIDIyMTUwLCAyMjE1NSwgMjIxNjAsIDIyMTY2LCAyMjE3MSwgMjIxNzUsIDIyMTgwLCAyMjE4NSwgMjIxOTAsIAorICAgIDIyMTk1LCAyMjE5OSwgMjIyMDQsIDIyMjA4LCAyMjIxMywgMjIyMTgsIDIyMjIzLCAyMjIyOCwgMjIyMzIsIDIyMjM3LCAKKyAgICAyMjI0MSwgMjIyNDYsIDIyMjUxLCAyMjI1NiwgMjIyNjEsIDI4ODYsIDIyMTc2LCAyMjI2NSwgMjIyNzMsIDIyMjgwLCAKKyAgICA5NzMzLCAyMjI5MiwgMjIzMDAsIDIyMTgxLCAyMjMwNywgMjIzMTIsIDIyMzIwLCAyMjE4NiwgMjIzMjUsIDIyMzMwLCAKKyAgICAyMjMzOCwgMjIzNDMsIDIyMTkxLCAyMjM0OCwgMjIzNTMsIDIyMzU3LCAyMjM2MywgMjIzNzEsIDIyMzc0LCAyMjM4MSwgCisgICAgMjIzODUsIDIyMzg5LCAyMjM5NSwgMjI0MDIsIDIyNDA3LCA4OTU4LCAxNzI3LCAxNzMyLCAyMjQxMSwgMjI0MTcsIDIyNDIzLCAKKyAgICAyMjQyOCwgMjI0MzIsIDIyNDM2LCAyMjQ0MCwgMjI0NDQsIDIyNDQ4LCAyMjQ1MiwgMjI0NTYsIDIyNDU5LCAyMjQ2NSwgCisgICAgMjI0NzIsIDIyNDgwLCAyMjQ4NiwgMjI0OTIsIDIyNDk3LCAyMjUwMiwgMjI1MDYsIDEzODIzLCAxMzgzMCwgMjI1MTEsIAorICAgIDIyNTIzLCAyMjUyNiwgMjI1MzMsIDE2MzU2LCAyMjU0MCwgMjI1NDgsIDIyNTU5LCAyMjU2OCwgMjI1ODEsIDIyNTkxLCAKKyAgICAyMjYwNSwgMjI2MTcsIDIyNjMxLCAyMjY0MywgMjI2NTMsIDIyNjY1LCAyMjY3MSwgMjI2ODYsIDIyNzEwLCAyMjcyOCwgCisgICAgMjI3NDcsIDIyNzYwLCAyMjc3NCwgMjI3OTIsIDIyODA4LCAyMjgyNSwgMjI4NDMsIDIyODU0LCAyMjg3MywgMjI4OTAsIAorICAgIDIyOTEwLCAyMjkyOCwgMjI5NDAsIDIyOTU0LCAyMjk2OCwgMjI5ODAsIDIyOTk3LCAyMzAxNiwgMjMwMzQsIDIzMDQ2LCAKKyAgICAyMzA2NCwgMjMwODMsIDE0NTUzLCAyMzA5NiwgMjMxMTYsIDIzMTI4LCAxMDUyMywgMjMxNDAsIDIzMTQ1LCAyMzE1MCwgCisgICAgMjMxNTUsIDIzMTYxLCAyMzE2NiwgMjMxNzAsIDIzMTc3LCAyMzk4LCAyMzE4MSwgMjMxODcsIDIzMTkxLCAyMzE5NCwgCisgICAgMjMxOTgsIDIzMjA2LCAyMzIxMiwgMjIyMDksIDIzMjE2LCAyMzIyNSwgMjMyMzYsIDIzMjQyLCAyMzI0OCwgMjMyNTcsIAorICAgIDIzMjY1LCAyMzI3MiwgMjMyNzcsIDIzMjgxLCAyMzI4OCwgMjMyOTQsIDIzMzAzLCAyMzMxMSwgMjMzMTgsIDIzMzI4LCAKKyAgICAyMzMzNywgMjMzNDcsIDIzMzUyLCAyMzM2MSwgMjMzNzAsIDIzMzgxLCAyMzM5MiwgMzk2MywgMjM0MDIsIDIzNDA2LCAKKyAgICAyMzQxNiwgMjM0MjQsIDIzNDM0LCAyMzQ0NSwgMjM0NTAsIDIzNDYwLCAyMzQ2OCwgMjM0NzUsIDIzNDgxLCAyMzQ4OCwgCisgICAgMjM0OTMsIDIyMjE5LCAyMzQ5NywgMjM1MDYsIDIzNTEwLCAyMzUxMywgMjM1MTgsIDIzNTI1LCAyMzUzNCwgMjM1NDIsIAorICAgIDIzNTUwLCAyMzU2MCwgMjM1NjksIDIzNTc1LCAyMzU4MSwgMjIyMjQsIDIyMjI5LCAyMzU4NSwgMjM1OTUsIDIzNjA1LCAKKyAgICAyMzYxNSwgMjM2MjMsIDIzNjMwLCAyMzY0MCwgMjM2NDgsIDIzNjU2LCAyMzY2MiwgMjM2NzAsIDkzMCwgMjM2NzksIAorICAgIDE0NzQ0LCA1NDIsIDIzNjkzLCAyMzcwMiwgMjM3MTAsIDIzNzIxLCAyMzczMiwgMjM3NDIsIDIzNzUxLCAyMzc2MywgCisgICAgMjM3NzIsIDIzNzgxLCAyMzc4NywgMjM3OTYsIDIzODA1LCAyMzgxNSwgMjM4MjMsIDIzODMxLCA5MzYwLCAyMzgzNywgCisgICAgMjM4NDAsIDIzODQ0LCAyMzg0OSwgMjM4NTQsIDk4NDgsIDIyMjQyLCAyMjI0NywgMjM4NjIsIDIzODY4LCAyMzg3NCwgCisgICAgMjM4NzksIDIzODg0LCAyMzg4OCwgMjM4OTYsIDIzOTAyLCAyMzkwOCwgMjM5MTIsIDM1MjUsIDIzOTIwLCAyMzkyNSwgCisgICAgMjM5MzAsIDIzOTM0LCAyMzkzOCwgOTkyOCwgMjM5NDUsIDIzOTUzLCAyMzk2NywgMjM5NzQsIDIzOTgwLCA5OTM3LCA5OTQzLCAKKyAgICAyMzk4OCwgMjM5OTYsIDI0MDAzLCAyNDAwOCwgMjQwMTMsIDIyMjUyLCAyNDAxOSwgMjQwMzAsIDI0MDM0LCAyNDAzOSwgCisgICAgMjYwMSwgMjQwNDQsIDI0MDU1LCAyNDA2MSwgMjQwNjYsIDI0MDcwLCAyNDA3NCwgMjQwNzcsIDI0MDg0LCAyNDA5MSwgCisgICAgMjQwOTgsIDI0MTA0LCAyNDEwOCwgMjIyNTcsIDI0MTEzLCAyNDExNywgMjQxMjEsIDEwMzcsIDI0MTI2LCAyNDEzMSwgCisgICAgMjQxMzYsIDI0MTQxLCAyNDE0NiwgMjQxNTEsIDI0MTU2LCAyNDE2MSwgMjQxNjYsIDI0MTcxLCAyNDE3NiwgMjQxODEsIAorICAgIDI0MTg2LCAyNDE5MSwgMjQxOTcsIDI0MjAyLCAyNDIwNywgMjQyMTIsIDI0MjE3LCAyNDIyMiwgMjQyMjcsIDI0MjMzLCAKKyAgICAyNDIzOCwgMjQyNDMsIDI0MjQ4LCAyNDI1MywgMjQyNTgsIDI0MjYzLCAyNDI2OCwgMjQyNzQsIDI0MjgwLCAyNDI4NSwgCisgICAgMjQyOTEsIDI0Mjk2LCAyNDMwMSwgNSwgMjQzMDcsIDI0MzExLCAyNDMxNSwgMjQzMTksIDI0MzI0LCAyNDMyOCwgMjQzMzIsIAorICAgIDI0MzM2LCAyNDM0MCwgMjQzNDUsIDI0MzQ5LCAyNDM1NCwgMjQzNTgsIDI0MzYxLCAyNDM2NSwgMjQzNzAsIDI0Mzc0LCAKKyAgICAyNDM3OSwgMjQzODMsIDI0Mzg3LCAyNDM5MSwgMjQzOTYsIDI0NDAwLCAyNDQwNCwgMjQ0MTQsIDI0NDE5LCAyNDQyMywgCisgICAgMjQ0MjcsIDI0NDMyLCAyNDQzNywgMjQ0NDYsIDI0NDUxLCAyNDQ1NiwgMjQ0NjAsIDI0NDY0LCAyNDQ3NywgMjQ0ODksIAorICAgIDI0NDk4LCAyNDUwNywgMjQ1MTMsIDI0NTE4LCAyNDUyMiwgMjQ1MjYsIDI0NTM2LCAyNDU0NSwgMjQ1NTMsIDI0NTU5LCAKKyAgICAyNDU2NCwgMjQ1NjgsIDI0NTc1LCAyNDU4NSwgMjQ1OTQsIDI0NjAyLCAyNDYxMCwgMjQ2MTcsIDI0NjI1LCAyNDYzNCwgCisgICAgMjQ2NDMsIDI0NjUxLCAyNDY1NiwgMjQ2NjAsIDI0NjY0LCAyNDY2NywgMjQ2NjksIDI0NjczLCAyNDY3NywgMjQ2ODIsIAorICAgIDI0Njg3LCAyNDY5MSwgMjQ2OTUsIDI0Njk4LCAyNDcwMiwgMjQ3MDUsIDI0NzA5LCAyNDcxMiwgMjQ3MTUsIDI0NzE5LCAKKyAgICAyNDcyNSwgMjQ3MjksIDI0NzMzLCAyNDczNywgMjQ3NDIsIDI0NzQ3LCAyNDc1MiwgMjQ3NTYsIDI0NzU5LCAyNDc2NCwgCisgICAgMjQ3NzAsIDI0Nzc1LCAyNDc4MSwgMjQ3ODYsIDI0NzkwLCAyNDc5NCwgMjQ3OTgsIDI0ODAzLCAyNDgwNywgMjQ4MTIsIAorICAgIDI0ODE2LCAyNDgyMCwgMjQ4MjcsIDI0ODMxLCAyNDgzNCwgMjQ4MzgsIDI0ODQ0LCAyNDg1MCwgMjQ4NTQsIDI0ODU4LCAKKyAgICAyNDg2MywgMjQ4NzAsIDI0ODc2LCAyNDg4MCwgMjQ4ODksIDI0ODkzLCAyNDg5NywgMjQ5MDAsIDI0OTA2LCAyNDkxMSwgCisgICAgMjQ5MTcsIDE0ODksIDE3OTEsIDI0OTIyLCAyNDkyNywgMjQ5MzIsIDI0OTM3LCAyNDk0MiwgMjQ5NDcsIDI0OTUyLCAyMTQ4LCAKKyAgICAyMTk0LCAyNDk1NywgMjQ5NjAsIDI0OTY0LCAyNDk2OCwgMjQ5NzMsIDI0OTc3LCAyNDk4MSwgMjQ5ODQsIDI0OTg5LCAKKyAgICAyNDk5NCwgMjQ5OTgsIDI1MDAxLCAyNTAwNiwgMjUwMTAsIDI1MDE1LCAyNTAxOSwgMTQ3NTYsIDI1MDI0LCAyNTAyNywgCisgICAgMjUwMzAsIDI1MDM0LCAyNTAzOSwgMjUwNDMsIDI1MDU2LCAyNTA2MCwgMjUwNjMsIDI1MDcxLCAyNTA4MCwgMjUwODcsIAorICAgIDI1MDkyLCAyNTA5OCwgMjUxMDQsIDI1MTEyLCAyNTExOSwgMjUxMjYsIDI1MTMwLCAyNTEzNCwgMjUxMzgsIDI1MTQzLCAKKyAgICAyNTE0OCwgMjUxNTIsIDI1MTYwLCAyNTE2NSwgMjUxNzcsIDI1MTg4LCAyNTE5MywgMjUxOTcsIDI1MjAxLCAyNTIwNywgCisgICAgMjUyMTIsIDI1MjE3LCAyNTIyMSwgMjUyMjUsIDI1MjI4LCAyNTIzNCwgNzkxNSwgMjMxNiwgMjUyMzgsIDI1MjQzLCAKKyAgICAyNTI1OSwgOTQ3NSwgMjUyNzksIDI1Mjg4LCAyNTMwNCwgMjUzMDgsIDI1MzExLCAyNTMxNywgMjUzMjcsIDI1MzMzLCAKKyAgICAyNTM0MiwgMjUzNTcsIDI1MzY5LCAyNTM4MCwgMjUzODgsIDI1Mzk3LCAyNTQwMywgMjU0MTIsIDI1NDIyLCAyNTQzMywgCisgICAgMjU0NDQsIDI1NDUzLCAyNTQ2MCwgMjU0NjksIDI1NDc3LCAyNTQ4NCwgMjU0OTIsIDI1NDk5LCAyNTUwNiwgMjU1MTksIAorICAgIDI1NTI2LCAyNTUzMiwgMjU1MzcsIDI1NTQ2LCAyNTU1MiwgMjU1NTcsIDI1NTY1LCAyNTU3MiwgMjM0MjYsIDI1NTg0LCAKKyAgICAyNTU5NiwgMjU2MTAsIDI1NjE4LCAyNTYyNSwgMjU2MzcsIDI1NjQ2LCAyNTY1NSwgMjU2NjMsIDI1NjcxLCAyNTY3OSwgCisgICAgMjU2ODYsIDI1Njk1LCAyNTcwMywgMjU3MTMsIDI1NzIyLCAyNTczMiwgMjU3NDEsIDI1NzUwLCAyNTc1OCwgMjU3NjMsIAorICAgIDI1NzY3LCAyNTc3MCwgMjU3NzQsIDI1Nzc4LCAyNTc4MiwgMjU3ODYsIDI1NzkwLCAyNTc5NiwgMjU4MDIsIDI1ODEwLCAKKyAgICAxNDgwMSwgMjU4MTcsIDI1ODIyLCAyNTgyOSwgMjU4MzUsIDI1ODQyLCAxNDgwOSwgMjU4NDksIDI1ODUyLCAyNTg2NCwgCisgICAgMjU4NzIsIDI1ODc4LCAyNTg4MywgMjU4ODcsIDk4NzgsIDI1ODk4LCAyNTkwOCwgMjU5MTcsIDI1OTI0LCAyNTkyOCwgCisgICAgMTQ4MTQsIDI1OTMxLCAyNTkzOCwgMjU5NDIsIDI1OTQ4LCAyNTk1MSwgMjU5NTgsIDI1OTY0LCAyNTk3MSwgMjU5NzcsIAorICAgIDI1OTgxLCAyNTk4NiwgMjU5OTAsIDI1OTk5LCAyNjAwNiwgMjYwMTIsIDc5NTYsIDI2MDE5LCAyNjAyNywgMjYwMzQsIAorICAgIDI2MDQwLCAyNjA0NSwgMjYwNTEsIDI2MDU3LCAyNjA2NSwgMjYwNjksIDI2MDcyLCAyNjA3NCwgMjU3NzUsIDI2MDgzLCAKKyAgICAyNjA4OSwgMjYwOTksIDI2MTA0LCAyNjExMSwgMjYxMTcsIDI2MTIyLCAyNjEyNywgMjYxMzIsIDI2MTM2LCAyNjE0MSwgCisgICAgMjYxNDgsIDI2MTU3LCAyNjE2MSwgMjYxNjgsIDI2MTc3LCAyNjE4MywgMjYxODgsIDI2MTk0LCAyNjE5OSwgMjYyMDYsIAorICAgIDI2MjE3LCAyNjIyMiwgMjYyMjYsIDI2MjM2LCAyNjI0MiwgMjYyNDYsIDI2MjUxLCAyNjI2MSwgMjYyNzAsIDI2Mjc0LCAKKyAgICAyNjI4MSwgMjYyODksIDI2Mjk2LCAyNjMwMiwgMjYzMDcsIDI2MzE1LCAyNjMyMiwgMjYzMzQsIDI2MzQzLCAyNjM0NywgCisgICAgMTMwNTMsIDI2MzU1LCAyNjM2NSwgMjYzNjksIDI1MDY3LCAyNjM4MCwgMjYzODUsIDI2Mzg5LCAyNjM5NiwgMjY0MDMsIAorICAgIDIxOTY4LCAyNTcwMCwgMjY0MDgsIDI2NDEyLCAyNjQxNSwgMjI4NjAsIDI2NDIwLCAyNjQzNCwgMjY0NTAsIDI2NDY4LCAKKyAgICAyNjQ4NywgMjY1MDQsIDI2NTIyLCAyMjg3OSwgMjY1MzksIDI2NTU5LCAyMjg5NiwgMjY1NzEsIDI2NTgzLCAxNTczOSwgCisgICAgMjY1OTUsIDIyOTE2LCAyNjYwOSwgMjY2MjEsIDEwNTM2LCAyNjYzNSwgMjY2NDAsIDI2NjQ1LCAyNjY1MCwgMjY2NTYsIAorICAgIDI2NjYyLCAyNjY2OCwgMjY2NzIsIDI2Njc5LCAyNjY4NCwgMjY2OTQsIDI2NzAwLCAxMDE4MywgMjY3MDYsIDI2NzA4LCAKKyAgICAyNjcxMywgMjY3MjEsIDI2NzI1LCAyNjE0NCwgMjY3MzEsIDI2NzM4LCAxMTUyNCwgMTE1MzQsIDI2NzQ1LCAyNjc1NSwgCisgICAgMjY3NjAsIDI2NzY0LCAyNjc2NywgMjY3NzMsIDI2NzgxLCAyNjc5MywgMjY4MDMsIDI2ODE5LCAyNjgzMiwgMjY4NDYsIAorICAgIDE1NzU3LCAyNjg2MCwgMjY4NjcsIDI2ODcxLCAyNjg3NCwgMjY4NzksIDI2ODgzLCAyNjg5MCwgMjY4OTcsIDI2OTA3LCAKKyAgICAyNjkxMiwgMjY5MTcsIDI2OTIyLCAyNjkzMCwgMjY5MzgsIDI2OTQ3LCAyNjk1MiwgOTU3MiwgMjY5NTYsIDI2OTU5LCAKKyAgICAyNjk2MiwgMjY5NjcsIDI2OTc0LCAyNjk3OSwgMjY5OTUsIDI3MDAzLCAyNzAxMSwgOTQyMywgMjcwMTksIDI3MDI0LCAKKyAgICAyNzAyOCwgMjcwMzQsIDI3MDQwLCAyNzA0MywgMjcwNDksIDI3MDYxLCAyNzA2OSwgMjcwNzYsIDI3MDgyLCAyNzA4OSwgCisgICAgMjcxMDAsIDI3MTE0LCAyNzEyNywgMjcxMzYsIDI3MTQ1LCAyNzE1NywgMjcxNjgsIDI3MTc4LCAyNzE4NywgMjcxOTYsIAorICAgIDI3MjA0LCAyNzIxNSwgNzkzOCwgMjcyMjIsIDI3MjI4LCAyNzIzMywgMjcyMzksIDI3MjQ2LCAyNzI1NiwgMjcyNjYsIAorICAgIDI3Mjc1LCAyNzI4MSwgMjcyODgsIDI3MjkzLCAyNzMwMCwgMjczMDgsIDI3MzE2LCAyNzMyOCwgNjI0NiwgMjczMzUsIAorICAgIDI3MzQ0LCAyNzM1MiwgMjczNTgsIDI3MzY0LCAyNzM2OSwgMjczNzMsIDI3Mzc2LCAyNzM4MiwgMjczODksIDI3Mzk0LCAKKyAgICAyNzM5OSwgMjc0MDMsIDI3NDE1LCAyNzQyNiwgMjc0MzUsIDI3NDQzLCAxNDk0MSwgMjc0NDgsIDI3NDU0LCAyNzQ2MCwgCisgICAgMTE1MTcsIDg2MzUsIDI3NDY1LCAyNzQ2OSwgMjc0NzIsIDI3NDc1LCAyNzQ4MSwgMjc0ODksIDI3NDk3LCAyNzUwMSwgCisgICAgMjc1MDUsIDI3NTEwLCAyNzUxMywgMjc1MjIsIDI3NTI2LCAyNzUzNCwgMjc1NDUsIDI3NTQ5LCAyNzU1NSwgMjc1NjEsIAorICAgIDI3NTY1LCAyNzU3MSwgMjc1NzksIDI3NjAxLCAyNzYyNSwgMjc2MzIsIDI3NjM5LCAyNzY0NSwgMjc2NTMsIDI3NjU5LCAKKyAgICAyNzY2NCwgMjc2NzUsIDI3NjkzLCAyNzcwMCwgMjc3MDgsIDI3NzEyLCAyNzcyMSwgMjc3MzQsIDI3NzQyLCAyNzc1NCwgCisgICAgMjc3NjUsIDI3Nzc1LCAyNzc4OSwgMjc3OTgsIDI3ODA2LCAyNzgxOCwgOTQ5MiwgMjc4MjksIDI3ODQwLCAyNzg1MiwgCisgICAgMjc4NjIsIDI3ODcxLCAyNzg3NiwgMjc4ODAsIDI3ODg4LCAyNzg5OCwgMjc5MDMsIDI3OTA3LCAyNzkxMCwgMjc5MTMsIAorICAgIDI3OTIxLCAyNzkyOSwgMjc5MzgsIDI3OTQ4LCAyNzk1NywgMjc5NjMsIDI3OTc3LCAyNjYzLCAyNzk5OSwgMjgwMTAsIAorICAgIDI4MDE5LCAyODAyOSwgMjgwNDEsIDI4MDUwLCAyODA1OSwgMjgwNjksIDI4MDc3LCAyODA4NSwgMjgwOTQsIDI4MDk5LCAKKyAgICAyODExMCwgMjgxMTUsIDI4MTI2LCAyODEzMCwgMjgxNDAsIDI4MTQ5LCAyODE1NywgMjgxNjcsIDI4MTc3LCAyODE4NSwgCisgICAgMjgxOTQsIDI4MjAxLCAyODIwOSwgMjgyMTYsIDI4MjI1LCAyODIyOSwgMjgyMzcsIDI4MjQ0LCAyODI1MiwgMjgyNTksIAorICAgIDI4MjcwLCAyODI4NSwgMjgyOTIsIDI4Mjk4LCAyODMwOCwgMjgzMTcsIDI4MzIzLCAyODMyNywgMjgzMzQsIDI4MzM4LCAKKyAgICAxNDAyNSwgMjgzNDQsIDI4MzQ4LCAyODM1MywgMjgzNjAsIDI4MzY0LCAyODM2OCwgMjgzNzYsIDI4Mzg0LCAyODM5MCwgCisgICAgMjgzOTksIDI4NDA2LCAyODQxMSwgMjg0MTYsIDI4NDI2LCAyMzQ5NSwgMjg0MzAsIDI4NDMzLCAyODQzOCwgMjg0NDMsIAorICAgIDI4NDQ4LCAyODQ1MywgMjg0NTgsIDI4NDYzLCAyODQ2OCwgMjg0NzMsIDI4NDc5LCAyODQ4NCwgMjg0ODksIDI4NDk1LCAKKyAgICAxMjE4LCA3MDQsIDI4NTAwLCAyODUwOSwgMjM2NCwgMjg1MTYsIDI4NTIxLCAyODUyNSwgMjg1MzEsIDEyNjcsIDU0NiwgCisgICAgMzE4LCAyODUzNiwgMjg1NDUsIDI4NTUzLCAyODU2MiwgMjg1NzAsIDI4NTgxLCAyODU5MCwgMjg1OTgsIDI4NjAyLCAKKyAgICAyODYwNSwgMjg2MTMsIDI4NjIxLCAyODYyNiwgMTQ3NjksIDI4NjMyLCAyODYzOCwgMjg2NDQsIDU4NzIsIDI4NjQ5LCAKKyAgICAyODY1MywgMjg2NTksIDI4NjYzLCAyODY3MCwgMTQ1NSwgMjg2NzYsIDI4NjgzLCA5NTc5LCAyODY4NywgMjg2OTcsIAorICAgIDI4NzA1LCAyODcxMSwgMjg3MjAsIDI4NzI4LCAyODczNCwgMjg3NDIsIDI4NzQ5LCAxMTExMCwgMjg3NTUsIDI4NzYyLCAKKyAgICAyODc2NywgMjg3NzQsIDE0OTYsIDIxNDcsIDI4NzgwLCAyODc4NiwgMjg3OTMsIDI4ODA0LCAyODgxNSwgMjg4MjMsIAorICAgIDI4ODMwLCAyODg0MCwgMjg4NDksIDI4ODU3LCAyODg2NiwgMjg4NzMsIDI4ODgwLCAyODg5MywgMjg5MDQsIDEyNzIsIAorICAgIDI4OTIzLCAyODkyOCwgMjg5MzYsIDM1NzUsIDI4OTQwLCAyODk0NSwgMjg5NDksIDE0NTksIDI0Njk2LCAyODk1OSwgCisgICAgMjg5NjMsIDI4OTY4LCAyODk3MiwgMzQ5MywgMjg5NzgsIDI4OTg2LCAyODk5MywgMjkwMDQsIDI5MDEyLCAyOTAyMCwgCisgICAgMzU3NiwgMjc5LCAyOTAyNSwgMjkwMzMsIDI5MDQxLCAyOTA0OCwgMjkwNTQsIDI5MDU5LCAyMjE2LCAyOTA2NiwgMjkwNzIsIAorICAgIDI1OTgyLCAyNjIxMiwgMjkwNzgsIDEwNiwgMjkwODIsIDI5MDg2LCAyOTA5MiwgNjE1LCA5MzI4LCAyOTA5NywgMjkxMDQsIAorICAgIDI5MTEwLCAyMzI3LCAyOTExNCwgMjkxMTgsIDE1MTgxLCAyOTEyMSwgMjkxMjYsIDI5MTMzLCAyOTEzOSwgMjkxNDQsIAorICAgIDI5MTUyLCAyOTE1OSwgMjkxNjUsIDIyMzQ1LCAyOTE2OSwgMjkxNzMsIDM2NDYsIDE2NjE5LCAyOTE3NywgMjkxODIsIAorICAgIDI5MTg1LCAyOTE5MywgMjkyMDEsIDI5MjA2LCAyOTIwOSwgMjkyMTYsIDI5MjI2LCAyOTIzOCwgMjkyNDMsIDI5MjQ3LCAKKyAgICAyOTI1NSwgMjkyNjIsIDI5MjY4LCAyOTI3NSwgMjkyODIsIDI5Mjg1LCAyOTI4OSwgMjkyOTMsIDE0NjMsIDI5MzAzLCAKKyAgICAyOTMwNSwgMjkzMTAsIDI5MzE2LCAyOTMyMiwgMjkzMjcsIDI5MzMyLCAyOTMzNywgMjkzNDIsIDI5MzQ3LCAyOTM1MiwgCisgICAgMjkzNTcsIDI5MzYyLCAyOTM2NywgMjkzNzIsIDI5Mzc3LCAyOTM4MiwgMjkzODcsIDI5MzkyLCAyOTM5OCwgMjk0MDQsIAorICAgIDI5NDEwLCAyOTQxNiwgMjk0MjEsIDI5NDI2LCAyOTQzMSwgMjk0MzcsIDI5NDQyLCAyOTQ0NywgMjk0NTIsIDI5NDU4LCAKKyAgICAyOTQ2MywgMjk0NjksIDI5NDc0LCAyOTQ3OSwgMjk0ODQsIDI5NDg5LCAyOTQ5NSwgMjk1MDAsIDI5NTA2LCAyOTUxMSwgCisgICAgMjk1MTYsIDI5NTIxLCAyOTUyNiwgMjk1MzIsIDI5NTM3LCAyOTU0MywgMjk1NDgsIDI5NTUzLCAyOTU1OCwgMjk1NjMsIAorICAgIDI5NTY4LCAyOTU3MywgMjk1NzgsIDI5NTgzLCAyOTU4OCwgMjk1OTQsIDI5NjAwLCAyOTYwNiwgMjk2MTEsIDI5NjE2LCAKKyAgICAyOTYyMSwgMjk2MjYsIDI5NjMyLCAyOTYzOCwgMjk2NDQsIDI5NjUwLCAyOTY1NiwgMjk2NjIsIDI5NjY3LCAyOTY3MywgCisgICAgMjk2NzgsIDI5NjgzLCAyOTY4OCwgMjk2OTMsIDI5Njk5LCAyNDQzLCAyOTcwNCwgMjQ1MCwgMjQ1NywgMjc1NCwgMjk3MDksIAorICAgIDI0NjMsIDI0NzMsIDI5NzE1LCAyOTcxOSwgMjk3MjQsIDI5NzI5LCAyOTczNSwgMjk3NDAsIDI5NzQ1LCAyOTc0OSwgCisgICAgMjk3NTQsIDI5NzYwLCAyOTc2NSwgMjk3NzAsIDI5Nzc1LCAyOTc4MSwgMjk3ODYsIDI5NzkwLCAyOTc5NCwgMjk3OTksIAorICAgIDI5ODA0LCAyOTgwOSwgMjk4MTQsIDI5ODE5LCAyOTgyNSwgMjk4MzEsIDI5ODM2LCAyOTg0MCwgMjk4NDUsIDI5ODUxLCAKKyAgICAyOTg1NSwgMjk4NjAsIDI5ODY1LCAyOTg3MCwgMjk4NzUsIDI5ODc5LCAyOTg4MiwgMjk4ODcsIDI5ODkyLCAyOTg5NywgCisgICAgMjk5MDIsIDI5OTA3LCAyOTkxMywgMjk5MTksIDI5OTI0LCAyOTkyOSwgMjk5MzMsIDI5OTM4LCAyOTk0MywgMjk5NDgsIAorICAgIDI5OTUzLCAyOTk1OCwgMjk5NjIsIDI5OTY3LCAyOTk3MiwgMjk5NzcsIDI5OTgxLCAyOTk4NSwgMjk5ODksIDI5OTk0LCAKKyAgICAzMDAwMiwgMzAwMDcsIDMwMDEzLCAzMDAxOSwgMzAwMjUsIDMwMDMwLCAzMDAzNCwgMzAwMzcsIDMwMDQyLCAzMDA0NywgCisgICAgMzAwNTEsIDMwMDU2LCAzMDA2MCwgMzAwNjUsIDMwMDY5LCAzMDA3MiwgMzAwNzcsIDE3Mjk2LCAzMDA4MiwgMzAwODcsIAorICAgIDMwMDkyLCAzMDEwMCwgMjEyNzQsIDI4NjgwLCA5MDI2LCAzMDEwNSwgMzAxMTAsIDMwMTE0LCAzMDExOSwgMzAxMjMsIAorICAgIDMwMTI3LCAzMDEzMiwgMzAxMzYsIDMwMTM5LCAzMDE0MiwgMzAxNDYsIDMwMTUxLCAzMDE1NSwgMzAxNjMsIDMwMTY3LCAKKyAgICAzMDE3MCwgMzAxNzUsIDMwMTc5LCAzMDE4MywgMzAxODgsIDMwMTkzLCAzMDE5NywgMzAyMDMsIDMwMjA4LCAzMDIxMywgCisgICAgMzAyMjAsIDMwMjI3LCAzMDIzMSwgMzAyMzQsIDMwMjQwLCAzMDI0OSwgMzAyNTYsIDMwMjY0LCAzMDI3MSwgMzAyNzUsIAorICAgIDMwMjgwLCAzMDI4NCwgMzAyODgsIDMwMjk0LCAzMDMwMCwgMzAzMDQsIDMwMzEwLCAzMDMxNSwgMzAzMjAsIDMwMzI3LCAKKyAgICAzMDMzMywgMzAzMzksIDMwMzQ1LCAzMDM1MSwgMzAzNTgsIDMwMzY0LCAzMDM3MCwgMzAzNzYsIDMwMzgyLCAzMDM4OCwgCisgICAgMzAzOTQsIDMwNDAwLCAzMDQwNywgMzA0MTMsIDMwNDIwLCAzMDQyNiwgMzA0MzIsIDMwNDM4LCAzMDQ0NCwgMzA0NTAsIAorICAgIDMwNDU2LCAzMDQ2MiwgMzA0NjgsIDMwNDc0LCAxMTQxOCwgMzA0ODAsIDMwNDg1LCAzMDQ5MCwgMzA0OTMsIDMwNTAxLCAKKyAgICAzMDUwNiwgMzA1MTUsIDMwNTIxLCAzMDUyNiwgMzA1MzEsIDMwNTM2LCAzMDU0MCwgMzA1NDUsIDMwNTUwLCAzMDU1NSwgCisgICAgMzA1NjAsIDMwNTY1LCAzMDU3MiwgMzA1NzksIDMwNTg1LCAzMDU5MSwgMzA1OTYsIDE2Mjk3LCAzMDYwMywgMzA2MDksIAorICAgIDMwNjE2LCAzMDYyMiwgMzA2MjgsIDMwNjMzLCAzMDY0MSwgMzA2NDYsIDE2MDc2LCAzMDY1MCwgMzA2NTUsIDMwNjYwLCAKKyAgICAzMDY2NiwgMzA2NzEsIDMwNjc2LCAzMDY4MCwgMzA2ODUsIDMwNjkwLCAzMDY5NiwgMzA3MDEsIDMwNzA2LCAzMDcxMCwgCisgICAgMzA3MTUsIDMwNzIwLCAzMDcyNCwgMzA3MjksIDMwNzM0LCAzMDczOSwgMzA3NDMsIDMwNzQ4LCAzMDc1MywgMzA3NTgsIAorICAgIDMwNzYyLCAzMDc2NiwgMTUyODcsIDMwNzcwLCAzMDc3OSwgMzA3ODUsIDMwNzkxLCAzMDgwMCwgMzA4MDgsIDMwODE3LCAKKyAgICAzMDgyNSwgMzA4MzAsIDMwODM0LCAzMDg0MSwgMzA4NDcsIDMwODUxLCAzMDg1NCwgMzA4NTksIDMwODY4LCAzMDg3NiwgCisgICAgMzA4ODEsIDE0OTUsIDMwODg3LCAzMDg5MCwgMzA4OTQsIDIyNDE4LCAyMjQyNCwgMzA5MDAsIDMwOTA0LCAzMDkxNSwgCisgICAgMzA5MjYsIDMwOTM3LCAzMDk0OSwgMzA5NTYsIDMwOTYzLCAzMDk2OCwgMzA5NzIsIDU5MDksIDc1NSwgMjEyNzMsIDMwOTgwLCAKKyAgICAzMDk4NSwgMzA5ODksIDMwOTk0LCAzMDk5OCwgMzEwMDQsIDMxMDA5LCAzMTAxNSwgMzEwMjAsIDMxMDI2LCAzMTAzMSwgCisgICAgMzEwMzcsIDMxMDQyLCAzMTA0OCwgMzEwNTQsIDMxMDYwLCAzMTA2NSwgMzEwMjEsIDMxMDI3LCAzMTA2OSwgMzEwNzQsIAorICAgIDMxMDgwLCAzMTA4NSwgMzEwOTEsIDMxMDk2LCAzMTEwMiwgMzExMDcsIDMxMDMyLCAxMDQyMSwgMzExMTEsIDMxMDQzLCAKKyAgICAzMTA0OSwgMzEwNTUsIDI4MzEsIDM0MjMsIDMxMTE3LCAzMTEyMCwgMzExMjYsIDMxMTMyLCAzMTEzOCwgMzExNDUsIAorICAgIDMxMTUxLCAzMTE1NywgMzExNjMsIDMxMTY5LCAzMTE3NSwgMzExODEsIDMxMTg3LCAzMTE5MywgMzExOTksIDMxMjA1LCAKKyAgICAzMTIxMSwgMzEyMTcsIDMxMjI0LCAzMTIzMCwgMzEyMzYsIDMxMjQyLCAzMTI0OCwgMzEyNTQsIDMxMjU3LCAzMTI2MiwgCisgICAgMzEyNjUsIDMxMjcyLCAzMTI4MCwgMzEyODUsIDMxMjkwLCAzMTI5NiwgMzEzMDEsIDMxMzA2LCAzMTMxMCwgMzEzMTUsIAorICAgIDMxMzIxLCAzMTMyNiwgMzEzMzIsIDMxMzM3LCAzMTM0MywgMzEzNDgsIDMxMzU0LCAzMTM2MCwgMzEzNjQsIDMxMzY5LCAKKyAgICAzMTM3NCwgMzEzNzksIDMxMzg0LCAzMTM4OCwgMzEzOTMsIDMxMzk4LCAzMTQwMywgMzE0MDksIDMxNDE1LCAzMTQyMSwgCisgICAgMzE0MjcsIDMxNDMyLCAzMTQzNiwgMzE0MzksIDMxNDQ1LCAzMTQ1MSwgMzE0NjAsIDMxNDY4LCAzMTQ3NSwgMzE0ODAsIAorICAgIDMxNDg0LCAzMTQ4OCwgMzE0OTMsIDE1MTQwLCAzMTQ5OCwgMzE1MDYsIDMxNTEyLCAzNjgzLCAxMzc3LCAzMTUxNywgCisgICAgMzE1MjEsIDgwMDUsIDMxNTI3LCAzMTUzMywgMzE1NDAsIDgwMTQsIDMxNTQ0LCAzMTU1MCwgMzE1NTcsIDMxNTYzLCAKKyAgICAzMTU3MiwgMzE1ODAsIDMxNTkyLCAzMTU5NiwgMzE2MDMsIDMxNjA5LCAzMTYxMywgMzE2MTYsIDMxNjI1LCAzMTYzMywgCisgICAgMzEwMjIsIDMxNjM4LCAzMTY0OCwgMzE2NTgsIDMxNjY4LCAzMTY3NCwgMzE2NzksIDMxNjg5LCAzMTY5NCwgMzE3MDcsIAorICAgIDMxNzIxLCAzMTczMiwgMzE3NDQsIDMxNzU2LCAzMTc3MCwgMzE3ODMsIDMxNzk1LCAzMTgwNywgMTQ1OTQsIDMxODIxLCAKKyAgICAzMTgyNiwgMzE4MzEsIDMxODM1LCAzMTgzOSwgMzE4NDMsIDE3ODAsIDI3MTY2LCAzMTg0NywgMzE4NTIsIDMxMDcwLCAKKyAgICAzMTg1NywgMzE4NjAsIDMxODY1LCAzMTg3MCwgMzE4NzUsIDMxODgxLCAzMTg4NywgMTAwOTgsIDMxODkyLCAzMTg5OSwgCisgICAgMTU2OTEsIDMxOTA1LCAzMTkxMCwgMzE5MTUsIDMxOTE5LCAzMTkyNCwgMzE5MjksIDMxMDc1LCAzMTkzNCwgMzE5MzksIAorICAgIDMxOTQ0LCAzMTk1MCwgMzEwODEsIDMxOTU1LCAzMTk1OCwgMzE5NjUsIDMxOTczLCAzMTk3OSwgMzE5ODUsIDMxOTkxLCAKKyAgICAzMjAwMiwgMzIwMDcsIDMyMDE0LCAzMjAyMSwgMzIwMjgsIDMyMDM2LCAzMjA0NSwgMzIwNTQsIDMyMDYwLCAzMjA2NiwgCisgICAgMzIwNzQsIDMxMDg2LCAzMjA3OSwgMzIwODUsIDMyMDkxLCAzMTA5MiwgMzIwOTYsIDMyMTAxLCAzMjEwOSwgMzIxMTcsIAorICAgIDMyMTIzLCAzMjEzMCwgMzIxMzYsIDMyMTQzLCAzMjE1MCwgMzIxNTYsIDMyMTY0LCAzMjE3NCwgMzIxODEsIDMyMTg2LCAKKyAgICAzMjE5MiwgMzIxOTcsIDMyMjAyLCAzMjIwOSwgMzIyMTgsIDMyMjI2LCAzMjIzMSwgMzIyMzcsIDMyMjQ0LCAzMjI1MiwgCisgICAgMzIyNTgsIDMyMjYzLCAzMjI2OSwgMzIyNzgsIDI3OTQzLCAzMjI4NSwgMzIyODksIDMyMjk0LCAzMjMwMywgMzIzMDgsIAorICAgIDMyMzEzLCAzMjMxOCwgMTI0MDUsIDMyMzI2LCAzMjMzMSwgMzIzMzYsIDMyMzQxLCAzMjM0NSwgMzIzNTAsIDMyMzU1LCAKKyAgICAzMjM2MiwgMzIzNjcsIDMyMzcyLCAzMjM3NywgMzEwOTcsIDIxMjEwLCAzMjM4MywgMjUxOSwgMjQ0LCAzMjM4NiwgMzIzODksIAorICAgIDMyMzkzLCAzMjM5NywgMzI0MDcsIDMyNDE1LCAzMjQxOSwgMzI0MjYsIDMyNDMzLCAzMjQzNywgMzI0NDAsIDMyNDQ2LCAKKyAgICAzMjQ1NCwgMzI0NjIsIDMyNDY2LCAzMjQ3MCwgMzI0NzMsIDMyNDgwLCAzMjQ4NCwgMzI0ODgsIDMyNDk1LCAzMjUwMywgCisgICAgMzEwMzMsIDMyNTEwLCAzMjUxOCwgMTAxNTgsIDY2MCwgMzA4LCAzMjUzMCwgMzI1MzUsIDMyNTQwLCAzMjU0NiwgMzI1NTEsIAorICAgIDMyNTU2LCAzNzA0LCAzMjU2MSwgMzI1NjQsIDMyNTY5LCAzMjU3NCwgMzI1NzksIDMyNTg0LCAzMjU4OSwgMzI1OTYsIAorICAgIDIyNTE5LCAzMjYwMSwgMzI2MDYsIDMyNjExLCAzMjYxNiwgMzI2MjEsIDMyNjI3LCAzMjYzMiwgMzI2MzgsIDMxMjY4LCAKKyAgICAzMjY0NCwgMzI2NDksIDMyNjU1LCAzMjY2MSwgMzI2NzEsIDMyNjc2LCAzMjY4MSwgMzI2ODUsIDMyNjkwLCAzMjY5NSwgCisgICAgMzI3MDAsIDMyNzA1LCAzMjcxOCwgMzI3MjMsIDIyMjk2LCAxNjY5OSwgMzcxMCwgMzI3MjcsIDMyNzMyLCAzMjczNywgCisgICAgMzI3NDMsIDMyNzQ4LCAzMjc1MywgMzI3NTcsIDMyNzYyLCAzMjc2NywgMzI3NzMsIDMyNzc4LCAzMjc4MywgMTM4MiwgCisgICAgMzI3ODcsIDMyNzkyLCAzMjc5NywgMzI4MDIsIDMyODA2LCAzMjgxMSwgMzI4MTYsIDMyODIxLCAzMjgyNywgMzI4MzMsIAorICAgIDMyODM4LCAzMjg0MiwgMzI4NDYsIDMyODUxLCAzMjg1NiwgMzI4NjEsIDMyODY1LCAzMjg3MywgMzI4NzcsIDMyODgzLCAKKyAgICAzMjg4NywgMzI4OTQsIDE2NDkyLCAzMTA0NCwgMzI5MDAsIDMyOTA3LCAzMjkxNSwgMzI5MjIsIDMyOTI4LCAzMjk0MSwgCisgICAgMzI5NTMsIDMyOTU5LCAzMjk2MywgMjc3MywgMzI5NjcsIDMyOTcxLCAzMjQ3NSwgMzI5ODAsIDMyOTkxLCAzMjk5NiwgCisgICAgMzMwMDEsIDMzMDA2LCAzMzAxMCwgMzMwMTUsIDIyNDI5LCAzMzAxOSwgMzMwMjMsIDMzMDI4LCAzMTA1MCwgMjEyOTQsIAorICAgIDMzMDMyLCAzMzAzNywgMzMwNDMsIDMzMDQ4LCAzMzA1MiwgMzMwNTYsIDMzMDU5LCAzMzA2MywgMzMwNjksIDMzMDgwLCAKKyAgICAzMzA5MiwgMzEwNTYsIDMzMDk3LCAzMzEwMCwgMzMxMDQsIDM0NywgMzMxMDksIDMzMTE0LCAzMzExOSwgMzMxMjQsIAorICAgIDMzMTI5LCAzMzEzNCwgMzMxNDAsIDMzMTQ1LCAzMzE1MCwgMzMxNTYsIDMzMTYxLCAzMzE2NywgMzMxNzIsIDMzMTc4LCAKKyAgICAzMzE4MywgMzMxODgsIDMzMTkzLCAzMzE5OCwgMzMyMDMsIDMzMjA4LCAzMzIxMywgMzMyMTgsIDMzMjI0LCAzMzIyOSwgCisgICAgMzMyMzQsIDMzMjM5LCAzMzI0NCwgMzMyNDksIDMzMjU0LCAzMzI1OSwgMzMyNjUsIDMzMjcxLCAzMzI3NiwgMzMyODEsIAorICAgIDMzMjg2LCAzMzI5MSwgMzMyOTYsIDMzMzAxLCAzMzMwNiwgMzMzMTEsIDMzMzE2LCAzMzMyMSwgMzMzMjYsIDMzMzMxLCAKKyAgICAzMzMzNiwgMzMzNDEsIDMzMzQ2LCAzMzM1MSwgMzMzNTYsIDMzMzYxLCAzMzM2NywgMzEzLCAyNiwgMzMzNzIsIDMzMzc2LCAKKyAgICAzMzM4MCwgMzMzODgsIDMzMzkyLCAzMzM5NiwgMzMzOTksIDMzNDAyLCAzMzQwNCwgMzM0MDksIDMzNDEzLCAzMzQxOCwgCisgICAgMzM0MjIsIDMzNDI3LCAzMzQzMSwgMzM0MzYsIDMzNDQwLCAzMzQ0MywgMzM0NDUsIDMzNDQ5LCAzMzQ1NCwgMzM0NTgsIAorICAgIDMzNDY5LCAzMzQ3MiwgMzM0NzQsIDMzNDc4LCAzMzQ5MCwgMzM0OTksIDMzNTAzLCAzMzUwNywgMzM1MTMsIDMzNTE4LCAKKyAgICAzMzUyNywgMzM1MzMsIDMzNTM4LCAzMzU0MywgMzM1NDcsIDMzNTUyLCAzMzU1OSwgMzM1NjQsIDMzNTcwLCAzMzU3NSwgCisgICAgMzM1NzksIDMzNTg2LCAyNTcwOCwgMjU3MTgsIDMzNTkwLCAzMzU5NSwgMzM2MDAsIDMzNjA1LCAzMzYxMiwgMzM2MTYsIAorICAgIDMzNjIzLCA4MTEzLCAzMzYyOSwgMzM2MzgsIDMzNjQ2LCAzMzY2MSwgMzM2NzUsIDMzNjgzLCAzMzY5NCwgMzM3MDMsIAorICAgIDMzNzA4LCA3MjI3LCAzMzcxOCwgMzM3MjMsIDMzNzI4LCAzMzczMiwgMzM3MzUsIDMzNzM5LCAzMzc0NCwgMzM3NDgsIAorICAgIDMzNzU1LCAzMzc2MCwgMzM3NjUsIDg5MTIsIDMzNzc1LCAzMzc3NywgMzM3ODAsIDMzNzg0LCAzMzc5MCwgMzM3OTQsIAorICAgIDMzNzk5LCAzMzgwNCwgMzM4MTAsIDMzODE1LCAzMzgyMSwgMzM4MjYsIDMzODM2LCAzMzg0NSwgMzM4NTMsIDMzODU4LCAKKyAgICAzMzg2NCwgMzM4NjksIDMzODc2LCAzMzg4MCwgMzM4ODgsIDMzODk1LCAzMzkwOCwgMzM5MTYsIDMzOTIwLCAzMzkzMCwgCisgICAgMzM5MzUsIDMzOTM5LCAzMzk0NywgMzM5NTUsIDMzOTU5LCAzMzk2OCwgMzM5NzQsIDMzOTc5LCAzMzk4NywgMzM5OTcsIAorICAgIDM0MDA2LCAzNDAxNSwgMzQwMjQsIDM0MDM1LCAzNDA0MywgMzQwNTQsIDM0MDYzLCAzNDA3MCwgMzQwNzYsIDM0MDgxLCAKKyAgICAzNDA5MiwgMzQwOTcsIDM0MTAxLCAzNDEwNCwgMzQxMDgsIDM0MTE2LCAzNDEyMiwgMzQxMzAsIDM0MTM3LCAzNDE0MywgCisgICAgMzQxNDgsIDM0MTU0LCAyNDE4LCAzNDE1OCwgMzQxNjAsIDM0MTY1LCAzNDE3MCwgMzQxNzUsIDM0MTc4LCAzNDE4MCwgCisgICAgMzQxODQsIDM0MTg3LCAzNDE5NCwgMzQxOTgsIDk4OTEsIDM0MjAyLCAzNDIwOCwgMzQyMTgsIDM0MjIzLCAzNDIyOSwgCisgICAgMzQyMzMsIDM0MjM4LCAzNDI1MSwgMjYwOTQsIDM0MjU3LCAzNDI2NiwgMTc0NjksIDM0MjczLCAzNDI4MiwgMzE2NTQsIAorICAgIDM0MjkwLCAzNDI5NSwgMzQyOTksIDM0MzA3LCAzNDMxNCwgMzQzMTksIDM0MzIzLCAzNDMyOCwgMzQzMzIsIDM0MzQwLCAKKyAgICAzNDM0NiwgMzQzNTIsIDM0MzU3LCAzNDM2MSwgMzQzNjQsIDM0MzY5LCAzNDM4MiwgMzQzOTgsIDIyOTg2LCAzNDQxNSwgCisgICAgMzQ0MjcsIDM0NDQ0LCAzNDQ1NiwgMzQ0NzAsIDIzMDAzLCAyMzAyMiwgMzQ0ODIsIDM0NDk0LCAyNjgwLCAzNDUwOCwgCisgICAgMzQ1MTMsIDM0NTE4LCAzNDUyMywgMzQ1MjcsIDM0NTM0LCAzNDU0NiwgMzQ1NTIsIDM0NTU1LCAzNDU2NiwgMzQ1NzcsIAorICAgIDM0NTgyLCAzMjA3MSwgNjk1LCAzNDU4NiwgMzQ1OTAsIDM0NTk0LCAzNDU5NywgMzQ2MDIsIDM0NjA3LCAzNDYxMywgCisgICAgMzQ2MTgsIDM0NjIzLCAzNDYyOSwgMzQ2MzUsIDM0NjQwLCAzNDY0NCwgMzQ2NDksIDM0NjU0LCAzNDY1OSwgMzQ2NjMsIAorICAgIDM0NjY2LCAzNDY3MiwgMzQ2NzcsIDM0NjgyLCAzNDY4NywgMzQ2OTEsIDM0Njk2LCAzNDcwMiwgMzQ3MTAsIDI2MzI3LCAKKyAgICAzNDcxNSwgMzQ3MjAsIDM0NzI3LCAzNDczMywgMzQ3MzksIDM0NzQ0LCAzNDc1MiwgMjI1MjgsIDM0NzU5LCAzNDc2NCwgCisgICAgMzQ3NjksIDM0Nzc0LCAzNDc3OCwgMzQ3ODEsIDM0Nzg2LCAzNDc5MCwgMzQ3OTQsIDM0ODAxLCAzNDgwNywgMzQ4MTMsIAorICAgIDM0ODE5LCAzNDgyNiwgMzQ4MzEsIDM0ODM3LCAzMzk1MCwgMzQ4NDEsIDM0ODQ1LCAzNDg1MCwgMzQ4NjMsIDM0ODY4LCAKKyAgICAzNDg3NCwgMzQ4ODIsIDM0ODg5LCAzNDg5NywgMzQ5MDcsIDM0OTEzLCAzNDkxOSwgMzQ5MjUsIDM0OTI5LCAzNDkzOCwgCisgICAgMzQ5NDYsIDM0OTUzLCAzNDk1OCwgMzQ5NjMsIDEwNDQ0LCAzNDk2OCwgMzQ5NzYsIDM0OTgzLCAzNDk4OSwgMzQ5OTksIAorICAgIDM1MDA0LCAzNTAxMCwgMzUwMTgsIDM2MDgsIDM1MDI1LCAzNTAzMiwgMzYxNCwgMzUwMzYsIDM1MDQxLCAzNTA1MiwgCisgICAgMzUwNTksIDM1MDY1LCAzNTA3NCwgMzUwNzgsIDQwMTUsIDM1MDgxLCAzNTA4OCwgMzUwOTQsIDM1MTAwLCAzNTEwOCwgCisgICAgMzUxMTgsIDI5MDQ5LCAzNTEyNSwgMzUxMzMsIDM1MTM4LCAzNTE0NCwgMzUxNDksIDI1OTU0LCAzNTE1NSwgMzUxNjIsIAorICAgIDM1MTY4LCAzNTE3NywgMjM2NjcsIDM1MTg0LCAzNTE4OSwgMzUxOTMsIDM1MjAxLCAzNTIwOSwgOTYwNywgNTg5NSwgCisgICAgMzUyMTYsIDM1MjIwLCAzNTIyMiwgMzUyMjYsIDM1MjMxLCAzNTIzMywgMzUyMzksIDM1MjQ0LCAzNTI0OSwgMzUyNTYsIAorICAgIDMyNTkyLCAzNTI2MiwgMzUyNjcsIDM1MjcxLCAzNTI3NiwgMzUyODAsIDM1Mjg5LCAzNTI5MywgMzUyOTksIDM1MzA2LCAKKyAgICAzNTMxMiwgMzUzMTksIDM1MzI0LCAzNTMzMywgMzUzMzgsIDM1MzQyLCAzNTM0NywgMzUzNTQsIDM1MzYyLCAzNTM3MCwgCisgICAgMzUzNzUsIDIxMzUwLCAzNTM3OSwgMzUzODIsIDM1Mzg2LCAzNTM5MCwgMzUzOTQsIDM1Mzk3LCAzNTM5OSwgMzU0MDcsIAorICAgIDM1NDExLCAzNTQxOCwgMzU0MjIsIDM1NDI2LCAzNTQzNCwgMzU0NDEsIDM1NDUxLCAzNTQ1NSwgMzU0NTksIDM1NDY3LCAKKyAgICAzNTQ3NSwgMzU0ODEsIDM1NDg2LCAzNTQ5NSwgMTMzNTcsIDM1NTAxLCAzNTUxMCwgMzU1MTUsIDM1NTIyLCAzNTUzMCwgCisgICAgMzU1MzgsIDM1NTQ2LCAzNTU1MywgMzU1NjAsIDM1NTY3LCAzNTU3NCwgMzU1ODEsIDM1NTg2LCAzNTU5MiwgMzU2MDksIAorICAgIDM1NjE3LCAzNTYyNywgMzU2MzUsIDM1NjQyLCA0MDcsIDM1NjQ2LCAzNTY1MiwgMzU2NTYsIDM1NjYxLCAzMzY5OSwgCisgICAgMzU2NjcsIDM1NjcwLCAzNTY3NCwgMzU2ODIsIDM2MTksIDM1NjkwLCAzNTY5NiwgMzU3MDIsIDM1NzExLCAzNTcyMSwgCisgICAgMzU3MjgsIDM1NzM0LCAzNjI1LCAzNjMxLCAzNTc0MywgMzU3NTAsIDM1NzU4LCAzNTc2MywgMzU3NjcsIDM1Nzc0LCAKKyAgICAzNTc4MiwgMzU3ODksIDM1Nzk1LCAzNTgwNCwgMzU4MTQsIDM1ODIwLCAzNTgyOCwgMzU4MzcsIDM1ODQ0LCAzNTg1MiwgCisgICAgMzU4NTksIDIyMDI2LCAzNTg2MywgMzU4NzAsIDM1ODc2LCAzNTg4NiwgMzU4OTUsIDM1OTA2LCAzNTkxMCwgMzU5MjAsIAorICAgIDM1OTI2LCAzNTkzMywgMzU5NDEsIDM1OTUwLCAzNTk1OSwgMzU5NjksIDM1OTgwLCAzNTk4NywgMzU5OTIsIDM1OTk5LCAKKyAgICAzMDI5LCAzNjAwNywgMzYwMTMsIDM2MDE4LCAzNjAyNCwgMzYwMzAsIDM2MDM1LCAzNjA0OCwgMzYwNjEsIDM2MDc0LCAKKyAgICAzNjA4MSwgMzYwODcsIDM2MDk1LCAzNjEwMywgMzYxMDgsIDM2MTEyLCAxNDY5LCAzNjExNiwgMzYxMjEsIDM2MTI2LCAKKyAgICAzNjEzMSwgMzYxMzYsIDM2MTQyLCAzNjE0NywgMzYxNTIsIDM2MTU3LCAzNjE2MiwgMzYxNjcsIDM2MTcyLCAzNjE3NywgCisgICAgMzYxODMsIDM2MTg5LCAzNjE5NCwgMzYxOTksIDM2MjA1LCAzNjIxMCwgMzYyMTUsIDM2MjIwLCAzNjIyNiwgMzYyMzEsIAorICAgIDM2MjM2LCAzNjI0MSwgMzYyNDYsIDM2MjUyLCAzNjI1NywgMzYyNjIsIDM2MjY4LCAzNjI3MywgMzYyNzgsIDM2MjgzLCAKKyAgICAzNjI4OCwgMzYyOTMsIDM2Mjk5LCAzNjMwNCwgMzYzMTAsIDM2MzE1LCAzNjMyMSwgMzYzMjYsIDM2MzMxLCAzNjMzNiwgCisgICAgMzYzNDIsIDM2MzQ4LCAzNjM1NCwgMzYzNjAsIDM2MzY2LCAzNjM3MiwgMzYzNzgsIDM2Mzg0LCAzNjM4OSwgMzYzOTQsIAorICAgIDM2NDAwLCAzNjQwNSwgMzY0MTAsIDM2NDE1LCAzNjQyMCwgMzY0MjUsIDM2NDMwLCAzNjQzNSwgMzY0NDEsIDM2NDQ2LCAKKyAgICAzNjQ1MSwgMzY0NTcsIDM2NDYzLCAxMDEsIDM2NDY4LCAzNjQ3MCwgMzY0NzQsIDM2NDc4LCAzNjQ4MiwgMzY0ODcsIAorICAgIDM2NDkxLCA5NTI4LCAzNjQ5NSwgMzY1MDEsIDE3NDEsIDYyODAsIDM2NTA3LCAzNjUxMCwgMzY1MTUsIDM2NTE5LCAzNjUyNCwgCisgICAgMzY1MjgsIDM2NTMyLCAzNjUzNywgMTAyNDUsIDM2NTQxLCAzNjU0NSwgMzY1NDksIDM2NTUzLCAxNTM3OSwgMzY1NTgsIAorICAgIDM2NTYyLCAzNjU2NywgMzY1NzIsIDM2NTc3LCAzNjU4MSwgMzY1ODgsIDI2MTE4LCAzNjU5NCwgMzY1OTcsIDM2NjAxLCAKKyAgICAzNjYwNiwgMzY2MTIsIDM2NjE2LCAzNjYyNCwgMzY2MzAsIDM2NjM1LCAzNjYzOSwgMzY2NDUsIDM2NjQ5LCAzNjY1MywgCisgICAgMzQ2MiwgMzQ2NywgMjkyNDEsIDM2NjU2LCAzNjY2MCwgMzY2NjQsIDM2NjY4LCAzNjY3NiwgMzY2ODMsIDM2Njg3LCAKKyAgICAzNjY5NCwgMzY2OTksIDMxNywgMzY3MDQsIDM2NzA4LCAzNjcxNCwgMzY3MjYsIDM2NzMyLCAzNjczOCwgMzY3NDIsIAorICAgIDM2NzQ4LCAzNjc1NywgMzY3NjEsIDM2NzY1LCAzNjc3MCwgMzY3NzYsIDM2NzgxLCAzNjc4NSwgMzY3OTAsIDM2Nzk0LCAKKyAgICAzNjc5OCwgMzY4MDUsIDM2ODExLCAzNjgxNiwgMzY4MzEsIDM2ODQ2LCAzNjg2MSwgMzY4NzcsIDM2ODk1LCAxMDE5NSwgCisgICAgMzY5MDksIDM2OTE2LCAzNjkyMCwgMzY5MjMsIDM2OTMyLCAzNjkzNywgMzY5NDEsIDM2OTQ5LCAzMzkwMSwgMzY5NTcsIAorICAgIDM2OTYxLCAzNjk3MSwgMzY5ODIsIDI5MjExLCAzNjk5NSwgMzY5OTksIDM3MDA4LCAzNzAxNiwgOTc4NSwgMTQ5MDcsIAorICAgIDM3MDIwLCAyMjQ0MSwgMzcwMjMsIDMwMTU5LCAzNzAyOCwgOTc4NCwgMzcwMzMsIDM3MDM5LCAzNzA0NCwgMzcwNTAsIAorICAgIDM3MDU1LCAzNzA2MSwgMzcwNjYsIDM3MDcyLCAzNzA3NywgMzcwODMsIDM3MDg5LCAzNzA5NSwgMzcxMDAsIDM3MDU2LCAKKyAgICAzNzA2MiwgMzcwNjcsIDM3MDczLCAzNzA3OCwgMzcwODQsIDM3MDkwLCA4MTI2LCAzODc0LCAzNzEwNCwgMzcxMTIsIAorICAgIDM3MTE2LCAzNzExOSwgMzcxMjMsIDM3MTI4LCAzNzEzMywgMzcxMzksIDM3MTQ1LCAzNzE1MCwgMzcxNTQsIDI1OTY2LCAKKyAgICAzNzE1OCwgMzcxNjIsIDM3MTY4LCAzNzE3MiwgOTA0OSwgMzcxODEsIDM3MTg4LCAzNzE5MiwgMTE4NzUsIDM3MTk5LCAKKyAgICAzNzIwNSwgMzcyMTAsIDM3MjE3LCAzNzIyNCwgMzcyMzEsIDI4NTU3LCA4MDQ5LCAzNzIzOCwgMzcyNDUsIDM3MjUyLCAKKyAgICAzNzI1OCwgMzcyNjMsIDM3MjcwLCAzNzI4MSwgMzcyODcsIDM3MjkyLCAzNzI5NywgMzczMDIsIDM3MzA5LCAzNzA1NywgCisgICAgMzczMTMsIDM3MzIzLCAzNzMzNCwgMzczNDAsIDM3MzQ1LCAzNzM1MCwgMzczNTUsIDM3MzYwLCAzNzM2NSwgMzczNjksIAorICAgIDM3MzczLCAzNzM3OSwgMzczODcsIDIzMTksIDg2NSwgMTAyNjEsIDEwMjczLCAxMDI3OCwgMTAyODQsIDM3Mzk2LCAxMDI4OSwgCisgICAgMTAyOTQsIDEwMzAwLCAzNzQwMSwgMzc0MTEsIDM3NDE1LCAxMDMwNSwgMzc0MjAsIDE2ODk3LCAzNzQyMywgMzc0MjgsIAorICAgIDM3NDMyLCAzNzQzNywgMzc0NDIsIDM3NDQ5LCAzNzQ1NiwgMzc0NjAsIDM3NDYzLCAzNzQ3MSwgMTAyMDgsIDM3NDc4LCAKKyAgICAzNzQ4MSwgMzc0ODcsIDM3NDk3LCA1OTI5LCAzNzUwNiwgMzc1MTAsIDM3NTE4LCAzNzUyMiwgMzc1MzIsIDM3NTM4LCAKKyAgICAzNzU0OSwgMzc1NTUsIDM3NTYxLCAzNzU2NiwgMzc1NzIsIDM3NTc4LCAzNzU4NCwgMzc1ODksIDM3NTkyLCAzNzU5OSwgCisgICAgMzc2MDUsIDM3NjEwLCAzNzYxNywgMzc2MjQsIDM3NjI4LCAzNzYzOCwgMzc2NTEsIDM3NjYwLCAzNzY2OSwgMzc2ODAsIAorICAgIDM3NjkzLCAzNzcwNCwgMzc3MTMsIDM3NzI0LCAzNzcyOSwgMzc3MzgsIDM3NzQzLCAxMDMxMCwgMzc3NDksIDM3NzU2LCAKKyAgICAzNzc2NCwgMzc3NjksIDM3NzczLCAzNzc4MCwgMzc3ODcsIDM4MjksIDE2LCAzNzc5MSwgMzc3OTYsIDE2NzUxLCAzNzgwMCwgCisgICAgMzc4MDMsIDM3ODA2LCAyODA2MywgMzc4MTAsIDI4NTY2LCAzNzgxOCwgMzc4MjIsIDM3ODI2LCAzNzgyOSwgMzc4MzUsIAorICAgIDM3MDc5LCAzNzg0MSwgMzc4NDksIDM3ODU1LCAzNzg2MiwgMjgwNDYsIDM3ODY2LCAyODI0MCwgMzc4NzAsIDM3ODc5LCAKKyAgICAzNzg4NSwgMzc4OTEsIDM3ODk2LCAzNzkwMCwgMzc5MDYsIDM3OTEwLCAzNzkxOCwgMzc5MjYsIDI2MTg0LCAzNzkzMiwgCisgICAgMzc5MzksIDM3OTQ1LCAzNzk1MCwgMzc5NTUsIDM3OTU5LCAzNzk2NSwgMzc5NzAsIDM3OTc2LCA0MDU2LCA3OTEsIDM3OTgzLCAKKyAgICAzNzk4NywgMzc5OTAsIDE1MjY5LCAzODAwMiwgMzU4MzMsIDM4MDEzLCAzODAxNiwgMzgwMjMsIDM4MDI3LCAzODAzMywgCisgICAgMzgwMzcsIDM4MDQzLCAzODA0OCwgMzgwNTQsIDM4MDU5LCAzODA2NCwgMzgwNjgsIDM4MDcyLCAzODA3NywgMzgwODIsIAorICAgIDM4MDkyLCAzODA5OCwgMzgxMTEsIDM4MTE3LCAzODEyMywgMzgxMzAsIDM4MTM1LCAzODE0MSwgMzgxNDYsIDE2NjM3LCAKKyAgICAxNDcyLCAxMDE5LCAzMTIwMCwgMzEyMDYsIDM4MTUxLCAzMTIxMiwgMzEyMjUsIDMxMjMxLCAzMTIzNywgMzgxNTcsIAorICAgIDMxMjQzLCAzMTI0OSwgMzgxNjMsIDM4MTY5LCAyMiwgMzgxNzcsIDM4MTg0LCAzODE4OCwgMzgxOTIsIDM4MjAwLCAzMTk2MCwgCisgICAgMzgyMDQsIDM4MjA4LCAzODIxNSwgMzgyMjAsIDM4MjI0LCAzODIyOSwgMzgyMzUsIDM4MjQwLCAzODI0NiwgMzgyNTEsIAorICAgIDM4MjU1LCAzODI1OSwgMzgyNjMsIDM4MjY4LCAzODI3MiwgMzgyNzcsIDM4MjgxLCAzODI4OCwgMzgyOTMsIDM4Mjk3LCAKKyAgICAzODMwMiwgMzgzMDYsIDM4MzExLCAzODMxNSwgMzgzMjAsIDM4MzI2LCAxNTQ4OSwgMTU0OTQsIDM4MzMxLCAzODMzNSwgCisgICAgMzgzMzgsIDM4MzQyLCAyMTE3NywgMzgzNDcsIDM4MzUxLCAzODM1NywgMzgzNjQsIDM4MzY5LCAzODM3OSwgMzgzODQsIAorICAgIDM4MzkyLCAzODM5NiwgMzgzOTksIDMxOTc1LCAzODQwMywgNDEwOSwgMzg0MDgsIDM4NDEzLCAzODQxNywgMzg0MjIsIAorICAgIDM4NDI2LCAzODQzMSwgMTMzNzUsIDM4NDQyLCAzODQ0NiwgMzg0NDksIDM4NDU0LCAzODQ1OCwgMzg0NjIsIDM4NDY1LCAKKyAgICAzODQ2OSwgODE0NSwgMTMzOTEsIDM4NDcyLCAzODQ3NSwgMzg0ODEsIDM4NDg2LCAzODQ5MiwgMzg0OTcsIDM4NTAzLCAKKyAgICAzODUwOCwgMzg1MTQsIDM4NTE5LCAzODUyNSwgMzg1MzEsIDM4NTM3LCAzODU0MiwgMzg1NDYsIDM4NTUwLCAzODU1OSwgCisgICAgMzg1NzUsIDM4NTkxLCAzODYwMSwgMjc5NTMsIDM4NjA4LCAzODYxMiwgMzg2MTcsIDM4NjIyLCAzODYyNiwgMzg2MzAsIAorICAgIDM1OTU0LCAzODYzNiwgMzg2NDEsIDM4NjQ1LCAzODY1MiwgMzg2NTcsIDM4NjYxLCAzODY2NSwgMjY5ODYsIDM4NjcxLCAKKyAgICAyMTQ0NSwgMzg2NzYsIDM4NjgzLCAzODY5MSwgMzg2OTcsIDM4NzA0LCAzODcxMiwgMzg3MTgsIDM4NzIyLCAzODcyOCwgCisgICAgMzg3MzYsIDM4NzQwLCAzODc0OSwgOTUwOSwgMzg3NTcsIDM4NzYxLCAzODc2OSwgMzg3NzYsIDM4NzgxLCAzODc4NiwgCisgICAgMzg3OTAsIDM4NzkzLCAzODc5NywgMzg4MDAsIDM4ODA0LCAzODgxMSwgMzg4MTYsIDM4ODIyLCAyNjQwNSwgMzEyNjMsIAorICAgIDM4ODI2LCAzODgzMywgMzg4MzksIDM4ODQ1LCAzODg1MCwgMzg4NTMsIDM4ODU1LCAzODg2MiwgMzg4NjksIDM4ODc1LCAKKyAgICAzODg3OSwgMzg4ODIsIDM4ODg2LCAzODg5MCwgMzg4OTQsIDM4ODk5LCAzODkwMywgMzg5MDcsIDM4OTEwLCAzODkxNCwgCisgICAgMzg5MjgsIDIzMDUyLCAzODk0NywgMzg5NjAsIDM4OTczLCAzODk4NiwgMjMwNzAsIDM5MDAxLCAxMDQ5NywgMzkwMTYsIAorICAgIDM5MDIyLCAzOTAyNiwgMzkwMzAsIDM5MDM3LCAzOTA0MiwgMzkwNDYsIDM5MDUzLCAzOTA1OSwgMzkwNjQsIDM5MDcwLCAKKyAgICAzOTA4MCwgMzkwOTIsIDM5MTAzLCAzOTEwOCwgMzkxMTUsIDM5MTE5LCAzOTEyMywgMzkxMjYsIDE1ODg1LCAzNjc3LCAKKyAgICAzOTEzNCwgMTU1MTYsIDM5MTQ3LCAzOTE1NCwgMzkxNTgsIDM5MTYyLCAzOTE2NywgMzkxNzIsIDM5MTc4LCAzOTE4MiwgCisgICAgMzkxODYsIDM5MTg5LCA3NzQyLCAxNTUyNywgMzkxOTQsIDM5MTk4LCAzOTIwNCwgMzkyMTMsIDM5MjE4LCAzOTIyNSwgCisgICAgMzU4MTAsIDM5MjMxLCAzOTIzNiwgMzkyNDAsIDM5MjQ1LCAzOTI1MiwgMzkyNTYsIDM5MjU5LCAzOTI2MywgMzkyNjgsIAorICAgIDE0NTU5LCAzOTI3NSwgMzkyODIsIDEwNzIsIDM5Mjg2LCAzOTI5MSwgMzkyOTYsIDM5MzAyLCAzOTMwNywgMzkzMTIsIAorICAgIDM5MzE2LCAzOTMyNiwgMzkzMzEsIDM5MzM3LCAzOTM0MiwgMzkzNDgsIDM5MzUzLCAzOTM1OSwgMzkzNjksIDM5Mzc0LCAKKyAgICAzOTM3OSwgMzkzODMsIDcyMjksIDcyNDEsIDM5Mzg4LCAzOTM5MSwgMzkzOTgsIDM5NDA0LCAzNDA2NiwgMzQwNzMsIAorICAgIDM5NDEzLCAzOTQxNywgMzIwMjMsIDM5NDI1LCAzOTQzNiwgMzk0NDQsIDM2MDAyLCAzOTQ1MSwgMzk0NTYsIDM5NDYxLCAKKyAgICAzOTQ3MiwgMzk0NzksIDM5NDkwLCAzMjA0NywgMjE0NTEsIDM5NDk4LCA3MzUsIDM5NTAzLCAzOTUwOSwgMjgwMzcsIAorICAgIDM5NTE1LCAzOTUyMCwgMzk1MzAsIDM5NTM5LCAzOTU0NiwgMzk1NTIsIDM5NTU2LCAzOTU1OSwgMzk1NjYsIDM5NTcyLCAKKyAgICAzOTU3OSwgMzk1ODUsIDM5NTk1LCAzOTYwMywgMzk2MDksIDM5NjE1LCAzOTYyMCwgMzk2MjQsIDM5NjMxLCAzOTYzNywgCisgICAgMzk2NDQsIDM4ODk1LCA1MzUsIDEzODEyLCAzOTY1MCwgMzk2NTUsIDM5NjU4LCAzOTY2NCwgMzk2NzIsIDEzOTYsIDM5Njc3LCAKKyAgICAzOTY4MSwgMzk2ODYsIDM5NjkzLCAzOTY5OSwgMzk3MDMsIDM5NzA3LCAzOTcxMiwgMzk3MjEsIDM5NzI4LCAzOTczOCwgCisgICAgMzk3NDQsIDI4MDgxLCAzOTc2MSwgMzk3NzAsIDM5Nzc4LCAzOTc4NCwgMzk3ODksIDM5Nzk2LCAzOTgwMiwgMzk4MTAsIAorICAgIDM5ODE5LCAzOTgyNywgMzk4MzEsIDM5ODM2LCAzOTg0NCwgMzIwNTYsIDM5ODUwLCAzOTg2OSwgMTU4MTgsIDM5ODgzLCAKKyAgICAzOTg5OSwgMzk5MTMsIDM5OTE5LCAzOTkyNCwgMzk5MjksIDM5OTM0LCAzOTk0MCwgMzIwNjIsIDM5OTQ1LCAzOTk1MiwgCisgICAgMzk5NTcsIDM5OTYxLCAzNDUsIDI5MzYsIDM5OTY4LCAzOTk3MywgMzk5NzgsIDI3MzEyLCAzOTc5OSwgMzk5ODIsIDM5OTg3LCAKKyAgICAzOTk5NSwgMzk5OTksIDQwMDAyLCA0MDAwOCwgNDAwMTQsIDQwMDE4LCAyODEzNiwgNDAwMjEsIDQwMDI2LCA0MDAzMCwgCisgICAgNDAwMzMsIDQwMDM4LCA0MDA0MiwgNDAwNDcsIDQwMDUyLCA0MDA1NiwgNDAwNjEsIDQwMDY1LCA0MDA2OSwgMjExNzMsIAorICAgIDIxMTg0LCA0MDA3MywgNDAwNzgsIDQwMDg0LCAyNjk0MywgNDAwODksIDQwMDkzLCAyMTI2MCwgMTYwNjYsIDQwMDk2LCAKKyAgICA0MDEwMSwgNDAxMDYsIDQwMTExLCA0MDExNiwgNDAxMjEsIDQwMTI2LCA0MDEzMSwgNDQ3LCA0MywgMzEyODEsIDMxMjg2LCAKKyAgICAzMTI5MSwgMzEyOTcsIDMxMzAyLCAzMTMwNywgNDAxMzYsIDMxMzExLCA0MDE0MCwgNDAxNDQsIDQwMTQ4LCAzMTMxNiwgCisgICAgMzEzMjIsIDQwMTYyLCAzMTMzMywgMzEzMzgsIDQwMTcwLCA0MDE3NSwgMzEzNDQsIDQwMTgwLCA0MDE4NSwgNDAxOTAsIAorICAgIDQwMTk1LCA0MDIwMSwgNDAyMDcsIDQwMjEzLCAzMTM2MSwgNDAyMjYsIDQwMjMyLCAzMTM2NSwgNDAyMzYsIDMxMzcwLCAKKyAgICA0MDI0MSwgMzEzNzUsIDMxMzgwLCA0MDI0NCwgNDAyNDksIDQwMjUzLCAzMDkzMCwgNDAyNTksIDEzNTk5LCA0MDI2NiwgCisgICAgNDAyNzEsIDMxMzg1LCA0MDI3NSwgNDAyODAsIDQwMjg1LCA0MDI5MCwgNDAyOTQsIDQwMjk5LCA0MDMwNCwgNDAzMTAsIAorICAgIDQwMzE1LCA0MDMyMCwgNDAzMjYsIDQwMzMyLCA0MDMzNywgNDAzNDEsIDQwMzQ2LCA0MDM1MSwgNDAzNTYsIDQwMzYwLCAKKyAgICA0MDM2NSwgNDAzNzAsIDQwMzc1LCA0MDM4MSwgNDAzODcsIDQwMzkzLCA0MDM5OCwgNDA0MDIsIDQwNDA3LCA0MDQxMSwgCisgICAgMzEzODksIDMxMzk0LCAzMTM5OSwgNDA0MTUsIDQwNDE5LCA0MDQyMywgMzE0MDQsIDMxNDEwLCAzMTQxNiwgMzE0MjgsIAorICAgIDQwNDM1LCAyNjAwMywgNDA0MzksIDQwNDQzLCA0MDQ0OCwgNDA0NTMsIDQwNDU4LCA0MDQ2MywgNDA0NjcsIDQwNDcxLCAKKyAgICA0MDQ4MSwgNDA0ODYsIDQwNDkxLCA0MDQ5NSwgNDA0OTksIDQwNTAyLCA0MDUxMCwgMzE0NzYsIDQwNTE1LCAxNDc5LCAKKyAgICA0MDUyMSwgNDA1MjksIDQwNTM4LCA0MDU0MiwgNDA1NDYsIDQwNTU0LCA0MDU2MCwgNDA1NjgsIDQwNTg0LCA0MDU4OCwgCisgICAgNDA1OTIsIDQwNTk3LCA0MDYxMiwgMzE1MTMsIDE3NDksIDEyMDU1LCA0MDYxNiwgMTM3OCwgNDA2MjgsIDQwNjI5LCAKKyAgICA0MDYzNywgNDA2NDQsIDQwNjQ5LCA0MDY1NiwgNDA2NjEsIDkzNzksIDExMTQsIDEwMzMyLCA0MDY2OCwgNDA2NzMsIAorICAgIDQwNjc2LCA0MDY3OSwgNDA2ODgsIDEyODYsIDQwNjkzLCAzOTA0MywgNDA3MDAsIDQwNzA1LCAyMjQ5MywgMjU1NywgCisgICAgNDA3MDksIDEwNzQxLCA0MDcxOSwgNDA3MjUsIDIzMzcsIDIzNDcsIDQwNzM0LCA0MDc0MywgNDA3NTMsIDQwNzY0LCAzMjkzLCAKKyAgICAzNDIxOSwgMTAzODQsIDM4MDcsIDE2Njc1LCAxMjkxLCA0MDc2OSwgNDA3NzcsIDQwNzg0LCA0MDc4OSwgNDA3OTMsIAorICAgIDQwNzk3LCAyMzg2NSwgMTA0MTEsIDQwODA1LCA0MDgxNCwgNDA4MjMsIDQwODMxLCA0MDgzOCwgNDA4NDksIDQwODU0LCAKKyAgICA0MDg2NywgNDA4ODAsIDQwODkyLCA0MDkwNCwgNDA5MTYsIDQwOTI5LCA0MDk0MCwgNDA5NTEsIDQwOTYxLCA0MDk2OSwgCisgICAgNDA5NzcsIDQwOTg5LCA0MTAwMSwgNDEwMTIsIDQxMDIxLCA0MTAyOSwgNDEwMzYsIDQxMDQ4LCA0MTA1NSwgNDEwNjQsIAorICAgIDQxMDcxLCA0MTA4NCwgNDEwODksIDQxMDk5LCA0MTEwNCwgNDExMTAsIDQxMTE1LCAzNzE4OSwgNDExMTksIDQxMTI2LCAKKyAgICA0MTEzMCwgNDExMzcsIDQxMTQ1LCAyNTE4LCA0MTE1MiwgNDExNjMsIDQxMTczLCA0MTE4MiwgNDExOTAsIDQxMjAwLCAKKyAgICA0MTIwOCwgNDEyMTgsIDQxMjI3LCA0MTIzMiwgNDEyMzgsIDQxMjQ0LCAzNzA5LCA0MTI1NSwgNDEyNjUsIDQxMjc0LCAKKyAgICA0MTI4MywgNDEyOTMsIDQxMzAxLCA0MTMxMCwgNDEzMTUsIDQxMzIwLCA0MTMyNSwgMTcwNSwgMzcsIDQxMzMzLCA0MTM0MSwgCisgICAgNDEzNTIsIDQxMzYzLCAxNjM1MCwgNDEzNzMsIDQxMzc3LCA0MTM4NCwgNDEzOTAsIDQxMzk1LCA0MTM5OSwgNDE0MTAsIAorICAgIDQxNDIwLCA0MTQyOSwgNDE0NDAsIDE2NzI0LCAxNjcyOSwgNDE0NDUsIDQxNDU0LCA0MTQ1OSwgNDE0NjksIDQxNDc0LCAKKyAgICA0MTQ4MiwgNDE0OTAsIDQxNDk3LCA0MTUwMywgNzA3OCwgMjI4LCA0MTUwNywgNDE1MTMsIDQxNTE4LCA0MTUyMSwgMjExNywgCisgICAgMzkxNTksIDQxNTI5LCA0MTUzMywgNDE1MzYsIDE1MTIsIDQxNTQyLCAxMzk3NCwgMTI5NiwgNDE1NDcsIDQxNTYwLCAKKyAgICA0MTU3NCwgMjY0MywgNDE1OTIsIDQxNjA0LCA0MTYxNiwgMjY1NywgMjY3NCwgNDE2MzAsIDQxNjQzLCAyNjg5LCA0MTY1NywgCisgICAgNDE2NjksIDI3MDQsIDQxNjgzLCAxMzAyLCAxMzA4LCAxMzE0LCAxMDY1OSwgNDE2ODgsIDQxNjkzLCA0MTY5OCwgNDE3MDIsIAorICAgIDQxNzE3LCA0MTczMiwgNDE3NDcsIDQxNzYyLCA0MTc3NywgNDE3OTIsIDQxODA3LCA0MTgyMiwgNDE4MzcsIDQxODUyLCAKKyAgICA0MTg2NywgNDE4ODIsIDQxODk3LCA0MTkxMiwgNDE5MjcsIDQxOTQyLCA0MTk1NywgNDE5NzIsIDQxOTg3LCA0MjAwMiwgCisgICAgNDIwMTcsIDQyMDMyLCA0MjA0NywgNDIwNjIsIDQyMDc3LCA0MjA5MiwgNDIxMDcsIDQyMTIyLCA0MjEzNywgNDIxNTIsIAorICAgIDQyMTY3LCA0MjE4MiwgNDIxOTcsIDQyMjEyLCA0MjIyNywgNDIyNDIsIDQyMjU3LCA0MjI3MiwgNDIyODcsIDQyMzAyLCAKKyAgICA0MjMxNywgNDIzMzIsIDQyMzQ3LCA0MjM2MiwgNDIzNzcsIDQyMzkyLCA0MjQwNywgNDI0MjIsIDQyNDM3LCA0MjQ1MiwgCisgICAgNDI0NjcsIDQyNDgyLCA0MjQ5NywgNDI1MTIsIDQyNTI3LCA0MjU0MiwgNDI1NTcsIDQyNTcyLCA0MjU4NywgNDI2MDIsIAorICAgIDQyNjE3LCA0MjYzMiwgNDI2NDcsIDQyNjYyLCA0MjY3NywgNDI2OTIsIDQyNzA3LCA0MjcyMiwgNDI3MzcsIDQyNzUyLCAKKyAgICA0Mjc2NywgNDI3ODIsIDQyNzk3LCA0MjgxMiwgNDI4MjcsIDQyODQyLCA0Mjg1NywgNDI4NzIsIDQyODg3LCA0MjkwMiwgCisgICAgNDI5MTcsIDQyOTMyLCA0Mjk0NywgNDI5NjIsIDQyOTc3LCA0Mjk5MiwgNDMwMDcsIDQzMDIyLCA0MzAzNywgNDMwNTIsIAorICAgIDQzMDY3LCA0MzA4MiwgNDMwOTcsIDQzMTEyLCA0MzEyNywgNDMxNDIsIDQzMTU3LCA0MzE3MiwgNDMxODcsIDQzMjAyLCAKKyAgICA0MzIxNywgNDMyMzIsIDQzMjQ3LCA0MzI2MiwgNDMyNzcsIDQzMjkyLCA0MzMwNywgNDMzMjIsIDQzMzM3LCA0MzM1MiwgCisgICAgNDMzNjcsIDQzMzgyLCA0MzM5NywgNDM0MTIsIDQzNDI3LCA0MzQ0MiwgNDM0NTcsIDQzNDcyLCA0MzQ4NywgNDM1MDIsIAorICAgIDQzNTE3LCA0MzUzMiwgNDM1NDcsIDQzNTYyLCA0MzU3NywgNDM1OTIsIDQzNjA3LCA0MzYyMiwgNDM2MzcsIDQzNjUyLCAKKyAgICA0MzY2NywgNDM2ODIsIDQzNjk3LCA0MzcxMiwgNDM3MjcsIDQzNzQyLCA0Mzc1NywgNDM3NzIsIDQzNzg3LCA0MzgwMiwgCisgICAgNDM4MTcsIDQzODMyLCA0Mzg0NywgNDM4NjIsIDQzODc3LCA0Mzg5MiwgNDM5MDcsIDQzOTIyLCA0MzkzNywgNDM5NTIsIAorICAgIDQzOTY3LCA0Mzk4MiwgNDM5OTcsIDQ0MDEyLCA0NDAyNywgNDQwNDIsIDQ0MDU3LCA0NDA3MiwgNDQwODcsIDQ0MTAyLCAKKyAgICA0NDExNywgNDQxMzIsIDQ0MTQ3LCA0NDE2MiwgNDQxNzcsIDQ0MTkyLCA0NDIwNywgNDQyMjIsIDQ0MjM3LCA0NDI1MiwgCisgICAgNDQyNjcsIDQ0MjgyLCA0NDI5NywgNDQzMTIsIDQ0MzI3LCA0NDM0MiwgNDQzNTcsIDQ0MzcyLCA0NDM4NywgNDQ0MDIsIAorICAgIDQ0NDE3LCA0NDQzMiwgNDQ0NDcsIDQ0NDYyLCA0NDQ3NywgNDQ0OTIsIDQ0NTA3LCA0NDUyMiwgNDQ1MzcsIDQ0NTUyLCAKKyAgICA0NDU2NywgNDQ1ODIsIDQ0NTk3LCA0NDYxMiwgNDQ2MjcsIDQ0NjQyLCA0NDY1NywgNDQ2NzIsIDQ0Njg3LCA0NDcwMiwgCisgICAgNDQ3MTcsIDQ0NzMyLCA0NDc0NywgNDQ3NjIsIDQ0Nzc3LCA0NDc5MiwgNDQ4MDcsIDQ0ODIyLCA0NDgzNywgNDQ4NTIsIAorICAgIDQ0ODY3LCA0NDg4MiwgNDQ4OTcsIDQ0OTEyLCA0NDkyNywgNDQ5NDIsIDQ0OTU3LCA0NDk3MiwgNDQ5ODcsIDQ1MDAyLCAKKyAgICA0NTAxNywgNDUwMzIsIDQ1MDQ3LCA0NTA2MiwgNDUwNzcsIDQ1MDkyLCA0NTEwNywgNDUxMjIsIDQ1MTM3LCA0NTE1MiwgCisgICAgNDUxNjcsIDQ1MTgyLCA0NTE5NywgNDUyMTIsIDQ1MjI3LCA0NTI0MiwgNDUyNTcsIDQ1MjcyLCA0NTI4NywgNDUzMDIsIAorICAgIDQ1MzE3LCA0NTMzMiwgNDUzNDcsIDQ1MzYyLCA0NTM3NywgNDUzOTIsIDQ1NDA3LCA0NTQyMiwgNDU0MzcsIDQ1NDUyLCAKKyAgICA0NTQ2NywgNDU0ODIsIDQ1NDk3LCA0NTUxMiwgNDU1MjcsIDQ1NTQyLCA0NTU1NywgNDU1NzIsIDQ1NTg3LCA0NTYwMiwgCisgICAgNDU2MTcsIDQ1NjMyLCA0NTY0NywgNDU2NjIsIDQ1Njc3LCA0NTY5MiwgNDU3MDcsIDQ1NzIyLCA0NTczNywgNDU3NTIsIAorICAgIDQ1NzY3LCA0NTc4MiwgNDU3OTcsIDQ1ODEyLCA0NTgyNywgNDU4NDIsIDQ1ODU3LCA0NTg3MiwgNDU4ODcsIDQ1OTAyLCAKKyAgICA0NTkxNywgNDU5MzIsIDQ1OTQ3LCA0NTk2MiwgNDU5NzcsIDQ1OTkyLCA0NjAwNywgNDYwMjIsIDQ2MDM3LCA0NjA1MiwgCisgICAgNDYwNjcsIDQ2MDgyLCA0NjA5NywgNDYxMTIsIDQ2MTI3LCA0NjE0MiwgNDYxNTcsIDQ2MTcyLCA0NjE4NywgNDYyMDIsIAorICAgIDQ2MjE3LCA0NjIzMiwgNDYyNDcsIDQ2MjYyLCA0NjI3NywgNDYyOTIsIDQ2MzA3LCA0NjMyMiwgNDYzMzcsIDQ2MzUyLCAKKyAgICA0NjM2NywgNDYzODIsIDQ2Mzk3LCA0NjQxMiwgNDY0MjcsIDQ2NDQyLCA0NjQ1NywgNDY0NzIsIDQ2NDg3LCA0NjUwMiwgCisgICAgNDY1MTcsIDQ2NTMyLCA0NjU0NywgNDY1NjIsIDQ2NTc3LCA0NjU5MiwgNDY2MDcsIDQ2NjIyLCA0NjYzNywgNDY2NTIsIAorICAgIDQ2NjY3LCA0NjY4MiwgNDY2OTcsIDQ2NzEyLCA0NjcyNywgNDY3NDIsIDQ2NzU3LCA0Njc3MiwgNDY3ODcsIDQ2ODAyLCAKKyAgICA0NjgxNywgNDY4MzIsIDQ2ODQ3LCA0Njg2MiwgNDY4NzcsIDQ2ODkyLCA0NjkwNywgNDY5MjIsIDQ2OTM3LCA0Njk1MiwgCisgICAgNDY5NjcsIDQ2OTgyLCA0Njk5NywgNDcwMTIsIDQ3MDI3LCA0NzA0MiwgNDcwNTcsIDQ3MDcyLCA0NzA4NywgNDcxMDIsIAorICAgIDQ3MTE3LCA0NzEzMiwgNDcxNDcsIDQ3MTYyLCA0NzE3NywgNDcxOTIsIDQ3MjA3LCA0NzIyMiwgNDcyMzcsIDQ3MjUyLCAKKyAgICA0NzI2NywgNDcyODIsIDQ3Mjk3LCA0NzMxMiwgNDczMjcsIDQ3MzQyLCA0NzM1NywgNDczNzIsIDQ3Mzg3LCA0NzQwMiwgCisgICAgNDc0MTcsIDQ3NDMyLCA0NzQ0NywgNDc0NjIsIDQ3NDc3LCA0NzQ5MiwgNDc1MDcsIDQ3NTIyLCA0NzUzNywgNDc1NTIsIAorICAgIDQ3NTY3LCA0NzU4MiwgNDc1OTcsIDQ3NjEyLCA0NzYyNywgNDc2NDIsIDQ3NjU3LCA0NzY3MiwgNDc2ODcsIDQ3NzAyLCAKKyAgICA0NzcxNywgNDc3MzIsIDQ3NzQ3LCA0Nzc2MiwgNDc3NzcsIDQ3NzkyLCA0NzgwNywgNDc4MjIsIDQ3ODM3LCA0Nzg1MiwgCisgICAgNDc4NjcsIDQ3ODgyLCA0Nzg5NywgNDc5MTIsIDQ3OTI3LCA0Nzk0MiwgNDc5NTcsIDQ3OTcyLCA0Nzk4NywgNDgwMDIsIAorICAgIDQ4MDE3LCA0ODAzMiwgNDgwNDcsIDQ4MDYyLCA0ODA3NywgNDgwOTIsIDQ4MTA3LCA0ODEyMiwgNDgxMzcsIDQ4MTUyLCAKKyAgICA0ODE2NywgNDgxODIsIDQ4MTk3LCA0ODIxMiwgNDgyMjcsIDQ4MjQyLCA0ODI1NywgNDgyNzIsIDQ4Mjg3LCA0ODMwMiwgCisgICAgNDgzMTcsIDQ4MzMyLCA0ODM0NywgNDgzNjIsIDQ4Mzc3LCA0ODM5MiwgNDg0MDcsIDQ4NDIyLCA0ODQzNywgNDg0NTIsIAorICAgIDQ4NDY3LCA0ODQ4MiwgNDg0OTcsIDQ4NTEyLCA0ODUyNywgNDg1NDIsIDQ4NTU3LCA0ODU3MiwgNDg1ODcsIDQ4NjAyLCAKKyAgICA0ODYxNywgNDg2MzIsIDQ4NjQ3LCA0ODY2MiwgNDg2NzcsIDQ4NjkyLCA0ODcwNywgNDg3MjIsIDQ4NzM3LCA0ODc1MiwgCisgICAgNDg3NjcsIDQ4NzgyLCA0ODc5NywgNDg4MTIsIDQ4ODI3LCA0ODg0MiwgNDg4NTcsIDQ4ODcyLCA0ODg4NywgNDg5MDIsIAorICAgIDQ4OTE3LCA0ODkzMiwgNDg5NDcsIDQ4OTYyLCA0ODk3NywgNDg5OTIsIDQ5MDA3LCA0OTAyMiwgNDkwMzcsIDQ5MDUyLCAKKyAgICA0OTA2NywgNDkwODIsIDQ5MDk3LCA0OTExMiwgNDkxMjcsIDQ5MTQyLCA0OTE1NywgNDkxNzIsIDQ5MTg3LCA0OTIwMiwgCisgICAgNDkyMTcsIDQ5MjMyLCA0OTI0NywgNDkyNjIsIDQ5Mjc3LCA0OTI5MiwgNDkzMDcsIDQ5MzIyLCA0OTMzNywgNDkzNTIsIAorICAgIDQ5MzY3LCA0OTM4MiwgNDkzOTcsIDQ5NDEyLCA0OTQyNywgNDk0NDIsIDQ5NDU3LCA0OTQ3MiwgNDk0ODcsIDQ5NTAyLCAKKyAgICA0OTUxOCwgNDk1MzQsIDQ5NTUwLCA0OTU2NiwgNDk1ODIsIDQ5NTk4LCA0OTYxNCwgNDk2MzAsIDQ5NjQ2LCA0OTY2MiwgCisgICAgNDk2NzgsIDQ5Njk0LCA0OTcxMCwgNDk3MjYsIDQ5NzQyLCA0OTc1OCwgNDk3NzQsIDQ5NzkwLCA0OTgwNiwgNDk4MjIsIAorICAgIDQ5ODM4LCA0OTg1NCwgNDk4NzAsIDQ5ODg2LCA0OTkwMiwgNDk5MTgsIDQ5OTM0LCA0OTk1MCwgNDk5NjYsIDQ5OTgyLCAKKyAgICA0OTk5OCwgNTAwMTQsIDUwMDMwLCA1MDA0NiwgNTAwNjIsIDUwMDc4LCA1MDA5NCwgNTAxMTAsIDUwMTI2LCA1MDE0MiwgCisgICAgNTAxNTgsIDUwMTc0LCA1MDE5MCwgNTAyMDYsIDUwMjIyLCA1MDIzOCwgNTAyNTQsIDUwMjcwLCA1MDI4NiwgNTAzMDIsIAorICAgIDUwMzE4LCA1MDMzNCwgNTAzNTAsIDUwMzY2LCA1MDM4MiwgNTAzOTgsIDUwNDE0LCA1MDQzMCwgNTA0NDYsIDUwNDYyLCAKKyAgICA1MDQ3OCwgNTA0OTQsIDUwNTEwLCA1MDUyNiwgNTA1NDIsIDUwNTU4LCA1MDU3NCwgNTA1OTAsIDUwNjA2LCA1MDYyMiwgCisgICAgNTA2MzgsIDUwNjU0LCA1MDY3MCwgNTA2ODYsIDUwNzAyLCA1MDcxOCwgNTA3MzQsIDUwNzUwLCA1MDc2NiwgNTA3ODIsIAorICAgIDUwNzk4LCA1MDgxNCwgNTA4MzAsIDUwODQ2LCA1MDg2MiwgNTA4NzgsIDUwODk0LCA1MDkxMCwgNTA5MjYsIDUwOTQyLCAKKyAgICA1MDk1OCwgNTA5NzQsIDUwOTkwLCA1MTAwNiwgNTEwMjIsIDUxMDM4LCA1MTA1NCwgNTEwNzAsIDUxMDg2LCA1MTEwMiwgCisgICAgNTExMTgsIDUxMTM0LCA1MTE1MCwgNTExNjYsIDUxMTgyLCA1MTE5OCwgNTEyMTQsIDUxMjMwLCA1MTI0NiwgNTEyNjIsIAorICAgIDUxMjc4LCA1MTI5NCwgNTEzMTAsIDUxMzI2LCA1MTM0MiwgNTEzNTgsIDUxMzc0LCA1MTM5MCwgNTE0MDYsIDUxNDIyLCAKKyAgICA1MTQzOCwgNTE0NTQsIDUxNDcwLCA1MTQ4NiwgNTE1MDIsIDUxNTE4LCA1MTUzNCwgNTE1NTAsIDUxNTY2LCA1MTU4MiwgCisgICAgNTE1OTgsIDUxNjE0LCA1MTYzMCwgNTE2NDYsIDUxNjYyLCA1MTY3OCwgNTE2OTQsIDUxNzEwLCA1MTcyNiwgNTE3NDIsIAorICAgIDUxNzU4LCA1MTc3NCwgNTE3OTAsIDUxODA2LCA1MTgyMiwgNTE4MzgsIDUxODU0LCA1MTg3MCwgNTE4ODYsIDUxOTAyLCAKKyAgICA1MTkxOCwgNTE5MzQsIDUxOTUwLCA1MTk2NiwgNTE5ODIsIDUxOTk4LCA1MjAxNCwgNTIwMzAsIDUyMDQ2LCA1MjA2MiwgCisgICAgNTIwNzgsIDUyMDk0LCA1MjExMCwgNTIxMjYsIDUyMTQyLCA1MjE1OCwgNTIxNzQsIDUyMTkwLCA1MjIwNiwgNTIyMjIsIAorICAgIDUyMjM4LCA1MjI1NCwgNTIyNzAsIDUyMjg2LCA1MjMwMiwgNTIzMTgsIDUyMzM0LCA1MjM1MCwgNTIzNjYsIDUyMzgyLCAKKyAgICA1MjM5OCwgNTI0MTQsIDUyNDMwLCA1MjQ0NiwgNTI0NjIsIDUyNDc4LCA1MjQ5NCwgNTI1MTAsIDUyNTI2LCA1MjU0MiwgCisgICAgNTI1NTgsIDUyNTc0LCA1MjU5MCwgNTI2MDYsIDUyNjIyLCA1MjYzOCwgNTI2NTQsIDUyNjcwLCA1MjY4NiwgNTI3MDIsIAorICAgIDUyNzE4LCA1MjczNCwgNTI3NTAsIDUyNzY2LCA1Mjc4MiwgNTI3OTgsIDUyODE0LCA1MjgzMCwgNTI4NDYsIDUyODYyLCAKKyAgICA1Mjg3OCwgNTI4OTQsIDUyOTEwLCA1MjkyNiwgNTI5NDIsIDUyOTU4LCA1Mjk3NCwgNTI5OTAsIDUzMDA2LCA1MzAyMiwgCisgICAgNTMwMzgsIDUzMDU0LCA1MzA3MCwgNTMwODYsIDUzMTAyLCA1MzExOCwgNTMxMzQsIDUzMTUwLCA1MzE2NiwgNTMxODIsIAorICAgIDUzMTk4LCA1MzIxNCwgNTMyMzAsIDUzMjQ2LCA1MzI2MiwgNTMyNzgsIDUzMjk0LCA1MzMxMCwgNTMzMjYsIDUzMzQyLCAKKyAgICA1MzM1OCwgNTMzNzQsIDUzMzkwLCA1MzQwNiwgNTM0MjIsIDUzNDM4LCA1MzQ1NCwgNTM0NzAsIDUzNDg2LCA1MzUwMiwgCisgICAgNTM1MTgsIDUzNTM0LCA1MzU1MCwgNTM1NjYsIDUzNTgyLCA1MzU5OCwgNTM2MTQsIDUzNjMwLCA1MzY0NiwgNTM2NjIsIAorICAgIDUzNjc4LCA1MzY5NCwgNTM3MTAsIDUzNzI2LCA1Mzc0MiwgNTM3NTgsIDUzNzc0LCA1Mzc5MCwgNTM4MDYsIDUzODIyLCAKKyAgICA1MzgzOCwgNTM4NTQsIDUzODcwLCA1Mzg4NiwgNTM5MDIsIDUzOTE4LCA1MzkzNCwgNTM5NTAsIDUzOTY2LCA1Mzk4MiwgCisgICAgNTM5OTgsIDU0MDE0LCA1NDAzMCwgNTQwNDYsIDU0MDYyLCA1NDA3OCwgNTQwOTQsIDU0MTEwLCA1NDEyNiwgNTQxNDIsIAorICAgIDU0MTU4LCA1NDE3NCwgNTQxOTAsIDU0MjA2LCA1NDIyMiwgNTQyMzgsIDU0MjU0LCA1NDI3MCwgNTQyODYsIDU0MzAyLCAKKyAgICA1NDMxOCwgNTQzMzQsIDU0MzUwLCA1NDM2NiwgNTQzODIsIDU0Mzk4LCA1NDQxNCwgNTQ0MzAsIDU0NDQ2LCA1NDQ2MiwgCisgICAgNTQ0NzgsIDU0NDk0LCA1NDUxMCwgNTQ1MjYsIDU0NTQyLCA1NDU1OCwgNTQ1NzQsIDU0NTkwLCA1NDYwNiwgNTQ2MjIsIAorICAgIDU0NjM4LCA1NDY1NCwgNTQ2NzAsIDU0Njg2LCA1NDcwMiwgNTQ3MTgsIDU0NzM0LCA1NDc1MCwgNTQ3NjYsIDU0NzgyLCAKKyAgICA1NDc5OCwgNTQ4MTQsIDU0ODMwLCA1NDg0NiwgNTQ4NjIsIDU0ODc4LCA1NDg5NCwgNTQ5MTAsIDU0OTI2LCA1NDk0MiwgCisgICAgNTQ5NTgsIDU0OTc0LCA1NDk5MCwgNTUwMDYsIDU1MDIyLCA1NTAzOCwgNTUwNTQsIDU1MDcwLCA1NTA4NiwgNTUxMDIsIAorICAgIDU1MTE4LCA1NTEzNCwgNTUxNTAsIDU1MTY2LCA1NTE4MiwgNTUxOTgsIDU1MjE0LCA1NTIzMCwgNTUyNDYsIDU1MjYyLCAKKyAgICA1NTI3OCwgNTUyOTQsIDU1MzEwLCA1NTMyNiwgNTUzNDIsIDU1MzU4LCA1NTM3NCwgNTUzOTAsIDU1NDA2LCA1NTQyMiwgCisgICAgNTU0MzgsIDU1NDU0LCA1NTQ3MCwgNTU0ODYsIDU1NTAyLCA1NTUxOCwgNTU1MzQsIDU1NTUwLCA1NTU2NiwgNTU1ODIsIAorICAgIDU1NTk4LCA1NTYxNCwgNTU2MzAsIDU1NjQ2LCA1NTY2MiwgNTU2NzgsIDU1Njk0LCA1NTcxMCwgNTU3MjYsIDU1NzQyLCAKKyAgICA1NTc1OCwgNTU3NzQsIDU1NzkwLCA1NTgwNiwgNTU4MjIsIDU1ODM4LCA1NTg1NCwgNTU4NzAsIDU1ODg2LCA1NTkwMiwgCisgICAgNTU5MTgsIDU1OTM0LCA1NTk1MCwgNTU5NjYsIDU1OTgyLCA1NTk5OCwgNTYwMTQsIDU2MDMwLCA1NjA0NiwgNTYwNjIsIAorICAgIDU2MDc4LCA1NjA5NCwgNTYxMTAsIDU2MTI2LCA1NjE0MiwgNTYxNTgsIDU2MTc0LCA1NjE5MCwgNTYyMDYsIDU2MjIyLCAKKyAgICA1NjIzOCwgNTYyNTQsIDU2MjcwLCA1NjI4NiwgNTYzMDIsIDU2MzE4LCA1NjMzNCwgNTYzNTAsIDU2MzY2LCA1NjM4MiwgCisgICAgNTYzOTgsIDU2NDE0LCA1NjQzMCwgNTY0NDYsIDU2NDYyLCA1NjQ3OCwgNTY0OTQsIDU2NTEwLCA1NjUyNiwgNTY1NDIsIAorICAgIDU2NTU4LCA1NjU3NCwgNTY1OTAsIDU2NjA2LCA1NjYyMiwgNTY2MzgsIDU2NjU0LCA1NjY3MCwgNTY2ODYsIDU2NzAyLCAKKyAgICA1NjcxOCwgNTY3MzQsIDU2NzUwLCA1Njc2NiwgNTY3ODIsIDU2Nzk4LCA1NjgxNCwgNTY4MzAsIDU2ODQ2LCA1Njg2MiwgCisgICAgNTY4NzgsIDU2ODk0LCA1NjkxMCwgNTY5MjYsIDU2OTQyLCA1Njk1OCwgNTY5NzQsIDU2OTkwLCA1NzAwNiwgNTcwMjIsIAorICAgIDU3MDM4LCA1NzA1NCwgNTcwNzAsIDU3MDg2LCA1NzEwMiwgNTcxMTgsIDU3MTM0LCA1NzE1MCwgNTcxNjYsIDU3MTgyLCAKKyAgICA1NzE5OCwgNTcyMTQsIDU3MjMwLCA1NzI0NiwgNTcyNjIsIDU3Mjc4LCA1NzI5NCwgNTczMTAsIDU3MzI2LCA1NzM0MiwgCisgICAgNTczNTgsIDU3Mzc0LCA1NzM5MCwgNTc0MDYsIDU3NDIyLCA1NzQzOCwgNTc0NTQsIDU3NDcwLCA1NzQ4NiwgNTc1MDIsIAorICAgIDU3NTE4LCA1NzUzNCwgNTc1NTAsIDU3NTY2LCA1NzU4MiwgNTc1OTgsIDU3NjE0LCA1NzYzMCwgNTc2NDYsIDU3NjYyLCAKKyAgICA1NzY3OCwgNTc2OTQsIDU3NzEwLCA1NzcyNiwgNTc3NDIsIDU3NzU4LCA1Nzc3NCwgNTc3OTAsIDU3ODA2LCA1NzgyMiwgCisgICAgNTc4MzgsIDU3ODU0LCA1Nzg3MCwgNTc4ODYsIDU3OTAyLCA1NzkxOCwgNTc5MzQsIDU3OTUwLCA1Nzk2NiwgNTc5ODIsIAorICAgIDU3OTk4LCA1ODAxNCwgNTgwMzAsIDU4MDQ2LCA1ODA2MiwgNTgwNzgsIDU4MDk0LCA1ODExMCwgNTgxMjYsIDU4MTQyLCAKKyAgICA1ODE1OCwgNTgxNzQsIDU4MTg5LCAxNjc1NiwgNTgxOTgsIDU4MjA0LCA1ODIxMCwgNTgyMjAsIDU4MjI4LCAxNDg4OCwgCisgICAgMTU0MzksIDk5NjAsIDU4MjQxLCAxNTIwLCA1ODI0OSwgMzc2MSwgMjc0MjIsIDcxODMsIDU4MjU1LCA1ODI2MCwgNTgyNjUsIAorICAgIDU4MjcwLCA1ODI3NSwgNTgyODEsIDU4Mjg2LCA1ODI5MiwgNTgyOTcsIDU4MzAzLCA1ODMwOCwgNTgzMTMsIDU4MzE4LCAKKyAgICA1ODMyMywgNTgzMjksIDU4MzM0LCA1ODMzOSwgNTgzNDQsIDU4MzQ5LCA1ODM1NCwgNTgzNTksIDU4MzY0LCA1ODM3MCwgCisgICAgNTgzNzUsIDU4MzgxLCA1ODM4OCwgMjU2MSwgNTgzOTMsIDU4Mzk5LCA4NTI2LCA1ODQwMywgNTg0MDgsIDU4NDE1LCAKKyAgICA1ODQyMywgNDAsIDU4NDI3LCA1ODQzMywgNTg0MzgsIDU4NDQzLCA1ODQ0NywgNTg0NTIsIDU4NDU2LCA1ODQ2MCwgMTA2ODQsIAorICAgIDU4NDY0LCA1ODQ3NCwgNTg0ODcsIDU4NDk4LCA1ODUxMSwgNTg1MTgsIDU4NTI0LCA1ODUyOSwgNTg1MzUsIDU4NTQxLCAKKyAgICA1ODU0NywgNTg1NTIsIDU4NTU3LCA1ODU2MiwgNTg1NjcsIDU4NTcxLCA1ODU3NiwgNTg1ODEsIDU4NTg2LCA1ODU5MiwgCisgICAgNTg1OTgsIDU4NjA0LCA1ODYwOSwgNTg2MTMsIDU4NjE4LCA1ODYyMywgNTg2MjcsIDU4NjMyLCA1ODYzNywgNTg2NDIsIAorICAgIDU4NjQ2LCAxMDcwMCwgMTA3MTEsIDEwNzE2LCAxNTYzLCA1ODY1MCwgMTU2OCwgNTg2NTYsIDE2MjMzLCA1ODY1OSwgCisgICAgNTg2NjUsIDE1OTksIDU4NjcxLCAxNjA1LCAxNjExLCAxMDc0NiwgNTg2NzYsIDU4Njg0LCA1ODY5MSwgNTg2OTUsIDU4NzAxLCAKKyAgICA1ODcwNiwgMzA5NTksIDU4NzExLCA1ODcxOCwgNTg3MjMsIDU4NzI3LCA1ODczMSwgMTYxNiwgMTYzMjUsIDU4NzQwLCAKKyAgICA1ODc0NCwgMTYzMzYsIDExMjAsIDU4NzQ4LCA1ODc1NSwgNTg3NjAsIDU4NzY0LCAxNjM2MSwgMTYyMCwgMzczMjgsIAorICAgIDU4NzY3LCA1ODc3MiwgNTg3ODIsIDU4NzkxLCA1ODc5NiwgNTg4MDAsIDU4ODA2LCAxNjI1LCAzOTIzNywgNTg4MTEsIAorICAgIDU4ODIwLCA1ODgyNiwgNTg4MzEsIDEwOTA0LCAxMDkxMCwgNTg4MzcsIDU4ODQ5LCA1ODg2NiwgNTg4ODMsIDU4OTAwLCAKKyAgICA1ODkxNywgNTg5MzQsIDU4OTUxLCA1ODk2OCwgNTg5ODUsIDU5MDAyLCA1OTAxOSwgNTkwMzYsIDU5MDUzLCA1OTA3MCwgCisgICAgNTkwODcsIDU5MTA0LCA1OTEyMSwgNTkxMzgsIDU5MTU1LCA1OTE3MiwgNTkxODksIDU5MjA2LCA1OTIyMywgNTkyNDAsIAorICAgIDU5MjU3LCA1OTI3NCwgNTkyOTEsIDU5MzA4LCA1OTMyNSwgNTkzNDIsIDU5MzU5LCA1OTM3NiwgNTkzOTMsIDU5NDEwLCAKKyAgICA1OTQyNywgNTk0NDQsIDU5NDYxLCA1OTQ3OCwgNTk0OTUsIDU5NTEyLCA1OTUyOSwgNTk1NDYsIDU5NTYzLCA1OTU4MCwgCisgICAgNTk1OTcsIDU5NjE0LCA1OTYzMSwgNTk2NDgsIDU5NjY1LCA1OTY4MiwgNTk2OTMsIDU5Njk4LCAxNjMwLCA1OTcwMiwgCisgICAgNTk3MDgsIDU5NzEzLCA1OTcxOCwgOTMyNiwgMTYzNSwgNTk3MjQsIDU5NzMzLCAyNzcxNywgNTk3MzgsIDU5NzQ5LCAKKyAgICA1OTc1OSwgNTk3NjQsIDU5NzcxLCA1OTc3NywgNTk3ODIsIDU5Nzg3LCAxNjYxMywgNTk3OTEsIDEwOTIxLCAxNjQwLCAKKyAgICAxMDkyNiwgNTk3OTcsIDU5ODAyLCA1OTgwOCwgNTk4MTMsIDU5ODE4LCA1OTgyMywgNTk4MjgsIDU5ODMzLCA1OTgzOCwgCisgICAgNTk4NDMsIDU5ODQ5LCA1OTg1NSwgNTk4NjEsIDU5ODY2LCA1OTg3MCwgNTk4NzUsIDU5ODgwLCA1OTg4NCwgNTk4ODksIAorICAgIDU5ODk0LCA1OTg5OSwgNTk5MDMsIDU5OTA4LCA1OTkxNCwgNTk5MTksIDU5OTI0LCA1OTkyOCwgNTk5MzMsIDU5OTM4LCAKKyAgICA1OTk0NCwgNTk5NDksIDU5OTU0LCA1OTk2MCwgNTk5NjYsIDU5OTcxLCA1OTk3NSwgNTk5ODAsIDU5OTg1LCA1OTk5MCwgCisgICAgNTk5OTQsIDU5OTk5LCA2MDAwNCwgNjAwMDksIDYwMDE1LCA2MDAyMSwgNjAwMjYsIDYwMDMwLCA2MDAzNCwgNjAwMzksIAorICAgIDYwMDQ0LCA2MDA0OSwgMjkxMTUsIDYwMDUzLCA2MDA1OCwgNjAwNjMsIDYwMDY5LCA2MDA3NCwgNjAwNzksIDYwMDgzLCAKKyAgICA2MDA4OCwgNjAwOTMsIDYwMDk5LCA2MDEwNCwgNjAxMDksIDYwMTE1LCA2MDEyMSwgNjAxMjYsIDYwMTMwLCA2MDEzNSwgCisgICAgNjAxNDAsIDYwMTQ0LCA2MDE0OSwgNjAxNTQsIDYwMTU5LCA2MDE2NSwgNjAxNzEsIDYwMTc2LCA2MDE4MCwgNjAxODUsIAorICAgIDYwMTkwLCA2MDE5NCwgNjAxOTksIDYwMjA0LCA2MDIwOSwgNjAyMTMsIDYwMjE2LCAzMTYyMSwgNjAyMjEsIDYwMjI5LCAKKyAgICAxNjY3OSwgMzY2MywgMTEwMTcsIDYwMjM1LCA2MDI0NSwgNjAyNjAsIDExMDIyLCA2MDI3MSwgNjAyNzYsIDYwMjg3LCAKKyAgICA2MDI5OSwgNjAzMTEsIDYwMzIzLCAyNjk1LCA2MDMzNSwgNjAzNDAsIDYwMzUyLCA2MDM1NiwgNjAzNjIsIDYwMzY4LCAKKyAgICA2MDM3MywgMTY1MiwgMTA3MywgNjAzODIsIDYwMzg3LCAzOTI4NywgNjAzOTEsIDYwMzk1LCA2MDQwMCwgNjA0MDQsIAorICAgIDE2NzY0LCA2MDQwOSwgNjA0MTIsIDYwNDIwLCA2MDQyOCwgMTY1NiwgMTEwNDcsIDExMDUzLCAxNjYxLCA2MDQzNiwgCisgICAgNjA0NDMsIDYwNDQ4LCA2MDQ1NywgNjA0NjcsIDYwNDc0LCA2MDQ3OSwgNjA0ODQsIDE2NjYsIDYwNDkxLCA2MDQ5NiwgCisgICAgMTY4NzksIDYwNTAwLCA2MDUwNSwgNjA1MTIsIDYwNTE4LCA2MDUyMiwgNjA1MzMsIDYwNTQzLCAxNjkwMSwgOTIzNCwgCisgICAgOTI0MSwgMTY3MSwgNjA1NTAsIDYwNTU2LCA2MDU2NCwgNjA1NzEsIDYwNTc3LCA2MDU4NCwgNjA1OTYsIDYwNjAyLCAKKyAgICA2MDYwNywgNjA2MTksIDYwNjMwLCA2MDYzOSwgNjA2NDksIDM3NDAsIDMwNzk1LCAzMDgwNCwgMTY5NDEsIDE2NzYsIDE2ODAsIAorICAgIDYwNjU3LCA2MDY2OCwgNjA2NzMsIDE2ODMsIDYwNjgxLCA2MDY4NiwgMTY5OTIsIDYwNjk4LCA2MDcwNCwgNjA3MDksIAorICAgIDYwNzE3LCAxNjg4LCA2MDcyMiwgNjA3MjcsIDYwNzM1LCA2MDc0MywgNjA3NTAsIDYwNzU5LCA2MDc2NywgNjA3NzYsIAorICAgIDE2OTMsIDYwNzgwLCAxNjk4LCA2MDc4NSwgNjA3OTIsIDE3MDY2LCA2MDgwMCwgNjA4MDYsIDYwODExLCA2MDgxOSwgCisgICAgNjA4MjYsIDYwODM0LCAyMjU2NCwgNjA4MzksIDExMTgyLCA2MDg0OCwgNjA4NTQsIDYwODYxLCA2MDg2OCwgNjA4NzQsIAorICAgIDYwODg0LCA2MDg5MCwgNjA4OTUsIDYwOTA2LCA2MDkxMSwgNjA5MTksIDExMTkxLCAxMTE5NiwgNjA5MjcsIDYwOTMzLCAKKyAgICA2MDk0MSwgMzgwNSwgMTcxMDgsIDM5Mzc1LCA2MDk0NiwgNjA5NTIsIDYwOTU3LCA2MDk2NSwgNjA5NzIsIDEyMDM2LCAKKyAgICA2MDk3NywgNjA5ODMsIDE3MDksIDYwOTg4LCA2MDk5MSwgMTEyNywgNjA5OTcsIDYxMDAyLCA2MTAwNywgNjEwMTMsIAorICAgIDYxMDE4LCA2MTAyMywgNjEwMjgsIDYxMDMzLCA2MTAzOCwgNjEwNDMsIDE3MTgsIDksIDYxMDQ5LCA2MTA1MywgNjEwNTgsIAorICAgIDYxMDYyLCA2MTA2NiwgNjEwNzAsIDMxODYxLCA2MTA3NSwgNjEwODAsIDYxMDg1LCA2MTA4OSwgNjEwOTIsIDYxMDk2LCAKKyAgICA2MTEwMCwgNjExMDUsIDYxMTA5LCA2MTExNCwgNjExMTgsIDM0NTk4LCAzNDYwMywgMzQ2MDgsIDYxMTIxLCA2MTEyOCwgCisgICAgNjExMzQsIDM5MDk2LCA2MTE0NCwgMzQ2MTQsIDMyMTE5LCAzMTg3NiwgMzE4ODIsIDM0NjMwLCAzMTg4OCwgNjExNDksIAorICAgIDYxMTU0LCAzMjE1MiwgNjExNTgsIDYxMTYxLCA2MTE2NSwgNjExNzIsIDYxMTc1LCA2MTE4MCwgNjExODQsIDYxMTg4LCAKKyAgICA2MTE5MSwgNjEyMDEsIDYxMjEzLCA2MTIyMCwgNjEyMjYsIDYxMjMzLCAzMzU1NSwgNjEyMzYsIDg1NDMsIDg3NywgNjEyMzksIAorICAgIDYxMjQzLCA2MTI0OCwgMzY5MCwgNjEyNTIsIDYxMjU1LCAxMzYzMiwgNjEyNjIsIDYxMjY5LCA2MTI4MiwgNjEyOTAsIAorICAgIDYxMjk5LCA2MTMwOCwgNjEzMTMsIDYxMzIzLCA2MTMzNiwgNjEzNDgsIDYxMzU1LCA2MTM2MCwgNjEzNjksIDYxMzgyLCAKKyAgICAzNjA0MiwgNjE0MDAsIDYxNDA1LCA2MTQxMiwgNjE0MTgsIDY1MiwgNjE0MjMsIDYxNDMxLCA2MTQzOCwgMjcyNjEsIDYyNywgCisgICAgNjE0NDQsIDYxNDUwLCA2MTQ2MCwgNjE0NjYsIDYxNDcxLCAzMTkwNiwgNjAwMywgMzE5MjAsIDYxNDc1LCA2MTQ4NSwgCisgICAgNjE0OTAsIDYxNTAwLCA2MTUxNSwgNjE1MjEsIDYxNTI3LCAzMTkzMCwgNjE1MzIsIDMxMDc2LCA2MTUzNiwgNjE1NDEsIAorICAgIDYxNTQ2LCA2MTU1MCwgNjE1NTUsIDE2OTQ0LCA2MTU2MiwgNjE1NjcsIDYxNTcxLCA2MDQ0LCAzMTk1NiwgNjE1NzUsIAorICAgIDYxNTgxLCAzMTIsIDYxNTkxLCA2MTU5OCwgNjE2MDUsIDYxNjEwLCA2MTYxOSwgNTg3NzYsIDYxNjI1LCA2MTYzMywgCisgICAgNjE2MzcsIDYxNjQxLCA2MTY0NSwgNjE2NDksIDYxNjU0LCA2MTY1OCwgNjE2NjQsIDYxNjcyLCA2MTY3NywgNjE2ODIsIAorICAgIDYxNjg2LCA2MTY5MSwgNjE2OTUsIDYxNjk5LCA2MTcwNSwgNjE3MTEsIDYxNzE2LCA2MTcyMCwgMzIwODAsIDYxNzI1LCAKKyAgICAzMjA4NiwgMzIwOTIsIDYxNzMwLCA2MTczNiwgNjE3NDMsIDYxNzQ4LCA2MTc1MiwgMzEwOTMsIDE2NjA2LCA2MTc1NSwgCisgICAgNjE3NTksIDYxNzY0LCA2MTc3MSwgNjE3NzcsIDYxNzgxLCA2MTc4NiwgMzg4MDYsIDYxNzkyLCA2MTc5NiwgNjE4MDAsIAorICAgIDYxODA1LCA2MTgxMSwgNjE4MTcsIDYxODI5LCA2MTgzOCwgNjE4NDgsIDYxODU0LCA2MTg2MSwgNjE4NjYsIDYxODcxLCAKKyAgICA2MTg3NSwgNjE4NzgsIDYxODg0LCA2MTg5MSwgNjE4OTYsIDYxOTAxLCA2MTkwOCwgNjE5MTUsIDYxOTIxLCA2MTkyNiwgCisgICAgNjE5MzEsIDYxOTM5LCAzMjA5NywgMjQyMywgNjE5NDQsIDYxOTQ5LCA2MTk1NSwgNjE5NjAsIDYxOTY2LCA2MTk3MSwgCisgICAgNjE5NzYsIDYxOTgxLCA2MTk4NywgMzIxMTgsIDYxOTkyLCA2MTk5OCwgNjIwMDQsIDYyMDEwLCAzMjE4MiwgNjIwMTUsIAorICAgIDYyMDIwLCA2MjAyNSwgMzIxOTMsIDYyMDMwLCA2MjAzNSwgNjIwNDAsIDYyMDQ2LCA2MjA1MiwgMzIxOTgsIDYyMDU3LCAKKyAgICA2MjA2MiwgNjIwNjcsIDMyMjUzLCAzMjI1OSwgNjIwNzIsIDYyMDc3LCAzMjI2NCwgNjIwODIsIDI3OTQ0LCAzMjI4NiwgCisgICAgMzIyOTAsIDYyMDg3LCA2MjA2MywgNjIwOTEsIDYyMDk5LCA2MjEwNSwgNjIxMTMsIDYyMTIwLCA2MjEyNiwgNjIxMzYsIAorICAgIDYyMTQyLCA2MjE0OSwgMTA2MzEsIDMyMzA0LCA2MjE1NSwgNjIxNjgsIDYyMTc3LCA2MjE4MywgNjIxOTIsIDYyMTk4LCAKKyAgICAyMzUwMiwgNjIyMDUsIDYyMjEyLCA2MjIyMiwgMzIyNTQsIDYyMjI1LCA2MjIzMiwgNjIyMzcsIDYyMjQxLCA2MjI0NSwgCisgICAgNjIyNTAsIDYxMjAsIDYyMjU0LCA2MjI1OSwgNjIyNjQsIDM0NjkyLCAzNDY5NywgNjIyNjgsIDM0NzExLCA2MjI3MywgCisgICAgMzQ3MTYsIDYyMjc4LCA2MjI4NCwgMzQ3MjgsIDM0NzM0LCAzNDc0MCwgNjIyODksIDYyMjk1LCAyMjUyOSwgNjIzMDYsIAorICAgIDYyMzA5LCA2MjMyMSwgNjIzMjksIDMyMzI3LCA2MjMzMywgNjIzNDIsIDYyMzUyLCA2MjM2MSwgMzIzMzcsIDYyMzY2LCAKKyAgICA2MjM3MywgNjIzODIsIDYyMzg4LCA2MjM5NiwgNjI0MDMsIDYwOTUsIDQzOTcsIDYyNDA4LCAzMjI2NSwgNjI0MTQsIAorICAgIDYyNDE3LCA2MjQyMywgNjI0MzAsIDYyNDM1LCA2MjQ0MCwgMjM0MTIsIDYyNDQ0LCA2MjQ1MCwgNjI0NTYsIDYyNDYxLCAKKyAgICA2MjQ2NiwgNjI0NzAsIDYyNDc2LCA2MjQ4MiwgMzM0NjUsIDg2MywgMzU3MDUsIDM2NjI2LCAzNjYzMiwgMzIzNzMsIAorICAgIDYyNDg3LCA2MjQ5MSwgNjI0OTUsIDYyNDk4LCA2MjUxMSwgNjI1MTcsIDYyNTIxLCA2MjUyNCwgNjI1MjksIDMzNzY4LCAKKyAgICA2MjUzMywgMzEwOTgsIDIxMjgxLCA2MjUzOSwgNjAyNCwgNjAzMiwgOTA3NSwgNjI1NDIsIDYyNTQ3LCA2MjU1MiwgNjI1NTcsIAorICAgIDYyNTYyLCA2MjU2NywgNjI1NzIsIDYyNTc3LCA2MjU4MiwgNjI1ODcsIDYyNTkzLCA2MjU5OCwgNjI2MDMsIDYyNjA5LCAKKyAgICA2MjYxNCwgNjI2MTksIDYyNjI0LCA2MjYyOSwgNjI2MzQsIDYyNjM5LCA2MjY0NSwgNjI2NTAsIDYyNjU2LCA2MjY2MSwgCisgICAgNjI2NjYsIDYyNjcxLCA2MjY3NiwgNjI2ODEsIDYyNjg2LCA2MjY5MSwgNjI2OTYsIDYyNzAxLCA2MjcwNiwgNjI3MTIsIAorICAgIDYyNzE3LCA2MjcyMiwgNjI3MjcsIDYyNzMyLCA2MjczNywgNjI3NDIsIDYyNzQ4LCA2Mjc1MywgNjI3NTgsIDYyNzYzLCAKKyAgICA2Mjc2OCwgNjI3NzMsIDYyNzc4LCA2Mjc4MywgNjI3ODgsIDYyNzkzLCA2Mjc5OSwgNjI4MDQsIDYyODA5LCA2MjgxNCwgCisgICAgNjI4MTksIDYyODI1LCA2MjgzMSwgNjI4MzYsIDYyODQyLCA2Mjg0NywgNjI4NTIsIDYyODU3LCA2Mjg2MiwgNjI4NjcsIAorICAgIDE1MTMsIDI0NSwgNjI4NzIsIDYyODc2LCA2Mjg4MCwgNjI4ODQsIDI1MTIzLCA2Mjg4OCwgNjI4OTIsIDYyODk3LCA2MjkwMSwgCisgICAgNjI5MDYsIDYyOTEwLCA2MjkxNSwgNjI5MjAsIDYyOTI1LCA2MjkyOSwgNjI5MzMsIDYyOTM4LCA2Mjk0MiwgMTMzNjksIAorICAgIDYyOTQ3LCA2Mjk1MSwgNjI5NTgsIDYyOTY4LCAxNTIwMCwgNjI5NzcsIDYyOTg2LCA2Mjk5MCwgNjI5OTUsIDYzMDAwLCAKKyAgICA2MzAwNCwgMjQ5MTQsIDMwMTksIDYzMDA4LCAxNzM1NywgNjMwMTQsIDYzMDIzLCA2MzAzMSwgNjMwMzcsIDYzMDQ5LCAKKyAgICA2MzA2MSwgNjMwNjUsIDYzMDcwLCA2MzA3NCwgNjMwODAsIDYzMDg2LCA2MzA5MSwgNjMxMDEsIDYzMTExLCA2MzExNywgCisgICAgNjMxMjIsIDYzMTI2LCA2MzEzMSwgNjMxMzcsIDYzMTQ2LCA2MzE1NSwgNjMxNjMsIDE1NTU0LCA2MzE2NywgNjMxNzYsIAorICAgIDYzMTg0LCA2MzE5NiwgNjMyMDcsIDYzMjE4LCA2MzIyNywgNjMyMzEsIDYzMjQwLCA2MzI1MCwgNjMyNTgsIDYzMjY0LCAKKyAgICA2MzI2OSwgNjMyNzUsIDYzMjgwLCA5OCwgMzA5MDcsIDYzMjkxLCAyNjI1NiwgMjYyNjYsIDYzMjk3LCA2MzMwNCwgNjMzMTAsIAorICAgIDYzMzE0LCA2MzMyNCwgNjMzMzUsIDYzMzQzLCA2MzM1MiwgNjMzNTcsIDYzMzYyLCA2MzM2NiwgMTczMTEsIDYzMzc0LCAKKyAgICA2MzM3OCwgNjMzODQsIDYzMzk0LCA2MzQwMSwgNjM0MDcsIDM0NzkxLCA2MzQxMywgNjM0MTUsIDYzNDE4LCA2MzQyMiwgCisgICAgNjM0MzIsIDYzNDM4LCA2MzQ0NSwgMTMzMTUsIDYzNDUyLCA2MzQ1OCwgNjM0NjcsIDYzNDc2LCA2MzQ4MiwgNjM0ODgsIAorICAgIDYzNDk0LCA2MzQ5OSwgNjM1MDYsIDYzNTEzLCA2MzUxOSwgNjM1MzIsIDYzNTQxLCA2MzU1MCwgNjM1NTUsIDYzNTU5LCAKKyAgICA2MzU2NSwgNjM1NzIsIDYzNTc5LCA2MzU4NiwgNjM1OTMsIDYzNjAwLCA2MzYwNSwgNjM2MDksIDYzNjEzLCA2MzYxNiwgCisgICAgNjM2MjYsIDYzNjMwLCA2MzY0MiwgNjM2NTEsIDYzNjU1LCA2MzY2MCwgNjM2NjQsIDYzNjcwLCA2MzY3NSwgNjM2ODIsIAorICAgIDYzNjkxLCA2MzY5OSwgNjM3MDcsIDYzNzEyLCA2MzcxNiwgNjM3MjEsIDYzNzI2LCA2MzczNiwgNjM3NDQsIDYzNzQ5LCAKKyAgICA2Mzc1MywgNjM3NTcsIDYzNzYzLCA2Mzc3NSwgNjM3ODMsIDYzNzkzLCA2MzgwMCwgNjM4MDYsIDYzODExLCA2MzgxNSwgCisgICAgNjM4MTksIDYzODIzLCA2MzgzMiwgNjM4NDEsIDYzODUwLCA2Mzg1NiwgNjM4NjIsIDYzODY4LCA2Mzg3MywgNjM4ODAsIAorICAgIDYzODg2LCA2Mzg5NCwgNjM5MDEsIDEyNDYzLCA2MzkwNywgNjM5MTMsIDYzOTE3LCAxNDIzOCwgNjM5MjEsIDYzOTI2LCAKKyAgICA2MzkzNiwgNjM5NDUsIDYzOTUxLCA2Mzk1NywgNjM5NjUsIDYzOTcyLCA2Mzk3NiwgNjM5ODAsIDYzOTg2LCA2Mzk5NCwgCisgICAgNjQwMDEsIDY0MDA3LCA2NDAxOCwgNjQwMjIsIDY0MDI2LCA2NDAzMCwgNjQwMzMsIDY0MDM5LCA2NDA0NCwgNjQwNDgsIAorICAgIDY0MDUyLCA2NDA2MSwgNjQwNjksIDY0MDc2LCA2NDA4MiwgNjQwODksIDI0MDM2LCAzODg0OCwgNjQwOTQsIDY0MTAyLCAKKyAgICA2NDEwNiwgNjQxMTAsIDY0MTEzLCA2NDEyMSwgNjQxMjgsIDY0MTM0LCA2NDE0MywgNjQxNTEsIDY0MTU3LCA2NDE2MiwgCisgICAgNjQxNjYsIDY0MTcxLCA2NDE3NSwgNjQxNzksIDY0MTg0LCA2NDE5MywgNjQxOTcsIDY0MjA0LCA2NDIxMSwgNjQyMTcsIAorICAgIDY0MjI1LCA2NDIzMSwgNjQyNDIsIDY0MjUwLCA2NDI1NiwgMjI2NTksIDY0MjY1LCA2NDI3MiwgNjQyNzksIDY0Mjg2LCAKKyAgICA2NDI5MywgNjQzMDAsIDQxODc3LCAxMzE1MywgNjQzMDcsIDY0MzE0LCA2NDMxOSwgMzQ4MjcsIDYyMTcsIDY0MzI1LCAKKyAgICA2NDMzMCwgNjQzMzUsIDY0MzQxLCA2NDM0NywgNjQzNTMsIDY0MzU4LCA2NDM2MywgNjQzNjgsIDY0MzczLCA2NDM3OSwgCisgICAgNjQzODQsIDY0MzkwLCA2NDM5NSwgNjQ0MDEsIDY0NDA2LCA2NDQxMSwgNjQ0MTYsIDY0NDIxLCA2NDQyNiwgNjQ0MzEsIAorICAgIDY0NDM2LCA2NDQ0MiwgNjQ0NDcsIDY0NDUzLCA2NDQ1OCwgNjQ0NjMsIDY0NDY4LCA2NDQ3MywgNjQ0NzgsIDY0NDgzLCAKKyAgICA2NDQ4OSwgNjQ0OTQsIDY0NDk5LCA2NDUwNCwgNjQ1MDksIDY0NTE0LCA2NDUxOSwgNjQ1MjQsIDY0NTI5LCA2NDUzNCwgCisgICAgNjQ1MzksIDY0NTQ1LCA2NDU1MCwgNjQ1NTUsIDY0NTYwLCA2NDU2NSwgNjQ1NzAsIDY0NTc1LCA2NDU4MCwgNjQ1ODUsIAorICAgIDY0NTkxLCA2NDU5NiwgNjQ2MDEsIDY0NjA2LCA2NDYxMSwgNjQ2MTYsIDY0NjIxLCA2NDYyNiwgNjQ2MzEsIDY0NjM2LCAKKyAgICA2NDY0MSwgNjQ2NDYsIDY0NjUxLCA2NDY1NywgMTgzNCwgMjI0LCAzNzQyNCwgNjQ2NjIsIDY0NjY1LCA2NDY3MCwgNjQ2NzQsIAorICAgIDY0Njc3LCA2NDY4MiwgNjM3MDMsIDY0NjkzLCA2NDcwMywgNjQ3MTAsIDY0NzI2LCA2NDczNSwgNjQ3NDUsIDY0NzU1LCAKKyAgICA2NDc2MywgNjQ3NzcsIDY0Nzg1LCA2NDc4OSwgNjQ3OTIsIDY0Nzk5LCA2NDgwNSwgNjQ4MTYsIDY0ODI4LCA2NDgzOSwgCisgICAgNjQ4NDgsIDY0ODU1LCAxMjk3LCAyMzMwMSwgNjQ4NjUsIDI1OTAsIDY0ODY5LCA2NDg3OCwgMTEzMywgMTcyODQsIDM4MDYxLCAKKyAgICA2NDg4NiwgNjQ4OTQsIDY0OTA4LCA2NDkyMSwgNjQ5MjUsIDY0OTMwLCA2NDkzNSwgNjQ5NDAsIDY0OTQ2LCA2NDk1MiwgCisgICAgNjQ5NTcsIDg1MzUsIDY0OTYyLCA2NDk2NiwgNjQ5NzQsIDExMDQ4LCA2NDk3OSwgNjQ5ODUsIDY0OTk0LCAxNzIxLCAKKyAgICAxMTA2MCwgNzM2LCA2NDk5OCwgNjUwMDcsIDY1MDE3LCAyNzAyMCwgNjUwMjYsIDY1MDMyLCAxNjg1NiwgNjUwMzgsIAorICAgIDY1MDQyLCAzOTY0LCAxMTM5MSwgNjUwNDgsIDY1MDU1LCA2MDY2MywgNjUwNTksIDY1MDYzLCAzOTg4LCAxODksIDE0MTUzLCAKKyAgICA2NTA2OSwgNjUwODEsIDY1MDg1LCA2NTA5MSwgMjc3MzcsIDY1MDk1LCAxMTM3OSwgMjczMCwgNCwgNjUxMDAsIDY1MTEwLCAKKyAgICA2NTExNiwgNjUxMjcsIDY1MTM0LCA2NTE0MCwgNjUxNDYsIDY1MTU0LCA2NTE2MSwgNjUxNjcsIDY1MTc3LCA2NTE4NywgCisgICAgNjUxOTcsIDIzNDg5LCAxMzA5LCA2NTIwNiwgNjUyMTAsIDY1MjE0LCA2NTIyMCwgNjUyMjQsIDI3NTMsIDI3NTksIDg1MzIsIAorICAgIDIyNjQsIDY1MjI4LCA2NTIzMiwgNjUyNDEsIDY1MjQ5LCA2NTI2MCwgNjUyNjgsIDY1Mjc2LCA2NTI4MiwgNjUyODcsIAorICAgIDY1Mjk4LCA2NTMwOSwgNjUzMTcsIDY1MzIzLCA5Njk0LCA2NTMyOCwgNjUzMzYsIDY1MzQwLCA2NTM0NCwgNjUzNDgsIAorICAgIDY1MzYwLCAyODEyMiwgNjUzNjcsIDY1Mzc3LCA2NTM4MywgNjUzODksIDk3OTYsIDY1Mzk5LCA2NTQxMCwgNjU0MjAsIAorICAgIDY1NDI5LCA2NTQzMywgNjU0NDAsIDExMzUsIDExNzAsIDY1NDUwLCA2NTQ1NSwgNjU0NjMsIDY1NDcxLCA2NTQ4MiwgCisgICAgNjU0ODksIDY1NTAzLCAxNDA4MiwgMzkzLCA2NTUxMywgNjU1MTcsIDY1NTI1LCA2NTUzNCwgNjU1NDIsIDY1NTQ4LCAKKyAgICA2NTU2MiwgNjU1NjksIDY1NTc1LCA2NTU4NCwgNjU1OTEsIDY1NjAxLCA2NTYwOSwgMzgxMiwgMTU2LCA2NTYxNywgNjU2MjgsIAorICAgIDY1NjMyLCA2NTY0NCwgMjc5MzUsIDE2MSwgNjU2NTAsIDY1NjU1LCA2NTY1OSwgNjU2NjYsIDY1NjcyLCA2NTY4MCwgCisgICAgNjU2ODcsIDg4MTgsIDY1Njk0LCA2NTcwMywgNjU3MTEsIDM4NzgsIDY1NzI0LCA4MTk5LCA2NTcyOCwgMjc5OCwgNDUwLCAKKyAgICA2NTczMywgNjU3NDYsIDY1NzUxLCAxODMzLCA2NjgsIDY1NzU1LCAzODk1LCA2NTc2MywgNjU3NjksIDY1NzczLCA5MzEsIAorICAgIDY1NzgzLCA2NTc5MiwgNjU3OTcsIDE0OTIyLCAxNDkyOSwgNDUyMzksIDY1ODAxLCAzODIyLCAxMzA0MSwgNjU4MDksIAorICAgIDY1ODE2LCAyMzU0NSwgNjU4MjAsIDY1ODI3LCA2NTgzMywgNjU4MzgsIDY1ODQzLCAxNDk0MiwgMzcyLCA2NTg0OCwgCisgICAgNjU4NjAsIDY1ODY2LCA2NTg3NCwgMjgxMCwgMTc1MywgNjU4ODIsIDY1ODg0LCA2NTg4OSwgNjU4OTQsIDY1ODk5LCAKKyAgICA2NTkwNSwgNjU5MTAsIDY1OTE1LCA2NTkyMCwgNjU5MjUsIDY1OTMwLCA2NTkzNSwgNjU5NDEsIDY1OTQ2LCA2NTk1MSwgCisgICAgNjU5NTYsIDY1OTYxLCA2NTk2NiwgNjU5NzEsIDY1OTc2LCA2NTk4MSwgNjU5ODcsIDY1OTkyLCA2NTk5NywgNjYwMDIsIAorICAgIDY2MDA4LCA2NjAxMywgNjYwMTksIDY2MDI0LCA2NjAyOSwgNjYwMzQsIDY2MDM5LCA2NjA0NCwgNjYwNDksIDY2MDU0LCAKKyAgICA2NjA2MCwgNjYwNjUsIDY2MDcxLCA2NjA3NiwgNjYwODEsIDY2MDg2LCA2NjA5MSwgNjYwOTYsIDY2MTAxLCA2NjEwNiwgCisgICAgNjYxMTEsIDY2MTE3LCA2NjEyMiwgNjYxMjcsIDY2MTMyLCA2NjEzNiwgNjYxNDAsIDY2MTQ1LCA2NjE0OSwgNjYxNTQsIAorICAgIDY2MTU5LCA2NjE2NSwgNjYxNzAsIDY2MTc0LCA2NjE3OSwgNjYxODMsIDY2MTg2LCA2NjE4OCwgNjYxOTIsIDY2MTk1LCAKKyAgICA2NjIwMCwgNjYyMDQsIDY2MjA4LCA2NjIxMiwgNjYyMTYsIDY2MjI1LCA2NjIyOSwgMzI1MzEsIDY2MjMyLCAzMjUzNiwgCisgICAgNjYyMzksIDY2MjQ0LCAzMjU0MSwgNjYyNTMsIDY2MjYyLCAzMjU0NywgNjYyNjcsIDMyNTUyLCA2NjI3NiwgNjYyODEsIAorICAgIDExNTc4LCA2NjI4NSwgNjYyOTAsIDY2Mjk1LCAzMjU1NywgNjYyOTksIDQwMjAzLCA2NjMwMywgNjYzMDYsIDY2MzEwLCAKKyAgICA4MjExLCA2NjMxNiwgNjYzMjEsIDY2MzI1LCAzNzA1LCAzMjU2MiwgNjYzMjgsIDY2MzMyLCA2NjMzNSwgNjYzNDAsIAorICAgIDY2MzQ0LCA2NjM1MCwgNjYzNTgsIDY2MzcxLCA2NjM4MCwgNjYzODYsIDY2MzkxLCA2NjM5NywgNjY0MDEsIDY2NDA3LCAKKyAgICA2NjQxNSwgNjY0MjAsIDY2NDI0LCA2NjQzMSwgNjY0MzcsIDY2NDQ1LCA2NjQ1NCwgNjY0NjIsIDMyNTY1LCA2NjQ2OSwgCisgICAgNjY0NzksIDY2NDg4LCA2NjUwMSwgNjY1MDYsIDY2NTExLCA2NjUyMCwgNjY1MjYsIDY2NTMzLCA2NjU0NCwgNjY1NTYsIAorICAgIDY2NTYzLCA2NjU3MiwgNjY1ODEsIDY2NTkwLCA2NjU5NywgNjY2MDMsIDY2NjEwLCA2NjYxOCwgNjY2MjUsIDY2NjMzLCAKKyAgICA2NjY0MiwgNjY2NTAsIDY2NjU3LCA2NjY2NSwgNjY2NzQsIDY2NjgyLCA2NjY5MSwgNjY3MDEsIDY2NzEwLCA2NjcxOCwgCisgICAgNjY3MjUsIDY2NzMzLCA2Njc0MiwgNjY3NTAsIDY2NzU5LCA2Njc2OSwgNjY3NzgsIDY2Nzg2LCA2Njc5NSwgNjY4MDUsIAorICAgIDY2ODE0LCA2NjgyNCwgNjY4MzUsIDY2ODQ1LCA2Njg1NCwgNjY4NjIsIDY2ODY5LCA2Njg3NywgNjY4ODYsIDY2ODk0LCAKKyAgICA2NjkwMywgNjY5MTMsIDY2OTIyLCA2NjkzMCwgNjY5MzksIDY2OTQ5LCA2Njk1OCwgNjY5NjgsIDY2OTc5LCA2Njk4OSwgCisgICAgNjY5OTgsIDY3MDA2LCA2NzAxNSwgNjcwMjUsIDY3MDM0LCA2NzA0NCwgNjcwNTUsIDY3MDY1LCA2NzA3NCwgNjcwODQsIAorICAgIDY3MDk1LCA2NzEwNSwgNjcxMTYsIDY3MTI4LCA2NzEzOSwgNjcxNDksIDY3MTU4LCA2NzE2NiwgNjcxNzMsIDY3MTgxLCAKKyAgICA2NzE5MCwgNjcxOTgsIDY3MjA3LCA2NzIxNywgNjcyMjYsIDY3MjM0LCA2NzI0MywgNjcyNTMsIDY3MjYyLCA2NzI3MiwgCisgICAgNjcyODMsIDY3MjkzLCA2NzMwMiwgNjczMTAsIDY3MzE5LCA2NzMyOSwgNjczMzgsIDY3MzQ4LCA2NzM1OSwgNjczNjksIAorICAgIDY3Mzc4LCA2NzM4OCwgNjczOTksIDY3NDA5LCA2NzQyMCwgNjc0MzIsIDY3NDQzLCA2NzQ1MywgNjc0NjIsIDY3NDcwLCAKKyAgICA2NzQ3OSwgNjc0ODksIDY3NDk4LCA2NzUwOCwgNjc1MTksIDY3NTI5LCA2NzUzOCwgNjc1NDgsIDY3NTU5LCA2NzU2OSwgCisgICAgNjc1ODAsIDY3NTkyLCA2NzYwMywgNjc2MTMsIDY3NjIyLCA2NzYzMiwgNjc2NDMsIDY3NjUzLCA2NzY2NCwgNjc2NzYsIAorICAgIDY3Njg3LCA2NzY5NywgNjc3MDgsIDY3NzIwLCA2NzczMSwgNjc3NDMsIDY3NzU2LCA2Nzc2OCwgNjc3NzksIDY3Nzg5LCAKKyAgICA2Nzc5OCwgNjc4MDYsIDY3ODEzLCA2NzgyMSwgNjc4MzAsIDY3ODM4LCA2Nzg0NywgNjc4NTcsIDY3ODY2LCA2Nzg3NCwgCisgICAgNjc4ODMsIDY3ODkzLCA2NzkwMiwgNjc5MTIsIDY3OTIzLCA2NzkzMywgNjc5NDIsIDY3OTUwLCA2Nzk1OSwgNjc5NjksIAorICAgIDY3OTc4LCA2Nzk4OCwgNjc5OTksIDY4MDA5LCA2ODAxOCwgNjgwMjgsIDY4MDM5LCA2ODA0OSwgNjgwNjAsIDY4MDcyLCAKKyAgICA2ODA4MywgNjgwOTMsIDY4MTAyLCA2ODExMCwgNjgxMTksIDY4MTI5LCA2ODEzOCwgNjgxNDgsIDY4MTU5LCA2ODE2OSwgCisgICAgNjgxNzgsIDY4MTg4LCA2ODE5OSwgNjgyMDksIDY4MjIwLCA2ODIzMiwgNjgyNDMsIDY4MjUzLCA2ODI2MiwgNjgyNzIsIAorICAgIDY4MjgzLCA2ODI5MywgNjgzMDQsIDY4MzE2LCA2ODMyNywgNjgzMzcsIDY4MzQ4LCA2ODM2MCwgNjgzNzEsIDY4MzgzLCAKKyAgICA2ODM5NiwgNjg0MDgsIDY4NDE5LCA2ODQyOSwgNjg0MzgsIDY4NDQ2LCA2ODQ1NSwgNjg0NjUsIDY4NDc0LCA2ODQ4NCwgCisgICAgNjg0OTUsIDY4NTA1LCA2ODUxNCwgNjg1MjQsIDY4NTM1LCA2ODU0NSwgNjg1NTYsIDY4NTY4LCA2ODU3OSwgNjg1ODksIAorICAgIDY4NTk4LCA2ODYwOCwgNjg2MTksIDY4NjI5LCA2ODY0MCwgNjg2NTIsIDY4NjYzLCA2ODY3MywgNjg2ODQsIDY4Njk2LCAKKyAgICA2ODcwNywgNjg3MTksIDY4NzMyLCA2ODc0NCwgNjg3NTUsIDY4NzY1LCA2ODc3NCwgNjg3ODQsIDY4Nzk1LCA2ODgwNSwgCisgICAgNjg4MTYsIDY4ODI4LCA2ODgzOSwgNjg4NDksIDY4ODYwLCA2ODg3MiwgNjg4ODMsIDY4ODk1LCA2ODkwOCwgNjg5MjAsIAorICAgIDY4OTMxLCA2ODk0MSwgNjg5NTIsIDY4OTY0LCA2ODk3NSwgNjg5ODcsIDY5MDAwLCA2OTAxMiwgNjkwMjMsIDY5MDM1LCAKKyAgICA2OTA0OCwgNjkwNjAsIDY5MDczLCA2OTA4NywgNjkxMDAsIDY5MTEyLCA2OTEyMywgNjkxMzMsIDY5MTQyLCA2OTE1MCwgCisgICAgNjkxNTcsIDY5MTYyLCA4MDU4LCA2OTE2OSwgMzI1NzUsIDY5MTc0LCA2OTE3OSwgMzI1ODAsIDY5MTg1LCAyMDkyMywgCisgICAgMzI1ODUsIDY5MTkwLCA2OTE5NiwgNjkyMDQsIDY5MjEwLCA2OTIxNiwgNjkyMjMsIDY5MjMwLCA2OTIzNSwgNjkyMzksIAorICAgIDY5MjQyLCA2OTI0NiwgNjkyNTUsIDY5MjYxLCA2OTI3MywgNjkyODQsIDY5Mjg4LCAzMDgxLCA4MDMzLCA2OTI5MywgCisgICAgNjkyOTYsIDY5Mjk4LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNiwgNjkzMjEsIDI1OTM0LCA2OTMyNiwgNjkzMzAsIAorICAgIDY5MzMzLCA2OTMzOCwgNjkzNDIsIDY5MzQ5LCA2OTM1NSwgNjkzNTksIDYxNzAsIDY5MzYzLCAzMjYwMiwgNjkzNjgsIAorICAgIDY5Mzc1LCA2OTM4NCwgNjkzOTIsIDY5NDAzLCA2OTQxMSwgNjk0MTksIDY5NDI2LCA2OTQzMywgNjk0MzksIDY5NDUwLCAKKyAgICAzMjYwNywgNjk0NTUsIDY5NDY2LCA2OTQ3OCwgNjk0ODYsIDY5NDk3LCA2OTUwNiwgNjk1MTcsIDY5NTIyLCA2OTUzMCwgCisgICAgMjU1NiwgNjk1MzUsIDM0Mjc3LCA2OTU0OCwgNjk1NTIsIDY5NTY0LCA2OTU3MiwgNjk1NzcsIDY5NTg1LCAxNzQ3OSwgCisgICAgNjk1OTYsIDY5NjAyLCA2OTYwOSwgNjk2MTcsIDY5NjIzLCAzMjYxNywgNjk2MjgsIDM5MTQsIDU4MjI0LCA2OTYzNSwgCisgICAgNjk2MzgsIDY5NjQ2LCA2OTY1OSwgNjk2NzIsIDY5Njg1LCA2OTY5OCwgNjk3MDUsIDY5NzE2LCA2OTcyNSwgNDE2OTQsIAorICAgIDQxNjk5LCA2OTczMCwgNjk3MzQsIDY5NzQyLCA2OTc0OSwgNjk3NTgsIDY5NzY2LCA2OTc3MiwgNjk3ODEsIDY5Nzg5LCAKKyAgICA2OTc5NywgNjk4MDEsIDY5ODEwLCA2OTgxOSwgNjk4MjksIDY5ODQyLCA2OTg1NSwgNjk4NjUsIDMyNjIyLCA2OTg3MSwgCisgICAgNjk4NzgsIDY5ODg0LCAzMjYyOCwgNjk4ODksIDY5ODkyLCA2OTg5NiwgNjk5MDQsIDY5OTEzLCA0MTQzMiwgNjk5MjEsIAorICAgIDY5OTMwLCA2OTkzOCwgNjk5NDUsIDY5OTUzLCA2OTk2MywgNjk5NzIsIDY5OTgxLCA2OTk5MCwgNjk5OTgsIDcwMDA5LCAKKyAgICA3MDAxOSwgOTM2NiwgMjE1NjEsIDcwMDI4LCA3MDAzMywgNzAwMzgsIDcwMDQyLCA3MDA0NiwgNzAwNTEsIDcwMDU3LCAKKyAgICA3MDA2MiwgNzAwNjcsIDcwMDczLCA3MDA3OCwgNzAwODMsIDIxNTI2LCA3MDA4OCwgNzAwOTUsIDcwMTAzLCA3MDExMSwgCisgICAgNzAxMTYsIDcwMTIzLCA3MDEzMCwgNzAxMzUsIDcwMTM5LCA3MDE0MywgNzAxNTEsIDcwMTU5LCAzMjY0NSwgNzAxNjUsIAorICAgIDcwMTcxLCA3MDE4MywgNzAxODksIDcwMTkzLCA3MDIwMCwgNzAyMDUsIDcwMjE2LCA3MDIyNiwgNzAyMzYsIDcwMjQ4LCAKKyAgICA3MDI1NCwgNzAyNjQsIDcwMjc0LCAzMjY3MiwgNzAyODMsIDcwMjkyLCA3MDI5OCwgNzAzMTAsIDcwMzIxLCA3MDMyOCwgCisgICAgNzAzMzMsIDcwMzM3LCA3MDM0NSwgNzAzNTEsIDcwMzU2LCA3MDM2MSwgNzAzNjgsIDcwMzc2LCA3MDM4OCwgNzAzOTgsIAorICAgIDcwNDA3LCA3MDQxNiwgNzA0MjMsIDM0MTM5LCAyMzg0MSwgNzA0MjksIDcwNDM0LCA3MDQzOCwgNzA0NDIsIDcwNDQ3LCAKKyAgICA3MDQ1MywgNzA0NjQsIDcwNDc3LCA3MDQ4MiwgNzA0ODksIDMyNjc3LCA3MDQ5NCwgNzA1MDYsIDcwNTE1LCA3MDUyNSwgCisgICAgNzA1MzYsIDcwNTQ5LCA3MDU1NiwgNzA1NjUsIDcwNTc0LCA3MDU4MiwgNzA1ODcsIDcwNTkzLCAxMDY0LCA3MDU5OCwgCisgICAgNzA2MDMsIDcwNjA4LCA3MDYxMywgNzA2MTksIDcwNjI0LCA3MDYyOSwgNzA2MzUsIDcwNjQxLCA3MDY0NiwgNzA2NTAsIAorICAgIDcwNjU1LCA3MDY2MCwgNzA2NjUsIDU4NzM2LCA3MDY3MCwgNzA2NzUsIDcwNjgwLCA3MDY4NSwgNzA2OTEsIDcwNjk3LCAKKyAgICA3MDcwMiwgNzA3MDYsIDcwNzExLCA3MDcxNiwgNzA3MjEsIDcwNzI3LCA3MDczMiwgNzA3MzgsIDcwNzQzLCA3MDc0OCwgCisgICAgNzA3NTMsIDcwNzU4LCA3MDc2MiwgNzA3NjgsIDcwNzczLCA3MDc4MiwgNzA3ODcsIDcwNzkyLCA3MDc5NywgNzA4MDIsIAorICAgIDcwODA2LCA3MDgxMywgNzA4MTksIDE3MTI5LCAxNzEzNiwgNzA4MjQsIDcwODI4LCA3MDgzMiwgNzA4MzYsIDcwODQwLCAKKyAgICA0NTQ5NCwgNzA4NDQsIDcwNzc0LCA3MDg0NiwgNzA4NTYsIDMyNjg2LCA3MDg1OSwgNzA4NjgsIDcwODc0LCA2MTQzLCAKKyAgICAzMjY5MSwgNzA4NzgsIDcwODg0LCA3MDg4OSwgNzA4OTUsIDcwOTAwLCA3MDkwNCwgNzA5MTEsIDcwOTE2LCA3MDkyNiwgCisgICAgNzA5MzUsIDcwOTM5LCA3MDk0NSwgNzA5NTEsIDcwOTU3LCA3MDk2MSwgNzA5NjksIDcwOTc2LCA3MDk4NCwgNzA5OTIsIAorICAgIDMyNjk2LCA3MDk5OSwgNzEwMDIsIDcxMDA5LCA3MTAxNSwgNzEwMjAsIDcxMDI0LCA3MTAzMCwgNzEwMzcsIDcxMDQyLCAKKyAgICA3MTA0NiwgNzEwNTUsIDcxMDYzLCA3MTA2OSwgNzEwNzQsIDMyNzAxLCA3MTA4MSwgNzEwODgsIDcxMDk0LCA3MTA5OSwgCisgICAgNzExMDUsIDcxMTEyLCA3MTExOCwgMjEyODgsIDI3NDQ1LCA3MTEyNCwgNzExMjksIDcxMTM1LCA3MTE0NywgNzA4MDcsIAorICAgIDcwODE0LCAyMTQ2NCwgNzExNTcsIDcxMTYyLCA3MTE2OSwgNzExNzUsIDcxMTgyLCA3MTE4OCwgNzExOTksIDcxMjA0LCAKKyAgICA5MTEwLCA3MTIxMiwgNzEyMTUsIDcxMjIxLCA3MTIyNSwgNzEyMjksIDcxMjMyLCA3MTIzOCwgMzI0NTAsIDYxOTQsIDk2NCwgCisgICAgMTM0MTksIDcxMjQ1LCA3MTI1MSwgNzEyNTcsIDcxMjYzLCA3MTI2OSwgNzEyNzUsIDcxMjgxLCA3MTI4NywgNzEyOTMsIAorICAgIDcxMjk4LCA3MTMwMywgNzEzMDgsIDcxMzEzLCA3MTMxOCwgNzEzMjMsIDcxMzI4LCA3MTMzMywgNzEzMzgsIDcxMzQzLCAKKyAgICA3MTM0OCwgNzEzNTMsIDcxMzU4LCA3MTM2NCwgNzEzNjksIDcxMzc0LCA3MTM4MCwgNzEzODUsIDcxMzkwLCA3MTM5NiwgCisgICAgNzE0MDIsIDcxNDA4LCA3MTQxNCwgNzE0MjAsIDcxNDI2LCA3MTQzMiwgNzE0MzgsIDcxNDQ0LCA3MTQ0OSwgNzE0NTQsIAorICAgIDcxNDYwLCA3MTQ2NSwgNzE0NzAsIDcxNDc2LCA3MTQ4MSwgNzE0ODYsIDcxNDkxLCA3MTQ5NiwgNzE1MDEsIDcxNTA2LCAKKyAgICA3MTUxMSwgNzE1MTYsIDcxNTIxLCA3MTUyNiwgNzE1MzEsIDcxNTM2LCA3MTU0MiwgNzE1NDcsIDcxNTUyLCA3MTU1NywgCisgICAgNzE1NjMsIDcxNTY4LCA3MTU3MywgNzE1NzgsIDcxNTgzLCA3MTU4OSwgNzE1OTQsIDcxNTk5LCA3MTYwNCwgNzE2MDksIAorICAgIDcxNjE0LCA3MTYxOSwgNzE2MjQsIDcxNjI5LCA3MTYzNCwgNzE2MzksIDcxNjQ0LCA3MTY0OSwgNzE2NTQsIDcxNjU5LCAKKyAgICA3MTY2NCwgNzE2NjksIDcxNjc0LCA3MTY3OSwgNzE2ODQsIDcxNjkwLCA3MTY5NSwgNzE3MDAsIDcxNzA1LCA3MTcxMCwgCisgICAgNzE3MTUsIDcxNzIwLCA3MTcyNSwgMTg2NCwgMTQyLCA3MTczMCwgNzE3MzQsIDcxNzM4LCA3MTc0MywgNzE3NTEsIDcxNzU1LCAKKyAgICA3MTc2MiwgNzE3NzAsIDcxNzc0LCA3MTc4NywgNzE3OTUsIDcxNzk5LCA3MTgwMiwgNzE4MDcsIDcxODExLCA3MTgxNiwgCisgICAgNzE4MjAsIDcxODI4LCA3MTgzMiwgMjA5MzEsIDcxODM3LCA3MTg0MSwgNjA5MzcsIDcxODQ1LCA3MTg0OCwgNzE4NTYsIAorICAgIDcxODY0LCA3MTg3MiwgNzE4NzcsIDcxODg0LCA3MTg5MCwgNzE4OTYsIDcxOTAxLCA3MTkwOCwgNzE5MTMsIDcxOTIxLCAKKyAgICA2NDkxMywgNzE5MjgsIDcxOTMzLCA3MTkzOCwgNzE5NDIsIDExNjQ1LCA3MTk0NiwgNzE5NTEsIDcxOTU2LCA3MTk2MCwgCisgICAgNzE5NjMsIDcxOTY5LCA3MTk3MywgNzE5ODMsIDcxOTkyLCA3MTk5NSwgNzE5OTksIDcyMDA2LCA3MjAxOSwgNzIwMjUsIAorICAgIDcyMDMzLCA3MjA0NCwgNzIwNTUsIDcyMDY2LCA3MjA3NywgNzIwODYsIDcyMDkyLCA3MjEwMSwgNzIxMDksIDcyMTE5LCAKKyAgICA3MjEzMiwgNzIxMzksIDcyMTUwLCA3MjE1NiwgNzIxNjEsIDcyMTY2LCA3MjE3MiwgNzIxNzgsIDcyMTg4LCA3MjE5NywgCisgICAgNzA0OTYsIDcyMjA1LCA3MjIxMSwgNzIyMTksIDcyMjI1LCA3MjIzMywgNzIyMzYsIDcyMjQwLCA3MjI0NCwgNzIyNDcsIAorICAgIDcyMjUzLCA3MjI1OSwgNzIyNjcsIDcyMjc5LCA3MjI5MSwgNzIyOTgsIDcyMzAyLCA3MjMxMywgNzIzMjEsIDcyMzI4LCAKKyAgICA3MjM0MCwgNzIzNDgsIDcyMzU2LCA3MjM2MywgNzIzNjksIDcyMzc5LCA3MjM4OCwgNzIzOTMsIDcyNDAzLCA3MjQxMiwgCisgICAgNDA3NTgsIDcyNDE5LCA3MjQyMywgNzI0MjgsIDcyNDM2LCA3MjQ0MywgNzI0NDksIDcyNDUzLCA3MjQ2MywgNzI0NzQsIAorICAgIDcyNDgyLCA3MjQ4OSwgNzI1MDEsIDcyNTEzLCA3MjUyMiwgNjk1MzgsIDcyNTI5LCA3MjU0MCwgNzI1NTQsIDcyNTYyLCAKKyAgICA3MjU3MiwgNzI1NzksIDcyNTg3LCA3MjU5OSwgNzI2MDgsIDcyNjE2LCA3MjYyNiwgNzI2MzcsIDcyNjQ5LCA3MjY1OCwgCisgICAgNzI2NjgsIDcyNjc1LCA3MjY4NCwgNzI2OTksIDcyNzA3LCA3MjcxNywgNzI3MjYsIDcyNzM0LCA3Mjc0NywgNzI3NjIsIAorICAgIDcyNzY2LCA3Mjc3NSwgNzI3ODcsIDcyNzk4LCA3MjgwOSwgNzI4MjAsIDcyODMwLCA3Mjg0MSwgNzI4NDksIDcyODU1LCAKKyAgICA3Mjg2NSwgNzI4NzMsIDcyODc5LCAyOTAxNCwgNzI4ODQsIDcyODkwLCA3Mjg5NSwgNzI5MDIsIDk3MDgsIDE3NDk5LCAKKyAgICA3MjkwOCwgNzI5MTcsIDcyOTIyLCA3MjkyNiwgNzI5MzMsIDcyOTM5LCA3Mjk0NCwgNzI5NDksIDcyOTU3LCA3Mjk2NSwgCisgICAgNzI5NjksIDcyOTcyLCA3Mjk3NSwgNzI5NzcsIDcyOTg0LCA3Mjk5MCwgNzMwMDEsIDczMDA2LCA3MzAxMCwgNzMwMTcsIAorICAgIDczMDIzLCA3MzAyOCwgNzMwMzYsIDY1NDEyLCA2NTQyMiwgNzMwNDIsIDczMDQ5LCA3MzA1OSwgMTA2MTgsIDczMDY2LCAKKyAgICA3MzA3MSwgMjkyMTAsIDczMDgwLCA3MzA4NSwgNzMwOTIsIDczMTAyLCA3MzExMCwgNzMxMTgsIDczMTI3LCA3MzEzMywgCisgICAgNzMxMzksIDczMTQ2LCA3MzE1MywgNzMxNTgsIDczMTYyLCA3MzE3MCwgNzMxNzUsIDczMTgwLCA3MzE4OCwgNzMxOTUsIAorICAgIDczMjAwLCA3MzIwNiwgNzMyMDksIDczMjEzLCA3MzIyMiwgNzE3ODIsIDczMjMxLCA3MzIzNSwgNzMyNDEsIDczMjUyLCAKKyAgICA3MzI2MiwgMTc1MDgsIDczMjczLCA3MzI4MSwgMTc1MjAsIDczMjg4LCA3MzI5MiwgNzMzMDEsIDI3MzMxLCA3MzMwOCwgCisgICAgNzMzMTIsIDczMzE3LCA3MzMzNCwgNzMzNDYsIDEwNTc2LCA3MzM1OCwgNzMzNjMsIDczMzY4LCA3MzM3MywgMjEwMDQsIAorICAgIDczMzc3LCA3MzM4MiwgNzMzODcsIDczMzkzLCA3MzM5OCwgNTg0NiwgMjEwMDgsIDczNDAzLCA3MzQwOCwgNzM0MTQsIAorICAgIDczNDIxLCA3MzQyNiwgNzM0MzEsIDczNDM3LCA3MzQ0MywgNzM0NDksIDczNDU0LCA3MzQ2MCwgNzM0NjQsIDczNDc4LCAKKyAgICA3MzQ4NiwgNzM0OTQsIDczNTAwLCA3MzUwNSwgNzM1MTIsIDczNTIyLCA3MzUzMSwgNzM1MzYsIDczNTQxLCA3MzU0OSwgCisgICAgNzM1NTQsIDczNTYwLCA3MzU2NSwgNzM1NzQsIDU5NzkzLCA3MzU3OSwgNzM1ODIsIDczNjAwLCA3MzYxOSwgNzM2MzIsIAorICAgIDczNjQ2LCA3MzY2MiwgNzM2NjksIDczNjc2LCA3MzY4MiwgNzM2ODksIDczNjk0LCA3MzcwMCwgNzM3MDYsIDczNzE0LCAKKyAgICA3MzcyMCwgNzM3MjUsIDczNzMwLCA3Mzc0NiwgMTA1ODksIDczNzYwLCA3Mzc2NywgNzM3NzUsIDczNzgxLCA3Mzc4NSwgCisgICAgNzM3ODgsIDczNzkzLCA3Mzc5OCwgNzM4MDUsIDczODEwLCA3MzgxOSwgNzM4MjQsIDczODMwLCA3MzgzOSwgNzM4NDgsIAorICAgIDczODUzLCA3Mzg1NywgNzM4NjUsIDczODc0LCAxMTY3NCwgNzM4ODMsIDczODkxLCA3Mzg5NiwgNzM5MDIsIDExNjg1LCAKKyAgICA3MzkwNywgNzM5MTAsIDczOTE1LCA3MzkyNSwgNzM5MzQsIDczOTM5LCA3Mzk0NSwgNzM5NTAsIDczOTU4LCA3Mzk2NSwgCisgICAgNzM5NzYsIDczOTg2LCA3Mzk5MSwgNjQ4NDEsIDczOTk2LCA3NDAwMiwgNzQwMDcsIDc0MDE0LCA3NDAyMywgNzQwMzEsIAorICAgIDc0MDM3LCA3NDA0MywgNzQwNTAsIDc0MDU2LCA3NDA2MCwgMTY5NTQsIDMwNTUsIDc0MDY1LCA3NDA2OSwgNzQwNzMsIAorICAgIDc0MDc5LCA3NDA4OCwgNzQwOTQsIDc0MTAxLCA3NDEwNSwgNzQxMjYsIDc0MTQ4LCA3NDE2NCwgNzQxODEsIDc0MjAwLCAKKyAgICA3NDIwOSwgNzQyMTksIDc0MjI2LCA3NDIzMywgMjcyMTgsIDc0MjM5LCA3NDI0MywgNzQyNTEsIDc0MjYzLCA3NDI2OSwgCisgICAgNzQyNzcsIDc0MjgxLCA3NDI4OSwgNzQyOTYsIDc0MzAwLCA3NDMwNiwgNzQzMTIsIDc0MzE3LCAzNTYzLCA0MTg5NCwgCisgICAgNzQzMjMsIDc0MzI3LCA3NDMzMSwgNzQzMzUsIDc0MzQwLCA3NDM0NSwgNzQzNTAsIDc0MzU2LCA3NDM2MiwgNzQzNjgsIAorICAgIDc0Mzc1LCA3NDM4MSwgNzQzODgsIDc0Mzk0LCA3NDQwMCwgNzQ0MDUsIDc0NDExLCA3NDQxNiwgNzQ0MjAsIDc0NDI1LCAKKyAgICA3NDQyOSwgNzQ0MzQsIDQxOTA5LCA3NDQzOCwgNzQ0NDMsIDc0NDUxLCA3NDQ1NSwgNzQ0NjAsIDc0NDY3LCA3NDQ3NiwgCisgICAgNzQ0ODIsIDc0NDg2LCA3NDQ5MywgNzQ0OTcsIDc0NTAwLCA3NDUwNywgNzQ1MTYsIDc0NTIxLCA3NDUyNSwgNzQ1MzMsIAorICAgIDc0NTQyLCA3NDU0NiwgNzQ1NTQsIDc0NTYwLCA3NDU2NSwgNzQ1NzAsIDc0NTc2LCA3NDU4MiwgNzQ1ODcsIDc0NTkxLCAKKyAgICA3NDU5NywgNzQ2MDIsIDc0NjA2LCA3NDYxMCwgNzQ2MTMsIDc0NjE4LCA3NDYyNiwgNzQ2MzYsIDc0NjQxLCAzOTM5NCwgCisgICAgNzQ2NDksIDc0NjYxLCA3NDY2NSwgNzQ2NzEsIDc0NjgzLCA3NDY5NCwgNzQ3MDEsIDc0NzA3LCA3NDcxNCwgNzQ3MjYsIAorICAgIDc0NzMzLCA3NDczOSwgMjEwODIsIDc0NzQzLCA3NDc0OSwgNzQ3NTYsIDc0NzYyLCA3NDc2OCwgNzQ3NzMsIDc0Nzc4LCAKKyAgICA3NDc4MywgNzQ3OTIsIDcwMzMsIDc0Nzk3LCAxNjQyMCwgNzQ4MDMsIDc0ODA3LCA3NDgxMSwgNzQ4MTUsIDc0ODIzLCAKKyAgICA3NDgzMiwgNzQ4MzYsIDc0ODQzLCA3NDg1MiwgNzQ4NjUsIDc0ODcxLCA3NDQzMCwgMzAwNzQsIDc0ODc2LCA3NDg3OCwgCisgICAgNzQ4ODMsIDc0ODg4LCA3NDg5MywgNzQ4OTgsIDc0OTAzLCA3NDkwOCwgNzQ5MTMsIDc0OTE4LCA3NDkyMywgNzQ5MjgsIAorICAgIDc0OTMzLCA3NDkzOCwgNzQ5NDMsIDc0OTQ4LCA3NDk1NCwgNzQ5NTksIDc0OTY0LCA3NDk2OSwgNzQ5NzQsIDc0OTc5LCAKKyAgICA3NDk4NCwgNzQ5ODksIDc0OTk0LCA3NTAwMCwgNzUwMDYsIDc1MDEyLCA3NTAxNywgNzUwMjIsIDc1MDM0LCA3NTAzOSwgCisgICAgMTg3MCwgNDksIDc1MDQ0LCA3NTA0OSwgMzI3MjgsIDc1MDUzLCAzMjczMywgMzI3MzgsIDMyNzQ0LCAzMjc0OSwgNzUwNTcsIAorICAgIDMyNzU0LCAyMjA3NywgNzUwNzksIDc1MDgzLCA3NTA4NywgNzUwOTIsIDc1MDk2LCAzMjc1OCwgNzUxMDAsIDc1MTA4LCAKKyAgICAzMjc2MywgNzUxMTUsIDc1MTE4LCA3NTEyMywgNzUxMjcsIDk1NDMsIDc1MTM2LCAzMjc2OCwgMjE5MzksIDc1MTM5LCAKKyAgICA3NTE0MywgMTQyOCwgNzUxNDgsIDMyNzc5LCA3NTE1MSwgNzUxNTYsIDI1NzI3LCAyNTczNywgMzUyNDAsIDc1MTYxLCAKKyAgICA3NTE2NiwgNzUxNzEsIDc1MTc2LCA3NTE4MiwgNzUxODcsIDc1MTk2LCA3NTIwMSwgNzUyMDgsIDc1MjE0LCA3NTIxOSwgCisgICAgNzUyMjQsIDc1MjI5LCA3NTIzOSwgNzUyNDgsIDc1MjUzLCA3NTI2MSwgNzUyNjUsIDc1MjczLCAzMjU5MywgMzcyOTUsIAorICAgIDc1MjgwLCA3NTI4NiwgNzUyOTEsIDc1Mjk2LCAxMjAxNiwgNzUzMDEsIDc1MzA3LCA3NTMxMiwgNzUzMTksIDc1MzI1LCAKKyAgICA3NTMzMCwgNzUzMzgsIDc1MzQ4LCA3NTM1OCwgNzUzNjQsIDc1MzY5LCA3NTM3NSwgMTc1MzAsIDc1MzgyLCAzNjA1NSwgCisgICAgNzUzOTUsIDc1NDAwLCA3NTQwNiwgMzA5NzUsIDc1NDE5LCA3NTQyNSwgNzU0MjksIDc1NDM4LCA3NTQ0NSwgNzU0NTEsIAorICAgIDc1NDU5LCA3NTQ2OCwgNzU0NzUsIDc1NDgxLCA3NTQ4NCwgNzU0ODgsIDI1ODY4LCA3NTQ5MiwgNzU0OTksIDc1NTA1LCAKKyAgICA3NTUxMywgNzU1MTgsIDIzOTg0LCA3NTUyNCwgNzU1MjcsIDc1NTM1LCA3NTU0MywgNzU1NTcsIDc1NTY0LCA3NTU3MCwgCisgICAgNzU1NzcsIDc1NTgzLCAzMjc5MywgNzU1ODcsIDc1NTk0LCA3NTYwMiwgNzU2MTAsIDc1NjE2LCAzMjc5OCwgNzU2MjQsIAorICAgIDc1NjMwLCA3NTYzNSwgNzU2NDUsIDc1NjUxLCA3NTY2MCwgMzA4MTIsIDM0Njk4LCA3NTY2OCwgNzU2NzMsIDc1Njc4LCAKKyAgICA3NTY4MiwgNzU2ODcsIDc1NjkxLCA3NTY5OSwgMTQ5MTQsIDM5NDA3LCA3NTcwNCwgNzU3MDksIDMyODAzLCA2MjIzOSwgCisgICAgNzU3MTMsIDc1NzE4LCA3NTcyMiwgNzU3MzEsIDc1NzM5LCA3NTc0NSwgNzU3NTAsIDc1NzU2LCA3NTc2MywgNzU3NjksIAorICAgIDc1Nzc0LCA3NTc3OSwgNzU3ODgsIDc1ODAwLCA3NTgxNSwgMzMwNjUsIDc1ODIxLCAxNjUzOSwgMzI4MDcsIDc1ODI1LCAKKyAgICA3NTgzMiwgMjQwOTQsIDc1ODM4LCA3NTg0NSwgNzU4NTQsIDc1ODYxLCA3NTg3MCwgNzU4NzYsIDc1ODgxLCA3NTg4OSwgCisgICAgNzU4OTUsIDMyODE3LCA3NTkwMCwgNzU5MDksIDc0Njg5LCA3NTkxOCwgNzU5MjUsIDc1OTMxLCA3NTkzNywgNzU5NDcsIAorICAgIDc1OTU1LCA3NTk2MiwgNzU5NjYsIDMyODIyLCA3NTk2OSwgMzI4MjgsIDMyODM0LCA3NTk3NCwgNzU5ODIsIDc1OTkwLCAKKyAgICA3NjAwMCwgNzYwMDksIDc2MDE3LCA3NjAyNCwgNzYwMzQsIDMyODM5LCA3NjAzOCwgNzYwNDAsIDc2MDQ0LCA3NjA0OSwgCisgICAgNzYwNTMsIDc2MDU3LCA3NjA2MywgNzYwNjgsIDc2MDcyLCA3NjA4MywgNzYwODgsIDc2MDkzLCAzMDYwLCA3NjA5NywgCisgICAgNzYxMDQsIDc2MTA4LCA3NjExNywgNzYxMjUsIDc2MTMyLCA3NjEzNywgNzYxNDIsIDYyMjg1LCA3NjE0NiwgNzYxNDksIAorICAgIDc2MTU1LCA3NjE2MywgNzYxNjksIDc2MTczLCA3NjE3OCwgNzYxODUsIDc2MTkwLCA3NjE5NiwgMzQ3MjksIDc2MjAxLCAKKyAgICA3NjIwNCwgNzYyMDksIDc2MjEzLCA3NjIxOCwgNzYyMjMsIDc2MjI3LCA3NjIzNSwgNzYyMzksIDI1NzQ2LCAyNTc1NSwgCisgICAgNzYyNDUsIDc2MjUxLCA3NjI1NywgNzYyNjIsIDc2MjY2LCA3NjI2OSwgNzYyNzksIDc2Mjg4LCA3NjI5MywgNzYyOTksIAorICAgIDc2MzA2LCA3NjMxMiwgNzYzMTYsIDc2MzI0LCA3NjMyOSwgMzQ3MzUsIDc2MzMzLCA3NjM0MSwgNzYzNDcsIDc2MzU0LCAKKyAgICA3NjM1OSwgNzYzNjMsIDc2MzY4LCA1ODQxMCwgMzQ3NDEsIDc2Mzc0LCA3NjM3OSwgNzYzODMsIDc2Mzg4LCA3NjM5MywgCisgICAgNzYzOTgsIDc2NDAyLCA3NjQwNywgNzY0MTIsIDc2NDE4LCA3NjQyMywgNzY0MjgsIDc2NDM0LCA3NjQ0MCwgNzY0NDUsIAorICAgIDc2NDQ5LCA3NjQ1NCwgNzY0NTksIDc2NDY0LCA3NjQ2OCwgMjQwOTMsIDc2NDczLCA3NjQ3OCwgNzY0ODQsIDc2NDkwLCAKKyAgICA3NjQ5NiwgNzY1MDEsIDc2NTA1LCA3NjUxMCwgNzY1MTUsIDc2NTIwLCA3NjUyNCwgNzY1MjksIDc2NTM0LCA3NjUzOSwgCisgICAgNzY1NDQsIDc2NTQ4LCAzMjg0NywgNzY1NTYsIDc2NTYwLCA3NjU2OCwgNzY1NzYsIDc2NTg3LCA3NjU5MiwgNzY1OTYsIAorICAgIDIyMzkxLCA3NjYwMSwgNzY2MDcsIDc2NjE3LCA3NjYyNCwgNzY2MjksIDc2NjM4LCA3NjY0MywgNzY2NDcsIDc2NjUyLCAKKyAgICA3NjY2MCwgNzY2NjgsIDc2Njc1LCA2NTA3NSwgNzY2ODEsIDc2Njg5LCA3NjY5NiwgNzY3MDcsIDc2NzEzLCA3NjcxNywgCisgICAgNzY3MjMsIDMyODU3LCA3NjcyNiwgNzY3MzMsIDc2NzQxLCA3Njc0NiwgMzk1OTgsIDc2NzUwLCA3Njc1NSwgNzY3NjIsIAorICAgIDc2NzY3LCA4OTkyLCA3Njc3MSwgNzY3NzksIDc2Nzg2LCA3Njc5MywgNzY3OTksIDc2ODEzLCA2MzM0NywgNzY4MjEsIAorICAgIDc2ODI3LCA3NjgzMSwgNzY4MzQsIDc2ODQyLCA3Njg0OSwgNzY4NTQsIDc2ODY3LCA3Njg3NCwgNzY4NzgsIDc2ODg1LCAKKyAgICA3Njg5MCwgNjA4MzAsIDc2ODk1LCA3Njg5OCwgNzY5MDUsIDc2OTExLCA3NjkxNSwgNzY5MjMsIDc2OTMyLCA3Njk0MiwgCisgICAgNzY5NTIsIDc2OTYxLCA3Njk2OSwgNzY5ODAsIDc2OTg1LCA3Njk4OSwgNzY5OTQsIDc2OTk4LCAzNTM3MSwgNzcwMDYsIAorICAgIDIxMzUxLCAzNTM4MCwgNzcwMTEsIDc3MDE2LCA3NzAyMSwgNzcwMjYsIDc3MDMxLCA3NzAzNiwgNzcwNDEsIDc3MDQ1LCAKKyAgICA3NzA1MCwgNzcwNTUsIDc3MDYwLCA3NzA2NSwgNzcwNzAsIDc3MDc1LCA3NzA3OSwgNzcwODQsIDc3MDg5LCA3NzA5MywgCisgICAgNzcwOTcsIDc3MTAxLCA3NzEwNSwgNzcxMTAsIDc3MTE1LCA3NzExOSwgNzcxMjQsIDc3MTI4LCA3NzEzMiwgNzcxMzcsIAorICAgIDc3MTQyLCA3NzE0NywgNzcxNTIsIDc3MTU2LCA3NzE2MSwgNzcxNjYsIDc3MTcwLCA3NzE3NSwgNzcxODAsIDc3MTg1LCAKKyAgICA3NzE5MCwgNzcxOTUsIDc3MjAwLCA3NzIwNSwgNzcyMTAsIDc3MjE1LCA3NzIyMCwgNzcyMjUsIDc3MjMwLCA3NzIzNSwgCisgICAgNzcyNDAsIDc3MjQ1LCA3NzI1MCwgNzcyNTUsIDc3MjYwLCA3NzI2NSwgNzcyNzAsIDc3Mjc0LCA3NzI3OSwgNzcyODQsIAorICAgIDc3Mjg5LCA3NzI5NCwgNzcyOTksIDc3MzA0LCA3NzMwOSwgNzczMTQsIDc3MzE5LCA3NzMyNCwgNzczMjksIDc3MzMzLCAKKyAgICA3NzMzOCwgNzczNDIsIDc3MzQ3LCA3NzM1MiwgNzczNTcsIDc3MzYyLCA3NzM2NywgNzczNzIsIDc3Mzc3LCA3NzM4MiwgCisgICAgNzczODcsIDc3MzkxLCA3NzM5NSwgNzc0MDAsIDc3NDA1LCA3NzQwOSwgNzc0MTQsIDc3NDE5LCA3NzQyMywgNzc0MjgsIAorICAgIDc3NDMzLCA3NzQzOCwgNzc0NDMsIDc3NDQ3LCA3NzQ1MiwgNzc0NTcsIDc3NDYxLCA3NzQ2NiwgNzc0NzAsIDc3NDc0LCAKKyAgICA3NzQ3OCwgNzc0ODIsIDc3NDg3LCA3NzQ5MSwgNzc0OTUsIDc3NDk5LCA3NzUwMywgNzc1MDcsIDc3NTExLCA3NzUxNSwgCisgICAgNzc1MTksIDc3NTIzLCA3NzUyOCwgNzc1MzMsIDc3NTM4LCA3NzU0MywgNzc1NDgsIDc3NTUzLCA3NzU1OCwgNzc1NjMsIAorICAgIDc3NTY4LCA3NzU3MywgNzc1NzcsIDc3NTgxLCA3NzU4NSwgNzc1ODksIDc3NTkzLCA3NzU5NywgNzc2MDIsIDc3NjA2LCAKKyAgICA3NzYxMSwgNzc2MTUsIDc3NjIwLCA3NzYyNSwgNzc2MjksIDc3NjMzLCA3NzYzOCwgNzc2NDIsIDc3NjQ2LCA3NzY1MCwgCisgICAgNzc2NTQsIDc3NjU4LCA3NzY2MiwgNzc2NjYsIDc3NjcwLCA3NzY3NCwgNzc2NzgsIDc3NjgyLCA3NzY4NiwgNzc2OTAsIAorICAgIDc3Njk0LCA3NzY5OSwgNzc3MDQsIDc3NzA4LCA3NzcxMiwgNzc3MTYsIDc3NzIwLCA3NzcyNCwgNzc3MjgsIDc3NzMzLCAKKyAgICA3NzczNywgNzc3NDEsIDc3NzQ1LCA3Nzc0OSwgNzc3NTMsIDc3NzU3LCA3Nzc2MiwgNzc3NjYsIDc3NzcxLCA3Nzc3NSwgCisgICAgNzc3NzksIDc3NzgzLCA3Nzc4NywgNzc3OTEsIDc3Nzk1LCA3Nzc5OSwgNzc4MDMsIDc3ODA3LCA3NzgxMSwgNzc4MTUsIAorICAgIDc3ODIwLCA3NzgyNCwgNzc4MjgsIDc3ODMyLCA3NzgzNiwgNzc4NDAsIDc3ODQ0LCA3Nzg0OCwgNzc4NTIsIDc3ODU2LCAKKyAgICA3Nzg2MCwgNzc4NjQsIDc3ODY5LCA3Nzg3MywgNzc4NzcsIDc3ODgyLCA3Nzg4NywgNzc4OTEsIDc3ODk1LCA3Nzg5OSwgCisgICAgNzc5MDMsIDc3OTA3LCA3NzkxMSwgNzc5MTUsIDc3OTE5LCA3NzkyNCwgNzc5MjgsIDc3OTMzLCA3NzkzNywgNzc5NDIsIAorICAgIDc3OTQ2LCA3Nzk1MSwgNzc5NTUsIDc3OTYxLCA3Nzk2NiwgNzc5NzAsIDc3OTc1LCA3Nzk3OSwgNzc5ODQsIDc3OTg4LCAKKyAgICA3Nzk5MywgNzc5OTcsIDc4MDAyLCAxNTIxLCA3ODAwNiwgMjgyNCwgMTc1OSwgMTc2NCwgNzgwMTAsIDc4MDE0LCAyODI4LCAKKyAgICA3ODAxOCwgMTM5NywgNzgwMjMsIDEzNDIsIDc4MDI3LCAyODQwLCA3ODAzMSwgNzgwMzgsIDc4MDQ1LCA3ODA1OSwgMjg0NCwgCisgICAgNzEzMSwgNzgwNjgsIDc4MDc2LCA3ODA4MywgNzgwOTQsIDc4MTAzLCA3ODExMCwgNzgxMjIsIDc4MTM1LCA3ODE0OCwgCisgICAgNzgxNTksIDc4MTY0LCA3ODE3MSwgNzgxODMsIDc4MTg3LCAyODQ4LCAxMTc0NywgNzgxOTcsIDc4MjAyLCA3ODIxMSwgCisgICAgNzgyMjEsIDI4NTIsIDc4MjI2LCA3ODIzMCwgNzgyMzUsIDc4MjQyLCA3ODI0OCwgNzgyNTYsIDc4MjY4LCAxMzQ3LCAKKyAgICAxMzA0MiwgNzgyNzgsIDc4MjgyLCA3ODI4OCwgNzgzMDIsIDc4MzE0LCA3ODMyNiwgNzgzMzYsIDc4MzQ1LCA3ODM1NCwgCisgICAgNzgzNjMsIDc4MzcxLCA3ODM4MiwgNzgzOTAsIDQwNTEsIDc4NDAwLCA3ODQxMSwgNzg0MjAsIDc4NDI2LCA3ODQ0MSwgCisgICAgNzg0NDgsIDc4NDU0LCAzNTQ5NiwgNzg0NTksIDI4NzYsIDEzMDQ2LCA3ODQ2MywgNzg0NzAsIDg5MzAsIDc4NDc5LCAyODgxLCAKKyAgICAzMjM0MywgNzg0ODUsIDYwNTc5LCA3ODQ5MiwgNzg0OTgsIDc4NTA5LCA3ODUxNSwgNzg1MjIsIDc4NTI4LCA3ODUzNiwgCisgICAgNzg1NDMsIDc4NTQ5LCA3ODU1OSwgNzg1NjgsIDc4NTc5LCA3ODU4NiwgNzg1OTIsIDc4NjAyLCA3ODYxMCwgNzg2MTYsIAorICAgIDc4NjMxLCA3ODYzNywgNzg2NDIsIDc4NjQ5LCA3ODY1MiwgNzg2NTgsIDc4NjY1LCA3ODY3MSwgNzg2NzksIDc4Njg4LCAKKyAgICA3ODY5NiwgNzg3MDIsIDc4NzExLCA0MTQzNCwgNzg3MjUsIDc4NzMwLCA3ODczNiwgMTQ3NTEsIDc4NzQxLCA3ODc1NCwgCisgICAgNzg3NjMsIDc4NzcxLCA3ODc3OCwgNzg3ODIsIDc4Nzg2LCA3ODc4OSwgNzg3OTYsIDc4ODAzLCA3ODgxMSwgNzg4MTksIAorICAgIDc4ODI4LCA3ODgzNiwgMTQ2NzgsIDc4ODQ0LCA3ODg0OSwgNzg4NTMsIDc4ODY1LCA3ODg3MiwgNzg4ODEsIDc0OCwgCisgICAgNzg4OTEsIDc4OTAwLCA3ODkxMSwgMjg5NywgNzg5MTUsIDc4OTE5LCA3ODkyNSwgNzg5MzgsIDc4OTUwLCA3ODk2MCwgCisgICAgNzg5NjksIDc4OTgxLCAyNjM1OSwgNzg5OTIsIDc5MDAwLCA3OTAwOSwgNzkwMjAsIDc5MDMxLCA3OTA0MSwgNzkwNTEsIAorICAgIDc5MDYwLCA3OTA2OCwgMTEzMTIsIDc5MDc1LCA3OTA3OSwgNzkwODIsIDc5MDg3LCA3OTA5MiwgNzkwOTYsIDc5MTAyLCAKKyAgICAxMzUyLCAxMTgxOCwgNzkxMDksIDc5MTIwLCA3OTEyOSwgNzkxMzcsIDc5MTQ2LCA3OTE1NCwgNzkxNzAsIDc5MTgxLCAKKyAgICA3OTE5MCwgNzkxOTgsIDc5MjEwLCA3OTIyMSwgNzkyMzcsIDc5MjQ3LCA3OTI2OCwgNzkyODEsIDc5Mjg5LCA3OTI5NiwgCisgICAgMTQ4NjIsIDc5MzA5LCA3OTMxNCwgNzkzMjAsIDU5MDgsIDc5MzI2LCA3OTMyOSwgNzkzMzYsIDc5MzQ2LCA4MTc2LCAKKyAgICA3OTM1MywgNzkzNTgsIDc5MzYzLCA3OTM2OCwgNzkzNzYsIDc5Mzg1LCA3OTM5MywgOTc1NiwgOTc2NSwgNzkzOTgsIAorICAgIDc5NDA5LCA3OTQxNCwgNzk0MjAsIDI5MTMsIDI5MTgsIDc5NDI2LCAxMDg3OSwgNzk0MzIsIDc5NDM5LCA3OTQ0NiwgCisgICAgNzk0NTksIDIyNTEsIDY4LCA3OTQ2NCwgNzk0NjksIDc5NDc5LCA3OTQ4NSwgNzk0OTQsIDc5NTAyLCA3OTUxMiwgNzk1MTYsIAorICAgIDc5NTIxLCA3OTUyNSwgNzk1MzcsIDI5NDEsIDc5NTQ1LCA3OTU1MywgNzk1NTgsIDc5NTY5LCA3OTU4MCwgNzk1ODksIAorICAgIDc5NTk0LCA3OTYwMCwgNzk2MDUsIDc5NjE1LCA3OTYyNSwgNzk2MzAsIDc5NjM2LCA3OTY0MSwgNzk2NTAsIDIxNDA0LCAKKyAgICA3OTY1NCwgNDEyOCwgMjAsIDc5NjU5LCA3OTY2OCwgNzk2NzUsIDc5NjgyLCA3OTY4OCwgNzk2OTQsIDg2NCwgNzk2OTksIAorICAgIDc5NzA0LCA2MDkwNywgNzk3MDksIDc5NzE0LCA3OTcyMCwgNzk3MjYsIDc5NzM0LCA3OTczOSwgNzk3NDYsIDc5NzUyLCAKKyAgICA3OTc1NywgMzgwMDgsIDQxMzI4LCA3OTc2MywgMjk0NSwgMzIsIDc5NzczLCA3OTc4NiwgNzk3OTEsIDc5Nzk5LCA3OTgwNCwgCisgICAgNzk4MTAsIDI5NjcsIDI4Mjk2LCA3OTgxNSwgNzk4MjMsIDc5ODMwLCA3OTgzNSwgNTg2NTIsIDYxOTEwLCA3OTg0NCwgCisgICAgNzk4NDgsIDE3MDQsIDE4MTMsIDc5ODUzLCA3OTg1OCwgNzk4NjUsIDE4MTcsIDI0NywgNzk4NzIsIDc5ODc4LCAyOTg5LCAKKyAgICA3OTg4MywgNzk4ODgsIDc5ODk1LCAxODIxLCA3OTkwMCwgNzk5MDYsIDc5OTExLCA3OTkyMywgNjExOSwgNzk5MzMsIDE4MjgsIAorICAgIDc5OTM5LCA3OTk0NCwgNzk5NTEsIDc5OTU4LCA3OTk3MywgNzk5ODAsIDc5OTkxLCA3OTk5OSwgMjYxOCwgODAwMDMsIAorICAgIDgwMDE1LCA4MDAyMCwgODAwMjQsIDgwMDMwLCAyODEyMSwgMjI1NiwgODAwMzQsIDgwMDQ1LCA4MDA0OSwgODAwNTMsIAorICAgIDgwMDU5LCA4MDA2MywgODAwNzIsIDgwMDc2LCA4MDA4NywgODAwOTEsIDIzMDIsIDMyMTcyLCA4MDA5NSwgODAxMDUsIAorICAgIDMwODAsIDkzNzEsIDgwMTEzLCA4MDExOCwgODAxMjIsIDgwMTMxLCA4MDEzOCwgODAxNDQsIDMwNTAsIDE3MTQ2LCA4MDE0OCwgCisgICAgODAxNjEsIDgwMTc5LCA4MDE4NCwgODAxOTIsIDgwMjAwLCA4MDIxMCwgOTk4NSwgMTMxNTQsIDgwMjIyLCA4MDIzNSwgCisgICAgODAyNDIsIDgwMjQ5LCA4MDI2NSwgODAyNzIsIDgwMjc4LCAxMDU5LCA4MDI4NSwgODAyOTIsIDgwMzAyLCA4MDMxMSwgCisgICAgODAzMjMsIDQyMjk4LCA4MDMzMSwgMzA2NCwgMTIwMzAsIDgwMzM0LCA4MDM0MiwgODAzNDYsIDc4MjM4LCAzMDY4LCAKKyAgICA4MDM1MCwgMjExODUsIDEyMDQ2LCAzNzU2LCA4MDM1NCwgMzA3NCwgODAzNTgsIDgwMzY4LCA4MDM3NCwgODAzODAsIAorICAgIDgwMzg2LCA4MDM5MiwgODAzOTgsIDgwNDA0LCA4MDQxMCwgODA0MTYsIDgwNDIyLCA4MDQyOCwgODA0MzQsIDgwNDQwLCAKKyAgICA4MDQ0NiwgODA0NTIsIDgwNDU4LCA4MDQ2NCwgODA0NzAsIDgwNDc2LCA4MDQ4MiwgODA0ODgsIDgwNDk0LCA4MDUwMCwgCisgICAgODA1MDYsIDgwNTEyLCA4MDUxOCwgODA1MjUsIDgwNTMyLCA4MDUzOCwgODA1NDQsIDgwNTUwLCA4MDU1NiwgODA1NjIsIAorICAgIDgwNTY4LCAxMzU3LCAxNjA1NiwgMTIwNjgsIDgwNTc0LCA4MDU3OSwgODA1ODQsIDgwNTg5LCA4MDU5NCwgODA1OTksIAorICAgIDgwNjA0LCA4MDYwOSwgODA2MTQsIDgwNjE5LCA4MDYyNCwgODA2MjksIDgwNjM0LCA4MDYzOSwgODA2NDQsIDgwNjQ5LCAKKyAgICA4MDY1NCwgODA2NTksIDgwNjY0LCA4MDY2OSwgODA2NzQsIDgwNjc5LCA4MDY4NCwgODA2ODksIDgwNjk0LCA4MDY5OSwgCisgICAgODA3MDUsIDgwNzEwLCA4MDcxNSwgODA3MjEsIDgwNzI2LCA4MDczMiwgODA3MzcsIDgwNzQyLCA4MDc0OCwgODA3NTMsIAorICAgIDgwNzU4LCA4MDc2MywgODA3NjgsIDgwNzczLCA4MDc3OCwgODA3ODMsIDgwNzg4LCA4MDM2OSwgODAzNzUsIDgwMzgxLCAKKyAgICA4MDM4NywgODAzOTMsIDgwMzk5LCA4MDQwNSwgODA0MTEsIDgwNDE3LCA4MDQyMywgODA0MjksIDgwNDM1LCA4MDQ0MSwgCisgICAgODA0NDcsIDgwNDUzLCA4MDc5NCwgODA0NTksIDgwNDY1LCA4MDQ3MSwgODA4MDAsIDgwNDc3LCA4MDQ4MywgODA0ODksIAorICAgIDgwNDk1LCA4MDUwMSwgODA1MDcsIDgwNTEzLCA4MDUzMywgODA4MDYsIDgwODEyLCA4MDUzOSwgODA4MTgsIDgwNTQ1LCAKKyAgICA4MDU1MSwgODA1NTcsIDgwNTYzLCA4MDU2OSwgMzA5MSwgMzA5NiwgODA4MjQsIDgwODI5LCA4MDgzMiwgODA4MzgsIAorICAgIDgwODQ0LCA4MDg1MSwgODA4NTYsIDgwODYxLCAyMzA3LCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwogI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDcKICNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDkKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tbXSA9IHsKLSAgICAwLCAyMTksIDE4LCAyNDUsIDMxLCA3OCwgMjIzLCAyNTQsIDc4LCA1NCwgNTAsIDI0NywgMTMyLCA1MCwgMjI1LCAxODIsIAotICAgIDUwLCAyNTQsIDEyNiwgMjU0LCA1NywgNDMsIDIyNiwgMywgNDQsIDIyNiwgMywgMjUzLCAyMTYsIDk2LCA1MCwgMjQ5LCAKLSAgICAyMTksIDI0MCwgMTY3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxOSwgNDYsIDIxLCAyMTAsIDg2LCAyMSwgMTEwLCAyMSwgCisgICAgMCwgMjE5LCAxOSwgMjQ1LCAzMiwgNzgsIDIyMywgMjU1LCA3OCwgNTQsIDUwLCAyNDcsIDEzMywgNTAsIDIyNSwgMTgzLCAKKyAgICA1MCwgMjU0LCAxMjcsIDI1NCwgNTgsIDQzLCAyMjYsIDQsIDQ0LCAyMjYsIDQsIDI1MywgMjE3LCA5NiwgNTAsIDI0OSwgCisgICAgMjIwLCAyNDAsIDE2OCwgMjQzLCAyMzAsIDIxOCwgMTMwLCAyMTksIDQ3LCAyMSwgMjEwLCA4NiwgMjEsIDExMCwgMjEsIAogICAgIDEwNSwgMjEsIDE1OCwgMjEsIDE2MSwgMjEsIDE4OSwgMjEsIDE5NCwgMjEsIDE5OCwgMjEsIDE5NSwgMjEsIDIwMCwgMjQ5LCAKLSAgICAyMjYsIDIyMCwgMTUwLCAyMzMsIDE1LCA1MCwgMjQ1LCA5OCwgNTAsIDI0MiwgMTMwLCA1MCwgMjI0LCAxMywgNzgsIDI0OSwgCi0gICAgMjE3LCAyNTMsIDIwNiwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTU4LCA3LCA2LCAxLCAyNTEsIDY2LCA3LCA2LCAxLCAKLSAgICAyNDksIDYwLCA3LCA2LCAxLCA3NSwgNywgNiwgMSwgMjQ1LCA2LCA3LCA2LCAxLCAyNDMsIDIwMiwgNywgNiwgMSwgMjQyLCAKLSAgICA2MCwgNywgNiwgMSwgNzMsIDcsIDYsIDEsIDIzNSwgMTQ0LCA3LCA2LCAxLCAyMzUsIDIzLCA3LCA2LCAxLCAxNTYsIDcsIDYsIAotICAgIDEsIDE5MywgNywgNiwgMSwgMjMwLCAyNSwgNywgNiwgMSwgNzYsIDcsIDYsIDEsIDIyNiwgMTA1LCA3LCA2LCAxLCAyMjQsIAotICAgIDk2LCA3LCA2LCAxLCAxNTMsIDcsIDYsIDEsIDIyMiwgOTEsIDcsIDYsIDEsIDIxNywgMTUyLCA3LCA2LCAxLCA3MCwgNywgNiwgCisgICAgMjI3LCAyMjAsIDE1MSwgMjMzLCAxNiwgNTAsIDI0NSwgOTksIDUwLCAyNDIsIDEzMSwgNTAsIDIyNCwgMTQsIDc4LCAyNDksIAorICAgIDIxOCwgMjUzLCAyMDcsIDcsIDYsIDEsIDYxLCA3LCA2LCAxLCAyNTMsIDE1OSwgNywgNiwgMSwgMjUxLCA2NywgNywgNiwgMSwgCisgICAgMjQ5LCA2MSwgNywgNiwgMSwgNzUsIDcsIDYsIDEsIDI0NSwgNywgNywgNiwgMSwgMjQzLCAyMDMsIDcsIDYsIDEsIDI0MiwgCisgICAgNjEsIDcsIDYsIDEsIDczLCA3LCA2LCAxLCAyMzUsIDE0NSwgNywgNiwgMSwgMjM1LCAyNCwgNywgNiwgMSwgMTU2LCA3LCA2LCAKKyAgICAxLCAxOTMsIDcsIDYsIDEsIDIzMCwgMjYsIDcsIDYsIDEsIDc2LCA3LCA2LCAxLCAyMjYsIDEwNiwgNywgNiwgMSwgMjI0LCAKKyAgICA5NywgNywgNiwgMSwgMTUzLCA3LCA2LCAxLCAyMjIsIDkyLCA3LCA2LCAxLCAyMTcsIDE1MywgNywgNiwgMSwgNzAsIDcsIDYsIAogICAgIDEsIDIxNCwgMTA1LCA3LCA2LCAxLCAyMTIsIDk4LCA3LCA2LCAxLCAyMTEsIDE3OCwgNywgNiwgMSwgMjExLCAxMTcsIDcsIAotICAgIDYsIDEsIDIxMCwgMTU5LCA0MywgNDIsIDEyNywgMjIzLCA1MCwgMjE5LCA0NiwgNDQsIDQyLCAxMjcsIDI1MCwgMzEsIDI1NSwgCi0gICAgMTQsIDEyMSwgMjMyLCAyMTMsIDI0MiwgMTM3LCAyNTUsIDE0LCA3LCA0LCAxLCA2MSwgNywgNCwgMSwgMjUzLCAxNTgsIDcsIAotICAgIDQsIDEsIDI1MSwgNjYsIDcsIDQsIDEsIDI0OSwgNjAsIDcsIDQsIDEsIDc1LCA3LCA0LCAxLCAyNDUsIDYsIDcsIDQsIDEsIAotICAgIDI0MywgMjAyLCA3LCA0LCAxLCAyNDIsIDYwLCA3LCA0LCAxLCA3MywgNywgNCwgMSwgMjM1LCAxNDQsIDcsIDQsIDEsIDIzNSwgCi0gICAgMjMsIDcsIDQsIDEsIDE1NiwgNywgNCwgMSwgMTkzLCA3LCA0LCAxLCAyMzAsIDI1LCA3LCA0LCAxLCA3NiwgNywgNCwgMSwgCi0gICAgMjI2LCAxMDUsIDcsIDQsIDEsIDIyNCwgOTYsIDcsIDQsIDEsIDE1MywgNywgNCwgMSwgMjIyLCA5MSwgNywgNCwgMSwgMjE3LCAKLSAgICAxNTIsIDcsIDQsIDEsIDcwLCA3LCA0LCAxLCAyMTQsIDEwNSwgNywgNCwgMSwgMjEyLCA5OCwgNywgNCwgMSwgMjExLCAxNzgsIAotICAgIDcsIDQsIDEsIDIxMSwgMTE3LCA3LCA0LCAxLCAyMTAsIDE1OSwgNDMsIDI0OSwgOTksIDEyNywgNjcsIDIzMiwgMjEzLCA0NCwgCi0gICAgMjQ5LCA5OSwgMTI3LCAxODIsIDIyOCwgNzMsIDIxOSwgMTgsIDIzNSwgMTkzLCAyNDUsIDMxLCA3OCwgMjUwLCAxNzYsIDUwLCAKLSAgICAyMjQsIDIyOCwgNTAsIDI0OSwgOTgsIDUwLCAyMTEsIDQwLCA1MCwgMjUxLCAxMzUsIDEzMCwgMjIxLCAxNzMsIDUwLCAyNDgsIAotICAgIDEsIDI0OSwgMTYzLCA1MCwgMjQ0LCAxMzYsIDIyNiwgMTU0LCAyMzUsIDIzOCwgMjMzLCA0MiwgNTIsIDI1NCwgMTEwLCAKLSAgICAyMjMsIDI1NCwgNzgsIDIyOCwgNTIsIDUwLCAyMTksIDUyLCAyNDAsIDE2OCwgMjIzLCAxMDIsIDUwLCAyMzEsIDIzMiwgCi0gICAgMjQ4LCA3MSwgNTAsIDIyNSwgMjEsIDUwLCAyMTgsIDIzLCAxMDUsIDIxOCwgMjMsIDE1OCwgMjU1LCAzLCAyNTUsIDE0LCAKLSAgICAyMzAsIDIyOCwgNTAsIDIyNSwgNjgsIDUwLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDI1MCwgMTgzLCAyMTgsIDIzLCAxMTAsIAotICAgIDIzMSwgMTQ4LCAyMjYsIDE1NCwgMjM1LCAyMzgsIDIyMiwgMjQ3LCA1MiwgMjU0LCAxMTAsIDIyMywgMjU0LCA3OCwgMjEyLCAKLSAgICAxMTQsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIDIxMiwgMTE0LCAyNDQsIAotICAgIDIsIDEzNCwgMjI0LCAxOSwgMjM1LCAxOTMsIDIyNCwgMTMsIDc4LCA3LCA2LCAxLCAxMTUsIDIsIDI0MiwgMTM2LCA3LCA2LCAKLSAgICAxLCAxMTUsIDIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAxMTUsIDIsIDE4MiwgNywgNiwgMSwgCi0gICAgMTE1LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA2LCAxLCAyNTQsIDI0MywgNywgNiwgCi0gICAgMSwgMjUxLCA2NywgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDE2MCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMTQyLCAKLSAgICA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDE2MCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgCi0gICAgMjQyLCAxMzYsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDMwLCA3LCA2LCAKLSAgICAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyNDUsIDU5LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxODIsIDcsIDYsIAotICAgIDEsIDE0NCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzAsIDcsIAotICAgIDYsIDEsIDE0NCwgMiwgMTgyLCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgMSwgMjMwLCA4NCwgNTAsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDEwNCwgMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIAotICAgIDI1MCwgMzAsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTQyLCA3LCA2LCAxLCAKLSAgICAyMTYsIDE1MSwgNywgNCwgMSwgMjIwLCA3NiwgMjIyLCA5MSwgNywgNCwgMSwgMTE1LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgCi0gICAgMTE1LCAyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMTE1LCAyLCAxODIsIDcsIDQsIDEsIAotICAgIDExNSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMjU0LCAyNDMsIDcsIDQsIAotICAgIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAxNjAsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDE0MiwgCi0gICAgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAxNjAsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIAotICAgIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAzMCwgNywgNCwgCi0gICAgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjQ1LCA1OSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMTgyLCA3LCA0LCAKLSAgICAxLCAxNDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMwLCA3LCAKLSAgICA0LCAxLCAxNDQsIDIsIDE4MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDEsIDI0NywgMTY5LCA1MCwgNywgNCwgMSwgMTQ0LCAKLSAgICAyLCA5MSwgNywgNCwgMSwgMTA0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgCi0gICAgMjUwLCAzMCwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAxNDIsIDcsIDQsIDEsIAotICAgIDIxNiwgMTUxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAxMTUsIDIsIDIzMSwgMjMyLCA3LCA0LCAKLSAgICAxLCAxMTUsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgCi0gICAgMTQ2LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI0LCA3LCA0LCAxLCAxMTUsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAyNTEsIAotICAgIDY3LCAyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDE0MiwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAzMCwgNywgNCwgCi0gICAgMSwgMjUxLCA2NywgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjUxLCA2NywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAKLSAgICA1OSwgNDgsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDIzNCwgNywgCi0gICAgNiwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDksIAotICAgIDYxLCAyLCA5MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgOTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDE2MCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDE2MCwgMiwgMjUxLCAxNDYsIAotICAgIDcsIDYsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyNCwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTYwLCAKLSAgICAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTAsIAotICAgIDMwLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTEsIDE0NiwgNywgNiwgCi0gICAgMSwgMjQzLCAyMDMsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQzLCAyMDMsIAotICAgIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MCwgCi0gICAgMzAsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDkxLCA3LCA0LCAxLCAyNDIsIAotICAgIDYxLCAyLCA5MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDE4MiwgNywgNiwgMSwgCi0gICAgMjQwLCAxNTQsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI0MCwgMTU0LCAKLSAgICAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAKLSAgICAyMjQsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDU5LCA0OCwgNywgNCwgCi0gICAgMSwgMjQ3LCAxMTksIDczLCA3LCA2LCAyNywgMjM2LCAzMSwgNywgNCwgMjcsIDIzNiwgMzEsIDcsIDYsIDEsIDIzNSwgMTQ1LCAKLSAgICAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyMzUsIDE0NSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMjUwLCAxODMsIAotICAgIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMzMsIDIzOSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIAotICAgIDE0MiwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDE0MiwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAKLSAgICAyMzMsIDE0OSwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjMzLCAxNDksIAotICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCA3LCA0LCAxLCAyMzMsIDE0OSwgCi0gICAgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgOTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAKLSAgICA5MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMTQyLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAxNDIsIDcsIDYsIDEsIDIzMCwgMjYsIAotICAgIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjMwLCAyNiwgMiwgMjUwLCAKLSAgICAyMzQsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzAsIDI2LCAyMjQsIDIwNCwgMjUxLCA3OCwgCi0gICAgMjU0LCA1NywgNywgNiwgMSwgMjQ1LCAxMzgsIDcsIDQsIDEsIDI0NSwgMTM4LCA3LCA2LCAxLCAxNDQsIDIsIDIzMSwgMjMyLCAKLSAgICA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxNDQsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDI1MSwgMTQ2LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgNTIsIDE0MiwgNywgNiwgMjcsIAotICAgIDIyNiwgMjM0LCA3LCA0LCAyNywgMjI2LCAyMzQsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAxNDIsIDcsIDQsIDEsIDIyMywgCi0gICAgMjI0LCAyLCAxNDIsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgCi0gICAgMTgzLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDIzNCwgNywgCi0gICAgNiwgMSwgMjIyLCA5MiwgMiwgMTQyLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIAotICAgIDI1MCwgMzAsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMTgzLCA3LCAKLSAgICA0LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTIsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAKLSAgICAyNTAsIDE4MywgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAyMzQsIAotICAgIDcsIDYsIDEsIDIxNywgMTUzLCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDE4MiwgCi0gICAgNywgNCwgMSwgMTA0LCAyLCAxODIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAKLSAgICAyMzIsIDcsIDYsIDEsIDEwNCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDEwNCwgMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDEwNCwgCi0gICAgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDIyMiwgMjM0LCA0OCwgNywgNiwgMSwgMTA0LCAyLCA1MiwgMTQyLCAKLSAgICA3LCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDEwNCwgMiwgCi0gICAgMjI2LCAyMjQsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI1MCwgMzAsIDcsIAotICAgIDYsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjExLCAKLSAgICAxMTgsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDE0MiwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDE0MiwgNywgCi0gICAgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEwLCAKLSAgICAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MSwgCi0gICAgNywgNCwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCA1NywgMiwgMTAzLCA3LCA2LCAxLCA1NywgMiwgMjE2LCAxMSwgNywgNCwgCi0gICAgMSwgNTcsIDIsIDIxNiwgMTEsIDcsIDYsIDEsIDEzOCwgMTk0LCA3LCA0LCAxLCAxMzgsIDE5NCwgNywgNiwgMSwgMjA0LCAKLSAgICA3NiwgNywgNiwgMSwgMjUxLCA2NywgMiwgMTAzLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxMDMsIDcsIDYsIDEsIDI1NCwgCi0gICAgMjE5LCAyNDksIDYwLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAxMDMsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDIxNiwgMTEsIDcsIAotICAgIDQsIDEsIDI0OSwgNjEsIDIsIDIxNiwgMTEsIDcsIDQsIDEsIDIxNSwgOTQsIDI0OCwgNTQsIDcsIDYsIDEsIDIyMywgNDksIAotICAgIDc1LCA3LCA2LCAxLCAyMjEsIDE5NSwgNywgNiwgMSwgMjA0LCA3NSwgNywgNiwgMSwgMjQ1LCA3LCAyLCAxMDMsIDcsIDQsIAotICAgIDEsIDI0NSwgNywgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDEwNywgNywgNCwgMSwgCi0gICAgMjQwLCAyMDEsIDcsIDYsIDEsIDIzNSwgMTg1LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDYsIDEsIDIzNSwgMjQsIAotICAgIDIsIDEwMywgNywgNCwgMSwgMjM1LCAyNCwgMiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTMwLCA3LCA0LCAxLCAKLSAgICAyMzMsIDEwMCwgMiwgOTEsIDcsIDYsIDEsIDIxNSwgOTQsIDE5MywgNywgNiwgMSwgMjMwLCAyNiwgMiwgNDMsIDEwMywgNywgCi0gICAgNCwgMSwgMjMwLCAyNiwgMiwgMTk5LCA0NCwgMjMzLCAzNiwgNywgNiwgMSwgMTQ0LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA2LCAKLSAgICAxLCAxNDQsIDIsIDI0MCwgMjQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ4LCA3LCA2LCAxLCAyMjYsIDIxOSwgNywgNCwgCi0gICAgMSwgMjI2LCAyMTksIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCAxMDMsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAxMDMsIDcsIDEsIAotICAgIDIxMCwgMjE0LCA3LCA2LCAxLCAxMzgsIDEwNSwgNywgNCwgMSwgMTM4LCAxMDUsIDcsIDYsIDEsIDI0NSwgNzUsIDcsIDEsIAotICAgIDIyMywgNDksIDI0NSwgNzYsIDIzMiwgMTIzLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjI2LCA2NiwgMTAzLCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1MywgMiwgMTAzLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMTAzLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjIzLCAKLSAgICA1NSwgMTAzLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ4LCA3LCA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ4LCA3LCA2LCAxLCAKLSAgICAyMTQsIDE1NywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNiwgMSwgMjExLCAxMTgsIDIsIDEwMywgNywgNCwgMSwgCi0gICAgMjExLCAxMTgsIDIsIDEwMywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIAotICAgIDYsIDEsIDI0NSwgOCwgNywgNiwgMSwgMjQ1LCA5LCAyMjMsIDQ4LCA3LCA0LCAxLCAyNDUsIDksIDIyMywgNDgsIDcsIDQsIAotICAgIDEsIDI0NSwgOSwgMiwgMjE3LCA3NywgNywgMSwgMTEzLCAyLCA5MSwgNywgNiwgMSwgMTM4LCAxODksIDcsIDQsIDEsIDEzOCwgCi0gICAgMTg5LCA3LCAxLCAyMzUsIDE5MywgMjQyLCAxODAsIDIxOCwgMTMwLCAyLCA5MSwgNywgMSwgMjExLCAxODEsIDcsIDEsIAotICAgIDI0OCwgNDcsIDI1MCwgMTEsIDcsIDEsIDIzMywgNzcsIDI1MCwgMTEsIDcsIDEsIDI1NCwgMTM3LCAyNTAsIDExLCA3LCAxLCAKLSAgICAyMjMsIDU1LCAyNTAsIDExLCA3LCA2LCAxLCAyNDYsIDQwLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNCwgCi0gICAgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDYsIDQwLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjMyLCAKLSAgICAxODgsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjMyLCAxODgsIDcsIDYsIDEsIAotICAgIDIyOCwgMTg2LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjI4LCAxODYsIDcsIDYsIAotICAgIDEsIDExNSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAKLSAgICAyNTAsIDIzNCwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMjM0LCA3LCAKLSAgICA0LCAxLCAxNDQsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAxMDQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgCi0gICAgMjM0LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAotICAgIDIzMSwgMjMyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKLSAgICAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCi0gICAgMjUwLCAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAKLSAgICAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxNSwgOTQsIDc1LCA3LCA2LCAxLCAxMTUsIDIsIDI0OCwgMiwgMjIsIDIzMSwgCi0gICAgMjMyLCA3LCA0LCAxLCAxMTUsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxMTUsIDIsIDU5LCA3NywgMjIsIAotICAgIDIzMSwgMjMyLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA3NywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNTQsIDI0NCwgMiwgCi0gICAgMjMxLCAyMzIsIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDkxLCA3LCA0LCAKLSAgICAxLCAyNDMsIDIwMywgMiwgOTEsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIAotICAgIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjUwLCAyMzQsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDE0NCwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgMjI2LCAyMjUsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyMjYsIDIyNSwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKLSAgICAyNDUsIDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDUsIDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzUsIDE0NSwgMiwgCi0gICAgMjUwLCAyMzQsIDcsIDYsIDEsIDI0NiwgMzksIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDQsIDEsIDIxMCwgMTU5LCA3LCA0LCAxLCAKLSAgICAyNDYsIDM5LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMTQyLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMTQyLCA3LCA2LCAxLCAKLSAgICAyNDAsIDE5OSwgNywgNiwgMSwgMjExLCAxODEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMzAsIAotICAgIDI2LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNzcsIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgCi0gICAgMjIyLCAyMzQsIDc3LCAyMiwgMTQyLCA3LCA2LCAxLCAyNTQsIDI0NCwgMiwgMTQyLCA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgCi0gICAgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDIxOCwgMTAzLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxOCwgMTAzLCAyMiwgCi0gICAgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIAotICAgIDEsIDExNSwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMTUsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgCi0gICAgMSwgMTYwLCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTYwLCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDI0MCwgCi0gICAgMTU0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDI0MCwgCi0gICAgMTU0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIAotICAgIDYsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAKLSAgICAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDE0NCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyMjMsIAotICAgIDIyNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAyMjMsIAotICAgIDIyNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCAKLSAgICA2LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDEwNCwgCi0gICAgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMDQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjIyLCAKLSAgICA5MiwgMiwgMjQ5LCAyMjAsIDUxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyNDksIDIyMCwgNTEsIDcsIDYsIDEsIDIxNywgCi0gICAgMTUzLCAyLCAyNDksIDIyMCwgNTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNDksIDIyMCwgNTEsIDcsIDYsIDEsIDIxMCwgCi0gICAgMjMxLCA3LCA0LCAxLCAyMTAsIDIzMSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0MiwgNjEsIAotICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxOTksIDQ0LCAyMzMsIDM2LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAKLSAgICAyNDksIDEwMCwgNywgNiwgMSwgMjI2LCAxMzQsIDcsIDQsIDEsIDIyNiwgMTM0LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgCi0gICAgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMTAzLCA3LCA2LCAxLCAxMTUsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTE1LCAyLCAKLSAgICA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIAotICAgIDE0NCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIAotICAgIDYsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAyMzEsIAotICAgIDIzMiwgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDU5LCA3NywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA3NywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKLSAgICAyMTEsIDExOCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjMzLCAxNDksIAotICAgIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0OSwgCi0gICAgMTAwLCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDQsIDcsIDQsIDEsIDI0OCwgMTQzLCAyNDcsIDIyMCwgNywgNCwgMSwgCi0gICAgMjI0LCAzMSwgMjQ3LCAyMjAsIDcsIDYsIDEsIDExNSwgMiwgOTEsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDkxLCA3LCA0LCAxLCAKLSAgICAyNTEsIDY3LCAyLCA5MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDEzMCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI0NywgCi0gICAgMjU1LCA5MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjE3LCAyNTAsIDIxNywgNzcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAKLSAgICAyMTcsIDI1MCwgMjE3LCA3NywgNywgNiwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA3LCA0LCAxLCAyNDIsIDE4MCwgMjE4LCAKLSAgICAxMjksIDcsIDYsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgMTA0LCAxMzAsIDcsIDYsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCAKLSAgICA3LCA2LCAxLCAxNjAsIDIsIDkxLCA3LCA0LCAxLCAxNjAsIDIsIDkxLCA3LCA2LCAxLCAyMzUsIDE0NSwgMiwgOTEsIDcsIDQsIAotICAgIDEsIDIzNSwgMTQ1LCAyLCA5MSwgNywgNiwgMSwgNCwgMjI0LCA5NywgMiwgMjQxLCA1MiwgMjE3LCA3NywgNywgNCwgMSwgCi0gICAgMjI0LCA5NywgMiwgMjQxLCA1MiwgMjE3LCA3NywgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDkxLCA3LCA0LCAxLCAyMjMsIAotICAgIDIyNCwgMiwgOTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAKLSAgICAyMTUsIDk0LCA2MSwgNywgNCwgMSwgMjU0LCAxNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDI1NCwgMTQzLCA3LCA0LCAxLCA1NywgCi0gICAgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc2LCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjQ5LCAKLSAgICA2MSwgMiwgMjE3LCA3NywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMTAzLCA3LCA0LCAxLCAyMjMsIDQ5LCA3NSwgNywgNCwgMSwgCi0gICAgMjIxLCAxOTUsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAxMDMsIDcsIDQsIDEsIDIwNCwgNzUsIDcsIDQsIDEsIDIyMywgNDksIAotICAgIDIwNCwgNzUsIDcsIDQsIDEsIDIyMywgNDksIDIwNCwgMTYwLCAyLCAxMDMsIDcsIDQsIDEsIDI1MCwgMCwgMjIzLCA0OSwgCi0gICAgMjA0LCA3NSwgNywgNCwgMSwgMjQ3LCAxMTksIDIzNSwgMTQ1LCAyLCA5MSwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDEwMywgCi0gICAgNywgNCwgMSwgMTE5LCAyNDMsIDIwMiwgNywgMSwgNCwgNiwgMjQzLCAyMDIsIDcsIDQsIDEsIDI0MywgMTA3LCA3LCA0LCAxLCAKLSAgICAyMjMsIDE1MSwgMjQwLCAyNDgsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjAsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDEwMywgCi0gICAgNywgNCwgMSwgMjQxLCAyMDgsIDIsIDEwMywgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE4NSwgCi0gICAgNywgMSwgNCwgNiwgNzMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzMsIDE0OSwgCi0gICAgMiwgMjUyLCA0MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjMzLCAxLCA3LCA0LCAxLCAKLSAgICAyMTUsIDk0LCAxOTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIzMiwgNTAsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjMyLCAKLSAgICA1MCwgMiwgMTAzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCA0MywgMTAzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMjMsIDU1LCAKLSAgICAxMDMsIDcsIDEsIDQsIDYsIDIzMCwgMjUsIDcsIDQsIDEsIDI1MiwgMTM0LCA3NiwgNywgMSwgNCwgNiwgMjI2LCAyMzQsIDcsIAotICAgIDQsIDEsIDI1MCwgMCwgMjI2LCAyMDEsIDcsIDQsIDEsIDIyNSwgMTMzLCA3LCA0LCAxLCAyMTUsIDk0LCAxNTMsIDcsIDQsIAotICAgIDEsIDIxNSwgOTQsIDIyMywgMjI0LCAyLCAxOTksIDIzMywgMzYsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI0LCAyLCAKLSAgICAxMDMsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAxOTksIDIzMywgMzYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMTcsIDc3LCAKLSAgICA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjQ0LCA4NywgNywgNCwgMSwgMjIzLCA0OSwgMjIzLCAyMjQsIDIsIDI0NCwgODcsIDcsIAotICAgIDEsIDQsIDYsIDE1MywgNywgMSwgNCwgNiwgMjM1LCAxOTMsIDE1MywgNywgNCwgMSwgMjIyLCA5MiwgMiwgMTAzLCA3LCA0LCAKLSAgICAxLCAyNDUsIDc1LCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCA3LCA0LCAxLCAKLSAgICAyMTgsIDIzMSwgMjIzLCA0OSwgMjQ1LCA3NSwgNywgNCwgMSwgMjQ1LCA3NiwgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIxNSwgCi0gICAgOTQsIDIxNywgMTUyLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAxMDQsIDEzMCwgNywgCi0gICAgNCwgMSwgMjE0LCAxNTcsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCAKLSAgICA0LCAxLCAyMTUsIDk0LCAyMTIsIDk4LCA3LCA0LCAxLCAyMTUsIDk0LCAyMTEsIDExNywgNywgMSwgNCwgNiwgMjExLCAxMTcsIAotICAgIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNDksIDEwMCwgNywgNCwgCi0gICAgMSwgMjQ1LCA4LCA3LCA0LCAxLCAyNDUsIDksIDIsIDI0OSwgMTAwLCA3LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDEsIAotICAgIDIyNSwgMTM5LCAyMTMsIDEzNSwgMjQzLCAyNDksIDcsIDEsIDIzNSwgMTkzLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDEsIAotICAgIDIxOCwgMTEwLCAyNTEsIDY2LCA3LCAxLCAyNTEsIDI0NiwgMjUwLCAxMSwgNywgMSwgNCwgNiwgMjUzLCAxNTgsIDcsIDQsIAotICAgIDEsIDI1MCwgMCwgMjA0LCA3NSwgNywgMSwgNCwgNiwgMjQzLCAyMDMsIDIsIDEwMywgNywgMSwgNCwgNiwgMjQyLCA2MCwgNywgCi0gICAgNCwgMSwgMjM1LCAxNDUsIDIsIDI0OSwgMTI3LCA3LCA0LCAxLCAyMTUsIDk0LCAyMzUsIDIzLCA3LCAxLCA0LCA2LCAxNTYsIAotICAgIDcsIDQsIDEsIDIyNCwgOTcsIDIsIDEwMywgNywgMSwgMjQyLCAxODAsIDIxOCwgMTMwLCAyLCA5MSwgNywgMSwgMjIzLCA0OSwgCi0gICAgMjQyLCAxODAsIDIxOCwgMTMwLCAyLCA5MSwgNywgNCwgMSwgMjQ2LCA0MCwgMjQ3LCAyMjAsIDcsIDQsIDEsIDI0OCwgMjYsIAotICAgIDI0NywgMjIwLCA3LCA0LCAxLCAyNDYsIDQwLCAyNDcsIDIyMSwgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIxNSwgMTg1LCAKLSAgICAyNDcsIDIyMCwgNywgNCwgMSwgMjE2LCAyMzUsIDI0NywgMjIwLCA3LCA0LCAxLCAyMTcsIDI5LCAyNDcsIDIyMSwgMiwgCi0gICAgMjQ5LCAxMDAsIDcsIDQsIDEsIDI0NCwgMTM0LCAyNDcsIDIyMCwgNywgNCwgMSwgMjMyLCAxMDAsIDI0NywgMjIwLCA3LCA0LCAKLSAgICAxLCAyMzIsIDUxLCAyNDcsIDIyMCwgNywgMSwgMjUxLCAyNDYsIDIyNSwgMTgxLCA3LCAxLCAyNTEsIDI1NCwgMjI1LCAxODEsIAotICAgIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjEsIDIsIDI0NCwgODcsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjEsIDIsIDI0NCwgCi0gICAgODgsIDIyLCAyMTcsIDc3LCA1OCwgMSwgNCwgMjQyLCA2MCwgNTgsIDEsIDQsIDI0MiwgNjEsIDIsIDEwMywgNTgsIDEsIDQsIAotICAgIDIzNSwgMTQ0LCA1OCwgMSwgNCwgMTUzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMTUzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjIzLCAKLSAgICAyMjQsIDIsIDEwMywgNTgsIDEsIDQsIDYsIDIzNSwgMTkzLCAxNTMsIDU4LCAxLCA0LCAyMTIsIDk4LCA1OCwgMSwgNCwgCi0gICAgMjExLCAxMTcsIDU4LCAxLCAyMjQsIDE5MCwgNTgsIDEsIDUyLCAyMjQsIDE5MCwgNTgsIDEsIDIxNSwgOTQsIDI0OSwgMjE5LCAKLSAgICA1OCwgMSwgMjU0LCA1NywgNTgsIDEsIDIyMywgNDksIDI0OSwgMjE5LCA1OCwgMSwgNDQsIDE2MywgMjIyLCAyMzMsIDU4LCAKLSAgICAxLCA0MywgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDIyMywgNDksIDI0MiwgCi0gICAgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDQzLCAyNTMsIDI0OSwgNTgsIDEsIDQ0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMCwgMjUzLCAKLSAgICAyNDksIDU4LCAxLCAxMjQsIDI1MywgMjQ5LCA1OCwgMSwgMjUwLCAzMSwgMjU1LCAxNCwgMjUwLCAyMzQsIDU4LCAxLCA2NywgCi0gICAgMjMyLCAyMTMsIDU4LCAxLCAyMzEsIDIzMiwgNTgsIDEsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDI0MiwgMTM3LCAyNTUsIAotICAgIDE0LCA1OCwgMSwgMTIxLCA2NywgMjMyLCAyMTMsIDU4LCAxLCAxMjEsIDIzMSwgMjMyLCA1OCwgMSwgMTIxLCAyNDIsIDEzNywgCi0gICAgMjU1LCAxNCwgNTgsIDEsIDEyMSwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjE1LCAyMjIsIDI0OSwgMjI2LCA1OCwgMSwgCi0gICAgMTYzLCAyMTUsIDIyMiwgMjQ5LCAyMjYsIDU4LCAxLCAyNTAsIDE3MywgNDQsIDE2MywgMjIyLCAyMzMsIDU4LCAxLCAyNTAsIAotICAgIDE3MywgNDMsIDE2MywgMjIyLCAyMzMsIDU4LCAxLCAxMjAsIDIxNywgODcsIDU4LCAxLCAxMjQsIDIxNywgODcsIDU4LCAxLCAKLSAgICA5NiwgNTAsIDU4LCAxLCAyMzAsIDE4MiwgNTAsIDI1MSwgMTQ2LCA1OSwgNDgsIDIyMiwgMjM0LCA0OCwgMjI2LCAyMjQsIDQsIAotICAgIDE4MiwgNTIsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDIyMywgMzYsIDEwMywgNTgsIDEsIDI0OSwgMTMxLCAyNTUsIDE0LCAKLSAgICA1OCwgMSwgNCwgMjQzLCAxMDcsIDU4LCAxLCA0LCAxNTYsIDU4LCAxLCA0LCAyMjIsIDkxLCA1OCwgMSwgNCwgMjExLCAxNzgsIAotICAgIDU4LCAxLCA0LCAyMjMsIDQ5LCAyNDIsIDE4MCwgMjE4LCAxMjksIDU4LCAxLCAyNDUsIDIwLCAxMzgsIDEzMCwgNTgsIDEsIAotICAgIDEyNSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIyNSwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDEzOCwgMTMwLCA1OCwgMSwgCi0gICAgMjQ1LCAxOSwgMTM4LCAxMzAsIDU4LCAxLCAyMTAsIDI1NCwgMjQ4LCA0NCwgMTM4LCA3OCwgNTgsIDEsIDIxMSwgNzAsIAotICAgIDI0OCwgNDQsIDEzOCwgNzgsIDU4LCAxLCAyMTMsIDEzMywgNTgsIDEsIDIxNCwgMTg2LCA1OCwgMSwgNTIsIDI1NCwgNTcsIAotICAgIDU4LCAxLCAxMjEsIDEyNCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDEyMCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDQzLCAKLSAgICAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgNDQsIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCAyMjIsIDIzMywgNTgsIDEsIDIzMCwgCi0gICAgMjI0LCAyNDIsIDEzNywgMjU1LCAxNCwgNTgsIDEsIDIzMCwgMjI0LCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDU4LCAxLCAKLSAgICAyMzAsIDIyNCwgNTIsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDEyMSwgMTgyLCA1OCwgMSwgMjIzLCAxNTcsIDI0OSwgCi0gICAgMjI2LCA1OCwgMSwgMjUyLCA1OCwgMTI1LCAyMTYsIDMwLCA1OCwgMSwgMjQ1LCAxNDMsIDEyNSwgMjE2LCAzMCwgNTgsIDEsIAotICAgIDI1MiwgNTgsIDEyMSwgMjE2LCAzMCwgNTgsIDEsIDI0NSwgMTQzLCAxMjEsIDIxNiwgMzAsIDU4LCAxLCAyMjAsIDU0LCA1OCwgCi0gICAgMSwgMjA0LCAyMjAsIDU0LCA1OCwgMSwgMTIxLCA0MywgNzQsIDM4LCAyNDIsIDEzNywgMjU1LCAxNCwgMzgsIDI1NSwgMywgCi0gICAgMjU1LCAxNCwgMzgsIDI1MCwgMzEsIDI1NSwgMTQsIDM4LCAxODIsIDM4LCAyMzEsIDIzMiwgMzgsIDIyNiwgMTE5LCAzOCwgCi0gICAgMjUxLCAxNDYsIDM4LCA1OSwgNDgsIDM4LCAyNDgsIDEsIDM4LCAyNDEsIDUyLCA0OCwgMzgsIDIyMiwgMjM0LCA0OCwgMzgsIAotICAgIDUyLCAyNTUsIDMsIDI1NSwgMTQsIDM4LCAyNTAsIDIzNCwgMzgsIDY3LCAyMzIsIDIxNCwgNDgsIDM4LCA1MiwgNjcsIDIzMiwgCi0gICAgMjE0LCA0OCwgMzgsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgMzgsIDI1MCwgMjU1LCAzOCwgMjM1LCAxOTMsIDI1MSwgMTQ2LCAKLSAgICAzOCwgMjE1LCA5NCwgMjQ5LCAyMjAsIDQ4LCAzOCwgMjQ5LCAyMjAsIDQ4LCAzOCwgMjIzLCA0OSwgMjQ5LCAyMjAsIDQ4LCAKLSAgICAzOCwgMjQ5LCAyMjAsIDc3LCAyMjIsIDI1MSwgMzgsIDI0MiwgMTM3LCAyNTUsIDE1LCA1MSwgMzgsIDI1NSwgMywgMjU1LCAKLSAgICAxNSwgNTEsIDM4LCA0MywgMjE3LCA4OCwgNTEsIDM4LCA0NCwgMjE3LCA4OCwgNTEsIDM4LCA0MywgMjU0LCAxMTAsIDQ4LCAKLSAgICAzOCwgMjQwLCAyNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNCwgNTEsIDM4LCAxMjAsIDIxNywgODgsIDUxLCAzOCwgMTI0LCAKLSAgICAyMTcsIDg4LCA1MSwgMzgsIDk2LCA1LCA1MSwgMzgsIDIzMCwgMTgyLCA1LCA1MSwgMzgsIDIyNiwgNjQsIDI0MSwgNTIsIAotICAgIDUxLCAzOCwgMjIzLCA1NSwgMjQxLCA1MiwgNTEsIDM4LCA1OSwgNTEsIDM4LCAyNDgsIDIsIDUxLCAzOCwgMjIyLCAyMzQsIAotICAgIDUxLCAzOCwgMjQ5LCAyMjAsIDUxLCAzOCwgMjUwLCAxODMsIDM4LCAyMjYsIDIyNCwgMzgsIDY3LCAyMzIsIDIxNCwgNTEsIAotICAgIDM4LCAyNTEsIDE0MCwgNTEsIDM4LCAyMzUsIDE5MywgNTIsIDI1NCwgMjQsIDUxLCAzOCwgMjUwLCAyMzUsIDUxLCAzOCwgCi0gICAgMjUwLCAzMSwgMjU1LCAxNSwgNTEsIDM4LCAyNTEsIDE0NywgNTEsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDcsIDUxLCAzOCwgCi0gICAgMjE2LCA4OSwgNTEsIDM4LCAyMzEsIDIzMywgNTEsIDM4LCAxMjEsIDIzMiwgMjEzLCAzOCwgNTIsIDEyMSwgMjMyLCAyMTMsIAotICAgIDM4LCAyMTYsIDg5LCAyMjYsIDEyMCwgMzgsIDIxOSwgMjUxLCAyMTgsIDEwMywgMjI2LCAxMjAsIDM4LCAxOTksIDIxOCwgCi0gICAgMTAzLCAyMjYsIDEyMCwgMzgsIDIxOSwgMjUxLCAyMTksIDQ3LCAyMjYsIDEyMCwgMzgsIDE5OSwgMjE5LCA0NywgMjI2LCAKLSAgICAxMjAsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNCwgNTEsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDAsIDUxLCAzOCwgNDIsIDUxLCAKLSAgICAzOCwgMjIxLCAxODAsIDUxLCAzOCwgMjExLCAxNzksIDQ4LCAzOCwgNjcsIDE4MiwgMzgsIDUyLCAyMjYsIDExOSwgMzgsIAotICAgIDI0MiwgMTM3LCAxMzgsIDc4LCAzOCwgMjU1LCAzLCAxMzgsIDc4LCAzOCwgMjYsIDIyNSwgMTc1LCAzOCwgMjYsIDIzNCwgMiwgCi0gICAgMzgsIDI2LCAyNDcsIDI1MiwgMjE2LCAxOCwgMzgsIDI2LCAyMTAsIDIxOSwgMzgsIDI1MSwgMTQwLCA0OCwgMzgsIDI0NSwgCi0gICAgOTgsIDUsIDUxLCAzOCwgNTIsIDY3LCAyMzIsIDIxNCwgNTEsIDM4LCA0MywgMjU0LCAxMTAsIDUxLCAzOCwgMjI4LCA1MiwgCi0gICAgMjE2LCA4OSwgNDgsIDM4LCAyNDEsIDU4LCA0OCwgMzgsIDI1NCwgMTQ4LCAxMjgsIDIxNiwgNDIsIDQ4LCAzOCwgNDMsIDQ0LCAKLSAgICA4MCwgNTEsIDM4LCAyMTQsIDE1MywgODAsIDUxLCAzOCwgMjQyLCAxNDIsIDIzNSwgNjMsIDM4LCA0NCwgMjUzLCAyNTAsIAotICAgIDQ4LCAzOCwgNDMsIDE2MywgMjIyLCAyMzQsIDQ4LCAzOCwgMjQ0LCAxMzEsIDM4LCAyMTEsIDE3OSwgNTEsIDM4LCA0MywgCi0gICAgMjUzLCAyNTAsIDUxLCAzOCwgNDQsIDI1MywgMjUwLCA1MSwgMzgsIDQ0LCAyNTMsIDI1MCwgMjIsIDEyMCwgMjUzLCAyNTAsIAotICAgIDUxLCAzOCwgNDQsIDE2MywgMjIyLCAyMzQsIDQ4LCAzOCwgNTksIDc3LCAyMjIsIDI1MSwgMzgsIDI1MywgMjE3LCA1MSwgCi0gICAgMzgsIDUyLCAyMjIsIDIzNCwgNTEsIDM4LCAyMTAsIDM1LCA0OCwgMzgsIDUyLCAyNTEsIDE0NywgNTEsIDM4LCA1MiwgMjUxLCAKLSAgICAxNDYsIDM4LCA1MiwgMjMxLCAyMzIsIDM4LCA1MiwgMjMxLCAyMzMsIDUxLCAzOCwgNTIsIDE4MiwgMzgsIDUyLCAyMzUsIAotICAgIDE5MywgMjUxLCAxNDYsIDM4LCA1MiwgOTcsIDgwLCA1MSwgMzgsIDcsIDQsIDEsIDYxLCAzOCwgNywgNCwgMSwgNzUsIDM4LCAKLSAgICA3LCA0LCAxLCA3MywgMzgsIDcsIDQsIDEsIDc2LCAzOCwgNywgNCwgMSwgNzAsIDM4LCA3LCA0LCAxLCAyNTEsIDY2LCAzOCwgCi0gICAgNywgNCwgMSwgMjQ5LCA2MCwgMzgsIDcsIDQsIDEsIDI0MiwgNjAsIDM4LCA3LCA0LCAxLCAxOTMsIDM4LCA3LCA0LCAxLCAKLSAgICAxNTMsIDM4LCA3LCA0LCAxLCAyMTcsIDE1MiwgMzgsIDcsIDQsIDEsIDIxNCwgMTA1LCAzOCwgNywgNCwgMSwgMjExLCAxNzgsIAotICAgIDI2LCA2LCAxLCAyNDEsIDE5NiwgMjYsIDQsIDEsIDI0MSwgMTk2LCAyNiwgNiwgMSwgMjU0LCAyMywgMjIxLCAyNDYsIDI2LCAKLSAgICA0LCAxLCAyNTQsIDIzLCAyMjEsIDI0NiwgMjYsIDIyNywgMTk4LCA1MCwgMjYsIDIzMiwgMTA4LCAyMjcsIDE5OCwgNTAsIAotICAgIDI2LCA2LCAxLCAyMjYsIDUxLCAyNDcsIDIyNywgMjYsIDQsIDEsIDIyNiwgNTEsIDI0NywgMjI3LCAyNiwgMjEwLCAyMTksIAotICAgIDI2LCA0LCAyMjMsIDQ5LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA0LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAKLSAgICAxNzgsIDg3LCAyNiwgNCwgMjIzLCA0OSwgMjQ2LCAxMTgsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDIyNCwgMTMsIAotICAgIDc4LCAyNiwgMjE2LCAxOCwgMjYsIDI0NywgMjUyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIxNiwgMTgsIAotICAgIDI2LCAyNTQsIDk3LCAyMTcsIDIsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI0NSwgNjQsIAotICAgIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMTYsIAotICAgIDE4LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAxOCwgMjYsIAotICAgIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MiwgMjIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNTQsIDE0MywgMjYsIDYsIDEsIAotICAgIDI1MiwgMjYsIDI2LCA2LCAxLCAyNDMsIDEwNywgMjYsIDYsIDEsIDI0OCwgNTQsIDI2LCA2LCAxLCAyNDUsIDEwMCwgMjYsIAotICAgIDYsIDEsIDIxMCwgODUsIDI2LCA2LCAxLCAyNDUsIDYzLCAyNiwgNiwgMSwgMjE2LCAxNzksIDI2LCA2LCAxLCAyMzUsIDE4NSwgCi0gICAgMjYsIDYsIDEsIDIzNCwgMjIyLCAyNiwgNiwgMSwgMjMzLCA5OCwgMjYsIDYsIDEsIDIzMCwgMTAyLCAyNiwgNiwgMSwgMjI3LCAKLSAgICAyMzcsIDI2LCA2LCAxLCAyMTEsIDE1NywgMjYsIDYsIDEsIDIyNiwgMTk5LCAyNiwgNiwgMSwgMjI1LCAxMDgsIDI2LCA2LCAKLSAgICAxLCAyMjMsIDM3LCAyNiwgNiwgMSwgMjE5LCAxNzcsIDI2LCA2LCAxLCAyMTcsIDQxLCAyNiwgNiwgMSwgMjE0LCAxNTcsIAotICAgIDI2LCA2LCAxLCAyMjUsIDEzMywgMjYsIDYsIDEsIDI1MCwgMTEwLCAyNiwgNiwgMSwgMjI0LCAxNjEsIDI2LCA2LCAxLCAKLSAgICAyMjYsIDIwMSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIAotICAgIDI1MSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIxNiwgMTgsIDI2LCAKLSAgICA0LCAxLCAyNDUsIDY0LCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMTQsIAotICAgIDE1OCwgMiwgMjQ3LCAyNTIsIDIyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjU0LCAxNDMsIDI2LCA0LCAxLCAyNTIsIDI2LCAyNiwgCi0gICAgNCwgMSwgMjQzLCAxMDcsIDI2LCA0LCAxLCAyNDgsIDU0LCAyNiwgNCwgMSwgMjQ1LCAxMDAsIDI2LCA0LCAxLCAyMTAsIDg1LCAKLSAgICAyNiwgNCwgMSwgMjQ1LCA2MywgMjYsIDQsIDEsIDIxNiwgMTc5LCAyNiwgNCwgMSwgMjM1LCAxODUsIDI2LCA0LCAxLCAyMzQsIAotICAgIDIyMiwgMjYsIDQsIDEsIDIzMywgOTgsIDI2LCA0LCAxLCAyMzAsIDEwMiwgMjYsIDQsIDEsIDIyNywgMjM3LCAyNiwgNCwgMSwgCi0gICAgMjExLCAxNTcsIDI2LCA0LCAxLCAyMjYsIDE5OSwgMjYsIDQsIDEsIDIyNSwgMTA4LCAyNiwgNCwgMSwgMjIzLCAzNywgMjYsIAotICAgIDQsIDEsIDQwLCAyMTksIDE3NywgMjYsIDQsIDEsIDIxOSwgMTc3LCAyNiwgNCwgMSwgMjE3LCA0MSwgMjYsIDQsIDEsIDIxNCwgCi0gICAgMTU3LCAyNiwgNCwgMSwgMjI1LCAxMzMsIDI2LCA0LCAxLCAyNTAsIDExMCwgMjYsIDQsIDEsIDIyNCwgMTYxLCAyNiwgNCwgCi0gICAgMSwgMjI2LCAyMDEsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTEsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAKLSAgICAyNTEsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTYsIDE4LCAyNiwgCi0gICAgNCwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgMTgsIDI2LCA2LCAyMzQsIDI0NywgODcsIDI2LCAyNTIsIDI3LCA4NywgMjYsIAotICAgIDIxNiwgMTgwLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNDEsIDUyLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNTUsIDMsIDIyLCAKLSAgICAyNDEsIDUyLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNDgsIDIsIDIyLCAyNDEsIDUyLCA4NywgMjYsIDIyNSwgMTM0LCA4NywgCi0gICAgMjYsIDIyNSwgMTA5LCA4NywgMjYsIDIzNCwgMjQ3LCA4NywgMjYsIDEsIDI1NCwgMjMsIDIzNCwgNiwgMjYsIDQsIDEsIAotICAgIDI1NCwgMjMsIDIzNCwgNiwgMjYsIDEsIDIxOCwgMTM3LCAyNiwgNCwgMSwgMjE4LCAxMzcsIDI2LCAxLCAyNDcsIDIyNywgCi0gICAgMjYsIDQsIDEsIDI0NywgMjI3LCAyNiwgMSwgMjM0LCA2LCAyNiwgNCwgMSwgMjM0LCA2LCAyNiwgMSwgMjIxLCAyNDYsIDI2LCAKLSAgICA0LCAxLCAyMjEsIDI0NiwgODEsIDYsIDEsIDIyMCwgNTUsIDgxLCA0LCAxLCAyMjAsIDU1LCA4MSwgNiwgMSwgMjQ0LCAxNDAsIAotICAgIDgxLCA0LCAxLCAyNDQsIDE0MCwgODEsIDYsIDEsIDIzNCwgMTE3LCA4MSwgNCwgMSwgMjM0LCAxMTcsIDgxLCA2LCAxLCAKLSAgICAyNDEsIDQ1LCA4MSwgNCwgMSwgMjQxLCA0NSwgODEsIDYsIDEsIDI0MywgMTAyLCA4MSwgNCwgMSwgMjQzLCAxMDIsIDgxLCAKLSAgICA2LCAxLCAyMjAsIDIyLCA4MSwgNCwgMSwgMjIwLCAyMiwgODEsIDYsIDEsIDI0OCwgNjksIDgxLCA0LCAxLCAyNDgsIDY5LCAKLSAgICAyNiwgMjM0LCAyMjMsIDg3LCAyNiwgMjIzLCAzOCwgODcsIDI2LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCAxLCAyMTAsIAotICAgIDIyNCwgMjYsIDYsIDIxNiwgMTgwLCA4NywgMjYsIDIzMiwgODMsIDI0NSwgMTAxLCA4NywgMjYsIDIyMywgNDksIDIzMiwgCi0gICAgODMsIDI0NSwgMTAxLCA4NywgMjYsIDYsIDEsIDIyMCwgNywgMjYsIDQsIDEsIDIyMCwgNywgMjYsIDYsIDIzMiwgODMsIAotICAgIDIxOSwgMTc4LCA4NywgMjYsIDYsIDEsIDIyMSwgMjQzLCAyNiwgNCwgMSwgMjIxLCAyNDMsIDI2LCAyMjMsIDM4LCAyLCAKLSAgICAyMTgsIDEwMywgODcsIDI2LCA2LCAyMjMsIDQ5LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA2LCAyNDYsIDExOCwgCi0gICAgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMjIzLCA0OSwgMjQ2LCAxMTgsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgCi0gICAgMzMsIDYsIDEsIDIzNiwgNjEsIDIsIDI0MiwgMTM2LCAzMywgNiwgMSwgMjM1LCAxODksIDMzLCA2LCAxLCAyNDcsIDE2MiwgCi0gICAgMzMsIDYsIDEsIDI0MiwgMTg3LCAzMywgNiwgMSwgMjE0LCAyMDIsIDIzNiwgNjAsIDMzLCA2LCAxLCAyNDYsIDM2LCAzMywgCi0gICAgNiwgMSwgMjUxLCA3NiwgNzMsIDMzLCA2LCAxLCAyMTEsIDgsIDMzLCA2LCAxLCAyMzUsIDEyNiwgMzMsIDYsIDEsIDIzMiwgCi0gICAgMTg3LCAzMywgNiwgMSwgMjI4LCAxNzgsIDMzLCA2LCAxLCAyMTUsIDE3NCwgMzMsIDYsIDEsIDIzNCwgNDgsIDMzLCA2LCAxLCAKLSAgICAyNDAsIDE1NCwgMiwgMjQyLCAxMzYsIDMzLCA2LCAxLCAyMTksIDI1MSwgNzAsIDMzLCA2LCAxLCAyNDYsIDMyLCAzMywgNiwgCi0gICAgMSwgNjEsIDMzLCA2LCAxLCAyNTIsIDc1LCAzMywgNiwgMSwgMjEzLCAyNTUsIDMzLCA2LCAxLCAyNDIsIDIzNiwgMzMsIDYsIAotICAgIDEsIDI0OCwgOTAsIDMzLCA2LCAxLCAyMzYsIDYwLCAzMywgNiwgMSwgMjEwLCA3NCwgMzMsIDYsIDEsIDIxMCwgOTQsIDMzLCAKLSAgICA2LCAxLCA3MywgMzMsIDYsIDEsIDIxOSwgMjUxLCA3MywgMzMsIDYsIDEsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTc0LCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDMzLCA2LCAxLCAyNDUsIDE1MCwgMzMsIDYsIDEsIDc2LCAzMywgNiwgMSwgMjI1LCAyMjEsIDMzLCAKLSAgICA2LCAxLCAyNDUsIDkyLCAzMywgNiwgMSwgMjQ1LCA4MiwgMzMsIDYsIDEsIDIxNywgMjIsIDMzLCA2LCAxLCA3MCwgMzMsIDYsIAotICAgIDEsIDI0NSwgMjAyLCAzMywgNiwgMSwgMTYyLCAzMywgNiwgMSwgMjE1LCAxNzgsIDMzLCA2LCAxLCAyNTAsIDEzMSwgMzMsIAotICAgIDYsIDEsIDIyMCwgMTAyLCAzMywgNiwgMSwgMjIwLCA2NSwgMzMsIDYsIDEsIDI0MiwgMywgNTAsIDMzLCA2LCAxLCAyMTEsIAotICAgIDI3LCAzMywgNiwgMSwgMjE5LCA1MiwgNTAsIDMzLCA2LCAxLCA3NSwgMzMsIDYsIDEsIDIxMCwgMjEyLCAzMywgNiwgMSwgCi0gICAgMTkxLCAzMywgNCwgMSwgNjEsIDMzLCA0LCAxLCAyNTIsIDc1LCAzMywgNCwgMSwgMjEzLCAyNTUsIDMzLCA0LCAxLCAyNDIsIAotICAgIDIzNiwgMzMsIDQsIDEsIDI0OCwgOTAsIDMzLCA0LCAxLCAyMzYsIDYwLCAzMywgNCwgMSwgMjEwLCA3NCwgMzMsIDQsIDEsIAotICAgIDIxMCwgOTQsIDMzLCA0LCAxLCA3MywgMzMsIDQsIDEsIDIxOSwgMjUxLCA3MywgMzMsIDQsIDEsIDE3NiwgMzMsIDQsIDEsIAotICAgIDI0NSwgMTc0LCAzMywgNCwgMSwgMjQ1LCAxNTksIDMzLCA0LCAxLCAyNDUsIDE1MCwgMzMsIDQsIDEsIDc2LCAzMywgNCwgMSwgCi0gICAgMjI1LCAyMjEsIDMzLCA0LCAxLCAyNDUsIDkyLCAzMywgNCwgMSwgMjQ1LCA4MiwgMzMsIDQsIDEsIDIxNywgMjIsIDMzLCA0LCAKLSAgICAxLCA3MCwgMzMsIDQsIDEsIDI0NSwgMjAyLCAzMywgNCwgMSwgMTYyLCAzMywgNCwgMSwgMjE1LCAxNzgsIDMzLCA0LCAxLCAKLSAgICAyNTAsIDEzMSwgMzMsIDQsIDEsIDIyMCwgMTAyLCAzMywgNCwgMSwgMjIwLCA2NSwgMzMsIDQsIDEsIDI0MiwgMywgNTAsIAotICAgIDMzLCA0LCAxLCAyMTEsIDI3LCAzMywgNCwgMSwgMjE5LCA1MiwgNTAsIDMzLCA0LCAxLCA3NSwgMzMsIDQsIDEsIDIxMCwgCi0gICAgMjEyLCAzMywgNCwgMSwgMTkxLCAzMywgNCwgMSwgMjM2LCA2MSwgMiwgMjQyLCAxMzYsIDMzLCA0LCAxLCAyMzUsIDE4OSwgCi0gICAgMzMsIDQsIDEsIDI0NywgMTYyLCAzMywgNCwgMSwgMjQyLCAxODcsIDMzLCA0LCAxLCAyMTQsIDIwMiwgMjM2LCA2MCwgMzMsIAotICAgIDQsIDEsIDI0NiwgMzYsIDMzLCA0LCAxLCAyNTEsIDc2LCA3MywgMzMsIDQsIDEsIDIxMSwgOCwgMzMsIDQsIDEsIDIzNSwgCi0gICAgMTI2LCAzMywgNCwgMSwgMjMyLCAxODcsIDMzLCA0LCAxLCAyMjgsIDE3OCwgMzMsIDQsIDEsIDIxNSwgMTc0LCAzMywgNCwgCi0gICAgMSwgMjM0LCA0OCwgMzMsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDIsIDEzNiwgMzMsIDQsIDEsIDIxOSwgMjUxLCA3MCwgMzMsIAotICAgIDQsIDEsIDI0NiwgMzIsIDMzLCA2LCAxLCAyMjYsIDIwMSwgMzMsIDQsIDEsIDIyNiwgMjAxLCAzMywgNiwgMSwgMjExLCA1OSwgCi0gICAgMzMsIDQsIDEsIDIxMSwgNTksIDMzLCA2LCAxLCAyMzUsIDE4MywgNzUsIDMzLCA0LCAxLCAyMzUsIDE4MywgNzUsIDMzLCA2LCAKLSAgICAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA2LCAxLCAyMzUsIDE4MywgCi0gICAgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxODMsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIAotICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAKLSAgICAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE4MywgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNiwgMSwgCi0gICAgMjMzLCAyMzMsIDMzLCA0LCAxLCAyMzMsIDIzMywgMzMsIDYsIDEsIDIyNCwgMTYxLCAzMywgNCwgMSwgMjI0LCAxNjEsIDMzLCAKLSAgICA2LCAxLCAyNDQsIDgyLCAzMywgNCwgMSwgMjQ0LCA4MiwgMzMsIDYsIDEsIDIzNSwgMTQ2LCAzMywgNCwgMSwgMjM1LCAxNDYsIAotICAgIDMzLCA2LCAxLCAyMzUsIDE0NywgMiwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCAzMywgNCwgMSwgMjM1LCAxNDcsIDIsIDUyLCAKLSAgICAyNDIsIDEzNywgMjU1LCAxNCwgMzMsIDYsIDEsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjE0LCAyMDUsIDMzLCA2LCAxLCAyMjIsIAotICAgIDE4NSwgMjI2LCAyMDEsIDMzLCA0LCAxLCAyMjIsIDE4NSwgMjI2LCAyMDEsIDMzLCA2LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAKLSAgICA2NSwgMzMsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDY1LCAzMywgNiwgMSwgMjI2LCAxNDAsIDMzLCA0LCAxLCAyMjYsIAotICAgIDE0MCwgMzMsIDYsIDEsIDIzNCwgNiwgMzMsIDQsIDEsIDIzNCwgNiwgMzMsIDIxNiwgMTQ2LCA1MCwgMzgsIDMzLCAyMTYsIAotICAgIDY1LCAzOCwgMzMsIDIyNiwgNjUsIDM4LCAzMywgMjQ4LCAxNTQsIDIyNSwgMTgsIDM4LCAzMywgMjI0LCAxNTUsIDIyNSwgCi0gICAgMTgsIDM4LCAzMywgMjI1LCAzLCAzOCwgMzMsIDI0MCwgMjExLCAyMTYsIDE0NiwgNTAsIDM4LCAzMywgMjMwLCAxOTEsIDUwLCAKLSAgICAzMywgNiwgMSwgMjE5LCAyNTEsIDI0MCwgMTU0LCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjE5LCAyNTEsIDI0MCwgMTU0LCAKLSAgICAyLCAyMTcsIDc3LCAzMywgNiwgMSwgMjIwLCAxNDYsIDUwLCAzMywgNCwgMSwgMjIwLCAxNDYsIDUwLCAzMywgNiwgMSwgCi0gICAgMjQ1LCA5MywgMiwgMjE2LCAxMTQsIDMzLCA0LCAxLCAyNDUsIDkzLCAyLCAyMTYsIDExNCwgMzMsIDYsIDEsIDI0MiwgMjM3LCAKLSAgICAyLCAyMTQsIDE1NiwgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyMTQsIDE1NiwgMzMsIDYsIDEsIDI0MiwgMjM3LCAyLCA5MSwgCi0gICAgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCA5MSwgMzMsIDYsIDEsIDI0MiwgMjM3LCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgCi0gICAgMSwgMjQyLCAyMzcsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgCi0gICAgMjEwLCA3NSwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxMCwgOTUsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAKLSAgICAyNDgsIDM5LCAzMywgNiwgMSwgMjM1LCAxMywgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDI0OCwgMzksIAotICAgIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCA2NywgOTEsIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAKLSAgICAyMzUsIDEzLCAyLCA5MSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDkxLCAzMywgNiwgMSwgMjUyLCAxMjQsIDE3NiwgMzMsIDQsIAotICAgIDEsIDI1MiwgMTI0LCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE1MSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAKLSAgICAyNDgsIDM5LCAzMywgNiwgMjcsIDI0NSwgMTUxLCAyNDIsIDIzNiwgMzMsIDQsIDI3LCAyNDUsIDE1MSwgMjQyLCAyMzYsIAotICAgIDMzLCA2LCAxLCAyMjUsIDIyMiwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDIyNSwgMjIyLCAyLCAyMzAsIDIyNCwgCi0gICAgMTAzLCAzMywgNiwgMSwgMjU1LCAyMCwgMTYyLCAzMywgNCwgMSwgMjU1LCAyMCwgMTYyLCAzMywgNiwgMSwgMjQ1LCA4MywgCi0gICAgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0NSwgODMsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMTcsIDIzLCAyLCAyNDgsIDM5LCAKLSAgICAzMywgNCwgMSwgMjE3LCAyMywgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxOCwgMTIxLCA3MCwgMzMsIDQsIDEsIDIxOCwgCi0gICAgMTIxLCA3MCwgMzMsIDYsIDEsIDIxOCwgMTIxLCAxMDQsIDIsIDkxLCAzMywgNCwgMSwgMjE4LCAxMjEsIDEwNCwgMiwgOTEsIAotICAgIDMzLCA2LCAxLCAyNDIsIDQ5LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgMjQ4LCAzOSwgMzMsIDYsIDI3LCAKLSAgICAyMTcsIDIzLCAyMTUsIDE3OCwgMzMsIDQsIDI3LCAyMTcsIDIzLCAyMTUsIDE3OCwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCAKLSAgICAyNDgsIDM5LCAzMywgNCwgMSwgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyNTAsIDEzMiwgMiwgNjcsIDkxLCAKLSAgICAzMywgNCwgMSwgMjUwLCAxMzIsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIDIyMCwgMzMsIDMzLCA0LCAxLCAyMjAsIDMzLCAzMywgCi0gICAgNiwgMSwgMjU1LCAyMCwgMjUwLCAxMzEsIDMzLCA0LCAxLCAyNTUsIDIwLCAyNTAsIDEzMSwgMzMsIDYsIDEsIDI1NSwgMjAsIAotICAgIDI1MCwgMTMyLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjU1LCAyMCwgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCAxLCAKLSAgICAyMjYsIDU4LCAzMywgNiwgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNDYsIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNTEsIDE0NiwgCi0gICAgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDEwMywgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDEwMywgMzMsIDYsIDEsIDI0NSwgMTc1LCAKLSAgICAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyNDUsIDE1MSwgMiwgMTAzLCAKLSAgICAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIDEwMywgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgCi0gICAgMjQ1LCAxNTEsIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyMzQsIDEyNywgMjUwLCAxMzEsIDMzLCA0LCAxLCAyMzQsIDEyNywgCi0gICAgMjUwLCAxMzEsIDMzLCA2LCAxLCAyNDUsIDE2MCwgMiwgMjE3LCA3NywgMzMsIDQsIDEsIDI0NSwgMTYwLCAyLCAyMTcsIDc3LCAKLSAgICAzMywgNCwgMSwgMjI2LCA1OCwgMzMsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDYsIDMzLCA0LCAxLCAxMTUsIDIsIDI1MSwgCi0gICAgMTQ2LCAzMywgNiwgMSwgMTE1LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAxMTUsIDIsIDI0OCwgMSwgMzMsIDYsIDI3LCAxMTUsIAotICAgIDIzNiwgNjAsIDMzLCA0LCAyNywgMTE1LCAyMzYsIDYwLCAzMywgNiwgMSwgMjM2LCA2MSwgMiwgMjUxLCAxNDYsIDMzLCA0LCAKLSAgICAxLCAyMzYsIDYxLCAyLCAyNTEsIDE0NiwgMzMsIDYsIDEsIDIyMSwgMTk1LCAzMywgNCwgMSwgMjIxLCAxOTUsIDMzLCA2LCAKLSAgICAxLCAyMjEsIDE5NiwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjIxLCAxOTYsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDIxMCwgNzUsIAotICAgIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDIxMCwgOTUsIDIsIDI0OCwgMSwgCi0gICAgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDI1NSwgMjAsIDI0NiwgMzYsIDMzLCA0LCAxLCAyNTUsIAotICAgIDIwLCAyNDYsIDM2LCAzMywgNiwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgMjMyLCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgCi0gICAgMjMyLCAzMywgNiwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDMzLCA2LCAKLSAgICAxLCAxNDQsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjUyLCAxMzQsIDc2LCAzMywgCi0gICAgNCwgMSwgMjUyLCAxMzQsIDc2LCAzMywgNiwgMSwgMjUyLCAxMzQsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjUyLCAKLSAgICAxMzQsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMTYwLCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAxNjAsIDIsIDI0OCwgMSwgCi0gICAgMzMsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDMzLCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMyLCAzMywgNiwgMSwgMTA0LCAyLCAKLSAgICAyNDgsIDEsIDMzLCA0LCAxLCAxMDQsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDEwNCwgMiwgNTIsIDE0MiwgMzMsIDQsIDEsIAotICAgIDEwNCwgMiwgNTIsIDE0MiwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgCi0gICAgMjQ4LCAxLCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgMjQ4LCAzOSwgCi0gICAgMzMsIDYsIDEsIDIxMSwgMjgsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDIxMSwgMjgsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIAotICAgIDI0MiwgMjM3LCAyLCAyMTgsIDEwMywgMjIsIDEwMywgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyMTgsIDEwMywgMjIsIDEwMywgCi0gICAgMzMsIDYsIDEsIDI0MiwgNDksIDIsIDEwMywgMzMsIDQsIDEsIDI0MiwgNDksIDIsIDEwMywgMzMsIDYsIDEsIDI0MiwgNDksIAotICAgIDIsIDkxLCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgOTEsIDMzLCA2LCAxLCAyMzQsIDE0LCAyNDgsIDkwLCAzMywgNCwgMSwgCi0gICAgMjM0LCAxNCwgMjQ4LCA5MCwgMzMsIDYsIDEsIDIzNCwgMTQsIDI0NywgMTYyLCAzMywgNCwgMSwgMjM0LCAxNCwgMjQ3LCAKLSAgICAxNjIsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTAsIDI3LCAzMywgNCwgMSwgMjM0LCAxNCwgMjEwLCAyNywgMzMsIDYsIDEsIAotICAgIDIzNCwgMTQsIDI0NiwgMzAsIDMzLCA0LCAxLCAyMzQsIDE0LCAyNDYsIDMwLCAzMywgNiwgMSwgMjM0LCAxNCwgMjMyLCAKLSAgICAxODcsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMzIsIDE4NywgMzMsIDYsIDEsIDIzNCwgMTQsIDIyOCwgMTc4LCAzMywgNCwgMSwgCi0gICAgMjM0LCAxNCwgMjI4LCAxNzgsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTksIDEwOSwgMzMsIDQsIDEsIDIzNCwgMTQsIDIxOSwgCi0gICAgMTA5LCAzMywgNiwgMSwgMjM0LCAxNCwgMjE2LCA2MCwgMzMsIDQsIDEsIDIzNCwgMTQsIDIxNiwgNjAsIDMzLCA2LCAxLCAKLSAgICAyMjMsIDQ5LCAyMTAsIDk0LCAzMywgNCwgMSwgMjIzLCA0OSwgMjEwLCA5NCwgMzMsIDYsIDEsIDI0NSwgMTc1LCAyLCAxMDMsIAotICAgIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMTAzLCAzMywgNiwgMSwgMjMyLCAyNTQsIDMzLCA0LCAxLCAyMzIsIDI1NCwgMzMsIAotICAgIDYsIDEsIDIyMywgMzksIDMzLCA0LCAxLCAyMjMsIDM5LCAzMywgNiwgMSwgMjExLCA5MiwgMzMsIDQsIDEsIDIxMSwgOTIsIAotICAgIDMzLCA2LCAxLCAyMjQsIDg4LCAzMywgNCwgMSwgMjI0LCA4OCwgMzMsIDYsIDEsIDIxMiwgMjIsIDMzLCA0LCAxLCAyMTIsIAotICAgIDIyLCAzMywgNiwgMSwgMjU0LCAxNjYsIDE3NiwgMzMsIDQsIDEsIDI1NCwgMTY2LCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE3NSwgCi0gICAgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgMjQ1LCAKLSAgICAxNTEsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIAotICAgIDIyNSwgMjIyLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjI1LCAyMjIsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMjAsIDM0LCAKLSAgICAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjIwLCAzNCwgMiwgMjQ4LCAzOSwgMTUwLCA2LCAxLCAyNTMsIDE2NCwgMTUwLCA2LCAKLSAgICAxLCAyNTIsIDM5LCAxNTAsIDYsIDEsIDI0MiwgMjAzLCAxNTAsIDYsIDEsIDI0OCwgMjIxLCAxNTAsIDYsIDEsIDI0NSwgCi0gICAgMjEzLCAxNTAsIDYsIDEsIDIxMCwgMTE2LCAxNTAsIDYsIDEsIDI0NSwgMTk3LCAxNTAsIDYsIDEsIDI0NSwgNjUsIDE1MCwgCi0gICAgNiwgMSwgMTExLCAxNTAsIDYsIDEsIDIxMCwgNzQsIDE1MCwgNiwgMSwgMjM1LCAyMjcsIDE1MCwgNiwgMSwgMjMyLCAxOTAsIAotICAgIDE1MCwgNiwgMSwgMjExLCAxNjAsIDE1MCwgNiwgMSwgMjUxLCAzMywgMTUwLCA2LCAxLCAyMzQsIDE2NSwgMTUwLCA2LCAxLCAKLSAgICAyNDEsIDY4LCAxNTAsIDYsIDEsIDIzNSwgMTQxLCAxNTAsIDYsIDEsIDI0MiwgMjQ2LCAxNTAsIDYsIDEsIDI1MCwgMTI2LCAKLSAgICAxNTAsIDYsIDEsIDIzMSwgNTgsIDE1MCwgNiwgMSwgMjExLCA4LCAxNTAsIDYsIDEsIDIyOCwgMzksIDE1MCwgNiwgMSwgCi0gICAgMjIwLCAxMDIsIDE1MCwgNiwgMSwgMjEzLCAxMzgsIDE1MCwgNiwgMSwgMjUwLCAxNTcsIDE1MCwgNiwgMSwgMjI1LCAyMDUsIAotICAgIDE1MCwgNiwgMSwgMjM1LCAxMTAsIDE1MCwgNiwgMSwgMjA1LCAxNTAsIDYsIDEsIDIyMSwgMTYxLCAxNTAsIDYsIDEsIDIxMywgCi0gICAgMTc5LCAxNTAsIDYsIDEsIDIxNiwgNjIsIDE1MCwgNiwgMSwgMjIzLCA5NSwgMTUwLCA2LCAxLCAyNDksIDIzOCwgMTUwLCA2LCAKLSAgICAxLCAyMTAsIDI0OSwgMTUwLCA2LCAxLCAyMjUsIDQ2LCAxNTAsIDYsIDEsIDIzNCwgMTc2LCAxNTAsIDYsIDEsIDIyNiwgCi0gICAgMjIyLCAxNTAsIDYsIDEsIDI0NCwgMTQyLCAxNTAsIDU4LCAxLCA0MywgMTYzLCAyMjIsIDIzMywgMTUwLCAyNTQsIDU3LCAKLSAgICAxNTAsIDI0NSwgMTU0LCA3OCwgMTUwLCAyNDUsIDMxLCA3OCwgMTUwLCAyNDksIDIxOSwgMTUwLCAyMjQsIDEzLCA3OCwgCi0gICAgMTUwLCAyNTUsIDIxLCA3OCwgMTUwLCA0LCAxLCAyNTMsIDE2NCwgMTUwLCA0LCAxLCAyNTIsIDM5LCAxNTAsIDQsIDEsIAotICAgIDI0MiwgMjAzLCAxNTAsIDQsIDEsIDI0OCwgMjIxLCAxNTAsIDQsIDEsIDI0NSwgMjEzLCAxNTAsIDQsIDEsIDIxMCwgMTE2LCAKLSAgICAxNTAsIDQsIDEsIDI0NSwgMTk3LCAxNTAsIDQsIDEsIDI0NSwgNjUsIDE1MCwgNCwgMSwgMTExLCAxNTAsIDQsIDEsIDIxMCwgCi0gICAgNzQsIDE1MCwgNCwgMSwgMjM1LCAyMjcsIDE1MCwgNCwgMSwgMjMyLCAxOTAsIDE1MCwgNCwgMSwgMjExLCAxNjAsIDE1MCwgCi0gICAgNCwgMSwgMjUxLCAzMywgMTUwLCA0LCAxLCAyMzQsIDE2NSwgMTUwLCA0LCAxLCAyNDEsIDY4LCAxNTAsIDQsIDEsIDIzNSwgCi0gICAgMTQxLCAxNTAsIDQsIDEsIDI0MiwgMjQ2LCAxNTAsIDQsIDEsIDI1MCwgMTI2LCAxNTAsIDQsIDEsIDIzMSwgNTgsIDE1MCwgCi0gICAgNCwgMSwgMjExLCA4LCAxNTAsIDQsIDEsIDIyOCwgMzksIDE1MCwgNCwgMSwgMjIwLCAxMDIsIDE1MCwgNCwgMSwgMjEzLCAKLSAgICAxMzgsIDE1MCwgNCwgMSwgMjUwLCAxNTcsIDE1MCwgNCwgMSwgMjI1LCAyMDUsIDE1MCwgNCwgMSwgMjM1LCAxMTAsIDE1MCwgCi0gICAgNCwgMSwgMjA1LCAxNTAsIDQsIDEsIDIyMSwgMTYxLCAxNTAsIDQsIDEsIDIxMywgMTc5LCAxNTAsIDQsIDEsIDIxNiwgNjIsIAotICAgIDE1MCwgNCwgMSwgMjIzLCA5NSwgMTUwLCA0LCAxLCAyNDksIDIzOCwgMTUwLCA0LCAxLCAyMTAsIDI0OSwgMTUwLCA0LCAxLCAKLSAgICAyMjUsIDQ2LCAxNTAsIDQsIDEsIDIzNCwgMTc2LCAxNTAsIDQsIDEsIDIyNiwgMjIyLCAxNTAsIDQsIDEsIDI0NCwgMTQyLCAKLSAgICAxNTAsIDQsIDI3LCAyNDUsIDIxNCwgMjEwLCAyNDksIDE1MCwgMjQzLCAyMjksIDIxOCwgMTI5LCAxNTAsIDI0MCwgMTY4LCAKLSAgICAxNTAsIDI0NiwgOTUsIDUwLCA5NCwgMjU1LCAxNSwgMjQ1LCA1NywgOTQsIDI1NSwgMTUsIDIyMSwgMTYyLCA5NCwgMjU1LCAKLSAgICAxNSwgMjIwLCA4OCwgOTQsIDI1NSwgMTUsIDIxMCwgMTA0LCAyMjQsIDcxLCA5NCwgMjU1LCAxNSwgMjEwLCAxMDQsIDI0MywgCi0gICAgMTI1LCA5NCwgMjU1LCAxNSwgMjE2LCA3NSwgOTQsIDI1NSwgMTUsIDIyMywgNDcsIDk0LCAyNTUsIDE1LCAyMTAsIDEwMywgCi0gICAgOTQsIDI1NSwgMTUsIDIyNSwgMjQ1LCA5NCwgMjU1LCAxNSwgMjExLCAyMCwgOTQsIDI1NSwgMTUsIDIxNiwgMjE0LCA5NCwgCi0gICAgMjU1LCAxNSwgMjQzLCA0MSwgOTQsIDI1NSwgMTUsIDI0MywgNDIsIDIzMCwgNjksIDk0LCAyNTUsIDE1LCAyNDMsIDM5LCAKLSAgICA5NCwgMjU1LCAxNSwgMjI0LCA3MiwgMjI2LCAxNiwgOTQsIDI1NSwgMTUsIDIxNiwgMjUzLCAyNDMsIDU2LCA5NCwgMjU1LCAKLSAgICAxNSwgMjI1LCAyMjYsIDk0LCAyNTUsIDE1LCAyNTMsIDIwMCwgMjQyLCA0MSwgOTQsIDI1NSwgMTUsIDIzMCwgNzksIDk0LCAKLSAgICAyNTUsIDE1LCAyMzEsIDIwOCwgOTQsIDI1NSwgMTUsIDIzMSwgNDksIDk0LCAyNTUsIDE1LCAyMzEsIDUwLCAyMzQsIDE3NywgCi0gICAgOTQsIDI1NSwgMTUsIDI0OCwgMTYzLCA5NCwgMjU1LCAxNSwgMjI0LCA4MywgOTQsIDI1NSwgMTUsIDIxNiwgMjUzLCAyMjQsIAotICAgIDY3LCA5NCwgMjU1LCAxNSwgMjExLCAzMCwgMjUyLCA0MCwgMjEwLCAyMzAsIDk0LCAyNTUsIDE1LCAyMjYsIDIwNywgOTQsIAotICAgIDI1NSwgMTUsIDIzNiwgMTksIDk0LCAyNTUsIDE1LCAyNDgsIDcwLCA5NCwgMjU1LCAxNSwgMjEwLCAzMywgOTQsIDE2NCwgCi0gICAgMjMxLCAxNDMsIDI1MCwgMzUsIDk0LCAyMjUsIDExLCAyMjAsIDM2LCA5NCwgMjI1LCAxMSwgMjQxLCAyNTAsIDIyMSwgMTYyLCAKLSAgICA5NCwgMjI1LCAxMSwgMjQxLCAyNTAsIDIyNSwgMjM5LCA5NCwgMjI1LCAxMSwgMjQxLCAyNTAsIDIyNCwgNzYsIDk0LCAyMjUsIAotICAgIDExLCAyNDEsIDE1OCwgOTQsIDIyNSwgMTEsIDIxNSwgMTc2LCA5NCwgMjI1LCAxMSwgMjIxLCAxNjIsIDk0LCAyMjUsIDExLCAKLSAgICAyMjUsIDIzOSwgOTQsIDIyNSwgMTEsIDIyNCwgNzYsIDk0LCAyMjUsIDExLCAyNDEsIDYxLCA5NCwgMjI1LCAxMSwgMjQxLCAKLSAgICA2MiwgMjQxLCAyNTIsIDMxLCAyMTQsIDMsIDk0LCAyMjUsIDExLCAyMjQsIDE3LCA5NCwgMjI1LCAxMSwgMjQ4LCAyMDgsIAotICAgIDE3NywgMjMxLCAxNzEsIDk0LCAyMjUsIDExLCAyMzEsIDM4LCA5NCwgMjI0LCAxNDEsIDIzMSwgMTY4LCA5NCwgMjI1LCAxMSwgCi0gICAgMjIzLCAxNjksIDk0LCAyMjQsIDE0MSwgMjI1LCAyNDcsIDk0LCAyMjUsIDExLCAyMjAsIDIxLCAyNDcsIDEyMCwgOTQsIAotICAgIDIyNSwgMTEsIDIxOSwgMTU5LCAyNDcsIDEyMCwgOTQsIDIyNCwgMTQxLCAyMTksIDUzLCAyMjUsIDI0MSwgOTQsIDE2NCwgCi0gICAgMjE0LCAxNjAsIDI0NywgMTIwLCA5NCwgMTY0LCAyMzIsIDEwOCwgMjQ3LCAxMjAsIDk0LCAyMjQsIDE0MSwgMjI3LCAxOTUsIAotICAgIDI0MiwgNDAsIDk0LCAyMjUsIDExLCAyMjQsIDc3LCAyMjQsIDcxLCA5NCwgMSwgMjU0LCAxNzAsIDk0LCAxLCAyNTIsIDI4LCAKLSAgICA5NCwgMSwgMjQyLCAyMDEsIDk0LCAxLCAyNDgsIDE4OSwgOTQsIDEsIDI0MSwgMjM4LCA5NCwgMSwgMjE0LCAzLCA5NCwgMSwgCi0gICAgMjEwLCA5NywgOTQsIDEsIDI0MSwgMTk3LCA5NCwgMSwgMjE2LCAyMzAsIDk0LCAxLCAyMTAsIDIzMywgOTQsIDEsIDQwLCAKLSAgICAyMzQsIDI1MCwgOTQsIDEsIDIzNCwgMjUwLCA5NCwgMSwgMjMzLCA5NCwgOTQsIDEsIDQwLCAyMzEsIDY1LCA5NCwgMSwgCi0gICAgMjMxLCA2NSwgOTQsIDEsIDQwLCAyMjcsIDE5NCwgOTQsIDEsIDIyNywgMTk0LCA5NCwgMSwgMjIxLCAyNDksIDk0LCAxLCAKLSAgICAyNTMsIDE2MiwgOTQsIDEsIDQwLCAyMjUsIDIyMSwgOTQsIDEsIDIyNSwgMjIxLCA5NCwgMSwgNDAsIDIxNSwgMTc5LCA5NCwgCi0gICAgMSwgMjE1LCAxNzksIDk0LCAxLCAyMjQsIDM5LCA5NCwgMSwgMjIzLCA2NywgOTQsIDEsIDIyMCwgMjAsIDk0LCAxLCAyMTcsIAotICAgIDM4LCA5NCwgMjcsIDIxMSwgNiwgNTIsIDIxNCwgMywgOTQsIDI3LCAyMTEsIDYsIDIxNCwgNCwgMjEwLCAyMzMsIDk0LCAyNywgCi0gICAgMjExLCA2LCA1MiwgMjEwLCAyMzMsIDk0LCAyMjQsIDE0MSwgMjQzLCA0MSwgOTQsIDIyNCwgMTQxLCAyNDMsIDM5LCAxMCwgCi0gICAgNTQsIDUwLCAxMCwgNSwgMjIxLCAyNDIsIDEwLCAyNDQsIDMwLCAyMzEsIDE1NCwgMTAsIDUsIDIyMiwgMjMsIDEwLCA1LCAKLSAgICAyMjEsIDI0NSwgMjU0LCAzNywgMjQ5LCAxMDksIDIyMiwgMTkzLCAyNTQsIDM3LCAyNDQsIDQsIDIyMiwgMTkzLCAxMCwgCi0gICAgMjIzLCAxMzQsIDI1NCwgMzcsIDIyNSwgMTgzLCAyMzAsIDE5MywgNTAsIDI1NCwgMzcsIDIyNSwgMTgzLCAyMTYsIDI0OCwgCi0gICAgMjE2LCAxNDgsIDUwLCAyNTQsIDIyMSwgNTAsIDEwLCAyNDksIDIxOSwgMTAsIDI0OCwgMTUwLCAyMjAsIDEzNywgMTAsIAotICAgIDIyNSwgMTMsIDIxMywgMjQxLCA1MCwgMTAsIDUsIDIzMCwgMTc0LCAxMCwgNSwgMjIyLCAzLCAyNTQsIDE3MiwgMjEyLCA0NSwgCi0gICAgMTAsIDUsIDI1NCwgMTcyLCAyNTMsIDIyMSwgMTAsIDUsIDIyMywgMTY3LCAyNTQsIDE3MSwgMTAsIDUsIDIyMywgMTc1LCAKLSAgICAyNTQsIDE1MiwgMjU0LCAxMDQsIDEwLCA1LCAyMTcsIDcwLCAxMCwgNCwgMTI1LCAyMTcsIDgwLCAxMCwgNCwgMTI1LCAyNywgCi0gICAgMTEyLCAyLCAyMzMsIDEwMywgMiwgMjExLCA0MywgMTAsIDQsIDEyNSwgMjEwLCAxMDgsIDEwLCA0LCAyNDQsIDE2NSwgMTAsIAotICAgIDQsIDI0OCwgMTg0LCAxMCwgNCwgMjM0LCAyMDUsIDEwLCAyMjAsIDE1MCwgMTAsIDIxNSwgMjExLCA1OSwgMjI0LCAxNDEsIAotICAgIDc4LCAxMCwgMjI0LCAxMywgNzgsIDEwLCAxLCAyMzQsIDIwOSwgMjExLCA0MywgMTAsIDEsIDI0MiwgMTksIDEwLCAxLCAKLSAgICAxMTIsIDIsIDIzMSwgMjI4LCA0OCwgMTAsIDEsIDExMiwgMiwgMjAyLCA0OCwgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNDgsIAotICAgIDEwLCAxLCAxMTIsIDIsIDIwMiwgNTEsIDEwLCAxLCA3OSwgMiwgMjAyLCA0OCwgMTAsIDEsIDI1NCwgMTcwLCAxMCwgMSwgCi0gICAgMjUyLCA1NCwgMTAsIDEsIDIxNywgOCwgMjMxLCAxNjQsIDEwLCAxLCAyMTcsIDcsIDEwLCAxLCAyMTYsIDE5MiwgMTAsIDEsIAotICAgIDIzNSwgMTIzLCAxMCwgMSwgMjQyLCAzNywgMTAsIDEsIDIzNCwgMTI5LCAxMCwgMSwgMjQ4LCAxOTUsIDEwLCAxLCAyMTYsIAotICAgIDIwMiwgMTAsIDEsIDIyMywgOTUsIDEwLCAxLCAyMTAsIDEwOCwgMTAsIDEsIDIyMSwgMTY2LCAxMCwgMSwgMjIwLCA1OSwgCi0gICAgMTAsIDEsIDIyMiwgMjYsIDEwLCAxLCAyNDgsIDIxNiwgMTAsIDEsIDIxNywgODAsIDEwLCAxLCAyMTAsIDExMSwgMTAsIDEsIAotICAgIDI1NCwgMTk2LCAxMCwgMSwgMjQyLCAyNDQsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAKLSAgICAxNzUsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMjM1LCAxOTMsIDIxNCwgMTA1LCAxMCwgMSwgCi0gICAgMjQ0LCAxNjgsIDc5LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDEzNCwgMTcwLCA0OCwgMTAsIAotICAgIDIxNywgNDMsIDEwLCAxLCAyNDQsIDE0MiwgMTAsIDEsIDIyNCwgODEsIDEwLCAxLCAyMzQsIDI1MCwgMTAsIDEsIDIzMywgCi0gICAgMTAyLCAxMCwgMSwgMjMxLCA3OCwgMTAsIDEsIDIyOCwgNjIsIDEwLCAxLCAyNDEsIDIxOCwgMTAsIDEsIDIxMiwgMzAsIDEwLCAKLSAgICAxLCAxMTIsIDIzMSwgMTkyLCAxMCwgMSwgMjExLCA0MywgMTAsIDI0NCwgMTYzLCAxMCwgMjQ4LCAxODIsIDEwLCAyMzQsIAotICAgIDIwMywgMTAsIDI0NCwgMTY1LCAxMCwgMjQ4LCAxODQsIDEwLCAyMzQsIDIwNSwgMTAsIDIyMCwgOTMsIDEwLCAyMTgsIDQ1LCAKLSAgICAxMCwgMjMxLCAyMjYsIDQ4LCAxMCwgMjAyLCA0OCwgMTAsIDIwMiwgNTEsIDEwLCAyMTgsIDY1LCAyNTQsIDE3MCwgMTAsIAotICAgIDIzNSwgMTkzLCAyNDgsIDE4NCwgMTAsIDE2NCwgMjI4LCA2MywgMjQyLCAyMTgsIDEwLCAyMDksIDI1NSwgMTAsIDI1LCA1LCAKLSAgICA0LCAyMTQsIDEwNiwgNDgsIDEwLCAyNSwgNSwgMjM1LCAxOTMsIDQsIDIxNCwgMTA2LCA0OCwgMTAsIDI1LCA1LCA1OSwgNTEsIAotICAgIDEwLCAyMjMsIDQ5LCAyNDgsIDE4NCwgMTAsIDI0NCwgMTY2LCAyLCAxMTMsIDI0NywgMTE4LCAxMCwgMjEyLCAzMiwgMjAyLCAKLSAgICA1MSwgMjU0LCAzNywgMjEsIDIxMCwgODYsIDI1NCwgMzcsIDIxLCAxMTAsIDI1NCwgMzcsIDIxLCAxMDUsIDI1NCwgMzcsIAotICAgIDIxLCAxNTgsIDI1NCwgMzcsIDIxLCAxNjEsIDI1NCwgMzcsIDIxLCAxODksIDI1NCwgMzcsIDIxLCAxOTQsIDI1NCwgMzcsIAotICAgIDIxLCAxOTgsIDI1NCwgMzcsIDIxLCAxOTUsIDI1NCwgMzcsIDIxLCAyMDAsIDEwLCAyMjUsIDE4MiwgNTAsIDEwLCAyNDgsIAotICAgIDgzLCAyMjAsIDEzNywgMTAsIDIxNiwgMTQ2LCAyMjAsIDEzNywgMTAsIDI0NCwgODEsIDIyNSwgOSwgMjE4LCAxNTYsIDEwLCAKLSAgICAxLCAyNDcsIDExOSwgMjUyLCA1NCwgMTAsIDEsIDI0NywgMTE5LCAyMjQsIDgxLCAxMCwgMSwgMjE4LCAyMywgMjU0LCAxNzAsIAotICAgIDEwLCAxLCAxMTIsIDIxMiwgNDYsIDEwLCAxLCAxMTIsIDIsIDIxMiwgMzIsIDIwMiwgNDgsIDEwLCAxLCAxMTIsIDIsIDIxMiwgCi0gICAgMzIsIDIwMiwgNTEsIDEwLCAxLCAxMjUsIDI0MiwgMTksIDEwLCAxLCAxMjUsIDIwMiwgMjU0LCAxNzAsIDEwLCAxLCAxMjUsIAotICAgIDIwMiwgMjEyLCAzMCwgMTAsIDEsIDEwNCwgMiwgMjAyLCA0OCwgMTAsIDEsIDEyNSwgMjAyLCAyMTEsIDQzLCAxMCwgMSwgCi0gICAgMjE1LCAxNDgsIDEwLCAxLCAyMTUsIDE0NiwgMTAsIDEsIDI1MiwgNjQsIDEwLCAxLCAyMTcsIDgsIDIsIDIyMiwgMjMzLCAKLSAgICAxMCwgMSwgMjE3LCA4LCAyLCAxMzQsIDE3MCwgNzcsIDI0NiwgMTAzLCAxMCwgMSwgMjI1LCAyMDUsIDEwLCAxLCAyMTcsIDUsIAotICAgIDEwLCAxLCAyNTIsIDUyLCAxMCwgMSwgMTIyLCAyLCAyMDIsIDQ4LCAxMCwgMSwgMTIyLCAyLCAxMTMsIDE3MCwgNjcsIDQ4LCAKLSAgICAxMCwgMSwgMjI3LCAxNTMsIDEwLCAxLCAyNDYsIDQzLCAxMCwgMSwgMTIyLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIAotICAgIDI2LCAxMCwgMSwgMjE3LCAyNCwgMTAsIDEsIDI0OCwgMTMwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDIyMiwgMjMzLCAxMCwgMSwgCi0gICAgMjQ4LCAxOTYsIDIsIDU5LCA1MSwgMTAsIDEsIDI0OCwgMTk2LCAyLCA1OSwgMjUyLCA0MywgMjIsIDQsIDIxNywgODAsIDEwLCAKLSAgICAxLCAyNDgsIDIwMSwgMTAsIDEsIDI0OCwgMTMyLCAxMCwgMSwgMjQ2LCA3MCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAxMzQsIAotICAgIDE3MCwgNzcsIDI0NiwgMTAzLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAxLCAyMjIsIDE3MSwgCi0gICAgMTAsIDEsIDIyMywgOTYsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjIzLCA5NiwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMjMsIAotICAgIDk2LCAyLCA1OSwgNTEsIDEwLCAxLCAyMjMsIDk2LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyMjMsIDk2LCAyLCA1OSwgCi0gICAgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMywgOTYsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIzNSwgMTIwLCAKLSAgICAxMCwgMSwgMjIzLCA5NiwgMiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCA1OSwgMjUyLCA0MywgMjIsIAotICAgIDU5LCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgMTM0LCAxNzAsIAotICAgIDI1MiwgNDMsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMjIsIDI3LCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyMjIsIAotICAgIDI3LCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIDgxLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgCi0gICAgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDU5LCAyMzAsIAotICAgIDEwOSwgNTEsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDUxLCAxMCwgMSwgMjEzLCAyNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgCi0gICAgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjI1LCAyMDMsIDEwLCAxLCAyMjQsIDgyLCAyLCA1OSwgNDgsIDEwLCAxLCAyMjQsIDgyLCAKLSAgICAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzQsIDE3NCwgMTAsIDEsIDIxNywgMjUwLCAyMzQsIDI1MCwgMTAsIDEsIDIzNCwgCi0gICAgMjUxLCAyLCAyMjIsIDIzMywgMTAsIDEsIDIzNCwgMjUxLCAyLCA1OSwgNDgsIDEwLCAxLCAyMjksIDc5LCAxMCwgMSwgMjM0LCAKLSAgICAyNTEsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDI0MywgMTIyLCAxMCwgMSwgMjQzLCAxMjMsIDIsIDIyMiwgMjMzLCAxMCwgCi0gICAgMSwgMjI5LCAyLCAxMCwgMSwgMjQzLCAxMjMsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDI0MiwgMTAxLCAxMCwgMSwgMjQzLCAKLSAgICAxMjMsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIzMywgMTAzLCAKLSAgICAyLCA1OSwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDEzNCwgCi0gICAgMTcwLCA1MSwgMTAsIDEsIDIyOCwgNjMsIDIsIDU5LCA1MSwgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE4LCAxMCwgMSwgMjIyLCAKLSAgICAyMTQsIDEwLCAxLCAyMjgsIDYzLCAyLCAyMjIsIDIzMywgMTAsIDEsIDIyOCwgNjMsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIAotICAgIDI0MSwgMjE5LCAyNDcsIDE0MSwgMTAsIDEsIDIxNywgMjcsIDIsIDU5LCA0OCwgMTAsIDEsIDI0MSwgMjE5LCAyLCA3OSwgCi0gICAgNDgsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzEsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDIsIDIwMiwgNDgsIDEwLCAKLSAgICAxLCAyMTcsIDgsIDIzMSwgMTY1LCAyNDIsIDE3MSwgMTAsIDEsIDIxMiwgMzEsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjM0LCAKLSAgICA3MywgMjI2LCAyMzQsIDEwLCAxLCAyMjYsIDIzNCwgMTAsIDEsIDcwLCAxMCwgMSwgMjEwLCAyMTIsIDEwLCAxLCAyMzQsIAotICAgIDczLCAyMTAsIDIxMiwgMTAsIDEsIDIxMiwgMzEsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIxMywgMjU1LCAxMCwgMSwgCi0gICAgMjQ0LCAxNjgsIDIxMSwgNDMsIDEwLCAxLCA3OSwgMiwgMjE3LCA3NywgMTAsIDEsIDc5LCAyLCA0LCAyMTQsIDEwNSwgMTAsIAotICAgIDEsIDIxMiwgMzEsIDIsIDU5LCA0OCwgMTAsIDEsIDc1LCAxMCwgMSwgNzksIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDc5LCAKLSAgICAyNTIsIDEzMiwgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjAyLCA0OCwgMTAsIDI0MywgMjI5LCAyMTgsIDEyOSwgMTAsIDEsIAotICAgIDI1NCwgMjQzLCAxMCwgNCwgMTI1LCAyNywgMjIyLCAyNywgMiwgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTIsIDEwLCA0LCAKLSAgICAxMjUsIDI3LCAyMjQsIDgyLCAyLCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MiwgMTAsIDQsIDEyNSwgNjYsIDY1LCAxNywgCi0gICAgMTAsIDQsIDEyNSwgMjMzLCAxMDMsIDI1NCwgMTcwLCAxMCwgNCwgMTI1LCAyMzUsIDEyMywgMTAsIDQsIDEyNSwgMTM0LCAKLSAgICAyNDcsIDExOCwgMTAsIDQsIDEyNSwgMjIxLCAxNjYsIDEwLCAyNDUsIDE0MywgNjQsIDI1MywgMTY2LCAxMCwgMjE4LCAxNTIsIAotICAgIDY0LCAyMjIsIDEzOCwgMjQ1LCAxNzUsIDI0MSwgMTU1LCAxMCwgNCwgMTI1LCAyMjIsIDE4MywgMjEwLCA4NiwgMTAsIDQsIAotICAgIDEyNSwgMjE0LCAxNTksIDIyMywgMTE1LCAyMTAsIDg2LCAxMCwgNCwgMTI1LCAyNDcsIDExOSwgMjQxLCAyMzYsIDY0LCAKLSAgICAyMzQsIDEyOSwgMTAsIDQsIDEyNSwgNjYsIDUzLCAxNywgMTAsIDQsIDEyMSwgMjIxLCAxNjYsIDEwLCA0LCAxMjUsIDIzMSwgCi0gICAgMjI3LCAxMCwgNCwgMjEyLCAzMCwgMTAsIDQsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIAotICAgIDIyOCwgNjIsIDEwLCAyMjUsIDQxLCA2NCwgMjIyLCAxMywgMTAsIDI0NSwgMTUyLCAyNTAsIDE3NSwgMTIxLCAyMTgsIDEyOSwgCi0gICAgMTAsIDI0NSwgMTUyLCAyNTAsIDE3NSwgMTI1LCAyMTgsIDEyOSwgMTAsIDIyMiwgMTgzLCAxMjUsIDIxOCwgMTMwLCAyLCAKLSAgICAyNDQsIDEwNCwgMjUwLCAxNzQsIDEwLCA0LCAxMjEsIDIzMSwgNzgsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjM1LCAxOTMsIAotICAgIDIxNCwgMTA1LCAxMCwgMSwgMjIzLCA5NiwgMiwgMjM1LCAxOTMsIDIxNCwgMTA1LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCi0gICAgMjEwLCA4NiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMCwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDEwNSwgMjQ1LCAyMiwgCi0gICAgMjU0LCAzNywgMjEsIDE1OCwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE2MSwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE4OSwgCi0gICAgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE5NCwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDE5OCwgMjQ1LCAyMiwgMjU0LCAzNywgCi0gICAgMjEsIDE5NSwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDIwMCwgMTAsIDEsIDIyMCwgNjAsIDIsIDU5LCA1MSwgMTAsIDEsIAotICAgIDI0OCwgMjE3LCAyLCA1OSwgNTEsIDEwLCAxLCAyNDIsIDI0NSwgMiwgNTksIDUxLCAxMCwgNSwgMjE5LCAxNTgsIDI1NCwgCi0gICAgMTI2LCAxMCwgNSwgMjE5LCAxNTgsIDIyNCwgMjM1LCAyMzEsIDU4LCAxMCwgMSwgMjQxLCAyMTksIDIsIDIzNSwgMTkzLCAKLSAgICAyMTQsIDEwNSwgMTg4LCAyNDUsIDE0MywgNjQsIDIyNiwgMTQsIDE4OCwgMjE4LCAxOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAKLSAgICAxODgsIDIxOCwgNjcsIDI0MywgMjI5LCAyMTgsIDEyOSwgMTg4LCAyMTgsIDE5LCAyNDksIDIyNiwgMTg4LCAyMTgsIDY3LCAKLSAgICAyNDksIDIyNiwgMTg4LCAyMDMsIDI0OSwgMjI2LCAxODgsIDI0OSwgMjI3LCAyMTksIDEwNiwgMjMzLCA0NiwgMTg4LCAyNDksIAotICAgIDIyNywgMjE5LCAxMDYsIDIyMiwgMjUxLCAxODgsIDIxOCwgMTksIDI0OSwgMjI3LCAyMTksIDEwNiwgMjMzLCA0NiwgMTg4LCAKLSAgICAyMTgsIDY3LCAyNDksIDIyNywgMjE5LCAxMDYsIDIyMiwgMjUxLCAxODgsIDI0OSwgMTgwLCAxODgsIDI0MiwgMSwgMjI2LCAKLSAgICAyNTAsIDE4OCwgMjQyLCAxLCAyMzEsIDM2LCAxODgsIDI0MiwgMSwgMjUzLCAyMTgsIDE4OCwgMjU1LCAyMSwgNzgsIDE4OCwgCi0gICAgMSwgMjU0LCAxNzQsIDE4OCwgMSwgMjE4LCAyMywgMjU0LCAxNzQsIDE4OCwgMSwgMjUyLCAyNSwgMTg4LCAxLCAyNDMsIAotICAgIDExMywgMTg4LCAxLCAyNDMsIDExNCwgMjQzLCA5MSwgMTg4LCAxLCAyNDgsIDE5MiwgMTg4LCAxLCAyNDcsIDExOSwgMjQ4LCAKLSAgICAxOTMsIDIyMiwgMjI5LCAxODgsIDEsIDI0MSwgMjM4LCAxODgsIDEsIDIxMiwgMzAsIDE4OCwgMSwgMjEwLCAxMDgsIDE4OCwgCi0gICAgMSwgMjQxLCAxOTUsIDE4OCwgMSwgMjE2LCAyMjYsIDE4OCwgMSwgMjE2LCAyMjcsIDI0MywgOTEsIDE4OCwgMSwgMjEwLCAKLSAgICAxOTksIDE4OCwgMSwgMjEwLCAyMDAsIDI0MSwgMjM4LCAxODgsIDEsIDIzNCwgMjI1LCAxODgsIDEsIDIzMywgMTAxLCAxODgsIAotICAgIDEsIDIzMCwgMTkwLCAxODgsIDEsIDIyNywgMTk0LCAxODgsIDEsIDIyMCwgMTQzLCAxODgsIDEsIDQwLCAyMjAsIDE0MywgCi0gICAgMTg4LCAxLCA3NSwgMTg4LCAxLCAyMjUsIDIyMSwgMTg4LCAxLCAyMjMsIDQ5LCAyMjUsIDIyMSwgMTg4LCAxLCAyMjIsIDI0LCAKLSAgICAxODgsIDEsIDIyNCwgNzUsIDE4OCwgMSwgMjIyLCAyMjksIDE4OCwgMSwgMjIwLCAyMCwgMTg4LCAxLCAyMTcsIDM2LCAxODgsIAotICAgIDEsIDIyNSwgMTY5LCAyNTIsIDEyLCAxODgsIDEsIDIyNSwgMTY5LCAyNDIsIDI0MiwgMTg4LCAxLCAyMjUsIDE2OSwgMjQ4LCAKLSAgICAyMCwgMTg4LCAyMjQsIDE1MSwgNDgsIDE4OCwgMjI0LCAxNTEsIDUxLCAxODgsIDIyNCwgMTUxLCAyNDYsIDExNywgMTg4LCAKLSAgICAyMTAsIDE3LCA0OCwgMTg4LCAyMTAsIDE3LCA1MSwgMTg4LCAyMTAsIDE3LCAyNDYsIDExNywgMTg4LCAyMjMsIDEzMSwgNDgsIAotICAgIDE4OCwgMjIzLCAxMzEsIDUxLCAxODgsIDI0NiwgMTE4LCAyMTAsIDI0LCAyNDEsIDQ0LCAxODgsIDI0NiwgMTE4LCAyMTAsIAotICAgIDI0LCAyNTQsIDEwNSwgMTg4LCAyNDEsIDI0MSwgNDgsIDE4OCwgMjQxLCAyNDEsIDUxLCAxODgsIDI0MSwgMjQwLCAyNDYsIAotICAgIDExNywgMTg4LCAyNDUsIDc5LCA0OCwgMTg4LCAyNDUsIDc5LCA1MSwgMTg4LCAyMjIsIDEwNywgMTg4LCAyNDQsIDEzNiwgCi0gICAgMjQ3LCAxMjAsIDE4OCwgMjIzLCAyNDgsIDE4OCwgMjIyLCAxMzQsIDE4OCwgMTEzLCA2NywgMTcwLCA0OCwgMTg4LCAxMTMsIAotICAgIDY3LCAxNzAsIDUxLCAxODgsIDEzNCwgMTcwLCA0OCwgMTg4LCAxMzQsIDE3MCwgNTEsIDE4OCwgMjI2LCAyNDgsIDIzMiwgCi0gICAgMjE0LCA0OCwgMTg4LCAyMjYsIDI0OCwgMjMyLCAyMTQsIDUxLCAxODgsIDIzMCwgNTYsIDE4OCwgMjUyLCAxMzEsIDE4OCwgCi0gICAgMSwgMjE5LCA0OSwgMjEwLCA4MCwgMTg4LCAxLCAyMTksIDQ5LCAyMzQsIDEyMiwgMTg4LCAxLCAyMTksIDQ5LCAyNDQsIAotICAgIDE1NCwgMTAsIDEsIDI1MiwgNTUsIDIsIDEzNCwgMTcwLCAyNDAsIDI1MCwgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCA1OSwgCi0gICAgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCAKLSAgICA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCAyNTIsIDQzLCAyMiwgMTEzLCAxNzAsIAotICAgIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTEzLCAxNzAsIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAKLSAgICAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAxMjIsIDIsIAotICAgIDExMywgMTcwLCA0OCwgMTAsIDEsIDEyMiwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDUxLCAxMCwgMSwgMjQ4LCAKLSAgICAxOTYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgMjUyLCA0MywgMjIsIDQsIDIxNywgODAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgCi0gICAgMjM1LCAxOTMsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDkxLCAxMCwgMSwgMjIxLCAxNjcsIDIsIAotICAgIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIAotICAgIDEzNCwgMTcwLCAyMjUsIDcsIDI0NiwgMTA0LCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIAotICAgIDQ4LCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDI0NCwgMTQzLCAyLCAxMzQsIDE3MCwgMjI1LCAKLSAgICA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCAyMzQsIDE3NSwgMiwgNTksIDQ4LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDEzNCwgCi0gICAgMTcwLCA0OCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCA2NiwgCi0gICAgMiwgNTksIDQ4LCAxMCwgMSwgNjYsIDIsIDU5LCA1MSwgMTAsIDEsIDIyOCwgNjMsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIAotICAgIDIyOCwgNjMsIDIsIDQsIDIxNywgODAsIDEwLCAxLCAyMjgsIDYzLCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIzMywgMTAzLCAKLSAgICAyLCAxMzAsIDEwLCAxLCAyMjMsIDk2LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgCi0gICAgMjAyLCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMTIyLCAyLCA0LCAKLSAgICAxMCwgMSwgMjE3LCA4MSwgNTEsIDEwLCAxLCAxMjIsIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgCi0gICAgMTAsIDEsIDIyMSwgMTY3LCAyLCA0LCAxMCwgMSwgMjE3LCA4MSwgMjIsIDExMywgMjQ3LCAxMTgsIDEwLCAxLCAyMjMsIDk2LCAKLSAgICAyLCA0LCAxMCwgMSwgMjE3LCA4MSwgMjIsIDExMywgMjQ3LCAxMTgsIDEwLCAxLCAxMjIsIDIsIDQsIDEwLCAxLCAyMTcsIAotICAgIDgxLCA0OCwgMTAsIDEsIDExMiwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAxMTIsIDIsIDI0NSwgCi0gICAgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCi0gICAgMTEzLCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAKLSAgICAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAyNDQsIDExLCA1MSwgMTAsIDEsIDIxMiwgMzEsIDIsIAotICAgIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIAotICAgIDEzNCwgNDgsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgCi0gICAgNzksIDI1MiwgMTMzLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIDEyMiwgMiwgMjQ1LCAyMiwgCi0gICAgMjU0LCAzNywgMjEsIDI0NCwgMTEsIDUxLCAxMCwgMSwgMjIxLCAxNjcsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAyNDQsIAotICAgIDExLCA0OCwgMTAsIDEsIDIyMSwgMTY3LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDEwLCAxLCAyMzQsIDI1MSwgMiwgMTEzLCAKLSAgICAxNzAsIDQ4LCAyMTYsIDIwNSwgMSwgMjQyLCA0NiwgMjE2LCAyMDUsIDEsIDIyMCwgNjgsIDIxNiwgMjA1LCAxLCAyMjgsIAotICAgIDYxLCAyMTYsIDIwNSwgMSwgMjIzLCAxODQsIDIxNiwgMjA1LCAxLCAyNTIsIDE4OSwgMjE2LCAyMDUsIDEsIDIzMiwgMjUxLCAKLSAgICAyMTYsIDIwNSwgMSwgMjM1LCA4LCAyMTYsIDIwNSwgMSwgMjU0LCAxNTksIDIxNiwgMjA1LCAxLCAyMTQsIDI1LCAyMTYsIAotICAgIDIwNSwgMSwgMjMxLCA3NywgMjE2LCAyMDUsIDEsIDI0NCwgMTk0LCAyMTYsIDIwNSwgMSwgMjQ4LCAyMywgMjE2LCAyMDUsIAotICAgIDEsIDIxNiwgMjA3LCAyMTYsIDIwNSwgMSwgMjMzLCAxMzEsIDIxNiwgMjA1LCAxLCAyNDMsIDEzMSwgMjE2LCAyMDUsIDEsIAotICAgIDI0MiwgMTc3LCAyMTYsIDIwNSwgMSwgMjIxLCAxNjUsIDIxNiwgMjA1LCAxLCAyNDgsIDE0OCwgMjE2LCAyMDUsIDEsIDIxMCwgCi0gICAgMTAwLCAyMTYsIDIwNSwgMSwgMjE3LCAzNywgMjE2LCAyMDUsIDEsIDIxMSwgMTAzLCAyMTYsIDIwNSwgMSwgMjI1LCAyMzMsIAotICAgIDIxNiwgMjA1LCAxLCAyMzUsIDEyOCwgMjE2LCAyMDUsIDEsIDI1MCwgMTM0LCAyMTYsIDIwNSwgMSwgMjE1LCAxNTUsIDIxNiwgCi0gICAgMjA1LCAxLCAyNDEsIDE4OCwgMjE2LCAyMDUsIDEsIDIzNCwgMTMxLCAyMTYsIDIwNSwgMSwgMjE2LCAyMDYsIDIxNiwgMjA1LCAKLSAgICAxLCAyMTAsIDExNSwgMjE2LCAyMDUsIDEsIDIyMCwgNTgsIDIxNiwgMjA1LCAxLCAyMjIsIDMwLCAyMTYsIDIwNSwgMSwgCi0gICAgMjQ4LCAyMTksIDIxNiwgMjA1LCAxLCAxMTEsIDIxNiwgMjA1LCAxLCAyMTAsIDIzLCAyMTYsIDIwNSwgMSwgMjU0LCAxOTMsIAotICAgIDIxNiwgMjA1LCAxLCAyNDIsIDI0MywgMjE2LCAyMDUsIDEsIDIyNCwgODUsIDIxNiwgMjA1LCAxLCAyMTIsIDYzLCAyMTYsIAotICAgIDIwNSwgMjU1LCAyMiwgMjE2LCAyMDUsIDI1NSwgMzgsIDIxNiwgMjA1LCAyNDAsIDExNCwgMjE2LCAyMDUsIDI0NSwgMjA4LCAKLSAgICAyMTYsIDIwNSwgMjE0LCAyMjIsIDIxNiwgMjA1LCAyMjYsIDE4MiwgMjE2LCAyMDUsIDI0NSwgMjE2LCAyMTYsIDIwNSwgCi0gICAgMjQ1LCAxNiwgMjE2LCAyMDUsIDIyNiwgMjQ3LCAyMTYsIDIwNSwgMjI2LCAyNTUsIDIxNiwgMjA1LCAyMTgsIDQ1LCAyMTYsIAotICAgIDIwNSwgMSwgMjI5LCAyMjUsIDIyOCwgMTM3LCAyMSwgMjEwLCA4NiwgMjI4LCAxMzcsIDIxLCAxMTAsIDIyOCwgMTM3LCAyMSwgCi0gICAgMTA1LCAyMjgsIDEzNywgMjEsIDE1OCwgMjI4LCAxMzcsIDIxLCAxNjEsIDIyOCwgMTM3LCAyMSwgMTg5LCAyMjgsIDEzNywgCi0gICAgMjEsIDE5NCwgMjI4LCAxMzcsIDIxLCAxOTgsIDIyOCwgMTM3LCAyMSwgMTk1LCAyMjgsIDEzNywgMjEsIDIwMCwgMjI4LCAKLSAgICAxMzcsIDEsIDYxLCAyMjgsIDEzNywgMSwgMjQ1LCAyMDksIDIyOCwgMTM3LCAxLCA3MywgMjI4LCAxMzcsIDEsIDc1LCAyMjgsIAotICAgIDEzNywgMSwgNzAsIDIyOCwgMTM3LCAxLCAyMjYsIDE4MywgMjI4LCAxMzcsIDEsIDc2LCAyMjgsIDEzNywgMSwgMjQ4LCAKLSAgICAyMDksIDIyOCwgMTM3LCAxLCAyMzAsIDI1LCAyMjgsIDEzNywgMSwgMjUyLCAxOTEsIDIyOCwgMTM3LCAxLCAxOTAsIDIyOCwgCi0gICAgMTM3LCAxLCAyMTcsIDEwNSwgMjI4LCAxMzcsIDEsIDIzNSwgMTQxLCAyMjgsIDEzNywgMSwgMjUwLCAxNTcsIDIyOCwgMTM3LCAKLSAgICAxLCAyNDgsIDIyMSwgMjI4LCAxMzcsIDEsIDIwNSwgMjI4LCAxMzcsIDEsIDIyMiwgMTc5LCAyMjgsIDEzNywgMSwgMjA2LCAKLSAgICAyMjgsIDEzNywgMSwgMjQzLCA3OSwgMjI4LCAxMzcsIDEsIDI0NCwgMTk2LCAyMjgsIDEzNywgMSwgMTc2LCAyMjgsIDEzNywgCi0gICAgMSwgMjMzLCAxMzUsIDIyOCwgMTM3LCAxLCAyMjksIDIyOSwgMjExLCAyMjMsIDIyOCwgMTM3LCAxLCAxODQsIDIyOCwgMTM3LCAKLSAgICAxLCAyMjcsIDE2NSwgMjI4LCAxMzcsIDEsIDE5NywgMjI4LCAxMzcsIDEsIDE2MiwgMjI4LCAxMzcsIDEsIDIxMiwgNjUsIAotICAgIDIyOCwgMTM3LCAxLCAxOTEsIDIyOCwgMTM3LCAxLCAyMjcsIDE2NiwgMjExLCAyMjMsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAKLSAgICAyMzUsIDE0MSwgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIDI1MCwgMTU3LCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgMjA1LCAyMjgsIAotICAgIDEzNywgMzgsIDIxOSwgMjUxLCAxMjUsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMjE5LCAyNTEsIDEyMSwgMjE2LCAzMCwgCi0gICAgMjI4LCAxMzcsIDM4LCAyMTksIDI1MSwgMjIyLCAyMjgsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAyNDgsIDM4LCAKLSAgICAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMTI1LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMTIxLCAyMTYsIAotICAgIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMjIyLCAyMjgsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMjI5LCAxOTMsIDc4LCAKLSAgICAyMjgsIDEzNywgMzgsIDUyLCA1OSwgNDgsIDIyOCwgMTM3LCAxMjUsIDEzOCwgMjU0LCA1NywgMjI4LCAxMzcsIDEyMSwgCi0gICAgMTM4LCAyNTQsIDU3LCAyMjgsIDEzNywgMTYsIDIyNiwgMTg0LCAyNDgsIDUwLCAyMjgsIDEzNywgMTYsIDI0MywgNzgsIAotICAgIDIyOCwgMTM3LCAyNDksIDIxOSwgMjI4LCAxMzcsIDI0NSwgMzEsIDc4LCAyMjgsIDEzNywgMjMzLCAxMDgsIDIyMSwgMjUyLCAKLSAgICAxLCAyNTQsIDE3NiwgMjIxLCAyNTIsIDEsIDI1MSwgMjI4LCAyMjEsIDI1MiwgMSwgMjQzLCAxMTIsIDIyMSwgMjUyLCAxLCAKLSAgICAyNDgsIDE5NCwgMjIxLCAyNTIsIDEsIDIzNSwgMTUyLCAyMjEsIDI1MiwgMSwgMjUyLCAxODksIDIyMSwgMjUyLCAxLCAyMTAsIAotICAgIDg5LCAyMjEsIDI1MiwgMSwgMjM1LCAxNjAsIDIyMSwgMjUyLCAxLCAyMTYsIDY3LCAyMjEsIDI1MiwgMSwgMjEwLCAxODIsIAotICAgIDIyMSwgMjUyLCAxLCAyMzUsIDksIDIyMSwgMjUyLCAxLCAyMzMsIDEyOCwgMjIxLCAyNTIsIDEsIDIzMCwgMTkwLCAyMjEsIAotICAgIDI1MiwgMSwgMjI3LCAxOTQsIDIyMSwgMjUyLCAxLCAyMTksIDE1NiwgMjIxLCAyNTIsIDEsIDIzNSwgMjU1LCAyMjEsIDI1MiwgCi0gICAgMSwgMjQ0LCAxMjEsIDIyMSwgMjUyLCAxLCAyMTUsIDE4MSwgMjIxLCAyNTIsIDEsIDIyNCwgMTAsIDIyMSwgMjUyLCAxLCAKLSAgICAyMjIsIDIyOSwgMjIxLCAyNTIsIDEsIDIyMCwgODUsIDIyMSwgMjUyLCAxLCAyMTcsIDEwMCwgMjIxLCAyNTIsIDE2NCwgCi0gICAgMjM1LCAyNTUsIDIyMSwgMjUyLCAxNjQsIDIzNSwgMjU0LCAyMjEsIDI1MiwgMTY0LCAyMjYsIDI0MywgMjIxLCAyNTIsIAotICAgIDE2NCwgMjQ4LCAyMDcsIDIyMSwgMjUyLCA1OCwgMSwgMjQ1LCAxMDUsIDIxMCwgMTgyLCAyMjEsIDI1MiwgMTY0LCAyNDUsIAotICAgIDEwNSwgMjEwLCAxODIsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3NSwgMjIxLCAyNTIsIDI1LCA1LCA3NSwgMjIxLCAyNTIsIAotICAgIDI1LCA1LCAyMjYsIDExOCwgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDI1NSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgCi0gICAgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAyMjYsIDExOCwgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA2MSwgMjIxLCAKLSAgICAyNTIsIDI1LCA1LCA2MSwgMjIxLCAyNTIsIDU4LCAxLCAyMTksIDI1MSwgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMjE5LCAyNTEsIAotICAgIDYxLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNzAsIDIyMSwgMjUyLCAyNSwgNSwgNzAsIDIyMSwgMjUyLCA1OCwgMSwgNzMsIAotICAgIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3MywgMjIxLCAyNTIsIDI1LCA1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCA3NiwgMjIxLCAKLSAgICAyNTIsIDI1LCA1LCAyMTgsIDQ1LCAyMjEsIDI1MiwgMTY0LCAyMjksIDkyLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIyOSwgOTIsIAotICAgIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCAyMTgsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCAxMTQsIDIyMSwgMjUyLCAKLSAgICAyMjQsIDE0MSwgMjUyLCAxMTQsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjUzLCAyMDEsIDIyMSwgMjUyLCAyMjQsIDE0MSwgCi0gICAgMjIwLCA4LCAyMjEsIDI1MiwgMjU1LCAyMSwgNzgsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjMxLCA2OCwgMjI0LCA0NSwgMjIxLCAKLSAgICAyNTIsIDIyNCwgMTQxLCAyMTAsIDMxLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIyNCwgNDUsIDIyMSwgMjUyLCAyMjQsIDE0MSwgCi0gICAgMjEwLCAxMTQsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjE1LCA5MCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDksIDIyMSwgCi0gICAgMjUyLCAyMjQsIDE0MSwgMjE5LCA1MywgMjMxLCAxNDUsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCAxMDAsIDIzMSwgMTgyLCAKLSAgICAxLCAyNDIsIDI0LCAyMzEsIDE4MiwgMSwgMjU1LCAyNSwgMjMxLCAxODIsIDEsIDI1NCwgMjE2LCAyMzEsIDE4MiwgMSwgCi0gICAgMjU0LCAyNTUsIDIzMSwgMTgyLCAxLCAyNTQsIDIwOSwgMjMxLCAxODIsIDEsIDIxNCwgMTI0LCAyMzEsIDE4MiwgMSwgMjUzLCAKLSAgICAxNjAsIDIzMSwgMTgyLCAxLCAyMzUsIDE2MCwgMjMxLCAxODIsIDEsIDI1MywgMTk4LCAyMzEsIDE4MiwgMSwgMjU0LCAxODEsIAotICAgIDIzMSwgMTgyLCAxLCAyNTQsIDE4NiwgMjMxLCAxODIsIDEsIDI1NCwgMTc4LCAyMzEsIDE4MiwgMSwgMjU0LCAxMzYsIDIzMSwgCi0gICAgMTgyLCAxLCAyNTQsIDEyMywgMjMxLCAxODIsIDEsIDI1MywgMjM3LCAyMzEsIDE4MiwgMSwgMjM1LCAyNTUsIDIzMSwgMTgyLCAKLSAgICAxLCAyNTQsIDcyLCAyMzEsIDE4MiwgMSwgMjUzLCAyMDgsIDIzMSwgMTgyLCAxLCAyNTQsIDQ1LCAyMzEsIDE4MiwgMSwgCi0gICAgMjU0LCA0MSwgMjMxLCAxODIsIDEsIDI1MywgMjMxLCAyMzEsIDE4MiwgMSwgMjUzLCAyMDYsIDIzMSwgMTgyLCAxLCAyNDYsIAotICAgIDU1LCAyMzEsIDE4MiwgMSwgMjM1LCAyLCAyMzEsIDE4MiwgMSwgMjU0LCAxOTYsIDIzMSwgMTgyLCAyNTQsIDIyMiwgNzgsIAotICAgIDIzMSwgMTgyLCAyMTMsIDEzNiwgNzgsIDIzMSwgMTgyLCAyNDMsIDUzLCA3OCwgMjMxLCAxODIsIDIyNCwgMTQwLCAxMCwgMSwgCi0gICAgMjUyLCA1NSwgMiwgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMTUxLCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIDgxLCAKLSAgICAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDI1MiwgNDMsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAKLSAgICAxLCAyMjQsIDgyLCAyLCA1OSwgNTEsIDEwLCAxLCAyMzMsIDEwMywgMiwgNTIsIDEzMCwgMTAsIDEsIDY2LCAyLCAxMzQsIAotICAgIDE3MCwgNDgsIDEwLCAxLCA3OSwgMiwgMTEzLCAxNzAsIDI1MiwgNDMsIDIyLCAyMDIsIDQ4LCAxMCwgMSwgNzksIDIsIDExMywgCi0gICAgMTcwLCAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgMjMyLCAxMjMsIDEwLCAxLCAyMTIsIDMxLCAyLCAKLSAgICA1OSwgMjExLCAyMzEsIDEwLCAxLCAyMjIsIDIwMSwgMjExLCA0MywgMTAsIDI0OSwgOTksIDI0NCwgMTY1LCAxMCwgMjQ5LCAKLSAgICA5OSwgMjQ4LCAxODQsIDEwLCAyNDksIDk5LCAyMzQsIDIwNSwgMTAsIDI0OSwgOTksIDI0NCwgMTYzLCAxMCwgMjQ5LCA5OSwgCi0gICAgMjQ4LCAxODIsIDEwLCAyNDksIDk5LCAyMzQsIDIwMywgMTAsIDEzOCwgMTIzLCA1OSwgNDgsIDEwLCAxMzgsIDExMywgMTcwLCAKLSAgICA0OCwgMTAsIDEzOCwgMjMyLCAxMjQsIDQ4LCAxMCwgMTM4LCAxMjMsIDU5LCA1MSwgMTAsIDEzOCwgMTEzLCAxNzAsIDUxLCAKLSAgICAxMCwgMTM4LCAyMzIsIDEyNCwgNTEsIDEwLCAyMDQsIDI0NCwgMTYzLCAxMCwgMjA0LCAyNDgsIDE4MiwgMTAsIDIwNCwgCi0gICAgMjM0LCAyMDMsIDEwLCA0LCAxMjUsIDIxMiwgMzAsIDEwLCAyNDQsIDE2NiwgMiwgMjIyLCAyMzMsIDEwLCAyNDQsIDE2NiwgCi0gICAgMiwgNTksIDQ4LCAxMCwgMjM0LCAyMDYsIDIsIDU5LCA1MSwgMTAsIDQzLCAyNTMsIDI1MCwgNDgsIDEwLCA0NCwgMjUzLCAKLSAgICAyNTAsIDQ4LCAxMCwgNDMsIDI1MywgMjUwLCA1MSwgMTAsIDQ0LCAyNTMsIDI1MCwgNTEsIDEwLCA1MiwgNDQsIDI1MywgCi0gICAgMjUwLCA0OCwgMTAsIDUyLCA0NCwgMjUzLCAyNTAsIDc3LCAyLCAyNDcsIDEyMCwgMTAsIDQ0LCAyNTMsIDI1MCwgNzcsIDIsIAotICAgIDI0NywgMTIwLCAxMCwgMjQ4LCAxODUsIDIsIDI0NywgMTIwLCA4NCwgNSwgMjM1LCAxOTMsIDI1MCwgMjU1LCA4NCwgNSwgCi0gICAgMjUwLCAyNTUsIDg0LCA1LCAyNTQsIDc1LCA4NCwgNSwgMjEzLCAxNDcsIDg0LCAxLCAyMTksIDI1MSwgNjEsIDg0LCAxLCAKLSAgICA2MSwgODQsIDEsIDI1NSwgNzMsIDg0LCAxLCA3MywgODQsIDEsIDIzNiwgMzMsIDg0LCAxLCA3MCwgODQsIDEsIDIxNCwgCi0gICAgMTE4LCA4NCwgMSwgMTQ5LCAxNTMsIDg0LCAxLCAxNDksIDE1NiwgODQsIDEsIDI1MSwgMiwgNzUsIDg0LCAxLCAyMTksIAotICAgIDI1MSwgNzUsIDg0LCAxLCA3NSwgODQsIDEsIDI1NCwgMjAxLCA4NCwgMSwgMjUxLCAyLCA3NiwgODQsIDEsIDIxOSwgMjUxLCAKLSAgICA3NiwgODQsIDEsIDc2LCA4NCwgMSwgMjUzLCAxOTIsIDg0LCAxLCAxNzYsIDg0LCAxLCAyMzQsIDEzMiwgODQsIDEsIDI0MywgCi0gICAgMTM1LCA4NCwgMSwgMjQyLCAyNDksIDg0LCAxLCAyMjksIDc3LCA4NCwgMSwgMjUxLCAzMywgODQsIDEsIDI1MCwgMTU3LCAKLSAgICA4NCwgMSwgMjM1LCAxNDEsIDg0LCAxLCAyMzUsIDExNCwgODQsIDEsIDIyNywgMTY1LCA4NCwgMSwgMjE1LCAxNTYsIDg0LCAKLSAgICAxLCAyMTUsIDE0NCwgODQsIDEsIDI0OCwgMTM1LCA4NCwgMSwgMjQ4LCAxMTksIDg0LCAxLCAyMjgsIDExMCwgODQsIDEsIAotICAgIDIxNywgMTA1LCA4NCwgMSwgMjE2LCAyMDgsIDg0LCAxLCAyNDgsIDIyMSwgODQsIDEsIDI0OCwgMjUsIDg0LCAxLCAxOTcsIAotICAgIDg0LCAxLCAyMjgsIDkyLCA4NCwgMSwgMTkwLCA4NCwgMSwgMjI1LCAxNDcsIDg0LCAxLCAyNTIsIDE5MSwgODQsIDEsIDI1MiwgCi0gICAgMTgsIDg0LCAxLCAxODQsIDg0LCAxLCAxOTEsIDg0LCAxLCAyMDUsIDg0LCAxLCAyMjIsIDE3OSwgODQsIDEsIDIzMywgMTM1LCAKLSAgICA4NCwgMSwgMjMyLCAxODQsIDg0LCAxLCAyMzIsIDE3NSwgODQsIDEsIDIxNCwgMjcsIDg0LCAxLCAyMjAsIDEwMiwgODQsIDEsIAotICAgIDIxOCwgMjIzLCA4NCwgMSwgMjA2LCA4NCwgMSwgMTYyLCA4NCwgMjUsIDUsIDIyNiwgMjM0LCA4NCwgMjUsIDUsIDIyNiwgCi0gICAgMTgxLCA4NCwgNSwgMjI3LCAyMDUsIDg0LCA1LCAyNTMsIDE3NSwgODQsIDI1LCA1LCAyNTUsIDczLCA4NCwgMjUsIDUsIDczLCAKLSAgICA4NCwgMjUsIDUsIDIzNiwgMzMsIDg0LCAyNSwgNSwgNzAsIDg0LCAyNSwgNSwgMjE0LCAxMTgsIDg0LCAyNSwgNSwgMTQ5LCAKLSAgICAxNTMsIDg0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgODQsIDI1LCA1LCAyNTEsIDIsIDc1LCA4NCwgMjUsIDUsIDIxOSwgCi0gICAgMjUxLCA3NSwgODQsIDI1LCA1LCA3NSwgODQsIDI1LCA1LCAyNTQsIDIwMSwgODQsIDI1LCA1LCAyNTEsIDIsIDc2LCA4NCwgCi0gICAgMjUsIDUsIDIxOSwgMjUxLCA3NiwgODQsIDI1LCA1LCA3NiwgODQsIDI1LCA1LCAyNTMsIDE5MiwgODQsIDUsIDIxMywgMTUyLCAKLSAgICA4NCwgMjUsIDUsIDIyNCwgMTg1LCA3NSwgODQsIDI1LCA1LCAyNTMsIDE3MSwgODQsIDIyNiwgMjA0LCA4NCwgMjE4LCAxMTEsIAotICAgIDUsIDIxNCwgMjE2LCA4NCwgMjE4LCAxMTEsIDUsIDI1NCwgNzcsIDg0LCAyNDIsIDEzNywgMjU1LCAxNCwgODQsIDI1NSwgMywgCi0gICAgMjU1LCAxNCwgODQsIDI1LCA1LCAyNTEsIDIsIDE5OSwgNzUsIDg0LCAyNSwgNSwgMjE0LCAyMTQsIDg0LCAyNSwgNSwgMjE0LCAKLSAgICAxMTcsIDg0LCAxLCAyMjQsIDg4LCA4NCwgMSwgMjM0LCAxMTUsIDg0LCAxLCAyNDIsIDIyNiwgODQsIDEsIDIxMCwgMTE2LCAKLSAgICA4NCwgMSwgMjQ4LCAxMjQsIDg0LCAxLCAyMjMsIDM5LCA4NCwgMSwgMjQ0LCAxOTYsIDg0LCAxLCAyMTAsIDE2OCwgODQsIDEsIAotICAgIDE0OSwgMjIyLCAxODAsIDg0LCAxLCAxNDksIDIzMiwgMTg1LCA4NCwgMjUsIDUsIDE0OSwgMTU2LCA4NCwgMjUsIDUsIDE0OSwgCi0gICAgMjMyLCAxODUsIDg0LCAyNDgsIDE3OCwgODQsIDUyLCAyNDgsIDE3OCwgODQsIDIxLCAyMTAsIDg2LCA4NCwgMjEsIDExMCwgCi0gICAgODQsIDIxLCAxMDUsIDg0LCAyMSwgMTU4LCA4NCwgMjEsIDE2MSwgODQsIDIxLCAxODksIDg0LCAyMSwgMTk0LCA4NCwgMjEsIAotICAgIDE5OCwgODQsIDIxLCAxOTUsIDg0LCAyMSwgMjAwLCA4NCwgMjU1LCAyMSwgNTAsIDg0LCA1LCAxMjUsIDIxOSwgMTcsIDI0NywgCi0gICAgMTIwLCA4NCwgMSwgMjUxLCAyLCA2MSwgODQsIDEsIDIyNiwgMjM0LCA4NCwgMSwgMjI2LCAxODEsIDg0LCAxLCAyNTMsIAotICAgIDE3MSwgODQsIDEsIDIxNCwgMjE0LCA4NCwgMSwgMjE0LCAxMTcsIDg0LCAxLCAyMTAsIDgyLCA4NCwgMSwgMTE0LCAxOTEsIAotICAgIDg0LCAxLCAyNDMsIDI5LCA4NCwgMSwgMjM1LCA5NiwgODQsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgODQsIDEsIDI0OCwgCi0gICAgMTI1LCA4NCwgMSwgMjUyLCAxMTEsIDE0NiwgNSwgMjUwLCAyNTUsIDE0NiwgNSwgMjU0LCA3NSwgMTQ2LCA1LCAyMTMsIAotICAgIDE0NywgMTQ2LCAxLCA2MSwgMTQ2LCAxLCAyNTUsIDczLCAxNDYsIDEsIDczLCAxNDYsIDEsIDIzNiwgMzMsIDE0NiwgMSwgCi0gICAgNzAsIDE0NiwgMSwgMjE0LCAxMTgsIDE0NiwgMSwgMTQ5LCAxNTMsIDE0NiwgMSwgMTQ5LCAxNTYsIDE0NiwgMSwgNzUsIAotICAgIDE0NiwgMSwgMjU0LCAyMDEsIDE0NiwgMSwgNzYsIDE0NiwgMSwgMjUzLCAxOTIsIDE0NiwgMSwgMTc2LCAxNDYsIDEsIDIzNCwgCi0gICAgMTMyLCAxNDYsIDEsIDI0MywgMTM1LCAxNDYsIDEsIDI0MiwgMjQ5LCAxNDYsIDEsIDIyOSwgNzcsIDE0NiwgMSwgMjUxLCAKLSAgICAzMywgMTQ2LCAxLCAyNTAsIDE1NywgMTQ2LCAxLCAyMzUsIDE0MSwgMTQ2LCAxLCAyMzUsIDExNCwgMTQ2LCAxLCAyMjcsIAotICAgIDE2NSwgMTQ2LCAxLCAyMTUsIDE1NiwgMTQ2LCAxLCAyMTUsIDE0NCwgMTQ2LCAxLCAyNDgsIDEzNSwgMTQ2LCAxLCAyNDgsIAotICAgIDExOSwgMTQ2LCAxLCAyMjgsIDExMCwgMTQ2LCAxLCAyMTcsIDEwNSwgMTQ2LCAxLCAyMTYsIDIwOCwgMTQ2LCAxLCAyNDgsIAotICAgIDIyMSwgMTQ2LCAxLCAyNDgsIDI1LCAxNDYsIDEsIDE5NywgMTQ2LCAxLCAxOTAsIDE0NiwgMSwgMjI1LCAxNDcsIDE0NiwgMSwgCi0gICAgMjUyLCAxOTEsIDE0NiwgMSwgMjUyLCAxOCwgMTQ2LCAxLCAxODQsIDE0NiwgMSwgMTkxLCAxNDYsIDEsIDIwNSwgMTQ2LCAxLCAKLSAgICAyMzMsIDEzNSwgMTQ2LCAxLCAyMjAsIDEwMiwgMTQ2LCAxLCAyMTgsIDIyMywgMTQ2LCAxLCAyMDYsIDE0NiwgMSwgMTYyLCAKLSAgICAxNDYsIDUsIDIyNywgMjA1LCAxNDYsIDUsIDI1MywgMTc1LCAxNDYsIDI1LCA1LCAyNTUsIDczLCAxNDYsIDI1LCA1LCA3MywgCi0gICAgMTQ2LCAyNSwgNSwgMjM2LCAzMywgMTQ2LCAyNSwgNSwgNzAsIDE0NiwgMjUsIDUsIDIxNCwgMTE4LCAxNDYsIDI1LCA1LCAKLSAgICAxNDksIDE1MywgMTQ2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTQ2LCAyNSwgNSwgNzUsIDE0NiwgMjUsIDUsIDI1NCwgCi0gICAgMjAxLCAxNDYsIDI1LCA1LCA3NiwgMTQ2LCAyNSwgNSwgMjUzLCAxOTIsIDE0NiwgNSwgMjEzLCAxNTIsIDE0NiwgMSwgMjM0LCAKLSAgICAxMjQsIDIxNywgMTA1LCAxNDYsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMTQ2LCAxLCAyMjIsIDE3OSwgMTQ2LCAxLCAyMjMsIAotICAgIDM5LCAxNDYsIDEsIDIxMCwgMTY4LCAxNDYsIDEsIDE0OSwgMjIyLCAxODAsIDE0NiwgMSwgMTQ5LCAyMzIsIDE4NSwgMTQ2LCAKLSAgICAyNSwgNSwgMTQ5LCAxNTYsIDE0NiwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE0NiwgMjEsIDIxMCwgODYsIDE0NiwgMjEsIAotICAgIDExMCwgMTQ2LCAyMSwgMTA1LCAxNDYsIDIxLCAxNTgsIDE0NiwgMjEsIDE2MSwgMTQ2LCAyMSwgMTg5LCAxNDYsIDIxLCAKLSAgICAxOTQsIDE0NiwgMjEsIDE5OCwgMTQ2LCAyMSwgMTk1LCAxNDYsIDIxLCAyMDAsIDE0NiwgMSwgMjIzLCAxODgsIDIsIDIzMCwgCi0gICAgMjI0LCAyNDcsIDI1NCwgMTQ2LCAxLCAyMjMsIDE4OCwgMiwgMjMyLCAxMDgsIDI0NywgMjU0LCAxNDYsIDIyMiwgMTE4LCAKLSAgICA3OCwgMTQ2LCAyMjIsIDExOCwgNTAsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDExMCwgMTQ2LCAyNDksIDk4LCAyMjcsIAotICAgIDE5NywgMTA1LCAxNDYsIDI0OSwgOTgsIDIyNywgMTk3LCAxNTgsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDE2MSwgMTQ2LCAKLSAgICAyNDksIDk4LCAyMjcsIDE5NywgMTIzLCAyMzMsIDE2LCAyMTYsIDIwMSwgMjE2LCAxOTYsIDI0OCwgNDgsIDE0NiwgMjQ5LCAKLSAgICA5OCwgMjQ4LCA0OSwgMjE5LCAxMTksIDE0NiwgMjM1LCAxNjEsIDE0NiwgMjQzLCAxMDMsIDc4LCAxODMsIDUsIDI1NCwgCi0gICAgMjU0LCAyNTEsIDI0MywgMTgzLCA1LCAyNTEsIDI0MywgMTgzLCA1LCAyMTMsIDE0NywgMTgzLCAxLCA2MSwgMTgzLCAxLCAKLSAgICAyNTUsIDczLCAxODMsIDEsIDczLCAxODMsIDEsIDIzNiwgMzMsIDE4MywgMSwgNzAsIDE4MywgMSwgMjE0LCAxMTgsIDE4MywgCi0gICAgMSwgMjQ1LCAyMDksIDE4MywgMSwgMjU0LCAyMDEsIDE4MywgMSwgMjI2LCAxODMsIDE4MywgMSwgMjUzLCAxOTIsIDE4MywgCi0gICAgMSwgMTc2LCAxODMsIDEsIDIzNCwgMTMyLCAxODMsIDEsIDI0MywgMTM1LCAxODMsIDEsIDI0MiwgMjQ5LCAxODMsIDEsIAotICAgIDIyOSwgNzcsIDE4MywgMSwgMjUxLCAzMywgMTgzLCAxLCAyNTAsIDE1NywgMTgzLCAxLCAyMzUsIDE0MSwgMTgzLCAxLCAKLSAgICAyMzUsIDExNCwgMTgzLCAxLCAyMjcsIDE2NSwgMTgzLCAxLCAyMTUsIDE1NiwgMTgzLCAxLCAyMTUsIDE0NCwgMTgzLCAxLCAKLSAgICAyNDgsIDEzNSwgMTgzLCAxLCAyNDgsIDExOSwgMTgzLCAxLCAyMjgsIDExMCwgMTgzLCAxLCAyMTcsIDEwNSwgMTgzLCAxLCAKLSAgICAyMTYsIDIwOCwgMTgzLCAxLCAyNDgsIDIyMSwgMTgzLCAxLCAyNDgsIDI1LCAxODMsIDEsIDE5NywgMTgzLCAxLCAxOTAsIAotICAgIDE4MywgMSwgMjI1LCAxNDcsIDE4MywgMSwgMjUyLCAxOTEsIDE4MywgMSwgMjUyLCAxOCwgMTgzLCAxLCAxODQsIDE4MywgMSwgCi0gICAgMTkxLCAxODMsIDEsIDIwNSwgMTgzLCAxLCAyMzMsIDEzNSwgMTgzLCAxLCAyMzIsIDE4NCwgMTgzLCAxLCAyMTQsIDI3LCAKLSAgICAxODMsIDEsIDIyMCwgMTAyLCAxODMsIDEsIDIwNiwgMTgzLCAxLCAxNjIsIDE4MywgNSwgMjI3LCAyMDUsIDE4MywgMjUsIDUsIAotICAgIDI1NSwgNzMsIDE4MywgMjUsIDUsIDczLCAxODMsIDI1LCA1LCAyMzYsIDMzLCAxODMsIDI1LCA1LCA3MCwgMTgzLCAyNSwgNSwgCi0gICAgMjE0LCAxMTgsIDE4MywgMjUsIDUsIDI0NSwgMjA5LCAxODMsIDI1LCA1LCAyNTQsIDIwMSwgMTgzLCAyNSwgNSwgMjI2LCAKLSAgICAxODMsIDE4MywgMjUsIDUsIDI1MywgMTkyLCAxODMsIDUsIDIxMywgMTUyLCAxODMsIDUsIDIxNCwgMjE4LCAxODMsIDEsIAotICAgIDIzNCwgMTE1LCAxODMsIDEsIDI0MiwgMjI2LCAxODMsIDEsIDIxMCwgMTE2LCAxODMsIDEsIDIyMiwgMTc5LCAxODMsIDEsIAotICAgIDI0NCwgMTk2LCAxODMsIDIxLCAyMTAsIDg2LCAxODMsIDIxLCAxMTAsIDE4MywgMjEsIDEwNSwgMTgzLCAyMSwgMTU4LCAKLSAgICAxODMsIDIxLCAxNjEsIDE4MywgMjEsIDE4OSwgMTgzLCAyMSwgMTk0LCAxODMsIDIxLCAxOTgsIDE4MywgMjEsIDE5NSwgCi0gICAgMTgzLCAyMSwgMjAwLCAxODMsIDIxNiwgNzQsIDE4MywgMjU0LCAyNTMsIDE4MywgMjM1LCAxNzgsIDE4MywgMjE0LCAxNDYsIAotICAgIDE4MywgMjQ1LCAxODEsIDIyNiwgMTg4LCAxODMsIDUsIDIxMSwgNzgsIDE3MSwgNSwgMjUwLCAyNTUsIDE3MSwgNSwgMjU0LCAKLSAgICA3NSwgMTcxLCA1LCAyMTMsIDE0NywgMTcxLCAxLCA2MSwgMTcxLCAxLCAyNTUsIDczLCAxNzEsIDEsIDczLCAxNzEsIDEsIAotICAgIDIzNiwgMzMsIDE3MSwgMSwgNzAsIDE3MSwgMSwgMjE0LCAxMTgsIDE3MSwgMSwgMTQ5LCAxNTMsIDE3MSwgMSwgMTQ5LCAKLSAgICAxNTYsIDE3MSwgMjUsIDI1MSwgMiwgNzUsIDE3MSwgMSwgNzUsIDE3MSwgMSwgMjU0LCAyMDEsIDE3MSwgMjUsIDI1MSwgMiwgCi0gICAgNzYsIDE3MSwgMSwgNzYsIDE3MSwgMSwgMjUzLCAxOTIsIDE3MSwgMSwgMTc2LCAxNzEsIDEsIDIzNCwgMTMyLCAxNzEsIDEsIAotICAgIDI0MywgMTM1LCAxNzEsIDEsIDI0MiwgMjQ5LCAxNzEsIDEsIDIyOSwgNzcsIDE3MSwgMSwgMjUxLCAzMywgMTcxLCAxLCAKLSAgICAyNTAsIDE1NywgMTcxLCAxLCAyMzUsIDE0MSwgMTcxLCAxLCAyMzUsIDExNCwgMTcxLCAxLCAyMjcsIDE2NSwgMTcxLCAxLCAKLSAgICAyMTUsIDE1NiwgMTcxLCAxLCAyMTUsIDE0NCwgMTcxLCAxLCAyNDgsIDEzNSwgMTcxLCAxLCAyNDgsIDExOSwgMTcxLCAxLCAKLSAgICAyMjgsIDExMCwgMTcxLCAxLCAyMTcsIDEwNSwgMTcxLCAxLCAyMTYsIDIwOCwgMTcxLCAxLCAyNDgsIDIyMSwgMTcxLCAxLCAKLSAgICAyNDgsIDI1LCAxNzEsIDEsIDE5NywgMTcxLCAxLCAxOTAsIDE3MSwgMSwgMjI1LCAxNDcsIDE3MSwgMSwgMjUyLCAxOTEsIAotICAgIDE3MSwgMSwgMjUyLCAxOCwgMTcxLCAxLCAxODQsIDE3MSwgMSwgMTkxLCAxNzEsIDEsIDIwNSwgMTcxLCAxLCAyMzMsIDEzNSwgCi0gICAgMTcxLCAxLCAyMzIsIDE4NCwgMTcxLCAxLCAyMTQsIDI3LCAxNzEsIDEsIDIyMCwgMTAyLCAxNzEsIDEsIDIxOCwgMjIzLCAKLSAgICAxNzEsIDEsIDIwNiwgMTcxLCAxLCAxNjIsIDE3MSwgNSwgMjI3LCAyMDUsIDE3MSwgNSwgMjUzLCAxNzUsIDE3MSwgMjUsIDUsIAotICAgIDI1NSwgNzMsIDE3MSwgMjUsIDUsIDczLCAxNzEsIDI1LCA1LCAyMzYsIDMzLCAxNzEsIDI1LCA1LCA3MCwgMTcxLCAyNSwgNSwgCi0gICAgMjE0LCAxMTgsIDE3MSwgMjUsIDUsIDE0OSwgMTUzLCAxNzEsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNzEsIDI1LCA1LCAKLSAgICAyNTEsIDIsIDc1LCAxNzEsIDI1LCA1LCA3NSwgMTcxLCAyNSwgNSwgMjU0LCAyMDEsIDE3MSwgMjUsIDUsIDI1MSwgMiwgNzYsIAotICAgIDE3MSwgMjUsIDUsIDc2LCAxNzEsIDI1LCA1LCAyNTMsIDE5MiwgMTcxLCA1LCAyMTMsIDE1MiwgMTcxLCAyMjYsIDIwNCwgCi0gICAgMTcxLCAxLCAxNDksIDIyMiwgMTgwLCAxNzEsIDEsIDE0OSwgMjMyLCAxODUsIDE3MSwgMjUsIDUsIDE0OSwgMTU2LCAxNzEsIAotICAgIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNzEsIDIxLCAyMTAsIDg2LCAxNzEsIDIxLCAxMTAsIDE3MSwgMjEsIDEwNSwgMTcxLCAKKyAgICA2LCAxLCAyMTAsIDE1OSwgNDMsIDQyLCAxMjcsIDIyMywgNTEsIDIxOSwgNDcsIDQ0LCA0MiwgMTI3LCAyNTAsIDMyLCAyNTUsIAorICAgIDE1LCAxMjEsIDIzMiwgMjE0LCAyNDIsIDEzOCwgMjU1LCAxNSwgNywgNCwgMSwgNjEsIDcsIDQsIDEsIDI1MywgMTU5LCA3LCAKKyAgICA0LCAxLCAyNTEsIDY3LCA3LCA0LCAxLCAyNDksIDYxLCA3LCA0LCAxLCA3NSwgNywgNCwgMSwgMjQ1LCA3LCA3LCA0LCAxLCAKKyAgICAyNDMsIDIwMywgNywgNCwgMSwgMjQyLCA2MSwgNywgNCwgMSwgNzMsIDcsIDQsIDEsIDIzNSwgMTQ1LCA3LCA0LCAxLCAyMzUsIAorICAgIDI0LCA3LCA0LCAxLCAxNTYsIDcsIDQsIDEsIDE5MywgNywgNCwgMSwgMjMwLCAyNiwgNywgNCwgMSwgNzYsIDcsIDQsIDEsIAorICAgIDIyNiwgMTA2LCA3LCA0LCAxLCAyMjQsIDk3LCA3LCA0LCAxLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTIsIDcsIDQsIDEsIDIxNywgCisgICAgMTUzLCA3LCA0LCAxLCA3MCwgNywgNCwgMSwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxMiwgOTgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKKyAgICA3LCA0LCAxLCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNTksIDQzLCAyNDksIDEwMCwgMTI3LCA2NywgMjMyLCAyMTQsIAorICAgIDQ0LCAyNDksIDEwMCwgMTI3LCAxODMsIDIyOCwgNzQsIDIxOSwgMTksIDIzNSwgMTk0LCAyNDUsIDMyLCA3OCwgMjUwLCAKKyAgICAxNzcsIDUwLCAyMjQsIDIyOSwgNTAsIDI0OSwgOTksIDUwLCAyMTEsIDQwLCA1MCwgMjUxLCAxMzYsIDEzMCwgMjIxLCAxNzQsIAorICAgIDUwLCAyNDgsIDIsIDI0OSwgMTY0LCA1MCwgMjQ0LCAxMzcsIDIyNiwgMTU1LCAyMzUsIDIzOSwgMjMzLCA0MywgNTIsIDI1NCwgCisgICAgMTExLCAyMjMsIDI1NSwgNzgsIDIyOCwgNTMsIDUwLCAyMTksIDUzLCAyNDAsIDE2OSwgMjIzLCAxMDMsIDUwLCAyMzEsIAorICAgIDIzMywgMjQ4LCA3MiwgNTAsIDIyNSwgMjIsIDUwLCAyMTgsIDI0LCAxMDUsIDIxOCwgMjQsIDE1OCwgMjU1LCA0LCAyNTUsIAorICAgIDE1LCAyMzAsIDIyOSwgNTAsIDIyNSwgNjksIDUwLCAyMzAsIDIyNSwgMjQ3LCAxMjEsIDI1MCwgMTg0LCAyMTgsIDI0LCAKKyAgICAxMTAsIDIzMSwgMTQ5LCAyMjYsIDE1NSwgMjM1LCAyMzksIDIyMiwgMjQ4LCA1MiwgMjU0LCAxMTEsIDIyMywgMjU1LCA3OCwgCisgICAgMjEyLCAxMTQsIDI0NCwgMywgMTIzLCAyMjQsIDIyLCAyMTIsIDExNCwgMjQ0LCAzLCAxMjMsIDI0MiwgMjgsIDIxMiwgMTE0LCAKKyAgICAyNDQsIDMsIDEzNCwgMjI0LCAyMCwgMjM1LCAxOTQsIDIyNCwgMTQsIDc4LCA3LCA2LCAxLCAxMTUsIDIsIDI0MiwgMTM3LCAKKyAgICA3LCA2LCAxLCAxMTUsIDIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCA3LCA2LCAxLCAxMTUsIDIsIDE4MywgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNDgsIDIsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzUsIDQ4LCA3LCA2LCAxLCAyNTQsIDI0NCwgCisgICAgNywgNiwgMSwgMjUxLCA2OCwgMiwgMjUwLCAxODQsIDcsIDYsIDEsIDE2MCwgMiwgMjQyLCAxMzcsIDcsIDYsIDEsIDE2MCwgCisgICAgMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDcsIDYsIDEsIDE2MCwgMiwgMjQ4LCAyLCA3LCA2LCAxLCAyNDAsIAorICAgIDE1NSwgMiwgMjQyLCAxMzcsIDcsIDYsIDEsIDI0MCwgMTU1LCAyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMTU1LCAyLCAyNTAsIAorICAgIDMxLCA3LCA2LCAxLCAyNDAsIDE1NSwgMiwgMjQ4LCAyLCA3LCA2LCAxLCAyNDUsIDYwLCA3LCA2LCAxLCAyMzAsIDI3LCAyLCAKKyAgICAxODMsIDcsIDYsIDEsIDE0NCwgMiwgMjQyLCAxMzcsIDcsIDYsIDEsIDE0NCwgMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDI1MCwgMzEsIDcsIDYsIDEsIDE0NCwgMiwgMTgzLCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgMiwgMjMwLCA4NSwgNTAsIDcsIAorICAgIDYsIDEsIDE0NCwgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQyLCAxMzcsIDcsIDYsIDEsIDEwNCwgMiwgMTQyLCA3LCA2LCAKKyAgICAxLCAxMDQsIDIsIDI1MCwgMzEsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAyMTYsIDE1MiwgNywgNCwgMSwgMjIwLCA3NywgMjIyLCA5MiwgNywgNCwgMSwgMTE1LCAyLCAyNDIsIDEzNywgCisgICAgNywgNCwgMSwgMTE1LCAyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgNywgNCwgMSwgMTE1LCAyLCAxODMsIDcsIAorICAgIDQsIDEsIDExNSwgMiwgMjQ4LCAyLCA3LCA0LCAxLCAxMTUsIDIsIDIyMiwgMjM1LCA0OCwgNywgNCwgMSwgMjU0LCAyNDQsIAorICAgIDcsIDQsIDEsIDI1MSwgNjgsIDIsIDI1MCwgMTg0LCA3LCA0LCAxLCAxNjAsIDIsIDI0MiwgMTM3LCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCA3LCA0LCAxLCAxNjAsIDIsIDI0OCwgMiwgNywgNCwgMSwgMjQwLCAKKyAgICAxNTUsIDIsIDI0MiwgMTM3LCA3LCA0LCAxLCAyNDAsIDE1NSwgMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE1NSwgMiwgMjUwLCAKKyAgICAzMSwgNywgNCwgMSwgMjQwLCAxNTUsIDIsIDI0OCwgMiwgNywgNCwgMSwgMjQ1LCA2MCwgNywgNCwgMSwgMjMwLCAyNywgMiwgCisgICAgMTgzLCA3LCA0LCAxLCAxNDQsIDIsIDI0MiwgMTM3LCA3LCA0LCAxLCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICAyNTAsIDMxLCA3LCA0LCAxLCAxNDQsIDIsIDE4MywgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDIsIDI0NywgMTcwLCA1MCwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMTA0LCAyLCAyNDIsIDEzNywgNywgNCwgMSwgMTA0LCAyLCAxNDIsIDcsIDQsIAorICAgIDEsIDEwNCwgMiwgMjUwLCAzMSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAxNDIsIAorICAgIDcsIDQsIDEsIDIxNiwgMTUyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjQ4LCAyLCA3LCA2LCAxLCAxMTUsIDIsIDIzMSwgCisgICAgMjMzLCA3LCA0LCAxLCAxMTUsIDIsIDIzMSwgMjMzLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDI1MSwgMTQ3LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCA3LCA0LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCA3LCA2LCAKKyAgICAxLCAyNTEsIDY4LCAyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNjgsIDIsIDE0MiwgNywgNiwgMSwgMjUxLCA2OCwgMiwgMjUwLCAKKyAgICAzMSwgNywgNCwgMSwgMjUxLCA2OCwgMiwgMjUwLCAzMSwgNywgNiwgMSwgMjUxLCA2OCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAKKyAgICAyNTEsIDY4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI1MSwgNjgsIDIsIDI1MCwgMjM1LCA3LCA0LCAxLCAyNTEsIDY4LCAyLCAKKyAgICAyNTAsIDIzNSwgNywgNiwgMSwgMjQ5LCA2MiwgMiwgMjUwLCAyMzUsIDcsIDQsIDEsIDI0OSwgNjIsIDIsIDI1MCwgMjM1LCAKKyAgICA3LCA2LCAxLCAyNDksIDYyLCAyLCA5MSwgNywgNCwgMSwgMjQ5LCA2MiwgMiwgOTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAKKyAgICAyMzMsIDcsIDQsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDcsIDYsIDEsIDE2MCwgMiwgMjUxLCAxNDcsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjUxLCAxNDcsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNiwgMSwgCisgICAgMTYwLCAyLCAyMjYsIDIyNSwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyNSwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDIzNSwgCisgICAgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDIzNSwgNywgNiwgMSwgMjQzLCAyMDQsIDIsIDI1MCwgMzEsIDcsIDQsIDEsIDI0MywgCisgICAgMjA0LCAyLCAyNTAsIDMxLCA3LCA2LCAxLCAyNDMsIDIwNCwgMiwgMjUxLCAxNDcsIDcsIDQsIDEsIDI0MywgMjA0LCAyLCAKKyAgICAyNTEsIDE0NywgNywgNiwgMSwgMjQzLCAyMDQsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQzLCAyMDQsIDIsIDU5LCA0OCwgNywgCisgICAgNiwgMSwgMjQzLCAyMDQsIDIsIDI1MCwgMTg0LCA3LCA0LCAxLCAyNDMsIDIwNCwgMiwgMjUwLCAxODQsIDcsIDYsIDEsIAorICAgIDI0MiwgNjIsIDIsIDI1MCwgMzEsIDcsIDQsIDEsIDI0MiwgNjIsIDIsIDI1MCwgMzEsIDcsIDYsIDEsIDI0MiwgNjIsIDIsIAorICAgIDkxLCA3LCA0LCAxLCAyNDIsIDYyLCAyLCA5MSwgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDE4MywgNywgNCwgMSwgMjQwLCAKKyAgICAxNTUsIDIsIDE4MywgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDIzMSwgMjMzLCA3LCA0LCAxLCAyNDAsIDE1NSwgMiwgMjMxLCAKKyAgICAyMzMsIDcsIDYsIDEsIDI0MCwgMTU1LCAyLCAyNTEsIDE0NywgNywgNCwgMSwgMjQwLCAxNTUsIDIsIDI1MSwgMTQ3LCA3LCAKKyAgICA2LCAxLCAyNDAsIDE1NSwgMiwgMjI2LCAyMjUsIDcsIDQsIDEsIDI0MCwgMTU1LCAyLCAyMjYsIDIyNSwgNywgNiwgMSwgCisgICAgMjQwLCAxNTUsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ3LCAxMjAsIDczLCA3LCA2LCAyNywgMjM2LCAzMiwgNywgNCwgMjcsIAorICAgIDIzNiwgMzIsIDcsIDYsIDEsIDIzNSwgMTQ2LCAyLCAyNTAsIDMxLCA3LCA0LCAxLCAyMzUsIDE0NiwgMiwgMjUwLCAzMSwgNywgCisgICAgNiwgMSwgMjM1LCAyNSwgMiwgMjUwLCAxODQsIDcsIDQsIDEsIDIzNSwgMjUsIDIsIDI1MCwgMTg0LCA3LCA0LCAxLCAyMzMsIAorICAgIDI0MCwgNywgNiwgMSwgMjMzLCAxNTAsIDIsIDE0MiwgNywgNCwgMSwgMjMzLCAxNTAsIDIsIDE0MiwgNywgNiwgMSwgMjMzLCAKKyAgICAxNTAsIDIsIDI1MCwgMTg0LCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMjUwLCAxODQsIDcsIDYsIDEsIDIzMywgMTUwLCAyLCAKKyAgICAyNTAsIDIzNSwgNywgNCwgMSwgMjMzLCAxNTAsIDIsIDI1MCwgMjM1LCA3LCA2LCAxLCAyMzMsIDE1MCwgMiwgMjMwLCAyMjUsIAorICAgIDI0NywgMTIxLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMjMwLCAyMjUsIDI0NywgMTIxLCA3LCA2LCAxLCAyMzMsIDE1MCwgMiwgCisgICAgOTEsIDcsIDQsIDEsIDIzMywgMTUwLCAyLCA5MSwgNywgNiwgMSwgMjMwLCAyNywgMiwgMTQyLCA3LCA0LCAxLCAyMzAsIDI3LCAKKyAgICAyLCAxNDIsIDcsIDYsIDEsIDIzMCwgMjcsIDIsIDI1MCwgMTg0LCA3LCA0LCAxLCAyMzAsIDI3LCAyLCAyNTAsIDE4NCwgNywgCisgICAgNiwgMSwgMjMwLCAyNywgMiwgMjUwLCAyMzUsIDcsIDQsIDEsIDIzMCwgMjcsIDIsIDI1MCwgMjM1LCA3LCA0LCAxLCAyMzAsIAorICAgIDI3LCAyMjQsIDIwNSwgMjUxLCA3OSwgMjU0LCA1OCwgNywgNiwgMSwgMjQ1LCAxMzksIDcsIDQsIDEsIDI0NSwgMTM5LCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDIzMSwgMjMzLCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMzLCA3LCA2LCAxLCAxNDQsIDIsIDI1MSwgCisgICAgMTQ3LCA3LCA0LCAxLCAxNDQsIDIsIDI1MSwgMTQ3LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAxNDIsIDcsIDQsIDEsIDE0NCwgCisgICAgMiwgNTIsIDE0MiwgNywgNiwgMjcsIDIyNiwgMjM1LCA3LCA0LCAyNywgMjI2LCAyMzUsIDcsIDYsIDEsIDIyMywgMjI1LCAyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDIyMywgMjI1LCAyLCAxNDIsIDcsIDYsIDEsIDIyMywgMjI1LCAyLCAyNTAsIDE4NCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjUsIDIsIDI1MCwgMTg0LCA3LCA2LCAxLCAyMjMsIDIyNSwgMiwgMjUwLCAyMzUsIDcsIDQsIDEsIDIyMywgMjI1LCAKKyAgICAyLCAyNTAsIDIzNSwgNywgNiwgMSwgMjIyLCA5MywgMiwgMTQyLCA3LCA0LCAxLCAyMjIsIDkzLCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDIyMiwgOTMsIDIsIDI1MCwgMzEsIDcsIDQsIDEsIDIyMiwgOTMsIDIsIDI1MCwgMzEsIDcsIDYsIDEsIDIyMiwgOTMsIDIsIAorICAgIDI1MCwgMTg0LCA3LCA0LCAxLCAyMjIsIDkzLCAyLCAyNTAsIDE4NCwgNywgNiwgMSwgMjIyLCA5MywgMiwgMjUwLCAyMzUsIAorICAgIDcsIDQsIDEsIDIyMiwgOTMsIDIsIDI1MCwgMjM1LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjUwLCAxODQsIDcsIDQsIDEsIAorICAgIDIxNywgMTU0LCAyLCAyNTAsIDE4NCwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI1MCwgMjM1LCA3LCA0LCAxLCAyMTcsIDE1NCwgCisgICAgMiwgMjUwLCAyMzUsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDkxLCA3LCA2LCAxLCAKKyAgICAxMDQsIDIsIDE4MywgNywgNCwgMSwgMTA0LCAyLCAxODMsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDcsIDQsIDEsIAorICAgIDEwNCwgMiwgMjMxLCAyMzMsIDcsIDYsIDEsIDEwNCwgMiwgMjUxLCAxNDcsIDcsIDQsIDEsIDEwNCwgMiwgMjUxLCAxNDcsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjIyLCAyMzUsIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDIyMiwgMjM1LCA0OCwgNywgNiwgMSwgCisgICAgMTA0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDcsIAorICAgIDQsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI1MCwgMzEsIDcsIDQsIDEsIDIxMiwgOTksIAorICAgIDIsIDI1MCwgMzEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDMxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzMSwgCisgICAgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0OCwgMiwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDE0MiwgNywgNCwgMSwgMjEwLCAKKyAgICAxNjAsIDIsIDE0MiwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgCisgICAgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjM1LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyMzUsIDcsIDQsIDEsIAorICAgIDE5OSwgMjIyLCA5MiwgNywgNCwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCA1NywgMiwgMTAzLCA3LCA2LCAxLCA1NywgMiwgCisgICAgMjE2LCAxMiwgNywgNCwgMSwgNTcsIDIsIDIxNiwgMTIsIDcsIDYsIDEsIDEzOCwgMTk0LCA3LCA0LCAxLCAxMzgsIDE5NCwgCisgICAgNywgNiwgMSwgMjA0LCA3NiwgNywgNiwgMSwgMjUxLCA2OCwgMiwgMTAzLCA3LCA0LCAxLCAyNTEsIDY4LCAyLCAxMDMsIDcsIAorICAgIDYsIDEsIDI1NCwgMjIwLCAyNDksIDYxLCA3LCA2LCAxLCAyNDksIDYyLCAyLCAxMDMsIDcsIDYsIDEsIDI0OSwgNjIsIDIsIAorICAgIDIxNiwgMTIsIDcsIDQsIDEsIDI0OSwgNjIsIDIsIDIxNiwgMTIsIDcsIDQsIDEsIDIxNSwgOTQsIDI0OCwgNTUsIDcsIDYsIAorICAgIDEsIDIyMywgNTAsIDc1LCA3LCA2LCAxLCAyMjEsIDE5NiwgNywgNiwgMSwgMjA0LCA3NSwgNywgNiwgMSwgMjQ1LCA4LCAyLCAKKyAgICAxMDMsIDcsIDQsIDEsIDI0NSwgOCwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDIwNCwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIAorICAgIDEwOCwgNywgNCwgMSwgMjQwLCAyMDIsIDcsIDYsIDEsIDIzNSwgMTg2LCA3LCA2LCAxLCAyNDAsIDE1NSwgMiwgOTEsIDcsIAorICAgIDYsIDEsIDIzNSwgMjUsIDIsIDEwMywgNywgNCwgMSwgMjM1LCAyNSwgMiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgCisgICAgMTMwLCA3LCA0LCAxLCAyMzMsIDEwMSwgMiwgOTEsIDcsIDYsIDEsIDIxNSwgOTQsIDE5MywgNywgNiwgMSwgMjMwLCAyNywgCisgICAgMiwgNDMsIDEwMywgNywgNCwgMSwgMjMwLCAyNywgMiwgMTk5LCA0NCwgMjMzLCAzNywgNywgNiwgMSwgMTQ0LCAyLCAyMzAsIAorICAgIDIyNSwgMTgzLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCA3LCA2LCAxLCAKKyAgICAyMjYsIDIyMCwgNywgNCwgMSwgMjI2LCAyMjAsIDcsIDYsIDEsIDIyNiwgMTA3LCAyLCAxMDMsIDcsIDQsIDEsIDIyNiwgCisgICAgMTA3LCAyLCAxMDMsIDcsIDEsIDIxMCwgMjE0LCA3LCA2LCAxLCAxMzgsIDEwNSwgNywgNCwgMSwgMTM4LCAxMDUsIDcsIDYsIAorICAgIDEsIDI0NSwgNzYsIDcsIDEsIDIyMywgNTAsIDI0NSwgNzcsIDIzMiwgMTI0LCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjI2LCAKKyAgICA2NywgMTAzLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA2LCAxLCAKKyAgICAyMTcsIDE1NCwgMiwgMjIzLCA1NiwgMTAzLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDI0MCwgMjQ5LCA3LCA2LCAxLCAyMTQsIDE1NywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNiwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDEwMywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDEwMywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCA0LCAKKyAgICAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDI0NSwgOSwgNywgNiwgMSwgMjQ1LCAxMCwgMjIzLCA0OSwgNywgNCwgMSwgCisgICAgMjQ1LCAxMCwgMjIzLCA0OSwgNywgNCwgMSwgMjQ1LCAxMCwgMiwgMjE3LCA3OCwgNywgMSwgMTEzLCAyLCA5MSwgNywgNiwgCisgICAgMSwgMTM4LCAxODksIDcsIDQsIDEsIDEzOCwgMTg5LCA3LCAxLCAyMzUsIDE5NCwgMjQyLCAxODEsIDIxOCwgMTMxLCAyLCAKKyAgICA5MSwgNywgMSwgMjExLCAxODEsIDcsIDEsIDI0OCwgNDgsIDI1MCwgMTIsIDcsIDEsIDIzMywgNzgsIDI1MCwgMTIsIDcsIDEsIAorICAgIDI1NCwgMTM4LCAyNTAsIDEyLCA3LCAxLCAyMjMsIDU2LCAyNTAsIDEyLCA3LCA2LCAxLCAyNDYsIDQxLCAyLCAyNTAsIDIzNSwgCisgICAgNywgNiwgMSwgMjQ5LCA2MiwgMiwgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjM1LCA3LCA0LCAxLCAyNDYsIDQxLCAyLCAKKyAgICAyNTAsIDIzNSwgNywgNiwgMSwgMjMyLCAxODksIDcsIDYsIDEsIDIzMywgMTUwLCAyLCA0LCAxLCAyMzUsIDE0NSwgNywgNCwgCisgICAgMSwgMjMyLCAxODksIDcsIDYsIDEsIDIyOCwgMTg3LCA3LCA2LCAxLCAyMzAsIDI3LCAyLCA0LCAxLCAyMzUsIDE0NSwgNywgCisgICAgNCwgMSwgMjI4LCAxODcsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAyMzUsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAyMzUsIDcsIAorICAgIDYsIDEsIDI0MCwgMTU1LCAyLCAyNTAsIDIzNSwgNywgNCwgMSwgMjQwLCAxNTUsIDIsIDI1MCwgMjM1LCA3LCA2LCAxLCAKKyAgICAxNDQsIDIsIDI1MCwgMjM1LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMjM1LCA3LCA2LCAxLCAxMDQsIDIsIDI1MCwgMjM1LCAKKyAgICA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMjM1LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMywgMjIsIDIzMSwgMjMzLCA3LCA0LCAKKyAgICAxLCAxMDQsIDIsIDI0OCwgMywgMjIsIDIzMSwgMjMzLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMywgMjIsIDE0MiwgNywgNCwgCisgICAgMSwgMTA0LCAyLCAyNDgsIDMsIDIyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAzLCAyMiwgMjUwLCAyMzUsIDcsIDQsIAorICAgIDEsIDEwNCwgMiwgMjQ4LCAzLCAyMiwgMjUwLCAyMzUsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAzLCAyMiwgMjQyLCAxMzcsIAorICAgIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAzLCAyMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDIxNSwgOTQsIDc1LCA3LCA2LCAxLCAKKyAgICAxMTUsIDIsIDI0OCwgMywgMjIsIDIzMSwgMjMzLCA3LCA0LCAxLCAxMTUsIDIsIDI0OCwgMywgMjIsIDIzMSwgMjMzLCA3LCAKKyAgICA2LCAxLCAxMTUsIDIsIDU5LCA3NywgMjIsIDIzMSwgMjMzLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA3NywgMjIsIDIzMSwgCisgICAgMjMzLCA3LCA2LCAxLCAyNTQsIDI0NSwgMiwgMjMxLCAyMzMsIDcsIDQsIDEsIDI1NCwgMjQ1LCAyLCAyMzEsIDIzMywgNywgCisgICAgNiwgMSwgMjQzLCAyMDQsIDIsIDkxLCA3LCA0LCAxLCAyNDMsIDIwNCwgMiwgOTEsIDcsIDYsIDEsIDI0MywgMjA0LCAyLCAKKyAgICAyNTAsIDIzNSwgNywgNCwgMSwgMjQzLCAyMDQsIDIsIDI1MCwgMjM1LCA3LCA2LCAxLCAyMzUsIDI1LCAyLCAyNTAsIDIzNSwgCisgICAgNywgNCwgMSwgMjM1LCAyNSwgMiwgMjUwLCAyMzUsIDcsIDYsIDEsIDE0NCwgMiwgMjI2LCAyMjUsIDcsIDQsIDEsIDE0NCwgCisgICAgMiwgMjI2LCAyMjUsIDcsIDYsIDEsIDE0NCwgMiwgMjI2LCAyMjYsIDIyLCAyMzEsIDIzMywgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICAyMjYsIDIyNiwgMjIsIDIzMSwgMjMzLCA3LCA2LCAxLCAyNDUsIDEwLCAyLCAyNTAsIDIzNSwgNywgNCwgMSwgMjQ1LCAxMCwgCisgICAgMiwgMjUwLCAyMzUsIDcsIDQsIDEsIDIzNSwgMTQ2LCAyLCAyNTAsIDIzNSwgNywgNiwgMSwgMjQ2LCA0MCwgNywgNiwgMSwgCisgICAgMjQ5LCA2MiwgMiwgNCwgMSwgMjEwLCAxNTksIDcsIDQsIDEsIDI0NiwgNDAsIDcsIDYsIDEsIDI0MywgMjA0LCAyLCAxNDIsIAorICAgIDcsIDQsIDEsIDI0MywgMjA0LCAyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMjAwLCA3LCA2LCAxLCAyMTEsIDE4MSwgNywgNiwgMSwgCisgICAgMjMwLCAyNywgMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDIzMCwgMjcsIDIsIDI0MiwgMTM3LCA3LCA2LCAxLCAxMTUsIDIsIAorICAgIDIyMiwgMjM1LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyMjIsIDIzNSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIAorICAgIDI1NCwgMjQ1LCAyLCAxNDIsIDcsIDQsIDEsIDI1NCwgMjQ1LCAyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE4LCAxMDQsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE4LCAxMDQsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgNTIsIDI0MiwgCisgICAgMTM3LCA3LCA0LCAxLCAxMTUsIDIsIDUyLCAyNDIsIDEzNywgNywgNiwgMSwgMTE1LCAyLCAyMzUsIDE5NCwgMjUxLCAxNDcsIAorICAgIDcsIDQsIDEsIDExNSwgMiwgMjM1LCAxOTQsIDI1MSwgMTQ3LCA3LCA2LCAxLCAxNjAsIDIsIDUyLCAyNDIsIDEzNywgNywgNCwgCisgICAgMSwgMTYwLCAyLCA1MiwgMjQyLCAxMzcsIDcsIDYsIDEsIDE2MCwgMiwgMjM1LCAxOTQsIDI1MSwgMTQ3LCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIzNSwgMTk0LCAyNTEsIDE0NywgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDUyLCAyNDIsIDEzNywgNywgNCwgMSwgCisgICAgMjQwLCAxNTUsIDIsIDUyLCAyNDIsIDEzNywgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDIzNSwgMTk0LCAyNTEsIDE0NywgNywgCisgICAgNCwgMSwgMjQwLCAxNTUsIDIsIDIzNSwgMTk0LCAyNTEsIDE0NywgNywgNiwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxMzcsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTM3LCA3LCA2LCAxLCAxNDQsIDIsIDIzNSwgMTk0LCAyNTEsIDE0NywgNywgNCwgMSwgCisgICAgMTQ0LCAyLCAyMzUsIDE5NCwgMjUxLCAxNDcsIDcsIDYsIDEsIDIyMywgMjI1LCAyLCA1MiwgMjQyLCAxMzcsIDcsIDQsIDEsIAorICAgIDIyMywgMjI1LCAyLCA1MiwgMjQyLCAxMzcsIDcsIDYsIDEsIDIyMywgMjI1LCAyLCAyMzUsIDE5NCwgMjUxLCAxNDcsIDcsIAorICAgIDQsIDEsIDIyMywgMjI1LCAyLCAyMzUsIDE5NCwgMjUxLCAxNDcsIDcsIDYsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTM3LCA3LCAKKyAgICA0LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDEzNywgNywgNiwgMSwgMTA0LCAyLCAyMzUsIDE5NCwgMjUxLCAxNDcsIDcsIDQsIDEsIAorICAgIDEwNCwgMiwgMjM1LCAxOTQsIDI1MSwgMTQ3LCA3LCA2LCAxLCAyMjIsIDkzLCAyLCAyNDksIDIyMSwgNTEsIDcsIDQsIDEsIAorICAgIDIyMiwgOTMsIDIsIDI0OSwgMjIxLCA1MSwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI0OSwgMjIxLCA1MSwgNywgNCwgMSwgCisgICAgMjE3LCAxNTQsIDIsIDI0OSwgMjIxLCA1MSwgNywgNiwgMSwgMjEwLCAyMzEsIDcsIDQsIDEsIDIxMCwgMjMxLCA3LCA2LCAxLCAKKyAgICAyNDIsIDYyLCAyLCAyNTAsIDIzNSwgNywgNCwgMSwgMjQyLCA2MiwgMiwgMjUwLCAyMzUsIDcsIDYsIDEsIDIzMCwgMjcsIDIsIAorICAgIDE5OSwgNDQsIDIzMywgMzcsIDcsIDQsIDEsIDI0OSwgNjIsIDIsIDI0OSwgMTAxLCA3LCA2LCAxLCAyMjYsIDEzNSwgNywgNCwgCisgICAgMSwgMjI2LCAxMzUsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAxMDMsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE4NCwgNywgCisgICAgNCwgMSwgMTYwLCAyLCAyNTAsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDgsIDMsIDIyLCAyMzEsIDIzMywgNywgNCwgMSwgCisgICAgMTQ0LCAyLCAyNDgsIDMsIDIyLCAyMzEsIDIzMywgNywgNiwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAyMiwgMjMxLCAyMzMsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMjE2LCA5MCwgMjIsIDIzMSwgMjMzLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMTQ0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzMsIDcsIDQsIDEsIDE0NCwgMiwgCisgICAgNTksIDc3LCAyMiwgMjMxLCAyMzMsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyMzEsIDIzMywgNywgNCwgMSwgMjExLCAxMTgsIAorICAgIDIsIDIzMSwgMjMzLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMjQ5LCAxMDEsIDcsIDQsIDEsIDIzMCwgMjcsIDIsIDI0OSwgCisgICAgMTAxLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjQ5LCAxMDEsIDcsIDQsIDEsIDI0NywgMTIwLCAyMzUsIDE0NSwgNywgNCwgCisgICAgMSwgMjQ4LCAxNDQsIDI0NywgMjIxLCA3LCA0LCAxLCAyMjQsIDMyLCAyNDcsIDIyMSwgNywgNiwgMSwgMTE1LCAyLCA5MSwgCisgICAgNywgNiwgMSwgMjUxLCA2OCwgMiwgOTEsIDcsIDQsIDEsIDI1MSwgNjgsIDIsIDkxLCA3LCA2LCAxLCAyMzMsIDE1MCwgMiwgCisgICAgMTMwLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjQ4LCAwLCA5MSwgNywgNCwgMSwgMjIyLCA5MywgMiwgMjE3LCAyNTEsIAorICAgIDIxNywgNzgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgNywgNiwgMSwgMjQyLCAxODEsIDIxOCwgCisgICAgMTMwLCA3LCA0LCAxLCAyNDIsIDE4MSwgMjE4LCAxMzAsIDcsIDYsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgMTA0LCAxMzAsIAorICAgIDcsIDYsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCA2LCAxLCAxNjAsIDIsIDkxLCA3LCA0LCAxLCAxNjAsIDIsIDkxLCA3LCAKKyAgICA2LCAxLCAyMzUsIDE0NiwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTQ2LCAyLCA5MSwgNywgNiwgMSwgNCwgMjI0LCA5OCwgMiwgCisgICAgMjQxLCA1MywgMjE3LCA3OCwgNywgNCwgMSwgMjI0LCA5OCwgMiwgMjQxLCA1MywgMjE3LCA3OCwgNywgNiwgMSwgMjIzLCAKKyAgICAyMjUsIDIsIDkxLCA3LCA0LCAxLCAyMjMsIDIyNSwgMiwgOTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCA2MSwgNywgNCwgMSwgMjU0LCAxNDQsIDcsIDQsIDEsIDIxNSwgCisgICAgOTQsIDI1NCwgMTQ0LCA3LCA0LCAxLCA1NywgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc2LCA3LCA0LCAxLCAyNTEsIDY4LCAyLCAKKyAgICAyNDksIDEwMSwgNywgNCwgMSwgMjQ5LCA2MiwgMiwgMjE3LCA3OCwgNywgNCwgMSwgMjQ5LCA2MiwgMiwgMTAzLCA3LCA0LCAKKyAgICAxLCAyMjMsIDUwLCA3NSwgNywgNCwgMSwgMjIxLCAxOTYsIDcsIDQsIDEsIDIyMSwgMTk3LCAyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIwNCwgNzUsIDcsIDQsIDEsIDIyMywgNTAsIDIwNCwgNzUsIDcsIDQsIDEsIDIyMywgNTAsIDIwNCwgMTYwLCAyLCAxMDMsIAorICAgIDcsIDQsIDEsIDI1MCwgMSwgMjIzLCA1MCwgMjA0LCA3NSwgNywgNCwgMSwgMjQ3LCAxMjAsIDIzNSwgMTQ2LCAyLCA5MSwgNywgCisgICAgNCwgMSwgMjQzLCAyMDQsIDIsIDEwMywgNywgNCwgMSwgMTE5LCAyNDMsIDIwMywgNywgMSwgNCwgNiwgMjQzLCAyMDMsIDcsIAorICAgIDQsIDEsIDI0MywgMTA4LCA3LCA0LCAxLCAyMjMsIDE1MiwgMjQwLCAyNDksIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjEsIAorICAgIDcsIDQsIDEsIDI0MiwgNjIsIDIsIDEwMywgNywgNCwgMSwgMjQxLCAyMDksIDIsIDEwMywgNywgNCwgMSwgMjQwLCAxNTUsIAorICAgIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE4NiwgNywgMSwgNCwgNiwgNzMsIDcsIDQsIDEsIDIzMywgMTUwLCAyLCAyMzAsIDIyNSwgCisgICAgMTgzLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMjUyLCA0MiwgNywgNCwgMSwgMjMzLCAxNTAsIDIsIDIyMywgNTYsIDEwMywgCisgICAgNywgNCwgMSwgMjMzLCAyLCA3LCA0LCAxLCAyMTUsIDk0LCAxOTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIzMiwgNTEsIDIsIAorICAgIDE5OSwgMjMzLCAzNywgNywgNCwgMSwgMjMyLCA1MSwgMiwgMTAzLCA3LCA0LCAxLCAyMzAsIDI3LCAyLCA0MywgMTAzLCA3LCAKKyAgICA0LCAxLCAyMzAsIDI3LCAyLCAyMjMsIDU2LCAxMDMsIDcsIDEsIDQsIDYsIDIzMCwgMjYsIDcsIDQsIDEsIDI1MiwgMTM1LCAKKyAgICA3NiwgNywgMSwgNCwgNiwgMjI2LCAyMzUsIDcsIDQsIDEsIDI1MCwgMSwgMjI2LCAyMDIsIDcsIDQsIDEsIDIyNSwgMTM0LCAKKyAgICA3LCA0LCAxLCAyMTUsIDk0LCAxNTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI1LCAyLCAxOTksIDIzMywgMzcsIDcsIDQsIAorICAgIDEsIDIxNSwgOTQsIDIyMywgMjI1LCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgMjI1LCAyLCAxOTksIDIzMywgMzcsIDcsIDQsIAorICAgIDEsIDIyMywgMjI1LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAyMjMsIDIyNSwgMiwgMjQ0LCA4OCwgNywgNCwgMSwgMjIzLCA1MCwgCisgICAgMjIzLCAyMjUsIDIsIDI0NCwgODgsIDcsIDEsIDQsIDYsIDE1MywgNywgMSwgNCwgNiwgMjM1LCAxOTQsIDE1MywgNywgNCwgCisgICAgMSwgMjIyLCA5MywgMiwgMTAzLCA3LCA0LCAxLCAyNDUsIDc2LCA3LCA0LCAxLCAyNDcsIDEyMCwgMjM1LCAxNDYsIDIsIAorICAgIDIxOCwgMTA0LCAyMiwgMTAzLCA3LCA0LCAxLCAyMTgsIDIzMiwgMjIzLCA1MCwgMjQ1LCA3NiwgNywgNCwgMSwgMjQ1LCA3NywgCisgICAgMiwgMjQ5LCAxMDEsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNywgMTUzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjIzLCA1NiwgCisgICAgMTAzLCA3LCA0LCAxLCAxMDQsIDEzMCwgNywgNCwgMSwgMjE0LCAxNTcsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIAorICAgIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTUsIDk0LCAyMTIsIDk4LCA3LCA0LCAxLCAyMTUsIDk0LCAKKyAgICAyMTEsIDExNywgNywgMSwgNCwgNiwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIAorICAgIDEsIDIxMCwgMTYwLCAyLCAyNDksIDEwMSwgNywgNCwgMSwgMjQ1LCA5LCA3LCA0LCAxLCAyNDUsIDEwLCAyLCAyNDksIDEwMSwgCisgICAgNywgMSwgMjQyLCAxODEsIDIxOCwgMTMwLCA3LCAxLCAyMjUsIDE0MCwgMjEzLCAxMzUsIDI0MywgMjUwLCA3LCAxLCAyMzUsIAorICAgIDE5NCwgMjQyLCAxODEsIDIxOCwgMTMwLCA3LCAxLCAyMTgsIDExMSwgMjUxLCA2NywgNywgMSwgMjUxLCAyNDcsIDI1MCwgCisgICAgMTIsIDcsIDEsIDQsIDYsIDI1MywgMTU5LCA3LCA0LCAxLCAyNTAsIDEsIDIwNCwgNzUsIDcsIDEsIDQsIDYsIDI0MywgMjA0LCAKKyAgICAyLCAxMDMsIDcsIDEsIDQsIDYsIDI0MiwgNjEsIDcsIDQsIDEsIDIzNSwgMTQ2LCAyLCAyNDksIDEyOCwgNywgNCwgMSwgCisgICAgMjE1LCA5NCwgMjM1LCAyNCwgNywgMSwgNCwgNiwgMTU2LCA3LCA0LCAxLCAyMjQsIDk4LCAyLCAxMDMsIDcsIDEsIDI0MiwgCisgICAgMTgxLCAyMTgsIDEzMSwgMiwgOTEsIDcsIDEsIDIyMywgNTAsIDI0MiwgMTgxLCAyMTgsIDEzMSwgMiwgOTEsIDcsIDQsIDEsIAorICAgIDI0NiwgNDEsIDI0NywgMjIxLCA3LCA0LCAxLCAyNDgsIDI3LCAyNDcsIDIyMSwgNywgNCwgMSwgMjQ2LCA0MSwgMjQ3LCAKKyAgICAyMjIsIDIsIDI0OSwgMTAxLCA3LCA0LCAxLCAyMTUsIDE4NiwgMjQ3LCAyMjEsIDcsIDQsIDEsIDIxNiwgMjM2LCAyNDcsIAorICAgIDIyMSwgNywgNCwgMSwgMjE3LCAzMCwgMjQ3LCAyMjIsIDIsIDI0OSwgMTAxLCA3LCA0LCAxLCAyNDQsIDEzNSwgMjQ3LCAKKyAgICAyMjEsIDcsIDQsIDEsIDIzMiwgMTAxLCAyNDcsIDIyMSwgNywgNCwgMSwgMjMyLCA1MiwgMjQ3LCAyMjEsIDcsIDEsIDI1MSwgCisgICAgMjQ3LCAyMjUsIDE4MiwgNywgMSwgMjUxLCAyNTUsIDIyNSwgMTgyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYyLCAyLCAKKyAgICAyNDQsIDg4LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYyLCAyLCAyNDQsIDg5LCAyMiwgMjE3LCA3OCwgNTgsIDEsIDQsIAorICAgIDI0MiwgNjEsIDU4LCAxLCA0LCAyNDIsIDYyLCAyLCAxMDMsIDU4LCAxLCA0LCAyMzUsIDE0NSwgNTgsIDEsIDQsIDE1MywgCisgICAgNTgsIDEsIDQsIDIxNSwgOTQsIDE1MywgNTgsIDEsIDQsIDIxNSwgOTQsIDIyMywgMjI1LCAyLCAxMDMsIDU4LCAxLCA0LCA2LCAKKyAgICAyMzUsIDE5NCwgMTUzLCA1OCwgMSwgNCwgMjEyLCA5OCwgNTgsIDEsIDQsIDIxMSwgMTE3LCA1OCwgMSwgMjI0LCAxOTEsIAorICAgIDU4LCAxLCA1MiwgMjI0LCAxOTEsIDU4LCAxLCAyMTUsIDk0LCAyNDksIDIyMCwgNTgsIDEsIDI1NCwgNTgsIDU4LCAxLCAKKyAgICAyMjMsIDUwLCAyNDksIDIyMCwgNTgsIDEsIDQ0LCAxNjMsIDIyMiwgMjM0LCA1OCwgMSwgNDMsIDE2MywgMjIyLCAyMzQsIAorICAgIDU4LCAxLCAyNDIsIDE4MSwgMjE4LCAxMzAsIDU4LCAxLCAyMjMsIDUwLCAyNDIsIDE4MSwgMjE4LCAxMzAsIDU4LCAxLCA0MywgCisgICAgMjUzLCAyNTAsIDU4LCAxLCA0NCwgMjUzLCAyNTAsIDU4LCAxLCAxMjAsIDI1MywgMjUwLCA1OCwgMSwgMTI0LCAyNTMsIAorICAgIDI1MCwgNTgsIDEsIDI1MCwgMzIsIDI1NSwgMTUsIDI1MCwgMjM1LCA1OCwgMSwgNjcsIDIzMiwgMjE0LCA1OCwgMSwgMjMxLCAKKyAgICAyMzMsIDU4LCAxLCAyNTUsIDQsIDI1NSwgMTUsIDU4LCAxLCAyNDIsIDEzOCwgMjU1LCAxNSwgNTgsIDEsIDEyMSwgNjcsIAorICAgIDIzMiwgMjE0LCA1OCwgMSwgMTIxLCAyMzEsIDIzMywgNTgsIDEsIDEyMSwgMjQyLCAxMzgsIDI1NSwgMTUsIDU4LCAxLCAKKyAgICAxMjEsIDI1NSwgNCwgMjU1LCAxNSwgNTgsIDEsIDIxNSwgMjIzLCAyNDksIDIyNywgNTgsIDEsIDE2MywgMjE1LCAyMjMsIAorICAgIDI0OSwgMjI3LCA1OCwgMSwgMjUwLCAxNzQsIDQ0LCAxNjMsIDIyMiwgMjM0LCA1OCwgMSwgMjUwLCAxNzQsIDQzLCAxNjMsIAorICAgIDIyMiwgMjM0LCA1OCwgMSwgMTIwLCAyMTcsIDg4LCA1OCwgMSwgMTI0LCAyMTcsIDg4LCA1OCwgMSwgOTYsIDUwLCA1OCwgMSwgCisgICAgMjMwLCAxODMsIDUwLCAyNTEsIDE0NywgNTksIDQ4LCAyMjIsIDIzNSwgNDgsIDIyNiwgMjI1LCA0LCAxODMsIDUyLCAyNTUsIAorICAgIDQsIDI1NSwgMTUsIDU4LCAxLCAyMjMsIDM3LCAxMDMsIDU4LCAxLCAyNDksIDEzMiwgMjU1LCAxNSwgNTgsIDEsIDQsIDI0MywgCisgICAgMTA4LCA1OCwgMSwgNCwgMTU2LCA1OCwgMSwgNCwgMjIyLCA5MiwgNTgsIDEsIDQsIDIxMSwgMTc4LCA1OCwgMSwgNCwgMjIzLCAKKyAgICA1MCwgMjQyLCAxODEsIDIxOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMSwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDEzOCwgMTMwLCAKKyAgICA1OCwgMSwgMjMwLCAyMjYsIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgMjEwLCAyNTQsIDI0OCwgNDUsIDEzOCwgNzgsIDU4LCAxLCAyMTEsIDcwLCAyNDgsIDQ1LCAxMzgsIDc4LCAKKyAgICA1OCwgMSwgMjEzLCAxMzMsIDU4LCAxLCAyMTQsIDE4NiwgNTgsIDEsIDUyLCAyNTQsIDU4LCA1OCwgMSwgMTIxLCAxMjQsIAorICAgIDI1MywgMjUwLCA1OCwgMSwgMTIxLCAxMjAsIDI1MywgMjUwLCA1OCwgMSwgMTIxLCA0MywgMjUzLCAyNTAsIDU4LCAxLCAKKyAgICAxMjEsIDQ0LCAyNTMsIDI1MCwgNTgsIDEsIDEyMSwgMjIyLCAyMzQsIDU4LCAxLCAyMzAsIDIyNSwgMjQyLCAxMzgsIDI1NSwgCisgICAgMTUsIDU4LCAxLCAyMzAsIDIyNSwgNTIsIDI0MiwgMTM4LCAyNTUsIDE1LCA1OCwgMSwgMjMwLCAyMjUsIDUyLCAyNTUsIDQsIAorICAgIDI1NSwgMTUsIDU4LCAxLCAxMjEsIDE4MywgNTgsIDEsIDIyMywgMTU4LCAyNDksIDIyNywgNTgsIDEsIDI1MiwgNTksIDEyNSwgCisgICAgMjE2LCAzMSwgNTgsIDEsIDI0NSwgMTQ0LCAxMjUsIDIxNiwgMzEsIDU4LCAxLCAyNTIsIDU5LCAxMjEsIDIxNiwgMzEsIDU4LCAKKyAgICAxLCAyNDUsIDE0NCwgMTIxLCAyMTYsIDMxLCA1OCwgMSwgMjIwLCA1NSwgNTgsIDEsIDIwNCwgMjIwLCA1NSwgNTgsIDEsIAorICAgIDEyMSwgNDMsIDc0LCAzOCwgMjQyLCAxMzgsIDI1NSwgMTUsIDM4LCAyNTUsIDQsIDI1NSwgMTUsIDM4LCAyNTAsIDMyLCAKKyAgICAyNTUsIDE1LCAzOCwgMTgzLCAzOCwgMjMxLCAyMzMsIDM4LCAyMjYsIDEyMCwgMzgsIDI1MSwgMTQ3LCAzOCwgNTksIDQ4LCAKKyAgICAzOCwgMjQ4LCAyLCAzOCwgMjQxLCA1MywgNDgsIDM4LCAyMjIsIDIzNSwgNDgsIDM4LCA1MiwgMjU1LCA0LCAyNTUsIDE1LCAKKyAgICAzOCwgMjUwLCAyMzUsIDM4LCA2NywgMjMyLCAyMTUsIDQ4LCAzOCwgNTIsIDY3LCAyMzIsIDIxNSwgNDgsIDM4LCA1MiwgCisgICAgMjQyLCAxMzgsIDI1NSwgMTUsIDM4LCAyNTEsIDAsIDM4LCAyMzUsIDE5NCwgMjUxLCAxNDcsIDM4LCAyMTUsIDk0LCAyNDksIAorICAgIDIyMSwgNDgsIDM4LCAyNDksIDIyMSwgNDgsIDM4LCAyMjMsIDUwLCAyNDksIDIyMSwgNDgsIDM4LCAyNDksIDIyMSwgNzcsIAorICAgIDIyMiwgMjUyLCAzOCwgMjQyLCAxMzgsIDI1NSwgMTYsIDUxLCAzOCwgMjU1LCA0LCAyNTUsIDE2LCA1MSwgMzgsIDQzLCAKKyAgICAyMTcsIDg5LCA1MSwgMzgsIDQ0LCAyMTcsIDg5LCA1MSwgMzgsIDQzLCAyNTQsIDExMSwgNDgsIDM4LCAyNDAsIDI0OSwgMzgsIAorICAgIDQzLCAxNjMsIDIyMiwgMjM1LCA1MSwgMzgsIDEyMCwgMjE3LCA4OSwgNTEsIDM4LCAxMjQsIDIxNywgODksIDUxLCAzOCwgCisgICAgOTYsIDUsIDUxLCAzOCwgMjMwLCAxODMsIDUsIDUxLCAzOCwgMjI2LCA2NSwgMjQxLCA1MywgNTEsIDM4LCAyMjMsIDU2LCAKKyAgICAyNDEsIDUzLCA1MSwgMzgsIDU5LCA1MSwgMzgsIDI0OCwgMywgNTEsIDM4LCAyMjIsIDIzNSwgNTEsIDM4LCAyNDksIDIyMSwgCisgICAgNTEsIDM4LCAyNTAsIDE4NCwgMzgsIDIyNiwgMjI1LCAzOCwgNjcsIDIzMiwgMjE1LCA1MSwgMzgsIDI1MSwgMTQxLCA1MSwgCisgICAgMzgsIDIzNSwgMTk0LCA1MiwgMjU0LCAyNSwgNTEsIDM4LCAyNTAsIDIzNiwgNTEsIDM4LCAyNTAsIDMyLCAyNTUsIDE2LCAKKyAgICA1MSwgMzgsIDI1MSwgMTQ4LCA1MSwgMzgsIDIzNSwgMTk0LCAyNTEsIDE0OCwgNTEsIDM4LCAyMTYsIDkwLCA1MSwgMzgsIAorICAgIDIzMSwgMjM0LCA1MSwgMzgsIDEyMSwgMjMyLCAyMTQsIDM4LCA1MiwgMTIxLCAyMzIsIDIxNCwgMzgsIDIxNiwgOTAsIDIyNiwgCisgICAgMTIxLCAzOCwgMjE5LCAyNTIsIDIxOCwgMTA0LCAyMjYsIDEyMSwgMzgsIDE5OSwgMjE4LCAxMDQsIDIyNiwgMTIxLCAzOCwgCisgICAgMjE5LCAyNTIsIDIxOSwgNDgsIDIyNiwgMTIxLCAzOCwgMTk5LCAyMTksIDQ4LCAyMjYsIDEyMSwgMzgsIDQ0LCAxNjMsIAorICAgIDIyMiwgMjM1LCA1MSwgMzgsIDIzNSwgMTk0LCAyNTEsIDE0MSwgNTEsIDM4LCA0MiwgNTEsIDM4LCAyMjEsIDE4MSwgNTEsIAorICAgIDM4LCAyMTEsIDE3OSwgNDgsIDM4LCA2NywgMTgzLCAzOCwgNTIsIDIyNiwgMTIwLCAzOCwgMjQyLCAxMzgsIDEzOCwgNzgsIAorICAgIDM4LCAyNTUsIDQsIDEzOCwgNzgsIDM4LCAyNiwgMjI1LCAxNzYsIDM4LCAyNiwgMjM0LCAzLCAzOCwgMjYsIDI0NywgMjUzLCAKKyAgICAyMTYsIDE5LCAzOCwgMjYsIDIxMCwgMjE5LCAzOCwgMjUxLCAxNDEsIDQ4LCAzOCwgMjQ1LCA5OSwgNSwgNTEsIDM4LCA1MiwgCisgICAgNjcsIDIzMiwgMjE1LCA1MSwgMzgsIDQzLCAyNTQsIDExMSwgNTEsIDM4LCAyMjgsIDUzLCAyMTYsIDkwLCA0OCwgMzgsIAorICAgIDI0MSwgNTksIDQ4LCAzOCwgMjU0LCAxNDksIDEyOCwgMjE2LCA0MywgNDgsIDM4LCA0MywgNDQsIDgwLCA1MSwgMzgsIDIxNCwgCisgICAgMTUzLCA4MCwgNTEsIDM4LCAyNDIsIDE0MywgMjM1LCA2NCwgMzgsIDQ0LCAyNTMsIDI1MSwgNDgsIDM4LCA0MywgMTYzLCAKKyAgICAyMjIsIDIzNSwgNDgsIDM4LCAyNDQsIDEzMiwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAyNTMsIDI1MSwgNTEsIDM4LCAKKyAgICA0NCwgMjUzLCAyNTEsIDUxLCAzOCwgNDQsIDI1MywgMjUxLCAyMiwgMTIwLCAyNTMsIDI1MSwgNTEsIDM4LCA0NCwgMTYzLCAKKyAgICAyMjIsIDIzNSwgNDgsIDM4LCA1OSwgNzcsIDIyMiwgMjUyLCAzOCwgMjUzLCAyMTgsIDUxLCAzOCwgNTIsIDIyMiwgMjM1LCAKKyAgICA1MSwgMzgsIDIxMCwgMzUsIDQ4LCAzOCwgNTIsIDI1MSwgMTQ4LCA1MSwgMzgsIDUyLCAyNTEsIDE0NywgMzgsIDUyLCAyMzEsIAorICAgIDIzMywgMzgsIDUyLCAyMzEsIDIzNCwgNTEsIDM4LCA1MiwgMTgzLCAzOCwgNTIsIDIzNSwgMTk0LCAyNTEsIDE0NywgMzgsIAorICAgIDUyLCA5NywgODAsIDUxLCAzOCwgNywgNCwgMSwgNjEsIDM4LCA3LCA0LCAxLCA3NSwgMzgsIDcsIDQsIDEsIDczLCAzOCwgNywgCisgICAgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3MCwgMzgsIDcsIDQsIDEsIDI1MSwgNjcsIDM4LCA3LCA0LCAxLCAyNDksIDYxLCAKKyAgICAzOCwgNywgNCwgMSwgMjQyLCA2MSwgMzgsIDcsIDQsIDEsIDE5MywgMzgsIDcsIDQsIDEsIDE1MywgMzgsIDcsIDQsIDEsIAorICAgIDIxNywgMTUzLCAzOCwgNywgNCwgMSwgMjE0LCAxMDUsIDM4LCA3LCA0LCAxLCAyMTEsIDE3OCwgMjYsIDYsIDEsIDI0MSwgCisgICAgMTk3LCAyNiwgNCwgMSwgMjQxLCAxOTcsIDI2LCA2LCAxLCAyNTQsIDI0LCAyMjEsIDI0NywgMjYsIDQsIDEsIDI1NCwgMjQsIAorICAgIDIyMSwgMjQ3LCAyNiwgMjI3LCAxOTksIDUwLCAyNiwgMjMyLCAxMDksIDIyNywgMTk5LCA1MCwgMjYsIDYsIDEsIDIyNiwgCisgICAgNTIsIDI0NywgMjI4LCAyNiwgNCwgMSwgMjI2LCA1MiwgMjQ3LCAyMjgsIDI2LCAyMTAsIDIxOSwgMjYsIDQsIDIyMywgNTAsIAorICAgIDIzMiwgODQsIDIxOSwgMTc5LCA4NywgMjYsIDQsIDI0NiwgMTE5LCAyMzIsIDg0LCAyMTksIDE3OSwgODcsIDI2LCA0LCAKKyAgICAyMjMsIDUwLCAyNDYsIDExOSwgMjMyLCA4NCwgMjE5LCAxNzksIDg3LCAyNiwgMjI0LCAxNCwgNzgsIDI2LCAyMTYsIDE5LCAKKyAgICAyNiwgMjQ3LCAyNTMsIDIxNiwgMTksIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjE2LCAxOSwgMjYsIDI1NCwgOTgsIDIxNywgCisgICAgMywgMjYsIDYsIDEsIDI0NSwgMTAyLCAyLCAyMTYsIDE5LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjE2LCAxOSwgMjYsIDYsIAorICAgIDEsIDIzNSwgMTg3LCAyLCAyMTYsIDE5LCAyNiwgNiwgMSwgMjI2LCAyMDEsIDIsIDIxNiwgMTksIDI2LCA2LCAxLCAyMTQsIAorICAgIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIyNiwgMjAzLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIAorICAgIDI0NywgMjUzLCAyMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyNiwgNiwgMSwgMjUyLCAyNywgMjYsIDYsIDEsIAorICAgIDI0MywgMTA4LCAyNiwgNiwgMSwgMjQ4LCA1NSwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyNiwgNiwgMSwgMjEwLCA4NSwgMjYsIAorICAgIDYsIDEsIDI0NSwgNjQsIDI2LCA2LCAxLCAyMTYsIDE4MCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyNiwgNiwgMSwgMjM0LCAKKyAgICAyMjMsIDI2LCA2LCAxLCAyMzMsIDk5LCAyNiwgNiwgMSwgMjMwLCAxMDMsIDI2LCA2LCAxLCAyMjcsIDIzOCwgMjYsIDYsIDEsIAorICAgIDIxMSwgMTU3LCAyNiwgNiwgMSwgMjI2LCAyMDAsIDI2LCA2LCAxLCAyMjUsIDEwOSwgMjYsIDYsIDEsIDIyMywgMzgsIDI2LCAKKyAgICA2LCAxLCAyMTksIDE3OCwgMjYsIDYsIDEsIDIxNywgNDIsIDI2LCA2LCAxLCAyMTQsIDE1NywgMjYsIDYsIDEsIDIyNSwgCisgICAgMTM0LCAyNiwgNiwgMSwgMjUwLCAxMTEsIDI2LCA2LCAxLCAyMjQsIDE2MiwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyNiwgNiwgCisgICAgMSwgMjM1LCAxODcsIDIsIDI0NywgMjUyLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAyNiwgNCwgMSwgMjU0LCAKKyAgICAxNDUsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyNDUsIDEwMiwgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIAorICAgIDIxNiwgMTksIDI2LCA0LCAxLCAyMzUsIDE4NywgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MywgCisgICAgMjIsIDIxNiwgMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMjYsIDQsIDEsIDI1MiwgMjcsIDI2LCA0LCAxLCAyNDMsIDEwOCwgCisgICAgMjYsIDQsIDEsIDI0OCwgNTUsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMjYsIDQsIDEsIDIxMCwgODUsIDI2LCA0LCAxLCAyNDUsIAorICAgIDY0LCAyNiwgNCwgMSwgMjE2LCAxODAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMjYsIDQsIDEsIDIzNCwgMjIzLCAyNiwgNCwgMSwgCisgICAgMjMzLCA5OSwgMjYsIDQsIDEsIDIzMCwgMTAzLCAyNiwgNCwgMSwgMjI3LCAyMzgsIDI2LCA0LCAxLCAyMTEsIDE1NywgMjYsIAorICAgIDQsIDEsIDIyNiwgMjAwLCAyNiwgNCwgMSwgMjI1LCAxMDksIDI2LCA0LCAxLCAyMjMsIDM4LCAyNiwgNCwgMSwgNDAsIDIxOSwgCisgICAgMTc4LCAyNiwgNCwgMSwgMjE5LCAxNzgsIDI2LCA0LCAxLCAyMTcsIDQyLCAyNiwgNCwgMSwgMjE0LCAxNTcsIDI2LCA0LCAxLCAKKyAgICAyMjUsIDEzNCwgMjYsIDQsIDEsIDI1MCwgMTExLCAyNiwgNCwgMSwgMjI0LCAxNjIsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMjYsIAorICAgIDQsIDEsIDIzNSwgMTg3LCAyLCAyNDcsIDI1MiwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MiwgMjYsIDQsIDEsIAorICAgIDIyNiwgMjAxLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyMjYsIDIwMywgCisgICAgMiwgMjE2LCAxOSwgMjYsIDYsIDIzNCwgMjQ4LCA4NywgMjYsIDI1MiwgMjgsIDg3LCAyNiwgMjE2LCAxODEsIDg3LCAyNiwgCisgICAgMjE0LCAxNTgsIDIsIDI0MSwgNTMsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI1NSwgNCwgMjIsIDI0MSwgNTMsIDg3LCAyNiwgCisgICAgMjE0LCAxNTgsIDIsIDI0OCwgMywgMjIsIDI0MSwgNTMsIDg3LCAyNiwgMjI1LCAxMzUsIDg3LCAyNiwgMjI1LCAxMTAsIDg3LCAKKyAgICAyNiwgMjM0LCAyNDgsIDg3LCAyNiwgMSwgMjU0LCAyNCwgMjM0LCA3LCAyNiwgNCwgMSwgMjU0LCAyNCwgMjM0LCA3LCAyNiwgCisgICAgMSwgMjE4LCAxMzgsIDI2LCA0LCAxLCAyMTgsIDEzOCwgMjYsIDEsIDI0NywgMjI4LCAyNiwgNCwgMSwgMjQ3LCAyMjgsIDI2LCAKKyAgICAxLCAyMzQsIDcsIDI2LCA0LCAxLCAyMzQsIDcsIDI2LCAxLCAyMjEsIDI0NywgMjYsIDQsIDEsIDIyMSwgMjQ3LCA4MSwgNiwgCisgICAgMSwgMjIwLCA1NiwgODEsIDQsIDEsIDIyMCwgNTYsIDgxLCA2LCAxLCAyNDQsIDE0MSwgODEsIDQsIDEsIDI0NCwgMTQxLCAKKyAgICA4MSwgNiwgMSwgMjM0LCAxMTgsIDgxLCA0LCAxLCAyMzQsIDExOCwgODEsIDYsIDEsIDI0MSwgNDYsIDgxLCA0LCAxLCAyNDEsIAorICAgIDQ2LCA4MSwgNiwgMSwgMjQzLCAxMDMsIDgxLCA0LCAxLCAyNDMsIDEwMywgODEsIDYsIDEsIDIyMCwgMjMsIDgxLCA0LCAxLCAKKyAgICAyMjAsIDIzLCA4MSwgNiwgMSwgMjQ4LCA3MCwgODEsIDQsIDEsIDI0OCwgNzAsIDI2LCAyMzQsIDIyNCwgODcsIDI2LCAyMjMsIAorICAgIDM5LCA4NywgMjYsIDIzMiwgODQsIDIxOSwgMTc5LCA4NywgMjYsIDEsIDIxMCwgMjI0LCAyNiwgNiwgMjE2LCAxODEsIDg3LCAKKyAgICAyNiwgMjMyLCA4NCwgMjQ1LCAxMDIsIDg3LCAyNiwgMjIzLCA1MCwgMjMyLCA4NCwgMjQ1LCAxMDIsIDg3LCAyNiwgNiwgMSwgCisgICAgMjIwLCA4LCAyNiwgNCwgMSwgMjIwLCA4LCAyNiwgNiwgMjMyLCA4NCwgMjE5LCAxNzksIDg3LCAyNiwgNiwgMSwgMjIxLCAKKyAgICAyNDQsIDI2LCA0LCAxLCAyMjEsIDI0NCwgMjYsIDIyMywgMzksIDIsIDIxOCwgMTA0LCA4NywgMjYsIDYsIDIyMywgNTAsIAorICAgIDIzMiwgODQsIDIxOSwgMTc5LCA4NywgMjYsIDYsIDI0NiwgMTE5LCAyMzIsIDg0LCAyMTksIDE3OSwgODcsIDI2LCA2LCAKKyAgICAyMjMsIDUwLCAyNDYsIDExOSwgMjMyLCA4NCwgMjE5LCAxNzksIDg3LCAzMywgNiwgMSwgMjM2LCA2MiwgMiwgMjQyLCAxMzcsIAorICAgIDMzLCA2LCAxLCAyMzUsIDE5MCwgMzMsIDYsIDEsIDI0NywgMTYzLCAzMywgNiwgMSwgMjQyLCAxODgsIDMzLCA2LCAxLCAKKyAgICAyMTQsIDIwMiwgMjM2LCA2MSwgMzMsIDYsIDEsIDI0NiwgMzcsIDMzLCA2LCAxLCAyNTEsIDc3LCA3MywgMzMsIDYsIDEsIAorICAgIDIxMSwgOCwgMzMsIDYsIDEsIDIzNSwgMTI3LCAzMywgNiwgMSwgMjMyLCAxODgsIDMzLCA2LCAxLCAyMjgsIDE3OSwgMzMsIAorICAgIDYsIDEsIDIxNSwgMTc1LCAzMywgNiwgMSwgMjM0LCA0OSwgMzMsIDYsIDEsIDI0MCwgMTU1LCAyLCAyNDIsIDEzNywgMzMsIAorICAgIDYsIDEsIDIxOSwgMjUyLCA3MCwgMzMsIDYsIDEsIDI0NiwgMzMsIDMzLCA2LCAxLCA2MSwgMzMsIDYsIDEsIDI1MiwgNzYsIAorICAgIDMzLCA2LCAxLCAyMTMsIDI1NSwgMzMsIDYsIDEsIDI0MiwgMjM3LCAzMywgNiwgMSwgMjQ4LCA5MSwgMzMsIDYsIDEsIDIzNiwgCisgICAgNjEsIDMzLCA2LCAxLCAyMTAsIDc0LCAzMywgNiwgMSwgMjEwLCA5NCwgMzMsIDYsIDEsIDczLCAzMywgNiwgMSwgMjE5LCAKKyAgICAyNTIsIDczLCAzMywgNiwgMSwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNzUsIDMzLCA2LCAxLCAyNDUsIDE2MCwgMzMsIDYsIDEsIAorICAgIDI0NSwgMTUxLCAzMywgNiwgMSwgNzYsIDMzLCA2LCAxLCAyMjUsIDIyMiwgMzMsIDYsIDEsIDI0NSwgOTMsIDMzLCA2LCAxLCAKKyAgICAyNDUsIDgzLCAzMywgNiwgMSwgMjE3LCAyMywgMzMsIDYsIDEsIDcwLCAzMywgNiwgMSwgMjQ1LCAyMDMsIDMzLCA2LCAxLCAKKyAgICAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OSwgMzMsIDYsIDEsIDI1MCwgMTMyLCAzMywgNiwgMSwgMjIwLCAxMDMsIDMzLCA2LCAKKyAgICAxLCAyMjAsIDY2LCAzMywgNiwgMSwgMjQyLCA0LCA1MCwgMzMsIDYsIDEsIDIxMSwgMjcsIDMzLCA2LCAxLCAyMTksIDUzLCAKKyAgICA1MCwgMzMsIDYsIDEsIDc1LCAzMywgNiwgMSwgMjEwLCAyMTIsIDMzLCA2LCAxLCAxOTEsIDMzLCA0LCAxLCA2MSwgMzMsIDQsIAorICAgIDEsIDI1MiwgNzYsIDMzLCA0LCAxLCAyMTMsIDI1NSwgMzMsIDQsIDEsIDI0MiwgMjM3LCAzMywgNCwgMSwgMjQ4LCA5MSwgCisgICAgMzMsIDQsIDEsIDIzNiwgNjEsIDMzLCA0LCAxLCAyMTAsIDc0LCAzMywgNCwgMSwgMjEwLCA5NCwgMzMsIDQsIDEsIDczLCAKKyAgICAzMywgNCwgMSwgMjE5LCAyNTIsIDczLCAzMywgNCwgMSwgMTc2LCAzMywgNCwgMSwgMjQ1LCAxNzUsIDMzLCA0LCAxLCAyNDUsIAorICAgIDE2MCwgMzMsIDQsIDEsIDI0NSwgMTUxLCAzMywgNCwgMSwgNzYsIDMzLCA0LCAxLCAyMjUsIDIyMiwgMzMsIDQsIDEsIDI0NSwgCisgICAgOTMsIDMzLCA0LCAxLCAyNDUsIDgzLCAzMywgNCwgMSwgMjE3LCAyMywgMzMsIDQsIDEsIDcwLCAzMywgNCwgMSwgMjQ1LCAKKyAgICAyMDMsIDMzLCA0LCAxLCAxNjIsIDMzLCA0LCAxLCAyMTUsIDE3OSwgMzMsIDQsIDEsIDI1MCwgMTMyLCAzMywgNCwgMSwgCisgICAgMjIwLCAxMDMsIDMzLCA0LCAxLCAyMjAsIDY2LCAzMywgNCwgMSwgMjQyLCA0LCA1MCwgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCAKKyAgICA0LCAxLCAyMTksIDUzLCA1MCwgMzMsIDQsIDEsIDc1LCAzMywgNCwgMSwgMjEwLCAyMTIsIDMzLCA0LCAxLCAxOTEsIDMzLCAKKyAgICA0LCAxLCAyMzYsIDYyLCAyLCAyNDIsIDEzNywgMzMsIDQsIDEsIDIzNSwgMTkwLCAzMywgNCwgMSwgMjQ3LCAxNjMsIDMzLCAKKyAgICA0LCAxLCAyNDIsIDE4OCwgMzMsIDQsIDEsIDIxNCwgMjAyLCAyMzYsIDYxLCAzMywgNCwgMSwgMjQ2LCAzNywgMzMsIDQsIDEsIAorICAgIDI1MSwgNzcsIDczLCAzMywgNCwgMSwgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAxMjcsIDMzLCA0LCAxLCAyMzIsIDE4OCwgCisgICAgMzMsIDQsIDEsIDIyOCwgMTc5LCAzMywgNCwgMSwgMjE1LCAxNzUsIDMzLCA0LCAxLCAyMzQsIDQ5LCAzMywgNCwgMSwgMjQwLCAKKyAgICAxNTUsIDIsIDI0MiwgMTM3LCAzMywgNCwgMSwgMjE5LCAyNTIsIDcwLCAzMywgNCwgMSwgMjQ2LCAzMywgMzMsIDYsIDEsIAorICAgIDIyNiwgMjAyLCAzMywgNCwgMSwgMjI2LCAyMDIsIDMzLCA2LCAxLCAyMTEsIDU5LCAzMywgNCwgMSwgMjExLCA1OSwgMzMsIAorICAgIDYsIDEsIDIzNSwgMTg0LCA3NSwgMzMsIDQsIDEsIDIzNSwgMTg0LCA3NSwgMzMsIDYsIDEsIDIzMiwgMTkzLCAyMTAsIDE4MywgCisgICAgMzMsIDQsIDEsIDIzMiwgMTkzLCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTg0LCAyMzIsIDE5MywgMjEwLCAxODMsIDMzLCAKKyAgICA0LCAxLCAyMzUsIDE4NCwgMjMyLCAxOTMsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUxLCAyNTAsIDIxMCwgMTgzLCAzMywgNCwgCisgICAgMSwgMjUxLCAyNTAsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODQsIDI1MSwgMjUwLCAyMTAsIDE4MywgMzMsIDQsIDEsIAorICAgIDIzNSwgMTg0LCAyNTEsIDI1MCwgMjEwLCAxODMsIDMzLCA2LCAxLCAyMzMsIDIzNCwgMzMsIDQsIDEsIDIzMywgMjM0LCAzMywgCisgICAgNiwgMSwgMjI0LCAxNjIsIDMzLCA0LCAxLCAyMjQsIDE2MiwgMzMsIDYsIDEsIDI0NCwgODMsIDMzLCA0LCAxLCAyNDQsIDgzLCAKKyAgICAzMywgNiwgMSwgMjM1LCAxNDcsIDMzLCA0LCAxLCAyMzUsIDE0NywgMzMsIDYsIDEsIDIzNSwgMTQ4LCAyLCA1MiwgMjQyLCAKKyAgICAxMzgsIDI1NSwgMTUsIDMzLCA0LCAxLCAyMzUsIDE0OCwgMiwgNTIsIDI0MiwgMTM4LCAyNTUsIDE1LCAzMywgNiwgMSwgCisgICAgMjE0LCAyMDUsIDMzLCA0LCAxLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDIyMiwgMTg2LCAyMjYsIDIwMiwgMzMsIDQsIDEsIAorICAgIDIyMiwgMTg2LCAyMjYsIDIwMiwgMzMsIDYsIDEsIDIyNiwgMjAzLCAyLCAyMTYsIDY2LCAzMywgNCwgMSwgMjI2LCAyMDMsIAorICAgIDIsIDIxNiwgNjYsIDMzLCA2LCAxLCAyMjYsIDE0MSwgMzMsIDQsIDEsIDIyNiwgMTQxLCAzMywgNiwgMSwgMjM0LCA3LCAzMywgCisgICAgNCwgMSwgMjM0LCA3LCAzMywgMjE2LCAxNDcsIDUwLCAzOCwgMzMsIDIxNiwgNjYsIDM4LCAzMywgMjI2LCA2NiwgMzgsIDMzLCAKKyAgICAyNDgsIDE1NSwgMjI1LCAxOSwgMzgsIDMzLCAyMjQsIDE1NiwgMjI1LCAxOSwgMzgsIDMzLCAyMjUsIDQsIDM4LCAzMywgCisgICAgMjQwLCAyMTIsIDIxNiwgMTQ3LCA1MCwgMzgsIDMzLCAyMzAsIDE5MiwgNTAsIDMzLCA2LCAxLCAyMTksIDI1MiwgMjQwLCAKKyAgICAxNTUsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAyMTksIDI1MiwgMjQwLCAxNTUsIDIsIDIxNywgNzgsIDMzLCA2LCAxLCAyMjAsIAorICAgIDE0NywgNTAsIDMzLCA0LCAxLCAyMjAsIDE0NywgNTAsIDMzLCA2LCAxLCAyNDUsIDk0LCAyLCAyMTYsIDExNSwgMzMsIDQsIAorICAgIDEsIDI0NSwgOTQsIDIsIDIxNiwgMTE1LCAzMywgNiwgMSwgMjQyLCAyMzgsIDIsIDIxNCwgMTU2LCAzMywgNCwgMSwgMjQyLCAKKyAgICAyMzgsIDIsIDIxNCwgMTU2LCAzMywgNiwgMSwgMjQyLCAyMzgsIDIsIDkxLCAzMywgNCwgMSwgMjQyLCAyMzgsIDIsIDkxLCAKKyAgICAzMywgNiwgMSwgMjQyLCAyMzgsIDIsIDIzMCwgMjI1LCAxMDMsIDMzLCA0LCAxLCAyNDIsIDIzOCwgMiwgMjMwLCAyMjUsIAorICAgIDEwMywgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI0OCwgNDAsIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDQwLCAzMywgNiwgCisgICAgMSwgMjEwLCA5NSwgMiwgMjQ4LCA0MCwgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIDI0OCwgNDAsIDMzLCA2LCAxLCAyMzUsIDE0LCAKKyAgICAyLCAyNDgsIDQwLCAzMywgNCwgMSwgMjM1LCAxNCwgMiwgMjQ4LCA0MCwgMzMsIDYsIDEsIDIzNSwgMTQsIDIsIDY3LCA5MSwgCisgICAgMzMsIDQsIDEsIDIzNSwgMTQsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIDIzNSwgMTQsIDIsIDkxLCAzMywgNCwgMSwgMjM1LCAKKyAgICAxNCwgMiwgOTEsIDMzLCA2LCAxLCAyNTIsIDEyNSwgMTc2LCAzMywgNCwgMSwgMjUyLCAxMjUsIDE3NiwgMzMsIDYsIDEsIAorICAgIDI0NSwgMTUyLCAyLCAyNDgsIDQwLCAzMywgNCwgMSwgMjQ1LCAxNTIsIDIsIDI0OCwgNDAsIDMzLCA2LCAyNywgMjQ1LCAKKyAgICAxNTIsIDI0MiwgMjM3LCAzMywgNCwgMjcsIDI0NSwgMTUyLCAyNDIsIDIzNywgMzMsIDYsIDEsIDIyNSwgMjIzLCAyLCAyMzAsIAorICAgIDIyNSwgMTAzLCAzMywgNCwgMSwgMjI1LCAyMjMsIDIsIDIzMCwgMjI1LCAxMDMsIDMzLCA2LCAxLCAyNTUsIDIxLCAxNjIsIAorICAgIDMzLCA0LCAxLCAyNTUsIDIxLCAxNjIsIDMzLCA2LCAxLCAyNDUsIDg0LCAyLCAyNDgsIDQwLCAzMywgNCwgMSwgMjQ1LCA4NCwgCisgICAgMiwgMjQ4LCA0MCwgMzMsIDYsIDEsIDIxNywgMjQsIDIsIDI0OCwgNDAsIDMzLCA0LCAxLCAyMTcsIDI0LCAyLCAyNDgsIDQwLCAKKyAgICAzMywgNiwgMSwgMjE4LCAxMjIsIDcwLCAzMywgNCwgMSwgMjE4LCAxMjIsIDcwLCAzMywgNiwgMSwgMjE4LCAxMjIsIDEwNCwgCisgICAgMiwgOTEsIDMzLCA0LCAxLCAyMTgsIDEyMiwgMTA0LCAyLCA5MSwgMzMsIDYsIDEsIDI0MiwgNTAsIDIsIDI0OCwgNDAsIDMzLCAKKyAgICA0LCAxLCAyNDIsIDUwLCAyLCAyNDgsIDQwLCAzMywgNiwgMjcsIDIxNywgMjQsIDIxNSwgMTc5LCAzMywgNCwgMjcsIDIxNywgCisgICAgMjQsIDIxNSwgMTc5LCAzMywgNiwgMSwgMjUwLCAxMzMsIDIsIDI0OCwgNDAsIDMzLCA0LCAxLCAyNTAsIDEzMywgMiwgMjQ4LCAKKyAgICA0MCwgMzMsIDYsIDEsIDI1MCwgMTMzLCAyLCA2NywgOTEsIDMzLCA0LCAxLCAyNTAsIDEzMywgMiwgNjcsIDkxLCAzMywgNiwgCisgICAgMSwgMjIwLCAzNCwgMzMsIDQsIDEsIDIyMCwgMzQsIDMzLCA2LCAxLCAyNTUsIDIxLCAyNTAsIDEzMiwgMzMsIDQsIDEsIAorICAgIDI1NSwgMjEsIDI1MCwgMTMyLCAzMywgNiwgMSwgMjU1LCAyMSwgMjUwLCAxMzMsIDIsIDI0OCwgNDAsIDMzLCA0LCAxLCAKKyAgICAyNTUsIDIxLCAyNTAsIDEzMywgMiwgMjQ4LCA0MCwgMzMsIDEsIDIyNiwgNTksIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNTEsIAorICAgIDE0NywgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTQ3LCAzMywgNiwgMSwgMjM1LCAxNCwgMiwgMTAzLCAzMywgNCwgMSwgCisgICAgMjM1LCAxNCwgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNzYsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAyNDUsIDE3NiwgMiwgCisgICAgMjE3LCA3OCwgMzMsIDYsIDEsIDI0NSwgMTUyLCAyLCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE1MiwgMiwgMTAzLCAzMywgNiwgCisgICAgMSwgMjQ1LCAxNTIsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAyNDUsIDE1MiwgMiwgMjE3LCA3OCwgMzMsIDYsIDEsIDIzNCwgCisgICAgMTI4LCAyNTAsIDEzMiwgMzMsIDQsIDEsIDIzNCwgMTI4LCAyNTAsIDEzMiwgMzMsIDYsIDEsIDI0NSwgMTYxLCAyLCAyMTcsIAorICAgIDc4LCAzMywgNCwgMSwgMjQ1LCAxNjEsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAyMjYsIDU5LCAzMywgNiwgMSwgMTE1LCAyLCAKKyAgICAyNTEsIDE0NywgMzMsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDMzLCA2LCAxLCAxMTUsIDIsIDI0OCwgMiwgMzMsIDQsIDEsIAorICAgIDExNSwgMiwgMjQ4LCAyLCAzMywgNiwgMjcsIDExNSwgMjM2LCA2MSwgMzMsIDQsIDI3LCAxMTUsIDIzNiwgNjEsIDMzLCA2LCAKKyAgICAxLCAyMzYsIDYyLCAyLCAyNTEsIDE0NywgMzMsIDQsIDEsIDIzNiwgNjIsIDIsIDI1MSwgMTQ3LCAzMywgNiwgMSwgMjIxLCAKKyAgICAxOTYsIDMzLCA0LCAxLCAyMjEsIDE5NiwgMzMsIDYsIDEsIDIyMSwgMTk3LCAyLCAyNDgsIDIsIDMzLCA0LCAxLCAyMjEsIAorICAgIDE5NywgMiwgMjQ4LCAyLCAzMywgNiwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAyLCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAKKyAgICAyLCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAyLCAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAyLCAzMywgNiwgMSwgCisgICAgMjU1LCAyMSwgMjQ2LCAzNywgMzMsIDQsIDEsIDI1NSwgMjEsIDI0NiwgMzcsIDMzLCA2LCAxLCAyNDAsIDE1NSwgMiwgMjMxLCAKKyAgICAyMzMsIDMzLCA0LCAxLCAyNDAsIDE1NSwgMiwgMjMxLCAyMzMsIDMzLCA2LCAxLCAyNDAsIDE1NSwgMiwgMjQ4LCAyLCAzMywgCisgICAgNCwgMSwgMjQwLCAxNTUsIDIsIDI0OCwgMiwgMzMsIDYsIDEsIDE0NCwgMiwgMjQ4LCAyLCAzMywgNCwgMSwgMTQ0LCAyLCAKKyAgICAyNDgsIDIsIDMzLCA2LCAxLCAyNTIsIDEzNSwgNzYsIDMzLCA0LCAxLCAyNTIsIDEzNSwgNzYsIDMzLCA2LCAxLCAyNTIsIAorICAgIDEzNSwgMTQ0LCAyLCAyNDgsIDIsIDMzLCA0LCAxLCAyNTIsIDEzNSwgMTQ0LCAyLCAyNDgsIDIsIDMzLCA2LCAxLCAxNjAsIAorICAgIDIsIDI0OCwgMiwgMzMsIDQsIDEsIDE2MCwgMiwgMjQ4LCAyLCAzMywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMzMsIDQsIAorICAgIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDMzLCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMzMsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAKKyAgICAzMywgNiwgMSwgMTA0LCAyLCA1MiwgMTQyLCAzMywgNCwgMSwgMTA0LCAyLCA1MiwgMTQyLCAzMywgNiwgMSwgMjUwLCAxMzMsIAorICAgIDIsIDI0OCwgMiwgMzMsIDQsIDEsIDI1MCwgMTMzLCAyLCAyNDgsIDIsIDMzLCA2LCAxLCAyNDIsIDIzOCwgMiwgMjQ4LCA0MCwgCisgICAgMzMsIDQsIDEsIDI0MiwgMjM4LCAyLCAyNDgsIDQwLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjQ4LCAyLCAzMywgNCwgMSwgCisgICAgMjExLCAyOCwgMiwgMjQ4LCAyLCAzMywgNiwgMSwgMjQyLCAyMzgsIDIsIDIxOCwgMTA0LCAyMiwgMTAzLCAzMywgNCwgMSwgCisgICAgMjQyLCAyMzgsIDIsIDIxOCwgMTA0LCAyMiwgMTAzLCAzMywgNiwgMSwgMjQyLCA1MCwgMiwgMTAzLCAzMywgNCwgMSwgMjQyLCAKKyAgICA1MCwgMiwgMTAzLCAzMywgNiwgMSwgMjQyLCA1MCwgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDUwLCAyLCA5MSwgMzMsIDYsIDEsIAorICAgIDIzNCwgMTUsIDI0OCwgOTEsIDMzLCA0LCAxLCAyMzQsIDE1LCAyNDgsIDkxLCAzMywgNiwgMSwgMjM0LCAxNSwgMjQ3LCAKKyAgICAxNjMsIDMzLCA0LCAxLCAyMzQsIDE1LCAyNDcsIDE2MywgMzMsIDYsIDEsIDIzNCwgMTUsIDIxMCwgMjcsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE1LCAyMTAsIDI3LCAzMywgNiwgMSwgMjM0LCAxNSwgMjQ2LCAzMSwgMzMsIDQsIDEsIDIzNCwgMTUsIDI0NiwgMzEsIAorICAgIDMzLCA2LCAxLCAyMzQsIDE1LCAyMzIsIDE4OCwgMzMsIDQsIDEsIDIzNCwgMTUsIDIzMiwgMTg4LCAzMywgNiwgMSwgMjM0LCAKKyAgICAxNSwgMjI4LCAxNzksIDMzLCA0LCAxLCAyMzQsIDE1LCAyMjgsIDE3OSwgMzMsIDYsIDEsIDIzNCwgMTUsIDIxOSwgMTEwLCAKKyAgICAzMywgNCwgMSwgMjM0LCAxNSwgMjE5LCAxMTAsIDMzLCA2LCAxLCAyMzQsIDE1LCAyMTYsIDYxLCAzMywgNCwgMSwgMjM0LCAKKyAgICAxNSwgMjE2LCA2MSwgMzMsIDYsIDEsIDIyMywgNTAsIDIxMCwgOTQsIDMzLCA0LCAxLCAyMjMsIDUwLCAyMTAsIDk0LCAzMywgCisgICAgNiwgMSwgMjQ1LCAxNzYsIDIsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTc2LCAyLCAxMDMsIDMzLCA2LCAxLCAyMzIsIDI1NSwgCisgICAgMzMsIDQsIDEsIDIzMiwgMjU1LCAzMywgNiwgMSwgMjIzLCA0MCwgMzMsIDQsIDEsIDIyMywgNDAsIDMzLCA2LCAxLCAyMTEsIAorICAgIDkyLCAzMywgNCwgMSwgMjExLCA5MiwgMzMsIDYsIDEsIDIyNCwgODksIDMzLCA0LCAxLCAyMjQsIDg5LCAzMywgNiwgMSwgCisgICAgMjEyLCAyMiwgMzMsIDQsIDEsIDIxMiwgMjIsIDMzLCA2LCAxLCAyNTQsIDE2NywgMTc2LCAzMywgNCwgMSwgMjU0LCAxNjcsIAorICAgIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTc2LCAyLCAyMzAsIDIyNSwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNzYsIDIsIDIzMCwgCisgICAgMjI1LCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE1MiwgMiwgMjMwLCAyMjUsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTUyLCAyLCAKKyAgICAyMzAsIDIyNSwgMTAzLCAzMywgNiwgMSwgMjI1LCAyMjMsIDIsIDI0OCwgNDAsIDMzLCA0LCAxLCAyMjUsIDIyMywgMiwgCisgICAgMjQ4LCA0MCwgMzMsIDYsIDEsIDIyMCwgMzUsIDIsIDI0OCwgNDAsIDMzLCA0LCAxLCAyMjAsIDM1LCAyLCAyNDgsIDQwLCAKKyAgICAxNTAsIDYsIDEsIDI1MywgMTY1LCAxNTAsIDYsIDEsIDI1MiwgNDAsIDE1MCwgNiwgMSwgMjQyLCAyMDQsIDE1MCwgNiwgMSwgCisgICAgMjQ4LCAyMjIsIDE1MCwgNiwgMSwgMjQ1LCAyMTQsIDE1MCwgNiwgMSwgMjEwLCAxMTYsIDE1MCwgNiwgMSwgMjQ1LCAxOTgsIAorICAgIDE1MCwgNiwgMSwgMjQ1LCA2NiwgMTUwLCA2LCAxLCAxMTEsIDE1MCwgNiwgMSwgMjEwLCA3NCwgMTUwLCA2LCAxLCAyMzUsIAorICAgIDIyOCwgMTUwLCA2LCAxLCAyMzIsIDE5MSwgMTUwLCA2LCAxLCAyMTEsIDE2MCwgMTUwLCA2LCAxLCAyNTEsIDM0LCAxNTAsIAorICAgIDYsIDEsIDIzNCwgMTY2LCAxNTAsIDYsIDEsIDI0MSwgNjksIDE1MCwgNiwgMSwgMjM1LCAxNDIsIDE1MCwgNiwgMSwgMjQyLCAKKyAgICAyNDcsIDE1MCwgNiwgMSwgMjUwLCAxMjcsIDE1MCwgNiwgMSwgMjMxLCA1OSwgMTUwLCA2LCAxLCAyMTEsIDgsIDE1MCwgNiwgCisgICAgMSwgMjI4LCA0MCwgMTUwLCA2LCAxLCAyMjAsIDEwMywgMTUwLCA2LCAxLCAyMTMsIDEzOCwgMTUwLCA2LCAxLCAyNTAsIAorICAgIDE1OCwgMTUwLCA2LCAxLCAyMjUsIDIwNiwgMTUwLCA2LCAxLCAyMzUsIDExMSwgMTUwLCA2LCAxLCAyMDUsIDE1MCwgNiwgMSwgCisgICAgMjIxLCAxNjIsIDE1MCwgNiwgMSwgMjEzLCAxNzksIDE1MCwgNiwgMSwgMjE2LCA2MywgMTUwLCA2LCAxLCAyMjMsIDk2LCAKKyAgICAxNTAsIDYsIDEsIDI0OSwgMjM5LCAxNTAsIDYsIDEsIDIxMCwgMjQ5LCAxNTAsIDYsIDEsIDIyNSwgNDcsIDE1MCwgNiwgMSwgCisgICAgMjM0LCAxNzcsIDE1MCwgNiwgMSwgMjI2LCAyMjMsIDE1MCwgNiwgMSwgMjQ0LCAxNDMsIDE1MCwgNTgsIDEsIDQzLCAxNjMsIAorICAgIDIyMiwgMjM0LCAxNTAsIDI1NCwgNTgsIDE1MCwgMjQ1LCAxNTUsIDc4LCAxNTAsIDI0NSwgMzIsIDc4LCAxNTAsIDI0OSwgCisgICAgMjIwLCAxNTAsIDIyNCwgMTQsIDc4LCAxNTAsIDI1NSwgMjIsIDc4LCAxNTAsIDQsIDEsIDI1MywgMTY1LCAxNTAsIDQsIDEsIAorICAgIDI1MiwgNDAsIDE1MCwgNCwgMSwgMjQyLCAyMDQsIDE1MCwgNCwgMSwgMjQ4LCAyMjIsIDE1MCwgNCwgMSwgMjQ1LCAyMTQsIAorICAgIDE1MCwgNCwgMSwgMjEwLCAxMTYsIDE1MCwgNCwgMSwgMjQ1LCAxOTgsIDE1MCwgNCwgMSwgMjQ1LCA2NiwgMTUwLCA0LCAxLCAKKyAgICAxMTEsIDE1MCwgNCwgMSwgMjEwLCA3NCwgMTUwLCA0LCAxLCAyMzUsIDIyOCwgMTUwLCA0LCAxLCAyMzIsIDE5MSwgMTUwLCAKKyAgICA0LCAxLCAyMTEsIDE2MCwgMTUwLCA0LCAxLCAyNTEsIDM0LCAxNTAsIDQsIDEsIDIzNCwgMTY2LCAxNTAsIDQsIDEsIDI0MSwgCisgICAgNjksIDE1MCwgNCwgMSwgMjM1LCAxNDIsIDE1MCwgNCwgMSwgMjQyLCAyNDcsIDE1MCwgNCwgMSwgMjUwLCAxMjcsIDE1MCwgCisgICAgNCwgMSwgMjMxLCA1OSwgMTUwLCA0LCAxLCAyMTEsIDgsIDE1MCwgNCwgMSwgMjI4LCA0MCwgMTUwLCA0LCAxLCAyMjAsIAorICAgIDEwMywgMTUwLCA0LCAxLCAyMTMsIDEzOCwgMTUwLCA0LCAxLCAyNTAsIDE1OCwgMTUwLCA0LCAxLCAyMjUsIDIwNiwgMTUwLCAKKyAgICA0LCAxLCAyMzUsIDExMSwgMTUwLCA0LCAxLCAyMDUsIDE1MCwgNCwgMSwgMjIxLCAxNjIsIDE1MCwgNCwgMSwgMjEzLCAxNzksIAorICAgIDE1MCwgNCwgMSwgMjE2LCA2MywgMTUwLCA0LCAxLCAyMjMsIDk2LCAxNTAsIDQsIDEsIDI0OSwgMjM5LCAxNTAsIDQsIDEsIAorICAgIDIxMCwgMjQ5LCAxNTAsIDQsIDEsIDIyNSwgNDcsIDE1MCwgNCwgMSwgMjM0LCAxNzcsIDE1MCwgNCwgMSwgMjI2LCAyMjMsIAorICAgIDE1MCwgNCwgMSwgMjQ0LCAxNDMsIDE1MCwgNCwgMjcsIDI0NSwgMjE1LCAyMTAsIDI0OSwgMTUwLCAyNDMsIDIzMCwgMjE4LCAKKyAgICAxMzAsIDE1MCwgMjQwLCAxNjksIDE1MCwgMjQ2LCA5NiwgNTAsIDk0LCAyNTUsIDE2LCAyNDUsIDU4LCA5NCwgMjU1LCAxNiwgCisgICAgMjIxLCAxNjMsIDk0LCAyNTUsIDE2LCAyMjAsIDg5LCA5NCwgMjU1LCAxNiwgMjEwLCAxMDQsIDIyNCwgNzIsIDk0LCAyNTUsIAorICAgIDE2LCAyMTAsIDEwNCwgMjQzLCAxMjYsIDk0LCAyNTUsIDE2LCAyMTYsIDc2LCA5NCwgMjU1LCAxNiwgMjIzLCA0OCwgOTQsIAorICAgIDI1NSwgMTYsIDIxMCwgMTAzLCA5NCwgMjU1LCAxNiwgMjI1LCAyNDYsIDk0LCAyNTUsIDE2LCAyMTEsIDIwLCA5NCwgMjU1LCAKKyAgICAxNiwgMjE2LCAyMTUsIDk0LCAyNTUsIDE2LCAyNDMsIDQyLCA5NCwgMjU1LCAxNiwgMjQzLCA0MywgMjMwLCA3MCwgOTQsIAorICAgIDI1NSwgMTYsIDI0MywgNDAsIDk0LCAyNTUsIDE2LCAyMjQsIDczLCAyMjYsIDE3LCA5NCwgMjU1LCAxNiwgMjE2LCAyNTQsIAorICAgIDI0MywgNTcsIDk0LCAyNTUsIDE2LCAyMjUsIDIyNywgOTQsIDI1NSwgMTYsIDI1MywgMjAxLCAyNDIsIDQyLCA5NCwgMjU1LCAKKyAgICAxNiwgMjMwLCA4MCwgOTQsIDI1NSwgMTYsIDIzMSwgMjA5LCA5NCwgMjU1LCAxNiwgMjMxLCA1MCwgOTQsIDI1NSwgMTYsIAorICAgIDIzMSwgNTEsIDIzNCwgMTc4LCA5NCwgMjU1LCAxNiwgMjQ4LCAxNjQsIDk0LCAyNTUsIDE2LCAyMjQsIDg0LCA5NCwgMjU1LCAKKyAgICAxNiwgMjE2LCAyNTQsIDIyNCwgNjgsIDk0LCAyNTUsIDE2LCAyMTEsIDMwLCAyNTIsIDQxLCAyMTAsIDIzMCwgOTQsIDI1NSwgCisgICAgMTYsIDIyNiwgMjA4LCA5NCwgMjU1LCAxNiwgMjM2LCAyMCwgOTQsIDI1NSwgMTYsIDI0OCwgNzEsIDk0LCAyNTUsIDE2LCAKKyAgICAyMTAsIDMzLCA5NCwgMTY0LCAyMzEsIDE0NCwgMjUwLCAzNiwgOTQsIDIyNSwgMTIsIDIyMCwgMzcsIDk0LCAyMjUsIDEyLCAKKyAgICAyNDEsIDI1MSwgMjIxLCAxNjMsIDk0LCAyMjUsIDEyLCAyNDEsIDI1MSwgMjI1LCAyNDAsIDk0LCAyMjUsIDEyLCAyNDEsIAorICAgIDI1MSwgMjI0LCA3NywgOTQsIDIyNSwgMTIsIDI0MSwgMTU5LCA5NCwgMjI1LCAxMiwgMjE1LCAxNzcsIDk0LCAyMjUsIDEyLCAKKyAgICAyMjEsIDE2MywgOTQsIDIyNSwgMTIsIDIyNSwgMjQwLCA5NCwgMjI1LCAxMiwgMjI0LCA3NywgOTQsIDIyNSwgMTIsIDI0MSwgCisgICAgNjIsIDk0LCAyMjUsIDEyLCAyNDEsIDYzLCAyNDEsIDI1MywgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTIsIDIyNCwgMTgsIDk0LCAKKyAgICAyMjUsIDEyLCAyNDgsIDIwOSwgMTc3LCAyMzEsIDE3MiwgOTQsIDIyNSwgMTIsIDIzMSwgMzksIDk0LCAyMjQsIDE0MiwgCisgICAgMjMxLCAxNjksIDk0LCAyMjUsIDEyLCAyMjMsIDE3MCwgOTQsIDIyNCwgMTQyLCAyMjUsIDI0OCwgOTQsIDIyNSwgMTIsIAorICAgIDIyMCwgMjIsIDI0NywgMTIxLCA5NCwgMjI1LCAxMiwgMjE5LCAxNjAsIDI0NywgMTIxLCA5NCwgMjI0LCAxNDIsIDIxOSwgCisgICAgNTQsIDIyNSwgMjQyLCA5NCwgMTY0LCAyMTQsIDE2MCwgMjQ3LCAxMjEsIDk0LCAxNjQsIDIzMiwgMTA5LCAyNDcsIDEyMSwgCisgICAgOTQsIDIyNCwgMTQyLCAyMjcsIDE5NiwgMjQyLCA0MSwgOTQsIDIyNSwgMTIsIDIyNCwgNzgsIDIyNCwgNzIsIDk0LCAxLCAKKyAgICAyNTQsIDE3MSwgOTQsIDEsIDI1MiwgMjksIDk0LCAxLCAyNDIsIDIwMiwgOTQsIDEsIDI0OCwgMTkwLCA5NCwgMSwgMjQxLCAKKyAgICAyMzksIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAyMTAsIDk3LCA5NCwgMSwgMjQxLCAxOTgsIDk0LCAxLCAyMTYsIDIzMSwgOTQsIAorICAgIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIDIzNCwgMjUxLCA5NCwgMSwgMjM0LCAyNTEsIDk0LCAxLCAyMzMsIDk1LCA5NCwgMSwgCisgICAgNDAsIDIzMSwgNjYsIDk0LCAxLCAyMzEsIDY2LCA5NCwgMSwgNDAsIDIyNywgMTk1LCA5NCwgMSwgMjI3LCAxOTUsIDk0LCAxLCAKKyAgICAyMjEsIDI1MCwgOTQsIDEsIDI1MywgMTYzLCA5NCwgMSwgNDAsIDIyNSwgMjIyLCA5NCwgMSwgMjI1LCAyMjIsIDk0LCAxLCAKKyAgICA0MCwgMjE1LCAxODAsIDk0LCAxLCAyMTUsIDE4MCwgOTQsIDEsIDIyNCwgNDAsIDk0LCAxLCAyMjMsIDY4LCA5NCwgMSwgCisgICAgMjIwLCAyMSwgOTQsIDEsIDIxNywgMzksIDk0LCAyNywgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCAKKyAgICA0LCAyMTAsIDIzMywgOTQsIDI3LCAyMTEsIDYsIDUyLCAyMTAsIDIzMywgOTQsIDIyNCwgMTQyLCAyNDMsIDQyLCA5NCwgCisgICAgMjI0LCAxNDIsIDI0MywgNDAsIDEwLCA1NCwgNTAsIDEwLCA1LCAyMjEsIDI0MywgMTAsIDI0NCwgMzEsIDIzMSwgMTU1LCAKKyAgICAxMCwgNSwgMjIyLCAyNCwgMTAsIDUsIDIyMSwgMjQ2LCAyNTQsIDM4LCAyNDksIDExMCwgMjIyLCAxOTQsIDI1NCwgMzgsIAorICAgIDI0NCwgNSwgMjIyLCAxOTQsIDEwLCAyMjMsIDEzNSwgMjU0LCAzOCwgMjI1LCAxODQsIDIzMCwgMTk0LCA1MCwgMjU0LCAzOCwgCisgICAgMjI1LCAxODQsIDIxNiwgMjQ5LCAyMTYsIDE0OSwgNTAsIDI1NCwgMjIyLCA1MCwgMTAsIDI0OSwgMjIwLCAxMCwgMjQ4LCAKKyAgICAxNTEsIDIyMCwgMTM4LCAxMCwgMjI1LCAxNCwgMjEzLCAyNDEsIDUwLCAxMCwgNSwgMjMwLCAxNzUsIDEwLCA1LCAyMjIsIDQsIAorICAgIDI1NCwgMTczLCAyMTIsIDQ1LCAxMCwgNSwgMjU0LCAxNzMsIDI1MywgMjIyLCAxMCwgNSwgMjIzLCAxNjgsIDI1NCwgMTcyLCAKKyAgICAxMCwgNSwgMjIzLCAxNzYsIDI1NCwgMTUzLCAyNTQsIDEwNSwgMTAsIDUsIDIxNywgNzEsIDEwLCA0LCAxMjUsIDIxNywgODEsIAorICAgIDEwLCA0LCAxMjUsIDI3LCAxMTIsIDIsIDIzMywgMTA0LCAyLCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAyMTAsIDEwOCwgMTAsIAorICAgIDQsIDI0NCwgMTY2LCAxMCwgNCwgMjQ4LCAxODUsIDEwLCA0LCAyMzQsIDIwNiwgMTAsIDIyMCwgMTUxLCAxMCwgMjE1LCAKKyAgICAyMTIsIDU5LCAyMjQsIDE0MiwgNzgsIDEwLCAyMjQsIDE0LCA3OCwgMTAsIDEsIDIzNCwgMjEwLCAyMTEsIDQzLCAxMCwgMSwgCisgICAgMjQyLCAyMCwgMTAsIDEsIDExMiwgMiwgMjMxLCAyMjksIDQ4LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjEyLCAKKyAgICAzMSwgMiwgMjAyLCA0OCwgMTAsIDEsIDExMiwgMiwgMjAyLCA1MSwgMTAsIDEsIDc5LCAyLCAyMDIsIDQ4LCAxMCwgMSwgCisgICAgMjU0LCAxNzEsIDEwLCAxLCAyNTIsIDU1LCAxMCwgMSwgMjE3LCA5LCAyMzEsIDE2NSwgMTAsIDEsIDIxNywgOCwgMTAsIDEsIAorICAgIDIxNiwgMTkzLCAxMCwgMSwgMjM1LCAxMjQsIDEwLCAxLCAyNDIsIDM4LCAxMCwgMSwgMjM0LCAxMzAsIDEwLCAxLCAyNDgsIAorICAgIDE5NiwgMTAsIDEsIDIxNiwgMjAzLCAxMCwgMSwgMjIzLCA5NiwgMTAsIDEsIDIxMCwgMTA4LCAxMCwgMSwgMjIxLCAxNjcsIAorICAgIDEwLCAxLCAyMjAsIDYwLCAxMCwgMSwgMjIyLCAyNywgMTAsIDEsIDI0OCwgMjE3LCAxMCwgMSwgMjE3LCA4MSwgMTAsIDEsIAorICAgIDIxMCwgMTExLCAxMCwgMSwgMjU0LCAxOTcsIDEwLCAxLCAyNDIsIDI0NSwgMTAsIDEsIDIzNCwgMTc2LCAyLCAxMTMsIDE3MCwgCisgICAgNDgsIDEwLCAxLCAyMzQsIDE3NiwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNjksIDc5LCAyLCAyMzUsIDE5NCwgCisgICAgMjE0LCAxMDUsIDEwLCAxLCAyNDQsIDE2OSwgNzksIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTY5LCA3OSwgMiwgCisgICAgMTM0LCAxNzAsIDQ4LCAxMCwgMjE3LCA0NCwgMTAsIDEsIDI0NCwgMTQzLCAxMCwgMSwgMjI0LCA4MiwgMTAsIDEsIDIzNCwgCisgICAgMjUxLCAxMCwgMSwgMjMzLCAxMDMsIDEwLCAxLCAyMzEsIDc5LCAxMCwgMSwgMjI4LCA2MywgMTAsIDEsIDI0MSwgMjE5LCAKKyAgICAxMCwgMSwgMjEyLCAzMCwgMTAsIDEsIDExMiwgMjMxLCAxOTMsIDEwLCAxLCAyMTEsIDQzLCAxMCwgMjQ0LCAxNjQsIDEwLCAKKyAgICAyNDgsIDE4MywgMTAsIDIzNCwgMjA0LCAxMCwgMjQ0LCAxNjYsIDEwLCAyNDgsIDE4NSwgMTAsIDIzNCwgMjA2LCAxMCwgCisgICAgMjIwLCA5NCwgMTAsIDIxOCwgNDYsIDEwLCAyMzEsIDIyNywgNDgsIDEwLCAyMDIsIDQ4LCAxMCwgMjAyLCA1MSwgMTAsIAorICAgIDIxOCwgNjYsIDI1NCwgMTcxLCAxMCwgMjM1LCAxOTQsIDI0OCwgMTg1LCAxMCwgMTY0LCAyMjgsIDY0LCAyNDIsIDIxOSwgCisgICAgMTAsIDIwOSwgMjU1LCAxMCwgMjUsIDUsIDQsIDIxNCwgMTA2LCA0OCwgMTAsIDI1LCA1LCAyMzUsIDE5NCwgNCwgMjE0LCAKKyAgICAxMDYsIDQ4LCAxMCwgMjUsIDUsIDU5LCA1MSwgMTAsIDIyMywgNTAsIDI0OCwgMTg1LCAxMCwgMjQ0LCAxNjcsIDIsIDExMywgCisgICAgMjQ3LCAxMTksIDEwLCAyMTIsIDMyLCAyMDIsIDUxLCAyNTQsIDM4LCAyMSwgMjEwLCA4NiwgMjU0LCAzOCwgMjEsIDExMCwgCisgICAgMjU0LCAzOCwgMjEsIDEwNSwgMjU0LCAzOCwgMjEsIDE1OCwgMjU0LCAzOCwgMjEsIDE2MSwgMjU0LCAzOCwgMjEsIDE4OSwgCisgICAgMjU0LCAzOCwgMjEsIDE5NCwgMjU0LCAzOCwgMjEsIDE5OCwgMjU0LCAzOCwgMjEsIDE5NSwgMjU0LCAzOCwgMjEsIDIwMCwgCisgICAgMTAsIDIyNSwgMTgzLCA1MCwgMTAsIDI0OCwgODQsIDIyMCwgMTM4LCAxMCwgMjE2LCAxNDcsIDIyMCwgMTM4LCAxMCwgMjQ0LCAKKyAgICA4MiwgMjI1LCAxMCwgMjE4LCAxNTcsIDEwLCAxLCAyNDcsIDEyMCwgMjUyLCA1NSwgMTAsIDEsIDI0NywgMTIwLCAyMjQsIAorICAgIDgyLCAxMCwgMSwgMjE4LCAyNCwgMjU0LCAxNzEsIDEwLCAxLCAxMTIsIDIxMiwgNDYsIDEwLCAxLCAxMTIsIDIsIDIxMiwgCisgICAgMzIsIDIwMiwgNDgsIDEwLCAxLCAxMTIsIDIsIDIxMiwgMzIsIDIwMiwgNTEsIDEwLCAxLCAxMjUsIDI0MiwgMjAsIDEwLCAxLCAKKyAgICAxMjUsIDIwMiwgMjU0LCAxNzEsIDEwLCAxLCAxMjUsIDIwMiwgMjEyLCAzMCwgMTAsIDEsIDEwNCwgMiwgMjAyLCA0OCwgMTAsIAorICAgIDEsIDEyNSwgMjAyLCAyMTEsIDQzLCAxMCwgMSwgMjE1LCAxNDksIDEwLCAxLCAyMTUsIDE0NywgMTAsIDEsIDI1MiwgNjUsIAorICAgIDEwLCAxLCAyMTcsIDksIDIsIDIyMiwgMjM0LCAxMCwgMSwgMjE3LCA5LCAyLCAxMzQsIDE3MCwgNzcsIDI0NiwgMTA0LCAxMCwgCisgICAgMSwgMjI1LCAyMDYsIDEwLCAxLCAyMTcsIDYsIDEwLCAxLCAyNTIsIDUzLCAxMCwgMSwgMTIyLCAyLCAyMDIsIDQ4LCAxMCwgCisgICAgMSwgMTIyLCAyLCAxMTMsIDE3MCwgNjcsIDQ4LCAxMCwgMSwgMjI3LCAxNTQsIDEwLCAxLCAyNDYsIDQ0LCAxMCwgMSwgMTIyLCAKKyAgICAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIDI3LCAxMCwgMSwgMjE3LCAyNSwgMTAsIDEsIDI0OCwgMTMxLCAxMCwgMSwgCisgICAgMjQ4LCAxOTcsIDIsIDIyMiwgMjM0LCAxMCwgMSwgMjQ4LCAxOTcsIDIsIDU5LCA1MSwgMTAsIDEsIDI0OCwgMTk3LCAyLCAKKyAgICA1OSwgMjUyLCA0NCwgMjIsIDQsIDIxNywgODEsIDEwLCAxLCAyNDgsIDIwMiwgMTAsIDEsIDI0OCwgMTMzLCAxMCwgMSwgCisgICAgMjQ2LCA3MSwgMTAsIDEsIDI0OCwgMTk3LCAyLCAxMzQsIDE3MCwgNzcsIDI0NiwgMTA0LCAxMCwgMSwgMjQ4LCAxOTcsIDIsIAorICAgIDI0NCwgMTIsIDE3MCwgNDgsIDEwLCAxLCAyMjIsIDE3MiwgMTAsIDEsIDIyMywgOTcsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgCisgICAgMjIzLCA5NywgMiwgMjIyLCAyMzQsIDEwLCAxLCAyMjMsIDk3LCAyLCA1OSwgNTEsIDEwLCAxLCAyMjMsIDk3LCAyLCA0LCAKKyAgICAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyMjMsIDk3LCAyLCA1OSwgMjUyLCA0NCwgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMywgOTcsIAorICAgIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIzNSwgMTIxLCAxMCwgMSwgMjIzLCA5NywgMiwgMjQ0LCAxMiwgMTcwLCA0OCwgCisgICAgMTAsIDEsIDIyMSwgMTY4LCAyLCA1OSwgMjUyLCA0NCwgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMSwgMTY4LCAyLCAxMzQsIAorICAgIDE3MCwgNTEsIDEwLCAxLCAyMjEsIDE2OCwgMiwgMTM0LCAxNzAsIDI1MiwgNDQsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAKKyAgICAyMjIsIDI4LCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyMjIsIDI4LCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMTcsIAorICAgIDgyLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5OCwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjQ3LCAxMjAsIAorICAgIDI0NCwgMTQzLCAxMCwgMSwgMjQ0LCAxNDQsIDIsIDU5LCAyMzAsIDExMCwgNTEsIDEwLCAxLCAyNDQsIDE0NCwgMiwgNTksIAorICAgIDUxLCAxMCwgMSwgMjEzLCAyNDgsIDEwLCAxLCAyNDQsIDE0NCwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjI1LCAyMDQsIAorICAgIDEwLCAxLCAyMjQsIDgzLCAyLCA1OSwgNDgsIDEwLCAxLCAyMjQsIDgzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzQsIAorICAgIDE3NSwgMTAsIDEsIDIxNywgMjUxLCAyMzQsIDI1MSwgMTAsIDEsIDIzNCwgMjUyLCAyLCAyMjIsIDIzNCwgMTAsIDEsIDIzNCwgCisgICAgMjUyLCAyLCA1OSwgNDgsIDEwLCAxLCAyMjksIDgwLCAxMCwgMSwgMjM0LCAyNTIsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIAorICAgIDI0MywgMTIzLCAxMCwgMSwgMjQzLCAxMjQsIDIsIDIyMiwgMjM0LCAxMCwgMSwgMjI5LCAzLCAxMCwgMSwgMjQzLCAxMjQsIAorICAgIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDI0MiwgMTAyLCAxMCwgMSwgMjQzLCAxMjQsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIAorICAgIDEsIDIzMywgMTA0LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIzMywgMTA0LCAyLCA1OSwgNDgsIDEwLCAxLCAyMzMsIDEwNCwgCisgICAgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjMzLCAxMDQsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDIyOCwgNjQsIDIsIDU5LCAKKyAgICA1MSwgMTAsIDEsIDIyOCwgNjQsIDI0MiwgMjE5LCAxMCwgMSwgMjIyLCAyMTUsIDEwLCAxLCAyMjgsIDY0LCAyLCAyMjIsIAorICAgIDIzNCwgMTAsIDEsIDIyOCwgNjQsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI0MSwgMjIwLCAyNDcsIDE0MiwgMTAsIDEsIAorICAgIDIxNywgMjgsIDIsIDU5LCA0OCwgMTAsIDEsIDI0MSwgMjIwLCAyLCA3OSwgNDgsIDEwLCAxLCAyNDEsIDIyMCwgMjQyLCAKKyAgICAxNzIsIDEwLCAxLCAyNDEsIDIyMCwgMjQyLCAxNzMsIDIsIDIwMiwgNDgsIDEwLCAxLCAyMTcsIDksIDIzMSwgMTY2LCAyNDIsIAorICAgIDE3MiwgMTAsIDEsIDIxMiwgMzEsIDIsIDIyMiwgMjM0LCAxMCwgMSwgMjM0LCA3NCwgMjI2LCAyMzUsIDEwLCAxLCAyMjYsIAorICAgIDIzNSwgMTAsIDEsIDcwLCAxMCwgMSwgMjEwLCAyMTIsIDEwLCAxLCAyMzQsIDc0LCAyMTAsIDIxMiwgMTAsIDEsIDIxMiwgCisgICAgMzEsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIxMywgMjU1LCAxMCwgMSwgMjQ0LCAxNjksIDIxMSwgNDMsIDEwLCAxLCAKKyAgICA3OSwgMiwgMjE3LCA3OCwgMTAsIDEsIDc5LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIxMiwgMzEsIDIsIDU5LCA0OCwgMTAsIAorICAgIDEsIDc1LCAxMCwgMSwgNzksIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDc5LCAyNTIsIDEzMywgMTAsIDEsIDc5LCAyNTIsIAorICAgIDEzNCwgMiwgMjAyLCA0OCwgMTAsIDI0MywgMjMwLCAyMTgsIDEzMCwgMTAsIDEsIDI1NCwgMjQ0LCAxMCwgNCwgMTI1LCAyNywgCisgICAgMjIyLCAyOCwgMiwgMjMzLCAxMDQsIDIsIDExMiwgMjMxLCAxOTMsIDEwLCA0LCAxMjUsIDI3LCAyMjQsIDgzLCAyLCAyMzMsIAorICAgIDEwNCwgMiwgMTEyLCAyMzEsIDE5MywgMTAsIDQsIDEyNSwgNjYsIDY1LCAxNywgMTAsIDQsIDEyNSwgMjMzLCAxMDQsIDI1NCwgCisgICAgMTcxLCAxMCwgNCwgMTI1LCAyMzUsIDEyNCwgMTAsIDQsIDEyNSwgMTM0LCAyNDcsIDExOSwgMTAsIDQsIDEyNSwgMjIxLCAKKyAgICAxNjcsIDEwLCAyNDUsIDE0NCwgNjQsIDI1MywgMTY3LCAxMCwgMjE4LCAxNTMsIDY0LCAyMjIsIDEzOSwgMjQ1LCAxNzYsIAorICAgIDI0MSwgMTU2LCAxMCwgNCwgMTI1LCAyMjIsIDE4NCwgMjEwLCA4NiwgMTAsIDQsIDEyNSwgMjE0LCAxNTksIDIyMywgMTE2LCAKKyAgICAyMTAsIDg2LCAxMCwgNCwgMTI1LCAyNDcsIDEyMCwgMjQxLCAyMzcsIDY0LCAyMzQsIDEzMCwgMTAsIDQsIDEyNSwgNjYsIAorICAgIDUzLCAxNywgMTAsIDQsIDEyMSwgMjIxLCAxNjcsIDEwLCA0LCAxMjUsIDIzMSwgMjI4LCAxMCwgNCwgMjEyLCAzMCwgMTAsIAorICAgIDQsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIDIyOCwgNjMsIDEwLCAyMjUsIDQyLCA2NCwgCisgICAgMjIyLCAxNCwgMTAsIDI0NSwgMTUzLCAyNTAsIDE3NiwgMTIxLCAyMTgsIDEzMCwgMTAsIDI0NSwgMTUzLCAyNTAsIDE3NiwgCisgICAgMTI1LCAyMTgsIDEzMCwgMTAsIDIyMiwgMTg0LCAxMjUsIDIxOCwgMTMxLCAyLCAyNDQsIDEwNSwgMjUwLCAxNzUsIDEwLCA0LCAKKyAgICAxMjEsIDIzMSwgNzksIDEwLCAxLCAyNDgsIDE5NywgMiwgMjM1LCAxOTQsIDIxNCwgMTA1LCAxMCwgMSwgMjIzLCA5NywgMiwgCisgICAgMjM1LCAxOTQsIDIxNCwgMTA1LCAyNDUsIDIzLCAyNTQsIDM4LCAyMSwgMjEwLCA4NiwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIAorICAgIDExMCwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDEwNSwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDE1OCwgMjQ1LCAyMywgMjU0LCAKKyAgICAzOCwgMjEsIDE2MSwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDE4OSwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDE5NCwgMjQ1LCAKKyAgICAyMywgMjU0LCAzOCwgMjEsIDE5OCwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDE5NSwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIAorICAgIDIwMCwgMTAsIDEsIDIyMCwgNjEsIDIsIDU5LCA1MSwgMTAsIDEsIDI0OCwgMjE4LCAyLCA1OSwgNTEsIDEwLCAxLCAyNDIsIAorICAgIDI0NiwgMiwgNTksIDUxLCAxMCwgNSwgMjE5LCAxNTksIDI1NCwgMTI3LCAxMCwgNSwgMjE5LCAxNTksIDIyNCwgMjM2LCAKKyAgICAyMzEsIDU5LCAxMCwgMSwgMjQxLCAyMjAsIDIsIDIzNSwgMTk0LCAyMTQsIDEwNSwgMTgyLCAyNDUsIDE0NCwgNjQsIDIyNiwgCisgICAgMTUsIDE4MiwgMjE4LCAyMCwgMjQzLCAyMzAsIDIxOCwgMTMwLCAxODIsIDIxOCwgNjgsIDI0MywgMjMwLCAyMTgsIDEzMCwgCisgICAgMTgyLCAyMTgsIDIwLCAyNDksIDIyNywgMTgyLCAyMTgsIDY4LCAyNDksIDIyNywgMTgyLCAyMDMsIDI0OSwgMjI3LCAxODIsIAorICAgIDI0OSwgMjI4LCAyMTksIDEwNywgMjMzLCA0NywgMTgyLCAyNDksIDIyOCwgMjE5LCAxMDcsIDIyMiwgMjUyLCAxODIsIDIxOCwgCisgICAgMjAsIDI0OSwgMjI4LCAyMTksIDEwNywgMjMzLCA0NywgMTgyLCAyMTgsIDY4LCAyNDksIDIyOCwgMjE5LCAxMDcsIDIyMiwgCisgICAgMjUyLCAxODIsIDI0OSwgMTgxLCAxODIsIDI0MiwgMiwgMjI2LCAyNTEsIDE4MiwgMjQyLCAyLCAyMzEsIDM3LCAxODIsIAorICAgIDI0MiwgMiwgMjUzLCAyMTksIDE4MiwgMjU1LCAyMiwgNzgsIDE4MiwgMSwgMjU0LCAxNzUsIDE4MiwgMSwgMjE4LCAyNCwgCisgICAgMjU0LCAxNzUsIDE4MiwgMSwgMjUyLCAyNiwgMTgyLCAxLCAyNDMsIDExNCwgMTgyLCAxLCAyNDMsIDExNSwgMjQzLCA5MiwgCisgICAgMTgyLCAxLCAyNDgsIDE5MywgMTgyLCAxLCAyNDcsIDEyMCwgMjQ4LCAxOTQsIDIyMiwgMjMwLCAxODIsIDEsIDI0MSwgMjM5LCAKKyAgICAxODIsIDEsIDIxMiwgMzAsIDE4MiwgMSwgMjEwLCAxMDgsIDE4MiwgMSwgMjQxLCAxOTYsIDE4MiwgMSwgMjE2LCAyMjcsIAorICAgIDE4MiwgMSwgMjE2LCAyMjgsIDI0MywgOTIsIDE4MiwgMSwgMjEwLCAxOTksIDE4MiwgMSwgMjEwLCAyMDAsIDI0MSwgMjM5LCAKKyAgICAxODIsIDEsIDIzNCwgMjI2LCAxODIsIDEsIDIzMywgMTAyLCAxODIsIDEsIDIzMCwgMTkxLCAxODIsIDEsIDIyNywgMTk1LCAKKyAgICAxODIsIDEsIDIyMCwgMTQ0LCAxODIsIDEsIDQwLCAyMjAsIDE0NCwgMTgyLCAxLCA3NSwgMTgyLCAxLCAyMjUsIDIyMiwgCisgICAgMTgyLCAxLCAyMjMsIDUwLCAyMjUsIDIyMiwgMTgyLCAxLCAyMjIsIDI1LCAxODIsIDEsIDIyNCwgNzYsIDE4MiwgMSwgMjIyLCAKKyAgICAyMzAsIDE4MiwgMSwgMjIwLCAyMSwgMTgyLCAxLCAyMTcsIDM3LCAxODIsIDEsIDIyNSwgMTcwLCAyNTIsIDEzLCAxODIsIDEsIAorICAgIDIyNSwgMTcwLCAyNDIsIDI0MywgMTgyLCAxLCAyMjUsIDE3MCwgMjQ4LCAyMSwgMTgyLCAyMjQsIDE1MiwgNDgsIDE4MiwgCisgICAgMjI0LCAxNTIsIDUxLCAxODIsIDIyNCwgMTUyLCAyNDYsIDExOCwgMTgyLCAyMTAsIDE3LCA0OCwgMTgyLCAyMTAsIDE3LCAKKyAgICA1MSwgMTgyLCAyMTAsIDE3LCAyNDYsIDExOCwgMTgyLCAyMjMsIDEzMiwgNDgsIDE4MiwgMjIzLCAxMzIsIDUxLCAxODIsIAorICAgIDI0NiwgMTE5LCAyMTAsIDI0LCAyNDEsIDQ1LCAxODIsIDI0NiwgMTE5LCAyMTAsIDI0LCAyNTQsIDEwNiwgMTgyLCAyNDEsIAorICAgIDI0MiwgNDgsIDE4MiwgMjQxLCAyNDIsIDUxLCAxODIsIDI0MSwgMjQxLCAyNDYsIDExOCwgMTgyLCAyNDUsIDgwLCA0OCwgCisgICAgMTgyLCAyNDUsIDgwLCA1MSwgMTgyLCAyMjIsIDEwOCwgMTgyLCAyNDQsIDEzNywgMjQ3LCAxMjEsIDE4MiwgMjIzLCAyNDksIAorICAgIDE4MiwgMjIyLCAxMzUsIDE4MiwgMTEzLCA2NywgMTcwLCA0OCwgMTgyLCAxMTMsIDY3LCAxNzAsIDUxLCAxODIsIDEzNCwgCisgICAgMTcwLCA0OCwgMTgyLCAxMzQsIDE3MCwgNTEsIDE4MiwgMjI2LCAyNDksIDIzMiwgMjE1LCA0OCwgMTgyLCAyMjYsIDI0OSwgCisgICAgMjMyLCAyMTUsIDUxLCAxODIsIDIzMCwgNTcsIDE4MiwgMjUyLCAxMzIsIDE4MiwgMSwgMjE5LCA1MCwgMjEwLCA4MCwgMTgyLCAKKyAgICAxLCAyMTksIDUwLCAyMzQsIDEyMywgMTgyLCAxLCAyMTksIDUwLCAyNDQsIDE1NSwgMTAsIDEsIDI1MiwgNTYsIDIsIDEzNCwgCisgICAgMTcwLCAyNDAsIDI1MSwgNTEsIDEwLCAxLCAyNTIsIDU2LCAyLCA1OSwgMjUyLCA0NCwgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIAorICAgIDEsIDI1MiwgNTYsIDIsIDEzNCwgMTcwLCAyMjUsIDgsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDI1MiwgNTYsIDIsIDEzNCwgCisgICAgMTcwLCAyMjUsIDgsIDIxNCwgMTUzLCAyNTIsIDQ0LCAyMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjUyLCA1NiwgMiwgMTEzLCAKKyAgICAxNzAsIDI1MiwgNDQsIDIyLCA1OSwgNDgsIDEwLCAxLCAyNTIsIDU2LCAyLCAyMzUsIDE5NCwgNCwgMjE0LCAxMDYsIDUxLCAKKyAgICAxMCwgMSwgMjUyLCA1NiwgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAxMjIsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDEyMiwgCisgICAgMiwgMTM0LCAxNzAsIDIyNSwgOCwgMjE0LCAxNTMsIDUxLCAxMCwgMSwgMjQ4LCAxOTcsIDIsIDExMywgMTcwLCAyMTMsIAorICAgIDE4OSwgMjUyLCA0NCwgMjIsIDQsIDIxNywgODEsIDEwLCAxLCAyNDgsIDE5NywgMiwgMjM1LCAxOTQsIDQsIDIxNCwgMTA2LCAKKyAgICA1MSwgMTAsIDEsIDIyMywgOTcsIDIsIDkxLCAxMCwgMSwgMjIxLCAxNjgsIDIsIDI0NCwgMTIsIDE3MCwgNDgsIDEwLCAxLCAKKyAgICAyNTQsIDE5OCwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTgsIDIsIDEzNCwgMTcwLCAyMjUsIDgsIDI0NiwgCisgICAgMTA1LCA0OCwgMTAsIDEsIDI1NCwgMTk4LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMjQ0LCAxNDQsIDIsIAorICAgIDExMywgMTcwLCA1MSwgMTAsIDEsIDI0NCwgMTQ0LCAyLCAxMzQsIDE3MCwgMjI1LCA4LCAyMTQsIDE1MywgNTEsIDEwLCAxLCAKKyAgICAyMzQsIDE3NiwgMiwgNTksIDQ4LCAxMCwgMSwgMjM0LCAxNzYsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzNCwgMTc2LCAKKyAgICAyLCAxMzQsIDE3MCwgMjI1LCA4LCAyMTQsIDE1MywgNTEsIDEwLCAxLCA2NiwgMiwgNTksIDQ4LCAxMCwgMSwgNjYsIDIsIAorICAgIDU5LCA1MSwgMTAsIDEsIDIyOCwgNjQsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDIyOCwgNjQsIDIsIDQsIDIxNywgODEsIAorICAgIDEwLCAxLCAyMjgsIDY0LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIzMywgMTA0LCAyLCAxMzAsIDEwLCAxLCAyMjMsIDk3LCAKKyAgICAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMjIzLCA5NywgMiwgMjAyLCA0OCwgMTAsIDEsIDIyMSwgMTY4LCAKKyAgICAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAxMCwgMSwgMTIyLCAyLCA0LCAxMCwgMSwgMjE3LCA4MiwgNTEsIDEwLCAxLCAKKyAgICAxMjIsIDIsIDQsIDEwLCAxLCAyMTcsIDgyLCAyMiwgMTEzLCAyNDcsIDExOSwgMTAsIDEsIDIyMSwgMTY4LCAyLCA0LCAxMCwgCisgICAgMSwgMjE3LCA4MiwgMjIsIDExMywgMjQ3LCAxMTksIDEwLCAxLCAyMjMsIDk3LCAyLCA0LCAxMCwgMSwgMjE3LCA4MiwgMjIsIAorICAgIDExMywgMjQ3LCAxMTksIDEwLCAxLCAxMjIsIDIsIDQsIDEwLCAxLCAyMTcsIDgyLCA0OCwgMTAsIDEsIDExMiwgMiwgMjQ1LCAKKyAgICAyMywgMjU0LCAzOCwgMjEsIDExMywgNDgsIDEwLCAxLCAxMTIsIDIsIDI0NSwgMjMsIDI1NCwgMzgsIDIxLCAxMzQsIDQ4LCAKKyAgICAxMCwgMSwgMjQ0LCAxNjksIDc5LCAyLCAyNDUsIDIzLCAyNTQsIDM4LCAyMSwgMTEzLCA0OCwgMTAsIDEsIDI0NCwgMTY5LCAKKyAgICA3OSwgMiwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDEzNCwgNDgsIDEwLCAxLCAyNDQsIDE2OSwgNzksIDIsIDI0NSwgMjMsIAorICAgIDI1NCwgMzgsIDIxLCAyNDQsIDEyLCA1MSwgMTAsIDEsIDIxMiwgMzEsIDIsIDI0NSwgMjMsIDI1NCwgMzgsIDIxLCAxMTMsIAorICAgIDQ4LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDEzNCwgNDgsIDEwLCAxLCA3OSwgMjUyLCAKKyAgICAxMzQsIDIsIDI0NSwgMjMsIDI1NCwgMzgsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgNzksIDI1MiwgMTM0LCAyLCAyNDUsIDIzLCAKKyAgICAyNTQsIDM4LCAyMSwgMTM0LCA0OCwgMTAsIDEsIDEyMiwgMiwgMjQ1LCAyMywgMjU0LCAzOCwgMjEsIDI0NCwgMTIsIDUxLCAKKyAgICAxMCwgMSwgMjIxLCAxNjgsIDIsIDI0NSwgMjMsIDI1NCwgMzgsIDIxLCAyNDQsIDEyLCA0OCwgMTAsIDEsIDIyMSwgMTY4LCAKKyAgICAyLCAyMzUsIDE5NCwgMjE0LCAxMDUsIDEwLCAxLCAyMzQsIDI1MiwgMiwgMTEzLCAxNzAsIDQ4LCAyMTYsIDIwNiwgMSwgCisgICAgMjQyLCA0NywgMjE2LCAyMDYsIDEsIDIyMCwgNjksIDIxNiwgMjA2LCAxLCAyMjgsIDYyLCAyMTYsIDIwNiwgMSwgMjIzLCAKKyAgICAxODUsIDIxNiwgMjA2LCAxLCAyNTIsIDE5MCwgMjE2LCAyMDYsIDEsIDIzMiwgMjUyLCAyMTYsIDIwNiwgMSwgMjM1LCA5LCAKKyAgICAyMTYsIDIwNiwgMSwgMjU0LCAxNjAsIDIxNiwgMjA2LCAxLCAyMTQsIDI1LCAyMTYsIDIwNiwgMSwgMjMxLCA3OCwgMjE2LCAKKyAgICAyMDYsIDEsIDI0NCwgMTk1LCAyMTYsIDIwNiwgMSwgMjQ4LCAyNCwgMjE2LCAyMDYsIDEsIDIxNiwgMjA4LCAyMTYsIDIwNiwgCisgICAgMSwgMjMzLCAxMzIsIDIxNiwgMjA2LCAxLCAyNDMsIDEzMiwgMjE2LCAyMDYsIDEsIDI0MiwgMTc4LCAyMTYsIDIwNiwgMSwgCisgICAgMjIxLCAxNjYsIDIxNiwgMjA2LCAxLCAyNDgsIDE0OSwgMjE2LCAyMDYsIDEsIDIxMCwgMTAwLCAyMTYsIDIwNiwgMSwgMjE3LCAKKyAgICAzOCwgMjE2LCAyMDYsIDEsIDIxMSwgMTAzLCAyMTYsIDIwNiwgMSwgMjI1LCAyMzQsIDIxNiwgMjA2LCAxLCAyMzUsIDEyOSwgCisgICAgMjE2LCAyMDYsIDEsIDI1MCwgMTM1LCAyMTYsIDIwNiwgMSwgMjE1LCAxNTYsIDIxNiwgMjA2LCAxLCAyNDEsIDE4OSwgMjE2LCAKKyAgICAyMDYsIDEsIDIzNCwgMTMyLCAyMTYsIDIwNiwgMSwgMjE2LCAyMDcsIDIxNiwgMjA2LCAxLCAyMTAsIDExNSwgMjE2LCAyMDYsIAorICAgIDEsIDIyMCwgNTksIDIxNiwgMjA2LCAxLCAyMjIsIDMxLCAyMTYsIDIwNiwgMSwgMjQ4LCAyMjAsIDIxNiwgMjA2LCAxLCAKKyAgICAxMTEsIDIxNiwgMjA2LCAxLCAyMTAsIDIzLCAyMTYsIDIwNiwgMSwgMjU0LCAxOTQsIDIxNiwgMjA2LCAxLCAyNDIsIDI0NCwgCisgICAgMjE2LCAyMDYsIDEsIDIyNCwgODYsIDIxNiwgMjA2LCAxLCAyMTIsIDYzLCAyMTYsIDIwNiwgMjU1LCAyMywgMjE2LCAyMDYsIAorICAgIDI1NSwgMzksIDIxNiwgMjA2LCAyNDAsIDExNSwgMjE2LCAyMDYsIDI0NSwgMjA5LCAyMTYsIDIwNiwgMjE0LCAyMjIsIDIxNiwgCisgICAgMjA2LCAyMjYsIDE4MywgMjE2LCAyMDYsIDI0NSwgMjE3LCAyMTYsIDIwNiwgMjQ1LCAxNywgMjE2LCAyMDYsIDIyNiwgMjQ4LCAKKyAgICAyMTYsIDIwNiwgMjI3LCAwLCAyMTYsIDIwNiwgMjE4LCA0NiwgMjE2LCAyMDYsIDEsIDIyOSwgMjI2LCAyMjgsIDEzOCwgMjEsIAorICAgIDIxMCwgODYsIDIyOCwgMTM4LCAyMSwgMTEwLCAyMjgsIDEzOCwgMjEsIDEwNSwgMjI4LCAxMzgsIDIxLCAxNTgsIDIyOCwgCisgICAgMTM4LCAyMSwgMTYxLCAyMjgsIDEzOCwgMjEsIDE4OSwgMjI4LCAxMzgsIDIxLCAxOTQsIDIyOCwgMTM4LCAyMSwgMTk4LCAKKyAgICAyMjgsIDEzOCwgMjEsIDE5NSwgMjI4LCAxMzgsIDIxLCAyMDAsIDIyOCwgMTM4LCAxLCA2MSwgMjI4LCAxMzgsIDEsIDI0NSwgCisgICAgMjEwLCAyMjgsIDEzOCwgMSwgNzMsIDIyOCwgMTM4LCAxLCA3NSwgMjI4LCAxMzgsIDEsIDcwLCAyMjgsIDEzOCwgMSwgMjI2LCAKKyAgICAxODQsIDIyOCwgMTM4LCAxLCA3NiwgMjI4LCAxMzgsIDEsIDI0OCwgMjEwLCAyMjgsIDEzOCwgMSwgMjMwLCAyNiwgMjI4LCAKKyAgICAxMzgsIDEsIDI1MiwgMTkyLCAyMjgsIDEzOCwgMSwgMTkwLCAyMjgsIDEzOCwgMSwgMjE3LCAxMDYsIDIyOCwgMTM4LCAxLCAKKyAgICAyMzUsIDE0MiwgMjI4LCAxMzgsIDEsIDI1MCwgMTU4LCAyMjgsIDEzOCwgMSwgMjQ4LCAyMjIsIDIyOCwgMTM4LCAxLCAyMDUsIAorICAgIDIyOCwgMTM4LCAxLCAyMjIsIDE4MCwgMjI4LCAxMzgsIDEsIDIwNiwgMjI4LCAxMzgsIDEsIDI0MywgODAsIDIyOCwgMTM4LCAKKyAgICAxLCAyNDQsIDE5NywgMjI4LCAxMzgsIDEsIDE3NiwgMjI4LCAxMzgsIDEsIDIzMywgMTM2LCAyMjgsIDEzOCwgMSwgMjI5LCAKKyAgICAyMzAsIDIxMSwgMjIzLCAyMjgsIDEzOCwgMSwgMTg1LCAyMjgsIDEzOCwgMSwgMjI3LCAxNjYsIDIyOCwgMTM4LCAxLCAxOTcsIAorICAgIDIyOCwgMTM4LCAxLCAxNjIsIDIyOCwgMTM4LCAxLCAyMTIsIDY1LCAyMjgsIDEzOCwgMSwgMTkxLCAyMjgsIDEzOCwgMSwgCisgICAgMjI3LCAxNjcsIDIxMSwgMjIzLCAyMjgsIDEzOCwgMSwgMjM1LCA2MiwgMjM1LCAxNDIsIDIyOCwgMTM4LCAxLCAyMzUsIDYyLCAKKyAgICAyNTAsIDE1OCwgMjI4LCAxMzgsIDEsIDIzNSwgNjIsIDIwNSwgMjI4LCAxMzgsIDM4LCAyMTksIDI1MiwgMTI1LCAyMTYsIAorICAgIDMxLCAyMjgsIDEzOCwgMzgsIDIxOSwgMjUyLCAxMjEsIDIxNiwgMzEsIDIyOCwgMTM4LCAzOCwgMjE5LCAyNTIsIDIyMiwgCisgICAgMjI5LCAyMTYsIDMxLCAyMjgsIDEzOCwgMzgsIDE5OSwgMjQ4LCAzOSwgMjE2LCAzMSwgMjI4LCAxMzgsIDM4LCAxOTksIAorICAgIDEyNSwgMjE2LCAzMSwgMjI4LCAxMzgsIDM4LCAxOTksIDEyMSwgMjE2LCAzMSwgMjI4LCAxMzgsIDM4LCAxOTksIDIyMiwgCisgICAgMjI5LCAyMTYsIDMxLCAyMjgsIDEzOCwgMzgsIDIyOSwgMTk0LCA3OCwgMjI4LCAxMzgsIDM4LCA1MiwgNTksIDQ4LCAyMjgsIAorICAgIDEzOCwgMTI1LCAxMzgsIDI1NCwgNTgsIDIyOCwgMTM4LCAxMjEsIDEzOCwgMjU0LCA1OCwgMjI4LCAxMzgsIDE2LCAyMjYsIAorICAgIDE4NSwgMjQ4LCA1MSwgMjI4LCAxMzgsIDE2LCAyNDMsIDc5LCAyMjgsIDEzOCwgMjQ5LCAyMjAsIDIyOCwgMTM4LCAyNDUsIAorICAgIDMyLCA3OCwgMjI4LCAxMzgsIDIzMywgMTA5LCAyMjEsIDI1MywgMSwgMjU0LCAxNzcsIDIyMSwgMjUzLCAxLCAyNTEsIDIyOSwgCisgICAgMjIxLCAyNTMsIDEsIDI0MywgMTEzLCAyMjEsIDI1MywgMSwgMjQ4LCAxOTUsIDIyMSwgMjUzLCAxLCAyMzUsIDE1MywgMjIxLCAKKyAgICAyNTMsIDEsIDI1MiwgMTkwLCAyMjEsIDI1MywgMSwgMjEwLCA4OSwgMjIxLCAyNTMsIDEsIDIzNSwgMTYxLCAyMjEsIDI1MywgCisgICAgMSwgMjE2LCA2OCwgMjIxLCAyNTMsIDEsIDIxMCwgMTgyLCAyMjEsIDI1MywgMSwgMjM1LCAxMCwgMjIxLCAyNTMsIDEsIAorICAgIDIzMywgMTI5LCAyMjEsIDI1MywgMSwgMjMwLCAxOTEsIDIyMSwgMjUzLCAxLCAyMjcsIDE5NSwgMjIxLCAyNTMsIDEsIDIxOSwgCisgICAgMTU3LCAyMjEsIDI1MywgMSwgMjM2LCAwLCAyMjEsIDI1MywgMSwgMjQ0LCAxMjIsIDIyMSwgMjUzLCAxLCAyMTUsIDE4MiwgCisgICAgMjIxLCAyNTMsIDEsIDIyNCwgMTEsIDIyMSwgMjUzLCAxLCAyMjIsIDIzMCwgMjIxLCAyNTMsIDEsIDIyMCwgODYsIDIyMSwgCisgICAgMjUzLCAxLCAyMTcsIDEwMSwgMjIxLCAyNTMsIDE2NCwgMjM2LCAwLCAyMjEsIDI1MywgMTY0LCAyMzUsIDI1NSwgMjIxLCAKKyAgICAyNTMsIDE2NCwgMjI2LCAyNDQsIDIyMSwgMjUzLCAxNjQsIDI0OCwgMjA4LCAyMjEsIDI1MywgNTgsIDEsIDI0NSwgMTA2LCAKKyAgICAyMTAsIDE4MiwgMjIxLCAyNTMsIDE2NCwgMjQ1LCAxMDYsIDIxMCwgMTgyLCAyMjEsIDI1MywgMjUsIDUsIDE5OSwgNzUsIAorICAgIDIyMSwgMjUzLCAyNSwgNSwgNzUsIDIyMSwgMjUzLCAyNSwgNSwgMjI2LCAxMTksIDI1NSwgNzQsIDIyMSwgMjUzLCAyNSwgNSwgCisgICAgMTk5LCAyNTUsIDc0LCAyMjEsIDI1MywgMjUsIDUsIDI1NSwgNzQsIDIyMSwgMjUzLCAyNSwgNSwgMjI2LCAxMTksIDYxLCAKKyAgICAyMjEsIDI1MywgMjUsIDUsIDE5OSwgNjEsIDIyMSwgMjUzLCAyNSwgNSwgNjEsIDIyMSwgMjUzLCA1OCwgMSwgMjE5LCAyNTIsIAorICAgIDYxLCAyMjEsIDI1MywgMjUsIDUsIDIxOSwgMjUyLCA2MSwgMjIxLCAyNTMsIDI1LCA1LCAxOTksIDcwLCAyMjEsIDI1MywgCisgICAgMjUsIDUsIDcwLCAyMjEsIDI1MywgNTgsIDEsIDczLCAyMjEsIDI1MywgMjUsIDUsIDE5OSwgNzMsIDIyMSwgMjUzLCAyNSwgCisgICAgNSwgNzMsIDIyMSwgMjUzLCAyNSwgNSwgNzYsIDIyMSwgMjUzLCAyNSwgNSwgMjE4LCA0NiwgMjIxLCAyNTMsIDE2NCwgMjI5LCAKKyAgICA5MywgMjIxLCAyNTMsIDIyNCwgMTQyLCAyMjksIDkzLCAyMjEsIDI1MywgMjI0LCAxNDIsIDI1NCwgMjE5LCAyMjEsIDI1MywgCisgICAgMjI0LCAxNDIsIDI1NCwgMTE1LCAyMjEsIDI1MywgMjI0LCAxNDIsIDI1MiwgMTE1LCAyMjEsIDI1MywgMjI0LCAxNDIsIAorICAgIDI1MywgMjAyLCAyMjEsIDI1MywgMjI0LCAxNDIsIDIyMCwgOSwgMjIxLCAyNTMsIDI1NSwgMjIsIDc4LCAyMjEsIDI1MywgCisgICAgMjI0LCAxNDIsIDIzMSwgNjksIDIyNCwgNDYsIDIyMSwgMjUzLCAyMjQsIDE0MiwgMjEwLCAzMSwgMjIxLCAyNTMsIDIyNCwgCisgICAgMTQyLCAyMjQsIDQ2LCAyMjEsIDI1MywgMjI0LCAxNDIsIDIxMCwgMTE0LCAyMjEsIDI1MywgMjI0LCAxNDIsIDIxNSwgOTAsIAorICAgIDIyMSwgMjUzLCAyMjQsIDE0MiwgMjU0LCAxMCwgMjIxLCAyNTMsIDIyNCwgMTQyLCAyMTksIDU0LCAyMzEsIDE0NiwgMjIxLCAKKyAgICAyNTMsIDIyNCwgMTQyLCAyNTQsIDEwMSwgMjMxLCAxODMsIDEsIDI0MiwgMjUsIDIzMSwgMTgzLCAxLCAyNTUsIDI2LCAyMzEsIAorICAgIDE4MywgMSwgMjU0LCAyMTcsIDIzMSwgMTgzLCAxLCAyNTUsIDAsIDIzMSwgMTgzLCAxLCAyNTQsIDIxMCwgMjMxLCAxODMsIAorICAgIDEsIDIxNCwgMTI0LCAyMzEsIDE4MywgMSwgMjUzLCAxNjEsIDIzMSwgMTgzLCAxLCAyMzUsIDE2MSwgMjMxLCAxODMsIDEsIAorICAgIDI1MywgMTk5LCAyMzEsIDE4MywgMSwgMjU0LCAxODIsIDIzMSwgMTgzLCAxLCAyNTQsIDE4NywgMjMxLCAxODMsIDEsIDI1NCwgCisgICAgMTc5LCAyMzEsIDE4MywgMSwgMjU0LCAxMzcsIDIzMSwgMTgzLCAxLCAyNTQsIDEyNCwgMjMxLCAxODMsIDEsIDI1MywgMjM4LCAKKyAgICAyMzEsIDE4MywgMSwgMjM2LCAwLCAyMzEsIDE4MywgMSwgMjU0LCA3MywgMjMxLCAxODMsIDEsIDI1MywgMjA5LCAyMzEsIAorICAgIDE4MywgMSwgMjU0LCA0NiwgMjMxLCAxODMsIDEsIDI1NCwgNDIsIDIzMSwgMTgzLCAxLCAyNTMsIDIzMiwgMjMxLCAxODMsIAorICAgIDEsIDI1MywgMjA3LCAyMzEsIDE4MywgMSwgMjQ2LCA1NiwgMjMxLCAxODMsIDEsIDIzNSwgMywgMjMxLCAxODMsIDEsIDI1NCwgCisgICAgMTk3LCAyMzEsIDE4MywgMjU0LCAyMjMsIDc4LCAyMzEsIDE4MywgMjEzLCAxMzYsIDc4LCAyMzEsIDE4MywgMjQzLCA1NCwgCisgICAgNzgsIDIzMSwgMTgzLCAyMjQsIDE0MSwgMTAsIDEsIDI1MiwgNTYsIDIsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDE1MSwgCisgICAgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCA4MiwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjQ0LCAxNDQsIDIsIDU5LCAKKyAgICAyNTIsIDQ0LCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjI0LCA4MywgMiwgNTksIDUxLCAxMCwgMSwgMjMzLCAxMDQsIDIsIAorICAgIDUyLCAxMzAsIDEwLCAxLCA2NiwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgNzksIDIsIDExMywgMTcwLCAyNTIsIDQ0LCAyMiwgCisgICAgMjAyLCA0OCwgMTAsIDEsIDc5LCAyLCAxMTMsIDE3MCwgMjUyLCA0NCwgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMywgOTcsIDIsIAorICAgIDIzMiwgMTI0LCAxMCwgMSwgMjEyLCAzMSwgMiwgNTksIDIxMSwgMjMxLCAxMCwgMSwgMjIyLCAyMDIsIDIxMSwgNDMsIDEwLCAKKyAgICAyNDksIDEwMCwgMjQ0LCAxNjYsIDEwLCAyNDksIDEwMCwgMjQ4LCAxODUsIDEwLCAyNDksIDEwMCwgMjM0LCAyMDYsIDEwLCAKKyAgICAyNDksIDEwMCwgMjQ0LCAxNjQsIDEwLCAyNDksIDEwMCwgMjQ4LCAxODMsIDEwLCAyNDksIDEwMCwgMjM0LCAyMDQsIDEwLCAKKyAgICAxMzgsIDEyMywgNTksIDQ4LCAxMCwgMTM4LCAxMTMsIDE3MCwgNDgsIDEwLCAxMzgsIDIzMiwgMTI1LCA0OCwgMTAsIDEzOCwgCisgICAgMTIzLCA1OSwgNTEsIDEwLCAxMzgsIDExMywgMTcwLCA1MSwgMTAsIDEzOCwgMjMyLCAxMjUsIDUxLCAxMCwgMjA0LCAyNDQsIAorICAgIDE2NCwgMTAsIDIwNCwgMjQ4LCAxODMsIDEwLCAyMDQsIDIzNCwgMjA0LCAxMCwgNCwgMTI1LCAyMTIsIDMwLCAxMCwgMjQ0LCAKKyAgICAxNjcsIDIsIDIyMiwgMjM0LCAxMCwgMjQ0LCAxNjcsIDIsIDU5LCA0OCwgMTAsIDIzNCwgMjA3LCAyLCA1OSwgNTEsIDEwLCAKKyAgICA0MywgMjUzLCAyNTEsIDQ4LCAxMCwgNDQsIDI1MywgMjUxLCA0OCwgMTAsIDQzLCAyNTMsIDI1MSwgNTEsIDEwLCA0NCwgCisgICAgMjUzLCAyNTEsIDUxLCAxMCwgNTIsIDQ0LCAyNTMsIDI1MSwgNDgsIDEwLCA1MiwgNDQsIDI1MywgMjUxLCA3NywgMiwgMjQ3LCAKKyAgICAxMjEsIDEwLCA0NCwgMjUzLCAyNTEsIDc3LCAyLCAyNDcsIDEyMSwgMTAsIDI0OCwgMTg2LCAyLCAyNDcsIDEyMSwgODQsIDUsIAorICAgIDIzNSwgMTk0LCAyNTEsIDAsIDg0LCA1LCAyNTEsIDAsIDg0LCA1LCAyNTQsIDc2LCA4NCwgNSwgMjEzLCAxNDcsIDg0LCAxLCAKKyAgICAyMTksIDI1MiwgNjEsIDg0LCAxLCA2MSwgODQsIDEsIDI1NSwgNzQsIDg0LCAxLCA3MywgODQsIDEsIDIzNiwgMzQsIDg0LCAKKyAgICAxLCA3MCwgODQsIDEsIDIxNCwgMTE4LCA4NCwgMSwgMTQ5LCAxNTMsIDg0LCAxLCAxNDksIDE1NiwgODQsIDEsIDI1MSwgMywgCisgICAgNzUsIDg0LCAxLCAyMTksIDI1MiwgNzUsIDg0LCAxLCA3NSwgODQsIDEsIDI1NCwgMjAyLCA4NCwgMSwgMjUxLCAzLCA3NiwgCisgICAgODQsIDEsIDIxOSwgMjUyLCA3NiwgODQsIDEsIDc2LCA4NCwgMSwgMjUzLCAxOTMsIDg0LCAxLCAxNzYsIDg0LCAxLCAyMzQsIAorICAgIDEzMywgODQsIDEsIDI0MywgMTM2LCA4NCwgMSwgMjQyLCAyNTAsIDg0LCAxLCAyMjksIDc4LCA4NCwgMSwgMjUxLCAzNCwgCisgICAgODQsIDEsIDI1MCwgMTU4LCA4NCwgMSwgMjM1LCAxNDIsIDg0LCAxLCAyMzUsIDExNSwgODQsIDEsIDIyNywgMTY2LCA4NCwgCisgICAgMSwgMjE1LCAxNTcsIDg0LCAxLCAyMTUsIDE0NSwgODQsIDEsIDI0OCwgMTM2LCA4NCwgMSwgMjQ4LCAxMjAsIDg0LCAxLCAKKyAgICAyMjgsIDExMSwgODQsIDEsIDIxNywgMTA2LCA4NCwgMSwgMjE2LCAyMDksIDg0LCAxLCAyNDgsIDIyMiwgODQsIDEsIDI0OCwgCisgICAgMjYsIDg0LCAxLCAxOTcsIDg0LCAxLCAyMjgsIDkzLCA4NCwgMSwgMTkwLCA4NCwgMSwgMjI1LCAxNDgsIDg0LCAxLCAyNTIsIAorICAgIDE5MiwgODQsIDEsIDI1MiwgMTksIDg0LCAxLCAxODUsIDg0LCAxLCAxOTEsIDg0LCAxLCAyMDUsIDg0LCAxLCAyMjIsIDE4MCwgCisgICAgODQsIDEsIDIzMywgMTM2LCA4NCwgMSwgMjMyLCAxODUsIDg0LCAxLCAyMzIsIDE3NiwgODQsIDEsIDIxNCwgMjcsIDg0LCAxLCAKKyAgICAyMjAsIDEwMywgODQsIDEsIDIxOCwgMjI0LCA4NCwgMSwgMjA2LCA4NCwgMSwgMTYyLCA4NCwgMjUsIDUsIDIyNiwgMjM1LCAKKyAgICA4NCwgMjUsIDUsIDIyNiwgMTgyLCA4NCwgNSwgMjI3LCAyMDYsIDg0LCA1LCAyNTMsIDE3NiwgODQsIDI1LCA1LCAyNTUsIAorICAgIDc0LCA4NCwgMjUsIDUsIDczLCA4NCwgMjUsIDUsIDIzNiwgMzQsIDg0LCAyNSwgNSwgNzAsIDg0LCAyNSwgNSwgMjE0LCAKKyAgICAxMTgsIDg0LCAyNSwgNSwgMTQ5LCAxNTMsIDg0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MSwgODQsIDI1LCA1LCAyNTEsIDMsIAorICAgIDc1LCA4NCwgMjUsIDUsIDIxOSwgMjUyLCA3NSwgODQsIDI1LCA1LCA3NSwgODQsIDI1LCA1LCAyNTQsIDIwMiwgODQsIDI1LCAKKyAgICA1LCAyNTEsIDMsIDc2LCA4NCwgMjUsIDUsIDIxOSwgMjUyLCA3NiwgODQsIDI1LCA1LCA3NiwgODQsIDI1LCA1LCAyNTMsIAorICAgIDE5MywgODQsIDUsIDIxMywgMTUyLCA4NCwgMjUsIDUsIDIyNCwgMTg2LCA3NSwgODQsIDI1LCA1LCAyNTMsIDE3MiwgODQsIAorICAgIDIyNiwgMjA1LCA4NCwgMjE4LCAxMTIsIDUsIDIxNCwgMjE2LCA4NCwgMjE4LCAxMTIsIDUsIDI1NCwgNzgsIDg0LCAyNDIsIAorICAgIDEzOCwgMjU1LCAxNSwgODQsIDI1NSwgNCwgMjU1LCAxNSwgODQsIDI1LCA1LCAyNTEsIDMsIDE5OSwgNzUsIDg0LCAyNSwgNSwgCisgICAgMjE0LCAyMTQsIDg0LCAyNSwgNSwgMjE0LCAxMTcsIDg0LCAxLCAyMjQsIDg5LCA4NCwgMSwgMjM0LCAxMTYsIDg0LCAxLCAKKyAgICAyNDIsIDIyNywgODQsIDEsIDIxMCwgMTE2LCA4NCwgMSwgMjQ4LCAxMjUsIDg0LCAxLCAyMjMsIDQwLCA4NCwgMSwgMjQ0LCAKKyAgICAxOTcsIDg0LCAxLCAyMTAsIDE2OCwgODQsIDEsIDE0OSwgMjIyLCAxODEsIDg0LCAxLCAxNDksIDIzMiwgMTg2LCA4NCwgMjUsIAorICAgIDUsIDE0OSwgMTU2LCA4NCwgMjUsIDUsIDE0OSwgMjMyLCAxODYsIDg0LCAyNDgsIDE3OSwgODQsIDUyLCAyNDgsIDE3OSwgCisgICAgODQsIDIxLCAyMTAsIDg2LCA4NCwgMjEsIDExMCwgODQsIDIxLCAxMDUsIDg0LCAyMSwgMTU4LCA4NCwgMjEsIDE2MSwgODQsIAorICAgIDIxLCAxODksIDg0LCAyMSwgMTk0LCA4NCwgMjEsIDE5OCwgODQsIDIxLCAxOTUsIDg0LCAyMSwgMjAwLCA4NCwgMjU1LCAyMiwgCisgICAgNTAsIDg0LCA1LCAxMjUsIDIxOSwgMTgsIDI0NywgMTIxLCA4NCwgMSwgMjUxLCAzLCA2MSwgODQsIDEsIDIyNiwgMjM1LCAKKyAgICA4NCwgMSwgMjI2LCAxODIsIDg0LCAxLCAyNTMsIDE3MiwgODQsIDEsIDIxNCwgMjE0LCA4NCwgMSwgMjE0LCAxMTcsIDg0LCAKKyAgICAxLCAyMTAsIDgyLCA4NCwgMSwgMTE0LCAxOTEsIDg0LCAxLCAyNDMsIDMwLCA4NCwgMSwgMjM1LCA5NywgODQsIDEsIDI0MiwgCisgICAgMTgxLCAyMTgsIDEzMCwgODQsIDEsIDI0OCwgMTI2LCA4NCwgMSwgMjUyLCAxMTIsIDE0NiwgNSwgMjUxLCAwLCAxNDYsIDUsIAorICAgIDI1NCwgNzYsIDE0NiwgNSwgMjEzLCAxNDcsIDE0NiwgMSwgNjEsIDE0NiwgMSwgMjU1LCA3NCwgMTQ2LCAxLCA3MywgMTQ2LCAKKyAgICAxLCAyMzYsIDM0LCAxNDYsIDEsIDcwLCAxNDYsIDEsIDIxNCwgMTE4LCAxNDYsIDEsIDE0OSwgMTUzLCAxNDYsIDEsIDE0OSwgCisgICAgMTU2LCAxNDYsIDEsIDc1LCAxNDYsIDEsIDI1NCwgMjAyLCAxNDYsIDEsIDc2LCAxNDYsIDEsIDI1MywgMTkzLCAxNDYsIDEsIAorICAgIDE3NiwgMTQ2LCAxLCAyMzQsIDEzMywgMTQ2LCAxLCAyNDMsIDEzNiwgMTQ2LCAxLCAyNDIsIDI1MCwgMTQ2LCAxLCAyMjksIAorICAgIDc4LCAxNDYsIDEsIDI1MSwgMzQsIDE0NiwgMSwgMjUwLCAxNTgsIDE0NiwgMSwgMjM1LCAxNDIsIDE0NiwgMSwgMjM1LCAKKyAgICAxMTUsIDE0NiwgMSwgMjI3LCAxNjYsIDE0NiwgMSwgMjE1LCAxNTcsIDE0NiwgMSwgMjE1LCAxNDUsIDE0NiwgMSwgMjQ4LCAKKyAgICAxMzYsIDE0NiwgMSwgMjQ4LCAxMjAsIDE0NiwgMSwgMjI4LCAxMTEsIDE0NiwgMSwgMjE3LCAxMDYsIDE0NiwgMSwgMjE2LCAKKyAgICAyMDksIDE0NiwgMSwgMjQ4LCAyMjIsIDE0NiwgMSwgMjQ4LCAyNiwgMTQ2LCAxLCAxOTcsIDE0NiwgMSwgMTkwLCAxNDYsIDEsIAorICAgIDIyNSwgMTQ4LCAxNDYsIDEsIDI1MiwgMTkyLCAxNDYsIDEsIDI1MiwgMTksIDE0NiwgMSwgMTg1LCAxNDYsIDEsIDE5MSwgCisgICAgMTQ2LCAxLCAyMDUsIDE0NiwgMSwgMjMzLCAxMzYsIDE0NiwgMSwgMjIwLCAxMDMsIDE0NiwgMSwgMjE4LCAyMjQsIDE0NiwgCisgICAgMSwgMjA2LCAxNDYsIDEsIDE2MiwgMTQ2LCA1LCAyMjcsIDIwNiwgMTQ2LCA1LCAyNTMsIDE3NiwgMTQ2LCAyNSwgNSwgMjU1LCAKKyAgICA3NCwgMTQ2LCAyNSwgNSwgNzMsIDE0NiwgMjUsIDUsIDIzNiwgMzQsIDE0NiwgMjUsIDUsIDcwLCAxNDYsIDI1LCA1LCAyMTQsIAorICAgIDExOCwgMTQ2LCAyNSwgNSwgMTQ5LCAxNTMsIDE0NiwgMjUsIDUsIDE0OSwgMjIyLCAxODEsIDE0NiwgMjUsIDUsIDc1LCAKKyAgICAxNDYsIDI1LCA1LCAyNTQsIDIwMiwgMTQ2LCAyNSwgNSwgNzYsIDE0NiwgMjUsIDUsIDI1MywgMTkzLCAxNDYsIDUsIDIxMywgCisgICAgMTUyLCAxNDYsIDEsIDIzNCwgMTI1LCAyMTcsIDEwNiwgMTQ2LCAyNTMsIDE5NCwgMjMzLCAyNCwgNzgsIDE0NiwgMSwgMjIyLCAKKyAgICAxODAsIDE0NiwgMSwgMjIzLCA0MCwgMTQ2LCAxLCAyMTAsIDE2OCwgMTQ2LCAxLCAxNDksIDIyMiwgMTgxLCAxNDYsIDEsIAorICAgIDE0OSwgMjMyLCAxODYsIDE0NiwgMjUsIDUsIDE0OSwgMTU2LCAxNDYsIDI1LCA1LCAxNDksIDIzMiwgMTg2LCAxNDYsIDIxLCAKKyAgICAyMTAsIDg2LCAxNDYsIDIxLCAxMTAsIDE0NiwgMjEsIDEwNSwgMTQ2LCAyMSwgMTU4LCAxNDYsIDIxLCAxNjEsIDE0NiwgMjEsIAorICAgIDE4OSwgMTQ2LCAyMSwgMTk0LCAxNDYsIDIxLCAxOTgsIDE0NiwgMjEsIDE5NSwgMTQ2LCAyMSwgMjAwLCAxNDYsIDEsIDIyMywgCisgICAgMTg5LCAyLCAyMzAsIDIyNSwgMjQ3LCAyNTUsIDE0NiwgMSwgMjIzLCAxODksIDIsIDIzMiwgMTA5LCAyNDcsIDI1NSwgMTQ2LCAKKyAgICAyMjIsIDExOSwgNzgsIDE0NiwgMjIyLCAxMTksIDUwLCAxNDYsIDI0OSwgOTksIDIyNywgMTk4LCAxMTAsIDE0NiwgMjQ5LCAKKyAgICA5OSwgMjI3LCAxOTgsIDEwNSwgMTQ2LCAyNDksIDk5LCAyMjcsIDE5OCwgMTU4LCAxNDYsIDI0OSwgOTksIDIyNywgMTk4LCAKKyAgICAxNjEsIDE0NiwgMjQ5LCA5OSwgMjI3LCAxOTgsIDEyMywgMjMzLCAxNywgMjE2LCAyMDIsIDIxNiwgMTk3LCAyNDgsIDQ5LCAKKyAgICAxNDYsIDI0OSwgOTksIDI0OCwgNTAsIDIxOSwgMTIwLCAxNDYsIDIzNSwgMTYyLCAxNDYsIDI0MywgMTA0LCA3OCwgMTg0LCAKKyAgICA1LCAyNTQsIDI1NSwgMjUxLCAyNDQsIDE4NCwgNSwgMjUxLCAyNDQsIDE4NCwgNSwgMjEzLCAxNDcsIDE4NCwgMSwgNjEsIAorICAgIDE4NCwgMSwgMjU1LCA3NCwgMTg0LCAxLCA3MywgMTg0LCAxLCAyMzYsIDM0LCAxODQsIDEsIDcwLCAxODQsIDEsIDIxNCwgCisgICAgMTE4LCAxODQsIDEsIDI0NSwgMjEwLCAxODQsIDEsIDI1NCwgMjAyLCAxODQsIDEsIDIyNiwgMTg0LCAxODQsIDEsIDI1MywgCisgICAgMTkzLCAxODQsIDEsIDE3NiwgMTg0LCAxLCAyMzQsIDEzMywgMTg0LCAxLCAyNDMsIDEzNiwgMTg0LCAxLCAyNDIsIDI1MCwgCisgICAgMTg0LCAxLCAyMjksIDc4LCAxODQsIDEsIDI1MSwgMzQsIDE4NCwgMSwgMjUwLCAxNTgsIDE4NCwgMSwgMjM1LCAxNDIsIAorICAgIDE4NCwgMSwgMjM1LCAxMTUsIDE4NCwgMSwgMjI3LCAxNjYsIDE4NCwgMSwgMjE1LCAxNTcsIDE4NCwgMSwgMjE1LCAxNDUsIAorICAgIDE4NCwgMSwgMjQ4LCAxMzYsIDE4NCwgMSwgMjQ4LCAxMjAsIDE4NCwgMSwgMjI4LCAxMTEsIDE4NCwgMSwgMjE3LCAxMDYsIAorICAgIDE4NCwgMSwgMjE2LCAyMDksIDE4NCwgMSwgMjQ4LCAyMjIsIDE4NCwgMSwgMjQ4LCAyNiwgMTg0LCAxLCAxOTcsIDE4NCwgMSwgCisgICAgMTkwLCAxODQsIDEsIDIyNSwgMTQ4LCAxODQsIDEsIDI1MiwgMTkyLCAxODQsIDEsIDI1MiwgMTksIDE4NCwgMSwgMTg1LCAKKyAgICAxODQsIDEsIDE5MSwgMTg0LCAxLCAyMDUsIDE4NCwgMSwgMjMzLCAxMzYsIDE4NCwgMSwgMjMyLCAxODUsIDE4NCwgMSwgCisgICAgMjE0LCAyNywgMTg0LCAxLCAyMjAsIDEwMywgMTg0LCAxLCAyMDYsIDE4NCwgMSwgMTYyLCAxODQsIDUsIDIyNywgMjA2LCAKKyAgICAxODQsIDI1LCA1LCAyNTUsIDc0LCAxODQsIDI1LCA1LCA3MywgMTg0LCAyNSwgNSwgMjM2LCAzNCwgMTg0LCAyNSwgNSwgNzAsIAorICAgIDE4NCwgMjUsIDUsIDIxNCwgMTE4LCAxODQsIDI1LCA1LCAyNDUsIDIxMCwgMTg0LCAyNSwgNSwgMjU0LCAyMDIsIDE4NCwgCisgICAgMjUsIDUsIDIyNiwgMTg0LCAxODQsIDI1LCA1LCAyNTMsIDE5MywgMTg0LCA1LCAyMTMsIDE1MiwgMTg0LCA1LCAyMTQsIAorICAgIDIxOCwgMTg0LCAxLCAyMzQsIDExNiwgMTg0LCAxLCAyNDIsIDIyNywgMTg0LCAxLCAyMTAsIDExNiwgMTg0LCAxLCAyMjIsIAorICAgIDE4MCwgMTg0LCAxLCAyNDQsIDE5NywgMTg0LCAyMSwgMjEwLCA4NiwgMTg0LCAyMSwgMTEwLCAxODQsIDIxLCAxMDUsIDE4NCwgCisgICAgMjEsIDE1OCwgMTg0LCAyMSwgMTYxLCAxODQsIDIxLCAxODksIDE4NCwgMjEsIDE5NCwgMTg0LCAyMSwgMTk4LCAxODQsIDIxLCAKKyAgICAxOTUsIDE4NCwgMjEsIDIwMCwgMTg0LCAyMTYsIDc1LCAxODQsIDI1NCwgMjU0LCAxODQsIDIzNSwgMTc5LCAxODQsIDIxNCwgCisgICAgMTQ2LCAxODQsIDI0NSwgMTgyLCAyMjYsIDE4OSwgMTg0LCA1LCAyMTEsIDc4LCAxNzEsIDUsIDI1MSwgMCwgMTcxLCA1LCAKKyAgICAyNTQsIDc2LCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgNzQsIDE3MSwgMSwgNzMsIDE3MSwgCisgICAgMSwgMjM2LCAzNCwgMTcxLCAxLCA3MCwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAxNDksIDE1MywgMTcxLCAxLCAxNDksIAorICAgIDE1NiwgMTcxLCAyNSwgMjUxLCAzLCA3NSwgMTcxLCAxLCA3NSwgMTcxLCAxLCAyNTQsIDIwMiwgMTcxLCAyNSwgMjUxLCAzLCAKKyAgICA3NiwgMTcxLCAxLCA3NiwgMTcxLCAxLCAyNTMsIDE5MywgMTcxLCAxLCAxNzYsIDE3MSwgMSwgMjM0LCAxMzMsIDE3MSwgMSwgCisgICAgMjQzLCAxMzYsIDE3MSwgMSwgMjQyLCAyNTAsIDE3MSwgMSwgMjI5LCA3OCwgMTcxLCAxLCAyNTEsIDM0LCAxNzEsIDEsIAorICAgIDI1MCwgMTU4LCAxNzEsIDEsIDIzNSwgMTQyLCAxNzEsIDEsIDIzNSwgMTE1LCAxNzEsIDEsIDIyNywgMTY2LCAxNzEsIDEsIAorICAgIDIxNSwgMTU3LCAxNzEsIDEsIDIxNSwgMTQ1LCAxNzEsIDEsIDI0OCwgMTM2LCAxNzEsIDEsIDI0OCwgMTIwLCAxNzEsIDEsIAorICAgIDIyOCwgMTExLCAxNzEsIDEsIDIxNywgMTA2LCAxNzEsIDEsIDIxNiwgMjA5LCAxNzEsIDEsIDI0OCwgMjIyLCAxNzEsIDEsIAorICAgIDI0OCwgMjYsIDE3MSwgMSwgMTk3LCAxNzEsIDEsIDE5MCwgMTcxLCAxLCAyMjUsIDE0OCwgMTcxLCAxLCAyNTIsIDE5MiwgCisgICAgMTcxLCAxLCAyNTIsIDE5LCAxNzEsIDEsIDE4NSwgMTcxLCAxLCAxOTEsIDE3MSwgMSwgMjA1LCAxNzEsIDEsIDIzMywgMTM2LCAKKyAgICAxNzEsIDEsIDIzMiwgMTg1LCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAxMDMsIDE3MSwgMSwgMjE4LCAyMjQsIAorICAgIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwNiwgMTcxLCA1LCAyNTMsIDE3NiwgMTcxLCAyNSwgNSwgCisgICAgMjU1LCA3NCwgMTcxLCAyNSwgNSwgNzMsIDE3MSwgMjUsIDUsIDIzNiwgMzQsIDE3MSwgMjUsIDUsIDcwLCAxNzEsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIDE0OSwgMjIyLCAxODEsIDE3MSwgMjUsIDUsIAorICAgIDI1MSwgMywgNzUsIDE3MSwgMjUsIDUsIDc1LCAxNzEsIDI1LCA1LCAyNTQsIDIwMiwgMTcxLCAyNSwgNSwgMjUxLCAzLCA3NiwgCisgICAgMTcxLCAyNSwgNSwgNzYsIDE3MSwgMjUsIDUsIDI1MywgMTkzLCAxNzEsIDUsIDIxMywgMTUyLCAxNzEsIDIyNiwgMjA1LCAKKyAgICAxNzEsIDEsIDE0OSwgMjIyLCAxODEsIDE3MSwgMSwgMTQ5LCAyMzIsIDE4NiwgMTcxLCAyNSwgNSwgMTQ5LCAxNTYsIDE3MSwgCisgICAgMjUsIDUsIDE0OSwgMjMyLCAxODYsIDE3MSwgMjEsIDIxMCwgODYsIDE3MSwgMjEsIDExMCwgMTcxLCAyMSwgMTA1LCAxNzEsIAogICAgIDIxLCAxNTgsIDE3MSwgMjEsIDE2MSwgMTcxLCAyMSwgMTg5LCAxNzEsIDIxLCAxOTQsIDE3MSwgMjEsIDE5OCwgMTcxLCAyMSwgCi0gICAgMTk1LCAxNzEsIDIxLCAyMDAsIDE3MSwgMjU1LCAyMSwgNTAsIDE3MSwgMjIyLCAxMTgsIDUwLCAxNTcsIDUsIDI1MCwgMjU1LCAKLSAgICAxNTcsIDUsIDI1NCwgNzUsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgNjEsIDE1NywgMSwgMjU1LCA3MywgMTU3LCAxLCAKLSAgICA3MywgMTU3LCAxLCAyMzYsIDMzLCAxNTcsIDEsIDcwLCAxNTcsIDEsIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIAotICAgIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc1LCAxNTcsIDEsIDI1NCwgMjAxLCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1MywgMTkyLCAKLSAgICAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzMiwgMTU3LCAxLCAyNDMsIDEzNSwgMTU3LCAxLCAyNDIsIDI0OSwgMTU3LCAKLSAgICAxLCAyMjksIDc3LCAxNTcsIDEsIDI1MSwgMzMsIDE1NywgMSwgMjUwLCAxNTcsIDE1NywgMSwgMjM1LCAxNDEsIDE1NywgMSwgCi0gICAgMjM1LCAxMTQsIDE1NywgMSwgMjI3LCAxNjUsIDE1NywgMSwgMjE1LCAxNTYsIDE1NywgMSwgMjE1LCAxNDQsIDE1NywgMSwgCi0gICAgMjQ4LCAxMzUsIDE1NywgMSwgMjQ4LCAxMTksIDE1NywgMSwgMjI4LCAxMTAsIDE1NywgMSwgMjE3LCAxMDUsIDE1NywgMSwgCi0gICAgMjE2LCAyMDgsIDE1NywgMSwgMjQ4LCAyMjEsIDE1NywgMSwgMjQ4LCAyNSwgMTU3LCAxLCAxOTcsIDE1NywgMSwgMTkwLCAKLSAgICAxNTcsIDEsIDIyNSwgMTQ3LCAxNTcsIDEsIDI1MiwgMTkxLCAxNTcsIDEsIDI1MiwgMTgsIDE1NywgMSwgMTg0LCAxNTcsIDEsIAotICAgIDE5MSwgMTU3LCAxLCAyMDUsIDE1NywgMSwgMjMzLCAxMzUsIDE1NywgMSwgMjMyLCAxODQsIDE1NywgMSwgMjE0LCAyNywgCi0gICAgMTU3LCAxLCAyMjAsIDEwMiwgMTU3LCAxLCAyMTgsIDIyMywgMTU3LCAxLCAyMDYsIDE1NywgMSwgMTYyLCAxNTcsIDUsIAotICAgIDIyNywgMjA1LCAxNTcsIDUsIDI1MywgMTc1LCAxNTcsIDI1LCA1LCAyNTUsIDczLCAxNTcsIDI1LCA1LCA3MywgMTU3LCAyNSwgCi0gICAgNSwgMjM2LCAzMywgMTU3LCAyNSwgNSwgNzAsIDE1NywgMjUsIDUsIDIxNCwgMTE4LCAxNTcsIDI1LCA1LCAxNDksIDE1MywgCi0gICAgMTU3LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTU3LCAyNSwgNSwgNzUsIDE1NywgMjUsIDUsIDI1NCwgMjAxLCAxNTcsIDI1LCAKLSAgICA1LCA3NiwgMTU3LCAyNSwgNSwgMjUzLCAxOTIsIDE1NywgNSwgMjEzLCAxNTIsIDE1NywgMjU0LCAyMDIsIDIzMywgMjMsIAotICAgIDc4LCAxNTcsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMTU3LCAxLCAyMjIsIDE3OSwgMTU3LCAxLCAyMjMsIDM5LCAxNTcsIAotICAgIDEsIDIxMCwgMTY4LCAxNTcsIDEsIDE0OSwgMjIyLCAxODAsIDE1NywgMSwgMTQ5LCAyMzIsIDE4NSwgMTU3LCAyNSwgNSwgCi0gICAgMTQ5LCAxNTYsIDE1NywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE1NywgMjEsIDIxMCwgODYsIDE1NywgMjEsIDExMCwgMTU3LCAKKyAgICAxOTUsIDE3MSwgMjEsIDIwMCwgMTcxLCAyNTUsIDIyLCA1MCwgMTcxLCAyMjIsIDExOSwgNTAsIDE1NywgNSwgMjUxLCAwLCAKKyAgICAxNTcsIDUsIDI1NCwgNzYsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgNjEsIDE1NywgMSwgMjU1LCA3NCwgMTU3LCAxLCAKKyAgICA3MywgMTU3LCAxLCAyMzYsIDM0LCAxNTcsIDEsIDcwLCAxNTcsIDEsIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIAorICAgIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc1LCAxNTcsIDEsIDI1NCwgMjAyLCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1MywgMTkzLCAKKyAgICAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzMywgMTU3LCAxLCAyNDMsIDEzNiwgMTU3LCAxLCAyNDIsIDI1MCwgMTU3LCAKKyAgICAxLCAyMjksIDc4LCAxNTcsIDEsIDI1MSwgMzQsIDE1NywgMSwgMjUwLCAxNTgsIDE1NywgMSwgMjM1LCAxNDIsIDE1NywgMSwgCisgICAgMjM1LCAxMTUsIDE1NywgMSwgMjI3LCAxNjYsIDE1NywgMSwgMjE1LCAxNTcsIDE1NywgMSwgMjE1LCAxNDUsIDE1NywgMSwgCisgICAgMjQ4LCAxMzYsIDE1NywgMSwgMjQ4LCAxMjAsIDE1NywgMSwgMjI4LCAxMTEsIDE1NywgMSwgMjE3LCAxMDYsIDE1NywgMSwgCisgICAgMjE2LCAyMDksIDE1NywgMSwgMjQ4LCAyMjIsIDE1NywgMSwgMjQ4LCAyNiwgMTU3LCAxLCAxOTcsIDE1NywgMSwgMTkwLCAKKyAgICAxNTcsIDEsIDIyNSwgMTQ4LCAxNTcsIDEsIDI1MiwgMTkyLCAxNTcsIDEsIDI1MiwgMTksIDE1NywgMSwgMTg1LCAxNTcsIDEsIAorICAgIDE5MSwgMTU3LCAxLCAyMDUsIDE1NywgMSwgMjMzLCAxMzYsIDE1NywgMSwgMjMyLCAxODUsIDE1NywgMSwgMjE0LCAyNywgCisgICAgMTU3LCAxLCAyMjAsIDEwMywgMTU3LCAxLCAyMTgsIDIyNCwgMTU3LCAxLCAyMDYsIDE1NywgMSwgMTYyLCAxNTcsIDUsIAorICAgIDIyNywgMjA2LCAxNTcsIDUsIDI1MywgMTc2LCAxNTcsIDI1LCA1LCAyNTUsIDc0LCAxNTcsIDI1LCA1LCA3MywgMTU3LCAyNSwgCisgICAgNSwgMjM2LCAzNCwgMTU3LCAyNSwgNSwgNzAsIDE1NywgMjUsIDUsIDIxNCwgMTE4LCAxNTcsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTU3LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MSwgMTU3LCAyNSwgNSwgNzUsIDE1NywgMjUsIDUsIDI1NCwgMjAyLCAxNTcsIDI1LCAKKyAgICA1LCA3NiwgMTU3LCAyNSwgNSwgMjUzLCAxOTMsIDE1NywgNSwgMjEzLCAxNTIsIDE1NywgMjU0LCAyMDMsIDIzMywgMjQsIAorICAgIDc4LCAxNTcsIDI1MywgMTk0LCAyMzMsIDI0LCA3OCwgMTU3LCAxLCAyMjIsIDE4MCwgMTU3LCAxLCAyMjMsIDQwLCAxNTcsIAorICAgIDEsIDIxMCwgMTY4LCAxNTcsIDEsIDE0OSwgMjIyLCAxODEsIDE1NywgMSwgMTQ5LCAyMzIsIDE4NiwgMTU3LCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDE1NywgMjUsIDUsIDE0OSwgMjMyLCAxODYsIDE1NywgMjEsIDIxMCwgODYsIDE1NywgMjEsIDExMCwgMTU3LCAKICAgICAyMSwgMTA1LCAxNTcsIDIxLCAxNTgsIDE1NywgMjEsIDE2MSwgMTU3LCAyMSwgMTg5LCAxNTcsIDIxLCAxOTQsIDE1NywgMjEsIAotICAgIDE5OCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAyMDAsIDE1NywgMjM1LCAxNjEsIDE1NywgMSwgMjEyLCA2NSwgMTU3LCAKLSAgICAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMTU3LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMTU3LCAyNDQsIDIsIDEzNCwgMjI0LCAKLSAgICAxOSwgMTU3LCAyNDQsIDIsIDEyMywgMjE5LCAxMTcsIDE1NywgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAxNTcsIDI0NCwgMiwgCi0gICAgMTM0LCAyMTksIDExNiwgMzYsIDUsIDI1NCwgNzUsIDM2LCA1LCAyMTMsIDE0NywgMzYsIDEsIDYxLCAzNiwgMSwgMjU1LCAKLSAgICA3MywgMzYsIDEsIDczLCAzNiwgMSwgMjM2LCAzMywgMzYsIDEsIDcwLCAzNiwgMSwgMjE0LCAxMTgsIDM2LCAxLCA3NSwgMzYsIAotICAgIDEsIDI0NSwgMjA5LCAzNiwgMSwgMjU0LCAyMDEsIDM2LCAxLCA3NiwgMzYsIDEsIDIyNiwgMTgzLCAzNiwgMSwgMjUzLCAKLSAgICAxOTIsIDM2LCAxLCAxNzYsIDM2LCAxLCAyMjksIDc3LCAzNiwgMSwgMjUxLCAzMywgMzYsIDEsIDIzNSwgMTQxLCAzNiwgMSwgCi0gICAgMjI3LCAxNjUsIDM2LCAxLCAyMTUsIDE1NiwgMzYsIDEsIDIyOCwgMTEwLCAzNiwgMSwgMjE3LCAxMDUsIDM2LCAxLCAxOTcsIAotICAgIDM2LCAxLCAyMjgsIDkyLCAzNiwgMSwgMTkwLCAzNiwgMSwgMTg0LCAzNiwgMSwgMTkxLCAzNiwgMSwgMjA1LCAzNiwgMSwgCi0gICAgMjIyLCAxNzksIDM2LCAxLCAyMzMsIDEzNSwgMzYsIDEsIDIzMiwgMTg0LCAzNiwgMSwgMjMyLCAxNzUsIDM2LCAxLCAyMTQsIAotICAgIDI3LCAzNiwgMSwgMjIwLCAxMDIsIDM2LCAxLCAyMTgsIDIyMywgMzYsIDEsIDIwNiwgMzYsIDEsIDE2MiwgMzYsIDI1LCA1LCAKLSAgICAyNTUsIDczLCAzNiwgMjUsIDUsIDczLCAzNiwgMjUsIDUsIDIzNiwgMzMsIDM2LCAyNSwgNSwgNzAsIDM2LCAyNSwgNSwgCi0gICAgMjE0LCAxMTgsIDM2LCAyNSwgNSwgNzUsIDM2LCAyNSwgNSwgMjQ1LCAyMDksIDM2LCAyNSwgNSwgMjU0LCAyMDEsIDM2LCAKLSAgICAyNSwgNSwgNzYsIDM2LCAyNSwgNSwgMjI2LCAxODMsIDM2LCAyNSwgNSwgMjUzLCAxOTIsIDM2LCA1LCAyMTMsIDE1MiwgMzYsIAotICAgIDIyNiwgMjA0LCAzNiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAzNiwgMjEsIDIxMCwgODYsIDM2LCAyMSwgMTEwLCAzNiwgCisgICAgMTk4LCAxNTcsIDIxLCAxOTUsIDE1NywgMjEsIDIwMCwgMTU3LCAyMzUsIDE2MiwgMTU3LCAxLCAyMTIsIDY1LCAxNTcsIAorICAgIDI0NCwgMywgMTIzLCAyMjQsIDIyLCAxNTcsIDI0NCwgMywgMTIzLCAyNDIsIDI4LCAxNTcsIDI0NCwgMywgMTM0LCAyMjQsIAorICAgIDIwLCAxNTcsIDI0NCwgMywgMTIzLCAyMTksIDExOCwgMTU3LCAyNDQsIDMsIDEyMywgMjQ1LCAxODksIDE1NywgMjQ0LCAzLCAKKyAgICAxMzQsIDIxOSwgMTE3LCAzNiwgNSwgMjU0LCA3NiwgMzYsIDUsIDIxMywgMTQ3LCAzNiwgMSwgNjEsIDM2LCAxLCAyNTUsIAorICAgIDc0LCAzNiwgMSwgNzMsIDM2LCAxLCAyMzYsIDM0LCAzNiwgMSwgNzAsIDM2LCAxLCAyMTQsIDExOCwgMzYsIDEsIDc1LCAzNiwgCisgICAgMSwgMjQ1LCAyMTAsIDM2LCAxLCAyNTQsIDIwMiwgMzYsIDEsIDc2LCAzNiwgMSwgMjI2LCAxODQsIDM2LCAxLCAyNTMsIAorICAgIDE5MywgMzYsIDEsIDE3NiwgMzYsIDEsIDIyOSwgNzgsIDM2LCAxLCAyNTEsIDM0LCAzNiwgMSwgMjM1LCAxNDIsIDM2LCAxLCAKKyAgICAyMjcsIDE2NiwgMzYsIDEsIDIxNSwgMTU3LCAzNiwgMSwgMjI4LCAxMTEsIDM2LCAxLCAyMTcsIDEwNiwgMzYsIDEsIDE5NywgCisgICAgMzYsIDEsIDIyOCwgOTMsIDM2LCAxLCAxOTAsIDM2LCAxLCAxODUsIDM2LCAxLCAxOTEsIDM2LCAxLCAyMDUsIDM2LCAxLCAKKyAgICAyMjIsIDE4MCwgMzYsIDEsIDIzMywgMTM2LCAzNiwgMSwgMjMyLCAxODUsIDM2LCAxLCAyMzIsIDE3NiwgMzYsIDEsIDIxNCwgCisgICAgMjcsIDM2LCAxLCAyMjAsIDEwMywgMzYsIDEsIDIxOCwgMjI0LCAzNiwgMSwgMjA2LCAzNiwgMSwgMTYyLCAzNiwgMjUsIDUsIAorICAgIDI1NSwgNzQsIDM2LCAyNSwgNSwgNzMsIDM2LCAyNSwgNSwgMjM2LCAzNCwgMzYsIDI1LCA1LCA3MCwgMzYsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMzYsIDI1LCA1LCA3NSwgMzYsIDI1LCA1LCAyNDUsIDIxMCwgMzYsIDI1LCA1LCAyNTQsIDIwMiwgMzYsIAorICAgIDI1LCA1LCA3NiwgMzYsIDI1LCA1LCAyMjYsIDE4NCwgMzYsIDI1LCA1LCAyNTMsIDE5MywgMzYsIDUsIDIxMywgMTUyLCAzNiwgCisgICAgMjI2LCAyMDUsIDM2LCAyNTMsIDE5NCwgMjMzLCAyNCwgNzgsIDM2LCAyMSwgMjEwLCA4NiwgMzYsIDIxLCAxMTAsIDM2LCAKICAgICAyMSwgMTA1LCAzNiwgMjEsIDE1OCwgMzYsIDIxLCAxNjEsIDM2LCAyMSwgMTg5LCAzNiwgMjEsIDE5NCwgMzYsIDIxLCAxOTgsIAotICAgIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDIwMCwgMzYsIDU0LCAyMTYsIDI0NywgMzYsIDU0LCAxMjMsIDI0MCwgMjEwLCAzNiwgCi0gICAgNTQsIDEyMywgMjE2LCAxNDcsIDM2LCAyNDgsIDE0NiwgNTAsIDM2LCAyMzAsIDEzNSwgNTAsIDM2LCAyMTEsIDQ1LCA1MCwgCi0gICAgMzYsIDI0OCwgODcsIDUwLCAzNiwgMjQ5LCAxMzksIDUwLCAzNiwgMjUzLCAyMzgsIDc3LCA1MCwgMzYsIDIyMiwgMTE4LCAKLSAgICA1MCwgMzYsIDU0LCA1MCwgMTQ4LCA1LCAyNTAsIDI1NSwgMTQ4LCA1LCAyNTQsIDc1LCAxNDgsIDUsIDIxMywgMTQ3LCAxNDgsIAotICAgIDEsIDYxLCAxNDgsIDEsIDI1NSwgNzMsIDE0OCwgMSwgNzMsIDE0OCwgMSwgMjM2LCAzMywgMTQ4LCAxLCA3MCwgMTQ4LCAxLCAKKyAgICAzNiwgMjEsIDE5NSwgMzYsIDIxLCAyMDAsIDM2LCA1NCwgMjE2LCAyNDgsIDM2LCA1NCwgMTIzLCAyNDAsIDIxMSwgMzYsIAorICAgIDU0LCAxMjMsIDIxNiwgMTQ4LCAzNiwgMjQ4LCAxNDcsIDUwLCAzNiwgMjMwLCAxMzYsIDUwLCAzNiwgMjExLCA0NSwgNTAsIAorICAgIDM2LCAyNDgsIDg4LCA1MCwgMzYsIDI0OSwgMTQwLCA1MCwgMzYsIDI1MywgMjM5LCA3NywgNTAsIDM2LCAyMjIsIDExOSwgCisgICAgNTAsIDM2LCA1NCwgNTAsIDE0OCwgNSwgMjUxLCAwLCAxNDgsIDUsIDI1NCwgNzYsIDE0OCwgNSwgMjEzLCAxNDcsIDE0OCwgCisgICAgMSwgNjEsIDE0OCwgMSwgMjU1LCA3NCwgMTQ4LCAxLCA3MywgMTQ4LCAxLCAyMzYsIDM0LCAxNDgsIDEsIDcwLCAxNDgsIDEsIAogICAgIDIxNCwgMTE4LCAxNDgsIDEsIDE0OSwgMTUzLCAxNDgsIDEsIDE0OSwgMTU2LCAxNDgsIDEsIDc1LCAxNDgsIDEsIDI0NSwgCi0gICAgMjA5LCAxNDgsIDEsIDI1NCwgMjAxLCAxNDgsIDEsIDc2LCAxNDgsIDEsIDIyNiwgMTgzLCAxNDgsIDEsIDI1MywgMTkyLCAKLSAgICAxNDgsIDEsIDE3NiwgMTQ4LCAxLCAyMzQsIDEzMiwgMTQ4LCAxLCAyNDMsIDEzNSwgMTQ4LCAxLCAyNDIsIDI0OSwgMTQ4LCAKLSAgICAxLCAyMjksIDc3LCAxNDgsIDEsIDI1MSwgMzMsIDE0OCwgMSwgMjUwLCAxNTcsIDE0OCwgMSwgMjM1LCAxNDEsIDE0OCwgMSwgCi0gICAgMjM1LCAxMTQsIDE0OCwgMSwgMjI3LCAxNjUsIDE0OCwgMSwgMjE1LCAxNTYsIDE0OCwgMSwgMjE1LCAxNDQsIDE0OCwgMSwgCi0gICAgMjQ4LCAxMzUsIDE0OCwgMSwgMjQ4LCAxMTksIDE0OCwgMSwgMjI4LCAxMTAsIDE0OCwgMSwgMjE3LCAxMDUsIDE0OCwgMSwgCi0gICAgMjE2LCAyMDgsIDE0OCwgMSwgMjQ4LCAyMjEsIDE0OCwgMSwgMjQ4LCAyNSwgMTQ4LCAxLCAxOTcsIDE0OCwgMSwgMTkwLCAKLSAgICAxNDgsIDEsIDIyNSwgMTQ3LCAxNDgsIDEsIDI1MiwgMTkxLCAxNDgsIDEsIDI1MiwgMTgsIDE0OCwgMSwgMTg0LCAxNDgsIDEsIAotICAgIDE5MSwgMTQ4LCAxLCAyMDUsIDE0OCwgMSwgMjIyLCAxNzksIDE0OCwgMSwgMjMzLCAxMzUsIDE0OCwgMSwgMjMyLCAxODQsIAotICAgIDE0OCwgMSwgMjE0LCAyNywgMTQ4LCAxLCAyMjAsIDEwMiwgMTQ4LCAxLCAyMTgsIDIyMywgMTQ4LCAxLCAyMDYsIDE0OCwgMSwgCi0gICAgMTYyLCAxNDgsIDUsIDI1MywgMTc1LCAxNDgsIDI1LCA1LCAyNTUsIDczLCAxNDgsIDI1LCA1LCA3MywgMTQ4LCAyNSwgNSwgCi0gICAgMjM2LCAzMywgMTQ4LCAyNSwgNSwgNzAsIDE0OCwgMjUsIDUsIDIxNCwgMTE4LCAxNDgsIDI1LCA1LCAxNDksIDE1MywgMTQ4LCAKLSAgICAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTQ4LCAyNSwgNSwgNzUsIDE0OCwgMjUsIDUsIDI0NSwgMjA5LCAxNDgsIDI1LCA1LCAKLSAgICAyNTQsIDIwMSwgMTQ4LCAyNSwgNSwgNzYsIDE0OCwgMjUsIDUsIDIyNiwgMTgzLCAxNDgsIDI1LCA1LCAyNTMsIDE5MiwgCi0gICAgMTQ4LCA1LCAyMTMsIDE1MiwgMTQ4LCAyMzMsIDIzLCA3OCwgMTQ4LCAyNTQsIDIwMiwgMjMzLCAyMywgNzgsIDE0OCwgMSwgCi0gICAgMjE1LCAxODMsIDE0OCwgMSwgMjQ2LCAzOCwgMTQ4LCAxLCAxNDksIDIyMiwgMTgwLCAxNDgsIDEsIDE0OSwgMjMyLCAxODUsIAotICAgIDE0OCwgMjUsIDUsIDE0OSwgMTU2LCAxNDgsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNDgsIDIxLCAyMTAsIDg2LCAxNDgsIAorICAgIDIxMCwgMTQ4LCAxLCAyNTQsIDIwMiwgMTQ4LCAxLCA3NiwgMTQ4LCAxLCAyMjYsIDE4NCwgMTQ4LCAxLCAyNTMsIDE5MywgCisgICAgMTQ4LCAxLCAxNzYsIDE0OCwgMSwgMjM0LCAxMzMsIDE0OCwgMSwgMjQzLCAxMzYsIDE0OCwgMSwgMjQyLCAyNTAsIDE0OCwgCisgICAgMSwgMjI5LCA3OCwgMTQ4LCAxLCAyNTEsIDM0LCAxNDgsIDEsIDI1MCwgMTU4LCAxNDgsIDEsIDIzNSwgMTQyLCAxNDgsIDEsIAorICAgIDIzNSwgMTE1LCAxNDgsIDEsIDIyNywgMTY2LCAxNDgsIDEsIDIxNSwgMTU3LCAxNDgsIDEsIDIxNSwgMTQ1LCAxNDgsIDEsIAorICAgIDI0OCwgMTM2LCAxNDgsIDEsIDI0OCwgMTIwLCAxNDgsIDEsIDIyOCwgMTExLCAxNDgsIDEsIDIxNywgMTA2LCAxNDgsIDEsIAorICAgIDIxNiwgMjA5LCAxNDgsIDEsIDI0OCwgMjIyLCAxNDgsIDEsIDI0OCwgMjYsIDE0OCwgMSwgMTk3LCAxNDgsIDEsIDE5MCwgCisgICAgMTQ4LCAxLCAyMjUsIDE0OCwgMTQ4LCAxLCAyNTIsIDE5MiwgMTQ4LCAxLCAyNTIsIDE5LCAxNDgsIDEsIDE4NSwgMTQ4LCAxLCAKKyAgICAxOTEsIDE0OCwgMSwgMjA1LCAxNDgsIDEsIDIyMiwgMTgwLCAxNDgsIDEsIDIzMywgMTM2LCAxNDgsIDEsIDIzMiwgMTg1LCAKKyAgICAxNDgsIDEsIDIxNCwgMjcsIDE0OCwgMSwgMjIwLCAxMDMsIDE0OCwgMSwgMjE4LCAyMjQsIDE0OCwgMSwgMjA2LCAxNDgsIDEsIAorICAgIDE2MiwgMTQ4LCA1LCAyNTMsIDE3NiwgMTQ4LCAyNSwgNSwgMjU1LCA3NCwgMTQ4LCAyNSwgNSwgNzMsIDE0OCwgMjUsIDUsIAorICAgIDIzNiwgMzQsIDE0OCwgMjUsIDUsIDcwLCAxNDgsIDI1LCA1LCAyMTQsIDExOCwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTMsIDE0OCwgCisgICAgMjUsIDUsIDE0OSwgMjIyLCAxODEsIDE0OCwgMjUsIDUsIDc1LCAxNDgsIDI1LCA1LCAyNDUsIDIxMCwgMTQ4LCAyNSwgNSwgCisgICAgMjU0LCAyMDIsIDE0OCwgMjUsIDUsIDc2LCAxNDgsIDI1LCA1LCAyMjYsIDE4NCwgMTQ4LCAyNSwgNSwgMjUzLCAxOTMsIAorICAgIDE0OCwgNSwgMjEzLCAxNTIsIDE0OCwgMjMzLCAyNCwgNzgsIDE0OCwgMjU0LCAyMDMsIDIzMywgMjQsIDc4LCAxNDgsIDEsIAorICAgIDIxNSwgMTg0LCAxNDgsIDEsIDI0NiwgMzksIDE0OCwgMSwgMTQ5LCAyMjIsIDE4MSwgMTQ4LCAxLCAxNDksIDIzMiwgMTg2LCAKKyAgICAxNDgsIDI1LCA1LCAxNDksIDE1NiwgMTQ4LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NiwgMTQ4LCAyMSwgMjEwLCA4NiwgMTQ4LCAKICAgICAyMSwgMTEwLCAxNDgsIDIxLCAxMDUsIDE0OCwgMjEsIDE1OCwgMTQ4LCAyMSwgMTYxLCAxNDgsIDIxLCAxODksIDE0OCwgMjEsIAotICAgIDE5NCwgMTQ4LCAyMSwgMTk4LCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDIwMCwgMTQ4LCAyNDQsIDIsIDIxLCAyMTAsIDg3LCAKLSAgICAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEyMywgMzEsIDIyNiwgMjM3LCAyMjQsIAotICAgIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMTMsIDMxLCAyMjYsIDIzNywgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgCi0gICAgMjQ0LCAyLCAyMSwgMTM0LCAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEyMywgCi0gICAgMzEsIDI0NSwgNDIsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDExMywgMzEsIDI0NSwgNDIsIDIyNCwgCi0gICAgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEzNCwgMzEsIDI0NSwgNDIsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIAotICAgIDUsIDIxNSwgODQsIDE2NSwgNSwgMjU0LCA3NSwgMTY1LCA1LCAyMTMsIDE0NywgMTY1LCAxLCA2MSwgMTY1LCAxLCAyNTUsIAotICAgIDczLCAxNjUsIDEsIDczLCAxNjUsIDEsIDIzNiwgMzMsIDE2NSwgMSwgNzAsIDE2NSwgMSwgMjE0LCAxMTgsIDE2NSwgMSwgCi0gICAgMTQ5LCAxNTMsIDE2NSwgMSwgMTQ5LCAxNTYsIDE2NSwgMSwgNzUsIDE2NSwgMSwgMjQ1LCAyMDksIDE2NSwgMSwgMjU0LCAKLSAgICAyMDEsIDE2NSwgMSwgNzYsIDE2NSwgMSwgMjI2LCAxODMsIDE2NSwgMSwgMjUzLCAxOTIsIDE2NSwgMSwgMTc2LCAxNjUsIDEsIAotICAgIDIzNCwgMTMyLCAxNjUsIDEsIDI0MywgMTM1LCAxNjUsIDEsIDI0MiwgMjQ5LCAxNjUsIDEsIDIyOSwgNzcsIDE2NSwgMSwgCi0gICAgMjUxLCAzMywgMTY1LCAxLCAyNTAsIDE1NywgMTY1LCAxLCAyMzUsIDE0MSwgMTY1LCAxLCAyMzUsIDExNCwgMTY1LCAxLCAKLSAgICAyMjcsIDE2NSwgMTY1LCAxLCAyMTUsIDE1NiwgMTY1LCAxLCAyMTUsIDE0NCwgMTY1LCAxLCAyNDgsIDEzNSwgMTY1LCAxLCAKLSAgICAyNDgsIDExOSwgMTY1LCAxLCAyMjgsIDExMCwgMTY1LCAxLCAyMTcsIDEwNSwgMTY1LCAxLCAyMTYsIDIwOCwgMTY1LCAxLCAKLSAgICAyNDgsIDIyMSwgMTY1LCAxLCAyNDgsIDI1LCAxNjUsIDEsIDE5NywgMTY1LCAxLCAxOTAsIDE2NSwgMSwgMjI1LCAxNDcsIAotICAgIDE2NSwgMSwgMjUyLCAxOTEsIDE2NSwgMSwgMjUyLCAxOCwgMTY1LCAxLCAxODQsIDE2NSwgMSwgMTkxLCAxNjUsIDEsIDIwNSwgCi0gICAgMTY1LCAxLCAyMjIsIDE3OSwgMTY1LCAxLCAyMzMsIDEzNSwgMTY1LCAxLCAyMzIsIDE4NCwgMTY1LCAxLCAyMTQsIDI3LCAKLSAgICAxNjUsIDEsIDIyMCwgMTAyLCAxNjUsIDEsIDIxOCwgMjIzLCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgCi0gICAgMjI3LCAyMDUsIDE2NSwgNSwgMjUzLCAxNzUsIDE2NSwgMjUsIDUsIDI1NSwgNzMsIDE2NSwgMjUsIDUsIDczLCAxNjUsIDI1LCAKLSAgICA1LCAyMzYsIDMzLCAxNjUsIDI1LCA1LCA3MCwgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAKLSAgICAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNjUsIDI1LCA1LCA3NSwgMTY1LCAyNSwgNSwgMjQ1LCAyMDksIDE2NSwgMjUsIAotICAgIDUsIDI1NCwgMjAxLCAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjI2LCAxODMsIDE2NSwgMjUsIDUsIDI1MywgMTkyLCAKLSAgICAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIDIzMywgMjMsIDc4LCAxNjUsIDI1NCwgMjAyLCAyMzMsIDIzLCA3OCwgMTY1LCAxLCAKLSAgICAyNDQsIDE5NiwgMTY1LCAxLCAxNDksIDIyMiwgMTgwLCAxNjUsIDEsIDE0OSwgMjMyLCAxODUsIDE2NSwgMjUsIDUsIDE0OSwgCi0gICAgMTU2LCAxNjUsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTAsIDE2NSwgMjEsIAorICAgIDE5NCwgMTQ4LCAyMSwgMTk4LCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDIwMCwgMTQ4LCAyNDQsIDMsIDIxLCAyMTAsIDg3LCAKKyAgICAzMSwgMjI2LCAyMzgsIDIyNCwgMjI0LCA2NCwgMTYxLCAxNDgsIDI0NCwgMywgMjEsIDEyMywgMzEsIDIyNiwgMjM4LCAyMjQsIAorICAgIDIyNCwgNjQsIDE2MSwgMTQ4LCAyNDQsIDMsIDIxLCAxMTMsIDMxLCAyMjYsIDIzOCwgMjI0LCAyMjQsIDY0LCAxNjEsIDE0OCwgCisgICAgMjQ0LCAzLCAyMSwgMTM0LCAzMSwgMjI2LCAyMzgsIDIyNCwgMjI0LCA2NCwgMTYxLCAxNDgsIDI0NCwgMywgMjEsIDEyMywgCisgICAgMzEsIDI0NSwgNDMsIDIyNCwgMjI0LCA2NCwgMTYxLCAxNDgsIDI0NCwgMywgMjEsIDExMywgMzEsIDI0NSwgNDMsIDIyNCwgCisgICAgMjI0LCA2NCwgMTYxLCAxNDgsIDI0NCwgMywgMjEsIDEzNCwgMzEsIDI0NSwgNDMsIDIyNCwgMjI0LCA2NCwgMTYxLCAxNDgsIAorICAgIDUsIDIxNSwgODQsIDE2NSwgNSwgMjU0LCA3NiwgMTY1LCA1LCAyMTMsIDE0NywgMTY1LCAxLCA2MSwgMTY1LCAxLCAyNTUsIAorICAgIDc0LCAxNjUsIDEsIDczLCAxNjUsIDEsIDIzNiwgMzQsIDE2NSwgMSwgNzAsIDE2NSwgMSwgMjE0LCAxMTgsIDE2NSwgMSwgCisgICAgMTQ5LCAxNTMsIDE2NSwgMSwgMTQ5LCAxNTYsIDE2NSwgMSwgNzUsIDE2NSwgMSwgMjQ1LCAyMTAsIDE2NSwgMSwgMjU0LCAKKyAgICAyMDIsIDE2NSwgMSwgNzYsIDE2NSwgMSwgMjI2LCAxODQsIDE2NSwgMSwgMjUzLCAxOTMsIDE2NSwgMSwgMTc2LCAxNjUsIDEsIAorICAgIDIzNCwgMTMzLCAxNjUsIDEsIDI0MywgMTM2LCAxNjUsIDEsIDI0MiwgMjUwLCAxNjUsIDEsIDIyOSwgNzgsIDE2NSwgMSwgCisgICAgMjUxLCAzNCwgMTY1LCAxLCAyNTAsIDE1OCwgMTY1LCAxLCAyMzUsIDE0MiwgMTY1LCAxLCAyMzUsIDExNSwgMTY1LCAxLCAKKyAgICAyMjcsIDE2NiwgMTY1LCAxLCAyMTUsIDE1NywgMTY1LCAxLCAyMTUsIDE0NSwgMTY1LCAxLCAyNDgsIDEzNiwgMTY1LCAxLCAKKyAgICAyNDgsIDEyMCwgMTY1LCAxLCAyMjgsIDExMSwgMTY1LCAxLCAyMTcsIDEwNiwgMTY1LCAxLCAyMTYsIDIwOSwgMTY1LCAxLCAKKyAgICAyNDgsIDIyMiwgMTY1LCAxLCAyNDgsIDI2LCAxNjUsIDEsIDE5NywgMTY1LCAxLCAxOTAsIDE2NSwgMSwgMjI1LCAxNDgsIAorICAgIDE2NSwgMSwgMjUyLCAxOTIsIDE2NSwgMSwgMjUyLCAxOSwgMTY1LCAxLCAxODUsIDE2NSwgMSwgMTkxLCAxNjUsIDEsIDIwNSwgCisgICAgMTY1LCAxLCAyMjIsIDE4MCwgMTY1LCAxLCAyMzMsIDEzNiwgMTY1LCAxLCAyMzIsIDE4NSwgMTY1LCAxLCAyMTQsIDI3LCAKKyAgICAxNjUsIDEsIDIyMCwgMTAzLCAxNjUsIDEsIDIxOCwgMjI0LCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgCisgICAgMjI3LCAyMDYsIDE2NSwgNSwgMjUzLCAxNzYsIDE2NSwgMjUsIDUsIDI1NSwgNzQsIDE2NSwgMjUsIDUsIDczLCAxNjUsIDI1LCAKKyAgICA1LCAyMzYsIDM0LCAxNjUsIDI1LCA1LCA3MCwgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAKKyAgICAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgxLCAxNjUsIDI1LCA1LCA3NSwgMTY1LCAyNSwgNSwgMjQ1LCAyMTAsIDE2NSwgMjUsIAorICAgIDUsIDI1NCwgMjAyLCAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjI2LCAxODQsIDE2NSwgMjUsIDUsIDI1MywgMTkzLCAKKyAgICAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIDIzMywgMjQsIDc4LCAxNjUsIDI1NCwgMjAzLCAyMzMsIDI0LCA3OCwgMTY1LCAxLCAKKyAgICAyNDQsIDE5NywgMTY1LCAxLCAxNDksIDIyMiwgMTgxLCAxNjUsIDEsIDE0OSwgMjMyLCAxODYsIDE2NSwgMjUsIDUsIDE0OSwgCisgICAgMTU2LCAxNjUsIDI1LCA1LCAxNDksIDIzMiwgMTg2LCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTAsIDE2NSwgMjEsIAogICAgIDEwNSwgMTY1LCAyMSwgMTU4LCAxNjUsIDIxLCAxNjEsIDE2NSwgMjEsIDE4OSwgMTY1LCAyMSwgMTk0LCAxNjUsIDIxLCAKLSAgICAxOTgsIDE2NSwgMjEsIDE5NSwgMTY1LCAyMSwgMjAwLCAxNjUsIDUsIDIzNSwgMTAyLCAxNjUsIDUsIDIxNCwgMTYxLCAxMzYsIAotICAgIDUsIDI1NCwgNzUsIDEzNiwgNSwgMjEzLCAxNDcsIDEzNiwgMSwgNjEsIDEzNiwgMSwgMjU1LCA3MywgMTM2LCAxLCA3MywgCi0gICAgMTM2LCAxLCAyMzYsIDMzLCAxMzYsIDEsIDcwLCAxMzYsIDEsIDIxNCwgMTE4LCAxMzYsIDEsIDE0OSwgMTUzLCAxMzYsIDEsIAotICAgIDE0OSwgMTU2LCAxMzYsIDEsIDc1LCAxMzYsIDEsIDI0NSwgMjA5LCAxMzYsIDEsIDI1NCwgMjAxLCAxMzYsIDEsIDc2LCAKLSAgICAxMzYsIDEsIDIyNiwgMTgzLCAxMzYsIDEsIDI1MywgMTkyLCAxMzYsIDEsIDE3NiwgMTM2LCAxLCAyMzQsIDEzMiwgMTM2LCAKLSAgICAxLCAyNDMsIDEzNSwgMTM2LCAxLCAyNDIsIDI0OSwgMTM2LCAxLCAyMjksIDc3LCAxMzYsIDEsIDI1MSwgMzMsIDEzNiwgMSwgCi0gICAgMjUwLCAxNTcsIDEzNiwgMSwgMjM1LCAxNDEsIDEzNiwgMSwgMjM1LCAxMTQsIDEzNiwgMSwgMjI3LCAxNjUsIDEzNiwgMSwgCi0gICAgMjE1LCAxNTYsIDEzNiwgMSwgMjE1LCAxNDQsIDEzNiwgMSwgMjQ4LCAxMzUsIDEzNiwgMSwgMjQ4LCAxMTksIDEzNiwgMSwgCi0gICAgMjI4LCAxMTAsIDEzNiwgMSwgMjE3LCAxMDUsIDEzNiwgMSwgMjE2LCAyMDgsIDEzNiwgMSwgMjQ4LCAyMjEsIDEzNiwgMSwgCi0gICAgMjQ4LCAyNSwgMTM2LCAxLCAxOTcsIDEzNiwgMSwgMjI4LCA5MiwgMTM2LCAxLCAxOTAsIDEzNiwgMSwgMjI1LCAxNDcsIAotICAgIDEzNiwgMSwgMjUyLCAxOTEsIDEzNiwgMSwgMjUyLCAxOCwgMTM2LCAxLCAxODQsIDEzNiwgMSwgMTkxLCAxMzYsIDEsIDIwNSwgCi0gICAgMTM2LCAxLCAyMjIsIDE3OSwgMTM2LCAxLCAyMzMsIDEzNSwgMTM2LCAxLCAyMzIsIDE4NCwgMTM2LCAxLCAyMzIsIDE3NSwgCi0gICAgMTM2LCAxLCAyMTQsIDI3LCAxMzYsIDEsIDIyMCwgMTAyLCAxMzYsIDEsIDIxOCwgMjIzLCAxMzYsIDEsIDIwNiwgMTM2LCAxLCAKLSAgICAxNjIsIDEzNiwgMSwgMjE1LCAxMjUsIDEzNiwgNSwgMjUzLCAxNzUsIDEzNiwgMjUsIDUsIDI1NSwgNzMsIDEzNiwgMjUsIDUsIAotICAgIDczLCAxMzYsIDI1LCA1LCAyMzYsIDMzLCAxMzYsIDI1LCA1LCA3MCwgMTM2LCAyNSwgNSwgMjE0LCAxMTgsIDEzNiwgMjUsIAotICAgIDUsIDE0OSwgMTUzLCAxMzYsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxMzYsIDI1LCA1LCA3NSwgMTM2LCAyNSwgNSwgMjQ1LCAKLSAgICAyMDksIDEzNiwgMjUsIDUsIDI1NCwgMjAxLCAxMzYsIDI1LCA1LCA3NiwgMTM2LCAyNSwgNSwgMjI2LCAxODMsIDEzNiwgMjUsIAotICAgIDUsIDI1MywgMTkyLCAxMzYsIDUsIDIxMywgMTUyLCAxMzYsIDEsIDU5LCAyMjMsIDczLCAxMzYsIDI1MywgMTkzLCAyMzMsIAotICAgIDIzLCA3OCwgMTM2LCAxLCAxNDksIDIyMiwgMTgwLCAxMzYsIDEsIDE0OSwgMjMyLCAxODUsIDEzNiwgMjUsIDUsIDE0OSwgCi0gICAgMTU2LCAxMzYsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxMzYsIDIxLCAyMTAsIDg2LCAxMzYsIDIxLCAxMTAsIDEzNiwgMjEsIAorICAgIDE5OCwgMTY1LCAyMSwgMTk1LCAxNjUsIDIxLCAyMDAsIDE2NSwgNSwgMjM1LCAxMDMsIDE2NSwgNSwgMjE0LCAxNjEsIDEzNiwgCisgICAgNSwgMjU0LCA3NiwgMTM2LCA1LCAyMTMsIDE0NywgMTM2LCAxLCA2MSwgMTM2LCAxLCAyNTUsIDc0LCAxMzYsIDEsIDczLCAKKyAgICAxMzYsIDEsIDIzNiwgMzQsIDEzNiwgMSwgNzAsIDEzNiwgMSwgMjE0LCAxMTgsIDEzNiwgMSwgMTQ5LCAxNTMsIDEzNiwgMSwgCisgICAgMTQ5LCAxNTYsIDEzNiwgMSwgNzUsIDEzNiwgMSwgMjQ1LCAyMTAsIDEzNiwgMSwgMjU0LCAyMDIsIDEzNiwgMSwgNzYsIAorICAgIDEzNiwgMSwgMjI2LCAxODQsIDEzNiwgMSwgMjUzLCAxOTMsIDEzNiwgMSwgMTc2LCAxMzYsIDEsIDIzNCwgMTMzLCAxMzYsIAorICAgIDEsIDI0MywgMTM2LCAxMzYsIDEsIDI0MiwgMjUwLCAxMzYsIDEsIDIyOSwgNzgsIDEzNiwgMSwgMjUxLCAzNCwgMTM2LCAxLCAKKyAgICAyNTAsIDE1OCwgMTM2LCAxLCAyMzUsIDE0MiwgMTM2LCAxLCAyMzUsIDExNSwgMTM2LCAxLCAyMjcsIDE2NiwgMTM2LCAxLCAKKyAgICAyMTUsIDE1NywgMTM2LCAxLCAyMTUsIDE0NSwgMTM2LCAxLCAyNDgsIDEzNiwgMTM2LCAxLCAyNDgsIDEyMCwgMTM2LCAxLCAKKyAgICAyMjgsIDExMSwgMTM2LCAxLCAyMTcsIDEwNiwgMTM2LCAxLCAyMTYsIDIwOSwgMTM2LCAxLCAyNDgsIDIyMiwgMTM2LCAxLCAKKyAgICAyNDgsIDI2LCAxMzYsIDEsIDE5NywgMTM2LCAxLCAyMjgsIDkzLCAxMzYsIDEsIDE5MCwgMTM2LCAxLCAyMjUsIDE0OCwgCisgICAgMTM2LCAxLCAyNTIsIDE5MiwgMTM2LCAxLCAyNTIsIDE5LCAxMzYsIDEsIDE4NSwgMTM2LCAxLCAxOTEsIDEzNiwgMSwgMjA1LCAKKyAgICAxMzYsIDEsIDIyMiwgMTgwLCAxMzYsIDEsIDIzMywgMTM2LCAxMzYsIDEsIDIzMiwgMTg1LCAxMzYsIDEsIDIzMiwgMTc2LCAKKyAgICAxMzYsIDEsIDIxNCwgMjcsIDEzNiwgMSwgMjIwLCAxMDMsIDEzNiwgMSwgMjE4LCAyMjQsIDEzNiwgMSwgMjA2LCAxMzYsIDEsIAorICAgIDE2MiwgMTM2LCAxLCAyMTUsIDEyNiwgMTM2LCA1LCAyNTMsIDE3NiwgMTM2LCAyNSwgNSwgMjU1LCA3NCwgMTM2LCAyNSwgNSwgCisgICAgNzMsIDEzNiwgMjUsIDUsIDIzNiwgMzQsIDEzNiwgMjUsIDUsIDcwLCAxMzYsIDI1LCA1LCAyMTQsIDExOCwgMTM2LCAyNSwgCisgICAgNSwgMTQ5LCAxNTMsIDEzNiwgMjUsIDUsIDE0OSwgMjIyLCAxODEsIDEzNiwgMjUsIDUsIDc1LCAxMzYsIDI1LCA1LCAyNDUsIAorICAgIDIxMCwgMTM2LCAyNSwgNSwgMjU0LCAyMDIsIDEzNiwgMjUsIDUsIDc2LCAxMzYsIDI1LCA1LCAyMjYsIDE4NCwgMTM2LCAyNSwgCisgICAgNSwgMjUzLCAxOTMsIDEzNiwgNSwgMjEzLCAxNTIsIDEzNiwgMSwgNTksIDIyMywgNzQsIDEzNiwgMjUzLCAxOTQsIDIzMywgCisgICAgMjQsIDc4LCAxMzYsIDEsIDE0OSwgMjIyLCAxODEsIDEzNiwgMSwgMTQ5LCAyMzIsIDE4NiwgMTM2LCAyNSwgNSwgMTQ5LCAKKyAgICAxNTYsIDEzNiwgMjUsIDUsIDE0OSwgMjMyLCAxODYsIDEzNiwgMjEsIDIxMCwgODYsIDEzNiwgMjEsIDExMCwgMTM2LCAyMSwgCiAgICAgMTA1LCAxMzYsIDIxLCAxNTgsIDEzNiwgMjEsIDE2MSwgMTM2LCAyMSwgMTg5LCAxMzYsIDIxLCAxOTQsIDEzNiwgMjEsIAotICAgIDE5OCwgMTM2LCAyMSwgMTk1LCAxMzYsIDIxLCAyMDAsIDEzNiwgNTQsIDIxNiwgMjQ3LCAxMzYsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjEwLCAxMzYsIDU0LCAxMjMsIDIxNiwgMTQ3LCAxMzYsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAxMzYsIDI0NCwgMiwgMTIzLCAKLSAgICAyNDIsIDI3LCAxMzYsIDI0NCwgMiwgMTM0LCAyMjQsIDE5LCAxMzYsIDI0OCwgMTUwLCA3OCwgMTM2LCAxLCAyNTAsIDk5LCAKLSAgICAyMjgsIDExMSwgMTM2LCAxLCAyNTAsIDk5LCAyMzAsIDI1LCAxMzYsIDEsIDI1MCwgOTksIDIyMiwgMTgwLCAxMzYsIDEsIAotICAgIDI1MCwgOTksIDE1NiwgMTM2LCAxLCAyNTAsIDk5LCAyMzIsIDE4NSwgMTM2LCAxLCAyNTAsIDk5LCAyMzUsIDIzLCAxNzUsIAotICAgIDUsIDI1NCwgNzQsIDE3NSwgNSwgMjEzLCAxNDYsIDE3NSwgMSwgMjUzLCAxNjUsIDE3NSwgMSwgMjU1LCAyNywgMTc1LCAxLCAKLSAgICAyNTQsIDIyMywgMTc1LCAxLCAyNTQsIDIzOCwgMTc1LCAxLCAyMzUsIDE1MSwgMTc1LCAxLCAyMzYsIDMyLCAxNzUsIDEsIAotICAgIDIxNCwgMTEwLCAxNzUsIDEsIDIxNCwgMTEyLCAxNzUsIDEsIDIzNSwgMTczLCAxNzUsIDEsIDIzNSwgMTc0LCAxNzUsIDEsIAotICAgIDIzNiwgMTgsIDE3NSwgMSwgMjM2LCAyMCwgMTc1LCAxLCAyNDUsIDE3LCAxNzUsIDEsIDI0NSwgMjA0LCAxNzUsIDEsIDI1NCwgCi0gICAgMTg4LCAxNzUsIDEsIDIyNiwgMTA4LCAxNzUsIDEsIDIyNiwgMTc3LCAxNzUsIDEsIDI1MywgMTc4LCAxNzUsIDEsIDI1NCwgCi0gICAgMTQ2LCAyMzQsIDE4NywgMTc1LCAxLCAyMzEsIDIwOSwgMjM0LCAxODcsIDE3NSwgMSwgMjU0LCAxNDYsIDI0MywgODIsIAotICAgIDE3NSwgMSwgMjMxLCAyMDksIDI0MywgODIsIDE3NSwgMSwgMjM0LCAyMjksIDIyOSwgMjIyLCAxNzUsIDEsIDIyMSwgMjM2LCAKLSAgICAyNDMsIDgyLCAxNzUsIDEsIDI1NCwgMTQ2LCAyNTAsIDIxNiwgMTc1LCAxLCAyMzEsIDIwOSwgMjUwLCAyMTYsIDE3NSwgMSwgCi0gICAgMjU0LCAxNDYsIDIzNSwgMTI3LCAxNzUsIDEsIDIzMSwgMjA5LCAyMzUsIDEyNywgMTc1LCAxLCAyMTcsIDk4LCAyMjksIAotICAgIDIyMiwgMTc1LCAxLCAyMTcsIDk4LCAyMjEsIDIzNSwgMjI5LCAyMjMsIDE3NSwgMSwgMjIxLCAyMzYsIDIzNSwgMTI3LCAKLSAgICAxNzUsIDEsIDI1NCwgMTQ2LCAyMTUsIDE1MiwgMTc1LCAxLCAyMzEsIDIwOSwgMjE1LCAxNTIsIDE3NSwgMSwgMjU0LCAxNDYsIAotICAgIDI0OCwgMTI2LCAxNzUsIDEsIDIzMSwgMjA5LCAyNDgsIDEyNiwgMTc1LCAxLCAyMzAsIDUzLCAyMjksIDE4MCwgMTc1LCAxLCAKLSAgICAyMjEsIDIzNiwgMjQ4LCAxMjYsIDE3NSwgMSwgMjU0LCAxNDYsIDIxNywgMzAsIDE3NSwgMSwgMjMxLCAyMDksIDIxNywgMzAsIAotICAgIDE3NSwgMSwgMjU0LCAxNDYsIDI0OCwgMTQ0LCAxNzUsIDEsIDIzMSwgMjA5LCAyNDgsIDE0NCwgMTc1LCAxLCAyNDgsIDE3NCwgCi0gICAgMjI5LCAxODAsIDE3NSwgMSwgMjIxLCAyMzYsIDI0OCwgMTQ0LCAxNzUsIDEsIDI1NCwgMTQ2LCAyMjUsIDIyOCwgMTc1LCAxLCAKLSAgICAyMzEsIDIwOSwgMjI1LCAyMjgsIDE3NSwgMSwgMjU0LCAxNDYsIDI1MiwgMTEyLCAxNzUsIDEsIDIzMSwgMjA5LCAyNTIsIAotICAgIDExMiwgMTc1LCAxLCAyMzEsIDEzMSwgMTc1LCAxLCAyNTQsIDEzMSwgMjUyLCAxMTIsIDE3NSwgMSwgMjExLCA1MSwgMTc1LCAKLSAgICAxLCAyMjMsIDEzMywgMTc1LCAxLCAyNDgsIDE3NCwgMjMzLCA2NywgMTc1LCAxLCAyMTQsIDEsIDE3NSwgMSwgMjE3LCA5OCwgCi0gICAgMjIxLCAyMTAsIDE3NSwgMSwgMjMwLCA1MywgMjIxLCAyMTAsIDE3NSwgMSwgMjQ4LCAxNzQsIDIyMSwgMjEwLCAxNzUsIDEsIAotICAgIDI0MSwgMjQyLCAxNzUsIDEsIDIzMCwgNTMsIDIzMywgNjcsIDE3NSwgMSwgMjQ0LCAxNTYsIDE3NSwgNSwgMjU0LCAxNzcsIAotICAgIDE3NSwgMjUsIDUsIDI1NCwgMjMzLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjU0LCAyNDAsIDE3NSwgMjUsIDUsIDI0NywgCi0gICAgMjI4LCAyNTQsIDI0MCwgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDIzNSwgMTcwLCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjM1LCAKLSAgICAxNzAsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyMjYsIDg4LCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjI2LCA4OCwgMTc1LCAKLSAgICAyNSwgNSwgMjQzLCAxMjQsIDE3NSwgMjUsIDUsIDIzNCwgMTUsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMzQsIDE1LCAxNzUsIAotICAgIDI1LCA1LCAyMzQsIDE3LCAyNDgsIDY3LCAxNzUsIDI1LCA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAyNTQsIDIzMywgMTc1LCAyNSwgCi0gICAgNSwgMjM0LCAxNiwgMjQyLCA0NywgMjQ3LCAyMjgsIDI1NCwgMjMzLCAxNzUsIDI1LCA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAKLSAgICAyNDMsIDgxLCAxNzUsIDI1LCA1LCAyNDMsIDgxLCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjQzLCAxMjQsIDE3NSwgMjUsIDUsIAotICAgIDI0NywgMjI4LCAyNDMsIDgxLCAxNzUsIDIyNCwgMTQxLCAyMzMsIDIwNywgMTY4LCAxMzUsIDIzNCwgMjksIDIzNCwgMjQ2LCAKLSAgICAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgMTI4LCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgOTksIDE2OCwgMTM1LCAyMzQsIAotICAgIDEwNiwgMjM0LCA5NSwgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMzQsIDEwMywgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMjMsIDE1NCwgCi0gICAgMTY4LCAxMzUsIDIyOSwgNSwgMjI4LCAyNDgsIDE2OCwgMTM1LCAyNTAsIDg3LCAyNTAsIDE0NywgMTY4LCAxMzUsIDI1MCwgCi0gICAgODcsIDI1MCwgOTUsIDE2OCwgMTM1LCAyNTAsIDg3LCAyNTAsIDE0NiwgMTY4LCAxMzUsIDIxOSwgNTksIDIxOSwgNTgsIAotICAgIDE2OCwgMTM1LCAyNTAsIDg3LCAyNTAsIDgzLCAxNjgsIDEzNSwgMjEwLCAyNDUsIDIxMCwgMjUyLCAxNjgsIDEzNSwgMjQ3LCAKLSAgICAxNDYsIDI1MCwgMTU0LCAxNjgsIDEzNSwgMjE2LCA0MiwgMjI1LCAyMzgsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAyMDAsIAotICAgIDE2OCwgMTM1LCAyMTYsIDE1NywgMjI5LCAyMDEsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjI1LCAxMTEsIDE2OCwgMTM1LCAKLSAgICAyMjgsIDc1LCAyMjksIDk4LCAxNjgsIDEzNSwgMjQ3LCAxNDYsIDI0OCwgNjgsIDE2OCwgMTM1LCAyMTYsIDQyLCAyMTcsIAotICAgIDU1LCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIxNiwgMTMxLCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIxNiwgMjA0LCAxNjgsIDEzNSwgCi0gICAgMjE2LCAxNTcsIDIxNiwgMTU0LCAxNjgsIDEzNSwgMjI4LCA3NSwgMjI3LCAyMzcsIDE2OCwgMTM1LCAyNTEsIDIwNiwgMjUyLCAKLSAgICAxNjQsIDE2OCwgMTM1LCAyMjUsIDE3LCAyMjUsIDQyLCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyNSwgMTEzLCAxNjgsIDEzNSwgCi0gICAgMjQ0LCA0NCwgMjQ0LCAxOTYsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjI1LCAxNDEsIDE2OCwgMTM1LCAyNDQsIDQ0LCAyNDQsIAotICAgIDE3MywgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjEsIDI0NywgMTY4LCAxMzUsIDIzMCwgMTYyLCAxODQsIDE2OCwgMTM1LCAKLSAgICAyMTAsIDI0NSwgMjExLCA3OSwgMTY4LCAxMzUsIDIyMiwgMjEyLCAyMjIsIDEzOSwgMTY4LCAxMzUsIDIyMiwgMTQwLCAxNjgsIAotICAgIDEzNSwgMjMyLCAxNTcsIDIzMiwgMjA2LCAxNjgsIDEzNSwgMjMyLCA5OCwgMTY4LCAxMzUsIDIxMSwgMjI4LCAyMTIsIDYxLCAKLSAgICAxNjgsIDEzNSwgMjE5LCA1OSwgMjIyLCA2LCAxNjgsIDEzNSwgMjE5LCA1OSwgMjIyLCAxMTQsIDE2OCwgMTM1LCAyMTksIAotICAgIDU5LCAyMTgsIDgyLCAxNjgsIDEzNSwgMjQxLCA2OSwgMjQxLCAxNTksIDE2OCwgMTM1LCAyMzIsIDE1NywgMjUwLCA2OCwgCi0gICAgMTY4LCAxMzUsIDE0NCwgMjU0LCAxMTUsIDE2OCwgMTM1LCAyNDEsIDY5LCAyMjgsIDcwLCAxNjgsIDEzNSwgMjI2LCA2OCwgCi0gICAgMTY4LCAxMzUsIDIyMSwgMjMwLCA2MSwgMTY4LCAxMzUsIDIzMSwgMjA0LCAyNDIsIDE3LCAxNjgsIDEzNSwgMjIxLCAyMzAsIAotICAgIDI1NSwgNzMsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjU0LCAxMzYsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzMsIDE2OCwgMTM1LCAKLSAgICAyMjEsIDIzMCwgMjM2LCAzMywgMTY4LCAxMzUsIDIyMSwgMjMwLCAyMTQsIDIxNCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyMTQsIAotICAgIDIxMiwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3MCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyMTQsIDExOCwgMTY4LCAxMzUsIDIyNSwgCi0gICAgMTI0LCAxNjgsIDI0OSwgOTgsIDE2LCAyNTIsIDE2NSwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3NSwgMTY4LCAxMzUsIDIyMSwgCi0gICAgMjMwLCAyNTQsIDI0MywgMTY4LCAxMzUsIDIyMSwgMjMwLCA3NiwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDIwMiwgMjMxLCAKLSAgICAxOTgsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjU0LCAyMDIsIDIzMSwgMTk5LCAxNjgsIDEzNSwgMjMzLCAxMDYsIDE2OCwgCi0gICAgMTM1LCAyMzEsIDE5NSwgMTY4LCAxMzUsIDIzMSwgMTk2LCAxNjgsIDEzNSwgMjMxLCAyMDQsIDI0NSwgMTgwLCAxNjgsIAotICAgIDEzNSwgMjMxLCAyMDQsIDIxNiwgMTU2LCAxNjgsIDEzNSwgMjMxLCAyMDQsIDIxNSwgMjI4LCAxNjgsIDEzNSwgMjMxLCAKLSAgICAyMDQsIDI1MCwgMTM1LCAxNjgsIDEzNSwgMjE2LCAxOTgsIDE2OCwgMTM1LCAyMjgsIDIwNSwgMTY4LCAxMzUsIDIxMSwgNzMsIAotICAgIDE2OCwgMTM1LCAyNDQsIDM1LCAxNjgsIDIxLCAyMTAsIDg2LCAxNjgsIDIxLCAxMTAsIDE2OCwgMjEsIDEwNSwgMTY4LCAyMSwgCi0gICAgMTU4LCAxNjgsIDIxLCAxNjEsIDE2OCwgMjEsIDE4OSwgMTY4LCAyMSwgMTk0LCAxNjgsIDIxLCAxOTgsIDE2OCwgMjEsIAotICAgIDE5NSwgMTY4LCAyMSwgMjAwLCAxNjgsIDEzNSwgMjU0LCAxMTEsIDE2OCwgMTM1LCAyMzQsIDEwNCwgMjA5LCAyMDksIDEsIAotICAgIDIzNCwgMjgsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNiwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDIzNCwgMTA2LCAyMTcsIDYyLCAKLSAgICAyMDksIDIwOSwgMSwgMjI5LCA0LCAyMDksIDIwOSwgMSwgMjQ5LCAyMzgsIDIwOSwgMjA5LCAxLCAyMTksIDU5LCAyMTcsIAotICAgIDYyLCAyMDksIDIwOSwgMSwgMjI3LCAxMzQsIDIwOSwgMjA5LCAxLCAyNDcsIDE0NSwgMjA5LCAyMDksIDEsIDExMSwgMjA5LCAKLSAgICAyMDksIDEsIDIxNiwgMTU3LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjE2LCAxNTcsIDIxNywgNjIsIDIwOSwgMjA5LCAxLCAKLSAgICAyMjgsIDc0LCAyMDksIDIwOSwgMSwgMjUxLCAyMDUsIDIwOSwgMjA5LCAxLCAyMjUsIDE2LCAyMDksIDIwOSwgMSwgMjI1LCAKLSAgICAxMjIsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAyMTcsIDYyLCAyMDksIDIwOSwgMSwgMjI1LCAxMjIsIDIxNywgCi0gICAgNjIsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjMwLCAxNjEsIDIwOSwgMjA5LCAxLCAKLSAgICAyMTAsIDI0NCwgMjA5LCAyMDksIDEsIDIzMiwgMTU3LCAyMzIsIDIwNiwgMjA5LCAyMDksIDEsIDIzMiwgMTU3LCAyMzIsIAotICAgIDEyMSwgMjA5LCAyMDksIDEsIDIxMSwgMjI3LCAyMDksIDIwOSwgMSwgMjE5LCA1OSwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIAotICAgIDI0MSwgNjksIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCA3NiwgMjA5LCAyMDksIDEsIDI0MSwgNjksIDIxNywgNjIsIDIwOSwgCi0gICAgMjA5LCAyNDUsIDE2MywgMjA5LCAyMDksIDI1LCA1LCA2MSwgMjA5LCAyMDksIDI1LCA1LCAyMzEsIDIwNCwgMjM0LCAyMzQsIAotICAgIDIwOSwgMjA5LCAyNSwgNSwgMjU1LCA3MywgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDEzNiwgMjA5LCAyMDksIDI1LCA1LCA3MywgCi0gICAgMjA5LCAyMDksIDI1LCA1LCAyMzYsIDMzLCAyMDksIDIwOSwgMjUsIDUsIDIxMSwgMTE3LCAyMDksIDIwOSwgMjUsIDUsIAotICAgIDIxMCwgMTY5LCAyMDksIDIwOSwgMjUsIDUsIDcwLCAyMDksIDIwOSwgMjUsIDUsIDIxNCwgMTE4LCAyMDksIDIwOSwgMjUsIAotICAgIDUsIDIzMSwgMjA0LCAyMzQsIDEzLCAyMDksIDIwOSwgMjIwLCAxNDUsIDUsIDIzMiwgMTU2LCAyMDksIDIwOSwgMjIwLCAKLSAgICAxNDUsIDUsIDIyNywgMTM0LCAyMDksIDIwOSwgMjUsIDUsIDc1LCAyMDksIDIwOSwgMjUsIDUsIDI0NSwgMTk1LCAyMDksIAotICAgIDIwOSwgMjUsIDUsIDc2LCAyMDksIDIwOSwgMjUsIDUsIDI1MywgMTY3LCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMjAxLCAKLSAgICAyMDksIDIwOSwgMjM0LCAyOSwgMjMzLCAxMzUsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA0LCAyNDUsIDE4MCwgMjA5LCAyMDksIAotICAgIDEzOCwgMjMxLCAyMDQsIDIxNiwgMTU2LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwNCwgMjE2LCAxMTcsIDIwOSwgMjA5LCAKLSAgICAxMzgsIDIzMSwgMjA0LCAyNTAsIDIyMywgMjA5LCAyMDksIDI1MSwgNCwgNzgsIDIwOSwgMjA5LCAyMjgsIDIxNCwgMjA5LCAKKyAgICAxOTgsIDEzNiwgMjEsIDE5NSwgMTM2LCAyMSwgMjAwLCAxMzYsIDU0LCAyMTYsIDI0OCwgMTM2LCA1NCwgMTIzLCAyNDAsIAorICAgIDIxMSwgMTM2LCA1NCwgMTIzLCAyMTYsIDE0OCwgMTM2LCAyNDQsIDMsIDEyMywgMjI0LCAyMiwgMTM2LCAyNDQsIDMsIDEyMywgCisgICAgMjQyLCAyOCwgMTM2LCAyNDQsIDMsIDEzNCwgMjI0LCAyMCwgMTM2LCAyNDgsIDE1MSwgNzgsIDEzNiwgMSwgMjUwLCAxMDAsIAorICAgIDIyOCwgMTEyLCAxMzYsIDEsIDI1MCwgMTAwLCAyMzAsIDI2LCAxMzYsIDEsIDI1MCwgMTAwLCAyMjIsIDE4MSwgMTM2LCAxLCAKKyAgICAyNTAsIDEwMCwgMTU2LCAxMzYsIDEsIDI1MCwgMTAwLCAyMzIsIDE4NiwgMTM2LCAxLCAyNTAsIDEwMCwgMjM1LCAyNCwgCisgICAgMTc1LCA1LCAyNTQsIDc1LCAxNzUsIDUsIDIxMywgMTQ2LCAxNzUsIDEsIDI1MywgMTY2LCAxNzUsIDEsIDI1NSwgMjgsIAorICAgIDE3NSwgMSwgMjU0LCAyMjQsIDE3NSwgMSwgMjU0LCAyMzksIDE3NSwgMSwgMjM1LCAxNTIsIDE3NSwgMSwgMjM2LCAzMywgCisgICAgMTc1LCAxLCAyMTQsIDExMCwgMTc1LCAxLCAyMTQsIDExMiwgMTc1LCAxLCAyMzUsIDE3NCwgMTc1LCAxLCAyMzUsIDE3NSwgCisgICAgMTc1LCAxLCAyMzYsIDE5LCAxNzUsIDEsIDIzNiwgMjEsIDE3NSwgMSwgMjQ1LCAxOCwgMTc1LCAxLCAyNDUsIDIwNSwgMTc1LCAKKyAgICAxLCAyNTQsIDE4OSwgMTc1LCAxLCAyMjYsIDEwOSwgMTc1LCAxLCAyMjYsIDE3OCwgMTc1LCAxLCAyNTMsIDE3OSwgMTc1LCAKKyAgICAxLCAyNTQsIDE0NywgMjM0LCAxODgsIDE3NSwgMSwgMjMxLCAyMTAsIDIzNCwgMTg4LCAxNzUsIDEsIDI1NCwgMTQ3LCAyNDMsIAorICAgIDgzLCAxNzUsIDEsIDIzMSwgMjEwLCAyNDMsIDgzLCAxNzUsIDEsIDIzNCwgMjMwLCAyMjksIDIyMywgMTc1LCAxLCAyMjEsIAorICAgIDIzNywgMjQzLCA4MywgMTc1LCAxLCAyNTQsIDE0NywgMjUwLCAyMTcsIDE3NSwgMSwgMjMxLCAyMTAsIDI1MCwgMjE3LCAKKyAgICAxNzUsIDEsIDI1NCwgMTQ3LCAyMzUsIDEyOCwgMTc1LCAxLCAyMzEsIDIxMCwgMjM1LCAxMjgsIDE3NSwgMSwgMjE3LCA5OSwgCisgICAgMjI5LCAyMjMsIDE3NSwgMSwgMjE3LCA5OSwgMjIxLCAyMzYsIDIyOSwgMjI0LCAxNzUsIDEsIDIyMSwgMjM3LCAyMzUsIAorICAgIDEyOCwgMTc1LCAxLCAyNTQsIDE0NywgMjE1LCAxNTMsIDE3NSwgMSwgMjMxLCAyMTAsIDIxNSwgMTUzLCAxNzUsIDEsIDI1NCwgCisgICAgMTQ3LCAyNDgsIDEyNywgMTc1LCAxLCAyMzEsIDIxMCwgMjQ4LCAxMjcsIDE3NSwgMSwgMjMwLCA1NCwgMjI5LCAxODEsIAorICAgIDE3NSwgMSwgMjIxLCAyMzcsIDI0OCwgMTI3LCAxNzUsIDEsIDI1NCwgMTQ3LCAyMTcsIDMxLCAxNzUsIDEsIDIzMSwgMjEwLCAKKyAgICAyMTcsIDMxLCAxNzUsIDEsIDI1NCwgMTQ3LCAyNDgsIDE0NSwgMTc1LCAxLCAyMzEsIDIxMCwgMjQ4LCAxNDUsIDE3NSwgMSwgCisgICAgMjQ4LCAxNzUsIDIyOSwgMTgxLCAxNzUsIDEsIDIyMSwgMjM3LCAyNDgsIDE0NSwgMTc1LCAxLCAyNTQsIDE0NywgMjI1LCAKKyAgICAyMjksIDE3NSwgMSwgMjMxLCAyMTAsIDIyNSwgMjI5LCAxNzUsIDEsIDI1NCwgMTQ3LCAyNTIsIDExMywgMTc1LCAxLCAyMzEsIAorICAgIDIxMCwgMjUyLCAxMTMsIDE3NSwgMSwgMjMxLCAxMzIsIDE3NSwgMSwgMjU0LCAxMzIsIDI1MiwgMTEzLCAxNzUsIDEsIDIxMSwgCisgICAgNTEsIDE3NSwgMSwgMjIzLCAxMzQsIDE3NSwgMSwgMjQ4LCAxNzUsIDIzMywgNjgsIDE3NSwgMSwgMjE0LCAxLCAxNzUsIDEsIAorICAgIDIxNywgOTksIDIyMSwgMjExLCAxNzUsIDEsIDIzMCwgNTQsIDIyMSwgMjExLCAxNzUsIDEsIDI0OCwgMTc1LCAyMjEsIDIxMSwgCisgICAgMTc1LCAxLCAyNDEsIDI0MywgMTc1LCAxLCAyMzAsIDU0LCAyMzMsIDY4LCAxNzUsIDEsIDI0NCwgMTU3LCAxNzUsIDUsIAorICAgIDI1NCwgMTc4LCAxNzUsIDI1LCA1LCAyNTQsIDIzNCwgMTc1LCAyNSwgNSwgMjM0LCAxNTYsIDI1NCwgMjQxLCAxNzUsIDI1LCAKKyAgICA1LCAyNDcsIDIyOSwgMjU0LCAyNDEsIDE3NSwgMjUsIDUsIDIzNCwgMTU2LCAyMzUsIDE3MSwgMTc1LCAyNSwgNSwgMjQ3LCAKKyAgICAyMjksIDIzNSwgMTcxLCAxNzUsIDI1LCA1LCAyMzQsIDE1NiwgMjI2LCA4OSwgMTc1LCAyNSwgNSwgMjQ3LCAyMjksIDIyNiwgCisgICAgODksIDE3NSwgMjUsIDUsIDI0MywgMTI1LCAxNzUsIDI1LCA1LCAyMzQsIDE2LCAxNzUsIDI1LCA1LCAyNDcsIDIyOSwgMjM0LCAKKyAgICAxNiwgMTc1LCAyNSwgNSwgMjM0LCAxOCwgMjQ4LCA2OCwgMTc1LCAyNSwgNSwgMjM0LCAxNywgMjQyLCA0OCwgMjU0LCAyMzQsIAorICAgIDE3NSwgMjUsIDUsIDIzNCwgMTcsIDI0MiwgNDgsIDI0NywgMjI5LCAyNTQsIDIzNCwgMTc1LCAyNSwgNSwgMjM0LCAxNywgCisgICAgMjQyLCA0OCwgMjQzLCA4MiwgMTc1LCAyNSwgNSwgMjQzLCA4MiwgMTc1LCAyNSwgNSwgMjQ3LCAyMjksIDI0MywgMTI1LCAKKyAgICAxNzUsIDI1LCA1LCAyNDcsIDIyOSwgMjQzLCA4MiwgMTc1LCAyMjQsIDE0MiwgMjMzLCAyMDgsIDE2OCwgMTM1LCAyMzQsIAorICAgIDMwLCAyMzQsIDI0NywgMTY4LCAxMzUsIDIzNCwgMTA3LCAyMzQsIDEyOSwgMTY4LCAxMzUsIDIzNCwgMTA3LCAyMzQsIDEwMCwgCisgICAgMTY4LCAxMzUsIDIzNCwgMTA3LCAyMzQsIDk2LCAxNjgsIDEzNSwgMjM0LCAxMDcsIDIzNCwgMTA0LCAxNjgsIDEzNSwgMjM0LCAKKyAgICAxMDcsIDIyMywgMTU1LCAxNjgsIDEzNSwgMjI5LCA2LCAyMjgsIDI0OSwgMTY4LCAxMzUsIDI1MCwgODgsIDI1MCwgMTQ4LCAKKyAgICAxNjgsIDEzNSwgMjUwLCA4OCwgMjUwLCA5NiwgMTY4LCAxMzUsIDI1MCwgODgsIDI1MCwgMTQ3LCAxNjgsIDEzNSwgMjE5LCAKKyAgICA2MCwgMjE5LCA1OSwgMTY4LCAxMzUsIDI1MCwgODgsIDI1MCwgODQsIDE2OCwgMTM1LCAyMTAsIDI0NSwgMjEwLCAyNTIsIAorICAgIDE2OCwgMTM1LCAyNDcsIDE0NywgMjUwLCAxNTUsIDE2OCwgMTM1LCAyMTYsIDQzLCAyMjUsIDIzOSwgMTY4LCAxMzUsIDIxNiwgCisgICAgMTU4LCAyMTYsIDIwMSwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMjksIDIwMiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMjUsIAorICAgIDExMiwgMTY4LCAxMzUsIDIyOCwgNzYsIDIyOSwgOTksIDE2OCwgMTM1LCAyNDcsIDE0NywgMjQ4LCA2OSwgMTY4LCAxMzUsIAorICAgIDIxNiwgNDMsIDIxNywgNTYsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjE2LCAxMzIsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjE2LCAKKyAgICAyMDUsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjE2LCAxNTUsIDE2OCwgMTM1LCAyMjgsIDc2LCAyMjcsIDIzOCwgMTY4LCAxMzUsIAorICAgIDI1MSwgMjA3LCAyNTIsIDE2NSwgMTY4LCAxMzUsIDIyNSwgMTgsIDIyNSwgNDMsIDE2OCwgMTM1LCAyMjUsIDEyMywgMjI1LCAKKyAgICAxMTQsIDE2OCwgMTM1LCAyNDQsIDQ1LCAyNDQsIDE5NywgMTY4LCAxMzUsIDIyNSwgMTIzLCAyMjUsIDE0MiwgMTY4LCAxMzUsIAorICAgIDI0NCwgNDUsIDI0NCwgMTc0LCAxNjgsIDEzNSwgMjI1LCAxMjMsIDIyMSwgMjQ4LCAxNjgsIDEzNSwgMjMwLCAxNjMsIDE4NSwgCisgICAgMTY4LCAxMzUsIDIxMCwgMjQ1LCAyMTEsIDc5LCAxNjgsIDEzNSwgMjIyLCAyMTMsIDIyMiwgMTQwLCAxNjgsIDEzNSwgMjIyLCAKKyAgICAxNDEsIDE2OCwgMTM1LCAyMzIsIDE1OCwgMjMyLCAyMDcsIDE2OCwgMTM1LCAyMzIsIDk5LCAxNjgsIDEzNSwgMjExLCAyMjgsIAorICAgIDIxMiwgNjEsIDE2OCwgMTM1LCAyMTksIDYwLCAyMjIsIDcsIDE2OCwgMTM1LCAyMTksIDYwLCAyMjIsIDExNSwgMTY4LCAKKyAgICAxMzUsIDIxOSwgNjAsIDIxOCwgODMsIDE2OCwgMTM1LCAyNDEsIDcwLCAyNDEsIDE2MCwgMTY4LCAxMzUsIDIzMiwgMTU4LCAKKyAgICAyNTAsIDY5LCAxNjgsIDEzNSwgMTQ0LCAyNTQsIDExNiwgMTY4LCAxMzUsIDI0MSwgNzAsIDIyOCwgNzEsIDE2OCwgMTM1LCAKKyAgICAyMjYsIDY5LCAxNjgsIDEzNSwgMjIxLCAyMzEsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDUsIDI0MiwgMTgsIDE2OCwgMTM1LCAKKyAgICAyMjEsIDIzMSwgMjU1LCA3NCwgMTY4LCAxMzUsIDIyMSwgMjMxLCAyNTQsIDEzNywgMTY4LCAxMzUsIDIyMSwgMjMxLCA3MywgCisgICAgMTY4LCAxMzUsIDIyMSwgMjMxLCAyMzYsIDM0LCAxNjgsIDEzNSwgMjIxLCAyMzEsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAKKyAgICAyMzEsIDIxNCwgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzEsIDcwLCAxNjgsIDEzNSwgMjIxLCAyMzEsIDIxNCwgMTE4LCAxNjgsIAorICAgIDEzNSwgMjI1LCAxMjUsIDE2OCwgMjQ5LCA5OSwgMTYsIDI1MiwgMTY2LCAxNjgsIDEzNSwgMjIxLCAyMzEsIDc1LCAxNjgsIAorICAgIDEzNSwgMjIxLCAyMzEsIDI1NCwgMjQ0LCAxNjgsIDEzNSwgMjIxLCAyMzEsIDc2LCAxNjgsIDEzNSwgMjIxLCAyMzEsIDI1NCwgCisgICAgMjAzLCAyMzEsIDE5OSwgMTY4LCAxMzUsIDIyMSwgMjMxLCAyNTQsIDIwMywgMjMxLCAyMDAsIDE2OCwgMTM1LCAyMzMsIAorICAgIDEwNywgMTY4LCAxMzUsIDIzMSwgMTk2LCAxNjgsIDEzNSwgMjMxLCAxOTcsIDE2OCwgMTM1LCAyMzEsIDIwNSwgMjQ1LCAKKyAgICAxODEsIDE2OCwgMTM1LCAyMzEsIDIwNSwgMjE2LCAxNTcsIDE2OCwgMTM1LCAyMzEsIDIwNSwgMjE1LCAyMjksIDE2OCwgCisgICAgMTM1LCAyMzEsIDIwNSwgMjUwLCAxMzYsIDE2OCwgMTM1LCAyMTYsIDE5OSwgMTY4LCAxMzUsIDIyOCwgMjA2LCAxNjgsIAorICAgIDEzNSwgMjExLCA3MywgMTY4LCAxMzUsIDI0NCwgMzYsIDE2OCwgMjEsIDIxMCwgODYsIDE2OCwgMjEsIDExMCwgMTY4LCAyMSwgCisgICAgMTA1LCAxNjgsIDIxLCAxNTgsIDE2OCwgMjEsIDE2MSwgMTY4LCAyMSwgMTg5LCAxNjgsIDIxLCAxOTQsIDE2OCwgMjEsIAorICAgIDE5OCwgMTY4LCAyMSwgMTk1LCAxNjgsIDIxLCAyMDAsIDE2OCwgMTM1LCAyNTQsIDExMiwgMTY4LCAxMzUsIDIzNCwgMTA1LCAKKyAgICAyMDksIDIwOSwgMSwgMjM0LCAyOSwgMjA5LCAyMDksIDEsIDIzNCwgMTA3LCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjM0LCAKKyAgICAxMDcsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyMjksIDUsIDIwOSwgMjA5LCAxLCAyNDksIDIzOSwgMjA5LCAyMDksIDEsIAorICAgIDIxOSwgNjAsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyMjcsIDEzNSwgMjA5LCAyMDksIDEsIDI0NywgMTQ2LCAyMDksIDIwOSwgCisgICAgMSwgMTExLCAyMDksIDIwOSwgMSwgMjE2LCAxNTgsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyMTYsIDE1OCwgMjE3LCA2MywgCisgICAgMjA5LCAyMDksIDEsIDIyOCwgNzUsIDIwOSwgMjA5LCAxLCAyNTEsIDIwNiwgMjA5LCAyMDksIDEsIDIyNSwgMTcsIDIwOSwgCisgICAgMjA5LCAxLCAyMjUsIDEyMywgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDI0NCwgNDUsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAKKyAgICAyMjUsIDEyMywgMjE3LCA2MywgMjA5LCAyMDksIDEsIDI0NCwgNDUsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyMzAsIDE2MiwgCisgICAgMjA5LCAyMDksIDEsIDIxMCwgMjQ0LCAyMDksIDIwOSwgMSwgMjMyLCAxNTgsIDIzMiwgMjA3LCAyMDksIDIwOSwgMSwgMjMyLCAKKyAgICAxNTgsIDIzMiwgMTIyLCAyMDksIDIwOSwgMSwgMjExLCAyMjcsIDIwOSwgMjA5LCAxLCAyMTksIDYwLCAyMTgsIDM2LCAyMDksIAorICAgIDIwOSwgMSwgMjQxLCA3MCwgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDc2LCAyMDksIDIwOSwgMSwgMjQxLCA3MCwgMjE3LCA2MywgCisgICAgMjA5LCAyMDksIDI0NSwgMTY0LCAyMDksIDIwOSwgMjUsIDUsIDYxLCAyMDksIDIwOSwgMjUsIDUsIDIzMSwgMjA1LCAyMzQsIAorICAgIDIzNSwgMjA5LCAyMDksIDI1LCA1LCAyNTUsIDc0LCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMTM3LCAyMDksIDIwOSwgMjUsIAorICAgIDUsIDczLCAyMDksIDIwOSwgMjUsIDUsIDIzNiwgMzQsIDIwOSwgMjA5LCAyNSwgNSwgMjExLCAxMTcsIDIwOSwgMjA5LCAyNSwgCisgICAgNSwgMjEwLCAxNjksIDIwOSwgMjA5LCAyNSwgNSwgNzAsIDIwOSwgMjA5LCAyNSwgNSwgMjE0LCAxMTgsIDIwOSwgMjA5LCAKKyAgICAyNSwgNSwgMjMxLCAyMDUsIDIzNCwgMTQsIDIwOSwgMjA5LCAyMjAsIDE0NiwgNSwgMjMyLCAxNTcsIDIwOSwgMjA5LCAyMjAsIAorICAgIDE0NiwgNSwgMjI3LCAxMzUsIDIwOSwgMjA5LCAyNSwgNSwgNzUsIDIwOSwgMjA5LCAyNSwgNSwgMjQ1LCAxOTYsIDIwOSwgCisgICAgMjA5LCAyNSwgNSwgNzYsIDIwOSwgMjA5LCAyNSwgNSwgMjUzLCAxNjgsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAyMDIsIAorICAgIDIwOSwgMjA5LCAyMzQsIDMwLCAyMzMsIDEzNiwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDUsIDI0NSwgMTgxLCAyMDksIDIwOSwgCisgICAgMTM4LCAyMzEsIDIwNSwgMjE2LCAxNTcsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA1LCAyMTYsIDExOCwgMjA5LCAyMDksIAorICAgIDEzOCwgMjMxLCAyMDUsIDI1MCwgMjI0LCAyMDksIDIwOSwgMjUxLCA1LCA3OCwgMjA5LCAyMDksIDIyOCwgMjE1LCAyMDksIAogICAgIDIwOSwgMjEsIDIxMCwgODYsIDIwOSwgMjA5LCAyMSwgMTEwLCAyMDksIDIwOSwgMjEsIDEwNSwgMjA5LCAyMDksIDIxLCAKICAgICAxNTgsIDIwOSwgMjA5LCAyMSwgMTYxLCAyMDksIDIwOSwgMjEsIDE4OSwgMjA5LCAyMDksIDIxLCAxOTQsIDIwOSwgMjA5LCAKLSAgICAyMSwgMTk4LCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIDIxLCAyMDAsIDIwOSwgMjA5LCAyNDEsIDY5LCAyMjgsIAotICAgIDc0LCAyMDksIDIwOSwgMjQxLCA2OSwgMjMwLCAxNjEsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNywgMjQyLCAxNzQsIDIwOSwgCi0gICAgMjA5LCAxLCAyMzQsIDEwNywgMjI3LCAxMzQsIDYzLCAzLCAyMjYsIDIwNCwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgCi0gICAgMjMwLCAyNDgsIDIxNSwgMTg5LCA2MSwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgMjMwLCAyNDgsIDI1NSwgMTU5LCAKLSAgICAyMjIsIDIxNiwgMjUyLCA3NywgMTg0LCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAyMzAsIDI0OCwgMjU1LCAxNTksIAotICAgIDI0MiwgMTE1LCAyMTUsIDE3MywgMTg0LCA2MywgMTY0LCA2NSwgMjExLCAwLCAyMzAsIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgCi0gICAgMTY0LCAyNDksIDI1MiwgMjExLCAwLCAyMzAsIDI0OCwgMjIwLCAxMDksIDE4NCwgNjMsIDE2NCwgMjUwLCAyMzksIDIxMSwgCi0gICAgMCwgMjMwLCAyNDgsIDIyNSwgMTEyLCAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNDgsIDIxNSwgMTczLCAKLSAgICAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIyMSwgMjA4LCAyMjAsIDk1LCA2MywgMTY0LCAyNTEsIDEyOCwgMjExLCAwLCAyMzAsIAotICAgIDI0NywgNjMsIDE2NCwgMjUxLCAyMjMsIDIyMCwgMywgMjExLCAwLCAyMzAsIDI0NywgNjMsIDE2NCwgMjM1LCAxOTcsIDIxNSwgCi0gICAgMTcyLCA2MywgMTY0LCAyNDgsIDYxLCAyMTUsIDE3MywgMjUxLCAxMjcsIDYzLCAxNjQsIDIyMCwgOTUsIDYzLCAxNjQsIAotICAgIDIyNywgMTM5LCAyMjAsIDk1LCA2MywgMTY0LCAyMTUsIDE3MywgMjIwLCA5NSwgNjMsIDE2NCwgMjI3LCAxMzksIDIxNSwgCi0gICAgMTczLCAyMjAsIDk1LCA2MywgMTY0LCAyMjIsIDIzNiwgMjUwLCAxMjIsIDIxOCwgMjM2LCAyMjAsIDk1LCA2MywgMTY0LCAKLSAgICAyMjMsIDQyLCAyNDIsIDE0NiwgMjIwLCA5NSwgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjMxLCAKLSAgICA5MiwgMTk5LCAyNTEsIDcsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTUsIDE3MiwgNjMsIDIzMiwgMTQ0LCA1LCAyNTAsIDE1NSwgCi0gICAgMjIyLCAxNDMsIDYzLCAyMzIsIDE0NCwgNSwgMjMyLCAyNTIsIDIyMiwgMTQzLCA2MywgMjUzLCAyMTIsIDUsIDIyMCwgMTA1LCAKLSAgICAyNDMsIDY1LCAyNTUsIDE2NCwgMjIyLCAxNDMsIDYzLCAyNTMsIDIxMiwgNSwgMjU1LCAxNjEsIDE5MCwgNjMsIDI1MywgCi0gICAgMjEyLCA1LCAyMjEsIDE4MiwgMjE1LCAxNjgsIDYzLCA1LCAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MywgNjQsIDYzLCA1LCAKLSAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MiwgMTc2LCA2MywgNSwgMjIzLCAxMzAsIDI0NywgMTU5LCAyNDIsIDExNiwgNjMsIDUsIAotICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQzLCA2NCwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxNzYsIDYzLCA1LCAKLSAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDIyMywgMTMwLCAyMjksIDIxOCwgNjMsIDIxLCAyMTAsIDg2LCA2MywgMjEsIDExMCwgNjMsIAorICAgIDIxLCAxOTgsIDIwOSwgMjA5LCAyMSwgMTk1LCAyMDksIDIwOSwgMjEsIDIwMCwgMjA5LCAyMDksIDI0MSwgNzAsIDIyOCwgCisgICAgNzUsIDIwOSwgMjA5LCAyNDEsIDcwLCAyMzAsIDE2MiwgMjA5LCAyMDksIDEsIDIzNCwgMTA4LCAyNDIsIDE3NSwgMjA5LCAKKyAgICAyMDksIDEsIDIzNCwgMTA4LCAyMjcsIDEzNSwgNjMsIDMsIDIyNiwgMjA1LCA2MywgMTY0LCAyNDIsIDExNiwgMjExLCAwLCAKKyAgICAyMzAsIDI0OSwgMjE1LCAxOTAsIDYxLCA2MywgMTY0LCAyNDIsIDExNiwgMjExLCAwLCAyMzAsIDI0OSwgMjU1LCAxNjAsIAorICAgIDIyMiwgMjE3LCAyNTIsIDc4LCAxODUsIDYzLCAxNjQsIDI0MiwgMTE2LCAyMTEsIDAsIDIzMCwgMjQ5LCAyNTUsIDE2MCwgCisgICAgMjQyLCAxMTYsIDIxNSwgMTc0LCAxODUsIDYzLCAxNjQsIDY1LCAyMTEsIDAsIDIzMCwgMjQ5LCAyMzEsIDk0LCAxODUsIDYzLCAKKyAgICAxNjQsIDI0OSwgMjUzLCAyMTEsIDAsIDIzMCwgMjQ5LCAyMjAsIDExMCwgMTg1LCA2MywgMTY0LCAyNTAsIDI0MCwgMjExLCAKKyAgICAwLCAyMzAsIDI0OSwgMjI1LCAxMTMsIDIyMCwgOTcsIDE4NSwgNjMsIDE2NCwgMjExLCAwLCAyMzAsIDI0OSwgMjE1LCAxNzQsIAorICAgIDIyMCwgOTcsIDE4NSwgNjMsIDE2NCwgMjIxLCAyMDksIDIyMCwgOTYsIDYzLCAxNjQsIDI1MSwgMTI5LCAyMTEsIDAsIDIzMCwgCisgICAgMjQ4LCA2MywgMTY0LCAyNTEsIDIyNCwgMjIwLCA0LCAyMTEsIDAsIDIzMCwgMjQ4LCA2MywgMTY0LCAyMzUsIDE5OCwgMjE1LCAKKyAgICAxNzMsIDYzLCAxNjQsIDI0OCwgNjIsIDIxNSwgMTc0LCAyNTEsIDEyOCwgNjMsIDE2NCwgMjIwLCA5NiwgNjMsIDE2NCwgCisgICAgMjI3LCAxNDAsIDIyMCwgOTYsIDYzLCAxNjQsIDIxNSwgMTc0LCAyMjAsIDk2LCA2MywgMTY0LCAyMjcsIDE0MCwgMjE1LCAKKyAgICAxNzQsIDIyMCwgOTYsIDYzLCAxNjQsIDIyMiwgMjM3LCAyNTAsIDEyMywgMjE4LCAyMzcsIDIyMCwgOTYsIDYzLCAxNjQsIAorICAgIDIyMywgNDMsIDI0MiwgMTQ3LCAyMjAsIDk2LCA2MywgMTY0LCAyNTAsIDI0MCwgMjU1LCAxNjQsIDIyMiwgMTQ1LCAyMzEsIAorICAgIDkzLCAxOTksIDI1MSwgOCwgNjMsIDE2NCwgMjQyLCAxMTYsIDIxNSwgMTczLCA2MywgMjMyLCAxNDUsIDUsIDI1MCwgMTU2LCAKKyAgICAyMjIsIDE0NCwgNjMsIDIzMiwgMTQ1LCA1LCAyMzIsIDI1MywgMjIyLCAxNDQsIDYzLCAyNTMsIDIxMywgNSwgMjIwLCAxMDYsIAorICAgIDI0MywgNjYsIDI1NSwgMTY1LCAyMjIsIDE0NCwgNjMsIDI1MywgMjEzLCA1LCAyNTUsIDE2MiwgMTkwLCA2MywgMjUzLCAKKyAgICAyMTMsIDUsIDIyMSwgMTgzLCAyMTUsIDE2OSwgNjMsIDUsIDIyMywgMTMxLCAyNDcsIDE2MCwgMjQzLCA2NSwgNjMsIDUsIAorICAgIDIyMywgMTMxLCAyNDcsIDE2MCwgMjQyLCAxNzcsIDYzLCA1LCAyMjMsIDEzMSwgMjQ3LCAxNjAsIDI0MiwgMTE3LCA2MywgNSwgCisgICAgMjIzLCAxMzEsIDIyOSwgMjIwLCAyNDMsIDY1LCA2MywgNSwgMjIzLCAxMzEsIDIyOSwgMjIwLCAyNDIsIDE3NywgNjMsIDUsIAorICAgIDIyMywgMTMxLCAyNDcsIDE2MCwgMjIzLCAxMzEsIDIyOSwgMjE5LCA2MywgMjEsIDIxMCwgODYsIDYzLCAyMSwgMTEwLCA2MywgCiAgICAgMjEsIDEwNSwgNjMsIDIxLCAxNTgsIDYzLCAyMSwgMTYxLCA2MywgMjEsIDE4OSwgNjMsIDIxLCAxOTQsIDYzLCAyMSwgMTk4LCAKICAgICA2MywgMjEsIDE5NSwgNjMsIDIxLCAyMDAsIDYzLCAyMSwgMTYzLCAxMTAsIDYzLCAyMSwgMTYzLCAxMDUsIDYzLCAyMSwgCiAgICAgMTYzLCAxNTgsIDYzLCAyMSwgMTYzLCAxNjEsIDYzLCAyMSwgMTYzLCAxODksIDYzLCAyMSwgMTYzLCAxOTQsIDYzLCAyMSwgCiAgICAgMTYzLCAxOTgsIDYzLCAyMSwgMTYzLCAxOTUsIDYzLCAyMSwgMTYzLCAyMDAsIDYzLCAyMSwgMTYzLCAyMTAsIDg2LCA2MywgCi0gICAgMTY0LCAyNTEsIDEzMCwgMjIyLCAxNDMsIDYzLCAxNjQsIDIyOSwgNjgsIDI1MSwgNjgsIDIyNywgMTQ5LCAyMTAsIDI1LCAKLSAgICA2MywgMTY0LCAyNTAsIDIzOSwgMjU1LCAxNjMsIDIyMiwgMTQ0LCAyNTEsIDY5LCAyMzAsIDIwMiwgMjUxLCA3LCA2MywgCi0gICAgMTY0LCAyMjksIDY4LCAyNTEsIDY4LCAyMjAsIDEwNiwgMjIyLCAxNDMsIDYzLCAxNjQsIDI1MCwgMTMyLCAyMzAsIDI0NywgCi0gICAgNjMsIDE2NCwgMjE1LCAxODQsIDI1NSwgMTYwLCA2MywgMTY0LCAyNDIsIDEwMCwgMjIyLCAxNDQsIDI0MiwgNjMsIDYzLCAKLSAgICAxNjQsIDI0MiwgMTAwLCAyMjIsIDE0NCwgMjQyLCA2OSwgNjMsIDE2NCwgMjU0LCAxMTYsIDIzNCwgMTIzLCAyNDIsIDYzLCAKLSAgICA2MywgMTY0LCAyNTQsIDExNiwgMjM0LCAxMjMsIDI0MiwgNjksIDYzLCA1LCAyMTEsIDY1LCAyMTUsIDE3MSwgNjMsIDUsIAotICAgIDIzMSwgMTY3LCAyMTUsIDE3MSwgNjMsIDEsIDE3NiwgNjMsIDEsIDIzNCwgMTMyLCA2MywgMSwgMjQzLCAxMzUsIDYzLCAxLCAKLSAgICAyNDIsIDI0OSwgNjMsIDEsIDIyOSwgNzcsIDYzLCAxLCAyNTEsIDMzLCA2MywgMSwgMjUwLCAxNTcsIDYzLCAxLCAyMzUsIAotICAgIDE0MSwgNjMsIDEsIDIyNywgMTY1LCA2MywgMSwgMjE1LCAxNTYsIDYzLCAxLCAyMTUsIDE0NCwgNjMsIDEsIDI0OCwgMTM1LCAKLSAgICA2MywgMSwgMjQ4LCAxMTksIDYzLCAxLCAyMjgsIDExMCwgNjMsIDEsIDIxNywgMTA1LCA2MywgMSwgMjE2LCAyMDgsIDYzLCAKLSAgICAxLCAyNDgsIDIyMSwgNjMsIDEsIDI0OCwgMjUsIDYzLCAxLCAxOTcsIDYzLCAxLCAxOTAsIDYzLCAxLCAyMjUsIDE0NywgNjMsIAotICAgIDEsIDI1MiwgMTkxLCA2MywgMSwgMjUyLCAxOCwgNjMsIDEsIDE4NCwgNjMsIDEsIDIxNSwgMTgzLCA2MywgMSwgMjE1LCAKLSAgICAxNzUsIDYzLCAxLCAyNDYsIDM4LCA2MywgMSwgMjQ2LCAzMywgNjMsIDEsIDIxMiwgNjUsIDYzLCAxLCAyMTAsIDgyLCA2MywgCi0gICAgMSwgMjEwLCAxMTYsIDYzLCAxLCAyNTUsIDE2NiwgNjMsIDEsIDE5MSwgNjMsIDEsIDIwNSwgNjMsIDEsIDIzMywgMTM1LCAKLSAgICA2MywgMSwgMjIwLCAxMDIsIDYzLCAxLCAyMTgsIDIyMywgNjMsIDEsIDIwNiwgNjMsIDEsIDE2MiwgNjMsIDEsIDYxLCA2MywgCi0gICAgMSwgMjMzLCAyMzEsIDYzLCAxLCAyNDQsIDc3LCAyMDUsIDYzLCAxLCAyMzQsIDQ2LCA2MywgMSwgMjIyLCAxNzksIDYzLCAKLSAgICAyNSwgNSwgMjU1LCA3MywgNjMsIDI1LCA1LCA3MywgNjMsIDI1LCA1LCAyMzYsIDMzLCA2MywgMjUsIDUsIDcwLCA2MywgMjUsIAotICAgIDUsIDIxNCwgMTE4LCA2MywgMjUsIDUsIDE0OSwgMTUzLCA2MywgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDYzLCAyNSwgNSwgCi0gICAgMTQ5LCAxNTYsIDYzLCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgNjMsIDI1LCA1LCA3NSwgNjMsIDI1LCA1LCAyNDUsIDIwOSwgCi0gICAgNjMsIDI1LCA1LCA3NiwgNjMsIDI1LCA1LCAyMjYsIDE4MywgNjMsIDUsIDIyMiwgMjIxLCAyMTgsIDg0LCAyMjksIDc4LCAKLSAgICAyMjIsIDIxMSwgNjMsIDUsIDIyMiwgMjE2LCAyNTIsIDc2LCA2MywgMjUsIDUsIDIyMywgNDksIDczLCA2MywgMjUsIDUsIAotICAgIDIyMywgNDksIDIzNiwgMzMsIDYzLCA1LCAyMjcsIDE0OSwgMjEwLCAyNiwgMjI5LCAyMjYsIDI0OCwgMjIxLCA2MywgNSwgCi0gICAgMjE5LCA3MSwgMjMzLCA2MCwgNjMsIDE2NCwgMjQyLCAyOSwgNjMsIDE2NCwgMjI2LCA1NywgNjMsIDUsIDIzMywgNjMsIAotICAgIDIyMiwgMTQzLCA2MywgNSwgMjExLCA3MCwgMjIyLCAxNDMsIDYzLCA1LCAyMzMsIDY0LCAyMTUsIDE4NCwgMjUxLCA3LCA2MywgCi0gICAgNSwgMjMxLCA5NSwgMjUxLCA3LCA2MywgNSwgMjQyLCAxMTksIDI1MSwgOCwgMjIzLCA0MCwgNjMsIDUsIDI0MiwgMTE5LCAKLSAgICAyMzEsIDg1LCAyMjMsIDQwLCA2MywgNSwgMjM1LCAxOTMsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDUsIDIzMywgCi0gICAgNjQsIDIxNSwgMTg0LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAKLSAgICAyMzUsIDE5MywgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgMSwgMTc2LCA2MywgMjE4LCA3MywgMSwgMjM0LCAxMzIsIAotICAgIDYzLCAyMTgsIDczLCAxLCAyNDMsIDEzNSwgNjMsIDIxOCwgNzMsIDEsIDI0MiwgMjQ5LCA2MywgMjE4LCA3MywgMSwgMjI5LCAKLSAgICA3NywgNjMsIDIxOCwgNzMsIDEsIDI1MSwgMzMsIDYzLCAyMTgsIDczLCAxLCAyNTAsIDE1NywgNjMsIDIxOCwgNzMsIDEsIAotICAgIDIzNSwgMTQxLCA2MywgMjE4LCA3MywgMSwgMjI3LCAxNjUsIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE1NiwgNjMsIDIxOCwgCi0gICAgNzMsIDEsIDIxNSwgMTQ0LCA2MywgMjE4LCA3MywgMSwgMjQ4LCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyNDgsIDExOSwgNjMsIAotICAgIDIxOCwgNzMsIDEsIDIyOCwgMTEwLCA2MywgMjE4LCA3MywgMSwgMjE3LCAxMDUsIDYzLCAyMTgsIDczLCAxLCAyMTYsIDIwOCwgCi0gICAgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMjIxLCA2MywgMjE4LCA3MywgMSwgMjQ4LCAyNSwgNjMsIDIxOCwgNzMsIDEsIDE5NywgCi0gICAgNjMsIDIxOCwgNzMsIDEsIDE5MCwgNjMsIDIxOCwgNzMsIDEsIDIyNSwgMTQ3LCA2MywgMjE4LCA3MywgMSwgMjUyLCAxOTEsIAotICAgIDYzLCAyMTgsIDczLCAxLCAyNTIsIDE4LCA2MywgMjE4LCA3MywgMSwgMTg0LCA2MywgMjE4LCA3MywgMSwgMjE1LCAxODMsIAotICAgIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE3NSwgNjMsIDIxOCwgNzMsIDEsIDI0NiwgMzgsIDYzLCAyMTgsIDczLCAxLCAyNDYsIAotICAgIDMzLCA2MywgMjE4LCA3MywgMSwgMjEyLCA2NSwgNjMsIDIxOCwgNzMsIDEsIDIxMCwgODIsIDYzLCAyMTgsIDczLCAxLCAKLSAgICAyMTAsIDExNiwgNjMsIDIxOCwgNzMsIDEsIDI1NSwgMTY2LCA2MywgMjE4LCA3MywgMSwgMTkxLCA2MywgMjE4LCA3MywgMSwgCi0gICAgMjA1LCA2MywgMjE4LCA3MywgMSwgMjMzLCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyMjAsIDEwMiwgNjMsIDIxOCwgNzMsIDEsIAotICAgIDIxOCwgMjIzLCA2MywgMjE4LCA3MywgMSwgMjA2LCA2MywgMjE4LCA3MywgMSwgMTYyLCA2MywgMjE4LCA3MywgMSwgNjEsIAotICAgIDYzLCAyMTgsIDczLCAxLCAyMzMsIDIzMSwgNjMsIDIxOCwgNzMsIDEsIDI0NCwgNzcsIDIxMiwgNjUsIDYzLCAyMTgsIDczLCAKLSAgICAxLCAyNDQsIDc3LCAxOTEsIDYzLCAyMTgsIDczLCAxLCAyNDQsIDc3LCAyMDUsIDYzLCAyMzMsIDIxOCwgMjIyLCAxNDEsIAotICAgIDIzNCwgMTMyLCA2MywgMjMzLCAyMTgsIDIyMiwgMTQxLCAyMzQsIDEzMywgMjUxLCA2OSwgMjMwLCAyMDIsIDI1MSwgNywgCi0gICAgNjMsIDI1MCwgMjUyLCA1LCAxMTQsIDI1MiwgNzAsIDYzLCAyNTAsIDI1MiwgNSwgMTkyLCAyNTIsIDcwLCA2MywgMjUwLCAKLSAgICAyNTIsIDUsIDI1MCwgMjUzLCAyMTcsIDIwLCA2MywgMjUwLCAyNTIsIDUsIDIyMSwgMjA3LCAyNTUsIDE2NSwgNjMsIDE2LCAKLSAgICAyNDYsIDkxLCAyNTEsIDEyNSwgNjMsIDE2LCAyMjMsIDEyOSwgMjIyLCAyMjIsIDYzLCAxNiwgMjI2LCA3NywgMjQzLCA2MywgCi0gICAgNjMsIDE2LCAyMjMsIDEyOSwgMjIyLCAyMjMsIDIyMywgNDIsIDI0MiwgMTQ1LCA2MywgMTYsIDIyNSwgMTEyLCAxOTAsIDYzLCAKLSAgICAxNiwgMjI4LCA1OSwgMjUxLCAxMjUsIDYzLCAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIDIyNywgMTM5LCAyNTUsIDE2MiwgNjMsIAotICAgIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgMjQyLCAxMTcsIDI1NSwgMTYyLCA2MywgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAKLSAgICAyNTEsIDY5LCAyNTUsIDE2MiwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjIzLCAxMzAsIDI0NywgMTU4LCA2MywgNSwgCi0gICAgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDIsIDExNiwgNjMsIDE2NCwgMjUxLCAxMjksIDIyMCwgMywgMjQyLCAyMTUsIDIzMCwgCi0gICAgMjQ4LCAyMjMsIDQxLCA2MywgMTY0LCAyMzAsIDE2MywgMjExLCAwLCAyNDIsIDIxNSwgMjMwLCAyNDgsIDIyMywgNDEsIDYzLCAKLSAgICAxNjQsIDIyNywgMTM5LCAyMTUsIDE3MiwgNjMsIDE2NCwgNjUsIDI1MSwgMTUyLCAyMjIsIDIxMywgMjExLCAwLCAyMzAsIAotICAgIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgMTY0LCAyNDksIDI1MiwgMjUxLCAxNTIsIDIyMiwgMjEzLCAyMTEsIDAsIDIzMCwgCi0gICAgMjQ4LCAyMjAsIDEwOSwgMTg0LCAyMjIsIDI1MCwgMjE3LCAyNTUsIDUwLCAyMzMsIDQ1LCAyMTcsIDI1NSwgNTAsIDIyMiwgCi0gICAgMjUwLCAyMTcsIDI1NSwgNSwgMiwgMjQ3LCAxMTgsIDIzMywgNDUsIDIxNywgMjU1LCA1LCAyLCAyNDcsIDExOCwgNjMsIAotICAgIDE2NCwgMjMzLCA1NSwgMjMxLCA5NiwgMjIyLCAxNDMsIDYzLCAxNjQsIDIxNSwgMjUwLCAyMzEsIDk2LCAyMjIsIDE0MywgCi0gICAgNjgsIDEsIDE3NiwgNjgsIDEsIDIzNCwgMTMyLCA2OCwgMSwgMjQzLCAxMzUsIDY4LCAxLCAyNDIsIDI0OSwgNjgsIDEsIAotICAgIDIyOSwgNzcsIDY4LCAxLCAyNTEsIDMzLCA2OCwgMSwgMjUwLCAxNTcsIDY4LCAxLCAyMzUsIDE0MSwgNjgsIDEsIDIzNSwgCi0gICAgMTE0LCA2OCwgMSwgMjI3LCAxNjUsIDY4LCAxLCAyMjgsIDc2LCA2OCwgMSwgMjE1LCAxNTYsIDY4LCAxLCAyMTUsIDE0NCwgCi0gICAgNjgsIDEsIDI0OCwgMTM1LCA2OCwgMSwgMjQ4LCAxMTksIDY4LCAxLCAyMjgsIDExMCwgNjgsIDEsIDIxNywgMTA1LCA2OCwgCi0gICAgMSwgMjE2LCAyMDgsIDY4LCAxLCAyNDgsIDIyMSwgNjgsIDEsIDI0OCwgMjUsIDY4LCAxLCAxOTcsIDY4LCAxLCAxOTAsIDY4LCAKLSAgICAxLCAyMjUsIDE0NywgNjgsIDEsIDI1MiwgMTkxLCA2OCwgMSwgMjUyLCAxOCwgNjgsIDEsIDE4NCwgNjgsIDEsIDE5MSwgNjgsIAotICAgIDEsIDIwNSwgNjgsIDEsIDIzMywgMTM1LCA2OCwgMSwgMjEyLCA2NSwgNjgsIDEsIDIwNiwgNjgsIDEsIDE2MiwgNjgsIDEsIAotICAgIDIzMiwgMTg0LCA2OCwgMSwgNjEsIDY4LCAxLCAyMjAsIDg2LCA2MSwgNjgsIDEsIDczLCA2OCwgMSwgMjM2LCAzMywgNjgsIAotICAgIDEsIDcwLCA2OCwgMSwgMjE0LCAxMTgsIDY4LCAxLCA3NSwgNjgsIDEsIDIzMCwgMTUxLCA3NSwgNjgsIDEsIDc2LCA2OCwgMSwgCi0gICAgMjUzLCAxOTIsIDY4LCAyNSwgNSwgMjE3LCA2NCwgMjU1LCA3MywgNjgsIDI1LCA1LCAyNTUsIDczLCA2OCwgMjUsIDUsIDczLCAKLSAgICA2OCwgMjUsIDUsIDIzNiwgMzMsIDY4LCAyNSwgNSwgNzAsIDY4LCAyNSwgNSwgMjE0LCAxMTgsIDY4LCAyNSwgNSwgNzUsIAotICAgIDY4LCAyNSwgNSwgMjU0LCAyMDEsIDY4LCAyNSwgNSwgMjMwLCAxNTEsIDIzNiwgMzMsIDY4LCAyNSwgNSwgMjMwLCAxNTEsIAotICAgIDc2LCA2OCwgMjUsIDUsIDE2MCwgNDgsIDY4LCA1LCAyNTQsIDc1LCA2OCwgNSwgNTksIDUxLCA2OCwgNSwgMjEzLCAxNDcsIAotICAgIDY4LCA1LCAyMTMsIDE1MiwgNjgsIDUsIDI1MywgMjM1LCA2OCwgMTE2LCA1LCAxNDcsIDE5MSwgNjgsIDExNiwgNSwgMTQ3LCAKLSAgICAyMDUsIDY4LCAxMTYsIDUsIDE0NywgMjEyLCA2NSwgNjgsIDExNiwgNSwgMTQ3LCAxNjIsIDY4LCAxLCAyNDIsIDEzMiwgCi0gICAgMjA2LCA2OCwgMjEsIDIxMCwgODYsIDY4LCAyMSwgMTEwLCA2OCwgMjEsIDEwNSwgNjgsIDIxLCAxNTgsIDY4LCAyMSwgMTYxLCAKLSAgICA2OCwgMjEsIDE4OSwgNjgsIDIxLCAxOTQsIDY4LCAyMSwgMTk4LCA2OCwgMjEsIDE5NSwgNjgsIDIxLCAyMDAsIDY4LCA1LCAKLSAgICAyMzIsIDE5MiwgMjIxLCAxNzIsIDY4LCA1LCAyMjEsIDE3MiwgNjgsIDE2LCAyMzIsIDE1MywgNjgsIDE2LCAyNDksIDIxMywgCi0gICAgNjgsIDE2LCAyNTQsIDIyMCwgNjgsIDE2LCAyNDMsIDQ4LCA2OCwgMSwgMjIwLCAxMDIsIDY4LCAxLCAyMTgsIDIyMywgNjgsIAotICAgIDEsIDE0OSwgMTUzLCA2OCwgMSwgMTQ5LCAyMjIsIDE4MCwgNjgsIDEsIDE0OSwgMTU2LCA2OCwgMSwgMTQ5LCAyMzIsIDE4NSwgCi0gICAgNjgsIDI1LCA1LCAxNDksIDE1MywgNjgsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA2OCwgMjUsIDUsIDE0OSwgMTU2LCA2OCwgCi0gICAgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDY4LCAxLCAyMzAsIDE1MSwgMjI5LCA3NywgNjgsIDEsIDIzMCwgMTUxLCAyMzUsIAotICAgIDExNCwgNjgsIDEsIDIzMCwgMTUxLCAyNTIsIDExMSwgNjgsIDEsIDIzMCwgMTUxLCAyNTIsIDEwNiwgNjgsIDExNiwgNSwgCi0gICAgMjMwLCAxNTEsIDE0NywgMTk3LCA2OCwgMTE2LCA1LCAyMzAsIDE1MSwgMTQ3LCAxODQsIDY4LCAxMTYsIDUsIDIzMCwgMTUxLCAKLSAgICAxNDcsIDIzMywgMTM1LCA2OCwgMSwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyMjAsIDEwMiwgNjgsIDI1LCA1LCAyMjAsIDEwOCwgCi0gICAgMjM0LCAyMTMsIDI0NSwgNTUsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyNDEsIDI0NywgNjgsIDEzOCwgCi0gICAgMTY0LCAyMjAsIDEwOCwgMjM0LCAyMTMsIDIzNCwgMTgzLCAyMjUsIDEyMSwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMDgsIAotICAgIDIzNCwgMjEzLCAyMTYsIDIwOCwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMjQsIDExNCwgNjgsIDI1LCAKLSAgICA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjQ1LCA1NSwgNjgsIDI1LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIAotICAgIDIxMywgMjE0LCAyMTQsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyOSwgNjgsIDUsIDIxMiwgNywgCi0gICAgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjcsIAotICAgIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyNiwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgCi0gICAgMjEzLCAyMTYsIDI1LCA2OCwgMSwgMjQ1LCAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgMjI4LCAxMTAsIDY4LCAxLCAyNDUsIAotICAgIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTAsIDE3NiwgNjgsIDEsIDI0NSwgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIAotICAgIDI0MiwgMjE3LCA2OCwgMjUsIDUsIDI0MywgNTksIDIzNCwgMjEzLCA3MywgNjgsIDI1LCA1LCAyMzQsIDE4OCwgMjI2LCAKLSAgICAyMzQsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDcwLCA2OCwgMjUsIDUsIDIzNCwgMTg4LCAyNDUsIDIwOSwgNjgsIDEsIDIyMCwgCi0gICAgODYsIDE3NiwgNjgsIDEsIDIyMCwgODYsIDIzNCwgMTMyLCA2OCwgMSwgMjIwLCA4NiwgMjQzLCAxMzUsIDY4LCAxLCAyMjAsIAotICAgIDg2LCAyNTEsIDMzLCA2OCwgMSwgMjIwLCA4NiwgMjEwLCAxMTYsIDY4LCAxLCAyMjAsIDg2LCAyMjcsIDE2NSwgNjgsIDEsIAotICAgIDIyMCwgODYsIDI0OCwgMjIxLCA2OCwgMSwgMjIwLCA4NiwgMTk3LCA2OCwgMSwgMjIwLCA4NiwgMjI1LCAxNDcsIDY4LCAxLCAKLSAgICAyMjAsIDg2LCAyNDQsIDE5NiwgNjgsIDEsIDIyMCwgODYsIDI1MiwgMTkxLCA2OCwgMSwgMjIwLCA4NiwgMjE2LCAyMDgsIAotICAgIDY4LCAxLCAyMjAsIDg2LCAxNjIsIDY4LCAxMTYsIDUsIDIyMCwgODYsIDE0NywgMjEyLCA2NSwgNjgsIDI1LCA1LCAyMjAsIAotICAgIDg2LCAyNTUsIDczLCA2OCwgMjUsIDUsIDIyMCwgODYsIDc1LCA2OCwgMjUsIDUsIDIyMCwgODYsIDE2MCwgNDgsIDY4LCAyNSwgCi0gICAgNSwgMjIwLCA4NiwgNDAsIDIxMSwgMTE3LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyOCwgNjgsIDUsIDIyMCwgODYsIDIxNiwgCi0gICAgMjcsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIDI1LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyNCwgNjgsIDUsIDIyMCwgODYsIAotICAgIDI0OSwgMTUyLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4NiwgMjQ5LCAxNTIsIDIxNiwgMjcsIDY4LCA1LCAyMjAsIDg2LCAKLSAgICAyNDksIDE1MiwgMjQ1LCAxNTMsIDIxNiwgMzAsIDY4LCAxLCAyMjIsIDEyOCwgMjI2LCA2MywgMjQ0LCAxOTYsIDY4LCA1LCAKLSAgICAyMjIsIDEyOCwgMjI2LCA2MywgMjE2LCAyNSwgNjgsIDIyMCwgODYsIDIxLCAyMTAsIDg2LCA2OCwgMjIwLCA4NiwgMjEsIAotICAgIDExMCwgNjgsIDIyMCwgODYsIDIxLCAxMDUsIDY4LCAyMjAsIDg2LCAyMSwgMTU4LCA2OCwgMjIwLCA4NiwgMjEsIDE2MSwgCi0gICAgNjgsIDIyMCwgODYsIDIxLCAxODksIDY4LCAyMjAsIDg2LCAyMSwgMTk0LCA2OCwgMjIwLCA4NiwgMjEsIDE5OCwgNjgsIAotICAgIDIyMCwgODYsIDIxLCAxOTUsIDY4LCAyMjAsIDg2LCAyMSwgMjAwLCA2OCwgNSwgMjM0LCAxMjYsIDIxNiwgMjksIDY4LCA1LCAKLSAgICAyMzQsIDEyNiwgMjE2LCAyNywgNjgsIDI1LCA1LCAyNTQsIDE5MCwgNjEsIDY4LCAyNSwgNSwgMjU0LCAxOTAsIDI1NCwgCi0gICAgMjAxLCA2OCwgMTYsIDIyMCwgODYsIDExMCwgNjgsIDE2LCAyMjAsIDg2LCAyNDUsIDMwLCA5OCwgNiwgMSwgMjU0LCAxMjMsIAotICAgIDk4LCA2LCAxLCAyNTIsIDE1MiwgOTgsIDYsIDEsIDI0MywgMTA2LCA5OCwgNiwgMSwgMjQ3LCAxMjgsIDk4LCA2LCAxLCAKLSAgICAyNDUsIDE1MCwgOTgsIDYsIDEsIDIxMywgMTYwLCA5OCwgNiwgMSwgMjEwLCA4OSwgOTgsIDYsIDEsIDIxNywgNjAsIDk4LCAKLSAgICA2LCAxLCAyMzUsIDI1NSwgOTgsIDYsIDEsIDIzNCwgMjM0LCA5OCwgNiwgMSwgMjMzLCA4MSwgOTgsIDYsIDEsIDIzMSwgCi0gICAgMTg1LCA5OCwgNiwgMSwgMjI5LCAxOTUsIDk4LCA2LCAxLCAyMjYsIDE5NiwgOTgsIDYsIDEsIDIyNiwgMTcsIDk4LCA2LCAxLCAKLSAgICAyMTAsIDc4LCA5OCwgNiwgMSwgMjIzLCAxNzEsIDk4LCA2LCAxLCAyMjEsIDI0MywgOTgsIDYsIDEsIDIxNywgNTAsIDk4LCAKLSAgICA2LCAxLCAyMTQsIDE5MCwgOTgsIDYsIDEsIDIyNSwgMTQwLCA5OCwgNiwgMSwgMjM0LCAxMjEsIDk4LCA2LCAxLCAyNDIsIAotICAgIDI0MSwgOTgsIDYsIDEsIDIyNCwgNzMsIDk4LCA2LCAxLCAyMjAsIDIwLCA5OCwgNiwgMSwgMjUwLCA5NywgOTgsIDYsIDEsIAotICAgIDI1MSwgNywgOTgsIDYsIDEsIDIzNSwgMTAwLCA5OCwgNiwgMSwgMjUwLCA0MCwgOTgsIDYsIDEsIDI1MCwgMTQzLCA5OCwgNiwgCi0gICAgMSwgMjExLCAxNjMsIDk4LCA2LCAxLCAyMzUsIDExMSwgOTgsIDYsIDEsIDI0MiwgNDMsIDk4LCA2LCAxLCAyNDEsIDIzOCwgCi0gICAgOTgsIDYsIDEsIDI0MSwgMTc1LCA5OCwgNiwgMSwgMjEyLCAyMiwgOTgsIDYsIDEsIDI0MiwgNCwgOTgsIDYsIDEsIDI0MSwgCi0gICAgNjUsIDk4LCA2LCAxLCAyMTAsIDI0NiwgOTgsIDYsIDEsIDI1NCwgMjMyLCA5OCwgMSwgMjU0LCAxMjMsIDk4LCAxLCAyNTIsIAotICAgIDE1MiwgOTgsIDEsIDI0MywgMTA2LCA5OCwgMSwgMjQ3LCAxMjgsIDk4LCAxLCAyNDUsIDE1MCwgOTgsIDEsIDIxMywgMTYwLCAKLSAgICA5OCwgMSwgMjEwLCA4OSwgOTgsIDEsIDIxNywgNjAsIDk4LCAxLCAyMzUsIDI1NSwgOTgsIDEsIDIzNCwgMjM0LCA5OCwgMSwgCi0gICAgMjMzLCA4MSwgOTgsIDEsIDIzMSwgMTg1LCA5OCwgMSwgMjI5LCAxOTUsIDk4LCAxLCAyMjYsIDE5NiwgOTgsIDEsIDIyNiwgCi0gICAgMTcsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzEsIDk4LCAxLCAyMjEsIDI0MywgOTgsIDEsIDIxNywgNTAsIDk4LCAKLSAgICAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQwLCA5OCwgMSwgMjM0LCAxMjEsIDk4LCAxLCAyNDIsIDI0MSwgOTgsIDEsIAotICAgIDIyNCwgNzMsIDk4LCAxLCAyMjAsIDIwLCA5OCwgMSwgMjUwLCA5NywgOTgsIDEsIDI1MSwgNywgOTgsIDEsIDIzNSwgMTAwLCAKLSAgICA5OCwgMSwgMjUwLCA0MCwgOTgsIDEsIDI1MCwgMTQzLCA5OCwgMSwgMjExLCAxNjMsIDk4LCAxLCAyMzUsIDExMSwgOTgsIDEsIAotICAgIDI0MiwgNDMsIDk4LCAxLCAyNDEsIDIzOCwgOTgsIDEsIDI0MSwgMTc1LCA5OCwgMSwgMjEyLCAyMiwgOTgsIDEsIDI0MiwgNCwgCi0gICAgOTgsIDEsIDI0MSwgNjUsIDk4LCAxLCAyNDQsIDEyMSwgOTgsIDEsIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNjUsIDk4LCAxLCAKLSAgICAyMTUsIDk0LCAyNDMsIDEwNiwgOTgsIDEsIDI1NCwgMTk2LCA5OCwgMjI2LCAxNSwgMjIwLCAxMzcsIDU4LCAxLCA5OCwgCi0gICAgMjI5LCAxOTUsIDk4LCAxLCAyNTQsIDIzMiwgOTgsIDEsIDI0MiwgMywgNTAsIDk4LCAxLCAyMzMsIDEyNywgNTAsIDI0LCAKLSAgICAxMDAsIDIzNCwgNTgsIDI0LCAxMDAsIDIxOCwgMjE1LCAyNCwgMTAwLCAyMjgsIDIyNiwgMjQsIDEwMCwgMjE2LCAxMDEsIAotICAgIDI0LCAxMDAsIDIxOCwgMjA0LCAyNCwgMTAwLCAyMjMsIDI2LCAyNCwgMTAwLCAyMzAsIDIxNywgMjQsIDEwMCwgMjI1LCA5NSwgCi0gICAgMjQsIDEwMCwgMjE4LCAyMTIsIDI0LCAxMDAsIDIxOSwgMTQ4LCAyNCwgMTAwLCAyMTgsIDIwOSwgMjQsIDEwMCwgMjM2LCAKLSAgICA1NiwgMjQsIDEwMCwgMjUwLCA0NiwgMjQsIDEwMCwgMjE4LCAyMTksIDI0LCAxMDAsIDI1MCwgMTA2LCAyNCwgMTAwLCAyMzQsIAotICAgIDExMCwgMjQsIDEwMCwgMjE2LCAxNzMsIDI0LCAxMDAsIDIyNSwgMTMxLCAyNCwgMTAwLCAyNDEsIDE3MiwgMjQsIDEwMCwgCi0gICAgMjI4LCAyMjIsIDI0LCAxMDAsIDIxOCwgMjEzLCAyNCwgMTAwLCAyMjgsIDIxNiwgMjQsIDEwMCwgMjI4LCAyMjAsIDI0LCAKLSAgICAxMDAsIDIxNiwgOTgsIDI0LCAxMDAsIDIyMywgMTQsIDI0LCAxMDAsIDIxOCwgMjExLCAyNCwgMTAwLCAyMjMsIDI0LCAyNCwgCi0gICAgMTAwLCAyMzQsIDIxOCwgMjQsIDEwMCwgMjMwLCAyMTAsIDI0LCAxMDAsIDIzNCwgMjIxLCAyNCwgMTAwLCAyMjUsIDkwLCAKLSAgICAyNCwgMTAwLCAyMjUsIDg4LCAyNCwgMTAwLCAyMjUsIDc2LCAyNCwgMTAwLCAyMjUsIDg0LCAyNCwgMTAwLCAyMjUsIDgyLCAKLSAgICAyNCwgMTAwLCAyMjUsIDc5LCAyNCwgMTAwLCAyMjUsIDgxLCAyNCwgMTAwLCAyMjUsIDc4LCAyNCwgMTAwLCAyMjUsIDgzLCAKLSAgICAyNCwgMTAwLCAyMjUsIDkzLCAyNCwgMTAwLCAyMjUsIDk0LCAyNCwgMTAwLCAyMjUsIDc3LCAyNCwgMTAwLCAyMjUsIDg3LCAKLSAgICAyNCwgMTAwLCAyMzQsIDIxOSwgMjQsIDEwMCwgMjM0LCAyMTcsIDI0LCAxMDAsIDIxOSwgMTQxLCAyNCwgMTAwLCAyMTksIAotICAgIDEzOSwgMjQsIDEwMCwgMjE5LCAxMzEsIDI0LCAxMDAsIDIxOSwgMTM0LCAyNCwgMTAwLCAyMTksIDE0MCwgMjQsIDEwMCwgCi0gICAgMjE5LCAxMzYsIDI0LCAxMDAsIDIxOSwgMTM1LCAyNCwgMTAwLCAyMTksIDEzMywgMjQsIDEwMCwgMjE5LCAxNDQsIDI0LCAKLSAgICAxMDAsIDIxOSwgMTQ2LCAyNCwgMTAwLCAyMTksIDE0NywgMjQsIDEwMCwgMjE5LCAxNDIsIDI0LCAxMDAsIDIxOSwgMTMyLCAKLSAgICAyNCwgMTAwLCAyMTksIDEzNywgMjQsIDEwMCwgMjE5LCAxNDUsIDI0LCAxMDAsIDI1MCwgOTAsIDI0LCAxMDAsIDI1MCwgODgsIAotICAgIDI0LCAxMDAsIDI1MCwgMTY4LCAyNCwgMTAwLCAyNTAsIDE2NiwgMjQsIDEwMCwgMjI2LCAzMiwgMjQsIDEwMCwgMjM2LCA1MSwgCi0gICAgMjQsIDEwMCwgMjM2LCA0MiwgMjQsIDEwMCwgMjM2LCA1MCwgMjQsIDEwMCwgMjM2LCA0NywgMjQsIDEwMCwgMjM2LCA0NSwgCi0gICAgMjQsIDEwMCwgMjM2LCA0OSwgMjQsIDEwMCwgMjE4LCAyMTYsIDI0LCAxMDAsIDIzNiwgNTQsIDI0LCAxMDAsIDIzNiwgNTUsIAotICAgIDI0LCAxMDAsIDIzNiwgNDMsIDI0LCAxMDAsIDIzNiwgNDgsIDI0LCAxMDAsIDIxMSwgMjYsIDI0LCAxMDAsIDI1MCwgNDUsIAotICAgIDI0LCAxMDAsIDI1MCwgOTEsIDI0LCAxMDAsIDI1MCwgODksIDI0LCAxMDAsIDI1MCwgMTY5LCAyNCwgMTAwLCAyNTAsIDE2NywgCi0gICAgMjQsIDEwMCwgMjUwLCAxMDQsIDI0LCAxMDAsIDI1MCwgMTA1LCAyNCwgMTAwLCAyNTAsIDkyLCAyNCwgMTAwLCAyNTAsIAotICAgIDE3MCwgMjQsIDEwMCwgMjI1LCAxMjksIDI0LCAxMDAsIDIzNCwgMjIwLCAyNCwgMTAwLCAyMTgsIDIxNywgMjQsIDEwMCwgCi0gICAgMjExLCAzMiwgMjQsIDEwMCwgMjM0LCA0OSwgMjQsIDEwMCwgMjI4LCAyMTgsIDI0LCAxMDAsIDIyOCwgMjI0LCAyNCwgMTAwLCAKLSAgICAyMjgsIDIyMywgMjQsIDEwMCwgMjE2LCA5NSwgMjQsIDEwMCwgMjQ0LCAxMDMsIDI0LCAxNDMsIDI0NCwgMTAzLCAyNCwgCi0gICAgMTQzLCA2MSwgMjQsIDE0MywgMjU0LCAyNDMsIDI0LCAxNDMsIDE5MSwgMjQsIDE0MywgMjExLCA5MiwgMjQsIDE0MywgMjQ1LCAKLSAgICAxMTcsIDI0LCAxNDMsIDc1LCAyNCwgMTQzLCAyMTEsIDM2LCAyNCwgMTQzLCAyMTEsIDQ3LCAyNCwgMTQzLCA3NiwgMjQsIAotICAgIDE0MywgMjEyLCA2NSwgMjQsIDE0MywgMjEyLCA2MiwgMjQsIDE0MywgMjI2LCAyMzQsIDI0LCAxNDMsIDIxMCwgMjQ0LCAyNCwgCi0gICAgMTQzLCA3MCwgMjQsIDE0MywgMjEyLCAxMSwgMjQsIDE0MywgMjEyLCAyMiwgMjQsIDE0MywgMjExLCAyNTAsIDI0LCAxNDMsIAotICAgIDIxMCwgMjEyLCAyNCwgMTQzLCAyNDUsIDU1LCAyNCwgMTQzLCAyMTEsIDgsIDI0LCAxNDMsIDczLCAyNCwgMTQzLCAyNTUsIAotICAgIDE1NywgMjQsIDE0MywgMjU1LCAxNTYsIDI0LCAxNDMsIDIxMSwgMTA2LCAyNCwgMTQzLCAyMTEsIDEwNCwgMjQsIDE0MywgCi0gICAgMjQ1LCAxMTUsIDI0LCAxNDMsIDI0NSwgMTE0LCAyNCwgMTQzLCAyNDUsIDExNiwgMjQsIDE0MywgMjExLCAzNSwgMjQsIAotICAgIDE0MywgMjExLCAzNCwgMjQsIDE0MywgMjI3LCA4NCwgMjQsIDE0MywgMjI3LCA4NSwgMjQsIDE0MywgMjI3LCA3OCwgMjQsIAotICAgIDE0MywgMjI3LCA4MywgMjQsIDE0MywgMjI3LCA4MSwgMjQsIDE0MywgMjEwLCAyMzgsIDI0LCAxNDMsIDIxMCwgMjM3LCAyNCwgCi0gICAgMTQzLCAyMTAsIDIzNiwgMjQsIDE0MywgMjEwLCAyMzksIDI0LCAxNDMsIDIxMCwgMjQwLCAyNCwgMTQzLCAyMTUsIDMwLCAKLSAgICAyNCwgMTQzLCAyMTUsIDI5LCAyNCwgMTQzLCAyMTUsIDI3LCAyNCwgMTQzLCAyMTUsIDI0LCAyNCwgMTQzLCAyMTUsIDI1LCAKLSAgICAyNCwgMTQzLCAyMTAsIDIxMSwgMjQsIDE0MywgMjEwLCAyMDgsIDI0LCAxNDMsIDIxMCwgMjA5LCAyNCwgMTQzLCAyMTAsIAotICAgIDIwMywgMjQsIDE0MywgMjEwLCAyMDQsIDI0LCAxNDMsIDIxMCwgMjA1LCAyNCwgMTQzLCAyMTAsIDIwNywgMjQsIDE0MywgCi0gICAgMjQ1LCA0OSwgMjQsIDE0MywgMjQ1LCA1MSwgMjQsIDE0MywgMjExLCA3LCAyNCwgMTQzLCAyNDAsIDE1MywgMjQsIDE0MywgCi0gICAgMjQwLCAxNDUsIDI0LCAxNDMsIDI0MCwgMTQ4LCAyNCwgMTQzLCAyNDAsIDE0NiwgMjQsIDE0MywgMjQwLCAxNTAsIDI0LCAKLSAgICAxNDMsIDI0MCwgMTUyLCAyNCwgMTQzLCAyNTQsIDM0LCAyNCwgMTQzLCAyNTQsIDMxLCAyNCwgMTQzLCAyNTQsIDI5LCAyNCwgCi0gICAgMTQzLCAyNTQsIDMwLCAyNCwgMTQzLCAyMTgsIDIyMCwgMjQsIDE0MywgMjU1LCAxNTgsIDI0LCAxNDMsIDIxMSwgMTA1LCAKLSAgICAyNCwgMTQzLCAyMTEsIDMzLCAyNCwgMTQzLCAyMjcsIDgwLCAyNCwgMTQzLCAyMjcsIDc5LCAyNCwgOTAsIDIzNCwgNTgsIAotICAgIDI0LCA5MCwgMjE4LCAyMTUsIDI0LCA5MCwgMjM0LCA1MSwgMjQsIDkwLCAyMjgsIDIyNiwgMjQsIDkwLCAyMjgsIDIyNCwgCi0gICAgMjQsIDkwLCAyMjgsIDIyMywgMjQsIDkwLCAyMTYsIDEwMSwgMjQsIDkwLCAyMjMsIDI2LCAyNCwgOTAsIDIyMywgMjEsIDI0LCAKLSAgICA5MCwgMjIzLCAxOCwgMjQsIDkwLCAyMjMsIDExLCAyNCwgOTAsIDIyMywgNiwgMjQsIDkwLCAyMjMsIDEsIDI0LCA5MCwgCi0gICAgMjIzLCAxMiwgMjQsIDkwLCAyMjMsIDI0LCAyNCwgOTAsIDIzMCwgMjE3LCAyNCwgOTAsIDIyNSwgOTUsIDI0LCA5MCwgMjI1LCAKLSAgICA4NCwgMjQsIDkwLCAyMTksIDE0OCwgMjQsIDkwLCAyMTgsIDIwOSwgMjQsIDkwLCAyMzYsIDU2LCAyNCwgOTAsIDI1MCwgNDYsIAotICAgIDI0LCA5MCwgMjUwLCAxMDYsIDI0LCA5MCwgMjM0LCAxMTAsIDI0LCA5MCwgMjE2LCAxNzMsIDI0LCA5MCwgMjI1LCAxMzEsIAotICAgIDI0LCA5MCwgMjQxLCAxNzIsIDI0LCA5MCwgMjM0LCA1MiwgMjQsIDkwLCAyMzQsIDUwLCAyNCwgOTAsIDIyOCwgMjIyLCAyNCwgCi0gICAgOTAsIDIyOCwgMjE2LCAyNCwgOTAsIDIyOCwgMjE4LCAyNCwgOTAsIDIyOCwgMjIxLCAyNCwgOTAsIDIyOCwgMjE3LCAyNCwgCi0gICAgOTAsIDIxNiwgOTgsIDI0LCA5MCwgMjE2LCA5NSwgMjQsIDkwLCAyMjMsIDE5LCAyNCwgOTAsIDIyMywgMTQsIDI0LCA5MCwgCi0gICAgMjIzLCAwLCAyNCwgOTAsIDIyMiwgMjU1LCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgOTAsIDIyMywgMTYsIDI0LCA5MCwgMjIzLCAKLSAgICAxNSwgMjQsIDkwLCAyMjMsIDgsIDI0LCA5MCwgMjIzLCAxMCwgMjQsIDkwLCAyMjMsIDIzLCAyNCwgOTAsIDIyMywgMywgMjQsIAotICAgIDkwLCAyMjMsIDEzLCAyNCwgOTAsIDIyMywgMjIsIDI0LCA5MCwgMjIyLCAyNTQsIDI0LCA5MCwgMjMwLCAyMTMsIDI0LCA5MCwgCi0gICAgMjMwLCAyMDgsIDI0LCA5MCwgMjMwLCAyMTAsIDI0LCA5MCwgMjMwLCAyMDcsIDI0LCA5MCwgMjMwLCAyMDUsIDI0LCA5MCwgCi0gICAgMjMwLCAyMTEsIDI0LCA5MCwgMjMwLCAyMTYsIDI0LCA5MCwgMjMwLCAyMTQsIDI0LCA5MCwgMjM0LCAyMjEsIDI0LCA5MCwgCi0gICAgMjI1LCA4NiwgMjQsIDkwLCAyMjUsIDg3LCAyNCwgOTAsIDIyNSwgOTIsIDI0LCA5MCwgMjM0LCAyMTksIDI0LCA5MCwgMjE5LCAKLSAgICAxNDEsIDI0LCA5MCwgMjE5LCAxMzEsIDI0LCA5MCwgMjE5LCAxMzQsIDI0LCA5MCwgMjE5LCAxMzYsIDI0LCA5MCwgMjI2LCAKLSAgICAzMiwgMjQsIDkwLCAyMzYsIDUxLCAyNCwgOTAsIDIzNiwgNDQsIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjM2LCA1MiwgCi0gICAgMjQsIDkwLCAyMTEsIDI2LCAyNCwgOTAsIDIxMSwgMjIsIDI0LCA5MCwgMjExLCAyMywgMjQsIDkwLCAyMjUsIDEyOSwgMjQsIAotICAgIDkwLCAyMzQsIDIyMCwgMjQsIDkwLCAyNDEsIDE3MCwgMjQsIDkwLCAyNDEsIDE2OCwgMjQsIDkwLCAyNDEsIDE3MSwgMjQsIAotICAgIDkwLCAyNDEsIDE2OSwgMjQsIDkwLCAyMTEsIDMyLCAyNCwgOTAsIDIzNCwgNTQsIDI0LCA5MCwgMjM0LCA1MywgMjQsIDkwLCAKLSAgICAyMzQsIDU3LCAyNCwgOTAsIDIzNCwgNTUsIDI0LCA5MCwgMjM0LCA1NiwgMjQsIDkwLCAyMTgsIDIxMywgMjksIDMsIDE2MiwgCi0gICAgMjksIDMsIDI0MCwgMjIyLCAyOSwgMywgMjQxLCAxODAsIDI5LCAzLCAyNDIsIDQ2LCAyOSwgMywgMjQxLCAyMjAsIDI5LCAzLCAKLSAgICAyNDEsIDIzOCwgMjksIDMsIDI0MSwgNjgsIDI5LCAzLCAyNDEsIDY3LCAyOSwgMywgMjMzLCAxMzUsIDI5LCAzLCAyMzIsIAotICAgIDk4LCAyOSwgMywgMjMyLCAyNDEsIDI5LCAzLCAyMzMsIDEzNCwgMjksIDMsIDIzMywgNTAsIDI5LCAzLCAyMzMsIDU4LCAyOSwgCi0gICAgMywgMjMyLCAxNTYsIDI5LCAzLCAyMzIsIDcwLCAyOSwgMywgMjQxLCAxODksIDI5LCAzLCAyNDEsIDE4MywgMjksIDMsIAotICAgIDI0MSwgMTg1LCAyOSwgMywgMjQxLCAxODgsIDI5LCAzLCAyNDEsIDE4NiwgMjksIDMsIDI0MSwgMTg3LCAyOSwgMywgMjQxLCAKLSAgICAxODQsIDI5LCAzLCAyNDEsIDE4MiwgMjksIDMsIDE4NCwgMjksIDMsIDIzMCwgMTAyLCAyOSwgMywgMjMwLCAyMzAsIDI5LCAKLSAgICAzLCAyMzEsIDIzNywgMjksIDMsIDIzMSwgODAsIDI5LCAzLCAyMzEsIDkxLCAyOSwgMywgMjMwLCAxNjEsIDI5LCAzLCAyMzAsIAotICAgIDQyLCAyOSwgMywgMjE3LCAxNjMsIDI5LCAzLCAyMTcsIDE1NywgMjksIDMsIDIxNywgMTU5LCAyOSwgMywgMjE3LCAxNjIsIAotICAgIDI5LCAzLCAyMTcsIDE2MCwgMjksIDMsIDIxNywgMTYxLCAyOSwgMywgMjE3LCAxNTgsIDI5LCAzLCAyMTcsIDE1NiwgMjksIAotICAgIDMsIDIwNSwgMjksIDMsIDIyMiwgMTQwLCAyOSwgMywgMjIzLCAzNSwgMjksIDMsIDIyMywgMTg0LCAyOSwgMywgMjIzLCAKLSAgICAxMDgsIDI5LCAzLCAyMjMsIDEyOCwgMjksIDMsIDIyMiwgMjExLCAyOSwgMywgMjIyLCAxMDksIDI5LCAzLCAyMDYsIDI5LCAKLSAgICAzLCAyMTgsIDgzLCAyOSwgMywgMjE5LCAxOTEsIDI5LCAzLCAyMjIsIDMxLCAyOSwgMywgMjIxLCAxNzAsIDI5LCAzLCAyMjEsIAotICAgIDE4MSwgMjksIDMsIDIxOSwgNTgsIDI5LCAzLCAyMTcsIDI1MywgMjksIDMsIDIyMCwgMTAyLCAyOSwgMywgMjE5LCAyMjUsIAotICAgIDI5LCAzLCAyMjAsIDMyLCAyOSwgMywgMjIwLCA5OCwgMjksIDMsIDIyMCwgNjEsIDI5LCAzLCAyMjAsIDYzLCAyOSwgMywgCi0gICAgMjIwLCA3LCAyOSwgMywgMjE5LCAyMDgsIDI5LCAzLCAyMjQsIDg4LCAyOSwgMywgMjI0LCAzMCwgMjksIDMsIDIyNCwgNTMsIAotICAgIDI5LCAzLCAyMjQsIDg3LCAyOSwgMywgMjI0LCA2OCwgMjksIDMsIDIyNCwgNjksIDI5LCAzLCAyMjQsIDQyLCAyOSwgMywgCi0gICAgMjI0LCA0MSwgMjksIDMsIDIyMywgMjQyLCAyOSwgMywgMjIzLCAyMzgsIDI5LCAzLCAyMjMsIDI0MSwgMjksIDMsIDIyMywgCi0gICAgMjM5LCAyOSwgMywgMjIzLCAyNDAsIDI5LCAzLCAyMjQsIDY1LCAyOSwgMywgMjI0LCA1OSwgMjksIDMsIDIyNCwgNjEsIDI5LCAKLSAgICAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2MiwgMjksIDMsIDIyNCwgNjMsIDI5LCAzLCAyMjQsIDYwLCAyOSwgMywgMjI0LCAKLSAgICA1OCwgMjksIDMsIDIyNCwgNTQsIDI5LCAzLCAyMjQsIDU3LCAyOSwgMywgMjI0LCA1NSwgMjksIDMsIDIyNCwgNTYsIDI5LCAKLSAgICAzLCAyNTIsIDE5MSwgMjksIDMsIDI1MSwgMTI1LCAyOSwgMywgMjUyLCA2LCAyOSwgMywgMjUyLCAxODksIDI5LCAzLCAyNTIsIAotICAgIDY2LCAyOSwgMywgMjUyLCA3NSwgMjksIDMsIDI1MSwgMjA1LCAyOSwgMywgMjUxLCA4MywgMjksIDMsIDIxNCwgMjcsIDI5LCAKLSAgICAzLCAyMTIsIDExNiwgMjksIDMsIDIxMywgMTc2LCAyOSwgMywgMjE0LCAyNiwgMjksIDMsIDIxMywgMjUwLCAyOSwgMywgCi0gICAgMjEzLCAyNTUsIDI5LCAzLCAyMTMsIDEzOCwgMjksIDMsIDIxMiwgMTA3LCAyOSwgMywgMjE3LCAxMDUsIDI5LCAzLCAyMTUsIAotICAgIDExOCwgMjksIDMsIDIxNiwgMTE3LCAyOSwgMywgMjE3LCAxMDEsIDI5LCAzLCAyMTcsIDExLCAyOSwgMywgMjE3LCAyMiwgCi0gICAgMjksIDMsIDExMSwgMjksIDMsIDIxNSwgODAsIDI5LCAzLCAyNTEsIDMzLCAyOSwgMywgMjQ5LCAxMTIsIDI5LCAzLCAyNTAsIAotICAgIDUxLCAyOSwgMywgMjUxLCAzMiwgMjksIDMsIDI1MCwgMTgyLCAyOSwgMywgMjUwLCAxOTAsIDI5LCAzLCAyNDksIDIzOCwgCi0gICAgMjksIDMsIDI0OSwgODEsIDI5LCAzLCAyMTEsIDE2NSwgMjksIDMsIDIxMSwgMTQxLCAyOSwgMywgMjExLCAxNTcsIDI5LCAzLCAKLSAgICAyMTEsIDE2NCwgMjksIDMsIDIxMSwgMTYxLCAyOSwgMywgMjExLCAxNjIsIDI5LCAzLCAyMTEsIDE0OCwgMjksIDMsIDIxMSwgCi0gICAgMTQ3LCAyOSwgMywgMjExLCAxMzYsIDI5LCAzLCAyMTEsIDEzMiwgMjksIDMsIDIxMSwgMTM1LCAyOSwgMywgMjExLCAxMzMsIAotICAgIDI5LCAzLCAyMTEsIDEzNCwgMjksIDMsIDE5NywgMjksIDMsIDIyNywgMjM3LCAyOSwgMywgMjI4LCAyMzMsIDI5LCAzLCAKLSAgICAyMjksIDIyNSwgMjksIDMsIDIyOSwgMTAzLCAyOSwgMywgMjI5LCAxMDcsIDI5LCAzLCAyMjgsIDc0LCAyOSwgMywgMjI3LCAKLSAgICAxNzQsIDI5LCAzLCAyMjcsIDE2NSwgMjksIDMsIDIyNywgMTI4LCAyOSwgMywgMjI3LCAxNDgsIDI5LCAzLCAyMjcsIDE2NCwgCi0gICAgMjksIDMsIDIyNywgMTU1LCAyOSwgMywgMjI3LCAxNTYsIDI5LCAzLCAyMjcsIDEzNCwgMjksIDMsIDIyNywgMTE5LCAyOSwgCi0gICAgMywgMjQyLCAxODAsIDYxLCAyOSwgMywgMjQyLCAxODAsIDcwLCAyOSwgMywgMjQyLCAxODAsIDczLCAyOSwgMywgMjQyLCAKLSAgICAxODAsIDI1NSwgNzMsIDI5LCAzLCAyNDIsIDE4MCwgMjQ1LCAyMDksIDI5LCAzLCAyNDIsIDE4MCwgNzUsIDI5LCAzLCAyNDIsIAotICAgIDE4MCwgNzYsIDI5LCAzLCAyNDIsIDE4MCwgMjEyLCA2NSwgMjksIDMsIDE3NiwgMjksIDMsIDIzMywgMjE3LCAyOSwgMywgCi0gICAgMjM0LCA5MiwgMjksIDMsIDIzNSwgMTAsIDI5LCAzLCAyMzQsIDE4MSwgMjksIDMsIDIzNCwgMTgyLCAyOSwgMywgMjM0LCAKLSAgICAyOCwgMjksIDMsIDIzNCwgMjcsIDI5LCAzLCAyMzMsIDE4MiwgMjksIDMsIDIzMywgMTc2LCAyOSwgMywgMjMzLCAxODEsIAotICAgIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTc4LCAyOSwgMywgMjMzLCAxNzEsIDI5LCAzLCAyMzMsIDE2NSwgMjksIAotICAgIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNzAsIDI5LCAzLCAyMzMsIDE2OCwgMjksIDMsIDIzMywgMTY5LCAyOSwgMywgCi0gICAgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2NCwgMjksIDMsIDIzMywgMTYwLCAyOSwgMywgMjMzLCAxNjMsIDI5LCAzLCAyMzMsIAotICAgIDE2MSwgMjksIDMsIDIzMywgMTYyLCAyOSwgMywgMjEyLCA2NSwgMjksIDMsIDIxMSwgMTk1LCAyOSwgMywgMjExLCAyNTAsIAotICAgIDI5LCAzLCAyMTIsIDY0LCAyOSwgMywgMjEyLCAxNywgMjksIDMsIDIxMiwgMjIsIDI5LCAzLCAyMTEsIDIyNywgMjksIDMsIAotICAgIDIxMSwgMjI2LCAyOSwgMywgMjI1LCAxMzksIDYxLCAyOSwgMywgMjI1LCAxMzksIDcwLCAyOSwgMywgMjI1LCAxMzksIDczLCAKLSAgICAyOSwgMywgMjI1LCAxMzksIDI1NSwgNzMsIDI5LCAzLCAyMjUsIDEzOSwgMjQ1LCAyMDksIDI5LCAzLCAyMjUsIDEzOSwgNzUsIAotICAgIDI5LCAzLCAyMjUsIDEzOSwgNzYsIDI5LCAzLCAyMTAsIDExNiwgMjksIDMsIDIxMCwgMTMsIDI5LCAzLCAyMTAsIDQ0LCAyOSwgCi0gICAgMywgMjEwLCAxMTUsIDI5LCAzLCAyMTAsIDkyLCAyOSwgMywgMjEwLCA5NCwgMjksIDMsIDIxMCwgMjMsIDI5LCAzLCAyMTAsIAotICAgIDAsIDI5LCAzLCAyMTAsIDgyLCAyOSwgMywgMjEwLCA2MiwgMjksIDMsIDIxMCwgNjksIDI5LCAzLCAyMTAsIDgxLCAyOSwgMywgCi0gICAgMjEwLCA3MywgMjksIDMsIDIxMCwgNzQsIDI5LCAzLCAyMTAsIDY3LCAyOSwgMywgMjEwLCA1MywgMjksIDMsIDE5MSwgMjksIAotICAgIDMsIDIxMCwgMjEyLCAyOSwgMywgMjExLCA4LCAyOSwgMywgMjExLCAxMDMsIDI5LCAzLCAyMTEsIDQ0LCAyOSwgMywgMjExLCAKLSAgICA0NywgMjksIDMsIDIxMCwgMjQ0LCAyOSwgMywgMjEwLCAyMzUsIDI5LCAzLCAyNDgsIDIyMSwgMjksIDMsIDI0NiwgNzgsIAotICAgIDI5LCAzLCAyNDgsIDMsIDI5LCAzLCAyNDgsIDIyMCwgMjksIDMsIDI0OCwgNzcsIDI5LCAzLCAyNDgsIDkwLCAyOSwgMywgCi0gICAgMjQ3LCAxNDUsIDI5LCAzLCAyNDYsIDQ3LCAyOSwgMywgMjQ4LCAxMzUsIDI5LCAzLCAyNDgsIDEwMCwgMjksIDMsIDI0OCwgCi0gICAgMTEyLCAyOSwgMywgMjQ4LCAxMzQsIDI5LCAzLCAyNDgsIDEyMiwgMjksIDMsIDI0OCwgMTIzLCAyOSwgMywgMjQ4LCAxMDUsIAotICAgIDI5LCAzLCAyNDgsIDkxLCAyOSwgMywgMjM1LCAxNDEsIDI5LCAzLCAyMzUsIDUxLCAyOSwgMywgMjM1LCAxMDgsIDI5LCAzLCAKLSAgICAyMzUsIDE0MCwgMjksIDMsIDIzNSwgMTI0LCAyOSwgMywgMjM1LCAxMjYsIDI5LCAzLCAyMzUsIDY4LCAyOSwgMywgMjM1LCAKLSAgICAzMSwgMjksIDMsIDI0MywgMTM1LCAyOSwgMywgMjQyLCAxMTMsIDI5LCAzLCAyNDIsIDIxNCwgMjksIDMsIDI0MywgMTMyLCAKLSAgICAyOSwgMywgMjQzLCA1NSwgMjksIDMsIDI0MywgNjIsIDI5LCAzLCAyNDIsIDE3NCwgMjksIDMsIDI0MiwgMTczLCAyOSwgMywgCi0gICAgMjQyLCA3OCwgMjksIDMsIDI0MiwgNzQsIDI5LCAzLCAyNDIsIDc3LCAyOSwgMywgMjQyLCA3NSwgMjksIDMsIDI0MiwgNzYsIAotICAgIDI5LCAzLCAyNDMsIDI5LCAyOSwgMywgMjQzLCA5LCAyOSwgMywgMjQzLCAxOSwgMjksIDMsIDI0MywgMjgsIDI5LCAzLCAKLSAgICAyNDMsIDIzLCAyOSwgMywgMjQzLCAyNCwgMjksIDMsIDI0MywgMTMsIDI5LCAzLCAyNDIsIDI1NCwgMjksIDMsIDIxNiwgCi0gICAgMjA4LCAyOSwgMywgMjE2LCAxMzYsIDI5LCAzLCAyMTYsIDE3NSwgMjksIDMsIDIxNiwgMjA3LCAyOSwgMywgMjE2LCAxOTQsIAotICAgIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTU2LCAyOSwgMywgMjE2LCAxMjgsIDI5LCAzLCAyNTAsIDE1NywgMjksIAotICAgIDMsIDI1MCwgNjksIDI5LCAzLCAyNTAsIDExMCwgMjksIDMsIDI1MCwgMTU2LCAyOSwgMywgMjUwLCAxMjgsIDI5LCAzLCAKLSAgICAyNTAsIDEzMSwgMjksIDMsIDI1MCwgODYsIDI5LCAzLCAyNTAsIDU4LCAyOSwgMywgMjI1LCAxNDcsIDI5LCAzLCAyMjUsIAotICAgIDExNCwgMjksIDMsIDIyNSwgMTMzLCAyOSwgMywgMjI1LCAxNDYsIDI5LCAzLCAyMjUsIDEzNSwgMjksIDMsIDIyNSwgMTM2LCAKLSAgICAyOSwgMywgMjI1LCAxMjEsIDI5LCAzLCAyMjUsIDExMCwgMjksIDMsIDIxNSwgMTgzLCAyOSwgMywgMjE1LCAxNjMsIDI5LCAKLSAgICAzLCAyMTUsIDE2NywgMjksIDMsIDIxNSwgMTgyLCAyOSwgMywgMjE1LCAxNzcsIDI5LCAzLCAyMTUsIDE3OCwgMjksIDMsIAotICAgIDIxNSwgMTY2LCAyOSwgMywgMjE1LCAxNjEsIDI5LCAzLCAyMTUsIDM5LCAyOSwgMywgMjE1LCAzMSwgMjksIDMsIDIxNSwgCi0gICAgMzUsIDI5LCAzLCAyMTUsIDM4LCAyOSwgMywgMjE1LCAzNiwgMjksIDMsIDIxNSwgMzcsIDI5LCAzLCAyMTUsIDMzLCAyOSwgCi0gICAgMywgMjE1LCAzMiwgMjksIDMsIDI0NCwgMTk2LCAyOSwgMywgMjQzLCAyMzQsIDI5LCAzLCAyNDQsIDEyMSwgMjksIDMsIAotICAgIDI0NCwgMTk1LCAyOSwgMywgMjQ0LCAxNDcsIDI5LCAzLCAyNDQsIDE1NCwgMjksIDMsIDI0NCwgNDMsIDI5LCAzLCAyNDMsIAotICAgIDIxMywgMjksIDMsIDE5MCwgMjksIDMsIDIyNCwgMTUwLCAyOSwgMywgMjI1LCAxMDgsIDI5LCAzLCAyMjYsIDg5LCAyOSwgMywgCi0gICAgMjI1LCAyMTEsIDI5LCAzLCAyMjUsIDIyMSwgMjksIDMsIDIyNSwgMTYsIDI5LCAzLCAyMjQsIDExNCwgMjksIDMsIDIyMiwgCi0gICAgOTksIDI5LCAzLCAyMzAsIDMxLCAyOSwgMywgMjQzLCAyMDcsIDI5LCAzOCwgMjQzLCA1MywgMjIsIDI1LCAyMzMsIDIzLCAKLSAgICA3OCwgMjksIDM4LCAyNSwgMjMzLCAyMywgNzgsIDI5LCAzOCwgMjQzLCA1MywgNzgsIDI5LCAyMjEsIDE3MywgNzgsIDI5LCAKLSAgICAyMTEsIDIwOCwgMjksIDI0MywgMjI5LCAyMTgsIDEyOSwgMjksIDI0OSwgMjE5LCAyOSwgMjIwLCAxNTAsIDI5LCAyNDksIAotICAgIDIyNiwgMjksIDIyNCwgMTk5LCAyNDksIDIyNiwgMjksIDIyNCwgMTMsIDc4LCAyOSwgMjI2LCAxNSwgMjIwLCAxMzcsIDI5LCAKLSAgICAyMSwgMTEwLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgMTYxLCAyOSwgMjEsIDE4OSwgMjksIDIxLCAxOTQsIAotICAgIDI5LCAyMSwgMTk4LCAyOSwgMjEsIDE5NSwgMjksIDIxLCAyMDAsIDI5LCA1NCwgMjE2LCAyNDcsIDI5LCA1NCwgMjE1LCA3MywgCi0gICAgMjksIDU0LCAyMTYsIDE2MiwgMjksIDU0LCAyNDQsIDE1LCAyOSwgNTQsIDI0NCwgMTE0LCAyOSwgNTQsIDIxOSwgMTExLCAKLSAgICAyOSwgNTQsIDIyMCwgMTE2LCAyOSwgNTQsIDI0NSwgMTg0LCAyOSwgNTQsIDIyOCwgMTk1LCAyOSwgNTQsIDI0MCwgMjEwLCAKLSAgICAyOSwgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjksIDMsIDIyMSwgMTc3LCAyMzAsIDQyLCAyOSwgMywgMjMwLCAzOCwgMjksIAotICAgIDMsIDIzMCwgMzksIDI5LCAzLCAyMzAsIDQwLCAyOSwgMywgMjIxLCAxNzcsIDI1MSwgODMsIDI5LCAzLCAyNTEsIDgwLCAyOSwgCi0gICAgMywgMjUxLCA4MSwgMjksIDMsIDI1MSwgODIsIDI5LCAzLCAyMjEsIDE3NywgMjQzLCAyMTMsIDI5LCAzLCAyNDMsIDIwOSwgCi0gICAgMjksIDMsIDI0MywgMjEwLCAyOSwgMywgMjQzLCAyMTEsIDI5LCAzLCAyMjEsIDE3NywgMjI0LCAxMTQsIDI5LCAzLCAyMjQsIAotICAgIDExMCwgMjksIDMsIDIyNCwgMTExLCAyOSwgMywgMjI0LCAxMTIsIDI5LCAyMTYsIDMxLCAxNjQsIDIxMCwgMjQ3LCAyOSwgCi0gICAgMjE2LCAzMSwgMTY0LCAyNDgsIDQxLCAyOSwgMjE2LCAzMSwgMTY0LCAyMjIsIDIzOCwgMjksIDIxNiwgMzEsIDE2NCwgMjE5LCAKLSAgICAyNTEsIDIyMiwgMjM4LCAyOSwgMjE2LCAzMSwgMTY0LCAyNDcsIDIzNSwgMjksIDIxNiwgMzEsIDE2NCwgMjM0LCAxNjQsIAotICAgIDI5LCAyMTYsIDMxLCAxNjQsIDI1MCwgOTQsIDI5LCAyMTYsIDMxLCAxNjQsIDI0MSwgMTc3LCAyOSwgMjE2LCAzMSwgMTY0LCAKLSAgICAyNDgsIDQwLCAyOSwgMjE2LCAzMSwgMTY0LCAyMzMsIDE5NCwgMTY5LCAxLCA2MSwgMTY5LCAxLCA3NSwgMTY5LCAxLCA3MywgCi0gICAgMTY5LCAxLCA3NiwgMTY5LCAxLCA3MCwgMTY5LCAxLCAyMTQsIDEwNSwgMTY5LCAxLCAyNDMsIDEzNSwgMTY5LCAxLCAxNzYsIAotICAgIDE2OSwgMSwgMjQzLCA2MiwgMTY5LCAxLCAyNDIsIDIxNCwgMTY5LCAxLCAyNDIsIDE3NCwgMTY5LCAxLCAyNDIsIDExMywgCi0gICAgMTY5LCAxLCAyNDIsIDc5LCAxNjksIDEsIDE2MiwgMTY5LCAxLCAyNDEsIDIzOCwgMTY5LCAxLCAyNDEsIDE4MCwgMTY5LCAxLCAKLSAgICAyNDEsIDY4LCAxNjksIDEsIDI0MCwgMjIyLCAxNjksIDEsIDI0MCwgMjAxLCAxNjksIDEsIDIzMywgMTM1LCAxNjksIDEsIAotICAgIDIzMywgNTgsIDE2OSwgMSwgMjMyLCAyNDEsIDE2OSwgMSwgMjMyLCAxNTYsIDE2OSwgMSwgMjMyLCA5OCwgMTY5LCAxLCAKLSAgICAyMzIsIDcxLCAxNjksIDEsIDE4NCwgMTY5LCAxLCAyMzEsIDkxLCAxNjksIDEsIDIzMCwgMjMwLCAxNjksIDEsIDIzMCwgCi0gICAgMTYxLCAxNjksIDEsIDIzMCwgMTAyLCAxNjksIDEsIDE5NywgMTY5LCAxLCAyNDEsIDkwLCAxNjksIDEsIDIyOSwgMjEzLCAKLSAgICAxNjksIDEsIDIyOSwgMTA3LCAxNjksIDEsIDIyOCwgMjMzLCAxNjksIDEsIDIyOCwgNzQsIDE2OSwgMSwgMjI3LCAyMzcsIAotICAgIDE2OSwgMSwgMjI3LCAxNzYsIDE2OSwgMSwgMjI0LCAyOSwgMTY5LCAxLCAyMjQsIDE2LCAxNjksIDEsIDIyNCwgOSwgMTY5LCAKLSAgICAxLCAyMjQsIDEsIDE2OSwgMSwgMjIzLCAyNDYsIDE2OSwgMSwgMjIzLCAyNDQsIDE2OSwgMSwgMjA2LCAxNjksIDEsIDIyMiwgCi0gICAgOTEsIDE2OSwgMSwgMjIxLCAxODEsIDE2OSwgMSwgMjE5LCAxOTEsIDE2OSwgMSwgMjE5LCA1OCwgMTY5LCAxLCAyMTgsIDgzLCAKLSAgICAxNjksIDEsIDIxOCwgMiwgMTY5LCAxLCAyNDgsIDIyMSwgMTY5LCAxLCAyMTcsIDEwNSwgMTY5LCAxLCAyNDgsIDkwLCAxNjksIAotICAgIDEsIDIxNywgMjIsIDE2OSwgMSwgMjQ4LCAzLCAxNjksIDEsIDIxNiwgMTE3LCAxNjksIDEsIDI0NywgMTQ1LCAxNjksIDEsIAotICAgIDI0NiwgNzgsIDE2OSwgMSwgMjQ2LCA1MCwgMTY5LCAxLCAyNDcsIDE1NiwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgCi0gICAgNTgsIDE2OSwgMSwgMjE2LCA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE2LCA0NCwgCi0gICAgMTY5LCAxLCAyMTUsIDE4MywgMTY5LCAxLCAyMTUsIDE3OCwgMTY5LCAxLCAyMTUsIDE2NywgMTY5LCAxLCAyMTUsIDE2NiwgCi0gICAgMTY5LCAxLCAyMTUsIDE2MywgMTY5LCAxLCAyMTUsIDE2MiwgMTY5LCAxLCAyMTIsIDY1LCAxNjksIDEsIDIxMiwgMjIsIAotICAgIDE2OSwgMSwgMjExLCAyNTAsIDE2OSwgMSwgMjExLCAyMjcsIDE2OSwgMSwgMjExLCAxOTUsIDE2OSwgMSwgMjExLCAxODMsIAotICAgIDE2OSwgMSwgMTkxLCAxNjksIDEsIDIxMSwgNDcsIDE2OSwgMSwgMjExLCA4LCAxNjksIDEsIDIxMCwgMjQ0LCAxNjksIDEsIAotICAgIDIxMCwgMjEyLCAxNjksIDEsIDIxMCwgMTc3LCAxOCwgMTksIDI0MCwgMTY4LCAxOCwgMTksIDc1LCAxOCwgMTksIDI1NSwgCi0gICAgMzcsIDE4LCAxOSwgNzMsIDE4LCAxOSwgMjM2LCAzMywgMTgsIDE5LCA3NiwgMTgsIDE5LCAyMjYsIDE4MywgMTgsIDE5LCAKLSAgICAyMTEsIDExNiwgMjI2LCAxODMsIDE4LCAxOSwgNzIsIDI0NSwgMjA5LCAxOCwgMTksIDcyLCA3MywgMTgsIDE5LCA2MSwgMTgsIAotICAgIDE5LCAyNTUsIDczLCAxOCwgMTksIDIxMiwgMjIsIDE4LCAxOSwgMTU5LCAyMTIsIDIyLCAxOCwgMTksIDIxMSwgMjUwLCAxOCwgCi0gICAgMTksIDE1OSwgMjExLCAyNTAsIDE4LCAxOSwgMjExLCAyNDIsIDE4LCAxOSwgMTU5LCAyMTEsIDI0MiwgMTgsIDE5LCAyMTEsIAotICAgIDIyNywgMTgsIDE5LCAxNTksIDIxMSwgMjI3LCAxOCwgMTksIDIxMSwgMjE1LCAxOCwgMTksIDE1OSwgMjExLCAyMTUsIDE4LCAKLSAgICAxOSwgMjI5LCAxOTAsIDIxMSwgMjE1LCAxOCwgMTksIDIxMiwgNjUsIDE4LCAxOSwgMTU5LCAyMTIsIDY1LCAxOCwgMTksIAotICAgIDIxMiwgNjQsIDE4LCAxOSwgMTU5LCAyMTIsIDY0LCAxOCwgMTksIDIyOSwgMTkwLCAyMTIsIDY0LCAxOCwgMTksIDI1NCwgCi0gICAgMjAxLCAxOCwgMTksIDIxMSwgMTE2LCAyMTIsIDk4LCAxOCwgMTksIDI0MiwgMTgwLCAyMTgsIDEyOSwgMTgsIDE5LCA0MCwgCi0gICAgMTQyLCAxOCwgMTksIDQwLCAyNDIsIDEzNiwgMTgsIDE5LCA0MCwgMjUxLCAxNzUsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgCi0gICAgNDAsIDIxNiwgMTQsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDQ0LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCAKLSAgICAyMjIsIDIzMywgMTgsIDE5LCA0MCwgNTIsIDE0MiwgMTgsIDE5LCA0MCwgNTIsIDIxOSwgMjUxLCA2NywgMjE4LCA5MCwgMTgsIAotICAgIDE5LCA0MCwgMjMwLCAyMjQsIDI0NywgMTIwLCAxOCwgMTksIDQwLCAyMTksIDI1MSwgMjAzLCA5MSwgMTgsIDE5LCA0MCwgCi0gICAgMjI1LCAyMiwgMTgsIDE5LCA0MCwgMTI0LCAyMTcsIDg3LCAxOCwgMTksIDI0NSwgMTUwLCAxOCwgMTksIDIzNSwgMjU1LCAKLSAgICAxOCwgMTksIDIyNiwgMTk2LCAxOCwgMTksIDI1NCwgMTIzLCAxOCwgMTksIDIyNSwgMjIxLCAxOCwgMTksIDIyNiwgODcsIAotICAgIDE4LCAxOSwgMjI1LCAxMDgsIDE4LCAxOSwgMjI1LCA3MSwgMTgsIDE5LCAyMjUsIDE2LCAxOCwgMTksIDIyNCwgMjQ5LCAxOCwgCi0gICAgMTksIDIxMSwgMTE2LCAyMjQsIDI0OSwgMTgsIDE5LCA3MiwgMjQxLCAyMjAsIDE4LCAxOSwgNzIsIDI0MSwgMTgwLCAxOCwgCi0gICAgMTksIDE5MCwgMTgsIDE5LCAyMjYsIDg5LCAxOCwgMTksIDIyNCwgMTEyLCAxOCwgMTksIDE1OSwgMjI0LCAxMTIsIDE4LCAKLSAgICAxOSwgMjI0LCAxMTAsIDE4LCAxOSwgMTU5LCAyMjQsIDExMCwgMTgsIDE5LCAyMjQsIDEwOSwgMTgsIDE5LCAxNTksIDIyNCwgCi0gICAgMTA5LCAxOCwgMTksIDIyNCwgMTA3LCAxOCwgMTksIDE1OSwgMjI0LCAxMDcsIDE4LCAxOSwgMjI0LCAxMDYsIDE4LCAxOSwgCi0gICAgMTU5LCAyMjQsIDEwNiwgMTgsIDE5LCAyMjQsIDExNCwgMTgsIDE5LCAxNTksIDIyNCwgMTE0LCAxOCwgMTksIDIyNCwgMTEzLCAKLSAgICAxOCwgMTksIDE1OSwgMjI0LCAxMTMsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMTEzLCAxOCwgMTksIDIyNiwgMTA1LCAxOCwgCi0gICAgMTksIDE1OSwgMjI2LCAxMDUsIDE4LCAxOSwgNzIsIDI0MiwgNjAsIDE4LCAxOSwgMjE3LCAyMiwgMTgsIDE5LCAyMTcsIDk5LCAKLSAgICAxOCwgMTksIDIxNiwgMTE3LCAxOCwgMTksIDIxNiwgMTAzLCAxOCwgMTksIDExMSwgMTgsIDE5LCAyMTYsIDE3LCAxOCwgMTksIAotICAgIDIxMSwgMTE2LCAyMTYsIDE3LCAxOCwgMTksIDcyLCAyNDgsIDc3LCAxOCwgMTksIDcyLCAyNDgsIDMsIDE4LCAxOSwgMjE3LCAKLSAgICAxMDUsIDE4LCAxOSwgMjE3LCAxMDEsIDE4LCAxOSwgMjE1LCA3OCwgMTgsIDE5LCAxNTksIDIxNSwgNzgsIDE4LCAxOSwgCi0gICAgMjE1LCA2MiwgMTgsIDE5LCAxNTksIDIxNSwgNjIsIDE4LCAxOSwgMjE1LCA2MSwgMTgsIDE5LCAxNTksIDIxNSwgNjEsIDE4LCAKLSAgICAxOSwgMTA1LCAxOCwgMTksIDE1OSwgMTA1LCAxOCwgMTksIDIxNSwgNTQsIDE4LCAxOSwgMTU5LCAyMTUsIDU0LCAxOCwgMTksIAotICAgIDIxNSwgODAsIDE4LCAxOSwgMTU5LCAyMTUsIDgwLCAxOCwgMTksIDIxNSwgNzksIDE4LCAxOSwgMTU5LCAyMTUsIDc5LCAxOCwgCi0gICAgMTksIDIyOSwgMTkwLCAyMTUsIDc5LCAxOCwgMTksIDIxNywgMTUyLCAxOCwgMTksIDIxNSwgMTUxLCAxOCwgMTksIDIxNSwgCi0gICAgMTM1LCAxOCwgMTksIDIxNSwgMTMzLCAxOCwgMTksIDIxNSwgMTU2LCAxOCwgMTksIDIzNCwgMTgyLCAxOCwgMTksIDIzNSwgCi0gICAgNywgMTgsIDE5LCAyMzQsIDkyLCAxOCwgMTksIDIzNCwgODMsIDE4LCAxOSwgMjM0LCAyOCwgMTgsIDE5LCAyMzQsIDEwLCAKLSAgICAxOCwgMTksIDIxMSwgMTE2LCAyMzQsIDEwLCAxOCwgMTksIDE3NiwgMTgsIDE5LCAyMzUsIDEwLCAxOCwgMTksIDIzMywgCi0gICAgMTc4LCAxOCwgMTksIDE1OSwgMjMzLCAxNzgsIDE4LCAxOSwgMjMzLCAxNzYsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NiwgMTgsIAotICAgIDE5LCAyMzMsIDE3NSwgMTgsIDE5LCAxNTksIDIzMywgMTc1LCAxOCwgMTksIDIzMywgMTc0LCAxOCwgMTksIDE1OSwgMjMzLCAKLSAgICAxNzQsIDE4LCAxOSwgMjMzLCAxNzMsIDE4LCAxOSwgMTU5LCAyMzMsIDE3MywgMTgsIDE5LCAyMzMsIDE4MiwgMTgsIDE5LCAKLSAgICAxNTksIDIzMywgMTgyLCAxOCwgMTksIDIzMywgMTgxLCAxOCwgMTksIDE1OSwgMjMzLCAxODEsIDE4LCAxOSwgMjI5LCAxOTAsIAotICAgIDIzMywgMTgxLCAxOCwgMTksIDIzNSwgMjMsIDE4LCAxOSwgMjMzLCAxODMsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAxNzYsIAotICAgIDE4LCAxOSwgMjE5LCAyNywgMjM0LCA4NCwgMTgsIDE5LCAyMTksIDI3LCAyMzQsIDIzLCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgCi0gICAgMjQ4LCAxOCwgMTksIDI1MCwgMTkwLCAxOCwgMTksIDI1MSwgMzEsIDE4LCAxOSwgMjUwLCA1MSwgMTgsIDE5LCAyNTAsIDQxLCAKLSAgICAxOCwgMTksIDI0OSwgMjM4LCAxOCwgMTksIDI0OSwgMTc0LCAxOCwgMTksIDIxMSwgMTE2LCAyNDksIDE3NCwgMTgsIDE5LCAKLSAgICAyNTEsIDMzLCAxOCwgMTksIDI1MSwgMzIsIDE4LCAxOSwgMjQ5LCA3OSwgMTgsIDE5LCAxNTksIDI0OSwgNzksIDE4LCAxOSwgCi0gICAgMjQ5LCA3NywgMTgsIDE5LCAxNTksIDI0OSwgNzcsIDE4LCAxOSwgMjQ5LCA3NiwgMTgsIDE5LCAxNTksIDI0OSwgNzYsIDE4LCAKLSAgICAxOSwgMjQ5LCA3NSwgMTgsIDE5LCAxNTksIDI0OSwgNzUsIDE4LCAxOSwgMjQ5LCA3NCwgMTgsIDE5LCAxNTksIDI0OSwgNzQsIAotICAgIDE4LCAxOSwgMjQ5LCA4MSwgMTgsIDE5LCAxNTksIDI0OSwgODEsIDE4LCAxOSwgMjQ5LCA4MCwgMTgsIDE5LCAxNTksIDI0OSwgCi0gICAgODAsIDE4LCAxOSwgMjI5LCAxOTAsIDI0OSwgODAsIDE4LCAxOSwgMjUxLCA2NiwgMTgsIDE5LCAyMjEsIDIwOSwgMjE2LCAKLSAgICAyMTAsIDE4LCAxOSwgMjMxLCA5MSwgMTgsIDE5LCAyMzEsIDIzNiwgMTgsIDE5LCAyMzAsIDIzMCwgMTgsIDE5LCAyMzAsIAotICAgIDIwMSwgMTgsIDE5LCAyMzAsIDE2MSwgMTgsIDE5LCAyMzAsIDEzMiwgMTgsIDE5LCAyMTEsIDExNiwgMjMwLCAxMzIsIDE4LCAKLSAgICAxOSwgMTg0LCAxOCwgMTksIDIzMSwgMjM3LCAxOCwgMTksIDIzMCwgNDAsIDE4LCAxOSwgMTU5LCAyMzAsIDQwLCAxOCwgMTksIAotICAgIDIzMCwgMzgsIDE4LCAxOSwgMTU5LCAyMzAsIDM4LCAxOCwgMTksIDIzMCwgMzcsIDE4LCAxOSwgMTU5LCAyMzAsIDM3LCAxOCwgCi0gICAgMTksIDIzMCwgMzYsIDE4LCAxOSwgMTU5LCAyMzAsIDM2LCAxOCwgMTksIDIzMCwgMzUsIDE4LCAxOSwgMTU5LCAyMzAsIDM1LCAKLSAgICAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMTU5LCAyMzAsIDQyLCAxOCwgMTksIDIzMCwgNDEsIDE4LCAxOSwgMTU5LCAyMzAsIAotICAgIDQxLCAxOCwgMTksIDIyOSwgMTkwLCAyMzAsIDQxLCAxOCwgMTksIDE5MywgMTgsIDE5LCAxNTksIDE5MywgMTgsIDE5LCAKLSAgICAyMzAsIDIzNCwgMTgsIDE5LCAyNTMsIDIwNSwgMTkzLCAxOCwgMTksIDIyMSwgMjA5LCAxOTMsIDE4LCAxOSwgMjI5LCAxMDcsIAotICAgIDE4LCAxOSwgMjI5LCAyMjQsIDE4LCAxOSwgMjI4LCAyMzMsIDE4LCAxOSwgMjI4LCAyMDgsIDE4LCAxOSwgMjI4LCA3NCwgCi0gICAgMTgsIDE5LCAyMjgsIDY0LCAxOCwgMTksIDIxMSwgMTE2LCAyMjgsIDY0LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyMjksIAotICAgIDIyNSwgMTgsIDE5LCAyMjcsIDE3MiwgMTgsIDE5LCAxNTksIDIyNywgMTcyLCAxOCwgMTksIDIyNywgMTc0LCAxOCwgMTksIAotICAgIDE1OSwgMjI3LCAxNzQsIDE4LCAxOSwgMjI3LCAxNzMsIDE4LCAxOSwgMTU5LCAyMjcsIDE3MywgMTgsIDE5LCAyMjksIDE5MCwgCi0gICAgMjI3LCAxNzMsIDE4LCAxOSwgMjMwLCAyNSwgMTgsIDE5LCA3MiwgMjI5LCA3OSwgMTgsIDE5LCAyMjgsIDIzOCwgMTgsIDE5LCAKLSAgICAyMzMsIDU4LCAxOCwgMTksIDIzMywgMTMzLCAxOCwgMTksIDIzMiwgMjQxLCAxOCwgMTksIDIzMiwgMjI3LCAxOCwgMTksIAotICAgIDIzMiwgMTU2LCAxOCwgMTksIDIzMiwgMTI3LCAxOCwgMTksIDIxMSwgMTE2LCAyMzIsIDEyNywgMTgsIDE5LCAyMzMsIDEzNSwgCi0gICAgMTgsIDE5LCAyMzMsIDEzNCwgMTgsIDE5LCAyMzIsIDY4LCAxOCwgMTksIDE1OSwgMjMyLCA2OCwgMTgsIDE5LCAyMzIsIDY3LCAKLSAgICAxOCwgMTksIDE1OSwgMjMyLCA2NywgMTgsIDE5LCAyMzIsIDY2LCAxOCwgMTksIDE1OSwgMjMyLCA2NiwgMTgsIDE5LCAyMzIsIAotICAgIDY1LCAxOCwgMTksIDE1OSwgMjMyLCA2NSwgMTgsIDE5LCAyMzIsIDY0LCAxOCwgMTksIDE1OSwgMjMyLCA2NCwgMTgsIDE5LCAKLSAgICAyMzIsIDcwLCAxOCwgMTksIDE1OSwgMjMyLCA3MCwgMTgsIDE5LCAyMzIsIDY5LCAxOCwgMTksIDE1OSwgMjMyLCA2OSwgMTgsIAotICAgIDE5LCAxNTYsIDE4LCAxOSwgMTU5LCAxNTYsIDE4LCAxOSwgMTQ3LCAxNTYsIDE4LCAxOSwgMjIxLCAxODEsIDE4LCAxOSwgCi0gICAgMjIyLCAyOSwgMTgsIDE5LCAyMTksIDE5MSwgMTgsIDE5LCAyMTksIDE3NSwgMTgsIDE5LCAyMTksIDU4LCAxOCwgMTksIAotICAgIDIxOSwgNDAsIDE4LCAxOSwgMjExLCAxMTYsIDIxOSwgNDAsIDE4LCAxOSwgMjA2LCAxOCwgMTksIDIyMiwgMzEsIDE4LCAxOSwgCi0gICAgMjE3LCAyNDksIDE4LCAxOSwgMTU5LCAyMTcsIDI0OSwgMTgsIDE5LCAyMTcsIDI0MywgMTgsIDE5LCAxNTksIDIxNywgMjQzLCAKLSAgICAxOCwgMTksIDIxNywgMjQyLCAxOCwgMTksIDE1OSwgMjE3LCAyNDIsIDE4LCAxOSwgMjE3LCAyMzgsIDE4LCAxOSwgMTU5LCAKLSAgICAyMTcsIDIzOCwgMTgsIDE5LCAyMTcsIDIzNywgMTgsIDE5LCAxNTksIDIxNywgMjM3LCAxOCwgMTksIDIxNywgMjUzLCAxOCwgCi0gICAgMTksIDE1OSwgMjE3LCAyNTMsIDE4LCAxOSwgMjE3LCAyNTIsIDE4LCAxOSwgMTU5LCAyMTcsIDI1MiwgMTgsIDE5LCAyMjksIAotICAgIDE5MCwgMjE3LCAyNTIsIDE4LCAxOSwgMjIyLCA5MSwgMTgsIDE5LCAyNTMsIDIwNSwgMjIyLCA5MSwgMTgsIDE5LCAyMTcsIAotICAgIDI1NCwgMTgsIDE5LCAyNTEsIDIxOCwgMjIyLCA5MSwgMTgsIDE5LCAyMzAsIDEyNywgMjE5LCAxMDgsIDE4LCAxOSwgMjI5LCAKLSAgICAxOTAsIDIxOSwgOTksIDE4LCAxOSwgMjI5LCAxOTAsIDIyMiwgODksIDE4LCAxOSwgMjI5LCAxOTAsIDIxOCwgMjM1LCAxOCwgCi0gICAgMTksIDIyOSwgMTkwLCAyMTgsIDg2LCAxOCwgMTksIDIyOSwgMTkwLCAyMTksIDk4LCAxOCwgMTksIDIyOSwgMTkwLCAyMjEsIAotICAgIDE4NCwgMTgsIDE5LCAyMjAsIDYzLCAxOCwgMTksIDIyMCwgMzIsIDE4LCAxOSwgMjIwLCAyNywgMTgsIDE5LCAyMjAsIDcsIAotICAgIDE4LCAxOSwgMjIwLCAxLCAxOCwgMTksIDIyMCwgMTAyLCAxOCwgMTksIDIyMCwgOTgsIDE4LCAxOSwgMjE5LCAyMDYsIDE4LCAKLSAgICAxOSwgMTU5LCAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgMjA1LCAxOCwgMTksIDIxOSwgCi0gICAgMjA0LCAxOCwgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMDMsIDE4LCAxOSwgMTU5LCAyMTksIDIwMywgMTgsIAotICAgIDE5LCAyMTksIDIwMiwgMTgsIDE5LCAxNTksIDIxOSwgMjAyLCAxOCwgMTksIDIxOSwgMjA4LCAxOCwgMTksIDE1OSwgMjE5LCAKLSAgICAyMDgsIDE4LCAxOSwgMjE5LCAyMDcsIDE4LCAxOSwgMTU5LCAyMTksIDIwNywgMTgsIDE5LCAyMjAsIDEwNCwgMTgsIDE5LCAKLSAgICAyMTEsIDQ3LCAxOCwgMTksIDIxMSwgMTAxLCAxOCwgMTksIDIxMSwgOCwgMTgsIDE5LCAyMTAsIDI1NSwgMTgsIDE5LCAyMTAsIAotICAgIDI0NCwgMTgsIDE5LCAyMTAsIDIyOSwgMTgsIDE5LCAyMTEsIDExNiwgMjEwLCAyMjksIDE4LCAxOSwgMTkxLCAxOCwgMTksIAotICAgIDIxMSwgMTAzLCAxOCwgMTksIDIxMCwgMTc0LCAxOCwgMTksIDE1OSwgMjEwLCAxNzQsIDE4LCAxOSwgMjEwLCAxNzMsIDE4LCAKLSAgICAxOSwgMTU5LCAyMTAsIDE3MywgMTgsIDE5LCAyMTAsIDE3MiwgMTgsIDE5LCAxNTksIDIxMCwgMTcyLCAxOCwgMTksIDIxMCwgCi0gICAgMTcxLCAxOCwgMTksIDE1OSwgMjEwLCAxNzEsIDE4LCAxOSwgMjEwLCAxNzAsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MCwgMTgsIAotICAgIDE5LCAyMTAsIDE3NiwgMTgsIDE5LCAxNTksIDIxMCwgMTc2LCAxOCwgMTksIDIxMCwgMTc1LCAxOCwgMTksIDE1OSwgMjEwLCAKLSAgICAxNzUsIDE4LCAxOSwgMjI5LCAxOTAsIDIxMCwgMTc1LCAxOCwgMTksIDIxMSwgMTE3LCAxOCwgMTksIDI1MiwgNCwgMjExLCAKLSAgICAxMTcsIDE4LCAxOSwgMTU5LCAyMTEsIDExNywgMTgsIDE5LCAyMjEsIDIwOSwgMjExLCA4LCAxOCwgMTksIDIyMywgMTI4LCAKLSAgICAxOCwgMTksIDIyMywgMjIzLCAyMjMsIDEyOCwgMTgsIDE5LCAxNTksIDIzMywgNTgsIDE4LCAxOSwgMjIzLCAxODMsIDE4LCAKLSAgICAxOSwgMjIzLCAzNSwgMTgsIDE5LCAyMjIsIDIzOSwgMTgsIDE5LCAyMjIsIDIxMSwgMTgsIDE5LCAyMjIsIDE5NywgMTgsIAotICAgIDE5LCAxNTksIDIzMiwgMTU2LCAxOCwgMTksIDIwNSwgMTgsIDE5LCAyMjMsIDE4NCwgMTgsIDE5LCAxNTksIDIzMywgMTM1LCAKLSAgICAxOCwgMTksIDIyMiwgMTA4LCAxOCwgMTksIDE1OSwgMjIyLCAxMDgsIDE4LCAxOSwgMTUzLCAxOCwgMTksIDE1OSwgMTUzLCAKLSAgICAxOCwgMTksIDE0NywgMTUzLCAxOCwgMTksIDI0NCwgMTU0LCAxOCwgMTksIDI0NCwgMTkzLCAxOCwgMTksIDI0NCwgMTIxLCAKLSAgICAxOCwgMTksIDI0NCwgMTA4LCAxOCwgMTksIDI0NCwgNDMsIDE4LCAxOSwgMjQ0LCAzNCwgMTgsIDE5LCAyNDQsIDE5NiwgMTgsIAotICAgIDE5LCAyNDQsIDE5NSwgMTgsIDE5LCAyNDMsIDIxMiwgMTgsIDE5LCAxNTksIDI0MywgMjEyLCAxOCwgMTksIDI0NSwgNiwgCi0gICAgMTgsIDE5LCAyMTYsIDE5NSwgMTgsIDE5LCAyMzAsIDIzLCAyMTYsIDE5NSwgMTgsIDE5LCAyMTYsIDE3NSwgMTgsIDE5LCAKLSAgICAyMzAsIDIzLCAyMTYsIDE3NSwgMTgsIDE5LCAyMTYsIDE3MSwgMTgsIDE5LCAyMzAsIDIzLCAyMTYsIDE3MSwgMTgsIDE5LCAKLSAgICAyMTYsIDE1NiwgMTgsIDE5LCAyMTYsIDE1MywgMTgsIDE5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIwNywgMTgsIDE5LCAKLSAgICAyMTYsIDEyNywgMTgsIDE5LCAxNTksIDIxNiwgMTI3LCAxOCwgMTksIDIxNiwgMjEwLCAxOCwgMTksIDIxNSwgMTQyLCAxOCwgCi0gICAgMTksIDIxNSwgMTQwLCAxOCwgMTksIDIxNSwgMTM5LCAxOCwgMTksIDIxNSwgMTQ0LCAxOCwgMTksIDIxNSwgMTQ1LCAxOCwgCi0gICAgMTksIDIxNSwgNTIsIDE4LCAxOSwgMjE1LCA1MSwgMTgsIDE5LCAyMTUsIDUwLCAxOCwgMTksIDIxNSwgNTMsIDE4LCAxOSwgCi0gICAgMjI3LCAxOTMsIDI0MSwgMjM4LCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDE4MCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCAKLSAgICAxNjEsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgNjgsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgNTMsIDE4LCAxOSwgMjI3LCAKLSAgICAxOTMsIDE2MiwgMTgsIDE5LCAyMjcsIDE5MywgMjQyLCA0NiwgMTgsIDE5LCAyMjcsIDE5MywgMjQyLCA2MCwgMTgsIDE5LCAKLSAgICAyMjcsIDE5MiwgMjQyLCA2MCwgMTgsIDE5LCAyNDEsIDE1NCwgMTgsIDE5LCAyMjQsIDg0LCAxOCwgMTksIDIyNCwgNTMsIAotICAgIDE4LCAxOSwgMjI0LCA0OCwgMTgsIDE5LCAyMjQsIDQyLCAxOCwgMTksIDIyNCwgMzcsIDE4LCAxOSwgMjI0LCA4OCwgMTgsIAotICAgIDE5LCAyMjQsIDg3LCAxOCwgMTksIDIyNCwgOTYsIDE4LCAxOSwgMjE2LCA1NSwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIAotICAgIDIxNiwgNTIsIDE4LCAxOSwgMjE2LCA1NiwgMTgsIDE5LCAxNTksIDIyMywgMTI4LCAxOCwgMTksIDE1OSwgMjIzLCAzNSwgCi0gICAgMTgsIDE5LCAxNTksIDIyMiwgMjExLCAxOCwgMTksIDE1OSwgMjA1LCAxOCwgMTksIDIyOSwgNzUsIDE4LCAxOSwgMjI5LCAKLSAgICAyNywgMTgsIDE5LCAyMjksIDIzLCAxOCwgMTksIDIyOSwgNCwgMTgsIDE5LCAyMjgsIDI1NSwgMTgsIDE5LCAyMjksIDc3LCAKLSAgICAxOCwgMTksIDIyOSwgNzYsIDE4LCAxOSwgMjI5LCA3OSwgMTgsIDE5LCAyMjgsIDEwMywgMTgsIDE5LCAyMjEsIDIwOSwgCi0gICAgMjIwLCA2MywgMTgsIDE5LCAyMjEsIDIwOSwgMjIwLCAzMiwgMTgsIDE5LCAyMjEsIDIwOSwgMjIwLCA3LCAxOCwgMTksIAotICAgIDIyMSwgMjA5LCAyMjAsIDEwMiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxOTUsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCi0gICAgMTc1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDE1NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMDgsIDE4LCAxOSwgMjExLCAKLSAgICAyMTMsIDIxNiwgMjEwLCAxOCwgMTksIDIzMiwgMjQ4LCAxOCwgMTksIDIzMiwgMjQ3LCAxOCwgMTksIDIzMiwgMjQ2LCAxOCwgCi0gICAgMTksIDIzMiwgMjQ1LCAxOCwgMTksIDIzMiwgMjU0LCAxOCwgMTksIDIzMiwgMjUzLCAxOCwgMTksIDIzMiwgMjU1LCAxOCwgCi0gICAgMTksIDIxNiwgMjA5LCAyMTYsIDE5NSwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNzUsIDE4LCAxOSwgMjE2LCAyMDksIAotICAgIDIxNiwgMTcxLCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDE1NiwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNTMsIDE4LCAxOSwgCi0gICAgMjE2LCAyMDksIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDIwNywgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAKLSAgICAyMTAsIDE4LCAxOSwgMjU0LCAxODksIDI1MywgMTU4LCAxOCwgMTksIDI1MSwgMjE4LCA3NSwgMTgsIDE5LCAyNTEsIDIxOCwgCi0gICAgNzMsIDE4LCAxOSwgMjUxLCAyMTgsIDc2LCAxOCwgMTksIDI1MSwgMjE4LCA2MSwgMTgsIDE5LCAyNTEsIDIxOCwgMjEyLCAKLSAgICAyMiwgMTgsIDE5LCAyNTEsIDIxOCwgMjExLCAyNTAsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMSwgMjI3LCAxOCwgMTksIDI1MSwgCi0gICAgMjE4LCAyMTIsIDY1LCAxOCwgMTksIDI1MSwgMjE4LCAyMjksIDEwNywgMTgsIDE5LCAyNTEsIDIxOCwgMjI4LCAyMzMsIDE4LCAKLSAgICAxOSwgMjUxLCAyMTgsIDIyOCwgNzQsIDE4LCAxOSwgMjUxLCAyMTgsIDE5NywgMTgsIDE5LCAyNTEsIDIxOCwgMjM0LCAxODIsIAotICAgIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgOTIsIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgMjgsIDE4LCAxOSwgMjUxLCAyMTgsIAotICAgIDE3NiwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCAyMzgsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgMTgwLCAxOCwgMTksIDIyMSwgCi0gICAgMjA5LCAyNDEsIDY4LCAxOCwgMTksIDIyMSwgMjA5LCAxNjIsIDE4LCAxOSwgNzIsIDI0MiwgMjIwLCAxOCwgMTksIDcyLCAKLSAgICAyNDIsIDIyNCwgMTgsIDE5LCA3MiwgMjQyLCAyMzYsIDE4LCAxOSwgNzIsIDI0MiwgMjM1LCAxOCwgMTksIDcyLCAyNDIsIAotICAgIDIyNSwgMTgsIDE5LCA3MiwgMjQyLCAyNDksIDE4LCAxOSwgNzIsIDIyMiwgMTQwLCAxOCwgMTksIDcyLCAyMjIsIDIxMSwgCi0gICAgMTgsIDE5LCA3MiwgMjIzLCAxMjgsIDE4LCAxOSwgNzIsIDIyMywgMTA4LCAxOCwgMTksIDcyLCAyMjMsIDM1LCAxOCwgMTksIAotICAgIDcyLCAyMDUsIDE4LCAxOSwgNzIsIDIxMSwgMTk1LCAxOCwgMTksIDcyLCAyMTEsIDIyNywgMTgsIDE5LCA3MiwgMjEyLCAyMiwgCi0gICAgMTgsIDE5LCA3MiwgMjEyLCAxNywgMTgsIDE5LCA3MiwgMjExLCAyNTAsIDE4LCAxOSwgNzIsIDIxMiwgNjUsIDE4LCAxOSwgCi0gICAgNzIsIDI0MCwgMTk0LCAxOCwgMTksIDcyLCAyNDAsIDE5NSwgMTgsIDE5LCA3MiwgMjQwLCAxOTgsIDE4LCAxOSwgNzIsIAotICAgIDI0MCwgMTk3LCAxOCwgMTksIDcyLCAyNDAsIDE5NiwgMTgsIDE5LCA3MiwgMjQwLCAyMDAsIDE4LCAxOSwgNzIsIDIxNiwgCi0gICAgMTM2LCAxOCwgMTksIDcyLCAyMTYsIDE1NiwgMTgsIDE5LCA3MiwgMjE2LCAxOTUsIDE4LCAxOSwgNzIsIDIxNiwgMTk0LCAKLSAgICAxOCwgMTksIDcyLCAyMTYsIDE3NSwgMTgsIDE5LCA3MiwgMjE2LCAyMDgsIDE4LCAxOSwgNzIsIDIxNSwgMTIzLCAxOCwgMTksIAotICAgIDcyLCAyMTUsIDEzMywgMTgsIDE5LCA3MiwgMjE1LCAxNTEsIDE4LCAxOSwgNzIsIDIxNSwgMTUwLCAxOCwgMTksIDcyLCAKLSAgICAyMTUsIDEzNSwgMTgsIDE5LCA3MiwgMjE1LCAxNTYsIDE4LCAxOSwgNzIsIDIyNCwgMTUwLCAxOCwgMTksIDcyLCAyMjUsIAotICAgIDE2LCAxOCwgMTksIDcyLCAyMjUsIDIyMSwgMTgsIDE5LCA3MiwgMjI1LCAyMTEsIDE4LCAxOSwgNzIsIDIyNSwgMTA4LCAxOCwgCi0gICAgMTksIDcyLCAxOTAsIDE4LCAxOSwgNzIsIDIyNiwgMTA1LCAxOCwgMTksIDcyLCAyNDIsIDExMywgMTgsIDE5LCA3MiwgMjQyLCAKLSAgICAxNzQsIDE4LCAxOSwgNzIsIDI0MywgNjIsIDE4LCAxOSwgNzIsIDI0MywgNTUsIDE4LCAxOSwgNzIsIDI0MiwgMjE0LCAxOCwgCi0gICAgMTksIDcyLCAyNDMsIDEzNSwgMTgsIDE5LCA3MiwgMjM0LCAxMDAsIDE4LCAxOSwgNzIsIDIzNCwgMTA1LCAxOCwgMTksIDcyLCAKLSAgICAyMzQsIDExOSwgMTgsIDE5LCA3MiwgMjM0LCAxMTgsIDE4LCAxOSwgNzIsIDIzNCwgMTEyLCAxOCwgMTksIDcyLCAyMzQsIAotICAgIDEzMiwgMTgsIDE5LCA3MiwgMjM0LCA0MSwgMTgsIDE5LCA3MiwgMjM0LCA0MiwgMTgsIDE5LCA3MiwgMjM0LCA0NSwgMTgsIAotICAgIDE5LCA3MiwgMjM0LCA0NCwgMTgsIDE5LCA3MiwgMjM0LCA0MywgMTgsIDE5LCA3MiwgMjM0LCA0NiwgMTgsIDE5LCA3MiwgCi0gICAgMjM0LCA0NywgMTgsIDE5LCA3MiwgMjI3LCAyMzcsIDE4LCAxOSwgNzIsIDIyOCwgNzQsIDE4LCAxOSwgNzIsIDIyOSwgMTA3LCAKLSAgICAxOCwgMTksIDcyLCAyMjksIDEwMywgMTgsIDE5LCA3MiwgMjI4LCAyMzMsIDE4LCAxOSwgNzIsIDE5NywgMTgsIDE5LCA3MiwgCi0gICAgMjMwLCAxMDIsIDE4LCAxOSwgNzIsIDIzMCwgMTYxLCAxOCwgMTksIDcyLCAyMzEsIDkxLCAxOCwgMTksIDcyLCAyMzEsIDgwLCAKLSAgICAxOCwgMTksIDcyLCAyMzAsIDIzMCwgMTgsIDE5LCA3MiwgMTg0LCAxOCwgMTksIDcyLCAyMTAsIDIxMiwgMTgsIDE5LCA3MiwgCi0gICAgMjEwLCAyNDQsIDE4LCAxOSwgNzIsIDIxMSwgNDcsIDE4LCAxOSwgNzIsIDIxMSwgNDQsIDE4LCAxOSwgNzIsIDIxMSwgOCwgCi0gICAgMTgsIDE5LCA3MiwgMTkxLCAxOCwgMTksIDcyLCAyMzUsIDUxLCAxOCwgMTksIDIyMSwgMjA5LCAyMzUsIDUxLCAxOCwgMTksIAotICAgIDcyLCAyMzUsIDY4LCAxOCwgMTksIDcyLCAyMzUsIDEyNiwgMTgsIDE5LCA3MiwgMjM1LCAxMjQsIDE4LCAxOSwgNzIsIDIzNSwgCi0gICAgMTA4LCAxOCwgMTksIDIyMSwgMjA5LCAyMzUsIDEwOCwgMTgsIDE5LCA3MiwgMjM1LCAxNDEsIDE4LCAxOSwgNzIsIDIzNSwgCi0gICAgODEsIDE4LCAxOSwgNzIsIDIzNSwgODUsIDE4LCAxOSwgNzIsIDIzNSwgOTUsIDE4LCAxOSwgNzIsIDIzNSwgOTQsIDE4LCAKLSAgICAxOSwgNzIsIDIzNSwgOTMsIDE4LCAxOSwgNzIsIDIzNSwgOTYsIDE4LCAxOSwgNzIsIDIzMiwgOTgsIDE4LCAxOSwgNzIsIAotICAgIDIzMiwgMTU2LCAxOCwgMTksIDcyLCAyMzMsIDU4LCAxOCwgMTksIDcyLCAyMzMsIDUwLCAxOCwgMTksIDcyLCAyMzIsIDI0MSwgCi0gICAgMTgsIDE5LCA3MiwgMjMzLCAxMzUsIDE4LCAxOSwgNzIsIDI0NywgMTQ5LCAxOCwgMTksIDcyLCAyNDcsIDE1MCwgMTgsIDE5LCAKLSAgICA3MiwgMjQ3LCAxNTUsIDE4LCAxOSwgNzIsIDI0NywgMTU0LCAxOCwgMTksIDcyLCAyNDcsIDE1MSwgMTgsIDE5LCA3MiwgCi0gICAgMjQ3LCAxNTYsIDE4LCAxOSwgNzIsIDIzMiwgMjQ0LCAxOCwgMTksIDcyLCAyMzIsIDI0NiwgMTgsIDE5LCA3MiwgMjMyLCAKLSAgICAyNTAsIDE4LCAxOSwgNzIsIDIzMiwgMjQ5LCAxOCwgMTksIDcyLCAyMzIsIDI0OCwgMTgsIDE5LCA3MiwgMjMyLCAyNTQsIAotICAgIDE4LCAxOSwgNzIsIDIxNiwgNTAsIDE4LCAxOSwgNzIsIDIxNiwgNTIsIDE4LCAxOSwgNzIsIDIxNiwgNTUsIDE4LCAxOSwgCi0gICAgNzIsIDIxNiwgNTQsIDE4LCAxOSwgNzIsIDIxNiwgNTMsIDE4LCAxOSwgNzIsIDIxNiwgNTYsIDE4LCAxOSwgNzIsIDIxNiwgCi0gICAgNDUsIDE4LCAxOSwgNzIsIDIxNiwgNDYsIDE4LCAxOSwgNzIsIDIxNiwgNTgsIDE4LCAxOSwgNzIsIDIxNiwgNTcsIDE4LCAKLSAgICAxOSwgNzIsIDIxNiwgNDcsIDE4LCAxOSwgNzIsIDIxNiwgNTksIDE4LCAxOSwgNzIsIDIxMCwgMTMsIDE4LCAxOSwgNzIsIAotICAgIDIxMCwgMjMsIDE4LCAxOSwgNzIsIDIxMCwgOTQsIDE4LCAxOSwgNzIsIDIxMCwgOTIsIDE4LCAxOSwgNzIsIDIxMCwgNDQsIAotICAgIDE4LCAxOSwgNzIsIDIxMCwgMTE2LCAxOCwgMTksIDcyLCAyMTAsIDE1OSwgMTgsIDE5LCA3MiwgNjUsIDIxMCwgMTU5LCAxOCwgCi0gICAgMTksIDcyLCAyNDYsIDI4LCAxOCwgMTksIDcyLCAyNDYsIDI5LCAxOCwgMTksIDcyLCAyNDYsIDM2LCAxOCwgMTksIDcyLCAKLSAgICAyNDYsIDM1LCAxOCwgMTksIDcyLCAyNDYsIDMxLCAxOCwgMTksIDcyLCAyNDYsIDM4LCAxOCwgMTksIDcyLCAyMTgsIDgzLCAKLSAgICAxOCwgMTksIDcyLCAyMTksIDU4LCAxOCwgMTksIDcyLCAyMjEsIDE4MSwgMTgsIDE5LCA3MiwgMjIxLCAxNzAsIDE4LCAxOSwgCi0gICAgNzIsIDIxOSwgMTkxLCAxOCwgMTksIDcyLCAyMDYsIDE4LCAxOSwgNzIsIDIxOSwgMjI1LCAxOCwgMTksIDcyLCAyMjAsIDcsIAotICAgIDE4LCAxOSwgNzIsIDIyMCwgNjMsIDE4LCAxOSwgNzIsIDIyMCwgNjEsIDE4LCAxOSwgNzIsIDIyMCwgMzIsIDE4LCAxOSwgCi0gICAgNzIsIDIyMCwgMTAyLCAxOCwgMTksIDcyLCAyMjAsIDEwNCwgMTgsIDE5LCA3MiwgMjE1LCAxNjMsIDE4LCAxOSwgNzIsIAotICAgIDIxNSwgMTY2LCAxOCwgMTksIDcyLCAyMTUsIDE3OCwgMTgsIDE5LCA3MiwgMjE1LCAxNzcsIDE4LCAxOSwgNzIsIDIxNSwgCi0gICAgMTY3LCAxOCwgMTksIDcyLCAyMTUsIDE4MywgMTgsIDE5LCA3MiwgMjUwLCA2OSwgMTgsIDE5LCA3MiwgMjUwLCA4NiwgMTgsIAotICAgIDE5LCA3MiwgMjUwLCAxMzEsIDE4LCAxOSwgNzIsIDI1MCwgMTI4LCAxOCwgMTksIDcyLCAyNTAsIDExMCwgMTgsIDE5LCA3MiwgCi0gICAgMjUwLCAxNTcsIDE4LCAxOSwgNzIsIDIxNSwgMTI2LCAxOCwgMTksIDcyLCAyMTUsIDEyNywgMTgsIDE5LCA3MiwgMjE1LCAKLSAgICAxMzAsIDE4LCAxOSwgNzIsIDIxNSwgMTI5LCAxOCwgMTksIDcyLCAyMTUsIDEyOCwgMTgsIDE5LCA3MiwgMjE1LCAxMzEsIAotICAgIDE4LCAxOSwgMjUwLCAxMTEsIDUwLCAxOCwgMTksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTgsIDE5LCAyMjQsIDgwLCAxOCwgCi0gICAgMTksIDIyOSwgNzMsIDE4LCAxOSwgMjI4LCAxMDAsIDE4LCAxOSwgMjI4LCA5OSwgMTgsIDE5LCAyMjgsIDk4LCAxOCwgMTksIAotICAgIDIyOCwgOTcsIDE4LCAxOSwgMjI4LCAxMDIsIDE4LCAxOSwgMjI4LCAxMDEsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI1LCAKLSAgICAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNCwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjMsIDE4LCAxOSwgMjExLCAyMTMsIAotICAgIDIxNiwgMTIyLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjgsIDE4LCAxOSwgCi0gICAgMjExLCAyMTMsIDIxNiwgMTI3LCAxOCwgMTksIDIxMSwgMjEzLCA0MCwgMjE2LCAyMTAsIDE4LCAxOSwgMjUxLCAyMTgsIAotICAgIDIxMiwgOTgsIDIyNiwgMjI2LCAyMTksIDE5LCA3OCwgMjI2LCAyMjYsIDEsIDI1MiwgNDgsIDIyNiwgMjI2LCAxLCAyMzIsIAotICAgIDg3LCAyMjYsIDIyNiwgMSwgMjQ0LCAxNTEsIDIyNiwgMjI2LCAxLCAyMjIsIDE1LCAyMjYsIDIyNiwgMSwgMjI4LCAxOTMsIAotICAgIDIyNiwgMjI2LCAxLCAyMTQsIDIyNiwgMjI2LCAyMjYsIDEsIDI0OCwgMTk3LCAyMjYsIDIyNiwgMSwgMjE2LCA4MCwgMjI2LCAKLSAgICAyMjYsIDEsIDI0OSwgMjI5LCAyMjYsIDIyNiwgMSwgMjUwLCAxODAsIDIyNiwgMjI2LCAxLCAyMzAsIDkxLCAyMjYsIDIyNiwgCi0gICAgMSwgMjQyLCAxNTYsIDIyNiwgMjI2LCAxLCAyMjksIDYzLCAyMjYsIDIyNiwgMSwgMjE4LCAxMjIsIDIyNiwgMjI2LCAxLCAKLSAgICAyMjIsIDEzNSwgMjI2LCAyMjYsIDEsIDI1NCwgMTk4LCAyMjYsIDIyNiwgMSwgMjI2LCAxODcsIDIyNiwgMjI2LCAxLCAyMTQsIAotICAgIDE1MCwgMjI2LCAyMjYsIDEsIDI0NSwgMjMxLCAyMjYsIDIyNiwgMSwgMjM1LCAxODgsIDIyNiwgMjI2LCAxLCAyNDUsIDIzMiwgCi0gICAgMjI2LCAyMjYsIDEsIDIyNiwgMTU4LCAyMjYsIDIyNiwgMSwgMjE0LCAyMDYsIDIyNiwgMjI2LCAxLCAyMzYsIDM5LCAyMjYsIAotICAgIDIyNiwgMSwgMjQ1LCAyMjksIDIyNiwgMjI2LCAxLCAyMjUsIDIwMiwgMjI2LCAyMjYsIDI0NCwgMTUwLCA3OCwgMjI2LCAKLSAgICAyMjYsIDIyMywgNDksIDI0NCwgMTUwLCA3OCwgMTc4LCAxLCAyNDQsIDE0MSwgMjQ0LCAxMzMsIDI0NCwgMTU1LCAyNDUsIDYsIAotICAgIDE3OCwgMSwgMjE0LCAxMDUsIDE3OCwgMSwgMjE0LCAxMzUsIDIxNCwgMTUxLCA3MCwgMTc4LCAxLCAyMTAsIDIxNCwgMTc4LCAKLSAgICAxLCAyMTEsIDExNywgMTc4LCAxLCAyMTIsIDk4LCAxNzgsIDEsIDIxNiwgMTMwLCAyMTYsIDEyOSwgMjE2LCAxNTEsIDE3OCwgCi0gICAgMSwgMjQ1LCA1OSwgMTc4LCAxLCAyNTQsIDkzLCA2MSwgMTc4LCAxLCAyMjYsIDE0MywgNzYsIDE3OCwgMSwgMjU1LCAxNywgCi0gICAgNjEsIDE3OCwgMSwgMjU0LCAyMjcsIDE3OCwgMSwgMjMyLCAxMzMsIDc2LCAxNzgsIDEsIDIxOSwgMjQ0LCA3NiwgMTc4LCAxLCAKLSAgICA3NiwgMTc4LCAxLCAyMjYsIDIzNCwgMTc4LCAxLCAyMjYsIDE5NiwgMTc4LCAxLCAyMjMsIDE2NCwgMjIzLCAxNzcsIDIyMywgCi0gICAgOTQsIDE1MywgMTc4LCAxLCAyMzQsIDE5MywgMTc4LCAxLCAyNTAsIDE3NywgMTc4LCAxLCAyMzQsIDE5NCwgMjM1LCAyMywgCi0gICAgMTc4LCAxLCAyNDMsIDIwMiwgMTc4LCAxLCAyNDUsIDEzOCwgMTc4LCAxLCAyNDMsIDU4LCAyNDIsIDY2LCAyNDMsIDIwMiwgCi0gICAgMTc4LCAxLCAyNDMsIDk2LCAxNzgsIDEsIDIxMSwgMTg4LCAyMTEsIDE4MiwgMjEyLCA5OCwgMTc4LCAxLCAyNDIsIDM4LCAKLSAgICAyNDIsIDYwLCAxNzgsIDEsIDI0MiwgNDIsIDI0MiwgNjAsIDE3OCwgMSwgMjMyLCAxMzUsIDI0MiwgNjAsIDE3OCwgMSwgCi0gICAgMjE5LCAyNDcsIDI0MiwgNjAsIDE3OCwgMSwgMjI5LCAxODUsIDIyNywgMTU3LCAyMjksIDE4NiwgMjMwLCAyNSwgMTc4LCAxLCAKLSAgICAyMTksIDI0NSwgMjMwLCAyNSwgMTc4LCAxLCAyNDYsIDExNSwgMTc4LCAxLCAyMzUsIDE2OCwgMjM1LCAxNzIsIDIzNSwgCi0gICAgMTYyLCA3MywgMTc4LCAxLCA3NSwgMTc4LCAxLCAyMzUsIDExNywgMjM1LCAxNDQsIDE3OCwgMSwgMjQzLCA0MywgMTc4LCAxLCAKLSAgICAyMzIsIDEzNiwgMjU0LCAyNDMsIDE3OCwgMSwgMjE5LCAyNDksIDYxLCAxNzgsIDEsIDIzNSwgMTU0LCAyNDUsIDExMywgCi0gICAgMTc4LCAxLCAyMjUsIDE2NCwgMjI1LCAxODYsIDIyNiwgMTA1LCAxNzgsIDEsIDI1NCwgMTYzLCAyNDUsIDExMSwgMTc4LCAxLCAKLSAgICAyMTksIDI0LCAyMjIsIDkxLCAxNzgsIDEsIDIxOSwgMTc5LCAyMzIsIDEzMiwgMjIyLCA5MSwgMTc4LCAxLCAyMTksIDI0MywgCi0gICAgMjIyLCA5MSwgMTc4LCAxLCAyNTEsIDY2LCAxNzgsIDEsIDIxMCwgMTU5LCAxNzgsIDEsIDIxNiwgNjMsIDIxNiwgNzMsIAotICAgIDIxNSwgNDEsIDIxNywgMTUyLCAxNzgsIDEsIDIxOSwgMjQyLCAyMTcsIDE1MiwgMTc4LCAxLCAyNDksIDYwLCAxNzgsIDEsIAotICAgIDI1MiwgMzEsIDI1MiwgMzQsIDI1MSwgMjI0LCAyNTMsIDE1OCwgMTc4LCAxLCAyMTksIDI0OCwgMjUzLCAxNTgsIDE3OCwgMSwgCi0gICAgMjQ2LCAxMTQsIDE3OCwgMSwgMjI2LCAxNzEsIDE3OCwgMSwgMjQ1LCAxOTYsIDI0NSwgMTk4LCA3NSwgMTc4LCAxLCAyMzEsIAotICAgIDE3OCwgMjMxLCAxODYsIDE5MywgMTc4LCAxLCAyMzIsIDEzNCwgMTkzLCAxNzgsIDEsIDIxOSwgMjQ2LCAxOTMsIDE3OCwgMSwgCi0gICAgMjMzLCA3MywgMjMzLCAxMTQsIDIzMiwgMTQzLCAxNTYsIDE3OCwgMSwgMjQ2LCAxMTYsIDE3OCwgMSwgMjM1LCAyMzAsIAotICAgIDE3OCwgMSwgMjM1LCAyMzEsIDE3OCwgMSwgMjQ4LCAyMTAsIDI0OCwgMjE1LCAyNDksIDYwLCAxNzgsIDEsIDIyNiwgMTM4LCAKLSAgICAyNDUsIDU4LCA3NiwgMTc4LCAxLCAyNDUsIDIyNywgMTc4LCAxLCAyMzUsIDE4NywgMTc4LCAxLCAyNDksIDc4LCAxNzgsIDEsIAotICAgIDI1MSwgMTcsIDE3OCwgMSwgMjUwLCAxODksIDE3OCwgMSwgMjE4LCAxNjEsIDE3OCwgMSwgMjMyLCAxMzEsIDE3OCwgMSwgCi0gICAgMjE5LCAyNDEsIDE3OCwgMSwgMjQwLCAxMTAsIDE3OCwgMSwgMjI0LCA5NiwgMTc4LCAxLCAyMTEsIDE3OCwgMTc4LCAyMTksIAotICAgIDE1NSwgMjI0LCAxNDAsIDE3OCwgMjMwLCA4NSwgMjI0LCAxNDAsIDE3OCwgMjQ5LCAxMzEsIDIyNCwgMTQwLCAxNzgsIDI1NCwgCi0gICAgNiwgODcsIDE3OCwgMjE1LCA4MiwgODcsIDE3OCwgMjUyLCA0NiwgODcsIDIxNywgODMsIDEsIDYxLCAyMTcsIDgzLCAxLCAKLSAgICA3MywgMjE3LCA4MywgMSwgNzAsIDIxNywgODMsIDEsIDE3NiwgMjE3LCA4MywgMSwgMjQzLCAxMzUsIDIxNywgODMsIDEsIAotICAgIDIyOSwgNzcsIDIxNywgODMsIDEsIDIxNywgMTA1LCAyMTcsIDgzLCAxLCAyNDgsIDIyMSwgMjE3LCA4MywgMSwgMTk3LCAKLSAgICAyMTcsIDgzLCAxLCAxOTAsIDIxNywgODMsIDEsIDI1MiwgMTkxLCAyMTcsIDgzLCAxLCAxODQsIDIxNywgODMsIDEsIDE5MSwgCi0gICAgMjE3LCA4MywgMSwgMjMzLCAxMzUsIDIxNywgODMsIDEsIDIxMiwgNjUsIDIxNywgODMsIDEsIDIwNiwgMjE3LCA4MywgMSwgCi0gICAgMTYyLCAyMTcsIDgzLCAyNSwgNSwgNzMsIDIxNywgODMsIDI1LCA1LCA3MCwgMjE3LCA4MywgNSwgMjEzLCAxNTIsIDI0MiwgCi0gICAgNywgMSwgNjEsIDI0MiwgNywgMSwgNzMsIDI0MiwgNywgMSwgNzAsIDI0MiwgNywgMSwgMTc2LCAyNDIsIDcsIDEsIDI0MywgCi0gICAgMTM1LCAyNDIsIDcsIDEsIDIyOSwgNzcsIDI0MiwgNywgMSwgMjE3LCAxMDUsIDI0MiwgNywgMSwgMjQ4LCAyMjEsIDI0MiwgCi0gICAgNywgMSwgMTk3LCAyNDIsIDcsIDEsIDE5MCwgMjQyLCA3LCAxLCAyNTIsIDE5MSwgMjQyLCA3LCAxLCAxODQsIDI0MiwgNywgCi0gICAgMSwgMTkxLCAyNDIsIDcsIDEsIDIwNSwgMjQyLCA3LCAxLCAyMzMsIDEzNSwgMjQyLCA3LCAxLCAyMTIsIDY1LCAyNDIsIDcsIAotICAgIDEsIDIwNiwgMjQyLCA3LCAxLCAxNjIsIDI0MiwgNywgMjUsIDUsIDczLCAyNDIsIDcsIDI1LCA1LCA3MCwgMjQyLCA3LCA1LCAKLSAgICAyMjYsIDQ5LCAyMjUsIDEyNiwgMjE5LCAxNTUsIDIyNCwgMTQwLCAyMjUsIDEyNiwgNTIsIDIyNCwgMTQwLCAyNTEsIDEyMCwgCi0gICAgMSwgNjEsIDI1MSwgMTIwLCAxLCA3MywgMjUxLCAxMjAsIDEsIDcwLCAyNTEsIDEyMCwgMSwgMTc2LCAyNTEsIDEyMCwgMSwgCi0gICAgMjQzLCAxMzUsIDI1MSwgMTIwLCAxLCAyMjksIDc3LCAyNTEsIDEyMCwgMSwgMjE3LCAxMDUsIDI1MSwgMTIwLCAxLCAyNDgsIAotICAgIDIyMSwgMjUxLCAxMjAsIDEsIDE5NywgMjUxLCAxMjAsIDEsIDE5MCwgMjUxLCAxMjAsIDEsIDI1MiwgMTkxLCAyNTEsIDEyMCwgCi0gICAgMSwgMTg0LCAyNTEsIDEyMCwgMSwgMTkxLCAyNTEsIDEyMCwgMSwgMjA1LCAyNTEsIDEyMCwgMSwgMjMzLCAxMzUsIDI1MSwgCi0gICAgMTIwLCAxLCAyMTIsIDY1LCAyNTEsIDEyMCwgMSwgMjA2LCAyNTEsIDEyMCwgMSwgMTYyLCAyNTEsIDEyMCwgMjUsIDUsIDczLCAKLSAgICAyNTEsIDEyMCwgMjUsIDUsIDcwLCAyMTcsIDgyLCAxLCA2MSwgMjE3LCA4MiwgMSwgNzMsIDIxNywgODIsIDEsIDcwLCAyMTcsIAotICAgIDgyLCAxLCAxNzYsIDIxNywgODIsIDEsIDI0MywgMTM1LCAyMTcsIDgyLCAxLCAyMjksIDc3LCAyMTcsIDgyLCAxLCAyMTcsIAotICAgIDEwNSwgMjE3LCA4MiwgMSwgMjQ4LCAyMjEsIDIxNywgODIsIDEsIDE5NywgMjE3LCA4MiwgMSwgMTkwLCAyMTcsIDgyLCAxLCAKLSAgICAyNTIsIDE5MSwgMjE3LCA4MiwgMSwgMTg0LCAyMTcsIDgyLCAxLCAxOTEsIDIxNywgODIsIDEsIDIzMywgMTM1LCAyMTcsIAotICAgIDgyLCAxLCAyMTIsIDY1LCAyMTcsIDgyLCAxLCAyMDYsIDIxNywgODIsIDI1LCA1LCA3MywgMjE3LCA4MiwgMjUsIDUsIDcwLCAKLSAgICA2OSwgMSwgMTc2LCA2OSwgMSwgMjM0LCAxMzIsIDY5LCAxLCAyMzQsIDI4LCA2OSwgMSwgMjM0LCAxMDUsIDY5LCAxLCAyMjksIAotICAgIDQsIDY5LCAxLCAyNTEsIDMzLCA2OSwgMSwgMjUwLCAxNTcsIDY5LCAxLCAyNDksIDIzOCwgNjksIDEsIDI1MCwgODYsIDY5LCAKLSAgICAxLCAyMjcsIDEzNCwgNjksIDEsIDI0OCwgMjIxLCA2OSwgMSwgMjE1LCAxNDQsIDY5LCAxLCAyNDcsIDE0NSwgNjksIDEsIAotICAgIDIxNSwgMTM5LCA2OSwgMSwgMjI4LCA4MCwgNjksIDEsIDIxNywgMTA1LCA2OSwgMSwgMjE2LCAyMDgsIDY5LCAxLCAxMTEsIAotICAgIDY5LCAxLCAyMTYsIDE1NiwgNjksIDEsIDIyOCwgNzQsIDY5LCAxLCAyNTIsIDE5MSwgNjksIDEsIDIyNSwgMTQ3LCA2OSwgMSwgCi0gICAgMjI1LCAxNiwgNjksIDEsIDIyNSwgMTIxLCA2OSwgMSwgMjMwLCAxNjEsIDY5LCAxLCAyMTAsIDI0NCwgNjksIDEsIDIyMiwgCi0gICAgMjExLCA2OSwgMSwgMjMyLCAxNTYsIDY5LCAxLCAyMTMsIDEzOCwgNjksIDEsIDIyMCwgMTAyLCA2OSwgMSwgMjE4LCAxODQsIAotICAgIDY5LCAxLCAyMDYsIDY5LCAxLCAxNjIsIDY5LCAxLCAyMzMsIDEzNSwgNjksIDEsIDIyNCwgODgsIDY5LCAyMzUsIDI0MywgCi0gICAgMjUsIDIyNCwgNzQsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgODcsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNTMsIDY5LCAKLSAgICAyMzUsIDI0MywgMjUsIDIyNCwgNDgsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgCi0gICAgMiwgNjksIDIzNSwgMjQzLCAyNSwgMjIzLCAyNDYsIDY5LCAyMzUsIDI0MywgMjUsIDIyMywgMjQ1LCA2OSwgMjM1LCAyNDMsIAotICAgIDI1LCAyMjIsIDEwMCwgNjksIDIzNSwgMjQzLCAyNSwgMjIyLCA5MywgNjksIDIzNSwgMjQzLCAyNSwgMjMyLCA2MiwgNjksIAotICAgIDIzNSwgMjQzLCAyNSwgMjMyLCA1MiwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCA2OSwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAKLSAgICA4MCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzOCwgMjE1LCA0OSwgMTEwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDM4LCAKLSAgICAyMTUsIDQ5LCAxMDUsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNzAsIDY5LCAyNSwgMjM1LCAyMjksIDI1NCwgNDUsIDY5LCAKLSAgICAyNSwgMjM1LCAyMjksIDI1NSwgNzMsIDY5LCAyNSwgNSwgMjU1LCA3MywgNjksIDI1LCA1LCA3MywgNjksIDI1LCA1LCAyMzYsIAotICAgIDMzLCA2OSwgMjUsIDUsIDIxMSwgMTE3LCA2OSwgMjUsIDUsIDIxMCwgMTY5LCA2OSwgMjUsIDUsIDcwLCA2OSwgMjUsIDUsIAotICAgIDIxNCwgMTE4LCA2OSwgMjUsIDUsIDIxNCwgMjI5LCA2OSwgMjUsIDUsIDIyNiwgMjM0LCA2OSwgMjUsIDUsIDE5MSwgNjksIAotICAgIDI1LCA1LCAyMzYsIDYwLCA2OSwgMjUsIDUsIDc1LCA2OSwgMjUsIDUsIDI1NCwgMjQzLCA2OSwgMjUsIDUsIDI1NCwgMjAxLCAKLSAgICA2OSwgMjUsIDUsIDIyNiwgMTgzLCA2OSwgMjUsIDUsIDI1MywgMTkyLCA2OSwgNSwgMjI4LCAyMDYsIDY5LCA1LCAyMjMsIAotICAgIDEyNiwgNjksIDUsIDIxMCwgMTgwLCA2OSwgNSwgMjMwLCA1MiwgNjksIDUsIDIxNSwgMjEzLCA2OSwgNSwgMjUyLCAxNDMsIAotICAgIDY5LCA1LCAyMjIsIDIwNiwgNjksIDUsIDIxNiwgNDAsIDY5LCA1LCAyMzQsIDI0MSwgNjksIDUsIDI1NCwgMjAzLCA2OSwgNSwgCi0gICAgMjIxLCAyNDQsIDIyMSwgMjM4LCA2OSwgNSwgMjEzLCAxNDksIDY5LCA1LCAyNDksIDIzMiwgNjksIDUsIDI1MiwgMTE3LCAKLSAgICA2OSwgNSwgMjM0LCAxMjUsIDY5LCA1LCAyNTIsIDEzNywgNjksIDUsIDI1MSwgOSwgMjI1LCA3MiwgMjMzLCAxODcsIDY5LCAKLSAgICA1LCAyMzMsIDMwLCAyMTYsIDE3LCA2OSwgNSwgMjUyLCAyMCwgNjksIDUsIDIyNSwgMTIzLCAyMzAsIDk5LCA2OSwgNSwgCi0gICAgMjM0LCA5LCA2OSwgMjQ5LCA5OCwgMTYsIDIyMywgMjgsIDY5LCA1LCAyNTMsIDE3NCwgNjksIDUsIDI1MywgMTk1LCA2OSwgCi0gICAgMjEsIDIxMCwgODYsIDY5LCAyMSwgMTEwLCA2OSwgMjEsIDEwNSwgNjksIDIxLCAxNTgsIDY5LCAyMSwgMTYxLCA2OSwgMjEsIAotICAgIDE4OSwgNjksIDIxLCAxOTQsIDY5LCAyMSwgMTk4LCA2OSwgMjEsIDE5NSwgNjksIDIxLCAyMDAsIDY5LCAxNiwgMjMzLCAzMCwgCi0gICAgMjUzLCAxOTcsIDIxOSwgNDMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIzMCwgNzEsIDY5LCAxNiwgMjMzLCAzMCwgCi0gICAgMjUzLCAxOTcsIDIyNSwgNzEsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDI1MiwgNDksIDY5LCAxNiwgMjMzLCAzMCwgCi0gICAgMjUzLCAxOTcsIDI1MSwgMTAzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIxNSwgNjksIDE2LCAyMzMsIDMwLCAKLSAgICAyNTMsIDE5NywgMjI0LCAyMDksIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjA3LCA2OSwgMTYsIDIzMywgMzAsIAotICAgIDI1MywgMTk3LCAyMjQsIDIxMywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMTEsIDgzLCAyNTEsIDIzNiwgCi0gICAgODMsIDI0NSwgMTYzLCA4MywgMjQ5LCAyMTksIDgzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDgzLCAyNDksIDIyNiwgODMsIAotICAgIDI0NCwgMTEsIDI0NywgMTE4LCA4MywgMjE2LCAzOSwgMjE5LCA1MiwgMjQwLCAxNjgsIDgzLCAyMTksIDE5MCwgMywgMjUxLCAKLSAgICAxNzIsIDIzMSwgMTU0LCA4MywgMjMxLCAxODMsIDI0OSwgMjE5LCA4MywgMjMxLCAxODMsIDI0MywgMjI5LCAyMTgsIDEyOSwgCi0gICAgODMsIDIyOCwgMTkxLCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIDE1NywgMTEwLCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIAotICAgIDE1NywgMTA1LCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIDE1NywgMTU4LCA4MywgMjUsIDIyMCwgMTM3LCA4MywgMjEsIDIxMCwgCi0gICAgODYsIDgzLCAyMSwgMTEwLCA4MywgMjEsIDEwNSwgODMsIDIxLCAxNTgsIDgzLCAyMSwgMTYxLCA4MywgMjEsIDE4OSwgODMsIAotICAgIDIxLCAxOTQsIDgzLCAyMSwgMTk4LCA4MywgMjEsIDE5NSwgODMsIDIxLCAyMDAsIDgzLCAxLCA2MSwgODMsIDEsIDc1LCA4MywgCi0gICAgMSwgNzMsIDgzLCAxLCA3NiwgODMsIDEsIDcwLCA4MywgMSwgMjI2LCAyMzQsIDgzLCAxLCAyMTQsIDIxNCwgODMsIDEsIAotICAgIDI0NSwgMjA5LCA4MywgMSwgMTk3LCA4MywgMSwgMjU0LCAxMTUsIDgzLCAxLCAyNTIsIDE5MSwgODMsIDEsIDE5MCwgODMsIAotICAgIDEsIDIyNCwgODgsIDgzLCAxLCAyNDMsIDEzNSwgODMsIDEsIDE4NCwgODMsIDEsIDIzMywgMTM1LCA4MywgMSwgMjA2LCA4MywgCi0gICAgMSwgMjIwLCAxMDIsIDgzLCAxLCAyMTcsIDEwNSwgODMsIDEsIDI0OCwgMjIxLCA4MywgMSwgMjUwLCAxNTcsIDgzLCAxLCAKLSAgICAyMzUsIDE0MSwgODMsIDEsIDE5MSwgODMsIDEsIDIwNSwgODMsIDEsIDIxMiwgNjUsIDgzLCAxLCAyNDQsIDE5NiwgODMsIDEsIAotICAgIDE3NiwgODMsIDEsIDIzNCwgMTMyLCA4MywgMSwgMjE1LCAxODMsIDgzLCAxLCAyMTAsIDExNiwgODMsIDEsIDI0MiwgNDYsIAotICAgIDgzLCAxLCAyMTAsIDE2LCA4MywgMSwgMjMyLCAyNTQsIDgzLCAxLCAyMTAsIDY5LCA4MywgMSwgMjUwLCAxMTAsIDgzLCAxLCAKLSAgICAyMTYsIDM5LCAxOTksIDI1LCA1MCwgODMsIDEsIDIxNiwgMzksIDc1LCA4MywgMSwgMjE2LCAzOSwgNzMsIDgzLCAxLCAyMTYsIAotICAgIDM5LCA3NiwgODMsIDEsIDIxNiwgMzksIDcwLCA4MywgMSwgMjE2LCAzOSwgMjI2LCAyMzQsIDgzLCAxLCAyMTYsIDM5LCAKLSAgICAyMTQsIDIxNCwgODMsIDEsIDIxNiwgMzksIDI1NCwgMTE1LCA4MywgMSwgMjE2LCAzOSwgMjUyLCAxOTEsIDgzLCAxLCAyMTYsIAotICAgIDM5LCAxOTAsIDgzLCAxLCAyMTYsIDM5LCAyMjQsIDg4LCA4MywgMSwgMjE2LCAzOSwgMjQzLCAxMzUsIDgzLCAxLCAyMTYsIAotICAgIDM5LCAxODQsIDgzLCAxLCAyMTYsIDM5LCAyMTcsIDEwNSwgODMsIDEsIDIxNiwgMzksIDI0OCwgMjIxLCA4MywgMSwgMjE2LCAKLSAgICAzOSwgMjUwLCAxNTcsIDgzLCAxLCAyMTYsIDM5LCAyMzUsIDE0MSwgODMsIDEsIDIxNiwgMzksIDIxNSwgMTgzLCA4MywgMSwgCi0gICAgMjE2LCAzOSwgMTkxLCA4MywgMSwgMjE2LCAzOSwgMjEyLCA2NSwgODMsIDEsIDIxNiwgMzksIDE3NiwgODMsIDEsIDIxNiwgCi0gICAgMzksIDI0MywgMTMyLCA4MywgMSwgMjE2LCAzOSwgMjQyLCA0NiwgODMsIDEsIDIxNiwgMzksIDIzNSwgMTA3LCA4MywgMSwgCi0gICAgMjE2LCAzOSwgMjI4LCAyMzEsIDgzLCAxLCAyMTYsIDM5LCAyNDYsIDM4LCA4MywgMSwgMjE5LCAxOTAsIDc1LCA4MywgMSwgCi0gICAgMjE5LCAxOTAsIDczLCA4MywgMSwgMjE5LCAxOTAsIDIzNSwgMTUyLCA4MywgMSwgMjE5LCAxOTAsIDIxNCwgMjE0LCA4MywgCi0gICAgMSwgMjE5LCAxOTAsIDcwLCA4MywgMSwgMjE5LCAxOTAsIDI1NCwgMTE1LCA4MywgMSwgMjE5LCAxOTAsIDE3NiwgODMsIDEsIAotICAgIDIxOSwgMTkwLCAyNDMsIDEzNSwgODMsIDEsIDIxOSwgMTkwLCAxNjIsIDgzLCAxLCAyMTksIDE5MCwgMTkwLCA4MywgMSwgCi0gICAgMjE5LCAxOTAsIDIyMCwgMTAyLCA4MywgMSwgMjE5LCAxOTAsIDIxNywgMTA1LCA4MywgMSwgMjE5LCAxOTAsIDI0OCwgMjIxLCAKLSAgICA4MywgMSwgMjE5LCAxOTAsIDIzNSwgMTQxLCA4MywgMSwgMjE5LCAxOTAsIDI0NCwgMTk2LCA4MywgMSwgMjE5LCAxOTAsIAotICAgIDI0MywgMTMyLCA4MywgMSwgMjE5LCAxOTAsIDI0MiwgNDYsIDgzLCAxLCAyMTksIDE5MCwgMjE1LCAxODMsIDgzLCAxLCAKLSAgICAyMTksIDE5MCwgMjEwLCAxMTYsIDgzLCAxLCAyMTksIDE5MCwgMjIzLCAxODQsIDgzLCAxLCAyMTksIDE5MCwgMjUwLCAxNTcsIAotICAgIDgzLCAxLCAyMTksIDE5MCwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCA3MywgODMsIDEsIDIzMSwgMTgzLCAxNzYsIDgzLCAKLSAgICAxLCAyMzEsIDE4MywgMjA1LCA4MywgMSwgMjMxLCAxODMsIDI0NCwgMTk2LCA4MywgMSwgMjMxLCAxODMsIDIxMCwgODIsIAotICAgIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1NCwgNzYsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEzLCAKLSAgICAxNDgsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAxODYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAotICAgIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMzUsIDE5MywgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE2MiwgCi0gICAgMjQzLCAxMTYsIDI1MiwgMTU1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxMzQsIDI1MiwgMTU1LCA4MywgMSwgMjU0LCAKLSAgICAxNjIsIDI0MywgMTE2LCA2MSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgNzMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAKLSAgICAxMTYsIDE3NiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI5LCA3NywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCi0gICAgMjUxLCAzMywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE1LCAxNTYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAotICAgIDIxNSwgMTQ0LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDEzNSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCi0gICAgMjI4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKLSAgICAyNDgsIDIyMSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTkwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjUsIAotICAgIDE0NywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE4LCAyMjMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgCi0gICAgODIsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTQsIAotICAgIDIwOSwgODMsIDEsIDIxNiwgMzksIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyMTYsIDM5LCAyNTQsIAotICAgIDE2MiwgMjQzLCAxMTYsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDIsIDI0OSwgCi0gICAgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyOSwgNzcsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIAotICAgIDI0MywgMTE2LCAyNTEsIDMzLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjM1LCAxMTQsIDgzLCAxLCAKLSAgICAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTUsIDE1NiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAKLSAgICAxMTYsIDI0OCwgMTE5LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyMzEsIAotICAgIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDI1LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgCi0gICAgMjE4LCAyMjMsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDksIDcyLCA4MywgMSwgMjMxLCAxODMsIAotICAgIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgCi0gICAgMTE2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxNjMsIDcwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxNjMsIAotICAgIDE5MSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1MiwgMTgsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAKLSAgICAxMTYsIDI0OCwgMjExLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjMyLCAyNTQsIDE4LCAxOSwgCi0gICAgMjI2LCAxMDksIDE4LCAxOSwgMjUzLCAxNjcsIDE4LCAxOSwgMjU1LCAyOCwgMTgsIDE5LCAyMTIsIDI1LCAxOCwgMTksIAotICAgIDIyNCwgMjIxLCAxOCwgMTksIDIyNSwgMjI5LCAxOCwgMTksIDIyNCwgMTA1LCAxOCwgMTksIDIxNywgMzEsIDE4LCAxOSwgCi0gICAgMjM0LCAxODksIDE4LCAxOSwgMjMzLCAxNzksIDE4LCAxOSwgMjMxLCAxMzIsIDE4LCAxOSwgMjI4LCAzNywgMTgsIDE5LCAKLSAgICAyMjksIDE4MSwgMTgsIDE5LCAyMzMsIDY4LCAxOCwgMTksIDIxOSwgMjIsIDE4LCAxOSwgMjIxLCAyMTEsIDE4LCAxOSwgCi0gICAgMjE5LCAyMzIsIDE4LCAxOSwgMjIwLCA2NiwgMTgsIDE5LCAyMTksIDIwMSwgMTgsIDE5LCAyMTAsIDIyMCwgMTgsIDE5LCAKLSAgICAyMTEsIDUyLCAxOCwgMTksIDIyMywgMTM0LCAxOCwgMTksIDIyNywgMTcxLCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE3MSwgCi0gICAgMTgsIDE5LCAyMjcsIDE3MCwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNzAsIDE4LCAxOSwgMjI3LCAxNjksIDE4LCAxOSwgCi0gICAgMjI2LCAyMTYsIDIyNywgMTY5LCAxOCwgMTksIDIyNywgMTY4LCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE2OCwgMTgsIDE5LCAKLSAgICAyMjIsIDEwNSwgMTgsIDE5LCAyMjIsIDEwNCwgMTgsIDE5LCAyMjIsIDEwMywgMTgsIDE5LCAyMjIsIDEwMiwgMTgsIDE5LCAKLSAgICAyMjIsIDEwMSwgMTgsIDE5LCAyMjIsIDEwOSwgMTgsIDE5LCAyMjYsIDIxNiwgMjI2LCAxMDUsIDE4LCAxOSwgMjI2LCAyMTYsIAotICAgIDIxNywgMTUyLCAxOCwgMTksIDIyNiwgMjE2LCAyMzUsIDIzLCAxOCwgMTksIDIyNiwgMjE2LCAyNTEsIDY2LCAxOCwgMTksIAotICAgIDIyNiwgMjE2LCAxOTMsIDE4LCAxOSwgMjI2LCAyMTYsIDIzMCwgMjUsIDE4LCAxOSwgMjI2LCAyMTYsIDIyMiwgOTEsIDE4LCAKLSAgICAxOSwgMjI2LCAyMTYsIDIyMCwgMTA0LCAxOCwgMTksIDI0NSwgMjE5LCAyMTIsIDk4LCAxOCwgMTksIDIxMiwgNywgMjEyLCAKLSAgICA5OCwgMTgsIDE5LCA0MCwgNCwgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDIyMywgMTU3LCAyNDcsIDEyMCwgMTgsIDE5LCAyMjMsIAotICAgIDIyMywgMjIyLCAxMDYsIDE4LCAxOSwgMTU5LCAyMzIsIDEyNywgMTgsIDE5LCAxNTksIDIzMywgMTM0LCAxOCwgMTksIDIxNiwgCi0gICAgMTI2LCAxOCwgMTksIDIxNiwgMTI4LCAxOCwgMTksIDIxNSwgMTM2LCAxOCwgMTksIDIxNSwgMTM4LCAxOCwgMTksIDIxNSwgCi0gICAgMTQzLCAxOCwgMTksIDIxNiwgNDksIDE4LCAxOSwgMjE2LCA1MSwgMTgsIDE5LCAyMjEsIDIwOSwgMjE5LCAyMDYsIDE4LCAKLSAgICAxOSwgMjIxLCAyMDksIDIyMCwgMSwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCA1MywgMTgsIDE5LCA3MiwgMjQyLCA3MywgMTgsIAotICAgIDE5LCA3MiwgMjQ4LCA1MiwgMjQzLCA1NSwgMTgsIDE5LCA3MiwgMjQzLCAxMzIsIDE4LCAxOSwgNzIsIDI0MiwgNzgsIDE4LCAKLSAgICAxOSwgMjIxLCAyMDksIDIzNSwgMzMsIDE4LCAxOSwgNzIsIDIzNSwgMzEsIDE4LCAxOSwgMjUyLCA2OCwgMjQ4LCA1MiwgCi0gICAgMTU2LCAxOCwgMTksIDI1MiwgNjgsIDI0OCwgNTIsIDE1MywgMTgsIDE5LCA3MiwgMjQ4LCA0NywgMjIyLCA5MSwgMjMyLCAKLSAgICAyMjMsIDIxMywgMTIyLCAyMzMsIDEwLCAyMzIsIDIyMywgMSwgMTc2LCAyMzIsIDIyMywgMSwgMjM0LCAxMzIsIDIzMiwgCi0gICAgMjIzLCAxLCAyNDMsIDEzNSwgMjMyLCAyMjMsIDEsIDI0MiwgMjQ5LCAyMzIsIDIyMywgMSwgMjI5LCA3NywgMjMyLCAyMjMsIAotICAgIDEsIDI1MSwgMzMsIDIzMiwgMjIzLCAxLCAyNTAsIDE1NywgMjMyLCAyMjMsIDEsIDIzNSwgMTQxLCAyMzIsIDIyMywgMSwgCi0gICAgMjM1LCAxMTQsIDIzMiwgMjIzLCAxLCAyMTEsIDcxLCAyMzIsIDIyMywgMSwgMjE3LCAxMDUsIDIzMiwgMjIzLCAxLCAyMTYsIAotICAgIDIwOCwgMjMyLCAyMjMsIDEsIDI0OCwgMjIxLCAyMzIsIDIyMywgMSwgMjQ4LCAyNSwgMjMyLCAyMjMsIDEsIDE5NywgMjMyLCAKLSAgICAyMjMsIDEsIDE5MCwgMjMyLCAyMjMsIDEsIDIyNSwgMTQ3LCAyMzIsIDIyMywgMSwgMjUyLCAxOTEsIDIzMiwgMjIzLCAxLCAKLSAgICAyNTIsIDE4LCAyMzIsIDIyMywgMSwgMTg0LCAyMzIsIDIyMywgMSwgMTkxLCAyMzIsIDIyMywgMSwgMjA1LCAyMzIsIDIyMywgCi0gICAgMSwgMjMzLCAxMzUsIDIzMiwgMjIzLCAxLCAyMTIsIDY1LCAyMzIsIDIyMywgMSwgMjIwLCAxMDIsIDIzMiwgMjIzLCAxLCAKLSAgICAyMTgsIDIyMywgMjMyLCAyMjMsIDEsIDIwNiwgMjMyLCAyMjMsIDEsIDE2MiwgMjMyLCAyMjMsIDI1LCA1LCA2MSwgMjMyLCAKLSAgICAyMjMsIDI1LCA1LCA3MywgMjMyLCAyMjMsIDI1LCA1LCA3MCwgMjMyLCAyMjMsIDI1LCA1LCAyNDUsIDIwOSwgMjMyLCAyMjMsIAotICAgIDI1LCA1LCAyNTQsIDIwMSwgMjMyLCAyMjMsIDI1LCA1LCAyMjYsIDE4MywgMjMyLCAyMjMsIDI1LCA1LCAyNTMsIDE5MiwgCi0gICAgMjMyLCAyMjMsIDI1LCA1LCA3NSwgMjMyLCAyMjMsIDI1LCA1LCA3NiwgMjMyLCAyMjMsIDIxOCwgNzMsIDEsIDE5MSwgMjMyLCAKLSAgICAyMjMsIDIxOCwgNzMsIDEsIDIwNSwgMjMyLCAyMjMsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDIzMiwgMjIzLCA0LCAxLCAxNzYsIAotICAgIDIzMiwgMjIzLCA0LCAxLCAyMjksIDc3LCAyMzIsIDIyMywgNCwgMSwgMjU0LCA3NSwgMjMyLCAyMjMsIDQsIDEsIDIxNywgCi0gICAgMTA1LCAyMzIsIDIyMywgNCwgMSwgMTk3LCAyMzIsIDIyMywgNCwgMSwgMTkwLCAyMzIsIDIyMywgNCwgMSwgMTg0LCAyMzIsIAotICAgIDIyMywgNCwgMSwgMjA1LCAyMzIsIDIyMywgNCwgMSwgMjMzLCAxMzUsIDIzMiwgMjIzLCA1LCAyMzAsIDg5LCAyMzIsIDIyMywgCi0gICAgNSwgMjM0LCAxNzEsIDIzMiwgMjIzLCA1LCAyMjIsIDMyLCAyMzIsIDIyMywgNSwgMjMyLCAxMjcsIDIzMiwgMjIzLCAyNDUsIAotICAgIDMxLCA3OCwgMjMyLCAyMjMsIDIyNCwgMTMsIDc4LCAyMzIsIDIyMywgMjEsIDIxMCwgODYsIDIzMiwgMjIzLCAyMSwgMTEwLCAKLSAgICAyMzIsIDIyMywgMjEsIDEwNSwgMjMyLCAyMjMsIDIxLCAxNTgsIDIzMiwgMjIzLCAyMSwgMTYxLCAyMzIsIDIyMywgMjEsIAotICAgIDE4OSwgMjMyLCAyMjMsIDIxLCAxOTQsIDIzMiwgMjIzLCAyMSwgMTk4LCAyMzIsIDIyMywgMjEsIDE5NSwgMjMyLCAyMjMsIAotICAgIDIxLCAyMDAsIDM5LCAyMzMsIDU5LCAxLCAxNzYsIDM5LCAyMzMsIDU5LCAxLCAyMTEsIDE2NSwgMzksIDIzMywgNTksIDEsIAotICAgIDIyOSwgNzcsIDM5LCAyMzMsIDU5LCAxLCAyMTUsIDE4MywgMzksIDIzMywgNTksIDEsIDIwNiwgMzksIDIzMywgNTksIDEsIAotICAgIDE5MSwgMzksIDIzMywgNTksIDEsIDIxNywgMTA1LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyMDgsIDM5LCAyMzMsIDU5LCAxLCAKLSAgICAyMzMsIDEzNSwgMzksIDIzMywgNTksIDEsIDE5MCwgMzksIDIzMywgNTksIDEsIDIyNSwgMTQ3LCAzOSwgMjMzLCA1OSwgMSwgCi0gICAgMTg0LCAzOSwgMjMzLCA1OSwgMSwgMjQ0LCAxOTYsIDM5LCAyMzMsIDU5LCAxLCAyMTQsIDI3LCAzOSwgMjMzLCA1OSwgMSwgCi0gICAgMTYyLCAzOSwgMjMzLCA1OSwgMSwgMjI0LCA4OCwgMzksIDIzMywgNTksIDEsIDIzNCwgMTMyLCAzOSwgMjMzLCA1OSwgMSwgCi0gICAgMjE1LCAxNzUsIDM5LCAyMzMsIDU5LCAxLCAxOTcsIDM5LCAyMzMsIDU5LCAxLCA2MSwgMzksIDIzMywgNTksIDEsIDczLCAKLSAgICAzOSwgMjMzLCA1OSwgMSwgMjQ1LCAyMDksIDM5LCAyMzMsIDU5LCAxLCAyNDUsIDE5NywgMzksIDIzMywgNTksIDEsIDcwLCAKLSAgICAzOSwgMjMzLCA1OSwgMSwgMjI2LCAxODMsIDM5LCAyMzMsIDU5LCAxLCA3NiwgMzksIDIzMywgNTksIDEsIDIxNCwgMjE0LCAKLSAgICAzOSwgMjMzLCA1OSwgMSwgNzUsIDM5LCAyMzMsIDU5LCAxLCAyNTMsIDE5MCwgMzksIDIzMywgNTksIDEsIDI1NCwgMjAxLCAKLSAgICAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyOCwgMzksIDIzMywgNTksIDEsIDIxNiwgMjcsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIAotICAgIDI2LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyNSwgMzksIDIzMywgNTksIDEsIDIxNiwgMjQsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgMTI1LCAyMjQsIDg4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI0LCA4OCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE3NiwgCi0gICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI5LCA3NywgMTY2LCAzOSwgCisgICAgMTY0LCAyNTEsIDEzMSwgMjIyLCAxNDQsIDYzLCAxNjQsIDIyOSwgNjksIDI1MSwgNjksIDIyNywgMTUwLCAyMTAsIDI1LCAKKyAgICA2MywgMTY0LCAyNTAsIDI0MCwgMjU1LCAxNjQsIDIyMiwgMTQ1LCAyNTEsIDcwLCAyMzAsIDIwMywgMjUxLCA4LCA2MywgCisgICAgMTY0LCAyMjksIDY5LCAyNTEsIDY5LCAyMjAsIDEwNywgMjIyLCAxNDQsIDYzLCAxNjQsIDI1MCwgMTMzLCAyMzAsIDI0OCwgCisgICAgNjMsIDE2NCwgMjE1LCAxODUsIDI1NSwgMTYxLCA2MywgMTY0LCAyNDIsIDEwMSwgMjIyLCAxNDUsIDI0MiwgNjQsIDYzLCAKKyAgICAxNjQsIDI0MiwgMTAxLCAyMjIsIDE0NSwgMjQyLCA3MCwgNjMsIDE2NCwgMjU0LCAxMTcsIDIzNCwgMTI0LCAyNDIsIDY0LCAKKyAgICA2MywgMTY0LCAyNTQsIDExNywgMjM0LCAxMjQsIDI0MiwgNzAsIDYzLCA1LCAyMTEsIDY1LCAyMTUsIDE3MiwgNjMsIDUsIAorICAgIDIzMSwgMTY4LCAyMTUsIDE3MiwgNjMsIDEsIDE3NiwgNjMsIDEsIDIzNCwgMTMzLCA2MywgMSwgMjQzLCAxMzYsIDYzLCAxLCAKKyAgICAyNDIsIDI1MCwgNjMsIDEsIDIyOSwgNzgsIDYzLCAxLCAyNTEsIDM0LCA2MywgMSwgMjUwLCAxNTgsIDYzLCAxLCAyMzUsIAorICAgIDE0MiwgNjMsIDEsIDIyNywgMTY2LCA2MywgMSwgMjE1LCAxNTcsIDYzLCAxLCAyMTUsIDE0NSwgNjMsIDEsIDI0OCwgMTM2LCAKKyAgICA2MywgMSwgMjQ4LCAxMjAsIDYzLCAxLCAyMjgsIDExMSwgNjMsIDEsIDIxNywgMTA2LCA2MywgMSwgMjE2LCAyMDksIDYzLCAKKyAgICAxLCAyNDgsIDIyMiwgNjMsIDEsIDI0OCwgMjYsIDYzLCAxLCAxOTcsIDYzLCAxLCAxOTAsIDYzLCAxLCAyMjUsIDE0OCwgNjMsIAorICAgIDEsIDI1MiwgMTkyLCA2MywgMSwgMjUyLCAxOSwgNjMsIDEsIDE4NSwgNjMsIDEsIDIxNSwgMTg0LCA2MywgMSwgMjE1LCAKKyAgICAxNzYsIDYzLCAxLCAyNDYsIDM5LCA2MywgMSwgMjQ2LCAzNCwgNjMsIDEsIDIxMiwgNjUsIDYzLCAxLCAyMTAsIDgyLCA2MywgCisgICAgMSwgMjEwLCAxMTYsIDYzLCAxLCAyNTUsIDE2NywgNjMsIDEsIDE5MSwgNjMsIDEsIDIwNSwgNjMsIDEsIDIzMywgMTM2LCAKKyAgICA2MywgMSwgMjIwLCAxMDMsIDYzLCAxLCAyMTgsIDIyNCwgNjMsIDEsIDIwNiwgNjMsIDEsIDE2MiwgNjMsIDEsIDYxLCA2MywgCisgICAgMSwgMjMzLCAyMzIsIDYzLCAxLCAyNDQsIDc4LCAyMDUsIDYzLCAxLCAyMzQsIDQ3LCA2MywgMSwgMjIyLCAxODAsIDYzLCAKKyAgICAyNSwgNSwgMjU1LCA3NCwgNjMsIDI1LCA1LCA3MywgNjMsIDI1LCA1LCAyMzYsIDM0LCA2MywgMjUsIDUsIDcwLCA2MywgMjUsIAorICAgIDUsIDIxNCwgMTE4LCA2MywgMjUsIDUsIDE0OSwgMTUzLCA2MywgMjUsIDUsIDE0OSwgMjIyLCAxODEsIDYzLCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDYzLCAyNSwgNSwgMTQ5LCAyMzIsIDE4NiwgNjMsIDI1LCA1LCA3NSwgNjMsIDI1LCA1LCAyNDUsIDIxMCwgCisgICAgNjMsIDI1LCA1LCA3NiwgNjMsIDI1LCA1LCAyMjYsIDE4NCwgNjMsIDUsIDIyMiwgMjIyLCAyMTgsIDg1LCAyMjksIDc5LCAKKyAgICAyMjIsIDIxMiwgNjMsIDUsIDIyMiwgMjE3LCAyNTIsIDc3LCA2MywgMjUsIDUsIDIyMywgNTAsIDczLCA2MywgMjUsIDUsIAorICAgIDIyMywgNTAsIDIzNiwgMzQsIDYzLCA1LCAyMjcsIDE1MCwgMjEwLCAyNiwgMjI5LCAyMjcsIDI0OCwgMjIyLCA2MywgNSwgCisgICAgMjE5LCA3MiwgMjMzLCA2MSwgNjMsIDE2NCwgMjQyLCAzMCwgNjMsIDE2NCwgMjI2LCA1OCwgNjMsIDUsIDIzMywgNjQsIAorICAgIDIyMiwgMTQ0LCA2MywgNSwgMjExLCA3MCwgMjIyLCAxNDQsIDYzLCA1LCAyMzMsIDY1LCAyMTUsIDE4NSwgMjUxLCA4LCA2MywgCisgICAgNSwgMjMxLCA5NiwgMjUxLCA4LCA2MywgNSwgMjQyLCAxMjAsIDI1MSwgOSwgMjIzLCA0MSwgNjMsIDUsIDI0MiwgMTIwLCAKKyAgICAyMzEsIDg2LCAyMjMsIDQxLCA2MywgNSwgMjM1LCAxOTQsIDIzMSwgOTYsIDI1MSwgOCwgNjMsIDIxOCwgNzQsIDUsIDIzMywgCisgICAgNjUsIDIxNSwgMTg1LCAyNTEsIDgsIDYzLCAyMTgsIDc0LCA1LCAyMzEsIDk2LCAyNTEsIDgsIDYzLCAyMTgsIDc0LCA1LCAKKyAgICAyMzUsIDE5NCwgMjMxLCA5NiwgMjUxLCA4LCA2MywgMjE4LCA3NCwgMSwgMTc2LCA2MywgMjE4LCA3NCwgMSwgMjM0LCAxMzMsIAorICAgIDYzLCAyMTgsIDc0LCAxLCAyNDMsIDEzNiwgNjMsIDIxOCwgNzQsIDEsIDI0MiwgMjUwLCA2MywgMjE4LCA3NCwgMSwgMjI5LCAKKyAgICA3OCwgNjMsIDIxOCwgNzQsIDEsIDI1MSwgMzQsIDYzLCAyMTgsIDc0LCAxLCAyNTAsIDE1OCwgNjMsIDIxOCwgNzQsIDEsIAorICAgIDIzNSwgMTQyLCA2MywgMjE4LCA3NCwgMSwgMjI3LCAxNjYsIDYzLCAyMTgsIDc0LCAxLCAyMTUsIDE1NywgNjMsIDIxOCwgCisgICAgNzQsIDEsIDIxNSwgMTQ1LCA2MywgMjE4LCA3NCwgMSwgMjQ4LCAxMzYsIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDEyMCwgNjMsIAorICAgIDIxOCwgNzQsIDEsIDIyOCwgMTExLCA2MywgMjE4LCA3NCwgMSwgMjE3LCAxMDYsIDYzLCAyMTgsIDc0LCAxLCAyMTYsIDIwOSwgCisgICAgNjMsIDIxOCwgNzQsIDEsIDI0OCwgMjIyLCA2MywgMjE4LCA3NCwgMSwgMjQ4LCAyNiwgNjMsIDIxOCwgNzQsIDEsIDE5NywgCisgICAgNjMsIDIxOCwgNzQsIDEsIDE5MCwgNjMsIDIxOCwgNzQsIDEsIDIyNSwgMTQ4LCA2MywgMjE4LCA3NCwgMSwgMjUyLCAxOTIsIAorICAgIDYzLCAyMTgsIDc0LCAxLCAyNTIsIDE5LCA2MywgMjE4LCA3NCwgMSwgMTg1LCA2MywgMjE4LCA3NCwgMSwgMjE1LCAxODQsIAorICAgIDYzLCAyMTgsIDc0LCAxLCAyMTUsIDE3NiwgNjMsIDIxOCwgNzQsIDEsIDI0NiwgMzksIDYzLCAyMTgsIDc0LCAxLCAyNDYsIAorICAgIDM0LCA2MywgMjE4LCA3NCwgMSwgMjEyLCA2NSwgNjMsIDIxOCwgNzQsIDEsIDIxMCwgODIsIDYzLCAyMTgsIDc0LCAxLCAKKyAgICAyMTAsIDExNiwgNjMsIDIxOCwgNzQsIDEsIDI1NSwgMTY3LCA2MywgMjE4LCA3NCwgMSwgMTkxLCA2MywgMjE4LCA3NCwgMSwgCisgICAgMjA1LCA2MywgMjE4LCA3NCwgMSwgMjMzLCAxMzYsIDYzLCAyMTgsIDc0LCAxLCAyMjAsIDEwMywgNjMsIDIxOCwgNzQsIDEsIAorICAgIDIxOCwgMjI0LCA2MywgMjE4LCA3NCwgMSwgMjA2LCA2MywgMjE4LCA3NCwgMSwgMTYyLCA2MywgMjE4LCA3NCwgMSwgNjEsIAorICAgIDYzLCAyMTgsIDc0LCAxLCAyMzMsIDIzMiwgNjMsIDIxOCwgNzQsIDEsIDI0NCwgNzgsIDIxMiwgNjUsIDYzLCAyMTgsIDc0LCAKKyAgICAxLCAyNDQsIDc4LCAxOTEsIDYzLCAyMTgsIDc0LCAxLCAyNDQsIDc4LCAyMDUsIDYzLCAyMzMsIDIxOSwgMjIyLCAxNDIsIAorICAgIDIzNCwgMTMzLCA2MywgMjMzLCAyMTksIDIyMiwgMTQyLCAyMzQsIDEzNCwgMjUxLCA3MCwgMjMwLCAyMDMsIDI1MSwgOCwgCisgICAgNjMsIDI1MCwgMjUzLCA1LCAxMTQsIDI1MiwgNzEsIDYzLCAyNTAsIDI1MywgNSwgMTkyLCAyNTIsIDcxLCA2MywgMjUwLCAKKyAgICAyNTMsIDUsIDI1MCwgMjU0LCAyMTcsIDIxLCA2MywgMjUwLCAyNTMsIDUsIDIyMSwgMjA4LCAyNTUsIDE2NiwgNjMsIDE2LCAKKyAgICAyNDYsIDkyLCAyNTEsIDEyNiwgNjMsIDE2LCAyMjMsIDEzMCwgMjIyLCAyMjMsIDYzLCAxNiwgMjI2LCA3OCwgMjQzLCA2NCwgCisgICAgNjMsIDE2LCAyMjMsIDEzMCwgMjIyLCAyMjQsIDIyMywgNDMsIDI0MiwgMTQ2LCA2MywgMTYsIDIyNSwgMTEzLCAxOTAsIDYzLCAKKyAgICAxNiwgMjI4LCA2MCwgMjUxLCAxMjYsIDYzLCAxNiwgMjI4LCA2MCwgMjUxLCAxMjcsIDIyNywgMTQwLCAyNTUsIDE2MywgNjMsIAorICAgIDE2LCAyMjgsIDYwLCAyNTEsIDEyNywgMjQyLCAxMTgsIDI1NSwgMTYzLCA2MywgMTYsIDIyOCwgNjAsIDI1MSwgMTI3LCAKKyAgICAyNTEsIDcwLCAyNTUsIDE2MywgNjMsIDUsIDIyMywgMTMxLCAyMjksIDIyMCwgMjIzLCAxMzEsIDI0NywgMTU5LCA2MywgNSwgCisgICAgMjIzLCAxMzEsIDIyOSwgMjIwLCAyNDIsIDExNywgNjMsIDE2NCwgMjUxLCAxMzAsIDIyMCwgNCwgMjQyLCAyMTYsIDIzMCwgCisgICAgMjQ5LCAyMjMsIDQyLCA2MywgMTY0LCAyMzAsIDE2NCwgMjExLCAwLCAyNDIsIDIxNiwgMjMwLCAyNDksIDIyMywgNDIsIDYzLCAKKyAgICAxNjQsIDIyNywgMTQwLCAyMTUsIDE3MywgNjMsIDE2NCwgNjUsIDI1MSwgMTUzLCAyMjIsIDIxNCwgMjExLCAwLCAyMzAsIAorICAgIDI0OSwgMjMxLCA5NCwgMTg1LCA2MywgMTY0LCAyNDksIDI1MywgMjUxLCAxNTMsIDIyMiwgMjE0LCAyMTEsIDAsIDIzMCwgCisgICAgMjQ5LCAyMjAsIDExMCwgMTg1LCAyMjIsIDI1MSwgMjE4LCAwLCA1MCwgMjMzLCA0NiwgMjE4LCAwLCA1MCwgMjIyLCAyNTEsIAorICAgIDIxOCwgMCwgNSwgMiwgMjQ3LCAxMTksIDIzMywgNDYsIDIxOCwgMCwgNSwgMiwgMjQ3LCAxMTksIDYzLCAxNjQsIDIzMywgCisgICAgNTYsIDIzMSwgOTcsIDIyMiwgMTQ0LCA2MywgMTY0LCAyMTUsIDI1MSwgMjMxLCA5NywgMjIyLCAxNDQsIDY4LCAxLCAxNzYsIAorICAgIDY4LCAxLCAyMzQsIDEzMywgNjgsIDEsIDI0MywgMTM2LCA2OCwgMSwgMjQyLCAyNTAsIDY4LCAxLCAyMjksIDc4LCA2OCwgMSwgCisgICAgMjUxLCAzNCwgNjgsIDEsIDI1MCwgMTU4LCA2OCwgMSwgMjM1LCAxNDIsIDY4LCAxLCAyMzUsIDExNSwgNjgsIDEsIDIyNywgCisgICAgMTY2LCA2OCwgMSwgMjI4LCA3NywgNjgsIDEsIDIxNSwgMTU3LCA2OCwgMSwgMjE1LCAxNDUsIDY4LCAxLCAyNDgsIDEzNiwgCisgICAgNjgsIDEsIDI0OCwgMTIwLCA2OCwgMSwgMjI4LCAxMTEsIDY4LCAxLCAyMTcsIDEwNiwgNjgsIDEsIDIxNiwgMjA5LCA2OCwgCisgICAgMSwgMjQ4LCAyMjIsIDY4LCAxLCAyNDgsIDI2LCA2OCwgMSwgMTk3LCA2OCwgMSwgMTkwLCA2OCwgMSwgMjI1LCAxNDgsIDY4LCAKKyAgICAxLCAyNTIsIDE5MiwgNjgsIDEsIDI1MiwgMTksIDY4LCAxLCAxODUsIDY4LCAxLCAxOTEsIDY4LCAxLCAyMDUsIDY4LCAxLCAKKyAgICAyMzMsIDEzNiwgNjgsIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAyMzIsIDE4NSwgNjgsIDEsIAorICAgIDYxLCA2OCwgMSwgMjIwLCA4NywgNjEsIDY4LCAxLCA3MywgNjgsIDEsIDIzNiwgMzQsIDY4LCAxLCA3MCwgNjgsIDEsIDIxNCwgCisgICAgMTE4LCA2OCwgMSwgNzUsIDY4LCAxLCAyMzAsIDE1MiwgNzUsIDY4LCAxLCA3NiwgNjgsIDEsIDI1MywgMTkzLCA2OCwgMjUsIAorICAgIDUsIDIxNywgNjUsIDI1NSwgNzQsIDY4LCAyNSwgNSwgMjU1LCA3NCwgNjgsIDI1LCA1LCA3MywgNjgsIDI1LCA1LCAyMzYsIAorICAgIDM0LCA2OCwgMjUsIDUsIDcwLCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc1LCA2OCwgMjUsIDUsIDI1NCwgCisgICAgMjAyLCA2OCwgMjUsIDUsIDIzMCwgMTUyLCAyMzYsIDM0LCA2OCwgMjUsIDUsIDIzMCwgMTUyLCA3NiwgNjgsIDI1LCA1LCAKKyAgICAxNjAsIDQ4LCA2OCwgNSwgMjU0LCA3NiwgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCA2OCwgNSwgMjEzLCAxNTIsIAorICAgIDY4LCA1LCAyNTMsIDIzNiwgNjgsIDExNiwgNSwgMTQ3LCAxOTEsIDY4LCAxMTYsIDUsIDE0NywgMjA1LCA2OCwgMTE2LCA1LCAKKyAgICAxNDcsIDIxMiwgNjUsIDY4LCAxMTYsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzMsIDIwNiwgNjgsIDIxLCAyMTAsIAorICAgIDg2LCA2OCwgMjEsIDExMCwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgNjgsIDIxLCAxODksIDY4LCAKKyAgICAyMSwgMTk0LCA2OCwgMjEsIDE5OCwgNjgsIDIxLCAxOTUsIDY4LCAyMSwgMjAwLCA2OCwgNSwgMjMyLCAxOTMsIDIyMSwgCisgICAgMTczLCA2OCwgNSwgMjIxLCAxNzMsIDY4LCAxNiwgMjMyLCAxNTQsIDY4LCAxNiwgMjQ5LCAyMTQsIDY4LCAxNiwgMjU0LCAKKyAgICAyMjEsIDY4LCAxNiwgMjQzLCA0OSwgNjgsIDEsIDIyMCwgMTAzLCA2OCwgMSwgMjE4LCAyMjQsIDY4LCAxLCAxNDksIDE1MywgCisgICAgNjgsIDEsIDE0OSwgMjIyLCAxODEsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxODYsIDY4LCAyNSwgNSwgCisgICAgMTQ5LCAxNTMsIDY4LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MSwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIDI1LCA1LCAxNDksIAorICAgIDIzMiwgMTg2LCA2OCwgMSwgMjMwLCAxNTIsIDIyOSwgNzgsIDY4LCAxLCAyMzAsIDE1MiwgMjM1LCAxMTUsIDY4LCAxLCAKKyAgICAyMzAsIDE1MiwgMjUyLCAxMTIsIDY4LCAxLCAyMzAsIDE1MiwgMjUyLCAxMDcsIDY4LCAxMTYsIDUsIDIzMCwgMTUyLCAxNDcsIAorICAgIDE5NywgNjgsIDExNiwgNSwgMjMwLCAxNTIsIDE0NywgMTg1LCA2OCwgMTE2LCA1LCAyMzAsIDE1MiwgMTQ3LCAyMzMsIDEzNiwgCisgICAgNjgsIDEsIDIyMCwgMTA5LCAyMzQsIDIxNCwgMjIwLCAxMDMsIDY4LCAyNSwgNSwgMjIwLCAxMDksIDIzNCwgMjE0LCAyNDUsIAorICAgIDU2LCA2OCwgMTM4LCAxNjQsIDIyMCwgMTA5LCAyMzQsIDIxNCwgMjQxLCAyNDgsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMDksIAorICAgIDIzNCwgMjE0LCAyMzQsIDE4NCwgMjI1LCAxMjIsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA5LCAyMzQsIDIxNCwgMjE2LCAKKyAgICAyMDksIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA5LCAyMzQsIDIxNCwgMjI0LCAxMTUsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIAorICAgIDEwOSwgMjM0LCAyMTQsIDI0NSwgNTYsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDEwOSwgMjM0LCAyMTQsIDIxNCwgMjE0LCAKKyAgICA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOSwgMjM0LCAyMTQsIDIxNiwgMzAsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA5LCAyMzQsIAorICAgIDIxNCwgMjE2LCAyOSwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDksIDIzNCwgMjE0LCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAKKyAgICAyMjQsIDEwOSwgMjM0LCAyMTQsIDIxNiwgMjcsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA5LCAyMzQsIDIxNCwgMjE2LCAyNiwgCisgICAgNjgsIDEsIDI0NSwgMjIwLCAyMjQsIDEwOSwgMjM0LCAyMTQsIDIyOCwgMTExLCA2OCwgMSwgMjQ1LCAyMjAsIDIyNCwgMTA5LCAKKyAgICAyMzQsIDIxNCwgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIyMCwgMjI0LCAxMDksIDIzNCwgMjE0LCAyNDIsIDIxOCwgNjgsIAorICAgIDI1LCA1LCAyNDMsIDYwLCAyMzQsIDIxNCwgNzMsIDY4LCAyNSwgNSwgMjM0LCAxODksIDIyNiwgMjM1LCA2OCwgMjUsIDUsIAorICAgIDIzNCwgMTg5LCA3MCwgNjgsIDI1LCA1LCAyMzQsIDE4OSwgMjQ1LCAyMTAsIDY4LCAxLCAyMjAsIDg3LCAxNzYsIDY4LCAxLCAKKyAgICAyMjAsIDg3LCAyMzQsIDEzMywgNjgsIDEsIDIyMCwgODcsIDI0MywgMTM2LCA2OCwgMSwgMjIwLCA4NywgMjUxLCAzNCwgNjgsIAorICAgIDEsIDIyMCwgODcsIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4NywgMjI3LCAxNjYsIDY4LCAxLCAyMjAsIDg3LCAyNDgsIDIyMiwgCisgICAgNjgsIDEsIDIyMCwgODcsIDE5NywgNjgsIDEsIDIyMCwgODcsIDIyNSwgMTQ4LCA2OCwgMSwgMjIwLCA4NywgMjQ0LCAxOTcsIAorICAgIDY4LCAxLCAyMjAsIDg3LCAyNTIsIDE5MiwgNjgsIDEsIDIyMCwgODcsIDIxNiwgMjA5LCA2OCwgMSwgMjIwLCA4NywgMTYyLCAKKyAgICA2OCwgMTE2LCA1LCAyMjAsIDg3LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCA4NywgMjU1LCA3NCwgNjgsIDI1LCAKKyAgICA1LCAyMjAsIDg3LCA3NSwgNjgsIDI1LCA1LCAyMjAsIDg3LCAxNjAsIDQ4LCA2OCwgMjUsIDUsIDIyMCwgODcsIDQwLCAyMTEsIAorICAgIDExNywgNjgsIDUsIDIyMCwgODcsIDIxNiwgMjksIDY4LCA1LCAyMjAsIDg3LCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4NywgCisgICAgMjE2LCAyNiwgNjgsIDUsIDIyMCwgODcsIDIxNiwgMjUsIDY4LCA1LCAyMjAsIDg3LCAyNDksIDE1MywgMjE2LCAyOSwgNjgsIAorICAgIDUsIDIyMCwgODcsIDI0OSwgMTUzLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4NywgMjQ5LCAxNTMsIDI0NSwgMTU0LCAyMTYsIAorICAgIDMxLCA2OCwgMSwgMjIyLCAxMjksIDIyNiwgNjQsIDI0NCwgMTk3LCA2OCwgNSwgMjIyLCAxMjksIDIyNiwgNjQsIDIxNiwgCisgICAgMjYsIDY4LCAyMjAsIDg3LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODcsIDIxLCAxMTAsIDY4LCAyMjAsIDg3LCAyMSwgMTA1LCAKKyAgICA2OCwgMjIwLCA4NywgMjEsIDE1OCwgNjgsIDIyMCwgODcsIDIxLCAxNjEsIDY4LCAyMjAsIDg3LCAyMSwgMTg5LCA2OCwgCisgICAgMjIwLCA4NywgMjEsIDE5NCwgNjgsIDIyMCwgODcsIDIxLCAxOTgsIDY4LCAyMjAsIDg3LCAyMSwgMTk1LCA2OCwgMjIwLCAKKyAgICA4NywgMjEsIDIwMCwgNjgsIDUsIDIzNCwgMTI3LCAyMTYsIDMwLCA2OCwgNSwgMjM0LCAxMjcsIDIxNiwgMjgsIDY4LCAyNSwgCisgICAgNSwgMjU0LCAxOTEsIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTkxLCAyNTQsIDIwMiwgNjgsIDE2LCAyMjAsIDg3LCAxMTAsIDY4LCAKKyAgICAxNiwgMjIwLCA4NywgMjQ1LCAzMSwgOTgsIDYsIDEsIDI1NCwgMTI0LCA5OCwgNiwgMSwgMjUyLCAxNTMsIDk4LCA2LCAxLCAKKyAgICAyNDMsIDEwNywgOTgsIDYsIDEsIDI0NywgMTI5LCA5OCwgNiwgMSwgMjQ1LCAxNTEsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIAorICAgIDYsIDEsIDIxMCwgODksIDk4LCA2LCAxLCAyMTcsIDYxLCA5OCwgNiwgMSwgMjM2LCAwLCA5OCwgNiwgMSwgMjM0LCAyMzUsIAorICAgIDk4LCA2LCAxLCAyMzMsIDgyLCA5OCwgNiwgMSwgMjMxLCAxODYsIDk4LCA2LCAxLCAyMjksIDE5NiwgOTgsIDYsIDEsIDIyNiwgCisgICAgMTk3LCA5OCwgNiwgMSwgMjI2LCAxOCwgOTgsIDYsIDEsIDIxMCwgNzgsIDk4LCA2LCAxLCAyMjMsIDE3MiwgOTgsIDYsIDEsIAorICAgIDIyMSwgMjQ0LCA5OCwgNiwgMSwgMjE3LCA1MSwgOTgsIDYsIDEsIDIxNCwgMTkwLCA5OCwgNiwgMSwgMjI1LCAxNDEsIDk4LCAKKyAgICA2LCAxLCAyMzQsIDEyMiwgOTgsIDYsIDEsIDI0MiwgMjQyLCA5OCwgNiwgMSwgMjI0LCA3NCwgOTgsIDYsIDEsIDIyMCwgMjEsIAorICAgIDk4LCA2LCAxLCAyNTAsIDk4LCA5OCwgNiwgMSwgMjUxLCA4LCA5OCwgNiwgMSwgMjM1LCAxMDEsIDk4LCA2LCAxLCAyNTAsIAorICAgIDQxLCA5OCwgNiwgMSwgMjUwLCAxNDQsIDk4LCA2LCAxLCAyMTEsIDE2MywgOTgsIDYsIDEsIDIzNSwgMTEyLCA5OCwgNiwgMSwgCisgICAgMjQyLCA0NCwgOTgsIDYsIDEsIDI0MSwgMjM5LCA5OCwgNiwgMSwgMjQxLCAxNzYsIDk4LCA2LCAxLCAyMTIsIDIyLCA5OCwgCisgICAgNiwgMSwgMjQyLCA1LCA5OCwgNiwgMSwgMjQxLCA2NiwgOTgsIDYsIDEsIDIxMCwgMjQ2LCA5OCwgNiwgMSwgMjU0LCAyMzMsIAorICAgIDk4LCAxLCAyNTQsIDEyNCwgOTgsIDEsIDI1MiwgMTUzLCA5OCwgMSwgMjQzLCAxMDcsIDk4LCAxLCAyNDcsIDEyOSwgOTgsIAorICAgIDEsIDI0NSwgMTUxLCA5OCwgMSwgMjEzLCAxNjAsIDk4LCAxLCAyMTAsIDg5LCA5OCwgMSwgMjE3LCA2MSwgOTgsIDEsIDIzNiwgCisgICAgMCwgOTgsIDEsIDIzNCwgMjM1LCA5OCwgMSwgMjMzLCA4MiwgOTgsIDEsIDIzMSwgMTg2LCA5OCwgMSwgMjI5LCAxOTYsIDk4LCAKKyAgICAxLCAyMjYsIDE5NywgOTgsIDEsIDIyNiwgMTgsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzIsIDk4LCAxLCAyMjEsIAorICAgIDI0NCwgOTgsIDEsIDIxNywgNTEsIDk4LCAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQxLCA5OCwgMSwgMjM0LCAxMjIsIAorICAgIDk4LCAxLCAyNDIsIDI0MiwgOTgsIDEsIDIyNCwgNzQsIDk4LCAxLCAyMjAsIDIxLCA5OCwgMSwgMjUwLCA5OCwgOTgsIDEsIAorICAgIDI1MSwgOCwgOTgsIDEsIDIzNSwgMTAxLCA5OCwgMSwgMjUwLCA0MSwgOTgsIDEsIDI1MCwgMTQ0LCA5OCwgMSwgMjExLCAKKyAgICAxNjMsIDk4LCAxLCAyMzUsIDExMiwgOTgsIDEsIDI0MiwgNDQsIDk4LCAxLCAyNDEsIDIzOSwgOTgsIDEsIDI0MSwgMTc2LCAKKyAgICA5OCwgMSwgMjEyLCAyMiwgOTgsIDEsIDI0MiwgNSwgOTgsIDEsIDI0MSwgNjYsIDk4LCAxLCAyNDQsIDEyMiwgOTgsIDEsIAorICAgIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNjYsIDk4LCAxLCAyMTUsIDk0LCAyNDMsIDEwNywgOTgsIDEsIDI1NCwgMTk3LCA5OCwgCisgICAgMjI2LCAxNiwgMjIwLCAxMzgsIDU4LCAxLCA5OCwgMjI5LCAxOTYsIDk4LCAxLCAyNTQsIDIzMywgOTgsIDEsIDI0MiwgNCwgCisgICAgNTAsIDk4LCAxLCAyMzMsIDEyOCwgNTAsIDI0LCAxMDAsIDIzNCwgNTksIDI0LCAxMDAsIDIxOCwgMjE2LCAyNCwgMTAwLCAKKyAgICAyMjgsIDIyNywgMjQsIDEwMCwgMjE2LCAxMDIsIDI0LCAxMDAsIDIxOCwgMjA1LCAyNCwgMTAwLCAyMjMsIDI3LCAyNCwgCisgICAgMTAwLCAyMzAsIDIxOCwgMjQsIDEwMCwgMjI1LCA5NiwgMjQsIDEwMCwgMjE4LCAyMTMsIDI0LCAxMDAsIDIxOSwgMTQ5LCAKKyAgICAyNCwgMTAwLCAyMTgsIDIxMCwgMjQsIDEwMCwgMjM2LCA1NywgMjQsIDEwMCwgMjUwLCA0NywgMjQsIDEwMCwgMjE4LCAyMjAsIAorICAgIDI0LCAxMDAsIDI1MCwgMTA3LCAyNCwgMTAwLCAyMzQsIDExMSwgMjQsIDEwMCwgMjE2LCAxNzQsIDI0LCAxMDAsIDIyNSwgCisgICAgMTMyLCAyNCwgMTAwLCAyNDEsIDE3MywgMjQsIDEwMCwgMjI4LCAyMjMsIDI0LCAxMDAsIDIxOCwgMjE0LCAyNCwgMTAwLCAKKyAgICAyMjgsIDIxNywgMjQsIDEwMCwgMjI4LCAyMjEsIDI0LCAxMDAsIDIxNiwgOTksIDI0LCAxMDAsIDIyMywgMTUsIDI0LCAxMDAsIAorICAgIDIxOCwgMjEyLCAyNCwgMTAwLCAyMjMsIDI1LCAyNCwgMTAwLCAyMzQsIDIxOSwgMjQsIDEwMCwgMjMwLCAyMTEsIDI0LCAKKyAgICAxMDAsIDIzNCwgMjIyLCAyNCwgMTAwLCAyMjUsIDkxLCAyNCwgMTAwLCAyMjUsIDg5LCAyNCwgMTAwLCAyMjUsIDc3LCAyNCwgCisgICAgMTAwLCAyMjUsIDg1LCAyNCwgMTAwLCAyMjUsIDgzLCAyNCwgMTAwLCAyMjUsIDgwLCAyNCwgMTAwLCAyMjUsIDgyLCAyNCwgCisgICAgMTAwLCAyMjUsIDc5LCAyNCwgMTAwLCAyMjUsIDg0LCAyNCwgMTAwLCAyMjUsIDk0LCAyNCwgMTAwLCAyMjUsIDk1LCAyNCwgCisgICAgMTAwLCAyMjUsIDc4LCAyNCwgMTAwLCAyMjUsIDg4LCAyNCwgMTAwLCAyMzQsIDIyMCwgMjQsIDEwMCwgMjM0LCAyMTgsIDI0LCAKKyAgICAxMDAsIDIxOSwgMTQyLCAyNCwgMTAwLCAyMTksIDE0MCwgMjQsIDEwMCwgMjE5LCAxMzIsIDI0LCAxMDAsIDIxOSwgMTM1LCAKKyAgICAyNCwgMTAwLCAyMTksIDE0MSwgMjQsIDEwMCwgMjE5LCAxMzcsIDI0LCAxMDAsIDIxOSwgMTM2LCAyNCwgMTAwLCAyMTksIAorICAgIDEzNCwgMjQsIDEwMCwgMjE5LCAxNDUsIDI0LCAxMDAsIDIxOSwgMTQ3LCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgCisgICAgMjE5LCAxNDMsIDI0LCAxMDAsIDIxOSwgMTMzLCAyNCwgMTAwLCAyMTksIDEzOCwgMjQsIDEwMCwgMjE5LCAxNDYsIDI0LCAKKyAgICAxMDAsIDI1MCwgOTEsIDI0LCAxMDAsIDI1MCwgODksIDI0LCAxMDAsIDI1MCwgMTY5LCAyNCwgMTAwLCAyNTAsIDE2NywgMjQsIAorICAgIDEwMCwgMjI2LCAzMywgMjQsIDEwMCwgMjM2LCA1MiwgMjQsIDEwMCwgMjM2LCA0MywgMjQsIDEwMCwgMjM2LCA1MSwgMjQsIAorICAgIDEwMCwgMjM2LCA0OCwgMjQsIDEwMCwgMjM2LCA0NiwgMjQsIDEwMCwgMjM2LCA1MCwgMjQsIDEwMCwgMjE4LCAyMTcsIDI0LCAKKyAgICAxMDAsIDIzNiwgNTUsIDI0LCAxMDAsIDIzNiwgNTYsIDI0LCAxMDAsIDIzNiwgNDQsIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAKKyAgICAxMDAsIDIxMSwgMjYsIDI0LCAxMDAsIDI1MCwgNDYsIDI0LCAxMDAsIDI1MCwgOTIsIDI0LCAxMDAsIDI1MCwgOTAsIDI0LCAKKyAgICAxMDAsIDI1MCwgMTcwLCAyNCwgMTAwLCAyNTAsIDE2OCwgMjQsIDEwMCwgMjUwLCAxMDUsIDI0LCAxMDAsIDI1MCwgMTA2LCAKKyAgICAyNCwgMTAwLCAyNTAsIDkzLCAyNCwgMTAwLCAyNTAsIDE3MSwgMjQsIDEwMCwgMjI1LCAxMzAsIDI0LCAxMDAsIDIzNCwgCisgICAgMjIxLCAyNCwgMTAwLCAyMTgsIDIxOCwgMjQsIDEwMCwgMjExLCAzMiwgMjQsIDEwMCwgMjM0LCA1MCwgMjQsIDEwMCwgMjI4LCAKKyAgICAyMTksIDI0LCAxMDAsIDIyOCwgMjI1LCAyNCwgMTAwLCAyMjgsIDIyNCwgMjQsIDEwMCwgMjE2LCA5NiwgMjQsIDEwMCwgCisgICAgMjQ0LCAxMDQsIDI0LCAxNDMsIDI0NCwgMTA0LCAyNCwgMTQzLCA2MSwgMjQsIDE0MywgMjU0LCAyNDQsIDI0LCAxNDMsIAorICAgIDE5MSwgMjQsIDE0MywgMjExLCA5MiwgMjQsIDE0MywgMjQ1LCAxMTgsIDI0LCAxNDMsIDc1LCAyNCwgMTQzLCAyMTEsIDM2LCAKKyAgICAyNCwgMTQzLCAyMTEsIDQ3LCAyNCwgMTQzLCA3NiwgMjQsIDE0MywgMjEyLCA2NSwgMjQsIDE0MywgMjEyLCA2MiwgMjQsIAorICAgIDE0MywgMjI2LCAyMzUsIDI0LCAxNDMsIDIxMCwgMjQ0LCAyNCwgMTQzLCA3MCwgMjQsIDE0MywgMjEyLCAxMSwgMjQsIDE0MywgCisgICAgMjEyLCAyMiwgMjQsIDE0MywgMjExLCAyNTAsIDI0LCAxNDMsIDIxMCwgMjEyLCAyNCwgMTQzLCAyNDUsIDU2LCAyNCwgMTQzLCAKKyAgICAyMTEsIDgsIDI0LCAxNDMsIDczLCAyNCwgMTQzLCAyNTUsIDE1OCwgMjQsIDE0MywgMjU1LCAxNTcsIDI0LCAxNDMsIDIxMSwgCisgICAgMTA2LCAyNCwgMTQzLCAyMTEsIDEwNCwgMjQsIDE0MywgMjQ1LCAxMTYsIDI0LCAxNDMsIDI0NSwgMTE1LCAyNCwgMTQzLCAKKyAgICAyNDUsIDExNywgMjQsIDE0MywgMjExLCAzNSwgMjQsIDE0MywgMjExLCAzNCwgMjQsIDE0MywgMjI3LCA4NSwgMjQsIDE0MywgCisgICAgMjI3LCA4NiwgMjQsIDE0MywgMjI3LCA3OSwgMjQsIDE0MywgMjI3LCA4NCwgMjQsIDE0MywgMjI3LCA4MiwgMjQsIDE0MywgCisgICAgMjEwLCAyMzgsIDI0LCAxNDMsIDIxMCwgMjM3LCAyNCwgMTQzLCAyMTAsIDIzNiwgMjQsIDE0MywgMjEwLCAyMzksIDI0LCAKKyAgICAxNDMsIDIxMCwgMjQwLCAyNCwgMTQzLCAyMTUsIDMwLCAyNCwgMTQzLCAyMTUsIDI5LCAyNCwgMTQzLCAyMTUsIDI3LCAyNCwgCisgICAgMTQzLCAyMTUsIDI0LCAyNCwgMTQzLCAyMTUsIDI1LCAyNCwgMTQzLCAyMTAsIDIxMSwgMjQsIDE0MywgMjEwLCAyMDgsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjA5LCAyNCwgMTQzLCAyMTAsIDIwMywgMjQsIDE0MywgMjEwLCAyMDQsIDI0LCAxNDMsIDIxMCwgMjA1LCAKKyAgICAyNCwgMTQzLCAyMTAsIDIwNywgMjQsIDE0MywgMjQ1LCA1MCwgMjQsIDE0MywgMjQ1LCA1MiwgMjQsIDE0MywgMjExLCA3LCAKKyAgICAyNCwgMTQzLCAyNDAsIDE1NCwgMjQsIDE0MywgMjQwLCAxNDYsIDI0LCAxNDMsIDI0MCwgMTQ5LCAyNCwgMTQzLCAyNDAsIAorICAgIDE0NywgMjQsIDE0MywgMjQwLCAxNTEsIDI0LCAxNDMsIDI0MCwgMTUzLCAyNCwgMTQzLCAyNTQsIDM1LCAyNCwgMTQzLCAKKyAgICAyNTQsIDMyLCAyNCwgMTQzLCAyNTQsIDMwLCAyNCwgMTQzLCAyNTQsIDMxLCAyNCwgMTQzLCAyMTgsIDIyMSwgMjQsIDE0MywgCisgICAgMjU1LCAxNTksIDI0LCAxNDMsIDIxMSwgMTA1LCAyNCwgMTQzLCAyMTEsIDMzLCAyNCwgMTQzLCAyMjcsIDgxLCAyNCwgMTQzLCAKKyAgICAyMjcsIDgwLCAyNCwgOTAsIDIzNCwgNTksIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjM0LCA1MiwgMjQsIDkwLCAyMjgsIAorICAgIDIyNywgMjQsIDkwLCAyMjgsIDIyNSwgMjQsIDkwLCAyMjgsIDIyNCwgMjQsIDkwLCAyMTYsIDEwMiwgMjQsIDkwLCAyMjMsIAorICAgIDI3LCAyNCwgOTAsIDIyMywgMjIsIDI0LCA5MCwgMjIzLCAxOSwgMjQsIDkwLCAyMjMsIDEyLCAyNCwgOTAsIDIyMywgNywgCisgICAgMjQsIDkwLCAyMjMsIDIsIDI0LCA5MCwgMjIzLCAxMywgMjQsIDkwLCAyMjMsIDI1LCAyNCwgOTAsIDIzMCwgMjE4LCAyNCwgCisgICAgOTAsIDIyNSwgOTYsIDI0LCA5MCwgMjI1LCA4NSwgMjQsIDkwLCAyMTksIDE0OSwgMjQsIDkwLCAyMTgsIDIxMCwgMjQsIDkwLCAKKyAgICAyMzYsIDU3LCAyNCwgOTAsIDI1MCwgNDcsIDI0LCA5MCwgMjUwLCAxMDcsIDI0LCA5MCwgMjM0LCAxMTEsIDI0LCA5MCwgCisgICAgMjE2LCAxNzQsIDI0LCA5MCwgMjI1LCAxMzIsIDI0LCA5MCwgMjQxLCAxNzMsIDI0LCA5MCwgMjM0LCA1MywgMjQsIDkwLCAKKyAgICAyMzQsIDUxLCAyNCwgOTAsIDIyOCwgMjIzLCAyNCwgOTAsIDIyOCwgMjE3LCAyNCwgOTAsIDIyOCwgMjE5LCAyNCwgOTAsIAorICAgIDIyOCwgMjIyLCAyNCwgOTAsIDIyOCwgMjE4LCAyNCwgOTAsIDIxNiwgOTksIDI0LCA5MCwgMjE2LCA5NiwgMjQsIDkwLCAKKyAgICAyMjMsIDIwLCAyNCwgOTAsIDIyMywgMTUsIDI0LCA5MCwgMjIzLCAxLCAyNCwgOTAsIDIyMywgMCwgMjQsIDkwLCAyMTgsIAorICAgIDIxMiwgMjQsIDkwLCAyMjMsIDE3LCAyNCwgOTAsIDIyMywgMTYsIDI0LCA5MCwgMjIzLCA5LCAyNCwgOTAsIDIyMywgMTEsIAorICAgIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMjMsIDQsIDI0LCA5MCwgMjIzLCAxNCwgMjQsIDkwLCAyMjMsIDIzLCAyNCwgCisgICAgOTAsIDIyMiwgMjU1LCAyNCwgOTAsIDIzMCwgMjE0LCAyNCwgOTAsIDIzMCwgMjA5LCAyNCwgOTAsIDIzMCwgMjExLCAyNCwgCisgICAgOTAsIDIzMCwgMjA4LCAyNCwgOTAsIDIzMCwgMjA2LCAyNCwgOTAsIDIzMCwgMjEyLCAyNCwgOTAsIDIzMCwgMjE3LCAyNCwgCisgICAgOTAsIDIzMCwgMjE1LCAyNCwgOTAsIDIzNCwgMjIyLCAyNCwgOTAsIDIyNSwgODcsIDI0LCA5MCwgMjI1LCA4OCwgMjQsIDkwLCAKKyAgICAyMjUsIDkzLCAyNCwgOTAsIDIzNCwgMjIwLCAyNCwgOTAsIDIxOSwgMTQyLCAyNCwgOTAsIDIxOSwgMTMyLCAyNCwgOTAsIAorICAgIDIxOSwgMTM1LCAyNCwgOTAsIDIxOSwgMTM3LCAyNCwgOTAsIDIyNiwgMzMsIDI0LCA5MCwgMjM2LCA1MiwgMjQsIDkwLCAKKyAgICAyMzYsIDQ1LCAyNCwgOTAsIDIxOCwgMjE3LCAyNCwgOTAsIDIzNiwgNTMsIDI0LCA5MCwgMjExLCAyNiwgMjQsIDkwLCAyMTEsIAorICAgIDIyLCAyNCwgOTAsIDIxMSwgMjMsIDI0LCA5MCwgMjI1LCAxMzAsIDI0LCA5MCwgMjM0LCAyMjEsIDI0LCA5MCwgMjQxLCAKKyAgICAxNzEsIDI0LCA5MCwgMjQxLCAxNjksIDI0LCA5MCwgMjQxLCAxNzIsIDI0LCA5MCwgMjQxLCAxNzAsIDI0LCA5MCwgMjExLCAKKyAgICAzMiwgMjQsIDkwLCAyMzQsIDU1LCAyNCwgOTAsIDIzNCwgNTQsIDI0LCA5MCwgMjM0LCA1OCwgMjQsIDkwLCAyMzQsIDU2LCAKKyAgICAyNCwgOTAsIDIzNCwgNTcsIDI0LCA5MCwgMjE4LCAyMTQsIDI5LCAzLCAxNjIsIDI5LCAzLCAyNDAsIDIyMywgMjksIDMsIAorICAgIDI0MSwgMTgxLCAyOSwgMywgMjQyLCA0NywgMjksIDMsIDI0MSwgMjIxLCAyOSwgMywgMjQxLCAyMzksIDI5LCAzLCAyNDEsIAorICAgIDY5LCAyOSwgMywgMjQxLCA2OCwgMjksIDMsIDIzMywgMTM2LCAyOSwgMywgMjMyLCA5OSwgMjksIDMsIDIzMiwgMjQyLCAyOSwgCisgICAgMywgMjMzLCAxMzUsIDI5LCAzLCAyMzMsIDUxLCAyOSwgMywgMjMzLCA1OSwgMjksIDMsIDIzMiwgMTU3LCAyOSwgMywgMjMyLCAKKyAgICA3MSwgMjksIDMsIDI0MSwgMTkwLCAyOSwgMywgMjQxLCAxODQsIDI5LCAzLCAyNDEsIDE4NiwgMjksIDMsIDI0MSwgMTg5LCAKKyAgICAyOSwgMywgMjQxLCAxODcsIDI5LCAzLCAyNDEsIDE4OCwgMjksIDMsIDI0MSwgMTg1LCAyOSwgMywgMjQxLCAxODMsIDI5LCAKKyAgICAzLCAxODUsIDI5LCAzLCAyMzAsIDEwMywgMjksIDMsIDIzMCwgMjMxLCAyOSwgMywgMjMxLCAyMzgsIDI5LCAzLCAyMzEsIAorICAgIDgxLCAyOSwgMywgMjMxLCA5MiwgMjksIDMsIDIzMCwgMTYyLCAyOSwgMywgMjMwLCA0MywgMjksIDMsIDIxNywgMTY0LCAyOSwgCisgICAgMywgMjE3LCAxNTgsIDI5LCAzLCAyMTcsIDE2MCwgMjksIDMsIDIxNywgMTYzLCAyOSwgMywgMjE3LCAxNjEsIDI5LCAzLCAKKyAgICAyMTcsIDE2MiwgMjksIDMsIDIxNywgMTU5LCAyOSwgMywgMjE3LCAxNTcsIDI5LCAzLCAyMDUsIDI5LCAzLCAyMjIsIDE0MSwgCisgICAgMjksIDMsIDIyMywgMzYsIDI5LCAzLCAyMjMsIDE4NSwgMjksIDMsIDIyMywgMTA5LCAyOSwgMywgMjIzLCAxMjksIDI5LCAzLCAKKyAgICAyMjIsIDIxMiwgMjksIDMsIDIyMiwgMTEwLCAyOSwgMywgMjA2LCAyOSwgMywgMjE4LCA4NCwgMjksIDMsIDIxOSwgMTkyLCAKKyAgICAyOSwgMywgMjIyLCAzMiwgMjksIDMsIDIyMSwgMTcxLCAyOSwgMywgMjIxLCAxODIsIDI5LCAzLCAyMTksIDU5LCAyOSwgMywgCisgICAgMjE3LCAyNTQsIDI5LCAzLCAyMjAsIDEwMywgMjksIDMsIDIxOSwgMjI2LCAyOSwgMywgMjIwLCAzMywgMjksIDMsIDIyMCwgCisgICAgOTksIDI5LCAzLCAyMjAsIDYyLCAyOSwgMywgMjIwLCA2NCwgMjksIDMsIDIyMCwgOCwgMjksIDMsIDIxOSwgMjA5LCAyOSwgCisgICAgMywgMjI0LCA4OSwgMjksIDMsIDIyNCwgMzEsIDI5LCAzLCAyMjQsIDU0LCAyOSwgMywgMjI0LCA4OCwgMjksIDMsIDIyNCwgCisgICAgNjksIDI5LCAzLCAyMjQsIDcwLCAyOSwgMywgMjI0LCA0MywgMjksIDMsIDIyNCwgNDIsIDI5LCAzLCAyMjMsIDI0MywgMjksIAorICAgIDMsIDIyMywgMjM5LCAyOSwgMywgMjIzLCAyNDIsIDI5LCAzLCAyMjMsIDI0MCwgMjksIDMsIDIyMywgMjQxLCAyOSwgMywgCisgICAgMjI0LCA2NiwgMjksIDMsIDIyNCwgNjAsIDI5LCAzLCAyMjQsIDYyLCAyOSwgMywgMjI0LCA2NSwgMjksIDMsIDIyNCwgNjMsIAorICAgIDI5LCAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2MSwgMjksIDMsIDIyNCwgNTksIDI5LCAzLCAyMjQsIDU1LCAyOSwgMywgCisgICAgMjI0LCA1OCwgMjksIDMsIDIyNCwgNTYsIDI5LCAzLCAyMjQsIDU3LCAyOSwgMywgMjUyLCAxOTIsIDI5LCAzLCAyNTEsIAorICAgIDEyNiwgMjksIDMsIDI1MiwgNywgMjksIDMsIDI1MiwgMTkwLCAyOSwgMywgMjUyLCA2NywgMjksIDMsIDI1MiwgNzYsIDI5LCAKKyAgICAzLCAyNTEsIDIwNiwgMjksIDMsIDI1MSwgODQsIDI5LCAzLCAyMTQsIDI3LCAyOSwgMywgMjEyLCAxMTYsIDI5LCAzLCAyMTMsIAorICAgIDE3NiwgMjksIDMsIDIxNCwgMjYsIDI5LCAzLCAyMTMsIDI1MCwgMjksIDMsIDIxMywgMjU1LCAyOSwgMywgMjEzLCAxMzgsIAorICAgIDI5LCAzLCAyMTIsIDEwNywgMjksIDMsIDIxNywgMTA2LCAyOSwgMywgMjE1LCAxMTksIDI5LCAzLCAyMTYsIDExOCwgMjksIAorICAgIDMsIDIxNywgMTAyLCAyOSwgMywgMjE3LCAxMiwgMjksIDMsIDIxNywgMjMsIDI5LCAzLCAxMTEsIDI5LCAzLCAyMTUsIDgwLCAKKyAgICAyOSwgMywgMjUxLCAzNCwgMjksIDMsIDI0OSwgMTEzLCAyOSwgMywgMjUwLCA1MiwgMjksIDMsIDI1MSwgMzMsIDI5LCAzLCAKKyAgICAyNTAsIDE4MywgMjksIDMsIDI1MCwgMTkxLCAyOSwgMywgMjQ5LCAyMzksIDI5LCAzLCAyNDksIDgyLCAyOSwgMywgMjExLCAKKyAgICAxNjUsIDI5LCAzLCAyMTEsIDE0MSwgMjksIDMsIDIxMSwgMTU3LCAyOSwgMywgMjExLCAxNjQsIDI5LCAzLCAyMTEsIDE2MSwgCisgICAgMjksIDMsIDIxMSwgMTYyLCAyOSwgMywgMjExLCAxNDgsIDI5LCAzLCAyMTEsIDE0NywgMjksIDMsIDIxMSwgMTM2LCAyOSwgCisgICAgMywgMjExLCAxMzIsIDI5LCAzLCAyMTEsIDEzNSwgMjksIDMsIDIxMSwgMTMzLCAyOSwgMywgMjExLCAxMzQsIDI5LCAzLCAKKyAgICAxOTcsIDI5LCAzLCAyMjcsIDIzOCwgMjksIDMsIDIyOCwgMjM0LCAyOSwgMywgMjI5LCAyMjYsIDI5LCAzLCAyMjksIDEwNCwgCisgICAgMjksIDMsIDIyOSwgMTA4LCAyOSwgMywgMjI4LCA3NSwgMjksIDMsIDIyNywgMTc1LCAyOSwgMywgMjI3LCAxNjYsIDI5LCAzLCAKKyAgICAyMjcsIDEyOSwgMjksIDMsIDIyNywgMTQ5LCAyOSwgMywgMjI3LCAxNjUsIDI5LCAzLCAyMjcsIDE1NiwgMjksIDMsIDIyNywgCisgICAgMTU3LCAyOSwgMywgMjI3LCAxMzUsIDI5LCAzLCAyMjcsIDEyMCwgMjksIDMsIDI0MiwgMTgxLCA2MSwgMjksIDMsIDI0MiwgCisgICAgMTgxLCA3MCwgMjksIDMsIDI0MiwgMTgxLCA3MywgMjksIDMsIDI0MiwgMTgxLCAyNTUsIDc0LCAyOSwgMywgMjQyLCAxODEsIAorICAgIDI0NSwgMjEwLCAyOSwgMywgMjQyLCAxODEsIDc1LCAyOSwgMywgMjQyLCAxODEsIDc2LCAyOSwgMywgMjQyLCAxODEsIDIxMiwgCisgICAgNjUsIDI5LCAzLCAxNzYsIDI5LCAzLCAyMzMsIDIxOCwgMjksIDMsIDIzNCwgOTMsIDI5LCAzLCAyMzUsIDExLCAyOSwgMywgCisgICAgMjM0LCAxODIsIDI5LCAzLCAyMzQsIDE4MywgMjksIDMsIDIzNCwgMjksIDI5LCAzLCAyMzQsIDI4LCAyOSwgMywgMjMzLCAKKyAgICAxODMsIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTgyLCAyOSwgMywgMjMzLCAxNzgsIDI5LCAzLCAyMzMsIDE3OSwgCisgICAgMjksIDMsIDIzMywgMTcyLCAyOSwgMywgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2OCwgMjksIDMsIDIzMywgMTcxLCAyOSwgCisgICAgMywgMjMzLCAxNjksIDI5LCAzLCAyMzMsIDE3MCwgMjksIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNjUsIDI5LCAzLCAKKyAgICAyMzMsIDE2MSwgMjksIDMsIDIzMywgMTY0LCAyOSwgMywgMjMzLCAxNjIsIDI5LCAzLCAyMzMsIDE2MywgMjksIDMsIDIxMiwgCisgICAgNjUsIDI5LCAzLCAyMTEsIDE5NSwgMjksIDMsIDIxMSwgMjUwLCAyOSwgMywgMjEyLCA2NCwgMjksIDMsIDIxMiwgMTcsIDI5LCAKKyAgICAzLCAyMTIsIDIyLCAyOSwgMywgMjExLCAyMjcsIDI5LCAzLCAyMTEsIDIyNiwgMjksIDMsIDIyNSwgMTQwLCA2MSwgMjksIDMsIAorICAgIDIyNSwgMTQwLCA3MCwgMjksIDMsIDIyNSwgMTQwLCA3MywgMjksIDMsIDIyNSwgMTQwLCAyNTUsIDc0LCAyOSwgMywgMjI1LCAKKyAgICAxNDAsIDI0NSwgMjEwLCAyOSwgMywgMjI1LCAxNDAsIDc1LCAyOSwgMywgMjI1LCAxNDAsIDc2LCAyOSwgMywgMjEwLCAxMTYsIAorICAgIDI5LCAzLCAyMTAsIDEzLCAyOSwgMywgMjEwLCA0NCwgMjksIDMsIDIxMCwgMTE1LCAyOSwgMywgMjEwLCA5MiwgMjksIDMsIAorICAgIDIxMCwgOTQsIDI5LCAzLCAyMTAsIDIzLCAyOSwgMywgMjEwLCAwLCAyOSwgMywgMjEwLCA4MiwgMjksIDMsIDIxMCwgNjIsIAorICAgIDI5LCAzLCAyMTAsIDY5LCAyOSwgMywgMjEwLCA4MSwgMjksIDMsIDIxMCwgNzMsIDI5LCAzLCAyMTAsIDc0LCAyOSwgMywgCisgICAgMjEwLCA2NywgMjksIDMsIDIxMCwgNTMsIDI5LCAzLCAxOTEsIDI5LCAzLCAyMTAsIDIxMiwgMjksIDMsIDIxMSwgOCwgMjksIAorICAgIDMsIDIxMSwgMTAzLCAyOSwgMywgMjExLCA0NCwgMjksIDMsIDIxMSwgNDcsIDI5LCAzLCAyMTAsIDI0NCwgMjksIDMsIDIxMCwgCisgICAgMjM1LCAyOSwgMywgMjQ4LCAyMjIsIDI5LCAzLCAyNDYsIDc5LCAyOSwgMywgMjQ4LCA0LCAyOSwgMywgMjQ4LCAyMjEsIDI5LCAKKyAgICAzLCAyNDgsIDc4LCAyOSwgMywgMjQ4LCA5MSwgMjksIDMsIDI0NywgMTQ2LCAyOSwgMywgMjQ2LCA0OCwgMjksIDMsIDI0OCwgCisgICAgMTM2LCAyOSwgMywgMjQ4LCAxMDEsIDI5LCAzLCAyNDgsIDExMywgMjksIDMsIDI0OCwgMTM1LCAyOSwgMywgMjQ4LCAxMjMsIAorICAgIDI5LCAzLCAyNDgsIDEyNCwgMjksIDMsIDI0OCwgMTA2LCAyOSwgMywgMjQ4LCA5MiwgMjksIDMsIDIzNSwgMTQyLCAyOSwgMywgCisgICAgMjM1LCA1MiwgMjksIDMsIDIzNSwgMTA5LCAyOSwgMywgMjM1LCAxNDEsIDI5LCAzLCAyMzUsIDEyNSwgMjksIDMsIDIzNSwgCisgICAgMTI3LCAyOSwgMywgMjM1LCA2OSwgMjksIDMsIDIzNSwgMzIsIDI5LCAzLCAyNDMsIDEzNiwgMjksIDMsIDI0MiwgMTE0LCAKKyAgICAyOSwgMywgMjQyLCAyMTUsIDI5LCAzLCAyNDMsIDEzMywgMjksIDMsIDI0MywgNTYsIDI5LCAzLCAyNDMsIDYzLCAyOSwgMywgCisgICAgMjQyLCAxNzUsIDI5LCAzLCAyNDIsIDE3NCwgMjksIDMsIDI0MiwgNzksIDI5LCAzLCAyNDIsIDc1LCAyOSwgMywgMjQyLCAKKyAgICA3OCwgMjksIDMsIDI0MiwgNzYsIDI5LCAzLCAyNDIsIDc3LCAyOSwgMywgMjQzLCAzMCwgMjksIDMsIDI0MywgMTAsIDI5LCAKKyAgICAzLCAyNDMsIDIwLCAyOSwgMywgMjQzLCAyOSwgMjksIDMsIDI0MywgMjQsIDI5LCAzLCAyNDMsIDI1LCAyOSwgMywgMjQzLCAKKyAgICAxNCwgMjksIDMsIDI0MiwgMjU1LCAyOSwgMywgMjE2LCAyMDksIDI5LCAzLCAyMTYsIDEzNywgMjksIDMsIDIxNiwgMTc2LCAKKyAgICAyOSwgMywgMjE2LCAyMDgsIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTk2LCAyOSwgMywgMjE2LCAxNTcsIDI5LCAKKyAgICAzLCAyMTYsIDEyOSwgMjksIDMsIDI1MCwgMTU4LCAyOSwgMywgMjUwLCA3MCwgMjksIDMsIDI1MCwgMTExLCAyOSwgMywgCisgICAgMjUwLCAxNTcsIDI5LCAzLCAyNTAsIDEyOSwgMjksIDMsIDI1MCwgMTMyLCAyOSwgMywgMjUwLCA4NywgMjksIDMsIDI1MCwgCisgICAgNTksIDI5LCAzLCAyMjUsIDE0OCwgMjksIDMsIDIyNSwgMTE1LCAyOSwgMywgMjI1LCAxMzQsIDI5LCAzLCAyMjUsIDE0NywgCisgICAgMjksIDMsIDIyNSwgMTM2LCAyOSwgMywgMjI1LCAxMzcsIDI5LCAzLCAyMjUsIDEyMiwgMjksIDMsIDIyNSwgMTExLCAyOSwgCisgICAgMywgMjE1LCAxODQsIDI5LCAzLCAyMTUsIDE2NCwgMjksIDMsIDIxNSwgMTY4LCAyOSwgMywgMjE1LCAxODMsIDI5LCAzLCAKKyAgICAyMTUsIDE3OCwgMjksIDMsIDIxNSwgMTc5LCAyOSwgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE2MiwgMjksIDMsIDIxNSwgCisgICAgMzksIDI5LCAzLCAyMTUsIDMxLCAyOSwgMywgMjE1LCAzNSwgMjksIDMsIDIxNSwgMzgsIDI5LCAzLCAyMTUsIDM2LCAyOSwgCisgICAgMywgMjE1LCAzNywgMjksIDMsIDIxNSwgMzMsIDI5LCAzLCAyMTUsIDMyLCAyOSwgMywgMjQ0LCAxOTcsIDI5LCAzLCAyNDMsIAorICAgIDIzNSwgMjksIDMsIDI0NCwgMTIyLCAyOSwgMywgMjQ0LCAxOTYsIDI5LCAzLCAyNDQsIDE0OCwgMjksIDMsIDI0NCwgMTU1LCAKKyAgICAyOSwgMywgMjQ0LCA0NCwgMjksIDMsIDI0MywgMjE0LCAyOSwgMywgMTkwLCAyOSwgMywgMjI0LCAxNTEsIDI5LCAzLCAyMjUsIAorICAgIDEwOSwgMjksIDMsIDIyNiwgOTAsIDI5LCAzLCAyMjUsIDIxMiwgMjksIDMsIDIyNSwgMjIyLCAyOSwgMywgMjI1LCAxNywgCisgICAgMjksIDMsIDIyNCwgMTE1LCAyOSwgMywgMjIyLCAxMDAsIDI5LCAzLCAyMzAsIDMyLCAyOSwgMywgMjQzLCAyMDgsIDI5LCAKKyAgICAzOCwgMjQzLCA1NCwgMjIsIDI1LCAyMzMsIDI0LCA3OCwgMjksIDM4LCAyNSwgMjMzLCAyNCwgNzgsIDI5LCAzOCwgMjQzLCAKKyAgICA1NCwgNzgsIDI5LCAyMjEsIDE3NCwgNzgsIDI5LCAyMTEsIDIwOCwgMjksIDI0MywgMjMwLCAyMTgsIDEzMCwgMjksIDI0OSwgCisgICAgMjIwLCAyOSwgMjIwLCAxNTEsIDI5LCAyNDksIDIyNywgMjksIDIyNCwgMjAwLCAyNDksIDIyNywgMjksIDIyNCwgMTQsIDc4LCAKKyAgICAyOSwgMjI2LCAxNiwgMjIwLCAxMzgsIDI5LCAyMSwgMTEwLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgCisgICAgMTYxLCAyOSwgMjEsIDE4OSwgMjksIDIxLCAxOTQsIDI5LCAyMSwgMTk4LCAyOSwgMjEsIDE5NSwgMjksIDIxLCAyMDAsIDI5LCAKKyAgICA1NCwgMjE2LCAyNDgsIDI5LCA1NCwgMjE1LCA3MywgMjksIDU0LCAyMTYsIDE2MywgMjksIDU0LCAyNDQsIDE2LCAyOSwgNTQsIAorICAgIDI0NCwgMTE1LCAyOSwgNTQsIDIxOSwgMTEyLCAyOSwgNTQsIDIyMCwgMTE3LCAyOSwgNTQsIDI0NSwgMTg1LCAyOSwgNTQsIAorICAgIDIyOCwgMTk2LCAyOSwgNTQsIDI0MCwgMjExLCAyOSwgNTQsIDIxNiwgMjQ5LCAyMTYsIDE0OCwgMjksIDMsIDIyMSwgMTc4LCAKKyAgICAyMzAsIDQzLCAyOSwgMywgMjMwLCAzOSwgMjksIDMsIDIzMCwgNDAsIDI5LCAzLCAyMzAsIDQxLCAyOSwgMywgMjIxLCAxNzgsIAorICAgIDI1MSwgODQsIDI5LCAzLCAyNTEsIDgxLCAyOSwgMywgMjUxLCA4MiwgMjksIDMsIDI1MSwgODMsIDI5LCAzLCAyMjEsIDE3OCwgCisgICAgMjQzLCAyMTQsIDI5LCAzLCAyNDMsIDIxMCwgMjksIDMsIDI0MywgMjExLCAyOSwgMywgMjQzLCAyMTIsIDI5LCAzLCAyMjEsIAorICAgIDE3OCwgMjI0LCAxMTUsIDI5LCAzLCAyMjQsIDExMSwgMjksIDMsIDIyNCwgMTEyLCAyOSwgMywgMjI0LCAxMTMsIDI5LCAKKyAgICAyMTYsIDMyLCAxNjQsIDIxMCwgMjQ3LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDgsIDQyLCAyOSwgMjE2LCAzMiwgMTY0LCAyMjIsIAorICAgIDIzOSwgMjksIDIxNiwgMzIsIDE2NCwgMjE5LCAyNTIsIDIyMiwgMjM5LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDcsIDIzNiwgCisgICAgMjksIDIxNiwgMzIsIDE2NCwgMjM0LCAxNjUsIDI5LCAyMTYsIDMyLCAxNjQsIDI1MCwgOTUsIDI5LCAyMTYsIDMyLCAxNjQsIAorICAgIDI0MSwgMTc4LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDgsIDQxLCAyOSwgMjE2LCAzMiwgMTY0LCAyMzMsIDE5NSwgMTY5LCAxLCAKKyAgICA2MSwgMTY5LCAxLCA3NSwgMTY5LCAxLCA3MywgMTY5LCAxLCA3NiwgMTY5LCAxLCA3MCwgMTY5LCAxLCAyMTQsIDEwNSwgCisgICAgMTY5LCAxLCAyNDMsIDEzNiwgMTY5LCAxLCAxNzYsIDE2OSwgMSwgMjQzLCA2MywgMTY5LCAxLCAyNDIsIDIxNSwgMTY5LCAxLCAKKyAgICAyNDIsIDE3NSwgMTY5LCAxLCAyNDIsIDExNCwgMTY5LCAxLCAyNDIsIDgwLCAxNjksIDEsIDE2MiwgMTY5LCAxLCAyNDEsIAorICAgIDIzOSwgMTY5LCAxLCAyNDEsIDE4MSwgMTY5LCAxLCAyNDEsIDY5LCAxNjksIDEsIDI0MCwgMjIzLCAxNjksIDEsIDI0MCwgCisgICAgMjAyLCAxNjksIDEsIDIzMywgMTM2LCAxNjksIDEsIDIzMywgNTksIDE2OSwgMSwgMjMyLCAyNDIsIDE2OSwgMSwgMjMyLCAKKyAgICAxNTcsIDE2OSwgMSwgMjMyLCA5OSwgMTY5LCAxLCAyMzIsIDcyLCAxNjksIDEsIDE4NSwgMTY5LCAxLCAyMzEsIDkyLCAxNjksIAorICAgIDEsIDIzMCwgMjMxLCAxNjksIDEsIDIzMCwgMTYyLCAxNjksIDEsIDIzMCwgMTAzLCAxNjksIDEsIDE5NywgMTY5LCAxLCAKKyAgICAyNDEsIDkxLCAxNjksIDEsIDIyOSwgMjE0LCAxNjksIDEsIDIyOSwgMTA4LCAxNjksIDEsIDIyOCwgMjM0LCAxNjksIDEsIAorICAgIDIyOCwgNzUsIDE2OSwgMSwgMjI3LCAyMzgsIDE2OSwgMSwgMjI3LCAxNzcsIDE2OSwgMSwgMjI0LCAzMCwgMTY5LCAxLCAKKyAgICAyMjQsIDE3LCAxNjksIDEsIDIyNCwgMTAsIDE2OSwgMSwgMjI0LCAyLCAxNjksIDEsIDIyMywgMjQ3LCAxNjksIDEsIDIyMywgCisgICAgMjQ1LCAxNjksIDEsIDIwNiwgMTY5LCAxLCAyMjIsIDkyLCAxNjksIDEsIDIyMSwgMTgyLCAxNjksIDEsIDIxOSwgMTkyLCAKKyAgICAxNjksIDEsIDIxOSwgNTksIDE2OSwgMSwgMjE4LCA4NCwgMTY5LCAxLCAyMTgsIDMsIDE2OSwgMSwgMjQ4LCAyMjIsIDE2OSwgCisgICAgMSwgMjE3LCAxMDYsIDE2OSwgMSwgMjQ4LCA5MSwgMTY5LCAxLCAyMTcsIDIzLCAxNjksIDEsIDI0OCwgNCwgMTY5LCAxLCAKKyAgICAyMTYsIDExOCwgMTY5LCAxLCAyNDcsIDE0NiwgMTY5LCAxLCAyNDYsIDc5LCAxNjksIDEsIDI0NiwgNTEsIDE2OSwgMSwgCisgICAgMjQ3LCAxNTcsIDE2OSwgMSwgMjE2LCA2MCwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgNDgsIDE2OSwgMSwgMjE2LCAKKyAgICA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE1LCAxODQsIDE2OSwgMSwgMjE1LCAxNzksIAorICAgIDE2OSwgMSwgMjE1LCAxNjgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjQsIDE2OSwgMSwgMjE1LCAxNjMsIAorICAgIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAKKyAgICAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAxNjksIDEsIDE5MSwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIAorICAgIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAKKyAgICAyNDAsIDE2OSwgMTgsIDE5LCA3NSwgMTgsIDE5LCAyNTUsIDM4LCAxOCwgMTksIDczLCAxOCwgMTksIDIzNiwgMzQsIDE4LCAKKyAgICAxOSwgNzYsIDE4LCAxOSwgMjI2LCAxODQsIDE4LCAxOSwgMjExLCAxMTYsIDIyNiwgMTg0LCAxOCwgMTksIDcyLCAyNDUsIAorICAgIDIxMCwgMTgsIDE5LCA3MiwgNzMsIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU1LCA3NCwgMTgsIDE5LCAyMTIsIDIyLCAxOCwgCisgICAgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgCisgICAgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIAorICAgIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgMTksIDIyOSwgMTkxLCAyMTEsIDIxNSwgMTgsIDE5LCAKKyAgICAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIAorICAgIDE5LCAyMjksIDE5MSwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIDIwMiwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIAorICAgIDE5LCAyNDIsIDE4MSwgMjE4LCAxMzAsIDE4LCAxOSwgNDAsIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxMzcsIDE4LCAxOSwgCisgICAgNDAsIDI1MSwgMTc2LCAxNjMsIDIyMiwgMjM0LCAxOCwgMTksIDQwLCAyMTYsIDE1LCAxNjMsIDIyMiwgMjM0LCAxOCwgMTksIAorICAgIDQwLCA0NCwgMTYzLCAyMjIsIDIzNCwgMTgsIDE5LCA0MCwgMjIyLCAyMzQsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgCisgICAgNDAsIDUyLCAyMTksIDI1MiwgNjcsIDIxOCwgOTEsIDE4LCAxOSwgNDAsIDIzMCwgMjI1LCAyNDcsIDEyMSwgMTgsIDE5LCAKKyAgICA0MCwgMjE5LCAyNTIsIDIwMywgOTEsIDE4LCAxOSwgNDAsIDIyNSwgMjMsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4OCwgMTgsIAorICAgIDE5LCAyNDUsIDE1MSwgMTgsIDE5LCAyMzYsIDAsIDE4LCAxOSwgMjI2LCAxOTcsIDE4LCAxOSwgMjU0LCAxMjQsIDE4LCAxOSwgCisgICAgMjI1LCAyMjIsIDE4LCAxOSwgMjI2LCA4OCwgMTgsIDE5LCAyMjUsIDEwOSwgMTgsIDE5LCAyMjUsIDcyLCAxOCwgMTksIAorICAgIDIyNSwgMTcsIDE4LCAxOSwgMjI0LCAyNTAsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMjUwLCAxOCwgMTksIDcyLCAyNDEsIAorICAgIDIyMSwgMTgsIDE5LCA3MiwgMjQxLCAxODEsIDE4LCAxOSwgMTkwLCAxOCwgMTksIDIyNiwgOTAsIDE4LCAxOSwgMjI0LCAKKyAgICAxMTMsIDE4LCAxOSwgMTU5LCAyMjQsIDExMywgMTgsIDE5LCAyMjQsIDExMSwgMTgsIDE5LCAxNTksIDIyNCwgMTExLCAxOCwgCisgICAgMTksIDIyNCwgMTEwLCAxOCwgMTksIDE1OSwgMjI0LCAxMTAsIDE4LCAxOSwgMjI0LCAxMDgsIDE4LCAxOSwgMTU5LCAyMjQsIAorICAgIDEwOCwgMTgsIDE5LCAyMjQsIDEwNywgMTgsIDE5LCAxNTksIDIyNCwgMTA3LCAxOCwgMTksIDIyNCwgMTE1LCAxOCwgMTksIAorICAgIDE1OSwgMjI0LCAxMTUsIDE4LCAxOSwgMjI0LCAxMTQsIDE4LCAxOSwgMTU5LCAyMjQsIDExNCwgMTgsIDE5LCAyMTEsIDExNiwgCisgICAgMjI0LCAxMTQsIDE4LCAxOSwgMjI2LCAxMDYsIDE4LCAxOSwgMTU5LCAyMjYsIDEwNiwgMTgsIDE5LCA3MiwgMjQyLCA2MSwgCisgICAgMTgsIDE5LCAyMTcsIDIzLCAxOCwgMTksIDIxNywgMTAwLCAxOCwgMTksIDIxNiwgMTE4LCAxOCwgMTksIDIxNiwgMTA0LCAKKyAgICAxOCwgMTksIDExMSwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxMSwgMTE2LCAyMTYsIDE4LCAxOCwgMTksIDcyLCAyNDgsIAorICAgIDc4LCAxOCwgMTksIDcyLCAyNDgsIDQsIDE4LCAxOSwgMjE3LCAxMDYsIDE4LCAxOSwgMjE3LCAxMDIsIDE4LCAxOSwgMjE1LCAKKyAgICA3OCwgMTgsIDE5LCAxNTksIDIxNSwgNzgsIDE4LCAxOSwgMjE1LCA2MiwgMTgsIDE5LCAxNTksIDIxNSwgNjIsIDE4LCAxOSwgCisgICAgMjE1LCA2MSwgMTgsIDE5LCAxNTksIDIxNSwgNjEsIDE4LCAxOSwgMTA1LCAxOCwgMTksIDE1OSwgMTA1LCAxOCwgMTksIAorICAgIDIxNSwgNTQsIDE4LCAxOSwgMTU5LCAyMTUsIDU0LCAxOCwgMTksIDIxNSwgODAsIDE4LCAxOSwgMTU5LCAyMTUsIDgwLCAxOCwgCisgICAgMTksIDIxNSwgNzksIDE4LCAxOSwgMTU5LCAyMTUsIDc5LCAxOCwgMTksIDIyOSwgMTkxLCAyMTUsIDc5LCAxOCwgMTksIAorICAgIDIxNywgMTUzLCAxOCwgMTksIDIxNSwgMTUyLCAxOCwgMTksIDIxNSwgMTM2LCAxOCwgMTksIDIxNSwgMTM0LCAxOCwgMTksIAorICAgIDIxNSwgMTU3LCAxOCwgMTksIDIzNCwgMTgzLCAxOCwgMTksIDIzNSwgOCwgMTgsIDE5LCAyMzQsIDkzLCAxOCwgMTksIDIzNCwgCisgICAgODQsIDE4LCAxOSwgMjM0LCAyOSwgMTgsIDE5LCAyMzQsIDExLCAxOCwgMTksIDIxMSwgMTE2LCAyMzQsIDExLCAxOCwgMTksIAorICAgIDE3NiwgMTgsIDE5LCAyMzUsIDExLCAxOCwgMTksIDIzMywgMTc5LCAxOCwgMTksIDE1OSwgMjMzLCAxNzksIDE4LCAxOSwgCisgICAgMjMzLCAxNzcsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NywgMTgsIDE5LCAyMzMsIDE3NiwgMTgsIDE5LCAxNTksIDIzMywgMTc2LCAKKyAgICAxOCwgMTksIDIzMywgMTc1LCAxOCwgMTksIDE1OSwgMjMzLCAxNzUsIDE4LCAxOSwgMjMzLCAxNzQsIDE4LCAxOSwgMTU5LCAKKyAgICAyMzMsIDE3NCwgMTgsIDE5LCAyMzMsIDE4MywgMTgsIDE5LCAxNTksIDIzMywgMTgzLCAxOCwgMTksIDIzMywgMTgyLCAxOCwgCisgICAgMTksIDE1OSwgMjMzLCAxODIsIDE4LCAxOSwgMjI5LCAxOTEsIDIzMywgMTgyLCAxOCwgMTksIDIzNSwgMjQsIDE4LCAxOSwgCisgICAgMjMzLCAxODQsIDE4LCAxOSwgMjE5LCAyOCwgMjM0LCAxNzcsIDE4LCAxOSwgMjE5LCAyOCwgMjM0LCA4NSwgMTgsIDE5LCAKKyAgICAyMTksIDI4LCAyMzQsIDI0LCAxOCwgMTksIDIxOSwgMjgsIDIzNCwgMjQ5LCAxOCwgMTksIDI1MCwgMTkxLCAxOCwgMTksIAorICAgIDI1MSwgMzIsIDE4LCAxOSwgMjUwLCA1MiwgMTgsIDE5LCAyNTAsIDQyLCAxOCwgMTksIDI0OSwgMjM5LCAxOCwgMTksIDI0OSwgCisgICAgMTc1LCAxOCwgMTksIDIxMSwgMTE2LCAyNDksIDE3NSwgMTgsIDE5LCAyNTEsIDM0LCAxOCwgMTksIDI1MSwgMzMsIDE4LCAKKyAgICAxOSwgMjQ5LCA4MCwgMTgsIDE5LCAxNTksIDI0OSwgODAsIDE4LCAxOSwgMjQ5LCA3OCwgMTgsIDE5LCAxNTksIDI0OSwgNzgsIAorICAgIDE4LCAxOSwgMjQ5LCA3NywgMTgsIDE5LCAxNTksIDI0OSwgNzcsIDE4LCAxOSwgMjQ5LCA3NiwgMTgsIDE5LCAxNTksIDI0OSwgCisgICAgNzYsIDE4LCAxOSwgMjQ5LCA3NSwgMTgsIDE5LCAxNTksIDI0OSwgNzUsIDE4LCAxOSwgMjQ5LCA4MiwgMTgsIDE5LCAxNTksIAorICAgIDI0OSwgODIsIDE4LCAxOSwgMjQ5LCA4MSwgMTgsIDE5LCAxNTksIDI0OSwgODEsIDE4LCAxOSwgMjI5LCAxOTEsIDI0OSwgCisgICAgODEsIDE4LCAxOSwgMjUxLCA2NywgMTgsIDE5LCAyMjEsIDIxMCwgMjE2LCAyMTEsIDE4LCAxOSwgMjMxLCA5MiwgMTgsIDE5LCAKKyAgICAyMzEsIDIzNywgMTgsIDE5LCAyMzAsIDIzMSwgMTgsIDE5LCAyMzAsIDIwMiwgMTgsIDE5LCAyMzAsIDE2MiwgMTgsIDE5LCAKKyAgICAyMzAsIDEzMywgMTgsIDE5LCAyMTEsIDExNiwgMjMwLCAxMzMsIDE4LCAxOSwgMTg1LCAxOCwgMTksIDIzMSwgMjM4LCAxOCwgCisgICAgMTksIDIzMCwgNDEsIDE4LCAxOSwgMTU5LCAyMzAsIDQxLCAxOCwgMTksIDIzMCwgMzksIDE4LCAxOSwgMTU5LCAyMzAsIDM5LCAKKyAgICAxOCwgMTksIDIzMCwgMzgsIDE4LCAxOSwgMTU5LCAyMzAsIDM4LCAxOCwgMTksIDIzMCwgMzcsIDE4LCAxOSwgMTU5LCAyMzAsIAorICAgIDM3LCAxOCwgMTksIDIzMCwgMzYsIDE4LCAxOSwgMTU5LCAyMzAsIDM2LCAxOCwgMTksIDIzMCwgNDMsIDE4LCAxOSwgMTU5LCAKKyAgICAyMzAsIDQzLCAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMTU5LCAyMzAsIDQyLCAxOCwgMTksIDIyOSwgMTkxLCAyMzAsIAorICAgIDQyLCAxOCwgMTksIDE5MywgMTgsIDE5LCAxNTksIDE5MywgMTgsIDE5LCAyMzAsIDIzNSwgMTgsIDE5LCAyNTMsIDIwNiwgCisgICAgMTkzLCAxOCwgMTksIDIyMSwgMjEwLCAxOTMsIDE4LCAxOSwgMjI5LCAxMDgsIDE4LCAxOSwgMjI5LCAyMjUsIDE4LCAxOSwgCisgICAgMjI4LCAyMzQsIDE4LCAxOSwgMjI4LCAyMDksIDE4LCAxOSwgMjI4LCA3NSwgMTgsIDE5LCAyMjgsIDY1LCAxOCwgMTksIAorICAgIDIxMSwgMTE2LCAyMjgsIDY1LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyMjksIDIyNiwgMTgsIDE5LCAyMjcsIDE3MywgMTgsIAorICAgIDE5LCAxNTksIDIyNywgMTczLCAxOCwgMTksIDIyNywgMTc1LCAxOCwgMTksIDE1OSwgMjI3LCAxNzUsIDE4LCAxOSwgMjI3LCAKKyAgICAxNzQsIDE4LCAxOSwgMTU5LCAyMjcsIDE3NCwgMTgsIDE5LCAyMjksIDE5MSwgMjI3LCAxNzQsIDE4LCAxOSwgMjMwLCAyNiwgCisgICAgMTgsIDE5LCA3MiwgMjI5LCA4MCwgMTgsIDE5LCAyMjgsIDIzOSwgMTgsIDE5LCAyMzMsIDU5LCAxOCwgMTksIDIzMywgMTM0LCAKKyAgICAxOCwgMTksIDIzMiwgMjQyLCAxOCwgMTksIDIzMiwgMjI4LCAxOCwgMTksIDIzMiwgMTU3LCAxOCwgMTksIDIzMiwgMTI4LCAKKyAgICAxOCwgMTksIDIxMSwgMTE2LCAyMzIsIDEyOCwgMTgsIDE5LCAyMzMsIDEzNiwgMTgsIDE5LCAyMzMsIDEzNSwgMTgsIDE5LCAKKyAgICAyMzIsIDY5LCAxOCwgMTksIDE1OSwgMjMyLCA2OSwgMTgsIDE5LCAyMzIsIDY4LCAxOCwgMTksIDE1OSwgMjMyLCA2OCwgMTgsIAorICAgIDE5LCAyMzIsIDY3LCAxOCwgMTksIDE1OSwgMjMyLCA2NywgMTgsIDE5LCAyMzIsIDY2LCAxOCwgMTksIDE1OSwgMjMyLCA2NiwgCisgICAgMTgsIDE5LCAyMzIsIDY1LCAxOCwgMTksIDE1OSwgMjMyLCA2NSwgMTgsIDE5LCAyMzIsIDcxLCAxOCwgMTksIDE1OSwgMjMyLCAKKyAgICA3MSwgMTgsIDE5LCAyMzIsIDcwLCAxOCwgMTksIDE1OSwgMjMyLCA3MCwgMTgsIDE5LCAxNTYsIDE4LCAxOSwgMTU5LCAxNTYsIAorICAgIDE4LCAxOSwgMTQ3LCAxNTYsIDE4LCAxOSwgMjIxLCAxODIsIDE4LCAxOSwgMjIyLCAzMCwgMTgsIDE5LCAyMTksIDE5MiwgCisgICAgMTgsIDE5LCAyMTksIDE3NiwgMTgsIDE5LCAyMTksIDU5LCAxOCwgMTksIDIxOSwgNDEsIDE4LCAxOSwgMjExLCAxMTYsIAorICAgIDIxOSwgNDEsIDE4LCAxOSwgMjA2LCAxOCwgMTksIDIyMiwgMzIsIDE4LCAxOSwgMjE3LCAyNTAsIDE4LCAxOSwgMTU5LCAKKyAgICAyMTcsIDI1MCwgMTgsIDE5LCAyMTcsIDI0NCwgMTgsIDE5LCAxNTksIDIxNywgMjQ0LCAxOCwgMTksIDIxNywgMjQzLCAxOCwgCisgICAgMTksIDE1OSwgMjE3LCAyNDMsIDE4LCAxOSwgMjE3LCAyMzksIDE4LCAxOSwgMTU5LCAyMTcsIDIzOSwgMTgsIDE5LCAyMTcsIAorICAgIDIzOCwgMTgsIDE5LCAxNTksIDIxNywgMjM4LCAxOCwgMTksIDIxNywgMjU0LCAxOCwgMTksIDE1OSwgMjE3LCAyNTQsIDE4LCAKKyAgICAxOSwgMjE3LCAyNTMsIDE4LCAxOSwgMTU5LCAyMTcsIDI1MywgMTgsIDE5LCAyMjksIDE5MSwgMjE3LCAyNTMsIDE4LCAxOSwgCisgICAgMjIyLCA5MiwgMTgsIDE5LCAyNTMsIDIwNiwgMjIyLCA5MiwgMTgsIDE5LCAyMTcsIDI1NSwgMTgsIDE5LCAyNTEsIDIxOSwgCisgICAgMjIyLCA5MiwgMTgsIDE5LCAyMzAsIDEyOCwgMjE5LCAxMDksIDE4LCAxOSwgMjI5LCAxOTEsIDIxOSwgMTAwLCAxOCwgMTksIAorICAgIDIyOSwgMTkxLCAyMjIsIDkwLCAxOCwgMTksIDIyOSwgMTkxLCAyMTgsIDIzNiwgMTgsIDE5LCAyMjksIDE5MSwgMjE4LCA4NywgCisgICAgMTgsIDE5LCAyMjksIDE5MSwgMjE5LCA5OSwgMTgsIDE5LCAyMjksIDE5MSwgMjIxLCAxODUsIDE4LCAxOSwgMjIwLCA2NCwgCisgICAgMTgsIDE5LCAyMjAsIDMzLCAxOCwgMTksIDIyMCwgMjgsIDE4LCAxOSwgMjIwLCA4LCAxOCwgMTksIDIyMCwgMiwgMTgsIDE5LCAKKyAgICAyMjAsIDEwMywgMTgsIDE5LCAyMjAsIDk5LCAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAKKyAgICAxOSwgMjE5LCAyMDYsIDE4LCAxOSwgMTU5LCAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgCisgICAgMjA1LCAxOCwgMTksIDIxOSwgMjA0LCAxOCwgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMDMsIDE4LCAxOSwgCisgICAgMTU5LCAyMTksIDIwMywgMTgsIDE5LCAyMTksIDIwOSwgMTgsIDE5LCAxNTksIDIxOSwgMjA5LCAxOCwgMTksIDIxOSwgMjA4LCAKKyAgICAxOCwgMTksIDE1OSwgMjE5LCAyMDgsIDE4LCAxOSwgMjIwLCAxMDUsIDE4LCAxOSwgMjExLCA0NywgMTgsIDE5LCAyMTEsIAorICAgIDEwMSwgMTgsIDE5LCAyMTEsIDgsIDE4LCAxOSwgMjEwLCAyNTUsIDE4LCAxOSwgMjEwLCAyNDQsIDE4LCAxOSwgMjEwLCAKKyAgICAyMjksIDE4LCAxOSwgMjExLCAxMTYsIDIxMCwgMjI5LCAxOCwgMTksIDE5MSwgMTgsIDE5LCAyMTEsIDEwMywgMTgsIDE5LCAKKyAgICAyMTAsIDE3NCwgMTgsIDE5LCAxNTksIDIxMCwgMTc0LCAxOCwgMTksIDIxMCwgMTczLCAxOCwgMTksIDE1OSwgMjEwLCAxNzMsIAorICAgIDE4LCAxOSwgMjEwLCAxNzIsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MiwgMTgsIDE5LCAyMTAsIDE3MSwgMTgsIDE5LCAxNTksIAorICAgIDIxMCwgMTcxLCAxOCwgMTksIDIxMCwgMTcwLCAxOCwgMTksIDE1OSwgMjEwLCAxNzAsIDE4LCAxOSwgMjEwLCAxNzYsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTAsIDE3NiwgMTgsIDE5LCAyMTAsIDE3NSwgMTgsIDE5LCAxNTksIDIxMCwgMTc1LCAxOCwgMTksIDIyOSwgCisgICAgMTkxLCAyMTAsIDE3NSwgMTgsIDE5LCAyMTEsIDExNywgMTgsIDE5LCAyNTIsIDUsIDIxMSwgMTE3LCAxOCwgMTksIDE1OSwgCisgICAgMjExLCAxMTcsIDE4LCAxOSwgMjIxLCAyMTAsIDIxMSwgOCwgMTgsIDE5LCAyMjMsIDEyOSwgMTgsIDE5LCAyMjMsIDIyNCwgCisgICAgMjIzLCAxMjksIDE4LCAxOSwgMTU5LCAyMzMsIDU5LCAxOCwgMTksIDIyMywgMTg0LCAxOCwgMTksIDIyMywgMzYsIDE4LCAKKyAgICAxOSwgMjIyLCAyNDAsIDE4LCAxOSwgMjIyLCAyMTIsIDE4LCAxOSwgMjIyLCAxOTgsIDE4LCAxOSwgMTU5LCAyMzIsIDE1NywgCisgICAgMTgsIDE5LCAyMDUsIDE4LCAxOSwgMjIzLCAxODUsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNiwgMTgsIDE5LCAyMjIsIDEwOSwgCisgICAgMTgsIDE5LCAxNTksIDIyMiwgMTA5LCAxOCwgMTksIDE1MywgMTgsIDE5LCAxNTksIDE1MywgMTgsIDE5LCAxNDcsIDE1MywgCisgICAgMTgsIDE5LCAyNDQsIDE1NSwgMTgsIDE5LCAyNDQsIDE5NCwgMTgsIDE5LCAyNDQsIDEyMiwgMTgsIDE5LCAyNDQsIDEwOSwgCisgICAgMTgsIDE5LCAyNDQsIDQ0LCAxOCwgMTksIDI0NCwgMzUsIDE4LCAxOSwgMjQ0LCAxOTcsIDE4LCAxOSwgMjQ0LCAxOTYsIDE4LCAKKyAgICAxOSwgMjQzLCAyMTMsIDE4LCAxOSwgMTU5LCAyNDMsIDIxMywgMTgsIDE5LCAyNDUsIDcsIDE4LCAxOSwgMjE2LCAxOTYsIAorICAgIDE4LCAxOSwgMjMwLCAyNCwgMjE2LCAxOTYsIDE4LCAxOSwgMjE2LCAxNzYsIDE4LCAxOSwgMjMwLCAyNCwgMjE2LCAxNzYsIAorICAgIDE4LCAxOSwgMjE2LCAxNzIsIDE4LCAxOSwgMjMwLCAyNCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAxNTcsIDE4LCAxOSwgCisgICAgMjE2LCAxNTQsIDE4LCAxOSwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAxMjgsIDE4LCAxOSwgCisgICAgMTU5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTYsIDIxMSwgMTgsIDE5LCAyMTUsIDE0MywgMTgsIDE5LCAyMTUsIDE0MSwgMTgsIAorICAgIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIDE5LCAyMTUsIDE0NiwgMTgsIDE5LCAyMTUsIDUyLCAxOCwgCisgICAgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIDIyNywgMTk0LCAyNDEsIAorICAgIDIzOSwgMTgsIDE5LCAyMjcsIDE5NCwgMjQxLCAxODEsIDE4LCAxOSwgMjI3LCAxOTQsIDI0MSwgMTYyLCAxOCwgMTksIDIyNywgCisgICAgMTk0LCAyNDEsIDY5LCAxOCwgMTksIDIyNywgMTk0LCAyNDEsIDU0LCAxOCwgMTksIDIyNywgMTk0LCAxNjIsIDE4LCAxOSwgCisgICAgMjI3LCAxOTQsIDI0MiwgNDcsIDE4LCAxOSwgMjI3LCAxOTQsIDI0MiwgNjEsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNjEsIAorICAgIDE4LCAxOSwgMjQxLCAxNTUsIDE4LCAxOSwgMjI0LCA4NSwgMTgsIDE5LCAyMjQsIDU0LCAxOCwgMTksIDIyNCwgNDksIDE4LCAKKyAgICAxOSwgMjI0LCA0MywgMTgsIDE5LCAyMjQsIDM4LCAxOCwgMTksIDIyNCwgODksIDE4LCAxOSwgMjI0LCA4OCwgMTgsIDE5LCAKKyAgICAyMjQsIDk3LCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMjE2LCA1NCwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIDIxNiwgCisgICAgNTcsIDE4LCAxOSwgMTU5LCAyMjMsIDEyOSwgMTgsIDE5LCAxNTksIDIyMywgMzYsIDE4LCAxOSwgMTU5LCAyMjIsIDIxMiwgCisgICAgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDc2LCAxOCwgMTksIDIyOSwgMjgsIDE4LCAxOSwgMjI5LCAyNCwgMTgsIAorICAgIDE5LCAyMjksIDUsIDE4LCAxOSwgMjI5LCAwLCAxOCwgMTksIDIyOSwgNzgsIDE4LCAxOSwgMjI5LCA3NywgMTgsIDE5LCAKKyAgICAyMjksIDgwLCAxOCwgMTksIDIyOCwgMTA0LCAxOCwgMTksIDIyMSwgMjEwLCAyMjAsIDY0LCAxOCwgMTksIDIyMSwgMjEwLCAKKyAgICAyMjAsIDMzLCAxOCwgMTksIDIyMSwgMjEwLCAyMjAsIDgsIDE4LCAxOSwgMjIxLCAyMTAsIDIyMCwgMTAzLCAxOCwgMTksIAorICAgIDIxMSwgMjEzLCAyMTYsIDE5NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNzYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCisgICAgMTU3LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDIwOSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMTEsIDE4LCAxOSwgMjMyLCAKKyAgICAyNDksIDE4LCAxOSwgMjMyLCAyNDgsIDE4LCAxOSwgMjMyLCAyNDcsIDE4LCAxOSwgMjMyLCAyNDYsIDE4LCAxOSwgMjMyLCAKKyAgICAyNTUsIDE4LCAxOSwgMjMyLCAyNTQsIDE4LCAxOSwgMjMzLCAwLCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDE5NiwgMTgsIAorICAgIDE5LCAyMTYsIDIxMCwgMjE2LCAxNzYsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMTcyLCAxOCwgMTksIDIxNiwgMjEwLCAKKyAgICAyMTYsIDE1NywgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAxNTQsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMjA5LCAxOCwgMTksIAorICAgIDIxNiwgMjEwLCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAyMTEsIDE4LCAxOSwgMjU0LCAxOTAsIDI1MywgCisgICAgMTU5LCAxOCwgMTksIDI1MSwgMjE5LCA3NSwgMTgsIDE5LCAyNTEsIDIxOSwgNzMsIDE4LCAxOSwgMjUxLCAyMTksIDc2LCAKKyAgICAxOCwgMTksIDI1MSwgMjE5LCA2MSwgMTgsIDE5LCAyNTEsIDIxOSwgMjEyLCAyMiwgMTgsIDE5LCAyNTEsIDIxOSwgMjExLCAKKyAgICAyNTAsIDE4LCAxOSwgMjUxLCAyMTksIDIxMSwgMjI3LCAxOCwgMTksIDI1MSwgMjE5LCAyMTIsIDY1LCAxOCwgMTksIDI1MSwgCisgICAgMjE5LCAyMjksIDEwOCwgMTgsIDE5LCAyNTEsIDIxOSwgMjI4LCAyMzQsIDE4LCAxOSwgMjUxLCAyMTksIDIyOCwgNzUsIDE4LCAKKyAgICAxOSwgMjUxLCAyMTksIDE5NywgMTgsIDE5LCAyNTEsIDIxOSwgMjM0LCAxODMsIDE4LCAxOSwgMjUxLCAyMTksIDIzNCwgOTMsIAorICAgIDE4LCAxOSwgMjUxLCAyMTksIDIzNCwgMjksIDE4LCAxOSwgMjUxLCAyMTksIDE3NiwgMTgsIDE5LCAyMjEsIDIxMCwgMjQxLCAKKyAgICAyMzksIDE4LCAxOSwgMjIxLCAyMTAsIDI0MSwgMTgxLCAxOCwgMTksIDIyMSwgMjEwLCAyNDEsIDY5LCAxOCwgMTksIDIyMSwgCisgICAgMjEwLCAxNjIsIDE4LCAxOSwgNzIsIDI0MiwgMjIxLCAxOCwgMTksIDcyLCAyNDIsIDIyNSwgMTgsIDE5LCA3MiwgMjQyLCAKKyAgICAyMzcsIDE4LCAxOSwgNzIsIDI0MiwgMjM2LCAxOCwgMTksIDcyLCAyNDIsIDIyNiwgMTgsIDE5LCA3MiwgMjQyLCAyNTAsIAorICAgIDE4LCAxOSwgNzIsIDIyMiwgMTQxLCAxOCwgMTksIDcyLCAyMjIsIDIxMiwgMTgsIDE5LCA3MiwgMjIzLCAxMjksIDE4LCAxOSwgCisgICAgNzIsIDIyMywgMTA5LCAxOCwgMTksIDcyLCAyMjMsIDM2LCAxOCwgMTksIDcyLCAyMDUsIDE4LCAxOSwgNzIsIDIxMSwgMTk1LCAKKyAgICAxOCwgMTksIDcyLCAyMTEsIDIyNywgMTgsIDE5LCA3MiwgMjEyLCAyMiwgMTgsIDE5LCA3MiwgMjEyLCAxNywgMTgsIDE5LCAKKyAgICA3MiwgMjExLCAyNTAsIDE4LCAxOSwgNzIsIDIxMiwgNjUsIDE4LCAxOSwgNzIsIDI0MCwgMTk1LCAxOCwgMTksIDcyLCAyNDAsIAorICAgIDE5NiwgMTgsIDE5LCA3MiwgMjQwLCAxOTksIDE4LCAxOSwgNzIsIDI0MCwgMTk4LCAxOCwgMTksIDcyLCAyNDAsIDE5NywgCisgICAgMTgsIDE5LCA3MiwgMjQwLCAyMDEsIDE4LCAxOSwgNzIsIDIxNiwgMTM3LCAxOCwgMTksIDcyLCAyMTYsIDE1NywgMTgsIDE5LCAKKyAgICA3MiwgMjE2LCAxOTYsIDE4LCAxOSwgNzIsIDIxNiwgMTk1LCAxOCwgMTksIDcyLCAyMTYsIDE3NiwgMTgsIDE5LCA3MiwgCisgICAgMjE2LCAyMDksIDE4LCAxOSwgNzIsIDIxNSwgMTI0LCAxOCwgMTksIDcyLCAyMTUsIDEzNCwgMTgsIDE5LCA3MiwgMjE1LCAKKyAgICAxNTIsIDE4LCAxOSwgNzIsIDIxNSwgMTUxLCAxOCwgMTksIDcyLCAyMTUsIDEzNiwgMTgsIDE5LCA3MiwgMjE1LCAxNTcsIAorICAgIDE4LCAxOSwgNzIsIDIyNCwgMTUxLCAxOCwgMTksIDcyLCAyMjUsIDE3LCAxOCwgMTksIDcyLCAyMjUsIDIyMiwgMTgsIDE5LCAKKyAgICA3MiwgMjI1LCAyMTIsIDE4LCAxOSwgNzIsIDIyNSwgMTA5LCAxOCwgMTksIDcyLCAxOTAsIDE4LCAxOSwgNzIsIDIyNiwgCisgICAgMTA2LCAxOCwgMTksIDcyLCAyNDIsIDExNCwgMTgsIDE5LCA3MiwgMjQyLCAxNzUsIDE4LCAxOSwgNzIsIDI0MywgNjMsIDE4LCAKKyAgICAxOSwgNzIsIDI0MywgNTYsIDE4LCAxOSwgNzIsIDI0MiwgMjE1LCAxOCwgMTksIDcyLCAyNDMsIDEzNiwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCAxMDEsIDE4LCAxOSwgNzIsIDIzNCwgMTA2LCAxOCwgMTksIDcyLCAyMzQsIDEyMCwgMTgsIDE5LCA3MiwgMjM0LCAKKyAgICAxMTksIDE4LCAxOSwgNzIsIDIzNCwgMTEzLCAxOCwgMTksIDcyLCAyMzQsIDEzMywgMTgsIDE5LCA3MiwgMjM0LCA0MiwgMTgsIAorICAgIDE5LCA3MiwgMjM0LCA0MywgMTgsIDE5LCA3MiwgMjM0LCA0NiwgMTgsIDE5LCA3MiwgMjM0LCA0NSwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCA0NCwgMTgsIDE5LCA3MiwgMjM0LCA0NywgMTgsIDE5LCA3MiwgMjM0LCA0OCwgMTgsIDE5LCA3MiwgMjI3LCAyMzgsIAorICAgIDE4LCAxOSwgNzIsIDIyOCwgNzUsIDE4LCAxOSwgNzIsIDIyOSwgMTA4LCAxOCwgMTksIDcyLCAyMjksIDEwNCwgMTgsIDE5LCAKKyAgICA3MiwgMjI4LCAyMzQsIDE4LCAxOSwgNzIsIDE5NywgMTgsIDE5LCA3MiwgMjMwLCAxMDMsIDE4LCAxOSwgNzIsIDIzMCwgCisgICAgMTYyLCAxOCwgMTksIDcyLCAyMzEsIDkyLCAxOCwgMTksIDcyLCAyMzEsIDgxLCAxOCwgMTksIDcyLCAyMzAsIDIzMSwgMTgsIAorICAgIDE5LCA3MiwgMTg1LCAxOCwgMTksIDcyLCAyMTAsIDIxMiwgMTgsIDE5LCA3MiwgMjEwLCAyNDQsIDE4LCAxOSwgNzIsIDIxMSwgCisgICAgNDcsIDE4LCAxOSwgNzIsIDIxMSwgNDQsIDE4LCAxOSwgNzIsIDIxMSwgOCwgMTgsIDE5LCA3MiwgMTkxLCAxOCwgMTksIDcyLCAKKyAgICAyMzUsIDUyLCAxOCwgMTksIDIyMSwgMjEwLCAyMzUsIDUyLCAxOCwgMTksIDcyLCAyMzUsIDY5LCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDEyNywgMTgsIDE5LCA3MiwgMjM1LCAxMjUsIDE4LCAxOSwgNzIsIDIzNSwgMTA5LCAxOCwgMTksIDIyMSwgMjEwLCAyMzUsIAorICAgIDEwOSwgMTgsIDE5LCA3MiwgMjM1LCAxNDIsIDE4LCAxOSwgNzIsIDIzNSwgODIsIDE4LCAxOSwgNzIsIDIzNSwgODYsIDE4LCAKKyAgICAxOSwgNzIsIDIzNSwgOTYsIDE4LCAxOSwgNzIsIDIzNSwgOTUsIDE4LCAxOSwgNzIsIDIzNSwgOTQsIDE4LCAxOSwgNzIsIAorICAgIDIzNSwgOTcsIDE4LCAxOSwgNzIsIDIzMiwgOTksIDE4LCAxOSwgNzIsIDIzMiwgMTU3LCAxOCwgMTksIDcyLCAyMzMsIDU5LCAKKyAgICAxOCwgMTksIDcyLCAyMzMsIDUxLCAxOCwgMTksIDcyLCAyMzIsIDI0MiwgMTgsIDE5LCA3MiwgMjMzLCAxMzYsIDE4LCAxOSwgCisgICAgNzIsIDI0NywgMTUwLCAxOCwgMTksIDcyLCAyNDcsIDE1MSwgMTgsIDE5LCA3MiwgMjQ3LCAxNTYsIDE4LCAxOSwgNzIsIAorICAgIDI0NywgMTU1LCAxOCwgMTksIDcyLCAyNDcsIDE1MiwgMTgsIDE5LCA3MiwgMjQ3LCAxNTcsIDE4LCAxOSwgNzIsIDIzMiwgCisgICAgMjQ1LCAxOCwgMTksIDcyLCAyMzIsIDI0NywgMTgsIDE5LCA3MiwgMjMyLCAyNTEsIDE4LCAxOSwgNzIsIDIzMiwgMjUwLCAKKyAgICAxOCwgMTksIDcyLCAyMzIsIDI0OSwgMTgsIDE5LCA3MiwgMjMyLCAyNTUsIDE4LCAxOSwgNzIsIDIxNiwgNTEsIDE4LCAxOSwgCisgICAgNzIsIDIxNiwgNTMsIDE4LCAxOSwgNzIsIDIxNiwgNTYsIDE4LCAxOSwgNzIsIDIxNiwgNTUsIDE4LCAxOSwgNzIsIDIxNiwgCisgICAgNTQsIDE4LCAxOSwgNzIsIDIxNiwgNTcsIDE4LCAxOSwgNzIsIDIxNiwgNDYsIDE4LCAxOSwgNzIsIDIxNiwgNDcsIDE4LCAKKyAgICAxOSwgNzIsIDIxNiwgNTksIDE4LCAxOSwgNzIsIDIxNiwgNTgsIDE4LCAxOSwgNzIsIDIxNiwgNDgsIDE4LCAxOSwgNzIsIAorICAgIDIxNiwgNjAsIDE4LCAxOSwgNzIsIDIxMCwgMTMsIDE4LCAxOSwgNzIsIDIxMCwgMjMsIDE4LCAxOSwgNzIsIDIxMCwgOTQsIAorICAgIDE4LCAxOSwgNzIsIDIxMCwgOTIsIDE4LCAxOSwgNzIsIDIxMCwgNDQsIDE4LCAxOSwgNzIsIDIxMCwgMTE2LCAxOCwgMTksIAorICAgIDcyLCAyMTAsIDE1OSwgMTgsIDE5LCA3MiwgNjUsIDIxMCwgMTU5LCAxOCwgMTksIDcyLCAyNDYsIDI5LCAxOCwgMTksIDcyLCAKKyAgICAyNDYsIDMwLCAxOCwgMTksIDcyLCAyNDYsIDM3LCAxOCwgMTksIDcyLCAyNDYsIDM2LCAxOCwgMTksIDcyLCAyNDYsIDMyLCAKKyAgICAxOCwgMTksIDcyLCAyNDYsIDM5LCAxOCwgMTksIDcyLCAyMTgsIDg0LCAxOCwgMTksIDcyLCAyMTksIDU5LCAxOCwgMTksIAorICAgIDcyLCAyMjEsIDE4MiwgMTgsIDE5LCA3MiwgMjIxLCAxNzEsIDE4LCAxOSwgNzIsIDIxOSwgMTkyLCAxOCwgMTksIDcyLCAKKyAgICAyMDYsIDE4LCAxOSwgNzIsIDIxOSwgMjI2LCAxOCwgMTksIDcyLCAyMjAsIDgsIDE4LCAxOSwgNzIsIDIyMCwgNjQsIDE4LCAKKyAgICAxOSwgNzIsIDIyMCwgNjIsIDE4LCAxOSwgNzIsIDIyMCwgMzMsIDE4LCAxOSwgNzIsIDIyMCwgMTAzLCAxOCwgMTksIDcyLCAKKyAgICAyMjAsIDEwNSwgMTgsIDE5LCA3MiwgMjE1LCAxNjQsIDE4LCAxOSwgNzIsIDIxNSwgMTY3LCAxOCwgMTksIDcyLCAyMTUsIAorICAgIDE3OSwgMTgsIDE5LCA3MiwgMjE1LCAxNzgsIDE4LCAxOSwgNzIsIDIxNSwgMTY4LCAxOCwgMTksIDcyLCAyMTUsIDE4NCwgCisgICAgMTgsIDE5LCA3MiwgMjUwLCA3MCwgMTgsIDE5LCA3MiwgMjUwLCA4NywgMTgsIDE5LCA3MiwgMjUwLCAxMzIsIDE4LCAxOSwgCisgICAgNzIsIDI1MCwgMTI5LCAxOCwgMTksIDcyLCAyNTAsIDExMSwgMTgsIDE5LCA3MiwgMjUwLCAxNTgsIDE4LCAxOSwgNzIsIAorICAgIDIxNSwgMTI3LCAxOCwgMTksIDcyLCAyMTUsIDEyOCwgMTgsIDE5LCA3MiwgMjE1LCAxMzEsIDE4LCAxOSwgNzIsIDIxNSwgCisgICAgMTMwLCAxOCwgMTksIDcyLCAyMTUsIDEyOSwgMTgsIDE5LCA3MiwgMjE1LCAxMzIsIDE4LCAxOSwgMjUwLCAxMTIsIDUwLCAKKyAgICAxOCwgMTksIDI0MywgMjMwLCAyMTgsIDEzMCwgMTgsIDE5LCAyMjQsIDgxLCAxOCwgMTksIDIyOSwgNzQsIDE4LCAxOSwgCisgICAgMjI4LCAxMDEsIDE4LCAxOSwgMjI4LCAxMDAsIDE4LCAxOSwgMjI4LCA5OSwgMTgsIDE5LCAyMjgsIDk4LCAxOCwgMTksIAorICAgIDIyOCwgMTAzLCAxOCwgMTksIDIyOCwgMTAyLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNiwgMTgsIDE5LCAyMTEsIDIxMywgCisgICAgMjE2LCAxMjUsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI0LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMywgMTgsIDE5LCAKKyAgICAyMTEsIDIxMywgMjE2LCAxMjIsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI5LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIAorICAgIDEyOCwgMTgsIDE5LCAyMTEsIDIxMywgNDAsIDIxNiwgMjExLCAxOCwgMTksIDI1MSwgMjE5LCAyMTIsIDk4LCAyMjYsIDIyNywgCisgICAgMjE5LCAyMCwgNzgsIDIyNiwgMjI3LCAxLCAyNTIsIDQ5LCAyMjYsIDIyNywgMSwgMjMyLCA4OCwgMjI2LCAyMjcsIDEsIAorICAgIDI0NCwgMTUyLCAyMjYsIDIyNywgMSwgMjIyLCAxNiwgMjI2LCAyMjcsIDEsIDIyOCwgMTk0LCAyMjYsIDIyNywgMSwgMjE0LCAKKyAgICAyMjYsIDIyNiwgMjI3LCAxLCAyNDgsIDE5OCwgMjI2LCAyMjcsIDEsIDIxNiwgODEsIDIyNiwgMjI3LCAxLCAyNDksIDIzMCwgCisgICAgMjI2LCAyMjcsIDEsIDI1MCwgMTgxLCAyMjYsIDIyNywgMSwgMjMwLCA5MiwgMjI2LCAyMjcsIDEsIDI0MiwgMTU3LCAyMjYsIAorICAgIDIyNywgMSwgMjI5LCA2NCwgMjI2LCAyMjcsIDEsIDIxOCwgMTIzLCAyMjYsIDIyNywgMSwgMjIyLCAxMzYsIDIyNiwgMjI3LCAKKyAgICAxLCAyNTQsIDE5OSwgMjI2LCAyMjcsIDEsIDIyNiwgMTg4LCAyMjYsIDIyNywgMSwgMjE0LCAxNTAsIDIyNiwgMjI3LCAxLCAKKyAgICAyNDUsIDIzMiwgMjI2LCAyMjcsIDEsIDIzNSwgMTg5LCAyMjYsIDIyNywgMSwgMjQ1LCAyMzMsIDIyNiwgMjI3LCAxLCAyMjYsIAorICAgIDE1OSwgMjI2LCAyMjcsIDEsIDIxNCwgMjA2LCAyMjYsIDIyNywgMSwgMjM2LCA0MCwgMjI2LCAyMjcsIDEsIDI0NSwgMjMwLCAKKyAgICAyMjYsIDIyNywgMSwgMjI1LCAyMDMsIDIyNiwgMjI3LCAyNDQsIDE1MSwgNzgsIDIyNiwgMjI3LCAyMjMsIDUwLCAyNDQsIAorICAgIDE1MSwgNzgsIDE3OCwgMSwgMjQ0LCAxNDIsIDI0NCwgMTM0LCAyNDQsIDE1NiwgMjQ1LCA3LCAxNzgsIDEsIDIxNCwgMTA1LCAKKyAgICAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNzAsIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgMSwgMjExLCAxMTcsIDE3OCwgCisgICAgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMSwgMjE2LCAxMzAsIDIxNiwgMTUyLCAxNzgsIDEsIDI0NSwgNjAsIDE3OCwgCisgICAgMSwgMjU0LCA5NCwgNjEsIDE3OCwgMSwgMjI2LCAxNDQsIDc2LCAxNzgsIDEsIDI1NSwgMTgsIDYxLCAxNzgsIDEsIDI1NCwgCisgICAgMjI4LCAxNzgsIDEsIDIzMiwgMTM0LCA3NiwgMTc4LCAxLCAyMTksIDI0NSwgNzYsIDE3OCwgMSwgNzYsIDE3OCwgMSwgMjI2LCAKKyAgICAyMzUsIDE3OCwgMSwgMjI2LCAxOTcsIDE3OCwgMSwgMjIzLCAxNjUsIDIyMywgMTc4LCAyMjMsIDk1LCAxNTMsIDE3OCwgMSwgCisgICAgMjM0LCAxOTQsIDE3OCwgMSwgMjUwLCAxNzgsIDE3OCwgMSwgMjM0LCAxOTUsIDIzNSwgMjQsIDE3OCwgMSwgMjQzLCAyMDMsIAorICAgIDE3OCwgMSwgMjQ1LCAxMzksIDE3OCwgMSwgMjQzLCA1OSwgMjQyLCA2NywgMjQzLCAyMDMsIDE3OCwgMSwgMjQzLCA5NywgCisgICAgMTc4LCAxLCAyMTEsIDE4OCwgMjExLCAxODIsIDIxMiwgOTgsIDE3OCwgMSwgMjQyLCAzOSwgMjQyLCA2MSwgMTc4LCAxLCAKKyAgICAyNDIsIDQzLCAyNDIsIDYxLCAxNzgsIDEsIDIzMiwgMTM2LCAyNDIsIDYxLCAxNzgsIDEsIDIxOSwgMjQ4LCAyNDIsIDYxLCAKKyAgICAxNzgsIDEsIDIyOSwgMTg2LCAyMjcsIDE1OCwgMjI5LCAxODcsIDIzMCwgMjYsIDE3OCwgMSwgMjE5LCAyNDYsIDIzMCwgMjYsIAorICAgIDE3OCwgMSwgMjQ2LCAxMTYsIDE3OCwgMSwgMjM1LCAxNjksIDIzNSwgMTczLCAyMzUsIDE2MywgNzMsIDE3OCwgMSwgNzUsIAorICAgIDE3OCwgMSwgMjM1LCAxMTgsIDIzNSwgMTQ1LCAxNzgsIDEsIDI0MywgNDQsIDE3OCwgMSwgMjMyLCAxMzcsIDI1NCwgMjQ0LCAKKyAgICAxNzgsIDEsIDIxOSwgMjUwLCA2MSwgMTc4LCAxLCAyMzUsIDE1NSwgMjQ1LCAxMTQsIDE3OCwgMSwgMjI1LCAxNjUsIDIyNSwgCisgICAgMTg3LCAyMjYsIDEwNiwgMTc4LCAxLCAyNTQsIDE2NCwgMjQ1LCAxMTIsIDE3OCwgMSwgMjE5LCAyNSwgMjIyLCA5MiwgMTc4LCAKKyAgICAxLCAyMTksIDE4MCwgMjMyLCAxMzMsIDIyMiwgOTIsIDE3OCwgMSwgMjE5LCAyNDQsIDIyMiwgOTIsIDE3OCwgMSwgMjUxLCAKKyAgICA2NywgMTc4LCAxLCAyMTAsIDE1OSwgMTc4LCAxLCAyMTYsIDY0LCAyMTYsIDc0LCAyMTUsIDQxLCAyMTcsIDE1MywgMTc4LCAKKyAgICAxLCAyMTksIDI0MywgMjE3LCAxNTMsIDE3OCwgMSwgMjQ5LCA2MSwgMTc4LCAxLCAyNTIsIDMyLCAyNTIsIDM1LCAyNTEsIAorICAgIDIyNSwgMjUzLCAxNTksIDE3OCwgMSwgMjE5LCAyNDksIDI1MywgMTU5LCAxNzgsIDEsIDI0NiwgMTE1LCAxNzgsIDEsIDIyNiwgCisgICAgMTcyLCAxNzgsIDEsIDI0NSwgMTk3LCAyNDUsIDE5OSwgNzUsIDE3OCwgMSwgMjMxLCAxNzksIDIzMSwgMTg3LCAxOTMsIAorICAgIDE3OCwgMSwgMjMyLCAxMzUsIDE5MywgMTc4LCAxLCAyMTksIDI0NywgMTkzLCAxNzgsIDEsIDIzMywgNzQsIDIzMywgMTE1LCAKKyAgICAyMzIsIDE0NCwgMTU2LCAxNzgsIDEsIDI0NiwgMTE3LCAxNzgsIDEsIDIzNSwgMjMxLCAxNzgsIDEsIDIzNSwgMjMyLCAxNzgsIAorICAgIDEsIDI0OCwgMjExLCAyNDgsIDIxNiwgMjQ5LCA2MSwgMTc4LCAxLCAyMjYsIDEzOSwgMjQ1LCA1OSwgNzYsIDE3OCwgMSwgCisgICAgMjQ1LCAyMjgsIDE3OCwgMSwgMjM1LCAxODgsIDE3OCwgMSwgMjQ5LCA3OSwgMTc4LCAxLCAyNTEsIDE4LCAxNzgsIDEsIAorICAgIDI1MCwgMTkwLCAxNzgsIDEsIDIxOCwgMTYyLCAxNzgsIDEsIDIzMiwgMTMyLCAxNzgsIDEsIDIxOSwgMjQyLCAxNzgsIDEsIAorICAgIDI0MCwgMTExLCAxNzgsIDEsIDIyNCwgOTcsIDE3OCwgMSwgMjExLCAxNzgsIDE3OCwgMjE5LCAxNTYsIDIyNCwgMTQxLCAKKyAgICAxNzgsIDIzMCwgODYsIDIyNCwgMTQxLCAxNzgsIDI0OSwgMTMyLCAyMjQsIDE0MSwgMTc4LCAyNTQsIDcsIDg3LCAxNzgsIAorICAgIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNDcsIDg3LCAyMTcsIDg0LCAxLCA2MSwgMjE3LCA4NCwgMSwgNzMsIDIxNywgODQsIAorICAgIDEsIDcwLCAyMTcsIDg0LCAxLCAxNzYsIDIxNywgODQsIDEsIDI0MywgMTM2LCAyMTcsIDg0LCAxLCAyMjksIDc4LCAyMTcsIAorICAgIDg0LCAxLCAyMTcsIDEwNiwgMjE3LCA4NCwgMSwgMjQ4LCAyMjIsIDIxNywgODQsIDEsIDE5NywgMjE3LCA4NCwgMSwgMTkwLCAKKyAgICAyMTcsIDg0LCAxLCAyNTIsIDE5MiwgMjE3LCA4NCwgMSwgMTg1LCAyMTcsIDg0LCAxLCAxOTEsIDIxNywgODQsIDEsIDIzMywgCisgICAgMTM2LCAyMTcsIDg0LCAxLCAyMTIsIDY1LCAyMTcsIDg0LCAxLCAyMDYsIDIxNywgODQsIDEsIDE2MiwgMjE3LCA4NCwgMjUsIAorICAgIDUsIDczLCAyMTcsIDg0LCAyNSwgNSwgNzAsIDIxNywgODQsIDUsIDIxMywgMTUyLCAyNDIsIDgsIDEsIDYxLCAyNDIsIDgsIAorICAgIDEsIDczLCAyNDIsIDgsIDEsIDcwLCAyNDIsIDgsIDEsIDE3NiwgMjQyLCA4LCAxLCAyNDMsIDEzNiwgMjQyLCA4LCAxLCAKKyAgICAyMjksIDc4LCAyNDIsIDgsIDEsIDIxNywgMTA2LCAyNDIsIDgsIDEsIDI0OCwgMjIyLCAyNDIsIDgsIDEsIDE5NywgMjQyLCAKKyAgICA4LCAxLCAxOTAsIDI0MiwgOCwgMSwgMjUyLCAxOTIsIDI0MiwgOCwgMSwgMTg1LCAyNDIsIDgsIDEsIDE5MSwgMjQyLCA4LCAKKyAgICAxLCAyMDUsIDI0MiwgOCwgMSwgMjMzLCAxMzYsIDI0MiwgOCwgMSwgMjEyLCA2NSwgMjQyLCA4LCAxLCAyMDYsIDI0MiwgOCwgCisgICAgMSwgMTYyLCAyNDIsIDgsIDI1LCA1LCA3MywgMjQyLCA4LCAyNSwgNSwgNzAsIDI0MiwgOCwgNSwgMjI2LCA1MCwgMjI1LCAKKyAgICAxMjcsIDIxOSwgMTU2LCAyMjQsIDE0MSwgMjI1LCAxMjcsIDUyLCAyMjQsIDE0MSwgMjUxLCAxMjEsIDEsIDYxLCAyNTEsIAorICAgIDEyMSwgMSwgNzMsIDI1MSwgMTIxLCAxLCA3MCwgMjUxLCAxMjEsIDEsIDE3NiwgMjUxLCAxMjEsIDEsIDI0MywgMTM2LCAKKyAgICAyNTEsIDEyMSwgMSwgMjI5LCA3OCwgMjUxLCAxMjEsIDEsIDIxNywgMTA2LCAyNTEsIDEyMSwgMSwgMjQ4LCAyMjIsIDI1MSwgCisgICAgMTIxLCAxLCAxOTcsIDI1MSwgMTIxLCAxLCAxOTAsIDI1MSwgMTIxLCAxLCAyNTIsIDE5MiwgMjUxLCAxMjEsIDEsIDE4NSwgCisgICAgMjUxLCAxMjEsIDEsIDE5MSwgMjUxLCAxMjEsIDEsIDIwNSwgMjUxLCAxMjEsIDEsIDIzMywgMTM2LCAyNTEsIDEyMSwgMSwgCisgICAgMjEyLCA2NSwgMjUxLCAxMjEsIDEsIDIwNiwgMjUxLCAxMjEsIDEsIDE2MiwgMjUxLCAxMjEsIDI1LCA1LCA3MywgMjUxLCAKKyAgICAxMjEsIDI1LCA1LCA3MCwgMjE3LCA4MywgMSwgNjEsIDIxNywgODMsIDEsIDczLCAyMTcsIDgzLCAxLCA3MCwgMjE3LCA4MywgCisgICAgMSwgMTc2LCAyMTcsIDgzLCAxLCAyNDMsIDEzNiwgMjE3LCA4MywgMSwgMjI5LCA3OCwgMjE3LCA4MywgMSwgMjE3LCAxMDYsIAorICAgIDIxNywgODMsIDEsIDI0OCwgMjIyLCAyMTcsIDgzLCAxLCAxOTcsIDIxNywgODMsIDEsIDE5MCwgMjE3LCA4MywgMSwgMjUyLCAKKyAgICAxOTIsIDIxNywgODMsIDEsIDE4NSwgMjE3LCA4MywgMSwgMTkxLCAyMTcsIDgzLCAxLCAyMzMsIDEzNiwgMjE3LCA4MywgMSwgCisgICAgMjEyLCA2NSwgMjE3LCA4MywgMSwgMjA2LCAyMTcsIDgzLCAyNSwgNSwgNzMsIDIxNywgODMsIDI1LCA1LCA3MCwgNjksIDEsIAorICAgIDE3NiwgNjksIDEsIDIzNCwgMTMzLCA2OSwgMSwgMjM0LCAyOSwgNjksIDEsIDIzNCwgMTA2LCA2OSwgMSwgMjI5LCA1LCA2OSwgCisgICAgMSwgMjUxLCAzNCwgNjksIDEsIDI1MCwgMTU4LCA2OSwgMSwgMjQ5LCAyMzksIDY5LCAxLCAyNTAsIDg3LCA2OSwgMSwgMjI3LCAKKyAgICAxMzUsIDY5LCAxLCAyNDgsIDIyMiwgNjksIDEsIDIxNSwgMTQ1LCA2OSwgMSwgMjQ3LCAxNDYsIDY5LCAxLCAyMTUsIDE0MCwgCisgICAgNjksIDEsIDIyOCwgODEsIDY5LCAxLCAyMTcsIDEwNiwgNjksIDEsIDIxNiwgMjA5LCA2OSwgMSwgMTExLCA2OSwgMSwgMjE2LCAKKyAgICAxNTcsIDY5LCAxLCAyMjgsIDc1LCA2OSwgMSwgMjUyLCAxOTIsIDY5LCAxLCAyMjUsIDE0OCwgNjksIDEsIDIyNSwgMTcsIAorICAgIDY5LCAxLCAyMjUsIDEyMiwgNjksIDEsIDIzMCwgMTYyLCA2OSwgMSwgMjEwLCAyNDQsIDY5LCAxLCAyMjIsIDIxMiwgNjksIAorICAgIDEsIDIzMiwgMTU3LCA2OSwgMSwgMjEzLCAxMzgsIDY5LCAxLCAyMjAsIDEwMywgNjksIDEsIDIxOCwgMTg1LCA2OSwgMSwgCisgICAgMjA2LCA2OSwgMSwgMTYyLCA2OSwgMSwgMjMzLCAxMzYsIDY5LCAxLCAyMjQsIDg5LCA2OSwgMjM1LCAyNDQsIDI1LCAyMjQsIAorICAgIDc1LCA2OSwgMjM1LCAyNDQsIDI1LCAyMjQsIDg4LCA2OSwgMjM1LCAyNDQsIDI1LCAyMjQsIDU0LCA2OSwgMjM1LCAyNDQsIAorICAgIDI1LCAyMjQsIDQ5LCA2OSwgMjM1LCAyNDQsIDI1LCAyMjQsIDMxLCA2OSwgMjM1LCAyNDQsIDI1LCAyMjQsIDMsIDY5LCAKKyAgICAyMzUsIDI0NCwgMjUsIDIyMywgMjQ3LCA2OSwgMjM1LCAyNDQsIDI1LCAyMjMsIDI0NiwgNjksIDIzNSwgMjQ0LCAyNSwgCisgICAgMjIyLCAxMDEsIDY5LCAyMzUsIDI0NCwgMjUsIDIyMiwgOTQsIDY5LCAyMzUsIDI0NCwgMjUsIDIzMiwgNjMsIDY5LCAyMzUsIAorICAgIDI0NCwgMjUsIDIzMiwgNTMsIDY5LCAyMzUsIDI0NCwgMjUsIDIyNCwgNzAsIDY5LCAyMzUsIDI0NCwgMjUsIDIyNCwgODEsIAorICAgIDY5LCAyMzUsIDI0NCwgMjUsIDIyNCwgMzksIDIxNSwgNDksIDExMCwgNjksIDIzNSwgMjQ0LCAyNSwgMjI0LCAzOSwgMjE1LCAKKyAgICA0OSwgMTA1LCA2OSwgMjM1LCAyNDQsIDI1LCAyMjQsIDcxLCA2OSwgMjUsIDIzNSwgMjMwLCAyNTQsIDQ2LCA2OSwgMjUsIAorICAgIDIzNSwgMjMwLCAyNTUsIDc0LCA2OSwgMjUsIDUsIDI1NSwgNzQsIDY5LCAyNSwgNSwgNzMsIDY5LCAyNSwgNSwgMjM2LCAzNCwgCisgICAgNjksIDI1LCA1LCAyMTEsIDExNywgNjksIDI1LCA1LCAyMTAsIDE2OSwgNjksIDI1LCA1LCA3MCwgNjksIDI1LCA1LCAyMTQsIAorICAgIDExOCwgNjksIDI1LCA1LCAyMTQsIDIyOSwgNjksIDI1LCA1LCAyMjYsIDIzNSwgNjksIDI1LCA1LCAxOTEsIDY5LCAyNSwgNSwgCisgICAgMjM2LCA2MSwgNjksIDI1LCA1LCA3NSwgNjksIDI1LCA1LCAyNTQsIDI0NCwgNjksIDI1LCA1LCAyNTQsIDIwMiwgNjksIDI1LCAKKyAgICA1LCAyMjYsIDE4NCwgNjksIDI1LCA1LCAyNTMsIDE5MywgNjksIDUsIDIyOCwgMjA3LCA2OSwgNSwgMjIzLCAxMjcsIDY5LCAKKyAgICA1LCAyMTAsIDE4MCwgNjksIDUsIDIzMCwgNTMsIDY5LCA1LCAyMTUsIDIxNCwgNjksIDUsIDI1MiwgMTQ0LCA2OSwgNSwgCisgICAgMjIyLCAyMDcsIDY5LCA1LCAyMTYsIDQxLCA2OSwgNSwgMjM0LCAyNDIsIDY5LCA1LCAyNTQsIDIwNCwgNjksIDUsIDIyMSwgCisgICAgMjQ1LCAyMjEsIDIzOSwgNjksIDUsIDIxMywgMTQ5LCA2OSwgNSwgMjQ5LCAyMzMsIDY5LCA1LCAyNTIsIDExOCwgNjksIDUsIAorICAgIDIzNCwgMTI2LCA2OSwgNSwgMjUyLCAxMzgsIDY5LCA1LCAyNTEsIDEwLCAyMjUsIDczLCAyMzMsIDE4OCwgNjksIDUsIDIzMywgCisgICAgMzEsIDIxNiwgMTgsIDY5LCA1LCAyNTIsIDIxLCA2OSwgNSwgMjI1LCAxMjQsIDIzMCwgMTAwLCA2OSwgNSwgMjM0LCAxMCwgCisgICAgNjksIDI0OSwgOTksIDE2LCAyMjMsIDI5LCA2OSwgNSwgMjUzLCAxNzUsIDY5LCA1LCAyNTMsIDE5NiwgNjksIDIxLCAyMTAsIAorICAgIDg2LCA2OSwgMjEsIDExMCwgNjksIDIxLCAxMDUsIDY5LCAyMSwgMTU4LCA2OSwgMjEsIDE2MSwgNjksIDIxLCAxODksIDY5LCAKKyAgICAyMSwgMTk0LCA2OSwgMjEsIDE5OCwgNjksIDIxLCAxOTUsIDY5LCAyMSwgMjAwLCA2OSwgMTYsIDIzMywgMzEsIDI1MywgCisgICAgMTk4LCAyMTksIDQ0LCA2OSwgMTYsIDIzMywgMzEsIDI1MywgMTk4LCAyMzAsIDcyLCA2OSwgMTYsIDIzMywgMzEsIDI1MywgCisgICAgMTk4LCAyMjUsIDcyLCA2OSwgMTYsIDIzMywgMzEsIDI1MywgMTk4LCAyNTIsIDUwLCA2OSwgMTYsIDIzMywgMzEsIDI1MywgCisgICAgMTk4LCAyNTEsIDEwNCwgNjksIDE2LCAyMzMsIDMxLCAyNTMsIDE5OCwgMjI0LCAyMTYsIDY5LCAxNiwgMjMzLCAzMSwgMjUzLCAKKyAgICAxOTgsIDIyNCwgMjEwLCA2OSwgMTYsIDIzMywgMzEsIDI1MywgMTk4LCAyMjQsIDIwOCwgNjksIDE2LCAyMzMsIDMxLCAyNTMsIAorICAgIDE5OCwgMjI0LCAyMTQsIDY5LCAxNiwgMjMzLCAzMSwgMjUzLCAxOTgsIDIyNCwgMjEyLCA4MywgMjUxLCAyMzcsIDgzLCAKKyAgICAyNDUsIDE2NCwgODMsIDI0OSwgMjIwLCA4MywgMjQzLCAyMzAsIDIxOCwgMTMwLCA4MywgMjQ5LCAyMjcsIDgzLCAyNDQsIAorICAgIDEyLCAyNDcsIDExOSwgODMsIDIxNiwgNDAsIDIxOSwgNTMsIDI0MCwgMTY5LCA4MywgMjE5LCAxOTEsIDMsIDI1MSwgMTczLCAKKyAgICAyMzEsIDE1NSwgODMsIDIzMSwgMTg0LCAyNDksIDIyMCwgODMsIDIzMSwgMTg0LCAyNDMsIDIzMCwgMjE4LCAxMzAsIDgzLCAKKyAgICAyMjgsIDE5MiwgODMsIDI0MywgMjU0LCA0NSwgMjIxLCAxNTgsIDExMCwgODMsIDI0MywgMjU0LCA0NSwgMjIxLCAxNTgsIAorICAgIDEwNSwgODMsIDI0MywgMjU0LCA0NSwgMjIxLCAxNTgsIDE1OCwgODMsIDI1LCAyMjAsIDEzOCwgODMsIDIxLCAyMTAsIDg2LCAKKyAgICA4MywgMjEsIDExMCwgODMsIDIxLCAxMDUsIDgzLCAyMSwgMTU4LCA4MywgMjEsIDE2MSwgODMsIDIxLCAxODksIDgzLCAyMSwgCisgICAgMTk0LCA4MywgMjEsIDE5OCwgODMsIDIxLCAxOTUsIDgzLCAyMSwgMjAwLCA4MywgMSwgNjEsIDgzLCAxLCA3NSwgODMsIDEsIAorICAgIDczLCA4MywgMSwgNzYsIDgzLCAxLCA3MCwgODMsIDEsIDIyNiwgMjM1LCA4MywgMSwgMjE0LCAyMTQsIDgzLCAxLCAyNDUsIAorICAgIDIxMCwgODMsIDEsIDE5NywgODMsIDEsIDI1NCwgMTE2LCA4MywgMSwgMjUyLCAxOTIsIDgzLCAxLCAxOTAsIDgzLCAxLCAKKyAgICAyMjQsIDg5LCA4MywgMSwgMjQzLCAxMzYsIDgzLCAxLCAxODUsIDgzLCAxLCAyMzMsIDEzNiwgODMsIDEsIDIwNiwgODMsIDEsIAorICAgIDIyMCwgMTAzLCA4MywgMSwgMjE3LCAxMDYsIDgzLCAxLCAyNDgsIDIyMiwgODMsIDEsIDI1MCwgMTU4LCA4MywgMSwgMjM1LCAKKyAgICAxNDIsIDgzLCAxLCAxOTEsIDgzLCAxLCAyMDUsIDgzLCAxLCAyMTIsIDY1LCA4MywgMSwgMjQ0LCAxOTcsIDgzLCAxLCAxNzYsIAorICAgIDgzLCAxLCAyMzQsIDEzMywgODMsIDEsIDIxNSwgMTg0LCA4MywgMSwgMjEwLCAxMTYsIDgzLCAxLCAyNDIsIDQ3LCA4MywgMSwgCisgICAgMjEwLCAxNiwgODMsIDEsIDIzMiwgMjU1LCA4MywgMSwgMjEwLCA2OSwgODMsIDEsIDI1MCwgMTExLCA4MywgMSwgMjE2LCAKKyAgICA0MCwgMTk5LCAyNSwgNTAsIDgzLCAxLCAyMTYsIDQwLCA3NSwgODMsIDEsIDIxNiwgNDAsIDczLCA4MywgMSwgMjE2LCA0MCwgCisgICAgNzYsIDgzLCAxLCAyMTYsIDQwLCA3MCwgODMsIDEsIDIxNiwgNDAsIDIyNiwgMjM1LCA4MywgMSwgMjE2LCA0MCwgMjE0LCAKKyAgICAyMTQsIDgzLCAxLCAyMTYsIDQwLCAyNTQsIDExNiwgODMsIDEsIDIxNiwgNDAsIDI1MiwgMTkyLCA4MywgMSwgMjE2LCA0MCwgCisgICAgMTkwLCA4MywgMSwgMjE2LCA0MCwgMjI0LCA4OSwgODMsIDEsIDIxNiwgNDAsIDI0MywgMTM2LCA4MywgMSwgMjE2LCA0MCwgCisgICAgMTg1LCA4MywgMSwgMjE2LCA0MCwgMjE3LCAxMDYsIDgzLCAxLCAyMTYsIDQwLCAyNDgsIDIyMiwgODMsIDEsIDIxNiwgNDAsIAorICAgIDI1MCwgMTU4LCA4MywgMSwgMjE2LCA0MCwgMjM1LCAxNDIsIDgzLCAxLCAyMTYsIDQwLCAyMTUsIDE4NCwgODMsIDEsIDIxNiwgCisgICAgNDAsIDE5MSwgODMsIDEsIDIxNiwgNDAsIDIxMiwgNjUsIDgzLCAxLCAyMTYsIDQwLCAxNzYsIDgzLCAxLCAyMTYsIDQwLCAKKyAgICAyNDMsIDEzMywgODMsIDEsIDIxNiwgNDAsIDI0MiwgNDcsIDgzLCAxLCAyMTYsIDQwLCAyMzUsIDEwOCwgODMsIDEsIDIxNiwgCisgICAgNDAsIDIyOCwgMjMyLCA4MywgMSwgMjE2LCA0MCwgMjQ2LCAzOSwgODMsIDEsIDIxOSwgMTkxLCA3NSwgODMsIDEsIDIxOSwgCisgICAgMTkxLCA3MywgODMsIDEsIDIxOSwgMTkxLCAyMzUsIDE1MywgODMsIDEsIDIxOSwgMTkxLCAyMTQsIDIxNCwgODMsIDEsIAorICAgIDIxOSwgMTkxLCA3MCwgODMsIDEsIDIxOSwgMTkxLCAyNTQsIDExNiwgODMsIDEsIDIxOSwgMTkxLCAxNzYsIDgzLCAxLCAKKyAgICAyMTksIDE5MSwgMjQzLCAxMzYsIDgzLCAxLCAyMTksIDE5MSwgMTYyLCA4MywgMSwgMjE5LCAxOTEsIDE5MCwgODMsIDEsIAorICAgIDIxOSwgMTkxLCAyMjAsIDEwMywgODMsIDEsIDIxOSwgMTkxLCAyMTcsIDEwNiwgODMsIDEsIDIxOSwgMTkxLCAyNDgsIDIyMiwgCisgICAgODMsIDEsIDIxOSwgMTkxLCAyMzUsIDE0MiwgODMsIDEsIDIxOSwgMTkxLCAyNDQsIDE5NywgODMsIDEsIDIxOSwgMTkxLCAKKyAgICAyNDMsIDEzMywgODMsIDEsIDIxOSwgMTkxLCAyNDIsIDQ3LCA4MywgMSwgMjE5LCAxOTEsIDIxNSwgMTg0LCA4MywgMSwgCisgICAgMjE5LCAxOTEsIDIxMCwgMTE2LCA4MywgMSwgMjE5LCAxOTEsIDIyMywgMTg1LCA4MywgMSwgMjE5LCAxOTEsIDI1MCwgMTU4LCAKKyAgICA4MywgMSwgMjE5LCAxOTEsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4NCwgNzMsIDgzLCAxLCAyMzEsIDE4NCwgMTc2LCA4MywgCisgICAgMSwgMjMxLCAxODQsIDIwNSwgODMsIDEsIDIzMSwgMTg0LCAyNDQsIDE5NywgODMsIDEsIDIzMSwgMTg0LCAyMTAsIDgyLCAKKyAgICA4MywgMSwgMjU0LCAxNjMsIDI0MywgMTE3LCAyNTQsIDc3LCAxMTAsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDIxMywgCisgICAgMTQ4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDI0OCwgMTg3LCA4MywgMSwgMjU0LCAxNjMsIDI0MywgMTE3LCAKKyAgICAyMTQsIDIyNCwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMjM1LCAxOTQsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjMsIAorICAgIDI0MywgMTE3LCAyNTIsIDE1NiwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMTM0LCAyNTIsIDE1NiwgODMsIDEsIDI1NCwgCisgICAgMTYzLCAyNDMsIDExNywgNjEsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDczLCA4MywgMSwgMjU0LCAxNjMsIDI0MywgCisgICAgMTE3LCAxNzYsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDIyOSwgNzgsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIAorICAgIDI1MSwgMzQsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDIxNSwgMTU3LCA4MywgMSwgMjU0LCAxNjMsIDI0MywgMTE3LCAKKyAgICAyMTUsIDE0NSwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMjQ4LCAxMzYsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIAorICAgIDIyOCwgMTExLCA4MywgMSwgMjU0LCAxNjMsIDI0MywgMTE3LCAyMTcsIDEwNiwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgCisgICAgMjQ4LCAyMjIsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDE5MCwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMjI1LCAKKyAgICAxNDgsIDgzLCAxLCAyNTQsIDE2MywgMjQzLCAxMTcsIDIxOCwgMjI0LCA4MywgMSwgMjU0LCAxNjMsIDI0MywgMTE3LCAyMTAsIAorICAgIDgyLCA4MywgMSwgMjU0LCAxNjMsIDI0MywgMTE3LCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMjU0LCAKKyAgICAyMTAsIDgzLCAxLCAyMTYsIDQwLCAyNTQsIDE2MywgMjQzLCAxMTcsIDIxNywgMTA2LCA4MywgMSwgMjE2LCA0MCwgMjU0LCAKKyAgICAxNjMsIDI0MywgMTE3LCAyMTAsIDgyLCA4MywgMSwgMjMxLCAxODQsIDI1NCwgMTYzLCAyNDMsIDExNywgMjQyLCAyNTAsIAorICAgIDgzLCAxLCAyMzEsIDE4NCwgMjU0LCAxNjMsIDI0MywgMTE3LCAyMjksIDc4LCA4MywgMSwgMjMxLCAxODQsIDI1NCwgMTYzLCAKKyAgICAyNDMsIDExNywgMjUxLCAzNCwgODMsIDEsIDIzMSwgMTg0LCAyNTQsIDE2MywgMjQzLCAxMTcsIDIzNSwgMTE1LCA4MywgMSwgCisgICAgMjMxLCAxODQsIDI1NCwgMTYzLCAyNDMsIDExNywgMjE1LCAxNTcsIDgzLCAxLCAyMzEsIDE4NCwgMjU0LCAxNjMsIDI0MywgCisgICAgMTE3LCAyNDgsIDEyMCwgODMsIDEsIDIzMSwgMTg0LCAyNTQsIDE2MywgMjQzLCAxMTcsIDIxNywgMTA2LCA4MywgMSwgMjMxLCAKKyAgICAxODQsIDI1NCwgMTYzLCAyNDMsIDExNywgMjQ4LCAyNiwgODMsIDEsIDIzMSwgMTg0LCAyNTQsIDE2MywgMjQzLCAxMTcsIAorICAgIDIxOCwgMjI0LCA4MywgMSwgMjMxLCAxODQsIDI1NCwgMTYzLCAyNDMsIDExNywgMjQ5LCA3MywgODMsIDEsIDIzMSwgMTg0LCAKKyAgICAyNTQsIDE2MywgMjQzLCAxMTcsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4NCwgMjU0LCAxNjMsIDI0MywgMTE3LCAyMTAsIAorICAgIDExNiwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMTYzLCA3MCwgODMsIDEsIDI1NCwgMTYzLCAyNDMsIDExNywgMTYzLCAKKyAgICAxOTEsIDgzLCAxLCAyMzEsIDE4NCwgMjU0LCAxNjMsIDI0MywgMTE3LCAyNTIsIDE5LCA4MywgMSwgMjU0LCAxNjMsIDI0MywgCisgICAgMTE3LCAyNDgsIDIxMiwgODMsIDEsIDIzMSwgMTg0LCAyNTQsIDE2MywgMjQzLCAxMTcsIDIzMiwgMjU1LCAxOCwgMTksIAorICAgIDIyNiwgMTEwLCAxOCwgMTksIDI1MywgMTY4LCAxOCwgMTksIDI1NSwgMjksIDE4LCAxOSwgMjEyLCAyNSwgMTgsIDE5LCAKKyAgICAyMjQsIDIyMiwgMTgsIDE5LCAyMjUsIDIzMCwgMTgsIDE5LCAyMjQsIDEwNiwgMTgsIDE5LCAyMTcsIDMyLCAxOCwgMTksIAorICAgIDIzNCwgMTkwLCAxOCwgMTksIDIzMywgMTgwLCAxOCwgMTksIDIzMSwgMTMzLCAxOCwgMTksIDIyOCwgMzgsIDE4LCAxOSwgCisgICAgMjI5LCAxODIsIDE4LCAxOSwgMjMzLCA2OSwgMTgsIDE5LCAyMTksIDIzLCAxOCwgMTksIDIyMSwgMjEyLCAxOCwgMTksIAorICAgIDIxOSwgMjMzLCAxOCwgMTksIDIyMCwgNjcsIDE4LCAxOSwgMjE5LCAyMDIsIDE4LCAxOSwgMjEwLCAyMjAsIDE4LCAxOSwgCisgICAgMjExLCA1MiwgMTgsIDE5LCAyMjMsIDEzNSwgMTgsIDE5LCAyMjcsIDE3MiwgMTgsIDE5LCAyMjYsIDIxNywgMjI3LCAxNzIsIAorICAgIDE4LCAxOSwgMjI3LCAxNzEsIDE4LCAxOSwgMjI2LCAyMTcsIDIyNywgMTcxLCAxOCwgMTksIDIyNywgMTcwLCAxOCwgMTksIAorICAgIDIyNiwgMjE3LCAyMjcsIDE3MCwgMTgsIDE5LCAyMjcsIDE2OSwgMTgsIDE5LCAyMjYsIDIxNywgMjI3LCAxNjksIDE4LCAxOSwgCisgICAgMjIyLCAxMDYsIDE4LCAxOSwgMjIyLCAxMDUsIDE4LCAxOSwgMjIyLCAxMDQsIDE4LCAxOSwgMjIyLCAxMDMsIDE4LCAxOSwgCisgICAgMjIyLCAxMDIsIDE4LCAxOSwgMjIyLCAxMTAsIDE4LCAxOSwgMjI2LCAyMTcsIDIyNiwgMTA2LCAxOCwgMTksIDIyNiwgMjE3LCAKKyAgICAyMTcsIDE1MywgMTgsIDE5LCAyMjYsIDIxNywgMjM1LCAyNCwgMTgsIDE5LCAyMjYsIDIxNywgMjUxLCA2NywgMTgsIDE5LCAKKyAgICAyMjYsIDIxNywgMTkzLCAxOCwgMTksIDIyNiwgMjE3LCAyMzAsIDI2LCAxOCwgMTksIDIyNiwgMjE3LCAyMjIsIDkyLCAxOCwgCisgICAgMTksIDIyNiwgMjE3LCAyMjAsIDEwNSwgMTgsIDE5LCAyNDUsIDIyMCwgMjEyLCA5OCwgMTgsIDE5LCAyMTIsIDcsIDIxMiwgCisgICAgOTgsIDE4LCAxOSwgNDAsIDQsIDIyMiwgMjM0LCAxOCwgMTksIDQwLCAyMjMsIDE1OCwgMjQ3LCAxMjEsIDE4LCAxOSwgMjIzLCAKKyAgICAyMjQsIDIyMiwgMTA3LCAxOCwgMTksIDE1OSwgMjMyLCAxMjgsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNSwgMTgsIDE5LCAyMTYsIAorICAgIDEyNywgMTgsIDE5LCAyMTYsIDEyOSwgMTgsIDE5LCAyMTUsIDEzNywgMTgsIDE5LCAyMTUsIDEzOSwgMTgsIDE5LCAyMTUsIAorICAgIDE0NCwgMTgsIDE5LCAyMTYsIDUwLCAxOCwgMTksIDIxNiwgNTIsIDE4LCAxOSwgMjIxLCAyMTAsIDIxOSwgMjA3LCAxOCwgCisgICAgMTksIDIyMSwgMjEwLCAyMjAsIDIsIDE4LCAxOSwgMjIxLCAyMTAsIDI0MSwgNTQsIDE4LCAxOSwgNzIsIDI0MiwgNzQsIDE4LCAKKyAgICAxOSwgNzIsIDI0OCwgNTMsIDI0MywgNTYsIDE4LCAxOSwgNzIsIDI0MywgMTMzLCAxOCwgMTksIDcyLCAyNDIsIDc5LCAxOCwgCisgICAgMTksIDIyMSwgMjEwLCAyMzUsIDM0LCAxOCwgMTksIDcyLCAyMzUsIDMyLCAxOCwgMTksIDI1MiwgNjksIDI0OCwgNTMsIAorICAgIDE1NiwgMTgsIDE5LCAyNTIsIDY5LCAyNDgsIDUzLCAxNTMsIDE4LCAxOSwgNzIsIDI0OCwgNDgsIDIyMiwgOTIsIDIzMiwgCisgICAgMjI0LCAyMTMsIDEyMiwgMjMzLCAxMSwgMjMyLCAyMjQsIDEsIDE3NiwgMjMyLCAyMjQsIDEsIDIzNCwgMTMzLCAyMzIsIAorICAgIDIyNCwgMSwgMjQzLCAxMzYsIDIzMiwgMjI0LCAxLCAyNDIsIDI1MCwgMjMyLCAyMjQsIDEsIDIyOSwgNzgsIDIzMiwgMjI0LCAKKyAgICAxLCAyNTEsIDM0LCAyMzIsIDIyNCwgMSwgMjUwLCAxNTgsIDIzMiwgMjI0LCAxLCAyMzUsIDE0MiwgMjMyLCAyMjQsIDEsIAorICAgIDIzNSwgMTE1LCAyMzIsIDIyNCwgMSwgMjExLCA3MSwgMjMyLCAyMjQsIDEsIDIxNywgMTA2LCAyMzIsIDIyNCwgMSwgMjE2LCAKKyAgICAyMDksIDIzMiwgMjI0LCAxLCAyNDgsIDIyMiwgMjMyLCAyMjQsIDEsIDI0OCwgMjYsIDIzMiwgMjI0LCAxLCAxOTcsIDIzMiwgCisgICAgMjI0LCAxLCAxOTAsIDIzMiwgMjI0LCAxLCAyMjUsIDE0OCwgMjMyLCAyMjQsIDEsIDI1MiwgMTkyLCAyMzIsIDIyNCwgMSwgCisgICAgMjUyLCAxOSwgMjMyLCAyMjQsIDEsIDE4NSwgMjMyLCAyMjQsIDEsIDE5MSwgMjMyLCAyMjQsIDEsIDIwNSwgMjMyLCAyMjQsIAorICAgIDEsIDIzMywgMTM2LCAyMzIsIDIyNCwgMSwgMjEyLCA2NSwgMjMyLCAyMjQsIDEsIDIyMCwgMTAzLCAyMzIsIDIyNCwgMSwgCisgICAgMjE4LCAyMjQsIDIzMiwgMjI0LCAxLCAyMDYsIDIzMiwgMjI0LCAxLCAxNjIsIDIzMiwgMjI0LCAyNSwgNSwgNjEsIDIzMiwgCisgICAgMjI0LCAyNSwgNSwgNzMsIDIzMiwgMjI0LCAyNSwgNSwgNzAsIDIzMiwgMjI0LCAyNSwgNSwgMjQ1LCAyMTAsIDIzMiwgMjI0LCAKKyAgICAyNSwgNSwgMjU0LCAyMDIsIDIzMiwgMjI0LCAyNSwgNSwgMjI2LCAxODQsIDIzMiwgMjI0LCAyNSwgNSwgMjUzLCAxOTMsIAorICAgIDIzMiwgMjI0LCAyNSwgNSwgNzUsIDIzMiwgMjI0LCAyNSwgNSwgNzYsIDIzMiwgMjI0LCAyMTgsIDc0LCAxLCAxOTEsIDIzMiwgCisgICAgMjI0LCAyMTgsIDc0LCAxLCAyMDUsIDIzMiwgMjI0LCAyMTgsIDc0LCAxLCAyMTIsIDY1LCAyMzIsIDIyNCwgNCwgMSwgMTc2LCAKKyAgICAyMzIsIDIyNCwgNCwgMSwgMjI5LCA3OCwgMjMyLCAyMjQsIDQsIDEsIDI1NCwgNzYsIDIzMiwgMjI0LCA0LCAxLCAyMTcsIAorICAgIDEwNiwgMjMyLCAyMjQsIDQsIDEsIDE5NywgMjMyLCAyMjQsIDQsIDEsIDE5MCwgMjMyLCAyMjQsIDQsIDEsIDE4NSwgMjMyLCAKKyAgICAyMjQsIDQsIDEsIDIwNSwgMjMyLCAyMjQsIDQsIDEsIDIzMywgMTM2LCAyMzIsIDIyNCwgNSwgMjMwLCA5MCwgMjMyLCAyMjQsIAorICAgIDUsIDIzNCwgMTcyLCAyMzIsIDIyNCwgNSwgMjIyLCAzMywgMjMyLCAyMjQsIDUsIDIzMiwgMTI4LCAyMzIsIDIyNCwgMjQ1LCAKKyAgICAzMiwgNzgsIDIzMiwgMjI0LCAyMjQsIDE0LCA3OCwgMjMyLCAyMjQsIDIxLCAyMTAsIDg2LCAyMzIsIDIyNCwgMjEsIDExMCwgCisgICAgMjMyLCAyMjQsIDIxLCAxMDUsIDIzMiwgMjI0LCAyMSwgMTU4LCAyMzIsIDIyNCwgMjEsIDE2MSwgMjMyLCAyMjQsIDIxLCAKKyAgICAxODksIDIzMiwgMjI0LCAyMSwgMTk0LCAyMzIsIDIyNCwgMjEsIDE5OCwgMjMyLCAyMjQsIDIxLCAxOTUsIDIzMiwgMjI0LCAKKyAgICAyMSwgMjAwLCAzOSwgMjMzLCA2MCwgMSwgMTc2LCAzOSwgMjMzLCA2MCwgMSwgMjExLCAxNjUsIDM5LCAyMzMsIDYwLCAxLCAKKyAgICAyMjksIDc4LCAzOSwgMjMzLCA2MCwgMSwgMjE1LCAxODQsIDM5LCAyMzMsIDYwLCAxLCAyMDYsIDM5LCAyMzMsIDYwLCAxLCAKKyAgICAxOTEsIDM5LCAyMzMsIDYwLCAxLCAyMTcsIDEwNiwgMzksIDIzMywgNjAsIDEsIDIxNiwgMjA5LCAzOSwgMjMzLCA2MCwgMSwgCisgICAgMjMzLCAxMzYsIDM5LCAyMzMsIDYwLCAxLCAxOTAsIDM5LCAyMzMsIDYwLCAxLCAyMjUsIDE0OCwgMzksIDIzMywgNjAsIDEsIAorICAgIDE4NSwgMzksIDIzMywgNjAsIDEsIDI0NCwgMTk3LCAzOSwgMjMzLCA2MCwgMSwgMjE0LCAyNywgMzksIDIzMywgNjAsIDEsIAorICAgIDE2MiwgMzksIDIzMywgNjAsIDEsIDIyNCwgODksIDM5LCAyMzMsIDYwLCAxLCAyMzQsIDEzMywgMzksIDIzMywgNjAsIDEsIAorICAgIDIxNSwgMTc2LCAzOSwgMjMzLCA2MCwgMSwgMTk3LCAzOSwgMjMzLCA2MCwgMSwgNjEsIDM5LCAyMzMsIDYwLCAxLCA3MywgCisgICAgMzksIDIzMywgNjAsIDEsIDI0NSwgMjEwLCAzOSwgMjMzLCA2MCwgMSwgMjQ1LCAxOTgsIDM5LCAyMzMsIDYwLCAxLCA3MCwgCisgICAgMzksIDIzMywgNjAsIDEsIDIyNiwgMTg0LCAzOSwgMjMzLCA2MCwgMSwgNzYsIDM5LCAyMzMsIDYwLCAxLCAyMTQsIDIxNCwgCisgICAgMzksIDIzMywgNjAsIDEsIDc1LCAzOSwgMjMzLCA2MCwgMSwgMjUzLCAxOTEsIDM5LCAyMzMsIDYwLCAxLCAyNTQsIDIwMiwgCisgICAgMzksIDIzMywgNjAsIDEsIDIxNiwgMjksIDM5LCAyMzMsIDYwLCAxLCAyMTYsIDI4LCAzOSwgMjMzLCA2MCwgMSwgMjE2LCAKKyAgICAyNywgMzksIDIzMywgNjAsIDEsIDIxNiwgMjYsIDM5LCAyMzMsIDYwLCAxLCAyMTYsIDI1LCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyNSwgMjI0LCA4OSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNCwgODksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNzYsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyOSwgNzgsIDE2NiwgMzksIAogICAgIDE3MywgMSwgMTIxLCAxNzYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAotICAgIDIyOSwgNzcsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTUsIDE4MywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIwNiwgMTY2LCAKLSAgICAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNSwgMTgzLCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE3LCAxMDUsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAyMTYsIDIwOCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5NywgMTY2LCAzOSwgMTczLCAxLCAKLSAgICAxMjEsIDIxNywgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE2LCAyMDgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTcsIAotICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjUsIDE0NywgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjUsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNSwgMTQ3LCAKLSAgICAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjQ0LCAxOTYsIDE2NiwgMzksIDE3MywgCi0gICAgMSwgMTI1LCAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxMzUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKLSAgICAyNDQsIDE5NiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMzMsIDEzNSwgCi0gICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI0OCwgMjIxLCAxNjYsIDM5LCAxNzMsIAotICAgIDEsIDEyNSwgMjUyLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxNjIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNDgsIAotICAgIDIyMSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI1MiwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxODQsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTg0LCAxNjYsIDM5LCAxNzMsIAotICAgIDEsIDEyMSwgMjExLCAxMzgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTgsIDgyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCi0gICAgMjE4LCA4MiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjUsIDIxOSwgMjM5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDczLCAKLSAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMzYsIDMzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3MCwgMTY2LCAzOSwgMTczLCAyNSwgCi0gICAgNSwgMjE0LCAxMTgsIDE2NiwgMzksIDE3MywgMjUsIDUsIDc1LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTQsIDI0MywgMTY2LCAKLSAgICAzOSwgMTczLCAyNSwgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNywgMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCi0gICAgMjE0LCAyMTQsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1MywgMTY3LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDI4LCAKLSAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExMSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI2LCAxMDksIDE2NiwgMzksIAotICAgIDE3MywgMjUsIDUsIDIyNiwgMjUzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCi0gICAgMjM1LCAxNTIsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDc5LCAKLSAgICAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDI1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAxOTMsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgNDAsIDIzNSwgMjMsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgNjAsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTU4LCAKLSAgICAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNTgsIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE1NywgMTY2LCAzOSwgMTczLCAKKyAgICAyMjksIDc4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE1LCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMDYsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTUsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAKKyAgICAxMjEsIDIwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNywgMTA2LCAxNjYsIAorICAgIDM5LCAxNzMsIDEsIDEyNSwgMjE2LCAyMDksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTcsIDE2NiwgMzksIDE3MywgMSwgCisgICAgMTIxLCAyMTcsIDEwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNiwgMjA5LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTk3LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTkwLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI1LCAxNDgsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAxODUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMjUsIDE0OCwgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE4NSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI0NCwgMTk3LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIzMywgMTM2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjQ0LCAxOTcsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxMzYsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNjIsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNDgsIDIyMiwgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDI1MiwgMTkyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTYyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjQ4LCAKKyAgICAyMjIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNTIsIDE5MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIzMywgMTg1LCAxNjYsIAorICAgIDM5LCAxNzMsIDEsIDEyNSwgMjExLCAxMzgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMzMsIDE4NSwgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjEsIDIxMSwgMTM4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE4LCA4MywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDIxOCwgODMsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1LCAyMTksIDI0MCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU1LCA3NCwgCisgICAgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjM2LCAzNCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgNzAsIDE2NiwgMzksIDE3MywgMjUsIAorICAgIDUsIDIxNCwgMTE4LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3NSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU0LCAyNDQsIDE2NiwgCisgICAgMzksIDE3MywgMjUsIDUsIDc2LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjcsIDEsIDE2NiwgMzksIDE3MywgMjUsIDUsIAorICAgIDIxNCwgMjE0LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTMsIDE2OCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU1LCAyOSwgCisgICAgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjE0LCAxMTEsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNiwgMTEwLCAxNjYsIDM5LCAKKyAgICAxNzMsIDI1LCA1LCAyMjYsIDI1NCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjE0LCAyMTAsIDE2NiwgMzksIDE3MywgMjUsIDUsIAorICAgIDIzNSwgMTUzLCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMTQsIDEwNSwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjI5LCA4MCwgCisgICAgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjMwLCAyNiwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMTkzLCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDQwLCAyMzUsIDI0LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyNDksIDYxLCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyNTMsIDE1OSwgCisgICAgMTY2LCAzOSwgMTczLCAxMzgsIDIzMSwgMTU5LCAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNTgsIDE2NiwgMzksIDE3MywgCiAgICAgMjEsIDIxMCwgODYsIDE2NiwgMzksIDE3MywgMjEsIDExMCwgMTY2LCAzOSwgMTczLCAyMSwgMTA1LCAxNjYsIDM5LCAxNzMsIAogICAgIDIxLCAxNTgsIDE2NiwgMzksIDE3MywgMjEsIDE2MSwgMTY2LCAzOSwgMTczLCAyMSwgMTg5LCAxNjYsIDM5LCAxNzMsIDIxLCAKICAgICAxOTQsIDE2NiwgMzksIDE3MywgMjEsIDE5OCwgMTY2LCAzOSwgMTczLCAyMSwgMTk1LCAxNjYsIDM5LCAxNzMsIDIxLCAyMDAsIAotICAgIDE2NiwgMzksIDE3MywgODksIDIxLCAxMTAsIDE2NiwgMzksIDE3MywgNSwgMjMzLCAxMjAsIDE2NiwgMzksIDE3MywgNSwgCi0gICAgMjMzLCAxMTksIDY5LCAxNiwgMjI1LCAyMzYsIDY5LCAxNiwgMjMwLCA3MiwgMjM0LCAyNSwgNjksIDE2LCAyMjUsIDcyLCAKLSAgICAyMzQsIDI1LCA2OSwgMTYsIDI1MiwgNTAsIDIzNCwgMjUsIDY5LCAxNiwgMjUxLCAxMDQsIDIzNCwgMjUsIDY5LCAxNiwgCi0gICAgMjI0LCAyMTYsIDIzNCwgMjUsIDY5LCAxNiwgMjI0LCAyMTAsIDIzNCwgMjUsIDY5LCAxNiwgMjI0LCAyMDgsIDIzNCwgMjUsIAotICAgIDY5LCAxNiwgMjI0LCAyMTQsIDIzNCwgMjUsIDY5LCAxNiwgMjI0LCAyMTIsIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNzMsIAotICAgIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNjksIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNjgsIDIzNCwgMjUsIDY5LCAxNiwgCi0gICAgMjQ4LCAxNzEsIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNzAsIDIzNCwgMjUsIDY5LCAxNiwgMjQ4LCAxNjcsIDIzNCwgMjUsIAotICAgIDY5LCAxNiwgMjE1LCA4NywgNjksIDE2LCAyMzAsIDcyLCAyMjIsIDIwNSwgNjksIDE2LCAyMjUsIDcyLCAyMjIsIDIwNSwgCi0gICAgNjksIDE2LCAyNTIsIDUwLCAyMjIsIDIwNSwgNjksIDE2LCAyNTEsIDEwNCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTYsIAotICAgIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjEwLCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIwOCwgMjIyLCAyMDUsIDY5LCAxNiwgCi0gICAgMjI0LCAyMTQsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjEyLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE3MywgMjIyLCAKLSAgICAyMDUsIDY5LCAxNiwgMjQ4LCAxNjksIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTY4LCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIAotICAgIDE3MSwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNzAsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTY3LCAyMjIsIDIwNSwgCi0gICAgMjUxLCAxMjEsIDEsIDE3NiwgMjUxLCAxMjEsIDEsIDI0MywgMTM1LCAyNTEsIDEyMSwgMSwgMjI5LCA3NywgMjUxLCAxMjEsIAotICAgIDEsIDIyOSwgMjIsIDI1MSwgMTIxLCAxLCAxOTAsIDI1MSwgMTIxLCAxLCAyNTIsIDE5MSwgMjUxLCAxMjEsIDEsIDE4NCwgCi0gICAgMjUxLCAxMjEsIDEsIDIzMCwgMTA1LCAyNTEsIDEyMSwgMSwgMjE3LCAxMDUsIDI1MSwgMTIxLCAxLCAyNDgsIDIyMSwgMjUxLCAKLSAgICAxMjEsIDEsIDE5NywgMjUxLCAxMjEsIDEsIDIyOCwgMzYsIDI1MSwgMTIxLCAxLCAyNTEsIDMzLCAyNTEsIDEyMSwgMSwgCi0gICAgMjM1LCAxNDEsIDI1MSwgMTIxLCAxLCAyMjcsIDE2NSwgMjUxLCAxMjEsIDEsIDIyNywgMTU4LCAyNTEsIDEyMSwgMSwgMTkxLCAKLSAgICAyNTEsIDEyMSwgMSwgMjA1LCAyNTEsIDEyMSwgMSwgMjMzLCAxMzUsIDI1MSwgMTIxLCAxLCAyMTQsIDI3LCAyNTEsIDEyMSwgCi0gICAgMSwgMjA2LCAyNTEsIDEyMSwgMSwgNjEsIDI1MSwgMTIxLCAxLCAxNjIsIDI1MSwgMTIxLCAyNSwgNSwgNzMsIDI1MSwgMTIxLCAKLSAgICAyNSwgNSwgNzAsIDI1MSwgMTIxLCAyNSwgNSwgNzUsIDI1MSwgMTIxLCAyNSwgNSwgNzYsIDI1MSwgMTIxLCAyNSwgNSwgCi0gICAgMjU0LCAyNDMsIDI1MSwgMTIxLCAyMjYsIDYwLCAyNTEsIDEyMSwgMjQ1LCAxNDMsIDY0LCAyMjEsIDE3MiwgMzksIDg5LCAxLCAKLSAgICAxMjUsIDE3NiwgMzksIDg5LCAxLCAxMjUsIDIzNCwgMTMyLCAzOSwgODksIDEsIDEyNSwgMjMzLCAxNzEsIDM5LCA4OSwgMSwgCi0gICAgMTIxLCAxNzYsIDM5LCA4OSwgMSwgMTIxLCAyMzMsIDE3MSwgMzksIDg5LCAxLCAxMjEsIDIzNCwgMTMyLCAzOSwgODksIDEsIAotICAgIDIyOSwgNzcsIDM5LCA4OSwgMSwgMTI1LCAyNTEsIDMzLCAzOSwgODksIDEsIDEyNSwgMjUwLCAxNTcsIDM5LCA4OSwgMSwgCi0gICAgMTIxLCAyNTEsIDMzLCAzOSwgODksIDEsIDEyMSwgMjA2LCAzOSwgODksIDEsIDEyMSwgMjUwLCAxNTcsIDM5LCA4OSwgMSwgCi0gICAgMjI3LCAxNjUsIDM5LCA4OSwgMSwgMjIzLCAxNDAsIDM5LCA4OSwgMSwgMTI1LCAyMjMsIDEzOCwgMzksIDg5LCAxLCAyNDgsIAotICAgIDIyMSwgMzksIDg5LCAxLCAxMjEsIDIyMywgMTM4LCAzOSwgODksIDEsIDIyMywgMTQ5LCAzOSwgODksIDEsIDEyNSwgMjE3LCAKLSAgICAxMDUsIDM5LCA4OSwgMSwgMTI1LCAyMTYsIDIwOCwgMzksIDg5LCAxLCAxMjEsIDIxNywgMTA1LCAzOSwgODksIDEsIDEyMSwgCi0gICAgMjE2LCAyMDgsIDM5LCA4OSwgMSwgMTk3LCAzOSwgODksIDEsIDI1MiwgMTkxLCAzOSwgODksIDEsIDEyNSwgMTkwLCAzOSwgCi0gICAgODksIDEsIDEyNSwgMjI1LCAxNDcsIDM5LCA4OSwgMSwgMTI1LCAyNDQsIDE5NiwgMzksIDg5LCAxLCAxMjEsIDE5MCwgMzksIAotICAgIDg5LCAxLCAxMjEsIDI0NCwgMTk2LCAzOSwgODksIDEsIDEyMSwgMjI1LCAxNDcsIDM5LCA4OSwgMSwgMTg0LCAzOSwgODksIAotICAgIDEsIDEyMSwgMTkxLCAzOSwgODksIDEsIDEyNSwgMTkxLCAzOSwgODksIDEsIDIwNSwgMzksIDg5LCAxLCAyMjIsIDEzNywgCi0gICAgMzksIDg5LCAxLCAyMzMsIDEzNSwgMzksIDg5LCAxLCAyMzIsIDkzLCAzOSwgODksIDEsIDIxMiwgNjUsIDM5LCA4OSwgMSwgCi0gICAgMTI1LCAyMjAsIDEwMiwgMzksIDg5LCAxLCAxMjUsIDIxOCwgMjIzLCAzOSwgODksIDEsIDEyNSwgMjA2LCAzOSwgODksIDEsIAotICAgIDEyNSwgMTYyLCAzOSwgODksIDEsIDIzMiwgMTg0LCAzOSwgODksIDEsIDYxLCAzOSwgODksIDEsIDEyMSwgMTYyLCAzOSwgCi0gICAgODksIDEsIDczLCAzOSwgODksIDEsIDIzNiwgMzMsIDM5LCA4OSwgMSwgNzAsIDM5LCA4OSwgMSwgMjE0LCAxMTgsIDM5LCAKLSAgICA4OSwgMSwgMjQ1LCAyMDksIDM5LCA4OSwgMSwgMjI2LCAxODMsIDM5LCA4OSwgMSwgMjMzLCAxMjAsIDM5LCA4OSwgMSwgCi0gICAgMjQyLCAxMzIsIDIwNiwgMzksIDg5LCAxMTYsIDUsIDE0NywgMjA1LCAzOSwgODksIDExNiwgNSwgMTQ3LCAyMzMsIDEzNSwgCi0gICAgMzksIDg5LCAxMTYsIDUsIDIzMywgMTM2LCAyMTcsIDU4LCAyMzMsIDEwOSwgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjM0LCAKLSAgICAyMzEsIDIzMywgMTA5LCAzOSwgODksIDExNiwgNSwgNDAsIDIyOSwgNzcsIDM5LCA4OSwgMTE2LCA1LCAxMjEsIDE5MCwgMzksIAotICAgIDg5LCAxMTYsIDUsIDEyNSwgMjIzLCAxMzksIDE3NywgMTIxLCAxOTAsIDM5LCA4OSwgMTE2LCA1LCAxODQsIDM5LCA4OSwgCi0gICAgMTE2LCA1LCAyNTIsIDE5MSwgMzksIDg5LCAxMTYsIDUsIDIwNiwgMzksIDg5LCA1LCAyMjIsIDEwLCAzOSwgODksIDI1LCA1LCAKLSAgICA2MSwgMzksIDg5LCAyNSwgNSwgMjMxLCAyMDQsIDIyMSwgMjI2LCAzOSwgODksIDI1LCA1LCAyNTUsIDczLCAzOSwgODksIAotICAgIDI1LCA1LCAyMTcsIDY0LCAyNTUsIDczLCAzOSwgODksIDI1LCA1LCA3MywgMzksIDg5LCAyNSwgNSwgMjM2LCAzMywgMzksIAorICAgIDE2NiwgMzksIDE3MywgODksIDIxLCAxMTAsIDE2NiwgMzksIDE3MywgNSwgMjMzLCAxMjEsIDE2NiwgMzksIDE3MywgNSwgCisgICAgMjMzLCAxMjAsIDY5LCAxNiwgMjI1LCAyMzcsIDY5LCAxNiwgMjMwLCA3MywgMjM0LCAyNiwgNjksIDE2LCAyMjUsIDczLCAKKyAgICAyMzQsIDI2LCA2OSwgMTYsIDI1MiwgNTEsIDIzNCwgMjYsIDY5LCAxNiwgMjUxLCAxMDUsIDIzNCwgMjYsIDY5LCAxNiwgCisgICAgMjI0LCAyMTcsIDIzNCwgMjYsIDY5LCAxNiwgMjI0LCAyMTEsIDIzNCwgMjYsIDY5LCAxNiwgMjI0LCAyMDksIDIzNCwgMjYsIAorICAgIDY5LCAxNiwgMjI0LCAyMTUsIDIzNCwgMjYsIDY5LCAxNiwgMjI0LCAyMTMsIDIzNCwgMjYsIDY5LCAxNiwgMjQ4LCAxNzQsIAorICAgIDIzNCwgMjYsIDY5LCAxNiwgMjQ4LCAxNzAsIDIzNCwgMjYsIDY5LCAxNiwgMjQ4LCAxNjksIDIzNCwgMjYsIDY5LCAxNiwgCisgICAgMjQ4LCAxNzIsIDIzNCwgMjYsIDY5LCAxNiwgMjQ4LCAxNzEsIDIzNCwgMjYsIDY5LCAxNiwgMjQ4LCAxNjgsIDIzNCwgMjYsIAorICAgIDY5LCAxNiwgMjE1LCA4NywgNjksIDE2LCAyMzAsIDczLCAyMjIsIDIwNiwgNjksIDE2LCAyMjUsIDczLCAyMjIsIDIwNiwgCisgICAgNjksIDE2LCAyNTIsIDUxLCAyMjIsIDIwNiwgNjksIDE2LCAyNTEsIDEwNSwgMjIyLCAyMDYsIDY5LCAxNiwgMjI0LCAyMTcsIAorICAgIDIyMiwgMjA2LCA2OSwgMTYsIDIyNCwgMjExLCAyMjIsIDIwNiwgNjksIDE2LCAyMjQsIDIwOSwgMjIyLCAyMDYsIDY5LCAxNiwgCisgICAgMjI0LCAyMTUsIDIyMiwgMjA2LCA2OSwgMTYsIDIyNCwgMjEzLCAyMjIsIDIwNiwgNjksIDE2LCAyNDgsIDE3NCwgMjIyLCAKKyAgICAyMDYsIDY5LCAxNiwgMjQ4LCAxNzAsIDIyMiwgMjA2LCA2OSwgMTYsIDI0OCwgMTY5LCAyMjIsIDIwNiwgNjksIDE2LCAyNDgsIAorICAgIDE3MiwgMjIyLCAyMDYsIDY5LCAxNiwgMjQ4LCAxNzEsIDIyMiwgMjA2LCA2OSwgMTYsIDI0OCwgMTY4LCAyMjIsIDIwNiwgCisgICAgMjUxLCAxMjIsIDEsIDE3NiwgMjUxLCAxMjIsIDEsIDI0MywgMTM2LCAyNTEsIDEyMiwgMSwgMjI5LCA3OCwgMjUxLCAxMjIsIAorICAgIDEsIDIyOSwgMjMsIDI1MSwgMTIyLCAxLCAxOTAsIDI1MSwgMTIyLCAxLCAyNTIsIDE5MiwgMjUxLCAxMjIsIDEsIDE4NSwgCisgICAgMjUxLCAxMjIsIDEsIDIzMCwgMTA2LCAyNTEsIDEyMiwgMSwgMjE3LCAxMDYsIDI1MSwgMTIyLCAxLCAyNDgsIDIyMiwgMjUxLCAKKyAgICAxMjIsIDEsIDE5NywgMjUxLCAxMjIsIDEsIDIyOCwgMzcsIDI1MSwgMTIyLCAxLCAyNTEsIDM0LCAyNTEsIDEyMiwgMSwgCisgICAgMjM1LCAxNDIsIDI1MSwgMTIyLCAxLCAyMjcsIDE2NiwgMjUxLCAxMjIsIDEsIDIyNywgMTU5LCAyNTEsIDEyMiwgMSwgMTkxLCAKKyAgICAyNTEsIDEyMiwgMSwgMjA1LCAyNTEsIDEyMiwgMSwgMjMzLCAxMzYsIDI1MSwgMTIyLCAxLCAyMTQsIDI3LCAyNTEsIDEyMiwgCisgICAgMSwgMjA2LCAyNTEsIDEyMiwgMSwgNjEsIDI1MSwgMTIyLCAxLCAxNjIsIDI1MSwgMTIyLCAyNSwgNSwgNzMsIDI1MSwgMTIyLCAKKyAgICAyNSwgNSwgNzAsIDI1MSwgMTIyLCAyNSwgNSwgNzUsIDI1MSwgMTIyLCAyNSwgNSwgNzYsIDI1MSwgMTIyLCAyNSwgNSwgCisgICAgMjU0LCAyNDQsIDI1MSwgMTIyLCAyMjYsIDYxLCAyNTEsIDEyMiwgMjQ1LCAxNDQsIDY0LCAyMjEsIDE3MywgMzksIDg5LCAxLCAKKyAgICAxMjUsIDE3NiwgMzksIDg5LCAxLCAxMjUsIDIzNCwgMTMzLCAzOSwgODksIDEsIDEyNSwgMjMzLCAxNzIsIDM5LCA4OSwgMSwgCisgICAgMTIxLCAxNzYsIDM5LCA4OSwgMSwgMTIxLCAyMzMsIDE3MiwgMzksIDg5LCAxLCAxMjEsIDIzNCwgMTMzLCAzOSwgODksIDEsIAorICAgIDIyOSwgNzgsIDM5LCA4OSwgMSwgMTI1LCAyNTEsIDM0LCAzOSwgODksIDEsIDEyNSwgMjUwLCAxNTgsIDM5LCA4OSwgMSwgCisgICAgMTIxLCAyNTEsIDM0LCAzOSwgODksIDEsIDEyMSwgMjA2LCAzOSwgODksIDEsIDEyMSwgMjUwLCAxNTgsIDM5LCA4OSwgMSwgCisgICAgMjI3LCAxNjYsIDM5LCA4OSwgMSwgMjIzLCAxNDEsIDM5LCA4OSwgMSwgMTI1LCAyMjMsIDEzOSwgMzksIDg5LCAxLCAyNDgsIAorICAgIDIyMiwgMzksIDg5LCAxLCAxMjEsIDIyMywgMTM5LCAzOSwgODksIDEsIDIyMywgMTUwLCAzOSwgODksIDEsIDEyNSwgMjE3LCAKKyAgICAxMDYsIDM5LCA4OSwgMSwgMTI1LCAyMTYsIDIwOSwgMzksIDg5LCAxLCAxMjEsIDIxNywgMTA2LCAzOSwgODksIDEsIDEyMSwgCisgICAgMjE2LCAyMDksIDM5LCA4OSwgMSwgMTk3LCAzOSwgODksIDEsIDI1MiwgMTkyLCAzOSwgODksIDEsIDEyNSwgMTkwLCAzOSwgCisgICAgODksIDEsIDEyNSwgMjI1LCAxNDgsIDM5LCA4OSwgMSwgMTI1LCAyNDQsIDE5NywgMzksIDg5LCAxLCAxMjEsIDE5MCwgMzksIAorICAgIDg5LCAxLCAxMjEsIDI0NCwgMTk3LCAzOSwgODksIDEsIDEyMSwgMjI1LCAxNDgsIDM5LCA4OSwgMSwgMTg1LCAzOSwgODksIAorICAgIDEsIDEyMSwgMTkxLCAzOSwgODksIDEsIDEyNSwgMTkxLCAzOSwgODksIDEsIDIwNSwgMzksIDg5LCAxLCAyMjIsIDEzOCwgCisgICAgMzksIDg5LCAxLCAyMzMsIDEzNiwgMzksIDg5LCAxLCAyMzIsIDk0LCAzOSwgODksIDEsIDIxMiwgNjUsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAyMjAsIDEwMywgMzksIDg5LCAxLCAxMjUsIDIxOCwgMjI0LCAzOSwgODksIDEsIDEyNSwgMjA2LCAzOSwgODksIDEsIAorICAgIDEyNSwgMTYyLCAzOSwgODksIDEsIDIzMiwgMTg1LCAzOSwgODksIDEsIDYxLCAzOSwgODksIDEsIDEyMSwgMTYyLCAzOSwgCisgICAgODksIDEsIDczLCAzOSwgODksIDEsIDIzNiwgMzQsIDM5LCA4OSwgMSwgNzAsIDM5LCA4OSwgMSwgMjE0LCAxMTgsIDM5LCAKKyAgICA4OSwgMSwgMjQ1LCAyMTAsIDM5LCA4OSwgMSwgMjI2LCAxODQsIDM5LCA4OSwgMSwgMjMzLCAxMjEsIDM5LCA4OSwgMSwgCisgICAgMjQyLCAxMzMsIDIwNiwgMzksIDg5LCAxMTYsIDUsIDE0NywgMjA1LCAzOSwgODksIDExNiwgNSwgMTQ3LCAyMzMsIDEzNiwgCisgICAgMzksIDg5LCAxMTYsIDUsIDIzMywgMTM3LCAyMTcsIDU5LCAyMzMsIDExMCwgMzksIDg5LCA1LCAyMzEsIDIwNSwgMjM0LCAKKyAgICAyMzIsIDIzMywgMTEwLCAzOSwgODksIDExNiwgNSwgNDAsIDIyOSwgNzgsIDM5LCA4OSwgMTE2LCA1LCAxMjEsIDE5MCwgMzksIAorICAgIDg5LCAxMTYsIDUsIDEyNSwgMjIzLCAxNDAsIDE3NywgMTIxLCAxOTAsIDM5LCA4OSwgMTE2LCA1LCAxODUsIDM5LCA4OSwgCisgICAgMTE2LCA1LCAyNTIsIDE5MiwgMzksIDg5LCAxMTYsIDUsIDIwNiwgMzksIDg5LCA1LCAyMjIsIDExLCAzOSwgODksIDI1LCA1LCAKKyAgICA2MSwgMzksIDg5LCAyNSwgNSwgMjMxLCAyMDUsIDIyMSwgMjI3LCAzOSwgODksIDI1LCA1LCAyNTUsIDc0LCAzOSwgODksIAorICAgIDI1LCA1LCAyMTcsIDY1LCAyNTUsIDc0LCAzOSwgODksIDI1LCA1LCA3MywgMzksIDg5LCAyNSwgNSwgMjM2LCAzNCwgMzksIAogICAgIDg5LCAyNSwgNSwgMjE0LCAyMTQsIDM5LCA4OSwgMjUsIDUsIDIxNCwgMTE3LCAzOSwgODksIDI1LCA1LCA3MCwgMzksIDg5LCAKLSAgICAyNSwgNSwgMjE0LCAxMTgsIDM5LCA4OSwgMjUsIDUsIDc2LCAzOSwgODksIDI1LCA1LCAyMjcsIDEsIDUxLCAzOSwgODksIAotICAgIDI1LCA1LCAyMjYsIDEwOSwgMzksIDg5LCAyNSwgNSwgNzUsIDM5LCA4OSwgMjUsIDUsIDI1NCwgMjQzLCAzOSwgODksIDI1LCAKLSAgICA1LCAyMjYsIDE4MywgMzksIDg5LCAyNSwgNSwgMjU0LCAyMDEsIDM5LCA4OSwgMjUsIDUsIDg5LCAyNTQsIDIwMSwgMzksIAotICAgIDg5LCAyNSwgNSwgMjI3LCAxLCA0OCwgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjM0LCAyMzAsIDM5LCA4OSwgNSwgMjE2LCAyOSwgCi0gICAgMzksIDg5LCA1LCAyMTYsIDI4LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgMjcsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAKLSAgICAyNiwgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIDI1LCAzOSwgODksIDUsIDIyMywgMTg4LCAyNDIsIDQ1LCAzOSwgODksIDUsIAotICAgIDIzMSwgMjA0LCAyMjEsIDI1MywgMzksIDg5LCA1LCAyMzQsIDk2LCAyMzQsIDIxNSwgMzksIDg5LCAzOCwgMjQ5LCAxMTUsIAotICAgIDI0NywgMTIwLCAzOSwgODksIDI0MSwgNDYsIDIxLCAyMTAsIDg2LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxMTAsIDM5LCA4OSwgCi0gICAgMjQxLCA0NiwgMjEsIDEwNSwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTU4LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxNjEsIDM5LCAKLSAgICA4OSwgMjQxLCA0NiwgMjEsIDE4OSwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk0LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTgsIAotICAgIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5NSwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMjAwLCAzOSwgODksIDg5LCAyMSwgMjEwLCAKKyAgICAyNSwgNSwgMjE0LCAxMTgsIDM5LCA4OSwgMjUsIDUsIDc2LCAzOSwgODksIDI1LCA1LCAyMjcsIDIsIDUxLCAzOSwgODksIAorICAgIDI1LCA1LCAyMjYsIDExMCwgMzksIDg5LCAyNSwgNSwgNzUsIDM5LCA4OSwgMjUsIDUsIDI1NCwgMjQ0LCAzOSwgODksIDI1LCAKKyAgICA1LCAyMjYsIDE4NCwgMzksIDg5LCAyNSwgNSwgMjU0LCAyMDIsIDM5LCA4OSwgMjUsIDUsIDg5LCAyNTQsIDIwMiwgMzksIAorICAgIDg5LCAyNSwgNSwgMjI3LCAyLCA0OCwgMzksIDg5LCA1LCAyMzEsIDIwNSwgMjM0LCAyMzEsIDM5LCA4OSwgNSwgMjE2LCAzMCwgCisgICAgMzksIDg5LCA1LCAyMTYsIDI5LCAzOSwgODksIDUsIDIzNCwgOTgsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCA5OCwgMjE2LCAKKyAgICAyNywgMzksIDg5LCA1LCAyMzQsIDk4LCAyMTYsIDI2LCAzOSwgODksIDUsIDIyMywgMTg5LCAyNDIsIDQ2LCAzOSwgODksIDUsIAorICAgIDIzMSwgMjA1LCAyMjEsIDI1NCwgMzksIDg5LCA1LCAyMzQsIDk3LCAyMzQsIDIxNiwgMzksIDg5LCAzOCwgMjQ5LCAxMTYsIAorICAgIDI0NywgMTIxLCAzOSwgODksIDI0MSwgNDcsIDIxLCAyMTAsIDg2LCAzOSwgODksIDI0MSwgNDcsIDIxLCAxMTAsIDM5LCA4OSwgCisgICAgMjQxLCA0NywgMjEsIDEwNSwgMzksIDg5LCAyNDEsIDQ3LCAyMSwgMTU4LCAzOSwgODksIDI0MSwgNDcsIDIxLCAxNjEsIDM5LCAKKyAgICA4OSwgMjQxLCA0NywgMjEsIDE4OSwgMzksIDg5LCAyNDEsIDQ3LCAyMSwgMTk0LCAzOSwgODksIDI0MSwgNDcsIDIxLCAxOTgsIAorICAgIDM5LCA4OSwgMjQxLCA0NywgMjEsIDE5NSwgMzksIDg5LCAyNDEsIDQ3LCAyMSwgMjAwLCAzOSwgODksIDg5LCAyMSwgMjEwLCAKICAgICA4NiwgMzksIDg5LCA4OSwgMjEsIDExMCwgMzksIDg5LCA4OSwgMjEsIDEwNSwgMzksIDg5LCA4OSwgMjEsIDE1OCwgMzksIAogICAgIDg5LCA4OSwgMjEsIDE2MSwgMzksIDg5LCA4OSwgMjEsIDE4OSwgMzksIDg5LCA4OSwgMjEsIDE5NCwgMzksIDg5LCA4OSwgCiAgICAgMjEsIDE5OCwgMzksIDg5LCA4OSwgMjEsIDE5NSwgMzksIDg5LCA4OSwgMjEsIDIwMCwgMzksIDg5LCA1LCAyMTEsIDI0OSwgCi0gICAgMzksIDg5LCA1LCAyMTEsIDI0OCwgMzksIDg5LCA1LCAyMjEsIDIxNSwgMzksIDg5LCA1LCAyMzQsIDE2MCwgMzksIDg5LCA1LCAKLSAgICAyNDAsIDIzMiwgMzksIDg5LCA1LCAyNDcsIDEzNCwgMzksIDg5LCA1LCAyMjMsIDQ5LCAyMjIsIDE4NywgMjIzLCAxNDksIAotICAgIDM5LCA4OSwgNSwgMjMxLCAyMDQsIDIxMSwgNzIsIDM5LCA4OSwgNSwgMjM1LCA2LCAzOSwgODksIDUsIDIzNSwgNSwgMzksIAotICAgIDg5LCA1LCAyMjEsIDIyMiwgMzksIDg5LCA1LCAyMjEsIDIyMSwgMzksIDg5LCA1LCAyNDIsIDksIDM5LCA4OSwgNSwgMjUxLCAKLSAgICAzMCwgMTAyLCA1LCAyMTQsIDIwMCwgMjIzLCAzMCwgMTAyLCA1LCAyMTQsIDIwMCwgMjUxLCAxLCAxMDIsIDUsIDI1MCwgCi0gICAgMTg2LCAxMDIsIDUsIDIxOCwgMTUsIDEwMiwgNSwgMjUxLCAyMzMsIDEwMiwgMSwgMjU0LCAxODQsIDEwMiwgMSwgMjU0LCAKLSAgICAxODUsIDIxNywgMTMsIDEwMiwgMSwgMjM2LCAyOSwgMTAyLCAxLCAyMzYsIDMwLCAyMTcsIDEzLCAxMDIsIDEsIDIxNCwgCi0gICAgMjAzLCAxMDIsIDEsIDIxNCwgMjA0LCAyMTcsIDEzLCAxMDIsIDEsIDIyMywgMTg4LCAyMjMsIDc5LCAxMDIsIDEsIDIyMywgCi0gICAgMTg4LCAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDEsIDIzMywgMTM2LCAyMzMsIDI0LCAxMDIsIDEsIDIzMywgMTM2LCAyMzMsIAotICAgIDI1LCAyMTcsIDEzLCAxMDIsIDEsIDI0NSwgMTc5LCAxMDIsIDEsIDI1NCwgMTk5LCAxMDIsIDEsIDIyNiwgMjEyLCAxMDIsIAotICAgIDEsIDIyNiwgMjEzLCAyMTcsIDEzLCAxMDIsIDEsIDE3NiwgMTAyLCAxLCAyMzUsIDEzLCAyMzEsIDIwNywgMTAyLCAxLCAKLSAgICAyNDMsIDEzNSwgMTAyLCAxLCAyNDMsIDEzNiwgMjQyLCAxNjEsIDEwMiwgMSwgMjI5LCA3NywgMTAyLCAxLCAyNTEsIDMzLCAKLSAgICAxMDIsIDEsIDI1MSwgMzQsIDIzMywgMTIzLCAxMDIsIDEsIDIzNSwgMTQxLCAxMDIsIDEsIDIzNSwgMTQyLCAyMzUsIDExOCwgCi0gICAgMTAyLCAxLCAyMjcsIDE2NSwgMTAyLCAxLCAyMTcsIDEwNiwgMjMzLCA3NiwgMTAyLCAxLCAyMTcsIDEwNiwgMjMwLCA2NywgCi0gICAgMjMxLCAyMDcsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMCwgNjcsIDI1NCwgMTQ1LCAxMDIsIDEsIDI0OCwgMjIyLCAyMzAsIDY3LCAKLSAgICAyMzEsIDIwNywgMTAyLCAxLCAyMjksIDIyOSwgMjIzLCAxNTIsIDEwMiwgMSwgMjE3LCAxMDUsIDEwMiwgMSwgMjE3LCAxMDYsIAotICAgIDIxNywgMzUsIDEwMiwgMSwgMjQ4LCAyMjEsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMSwgMjI1LCAxMDIsIDEsIDE5NywgMTAyLCAKLSAgICAxLCAxOTAsIDEwMiwgMSwgMjI2LCA5MCwgMjM0LCAyMjYsIDEwMiwgMSwgMjUyLCAxOTEsIDEwMiwgMSwgMjUyLCAxOTIsIAotICAgIDIzNCwgMTcyLCAxMDIsIDEsIDE4NCwgMTAyLCAxLCAxOTEsIDEwMiwgMSwgMjA1LCAxMDIsIDEsIDIzMywgMTM1LCAxMDIsIAotICAgIDEsIDIxMiwgNjUsIDEwMiwgMSwgMjIyLCAzNCwgMjIyLCAyMCwgMTAyLCAxLCAyMjIsIDM0LCAyMjEsIDIzMywgMTAyLCAxLCAKLSAgICAyMDYsIDEwMiwgMSwgMTYyLCAxMDIsIDUsIDIyMywgNzAsIDEwMiwgMjUsIDUsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNCwgCi0gICAgMTk5LCAxMDIsIDI1LCA1LCAyMTQsIDIwMCwgMjIxLCAyMjksIDEwMiwgMjUsIDUsIDIxOCwgNDcsIDEwMiwgMjUsIDUsIAotICAgIDIxOCwgNDgsIDIzNiwgMjEsIDEwMiwgMjUsIDUsIDIyMywgMTg4LCAyMjMsIDc5LCAxMDIsIDI1LCA1LCAyMjMsIDE4OCwgCi0gICAgMjIzLCA4MCwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjMzLCAxMzYsIDIzMywgMjQsIDEwMiwgMjUsIDUsIDIzMywgMTM2LCAKLSAgICAyMzMsIDI1LCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMTcsIDY1LCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAyMjMsIDc5LCAxMDIsIAotICAgIDI1LCA1LCAyMTcsIDY2LCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDI1LCAKLSAgICA1LCAyMjUsIDE4NCwgMTAyLCAyNSwgNSwgMjI1LCAxODUsIDIxNywgMTMsIDEwMiwgMjU0LCAyNTAsIDI1NCwgMjQ5LCAxMDIsIAotICAgIDEsIDIzNCwgMjUxLCAyMjEsIDIyOCwgMTAyLCAxLCAyMzQsIDEwMiwgMjIxLCAyMjgsIDEwMiwgMSwgMjE1LCAzNCwgMjIxLCAKLSAgICAyMjgsIDEwMiwgMSwgMjQ1LCAyMDMsIDIyMSwgMjI4LCAxMDIsIDEsIDIxNCwgMCwgMjIxLCAyMjgsIDEwMiwgMSwgMjEwLCAKLSAgICAxMDcsIDIyMSwgMjI4LCAxMDIsIDEsIDI1MywgMjA5LCAyMjEsIDIyOCwgMTAyLCAyMSwgMjEwLCA4NiwgMTAyLCAyMSwgCisgICAgMzksIDg5LCA1LCAyMTEsIDI0OCwgMzksIDg5LCA1LCAyMjEsIDIxNiwgMzksIDg5LCA1LCAyMzQsIDE2MSwgMzksIDg5LCA1LCAKKyAgICAyNDAsIDIzMywgMzksIDg5LCA1LCAyNDcsIDEzNSwgMzksIDg5LCA1LCAyMjMsIDUwLCAyMjIsIDE4OCwgMjIzLCAxNTAsIAorICAgIDM5LCA4OSwgNSwgMjMxLCAyMDUsIDIxMSwgNzIsIDM5LCA4OSwgNSwgMjM1LCA3LCAzOSwgODksIDUsIDIzNSwgNiwgMzksIAorICAgIDg5LCA1LCAyMjEsIDIyMywgMzksIDg5LCA1LCAyMjEsIDIyMiwgMzksIDg5LCA1LCAyNDIsIDEwLCAzOSwgODksIDUsIDI1MSwgCisgICAgMzEsIDEwMiwgNSwgMjE0LCAyMDAsIDIyMywgMzEsIDEwMiwgNSwgMjE0LCAyMDAsIDI1MSwgMiwgMTAyLCA1LCAyNTAsIAorICAgIDE4NywgMTAyLCA1LCAyMTgsIDE2LCAxMDIsIDUsIDI1MSwgMjM0LCAxMDIsIDEsIDI1NCwgMTg1LCAxMDIsIDEsIDI1NCwgCisgICAgMTg2LCAyMTcsIDE0LCAxMDIsIDEsIDIzNiwgMzAsIDEwMiwgMSwgMjM2LCAzMSwgMjE3LCAxNCwgMTAyLCAxLCAyMTQsIAorICAgIDIwMywgMTAyLCAxLCAyMTQsIDIwNCwgMjE3LCAxNCwgMTAyLCAxLCAyMjMsIDE4OSwgMjIzLCA4MCwgMTAyLCAxLCAyMjMsIAorICAgIDE4OSwgMjIzLCA4MSwgMjE3LCAxNCwgMTAyLCAxLCAyMzMsIDEzNywgMjMzLCAyNSwgMTAyLCAxLCAyMzMsIDEzNywgMjMzLCAKKyAgICAyNiwgMjE3LCAxNCwgMTAyLCAxLCAyNDUsIDE4MCwgMTAyLCAxLCAyNTQsIDIwMCwgMTAyLCAxLCAyMjYsIDIxMywgMTAyLCAKKyAgICAxLCAyMjYsIDIxNCwgMjE3LCAxNCwgMTAyLCAxLCAxNzYsIDEwMiwgMSwgMjM1LCAxNCwgMjMxLCAyMDgsIDEwMiwgMSwgCisgICAgMjQzLCAxMzYsIDEwMiwgMSwgMjQzLCAxMzcsIDI0MiwgMTYyLCAxMDIsIDEsIDIyOSwgNzgsIDEwMiwgMSwgMjUxLCAzNCwgCisgICAgMTAyLCAxLCAyNTEsIDM1LCAyMzMsIDEyNCwgMTAyLCAxLCAyMzUsIDE0MiwgMTAyLCAxLCAyMzUsIDE0MywgMjM1LCAxMTksIAorICAgIDEwMiwgMSwgMjI3LCAxNjYsIDEwMiwgMSwgMjE3LCAxMDcsIDIzMywgNzcsIDEwMiwgMSwgMjE3LCAxMDcsIDIzMCwgNjgsIAorICAgIDIzMSwgMjA4LCAxMDIsIDEsIDI0OCwgMjIzLCAyMzAsIDY4LCAyNTQsIDE0NiwgMTAyLCAxLCAyNDgsIDIyMywgMjMwLCA2OCwgCisgICAgMjMxLCAyMDgsIDEwMiwgMSwgMjI5LCAyMzAsIDIyMywgMTUzLCAxMDIsIDEsIDIxNywgMTA2LCAxMDIsIDEsIDIxNywgMTA3LCAKKyAgICAyMTcsIDM2LCAxMDIsIDEsIDI0OCwgMjIyLCAxMDIsIDEsIDI0OCwgMjIzLCAyMzEsIDIyNiwgMTAyLCAxLCAxOTcsIDEwMiwgCisgICAgMSwgMTkwLCAxMDIsIDEsIDIyNiwgOTEsIDIzNCwgMjI3LCAxMDIsIDEsIDI1MiwgMTkyLCAxMDIsIDEsIDI1MiwgMTkzLCAKKyAgICAyMzQsIDE3MywgMTAyLCAxLCAxODUsIDEwMiwgMSwgMTkxLCAxMDIsIDEsIDIwNSwgMTAyLCAxLCAyMzMsIDEzNiwgMTAyLCAKKyAgICAxLCAyMTIsIDY1LCAxMDIsIDEsIDIyMiwgMzUsIDIyMiwgMjEsIDEwMiwgMSwgMjIyLCAzNSwgMjIxLCAyMzQsIDEwMiwgMSwgCisgICAgMjA2LCAxMDIsIDEsIDE2MiwgMTAyLCA1LCAyMjMsIDcxLCAxMDIsIDI1LCA1LCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTQsIAorICAgIDE5OSwgMTAyLCAyNSwgNSwgMjE0LCAyMDAsIDIyMSwgMjMwLCAxMDIsIDI1LCA1LCAyMTgsIDQ4LCAxMDIsIDI1LCA1LCAKKyAgICAyMTgsIDQ5LCAyMzYsIDIyLCAxMDIsIDI1LCA1LCAyMjMsIDE4OSwgMjIzLCA4MCwgMTAyLCAyNSwgNSwgMjIzLCAxODksIAorICAgIDIyMywgODEsIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIzMywgMTM3LCAyMzMsIDI1LCAxMDIsIDI1LCA1LCAyMzMsIDEzNywgCisgICAgMjMzLCAyNiwgMjE3LCAxNCwgMTAyLCAyNSwgNSwgMjE3LCA2NiwgMTAyLCAyNSwgNSwgMjE3LCA2NywgMjIzLCA4MCwgMTAyLCAKKyAgICAyNSwgNSwgMjE3LCA2NywgMjE3LCAxNCwgMTAyLCAyNSwgNSwgMjE3LCA2NywgMjIzLCA4MSwgMjE3LCAxNCwgMTAyLCAyNSwgCisgICAgNSwgMjI1LCAxODUsIDEwMiwgMjUsIDUsIDIyNSwgMTg2LCAyMTcsIDE0LCAxMDIsIDI1NCwgMjUxLCAyNTQsIDI1MCwgMTAyLCAKKyAgICAxLCAyMzQsIDI1MiwgMjIxLCAyMjksIDEwMiwgMSwgMjM0LCAxMDMsIDIyMSwgMjI5LCAxMDIsIDEsIDIxNSwgMzQsIDIyMSwgCisgICAgMjI5LCAxMDIsIDEsIDI0NSwgMjA0LCAyMjEsIDIyOSwgMTAyLCAxLCAyMTQsIDAsIDIyMSwgMjI5LCAxMDIsIDEsIDIxMCwgCisgICAgMTA3LCAyMjEsIDIyOSwgMTAyLCAxLCAyNTMsIDIxMCwgMjIxLCAyMjksIDEwMiwgMjEsIDIxMCwgODYsIDEwMiwgMjEsIAogICAgIDExMCwgMTAyLCAyMSwgMTA1LCAxMDIsIDIxLCAxNTgsIDEwMiwgMjEsIDE2MSwgMTAyLCAyMSwgMTg5LCAxMDIsIDIxLCAKLSAgICAxOTQsIDEwMiwgMjEsIDE5OCwgMTAyLCAyMSwgMTk1LCAxMDIsIDIxLCAyMDAsIDEwMiwgMjI2LCAyOSwgMTAyLCAyMjYsIAotICAgIDU1LCAxMDIsIDIxMSwgMjM4LCAxMDIsIDI1MCwgMjM2LCAyMjYsIDQ4LCAxMDIsIDI1MCwgMjM2LCAyMTksIDE3MiwgMTAyLCAKLSAgICAyNTAsIDIzNiwgMjI2LCAyLCAxMDIsIDIyNiwgNTQsIDEwMiwgMjgsIDE2LCAyNDcsIDEyNiwgMTAyLCAyOCwgMTYsIDI0OCwgCi0gICAgNTEsIDEwMiwgMjgsIDE2LCAyNDYsIDY0LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzYsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NywgCi0gICAgMjE4LCAxNSwgMTAyLCAyOCwgMTYsIDI0NywgMjA1LCAxMDIsIDI4LCAxNiwgMjQ4LCAyMTQsIDEwMiwgMjgsIDE2LCAyNDgsIAotICAgIDMzLCAxMDIsIDI4LCAxNiwgMjQ4LCAxOTgsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NywgMjQzLCA1NywgMTAyLCAyOCwgMTYsIAotICAgIDM4LCAyMTcsIDksIDEwMiwgMjgsIDE2LCAzOCwgMjQ1LCAxNDEsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNjcsIDEwMiwgCi0gICAgMjgsIDE2LCAzOCwgMjM0LCAxNjksIDEwMiwgMjgsIDE2LCAzOCwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAKLSAgICAxNjgsIDIsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTcwLCAyLCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIAotICAgIDM4LCAyNTIsIDM3LCAxMDIsIDI4LCAxNiwgMzgsIDI0MiwgMTY1LCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDIwNCwgMjQ2LCAKLSAgICA3NCwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyMDQsIDI0OCwgMjEyLCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDI1MCwgMCwgCi0gICAgMjE1LCAxMTEsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjUwLCAwLCAyMTcsIDczLCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgCi0gICAgMjA0LCAyMjYsIDQzLCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgMjA0LCAyMjQsIDEzOSwgMTAyLCAyOCwgMTYsIDIzMywgNDQsIAotICAgIDI1MCwgMCwgMjI1LCAzOCwgMTAyLCAyOCwgMTYsIDIzMywgNDQsIDI1MCwgMCwgMjI1LCAyNiwgMTAyLCAyOCwgMTYsIDIzMywgCi0gICAgNDQsIDIwNCwgMjI1LCA2MSwgMjA3LCA1LCAyMjYsIDI2LCAyMDcsIDUsIDIyNiwgMzksIDIwNywgNSwgMjI2LCAzNSwgMjA3LCAKLSAgICAxLCA2MSwgMjA3LCAxLCA3MywgMjA3LCAxLCA3MCwgMjA3LCAxLCAyNTQsIDI0MywgMjA3LCAxLCA3NiwgMjA3LCAxLCA3NSwgCi0gICAgMjA3LCAxLCAyNDUsIDU1LCAyMDcsIDEsIDE3NiwgMjA3LCAxLCAyMjQsIDg4LCAyMDcsIDEsIDI0MywgMTM1LCAyMDcsIDEsIAotICAgIDIyOSwgNzcsIDIwNywgMSwgMjUxLCAzMywgMjA3LCAxLCAyMzUsIDE0MSwgMjA3LCAxLCAyMTAsIDExNiwgMjA3LCAxLCAKLSAgICAyMjcsIDE2NSwgMjA3LCAxLCAyMTcsIDEwNSwgMjA3LCAxLCAyNDgsIDIyMSwgMjA3LCAxLCAxOTcsIDIwNywgMSwgMTkwLCAKLSAgICAyMDcsIDEsIDI0NCwgMTk2LCAyMDcsIDEsIDIxNCwgMjcsIDIwNywgMSwgMjUyLCAxOTEsIDIwNywgMSwgMTg0LCAyMDcsIDEsIAotICAgIDE5MSwgMjA3LCAxLCAyMDUsIDIwNywgMSwgMjMzLCAxMzUsIDIwNywgMSwgMjEyLCA2NSwgMjA3LCAxLCAyMDYsIDIwNywgMSwgCi0gICAgMjExLCAxNjUsIDIwNywgMSwgMTYyLCAyMDcsIDExNiwgNSwgMjI2LCA1MiwgMjA3LCAxMTYsIDUsIDIyNiwgMjgsIDIwNywgCi0gICAgMTE2LCA1LCAyMjYsIDI1LCAyMDcsIDI1LCA1LCAyMjYsIDQyLCAyMDcsIDI1LCA1LCAyMjYsIDI0LCAyMDcsIDI1LCA1LCAKLSAgICAyMjYsIDQ2LCAyMDcsIDI1LCA1LCAyMjYsIDM0LCAyMDcsIDI1LCA1LCAyMjYsIDUzLCAyMDcsIDI1LCA1LCAyMjYsIDQ0LCAKLSAgICAyMDcsIDUsIDIyNiwgNTYsIDIwNywgNSwgMjEzLCAxNTIsIDIwNywgMTE2LCA1LCAyMjUsIDI0OCwgMTg0LCAyMDcsIDExNiwgCi0gICAgNSwgMjI1LCAyNDgsIDIxMiwgNjUsIDIwNywgMSwgMjM0LCAxMzIsIDIwNywgMSwgMjE3LCAyMzEsIDIwNywgMjEsIDIxMCwgCisgICAgMTk0LCAxMDIsIDIxLCAxOTgsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMjAwLCAxMDIsIDIyNiwgMzAsIDEwMiwgMjI2LCAKKyAgICA1NiwgMTAyLCAyMTEsIDIzOCwgMTAyLCAyNTAsIDIzNywgMjI2LCA0OSwgMTAyLCAyNTAsIDIzNywgMjE5LCAxNzMsIDEwMiwgCisgICAgMjUwLCAyMzcsIDIyNiwgMywgMTAyLCAyMjYsIDU1LCAxMDIsIDI4LCAxNiwgMjQ3LCAxMjcsIDEwMiwgMjgsIDE2LCAyNDgsIAorICAgIDUyLCAxMDIsIDI4LCAxNiwgMjQ2LCA2NSwgMTAyLCAyOCwgMTYsIDI0OCwgMTc3LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzgsIAorICAgIDIxOCwgMTYsIDEwMiwgMjgsIDE2LCAyNDcsIDIwNiwgMTAyLCAyOCwgMTYsIDI0OCwgMjE1LCAxMDIsIDI4LCAxNiwgMjQ4LCAKKyAgICAzNCwgMTAyLCAyOCwgMTYsIDI0OCwgMTk5LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzgsIDI0MywgNTgsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjE3LCAxMCwgMTAyLCAyOCwgMTYsIDM4LCAyNDUsIDE0MiwgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE2OCwgMTAyLCAKKyAgICAyOCwgMTYsIDM4LCAyMzQsIDE3MCwgMTAyLCAyOCwgMTYsIDM4LCAyMzUsIDEyMywgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIAorICAgIDE2OSwgMiwgMjM1LCAxMjMsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzEsIDIsIDIzNSwgMTIzLCAxMDIsIDI4LCAxNiwgCisgICAgMzgsIDI1MiwgMzgsIDEwMiwgMjgsIDE2LCAzOCwgMjQyLCAxNjYsIDEwMiwgMjgsIDE2LCAyMjIsIDI1MCwgMjA0LCAyNDYsIAorICAgIDc1LCAxMDIsIDI4LCAxNiwgMjIyLCAyNTAsIDIwNCwgMjQ4LCAyMTMsIDEwMiwgMjgsIDE2LCAyMjIsIDI1MCwgMjUwLCAxLCAKKyAgICAyMTUsIDExMiwgMTAyLCAyOCwgMTYsIDIyMiwgMjUwLCAyNTAsIDEsIDIxNywgNzQsIDEwMiwgMjgsIDE2LCAyMzMsIDQ1LCAKKyAgICAyMDQsIDIyNiwgNDQsIDEwMiwgMjgsIDE2LCAyMzMsIDQ1LCAyMDQsIDIyNCwgMTQwLCAxMDIsIDI4LCAxNiwgMjMzLCA0NSwgCisgICAgMjUwLCAxLCAyMjUsIDM5LCAxMDIsIDI4LCAxNiwgMjMzLCA0NSwgMjUwLCAxLCAyMjUsIDI3LCAxMDIsIDI4LCAxNiwgMjMzLCAKKyAgICA0NSwgMjA0LCAyMjUsIDYyLCAyMDcsIDUsIDIyNiwgMjcsIDIwNywgNSwgMjI2LCA0MCwgMjA3LCA1LCAyMjYsIDM2LCAyMDcsIAorICAgIDEsIDYxLCAyMDcsIDEsIDczLCAyMDcsIDEsIDcwLCAyMDcsIDEsIDI1NCwgMjQ0LCAyMDcsIDEsIDc2LCAyMDcsIDEsIDc1LCAKKyAgICAyMDcsIDEsIDI0NSwgNTYsIDIwNywgMSwgMTc2LCAyMDcsIDEsIDIyNCwgODksIDIwNywgMSwgMjQzLCAxMzYsIDIwNywgMSwgCisgICAgMjI5LCA3OCwgMjA3LCAxLCAyNTEsIDM0LCAyMDcsIDEsIDIzNSwgMTQyLCAyMDcsIDEsIDIxMCwgMTE2LCAyMDcsIDEsIAorICAgIDIyNywgMTY2LCAyMDcsIDEsIDIxNywgMTA2LCAyMDcsIDEsIDI0OCwgMjIyLCAyMDcsIDEsIDE5NywgMjA3LCAxLCAxOTAsIAorICAgIDIwNywgMSwgMjQ0LCAxOTcsIDIwNywgMSwgMjE0LCAyNywgMjA3LCAxLCAyNTIsIDE5MiwgMjA3LCAxLCAxODUsIDIwNywgMSwgCisgICAgMTkxLCAyMDcsIDEsIDIwNSwgMjA3LCAxLCAyMzMsIDEzNiwgMjA3LCAxLCAyMTIsIDY1LCAyMDcsIDEsIDIwNiwgMjA3LCAxLCAKKyAgICAyMTEsIDE2NSwgMjA3LCAxLCAxNjIsIDIwNywgMTE2LCA1LCAyMjYsIDUzLCAyMDcsIDExNiwgNSwgMjI2LCAyOSwgMjA3LCAKKyAgICAxMTYsIDUsIDIyNiwgMjYsIDIwNywgMjUsIDUsIDIyNiwgNDMsIDIwNywgMjUsIDUsIDIyNiwgMjUsIDIwNywgMjUsIDUsIAorICAgIDIyNiwgNDcsIDIwNywgMjUsIDUsIDIyNiwgMzUsIDIwNywgMjUsIDUsIDIyNiwgNTQsIDIwNywgMjUsIDUsIDIyNiwgNDUsIAorICAgIDIwNywgNSwgMjI2LCA1NywgMjA3LCA1LCAyMTMsIDE1MiwgMjA3LCAxMTYsIDUsIDIyNSwgMjQ5LCAxODUsIDIwNywgMTE2LCAKKyAgICA1LCAyMjUsIDI0OSwgMjEyLCA2NSwgMjA3LCAxLCAyMzQsIDEzMywgMjA3LCAxLCAyMTcsIDIzMiwgMjA3LCAyMSwgMjEwLCAKICAgICA4NiwgMjA3LCAyMSwgMTEwLCAyMDcsIDIxLCAxMDUsIDIwNywgMjEsIDE1OCwgMjA3LCAyMSwgMTYxLCAyMDcsIDIxLCAxODksIAotICAgIDIwNywgMjEsIDE5NCwgMjA3LCAyMSwgMTk4LCAyMDcsIDIxLCAxOTUsIDIwNywgMjEsIDIwMCwgMjA3LCAyNTMsIDE3NSwgCi0gICAgMjA3LCAxLCAyMjMsIDUyLCAyMDcsIDEsIDIzMywgNywgMjA3LCAxLCAyNTIsIDE4LCAyMDcsIDEsIDQwLCAyMzUsIDIzLCAKLSAgICAyMDcsIDEsIDQwLCAxOTMsIDI1MiwgMTIwLCAxLCA2MSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCA2MSwgMjUyLCAxMjAsIDEsIAotICAgIDE2MiwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAxNjIsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMTYyLCAyNTIsIDEyMCwgMSwgCi0gICAgMjUyLCAxOTEsIDI1MiwgMTIwLCAxLCAyMzQsIDIxMiwgMjUyLCAxOTEsIDI1MiwgMTIwLCAxLCAxOTAsIDI1MiwgMTIwLCAxLCAKLSAgICAyMTksIDE2NCwgMTkwLCAyNTIsIDEyMCwgMSwgMTk3LCAyNTIsIDEyMCwgMSwgMjMxLCAxODEsIDE5NywgMjUyLCAxMjAsIDEsIAotICAgIDIxMiwgNjUsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMjEyLCA2NSwgMjUyLCAxMjAsIDEsIDIyNiwgNjcsIDIxMiwgNjUsIAotICAgIDI1MiwgMTIwLCAxLCAyNDMsIDEzNSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyNDMsIDEzNSwgMjUyLCAxMjAsIDEsIDIzNSwgCi0gICAgMTQxLCAyNTIsIDEyMCwgMSwgMjQ4LCAyMjEsIDI1MiwgMTIwLCAxLCAyMDUsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMjA1LCAKLSAgICAyNTIsIDEyMCwgMSwgMTg0LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDE4NCwgMjUyLCAxMjAsIDEsIDIxOSwgMjYsIDIxNywgCi0gICAgMTA1LCAyNTIsIDEyMCwgMSwgMjI4LCA1NSwgMjE3LCAxMDUsIDI1MiwgMTIwLCAxLCAyMDYsIDI1MiwgMTIwLCAxLCAyMTksIAotICAgIDE2NCwgMjA2LCAyNTIsIDEyMCwgMSwgMjMxLCAxODEsIDIwNiwgMjUyLCAxMjAsIDEsIDE5MSwgMjUyLCAxMjAsIDEsIDIxOSwgCi0gICAgMTY0LCAxOTEsIDI1MiwgMTIwLCAxLCAyMjksIDc3LCAyNTIsIDEyMCwgMSwgMjMzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMTksIAotICAgIDE2NCwgMjMzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMjcsIDE2NSwgMjUyLCAxMjAsIDEsIDI1MSwgMzMsIDI1MiwgMTIwLCAxLCAKLSAgICAyMjksIDE0OCwgMjUyLCAxMjAsIDEsIDIzMSwgMTI0LCAyNTIsIDEyMCwgMSwgNzMsIDI1MiwgMTIwLCAxLCA3MCwgMjUyLCAKLSAgICAxMjAsIDUsIDIxNiwgMzMsIDI1MiwgMTIwLCAyNSwgNSwgNzUsIDI1MiwgMTIwLCAyNSwgNSwgMjI2LCA2NywgNzUsIDI1MiwgCi0gICAgMTIwLCAyNSwgNSwgMjQ1LCAyMDksIDI1MiwgMTIwLCAyNSwgNSwgNzMsIDI1MiwgMTIwLCAyNSwgNSwgMjM0LCAyMTIsIDczLCAKLSAgICAyNTIsIDEyMCwgMjUsIDUsIDc2LCAyNTIsIDEyMCwgMjUsIDUsIDIzNCwgMjEyLCA3NiwgMjUyLCAxMjAsIDI1LCA1LCA3MCwgCi0gICAgMjUyLCAxMjAsIDI1LCA1LCAxMDQsIDMxLCAyMTksIDE2NCwgMjA2LCAyNTIsIDEyMCwgMTE2LCA1LCAyMjksIDc5LCAyNTIsIAotICAgIDEyMCwgMTE2LCA1LCAyNDIsIDYwLCAyNTIsIDEyMCwgMjI2LCAzNywgMjUyLCAxMjAsIDIyNiwgMzMsIDI1MiwgMTIwLCAxNiwgCi0gICAgMjUxLCAyNDEsIDIyOSwgMjI5LCAyMzEsIDM3LCAyNTIsIDEyMCwgMTYsIDI1MSwgMjQxLCAyMjUsIDY0LCAyNTIsIDEyMCwgCi0gICAgMTYsIDI1MSwgMjQxLCAyMzUsIDQ4LCAyNTIsIDEyMCwgMTYsIDI1MSwgMjQxLCAyMjYsIDM3LCAxOTYsIDEsIDE3NiwgMTk2LCAKLSAgICAxLCAyMzQsIDM5LCAxOTYsIDEsIDIzNCwgMTMyLCAxOTYsIDEsIDI0MywgMTM1LCAxOTYsIDEsIDI0MiwgMTg2LCAxOTYsIDEsIAotICAgIDIyOSwgNzcsIDE5NiwgMSwgMjUxLCAzMywgMTk2LCAxLCAyNTAsIDE1NywgMTk2LCAxLCAyMzUsIDE0MSwgMTk2LCAxLCAKLSAgICAyMjcsIDE2NSwgMTk2LCAxLCAyMTcsIDEwNSwgMTk2LCAxLCAyMTYsIDIwOCwgMTk2LCAxLCAyNDgsIDIyMSwgMTk2LCAxLCAKLSAgICAxOTcsIDE5NiwgMSwgMTkwLCAxOTYsIDEsIDIyNSwgNDIsIDE5NiwgMSwgMjI1LCAxNDcsIDE5NiwgMSwgMjQ0LCAxOTYsIAotICAgIDE5NiwgMSwgMjQ0LCA3NSwgMTk2LCAxLCAyNTIsIDE5MSwgMTk2LCAxLCAyNTEsIDIyMiwgMTk2LCAxLCAxODQsIDE5NiwgMSwgCi0gICAgMjMwLCAxNjgsIDE5NiwgMSwgMjE1LCAxODMsIDE5NiwgMSwgMjE1LCAxNzUsIDE5NiwgMSwgMjQ2LCAzOCwgMTk2LCAxLCAKLSAgICAxOTEsIDE5NiwgMSwgMjA1LCAxOTYsIDEsIDIzMywgMTM1LCAxOTYsIDEsIDE2MiwgMTk2LCAxLCAyNDEsIDE1MywgMTk2LCAKLSAgICAxLCAyMTQsIDI3LCAxOTYsIDEsIDIwNiwgMTk2LCAxLCAyMjAsIDEwMiwgMTk2LCAxLCAyMTIsIDY1LCAxOTYsIDEsIDYxLCAKLSAgICAxOTYsIDIxOCwgNzMsIDEsIDE5MSwgMTk2LCAyMTgsIDczLCAxLCAyMDUsIDE5NiwgMjUsIDUsIDI1NSwgNzMsIDE5NiwgMjUsIAotICAgIDUsIDczLCAxOTYsIDI1LCA1LCA3NiwgMTk2LCAyNSwgNSwgMjI2LCAxODMsIDE5NiwgMjUsIDUsIDcwLCAxOTYsIDI1LCA1LCAKLSAgICAyMTQsIDExOCwgMTk2LCAyNSwgNSwgNzUsIDE5NiwgMTE2LCA1LCAyMzUsIDIzLCAxOTYsIDExNiwgNSwgMTkzLCAxOTYsIAotICAgIDExNiwgNSwgMTU2LCAxOTYsIDExNiwgNSwgMjMwLCAyNSwgMTk2LCAxMTYsIDUsIDIyNiwgMTA1LCAxOTYsIDExNiwgNSwgCi0gICAgMTUzLCAxOTYsIDExNiwgNSwgMjE3LCAxNTIsIDE5NiwgMTE2LCA1LCAyMjcsIDE0MiwgMTk2LCAxMTYsIDUsIDIzNCwgMjMwLCAKLSAgICAxOTYsIDUsIDIyMywgMTUwLCAxOTYsIDUsIDIyNywgMjA1LCAxOTYsIDIyNCwgMTQxLCAyMTcsIDEwMywgMTk2LCAyMjQsIAotICAgIDE0MSwgMjI3LCAxNTIsIDIxNiwgMTIwLCAyMTcsIDEwMywgMTk2LCAyMjQsIDE0MSwgMjUwLCAxNjQsIDE5NiwgMjI0LCAKLSAgICAxNDEsIDIxNSwgMTcwLCAyNTAsIDE2NCwgMTk2LCAyMjQsIDE0MSwgMjE1LCAxNjksIDE5NiwgMjEsIDIxMCwgODYsIDE5NiwgCisgICAgMjA3LCAyMSwgMTk0LCAyMDcsIDIxLCAxOTgsIDIwNywgMjEsIDE5NSwgMjA3LCAyMSwgMjAwLCAyMDcsIDI1MywgMTc2LCAKKyAgICAyMDcsIDEsIDIyMywgNTMsIDIwNywgMSwgMjMzLCA4LCAyMDcsIDEsIDI1MiwgMTksIDIwNywgMSwgNDAsIDIzNSwgMjQsIAorICAgIDIwNywgMSwgNDAsIDE5MywgMjUyLCAxMjEsIDEsIDYxLCAyNTIsIDEyMSwgMSwgMjE5LCAxNjUsIDYxLCAyNTIsIDEyMSwgMSwgCisgICAgMTYyLCAyNTIsIDEyMSwgMSwgMjE5LCAxNjUsIDE2MiwgMjUyLCAxMjEsIDEsIDIzMSwgMTgyLCAxNjIsIDI1MiwgMTIxLCAxLCAKKyAgICAyNTIsIDE5MiwgMjUyLCAxMjEsIDEsIDIzNCwgMjEzLCAyNTIsIDE5MiwgMjUyLCAxMjEsIDEsIDE5MCwgMjUyLCAxMjEsIDEsIAorICAgIDIxOSwgMTY1LCAxOTAsIDI1MiwgMTIxLCAxLCAxOTcsIDI1MiwgMTIxLCAxLCAyMzEsIDE4MiwgMTk3LCAyNTIsIDEyMSwgMSwgCisgICAgMjEyLCA2NSwgMjUyLCAxMjEsIDEsIDIxOSwgMTY1LCAyMTIsIDY1LCAyNTIsIDEyMSwgMSwgMjI2LCA2OCwgMjEyLCA2NSwgCisgICAgMjUyLCAxMjEsIDEsIDI0MywgMTM2LCAyNTIsIDEyMSwgMSwgMjE5LCAxNjUsIDI0MywgMTM2LCAyNTIsIDEyMSwgMSwgMjM1LCAKKyAgICAxNDIsIDI1MiwgMTIxLCAxLCAyNDgsIDIyMiwgMjUyLCAxMjEsIDEsIDIwNSwgMjUyLCAxMjEsIDEsIDIxOSwgMTY1LCAyMDUsIAorICAgIDI1MiwgMTIxLCAxLCAxODUsIDI1MiwgMTIxLCAxLCAyMTksIDE2NSwgMTg1LCAyNTIsIDEyMSwgMSwgMjE5LCAyNywgMjE3LCAKKyAgICAxMDYsIDI1MiwgMTIxLCAxLCAyMjgsIDU2LCAyMTcsIDEwNiwgMjUyLCAxMjEsIDEsIDIwNiwgMjUyLCAxMjEsIDEsIDIxOSwgCisgICAgMTY1LCAyMDYsIDI1MiwgMTIxLCAxLCAyMzEsIDE4MiwgMjA2LCAyNTIsIDEyMSwgMSwgMTkxLCAyNTIsIDEyMSwgMSwgMjE5LCAKKyAgICAxNjUsIDE5MSwgMjUyLCAxMjEsIDEsIDIyOSwgNzgsIDI1MiwgMTIxLCAxLCAyMzMsIDEzNiwgMjUyLCAxMjEsIDEsIDIxOSwgCisgICAgMTY1LCAyMzMsIDEzNiwgMjUyLCAxMjEsIDEsIDIyNywgMTY2LCAyNTIsIDEyMSwgMSwgMjUxLCAzNCwgMjUyLCAxMjEsIDEsIAorICAgIDIyOSwgMTQ5LCAyNTIsIDEyMSwgMSwgMjMxLCAxMjUsIDI1MiwgMTIxLCAxLCA3MywgMjUyLCAxMjEsIDEsIDcwLCAyNTIsIAorICAgIDEyMSwgNSwgMjE2LCAzNCwgMjUyLCAxMjEsIDI1LCA1LCA3NSwgMjUyLCAxMjEsIDI1LCA1LCAyMjYsIDY4LCA3NSwgMjUyLCAKKyAgICAxMjEsIDI1LCA1LCAyNDUsIDIxMCwgMjUyLCAxMjEsIDI1LCA1LCA3MywgMjUyLCAxMjEsIDI1LCA1LCAyMzQsIDIxMywgNzMsIAorICAgIDI1MiwgMTIxLCAyNSwgNSwgNzYsIDI1MiwgMTIxLCAyNSwgNSwgMjM0LCAyMTMsIDc2LCAyNTIsIDEyMSwgMjUsIDUsIDcwLCAKKyAgICAyNTIsIDEyMSwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgMTY1LCAyMDYsIDI1MiwgMTIxLCAxMTYsIDUsIDIyOSwgODAsIDI1MiwgCisgICAgMTIxLCAxMTYsIDUsIDI0MiwgNjEsIDI1MiwgMTIxLCAyMjYsIDM4LCAyNTIsIDEyMSwgMjI2LCAzNCwgMjUyLCAxMjEsIDE2LCAKKyAgICAyNTEsIDI0MiwgMjI5LCAyMzAsIDIzMSwgMzgsIDI1MiwgMTIxLCAxNiwgMjUxLCAyNDIsIDIyNSwgNjUsIDI1MiwgMTIxLCAKKyAgICAxNiwgMjUxLCAyNDIsIDIzNSwgNDksIDI1MiwgMTIxLCAxNiwgMjUxLCAyNDIsIDIyNiwgMzgsIDE5NiwgMSwgMTc2LCAxOTYsIAorICAgIDEsIDIzNCwgNDAsIDE5NiwgMSwgMjM0LCAxMzMsIDE5NiwgMSwgMjQzLCAxMzYsIDE5NiwgMSwgMjQyLCAxODcsIDE5NiwgMSwgCisgICAgMjI5LCA3OCwgMTk2LCAxLCAyNTEsIDM0LCAxOTYsIDEsIDI1MCwgMTU4LCAxOTYsIDEsIDIzNSwgMTQyLCAxOTYsIDEsIAorICAgIDIyNywgMTY2LCAxOTYsIDEsIDIxNywgMTA2LCAxOTYsIDEsIDIxNiwgMjA5LCAxOTYsIDEsIDI0OCwgMjIyLCAxOTYsIDEsIAorICAgIDE5NywgMTk2LCAxLCAxOTAsIDE5NiwgMSwgMjI1LCA0MywgMTk2LCAxLCAyMjUsIDE0OCwgMTk2LCAxLCAyNDQsIDE5NywgCisgICAgMTk2LCAxLCAyNDQsIDc2LCAxOTYsIDEsIDI1MiwgMTkyLCAxOTYsIDEsIDI1MSwgMjIzLCAxOTYsIDEsIDE4NSwgMTk2LCAxLCAKKyAgICAyMzAsIDE2OSwgMTk2LCAxLCAyMTUsIDE4NCwgMTk2LCAxLCAyMTUsIDE3NiwgMTk2LCAxLCAyNDYsIDM5LCAxOTYsIDEsIAorICAgIDE5MSwgMTk2LCAxLCAyMDUsIDE5NiwgMSwgMjMzLCAxMzYsIDE5NiwgMSwgMTYyLCAxOTYsIDEsIDI0MSwgMTU0LCAxOTYsIAorICAgIDEsIDIxNCwgMjcsIDE5NiwgMSwgMjA2LCAxOTYsIDEsIDIyMCwgMTAzLCAxOTYsIDEsIDIxMiwgNjUsIDE5NiwgMSwgNjEsIAorICAgIDE5NiwgMjE4LCA3NCwgMSwgMTkxLCAxOTYsIDIxOCwgNzQsIDEsIDIwNSwgMTk2LCAyNSwgNSwgMjU1LCA3NCwgMTk2LCAyNSwgCisgICAgNSwgNzMsIDE5NiwgMjUsIDUsIDc2LCAxOTYsIDI1LCA1LCAyMjYsIDE4NCwgMTk2LCAyNSwgNSwgNzAsIDE5NiwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxOTYsIDI1LCA1LCA3NSwgMTk2LCAxMTYsIDUsIDIzNSwgMjQsIDE5NiwgMTE2LCA1LCAxOTMsIDE5NiwgCisgICAgMTE2LCA1LCAxNTYsIDE5NiwgMTE2LCA1LCAyMzAsIDI2LCAxOTYsIDExNiwgNSwgMjI2LCAxMDYsIDE5NiwgMTE2LCA1LCAKKyAgICAxNTMsIDE5NiwgMTE2LCA1LCAyMTcsIDE1MywgMTk2LCAxMTYsIDUsIDIyNywgMTQzLCAxOTYsIDExNiwgNSwgMjM0LCAyMzEsIAorICAgIDE5NiwgNSwgMjIzLCAxNTEsIDE5NiwgNSwgMjI3LCAyMDYsIDE5NiwgMjI0LCAxNDIsIDIxNywgMTA0LCAxOTYsIDIyNCwgCisgICAgMTQyLCAyMjcsIDE1MywgMjE2LCAxMjEsIDIxNywgMTA0LCAxOTYsIDIyNCwgMTQyLCAyNTAsIDE2NSwgMTk2LCAyMjQsIAorICAgIDE0MiwgMjE1LCAxNzEsIDI1MCwgMTY1LCAxOTYsIDIyNCwgMTQyLCAyMTUsIDE3MCwgMTk2LCAyMSwgMjEwLCA4NiwgMTk2LCAKICAgICAyMSwgMTEwLCAxOTYsIDIxLCAxMDUsIDE5NiwgMjEsIDE1OCwgMTk2LCAyMSwgMTYxLCAxOTYsIDIxLCAxODksIDE5NiwgMjEsIAotICAgIDE5NCwgMTk2LCAyMSwgMTk4LCAxOTYsIDIxLCAxOTUsIDE5NiwgMjEsIDIwMCwgMTk2LCAxLCAyMTUsIDE1NiwgMTk2LCAxLCAKLSAgICAyMTUsIDE0NCwgMTk2LCAxLCAyNDgsIDEzNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTAsIAotICAgIDI1MCwgMTAzLCAyMSwgMTEwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxMDUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIAotICAgIDE1OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTYxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxODksIDIyNiwgMjEwLCAKLSAgICAyNTAsIDEwMywgMjEsIDE5NCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTk4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAKLSAgICAxOTUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDIwMCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIDEzNSwgMjI2LCAKLSAgICAyMTAsIDI1MCwgMTAzLCAxLCAyNTMsIDIwNiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDIxNiwgMjI2LCAyMTAsIAotICAgIDI1MCwgMTAzLCAxLCAyNTQsIDExNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDE3OCwgMjI2LCAyMTAsIDI1MCwgCi0gICAgMTAzLCAxLCAyMzMsIDEzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDM1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIAotICAgIDI1NSwgMzYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU1LCAzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDI5LCAKLSAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMiwgMjQxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzNSwgMTcxLCAyMjYsIAotICAgIDIxMCwgMjUwLCAxMDMsIDEsIDIzNiwgMzQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjM1LCAxOTAsIDIyNiwgMjEwLCAKLSAgICAyNTAsIDEwMywgMSwgMjM1LCAxNzksIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCA5OCwgMjI2LCAyMTAsIDI1MCwgCi0gICAgMTAzLCAxLCAyMTQsIDIyMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDIxOSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAKLSAgICAyMTQsIDE2OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDExMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIAotICAgIDU4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTA4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMjEyLCAKLSAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTUwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgODYsIDIyNiwgCi0gICAgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCAxNTYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMzcsIDIyNiwgMjEwLCAKLSAgICAyNTAsIDEwMywgMSwgMjI2LCAyNTIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMjUsIDIyNiwgMjEwLCAyNTAsIAotICAgIDEwMywgMSwgMjI2LCAyMjIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjMwLCAxMDMsIDIxNSwgMTIxLCAyMjYsIDIxMCwgMjUwLCAKLSAgICAxMDMsIDI0MywgMTMwLCAyMTUsIDEyMiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMzAsIDEwMSwgMjE1LCAxMjIsIDIyNiwgCi0gICAgMjEwLCAyNTAsIDEwMywgMjIzLCA5MiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjUsIDE0NSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAKLSAgICAyNTQsIDIwOCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIDE0MSwgMjMwLCA5OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIAotICAgIDE0MSwgNTIsIDIzMCwgOTgsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMTgsIDgsIDIwNywgMjI0LCAxNDEsIDI1MSwgCi0gICAgMjQxLCAyMjYsIDM4LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjI0LCAxMjksIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAKLSAgICAyNTEsIDE5LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjMzLCA4LCAyMjEsIDIyNSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAKLSAgICAyNDEsIDIzNSwgMTMsIDIyMSwgMjI1LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjQ4LCAyMjIsIDIyMSwgMjI1LCAyMDcsIAotICAgIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjUyLCAxOTIsIDIyMSwgMjI1LCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIxMCwgMjEzLCAKLSAgICAyNTIsIDEzOCwgMjIwLCA3NywgMjEzLCAyNTIsIDEzOCwgMjI0LCAxOTgsIDIxMywgMjUyLCA1LCAyMjgsIDIwOSwgMjEzLCAKLSAgICAyNTIsIDUsIDIxMSwgODAsIDIzMCwgMjIyLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDI1NCwgMjEzLCAyMzUsIAotICAgIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAKLSAgICAyMTEsIDgwLCAyMzQsIDE5OCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjUxLCAyLCA1MSwgMjEzLCAyNTIsIAotICAgIDEzOCwgMjExLCA4MCwgMjM0LCAxOTgsIDIzNSwgMjQzLCAyMTgsIDEsIDIyMSwgMTk3LCAyMTMsIDI1MiwgMTM4LCA1MiwgCi0gICAgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTUsIDIxMSwgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDE5OCwgMjU0LCAKLSAgICA3NywgMjEzLCAyNTIsIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIAotICAgIDEzNCwgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDAsIDIzNCwgMjA5LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIAotICAgIDI1MiwgMTM4LCAyNTMsIDIwNCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDAsIDIxMywgCi0gICAgMjUyLCA1LCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDQ5LCAyMTMsIDE0OCwgMjE0LCAyMTYsIAotICAgIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCA3NywgMjEzLCAyNTIsIDUsIDIyMywgNDksIDIxMywgMTQ4LCAyNTQsIDc3LCAKLSAgICAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgCi0gICAgNzgsIDIsIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyNTQsIDkxLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjUyLCAKLSAgICAxNjYsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjE0LCAyMSwgMiwgCi0gICAgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDIxNiwgNjgsIDIxMywgMjUyLCA1LCAyNDEsIDE5MSwgMTk5LCAyNTQsIDc1LCAyMTMsIAotICAgIDI1MiwgNSwgMTk5LCAyNTQsIDc1LCAyMTMsIDI1MiwgNSwgMjIyLCAxNDIsIDE5OSwgMjU0LCA3NSwgMjEzLCAyNTIsIDUsIAotICAgIDI1NCwgNzYsIDIxNCwgMjIzLCAyMzAsIDkwLCAyMTMsIDI1MiwgNSwgMjU0LCAyMCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg3LCAKLSAgICAyNTQsIDIwLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDIsIDQ4LCAyMTMsIDI1MiwgNSwgMjM1LCAxMDIsIDIxMywgMjUyLCA1LCAKLSAgICAyMTQsIDE2MSwgNywgMSwgNCwgNiwgNjEsIDcsIDEsIDQsIDYsIDI1NCwgMjQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIAotICAgIDI0MywgNywgMSwgNCwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA3LCAxLCA0LCA2LCAyNTEsIDY2LCA3LCAxLCA0LCA2LCAKLSAgICAyNDksIDYwLCA3LCAxLCA0LCA2LCAyNDUsIDU5LCA3LCAxLCA0LCA2LCA3NSwgNywgNCwgMSwgMjE1LCA5NCwgMjA0LCA3NSwgCi0gICAgNywgNCwgMSwgMjE1LCA5NCwgNzMsIDcsIDEsIDQsIDYsIDIzNSwgMTQ0LCA3LCAxLCA0LCA2LCAyMzUsIDIzLCA3LCAxLCA0LCAKLSAgICA2LCAyMzMsIDE0OSwgMiwgOTEsIDcsIDEsIDQsIDYsIDE5MywgNywgMSwgNCwgNiwgMjIzLCA0OSwgMjMwLCAyNSwgNywgMSwgCi0gICAgNCwgNiwgNzYsIDcsIDEsIDQsIDYsIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIAotICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCAxNDQsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCAyMjYsIDIzNCwgNywgMSwgCi0gICAgNCwgNiwgMjI2LCAxMzQsIDcsIDQsIDEsIDIxNiwgMTQsIDE2MywgNzYsIDcsIDQsIDEsIDI1MSwgMTc1LCAxNjMsIDc2LCA3LCAKLSAgICAxLCA0LCA2LCAyMjYsIDEwNSwgNywgMSwgNCwgNiwgMjIzLCA0OSwgMTUzLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxNTMsIDcsIAotICAgIDEsIDQsIDYsIDIxNywgMTUyLCA3LCAxLCA0LCA2LCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDcwLCA3LCA0LCAxLCAyMTksIAotICAgIDE4NywgMjQ4LCAwLCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDIxNSwgOTQsIDE5MywgNywgMSwgNCwgNiwgMjE0LCAxMDUsIAotICAgIDcsIDEsIDQsIDYsIDIxMiwgOTgsIDcsIDEsIDQsIDYsIDIxMCwgMTU5LCA3LCAxLCA0LCA2LCAyNDUsIDgsIDcsIDEsIDIxMywgCi0gICAgMTM1LCAyMzMsIDgyLCAyMTgsIDI1MCwgNywgMSwgMjU0LCAxOTYsIDI2LCAxLCA0LCA2LCAyNDMsIDEwNywgMjYsIDEsIDQsIAotICAgIDYsIDIzMywgOTgsIDI2LCAxLCA0LCA2LCAyMjUsIDEwOCwgMjYsIDEsIDQsIDYsIDIyMywgMzcsIDI2LCAxLCA0LCA2LCAKLSAgICAyMjQsIDE2MSwgMzMsIDEsIDQsIDYsIDI0NSwgMTc0LCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI0MywgNTgsIDEsIAotICAgIDYsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjQ5LCA2MCwgNTgsIDEsIDYsIAotICAgIDc1LCA1OCwgMSwgNiwgMjIzLCA0OSwgNzUsIDU4LCAxLCA2LCAyNDMsIDIwMiwgNTgsIDEsIDYsIDI0MiwgNjAsIDU4LCAxLCAKLSAgICA2LCA3MywgNTgsIDEsIDYsIDIzNSwgMTQ0LCA1OCwgMSwgNiwgMjM1LCAyMywgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIAotICAgIDE5MywgNTgsIDEsIDYsIDIzMCwgMjUsIDU4LCAxLCA2LCAyMjMsIDQ5LCAyMzAsIDI1LCA1OCwgMSwgNiwgNzYsIDU4LCAxLCAKLSAgICA2LCAyMjYsIDEzNCwgNTgsIDEsIDYsIDIyNiwgMTA1LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTIsIDU4LCAKKyAgICAxOTQsIDE5NiwgMjEsIDE5OCwgMTk2LCAyMSwgMTk1LCAxOTYsIDIxLCAyMDAsIDE5NiwgMSwgMjE1LCAxNTcsIDE5NiwgMSwgCisgICAgMjE1LCAxNDUsIDE5NiwgMSwgMjQ4LCAxMzYsIDIyNiwgMjExLCAyNTAsIDEwNCwgMjEsIDIxMCwgODYsIDIyNiwgMjExLCAKKyAgICAyNTAsIDEwNCwgMjEsIDExMCwgMjI2LCAyMTEsIDI1MCwgMTA0LCAyMSwgMTA1LCAyMjYsIDIxMSwgMjUwLCAxMDQsIDIxLCAKKyAgICAxNTgsIDIyNiwgMjExLCAyNTAsIDEwNCwgMjEsIDE2MSwgMjI2LCAyMTEsIDI1MCwgMTA0LCAyMSwgMTg5LCAyMjYsIDIxMSwgCisgICAgMjUwLCAxMDQsIDIxLCAxOTQsIDIyNiwgMjExLCAyNTAsIDEwNCwgMjEsIDE5OCwgMjI2LCAyMTEsIDI1MCwgMTA0LCAyMSwgCisgICAgMTk1LCAyMjYsIDIxMSwgMjUwLCAxMDQsIDIxLCAyMDAsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjMzLCAxMzYsIDIyNiwgCisgICAgMjExLCAyNTAsIDEwNCwgMSwgMjUzLCAyMDcsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjU0LCAyMTcsIDIyNiwgMjExLCAKKyAgICAyNTAsIDEwNCwgMSwgMjU0LCAxMTYsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjU0LCAxNzksIDIyNiwgMjExLCAyNTAsIAorICAgIDEwNCwgMSwgMjMzLCAxMzUsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjU1LCAzNiwgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAKKyAgICAyNTUsIDM3LCAyMjYsIDIxMSwgMjUwLCAxMDQsIDEsIDI1NSwgMzUsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjU1LCAzMCwgCisgICAgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAyMzIsIDI0MiwgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAyMzUsIDE3MiwgMjI2LCAKKyAgICAyMTEsIDI1MCwgMTA0LCAxLCAyMzYsIDM1LCAyMjYsIDIxMSwgMjUwLCAxMDQsIDEsIDIzNSwgMTkxLCAyMjYsIDIxMSwgCisgICAgMjUwLCAxMDQsIDEsIDIzNSwgMTgwLCAyMjYsIDIxMSwgMjUwLCAxMDQsIDEsIDIzMiwgOTksIDIyNiwgMjExLCAyNTAsIAorICAgIDEwNCwgMSwgMjE0LCAyMjEsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjE0LCAyMTksIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgCisgICAgMjE0LCAxNjgsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjE0LCAxMTEsIDIyNiwgMjExLCAyNTAsIDEwNCwgMSwgMjMzLCAKKyAgICA1OSwgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAyNDUsIDEwOSwgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAyNDUsIDIxMywgCisgICAgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAyNDUsIDE1MSwgMjI2LCAyMTEsIDI1MCwgMTA0LCAxLCAyNDUsIDg3LCAyMjYsIAorICAgIDIxMSwgMjUwLCAxMDQsIDEsIDIzMiwgMTU3LCAyMjYsIDIxMSwgMjUwLCAxMDQsIDEsIDIyNiwgMTM4LCAyMjYsIDIxMSwgCisgICAgMjUwLCAxMDQsIDEsIDIyNiwgMjUzLCAyMjYsIDIxMSwgMjUwLCAxMDQsIDEsIDIyNiwgMTI2LCAyMjYsIDIxMSwgMjUwLCAKKyAgICAxMDQsIDEsIDIyNiwgMjIzLCAyMjYsIDIxMSwgMjUwLCAxMDQsIDIzMCwgMTA0LCAyMTUsIDEyMiwgMjI2LCAyMTEsIDI1MCwgCisgICAgMTA0LCAyNDMsIDEzMSwgMjE1LCAxMjMsIDIyNiwgMjExLCAyNTAsIDEwNCwgMjMwLCAxMDIsIDIxNSwgMTIzLCAyMjYsIAorICAgIDIxMSwgMjUwLCAxMDQsIDIyMywgOTMsIDIyNiwgMjExLCAyNTAsIDEwNCwgMjI1LCAxNDYsIDIyNiwgMjExLCAyNTAsIDEwNCwgCisgICAgMjU0LCAyMDksIDIyNiwgMjExLCAyNTAsIDEwNCwgMjI0LCAxNDIsIDIzMCwgOTksIDIyNiwgMjExLCAyNTAsIDEwNCwgMjI0LCAKKyAgICAxNDIsIDUyLCAyMzAsIDk5LCAyMDcsIDIyNCwgMTQyLCAyNTEsIDI0MiwgMjE4LCA5LCAyMDcsIDIyNCwgMTQyLCAyNTEsIAorICAgIDI0MiwgMjI2LCAzOSwgMjA3LCAyMjQsIDE0MiwgMjUxLCAyNDIsIDIyNCwgMTMwLCAyMDcsIDIyNCwgMTQyLCAyNTEsIDI0MiwgCisgICAgMjUxLCAyMCwgMjA3LCAyMjQsIDE0MiwgMjUxLCAyNDIsIDIzMywgOSwgMjIxLCAyMjYsIDIwNywgMjI0LCAxNDIsIDI1MSwgCisgICAgMjQyLCAyMzUsIDE0LCAyMjEsIDIyNiwgMjA3LCAyMjQsIDE0MiwgMjUxLCAyNDIsIDI0OCwgMjIzLCAyMjEsIDIyNiwgMjA3LCAKKyAgICAyMjQsIDE0MiwgMjUxLCAyNDIsIDI1MiwgMTkzLCAyMjEsIDIyNiwgMjEzLCAyNTIsIDEzOCwgMjM0LCAyMTEsIDIxMywgCisgICAgMjUyLCAxMzgsIDIyMCwgNzgsIDIxMywgMjUyLCAxMzgsIDIyNCwgMTk5LCAyMTMsIDI1MiwgNSwgMjI4LCAyMTAsIDIxMywgCisgICAgMjUyLCA1LCAyMTEsIDgwLCAyMzAsIDIyMywgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyNTQsIDIxNCwgMjM1LCAKKyAgICAyNDQsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjM1LCAyNDQsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgCisgICAgMjExLCA4MCwgMjM0LCAxOTksIDIzNSwgMjQ0LCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDI1MSwgMywgNTEsIDIxMywgMjUyLCAKKyAgICAxMzgsIDIxMSwgODAsIDIzNCwgMTk5LCAyMzUsIDI0NCwgMjE4LCAyLCAyMjEsIDE5OCwgMjEzLCAyNTIsIDEzOCwgNTIsIAorICAgIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjE1LCAyMTIsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjM0LCAxOTksIDI1NCwgCisgICAgNzgsIDIxMywgMjUyLCAxMzgsIDU5LCA1MSwgMjEzLCAyNTIsIDEzOCwgMTEzLCAxNzAsIDUxLCAyMTMsIDI1MiwgMTM4LCAKKyAgICAxMzQsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIDIyMiwgMjQxLCAyMzQsIDIxMCwgMjM1LCAyNDQsIDIxOCwgMSwgMjEzLCAKKyAgICAyNTIsIDEzOCwgMjUzLCAyMDUsIDIzNSwgMjQ0LCAyMTgsIDEsIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjE4LCAxLCAyMTMsIAorICAgIDI1MiwgNSwgMjEzLCAxNDgsIDIxNCwgMjE2LCAyMTMsIDI1MiwgNSwgMjIzLCA1MCwgMjEzLCAxNDgsIDIxNCwgMjE2LCAKKyAgICAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgNzgsIDIxMywgMjUyLCA1LCAyMjMsIDUwLCAyMTMsIDE0OCwgMjU0LCA3OCwgCisgICAgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTQsIDIxNywgMiwgMjE3LCA3OCwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyNTQsIAorICAgIDc5LCAyLCAyMTcsIDc4LCAyMTMsIDI1MiwgNSwgMjU0LCA3NywgMjU0LCA5MiwgMjEzLCAyNTIsIDUsIDI1NCwgNzcsIDI1MiwgCisgICAgMTY3LCAyMTMsIDI1MiwgNSwgMjU0LCA3NywgMjE0LCAyMCwgMjEzLCAyNTIsIDUsIDI1NCwgNzcsIDIxNCwgMjEsIDIsIAorICAgIDIxNywgNzgsIDIxMywgMjUyLCA1LCAyMTYsIDY5LCAyMTMsIDI1MiwgNSwgMjQxLCAxOTIsIDE5OSwgMjU0LCA3NiwgMjEzLCAKKyAgICAyNTIsIDUsIDE5OSwgMjU0LCA3NiwgMjEzLCAyNTIsIDUsIDIyMiwgMTQzLCAxOTksIDI1NCwgNzYsIDIxMywgMjUyLCA1LCAKKyAgICAyNTQsIDc3LCAyMTQsIDIyMywgMjMwLCA5MSwgMjEzLCAyNTIsIDUsIDI1NCwgMjEsIDIxMywgMjUyLCA1LCAyMjIsIDE4OCwgCisgICAgMjU0LCAyMSwgMjEzLCAyNTIsIDEzOCwgMjUxLCAzLCA0OCwgMjEzLCAyNTIsIDUsIDIzNSwgMTAzLCAyMTMsIDI1MiwgNSwgCisgICAgMjE0LCAxNjEsIDcsIDEsIDQsIDYsIDYxLCA3LCAxLCA0LCA2LCAyNTQsIDI0NCwgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAKKyAgICAyNDQsIDcsIDEsIDQsIDYsIDI1MiwgMTM1LCAyNTMsIDE1OSwgNywgMSwgNCwgNiwgMjUxLCA2NywgNywgMSwgNCwgNiwgCisgICAgMjQ5LCA2MSwgNywgMSwgNCwgNiwgMjQ1LCA2MCwgNywgMSwgNCwgNiwgNzUsIDcsIDQsIDEsIDIxNSwgOTQsIDIwNCwgNzUsIAorICAgIDcsIDQsIDEsIDIxNSwgOTQsIDczLCA3LCAxLCA0LCA2LCAyMzUsIDE0NSwgNywgMSwgNCwgNiwgMjM1LCAyNCwgNywgMSwgNCwgCisgICAgNiwgMjMzLCAxNTAsIDIsIDkxLCA3LCAxLCA0LCA2LCAxOTMsIDcsIDEsIDQsIDYsIDIyMywgNTAsIDIzMCwgMjYsIDcsIDEsIAorICAgIDQsIDYsIDc2LCA3LCAxLCA0LCA2LCAyMDQsIDc2LCA3LCA0LCAxLCAyMTksIDE4OCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg4LCAKKyAgICAyMDQsIDc2LCA3LCA0LCAxLCAyMTksIDE4OCwgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMjE1LCA5NCwgMjI2LCAyMzUsIDcsIDEsIAorICAgIDQsIDYsIDIyNiwgMTM1LCA3LCA0LCAxLCAyMTYsIDE1LCAxNjMsIDc2LCA3LCA0LCAxLCAyNTEsIDE3NiwgMTYzLCA3NiwgNywgCisgICAgMSwgNCwgNiwgMjI2LCAxMDYsIDcsIDEsIDQsIDYsIDIyMywgNTAsIDE1MywgNywgMSwgNCwgNiwgMjE1LCA5NCwgMTUzLCA3LCAKKyAgICAxLCA0LCA2LCAyMTcsIDE1MywgNywgMSwgNCwgNiwgNzAsIDcsIDQsIDEsIDIxOSwgMTg4LCA3MCwgNywgNCwgMSwgMjE5LCAKKyAgICAxODgsIDI0OCwgMSwgNzAsIDcsIDQsIDEsIDIxOSwgMTg4LCAyMTUsIDk0LCAxOTMsIDcsIDEsIDQsIDYsIDIxNCwgMTA1LCAKKyAgICA3LCAxLCA0LCA2LCAyMTIsIDk4LCA3LCAxLCA0LCA2LCAyMTAsIDE1OSwgNywgMSwgNCwgNiwgMjQ1LCA5LCA3LCAxLCAyMTMsIAorICAgIDEzNSwgMjMzLCA4MywgMjE4LCAyNTEsIDcsIDEsIDI1NCwgMTk3LCAyNiwgMSwgNCwgNiwgMjQzLCAxMDgsIDI2LCAxLCA0LCAKKyAgICA2LCAyMzMsIDk5LCAyNiwgMSwgNCwgNiwgMjI1LCAxMDksIDI2LCAxLCA0LCA2LCAyMjMsIDM4LCAyNiwgMSwgNCwgNiwgCisgICAgMjI0LCAxNjIsIDMzLCAxLCA0LCA2LCAyNDUsIDE3NSwgNTgsIDEsIDYsIDYxLCA1OCwgMSwgNiwgMjU0LCAyNDQsIDU4LCAxLCAKKyAgICA2LCAyNTMsIDE1OSwgNTgsIDEsIDYsIDI1MiwgMTM1LCAyNTMsIDE1OSwgNTgsIDEsIDYsIDI0OSwgNjEsIDU4LCAxLCA2LCAKKyAgICA3NSwgNTgsIDEsIDYsIDIyMywgNTAsIDc1LCA1OCwgMSwgNiwgMjQzLCAyMDMsIDU4LCAxLCA2LCAyNDIsIDYxLCA1OCwgMSwgCisgICAgNiwgNzMsIDU4LCAxLCA2LCAyMzUsIDE0NSwgNTgsIDEsIDYsIDIzNSwgMjQsIDU4LCAxLCA2LCAxNTYsIDU4LCAxLCA2LCAKKyAgICAxOTMsIDU4LCAxLCA2LCAyMzAsIDI2LCA1OCwgMSwgNiwgMjIzLCA1MCwgMjMwLCAyNiwgNTgsIDEsIDYsIDc2LCA1OCwgMSwgCisgICAgNiwgMjI2LCAxMzUsIDU4LCAxLCA2LCAyMjYsIDEwNiwgNTgsIDEsIDYsIDE1MywgNTgsIDEsIDYsIDIxNywgMTUzLCA1OCwgCiAgICAgMSwgNiwgNzAsIDU4LCAxLCA2LCAyMTIsIDk4LCA1OCwgMSwgNCwgNjEsIDU4LCAxLCA0LCAyMTUsIDk0LCA2MSwgNTgsIDEsIAotICAgIDQsIDI1NCwgMTQzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjU0LCAyNDMsIDU4LCAxLCA0LCAyNTMsIDE1OCwgNTgsIDEsIDQsIAotICAgIDI0OSwgNjAsIDU4LCAxLCA0LCA3NSwgNTgsIDEsIDQsIDIyMSwgMTk1LCA1OCwgMSwgNCwgMjA0LCA3NSwgNTgsIDEsIDQsIAotICAgIDIxNSwgOTQsIDIwNCwgNzUsIDU4LCAxLCA0LCAyNDMsIDIwMiwgNTgsIDEsIDQsIDIxNSwgOTQsIDczLCA1OCwgMSwgNCwgCi0gICAgMjM1LCAyMywgNTgsIDEsIDQsIDE5MywgNTgsIDEsIDQsIDI0NSwgMTM4LCA1OCwgMSwgNCwgNzYsIDU4LCAxLCA0LCAyMDQsIAotICAgIDc2LCA1OCwgMSwgNCwgMjE2LCAxNCwgMTYzLCA3NiwgNTgsIDEsIDQsIDI1MSwgMTc1LCAxNjMsIDc2LCA1OCwgMSwgNCwgCi0gICAgMjI2LCAxMDUsIDU4LCAxLCA0LCAyMTcsIDE1MiwgNTgsIDEsIDQsIDcwLCA1OCwgMSwgNCwgMjE5LCAxODcsIDcwLCA1OCwgCi0gICAgMSwgNCwgMjE1LCA5NCwgMTkzLCA1OCwgMSwgNCwgMjE0LCAxMDUsIDU4LCAxLCA0LCAyNTQsIDE5NiwgNTgsIDEsIDQsIAotICAgIDI1MiwgMjYsIDU4LCAxLCA0LCAyNiwgMjQzLCAxMDcsIDU4LCAxLCA0LCAyNDgsIDU0LCA1OCwgMSwgNCwgMjYsIDIyNSwgCi0gICAgMTMzLCA1OCwgMSwgNCwgMjUwLCAxMTAsIDcsIDIxOCwgNjUsIDQsIDEsIDczLCA3LCAyMTgsIDY1LCA0LCAxLCAxNTMsIDcsIAotICAgIDIxOCwgNjUsIDQsIDEsIDcwLCA3LCAyMTgsIDY1LCA0LCAxLCAyMTQsIDEwNSwgMjYsIDIxOCwgNjUsIDQsIDEsIDI1MiwgCi0gICAgMjYsIDI2LCAyMTgsIDY1LCA0LCAxLCAyNDMsIDEwNywgMjYsIDIxOCwgNjUsIDQsIDEsIDIyMywgMzcsIDI2LCAyMTgsIDY1LCAKLSAgICA0LCAxLCAyMjUsIDEzMywgMjYsIDIxOCwgNjUsIDQsIDEsIDI1MCwgMTEwLCA3LCA0LCAxLCAyMTQsIDIxNCwgNywgNCwgMSwgCi0gICAgNTcsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDI0NSwgCi0gICAgNywgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjMyLCA1MCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjMwLCAKLSAgICAyNiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyMywgCi0gICAgMjI0LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjQ0LCA4OCwgMjIsIDIzMCwgMjI0LCAxODIsIAotICAgIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMzAsIDIyNCwgMTgyLCAKLSAgICA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjE1LCA5NCwgMjQzLCAyMDIsIDU4LCAxLCAKLSAgICAzMywgMjQ1LCAxNTAsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNCwgMSwgMjE2LCAyMTEsIDIsIDIxOCwgCi0gICAgMTA3LCA3LCA0LCA2LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTg2LCAyLCA5MSwgNywgNCwgMSwgMjI2LCAKLSAgICAxMDYsIDIsIDkxLCA3LCA0LCA2LCAxLCAxMDQsIDIsIDkxLCA3LCA0LCAxLCAyMTQsIDE1OCwgMiwgOTEsIDcsIDQsIDEsIAotICAgIDU3LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ1LCA3LCAKLSAgICAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIAotICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjMyLCA1MCwgMiwgCi0gICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAKLSAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIAotICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ1LCA3NiwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgCi0gICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMTEsIDE3OSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgCi0gICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAxMTUsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjU0LCAxNDQsIDIsIDIyMywgCi0gICAgNTUsIDEwMywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjQxLCA1MiwgMjIsIDIxNywgNzcsIDcsIDQsIDEsIDE2MCwgMiwgMjIzLCAKLSAgICA1NSwgMTAzLCA3LCA0LCAxLCAyMDQsIDE2MCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMjMsIDQ5LCAyMDQsIDE2MCwgCi0gICAgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNDAsIDE1NCwgCi0gICAgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMDQsIDE0NCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAKLSAgICAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDEwNCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNDUsIDksIDIsIDIyMywgNTUsIAotICAgIDEwMywgNTgsIDEsIDQsIDIxNSwgOTQsIDI1NCwgMTQzLCA1OCwgMSwgNCwgMjUxLCA2NiwgNTgsIDEsIDQsIDI1MSwgNjcsIAotICAgIDIsIDI0OSwgMTAwLCA1OCwgMSwgNCwgMjQ1LCA1OSwgNTgsIDEsIDQsIDIyMywgNDksIDIwNCwgNzUsIDU4LCAxLCA0LCAKLSAgICAyNDUsIDYsIDU4LCAxLCA0LCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDkxLCA1OCwgMSwgNCwgMTE5LCAyNDMsIDIwMiwgNTgsIAotICAgIDEsIDQsIDIxNSwgOTQsIDI0MiwgNjAsIDU4LCAxLCA0LCAyNDAsIDE1NCwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE4NSwgCi0gICAgNTgsIDEsIDQsIDYsIDczLCA1OCwgMSwgNCwgNiwgMjQwLCAxNTQsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxNDUsIDIsIAotICAgIDI0OSwgMTI3LCA1OCwgMSwgNCwgMjMzLCAxNDksIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDIzMywgMTQ5LCAyLCAKLSAgICAyMjYsIDY2LCAxMDMsIDU4LCAxLCA0LCA2LCAxNTYsIDU4LCAxLCA0LCAyMzIsIDUwLCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIAotICAgIDk0LCAyMzIsIDUwLCAyLCAxOTksIDIzMywgMzYsIDU4LCAxLCA0LCAyMzAsIDI2LCAyLCA0MywgMTAzLCA1OCwgMSwgNCwgCi0gICAgMjMwLCAyNiwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgNiwgMjMwLCAyNSwgNTgsIDEsIDQsIDI1MiwgMTM0LCA3NiwgCi0gICAgNTgsIDEsIDQsIDIyNSwgMTMzLCA1OCwgMSwgNCwgMjIyLCA5MiwgMiwgMTAzLCA1OCwgMSwgNCwgMjQ1LCA3NSwgNTgsIDEsIAotICAgIDQsIDIxNywgMTUzLCAyLCAyMjYsIDY2LCAxMDMsIDU4LCAxLCA0LCAxMDQsIDEzMCwgNTgsIDEsIDQsIDIxNCwgMTU3LCA1OCwgCisgICAgNCwgMjU0LCAxNDQsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI0NCwgNTgsIDEsIDQsIDI1MywgMTU5LCA1OCwgMSwgNCwgCisgICAgMjQ5LCA2MSwgNTgsIDEsIDQsIDc1LCA1OCwgMSwgNCwgMjIxLCAxOTYsIDU4LCAxLCA0LCAyMDQsIDc1LCA1OCwgMSwgNCwgCisgICAgMjE1LCA5NCwgMjA0LCA3NSwgNTgsIDEsIDQsIDI0MywgMjAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgNzMsIDU4LCAxLCA0LCAKKyAgICAyMzUsIDI0LCA1OCwgMSwgNCwgMTkzLCA1OCwgMSwgNCwgMjQ1LCAxMzksIDU4LCAxLCA0LCA3NiwgNTgsIDEsIDQsIDIwNCwgCisgICAgNzYsIDU4LCAxLCA0LCAyMTYsIDE1LCAxNjMsIDc2LCA1OCwgMSwgNCwgMjUxLCAxNzYsIDE2MywgNzYsIDU4LCAxLCA0LCAKKyAgICAyMjYsIDEwNiwgNTgsIDEsIDQsIDIxNywgMTUzLCA1OCwgMSwgNCwgNzAsIDU4LCAxLCA0LCAyMTksIDE4OCwgNzAsIDU4LCAKKyAgICAxLCA0LCAyMTUsIDk0LCAxOTMsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMTk3LCA1OCwgMSwgNCwgCisgICAgMjUyLCAyNywgNTgsIDEsIDQsIDI2LCAyNDMsIDEwOCwgNTgsIDEsIDQsIDI0OCwgNTUsIDU4LCAxLCA0LCAyNiwgMjI1LCAKKyAgICAxMzQsIDU4LCAxLCA0LCAyNTAsIDExMSwgNywgMjE4LCA2NiwgNCwgMSwgNzMsIDcsIDIxOCwgNjYsIDQsIDEsIDE1MywgNywgCisgICAgMjE4LCA2NiwgNCwgMSwgNzAsIDcsIDIxOCwgNjYsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjUyLCAKKyAgICAyNywgMjYsIDIxOCwgNjYsIDQsIDEsIDI0MywgMTA4LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjIzLCAzOCwgMjYsIDIxOCwgNjYsIAorICAgIDQsIDEsIDIyNSwgMTM0LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjUwLCAxMTEsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCAKKyAgICA1NywgMiwgMjMwLCAyMjUsIDE4MywgNywgNCwgMSwgMjQ5LCA2MiwgMiwgMjMwLCAyMjUsIDE4MywgNywgNCwgMSwgMjQ1LCAKKyAgICA4LCAyLCAyMzAsIDIyNSwgMTgzLCA3LCA0LCAxLCAyMzIsIDUxLCAyLCAyMzAsIDIyNSwgMTgzLCA3LCA0LCAxLCAyMzAsIAorICAgIDI3LCAyLCAyMzAsIDIyNSwgMTgzLCA3LCA0LCAxLCAyMjYsIDEwNywgMiwgMjMwLCAyMjUsIDE4MywgNywgNCwgMSwgMjIzLCAKKyAgICAyMjUsIDIsIDIzMCwgMjI1LCAxODMsIDcsIDQsIDEsIDIyMywgMjI1LCAyLCAyNDQsIDg5LCAyMiwgMjMwLCAyMjUsIDE4MywgCisgICAgNywgNCwgMSwgMjIyLCA5MywgMiwgMjMwLCAyMjUsIDE4MywgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDIzMCwgMjI1LCAxODMsIAorICAgIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMzAsIDIyNSwgMTgzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDMsIDIwMywgNTgsIDEsIAorICAgIDMzLCAyNDUsIDE1MSwgNywgNCwgMSwgMjM1LCAyMTQsIDI0MywgMjAzLCA3LCA0LCAxLCAyMTYsIDIxMiwgMiwgMjE4LCAKKyAgICAxMDgsIDcsIDQsIDYsIDEsIDI0MCwgMTU1LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxODcsIDIsIDkxLCA3LCA0LCAxLCAyMjYsIAorICAgIDEwNywgMiwgOTEsIDcsIDQsIDYsIDEsIDEwNCwgMiwgOTEsIDcsIDQsIDEsIDIxNCwgMTU4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgNTcsIDIsIDIyNiwgNjcsIDEwMywgNywgNCwgMSwgMjQ5LCA2MiwgMiwgMjI2LCA2NywgMTAzLCA3LCA0LCAxLCAyNDUsIDgsIAorICAgIDIsIDIyNiwgNjcsIDEwMywgNywgNCwgMSwgMjQzLCAyMDQsIDIsIDIyNiwgNjcsIDEwMywgNywgNCwgMSwgMjM1LCAyNSwgMiwgCisgICAgMjI2LCA2NywgMTAzLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMjI2LCA2NywgMTAzLCA3LCA0LCAxLCAyMzIsIDUxLCAyLCAKKyAgICAyMjYsIDY3LCAxMDMsIDcsIDQsIDEsIDIzMCwgMjcsIDIsIDIyNiwgNjcsIDEwMywgNywgNCwgMSwgMjI2LCAxMDcsIDIsIAorICAgIDIyNiwgNjcsIDEwMywgNywgNCwgMSwgMjIzLCAyMjUsIDIsIDIyNiwgNjcsIDEwMywgNywgNCwgMSwgMjIyLCA5MywgMiwgCisgICAgMjI2LCA2NywgMTAzLCA3LCA0LCAxLCAyNDUsIDc3LCAyLCAyMjYsIDY3LCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAKKyAgICAyMjYsIDY3LCAxMDMsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyMjYsIDY3LCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAyMjYsIDY3LCAxMDMsIDcsIDQsIDEsIDExNSwgMiwgMjIzLCA1NiwgMTAzLCA3LCA0LCAxLCAyNTQsIDE0NSwgMiwgMjIzLCAKKyAgICA1NiwgMTAzLCA3LCA0LCAxLCAyNDksIDYyLCAyLCAyNDEsIDUzLCAyMiwgMjE3LCA3OCwgNywgNCwgMSwgMTYwLCAyLCAyMjMsIAorICAgIDU2LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTYwLCAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIDEsIDIyMywgNTAsIDIwNCwgMTYwLCAKKyAgICAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIDEsIDIyMSwgMTk3LCAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIDEsIDI0MCwgMTU1LCAKKyAgICAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIDEsIDI0NSwgNzcsIDIsIAorICAgIDIyMywgNTYsIDEwMywgNywgNCwgMSwgMTA0LCAyLCAyMjMsIDU2LCAxMDMsIDcsIDQsIDEsIDI0NSwgMTAsIDIsIDIyMywgCisgICAgNTYsIDEwMywgNTgsIDEsIDQsIDIxNSwgOTQsIDI1NCwgMTQ0LCA1OCwgMSwgNCwgMjUxLCA2NywgNTgsIDEsIDQsIDI1MSwgCisgICAgNjgsIDIsIDI0OSwgMTAxLCA1OCwgMSwgNCwgMjQ1LCA2MCwgNTgsIDEsIDQsIDIyMywgNTAsIDIwNCwgNzUsIDU4LCAxLCA0LCAKKyAgICAyNDUsIDcsIDU4LCAxLCA0LCAyNDcsIDEyMCwgMjM1LCAxNDYsIDIsIDkxLCA1OCwgMSwgNCwgMTE5LCAyNDMsIDIwMywgNTgsIAorICAgIDEsIDQsIDIxNSwgOTQsIDI0MiwgNjEsIDU4LCAxLCA0LCAyNDAsIDE1NSwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE4NiwgCisgICAgNTgsIDEsIDQsIDYsIDczLCA1OCwgMSwgNCwgNiwgMjQwLCAxNTUsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxNDYsIDIsIAorICAgIDI0OSwgMTI4LCA1OCwgMSwgNCwgMjMzLCAxNTAsIDIsIDIyMywgNTYsIDEwMywgNTgsIDEsIDQsIDIzMywgMTUwLCAyLCAKKyAgICAyMjYsIDY3LCAxMDMsIDU4LCAxLCA0LCA2LCAxNTYsIDU4LCAxLCA0LCAyMzIsIDUxLCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIAorICAgIDk0LCAyMzIsIDUxLCAyLCAxOTksIDIzMywgMzcsIDU4LCAxLCA0LCAyMzAsIDI3LCAyLCA0MywgMTAzLCA1OCwgMSwgNCwgCisgICAgMjMwLCAyNywgMiwgMjIzLCA1NiwgMTAzLCA1OCwgMSwgNCwgNiwgMjMwLCAyNiwgNTgsIDEsIDQsIDI1MiwgMTM1LCA3NiwgCisgICAgNTgsIDEsIDQsIDIyNSwgMTM0LCA1OCwgMSwgNCwgMjIyLCA5MywgMiwgMTAzLCA1OCwgMSwgNCwgMjQ1LCA3NiwgNTgsIDEsIAorICAgIDQsIDIxNywgMTU0LCAyLCAyMjYsIDY3LCAxMDMsIDU4LCAxLCA0LCAxMDQsIDEzMCwgNTgsIDEsIDQsIDIxNCwgMTU3LCA1OCwgCiAgICAgMSwgNCwgNiwgNzAsIDU4LCAxLCA0LCAyMTQsIDEwNiwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjE0LCAxMDUsIDU4LCAKLSAgICAxLCA0LCAyMTAsIDE1OSwgNTgsIDEsIDQsIDIxMCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCAyMTAsIDE2MCwgCi0gICAgMiwgMjQ5LCAxMDAsIDU4LCAxLCA0LCAyNDUsIDgsIDU4LCAxLCA0LCAyMTYsIDE3OSwgMzgsIDI0NiwgMTE4LCAyNDIsIAotICAgIDEzNywgMjU1LCAxNCwgMzgsIDI0NiwgMTE4LCAyNTUsIDMsIDI1NSwgMTQsIDM4LCAyMTksIDY5LCA1MSwgMzgsIDIxOCwgNiwgCi0gICAgNzgsIDM4LCAyMzEsIDIzMSwgMzgsIDI0MiwgMTM0LCAzOCwgMjMxLCAyMjksIDM4LCAyNTUsIDEsIDM4LCAyNDIsIDEzNSwgCi0gICAgMzgsIDI1NSwgMiwgMzgsIDcsIDQsIDEsIDIyMywgMjI0LCA1MSwgMzgsIDI1MSwgMTQ1LCAzOCwgMjMxLCAyMzAsIDM4LCAKLSAgICA1MiwgMjUwLCAzMSwgNDgsIDM4LCAyMjYsIDIyNSwgNDgsIDM4LCAyMTAsIDM1LCA1MSwgMzgsIDIzNSwgMTcyLCA1MSwgMzgsIAotICAgIDIxNCwgMTUxLCA0OCwgMzgsIDIxNCwgMTM0LCA0OCwgMzgsIDcsIDQsIDEsIDI0NCwgNjMsIDIwNCwgMTE1LCA0OCwgMzgsIAotICAgIDcsIDQsIDEsIDI1NCwgMjQzLCAzOCwgNywgNCwgMSwgMjU0LCA3MywgMzgsIDcsIDQsIDEsIDI1MywgMTc2LCAzOCwgNywgNCwgCi0gICAgMSwgMjUxLCA2NywgMjUwLCAxODMsIDM4LCA3LCA0LCAxLCAyMzUsIDIxMywgMjQ5LCA2MCwgMzgsIDcsIDQsIDEsIDI0NSwgCi0gICAgNTksIDM4LCA3LCA0LCAxLCAyNDMsIDIwMiwgMzgsIDcsIDEsIDQsIDYsIDI0MywgMjAyLCAzOCwgNywgNCwgMSwgMjM1LCAKLSAgICAyMywgMzgsIDcsIDQsIDEsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE5MywgMzgsIDcsIDQsIAotICAgIDEsIDIzMCwgMjUsIDM4LCA3LCAxLCA0LCA2LCAyMzAsIDI1LCAzOCwgNywgMSwgNCwgNiwgMTUzLCAzOCwgNywgNCwgMSwgCi0gICAgMjIzLCAyMjQsIDIyMiwgMTg2LCAzOCwgNywgNCwgMSwgMjIyLCA5MSwgMzgsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MSwgMzgsIAotICAgIDcsIDQsIDEsIDIxMCwgMTU5LCAzOCwgNTIsIDIzNSwgMTkzLCAyNTEsIDE0NywgNTEsIDM4LCAyNTQsIDE0OCwgMTI4LCAKLSAgICAyMTYsIDQyLCA1MSwgMzgsIDQzLCAyNTMsIDI1MCwgNDgsIDM4LCA0NCwgMjUzLCAyNTAsIDIyLCAxMjQsIDI1MywgMjUwLCAKLSAgICA1MSwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDUxLCA3LCA2LCAKKyAgICAxLCA0LCAyMTAsIDE1OSwgNTgsIDEsIDQsIDIxMCwgMTYwLCAyLCAyMjMsIDU2LCAxMDMsIDU4LCAxLCA0LCAyMTAsIDE2MCwgCisgICAgMiwgMjQ5LCAxMDEsIDU4LCAxLCA0LCAyNDUsIDksIDU4LCAxLCA0LCAyMTYsIDE4MCwgMzgsIDI0NiwgMTE5LCAyNDIsIAorICAgIDEzOCwgMjU1LCAxNSwgMzgsIDI0NiwgMTE5LCAyNTUsIDQsIDI1NSwgMTUsIDM4LCAyMTksIDcwLCA1MSwgMzgsIDIxOCwgNywgCisgICAgNzgsIDM4LCAyMzEsIDIzMiwgMzgsIDI0MiwgMTM1LCAzOCwgMjMxLCAyMzAsIDM4LCAyNTUsIDIsIDM4LCAyNDIsIDEzNiwgCisgICAgMzgsIDI1NSwgMywgMzgsIDcsIDQsIDEsIDIyMywgMjI1LCA1MSwgMzgsIDI1MSwgMTQ2LCAzOCwgMjMxLCAyMzEsIDM4LCAKKyAgICA1MiwgMjUwLCAzMiwgNDgsIDM4LCAyMjYsIDIyNiwgNDgsIDM4LCAyMTAsIDM1LCA1MSwgMzgsIDIzNSwgMTczLCA1MSwgMzgsIAorICAgIDIxNCwgMTUxLCA0OCwgMzgsIDIxNCwgMTM0LCA0OCwgMzgsIDcsIDQsIDEsIDI0NCwgNjQsIDIwNCwgMTE1LCA0OCwgMzgsIAorICAgIDcsIDQsIDEsIDI1NCwgMjQ0LCAzOCwgNywgNCwgMSwgMjU0LCA3NCwgMzgsIDcsIDQsIDEsIDI1MywgMTc3LCAzOCwgNywgNCwgCisgICAgMSwgMjUxLCA2OCwgMjUwLCAxODQsIDM4LCA3LCA0LCAxLCAyMzUsIDIxNCwgMjQ5LCA2MSwgMzgsIDcsIDQsIDEsIDI0NSwgCisgICAgNjAsIDM4LCA3LCA0LCAxLCAyNDMsIDIwMywgMzgsIDcsIDEsIDQsIDYsIDI0MywgMjAzLCAzOCwgNywgNCwgMSwgMjM1LCAKKyAgICAyNCwgMzgsIDcsIDQsIDEsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE5MywgMzgsIDcsIDQsIAorICAgIDEsIDIzMCwgMjYsIDM4LCA3LCAxLCA0LCA2LCAyMzAsIDI2LCAzOCwgNywgMSwgNCwgNiwgMTUzLCAzOCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjUsIDIyMiwgMTg3LCAzOCwgNywgNCwgMSwgMjIyLCA5MiwgMzgsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MiwgMzgsIAorICAgIDcsIDQsIDEsIDIxMCwgMTU5LCAzOCwgNTIsIDIzNSwgMTk0LCAyNTEsIDE0OCwgNTEsIDM4LCAyNTQsIDE0OSwgMTI4LCAKKyAgICAyMTYsIDQzLCA1MSwgMzgsIDQzLCAyNTMsIDI1MSwgNDgsIDM4LCA0NCwgMjUzLCAyNTEsIDIyLCAxMjQsIDI1MywgMjUxLCAKKyAgICA1MSwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjIyLCAyMzUsIDUxLCA3LCA2LCAKICAgICAxLCA1NywgMiwgNTksIDQ4LCA3LCA0LCAxLCA1NywgMiwgNTksIDQ4LCA3LCA2LCAxLCA1NywgMiwgNTksIDUxLCA3LCA0LCAKLSAgICAxLCA1NywgMiwgNTksIDUxLCA3LCA2LCAxLCA1NywgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCA1NywgMiwgMjMyLCAyMTQsIAotICAgIDUxLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4NCwgMjIsIDE0MiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMjUwLCAKLSAgICAxODQsIDIyLCAxNDIsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgNTksIDQ4LCAKLSAgICA3LCA2LCAxLCAyNDksIDYxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQ5LCAKLSAgICA2MSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDI0OSwgNjEsIAotICAgIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAzMSwgCi0gICAgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAKLSAgICAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMywgCi0gICAgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAKLSAgICA1MSwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMTYsIDg5LCA1MSwgNywgNCwgMSwgCi0gICAgMTYwLCAyLCAyMTYsIDg5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE4NCwgMjIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDI1MCwgMTg0LCAyMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDI0NSwgNywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDUsIAotICAgIDcsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjMxLCAKLSAgICAyMzIsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAKLSAgICAyNDIsIDYxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgCi0gICAgMjQ4LCAxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MCwgMTgzLCA3LCA0LCAKLSAgICAxLCAyNDIsIDYxLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUxLCAxNDcsIDUxLCA3LCA0LCAxLCAyNDIsIAotICAgIDYxLCAyLCAyNTEsIDE0NywgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMTYsIDg5LCA1MSwgNywgNCwgMSwgMjQwLCAKLSAgICAxNTQsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIAotICAgIDE1NCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAxNDIsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIAotICAgIDE0MiwgNywgNiwgMSwgMjM1LCAyNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDIzNSwgMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAKLSAgICAyMzMsIDE0OSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgCi0gICAgNTksIDI1MiwgNDMsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAKLSAgICAyMzIsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMzIsIDIxNCwgCi0gICAgNTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMzEsIDUxLCAKLSAgICA3LCA2LCAxLCAyMzIsIDUwLCAyLCAxNDIsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDE0MiwgNywgNiwgMSwgMjMyLCA1MCwgMiwgCi0gICAgNTksIDQ4LCA3LCA0LCAxLCAyMzIsIDUwLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDU5LCA1MSwgNywgNCwgCi0gICAgMSwgMjMyLCA1MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIAotICAgIDU5LCA0OCwgNywgNiwgMSwgMjMwLCAyNiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCA1OSwgNTEsIDcsIDYsIAotICAgIDEsIDIzMCwgMjYsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAKLSAgICAyMzAsIDI2LCAyLCAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE0NCwgCi0gICAgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDIxNiwgODksIDIyLCAyNDgsIDEsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDI0OCwgMSwgNywgNiwgMSwgMTQ0LCAKLSAgICAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIAotICAgIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDYsIAotICAgIDEsIDIyNiwgMTA2LCAyLCAxNDIsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAxNDIsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDIyMywgMjI0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAKLSAgICA1OSwgNTEsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMjMsIAotICAgIDIyNCwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgCi0gICAgNCwgMSwgMjIzLCAyMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAKLSAgICAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTUsIDMsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI1NSwgMywgCi0gICAgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAyMzUsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTIsIAotICAgIDIsIDI1MCwgMjM1LCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgMjUyLCA0MywgMjIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjIyLCA5MiwgMiwgNTksIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCA1OSwgNDgsIAotICAgIDcsIDQsIDEsIDIxNywgMTUzLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxNywgCi0gICAgMTUzLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAKLSAgICAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAotICAgIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgNTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCA1MSwgNywgCi0gICAgNiwgMSwgMTA0LCAyLCAyMTYsIDg5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDg5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAKLSAgICAyNTAsIDMxLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDg5LCAyMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAKLSAgICAyNDgsIDEsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAyNDgsIDEsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAxODIsIAotICAgIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxODIsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxNCwgCi0gICAgMTA2LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDIsIAotICAgIDEzNiwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDYsIDEsIDIxMiwgCi0gICAgOTksIDIsIDI0OCwgMSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNDgsIAorICAgIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDU3LCAyLCAyMzIsIDIxNSwgNTEsIDcsIDQsIDEsIDU3LCAyLCAyMzIsIDIxNSwgCisgICAgNTEsIDcsIDYsIDEsIDI1MSwgNjgsIDIsIDI1MCwgMTg1LCAyMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDY4LCAyLCAyNTAsIAorICAgIDE4NSwgMjIsIDE0MiwgNywgNiwgMSwgMjQ5LCA2MiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDksIDYyLCAyLCA1OSwgNDgsIAorICAgIDcsIDYsIDEsIDI0OSwgNjIsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQ5LCA2MiwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDksIAorICAgIDYyLCAyLCAyMzIsIDIxNSwgNTEsIDcsIDQsIDEsIDI0OSwgNjIsIDIsIDIzMiwgMjE1LCA1MSwgNywgNiwgMSwgMjQ5LCA2MiwgCisgICAgMiwgMjUwLCAxODQsIDcsIDQsIDEsIDI0OSwgNjIsIDIsIDI1MCwgMTg0LCA3LCA2LCAxLCAyNDksIDYyLCAyLCAyNTAsIDMyLCAKKyAgICA1MSwgNywgNCwgMSwgMjQ5LCA2MiwgMiwgMjUwLCAzMiwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzQsIDIyLCAyNDIsIAorICAgIDEzNywgNywgNCwgMSwgMTYwLCAyLCAyMzEsIDIzNCwgMjIsIDI0MiwgMTM3LCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjM0LCAKKyAgICAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjM0LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzIsIAorICAgIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzIsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIxNiwgOTAsIDUxLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIxNiwgOTAsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTg1LCAyMiwgMjUxLCAxNDcsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAxODUsIDIyLCAyNTEsIDE0NywgNywgNiwgMSwgMjQ1LCA4LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgCisgICAgOCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwNCwgMiwgMjMxLCAyMzMsIDcsIDQsIDEsIDI0MywgMjA0LCAyLCAyMzEsIAorICAgIDIzMywgNywgNiwgMSwgMjQyLCA2MiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDIsIDYyLCAyLCA1OSwgNDgsIDcsIDYsIDEsIAorICAgIDI0MiwgNjIsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQyLCA2MiwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDIsIDYyLCAyLCAKKyAgICAyNDgsIDIsIDcsIDQsIDEsIDI0MiwgNjIsIDIsIDI0OCwgMiwgNywgNiwgMSwgMjQyLCA2MiwgMiwgMjUwLCAxODQsIDcsIDQsIAorICAgIDEsIDI0MiwgNjIsIDIsIDI1MCwgMTg0LCA3LCA2LCAxLCAyNDIsIDYyLCAyLCAyNTEsIDE0OCwgNTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjIsIDIsIDI1MSwgMTQ4LCA1MSwgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDIxNiwgOTAsIDUxLCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NSwgMiwgMjE2LCA5MCwgNTEsIDcsIDYsIDEsIDI0MCwgMTU1LCAyLCAyNDgsIDMsIDIyLCAxNDIsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU1LCAyLCAyNDgsIDMsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMjUsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAyNSwgMiwgCisgICAgMTQyLCA3LCA2LCAxLCAyMzUsIDI1LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMjUsIDIsIDU5LCA1MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNSwgMiwgMjMyLCAyMTUsIDUxLCA3LCA0LCAxLCAyMzUsIDI1LCAyLCAyMzIsIDIxNSwgNTEsIDcsIDYsIDEsIAorICAgIDIzMywgMTUwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTUwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTUwLCAyLCAKKyAgICA1OSwgMjUyLCA0NCwgMjIsIDIzMSwgMjMzLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgNTksIDI1MiwgNDQsIDIyLCAyMzEsIAorICAgIDIzMywgNywgNiwgMSwgMjMzLCAxNTAsIDIsIDIzMiwgMjE1LCA1MSwgNywgNCwgMSwgMjMzLCAxNTAsIDIsIDIzMiwgMjE1LCAKKyAgICA1MSwgNywgNiwgMSwgMjMzLCAxNTAsIDIsIDI1MCwgMzIsIDUxLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMjUwLCAzMiwgNTEsIAorICAgIDcsIDYsIDEsIDIzMiwgNTEsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1MSwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDUxLCAyLCAKKyAgICA1OSwgNDgsIDcsIDQsIDEsIDIzMiwgNTEsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1MSwgMiwgNTksIDUxLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUxLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMjcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAyNywgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAyMzAsIDI3LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMjcsIDIsIDU5LCA1MSwgNywgNiwgCisgICAgMSwgMjMwLCAyNywgMiwgMjMyLCAyMTUsIDUxLCA3LCA0LCAxLCAyMzAsIDI3LCAyLCAyMzIsIDIxNSwgNTEsIDcsIDYsIDEsIAorICAgIDIzMCwgMjcsIDIsIDI1MCwgMzIsIDUxLCA3LCA0LCAxLCAyMzAsIDI3LCAyLCAyNTAsIDMyLCA1MSwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAyMTYsIDkwLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjE2LCA5MCwgMjIsIDI0OCwgMiwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAyMiwgMjQ4LCAyLCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzMSwgMjM0LCAyMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzQsIDIyLCAyNDIsIDEzNywgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyMzEsIDIzNCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzNCwgMjIsIDE0MiwgNywgNiwgCisgICAgMSwgMjI2LCAxMDcsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMDcsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMDcsIDIsIDU5LCAKKyAgICA0OCwgNywgNCwgMSwgMjI2LCAxMDcsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjUsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjUsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjUsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjUsIDIsIAorICAgIDU5LCA1MSwgNywgNiwgMSwgMjIzLCAyMjUsIDIsIDU5LCAyNTIsIDQ0LCAyMiwgMjMxLCAyMzMsIDcsIDQsIDEsIDIyMywgCisgICAgMjI1LCAyLCA1OSwgMjUyLCA0NCwgMjIsIDIzMSwgMjMzLCA3LCA2LCAxLCAyMjMsIDIyNSwgMiwgMjMyLCAyMTUsIDUxLCA3LCAKKyAgICA0LCAxLCAyMjMsIDIyNSwgMiwgMjMyLCAyMTUsIDUxLCA3LCA2LCAxLCAyMjIsIDkzLCAyLCA1OSwgNDgsIDcsIDQsIDEsIAorICAgIDIyMiwgOTMsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MywgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDkzLCAyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDIyMiwgOTMsIDIsIDI1NSwgNCwgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MywgMiwgMjU1LCA0LCAKKyAgICAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkzLCAyLCAyNTAsIDIzNiwgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MywgCisgICAgMiwgMjUwLCAyMzYsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTMsIDIsIDU5LCAyNTIsIDQ0LCAyMiwgNTksIDQ4LCA3LCAKKyAgICA0LCAxLCAyMjIsIDkzLCAyLCA1OSwgMjUyLCA0NCwgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDIzMiwgMjE1LCA1MSwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIAorICAgIDIzMiwgMjE1LCA1MSwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI1MCwgMzIsIDUxLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgCisgICAgMjUwLCAzMiwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAzLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDMsIDUxLCA3LCAKKyAgICA2LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzIsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzIsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDIyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA5MCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzNCwgMjIsIAorICAgIDI0OCwgMiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzNCwgMjIsIDI0OCwgMiwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDE4MywgCisgICAgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDE4MywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDYsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI0MiwgCisgICAgMTM3LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNiwgMSwgMjEyLCAKKyAgICA5OSwgMiwgMjQ4LCAyLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDgsIDIsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgCiAgICAgNywgNCwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMiwgCiAgICAgOTksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxNzksIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxNzksIDIsIDU5LCAKLSAgICA0OCwgNywgNiwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNiwgMSwgCisgICAgNDgsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDIsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDIsIDcsIDYsIDEsIAogICAgIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAKLSAgICAyNTAsIDMwLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgCi0gICAgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgCi0gICAgMjEwLCAxNjAsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1MywgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDIxMSwgCi0gICAgMTE4LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDExNSwgMiwgNDQsIDE2MywgMjIyLCAyMzMsIDcsIDQsIDEsIDE5OSwgCi0gICAgMjIyLCA5MiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxOTksIDIyMiwgOTIsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMTk5LCAKLSAgICAyMjIsIDkyLCAyLCAxMjUsIDkxLCA3LCA2LCAxLCAyMjAsIDc2LCAyMjIsIDkxLCA3LCA0LCAxLCAyNDgsIDU0LCA3LCA2LCAKLSAgICAxLCAxMTUsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjQxLCA1MiwgNDgsIAotICAgIDcsIDQsIDEsIDExNSwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgCi0gICAgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgCi0gICAgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIAotICAgIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAKLSAgICAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIAotICAgIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAKLSAgICAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAKLSAgICAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAKLSAgICAyNTEsIDE0NywgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMjQxLCA1MiwgNDgsIDcsIAotICAgIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxODIsIDcsIAotICAgIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCA1OSwgCisgICAgMjUwLCAzMSwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMzEsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyMzIsIDIxNSwgNTEsIDcsIDQsIDEsIAorICAgIDIxMCwgMTYwLCAyLCAyMzIsIDIxNSwgNTEsIDcsIDQsIDEsIDI0MiwgNjIsIDIsIDIzMiwgMjE1LCA1MSwgNywgNCwgMSwgCisgICAgMjE3LCAxNTQsIDIsIDI0OCwgMiwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjIyLCAyMzUsIDQ4LCA3LCA0LCAxLCAyMTEsIAorICAgIDExOCwgMiwgMjIyLCAyMzUsIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDQ0LCAxNjMsIDIyMiwgMjM0LCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTMsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTk5LCAyMjIsIDkzLCAyLCAyNDgsIDAsIDkxLCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTMsIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDIyMCwgNzcsIDIyMiwgOTIsIDcsIDQsIDEsIDI0OCwgNTUsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTE1LCAyLCAyNDEsIDUzLCA0OCwgCisgICAgNywgNCwgMSwgMTE1LCAyLCAyNDEsIDUzLCA0OCwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMyLCAyMiwgMTQyLCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDI1MCwgMzIsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMiwgMjIsIDI0MiwgMTM3LCA3LCA0LCAKKyAgICAxLCAxMTUsIDIsIDI1MCwgMzIsIDIyLCAyNDIsIDEzNywgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMyLCAyMiwgMjQxLCA1MywgCisgICAgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMiwgMjIsIDI0MSwgNTMsIDQ4LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzIsIAorICAgIDIyLCAxODMsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMiwgMjIsIDE4MywgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMyLCAyMiwgCisgICAgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzIsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDgsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDgsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDgsIAorICAgIDIyLCAyNDIsIDEzNywgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0OCwgMjIsIDI0MiwgMTM3LCA3LCA2LCAxLCAxMTUsIDIsIAorICAgIDI1MSwgMTQ4LCAyMiwgMjQxLCA1MywgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDgsIDIyLCAyNDEsIDUzLCA0OCwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0OCwgMjIsIDE4MywgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0OCwgMjIsIDE4MywgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0OCwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0OCwgMjIsIDU5LCAKICAgICA1MSwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDE4MiwgNywgNCwgMSwgCi0gICAgMTYwLCAyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAKLSAgICAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIAotICAgIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgCi0gICAgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQxLCA1MiwgNDgsIDcsIAotICAgIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCi0gICAgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCAKLSAgICA2LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAKLSAgICAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAKLSAgICAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCi0gICAgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCAKLSAgICA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDU5LCAKLSAgICA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIAotICAgIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAKLSAgICAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAKLSAgICAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA0LCAKLSAgICAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCAKLSAgICA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCi0gICAgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1MiwgCi0gICAgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAKLSAgICAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgCi0gICAgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgCi0gICAgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgCi0gICAgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTM2LCA3LCA0LCAKLSAgICAxLCAyMTEsIDExOCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMSwgCi0gICAgMTE4LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIAotICAgIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA2LCAKLSAgICAxLCAyMzAsIDIyMywgMjMyLCAxODUsIDcsIDQsIDEsIDIzMCwgMjIzLCAyMzIsIDE4NSwgNywgNiwgMSwgMjMwLCAyMjMsIAotICAgIDIxNCwgMTA1LCA3LCA0LCAxLCAyMzAsIDIyMywgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyMywgNywgCi0gICAgNCwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTIzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgCi0gICAgMjU0LCAxNDQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIAotICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAKLSAgICAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgCi0gICAgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAotICAgIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAKLSAgICAyNDgsIDE1MywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAotICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKLSAgICAxMTAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAKLSAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAotICAgIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAKLSAgICAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAKLSAgICAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgCi0gICAgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCAKLSAgICA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAotICAgIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAKLSAgICAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIAotICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgCi0gICAgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAKLSAgICAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIAotICAgIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAKLSAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCi0gICAgMTU0LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAotICAgIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKLSAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgCi0gICAgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIAotICAgIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjM1LCAxODYsIAotICAgIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAotICAgIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIAotICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCi0gICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1MywgMjYsIDYsIAotICAgIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIAotICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAKLSAgICAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIAotICAgIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIAotICAgIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgCi0gICAgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIAotICAgIDQsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgCi0gICAgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMjYsIDIwMCwgCi0gICAgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKLSAgICAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCi0gICAgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgCi0gICAgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAKLSAgICAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDIxNCwgMTU4LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgCi0gICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIxNCwgCi0gICAgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTUzLCAyNiwgNiwgCi0gICAgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgCi0gICAgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAKLSAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIAotICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAKLSAgICAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIAotICAgIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgCi0gICAgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIAotICAgIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgCi0gICAgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKLSAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIAotICAgIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMjYsIAotICAgIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCi0gICAgMjU0LCAxNDQsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIAotICAgIDEwMSwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjYsIAotICAgIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgCi0gICAgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAKLSAgICAyMjYsIDIwMiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKLSAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgCi0gICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKLSAgICAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgCi0gICAgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIAotICAgIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIAotICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCi0gICAgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIAotICAgIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAKLSAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIAotICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCi0gICAgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAKLSAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCi0gICAgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIAotICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKLSAgICAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAKLSAgICAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgCi0gICAgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIAotICAgIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAotICAgIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgCi0gICAgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCAKLSAgICA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyMjYsIAotICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCi0gICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIAotICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgCi0gICAgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIAotICAgIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAKLSAgICAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAKLSAgICAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAotICAgIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAKLSAgICAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAKLSAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIAotICAgIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgCi0gICAgMjU0LCAxNDQsIDIsIDIzMSwgMjMyLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIAotICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIDExMSwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc2LCAKLSAgICAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgCi0gICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIAotICAgIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE2NywgMjYsIDIzNCwgMiwgMjYsIDIyNCwgMTY3LCAyNiwgMjI0LCAKLSAgICAxNTQsIDI2LCAyMjUsIDE3NSwgMjYsIDI0NywgMjUyLCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIAotICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIAotICAgIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNjQsIDIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAotICAgIDI0NSwgMTAxLCAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKLSAgICAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTY3LCAyNiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAKLSAgICAyNiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIAotICAgIDE4NiwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjMxLCAyMzIsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgCi0gICAgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjI2LCAxMTAsIDI2LCAKLSAgICA0LCAxLCAyMzUsIDE4NiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMjUsIAotICAgIDE3NSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMzEsIDIzMiwgCi0gICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNiwgMTEwLCAyNiwgMjQ4LCAKLSAgICAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAotICAgIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjMxLCAyMzIsIDI2LCA0LCAKLSAgICAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKLSAgICAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjMsIDM4LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyMywgMzgsIDIsIDI0OCwgCi0gICAgMTUzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKLSAgICAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgCi0gICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMjYsIAotICAgIDExMCwgMjYsIDYsIDEsIDIyMywgMzgsIDIsIDI0OCwgMTUzLCAyNiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgMjQ3LCAKLSAgICAyNTIsIDIyLCAyMjYsIDExMCwgMjYsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNiwgMTExLCAKLSAgICAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgCi0gICAgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKLSAgICAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgCi0gICAgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNjcsIDI2LCAyMjYsIDExMCwgMjYsIDI0OCwgMTUzLCAKLSAgICAyNDUsIDE1MSwgMjI0LCAyNywgMjQ1LCAxNjAsIDIyNCwgMjcsIDI0NSwgMTUxLCAyMTksIDE4LCAyNDUsIDE2MCwgMjE5LCAKLSAgICAxOCwgMjE2LCAxNDEsIDIxOSwgMTgsIDI0NCwgOSwgMjE5LCAxOCwgMjE5LCAxMjMsIDIxOSwgMTgsIDI0NCwgMTEyLCAyMTksIAotICAgIDE4LCAyMjQsIDE0MSwgMjE5LCAxOCwgMjE2LCAxNzAsIDIxOSwgMTgsIDI0MiwgMzUsIDIxOSwgMTgsIDIxMCwgODcsIDIxMSwgCi0gICAgMjQ1LCAyMTksIDE4LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA2NywgMjEwLCA4NywgMjExLCAyNDUsIDIzNSwgNjMsIAotICAgIDIzMywgMzgsIDc4LCAyMjIsIDI0MywgNzgsIDI0MCwgMTY4LCAyMjgsIDY4LCAyNDAsIDE2OCwgMjQ0LCAxMTIsIDI0OCwgCi0gICAgMTU2LCAyNDUsIDE1MSwgMjQ4LCAxNTYsIDI0NSwgMTYwLCAyNDgsIDE1NiwgMjAzLCAxMzAsIDUyLCA2NywgMjMyLCAyMTMsIAotICAgIDUyLCAxMjEsIDIzMiwgMjEzLCA0MywgMjE5LCAxNTUsIDIyMywgMjU0LCA3OCwgNDQsIDIxOSwgMTU1LCAyMjMsIDI1NCwgCi0gICAgNzgsIDIxOSwgMTU1LCAyMzIsIDEwOSwgMjIzLCAyNTQsIDc4LCAyMTksIDE1NSwgMjQxLCAxNjMsIDIyMywgMjU0LCA3OCwgCi0gICAgNDMsIDUyLCAyMjMsIDI1NCwgNzgsIDQ0LCA1MiwgMjIzLCAyNTQsIDc4LCA1MiwgMjMyLCAxMDksIDIyMywgMjU0LCA3OCwgCi0gICAgNTIsIDI0MSwgMTYzLCAyMjMsIDI1NCwgNzgsIDI0OCwgMjA1LCA1MiwgMjQ4LCAyMDUsIDI1MSwgMTEzLCAyMTUsIDIyMiwgCi0gICAgMjUxLCAxMTMsIDEyMywgNTksIDIzMywgNTYsIDExMywgNTksIDIzMywgNTYsIDIwMywgMjQ1LCAxNjMsIDI0MCwgMTY2LCAKLSAgICAyMjUsIDEwLCAyMzIsIDIxNCwgMjIwLCAxMzcsIDIyNiwgMTUsIDIyMCwgMTM3LCAyMzMsIDM4LCAyNDUsIDE1OCwgMjIyLCAKLSAgICAyNDMsIDI0NSwgMTU4LCAyMjQsIDI0NiwgMjQ3LCAxOTYsIDI0NCwgMTksIDIzMywgMzgsIDIyNiwgMTE3LCAyMjIsIDI0MywgCi0gICAgMjI2LCAxMTcsIDIyOSwgMTk0LCAyMjgsIDczLCAyMTksIDE4LCAyMjUsIDE4MywgMjMwLCAxOTMsIDUwLCAyMjUsIDE4MywgCi0gICAgMjE2LCAyNDgsIDIxNiwgMTQ4LCA1MCwgMjI0LCAxOTAsIDUyLCAyMjQsIDE5MCwgMjE1LCAyMTEsIDIyNCwgMTkwLCAyMjMsIAotICAgIDQ5LCAyMjQsIDE5MCwgMjIzLCA0OSwgNTIsIDIyNCwgMTkwLCAyMjMsIDQ5LCAyMTUsIDIxMSwgMjI0LCAxOTAsIDI1MCwgCi0gICAgMjM4LCAyMTksIDE1NSwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCA3OCwgMjE5LCAxNTUsIDIyMiwgMjQ3LCAyNTQsIAotICAgIDExMCwgMjIzLCAyNTQsIDc4LCAyMjMsIDEwNywgNzgsIDUyLCAyNDUsIDMxLCA3OCwgMjM1LCAyMDEsIDIyNiwgMTE5LCAKLSAgICAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMSwgMjUwLCAyMzksIDIzNSwgMjE2LCAyMjUsIDEwLCAyNTMsIDIxNCwgMjQwLCAxNjksIAotICAgIDI1MSwgMTEzLCAyNDQsIDIsIDIxOSwgOTUsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIyNCwgNywgNDQsIDQyLCAyNTEsIDE1OCwgCi0gICAgMiwgMjI0LCA3LCA1MiwgMjI0LCAxMywgNzgsIDIyNCwgMTMsIDI0NSwgMzEsIDc4LCAyNDUsIDMxLCAyMjQsIDEzLCA3OCwgCi0gICAgMjE2LCA3MCwgNSwgMjQ1LCA2NSwgMjIzLCA0OSwgMjI1LCA2OCwgNTAsIDg1LCAxNDAsIDI1MSwgMTEzLCA4NSwgOTcsIAotICAgIDI1MSwgMTEzLCAxMjEsIDI1MywgMjE2LCAyMjMsIDQ5LCAyMjAsIDE1MCwgMjUwLCAxLCAyMTQsIDE2MywgMTEzLCAyNTMsIAotICAgIDIxNSwgMjU0LCAxNTgsIDIxMywgMTg4LCAyNDksIDIxNywgMjMwLCAxODIsIDUwLCAyMTcsIDIzNCwgMjQ4LCAxNTYsIDIzNSwgCi0gICAgMTkzLCAyMTQsIDE4MCwgMjQ0LCA1MiwgMjI0LCAxNDEsIDc4LCAxMzQsIDU5LCAyMjQsIDE0MCwgMjI0LCAyNCwgMjI0LCAKLSAgICAxOTAsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDIyNCwgMTQwLCAxMTMsIDU5LCAyMjQsIDE0MCwgCi0gICAgMjQ0LCAxMSwgNTksIDc4LCAyNDYsIDExOCwgMjQ5LCAxMzAsIDIxNSwgMjIxLCA2NywgMjQ0LCAxMSwgMjQ3LCAxMTgsIAotICAgIDIzMSwgODIsIDExLCAyMTksIDE4LCAyMTEsIDIwOSwgMjM1LCA2MywgMjQzLCAyMjcsIDI1NCwgNTIsIDIzNSwgMTkxLCAKLSAgICAyMTYsIDg1LCAyMzUsIDE5MSwgMjIwLCAxMzcsIDIzNSwgMTkxLCAyMjUsIDIyLCAyMzUsIDIyOCwgMjE3LCAxODIsIDIxNywgCi0gICAgMjUxLCAyNTUsIDUsIDIxNywgMTgyLCAyMTcsIDI1MSwgMjM1LCAyMjgsIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyNTUsIDUsIAotICAgIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyMjksIDE4OSwgMjEsIDIyMCwgODEsIDIyOCwgNjksIDIxLCAyMjAsIDgxLCAyMTgsIAotICAgIDIzLCAyMTAsIDg2LCAyMTgsIDIzLCA3LCA0LCAxLCA3MywgMjE4LCAyMywgMTYxLCAyMTgsIDIzLCAxODksIDIxOCwgMjMsIAotICAgIDE5NCwgMjE4LCAyMywgMTk4LCAyMTgsIDIzLCAxOTUsIDIxOCwgMjMsIDIwMCwgMjE4LCAyMywgOTYsIDUwLCAyMTgsIDIzLCAKLSAgICAyMzAsIDE4MSwgMjE4LCAyMywgMjQ1LCA5OCwgNTAsIDIxOCwgMjMsIDQzLCAyMjYsIDMsIDIxOCwgMjMsIDQ0LCAyMjYsIDMsIAotICAgIDIxOCwgMjMsIDcsIDQsIDEsIDIzMCwgMjUsIDIxOCwgNjUsIDIxMCwgODYsIDIxOCwgNjUsIDExMCwgMjE4LCA2NSwgMTA1LCAKLSAgICAyMTgsIDY1LCAxNTgsIDIxOCwgNjUsIDE2MSwgMjE4LCA2NSwgMTg5LCAyMTgsIDY1LCAxOTQsIDIxOCwgNjUsIDE5OCwgCi0gICAgMjE4LCA2NSwgMTk1LCAyMTgsIDY1LCAyMDAsIDIxOCwgNjUsIDk2LCA1MCwgMjE4LCA2NSwgMjMwLCAxODEsIDIxOCwgNjUsIAotICAgIDI0NSwgOTgsIDUwLCAyMTgsIDY1LCA0MywgMjI2LCAzLCAyMTgsIDY1LCA0NCwgMjI2LCAzLCA3LCAyMTgsIDY1LCA0LCAxLCAKLSAgICA2MSwgNywgMjE4LCA2NSwgNCwgMSwgNzUsIDcsIDIxOCwgNjUsIDQsIDEsIDc2LCA3LCAyMTgsIDY1LCA0LCAxLCAyMTEsIAotICAgIDE3OCwgNywgMjE4LCA2NSwgNCwgMSwgMjIxLCAxOTUsIDcsIDIxOCwgNjUsIDQsIDEsIDI0MiwgNjAsIDcsIDIxOCwgNjUsIAotICAgIDQsIDEsIDIzNSwgMjMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1NiwgNywgMjE4LCA2NSwgNCwgMSwgMTkzLCA3LCAyMTgsIDY1LCAKLSAgICA0LCAxLCAyMzAsIDI1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjYsIDEwNSwgNywgMjE4LCA2NSwgNCwgMSwgMjIyLCA5MSwgNywgCi0gICAgMjE4LCA2NSwgNCwgMSwgMjE3LCAxNTIsIDI0NSwgNDYsIDUwLCAyNDksIDIyNywgNTAsIDI0OSwgMTE3LCA1MCwgMjQzLCAKLSAgICAyNTEsIDI0MywgMjU0LCA1MCwgMjMyLCAxOTgsIDUwLCAyMzAsIDE5NCwgNTAsIDIyOSwgMjEwLCA1MCwgMjI1LCAxNjIsIAotICAgIDUwLCAyMjIsIDExOCwgNTAsIDIxMSwgMjE3LCA1MCwgMTY2LCAyMjAsIDQ5LCA1MCwgMjQ3LCAxMjcsIDUwLCAyNDUsIDQ3LCAKLSAgICA1MCwgMjM0LCA3NiwgNTAsIDIxNSwgMTEyLCA1MCwgMjQ2LCAxMDEsIDUwLCAyNDMsIDQwLCAyMjUsIDE5MywgNTAsIDIyNSwgCi0gICAgMTYwLCA1MCwgMjQyLCAxMDksIDUwLCAyNTMsIDE4MiwgNTAsIDI0MCwgMjI4LCA1MCwgMjUwLCAxODUsIDUwLCAyMzIsIAotICAgIDE5MSwgMjE2LCAzLCA1MCwgMjE5LCAwLCA1MCwgMjE2LCAyNDUsIDUwLCAyMzUsIDI0MSwgMjIyLCAxMTgsIDUwLCAzOCwgCi0gICAgNDMsIDI0MSwgMjU1LCA0OCwgMzgsIDQ0LCAyNDEsIDI1NSwgNDgsIDM4LCAxOTksIDY3LCAyMzIsIDIxNCwgMjI2LCAxMjAsIAotICAgIDM4LCAyMTksIDI1MSwgNjcsIDIzMiwgMjE0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDgwLCA0OCwgMzgsIDI1MCwgMiwgCi0gICAgODAsIDQ4LCAzOCwgNDMsIDgwLCA0OCwgMzgsIDQ0LCA4MCwgNDgsIDM4LCAyMjIsIDIzNCwgMjI2LCAxMjAsIDM4LCAyNTAsIAotICAgIDIsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDEzNCwgMTcwLCA0OCwgCi0gICAgMzgsIDI0NCwgMTEsIDE3MCwgNDgsIDM4LCAyNDUsIDE0NiwgMjUwLCAzNSwgMzgsIDI0NSwgMTQ2LCAyMTgsIDIzNCwgMzgsIAotICAgIDI0NSwgMTQ2LCAyNDcsIDI0OCwgMzgsIDI0NSwgMTQ2LCAyNTAsIDM2LCAyNTIsIDE4MCwgMzgsIDQzLCA0NCwgODAsIDQ4LCAKLSAgICAzOCwgMjQ1LCAxNDYsIDIyMSwgMTg4LCAzOCwgMjQ1LCAxNDYsIDIzNCwgMTM1LCAzOCwgMjQ1LCAxNDYsIDIxNCwgMTU1LCAKLSAgICAyMjUsIDcsIDIxNSwgMjI1LCAzOCwgMjIzLCA1MCwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA1MiwgNjcsIDIxOCwgMTAzLCAKLSAgICAyMjYsIDEyMCwgMzgsIDI1NCwgOTgsIDg3LCAzOCwgMjE1LCAyMTEsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgCi0gICAgMTQwLCA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTIwLCAzOCwgMTk5LCA1MiwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA5NywgCi0gICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgMzgsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAotICAgIDEwMywgMzgsIDQzLCA4MCwgNTEsIDM4LCA0NCwgODAsIDUxLCAzOCwgMjUzLCAyMTcsIDQ4LCAyNTUsIDExLCAyMjYsIDIzMSwgCi0gICAgMjU0LCAyNTEsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMTgsIDc0LCAxMzksIDYsIDI1MSwgNjYsIDI0OCwgNzEsIDI1MCwgMTc4LCAKLSAgICAyNTAsIDE3NSwgMjMyLCAyMTQsIDg3LCAyNTAsIDI0MCwgMjI2LCAyMzEsIDI1MSwgMjYsIDIxNCwgMTg5LCAyNDUsIDQ4LCAKLSAgICAyNDksIDE5MSwgMjIxLCAxODUsIDI0OCwgNzEsIDI0NCwgMTc5LCAxMTksIDQsIDI0MywgMjAyLCAxMTksIDYsIDI0MiwgNjAsIAotICAgIDI1MSwgMjE5LCA2LCAyNDIsIDYwLCAxMzksIDYsIDI0MiwgNjAsIDIyNSwgMzcsIDI0OSwgMTkxLCAyMjUsIDM3LCAyNDksIAotICAgIDE5MiwgMTE3LCAxMTMsIDIyNSwgMTA4LCAxMTksIDYsIDczLCAyNTEsIDIxOSwgNiwgNzMsIDExOSwgNiwgMTU2LCAxMTksIAotICAgIDQsIDE1NiwgMjMzLCAxNDksIDU3LCAyNTIsIDE0MSwgODcsIDEzOSwgNiwgMjMwLCAyNSwgMjI3LCAxOTYsIDUwLCAyMTksIAotICAgIDMxLCAyMjMsIDExOSwgMjQ5LCAxNjIsIDExOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI0LCAKLSAgICA5NiwgMTE5LCA2LCAxNTMsIDI1MSwgMjE5LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5NiwgMjE3LCA3MSwgMjIzLCAKLSAgICA2MiwgMjIwLCAxMzIsIDc4LCAyMTcsIDEsIDUwLCAyMTUsIDI1MywgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAKLSAgICAxNTksIDIyNiwgMTMzLCA1MCwgMjI2LCAyMjEsIDUwLCAyMzUsIDE5MywgMjI2LCAyMjEsIDUwLCAyNTEsIDIxOSwgNiwgCi0gICAgMjEwLCAxNTksIDIxNSwgOTQsIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjM0LCAxNzMsIDUwLCAyNTQsIDEwNywgNTAsIDExOSwgCi0gICAgNiwgMjUzLCAxNTgsIDI1MSwgMjE5LCA2LCAyNTEsIDY2LCAyNDUsIDY4LCA4NywgMTE5LCA0LCA3NSwgMTE5LCA2LCA3NSwgCi0gICAgMTE5LCA2LCAyNDUsIDYsIDIxNSwgOTQsIDYsIDI0NSwgNiwgMTE5LCA2LCAxOTMsIDExOSwgNCwgNzYsIDExMiwgODcsIAotICAgIDI1MiwgMjksIDg3LCAyNDIsIDIwMiwgODcsIDI0OCwgMTkwLCA4NywgMjM1LCAyMzIsIDIxOSwgMjksIDIyMiwgMTg3LCA2LCAKLSAgICAyMjQsIDk2LCAyNDQsIDE4MiwgNTAsIDEzOSwgNCwgMjI1LCAxMDgsIDEzOSwgNCwgMjQzLCAxMDcsIDEzOSwgNiwgMjQzLCAKLSAgICAxMDcsIDEzOSwgNiwgMjI1LCAxMDgsIDEzOSwgMjMwLCAyNCwgMjE4LCA0MCwgMjE1LCA5NCwgMzUsIDYsIDI0MywgMjAyLCAKLSAgICAyMTUsIDk0LCAzNSwgNiwgMTU2LCAyMjMsIDQ5LCAzNSwgNiwgMTU2LCAyMTUsIDk0LCAzNSwgNiwgMjExLCAxMTcsIDEzOSwgCi0gICAgMzIsIDYsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDc1LCAxMzksIDMyLCA0LCA3MywgMTM5LCAKLSAgICAzMiwgNCwgMjM1LCAxNDQsIDIyNCwgMTcwLCAyMzIsIDIxMywgMjE1LCA5NCwgMjU0LCAxMjYsIDIyNSwgMTgzLCA1MCwgCi0gICAgMjU0LCAxODAsIDIxNSwgOTQsIDQsIDI0NSwgNiwgMTYsIDMxLCAyMjEsIDI1MiwgMjE5LCAyOSwgMjEyLCAxMTQsIDI0NCwgCi0gICAgMiwgMTIzLCAyMjAsIDExOCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMjgsIDE5NCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAKLSAgICAyMTYsIDI0MSwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMTYsIDE2OCwgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyMTYsIAotICAgIDE2NiwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDQsIDExNywgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyNDQsIDExNiwgCi0gICAgMjEyLCAxMTQsIDI0NCwgMiwgMTM0LCAyNDQsIDExNiwgMjEyLCAxMTQsIDI0NCwgMiwgMjQ0LCAxMSwgMjQ0LCAxMTYsIAotICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjE5LCAxMTUsIDIxMiwgMTE0LCAyNDQsIDIsIDI0NCwgODEsIDIxOSwgMTEzLCAKLSAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMzQsIDI0NSwgMTg2LCAyMTIsIAotICAgIDExNCwgMjQ0LCAyLCAyNDQsIDgxLCAyNDUsIDE4NiwgMjEyLCAxMTQsIDI0NCwgMiwgMjIwLCAxMjIsIDI0NSwgMTg2LCAKLSAgICAyNDQsIDIsIDIyNywgMTk3LCAxMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgCi0gICAgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTYxLCAyMjIsIDE5OCwgMjI3LCAxOTgsIAotICAgIDE4OSwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk4LCAyMjIsIDE5OCwgMjI3LCAKLSAgICAxOTgsIDE5NSwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMDAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDIyMiwgCi0gICAgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAKLSAgICAyNDQsIDExNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIAotICAgIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAKLSAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDQsIDIyMiwgMTk4LCAyMjcsIAotICAgIDE5OCwgMTYxLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE4OSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDQsIDIyMiwgCi0gICAgMTk4LCAyMjcsIDE5OCwgMTk4LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAKLSAgICAyMDAsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDQsIAotICAgIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNCwgNCwgMjIyLCAKLSAgICAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIDI0MCwgMjEwLCAKLSAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0OCwgCi0gICAgMjUxLCA2NywgMjQ5LCA2MCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDgxLCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgCi0gICAgMTk4LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjIzLCA0OSwgMTIzLCAyNDAsIDIxMCwgNywgCi0gICAgNCwgMSwgMjIzLCA0OSwgMjUxLCA2NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTksIDEyNSwgMjMzLCA3OCwgMTcsIDIyMiwgCi0gICAgMTk4LCAyMjcsIDE5OCwgMjQ0LCAxMTUsIDI0NSwgMjI2LCAxNywgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNSwgMjE2LCAKLSAgICAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyNDAsIDIxMSwgMjE2LCAxNDcsIDIxMiwgMTE0LCAyNDQsIDIsIDIxMCwgCi0gICAgODcsIDIxNiwgMTY2LCAxNDAsIDc0LCAyMTQsIDE1MywgNzQsIDk3LCA3NCwgMjQ2LCAxMDQsIDc0LCA0MywgNDQsIDc0LCAKLSAgICAxMjAsIDEyNCwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjE5LCAyOCwgMjQ1LCAKLSAgICAyMjAsIDc0LCAyMTksIDI4LCAyMTIsIDksIDc0LCAxNDAsIDgwLCAyLCA5MSwgOTcsIDgwLCAyLCA5MSwgMTQwLCAyMTIsIAotICAgIDM2LCA3NCwgOTcsIDIxMiwgMzYsIDc0LCAxNDAsIDExMywgMjQxLCAyMzQsIDc0LCAyMTQsIDE1MywgMTEzLCAyNDEsIDIzNCwgCi0gICAgNzQsIDk3LCAxMTMsIDI0MSwgMjM0LCA3NCwgMjQ2LCAxMDQsIDExMywgMjQxLCAyMzQsIDc0LCAxNDAsIDgwLCAyLCAyMTcsIAotICAgIDc3LCA5NywgODAsIDIsIDIxNywgNzcsIDE0MCwgODAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCA4MCwgMjQzLCAyNDMsIAotICAgIDEzMCwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgODAsIDI0MywgMjQzLCAxMzAsIDEyMCwgMTI0LCA4MCwgMiwgCi0gICAgMjUyLCAxMjcsIDE0MCwgODAsIDIsIDEwMywgOTcsIDgwLCAyLCAxMDMsIDE0MCwgODAsIDIsIDIzMiwgMTIzLCA5NywgODAsIAotICAgIDIsIDIzMiwgMTIzLCA0MywgNDQsIDIxMiwgMzYsIDc0LCA0MywgNDQsIDgwLCAyLCA5MSwgMjQ2LCAxMDQsIDIxMCwgMzUsIAotICAgIDc0LCAyMTQsIDE1MywgODAsIDIsIDIxNiwgNzcsIDIzMywgMzcsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3NywgMjIyLCAKLSAgICAyNDEsIDI0NiwgMTA0LCA4MCwgMiwgMjE2LCA3NywgMjMzLCAzNywgMjQ2LCAxMDQsIDgwLCAyLCAyMTYsIDc3LCAyMjIsIAotICAgIDI0MSwgOTcsIDgwLCAyLCAyNDksIDE2MSwgMjQ2LCAxMDMsIDI0NiwgMTA0LCA4MCwgMiwgMjQ5LCAxNjEsIDIzMywgMzcsIAotICAgIDI1NCwgODgsIDIxNiwgMTQsIDIyMCwgMTUzLCA3NCwgMjUwLCAyLCAyMTYsIDE0LCAyMjAsIDE1MywgNzQsIDIyOCwgNTYsIAotICAgIDIxMiwgOSwgODAsIDIxNiwgNDIsIDE5OSwgMTMwLCAxNDAsIDgwLCAyMTYsIDQyLCAyNTIsIDE0MSwgMTE3LCA5NywgODAsIAotICAgIDIxNiwgNDIsIDEzMCwgMjU0LCA4OCwgMjA0LCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyMDQsIDI1MCwgMzYsIDc0LCAxNDAsIAotICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjE0LCAxNTIsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgCi0gICAgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAKLSAgICAxMzksIDIzMywgMzcsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIxNCwgMTUyLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCi0gICAgMTM5LCAyNDYsIDEwMywgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDI0NiwgMTA0LCAyNDEsIAotICAgIDI1NSwgMiwgMjUyLCAxMzksIDIzMywgMzcsIDk3LCA4MCwgMTE3LCAxNDAsIDc0LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIAotICAgIDI0NiwgMTA0LCA3NCwgMTQwLCA4MCwgMTE3LCA5NywgNzQsIDE0MCwgMjI2LCA3MCwgMjUzLCAyNDcsIDIxNCwgMTUzLCAKLSAgICAyMjYsIDcwLCAyNTMsIDI0NywgOTcsIDIyNiwgNzAsIDI1MywgMjQ3LCAyNDYsIDEwNCwgMjI2LCA3MCwgMjUzLCAyNDcsIAotICAgIDE0MCwgMjQxLCAyNTUsIDExNywgOTcsIDI0MSwgMjU0LCA5NywgMjQxLCAyNTUsIDExNywgMTQwLCAyNDEsIDI1NCwgMTQwLCAKLSAgICA1MiwgODAsIDIsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgOTEsIDk3LCA1MiwgODAsIDIsIDkxLCAxNDAsIDUyLCA3NCwgCi0gICAgMjE0LCAxNTMsIDUyLCA3NCwgOTcsIDUyLCA3NCwgMjQ2LCAxMDQsIDUyLCA3NCwgNDMsIDQ0LCA1MiwgNzQsIDEyMCwgMTI0LCAKLSAgICA1MiwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNTIsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyNDUsIAotICAgIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyMTIsIDksIDUyLCA3NCwgMTQwLCAyMTUsIDIxMSwgNzQsIDk3LCAyMTUsIDIxMSwgCi0gICAgNzQsIDE0MCwgMjE4LCAyMzAsIDc0LCA5NywgMjE4LCAyMzAsIDc0LCAyMTQsIDE1MywgODAsIDIsIDUyLCA5MSwgMjQ2LCAKLSAgICAxMDQsIDgwLCAyLCA1MiwgOTEsIDE0MCwgMjQ4LCAxNTUsIDc0LCAyMTQsIDE1MywgMjQ4LCAxNTUsIDc0LCA5NywgMjQ4LCAKLSAgICAxNTUsIDc0LCAyNDYsIDEwNCwgMjQ4LCAxNTUsIDc0LCAxNDAsIDgwLCAyMTYsIDQyLCAxMzAsIDk3LCA4MCwgMjE2LCA0MiwgCi0gICAgMTMwLCAxNDAsIDcxLCA3NCwgMjE0LCAxNTMsIDcxLCA3NCwgOTcsIDcxLCA3NCwgMjQ2LCAxMDQsIDcxLCA3NCwgMjE0LCAKLSAgICAxNTMsIDcxLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAxOTcsIDIyNSwgMjE0LCAyMTQsIAotICAgIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgMjI1LCAyMTUsIDIsIDIwMywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgCi0gICAgMjI1LCAyMTUsIDIsIDY3LCAxMzAsIDIxNCwgMTUzLCA3MSwgNTIsIDc0LCAyMTQsIDE1MywgNzEsIDUyLCA4MCwgMjI2LCAKLSAgICAxOTcsIDIyNSwgMjE0LCA5NywgNzEsIDgwLCAyNDMsIDI0MywgMjEyLCA1NiwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjE2LCAKLSAgICA0MiwgMjQ5LCAxNjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgMjE2LCA0MiwgMjQ5LCAxNjAsIDEyMCwgMTI0LCA3MSwgNzQsIAotICAgIDQ0LCA4MCwgMiwgNCwgMjUwLCAzNSwgMjQ2LCAxMDQsIDgwLCAxNDAsIDY0LCAyMTQsIDE1MywgNzQsIDEzNCwgOTcsIDI1MywgCi0gICAgMjQ3LCAxNDAsIDgwLCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA2NywgOTEsIDE0MCwgCi0gICAgODAsIDIsIDUyLCA2NywgOTEsIDk3LCA4MCwgMiwgNTIsIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAKLSAgICAyMjYsIDE3MywgNzQsIDk3LCAyMjYsIDE3MywgNzQsIDQzLCA0NCwgMjI2LCAxNzMsIDc0LCAzMSwgMjU0LCAxNTQsIDI0OSwgCi0gICAgMjE0LCAyMjUsIDI1MywgMjQ3LCAyMzMsIDIxNiwgMTg3LCAyNDUsIDI3LCAyMTYsIDE4NywgMjQ3LCAxMzgsIDIyOCwgNTIsIAotICAgIDI0NSwgMjgsIDI0NSwgMTUyLCAyMjAsIDEyNywgMjM1LCAyNDUsIDIyOSwgMjIxLCAyNDUsIDE3MCwgMjI2LCAyMzEsIDIyOCwgCi0gICAgNTIsIDI1NCwgMTI0LCAyNDUsIDE3MCwgMjI2LCAyMzEsIDQsIDI0NSwgMTcwLCAyMjYsIDIzMSwgMjQ5LCAxODYsIDI1MywgCi0gICAgMjM4LCAyMzEsIDYyLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMzEsIDYyLCA0LCAyNDksIAotICAgIDE4NiwgMjUzLCAyMzgsIDIzMSwgNjIsIDI0NSwgMTQzLCA2NCwgMjI0LCAxNzIsIDIzMCwgMjQsIDIyNCwgMTgwLCAyMzAsIAotICAgIDI0LCAyNDksIDE2NSwgMjMwLCAyNCwgMjE4LCA0MCwgMjMwLCAxODIsIDUwLCAyMzAsIDE4MCwgNTAsIDU5LCAyMjUsIDIyLCAKLSAgICAyNDcsIDE2OSwgMjE5LCA5NSwgMjIwLCAxMjgsIDIzMCwgMTgxLCAyNTMsIDIxNywgMjI2LCAxNjcsIDIyMiwgMjM0LCAyMjYsIAotICAgIDE2NywgMjUxLCAxMTQsIDIyNiwgMTY3LCA0MiwgMjIyLCAxOTMsIDI0OSwgMTA5LCAyMjIsIDE5MywgMjQ0LCA0LCAyMjIsIAotICAgIDE5MywgMjI0LCAxNjgsIDExMSwgMjM1LCAyMzQsIDQ0LCAyNTQsIDEwOSwgMjU0LCAxMDksIDIzMSwgODgsIDI1NCwgMTA5LCAKLSAgICAyMTgsIDI1NSwgMjU0LCAxMDksIDI0NywgMTcxLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ3LCAxNzQsIDIyNiwgOCwgMTExLCAKLSAgICAyMjgsIDUyLCAyMjYsIDgsIDExMSwgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIzNSwgMTk4LCAKLSAgICAyMTQsIDE3NSwgMjM1LCAyMTEsIDUyLCAyMzUsIDIxMSwgMjE1LCAyMTEsIDIzNSwgMjExLCAyNDksIDE4MiwgMjM1LCAyMTEsIAotICAgIDIxOCwgMTMsIDIzNSwgMjExLCAyMTMsIDEyOSwgMjM1LCAyMTEsIDI1MCwgMiwgMjM1LCAyMTEsIDI1MCwgMiwgMjQ5LCAKLSAgICAxODIsIDIzNSwgMjExLCAyNTQsIDg4LCAyNDksIDE4MiwgMjM1LCAyMTEsIDIxNiwgMTg2LCAyNTIsIDY3LCAyMjMsIDEzNywgCi0gICAgMjI0LCAxNjksIDU5LCAyMzAsIDE4MSwgMjQ1LCAzMywgMjQzLCA0NiwgMjI0LCAxNjksIDI0MSwgNTcsIDIxNiwgODksIAotICAgIDIyNiwgMTY3LCAyMjMsIDQ5LCAxODIsIDIzNSwgMTkzLCAyMzMsIDY1LCAyMjIsIDkxLCAyMTksIDE1NywgMjEyLCAzNSwgCi0gICAgMjExLCAyMDAsIDIyNCwgMTgwLCAyMjgsIDUyLCAxODIsIDIzMCwgMTgyLCAxODIsIDI1MywgMjEwLCAxMjgsIDExMSwgMjI4LCAKLSAgICA1MiwgMjUzLCAyMTAsIDEyOCwgMTExLCAyNTQsIDQ4LCAxMjgsIDExMSwgMjU0LCA0OCwgMjUxLCA4OCwgMjI4LCA1MiwgCi0gICAgMjU1LCA0LCAxMjgsIDExMSwgMjI5LCAxMDAsIDI1NCwgNDgsIDIyOCwgNTksIDI1NSwgNCwgMTI4LCAxMTEsIDI1NCwgMTQ4LCAKLSAgICAxMjgsIDExMSwgMjI4LCA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCAyNTQsIDE0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyMTUsIAotICAgIDIxMSwgMTgyLCAyNTQsIDE1NSwgMTI4LCAxMTEsIDI0NSwgOTQsIDExMSwgMjQzLCA0NSwgMjQ1LCA5NCwgMTExLCAyNDcsIAotICAgIDIzNCwgMjUyLCAyMywgMjU0LCA1MCwgMjE2LCAxOTYsIDIzMiwgMjIxLCAyNDMsIDQ1LCAxMjgsIDExMSwgMjU0LCA0OCwgCi0gICAgMTI4LCAyMTYsIDQyLCAxNzcsIDIxNiwgMTk2LCAyMzYsIDE1LCAyMjYsIDIzMSwgMjM2LCAxNSwgNjQsIDE3NywgMjU0LCAKLSAgICA0OCwgMTI4LCAxMTEsIDI0OSwgMjI3LCAyNDUsIDk3LCAyNDUsIDk4LCAyNDksIDIyNiwgMjIyLCAyMzQsIDIzNiwgMCwgCi0gICAgMTI4LCAxMTEsIDIyMiwgMjM0LCAxMjgsIDExMSwgMjQ5LCAxNTQsIDExMSwgMjQ1LCA2NywgMjQ1LCA5NiwgMTExLCAyMTgsIAotICAgIDE1NywgMjQ1LCA5NywgMjQ4LCA1NSwgMTI4LCAxMTEsIDEyOCwgMjE2LCA0MiwgMjUxLCA3OCwgMjQ4LCA3MiwgMjMxLCA4OCwgCi0gICAgMjUxLCA3NywgMjI0LCAxMSwgMTI4LCAxMTEsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDAsIDEwNCwgMTExLCAyMjgsIDUyLCAKLSAgICAyNDAsIDEwNCwgMTExLCAyMTgsIDEwOSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDEyOCwgMTExLCAyNDIsIDEzMCwgCi0gICAgMTc3LCAxMjgsIDExMSwgMjMzLCAxNSwgMTE3LCAxMjgsIDExMSwgMjQyLCAxMzAsIDExNywgMTI4LCAxMTEsIDIzMywgMTUsIAotICAgIDI1MSwgODgsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDIsIDEzMCwgMjUxLCA4OCwgMjI4LCA1MiwgMTI4LCAxMTEsIDIzMCwgCi0gICAgOTcsIDIzMywgMTQsIDIzMCwgOTcsIDI0MiwgMTI5LCAyNTIsIDIzLCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIyOCwgNTIsIAotICAgIDIzMywgMTQsIDIyOCwgNTIsIDI0MiwgMTI5LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMTI4LCAxMTEsIDIyOSwgCi0gICAgMTAwLCAyNDIsIDEzMCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIzMywgMTUsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDIsIDEzMCwgCi0gICAgMTc3LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAKLSAgICAyNDIsIDEzMCwgMjI4LCA1OSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgMTc3LCAKLSAgICAyMzMsIDE0LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMjQyLCAxMjksIDIyOSwgMTAwLCAyNDIsIDEzMCwgMjI4LCAKLSAgICA1OSwgMjMzLCAxNCwgMjI0LCAyMDIsIDIxOCwgNTUsIDIyNCwgMjAzLCAxNzcsIDEyOCwgMTExLCAyMTgsIDU2LCAxNzcsIAotICAgIDEyOCwgMTExLCAyMjQsIDIwMywgMTc3LCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDcsIAotICAgIDEzOCwgMjI4LCA1MiwgMjI0LCAyMDUsIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU3LCAyMTgsIDY0LCAyMjYsIDIzMSwgCi0gICAgMjE4LCAyMiwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCA2NCwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCAKLSAgICAyMiwgMjI2LCAyMzEsIDIxOCwgNjQsIDY0LCAxNzcsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgMTc3LCAxMjgsIDExMSwgCi0gICAgMjI5LCAxMDAsIDExNSwgMjE4LCA2NCwgNjQsIDIyOCwgNTksIDEyOCwgMTExLCAyMjksIDEwMCwgMTE1LCAyMTgsIDIyLCAKLSAgICA2NCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIxOCwgNjQsIDY0LCAyLCAyMjgsIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDIsIAotICAgIDIyOCwgNTIsIDEyOCwgMTExLCAyMzAsIDgxLCAyMzAsIDgyLCAyMzAsIDgzLCAyMzAsIDgyLCAyMTQsIDE3NSwgNDIsIDIzNiwgCi0gICAgMTUsIDIyNiwgMjMxLCA0MiwgMjI2LCAxNTAsIDIyNiwgMjMxLCA0MiwgMjM2LCAxNSwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAKLSAgICAyMjYsIDE1MCwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAyNTAsIDI1MSwgNDIsIDI0OSwgMTAyLCAzNywgMjI1LCAyMiwgMzcsIAotICAgIDIzMCwgMTgxLCAzNywgMjE2LCA4NSwgMzcsIDI0NywgMTY5LCAyMTksIDk1LCAzNywgNTksIDIyNiwgMTY3LCAzNywgMjIyLCAKLSAgICAyMzQsIDIyNiwgMTY3LCAzNywgMjUzLCAyMTcsIDIyNiwgMTY3LCAzNywgMjQ1LCA5NywgMzcsIDI0OCwgMTU2LCA5MiwgCi0gICAgMjI1LCAyMiwgOTIsIDIzMCwgMTgxLCA5MiwgMjE2LCA4NSwgOTIsIDU5LCAyMjYsIDE2NywgNDQsIDIxNywgODcsIDQzLCAKLSAgICAyMTcsIDg3LCAxMjQsIDIxNywgODcsIDEyMCwgMjE3LCA4NywgMjUzLCAyMjAsIDIzMCwgMTU2LCAyMTUsIDE5MSwgMjQ0LCAKLSAgICAyNSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0NCwgMjE1LCAKLSAgICA5MywgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgMTYzLCAyMjgsIDUyLCAyMTUsIDE5MSwgMjQ3LCAxMzgsIDIyOCwgNTIsIAotICAgIDI0NCwgMjYsIDIyOSwgMTAyLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDQsIDIxNSwgOTMsIDIyNCwgMjAzLCAyMTQsIDE4NCwgCi0gICAgMjIzLCA5MSwgMjE4LCA1NiwgMjE0LCAxODQsIDIyMywgOTEsIDIyOCwgNTcsIDIxOCwgNzcsIDIyNiwgMjMxLCAyNDksIAotICAgIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTcsIDIxOCwgNzcsIDY0LCAxNzcsIDEyOCwgMTExLCAKLSAgICAyNDksIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzcsIDE3NywgMTI4LCAxMTEsIDIyNiwgMTUwLCAyMjYsIDIzMSwgCi0gICAgMjM2LCAxNSwgMjI2LCAyMzEsIDIzMCwgODcsIDI0MSwgMjAwLCAyNDksIDE5NiwgMjMxLCAxMzcsIDIzNSwgMjA4LCAyMTEsIAotICAgIDE0NSwgMjI5LCAyMDIsIDIyOCwgNTgsIDQ0LCAyNTQsIDExMCwgMiwgMjU0LCAyNSwgNDQsIDIxNSwgMjI1LCAyMzAsIDI0LCAKLSAgICAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMCwgMjQsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjMwLCAyNCwgMjM1LCAxOTgsIDIzMCwgCi0gICAgMjQsIDIxNCwgMTc1LCAyNDcsIDI0OSwgMjI2LCAxNjcsIDU5LCAyMjYsIDE2NywgMjE4LCAxNTcsIDIyNiwgMTY3LCAyNDcsIAotICAgIDE2OSwgMjE2LCA4NSwgMjUxLCAxNjQsIDQzLCAyMjgsIDU3LCAyNDQsIDE4MSwgMjIwLCAxNDksIDIyNCwgMTgwLCA0NCwgCi0gICAgMjI4LCA1NywgMjQ0LCAxODEsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDMsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDQsIDIyMCwgCi0gICAgMTQ5LCAyMjQsIDE4MCwgMjIzLCA0OSwgMjE2LCA4OSwgMjQ1LCA5NywgMjQ5LCA5OSwgMjMyLCAxNDYsIDIyNiwgMTU4LCAKLSAgICAyNDksIDk5LCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMTgsIDYzLCA1MiwgMjE4LCAyMSwgNTIsIDIzNSwgMTk4LCA1MiwgCi0gICAgMjE0LCAxNzUsIDIyNSwgNDcsIDEyOCwgMjIsIDIyNiwgOCwgMTExLCAyMzMsIDE1LCAyLCAyNDcsIDEyMCwgMjQyLCAxMzAsIAotICAgIDIsIDI0NywgMTIwLCAyMTMsIDE4NywgMjMwLCA5NywgMjMzLCAxNCwgMjEzLCAxODcsIDIzMCwgOTcsIDI0MiwgMTI5LCAKLSAgICAyMzMsIDE1LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDI0MiwgMTMwLCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAKLSAgICAxNCwgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMTI4LCAyMTYsIAotICAgIDQyLCAxNzcsIDIyNCwgMjAyLCAxMjgsIDIxNiwgNDIsIDE3NywgMjE4LCA1NSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgCi0gICAgMjA2LCAxNzcsIDI0NSwgOTksIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU4LCAxNzcsIDI0NSwgOTksIDIyOCwgNTIsIDQyLCAKLSAgICAyMzYsIDE1LCA2NCwgMTc3LCAxMjgsIDExMSwgMjI4LCA1MiwgNDIsIDIyNiwgMTUwLCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIAotICAgIDIzNiwgMTUsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgMTExLCA0MiwgMjI2LCAxNTAsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgCi0gICAgMTExLCAyMzMsIDE1LCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDI0MiwgMTMwLCAyNTEsIDg4LCAyMjgsIDUyLCAKLSAgICAyNDUsIDk0LCAxMTEsIDIyNCwgMjAzLCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDI1MSwgODgsIAotICAgIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjI4LCA1MiwgMjI4LCA1NywgMjE4LCA3NywgMjI2LCAyMzEsIDI0NywgMTM4LCAKLSAgICAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTIsIDIyOCwgNTcsIDIxOCwgNzcsIAotICAgIDY0LCAxNzcsIDEyOCwgMTExLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIAotICAgIDc3LCAxNzcsIDI0NSwgOTksIDY3LCAyNDUsIDE2MywgMjMwLCAyMjIsIDIwMywgMjQ1LCAxNjMsIDEyMCwgNDQsIDI0NywgCi0gICAgMjU1LCAyNDUsIDE2MywgMTI0LCA0NCwgMjQ3LCAyNTUsIDI0NSwgMTYzLCAyNDUsIDE3MCwgNjQsIDIsIDE5OSwgMjAzLCAKLSAgICA5MSwgMjQ1LCAxNzAsIDY0LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDQsIAotICAgIDI0NSwgMTcwLCA2NCwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCAyNDUsIDE3MCwgCi0gICAgNjQsIDIsIDU5LCA0OCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgNCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgCi0gICAgMjQ1LCAxNzAsIDY0LCAyLCAyMTQsIDE4MywgMjQ1LCAxNzAsIDY0LCAyLCAxMTMsIDIwMywgMjE4LCA5MCwgMjQ5LCAxODYsIAotICAgIDIsIDE5OSwgMjAzLCA5MSwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCAKLSAgICA5MSwgNCwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgMjQ5LCAKLSAgICAxODYsIDIsIDIyNiwgMTIzLCA0LCAyNDksIDE4NiwgMiwgMjI2LCAxMjMsIDIxMCwgMTYwLCAxODcsIDI1MiwgMTczLCAyMzEsIAotICAgIDYxLCAyNDcsIDI1MCwgNTAsIDI0NSwgMTcyLCA3NCwgMjQwLCAyMzQsIDEyMCwgMjUzLCAyNDksIDEyNCwgMjUzLCAyNDksIAotICAgIDIyNCwgMTc1LCAyMjUsIDE2NSwgMjEyLCAzMiwgMjMyLCAyMTMsIDQzLCAyNTAsIDE4MSwgNDQsIDI1MCwgMTgxLCA0MywgCi0gICAgMjQ0LCA1NywgNDQsIDI0NCwgNTcsIDI1MSwgMTc1LCA0NCwgMjQ5LCAxMzIsIDI1MSwgMTc1LCA0MywgMjQ5LCAxMzIsIAotICAgIDIxNiwgMTQsIDQ0LCAyNDksIDEzMiwgMjE2LCAxNCwgNDMsIDI0OSwgMTMyLCAyMjMsIDQ5LCAyMjgsIDUyLCA1MCwgNDIsIAotICAgIDIzMiwgMTA0LCAyNTQsIDI1LCAyMjEsIDE2NCwgMjIxLCAxNzEsIDIxNywgMSwgMjIzLCAxMjAsIDIyNCwgMjQxLCAyMzUsIAotICAgIDIzOCwgMjEzLCAxNjUsIDIxOCwgMjM0LCAyMjUsIDQxLCA2NCwgMjM1LCAyMDcsIDUwLCAyMTUsIDk0LCAyMjgsIDUyLCA1MCwgCi0gICAgMjEyLCA0MiwgMjQwLCAyMzYsIDIxNiwgMTQsIDQzLCAyNDksIDE2MCwgMjE2LCAxNCwgNDQsIDI0OSwgMTYwLCAyNTEsIAotICAgIDE3NSwgNDMsIDI0OSwgMTYwLCAyNTEsIDE3NSwgNDQsIDI0OSwgMTYwLCAyMTYsIDE0LCAxNjMsIDIzNSwgMjExLCAyNTEsIAotICAgIDE3NSwgMTYzLCAyMzUsIDIxMSwgMjQzLCAyNDAsIDIxOSwgNzUsIDEyMCwgMjUzLCAyNTAsIDI1MiwgMjQsIDExMywgMjAzLCAKLSAgICAyNTIsIDEyOSwgMjI2LCAxNjAsIDIzNCwgMTM4LCAyNDUsIDkwLCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDIxMSwgCi0gICAgMTc5LCAyMzYsIDAsIDExNSwgMjIzLCAxMTcsIDI1MSwgMTYzLCAyMzQsIDEzNywgMjMzLCA0MiwgMjU0LCAxMTAsIDEyNywgCi0gICAgMjIyLCAyNDcsIDI1NCwgMTEwLCAxMjcsIDI0NSwgOTAsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMzMsIDQ2LCAyNTIsIDM1LCAKLSAgICAyMjIsIDIzMywgMjQ5LCA3MCwgMjU0LCAxNTUsIDI1NCwgMSwgMjE3LCAxODEsIDIxNiwgNCwgMjIyLCAxMjMsIDI0NywgCi0gICAgMjE1LCAyMjYsIDE1MSwgMjQ5LCAxOTgsIDIxNywgNTIsIDIxOSwgODYsIDI0OSwgMTUxLCAyNDksIDE1MCwgMjU0LCA2NiwgCi0gICAgMjQzLCAyMjUsIDE2LCAyNDAsIDE1MSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTgsIDIyOCwgMjI0LCAyNywgMjU0LCAKLSAgICA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgCi0gICAgMTc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgMjQ4LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAotICAgIDIyNCwgMjgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjUwLCAzNSwgMjU0LCA2NiwgMjQzLCAKLSAgICAyMjUsIDE2LCAyNTAsIDM2LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyMzUsIDU2LCAyNTQsIAotICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIxOSwgOTYsIDEzMCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTIsIDE4MSwgMTMwLCAKLSAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIxOSwgOTUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCi0gICAgMjUyLCAxODAsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjMzLCAxNCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKLSAgICAyMjQsIDI4LCAyNDIsIDEyOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxNDAsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgCi0gICAgMjI1LCAxNiwgOTcsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMTQwLCA3NCwgMjU0LCA2NiwgCi0gICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCA5NywgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjUyLCAxODAsIAotICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKLSAgICAyNDgsIDU1LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAxMjQsIDI1MCwgMjM4LCAyNTQsIAotICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0OCwgNTQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAKLSAgICAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxNCwgMTUzLCAyMTQsIDE5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAotICAgIDIyNCwgMjgsIDIxNCwgMTUzLCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIyNiwgMTIzLCAKLSAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgNjYsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAotICAgIDEyMCwgMjUwLCAyMzgsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ4LCA2NSwgMjU0LCA2NiwgMjQzLCAKLSAgICAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ2LCAxMDQsIDIxNCwgMTksIAotICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ2LCAxMDQsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMywgCi0gICAgMjUzLCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIDU1LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAKLSAgICAyMjUsIDE2LCAyNDcsIDI0OSwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjM1LCA1NywgMjE0LCAxODMsIAotICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAKLSAgICAyMjAsIDUsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIzLCAyNTMsIDIyNCwgMjcsIDI1NCwgNjYsIDI0MywgCi0gICAgMjI1LCAxNiwgMjUwLCAzNiwgMjE4LCAxNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ5LCAyMjYsIAotICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAyMTcsIDg4LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCAKLSAgICA2NiwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxOCwgMTU3LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAKLSAgICAxNiwgMjM1LCA1NywgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDI0OCwgMSwgMjU0LCA2NiwgCi0gICAgMjQzLCAyMjUsIDE2LCAxMjQsIDIyMCwgNSwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgNDMsIDIyMCwgNSwgCi0gICAgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE2LCA4OSwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAotICAgIDI0MiwgMTMwLCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ5LCAyMjAsIDEzMCwgMjU0LCA2NiwgMjQzLCAKLSAgICAyMjUsIDE2LCAyNDgsIDY2LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjEwLCAzNCwgMjU0LCA2NiwgMjQzLCAyMjUsIAotICAgIDE2LCAyMTgsIDEzNiwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMCwgMTUxLCAyMTQsIDE4MywgMjU0LCA2NiwgCi0gICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMjgsIDUyLCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAotICAgIDIyNCwgMTIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyNTAsIDIzOSwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgCi0gICAgMTYsIDEyMCwgMjUwLCAyMzksIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMzUsIDE4NSwgMjU0LCA2NiwgMjQzLCAKLSAgICAyMjUsIDE2LCAyMjMsIDM3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAotICAgIDI1NCwgMTQ0LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDUsIDEwMSwgMjE0LCAxODMsIDI1NCwgNjYsIAotICAgIDI0MywgMjI1LCAxNiwgMjM1LCAxODYsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAyLCAyMTQsIAotICAgIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTQsIDE0MywgMjI4LCA1MiwgMjUwLCAxMzAsIDc4LCA0NCwgMjU0LCAKLSAgICAxMTAsIDIsIDI0NiwgMTA0LCAyMTAsIDM1LCA3NCwgMjE5LCAyMzUsIDIwNCwgMjUxLCAxNjMsIDI1MiwgNDUsIDg3LCA2NywgCi0gICAgMjMyLCAyMTQsIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM1LCAyMTYsIDg3LCAyNDksIDE4MywgMjE0LCAxODEsIDg3LCAKLSAgICAyNDcsIDE4OSwgMjE0LCAxODEsIDg3LCAyNDUsIDE1NCwgODcsIDI0OSwgMjEwLCA4NywgNzEsIDQyLCAyLCAyNTAsIDE3NSwgCi0gICAgNjcsIDIzMiwgMjEzLCAyNDUsIDEzMCwgODcsIDI1NCwgMTM5LCAyMzQsIDEzOSwgODcsIDI0MSwgMjEzLCA4NywgMzcsIAotICAgIDIwMywgMjUyLCAxNDEsIDIsIDIyOCwgNTAsIDM3LCAyMTUsIDIyNiwgMjQ2LCAxMDYsIDI1MSwgMTM1LCAyNTAsIDM2LCAyLCAKLSAgICAyMjgsIDU0LCA3NCwgMjE0LCAxNzksIDg3LCAyMzAsIDEzNywgODcsIDI0MCwgMTY0LCA4NywgMjI2LCAxNzQsIDI0MiwgNTksIAotICAgIDg3LCAyMjYsIDE3NCwgMjMzLCAxNDcsIDg3LCAyMjUsIDI0NCwgODcsIDIyNSwgMjQzLCA4NywgMjQ3LCAxOTcsIDI0OSwgCi0gICAgOTcsIDE2LCAyNDQsIDIwLCAxMDUsIDIxOSwgNTAsIDg3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjcsIDI0OCwgCi0gICAgODMsIDIyMCwgMTM4LCAyMzQsIDEzOSwgODcsIDIyNCwgMTkyLCAyMjYsIDc1LCAyMjksIDgyLCAyMjYsIDc1LCAyMjQsIAotICAgIDE4OCwgMjIxLCAxODksIDg3LCAyNTAsIDE3LCAyMjEsIDE4OSwgODcsIDQzLCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIDQzLCAKLSAgICAyMjYsIDQsIDI0NSwgMjEsIDQzLCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQ0LCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIAotICAgIDQ0LCAyMjYsIDQsIDI0NSwgMjEsIDQ0LCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQzLCA0MiwgMjUxLCAxNTgsIDIxNCwgCi0gICAgMTYwLCAyNDksIDE2MCwgNDMsIDQyLCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDMsIDQyLCAyNTEsIDE1OCwgMjMyLCAxMDgsIAotICAgIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyMTQsIDE2MCwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDI0NSwgCi0gICAgMjEsIDQ0LCA0MiwgMjUxLCAxNTgsIDIzMiwgMTA4LCAyNDksIDE2MCwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMTQsIAotICAgIDE2MCwgMTAzLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDMsIDI0OSwgOTksIDI1MSwgCi0gICAgMTU4LCAyMzIsIDEwOCwgMTAzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAKLSAgICAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDQsIDI0OSwgOTksIAotICAgIDI1MSwgMTU4LCAyMzIsIDEwOCwgMTAzLCAyMzUsIDIxMiwgMjQ1LCAyMSwgMjAzLCAyMzIsIDIxNCwgMjQ1LCAyMSwgMjE0LCAKLSAgICAxNjAsIDQzLCAxNzcsIDIzMiwgMTA4LCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyMSwgMTcyLCAyMTQsIDE2MCwgNDQsIAotICAgIDE3NywgMjMyLCAxMDgsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjIxLCAxNzIsIDIxOCwgNDEsIDIxNiwgMTMsIDIxOCwgCi0gICAgNDEsIDI1MSwgMTc0LCAyMTYsIDE0LCA0MiwgMTI3LCAyNTEsIDE3NSwgNDIsIDEyNywgMjUxLCAxNzUsIDQyLCAyNTEsIAotICAgIDE1OCwgMTE3LCAyMTYsIDE0LCA0MiwgMTI3LCAzNCwgMTYsIDI1MSwgMTc0LCA0MywgNjcsIDkzLCAyMzIsIDIxMywgNDQsIAotICAgIDY3LCA5MywgMjMyLCAyMTMsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjEyLCAyMDMsIDIyMSwgMjA1LCAyMzIsIDIxMSwgMjAzLCAKLSAgICAyMjEsIDIwNSwgMjMyLCAyMTAsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjA5LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIAotICAgIDIxNiwgMTQsIDIyMiwgMjUxLCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIDI1MSwgMTc1LCAyMjIsIDI1MSwgMjQ4LCA0NiwgCi0gICAgMTYsIDE5MiwgNjcsIDIsIDI1MCwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjUwLCAzNSwgMjQ4LCAKLSAgICA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjAzLCAyLCAyNTAsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMiwgMjE1LCAyMjUsIAotICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIAotICAgIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjEyLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgCi0gICAgMTI0LCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDIxMiwgMzUsIAotICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDI0MSwgNDQsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDI0MSwgNDQsIAotICAgIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjE2LCAxNCwgMjMzLCA0NiwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAKLSAgICAyNTEsIDE3NSwgMjMzLCA0NiwgNDIsIDI0NCwgMzIsIDIyMywgNTQsIDg3LCAyNDUsIDE4MiwgODcsIDY3LCAyMzIsIDIxNCwgCi0gICAgMjQ1LCAyMSwgMjMxLCAzMywgMjUxLCAxNDYsIDIzMSwgMzMsIDE5OSwgMTE3LCAyMTksIDI1MCwgMjMxLCAzMywgMjE5LCAKLSAgICAyNTEsIDExNywgMjMyLCAxMzcsIDIzMSwgMzMsIDE5OSwgMTE3LCAxMTMsIDIxOSwgMjM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgCi0gICAgMjM4LCAxMTcsIDIzMiwgMTM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgMjM4LCAyMzUsIDY0LCAyMzEsIDMzLCAyMTUsIDIwOCwgCi0gICAgMjMxLCAzMywgMjE2LCAyMjMsIDIzMSwgMzMsIDIyNSwgMTg4LCAyNDUsIDIyNCwgMjQyLCAxMjIsIDI0MywgMjE5LCAyMTYsIAotICAgIDE0LCAyMjYsIDMsIDI1MSwgMTc1LCAyMjYsIDMsIDIxNiwgMTQsIDI0OSwgOTksIDEyNywgMjUxLCAxNzUsIDI0OSwgOTksIAotICAgIDEyNywgMjE2LCAxNCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI1MSwgMTc1LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNzEsIAotICAgIDIxNSwgMjM5LCAyNTIsIDM1LCAyMjIsIDIzNCwgMiwgMjUwLCAzNSwgMjE4LCAxMjAsIDI0NCwgNjQsIDI1NSwgMTcsIDI0OSwgCi0gICAgOTYsIDI0NSwgMTcxLCAyMzUsIDE5OCwgMjQ4LCA4MywgMjQ1LCAyNCwgODcsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI1LCAKLSAgICA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjIsIDUyLCAyMTUsIDIyNSwgODUsIDI0NiwgMTA1LCA1MiwgCi0gICAgMjE1LCAyMjUsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgCi0gICAgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjIyLCAyNDcsIDIxNSwgMjI2LCAyLCA1MiwgNjcsIDEzMCwgMjU0LCAxNzMsIDI1MCwgCi0gICAgMywgMjE4LCAxMjYsIDIxNiwgODYsIDI1MCwgMywgMjQwLCAyMzcsIDIsIDI0NCwgNTAsIDIyMSwgMjQxLCAxNiwgMzEsIAotICAgIDIyNywgMjAyLCAxNiwgMzEsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDE2LCAzMSwgMjE4LCAxNTIsIDY0LCAyMTYsIDIxMiwgCi0gICAgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNiwgMjEyLCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDMsIDE2LCAzMSwgCi0gICAgMjQ1LCAxMzIsIDE2LCAzMSwgMjU1LCA3LCAxNiwgMzEsIDI1MiwgNDQsIDE2LCAzMSwgMjUyLCAxNzksIDE2LCAzMSwgMjAzLCAKLSAgICAyMTcsIDg5LCAxNiwgMzEsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTYsIDMxLCA2NywgMjE3LCA4OSwgMTYsIDMxLCAyNDQsIAotICAgIDIwLCAyNDQsIDE0NSwgMTYsIDMxLCAyNTAsIDIzMCwgMjIzLCA1MywgMTYsIDMxLCAyMjAsIDI4LCAyMjYsIDEzMCwgMTYsIAotICAgIDMxLCAyMjAsIDI4LCAyMzUsIDI1NSwgMTYsIDMxLCAyNDgsIDE1MSwgMjMyLCAyMDQsIDI0NSwgNzcsIDE2LCAzMSwgMjQ4LCAKLSAgICAzMSwgMjQ5LCAxNzgsIDExMCwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIDE3OCwgMTA1LCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgCi0gICAgMTc4LCAxNTgsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDE2MSwgMTYsIDMxLCAxNTIsIDI1NSwgNywgMTYsIDMxLCAKLSAgICAyMTcsIDE3NywgMjM2LCA2MiwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMTYsIDMxLCAyNTEsIAotICAgIDUsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMzEsIDgxLCAxNiwgMzEsIDIxOCwgNjEsIDE2LCAzMSwgMjQ1LCA3NywgMTYsIAotICAgIDMxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDE2LCAzMSwgMjQyLCAxMjEsIDIyMCwgMTM3LCAxNiwgMzEsIDIyMywgMTIxLCAKLSAgICAyMjAsIDEzNywgMTYsIDMxLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDE2LCAzMSwgMjE5LCAxOCwgMTYsIDMxLCAyNDgsIDYzLCAKLSAgICAyNTEsIDIxNiwgODcsIDIwNCwgMjUxLCAxNjMsIDE2LCAzMSwgMjI5LCA4NSwgMTYsIDMxLCAyNDgsIDY0LCAyNDQsIDIwLCAKLSAgICAxMDUsIDE2LCAzMSwgMjE4LCA2MiwgMjQ0LCAyMCwgMTA1LCAyMjYsIDI0MSwgMTAzLCAyMjYsIDI0MSwgMjUwLCAxNTIsIAotICAgIDIyNiwgMjQxLCAyNDQsIDIzLCAyMjYsIDI0MSwgMjM1LCAxOTMsIDI0NCwgMjMsIDIyNiwgMjQxLCAyNTIsIDQyLCAyNTEsIAotICAgIDEyNCwgMjI2LCAyNDEsIDI1MSwgMTcwLCAyMTYsIDExMSwgMjI2LCAyNDEsIDI1MSwgMTU1LCAyNTIsIDE0NiwgMjQwLCAKLSAgICAxMDMsIDIyNiwgMjQxLCAyNTQsIDEyNywgNjQsIDI1MCwgMTI5LCAyMjYsIDI0MSwgMjQ4LCAxNTYsIDIyNiwgMjQxLCAyNDksIAotICAgIDg3LCAyNTUsIDExLCAyMjcsIDIwMCwgMjI2LCAyNDEsIDUyLCAyNTIsIDE4MCwgMzcsIDIxLCAxMTAsIDM3LCAyMSwgMTA1LCAKLSAgICAzNywgMjEsIDE1OCwgMzcsIDIxLCAxNjEsIDM3LCAyMSwgMTg5LCAzNywgMjEsIDE5NCwgMzcsIDIxLCAxOTgsIDM3LCAyMSwgCi0gICAgMTk1LCAzNywgMjEsIDIwMCwgMzcsIDU0LCAyMTYsIDI0NywgMzcsIDU0LCAyNDUsIDE2NywgMzcsIDU0LCAyMTUsIDc2LCAKLSAgICAzNywgNTQsIDIxNiwgMTY0LCAzNywgNTQsIDI0NCwgNSwgMzcsIDU0LCAyNDQsIDExOCwgMzcsIDU0LCAyMTksIDExOSwgMzcsIAotICAgIDU0LCAyMjAsIDExOSwgMzcsIDU0LCAyNDUsIDE5MCwgMzcsIDU0LCAyMjgsIDE5NywgMzcsIDU0LCAyMTUsIDczLCA4OCwgCi0gICAgMjEsIDExMCwgODgsIDIxLCAxMDUsIDg4LCAyMSwgMTU4LCA4OCwgMjEsIDE2MSwgODgsIDIxLCAxODksIDg4LCAyMSwgMTk0LCAKLSAgICA4OCwgMjEsIDE5OCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMjAwLCA4OCwgNTQsIDIxNiwgMjQ3LCA4OCwgNTQsIDI0NSwgCi0gICAgMTY3LCA4OCwgNTQsIDIxNSwgNzYsIDg4LCA1NCwgMjE2LCAxNjQsIDg4LCA1NCwgMjQ0LCA1LCA4OCwgNTQsIDI0NCwgMTE4LCAKLSAgICA4OCwgNTQsIDIxOSwgMTE5LCA4OCwgNTQsIDIyMCwgMTE5LCA4OCwgNTQsIDI0NSwgMTkwLCA4OCwgNTQsIDIyOCwgMTk3LCAKLSAgICA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDExMywgMjQzLCAyMjksIDIxOCwgCi0gICAgMTI5LCAyMSwgMTM0LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyNDQsIDExLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAKLSAgICAyNDQsIDgxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMTksIDEyNSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjIwLCAKLSAgICAxMjIsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDI0NSwgMTkzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMjgsIDIwMCwgCi0gICAgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjE2LCAyNDgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDI0NSwgMTY4LCAyNDMsIAotICAgIDIyOSwgMjE4LCAxMjksIDU0LCAyMTUsIDc3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMTYsIDE2NSwgMjQzLCAyMjksIAotICAgIDIxOCwgMTI5LCA1NCwgMjQ0LCA2LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyNDQsIDExOSwgMjQzLCAyMjksIDIxOCwgCi0gICAgMTI5LCA1NCwgMjE5LCAxMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIyMCwgMTIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIAotICAgIDU0LCAyNDUsIDE5MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjI4LCAxOTgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIAotICAgIDIxNSwgNzQsIDI0MywgMjI5LCAyMTgsIDEyOSwgODgsIDcsIDQsIDEsIDYxLCA4OCwgNywgNCwgMSwgMjUzLCAxNTgsIDg4LCAKLSAgICA3LCA0LCAxLCAyNTEsIDY2LCA4OCwgNywgNCwgMSwgMjQ5LCA2MCwgODgsIDcsIDQsIDEsIDc1LCA4OCwgNywgNCwgMSwgCi0gICAgMjQ1LCA2LCA4OCwgNywgNCwgMSwgMjQzLCAyMDIsIDg4LCA3LCA0LCAxLCAyNDIsIDYwLCA4OCwgNywgNCwgMSwgNzMsIDg4LCAKLSAgICA3LCA0LCAxLCAyMzUsIDE0NCwgODgsIDcsIDQsIDEsIDIzNSwgMjMsIDg4LCA3LCA0LCAxLCAxNTYsIDg4LCA3LCA0LCAxLCAKLSAgICAxOTMsIDg4LCA3LCA0LCAxLCAyMzAsIDI1LCA4OCwgNywgNCwgMSwgNzYsIDg4LCA3LCA0LCAxLCAyMjYsIDEwNSwgODgsIDcsIAotICAgIDQsIDEsIDIyNCwgOTYsIDg4LCA3LCA0LCAxLCAxNTMsIDg4LCA3LCA0LCAxLCAyMjIsIDkxLCA4OCwgNywgNCwgMSwgMjE3LCAKLSAgICAxNTIsIDg4LCA3LCA0LCAxLCA3MCwgODgsIDcsIDQsIDEsIDIxNCwgMTA1LCA4OCwgNywgNCwgMSwgMjEyLCA5OCwgODgsIDcsIAotICAgIDQsIDEsIDIxMSwgMTc4LCA4OCwgNywgNCwgMSwgMjExLCAxMTcsIDg4LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDYsIAotICAgIDEsIDYxLCAzNywgNywgNiwgMSwgMjUzLCAxNTgsIDM3LCA3LCA2LCAxLCAyNTEsIDY2LCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgCi0gICAgMzcsIDcsIDYsIDEsIDc1LCAzNywgNywgNiwgMSwgMjQ1LCA2LCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDM3LCA3LCA2LCAxLCAKLSAgICAyNDIsIDYwLCAzNywgNywgNiwgMSwgNzMsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgMzcsIDcsIDYsIDEsIDIzNSwgMjMsIAotICAgIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTMsIDM3LCA3LCA2LCAxLCAyMzAsIDI1LCAzNywgNywgNiwgMSwgCi0gICAgNzYsIDM3LCA3LCA2LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDYsIDEsIDIyNCwgOTYsIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCAKLSAgICA2LCAxLCAyMjIsIDkxLCAzNywgNywgNiwgMSwgMjE3LCAxNTIsIDM3LCA3LCA2LCAxLCA3MCwgMzcsIDcsIDYsIDEsIDIxNCwgCi0gICAgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIAotICAgIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgNywgNCwgMSwgMjUzLCAxNTgsIDM3LCA3LCA0LCAKLSAgICAxLCAyNTEsIDY2LCAzNywgNywgNCwgMSwgMjQ5LCA2MCwgMzcsIDcsIDQsIDEsIDc1LCAzNywgNywgNCwgMSwgMjQ1LCA2LCAKLSAgICAzNywgNywgNCwgMSwgMjQzLCAyMDIsIDM3LCA3LCA0LCAxLCAyNDIsIDYwLCAzNywgNywgNCwgMSwgNzMsIDM3LCA3LCA0LCAKLSAgICAxLCAyMzUsIDE0NCwgMzcsIDcsIDQsIDEsIDIzNSwgMjMsIDM3LCA3LCA0LCAxLCAxNTYsIDM3LCA3LCA0LCAxLCAxOTMsIAotICAgIDM3LCA3LCA0LCAxLCAyMzAsIDI1LCAzNywgNywgNCwgMSwgNzYsIDM3LCA3LCA0LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDQsIAotICAgIDEsIDIyNCwgOTYsIDM3LCA3LCA0LCAxLCAxNTMsIDM3LCA3LCA0LCAxLCAyMjIsIDkxLCAzNywgNywgNCwgMSwgMjE3LCAKLSAgICAxNTIsIDM3LCA3LCA0LCAxLCA3MCwgMzcsIDcsIDQsIDEsIDIxNCwgMTA1LCAzNywgNywgNCwgMSwgMjEyLCA5OCwgMzcsIDcsIAotICAgIDQsIDEsIDIxMSwgMTc4LCAzNywgNywgNCwgMSwgMjExLCAxMTcsIDM3LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDIxLCAKLSAgICAyMTAsIDg2LCAxNTIsIDM3LCA1NCwgMjQ1LCAxNjcsIDE1MiwgMzcsIDU0LCAyMTUsIDc2LCAxNTIsIDM3LCA1NCwgMjE2LCAKLSAgICAxNjQsIDE1MiwgMzcsIDU0LCAyNDQsIDUsIDE1MiwgMzcsIDU0LCAyNDQsIDExOCwgMTUyLCAzNywgNTQsIDIxOSwgMTE5LCAKLSAgICAxNTIsIDM3LCA1NCwgMjIwLCAxMTksIDE1MiwgMzcsIDU0LCAyNDUsIDE5MCwgMTUyLCAzNywgNTQsIDIyOCwgMTk3LCAxNTIsIAotICAgIDM3LCA1NCwgMjE1LCA3MywgNTIsIDM3LCAyMSwgMTEwLCA1MiwgMzcsIDIxLCAxMDUsIDUyLCAzNywgMjEsIDE1OCwgNTIsIAotICAgIDM3LCAyMSwgMTYxLCA1MiwgMzcsIDIxLCAxODksIDUyLCAzNywgMjEsIDE5NCwgNTIsIDM3LCAyMSwgMTk4LCA1MiwgMzcsIAotICAgIDIxLCAxOTUsIDUyLCAzNywgMjEsIDIwMCwgNTIsIDM3LCA1NCwgMjE2LCAyNDcsIDE1MiwgMzcsIDIxLCAyMTAsIDg2LCA5MywgCi0gICAgOTksIDE5MiwgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMTMsIDIzOSwgOTMsIDk5LCAKLSAgICAxMTQsIDIxMywgMjM5LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDExNCwgCi0gICAgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyMTMsIDIzOSwgCi0gICAgOTMsIDk5LCAxMTQsIDIxNSwgMjExLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgMTkyLCAyMjQsIDI0LCAyNDgsIAotICAgIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDIyNCwgMjQsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjI0LCAKLSAgICAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjI0LCAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIAotICAgIDE5MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAKLSAgICAxMTQsIDIyLCA0NCwgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyNCwgCi0gICAgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAKLSAgICA0MywgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMjIyLCAKLSAgICAyNTEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMjMyLCAKLSAgICAyMzAsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDIzMywgNDYsIDkzLCAKLSAgICA5OSwgMTIwLCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0MywgMjMyLCAyMzAsIDkzLCAKLSAgICA5OSwgMTE0LCAxMjAsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCA2NywgCi0gICAgMTkyLCAyMiwgNDQsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgCi0gICAgMTI0LCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTE0LCAyMiwgNDQsIDIzMiwgMjMwLCA5MywgCi0gICAgOTksIDEyNCwgMTkyLCAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMTI0LCAyNDEsIAotICAgIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgCi0gICAgNjcsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgCi0gICAgOTksIDEyNCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDQzLCAyMzIsIDIzMCwgCi0gICAgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQzLCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDMsIDEyNCwgCi0gICAgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAxMjQsIDIyLCAyNDEsIDQ0LCAKLSAgICA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDEyNCwgCi0gICAgMjMyLCAyMzAsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMjAzLCAKLSAgICAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDEyNCwgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIAotICAgIDQ0LCAxMjQsIDI0MSwgMjIxLCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIAotICAgIDI0MSwgNDQsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCA0MywgCi0gICAgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAKLSAgICAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAKLSAgICAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNjcsIAotICAgIDIyLCAyNDEsIDQ0LCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgNjcsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCAKLSAgICA0MywgNjcsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAKLSAgICAyMiwgMTI0LCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMTIwLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIAotICAgIDY3LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCAKLSAgICA5MywgOTksIDQ0LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjQsIDExNCwgMjIsIAotICAgIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIAotICAgIDEyNCwgMTkyLCAyMiwgMTIwLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgMTI0LCAyMDMsIDI0MSwgCi0gICAgMjIxLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgNjcsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIDIyLCA0NCwgNjcsIAotICAgIDI0MSwgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyNDEsIAotICAgIDQ0LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyMTMsIAotICAgIDIzOSwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgNTIsIDI0MSwgNDQsIDkzLCA5OSwgCi0gICAgNTIsIDIxMywgMjM5LCA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgCi0gICAgMjIsIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgCi0gICAgMjIsIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAKLSAgICAyMzMsIDQ2LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIAotICAgIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIAotICAgIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAKLSAgICAyMzMsIDQ2LCA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCA0NCwgCi0gICAgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgNDMsIAotICAgIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDQzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMzMsIDQ2LCAKLSAgICA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIDIyLCAyMDMsIDIxOSwgCi0gICAgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgCi0gICAgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCAyMDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyNDEsIDQ0LCAKLSAgICA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgMjAzLCAyMTksIAotICAgIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTI0LCAyMiwgMjIyLCAKLSAgICAyNTEsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTIwLCAKLSAgICAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMjQ3LCAKLSAgICAyNTUsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MiwgMjMyLCAxMDgsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgCi0gICAgMjE0LCAxNjAsIDQzLCAyMTYsIDQyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgMjQ5LCAKLSAgICAxMzAsIDkzLCA5OSwgMTkyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjE0LCAxNjMsIDkzLCA5OSwgMTkyLCAyMjIsIDI1MSwgCi0gICAgOTMsIDk5LCAxOTIsIDI0NiwgMTA2LCA5MywgOTksIDExNCwgMjMzLCA0NiwgOTMsIDk5LCAxMTQsIDIxNCwgMTYzLCA5MywgCi0gICAgOTksIDExNCwgMjIyLCAyNTEsIDkzLCA5OSwgMTE0LCAyNDYsIDEwNiwgOTMsIDk5LCAxOTIsIDQzLCAyMiwgMTE0LCAyMjIsIAotICAgIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDExNCwgMjQ2LCAxMDYsIDkzLCA5OSwgMTE0LCA0MywgMjIsIDE5MiwgMjIyLCAKLSAgICAyNTEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAxOTIsIDI0NiwgMTA2LCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIxMywgMjMyLCAKLSAgICAxMDgsIDEyMywgMjQ1LCAxODksIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTIzLCAyMjQsIDIyLCAyNTEsIDIxMywgMjMyLCAxMDgsIAotICAgIDEzNCwgMjQ1LCAxODcsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTYzLCAyNTEsIDIxMywgMjMyLCAxMDgsIDI0NCwgODEsIDI0NSwgCi0gICAgMTg3LCAyNTEsIDIxMywgMjMyLCAxMDgsIDEzNCwgMjI0LCAyMCwgMjUxLCAyMTMsIDIzMiwgMTA4LCAyMjAsIDEyMiwgMjQ1LCAKLSAgICAxODcsIDI1MSwgMjEzLCAyNDMsIDIyOSwgMjUxLCAyMTMsIDQzLCAyMjAsIDEyMiwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgCi0gICAgMTM0LCAyMjQsIDIwLCAyNTEsIDIxMywgNDMsIDI0NCwgODEsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDE2MywgMjUxLCAKLSAgICAyMTMsIDQzLCAxMzQsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDEyMywgMjI0LCAyMiwgMjUxLCAyMTMsIDQzLCAxMjMsIAotICAgIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDE2MywgMjUxLCAyMTMsIDE5MiwgMjIwLCA5MiwgMjMxLCA4MiwgMjIwLCA5MiwgCi0gICAgMjQ4LCAxNjIsIDIyMCwgOTIsIDIxNCwgMTYwLCAxMjMsIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDEyMywgMjQ1LCAxODksIAotICAgIDI1MSwgMjEzLCAyMjQsIDI2LCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjMyLCAxMDgsIDIyMiwgMjUxLCAyMjQsIAotICAgIDI2LCAyMTQsIDE2MCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAxMDgsIDQzLCAyMiwgMjMyLCAKLSAgICAxMDgsIDIyMiwgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgNDMsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIAotICAgIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgCi0gICAgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCAyMjIsIAotICAgIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCA0NCwgCi0gICAgMjIsIDIzMiwgMTA4LCA0MywgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgODUsIDIxOCwgMjM0LCA3MSwgMjE4LCAyMzQsIDcxLCAKLSAgICA0MiwgMiwgMjIyLCAxODMsIDI0OSwgMTU5LCA3MSwgNDIsIDI0OSwgMTg3LCA4NSwgNCwgMjE4LCAyMzQsIDQyLCAyLCAyMDMsIAotICAgIDI0NCwgMTA1LCA0MiwgMiwgNjcsIDI0NCwgMTA1LCA0MiwgMiwgMjI2LCAxNDQsIDI0OSwgMTI2LCAyNDQsIDEwNSwgNDIsIAotICAgIDIsIDIxNCwgMTYwLCA0MywgMjE2LCA0MiwgMjMyLCAxMDgsIDQ0LCAyNDQsIDEwNSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgCi0gICAgMjE2LCA0MiwgMjMyLCAxMDgsIDQzLCAyNDQsIDEwNSwgNDIsIDIsIDI0NywgMjU1LCAyNDksIDEyNiwgMjQ0LCAxMDUsIDg1LCAKLSAgICA0LCAyMTgsIDIzNCwgNzEsIDQsIDIxOCwgMjM0LCA4NSwgMjIzLCAxMTYsIDcxLCAyMjMsIDExNiwgODUsIDY3LCAyMjMsIAotICAgIDExNiwgNzEsIDY3LCAyMjMsIDExNiwgODUsIDIyNiwgNiwgNzEsIDIyNiwgNiwgODUsIDIxNCwgMTYyLCAyMTUsIDIyNSwgCi0gICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYyLCA0LCAyMTUsIDIyNSwgNzEsIDIxNCwgMTYyLCA0LCAyMTUsIAotICAgIDIyNSwgODUsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCA0LCAKLSAgICAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCA0LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCAyMjUsIDgsIDcxLCAyMjIsIDI0NywgCi0gICAgMjI1LCA4LCA4NSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA4NSwgMjQ2LCAxMDUsIDQsIAotICAgIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDQsIDIxNSwgMjI1LCA4NSwgMjMzLCA0MiwgMjE1LCAyMjUsIDcxLCAyMzMsIDQyLCAKLSAgICAyMTUsIDIyNSwgODUsIDIzMywgNDIsIDQsIDIxNSwgMjI1LCA3MSwgMjMzLCA0MiwgNCwgMjE1LCAyMjUsIDg1LCAyMzMsIAotICAgIDQyLCAyMjUsIDgsIDcxLCAyMzMsIDQyLCAyMjUsIDgsIDg1LCAyNDcsIDI0OCwgNzEsIDI0NywgMjQ4LCA3MSwgMjQ3LCAKLSAgICAyNDksIDI0OSwgMTg3LCA4NSwgNCwgMjQ3LCAyNDgsIDI0NCwgODksIDIzMiwgMTA0LCA3MSwgMjUwLCAzNSwgMjQ2LCAxMTgsIAotICAgIDI1MCwgMzUsIDI1MCwgMzYsIDIsIDY3LCAyNDQsIDEwNSwgMjUxLCAxMTEsIDg1LCAyNTAsIDM1LCAyNTAsIDM2LCAyLCA0MywgCi0gICAgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIzMiwgMTA4LCAxNjMsIAotICAgIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAKLSAgICAyMjQsIDI2LCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjU0LCAxNTUsIDI1MSwgODgsIDIxNCwgMTYwLCA0MywgMjI0LCAyNiwgCi0gICAgMjUxLCAyMjEsIDQzLCAxNjMsIDg1LCAyNTAsIDM1LCA0NCwgMTYzLCA4NSwgMjUwLCAzNSwgMjM1LCAxOTQsIDI1MSwgMTEzLCAKLSAgICAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIxNCwgMTYwLCAxNjMsIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjMyLCAxMDgsIAotICAgIDE2MywgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgCi0gICAgMTYwLCA0NCwgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIAotICAgIDI1LCAyMzIsIDEwOCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgMTYwLCAxNjMsIDI1MCwgMzUsIDIzMiwgCi0gICAgMTA4LCAxNjMsIDI1MCwgMzUsIDg1LCAyMzIsIDEwOCwgNDQsIDIxNSwgMjI1LCA4NSwgMjMyLCAxMDgsIDQzLCAyMTUsIAotICAgIDIyNSwgODUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI1LCA3MSwgMjUxLCAKLSAgICAxMTMsIDQyLCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjE0LCAxNjAsIAotICAgIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIzMiwgMTA4LCA0NCwgMjQ3LCAyNTUsIDE2MywgMjUxLCAKLSAgICAyMjEsIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjMyLCAyMzIsIDIxMywgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgMjQ3LCAKLSAgICAxMjAsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDQsIAotICAgIDE2MywgMjUxLCAyMjEsIDIzMywgODUsIDI1MCwgMzUsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgCi0gICAgNDIsIDIsIDIzMiwgMTA4LCA0MywgMjI0LCAyNSwgNzEsIDQyLCAyLCAyMzIsIDEwOCwgNDQsIDIyNCwgMjUsIDcxLCA0MiwgCi0gICAgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAKLSAgICAzNiwgMiwgMjMyLCAxMDgsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI1LCA3MSwgCi0gICAgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI1LCAyMTQsIDE2MCwgNDQsIAotICAgIDIxNSwgMjI1LCAyMzIsIDEwOCwgNDMsIDIxNSwgMjI1LCA3MSwgMjMxLCA4MiwgMjE4LCAyMzQsIDg1LCAyMzEsIDgyLCAKLSAgICAyMTgsIDIzNCwgNzEsIDIzMSwgODIsIDQsIDIxOCwgMjM0LCA4NSwgMjMxLCA4MiwgNCwgMjE4LCAyMzQsIDIzMiwgMTA4LCAKLSAgICA0NCwgMjE1LCAyMjUsIDg1LCAyMTgsIDM4LCAyLCAyMjMsIDEzMiwgMjQ5LCAyNDcsIDIxNCwgMTk0LCAyMTksIDYwLCAyNDksIAotICAgIDIyMiwgODUsIDIxOCwgMTU2LCA3MSwgMjE4LCAxNTYsIDIzMiwgMjI4LCAyMTYsIDEzMiwgMjE4LCAzNywgMjUzLCAyMzQsIAotICAgIDIyOCwgNzEsIDI0OCwgMzgsIDIyOCwgNzEsIDI0OSwgMTk1LCAyMjYsIDE2MywgODUsIDIxNywgMCwgNzEsIDIxNywgMCwgCi0gICAgMjUyLCAxNTYsIDI1MSwgMTYzLCAyNTIsIDE1NiwgOTMsIDIsIDI1MCwgMTI5LCAyNTIsIDE1NiwgOTMsIDIsIDIxMSwgMTc4LCAKLSAgICAyMjEsIDI1NCwgMjE0LCAxOTUsIDIsIDIyMywgMTYwLCAyNDYsIDg0LCAyNDAsIDI0MywgMjUyLCAyMiwgNzEsIDIyMCwgMiwgCi0gICAgMjI1LCAxMDEsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCAyMjAsIDg3LCAyMjMsIDQ5LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAKLSAgICAyMjgsIDI1MSwgMTEzLCA4NSwgNDMsIDIyNSwgNywgMjM1LCAyNDIsIDg1LCA0NCwgMjI1LCA3LCAyMzUsIDI0MiwgNzEsIAotICAgIDQzLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgMTIwLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgNDQsIDIyNSwgNywgMjM1LCAKLSAgICAyNDIsIDcxLCAxMjQsIDIyNSwgNywgMjM1LCAyNDIsIDIxOSwgMTAxLCAyMiwgMjQ5LCAxMjksIDI1MCwgMjE5LCA1MCwgCi0gICAgMjIzLCAxNzIsIDUwLCAyNTEsIDIzOSwgNTAsIDI1MSwgMjUsIDI1NCwgMTAyLCAyMjYsIDE0NSwgMjQ5LCAxMzAsIDI1MCwgCi0gICAgMTExLCAyMjMsIDM3LCAyNDksIDEzMSwgNjQsIDIzMiwgMTE4LCAyNDksIDEzMSwgNjQsIDIzNSwgMTE2LCAyMTgsIDE1NywgCi0gICAgMjIsIDI0OSwgMTM2LCAyNDQsIDE2OCwgODcsIDI1NCwgMjQ4LCAyMjAsIDg5LCAyNDIsIDIyLCAyMiwgMjE5LCAxODksIAotICAgIDIyNSwgMjIwLCA4NywgMjEwLCAyNTQsIDIxMSwgNjksIDIxNSwgMjE1LCAzMSwgMjQxLCAyMjMsIDIxNSwgMjE1LCAzMSwgCi0gICAgMjMzLCAxMDcsIDIxNSwgMjE1LCAzMSwgMjQ0LCA5NiwgMjE1LCAyMTUsIDMxLCAyMTYsIDEzMywgMjE1LCAyMTUsIDMxLCAKLSAgICAyMTEsIDIzOSwgMjE1LCAyMTUsIDMxLCAyMTIsIDQwLCAyMTUsIDIxNSwgMzEsIDIzMCwgMTE1LCAyMTUsIDIxNSwgMzEsIAotICAgIDI0NSwgMjIzLCAyMTIsIDEsIDY0LCAyNDgsIDE4LCA3MSwgMjQzLCAyMzksIDI0NCwgMTkwLCA3MSwgMjE5LCA3NCwgMjQ0LCAKLSAgICAxOTAsIDg1LCAyMTksIDc0LCAyNDQsIDE5MCwgNzEsIDIxOCwgMzgsIDIsIDIyMywgMTMyLCAyNDQsIDkyLCAyMjQsIDIyLCAKLSAgICAyMzAsIDEyOCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAxMjgsIDIzMSwgNTQsIDI0NCwgMTM4LCA1MCwgMjQ1LCAyMjMsIAotICAgIDIzMSwgMTkwLCA1MCwgMjM1LCAzOCwgMjIxLCAyMjAsIDIxNCwgMTQ1LCAyMjksIDkzLCAyMjUsIDIwLCAyNTQsIDEyLCAKLSAgICAyMTcsIDQwLCAyNDMsIDUyLCAyNTEsIDMsIDIzMywgMTksIDIxMywgMTUwLCAyMzIsIDIzOCwgMjIxLCAxOTEsIDIyMiwgMTksIAotICAgIDI1MCwgMjQ4LCAyNTQsIDQyLCAyMjUsIDUyLCA3MSwgMjUwLCAxMTcsIDIzNCwgNzgsIDcxLCAyNTAsIDExNywgMjI0LCAxNCwgCi0gICAgNzEsIDI1MCwgMTE3LCAyMjIsIDE5NSwgNzEsIDI1MCwgMTE3LCAyNTEsIDIzMSwgNzEsIDI1MCwgMTE3LCAyMzQsIDMwLCAKLSAgICA3MSwgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjUwLCAxMTcsIDIzNCwgNzgsIDg1LCAyNTAsIDExNywgMjI0LCAxNCwgODUsIAotICAgIDI1MCwgMTE3LCAyMjIsIDE5NSwgODUsIDI1MCwgMTE3LCAyNTEsIDIzMSwgODUsIDI1MCwgMTE3LCAyMzQsIDMwLCA4NSwgCi0gICAgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjE5LCAxNiwgMjE4LCA1MCwgNzEsIDI0MSwgMjI4LCAyMTgsIDUwLCA3MSwgMjQ3LCAKLSAgICAyNDksIDIxOCwgNTAsIDg1LCAyNDksIDI0NSwgMjE4LCA1MCwgNzEsIDIxOSwgMTYsIDIxOCwgNTAsIDg1LCAyNDEsIDIyOCwgCi0gICAgMjE4LCA1MCwgODUsIDI0NywgMjQ5LCAyMTgsIDUwLCA3MSwgMjQ5LCAyNDUsIDIxOCwgNTAsIDI0MCwgMjQzLCAyMTgsIAotICAgIDIzOCwgMjI0LCAyMiwgMjI4LCA0NywgMjQ1LCAxODksIDIyOCwgNDcsIDI1MiwgNzMsIDI0NSwgMTg5LCAyMjgsIDQyLCAKLSAgICAyNTIsIDczLCAyMTksIDExOCwgMjI4LCA0MiwgMjMwLCA1NywgMjQ0LCA2NiwgNTAsIDIzMCwgNTcsIDIyOSwgMTg4LCA1MCwgCi0gICAgMjMwLCA1NywgMjIwLCA3NiwgNTAsIDIxMiwgOSwgMTg4LCAyNDksIDEzMCwgMjQ1LCAyMjAsIDE4OCwgMjQ5LCAxMzAsIAotICAgIDIxNCwgMTcxLCAyMjMsIDExMiwgODcsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDgsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCi0gICAgMzEsIDIxNSwgNDcsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDYsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCi0gICAgMzEsIDIxNSwgNDUsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDQsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCi0gICAgMzEsIDIxNSwgNDMsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDIsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCi0gICAgMzEsIDI0MywgNTAsIDIzMSwgMTM4LCA4NSwgMjE0LCAxNzEsIDIyMywgMTEyLCA4NywgMjIzLCAxMTMsIDIyNiwgMjAsIDg3LCAKLSAgICAyMjUsIDI1MiwgMjI2LCAyMCwgODcsIDIyNSwgMTc0LCAyMjYsIDIwLCA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0MSwgCi0gICAgMjQ0LCAxODksIDI0NywgMjQxLCAyNDQsIDE4OCwgMjQ3LCAyNDEsIDI0NCwgMTg3LCAyNDcsIDI0MSwgMjQ0LCAxODYsIAotICAgIDI0NywgMjQxLCAyNDQsIDE4NSwgMjQ3LCAyNDEsIDI0NCwgMTg0LCA3MSwgMjUwLCAzNiwgMiwgNTksIDIyMiwgMjUxLCA3MSwgCi0gICAgMjUwLCAzNiwgMiwgMTEzLCAyNDcsIDExOCwgODUsIDI1MCwgMzYsIDIsIDcxLCA1OSwgMjIyLCAyNTEsIDg1LCAyNTAsIDM2LCAKLSAgICAyLCAxMTMsIDcxLCAyNDcsIDExOCwgMjMwLCAxNDIsIDMxLCAyMTEsIDY5LCAyMzAsIDE0MiwgMzEsIDIxMCwgMjUzLCAyNDcsIAotICAgIDIyNCwgMzEsIDI0MiwgMTMxLCAyMTEsIDY5LCAyNDcsIDIyNCwgMzEsIDIzMywgMTMsIDIxMCwgMjUzLCAyNDcsIDIyNCwgCi0gICAgMzEsIDIzMywgMTMsIDIxMSwgNjksIDI0NywgMjI0LCAzMSwgMjQyLCAxMzEsIDIxMCwgMjUzLCA3MSwgMjQ0LCA3MywgODUsIAotICAgIDI0NCwgNzMsIDI0MiwgMjIsIDIyLCAyMjUsIDEwNCwgMjU0LCAxMjAsIDI0OSwgMTI4LCAyMTcsIDIzNSwgMjE4LCAxNjQsIAotICAgIDY0LCAyNTQsIDIyNiwgMjIxLCAyMDYsIDI1NCwgMTY5LCAyNDQsIDUxLCAyNDMsIDYwLCAyMTgsIDE2NCwgNjQsIDI0MSwgCi0gICAgMjAyLCAyNTMsIDE5OSwgODcsIDI0NCwgNjIsIDIyNiwgMTI2LCA3MSwgMjE4LCAxNTYsIDEzNCwgMjMyLCAyMDgsIDI0OSwgCi0gICAgMTc1LCAyMjIsIDI1MSwgMTM0LCAyMzIsIDIwOCwgMjQ5LCAxNzUsIDIzMywgNDYsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgCi0gICAgMTMwLCA1MCwgMjQ2LCAxMTAsIDI0NCwgMTM4LCA1MCwgMjQ2LCAxMTAsIDIzMSwgMTkwLCA1MCwgMjM1LCAyMDMsIDI0NCwgCi0gICAgMTM4LCAyMiwgMjMxLCAxOTAsIDUwLCAyMzEsIDE5MCwgMjIsIDI0NCwgMTM4LCA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAKLSAgICA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAyMiwgMjMxLCAxOTAsIDIyLCAyNDQsIDEzOCwgNTAsIDY3LCAyMzEsIDE5MCwgCi0gICAgMiwgMjE4LCAxMDMsIDUwLCAyMDMsIDIzMSwgMTkwLCAyLCAyMTgsIDEwMywgNTAsIDIzMSwgODIsIDcxLCAyNTAsIDM1LCAKLSAgICAyMzEsIDgyLCA4NSwgMjUwLCAzNSwgMjMxLCA4MiwgNCwgNzEsIDI1MCwgMzUsIDIzMSwgMTUzLCA4NywgMjQ3LCAxNjcsIAotICAgIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTEsIDg3LCAyNDksIDIzMSwgMjQzLCAyMjQsIDIxNCwgMTQxLCAyMjksIDg4LCAyNTAsIAotICAgIDE2MSwgMjI2LCA2MSwgMjM1LCA0NCwgMjEzLCAxODUsIDI1MCwgOTMsIDg1LCAyMzAsIDEyOSwgMjMyLCAyMjUsIDIyMCwgCi0gICAgMTEyLCAyMjAsIDE0NywgMjI0LCA1LCAyMjAsIDEzMCwgMjE5LCA1NSwgMjUyLCAxNTksIDI1MiwgMTI2LCA5MiwgMjM0LCAKLSAgICAxMzgsIDcxLCAyNDYsIDkzLCAyMzEsIDE4NSwgNzEsIDI0NiwgOTMsIDIzNCwgNzgsIDg1LCAyNDYsIDkzLCAyMzEsIDE4NSwgCi0gICAgODUsIDI0NiwgOTMsIDIzNCwgNzgsIDIxOSwgNjEsIDIxMSwgMjMwLCAyMTksIDY0LCAyMTgsIDM4LCAyNTIsIDUxLCAyNDksIAotICAgIDI0NywgMjIzLCAxNTksIDg1LCAyMTksIDYwLCAyMTYsIDEzNCwgMjQ5LCAyNDgsIDIyLCAyMjMsIDE1OSwgMjE1LCA5NCwgCi0gICAgNzEsIDIyMCwgMiwgMjI1LCAxMDEsIDIxNSwgOTQsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCA3MSwgMjQ3LCAyNDksIDIzNiwgCi0gICAgMCwgMjE4LCAyMzQsIDI0OSwgMTI1LCAyMzMsIDkxLCAyNDcsIDE5MywgMjUwLCAyNDQsIDIyNiwgMTY2LCAyMjUsIDEwNCwgCi0gICAgMjUwLCAyNDUsIDIxOSwgODgsIDI0MSwgMjEyLCAyLCA3MSwgMjQ5LCAxMzAsIDM3LCAyNDksIDEyNSwgMjMzLCA5MSwgMjUwLCAKLSAgICAxNTMsIDIyOCwgNzUsIDI0NSwgMTI0LCAyNTQsIDE0MSwgMjI2LCAxOTEsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAotICAgIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgNzEsIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAotICAgIDQzLCAyMzMsIDkyLCAyMzEsIDUzLCA3MSwgNDMsIDIzMywgOTIsIDIzMSwgNTMsIDI0NiwgODksIDIxOSwgODIsIDUwLCAKLSAgICAxMTQsIDcxLCAyNDYsIDEwNSwgMjE1LCAyMjUsIDQzLCAyNTAsIDAsIDI0NSwgMTI0LCA5MiwgMjIxLCAyNTQsIDI0NCwgCi0gICAgMTc1LCAyNDcsIDI1NSwgMjM2LCAwLCA3MSwgMjUwLCAzNiwgMjM2LCAwLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTUsIDE5MiwgCi0gICAgMjIzLCA2MCwgNDMsIDI0NSwgMTIzLCAyMjMsIDYwLCA0MywgMjQ1LCAxMjIsIDI1MywgMjExLCAxNiwgMzEsIDIxNCwgMTQ1LCAKLSAgICAxMTQsIDI1MCwgMzYsIDIsIDIxOCwgMTAzLCAyMiwgMTEzLCAxNzAsIDQ4LCAyMjUsIDE4OSwgMjIyLCAyNDgsIDIzNSwgCi0gICAgMjA1LCAyMjUsIDE4OSwgMjMzLCA0MywgMjM1LCAyMDUsIDIyNSwgMTg5LCAyMzUsIDE5MywgMjI1LCAxODksIDg1LCAyNDksIAotICAgIDEzMSwgMjI2LCAxOTcsIDIyMCwgMjksIDIyMCwgMTcsIDIxOSwgMjI5LCAyNTAsIDYxLCAyNTAsIDIyNiwgMjQxLCAxNTcsIAotICAgIDIxOSwgMTI2LCAyNDMsIDYxLCAyMTEsIDIzMCwgMjQwLCAyMjAsIDI0MywgNjEsIDIsIDI0MiwgMTIsIDIzMSwgMTczLCAxNiwgCi0gICAgMzEsIDIzMiwgMjI5LCAyMzAsIDExNSwgMjE0LCAxOTUsIDIyNiwgMTk3LCAyNDIsIDEyMiwgMjQ0LCAxMiwgMjQ0LCA3NCwgCi0gICAgMjM2LCAwLCAyNDEsIDU5LCAyNDQsIDEyOSwgMjIyLCAxNCwgNDIsIDI0NCwgMTEsIDI0OSwgMTU5LCAyMTksIDEwNCwgMjQwLCAKLSAgICAxMTIsIDIxOSwgMTA3LCAyMjUsIDE2OCwgMiwgMjUyLCAxNTksIDIxNiwgMjQyLCAyMzUsIDEzMSwgMjUyLCAxNDYsIDg3LCAKLSAgICAyNDEsIDIzMSwgMjQyLCAxMzMsIDg3LCAyNDMsIDIzMiwgMjI0LCAxNDIsIDI0OSwgMTAzLCAyMjYsIDE5NywgODUsIDIxOCwgCi0gICAgMjM0LCA3MSwgMjQ0LCA3NCwgMiwgMjAzLCAyMzAsIDIyNCwgODUsIDIxOCwgMTA0LCAyMTQsIDE2MCwgMjUxLCAyMTcsIAotICAgIDIyMSwgMTkzLCA4NSwgMjIxLCAxOTMsIDIzMiwgMTA4LCAyNTEsIDIxNywgMjIxLCAxOTMsIDcxLCAyMjEsIDE5MywgNzEsIAotICAgIDExNCwgMjUwLCAxMzAsIDc4LCAyMTcsIDEsIDIzMiwgMTU0LCA1MCwgMjE3LCA1MywgMjQ2LCA4OCwgMjU0LCAxOTEsIDI0NSwgCi0gICAgMTE5LCAyMjMsIDE1NywgMjQ0LCA4NSwgMjIzLCAxNTcsIDI0MiwgMTUsIDIxMywgMTc0LCAyNDIsIDE1LCAyMTEsIDE5OCwgCi0gICAgMjQyLCAxNSwgMjMyLCAxMDgsIDQ0LCAyMjUsIDE5OCwgMjI1LCAxOTgsIDIxNCwgMTYwLCA0NCwgMjI1LCAxOTgsIDcxLCAKLSAgICAyMjgsIDIzMCwgODUsIDIyOCwgMjMwLCAyNTAsIDEzMCwgNzgsIDExNCwgMjUwLCAxMzAsIDc4LCAyMzAsIDg0LCAyMTEsIAotICAgIDE3OCwgMTE0LCAyMzAsIDg0LCAyMTEsIDE3OCwgMjUyLCAxNTYsIDIxMSwgMTc4LCAxMTQsIDI1MiwgMTU2LCAyMTEsIDE3OCwgCi0gICAgMjI2LCAxMjYsIDI2LCAyNDksIDEzMCwgMTE0LCAyNiwgMjQ5LCAxMzAsIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCAxMTQsIAotICAgIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCA3LCAyNDksIDEzMCwgMjIwLCA5MSwgNzEsIDcsIDI0OSwgMTMwLCAyMjYsIDEyNiwgCi0gICAgNywgMjQ5LCAxMzAsIDIzMSwgMTg3LCAyNDksIDEzMCwgMjE4LCAxNTcsIDY0LCAyNDgsIDE0OSwgMjQ0LCAxMSwgMjE3LCAKLSAgICAxNSwgMjUzLCAyMTYsIDI0NCwgMTEsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMTE0LCAyNDQsIDExLCAyNTIsIDE1NywgMjUzLCAKLSAgICAyMTYsIDI0NCwgMTEsIDI0OSwgMjQzLCAyNTMsIDIxNiwgODUsIDI0NCwgMTEsIDIyNSwgOSwgMjE4LCAxNTYsIDcxLCAyNDQsIAotICAgIDExLCAyMjUsIDksIDIxOCwgMTU2LCAyMTksIDExLCAyMTgsIDExMSwgMjI2LCAxMjYsIDcxLCAyMTgsIDE1NiwgMzcsIDcxLCAKLSAgICAyMTgsIDE1NiwgMjA0LCAyNTAsIDE3NSwgODUsIDIxOCwgMTU2LCA4NSwgMjUwLCAxNzUsIDcxLCAyMTgsIDE1NiwgMjI2LCAKLSAgICAxMjYsIDg1LCAyMTgsIDE1NiwgMTE0LCAyMjYsIDEyNiwgODUsIDIxOCwgMTU2LCAyMjUsIDYwLCAyMTgsIDE1NiwgMjIwLCAKLSAgICA5MSwgNzEsIDIxOCwgMTU2LCAxMTQsIDI1MywgMjE2LCAyMDQsIDI1MCwgMTc1LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxOCwgCi0gICAgMjQ0LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjUsIDYwLCAKLSAgICAyMTgsIDE1NiwgMjE5LCAxMjUsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjMsIDExNCwgODUsIAotICAgIDIxOCwgMTU2LCAxMTQsIDI0NSwgMTkzLCAyMjUsIDksIDIyMywgMTE0LCA4NSwgMjE4LCAxNTYsIDIxNSwgNzcsIDIyNSwgOSwgCi0gICAgODUsIDIxOCwgMTU2LCAyMTksIDEyMCwgMjI1LCA5LCAyNTMsIDIxNiwgMjE3LCAxNSwgMjUzLCAyMTYsIDIwNCwgMjUwLCAKLSAgICAxNzUsIDIxNywgMTUsIDI1MywgMjE2LCAxMTQsIDIxNywgMTUsIDI1MywgMjE2LCAyMTksIDEyNSwgMjI1LCAxNTcsIDg1LCAKLSAgICAyMiwgNzEsIDI0NCwgNTQsIDg1LCAyNDQsIDU0LCA3MSwgMjQ0LCA1NCwgMjQ1LCAxOTMsIDIyNSwgMTU3LCAyMjYsIDEyNiwgCi0gICAgODUsIDI0NCwgNTQsIDM3LCAyMDQsIDI1MCwgMTc1LCAyNDUsIDE5MywgMjI1LCA5LCAyMTgsIDE1NiwgMTE0LCAyMTcsIDE1LCAKLSAgICAyMjUsIDYwLCAyNTMsIDIxNiwgMjE5LCA2MiwgMjE2LCAxMDUsIDIxNSwgMjE4LCAyMTksIDYyLCAxMTQsIDI1MCwgMTE0LCAKLSAgICAyMTksIDYyLCAyMTksIDEzLCAxMTQsIDIxOSwgMTMsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxNywgMTUsIAotICAgIDIyNCwgMTcxLCAyNTMsIDIxNiwgMTE0LCAyNDUsIDE5MywgMjE3LCAxNSwgMjI0LCAxNzEsIDI1MywgMjE2LCAyNDksIDEzMSwgCi0gICAgNzgsIDIyMCwgOTEsIDcxLCAyNTAsIDM1LCAxNTIsIDkyLCAyNDksIDEzMSwgNzgsIDIzMiwgMTA4LCA0NCwgMjQ2LCA4NiwgCi0gICAgNzEsIDIxOCwgMjM0LCAyMTQsIDE2MCwgNDQsIDI0NiwgODYsIDcxLCAyMTgsIDIzNCwgMjMyLCAxMDgsIDQ0LCAyMjAsIDkxLCAKLSAgICA3MSwgMjE4LCAyMzQsIDIxNCwgMTYwLCA0NCwgMjIwLCA5MSwgNzEsIDIxOCwgMjM0LCA4NSwgMjI0LCAxMywgMTY0LCAyMjYsIAotICAgIDE0NywgNzEsIDIyNCwgMTMsIDE2NCwgMjI2LCAxNDcsIDcxLCAyNDUsIDMxLCAxNjQsIDIyNiwgMTQ3LCA4NSwgMjQ3LCAKLSAgICAyNDksIDIzMCwgMTgyLCA3MSwgMjExLCAxNzgsIDExNCwgMjQ1LCAzMSwgMTY0LCA4NywgMTkyLCA2NywgMTMwLCAyMzEsIAotICAgIDgyLCA2NywgMTMwLCAxMTQsIDY3LCAxMzAsIDExNCwgMjE5LCAxNTUsIDIxNSwgOTQsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCi0gICAgMTY0LCAyMjYsIDE0NywgMTE0LCAyMTksIDE1NSwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDUyLCAKLSAgICAyMTUsIDk0LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgNTIsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCi0gICAgMTY0LCAyMjYsIDE0NywgMTE0LCAxMjEsIDIxOSwgMTU1LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIAotICAgIDExNCwgMTIxLCA1MiwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAyNDksIDkxLCAyMTgsIDE0MCwgMjI2LCAKLSAgICAxNSwgNSwgMjI2LCAxNDcsIDExNCwgMjQ1LCAzMSwgMTY0LCAyMjYsIDE0NywgMTE0LCAyNDEsIDIyOCwgMjQ1LCAzMSwgCi0gICAgMTY0LCAyMjYsIDE0NywgMTE0LCA4NSwgMjQxLCAyMjcsIDIyMiwgMTg3LCAxMTQsIDg1LCAyNDEsIDIyOCwgMjUxLCAxMTMsIAotICAgIDI0NCwgNTUsIDI0MSwgMjI3LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAyMjgsIDI1MSwgMTEzLCAyMzEsIDgyLCA0MywgCi0gICAgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgNDQsIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDI0NCwgNjMsIDQzLCAKLSAgICAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyNDQsIDYzLCA0NCwgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjMzLCAKLSAgICA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMjMxLCA4MiwgMjIyLCAyNDcsIDI1NCwgMTEwLCAyNTEsIDE1OCwgCi0gICAgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIyMiwgMjQ3LCAKLSAgICAyNTQsIDExMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIAotICAgIDE0NywgMTE0LCAyMjIsIDI0NywgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMTkyLCA0MywgMjE2LCA2LCAyMjAsIAotICAgIDUzLCAyNTEsIDE1OCwgMjI2LCAxNDcsIDE5MiwgNDQsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTgsIDIyNiwgMTQ3LCAKLSAgICAyMzEsIDgyLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAyMzEsIDgyLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIAotICAgIDIyNiwgMTQ3LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgCi0gICAgMjA0LCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAKLSAgICAxODksIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTk0LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE5OCwgMjQ3LCAyMDQsIAotICAgIDE1MiwgMzcsIDIxLCAxOTUsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMjAwLCAyNDcsIDIwNCwgMTUyLCAzNywgNTQsIDIxNiwgCi0gICAgMjQ3LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMzcsIAotICAgIDM1LCAyMSwgMTU4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTg5LCAyNDcsIAotICAgIDIwNCwgMzcsIDM1LCAyMSwgMTk0LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgCi0gICAgMTk1LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMjAwLCAyNDcsIDIwNCwgMzcsIDM1LCA1NCwgMjE2LCAyNDcsIDI0NywgMjA0LCAKLSAgICAxNTIsIDM3LCAzNSwgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMTUyLCAzNywgCi0gICAgMzUsIDIxLCAxNTgsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgCi0gICAgMTg5LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTQsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5OCwgMjQ3LCAKLSAgICAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAyMDAsIDI0NywgMjA0LCAxNTIsIAotICAgIDM3LCAzNSwgNTQsIDIxNiwgMjQ3LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzQsIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTgyLCAKLSAgICA1MCwgMTE0LCAyNDcsIDE2OSwgNTAsIDExNCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAxMTQsIDk3LCA3NCwgMTE0LCAyMjgsIAotICAgIDU2LCAyNDUsIDIyMCwgNzQsIDI0NiwgOTgsIDIyNSwgMTEsIDk3LCA3NCwgMTE0LCAyMjIsIDE4NCwgOTcsIDc0LCAyMTUsIAotICAgIDIyNCwgOTcsIDc0LCAxMTQsIDIxNSwgMjI0LCA5NywgNzQsIDI0OCwgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCAxMTQsIDI0OCwgCi0gICAgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCA4NSwgOTcsIDc0LCAyMTYsIDE0NCwgMjE2LCAxMiwgOTcsIDI1MywgMjQ5LCAyMTYsIAotICAgIDE0NCwgMjUxLCAxNzMsIDk3LCAyNTMsIDI0OSwgODUsIDk3LCAyNTMsIDI0OSwgMTE0LCA4NSwgMjQ5LCA5MSwgMjQ2LCAKLSAgICAxMDQsIDIyLCA5NywgNzQsIDExNCwgODUsIDI0OSwgOTEsIDIxNCwgMTUzLCAyMiwgOTcsIDc0LCAyMTgsIDIzMSwgODUsIAotICAgIDk3LCA3NCwgMTE0LCAyNDksIDIwNiwgODUsIDk3LCA3NCwgMjIyLCAyNDYsIDcxLCA5NywgNzQsIDIzMywgNDEsIDcxLCA5NywgCi0gICAgNzQsIDI1MiwgMTgzLCAyMjAsIDkxLCA3MSwgOTcsIDc0LCAyNDMsIDI0MSwgMjIwLCA5MSwgNzEsIDk3LCA3NCwgMTE0LCAKLSAgICAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDExNCwgMjE0LCAxNjAsIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAyMjgsIAotICAgIDQ5LCAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDI0OSwgOTksIDIzMiwgMTIzLCAyMjgsIDQ5LCAyMTQsIDE2MCwgCi0gICAgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDM3LCAxMTQsIDcxLCA5NywgNzQsIDIxMSwgMjUyLCA5NywgNzQsIDI1MSwgMjIwLCAKLSAgICAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDI1MSwgMjIwLCA5NywgNzQsIDI1MSwgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAotICAgIDExNCwgMjUxLCAyMjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMTE0LCAyNTEsIDIyMCwgOTcsIDc0LCAxMTQsIDI1MSwgCi0gICAgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIxNywgMTcsIDk3LCA3NCwgMTE0LCAyMTcsIDE2LCA5NywgNzQsIDIxMiwgCi0gICAgMTgsIDk3LCA3NCwgMTE0LCAyMTIsIDE4LCA5NywgNzQsIDIyNiwgMTcyLCA5NywgNzQsIDUyLCAyNDksIDk5LCAyMzIsIAotICAgIDEyMywgMTM0LCAyNDcsIDIxNCwgMjU0LCAxMDksIDcxLCAyMTUsIDIyNiwgMjQ5LCAxODcsIDQsIDcxLCAyMTUsIDIyNSwgCi0gICAgMjI1LCAxNzEsIDIwNCwgMjE4LCA2MywgMjA0LCAyMTgsIDIxLCA0MywgMjIyLCA5MCwgMjUyLCAxNzMsIDI0OCwgNjAsIDQ0LCAKLSAgICAyMjIsIDkwLCAyNTIsIDE3MywgMjQ4LCA2MCwgMTc3LCAyLCA1OSwgMjM1LCAyMTUsIDIyMywgNTAsIDIxOSwgNDcsIDIyNCwgCi0gICAgMjAxLCAyMTgsIDYzLCAyMTgsIDIyLCAyMjQsIDIwMSwgMjE5LCA0NiwgNjcsIDI1MiwgMTQxLCAyLCAyMDMsIDkxLCAxMSwgCi0gICAgMjIyLCAyMjgsIDI0NywgMjU0LCAxOTksIDI0NywgMTY4LCAxMSwgMjQ0LCAxNzUsIDI0NywgMjU0LCA5MiwgMjMyLCAxNDYsIAotICAgIDI1NCwgMTE4LCA5MiwgMjMyLCAxNDYsIDIyNiwgMTU4LCA3MSwgMjQ3LCAyNDksIDIsIDI1MCwgMTczLCAyNDcsIDEyMCwgCi0gICAgMjIsIDIsIDI0NywgMTIwLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyMTQsIDE1MiwgMjMyLCAxMDgsIDQ0LCAyNDksIAotICAgIDE2MSwgMiwgMjQ3LCAxMjAsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjEsIDIsIDI0NywgMTIwLCA0MywgMjI2LCAxMjgsIDIzNSwgCi0gICAgNjYsIDQ0LCAyMjYsIDEyOCwgMjM1LCA2NiwgMjQzLCAyMjksIDIyNiwgMTI4LCAyMzUsIDY2LCAyMzMsIDg1LCAxMjAsIAotICAgIDIxNywgODcsIDIzMywgODUsIDEyNCwgMjE3LCA4NywgNDMsIDIyLCA0NCwgNTIsIDIxNSwgOTMsIDQzLCAyMiwgNDQsIDIxNywgCi0gICAgODcsIDQzLCAyMzAsIDg3LCAxOTksIDQ0LCAyMTcsIDg3LCAxOTksIDQzLCAyMTcsIDg3LCAxMjAsIDIxNywgODgsIDIsIAotICAgIDI1MCwgMzYsIDQ4LCAyMzIsIDEwNSwgMjQ3LCAxNzMsIDI1MSwgNzgsIDIwMywgMjIyLCAxMzMsIDcxLCAyNDksIDIwNSwgCi0gICAgMjQ3LCAyNDgsIDcxLCAyNDksIDIwNSwgMjQ3LCAyNDksIDIsIDE0MCwgMjE2LCAxMTQsIDcxLCAyNDksIDIwNSwgMjQ3LCAKLSAgICAyNDksIDIsIDk3LCAyMTYsIDExNCwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE0LCA3MSwgNDIsIDIsIDk3LCAyMTYsIDExNCwgCi0gICAgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExMCwgMTI3LCAxMSwgNDQsIAotICAgIDI1NCwgMTEwLCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCAKLSAgICA0MywgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMTEsIDQzLCAKLSAgICAyNDQsIDYzLCAyMjYsIDMsIDExLCA0NCwgMjQ0LCA2MywgMjI2LCAzLCAyMTQsIDE1MywgMjI0LCAyNCwgNzQsIDI0NiwgCi0gICAgMTA0LCAyMjQsIDI0LCA3NCwgMjU0LCA4OCwgMjQzLCA5OCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjQzLCA5OCwgMjUwLCAKLSAgICAzNiwgNzQsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCA3NCwgMTk5LCA5NywgNzQsIDE5OSwgNDMsIDQ0LCAKLSAgICA3NCwgMTk5LCAxNDAsIDUyLCA3NCwgMTk5LCA5NywgNTIsIDc0LCAxOTksIDQzLCA0NCwgNTIsIDc0LCAxOTksIDE0MCwgODAsIAotICAgIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAxOTksIDE0MCwgNTIsIDgwLCAyNDMsIDI0MywgCi0gICAgMTMwLCAxOTksIDk3LCA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDIxOCwgMjMwLCA3NCwgNDYsIDQ3LCAyNTEsIAotICAgIDIxNSwgNDYsIDQ3LCAyNDcsIDExNywgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIAotICAgIDE4MSwgNDYsIDQ3LCAyNDcsIDUyLCA0NiwgNDcsIDI0NiwgMjQ0LCA0NiwgNDcsIDI0NywgMTE1LCA0NiwgNDcsIDI0NiwgCi0gICAgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIAotICAgIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgCi0gICAgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgMTY0LCAKLSAgICA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIDE0OCwgNDYsIAotICAgIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAxNzksIDQ2LCA0NywgCi0gICAgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIDEyNSwgNDYsIDQ3LCAKLSAgICAyNDYsIDI1MiwgNDYsIDQ3LCAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMTU2LCA0NiwgNDcsIAotICAgIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAyNDYsIDE0MCwgNDYsIDQ3LCAKLSAgICAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAxNzEsIDQ2LCA0NywgCi0gICAgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAKLSAgICAyNDcsIDMsIDQ2LCA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIAotICAgIDM0LCA0NiwgNDcsIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgCi0gICAgNDYsIDQ3LCAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCAKLSAgICA0NywgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMjEsIDQ2LCA0NywgMjQ2LCAyNDgsIDQ2LCAKLSAgICA0NywgMjQ2LCAxODQsIDQ2LCA0NywgMjQ3LCA1NSwgNDYsIDQ3LCAyNDYsIDE1MiwgNDYsIDQ3LCAyNDcsIDIzLCA0NiwgNDcsIAotICAgIDI0NiwgMjE1LCA0NiwgNDcsIDI0NywgODYsIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgCi0gICAgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAzOCwgNDYsIDQ3LCAyNDYsIAotICAgIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDEyOCwgNDYsIDQ3LCAyNDYsIDI1NSwgNDYsIDQ3LCAyNDYsIAotICAgIDE5MSwgNDYsIDQ3LCAyNDcsIDYyLCA0NiwgNDcsIDI0NiwgMTU5LCA0NiwgNDcsIDI0NywgMzAsIDQ2LCA0NywgMjQ2LCAKLSAgICAyMjIsIDQ2LCA0NywgMjQ3LCA5MywgNDYsIDQ3LCAyNDYsIDE0MywgNDYsIDQ3LCAyNDcsIDE0LCA0NiwgNDcsIDI0NiwgCi0gICAgMjA2LCA0NiwgNDcsIDI0NywgNzcsIDQ2LCA0NywgMjQ2LCAxNzQsIDQ2LCA0NywgMjQ3LCA0NSwgNDYsIDQ3LCAyNDYsIAotICAgIDIzNywgNDYsIDQ3LCAyNDcsIDEwOCwgNDYsIDQ3LCAyNDYsIDEyNCwgNDYsIDQ3LCAyNDYsIDI1MSwgNDYsIDQ3LCAyNDYsIAotICAgIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMTU1LCA0NiwgNDcsIDI0NywgMjYsIDQ2LCA0NywgMjQ2LCAKLSAgICAyMTgsIDQ2LCA0NywgMjQ3LCA4OSwgNDYsIDQ3LCAyNDYsIDEzOSwgNDYsIDQ3LCAyNDcsIDEwLCA0NiwgNDcsIDI0NiwgCi0gICAgMjAyLCA0NiwgNDcsIDI0NywgNzMsIDQ2LCA0NywgMjQ2LCAxNzAsIDQ2LCA0NywgMjQ3LCA0MSwgNDYsIDQ3LCAyNDYsIAotICAgIDIzMywgNDYsIDQ3LCAyNDcsIDEwNCwgNDYsIDQ3LCAyNDYsIDEzMSwgNDYsIDQ3LCAyNDcsIDIsIDQ2LCA0NywgMjQ2LCAKLSAgICAxOTQsIDQ2LCA0NywgMjQ3LCA2NSwgNDYsIDQ3LCAyNDYsIDE2MiwgNDYsIDQ3LCAyNDcsIDMzLCA0NiwgNDcsIDI0NiwgCi0gICAgMjI1LCA0NiwgNDcsIDI0NywgOTYsIDQ2LCA0NywgMjQ2LCAxNDYsIDQ2LCA0NywgMjQ3LCAxNywgNDYsIDQ3LCAyNDYsIAotICAgIDIwOSwgNDYsIDQ3LCAyNDcsIDgwLCA0NiwgNDcsIDI0NiwgMTc3LCA0NiwgNDcsIDI0NywgNDgsIDQ2LCA0NywgMjQ2LCAKLSAgICAyNDAsIDQ2LCA0NywgMjQ3LCAxMTEsIDQ2LCA0NywgMjQ2LCAxMTksIDQ2LCA0NywgMjQ2LCAyNDYsIDQ2LCA0NywgMjQ2LCAKLSAgICAxODIsIDQ2LCA0NywgMjQ3LCA1MywgNDYsIDQ3LCAyNDYsIDE1MCwgNDYsIDQ3LCAyNDcsIDIxLCA0NiwgNDcsIDI0NiwgCi0gICAgMjEzLCA0NiwgNDcsIDI0NywgODQsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIDI0NiwgMTk3LCAKLSAgICA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAyNDYsIDIyOCwgNDYsIAotICAgIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTI2LCA0NiwgNDcsIDI0NiwgMjUzLCA0NiwgNDcsIDI0NiwgMTg5LCA0NiwgCi0gICAgNDcsIDI0NywgNjAsIDQ2LCA0NywgMjQ2LCAxNTcsIDQ2LCA0NywgMjQ3LCAyOCwgNDYsIDQ3LCAyNDYsIDIyMCwgNDYsIDQ3LCAKLSAgICAyNDcsIDkxLCA0NiwgNDcsIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgCi0gICAgMjQ3LCA3NSwgNDYsIDQ3LCAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIAotICAgIDI0NywgMTA2LCA0NiwgNDcsIDI0NiwgMTIyLCA0NiwgNDcsIDI0NiwgMjQ5LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIAotICAgIDI0NywgNTYsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAyNDYsIDIxNiwgNDYsIDQ3LCAKLSAgICAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTM3LCA0NiwgNDcsIDI0NywgOCwgNDYsIDQ3LCAyNDYsIDIwMCwgNDYsIDQ3LCAyNDcsIAotICAgIDcxLCA0NiwgNDcsIDI0NiwgMTY4LCA0NiwgNDcsIDI0NywgMzksIDQ2LCA0NywgMjQ2LCAyMzEsIDQ2LCA0NywgMjQ3LCAKLSAgICAxMDIsIDQ2LCA0NywgMjQ2LCAxMjksIDQ2LCA0NywgMjQ3LCAwLCA0NiwgNDcsIDI0NiwgMTkyLCA0NiwgNDcsIDI0NywgNjMsIAotICAgIDQ2LCA0NywgMjQ2LCAxNjAsIDQ2LCA0NywgMjQ3LCAzMSwgNDYsIDQ3LCAyNDYsIDIyMywgNDYsIDQ3LCAyNDcsIDk0LCA0NiwgCi0gICAgNDcsIDI0NiwgMTQ0LCA0NiwgNDcsIDI0NywgMTUsIDQ2LCA0NywgMjQ2LCAyMDcsIDQ2LCA0NywgMjQ3LCA3OCwgNDYsIDQ3LCAKLSAgICAyNDYsIDE3NSwgNDYsIDQ3LCAyNDcsIDQ2LCA0NiwgNDcsIDI0NiwgMjM4LCA0NiwgNDcsIDI0NywgMTA5LCA0NiwgNDcsIAotICAgIDI0NiwgMTIwLCA0NiwgNDcsIDI0NiwgMjQ3LCA0NiwgNDcsIDI0NiwgMTgzLCA0NiwgNDcsIDI0NywgNTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAxNTEsIDQ2LCA0NywgMjQ3LCAyMiwgNDYsIDQ3LCAyNDYsIDIxNCwgNDYsIDQ3LCAyNDcsIDg1LCA0NiwgNDcsIAotICAgIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgCi0gICAgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAKLSAgICAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIAotICAgIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgCi0gICAgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAKLSAgICAxMjMsIDQ2LCA0NywgMjQ2LCAyNTAsIDQ2LCA0NywgMjQ2LCAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIAotICAgIDE1NCwgNDYsIDQ3LCAyNDcsIDI1LCA0NiwgNDcsIDI0NiwgMjE3LCA0NiwgNDcsIDI0NywgODgsIDQ2LCA0NywgMjQ2LCAKLSAgICAxMzgsIDQ2LCA0NywgMjQ3LCA5LCA0NiwgNDcsIDI0NiwgMjAxLCA0NiwgNDcsIDI0NywgNzIsIDQ2LCA0NywgMjQ2LCAxNjksIAotICAgIDQ2LCA0NywgMjQ3LCA0MCwgNDYsIDQ3LCAyNDYsIDIzMiwgNDYsIDQ3LCAyNDcsIDEwMywgNDYsIDQ3LCAyNDYsIDEzMCwgCi0gICAgNDYsIDQ3LCAyNDcsIDEsIDQ2LCA0NywgMjQ2LCAxOTMsIDQ2LCA0NywgMjQ3LCA2NCwgNDYsIDQ3LCAyNDYsIDE2MSwgNDYsIAotICAgIDQ3LCAyNDcsIDMyLCA0NiwgNDcsIDI0NiwgMjI0LCA0NiwgNDcsIDI0NywgOTUsIDQ2LCA0NywgMjQ2LCAxNDUsIDQ2LCA0NywgCi0gICAgMjQ3LCAxNiwgNDYsIDQ3LCAyNDYsIDIwOCwgNDYsIDQ3LCAyNDcsIDc5LCA0NiwgNDcsIDI0NiwgMTc2LCA0NiwgNDcsIAotICAgIDI0NywgNDcsIDQ2LCA0NywgMjQ2LCAyMzksIDQ2LCA0NywgMjQ3LCAxMTAsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCAKKyAgICAyNDEsIDUzLCA0OCwgNywgNCwgMSwgMTYwLCAyLCAyNDEsIDUzLCA0OCwgNywgNiwgMSwgMTYwLCAyLCAxODMsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMTgzLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzIsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMiwgCisgICAgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMyLCAyMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAKKyAgICAzMiwgMjIsIDI0MiwgMTM3LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzIsIDIyLCAyNDEsIDUzLCA0OCwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyNTAsIDMyLCAyMiwgMjQxLCA1MywgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMiwgMjIsIDE4MywgNywgCisgICAgNCwgMSwgMTYwLCAyLCAyNTAsIDMyLCAyMiwgMTgzLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzIsIDIyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzMiwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDI0MSwgNTMsIDQ4LCA3LCAKKyAgICA0LCAxLCAyNDAsIDE1NSwgMiwgMjQxLCA1MywgNDgsIDcsIDYsIDEsIDI0MCwgMTU1LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAorICAgIDI0MCwgMTU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAyNDEsIDUzLCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDUzLCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyNTAsIDMyLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzIsIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjUwLCAzMiwgMjIsIDI0MiwgMTM3LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzIsIDIyLCAyNDIsIDEzNywgNywgNiwgMSwgCisgICAgMTQ0LCAyLCAyNTAsIDMyLCAyMiwgMjQxLCA1MywgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMiwgMjIsIDI0MSwgNTMsIAorICAgIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzIsIDIyLCAxODMsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMiwgMjIsIDE4MywgCisgICAgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDMyLCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzIsIDIyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNTAsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNTAsIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNTAsIDIyLCAyNDIsIDEzNywgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI1MCwgCisgICAgMjIsIDI0MiwgMTM3LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjUwLCAyMiwgMjQxLCA1MywgNDgsIDcsIDQsIDEsIDE0NCwgCisgICAgMiwgMjQwLCAyNTAsIDIyLCAyNDEsIDUzLCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI1MCwgMjIsIDE4MywgNywgNCwgCisgICAgMSwgMTQ0LCAyLCAyNDAsIDI1MCwgMjIsIDE4MywgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI1MCwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCAyNDAsIDI1MCwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAorICAgIDEwNCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MSwgNTMsIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgNTMsIAorICAgIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjUwLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0MCwgMjUwLCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjUwLCAyMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNTAsIAorICAgIDIyLCAyNDIsIDEzNywgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI1MCwgMjIsIDI0MSwgNTMsIDQ4LCA3LCA0LCAxLCAxMDQsIAorICAgIDIsIDI0MCwgMjUwLCAyMiwgMjQxLCA1MywgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNTAsIDIyLCAxODMsIDcsIDQsIAorICAgIDEsIDEwNCwgMiwgMjQwLCAyNTAsIDIyLCAxODMsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNTAsIDIyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDEwNCwgMiwgMjQwLCAyNTAsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDIsIDEzNywgNywgNCwgCisgICAgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTM3LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTEsIAorICAgIDExOCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQxLCA1MywgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAKKyAgICAyNDEsIDUzLCA0OCwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE4MywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDE4MywgNywgNiwgCisgICAgMSwgMjMwLCAyMjQsIDIzMiwgMTg2LCA3LCA0LCAxLCAyMzAsIDIyNCwgMjMyLCAxODYsIDcsIDYsIDEsIDIzMCwgMjI0LCAKKyAgICAyMTQsIDEwNSwgNywgNCwgMSwgMjMwLCAyMjQsIDIxNCwgMTA1LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjMyLCAxMjQsIDcsIAorICAgIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyNCwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyMjQsIDE1NSwgMjYsIDQsIDEsIAorICAgIDI1NCwgMTQ1LCAyLCAyNDgsIDE1NCwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyMjQsIDE1NiwgMjIsIDIxNCwgMTMsIDI2LCAKKyAgICA0LCAxLCAyNTQsIDE0NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjU0LCAxNDUsIDIsIDIyNCwgCisgICAgMTU2LCAyMiwgMjI2LCAxMTEsIDI2LCA0LCAxLCAyNTQsIDE0NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMjYsIDExMSwgMjYsIDQsIAorICAgIDEsIDI1NCwgMTQ1LCAyLCAyMjQsIDE1NiwgMjIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjU0LCAxNDUsIDIsIDI0OCwgMTU1LCAKKyAgICAyMiwgMjI1LCAxNzYsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjI0LCAxNTUsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgCisgICAgMjQ4LCAxNTQsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjI0LCAxNTYsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAKKyAgICAxNDUsIDIsIDI0OCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgMTQ1LCAyLCAyMjQsIDE1NiwgMjIsIDIyNiwgCisgICAgMTExLCAyNiwgNiwgMSwgMjU0LCAxNDUsIDIsIDI0OCwgMTU1LCAyMiwgMjI2LCAxMTEsIDI2LCA2LCAxLCAyNTQsIDE0NSwgCisgICAgMiwgMjI0LCAxNTYsIDIyLCAyMjUsIDE3NiwgMjYsIDYsIDEsIDI1NCwgMTQ1LCAyLCAyNDgsIDE1NSwgMjIsIDIyNSwgMTc2LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCAxMDIsIDIsIDIyNCwgMTU1LCAyNiwgNCwgMSwgMjQ1LCAxMDIsIDIsIDI0OCwgMTU0LCAyNiwgNCwgCisgICAgMSwgMjQ1LCAxMDIsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTAyLCAyLCAyNDgsIDE1NSwgCisgICAgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwMiwgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMSwgMjYsIDQsIDEsIAorICAgIDI0NSwgMTAyLCAyLCAyNDgsIDE1NSwgMjIsIDIyNiwgMTExLCAyNiwgNiwgMSwgMjQ1LCAxMDIsIDIsIDIyNCwgMTU1LCAyNiwgCisgICAgNiwgMSwgMjQ1LCAxMDIsIDIsIDI0OCwgMTU0LCAyNiwgNiwgMSwgMjQ1LCAxMDIsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAKKyAgICAxMywgMjYsIDYsIDEsIDI0NSwgMTAyLCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDEwMiwgMiwgCisgICAgMjI0LCAxNTYsIDIyLCAyMjYsIDExMSwgMjYsIDYsIDEsIDI0NSwgMTAyLCAyLCAyNDgsIDE1NSwgMjIsIDIyNiwgMTExLCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTUsIDI2LCA0LCAxLCAyNDUsIDY1LCAyLCAyNDgsIDE1NCwgMjYsIDQsIDEsIAorICAgIDI0NSwgNjUsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU1LCAyMiwgCisgICAgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIDIyNCwgMTU2LCAyMiwgMjI2LCAxMTEsIDI2LCA0LCAxLCAyNDUsIDY1LCAKKyAgICAyLCAyNDgsIDE1NSwgMjIsIDIyNiwgMTExLCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAyMjUsIDE3NiwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU1LCAyMiwgMjI1LCAxNzYsIDI2LCA2LCAxLCAyNDUsIDY1LCAyLCAyMjQsIAorICAgIDE1NSwgMjYsIDYsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU0LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAKKyAgICAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA2NSwgCisgICAgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMSwgMjYsIDYsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU1LCAyMiwgMjI2LCAxMTEsIAorICAgIDI2LCA2LCAxLCAyNDUsIDY1LCAyLCAyMjQsIDE1NiwgMjIsIDIyNSwgMTc2LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjQ4LCAKKyAgICAxNTUsIDIyLCAyMjUsIDE3NiwgMjYsIDQsIDEsIDIzNSwgMTg3LCAyLCAyMjQsIDE1NSwgMjYsIDQsIDEsIDIzNSwgMTg3LCAKKyAgICAyLCAyNDgsIDE1NCwgMjYsIDQsIDEsIDIzNSwgMTg3LCAyLCAyMjQsIDE1NiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIAorICAgIDE4NywgMiwgMjQ4LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIDIyNCwgMTU2LCAyMiwgMjI2LCAKKyAgICAxMTEsIDI2LCA0LCAxLCAyMzUsIDE4NywgMiwgMjQ4LCAxNTUsIDIyLCAyMjYsIDExMSwgMjYsIDQsIDEsIDIzNSwgMTg3LCAKKyAgICAyLCAyMjQsIDE1NiwgMjIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIDI0OCwgMTU1LCAyMiwgMjI1LCAxNzYsIAorICAgIDI2LCA2LCAxLCAyMzUsIDE4NywgMiwgMjI0LCAxNTUsIDI2LCA2LCAxLCAyMzUsIDE4NywgMiwgMjQ4LCAxNTQsIDI2LCA2LCAKKyAgICAxLCAyMzUsIDE4NywgMiwgMjI0LCAxNTYsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODcsIDIsIDI0OCwgMTU1LCAKKyAgICAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTg3LCAyLCAyMjQsIDE1NiwgMjIsIDIyNiwgMTExLCAyNiwgNiwgMSwgCisgICAgMjM1LCAxODcsIDIsIDI0OCwgMTU1LCAyMiwgMjI2LCAxMTEsIDI2LCA2LCAxLCAyMzUsIDE4NywgMiwgMjI0LCAxNTYsIDIyLCAKKyAgICAyMjUsIDE3NiwgMjYsIDYsIDEsIDIzNSwgMTg3LCAyLCAyNDgsIDE1NSwgMjIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjI2LCAKKyAgICAyMDEsIDIsIDIyNCwgMTU1LCAyNiwgNCwgMSwgMjI2LCAyMDEsIDIsIDI0OCwgMTU0LCAyNiwgNCwgMSwgMjI2LCAyMDEsIDIsIAorICAgIDIyNCwgMTU2LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAxLCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCAKKyAgICA0LCAxLCAyMjYsIDIwMSwgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMSwgMjYsIDQsIDEsIDIyNiwgMjAxLCAyLCAyNDgsIAorICAgIDE1NSwgMjIsIDIyNiwgMTExLCAyNiwgNiwgMSwgMjI2LCAyMDEsIDIsIDIyNCwgMTU1LCAyNiwgNiwgMSwgMjI2LCAyMDEsIAorICAgIDIsIDI0OCwgMTU0LCAyNiwgNiwgMSwgMjI2LCAyMDEsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAxLCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMSwgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIAorICAgIDExMSwgMjYsIDYsIDEsIDIyNiwgMjAxLCAyLCAyNDgsIDE1NSwgMjIsIDIyNiwgMTExLCAyNiwgNCwgMSwgMjE0LCAxNTgsIAorICAgIDIsIDIyNCwgMTU1LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgCisgICAgMTU2LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAKKyAgICAyMTQsIDE1OCwgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NSwgMjIsIAorICAgIDIyNiwgMTExLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU2LCAyMiwgMjI1LCAxNzYsIDI2LCA0LCAxLCAyMTQsIAorICAgIDE1OCwgMiwgMjQ4LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgMjYsIDYsIAorICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTUsIAorICAgIDIyLCAyMjYsIDExMSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NSwgMjIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgCisgICAgMjI2LCAyMDMsIDIsIDIyNCwgMTU1LCAyNiwgNCwgMSwgMjI2LCAyMDMsIDIsIDI0OCwgMTU0LCAyNiwgNCwgMSwgMjI2LCAKKyAgICAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAzLCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgCisgICAgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMywgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMSwgMjYsIDQsIDEsIDIyNiwgMjAzLCAyLCAKKyAgICAyNDgsIDE1NSwgMjIsIDIyNiwgMTExLCAyNiwgNCwgMSwgMjI2LCAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjI1LCAxNzYsIAorICAgIDI2LCA0LCAxLCAyMjYsIDIwMywgMiwgMjQ4LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjYsIDYsIDEsIDIyNiwgMjAzLCAyLCAKKyAgICAyMjQsIDE1NSwgMjYsIDYsIDEsIDIyNiwgMjAzLCAyLCAyNDgsIDE1NCwgMjYsIDYsIDEsIDIyNiwgMjAzLCAyLCAyMjQsIAorICAgIDE1NiwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMywgMiwgMjQ4LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgCisgICAgMjI2LCAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjI2LCAxMTEsIDI2LCA2LCAxLCAyMjYsIDIwMywgMiwgMjQ4LCAxNTUsIDIyLCAKKyAgICAyMjYsIDExMSwgMjYsIDYsIDEsIDIyNiwgMjAzLCAyLCAyMjQsIDE1NiwgMjIsIDIyNSwgMTc2LCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDMsIDIsIDI0OCwgMTU1LCAyMiwgMjI1LCAxNzYsIDI2LCA0LCAxLCAyNTQsIDE0NSwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIAorICAgIDI1NCwgMTQ1LCAyLCAyMjYsIDExMSwgMjYsIDQsIDEsIDI0NSwgMTAyLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAKKyAgICAxMDIsIDIsIDIyNiwgMTExLCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIAorICAgIDIyNiwgMTExLCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NywgMiwgMjI2LCAKKyAgICAxMTEsIDI2LCA0LCAxLCAyMjYsIDIwMSwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAxLCAyLCAyMjYsIDExMSwgMjYsIAorICAgIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgMTExLCAyNiwgNCwgMSwgCisgICAgMjI2LCAyMDMsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMywgMiwgMjI2LCAxMTEsIDI2LCA0LCAxLCAyNTQsIAorICAgIDE0NSwgMiwgMjI0LCAxNTYsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyNDgsIDE1NSwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDUsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjU0LCAxNDUsIDIsIDI0OCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDUsIAorICAgIDIsIDIyNCwgMTU2LCAyMiwgMjI2LCAxMTIsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyNDgsIDE1NSwgCisgICAgMjIsIDIyNiwgMTEyLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NSwgMiwgMjI0LCAxNTYsIDIyLCAyMjUsIAorICAgIDE3NywgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDUsIDIsIDI0OCwgMTU1LCAyMiwgMjI1LCAxNzcsIDIyLCAKKyAgICAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTQ1LCAyLCAyMjQsIDE1NiwgMjIsIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjU0LCAKKyAgICAxNDUsIDIsIDI0OCwgMTU1LCAyMiwgMjI0LCAxNjgsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjI0LCAxNTYsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjI0LCAxNjgsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAKKyAgICAxNjgsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMiwgMjIsIDIyNCwgMTY4LCAyNiwgNiwgCisgICAgMSwgMjU0LCAxNDUsIDIsIDI0OCwgMTU1LCAyMiwgMjI2LCAxMTIsIDIyLCAyMjQsIDE2OCwgMjYsIDYsIDEsIDI1NCwgMTQ1LCAKKyAgICAyLCAyMjQsIDE1NiwgMjIsIDIyNSwgMTc3LCAyMiwgMjI0LCAxNjgsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjQ4LCAxNTUsIAorICAgIDIyLCAyMjUsIDE3NywgMjIsIDIyNCwgMTY4LCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAyMTAsIDIxOSwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY1LCAyLCAyMjQsIAorICAgIDE1NiwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU1LCAyMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAyMjYsIDExMiwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMjYsIDExMiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAyMjUsIDE3NywgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NSwgCisgICAgMiwgMjQ4LCAxNTUsIDIyLCAyMjUsIDE3NywgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIAorICAgIDIyLCAyMjQsIDE2OCwgMjYsIDYsIDEsIDI0NSwgNjUsIDIsIDI0OCwgMTU1LCAyMiwgMjI0LCAxNjgsIDI2LCA2LCAxLCAKKyAgICAyNDUsIDY1LCAyLCAyMjQsIDE1NiwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE2OCwgMjYsIDYsIDEsIDI0NSwgNjUsIDIsIAorICAgIDI0OCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAKKyAgICAyMjYsIDExMiwgMjIsIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMjYsIDExMiwgMjIsIAorICAgIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjQ1LCA2NSwgMiwgMjI0LCAxNTYsIDIyLCAyMjUsIDE3NywgMjIsIDIyNCwgMTY4LCAyNiwgCisgICAgNiwgMSwgMjQ1LCA2NSwgMiwgMjQ4LCAxNTUsIDIyLCAyMjUsIDE3NywgMjIsIDIyNCwgMTY4LCAyNiwgNCwgMSwgMjI2LCAKKyAgICAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMywgMiwgMjQ4LCAxNTUsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAzLCAyLCAyMjQsIDE1NiwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAorICAgIDEsIDIyNiwgMjAzLCAyLCAyNDgsIDE1NSwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAzLCAKKyAgICAyLCAyMjQsIDE1NiwgMjIsIDIyNiwgMTEyLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMywgMiwgMjQ4LCAxNTUsIAorICAgIDIyLCAyMjYsIDExMiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjI1LCAKKyAgICAxNzcsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAzLCAyLCAyNDgsIDE1NSwgMjIsIDIyNSwgMTc3LCAyMiwgCisgICAgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwMywgMiwgMjI0LCAxNTYsIDIyLCAyMjQsIDE2OCwgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAzLCAyLCAyNDgsIDE1NSwgMjIsIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjI2LCAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjI2LCAyMDMsIDIsIDI0OCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgCisgICAgMTY4LCAyNiwgNiwgMSwgMjI2LCAyMDMsIDIsIDIyNCwgMTU2LCAyMiwgMjI2LCAxMTIsIDIyLCAyMjQsIDE2OCwgMjYsIDYsIAorICAgIDEsIDIyNiwgMjAzLCAyLCAyNDgsIDE1NSwgMjIsIDIyNiwgMTEyLCAyMiwgMjI0LCAxNjgsIDI2LCA2LCAxLCAyMjYsIDIwMywgCisgICAgMiwgMjI0LCAxNTYsIDIyLCAyMjUsIDE3NywgMjIsIDIyNCwgMTY4LCAyNiwgNiwgMSwgMjI2LCAyMDMsIDIsIDI0OCwgMTU1LCAKKyAgICAyMiwgMjI1LCAxNzcsIDIyLCAyMjQsIDE2OCwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIAorICAgIDI1NCwgMTQ1LCAyLCAyMzEsIDIzMywgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCAKKyAgICA0LCAxLCAyNTQsIDE0NSwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NSwgMiwgMjI2LCAxMTIsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyMjUsIDE3NiwgMjYsIDQsIDEsIDI1NCwgMTQ1LCAyLCAyMjUsIDE3NywgCisgICAgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNDUsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjU0LCAxNDUsIDIsIAorICAgIDIzMSwgMjMzLCAyNiwgNiwgMSwgMjU0LCAxNDUsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjI2LCAKKyAgICAxMTEsIDI2LCA2LCAxLCAyNTQsIDE0NSwgMiwgMjI0LCAxNjgsIDI2LCAyMzQsIDMsIDI2LCAyMjQsIDE2OCwgMjYsIDIyNCwgCisgICAgMTU1LCAyNiwgMjI1LCAxNzYsIDI2LCAyNDcsIDI1MywgMjIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY1LCAyLCAKKyAgICAyMjYsIDExMiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NSwgMiwgMjI1LCAxNzYsIDI2LCA0LCAxLCAyNDUsIAorICAgIDY1LCAyLCAyMjUsIDE3NywgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjQ1LCAxMDIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKKyAgICAyNDUsIDEwMiwgMiwgMjI2LCAxMTEsIDI2LCA2LCAxLCAyNDUsIDY1LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA2NSwgCisgICAgMiwgMjI2LCAxMTEsIDI2LCA2LCAxLCAyNDUsIDY1LCAyLCAyMjQsIDE2OCwgMjYsIDIyNCwgMTU2LCAyMiwgMjE0LCAxMywgCisgICAgMjYsIDIyNCwgMTU2LCAyMiwgMjI2LCAxMTEsIDI2LCAyMjQsIDE1NiwgMjIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjM1LCAKKyAgICAxODcsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIDIzMSwgMjMzLCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIAorICAgIDI0NywgMjUzLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg3LCAyLCAyNDcsIDI1MywgMjIsIDIyNiwgMTExLCAyNiwgCisgICAgNCwgMSwgMjM1LCAxODcsIDIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjM1LCAxODcsIDIsIDI0NywgMjUzLCAyMiwgMjI1LCAKKyAgICAxNzYsIDI2LCA2LCAxLCAyMzUsIDE4NywgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMzUsIDE4NywgMiwgMjMxLCAyMzMsIAorICAgIDI2LCA2LCAxLCAyMzUsIDE4NywgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTg3LCAyLCAyMjYsIDExMSwgMjYsIDI0OCwgCisgICAgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDI0OCwgMTU1LCAyMiwgMjI2LCAxMTEsIDI2LCAyNDgsIDE1NSwgMjIsIDIyNSwgMTc2LCAKKyAgICAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIzMSwgMjMzLCAyNiwgNCwgCisgICAgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUzLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MywgCisgICAgMjIsIDIyNiwgMTExLCAyNiwgNCwgMSwgMjIzLCAzOSwgMiwgMjI0LCAxNTUsIDI2LCA0LCAxLCAyMjMsIDM5LCAyLCAyNDgsIAorICAgIDE1NCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjUsIDE3NiwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MywgCisgICAgMjIsIDIyNSwgMTc2LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIAorICAgIDIzMSwgMjMzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAKKyAgICAxMTEsIDI2LCA2LCAxLCAyMjMsIDM5LCAyLCAyNDgsIDE1NCwgMjYsIDI0NywgMjUzLCAyMiwgMjE0LCAxMywgMjYsIDI0NywgCisgICAgMjUzLCAyMiwgMjI2LCAxMTEsIDI2LCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDMsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAzLCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAzLCAyLCAyMjYsIDExMiwgCisgICAgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDMsIDIsIDIyNSwgMTc2LCAyNiwgNCwgMSwgMjI2LCAyMDMsIDIsIAorICAgIDIyNSwgMTc3LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwMSwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAxLCAyLCAyMjYsIDExMSwgMjYsIDYsIDEsIDIyNiwgMjAzLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDMsIDIsIAorICAgIDIyNiwgMTExLCAyNiwgNiwgMSwgMjI2LCAyMDMsIDIsIDIyNCwgMTY4LCAyNiwgMjI2LCAxMTEsIDI2LCAyNDgsIDE1NCwgCisgICAgMjQ1LCAxNTIsIDIyNCwgMjgsIDI0NSwgMTYxLCAyMjQsIDI4LCAyNDUsIDE1MiwgMjE5LCAxOSwgMjQ1LCAxNjEsIDIxOSwgCisgICAgMTksIDIxNiwgMTQyLCAyMTksIDE5LCAyNDQsIDEwLCAyMTksIDE5LCAyMTksIDEyNCwgMjE5LCAxOSwgMjQ0LCAxMTMsIAorICAgIDIxOSwgMTksIDIyNCwgMTQyLCAyMTksIDE5LCAyMTYsIDE3MSwgMjE5LCAxOSwgMjQyLCAzNiwgMjE5LCAxOSwgMjEwLCA4NywgCisgICAgMjExLCAyNDUsIDIxOSwgMTksIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDY4LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjM1LCAKKyAgICA2NCwgMjMzLCAzOSwgNzgsIDIyMiwgMjQ0LCA3OCwgMjQwLCAxNjksIDIyOCwgNjksIDI0MCwgMTY5LCAyNDQsIDExMywgCisgICAgMjQ4LCAxNTcsIDI0NSwgMTUyLCAyNDgsIDE1NywgMjQ1LCAxNjEsIDI0OCwgMTU3LCAyMDMsIDEzMCwgNTIsIDY3LCAyMzIsIAorICAgIDIxNCwgNTIsIDEyMSwgMjMyLCAyMTQsIDQzLCAyMTksIDE1NiwgMjIzLCAyNTUsIDc4LCA0NCwgMjE5LCAxNTYsIDIyMywgCisgICAgMjU1LCA3OCwgMjE5LCAxNTYsIDIzMiwgMTEwLCAyMjMsIDI1NSwgNzgsIDIxOSwgMTU2LCAyNDEsIDE2NCwgMjIzLCAyNTUsIAorICAgIDc4LCA0MywgNTIsIDIyMywgMjU1LCA3OCwgNDQsIDUyLCAyMjMsIDI1NSwgNzgsIDUyLCAyMzIsIDExMCwgMjIzLCAyNTUsIAorICAgIDc4LCA1MiwgMjQxLCAxNjQsIDIyMywgMjU1LCA3OCwgMjQ4LCAyMDYsIDUyLCAyNDgsIDIwNiwgMjUxLCAxMTQsIDIxNSwgCisgICAgMjIzLCAyNTEsIDExNCwgMTIzLCA1OSwgMjMzLCA1NywgMTEzLCA1OSwgMjMzLCA1NywgMjAzLCAyNDUsIDE2NCwgMjQwLCAKKyAgICAxNjcsIDIyNSwgMTEsIDIzMiwgMjE1LCAyMjAsIDEzOCwgMjI2LCAxNiwgMjIwLCAxMzgsIDIzMywgMzksIDI0NSwgMTU5LCAKKyAgICAyMjIsIDI0NCwgMjQ1LCAxNTksIDIyNCwgMjQ3LCAyNDcsIDE5NywgMjQ0LCAyMCwgMjMzLCAzOSwgMjI2LCAxMTgsIDIyMiwgCisgICAgMjQ0LCAyMjYsIDExOCwgMjI5LCAxOTUsIDIyOCwgNzQsIDIxOSwgMTksIDIyNSwgMTg0LCAyMzAsIDE5NCwgNTAsIDIyNSwgCisgICAgMTg0LCAyMTYsIDI0OSwgMjE2LCAxNDksIDUwLCAyMjQsIDE5MSwgNTIsIDIyNCwgMTkxLCAyMTUsIDIxMiwgMjI0LCAxOTEsIAorICAgIDIyMywgNTAsIDIyNCwgMTkxLCAyMjMsIDUwLCA1MiwgMjI0LCAxOTEsIDIyMywgNTAsIDIxNSwgMjEyLCAyMjQsIDE5MSwgCisgICAgMjUwLCAyMzksIDIxOSwgMTU2LCAyMzMsIDQzLCAyNTQsIDExMSwgMjIzLCAyNTUsIDc4LCAyMTksIDE1NiwgMjIyLCAyNDgsIAorICAgIDI1NCwgMTExLCAyMjMsIDI1NSwgNzgsIDIyMywgMTA4LCA3OCwgNTIsIDI0NSwgMzIsIDc4LCAyMzUsIDIwMiwgMjI2LCAKKyAgICAxMjAsIDIxNCwgMTgwLCAxMzUsIDIxNiwgMTEyLCAyNTAsIDI0MCwgMjM1LCAyMTcsIDIyNSwgMTEsIDI1MywgMjE1LCAyNDAsIAorICAgIDE3MCwgMjUxLCAxMTQsIDI0NCwgMywgMjE5LCA5NiwgNDMsIDQyLCAyNTEsIDE1OSwgMiwgMjI0LCA4LCA0NCwgNDIsIDI1MSwgCisgICAgMTU5LCAyLCAyMjQsIDgsIDUyLCAyMjQsIDE0LCA3OCwgMjI0LCAxNCwgMjQ1LCAzMiwgNzgsIDI0NSwgMzIsIDIyNCwgMTQsIAorICAgIDc4LCAyMTYsIDcxLCA1LCAyNDUsIDY2LCAyMjMsIDUwLCAyMjUsIDY5LCA1MCwgODUsIDE0MCwgMjUxLCAxMTQsIDg1LCA5NywgCisgICAgMjUxLCAxMTQsIDEyMSwgMjUzLCAyMTcsIDIyMywgNTAsIDIyMCwgMTUxLCAyNTAsIDIsIDIxNCwgMTYzLCAxMTMsIDI1MywgCisgICAgMjE2LCAyNTQsIDE1OSwgMjEzLCAxODgsIDI0OSwgMjE4LCAyMzAsIDE4MywgNTAsIDIxNywgMjM1LCAyNDgsIDE1NywgMjM1LCAKKyAgICAxOTQsIDIxNCwgMTgwLCAyNDQsIDUzLCAyMjQsIDE0MiwgNzgsIDEzNCwgNTksIDIyNCwgMTQxLCAyMjQsIDI1LCAyMjQsIAorICAgIDE5MSwgMjQ0LCAxMiwgNTksIDIyNCwgMTQxLCAyNDQsIDgyLCA1OSwgMjI0LCAxNDEsIDExMywgNTksIDIyNCwgMTQxLCAKKyAgICAyNDQsIDEyLCA1OSwgNzgsIDI0NiwgMTE5LCAyNDksIDEzMSwgMjE1LCAyMjIsIDY3LCAyNDQsIDEyLCAyNDcsIDExOSwgCisgICAgMjMxLCA4MywgMTEsIDIxOSwgMTksIDIxMSwgMjA5LCAyMzUsIDY0LCAyNDMsIDIyOCwgMjU0LCA1MywgMjM1LCAxOTIsIAorICAgIDIxNiwgODYsIDIzNSwgMTkyLCAyMjAsIDEzOCwgMjM1LCAxOTIsIDIyNSwgMjMsIDIzNSwgMjI5LCAyMTcsIDE4MywgMjE3LCAKKyAgICAyNTIsIDI1NSwgNiwgMjE3LCAxODMsIDIxNywgMjUyLCAyMzUsIDIyOSwgMTAsIDI0NCwgMjEsIDIyMCwgODEsIDI1NSwgNiwgCisgICAgMTAsIDI0NCwgMjEsIDIyMCwgODEsIDIyOSwgMTkwLCAyMSwgMjIwLCA4MiwgMjI4LCA3MCwgMjEsIDIyMCwgODIsIDIxOCwgCisgICAgMjQsIDIxMCwgODYsIDIxOCwgMjQsIDcsIDQsIDEsIDczLCAyMTgsIDI0LCAxNjEsIDIxOCwgMjQsIDE4OSwgMjE4LCAyNCwgCisgICAgMTk0LCAyMTgsIDI0LCAxOTgsIDIxOCwgMjQsIDE5NSwgMjE4LCAyNCwgMjAwLCAyMTgsIDI0LCA5NiwgNTAsIDIxOCwgMjQsIAorICAgIDIzMCwgMTgyLCAyMTgsIDI0LCAyNDUsIDk5LCA1MCwgMjE4LCAyNCwgNDMsIDIyNiwgNCwgMjE4LCAyNCwgNDQsIDIyNiwgNCwgCisgICAgMjE4LCAyNCwgNywgNCwgMSwgMjMwLCAyNiwgMjE4LCA2NiwgMjEwLCA4NiwgMjE4LCA2NiwgMTEwLCAyMTgsIDY2LCAxMDUsIAorICAgIDIxOCwgNjYsIDE1OCwgMjE4LCA2NiwgMTYxLCAyMTgsIDY2LCAxODksIDIxOCwgNjYsIDE5NCwgMjE4LCA2NiwgMTk4LCAKKyAgICAyMTgsIDY2LCAxOTUsIDIxOCwgNjYsIDIwMCwgMjE4LCA2NiwgOTYsIDUwLCAyMTgsIDY2LCAyMzAsIDE4MiwgMjE4LCA2NiwgCisgICAgMjQ1LCA5OSwgNTAsIDIxOCwgNjYsIDQzLCAyMjYsIDQsIDIxOCwgNjYsIDQ0LCAyMjYsIDQsIDcsIDIxOCwgNjYsIDQsIDEsIAorICAgIDYxLCA3LCAyMTgsIDY2LCA0LCAxLCA3NSwgNywgMjE4LCA2NiwgNCwgMSwgNzYsIDcsIDIxOCwgNjYsIDQsIDEsIDIxMSwgCisgICAgMTc4LCA3LCAyMTgsIDY2LCA0LCAxLCAyMjEsIDE5NiwgNywgMjE4LCA2NiwgNCwgMSwgMjQyLCA2MSwgNywgMjE4LCA2NiwgCisgICAgNCwgMSwgMjM1LCAyNCwgNywgMjE4LCA2NiwgNCwgMSwgMTU2LCA3LCAyMTgsIDY2LCA0LCAxLCAxOTMsIDcsIDIxOCwgNjYsIAorICAgIDQsIDEsIDIzMCwgMjYsIDcsIDIxOCwgNjYsIDQsIDEsIDIyNiwgMTA2LCA3LCAyMTgsIDY2LCA0LCAxLCAyMjIsIDkyLCA3LCAKKyAgICAyMTgsIDY2LCA0LCAxLCAyMTcsIDE1MywgMjQ1LCA0NywgNTAsIDI0OSwgMjI4LCA1MCwgMjQ5LCAxMTgsIDUwLCAyNDMsIAorICAgIDI1MiwgMjQzLCAyNTUsIDUwLCAyMzIsIDE5OSwgNTAsIDIzMCwgMTk1LCA1MCwgMjI5LCAyMTEsIDUwLCAyMjUsIDE2MywgCisgICAgNTAsIDIyMiwgMTE5LCA1MCwgMjExLCAyMTcsIDUwLCAxNjYsIDIyMCwgNTAsIDUwLCAyNDcsIDEyOCwgNTAsIDI0NSwgNDgsIAorICAgIDUwLCAyMzQsIDc3LCA1MCwgMjE1LCAxMTMsIDUwLCAyNDYsIDEwMiwgNTAsIDI0MywgNDEsIDIyNSwgMTk0LCA1MCwgMjI1LCAKKyAgICAxNjEsIDUwLCAyNDIsIDExMCwgNTAsIDI1MywgMTgzLCA1MCwgMjQwLCAyMjksIDUwLCAyNTAsIDE4NiwgNTAsIDIzMiwgCisgICAgMTkyLCAyMTYsIDQsIDUwLCAyMTksIDEsIDUwLCAyMTYsIDI0NiwgNTAsIDIzNSwgMjQyLCAyMjIsIDExOSwgNTAsIDIxNSwgCisgICAgOTcsIDIzMiwgMTk5LCA1MCwgMzgsIDQzLCAyNDIsIDAsIDQ4LCAzOCwgNDQsIDI0MiwgMCwgNDgsIDM4LCAxOTksIDY3LCAKKyAgICAyMzIsIDIxNSwgMjI2LCAxMjEsIDM4LCAyMTksIDI1MiwgNjcsIDIzMiwgMjE1LCAyMjYsIDEyMSwgMzgsIDI1NCwgODksIAorICAgIDgwLCA0OCwgMzgsIDI1MCwgMywgODAsIDQ4LCAzOCwgNDMsIDgwLCA0OCwgMzgsIDQ0LCA4MCwgNDgsIDM4LCAyMjIsIDIzNSwgCisgICAgMjI2LCAxMjEsIDM4LCAyNTAsIDMsIDIyMiwgMjM1LCAyMjYsIDEyMSwgMzgsIDI1NCwgODksIDIyMiwgMjM1LCAyMjYsIAorICAgIDEyMSwgMzgsIDEzNCwgMTcwLCA0OCwgMzgsIDI0NCwgMTIsIDE3MCwgNDgsIDM4LCAyNDUsIDE0NywgMjUwLCAzNiwgMzgsIAorICAgIDI0NSwgMTQ3LCAyMTgsIDIzNSwgMzgsIDI0NSwgMTQ3LCAyNDcsIDI0OSwgMzgsIDI0NSwgMTQ3LCAyNTAsIDM3LCAyNTIsIAorICAgIDE4MSwgMzgsIDQzLCA0NCwgODAsIDQ4LCAzOCwgMjQ1LCAxNDcsIDIyMSwgMTg5LCAzOCwgMjQ1LCAxNDcsIDIzNCwgMTM2LCAKKyAgICAzOCwgMjQ1LCAxNDcsIDIxNCwgMTU1LCAyMjUsIDgsIDIxNSwgMjI2LCAzOCwgMjIzLCA1MSwgMjE5LCA0OCwgMjI2LCAxMjEsIAorICAgIDM4LCA1MiwgNjcsIDIxOCwgMTA0LCAyMjYsIDEyMSwgMzgsIDI1NCwgOTksIDg3LCAzOCwgMjE1LCAyMTIsIDIxNCwgMTgyLCAKKyAgICAzOCwgMjExLCAyNDcsIDI1MSwgMTQxLCA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTIxLCAzOCwgMTk5LCA1MiwgMjE5LCA0OCwgCisgICAgMjI2LCAxMjEsIDM4LCA5NywgMjQyLCAwLCAyLCAyNTIsIDE0MCwgMjQ2LCAxMDQsIDM4LCAxNDAsIDI0MiwgMCwgMiwgMjUyLCAKKyAgICAxNDAsIDI0NiwgMTA0LCAzOCwgNDMsIDgwLCA1MSwgMzgsIDQ0LCA4MCwgNTEsIDM4LCAyNTMsIDIxOCwgNDgsIDI1NSwgMTIsIAorICAgIDIyNiwgMjMyLCAyNTQsIDI1MiwgMjE2LCA0MywgMjE2LCAxOTcsIDIxOCwgNzUsIDEzOSwgNiwgMjUxLCA2NywgMjQ4LCA3MiwgCisgICAgMjUwLCAxNzksIDI1MCwgMTc2LCAyMzIsIDIxNSwgODcsIDI1MCwgMjQxLCAyMjYsIDIzMiwgMjUxLCAyNywgMjE0LCAxODksIAorICAgIDI0NSwgNDksIDI0OSwgMTkyLCAyMjEsIDE4NiwgMjQ4LCA3MiwgMjQ0LCAxODAsIDExOSwgNCwgMjQzLCAyMDMsIDExOSwgNiwgCisgICAgMjQyLCA2MSwgMjUxLCAyMjAsIDYsIDI0MiwgNjEsIDEzOSwgNiwgMjQyLCA2MSwgMjI1LCAzOCwgMjQ5LCAxOTIsIDIyNSwgCisgICAgMzgsIDI0OSwgMTkzLCAxMTcsIDExMywgMjI1LCAxMDksIDExOSwgNiwgNzMsIDI1MSwgMjIwLCA2LCA3MywgMTE5LCA2LCAKKyAgICAxNTYsIDExOSwgNCwgMTU2LCAyMzMsIDE1MCwgNTcsIDI1MiwgMTQyLCA4NywgMTM5LCA2LCAyMzAsIDI2LCAyMjcsIDE5NywgCisgICAgNTAsIDIxOSwgMzIsIDIyMywgMTIwLCAyNDksIDE2MywgMTE5LCA2LCAyMjYsIDEwNiwgMTM5LCA2LCAyMjYsIDEwNiwgMTM5LCAKKyAgICA2LCAyMjQsIDk3LCAxMTksIDYsIDE1MywgMjUxLCAyMjAsIDYsIDE1MywgMTM5LCA2LCAxNTMsIDIyNCwgMTk3LCAyMTcsIAorICAgIDcyLCAyMjMsIDYzLCAyMjAsIDEzMywgNzgsIDIxNywgMiwgNTAsIDIxNSwgMjU0LCAxNjQsIDUwLCAyMTMsIDI0MCwgMTM5LCAKKyAgICA2LCAyMTAsIDE1OSwgMjI2LCAxMzQsIDUwLCAyMjYsIDIyMiwgNTAsIDIzNSwgMTk0LCAyMjYsIDIyMiwgNTAsIDI1MSwgCisgICAgMjIwLCA2LCAyMTAsIDE1OSwgMjE1LCA5NCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyMzQsIDE3NCwgNTAsIDI1NCwgMTA4LCAKKyAgICA1MCwgMTE5LCA2LCAyNTMsIDE1OSwgMjUxLCAyMjAsIDYsIDI1MSwgNjcsIDI0NSwgNjksIDg3LCAxMTksIDQsIDc1LCAxMTksIAorICAgIDYsIDc1LCAxMTksIDYsIDI0NSwgNywgMjE1LCA5NCwgNiwgMjQ1LCA3LCAxMTksIDYsIDE5MywgMTE5LCA0LCA3NiwgMTEyLCAKKyAgICA4NywgMjUyLCAzMCwgODcsIDI0MiwgMjAzLCA4NywgMjQ4LCAxOTEsIDg3LCAyMzUsIDIzMywgMjE5LCAzMCwgMjIyLCAxODgsIAorICAgIDYsIDIyNCwgOTcsIDI0NCwgMTgzLCA1MCwgMTM5LCA0LCAyMjUsIDEwOSwgMTM5LCA0LCAyNDMsIDEwOCwgMTM5LCA2LCAKKyAgICAyNDMsIDEwOCwgMTM5LCA2LCAyMjUsIDEwOSwgMTM5LCAyMzAsIDI1LCAyMTgsIDQxLCAyMTUsIDk0LCAzNSwgNiwgMjQzLCAKKyAgICAyMDMsIDIxNSwgOTQsIDM1LCA2LCAxNTYsIDIyMywgNTAsIDM1LCA2LCAxNTYsIDIxNSwgOTQsIDM1LCA2LCAyMTEsIDExNywgCisgICAgMTM5LCAzMiwgNiwgMjQ5LCA2MSwgMTM5LCAzMiwgNCwgMjQ5LCA2MSwgMTM5LCAzMiwgNCwgNzUsIDEzOSwgMzIsIDQsIDczLCAKKyAgICAxMzksIDMyLCA0LCAyMzUsIDE0NSwgMjI0LCAxNzEsIDIzMiwgMjE0LCAyMTUsIDk0LCAyNTQsIDEyNywgMjI1LCAxODQsIAorICAgIDUwLCAyNTQsIDE4MSwgMjE1LCA5NCwgNCwgMjQ1LCA3LCAxNiwgMzEsIDIyMSwgMjUzLCAyMTksIDMwLCAyMTIsIDExNCwgCisgICAgMjQ0LCAzLCAxMjMsIDIyMCwgMTE5LCAyMTIsIDExNCwgMjQ0LCAzLCAxMjMsIDIyOCwgMTk1LCAyMTIsIDExNCwgMjQ0LCAzLCAKKyAgICAxMjMsIDIxNiwgMjQyLCAyMTIsIDExNCwgMjQ0LCAzLCAxMjMsIDIxNiwgMTY5LCAyMTIsIDExNCwgMjQ0LCAzLCAxMTMsIAorICAgIDIxNiwgMTY3LCAyMTIsIDExNCwgMjQ0LCAzLCAxMjMsIDI0NCwgMTE4LCAyMTIsIDExNCwgMjQ0LCAzLCAxMTMsIDI0NCwgCisgICAgMTE3LCAyMTIsIDExNCwgMjQ0LCAzLCAxMzQsIDI0NCwgMTE3LCAyMTIsIDExNCwgMjQ0LCAzLCAyNDQsIDEyLCAyNDQsIAorICAgIDExNywgMjEyLCAxMTQsIDI0NCwgMywgMTIzLCAyMTksIDExNiwgMjEyLCAxMTQsIDI0NCwgMywgMjQ0LCA4MiwgMjE5LCAKKyAgICAxMTQsIDIxMiwgMTE0LCAyNDQsIDMsIDEyMywgMjQ1LCAxODksIDIxMiwgMTE0LCAyNDQsIDMsIDEzNCwgMjQ1LCAxODcsIAorICAgIDIxMiwgMTE0LCAyNDQsIDMsIDI0NCwgODIsIDI0NSwgMTg3LCAyMTIsIDExNCwgMjQ0LCAzLCAyMjAsIDEyMywgMjQ1LCAKKyAgICAxODcsIDI0NCwgMywgMjI3LCAxOTgsIDExMCwgMjIyLCAxOTksIDIyNywgMTk5LCAxMTAsIDIyMiwgMTk5LCAyMjcsIDE5OSwgCisgICAgMTA1LCAyMjIsIDE5OSwgMjI3LCAxOTksIDE1OCwgMjIyLCAxOTksIDIyNywgMTk5LCAxNjEsIDIyMiwgMTk5LCAyMjcsIAorICAgIDE5OSwgMTg5LCAyMjIsIDE5OSwgMjI3LCAxOTksIDE5NCwgMjIyLCAxOTksIDIyNywgMTk5LCAxOTgsIDIyMiwgMTk5LCAKKyAgICAyMjcsIDE5OSwgMTk1LCAyMjIsIDE5OSwgMjI3LCAxOTksIDIwMCwgMjIyLCAxOTksIDIyNywgMTk5LCAyMTYsIDI0OCwgCisgICAgMjIyLCAxOTksIDIyNywgMTk5LCAyNDUsIDE2OCwgMjIyLCAxOTksIDIyNywgMTk5LCAyMTUsIDc2LCAyMjIsIDE5OSwgMjI3LCAKKyAgICAxOTksIDI0NCwgMTE1LCAyMjIsIDE5OSwgMjI3LCAxOTksIDEyMywgMjQwLCAyMTEsIDIyMiwgMTk5LCAyMjcsIDE5OSwgCisgICAgMjQ0LCA4MiwgMjQwLCAyMTEsIDIyMiwgMTk5LCAyMjcsIDE5OSwgMTIzLCAyMTYsIDE0OCwgNCwgMjIyLCAxOTksIDIyNywgCisgICAgMTk5LCAxMTAsIDQsIDIyMiwgMTk5LCAyMjcsIDE5OSwgMTA1LCA0LCAyMjIsIDE5OSwgMjI3LCAxOTksIDE1OCwgNCwgMjIyLCAKKyAgICAxOTksIDIyNywgMTk5LCAxNjEsIDQsIDIyMiwgMTk5LCAyMjcsIDE5OSwgMTg5LCA0LCAyMjIsIDE5OSwgMjI3LCAxOTksIAorICAgIDE5NCwgNCwgMjIyLCAxOTksIDIyNywgMTk5LCAxOTgsIDQsIDIyMiwgMTk5LCAyMjcsIDE5OSwgMTk1LCA0LCAyMjIsIDE5OSwgCisgICAgMjI3LCAxOTksIDIwMCwgNCwgMjIyLCAxOTksIDIyNywgMTk5LCAyMTYsIDI0OCwgNCwgMjIyLCAxOTksIDIyNywgMTk5LCAKKyAgICAyNDUsIDE2OCwgNCwgMjIyLCAxOTksIDIyNywgMTk5LCAyMTUsIDc2LCA0LCAyMjIsIDE5OSwgMjI3LCAxOTksIDI0NCwgCisgICAgMTE1LCA0LCAyMjIsIDE5OSwgMjI3LCAxOTksIDEyMywgMjQwLCAyMTEsIDQsIDIyMiwgMTk5LCAyMjcsIDE5OSwgMjQ0LCAKKyAgICA4MiwgMjQwLCAyMTEsIDQsIDIyMiwgMTk5LCAyMjcsIDE5OSwgMTIzLCAyMTYsIDE0OCwgMjIyLCAxOTksIDIyNywgMTk5LCAKKyAgICAxMjMsIDIxNiwgMTQ5LCAyNTEsIDY4LCAyNDksIDYxLCAyMjIsIDE5OSwgMjI3LCAxOTksIDI0NCwgODIsIDIxNiwgMTQ4LCAKKyAgICAyMjIsIDE5OSwgMjI3LCAxOTksIDIxNiwgMjQ5LCAyMTYsIDE0OCwgMjIyLCAxOTksIDIyNywgMTk5LCAyMjMsIDUwLCAxMjMsIAorICAgIDI0MCwgMjExLCA3LCA0LCAxLCAyMjMsIDUwLCAyNTEsIDY3LCAyMjIsIDE5OSwgMjI3LCAxOTksIDIxOSwgMTI2LCAyMzMsIAorICAgIDc5LCAxNywgMjIyLCAxOTksIDIyNywgMTk5LCAyNDQsIDExNiwgMjQ1LCAyMjcsIDE3LCAyMjIsIDE5OSwgMjI3LCAxOTksIAorICAgIDI0NCwgMTE2LCAyMTYsIDE0OCwgMjIyLCAxOTksIDIyNywgMTk5LCAxMjMsIDI0MCwgMjEyLCAyMTYsIDE0OCwgMjEyLCAKKyAgICAxMTQsIDI0NCwgMywgMjEwLCA4NywgMjE2LCAxNjcsIDE0MCwgNzQsIDIxNCwgMTUzLCA3NCwgOTcsIDc0LCAyNDYsIDEwNSwgCisgICAgNzQsIDQzLCA0NCwgNzQsIDEyMCwgMTI0LCA3NCwgMjI4LCA1NywgMjEyLCA5LCA3NCwgMjI4LCA1NywgMjQ1LCAyMjEsIDc0LCAKKyAgICAyMTksIDI5LCAyNDUsIDIyMSwgNzQsIDIxOSwgMjksIDIxMiwgOSwgNzQsIDE0MCwgODAsIDIsIDkxLCA5NywgODAsIDIsIAorICAgIDkxLCAxNDAsIDIxMiwgMzYsIDc0LCA5NywgMjEyLCAzNiwgNzQsIDE0MCwgMTEzLCAyNDEsIDIzNSwgNzQsIDIxNCwgMTUzLCAKKyAgICAxMTMsIDI0MSwgMjM1LCA3NCwgOTcsIDExMywgMjQxLCAyMzUsIDc0LCAyNDYsIDEwNSwgMTEzLCAyNDEsIDIzNSwgNzQsIAorICAgIDE0MCwgODAsIDIsIDIxNywgNzgsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMTQwLCA4MCwgMjQzLCAyNDQsIDEzMCwgMjE0LCAKKyAgICAxNTMsIDgwLCAyNDMsIDI0NCwgMTMwLCA5NywgODAsIDI0MywgMjQ0LCAxMzAsIDI0NiwgMTA1LCA4MCwgMjQzLCAyNDQsIAorICAgIDEzMCwgMTIwLCAxMjQsIDgwLCAyLCAyNTIsIDEyOCwgMTQwLCA4MCwgMiwgMTAzLCA5NywgODAsIDIsIDEwMywgMTQwLCA4MCwgCisgICAgMiwgMjMyLCAxMjQsIDk3LCA4MCwgMiwgMjMyLCAxMjQsIDQzLCA0NCwgMjEyLCAzNiwgNzQsIDQzLCA0NCwgODAsIDIsIDkxLCAKKyAgICAyNDYsIDEwNSwgMjEwLCAzNSwgNzQsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3OCwgMjMzLCAzOCwgMjE0LCAxNTMsIDgwLCAKKyAgICAyLCAyMTYsIDc4LCAyMjIsIDI0MiwgMjQ2LCAxMDUsIDgwLCAyLCAyMTYsIDc4LCAyMzMsIDM4LCAyNDYsIDEwNSwgODAsIDIsIAorICAgIDIxNiwgNzgsIDIyMiwgMjQyLCA5NywgODAsIDIsIDI0OSwgMTYyLCAyNDYsIDEwNCwgMjQ2LCAxMDUsIDgwLCAyLCAyNDksIAorICAgIDE2MiwgMjMzLCAzOCwgMjU0LCA4OSwgMjE2LCAxNSwgMjIwLCAxNTQsIDc0LCAyNTAsIDMsIDIxNiwgMTUsIDIyMCwgMTU0LCAKKyAgICA3NCwgMjI4LCA1NywgMjEyLCA5LCA4MCwgMjE2LCA0MywgMTk5LCAxMzAsIDE0MCwgODAsIDIxNiwgNDMsIDI1MiwgMTQyLCAKKyAgICAxMTcsIDk3LCA4MCwgMjE2LCA0MywgMTMwLCAyNTQsIDg5LCAyMDQsIDI1MCwgMzcsIDc0LCAyNTAsIDMsIDIwNCwgMjUwLCAKKyAgICAzNywgNzQsIDE0MCwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgMjE0LCAxNTIsIDE0MCwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgCisgICAgMjQ2LCAxMDQsIDIxNCwgMTUzLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAyMjIsIDI0MiwgMjE0LCAxNTMsIDI0MiwgMCwgMiwgCisgICAgMjUyLCAxNDAsIDIzMywgMzgsIDk3LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAyMTQsIDE1MiwgOTcsIDI0MiwgMCwgMiwgMjUyLCAKKyAgICAxNDAsIDI0NiwgMTA0LCAyNDYsIDEwNSwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgMjIyLCAyNDIsIDI0NiwgMTA1LCAyNDIsIDAsIAorICAgIDIsIDI1MiwgMTQwLCAyMzMsIDM4LCA5NywgODAsIDExNywgMTQwLCA3NCwgMjE0LCAxNTMsIDgwLCAxNDAsIDY0LCAyNDYsIAorICAgIDEwNSwgNzQsIDE0MCwgODAsIDExNywgOTcsIDc0LCAxNDAsIDIyNiwgNzEsIDI1MywgMjQ4LCAyMTQsIDE1MywgMjI2LCA3MSwgCisgICAgMjUzLCAyNDgsIDk3LCAyMjYsIDcxLCAyNTMsIDI0OCwgMjQ2LCAxMDUsIDIyNiwgNzEsIDI1MywgMjQ4LCAxNDAsIDI0MiwgCisgICAgMCwgMTE3LCA5NywgMjQxLCAyNTUsIDk3LCAyNDIsIDAsIDExNywgMTQwLCAyNDEsIDI1NSwgMTQwLCA1MiwgODAsIDIsIDkxLCAKKyAgICA0MywgNDQsIDUyLCA4MCwgMiwgOTEsIDk3LCA1MiwgODAsIDIsIDkxLCAxNDAsIDUyLCA3NCwgMjE0LCAxNTMsIDUyLCA3NCwgCisgICAgOTcsIDUyLCA3NCwgMjQ2LCAxMDUsIDUyLCA3NCwgNDMsIDQ0LCA1MiwgNzQsIDEyMCwgMTI0LCA1MiwgNzQsIDIyOCwgNTcsIAorICAgIDIxMiwgOSwgNTIsIDc0LCAyMjgsIDU3LCAyNDUsIDIyMSwgNTIsIDc0LCAyMTksIDI5LCAyNDUsIDIyMSwgNTIsIDc0LCAKKyAgICAyMTksIDI5LCAyMTIsIDksIDUyLCA3NCwgMTQwLCAyMTUsIDIxMiwgNzQsIDk3LCAyMTUsIDIxMiwgNzQsIDE0MCwgMjE4LCAKKyAgICAyMzEsIDc0LCA5NywgMjE4LCAyMzEsIDc0LCAyMTQsIDE1MywgODAsIDIsIDUyLCA5MSwgMjQ2LCAxMDUsIDgwLCAyLCA1MiwgCisgICAgOTEsIDE0MCwgMjQ4LCAxNTYsIDc0LCAyMTQsIDE1MywgMjQ4LCAxNTYsIDc0LCA5NywgMjQ4LCAxNTYsIDc0LCAyNDYsIAorICAgIDEwNSwgMjQ4LCAxNTYsIDc0LCAxNDAsIDgwLCAyMTYsIDQzLCAxMzAsIDk3LCA4MCwgMjE2LCA0MywgMTMwLCAxNDAsIDcxLCAKKyAgICA3NCwgMjE0LCAxNTMsIDcxLCA3NCwgOTcsIDcxLCA3NCwgMjQ2LCAxMDUsIDcxLCA3NCwgMjE0LCAxNTMsIDcxLCA4MCwgCisgICAgMjQzLCAyNDQsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAxOTgsIDIyNSwgMjE1LCAyMTQsIDE1MywgNzEsIDgwLCAKKyAgICAyMjYsIDE5OCwgMjI1LCAyMTYsIDIsIDIwMywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5OCwgMjI1LCAyMTYsIDIsIAorICAgIDY3LCAxMzAsIDIxNCwgMTUzLCA3MSwgNTIsIDc0LCAyMTQsIDE1MywgNzEsIDUyLCA4MCwgMjI2LCAxOTgsIDIyNSwgMjE1LCAKKyAgICA5NywgNzEsIDgwLCAyNDMsIDI0NCwgMjEyLCA1NiwgMjI4LCA1NywgMjEyLCA5LCA4MCwgMjE2LCA0MywgMjQ5LCAxNjEsIAorICAgIDIxOSwgMjksIDI0NSwgMjIxLCA4MCwgMjE2LCA0MywgMjQ5LCAxNjEsIDEyMCwgMTI0LCA3MSwgNzQsIDQ0LCA4MCwgMiwgNCwgCisgICAgMjUwLCAzNiwgMjQ2LCAxMDUsIDgwLCAxNDAsIDY0LCAyMTQsIDE1MywgNzQsIDEzNCwgOTcsIDI1MywgMjQ4LCAxNDAsIDgwLCAKKyAgICAyLCA2NywgOTEsIDk3LCA4MCwgMiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA2NywgOTEsIDE0MCwgODAsIDIsIDUyLCA2NywgCisgICAgOTEsIDk3LCA4MCwgMiwgNTIsIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyMjYsIDE3NCwgNzQsIAorICAgIDk3LCAyMjYsIDE3NCwgNzQsIDQzLCA0NCwgMjI2LCAxNzQsIDc0LCAzMSwgMjU0LCAxNTUsIDI0OSwgMjE1LCAyMjUsIDI1NCwgCisgICAgMjQ3LCAyMzQsIDIxNiwgMTg4LCAyNDUsIDI4LCAyMTYsIDE4OCwgMjQ3LCAxMzksIDIyOCwgNTMsIDI0NSwgMjksIDI0NSwgCisgICAgMTUzLCAyMjAsIDEyOCwgMjM1LCAyNDYsIDIyOSwgMjIyLCAyNDUsIDE3MSwgMjI2LCAyMzIsIDIyOCwgNTMsIDI1NCwgMTI1LCAKKyAgICAyNDUsIDE3MSwgMjI2LCAyMzIsIDQsIDI0NSwgMTcxLCAyMjYsIDIzMiwgMjQ5LCAxODcsIDI1MywgMjM5LCAyMzEsIDYzLCAKKyAgICAyNDcsIDEzOSwgMjI4LCA1MywgMjQ5LCAxODksIDI1MywgMjM5LCAyMzEsIDYzLCA0LCAyNDksIDE4NywgMjUzLCAyMzksIAorICAgIDIzMSwgNjMsIDI0NSwgMTQ0LCA2NCwgMjI0LCAxNzMsIDIzMCwgMjUsIDIyNCwgMTgxLCAyMzAsIDI1LCAyNDksIDE2NiwgCisgICAgMjMwLCAyNSwgMjE4LCA0MSwgMjMwLCAxODMsIDUwLCAyMzAsIDE4MSwgNTAsIDU5LCAyMjUsIDIzLCAyNDcsIDE3MCwgMjE5LCAKKyAgICA5NiwgMjIwLCAxMjksIDIzMCwgMTgyLCAyNTMsIDIxOCwgMjI2LCAxNjgsIDIyMiwgMjM1LCAyMjYsIDE2OCwgMjUxLCAxMTUsIAorICAgIDIyNiwgMTY4LCA0MiwgMjIyLCAxOTQsIDI0OSwgMTEwLCAyMjIsIDE5NCwgMjQ0LCA1LCAyMjIsIDE5NCwgMjI0LCAxNjksIAorICAgIDExMSwgMjM1LCAyMzUsIDQ0LCAyNTQsIDExMCwgMjU0LCAxMTAsIDIzMSwgODksIDI1NCwgMTEwLCAyMTksIDAsIDI1NCwgCisgICAgMTEwLCAyNDcsIDE3MiwgMjQ3LCAxMzksIDIyOCwgNTMsIDI0NywgMTc1LCAyMjYsIDksIDExMSwgMjI4LCA1MywgMjI2LCA5LCAKKyAgICAxMTEsIDIzMiwgMTQ3LCAyNTQsIDExOSwgMjMyLCAxNDcsIDIyNiwgMTU5LCAyMzUsIDE5OSwgMjE0LCAxNzUsIDIzNSwgCisgICAgMjEyLCA1MiwgMjM1LCAyMTIsIDIxNSwgMjEyLCAyMzUsIDIxMiwgMjQ5LCAxODMsIDIzNSwgMjEyLCAyMTgsIDE0LCAyMzUsIAorICAgIDIxMiwgMjEzLCAxMjksIDIzNSwgMjEyLCAyNTAsIDMsIDIzNSwgMjEyLCAyNTAsIDMsIDI0OSwgMTgzLCAyMzUsIDIxMiwgCisgICAgMjU0LCA4OSwgMjQ5LCAxODMsIDIzNSwgMjEyLCAyMTYsIDE4NywgMjUyLCA2OCwgMjIzLCAxMzgsIDIyNCwgMTcwLCA1OSwgCisgICAgMjMwLCAxODIsIDI0NSwgMzQsIDI0MywgNDcsIDIyNCwgMTcwLCAyNDEsIDU4LCAyMTYsIDkwLCAyMjYsIDE2OCwgMjIzLCAKKyAgICA1MCwgMTgzLCAyMzUsIDE5NCwgMjMzLCA2NiwgMjIyLCA5MiwgMjE5LCAxNTgsIDIxMiwgMzUsIDIxMSwgMjAwLCAyMjQsIAorICAgIDE4MSwgMjI4LCA1MywgMTgzLCAyMzAsIDE4MywgMTgzLCAyNTMsIDIxMSwgMTI4LCAxMTEsIDIyOCwgNTMsIDI1MywgMjExLCAKKyAgICAxMjgsIDExMSwgMjU0LCA0OSwgMTI4LCAxMTEsIDI1NCwgNDksIDI1MSwgODksIDIyOCwgNTMsIDI1NSwgNSwgMTI4LCAxMTEsIAorICAgIDIyOSwgMTAxLCAyNTQsIDQ5LCAyMjgsIDYwLCAyNTUsIDUsIDEyOCwgMTExLCAyNTQsIDE0OSwgMTI4LCAxMTEsIDIyOCwgCisgICAgNTMsIDI1NCwgMTQ5LCAxMjgsIDExMSwgMjU0LCAxNDksIDEyOCwgMTc3LCAxMjgsIDExMSwgMjE1LCAyMTIsIDE4MywgMjU0LCAKKyAgICAxNTYsIDEyOCwgMTExLCAyNDUsIDk1LCAxMTEsIDI0MywgNDYsIDI0NSwgOTUsIDExMSwgMjQ3LCAyMzUsIDI1MiwgMjQsIAorICAgIDI1NCwgNTEsIDIxNiwgMTk3LCAyMzIsIDIyMiwgMjQzLCA0NiwgMTI4LCAxMTEsIDI1NCwgNDksIDEyOCwgMjE2LCA0MywgCisgICAgMTc3LCAyMTYsIDE5NywgMjM2LCAxNiwgMjI2LCAyMzIsIDIzNiwgMTYsIDY0LCAxNzcsIDI1NCwgNDksIDEyOCwgMTExLCAKKyAgICAyNDksIDIyOCwgMjQ1LCA5OCwgMjQ1LCA5OSwgMjQ5LCAyMjcsIDIyMiwgMjM1LCAyMzYsIDEsIDEyOCwgMTExLCAyMjIsIAorICAgIDIzNSwgMTI4LCAxMTEsIDI0OSwgMTU1LCAxMTEsIDI0NSwgNjgsIDI0NSwgOTcsIDExMSwgMjE4LCAxNTgsIDI0NSwgOTgsIAorICAgIDI0OCwgNTYsIDEyOCwgMTExLCAxMjgsIDIxNiwgNDMsIDI1MSwgNzksIDI0OCwgNzMsIDIzMSwgODksIDI1MSwgNzgsIDIyNCwgCisgICAgMTIsIDEyOCwgMTExLCAyMjgsIDUzLCAxMjgsIDExMSwgMjQwLCAxMDUsIDExMSwgMjI4LCA1MywgMjQwLCAxMDUsIDExMSwgCisgICAgMjE4LCAxMTAsIDI0NSwgOTUsIDExMSwgMjMzLCAxNiwgMTc3LCAxMjgsIDExMSwgMjQyLCAxMzEsIDE3NywgMTI4LCAxMTEsIAorICAgIDIzMywgMTYsIDExNywgMTI4LCAxMTEsIDI0MiwgMTMxLCAxMTcsIDEyOCwgMTExLCAyMzMsIDE2LCAyNTEsIDg5LCAyMjgsIAorICAgIDUzLCAxMjgsIDExMSwgMjQyLCAxMzEsIDI1MSwgODksIDIyOCwgNTMsIDEyOCwgMTExLCAyMzAsIDk4LCAyMzMsIDE1LCAKKyAgICAyMzAsIDk4LCAyNDIsIDEzMCwgMjUyLCAyNCwgMjI4LCA1MywgMjQ1LCA5NSwgMTExLCAyMjgsIDUzLCAyMzMsIDE1LCAyMjgsIAorICAgIDUzLCAyNDIsIDEzMCwgMjI5LCAxMDEsIDIzMywgMTYsIDIyOCwgNjAsIDEyOCwgMTExLCAyMjksIDEwMSwgMjQyLCAxMzEsIAorICAgIDIyOCwgNjAsIDEyOCwgMTExLCAyMzMsIDE2LCAxNzcsIDI0NSwgOTUsIDExMSwgMjQyLCAxMzEsIDE3NywgMjQ1LCA5NSwgCisgICAgMTExLCAyMjksIDEwMSwgMjMzLCAxNiwgMjI4LCA2MCwgMjQ1LCA5NSwgMTExLCAyMjksIDEwMSwgMjQyLCAxMzEsIDIyOCwgCisgICAgNjAsIDI0NSwgOTUsIDExMSwgMjMzLCAxNiwgMTc3LCAyNDIsIDEzMCwgMjQyLCAxMzEsIDE3NywgMjMzLCAxNSwgMjI5LCAKKyAgICAxMDEsIDIzMywgMTYsIDIyOCwgNjAsIDI0MiwgMTMwLCAyMjksIDEwMSwgMjQyLCAxMzEsIDIyOCwgNjAsIDIzMywgMTUsIAorICAgIDIyNCwgMjAzLCAyMTgsIDU2LCAyMjQsIDIwNCwgMTc3LCAxMjgsIDExMSwgMjE4LCA1NywgMTc3LCAxMjgsIDExMSwgMjI0LCAKKyAgICAyMDQsIDE3NywgMjQ1LCA5NSwgMTExLCAyMTgsIDU3LCAxNzcsIDI0NSwgOTUsIDExMSwgMjQ3LCAxMzksIDIyOCwgNTMsIAorICAgIDIyNCwgMjA2LCAyNDcsIDEzOSwgMjI4LCA1MywgMjE4LCA1OCwgMjE4LCA2NSwgMjI2LCAyMzIsIDIxOCwgMjMsIDIyNiwgCisgICAgMjMyLCAyMjgsIDUzLCAxMTUsIDIxOCwgNjUsIDIyNiwgMjMyLCAyMjgsIDUzLCAxMTUsIDIxOCwgMjMsIDIyNiwgMjMyLCAKKyAgICAyMTgsIDY1LCA2NCwgMTc3LCAxMjgsIDExMSwgMjE4LCAyMywgNjQsIDE3NywgMTI4LCAxMTEsIDIyOSwgMTAxLCAxMTUsIAorICAgIDIxOCwgNjUsIDY0LCAyMjgsIDYwLCAxMjgsIDExMSwgMjI5LCAxMDEsIDExNSwgMjE4LCAyMywgNjQsIDIyOCwgNjAsIDEyOCwgCisgICAgMTExLCAyMTgsIDY1LCA2NCwgMiwgMjI4LCA1MywgMTI4LCAxMTEsIDIxOCwgMjMsIDY0LCAyLCAyMjgsIDUzLCAxMjgsIAorICAgIDExMSwgMjMwLCA4MiwgMjMwLCA4MywgMjMwLCA4NCwgMjMwLCA4MywgMjE0LCAxNzUsIDQyLCAyMzYsIDE2LCAyMjYsIDIzMiwgCisgICAgNDIsIDIyNiwgMTUxLCAyMjYsIDIzMiwgNDIsIDIzNiwgMTYsIDY0LCAxNzcsIDEyOCwgMTExLCA0MiwgMjI2LCAxNTEsIDY0LCAKKyAgICAxNzcsIDEyOCwgMTExLCA0MiwgMjUwLCAyNTIsIDQyLCAyNDksIDEwMywgMzcsIDIyNSwgMjMsIDM3LCAyMzAsIDE4MiwgMzcsIAorICAgIDIxNiwgODYsIDM3LCAyNDcsIDE3MCwgMjE5LCA5NiwgMzcsIDU5LCAyMjYsIDE2OCwgMzcsIDIyMiwgMjM1LCAyMjYsIDE2OCwgCisgICAgMzcsIDI1MywgMjE4LCAyMjYsIDE2OCwgMzcsIDI0NSwgOTgsIDM3LCAyNDgsIDE1NywgOTIsIDIyNSwgMjMsIDkyLCAyMzAsIAorICAgIDE4MiwgOTIsIDIxNiwgODYsIDkyLCA1OSwgMjI2LCAxNjgsIDQ0LCAyMTcsIDg4LCA0MywgMjE3LCA4OCwgMTI0LCAyMTcsIAorICAgIDg4LCAxMjAsIDIxNywgODgsIDI1MywgMjIxLCAyMzAsIDE1NywgMjE1LCAxOTIsIDI0NCwgMjYsIDIxNSwgMjEyLCA2NywgCisgICAgMjUyLCAxNDIsIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQyLCA1MiwgNDQsIDIxNSwgOTMsIDI0NywgMTM5LCAyMjgsIAorICAgIDUzLCAyMjQsIDE2NCwgMjI4LCA1MywgMjE1LCAxOTIsIDI0NywgMTM5LCAyMjgsIDUzLCAyNDQsIDI3LCAyMjksIDEwMywgCisgICAgNTIsIDY3LCAyNTIsIDE0MiwgNTIsIDQ0LCAyMTUsIDkzLCAyMjQsIDIwNCwgMjE0LCAxODQsIDIyMywgOTIsIDIxOCwgNTcsIAorICAgIDIxNCwgMTg0LCAyMjMsIDkyLCAyMjgsIDU4LCAyMTgsIDc4LCAyMjYsIDIzMiwgMjQ5LCAxODcsIDI1MywgMjM5LCAyMjgsIAorICAgIDU4LCAyMTgsIDc3LCAyMjgsIDU4LCAyMTgsIDc4LCA2NCwgMTc3LCAxMjgsIDExMSwgMjQ5LCAxODcsIDI1MywgMjM5LCAKKyAgICAyMjgsIDU4LCAyMTgsIDc4LCAxNzcsIDEyOCwgMTExLCAyMjYsIDE1MSwgMjI2LCAyMzIsIDIzNiwgMTYsIDIyNiwgMjMyLCAKKyAgICAyMzAsIDg4LCAyNDEsIDIwMSwgMjQ5LCAxOTcsIDIzMSwgMTM4LCAyMzUsIDIwOSwgMjExLCAxNDUsIDIyOSwgMjAzLCAyMjgsIAorICAgIDU5LCA0NCwgMjU0LCAxMTEsIDIsIDI1NCwgMjYsIDQ0LCAyMTUsIDIyNiwgMjMwLCAyNSwgMjMyLCAxNDcsIDI1NCwgMTE5LCAKKyAgICAyMzAsIDI1LCAyMzIsIDE0NywgMjI2LCAxNTksIDIzMCwgMjUsIDIzNSwgMTk5LCAyMzAsIDI1LCAyMTQsIDE3NSwgMjQ3LCAKKyAgICAyNTAsIDIyNiwgMTY4LCA1OSwgMjI2LCAxNjgsIDIxOCwgMTU4LCAyMjYsIDE2OCwgMjQ3LCAxNzAsIDIxNiwgODYsIDI1MSwgCisgICAgMTY1LCA0MywgMjI4LCA1OCwgMjQ0LCAxODIsIDIyMCwgMTUwLCAyMjQsIDE4MSwgNDQsIDIyOCwgNTgsIDI0NCwgMTgyLCAKKyAgICAyMjAsIDE1MCwgMjI0LCAxODEsIDQzLCAyMjAsIDE1MCwgMjI0LCAxODEsIDQ0LCAyMjAsIDE1MCwgMjI0LCAxODEsIDIyMywgCisgICAgNTAsIDIxNiwgOTAsIDI0NSwgOTgsIDI0OSwgMTAwLCAyMzIsIDE0NywgMjI2LCAxNTksIDI0OSwgMTAwLCAyMzIsIDE0NywgCisgICAgMjU0LCAxMTksIDUyLCAyMTgsIDY0LCA1MiwgMjE4LCAyMiwgNTIsIDIzNSwgMTk5LCA1MiwgMjE0LCAxNzUsIDIyNSwgNDgsIAorICAgIDEyOCwgMjIsIDIyNiwgOSwgMTExLCAyMzMsIDE2LCAyLCAyNDcsIDEyMSwgMjQyLCAxMzEsIDIsIDI0NywgMTIxLCAyMTMsIAorICAgIDE4NywgMjMwLCA5OCwgMjMzLCAxNSwgMjEzLCAxODcsIDIzMCwgOTgsIDI0MiwgMTMwLCAyMzMsIDE2LCAxMjgsIDIxNiwgCisgICAgNDMsIDE3NywgMjQyLCAxMzAsIDI0MiwgMTMxLCAxMjgsIDIxNiwgNDMsIDE3NywgMjMzLCAxNSwgMTI4LCAyMTYsIDQzLCAKKyAgICAxNzcsIDIzMywgMTUsIDEyOCwgMjE2LCA0MywgMTc3LCAyNDIsIDEzMCwgMTI4LCAyMTYsIDQzLCAxNzcsIDIyNCwgMjAzLCAKKyAgICAxMjgsIDIxNiwgNDMsIDE3NywgMjE4LCA1NiwgMjQ3LCAxMzksIDIyOCwgNTMsIDIyNCwgMjA3LCAxNzcsIDI0NSwgMTAwLCAKKyAgICAyNDcsIDEzOSwgMjI4LCA1MywgMjE4LCA1OSwgMTc3LCAyNDUsIDEwMCwgMjI4LCA1MywgNDIsIDIzNiwgMTYsIDY0LCAxNzcsIAorICAgIDEyOCwgMTExLCAyMjgsIDUzLCA0MiwgMjI2LCAxNTEsIDY0LCAxNzcsIDEyOCwgMTExLCA0MiwgMjM2LCAxNiwgNjQsIDE3NywgCisgICAgMjI4LCA1MywgMTI4LCAxMTEsIDQyLCAyMjYsIDE1MSwgNjQsIDE3NywgMjI4LCA1MywgMTI4LCAxMTEsIDIzMywgMTYsIAorICAgIDI1MSwgODksIDIyOCwgNTMsIDI0NSwgOTUsIDExMSwgMjQyLCAxMzEsIDI1MSwgODksIDIyOCwgNTMsIDI0NSwgOTUsIDExMSwgCisgICAgMjI0LCAyMDQsIDI1MSwgODksIDIyOCwgNTMsIDI0NSwgOTUsIDExMSwgMjE4LCA1NywgMjUxLCA4OSwgMjI4LCA1MywgMjQ1LCAKKyAgICA5NSwgMTExLCAyMjgsIDUzLCAyMjgsIDU4LCAyMTgsIDc4LCAyMjYsIDIzMiwgMjQ3LCAxMzksIDIyOCwgNTMsIDI0OSwgCisgICAgMTg5LCAyNTMsIDIzOSwgMjI4LCA1OCwgMjE4LCA3NywgMjI4LCA1MywgMjI4LCA1OCwgMjE4LCA3OCwgNjQsIDE3NywgMTI4LCAKKyAgICAxMTEsIDI0NywgMTM5LCAyMjgsIDUzLCAyNDksIDE4OSwgMjUzLCAyMzksIDIyOCwgNTgsIDIxOCwgNzgsIDE3NywgMjQ1LCAKKyAgICAxMDAsIDY3LCAyNDUsIDE2NCwgMjMwLCAyMjMsIDIwMywgMjQ1LCAxNjQsIDEyMCwgNDQsIDI0OCwgMCwgMjQ1LCAxNjQsIAorICAgIDEyNCwgNDQsIDI0OCwgMCwgMjQ1LCAxNjQsIDI0NSwgMTcxLCA2NCwgMiwgMTk5LCAyMDMsIDkxLCAyNDUsIDE3MSwgNjQsIAorICAgIDIsIDY3LCAyNTIsIDE0MiwgMjUzLCAyMDgsIDI0NSwgMTQ0LCA2NCwgMjAzLCA5MSwgNCwgMjQ1LCAxNzEsIDY0LCAyLCA2NywgCisgICAgMjUyLCAxNDIsIDI1MywgMjA4LCAyNDUsIDE0NCwgNjQsIDIwMywgOTEsIDI0NSwgMTcxLCA2NCwgMiwgNTksIDQ4LCAyNDUsIAorICAgIDE3MSwgNjQsIDIsIDIyNiwgMTI0LCA0LCAyNDUsIDE3MSwgNjQsIDIsIDIyNiwgMTI0LCAyNDUsIDE3MSwgNjQsIDIsIDIxNCwgCisgICAgMTgzLCAyNDUsIDE3MSwgNjQsIDIsIDExMywgMjAzLCAyMTgsIDkxLCAyNDksIDE4NywgMiwgMTk5LCAyMDMsIDkxLCAyNDksIAorICAgIDE4NywgMiwgNjcsIDI1MiwgMTQyLCAyNTMsIDIwOCwgMjQ1LCAxNDQsIDY0LCAyMDMsIDkxLCA0LCAyNDksIDE4NywgMiwgCisgICAgNjcsIDI1MiwgMTQyLCAyNTMsIDIwOCwgMjQ1LCAxNDQsIDY0LCAyMDMsIDkxLCAyNDksIDE4NywgMiwgMjI2LCAxMjQsIDQsIAorICAgIDI0OSwgMTg3LCAyLCAyMjYsIDEyNCwgMjEwLCAxNjAsIDE4OCwgMjUyLCAxNzQsIDIzMSwgNjIsIDI0NywgMjUxLCA1MCwgCisgICAgMjQ1LCAxNzMsIDc0LCAyNDAsIDIzNSwgMTIwLCAyNTMsIDI1MCwgMTI0LCAyNTMsIDI1MCwgMjI0LCAxNzYsIDIyNSwgMTY2LCAKKyAgICAyMTIsIDMyLCAyMzIsIDIxNCwgNDMsIDI1MCwgMTgyLCA0NCwgMjUwLCAxODIsIDQzLCAyNDQsIDU4LCA0NCwgMjQ0LCA1OCwgCisgICAgMjUxLCAxNzYsIDQ0LCAyNDksIDEzMywgMjUxLCAxNzYsIDQzLCAyNDksIDEzMywgMjE2LCAxNSwgNDQsIDI0OSwgMTMzLCAKKyAgICAyMTYsIDE1LCA0MywgMjQ5LCAxMzMsIDIyMywgNTAsIDIyOCwgNTMsIDUwLCA0MiwgMjMyLCAxMDUsIDI1NCwgMjYsIDIyMSwgCisgICAgMTY1LCAyMjEsIDE3MiwgMjE3LCAyLCAyMjMsIDEyMSwgMjI0LCAyNDIsIDIzNSwgMjM5LCAyMTMsIDE2NSwgMjE4LCAyMzUsIAorICAgIDIyNSwgNDIsIDY0LCAyMzUsIDIwOCwgNTAsIDIxNSwgOTQsIDIyOCwgNTMsIDUwLCAyMTIsIDQyLCAyNDAsIDIzNywgMjE2LCAKKyAgICAxNSwgNDMsIDI0OSwgMTYxLCAyMTYsIDE1LCA0NCwgMjQ5LCAxNjEsIDI1MSwgMTc2LCA0MywgMjQ5LCAxNjEsIDI1MSwgCisgICAgMTc2LCA0NCwgMjQ5LCAxNjEsIDIxNiwgMTUsIDE2MywgMjM1LCAyMTIsIDI1MSwgMTc2LCAxNjMsIDIzNSwgMjEyLCAyNDMsIAorICAgIDI0MSwgMjE5LCA3NiwgMTIwLCAyNTMsIDI1MSwgMjUyLCAyNSwgMTEzLCAyMDMsIDI1MiwgMTMwLCAyMjYsIDE2MSwgMjM0LCAKKyAgICAxMzksIDI0NSwgOTEsIDIxNiwgNDMsIDIxNiwgMTk3LCAyMjIsIDI1MiwgMjExLCAxNzksIDIzNiwgMSwgMTE1LCAyMjMsIAorICAgIDExOCwgMjUxLCAxNjQsIDIzNCwgMTM4LCAyMzMsIDQzLCAyNTQsIDExMSwgMTI3LCAyMjIsIDI0OCwgMjU0LCAxMTEsIDEyNywgCisgICAgMjQ1LCA5MSwgMjE2LCA0MywgMjE2LCAxOTcsIDIzMywgNDcsIDI1MiwgMzYsIDIyMiwgMjM0LCAyNDksIDcxLCAyNTQsIAorICAgIDE1NiwgMjU0LCAyLCAyMTcsIDE4MiwgMjE2LCA1LCAyMjIsIDEyNCwgMjQ3LCAyMTYsIDIyNiwgMTUyLCAyNDksIDE5OSwgCisgICAgMjE3LCA1MywgMjE5LCA4NywgMjQ5LCAxNTIsIDI0OSwgMTUxLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDI0MCwgMTUyLCAKKyAgICAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIxOCwgMjI5LCAyMjQsIDI4LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgMjksIAorICAgIDI0NSwgMTAwLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgMjksIDI0NywgMTc1LCAyNTQsIDY3LCAyNDMsIDIyNiwgCisgICAgMTYsIDIyNCwgMjksIDI0NywgMjQ5LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgMjksIDIzNSwgNTcsIDI1NCwgNjcsIAorICAgIDI0MywgMjI2LCAxNiwgMjI0LCAyOSwgMjUwLCAzNiwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNTAsIDM3LCAyMTgsIDEzNiwgCisgICAgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNTAsIDM3LCAyMzUsIDU3LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIxOSwgOTcsIAorICAgIDEzMCwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNTIsIDE4MiwgMTMwLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgCisgICAgMjksIDIxOSwgOTYsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjI0LCAyOSwgMjUyLCAxODEsIDI1NCwgNjcsIDI0MywgMjI2LCAKKyAgICAxNiwgMjI0LCAyOSwgMjMzLCAxNSwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMjQsIDI5LCAyNDIsIDEzMCwgMjU0LCA2NywgCisgICAgMjQzLCAyMjYsIDE2LCAxNDAsIDIxNCwgMTksIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgOTcsIDIxNCwgMTksIDI1NCwgNjcsIAorICAgIDI0MywgMjI2LCAxNiwgMjI0LCAyOSwgMTQwLCA3NCwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMjQsIDI5LCA5NywgNzQsIAorICAgIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjUwLCAzNywgMjUyLCAxODEsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMTI0LCAKKyAgICAyMTcsIDg5LCAyMTQsIDE4MywgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNDgsIDU2LCAyMTgsIDEzNiwgMjU0LCA2NywgCisgICAgMjQzLCAyMjYsIDE2LCAyMjQsIDI5LCAxMjQsIDI1MCwgMjM5LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgMjksIAorICAgIDI0OCwgNTUsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMTI0LCAyMTcsIDg5LCAyMzUsIDU3LCAyNTQsIDY3LCAyNDMsIDIyNiwgCisgICAgMTYsIDIxNCwgMTUzLCAyMTQsIDE5LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgMjksIDIxNCwgMTUzLCA3NCwgMjU0LCAKKyAgICA2NywgMjQzLCAyMjYsIDE2LCAxMjAsIDIxNywgODksIDIyNiwgMTI0LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDI0OCwgNjcsIAorICAgIDIxOCwgMTM2LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyNCwgMjksIDEyMCwgMjUwLCAyMzksIDI1NCwgNjcsIDI0MywgCisgICAgMjI2LCAxNiwgMjI0LCAyOSwgMjQ4LCA2NiwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAxMjAsIDIxNywgODksIDIzNSwgNTcsIAorICAgIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjQ2LCAxMDUsIDIxNCwgMTksIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjI0LCAyOSwgCisgICAgMjQ2LCAxMDUsIDc0LCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIyMywgMjU0LCAyMTQsIDE4MywgMjU0LCA2NywgMjQzLCAKKyAgICAyMjYsIDE2LCAyNDgsIDU2LCAyMTQsIDE4MywgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNDcsIDI1MCwgMjE0LCAxODMsIAorICAgIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjM1LCA1OCwgMjE0LCAxODMsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjUwLCAzNywgCisgICAgMjE0LCAxODMsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMTIwLCAyMjAsIDYsIDIzNSwgNTcsIDI1NCwgNjcsIDI0MywgMjI2LCAKKyAgICAxNiwgMjIzLCAyNTQsIDIyNCwgMjgsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjUwLCAzNywgMjE4LCAxNTcsIDI1NCwgNjcsIAorICAgIDI0MywgMjI2LCAxNiwgMjI0LCAyOSwgMjQ5LCAyMjcsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMTIwLCAyMTcsIDg5LCAKKyAgICAyNDgsIDIsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjQ4LCA2NywgMjQ4LCAyLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIAorICAgIDIxOCwgMTU4LCAyNDgsIDIsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjM1LCA1OCwgMjQ4LCAyLCAyNTQsIDY3LCAyNDMsIAorICAgIDIyNiwgMTYsIDI1MCwgMzcsIDI0OCwgMiwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAxMjQsIDIyMCwgNiwgMjE4LCAxMzYsIAorICAgIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgNDMsIDIyMCwgNiwgMjE4LCAxMzYsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjE2LCAKKyAgICA5MCwgMjQ4LCAyLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDI0MiwgMTMxLCAyNDgsIDIsIDI1NCwgNjcsIDI0MywgMjI2LCAKKyAgICAxNiwgMjQ5LCAyMjEsIDEzMCwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNDgsIDY3LCAxODMsIDI1NCwgNjcsIDI0MywgCisgICAgMjI2LCAxNiwgMjEwLCAzNCwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMTgsIDEzNywgMTgzLCAyNTQsIDY3LCAyNDMsIAorICAgIDIyNiwgMTYsIDIyMCwgMTUyLCAyMTQsIDE4MywgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMjQsIDI5LCAyMjgsIDUzLCAKKyAgICAyNDUsIDEwMCwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMjQsIDI5LCAyMjQsIDEzLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIAorICAgIDEyNCwgMjUwLCAyNDAsIDE4MywgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAxMjAsIDI1MCwgMjQwLCAxODMsIDI1NCwgNjcsIAorICAgIDI0MywgMjI2LCAxNiwgMjM1LCAxODYsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgMjIzLCAzOCwgMjU0LCA2NywgMjQzLCAKKyAgICAyMjYsIDE2LCAyMjYsIDIwMiwgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyNTQsIDE0NSwgMjE0LCAxODMsIDI1NCwgNjcsIAorICAgIDI0MywgMjI2LCAxNiwgMjQ1LCAxMDIsIDIxNCwgMTgzLCAyNTQsIDY3LCAyNDMsIDIyNiwgMTYsIDIzNSwgMTg3LCAyMTQsIAorICAgIDE4MywgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMjYsIDIwMywgMjE0LCAxODMsIDI1NCwgNjcsIDI0MywgMjI2LCAxNiwgCisgICAgMjU0LCAxNDQsIDIyOCwgNTMsIDI1MCwgMTMxLCA3OCwgNDQsIDI1NCwgMTExLCAyLCAyNDYsIDEwNSwgMjEwLCAzNSwgNzQsIAorICAgIDIxOSwgMjM2LCAyMDQsIDI1MSwgMTY0LCAyNTIsIDQ2LCA4NywgNjcsIDIzMiwgMjE1LCAyLCAyMzAsIDIyNSwgMjQ3LCAKKyAgICAxMjEsIDIzNSwgMjE3LCA4NywgMjQ5LCAxODQsIDIxNCwgMTgxLCA4NywgMjQ3LCAxOTAsIDIxNCwgMTgxLCA4NywgMjQ1LCAKKyAgICAxNTUsIDg3LCAyNDksIDIxMSwgODcsIDcxLCA0MiwgMiwgMjUwLCAxNzYsIDY3LCAyMzIsIDIxNCwgMjQ1LCAxMzEsIDg3LCAKKyAgICAyNTQsIDE0MCwgMjM0LCAxNDAsIDg3LCAyNDEsIDIxNCwgODcsIDM3LCAyMDMsIDI1MiwgMTQyLCAyLCAyMjgsIDUxLCAzNywgCisgICAgMjE1LCAyMjcsIDI0NiwgMTA3LCAyNTEsIDEzNiwgMjUwLCAzNywgMiwgMjI4LCA1NSwgNzQsIDIxNCwgMTc5LCA4NywgMjMwLCAKKyAgICAxMzgsIDg3LCAyNDAsIDE2NSwgODcsIDIyNiwgMTc1LCAyNDIsIDYwLCA4NywgMjI2LCAxNzUsIDIzMywgMTQ4LCA4NywgCisgICAgMjI1LCAyNDUsIDg3LCAyMjUsIDI0NCwgODcsIDI0NywgMTk4LCAyNDksIDk4LCAxNiwgMjQ0LCAyMSwgMTA1LCAyMTksIDUxLCAKKyAgICA4NywgMjU0LCA2NywgMjQzLCAyMjYsIDE2LCAyMjQsIDI4LCAyNDgsIDg0LCAyMjAsIDEzOSwgMjM0LCAxNDAsIDg3LCAyMjQsIAorICAgIDE5MywgMjI2LCA3NiwgMjI5LCA4MywgMjI2LCA3NiwgMjI0LCAxODksIDIyMSwgMTkwLCA4NywgMjUwLCAxOCwgMjIxLCAKKyAgICAxOTAsIDg3LCA0MywgMjI2LCA1LCAyMTQsIDE2MCwgMTAzLCA0MywgMjI2LCA1LCAyNDUsIDIyLCA0MywgMjI2LCA1LCAyMzIsIAorICAgIDEwOSwgMTAzLCA0NCwgMjI2LCA1LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjI2LCA1LCAyNDUsIDIyLCA0NCwgMjI2LCA1LCAKKyAgICAyMzIsIDEwOSwgMTAzLCA0MywgNDIsIDI1MSwgMTU5LCAyMTQsIDE2MCwgMjQ5LCAxNjEsIDQzLCA0MiwgMjUxLCAxNTksIAorICAgIDI0NSwgMjIsIDQzLCA0MiwgMjUxLCAxNTksIDIzMiwgMTA5LCAyNDksIDE2MSwgNDQsIDQyLCAyNTEsIDE1OSwgMjE0LCAKKyAgICAxNjAsIDI0OSwgMTYxLCA0NCwgNDIsIDI1MSwgMTU5LCAyNDUsIDIyLCA0NCwgNDIsIDI1MSwgMTU5LCAyMzIsIDEwOSwgCisgICAgMjQ5LCAxNjEsIDQzLCAyNDksIDEwMCwgMjUxLCAxNTksIDIxNCwgMTYwLCAxMDMsIDQzLCAyNDksIDEwMCwgMjUxLCAxNTksIAorICAgIDIzMCwgMjI1LCAyMjUsIDEwMiwgNDMsIDI0OSwgMTAwLCAyNTEsIDE1OSwgMjMyLCAxMDksIDEwMywgMjQ5LCAxMDAsIDI1MSwgCisgICAgMTU5LCAyNDUsIDIyLCA0NCwgMjQ5LCAxMDAsIDI1MSwgMTU5LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCAxMDAsIDI1MSwgCisgICAgMTU5LCAyMzAsIDIyNSwgMjI1LCAxMDIsIDQ0LCAyNDksIDEwMCwgMjUxLCAxNTksIDIzMiwgMTA5LCAxMDMsIDIzNSwgMjEzLCAKKyAgICAyNDUsIDIyLCAyMDMsIDIzMiwgMjE1LCAyNDUsIDIyLCAyMTQsIDE2MCwgNDMsIDE3NywgMjMyLCAxMDksIDQ0LCAyNDksIAorICAgIDEwMCwgMjUxLCAxNTksIDIyMSwgMTczLCAyMTQsIDE2MCwgNDQsIDE3NywgMjMyLCAxMDksIDQzLCAyNDksIDEwMCwgMjUxLCAKKyAgICAxNTksIDIyMSwgMTczLCAyMTgsIDQyLCAyMTYsIDE0LCAyMTgsIDQyLCAyNTEsIDE3NSwgMjE2LCAxNSwgNDIsIDEyNywgCisgICAgMjUxLCAxNzYsIDQyLCAxMjcsIDI1MSwgMTc2LCA0MiwgMjUxLCAxNTksIDExNywgMjE2LCAxNSwgNDIsIDEyNywgMzQsIDE2LCAKKyAgICAyNTEsIDE3NSwgNDMsIDY3LCA5MywgMjMyLCAyMTQsIDQ0LCA2NywgOTMsIDIzMiwgMjE0LCAyMDMsIDIyMSwgMjA2LCAyMzIsIAorICAgIDIxMywgMjAzLCAyMjEsIDIwNiwgMjMyLCAyMTIsIDIwMywgMjIxLCAyMDYsIDIzMiwgMjExLCAyMDMsIDIyMSwgMjA2LCAKKyAgICAyMzIsIDIxMCwgMjQ4LCA0NywgMTYsIDE5MiwgNjcsIDIyLCAyMTYsIDE1LCAyMjIsIDI1MiwgMjQ4LCA0NywgMTYsIDE5MiwgCisgICAgNjcsIDIyLCAyNTEsIDE3NiwgMjIyLCAyNTIsIDI0OCwgNDcsIDE2LCAxOTIsIDY3LCAyLCAyNTAsIDM2LCAyNDgsIDQ3LCAKKyAgICAxNiwgMTkyLCAxMjQsIDIyLCAyMDMsIDIsIDI1MCwgMzYsIDI0OCwgNDcsIDE2LCAxOTIsIDEyMCwgMjIsIDIwMywgMiwgCisgICAgMjUwLCAzNiwgMjQ4LCA0NywgMTYsIDE5MiwgNjcsIDIsIDIxNSwgMjI2LCAyNDgsIDQ3LCAxNiwgMTkyLCAxMjQsIDIyLCAKKyAgICAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDQ3LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDQ3LCAKKyAgICAxNiwgMTkyLCA2NywgMjIsIDIxMiwgMzUsIDI0OCwgNDcsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgCisgICAgMjQ4LCA0NywgMTYsIDE5MiwgMTIwLCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDQ3LCAxNiwgMTkyLCAxMjQsIDIyLCAKKyAgICAyNDEsIDQ1LCAyNDgsIDQ3LCAxNiwgMTkyLCAxMjAsIDIyLCAyNDEsIDQ1LCAyNDgsIDQ3LCAxNiwgMTkyLCA2NywgMjIsIAorICAgIDIxNiwgMTUsIDIzMywgNDcsIDI0OCwgNDcsIDE2LCAxOTIsIDY3LCAyMiwgMjUxLCAxNzYsIDIzMywgNDcsIDQyLCAyNDQsIAorICAgIDMzLCAyMjMsIDU1LCA4NywgMjQ1LCAxODMsIDg3LCA2NywgMjMyLCAyMTUsIDI0NSwgMjIsIDIzMSwgMzQsIDI1MSwgMTQ3LCAKKyAgICAyMzEsIDM0LCAxOTksIDExNywgMjE5LCAyNTEsIDIzMSwgMzQsIDIxOSwgMjUyLCAxMTcsIDIzMiwgMTM4LCAyMzEsIDM0LCAKKyAgICAxOTksIDExNywgMTEzLCAyMTksIDIzOCwgMjMxLCAzNCwgMTEzLCAyMTksIDIzOSwgMTE3LCAyMzIsIDEzOCwgMjMxLCAzNCwgCisgICAgMTEzLCAyMTksIDIzOSwgMjM1LCA2NSwgMjMxLCAzNCwgMjE1LCAyMDksIDIzMSwgMzQsIDIxNiwgMjI0LCAyMzEsIDM0LCAKKyAgICAyMjUsIDE4OSwgMjQ1LCAyMjUsIDI0MiwgMTIzLCAyNDMsIDIyMCwgMjE2LCAxNSwgMjI2LCA0LCAyNTEsIDE3NiwgMjI2LCAKKyAgICA0LCAyMTYsIDE1LCAyNDksIDEwMCwgMTI3LCAyNTEsIDE3NiwgMjQ5LCAxMDAsIDEyNywgMjE2LCAxNSwgMjE2LCA3LCAyMjAsIAorICAgIDU0LCAxMjcsIDI1MSwgMTc2LCAyMTYsIDcsIDIyMCwgNTQsIDEyNywgNzEsIDIxNSwgMjQwLCAyNTIsIDM2LCAyMjIsIDIzNSwgCisgICAgMiwgMjUwLCAzNiwgMjE4LCAxMjEsIDI0NCwgNjUsIDI1NSwgMTgsIDI0OSwgOTcsIDI0NSwgMTcyLCAyMzUsIDE5OSwgMjQ4LCAKKyAgICA4NCwgMjQ1LCAyNSwgODcsIDg1LCAyMjIsIDI0OCwgNTIsIDIxNSwgMjI2LCA4NSwgMjMzLCA0MywgNTIsIDIxNSwgMjI2LCAKKyAgICA4NSwgMjE0LCAxNjIsIDUyLCAyMTUsIDIyNiwgODUsIDI0NiwgMTA2LCA1MiwgMjE1LCAyMjYsIDg1LCAyMjIsIDI0OCwgNTIsIAorICAgIDIxNSwgMjI3LCAyLCA2NywgMTMwLCA4NSwgMjMzLCA0MywgNTIsIDIxNSwgMjI3LCAyLCA2NywgMTMwLCA4NSwgMjIyLCAKKyAgICAyNDgsIDIxNSwgMjI3LCAyLCA1MiwgNjcsIDEzMCwgMjU0LCAxNzQsIDI1MCwgNCwgMjE4LCAxMjcsIDIxNiwgODcsIDI1MCwgCisgICAgNCwgMjQwLCAyMzgsIDIsIDI0NCwgNTEsIDIyMSwgMjQyLCAxNiwgMzEsIDIyNywgMjAzLCAxNiwgMzEsIDIxOCwgMTUzLCAKKyAgICA2NCwgMjQxLCAyMzQsIDE2LCAzMSwgMjE4LCAxNTMsIDY0LCAyMTYsIDIxMywgMTYsIDMxLCAyNDUsIDE0NCwgNjQsIDIxNiwgCisgICAgMjEzLCAxNiwgMzEsIDI0NSwgMTQ0LCA2NCwgMjE1LCAyNDQsIDE2LCAzMSwgMjQ1LCAxMzMsIDE2LCAzMSwgMjU1LCA4LCAKKyAgICAxNiwgMzEsIDI1MiwgNDUsIDE2LCAzMSwgMjUyLCAxODAsIDE2LCAzMSwgMjAzLCAyMTcsIDkwLCAxNiwgMzEsIDIzMiwgCisgICAgMjE1LCAyNDQsIDE0NiwgMTYsIDMxLCA2NywgMjE3LCA5MCwgMTYsIDMxLCAyNDQsIDIxLCAyNDQsIDE0NiwgMTYsIDMxLCAKKyAgICAyNTAsIDIzMSwgMjIzLCA1NCwgMTYsIDMxLCAyMjAsIDI5LCAyMjYsIDEzMSwgMTYsIDMxLCAyMjAsIDI5LCAyMzYsIDAsIAorICAgIDE2LCAzMSwgMjQ4LCAxNTIsIDIzMiwgMjA1LCAyNDUsIDc4LCAxNiwgMzEsIDI0OCwgMzIsIDI0OSwgMTc5LCAxMTAsIDE2LCAKKyAgICAzMSwgMjQ4LCAzMiwgMjQ5LCAxNzksIDEwNSwgMTYsIDMxLCAyNDgsIDMyLCAyNDksIDE3OSwgMTU4LCAxNiwgMzEsIDI0OCwgCisgICAgMzIsIDI0OSwgMTc5LCAxNjEsIDE2LCAzMSwgMTUyLCAyNTUsIDgsIDE2LCAzMSwgMjE3LCAxNzgsIDIzNiwgNjMsIDE2LCAKKyAgICAzMSwgMjQ1LCAxNDQsIDY0LCAyMTUsIDI0NSwgMjUxLCAyMTQsIDE2LCAzMSwgMjUxLCA2LCAxNiwgMzEsIDI0NSwgMTQ0LCAKKyAgICA2NCwgMjMxLCA4MiwgMTYsIDMxLCAyMTgsIDYyLCAxNiwgMzEsIDI0NSwgNzgsIDE2LCAzMSwgMjQ0LCAxMDgsIDIyMCwgCisgICAgMTM4LCAxNiwgMzEsIDI0MiwgMTIyLCAyMjAsIDEzOCwgMTYsIDMxLCAyMjMsIDEyMiwgMjIwLCAxMzgsIDE2LCAzMSwgMjE0LCAKKyAgICAxNzQsIDIyMCwgMTM4LCAxNiwgMzEsIDIxOSwgMTksIDE2LCAzMSwgMjQ4LCA2NCwgMjUxLCAyMTcsIDg3LCAyMDQsIDI1MSwgCisgICAgMTY0LCAxNiwgMzEsIDIyOSwgODYsIDE2LCAzMSwgMjQ4LCA2NSwgMjQ0LCAyMSwgMTA1LCAxNiwgMzEsIDIxOCwgNjMsIAorICAgIDI0NCwgMjEsIDEwNSwgMjI2LCAyNDIsIDEwMywgMjI2LCAyNDIsIDI1MCwgMTUzLCAyMjYsIDI0MiwgMjQ0LCAyNCwgMjI2LCAKKyAgICAyNDIsIDIzNSwgMTk0LCAyNDQsIDI0LCAyMjYsIDI0MiwgMjUyLCA0MywgMjUxLCAxMjUsIDIyNiwgMjQyLCAyNTEsIDE3MSwgCisgICAgMjE2LCAxMTIsIDIyNiwgMjQyLCAyNTEsIDE1NiwgMjUyLCAxNDcsIDI0MCwgMTA0LCAyMjYsIDI0MiwgMjU0LCAxMjgsIDY0LCAKKyAgICAyNTAsIDEzMCwgMjI2LCAyNDIsIDI0OCwgMTU3LCAyMjYsIDI0MiwgMjQ5LCA4OCwgMjU1LCAxMiwgMjI3LCAyMDEsIDIyNiwgCisgICAgMjQyLCA1MiwgMjUyLCAxODEsIDM3LCAyMSwgMTEwLCAzNywgMjEsIDEwNSwgMzcsIDIxLCAxNTgsIDM3LCAyMSwgMTYxLCAKKyAgICAzNywgMjEsIDE4OSwgMzcsIDIxLCAxOTQsIDM3LCAyMSwgMTk4LCAzNywgMjEsIDE5NSwgMzcsIDIxLCAyMDAsIDM3LCA1NCwgCisgICAgMjE2LCAyNDgsIDM3LCA1NCwgMjQ1LCAxNjgsIDM3LCA1NCwgMjE1LCA3NiwgMzcsIDU0LCAyMTYsIDE2NSwgMzcsIDU0LCAKKyAgICAyNDQsIDYsIDM3LCA1NCwgMjQ0LCAxMTksIDM3LCA1NCwgMjE5LCAxMjAsIDM3LCA1NCwgMjIwLCAxMjAsIDM3LCA1NCwgCisgICAgMjQ1LCAxOTEsIDM3LCA1NCwgMjI4LCAxOTgsIDM3LCA1NCwgMjE1LCA3MywgODgsIDIxLCAxMTAsIDg4LCAyMSwgMTA1LCAKKyAgICA4OCwgMjEsIDE1OCwgODgsIDIxLCAxNjEsIDg4LCAyMSwgMTg5LCA4OCwgMjEsIDE5NCwgODgsIDIxLCAxOTgsIDg4LCAyMSwgCisgICAgMTk1LCA4OCwgMjEsIDIwMCwgODgsIDU0LCAyMTYsIDI0OCwgODgsIDU0LCAyNDUsIDE2OCwgODgsIDU0LCAyMTUsIDc2LCAKKyAgICA4OCwgNTQsIDIxNiwgMTY1LCA4OCwgNTQsIDI0NCwgNiwgODgsIDU0LCAyNDQsIDExOSwgODgsIDU0LCAyMTksIDEyMCwgODgsIAorICAgIDU0LCAyMjAsIDEyMCwgODgsIDU0LCAyNDUsIDE5MSwgODgsIDU0LCAyMjgsIDE5OCwgODgsIDU0LCAyMTUsIDczLCAyMSwgCisgICAgMTIzLCAyNDMsIDIzMCwgMjE4LCAxMzAsIDIxLCAxMTMsIDI0MywgMjMwLCAyMTgsIDEzMCwgMjEsIDEzNCwgMjQzLCAyMzAsIAorICAgIDIxOCwgMTMwLCAyMSwgMjQ0LCAxMiwgMjQzLCAyMzAsIDIxOCwgMTMwLCAyMSwgMjQ0LCA4MiwgMjQzLCAyMzAsIDIxOCwgCisgICAgMTMwLCAyMSwgMjE5LCAxMjYsIDI0MywgMjMwLCAyMTgsIDEzMCwgMjEsIDIyMCwgMTIzLCAyNDMsIDIzMCwgMjE4LCAxMzAsIAorICAgIDIxLCAyNDUsIDE5NCwgMjQzLCAyMzAsIDIxOCwgMTMwLCAyMSwgMjI4LCAyMDEsIDI0MywgMjMwLCAyMTgsIDEzMCwgNTQsIAorICAgIDIxNiwgMjQ5LCAyNDMsIDIzMCwgMjE4LCAxMzAsIDU0LCAyNDUsIDE2OSwgMjQzLCAyMzAsIDIxOCwgMTMwLCA1NCwgMjE1LCAKKyAgICA3NywgMjQzLCAyMzAsIDIxOCwgMTMwLCA1NCwgMjE2LCAxNjYsIDI0MywgMjMwLCAyMTgsIDEzMCwgNTQsIDI0NCwgNywgCisgICAgMjQzLCAyMzAsIDIxOCwgMTMwLCA1NCwgMjQ0LCAxMjAsIDI0MywgMjMwLCAyMTgsIDEzMCwgNTQsIDIxOSwgMTIxLCAyNDMsIAorICAgIDIzMCwgMjE4LCAxMzAsIDU0LCAyMjAsIDEyMSwgMjQzLCAyMzAsIDIxOCwgMTMwLCA1NCwgMjQ1LCAxOTIsIDI0MywgMjMwLCAKKyAgICAyMTgsIDEzMCwgNTQsIDIyOCwgMTk5LCAyNDMsIDIzMCwgMjE4LCAxMzAsIDU0LCAyMTUsIDc0LCAyNDMsIDIzMCwgMjE4LCAKKyAgICAxMzAsIDg4LCA3LCA0LCAxLCA2MSwgODgsIDcsIDQsIDEsIDI1MywgMTU5LCA4OCwgNywgNCwgMSwgMjUxLCA2NywgODgsIDcsIAorICAgIDQsIDEsIDI0OSwgNjEsIDg4LCA3LCA0LCAxLCA3NSwgODgsIDcsIDQsIDEsIDI0NSwgNywgODgsIDcsIDQsIDEsIDI0MywgCisgICAgMjAzLCA4OCwgNywgNCwgMSwgMjQyLCA2MSwgODgsIDcsIDQsIDEsIDczLCA4OCwgNywgNCwgMSwgMjM1LCAxNDUsIDg4LCA3LCAKKyAgICA0LCAxLCAyMzUsIDI0LCA4OCwgNywgNCwgMSwgMTU2LCA4OCwgNywgNCwgMSwgMTkzLCA4OCwgNywgNCwgMSwgMjMwLCAyNiwgCisgICAgODgsIDcsIDQsIDEsIDc2LCA4OCwgNywgNCwgMSwgMjI2LCAxMDYsIDg4LCA3LCA0LCAxLCAyMjQsIDk3LCA4OCwgNywgNCwgCisgICAgMSwgMTUzLCA4OCwgNywgNCwgMSwgMjIyLCA5MiwgODgsIDcsIDQsIDEsIDIxNywgMTUzLCA4OCwgNywgNCwgMSwgNzAsIDg4LCAKKyAgICA3LCA0LCAxLCAyMTQsIDEwNSwgODgsIDcsIDQsIDEsIDIxMiwgOTgsIDg4LCA3LCA0LCAxLCAyMTEsIDE3OCwgODgsIDcsIDQsIAorICAgIDEsIDIxMSwgMTE3LCA4OCwgNywgNCwgMSwgMjEwLCAxNTksIDM3LCA3LCA2LCAxLCA2MSwgMzcsIDcsIDYsIDEsIDI1MywgCisgICAgMTU5LCAzNywgNywgNiwgMSwgMjUxLCA2NywgMzcsIDcsIDYsIDEsIDI0OSwgNjEsIDM3LCA3LCA2LCAxLCA3NSwgMzcsIDcsIAorICAgIDYsIDEsIDI0NSwgNywgMzcsIDcsIDYsIDEsIDI0MywgMjAzLCAzNywgNywgNiwgMSwgMjQyLCA2MSwgMzcsIDcsIDYsIDEsIAorICAgIDczLCAzNywgNywgNiwgMSwgMjM1LCAxNDUsIDM3LCA3LCA2LCAxLCAyMzUsIDI0LCAzNywgNywgNiwgMSwgMTU2LCAzNywgNywgCisgICAgNiwgMSwgMTkzLCAzNywgNywgNiwgMSwgMjMwLCAyNiwgMzcsIDcsIDYsIDEsIDc2LCAzNywgNywgNiwgMSwgMjI2LCAxMDYsIAorICAgIDM3LCA3LCA2LCAxLCAyMjQsIDk3LCAzNywgNywgNiwgMSwgMTUzLCAzNywgNywgNiwgMSwgMjIyLCA5MiwgMzcsIDcsIDYsIAorICAgIDEsIDIxNywgMTUzLCAzNywgNywgNiwgMSwgNzAsIDM3LCA3LCA2LCAxLCAyMTQsIDEwNSwgMzcsIDcsIDYsIDEsIDIxMiwgCisgICAgOTgsIDM3LCA3LCA2LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDYsIDEsIDIxMSwgMTE3LCAzNywgNywgNiwgMSwgMjEwLCAxNTksIAorICAgIDM3LCA3LCA0LCAxLCA2MSwgMzcsIDcsIDQsIDEsIDI1MywgMTU5LCAzNywgNywgNCwgMSwgMjUxLCA2NywgMzcsIDcsIDQsIAorICAgIDEsIDI0OSwgNjEsIDM3LCA3LCA0LCAxLCA3NSwgMzcsIDcsIDQsIDEsIDI0NSwgNywgMzcsIDcsIDQsIDEsIDI0MywgMjAzLCAKKyAgICAzNywgNywgNCwgMSwgMjQyLCA2MSwgMzcsIDcsIDQsIDEsIDczLCAzNywgNywgNCwgMSwgMjM1LCAxNDUsIDM3LCA3LCA0LCAKKyAgICAxLCAyMzUsIDI0LCAzNywgNywgNCwgMSwgMTU2LCAzNywgNywgNCwgMSwgMTkzLCAzNywgNywgNCwgMSwgMjMwLCAyNiwgMzcsIAorICAgIDcsIDQsIDEsIDc2LCAzNywgNywgNCwgMSwgMjI2LCAxMDYsIDM3LCA3LCA0LCAxLCAyMjQsIDk3LCAzNywgNywgNCwgMSwgCisgICAgMTUzLCAzNywgNywgNCwgMSwgMjIyLCA5MiwgMzcsIDcsIDQsIDEsIDIxNywgMTUzLCAzNywgNywgNCwgMSwgNzAsIDM3LCA3LCAKKyAgICA0LCAxLCAyMTQsIDEwNSwgMzcsIDcsIDQsIDEsIDIxMiwgOTgsIDM3LCA3LCA0LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDQsIDEsIAorICAgIDIxMSwgMTE3LCAzNywgNywgNCwgMSwgMjEwLCAxNTksIDM3LCAyMSwgMjEwLCA4NiwgMTUyLCAzNywgNTQsIDI0NSwgMTY4LCAKKyAgICAxNTIsIDM3LCA1NCwgMjE1LCA3NiwgMTUyLCAzNywgNTQsIDIxNiwgMTY1LCAxNTIsIDM3LCA1NCwgMjQ0LCA2LCAxNTIsIAorICAgIDM3LCA1NCwgMjQ0LCAxMTksIDE1MiwgMzcsIDU0LCAyMTksIDEyMCwgMTUyLCAzNywgNTQsIDIyMCwgMTIwLCAxNTIsIDM3LCAKKyAgICA1NCwgMjQ1LCAxOTEsIDE1MiwgMzcsIDU0LCAyMjgsIDE5OCwgMTUyLCAzNywgNTQsIDIxNSwgNzMsIDUyLCAzNywgMjEsIAorICAgIDExMCwgNTIsIDM3LCAyMSwgMTA1LCA1MiwgMzcsIDIxLCAxNTgsIDUyLCAzNywgMjEsIDE2MSwgNTIsIDM3LCAyMSwgMTg5LCAKKyAgICA1MiwgMzcsIDIxLCAxOTQsIDUyLCAzNywgMjEsIDE5OCwgNTIsIDM3LCAyMSwgMTk1LCA1MiwgMzcsIDIxLCAyMDAsIDUyLCAKKyAgICAzNywgNTQsIDIxNiwgMjQ4LCAxNTIsIDM3LCAyMSwgMjEwLCA4NiwgOTMsIDk5LCAxOTIsIDI0MSwgNDUsIDkzLCA5OSwgCisgICAgMTE0LCAyNDEsIDQ1LCA5MywgOTksIDE5MiwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTIsIAorICAgIDIxNSwgMjEyLCAyNDgsIDE1OCwgMjQxLCA0NSwgOTMsIDk5LCAxMTQsIDIxNSwgMjEyLCAyNDgsIDE1OCwgMjQxLCA0NSwgCisgICAgOTMsIDk5LCAxOTIsIDIxNSwgMjEyLCAyNDgsIDE1OCwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMTUsIDIxMiwgMjQ4LCAKKyAgICAxNTgsIDIxMywgMjM5LCA5MywgOTksIDE5MiwgMjI0LCAyNSwgMjQ4LCAxNTgsIDI0MSwgNDUsIDkzLCA5OSwgMTE0LCAyMjQsIAorICAgIDI1LCAyNDgsIDE1OCwgMjQxLCA0NSwgOTMsIDk5LCAxOTIsIDIyNCwgMjUsIDI0OCwgMTU4LCAyMTMsIDIzOSwgOTMsIDk5LCAKKyAgICAxMTQsIDIyNCwgMjUsIDI0OCwgMTU4LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTIsIDEyNCwgMjIsIDIyMiwgMjUyLCA5MywgOTksIAorICAgIDEyNCwgMTkyLCAyMiwgNDQsIDI0MSwgMjIyLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgNDQsIDIzMiwgMjMxLCA5MywgOTksIAorICAgIDExNCwgMTI0LCAyMiwgMjIyLCAyNTIsIDkzLCA5OSwgMTkyLCAxMjQsIDIyLCAyMzMsIDQ3LCA5MywgOTksIDEyNCwgMTkyLCAKKyAgICAyMiwgNDMsIDI0MSwgMjIyLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgNDMsIDIzMiwgMjMxLCA5MywgOTksIDExNCwgMTI0LCAKKyAgICAyMiwgMjMzLCA0NywgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDIyMiwgMjUyLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDQsIAorICAgIDI0MSwgMjIyLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDQsIDIzMiwgMjMxLCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjIyLCAKKyAgICAyNTIsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAyMzMsIDQ3LCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDMsIDI0MSwgMjIyLCAKKyAgICA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIDIzMiwgMjMxLCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjMzLCA0NywgOTMsIAorICAgIDk5LCAxOTIsIDY3LCAyMiwgMjIyLCAyNTIsIDkzLCA5OSwgNjcsIDE5MiwgMjIsIDQ0LCAyNDEsIDIyMiwgOTMsIDk5LCAKKyAgICAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMxLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzEsIAorICAgIDkzLCA5OSwgNjcsIDExNCwgMjIsIDQ0LCAyMzIsIDIzMSwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQ0LCAxMjAsIDI0MSwgCisgICAgMjIyLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDQsIDEyNCwgMjQxLCAyMjIsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIyMiwgCisgICAgMjUyLCA5MywgOTksIDE5MiwgNjcsIDIyLCAyMzMsIDQ3LCA5MywgOTksIDY3LCAxOTIsIDIyLCA0MywgMjQxLCAyMjIsIDkzLCAKKyAgICA5OSwgMTIwLCAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzMSwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgCisgICAgMjMxLCA5MywgOTksIDY3LCAxMTQsIDIyLCA0MywgMjMyLCAyMzEsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0MywgMTIwLCAKKyAgICAyNDEsIDIyMiwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDQzLCAxMjQsIDI0MSwgMjIyLCA5MywgOTksIDExNCwgNjcsIDIyLCAKKyAgICAyMzMsIDQ3LCA5MywgOTksIDE5MiwgMTI0LCAyMiwgMjQxLCA0NSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyNCwgCisgICAgMjMyLCAyMzEsIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMxLCA5MywgOTksIDEyNCwgMTkyLCAyMiwgCisgICAgMjAzLCAyNDEsIDIyMiwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDIwMywgMjMyLCAyMzEsIDkzLCA5OSwgNDQsIDE5MiwgMjIsIAorICAgIDQzLCAxMjQsIDI0MSwgMjIyLCA5MywgOTksIDQzLCAxOTIsIDIyLCA0NCwgMTI0LCAyNDEsIDIyMiwgOTMsIDk5LCAxMTQsIAorICAgIDEyNCwgMjIsIDI0MSwgNDUsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAyNDEsIDQ1LCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgCisgICAgMTIwLCAyMzIsIDIzMSwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzEsIDkzLCA5OSwgMTIwLCAxOTIsIAorICAgIDIyLCAyMDMsIDI0MSwgMjIyLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgMjAzLCAyMzIsIDIzMSwgOTMsIDk5LCA0NCwgMTkyLCAKKyAgICAyMiwgNDMsIDEyMCwgMjQxLCAyMjIsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIDQ0LCAxMjAsIDI0MSwgMjIyLCA5MywgOTksIAorICAgIDExNCwgMTIwLCAyMiwgMjQxLCA0NSwgOTMsIDk5LCAxOTIsIDY3LCAyMiwgMjQxLCA0NSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgCisgICAgNDQsIDY3LCAyMzIsIDIzMSwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDY3LCAyMzIsIDIzMSwgOTMsIDk5LCA2NywgMTkyLCAKKyAgICAyMiwgMjAzLCAyNDEsIDIyMiwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDEyNCwgMjAzLCAyMzIsIDIzMSwgOTMsIDk5LCAxMjQsIAorICAgIDExNCwgMjIsIDEyMCwgMjAzLCAyMzIsIDIzMSwgOTMsIDk5LCA2NywgMTE0LCAyMiwgMjAzLCAyMzIsIDIzMSwgOTMsIDk5LCAKKyAgICA0MywgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMSwgOTMsIDk5LCA0NCwgMTIwLCAxMTQsIDIyLCA0MywgMTI0LCAKKyAgICAyMzIsIDIzMSwgOTMsIDk5LCA0MywgMTI0LCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzMSwgOTMsIDk5LCA0NCwgMTI0LCAKKyAgICAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzMSwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDEyMCwgMjAzLCAyNDEsIDIyMiwgOTMsIAorICAgIDk5LCAxMjAsIDE5MiwgMjIsIDEyNCwgMjAzLCAyNDEsIDIyMiwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDY3LCAyNDEsIAorICAgIDIyMiwgOTMsIDk5LCA0MywgMTkyLCAyMiwgNDQsIDY3LCAyNDEsIDIyMiwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjQxLCA0NSwgCisgICAgOTMsIDk5LCAxOTIsIDUyLCAyNDgsIDE1OCwgMjQxLCA0NSwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE1OCwgMjQxLCA0NSwgCisgICAgOTMsIDk5LCAxOTIsIDUyLCAyNDgsIDE1OCwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNTgsIDIxMywgMjM5LCAKKyAgICA5MywgOTksIDUyLCAyNDEsIDQ1LCA5MywgOTksIDUyLCAyMTMsIDIzOSwgOTMsIDk5LCAxMjQsIDIxOSwgMTU2LCAyMiwgNDQsIAorICAgIDI0NiwgMTE0LCA5MywgOTksIDEyNCwgNTIsIDIyLCA0NCwgMjE5LCAxNTUsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDIyMiwgCisgICAgMjUyLCA5MywgOTksIDEyNCwgMjE5LCAxNTYsIDIyLCA0MywgMjQ2LCAxMTQsIDkzLCA5OSwgMTI0LCA1MiwgMjIsIDQzLCAKKyAgICAyMTksIDE1NSwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjMzLCA0NywgOTMsIDk5LCAxMjAsIDIxOSwgMTU2LCAyMiwgNDQsIAorICAgIDI0NiwgMTE0LCA5MywgOTksIDEyMCwgNTIsIDIyLCA0NCwgMjE5LCAxNTUsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDIyMiwgCisgICAgMjUyLCA5MywgOTksIDEyMCwgMjE5LCAxNTYsIDIyLCA0MywgMjQ2LCAxMTQsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDQzLCAKKyAgICAyMTksIDE1NSwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjMzLCA0NywgOTMsIDk5LCA2NywgMjE5LCAxNTYsIDIyLCA0NCwgCisgICAgMjQ2LCAxMTQsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDQsIDIxOSwgMTU1LCA5MywgOTksIDUyLCA2NywgMjIsIDIyMiwgMjUyLCAKKyAgICA5MywgOTksIDY3LCAyMTksIDE1NiwgMjIsIDQzLCAyNDYsIDExNCwgOTMsIDk5LCA2NywgNTIsIDIyLCA0MywgMjE5LCAxNTUsIAorICAgIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjMzLCA0NywgOTMsIDk5LCAxMjQsIDIxOSwgMTU2LCAyMiwgMjAzLCAyNDYsIDExNCwgCisgICAgOTMsIDk5LCAxMjQsIDUyLCAyMiwgMjAzLCAyMTksIDE1NSwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjQxLCA0NSwgOTMsIDk5LCAKKyAgICAxMjAsIDIxOSwgMTU2LCAyMiwgMjAzLCAyNDYsIDExNCwgOTMsIDk5LCAxMjAsIDUyLCAyMiwgMjAzLCAyMTksIDE1NSwgOTMsIAorICAgIDk5LCA1MiwgMTIwLCAyMiwgMjQxLCA0NSwgOTMsIDk5LCA2NywgMjE5LCAxNTYsIDIyLCAyMDMsIDI0NiwgMTE0LCA5MywgCisgICAgOTksIDY3LCA1MiwgMjIsIDIwMywgMjE5LCAxNTUsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjQxLCA0NSwgOTMsIDk5LCAxOTIsIAorICAgIDI1NCwgMjcsIDEyNCwgMjIsIDIyMiwgMjUyLCA5MywgOTksIDE5MiwgMjU0LCAyNywgMTI0LCAyMiwgMjMzLCA0NywgOTMsIAorICAgIDk5LCAxOTIsIDI1NCwgMjcsIDEyMCwgMjIsIDIzMywgNDcsIDkzLCA5OSwgMTkyLCAyNTQsIDI3LCAxMjAsIDIyLCAyMjIsIAorICAgIDI1MiwgOTMsIDk5LCAxOTIsIDI0OCwgMCwgMjE0LCAxNjAsIDQ0LCAyMTYsIDQzLCAyMzIsIDEwOSwgMjMzLCA0NywgOTMsIAorICAgIDk5LCAxOTIsIDI0OCwgMCwgMjE0LCAxNjAsIDQzLCAyMTYsIDQzLCAyMzIsIDEwOSwgMjIyLCAyNTIsIDkzLCA5OSwgMTkyLCAKKyAgICAyNDgsIDAsIDI0OSwgMTMxLCA5MywgOTksIDE5MiwgMjMzLCA0NywgOTMsIDk5LCAxOTIsIDIxNCwgMTYzLCA5MywgOTksIAorICAgIDE5MiwgMjIyLCAyNTIsIDkzLCA5OSwgMTkyLCAyNDYsIDEwNywgOTMsIDk5LCAxMTQsIDIzMywgNDcsIDkzLCA5OSwgMTE0LCAKKyAgICAyMTQsIDE2MywgOTMsIDk5LCAxMTQsIDIyMiwgMjUyLCA5MywgOTksIDExNCwgMjQ2LCAxMDcsIDkzLCA5OSwgMTkyLCA0MywgCisgICAgMjIsIDExNCwgMjIyLCAyNTIsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAxMTQsIDI0NiwgMTA3LCA5MywgOTksIDExNCwgNDMsIAorICAgIDIyLCAxOTIsIDIyMiwgMjUyLCA5MywgOTksIDExNCwgMTIwLCAyMiwgMTkyLCAyNDYsIDEwNywgMjE0LCAxNjAsIDE2MywgCisgICAgMjUxLCAyMTQsIDIzMiwgMTA5LCAxMjMsIDI0NSwgMTkwLCAyNTEsIDIxNCwgMjMyLCAxMDksIDEyMywgMjI0LCAyMywgMjUxLCAKKyAgICAyMTQsIDIzMiwgMTA5LCAxMzQsIDI0NSwgMTg4LCAyNTEsIDIxNCwgMjMyLCAxMDksIDE2MywgMjUxLCAyMTQsIDIzMiwgCisgICAgMTA5LCAyNDQsIDgyLCAyNDUsIDE4OCwgMjUxLCAyMTQsIDIzMiwgMTA5LCAxMzQsIDIyNCwgMjEsIDI1MSwgMjE0LCAyMzIsIAorICAgIDEwOSwgMjIwLCAxMjMsIDI0NSwgMTg4LCAyNTEsIDIxNCwgMjQzLCAyMzAsIDI1MSwgMjE0LCA0MywgMjIwLCAxMjMsIDI0NSwgCisgICAgMTg4LCAyNTEsIDIxNCwgNDMsIDEzNCwgMjI0LCAyMSwgMjUxLCAyMTQsIDQzLCAyNDQsIDgyLCAyNDUsIDE4OCwgMjUxLCAKKyAgICAyMTQsIDQzLCAxNjMsIDI1MSwgMjE0LCA0MywgMTM0LCAyNDUsIDE4OCwgMjUxLCAyMTQsIDQzLCAxMjMsIDIyNCwgMjMsIAorICAgIDI1MSwgMjE0LCA0MywgMTIzLCAyNDUsIDE5MCwgMjUxLCAyMTQsIDQ0LCAxNjMsIDI1MSwgMjE0LCAxOTIsIDIyMCwgOTMsIAorICAgIDIzMSwgODMsIDIyMCwgOTMsIDI0OCwgMTYzLCAyMjAsIDkzLCAyMTQsIDE2MCwgMTIzLCAyNDUsIDE5MCwgMjUxLCAyMTQsIAorICAgIDQ0LCAxMjMsIDI0NSwgMTkwLCAyNTEsIDIxNCwgMjI0LCAyNywgMjMyLCAxMDksIDIzMywgNDcsIDIyNCwgMjcsIDIzMiwgCisgICAgMTA5LCAyMjIsIDI1MiwgMjI0LCAyNywgMjE0LCAxNjAsIDIzMywgNDcsIDIyNCwgMjcsIDIxNCwgMTYwLCA0MywgMjIsIAorICAgIDIzMiwgMTA5LCA0MywgMjIsIDIzMiwgMTA5LCAyMjIsIDI1MiwgMjI0LCAyNywgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAKKyAgICAxMDksIDIyMiwgMjUyLCAyMjQsIDI3LCAyMTQsIDE2MCwgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOSwgCisgICAgMjMzLCA0NywgMjI0LCAyNywgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDksIDIyMiwgMjUyLCAKKyAgICAyMjQsIDI3LCAyMTQsIDE2MCwgMjIyLCAyNTIsIDIyNCwgMjcsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA5LCAyMzMsIAorICAgIDQ3LCAyMjQsIDI3LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOSwgNDMsIDIyLCAyMzIsIDEwOSwgMjIyLCAyNTIsIDg1LCAKKyAgICAyMTgsIDIzNSwgNzEsIDIxOCwgMjM1LCA3MSwgNDIsIDIsIDIyMiwgMTg0LCAyNDksIDE2MCwgNzEsIDQyLCAyNDksIDE4OCwgCisgICAgODUsIDQsIDIxOCwgMjM1LCA0MiwgMiwgMjAzLCAyNDQsIDEwNiwgNDIsIDIsIDY3LCAyNDQsIDEwNiwgNDIsIDIsIDIyNiwgCisgICAgMTQ1LCAyNDksIDEyNywgMjQ0LCAxMDYsIDQyLCAyLCAyMTQsIDE2MCwgNDMsIDIxNiwgNDMsIDIzMiwgMTA5LCA0NCwgMjQ0LCAKKyAgICAxMDYsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIDIxNiwgNDMsIDIzMiwgMTA5LCA0MywgMjQ0LCAxMDYsIDQyLCAyLCAyNDgsIDAsIAorICAgIDI0OSwgMTI3LCAyNDQsIDEwNiwgODUsIDQsIDIxOCwgMjM1LCA3MSwgNCwgMjE4LCAyMzUsIDg1LCAyMjMsIDExNywgNzEsIAorICAgIDIyMywgMTE3LCA4NSwgNjcsIDIyMywgMTE3LCA3MSwgNjcsIDIyMywgMTE3LCA4NSwgMjI2LCA3LCA3MSwgMjI2LCA3LCA4NSwgCisgICAgMjE0LCAxNjIsIDIxNSwgMjI2LCA3MSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA4NSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI2LCAKKyAgICA3MSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNDgsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNDgsIDIxNSwgCisgICAgMjI2LCA4NSwgMjIyLCAyNDgsIDQsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNDgsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNDgsIAorICAgIDIyNSwgOSwgNzEsIDIyMiwgMjQ4LCAyMjUsIDksIDg1LCAyNDYsIDEwNiwgMjE1LCAyMjYsIDcxLCAyNDYsIDEwNiwgMjE1LCAKKyAgICAyMjYsIDg1LCAyNDYsIDEwNiwgNCwgMjE1LCAyMjYsIDcxLCAyNDYsIDEwNiwgNCwgMjE1LCAyMjYsIDg1LCAyMzMsIDQzLCAKKyAgICAyMTUsIDIyNiwgNzEsIDIzMywgNDMsIDIxNSwgMjI2LCA4NSwgMjMzLCA0MywgNCwgMjE1LCAyMjYsIDcxLCAyMzMsIDQzLCAKKyAgICA0LCAyMTUsIDIyNiwgODUsIDIzMywgNDMsIDIyNSwgOSwgNzEsIDIzMywgNDMsIDIyNSwgOSwgODUsIDI0NywgMjQ5LCA3MSwgCisgICAgMjQ3LCAyNDksIDcxLCAyNDcsIDI1MCwgMjQ5LCAxODgsIDg1LCA0LCAyNDcsIDI0OSwgMjQ0LCA5MCwgMjMyLCAxMDUsIDcxLCAKKyAgICAyNTAsIDM2LCAyNDYsIDExOSwgMjUwLCAzNiwgMjUwLCAzNywgMiwgNjcsIDI0NCwgMTA2LCAyNTEsIDExMiwgODUsIDI1MCwgCisgICAgMzYsIDI1MCwgMzcsIDIsIDQzLCAxNjMsIDI1MSwgMjIyLCAyNTAsIDM3LCAyLCA0NCwgMTYzLCAyNTEsIDIyMiwgMjUwLCAKKyAgICAzNywgMiwgMjMyLCAxMDksIDE2MywgMjUxLCAyMjIsIDI1MCwgMzcsIDIsIDIxNCwgMTYwLCAxNjMsIDI1MSwgMjIyLCAyNTAsIAorICAgIDM3LCAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjcsIDI1MSwgMjIyLCAyNTAsIDM3LCAyLCAyNTQsIDE1NiwgMjUxLCA4OSwgCisgICAgMjE0LCAxNjAsIDQzLCAyMjQsIDI3LCAyNTEsIDIyMiwgNDMsIDE2MywgODUsIDI1MCwgMzYsIDQ0LCAxNjMsIDg1LCAyNTAsIAorICAgIDM2LCAyMzUsIDE5NSwgMjUxLCAxMTQsIDIzNSwgMTk1LCA3MSwgMjUwLCAzNiwgMjE0LCAxNjAsIDE2MywgMjM1LCAxOTUsIAorICAgIDcxLCAyNTAsIDM2LCAyMzIsIDEwOSwgMTYzLCAyMzUsIDE5NSwgNzEsIDI1MCwgMzYsIDIxNCwgMTYwLCA0MywgMjI0LCAyNywgCisgICAgMjUwLCAzNCwgMjU0LCAyNiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI3LCAyNTAsIDM0LCAyNTQsIDI2LCAyMzIsIDEwOSwgNDQsIAorICAgIDIyNCwgMjcsIDI1MCwgMzQsIDI1NCwgMjYsIDIzMiwgMTA5LCA0MywgMjI0LCAyNywgMjUwLCAzNCwgMjU0LCAyNiwgMjE0LCAKKyAgICAxNjAsIDE2MywgMjUwLCAzNiwgMjMyLCAxMDksIDE2MywgMjUwLCAzNiwgODUsIDIzMiwgMTA5LCA0NCwgMjE1LCAyMjYsIAorICAgIDg1LCAyMzIsIDEwOSwgNDMsIDIxNSwgMjI2LCA4NSwgMjE0LCAxNjAsIDQzLCAyMTUsIDIyNiwgODUsIDIxNCwgMTYwLCA0NCwgCisgICAgMjE1LCAyMjYsIDcxLCAyNTEsIDExNCwgNDIsIDIsIDQzLCAxNjMsIDI1MSwgMjIyLCA0MiwgMiwgNDQsIDE2MywgMjUxLCAKKyAgICAyMjIsIDQyLCAyLCAyMTQsIDE2MCwgNDMsIDI0OCwgMCwgMTYzLCAyNTEsIDIyMiwgNDIsIDIsIDIzMiwgMTA5LCA0NCwgCisgICAgMjQ4LCAwLCAxNjMsIDI1MSwgMjIyLCA3MSwgNDIsIDIsIDY3LCAyNTEsIDIzMywgMjMyLCAyMTQsIDcxLCAyMTQsIDE2MiwgCisgICAgMjE1LCAyMjcsIDIsIDI0NywgMTIxLCAyMTQsIDE2MiwgMjE1LCAyMjcsIDIsIDQzLCAxNjMsIDI1MSwgMjIyLCAyMTQsIAorICAgIDE2MiwgMjE1LCAyMjcsIDIsIDQ0LCAxNjMsIDI1MSwgMjIyLCAyMzMsIDg2LCAyNTAsIDM2LCA3MSwgNDIsIDIsIDIxNCwgCisgICAgMTYwLCA0MywgMjI0LCAyNiwgNzEsIDQyLCAyLCAyMzIsIDEwOSwgNDMsIDIyNCwgMjYsIDcxLCA0MiwgMiwgMjMyLCAxMDksIAorICAgIDQ0LCAyMjQsIDI2LCA3MSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyNiwgNzEsIDI1MCwgMzcsIDIsIDIxNCwgMTYwLCAKKyAgICA0MywgMjI0LCAyNiwgNzEsIDI1MCwgMzcsIDIsIDIzMiwgMTA5LCA0MywgMjI0LCAyNiwgNzEsIDI1MCwgMzcsIDIsIDIzMiwgCisgICAgMTA5LCA0NCwgMjI0LCAyNiwgNzEsIDI1MCwgMzcsIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyNiwgMjE0LCAxNjAsIDQzLCAKKyAgICAyMTUsIDIyNiwgMjE0LCAxNjAsIDQ0LCAyMTUsIDIyNiwgMjMyLCAxMDksIDQzLCAyMTUsIDIyNiwgNzEsIDIzMSwgODMsIAorICAgIDIxOCwgMjM1LCA4NSwgMjMxLCA4MywgMjE4LCAyMzUsIDcxLCAyMzEsIDgzLCA0LCAyMTgsIDIzNSwgODUsIDIzMSwgODMsIAorICAgIDQsIDIxOCwgMjM1LCAyMzIsIDEwOSwgNDQsIDIxNSwgMjI2LCA4NSwgMjE4LCAzOSwgMiwgMjIzLCAxMzMsIDI0OSwgMjQ4LCAKKyAgICAyMTQsIDE5NCwgMjE5LCA2MSwgMjQ5LCAyMjMsIDg1LCAyMTgsIDE1NywgNzEsIDIxOCwgMTU3LCAyMzIsIDIyOSwgMjE2LCAKKyAgICAxMzMsIDIxOCwgMzgsIDI1MywgMjM1LCAyMjgsIDcyLCAyNDgsIDM5LCAyMjgsIDcyLCAyNDksIDE5NiwgMjI2LCAxNjQsIAorICAgIDg1LCAyMTcsIDEsIDcxLCAyMTcsIDEsIDI1MiwgMTU3LCAyNTEsIDE2NCwgMjUyLCAxNTcsIDkzLCAyLCAyNTAsIDEzMCwgCisgICAgMjUyLCAxNTcsIDkzLCAyLCAyMTEsIDE3OCwgMjIxLCAyNTUsIDIxNCwgMTk1LCAyLCAyMjMsIDE2MSwgMjQ2LCA4NSwgMjQwLCAKKyAgICAyNDQsIDI1MiwgMjMsIDcxLCAyMjAsIDMsIDIyNSwgMTAyLCA4NSwgMjIwLCAzLCAyMjUsIDEwMiwgMjIwLCA4OCwgMjIzLCAKKyAgICA1MCwgMjIyLCAxODgsIDI0NCwgNTYsIDI0MSwgMjI5LCAyNTEsIDExNCwgODUsIDQzLCAyMjUsIDgsIDIzNSwgMjQzLCA4NSwgCisgICAgNDQsIDIyNSwgOCwgMjM1LCAyNDMsIDcxLCA0MywgMjI1LCA4LCAyMzUsIDI0MywgNzEsIDEyMCwgMjI1LCA4LCAyMzUsIAorICAgIDI0MywgNzEsIDQ0LCAyMjUsIDgsIDIzNSwgMjQzLCA3MSwgMTI0LCAyMjUsIDgsIDIzNSwgMjQzLCAyMTksIDEwMiwgMjIsIAorICAgIDI0OSwgMTMwLCAyNTAsIDIyMCwgNTAsIDIyMywgMTczLCA1MCwgMjUxLCAyNDAsIDUwLCAyNTEsIDI2LCAyNTQsIDEwMywgCisgICAgMjI2LCAxNDYsIDI0OSwgMTMxLCAyNTAsIDExMiwgMjIzLCAzOCwgMjQ5LCAxMzIsIDY0LCAyMzIsIDExOSwgMjQ5LCAxMzIsIAorICAgIDY0LCAyMzUsIDExNywgMjE4LCAxNTgsIDIyLCAyNDksIDEzNywgMjQ0LCAxNjksIDg3LCAyNTQsIDI0OSwgMjIwLCA5MCwgCisgICAgMjQyLCAyMywgMjIsIDIxOSwgMTkwLCAyMjUsIDIyMSwgODcsIDIxMCwgMjU0LCAyMTEsIDY5LCAyMTUsIDIxNiwgMzEsIAorICAgIDI0MSwgMjI0LCAyMTUsIDIxNiwgMzEsIDIzMywgMTA4LCAyMTUsIDIxNiwgMzEsIDI0NCwgOTcsIDIxNSwgMjE2LCAzMSwgCisgICAgMjE2LCAxMzQsIDIxNSwgMjE2LCAzMSwgMjExLCAyMzksIDIxNSwgMjE2LCAzMSwgMjEyLCA0MCwgMjE1LCAyMTYsIDMxLCAKKyAgICAyMzAsIDExNiwgMjE1LCAyMTYsIDMxLCAyNDUsIDIyNCwgMjEyLCAxLCA2NCwgMjQ4LCAxOSwgNzEsIDI0MywgMjQwLCAyNDQsIAorICAgIDE5MSwgNzEsIDIxOSwgNzUsIDI0NCwgMTkxLCA4NSwgMjE5LCA3NSwgMjQ0LCAxOTEsIDcxLCAyMTgsIDM5LCAyLCAyMjMsIAorICAgIDEzMywgMjQ0LCA5MywgMjI0LCAyMywgMjMwLCAxMjksIDIzMywgODEsIDIyNCwgMjMsIDIzMCwgMTI5LCAyMzEsIDU1LCAKKyAgICAyNDQsIDEzOSwgNTAsIDI0NSwgMjI0LCAyMzEsIDE5MSwgNTAsIDIzNSwgMzksIDIyMSwgMjIxLCAyMTQsIDE0NSwgMjI5LCAKKyAgICA5NCwgMjI1LCAyMSwgMjU0LCAxMywgMjE3LCA0MSwgMjQzLCA1MywgMjUxLCA0LCAyMzMsIDIwLCAyMTMsIDE1MCwgMjMyLCAKKyAgICAyMzksIDIyMSwgMTkyLCAyMjIsIDIwLCAyNTAsIDI0OSwgMjU0LCA0MywgMjI1LCA1MywgNzEsIDI1MCwgMTE4LCAyMzQsIAorICAgIDc5LCA3MSwgMjUwLCAxMTgsIDIyNCwgMTUsIDcxLCAyNTAsIDExOCwgMjIyLCAxOTYsIDcxLCAyNTAsIDExOCwgMjUxLCAKKyAgICAyMzIsIDcxLCAyNTAsIDExOCwgMjM0LCAzMSwgNzEsIDI1MCwgMTE4LCAyMjUsIDIzMiwgODUsIDI1MCwgMTE4LCAyMzQsIAorICAgIDc5LCA4NSwgMjUwLCAxMTgsIDIyNCwgMTUsIDg1LCAyNTAsIDExOCwgMjIyLCAxOTYsIDg1LCAyNTAsIDExOCwgMjUxLCAKKyAgICAyMzIsIDg1LCAyNTAsIDExOCwgMjM0LCAzMSwgODUsIDI1MCwgMTE4LCAyMjUsIDIzMiwgODUsIDIxOSwgMTcsIDIxOCwgNTEsIAorICAgIDcxLCAyNDEsIDIyOSwgMjE4LCA1MSwgNzEsIDI0NywgMjUwLCAyMTgsIDUxLCA4NSwgMjQ5LCAyNDYsIDIxOCwgNTEsIDcxLCAKKyAgICAyMTksIDE3LCAyMTgsIDUxLCA4NSwgMjQxLCAyMjksIDIxOCwgNTEsIDg1LCAyNDcsIDI1MCwgMjE4LCA1MSwgNzEsIDI0OSwgCisgICAgMjQ2LCAyMTgsIDUxLCAyNDAsIDI0NCwgMjE4LCAyMzksIDIyNCwgMjMsIDIyOCwgNDgsIDI0NSwgMTkwLCAyMjgsIDQ4LCAKKyAgICAyNTIsIDc0LCAyNDUsIDE5MCwgMjI4LCA0MywgMjUyLCA3NCwgMjE5LCAxMTksIDIyOCwgNDMsIDIzMCwgNTgsIDI0NCwgNjcsIAorICAgIDUwLCAyMzAsIDU4LCAyMjksIDE4OSwgNTAsIDIzMCwgNTgsIDIyMCwgNzcsIDUwLCAyMTIsIDksIDE4MiwgMjQ5LCAxMzEsIAorICAgIDI0NSwgMjIxLCAxODIsIDI0OSwgMTMxLCAyMTQsIDE3MSwgMjIzLCAxMTMsIDg3LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIAorICAgIDQ4LCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIDQ3LCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIAorICAgIDQ2LCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIDQ1LCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIAorICAgIDQ0LCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIDQzLCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyMTUsIAorICAgIDQyLCAyMjUsIDM1LCAyMjMsIDExMywgMTYsIDMxLCAyNDMsIDUxLCAyMzEsIDEzOSwgODUsIDIxNCwgMTcxLCAyMjMsIDExMywgCisgICAgODcsIDIyMywgMTE0LCAyMjYsIDIxLCA4NywgMjI1LCAyNTMsIDIyNiwgMjEsIDg3LCAyMjUsIDE3NSwgMjI2LCAyMSwgNTAsIAorICAgIDIxMSwgMjU1LCA4NywgMjQ3LCAyNDIsIDI0NCwgMTkwLCAyNDcsIDI0MiwgMjQ0LCAxODksIDI0NywgMjQyLCAyNDQsIDE4OCwgCisgICAgMjQ3LCAyNDIsIDI0NCwgMTg3LCAyNDcsIDI0MiwgMjQ0LCAxODYsIDI0NywgMjQyLCAyNDQsIDE4NSwgNzEsIDI1MCwgMzcsIAorICAgIDIsIDU5LCAyMjIsIDI1MiwgNzEsIDI1MCwgMzcsIDIsIDExMywgMjQ3LCAxMTksIDg1LCAyNTAsIDM3LCAyLCA3MSwgNTksIAorICAgIDIyMiwgMjUyLCA4NSwgMjUwLCAzNywgMiwgMTEzLCA3MSwgMjQ3LCAxMTksIDIzMCwgMTQzLCAzMSwgMjExLCA2OSwgMjMwLCAKKyAgICAxNDMsIDMxLCAyMTAsIDI1MywgMjQ3LCAyMjUsIDMxLCAyNDIsIDEzMiwgMjExLCA2OSwgMjQ3LCAyMjUsIDMxLCAyMzMsIAorICAgIDE0LCAyMTAsIDI1MywgMjQ3LCAyMjUsIDMxLCAyMzMsIDE0LCAyMTEsIDY5LCAyNDcsIDIyNSwgMzEsIDI0MiwgMTMyLCAKKyAgICAyMTAsIDI1MywgNzEsIDI0NCwgNzQsIDg1LCAyNDQsIDc0LCAyNDIsIDIzLCAyMiwgMjI1LCAxMDUsIDI1NCwgMTIxLCAyNDksIAorICAgIDEyOSwgMjE3LCAyMzYsIDIxOCwgMTY1LCA2NCwgMjU0LCAyMjcsIDIyMSwgMjA3LCAyNTQsIDE3MCwgMjQ0LCA1MiwgMjQzLCAKKyAgICA2MSwgMjE4LCAxNjUsIDY0LCAyNDEsIDIwMywgMjUzLCAyMDAsIDg3LCAyNDQsIDYzLCAyMjYsIDEyNywgNzEsIDIxOCwgCisgICAgMTU3LCAxMzQsIDIzMiwgMjA5LCAyNDksIDE3NiwgMjIyLCAyNTIsIDEzNCwgMjMyLCAyMDksIDI0OSwgMTc2LCAyMzMsIDQ3LCAKKyAgICAyMTIsIDUwLCA1MCwgMTI1LCAyMTMsIDEzMCwgNTAsIDI0NiwgMTExLCAyNDQsIDEzOSwgNTAsIDI0NiwgMTExLCAyMzEsIAorICAgIDE5MSwgNTAsIDIzNSwgMjA0LCAyNDQsIDEzOSwgMjIsIDIzMSwgMTkxLCA1MCwgMjMxLCAxOTEsIDIyLCAyNDQsIDEzOSwgCisgICAgNTAsIDIzMSwgMTkxLCAyLCAyMTgsIDEwNCwgNTAsIDIzMSwgMTkxLCAyLCAyMTgsIDEwNCwgMjIsIDIzMSwgMTkxLCAyMiwgCisgICAgMjQ0LCAxMzksIDUwLCA2NywgMjMxLCAxOTEsIDIsIDIxOCwgMTA0LCA1MCwgMjAzLCAyMzEsIDE5MSwgMiwgMjE4LCAxMDQsIAorICAgIDUwLCAyMzEsIDgzLCA3MSwgMjUwLCAzNiwgMjMxLCA4MywgODUsIDI1MCwgMzYsIDIzMSwgODMsIDQsIDcxLCAyNTAsIDM2LCAKKyAgICAyMzEsIDE1NCwgODcsIDI0NywgMTY4LCA4NywgMjE0LCAxNjksIDIyNSwgMjUyLCA4NywgMjQ5LCAyMzIsIDI0MywgMjI1LCAKKyAgICAyMTQsIDE0MSwgMjI5LCA4OSwgMjUwLCAxNjIsIDIyNiwgNjIsIDIzNSwgNDUsIDIxMywgMTg1LCAyNTAsIDk0LCA4NSwgCisgICAgMjMwLCAxMzAsIDIzMiwgMjI2LCAyMjAsIDExMywgMjIwLCAxNDgsIDIyNCwgNiwgMjIwLCAxMzEsIDIxOSwgNTYsIDI1MiwgCisgICAgMTYwLCAyNTIsIDEyNywgOTIsIDIzNCwgMTM5LCA3MSwgMjQ2LCA5NCwgMjMxLCAxODYsIDcxLCAyNDYsIDk0LCAyMzQsIDc5LCAKKyAgICA4NSwgMjQ2LCA5NCwgMjMxLCAxODYsIDg1LCAyNDYsIDk0LCAyMzQsIDc5LCAyMTksIDYyLCAyMTEsIDIzMCwgMjE5LCA2NSwgCisgICAgMjE4LCAzOSwgMjUyLCA1MiwgMjQ5LCAyNDgsIDIyMywgMTYwLCA4NSwgMjE5LCA2MSwgMjE2LCAxMzUsIDI0OSwgMjQ5LCAKKyAgICAyMiwgMjIzLCAxNjAsIDIxNSwgOTQsIDcxLCAyMjAsIDMsIDIyNSwgMTAyLCAyMTUsIDk0LCA4NSwgMjIwLCAzLCAyMjUsIAorICAgIDEwMiwgNzEsIDI0NywgMjUwLCAyMzYsIDEsIDIxOCwgMjM1LCAyNDksIDEyNiwgMjMzLCA5MiwgMjQ3LCAxOTQsIDI1MCwgCisgICAgMjQ1LCAyMjYsIDE2NywgMjI1LCAxMDUsIDI1MCwgMjQ2LCAyMTksIDg5LCAyNDEsIDIxMywgMiwgNzEsIDI0OSwgMTMxLCAKKyAgICAzNywgMjQ5LCAxMjYsIDIzMywgOTIsIDI1MCwgMTU0LCAyMjgsIDc2LCAyNDUsIDEyNSwgMjU0LCAxNDIsIDIyNiwgMTkyLCAKKyAgICA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDcxLCAyMTUsIDU1LCAKKyAgICA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCA0MywgMjMzLCA5MywgMjMxLCA1NCwgNzEsIDQzLCAyMzMsIDkzLCAyMzEsIAorICAgIDU0LCAyNDYsIDkwLCAyMTksIDgzLCA1MCwgMTE0LCA3MSwgMjQ2LCAxMDYsIDIxNSwgMjI2LCA0MywgMjUwLCAxLCAyNDUsIAorICAgIDEyNSwgOTIsIDIyMSwgMjU1LCAyNDQsIDE3NiwgMjQ4LCAwLCAyMzYsIDEsIDcxLCAyNTAsIDM3LCAyMzYsIDEsIDg1LCAKKyAgICAyMTgsIDIzNSwgODUsIDIxNSwgMTkzLCAyMjMsIDYxLCA0MywgMjQ1LCAxMjQsIDIyMywgNjEsIDQzLCAyNDUsIDEyMywgCisgICAgMjUzLCAyMTIsIDE2LCAzMSwgMjE0LCAxNDUsIDExNCwgMjUwLCAzNywgMiwgMjE4LCAxMDQsIDIyLCAxMTMsIDE3MCwgNDgsIAorICAgIDIyNSwgMTkwLCAyMjIsIDI0OSwgMjM1LCAyMDYsIDIyNSwgMTkwLCAyMzMsIDQ0LCAyMzUsIDIwNiwgMjI1LCAxOTAsIDIzNSwgCisgICAgMTk0LCAyMjUsIDE5MCwgODUsIDI0OSwgMTMyLCAyMjYsIDE5OCwgMjIwLCAzMCwgMjIwLCAxOCwgMjE5LCAyMzAsIDI1MCwgCisgICAgNjIsIDI1MCwgMjI3LCAyNDEsIDE1OCwgMjE5LCAxMjcsIDI0MywgNjIsIDIxMSwgMjMwLCAyNDAsIDIyMSwgMjQzLCA2MiwgCisgICAgMiwgMjQyLCAxMywgMjMxLCAxNzQsIDE2LCAzMSwgMjMyLCAyMzAsIDIzMCwgMTE2LCAyMTQsIDE5NSwgMjI2LCAxOTgsIAorICAgIDI0MiwgMTIzLCAyNDQsIDEzLCAyNDQsIDc1LCAyMzYsIDEsIDI0MSwgNjAsIDI0NCwgMTMwLCAyMjIsIDE1LCA0MiwgMjQ0LCAKKyAgICAxMiwgMjQ5LCAxNjAsIDIxOSwgMTA1LCAyNDAsIDExMywgMjE5LCAxMDgsIDIyNSwgMTY5LCAyLCAyNTIsIDE2MCwgMjE2LCAKKyAgICAyNDMsIDIzNSwgMTMyLCAyNTIsIDE0NywgODcsIDI0MSwgMjMyLCAyNDIsIDEzNCwgODcsIDI0MywgMjMzLCAyMjQsIDE0MywgCisgICAgMjQ5LCAxMDQsIDIyNiwgMTk4LCA4NSwgMjE4LCAyMzUsIDcxLCAyNDQsIDc1LCAyLCAyMDMsIDIzMCwgMjI1LCA4NSwgMjE4LCAKKyAgICAxMDUsIDIxNCwgMTYwLCAyNTEsIDIxOCwgMjIxLCAxOTQsIDg1LCAyMjEsIDE5NCwgMjMyLCAxMDksIDI1MSwgMjE4LCAyMjEsIAorICAgIDE5NCwgNzEsIDIyMSwgMTk0LCA3MSwgMTE0LCAyNTAsIDEzMSwgNzgsIDIxNywgMiwgMjMyLCAxNTUsIDUwLCAyMTcsIDU0LCAKKyAgICAyNDYsIDg5LCAyNTQsIDE5MiwgMjQ1LCAxMjAsIDIyMywgMTU4LCAyNDQsIDg2LCAyMjMsIDE1OCwgMjQyLCAxNiwgMjEzLCAKKyAgICAxNzQsIDI0MiwgMTYsIDIxMSwgMTk4LCAyNDIsIDE2LCAyMzIsIDEwOSwgNDQsIDIyNSwgMTk5LCAyMjUsIDE5OSwgMjE0LCAKKyAgICAxNjAsIDQ0LCAyMjUsIDE5OSwgNzEsIDIyOCwgMjMxLCA4NSwgMjI4LCAyMzEsIDI1MCwgMTMxLCA3OCwgMTE0LCAyNTAsIAorICAgIDEzMSwgNzgsIDIzMCwgODUsIDIxMSwgMTc4LCAxMTQsIDIzMCwgODUsIDIxMSwgMTc4LCAyNTIsIDE1NywgMjExLCAxNzgsIAorICAgIDExNCwgMjUyLCAxNTcsIDIxMSwgMTc4LCAyMjYsIDEyNywgMjYsIDI0OSwgMTMxLCAxMTQsIDI2LCAyNDksIDEzMSwgMjA0LCAKKyAgICAyNTAsIDE3NiwgMjQ5LCAxMzEsIDExNCwgMjA0LCAyNTAsIDE3NiwgMjQ5LCAxMzEsIDcsIDI0OSwgMTMxLCAyMjAsIDkyLCAKKyAgICA3MSwgNywgMjQ5LCAxMzEsIDIyNiwgMTI3LCA3LCAyNDksIDEzMSwgMjMxLCAxODgsIDI0OSwgMTMxLCAyMTgsIDE1OCwgNjQsIAorICAgIDI0OCwgMTUwLCAyNDQsIDEyLCAyMTcsIDE2LCAyNTMsIDIxNywgMjQ0LCAxMiwgMjUyLCAxNTgsIDI1MywgMjE3LCAxMTQsIAorICAgIDI0NCwgMTIsIDI1MiwgMTU4LCAyNTMsIDIxNywgMjQ0LCAxMiwgMjQ5LCAyNDQsIDI1MywgMjE3LCA4NSwgMjQ0LCAxMiwgCisgICAgMjI1LCAxMCwgMjE4LCAxNTcsIDcxLCAyNDQsIDEyLCAyMjUsIDEwLCAyMTgsIDE1NywgMjE5LCAxMiwgMjE4LCAxMTIsIAorICAgIDIyNiwgMTI3LCA3MSwgMjE4LCAxNTcsIDM3LCA3MSwgMjE4LCAxNTcsIDIwNCwgMjUwLCAxNzYsIDg1LCAyMTgsIDE1NywgCisgICAgODUsIDI1MCwgMTc2LCA3MSwgMjE4LCAxNTcsIDIyNiwgMTI3LCA4NSwgMjE4LCAxNTcsIDExNCwgMjI2LCAxMjcsIDg1LCAKKyAgICAyMTgsIDE1NywgMjI1LCA2MSwgMjE4LCAxNTcsIDIyMCwgOTIsIDcxLCAyMTgsIDE1NywgMTE0LCAyNTMsIDIxNywgMjA0LCAKKyAgICAyNTAsIDE3NiwgMjUzLCAyMTcsIDI0NSwgMTk0LCAyMTgsIDI0NSwgMjUzLCAyMTcsIDI0NSwgMTk0LCAyMjUsIDEwLCA4NSwgCisgICAgMjE4LCAxNTcsIDI0NSwgMTk0LCAyMjUsIDEwLCAyMjUsIDYxLCAyMTgsIDE1NywgMjE5LCAxMjYsIDIyNSwgMTAsIDg1LCAKKyAgICAyMTgsIDE1NywgMjQ1LCAxOTQsIDIyNSwgMTAsIDIyMywgMTE1LCA4NSwgMjE4LCAxNTcsIDExNCwgMjQ1LCAxOTQsIDIyNSwgCisgICAgMTAsIDIyMywgMTE1LCA4NSwgMjE4LCAxNTcsIDIxNSwgNzcsIDIyNSwgMTAsIDg1LCAyMTgsIDE1NywgMjE5LCAxMjEsIAorICAgIDIyNSwgMTAsIDI1MywgMjE3LCAyMTcsIDE2LCAyNTMsIDIxNywgMjA0LCAyNTAsIDE3NiwgMjE3LCAxNiwgMjUzLCAyMTcsIAorICAgIDExNCwgMjE3LCAxNiwgMjUzLCAyMTcsIDIxOSwgMTI2LCAyMjUsIDE1OCwgODUsIDIyLCA3MSwgMjQ0LCA1NSwgODUsIDI0NCwgCisgICAgNTUsIDcxLCAyNDQsIDU1LCAyNDUsIDE5NCwgMjI1LCAxNTgsIDIyNiwgMTI3LCA4NSwgMjQ0LCA1NSwgMzcsIDIwNCwgMjUwLCAKKyAgICAxNzYsIDI0NSwgMTk0LCAyMjUsIDEwLCAyMTgsIDE1NywgMTE0LCAyMTcsIDE2LCAyMjUsIDYxLCAyNTMsIDIxNywgMjE5LCAKKyAgICA2MywgMjE2LCAxMDYsIDIxNSwgMjE5LCAyMTksIDYzLCAxMTQsIDI1MCwgMTE1LCAyMTksIDYzLCAyMTksIDE0LCAxMTQsIAorICAgIDIxOSwgMTQsIDI1MiwgMTU4LCAyNTMsIDIxNywgMjQ1LCAxOTQsIDIxNywgMTYsIDIyNCwgMTcyLCAyNTMsIDIxNywgMTE0LCAKKyAgICAyNDUsIDE5NCwgMjE3LCAxNiwgMjI0LCAxNzIsIDI1MywgMjE3LCAyNDksIDEzMiwgNzgsIDIyMCwgOTIsIDcxLCAyNTAsIAorICAgIDM2LCAxNTIsIDkyLCAyNDksIDEzMiwgNzgsIDIzMiwgMTA5LCA0NCwgMjQ2LCA4NywgNzEsIDIxOCwgMjM1LCAyMTQsIDE2MCwgCisgICAgNDQsIDI0NiwgODcsIDcxLCAyMTgsIDIzNSwgMjMyLCAxMDksIDQ0LCAyMjAsIDkyLCA3MSwgMjE4LCAyMzUsIDIxNCwgMTYwLCAKKyAgICA0NCwgMjIwLCA5MiwgNzEsIDIxOCwgMjM1LCA4NSwgMjI0LCAxNCwgMTY0LCAyMjYsIDE0OCwgNzEsIDIyNCwgMTQsIDE2NCwgCisgICAgMjI2LCAxNDgsIDcxLCAyNDUsIDMyLCAxNjQsIDIyNiwgMTQ4LCA4NSwgMjQ3LCAyNTAsIDIzMCwgMTgzLCA3MSwgMjExLCAKKyAgICAxNzgsIDExNCwgMjQ1LCAzMiwgMTY0LCA4NywgMTkyLCA2NywgMTMwLCAyMzEsIDgzLCA2NywgMTMwLCAxMTQsIDY3LCAxMzAsIAorICAgIDExNCwgMjE5LCAxNTYsIDIxNSwgOTQsIDI0OSwgMjIxLCAyMjMsIDI1NSwgMTY0LCAyMjYsIDE0OCwgMTE0LCAyMTksIDE1NiwgCisgICAgMjQ5LCAyMjEsIDIyMywgMjU1LCAxNjQsIDIyNiwgMTQ4LCAxMTQsIDUyLCAyMTUsIDk0LCAyNDksIDIyMSwgMjIzLCAyNTUsIAorICAgIDE2NCwgMjI2LCAxNDgsIDExNCwgNTIsIDI0OSwgMjIxLCAyMjMsIDI1NSwgMTY0LCAyMjYsIDE0OCwgMTE0LCAxMjEsIDIxOSwgCisgICAgMTU2LCAyNDksIDIyMSwgMjIzLCAyNTUsIDE2NCwgMjI2LCAxNDgsIDExNCwgMTIxLCA1MiwgMjQ5LCAyMjEsIDIyMywgMjU1LCAKKyAgICAxNjQsIDIyNiwgMTQ4LCAyNDksIDkyLCAyMTgsIDE0MSwgMjI2LCAxNiwgNSwgMjI2LCAxNDgsIDExNCwgMjQ1LCAzMiwgCisgICAgMTY0LCAyMjYsIDE0OCwgMTE0LCAyNDEsIDIyOSwgMjQ1LCAzMiwgMTY0LCAyMjYsIDE0OCwgMTE0LCA4NSwgMjQxLCAyMjgsIAorICAgIDIyMiwgMTg4LCAxMTQsIDg1LCAyNDEsIDIyOSwgMjUxLCAxMTQsIDI0NCwgNTYsIDI0MSwgMjI4LCAyMjIsIDE4OCwgMjQ0LCAKKyAgICA1NiwgMjQxLCAyMjksIDI1MSwgMTE0LCAyMzEsIDgzLCA0MywgMjI2LCA1LCAyMjYsIDE0OCwgMjMxLCA4MywgNDQsIDIyNiwgCisgICAgNSwgMjI2LCAxNDgsIDIzMSwgODMsIDI0NCwgNjQsIDQzLCAyMjYsIDUsIDIyNiwgMTQ4LCAyMzEsIDgzLCAyNDQsIDY0LCAKKyAgICA0NCwgMjI2LCA1LCAyMjYsIDE0OCwgMjMxLCA4MywgMjMzLCA0MywgMjU0LCAxMTEsIDI1MSwgMTU5LCAyMjYsIDE0OCwgCisgICAgMjMxLCA4MywgMjIyLCAyNDgsIDI1NCwgMTExLCAyNTEsIDE1OSwgMjI2LCAxNDgsIDExNCwgMjMzLCA0MywgMjU0LCAxMTEsIAorICAgIDIyMywgMjU1LCAxNjQsIDIyNiwgMTQ4LCAxMTQsIDIyMiwgMjQ4LCAyNTQsIDExMSwgMjIzLCAyNTUsIDE2NCwgMjI2LCAKKyAgICAxNDgsIDExNCwgMjMzLCA0MywgMjU0LCAxMTEsIDI1MSwgMTU5LCAyMjYsIDE0OCwgMTE0LCAyMjIsIDI0OCwgMjU0LCAxMTEsIAorICAgIDI1MSwgMTU5LCAyMjYsIDE0OCwgMTkyLCA0MywgMjE2LCA3LCAyMjAsIDU0LCAyNTEsIDE1OSwgMjI2LCAxNDgsIDE5MiwgCisgICAgNDQsIDIxNiwgNywgMjIwLCA1NCwgMjUxLCAxNTksIDIyNiwgMTQ4LCAyMzEsIDgzLCA0MywgMjQ5LCAxMDAsIDI1MSwgMTU5LCAKKyAgICAyMjYsIDE0OCwgMjMxLCA4MywgNDQsIDI0OSwgMTAwLCAyNTEsIDE1OSwgMjI2LCAxNDgsIDI0NywgMjA1LCAxNTIsIDM3LCAKKyAgICAyMSwgMTEwLCAyNDcsIDIwNSwgMTUyLCAzNywgMjEsIDEwNSwgMjQ3LCAyMDUsIDE1MiwgMzcsIDIxLCAxNTgsIDI0NywgCisgICAgMjA1LCAxNTIsIDM3LCAyMSwgMTYxLCAyNDcsIDIwNSwgMTUyLCAzNywgMjEsIDE4OSwgMjQ3LCAyMDUsIDE1MiwgMzcsIDIxLCAKKyAgICAxOTQsIDI0NywgMjA1LCAxNTIsIDM3LCAyMSwgMTk4LCAyNDcsIDIwNSwgMTUyLCAzNywgMjEsIDE5NSwgMjQ3LCAyMDUsIAorICAgIDE1MiwgMzcsIDIxLCAyMDAsIDI0NywgMjA1LCAxNTIsIDM3LCA1NCwgMjE2LCAyNDgsIDI0NywgMjA1LCAzNywgMzUsIDIxLCAKKyAgICAxMTAsIDI0NywgMjA1LCAzNywgMzUsIDIxLCAxMDUsIDI0NywgMjA1LCAzNywgMzUsIDIxLCAxNTgsIDI0NywgMjA1LCAzNywgCisgICAgMzUsIDIxLCAxNjEsIDI0NywgMjA1LCAzNywgMzUsIDIxLCAxODksIDI0NywgMjA1LCAzNywgMzUsIDIxLCAxOTQsIDI0NywgCisgICAgMjA1LCAzNywgMzUsIDIxLCAxOTgsIDI0NywgMjA1LCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjA1LCAzNywgMzUsIDIxLCAKKyAgICAyMDAsIDI0NywgMjA1LCAzNywgMzUsIDU0LCAyMTYsIDI0OCwgMjQ3LCAyMDUsIDE1MiwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIAorICAgIDIwNSwgMTUyLCAzNywgMzUsIDIxLCAxMDUsIDI0NywgMjA1LCAxNTIsIDM3LCAzNSwgMjEsIDE1OCwgMjQ3LCAyMDUsIDE1MiwgCisgICAgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNSwgMTUyLCAzNywgMzUsIDIxLCAxODksIDI0NywgMjA1LCAxNTIsIDM3LCAzNSwgCisgICAgMjEsIDE5NCwgMjQ3LCAyMDUsIDE1MiwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIDIwNSwgMTUyLCAzNywgMzUsIDIxLCAxOTUsIAorICAgIDI0NywgMjA1LCAxNTIsIDM3LCAzNSwgMjEsIDIwMCwgMjQ3LCAyMDUsIDE1MiwgMzcsIDM1LCA1NCwgMjE2LCAyNDgsIDExNCwgCisgICAgMjExLCAyNDYsIDk3LCA3NCwgMTE0LCA5NiwgNTAsIDExNCwgMjMwLCAxODMsIDUwLCAxMTQsIDI0NywgMTcwLCA1MCwgMTE0LCAKKyAgICAyMTksIDI5LCAyNDUsIDIyMSwgNzQsIDExNCwgOTcsIDc0LCAxMTQsIDIyOCwgNTcsIDI0NSwgMjIxLCA3NCwgMjQ2LCA5OSwgCisgICAgMjI1LCAxMiwgOTcsIDc0LCAxMTQsIDIyMiwgMTg1LCA5NywgNzQsIDIxNSwgMjI1LCA5NywgNzQsIDExNCwgMjE1LCAyMjUsIAorICAgIDk3LCA3NCwgMjQ4LCAxNTYsIDIxNSwgMjI1LCA5NywgNzQsIDExNCwgMjQ4LCAxNTYsIDIxNSwgMjI1LCA5NywgNzQsIDg1LCAKKyAgICA5NywgNzQsIDIxNiwgMTQ1LCAyMTYsIDEzLCA5NywgMjUzLCAyNTAsIDIxNiwgMTQ1LCAyNTEsIDE3NCwgOTcsIDI1MywgCisgICAgMjUwLCA4NSwgOTcsIDI1MywgMjUwLCAxMTQsIDg1LCAyNDksIDkyLCAyNDYsIDEwNSwgMjIsIDk3LCA3NCwgMTE0LCA4NSwgCisgICAgMjQ5LCA5MiwgMjE0LCAxNTMsIDIyLCA5NywgNzQsIDIxOCwgMjMyLCA4NSwgOTcsIDc0LCAxMTQsIDI0OSwgMjA3LCA4NSwgCisgICAgOTcsIDc0LCAyMjIsIDI0NywgNzEsIDk3LCA3NCwgMjMzLCA0MiwgNzEsIDk3LCA3NCwgMjUyLCAxODQsIDIyMCwgOTIsIDcxLCAKKyAgICA5NywgNzQsIDI0MywgMjQyLCAyMjAsIDkyLCA3MSwgOTcsIDc0LCAxMTQsIDIzMiwgMTA5LCAyMjIsIDI0NiwgNzEsIDk3LCAKKyAgICA3NCwgMTE0LCAyMTQsIDE2MCwgMjIyLCAyNDYsIDcxLCA5NywgNzQsIDIyOCwgNTAsIDIzMiwgMTA5LCAyMjIsIDI0NiwgNzEsIAorICAgIDk3LCA3NCwgMjQ5LCAxMDAsIDIzMiwgMTI0LCAyMjgsIDUwLCAyMTQsIDE2MCwgMjIyLCAyNDYsIDcxLCA5NywgNzQsIDM3LCAKKyAgICAxMTQsIDcxLCA5NywgNzQsIDIxMSwgMjUyLCA5NywgNzQsIDI1MSwgMjIxLCAyMTksIDI5LCAyNDUsIDIyMSwgNzQsIDI1MSwgCisgICAgMjIxLCA5NywgNzQsIDI1MSwgMjIxLCAyMjgsIDU3LCAyNDUsIDIyMSwgNzQsIDExNCwgMjUxLCAyMjEsIDIxOSwgMjksIAorICAgIDI0NSwgMjIxLCA3NCwgMTE0LCAyNTEsIDIyMSwgOTcsIDc0LCAxMTQsIDI1MSwgMjIxLCAyMjgsIDU3LCAyNDUsIDIyMSwgCisgICAgNzQsIDIxNywgMTgsIDk3LCA3NCwgMTE0LCAyMTcsIDE3LCA5NywgNzQsIDIxMiwgMTgsIDk3LCA3NCwgMTE0LCAyMTIsIDE4LCAKKyAgICA5NywgNzQsIDIyNiwgMTczLCA5NywgNzQsIDUyLCAyNDksIDEwMCwgMjMyLCAxMjQsIDEzNCwgMjQ3LCAyMTUsIDI1NCwgCisgICAgMTEwLCA3MSwgMjE1LCAyMjcsIDI0OSwgMTg4LCA0LCA3MSwgMjE1LCAyMjYsIDIyNSwgMTcyLCAyMDQsIDIxOCwgNjQsIAorICAgIDIwNCwgMjE4LCAyMiwgNDMsIDIyMiwgOTEsIDI1MiwgMTc0LCAyNDgsIDYxLCA0NCwgMjIyLCA5MSwgMjUyLCAxNzQsIDI0OCwgCisgICAgNjEsIDE3NywgMiwgNTksIDIzNSwgMjE2LCAyMjMsIDUxLCAyMTksIDQ4LCAyMjQsIDIwMiwgMjE4LCA2NCwgMjE4LCAyMywgCisgICAgMjI0LCAyMDIsIDIxOSwgNDcsIDY3LCAyNTIsIDE0MiwgMiwgMjAzLCA5MSwgMTEsIDIyMiwgMjI5LCAyNDcsIDI1NSwgMTk5LCAKKyAgICAyNDcsIDE2OSwgMTEsIDI0NCwgMTc2LCAyNDcsIDI1NSwgOTIsIDIzMiwgMTQ3LCAyNTQsIDExOSwgOTIsIDIzMiwgMTQ3LCAKKyAgICAyMjYsIDE1OSwgNzEsIDI0NywgMjUwLCAyLCAyNTAsIDE3NCwgMjQ3LCAxMjEsIDIyLCAyLCAyNDcsIDEyMSwgMjQ1LCAxNzEsIAorICAgIDY0LCAyMjYsIDE3MSwgMjE0LCAxNTIsIDIzMiwgMTA5LCA0NCwgMjQ5LCAxNjIsIDIsIDI0NywgMTIxLCAyMTQsIDE2MCwgCisgICAgNDMsIDI0OSwgMTYyLCAyLCAyNDcsIDEyMSwgNDMsIDIyNiwgMTI5LCAyMzUsIDY3LCA0NCwgMjI2LCAxMjksIDIzNSwgNjcsIAorICAgIDI0MywgMjMwLCAyMjYsIDEyOSwgMjM1LCA2NywgMjMzLCA4NiwgMTIwLCAyMTcsIDg4LCAyMzMsIDg2LCAxMjQsIDIxNywgCisgICAgODgsIDQzLCAyMiwgNDQsIDUyLCAyMTUsIDkzLCA0MywgMjIsIDQ0LCAyMTcsIDg4LCA0MywgMjMwLCA4OCwgMTk5LCA0NCwgCisgICAgMjE3LCA4OCwgMTk5LCA0MywgMjE3LCA4OCwgMTIwLCAyMTcsIDg5LCAyLCAyNTAsIDM3LCA0OCwgMjMyLCAxMDYsIDI0NywgCisgICAgMTc0LCAyNTEsIDc5LCAyMDMsIDIyMiwgMTM0LCA3MSwgMjQ5LCAyMDYsIDI0NywgMjQ5LCA3MSwgMjQ5LCAyMDYsIDI0NywgCisgICAgMjUwLCAyLCAxNDAsIDIxNiwgMTE1LCA3MSwgMjQ5LCAyMDYsIDI0NywgMjUwLCAyLCA5NywgMjE2LCAxMTUsIDcxLCA0MiwgCisgICAgMiwgMTQwLCAyMTYsIDExNSwgNzEsIDQyLCAyLCA5NywgMjE2LCAxMTUsIDExLCA0MywgNzEsIDQyLCAxMjcsIDExLCA0NCwgCisgICAgNzEsIDQyLCAxMjcsIDExLCA0MywgMjU0LCAxMTEsIDEyNywgMTEsIDQ0LCAyNTQsIDExMSwgMTI3LCAxMSwgNDMsIDUyLCAKKyAgICAyNTQsIDExMSwgMTI3LCAxMSwgNDQsIDUyLCAyNTQsIDExMSwgMTI3LCAxMSwgNDMsIDcxLCAyMTYsIDcsIDIyMCwgNTQsIAorICAgIDEyNywgMTEsIDQ0LCA3MSwgMjE2LCA3LCAyMjAsIDU0LCAxMjcsIDExLCA0MywgMjQ0LCA2NCwgMjI2LCA0LCAxMSwgNDQsIAorICAgIDI0NCwgNjQsIDIyNiwgNCwgMjE0LCAxNTMsIDIyNCwgMjUsIDc0LCAyNDYsIDEwNSwgMjI0LCAyNSwgNzQsIDI1NCwgODksIAorICAgIDI0MywgOTksIDI1MCwgMzcsIDc0LCAyNTAsIDMsIDI0MywgOTksIDI1MCwgMzcsIDc0LCA0NCwgODAsIDIsIDM3LCAyMjUsIAorICAgIDIzLCAxOTksIDE0MCwgNzQsIDE5OSwgOTcsIDc0LCAxOTksIDQzLCA0NCwgNzQsIDE5OSwgMTQwLCA1MiwgNzQsIDE5OSwgCisgICAgOTcsIDUyLCA3NCwgMTk5LCA0MywgNDQsIDUyLCA3NCwgMTk5LCAxNDAsIDgwLCAyNDMsIDI0NCwgMTMwLCAxOTksIDk3LCAKKyAgICA4MCwgMjQzLCAyNDQsIDEzMCwgMTk5LCAxNDAsIDUyLCA4MCwgMjQzLCAyNDQsIDEzMCwgMTk5LCA5NywgNTIsIDgwLCAyNDMsIAorICAgIDI0NCwgMTMwLCAxOTksIDk3LCAyMTgsIDIzMSwgNzQsIDQ2LCA0NywgMjUxLCAyMTYsIDQ2LCA0NywgMjQ3LCAxMTgsIDQ2LCAKKyAgICA0NywgMjQ2LCAyNDYsIDQ2LCA0NywgMjQ3LCAxMTcsIDQ2LCA0NywgMjQ2LCAxODIsIDQ2LCA0NywgMjQ3LCA1MywgNDYsIAorICAgIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIDE1MCwgNDYsIDQ3LCAyNDcsIDIxLCA0NiwgCisgICAgNDcsIDI0NiwgMjEzLCA0NiwgNDcsIDI0NywgODQsIDQ2LCA0NywgMjQ2LCAxODEsIDQ2LCA0NywgMjQ3LCA1MiwgNDYsIDQ3LCAKKyAgICAyNDYsIDI0NCwgNDYsIDQ3LCAyNDcsIDExNSwgNDYsIDQ3LCAyNDYsIDEzNCwgNDYsIDQ3LCAyNDcsIDUsIDQ2LCA0NywgCisgICAgMjQ2LCAxOTcsIDQ2LCA0NywgMjQ3LCA2OCwgNDYsIDQ3LCAyNDYsIDE2NSwgNDYsIDQ3LCAyNDcsIDM2LCA0NiwgNDcsIAorICAgIDI0NiwgMjI4LCA0NiwgNDcsIDI0NywgOTksIDQ2LCA0NywgMjQ2LCAxNDksIDQ2LCA0NywgMjQ3LCAyMCwgNDYsIDQ3LCAKKyAgICAyNDYsIDIxMiwgNDYsIDQ3LCAyNDcsIDgzLCA0NiwgNDcsIDI0NiwgMTgwLCA0NiwgNDcsIDI0NywgNTEsIDQ2LCA0NywgCisgICAgMjQ2LCAyNDMsIDQ2LCA0NywgMjQ3LCAxMTQsIDQ2LCA0NywgMjQ2LCAxMjYsIDQ2LCA0NywgMjQ2LCAyNTMsIDQ2LCA0NywgCisgICAgMjQ2LCAxODksIDQ2LCA0NywgMjQ3LCA2MCwgNDYsIDQ3LCAyNDYsIDE1NywgNDYsIDQ3LCAyNDcsIDI4LCA0NiwgNDcsIAorICAgIDI0NiwgMjIwLCA0NiwgNDcsIDI0NywgOTEsIDQ2LCA0NywgMjQ2LCAxNDEsIDQ2LCA0NywgMjQ3LCAxMiwgNDYsIDQ3LCAKKyAgICAyNDYsIDIwNCwgNDYsIDQ3LCAyNDcsIDc1LCA0NiwgNDcsIDI0NiwgMTcyLCA0NiwgNDcsIDI0NywgNDMsIDQ2LCA0NywgCisgICAgMjQ2LCAyMzUsIDQ2LCA0NywgMjQ3LCAxMDYsIDQ2LCA0NywgMjQ2LCAxMzMsIDQ2LCA0NywgMjQ3LCA0LCA0NiwgNDcsIAorICAgIDI0NiwgMTk2LCA0NiwgNDcsIDI0NywgNjcsIDQ2LCA0NywgMjQ2LCAxNjQsIDQ2LCA0NywgMjQ3LCAzNSwgNDYsIDQ3LCAKKyAgICAyNDYsIDIyNywgNDYsIDQ3LCAyNDcsIDk4LCA0NiwgNDcsIDI0NiwgMTQ4LCA0NiwgNDcsIDI0NywgMTksIDQ2LCA0NywgCisgICAgMjQ2LCAyMTEsIDQ2LCA0NywgMjQ3LCA4MiwgNDYsIDQ3LCAyNDYsIDE3OSwgNDYsIDQ3LCAyNDcsIDUwLCA0NiwgNDcsIAorICAgIDI0NiwgMjQyLCA0NiwgNDcsIDI0NywgMTEzLCA0NiwgNDcsIDI0NiwgMTIyLCA0NiwgNDcsIDI0NiwgMjQ5LCA0NiwgNDcsIAorICAgIDI0NiwgMTg1LCA0NiwgNDcsIDI0NywgNTYsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAKKyAgICAyNDYsIDIxNiwgNDYsIDQ3LCAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTM3LCA0NiwgNDcsIDI0NywgOCwgNDYsIDQ3LCAyNDYsIAorICAgIDIwMCwgNDYsIDQ3LCAyNDcsIDcxLCA0NiwgNDcsIDI0NiwgMTY4LCA0NiwgNDcsIDI0NywgMzksIDQ2LCA0NywgMjQ2LCAKKyAgICAyMzEsIDQ2LCA0NywgMjQ3LCAxMDIsIDQ2LCA0NywgMjQ2LCAxMjksIDQ2LCA0NywgMjQ3LCAwLCA0NiwgNDcsIDI0NiwgCisgICAgMTkyLCA0NiwgNDcsIDI0NywgNjMsIDQ2LCA0NywgMjQ2LCAxNjAsIDQ2LCA0NywgMjQ3LCAzMSwgNDYsIDQ3LCAyNDYsIAorICAgIDIyMywgNDYsIDQ3LCAyNDcsIDk0LCA0NiwgNDcsIDI0NiwgMTQ0LCA0NiwgNDcsIDI0NywgMTUsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDcsIDQ2LCA0NywgMjQ3LCA3OCwgNDYsIDQ3LCAyNDYsIDE3NSwgNDYsIDQ3LCAyNDcsIDQ2LCA0NiwgNDcsIDI0NiwgCisgICAgMjM4LCA0NiwgNDcsIDI0NywgMTA5LCA0NiwgNDcsIDI0NiwgMTI1LCA0NiwgNDcsIDI0NiwgMjUyLCA0NiwgNDcsIDI0NiwgCisgICAgMTg4LCA0NiwgNDcsIDI0NywgNTksIDQ2LCA0NywgMjQ2LCAxNTYsIDQ2LCA0NywgMjQ3LCAyNywgNDYsIDQ3LCAyNDYsIAorICAgIDIxOSwgNDYsIDQ3LCAyNDcsIDkwLCA0NiwgNDcsIDI0NiwgMTQwLCA0NiwgNDcsIDI0NywgMTEsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDMsIDQ2LCA0NywgMjQ3LCA3NCwgNDYsIDQ3LCAyNDYsIDE3MSwgNDYsIDQ3LCAyNDcsIDQyLCA0NiwgNDcsIDI0NiwgCisgICAgMjM0LCA0NiwgNDcsIDI0NywgMTA1LCA0NiwgNDcsIDI0NiwgMTMyLCA0NiwgNDcsIDI0NywgMywgNDYsIDQ3LCAyNDYsIAorICAgIDE5NSwgNDYsIDQ3LCAyNDcsIDY2LCA0NiwgNDcsIDI0NiwgMTYzLCA0NiwgNDcsIDI0NywgMzQsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMjYsIDQ2LCA0NywgMjQ3LCA5NywgNDYsIDQ3LCAyNDYsIDE0NywgNDYsIDQ3LCAyNDcsIDE4LCA0NiwgNDcsIDI0NiwgCisgICAgMjEwLCA0NiwgNDcsIDI0NywgODEsIDQ2LCA0NywgMjQ2LCAxNzgsIDQ2LCA0NywgMjQ3LCA0OSwgNDYsIDQ3LCAyNDYsIAorICAgIDI0MSwgNDYsIDQ3LCAyNDcsIDExMiwgNDYsIDQ3LCAyNDYsIDEyMCwgNDYsIDQ3LCAyNDYsIDI0NywgNDYsIDQ3LCAyNDYsIAorICAgIDE4MywgNDYsIDQ3LCAyNDcsIDU0LCA0NiwgNDcsIDI0NiwgMTUxLCA0NiwgNDcsIDI0NywgMjIsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMTQsIDQ2LCA0NywgMjQ3LCA4NSwgNDYsIDQ3LCAyNDYsIDEzNSwgNDYsIDQ3LCAyNDcsIDYsIDQ2LCA0NywgMjQ2LCAxOTgsIAorICAgIDQ2LCA0NywgMjQ3LCA2OSwgNDYsIDQ3LCAyNDYsIDE2NiwgNDYsIDQ3LCAyNDcsIDM3LCA0NiwgNDcsIDI0NiwgMjI5LCA0NiwgCisgICAgNDcsIDI0NywgMTAwLCA0NiwgNDcsIDI0NiwgMTI3LCA0NiwgNDcsIDI0NiwgMjU0LCA0NiwgNDcsIDI0NiwgMTkwLCA0NiwgCisgICAgNDcsIDI0NywgNjEsIDQ2LCA0NywgMjQ2LCAxNTgsIDQ2LCA0NywgMjQ3LCAyOSwgNDYsIDQ3LCAyNDYsIDIyMSwgNDYsIDQ3LCAKKyAgICAyNDcsIDkyLCA0NiwgNDcsIDI0NiwgMTQyLCA0NiwgNDcsIDI0NywgMTMsIDQ2LCA0NywgMjQ2LCAyMDUsIDQ2LCA0NywgCisgICAgMjQ3LCA3NiwgNDYsIDQ3LCAyNDYsIDE3MywgNDYsIDQ3LCAyNDcsIDQ0LCA0NiwgNDcsIDI0NiwgMjM2LCA0NiwgNDcsIAorICAgIDI0NywgMTA3LCA0NiwgNDcsIDI0NiwgMTIzLCA0NiwgNDcsIDI0NiwgMjUwLCA0NiwgNDcsIDI0NiwgMTg2LCA0NiwgNDcsIAorICAgIDI0NywgNTcsIDQ2LCA0NywgMjQ2LCAxNTQsIDQ2LCA0NywgMjQ3LCAyNSwgNDYsIDQ3LCAyNDYsIDIxNywgNDYsIDQ3LCAKKyAgICAyNDcsIDg4LCA0NiwgNDcsIDI0NiwgMTM4LCA0NiwgNDcsIDI0NywgOSwgNDYsIDQ3LCAyNDYsIDIwMSwgNDYsIDQ3LCAyNDcsIAorICAgIDcyLCA0NiwgNDcsIDI0NiwgMTY5LCA0NiwgNDcsIDI0NywgNDAsIDQ2LCA0NywgMjQ2LCAyMzIsIDQ2LCA0NywgMjQ3LCAKKyAgICAxMDMsIDQ2LCA0NywgMjQ2LCAxMzAsIDQ2LCA0NywgMjQ3LCAxLCA0NiwgNDcsIDI0NiwgMTkzLCA0NiwgNDcsIDI0NywgNjQsIAorICAgIDQ2LCA0NywgMjQ2LCAxNjEsIDQ2LCA0NywgMjQ3LCAzMiwgNDYsIDQ3LCAyNDYsIDIyNCwgNDYsIDQ3LCAyNDcsIDk1LCA0NiwgCisgICAgNDcsIDI0NiwgMTQ1LCA0NiwgNDcsIDI0NywgMTYsIDQ2LCA0NywgMjQ2LCAyMDgsIDQ2LCA0NywgMjQ3LCA3OSwgNDYsIDQ3LCAKKyAgICAyNDYsIDE3NiwgNDYsIDQ3LCAyNDcsIDQ3LCA0NiwgNDcsIDI0NiwgMjM5LCA0NiwgNDcsIDI0NywgMTEwLCA0NiwgNDcsIAorICAgIDI0NiwgMTIxLCA0NiwgNDcsIDI0NiwgMjQ4LCA0NiwgNDcsIDI0NiwgMTg0LCA0NiwgNDcsIDI0NywgNTUsIDQ2LCA0NywgCisgICAgMjQ2LCAxNTIsIDQ2LCA0NywgMjQ3LCAyMywgNDYsIDQ3LCAyNDYsIDIxNSwgNDYsIDQ3LCAyNDcsIDg2LCA0NiwgNDcsIAorICAgIDI0NiwgMTM2LCA0NiwgNDcsIDI0NywgNywgNDYsIDQ3LCAyNDYsIDE5OSwgNDYsIDQ3LCAyNDcsIDcwLCA0NiwgNDcsIDI0NiwgCisgICAgMTY3LCA0NiwgNDcsIDI0NywgMzgsIDQ2LCA0NywgMjQ2LCAyMzAsIDQ2LCA0NywgMjQ3LCAxMDEsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjgsIDQ2LCA0NywgMjQ2LCAyNTUsIDQ2LCA0NywgMjQ2LCAxOTEsIDQ2LCA0NywgMjQ3LCA2MiwgNDYsIDQ3LCAyNDYsIAorICAgIDE1OSwgNDYsIDQ3LCAyNDcsIDMwLCA0NiwgNDcsIDI0NiwgMjIyLCA0NiwgNDcsIDI0NywgOTMsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNDMsIDQ2LCA0NywgMjQ3LCAxNCwgNDYsIDQ3LCAyNDYsIDIwNiwgNDYsIDQ3LCAyNDcsIDc3LCA0NiwgNDcsIDI0NiwgCisgICAgMTc0LCA0NiwgNDcsIDI0NywgNDUsIDQ2LCA0NywgMjQ2LCAyMzcsIDQ2LCA0NywgMjQ3LCAxMDgsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjQsIDQ2LCA0NywgMjQ2LCAyNTEsIDQ2LCA0NywgMjQ2LCAxODcsIDQ2LCA0NywgMjQ3LCA1OCwgNDYsIDQ3LCAyNDYsIAorICAgIDE1NSwgNDYsIDQ3LCAyNDcsIDI2LCA0NiwgNDcsIDI0NiwgMjE4LCA0NiwgNDcsIDI0NywgODksIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzksIDQ2LCA0NywgMjQ3LCAxMCwgNDYsIDQ3LCAyNDYsIDIwMiwgNDYsIDQ3LCAyNDcsIDczLCA0NiwgNDcsIDI0NiwgCisgICAgMTcwLCA0NiwgNDcsIDI0NywgNDEsIDQ2LCA0NywgMjQ2LCAyMzMsIDQ2LCA0NywgMjQ3LCAxMDQsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzEsIDQ2LCA0NywgMjQ3LCAyLCA0NiwgNDcsIDI0NiwgMTk0LCA0NiwgNDcsIDI0NywgNjUsIDQ2LCA0NywgMjQ2LCAxNjIsIAorICAgIDQ2LCA0NywgMjQ3LCAzMywgNDYsIDQ3LCAyNDYsIDIyNSwgNDYsIDQ3LCAyNDcsIDk2LCA0NiwgNDcsIDI0NiwgMTQ2LCA0NiwgCisgICAgNDcsIDI0NywgMTcsIDQ2LCA0NywgMjQ2LCAyMDksIDQ2LCA0NywgMjQ3LCA4MCwgNDYsIDQ3LCAyNDYsIDE3NywgNDYsIDQ3LCAKKyAgICAyNDcsIDQ4LCA0NiwgNDcsIDI0NiwgMjQwLCA0NiwgNDcsIDI0NywgMTExLCA5NywgMjE1LCA1OCwgODAsIDIsIDY3LCA5MSwgCiAgICAgOTcsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIDUyLCA4MCwgMiwgNjcsIDkxLCA5NywgNTIsIDgwLCAyLCAKLSAgICA2NywgOTEsIDQzLCA0NCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTQwLCAKLSAgICA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDk3LCA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCA4MCwgMiwgMjAzLCAKLSAgICA5MSwgMjE0LCAxNTMsIDgwLCAyLCAyMDMsIDkxLCAyMTQsIDE1MywgMjE1LCAyMTEsIDc0LCAyNDYsIDEwNCwgMjE1LCAyMTEsIAotICAgIDc0LCAxNDAsIDUyLCAyNDgsIDE1NywgNzQsIDk3LCA1MiwgMjQ4LCAxNTcsIDc0LCAxNDAsIDIxNSwgMjExLCAyNDgsIDE1NywgCi0gICAgNzQsIDk3LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCA5NywgMjE1LCA1OCwgMjE1LCAyMTEsIDI0OCwgMTU3LCA3NCwgOTcsIAotICAgIDgwLCAyLCAyNDYsIDExOCwgMjE4LCAxMzksIDIxNCwgMTUzLCA4MCwgMjE2LCA0MiwgMTMwLCAyNDYsIDEwNCwgODAsIDIxNiwgCi0gICAgNDIsIDEzMCwgOTcsIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCAKLSAgICA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc3LCA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgCi0gICAgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAxNDAsIDI1MywgMjUxLCA5NywgMjUzLCAyNTEsIAotICAgIDE0MCwgNTIsIDI1MywgMjUxLCA5NywgNTIsIDI1MywgMjUxLCAxNDAsIDgwLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDk3LCAKLSAgICA4MCwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCAxNDAsIDgwLCAyNDMsIDI0MywgMjUyLCAxNDEsIDIxNiwgNDIsIDg1LCAyNDcsIAotICAgIDI0OCwgOTcsIDgwLCAyNDMsIDI0MywgMjUyLCAxNDEsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgMjI4LCA1NiwgMjEyLCA5LCAKLSAgICAyMiwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgMjIsIDIxOSwgMjgsIDIxMiwgOSwgNzQsIAotICAgIDIyOCwgNTYsIDIxMiwgOSwgODAsIDIsIDEwMywgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyLCAxMDMsIDIxOSwgMjgsIDI0NSwgCi0gICAgMjIwLCA4MCwgMiwgMTAzLCAyMTksIDI4LCAyMTIsIDksIDgwLCAyLCAxMDMsIDIyOCwgNTYsIDIxMiwgOSwgODAsIDIyLCAKLSAgICAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA4MCwgMjIsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgCi0gICAgMjE5LCAyOCwgMjQ1LCAyMjAsIDgwLCAyMiwgMjE5LCAyOCwgMjEyLCA5LCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA4MCwgMjIsIAotICAgIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDI0NCwgMTc1LCAyNDcsIDI1NCwgCi0gICAgMjQ0LCAxNzUsIDI0NywgMjU1LCAyNDksIDEyNSwgMjIyLCAyMjgsIDI0NywgMjU0LCAyMTksIDI4LCAyNDUsIDIyMCwgODAsIAotICAgIDI0OSwgMTI1LCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA4MCwgMjQ5LCAxMjUsIDIxOSwgCi0gICAgMjgsIDI0NSwgMjIwLCA3NCwgMjQ0LCAxNzUsIDI0NywgMjU1LCAyNDksIDEyNSwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAKLSAgICAyMjIsIDIyOCwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCAKLSAgICA4MCwgMjQ5LCAxMjUsIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgODAsIDI0OSwgMTI1LCAyMjgsIAotICAgIDU2LCAyNDUsIDIyMCwgNzQsIDIxMiwgMzYsIDgwLCAyMjUsIDcsIDI0NywgMTk1LCAyMjIsIDI1MSwgODAsIDIyNSwgNywgCi0gICAgOTcsIDIxNiwgMTg4LCAyNDksIDkwLCAyMTQsIDE1MiwgODAsIDIyNSwgNywgOTcsIDIxNiwgMTg4LCAyNDksIDkwLCAyNDYsIAotICAgIDEwMywgODAsIDIyNSwgNywgMjQ2LCAxMDQsIDIxNiwgMTg4LCAyNDksIDkwLCAyMzMsIDM3LCA4MCwgMjI1LCA3LCAyNDYsIAotICAgIDEwNCwgMjE2LCAxODgsIDI0OSwgOTAsIDIyMiwgMjQxLCAyMjIsIDI0NCwgMjU0LCAyNiwgMjUwLCAyLCA3NCwgMjMzLCA0MCwgCi0gICAgMjU0LCAyNiwgMjU0LCA4OCwgNzQsIDIxNiwgMTQsIDI1NCwgMjYsIDI1NCwgODgsIDc0LCAyNTEsIDE3NSwgMjU0LCAyNiwgCi0gICAgMjU0LCA4OCwgNzQsIDIxNiwgMTQsIDI1NCwgMjYsIDI1MCwgMiwgODAsIDIsIDIzMCwgMTgxLCAyMTYsIDE0LCAyNTQsIDI2LCAKLSAgICAyNTQsIDg4LCA4MCwgMiwgMjI1LCAyMiwgMjMyLCAxMDgsIDQ0LCAyMjAsIDE1MiwgMjUwLCAyLCA3NCwgMjMyLCAxMDgsIAotICAgIDQzLCAyMjAsIDE1MiwgMjU0LCA4OCwgNzQsIDI1NCwgODgsIDI1MCwgMCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjUwLCAwLCAKLSAgICAyNTAsIDM2LCA3NCwgOTcsIDgwLCA3NywgMjE5LCAyNTEsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAyMTksIDI1MSwgOTcsIAotICAgIDc0LCAyMTksIDI1MSwgOTcsIDgwLCA3NywgMTQwLCA3NCwgOTcsIDgwLCAyLCA5NiwgNTEsIDE0MCwgODAsIDIsIDk2LCA1MSwgCi0gICAgOTcsIDgwLCAyMTYsIDEzOSwgMjExLCAxNzgsIDQzLCA0NCwgODAsIDIxNiwgMTM5LCA0LCAyNTAsIDM1LCAyMTQsIDE1MywgCi0gICAgMjE1LCA1OCwgODAsIDI0MywgMjQzLCA0LCAyNTAsIDM1LCA0MywgMjUyLCAxMzksIDEyMCwgNDQsIDI1MiwgMTM5LCAxMjQsIAotICAgIDI0MSwgMjU0LCA0MywgMjUyLCAxMzksIDEyNCwgNDQsIDI1MiwgMTM5LCAxMjAsIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCAKLSAgICA0NCwgMTI0LCAyNTIsIDEzOSwgNDMsIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCA0MywgMTI0LCAyNTIsIDEzOSwgNDQsIAotICAgIDI0MSwgMjU0LCA0MywgMjUyLCAxMzksIDEyMCwgNDQsIDI1MiwgMTM5LCAxMjAsIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCAKLSAgICA0NCwgMTI0LCAyNTIsIDEzOSwgNDQsIDI0MSwgMjU0LCA0MywgMjUyLCAxMzksIDEyNCwgNDQsIDI1MiwgMTM5LCAxMjQsIAotICAgIDI0MSwgMjU0LCAxMjAsIDI1MiwgMTM5LCA0MywgMTI0LCAyNTIsIDEzOSwgNDMsIDI0MSwgMjU0LCAxNDAsIDI0MSwgMjU1LCAKLSAgICAyLCAyNTIsIDEzOSwgMTIwLCAyMTYsIDQyLCAxMzAsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjE2LCA0MiwgCi0gICAgMTMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0NCwgMjE2LCA0MiwgMTMwLCAyNDYsIDEwNCwgMjQxLCAKLSAgICAyNTUsIDIsIDI1MiwgMTM5LCA0NCwgMjE2LCA0MiwgMTMwLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyMTYsIAotICAgIDQyLCAxMzAsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjE2LCA0MiwgMTMwLCAyMTQsIDE1MywgMjQxLCAKLSAgICAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjE2LCA0MiwgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgCi0gICAgMjE2LCA0MiwgMTMwLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyNDMsIDI0MywgMTMwLCA5NywgMjQxLCAKLSAgICAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIAotICAgIDQ0LCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0NCwgMjQzLCAyNDMsIDEzMCwgCi0gICAgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjQzLCAyNDMsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIAotICAgIDEzOSwgMTI0LCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjQzLCAyNDMsIAotICAgIDEzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI0MywgMjQzLCAxMzAsIDE0MCwgMjQxLCAyNTUsIAotICAgIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAxMDYsIDIxNCwgMTUzLCAKLSAgICAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIAotICAgIDI1MSwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjQ2LCAKLSAgICAxMDYsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIAotICAgIDI1MiwgMTM5LCAyMjIsIDI1MSwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDk3LCAyNDEsIDI1NSwgMiwgCi0gICAgMjUyLCAxMzksIDIxNCwgMTYzLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCA3NywgOTcsIDI0MSwgMjU1LCAyLCAKLSAgICAyNTIsIDEzOSwgMjQ2LCAxMDYsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIAotICAgIDI1MiwgMTM5LCAyMTQsIDE2MywgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgCi0gICAgMjUyLCAxMzksIDI0NiwgMTA2LCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTk5LCAyNDgsIDE1NiwgCi0gICAgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjUyLCA0MywgMTk5LCAyNDgsIDE1NiwgOTcsIDI0MSwgMjU1LCAyLCAKLSAgICAyNTIsIDEzOSwgMTIwLCA3NywgMTk5LCAyNDgsIDE1NiwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNTIsIAotICAgIDQzLCAxOTksIDI0OCwgMTU2LCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjUyLCAzMCwgMjQ2LCAKLSAgICAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNTEsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIAotICAgIDQzLCAyNTIsIDMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI1MSwgNDQsIDUyLCA4MCwgMiwgCi0gICAgMjIyLCAxODMsIDI0MSwgMjM1LCAyNDUsIDk4LCA1LCA3NywgOTcsIDc0LCAyMTYsIDg5LCAyMjYsIDE2OCwgNzcsIDk3LCAKLSAgICA3NCwgMTQwLCA4MCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA5NywgODAsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIAotICAgIDgwLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMzMsIDE1LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgMjE2LCAxMzksIDIzMywgCi0gICAgMTQsIDI0MiwgMTMwLCA3NywgOTcsIDc0LCAyMTgsIDY0LCA3NywgOTcsIDc0LCAxNDAsIDgwLCAyMTYsIDEzOSwgMjE4LCAKLSAgICA2MywgMjE4LCAyMiwgNzcsIDE0MCwgNzQsIDQzLCAyNDQsIDkxLCAyMTcsIDc3LCA0NCwgMjQ0LCA5MSwgMjE3LCA3NywgCi0gICAgMTIwLCAyNDQsIDkxLCAyMTcsIDc3LCAxMjQsIDI0NCwgOTEsIDIxNywgNzcsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIAotICAgIDI0OCwgNjAsIDIxMCwgMTYwLCAxODcsIDIxOCwgMjQyLCAyMTAsIDE2MCwgMTg3LCAyMTUsIDQ5LCAyNDksIDIyNiwgNDMsIAotICAgIDcxLCAyNDksIDk5LCAxMjcsIDQ0LCA3MSwgMjQ5LCA5OSwgMTI3LCA0MywgNzEsIDIyNiwgMywgNDQsIDcxLCAyMjYsIDMsIAotICAgIDIxMCwgMTYwLCAxODcsIDQzLCAyMzYsIDE1LCAxMjcsIDIxMCwgMTYwLCAxODcsIDQ0LCAyMzYsIDE1LCAxMjcsIDIxMCwgCi0gICAgMTYwLCAxODcsIDQzLCAyNTEsIDI0MiwgMTI3LCAyMTAsIDE2MCwgMTg3LCA0NCwgMjUxLCAyNDIsIDEyNywgNDMsIDQyLCAKLSAgICAyNTEsIDE1OCwgMiwgMjE0LCAxODMsIDQ0LCA0MiwgMjUxLCAxNTgsIDIsIDIxNCwgMTgzLCA0MywgNDIsIDI1MSwgMTU4LCAKLSAgICAyLCAyMTYsIDExNSwgMjM2LCAwLCAyMTYsIDE0LCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIAotICAgIDIzNiwgMCwgMjUxLCAxNzUsIDI0OSwgMTYwLCA0MywgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgMjM2LCAwLCAyNTEsIAotICAgIDE3NSwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDIxNiwgMTQsIDI0OSwgMTYwLCAKLSAgICA0MywgMjU0LCAxMTAsIDI1MSwgMTU4LCAyLCAyNDcsIDEyMCwgNDQsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMiwgMjQ3LCAxMjAsIAotICAgIDQzLCAyNTQsIDI2LCAyMzMsIDE1LCAxMjcsIDQ0LCAyNTQsIDI2LCAyNDIsIDEzMCwgMTI3LCA1MiwgNDMsIDI1NCwgMjYsIAotICAgIDI0MiwgMTMwLCAxMjcsIDUyLCA0NCwgMjU0LCAyNiwgMjMzLCAxNSwgMTI3LCA0MywgODUsIDIxNiwgNiwgMjIwLCA1MywgCi0gICAgMTI3LCA0NCwgODUsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAyNDYsIDExOCwgMjQ0LCAxMzUsIDY3LCAyMTAsIDM1LCAyMzIsIAotICAgIDIxMywgMjMxLCA4OCwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyMzMsIDQ2LCA0NCwgMjU0LCAxMTAsIDIxNCwgMTIsIDIsIDIxOCwgCi0gICAgMjM0LCAyMzEsIDg4LCA0NCwgMjU0LCAxMTAsIDIsIDI0NywgMTIwLCAyNTQsIDExMCwgMiwgMjIyLCA5MiwgMjM1LCAyMTUsIAotICAgIDI1NSwgMywgMjU0LCAxMDksIDIxOCwgMjU1LCAyNTQsIDExMCwgMjI2LCAxNzAsIDIzMywgNDYsIDIxOCwgMjU1LCAyNTQsIAotICAgIDExMCwgMjI2LCAxNzAsIDIxNCwgMTYzLCAyMTUsIDk0LCAyNTQsIDEwOSwgMjIzLCA0OSwgMjU0LCAxMDksIDI1NCwgMTEwLCAKLSAgICAyLCAyMTQsIDE4MywgMjIzLCA0OSwgMjU0LCAxMTAsIDIsIDIxNCwgMTgzLCAyMjYsIDI0OCwgMjU0LCAxMTAsIDIyNiwgCi0gICAgMTcwLCAyMTQsIDE2MywgMjI2LCAyNDgsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjQ2LCAxMDYsIDIzMSwgODgsIDI1NCwgMTEwLCAKLSAgICAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgMTIwLCAyMiwgMjIyLCAyNTEsIDIzMSwgODgsIAotICAgIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgMTIwLCAyMiwgMjMzLCA0NiwgCi0gICAgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjQsIDIyLCAKLSAgICAyMjIsIDI1MSwgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCAKLSAgICA3LCAxMjQsIDIyLCAyMzMsIDQ2LCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIAotICAgIDgwLCAyMjUsIDcsIDQ0LCAyMiwgMjE0LCAxNjMsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAKLSAgICAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDMsIDIyLCAyMTQsIDE2MywgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgCi0gICAgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0NCwgMjIsIDI0NiwgMTA2LCAyMzEsIDg4LCAyNTQsIAotICAgIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQzLCAyMiwgMjQ2LCAxMDYsIDIyMywgCi0gICAgNDksIDI0NSwgMTUyLCAyMjAsIDEyNywgMjQ1LCAxNTIsIDIyMCwgMTI4LCAyLCAyMjYsIDEyMywgMjQ1LCAxNTIsIDIyMCwgCi0gICAgMTI4LCAyLCA0LCAyNTAsIDM2LCA0OCwgMjQ1LCAxNTIsIDIyMCwgMTI4LCAyLCA0NCwgODAsIDQ4LCAyNDUsIDE1MiwgMjIwLCAKLSAgICAxMjgsIDIsIDQzLCA4MCwgNDgsIDI1MCwgMzYsIDIsIDIwMywgMTMwLCAzNywgNjcsIDEzMCwgMzcsIDIyNiwgNywgMzcsIAotICAgIDIyMywgNTAsIDIxOSwgNDYsIDM3LCAyMjUsIDE3MSwgMjUwLCAzNiwgMjQ3LCAxNzMsIDI1MSwgNzgsIDIwMywgMjUyLCAKLSAgICAxNDEsIDIyLCAyMTYsIDE0LCAxNjMsIDI0NywgMTczLCAyNTEsIDc4LCA2NywgMTMwLCAyNTAsIDM2LCAyLCAyMTgsIDI0LCAKLSAgICAyMTEsIDE3OCwgMzcsIDI1NCwgODcsIDI0NywgMTY5LCA1MCwgMTIwLCA4MCwgMjE2LCAxMzksIDI1MCwgMzUsIDM3LCA3MSwgCi0gICAgMjUxLCAxMTMsIDM3LCAyNTEsIDExMywgMzcsIDIzMywgMTQsIDM3LCAyNDIsIDEyOSwgMjUwLCAzNiwgMiwgNCwgMjUwLCAKLSAgICAzNiwgMjE2LCA0MiwgMjE2LCAxOTYsIDIyMiwgMjUxLCAyNTAsIDM2LCAyLCAxMTMsIDIwMywgMjE4LCA5MSwgMjE2LCA0MiwgCi0gICAgMjE2LCAxOTYsIDIyMiwgMjUxLCA5MiwgMjIyLCAyMjgsIDI0NywgMjU1LCAyMTksIDk1LCA5MiwgMjQ0LCAxNzUsIDI0NywgCi0gICAgMjU1LCAyMTksIDk1LCA5MiwgMjUzLCAyMTYsIDkyLCA0LCAyNTAsIDM1LCA5MiwgMjE4LCAyMzQsIDExMywgMjM1LCA2NSwgCi0gICAgMjE4LCAyMzIsIDIxNSwgMjI2LCAyLCA1OSwgNDgsIDIxNSwgMjI2LCAyLCAyMTQsIDE4MywgMjIyLCA5MiwgMjM2LCAwLCAKLSAgICAyMTUsIDIyNSwgMjE1LCAyMjYsIDIsIDIyMCwgMTM0LCAyNTMsIDIwNywgMjUxLCAxNzQsIDQ0LCAyMTUsIDIyNiwgNzcsIAotICAgIDQzLCAyMTUsIDIyNSwgNDMsIDIxNSwgMjI2LCAyNTIsIDMwLCA2NywgMTMwLCA2NywgMjUyLCAxNDEsIDI1MiwgMzAsIDQ0LCAKLSAgICAyMTUsIDIyNSwgMjUxLCAxNjUsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNTEsIDE2NSwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIAotICAgIDg1LCAyNTEsIDE2NCwgMzAsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAzMCwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDcxLCAKLSAgICAyNDAsIDIzNiwgODUsIDI0MCwgMjM2LCA0MywgMjExLCAyNDQsIDI0NCwgMTM1LCA0NCwgMjExLCAyNDQsIDI0NCwgMTM1LCAKLSAgICA0MywgNTIsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgNDQsIDUyLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDIzNSwgMjQ4LCAyMzUsIAotICAgIDIzNCwgMjE2LCAxMTIsIDExNywgMjM1LCAyMzQsIDIzNSwgMjM1LCAyMjksIDEwMiwgMiwgNjcsIDEzMCwgMjQ2LCAxMTIsIAotICAgIDIzMCwgODcsIDQyLCAyLCAyNDksIDE4MSwgMjI2LCAxMjcsIDIzNSwgMjQ2LCAyNTMsIDIzNywgMjE5LCAyMTksIDIyNCwgCi0gICAgMTgwLCAyNDUsIDk4LCA1LCAyMiwgMjE5LCA5NywgMjI2LCA3LCAyNDUsIDk4LCA1LCAyMiwgMjE5LCA5NywgMjI2LCA4LCAyLCAKLSAgICAyMTYsIDg5LCA0OCwgMjQwLCAxMDQsIDIxNiwgNDIsIDIyLCAyMTksIDk3LCAyMjYsIDcsIDI0MiwgMTgzLCAyMTgsIDE1NSwgCi0gICAgMjE2LCAxODUsIDI0NiwgMTA1LCAyMTUsIDIyNiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI0NiwgMTA1LCAyMTUsIDIyNiwgCi0gICAgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDg1LCAyNDcsIDI0OSwgMiwgMTI0LCA3NCwgODUsIDIzMiwgMTA0LCA3MSwgMjUwLCAKLSAgICAzNiwgMiwgMTI0LCA3NCwgODUsIDI1MCwgMzYsIDIsIDEyNCwgNzQsIDI0NSwgODUsIDcxLCAyMTgsIDIzNCwgMjQ1LCA4NSwgCi0gICAgODUsIDIxOCwgMjM0LCAyNDUsIDg1LCA3MSwgMjQ3LCAyNDgsIDI0NSwgODUsIDg1LCAyNDcsIDI0OCwgMjQ1LCA4NSwgNzEsIAotICAgIDI1MCwgMzUsIDI0NSwgODUsIDg1LCAyNTAsIDM1LCAyMjIsIDEzMiwgMjIzLCA1MCwgMjE5LCA0NywgMjI2LCAxNjcsIDIxOSwgCi0gICAgNDcsIDIsIDIyNiwgMTIzLCAyMjMsIDUwLCAyMTksIDQ3LCAyLCAyMDMsIDkxLCAyNTEsIDI0OSwgMjE5LCA0NiwgMjUxLCAKLSAgICAyNDksIDIyMywgNTAsIDIxOSwgNDYsIDUyLCAyMjUsIDIyLCAyMTUsIDIxMSwgMjI1LCAyMiwgMjMzLCA0MiwgMjQ5LCA5MSwgCi0gICAgMjU0LCAxMTAsIDEyNywgMjIyLCAyNDcsIDI0OSwgOTEsIDI1NCwgMTEwLCAxMjcsIDIxNiwgNzgsIDIzMCwgMTc5LCAyMzAsIAotICAgIDI0LCAzNywgNTksIDIyNiwgMTY3LCAyMzAsIDI0LCAzNywgOTYsIDIyNiwgMTY3LCAyMzAsIDI0LCAzNywgMzAsIDIyNiwgCi0gICAgMTY3LCAyMzAsIDI0LCAyMTQsIDE3NiwgMjI2LCAxNjgsIDIsIDI0NywgMTIwLCAyMzAsIDI0LCAyMTQsIDE3NiwgMjI2LCAKLSAgICAxNjgsIDIsIDIyNSwgMjIsIDIzMCwgMjQsIDQyLCAyMzUsIDE5OSwgMjI2LCAxNjcsIDIzMCwgMjQsIDQyLCAyMTQsIDE3NiwgCi0gICAgMjI2LCAxNjcsIDExMywgMjMyLCAxNDYsIDIyLCAyMjYsIDE2NywgMTEzLCAyMzIsIDE0NiwgMTc3LCAyMjYsIDE2NywgMjMwLCAKLSAgICAyNCwgMzAsIDIyNiwgMTY3LCAyMzAsIDE1NCwgMTEzLCAyMTgsIDQzLCAyMTgsIDQxLCAyLCAyMzUsIDIxMSwgMjI0LCAyNCwgCi0gICAgMjM1LCAyMTIsIDIyNiwgMTY3LCAyNDQsIDk5LCAyMjUsIDI1NSwgMjM1LCAyMTEsIDIzNSwgMjEyLCAyLCA1MiwgOTEsIAotICAgIDIzNSwgMjEyLCAyNTMsIDE3MywgMiwgMjE5LCA5NSwgMjUwLCAzMiwgMjQzLCAyMjYsIDI1NCwgODgsIDIzNSwgMjA5LCAKLSAgICAyMzIsIDIxNCwgMjM1LCAyMTAsIDIsIDIyMywgMTE1LCAyMjUsIDIzNywgMjU0LCAyLCAyMjUsIDEsIDIzMiwgMjE0LCAyMzUsIAotICAgIDIxMCwgMiwgMjIwLCAxNTIsIDIyNSwgMjM3LCAyNTQsIDIsIDIyNSwgMSwgMjMyLCAyMTQsIDIzNSwgMjEwLCAyMjgsIDUyLCAKLSAgICAyMzUsIDI1MCwgMjE2LCAxOTYsIDIyNSwgMSwgMjM1LCAyMTIsIDI1NCwgMiwgMTE1LCAyMjUsIDExLCAyMjYsIDE2NywgCi0gICAgMjI0LCAxOCwgMjM1LCAyMTIsIDIyNiwgMTY3LCAyMzUsIDIxMiwgMiwgMTQwLCA4MCwgMiwgMTAzLCAyMzUsIDIxMiwgMiwgCi0gICAgMzAsIDUwLCAyMzUsIDIxMiwgMiwgMjM1LCAxOTgsIDIzNSwgMjEyLCAyLCAyMTQsIDE3NSwgMjM1LCAyMTIsIDIsIDIyNiwgCi0gICAgMTIzLCAyMzUsIDIxMiwgMiwgMjE0LCAxODMsIDIzNSwgNjYsIDIzMywgODUsIDQzLCAyMTUsIDIyNiwgMjI2LCAxNjcsIAotICAgIDIxMCwgMTYwLCAxODcsIDIyMSwgMjAxLCAyNDksIDIwOSwgMjEwLCAxNjAsIDE4NywgMjIxLCAyMDEsIDIyNSwgNTYsIDIxMCwgCi0gICAgMTYwLCAxODcsIDIyMSwgMjAxLCAyMjQsIDE3NiwgOTYsIDUsIDIsIDQsIDI1MCwgMzYsIDQ4LCA5NiwgNSwgMiwgMjUwLCAKLSAgICAzMSwgMjU1LCAxNSwgNDgsIDk2LCA1LCAyLCAyMTYsIDg5LCA0OCwgOTYsIDUsIDIsIDU5LCA1MSwgOTYsIDUsIDIsIDIxNiwgCi0gICAgODksIDUxLCA5NiwgNSwgMiwgMjE4LCA2NSwgMTA1LCA5NiwgNSwgMiwgODUsIDIxNSwgMjI1LCAyMzAsIDE4MiwgNSwgMiwgCi0gICAgMjQ5LCAyMjAsIDQ4LCAyMzAsIDE4MiwgNSwgMiwgNTksIDUxLCAyMzAsIDE4MiwgNSwgMiwgMjQ0LCAxNzUsIDI0NywgMTE4LCAKLSAgICAyMzAsIDE4MiwgNSwgMiwgMjIyLCAyMjgsIDI0NywgMTE4LCA5NiwgNSwgMjM2LCAwLCA0MywgMTYzLCAyNTAsIDM1LCA5NiwgCi0gICAgNSwgMjM2LCAwLCA0NCwgMTYzLCAyNTAsIDM1LCAyMTMsIDI1NCwgMTc3LCAyNDksIDEzMSwgMjI0LCAxODAsIDIzMCwgODQsIAotICAgIDUsIDIsIDU5LCA0OCwgMjMwLCA4NCwgNSwgMiwgMjE0LCAxODMsIDIyMCwgMTQ5LCAyMjQsIDE4MSwgMiwgMjUxLCAxNzUsIAotICAgIDI0OSwgMjU1LCAyMTksIDc3LCAyMjQsIDE4MCwgMjMwLCA4NCwgNSwgMjM2LCAwLCA0MywgMTYzLCAyNTAsIDM1LCAyMzAsIAotICAgIDg0LCA1LCAyMzYsIDAsIDQ0LCAxNjMsIDI1MCwgMzUsIDM3LCAyMzAsIDg0LCA1LCAyLCAyNTAsIDMxLCAyNTUsIDE0LCAKLSAgICAyMzAsIDg0LCA1LCAyMzYsIDAsIDUyLCAyNTAsIDM1LCAzNywgMjQ3LCAxNjksIDUwLCA5NiwgNSwgMjM2LCAwLCAyMTUsIAotICAgIDIyNSwgMjMwLCAxODIsIDUsIDIzNiwgMCwgMjE1LCAyMjUsIDIzMCwgODQsIDUsIDIzNiwgMCwgMjE1LCAyMjUsIDIzNSwgCi0gICAgMjA2LCAyMjQsIDE4MCwgMjIyLCAyNDIsIDIzNSwgMjA2LCAyMjQsIDE4MCwgMjEwLCAxNjAsIDE4NywgMjIzLCA5MCwgMjQ5LCAKLSAgICAyMDksIDI1NCwgMTM0LCAxNzcsIDI0OSwgMTY1LCAyMzUsIDE5OSwgMiwgMjQ3LCAxMjAsIDIxNCwgMTc2LCAyLCAyMzAsIAotICAgIDE4MiwgNTAsIDIxNCwgMTc2LCAyLCAyMjYsIDEyMywgMjM1LCAxOTksIDIsIDIyNiwgMTIzLCAyMzUsIDE5OSwgMiwgMjMyLCAKLSAgICAxNDYsIDI1NCwgMTE4LCAyMTQsIDE3NiwgMiwgMjMyLCAxNDYsIDIyNiwgMTU4LCAyMTQsIDE3NiwgNzcsIDIzNSwgMTk4LCAKLSAgICAyMzUsIDE5OSwgNzcsIDIxNCwgMTc1LCAyMTQsIDE3NiwgNzcsIDI1MiwgMTQxLCA3NywgMjM1LCAxOTgsIDIzNSwgMTk5LCAKLSAgICA3NywgMjUyLCAxNDEsIDc3LCAyMTQsIDE3NSwgMjE0LCAxNzYsIDI1MiwgMzAsIDIyLCAyMzUsIDY1LCAyLCAyMTQsIDE3NSwgCi0gICAgMjM1LCAxOTksIDI1MiwgMzAsIDIyLCAyMzUsIDY1LCAyLCAyMzUsIDE5OCwgMjUwLCAwLCAyMTQsIDE3NiwgMiwgMjIwLCAKLSAgICAxMzMsIDI1MCwgMCwgMjM1LCAxOTksIDIsIDIyMCwgMTMzLCA1MiwgNDIsIDIzNSwgMTk4LCA1MiwgNDIsIDIxNCwgMTc1LCAKLSAgICAyNTAsIDAsIDIxNCwgMTc2LCAyLCAyMjAsIDEzNCwgMjIsIDIxOSwgNzcsIDIyNCwgMTgwLCAyMzIsIDE0NiwgMjIsIDIsIAotICAgIDU5LCA0OCwgMjMyLCAxNDYsIDE3NywgMiwgNTksIDQ4LCA1MiwgMjMyLCAxNDYsIDI1NCwgMTE4LCA1MiwgMjMyLCAxNDYsIAotICAgIDIyNiwgMTU4LCAxMTMsIDIzNSwgMjAwLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDExMywgMjM1LCAyMDAsIDIzMiwgMTQ2LCAKLSAgICAyMjYsIDE1OCwgMjE5LCA4NSwgMjMzLCA4NSwgMjI2LCAxNTgsIDIxOSwgODUsIDIzMywgODUsIDI1NCwgMTE4LCAyMzIsIAotICAgIDE0NiwgMTc3LCAyMjYsIDEyMSwgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzIsIDE0NiwgMjIsIDIsIDIzMCwgMjI0LCAyMTgsIAotICAgIDEzOSwgMjMyLCAxNDYsIDE3NywgMiwgMjMwLCAyMjQsIDIxOCwgMTM5LCAyMzIsIDE0NiwgMjIsIDIsIDIwMywgMjQ4LCAKLSAgICAxNTYsIDIzMiwgMTQ2LCAxNzcsIDIsIDIwMywgMjQ4LCAxNTYsIDIzMiwgMTQ2LCAyMiwgMiwgNTIsIDIyNiwgMTIzLCAyMzIsIAotICAgIDE0NiwgMjIsIDIsIDIxNCwgMTgzLCAyMzIsIDE0NiwgMjIsIDIsIDUyLCAyMTQsIDE4MywgNCwgMjEzLCAyNTEsIDIsIDIxNCwgCi0gICAgMTgzLCAyMzIsIDE0NiwgMTc3LCAyLCA1MiwgMjI2LCAxMjMsIDIzMiwgMTQ2LCAxNzcsIDIsIDUyLCAyMTQsIDE4MywgMjEwLCAKLSAgICAxNjAsIDE4NywgMjQ3LCAxMjksIDI1NCwgNzksIDIxMCwgMTYwLCAxODcsIDIyMywgMTQ4LCAyNTQsIDc5LCAyNDUsIDk4LCAKLSAgICA1LCAyLCA1OSwgNTEsIDI0MCwgMTA0LCAyLCA1OSwgNDgsIDIxNSwgMjExLCAyMDMsIDI1MiwgMTQxLCAyLCA1MiwgNjcsIAotICAgIDkxLCAyMTUsIDIxMSwgMjAzLCAyNTIsIDE0MSwgMiwgMjE1LCAyMTEsIDY3LCA5MSwgMjE2LCA4OSwgMjI2LCAxNjgsIDIsIAotICAgIDU5LCA0OCwgMjE2LCA4OSwgMjI2LCAxNjgsIDIsIDIyMiwgMjI4LCAyNDcsIDExOCwgMjE5LCAxNjIsIDIzMCwgMTgyLCAKLSAgICAyMTksIDE2MSwgMjQ5LCAxOTksIDIsIDU5LCA0OCwgMjQ1LCA5OCwgMiwgMjUzLCAyMTYsIDI1NCwgMTQ4LCAxMjgsIDIxNiwgCi0gICAgNDIsIDIsIDI1MCwgMzEsIDI1NSwgMTQsIDI1NCwgNDgsIDEyOCwgMTc3LCAxMjgsIDExMSwgMjQ1LCA5OCwgNSwgNzcsIDk2LCAKLSAgICA1MCwgOTYsIDUsIDc3LCAyNDUsIDk4LCA1MCwgMjQ1LCA5OCwgNSwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA1MiwgMjQ5LCAKLSAgICAyMjcsIDI0NSwgOTksIDExMywgMjQ5LCAxOTQsIDI0NSwgOTgsIDIxOSwgMTc2LCAxMzQsIDI0OSwgMTk0LCAyNDUsIDk4LCAKLSAgICAyMTksIDE3NiwgMjQ1LCA5OCwgNSwgMiwgMTEzLCAxNzAsIDc3LCAyMiwgMTEzLCAxNzAsIDUxLCAyNDUsIDk0LCAyLCAyNDQsIAotICAgIDExLCAxNzAsIDQ4LCAyMzMsIDE1LCAyLCAyNTAsIDM2LCAyMzUsIDIxNSwgMjQyLCAxMzAsIDIsIDI1MCwgMzYsIDIzNSwgCi0gICAgMjE1LCAyMzMsIDE1LCAyLCAyMjQsIDEzLCAxNjQsIDQ4LCAyNDIsIDEzMCwgMiwgMjI0LCAxMywgMTY0LCA0OCwgMjMzLCAKLSAgICAxNSwgMTc3LCAyMTksIDk3LCAxMjgsIDExMSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAxMTEsIDIzMywgMTUsIAotICAgIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgMjM1LCAyMTUsIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgCi0gICAgMjE2LCA0MiwgMiwgNTksIDIzNSwgMjE1LCAyMzMsIDE1LCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAKLSAgICAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjMzLCAxNSwgMTc3LCAyMTksIDk3LCAKLSAgICAxMjgsIDIxNiwgNDIsIDIsIDU5LCA3NywgMjIyLCAyNTEsIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgCi0gICAgMiwgNTksIDc3LCAyMzMsIDQ2LCAyMzMsIDE1LCAxNzcsIDI1NCwgNDksIDI0MiwgMTMwLCAxNzcsIDI1NCwgNDksIDIzMywgCi0gICAgMTUsIDIyLCAyMTksIDE1MywgMjI4LCA1MiwgMTI4LCAxMTEsIDI0MiwgMTMwLCAyMiwgMjE5LCAxNTMsIDIyOCwgNTIsIAotICAgIDEyOCwgMTExLCAyMzMsIDE1LCAyMiwgMjI4LCA1MiwgMjU0LCA0OSwgMjQyLCAxMzAsIDIyLCAyMjgsIDUyLCAyNTQsIDQ5LCAKLSAgICAyMzMsIDE1LCA3NywgMjQ2LCAxMTEsIDEyOCwgNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgNzcsIDI0NiwgMTExLCAxMjgsIAotICAgIDc3LCAyMzMsIDE0LCAyMzMsIDE1LCA3NywgMjE5LCAxNjIsIDE3NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDc3LCAyMTksIDE2MiwgCi0gICAgMTc3LCAyNDUsIDk5LCAyMzMsIDE1LCA3NywgMjE5LCAxNjIsIDc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDc3LCAyMTksIAotICAgIDE2MiwgNzcsIDIzMywgMTQsIDIzMywgMTUsIDc3LCAyNDIsIDEzMCwgNzcsIDI0NiwgMTExLCAyNDUsIDk5LCAyNDIsIDEzMCwgCi0gICAgNzcsIDIzMywgMTUsIDc3LCAyNDYsIDExMSwgMjQ1LCA5OSwgMjMzLCAxNSwgNzcsIDIxOSwgOTcsIDEyOCwgNzcsIDI0MiwgCi0gICAgMTMwLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDc3LCAyMTksIDk3LCAxMjgsIDc3LCAyMzMsIDE1LCA3NywgCi0gICAgMjE5LCA5NywgMjQ1LCA5OSwgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDIxOSwgOTcsIDEyOCwgMjE2LCAKLSAgICA0MiwgMTc3LCAyNDIsIDEyOSwgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTUsIDIsIDU5LCAyMzUsIDIxNSwgCi0gICAgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTMwLCAyLCA1OSwgMjM1LCAyMTUsIDI0NiwgMTExLCAxMjgsIAotICAgIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjQ2LCAxMTEsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMjQ2LCAxMTEsIAotICAgIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyNDYsIDExMSwgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAKLSAgICAxNzcsIDI0MiwgMTI5LCAyMTksIDE2MiwgMTc3LCAyMzMsIDE0LCAyMTksIDE2MiwgMTc3LCAyNDIsIDEyOSwgMjE5LCAxNjIsIAotICAgIDc3LCAyMzMsIDE1LCA3NywgMjQ1LCA5OCwgNTAsIDIxOSwgMTYyLCA3NywgMjQyLCAxMzAsIDc3LCAyNDUsIDk4LCA1MCwgCi0gICAgNTIsIDIyOSwgOTEsIDIzMywgMTQsIDUyLCAyMjksIDkxLCAyNDIsIDEyOSwgNTIsIDIyOSwgOTEsIDIzMywgMTUsIDIsIAotICAgIDIxNCwgMTgzLCAyNDIsIDEzMCwgMjI2LCAxMjEsIDIzMywgMTQsIDI0MiwgMTMwLCAyNTIsIDMwLCAyMzMsIDE0LCAyMzMsIAotICAgIDE1LCAyNTAsIDAsIDI1MSwgNzgsIDI0OSwgOTIsIDI0MiwgMTMwLCAyNTAsIDAsIDI1MSwgNzgsIDI0OSwgOTIsIDIzMywgCi0gICAgMTUsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MywgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDI0MiwgMTMwLCAyNTAsIDAsIAotICAgIDI1MSwgNzgsIDI0OSwgOTMsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyMTksIDc4LCAyMTYsIDIwMCwgMjMzLCA4MywgMjE2LCAKLSAgICAyMDAsIDIxOSwgNzgsIDIxNiwgMjAxLCAxNzcsIDEyOCwgMTExLCAyMzMsIDgzLCAyMTYsIDIwMSwgMTc3LCAxMjgsIDExMSwgCi0gICAgMjQ1LCA5OCwgNSwgMiwgMjUxLCAxMDgsIDQ4LCAyMjQsIDIwMywgNzcsIDIxOSwgMTUzLCAyNDUsIDk4LCA1MCwgMjE4LCAKLSAgICA1NiwgNzcsIDIxOSwgMTUzLCAyNDUsIDk4LCA1MCwgMjI0LCAyMDMsIDc3LCAyMTksIDE1MywgMjI4LCA1MiwgMTI4LCAxMTEsIAotICAgIDIxOCwgNTYsIDc3LCAyMTksIDE1MywgMjI4LCA1MiwgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgCi0gICAgNTYsIDc3LCAyNDUsIDk4LCA1MCwgMjI0LCAyMDMsIDc3LCAyMjgsIDUyLCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDIyOCwgCi0gICAgNTIsIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDI1NCwgMTQ4LCAKLSAgICAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyMjgsIDUyLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxOCwgNTYsIDc3LCAyMjgsIAotICAgIDUyLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDUyLCAyMjQsIDIwMiwgNTIsIDIxOCwgNTUsIDIxOCwgNjQsIDIsIDI0NywgMTIwLCAKLSAgICAyMTgsIDIyLCAyLCAyNDcsIDEyMCwgMjE4LCA2NCwgMiwgOTYsIDUsIDUxLCAyMTgsIDIyLCAyLCA5NiwgNSwgNTEsIDIxOCwgCi0gICAgNjQsIDIsIDIzMCwgODQsIDUsIDUxLCAyMTgsIDIyLCAyLCAyMzAsIDg0LCA1LCA1MSwgMjE4LCA2NCwgNjQsIDE3NywgMTI4LCAKLSAgICAyMTYsIDQyLCAyLCA1OSwgNDgsIDIxOCwgMjIsIDY0LCAxNzcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMTgsIDY0LCAKLSAgICA2NCwgNzcsIDI0NSwgOTgsIDUwLCAyMTgsIDIyLCA2NCwgNzcsIDI0NSwgOTgsIDUwLCAyMTgsIDY0LCA2NCwgNzcsIDIxNiwgCi0gICAgODksIDIyNiwgMTY3LCAyMTgsIDIyLCA2NCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCAyMTgsIDY0LCA2NCwgNzcsIDI1NCwgCi0gICAgMTQ4LCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxOCwgNjQsIDY0LCA3NywgMjI4LCAKLSAgICA1MiwgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCA3NywgMjI4LCA1MiwgMTI4LCAxMTEsIDQyLCA0MywgMjA0LCA5MywgMjI2LCAKLSAgICAxNjcsIDQyLCA0NCwgMjA0LCA5MywgMjI2LCAxNjcsIDI1MCwgMCwgMjE4LCA2MywgMjUwLCAwLCAyMTgsIDIxLCAyNTAsIDAsIAotICAgIDIxOCwgNjQsIDE3NywgMTI4LCAxMTEsIDI1MCwgMCwgMjE4LCAyMiwgMTc3LCAxMjgsIDExMSwgMjE4LCA2NCwgNzcsIDIxOCwgCi0gICAgMjEsIDIxOCwgMjIsIDc3LCAyMTgsIDYzLCAyMTgsIDY0LCA3NywgMjE4LCA2MywgMjE4LCAyMiwgNzcsIDIxOCwgMjEsIAotICAgIDIxOCwgMjIsIDI1MiwgMzAsIDIxOCwgNjMsIDIxOCwgMjIsIDI1MiwgMzAsIDIyLCAyMzUsIDY1LCAyNTEsIDc4LCAyNDgsIAotICAgIDE1NywgMiwgMjE4LCA2MywgMjQ1LCAxNzAsIDY0LCAyMjYsIDE3MCwgMjQ2LCAxMDMsIDIyNSwgNDgsIDIsIDIxNywgMTIsIAotICAgIDIxNiwgMTMsIDIxNSwgMjQwLCAyMzUsIDE5OCwgMjQ0LCAyMSwgMjI4LCA2NSwgMjE5LCAyNTEsIDQzLCAyMTcsIDg3LCAKLSAgICAyMTksIDI1MSwgMTI0LCAyMTcsIDg3LCAyMTksIDI1MSwgMTIwLCAyMTcsIDg3LCAyMjUsIDE3MiwgMiwgMjIyLCA5MSwgNjcsIAotICAgIDI1MiwgMTQxLCAyMTUsIDIxMSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDQzLCAyMTUsIDkzLCA2NywgMjUyLCAKLSAgICAxNDEsIDUyLCA0MywgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNTIsIDQzLCAyMTUsIDkzLCAxOTksIDI0OCwgMTU3LCAKLSAgICAyNDMsIDI0MywgNDMsIDIzMSwgNjMsIDY0LCA1MiwgMjEzLCAyMzksIDIxOSwgMjUxLCAxMjQsIDIxNywgODgsIDIsIDIyNiwgCi0gICAgMTIzLCAyMTksIDI1MSwgMTIwLCAyMTcsIDg4LCAyLCAyMTQsIDE4MywgMjE5LCAyNTEsIDEyMCwgMjE3LCA4OCwgNzcsIAotICAgIDIxOSwgMjUxLCAxMjQsIDIxNywgODcsIDUyLCAxMjQsIDIxNywgODcsIDUyLCAxMjAsIDIxNywgODcsIDUyLCAyMTgsIDEwMywgCi0gICAgMjI4LCA1MiwgNTAsIDIyMywgNDksIDUyLCAyMTgsIDEwMywgMjI4LCA1MiwgNTAsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDcsIAotICAgIDE3NSwgMiwgMjIzLCA0OSwgMjI5LCAxMDEsIDIxOSwgOTUsIDY3LCAyMzIsIDIxNCwgMiwgMjUwLCAzNiwgNDgsIDY3LCAKLSAgICAyMzIsIDIxNCwgMiwgMjUwLCAzNiwgNTEsIDEyNCwgMjE3LCA4OCwgMiwgMjUwLCAzNiwgNTEsIDIyNiwgOCwgMiwgMjAzLCAKLSAgICA5MSwgMjI2LCA4LCAyLCAyMTYsIDg5LCAyMjYsIDE2NywgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgMjUxLCAyNDQsIDIyMywgCi0gICAgOTEsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIDIsIDIwMywgOTEsIDIxNSwgMjExLCAyNDksIDIyNywgMjI2LCAxNjcsIAotICAgIDIxNSwgMjExLCAyMjksIDkxLCAyMzMsIDE0LCAyMTUsIDIxMSwgMjI5LCA5MSwgMjQyLCAxMjksIDI0NiwgMTExLCAyMTksIAotICAgIDk3LCAyMzMsIDE1LCAxNzcsIDEyOCwgMTExLCAyNDYsIDExMSwgMjE5LCA5NywgMjQyLCAxMzAsIDE3NywgMTI4LCAxMTEsIAotICAgIDIxNSwgMjExLCAyMTksIDQ3LCAyNTEsIDI0NCwgMjIzLCA5MSwgMjMzLCA4NSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgCi0gICAgMjI2LCAxNjcsIDUyLCAyMTksIDQ3LCAyMjYsIDE2NywgNzEsIDY3LCAxMzAsIDIzMCwgMjQsIDcxLCA2NywgMTMwLCAyMjgsIAotICAgIDU2LCAyNDUsIDIyMCwgNzEsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDcxLCA3NCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDcxLCA3NCwgCi0gICAgMjE5LCAyOCwgMjEyLCA5LCA3MSwgNzQsIDQzLCA0NCwgNzEsIDc0LCAxNDAsIDg1LCA3NCwgMjE0LCAxNTMsIDg1LCA3NCwgCi0gICAgMjQ2LCAxMDQsIDg1LCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDg1LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA4NSwgNzQsIAotICAgIDIxOSwgMjgsIDI0NSwgMjIwLCA4NSwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgODUsIDc0LCA0MywgNDQsIDg1LCA3NCwgMTIwLCAKLSAgICAxMjQsIDg1LCA3NCwgOTcsIDgwLCAyLCAyMTYsIDc3LCAyNDYsIDEwMywgOTcsIDgwLCAyLCAyMTYsIDc3LCAyMTQsIDE1MiwgCi0gICAgMTQwLCA4MCwgMiwgMjE2LCA3NywgMjQ2LCAxMDMsIDE0MCwgODAsIDIsIDIxNiwgNzcsIDIxNCwgMTUyLCA0MiwgMiwgMjE2LCAKLSAgICAxNCwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDI1MSwgMTc1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAKLSAgICAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIzMiwgMTA4LCA0MywgMjQ3LCAyNTUsIDE2MywgMjUxLCAyMjEsIAotICAgIDI0NywgMjQ5LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjQ3LCAyNDksIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgCi0gICAgMiwgMjE2LCAxNCwgMTYzLCAyNTEsIDIyMSwgMjQ3LCAyNDksIDIsIDI1MSwgMTc1LCAxNjMsIDI1MSwgMjIxLCAyNDYsIAotICAgIDExOCwgMjE4LCAyMzQsIDg1LCAyMzMsIDg1LCAyMTgsIDIzNCwgNzEsIDIzMywgODUsIDIxOCwgMjM0LCA4NSwgMjEzLCAKLSAgICAxODcsIDQsIDIxOCwgMjM0LCA3MSwgMjEzLCAxODcsIDQsIDIxOCwgMjM0LCA4NSwgMjI1LCAxOTAsIDcxLCAyMjUsIDE5MCwgCi0gICAgNzEsIDI0MSwgMTkzLCA4NSwgMjQxLCAxOTMsIDIwMywgODUsIDI0MSwgMTkzLCA4NSwgMjMzLCA4NSwgMjUwLCAzNSwgODUsIAotICAgIDIzMSwgODIsIDI0NywgMjQ4LCA3MSwgMjMxLCA4MiwgMjQ3LCAyNDgsIDg1LCAyMzEsIDgyLCAyMzIsIDEwNCwgNzEsIDIzMSwgCi0gICAgODIsIDIzMiwgMTA0LCA4NSwgNCwgMjQ3LCAyNDgsIDg1LCA0LCAyMzIsIDEwNCwgNzEsIDQsIDIzMiwgMTA0LCA4NSwgMjAzLCAKLSAgICAyNDUsIDE2NCwgNzEsIDIwMywgMjQ1LCAxNjQsIDg1LCA2NywgMjQ1LCAxNjQsIDcxLCA2NywgMjQ1LCAxNjQsIDQzLCA4MCwgCi0gICAgMiwgNCwgMjUwLCAzNSwgMTM0LCAxNDAsIDI1MywgMjQ3LCA0MywgODAsIDIsIDM3LCAyMjUsIDIyLCAxOTksIDE0MCwgMjE4LCAKLSAgICAyMzAsIDc0LCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDUyLCA2NywgOTEsIAotICAgIDE0MCwgMjE1LCA1OCwgODAsIDI0MywgMjQzLCAxMzAsIDE0MCwgMjE1LCA1OCwgMjE1LCAyMTEsIDI0OCwgMTU3LCA3NCwgCi0gICAgMTQwLCA4MCwgMiwgMjQ2LCAxMTgsIDIxOCwgMTM5LCAxNDAsIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIDE0MCwgODAsIAotICAgIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDIxNywgNzcsIDE0MCwgMjE1LCA1OCwgCi0gICAgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgCi0gICAgMTQwLCA4MCwgMjE2LCAxMzksIDIxMSwgMTc4LCAyMTIsIDM2LCA4MCwgMjI1LCA3LCAyNDcsIDE5NSwgMjMzLCA0NiwgMjQ1LCAKLSAgICA5OCwgNSwgNzcsIDE0MCwgNzQsIDIyMywgNTAsIDIxNiwgODksIDIyNiwgMTY4LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIAotICAgIDIyMywgNTAsIDI1NCwgMTQ4LCAxMjgsIDExMSwgOTcsIDgwLCAyMTYsIDEzOSwgMjQyLCAxMjksIDk3LCA4MCwgMjE2LCAKLSAgICAxMzksIDIxOCwgMjEsIDE0MCwgMjI0LCAyNCwgNzQsIDk3LCAyMjQsIDI0LCA3NCwgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAKLSAgICAxNjgsIDc3LCA5NywgNzQsIDk3LCA4MCwgNzcsIDIyMywgNTAsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE2LCA4OSwgMjI2LCAKLSAgICAxNjgsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAxNDAsIDgwLCA3NywgMjIzLCA1MCwgCi0gICAgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCA4MCwgNzcsIDIyMywgNTAsIDIxNiwgODksIDIyNiwgMTY3LCA3MSwgMjMxLCA4MiwgCi0gICAgMjE4LCAxNTYsIDg1LCA0LCAyMTgsIDE1NiwgNzEsIDQsIDIxOCwgMTU2LCA4NSwgMjIyLCAyNDcsIDIyNSwgMTkwLCA3MSwgCi0gICAgMjIyLCAyNDcsIDIyNSwgMTkwLCAxMTQsIDIzMywgODUsIDI1MCwgMzUsIDExNCwgMjI2LCAxMjQsIDIsIDIyNiwgMTI0LCAKLSAgICAyMzUsIDIxNSwgMTE0LCAyNTAsIDM2LCAyLCAyNTAsIDM2LCAyMzUsIDIxNSwgMTE0LCAyNTAsIDM1LCAxMTQsIDM3LCAyMjEsIAotICAgIDI1NCwgMTQ1LCA2LCAxLCAyNTMsIDE1OSwgMTQ1LCA2LCAxLCAyNTEsIDExNywgMTQ1LCA2LCAxLCAyMTMsIDI1MywgMTQ1LCAKLSAgICA2LCAxLCAyNDIsIDE4NSwgMTQ1LCA2LCAxLCAyNDcsIDE0MCwgMTQ1LCA2LCAxLCAyMTEsIDIxLCAxNDUsIDYsIDEsIDIxMCwgCi0gICAgNjgsIDE0NSwgNiwgMSwgMjQ2LCAzNCwgMTQ1LCA2LCAxLCAyMTAsIDkxLCAxNDUsIDYsIDEsIDIzNSwgMTQ4LCAxNDUsIDYsIAotICAgIDEsIDY1LCAyMzUsIDE0OCwgMTQ1LCA2LCAxLCA3MywgMTQ1LCA2LCAxLCAyNDcsIDE2MCwgMTQ1LCA2LCAxLCAyMzQsIDI0MCwgCi0gICAgMTQ1LCA2LCAxLCAyMzIsIDE4NiwgMTQ1LCA2LCAxLCAyMzAsIDI5LCAxNDUsIDYsIDEsIDIyOSwgMTkxLCAxNDUsIDYsIDEsIAotICAgIDIyNiwgMTg1LCAxNDUsIDYsIDEsIDIyNSwgNCwgMTQ1LCA2LCAxLCAyMjIsIDIyNywgMTQ1LCA2LCAxLCAyMTksIDgzLCAKLSAgICAxNDUsIDYsIDEsIDIxNSwgODEsIDE0NSwgNiwgMSwgMjE0LCAyMDEsIDE0NSwgNiwgMSwgMjQzLCAyNDYsIDE0NSwgNiwgMSwgCi0gICAgMjQxLCAxOTksIDE0NSwgNiwgMSwgMjI2LCAxMzUsIDE0NSwgNiwgMSwgMjI1LCAyMjEsIDE0NSwgNiwgMSwgMjE5LCAyMjgsIAotICAgIDE0NSwgNiwgMSwgMjE1LCAxNjcsIDE0NSwgNiwgMSwgMjUwLCA3NSwgMTQ1LCA2LCAxLCAyMjAsIDEwMiwgMTQ1LCA2LCAxLCAKLSAgICAyMTEsIDI3LCAxNDUsIDYsIDEsIDIxMSwgMjksIDE0NSwgNiwgMSwgMjExLCA1NywgMTQ1LCA2LCAxLCAyMTgsIDI1MywgCi0gICAgMTYyLCAxNDUsIDYsIDEsIDIxMCwgMjEyLCAxNDUsIDYsIDEsIDQsIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDQsIDIxMCwgMTg0LCAKLSAgICAyLCAyMTcsIDc3LCAxNDUsIDYsIDEsIDIxMCwgMjQ0LCAxNDUsIDYsIDEsIDIzNSwgMTg0LCA0LCAyMTAsIDE4MywgMTQ1LCAKLSAgICA2LCAxLCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgNiwgMSwgMjM1LCAxODQsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCAKLSAgICA2LCAxLCAyNDQsIDgyLCAxNDUsIDYsIDEsIDIzNSwgMTQ2LCAxNDUsIDYsIDEsIDIxOSwgMjI3LCAxNDUsIDYsIDEsIDIxNSwgCi0gICAgMjAyLCA2MSwgMTQ1LCA2LCAxLCAyMzMsIDc1LCAyMzAsIDI5LCAxNDUsIDQsIDEsIDI1MywgMTU5LCAxNDUsIDQsIDEsIAotICAgIDI1MSwgMTE3LCAxNDUsIDQsIDEsIDIxMywgMjUzLCAxNDUsIDQsIDEsIDI0MiwgMTg1LCAxNDUsIDQsIDEsIDI0NywgMTQwLCAKLSAgICAxNDUsIDQsIDEsIDIxMSwgMjEsIDE0NSwgNCwgMSwgMjEwLCA2OCwgMTQ1LCA0LCAxLCAyNDYsIDM0LCAxNDUsIDQsIDEsIAotICAgIDIxMCwgOTEsIDE0NSwgNCwgMSwgMjM1LCAxNDgsIDE0NSwgNCwgMSwgNjUsIDIzNSwgMTQ4LCAxNDUsIDQsIDEsIDczLCAKLSAgICAxNDUsIDQsIDEsIDI0NywgMTYwLCAxNDUsIDQsIDEsIDIzNCwgMjQwLCAxNDUsIDQsIDEsIDIzMiwgMTg2LCAxNDUsIDQsIDEsIAotICAgIDIzMCwgMjksIDE0NSwgNCwgMSwgMjI5LCAxOTEsIDE0NSwgNCwgMSwgMjI2LCAxODUsIDE0NSwgNCwgMSwgMjI1LCA0LCAKLSAgICAxNDUsIDQsIDEsIDIyMiwgMjI3LCAxNDUsIDQsIDEsIDIxOSwgODMsIDE0NSwgNCwgMSwgMjE1LCA4MSwgMTQ1LCA0LCAxLCAKLSAgICAyMTQsIDIwMSwgMTQ1LCA0LCAxLCAyNDMsIDI0NiwgMTQ1LCA0LCAxLCAyNDEsIDE5OSwgMTQ1LCA0LCAxLCAyMjYsIDEzNSwgCi0gICAgMTQ1LCA0LCAxLCAyMjUsIDIyMSwgMTQ1LCA0LCAxLCAyMTksIDIyOCwgMTQ1LCA0LCAxLCAyMTUsIDE2NywgMTQ1LCA0LCAxLCAKLSAgICAyNTAsIDc1LCAxNDUsIDQsIDEsIDIyMCwgMTAyLCAxNDUsIDQsIDEsIDIxMSwgMjcsIDE0NSwgNCwgMSwgMjExLCAyOSwgCi0gICAgMTQ1LCA0LCAxLCAyMTEsIDU3LCAxNDUsIDQsIDEsIDIxOCwgMjUzLCAxNjIsIDE0NSwgNCwgMSwgMjEwLCAyMTIsIDE0NSwgCi0gICAgNCwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgNCwgMjEwLCAxODQsIDIsIDIxNywgNzcsIDE0NSwgNCwgMSwgMjEwLCAKLSAgICAyNDQsIDE0NSwgNCwgMSwgMjM1LCAxODQsIDQsIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgCi0gICAgMTQ1LCA0LCAxLCAyMzUsIDE4NCwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDI0NCwgODIsIDE0NSwgNCwgMSwgCi0gICAgMjM1LCAxNDYsIDE0NSwgNCwgMSwgMjE5LCAyMjcsIDE0NSwgNCwgMSwgMjE1LCAyMDIsIDYxLCAxNDUsIDQsIDEsIDIzMywgCi0gICAgNzUsIDIzMCwgMjksIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA1MiwgMTMwLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTIsIAotICAgIDEzMCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAxODIsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCA5MSwgNywgNiwgCi0gICAgMSwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDExNSwgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNDcsIAotICAgIDI1NSwgOTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMzksIDcsIAotICAgIDYsIDEsIDIzNSwgMjQsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI0OCwgMzksIDcsIDYsIDEsIDIxMCwgCi0gICAgMTYwLCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjU0LCAxNDMsIDcsIDYsIAotICAgIDEsIDIzMiwgNTAsIDIsIDEwMywgNywgNiwgMSwgMjE1LCA5NCwgNjEsIDcsIDYsIDEsIDIxNSwgOTQsIDI1NCwgMTQzLCA3LCAKLSAgICA0LCAxLCAyMTQsIDEwNiwgMiwgNDQsIDEwMywgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTAzLCA3LCA0LCAxLCAyMTIsIDk5LCAKLSAgICAyLCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDksIDEwMCwgNywgNiwgMSwgMTYzLCAyNDIsIDYwLCA3LCA0LCAxLCAKLSAgICAxNjMsIDI0MiwgNjAsIDcsIDQsIDEsIDIxNywgNzUsIDIyNSwgMTMzLCA3LCA0LCAxLCAxNjAsIDIsIDIyOCwgNTAsIDcsIDQsIAotICAgIDEsIDIxNSwgOTQsIDIyMywgMjI0LCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAxNDQsIDIsIDEyMSwgMjIyLCAyMzQsIDIzNSwgCi0gICAgMjE1LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCA3NSwgNywgMjE4LCA2NSwgNCwgMSwgMjM1LCAxNDQsIDU4LCAxLCA2LCAyMTQsIAotICAgIDEwNSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjE3LCAyNTAsIDIxNywgNzcsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyMTcsIAotICAgIDI1MCwgMjE3LCA3NywgODEsIDYsIDEsIDI1NCwgMTY0LCA4MSwgNCwgMSwgMjU0LCAxNjQsIDgxLCA2LCAxLCAyMTMsIDE3MywgCi0gICAgODEsIDQsIDEsIDIxMywgMTczLCA4MSwgNiwgMSwgMjQzLCAxMDcsIDgxLCA0LCAxLCAyNDMsIDEwNywgODEsIDYsIDEsIAotICAgIDI0OCwgMTkxLCA4MSwgNCwgMSwgMjQ4LCAxOTEsIDgxLCA2LCAxLCAyNDUsIDE5NCwgODEsIDQsIDEsIDI0NSwgMTk0LCA4MSwgCi0gICAgNiwgMSwgMjE5LCAzMywgODEsIDQsIDEsIDIxOSwgMzMsIDgxLCA2LCAxLCAyMTAsIDEwMSwgODEsIDQsIDEsIDIxMCwgMTAxLCAKLSAgICA4MSwgNiwgMSwgMjQxLCAyNDgsIDgxLCA0LCAxLCAyNDEsIDI0OCwgODEsIDYsIDEsIDIxNiwgMTc3LCA4MSwgNCwgMSwgCi0gICAgMjE2LCAxNzcsIDgxLCA2LCAxLCAyNDAsIDExNiwgODEsIDQsIDEsIDI0MCwgMTE2LCA4MSwgNiwgMSwgMjM0LCAyMjcsIDgxLCAKLSAgICA0LCAxLCAyMzQsIDIyNywgODEsIDYsIDEsIDIzMywgNzIsIDgxLCA0LCAxLCAyMzMsIDcyLCA4MSwgNiwgMSwgMjMwLCAyMzAsIAotICAgIDgxLCA0LCAxLCAyMzAsIDIzMCwgODEsIDYsIDEsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjI4LCAyMzMsIDgxLCA2LCAxLCAKLSAgICAyMzMsIDIzMywgODEsIDQsIDEsIDIzMywgMjMzLCA4MSwgNiwgMSwgNzYsIDgxLCA0LCAxLCA3NiwgODEsIDYsIDEsIDIyNSwgCi0gICAgMTA4LCA4MSwgNCwgMSwgMjI1LCAxMDgsIDgxLCA2LCAxLCAyMjIsIDIxMSwgODEsIDQsIDEsIDIyMiwgMjExLCA4MSwgNiwgCi0gICAgMSwgMjE5LCAxNjUsIDgxLCA0LCAxLCAyMTksIDE2NSwgODEsIDYsIDEsIDIxNywgNDEsIDgxLCA0LCAxLCAyMTcsIDQxLCAKLSAgICA4MSwgNiwgMSwgMjE0LCAyMjksIDgxLCA0LCAxLCAyMTQsIDIyOSwgODEsIDYsIDEsIDI0NCwgMTIxLCA4MSwgNCwgMSwgCi0gICAgMjQ0LCAxMjEsIDgxLCA2LCAxLCAyMzQsIDExMiwgODEsIDQsIDEsIDIzNCwgMTEyLCA4MSwgNiwgMSwgMjI0LCAxNjEsIDgxLCAKLSAgICA0LCAxLCAyMjQsIDE2MSwgODEsIDYsIDEsIDIyNiwgMTc4LCA4MSwgNCwgMSwgMjI2LCAxNzgsIDgxLCA2LCAxLCAyNDcsIAotICAgIDI1MywgMjU0LCAxNzAsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjU0LCAxNzAsIDgxLCA2LCAxLCA1NSwgODEsIDI1NCwgMTk2LCAKLSAgICA4MSwgNCwgMSwgNTUsIDgxLCAyNTQsIDE5NiwgODEsIDYsIDEsIDI0OSwgMTE1LCAyNDUsIDE5NCwgODEsIDQsIDEsIDI0OSwgCi0gICAgMTE1LCAyNDUsIDE5NCwgODEsIDYsIDEsIDI0NywgMjUzLCAyMzQsIDIyNywgODEsIDQsIDEsIDI0NywgMjUzLCAyMzQsIAotICAgIDIyNywgODEsIDYsIDEsIDI0NywgMjUzLCAyMjgsIDIzMywgODEsIDQsIDEsIDI0NywgMjUzLCAyMjgsIDIzMywgODEsIDYsIAotICAgIDEsIDI0OSwgMTE1LCAyMjgsIDIzMywgODEsIDQsIDEsIDI0OSwgMTE1LCAyMjgsIDIzMywgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjI2LCAxNzgsIDgxLCA0LCAxLCA1NSwgODEsIDIyNiwgMTc4LCA4MSwgNiwgMSwgMjIxLCAyNDYsIDgxLCA0LCAxLCAyMjEsIAotICAgIDI0NiwgODEsIDYsIDEsIDI0OSwgMTI4LCAyMjAsIDU1LCA4MSwgNCwgMSwgMjQ5LCAxMjgsIDIyMCwgNTUsIDgxLCA2LCAxLCAKLSAgICA1NSwgODEsIDIyMCwgNTUsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgNTUsIDgxLCA2LCAxLCA1NSwgODEsIDI0NSwgNzUsIAotICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0NSwgNzUsIDgxLCA2LCAxLCAyNTQsIDE4MiwgMjM0LCAxMTcsIDgxLCA0LCAxLCAyNTQsIAotICAgIDE4MiwgMjM0LCAxMTcsIDgxLCA2LCAxLCAyNDcsIDI1MywgMjQxLCA0NSwgODEsIDQsIDEsIDI0NywgMjUzLCAyNDEsIDQ1LCAKLSAgICA4MSwgNiwgMSwgNTUsIDgxLCAyNDEsIDQ1LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDQ1LCA4MSwgNiwgMSwgNTUsIDgxLCAKLSAgICAxNjIsIDgxLCA0LCAxLCA1NSwgODEsIDE2MiwgODEsIDYsIDEsIDIzMywgMTQ4LCAxNjIsIDgxLCA0LCAxLCAyMzMsIDE0OCwgCi0gICAgMTYyLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDEsIDIxNywgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCAyMTcsIDgxLCA2LCAxLCAKLSAgICA1NSwgODEsIDI0MSwgMjUxLCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDI1MSwgODEsIDYsIDEsIDU1LCA4MSwgMjQzLCAxMDIsIAotICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0MywgMTAyLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDcsIDE2MywgODEsIDQsIDEsIDU1LCA4MSwgCi0gICAgMjQ3LCAxNjMsIDgxLCA2LCAxLCA1NSwgODEsIDIyMCwgMjIsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgMjIsIDgxLCA2LCAxLCAKLSAgICA1NSwgMjI3LCAyMDgsIDIyMCwgMjIsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyMCwgMjIsIDgxLCA2LCAxLCA1NSwgCi0gICAgMjI3LCAyMDgsIDIyOSwgMjcsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyOSwgMjcsIDgxLCA2LCAxLCA1NSwgMjI3LCAKLSAgICAyMDgsIDIyNywgMTQ4LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMjcsIDE0OCwgODEsIDYsIDEsIDU1LCAyMjcsIDIwOCwgCi0gICAgMjEyLCAzNywgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjEyLCAzNywgODEsIDE2LCAyMzQsIDI0NiwgODEsIDE2LCAyMzAsIAotICAgIDIzMSwgMjIyLCAyMTEsIDgxLCAxNiwgMjI1LCAxMDksIDIyMiwgMjExLCA4MSwgMTYsIDIxOCwgMTQ3LCA4MSwgMTYsIDIxNywgCi0gICAgNDIsIDIyMiwgMjExLCA4MSwgMTYsIDIzNCwgMTEzLCAyMjIsIDIxMSwgODEsIDE2LCAyMjAsIDIzLCAyMTksIDE2NSwgODEsIAotICAgIDYsIDEsIDI0OSwgMTE1LCAyMjAsIDU1LCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDIyMCwgNTUsIDgxLCA2LCAxLCAyNDksIDExNSwgCi0gICAgMjQzLCAxMDIsIDgxLCA0LCAxLCAyNDksIDExNSwgMjQzLCAxMDIsIDgxLCAzOCwgMjI4LCAyMzQsIDQ4LCA4MSwgMzgsIAotICAgIDIxOCwgMjQ3LCAyNTMsIDIyNCwgODEsIDM4LCAyMTgsIDI0NywgMjMzLCAyMSwgODEsIDYsIDEsIDI1MSwgMTk5LCAyMzQsIAotICAgIDExNywgODEsIDQsIDEsIDI1MSwgMTk5LCAyMzQsIDExNywgODEsIDU1LCAyMjcsIDIwOCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKLSAgICA4MSwgNTUsIDIyNywgMjA4LCAyNDcsIDE5NywgMjI0LCAxMywgNzgsIDgxLCA1NSwgMjI3LCAyMDgsIDIzNSwgMjM3LCAyMjQsIAotICAgIDEzLCA3OCwgODEsIDU1LCAyMjcsIDIwOCwgMjEzLCAyNDEsIDI0NywgMTcyLCA4MSwgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIAotICAgIDgxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDgxLCAyMzAsIDEyNCwgMjQ3LCAxNzIsIDk4LCA0LCAxLCAyNTQsIDEyMywgOTgsIAotICAgIDQsIDEsIDI1MiwgMTUyLCA5OCwgNCwgMSwgMjQzLCAxMDYsIDk4LCA0LCAxLCAyNDcsIDEyOCwgOTgsIDQsIDEsIDI0NSwgCi0gICAgMTUwLCA5OCwgNCwgMSwgMjEzLCAxNjAsIDk4LCA0LCAxLCAyMTAsIDg5LCA5OCwgNCwgMSwgMjE3LCA2MCwgOTgsIDQsIDEsIAotICAgIDIzNSwgMjU1LCA5OCwgNCwgMSwgMjM0LCAyMzQsIDk4LCA0LCAxLCAyMzMsIDgxLCA5OCwgNCwgMSwgMjMxLCAxODUsIDk4LCAKLSAgICA0LCAxLCAyMjksIDE5NSwgOTgsIDQsIDEsIDIyNiwgMTk2LCA5OCwgNCwgMSwgMjI2LCAxNywgOTgsIDQsIDEsIDIxMCwgNzgsIAotICAgIDk4LCA0LCAxLCAyMjMsIDE3MSwgOTgsIDQsIDEsIDIyMSwgMjQzLCA5OCwgNCwgMSwgMjE3LCA1MCwgOTgsIDQsIDEsIDIxNCwgCi0gICAgMTkwLCA5OCwgNCwgMSwgMjI1LCAxNDAsIDk4LCA0LCAxLCAyMzQsIDEyMSwgOTgsIDQsIDEsIDI0MiwgMjQxLCA5OCwgNCwgCi0gICAgMSwgMjI0LCA3MywgOTgsIDQsIDEsIDIyMCwgMjAsIDk4LCA0LCAxLCAyNTAsIDk3LCA5OCwgNCwgMSwgMjUxLCA3LCA5OCwgCi0gICAgNCwgMSwgMjM1LCAxMDAsIDk4LCA0LCAxLCAyNTAsIDQwLCA5OCwgNCwgMSwgMjUwLCAxNDMsIDk4LCA0LCAxLCAyMTEsIAotICAgIDE2MywgOTgsIDQsIDEsIDIzNSwgMTExLCA5OCwgNCwgMSwgMjQyLCA0MywgOTgsIDQsIDEsIDI0MSwgMjM4LCA5OCwgNCwgMSwgCi0gICAgMjQxLCAxNzUsIDk4LCA0LCAxLCAyMTIsIDIyLCA5OCwgNCwgMSwgMjQyLCA0LCA5OCwgNCwgMSwgMjQxLCA2NSwgOTgsIDQsIAotICAgIDEsIDIxMCwgMjQ2LCA5OCwgNCwgMSwgMjU0LCAyMzIsIDIxNiwgMTA4LCAxLCAxOTEsIDIxNiwgMTA4LCAxLCAyMTEsIDk5LCAKLSAgICAyMTYsIDEwOCwgMSwgMjExLCA5OCwgMjE2LCAxMDgsIDEsIDIxMSwgODgsIDIxNiwgMTA4LCAxLCAyMTEsIDg2LCAyMTYsIAotICAgIDEwOCwgMSwgMjUyLCAzMiwgMjU1LCAxNiwgMjExLCA4MSwgMjE2LCAxMDgsIDEsIDIxMSwgODEsIDIxNiwgMTA4LCAxLCAKLSAgICAyMTEsIDk2LCAyMTYsIDEwOCwgMSwgMjExLCA5MywgMjE2LCAxMDgsIDEsIDIxMSwgOTUsIDIxNiwgMTA4LCAxLCAyMTEsIAotICAgIDk0LCAyMTYsIDEwOCwgMSwgMjExLCAxMiwgMjE2LCAxMDgsIDEsIDIxMSwgOTAsIDIxNiwgMTA4LCAxLCAyMTEsIDc5LCAKLSAgICAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNzksIDIxNiwgMTA4LCAxLCAyMTEsIDc2LCAyMTYsIDEwOCwgMSwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDgsIDEsIDI1MiwgMzIsIDI1NSwgMTYsIDIxMSwgODQsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDgsIDEsIDIxMSwgODMsIDIxNiwgMTA4LCAxLCAyMTEsIDEwMywgMjE2LCAxMDgsIDEsIDIxMSwgNzcsIAotICAgIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA3NywgMjE2LCAxMDgsIDEsIDIxMSwgNjYsIDIxNiwgMTA4LCAxLCAyMTUsIAotICAgIDExNSwgMjExLCA2NiwgMjE2LCAxMDgsIDEsIDIxMSwgOCwgMjE2LCAxMDgsIDEsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAKLSAgICAyNTQsIDIwNywgMjExLCA0OSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgMjExLCA3NSwgCi0gICAgMjE2LCAxMDgsIDEsIDIxMSwgNzQsIDIxNiwgMTA4LCAxLCAyMTEsIDcxLCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgCi0gICAgODUsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA2OSwgMjE2LCAxMDgsIDEsIDIxMSwgNjcsIDIxNiwgMTA4LCAxLCAKLSAgICAyMTAsIDIxMiwgMjE2LCAxMDgsIDEsIDIxMSwgNjQsIDIxNiwgMTA4LCAxLCAyMTEsIDYzLCAyMTYsIDEwOCwgMSwgMjExLCAKLSAgICA4NywgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDg3LCAyMTYsIDEwOCwgMSwgMjUzLCAxNjMsIDIxMSwgODcsIDIxNiwgCi0gICAgMTA4LCAxLCAyMTEsIDYyLCAyMTYsIDEwOCwgMSwgMjExLCA2MCwgMjE2LCAxMDgsIDEsIDIxMSwgNjEsIDIxNiwgMTA4LCAxLCAKLSAgICAyMTEsIDU5LCAyMTYsIDEwOCwgMSwgMjExLCA1OCwgMjE2LCAxMDgsIDEsIDIxMSwgOTcsIDIxNiwgMTA4LCAxLCAyMTEsIAotICAgIDU2LCAyMTYsIDEwOCwgMSwgMjExLCA1NCwgMjE2LCAxMDgsIDEsIDIxMSwgNTMsIDIxNiwgMTA4LCAxLCAyMTEsIDUyLCAKLSAgICAyMTYsIDEwOCwgMSwgMjExLCA1MCwgMjE2LCAxMDgsIDEsIDIxNywgMzQsIDIxMSwgNTAsIDIxNiwgMTA4LCAxLCAyMTEsIAotICAgIDQ4LCAyMTYsIDEwOCwgMSwgMjExLCA0NywgMjE2LCAxMDgsIDEsIDIxMCwgMjQ0LCAyMTYsIDEwOCwgNTgsIDEsIDIzMywgCi0gICAgMTI2LCA3OCwgMjE2LCAxMDgsIDIyMCwgMTM4LCA3OCwgMjE2LCAxMDgsIDExNiwgMjM1LCA2MywgMjksIDMsIDIzMiwgMTU1LCAKLSAgICAyOSwgMywgMjMwLCAxNjAsIDI5LCAzLCAyMjIsIDIwOSwgMjksIDMsIDIxOSwgNTcsIDI5LCAzLCAyMjAsIDYsIDI5LCAzLCAKLSAgICAyNTEsIDIwNCwgMjksIDMsIDIxNiwgNDEsIDI5LCAzLCAyNDksIDIzNywgMjksIDMsIDIyOCwgNzIsIDI5LCAzLCAyMjcsIAotICAgIDEzMywgMjksIDMsIDI0MiwgMTgwLCAyMjcsIDAsIDI5LCAzLCAyMTAsIDIyLCAyOSwgMywgMjQ3LCAxNDMsIDI5LCAzLCAKLSAgICAyNDgsIDEwNCwgMjksIDMsIDIzNSwgNjcsIDI5LCAzLCAyMTYsIDE1NSwgMjksIDMsIDI1MCwgODUsIDI5LCAzLCAyMjUsIAotICAgIDEyMCwgMjksIDMsIDIyNSwgMTUsIDI5LCAzLCAyNDIsIDI1NSwgMjksIDMsIDI0MiwgMjUxLCAyOSwgMywgMjQyLCAyNTIsIAotICAgIDI5LCAzLCAyNDIsIDI1MywgMjksIDMsIDIxOCwgMjIzLCAyOSwgMywgMjE4LCAxNzksIDI5LCAzLCAyMTgsIDE5MiwgMjksIAotICAgIDMsIDIxOCwgMjIyLCAyOSwgMywgMjE4LCAxOTYsIDI5LCAzLCAyMTgsIDE5NywgMjksIDMsIDIxOCwgMTg0LCAyOSwgMywgCi0gICAgMjUwLCAyMTMsIDI5LCAzLCAyNTAsIDE5MiwgMjksIDMsIDI1MCwgMTk0LCAyOSwgMywgMjUwLCAyMTIsIDI5LCAzLCAyNTAsIAotICAgIDIxMCwgMjksIDMsIDI1MCwgMjExLCAyOSwgMywgMjUwLCAxOTMsIDI5LCAzLCAyMDksIDI0MywgMjksIDMsIDIwOSwgMjIxLCAKLSAgICAyOSwgMywgMjA5LCAyMzQsIDI5LCAzLCAyMDksIDI0MiwgMjksIDMsIDIwOSwgMjM3LCAyOSwgMywgMjA5LCAyMzgsIDI5LCAKLSAgICAzLCAyMDksIDIyNiwgMjksIDMsIDI1MCwgMjA4LCAyOSwgMywgMjUwLCAxOTUsIDI5LCAzLCAyNTAsIDE5NywgMjksIDMsIAotICAgIDI1MCwgMjA3LCAyOSwgMywgMjUwLCAyMDUsIDI5LCAzLCAyNTAsIDIwNiwgMjksIDMsIDI1MCwgMTk2LCAyOSwgMywgMjIzLCAKLSAgICAyMzYsIDI5LCAzLCAyMjMsIDIyNiwgMjksIDMsIDIyMywgMjMyLCAyOSwgMywgMjIzLCAyMzUsIDI5LCAzLCAyMjMsIDIzMywgCi0gICAgMjksIDMsIDIyMywgMjM0LCAyOSwgMywgMjIzLCAyMzEsIDI5LCAzLCAyMzMsIDE1OSwgMjksIDMsIDIzMywgMTUxLCAyOSwgCi0gICAgMywgMjMzLCAxNTQsIDI5LCAzLCAyMzMsIDE1OCwgMjksIDMsIDIzMywgMTU1LCAyOSwgMywgMjMzLCAxNTYsIDI5LCAzLCAKLSAgICAyMzMsIDE1MiwgMjksIDMsIDIxMSwgMTMwLCAyOSwgMywgMjExLCAxMjAsIDI5LCAzLCAyMTEsIDEyNiwgMjksIDMsIDIxMSwgCi0gICAgMTI5LCAyOSwgMywgMjExLCAxMjcsIDI5LCAzLCAyMTEsIDEyOCwgMjksIDMsIDIxMSwgMTI1LCAyOSwgMywgMjQyLCA3MSwgCi0gICAgMjksIDMsIDI0MiwgNjIsIDI5LCAzLCAyNDIsIDY1LCAyOSwgMywgMjQyLCA3MCwgMjksIDMsIDI0MiwgNjcsIDI5LCAzLCAKLSAgICAyNDIsIDY4LCAyOSwgMywgMjQyLCA2NCwgMzgsIDMzLCAxLCAyNTIsIDc1LCAzOCwgMzMsIDEsIDIxMywgMjU1LCAzOCwgMzMsIAotICAgIDEsIDI0MiwgMjM2LCAzOCwgMzMsIDEsIDI0OCwgOTAsIDM4LCAzMywgMSwgMjEwLCA3NCwgMzgsIDMzLCAxLCAyMTAsIDk0LCAKLSAgICAzOCwgMzMsIDEsIDE3NiwgMzgsIDMzLCAxLCAyNDUsIDE3NCwgMzgsIDMzLCAxLCAyNDUsIDE1OSwgMzgsIDMzLCAxLCAyNDUsIAotICAgIDE1MCwgMzgsIDMzLCAxLCA3NiwgMzgsIDMzLCAxLCAyMjUsIDIyMSwgMzgsIDMzLCAxLCAyNDUsIDkyLCAzOCwgMzMsIDEsIAotICAgIDI0NSwgODIsIDM4LCAzMywgMSwgMjE3LCAyMiwgMzgsIDMzLCAxLCAxNjIsIDM4LCAzMywgMSwgMjE1LCAxNzgsIDM4LCAzMywgCi0gICAgMSwgMjUwLCAxMzEsIDM4LCAzMywgMSwgMjIwLCAxMDIsIDM4LCAzMywgMSwgMjIwLCA2NSwgMzgsIDMzLCAxLCAyNDQsIDgyLCAKLSAgICAzOCwgMzMsIDEsIDI0NSwgODEsIDM4LCAzMywgMSwgNjEsIDM4LCAzMywgMSwgMjM2LCA2MCwgMzgsIDMzLCAxLCAyNDcsIAotICAgIDE2MSwgMzgsIDMzLCAxLCAyMzAsIDE0MCwgMjE0LCAyMDUsIDM4LCAzMywgMSwgMjExLCA1OSwgMzgsIDMzLCAxLCAyMTAsIAotICAgIDIxMiwgMzgsIDMzLCAxLCAyMzUsIDE4MywgNjEsIDM4LCAzMywgMSwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzOCwgMzMsIDEsIAotICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzgsIDMzLCAxLCAyMzUsIDE4MywgMjUxLCAyNDksIDIxMCwgMTgzLCA0NCwgMjU0LCAKLSAgICAxMTAsIDIxOCwgNjAsIDIzMSwgMTU0LCA0NCwgMjU0LCAxMTAsIDI0NiwgMTE4LCAyMTgsIDYwLCAyMzEsIDE1NCwgNDMsIAotICAgIDIxOCwgNjAsIDEyNywgNDQsIDIxOCwgNjAsIDEyNywgNDMsIDI0NiwgMTE4LCAyMTgsIDYwLCAxMjcsIDQ0LCAyNDYsIDExOCwgCi0gICAgMjE4LCA2MCwgMTI3LCAyMjMsIDE1NywgMjM1LCAyMDIsIDIzMSwgMTU0LCAyMjMsIDE1NywgMjQ2LCAxMTgsIDIzNSwgMjAyLCAKLSAgICAyMzEsIDE1NCwgMjQ2LCAxMTgsIDIxNSwgMjQxLCAyMzEsIDE1NCwgNDMsIDIxNSwgMjQxLCAxMjcsIDQ0LCAyMTUsIDI0MSwgCi0gICAgMTI3LCAyMjMsIDE1NywgMjE4LCAyMzQsIDQzLCAyMjMsIDE1NywgMjI2LCAxOTgsIDEyNywgNDQsIDIyMywgMTU3LCAyMjYsIAotICAgIDE5OCwgMTI3LCAyNDUsIDIxMCwgMjQ5LCAxNTgsIDIyNiwgMTMsIDI0NCwgMjIsIDIyNiwgMTMsIDIyMywgNDksIDI0NCwgCi0gICAgMjIsIDIyNiwgMTMsIDI0MCwgMTY1LCAyNDYsIDExOCwgMjI2LCAyNTEsIDI0NiwgMTA0LCAyNTQsIDExOSwgMjE0LCAxNTMsIAotICAgIDI1NCwgMTE5LCAyNDYsIDExOCwgMjIyLCAyNDcsIDI1NCwgMTA5LCA1MiwgMjI2LCAyNDgsIDI0MCwgMTY4LCAyMzUsIDE5MywgCi0gICAgMjM1LCAyMDEsIDIyNiwgNTksIDI1MSwgMTU0LCAyNDAsIDE2OSwgMiwgMjQ4LCAxLCAyMTYsIDg5LCAyLCAyMjIsIDIzNCwgCi0gICAgNDgsIDQzLCAxMjEsIDIyNiwgNSwgMTI3LCA0NCwgMTIxLCAyMjYsIDUsIDEyNywgMjE2LCA4OSwgMiwgNTksIDQ4LCAyMTYsIAotICAgIDg5LCAyLCA1OSwgNTEsIDQzLCA2NywgMjUyLCAxNDEsIDIsIDIyNCwgNywgNDQsIDY3LCAyNTIsIDE0MSwgMiwgMjI0LCA3LCAKLSAgICAyMTYsIDE0LCA0MywgMTYzLCAxMjcsIDIxNiwgMTQsIDQ0LCAxNjMsIDEyNywgMjUxLCAxNzUsIDQzLCAxNjMsIDEyNywgCi0gICAgMjUxLCAxNzUsIDQ0LCAxNjMsIDEyNywgNDMsIDIxOSwgMTg3LCAxMDQsIDEyNywgNDQsIDIxOSwgMTg3LCAxMDQsIDEyNywgCi0gICAgNDMsIDUyLCAyMjYsIDMsIDQ0LCA1MiwgMjI2LCAzLCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgMTIzLCAKLSAgICA1OSwgMTE3LCAxMTMsIDE3MCwgMjI0LCAxNDAsIDkyLCAyNDQsIDExLCA1OSwgMjI0LCAxNDAsIDI0NCwgODEsIDU5LCA3OCwgCi0gICAgMjIzLCA0OSwgMjI0LCAxMywgNzgsIDY3LCAxODIsIDIyMiwgMjM0LCAyMjUsIDEwLCAyMTEsIDIwOSwgMjIwLCAxMzgsIAotICAgIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjE1LCA5NCwgMjQ5LCAyMTksIDIyMywgMTU3LCAyNDcsIDEyMCwgMjIzLCAxNTcsIDI0OSwgCi0gICAgMjE5LCAyMTUsIDk0LCAyMjAsIDE1MCwgMjQ4LCAyMDYsIDIsIDQzLCAyNDIsIDEwOCwgMjQ4LCAyMDYsIDIsIDQ0LCAyNDIsIAotICAgIDEwOCwgMjE1LCA5NCwgMjQ4LCAyMDUsIDIxNiwgMTQsIDE2MywgMjIxLCAxNzMsIDUwLCAyMTUsIDU5LCAyNDgsIDE1NiwgCi0gICAgMjE2LCAxNDMsIDI0OCwgMTU2LCA5LCAzNCwgMjIzLCA3NiwgOSwgMzQsIDI1MCwgMTAsIDksIDM0LCAyMjEsIDE3NiwgMTEwLCAKLSAgICA5LCAzNCwgMjIxLCAxNzYsIDEwNSwgOSwgMzQsIDIyMSwgMTc2LCAxNTgsIDksIDM0LCAyMjUsIDE2NywgOSwgMzQsIDI1MSwgCi0gICAgMTYzLCA5LCAzNCwgMjE3LCA5MiwgOSwgMzQsIDIzNCwgMzMsIDExMCwgOSwgMzQsIDIzNCwgMzMsIDEwNSwgOSwgMzQsIAotICAgIDI0NywgMTcwLCA5LCAzNCwgMjIxLCAxNzksIDksIDM0LCA0LCAxMTAsIDksIDM0LCA0LCAxMDUsIDksIDM0LCAyMzMsIDk3LCAKLSAgICAxMTAsIDksIDM0LCAyMzMsIDk3LCAxMDUsIDksIDM0LCAyMzMsIDk3LCAxNTgsIDksIDM0LCAyMzMsIDk3LCAxNjEsIDksIAotICAgIDM0LCAyMTksIDY4LCA5LCAzNCwgMjE2LCAxNDUsIDksIDM0LCAyMTksIDY2LCAxMTAsIDksIDM0LCAyMTksIDY2LCAxMDUsIAotICAgIDksIDM0LCAyNDEsIDIyOCwgMTEwLCA5LCAzNCwgMjQxLCAyMjgsIDEwNSwgOSwgMzQsIDI0MiwgMTUsIDksIDM0LCAyMjMsIAotICAgIDE0NywgOSwgMzQsIDI1MCwgODIsIDksIDM0LCAyMTgsIDM3LCA5LCAzNCwgMjMwLCAxMjgsIDksIDM0LCAyNDgsIDg4LCA5LCAKLSAgICAzNCwgMjMwLCAxMjAsIDksIDM0LCAyNTAsIDI1LCA5LCAzNCwgMjEyLCA0MSwgMTEwLCA5LCAzNCwgMjEyLCA0MSwgMTA1LCAKLSAgICA5LCAzNCwgMjQ0LCA5NiwgOSwgMzQsIDIyNSwgMjMyLCAxMTAsIDksIDM0LCAyMjUsIDIzMiwgMTA1LCA5LCAzNCwgMjE5LCAKLSAgICAxNjAsIDE2MywgMjE1LCAyMzYsIDIxNSwgMTg4LCA5LCAzNCwgMjQ5LCAxNDUsIDksIDM0LCAyNDcsIDEzNiwgOSwgMzQsIAotICAgIDIzNSwgMTM3LCA5LCAzNCwgMjUxLCAxOTgsIDY0LCAyNDksIDI1MCwgOSwgMzQsIDI0NSwgMTUsIDksIDM0LCAyMTgsIDI0OSwgCi0gICAgMTEwLCA5LCAzNCwgMjE4LCAyNDksIDEwNSwgOSwgMzQsIDI1MiwgMTU0LCA5LCAzNCwgMjE5LCAxNjcsIDksIDM0LCAyNTEsIAotICAgIDYzLCAyMTksIDE2NywgOSwgMzQsIDIyOSwgOTAsIDExMCwgOSwgMzQsIDIyOSwgOTAsIDEwNSwgOSwgMzQsIDIyOSwgOTAsIAotICAgIDE1OCwgOSwgMzQsIDIyOSwgOTAsIDE2MSwgOSwgMzQsIDIzMSwgNDYsIDksIDM0LCAyMjAsIDU3LCA5LCAzNCwgMjIzLCAKLSAgICAxNTMsIDksIDM0LCAyNDUsIDM3LCA5LCAzNCwgMjI2LCAyMDksIDksIDM0LCAyNTEsIDEzMywgMTEwLCA5LCAzNCwgMjUxLCAKLSAgICAxMzMsIDEwNSwgOSwgMzQsIDIzMSwgODYsIDksIDM0LCAyMzAsIDEyMywgOSwgMzQsIDI0MiwgMTQwLCAxMTAsIDksIDM0LCAKLSAgICAyNDIsIDE0MCwgMTA1LCA5LCAzNCwgMjQyLCAxNDAsIDE1OCwgOSwgMzQsIDIxNiwgMTA2LCA5LCAzNCwgMjQ5LCAyNDksIDksIAotICAgIDM0LCAyMTIsIDksIDExMCwgOSwgMzQsIDIxMiwgOSwgMTA1LCA5LCAzNCwgMjUxLCA2MywgMjIxLCAxNzAsIDksIDM0LCAKLSAgICAyMTksIDE2MCwgMjQwLCAyNDgsIDksIDM0LCAyNDAsIDI0OCwgOSwgMzQsIDI1MSwgNjMsIDIxOSwgMiwgOSwgMzQsIDI1MSwgCi0gICAgNjMsIDIyMCwgNTIsIDksIDM0LCAyNDQsIDMyLCA5LCAzNCwgMjUxLCA2MywgMjUwLCAyMjgsIDksIDM0LCAyMTksIDE2MCwgCi0gICAgMjEyLCA1NywgOSwgMzQsIDIxMiwgNTgsIDExMCwgOSwgMzQsIDIxMiwgNTgsIDEwNSwgOSwgMzQsIDI1MCwgMjcsIDksIDM0LCAKLSAgICAyNTEsIDYzLCAyNDIsIDE2NiwgOSwgMzQsIDE5OSwgMTEwLCA5LCAzNCwgMTk5LCAxMDUsIDksIDM0LCAyNTEsIDYzLCAyMzIsIAotICAgIDEzNywgOSwgMzQsIDI1MSwgNjMsIDI0MywgODgsIDksIDM0LCAyMzAsIDExOSwgMTEwLCA5LCAzNCwgMjMwLCAxMTksIDEwNSwgCi0gICAgOSwgMzQsIDIyMywgMTU5LCA5LCAzNCwgMjUxLCAyMDcsIDksIDM0LCAyNTEsIDYzLCAyMTcsIDU2LCAyMzMsIDUyLCA5LCAKLSAgICAzNCwgMjUxLCA2MywgMjMzLCA1MywgOSwgMzQsIDI1MSwgNjMsIDIxMSwgMjM5LCA5LCAzNCwgMjUxLCA2MywgMjQ0LCA0NiwgCi0gICAgOSwgMzQsIDI0NSwgMjE4LCAxMTAsIDksIDM0LCAyNDUsIDIxOCwgMTA1LCA5LCAzNCwgMjQ1LCAyMTgsIDE1OCwgOSwgMzQsIAotICAgIDI1MSwgNjMsIDI0NSwgMjE3LCA5LCAzNCwgMjQxLCAyMzUsIDksIDM0LCAyNTEsIDYzLCAyNDAsIDI0NSwgOSwgMzQsIDI1MSwgCi0gICAgMTk0LCA5LCAzNCwgMjQyLCAyMjIsIDksIDM0LCAyNTEsIDYzLCAyNDQsIDkwLCA5LCAzNCwgMjUxLCA2MywgMjUxLCAyMzcsIAotICAgIDksIDM0LCAyNTEsIDYzLCAyMjIsIDEsIDksIDM0LCAyMTksIDE2MCwgMjEyLCAyLCA5LCAzNCwgMjE5LCAxNjAsIDIxMSwgCi0gICAgNDEsIDksIDM0LCAyNTEsIDYzLCAyNDMsIDI0NCwgOSwgMzQsIDIzNSwgMTQzLCAyNDUsIDQxLCA5LCAzNCwgMjUxLCA2MywgCi0gICAgMjQ1LCA0MSwgOSwgMzQsIDIzNSwgMTQzLCAyMTYsIDE1LCA5LCAzNCwgMjUxLCA2MywgMjE2LCAxNSwgOSwgMzQsIDIzNSwgCi0gICAgMTQzLCAyNDYsIDk2LCA5LCAzNCwgMjUxLCA2MywgMjQ2LCA5NiwgOSwgMzQsIDIxNSwgOTEsIDksIDM0LCAyMzUsIDE0MywgCi0gICAgMjE1LCA5MSwgOSwgMzQsIDI1MSwgNjMsIDIxNSwgOTEsIDYwLCAzNCwgMTEwLCA2MCwgMzQsIDIzMiwgMjEzLCA2MCwgMzQsIAotICAgIDI0NywgMTIwLCA2MCwgMzQsIDIxOSwgOTUsIDYwLCAzNCwgMjIxLCAxNzUsIDYwLCAzNCwgMTAzLCA2MCwgMzQsIDEwNSwgCi0gICAgNjAsIDM0LCAyMzIsIDIzNywgNjAsIDM0LCAyMzEsIDE4NSwgNjAsIDM0LCAyMzMsIDMzLCA2MCwgMzQsIDI0NSwgMTI5LCAKLSAgICA2MCwgMzQsIDE5NSwgNjAsIDM0LCAxMjQsIDI1MSwgMTYzLCA2MCwgMzQsIDI0OSwgMTQ3LCA2MCwgMzQsIDI0MCwgMTExLCAKLSAgICA2MCwgMzQsIDIxNywgOTIsIDYwLCAzNCwgMjA0LCAyNTEsIDE2MywgNjAsIDM0LCAyMzQsIDMyLCA2MCwgMzQsIDIyNCwgCi0gICAgMjI0LCA2MCwgMzQsIDIxMSwgMjAyLCA2MCwgMzQsIDIxOCwgMjQzLCA2MCwgMzQsIDQ0LCAyMDQsIDI1MSwgMTYzLCA2MCwgCi0gICAgMzQsIDI0MSwgMTc2LCAyNDUsIDE0NSwgNjAsIDM0LCAyMTYsIDI0NywgNjAsIDM0LCAyNDcsIDE3MCwgNjAsIDM0LCAyMjEsIAotICAgIDE3OSwgNjAsIDM0LCAyNTAsIDEwLCA2MCwgMzQsIDIyNCwgMTgyLCA2MCwgMzQsIDI1NCwgMjE1LCA2MCwgMzQsIDIzMCwgCi0gICAgMTEwLCA2MCwgMzQsIDI0NSwgMTQ1LCA2MCwgMzQsIDI0NSwgMjIzLCA2MCwgMzQsIDIyMSwgMjAwLCA2MCwgMzQsIDI0MiwgCi0gICAgMTc0LCA2MCwgMzQsIDI0MiwgMTc1LCAyMTksIDgxLCA2MCwgMzQsIDI0NSwgNDAsIDYwLCAzNCwgMjUxLCAyNDgsIDYwLCAKLSAgICAzNCwgMjExLCAyMjEsIDYwLCAzNCwgMjUwLCAxMDEsIDYwLCAzNCwgMjIyLCAxOTYsIDYwLCAzNCwgMjM1LCAyNTEsIDYwLCAKLSAgICAzNCwgMjE5LCA3OSwgNjAsIDM0LCAyMzMsIDk2LCA2MCwgMzQsIDI0OSwgMTU2LCA2MCwgMzQsIDIxOCwgMjM3LCA2MCwgMzQsIAotICAgIDIzMCwgMTE1LCA2MCwgMzQsIDIyMiwgMjI0LCA2MCwgMzQsIDIxMSwgMjA2LCA2MCwgMzQsIDIyNiwgMTkwLCA2MCwgMzQsIAotICAgIDIxNSwgOTcsIDYwLCAzNCwgMjQ2LCA4MCwgNjAsIDM0LCAyMTksIDI1MSwgMjE2LCAxNDUsIDYwLCAzNCwgMjQ2LCAxMTgsIAotICAgIDI1MCwgMTAsIDYwLCAzNCwgMTk5LCAyMTgsIDEwOCwgNjAsIDM0LCAxMTMsIDI0MiwgMTAsIDYwLCAzNCwgMjIwLCAwLCA2MCwgCi0gICAgMzQsIDI1MSwgMTY5LCA2MCwgMzQsIDIxOSwgNjUsIDYwLCAzNCwgMjUxLCAxMzcsIDYwLCAzNCwgMjE4LCAxMzgsIDYwLCAKLSAgICAzNCwgMjQxLCAyMjcsIDYwLCAzNCwgMjQyLCAyOCwgNjAsIDM0LCAyNDcsIDEyMywgNjAsIDM0LCAyNDIsIDE1LCA2MCwgMzQsIAotICAgIDI1MSwgMTU0LCA2MCwgMzQsIDIyMywgMTQ3LCA2MCwgMzQsIDIyMSwgMTg3LCA2MCwgMzQsIDI0NywgMTk5LCA2MCwgMzQsIAotICAgIDI1MywgMTY4LCA2MCwgMzQsIDIxOCwgMjM0LCA2MCwgMzQsIDIyOCwgNTEsIDYwLCAzNCwgMjE4LCAzNywgNjAsIDM0LCAKLSAgICAyMjEsIDIxMSwgNjAsIDM0LCAyMzAsIDEyOCwgNjAsIDM0LCAyMTUsIDIzNSwgNjAsIDM0LCAyMzMsIDEyMiwgNjAsIDM0LCAKLSAgICAyMTgsIDEyOSwgNjAsIDM0LCAyNDgsIDg4LCA2MCwgMzQsIDIxMiwgMjEsIDYwLCAzNCwgMjQ3LCAxNDYsIDIyOCwgNTEsIAotICAgIDYwLCAzNCwgMjQ5LCAyMTUsIDYwLCAzNCwgMjQzLCAyMjIsIDYwLCAzNCwgMjUwLCAyMSwgNjAsIDM0LCAyMTgsIDE0MiwgCi0gICAgNjAsIDM0LCAyMTIsIDQwLCA2MCwgMzQsIDI0NCwgOTYsIDYwLCAzNCwgMjUwLCAxOCwgNjAsIDM0LCAyNDQsIDE2MSwgNjAsIAotICAgIDM0LCA1MiwgMjExLCAxNzgsIDYwLCAzNCwgMTYzLCAyMTUsIDIzNiwgMjE1LCAxODgsIDYwLCAzNCwgMjE5LCA4OSwgNjAsIAotICAgIDM0LCAyNDQsIDE3MSwgNjAsIDM0LCAyNDksIDE0NSwgNjAsIDM0LCAyNDcsIDEzNiwgNjAsIDM0LCAyMjQsIDE3OSwgNjAsIAotICAgIDM0LCAyMzUsIDEzNywgNjAsIDM0LCAyMzEsIDY3LCA2MCwgMzQsIDIxNiwgODgsIDYwLCAzNCwgMjE3LCAyNDUsIDYwLCAzNCwgCi0gICAgMjMyLCAyMzEsIDYwLCAzNCwgMjE0LCAxMzEsIDYwLCAzNCwgMjQ0LCAxMjAsIDYwLCAzNCwgMjUxLCAxOTgsIDY0LCAyNDksIAotICAgIDI1MCwgNjAsIDM0LCAyMTksIDE4OCwgNjAsIDM0LCAyNDYsIDExOCwgMjE2LCAyNDIsIDYwLCAzNCwgMjExLCAyNTMsIDYwLCAKLSAgICAzNCwgMjE5LCAxMDMsIDYwLCAzNCwgMjQ3LCAxODcsIDYwLCAzNCwgMjQ1LCAxNSwgNjAsIDM0LCAyMTksIDUsIDYwLCAzNCwgCi0gICAgNzQsIDYwLCAzNCwgMjE4LCAxMzEsIDYwLCAzNCwgMjE4LCAyNDgsIDYwLCAzNCwgMjE1LCAyNTUsIDYwLCAzNCwgMjQyLCAKLSAgICAxNDcsIDYwLCAzNCwgMjUwLCAyMTgsIDYwLCAzNCwgMjE4LCAxNjAsIDYwLCAzNCwgMjUyLCAxNTQsIDYwLCAzNCwgMjIzLCAKLSAgICAzMSwgNjAsIDM0LCAyMTksIDE2NywgNjAsIDM0LCAyMzUsIDEzMCwgNjAsIDM0LCAyMjksIDg5LCA2MCwgMzQsIDIyMCwgNTcsIAotICAgIDYwLCAzNCwgMjQ0LCAxNDksIDYwLCAzNCwgMjI2LCAyMDksIDYwLCAzNCwgMjU0LCAxMTgsIDYwLCAzNCwgMjI1LCAyOSwgCi0gICAgNjAsIDM0LCAyNDUsIDIyNywgNjAsIDM0LCAyNTEsIDEzMiwgNjAsIDM0LCAyMzEsIDg2LCA2MCwgMzQsIDIzMCwgMTgzLCAKLSAgICA2MCwgMzQsIDIyMCwgMTU2LCA2MCwgMzQsIDI1MywgMjUyLCA2MCwgMzQsIDIzMCwgMTIzLCA2MCwgMzQsIDIxNiwgMTksIAotICAgIDYwLCAzNCwgMjI2LCAxNjUsIDYwLCAzNCwgMjUxLCAyMDEsIDYwLCAzNCwgMjE4LCAxMjcsIDYwLCAzNCwgMjQ5LCAyMjUsIAotICAgIDYwLCAzNCwgMjQyLCAxMzksIDYwLCAzNCwgMjE2LCAxMDYsIDYwLCAzNCwgMjM1LCAyMTcsIDYwLCAzNCwgMjUxLCAyMTEsIAotICAgIDYwLCAzNCwgMjEyLCA1OCwgMjQ1LCAxNDUsIDYwLCAzNCwgMjQ5LCAyNDksIDYwLCAzNCwgMjEyLCA4LCA2MCwgMzQsIDIyMSwgCi0gICAgMTcwLCA2MCwgMzQsIDI0MCwgMjQ4LCA2MCwgMzQsIDIxOSwgMiwgNjAsIDM0LCAyMTQsIDIyLCA2MCwgMzQsIDI1MiwgNzIsIAotICAgIDYwLCAzNCwgMjI1LCA3MywgNjAsIDM0LCAyNTIsIDE3NCwgNjAsIDM0LCAyMjAsIDUyLCA2MCwgMzQsIDIyMywgMTEwLCA2MCwgCi0gICAgMzQsIDIyMiwgMTI2LCA2MCwgMzQsIDI0NCwgMzIsIDYwLCAzNCwgMjUxLCAyMDAsIDYwLCAzNCwgMjUwLCAyMjgsIDYwLCAKLSAgICAzNCwgMjUxLCAyMjYsIDYwLCAzNCwgMjMwLCAxMjUsIDYwLCAzNCwgMjEyLCA1NywgNjAsIDM0LCAyNTAsIDI3LCA2MCwgMzQsIAotICAgIDIxMSwgMjM2LCA2MCwgMzQsIDI0NywgMTgwLCA2MCwgMzQsIDIxMywgMTYxLCA2MCwgMzQsIDI0MiwgMTY2LCA2MCwgMzQsIAotICAgIDIzMiwgMTM3LCA2MCwgMzQsIDI0MywgODgsIDYwLCAzNCwgMjMwLCAxMTgsIDYwLCAzNCwgMjE5LCA5NCwgNjAsIDM0LCAKLSAgICAyMTksIDI1MSwgMjE3LCA3NiwgMjUxLCAyMzcsIDYwLCAzNCwgMjIzLCAxNTksIDYwLCAzNCwgMjUxLCAyMDcsIDYwLCAzNCwgCi0gICAgMjExLCAxOTcsIDYwLCAzNCwgMjQ0LCAxOTAsIDYwLCAzNCwgMjMzLCA1MiwgNjAsIDM0LCAyMTcsIDU2LCAyMzMsIDUyLCAKLSAgICA2MCwgMzQsIDIzMywgNDgsIDYwLCAzNCwgMjE5LCAzMCwgNjAsIDM0LCAyMzMsIDUzLCA2MCwgMzQsIDIxMSwgMjM5LCA2MCwgCi0gICAgMzQsIDI0NCwgNDYsIDYwLCAzNCwgMjQ1LCAyMTcsIDYwLCAzNCwgMjQxLCAyMzUsIDYwLCAzNCwgMjQ0LCAwLCA2MCwgMzQsIAotICAgIDI0MCwgMjQ1LCA2MCwgMzQsIDI1MSwgMTk0LCA2MCwgMzQsIDIxNywgNjMsIDYwLCAzNCwgMjQyLCAzNCwgNjAsIDM0LCAKLSAgICAyNDQsIDExMywgNjAsIDM0LCAyMjIsIDI4LCAyMTEsIDIzNiwgNjAsIDM0LCAyNTAsIDIyMCwgNjAsIDM0LCAyNDIsIDIyMiwgCi0gICAgNjAsIDM0LCAyNDQsIDkwLCA2MCwgMzQsIDI1MSwgMjM3LCA2MCwgMzQsIDIyMiwgMSwgNjAsIDM0LCAyNDgsIDc0LCA2MCwgCi0gICAgMzQsIDIxMiwgMiwgNjAsIDM0LCAyNDEsIDIxMCwgNjAsIDM0LCAyMTEsIDQxLCA2MCwgMzQsIDIzMCwgMTkyLCA2MCwgMzQsIAotICAgIDI1MSwgMjIxLCA2MCwgMzQsIDI0NSwgMTU1LCA2MCwgMzQsIDI0MywgMjQ0LCA2MCwgMzQsIDIxNSwgMjA5LCA2MCwgMzQsIAotICAgIDI0NiwgODIsIDYwLCAzNCwgMjIzLCAxNDEsIDYwLCAzNCwgMjI4LCA1MywgNjAsIDM0LCAyNDUsIDQxLCA2MCwgMzQsIDIxNiwgCi0gICAgMTUsIDYwLCAzNCwgMjQ2LCA5NiwgNjAsIDM0LCAyMTUsIDkxLCA2MCwgMzQsIDI0NCwgNDgsIDEwOSwgMjQ4LCAzNywgMTM1LCAKLSAgICA0MywgMjE2LCA0MiwgMjIyLCAyNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCA3NywgMjE2LCA0MiwgNTEsIDEwOSwgMjQ4LCAzNywgCi0gICAgMTM1LCA0MywgMjE2LCA0MiwgMjMwLCAyMjQsIDIyLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDc3LCAyMTYsIDQyLCAKLSAgICAyMzAsIDIyNCwgMjIsIDUxLCAxMDksIDI0OCwgMzcsIDEzNSwgMjQzLCAyMjksIDIxOCwgMTAsIDEwOSwgMjQ4LCAzNywgCi0gICAgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgNDgsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgNTEsIAotICAgIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgMjMzLCA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgCi0gICAgMTEsIDI0MywgMjQzLCAyMTQsIDE2MCwgMjMzLCA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAKLSAgICAyMTQsIDE2MCwgMjIyLCAyNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgMjMyLCAxMDgsIDIzMywgCi0gICAgNDYsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMjYsIDEyMiwgMTA5LCAyMTksIDE4LCAxMDksIDI0OSwgMjE5LCAxMDksIDI0MywgCi0gICAgMjI5LCAyMTgsIDEyOSwgMjQ3LCAxNzcsIDc4LCAyMzUsIDEzMSwgMjM1LCAyMzYsIDIxOCwgMTU5LCA4NywgMTA5LCAyMzUsIAotICAgIDE1OCwgNzgsIDEwOSwgMjQ5LCAyNTIsIDc4LCAxMDksIDU0LCAyMTAsIDg2LCA0MywgMjU0LCAxMTAsIDEyNywgNDQsIDI1NCwgCi0gICAgMTEwLCAxMjcsIDQzLCA1MiwgMjU0LCAxMTAsIDEyNywgNDQsIDUyLCAyNTQsIDExMCwgMTI3LCA0MywgMjQ5LCAxNjEsIAotICAgIDEyNywgNDQsIDI0OSwgMTYxLCAxMjcsIDQzLCA3MSwgMjQ5LCAxNjEsIDEyNywgNDQsIDcxLCAyNDksIDE2MSwgMTI3LCA0MywgCi0gICAgODUsIDIzMywgMjAsIDEyNywgNDQsIDg1LCAyMzMsIDIwLCAxMjcsIDIyNCwgMjM3LCA3OCwgMjQzLCAzMiwgNzgsIDQzLCAKLSAgICAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDQsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0MywgNzEsIDIzMywgMjAsIDEyNywgNDQsIAotICAgIDcxLCAyMzMsIDIwLCAxMjcsIDQzLCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQ0LCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAKLSAgICAxMjcsIDQzLCA3MSwgNDIsIDEyNywgNDQsIDcxLCA0MiwgMTI3LCAyMTIsIDM2LCAyNDgsIDE1NiwgMjIzLCA0OSwgNTIsIAotICAgIDIyNCwgMTkxLCAyMjMsIDI1NCwgNzgsIDUyLCAyMjQsIDE5MSwgMjIzLCAyNTQsIDc4LCAxMjEsIDUyLCAyMjQsIDE5MSwgCi0gICAgMjIzLCAyNTQsIDc4LCAyMjQsIDIzNywgMTY0LCAyNDQsIDE5MCwgMjQyLCA4LCAyMjcsIDE5OCwgMTEwLCAyNDIsIDgsIAotICAgIDIyNywgMTk4LCAxMDUsIDI0MiwgOCwgMjI3LCAxOTgsIDE1OCwgMjQyLCA4LCAyMjcsIDE5OCwgMTYxLCAyNDIsIDgsIDIyNywgCi0gICAgMTk4LCAxODksIDI0MiwgOCwgMjI3LCAxOTgsIDE5NCwgMjQyLCA4LCAyMjcsIDE5OCwgMTk4LCAyNDIsIDgsIDIyNywgMTk4LCAKLSAgICAxOTUsIDI0MiwgOCwgMjI3LCAxOTgsIDIwMCwgMTA5LCAyMzMsIDMsIDEzOCwgNzgsIDEwOSwgMjIyLCAyMjgsIDEzOCwgNzgsIAotICAgIDEwOSwgMjQ4LCA0NCwgMTM4LCA3OCwgMTA5LCAyNDUsIDEyOCwgMTM4LCA3OCwgMjQsIDIxOSwgMTU1LCA1OSwgMTM4LCA3OCwgCi0gICAgMjQsIDUyLCA1OSwgMTM4LCA3OCwgMjEyLCAzMiwgMjQ4LCAxNTYsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgNzgsIDY3LCAKLSAgICAyMzQsIDIzMywgMjIzLCA3NywgMiwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDE2NCwgCi0gICAgMjE0LCAxNjAsIDI0MiwgMjcsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMiwgMjEzLCAxMzUsIDIxOSwgMzEsIDE2NCwgMjE0LCAKLSAgICAxNjAsIDI0MiwgMjcsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMTY0LCAyMzIsIDEwOCwgMjQyLCAyNywgMzcsIDIyNCwgCi0gICAgMjM3LCA3OCwgMTA5LCAyMTcsIDMsIDIzMiwgMjE0LCAyNDQsIDE0NiwgMjIwLCAxMzgsIDg3LCAyNDIsIDgsIDIyNywgMTk4LCAKLSAgICAyMTYsIDI0NywgMjQyLCA4LCAyMjcsIDE5OCwgMjE1LCA3MywgMjQyLCA4LCAyMjcsIDE5OCwgMjE2LCAxNjIsIDY3LCAxMDksIAotICAgIDIzNSwgMTU4LCA3OCwgMjMxLCAxNDAsIDc4LCAyMjUsIDI1NSwgMjU0LCAxNDAsIDc4LCAxMDksIDQ1LCAyMzUsIDIzOCwgCi0gICAgMTA5LCAxNjMsIDI0NCwgMTA2LCAyMTksIDE4LCAxNDEsIDEsIDQsIDYxLCAxNDEsIDEsIDYxLCAxNDEsIDEsIDQsIDczLCAKLSAgICAxNDEsIDEsIDczLCAxNDEsIDEsIDQsIDcwLCAxNDEsIDEsIDcwLCAxNDEsIDEsIDQsIDc1LCAxNDEsIDEsIDc1LCAxNDEsIDEsIAotICAgIDQsIDc2LCAxNDEsIDEsIDc2LCAxNDEsIDEsIDE3NiwgMTQxLCAxLCAyNDMsIDEzNSwgMTQxLCAxLCAyMzQsIDkyLCAxNDEsIAotICAgIDEsIDI0MiwgMjE0LCAxNDEsIDEsIDIzMywgMjE3LCAxNDEsIDEsIDI0MiwgMTEzLCAxNDEsIDEsIDIzNCwgMTgyLCAxNDEsIAotICAgIDEsIDI0MywgNjIsIDE0MSwgMSwgMjM0LCAyOCwgMTQxLCAxLCAyNDIsIDE3NCwgMTQxLCAxLCAyMDYsIDE0MSwgMSwgMjEwLCAKLSAgICAxMTYsIDE0MSwgMSwgMjE5LCAxOTEsIDE0MSwgMSwgMjEwLCA0NCwgMTQxLCAxLCAyMTgsIDgzLCAxNDEsIDEsIDIxMCwgMTMsIAotICAgIDE0MSwgMSwgMjIxLCAxODEsIDE0MSwgMSwgMjEwLCA5NCwgMTQxLCAxLCAyMTksIDU4LCAxNDEsIDEsIDIxMCwgMjMsIDE0MSwgCi0gICAgMSwgMjE3LCAxMDUsIDE0MSwgMSwgMjQ4LCAyMjEsIDE0MSwgMSwgMjE2LCAxMTcsIDE0MSwgMSwgMjQ4LCAzLCAxNDEsIDEsIAotICAgIDQsIDIxNSwgMTE4LCAxNDEsIDEsIDIxNSwgMTE4LCAxNDEsIDEsIDI0NiwgNzgsIDE0MSwgMSwgMjE3LCAyMiwgMTQxLCAxLCAKLSAgICAyNDgsIDkwLCAxNDEsIDEsIDExMSwgMTQxLCAxLCAyNDcsIDE0NSwgMTQxLCAxLCAxOTcsIDE0MSwgMSwgMjI4LCAyMzMsIAotICAgIDE0MSwgMSwgMjI3LCAyMzcsIDE0MSwgMSwgMjI5LCAxMDcsIDE0MSwgMSwgMjI4LCA3NCwgMTQxLCAxLCAxNjIsIDE0MSwgMSwgCi0gICAgMjUyLCAxOTEsIDE0MSwgMSwgMTkwLCAxNDEsIDEsIDI0MSwgMTgwLCAxNDEsIDEsIDI1MiwgNiwgMTQxLCAxLCAyMjUsIAotICAgIDEwOCwgMTQxLCAxLCAyNDAsIDIyMiwgMTQxLCAxLCAyNTEsIDEyNSwgMTQxLCAxLCAyMjQsIDE1MCwgMTQxLCAxLCAyNDEsIAotICAgIDIzOCwgMTQxLCAxLCAyNTIsIDc1LCAxNDEsIDEsIDIyNSwgMjIxLCAxNDEsIDEsIDI0MSwgNjgsIDE0MSwgMSwgMjUxLCAKLSAgICAyMDUsIDE0MSwgMSwgMjI1LCAxNiwgMTQxLCAxLCAxODQsIDE0MSwgMSwgMjMwLCAyMzAsIDE0MSwgMSwgMjMwLCAxMDIsIAotICAgIDE0MSwgMSwgMjMxLCA5MSwgMTQxLCAxLCAyMzAsIDE2MSwgMTQxLCAxLCA0LCAxOTEsIDE0MSwgMSwgMTkxLCAxNDEsIDEsIAotICAgIDQsIDIxMCwgMjEyLCAxNDEsIDEsIDIxMCwgMjEyLCAxNDEsIDEsIDQsIDIxMCwgMjQ0LCAxNDEsIDEsIDIxMCwgMjQ0LCAKLSAgICAxNDEsIDEsIDIwNSwgMTQxLCAxLCAyMjMsIDM1LCAxNDEsIDEsIDIyMiwgMTQwLCAxNDEsIDEsIDIyMywgMTI4LCAxNDEsIDEsIAotICAgIDIyMiwgMjExLCAxNDEsIDEsIDQsIDIxMiwgNjUsIDE0MSwgMSwgMjEyLCA2NSwgMTQxLCAxLCAyMTEsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTIsIDIyLCAxNDEsIDEsIDIxMSwgMjI3LCAxNDEsIDEsIDIzMCwgMjUsIDE0MSwgMSwgMjEyLCAxMTYsIDE0MSwgMSwgNCwgCi0gICAgMTc2LCAxNDEsIDEsIDQsIDIzNCwgMTgyLCAzOCwgMjM0LCAyMDEsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMzgsIDIzNCwgCi0gICAgMjAxLCAyMjAsIDE1NSwgMjE5LCAzMSwgNzgsIDIzNCwgMjAxLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDIzNCwgMjAxLCAKLSAgICAyMjAsIDE1NSwgMjE5LCAzMSwgNzgsIDE0MSwgMjM1LCAxNTgsIDc4LCAxNDEsIDIxMywgMTM1LCAyMzUsIDE1OCwgNzgsIAotICAgIDE0MSwgMjQ3LCAyMjEsIDIxMCwgMjI1LCAyMzQsIDIwMSwgNTIsIDI0MCwgMTY4LCA1NiwgMSwgNCwgNjEsIDU2LCAxLCA2MSwgCi0gICAgNTYsIDEsIDQsIDczLCA1NiwgMSwgNzMsIDU2LCAxLCA0LCA3MCwgNTYsIDEsIDcwLCA1NiwgMSwgNCwgNzUsIDU2LCAxLCAKLSAgICA3NSwgNTYsIDEsIDQsIDc2LCA1NiwgMSwgNzYsIDU2LCAxLCAxNzYsIDU2LCAxLCAyNDMsIDEzNSwgNTYsIDEsIDIzNCwgOTIsIAotICAgIDU2LCAxLCAyNDIsIDIxNCwgNTYsIDEsIDIzMywgMjE3LCA1NiwgMSwgMjQyLCAxMTMsIDU2LCAxLCAyMzQsIDE4MiwgNTYsIAotICAgIDEsIDI0MywgNjIsIDU2LCAxLCAyMzQsIDI4LCA1NiwgMSwgMjQyLCAxNzQsIDU2LCAxLCAyMDYsIDU2LCAxLCAyMTAsIDExNiwgCi0gICAgNTYsIDEsIDIxOSwgMTkxLCA1NiwgMSwgMjEwLCA0NCwgNTYsIDEsIDIxOCwgODMsIDU2LCAxLCAyMTAsIDEzLCA1NiwgMSwgCi0gICAgMjIxLCAxODEsIDU2LCAxLCAyMTAsIDk0LCA1NiwgMSwgMjE5LCA1OCwgNTYsIDEsIDIxMCwgMjMsIDU2LCAxLCAyMTcsIAotICAgIDEwNSwgNTYsIDEsIDI0OCwgMjIxLCA1NiwgMSwgMjE2LCAxMTcsIDU2LCAxLCAyNDgsIDMsIDU2LCAxLCA0LCAyMTUsIDExOCwgCi0gICAgNTYsIDEsIDIxNSwgMTE4LCA1NiwgMSwgMjQ2LCA3OCwgNTYsIDEsIDIxNywgMjIsIDU2LCAxLCAyNDgsIDkwLCA1NiwgMSwgCi0gICAgMTExLCA1NiwgMSwgMjQ3LCAxNDUsIDU2LCAxLCAxOTcsIDU2LCAxLCAyMjgsIDIzMywgNTYsIDEsIDIyNywgMjM3LCA1NiwgCi0gICAgMSwgMjI5LCAxMDcsIDU2LCAxLCAyMjgsIDc0LCA1NiwgMSwgMTYyLCA1NiwgMSwgMjUyLCAxOTEsIDU2LCAxLCAxOTAsIDU2LCAKLSAgICAxLCAyNDEsIDE4MCwgNTYsIDEsIDI1MiwgNiwgNTYsIDEsIDIyNSwgMTA4LCA1NiwgMSwgMjQwLCAyMjIsIDU2LCAxLCAyNTEsIAotICAgIDEyNSwgNTYsIDEsIDIyNCwgMTUwLCA1NiwgMSwgMjQxLCAyMzgsIDU2LCAxLCAyNTIsIDc1LCA1NiwgMSwgMjI1LCAyMjEsIAotICAgIDU2LCAxLCAyNDEsIDY4LCA1NiwgMSwgMjUxLCAyMDUsIDU2LCAxLCAyMjUsIDE2LCA1NiwgMSwgMTg0LCA1NiwgMSwgMjMwLCAKLSAgICAyMzAsIDU2LCAxLCAyMzAsIDEwMiwgNTYsIDEsIDIzMSwgOTEsIDU2LCAxLCAyMzAsIDE2MSwgNTYsIDEsIDQsIDE5MSwgNTYsIAotICAgIDEsIDE5MSwgNTYsIDEsIDQsIDIxMCwgMjEyLCA1NiwgMSwgMjEwLCAyMTIsIDU2LCAxLCA0LCAyMTAsIDI0NCwgNTYsIDEsIAotICAgIDIxMCwgMjQ0LCA1NiwgMSwgMjA1LCA1NiwgMSwgMjIzLCAzNSwgNTYsIDEsIDIyMiwgMTQwLCA1NiwgMSwgMjIzLCAxMjgsIAotICAgIDU2LCAxLCAyMjIsIDIxMSwgNTYsIDEsIDQsIDIxMiwgNjUsIDU2LCAxLCAyMTIsIDY1LCA1NiwgMSwgMjExLCAyNTAsIDU2LCAKLSAgICAxLCAyMTIsIDIyLCA1NiwgMSwgMjExLCAyMjcsIDU2LCAxLCAyMzAsIDI1LCA1NiwgMSwgMjEyLCAxMTYsIDU2LCAxLCA0LCAKLSAgICAxNzYsIDU2LCAxLCA0LCAyMzQsIDE4MiwgNTYsIDEsIDIxNCwgMjcsIDU2LCAxLCAyMTMsIDE3NiwgNTYsIDEsIDIxMywgCi0gICAgMjU1LCA1NiwgMSwgMjEzLCAxMzgsIDU2LCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDIzNCwgMjAxLCAyMjQsIDE3MywgMjE5LCAKLSAgICAzMSwgNzgsIDU2LCAyMzUsIDE1OCwgNzgsIDU2LCAyMTMsIDEzNSwgMjM1LCAxNTgsIDc4LCA1NiwgMjQ3LCAyMjEsIDIzMywgCi0gICAgMjU1LCAyNTEsIDE4NCwgMSwgMjUzLCAxNTgsIDI1MSwgMTg0LCAxLCAyMjYsIDEwNSwgMjUxLCAxODQsIDEsIDE5MywgMjUxLCAKLSAgICAxODQsIDEsIDI0NSwgNiwgMjUxLCAxODQsIDEsIDI0OSwgNjAsIDI1MSwgMTg0LCAxLCAyMTcsIDE1MiwgMjUxLCAxODQsIDEsIAotICAgIDIzMCwgMjUsIDI1MSwgMTg0LCAxLCAxNTYsIDI1MSwgMTg0LCAxLCAyNDMsIDIwMiwgMjUxLCAxODQsIDEsIDIzNSwgMjMsIAotICAgIDI1MSwgMTg0LCAxLCAyNDIsIDYwLCAyNTEsIDE4NCwgMSwgMjM1LCAxNDQsIDI1MSwgMTg0LCAxLCAyMjQsIDk2LCAyNTEsIAotICAgIDE4NCwgMSwgMjExLCAxNzgsIDI1MSwgMTg0LCAxLCAyMTAsIDgzLCAyNTEsIDE4NCwgMSwgMjUwLCAxNTgsIDI1MSwgMTg0LCAKLSAgICAxLCAyMjAsIDEwNCwgMjUxLCAxODQsIDEsIDE1MywgMjUxLCAxODQsIDEsIDIxMCwgMTU5LCAyNTEsIDE4NCwgMSwgMjUxLCAKLSAgICA2NiwgMjUxLCAxODQsIDEsIDIyMiwgOTEsIDI1MSwgMTg0LCAxLCA2MSwgMjUxLCAxODQsIDEsIDc2LCAyNTEsIDE4NCwgMSwgCi0gICAgNzUsIDI1MSwgMTg0LCAxLCAyNDUsIDE5NywgMjUxLCAxODQsIDEsIDI1NCwgMjAxLCAyNTEsIDE4NCwgMSwgMjQ1LCAxOTUsIAotICAgIDI1MSwgMTg0LCAxLCAyNTMsIDE5MiwgMjUxLCAxODQsIDEsIDIyNiwgMTM0LCAyNTEsIDE4NCwgMSwgMjU0LCAxMjMsIDI1MSwgCi0gICAgMTg0LCAxLCAyNDUsIDE1MCwgMjUxLCAxODQsIDEsIDI1NCwgMTE1LCAyNTEsIDE4NCwgMSwgMjQ1LCAxMzgsIDI1MSwgMTg0LCAKLSAgICAxLCAyNDUsIDkyLCAyNTEsIDE4NCwgMSwgNzMsIDI1MSwgMTg0LCAxLCA3MCwgMjUxLCAxODQsIDEsIDIzNSwgMTU2LCAyNTEsIAotICAgIDE4NCwgMSwgMjE0LCAxMDUsIDI1MSwgMTg0LCAxLCAyMjksIDc5LCAyNTEsIDE4NCwgMSwgMjQyLCAxNzgsIDI1MSwgMTg0LCAKLSAgICAxLCAyMzYsIDM0LCAyNCwgMSwgMjM0LCA1OCwgMjQsIDEsIDIxOCwgMjE1LCAyNCwgMSwgMjM0LCA1MSwgMjQsIDEsIDIyOCwgCi0gICAgMjI2LCAyNCwgMSwgMjI4LCAyMjQsIDI0LCAxLCAyMjgsIDIyMywgMjQsIDEsIDIxNiwgMTAxLCAyNCwgMSwgMjE4LCAyMDQsIAotICAgIDI0LCAxLCAyMjMsIDI2LCAyNCwgMSwgMjIzLCAyMSwgMjQsIDEsIDIyMywgMTgsIDI0LCAxLCAyMjMsIDExLCAyNCwgMSwgCi0gICAgMjIzLCA2LCAyNCwgMSwgMjIzLCAxLCAyNCwgMSwgMjIzLCAxMiwgMjQsIDEsIDIyMywgMjQsIDI0LCAxLCAyMzAsIDIxNywgCi0gICAgMjQsIDEsIDIyNSwgOTUsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyNSwgODQsIDI0LCAxLCAyMTksIDE0OCwgMjQsIDEsIAotICAgIDIxOCwgMjA5LCAyNCwgMSwgMjM2LCA1NiwgMjQsIDEsIDI1MCwgNDYsIDI0LCAxLCAyMTgsIDIxOSwgMjQsIDEsIDI1MCwgCi0gICAgMTA2LCAyNCwgMSwgMjM0LCAxMTAsIDI0LCAxLCAyMTYsIDE3MywgMjQsIDEsIDIyNSwgMTMxLCAyNCwgMSwgMjQxLCAxNzIsIAotICAgIDI0LCAxLCA2MSwgMjQsIDEsIDI1NCwgMjQzLCAyNCwgMSwgMTkxLCAyNCwgMSwgMjExLCA5MiwgMjQsIDEsIDI0NSwgMTE3LCAKLSAgICAyNCwgMSwgNzUsIDI0LCAxLCAyMTEsIDM2LCAyNCwgMSwgMjExLCA0NywgMjQsIDEsIDc2LCAyNCwgMSwgMjEyLCA2NSwgMjQsIAotICAgIDEsIDIxMiwgNjIsIDI0LCAxLCAyMjYsIDIzNCwgMjQsIDEsIDIxMCwgMjQ0LCAyNCwgMSwgNzAsIDI0LCAxLCAyMTIsIDExLCAKLSAgICAyNCwgMSwgMjEyLCAyMiwgMjQsIDEsIDIxMSwgMjUwLCAyNCwgMSwgMjEwLCAyMTIsIDI0LCAxLCAyNDUsIDU1LCAyNCwgMSwgCi0gICAgMjExLCA4LCAyNCwgMSwgNzMsIDI0LCAyNDQsIDEwMywgMjQsIDEsIDIxOCwgMjEzLCAyNCwgMSwgMjI4LCAyMTYsIDI0LCAxLCAKLSAgICAyMjgsIDIxOCwgMjQsIDEsIDIyOCwgMjIxLCAyNCwgMSwgMjIzLCAxOSwgMjQsIDEsIDIyMywgMCwgMjQsIDEsIDIyMywgOCwgCi0gICAgMjQsIDEsIDIyMywgMTMsIDI0LCAxLCAyMjIsIDI1NCwgMjQsIDEsIDIzMCwgMjEwLCAyNCwgMSwgMjMwLCAyMDcsIDI0LCAxLCAKLSAgICAyMzAsIDIxMSwgMjQsIDEsIDIzNCwgMjIxLCAyNCwgMSwgMjI1LCA5MCwgMjQsIDEsIDIyNSwgNzYsIDI0LCAxLCAyMjUsIAotICAgIDgyLCAyNCwgMSwgMjI1LCA3OSwgMjQsIDEsIDIyNSwgOTMsIDI0LCAxLCAyMjUsIDc3LCAyNCwgMSwgMjM0LCAyMTksIDI0LCAKLSAgICAxLCAyMzQsIDIxNywgMjQsIDEsIDIxOSwgMTQxLCAyNCwgMSwgMjE5LCAxMzksIDI0LCAxLCAyMTksIDEzMSwgMjQsIDEsIAotICAgIDIxOSwgMTM2LCAyNCwgMSwgMjE5LCAxNDYsIDI0LCAxLCAyMjYsIDMyLCAyNCwgMSwgMjE4LCAyMTYsIDI0LCAxLCAyMTEsIAotICAgIDI2LCAyNCwgMSwgMjExLCAyMiwgMjQsIDEsIDIxMSwgMjMsIDI0LCAxLCAyMzQsIDIyMCwgMjQsIDEsIDIxOCwgMjE3LCAyNCwgCisgICAgNjcsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIDI0MywgMjQ0LCAxMzAsIDE0MCwgCisgICAgNTIsIDgwLCAyNDMsIDI0NCwgMTMwLCA5NywgNTIsIDgwLCAyNDMsIDI0NCwgMTMwLCAyNDYsIDEwNSwgODAsIDIsIDIwMywgCisgICAgOTEsIDIxNCwgMTUzLCA4MCwgMiwgMjAzLCA5MSwgMjE0LCAxNTMsIDIxNSwgMjEyLCA3NCwgMjQ2LCAxMDUsIDIxNSwgMjEyLCAKKyAgICA3NCwgMTQwLCA1MiwgMjQ4LCAxNTgsIDc0LCA5NywgNTIsIDI0OCwgMTU4LCA3NCwgMTQwLCAyMTUsIDIxMiwgMjQ4LCAxNTgsIAorICAgIDc0LCA5NywgMjE1LCAyMTIsIDI0OCwgMTU4LCA3NCwgOTcsIDIxNSwgNTgsIDIxNSwgMjEyLCAyNDgsIDE1OCwgNzQsIDk3LCAKKyAgICA4MCwgMiwgMjQ2LCAxMTksIDIxOCwgMTQwLCAyMTQsIDE1MywgODAsIDIxNiwgNDMsIDEzMCwgMjQ2LCAxMDUsIDgwLCAyMTYsIAorICAgIDQzLCAxMzAsIDk3LCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCA5NywgODAsIDIsIDIxNywgNzksIDIsIDUyLCA2NywgCisgICAgOTEsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc5LCAyLCA2NywgOTEsIAorICAgIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OSwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyNTMsIDI1MiwgOTcsIDI1MywgMjUyLCAKKyAgICAxNDAsIDUyLCAyNTMsIDI1MiwgOTcsIDUyLCAyNTMsIDI1MiwgMTQwLCA4MCwgMjE2LCA0MywgODUsIDI0NywgMjQ5LCA5NywgCisgICAgODAsIDIxNiwgNDMsIDg1LCAyNDcsIDI0OSwgMTQwLCA4MCwgMjQzLCAyNDQsIDI1MiwgMTQyLCAyMTYsIDQzLCA4NSwgMjQ3LCAKKyAgICAyNDksIDk3LCA4MCwgMjQzLCAyNDQsIDI1MiwgMTQyLCAyMTYsIDQzLCA4NSwgMjQ3LCAyNDksIDIyOCwgNTcsIDIxMiwgOSwgCisgICAgMjIsIDIxOSwgMjksIDI0NSwgMjIxLCA3NCwgMjI4LCA1NywgMjQ1LCAyMjEsIDIyLCAyMTksIDI5LCAyMTIsIDksIDc0LCAKKyAgICAyMjgsIDU3LCAyMTIsIDksIDgwLCAyLCAxMDMsIDIyOCwgNTcsIDI0NSwgMjIxLCA4MCwgMiwgMTAzLCAyMTksIDI5LCAyNDUsIAorICAgIDIyMSwgODAsIDIsIDEwMywgMjE5LCAyOSwgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDU3LCAyMTIsIDksIDgwLCAyMiwgCisgICAgMjI4LCA1NywgMjQ1LCAyMjEsIDc0LCAyMjgsIDU3LCAyNDUsIDIyMSwgODAsIDIyLCAyMTksIDI5LCAyNDUsIDIyMSwgNzQsIAorICAgIDIxOSwgMjksIDI0NSwgMjIxLCA4MCwgMjIsIDIxOSwgMjksIDIxMiwgOSwgNzQsIDIxOSwgMjksIDIxMiwgOSwgODAsIDIyLCAKKyAgICAyMjgsIDU3LCAyMTIsIDksIDc0LCAyMjIsIDIyOSwgMjQ4LCAwLCAyNDksIDEyNiwgMjQ0LCAxNzYsIDI0NywgMjU1LCAyNDQsIAorICAgIDE3NiwgMjQ4LCAwLCAyNDksIDEyNiwgMjIyLCAyMjksIDI0NywgMjU1LCAyMTksIDI5LCAyNDUsIDIyMSwgODAsIDI0OSwgCisgICAgMTI2LCAyMjgsIDU3LCAyNDUsIDIyMSwgNzQsIDIyOCwgNTcsIDI0NSwgMjIxLCA4MCwgMjQ5LCAxMjYsIDIxOSwgMjksIAorICAgIDI0NSwgMjIxLCA3NCwgMjQ0LCAxNzYsIDI0OCwgMCwgMjQ5LCAxMjYsIDIyOCwgNTcsIDI0NSwgMjIxLCA3NCwgMjIyLCAKKyAgICAyMjksIDI0OCwgMCwgMjQ5LCAxMjYsIDIxOSwgMjksIDI0NSwgMjIxLCA3NCwgMjI4LCA1NywgMjQ1LCAyMjEsIDgwLCAyNDksIAorICAgIDEyNiwgMjI4LCA1NywgMjEyLCA5LCA3NCwgMjI4LCA1NywgMjEyLCA5LCA4MCwgMjQ5LCAxMjYsIDIyOCwgNTcsIDI0NSwgCisgICAgMjIxLCA3NCwgMjEyLCAzNiwgODAsIDIyNSwgOCwgMjQ3LCAxOTYsIDIyMiwgMjUyLCA4MCwgMjI1LCA4LCA5NywgMjE2LCAKKyAgICAxODksIDI0OSwgOTEsIDIxNCwgMTUyLCA4MCwgMjI1LCA4LCA5NywgMjE2LCAxODksIDI0OSwgOTEsIDI0NiwgMTA0LCA4MCwgCisgICAgMjI1LCA4LCAyNDYsIDEwNSwgMjE2LCAxODksIDI0OSwgOTEsIDIzMywgMzgsIDgwLCAyMjUsIDgsIDI0NiwgMTA1LCAyMTYsIAorICAgIDE4OSwgMjQ5LCA5MSwgMjIyLCAyNDIsIDIyMiwgMjQ1LCAyNTQsIDI3LCAyNTAsIDMsIDc0LCAyMzMsIDQxLCAyNTQsIDI3LCAKKyAgICAyNTQsIDg5LCA3NCwgMjE2LCAxNSwgMjU0LCAyNywgMjU0LCA4OSwgNzQsIDI1MSwgMTc2LCAyNTQsIDI3LCAyNTQsIDg5LCAKKyAgICA3NCwgMjE2LCAxNSwgMjU0LCAyNywgMjUwLCAzLCA4MCwgMiwgMjMwLCAxODIsIDIxNiwgMTUsIDI1NCwgMjcsIDI1NCwgODksIAorICAgIDgwLCAyLCAyMjUsIDIzLCAyMzIsIDEwOSwgNDQsIDIyMCwgMTUzLCAyNTAsIDMsIDc0LCAyMzIsIDEwOSwgNDMsIDIyMCwgCisgICAgMTUzLCAyNTQsIDg5LCA3NCwgMjU0LCA4OSwgMjUwLCAxLCAyNTAsIDM3LCA3NCwgMjUwLCAzLCAyNTAsIDEsIDI1MCwgMzcsIAorICAgIDc0LCA5NywgODAsIDc3LCAyMTksIDI1MiwgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIDIxOSwgMjUyLCA5NywgNzQsIDIxOSwgCisgICAgMjUyLCA5NywgODAsIDc3LCAxNDAsIDc0LCA5NywgODAsIDIsIDk2LCA1MSwgMTQwLCA4MCwgMiwgOTYsIDUxLCA5NywgODAsIAorICAgIDIxNiwgMTQwLCAyMTEsIDE3OCwgNDMsIDQ0LCA4MCwgMjE2LCAxNDAsIDQsIDI1MCwgMzYsIDIxNCwgMTUzLCAyMTUsIDU4LCAKKyAgICA4MCwgMjQzLCAyNDQsIDQsIDI1MCwgMzYsIDQzLCAyNTIsIDE0MCwgMTIwLCA0NCwgMjUyLCAxNDAsIDEyNCwgMjQxLCAyNTUsIAorICAgIDQzLCAyNTIsIDE0MCwgMTI0LCA0NCwgMjUyLCAxNDAsIDEyMCwgMjQxLCAyNTUsIDEyMCwgMjUyLCAxNDAsIDQ0LCAxMjQsIAorICAgIDI1MiwgMTQwLCA0MywgMjQxLCAyNTUsIDEyMCwgMjUyLCAxNDAsIDQzLCAxMjQsIDI1MiwgMTQwLCA0NCwgMjQxLCAyNTUsIAorICAgIDQzLCAyNTIsIDE0MCwgMTIwLCA0NCwgMjUyLCAxNDAsIDEyMCwgMjQxLCAyNTUsIDEyMCwgMjUyLCAxNDAsIDQ0LCAxMjQsIAorICAgIDI1MiwgMTQwLCA0NCwgMjQxLCAyNTUsIDQzLCAyNTIsIDE0MCwgMTI0LCA0NCwgMjUyLCAxNDAsIDEyNCwgMjQxLCAyNTUsIAorICAgIDEyMCwgMjUyLCAxNDAsIDQzLCAxMjQsIDI1MiwgMTQwLCA0MywgMjQxLCAyNTUsIDE0MCwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgCisgICAgMTIwLCAyMTYsIDQzLCAxMzAsIDk3LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjAsIDIxNiwgNDMsIDEzMCwgMjE0LCAxNTMsIAorICAgIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDQ0LCAyMTYsIDQzLCAxMzAsIDI0NiwgMTA1LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCA0NCwgCisgICAgMjE2LCA0MywgMTMwLCAxNDAsIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDEyNCwgMjE2LCA0MywgMTMwLCA5NywgMjQyLCAwLCAyLCAKKyAgICAyNTIsIDE0MCwgMTI0LCAyMTYsIDQzLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCA0MywgMjE2LCA0MywgCisgICAgMTMwLCAyNDYsIDEwNSwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgNDMsIDIxNiwgNDMsIDEzMCwgMTQwLCAyNDIsIDAsIDIsIAorICAgIDI1MiwgMTQwLCAxMjAsIDI0MywgMjQ0LCAxMzAsIDk3LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjAsIDI0MywgMjQ0LCAKKyAgICAxMzAsIDIxNCwgMTUzLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCA0NCwgMjQzLCAyNDQsIDEzMCwgMjQ2LCAxMDUsIDI0MiwgMCwgCisgICAgMiwgMjUyLCAxNDAsIDQ0LCAyNDMsIDI0NCwgMTMwLCAxNDAsIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDEyNCwgMjQzLCAyNDQsIAorICAgIDEzMCwgOTcsIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDEyNCwgMjQzLCAyNDQsIDEzMCwgMjE0LCAxNTMsIDI0MiwgMCwgMiwgCisgICAgMjUyLCAxNDAsIDQzLCAyNDMsIDI0NCwgMTMwLCAyNDYsIDEwNSwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgNDMsIDI0MywgMjQ0LCAKKyAgICAxMzAsIDE0MCwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgMTIwLCA3NywgMTQwLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAyNDYsIAorICAgIDEwNywgMjE0LCAxNTMsIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDQzLCAyNTIsIDMxLCAyMTQsIDE1MywgMjQyLCAwLCAyLCAKKyAgICAyNTIsIDE0MCwgMjIyLCAyNTIsIDk3LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjAsIDc3LCA5NywgMjQyLCAwLCAyLCAyNTIsIAorICAgIDE0MCwgMjQ2LCAxMDcsIDI0NiwgMTA1LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCA0MywgMjUyLCAzMSwgMjQ2LCAxMDUsIDI0MiwgCisgICAgMCwgMiwgMjUyLCAxNDAsIDIyMiwgMjUyLCAxNDAsIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDEyMCwgNzcsIDk3LCAyNDIsIDAsIAorICAgIDIsIDI1MiwgMTQwLCAyMTQsIDE2MywgMTQwLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjQsIDc3LCA5NywgMjQyLCAwLCAyLCAKKyAgICAyNTIsIDE0MCwgMjQ2LCAxMDcsIDk3LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjAsIDc3LCAxNDAsIDI0MiwgMCwgMiwgCisgICAgMjUyLCAxNDAsIDIxNCwgMTYzLCA5NywgMjQyLCAwLCAyLCAyNTIsIDE0MCwgMTI0LCA3NywgMTQwLCAyNDIsIDAsIDIsIAorICAgIDI1MiwgMTQwLCAyNDYsIDEwNywgMTQwLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjAsIDc3LCAxOTksIDI0OCwgMTU3LCAKKyAgICAxNDAsIDI0MiwgMCwgMiwgMjUyLCAxNDAsIDEyNCwgMjUyLCA0NCwgMTk5LCAyNDgsIDE1NywgOTcsIDI0MiwgMCwgMiwgCisgICAgMjUyLCAxNDAsIDEyMCwgNzcsIDE5OSwgMjQ4LCAxNTcsIDk3LCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAxMjQsIDI1MiwgNDQsIAorICAgIDE5OSwgMjQ4LCAxNTcsIDIxNCwgMTUzLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCA0MywgMjUyLCAzMSwgMjQ2LCAxMDUsIDI0MiwgCisgICAgMCwgMiwgMjUyLCAxNDAsIDIyMiwgMjUyLCAyNDYsIDEwNSwgMjQyLCAwLCAyLCAyNTIsIDE0MCwgNDMsIDI1MiwgMzEsIAorICAgIDIxNCwgMTUzLCAyNDIsIDAsIDIsIDI1MiwgMTQwLCAyMjIsIDI1MiwgNDQsIDUyLCA4MCwgMiwgMjIyLCAxODQsIDI0MSwgCisgICAgMjM2LCAyNDUsIDk5LCA1LCA3NywgOTcsIDc0LCAyMTYsIDkwLCAyMjYsIDE2OSwgNzcsIDk3LCA3NCwgMTQwLCA4MCwgNzcsIAorICAgIDIxNiwgOTAsIDIyNiwgMTY4LCA5NywgODAsIDc3LCAyMTYsIDkwLCAyMjYsIDE2OCwgOTcsIDgwLCA3NywgMjU0LCAxNDksIAorICAgIDEyOCwgMTExLCAyMzMsIDE2LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgMjE2LCAxNDAsIDIzMywgMTUsIDI0MiwgMTMxLCA3NywgCisgICAgOTcsIDc0LCAyMTgsIDY1LCA3NywgOTcsIDc0LCAxNDAsIDgwLCAyMTYsIDE0MCwgMjE4LCA2NCwgMjE4LCAyMywgNzcsIAorICAgIDE0MCwgNzQsIDQzLCAyNDQsIDkyLCAyMTcsIDc4LCA0NCwgMjQ0LCA5MiwgMjE3LCA3OCwgMTIwLCAyNDQsIDkyLCAyMTcsIAorICAgIDc4LCAxMjQsIDI0NCwgOTIsIDIxNywgNzgsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDIsIDI0OCwgNjEsIDIxMCwgMTYwLCAKKyAgICAxODgsIDIxOCwgMjQzLCAyMTAsIDE2MCwgMTg4LCAyMTUsIDQ5LCAyNDksIDIyNywgNDMsIDcxLCAyNDksIDEwMCwgMTI3LCAKKyAgICA0NCwgNzEsIDI0OSwgMTAwLCAxMjcsIDQzLCA3MSwgMjI2LCA0LCA0NCwgNzEsIDIyNiwgNCwgMjEwLCAxNjAsIDE4OCwgNDMsIAorICAgIDIzNiwgMTYsIDEyNywgMjEwLCAxNjAsIDE4OCwgNDQsIDIzNiwgMTYsIDEyNywgMjEwLCAxNjAsIDE4OCwgNDMsIDI1MSwgCisgICAgMjQzLCAxMjcsIDIxMCwgMTYwLCAxODgsIDQ0LCAyNTEsIDI0MywgMTI3LCA0MywgNDIsIDI1MSwgMTU5LCAyLCAyMTQsIAorICAgIDE4MywgNDQsIDQyLCAyNTEsIDE1OSwgMiwgMjE0LCAxODMsIDQzLCA0MiwgMjUxLCAxNTksIDIsIDIxNiwgMTE2LCAyMzYsIAorICAgIDEsIDIxNiwgMTUsIDI0OSwgMTYxLCA0NCwgNDIsIDI1MSwgMTU5LCAyLCAyMTYsIDExNiwgMjM2LCAxLCAyNTEsIDE3NiwgCisgICAgMjQ5LCAxNjEsIDQzLCA0MiwgMjUxLCAxNTksIDIsIDIxNiwgMTE2LCAyMzYsIDEsIDI1MSwgMTc2LCAyNDksIDE2MSwgNDQsIAorICAgIDQyLCAyNTEsIDE1OSwgMiwgMjE2LCAxMTYsIDIzNiwgMSwgMjE2LCAxNSwgMjQ5LCAxNjEsIDQzLCAyNTQsIDExMSwgMjUxLCAKKyAgICAxNTksIDIsIDI0NywgMTIxLCA0NCwgMjU0LCAxMTEsIDI1MSwgMTU5LCAyLCAyNDcsIDEyMSwgNDMsIDI1NCwgMjcsIDIzMywgCisgICAgMTYsIDEyNywgNDQsIDI1NCwgMjcsIDI0MiwgMTMxLCAxMjcsIDUyLCA0MywgMjU0LCAyNywgMjQyLCAxMzEsIDEyNywgNTIsIAorICAgIDQ0LCAyNTQsIDI3LCAyMzMsIDE2LCAxMjcsIDQzLCA4NSwgMjE2LCA3LCAyMjAsIDU0LCAxMjcsIDQ0LCA4NSwgMjE2LCA3LCAKKyAgICAyMjAsIDU0LCAxMjcsIDI0NiwgMTE5LCAyNDQsIDEzNiwgNjcsIDIxMCwgMzUsIDIzMiwgMjE0LCAyMzEsIDg5LCAyNTQsIAorICAgIDExMSwgMjI2LCAxNzEsIDIzMywgNDcsIDQ0LCAyNTQsIDExMSwgMjE0LCAxMiwgMiwgMjE4LCAyMzUsIDIzMSwgODksIDQ0LCAKKyAgICAyNTQsIDExMSwgMiwgMjQ3LCAxMjEsIDI1NCwgMTExLCAyLCAyMjIsIDkzLCAyMzUsIDIxNiwgMjU1LCA0LCAyNTQsIDExMCwgCisgICAgMjE5LCAwLCAyNTQsIDExMSwgMjI2LCAxNzEsIDIzMywgNDcsIDIxOSwgMCwgMjU0LCAxMTEsIDIyNiwgMTcxLCAyMTQsIAorICAgIDE2MywgMjE1LCA5NCwgMjU0LCAxMTAsIDIyMywgNTAsIDI1NCwgMTEwLCAyNTQsIDExMSwgMiwgMjE0LCAxODMsIDIyMywgCisgICAgNTAsIDI1NCwgMTExLCAyLCAyMTQsIDE4MywgMjI2LCAyNDksIDI1NCwgMTExLCAyMjYsIDE3MSwgMjE0LCAxNjMsIDIyNiwgCisgICAgMjQ5LCAyNTQsIDExMSwgMjI2LCAxNzEsIDI0NiwgMTA3LCAyMzEsIDg5LCAyNTQsIDExMSwgMiwgMjA0LCAyNTQsIDYsIAorICAgIDI0NSwgMTQxLCAyMzYsIDEsIDgwLCAyMjUsIDgsIDEyMCwgMjIsIDIyMiwgMjUyLCAyMzEsIDg5LCAyNTQsIDExMSwgMiwgCisgICAgMjA0LCAyNTQsIDYsIDI0NSwgMTQxLCAyMzYsIDEsIDgwLCAyMjUsIDgsIDEyMCwgMjIsIDIzMywgNDcsIDIzMSwgODksIAorICAgIDI1NCwgMTExLCAyLCAyMDQsIDI1NCwgNiwgMjQ1LCAxNDEsIDIzNiwgMSwgODAsIDIyNSwgOCwgMTI0LCAyMiwgMjIyLCAKKyAgICAyNTIsIDIzMSwgODksIDI1NCwgMTExLCAyLCAyMDQsIDI1NCwgNiwgMjQ1LCAxNDEsIDIzNiwgMSwgODAsIDIyNSwgOCwgCisgICAgMTI0LCAyMiwgMjMzLCA0NywgMjMxLCA4OSwgMjU0LCAxMTEsIDIsIDIwNCwgMjU0LCA2LCAyNDUsIDE0MSwgMjM2LCAxLCAKKyAgICA4MCwgMjI1LCA4LCA0NCwgMjIsIDIxNCwgMTYzLCAyMzEsIDg5LCAyNTQsIDExMSwgMiwgMjA0LCAyNTQsIDYsIDI0NSwgCisgICAgMTQxLCAyMzYsIDEsIDgwLCAyMjUsIDgsIDQzLCAyMiwgMjE0LCAxNjMsIDIzMSwgODksIDI1NCwgMTExLCAyLCAyMDQsIAorICAgIDI1NCwgNiwgMjQ1LCAxNDEsIDIzNiwgMSwgODAsIDIyNSwgOCwgNDQsIDIyLCAyNDYsIDEwNywgMjMxLCA4OSwgMjU0LCAKKyAgICAxMTEsIDIsIDIwNCwgMjU0LCA2LCAyNDUsIDE0MSwgMjM2LCAxLCA4MCwgMjI1LCA4LCA0MywgMjIsIDI0NiwgMTA3LCAyMjMsIAorICAgIDUwLCAyNDUsIDE1MywgMjIwLCAxMjgsIDI0NSwgMTUzLCAyMjAsIDEyOSwgMiwgMjI2LCAxMjQsIDI0NSwgMTUzLCAyMjAsIAorICAgIDEyOSwgMiwgNCwgMjUwLCAzNywgNDgsIDI0NSwgMTUzLCAyMjAsIDEyOSwgMiwgNDQsIDgwLCA0OCwgMjQ1LCAxNTMsIDIyMCwgCisgICAgMTI5LCAyLCA0MywgODAsIDQ4LCAyNTAsIDM3LCAyLCAyMDMsIDEzMCwgMzcsIDY3LCAxMzAsIDM3LCAyMjYsIDgsIDM3LCAKKyAgICAyMjMsIDUxLCAyMTksIDQ3LCAzNywgMjI1LCAxNzIsIDI1MCwgMzcsIDI0NywgMTc0LCAyNTEsIDc5LCAyMDMsIDI1MiwgCisgICAgMTQyLCAyMiwgMjE2LCAxNSwgMTYzLCAyNDcsIDE3NCwgMjUxLCA3OSwgNjcsIDEzMCwgMjUwLCAzNywgMiwgMjE4LCAyNSwgCisgICAgMjExLCAxNzgsIDM3LCAyNTQsIDg4LCAyNDcsIDE3MCwgNTAsIDEyMCwgODAsIDIxNiwgMTQwLCAyNTAsIDM2LCAzNywgNzEsIAorICAgIDI1MSwgMTE0LCAzNywgMjUxLCAxMTQsIDM3LCAyMzMsIDE1LCAzNywgMjQyLCAxMzAsIDI1MCwgMzcsIDIsIDQsIDI1MCwgCisgICAgMzcsIDIxNiwgNDMsIDIxNiwgMTk3LCAyMjIsIDI1MiwgMjUwLCAzNywgMiwgMTEzLCAyMDMsIDIxOCwgOTIsIDIxNiwgNDMsIAorICAgIDIxNiwgMTk3LCAyMjIsIDI1MiwgOTIsIDIyMiwgMjI5LCAyNDgsIDAsIDIxOSwgOTYsIDkyLCAyNDQsIDE3NiwgMjQ4LCAwLCAKKyAgICAyMTksIDk2LCA5MiwgMjUzLCAyMTcsIDkyLCA0LCAyNTAsIDM2LCA5MiwgMjE4LCAyMzUsIDExMywgMjM1LCA2NiwgMjE4LCAKKyAgICAyMzMsIDIxNSwgMjI3LCAyLCA1OSwgNDgsIDIxNSwgMjI3LCAyLCAyMTQsIDE4MywgMjIyLCA5MywgMjM2LCAxLCAyMTUsIAorICAgIDIyNiwgMjE1LCAyMjcsIDIsIDIyMCwgMTM1LCAyNTMsIDIwOCwgMjUxLCAxNzUsIDQ0LCAyMTUsIDIyNywgNzcsIDQzLCAKKyAgICAyMTUsIDIyNiwgNDMsIDIxNSwgMjI3LCAyNTIsIDMxLCA2NywgMTMwLCA2NywgMjUyLCAxNDIsIDI1MiwgMzEsIDQ0LCAyMTUsIAorICAgIDIyNiwgMjUxLCAxNjYsIDIsIDQzLCAxNjMsIDI1MSwgMjIyLCAyNTEsIDE2NiwgMiwgNDQsIDE2MywgMjUxLCAyMjIsIDg1LCAKKyAgICAyNTEsIDE2NSwgMzAsIDIsIDQzLCAxNjMsIDI1MSwgMjIyLCAzMCwgMiwgNDQsIDE2MywgMjUxLCAyMjIsIDcxLCAyNDAsIAorICAgIDIzNywgODUsIDI0MCwgMjM3LCA0MywgMjExLCAyNDQsIDI0NCwgMTM2LCA0NCwgMjExLCAyNDQsIDI0NCwgMTM2LCA0MywgCisgICAgNTIsIDIxMSwgMjQ0LCAyNDQsIDEzNiwgNDQsIDUyLCAyMTEsIDI0NCwgMjQ0LCAxMzYsIDIzNSwgMjQ5LCAyMzUsIDIzNSwgCisgICAgMjE2LCAxMTMsIDExNywgMjM1LCAyMzUsIDIzNSwgMjM2LCAyMjksIDEwMywgMiwgNjcsIDEzMCwgMjQ2LCAxMTMsIDIzMCwgCisgICAgODgsIDQyLCAyLCAyNDksIDE4MiwgMjI2LCAxMjgsIDIzNSwgMjQ3LCAyNTMsIDIzOCwgMjE5LCAyMjAsIDIyNCwgMTgxLCAKKyAgICAyNDUsIDk5LCA1LCAyMiwgMjE5LCA5OCwgMjI2LCA4LCAyNDUsIDk5LCA1LCAyMiwgMjE5LCA5OCwgMjI2LCA5LCAyLCAyMTYsIAorICAgIDkwLCA0OCwgMjQwLCAxMDUsIDIxNiwgNDMsIDIyLCAyMTksIDk4LCAyMjYsIDgsIDI0MiwgMTg0LCAyMTgsIDE1NiwgMjE2LCAKKyAgICAxODYsIDI0NiwgMTA2LCAyMTUsIDIyNywgMiwgNDMsIDE2MywgMjUxLCAyMjIsIDI0NiwgMTA2LCAyMTUsIDIyNywgMiwgNDQsIAorICAgIDE2MywgMjUxLCAyMjIsIDg1LCAyNDcsIDI1MCwgMiwgMTI0LCA3NCwgODUsIDIzMiwgMTA1LCA3MSwgMjUwLCAzNywgMiwgCisgICAgMTI0LCA3NCwgODUsIDI1MCwgMzcsIDIsIDEyNCwgNzQsIDI0NSwgODYsIDcxLCAyMTgsIDIzNSwgMjQ1LCA4NiwgODUsIAorICAgIDIxOCwgMjM1LCAyNDUsIDg2LCA3MSwgMjQ3LCAyNDksIDI0NSwgODYsIDg1LCAyNDcsIDI0OSwgMjQ1LCA4NiwgNzEsIDI1MCwgCisgICAgMzYsIDI0NSwgODYsIDg1LCAyNTAsIDM2LCAyMjIsIDEzMywgMjIzLCA1MSwgMjE5LCA0OCwgMjI2LCAxNjgsIDIxOSwgNDgsIAorICAgIDIsIDIyNiwgMTI0LCAyMjMsIDUxLCAyMTksIDQ4LCAyLCAyMDMsIDkxLCAyNTEsIDI1MCwgMjE5LCA0NywgMjUxLCAyNTAsIAorICAgIDIyMywgNTEsIDIxOSwgNDcsIDUyLCAyMjUsIDIzLCAyMTUsIDIxMiwgMjI1LCAyMywgMjMzLCA0MywgMjQ5LCA5MiwgMjU0LCAKKyAgICAxMTEsIDEyNywgMjIyLCAyNDgsIDI0OSwgOTIsIDI1NCwgMTExLCAxMjcsIDIxNiwgNzksIDIzMCwgMTgwLCAyMzAsIDI1LCAKKyAgICAzNywgNTksIDIyNiwgMTY4LCAyMzAsIDI1LCAzNywgOTYsIDIyNiwgMTY4LCAyMzAsIDI1LCAzNywgMzAsIDIyNiwgMTY4LCAKKyAgICAyMzAsIDI1LCAyMTQsIDE3NiwgMjI2LCAxNjksIDIsIDI0NywgMTIxLCAyMzAsIDI1LCAyMTQsIDE3NiwgMjI2LCAxNjksIDIsIAorICAgIDIyNSwgMjMsIDIzMCwgMjUsIDQyLCAyMzUsIDIwMCwgMjI2LCAxNjgsIDIzMCwgMjUsIDQyLCAyMTQsIDE3NiwgMjI2LCAKKyAgICAxNjgsIDExMywgMjMyLCAxNDcsIDIyLCAyMjYsIDE2OCwgMTEzLCAyMzIsIDE0NywgMTc3LCAyMjYsIDE2OCwgMjMwLCAyNSwgCisgICAgMzAsIDIyNiwgMTY4LCAyMzAsIDE1NSwgMTEzLCAyMTgsIDQ0LCAyMTgsIDQyLCAyLCAyMzUsIDIxMiwgMjI0LCAyNSwgMjM1LCAKKyAgICAyMTMsIDIyNiwgMTY4LCAyNDQsIDEwMCwgMjI2LCAwLCAyMzUsIDIxMiwgMjM1LCAyMTMsIDIsIDUyLCA5MSwgMjM1LCAyMTMsIAorICAgIDI1MywgMTc0LCAyLCAyMTksIDk2LCAyNTAsIDMzLCAyNDMsIDIyNywgMjU0LCA4OSwgMjM1LCAyMTAsIDIzMiwgMjE1LCAKKyAgICAyMzUsIDIxMSwgMiwgMjIzLCAxMTYsIDIyNSwgMjM4LCAyNTQsIDMsIDIyNSwgMiwgMjMyLCAyMTUsIDIzNSwgMjExLCAyLCAKKyAgICAyMjAsIDE1MywgMjI1LCAyMzgsIDI1NCwgMywgMjI1LCAyLCAyMzIsIDIxNSwgMjM1LCAyMTEsIDIyOCwgNTMsIDIzNSwgCisgICAgMjUxLCAyMTYsIDE5NywgMjI1LCAyLCAyMzUsIDIxMywgMjU0LCAzLCAxMTUsIDIyNSwgMTIsIDIyNiwgMTY4LCAyMjQsIDE5LCAKKyAgICAyMzUsIDIxMywgMjI2LCAxNjgsIDIzNSwgMjEzLCAyLCAxNDAsIDgwLCAyLCAxMDMsIDIzNSwgMjEzLCAyLCAzMCwgNTAsIAorICAgIDIzNSwgMjEzLCAyLCAyMzUsIDE5OSwgMjM1LCAyMTMsIDIsIDIxNCwgMTc1LCAyMzUsIDIxMywgMiwgMjI2LCAxMjQsIDIzNSwgCisgICAgMjEzLCAyLCAyMTQsIDE4MywgMjM1LCA2NywgMjMzLCA4NiwgNDMsIDIxNSwgMjI3LCAyMjYsIDE2OCwgMjEwLCAxNjAsIAorICAgIDE4OCwgMjIxLCAyMDIsIDI0OSwgMjEwLCAyMTAsIDE2MCwgMTg4LCAyMjEsIDIwMiwgMjI1LCA1NywgMjEwLCAxNjAsIDE4OCwgCisgICAgMjIxLCAyMDIsIDIyNCwgMTc3LCA5NiwgNSwgMiwgNCwgMjUwLCAzNywgNDgsIDk2LCA1LCAyLCAyNTAsIDMyLCAyNTUsIDE2LCAKKyAgICA0OCwgOTYsIDUsIDIsIDIxNiwgOTAsIDQ4LCA5NiwgNSwgMiwgNTksIDUxLCA5NiwgNSwgMiwgMjE2LCA5MCwgNTEsIDk2LCAKKyAgICA1LCAyLCAyMTgsIDY2LCAxMDUsIDk2LCA1LCAyLCA4NSwgMjE1LCAyMjYsIDIzMCwgMTgzLCA1LCAyLCAyNDksIDIyMSwgNDgsIAorICAgIDIzMCwgMTgzLCA1LCAyLCA1OSwgNTEsIDIzMCwgMTgzLCA1LCAyLCAyNDQsIDE3NiwgMjQ3LCAxMTksIDIzMCwgMTgzLCA1LCAKKyAgICAyLCAyMjIsIDIyOSwgMjQ3LCAxMTksIDk2LCA1LCAyMzYsIDEsIDQzLCAxNjMsIDI1MCwgMzYsIDk2LCA1LCAyMzYsIDEsIAorICAgIDQ0LCAxNjMsIDI1MCwgMzYsIDIxMywgMjU0LCAxNzcsIDI0OSwgMTMyLCAyMjQsIDE4MSwgMjMwLCA4NSwgNSwgMiwgNTksIAorICAgIDQ4LCAyMzAsIDg1LCA1LCAyLCAyMTQsIDE4MywgMjIwLCAxNTAsIDIyNCwgMTgyLCAyLCAyNTEsIDE3NiwgMjUwLCAwLCAKKyAgICAyMTksIDc4LCAyMjQsIDE4MSwgMjMwLCA4NSwgNSwgMjM2LCAxLCA0MywgMTYzLCAyNTAsIDM2LCAyMzAsIDg1LCA1LCAyMzYsIAorICAgIDEsIDQ0LCAxNjMsIDI1MCwgMzYsIDM3LCAyMzAsIDg1LCA1LCAyLCAyNTAsIDMyLCAyNTUsIDE1LCAyMzAsIDg1LCA1LCAKKyAgICAyMzYsIDEsIDUyLCAyNTAsIDM2LCAzNywgMjQ3LCAxNzAsIDUwLCA5NiwgNSwgMjM2LCAxLCAyMTUsIDIyNiwgMjMwLCAxODMsIAorICAgIDUsIDIzNiwgMSwgMjE1LCAyMjYsIDIzMCwgODUsIDUsIDIzNiwgMSwgMjE1LCAyMjYsIDIzNSwgMjA3LCAyMjQsIDE4MSwgCisgICAgMjIyLCAyNDMsIDIzNSwgMjA3LCAyMjQsIDE4MSwgMjEwLCAxNjAsIDE4OCwgMjIzLCA5MSwgMjQ5LCAyMTAsIDI1NCwgMTM1LCAKKyAgICAxNzcsIDI0OSwgMTY2LCAyMzUsIDIwMCwgMiwgMjQ3LCAxMjEsIDIxNCwgMTc2LCAyLCAyMzAsIDE4MywgNTAsIDIxNCwgCisgICAgMTc2LCAyLCAyMjYsIDEyNCwgMjM1LCAyMDAsIDIsIDIyNiwgMTI0LCAyMzUsIDIwMCwgMiwgMjMyLCAxNDcsIDI1NCwgMTE5LCAKKyAgICAyMTQsIDE3NiwgMiwgMjMyLCAxNDcsIDIyNiwgMTU5LCAyMTQsIDE3NiwgNzcsIDIzNSwgMTk5LCAyMzUsIDIwMCwgNzcsIAorICAgIDIxNCwgMTc1LCAyMTQsIDE3NiwgNzcsIDI1MiwgMTQyLCA3NywgMjM1LCAxOTksIDIzNSwgMjAwLCA3NywgMjUyLCAxNDIsIAorICAgIDc3LCAyMTQsIDE3NSwgMjE0LCAxNzYsIDI1MiwgMzEsIDIyLCAyMzUsIDY2LCAyLCAyMTQsIDE3NSwgMjM1LCAyMDAsIDI1MiwgCisgICAgMzEsIDIyLCAyMzUsIDY2LCAyLCAyMzUsIDE5OSwgMjUwLCAxLCAyMTQsIDE3NiwgMiwgMjIwLCAxMzQsIDI1MCwgMSwgMjM1LCAKKyAgICAyMDAsIDIsIDIyMCwgMTM0LCA1MiwgNDIsIDIzNSwgMTk5LCA1MiwgNDIsIDIxNCwgMTc1LCAyNTAsIDEsIDIxNCwgMTc2LCAKKyAgICAyLCAyMjAsIDEzNSwgMjIsIDIxOSwgNzgsIDIyNCwgMTgxLCAyMzIsIDE0NywgMjIsIDIsIDU5LCA0OCwgMjMyLCAxNDcsIAorICAgIDE3NywgMiwgNTksIDQ4LCA1MiwgMjMyLCAxNDcsIDI1NCwgMTE5LCA1MiwgMjMyLCAxNDcsIDIyNiwgMTU5LCAxMTMsIDIzNSwgCisgICAgMjAxLCAyMzIsIDE0NywgMjU0LCAxMTksIDExMywgMjM1LCAyMDEsIDIzMiwgMTQ3LCAyMjYsIDE1OSwgMjE5LCA4NiwgMjMzLCAKKyAgICA4NiwgMjI2LCAxNTksIDIxOSwgODYsIDIzMywgODYsIDI1NCwgMTE5LCAyMzIsIDE0NywgMTc3LCAyMjYsIDEyMiwgMjMyLCAKKyAgICAxNDcsIDI1NCwgMTE5LCAyMzIsIDE0NywgMjIsIDIsIDIzMCwgMjI1LCAyMTgsIDE0MCwgMjMyLCAxNDcsIDE3NywgMiwgCisgICAgMjMwLCAyMjUsIDIxOCwgMTQwLCAyMzIsIDE0NywgMjIsIDIsIDIwMywgMjQ4LCAxNTcsIDIzMiwgMTQ3LCAxNzcsIDIsIAorICAgIDIwMywgMjQ4LCAxNTcsIDIzMiwgMTQ3LCAyMiwgMiwgNTIsIDIyNiwgMTI0LCAyMzIsIDE0NywgMjIsIDIsIDIxNCwgMTgzLCAKKyAgICAyMzIsIDE0NywgMjIsIDIsIDUyLCAyMTQsIDE4MywgNCwgMjEzLCAyNTEsIDIsIDIxNCwgMTgzLCAyMzIsIDE0NywgMTc3LCAKKyAgICAyLCA1MiwgMjI2LCAxMjQsIDIzMiwgMTQ3LCAxNzcsIDIsIDUyLCAyMTQsIDE4MywgMjEwLCAxNjAsIDE4OCwgMjQ3LCAxMzAsIAorICAgIDI1NCwgODAsIDIxMCwgMTYwLCAxODgsIDIyMywgMTQ5LCAyNTQsIDgwLCAyNDUsIDk5LCA1LCAyLCA1OSwgNTEsIDI0MCwgCisgICAgMTA1LCAyLCA1OSwgNDgsIDIxNSwgMjEyLCAyMDMsIDI1MiwgMTQyLCAyLCA1MiwgNjcsIDkxLCAyMTUsIDIxMiwgMjAzLCAKKyAgICAyNTIsIDE0MiwgMiwgMjE1LCAyMTIsIDY3LCA5MSwgMjE2LCA5MCwgMjI2LCAxNjksIDIsIDU5LCA0OCwgMjE2LCA5MCwgCisgICAgMjI2LCAxNjksIDIsIDIyMiwgMjI5LCAyNDcsIDExOSwgMjE5LCAxNjMsIDIzMCwgMTgzLCAyMTksIDE2MiwgMjQ5LCAyMDAsIAorICAgIDIsIDU5LCA0OCwgMjQ1LCA5OSwgMiwgMjUzLCAyMTcsIDI1NCwgMTQ5LCAxMjgsIDIxNiwgNDMsIDIsIDI1MCwgMzIsIDI1NSwgCisgICAgMTUsIDI1NCwgNDksIDEyOCwgMTc3LCAxMjgsIDExMSwgMjQ1LCA5OSwgNSwgNzcsIDk2LCA1MCwgOTYsIDUsIDc3LCAyNDUsIAorICAgIDk5LCA1MCwgMjQ1LCA5OSwgNSwgNzcsIDIxNiwgOTAsIDIyNiwgMTY4LCA1MiwgMjQ5LCAyMjgsIDI0NSwgMTAwLCAxMTMsIAorICAgIDI0OSwgMTk1LCAyNDUsIDk5LCAyMTksIDE3NywgMTM0LCAyNDksIDE5NSwgMjQ1LCA5OSwgMjE5LCAxNzcsIDI0NSwgOTksIAorICAgIDUsIDIsIDExMywgMTcwLCA3NywgMjIsIDExMywgMTcwLCA1MSwgMjQ1LCA5NSwgMiwgMjQ0LCAxMiwgMTcwLCA0OCwgMjMzLCAKKyAgICAxNiwgMiwgMjUwLCAzNywgMjM1LCAyMTYsIDI0MiwgMTMxLCAyLCAyNTAsIDM3LCAyMzUsIDIxNiwgMjMzLCAxNiwgMiwgCisgICAgMjI0LCAxNCwgMTY0LCA0OCwgMjQyLCAxMzEsIDIsIDIyNCwgMTQsIDE2NCwgNDgsIDIzMywgMTYsIDE3NywgMjE5LCA5OCwgCisgICAgMTI4LCAxMTEsIDI0MiwgMTMxLCAxNzcsIDIxOSwgOTgsIDEyOCwgMTExLCAyMzMsIDE2LCAxNzcsIDIxOSwgOTgsIDEyOCwgCisgICAgMjE2LCA0MywgMiwgNTksIDIzNSwgMjE2LCAyNDIsIDEzMSwgMTc3LCAyMTksIDk4LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCAKKyAgICAyMzUsIDIxNiwgMjMzLCAxNiwgMTc3LCAyMTksIDk4LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCA0OCwgMjQyLCAxMzEsIDE3NywgCisgICAgMjE5LCA5OCwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDIzMywgMTYsIDE3NywgMjE5LCA5OCwgMTI4LCAyMTYsIDQzLCAyLCAKKyAgICA1OSwgNzcsIDIyMiwgMjUyLCAyNDIsIDEzMSwgMTc3LCAyMTksIDk4LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCA3NywgMjMzLCAKKyAgICA0NywgMjMzLCAxNiwgMTc3LCAyNTQsIDUwLCAyNDIsIDEzMSwgMTc3LCAyNTQsIDUwLCAyMzMsIDE2LCAyMiwgMjE5LCAxNTQsIAorICAgIDIyOCwgNTMsIDEyOCwgMTExLCAyNDIsIDEzMSwgMjIsIDIxOSwgMTU0LCAyMjgsIDUzLCAxMjgsIDExMSwgMjMzLCAxNiwgCisgICAgMjIsIDIyOCwgNTMsIDI1NCwgNTAsIDI0MiwgMTMxLCAyMiwgMjI4LCA1MywgMjU0LCA1MCwgMjMzLCAxNiwgNzcsIDI0NiwgCisgICAgMTEyLCAxMjgsIDc3LCAyNDIsIDEzMCwgMjQyLCAxMzEsIDc3LCAyNDYsIDExMiwgMTI4LCA3NywgMjMzLCAxNSwgMjMzLCAKKyAgICAxNiwgNzcsIDIxOSwgMTYzLCAxNzcsIDI0NSwgMTAwLCAyNDIsIDEzMSwgNzcsIDIxOSwgMTYzLCAxNzcsIDI0NSwgMTAwLCAKKyAgICAyMzMsIDE2LCA3NywgMjE5LCAxNjMsIDc3LCAyNDIsIDEzMCwgMjQyLCAxMzEsIDc3LCAyMTksIDE2MywgNzcsIDIzMywgMTUsIAorICAgIDIzMywgMTYsIDc3LCAyNDIsIDEzMSwgNzcsIDI0NiwgMTEyLCAyNDUsIDEwMCwgMjQyLCAxMzEsIDc3LCAyMzMsIDE2LCA3NywgCisgICAgMjQ2LCAxMTIsIDI0NSwgMTAwLCAyMzMsIDE2LCA3NywgMjE5LCA5OCwgMTI4LCA3NywgMjQyLCAxMzEsIDc3LCAyMTksIDk4LCAKKyAgICAyNDUsIDEwMCwgMjQyLCAxMzEsIDc3LCAyMTksIDk4LCAxMjgsIDc3LCAyMzMsIDE2LCA3NywgMjE5LCA5OCwgMjQ1LCAxMDAsIAorICAgIDIxOSwgOTgsIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDE1LCAyMTksIDk4LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAKKyAgICAxMzAsIDIxOSwgOTgsIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDE2LCAyLCA1OSwgMjM1LCAyMTYsIDIxOSwgOTgsIDEyOCwgCisgICAgMjE2LCA0MywgMTc3LCAyNDIsIDEzMSwgMiwgNTksIDIzNSwgMjE2LCAyNDYsIDExMiwgMTI4LCAyMTYsIDQzLCAxNzcsIAorICAgIDIzMywgMTUsIDI0NiwgMTEyLCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzAsIDI0NiwgMTEyLCAyMTksIDk4LCAxMjgsIAorICAgIDIxNiwgNDMsIDE3NywgMjMzLCAxNSwgMjQ2LCAxMTIsIDIxOSwgOTgsIDEyOCwgMjE2LCA0MywgMTc3LCAyNDIsIDEzMCwgCisgICAgMjE5LCAxNjMsIDE3NywgMjMzLCAxNSwgMjE5LCAxNjMsIDE3NywgMjQyLCAxMzAsIDIxOSwgMTYzLCA3NywgMjMzLCAxNiwgCisgICAgNzcsIDI0NSwgOTksIDUwLCAyMTksIDE2MywgNzcsIDI0MiwgMTMxLCA3NywgMjQ1LCA5OSwgNTAsIDUyLCAyMjksIDkyLCAKKyAgICAyMzMsIDE1LCA1MiwgMjI5LCA5MiwgMjQyLCAxMzAsIDUyLCAyMjksIDkyLCAyMzMsIDE2LCAyLCAyMTQsIDE4MywgMjQyLCAKKyAgICAxMzEsIDIyNiwgMTIyLCAyMzMsIDE1LCAyNDIsIDEzMSwgMjUyLCAzMSwgMjMzLCAxNSwgMjMzLCAxNiwgMjUwLCAxLCAyNTEsIAorICAgIDc5LCAyNDksIDkzLCAyNDIsIDEzMSwgMjUwLCAxLCAyNTEsIDc5LCAyNDksIDkzLCAyMzMsIDE2LCAyNTAsIDEsIDI1MSwgCisgICAgNzksIDI0OSwgOTQsIDc3LCAyMTksIDk4LCAyNDUsIDEwMCwgMjQyLCAxMzEsIDI1MCwgMSwgMjUxLCA3OSwgMjQ5LCA5NCwgCisgICAgNzcsIDIxOSwgOTgsIDI0NSwgMTAwLCAyMTksIDc5LCAyMTYsIDIwMSwgMjMzLCA4NCwgMjE2LCAyMDEsIDIxOSwgNzksIAorICAgIDIxNiwgMjAyLCAxNzcsIDEyOCwgMTExLCAyMzMsIDg0LCAyMTYsIDIwMiwgMTc3LCAxMjgsIDExMSwgMjQ1LCA5OSwgNSwgMiwgCisgICAgMjUxLCAxMDksIDQ4LCAyMjQsIDIwNCwgNzcsIDIxOSwgMTU0LCAyNDUsIDk5LCA1MCwgMjE4LCA1NywgNzcsIDIxOSwgMTU0LCAKKyAgICAyNDUsIDk5LCA1MCwgMjI0LCAyMDQsIDc3LCAyMTksIDE1NCwgMjI4LCA1MywgMTI4LCAxMTEsIDIxOCwgNTcsIDc3LCAyMTksIAorICAgIDE1NCwgMjI4LCA1MywgMTI4LCAxMTEsIDIyNCwgMjA0LCA3NywgMjQ1LCA5OSwgNTAsIDIxOCwgNTcsIDc3LCAyNDUsIDk5LCAKKyAgICA1MCwgMjI0LCAyMDQsIDc3LCAyMjgsIDUzLCAxMjgsIDExMSwgMjE4LCA1NywgNzcsIDIyOCwgNTMsIDEyOCwgMTExLCAyMjQsIAorICAgIDIwNCwgNzcsIDI1NCwgMTQ5LCAxMjgsIDExMSwgMjE4LCA1NywgNzcsIDI1NCwgMTQ5LCAxMjgsIDExMSwgMjI0LCAyMDQsIAorICAgIDc3LCAyMjgsIDUzLCAyNTQsIDE0OSwgMTI4LCAxMTEsIDIxOCwgNTcsIDc3LCAyMjgsIDUzLCAyNTQsIDE0OSwgMTI4LCAKKyAgICAxMTEsIDUyLCAyMjQsIDIwMywgNTIsIDIxOCwgNTYsIDIxOCwgNjUsIDIsIDI0NywgMTIxLCAyMTgsIDIzLCAyLCAyNDcsIAorICAgIDEyMSwgMjE4LCA2NSwgMiwgOTYsIDUsIDUxLCAyMTgsIDIzLCAyLCA5NiwgNSwgNTEsIDIxOCwgNjUsIDIsIDIzMCwgODUsIAorICAgIDUsIDUxLCAyMTgsIDIzLCAyLCAyMzAsIDg1LCA1LCA1MSwgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAyMTYsIDQzLCAyLCA1OSwgCisgICAgNDgsIDIxOCwgMjMsIDY0LCAxNzcsIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAyMTgsIDY1LCA2NCwgNzcsIDI0NSwgOTksIAorICAgIDUwLCAyMTgsIDIzLCA2NCwgNzcsIDI0NSwgOTksIDUwLCAyMTgsIDY1LCA2NCwgNzcsIDIxNiwgOTAsIDIyNiwgMTY4LCAKKyAgICAyMTgsIDIzLCA2NCwgNzcsIDIxNiwgOTAsIDIyNiwgMTY4LCAyMTgsIDY1LCA2NCwgNzcsIDI1NCwgMTQ5LCAxMjgsIDExMSwgCisgICAgMjE4LCAyMywgNjQsIDc3LCAyNTQsIDE0OSwgMTI4LCAxMTEsIDIxOCwgNjUsIDY0LCA3NywgMjI4LCA1MywgMTI4LCAxMTEsIAorICAgIDIxOCwgMjMsIDY0LCA3NywgMjI4LCA1MywgMTI4LCAxMTEsIDQyLCA0MywgMjA0LCA5MywgMjI2LCAxNjgsIDQyLCA0NCwgCisgICAgMjA0LCA5MywgMjI2LCAxNjgsIDI1MCwgMSwgMjE4LCA2NCwgMjUwLCAxLCAyMTgsIDIyLCAyNTAsIDEsIDIxOCwgNjUsIAorICAgIDE3NywgMTI4LCAxMTEsIDI1MCwgMSwgMjE4LCAyMywgMTc3LCAxMjgsIDExMSwgMjE4LCA2NSwgNzcsIDIxOCwgMjIsIDIxOCwgCisgICAgMjMsIDc3LCAyMTgsIDY0LCAyMTgsIDY1LCA3NywgMjE4LCA2NCwgMjE4LCAyMywgNzcsIDIxOCwgMjIsIDIxOCwgMjMsIAorICAgIDI1MiwgMzEsIDIxOCwgNjQsIDIxOCwgMjMsIDI1MiwgMzEsIDIyLCAyMzUsIDY2LCAyNTEsIDc5LCAyNDgsIDE1OCwgMiwgCisgICAgMjE4LCA2NCwgMjQ1LCAxNzEsIDY0LCAyMjYsIDE3MSwgMjQ2LCAxMDQsIDIyNSwgNDksIDIsIDIxNywgMTMsIDIxNiwgMTQsIAorICAgIDIxNSwgMjQxLCAyMzUsIDE5OSwgMjQ0LCAyMiwgMjI4LCA2NiwgMjE5LCAyNTIsIDQzLCAyMTcsIDg4LCAyMTksIDI1MiwgCisgICAgMTI0LCAyMTcsIDg4LCAyMTksIDI1MiwgMTIwLCAyMTcsIDg4LCAyMjUsIDE3MywgMiwgMjIyLCA5MiwgNjcsIDI1MiwgMTQyLCAKKyAgICAyMTUsIDIxMiwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDIsIDQzLCAyMTUsIDkzLCA2NywgMjUyLCAxNDIsIDUyLCAKKyAgICA0MywgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MiwgNTIsIDQzLCAyMTUsIDkzLCAxOTksIDI0OCwgMTU4LCAyNDMsIDI0NCwgCisgICAgNDMsIDIzMSwgNjQsIDY0LCA1MiwgMjEzLCAyMzksIDIxOSwgMjUyLCAxMjQsIDIxNywgODksIDIsIDIyNiwgMTI0LCAyMTksIAorICAgIDI1MiwgMTIwLCAyMTcsIDg5LCAyLCAyMTQsIDE4MywgMjE5LCAyNTIsIDEyMCwgMjE3LCA4OSwgNzcsIDIxOSwgMjUyLCAKKyAgICAxMjQsIDIxNywgODgsIDUyLCAxMjQsIDIxNywgODgsIDUyLCAxMjAsIDIxNywgODgsIDUyLCAyMTgsIDEwNCwgMjI4LCA1MywgCisgICAgNTAsIDIyMywgNTAsIDUyLCAyMTgsIDEwNCwgMjI4LCA1MywgNTAsIDI0NywgMTM5LCAyMjgsIDUzLCAyNDcsIDE3NiwgMiwgCisgICAgMjIzLCA1MCwgMjI5LCAxMDIsIDIxOSwgOTYsIDY3LCAyMzIsIDIxNSwgMiwgMjUwLCAzNywgNDgsIDY3LCAyMzIsIDIxNSwgCisgICAgMiwgMjUwLCAzNywgNTEsIDEyNCwgMjE3LCA4OSwgMiwgMjUwLCAzNywgNTEsIDIyNiwgOSwgMiwgMjAzLCA5MSwgMjI2LCA5LCAKKyAgICAyLCAyMTYsIDkwLCAyMjYsIDE2OCwgMjE1LCAyMTIsIDY3LCAyNTIsIDE0MiwgMjUxLCAyNDUsIDIyMywgOTIsIDIxNSwgCisgICAgMjEyLCA2NywgMjUyLCAxNDIsIDIsIDIwMywgOTEsIDIxNSwgMjEyLCAyNDksIDIyOCwgMjI2LCAxNjgsIDIxNSwgMjEyLCAKKyAgICAyMjksIDkyLCAyMzMsIDE1LCAyMTUsIDIxMiwgMjI5LCA5MiwgMjQyLCAxMzAsIDI0NiwgMTEyLCAyMTksIDk4LCAyMzMsIAorICAgIDE2LCAxNzcsIDEyOCwgMTExLCAyNDYsIDExMiwgMjE5LCA5OCwgMjQyLCAxMzEsIDE3NywgMTI4LCAxMTEsIDIxNSwgMjEyLCAKKyAgICAyMTksIDQ4LCAyNTEsIDI0NSwgMjIzLCA5MiwgMjMzLCA4NiwgMjE1LCAyMTIsIDY3LCAyNTIsIDE0MiwgMjI2LCAxNjgsIAorICAgIDUyLCAyMTksIDQ4LCAyMjYsIDE2OCwgNzEsIDY3LCAxMzAsIDIzMCwgMjUsIDcxLCA2NywgMTMwLCAyMjgsIDU3LCAyNDUsIAorICAgIDIyMSwgNzEsIDc0LCAyMjgsIDU3LCAyMTIsIDksIDcxLCA3NCwgMjE5LCAyOSwgMjQ1LCAyMjEsIDcxLCA3NCwgMjE5LCAyOSwgCisgICAgMjEyLCA5LCA3MSwgNzQsIDQzLCA0NCwgNzEsIDc0LCAxNDAsIDg1LCA3NCwgMjE0LCAxNTMsIDg1LCA3NCwgMjQ2LCAxMDUsIAorICAgIDg1LCA3NCwgMjI4LCA1NywgMjQ1LCAyMjEsIDg1LCA3NCwgMjI4LCA1NywgMjEyLCA5LCA4NSwgNzQsIDIxOSwgMjksIDI0NSwgCisgICAgMjIxLCA4NSwgNzQsIDIxOSwgMjksIDIxMiwgOSwgODUsIDc0LCA0MywgNDQsIDg1LCA3NCwgMTIwLCAxMjQsIDg1LCA3NCwgCisgICAgOTcsIDgwLCAyLCAyMTYsIDc4LCAyNDYsIDEwNCwgOTcsIDgwLCAyLCAyMTYsIDc4LCAyMTQsIDE1MiwgMTQwLCA4MCwgMiwgCisgICAgMjE2LCA3OCwgMjQ2LCAxMDQsIDE0MCwgODAsIDIsIDIxNiwgNzgsIDIxNCwgMTUyLCA0MiwgMiwgMjE2LCAxNSwgMTYzLCAKKyAgICAyNTEsIDIyMiwgNDIsIDIsIDI1MSwgMTc2LCAxNjMsIDI1MSwgMjIyLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyNDgsIDAsIAorICAgIDE2MywgMjUxLCAyMjIsIDQyLCAyLCAyMzIsIDEwOSwgNDMsIDI0OCwgMCwgMTYzLCAyNTEsIDIyMiwgMjQ3LCAyNTAsIDIsIAorICAgIDQzLCAxNjMsIDI1MSwgMjIyLCAyNDcsIDI1MCwgMiwgNDQsIDE2MywgMjUxLCAyMjIsIDI0NywgMjUwLCAyLCAyMTYsIDE1LCAKKyAgICAxNjMsIDI1MSwgMjIyLCAyNDcsIDI1MCwgMiwgMjUxLCAxNzYsIDE2MywgMjUxLCAyMjIsIDI0NiwgMTE5LCAyMTgsIDIzNSwgCisgICAgODUsIDIzMywgODYsIDIxOCwgMjM1LCA3MSwgMjMzLCA4NiwgMjE4LCAyMzUsIDg1LCAyMTMsIDE4NywgNCwgMjE4LCAyMzUsIAorICAgIDcxLCAyMTMsIDE4NywgNCwgMjE4LCAyMzUsIDg1LCAyMjUsIDE5MSwgNzEsIDIyNSwgMTkxLCA3MSwgMjQxLCAxOTQsIDg1LCAKKyAgICAyNDEsIDE5NCwgMjAzLCA4NSwgMjQxLCAxOTQsIDg1LCAyMzMsIDg2LCAyNTAsIDM2LCA4NSwgMjMxLCA4MywgMjQ3LCAyNDksIAorICAgIDcxLCAyMzEsIDgzLCAyNDcsIDI0OSwgODUsIDIzMSwgODMsIDIzMiwgMTA1LCA3MSwgMjMxLCA4MywgMjMyLCAxMDUsIDg1LCAKKyAgICA0LCAyNDcsIDI0OSwgODUsIDQsIDIzMiwgMTA1LCA3MSwgNCwgMjMyLCAxMDUsIDg1LCAyMDMsIDI0NSwgMTY1LCA3MSwgCisgICAgMjAzLCAyNDUsIDE2NSwgODUsIDY3LCAyNDUsIDE2NSwgNzEsIDY3LCAyNDUsIDE2NSwgNDMsIDgwLCAyLCA0LCAyNTAsIDM2LCAKKyAgICAxMzQsIDE0MCwgMjUzLCAyNDgsIDQzLCA4MCwgMiwgMzcsIDIyNSwgMjMsIDE5OSwgMTQwLCAyMTgsIDIzMSwgNzQsIDE0MCwgCisgICAgMjE1LCA1OCwgODAsIDIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCAKKyAgICA4MCwgMjQzLCAyNDQsIDEzMCwgMTQwLCAyMTUsIDU4LCAyMTUsIDIxMiwgMjQ4LCAxNTgsIDc0LCAxNDAsIDgwLCAyLCAyNDYsIAorICAgIDExOSwgMjE4LCAxNDAsIDE0MCwgODAsIDIsIDIxNywgNzksIDIsIDY3LCA5MSwgMTQwLCA4MCwgMiwgMjE3LCA3OSwgMiwgCisgICAgNTIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OSwgCisgICAgMiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCAxNDAsIDgwLCAyMTYsIAorICAgIDE0MCwgMjExLCAxNzgsIDIxMiwgMzYsIDgwLCAyMjUsIDgsIDI0NywgMTk2LCAyMzMsIDQ3LCAyNDUsIDk5LCA1LCA3NywgCisgICAgMTQwLCA3NCwgMjIzLCA1MSwgMjE2LCA5MCwgMjI2LCAxNjksIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgMjIzLCA1MSwgCisgICAgMjU0LCAxNDksIDEyOCwgMTExLCA5NywgODAsIDIxNiwgMTQwLCAyNDIsIDEzMCwgOTcsIDgwLCAyMTYsIDE0MCwgMjE4LCAKKyAgICAyMiwgMTQwLCAyMjQsIDI1LCA3NCwgOTcsIDIyNCwgMjUsIDc0LCAyMjMsIDUxLCAyMTYsIDkwLCAyMjYsIDE2OSwgNzcsIAorICAgIDk3LCA3NCwgOTcsIDgwLCA3NywgMjIzLCA1MSwgMjU0LCAxNDksIDEyOCwgMTExLCAyMTYsIDkwLCAyMjYsIDE2OSwgNzcsIAorICAgIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAyNTQsIDE0OSwgMTI4LCAxMTEsIDE0MCwgODAsIDc3LCAyMjMsIDUxLCAyMTYsIDkwLCAKKyAgICAyMjYsIDE2OCwgOTcsIDgwLCA3NywgMjIzLCA1MSwgMjE2LCA5MCwgMjI2LCAxNjgsIDcxLCAyMzEsIDgzLCAyMTgsIDE1NywgCisgICAgODUsIDQsIDIxOCwgMTU3LCA3MSwgNCwgMjE4LCAxNTcsIDg1LCAyMjIsIDI0OCwgMjI1LCAxOTEsIDcxLCAyMjIsIDI0OCwgCisgICAgMjI1LCAxOTEsIDExNCwgMjMzLCA4NiwgMjUwLCAzNiwgMTE0LCAyMjYsIDEyNSwgMiwgMjI2LCAxMjUsIDIzNSwgMjE2LCAKKyAgICAxMTQsIDI1MCwgMzcsIDIsIDI1MCwgMzcsIDIzNSwgMjE2LCAxMTQsIDI1MCwgMzYsIDExNCwgMzcsIDIyMSwgMjU1LCAxNDUsIAorICAgIDYsIDEsIDI1MywgMTYwLCAxNDUsIDYsIDEsIDI1MSwgMTE4LCAxNDUsIDYsIDEsIDIxMywgMjUzLCAxNDUsIDYsIDEsIDI0MiwgCisgICAgMTg2LCAxNDUsIDYsIDEsIDI0NywgMTQxLCAxNDUsIDYsIDEsIDIxMSwgMjEsIDE0NSwgNiwgMSwgMjEwLCA2OCwgMTQ1LCA2LCAKKyAgICAxLCAyNDYsIDM1LCAxNDUsIDYsIDEsIDIxMCwgOTEsIDE0NSwgNiwgMSwgMjM1LCAxNDksIDE0NSwgNiwgMSwgNjUsIDIzNSwgCisgICAgMTQ5LCAxNDUsIDYsIDEsIDczLCAxNDUsIDYsIDEsIDI0NywgMTYxLCAxNDUsIDYsIDEsIDIzNCwgMjQxLCAxNDUsIDYsIDEsIAorICAgIDIzMiwgMTg3LCAxNDUsIDYsIDEsIDIzMCwgMzAsIDE0NSwgNiwgMSwgMjI5LCAxOTIsIDE0NSwgNiwgMSwgMjI2LCAxODYsIAorICAgIDE0NSwgNiwgMSwgMjI1LCA1LCAxNDUsIDYsIDEsIDIyMiwgMjI4LCAxNDUsIDYsIDEsIDIxOSwgODQsIDE0NSwgNiwgMSwgCisgICAgMjE1LCA4MSwgMTQ1LCA2LCAxLCAyMTQsIDIwMSwgMTQ1LCA2LCAxLCAyNDMsIDI0NywgMTQ1LCA2LCAxLCAyNDEsIDIwMCwgCisgICAgMTQ1LCA2LCAxLCAyMjYsIDEzNiwgMTQ1LCA2LCAxLCAyMjUsIDIyMiwgMTQ1LCA2LCAxLCAyMTksIDIyOSwgMTQ1LCA2LCAxLCAKKyAgICAyMTUsIDE2OCwgMTQ1LCA2LCAxLCAyNTAsIDc2LCAxNDUsIDYsIDEsIDIyMCwgMTAzLCAxNDUsIDYsIDEsIDIxMSwgMjcsIAorICAgIDE0NSwgNiwgMSwgMjExLCAyOSwgMTQ1LCA2LCAxLCAyMTEsIDU3LCAxNDUsIDYsIDEsIDIxOCwgMjU0LCAxNjIsIDE0NSwgNiwgCisgICAgMSwgMjEwLCAyMTIsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODQsIDIsIDIxNywgNzgsIAorICAgIDE0NSwgNiwgMSwgMjEwLCAyNDQsIDE0NSwgNiwgMSwgMjM1LCAxODUsIDQsIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDI1MSwgCisgICAgMjUwLCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyMzUsIDE4NSwgMjUxLCAyNTAsIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDI0NCwgCisgICAgODMsIDE0NSwgNiwgMSwgMjM1LCAxNDcsIDE0NSwgNiwgMSwgMjE5LCAyMjgsIDE0NSwgNiwgMSwgMjE1LCAyMDMsIDYxLCAKKyAgICAxNDUsIDYsIDEsIDIzMywgNzYsIDIzMCwgMzAsIDE0NSwgNCwgMSwgMjUzLCAxNjAsIDE0NSwgNCwgMSwgMjUxLCAxMTgsIAorICAgIDE0NSwgNCwgMSwgMjEzLCAyNTMsIDE0NSwgNCwgMSwgMjQyLCAxODYsIDE0NSwgNCwgMSwgMjQ3LCAxNDEsIDE0NSwgNCwgMSwgCisgICAgMjExLCAyMSwgMTQ1LCA0LCAxLCAyMTAsIDY4LCAxNDUsIDQsIDEsIDI0NiwgMzUsIDE0NSwgNCwgMSwgMjEwLCA5MSwgMTQ1LCAKKyAgICA0LCAxLCAyMzUsIDE0OSwgMTQ1LCA0LCAxLCA2NSwgMjM1LCAxNDksIDE0NSwgNCwgMSwgNzMsIDE0NSwgNCwgMSwgMjQ3LCAKKyAgICAxNjEsIDE0NSwgNCwgMSwgMjM0LCAyNDEsIDE0NSwgNCwgMSwgMjMyLCAxODcsIDE0NSwgNCwgMSwgMjMwLCAzMCwgMTQ1LCAKKyAgICA0LCAxLCAyMjksIDE5MiwgMTQ1LCA0LCAxLCAyMjYsIDE4NiwgMTQ1LCA0LCAxLCAyMjUsIDUsIDE0NSwgNCwgMSwgMjIyLCAKKyAgICAyMjgsIDE0NSwgNCwgMSwgMjE5LCA4NCwgMTQ1LCA0LCAxLCAyMTUsIDgxLCAxNDUsIDQsIDEsIDIxNCwgMjAxLCAxNDUsIDQsIAorICAgIDEsIDI0MywgMjQ3LCAxNDUsIDQsIDEsIDI0MSwgMjAwLCAxNDUsIDQsIDEsIDIyNiwgMTM2LCAxNDUsIDQsIDEsIDIyNSwgCisgICAgMjIyLCAxNDUsIDQsIDEsIDIxOSwgMjI5LCAxNDUsIDQsIDEsIDIxNSwgMTY4LCAxNDUsIDQsIDEsIDI1MCwgNzYsIDE0NSwgCisgICAgNCwgMSwgMjIwLCAxMDMsIDE0NSwgNCwgMSwgMjExLCAyNywgMTQ1LCA0LCAxLCAyMTEsIDI5LCAxNDUsIDQsIDEsIDIxMSwgCisgICAgNTcsIDE0NSwgNCwgMSwgMjE4LCAyNTQsIDE2MiwgMTQ1LCA0LCAxLCAyMTAsIDIxMiwgMTQ1LCA0LCAxLCA0LCAyMTAsIAorICAgIDE4MywgMTQ1LCA0LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3OCwgMTQ1LCA0LCAxLCAyMTAsIDI0NCwgMTQ1LCA0LCAxLCAKKyAgICAyMzUsIDE4NSwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjUxLCAyNTAsIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDIzNSwgCisgICAgMTg1LCAyNTEsIDI1MCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjQ0LCA4MywgMTQ1LCA0LCAxLCAyMzUsIDE0NywgMTQ1LCA0LCAKKyAgICAxLCAyMTksIDIyOCwgMTQ1LCA0LCAxLCAyMTUsIDIwMywgNjEsIDE0NSwgNCwgMSwgMjMzLCA3NiwgMjMwLCAzMCwgNywgNiwgCisgICAgMSwgMjMzLCAxNTAsIDIsIDUyLCAxMzAsIDcsIDQsIDEsIDIzMywgMTUwLCAyLCA1MiwgMTMwLCA3LCA2LCAxLCAyMzMsIAorICAgIDE1MCwgMiwgMjMwLCAyMjUsIDE4MywgNywgNiwgMSwgMjI2LCAxMDcsIDIsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNSwgMiwgCisgICAgMjE3LCA3OCwgNywgNCwgMSwgMTE1LCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgMCwgOTEsIDcsIDYsIDEsIAorICAgIDI0MiwgNjIsIDIsIDI0OCwgNDAsIDcsIDQsIDEsIDI0MiwgNjIsIDIsIDI0OCwgNDAsIDcsIDYsIDEsIDIzNSwgMjUsIDIsIAorICAgIDI0OCwgNDAsIDcsIDQsIDEsIDIzNSwgMjUsIDIsIDI0OCwgNDAsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDQwLCA3LCAKKyAgICA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ4LCA0MCwgNywgNiwgMSwgMjU0LCAxNDQsIDcsIDYsIDEsIDIzMiwgNTEsIDIsIDEwMywgCisgICAgNywgNiwgMSwgMjE1LCA5NCwgNjEsIDcsIDYsIDEsIDIxNSwgOTQsIDI1NCwgMTQ0LCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgCisgICAgNDQsIDEwMywgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTAzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIxNCwgMTA2LCAyLCAyNDksIDEwMSwgNywgNiwgMSwgMTYzLCAyNDIsIDYxLCA3LCA0LCAxLCAxNjMsIDI0MiwgNjEsIDcsIAorICAgIDQsIDEsIDIxNywgNzYsIDIyNSwgMTM0LCA3LCA0LCAxLCAxNjAsIDIsIDIyOCwgNTEsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgCisgICAgMjI1LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNDQsIDIsIDEyMSwgMjIyLCAyMzUsIDIzNSwgMjE2LCA3LCAxLCA0LCA2LCAKKyAgICAyMTUsIDk0LCA3NSwgNywgMjE4LCA2NiwgNCwgMSwgMjM1LCAxNDUsIDU4LCAxLCA2LCAyMTQsIDEwNSwgNywgNiwgMSwgCisgICAgMjIyLCA5MywgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgCisgICAgODEsIDYsIDEsIDI1NCwgMTY1LCA4MSwgNCwgMSwgMjU0LCAxNjUsIDgxLCA2LCAxLCAyMTMsIDE3MywgODEsIDQsIDEsIAorICAgIDIxMywgMTczLCA4MSwgNiwgMSwgMjQzLCAxMDgsIDgxLCA0LCAxLCAyNDMsIDEwOCwgODEsIDYsIDEsIDI0OCwgMTkyLCA4MSwgCisgICAgNCwgMSwgMjQ4LCAxOTIsIDgxLCA2LCAxLCAyNDUsIDE5NSwgODEsIDQsIDEsIDI0NSwgMTk1LCA4MSwgNiwgMSwgMjE5LCAKKyAgICAzNCwgODEsIDQsIDEsIDIxOSwgMzQsIDgxLCA2LCAxLCAyMTAsIDEwMSwgODEsIDQsIDEsIDIxMCwgMTAxLCA4MSwgNiwgMSwgCisgICAgMjQxLCAyNDksIDgxLCA0LCAxLCAyNDEsIDI0OSwgODEsIDYsIDEsIDIxNiwgMTc4LCA4MSwgNCwgMSwgMjE2LCAxNzgsIDgxLCAKKyAgICA2LCAxLCAyNDAsIDExNywgODEsIDQsIDEsIDI0MCwgMTE3LCA4MSwgNiwgMSwgMjM0LCAyMjgsIDgxLCA0LCAxLCAyMzQsIAorICAgIDIyOCwgODEsIDYsIDEsIDIzMywgNzMsIDgxLCA0LCAxLCAyMzMsIDczLCA4MSwgNiwgMSwgMjMwLCAyMzEsIDgxLCA0LCAxLCAKKyAgICAyMzAsIDIzMSwgODEsIDYsIDEsIDIyOCwgMjM0LCA4MSwgNCwgMSwgMjI4LCAyMzQsIDgxLCA2LCAxLCAyMzMsIDIzNCwgODEsIAorICAgIDQsIDEsIDIzMywgMjM0LCA4MSwgNiwgMSwgNzYsIDgxLCA0LCAxLCA3NiwgODEsIDYsIDEsIDIyNSwgMTA5LCA4MSwgNCwgMSwgCisgICAgMjI1LCAxMDksIDgxLCA2LCAxLCAyMjIsIDIxMiwgODEsIDQsIDEsIDIyMiwgMjEyLCA4MSwgNiwgMSwgMjE5LCAxNjYsIDgxLCAKKyAgICA0LCAxLCAyMTksIDE2NiwgODEsIDYsIDEsIDIxNywgNDIsIDgxLCA0LCAxLCAyMTcsIDQyLCA4MSwgNiwgMSwgMjE0LCAyMjksIAorICAgIDgxLCA0LCAxLCAyMTQsIDIyOSwgODEsIDYsIDEsIDI0NCwgMTIyLCA4MSwgNCwgMSwgMjQ0LCAxMjIsIDgxLCA2LCAxLCAKKyAgICAyMzQsIDExMywgODEsIDQsIDEsIDIzNCwgMTEzLCA4MSwgNiwgMSwgMjI0LCAxNjIsIDgxLCA0LCAxLCAyMjQsIDE2MiwgODEsIAorICAgIDYsIDEsIDIyNiwgMTc5LCA4MSwgNCwgMSwgMjI2LCAxNzksIDgxLCA2LCAxLCAyNDcsIDI1NCwgMjU0LCAxNzEsIDgxLCA0LCAKKyAgICAxLCAyNDcsIDI1NCwgMjU0LCAxNzEsIDgxLCA2LCAxLCA1NSwgODEsIDI1NCwgMTk3LCA4MSwgNCwgMSwgNTUsIDgxLCAyNTQsIAorICAgIDE5NywgODEsIDYsIDEsIDI0OSwgMTE2LCAyNDUsIDE5NSwgODEsIDQsIDEsIDI0OSwgMTE2LCAyNDUsIDE5NSwgODEsIDYsIAorICAgIDEsIDI0NywgMjU0LCAyMzQsIDIyOCwgODEsIDQsIDEsIDI0NywgMjU0LCAyMzQsIDIyOCwgODEsIDYsIDEsIDI0NywgMjU0LCAKKyAgICAyMjgsIDIzNCwgODEsIDQsIDEsIDI0NywgMjU0LCAyMjgsIDIzNCwgODEsIDYsIDEsIDI0OSwgMTE2LCAyMjgsIDIzNCwgODEsIAorICAgIDQsIDEsIDI0OSwgMTE2LCAyMjgsIDIzNCwgODEsIDYsIDEsIDU1LCA4MSwgMjI2LCAxNzksIDgxLCA0LCAxLCA1NSwgODEsIAorICAgIDIyNiwgMTc5LCA4MSwgNiwgMSwgMjIxLCAyNDcsIDgxLCA0LCAxLCAyMjEsIDI0NywgODEsIDYsIDEsIDI0OSwgMTI5LCAKKyAgICAyMjAsIDU2LCA4MSwgNCwgMSwgMjQ5LCAxMjksIDIyMCwgNTYsIDgxLCA2LCAxLCA1NSwgODEsIDIyMCwgNTYsIDgxLCA0LCAKKyAgICAxLCA1NSwgODEsIDIyMCwgNTYsIDgxLCA2LCAxLCA1NSwgODEsIDI0NSwgNzYsIDgxLCA0LCAxLCA1NSwgODEsIDI0NSwgNzYsIAorICAgIDgxLCA2LCAxLCAyNTQsIDE4MywgMjM0LCAxMTgsIDgxLCA0LCAxLCAyNTQsIDE4MywgMjM0LCAxMTgsIDgxLCA2LCAxLCAKKyAgICAyNDcsIDI1NCwgMjQxLCA0NiwgODEsIDQsIDEsIDI0NywgMjU0LCAyNDEsIDQ2LCA4MSwgNiwgMSwgNTUsIDgxLCAyNDEsIAorICAgIDQ2LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDQ2LCA4MSwgNiwgMSwgNTUsIDgxLCAxNjIsIDgxLCA0LCAxLCA1NSwgODEsIAorICAgIDE2MiwgODEsIDYsIDEsIDIzMywgMTQ5LCAxNjIsIDgxLCA0LCAxLCAyMzMsIDE0OSwgMTYyLCA4MSwgNiwgMSwgNTUsIDgxLCAKKyAgICAyNDEsIDIxOCwgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCAyMTgsIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjUyLCA4MSwgNCwgCisgICAgMSwgNTUsIDgxLCAyNDEsIDI1MiwgODEsIDYsIDEsIDU1LCA4MSwgMjQzLCAxMDMsIDgxLCA0LCAxLCA1NSwgODEsIDI0MywgCisgICAgMTAzLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDcsIDE2NCwgODEsIDQsIDEsIDU1LCA4MSwgMjQ3LCAxNjQsIDgxLCA2LCAxLCAKKyAgICA1NSwgODEsIDIyMCwgMjMsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgMjMsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMDksIDIyMCwgCisgICAgMjMsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDksIDIyMCwgMjMsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMDksIDIyOSwgMjgsIDgxLCAKKyAgICA0LCAxLCA1NSwgMjI3LCAyMDksIDIyOSwgMjgsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMDksIDIyNywgMTQ5LCA4MSwgNCwgMSwgCisgICAgNTUsIDIyNywgMjA5LCAyMjcsIDE0OSwgODEsIDYsIDEsIDU1LCAyMjcsIDIwOSwgMjEyLCAzNywgODEsIDQsIDEsIDU1LCAKKyAgICAyMjcsIDIwOSwgMjEyLCAzNywgODEsIDE2LCAyMzQsIDI0NywgODEsIDE2LCAyMzAsIDIzMiwgMjIyLCAyMTIsIDgxLCAxNiwgCisgICAgMjI1LCAxMTAsIDIyMiwgMjEyLCA4MSwgMTYsIDIxOCwgMTQ4LCA4MSwgMTYsIDIxNywgNDMsIDIyMiwgMjEyLCA4MSwgMTYsIAorICAgIDIzNCwgMTE0LCAyMjIsIDIxMiwgODEsIDE2LCAyMjAsIDI0LCAyMTksIDE2NiwgODEsIDYsIDEsIDI0OSwgMTE2LCAyMjAsIAorICAgIDU2LCA4MSwgNCwgMSwgMjQ5LCAxMTYsIDIyMCwgNTYsIDgxLCA2LCAxLCAyNDksIDExNiwgMjQzLCAxMDMsIDgxLCA0LCAxLCAKKyAgICAyNDksIDExNiwgMjQzLCAxMDMsIDgxLCAzOCwgMjI4LCAyMzUsIDQ4LCA4MSwgMzgsIDIxOCwgMjQ4LCAyNTMsIDIyNSwgODEsIAorICAgIDM4LCAyMTgsIDI0OCwgMjMzLCAyMiwgODEsIDYsIDEsIDI1MSwgMjAwLCAyMzQsIDExOCwgODEsIDQsIDEsIDI1MSwgMjAwLCAKKyAgICAyMzQsIDExOCwgODEsIDU1LCAyMjcsIDIwOSwgMjQzLCAyMzAsIDIxOCwgMTMwLCA4MSwgNTUsIDIyNywgMjA5LCAyNDcsIAorICAgIDE5OCwgMjI0LCAxNCwgNzgsIDgxLCA1NSwgMjI3LCAyMDksIDIzNSwgMjM4LCAyMjQsIDE0LCA3OCwgODEsIDU1LCAyMjcsIAorICAgIDIwOSwgMjEzLCAyNDEsIDI0NywgMTczLCA4MSwgMjQ0LCAzLCAxMjMsIDI0MiwgMjgsIDgxLCAyNDMsIDIzMCwgMjE4LCAKKyAgICAxMzAsIDgxLCAyMzAsIDEyNSwgMjQ3LCAxNzMsIDk4LCA0LCAxLCAyNTQsIDEyNCwgOTgsIDQsIDEsIDI1MiwgMTUzLCA5OCwgCisgICAgNCwgMSwgMjQzLCAxMDcsIDk4LCA0LCAxLCAyNDcsIDEyOSwgOTgsIDQsIDEsIDI0NSwgMTUxLCA5OCwgNCwgMSwgMjEzLCAKKyAgICAxNjAsIDk4LCA0LCAxLCAyMTAsIDg5LCA5OCwgNCwgMSwgMjE3LCA2MSwgOTgsIDQsIDEsIDIzNiwgMCwgOTgsIDQsIDEsIAorICAgIDIzNCwgMjM1LCA5OCwgNCwgMSwgMjMzLCA4MiwgOTgsIDQsIDEsIDIzMSwgMTg2LCA5OCwgNCwgMSwgMjI5LCAxOTYsIDk4LCAKKyAgICA0LCAxLCAyMjYsIDE5NywgOTgsIDQsIDEsIDIyNiwgMTgsIDk4LCA0LCAxLCAyMTAsIDc4LCA5OCwgNCwgMSwgMjIzLCAxNzIsIAorICAgIDk4LCA0LCAxLCAyMjEsIDI0NCwgOTgsIDQsIDEsIDIxNywgNTEsIDk4LCA0LCAxLCAyMTQsIDE5MCwgOTgsIDQsIDEsIDIyNSwgCisgICAgMTQxLCA5OCwgNCwgMSwgMjM0LCAxMjIsIDk4LCA0LCAxLCAyNDIsIDI0MiwgOTgsIDQsIDEsIDIyNCwgNzQsIDk4LCA0LCAxLCAKKyAgICAyMjAsIDIxLCA5OCwgNCwgMSwgMjUwLCA5OCwgOTgsIDQsIDEsIDI1MSwgOCwgOTgsIDQsIDEsIDIzNSwgMTAxLCA5OCwgNCwgCisgICAgMSwgMjUwLCA0MSwgOTgsIDQsIDEsIDI1MCwgMTQ0LCA5OCwgNCwgMSwgMjExLCAxNjMsIDk4LCA0LCAxLCAyMzUsIDExMiwgCisgICAgOTgsIDQsIDEsIDI0MiwgNDQsIDk4LCA0LCAxLCAyNDEsIDIzOSwgOTgsIDQsIDEsIDI0MSwgMTc2LCA5OCwgNCwgMSwgMjEyLCAKKyAgICAyMiwgOTgsIDQsIDEsIDI0MiwgNSwgOTgsIDQsIDEsIDI0MSwgNjYsIDk4LCA0LCAxLCAyMTAsIDI0NiwgOTgsIDQsIDEsIAorICAgIDI1NCwgMjMzLCAyMTYsIDEwOSwgMSwgMTkxLCAyMTYsIDEwOSwgMSwgMjExLCA5OSwgMjE2LCAxMDksIDEsIDIxMSwgOTgsIAorICAgIDIxNiwgMTA5LCAxLCAyMTEsIDg4LCAyMTYsIDEwOSwgMSwgMjExLCA4NiwgMjE2LCAxMDksIDEsIDI1MiwgMzMsIDI1NSwgCisgICAgMTcsIDIxMSwgODEsIDIxNiwgMTA5LCAxLCAyMTEsIDgxLCAyMTYsIDEwOSwgMSwgMjExLCA5NiwgMjE2LCAxMDksIDEsIAorICAgIDIxMSwgOTMsIDIxNiwgMTA5LCAxLCAyMTEsIDk1LCAyMTYsIDEwOSwgMSwgMjExLCA5NCwgMjE2LCAxMDksIDEsIDIxMSwgCisgICAgMTIsIDIxNiwgMTA5LCAxLCAyMTEsIDkwLCAyMTYsIDEwOSwgMSwgMjExLCA3OSwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAKKyAgICAyMTEsIDc5LCAyMTYsIDEwOSwgMSwgMjExLCA3NiwgMjE2LCAxMDksIDEsIDIxMSwgODQsIDIxNiwgMTA5LCAxLCAyNTIsIAorICAgIDMzLCAyNTUsIDE3LCAyMTEsIDg0LCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgODQsIDIxNiwgMTA5LCAxLCAyMTEsIAorICAgIDgzLCAyMTYsIDEwOSwgMSwgMjExLCAxMDMsIDIxNiwgMTA5LCAxLCAyMTEsIDc3LCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIAorICAgIDIxMSwgNzcsIDIxNiwgMTA5LCAxLCAyMTEsIDY2LCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgNjYsIDIxNiwgMTA5LCAKKyAgICAxLCAyMTEsIDgsIDIxNiwgMTA5LCAxLCAyMTEsIDQ5LCAyMTYsIDEwOSwgMSwgMjU0LCAyMDgsIDIxMSwgNDksIDIxNiwgCisgICAgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA0OSwgMjE2LCAxMDksIDEsIDIxMSwgNzUsIDIxNiwgMTA5LCAxLCAyMTEsIDc0LCAKKyAgICAyMTYsIDEwOSwgMSwgMjExLCA3MSwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDg1LCAyMTYsIDEwOSwgMSwgMjE1LCAKKyAgICAxMTYsIDIxMSwgNjksIDIxNiwgMTA5LCAxLCAyMTEsIDY3LCAyMTYsIDEwOSwgMSwgMjEwLCAyMTIsIDIxNiwgMTA5LCAxLCAKKyAgICAyMTEsIDY0LCAyMTYsIDEwOSwgMSwgMjExLCA2MywgMjE2LCAxMDksIDEsIDIxMSwgODcsIDIxNiwgMTA5LCAxLCAyMTUsIAorICAgIDExNiwgMjExLCA4NywgMjE2LCAxMDksIDEsIDI1MywgMTY0LCAyMTEsIDg3LCAyMTYsIDEwOSwgMSwgMjExLCA2MiwgMjE2LCAKKyAgICAxMDksIDEsIDIxMSwgNjAsIDIxNiwgMTA5LCAxLCAyMTEsIDYxLCAyMTYsIDEwOSwgMSwgMjExLCA1OSwgMjE2LCAxMDksIDEsIAorICAgIDIxMSwgNTgsIDIxNiwgMTA5LCAxLCAyMTEsIDk3LCAyMTYsIDEwOSwgMSwgMjExLCA1NiwgMjE2LCAxMDksIDEsIDIxMSwgCisgICAgNTQsIDIxNiwgMTA5LCAxLCAyMTEsIDUzLCAyMTYsIDEwOSwgMSwgMjExLCA1MiwgMjE2LCAxMDksIDEsIDIxMSwgNTAsIAorICAgIDIxNiwgMTA5LCAxLCAyMTcsIDM1LCAyMTEsIDUwLCAyMTYsIDEwOSwgMSwgMjExLCA0OCwgMjE2LCAxMDksIDEsIDIxMSwgCisgICAgNDcsIDIxNiwgMTA5LCAxLCAyMTAsIDI0NCwgMjE2LCAxMDksIDU4LCAxLCAyMzMsIDEyNywgNzgsIDIxNiwgMTA5LCAyMjAsIAorICAgIDEzOSwgNzgsIDIxNiwgMTA5LCAxMTYsIDIzNSwgNjQsIDI5LCAzLCAyMzIsIDE1NiwgMjksIDMsIDIzMCwgMTYxLCAyOSwgMywgCisgICAgMjIyLCAyMTAsIDI5LCAzLCAyMTksIDU4LCAyOSwgMywgMjIwLCA3LCAyOSwgMywgMjUxLCAyMDUsIDI5LCAzLCAyMTYsIDQyLCAKKyAgICAyOSwgMywgMjQ5LCAyMzgsIDI5LCAzLCAyMjgsIDczLCAyOSwgMywgMjI3LCAxMzQsIDI5LCAzLCAyNDIsIDE4MSwgMjI3LCAKKyAgICAxLCAyOSwgMywgMjEwLCAyMiwgMjksIDMsIDI0NywgMTQ0LCAyOSwgMywgMjQ4LCAxMDUsIDI5LCAzLCAyMzUsIDY4LCAyOSwgCisgICAgMywgMjE2LCAxNTYsIDI5LCAzLCAyNTAsIDg2LCAyOSwgMywgMjI1LCAxMjEsIDI5LCAzLCAyMjUsIDE2LCAyOSwgMywgMjQzLCAKKyAgICAwLCAyOSwgMywgMjQyLCAyNTIsIDI5LCAzLCAyNDIsIDI1MywgMjksIDMsIDI0MiwgMjU0LCAyOSwgMywgMjE4LCAyMjQsIAorICAgIDI5LCAzLCAyMTgsIDE4MCwgMjksIDMsIDIxOCwgMTkzLCAyOSwgMywgMjE4LCAyMjMsIDI5LCAzLCAyMTgsIDE5NywgMjksIAorICAgIDMsIDIxOCwgMTk4LCAyOSwgMywgMjE4LCAxODUsIDI5LCAzLCAyNTAsIDIxNCwgMjksIDMsIDI1MCwgMTkzLCAyOSwgMywgCisgICAgMjUwLCAxOTUsIDI5LCAzLCAyNTAsIDIxMywgMjksIDMsIDI1MCwgMjExLCAyOSwgMywgMjUwLCAyMTIsIDI5LCAzLCAyNTAsIAorICAgIDE5NCwgMjksIDMsIDIwOSwgMjQzLCAyOSwgMywgMjA5LCAyMjEsIDI5LCAzLCAyMDksIDIzNCwgMjksIDMsIDIwOSwgMjQyLCAKKyAgICAyOSwgMywgMjA5LCAyMzcsIDI5LCAzLCAyMDksIDIzOCwgMjksIDMsIDIwOSwgMjI2LCAyOSwgMywgMjUwLCAyMDksIDI5LCAKKyAgICAzLCAyNTAsIDE5NiwgMjksIDMsIDI1MCwgMTk4LCAyOSwgMywgMjUwLCAyMDgsIDI5LCAzLCAyNTAsIDIwNiwgMjksIDMsIAorICAgIDI1MCwgMjA3LCAyOSwgMywgMjUwLCAxOTcsIDI5LCAzLCAyMjMsIDIzNywgMjksIDMsIDIyMywgMjI3LCAyOSwgMywgMjIzLCAKKyAgICAyMzMsIDI5LCAzLCAyMjMsIDIzNiwgMjksIDMsIDIyMywgMjM0LCAyOSwgMywgMjIzLCAyMzUsIDI5LCAzLCAyMjMsIDIzMiwgCisgICAgMjksIDMsIDIzMywgMTYwLCAyOSwgMywgMjMzLCAxNTIsIDI5LCAzLCAyMzMsIDE1NSwgMjksIDMsIDIzMywgMTU5LCAyOSwgCisgICAgMywgMjMzLCAxNTYsIDI5LCAzLCAyMzMsIDE1NywgMjksIDMsIDIzMywgMTUzLCAyOSwgMywgMjExLCAxMzAsIDI5LCAzLCAKKyAgICAyMTEsIDEyMCwgMjksIDMsIDIxMSwgMTI2LCAyOSwgMywgMjExLCAxMjksIDI5LCAzLCAyMTEsIDEyNywgMjksIDMsIDIxMSwgCisgICAgMTI4LCAyOSwgMywgMjExLCAxMjUsIDI5LCAzLCAyNDIsIDcyLCAyOSwgMywgMjQyLCA2MywgMjksIDMsIDI0MiwgNjYsIDI5LCAKKyAgICAzLCAyNDIsIDcxLCAyOSwgMywgMjQyLCA2OCwgMjksIDMsIDI0MiwgNjksIDI5LCAzLCAyNDIsIDY1LCAzOCwgMzMsIDEsIAorICAgIDI1MiwgNzYsIDM4LCAzMywgMSwgMjEzLCAyNTUsIDM4LCAzMywgMSwgMjQyLCAyMzcsIDM4LCAzMywgMSwgMjQ4LCA5MSwgCisgICAgMzgsIDMzLCAxLCAyMTAsIDc0LCAzOCwgMzMsIDEsIDIxMCwgOTQsIDM4LCAzMywgMSwgMTc2LCAzOCwgMzMsIDEsIDI0NSwgCisgICAgMTc1LCAzOCwgMzMsIDEsIDI0NSwgMTYwLCAzOCwgMzMsIDEsIDI0NSwgMTUxLCAzOCwgMzMsIDEsIDc2LCAzOCwgMzMsIDEsIAorICAgIDIyNSwgMjIyLCAzOCwgMzMsIDEsIDI0NSwgOTMsIDM4LCAzMywgMSwgMjQ1LCA4MywgMzgsIDMzLCAxLCAyMTcsIDIzLCAzOCwgCisgICAgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OSwgMzgsIDMzLCAxLCAyNTAsIDEzMiwgMzgsIDMzLCAxLCAyMjAsIAorICAgIDEwMywgMzgsIDMzLCAxLCAyMjAsIDY2LCAzOCwgMzMsIDEsIDI0NCwgODMsIDM4LCAzMywgMSwgMjQ1LCA4MiwgMzgsIDMzLCAKKyAgICAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDYxLCAzOCwgMzMsIDEsIDI0NywgMTYyLCAzOCwgMzMsIDEsIDIzMCwgMTQxLCAyMTQsIAorICAgIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTg0LCA2MSwgCisgICAgMzgsIDMzLCAxLCAyMzIsIDE5MywgMjEwLCAxODMsIDM4LCAzMywgMSwgMjUxLCAyNTAsIDIxMCwgMTgzLCAzOCwgMzMsIDEsIAorICAgIDIzNSwgMTg0LCAyNTEsIDI1MCwgMjEwLCAxODMsIDQ0LCAyNTQsIDExMSwgMjE4LCA2MSwgMjMxLCAxNTUsIDQ0LCAyNTQsIAorICAgIDExMSwgMjQ2LCAxMTksIDIxOCwgNjEsIDIzMSwgMTU1LCA0MywgMjE4LCA2MSwgMTI3LCA0NCwgMjE4LCA2MSwgMTI3LCA0MywgCisgICAgMjQ2LCAxMTksIDIxOCwgNjEsIDEyNywgNDQsIDI0NiwgMTE5LCAyMTgsIDYxLCAxMjcsIDIyMywgMTU4LCAyMzUsIDIwMywgCisgICAgMjMxLCAxNTUsIDIyMywgMTU4LCAyNDYsIDExOSwgMjM1LCAyMDMsIDIzMSwgMTU1LCAyNDYsIDExOSwgMjE1LCAyNDIsIAorICAgIDIzMSwgMTU1LCA0MywgMjE1LCAyNDIsIDEyNywgNDQsIDIxNSwgMjQyLCAxMjcsIDIyMywgMTU4LCAyMTgsIDIzNSwgNDMsIAorICAgIDIyMywgMTU4LCAyMjYsIDE5OSwgMTI3LCA0NCwgMjIzLCAxNTgsIDIyNiwgMTk5LCAxMjcsIDI0NSwgMjExLCAyNDksIDE1OSwgCisgICAgMjI2LCAxNCwgMjQ0LCAyMywgMjI2LCAxNCwgMjIzLCA1MCwgMjQ0LCAyMywgMjI2LCAxNCwgMjQwLCAxNjYsIDI0NiwgMTE5LCAKKyAgICAyMjYsIDI1MiwgMjQ2LCAxMDUsIDI1NCwgMTIwLCAyMTQsIDE1MywgMjU0LCAxMjAsIDI0NiwgMTE5LCAyMjIsIDI0OCwgCisgICAgMjU0LCAxMTAsIDUyLCAyMjYsIDI0OSwgMjQwLCAxNjksIDIzNSwgMTk0LCAyMzUsIDIwMiwgMjI2LCA2MCwgMjUxLCAxNTUsIAorICAgIDI0MCwgMTcwLCAyLCAyNDgsIDIsIDIxNiwgOTAsIDIsIDIyMiwgMjM1LCA0OCwgNDMsIDEyMSwgMjI2LCA2LCAxMjcsIDQ0LCAKKyAgICAxMjEsIDIyNiwgNiwgMTI3LCAyMTYsIDkwLCAyLCA1OSwgNDgsIDIxNiwgOTAsIDIsIDU5LCA1MSwgNDMsIDY3LCAyNTIsIAorICAgIDE0MiwgMiwgMjI0LCA4LCA0NCwgNjcsIDI1MiwgMTQyLCAyLCAyMjQsIDgsIDIxNiwgMTUsIDQzLCAxNjMsIDEyNywgMjE2LCAKKyAgICAxNSwgNDQsIDE2MywgMTI3LCAyNTEsIDE3NiwgNDMsIDE2MywgMTI3LCAyNTEsIDE3NiwgNDQsIDE2MywgMTI3LCA0MywgCisgICAgMjE5LCAxODgsIDEwNCwgMTI3LCA0NCwgMjE5LCAxODgsIDEwNCwgMTI3LCA0MywgNTIsIDIyNiwgNCwgNDQsIDUyLCAyMjYsIAorICAgIDQsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQxLCAxMjMsIDU5LCAxMTcsIDExMywgMTcwLCAyMjQsIDE0MSwgCisgICAgOTIsIDI0NCwgMTIsIDU5LCAyMjQsIDE0MSwgMjQ0LCA4MiwgNTksIDc4LCAyMjMsIDUwLCAyMjQsIDE0LCA3OCwgNjcsIAorICAgIDE4MywgMjIyLCAyMzUsIDIyNSwgMTEsIDIxMSwgMjA5LCAyMjAsIDEzOSwgMjMwLCAyMjUsIDI0NywgMTIxLCAyMTUsIDk0LCAKKyAgICAyNDksIDIyMCwgMjIzLCAxNTgsIDI0NywgMTIxLCAyMjMsIDE1OCwgMjQ5LCAyMjAsIDIxNSwgOTQsIDIyMCwgMTUxLCAyNDgsIAorICAgIDIwNywgMiwgNDMsIDI0MiwgMTA5LCAyNDgsIDIwNywgMiwgNDQsIDI0MiwgMTA5LCAyMTUsIDk0LCAyNDgsIDIwNiwgMjE2LCAKKyAgICAxNSwgMTYzLCAyMjEsIDE3NCwgNTAsIDIxNSwgNTksIDI0OCwgMTU3LCAyMTYsIDE0NCwgMjQ4LCAxNTcsIDksIDM0LCAyMjMsIAorICAgIDc3LCA5LCAzNCwgMjUwLCAxMSwgOSwgMzQsIDIyMSwgMTc3LCAxMTAsIDksIDM0LCAyMjEsIDE3NywgMTA1LCA5LCAzNCwgCisgICAgMjIxLCAxNzcsIDE1OCwgOSwgMzQsIDIyNSwgMTY4LCA5LCAzNCwgMjUxLCAxNjQsIDksIDM0LCAyMTcsIDkzLCA5LCAzNCwgCisgICAgMjM0LCAzNCwgMTEwLCA5LCAzNCwgMjM0LCAzNCwgMTA1LCA5LCAzNCwgMjQ3LCAxNzEsIDksIDM0LCAyMjEsIDE4MCwgOSwgCisgICAgMzQsIDQsIDExMCwgOSwgMzQsIDQsIDEwNSwgOSwgMzQsIDIzMywgOTgsIDExMCwgOSwgMzQsIDIzMywgOTgsIDEwNSwgOSwgCisgICAgMzQsIDIzMywgOTgsIDE1OCwgOSwgMzQsIDIzMywgOTgsIDE2MSwgOSwgMzQsIDIxOSwgNjksIDksIDM0LCAyMTYsIDE0NiwgCisgICAgOSwgMzQsIDIxOSwgNjcsIDExMCwgOSwgMzQsIDIxOSwgNjcsIDEwNSwgOSwgMzQsIDI0MSwgMjI5LCAxMTAsIDksIDM0LCAKKyAgICAyNDEsIDIyOSwgMTA1LCA5LCAzNCwgMjQyLCAxNiwgOSwgMzQsIDIyMywgMTQ4LCA5LCAzNCwgMjUwLCA4MywgOSwgMzQsIAorICAgIDIxOCwgMzgsIDksIDM0LCAyMzAsIDEyOSwgOSwgMzQsIDI0OCwgODksIDksIDM0LCAyMzAsIDEyMSwgOSwgMzQsIDI1MCwgCisgICAgMjYsIDksIDM0LCAyMTIsIDQxLCAxMTAsIDksIDM0LCAyMTIsIDQxLCAxMDUsIDksIDM0LCAyNDQsIDk3LCA5LCAzNCwgMjI1LCAKKyAgICAyMzMsIDExMCwgOSwgMzQsIDIyNSwgMjMzLCAxMDUsIDksIDM0LCAyMTksIDE2MSwgMTYzLCAyMTUsIDIzNywgMjE1LCAxODksIAorICAgIDksIDM0LCAyNDksIDE0NiwgOSwgMzQsIDI0NywgMTM3LCA5LCAzNCwgMjM1LCAxMzgsIDksIDM0LCAyNTEsIDE5OSwgNjQsIAorICAgIDI0OSwgMjUxLCA5LCAzNCwgMjQ1LCAxNiwgOSwgMzQsIDIxOCwgMjUwLCAxMTAsIDksIDM0LCAyMTgsIDI1MCwgMTA1LCA5LCAKKyAgICAzNCwgMjUyLCAxNTUsIDksIDM0LCAyMTksIDE2OCwgOSwgMzQsIDI1MSwgNjQsIDIxOSwgMTY4LCA5LCAzNCwgMjI5LCA5MSwgCisgICAgMTEwLCA5LCAzNCwgMjI5LCA5MSwgMTA1LCA5LCAzNCwgMjI5LCA5MSwgMTU4LCA5LCAzNCwgMjI5LCA5MSwgMTYxLCA5LCAKKyAgICAzNCwgMjMxLCA0NywgOSwgMzQsIDIyMCwgNTgsIDksIDM0LCAyMjMsIDE1NCwgOSwgMzQsIDI0NSwgMzgsIDksIDM0LCAyMjYsIAorICAgIDIxMCwgOSwgMzQsIDI1MSwgMTM0LCAxMTAsIDksIDM0LCAyNTEsIDEzNCwgMTA1LCA5LCAzNCwgMjMxLCA4NywgOSwgMzQsIAorICAgIDIzMCwgMTI0LCA5LCAzNCwgMjQyLCAxNDEsIDExMCwgOSwgMzQsIDI0MiwgMTQxLCAxMDUsIDksIDM0LCAyNDIsIDE0MSwgCisgICAgMTU4LCA5LCAzNCwgMjE2LCAxMDcsIDksIDM0LCAyNDksIDI1MCwgOSwgMzQsIDIxMiwgOSwgMTEwLCA5LCAzNCwgMjEyLCA5LCAKKyAgICAxMDUsIDksIDM0LCAyNTEsIDY0LCAyMjEsIDE3MSwgOSwgMzQsIDIxOSwgMTYxLCAyNDAsIDI0OSwgOSwgMzQsIDI0MCwgCisgICAgMjQ5LCA5LCAzNCwgMjUxLCA2NCwgMjE5LCAzLCA5LCAzNCwgMjUxLCA2NCwgMjIwLCA1MywgOSwgMzQsIDI0NCwgMzMsIDksIAorICAgIDM0LCAyNTEsIDY0LCAyNTAsIDIyOSwgOSwgMzQsIDIxOSwgMTYxLCAyMTIsIDU3LCA5LCAzNCwgMjEyLCA1OCwgMTEwLCA5LCAKKyAgICAzNCwgMjEyLCA1OCwgMTA1LCA5LCAzNCwgMjUwLCAyOCwgOSwgMzQsIDI1MSwgNjQsIDI0MiwgMTY3LCA5LCAzNCwgMTk5LCAKKyAgICAxMTAsIDksIDM0LCAxOTksIDEwNSwgOSwgMzQsIDI1MSwgNjQsIDIzMiwgMTM4LCA5LCAzNCwgMjUxLCA2NCwgMjQzLCA4OSwgCisgICAgOSwgMzQsIDIzMCwgMTIwLCAxMTAsIDksIDM0LCAyMzAsIDEyMCwgMTA1LCA5LCAzNCwgMjIzLCAxNjAsIDksIDM0LCAyNTEsIAorICAgIDIwOCwgOSwgMzQsIDI1MSwgNjQsIDIxNywgNTcsIDIzMywgNTMsIDksIDM0LCAyNTEsIDY0LCAyMzMsIDU0LCA5LCAzNCwgCisgICAgMjUxLCA2NCwgMjExLCAyMzksIDksIDM0LCAyNTEsIDY0LCAyNDQsIDQ3LCA5LCAzNCwgMjQ1LCAyMTksIDExMCwgOSwgMzQsIAorICAgIDI0NSwgMjE5LCAxMDUsIDksIDM0LCAyNDUsIDIxOSwgMTU4LCA5LCAzNCwgMjUxLCA2NCwgMjQ1LCAyMTgsIDksIDM0LCAKKyAgICAyNDEsIDIzNiwgOSwgMzQsIDI1MSwgNjQsIDI0MCwgMjQ2LCA5LCAzNCwgMjUxLCAxOTUsIDksIDM0LCAyNDIsIDIyMywgOSwgCisgICAgMzQsIDI1MSwgNjQsIDI0NCwgOTEsIDksIDM0LCAyNTEsIDY0LCAyNTEsIDIzOCwgOSwgMzQsIDI1MSwgNjQsIDIyMiwgMiwgCisgICAgOSwgMzQsIDIxOSwgMTYxLCAyMTIsIDIsIDksIDM0LCAyMTksIDE2MSwgMjExLCA0MSwgOSwgMzQsIDI1MSwgNjQsIDI0MywgCisgICAgMjQ1LCA5LCAzNCwgMjM1LCAxNDQsIDI0NSwgNDIsIDksIDM0LCAyNTEsIDY0LCAyNDUsIDQyLCA5LCAzNCwgMjM1LCAxNDQsIAorICAgIDIxNiwgMTYsIDksIDM0LCAyNTEsIDY0LCAyMTYsIDE2LCA5LCAzNCwgMjM1LCAxNDQsIDI0NiwgOTcsIDksIDM0LCAyNTEsIAorICAgIDY0LCAyNDYsIDk3LCA5LCAzNCwgMjE1LCA5MSwgOSwgMzQsIDIzNSwgMTQ0LCAyMTUsIDkxLCA5LCAzNCwgMjUxLCA2NCwgCisgICAgMjE1LCA5MSwgNjAsIDM0LCAxMTAsIDYwLCAzNCwgMjMyLCAyMTQsIDYwLCAzNCwgMjQ3LCAxMjEsIDYwLCAzNCwgMjE5LCAKKyAgICA5NiwgNjAsIDM0LCAyMjEsIDE3NiwgNjAsIDM0LCAxMDMsIDYwLCAzNCwgMTA1LCA2MCwgMzQsIDIzMiwgMjM4LCA2MCwgMzQsIAorICAgIDIzMSwgMTg2LCA2MCwgMzQsIDIzMywgMzQsIDYwLCAzNCwgMjQ1LCAxMzAsIDYwLCAzNCwgMTk1LCA2MCwgMzQsIDEyNCwgCisgICAgMjUxLCAxNjQsIDYwLCAzNCwgMjQ5LCAxNDgsIDYwLCAzNCwgMjQwLCAxMTIsIDYwLCAzNCwgMjE3LCA5MywgNjAsIDM0LCAKKyAgICAyMDQsIDI1MSwgMTY0LCA2MCwgMzQsIDIzNCwgMzMsIDYwLCAzNCwgMjI0LCAyMjUsIDYwLCAzNCwgMjExLCAyMDIsIDYwLCAKKyAgICAzNCwgMjE4LCAyNDQsIDYwLCAzNCwgNDQsIDIwNCwgMjUxLCAxNjQsIDYwLCAzNCwgMjQxLCAxNzcsIDI0NSwgMTQ2LCA2MCwgCisgICAgMzQsIDIxNiwgMjQ4LCA2MCwgMzQsIDI0NywgMTcxLCA2MCwgMzQsIDIyMSwgMTgwLCA2MCwgMzQsIDI1MCwgMTEsIDYwLCAKKyAgICAzNCwgMjI0LCAxODMsIDYwLCAzNCwgMjU0LCAyMTYsIDYwLCAzNCwgMjMwLCAxMTEsIDYwLCAzNCwgMjQ1LCAxNDYsIDYwLCAKKyAgICAzNCwgMjQ1LCAyMjQsIDYwLCAzNCwgMjIxLCAyMDEsIDYwLCAzNCwgMjQyLCAxNzUsIDYwLCAzNCwgMjQyLCAxNzYsIDIxOSwgCisgICAgODIsIDYwLCAzNCwgMjQ1LCA0MSwgNjAsIDM0LCAyNTEsIDI0OSwgNjAsIDM0LCAyMTEsIDIyMSwgNjAsIDM0LCAyNTAsIAorICAgIDEwMiwgNjAsIDM0LCAyMjIsIDE5NywgNjAsIDM0LCAyMzUsIDI1MiwgNjAsIDM0LCAyMTksIDgwLCA2MCwgMzQsIDIzMywgCisgICAgOTcsIDYwLCAzNCwgMjQ5LCAxNTcsIDYwLCAzNCwgMjE4LCAyMzgsIDYwLCAzNCwgMjMwLCAxMTYsIDYwLCAzNCwgMjIyLCAKKyAgICAyMjUsIDYwLCAzNCwgMjExLCAyMDYsIDYwLCAzNCwgMjI2LCAxOTEsIDYwLCAzNCwgMjE1LCA5OCwgNjAsIDM0LCAyNDYsIAorICAgIDgxLCA2MCwgMzQsIDIxOSwgMjUyLCAyMTYsIDE0NiwgNjAsIDM0LCAyNDYsIDExOSwgMjUwLCAxMSwgNjAsIDM0LCAxOTksIAorICAgIDIxOCwgMTA5LCA2MCwgMzQsIDExMywgMjQyLCAxMSwgNjAsIDM0LCAyMjAsIDEsIDYwLCAzNCwgMjUxLCAxNzAsIDYwLCAzNCwgCisgICAgMjE5LCA2NiwgNjAsIDM0LCAyNTEsIDEzOCwgNjAsIDM0LCAyMTgsIDEzOSwgNjAsIDM0LCAyNDEsIDIyOCwgNjAsIDM0LCAKKyAgICAyNDIsIDI5LCA2MCwgMzQsIDI0NywgMTI0LCA2MCwgMzQsIDI0MiwgMTYsIDYwLCAzNCwgMjUxLCAxNTUsIDYwLCAzNCwgCisgICAgMjIzLCAxNDgsIDYwLCAzNCwgMjIxLCAxODgsIDYwLCAzNCwgMjQ3LCAyMDAsIDYwLCAzNCwgMjUzLCAxNjksIDYwLCAzNCwgCisgICAgMjE4LCAyMzUsIDYwLCAzNCwgMjI4LCA1MiwgNjAsIDM0LCAyMTgsIDM4LCA2MCwgMzQsIDIyMSwgMjEyLCA2MCwgMzQsIAorICAgIDIzMCwgMTI5LCA2MCwgMzQsIDIxNSwgMjM2LCA2MCwgMzQsIDIzMywgMTIzLCA2MCwgMzQsIDIxOCwgMTMwLCA2MCwgMzQsIAorICAgIDI0OCwgODksIDYwLCAzNCwgMjEyLCAyMSwgNjAsIDM0LCAyNDcsIDE0NywgMjI4LCA1MiwgNjAsIDM0LCAyNDksIDIxNiwgCisgICAgNjAsIDM0LCAyNDMsIDIyMywgNjAsIDM0LCAyNTAsIDIyLCA2MCwgMzQsIDIxOCwgMTQzLCA2MCwgMzQsIDIxMiwgNDAsIDYwLCAKKyAgICAzNCwgMjQ0LCA5NywgNjAsIDM0LCAyNTAsIDE5LCA2MCwgMzQsIDI0NCwgMTYyLCA2MCwgMzQsIDUyLCAyMTEsIDE3OCwgNjAsIAorICAgIDM0LCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgNjAsIDM0LCAyMTksIDkwLCA2MCwgMzQsIDI0NCwgMTcyLCA2MCwgMzQsIAorICAgIDI0OSwgMTQ2LCA2MCwgMzQsIDI0NywgMTM3LCA2MCwgMzQsIDIyNCwgMTgwLCA2MCwgMzQsIDIzNSwgMTM4LCA2MCwgMzQsIAorICAgIDIzMSwgNjgsIDYwLCAzNCwgMjE2LCA4OSwgNjAsIDM0LCAyMTcsIDI0NiwgNjAsIDM0LCAyMzIsIDIzMiwgNjAsIDM0LCAKKyAgICAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyMSwgNjAsIDM0LCAyNTEsIDE5OSwgNjQsIDI0OSwgMjUxLCA2MCwgMzQsIDIxOSwgCisgICAgMTg5LCA2MCwgMzQsIDI0NiwgMTE5LCAyMTYsIDI0MywgNjAsIDM0LCAyMTEsIDI1MywgNjAsIDM0LCAyMTksIDEwNCwgNjAsIAorICAgIDM0LCAyNDcsIDE4OCwgNjAsIDM0LCAyNDUsIDE2LCA2MCwgMzQsIDIxOSwgNiwgNjAsIDM0LCA3NCwgNjAsIDM0LCAyMTgsIAorICAgIDEzMiwgNjAsIDM0LCAyMTgsIDI0OSwgNjAsIDM0LCAyMTYsIDAsIDYwLCAzNCwgMjQyLCAxNDgsIDYwLCAzNCwgMjUwLCAKKyAgICAyMTksIDYwLCAzNCwgMjE4LCAxNjEsIDYwLCAzNCwgMjUyLCAxNTUsIDYwLCAzNCwgMjIzLCAzMiwgNjAsIDM0LCAyMTksIAorICAgIDE2OCwgNjAsIDM0LCAyMzUsIDEzMSwgNjAsIDM0LCAyMjksIDkwLCA2MCwgMzQsIDIyMCwgNTgsIDYwLCAzNCwgMjQ0LCAKKyAgICAxNTAsIDYwLCAzNCwgMjI2LCAyMTAsIDYwLCAzNCwgMjU0LCAxMTksIDYwLCAzNCwgMjI1LCAzMCwgNjAsIDM0LCAyNDUsIAorICAgIDIyOCwgNjAsIDM0LCAyNTEsIDEzMywgNjAsIDM0LCAyMzEsIDg3LCA2MCwgMzQsIDIzMCwgMTg0LCA2MCwgMzQsIDIyMCwgCisgICAgMTU3LCA2MCwgMzQsIDI1MywgMjUzLCA2MCwgMzQsIDIzMCwgMTI0LCA2MCwgMzQsIDIxNiwgMjAsIDYwLCAzNCwgMjI2LCAKKyAgICAxNjYsIDYwLCAzNCwgMjUxLCAyMDIsIDYwLCAzNCwgMjE4LCAxMjgsIDYwLCAzNCwgMjQ5LCAyMjYsIDYwLCAzNCwgMjQyLCAKKyAgICAxNDAsIDYwLCAzNCwgMjE2LCAxMDcsIDYwLCAzNCwgMjM1LCAyMTgsIDYwLCAzNCwgMjUxLCAyMTIsIDYwLCAzNCwgMjEyLCAKKyAgICA1OCwgMjQ1LCAxNDYsIDYwLCAzNCwgMjQ5LCAyNTAsIDYwLCAzNCwgMjEyLCA4LCA2MCwgMzQsIDIyMSwgMTcxLCA2MCwgMzQsIAorICAgIDI0MCwgMjQ5LCA2MCwgMzQsIDIxOSwgMywgNjAsIDM0LCAyMTQsIDIyLCA2MCwgMzQsIDI1MiwgNzMsIDYwLCAzNCwgMjI1LCAKKyAgICA3NCwgNjAsIDM0LCAyNTIsIDE3NSwgNjAsIDM0LCAyMjAsIDUzLCA2MCwgMzQsIDIyMywgMTExLCA2MCwgMzQsIDIyMiwgCisgICAgMTI3LCA2MCwgMzQsIDI0NCwgMzMsIDYwLCAzNCwgMjUxLCAyMDEsIDYwLCAzNCwgMjUwLCAyMjksIDYwLCAzNCwgMjUxLCAKKyAgICAyMjcsIDYwLCAzNCwgMjMwLCAxMjYsIDYwLCAzNCwgMjEyLCA1NywgNjAsIDM0LCAyNTAsIDI4LCA2MCwgMzQsIDIxMSwgCisgICAgMjM2LCA2MCwgMzQsIDI0NywgMTgxLCA2MCwgMzQsIDIxMywgMTYxLCA2MCwgMzQsIDI0MiwgMTY3LCA2MCwgMzQsIDIzMiwgCisgICAgMTM4LCA2MCwgMzQsIDI0MywgODksIDYwLCAzNCwgMjMwLCAxMTksIDYwLCAzNCwgMjE5LCA5NSwgNjAsIDM0LCAyMTksIAorICAgIDI1MiwgMjE3LCA3NywgMjUxLCAyMzgsIDYwLCAzNCwgMjIzLCAxNjAsIDYwLCAzNCwgMjUxLCAyMDgsIDYwLCAzNCwgMjExLCAKKyAgICAxOTcsIDYwLCAzNCwgMjQ0LCAxOTEsIDYwLCAzNCwgMjMzLCA1MywgNjAsIDM0LCAyMTcsIDU3LCAyMzMsIDUzLCA2MCwgMzQsIAorICAgIDIzMywgNDksIDYwLCAzNCwgMjE5LCAzMSwgNjAsIDM0LCAyMzMsIDU0LCA2MCwgMzQsIDIxMSwgMjM5LCA2MCwgMzQsIDI0NCwgCisgICAgNDcsIDYwLCAzNCwgMjQ1LCAyMTgsIDYwLCAzNCwgMjQxLCAyMzYsIDYwLCAzNCwgMjQ0LCAxLCA2MCwgMzQsIDI0MCwgMjQ2LCAKKyAgICA2MCwgMzQsIDI1MSwgMTk1LCA2MCwgMzQsIDIxNywgNjQsIDYwLCAzNCwgMjQyLCAzNSwgNjAsIDM0LCAyNDQsIDExNCwgNjAsIAorICAgIDM0LCAyMjIsIDI5LCAyMTEsIDIzNiwgNjAsIDM0LCAyNTAsIDIyMSwgNjAsIDM0LCAyNDIsIDIyMywgNjAsIDM0LCAyNDQsIAorICAgIDkxLCA2MCwgMzQsIDI1MSwgMjM4LCA2MCwgMzQsIDIyMiwgMiwgNjAsIDM0LCAyNDgsIDc1LCA2MCwgMzQsIDIxMiwgMiwgCisgICAgNjAsIDM0LCAyNDEsIDIxMSwgNjAsIDM0LCAyMTEsIDQxLCA2MCwgMzQsIDIzMCwgMTkzLCA2MCwgMzQsIDI1MSwgMjIyLCAKKyAgICA2MCwgMzQsIDI0NSwgMTU2LCA2MCwgMzQsIDI0MywgMjQ1LCA2MCwgMzQsIDIxNSwgMjEwLCA2MCwgMzQsIDI0NiwgODMsIAorICAgIDYwLCAzNCwgMjIzLCAxNDIsIDYwLCAzNCwgMjI4LCA1NCwgNjAsIDM0LCAyNDUsIDQyLCA2MCwgMzQsIDIxNiwgMTYsIDYwLCAKKyAgICAzNCwgMjQ2LCA5NywgNjAsIDM0LCAyMTUsIDkxLCA2MCwgMzQsIDI0NCwgNDksIDEwOSwgMjQ4LCAzOCwgMTM1LCA0MywgCisgICAgMjE2LCA0MywgMjIyLCAyNTIsIDEwOSwgMjQ4LCAzOCwgMTM1LCA3NywgMjE2LCA0MywgNTEsIDEwOSwgMjQ4LCAzOCwgMTM1LCAKKyAgICA0MywgMjE2LCA0MywgMjMwLCAyMjUsIDIyLCAyMjIsIDI1MiwgMTA5LCAyNDgsIDM4LCAxMzUsIDc3LCAyMTYsIDQzLCAyMzAsIAorICAgIDIyNSwgMjIsIDUxLCAxMDksIDI0OCwgMzgsIDEzNSwgMjQzLCAyMzAsIDIxOCwgMTEsIDEwOSwgMjQ4LCAzOCwgMTM1LCAKKyAgICAyMTgsIDEyLCAyNDMsIDI0NCwgNDgsIDEwOSwgMjQ4LCAzOCwgMTM1LCAyMTgsIDEyLCAyNDMsIDI0NCwgNTEsIDEwOSwgCisgICAgMjQ4LCAzOCwgMTM1LCAyMTgsIDEyLCAyNDMsIDI0NCwgMjMzLCA0NywgMTA5LCAyNDgsIDM4LCAxMzUsIDIxOCwgMTIsIAorICAgIDI0MywgMjQ0LCAyMTQsIDE2MCwgMjMzLCA0NywgMTA5LCAyNDgsIDM4LCAxMzUsIDIxOCwgMTIsIDI0MywgMjQ0LCAyMTQsIAorICAgIDE2MCwgMjIyLCAyNTIsIDEwOSwgMjQ4LCAzOCwgMTM1LCAyMTgsIDEyLCAyNDMsIDI0NCwgMjMyLCAxMDksIDIzMywgNDcsIAorICAgIDEwOSwgMjQ4LCAzOCwgMTM1LCAyMjYsIDEyMywgMTA5LCAyMTksIDE5LCAxMDksIDI0OSwgMjIwLCAxMDksIDI0MywgMjMwLCAKKyAgICAyMTgsIDEzMCwgMjQ3LCAxNzgsIDc4LCAyMzUsIDEzMiwgMjM1LCAyMzcsIDIxOCwgMTYwLCA4NywgMTA5LCAyMzUsIDE1OSwgCisgICAgNzgsIDEwOSwgMjQ5LCAyNTMsIDc4LCAxMDksIDU0LCAyMTAsIDg2LCA0MywgMjU0LCAxMTEsIDEyNywgNDQsIDI1NCwgMTExLCAKKyAgICAxMjcsIDQzLCA1MiwgMjU0LCAxMTEsIDEyNywgNDQsIDUyLCAyNTQsIDExMSwgMTI3LCA0MywgMjQ5LCAxNjIsIDEyNywgNDQsIAorICAgIDI0OSwgMTYyLCAxMjcsIDQzLCA3MSwgMjQ5LCAxNjIsIDEyNywgNDQsIDcxLCAyNDksIDE2MiwgMTI3LCA0MywgODUsIDIzMywgCisgICAgMjEsIDEyNywgNDQsIDg1LCAyMzMsIDIxLCAxMjcsIDIyNCwgMjM4LCA3OCwgMjQzLCAzMywgNzgsIDQzLCAyMTYsIDcsIAorICAgIDIyMCwgNTQsIDEyNywgNDQsIDIxNiwgNywgMjIwLCA1NCwgMTI3LCA0MywgNzEsIDIzMywgMjEsIDEyNywgNDQsIDcxLCAKKyAgICAyMzMsIDIxLCAxMjcsIDQzLCA3MSwgMjE2LCA3LCAyMjAsIDU0LCAxMjcsIDQ0LCA3MSwgMjE2LCA3LCAyMjAsIDU0LCAxMjcsIAorICAgIDQzLCA3MSwgNDIsIDEyNywgNDQsIDcxLCA0MiwgMTI3LCAyMTIsIDM2LCAyNDgsIDE1NywgMjIzLCA1MCwgNTIsIDIyNCwgCisgICAgMTkyLCAyMjMsIDI1NSwgNzgsIDUyLCAyMjQsIDE5MiwgMjIzLCAyNTUsIDc4LCAxMjEsIDUyLCAyMjQsIDE5MiwgMjIzLCAKKyAgICAyNTUsIDc4LCAyMjQsIDIzOCwgMTY0LCAyNDQsIDE5MSwgMjQyLCA5LCAyMjcsIDE5OSwgMTEwLCAyNDIsIDksIDIyNywgCisgICAgMTk5LCAxMDUsIDI0MiwgOSwgMjI3LCAxOTksIDE1OCwgMjQyLCA5LCAyMjcsIDE5OSwgMTYxLCAyNDIsIDksIDIyNywgMTk5LCAKKyAgICAxODksIDI0MiwgOSwgMjI3LCAxOTksIDE5NCwgMjQyLCA5LCAyMjcsIDE5OSwgMTk4LCAyNDIsIDksIDIyNywgMTk5LCAxOTUsIAorICAgIDI0MiwgOSwgMjI3LCAxOTksIDIwMCwgMTA5LCAyMzMsIDQsIDEzOCwgNzgsIDEwOSwgMjIyLCAyMjksIDEzOCwgNzgsIDEwOSwgCisgICAgMjQ4LCA0NSwgMTM4LCA3OCwgMTA5LCAyNDUsIDEyOSwgMTM4LCA3OCwgMjQsIDIxOSwgMTU2LCA1OSwgMTM4LCA3OCwgMjQsIAorICAgIDUyLCA1OSwgMTM4LCA3OCwgMjEyLCAzMiwgMjQ4LCAxNTcsIDY3LCAyMzQsIDIzNCwgMjIzLCA3OCwgNzgsIDY3LCAyMzQsIAorICAgIDIzNCwgMjIzLCA3OCwgMiwgMjEzLCAxMzUsIDIxOSwgMzIsIDc4LCA2NywgMjM0LCAyMzQsIDIyMywgNzgsIDE2NCwgMjE0LCAKKyAgICAxNjAsIDI0MiwgMjgsIDY3LCAyMzQsIDIzNCwgMjIzLCA3OCwgMiwgMjEzLCAxMzUsIDIxOSwgMzIsIDE2NCwgMjE0LCAxNjAsIAorICAgIDI0MiwgMjgsIDY3LCAyMzQsIDIzNCwgMjIzLCA3OCwgMTY0LCAyMzIsIDEwOSwgMjQyLCAyOCwgMzcsIDIyNCwgMjM4LCA3OCwgCisgICAgMTA5LCAyMTcsIDQsIDIzMiwgMjE1LCAyNDQsIDE0NywgMjIwLCAxMzksIDg3LCAyNDIsIDksIDIyNywgMTk5LCAyMTYsIAorICAgIDI0OCwgMjQyLCA5LCAyMjcsIDE5OSwgMjE1LCA3MywgMjQyLCA5LCAyMjcsIDE5OSwgMjE2LCAxNjMsIDY3LCAxMDksIDIzNSwgCisgICAgMTU5LCA3OCwgMjMxLCAxNDEsIDc4LCAyMjYsIDAsIDI1NCwgMTQxLCA3OCwgMTA5LCA0NSwgMjM1LCAyMzksIDEwOSwgMTYzLCAKKyAgICAyNDQsIDEwNywgMjE5LCAxOSwgMTQxLCAxLCA0LCA2MSwgMTQxLCAxLCA2MSwgMTQxLCAxLCA0LCA3MywgMTQxLCAxLCA3MywgCisgICAgMTQxLCAxLCA0LCA3MCwgMTQxLCAxLCA3MCwgMTQxLCAxLCA0LCA3NSwgMTQxLCAxLCA3NSwgMTQxLCAxLCA0LCA3NiwgMTQxLCAKKyAgICAxLCA3NiwgMTQxLCAxLCAxNzYsIDE0MSwgMSwgMjQzLCAxMzYsIDE0MSwgMSwgMjM0LCA5MywgMTQxLCAxLCAyNDIsIDIxNSwgCisgICAgMTQxLCAxLCAyMzMsIDIxOCwgMTQxLCAxLCAyNDIsIDExNCwgMTQxLCAxLCAyMzQsIDE4MywgMTQxLCAxLCAyNDMsIDYzLCAKKyAgICAxNDEsIDEsIDIzNCwgMjksIDE0MSwgMSwgMjQyLCAxNzUsIDE0MSwgMSwgMjA2LCAxNDEsIDEsIDIxMCwgMTE2LCAxNDEsIDEsIAorICAgIDIxOSwgMTkyLCAxNDEsIDEsIDIxMCwgNDQsIDE0MSwgMSwgMjE4LCA4NCwgMTQxLCAxLCAyMTAsIDEzLCAxNDEsIDEsIDIyMSwgCisgICAgMTgyLCAxNDEsIDEsIDIxMCwgOTQsIDE0MSwgMSwgMjE5LCA1OSwgMTQxLCAxLCAyMTAsIDIzLCAxNDEsIDEsIDIxNywgMTA2LCAKKyAgICAxNDEsIDEsIDI0OCwgMjIyLCAxNDEsIDEsIDIxNiwgMTE4LCAxNDEsIDEsIDI0OCwgNCwgMTQxLCAxLCA0LCAyMTUsIDExOSwgCisgICAgMTQxLCAxLCAyMTUsIDExOSwgMTQxLCAxLCAyNDYsIDc5LCAxNDEsIDEsIDIxNywgMjMsIDE0MSwgMSwgMjQ4LCA5MSwgMTQxLCAKKyAgICAxLCAxMTEsIDE0MSwgMSwgMjQ3LCAxNDYsIDE0MSwgMSwgMTk3LCAxNDEsIDEsIDIyOCwgMjM0LCAxNDEsIDEsIDIyNywgCisgICAgMjM4LCAxNDEsIDEsIDIyOSwgMTA4LCAxNDEsIDEsIDIyOCwgNzUsIDE0MSwgMSwgMTYyLCAxNDEsIDEsIDI1MiwgMTkyLCAKKyAgICAxNDEsIDEsIDE5MCwgMTQxLCAxLCAyNDEsIDE4MSwgMTQxLCAxLCAyNTIsIDcsIDE0MSwgMSwgMjI1LCAxMDksIDE0MSwgMSwgCisgICAgMjQwLCAyMjMsIDE0MSwgMSwgMjUxLCAxMjYsIDE0MSwgMSwgMjI0LCAxNTEsIDE0MSwgMSwgMjQxLCAyMzksIDE0MSwgMSwgCisgICAgMjUyLCA3NiwgMTQxLCAxLCAyMjUsIDIyMiwgMTQxLCAxLCAyNDEsIDY5LCAxNDEsIDEsIDI1MSwgMjA2LCAxNDEsIDEsIAorICAgIDIyNSwgMTcsIDE0MSwgMSwgMTg1LCAxNDEsIDEsIDIzMCwgMjMxLCAxNDEsIDEsIDIzMCwgMTAzLCAxNDEsIDEsIDIzMSwgCisgICAgOTIsIDE0MSwgMSwgMjMwLCAxNjIsIDE0MSwgMSwgNCwgMTkxLCAxNDEsIDEsIDE5MSwgMTQxLCAxLCA0LCAyMTAsIDIxMiwgCisgICAgMTQxLCAxLCAyMTAsIDIxMiwgMTQxLCAxLCA0LCAyMTAsIDI0NCwgMTQxLCAxLCAyMTAsIDI0NCwgMTQxLCAxLCAyMDUsIAorICAgIDE0MSwgMSwgMjIzLCAzNiwgMTQxLCAxLCAyMjIsIDE0MSwgMTQxLCAxLCAyMjMsIDEyOSwgMTQxLCAxLCAyMjIsIDIxMiwgCisgICAgMTQxLCAxLCA0LCAyMTIsIDY1LCAxNDEsIDEsIDIxMiwgNjUsIDE0MSwgMSwgMjExLCAyNTAsIDE0MSwgMSwgMjEyLCAyMiwgCisgICAgMTQxLCAxLCAyMTEsIDIyNywgMTQxLCAxLCAyMzAsIDI2LCAxNDEsIDEsIDIxMiwgMTE2LCAxNDEsIDEsIDQsIDE3NiwgMTQxLCAKKyAgICAxLCA0LCAyMzQsIDE4MywgMzgsIDIzNCwgMjAyLCAyMTMsIDEzNSwgMjE5LCAzMiwgNzgsIDM4LCAyMzQsIDIwMiwgMjIwLCAKKyAgICAxNTYsIDIxOSwgMzIsIDc4LCAyMzQsIDIwMiwgMjEzLCAxMzUsIDIxOSwgMzIsIDc4LCAyMzQsIDIwMiwgMjIwLCAxNTYsIAorICAgIDIxOSwgMzIsIDc4LCAxNDEsIDIzNSwgMTU5LCA3OCwgMTQxLCAyMTMsIDEzNSwgMjM1LCAxNTksIDc4LCAxNDEsIDI0NywgCisgICAgMjIyLCAyMTAsIDIyNSwgMjM0LCAyMDIsIDUyLCAyNDAsIDE2OSwgNTYsIDEsIDQsIDYxLCA1NiwgMSwgNjEsIDU2LCAxLCA0LCAKKyAgICA3MywgNTYsIDEsIDczLCA1NiwgMSwgNCwgNzAsIDU2LCAxLCA3MCwgNTYsIDEsIDQsIDc1LCA1NiwgMSwgNzUsIDU2LCAxLCAKKyAgICA0LCA3NiwgNTYsIDEsIDc2LCA1NiwgMSwgMTc2LCA1NiwgMSwgMjQzLCAxMzYsIDU2LCAxLCAyMzQsIDkzLCA1NiwgMSwgCisgICAgMjQyLCAyMTUsIDU2LCAxLCAyMzMsIDIxOCwgNTYsIDEsIDI0MiwgMTE0LCA1NiwgMSwgMjM0LCAxODMsIDU2LCAxLCAyNDMsIAorICAgIDYzLCA1NiwgMSwgMjM0LCAyOSwgNTYsIDEsIDI0MiwgMTc1LCA1NiwgMSwgMjA2LCA1NiwgMSwgMjEwLCAxMTYsIDU2LCAxLCAKKyAgICAyMTksIDE5MiwgNTYsIDEsIDIxMCwgNDQsIDU2LCAxLCAyMTgsIDg0LCA1NiwgMSwgMjEwLCAxMywgNTYsIDEsIDIyMSwgCisgICAgMTgyLCA1NiwgMSwgMjEwLCA5NCwgNTYsIDEsIDIxOSwgNTksIDU2LCAxLCAyMTAsIDIzLCA1NiwgMSwgMjE3LCAxMDYsIDU2LCAKKyAgICAxLCAyNDgsIDIyMiwgNTYsIDEsIDIxNiwgMTE4LCA1NiwgMSwgMjQ4LCA0LCA1NiwgMSwgNCwgMjE1LCAxMTksIDU2LCAxLCAKKyAgICAyMTUsIDExOSwgNTYsIDEsIDI0NiwgNzksIDU2LCAxLCAyMTcsIDIzLCA1NiwgMSwgMjQ4LCA5MSwgNTYsIDEsIDExMSwgNTYsIAorICAgIDEsIDI0NywgMTQ2LCA1NiwgMSwgMTk3LCA1NiwgMSwgMjI4LCAyMzQsIDU2LCAxLCAyMjcsIDIzOCwgNTYsIDEsIDIyOSwgCisgICAgMTA4LCA1NiwgMSwgMjI4LCA3NSwgNTYsIDEsIDE2MiwgNTYsIDEsIDI1MiwgMTkyLCA1NiwgMSwgMTkwLCA1NiwgMSwgMjQxLCAKKyAgICAxODEsIDU2LCAxLCAyNTIsIDcsIDU2LCAxLCAyMjUsIDEwOSwgNTYsIDEsIDI0MCwgMjIzLCA1NiwgMSwgMjUxLCAxMjYsIAorICAgIDU2LCAxLCAyMjQsIDE1MSwgNTYsIDEsIDI0MSwgMjM5LCA1NiwgMSwgMjUyLCA3NiwgNTYsIDEsIDIyNSwgMjIyLCA1NiwgMSwgCisgICAgMjQxLCA2OSwgNTYsIDEsIDI1MSwgMjA2LCA1NiwgMSwgMjI1LCAxNywgNTYsIDEsIDE4NSwgNTYsIDEsIDIzMCwgMjMxLCAKKyAgICA1NiwgMSwgMjMwLCAxMDMsIDU2LCAxLCAyMzEsIDkyLCA1NiwgMSwgMjMwLCAxNjIsIDU2LCAxLCA0LCAxOTEsIDU2LCAxLCAKKyAgICAxOTEsIDU2LCAxLCA0LCAyMTAsIDIxMiwgNTYsIDEsIDIxMCwgMjEyLCA1NiwgMSwgNCwgMjEwLCAyNDQsIDU2LCAxLCAyMTAsIAorICAgIDI0NCwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyMywgMzYsIDU2LCAxLCAyMjIsIDE0MSwgNTYsIDEsIDIyMywgMTI5LCA1NiwgMSwgCisgICAgMjIyLCAyMTIsIDU2LCAxLCA0LCAyMTIsIDY1LCA1NiwgMSwgMjEyLCA2NSwgNTYsIDEsIDIxMSwgMjUwLCA1NiwgMSwgMjEyLCAKKyAgICAyMiwgNTYsIDEsIDIxMSwgMjI3LCA1NiwgMSwgMjMwLCAyNiwgNTYsIDEsIDIxMiwgMTE2LCA1NiwgMSwgNCwgMTc2LCA1NiwgCisgICAgMSwgNCwgMjM0LCAxODMsIDU2LCAxLCAyMTQsIDI3LCA1NiwgMSwgMjEzLCAxNzYsIDU2LCAxLCAyMTMsIDI1NSwgNTYsIDEsIAorICAgIDIxMywgMTM4LCA1NiwgMjMwLCAyMjUsIDI0NywgMTIxLCAyMzQsIDIwMiwgMjI0LCAxNzQsIDIxOSwgMzIsIDc4LCA1NiwgCisgICAgMjM1LCAxNTksIDc4LCA1NiwgMjEzLCAxMzUsIDIzNSwgMTU5LCA3OCwgNTYsIDI0NywgMjIyLCAyMzQsIDAsIDI1MSwgMTg1LCAKKyAgICAxLCAyNTMsIDE1OSwgMjUxLCAxODUsIDEsIDIyNiwgMTA2LCAyNTEsIDE4NSwgMSwgMTkzLCAyNTEsIDE4NSwgMSwgMjQ1LCAKKyAgICA3LCAyNTEsIDE4NSwgMSwgMjQ5LCA2MSwgMjUxLCAxODUsIDEsIDIxNywgMTUzLCAyNTEsIDE4NSwgMSwgMjMwLCAyNiwgCisgICAgMjUxLCAxODUsIDEsIDE1NiwgMjUxLCAxODUsIDEsIDI0MywgMjAzLCAyNTEsIDE4NSwgMSwgMjM1LCAyNCwgMjUxLCAxODUsIAorICAgIDEsIDI0MiwgNjEsIDI1MSwgMTg1LCAxLCAyMzUsIDE0NSwgMjUxLCAxODUsIDEsIDIyNCwgOTcsIDI1MSwgMTg1LCAxLCAKKyAgICAyMTEsIDE3OCwgMjUxLCAxODUsIDEsIDIxMCwgODMsIDI1MSwgMTg1LCAxLCAyNTAsIDE1OSwgMjUxLCAxODUsIDEsIDIyMCwgCisgICAgMTA1LCAyNTEsIDE4NSwgMSwgMTUzLCAyNTEsIDE4NSwgMSwgMjEwLCAxNTksIDI1MSwgMTg1LCAxLCAyNTEsIDY3LCAyNTEsIAorICAgIDE4NSwgMSwgMjIyLCA5MiwgMjUxLCAxODUsIDEsIDYxLCAyNTEsIDE4NSwgMSwgNzYsIDI1MSwgMTg1LCAxLCA3NSwgMjUxLCAKKyAgICAxODUsIDEsIDI0NSwgMTk4LCAyNTEsIDE4NSwgMSwgMjU0LCAyMDIsIDI1MSwgMTg1LCAxLCAyNDUsIDE5NiwgMjUxLCAxODUsIAorICAgIDEsIDI1MywgMTkzLCAyNTEsIDE4NSwgMSwgMjI2LCAxMzUsIDI1MSwgMTg1LCAxLCAyNTQsIDEyNCwgMjUxLCAxODUsIDEsIAorICAgIDI0NSwgMTUxLCAyNTEsIDE4NSwgMSwgMjU0LCAxMTYsIDI1MSwgMTg1LCAxLCAyNDUsIDEzOSwgMjUxLCAxODUsIDEsIDI0NSwgCisgICAgOTMsIDI1MSwgMTg1LCAxLCA3MywgMjUxLCAxODUsIDEsIDcwLCAyNTEsIDE4NSwgMSwgMjM1LCAxNTcsIDI1MSwgMTg1LCAxLCAKKyAgICAyMTQsIDEwNSwgMjUxLCAxODUsIDEsIDIyOSwgODAsIDI1MSwgMTg1LCAxLCAyNDIsIDE3OSwgMjUxLCAxODUsIDEsIDIzNiwgCisgICAgMzUsIDI0LCAxLCAyMzQsIDU5LCAyNCwgMSwgMjE4LCAyMTYsIDI0LCAxLCAyMzQsIDUyLCAyNCwgMSwgMjI4LCAyMjcsIDI0LCAKKyAgICAxLCAyMjgsIDIyNSwgMjQsIDEsIDIyOCwgMjI0LCAyNCwgMSwgMjE2LCAxMDIsIDI0LCAxLCAyMTgsIDIwNSwgMjQsIDEsIAorICAgIDIyMywgMjcsIDI0LCAxLCAyMjMsIDIyLCAyNCwgMSwgMjIzLCAxOSwgMjQsIDEsIDIyMywgMTIsIDI0LCAxLCAyMjMsIDcsIAorICAgIDI0LCAxLCAyMjMsIDIsIDI0LCAxLCAyMjMsIDEzLCAyNCwgMSwgMjIzLCAyNSwgMjQsIDEsIDIzMCwgMjE4LCAyNCwgMSwgCisgICAgMjI1LCA5NiwgMjQsIDEsIDIxOCwgMjEzLCAyNCwgMSwgMjI1LCA4NSwgMjQsIDEsIDIxOSwgMTQ5LCAyNCwgMSwgMjE4LCAKKyAgICAyMTAsIDI0LCAxLCAyMzYsIDU3LCAyNCwgMSwgMjUwLCA0NywgMjQsIDEsIDIxOCwgMjIwLCAyNCwgMSwgMjUwLCAxMDcsIAorICAgIDI0LCAxLCAyMzQsIDExMSwgMjQsIDEsIDIxNiwgMTc0LCAyNCwgMSwgMjI1LCAxMzIsIDI0LCAxLCAyNDEsIDE3MywgMjQsIAorICAgIDEsIDYxLCAyNCwgMSwgMjU0LCAyNDQsIDI0LCAxLCAxOTEsIDI0LCAxLCAyMTEsIDkyLCAyNCwgMSwgMjQ1LCAxMTgsIDI0LCAKKyAgICAxLCA3NSwgMjQsIDEsIDIxMSwgMzYsIDI0LCAxLCAyMTEsIDQ3LCAyNCwgMSwgNzYsIDI0LCAxLCAyMTIsIDY1LCAyNCwgMSwgCisgICAgMjEyLCA2MiwgMjQsIDEsIDIyNiwgMjM1LCAyNCwgMSwgMjEwLCAyNDQsIDI0LCAxLCA3MCwgMjQsIDEsIDIxMiwgMTEsIDI0LCAKKyAgICAxLCAyMTIsIDIyLCAyNCwgMSwgMjExLCAyNTAsIDI0LCAxLCAyMTAsIDIxMiwgMjQsIDEsIDI0NSwgNTYsIDI0LCAxLCAyMTEsIAorICAgIDgsIDI0LCAxLCA3MywgMjQsIDI0NCwgMTA0LCAyNCwgMSwgMjE4LCAyMTQsIDI0LCAxLCAyMjgsIDIxNywgMjQsIDEsIDIyOCwgCisgICAgMjE5LCAyNCwgMSwgMjI4LCAyMjIsIDI0LCAxLCAyMjMsIDIwLCAyNCwgMSwgMjIzLCAxLCAyNCwgMSwgMjIzLCA5LCAyNCwgCisgICAgMSwgMjIzLCAxNCwgMjQsIDEsIDIyMiwgMjU1LCAyNCwgMSwgMjMwLCAyMTEsIDI0LCAxLCAyMzAsIDIwOCwgMjQsIDEsIAorICAgIDIzMCwgMjEyLCAyNCwgMSwgMjM0LCAyMjIsIDI0LCAxLCAyMjUsIDkxLCAyNCwgMSwgMjI1LCA3NywgMjQsIDEsIDIyNSwgCisgICAgODMsIDI0LCAxLCAyMjUsIDgwLCAyNCwgMSwgMjI1LCA5NCwgMjQsIDEsIDIyNSwgNzgsIDI0LCAxLCAyMzQsIDIyMCwgMjQsIAorICAgIDEsIDIzNCwgMjE4LCAyNCwgMSwgMjE5LCAxNDIsIDI0LCAxLCAyMTksIDE0MCwgMjQsIDEsIDIxOSwgMTMyLCAyNCwgMSwgCisgICAgMjE5LCAxMzcsIDI0LCAxLCAyMTksIDE0NywgMjQsIDEsIDIyNiwgMzMsIDI0LCAxLCAyMTgsIDIxNywgMjQsIDEsIDIxMSwgCisgICAgMjYsIDI0LCAxLCAyMTEsIDIyLCAyNCwgMSwgMjExLCAyMywgMjQsIDEsIDIzNCwgMjIxLCAyNCwgMSwgMjE4LCAyMTgsIDI0LCAKICAgICAxLCAyMTEsIDMyLCAyNCwgMSwgMjEwLCAyMzgsIDI0LCAxLCAyMTAsIDIzNywgMjQsIDEsIDIxMCwgMjQwLCAyNCwgMSwgCi0gICAgMjEwLCAyMDMsIDI0LCAxLCAyMTAsIDIwNCwgMjQsIDEsIDIxMCwgMjA3LCAyNCwgMSwgMjU0LCAzNCwgMjQsIDEsIDI1NCwgCi0gICAgMjgsIDEwOSwgMjU0LCA5OSwgMjMyLCAyMDMsIDc4LCAxMDksIDI1NCwgOTksIDIyMywgNTAsIDc4LCAxMDksIDI1NCwgOTksIAotICAgIDEyMywgNzgsIDEwOSwgMjU0LCA5OSwgMTEzLCA3OCwgMTA5LCAyNTQsIDk5LCAxMzQsIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgCi0gICAgMTEsIDc4LCAxMDksIDI1NCwgOTksIDIxNiwgMTQsIDc4LCAxMDksIDI1NCwgOTksIDIzMCwgMjI0LCA3OCwgMTA5LCAyNTQsIAotICAgIDk5LCAyNTEsIDE3NSwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCA5MiwgNzgsIDEwOSwgMjU0LCA5OSwgMjIxLCAxNzYsIDc4LCAKLSAgICAxMDksIDI1NCwgOTksIDIxNiwgMTY5LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIDQsIDc4LCAxMDksIDI1NCwgOTksIDI0MSwgCi0gICAgMjI0LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDUsIDIyNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjMxLCAxODYsIDc4LCAyNTEsIAotICAgIDE4NCwgMSwgMjUxLCAxMjUsIDI1MSwgMTg0LCAxLCAyMTAsIDQ0LCAyNTEsIDE4NCwgMSwgMjM1LCAxMDgsIDI1MSwgMTg0LCAKLSAgICAxLCAyNDIsIDExMywgMjUxLCAxODQsIDEsIDI0NSwgMjA5LCAyNTEsIDE4NCwgMSwgMjQ1LCAxMzUsIDI1MSwgMTg0LCAxLCAKLSAgICAyMjYsIDE4MywgMjUxLCAxODQsIDEsIDIyNiwgMTg3LCAyNTEsIDE4NCwgMSwgMjM1LCAxNzksIDI1MSwgMTg0LCAxLCAyNTQsIAotICAgIDEwMSwgMjUxLCAxODQsIDEsIDIzNSwgMjI0LCAyNTEsIDE4NCwgMSwgMjE0LCAxNjgsIDI1MSwgMTg0LCAxLCAyMzYsIDE2LCAKLSAgICAyNTEsIDE4NCwgMSwgMjI5LCA1NywgMjUxLCAxODQsIDEsIDI1NCwgMTk1LCAyNTEsIDE4NCwgMSwgMjUzLCAxODcsIDI1MSwgCi0gICAgMTg0LCAxLCAyNTQsIDEzNiwgMjUxLCAxODQsIDEsIDIyNiwgMjA0LCAyNTEsIDE4NCwgMSwgMjI2LCAxODksIDI1MSwgMTg0LCAKLSAgICAxLCAyMzUsIDIyMSwgMjUxLCAxODQsIDQwLCAxLCAyMjYsIDEwNSwgMjUxLCAxODQsIDQwLCAxLCAyMTcsIDE1MiwgMjUxLCAKLSAgICAxODQsIDQwLCAxLCAyMzUsIDIzLCAyNTEsIDE4NCwgNDAsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyNDIsIDI1MCwgCi0gICAgMjUxLCAxODQsIDEsIDIzMiwgMjU1LCAyNTEsIDE4NCwgMSwgMjA5LCAyNTAsIDksIDIxOCwgMTAzLCAyMTcsIDE1MiwgOSwgCi0gICAgMjE4LCAxMDMsIDIxMiwgNCwgOSwgMjE4LCAxMDMsIDIxMSwgMTU4LCA5LCAyMTgsIDEwMywgMjUxLCA3OSwgOSwgMjE4LCAKLSAgICAxMDMsIDIxNywgMjU0LCA5LCAyMTgsIDEwMywgMjQwLCAxNTgsIDksIDIxOCwgMTAzLCAyNDAsIDE2MiwgOSwgMjE4LCAxMDMsIAotICAgIDI0MCwgMjMxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTksIDksIDIxOCwgMTAzLCAyMTcsIDE1NSwgOSwgMjE4LCAxMDMsIDI0MCwgCi0gICAgMTYxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTcsIDksIDIxOCwgMTAzLCAyNDAsIDIyOSwgOSwgMjE4LCAxMDMsIDI0MCwgMTYwLCAKLSAgICA5LCAyMTgsIDEwMywgMjQwLCAxNTYsIDksIDIxOCwgMTAzLCAyMzAsIDI1LCA5LCAyMTgsIDEwMywgMjQyLCA2MCwgOSwgCi0gICAgMjE4LCAxMDMsIDIyMiwgOTEsIDksIDIxOCwgMTAzLCAyMjYsIDEwNSwgOSwgMjE4LCAxMDMsIDIxOSwgMjEsIDksIDIxOCwgCi0gICAgMTAzLCAyNDksIDYwLCA5LCAyMTgsIDEwMywgMjQwLCAxNjMsIDksIDIxOCwgMTAzLCAyNDEsIDE5MCwgOSwgMjE4LCAxMDMsIAotICAgIDIxNywgMTY0LCA5LCAyMTgsIDEwMywgMjE3LCAyMzMsIDksIDIxOCwgMTAzLCAyMTgsIDE2OCwgOSwgMjE4LCAxMDMsIDIyMCwgCi0gICAgMTEwLCA5LCAyMTgsIDEwMywgMjI1LCAyMjQsIDksIDIxOCwgMTAzLCAyMjQsIDk4LCA5LCAyMTgsIDEwMywgMjE2LCA0MywgCi0gICAgOSwgMjE4LCAxMDMsIDIxNywgMTU0LCA5LCAyMTgsIDEwMywgMjE3LCAyNDQsIDksIDIxOCwgMTAzLCAyNDAsIDE3MCwgOSwgCi0gICAgMjE4LCAxMDMsIDI0MCwgMTU1LCA5LCAyMTgsIDEwMywgMjI1LCAxNDksIDksIDIxOCwgMTAzLCAyMjQsIDk2LCA1NiwgMSwgCi0gICAgNCwgMjMzLCAyMTcsIDU2LCAxLCA0LCAyMTksIDE5MSwgNTYsIDEsIDQsIDIxOCwgODMsIDU2LCAxLCA0LCAxMTEsIDU2LCAxLCAKLSAgICA0LCAyMjcsIDIzNywgNTYsIDEsIDQsIDE2MiwgNTYsIDEsIDQsIDI0MSwgMTgwLCA1NiwgMSwgNCwgMjQwLCAyMjIsIDU2LCAKLSAgICAxLCA0LCAyNDEsIDIzOCwgNTYsIDEsIDQsIDI0MSwgNjgsIDU2LCAxLCA0LCAyMzAsIDEwMiwgNTYsIDEsIDQsIDIwNSwgNTYsIAotICAgIDEsIDQsIDIyMywgMzUsIDU2LCAxLCA0LCAyMjIsIDE0MCwgNTYsIDEsIDQsIDIyMywgMTI4LCA1NiwgMSwgNCwgMjIyLCAKLSAgICAyMTEsIDg4LCAyNCwgMjM0LCA1OCwgODgsIDI0LCAyMjgsIDIyNiwgODgsIDI0LCAyMTYsIDEwMSwgODgsIDI0LCAyMjMsIAotICAgIDI2LCA4OCwgMjQsIDIzMCwgMjE3LCA4OCwgMjQsIDIyNSwgOTUsIDg4LCAyNCwgMjE5LCAxNDgsIDg4LCAyNCwgMjM2LCA1NiwgCi0gICAgODgsIDI0LCAyNTAsIDQ2LCA4OCwgMjQsIDI1MCwgMTA2LCA4OCwgMjQsIDIzNCwgMTEwLCA4OCwgMjQsIDIxNiwgMTczLCAKLSAgICA4OCwgMjQsIDIyNSwgMTMxLCA4OCwgMjQsIDI0MSwgMTcyLCA4OCwgMjQsIDIzNCwgNTksIDYxLCA4OCwgMjQsIDIyOCwgCi0gICAgMjI3LCA2MSwgODgsIDI0LCAyMTYsIDEwMiwgNjEsIDg4LCAyNCwgMjIzLCAyNywgNjEsIDg4LCAyNCwgMjMwLCAyMTgsIDYxLCAKLSAgICA4OCwgMjQsIDIyNSwgOTYsIDYxLCA4OCwgMjQsIDIxOSwgMTQ5LCA2MSwgODgsIDI0LCAyMzYsIDU3LCA2MSwgODgsIDI0LCAKLSAgICAyNTAsIDQ3LCA2MSwgODgsIDI0LCAyNTAsIDEwNywgNjEsIDg4LCAyNCwgMjM0LCAxMTEsIDYxLCA4OCwgMjQsIDIxNiwgCi0gICAgMTc0LCA2MSwgODgsIDI0LCAyMjUsIDEzMiwgNjEsIDg4LCAyNCwgMjQxLCAxNzMsIDYxLCA4OCwgMjQsIDI1MCwgNDcsIDcwLCAKLSAgICA4OCwgMjM0LCAzLCAxMzUsIDIyNiwgMjE3LCA4OCwgMjM0LCAzLCAxMzUsIDE0NCwgMjQwLCAyMjIsIDg4LCAxNTQsIDExMCwgCi0gICAgODgsIDE1NCwgMTA1LCA4OCwgMTU0LCAxNTgsIDg4LCAxNTQsIDE2MSwgODgsIDE1NCwgMTg5LCA4OCwgMTU0LCAxOTQsIDg4LCAKLSAgICAxNTQsIDE5OCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAyMDAsIDg4LCAxNTQsIDIxNiwgMjQ3LCA4OCwgMTU0LCAyMzAsIAotICAgIDEyOCwgODgsIDE1NCwgMjQ0LCA5NiwgODgsIDE1NCwgMjEyLCA0MCwgODgsIDE1NCwgMjExLCAyMTQsIDg4LCAxNTQsIDIzMSwgCi0gICAgMzksIDg4LCAxNTQsIDI0NSwgMjIzLCA4OCwgMTU0LCAyMTgsIDM3LCA4OCwgMTU0LCAyMTgsIDEzMiwgODgsIDE1NCwgMjQxLCAKLSAgICAyNDQsIDg4LCAxNTQsIDIxOSwgNTQsIDg4LCAxNTQsIDIyOSwgMjA0LCA4OCwgMTU0LCAyMTksIDQsIDg4LCAxNTQsIDI0NCwgCi0gICAgMTAyLCA4OCwgMTU0LCAyNDksIDIwMCwgODgsIDE1NCwgMjMzLCAxMjUsIDg4LCAxNTQsIDIyMywgNzEsIDg4LCAxNTQsIAotICAgIDI1MSwgMTUsIDg4LCAxNTQsIDIxOCwgODcsIDg4LCAxNTQsIDIxOCwgMjAsIDg4LCAxNTQsIDI0NSwgMTI3LCA4OCwgMTU0LCAKLSAgICAyMjMsIDYzLCA4OCwgMTU0LCAyNTQsIDE1MCwgODgsIDE1NCwgMjQ0LCAxMjgsIDg4LCAxNTQsIDIyMywgNjEsIDg4LCAxNTQsIAotICAgIDIyMCwgMTU2LCA4OCwgMTU0LCAyMjMsIDEyNywgMzcsIDE1NCwgMjI0LCAxMiwgMzcsIDE1NCwgMjM0LCA4MCwgMzcsIDE1NCwgCi0gICAgMjIxLCAxOTgsIDM3LCAxNTQsIDIzMywgMjU1LCAzNywgNTQsIDIxNiwgMjQ4LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAKLSAgICAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjE2LCAxNjMsIDIyNiwgMTk3LCA4NSwgCi0gICAgMjE4LCAyMzQsIDM3LCA1NCwgMjQ0LCAxNiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDQsIDExNSwgMjI2LCAKLSAgICAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMTksIDExMiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMjAsIAotICAgIDExNywgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDUsIDE4NSwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgCi0gICAgMjI1LCAyNTEsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMCwgMzcsIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCAKLSAgICA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAyMTUsIDc0LCAxODksIDM3LCA1NCwgMjE1LCA3NCwgCi0gICAgMTk0LCAzNywgNTQsIDIxNSwgNzQsIDE5OCwgMzcsIDU0LCAyMTUsIDc0LCAxOTUsIDM3LCA1NCwgMjE1LCA3NCwgMjAwLCAKLSAgICAzNywgNTQsIDIxNiwgMTYyLCAzNywgNTQsIDIxNiwgMTYzLCAxMTAsIDM3LCA1NCwgMjE2LCAxNjMsIDEwNSwgMzcsIDU0LCAKLSAgICAyMTYsIDE2MywgMTU4LCAzNywgNTQsIDIxNiwgMTYzLCAxNjEsIDM3LCA1NCwgMjE2LCAxNjMsIDE4OSwgMzcsIDI0LCAyMzQsIAotICAgIDU4LCAzNywgMjQsIDIyOCwgMjI2LCAzNywgMjQsIDIxNiwgMTAxLCAzNywgMjQsIDIyMywgMjYsIDM3LCAyNCwgMjMwLCAKLSAgICAyMTcsIDM3LCAyNCwgMjI1LCA5NSwgMzcsIDI0LCAyMTksIDE0OCwgMzcsIDI0LCAyMzYsIDU2LCAzNywgMjQsIDI1MCwgNDYsIAotICAgIDM3LCAyNCwgMjUwLCAxMDYsIDM3LCAyNCwgMjM0LCAxMTAsIDM3LCAyNCwgMjE2LCAxNzMsIDM3LCAyNCwgMjI1LCAxMzEsIAotICAgIDM3LCAyNCwgMjQxLCAxNzIsIDM3LCAyNCwgMjM0LCA1OSwgNjEsIDM3LCAyNCwgMjI4LCAyMjcsIDYxLCAzNywgMjQsIDIxNiwgCi0gICAgMTAyLCA2MSwgMzcsIDI0LCAyMjMsIDI3LCA2MSwgMzcsIDI0LCAyMzAsIDIxOCwgNjEsIDM3LCAyNCwgMjI1LCA5NiwgNjEsIAotICAgIDM3LCAyNCwgMjE5LCAxNDksIDYxLCAzNywgMjQsIDIzNiwgNTcsIDYxLCAzNywgMjQsIDI1MCwgNDcsIDYxLCAzNywgMjQsIAotICAgIDI1MCwgMTA3LCA2MSwgMzcsIDI0LCAyMzQsIDExMSwgNjEsIDM3LCAyNCwgMjE2LCAxNzQsIDYxLCAzNywgMjQsIDIyNSwgCi0gICAgMTMyLCA2MSwgMzcsIDI0LCAyNDEsIDE3MywgNjEsIDM3LCAyMzQsIDMsIDEzNSwgMjUwLCAxNDgsIDM3LCAyMzQsIDMsIAotICAgIDEzNSwgMjM1LCA0NywgMzcsIDI0LCAyMzYsIDU3LCA3MCwgMjM0LCAzLCAyMTgsIDE1OSwgODcsIDM3LCAxNTQsIDExMCwgCi0gICAgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIDE1NCwgMTg5LCAzNywgMTU0LCAxOTQsIDM3LCAKLSAgICAxNTQsIDE5OCwgMzcsIDE1NCwgMTk1LCAzNywgMTU0LCAyMDAsIDM3LCAxNTQsIDIxNiwgMjQ3LCAzNywgMTU0LCAyMzAsIAotICAgIDEyOCwgMzcsIDE1NCwgMjQ0LCA5NiwgMzcsIDE1NCwgMjEyLCA0MCwgMzcsIDE1NCwgMjExLCAyMTQsIDM3LCAxNTQsIDIzMSwgCi0gICAgMzksIDM3LCAxNTQsIDI0NSwgMjIzLCAzNywgMTU0LCAyMTgsIDM3LCAzNywgMTU0LCAyMTgsIDEzMiwgMzcsIDE1NCwgMjQxLCAKLSAgICAyNDQsIDM3LCAxNTQsIDIxOSwgNTQsIDM3LCAxNTQsIDIyOSwgMjA0LCAzNywgMTU0LCAyMTksIDQsIDM3LCAxNTQsIDI0NCwgCi0gICAgMTAyLCAzNywgMTU0LCAyNDksIDIwMCwgMzcsIDE1NCwgMjMzLCAxMjUsIDM3LCAxNTQsIDIyMSwgMTc0LCAzNywgMTU0LCAKLSAgICAyMzEsIDE4OSwgMzcsIDE1NCwgMjQ0LCAxMzcsIDM3LCAxNTQsIDIxOCwgNDksIDM3LCAxNTQsIDI0NSwgMzQsIDM3LCAxNTQsIAotICAgIDIyNCwgMTg3LCAzNywgMTU0LCAyNTMsIDE5NiwgMzcsIDE1NCwgMjM1LCAxNTksIDM3LCAxNTQsIDIyMywgNjEsIDM3LCAKLSAgICAxNTQsIDI0OSwgMTY0LCAzNywgMTU0LCAyNDksIDE1NSwgMzcsIDE1NCwgMjQxLCAxNjUsIDM3LCAxNTQsIDI1MCwgMTc0LCAKLSAgICAzNywgMTU0LCAyMzIsIDExMCwgMzcsIDE1NCwgMjMzLCA0NiwgMzcsIDE1NCwgMjIyLCAyNTEsIDM3LCAxNTQsIDIzMSwgODMsIAotICAgIDM3LCAxNTQsIDIyMywgODcsIDM3LCAxNTQsIDIxOCwgODcsIDM3LCAxNTQsIDIxOCwgMjAsIDM3LCAxNTQsIDI0NSwgMTI3LCAKLSAgICAzNywgMTU0LCAyMjMsIDYzLCAzNywgMTU0LCAyNTQsIDE1MCwgMzcsIDE1NCwgMjI4LCAyMTIsIDM3LCA1NCwgMjE2LCAxNjMsIAotICAgIDE5NCwgMzcsIDU0LCAyMTYsIDE2MywgMTk4LCAzNywgNTQsIDIxNiwgMTYzLCAxOTUsIDM3LCA1NCwgMjE2LCAxNjMsIDIwMCwgCi0gICAgMzcsIDU0LCAyNDQsIDE1LCAzNywgNTQsIDI0NCwgMTYsIDExMCwgMzcsIDU0LCAyNDQsIDE2LCAxMDUsIDM3LCA1NCwgMjQ0LCAKLSAgICAxNiwgMTU4LCAzNywgNTQsIDI0NCwgMTYsIDE2MSwgMzcsIDU0LCAyNDQsIDE2LCAxODksIDM3LCA1NCwgMjQ0LCAxNiwgCi0gICAgMTk0LCAzNywgNTQsIDI0NCwgMTYsIDE5OCwgMzcsIDU0LCAyNDQsIDE2LCAxOTUsIDM3LCA1NCwgMjQ0LCAxNiwgMjAwLCAKLSAgICAzNywgNTQsIDI0NCwgMTE0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzUsIDEzMywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCi0gICAgMjQ0LCAxNDgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzMSwgMTYwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNTQsIDQ3LCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyMzEsIDEzMiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjM1LCA0NSwgMTA5LCAyMTcsIDMsIAotICAgIDE2LCAzMSwgMjM1LCA0NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjUzLCAxODgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyMCwgCi0gICAgMTM2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjYsIDIzOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjI4LCA0MCwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCA4NSwgNDIsIDI0MSwgMTkwLCA0MiwgMjQ1LCA4OCwgNDIsIDI0NSwgNDMsIDIzMiwgCi0gICAgMjE5LCAyMzIsIDI0MCwgNTAsIDM3LCA1NiwgNjEsIDM3LCA1NiwgNzMsIDM3LCA1NiwgNzAsIDM3LCA1NiwgNzUsIDM3LCAKLSAgICA1NiwgNzYsIDM3LCA1NiwgMTc2LCAzNywgNTYsIDIzNCwgOTIsIDM3LCA1NiwgMjMzLCAyMTcsIDM3LCA1NiwgMjM0LCAxODIsIAotICAgIDM3LCA1NiwgMjM0LCAyOCwgMzcsIDU2LCAyMDYsIDM3LCA1NiwgMjE5LCAxOTEsIDM3LCA1NiwgMjE4LCA4MywgMzcsIDU2LCAKLSAgICAyMjEsIDE4MSwgMzcsIDU2LCAyMTksIDU4LCAzNywgNTYsIDIxNywgMTA1LCAzNywgNTYsIDIxNiwgMTE3LCAzNywgNTYsIAotICAgIDIxNSwgMTE4LCAzNywgNTYsIDIxNywgMjIsIDM3LCA1NiwgMTExLCAzNywgNTYsIDE5NywgMzcsIDU2LCAyMjgsIDIzMywgCi0gICAgMzcsIDU2LCAyMjcsIDIzNywgMzcsIDU2LCAyMjksIDEwNywgMzcsIDU2LCAyMjgsIDc0LCAzNywgNTYsIDE2MiwgMzcsIDU2LCAKLSAgICAyNDEsIDE4MCwgMzcsIDU2LCAyNDAsIDIyMiwgMzcsIDU2LCAyNDEsIDIzOCwgMzcsIDU2LCAyNDEsIDY4LCAzNywgNTYsIAotICAgIDE4NCwgMzcsIDU2LCAyMzAsIDIzMCwgMzcsIDU2LCAyMzAsIDEwMiwgMzcsIDU2LCAyMzEsIDkxLCAzNywgNTYsIDIzMCwgCi0gICAgMTYxLCAzNywgNTYsIDE5MSwgMzcsIDU2LCAyMTAsIDIxMiwgMzcsIDU2LCAyMTAsIDI0NCwgMzcsIDU2LCAyMDUsIDM3LCAKLSAgICA1NiwgMjIzLCAzNSwgMzcsIDU2LCAyMjIsIDE0MCwgMzcsIDU2LCAyMjMsIDEyOCwgMzcsIDU2LCAyMjIsIDIxMSwgMzcsIAotICAgIDU2LCAyMTIsIDY1LCAzNywgNTYsIDIxMSwgMjUwLCAzNywgNTYsIDIxMiwgMjIsIDM3LCA1NiwgMjExLCAyMjcsIDQyLCAKLSAgICAyNTQsIDcxLCA0MiwgMjUzLCAyMzksIDQyLCAyNTQsIDk1LCA0MiwgMjU1LCAzMSwgNDIsIDIzNSwgMjI2LCA0MiwgMjM1LCAKLSAgICAxOTYsIDQyLCAyMTQsIDE2NiwgNDIsIDI0NSwgNjYsIDQyLCAyNDUsIDIwNiwgNDIsIDIyNiwgMTg2LCA0MiwgMjI2LCAxODAsIAotICAgIDQyLCAyMzQsIDI0NSwgNDIsIDIzNCwgMjE0LCA0MiwgMjM0LCAyMTEsIDQyLCAyNDMsIDkyLCA0MiwgMjQzLCAxMDEsIDQyLCAKLSAgICAyNDIsIDIwNCwgNDIsIDI0MiwgMjAwLCA0MiwgMjMzLCAxNTAsIDQyLCAyNDIsIDE5MywgNDIsIDIzNCwgNzIsIDQyLCAyMzQsIAotICAgIDcxLCA0MiwgMjM0LCA3MCwgNDIsIDIzNCwgNjksIDQyLCAyNDIsIDg2LCA0MiwgMjQyLCA4NSwgNDIsIDIzMywgMTkzLCA0MiwgCi0gICAgMjMzLCAxOTUsIDQyLCAyMzQsIDE3OCwgNDIsIDIzNCwgMSwgNDIsIDIzNCwgOCwgNDIsIDIyMiwgMTYsIDQyLCAyMjEsIAotICAgIDIzNywgNDIsIDIxOSwgMTI5LCA0MiwgMjIwLCAxNDEsIDQyLCAyMjAsIDE0MCwgNDIsIDI0OCwgMjE4LCA0MiwgMjQ4LCAzNiwgCi0gICAgNDIsIDI0NywgMTIxLCA0MiwgMjE2LCAzMiwgNDIsIDIyOSwgMjAwLCA0MiwgMjI4LCA0MSwgNDIsIDI0MiwgMzIsIDQyLCAKLSAgICAyMjYsIDg0LCA0MiwgMjI2LCA4MywgNDIsIDI1MiwgMTg4LCA0MiwgMjI1LCAxMDUsIDQyLCAyMjUsIDY5LCA0MiwgMjI1LCAKLSAgICA3MCwgNDIsIDI1MSwgMjM0LCA0MiwgMjQwLCAyMjEsIDQyLCAyNDAsIDIxNywgNDIsIDI1MSwgOTEsIDQyLCAyNDAsIDIwNCwgCi0gICAgNDIsIDI0MSwgMjE1LCA0MiwgMjI1LCAxNTksIDQyLCAyMjUsIDE5NCwgNDIsIDI0MSwgMTk4LCA0MiwgMjI1LCAxOTEsIDQyLCAKLSAgICAyMjUsIDIwNywgNDIsIDI1MiwgNjEsIDQyLCAyMjUsIDYsIDQyLCAyNTEsIDE4MCwgNDIsIDI0MSwgNTYsIDQyLCAyMjQsIAotICAgIDI1MCwgNDIsIDI0MSwgNDgsIDQyLCAyNDEsIDUwLCA0MiwgMjMxLCAyMDEsIDQyLCAyMzEsIDE5NywgNDIsIDIzMSwgMjA2LCAKLSAgICA0MiwgMjMxLCAxNTAsIDQyLCAyMzEsIDE3NSwgNDIsIDIzMCwgMTk3LCA0MiwgMjMwLCAxNzYsIDQyLCAyMzAsIDE3NSwgNDIsIAotICAgIDIzMSwgNzQsIDQyLCAyMzEsIDcxLCA0MiwgMjMxLCA3NSwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIAotICAgIDIwMSwgNDIsIDIyMiwgMjI2LCA0MiwgMjIyLCAyMzAsIDQyLCAyMjIsIDExNywgNDIsIDIyMiwgMTExLCA0MiwgMjIzLCA4NSwgCi0gICAgNDIsIDIyMywgODIsIDQyLCAyMTIsIDM4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjEwLCA4NiwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDExMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDEwNSwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE1OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE2MSwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE4OSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NCwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NSwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIwMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNiwgMjQ3LCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjQ1LCAxNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAKLSAgICAyMTUsIDc2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE2LCAxNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAotICAgIDI0MCwgMjM5LCAyNDQsIDUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDQsIDExOCwgMTA5LCAyMTcsIDMsIAotICAgIDE2LCAzMSwgMjQwLCAyMzksIDIxOSwgMTE5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjIwLCAxMTksIDEwOSwgCi0gICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDUsIDE5MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIyOCwgCi0gICAgMTk3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA3MywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAKLSAgICAyMzksIDIxNSwgNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDYzLCAxMDksIDIxNywgMywgMTYsIAotICAgIDMxLCAyNDAsIDIzOSwgMjE1LCA2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNjksIDQyLCAyNDAsIAotICAgIDIzMCwgNDIsIDI0OCwgMjIxLCA0MiwgMjUzLCAxOTIsIDQyLCAxMzAsIDQyLCAyMjYsIDEyNSwgNDIsIDIyNSwgMjI1LCA0MiwgCi0gICAgMjQ3LCAxNDcsIDQyLCAyNDcsIDE0OCwgMjE4LCAyMzMsIDQyLCAyNDcsIDE0OCwgMjQ5LCAxMDgsIDQyLCAyMzUsIDE1NiwgCi0gICAgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyNDEsIDIxNiwgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDE3NCwgNDIsIAotICAgIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDc0LCA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDIzMSwgNzAsIDQyLCAyNDksIDE1NywgCi0gICAgNDIsIDIyNiwgOTAsIDI1NCwgMTI1LCA0MiwgMTk3LCA0MiwgMjMwLCAxMDMsIDYxLCA0MiwgMTg0LCA0MiwgMTc2LCA0MiwgCi0gICAgMjM0LCAxODUsIDQyLCAyMzEsIDEyOSwgNDIsIDI0MywgODAsIDQyLCAyNTEsIDE4LCA0MiwgMjM0LCAxODQsIDQyLCAyMjUsIAotICAgIDE1MCwgNDIsIDIyOSwgODEsIDQyLCAyMzAsIDEwMywgMjQ1LCA2LCA0MiwgMjMwLCAxMDMsIDI0MywgMjAyLCA0MiwgMjMxLCAKLSAgICAxNSwgNDIsIDIzNCwgMTM0LCA0MiwgMjQwLCAxNjMsIDQyLCAyMzQsIDk0LCA0MiwgMjMwLCAyMzIsIDQyLCAyNDIsIDIxNiwgCi0gICAgNDIsIDIxNiwgMTE5LCA0MiwgMjMwLCAxMDMsIDE1NiwgNDIsIDIzMCwgMTY5LCA0MiwgMjQ3LCAxNTcsIDQyLCAyMzQsIDQwLCAKLSAgICA0MiwgMjQ0LCA0NSwgNDIsIDIyOCwgMTEyLCA0MiwgMjMwLCAxMDMsIDE5MywgNDIsIDIzMCwgMTY2LCA0MiwgMjQ5LCAyMzksIAotICAgIDQyLCAyMzQsIDM0LCA0MiwgMjMwLCAxNjcsIDIxOCwgMjMzLCA0MiwgMjQ5LCAyNDAsIDIxOCwgMjMzLCA0MiwgMjMyLCA1MCwgCi0gICAgMjE4LCAyMzMsIDQyLCAyMzQsIDM1LCAyMTgsIDIzMywgNDIsIDIzMCwgMTY3LCAyNDksIDEwOCwgNDIsIDI0OSwgMjQwLCAKLSAgICAyNDksIDEwOCwgNDIsIDIzMiwgNTAsIDI0OSwgMTA4LCA0MiwgMjM0LCAzNSwgMjQ5LCAxMDgsIDQyLCAyMzIsIDUwLCAxMTcsIAotICAgIDIyMiwgOTEsIDQyLCAyMzIsIDUwLCAxMTcsIDIyMiwgOTIsIDIxOCwgMjMzLCA0MiwgMTkwLCA0MiwgMjMzLCAyNTEsIDQyLCAKLSAgICAyMzAsIDEwNSwgNDIsIDI0MiwgMTUxLCA0MiwgMjIzLCAxNzYsIDQyLCAyMjMsIDE3NywgMTE3LCAyMjIsIDkxLCA0MiwgCi0gICAgMjIzLCAxNzcsIDExNywgMjIyLCA5MiwgMjE4LCAyMzMsIDQyLCAyMjQsIDE2MiwgNDIsIDIyOCwgMTMsIDQyLCAyMzAsIAotICAgIDEwMywgMjIyLCA5MSwgNDIsIDIzMCwgMTA0LCA0MiwgMjI0LCAxMTYsIDQyLCAyMjcsIDE3NiwgNDIsIDIzMCwgMTAzLCAKLSAgICAyMTQsIDEwNSwgNDIsIDIzMCwgNDksIDQyLCAyMzMsIDE4NSwgNDIsIDIzMCwgNTAsIDIzMSwgNzQsIDQyLCAyMjQsIDExNSwgCi0gICAgNDIsIDIyNywgMTc1LCA0MiwgMjMwLCAxMDMsIDIxMiwgOTgsIDQyLCAyMzAsIDQzLCA0MiwgMjMzLCAxODMsIDQyLCAyMzAsIAotICAgIDQ0LCAyMzEsIDc0LCA0MiwgMjM1LCAyNCwgMjI2LCAyMjAsIDQyLCAyMzIsIDUwLCAyMjYsIDIyMCwgNDIsIDI1NCwgMTM2LCAKLSAgICA0MiwgMjUxLCAxNjAsIDQyLCAyNTAsIDIxNCwgNDIsIDI1MCwgMTkxLCA0MiwgMjUxLCA2NywgMTE3LCAyMzQsIDEzNCwgNDIsIAotICAgIDI0OSwgMjM4LCA0MiwgMjQ4LCAxNDIsIDQyLCAyNDIsIDcyLCA0MiwgMTYyLCA0MiwgMjQwLCAyMzEsIDQyLCAyMzUsIDI1NSwgCi0gICAgNDIsIDIzNCwgNDcsIDQyLCAyMzQsIDM1LCAyNTAsIDI1MCwgNDIsIDIzMywgMjE5LCA0MiwgMjMyLCAxNTksIDQyLCAyMzIsIAotICAgIDE1OCwgNDIsIDIzMiwgMTQ3LCA0MiwgMjMyLCA2MywgNDIsIDIzMSwgMTMwLCAyMTksIDc5LCA0MiwgMjMwLCAxOTYsIDQyLCAKLSAgICAyMzAsIDE1MiwgNDIsIDIyNSwgMTQ4LCA0MiwgMjI1LCAxOSwgNDIsIDIyNCwgMjE5LCA0MiwgMjI0LCAyMTcsIDQyLCAyMTgsIAotICAgIDIyNywgNDIsIDIxOCwgMiwgNDIsIDIxMiwgMjQsIDQyLCAyMTQsIDEwNiwgMTE3LCAxOTMsIDQyLCAxMTUsIDExNywgMTkzLCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTEwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTA1LCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTU4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTYxLCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTg5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk0LCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk1LCAKLSAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjAwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE2LCAKLSAgICAyNDcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyNDUsIDE2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKLSAgICAxNDYsIDIxNSwgNzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2NCwgMTA5LCAyMTcsIDMsIDE2LCAKLSAgICAzMSwgMjQ4LCAxNDYsIDI0NCwgNSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NCwgMTE4LCAxMDksIDIxNywgCi0gICAgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE5LCAxMTksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMjAsIDExOSwgCi0gICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NSwgMTkwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgCi0gICAgMjI4LCAxOTcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDczLCAxMDksIDIxNywgMywgMTYsIDMxLCAKLSAgICAyNDgsIDE0NiwgMjE1LCA2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjMsIDEwOSwgMjE3LCAzLCAKLSAgICAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2OSwgMTA5LCAKLSAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNzAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIAotICAgIDY1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKLSAgICAxNDYsIDIxNSwgNzIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY4LCAxMDksIDIxNywgMywgMTYsIAotICAgIDMxLCAyNDgsIDE0NiwgMjE2LCAxNjIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2MSwgNDIsIDI0MywgCi0gICAgMTE4LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDksIDE0MCwgMjQxLCAyMjMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAotICAgIDIyMywgMTIyLCAyNDUsIDIyMywgMjQxLCAxOTIsIDMxLCAyNDcsIDIzMSwgMjUzLCAyMDcsIDIxNiwgMTk2LCAyNTIsIDU2LCAKLSAgICAyNDEsIDE5MiwgMzEsIDIxMCwgMjIzLCAyNDQsIDM4LCAyNDEsIDE5MiwgMzEsIDIxMiwgNTksIDI0MSwgMTkyLCAzMSwgCi0gICAgMjQ5LCAyMDMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1NCwgMywgMjQxLCAxOTIsIDMxLCAyNDEsIDYwLCAyMTYsIDM4LCAKLSAgICAyNDEsIDE5MiwgMzEsIDQsIDIxNywgNjEsIDI0MSwgMTkyLCAzMSwgMjE1LCAyMzcsIDI0MSwgMTkyLCAzMSwgMjI1LCAyMTksIAotICAgIDI0MSwgMTkyLCAzMSwgMjE4LCAxNTgsIDI0MSwgMTkyLCAzMSwgMjQ0LCAxMzksIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIAotICAgIDIyNCwgMjQwLCAyNDEsIDE5MiwgMzEsIDIzMCwgMTU1LCAyNDEsIDE5MiwgMzEsIDI0NSwgMTI2LCAyNDEsIDE5MiwgMzEsIAotICAgIDI0NCwgMzksIDI0MSwgMTkyLCAzMSwgMjExLCAyMDcsIDIyNiwgMTk3LCAyMTYsIDE5NiwgMjQ4LCA4NiwgMjQxLCAxOTIsIAotICAgIDMxLCAyNTQsIDUxLCAyNDEsIDE5MiwgMzEsIDI0OSwgMTg1LCAyNDEsIDE5MiwgMzEsIDI1MSwgMjI3LCAyMTYsIDEzOCwgCi0gICAgMjQxLCAxOTIsIDMxLCAyNDIsIDE0OSwgMjQxLCAxOTIsIDMxLCAyMTgsIDI0NSwgMjU0LCA3MCwgMjQxLCAxOTIsIDMxLCAKLSAgICAyMjMsIDUzLCAyNDEsIDE5MiwgMzEsIDIzNSwgMjIwLCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMTcsIDYxLCAyNDEsIAotICAgIDE5MiwgMzEsIDIzMCwgMTExLCAyNDksIDE1OSwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjI0LCAxOTcsIDI0MSwgMTkyLCAKLSAgICAzMSwgMjE2LCAxOTYsIDI1NSwgMTgsIDIxMiwgNDAsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MCwgOCwgMjQ0LCA5NiwgCi0gICAgMjQxLCAxOTIsIDMxLCAyMzUsIDIzMywgMjQxLCAxOTIsIDMxLCAyNDYsIDU3LCAyNDEsIDE5MiwgMzEsIDIyMywgNTYsIAotICAgIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIyNCwgMjI0LCAyNDEsIDE5MiwgMzEsIDIyNCwgMTc3LCAyNDEsIDE5MiwgMzEsIAotICAgIDI0OCwgMTYxLCA2NCwgMjE2LCAxOTYsIDIzMiwgMjMwLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDQsIDE3NCwgMjQxLCAKLSAgICAxOTIsIDMxLCAyMjYsIDE2MywgMjQxLCAxOTIsIDMxLCAyMjYsIDI0NCwgMjQxLCAxOTIsIDMxLCAyNDgsIDU5LCAyNDEsIAotICAgIDE5MiwgMzEsIDI0OCwgNzksIDI0MSwgMTkyLCAzMSwgMjM1LCAyNDcsIDI0MSwgMTkyLCAzMSwgMjUxLCAxNDksIDI0MSwgCi0gICAgMTkyLCAzMSwgMjQ5LCAyMjEsIDIxNiwgNDIsIDIzMSwgNzYsIDI0MSwgMTkyLCAzMSwgMjQzLCA4NywgMjE2LCAzOCwgMjQxLCAKLSAgICAxOTIsIDMxLCAyMjQsIDEyNSwgMjE0LCAxNTQsIDI0MSwgMTkyLCAzMSwgMjI2LCAxNjIsIDI0MSwgMTkyLCAzMSwgMjE2LCAKLSAgICAxOTYsIDIxMiwgMTMsIDI0MSwgMTkyLCAzMSwgMjIzLCA0NSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUwLCAyMjAsIAotICAgIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MywgMjU1LCAyMTYsIDEzMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjM0LCAKLSAgICAxNzksIDIxOCwgMTM0LCAyMzAsIDExNSwgMjQxLCAxOTIsIDMxLCAyNDgsIDMyLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAKLSAgICAyMzEsIDE1MiwgMjMxLCAyMDIsIDI0MSwgMTkyLCAzMSwgMjU1LCAxOSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjEyLCAKLSAgICA1NCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjQzLCA0NywgMjExLCAyMzksIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAotICAgIDIzNSwgNTIsIDIzMywgMTA3LCAyNDEsIDE5MiwgMzEsIDI0NywgMTg0LCAyNDEsIDE5MiwgMzEsIDIzMiwgMjIwLCAyNDEsIAotICAgIDE5MiwgMzEsIDIzNSwgMjIzLCAyMTUsIDE4NywgMjQxLCAxOTIsIDMxLCA0LCAyMjQsIDE5NywgMjQxLCAxOTIsIDMxLCAKLSAgICAyNTQsIDIxNywgMjQ5LCAyMTIsIDI0MSwgMTkyLCAzMSwgMjUyLCA1OSwgMjQ5LCAyMTIsIDgsIDMsIDIzNSwgMTYwLCA4LCAKLSAgICAzLCAyMzUsIDE1MywgOCwgMywgNzMsIDgsIDMsIDIzNSwgMTgyLCA4LCAzLCAyMzYsIDU4LCA4LCAzLCAyMzYsIDQxLCA4LCAKLSAgICAzLCAyMzYsIDYwLCA4LCAzLCAyMzYsIDU5LCA4LCAzLCAyNTMsIDIwNiwgOCwgMywgMjUzLCAxNjksIDgsIDMsIDYxLCA4LCAKLSAgICAzLCAyNTQsIDcyLCA4LCAzLCAyMTQsIDE2NCwgOCwgMywgMjE0LCAxNjcsIDgsIDMsIDIxNCwgMTY1LCA4LCAzLCAyMjYsIAotICAgIDE0MCwgOCwgMywgMjI2LCAxMTQsIDgsIDMsIDc2LCA4LCAzLCAyMjYsIDE3NSwgOCwgMywgMjQ1LCAzNSwgOCwgMywgNzUsIAotICAgIDgsIDMsIDIxMSwgMTk1LCA4LCAzLCAyNTEsIDIyOCwgOCwgMywgMjUxLCAyMjUsIDgsIDMsIDI1MiwgNiwgOCwgMywgMjUxLCAKLSAgICAyMzgsIDgsIDMsIDI1MSwgMjUxLCA4LCAzLCAyNTEsIDI1MCwgOCwgMywgMjUxLCAyNTMsIDgsIDMsIDI1MSwgMjUyLCA4LCAKLSAgICAzLCAyNTIsIDEyMSwgOCwgMywgMjUyLCAxMTMsIDgsIDMsIDI1MiwgMTkxLCA4LCAzLCAyNTIsIDE0MiwgOCwgMywgMjUxLCAKLSAgICAxMDEsIDgsIDMsIDI1MSwgMTA1LCA4LCAzLCAyNTEsIDEwMiwgOCwgMywgMjUxLCAxNzksIDgsIDMsIDI1MSwgMTYzLCA4LCAKLSAgICAzLCAyNTEsIDIwNSwgOCwgMywgMjUxLCAxODUsIDgsIDMsIDI1MiwgMjEsIDgsIDMsIDI1MiwgNzUsIDgsIDMsIDI1MiwgMzMsIAotICAgIDgsIDMsIDI1MSwgODcsIDgsIDMsIDI1MSwgODQsIDgsIDMsIDI1MSwgMTI1LCA4LCAzLCAyNTEsIDEwMCwgOCwgMywgMjUxLCAKLSAgICA5NCwgOCwgMywgMjUxLCA5OCwgOCwgMywgMjUxLCA3MiwgOCwgMywgMjUxLCA3MCwgOCwgMywgMjUxLCA3NywgOCwgMywgCi0gICAgMjUxLCA3NSwgOCwgMywgMjUxLCA3MywgOCwgMywgMjUxLCA3NCwgOCwgMywgMjI1LCA0OSwgOCwgMywgMjI1LCA0NSwgOCwgCi0gICAgMywgMjI1LCAxMDgsIDgsIDMsIDIyNSwgNTksIDgsIDMsIDIyNSwgNzUsIDgsIDMsIDIyNSwgMTAyLCA4LCAzLCAyMjUsIDk4LCAKLSAgICA4LCAzLCAyMjUsIDI0MCwgOCwgMywgMjI1LCAyMzAsIDgsIDMsIDE5MCwgOCwgMywgMjI2LCAyMSwgOCwgMywgMjI0LCAxMzUsIAotICAgIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEzNiwgOCwgMywgMjI0LCAyMzMsIDgsIDMsIDIyNCwgMjIyLCA4LCAzLCAKLSAgICAyMjUsIDE2LCA4LCAzLCAyMjQsIDI0NSwgOCwgMywgMjI0LCAxMjEsIDgsIDMsIDIyNCwgMTE3LCA4LCAzLCAyMjQsIDE1MCwgCi0gICAgOCwgMywgMjI0LCAxMzQsIDgsIDMsIDIyNCwgMTI2LCA4LCAzLCAyMjQsIDEzMiwgOCwgMywgMjI0LCAxMDAsIDgsIDMsIAotICAgIDIyNCwgOTksIDgsIDMsIDIyNCwgMTA0LCA4LCAzLCAyMjQsIDEwMywgOCwgMywgMjI0LCAxMDEsIDgsIDMsIDIyNCwgMTAyLCAKLSAgICA4LCAzLCAyNTIsIDk2LCA4LCAzLCAyNTIsIDk1LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCA5NywgOCwgMywgMjUyLCAKLSAgICA5OSwgOCwgMywgMjUyLCA5OCwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTAwLCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgCi0gICAgMjUyLCAxMDcsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAyNTIsIDEwOSwgOCwgMywgMjUyLCA4NywgOCwgMywgMjUyLCA4OSwgCi0gICAgOCwgMywgMjUyLCA4OCwgOCwgMywgMjUyLCA5MiwgOCwgMywgMjUyLCA5MSwgOCwgMywgMjUyLCA5NCwgOCwgMywgMjUyLCAKLSAgICA5MywgOCwgMywgMjUyLCAxMDMsIDgsIDMsIDI1MiwgMTA2LCA4LCAzLCAyNTIsIDEwNCwgOCwgMywgMjUyLCA4MywgOCwgMywgCi0gICAgMjUyLCA4MiwgOCwgMywgMjUyLCA5MCwgOCwgMywgMjUyLCA4NiwgOCwgMywgMjUyLCA4NCwgOCwgMywgMjUyLCA4NSwgOCwgCi0gICAgMywgMjUyLCA3OSwgOCwgMywgMjUyLCA3OCwgOCwgMywgMjUyLCA4MSwgOCwgMywgMjUyLCA4MCwgOCwgMywgMjI5LCAxNjksIAotICAgIDgsIDMsIDIyOSwgMTY4LCA4LCAzLCAyMjksIDE3NCwgOCwgMywgMjI5LCAxNzAsIDgsIDMsIDIyOSwgMTcxLCA4LCAzLCAKLSAgICAyMjksIDE3MywgOCwgMywgMjI5LCAxNzIsIDgsIDMsIDIyOSwgMTc3LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzksIAotICAgIDgsIDMsIDIyOSwgMTc4LCA4LCAzLCAyMjksIDE2NSwgOCwgMywgMjI5LCAxNjQsIDgsIDMsIDIyOSwgMTY3LCA4LCAzLCAKLSAgICAyMjksIDE2NiwgOCwgMywgMjI5LCAxNTgsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjEsIAotICAgIDgsIDMsIDIyOSwgMTU5LCA4LCAzLCAyMjksIDE2MCwgOCwgMywgMjI5LCAxNTIsIDgsIDMsIDIyOSwgMTUxLCA4LCAzLCAKLSAgICAyMjksIDE1NiwgOCwgMywgMjI5LCAxNTUsIDgsIDMsIDIyOSwgMTUzLCA4LCAzLCAyMjksIDE1NCwgOCwgMywgMjQxLCAxMTAsIAotICAgIDgsIDMsIDI0MSwgMTA5LCA4LCAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTEsIDgsIDMsIDI0MSwgMTEyLCA4LCAzLCAKLSAgICAyNDEsIDExNCwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExNywgOCwgMywgMjQxLCAxMjAsIAotICAgIDgsIDMsIDI0MSwgMTE5LCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCAxMDMsIDgsIDMsIDI0MSwgMTAyLCA4LCAzLCAKLSAgICAyNDEsIDEwNiwgOCwgMywgMjQxLCAxMDUsIDgsIDMsIDI0MSwgMTA4LCA4LCAzLCAyNDEsIDEwNywgOCwgMywgMjQxLCA5NywgCi0gICAgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCAxMDQsIDgsIDMsIDI0MSwgMTAwLCA4LCAzLCAyNDEsIDk4LCA4LCAzLCAyNDEsIAotICAgIDk5LCA4LCAzLCAyNDEsIDkxLCA4LCAzLCAyNDEsIDk1LCA4LCAzLCAyNDEsIDk0LCA4LCAzLCAyNDEsIDkyLCA4LCAzLCAKLSAgICAyNDEsIDkzLCA4LCAzLCAyMzAsIDE3MiwgOCwgMywgMjMwLCAxNzEsIDgsIDMsIDIzMCwgMjMwLCA4LCAzLCAyMzAsIDE3OCwgCi0gICAgOCwgMywgMjMwLCAyMDMsIDgsIDMsIDIzMCwgMjIxLCA4LCAzLCAyMzAsIDIxOSwgOCwgMywgMjMxLCAxMzksIDgsIDMsIAotICAgIDIzMSwgMTM0LCA4LCAzLCAxODQsIDgsIDMsIDIzMSwgMTcyLCA4LCAzLCAyMzAsIDc0LCA4LCAzLCAyMzAsIDczLCA4LCAzLCAKLSAgICAyMzAsIDc3LCA4LCAzLCAyMzAsIDc1LCA4LCAzLCAyMzAsIDEyMSwgOCwgMywgMjMwLCAxMDcsIDgsIDMsIDIzMCwgMTYxLCAKLSAgICA4LCAzLCAyMzAsIDEyNiwgOCwgMywgMjMxLCAyNiwgOCwgMywgMjMxLCA5MSwgOCwgMywgMjMwLCA1NSwgOCwgMywgMjMwLCAKLSAgICA1MSwgOCwgMywgMjMwLCAxMDIsIDgsIDMsIDIzMCwgNzAsIDgsIDMsIDIzMCwgNjMsIDgsIDMsIDIzMCwgNjgsIDgsIDMsIAotICAgIDIzMCwgMjgsIDgsIDMsIDIzMCwgMjcsIDgsIDMsIDIzMCwgMzMsIDgsIDMsIDIzMCwgMzAsIDgsIDMsIDI0NCwgODMsIDgsIAotICAgIDMsIDI0NCwgNzgsIDgsIDMsIDI0NCwgMTIxLCA4LCAzLCAyNDQsIDk4LCA4LCAzLCAyNDQsIDE2NywgOCwgMywgMjQ0LCAKLSAgICAxNTgsIDgsIDMsIDI0NCwgMTk2LCA4LCAzLCAyNDQsIDE3MCwgOCwgMywgMjQ0LCAzLCA4LCAzLCAyNDQsIDQzLCA4LCAzLCAKLSAgICAyNDQsIDI3LCA4LCAzLCAyNDMsIDIxOCwgOCwgMywgMjQzLCAyMTcsIDgsIDMsIDI0MywgMjM0LCA4LCAzLCAyNDMsIDIyMywgCi0gICAgOCwgMywgMjQzLCAyMjEsIDgsIDMsIDI0MywgMjIyLCA4LCAzLCAyNDMsIDIwNSwgOCwgMywgMjQzLCAyMDQsIDgsIDMsIAotICAgIDI0MywgMjA4LCA4LCAzLCAyNDMsIDIwNiwgOCwgMywgMjEzLCAxNDQsIDgsIDMsIDIxMywgMTM5LCA4LCAzLCAyMTMsIDE3NiwgCi0gICAgOCwgMywgMjEzLCAxNTMsIDgsIDMsIDIxMywgMTY2LCA4LCAzLCAyMTMsIDE2MywgOCwgMywgMjEzLCAxNjgsIDgsIDMsIAotICAgIDIxMywgMTY3LCA4LCAzLCAyMTQsIDcsIDgsIDMsIDIxNCwgMiwgOCwgMywgMjE0LCAyNywgOCwgMywgMjE0LCAxOCwgOCwgMywgCi0gICAgMjEzLCAxMjUsIDgsIDMsIDIxMywgMTIxLCA4LCAzLCAyMTMsIDEzOCwgOCwgMywgMjEzLCAxMjYsIDgsIDMsIDIxMywgMTc4LCAKLSAgICA4LCAzLCAyMTMsIDI0NCwgOCwgMywgMjEyLCAxMTAsIDgsIDMsIDIxMiwgMTA4LCA4LCAzLCAyMTIsIDExNiwgOCwgMywgCi0gICAgMjEyLCAxMTMsIDgsIDMsIDIxMiwgMTExLCA4LCAzLCAyMTIsIDExMiwgOCwgMywgMjEyLCAxMDIsIDgsIDMsIDIxMiwgMTAxLCAKLSAgICA4LCAzLCAyMTIsIDEwNiwgOCwgMywgMjEyLCAxMDUsIDgsIDMsIDIxMiwgMTAzLCA4LCAzLCAyMTIsIDEwNCwgOCwgMywgCi0gICAgMjQ3LCAxNzgsIDgsIDMsIDI0NywgMTY2LCA4LCAzLCAyNDgsIDMsIDgsIDMsIDI0NywgMjAzLCA4LCAzLCAyNDcsIDIzNiwgCi0gICAgOCwgMywgMjQ3LCAyNDAsIDgsIDMsIDI0NywgMjM5LCA4LCAzLCAyNDgsIDE1MiwgOCwgMywgMjQ4LCAxNDcsIDgsIDMsIAotICAgIDI0OCwgMjIxLCA4LCAzLCAyNDgsIDE3MiwgOCwgMywgMjQ2LCA2MiwgOCwgMywgMjQ2LCA2MywgOCwgMywgMjQ3LCAxMjAsIAotICAgIDgsIDMsIDI0NiwgMTAyLCA4LCAzLCAyNDcsIDE0NSwgOCwgMywgMjQ3LCAxMjIsIDgsIDMsIDI0OCwgMzAsIDgsIDMsIDI0OCwgCi0gICAgOTAsIDgsIDMsIDI0OCwgNDUsIDgsIDMsIDI0NiwgNTMsIDgsIDMsIDI0NiwgNTEsIDgsIDMsIDI0NiwgNzgsIDgsIDMsIAotICAgIDI0NiwgNjEsIDgsIDMsIDI0NiwgNTYsIDgsIDMsIDI0NiwgNTksIDgsIDMsIDIxNiwgNjcsIDgsIDMsIDIxNiwgNjEsIDgsIAotICAgIDMsIDIxNiwgMTE3LCA4LCAzLCAyMTYsIDc2LCA4LCAzLCAyMTYsIDEwOSwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNiwgCi0gICAgMTEwLCA4LCAzLCAyMTcsIDQ2LCA4LCAzLCAyMTcsIDMzLCA4LCAzLCAyMTcsIDEwNSwgOCwgMywgMjE3LCA1NCwgOCwgMywgCi0gICAgMjE1LCAxMDIsIDgsIDMsIDIxNSwgMTAxLCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE1LCAxMDMsIDgsIDMsIDIxNiwgNSwgCi0gICAgOCwgMywgMjE2LCAxLCA4LCAzLCAxMTEsIDgsIDMsIDIxNiwgMTMsIDgsIDMsIDIxNiwgMjEzLCA4LCAzLCAyMTcsIDIyLCA4LCAKLSAgICAzLCAyMTYsIDIzNywgOCwgMywgMjE1LCA4OCwgOCwgMywgMjE1LCA4MywgOCwgMywgMjE1LCAxMTgsIDgsIDMsIDIxNSwgCi0gICAgMTAwLCA4LCAzLCAyMTUsIDg5LCA4LCAzLCAyMTUsIDk4LCA4LCAzLCAyNDgsIDEwNywgOCwgMywgMjQ4LCAxMDYsIDgsIDMsIAotICAgIDI0OCwgMTEyLCA4LCAzLCAyNDgsIDEwOCwgOCwgMywgMjQ4LCAxMDksIDgsIDMsIDI0OCwgMTExLCA4LCAzLCAyNDgsIDExMCwgCi0gICAgOCwgMywgMjQ4LCAxMjgsIDgsIDMsIDI0OCwgMTI3LCA4LCAzLCAyNDgsIDEzNSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIAotICAgIDI0OCwgOTcsIDgsIDMsIDI0OCwgOTksIDgsIDMsIDI0OCwgOTgsIDgsIDMsIDI0OCwgMTAyLCA4LCAzLCAyNDgsIDEwMSwgOCwgCi0gICAgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTAzLCA4LCAzLCAyNDgsIDEyMCwgOCwgMywgMjQ4LCAxMjMsIDgsIDMsIDI0OCwgCi0gICAgMTIxLCA4LCAzLCAyNDgsIDkzLCA4LCAzLCAyNDgsIDkyLCA4LCAzLCAyNDgsIDEwMCwgOCwgMywgMjQ4LCA5NiwgOCwgMywgCi0gICAgMjQ4LCA5NCwgOCwgMywgMjQ4LCA5NSwgOCwgMywgMjI5LCAxMjYsIDgsIDMsIDIyOSwgMTI1LCA4LCAzLCAyMjksIDEzMywgCi0gICAgOCwgMywgMjI5LCAxMjgsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxNDIsIDgsIDMsIAotICAgIDIyOSwgMTQxLCA4LCAzLCAyMjksIDE0OCwgOCwgMywgMjI5LCAxNDMsIDgsIDMsIDIyOSwgMTE4LCA4LCAzLCAyMjksIDExNywgCi0gICAgOCwgMywgMjI5LCAxMjQsIDgsIDMsIDIyOSwgMTE5LCA4LCAzLCAyMjksIDEzNCwgOCwgMywgMjI5LCAxNDAsIDgsIDMsIAotICAgIDIyOSwgMTM4LCA4LCAzLCAyMjksIDExMCwgOCwgMywgMjI5LCAxMDksIDgsIDMsIDIyOSwgMTE1LCA4LCAzLCAyMjksIDExMywgCi0gICAgOCwgMywgMjI5LCAxMTEsIDgsIDMsIDIyOSwgMTEyLCA4LCAzLCAyNDEsIDc3LCA4LCAzLCAyNDEsIDc2LCA4LCAzLCAyNDEsIAotICAgIDgzLCA4LCAzLCAyNDEsIDc4LCA4LCAzLCAyNDEsIDgwLCA4LCAzLCAyNDEsIDc5LCA4LCAzLCAyNDEsIDgyLCA4LCAzLCAKLSAgICAyNDEsIDgxLCA4LCAzLCAyNDEsIDg4LCA4LCAzLCAyNDEsIDg3LCA4LCAzLCAyNDEsIDkwLCA4LCAzLCAyNDEsIDg5LCA4LCAKLSAgICAzLCAyNDEsIDcxLCA4LCAzLCAyNDEsIDcyLCA4LCAzLCAyNDEsIDc0LCA4LCAzLCAyNDEsIDczLCA4LCAzLCAyNDEsIDc1LCAKLSAgICA4LCAzLCAyNDEsIDg0LCA4LCAzLCAyNDEsIDg2LCA4LCAzLCAyNDEsIDg1LCA4LCAzLCAyNDEsIDcwLCA4LCAzLCAyMjgsIAotICAgIDE4OSwgOCwgMywgMjI4LCAxODcsIDgsIDMsIDIyOCwgMjMzLCA4LCAzLCAyMjgsIDE5MiwgOCwgMywgMjI4LCAyMTUsIDgsIAotICAgIDMsIDIyOCwgMjI5LCA4LCAzLCAyMjgsIDIyOCwgOCwgMywgMjI5LCAxODMsIDgsIDMsIDE5NywgOCwgMywgMjI5LCAxOTcsIAotICAgIDgsIDMsIDIyNywgMTg2LCA4LCAzLCAyMjcsIDE4OCwgOCwgMywgMjI3LCAxODcsIDgsIDMsIDIyOCwgNTEsIDgsIDMsIDIyOCwgCi0gICAgMzgsIDgsIDMsIDIyOCwgNzQsIDgsIDMsIDIyOCwgNjAsIDgsIDMsIDIyOSwgODMsIDgsIDMsIDIyOSwgMTA3LCA4LCAzLCAKLSAgICAyMjksIDk0LCA4LCAzLCAyMjcsIDE4MSwgOCwgMywgMjI3LCAxNzcsIDgsIDMsIDIyNywgMjM3LCA4LCAzLCAyMjcsIDE4NSwgCi0gICAgOCwgMywgMjI3LCAxODMsIDgsIDMsIDIyNywgMTg0LCA4LCAzLCAyNDEsIDE0MSwgOCwgMywgMjQxLCAxNDAsIDgsIDMsIAotICAgIDI0MSwgMTQ2LCA4LCAzLCAyNDEsIDE0MiwgOCwgMywgMjQxLCAxNDMsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAyNDEsIDE0NCwgCi0gICAgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNTIsIDgsIDMsIAotICAgIDI0MSwgMTMzLCA4LCAzLCAyNDEsIDEzNSwgOCwgMywgMjQxLCAxMzQsIDgsIDMsIDI0MSwgMTM3LCA4LCAzLCAyNDEsIDEzOSwgCi0gICAgOCwgMywgMjQxLCAxMzgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE0OSwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIAotICAgIDI0MSwgMTI5LCA4LCAzLCAyNDEsIDEyOCwgOCwgMywgMjQxLCAxMzYsIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyNDEsIDEzMCwgCi0gICAgOCwgMywgMjQxLCAxMzEsIDgsIDMsIDI0MSwgMTIzLCA4LCAzLCAyNDEsIDEyMiwgOCwgMywgMjQxLCAxMjcsIDgsIDMsIAotICAgIDI0MSwgMTI2LCA4LCAzLCAyNDEsIDEyNCwgOCwgMywgMjQxLCAxMjUsIDgsIDMsIDIzMiwgMTk1LCA4LCAzLCAyMzIsIDE4OSwgCi0gICAgOCwgMywgMjMyLCAyNDEsIDgsIDMsIDIzMiwgMjAyLCA4LCAzLCAyMzIsIDIzMywgOCwgMywgMjMyLCAyMzIsIDgsIDMsIAotICAgIDIzMiwgMjM2LCA4LCAzLCAyMzIsIDIzNCwgOCwgMywgMjMzLCA3OSwgOCwgMywgMjMzLCA2OSwgOCwgMywgMjMzLCAxMzUsIAotICAgIDgsIDMsIDIzMywgODgsIDgsIDMsIDIzMiwgNzksIDgsIDMsIDIzMiwgNzgsIDgsIDMsIDIzMiwgODEsIDgsIDMsIDIzMiwgCi0gICAgODAsIDgsIDMsIDIzMiwgMTE2LCA4LCAzLCAyMzIsIDEwNiwgOCwgMywgMjMyLCAxNTYsIDgsIDMsIDIzMiwgMTIwLCA4LCAzLCAKLSAgICAyMzMsIDIsIDgsIDMsIDIzMywgNTgsIDgsIDMsIDIzMywgMTcsIDgsIDMsIDIzMiwgNzQsIDgsIDMsIDIzMiwgNzIsIDgsIDMsIAotICAgIDIzMiwgOTgsIDgsIDMsIDIzMiwgNzcsIDgsIDMsIDIzMiwgNzUsIDgsIDMsIDIzMiwgNzYsIDgsIDMsIDIzMiwgNTQsIDgsIAotICAgIDMsIDIzMiwgNTMsIDgsIDMsIDIzMiwgNjIsIDgsIDMsIDIzMiwgNTcsIDgsIDMsIDIzMiwgNTUsIDgsIDMsIDIzMiwgNTYsIAotICAgIDgsIDMsIDI0MiwgMTg5LCA4LCAzLCAyNDIsIDE4OCwgOCwgMywgMjQyLCAyMTQsIDgsIDMsIDI0MiwgMTk5LCA4LCAzLCAKLSAgICAyNDIsIDIwNiwgOCwgMywgMjQyLCAyMDUsIDgsIDMsIDI0MiwgMjA4LCA4LCAzLCAyNDIsIDIwNywgOCwgMywgMjQzLCA4OSwgCi0gICAgOCwgMywgMjQzLCA4NCwgOCwgMywgMjQzLCAxMzUsIDgsIDMsIDI0MywgOTksIDgsIDMsIDI0MiwgOTEsIDgsIDMsIDI0MiwgCi0gICAgOTAsIDgsIDMsIDI0MiwgOTMsIDgsIDMsIDI0MiwgOTIsIDgsIDMsIDI0MiwgMTU0LCA4LCAzLCAyNDIsIDE1MiwgOCwgMywgCi0gICAgMjQyLCAxNzQsIDgsIDMsIDI0MiwgMTYyLCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDYyLCA4LCAKLSAgICAzLCAyNDMsIDQ0LCA4LCAzLCAyNDIsIDgxLCA4LCAzLCAyNDIsIDgwLCA4LCAzLCAyNDIsIDExMywgOCwgMywgMjQyLCA4OSwgCi0gICAgOCwgMywgMjQyLCA4MiwgOCwgMywgMjQyLCA4OCwgOCwgMywgMjM0LCA2MSwgOCwgMywgMjM0LCA2MCwgOCwgMywgMjM0LCAKLSAgICA5MiwgOCwgMywgMjM0LCA3NSwgOCwgMywgMjM0LCA4NSwgOCwgMywgMjM0LCA4OCwgOCwgMywgMjM0LCA4NiwgOCwgMywgCi0gICAgMjM0LCAyMDIsIDgsIDMsIDIzNCwgMTkwLCA4LCAzLCAxNzYsIDgsIDMsIDIzNCwgMjI4LCA4LCAzLCAyMzMsIDIwMCwgOCwgCi0gICAgMywgMjMzLCAyMDUsIDgsIDMsIDIzMywgMjAyLCA4LCAzLCAyMzQsIDAsIDgsIDMsIDIzMywgMjUyLCA4LCAzLCAyMzQsIDI4LCAKLSAgICA4LCAzLCAyMzQsIDcsIDgsIDMsIDIzNCwgMTU2LCA4LCAzLCAyMzQsIDE0MCwgOCwgMywgMjM0LCAxODIsIDgsIDMsIDIzNCwgCi0gICAgMTU5LCA4LCAzLCAyMzMsIDE4OSwgOCwgMywgMjMzLCAxODYsIDgsIDMsIDIzMywgMjE3LCA4LCAzLCAyMzMsIDE5OSwgOCwgCi0gICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMTk2LCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCA4LCAzLCAyNDMsIDE5LCAKLSAgICA4LCAzLCAyNDMsIDE2LCA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIAotICAgIDI1LCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDYsIDgsIDMsIDI0MywgNSwgOCwgMywgMjQzLCAKLSAgICA4LCA4LCAzLCAyNDMsIDcsIDgsIDMsIDI0MywgMTEsIDgsIDMsIDI0MywgMTAsIDgsIDMsIDI0MywgMTMsIDgsIDMsIDI0MywgCi0gICAgMTIsIDgsIDMsIDI0MywgMjEsIDgsIDMsIDI0MywgMjAsIDgsIDMsIDI0MywgMjQsIDgsIDMsIDI0MywgMjIsIDgsIDMsIAotICAgIDI0MywgMSwgOCwgMywgMjQzLCAwLCA4LCAzLCAyNDMsIDksIDgsIDMsIDI0MywgNCwgOCwgMywgMjQzLCAyLCA4LCAzLCAKLSAgICAyNDMsIDMsIDgsIDMsIDIzMCwgMjQ5LCA4LCAzLCAyMzAsIDI1MCwgOCwgMywgMjMxLCAxMiwgOCwgMywgMjMxLCAxMSwgOCwgCi0gICAgMywgMjMxLCAxNCwgOCwgMywgMjMxLCAxMywgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQyLCA4LCAzLCAyMzAsIAotICAgIDI0MSwgOCwgMywgMjMwLCAyNDUsIDgsIDMsIDIzMCwgMjQ0LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIAotICAgIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzAsIDI1MywgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjM2LCA4LCAzLCAyMzAsIAotICAgIDIzNSwgOCwgMywgMjMwLCAyNDMsIDgsIDMsIDIzMCwgMjM5LCA4LCAzLCAyMzAsIDIzNywgOCwgMywgMjMwLCAyMzgsIDgsIAotICAgIDMsIDI0MCwgMTgwLCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxODYsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAyNDAsIAotICAgIDE4MywgOCwgMywgMjQwLCAxODIsIDgsIDMsIDI0MCwgMTg1LCA4LCAzLCAyNDAsIDE4NCwgOCwgMywgMjQwLCAxOTEsIDgsIAotICAgIDMsIDI0MCwgMTkwLCA4LCAzLCAyNDAsIDE5MywgOCwgMywgMjQwLCAxOTIsIDgsIDMsIDI0MCwgMTcyLCA4LCAzLCAyNDAsIAotICAgIDE3MSwgOCwgMywgMjQwLCAxNzQsIDgsIDMsIDI0MCwgMTczLCA4LCAzLCAyNDAsIDE3NiwgOCwgMywgMjQwLCAxNzUsIDgsIAotICAgIDMsIDI0MCwgMTc4LCA4LCAzLCAyNDAsIDE3NywgOCwgMywgMjQwLCAxODcsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAyNDAsIAotICAgIDE4OCwgOCwgMywgMjI5LCAyNCwgOCwgMywgMjI5LCAyNiwgOCwgMywgMjI5LCAyNSwgOCwgMywgMjI5LCA2NywgOCwgMywgCi0gICAgMjI5LCA2NSwgOCwgMywgMjI5LCA3NywgOCwgMywgMjI5LCA3MCwgOCwgMywgMjI4LCAyNDMsIDgsIDMsIDIyOCwgMjQyLCA4LCAKLSAgICAzLCAyMjgsIDI0NCwgOCwgMywgMjI4LCAyNTIsIDgsIDMsIDIyOCwgMjQ5LCA4LCAzLCAyMjksIDQsIDgsIDMsIDIyOCwgCi0gICAgMjU0LCA4LCAzLCAyMjksIDU4LCA4LCAzLCAyMjksIDY0LCA4LCAzLCAyMjksIDYwLCA4LCAzLCAyNDEsIDE1NiwgOCwgMywgCi0gICAgMjQxLCAxNjYsIDgsIDMsIDI0MSwgMTc1LCA4LCAzLCAyNDEsIDI1MSwgOCwgMywgMjQxLCAyNDMsIDgsIDMsIDE2MiwgOCwgCi0gICAgMywgMjQyLCA2LCA4LCAzLCAyNDAsIDIwNiwgOCwgMywgMjQwLCAyMDUsIDgsIDMsIDI0MCwgMjA4LCA4LCAzLCAyNDAsIAotICAgIDIwNywgOCwgMywgMjQwLCAyNDIsIDgsIDMsIDI0MCwgMjMzLCA4LCAzLCAyNDEsIDY4LCA4LCAzLCAyNDEsIDQ3LCA4LCAzLCAKLSAgICAyNDEsIDE5NCwgOCwgMywgMjQxLCAyMzgsIDgsIDMsIDI0MSwgMjA2LCA4LCAzLCAyMTIsIDQzLCA4LCAzLCAyMTIsIDI4LCAKLSAgICA4LCAzLCAyMTIsIDY1LCA4LCAzLCAyMTIsIDUxLCA4LCAzLCAyMTEsIDE4NSwgOCwgMywgMjExLCAxODcsIDgsIDMsIDIxMSwgCi0gICAgMTg2LCA4LCAzLCAyMTEsIDIwMywgOCwgMywgMjExLCAyMjcsIDgsIDMsIDIxMSwgMjEwLCA4LCAzLCAyMTIsIDUsIDgsIDMsIAotICAgIDIxMiwgMjIsIDgsIDMsIDIxMiwgMTAsIDgsIDMsIDIxMCwgMzAsIDgsIDMsIDIxMCwgMjksIDgsIDMsIDIxMCwgNDQsIDgsIAotICAgIDMsIDIxMCwgMzIsIDgsIDMsIDIxMCwgMzcsIDgsIDMsIDIxMCwgMzksIDgsIDMsIDIxMCwgMzgsIDgsIDMsIDIxMCwgMTAyLCAKLSAgICA4LCAzLCAyMTAsIDk5LCA4LCAzLCAyMTAsIDExNiwgOCwgMywgMjEwLCAxMDUsIDgsIDMsIDIxMCwgNiwgOCwgMywgMjEwLCAKLSAgICA4LCA4LCAzLCAyMTAsIDcsIDgsIDMsIDIxMCwgMTksIDgsIDMsIDIxMCwgMTgsIDgsIDMsIDIxMCwgMjMsIDgsIDMsIDIxMCwgCi0gICAgMjAsIDgsIDMsIDIxMCwgODQsIDgsIDMsIDIxMCwgOTQsIDgsIDMsIDIxMCwgODgsIDgsIDMsIDIxMCwgMiwgOCwgMywgMjEwLCAKLSAgICAxLCA4LCAzLCAyMTAsIDEzLCA4LCAzLCAyMTAsIDUsIDgsIDMsIDIxMCwgMywgOCwgMywgMjEwLCA0LCA4LCAzLCAyMDksIAotICAgIDI0NSwgOCwgMywgMjA5LCAyNDQsIDgsIDMsIDIwOSwgMjUwLCA4LCAzLCAyMDksIDI0OCwgOCwgMywgMjA5LCAyNDYsIDgsIAotICAgIDMsIDIwOSwgMjQ3LCA4LCAzLCAyNTAsIDI4LCA4LCAzLCAyNTAsIDI0LCA4LCAzLCAyNTAsIDUxLCA4LCAzLCAyNTAsIDM3LCAKLSAgICA4LCAzLCAyNTAsIDQ4LCA4LCAzLCAyNTAsIDQyLCA4LCAzLCAyNTAsIDUwLCA4LCAzLCAyNTAsIDQ5LCA4LCAzLCAyNTAsIAotICAgIDIyNCwgOCwgMywgMjUwLCAyMTcsIDgsIDMsIDI1MSwgMzMsIDgsIDMsIDI1MCwgMjUxLCA4LCAzLCAyNDksIDEwNCwgOCwgMywgCi0gICAgMjQ5LCAxMDYsIDgsIDMsIDI0OSwgMTA1LCA4LCAzLCAyNDksIDE1MywgOCwgMywgMjQ5LCAxNDQsIDgsIDMsIDI0OSwgMjM4LCAKLSAgICA4LCAzLCAyNDksIDE2OSwgOCwgMywgMjUwLCAxNjAsIDgsIDMsIDI1MCwgMTkwLCA4LCAzLCAyNTAsIDE2NSwgOCwgMywgCi0gICAgMjQ5LCA4NCwgOCwgMywgMjQ5LCA4MiwgOCwgMywgMjQ5LCAxMTIsIDgsIDMsIDI0OSwgMTAyLCA4LCAzLCAyNDksIDg5LCA4LCAKLSAgICAzLCAyNDksIDEwMSwgOCwgMywgMjQ5LCA2MywgOCwgMywgMjQ5LCA2MiwgOCwgMywgMjQ5LCA3MywgOCwgMywgMjQ5LCA2OSwgCi0gICAgOCwgMywgMjQ5LCA2NCwgOCwgMywgMjQ5LCA2NiwgOCwgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIAotICAgIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIAotICAgIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIAotICAgIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIAotICAgIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIAotICAgIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIAotICAgIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIAotICAgIDEwNCwgOCwgMywgMjI3LCAxMDMsIDgsIDMsIDIyNywgMTA5LCA4LCAzLCAyMjcsIDEwNSwgOCwgMywgMjI3LCAxMDYsIDgsIAotICAgIDMsIDIyNywgMTA4LCA4LCAzLCAyMjcsIDEwNywgOCwgMywgMjI3LCAxMTQsIDgsIDMsIDIyNywgMTEzLCA4LCAzLCAyMjcsIAotICAgIDExNywgOCwgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTcsIDgsIDMsIDIyNywgOTgsIDgsIDMsIDIyNywgMTAxLCA4LCAzLCAKLSAgICAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDkyLCA4LCAzLCAyMjcsIDEwMCwgCi0gICAgOCwgMywgMjI3LCA5NiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjI3LCA5NCwgOCwgMywgMjI3LCA4NywgOCwgMywgMjI3LCAKLSAgICA4NiwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA4OCwgOCwgMywgMjI3LCA4OSwgOCwgMywgCi0gICAgMjE5LCAxMjcsIDgsIDMsIDE5NCwgOCwgMywgMjE5LCAxOTEsIDgsIDMsIDIxOSwgMTMwLCA4LCAzLCAyMTksIDE4MywgOCwgCi0gICAgMywgMjE5LCAxODYsIDgsIDMsIDIxOSwgMTg0LCA4LCAzLCAyMjEsIDIyNiwgOCwgMywgMjIxLCAyMTQsIDgsIDMsIDIwNiwgCi0gICAgOCwgMywgMjIxLCAyMzQsIDgsIDMsIDIxOCwgMjgsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOCwgMjksIDgsIDMsIDIxOSwgCi0gICAgMzQsIDgsIDMsIDIxOSwgMjMsIDgsIDMsIDIxOSwgNTgsIDgsIDMsIDIxOSwgMzgsIDgsIDMsIDIyMCwgMTE0LCA4LCAzLCAKLSAgICAyMjEsIDE4MSwgOCwgMywgMjIwLCAxMzksIDgsIDMsIDIxOCwgNSwgOCwgMywgMjE4LCAzLCA4LCAzLCAyMTgsIDgzLCA4LCAKLSAgICAzLCAyMTgsIDI3LCA4LCAzLCAyMTgsIDksIDgsIDMsIDIxOCwgMTcsIDgsIDMsIDIxNywgMTY2LCA4LCAzLCAyMTcsIDE2NSwgCi0gICAgOCwgMywgMjE3LCAyMzIsIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTcsIDE2OCwgOCwgMywgMjE3LCAxNzIsIDgsIDMsIAotICAgIDIxOCwgMTg2LCA4LCAzLCAyMTgsIDE4NSwgOCwgMywgMjE4LCAxOTIsIDgsIDMsIDIxOCwgMTg3LCA4LCAzLCAyMTgsIDE4OSwgCi0gICAgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkwLCA4LCAzLCAyMTgsIDIwMCwgOCwgMywgMjE4LCAxOTgsIDgsIDMsIAotICAgIDIxOCwgMjIzLCA4LCAzLCAyMTgsIDIwMSwgOCwgMywgMjE4LCAxODEsIDgsIDMsIDIxOCwgMTgwLCA4LCAzLCAyMTgsIDE4NCwgCi0gICAgOCwgMywgMjE4LCAxODIsIDgsIDMsIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE5NywgOCwgMywgMjE4LCAxOTUsIDgsIDMsIAotICAgIDIxOCwgMTc3LCA4LCAzLCAyMTgsIDE3NSwgOCwgMywgMjE4LCAxNzksIDgsIDMsIDIxOCwgMTc4LCA4LCAzLCAyMTgsIDE3MCwgCi0gICAgOCwgMywgMjE4LCAxNjksIDgsIDMsIDIxOCwgMTc0LCA4LCAzLCAyMTgsIDE3MywgOCwgMywgMjE4LCAxNzEsIDgsIDMsIAotICAgIDIxOCwgMTcyLCA4LCAzLCAyMTAsIDc3LCA4LCAzLCAyMTAsIDc2LCA4LCAzLCAyMTAsIDgyLCA4LCAzLCAyMTAsIDc5LCA4LCAKLSAgICAzLCAyMTAsIDU5LCA4LCAzLCAyMTAsIDYxLCA4LCAzLCAyMTAsIDYwLCA4LCAzLCAyMTAsIDY0LCA4LCAzLCAyMTAsIDYzLCAKLSAgICA4LCAzLCAyMTAsIDY3LCA4LCAzLCAyMTAsIDY1LCA4LCAzLCAyMTAsIDcxLCA4LCAzLCAyMTAsIDcwLCA4LCAzLCAyMTAsIAotICAgIDc0LCA4LCAzLCAyMTAsIDcyLCA4LCAzLCAyMTAsIDU1LCA4LCAzLCAyMTAsIDU0LCA4LCAzLCAyMTAsIDYyLCA4LCAzLCAKLSAgICAyMTAsIDU4LCA4LCAzLCAyMTAsIDU2LCA4LCAzLCAyMTAsIDU3LCA4LCAzLCAyMTAsIDQ3LCA4LCAzLCAyMTAsIDQ2LCA4LCAKLSAgICAzLCAyMTAsIDUxLCA4LCAzLCAyMTAsIDUwLCA4LCAzLCAyMTAsIDQ4LCA4LCAzLCAyMTAsIDQ5LCA4LCAzLCAyNTAsIDEzNiwgCi0gICAgOCwgMywgMjUwLCAxMzMsIDgsIDMsIDI1MCwgMTU3LCA4LCAzLCAyNTAsIDE0NCwgOCwgMywgMjUwLCA2NSwgOCwgMywgMjUwLCAKLSAgICA2NCwgOCwgMywgMjUwLCA2NywgOCwgMywgMjUwLCA2NiwgOCwgMywgMjUwLCA3OSwgOCwgMywgMjUwLCA3OCwgOCwgMywgCi0gICAgMjUwLCA4NiwgOCwgMywgMjUwLCA4MSwgOCwgMywgMjUwLCAxMTUsIDgsIDMsIDI1MCwgMTEzLCA4LCAzLCAyNTAsIDEzMSwgCi0gICAgOCwgMywgMjUwLCAxMjEsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNjksIDgsIDMsIDI1MCwgNjMsIDgsIDMsIDI1MCwgCi0gICAgNjAsIDgsIDMsIDI1MCwgNjIsIDgsIDMsIDI1MCwgNTMsIDgsIDMsIDI1MCwgNTIsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIAotICAgIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTQsIDgsIDMsIDI1MCwgNTUsIDgsIDMsIDIyMiwgMTc1LCA4LCAzLCAyMjIsIDE3OSwgOCwgCi0gICAgMywgMjIyLCAxNTgsIDgsIDMsIDIyMiwgMTU5LCA4LCAzLCAyMjIsIDE2MiwgOCwgMywgMjIyLCAxNjEsIDgsIDMsIDIyMiwgCi0gICAgMTY1LCA4LCAzLCAyMjIsIDE2MywgOCwgMywgMjIyLCAxNjksIDgsIDMsIDIyMiwgMTY4LCA4LCAzLCAyMjIsIDE3NCwgOCwgCi0gICAgMywgMjIyLCAxNzAsIDgsIDMsIDIyMiwgMTU0LCA4LCAzLCAyMjIsIDE1MiwgOCwgMywgMjIyLCAxNjAsIDgsIDMsIDIyMiwgCi0gICAgMTU3LCA4LCAzLCAyMjIsIDE1NSwgOCwgMywgMjIyLCAxNTYsIDgsIDMsIDIyMiwgMTQ3LCA4LCAzLCAyMjIsIDE0NiwgOCwgCi0gICAgMywgMjIyLCAxNTEsIDgsIDMsIDIyMiwgMTUwLCA4LCAzLCAyMjIsIDE0OCwgOCwgMywgMjIyLCAxNDksIDgsIDMsIDIyOCwgCi0gICAgMzQsIDgsIDMsIDIyOCwgMzMsIDgsIDMsIDIyOCwgMzYsIDgsIDMsIDIyOCwgMzUsIDgsIDMsIDIyOCwgMjYsIDgsIDMsIAotICAgIDIyOCwgMjgsIDgsIDMsIDIyOCwgMjcsIDgsIDMsIDIyOCwgMzAsIDgsIDMsIDIyOCwgMjksIDgsIDMsIDIyOCwgMzIsIDgsIAotICAgIDMsIDIyOCwgMzEsIDgsIDMsIDIyOCwgMjEsIDgsIDMsIDIyOCwgMjAsIDgsIDMsIDIyOCwgMjUsIDgsIDMsIDIyOCwgMjQsIAotICAgIDgsIDMsIDIyOCwgMjIsIDgsIDMsIDIyOCwgMjMsIDgsIDMsIDIyOCwgMTUsIDgsIDMsIDIyOCwgMTQsIDgsIDMsIDIyOCwgCi0gICAgMTksIDgsIDMsIDIyOCwgMTgsIDgsIDMsIDIyOCwgMTYsIDgsIDMsIDIyOCwgMTcsIDgsIDMsIDIyMCwgNzIsIDgsIDMsIAotICAgIDIyMCwgNjcsIDgsIDMsIDIyMCwgMTAyLCA4LCAzLCAyMjAsIDgzLCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAyMTcsIAotICAgIDgsIDMsIDIxOSwgMjE2LCA4LCAzLCAyMTksIDIzNiwgOCwgMywgMjE5LCAyMzMsIDgsIDMsIDIyMCwgNywgOCwgMywgMjE5LCAKLSAgICAyNTQsIDgsIDMsIDIyMCwgNDIsIDgsIDMsIDIyMCwgMzUsIDgsIDMsIDIyMCwgNjMsIDgsIDMsIDIyMCwgNTAsIDgsIDMsIAotICAgIDIxOSwgMjExLCA4LCAzLCAyMTksIDIwOSwgOCwgMywgMjE5LCAyMjUsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxMiwgCi0gICAgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMTk0LCA4LCAzLCAyMTksIDE5MywgOCwgMywgMjE5LCAyMDAsIDgsIDMsIAotICAgIDIxOSwgMTk3LCA4LCAzLCAyMTksIDE5NSwgOCwgMywgMjE5LCAxOTYsIDgsIDMsIDIyMywgMTQxLCA4LCAzLCAyMjMsIDEzNSwgCi0gICAgOCwgMywgMjA1LCA4LCAzLCAyMjMsIDE0NywgOCwgMywgMjIyLCAxMjAsIDgsIDMsIDIyMiwgMTIyLCA4LCAzLCAyMjIsIAotICAgIDEyMSwgOCwgMywgMjIyLCAxODgsIDgsIDMsIDIyMiwgMTgxLCA4LCAzLCAyMjIsIDIxMSwgOCwgMywgMjIyLCAxOTIsIDgsIAotICAgIDMsIDIyMywgNDMsIDgsIDMsIDIyMywgMTI4LCA4LCAzLCAyMjMsIDgxLCA4LCAzLCAyMjIsIDExMywgOCwgMywgMjIyLCAKLSAgICAxMTAsIDgsIDMsIDIyMiwgMTQwLCA4LCAzLCAyMjIsIDExOSwgOCwgMywgMjIyLCAxMTUsIDgsIDMsIDIyMiwgMTE2LCA4LCAKLSAgICAzLCAyMjIsIDk1LCA4LCAzLCAyMjIsIDk0LCA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5NiwgCi0gICAgOCwgMywgMjIyLCA5NywgOCwgMywgMjM1LCA5OCwgOCwgMywgMjM1LCA5NywgOCwgMywgMjM1LCAxMDgsIDgsIDMsIDIzNSwgCi0gICAgOTksIDgsIDMsIDIzNSwgMTA0LCA4LCAzLCAyMzUsIDEwMywgOCwgMywgMjM1LCAxMDYsIDgsIDMsIDIzNSwgMTA1LCA4LCAzLCAKLSAgICAyMzUsIDQxLCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDQyLCA4LCAzLCAyMzUsIDU2LCA4LCAKLSAgICAzLCAyMzUsIDU0LCA4LCAzLCAyMzUsIDY4LCA4LCAzLCAyMzUsIDU4LCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMzUsIDMyLCAKLSAgICA4LCAzLCAyMzUsIDUxLCA4LCAzLCAyMzUsIDM5LCA4LCAzLCAyMzUsIDM2LCA4LCAzLCAyMzUsIDM3LCA4LCAzLCAyMzUsIAotICAgIDI2LCA4LCAzLCAyMzUsIDI1LCA4LCAzLCAyMzUsIDMwLCA4LCAzLCAyMzUsIDI5LCA4LCAzLCAyMzUsIDI3LCA4LCAzLCAKLSAgICAyMzUsIDI4LCA4LCAzLCAyMjQsIDQ2LCA4LCAzLCAyMjQsIDQ0LCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDQ3LCA4LCAKLSAgICAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIDUxLCA4LCAzLCAyMjMsIDI1NSwgCi0gICAgOCwgMywgMjIzLCAyNTIsIDgsIDMsIDIyNCwgMSwgOCwgMywgMjI0LCAwLCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjQsIDMyLCAKLSAgICA4LCAzLCAyMjQsIDQyLCA4LCAzLCAyMjQsIDM2LCA4LCAzLCAyMjMsIDI0NywgOCwgMywgMjIzLCAyNDMsIDgsIDMsIDIyNCwgCi0gICAgMzAsIDgsIDMsIDIyMywgMjUxLCA4LCAzLCAyMjMsIDI0OSwgOCwgMywgMjIzLCAyNTAsIDgsIDMsIDIyMywgMjI3LCA4LCAzLCAKLSAgICAyMjMsIDIyNSwgOCwgMywgMjIzLCAyMzcsIDgsIDMsIDIyMywgMjMwLCA4LCAzLCAyMjMsIDIyOCwgOCwgMywgMjIzLCAyMjksIAotICAgIDgsIDMsIDIzNSwgODcsIDgsIDMsIDIzNSwgODYsIDgsIDMsIDIzNSwgOTMsIDgsIDMsIDIzNSwgODgsIDgsIDMsIDIzNSwgCi0gICAgOTAsIDgsIDMsIDIzNSwgODksIDgsIDMsIDIzNSwgOTIsIDgsIDMsIDIzNSwgOTEsIDgsIDMsIDIzNSwgNzgsIDgsIDMsIAotICAgIDIzNSwgODAsIDgsIDMsIDIzNSwgNzksIDgsIDMsIDIzNSwgODMsIDgsIDMsIDIzNSwgODIsIDgsIDMsIDIzNSwgODUsIDgsIAotICAgIDMsIDIzNSwgODQsIDgsIDMsIDIzNSwgNzQsIDgsIDMsIDIzNSwgNzMsIDgsIDMsIDIzNSwgODEsIDgsIDMsIDIzNSwgNzcsIAotICAgIDgsIDMsIDIzNSwgNzUsIDgsIDMsIDIzNSwgNzYsIDgsIDMsIDIzNSwgNzAsIDgsIDMsIDIzNSwgNjksIDgsIDMsIDIzNSwgCi0gICAgNzIsIDgsIDMsIDIzNSwgNzEsIDgsIDMsIDIyOCwgMTYyLCA4LCAzLCAyMjgsIDE2MSwgOCwgMywgMjI4LCAxNjksIDgsIDMsIAotICAgIDIyOCwgMTYzLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjQsIDgsIDMsIDIyOCwgMTY4LCA4LCAzLCAyMjgsIDE2NiwgCi0gICAgOCwgMywgMjI4LCAxNTEsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1NywgOCwgMywgMjI4LCAxNTYsIDgsIDMsIAotICAgIDIyOCwgMTYwLCA4LCAzLCAyMjgsIDE1OCwgOCwgMywgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTU1LCA4LCAzLCAyMjgsIDE1MCwgCi0gICAgOCwgMywgMjI4LCAxNDcsIDgsIDMsIDIyOCwgMTQ4LCA4LCAzLCAyMjgsIDE0MSwgOCwgMywgMjI4LCAxNDAsIDgsIDMsIAotICAgIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE0NCwgOCwgMywgMjI4LCAxNDIsIDgsIDMsIDIyOCwgMTQzLCA4LCAzLCAyMjcsIDEzNywgCi0gICAgOCwgMywgMjI3LCAxMzYsIDgsIDMsIDIyNywgMTQ4LCA4LCAzLCAyMjcsIDE0MSwgOCwgMywgMjI3LCAxNDUsIDgsIDMsIAotICAgIDIyNywgMTQ0LCA4LCAzLCAyMjcsIDE0NywgOCwgMywgMjI3LCAxNDYsIDgsIDMsIDIyNywgMTI0LCA4LCAzLCAyMjcsIDEyNiwgCi0gICAgOCwgMywgMjI3LCAxMjUsIDgsIDMsIDIyNywgMTMwLCA4LCAzLCAyMjcsIDEyOSwgOCwgMywgMjI3LCAxMzQsIDgsIDMsIAotICAgIDIyNywgMTMxLCA4LCAzLCAyMjcsIDEyMiwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgMTI4LCA4LCAzLCAyMjcsIDEyMywgCi0gICAgOCwgMywgMjExLCAxNTAsIDgsIDMsIDIxMSwgMTQ5LCA4LCAzLCAyMTEsIDE1NywgOCwgMywgMjExLCAxNTIsIDgsIDMsIAotICAgIDIxMSwgMTU0LCA4LCAzLCAyMTEsIDE1MywgOCwgMywgMjExLCAxNTYsIDgsIDMsIDIxMSwgMTU1LCA4LCAzLCAyMTEsIDEzOSwgCi0gICAgOCwgMywgMjExLCAxNDAsIDgsIDMsIDIxMSwgMTQ0LCA4LCAzLCAyMTEsIDE0MywgOCwgMywgMjExLCAxNDgsIDgsIDMsIAotICAgIDIxMSwgMTQ2LCA4LCAzLCAyMTEsIDEyMSwgOCwgMywgMjExLCAxMTksIDgsIDMsIDIxMSwgMTMxLCA4LCAzLCAyMTEsIDEyNCwgCi0gICAgOCwgMywgMjExLCAxMjIsIDgsIDMsIDIxMSwgMTIzLCA4LCAzLCAyMTAsIDI1MCwgOCwgMywgMjEwLCAyNDgsIDgsIDMsIAotICAgIDIxMSwgOCwgOCwgMywgMjEwLCAyNTEsIDgsIDMsIDIxMSwgMiwgOCwgMywgMjExLCAxLCA4LCAzLCAyMTEsIDUsIDgsIDMsIAotICAgIDIxMSwgMywgOCwgMywgMjEwLCAxOTEsIDgsIDMsIDIxMCwgMTkwLCA4LCAzLCAyMTAsIDE5NCwgOCwgMywgMjEwLCAxOTIsIAotICAgIDgsIDMsIDIxMCwgMjI0LCA4LCAzLCAyMTAsIDIyMSwgOCwgMywgMjEwLCAyNDQsIDgsIDMsIDIxMCwgMjI4LCA4LCAzLCAKLSAgICAyMTAsIDE4MiwgOCwgMywgMjEwLCAxNzgsIDgsIDMsIDIxMCwgMjEyLCA4LCAzLCAyMTAsIDE4OSwgOCwgMywgMjEwLCAxODUsIAotICAgIDgsIDMsIDIxMCwgMTg2LCA4LCAzLCAyMTAsIDE2MiwgOCwgMywgMjEwLCAxNjEsIDgsIDMsIDIxMCwgMTY5LCA4LCAzLCAKLSAgICAyMTAsIDE2NSwgOCwgMywgMjEwLCAxNjMsIDgsIDMsIDIxMCwgMTY0LCA4LCAzNCwgMjI0LCAzMywgOCwgMzQsIDIzMiwgCi0gICAgMjQxLCA4LCAzNCwgMjM0LCA2MSwgOCwgMzQsIDIyNywgMTQxLCA4LCAzNCwgMjQ5LCA2OSwgOCwgMzQsIDIxOCwgMTkyLCA4LCAKLSAgICAzNCwgMjQzLCAxMiwgOCwgMzQsIDI0MywgNDQsIDgsIDM0LCAyMzAsIDIzMCwgOCwgMzQsIDI0MCwgMTgwLCA4LCAzNCwgCi0gICAgMjMyLCA1NiwgOCwgMzQsIDI1MiwgODMsIDgsIDM0LCAyMzAsIDEyNiwgOCwgMzQsIDIxMCwgMjQ0LCA4LCAzNCwgMjI0LCAKLSAgICAxMjEsIDgsIDM0LCAyNDAsIDE3NCwgOCwgMzQsIDIxNywgNDYsIDgsIDM0LCAyNDMsIDEzNSwgOCwgMzQsIDIxMCwgNSwgOCwgCi0gICAgMzQsIDI0OSwgNjMsIDgsIDM0LCAyNDgsIDk1LCA4LCAzNCwgMjUxLCA5OCwgOCwgMzQsIDI0MywgOCwgOCwgMzQsIDIyNywgCi0gICAgMTMxLCA4LCAzNCwgMjE1LCAxMTgsIDgsIDM0LCAyMjYsIDE3NSwgOCwgMzQsIDIzNSwgNzQsIDgsIDM0LCAyMTAsIDE5LCA4LCAKLSAgICAzNCwgMjI0LCAxMDAsIDgsIDM0LCAyNDEsIDEwOCwgOCwgMzQsIDIxMCwgMjUwLCA4LCAzNCwgMjEyLCAxMTIsIDgsIDM0LCAKLSAgICAyMTksIDIwMCwgOCwgMzQsIDIxMywgMjQ0LCA4LCAzNCwgMjEwLCAxMTYsIDgsIDM0LCAyMzUsIDY4LCA4LCAzNCwgMjI3LCAKLSAgICA5NiwgOCwgMzQsIDIzNSwgNzIsIDgsIDM0LCAyNDIsIDE1NCwgOCwgMzQsIDIzNSwgOTIsIDgsIDM0LCAyMTEsIDIyNywgOCwgCi0gICAgMzQsIDI0NiwgNzgsIDgsIDM0LCAyMTksIDIxMywgOCwgMzQsIDIzMiwgMjM2LCA4LCAzNCwgMjQ5LCA3MywgOCwgMzQsIAotICAgIDI0OSwgMTA1LCA4LCAzNCwgMjUwLCAzNywgOCwgMzQsIDI0MCwgMTc3LCA4LCAzNCwgMjIwLCA3MiwgOCwgMzQsIDIxMCwgNCwgCi0gICAgOCwgMzQsIDIxOSwgMjU0LCA4LCAzNCwgMjUwLCAxMzEsIDgsIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTczLCA4LCAKLSAgICAzNCwgMjM0LCAxODIsIDIzMiwgMTk2LCAxLCAyNTIsIDE5MSwgMjMyLCAxOTYsIDEsIDE5MCwgMjMyLCAxOTYsIDEsIDIyNSwgCi0gICAgMTQ3LCAyMzIsIDE5NiwgMSwgMjQ4LCAyMjEsIDIzMiwgMTk2LCAxLCAyMTcsIDEwNSwgMjMyLCAxOTYsIDEsIDIxNiwgMjA4LCAKLSAgICAyMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDIzMiwgMTk2LCAxLCAxNzYsIDIzMiwgMTk2LCAxLCAyMzQsIDEzMiwgMjMyLCAxOTYsIAotICAgIDEsIDIzNSwgMTQxLCAyMzIsIDE5NiwgMSwgMjUxLCAzMywgMjMyLCAxOTYsIDEsIDI1MCwgMTU3LCAyMzIsIDE5NiwgMSwgCi0gICAgMjQ2LCAzOCwgMjMyLCAxOTYsIDEsIDIxNSwgMTgzLCAyMzIsIDE5NiwgMSwgMjE1LCAxNzUsIDIzMiwgMTk2LCAxLCAxODQsIAotICAgIDIzMiwgMTk2LCAxLCAxOTcsIDIzMiwgMTk2LCAxLCAyMzMsIDEzNSwgMjMyLCAxOTYsIDEsIDIwNiwgMjMyLCAxOTYsIDEsIAotICAgIDIxMCwgODIsIDIzMiwgMTk2LCAxLCAyMTAsIDExNiwgMjMyLCAxOTYsIDEsIDIyOSwgNzcsIDIzMiwgMTk2LCAxLCAxNjIsIAotICAgIDIzMiwgMTk2LCAxLCAyMTEsIDE2NSwgMjMyLCAxOTYsIDEsIDI0MSwgMTg5LCAyMzIsIDE5NiwgMSwgMjQ0LCAxOTYsIDIzMiwgCi0gICAgMTk2LCAxLCAyMTIsIDY1LCAyMzIsIDE5NiwgMSwgMjIwLCAxMDIsIDIzMiwgMTk2LCAxLCAxOTEsIDIzMiwgMTk2LCAxLCAKLSAgICAyNDIsIDI0OSwgMjMyLCAxOTYsIDEsIDYxLCAyMzIsIDE5NiwgMSwgMjU0LCAyNDMsIDIzMiwgMTk2LCAxLCA3NSwgMjMyLCAKLSAgICAxOTYsIDEsIDI0NSwgNTUsIDIzMiwgMTk2LCAxLCA3MywgMjMyLCAxOTYsIDEsIDc2LCAyMzIsIDE5NiwgMSwgNzAsIDIzMiwgCi0gICAgMTk2LCAxLCAyMTQsIDIxNCwgMjMyLCAxOTYsIDEsIDIxNCwgMjA4LCAyMzIsIDE5NiwgMSwgMjI2LCAyMzQsIDIzMiwgMTk2LCAKLSAgICAxLCAxMzgsIDIzMCwgMzIsIDIxNiwgMTE3LCAyMzIsIDE5NiwgMSwgMTM4LCAyMjksIDIyOSwgMjI1LCAxNiwgMjMyLCAxOTYsIAotICAgIDEsIDEzOCwgMjMwLCAzMiwgMjQ5LCA3MiwgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjUxLCAyMDUsIDIzMiwgMTk2LCAKLSAgICAxLCAxMzgsIDIzMCwgMzIsIDE5NywgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjM1LCAxMTUsIDIzMiwgMTk2LCAyMjQsIAotICAgIDE0MSwgMjQ5LCAyMTksIDIzMiwgMTk2LCAyMjQsIDE0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMywgMjQ1LCAyMDksIAotICAgIDQxLCAzLCAyNDUsIDIwNSwgNDEsIDMsIDI0MSwgMjIwLCA0MSwgMywgMjEyLCAxNywgNDEsIDMsIDIxMiwgMTYsIDQxLCAzLCAKLSAgICAyMjUsIDIxMSwgNDEsIDMsIDI1MiwgMTMsIDQxLCAzLCAyNTIsIDY2LCA0MSwgMywgMjMxLCAxMTYsIDQxLCAzLCAyMzMsIAotICAgIDI0NywgNDEsIDMsIDIzMSwgNiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDE0NywgNDEsIDMsIDIxMywgMjUwLCA0MSwgCi0gICAgMywgMjE3LCAxMSwgNDEsIDMsIDIxNiwgMTk0LCA0MSwgMywgMjQ4LCAxNiwgNDEsIDMsIDI0OCwgMTMsIDQxLCAzLCAyMzMsIAotICAgIDUwLCA0MSwgMywgMjIzLCAxMDgsIDQxLCAzLCAyNDgsIDc3LCA0MSwgMywgMjI5LCAxMzksIDQxLCAzLCAyMjEsIDE3MCwgCi0gICAgNDEsIDMsIDIyMCwgNjEsIDQxLCAzLCAyMTAsIDkyLCA0MSwgMywgMjEwLCA3MywgNDEsIDMsIDI1MCwgMTgyLCA0MSwgMywgCi0gICAgMjM1LCAxMjQsIDQxLCAzLCAyMjgsIDE3NiwgNDEsIDMsIDIxMSwgNDQsIDQxLCAzLCAyMzQsIDE4MSwgNDEsIDMsIDIyOSwgCi0gICAgNTEsIDQxLCAzLCAyNDMsIDU1LCA0MSwgMywgMjMxLCA4MCwgNDEsIDMsIDIyOSwgMTAzLCA0MSwgMywgMjI3LCAxNTUsIDQxLCAKLSAgICAzLCA3MywgNDEsIDMsIDIzNSwgMjU1LCA0MSwgMywgMjQxLCAxODAsIDQxLCAzLCAyNDEsIDE2MCwgNDEsIDMsIDIxMSwgCi0gICAgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAyMjUsIDEwOCwgNDEsIDMsIDI1MiwgMTEsIDQxLCAzLCAyNTIsIDYsIDQxLCAKLSAgICAzLCAyMzEsIDEwOSwgNDEsIDMsIDIzMywgMjQ0LCA0MSwgMywgMjMxLCAzLCA0MSwgMywgMjQzLCA3MSwgNDEsIDMsIDI0NCwgCi0gICAgMTIxLCA0MSwgMywgMjEzLCAxNzYsIDQxLCAzLCAyMTYsIDExNywgNDEsIDMsIDIxNiwgMTc1LCA0MSwgMywgMjQ4LCA4LCAKLSAgICA0MSwgMywgMjQ4LCAxMiwgNDEsIDMsIDIzMiwgMjQxLCA0MSwgMywgMjIzLCAzNSwgNDEsIDMsIDI0OCwgMywgNDEsIDMsIAotICAgIDIyOSwgMTMzLCA0MSwgMywgMjE5LCAxOTEsIDQxLCAzLCAyMjAsIDMyLCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgCi0gICAgNjksIDQxLCAzLCAyNTAsIDUxLCA0MSwgMywgMjM1LCAxMDgsIDQxLCAzLCAyMjgsIDE2OSwgNDEsIDMsIDIxMSwgOCwgNDEsIAotICAgIDMsIDIzNCwgOTIsIDQxLCAzLCAyMjksIDQzLCA0MSwgMywgMjQyLCAyMTQsIDQxLCAzLCAyMzAsIDIzMCwgNDEsIDMsIDIyOCwgCi0gICAgMjMzLCA0MSwgMywgMjI3LCAxNDgsIDQxLCAzLCA2MSwgNDEsIDMsIDI1NCwgMTIzLCA0MSwgMywgMjI5LCA3MiwgNDEsIDMsIAotICAgIDE2MiwgNDEsIDMsIDI0MiwgMTgsIDQxLCAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MCwgNDEsIDMsIAotICAgIDI1MiwgMTgsIDQxLCAzLCAyNTIsIDE5MSwgNDEsIDMsIDIzMSwgMTI0LCA0MSwgMywgMjMzLCAyNTEsIDQxLCAzLCAyMzMsIAotICAgIDI1MCwgNDEsIDMsIDIzMSwgMTAsIDQxLCAzLCAyNDMsIDc5LCA0MSwgMywgMjQ0LCAxOTYsIDQxLCAzLCAyMTQsIDI3LCA0MSwgCi0gICAgMywgMjE3LCAxMDUsIDQxLCAzLCAyMTYsIDIwOCwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDE1LCA0MSwgMywgMjMzLCAKLSAgICAxMzUsIDQxLCAzLCAyMDUsIDQxLCAzLCAyNDgsIDIyMSwgNDEsIDMsIDIyOSwgMTQ4LCA0MSwgMywgMjA2LCA0MSwgMywgCi0gICAgMjIwLCAxMDIsIDQxLCAzLCAyMTAsIDExNiwgNDEsIDMsIDIxMCwgODIsIDQxLCAzLCAyNTEsIDMzLCA0MSwgMywgMjM1LCAKLSAgICAxNDEsIDQxLCAzLCAyMjgsIDE4NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDE3NiwgNDEsIDMsIDIzNCwgMjM0LCA0MSwgMywgCi0gICAgMjI5LCA1NiwgNDEsIDMsIDI0MywgMTM1LCA0MSwgMywgMTg0LCA0MSwgMywgMTk3LCA0MSwgMywgMjI3LCAxNjUsIDQxLCAzLCAKLSAgICAyMjYsIDE4MywgNDEsIDMsIDIyNiwgMTc5LCA0MSwgMywgMjQxLCA1MywgNDEsIDMsIDIxMSwgMjE1LCA0MSwgMywgMjExLCAKLSAgICAyMTEsIDQxLCAzLCAyMjQsIDI0OSwgNDEsIDMsIDI1MiwgOSwgNDEsIDMsIDI1MSwgMTkzLCA0MSwgMywgMjMxLCAxMDQsIAotICAgIDQxLCAzLCAyMzMsIDI0MiwgNDEsIDMsIDIzMCwgMjU1LCA0MSwgMywgMjQzLCA2NywgNDEsIDMsIDI0NCwgMzQsIDQxLCAzLCAKLSAgICAyMTMsIDEyNywgNDEsIDMsIDIxNiwgMTcsIDQxLCAzLCAyMTYsIDE1MywgNDEsIDMsIDI0OCwgNiwgNDEsIDMsIDI0OCwgMTAsIAotICAgIDQxLCAzLCAyMzIsIDEyNywgNDEsIDMsIDIyMiwgMTk3LCA0MSwgMywgMjQ3LCAxMjUsIDQxLCAzLCAyMjksIDEyMCwgNDEsIAotICAgIDMsIDIxOSwgNDAsIDQxLCAzLCAyMjAsIDEsIDQxLCAzLCAyMTAsIDIxLCA0MSwgMywgMjEwLCA2NiwgNDEsIDMsIDI0OSwgCi0gICAgMTc0LCA0MSwgMywgMjM1LCA1OSwgNDEsIDMsIDIyOCwgMTU5LCA0MSwgMywgMjEwLCAyMjksIDQxLCAzLCAyMzQsIDEwLCAKLSAgICA0MSwgMywgMjI5LCA0MSwgNDEsIDMsIDI0MiwgMTY0LCA0MSwgMywgMjMwLCAxMzIsIDQxLCAzLCAyMjgsIDY0LCA0MSwgMywgCi0gICAgMjI3LCAxMzIsIDQxLCAzLCA3MCwgNDEsIDMsIDIxNCwgMTkwLCA0MSwgMywgMjQwLCAyMjIsIDQxLCAzLCAyNDAsIDIxMiwgCi0gICAgNDEsIDMsIDIxMSwgMTk1LCA0MSwgMywgMjExLCAxODksIDQxLCAzLCAyMjQsIDE1MCwgNDEsIDMsIDI1MiwgOCwgNDEsIDMsIAotICAgIDI1MSwgMTI1LCA0MSwgMywgMjMxLCAxMDMsIDQxLCAzLCAyMzMsIDI0MCwgNDEsIDMsIDIzMCwgMjU0LCA0MSwgMywgMjQzLCAKLSAgICA2NiwgNDEsIDMsIDI0MywgMjM0LCA0MSwgMywgMjEyLCAxMTYsIDQxLCAzLCAyMTUsIDExOCwgNDEsIDMsIDIxNiwgMTM2LCAKLSAgICA0MSwgMywgMjQ4LCA0LCA0MSwgMywgMjQ4LCA5LCA0MSwgMywgMjMyLCA5OCwgNDEsIDMsIDIyMiwgMTQwLCA0MSwgMywgCi0gICAgMjQ2LCA3OCwgNDEsIDMsIDIyOSwgMTE1LCA0MSwgMywgMjE4LCA4MywgNDEsIDMsIDIxOSwgMjI1LCA0MSwgMywgMjEwLCAKLSAgICAxMywgNDEsIDMsIDIxMCwgNjIsIDQxLCAzLCAyNDksIDExMiwgNDEsIDMsIDIzNSwgNTEsIDQxLCAzLCAyMjgsIDE1NSwgNDEsIAotICAgIDMsIDIxMCwgMjEyLCA0MSwgMywgMjMzLCAyMTcsIDQxLCAzLCAyMjksIDQwLCA0MSwgMywgMjQyLCAxMTMsIDQxLCAzLCAKLSAgICAyMzAsIDEwMiwgNDEsIDMsIDIyNywgMjM3LCA0MSwgMywgMjI3LCAxMjgsIDQxLCAzLCA3NiwgNDEsIDMsIDIyNiwgMTk2LCAKLSAgICA0MSwgMywgMjI5LCAwLCA0MSwgMywgMjQxLCA2OCwgNDEsIDMsIDI0MSwgNTYsIDQxLCAzLCAyMTEsIDIyNywgNDEsIDMsIAotICAgIDIxMSwgMjE2LCA0MSwgMywgMjI1LCAxNiwgNDEsIDMsIDI1MiwgMTAsIDQxLCAzLCAyNTEsIDIwNSwgNDEsIDMsIDIzMSwgCi0gICAgMTA1LCA0MSwgMywgMjMzLCAyNDMsIDQxLCAzLCAyMzEsIDEsIDQxLCAzLCAyNDMsIDY5LCA0MSwgMywgMjQzLCA2OCwgNDEsIAotICAgIDMsIDI0NCwgNDMsIDQxLCAzLCAyMTMsIDEzOCwgNDEsIDMsIDExMSwgNDEsIDMsIDIxNiwgMTU2LCA0MSwgMywgMjQ4LCA3LCAKLSAgICA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIzMiwgMTU2LCA0MSwgMywgMjIyLCAyMTEsIDQxLCAzLCAyNDcsIDE0NSwgNDEsIDMsIAotICAgIDIyOSwgMTI0LCA0MSwgMywgMjE5LCA1OCwgNDEsIDMsIDIyMCwgNywgNDEsIDMsIDIxMCwgMjMsIDQxLCAzLCAyMTAsIDY3LCAKLSAgICA0MSwgMywgMjQ5LCAyMzgsIDQxLCAzLCAyMzUsIDY4LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDI0NCwgNDEsIDMsIAotICAgIDIzNCwgMjgsIDQxLCAzLCAyMjksIDQyLCA0MSwgMywgMjQyLCAxNzQsIDQxLCAzLCAyMzAsIDE2MSwgNDEsIDMsIDIyOCwgCi0gICAgNzQsIDQxLCAzLCAyMjcsIDEzNCwgNDEsIDMsIDc1LCA0MSwgMywgMjQ1LCAxNTAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgCi0gICAgMjQxLCAyMzgsIDQxLCAzLCAyNDEsIDIwOSwgNDEsIDMsIDIxMiwgMjIsIDQxLCAzLCAyMTIsIDEyLCA0MSwgMywgMjI1LCAKLSAgICAyMjEsIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjUyLCA3NSwgNDEsIDMsIDIzMSwgMTE3LCA0MSwgMywgMjMzLCAyNDgsIAotICAgIDQxLCAzLCAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgNywgNDEsIDMsIDI0MywgNzYsIDQxLCAzLCAyNDMsIDc0LCA0MSwgMywgCi0gICAgMjQ0LCAxNTQsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgMjIsIDQxLCAzLCAyMTYsIDE5NSwgNDEsIDMsIDI0OCwgCi0gICAgMTcsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjMzLCA1OCwgNDEsIDMsIDIyMywgMTI4LCA0MSwgMywgMjQ4LCA5MCwgNDEsIAotICAgIDMsIDIyOSwgMTQwLCA0MSwgMywgMjIxLCAxODEsIDQxLCAzLCAyMjAsIDYzLCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgCi0gICAgNzQsIDQxLCAzLCAyNTAsIDE5MCwgNDEsIDMsIDIzNSwgMTI2LCA0MSwgMywgMjI4LCAxNzgsIDQxLCAzLCAyMTEsIDQ3LCAKLSAgICA0MSwgMywgMjM0LCAxODIsIDQxLCAzLCAyMjksIDUyLCA0MSwgMywgMjI5LCA0OCwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKLSAgICAyNDMsIDUxLCA0MSwgMywgMjMxLCA5MSwgNDEsIDMsIDIyOSwgMTA3LCA0MSwgMywgMjI3LCAxNTYsIDQxLCAzLCAyMjksIAotICAgIDc5LCA0MSwgMywgMjMzLCAyMiwgNDEsIDI0OSwgMjE5LCA0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMjI0LCAxMywgCi0gICAgNzgsIDQxLCAzLCAyMjksIDEyMywgMjQ0LCAxOTYsIDQxLCAzLCAyMjksIDEyMywgMTc2LCA0MSwgMywgMjI5LCAxMjMsIAotICAgIDIxOSwgNDAsIDQxLCAxNiwgMjQ0LCAxNDQsIDQxLCAxNiwgMjM0LCAxODAsIDQxLCAxNiwgMjE2LCA4MSwgNDEsIDE2LCAKLSAgICAyMjgsIDIwOCwgNDEsIDE2LCAyNTIsIDE0NywgNDEsIDE2LCAyNDQsIDE5NSwgNDEsIDE2LCAyMTcsIDEwMSwgNDEsIDE2LCAKLSAgICAyNDgsIDE3NiwgNDEsIDE2LCAyNDcsIDEyNCwgNDEsIDE2LCAyMzMsIDIwNiwgNDEsIDE2LCAyMTYsIDIxLCA0MSwgMTYsIAotICAgIDI0NywgMTQ0LCA0MSwgMTYsIDIzNSwgNjAsIDQxLCAyMSwgMjEwLCA4NiwgNDEsIDIxLCAxMTAsIDQxLCAyMSwgMTA1LCA0MSwgCi0gICAgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTg5LCA0MSwgMjEsIDE5NCwgNDEsIDIxLCAxOTgsIDQxLCAyMSwgMTk1LCAKLSAgICA0MSwgMjEsIDIwMCwgNDEsIDMsIDIyOSwgMTIzLCAxODQsIDQxLCAzLCAyMjksIDEyMywgMjQ3LCAxNDUsIDMzLCA2LCAxLCAKLSAgICAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIDEsIDI0NiwgMzQsIDMzLCA0LCAxLCAyNDYsIDM0LCAzMywgNiwgCi0gICAgMSwgMjIzLCA0OSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDIyMywgNDksIDI0NiwgMzYsIDMzLCA2LCAxLCAyMzUsIDE4NSwgMzMsIAotICAgIDQsIDEsIDIzNSwgMTg1LCAzMywgNiwgMSwgMjQ3LCAxNjEsIDMzLCA0LCAxLCAyNDcsIDE2MSwgMzMsIDYsIDEsIDIzMCwgCi0gICAgMTQwLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTM2LCAyMjYsIAotICAgIDIwMSwgMzMsIDQsIDEsIDI1MSwgMTM2LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyOSwgODcsIDIxMSwgMzEsIDMzLCA0LCAxLCAKLSAgICAyMjksIDg3LCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjUyLCAxODUsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIAotICAgIDI4LCAyLCAyNTIsIDE4NSwgMjExLCAzMSwgMzMsIDYsIDEsIDIzNSwgMTgzLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAKLSAgICAxODMsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTAsIDIxMiwgMzMsIDQsIDEsIDIyMywgNDksIDIxMCwgMjEyLCAKLSAgICAzMywgNiwgMSwgMjM1LCAxODMsIDYxLCAzMywgNCwgMSwgMjM1LCAxODMsIDYxLCAzMywgNiwgMSwgMjUwLCAwLCAyMzIsIAotICAgIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjE0LCAKLSAgICAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjE0LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgCi0gICAgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIAotICAgIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTUsIDE3OCwgMzMsIDQsIDEsIDIyMywgCi0gICAgNDksIDIxNSwgMTc4LCAzMywgNiwgMSwgMjE5LCA1MiwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0OCwgOTAsIDMzLCAKLSAgICA2LCAxLCAyMTksIDUyLCAyNDUsIDE3NCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0NSwgMTc0LCAzMywgNiwgMSwgMjE5LCA1MiwgCi0gICAgMjQ1LCAxNTksIDMzLCA0LCAxLCAyMTksIDUyLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDIzMCwgMTQ0LCA3NiwgMzMsIDQsIDEsIAotICAgIDIzMCwgMTQ0LCA3NiwgMzMsIDYsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDQsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDYsIDEsIAotICAgIDUyLCAyMzAsIDE0NCwgNzYsIDMzLCA0LCAxLCA1MiwgMjMwLCAxNDQsIDc2LCAzMywgMSwgMjMwLCA4NiwgNzYsIDM4LCAzMywgCi0gICAgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDgsIDIzMCwgMTkxLCA1MCwgMzgsIDMzLCAyNDAsIDIxMSwgMjMwLCAxOTEsIDUwLCAKLSAgICAzOCwgMzMsIDIxNiwgMTQ4LCAyMzAsIDE5MSwgNTAsIDIxOSwgOTMsIDI1MywgMjE2LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAKLSAgICAyMzYsIDYwLCAzOCwgMzMsIDEsIDczLCAzOCwgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA3MCwgMzgsIDMzLCAxLCAyNDIsIAotICAgIDMsIDUwLCAzOCwgMzMsIDEsIDIxMSwgMjcsIDM4LCAzMywgMSwgMjE5LCA1MiwgNTAsIDM4LCAzMywgMSwgMjI2LCAyMDEsIAotICAgIDM4LCAzMywgMjM0LCAxOTIsIDM4LCAzMywgMjI1LCAyMjcsIDMzLCAyMzQsIDE5MiwgMzMsIDIyNSwgMjI3LCAzMywgNiwgMSwgCi0gICAgMjQ2LCA0NiwgMzMsIDQsIDEsIDI0NiwgNDYsIDMzLCA2LCAxLCAyNDYsIDI3LCAzMywgNCwgMSwgMjQ2LCAyNywgMzMsIDYsIAotICAgIDEsIDIxMCwgNTIsIDMzLCA0LCAxLCAyMTAsIDUyLCAzMywgNiwgMSwgMjUwLCAyMDYsIDMzLCA0LCAxLCAyNTAsIDIwNiwgCi0gICAgMzMsIDYsIDEsIDI0NiwgMjUsIDMzLCA0LCAxLCAyNDYsIDI1LCAzMywgNiwgMSwgMjE3LCAyMywgMiwgMjMwLCAyMjQsIAotICAgIDEwMywgMzMsIDQsIDEsIDIxNywgMjMsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyMTUsIDc4LCAzMywgNCwgMSwgCi0gICAgMjE1LCA3OCwgMzMsIDYsIDEsIDIxNSwgMTYwLCAzMywgNCwgMSwgMjE1LCAxNjAsIDMzLCA2LCAxLCAyMTUsIDE2NCwgMzMsIAotICAgIDQsIDEsIDIxNSwgMTY0LCAzMywgNiwgMSwgMjE3LCAyOCwgMzMsIDQsIDEsIDIxNywgMjgsIDMzLCA2LCAxLCAyNDAsIDE5OCwgCi0gICAgMzMsIDQsIDEsIDI0MCwgMTk4LCAzMywgNiwgMSwgMjE5LCAyMDYsIDMzLCA0LCAxLCAyMTksIDIwNiwgMzgsIDMzLCAxLCAKLSAgICAyMzUsIDE4MywgNzUsIDIwLCAxLCA2MSwgMjAsIDEsIDE3NiwgMjAsIDEsIDcwLCAyMCwgMSwgMjMzLCAyMTcsIDIwLCAxLCAKLSAgICAyNDUsIDIwOSwgMjAsIDEsIDIyMywgMTA4LCAyMCwgMSwgMjE3LCA4NiwgMjAsIDEsIDc2LCAyMCwgMSwgMjI3LCAxNDgsIAotICAgIDIwLCAxLCA3MywgMjAsIDEsIDIzMywgMTM1LCAyMCwgMSwgMTkwLCAyMCwgMSwgMjIyLCAyMzksIDIwLCAxLCAyMjMsIDI5LCAKLSAgICAyMCwgMSwgMjMzLCA0OSwgMjAsIDEsIDIzMSwgNzksIDIwLCAxLCAyMTcsIDEwMSwgMjAsIDEsIDIyOSwgMTQ2LCAyMCwgMSwgCi0gICAgMjI4LCAxODMsIDIwLCAxLCAxOTMsIDIwLCAxLCAyMTgsIDQsIDIwLCAxLCAyMzAsIDEwMiwgMjAsIDEsIDIyMCwgMjcsIDIwLCAKLSAgICAxLCAyMTksIDE5MSwgMjAsIDEsIDIyMCwgMzcsIDIwLCAxLCAyMjAsIDEyMywgMjAsIDEsIDIzMywgMTU1LCAyMCwgMSwgCi0gICAgMjM0LCAxNTYsIDIwLCAxLCAyMjcsIDIwOSwgMjAsIDEsIDIyNywgMjM3LCAyMCwgMSwgMjI4LCAxNTQsIDIwLCAxLCAyMTAsIAotICAgIDIyNiwgMjAsIDEsIDIxOSwgMjI1LCAyMCwgMSwgMjEwLCAxODcsIDIwLCAxLCAxOTEsIDIwLCAxLCAyMjgsIDksIDIwLCAxLCAKLSAgICAyMzQsIDE0MiwgMjAsIDEsIDIyNSwgMTUxLCAyMCwgMSwgMjI4LCAxNzYsIDIwLCAxLCAyMjcsIDI0NiwgMjAsIDEsIDIyNCwgCi0gICAgMTQ0LCAyMCwgMSwgMjExLCAxOTIsIDIwLCAxLCAyMjUsIDIxMSwgMjAsIDEsIDI0NCwgMTQ3LCAyMCwgMSwgMjIyLCAxNDAsIAotICAgIDIwLCAxLCAyMzIsIDk4LCAyMCwgMSwgMjMwLCAyMzAsIDIwLCAxLCAyMjgsIDIzMywgMjAsIDEsIDIyMywgNTEsIDIwLCAxLCAKLSAgICAyMjMsIDE3MSwgMjAsIDEsIDIzNCwgMTY1LCAyMCwgMSwgMjI5LCA3LCAyMCwgMSwgMjI5LCA1NiwgMjAsIDEsIDIyOSwgNzcsIAotICAgIDIwLCAxLCAyMjAsIDcsIDIwLCAxLCAyMjQsIDE0NywgMjAsIDEsIDI0MywgMjM0LCAyMCwgMSwgMjQ0LCAzNywgMjAsIDEsIAotICAgIDIxMiwgNjUsIDIwLCAxLCAxOTcsIDIwLCAxLCAyMzIsIDI0MSwgMjAsIDEsIDIyNSwgMTA4LCAyMCwgMSwgMjMyLCAxMTksIAotICAgIDIwLCAxLCAyMzQsIDI4LCAyMCwgMSwgMjMxLCAxMTQsIDIwLCAxLCAyMjMsIDgzLCAyMCwgMSwgMjMxLCA1OCwgMjAsIDEsIAotICAgIDE4NCwgMjAsIDEsIDIxNiwgMTE3LCAyMCwgMSwgMjM0LCA5MiwgMjAsIDEsIDIzMCwgMTYxLCAyMCwgMSwgMjMxLCAxMjIsIAotICAgIDIwLCAxLCAyMTYsIDIzMCwgMjAsIDEsIDIzMywgMjUxLCAyMCwgMSwgMjE2LCAyNDcsIDIwLCAxLCAyMjcsIDIzOCwgMjAsIAotICAgIDEsIDIyMSwgMjUxLCAyMCwgMSwgMjQ0LCAxOTIsIDIwLCAxLCAyMzMsIDI1MywgMjAsIDEsIDIzNCwgMjQsIDIwLCAzOCwgCi0gICAgMTY0LCAyMzQsIDUsIDIwLCAzOCwgMTY0LCAyMTUsIDExMCwgMjAsIDIyOCwgMTgyLCAyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKLSAgICAyMCwgMjQ5LCAyMjYsIDIwLCAyNDksIDIxOSwgMjAsIDIyMCwgMTUwLCAyMCwgMjI0LCAxMywgNzgsIDU4LCAxLCAyNTAsIAotICAgIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjUsIDYxLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAyMjUsIDYxLCA1OCwgMSwgCi0gICAgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjIwLCA4NCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgMjIwLCA4NCwgCi0gICAgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIAotICAgIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjIsIDE0MCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgCi0gICAgMjExLCA3MCwgMjIyLCAxNDAsIDU4LCAxLCAyNDUsIDIwLCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgCi0gICAgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTE4LCAKLSAgICAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE4LCAKLSAgICAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAKLSAgICAyMjUsIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgCi0gICAgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMCwgMjMzLCAKLSAgICAzOSwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDIzMywgMzksIAotICAgIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDIzMywgMzksIDEzOCwgCi0gICAgMTMwLCA1OCwgMSwgNTksIDY3LCAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NSwgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIAotICAgIDIzMiwgMTA4LCA0NCwgMjQ5LCAxNjEsIDI1NCwgMTA5LCA1OCwgMSwgMjIzLCAxNTcsIDEyMCwgNzQsIDU4LCAxLCAyMjMsIAotICAgIDE1NywgMTI0LCA3NCwgNTgsIDEsIDIyMywgMTU3LCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIyMywgMTU3LCAyMzUsIDE5MywgCi0gICAgMjQ1LCAzMSwgNzgsIDU4LCAxLCAxMjEsIDIzNSwgMTkzLCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIxOCwgMTExLCAyMiwgMTI1LCAKLSAgICAyMTYsIDMwLCA1OCwgMSwgMjE4LCAxMTEsIDIyLCAxMjEsIDIxNiwgMzAsIDcsIDYsIDEsIDI0NSwgMTk5LCAyNTQsIDE3MCwgCi0gICAgNywgNCwgMSwgMjQ1LCAxOTksIDI1NCwgMTcwLCA3LCA2LCAxLCAyNDUsIDE5OSwgMjU0LCAxOTYsIDcsIDQsIDEsIDI0NSwgCi0gICAgMTk5LCAyNTQsIDE5NiwgNywgNiwgMSwgMjQxLCAyMDcsIDcsIDQsIDEsIDI0MSwgMjA3LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCAKLSAgICA0LCAxLCAyMTUsIDQwLCA3LCA2LCAxLCAyMTUsIDIyOSwgNywgNCwgMSwgMjE1LCAyMjksIDcsIDYsIDEsIDI0OSwgMTEwLCAKLSAgICA3LCA0LCAxLCAyNDksIDExMCwgNywgNiwgMSwgMjQ5LCAxMTEsIDIsIDI0OSwgMjE5LCA3LCA0LCAxLCAyNDksIDExMSwgMiwgCi0gICAgMjQ5LCAyMTksIDcsIDEsIDQsIDYsIDI0NSwgNiwgNywgMSwgNCwgNiwgMjIyLCA5MSwgNywgNiwgMSwgMjU1LCA3MywgNywgCi0gICAgNCwgMSwgMjU1LCA3MywgNywgNiwgMSwgMjU0LCA3MywgNywgNCwgMSwgMjU0LCA3MywgNywgNiwgMSwgMjUzLCAxOTIsIDcsIAotICAgIDQsIDEsIDI1MywgMTkyLCA3LCA2LCAxLCAyNTMsIDE3NiwgNywgNCwgMSwgMjUzLCAxNzYsIDcsIDYsIDEsIDI1MywgMTc3LCAKLSAgICAyLCAyMDMsIDEzMCwgNywgNCwgMSwgMjUzLCAxNzcsIDIsIDIwMywgMTMwLCA3LCA2LCAxLCAyNTMsIDE2NywgNywgNCwgMSwgCi0gICAgMjUzLCAxNjcsIDcsIDYsIDEsIDIyMywgNDksIDI1MSwgNjcsIDIsIDI0NywgMTIwLCA3LCA0LCAxLCAyMjMsIDQ5LCAyNTEsIAotICAgIDY3LCAyLCAyNDcsIDEyMCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDkxLCA3LCA2LCAKLSAgICAxLCAyMzUsIDI0LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgCi0gICAgMjM1LCAyNCwgMiwgMjE4LCAxMDMsIDIyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDIxOCwgMTAzLCAKLSAgICAyMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA0LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA2LCAKLSAgICAxLCAyMzMsIDE0OSwgMiwgMTI1LCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDQsIDEsIDE0NCwgMiwgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDYsIAotICAgIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDQsIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDYsIDEsIDIyNiwgMTgzLCA3LCA0LCAKLSAgICAxLCAyMjYsIDE4MywgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNCwgMSwgCi0gICAgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDI0NCwgNTMsIAotICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyNDQsIDUzLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAyMjksIDIxNywgNzcsIAotICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDIyOSwgMjE3LCA3NywgNywgNiwgMSwgMjI0LCA5NywgMiwgMjE4LCAxMDMsIAotICAgIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMjQsIDk3LCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIAotICAgIDYsIDEsIDIyNCwgOTcsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjI0LCA5NywgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAKLSAgICAxLCAyMjMsIDIyNCwgMjIyLCAxODYsIDcsIDQsIDEsIDIyMywgMjI0LCAyMjIsIDE4NiwgNywgNiwgMSwgMjIyLCAxMzAsIAotICAgIDIyMiwgMTg2LCA3LCA0LCAxLCAyMjIsIDEzMCwgMjIyLCAxODYsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgCi0gICAgOTEsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIDIxMiwgMTA2LCA3LCA0LCAxLCAyMTIsIAotICAgIDEwNiwgNywgNiwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA0LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDYsIDEsIAotICAgIDIxNiwgMTUyLCAyLCA5MSwgNywgNCwgMSwgMjE2LCAxNTIsIDIsIDkxLCA3LCA2LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAKLSAgICAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIAotICAgIDM5LCA3LCA2LCAxLCAyMTMsIDI0NSwgNywgNCwgMSwgMjEzLCAyNDUsIDcsIDYsIDEsIDI0NSwgNjUsIDcsIDQsIDEsIDI0NSwgCi0gICAgNjUsIDcsIDYsIDEsIDIzNSwgMTcxLCA3LCA0LCAxLCAyMzUsIDE3MSwgNywgNiwgMSwgMjQ5LCAyMDcsIDcsIDQsIDEsIAotICAgIDI0OSwgMjA3LCA1OCwgMSwgMjE0LCAxMzMsIDcsIDQsIDEsIDI0NiwgNjksIDcsIDQsIDEsIDIzMiwgODQsIDcsIDQsIDEsIAotICAgIDIzMCwgODAsIDcsIDQsIDEsIDIyNywgMjAxLCA3LCA0LCAxLCAyMjIsIDEyOSwgNywgMSwgNCwgNiwgMjIyLCAxMjksIDcsIAotICAgIDQsIDEsIDIxNSwgMTA4LCA3LCA0LCAxLCAyMTQsIDE5NywgNywgNiwgMSwgMjM1LCAyMTMsIDI0OSwgNjAsIDcsIDQsIDEsIAotICAgIDIzNSwgMjEzLCAyNDksIDYwLCA3LCA2LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCA3LCA0LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCAKLSAgICA3LCA2LCAxLCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNCwgCi0gICAgMSwgMjE1LCA5NCwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIAotICAgIDE1NiwgNywgNiwgMSwgMjM1LCAyMTMsIDE1MywgNywgNCwgMSwgMjM1LCAyMTMsIDE1MywgNywgNiwgMSwgMjM1LCAyMTMsIAotICAgIDIyMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjEzLCAyMjIsIDkxLCA3LCA2LCAxLCAyMzUsIDIxMywgMjE3LCAxNTIsIDcsIDQsIAotICAgIDEsIDIzNSwgMjEzLCAyMTcsIDE1MiwgNTgsIDEsIDEyMSwgMjUwLCAzMSwgMjU1LCAxNCwgNTgsIDEsIDI0OSwgMjI2LCA1OCwgCi0gICAgMSwgMjE5LCAyNTEsIDI0NSwgOTgsIDUwLCA3LCA2LCAxLCAyMjEsIDI1NSwgNywgNCwgMSwgMjIxLCAyNTUsIDcsIDYsIDEsIAotICAgIDIxNSwgOTQsIDI0MiwgNjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAyNDEsIDUyLCAyMiwgMjUyLCA0MSwgNywgCi0gICAgNiwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjUxLCAKLSAgICA2NywgMiwgMTMwLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIAotICAgIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgCi0gICAgNCwgMSwgMjM1LCAyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIAotICAgIDEsIDIzMCwgMjYsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgMSwgCi0gICAgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAxLCAKLSAgICAyMjIsIDkyLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjEsIDIsIAotICAgIDkxLCA1OCwgMSwgNCwgMjcsIDIyNiwgMjM0LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAKLSAgICAyMjMsIDQ5LCAyNDUsIDYsIDcsIDI0NSwgMTAzLCAxLCAyMjMsIDQ5LCAyMjYsIDEwNSwgNywgMjQ1LCAxMDMsIDEsIDIzNSwgCi0gICAgMTkzLCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAyNDAsIDE1NCwgMjMyLCAxMjksIDcsIDI0NSwgMTAzLCAxLCAyNTQsIDIzLCAKLSAgICAxOTMsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzMsIDIxNywgMjMwLCAyMjksIAotICAgIDIxNCwgNSwgMjQ2LCA0OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3MCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NSwgCi0gICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCA1LCAyNDEsIDI1MywgMjE3LCAyMzAsIAotICAgIDIyOSwgMjE0LCAxLCAyMzQsIDI4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAKLSAgICAyMTQsIDEsIDI0MiwgMTc0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0MiwgMjI0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDUsIAotICAgIDI1NCwgNzUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ5LCAyMzgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjUwLCA4NiwgCi0gICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMzUsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNSwgMTA5LCAyMTcsIAotICAgIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTMzLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTM5LCAyMTcsIDIzMCwgCi0gICAgMjI5LCAyMTQsIDEsIDI0OCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OCwgMTE0LCAyMTcsIDIzMCwgMjI5LCAKLSAgICAyMTQsIDEsIDExMSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTYsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDcsIAotICAgIDE0NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDgsIDcsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjI4LCA3NCwgMjE3LCAKLSAgICAyMzAsIDIyOSwgMjE0LCAxLCAyMjUsIDE2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyNSwgMTIxLCAyMTcsIDIzMCwgCi0gICAgMjI5LCAyMTQsIDEsIDI1MSwgMjA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI1MiwgMTAsIDIxNywgMjMwLCAyMjksIAotICAgIDIxNCwgMSwgMjMwLCAxNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAyMTEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgCi0gICAgMjMyLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAxNjUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE5LCAKLSAgICA1OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDEsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA2MSwgMjE3LCAKLSAgICAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNzMsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDcwLCAyMTcsIDIzMCwgMjI5LCAKLSAgICAyMTQsIDI1LCA1LCA3NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgMjI2LCAxODMsIDIxNywgMjMwLCAyMjksIDIxNCwgCi0gICAgMjI1LCAxMiwgMjMxLCAxNTgsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTcsIDIxNywgMjMwLCAyMjksIAotICAgIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTUsIDIyOCwgNTYsIAotICAgIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAKLSAgICAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgCi0gICAgMjE5LCAxMTcsIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDIyOCwgNTYsIDIzNSwgMjQwLCAKLSAgICAyNDQsIDIsIDEzNCwgMjE5LCAxMTYsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjQsIDIyLCA3OCwgMjI4LCA1NiwgMjM1LCAyNDAsIAotICAgIDIyNSwgNDAsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjIyLCAxMTgsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjI0LCAyMywgCi0gICAgNzgsIDIyNSwgMTQ0LCAxLCAxNzYsIDIyNSwgMTQ0LCAxLCAyMzQsIDEzMiwgMjI1LCAxNDQsIDEsIDI0MywgMTM1LCAyMjUsIAotICAgIDE0NCwgMSwgMjI5LCA3NywgMjI1LCAxNDQsIDEsIDI1MSwgMzMsIDIyNSwgMTQ0LCAxLCAyNTAsIDE1NywgMjI1LCAxNDQsIAotICAgIDEsIDIzNSwgMTQxLCAyMjUsIDE0NCwgMSwgMjI3LCAxNjUsIDIyNSwgMTQ0LCAxLCAyMTcsIDEwNSwgMjI1LCAxNDQsIDEsIAotICAgIDIxNiwgMjA4LCAyMjUsIDE0NCwgMSwgMjQ4LCAyMjEsIDIyNSwgMTQ0LCAxLCAxOTcsIDIyNSwgMTQ0LCAxLCAxOTAsIDIyNSwgCi0gICAgMTQ0LCAxLCAyMjUsIDE0NywgMjI1LCAxNDQsIDEsIDI1MiwgMTkxLCAyMjUsIDE0NCwgMSwgMTg0LCAyMjUsIDE0NCwgMSwgCi0gICAgMjE1LCAxODMsIDIyNSwgMTQ0LCAxLCAyMTUsIDE3NSwgMjI1LCAxNDQsIDEsIDI0NiwgMzgsIDIyNSwgMTQ0LCAxLCAyMTIsIAotICAgIDY1LCAyMjUsIDE0NCwgMSwgMjEwLCA4MiwgMjI1LCAxNDQsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NCwgMSwgNCwgNjEsIDIyNSwgCi0gICAgMTQ0LCAxLCAxOTEsIDIyNSwgMTQ0LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAyMzMsIDEzNSwgMjI1LCAxNDQsIDEsIDIyMCwgCi0gICAgMTAyLCAyMjUsIDE0NCwgMSwgMjA2LCAyMjUsIDE0NCwgMSwgMTYyLCAyMjUsIDE0NCwgMSwgNjEsIDIyNSwgMTQ0LCAxLCAKLSAgICA3MywgMjI1LCAxNDQsIDEsIDcwLCAyMjUsIDE0NCwgMSwgNzUsIDIyNSwgMTQ0LCAxLCA3NiwgMjI1LCAxNDQsIDEsIDIyNCwgCi0gICAgODgsIDIyNSwgMTQ0LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDQsIDEsIDI0NCwgMTk2LCAyMjUsIDE0NCwgMSwgMjQzLCAyOSwgCi0gICAgMjI1LCAxNDQsIDEsIDI0NSwgMjA5LCAyMjUsIDE0NCwgMjE4LCA3MywgMSwgMjEyLCA2NSwgMjI1LCAxNDQsIDIxOCwgNzMsIAotICAgIDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxNSwgMTU2LCAyMjUsIDE0NCwgMSwgMjE1LCAxNDQsIDIyNSwgMTQ0LCAxLCAyNDgsIAotICAgIDEzNSwgMjI1LCAxNDQsIDEsIDIyOCwgMTEwLCAyMjUsIDE0NCwgMSwgMjU0LCAxNDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxMywgCi0gICAgMTM0LCAyMjAsIDEwMiwgMjI1LCAxNDQsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ0LCAxLCAyNTMsIDIyMywgMjQ0LCAKLSAgICAxOTYsIDIyNSwgMTQ0LCAyMTgsIDczLCAxLCAyMDUsIDIyNSwgMTQ0LCAyMTgsIDI1LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAKLSAgICAyNTAsIDI1NSwgMjI1LCAxNDQsIDIxOSwgMTU1LCAyNDEsIDIzNiwgNzgsIDIyNSwgMTQ0LCA1MiwgMjQxLCAyMzYsIDc4LCAKLSAgICAyMjUsIDE0NCwgMTY0LCAyMjAsIDk1LCAyMjUsIDE0NCwgMTY0LCA1MiwgMjIwLCA5NSwgMTc5LCA1LCAyNTQsIDc1LCAxNzksIAotICAgIDUsIDIxMywgMTQ3LCAxNzksIDEsIDYxLCAxNzksIDEsIDI1NSwgNzMsIDE3OSwgMSwgNzMsIDE3OSwgMSwgMjM2LCAzMywgCi0gICAgMTc5LCAxLCA3MCwgMTc5LCAxLCAyMTQsIDExOCwgMTc5LCAxLCAxNDksIDE1MywgMTc5LCAxLCAxNDksIDIyMiwgMTgwLCAKLSAgICAxNzksIDEsIDE0OSwgMTU2LCAxNzksIDEsIDE0OSwgMjMyLCAxODUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjQ1LCAyMDksIAotICAgIDE3OSwgMSwgMjU0LCAyMDEsIDE3OSwgMSwgNzYsIDE3OSwgMSwgMjI2LCAxODMsIDE3OSwgMSwgMjUzLCAxOTIsIDE3OSwgMSwgCi0gICAgMTc2LCAxNzksIDEsIDIzNCwgMTMyLCAxNzksIDEsIDI0MywgMTM1LCAxNzksIDEsIDI0MiwgMjQ5LCAxNzksIDEsIDIyOSwgCi0gICAgNzcsIDE3OSwgMSwgMjUxLCAzMywgMTc5LCAxLCAyNTAsIDE1NywgMTc5LCAxLCAyMzUsIDE0MSwgMTc5LCAxLCAyMzUsIAotICAgIDExNCwgMTc5LCAxLCAyMjcsIDE2NSwgMTc5LCAxLCAyMTUsIDE1NiwgMTc5LCAxLCAyMTUsIDE0NCwgMTc5LCAxLCAyNDgsIAotICAgIDEzNSwgMTc5LCAxLCAyNDgsIDExOSwgMTc5LCAxLCAyMjgsIDExMCwgMTc5LCAxLCAyMTcsIDEwNSwgMTc5LCAxLCAyMTYsIAotICAgIDIwOCwgMTc5LCAxLCAyNDgsIDIyMSwgMTc5LCAxLCAyNDgsIDI1LCAxNzksIDEsIDE5NywgMTc5LCAxLCAxOTAsIDE3OSwgMSwgCi0gICAgMjI1LCAxNDcsIDE3OSwgMSwgMjUyLCAxOTEsIDE3OSwgMSwgMjUyLCAxOCwgMTc5LCAxLCAxODQsIDE3OSwgMSwgMTkxLCAKLSAgICAxNzksIDEsIDIwNSwgMTc5LCAxLCAyMzMsIDEzNSwgMTc5LCAxLCAyMTQsIDI3LCAxNzksIDEsIDIyMCwgMTAyLCAxNzksIDEsIAotICAgIDIxOCwgMjIzLCAxNzksIDEsIDIwNiwgMTc5LCAxLCAxNjIsIDE3OSwgMSwgMjMyLCAxODQsIDE3OSwgMTE2LCA1LCAyNDIsIAotICAgIDQ0LCAxNzksIDI1LCA1LCAyNTUsIDczLCAxNzksIDI1LCA1LCA3MywgMTc5LCAyNSwgNSwgMjM2LCAzMywgMTc5LCAyNSwgNSwgCisgICAgMjEwLCAyMDMsIDI0LCAxLCAyMTAsIDIwNCwgMjQsIDEsIDIxMCwgMjA3LCAyNCwgMSwgMjU0LCAzNSwgMjQsIDEsIDI1NCwgCisgICAgMjksIDEwOSwgMjU0LCAxMDAsIDIzMiwgMjA0LCA3OCwgMTA5LCAyNTQsIDEwMCwgMjIzLCA1MSwgNzgsIDEwOSwgMjU0LCAKKyAgICAxMDAsIDEyMywgNzgsIDEwOSwgMjU0LCAxMDAsIDExMywgNzgsIDEwOSwgMjU0LCAxMDAsIDEzNCwgNzgsIDEwOSwgMjU0LCAKKyAgICAxMDAsIDI0NCwgMTIsIDc4LCAxMDksIDI1NCwgMTAwLCAyMTYsIDE1LCA3OCwgMTA5LCAyNTQsIDEwMCwgMjMwLCAyMjUsIAorICAgIDc4LCAxMDksIDI1NCwgMTAwLCAyNTEsIDE3NiwgNzgsIDEwOSwgMjU0LCAxMDAsIDI0NCwgOTMsIDc4LCAxMDksIDI1NCwgCisgICAgMTAwLCAyMjEsIDE3NywgNzgsIDEwOSwgMjU0LCAxMDAsIDIxNiwgMTcwLCA3OCwgMTA5LCAyNTQsIDEwMCwgMjQ0LCA1LCAKKyAgICA3OCwgMTA5LCAyNTQsIDEwMCwgMjQxLCAyMjUsIDc4LCAxMDksIDI1NCwgMTAwLCAyNDUsIDIyNSwgNzgsIDEwOSwgMjU0LCAKKyAgICAxMDAsIDIzMSwgMTg3LCA3OCwgMjUxLCAxODUsIDEsIDI1MSwgMTI2LCAyNTEsIDE4NSwgMSwgMjEwLCA0NCwgMjUxLCAxODUsIAorICAgIDEsIDIzNSwgMTA5LCAyNTEsIDE4NSwgMSwgMjQyLCAxMTQsIDI1MSwgMTg1LCAxLCAyNDUsIDIxMCwgMjUxLCAxODUsIDEsIAorICAgIDI0NSwgMTM2LCAyNTEsIDE4NSwgMSwgMjI2LCAxODQsIDI1MSwgMTg1LCAxLCAyMjYsIDE4OCwgMjUxLCAxODUsIDEsIDIzNSwgCisgICAgMTgwLCAyNTEsIDE4NSwgMSwgMjU0LCAxMDIsIDI1MSwgMTg1LCAxLCAyMzUsIDIyNSwgMjUxLCAxODUsIDEsIDIxNCwgMTY4LCAKKyAgICAyNTEsIDE4NSwgMSwgMjM2LCAxNywgMjUxLCAxODUsIDEsIDIyOSwgNTgsIDI1MSwgMTg1LCAxLCAyNTQsIDE5NiwgMjUxLCAKKyAgICAxODUsIDEsIDI1MywgMTg4LCAyNTEsIDE4NSwgMSwgMjU0LCAxMzcsIDI1MSwgMTg1LCAxLCAyMjYsIDIwNSwgMjUxLCAxODUsIAorICAgIDEsIDIyNiwgMTkwLCAyNTEsIDE4NSwgMSwgMjM1LCAyMjIsIDI1MSwgMTg1LCA0MCwgMSwgMjI2LCAxMDYsIDI1MSwgMTg1LCAKKyAgICA0MCwgMSwgMjE3LCAxNTMsIDI1MSwgMTg1LCA0MCwgMSwgMjM1LCAyNCwgMjUxLCAxODUsIDQwLCAxLCAyNDIsIDYxLCAyNTEsIAorICAgIDE4NSwgMSwgMjQyLCAyNTEsIDI1MSwgMTg1LCAxLCAyMzMsIDAsIDI1MSwgMTg1LCAxLCAyMDksIDI1MCwgOSwgMjE4LCAKKyAgICAxMDQsIDIxNywgMTUzLCA5LCAyMTgsIDEwNCwgMjEyLCA0LCA5LCAyMTgsIDEwNCwgMjExLCAxNTgsIDksIDIxOCwgMTA0LCAKKyAgICAyNTEsIDgwLCA5LCAyMTgsIDEwNCwgMjE3LCAyNTUsIDksIDIxOCwgMTA0LCAyNDAsIDE1OSwgOSwgMjE4LCAxMDQsIDI0MCwgCisgICAgMTYzLCA5LCAyMTgsIDEwNCwgMjQwLCAyMzIsIDksIDIxOCwgMTA0LCAyNDAsIDE2MCwgOSwgMjE4LCAxMDQsIDIxNywgMTU2LCAKKyAgICA5LCAyMTgsIDEwNCwgMjQwLCAxNjIsIDksIDIxOCwgMTA0LCAyNDAsIDE1OCwgOSwgMjE4LCAxMDQsIDI0MCwgMjMwLCA5LCAKKyAgICAyMTgsIDEwNCwgMjQwLCAxNjEsIDksIDIxOCwgMTA0LCAyNDAsIDE1NywgOSwgMjE4LCAxMDQsIDIzMCwgMjYsIDksIDIxOCwgCisgICAgMTA0LCAyNDIsIDYxLCA5LCAyMTgsIDEwNCwgMjIyLCA5MiwgOSwgMjE4LCAxMDQsIDIyNiwgMTA2LCA5LCAyMTgsIDEwNCwgCisgICAgMjE5LCAyMiwgOSwgMjE4LCAxMDQsIDI0OSwgNjEsIDksIDIxOCwgMTA0LCAyNDAsIDE2NCwgOSwgMjE4LCAxMDQsIDI0MSwgCisgICAgMTkxLCA5LCAyMTgsIDEwNCwgMjE3LCAxNjUsIDksIDIxOCwgMTA0LCAyMTcsIDIzNCwgOSwgMjE4LCAxMDQsIDIxOCwgMTY5LCAKKyAgICA5LCAyMTgsIDEwNCwgMjIwLCAxMTEsIDksIDIxOCwgMTA0LCAyMjUsIDIyNSwgOSwgMjE4LCAxMDQsIDIyNCwgOTksIDksIAorICAgIDIxOCwgMTA0LCAyMTYsIDQ0LCA5LCAyMTgsIDEwNCwgMjE3LCAxNTUsIDksIDIxOCwgMTA0LCAyMTcsIDI0NSwgOSwgMjE4LCAKKyAgICAxMDQsIDI0MCwgMTcxLCA5LCAyMTgsIDEwNCwgMjQwLCAxNTYsIDksIDIxOCwgMTA0LCAyMjUsIDE1MCwgOSwgMjE4LCAxMDQsIAorICAgIDIyNCwgOTcsIDU2LCAxLCA0LCAyMzMsIDIxOCwgNTYsIDEsIDQsIDIxOSwgMTkyLCA1NiwgMSwgNCwgMjE4LCA4NCwgNTYsIAorICAgIDEsIDQsIDExMSwgNTYsIDEsIDQsIDIyNywgMjM4LCA1NiwgMSwgNCwgMTYyLCA1NiwgMSwgNCwgMjQxLCAxODEsIDU2LCAxLCAKKyAgICA0LCAyNDAsIDIyMywgNTYsIDEsIDQsIDI0MSwgMjM5LCA1NiwgMSwgNCwgMjQxLCA2OSwgNTYsIDEsIDQsIDIzMCwgMTAzLCAKKyAgICA1NiwgMSwgNCwgMjA1LCA1NiwgMSwgNCwgMjIzLCAzNiwgNTYsIDEsIDQsIDIyMiwgMTQxLCA1NiwgMSwgNCwgMjIzLCAxMjksIAorICAgIDU2LCAxLCA0LCAyMjIsIDIxMiwgODgsIDI0LCAyMzQsIDU5LCA4OCwgMjQsIDIyOCwgMjI3LCA4OCwgMjQsIDIxNiwgMTAyLCAKKyAgICA4OCwgMjQsIDIyMywgMjcsIDg4LCAyNCwgMjMwLCAyMTgsIDg4LCAyNCwgMjI1LCA5NiwgODgsIDI0LCAyMTksIDE0OSwgODgsIAorICAgIDI0LCAyMzYsIDU3LCA4OCwgMjQsIDI1MCwgNDcsIDg4LCAyNCwgMjUwLCAxMDcsIDg4LCAyNCwgMjM0LCAxMTEsIDg4LCAyNCwgCisgICAgMjE2LCAxNzQsIDg4LCAyNCwgMjI1LCAxMzIsIDg4LCAyNCwgMjQxLCAxNzMsIDg4LCAyNCwgMjM0LCA2MCwgNjEsIDg4LCAKKyAgICAyNCwgMjI4LCAyMjgsIDYxLCA4OCwgMjQsIDIxNiwgMTAzLCA2MSwgODgsIDI0LCAyMjMsIDI4LCA2MSwgODgsIDI0LCAyMzAsIAorICAgIDIxOSwgNjEsIDg4LCAyNCwgMjI1LCA5NywgNjEsIDg4LCAyNCwgMjE5LCAxNTAsIDYxLCA4OCwgMjQsIDIzNiwgNTgsIDYxLCAKKyAgICA4OCwgMjQsIDI1MCwgNDgsIDYxLCA4OCwgMjQsIDI1MCwgMTA4LCA2MSwgODgsIDI0LCAyMzQsIDExMiwgNjEsIDg4LCAyNCwgCisgICAgMjE2LCAxNzUsIDYxLCA4OCwgMjQsIDIyNSwgMTMzLCA2MSwgODgsIDI0LCAyNDEsIDE3NCwgNjEsIDg4LCAyNCwgMjUwLCAKKyAgICA0OCwgNzAsIDg4LCAyMzQsIDQsIDEzNSwgMjI2LCAyMTgsIDg4LCAyMzQsIDQsIDEzNSwgMTQ0LCAyNDAsIDIyMywgODgsIAorICAgIDE1NCwgMTEwLCA4OCwgMTU0LCAxMDUsIDg4LCAxNTQsIDE1OCwgODgsIDE1NCwgMTYxLCA4OCwgMTU0LCAxODksIDg4LCAKKyAgICAxNTQsIDE5NCwgODgsIDE1NCwgMTk4LCA4OCwgMTU0LCAxOTUsIDg4LCAxNTQsIDIwMCwgODgsIDE1NCwgMjE2LCAyNDgsIAorICAgIDg4LCAxNTQsIDIzMCwgMTI5LCA4OCwgMTU0LCAyNDQsIDk3LCA4OCwgMTU0LCAyMTIsIDQwLCA4OCwgMTU0LCAyMTEsIDIxNCwgCisgICAgODgsIDE1NCwgMjMxLCA0MCwgODgsIDE1NCwgMjQ1LCAyMjQsIDg4LCAxNTQsIDIxOCwgMzgsIDg4LCAxNTQsIDIxOCwgMTMzLCAKKyAgICA4OCwgMTU0LCAyNDEsIDI0NSwgODgsIDE1NCwgMjE5LCA1NSwgODgsIDE1NCwgMjI5LCAyMDUsIDg4LCAxNTQsIDIxOSwgNSwgCisgICAgODgsIDE1NCwgMjQ0LCAxMDMsIDg4LCAxNTQsIDI0OSwgMjAxLCA4OCwgMTU0LCAyMzMsIDEyNiwgODgsIDE1NCwgMjIzLCAKKyAgICA3MiwgODgsIDE1NCwgMjUxLCAxNiwgODgsIDE1NCwgMjE4LCA4OCwgODgsIDE1NCwgMjE4LCAyMSwgODgsIDE1NCwgMjQ1LCAKKyAgICAxMjgsIDg4LCAxNTQsIDIyMywgNjQsIDg4LCAxNTQsIDI1NCwgMTUxLCA4OCwgMTU0LCAyNDQsIDEyOSwgODgsIDE1NCwgCisgICAgMjIzLCA2MiwgODgsIDE1NCwgMjIwLCAxNTcsIDg4LCAxNTQsIDIyMywgMTI4LCAzNywgMTU0LCAyMjQsIDEzLCAzNywgMTU0LCAKKyAgICAyMzQsIDgxLCAzNywgMTU0LCAyMjEsIDE5OSwgMzcsIDE1NCwgMjM0LCAwLCAzNywgNTQsIDIxNiwgMjQ5LCAyMjYsIDE5OCwgCisgICAgODUsIDIxOCwgMjM1LCAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMTk4LCA4NSwgMjE4LCAyMzUsIDM3LCA1NCwgMjE2LCAxNjQsIAorICAgIDIyNiwgMTk4LCA4NSwgMjE4LCAyMzUsIDM3LCA1NCwgMjQ0LCAxNywgMjI2LCAxOTgsIDg1LCAyMTgsIDIzNSwgMzcsIDU0LCAKKyAgICAyNDQsIDExNiwgMjI2LCAxOTgsIDg1LCAyMTgsIDIzNSwgMzcsIDU0LCAyMTksIDExMywgMjI2LCAxOTgsIDg1LCAyMTgsIAorICAgIDIzNSwgMzcsIDU0LCAyMjAsIDExOCwgMjI2LCAxOTgsIDg1LCAyMTgsIDIzNSwgMzcsIDU0LCAyNDUsIDE4NiwgMjI2LCAKKyAgICAxOTgsIDg1LCAyMTgsIDIzNSwgMjI1LCAyNTIsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMCwgMzcsIDU0LCAyMTUsIDc0LCAKKyAgICAxMDUsIDM3LCA1NCwgMjE1LCA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAyMTUsIDc0LCAxODksIAorICAgIDM3LCA1NCwgMjE1LCA3NCwgMTk0LCAzNywgNTQsIDIxNSwgNzQsIDE5OCwgMzcsIDU0LCAyMTUsIDc0LCAxOTUsIDM3LCA1NCwgCisgICAgMjE1LCA3NCwgMjAwLCAzNywgNTQsIDIxNiwgMTYzLCAzNywgNTQsIDIxNiwgMTY0LCAxMTAsIDM3LCA1NCwgMjE2LCAxNjQsIAorICAgIDEwNSwgMzcsIDU0LCAyMTYsIDE2NCwgMTU4LCAzNywgNTQsIDIxNiwgMTY0LCAxNjEsIDM3LCA1NCwgMjE2LCAxNjQsIDE4OSwgCisgICAgMzcsIDI0LCAyMzQsIDU5LCAzNywgMjQsIDIyOCwgMjI3LCAzNywgMjQsIDIxNiwgMTAyLCAzNywgMjQsIDIyMywgMjcsIDM3LCAKKyAgICAyNCwgMjMwLCAyMTgsIDM3LCAyNCwgMjI1LCA5NiwgMzcsIDI0LCAyMTksIDE0OSwgMzcsIDI0LCAyMzYsIDU3LCAzNywgMjQsIAorICAgIDI1MCwgNDcsIDM3LCAyNCwgMjUwLCAxMDcsIDM3LCAyNCwgMjM0LCAxMTEsIDM3LCAyNCwgMjE2LCAxNzQsIDM3LCAyNCwgCisgICAgMjI1LCAxMzIsIDM3LCAyNCwgMjQxLCAxNzMsIDM3LCAyNCwgMjM0LCA2MCwgNjEsIDM3LCAyNCwgMjI4LCAyMjgsIDYxLCAKKyAgICAzNywgMjQsIDIxNiwgMTAzLCA2MSwgMzcsIDI0LCAyMjMsIDI4LCA2MSwgMzcsIDI0LCAyMzAsIDIxOSwgNjEsIDM3LCAyNCwgCisgICAgMjI1LCA5NywgNjEsIDM3LCAyNCwgMjE5LCAxNTAsIDYxLCAzNywgMjQsIDIzNiwgNTgsIDYxLCAzNywgMjQsIDI1MCwgNDgsIAorICAgIDYxLCAzNywgMjQsIDI1MCwgMTA4LCA2MSwgMzcsIDI0LCAyMzQsIDExMiwgNjEsIDM3LCAyNCwgMjE2LCAxNzUsIDYxLCAzNywgCisgICAgMjQsIDIyNSwgMTMzLCA2MSwgMzcsIDI0LCAyNDEsIDE3NCwgNjEsIDM3LCAyMzQsIDQsIDEzNSwgMjUwLCAxNDksIDM3LCAKKyAgICAyMzQsIDQsIDEzNSwgMjM1LCA0OCwgMzcsIDI0LCAyMzYsIDU4LCA3MCwgMjM0LCA0LCAyMTgsIDE2MCwgODcsIDM3LCAxNTQsIAorICAgIDExMCwgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIDE1NCwgMTg5LCAzNywgMTU0LCAKKyAgICAxOTQsIDM3LCAxNTQsIDE5OCwgMzcsIDE1NCwgMTk1LCAzNywgMTU0LCAyMDAsIDM3LCAxNTQsIDIxNiwgMjQ4LCAzNywgCisgICAgMTU0LCAyMzAsIDEyOSwgMzcsIDE1NCwgMjQ0LCA5NywgMzcsIDE1NCwgMjEyLCA0MCwgMzcsIDE1NCwgMjExLCAyMTQsIDM3LCAKKyAgICAxNTQsIDIzMSwgNDAsIDM3LCAxNTQsIDI0NSwgMjI0LCAzNywgMTU0LCAyMTgsIDM4LCAzNywgMTU0LCAyMTgsIDEzMywgMzcsIAorICAgIDE1NCwgMjQxLCAyNDUsIDM3LCAxNTQsIDIxOSwgNTUsIDM3LCAxNTQsIDIyOSwgMjA1LCAzNywgMTU0LCAyMTksIDUsIDM3LCAKKyAgICAxNTQsIDI0NCwgMTAzLCAzNywgMTU0LCAyNDksIDIwMSwgMzcsIDE1NCwgMjMzLCAxMjYsIDM3LCAxNTQsIDIyMSwgMTc1LCAKKyAgICAzNywgMTU0LCAyMzEsIDE5MCwgMzcsIDE1NCwgMjQ0LCAxMzgsIDM3LCAxNTQsIDIxOCwgNTAsIDM3LCAxNTQsIDI0NSwgMzUsIAorICAgIDM3LCAxNTQsIDIyNCwgMTg4LCAzNywgMTU0LCAyNTMsIDE5NywgMzcsIDE1NCwgMjM1LCAxNjAsIDM3LCAxNTQsIDIyMywgCisgICAgNjIsIDM3LCAxNTQsIDI0OSwgMTY1LCAzNywgMTU0LCAyNDksIDE1NiwgMzcsIDE1NCwgMjQxLCAxNjYsIDM3LCAxNTQsIAorICAgIDI1MCwgMTc1LCAzNywgMTU0LCAyMzIsIDExMSwgMzcsIDE1NCwgMjMzLCA0NywgMzcsIDE1NCwgMjIyLCAyNTIsIDM3LCAKKyAgICAxNTQsIDIzMSwgODQsIDM3LCAxNTQsIDIyMywgODgsIDM3LCAxNTQsIDIxOCwgODgsIDM3LCAxNTQsIDIxOCwgMjEsIDM3LCAKKyAgICAxNTQsIDI0NSwgMTI4LCAzNywgMTU0LCAyMjMsIDY0LCAzNywgMTU0LCAyNTQsIDE1MSwgMzcsIDE1NCwgMjI4LCAyMTMsIAorICAgIDM3LCA1NCwgMjE2LCAxNjQsIDE5NCwgMzcsIDU0LCAyMTYsIDE2NCwgMTk4LCAzNywgNTQsIDIxNiwgMTY0LCAxOTUsIDM3LCAKKyAgICA1NCwgMjE2LCAxNjQsIDIwMCwgMzcsIDU0LCAyNDQsIDE2LCAzNywgNTQsIDI0NCwgMTcsIDExMCwgMzcsIDU0LCAyNDQsIAorICAgIDE3LCAxMDUsIDM3LCA1NCwgMjQ0LCAxNywgMTU4LCAzNywgNTQsIDI0NCwgMTcsIDE2MSwgMzcsIDU0LCAyNDQsIDE3LCAKKyAgICAxODksIDM3LCA1NCwgMjQ0LCAxNywgMTk0LCAzNywgNTQsIDI0NCwgMTcsIDE5OCwgMzcsIDU0LCAyNDQsIDE3LCAxOTUsIAorICAgIDM3LCA1NCwgMjQ0LCAxNywgMjAwLCAzNywgNTQsIDI0NCwgMTE1LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyMzUsIDEzNCwgCisgICAgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ0LCAxNDksIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDIzMSwgMTYxLCAxMDksIDIxNywgCisgICAgNCwgMTYsIDMxLCAyNTQsIDQ4LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyMzEsIDEzMywgMTA5LCAyMTcsIDQsIDE2LCAzMSwgCisgICAgMjM1LCA0NiwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjM1LCA0NywgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjUzLCAxODksIAorICAgIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDIyMCwgMTM3LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyMjYsIDI0MCwgMTA5LCAyMTcsIAorICAgIDQsIDE2LCAzMSwgMjI4LCA0MSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCA4NiwgNDIsIDI0MSwgMTkxLCA0MiwgMjQ1LCAKKyAgICA4OSwgNDIsIDI0NSwgNDQsIDIzMiwgMjIwLCAyMzIsIDI0MSwgNTAsIDM3LCA1NiwgNjEsIDM3LCA1NiwgNzMsIDM3LCA1NiwgCisgICAgNzAsIDM3LCA1NiwgNzUsIDM3LCA1NiwgNzYsIDM3LCA1NiwgMTc2LCAzNywgNTYsIDIzNCwgOTMsIDM3LCA1NiwgMjMzLCAKKyAgICAyMTgsIDM3LCA1NiwgMjM0LCAxODMsIDM3LCA1NiwgMjM0LCAyOSwgMzcsIDU2LCAyMDYsIDM3LCA1NiwgMjE5LCAxOTIsIAorICAgIDM3LCA1NiwgMjE4LCA4NCwgMzcsIDU2LCAyMjEsIDE4MiwgMzcsIDU2LCAyMTksIDU5LCAzNywgNTYsIDIxNywgMTA2LCAzNywgCisgICAgNTYsIDIxNiwgMTE4LCAzNywgNTYsIDIxNSwgMTE5LCAzNywgNTYsIDIxNywgMjMsIDM3LCA1NiwgMTExLCAzNywgNTYsIAorICAgIDE5NywgMzcsIDU2LCAyMjgsIDIzNCwgMzcsIDU2LCAyMjcsIDIzOCwgMzcsIDU2LCAyMjksIDEwOCwgMzcsIDU2LCAyMjgsIAorICAgIDc1LCAzNywgNTYsIDE2MiwgMzcsIDU2LCAyNDEsIDE4MSwgMzcsIDU2LCAyNDAsIDIyMywgMzcsIDU2LCAyNDEsIDIzOSwgCisgICAgMzcsIDU2LCAyNDEsIDY5LCAzNywgNTYsIDE4NSwgMzcsIDU2LCAyMzAsIDIzMSwgMzcsIDU2LCAyMzAsIDEwMywgMzcsIDU2LCAKKyAgICAyMzEsIDkyLCAzNywgNTYsIDIzMCwgMTYyLCAzNywgNTYsIDE5MSwgMzcsIDU2LCAyMTAsIDIxMiwgMzcsIDU2LCAyMTAsIAorICAgIDI0NCwgMzcsIDU2LCAyMDUsIDM3LCA1NiwgMjIzLCAzNiwgMzcsIDU2LCAyMjIsIDE0MSwgMzcsIDU2LCAyMjMsIDEyOSwgCisgICAgMzcsIDU2LCAyMjIsIDIxMiwgMzcsIDU2LCAyMTIsIDY1LCAzNywgNTYsIDIxMSwgMjUwLCAzNywgNTYsIDIxMiwgMjIsIDM3LCAKKyAgICA1NiwgMjExLCAyMjcsIDQyLCAyNTQsIDcyLCA0MiwgMjUzLCAyNDAsIDQyLCAyNTQsIDk2LCA0MiwgMjU1LCAzMiwgNDIsIAorICAgIDIzNSwgMjI3LCA0MiwgMjM1LCAxOTcsIDQyLCAyMTQsIDE2NiwgNDIsIDI0NSwgNjcsIDQyLCAyNDUsIDIwNywgNDIsIDIyNiwgCisgICAgMTg3LCA0MiwgMjI2LCAxODEsIDQyLCAyMzQsIDI0NiwgNDIsIDIzNCwgMjE1LCA0MiwgMjM0LCAyMTIsIDQyLCAyNDMsIDkzLCAKKyAgICA0MiwgMjQzLCAxMDIsIDQyLCAyNDIsIDIwNSwgNDIsIDI0MiwgMjAxLCA0MiwgMjMzLCAxNTEsIDQyLCAyNDIsIDE5NCwgNDIsIAorICAgIDIzNCwgNzMsIDQyLCAyMzQsIDcyLCA0MiwgMjM0LCA3MSwgNDIsIDIzNCwgNzAsIDQyLCAyNDIsIDg3LCA0MiwgMjQyLCA4NiwgCisgICAgNDIsIDIzMywgMTk0LCA0MiwgMjMzLCAxOTYsIDQyLCAyMzQsIDE3OSwgNDIsIDIzNCwgMiwgNDIsIDIzNCwgOSwgNDIsIAorICAgIDIyMiwgMTcsIDQyLCAyMjEsIDIzOCwgNDIsIDIxOSwgMTMwLCA0MiwgMjIwLCAxNDIsIDQyLCAyMjAsIDE0MSwgNDIsIDI0OCwgCisgICAgMjE5LCA0MiwgMjQ4LCAzNywgNDIsIDI0NywgMTIyLCA0MiwgMjE2LCAzMywgNDIsIDIyOSwgMjAxLCA0MiwgMjI4LCA0MiwgCisgICAgNDIsIDI0MiwgMzMsIDQyLCAyMjYsIDg1LCA0MiwgMjI2LCA4NCwgNDIsIDI1MiwgMTg5LCA0MiwgMjI1LCAxMDYsIDQyLCAKKyAgICAyMjUsIDcwLCA0MiwgMjI1LCA3MSwgNDIsIDI1MSwgMjM1LCA0MiwgMjQwLCAyMjIsIDQyLCAyNDAsIDIxOCwgNDIsIDI1MSwgCisgICAgOTIsIDQyLCAyNDAsIDIwNSwgNDIsIDI0MSwgMjE2LCA0MiwgMjI1LCAxNjAsIDQyLCAyMjUsIDE5NSwgNDIsIDI0MSwgMTk5LCAKKyAgICA0MiwgMjI1LCAxOTIsIDQyLCAyMjUsIDIwOCwgNDIsIDI1MiwgNjIsIDQyLCAyMjUsIDcsIDQyLCAyNTEsIDE4MSwgNDIsIAorICAgIDI0MSwgNTcsIDQyLCAyMjQsIDI1MSwgNDIsIDI0MSwgNDksIDQyLCAyNDEsIDUxLCA0MiwgMjMxLCAyMDIsIDQyLCAyMzEsIAorICAgIDE5OCwgNDIsIDIzMSwgMjA3LCA0MiwgMjMxLCAxNTEsIDQyLCAyMzEsIDE3NiwgNDIsIDIzMCwgMTk4LCA0MiwgMjMwLCAKKyAgICAxNzcsIDQyLCAyMzAsIDE3NiwgNDIsIDIzMSwgNzUsIDQyLCAyMzEsIDcyLCA0MiwgMjMxLCA3NiwgNDIsIDIxMSwgMTAyLCAKKyAgICA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIDIwMSwgNDIsIDIyMiwgMjI3LCA0MiwgMjIyLCAyMzEsIDQyLCAyMjIsIDExOCwgNDIsIAorICAgIDIyMiwgMTEyLCA0MiwgMjIzLCA4NiwgNDIsIDIyMywgODMsIDQyLCAyMTIsIDM4LCAxMDksIDIxNywgNCwgMTYsIDMxLCAKKyAgICAyNDAsIDI0MCwgMjEwLCA4NiwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDExMCwgMTA5LCAyMTcsIDQsIDE2LCAKKyAgICAzMSwgMjQwLCAyNDAsIDEwNSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDE1OCwgMTA5LCAyMTcsIDQsIDE2LCAKKyAgICAzMSwgMjQwLCAyNDAsIDE2MSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDE4OSwgMTA5LCAyMTcsIDQsIDE2LCAKKyAgICAzMSwgMjQwLCAyNDAsIDE5NCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDE5OCwgMTA5LCAyMTcsIDQsIDE2LCAKKyAgICAzMSwgMjQwLCAyNDAsIDE5NSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDIwMCwgMTA5LCAyMTcsIDQsIDE2LCAKKyAgICAzMSwgMjQwLCAyNDAsIDIxNiwgMjQ4LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0MCwgMjQ1LCAxNjgsIDEwOSwgCisgICAgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQwLCAyMTUsIDc2LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0MCwgMjE2LCAKKyAgICAxNjUsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQwLCAyNDQsIDYsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgCisgICAgMjQwLCAyNDQsIDExOSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDIxOSwgMTIwLCAxMDksIDIxNywgNCwgMTYsIAorICAgIDMxLCAyNDAsIDI0MCwgMjIwLCAxMjAsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQwLCAyNDUsIDE5MSwgMTA5LCAKKyAgICAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDIyOCwgMTk4LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0MCwgMjE1LCAKKyAgICA3MywgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDAsIDIxNSwgNjcsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgCisgICAgMjQwLCAyMTUsIDYzLCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0MCwgMjE1LCA2NCwgMTA5LCAyMTcsIDQsIDE2LCAKKyAgICAzMSwgMjQwLCAyNDAsIDIxNSwgNjksIDQyLCAyNDAsIDIzMSwgNDIsIDI0OCwgMjIyLCA0MiwgMjUzLCAxOTMsIDQyLCAxMzAsIAorICAgIDQyLCAyMjYsIDEyNiwgNDIsIDIyNSwgMjI2LCA0MiwgMjQ3LCAxNDgsIDQyLCAyNDcsIDE0OSwgMjE4LCAyMzQsIDQyLCAKKyAgICAyNDcsIDE0OSwgMjQ5LCAxMDksIDQyLCAyMzUsIDE1NywgNDIsIDI0NSwgOTIsIDIyOSwgMjA2LCAyNDEsIDIxNywgNDIsIAorICAgIDI0NSwgOTIsIDIyOSwgMjA2LCAyMTcsIDE3NSwgNDIsIDI0NSwgOTIsIDIyOSwgMjA2LCAyMTcsIDc1LCA0MiwgMjQ1LCA5MiwgCisgICAgMjI5LCAyMDYsIDIzMSwgNzEsIDQyLCAyNDksIDE1OCwgNDIsIDIyNiwgOTEsIDI1NCwgMTI2LCA0MiwgMTk3LCA0MiwgMjMwLCAKKyAgICAxMDQsIDYxLCA0MiwgMTg1LCA0MiwgMTc2LCA0MiwgMjM0LCAxODYsIDQyLCAyMzEsIDEzMCwgNDIsIDI0MywgODEsIDQyLCAKKyAgICAyNTEsIDE5LCA0MiwgMjM0LCAxODUsIDQyLCAyMjUsIDE1MSwgNDIsIDIyOSwgODIsIDQyLCAyMzAsIDEwNCwgMjQ1LCA3LCAKKyAgICA0MiwgMjMwLCAxMDQsIDI0MywgMjAzLCA0MiwgMjMxLCAxNiwgNDIsIDIzNCwgMTM1LCA0MiwgMjQwLCAxNjQsIDQyLCAyMzQsIAorICAgIDk1LCA0MiwgMjMwLCAyMzMsIDQyLCAyNDIsIDIxNywgNDIsIDIxNiwgMTIwLCA0MiwgMjMwLCAxMDQsIDE1NiwgNDIsIDIzMCwgCisgICAgMTcwLCA0MiwgMjQ3LCAxNTgsIDQyLCAyMzQsIDQxLCA0MiwgMjQ0LCA0NiwgNDIsIDIyOCwgMTEzLCA0MiwgMjMwLCAxMDQsIAorICAgIDE5MywgNDIsIDIzMCwgMTY3LCA0MiwgMjQ5LCAyNDAsIDQyLCAyMzQsIDM1LCA0MiwgMjMwLCAxNjgsIDIxOCwgMjM0LCA0MiwgCisgICAgMjQ5LCAyNDEsIDIxOCwgMjM0LCA0MiwgMjMyLCA1MSwgMjE4LCAyMzQsIDQyLCAyMzQsIDM2LCAyMTgsIDIzNCwgNDIsIAorICAgIDIzMCwgMTY4LCAyNDksIDEwOSwgNDIsIDI0OSwgMjQxLCAyNDksIDEwOSwgNDIsIDIzMiwgNTEsIDI0OSwgMTA5LCA0MiwgCisgICAgMjM0LCAzNiwgMjQ5LCAxMDksIDQyLCAyMzIsIDUxLCAxMTcsIDIyMiwgOTIsIDQyLCAyMzIsIDUxLCAxMTcsIDIyMiwgOTMsIAorICAgIDIxOCwgMjM0LCA0MiwgMTkwLCA0MiwgMjMzLCAyNTIsIDQyLCAyMzAsIDEwNiwgNDIsIDI0MiwgMTUyLCA0MiwgMjIzLCAKKyAgICAxNzcsIDQyLCAyMjMsIDE3OCwgMTE3LCAyMjIsIDkyLCA0MiwgMjIzLCAxNzgsIDExNywgMjIyLCA5MywgMjE4LCAyMzQsIAorICAgIDQyLCAyMjQsIDE2MywgNDIsIDIyOCwgMTQsIDQyLCAyMzAsIDEwNCwgMjIyLCA5MiwgNDIsIDIzMCwgMTA1LCA0MiwgMjI0LCAKKyAgICAxMTcsIDQyLCAyMjcsIDE3NywgNDIsIDIzMCwgMTA0LCAyMTQsIDEwNSwgNDIsIDIzMCwgNTAsIDQyLCAyMzMsIDE4NiwgNDIsIAorICAgIDIzMCwgNTEsIDIzMSwgNzUsIDQyLCAyMjQsIDExNiwgNDIsIDIyNywgMTc2LCA0MiwgMjMwLCAxMDQsIDIxMiwgOTgsIDQyLCAKKyAgICAyMzAsIDQ0LCA0MiwgMjMzLCAxODQsIDQyLCAyMzAsIDQ1LCAyMzEsIDc1LCA0MiwgMjM1LCAyNSwgMjI2LCAyMjEsIDQyLCAKKyAgICAyMzIsIDUxLCAyMjYsIDIyMSwgNDIsIDI1NCwgMTM3LCA0MiwgMjUxLCAxNjEsIDQyLCAyNTAsIDIxNSwgNDIsIDI1MCwgCisgICAgMTkyLCA0MiwgMjUxLCA2OCwgMTE3LCAyMzQsIDEzNSwgNDIsIDI0OSwgMjM5LCA0MiwgMjQ4LCAxNDMsIDQyLCAyNDIsIDczLCAKKyAgICA0MiwgMTYyLCA0MiwgMjQwLCAyMzIsIDQyLCAyMzYsIDAsIDQyLCAyMzQsIDQ4LCA0MiwgMjM0LCAzNiwgMjUwLCAyNTEsIAorICAgIDQyLCAyMzMsIDIyMCwgNDIsIDIzMiwgMTYwLCA0MiwgMjMyLCAxNTksIDQyLCAyMzIsIDE0OCwgNDIsIDIzMiwgNjQsIDQyLCAKKyAgICAyMzEsIDEzMSwgMjE5LCA4MCwgNDIsIDIzMCwgMTk3LCA0MiwgMjMwLCAxNTMsIDQyLCAyMjUsIDE0OSwgNDIsIDIyNSwgMjAsIAorICAgIDQyLCAyMjQsIDIyMCwgNDIsIDIyNCwgMjE4LCA0MiwgMjE4LCAyMjgsIDQyLCAyMTgsIDMsIDQyLCAyMTIsIDI0LCA0MiwgCisgICAgMjE0LCAxMDYsIDExNywgMTkzLCA0MiwgMTE1LCAxMTcsIDE5MywgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIAorICAgIDExMCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDEwNSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIAorICAgIDE1OCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDE2MSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIAorICAgIDE4OSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDE5NCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIAorICAgIDE5OCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDE5NSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIAorICAgIDIwMCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDIxNiwgMjQ4LCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDgsIAorICAgIDE0NywgMjQ1LCAxNjgsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTQ3LCAyMTUsIDc2LCAxMDksIDIxNywgNCwgMTYsIAorICAgIDMxLCAyNDgsIDE0NywgMjE2LCAxNjUsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTQ3LCAyNDQsIDYsIDEwOSwgMjE3LCAKKyAgICA0LCAxNiwgMzEsIDI0OCwgMTQ3LCAyNDQsIDExOSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDIxOSwgMTIwLCAKKyAgICAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE0NywgMjIwLCAxMjAsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTQ3LCAKKyAgICAyNDUsIDE5MSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDIyOCwgMTk4LCAxMDksIDIxNywgNCwgMTYsIDMxLCAKKyAgICAyNDgsIDE0NywgMjE1LCA3MywgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDIxNSwgNjcsIDEwOSwgMjE3LCA0LCAKKyAgICAxNiwgMzEsIDI0OCwgMTQ3LCAyMTUsIDYzLCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE0NywgMjE1LCA2NCwgMTA5LCAKKyAgICAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDIxNSwgNjksIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTQ3LCAyMTUsIAorICAgIDcwLCAxMDksIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE0NywgMjE1LCA2NSwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDcsIDIxNSwgNjYsIDEwOSwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTQ3LCAyMTUsIDcyLCAxMDksIDIxNywgNCwgMTYsIAorICAgIDMxLCAyNDgsIDE0NywgMjE1LCA2OCwgMTA5LCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNDcsIDIxNiwgMTYzLCAxMDksIDIxNywgCisgICAgNCwgMTYsIDMxLCAyNDgsIDE0NywgMjE2LCAxNjIsIDQyLCAyNDMsIDExOSwgMjQxLCAxOTMsIDMxLCAyMTYsIDE5NywgMjQ5LCAKKyAgICAxNDEsIDI0MSwgMjI0LCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyMjMsIDEyMywgMjQ1LCAyMjQsIDI0MSwgMTkzLCAzMSwgCisgICAgMjQ3LCAyMzIsIDI1MywgMjA4LCAyMTYsIDE5NywgMjUyLCA1NywgMjQxLCAxOTMsIDMxLCAyMTAsIDIyMywgMjQ0LCAzOSwgCisgICAgMjQxLCAxOTMsIDMxLCAyMTIsIDU5LCAyNDEsIDE5MywgMzEsIDI0OSwgMjA0LCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAKKyAgICAyNTQsIDQsIDI0MSwgMTkzLCAzMSwgMjQxLCA2MSwgMjE2LCAzOSwgMjQxLCAxOTMsIDMxLCA0LCAyMTcsIDYyLCAyNDEsIAorICAgIDE5MywgMzEsIDIxNSwgMjM4LCAyNDEsIDE5MywgMzEsIDIyNSwgMjIwLCAyNDEsIDE5MywgMzEsIDIxOCwgMTU5LCAyNDEsIAorICAgIDE5MywgMzEsIDI0NCwgMTQwLCAyNDEsIDE5MywgMzEsIDI0MiwgMTMzLCAyMjQsIDI0MSwgMjQxLCAxOTMsIDMxLCAyMzAsIAorICAgIDE1NiwgMjQxLCAxOTMsIDMxLCAyNDUsIDEyNywgMjQxLCAxOTMsIDMxLCAyNDQsIDQwLCAyNDEsIDE5MywgMzEsIDIxMSwgCisgICAgMjA3LCAyMjYsIDE5OCwgMjE2LCAxOTcsIDI0OCwgODcsIDI0MSwgMTkzLCAzMSwgMjU0LCA1MiwgMjQxLCAxOTMsIDMxLCAKKyAgICAyNDksIDE4NiwgMjQxLCAxOTMsIDMxLCAyNTEsIDIyOCwgMjE2LCAxMzksIDI0MSwgMTkzLCAzMSwgMjQyLCAxNTAsIDI0MSwgCisgICAgMTkzLCAzMSwgMjE4LCAyNDYsIDI1NCwgNzEsIDI0MSwgMTkzLCAzMSwgMjIzLCA1NCwgMjQxLCAxOTMsIDMxLCAyMzUsIAorICAgIDIyMSwgMjQxLCAxOTMsIDMxLCAyNDIsIDEzMywgMjE3LCA2MiwgMjQxLCAxOTMsIDMxLCAyMzAsIDExMiwgMjQ5LCAxNjAsIAorICAgIDI0MSwgMTkzLCAzMSwgMjQyLCAxMzMsIDIyNCwgMTk4LCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyNTUsIDE5LCAyMTIsIAorICAgIDQwLCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyNTAsIDksIDI0NCwgOTcsIDI0MSwgMTkzLCAzMSwgMjM1LCAyMzQsIDI0MSwgCisgICAgMTkzLCAzMSwgMjQ2LCA1OCwgMjQxLCAxOTMsIDMxLCAyMjMsIDU3LCAyNDEsIDE5MywgMzEsIDI0MiwgMTMzLCAyMjQsIAorICAgIDIyNSwgMjQxLCAxOTMsIDMxLCAyMjQsIDE3OCwgMjQxLCAxOTMsIDMxLCAyNDgsIDE2MiwgNjQsIDIxNiwgMTk3LCAyMzIsIAorICAgIDIzMSwgMjQxLCAxOTMsIDMxLCAyMTYsIDE5NywgMjQ0LCAxNzUsIDI0MSwgMTkzLCAzMSwgMjI2LCAxNjQsIDI0MSwgMTkzLCAKKyAgICAzMSwgMjI2LCAyNDUsIDI0MSwgMTkzLCAzMSwgMjQ4LCA2MCwgMjQxLCAxOTMsIDMxLCAyNDgsIDgwLCAyNDEsIDE5MywgMzEsIAorICAgIDIzNSwgMjQ4LCAyNDEsIDE5MywgMzEsIDI1MSwgMTUwLCAyNDEsIDE5MywgMzEsIDI0OSwgMjIyLCAyMTYsIDQzLCAyMzEsIAorICAgIDc3LCAyNDEsIDE5MywgMzEsIDI0MywgODgsIDIxNiwgMzksIDI0MSwgMTkzLCAzMSwgMjI0LCAxMjYsIDIxNCwgMTU0LCAKKyAgICAyNDEsIDE5MywgMzEsIDIyNiwgMTYzLCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyMTIsIDEzLCAyNDEsIDE5MywgMzEsIAorICAgIDIyMywgNDYsIDI0MSwgMTkzLCAzMSwgMjE2LCAxOTcsIDI1MCwgMjIxLCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyNTQsIAorICAgIDAsIDIxNiwgMTM0LCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyMzQsIDE4MCwgMjE4LCAxMzUsIDIzMCwgMTE2LCAyNDEsIAorICAgIDE5MywgMzEsIDI0OCwgMzMsIDI0MSwgMTkzLCAzMSwgMjE2LCAxOTcsIDIzMSwgMTUzLCAyMzEsIDIwMywgMjQxLCAxOTMsIAorICAgIDMxLCAyNTUsIDIwLCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAyMTIsIDU0LCAyNDEsIDE5MywgMzEsIDIxNiwgMTk3LCAKKyAgICAyNDMsIDQ4LCAyMTEsIDIzOSwgMjQxLCAxOTMsIDMxLCAyMTYsIDE5NywgMjM1LCA1MywgMjMzLCAxMDgsIDI0MSwgMTkzLCAKKyAgICAzMSwgMjQ3LCAxODUsIDI0MSwgMTkzLCAzMSwgMjMyLCAyMjEsIDI0MSwgMTkzLCAzMSwgMjM1LCAyMjQsIDIxNSwgMTg4LCAKKyAgICAyNDEsIDE5MywgMzEsIDQsIDIyNCwgMTk4LCAyNDEsIDE5MywgMzEsIDI1NCwgMjE4LCAyNDksIDIxMywgMjQxLCAxOTMsIAorICAgIDMxLCAyNTIsIDYwLCAyNDksIDIxMywgOCwgMywgMjM1LCAxNjEsIDgsIDMsIDIzNSwgMTU0LCA4LCAzLCA3MywgOCwgMywgCisgICAgMjM1LCAxODMsIDgsIDMsIDIzNiwgNTksIDgsIDMsIDIzNiwgNDIsIDgsIDMsIDIzNiwgNjEsIDgsIDMsIDIzNiwgNjAsIDgsIAorICAgIDMsIDI1MywgMjA3LCA4LCAzLCAyNTMsIDE3MCwgOCwgMywgNjEsIDgsIDMsIDI1NCwgNzMsIDgsIDMsIDIxNCwgMTY0LCA4LCAKKyAgICAzLCAyMTQsIDE2NywgOCwgMywgMjE0LCAxNjUsIDgsIDMsIDIyNiwgMTQxLCA4LCAzLCAyMjYsIDExNSwgOCwgMywgNzYsIDgsIAorICAgIDMsIDIyNiwgMTc2LCA4LCAzLCAyNDUsIDM2LCA4LCAzLCA3NSwgOCwgMywgMjExLCAxOTUsIDgsIDMsIDI1MSwgMjI5LCA4LCAKKyAgICAzLCAyNTEsIDIyNiwgOCwgMywgMjUyLCA3LCA4LCAzLCAyNTEsIDIzOSwgOCwgMywgMjUxLCAyNTIsIDgsIDMsIDI1MSwgCisgICAgMjUxLCA4LCAzLCAyNTEsIDI1NCwgOCwgMywgMjUxLCAyNTMsIDgsIDMsIDI1MiwgMTIyLCA4LCAzLCAyNTIsIDExNCwgOCwgCisgICAgMywgMjUyLCAxOTIsIDgsIDMsIDI1MiwgMTQzLCA4LCAzLCAyNTEsIDEwMiwgOCwgMywgMjUxLCAxMDYsIDgsIDMsIDI1MSwgCisgICAgMTAzLCA4LCAzLCAyNTEsIDE4MCwgOCwgMywgMjUxLCAxNjQsIDgsIDMsIDI1MSwgMjA2LCA4LCAzLCAyNTEsIDE4NiwgOCwgCisgICAgMywgMjUyLCAyMiwgOCwgMywgMjUyLCA3NiwgOCwgMywgMjUyLCAzNCwgOCwgMywgMjUxLCA4OCwgOCwgMywgMjUxLCA4NSwgCisgICAgOCwgMywgMjUxLCAxMjYsIDgsIDMsIDI1MSwgMTAxLCA4LCAzLCAyNTEsIDk1LCA4LCAzLCAyNTEsIDk5LCA4LCAzLCAyNTEsIAorICAgIDczLCA4LCAzLCAyNTEsIDcxLCA4LCAzLCAyNTEsIDc4LCA4LCAzLCAyNTEsIDc2LCA4LCAzLCAyNTEsIDc0LCA4LCAzLCAKKyAgICAyNTEsIDc1LCA4LCAzLCAyMjUsIDUwLCA4LCAzLCAyMjUsIDQ2LCA4LCAzLCAyMjUsIDEwOSwgOCwgMywgMjI1LCA2MCwgOCwgCisgICAgMywgMjI1LCA3NiwgOCwgMywgMjI1LCAxMDMsIDgsIDMsIDIyNSwgOTksIDgsIDMsIDIyNSwgMjQxLCA4LCAzLCAyMjUsIAorICAgIDIzMSwgOCwgMywgMTkwLCA4LCAzLCAyMjYsIDIyLCA4LCAzLCAyMjQsIDEzNiwgOCwgMywgMjI0LCAxMzgsIDgsIDMsIDIyNCwgCisgICAgMTM3LCA4LCAzLCAyMjQsIDIzNCwgOCwgMywgMjI0LCAyMjMsIDgsIDMsIDIyNSwgMTcsIDgsIDMsIDIyNCwgMjQ2LCA4LCAzLCAKKyAgICAyMjQsIDEyMiwgOCwgMywgMjI0LCAxMTgsIDgsIDMsIDIyNCwgMTUxLCA4LCAzLCAyMjQsIDEzNSwgOCwgMywgMjI0LCAxMjcsIAorICAgIDgsIDMsIDIyNCwgMTMzLCA4LCAzLCAyMjQsIDEwMSwgOCwgMywgMjI0LCAxMDAsIDgsIDMsIDIyNCwgMTA1LCA4LCAzLCAKKyAgICAyMjQsIDEwNCwgOCwgMywgMjI0LCAxMDIsIDgsIDMsIDIyNCwgMTAzLCA4LCAzLCAyNTIsIDk3LCA4LCAzLCAyNTIsIDk2LCAKKyAgICA4LCAzLCAyNTIsIDEwMywgOCwgMywgMjUyLCA5OCwgOCwgMywgMjUyLCAxMDAsIDgsIDMsIDI1MiwgOTksIDgsIDMsIDI1MiwgCisgICAgMTAyLCA4LCAzLCAyNTIsIDEwMSwgOCwgMywgMjUyLCAxMDksIDgsIDMsIDI1MiwgMTA4LCA4LCAzLCAyNTIsIDExMiwgOCwgCisgICAgMywgMjUyLCAxMTAsIDgsIDMsIDI1MiwgODgsIDgsIDMsIDI1MiwgOTAsIDgsIDMsIDI1MiwgODksIDgsIDMsIDI1MiwgOTMsIAorICAgIDgsIDMsIDI1MiwgOTIsIDgsIDMsIDI1MiwgOTUsIDgsIDMsIDI1MiwgOTQsIDgsIDMsIDI1MiwgMTA0LCA4LCAzLCAyNTIsIAorICAgIDEwNywgOCwgMywgMjUyLCAxMDUsIDgsIDMsIDI1MiwgODQsIDgsIDMsIDI1MiwgODMsIDgsIDMsIDI1MiwgOTEsIDgsIDMsIAorICAgIDI1MiwgODcsIDgsIDMsIDI1MiwgODUsIDgsIDMsIDI1MiwgODYsIDgsIDMsIDI1MiwgODAsIDgsIDMsIDI1MiwgNzksIDgsIAorICAgIDMsIDI1MiwgODIsIDgsIDMsIDI1MiwgODEsIDgsIDMsIDIyOSwgMTcwLCA4LCAzLCAyMjksIDE2OSwgOCwgMywgMjI5LCAKKyAgICAxNzUsIDgsIDMsIDIyOSwgMTcxLCA4LCAzLCAyMjksIDE3MiwgOCwgMywgMjI5LCAxNzQsIDgsIDMsIDIyOSwgMTczLCA4LCAKKyAgICAzLCAyMjksIDE3OCwgOCwgMywgMjI5LCAxNzcsIDgsIDMsIDIyOSwgMTgwLCA4LCAzLCAyMjksIDE3OSwgOCwgMywgMjI5LCAKKyAgICAxNjYsIDgsIDMsIDIyOSwgMTY1LCA4LCAzLCAyMjksIDE2OCwgOCwgMywgMjI5LCAxNjcsIDgsIDMsIDIyOSwgMTU5LCA4LCAKKyAgICAzLCAyMjksIDE1OCwgOCwgMywgMjI5LCAxNjMsIDgsIDMsIDIyOSwgMTYyLCA4LCAzLCAyMjksIDE2MCwgOCwgMywgMjI5LCAKKyAgICAxNjEsIDgsIDMsIDIyOSwgMTUzLCA4LCAzLCAyMjksIDE1MiwgOCwgMywgMjI5LCAxNTcsIDgsIDMsIDIyOSwgMTU2LCA4LCAKKyAgICAzLCAyMjksIDE1NCwgOCwgMywgMjI5LCAxNTUsIDgsIDMsIDI0MSwgMTExLCA4LCAzLCAyNDEsIDExMCwgOCwgMywgMjQxLCAKKyAgICAxMTYsIDgsIDMsIDI0MSwgMTEyLCA4LCAzLCAyNDEsIDExMywgOCwgMywgMjQxLCAxMTUsIDgsIDMsIDI0MSwgMTE0LCA4LCAKKyAgICAzLCAyNDEsIDExOSwgOCwgMywgMjQxLCAxMTgsIDgsIDMsIDI0MSwgMTIxLCA4LCAzLCAyNDEsIDEyMCwgOCwgMywgMjQxLCAKKyAgICAxMDIsIDgsIDMsIDI0MSwgMTA0LCA4LCAzLCAyNDEsIDEwMywgOCwgMywgMjQxLCAxMDcsIDgsIDMsIDI0MSwgMTA2LCA4LCAKKyAgICAzLCAyNDEsIDEwOSwgOCwgMywgMjQxLCAxMDgsIDgsIDMsIDI0MSwgOTgsIDgsIDMsIDI0MSwgOTcsIDgsIDMsIDI0MSwgCisgICAgMTA1LCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCA5OSwgOCwgMywgMjQxLCAxMDAsIDgsIDMsIDI0MSwgOTIsIDgsIDMsIAorICAgIDI0MSwgOTYsIDgsIDMsIDI0MSwgOTUsIDgsIDMsIDI0MSwgOTMsIDgsIDMsIDI0MSwgOTQsIDgsIDMsIDIzMCwgMTczLCA4LCAKKyAgICAzLCAyMzAsIDE3MiwgOCwgMywgMjMwLCAyMzEsIDgsIDMsIDIzMCwgMTc5LCA4LCAzLCAyMzAsIDIwNCwgOCwgMywgMjMwLCAKKyAgICAyMjIsIDgsIDMsIDIzMCwgMjIwLCA4LCAzLCAyMzEsIDE0MCwgOCwgMywgMjMxLCAxMzUsIDgsIDMsIDE4NSwgOCwgMywgCisgICAgMjMxLCAxNzMsIDgsIDMsIDIzMCwgNzUsIDgsIDMsIDIzMCwgNzQsIDgsIDMsIDIzMCwgNzgsIDgsIDMsIDIzMCwgNzYsIDgsIAorICAgIDMsIDIzMCwgMTIyLCA4LCAzLCAyMzAsIDEwOCwgOCwgMywgMjMwLCAxNjIsIDgsIDMsIDIzMCwgMTI3LCA4LCAzLCAyMzEsIAorICAgIDI3LCA4LCAzLCAyMzEsIDkyLCA4LCAzLCAyMzAsIDU2LCA4LCAzLCAyMzAsIDUyLCA4LCAzLCAyMzAsIDEwMywgOCwgMywgCisgICAgMjMwLCA3MSwgOCwgMywgMjMwLCA2NCwgOCwgMywgMjMwLCA2OSwgOCwgMywgMjMwLCAyOSwgOCwgMywgMjMwLCAyOCwgOCwgCisgICAgMywgMjMwLCAzNCwgOCwgMywgMjMwLCAzMSwgOCwgMywgMjQ0LCA4NCwgOCwgMywgMjQ0LCA3OSwgOCwgMywgMjQ0LCAxMjIsIAorICAgIDgsIDMsIDI0NCwgOTksIDgsIDMsIDI0NCwgMTY4LCA4LCAzLCAyNDQsIDE1OSwgOCwgMywgMjQ0LCAxOTcsIDgsIDMsIDI0NCwgCisgICAgMTcxLCA4LCAzLCAyNDQsIDQsIDgsIDMsIDI0NCwgNDQsIDgsIDMsIDI0NCwgMjgsIDgsIDMsIDI0MywgMjE5LCA4LCAzLCAKKyAgICAyNDMsIDIxOCwgOCwgMywgMjQzLCAyMzUsIDgsIDMsIDI0MywgMjI0LCA4LCAzLCAyNDMsIDIyMiwgOCwgMywgMjQzLCAyMjMsIAorICAgIDgsIDMsIDI0MywgMjA2LCA4LCAzLCAyNDMsIDIwNSwgOCwgMywgMjQzLCAyMDksIDgsIDMsIDI0MywgMjA3LCA4LCAzLCAKKyAgICAyMTMsIDE0NCwgOCwgMywgMjEzLCAxMzksIDgsIDMsIDIxMywgMTc2LCA4LCAzLCAyMTMsIDE1MywgOCwgMywgMjEzLCAxNjYsIAorICAgIDgsIDMsIDIxMywgMTYzLCA4LCAzLCAyMTMsIDE2OCwgOCwgMywgMjEzLCAxNjcsIDgsIDMsIDIxNCwgNywgOCwgMywgMjE0LCAKKyAgICAyLCA4LCAzLCAyMTQsIDI3LCA4LCAzLCAyMTQsIDE4LCA4LCAzLCAyMTMsIDEyNSwgOCwgMywgMjEzLCAxMjEsIDgsIDMsIAorICAgIDIxMywgMTM4LCA4LCAzLCAyMTMsIDEyNiwgOCwgMywgMjEzLCAxNzgsIDgsIDMsIDIxMywgMjQ0LCA4LCAzLCAyMTIsIDExMCwgCisgICAgOCwgMywgMjEyLCAxMDgsIDgsIDMsIDIxMiwgMTE2LCA4LCAzLCAyMTIsIDExMywgOCwgMywgMjEyLCAxMTEsIDgsIDMsIAorICAgIDIxMiwgMTEyLCA4LCAzLCAyMTIsIDEwMiwgOCwgMywgMjEyLCAxMDEsIDgsIDMsIDIxMiwgMTA2LCA4LCAzLCAyMTIsIDEwNSwgCisgICAgOCwgMywgMjEyLCAxMDMsIDgsIDMsIDIxMiwgMTA0LCA4LCAzLCAyNDcsIDE3OSwgOCwgMywgMjQ3LCAxNjcsIDgsIDMsIAorICAgIDI0OCwgNCwgOCwgMywgMjQ3LCAyMDQsIDgsIDMsIDI0NywgMjM3LCA4LCAzLCAyNDcsIDI0MSwgOCwgMywgMjQ3LCAyNDAsIAorICAgIDgsIDMsIDI0OCwgMTUzLCA4LCAzLCAyNDgsIDE0OCwgOCwgMywgMjQ4LCAyMjIsIDgsIDMsIDI0OCwgMTczLCA4LCAzLCAKKyAgICAyNDYsIDYzLCA4LCAzLCAyNDYsIDY0LCA4LCAzLCAyNDcsIDEyMSwgOCwgMywgMjQ2LCAxMDMsIDgsIDMsIDI0NywgMTQ2LCAKKyAgICA4LCAzLCAyNDcsIDEyMywgOCwgMywgMjQ4LCAzMSwgOCwgMywgMjQ4LCA5MSwgOCwgMywgMjQ4LCA0NiwgOCwgMywgMjQ2LCAKKyAgICA1NCwgOCwgMywgMjQ2LCA1MiwgOCwgMywgMjQ2LCA3OSwgOCwgMywgMjQ2LCA2MiwgOCwgMywgMjQ2LCA1NywgOCwgMywgCisgICAgMjQ2LCA2MCwgOCwgMywgMjE2LCA2OCwgOCwgMywgMjE2LCA2MiwgOCwgMywgMjE2LCAxMTgsIDgsIDMsIDIxNiwgNzcsIDgsIAorICAgIDMsIDIxNiwgMTEwLCA4LCAzLCAyMTYsIDExMiwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNywgNDcsIDgsIDMsIDIxNywgCisgICAgMzQsIDgsIDMsIDIxNywgMTA2LCA4LCAzLCAyMTcsIDU1LCA4LCAzLCAyMTUsIDEwMywgOCwgMywgMjE1LCAxMDIsIDgsIDMsIAorICAgIDIxNSwgMTA1LCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE2LCA2LCA4LCAzLCAyMTYsIDIsIDgsIDMsIDExMSwgOCwgMywgCisgICAgMjE2LCAxNCwgOCwgMywgMjE2LCAyMTQsIDgsIDMsIDIxNywgMjMsIDgsIDMsIDIxNiwgMjM4LCA4LCAzLCAyMTUsIDg4LCA4LCAKKyAgICAzLCAyMTUsIDgzLCA4LCAzLCAyMTUsIDExOSwgOCwgMywgMjE1LCAxMDEsIDgsIDMsIDIxNSwgODksIDgsIDMsIDIxNSwgOTksIAorICAgIDgsIDMsIDI0OCwgMTA4LCA4LCAzLCAyNDgsIDEwNywgOCwgMywgMjQ4LCAxMTMsIDgsIDMsIDI0OCwgMTA5LCA4LCAzLCAKKyAgICAyNDgsIDExMCwgOCwgMywgMjQ4LCAxMTIsIDgsIDMsIDI0OCwgMTExLCA4LCAzLCAyNDgsIDEyOSwgOCwgMywgMjQ4LCAxMjgsIAorICAgIDgsIDMsIDI0OCwgMTM2LCA4LCAzLCAyNDgsIDEzMCwgOCwgMywgMjQ4LCA5OCwgOCwgMywgMjQ4LCAxMDAsIDgsIDMsIDI0OCwgCisgICAgOTksIDgsIDMsIDI0OCwgMTAzLCA4LCAzLCAyNDgsIDEwMiwgOCwgMywgMjQ4LCAxMDYsIDgsIDMsIDI0OCwgMTA0LCA4LCAzLCAKKyAgICAyNDgsIDEyMSwgOCwgMywgMjQ4LCAxMjQsIDgsIDMsIDI0OCwgMTIyLCA4LCAzLCAyNDgsIDk0LCA4LCAzLCAyNDgsIDkzLCAKKyAgICA4LCAzLCAyNDgsIDEwMSwgOCwgMywgMjQ4LCA5NywgOCwgMywgMjQ4LCA5NSwgOCwgMywgMjQ4LCA5NiwgOCwgMywgMjI5LCAKKyAgICAxMjcsIDgsIDMsIDIyOSwgMTI2LCA4LCAzLCAyMjksIDEzNCwgOCwgMywgMjI5LCAxMjksIDgsIDMsIDIyOSwgMTMwLCA4LCAKKyAgICAzLCAyMjksIDEzMSwgOCwgMywgMjI5LCAxNDMsIDgsIDMsIDIyOSwgMTQyLCA4LCAzLCAyMjksIDE0OSwgOCwgMywgMjI5LCAKKyAgICAxNDQsIDgsIDMsIDIyOSwgMTE5LCA4LCAzLCAyMjksIDExOCwgOCwgMywgMjI5LCAxMjUsIDgsIDMsIDIyOSwgMTIwLCA4LCAKKyAgICAzLCAyMjksIDEzNSwgOCwgMywgMjI5LCAxNDEsIDgsIDMsIDIyOSwgMTM5LCA4LCAzLCAyMjksIDExMSwgOCwgMywgMjI5LCAKKyAgICAxMTAsIDgsIDMsIDIyOSwgMTE2LCA4LCAzLCAyMjksIDExNCwgOCwgMywgMjI5LCAxMTIsIDgsIDMsIDIyOSwgMTEzLCA4LCAKKyAgICAzLCAyNDEsIDc4LCA4LCAzLCAyNDEsIDc3LCA4LCAzLCAyNDEsIDg0LCA4LCAzLCAyNDEsIDc5LCA4LCAzLCAyNDEsIDgxLCAKKyAgICA4LCAzLCAyNDEsIDgwLCA4LCAzLCAyNDEsIDgzLCA4LCAzLCAyNDEsIDgyLCA4LCAzLCAyNDEsIDg5LCA4LCAzLCAyNDEsIAorICAgIDg4LCA4LCAzLCAyNDEsIDkxLCA4LCAzLCAyNDEsIDkwLCA4LCAzLCAyNDEsIDcyLCA4LCAzLCAyNDEsIDczLCA4LCAzLCAKKyAgICAyNDEsIDc1LCA4LCAzLCAyNDEsIDc0LCA4LCAzLCAyNDEsIDc2LCA4LCAzLCAyNDEsIDg1LCA4LCAzLCAyNDEsIDg3LCA4LCAKKyAgICAzLCAyNDEsIDg2LCA4LCAzLCAyNDEsIDcxLCA4LCAzLCAyMjgsIDE5MCwgOCwgMywgMjI4LCAxODgsIDgsIDMsIDIyOCwgCisgICAgMjM0LCA4LCAzLCAyMjgsIDE5MywgOCwgMywgMjI4LCAyMTYsIDgsIDMsIDIyOCwgMjMwLCA4LCAzLCAyMjgsIDIyOSwgOCwgCisgICAgMywgMjI5LCAxODQsIDgsIDMsIDE5NywgOCwgMywgMjI5LCAxOTgsIDgsIDMsIDIyNywgMTg3LCA4LCAzLCAyMjcsIDE4OSwgCisgICAgOCwgMywgMjI3LCAxODgsIDgsIDMsIDIyOCwgNTIsIDgsIDMsIDIyOCwgMzksIDgsIDMsIDIyOCwgNzUsIDgsIDMsIDIyOCwgCisgICAgNjEsIDgsIDMsIDIyOSwgODQsIDgsIDMsIDIyOSwgMTA4LCA4LCAzLCAyMjksIDk1LCA4LCAzLCAyMjcsIDE4MiwgOCwgMywgCisgICAgMjI3LCAxNzgsIDgsIDMsIDIyNywgMjM4LCA4LCAzLCAyMjcsIDE4NiwgOCwgMywgMjI3LCAxODQsIDgsIDMsIDIyNywgMTg1LCAKKyAgICA4LCAzLCAyNDEsIDE0MiwgOCwgMywgMjQxLCAxNDEsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE0MywgOCwgMywgCisgICAgMjQxLCAxNDQsIDgsIDMsIDI0MSwgMTQ2LCA4LCAzLCAyNDEsIDE0NSwgOCwgMywgMjQxLCAxNTIsIDgsIDMsIDI0MSwgMTUxLCAKKyAgICA4LCAzLCAyNDEsIDE1NCwgOCwgMywgMjQxLCAxNTMsIDgsIDMsIDI0MSwgMTM0LCA4LCAzLCAyNDEsIDEzNiwgOCwgMywgCisgICAgMjQxLCAxMzUsIDgsIDMsIDI0MSwgMTM4LCA4LCAzLCAyNDEsIDE0MCwgOCwgMywgMjQxLCAxMzksIDgsIDMsIDI0MSwgMTQ4LCAKKyAgICA4LCAzLCAyNDEsIDE1MCwgOCwgMywgMjQxLCAxNDksIDgsIDMsIDI0MSwgMTMwLCA4LCAzLCAyNDEsIDEyOSwgOCwgMywgCisgICAgMjQxLCAxMzcsIDgsIDMsIDI0MSwgMTMzLCA4LCAzLCAyNDEsIDEzMSwgOCwgMywgMjQxLCAxMzIsIDgsIDMsIDI0MSwgMTI0LCAKKyAgICA4LCAzLCAyNDEsIDEyMywgOCwgMywgMjQxLCAxMjgsIDgsIDMsIDI0MSwgMTI3LCA4LCAzLCAyNDEsIDEyNSwgOCwgMywgCisgICAgMjQxLCAxMjYsIDgsIDMsIDIzMiwgMTk2LCA4LCAzLCAyMzIsIDE5MCwgOCwgMywgMjMyLCAyNDIsIDgsIDMsIDIzMiwgMjAzLCAKKyAgICA4LCAzLCAyMzIsIDIzNCwgOCwgMywgMjMyLCAyMzMsIDgsIDMsIDIzMiwgMjM3LCA4LCAzLCAyMzIsIDIzNSwgOCwgMywgCisgICAgMjMzLCA4MCwgOCwgMywgMjMzLCA3MCwgOCwgMywgMjMzLCAxMzYsIDgsIDMsIDIzMywgODksIDgsIDMsIDIzMiwgODAsIDgsIAorICAgIDMsIDIzMiwgNzksIDgsIDMsIDIzMiwgODIsIDgsIDMsIDIzMiwgODEsIDgsIDMsIDIzMiwgMTE3LCA4LCAzLCAyMzIsIDEwNywgCisgICAgOCwgMywgMjMyLCAxNTcsIDgsIDMsIDIzMiwgMTIxLCA4LCAzLCAyMzMsIDMsIDgsIDMsIDIzMywgNTksIDgsIDMsIDIzMywgCisgICAgMTgsIDgsIDMsIDIzMiwgNzUsIDgsIDMsIDIzMiwgNzMsIDgsIDMsIDIzMiwgOTksIDgsIDMsIDIzMiwgNzgsIDgsIDMsIAorICAgIDIzMiwgNzYsIDgsIDMsIDIzMiwgNzcsIDgsIDMsIDIzMiwgNTUsIDgsIDMsIDIzMiwgNTQsIDgsIDMsIDIzMiwgNjMsIDgsIAorICAgIDMsIDIzMiwgNTgsIDgsIDMsIDIzMiwgNTYsIDgsIDMsIDIzMiwgNTcsIDgsIDMsIDI0MiwgMTkwLCA4LCAzLCAyNDIsIDE4OSwgCisgICAgOCwgMywgMjQyLCAyMTUsIDgsIDMsIDI0MiwgMjAwLCA4LCAzLCAyNDIsIDIwNywgOCwgMywgMjQyLCAyMDYsIDgsIDMsIAorICAgIDI0MiwgMjA5LCA4LCAzLCAyNDIsIDIwOCwgOCwgMywgMjQzLCA5MCwgOCwgMywgMjQzLCA4NSwgOCwgMywgMjQzLCAxMzYsIAorICAgIDgsIDMsIDI0MywgMTAwLCA4LCAzLCAyNDIsIDkyLCA4LCAzLCAyNDIsIDkxLCA4LCAzLCAyNDIsIDk0LCA4LCAzLCAyNDIsIAorICAgIDkzLCA4LCAzLCAyNDIsIDE1NSwgOCwgMywgMjQyLCAxNTMsIDgsIDMsIDI0MiwgMTc1LCA4LCAzLCAyNDIsIDE2MywgOCwgMywgCisgICAgMjQzLCAzNCwgOCwgMywgMjQzLCAzMiwgOCwgMywgMjQzLCA2MywgOCwgMywgMjQzLCA0NSwgOCwgMywgMjQyLCA4MiwgOCwgCisgICAgMywgMjQyLCA4MSwgOCwgMywgMjQyLCAxMTQsIDgsIDMsIDI0MiwgOTAsIDgsIDMsIDI0MiwgODMsIDgsIDMsIDI0MiwgODksIAorICAgIDgsIDMsIDIzNCwgNjIsIDgsIDMsIDIzNCwgNjEsIDgsIDMsIDIzNCwgOTMsIDgsIDMsIDIzNCwgNzYsIDgsIDMsIDIzNCwgCisgICAgODYsIDgsIDMsIDIzNCwgODksIDgsIDMsIDIzNCwgODcsIDgsIDMsIDIzNCwgMjAzLCA4LCAzLCAyMzQsIDE5MSwgOCwgMywgCisgICAgMTc2LCA4LCAzLCAyMzQsIDIyOSwgOCwgMywgMjMzLCAyMDEsIDgsIDMsIDIzMywgMjA2LCA4LCAzLCAyMzMsIDIwMywgOCwgCisgICAgMywgMjM0LCAxLCA4LCAzLCAyMzMsIDI1MywgOCwgMywgMjM0LCAyOSwgOCwgMywgMjM0LCA4LCA4LCAzLCAyMzQsIDE1NywgCisgICAgOCwgMywgMjM0LCAxNDEsIDgsIDMsIDIzNCwgMTgzLCA4LCAzLCAyMzQsIDE2MCwgOCwgMywgMjMzLCAxOTAsIDgsIDMsIAorICAgIDIzMywgMTg3LCA4LCAzLCAyMzMsIDIxOCwgOCwgMywgMjMzLCAyMDAsIDgsIDMsIDIzMywgMTkzLCA4LCAzLCAyMzMsIDE5NywgCisgICAgOCwgMywgMjQzLCAxNiwgOCwgMywgMjQzLCAxNSwgOCwgMywgMjQzLCAyMCwgOCwgMywgMjQzLCAxNywgOCwgMywgMjQzLCAKKyAgICAxOSwgOCwgMywgMjQzLCAxOCwgOCwgMywgMjQzLCAyNywgOCwgMywgMjQzLCAyNiwgOCwgMywgMjQzLCAzMCwgOCwgMywgCisgICAgMjQzLCAyOCwgOCwgMywgMjQzLCA3LCA4LCAzLCAyNDMsIDYsIDgsIDMsIDI0MywgOSwgOCwgMywgMjQzLCA4LCA4LCAzLCAKKyAgICAyNDMsIDEyLCA4LCAzLCAyNDMsIDExLCA4LCAzLCAyNDMsIDE0LCA4LCAzLCAyNDMsIDEzLCA4LCAzLCAyNDMsIDIyLCA4LCAKKyAgICAzLCAyNDMsIDIxLCA4LCAzLCAyNDMsIDI1LCA4LCAzLCAyNDMsIDIzLCA4LCAzLCAyNDMsIDIsIDgsIDMsIDI0MywgMSwgOCwgCisgICAgMywgMjQzLCAxMCwgOCwgMywgMjQzLCA1LCA4LCAzLCAyNDMsIDMsIDgsIDMsIDI0MywgNCwgOCwgMywgMjMwLCAyNTAsIDgsIAorICAgIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzEsIDEzLCA4LCAzLCAyMzEsIDEyLCA4LCAzLCAyMzEsIDE1LCA4LCAzLCAyMzEsIDE0LCAKKyAgICA4LCAzLCAyMzAsIDI0MSwgOCwgMywgMjMwLCAyNDMsIDgsIDMsIDIzMCwgMjQyLCA4LCAzLCAyMzAsIDI0NiwgOCwgMywgCisgICAgMjMwLCAyNDUsIDgsIDMsIDIzMCwgMjQ4LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjU0LCAKKyAgICA4LCAzLCAyMzAsIDI1MywgOCwgMywgMjMwLCAyMzcsIDgsIDMsIDIzMCwgMjM2LCA4LCAzLCAyMzAsIDI0NCwgOCwgMywgCisgICAgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjM4LCA4LCAzLCAyMzAsIDIzOSwgOCwgMywgMjQwLCAxODEsIDgsIDMsIDI0MCwgMTgwLCAKKyAgICA4LCAzLCAyNDAsIDE4NywgOCwgMywgMjQwLCAxODIsIDgsIDMsIDI0MCwgMTg0LCA4LCAzLCAyNDAsIDE4MywgOCwgMywgCisgICAgMjQwLCAxODYsIDgsIDMsIDI0MCwgMTg1LCA4LCAzLCAyNDAsIDE5MiwgOCwgMywgMjQwLCAxOTEsIDgsIDMsIDI0MCwgMTk0LCAKKyAgICA4LCAzLCAyNDAsIDE5MywgOCwgMywgMjQwLCAxNzMsIDgsIDMsIDI0MCwgMTcyLCA4LCAzLCAyNDAsIDE3NSwgOCwgMywgCisgICAgMjQwLCAxNzQsIDgsIDMsIDI0MCwgMTc3LCA4LCAzLCAyNDAsIDE3NiwgOCwgMywgMjQwLCAxNzksIDgsIDMsIDI0MCwgMTc4LCAKKyAgICA4LCAzLCAyNDAsIDE4OCwgOCwgMywgMjQwLCAxOTAsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAyMjksIDI1LCA4LCAzLCAyMjksIAorICAgIDI3LCA4LCAzLCAyMjksIDI2LCA4LCAzLCAyMjksIDY4LCA4LCAzLCAyMjksIDY2LCA4LCAzLCAyMjksIDc4LCA4LCAzLCAKKyAgICAyMjksIDcxLCA4LCAzLCAyMjgsIDI0NCwgOCwgMywgMjI4LCAyNDMsIDgsIDMsIDIyOCwgMjQ1LCA4LCAzLCAyMjgsIDI1MywgCisgICAgOCwgMywgMjI4LCAyNTAsIDgsIDMsIDIyOSwgNSwgOCwgMywgMjI4LCAyNTUsIDgsIDMsIDIyOSwgNTksIDgsIDMsIDIyOSwgCisgICAgNjUsIDgsIDMsIDIyOSwgNjEsIDgsIDMsIDI0MSwgMTU3LCA4LCAzLCAyNDEsIDE2NywgOCwgMywgMjQxLCAxNzYsIDgsIDMsIAorICAgIDI0MSwgMjUyLCA4LCAzLCAyNDEsIDI0NCwgOCwgMywgMTYyLCA4LCAzLCAyNDIsIDcsIDgsIDMsIDI0MCwgMjA3LCA4LCAzLCAKKyAgICAyNDAsIDIwNiwgOCwgMywgMjQwLCAyMDksIDgsIDMsIDI0MCwgMjA4LCA4LCAzLCAyNDAsIDI0MywgOCwgMywgMjQwLCAyMzQsIAorICAgIDgsIDMsIDI0MSwgNjksIDgsIDMsIDI0MSwgNDgsIDgsIDMsIDI0MSwgMTk1LCA4LCAzLCAyNDEsIDIzOSwgOCwgMywgMjQxLCAKKyAgICAyMDcsIDgsIDMsIDIxMiwgNDMsIDgsIDMsIDIxMiwgMjgsIDgsIDMsIDIxMiwgNjUsIDgsIDMsIDIxMiwgNTEsIDgsIDMsIAorICAgIDIxMSwgMTg1LCA4LCAzLCAyMTEsIDE4NywgOCwgMywgMjExLCAxODYsIDgsIDMsIDIxMSwgMjAzLCA4LCAzLCAyMTEsIDIyNywgCisgICAgOCwgMywgMjExLCAyMTAsIDgsIDMsIDIxMiwgNSwgOCwgMywgMjEyLCAyMiwgOCwgMywgMjEyLCAxMCwgOCwgMywgMjEwLCAKKyAgICAzMCwgOCwgMywgMjEwLCAyOSwgOCwgMywgMjEwLCA0NCwgOCwgMywgMjEwLCAzMiwgOCwgMywgMjEwLCAzNywgOCwgMywgCisgICAgMjEwLCAzOSwgOCwgMywgMjEwLCAzOCwgOCwgMywgMjEwLCAxMDIsIDgsIDMsIDIxMCwgOTksIDgsIDMsIDIxMCwgMTE2LCA4LCAKKyAgICAzLCAyMTAsIDEwNSwgOCwgMywgMjEwLCA2LCA4LCAzLCAyMTAsIDgsIDgsIDMsIDIxMCwgNywgOCwgMywgMjEwLCAxOSwgOCwgCisgICAgMywgMjEwLCAxOCwgOCwgMywgMjEwLCAyMywgOCwgMywgMjEwLCAyMCwgOCwgMywgMjEwLCA4NCwgOCwgMywgMjEwLCA5NCwgCisgICAgOCwgMywgMjEwLCA4OCwgOCwgMywgMjEwLCAyLCA4LCAzLCAyMTAsIDEsIDgsIDMsIDIxMCwgMTMsIDgsIDMsIDIxMCwgNSwgCisgICAgOCwgMywgMjEwLCAzLCA4LCAzLCAyMTAsIDQsIDgsIDMsIDIwOSwgMjQ1LCA4LCAzLCAyMDksIDI0NCwgOCwgMywgMjA5LCAKKyAgICAyNTAsIDgsIDMsIDIwOSwgMjQ4LCA4LCAzLCAyMDksIDI0NiwgOCwgMywgMjA5LCAyNDcsIDgsIDMsIDI1MCwgMjksIDgsIDMsIAorICAgIDI1MCwgMjUsIDgsIDMsIDI1MCwgNTIsIDgsIDMsIDI1MCwgMzgsIDgsIDMsIDI1MCwgNDksIDgsIDMsIDI1MCwgNDMsIDgsIAorICAgIDMsIDI1MCwgNTEsIDgsIDMsIDI1MCwgNTAsIDgsIDMsIDI1MCwgMjI1LCA4LCAzLCAyNTAsIDIxOCwgOCwgMywgMjUxLCAzNCwgCisgICAgOCwgMywgMjUwLCAyNTIsIDgsIDMsIDI0OSwgMTA1LCA4LCAzLCAyNDksIDEwNywgOCwgMywgMjQ5LCAxMDYsIDgsIDMsIAorICAgIDI0OSwgMTU0LCA4LCAzLCAyNDksIDE0NSwgOCwgMywgMjQ5LCAyMzksIDgsIDMsIDI0OSwgMTcwLCA4LCAzLCAyNTAsIDE2MSwgCisgICAgOCwgMywgMjUwLCAxOTEsIDgsIDMsIDI1MCwgMTY2LCA4LCAzLCAyNDksIDg1LCA4LCAzLCAyNDksIDgzLCA4LCAzLCAyNDksIAorICAgIDExMywgOCwgMywgMjQ5LCAxMDMsIDgsIDMsIDI0OSwgOTAsIDgsIDMsIDI0OSwgMTAyLCA4LCAzLCAyNDksIDY0LCA4LCAzLCAKKyAgICAyNDksIDYzLCA4LCAzLCAyNDksIDc0LCA4LCAzLCAyNDksIDcwLCA4LCAzLCAyNDksIDY1LCA4LCAzLCAyNDksIDY3LCA4LCAKKyAgICAzLCAyMDksIDIyOCwgOCwgMywgMjA5LCAyMjcsIDgsIDMsIDIwOSwgMjM0LCA4LCAzLCAyMDksIDIyOSwgOCwgMywgMjA5LCAKKyAgICAyMzEsIDgsIDMsIDIwOSwgMjMwLCA4LCAzLCAyMDksIDIzMywgOCwgMywgMjA5LCAyMzIsIDgsIDMsIDIwOSwgMjQwLCA4LCAKKyAgICAzLCAyMDksIDIzOSwgOCwgMywgMjA5LCAyNDMsIDgsIDMsIDIwOSwgMjQxLCA4LCAzLCAyMDksIDIyNCwgOCwgMywgMjA5LCAKKyAgICAyMjYsIDgsIDMsIDIwOSwgMjI1LCA4LCAzLCAyMDksIDIzNSwgOCwgMywgMjA5LCAyMzgsIDgsIDMsIDIwOSwgMjM2LCA4LCAKKyAgICAzLCAyMDksIDIxNywgOCwgMywgMjA5LCAyMjEsIDgsIDMsIDIwOSwgMjIwLCA4LCAzLCAyMDksIDIxOCwgOCwgMywgMjA5LCAKKyAgICAyMTksIDgsIDMsIDIwOSwgMjExLCA4LCAzLCAyMDksIDIxMCwgOCwgMywgMjA5LCAyMTYsIDgsIDMsIDIwOSwgMjE0LCA4LCAKKyAgICAzLCAyMDksIDIxMiwgOCwgMywgMjA5LCAyMTMsIDgsIDMsIDIyNywgMTA1LCA4LCAzLCAyMjcsIDEwNCwgOCwgMywgMjI3LCAKKyAgICAxMTAsIDgsIDMsIDIyNywgMTA2LCA4LCAzLCAyMjcsIDEwNywgOCwgMywgMjI3LCAxMDksIDgsIDMsIDIyNywgMTA4LCA4LCAKKyAgICAzLCAyMjcsIDExNSwgOCwgMywgMjI3LCAxMTQsIDgsIDMsIDIyNywgMTE4LCA4LCAzLCAyMjcsIDExNywgOCwgMywgMjI3LCAKKyAgICA5OCwgOCwgMywgMjI3LCA5OSwgOCwgMywgMjI3LCAxMDIsIDgsIDMsIDIyNywgMTAzLCA4LCAzLCAyMjcsIDExMSwgOCwgMywgCisgICAgMjI3LCAxMTMsIDgsIDMsIDIyNywgOTMsIDgsIDMsIDIyNywgMTAxLCA4LCAzLCAyMjcsIDk3LCA4LCAzLCAyMjcsIDk0LCA4LCAKKyAgICAzLCAyMjcsIDk1LCA4LCAzLCAyMjcsIDg4LCA4LCAzLCAyMjcsIDg3LCA4LCAzLCAyMjcsIDkyLCA4LCAzLCAyMjcsIDkxLCAKKyAgICA4LCAzLCAyMjcsIDg5LCA4LCAzLCAyMjcsIDkwLCA4LCAzLCAyMTksIDEyOCwgOCwgMywgMTk0LCA4LCAzLCAyMTksIDE5MiwgCisgICAgOCwgMywgMjE5LCAxMzEsIDgsIDMsIDIxOSwgMTg0LCA4LCAzLCAyMTksIDE4NywgOCwgMywgMjE5LCAxODUsIDgsIDMsIAorICAgIDIyMSwgMjI3LCA4LCAzLCAyMjEsIDIxNSwgOCwgMywgMjA2LCA4LCAzLCAyMjEsIDIzNSwgOCwgMywgMjE4LCAyOSwgOCwgMywgCisgICAgMjE4LCAzMSwgOCwgMywgMjE4LCAzMCwgOCwgMywgMjE5LCAzNSwgOCwgMywgMjE5LCAyNCwgOCwgMywgMjE5LCA1OSwgOCwgCisgICAgMywgMjE5LCAzOSwgOCwgMywgMjIwLCAxMTUsIDgsIDMsIDIyMSwgMTgyLCA4LCAzLCAyMjAsIDE0MCwgOCwgMywgMjE4LCA2LCAKKyAgICA4LCAzLCAyMTgsIDQsIDgsIDMsIDIxOCwgODQsIDgsIDMsIDIxOCwgMjgsIDgsIDMsIDIxOCwgMTAsIDgsIDMsIDIxOCwgMTgsIAorICAgIDgsIDMsIDIxNywgMTY3LCA4LCAzLCAyMTcsIDE2NiwgOCwgMywgMjE3LCAyMzMsIDgsIDMsIDIxNywgMTc0LCA4LCAzLCAKKyAgICAyMTcsIDE2OSwgOCwgMywgMjE3LCAxNzMsIDgsIDMsIDIxOCwgMTg3LCA4LCAzLCAyMTgsIDE4NiwgOCwgMywgMjE4LCAxOTMsIAorICAgIDgsIDMsIDIxOCwgMTg4LCA4LCAzLCAyMTgsIDE5MCwgOCwgMywgMjE4LCAxOTIsIDgsIDMsIDIxOCwgMTkxLCA4LCAzLCAKKyAgICAyMTgsIDIwMSwgOCwgMywgMjE4LCAxOTksIDgsIDMsIDIxOCwgMjI0LCA4LCAzLCAyMTgsIDIwMiwgOCwgMywgMjE4LCAxODIsIAorICAgIDgsIDMsIDIxOCwgMTgxLCA4LCAzLCAyMTgsIDE4NSwgOCwgMywgMjE4LCAxODMsIDgsIDMsIDIxOCwgMTk1LCA4LCAzLCAKKyAgICAyMTgsIDE5OCwgOCwgMywgMjE4LCAxOTYsIDgsIDMsIDIxOCwgMTc4LCA4LCAzLCAyMTgsIDE3NiwgOCwgMywgMjE4LCAxODAsIAorICAgIDgsIDMsIDIxOCwgMTc5LCA4LCAzLCAyMTgsIDE3MSwgOCwgMywgMjE4LCAxNzAsIDgsIDMsIDIxOCwgMTc1LCA4LCAzLCAKKyAgICAyMTgsIDE3NCwgOCwgMywgMjE4LCAxNzIsIDgsIDMsIDIxOCwgMTczLCA4LCAzLCAyMTAsIDc3LCA4LCAzLCAyMTAsIDc2LCAKKyAgICA4LCAzLCAyMTAsIDgyLCA4LCAzLCAyMTAsIDc5LCA4LCAzLCAyMTAsIDU5LCA4LCAzLCAyMTAsIDYxLCA4LCAzLCAyMTAsIAorICAgIDYwLCA4LCAzLCAyMTAsIDY0LCA4LCAzLCAyMTAsIDYzLCA4LCAzLCAyMTAsIDY3LCA4LCAzLCAyMTAsIDY1LCA4LCAzLCAKKyAgICAyMTAsIDcxLCA4LCAzLCAyMTAsIDcwLCA4LCAzLCAyMTAsIDc0LCA4LCAzLCAyMTAsIDcyLCA4LCAzLCAyMTAsIDU1LCA4LCAKKyAgICAzLCAyMTAsIDU0LCA4LCAzLCAyMTAsIDYyLCA4LCAzLCAyMTAsIDU4LCA4LCAzLCAyMTAsIDU2LCA4LCAzLCAyMTAsIDU3LCAKKyAgICA4LCAzLCAyMTAsIDQ3LCA4LCAzLCAyMTAsIDQ2LCA4LCAzLCAyMTAsIDUxLCA4LCAzLCAyMTAsIDUwLCA4LCAzLCAyMTAsIAorICAgIDQ4LCA4LCAzLCAyMTAsIDQ5LCA4LCAzLCAyNTAsIDEzNywgOCwgMywgMjUwLCAxMzQsIDgsIDMsIDI1MCwgMTU4LCA4LCAzLCAKKyAgICAyNTAsIDE0NSwgOCwgMywgMjUwLCA2NiwgOCwgMywgMjUwLCA2NSwgOCwgMywgMjUwLCA2OCwgOCwgMywgMjUwLCA2NywgOCwgCisgICAgMywgMjUwLCA4MCwgOCwgMywgMjUwLCA3OSwgOCwgMywgMjUwLCA4NywgOCwgMywgMjUwLCA4MiwgOCwgMywgMjUwLCAxMTYsIAorICAgIDgsIDMsIDI1MCwgMTE0LCA4LCAzLCAyNTAsIDEzMiwgOCwgMywgMjUwLCAxMjIsIDgsIDMsIDI1MCwgNjAsIDgsIDMsIDI1MCwgCisgICAgNzAsIDgsIDMsIDI1MCwgNjQsIDgsIDMsIDI1MCwgNjEsIDgsIDMsIDI1MCwgNjMsIDgsIDMsIDI1MCwgNTQsIDgsIDMsIAorICAgIDI1MCwgNTMsIDgsIDMsIDI1MCwgNTgsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIDI1MCwgNTUsIDgsIDMsIDI1MCwgNTYsIDgsIAorICAgIDMsIDIyMiwgMTc2LCA4LCAzLCAyMjIsIDE4MCwgOCwgMywgMjIyLCAxNTksIDgsIDMsIDIyMiwgMTYwLCA4LCAzLCAyMjIsIAorICAgIDE2MywgOCwgMywgMjIyLCAxNjIsIDgsIDMsIDIyMiwgMTY2LCA4LCAzLCAyMjIsIDE2NCwgOCwgMywgMjIyLCAxNzAsIDgsIAorICAgIDMsIDIyMiwgMTY5LCA4LCAzLCAyMjIsIDE3NSwgOCwgMywgMjIyLCAxNzEsIDgsIDMsIDIyMiwgMTU1LCA4LCAzLCAyMjIsIAorICAgIDE1MywgOCwgMywgMjIyLCAxNjEsIDgsIDMsIDIyMiwgMTU4LCA4LCAzLCAyMjIsIDE1NiwgOCwgMywgMjIyLCAxNTcsIDgsIAorICAgIDMsIDIyMiwgMTQ4LCA4LCAzLCAyMjIsIDE0NywgOCwgMywgMjIyLCAxNTIsIDgsIDMsIDIyMiwgMTUxLCA4LCAzLCAyMjIsIAorICAgIDE0OSwgOCwgMywgMjIyLCAxNTAsIDgsIDMsIDIyOCwgMzUsIDgsIDMsIDIyOCwgMzQsIDgsIDMsIDIyOCwgMzcsIDgsIDMsIAorICAgIDIyOCwgMzYsIDgsIDMsIDIyOCwgMjcsIDgsIDMsIDIyOCwgMjksIDgsIDMsIDIyOCwgMjgsIDgsIDMsIDIyOCwgMzEsIDgsIAorICAgIDMsIDIyOCwgMzAsIDgsIDMsIDIyOCwgMzMsIDgsIDMsIDIyOCwgMzIsIDgsIDMsIDIyOCwgMjIsIDgsIDMsIDIyOCwgMjEsIAorICAgIDgsIDMsIDIyOCwgMjYsIDgsIDMsIDIyOCwgMjUsIDgsIDMsIDIyOCwgMjMsIDgsIDMsIDIyOCwgMjQsIDgsIDMsIDIyOCwgCisgICAgMTYsIDgsIDMsIDIyOCwgMTUsIDgsIDMsIDIyOCwgMjAsIDgsIDMsIDIyOCwgMTksIDgsIDMsIDIyOCwgMTcsIDgsIDMsIAorICAgIDIyOCwgMTgsIDgsIDMsIDIyMCwgNzMsIDgsIDMsIDIyMCwgNjgsIDgsIDMsIDIyMCwgMTAzLCA4LCAzLCAyMjAsIDg0LCA4LCAKKyAgICAzLCAyMTksIDIxNiwgOCwgMywgMjE5LCAyMTgsIDgsIDMsIDIxOSwgMjE3LCA4LCAzLCAyMTksIDIzNywgOCwgMywgMjE5LCAKKyAgICAyMzQsIDgsIDMsIDIyMCwgOCwgOCwgMywgMjE5LCAyNTUsIDgsIDMsIDIyMCwgNDMsIDgsIDMsIDIyMCwgMzYsIDgsIDMsIAorICAgIDIyMCwgNjQsIDgsIDMsIDIyMCwgNTEsIDgsIDMsIDIxOSwgMjEyLCA4LCAzLCAyMTksIDIxMCwgOCwgMywgMjE5LCAyMjYsIAorICAgIDgsIDMsIDIxOSwgMjE1LCA4LCAzLCAyMTksIDIxMywgOCwgMywgMjE5LCAyMTQsIDgsIDMsIDIxOSwgMTk1LCA4LCAzLCAKKyAgICAyMTksIDE5NCwgOCwgMywgMjE5LCAyMDEsIDgsIDMsIDIxOSwgMTk4LCA4LCAzLCAyMTksIDE5NiwgOCwgMywgMjE5LCAxOTcsIAorICAgIDgsIDMsIDIyMywgMTQyLCA4LCAzLCAyMjMsIDEzNiwgOCwgMywgMjA1LCA4LCAzLCAyMjMsIDE0OCwgOCwgMywgMjIyLCAKKyAgICAxMjEsIDgsIDMsIDIyMiwgMTIzLCA4LCAzLCAyMjIsIDEyMiwgOCwgMywgMjIyLCAxODksIDgsIDMsIDIyMiwgMTgyLCA4LCAKKyAgICAzLCAyMjIsIDIxMiwgOCwgMywgMjIyLCAxOTMsIDgsIDMsIDIyMywgNDQsIDgsIDMsIDIyMywgMTI5LCA4LCAzLCAyMjMsIAorICAgIDgyLCA4LCAzLCAyMjIsIDExNCwgOCwgMywgMjIyLCAxMTEsIDgsIDMsIDIyMiwgMTQxLCA4LCAzLCAyMjIsIDEyMCwgOCwgMywgCisgICAgMjIyLCAxMTYsIDgsIDMsIDIyMiwgMTE3LCA4LCAzLCAyMjIsIDk2LCA4LCAzLCAyMjIsIDk1LCA4LCAzLCAyMjIsIDEwMSwgCisgICAgOCwgMywgMjIyLCA5OSwgOCwgMywgMjIyLCA5NywgOCwgMywgMjIyLCA5OCwgOCwgMywgMjM1LCA5OSwgOCwgMywgMjM1LCAKKyAgICA5OCwgOCwgMywgMjM1LCAxMDksIDgsIDMsIDIzNSwgMTAwLCA4LCAzLCAyMzUsIDEwNSwgOCwgMywgMjM1LCAxMDQsIDgsIDMsIAorICAgIDIzNSwgMTA3LCA4LCAzLCAyMzUsIDEwNiwgOCwgMywgMjM1LCA0MiwgOCwgMywgMjM1LCA0MSwgOCwgMywgMjM1LCA0NCwgOCwgCisgICAgMywgMjM1LCA0MywgOCwgMywgMjM1LCA1NywgOCwgMywgMjM1LCA1NSwgOCwgMywgMjM1LCA2OSwgOCwgMywgMjM1LCA1OSwgCisgICAgOCwgMywgMjM1LCAzNSwgOCwgMywgMjM1LCAzMywgOCwgMywgMjM1LCA1MiwgOCwgMywgMjM1LCA0MCwgOCwgMywgMjM1LCAKKyAgICAzNywgOCwgMywgMjM1LCAzOCwgOCwgMywgMjM1LCAyNywgOCwgMywgMjM1LCAyNiwgOCwgMywgMjM1LCAzMSwgOCwgMywgCisgICAgMjM1LCAzMCwgOCwgMywgMjM1LCAyOCwgOCwgMywgMjM1LCAyOSwgOCwgMywgMjI0LCA0NywgOCwgMywgMjI0LCA0NSwgOCwgCisgICAgMywgMjI0LCA1NCwgOCwgMywgMjI0LCA0OCwgOCwgMywgMjI0LCA1MSwgOCwgMywgMjI0LCA1MCwgOCwgMywgMjI0LCA1MywgCisgICAgOCwgMywgMjI0LCA1MiwgOCwgMywgMjI0LCAwLCA4LCAzLCAyMjMsIDI1MywgOCwgMywgMjI0LCAyLCA4LCAzLCAyMjQsIDEsIAorICAgIDgsIDMsIDIyNCwgMzQsIDgsIDMsIDIyNCwgMzMsIDgsIDMsIDIyNCwgNDMsIDgsIDMsIDIyNCwgMzcsIDgsIDMsIDIyMywgCisgICAgMjQ4LCA4LCAzLCAyMjMsIDI0NCwgOCwgMywgMjI0LCAzMSwgOCwgMywgMjIzLCAyNTIsIDgsIDMsIDIyMywgMjUwLCA4LCAzLCAKKyAgICAyMjMsIDI1MSwgOCwgMywgMjIzLCAyMjgsIDgsIDMsIDIyMywgMjI2LCA4LCAzLCAyMjMsIDIzOCwgOCwgMywgMjIzLCAyMzEsIAorICAgIDgsIDMsIDIyMywgMjI5LCA4LCAzLCAyMjMsIDIzMCwgOCwgMywgMjM1LCA4OCwgOCwgMywgMjM1LCA4NywgOCwgMywgMjM1LCAKKyAgICA5NCwgOCwgMywgMjM1LCA4OSwgOCwgMywgMjM1LCA5MSwgOCwgMywgMjM1LCA5MCwgOCwgMywgMjM1LCA5MywgOCwgMywgCisgICAgMjM1LCA5MiwgOCwgMywgMjM1LCA3OSwgOCwgMywgMjM1LCA4MSwgOCwgMywgMjM1LCA4MCwgOCwgMywgMjM1LCA4NCwgOCwgCisgICAgMywgMjM1LCA4MywgOCwgMywgMjM1LCA4NiwgOCwgMywgMjM1LCA4NSwgOCwgMywgMjM1LCA3NSwgOCwgMywgMjM1LCA3NCwgCisgICAgOCwgMywgMjM1LCA4MiwgOCwgMywgMjM1LCA3OCwgOCwgMywgMjM1LCA3NiwgOCwgMywgMjM1LCA3NywgOCwgMywgMjM1LCAKKyAgICA3MSwgOCwgMywgMjM1LCA3MCwgOCwgMywgMjM1LCA3MywgOCwgMywgMjM1LCA3MiwgOCwgMywgMjI4LCAxNjMsIDgsIDMsIAorICAgIDIyOCwgMTYyLCA4LCAzLCAyMjgsIDE3MCwgOCwgMywgMjI4LCAxNjQsIDgsIDMsIDIyOCwgMTY2LCA4LCAzLCAyMjgsIDE2NSwgCisgICAgOCwgMywgMjI4LCAxNjksIDgsIDMsIDIyOCwgMTY3LCA4LCAzLCAyMjgsIDE1MiwgOCwgMywgMjI4LCAxNTMsIDgsIDMsIAorICAgIDIyOCwgMTU4LCA4LCAzLCAyMjgsIDE1NywgOCwgMywgMjI4LCAxNjEsIDgsIDMsIDIyOCwgMTU5LCA4LCAzLCAyMjgsIDE0NywgCisgICAgOCwgMywgMjI4LCAxNTYsIDgsIDMsIDIyOCwgMTUxLCA4LCAzLCAyMjgsIDE0OCwgOCwgMywgMjI4LCAxNDksIDgsIDMsIAorICAgIDIyOCwgMTQyLCA4LCAzLCAyMjgsIDE0MSwgOCwgMywgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE0MywgCisgICAgOCwgMywgMjI4LCAxNDQsIDgsIDMsIDIyNywgMTM4LCA4LCAzLCAyMjcsIDEzNywgOCwgMywgMjI3LCAxNDksIDgsIDMsIAorICAgIDIyNywgMTQyLCA4LCAzLCAyMjcsIDE0NiwgOCwgMywgMjI3LCAxNDUsIDgsIDMsIDIyNywgMTQ4LCA4LCAzLCAyMjcsIDE0NywgCisgICAgOCwgMywgMjI3LCAxMjUsIDgsIDMsIDIyNywgMTI3LCA4LCAzLCAyMjcsIDEyNiwgOCwgMywgMjI3LCAxMzEsIDgsIDMsIAorICAgIDIyNywgMTMwLCA4LCAzLCAyMjcsIDEzNSwgOCwgMywgMjI3LCAxMzIsIDgsIDMsIDIyNywgMTIzLCA4LCAzLCAyMjcsIDEyMSwgCisgICAgOCwgMywgMjI3LCAxMjksIDgsIDMsIDIyNywgMTI0LCA4LCAzLCAyMTEsIDE1MCwgOCwgMywgMjExLCAxNDksIDgsIDMsIAorICAgIDIxMSwgMTU3LCA4LCAzLCAyMTEsIDE1MiwgOCwgMywgMjExLCAxNTQsIDgsIDMsIDIxMSwgMTUzLCA4LCAzLCAyMTEsIDE1NiwgCisgICAgOCwgMywgMjExLCAxNTUsIDgsIDMsIDIxMSwgMTM5LCA4LCAzLCAyMTEsIDE0MCwgOCwgMywgMjExLCAxNDQsIDgsIDMsIAorICAgIDIxMSwgMTQzLCA4LCAzLCAyMTEsIDE0OCwgOCwgMywgMjExLCAxNDYsIDgsIDMsIDIxMSwgMTIxLCA4LCAzLCAyMTEsIDExOSwgCisgICAgOCwgMywgMjExLCAxMzEsIDgsIDMsIDIxMSwgMTI0LCA4LCAzLCAyMTEsIDEyMiwgOCwgMywgMjExLCAxMjMsIDgsIDMsIAorICAgIDIxMCwgMjUwLCA4LCAzLCAyMTAsIDI0OCwgOCwgMywgMjExLCA4LCA4LCAzLCAyMTAsIDI1MSwgOCwgMywgMjExLCAyLCA4LCAKKyAgICAzLCAyMTEsIDEsIDgsIDMsIDIxMSwgNSwgOCwgMywgMjExLCAzLCA4LCAzLCAyMTAsIDE5MSwgOCwgMywgMjEwLCAxOTAsIDgsIAorICAgIDMsIDIxMCwgMTk0LCA4LCAzLCAyMTAsIDE5MiwgOCwgMywgMjEwLCAyMjQsIDgsIDMsIDIxMCwgMjIxLCA4LCAzLCAyMTAsIAorICAgIDI0NCwgOCwgMywgMjEwLCAyMjgsIDgsIDMsIDIxMCwgMTgyLCA4LCAzLCAyMTAsIDE3OCwgOCwgMywgMjEwLCAyMTIsIDgsIAorICAgIDMsIDIxMCwgMTg5LCA4LCAzLCAyMTAsIDE4NSwgOCwgMywgMjEwLCAxODYsIDgsIDMsIDIxMCwgMTYyLCA4LCAzLCAyMTAsIAorICAgIDE2MSwgOCwgMywgMjEwLCAxNjksIDgsIDMsIDIxMCwgMTY1LCA4LCAzLCAyMTAsIDE2MywgOCwgMywgMjEwLCAxNjQsIDgsIAorICAgIDM0LCAyMjQsIDM0LCA4LCAzNCwgMjMyLCAyNDIsIDgsIDM0LCAyMzQsIDYyLCA4LCAzNCwgMjI3LCAxNDIsIDgsIDM0LCAKKyAgICAyNDksIDcwLCA4LCAzNCwgMjE4LCAxOTMsIDgsIDM0LCAyNDMsIDEzLCA4LCAzNCwgMjQzLCA0NSwgOCwgMzQsIDIzMCwgCisgICAgMjMxLCA4LCAzNCwgMjQwLCAxODEsIDgsIDM0LCAyMzIsIDU3LCA4LCAzNCwgMjUyLCA4NCwgOCwgMzQsIDIzMCwgMTI3LCA4LCAKKyAgICAzNCwgMjEwLCAyNDQsIDgsIDM0LCAyMjQsIDEyMiwgOCwgMzQsIDI0MCwgMTc1LCA4LCAzNCwgMjE3LCA0NywgOCwgMzQsIAorICAgIDI0MywgMTM2LCA4LCAzNCwgMjEwLCA1LCA4LCAzNCwgMjQ5LCA2NCwgOCwgMzQsIDI0OCwgOTYsIDgsIDM0LCAyNTEsIDk5LCAKKyAgICA4LCAzNCwgMjQzLCA5LCA4LCAzNCwgMjI3LCAxMzIsIDgsIDM0LCAyMTUsIDExOSwgOCwgMzQsIDIyNiwgMTc2LCA4LCAzNCwgCisgICAgMjM1LCA3NSwgOCwgMzQsIDIxMCwgMTksIDgsIDM0LCAyMjQsIDEwMSwgOCwgMzQsIDI0MSwgMTA5LCA4LCAzNCwgMjEwLCAKKyAgICAyNTAsIDgsIDM0LCAyMTIsIDExMiwgOCwgMzQsIDIxOSwgMjAxLCA4LCAzNCwgMjEzLCAyNDQsIDgsIDM0LCAyMTAsIDExNiwgCisgICAgOCwgMzQsIDIzNSwgNjksIDgsIDM0LCAyMjcsIDk3LCA4LCAzNCwgMjM1LCA3MywgOCwgMzQsIDI0MiwgMTU1LCA4LCAzNCwgCisgICAgMjM1LCA5MywgOCwgMzQsIDIxMSwgMjI3LCA4LCAzNCwgMjQ2LCA3OSwgOCwgMzQsIDIxOSwgMjE0LCA4LCAzNCwgMjMyLCAKKyAgICAyMzcsIDgsIDM0LCAyNDksIDc0LCA4LCAzNCwgMjQ5LCAxMDYsIDgsIDM0LCAyNTAsIDM4LCA4LCAzNCwgMjQwLCAxNzgsIDgsIAorICAgIDM0LCAyMjAsIDczLCA4LCAzNCwgMjEwLCA0LCA4LCAzNCwgMjE5LCAyNTUsIDgsIDM0LCAyNTAsIDEzMiwgOCwgMzQsIDIwOSwgCisgICAgMjMxLCA4LCAzNCwgMjI5LCAxNzQsIDgsIDM0LCAyMzQsIDE4MywgMjMyLCAxOTcsIDEsIDI1MiwgMTkyLCAyMzIsIDE5NywgCisgICAgMSwgMTkwLCAyMzIsIDE5NywgMSwgMjI1LCAxNDgsIDIzMiwgMTk3LCAxLCAyNDgsIDIyMiwgMjMyLCAxOTcsIDEsIDIxNywgCisgICAgMTA2LCAyMzIsIDE5NywgMSwgMjE2LCAyMDksIDIzMiwgMTk3LCAxLCAyNDMsIDEzNiwgMjMyLCAxOTcsIDEsIDE3NiwgMjMyLCAKKyAgICAxOTcsIDEsIDIzNCwgMTMzLCAyMzIsIDE5NywgMSwgMjM1LCAxNDIsIDIzMiwgMTk3LCAxLCAyNTEsIDM0LCAyMzIsIDE5NywgCisgICAgMSwgMjUwLCAxNTgsIDIzMiwgMTk3LCAxLCAyNDYsIDM5LCAyMzIsIDE5NywgMSwgMjE1LCAxODQsIDIzMiwgMTk3LCAxLCAKKyAgICAyMTUsIDE3NiwgMjMyLCAxOTcsIDEsIDE4NSwgMjMyLCAxOTcsIDEsIDE5NywgMjMyLCAxOTcsIDEsIDIzMywgMTM2LCAyMzIsIAorICAgIDE5NywgMSwgMjA2LCAyMzIsIDE5NywgMSwgMjEwLCA4MiwgMjMyLCAxOTcsIDEsIDIxMCwgMTE2LCAyMzIsIDE5NywgMSwgCisgICAgMjI5LCA3OCwgMjMyLCAxOTcsIDEsIDE2MiwgMjMyLCAxOTcsIDEsIDIxMSwgMTY1LCAyMzIsIDE5NywgMSwgMjQxLCAxOTAsIAorICAgIDIzMiwgMTk3LCAxLCAyNDQsIDE5NywgMjMyLCAxOTcsIDEsIDIxMiwgNjUsIDIzMiwgMTk3LCAxLCAyMjAsIDEwMywgMjMyLCAKKyAgICAxOTcsIDEsIDE5MSwgMjMyLCAxOTcsIDEsIDI0MiwgMjUwLCAyMzIsIDE5NywgMSwgNjEsIDIzMiwgMTk3LCAxLCAyNTQsIAorICAgIDI0NCwgMjMyLCAxOTcsIDEsIDc1LCAyMzIsIDE5NywgMSwgMjQ1LCA1NiwgMjMyLCAxOTcsIDEsIDczLCAyMzIsIDE5NywgMSwgCisgICAgNzYsIDIzMiwgMTk3LCAxLCA3MCwgMjMyLCAxOTcsIDEsIDIxNCwgMjE0LCAyMzIsIDE5NywgMSwgMjE0LCAyMDgsIDIzMiwgCisgICAgMTk3LCAxLCAyMjYsIDIzNSwgMjMyLCAxOTcsIDEsIDEzOCwgMjMwLCAzMywgMjE2LCAxMTgsIDIzMiwgMTk3LCAxLCAxMzgsIAorICAgIDIyOSwgMjMwLCAyMjUsIDE3LCAyMzIsIDE5NywgMSwgMTM4LCAyMzAsIDMzLCAyNDksIDczLCAyMzIsIDE5NywgMSwgMTM4LCAKKyAgICAyMzAsIDMzLCAyNTEsIDIwNiwgMjMyLCAxOTcsIDEsIDEzOCwgMjMwLCAzMywgMTk3LCAyMzIsIDE5NywgMSwgMTM4LCAyMzAsIAorICAgIDMzLCAyMzUsIDExNiwgMjMyLCAxOTcsIDIyNCwgMTQyLCAyNDksIDIyMCwgMjMyLCAxOTcsIDIyNCwgMTQyLCAyNDMsIDIzMCwgCisgICAgMjE4LCAxMzAsIDQxLCAzLCAyNDUsIDIxMCwgNDEsIDMsIDI0NSwgMjA2LCA0MSwgMywgMjQxLCAyMjEsIDQxLCAzLCAyMTIsIAorICAgIDE3LCA0MSwgMywgMjEyLCAxNiwgNDEsIDMsIDIyNSwgMjEyLCA0MSwgMywgMjUyLCAxNCwgNDEsIDMsIDI1MiwgNjcsIDQxLCAKKyAgICAzLCAyMzEsIDExNywgNDEsIDMsIDIzMywgMjQ4LCA0MSwgMywgMjMxLCA3LCA0MSwgMywgMjQzLCA3NiwgNDEsIDMsIDI0NCwgCisgICAgMTQ4LCA0MSwgMywgMjEzLCAyNTAsIDQxLCAzLCAyMTcsIDEyLCA0MSwgMywgMjE2LCAxOTUsIDQxLCAzLCAyNDgsIDE3LCAKKyAgICA0MSwgMywgMjQ4LCAxNCwgNDEsIDMsIDIzMywgNTEsIDQxLCAzLCAyMjMsIDEwOSwgNDEsIDMsIDI0OCwgNzgsIDQxLCAzLCAKKyAgICAyMjksIDE0MCwgNDEsIDMsIDIyMSwgMTcxLCA0MSwgMywgMjIwLCA2MiwgNDEsIDMsIDIxMCwgOTIsIDQxLCAzLCAyMTAsIAorICAgIDczLCA0MSwgMywgMjUwLCAxODMsIDQxLCAzLCAyMzUsIDEyNSwgNDEsIDMsIDIyOCwgMTc3LCA0MSwgMywgMjExLCA0NCwgCisgICAgNDEsIDMsIDIzNCwgMTgyLCA0MSwgMywgMjI5LCA1MiwgNDEsIDMsIDI0MywgNTYsIDQxLCAzLCAyMzEsIDgxLCA0MSwgMywgCisgICAgMjI5LCAxMDQsIDQxLCAzLCAyMjcsIDE1NiwgNDEsIDMsIDczLCA0MSwgMywgMjM2LCAwLCA0MSwgMywgMjQxLCAxODEsIDQxLCAKKyAgICAzLCAyNDEsIDE2MSwgNDEsIDMsIDIxMSwgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAyMjUsIDEwOSwgNDEsIDMsIAorICAgIDI1MiwgMTIsIDQxLCAzLCAyNTIsIDcsIDQxLCAzLCAyMzEsIDExMCwgNDEsIDMsIDIzMywgMjQ1LCA0MSwgMywgMjMxLCA0LCAKKyAgICA0MSwgMywgMjQzLCA3MiwgNDEsIDMsIDI0NCwgMTIyLCA0MSwgMywgMjEzLCAxNzYsIDQxLCAzLCAyMTYsIDExOCwgNDEsIDMsIAorICAgIDIxNiwgMTc2LCA0MSwgMywgMjQ4LCA5LCA0MSwgMywgMjQ4LCAxMywgNDEsIDMsIDIzMiwgMjQyLCA0MSwgMywgMjIzLCAzNiwgCisgICAgNDEsIDMsIDI0OCwgNCwgNDEsIDMsIDIyOSwgMTM0LCA0MSwgMywgMjE5LCAxOTIsIDQxLCAzLCAyMjAsIDMzLCA0MSwgMywgCisgICAgMjEwLCA0NCwgNDEsIDMsIDIxMCwgNjksIDQxLCAzLCAyNTAsIDUyLCA0MSwgMywgMjM1LCAxMDksIDQxLCAzLCAyMjgsIAorICAgIDE3MCwgNDEsIDMsIDIxMSwgOCwgNDEsIDMsIDIzNCwgOTMsIDQxLCAzLCAyMjksIDQ0LCA0MSwgMywgMjQyLCAyMTUsIDQxLCAKKyAgICAzLCAyMzAsIDIzMSwgNDEsIDMsIDIyOCwgMjM0LCA0MSwgMywgMjI3LCAxNDksIDQxLCAzLCA2MSwgNDEsIDMsIDI1NCwgCisgICAgMTI0LCA0MSwgMywgMjI5LCA3MywgNDEsIDMsIDE2MiwgNDEsIDMsIDI0MiwgMTksIDQxLCAzLCAyMTIsIDY1LCA0MSwgMywgCisgICAgMjEyLCA1NSwgNDEsIDMsIDE5MCwgNDEsIDMsIDI1MiwgMTksIDQxLCAzLCAyNTIsIDE5MiwgNDEsIDMsIDIzMSwgMTI1LCAKKyAgICA0MSwgMywgMjMzLCAyNTIsIDQxLCAzLCAyMzMsIDI1MSwgNDEsIDMsIDIzMSwgMTEsIDQxLCAzLCAyNDMsIDgwLCA0MSwgMywgCisgICAgMjQ0LCAxOTcsIDQxLCAzLCAyMTQsIDI3LCA0MSwgMywgMjE3LCAxMDYsIDQxLCAzLCAyMTYsIDIwOSwgNDEsIDMsIDI0OCwgCisgICAgMjYsIDQxLCAzLCAyNDgsIDE2LCA0MSwgMywgMjMzLCAxMzYsIDQxLCAzLCAyMDUsIDQxLCAzLCAyNDgsIDIyMiwgNDEsIDMsIAorICAgIDIyOSwgMTQ5LCA0MSwgMywgMjA2LCA0MSwgMywgMjIwLCAxMDMsIDQxLCAzLCAyMTAsIDExNiwgNDEsIDMsIDIxMCwgODIsIAorICAgIDQxLCAzLCAyNTEsIDM0LCA0MSwgMywgMjM1LCAxNDIsIDQxLCAzLCAyMjgsIDE4NiwgNDEsIDMsIDE5MSwgNDEsIDMsIDE3NiwgCisgICAgNDEsIDMsIDIzNCwgMjM1LCA0MSwgMywgMjI5LCA1NywgNDEsIDMsIDI0MywgMTM2LCA0MSwgMywgMTg1LCA0MSwgMywgMTk3LCAKKyAgICA0MSwgMywgMjI3LCAxNjYsIDQxLCAzLCAyMjYsIDE4NCwgNDEsIDMsIDIyNiwgMTgwLCA0MSwgMywgMjQxLCA1NCwgNDEsIDMsIAorICAgIDIxMSwgMjE1LCA0MSwgMywgMjExLCAyMTEsIDQxLCAzLCAyMjQsIDI1MCwgNDEsIDMsIDI1MiwgMTAsIDQxLCAzLCAyNTEsIAorICAgIDE5NCwgNDEsIDMsIDIzMSwgMTA1LCA0MSwgMywgMjMzLCAyNDMsIDQxLCAzLCAyMzEsIDAsIDQxLCAzLCAyNDMsIDY4LCA0MSwgCisgICAgMywgMjQ0LCAzNSwgNDEsIDMsIDIxMywgMTI3LCA0MSwgMywgMjE2LCAxOCwgNDEsIDMsIDIxNiwgMTU0LCA0MSwgMywgMjQ4LCAKKyAgICA3LCA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIzMiwgMTI4LCA0MSwgMywgMjIyLCAxOTgsIDQxLCAzLCAyNDcsIDEyNiwgNDEsIAorICAgIDMsIDIyOSwgMTIxLCA0MSwgMywgMjE5LCA0MSwgNDEsIDMsIDIyMCwgMiwgNDEsIDMsIDIxMCwgMjEsIDQxLCAzLCAyMTAsIAorICAgIDY2LCA0MSwgMywgMjQ5LCAxNzUsIDQxLCAzLCAyMzUsIDYwLCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDIyOSwgCisgICAgNDEsIDMsIDIzNCwgMTEsIDQxLCAzLCAyMjksIDQyLCA0MSwgMywgMjQyLCAxNjUsIDQxLCAzLCAyMzAsIDEzMywgNDEsIDMsIAorICAgIDIyOCwgNjUsIDQxLCAzLCAyMjcsIDEzMywgNDEsIDMsIDcwLCA0MSwgMywgMjE0LCAxOTAsIDQxLCAzLCAyNDAsIDIyMywgCisgICAgNDEsIDMsIDI0MCwgMjEzLCA0MSwgMywgMjExLCAxOTUsIDQxLCAzLCAyMTEsIDE4OSwgNDEsIDMsIDIyNCwgMTUxLCA0MSwgCisgICAgMywgMjUyLCA5LCA0MSwgMywgMjUxLCAxMjYsIDQxLCAzLCAyMzEsIDEwNCwgNDEsIDMsIDIzMywgMjQxLCA0MSwgMywgMjMwLCAKKyAgICAyNTUsIDQxLCAzLCAyNDMsIDY3LCA0MSwgMywgMjQzLCAyMzUsIDQxLCAzLCAyMTIsIDExNiwgNDEsIDMsIDIxNSwgMTE5LCAKKyAgICA0MSwgMywgMjE2LCAxMzcsIDQxLCAzLCAyNDgsIDUsIDQxLCAzLCAyNDgsIDEwLCA0MSwgMywgMjMyLCA5OSwgNDEsIDMsIAorICAgIDIyMiwgMTQxLCA0MSwgMywgMjQ2LCA3OSwgNDEsIDMsIDIyOSwgMTE2LCA0MSwgMywgMjE4LCA4NCwgNDEsIDMsIDIxOSwgCisgICAgMjI2LCA0MSwgMywgMjEwLCAxMywgNDEsIDMsIDIxMCwgNjIsIDQxLCAzLCAyNDksIDExMywgNDEsIDMsIDIzNSwgNTIsIDQxLCAKKyAgICAzLCAyMjgsIDE1NiwgNDEsIDMsIDIxMCwgMjEyLCA0MSwgMywgMjMzLCAyMTgsIDQxLCAzLCAyMjksIDQxLCA0MSwgMywgCisgICAgMjQyLCAxMTQsIDQxLCAzLCAyMzAsIDEwMywgNDEsIDMsIDIyNywgMjM4LCA0MSwgMywgMjI3LCAxMjksIDQxLCAzLCA3NiwgCisgICAgNDEsIDMsIDIyNiwgMTk3LCA0MSwgMywgMjI5LCAxLCA0MSwgMywgMjQxLCA2OSwgNDEsIDMsIDI0MSwgNTcsIDQxLCAzLCAKKyAgICAyMTEsIDIyNywgNDEsIDMsIDIxMSwgMjE2LCA0MSwgMywgMjI1LCAxNywgNDEsIDMsIDI1MiwgMTEsIDQxLCAzLCAyNTEsIAorICAgIDIwNiwgNDEsIDMsIDIzMSwgMTA2LCA0MSwgMywgMjMzLCAyNDQsIDQxLCAzLCAyMzEsIDIsIDQxLCAzLCAyNDMsIDcwLCA0MSwgCisgICAgMywgMjQzLCA2OSwgNDEsIDMsIDI0NCwgNDQsIDQxLCAzLCAyMTMsIDEzOCwgNDEsIDMsIDExMSwgNDEsIDMsIDIxNiwgMTU3LCAKKyAgICA0MSwgMywgMjQ4LCA4LCA0MSwgMywgMjQ4LCAxMiwgNDEsIDMsIDIzMiwgMTU3LCA0MSwgMywgMjIyLCAyMTIsIDQxLCAzLCAKKyAgICAyNDcsIDE0NiwgNDEsIDMsIDIyOSwgMTI1LCA0MSwgMywgMjE5LCA1OSwgNDEsIDMsIDIyMCwgOCwgNDEsIDMsIDIxMCwgMjMsIAorICAgIDQxLCAzLCAyMTAsIDY3LCA0MSwgMywgMjQ5LCAyMzksIDQxLCAzLCAyMzUsIDY5LCA0MSwgMywgMjI4LCAxNjEsIDQxLCAzLCAKKyAgICAyMTAsIDI0NCwgNDEsIDMsIDIzNCwgMjksIDQxLCAzLCAyMjksIDQzLCA0MSwgMywgMjQyLCAxNzUsIDQxLCAzLCAyMzAsIAorICAgIDE2MiwgNDEsIDMsIDIyOCwgNzUsIDQxLCAzLCAyMjcsIDEzNSwgNDEsIDMsIDc1LCA0MSwgMywgMjQ1LCAxNTEsIDQxLCAzLCAKKyAgICAyMjksIDYyLCA0MSwgMywgMjQxLCAyMzksIDQxLCAzLCAyNDEsIDIxMCwgNDEsIDMsIDIxMiwgMjIsIDQxLCAzLCAyMTIsIAorICAgIDEyLCA0MSwgMywgMjI1LCAyMjIsIDQxLCAzLCAyNTIsIDE1LCA0MSwgMywgMjUyLCA3NiwgNDEsIDMsIDIzMSwgMTE4LCA0MSwgCisgICAgMywgMjMzLCAyNDksIDQxLCAzLCAyMzMsIDI0NywgNDEsIDMsIDIzMSwgOCwgNDEsIDMsIDI0MywgNzcsIDQxLCAzLCAyNDMsIAorICAgIDc1LCA0MSwgMywgMjQ0LCAxNTUsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgMjMsIDQxLCAzLCAyMTYsIDE5NiwgCisgICAgNDEsIDMsIDI0OCwgMTgsIDQxLCAzLCAyNDgsIDE1LCA0MSwgMywgMjMzLCA1OSwgNDEsIDMsIDIyMywgMTI5LCA0MSwgMywgCisgICAgMjQ4LCA5MSwgNDEsIDMsIDIyOSwgMTQxLCA0MSwgMywgMjIxLCAxODIsIDQxLCAzLCAyMjAsIDY0LCA0MSwgMywgMjEwLCAKKyAgICA5NCwgNDEsIDMsIDIxMCwgNzQsIDQxLCAzLCAyNTAsIDE5MSwgNDEsIDMsIDIzNSwgMTI3LCA0MSwgMywgMjI4LCAxNzksIAorICAgIDQxLCAzLCAyMTEsIDQ3LCA0MSwgMywgMjM0LCAxODMsIDQxLCAzLCAyMjksIDUzLCA0MSwgMywgMjI5LCA0OSwgNDEsIDMsIAorICAgIDI0MywgNjMsIDQxLCAzLCAyNDMsIDUyLCA0MSwgMywgMjMxLCA5MiwgNDEsIDMsIDIyOSwgMTA4LCA0MSwgMywgMjI3LCAKKyAgICAxNTcsIDQxLCAzLCAyMjksIDgwLCA0MSwgMywgMjMzLCAyMywgNDEsIDI0OSwgMjIwLCA0MSwgMjQzLCAyMzAsIDIxOCwgCisgICAgMTMwLCA0MSwgMjI0LCAxNCwgNzgsIDQxLCAzLCAyMjksIDEyNCwgMjQ0LCAxOTcsIDQxLCAzLCAyMjksIDEyNCwgMTc2LCAKKyAgICA0MSwgMywgMjI5LCAxMjQsIDIxOSwgNDEsIDQxLCAxNiwgMjQ0LCAxNDUsIDQxLCAxNiwgMjM0LCAxODEsIDQxLCAxNiwgCisgICAgMjE2LCA4MiwgNDEsIDE2LCAyMjgsIDIwOSwgNDEsIDE2LCAyNTIsIDE0OCwgNDEsIDE2LCAyNDQsIDE5NiwgNDEsIDE2LCAKKyAgICAyMTcsIDEwMiwgNDEsIDE2LCAyNDgsIDE3NywgNDEsIDE2LCAyNDcsIDEyNSwgNDEsIDE2LCAyMzMsIDIwNywgNDEsIDE2LCAKKyAgICAyMTYsIDIyLCA0MSwgMTYsIDI0NywgMTQ1LCA0MSwgMTYsIDIzNSwgNjEsIDQxLCAyMSwgMjEwLCA4NiwgNDEsIDIxLCAxMTAsIAorICAgIDQxLCAyMSwgMTA1LCA0MSwgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTg5LCA0MSwgMjEsIDE5NCwgNDEsIDIxLCAKKyAgICAxOTgsIDQxLCAyMSwgMTk1LCA0MSwgMjEsIDIwMCwgNDEsIDMsIDIyOSwgMTI0LCAxODUsIDQxLCAzLCAyMjksIDEyNCwgCisgICAgMjQ3LCAxNDYsIDMzLCA2LCAxLCAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIDEsIDI0NiwgMzUsIDMzLCA0LCAKKyAgICAxLCAyNDYsIDM1LCAzMywgNiwgMSwgMjIzLCA1MCwgMjQ2LCAzNywgMzMsIDQsIDEsIDIyMywgNTAsIDI0NiwgMzcsIDMzLCAKKyAgICA2LCAxLCAyMzUsIDE4NiwgMzMsIDQsIDEsIDIzNSwgMTg2LCAzMywgNiwgMSwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyNDcsIAorICAgIDE2MiwgMzMsIDYsIDEsIDIzMCwgMTQxLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQxLCAyMTQsIDIwNSwgMzMsIDYsIAorICAgIDEsIDI1MSwgMTM3LCAyMjYsIDIwMiwgMzMsIDQsIDEsIDI1MSwgMTM3LCAyMjYsIDIwMiwgMzMsIDYsIDEsIDIyOSwgODgsIAorICAgIDIxMSwgMzEsIDMzLCA0LCAxLCAyMjksIDg4LCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjUyLCAxODYsIDIxMSwgCisgICAgMzEsIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNTIsIDE4NiwgMjExLCAzMSwgMzMsIDYsIDEsIDIzNSwgMTg0LCAyMTEsIDU5LCAKKyAgICAzMywgNCwgMSwgMjM1LCAxODQsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDUwLCAyMTAsIDIxMiwgMzMsIDQsIDEsIDIyMywgCisgICAgNTAsIDIxMCwgMjEyLCAzMywgNiwgMSwgMjM1LCAxODQsIDYxLCAzMywgNCwgMSwgMjM1LCAxODQsIDYxLCAzMywgNiwgMSwgCisgICAgMjUwLCAxLCAyMzIsIDE5MywgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDEsIDIzMiwgMTkzLCAyMTAsIDE4MywgMzMsIDYsIAorICAgIDEsIDI1MSwgMjE1LCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjE1LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTg0LCAKKyAgICAyNTAsIDEsIDIzMiwgMTkzLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTg0LCAyNTAsIDEsIDIzMiwgMTkzLCAyMTAsIAorICAgIDE4MywgMzMsIDYsIDEsIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCA2LCAxLCAyMjMsIDUwLCAyMTUsIDE3OSwgCisgICAgMzMsIDQsIDEsIDIyMywgNTAsIDIxNSwgMTc5LCAzMywgNiwgMSwgMjE5LCA1MywgMjQ4LCA5MSwgMzMsIDQsIDEsIDIxOSwgCisgICAgNTMsIDI0OCwgOTEsIDMzLCA2LCAxLCAyMTksIDUzLCAyNDUsIDE3NSwgMzMsIDQsIDEsIDIxOSwgNTMsIDI0NSwgMTc1LCAKKyAgICAzMywgNiwgMSwgMjE5LCA1MywgMjQ1LCAxNjAsIDMzLCA0LCAxLCAyMTksIDUzLCAyNDUsIDE2MCwgMzMsIDYsIDEsIDIzMCwgCisgICAgMTQ1LCA3NiwgMzMsIDQsIDEsIDIzMCwgMTQ1LCA3NiwgMzMsIDYsIDEsIDI1MSwgMjQxLCA3NiwgMzMsIDQsIDEsIDI1MSwgCisgICAgMjQxLCA3NiwgMzMsIDYsIDEsIDUyLCAyMzAsIDE0NSwgNzYsIDMzLCA0LCAxLCA1MiwgMjMwLCAxNDUsIDc2LCAzMywgMSwgCisgICAgMjMwLCA4NywgNzYsIDM4LCAzMywgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDksIDIzMCwgMTkyLCA1MCwgMzgsIDMzLCAKKyAgICAyNDAsIDIxMiwgMjMwLCAxOTIsIDUwLCAzOCwgMzMsIDIxNiwgMTQ5LCAyMzAsIDE5MiwgNTAsIDIxOSwgOTQsIDI1MywgCisgICAgMjE3LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAyMzYsIDYxLCAzOCwgMzMsIDEsIDczLCAzOCwgMzMsIDEsIDIxMSwgOCwgMzgsIAorICAgIDMzLCAxLCA3MCwgMzgsIDMzLCAxLCAyNDIsIDQsIDUwLCAzOCwgMzMsIDEsIDIxMSwgMjcsIDM4LCAzMywgMSwgMjE5LCA1MywgCisgICAgNTAsIDM4LCAzMywgMSwgMjI2LCAyMDIsIDM4LCAzMywgMjM0LCAxOTMsIDM4LCAzMywgMjI1LCAyMjgsIDMzLCAyMzQsIAorICAgIDE5MywgMzMsIDIyNSwgMjI4LCAzMywgNiwgMSwgMjQ2LCA0NywgMzMsIDQsIDEsIDI0NiwgNDcsIDMzLCA2LCAxLCAyNDYsIAorICAgIDI4LCAzMywgNCwgMSwgMjQ2LCAyOCwgMzMsIDYsIDEsIDIxMCwgNTIsIDMzLCA0LCAxLCAyMTAsIDUyLCAzMywgNiwgMSwgCisgICAgMjUwLCAyMDcsIDMzLCA0LCAxLCAyNTAsIDIwNywgMzMsIDYsIDEsIDI0NiwgMjYsIDMzLCA0LCAxLCAyNDYsIDI2LCAzMywgCisgICAgNiwgMSwgMjE3LCAyNCwgMiwgMjMwLCAyMjUsIDEwMywgMzMsIDQsIDEsIDIxNywgMjQsIDIsIDIzMCwgMjI1LCAxMDMsIDMzLCAKKyAgICA2LCAxLCAyMTUsIDc4LCAzMywgNCwgMSwgMjE1LCA3OCwgMzMsIDYsIDEsIDIxNSwgMTYxLCAzMywgNCwgMSwgMjE1LCAxNjEsIAorICAgIDMzLCA2LCAxLCAyMTUsIDE2NSwgMzMsIDQsIDEsIDIxNSwgMTY1LCAzMywgNiwgMSwgMjE3LCAyOSwgMzMsIDQsIDEsIDIxNywgCisgICAgMjksIDMzLCA2LCAxLCAyNDAsIDE5OSwgMzMsIDQsIDEsIDI0MCwgMTk5LCAzMywgNiwgMSwgMjE5LCAyMDcsIDMzLCA0LCAxLCAKKyAgICAyMTksIDIwNywgMzgsIDMzLCAxLCAyMzUsIDE4NCwgNzUsIDIwLCAxLCA2MSwgMjAsIDEsIDE3NiwgMjAsIDEsIDcwLCAyMCwgCisgICAgMSwgMjMzLCAyMTgsIDIwLCAxLCAyNDUsIDIxMCwgMjAsIDEsIDIyMywgMTA5LCAyMCwgMSwgMjE3LCA4NywgMjAsIDEsIDc2LCAKKyAgICAyMCwgMSwgMjI3LCAxNDksIDIwLCAxLCA3MywgMjAsIDEsIDIzMywgMTM2LCAyMCwgMSwgMTkwLCAyMCwgMSwgMjIyLCAyNDAsIAorICAgIDIwLCAxLCAyMjMsIDMwLCAyMCwgMSwgMjMzLCA1MCwgMjAsIDEsIDIzMSwgODAsIDIwLCAxLCAyMTcsIDEwMiwgMjAsIDEsIAorICAgIDIyOSwgMTQ3LCAyMCwgMSwgMjI4LCAxODQsIDIwLCAxLCAxOTMsIDIwLCAxLCAyMTgsIDUsIDIwLCAxLCAyMzAsIDEwMywgCisgICAgMjAsIDEsIDIyMCwgMjgsIDIwLCAxLCAyMTksIDE5MiwgMjAsIDEsIDIyMCwgMzgsIDIwLCAxLCAyMjAsIDEyNCwgMjAsIDEsIAorICAgIDIzMywgMTU2LCAyMCwgMSwgMjM0LCAxNTcsIDIwLCAxLCAyMjcsIDIxMCwgMjAsIDEsIDIyNywgMjM4LCAyMCwgMSwgMjI4LCAKKyAgICAxNTUsIDIwLCAxLCAyMTAsIDIyNiwgMjAsIDEsIDIxOSwgMjI2LCAyMCwgMSwgMjEwLCAxODcsIDIwLCAxLCAxOTEsIDIwLCAKKyAgICAxLCAyMjgsIDEwLCAyMCwgMSwgMjM0LCAxNDMsIDIwLCAxLCAyMjUsIDE1MiwgMjAsIDEsIDIyOCwgMTc3LCAyMCwgMSwgCisgICAgMjI3LCAyNDcsIDIwLCAxLCAyMjQsIDE0NSwgMjAsIDEsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAyMTIsIDIwLCAxLCAyNDQsIAorICAgIDE0OCwgMjAsIDEsIDIyMiwgMTQxLCAyMCwgMSwgMjMyLCA5OSwgMjAsIDEsIDIzMCwgMjMxLCAyMCwgMSwgMjI4LCAyMzQsIAorICAgIDIwLCAxLCAyMjMsIDUyLCAyMCwgMSwgMjIzLCAxNzIsIDIwLCAxLCAyMzQsIDE2NiwgMjAsIDEsIDIyOSwgOCwgMjAsIDEsIAorICAgIDIyOSwgNTcsIDIwLCAxLCAyMjksIDc4LCAyMCwgMSwgMjIwLCA4LCAyMCwgMSwgMjI0LCAxNDgsIDIwLCAxLCAyNDMsIDIzNSwgCisgICAgMjAsIDEsIDI0NCwgMzgsIDIwLCAxLCAyMTIsIDY1LCAyMCwgMSwgMTk3LCAyMCwgMSwgMjMyLCAyNDIsIDIwLCAxLCAyMjUsIAorICAgIDEwOSwgMjAsIDEsIDIzMiwgMTIwLCAyMCwgMSwgMjM0LCAyOSwgMjAsIDEsIDIzMSwgMTE1LCAyMCwgMSwgMjIzLCA4NCwgCisgICAgMjAsIDEsIDIzMSwgNTksIDIwLCAxLCAxODUsIDIwLCAxLCAyMTYsIDExOCwgMjAsIDEsIDIzNCwgOTMsIDIwLCAxLCAyMzAsIAorICAgIDE2MiwgMjAsIDEsIDIzMSwgMTIzLCAyMCwgMSwgMjE2LCAyMzEsIDIwLCAxLCAyMzMsIDI1MiwgMjAsIDEsIDIxNiwgMjQ4LCAKKyAgICAyMCwgMSwgMjI3LCAyMzksIDIwLCAxLCAyMjEsIDI1MiwgMjAsIDEsIDI0NCwgMTkzLCAyMCwgMSwgMjMzLCAyNTQsIDIwLCAKKyAgICAxLCAyMzQsIDI1LCAyMCwgMzgsIDE2NCwgMjM0LCA2LCAyMCwgMzgsIDE2NCwgMjE1LCAxMTEsIDIwLCAyMjgsIDE4MywgMjAsIAorICAgIDI0MywgMjMwLCAyMTgsIDEzMCwgMjAsIDI0OSwgMjI3LCAyMCwgMjQ5LCAyMjAsIDIwLCAyMjAsIDE1MSwgMjAsIDIyNCwgCisgICAgMTQsIDc4LCA1OCwgMSwgMjUwLCA5NywgMTM4LCAyMTAsIDI1NCwgMjI1LCA2MiwgNTgsIDEsIDI1MCwgOTcsIDEzOCwgMjExLCAKKyAgICA3MCwgMjI1LCA2MiwgNTgsIDEsIDI1MCwgOTcsIDEzOCwgMjEwLCAyNTQsIDIyMCwgODUsIDU4LCAxLCAyNTAsIDk3LCAxMzgsIAorICAgIDIxMSwgNzAsIDIyMCwgODUsIDU4LCAxLCAyNTAsIDk3LCAxMzgsIDIxMCwgMjU0LCAyMjQsIDMxLCA1OCwgMSwgMjUwLCA5NywgCisgICAgMTM4LCAyMTEsIDcwLCAyMjQsIDMxLCA1OCwgMSwgMjUwLCA5NywgMTM4LCAyMTAsIDI1NCwgMjIyLCAxNDEsIDU4LCAxLCAKKyAgICAyNTAsIDk3LCAxMzgsIDIxMSwgNzAsIDIyMiwgMTQxLCA1OCwgMSwgMjQ1LCAyMSwgMjQ2LCAxMTksIDEzOCwgMTMwLCA1OCwgCisgICAgMSwgMTI1LCAyNDYsIDExOSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIyNiwgMjQ2LCAxMTksIDEzOCwgMTMwLCA1OCwgMSwgCisgICAgMTIxLCAyNDYsIDExOSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDIwLCAyNDYsIDExOSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIAorICAgIDIxLCAyNDYsIDExOSwgMjMzLCA0MCwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgMTE5LCAyMzMsIDQwLCAxMzgsIDEzMCwgCisgICAgNTgsIDEsIDIzMCwgMjI2LCAyNDYsIDExOSwgMjMzLCA0MCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTE5LCAyMzMsIAorICAgIDQwLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE5LCAyMzMsIDQwLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgCisgICAgMjEsIDIzMywgNDAsIDEzOCwgMTMwLCA1OCwgMSwgMTI1LCAyMzMsIDQwLCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI2LCAKKyAgICAyMzMsIDQwLCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjMzLCA0MCwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDIwLCAyMzMsIAorICAgIDQwLCAxMzgsIDEzMCwgNTgsIDEsIDU5LCA2NywgMTMwLCA1OCwgMSwgNTksIDIxOSwgOTYsIDU4LCAxLCA1OSwgMjAzLCAKKyAgICAxMzAsIDU4LCAxLCAyMzIsIDEwOSwgNDQsIDI0OSwgMTYyLCAyNTQsIDExMCwgNTgsIDEsIDIyMywgMTU4LCAxMjAsIDc0LCAKKyAgICA1OCwgMSwgMjIzLCAxNTgsIDEyNCwgNzQsIDU4LCAxLCAyMjMsIDE1OCwgMjQ1LCAzMiwgNzgsIDU4LCAxLCAyMjMsIDE1OCwgCisgICAgMjM1LCAxOTQsIDI0NSwgMzIsIDc4LCA1OCwgMSwgMTIxLCAyMzUsIDE5NCwgMjQ1LCAzMiwgNzgsIDU4LCAxLCAyMTgsIAorICAgIDExMiwgMjIsIDEyNSwgMjE2LCAzMSwgNTgsIDEsIDIxOCwgMTEyLCAyMiwgMTIxLCAyMTYsIDMxLCA3LCA2LCAxLCAyNDUsIAorICAgIDIwMCwgMjU0LCAxNzEsIDcsIDQsIDEsIDI0NSwgMjAwLCAyNTQsIDE3MSwgNywgNiwgMSwgMjQ1LCAyMDAsIDI1NCwgMTk3LCAKKyAgICA3LCA0LCAxLCAyNDUsIDIwMCwgMjU0LCAxOTcsIDcsIDYsIDEsIDI0MSwgMjA4LCA3LCA0LCAxLCAyNDEsIDIwOCwgNywgNiwgCisgICAgMSwgMjE1LCA0MCwgNywgNCwgMSwgMjE1LCA0MCwgNywgNiwgMSwgMjE1LCAyMzAsIDcsIDQsIDEsIDIxNSwgMjMwLCA3LCA2LCAKKyAgICAxLCAyNDksIDExMSwgNywgNCwgMSwgMjQ5LCAxMTEsIDcsIDYsIDEsIDI0OSwgMTEyLCAyLCAyNDksIDIyMCwgNywgNCwgMSwgCisgICAgMjQ5LCAxMTIsIDIsIDI0OSwgMjIwLCA3LCAxLCA0LCA2LCAyNDUsIDcsIDcsIDEsIDQsIDYsIDIyMiwgOTIsIDcsIDYsIDEsIAorICAgIDI1NSwgNzQsIDcsIDQsIDEsIDI1NSwgNzQsIDcsIDYsIDEsIDI1NCwgNzQsIDcsIDQsIDEsIDI1NCwgNzQsIDcsIDYsIDEsIAorICAgIDI1MywgMTkzLCA3LCA0LCAxLCAyNTMsIDE5MywgNywgNiwgMSwgMjUzLCAxNzcsIDcsIDQsIDEsIDI1MywgMTc3LCA3LCA2LCAKKyAgICAxLCAyNTMsIDE3OCwgMiwgMjAzLCAxMzAsIDcsIDQsIDEsIDI1MywgMTc4LCAyLCAyMDMsIDEzMCwgNywgNiwgMSwgMjUzLCAKKyAgICAxNjgsIDcsIDQsIDEsIDI1MywgMTY4LCA3LCA2LCAxLCAyMjMsIDUwLCAyNTEsIDY4LCAyLCAyNDcsIDEyMSwgNywgNCwgMSwgCisgICAgMjIzLCA1MCwgMjUxLCA2OCwgMiwgMjQ3LCAxMjEsIDcsIDYsIDEsIDIzNSwgMjUsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDI1LCAKKyAgICAyLCA5MSwgNywgNiwgMSwgMjM1LCAyNSwgMiwgMjQ4LCAwLCA5MSwgNywgNCwgMSwgMjM1LCAyNSwgMiwgMjQ4LCAwLCA5MSwgCisgICAgNywgNiwgMSwgMjM1LCAyNSwgMiwgMjE4LCAxMDQsIDIyLCAyNDgsIDAsIDkxLCA3LCA0LCAxLCAyMzUsIDI1LCAyLCAyMTgsIAorICAgIDEwNCwgMjIsIDI0OCwgMCwgOTEsIDcsIDYsIDEsIDI1MSwgMTM2LCAxNTYsIDcsIDQsIDEsIDI1MSwgMTM2LCAxNTYsIDcsIAorICAgIDYsIDEsIDIzMywgMTUwLCAyLCAxMjUsIDkxLCA3LCA0LCAxLCAyMzMsIDE1MCwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAxOTksIDIxOCwgMTA0LCAyMjYsIDEyMSwgNywgNCwgMSwgMTQ0LCAyLCAxOTksIDIxOCwgMTA0LCAyMjYsIDEyMSwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAyMzIsIDEyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMzIsIDEyNCwgNywgNiwgMSwgMjI2LCAxODQsIDcsIAorICAgIDQsIDEsIDIyNiwgMTg0LCA3LCA2LCAxLCAyMjYsIDEwNywgMiwgMjE4LCAxMDQsIDIxNiwgMTQwLCAyNDgsIDQwLCA3LCA0LCAKKyAgICAxLCAyMjYsIDEwNywgMiwgMjE4LCAxMDQsIDIxNiwgMTQwLCAyNDgsIDQwLCA3LCA2LCAxLCAyMjYsIDEwNywgMiwgMjQ0LCAKKyAgICA1NCwgNywgNCwgMSwgMjI2LCAxMDcsIDIsIDI0NCwgNTQsIDcsIDYsIDEsIDIyNiwgMTA3LCAyLCAyMTgsIDIzMCwgMjE3LCAKKyAgICA3OCwgNywgNCwgMSwgMjI2LCAxMDcsIDIsIDIxOCwgMjMwLCAyMTcsIDc4LCA3LCA2LCAxLCAyMjQsIDk4LCAyLCAyMTgsIAorICAgIDEwNCwgMjE2LCAxNDAsIDI0OCwgNDAsIDcsIDQsIDEsIDIyNCwgOTgsIDIsIDIxOCwgMTA0LCAyMTYsIDE0MCwgMjQ4LCA0MCwgCisgICAgNywgNiwgMSwgMjI0LCA5OCwgMiwgMjQ4LCAwLCA5MSwgNywgNCwgMSwgMjI0LCA5OCwgMiwgMjQ4LCAwLCA5MSwgNywgNiwgCisgICAgMSwgMjIzLCAyMjUsIDIyMiwgMTg3LCA3LCA0LCAxLCAyMjMsIDIyNSwgMjIyLCAxODcsIDcsIDYsIDEsIDIyMiwgMTMxLCAKKyAgICAyMjIsIDE4NywgNywgNCwgMSwgMjIyLCAxMzEsIDIyMiwgMTg3LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMjQ4LCAwLCA5MSwgCisgICAgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0OCwgMCwgOTEsIDcsIDYsIDEsIDIxMiwgMTA2LCA3LCA0LCAxLCAyMTIsIDEwNiwgCisgICAgNywgNiwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA0LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDYsIDEsIDIxNiwgCisgICAgMTUzLCAyLCA5MSwgNywgNCwgMSwgMjE2LCAxNTMsIDIsIDkxLCA3LCA2LCAxLCAyMTYsIDE1MywgMiwgMjE4LCAxMDQsIAorICAgIDIxNiwgMTQwLCAyNDgsIDQwLCA3LCA0LCAxLCAyMTYsIDE1MywgMiwgMjE4LCAxMDQsIDIxNiwgMTQwLCAyNDgsIDQwLCA3LCAKKyAgICA2LCAxLCAyMTMsIDI0NSwgNywgNCwgMSwgMjEzLCAyNDUsIDcsIDYsIDEsIDI0NSwgNjYsIDcsIDQsIDEsIDI0NSwgNjYsIDcsIAorICAgIDYsIDEsIDIzNSwgMTcyLCA3LCA0LCAxLCAyMzUsIDE3MiwgNywgNiwgMSwgMjQ5LCAyMDgsIDcsIDQsIDEsIDI0OSwgMjA4LCAKKyAgICA1OCwgMSwgMjE0LCAxMzMsIDcsIDQsIDEsIDI0NiwgNzAsIDcsIDQsIDEsIDIzMiwgODUsIDcsIDQsIDEsIDIzMCwgODEsIDcsIAorICAgIDQsIDEsIDIyNywgMjAyLCA3LCA0LCAxLCAyMjIsIDEzMCwgNywgMSwgNCwgNiwgMjIyLCAxMzAsIDcsIDQsIDEsIDIxNSwgCisgICAgMTA5LCA3LCA0LCAxLCAyMTQsIDE5NywgNywgNiwgMSwgMjM1LCAyMTQsIDI0OSwgNjEsIDcsIDQsIDEsIDIzNSwgMjE0LCAKKyAgICAyNDksIDYxLCA3LCA2LCAxLCAyMzUsIDIxNCwgMjQ1LCA3LCA3LCA0LCAxLCAyMzUsIDIxNCwgMjQ1LCA3LCA3LCA2LCAxLCAKKyAgICAyMzUsIDIxNCwgMjQzLCAyMDMsIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjE0LCAyNDMsIDIwMywgNywgNCwgMSwgMjE1LCAKKyAgICA5NCwgMjM1LCAyMTQsIDI0MywgMjAzLCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIDE1NiwgNywgCisgICAgNiwgMSwgMjM1LCAyMTQsIDE1MywgNywgNCwgMSwgMjM1LCAyMTQsIDE1MywgNywgNiwgMSwgMjM1LCAyMTQsIDIyMiwgOTIsIAorICAgIDcsIDQsIDEsIDIzNSwgMjE0LCAyMjIsIDkyLCA3LCA2LCAxLCAyMzUsIDIxNCwgMjE3LCAxNTMsIDcsIDQsIDEsIDIzNSwgCisgICAgMjE0LCAyMTcsIDE1MywgNTgsIDEsIDEyMSwgMjUwLCAzMiwgMjU1LCAxNSwgNTgsIDEsIDI0OSwgMjI3LCA1OCwgMSwgMjE5LCAKKyAgICAyNTIsIDI0NSwgOTksIDUwLCA3LCA2LCAxLCAyMjIsIDAsIDcsIDQsIDEsIDIyMiwgMCwgNywgNiwgMSwgMjE1LCA5NCwgCisgICAgMjQyLCA2MSwgNywgNCwgMSwgMjMzLCAxNTAsIDIsIDIyMywgNTYsIDI0MSwgNTMsIDIyLCAyNTIsIDQyLCA3LCA2LCAxLCAKKyAgICAyMzAsIDI3LCAyLCAyNDgsIDQwLCA3LCA0LCAxLCAyMzAsIDI3LCAyLCAyNDgsIDQwLCA3LCA2LCAxLCAyNTEsIDY4LCAyLCAKKyAgICAxMzAsIDcsIDQsIDEsIDI1MSwgNjgsIDIsIDEzMCwgNywgNiwgMSwgMjQzLCAyMDQsIDIsIDIyNiwgMjQ5LCA5MSwgNywgNCwgCisgICAgMSwgMjQzLCAyMDQsIDIsIDIyNiwgMjQ5LCA5MSwgNywgNiwgMSwgMjM1LCAyNSwgMiwgMjI2LCAyNDksIDkxLCA3LCA0LCAxLCAKKyAgICAyMzUsIDI1LCAyLCAyMjYsIDI0OSwgOTEsIDcsIDYsIDEsIDIzMCwgMjcsIDIsIDIyNiwgMjQ5LCA5MSwgNywgNCwgMSwgCisgICAgMjMwLCAyNywgMiwgMjI2LCAyNDksIDkxLCA3LCA2LCAxLCAyMjMsIDIyNSwgMiwgMjI2LCAyNDksIDkxLCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNSwgMiwgMjI2LCAyNDksIDkxLCA3LCA2LCAxLCAyMjIsIDkzLCAyLCAyMjYsIDI0OSwgOTEsIDcsIDQsIDEsIAorICAgIDIyMiwgOTMsIDIsIDIyNiwgMjQ5LCA5MSwgNywgNiwgMSwgMjQyLCA2MiwgMiwgMTAzLCA1OCwgMSwgNiwgMjQyLCA2MiwgMiwgCisgICAgOTEsIDU4LCAxLCA0LCAyNywgMjI2LCAyMzUsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDE5MywgNywgMjQ1LCAxMDQsIDEsIAorICAgIDIyMywgNTAsIDI0NSwgNywgNywgMjQ1LCAxMDQsIDEsIDIyMywgNTAsIDIyNiwgMTA2LCA3LCAyNDUsIDEwNCwgMSwgMjM1LCAKKyAgICAxOTQsIDE5MywgNywgMjQ1LCAxMDQsIDEsIDI0MCwgMTU1LCAyMzIsIDEzMCwgNywgMjQ1LCAxMDQsIDEsIDI1NCwgMjQsIAorICAgIDE5MywgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCA2MSwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCA3MywgMjE3LCAyMzEsIDIyOSwgCisgICAgMjE1LCA1LCAyNDYsIDQ5LCAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDcwLCAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDc1LCAKKyAgICAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDc2LCAyMTcsIDIzMSwgMjI5LCAyMTUsIDUsIDI0MSwgMjU0LCAyMTcsIDIzMSwgCisgICAgMjI5LCAyMTUsIDEsIDIzNCwgMjksIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjM0LCAxMDYsIDIxNywgMjMxLCAyMjksIAorICAgIDIxNSwgMSwgMjQyLCAxNzUsIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjQyLCAyMjUsIDIxNywgMjMxLCAyMjksIDIxNSwgNSwgCisgICAgMjU0LCA3NiwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAyNDksIDIzOSwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAyNTAsIDg3LCAKKyAgICAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDIzNSwgNjksIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjM1LCAxMTAsIDIxNywgCisgICAgMjMxLCAyMjksIDIxNSwgMSwgMjE1LCAxMzQsIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjE1LCAxNDAsIDIxNywgMjMxLCAKKyAgICAyMjksIDIxNSwgMSwgMjQ4LCAxMDYsIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjQ4LCAxMTUsIDIxNywgMjMxLCAyMjksIAorICAgIDIxNSwgMSwgMTExLCAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDIxNiwgMTU3LCAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDI0NywgCisgICAgMTQ2LCAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDI0OCwgOCwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAyMjgsIDc1LCAyMTcsIAorICAgIDIzMSwgMjI5LCAyMTUsIDEsIDIyNSwgMTcsIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjI1LCAxMjIsIDIxNywgMjMxLCAKKyAgICAyMjksIDIxNSwgMSwgMjUxLCAyMDYsIDIxNywgMjMxLCAyMjksIDIxNSwgMSwgMjUyLCAxMSwgMjE3LCAyMzEsIDIyOSwgCisgICAgMjE1LCAxLCAyMzAsIDE2MiwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAyMjIsIDIxMiwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAKKyAgICAyMzIsIDE1NywgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAyMjIsIDE2NiwgMjE3LCAyMzEsIDIyOSwgMjE1LCAxLCAyMTksIAorICAgIDU5LCAyMTcsIDIzMSwgMjI5LCAyMTUsIDEsIDI0MSwgNjksIDIxNywgMjMxLCAyMjksIDIxNSwgMjUsIDUsIDYxLCAyMTcsIAorICAgIDIzMSwgMjI5LCAyMTUsIDI1LCA1LCA3MywgMjE3LCAyMzEsIDIyOSwgMjE1LCAyNSwgNSwgNzAsIDIxNywgMjMxLCAyMjksIAorICAgIDIxNSwgMjUsIDUsIDc1LCAyMTcsIDIzMSwgMjI5LCAyMTUsIDI1LCA1LCAyMjYsIDE4NCwgMjE3LCAyMzEsIDIyOSwgMjE1LCAKKyAgICAyMjUsIDEzLCAyMzEsIDE1OSwgMjE3LCAyMzEsIDIyOSwgMjE1LCAyMjUsIDEzLCAyMzEsIDE1OCwgMjE3LCAyMzEsIDIyOSwgCisgICAgMjE1LCAyMjUsIDEzLCAyMzEsIDE1NywgMjE3LCAyMzEsIDIyOSwgMjE1LCAyMjUsIDEzLCAyMzEsIDE1NiwgMjI4LCA1NywgCisgICAgMjM1LCAyNDEsIDI0NCwgMywgMTIzLCAyMjQsIDIyLCAyMjgsIDU3LCAyMzUsIDI0MSwgMjQ0LCAzLCAxMjMsIDI0MiwgMjgsIAorICAgIDIyOCwgNTcsIDIzNSwgMjQxLCAyNDQsIDMsIDEzNCwgMjI0LCAyMCwgMjI4LCA1NywgMjM1LCAyNDEsIDI0NCwgMywgMTIzLCAKKyAgICAyMTksIDExOCwgMjI4LCA1NywgMjM1LCAyNDEsIDI0NCwgMywgMTIzLCAyNDUsIDE4OSwgMjI4LCA1NywgMjM1LCAyNDEsIAorICAgIDI0NCwgMywgMTM0LCAyMTksIDExNywgMjI4LCA1NywgMjM1LCAyNDEsIDIyNCwgMjMsIDc4LCAyMjgsIDU3LCAyMzUsIDI0MSwgCisgICAgMjI1LCA0MSwgNzgsIDIyOCwgNTcsIDIzNSwgMjQxLCAyMjIsIDExOSwgNzgsIDIyOCwgNTcsIDIzNSwgMjQxLCAyMjQsIDI0LCAKKyAgICA3OCwgMjI1LCAxNDUsIDEsIDE3NiwgMjI1LCAxNDUsIDEsIDIzNCwgMTMzLCAyMjUsIDE0NSwgMSwgMjQzLCAxMzYsIDIyNSwgCisgICAgMTQ1LCAxLCAyMjksIDc4LCAyMjUsIDE0NSwgMSwgMjUxLCAzNCwgMjI1LCAxNDUsIDEsIDI1MCwgMTU4LCAyMjUsIDE0NSwgCisgICAgMSwgMjM1LCAxNDIsIDIyNSwgMTQ1LCAxLCAyMjcsIDE2NiwgMjI1LCAxNDUsIDEsIDIxNywgMTA2LCAyMjUsIDE0NSwgMSwgCisgICAgMjE2LCAyMDksIDIyNSwgMTQ1LCAxLCAyNDgsIDIyMiwgMjI1LCAxNDUsIDEsIDE5NywgMjI1LCAxNDUsIDEsIDE5MCwgMjI1LCAKKyAgICAxNDUsIDEsIDIyNSwgMTQ4LCAyMjUsIDE0NSwgMSwgMjUyLCAxOTIsIDIyNSwgMTQ1LCAxLCAxODUsIDIyNSwgMTQ1LCAxLCAKKyAgICAyMTUsIDE4NCwgMjI1LCAxNDUsIDEsIDIxNSwgMTc2LCAyMjUsIDE0NSwgMSwgMjQ2LCAzOSwgMjI1LCAxNDUsIDEsIDIxMiwgCisgICAgNjUsIDIyNSwgMTQ1LCAxLCAyMTAsIDgyLCAyMjUsIDE0NSwgMSwgMjEwLCAxMTYsIDIyNSwgMTQ1LCAxLCA0LCA2MSwgMjI1LCAKKyAgICAxNDUsIDEsIDE5MSwgMjI1LCAxNDUsIDEsIDIwNSwgMjI1LCAxNDUsIDEsIDIzMywgMTM2LCAyMjUsIDE0NSwgMSwgMjIwLCAKKyAgICAxMDMsIDIyNSwgMTQ1LCAxLCAyMDYsIDIyNSwgMTQ1LCAxLCAxNjIsIDIyNSwgMTQ1LCAxLCA2MSwgMjI1LCAxNDUsIDEsIAorICAgIDczLCAyMjUsIDE0NSwgMSwgNzAsIDIyNSwgMTQ1LCAxLCA3NSwgMjI1LCAxNDUsIDEsIDc2LCAyMjUsIDE0NSwgMSwgMjI0LCAKKyAgICA4OSwgMjI1LCAxNDUsIDEsIDIxMSwgMTY1LCAyMjUsIDE0NSwgMSwgMjQ0LCAxOTcsIDIyNSwgMTQ1LCAxLCAyNDMsIDMwLCAKKyAgICAyMjUsIDE0NSwgMSwgMjQ1LCAyMTAsIDIyNSwgMTQ1LCAyMTgsIDc0LCAxLCAyMTIsIDY1LCAyMjUsIDE0NSwgMjE4LCA3NCwgCisgICAgMSwgMTkxLCAyMjUsIDE0NSwgMSwgMjE1LCAxNTcsIDIyNSwgMTQ1LCAxLCAyMTUsIDE0NSwgMjI1LCAxNDUsIDEsIDI0OCwgCisgICAgMTM2LCAyMjUsIDE0NSwgMSwgMjI4LCAxMTEsIDIyNSwgMTQ1LCAxLCAyNTQsIDE0MiwgMTkxLCAyMjUsIDE0NSwgMSwgMjEzLCAKKyAgICAxMzQsIDIyMCwgMTAzLCAyMjUsIDE0NSwgMSwgMjEzLCAxMzUsIDE2MiwgMjI1LCAxNDUsIDEsIDI1MywgMjI0LCAyNDQsIAorICAgIDE5NywgMjI1LCAxNDUsIDIxOCwgNzQsIDEsIDIwNSwgMjI1LCAxNDUsIDIxOCwgMjYsIDEsIDIwNSwgMjI1LCAxNDUsIDEsIAorICAgIDI1MSwgMCwgMjI1LCAxNDUsIDIxOSwgMTU2LCAyNDEsIDIzNywgNzgsIDIyNSwgMTQ1LCA1MiwgMjQxLCAyMzcsIDc4LCAKKyAgICAyMjUsIDE0NSwgMTY0LCAyMjAsIDk2LCAyMjUsIDE0NSwgMTY0LCA1MiwgMjIwLCA5NiwgMTc5LCA1LCAyNTQsIDc2LCAxNzksIAorICAgIDUsIDIxMywgMTQ3LCAxNzksIDEsIDYxLCAxNzksIDEsIDI1NSwgNzQsIDE3OSwgMSwgNzMsIDE3OSwgMSwgMjM2LCAzNCwgCisgICAgMTc5LCAxLCA3MCwgMTc5LCAxLCAyMTQsIDExOCwgMTc5LCAxLCAxNDksIDE1MywgMTc5LCAxLCAxNDksIDIyMiwgMTgxLCAKKyAgICAxNzksIDEsIDE0OSwgMTU2LCAxNzksIDEsIDE0OSwgMjMyLCAxODYsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjQ1LCAyMTAsIAorICAgIDE3OSwgMSwgMjU0LCAyMDIsIDE3OSwgMSwgNzYsIDE3OSwgMSwgMjI2LCAxODQsIDE3OSwgMSwgMjUzLCAxOTMsIDE3OSwgMSwgCisgICAgMTc2LCAxNzksIDEsIDIzNCwgMTMzLCAxNzksIDEsIDI0MywgMTM2LCAxNzksIDEsIDI0MiwgMjUwLCAxNzksIDEsIDIyOSwgCisgICAgNzgsIDE3OSwgMSwgMjUxLCAzNCwgMTc5LCAxLCAyNTAsIDE1OCwgMTc5LCAxLCAyMzUsIDE0MiwgMTc5LCAxLCAyMzUsIAorICAgIDExNSwgMTc5LCAxLCAyMjcsIDE2NiwgMTc5LCAxLCAyMTUsIDE1NywgMTc5LCAxLCAyMTUsIDE0NSwgMTc5LCAxLCAyNDgsIAorICAgIDEzNiwgMTc5LCAxLCAyNDgsIDEyMCwgMTc5LCAxLCAyMjgsIDExMSwgMTc5LCAxLCAyMTcsIDEwNiwgMTc5LCAxLCAyMTYsIAorICAgIDIwOSwgMTc5LCAxLCAyNDgsIDIyMiwgMTc5LCAxLCAyNDgsIDI2LCAxNzksIDEsIDE5NywgMTc5LCAxLCAxOTAsIDE3OSwgMSwgCisgICAgMjI1LCAxNDgsIDE3OSwgMSwgMjUyLCAxOTIsIDE3OSwgMSwgMjUyLCAxOSwgMTc5LCAxLCAxODUsIDE3OSwgMSwgMTkxLCAKKyAgICAxNzksIDEsIDIwNSwgMTc5LCAxLCAyMzMsIDEzNiwgMTc5LCAxLCAyMTQsIDI3LCAxNzksIDEsIDIyMCwgMTAzLCAxNzksIDEsIAorICAgIDIxOCwgMjI0LCAxNzksIDEsIDIwNiwgMTc5LCAxLCAxNjIsIDE3OSwgMSwgMjMyLCAxODUsIDE3OSwgMTE2LCA1LCAyNDIsIAorICAgIDQ1LCAxNzksIDI1LCA1LCAyNTUsIDc0LCAxNzksIDI1LCA1LCA3MywgMTc5LCAyNSwgNSwgMjM2LCAzNCwgMTc5LCAyNSwgNSwgCiAgICAgNzAsIDE3OSwgMjUsIDUsIDIxNCwgMTE4LCAxNzksIDI1LCA1LCAxNDksIDE1MywgMTc5LCAyNSwgNSwgMTQ5LCAyMjIsIAotICAgIDE4MCwgMTc5LCAyNSwgNSwgMTQ5LCAxNTYsIDE3OSwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3OSwgMjUsIDUsIDc1LCAKLSAgICAxNzksIDI1LCA1LCAyNDUsIDIwOSwgMTc5LCAyNSwgNSwgMjU0LCAyMDEsIDE3OSwgMjUsIDUsIDc2LCAxNzksIDI1LCA1LCAKLSAgICAyMjYsIDE4MywgMTc5LCAyNSwgNSwgMjUzLCAxOTIsIDE3OSwgNSwgMjEzLCAxNTIsIDE3OSwgMjQ4LCAxNzgsIDE3OSwgNTIsIAotICAgIDI0OCwgMTc4LCAxNzksIDIxLCAyMTAsIDg2LCAxNzksIDIxLCAxMTAsIDE3OSwgMjEsIDEwNSwgMTc5LCAyMSwgMTU4LCAKKyAgICAxODEsIDE3OSwgMjUsIDUsIDE0OSwgMTU2LCAxNzksIDI1LCA1LCAxNDksIDIzMiwgMTg2LCAxNzksIDI1LCA1LCA3NSwgCisgICAgMTc5LCAyNSwgNSwgMjQ1LCAyMTAsIDE3OSwgMjUsIDUsIDI1NCwgMjAyLCAxNzksIDI1LCA1LCA3NiwgMTc5LCAyNSwgNSwgCisgICAgMjI2LCAxODQsIDE3OSwgMjUsIDUsIDI1MywgMTkzLCAxNzksIDUsIDIxMywgMTUyLCAxNzksIDI0OCwgMTc5LCAxNzksIDUyLCAKKyAgICAyNDgsIDE3OSwgMTc5LCAyMSwgMjEwLCA4NiwgMTc5LCAyMSwgMTEwLCAxNzksIDIxLCAxMDUsIDE3OSwgMjEsIDE1OCwgCiAgICAgMTc5LCAyMSwgMTYxLCAxNzksIDIxLCAxODksIDE3OSwgMjEsIDE5NCwgMTc5LCAyMSwgMTk4LCAxNzksIDIxLCAxOTUsIAogICAgIDE3OSwgMjEsIDIwMCwgMzgsIDg0LCAyMSwgMjEwLCA4NiwgMzgsIDg0LCAyMSwgMTEwLCAzOCwgODQsIDIxLCAxMDUsIDM4LCAKICAgICA4NCwgMjEsIDE1OCwgMzgsIDg0LCAyMSwgMTYxLCAzOCwgODQsIDIxLCAxODksIDM4LCA4NCwgMjEsIDE5NCwgMzgsIDg0LCAKICAgICAyMSwgMTk4LCAzOCwgODQsIDIxLCAxOTUsIDM4LCA4NCwgMjEsIDIwMCwgMzgsIDg0LCAxLCA2MSwgMzgsIDg0LCAxLCA3MCwgCiAgICAgMzgsIDg0LCAxLCAxNzYsIDM4LCA4NCwgMSwgMTk3LCAzOCwgODQsIDEsIDE5MCwgMzgsIDg0LCAxLCAyMDUsIDM4LCA4NCwgCi0gICAgMSwgMjEzLCAxNzYsIDM4LCA4NCwgNSwgMjUzLCAxNzUsIDg0LCA1LCAyMTksIDE3LCAyNTAsIDI1NSwgODQsIDUsIDI1MSwgCi0gICAgMCwgMjEzLCAxNTIsIDg0LCA1LCA1MiwgMjUxLCAwLCAyMTMsIDE1MiwgODQsIDUsIDI1MSwgMCwgMTA1LCA4NCwgNSwgMjUxLCAKLSAgICAwLCAxNTgsIDg0LCA1LCAyNTEsIDAsIDI1MywgMTc1LCA4NCwgNSwgMjI0LCAxMjQsIDg0LCAyNDMsIDEwMCwgMjQ0LCAxMDMsIAotICAgIDg0LCAyNTAsIDIzOCwgODQsIDI0MSwgMjMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAyMTAsIDg2LCAyMzQsIDE4OCwgCi0gICAgMjMyLCAyNDIsIDIxLCAxMTAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDEwNSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgCi0gICAgMTU4LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxNjEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE4OSwgMjM0LCAxODgsIAotICAgIDIzMiwgMjQyLCAyMSwgMTk0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxOTgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIAotICAgIDE5NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMjAwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE3NiwgMjM0LCAxODgsIAotICAgIDIzMiwgMjQyLCAxLCAyMzQsIDEzMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNDMsIDEzNSwgMjM0LCAxODgsIDIzMiwgCi0gICAgMjQyLCAxLCAyMjksIDc3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIwNiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjAsIAotICAgIDEwMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTAsIDExNiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjcsIDE2NSwgCi0gICAgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTcsIDEwNSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNDAsIDIyNiwgMjM0LCAKLSAgICAxODgsIDIzMiwgMjQyLCAxLCAxOTcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTkwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAotICAgIDIyNSwgMTQ3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE4NCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNDgsIDIyMSwgCi0gICAgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNTIsIDE5MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMDUsIDIzNCwgMTg4LCAKLSAgICAyMzIsIDI0MiwgMSwgMTkxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIzMywgMTM1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAotICAgIDIxMiwgNjUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE2LCAyMDgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTYyLCAKLSAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNCwgMjcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjUxLCAzMywgMjM0LCAxODgsIAotICAgIDIzMiwgMjQyLCAxLCA2MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjYsIDIzNCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAKLSAgICA3MywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMjYsIDE4MywgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgMjE0LCAyMTQsIAotICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDc1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCA3MCwgMjM0LCAxODgsIDIzMiwgCi0gICAgMjQyLCAyNSwgMjQ1LCAyMDksIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDc2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgCi0gICAgMjI1LCAzMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIDI1MSwgMTIsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAyNTEsIAotICAgIDEzLCAyMjUsIDMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDUsIDI0OSwgNzcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgNSwgMjE5LCAKLSAgICAxOTksIDIyMywgOTMsIDEsIDE3NiwgMjIzLCA5MywgMSwgMjQzLCAxMzUsIDIyMywgOTMsIDEsIDIyOSwgNzcsIDIyMywgOTMsIAotICAgIDEsIDIxNywgMTA1LCAyMjMsIDkzLCAxLCAyNDgsIDIyMSwgMjIzLCA5MywgMSwgMTk3LCAyMjMsIDkzLCAxLCAxOTAsIDIyMywgCi0gICAgOTMsIDEsIDI1MiwgMTkxLCAyMjMsIDkzLCAxLCAxODQsIDIyMywgOTMsIDEsIDI1MSwgMzMsIDIyMywgOTMsIDEsIDIzNSwgCi0gICAgMTQxLCAyMjMsIDkzLCAxLCAyMjcsIDE2NSwgMjIzLCA5MywgMSwgMjA2LCAyMjMsIDkzLCAxLCAyMDUsIDIyMywgOTMsIDEsIAotICAgIDIzMywgMTM1LCAyMjMsIDkzLCAxLCAxOTEsIDIyMywgOTMsIDEsIDIxMiwgNjUsIDIyMywgOTMsIDEsIDE2MiwgMjIzLCA5MywgCi0gICAgMSwgMjMxLCAxMjQsIDIyMywgOTMsIDEsIDIyOSwgNTYsIDIyMywgOTMsIDEsIDIyOSwgMTQ4LCAyMjMsIDkzLCAxLCAyMjcsIAotICAgIDEzNSwgMjIzLCA5MywgMSwgNjEsIDIyMywgOTMsIDI1LCA1LCA3MywgMjIzLCA5MywgMjUsIDUsIDcwLCAyMjMsIDkzLCAyNSwgCi0gICAgNSwgNzUsIDIyMywgOTMsIDI1LCA1LCAyNTQsIDIwMSwgMjIzLCA5MywgMjUsIDUsIDc2LCAyMjMsIDkzLCAyNSwgNSwgMjUzLCAKLSAgICAxOTIsIDIyMywgOTMsIDI1LCA1LCAyNDUsIDU1LCAyMjMsIDkzLCAyNSwgNSwgMjQ1LCAyMzMsIDIyMywgOTMsIDExNiwgNSwgCi0gICAgMjI5LCA3OSwgMjIzLCA5MywgMTE2LCA1LCAyMzAsIDI1LCAyMjMsIDkzLCAxMTYsIDUsIDE1MywgMjIzLCA5MywgMTE2LCA1LCAKLSAgICAyNDIsIDYwLCAyMjMsIDkzLCAyMTMsIDE1MiwgMjIzLCA5MywgMjIxLCAxNzMsIDc4LCAyNCwgMTAwLCAyMTYsIDk3LCAyNCwgCi0gICAgMTAwLCAyMTYsIDk2LCAyNCwgMTAwLCAyMTYsIDk0LCAyNCwgMTAwLCAyMTYsIDk5LCAyNCwgMTAwLCAyMjMsIDIxLCAyNCwgCi0gICAgMTAwLCAyMjMsIDUsIDI0LCAxMDAsIDIyMywgMCwgMjQsIDEwMCwgMjIzLCAyLCAyNCwgMTAwLCAyMjMsIDE4LCAyNCwgMTAwLCAKLSAgICAyMjMsIDExLCAyNCwgMTAwLCAyMjMsIDQsIDI0LCAxMDAsIDIyMywgMjMsIDI0LCAxMDAsIDIyMywgNiwgMjQsIDEwMCwgCi0gICAgMjIzLCAyNSwgMjQsIDEwMCwgMjIzLCAyMiwgMjQsIDEwMCwgMjMwLCAyMTMsIDI0LCAxMDAsIDIzMCwgMjA0LCAyNCwgMTAwLCAKLSAgICAyMzAsIDIwNywgMjQsIDEwMCwgMjI1LCA4MCwgMjQsIDEwMCwgMjI1LCA5MSwgMjQsIDEwMCwgMjI1LCA5MiwgMjQsIDEwMCwgCi0gICAgMjE4LCAyMDcsIDI0LCAxMDAsIDIzNiwgNDYsIDI0LCAxMDAsIDIzNiwgNTMsIDI0LCAxMDAsIDIxOCwgMjE4LCAyNCwgMTAwLCAKLSAgICAyMTgsIDIwNSwgMjQsIDEwMCwgMjI1LCAxMzAsIDI0LCAxMDAsIDI0MSwgMTY3LCAyNCwgMTAwLCAyMTgsIDIwMiwgMTU1LCAKLSAgICA1LCAyMjYsIDI3LCAxNTUsIDUsIDI1MCwgMTg3LCAxNTUsIDUsIDIzMywgNjYsIDE1NSwgNSwgMjExLCAyNDMsIDE1NSwgMSwgCi0gICAgNjEsIDE1NSwgMSwgMjQwLCAxNTQsIDIzNCwgMTkxLCAxNTUsIDEsIDczLCAxNTUsIDEsIDIzNiwgMzMsIDE1NSwgMSwgNzAsIAotICAgIDE1NSwgMSwgMjI2LCA5MCwgMjUwLCAxNjMsIDE1NSwgMSwgMjI5LCA3OCwgMjMzLCAyOCwgMTU1LCAxLCAyMjksIDc4LCAKLSAgICAyMzMsIDI5LCAyMjMsIDE0MiwgMTU1LCAxLCA3NSwgMTU1LCAxLCAyNTQsIDIwMSwgMTU1LCAxLCA3NiwgMTU1LCAxLCAxNzYsIAotICAgIDE1NSwgMSwgMjM1LCAxMywgMjIxLCAyMjgsIDE1NSwgMSwgMjM1LCAxMywgMjMwLCA2NiwgMTU1LCAxLCAyNDMsIDEzNSwgCi0gICAgMTU1LCAxLCAyNDMsIDEzNiwgMjMwLCA2NiwgMTU1LCAxLCAyMjksIDc3LCAxNTUsIDEsIDI1MSwgMzMsIDE1NSwgMSwgMjUxLCAKLSAgICAzNCwgMjMwLCA2NiwgMTU1LCAxLCAyMzUsIDE0MSwgMTU1LCAxLCAyMjcsIDE2NiwgMjMwLCA2NiwgMTU1LCAxLCAyMzUsIAotICAgIDE0MiwgMjMxLCAyMDcsIDE1NSwgMSwgMjI3LCAxNjUsIDE1NSwgMSwgMjE1LCAxNTYsIDE1NSwgMSwgMjE1LCAxNTcsIDIzMSwgCi0gICAgMjA3LCAxNTUsIDEsIDI0OCwgMTM1LCAxNTUsIDEsIDI0OCwgMTM2LCAyMzEsIDIwNywgMTU1LCAxLCAyMjksIDIyOSwgMjMwLCAKLSAgICA2NiwgMTU1LCAxLCAyMTcsIDEwNSwgMTU1LCAxLCAyMTcsIDEwNiwgMjMwLCA2NiwgMTU1LCAxLCAyNDgsIDIyMSwgMTU1LCAKLSAgICAxLCAyNDgsIDIyMiwgMjMxLCAyMDcsIDE1NSwgMSwgMTk3LCAxNTUsIDEsIDE5MCwgMTU1LCAxLCAyMjYsIDkwLCAyMzAsIAotICAgIDY2LCAxNTUsIDEsIDI1MiwgMTkxLCAxNTUsIDEsIDI1MiwgMTkyLCAyMzAsIDY2LCAxNTUsIDEsIDE4NCwgMTU1LCAxLCAKLSAgICAxOTEsIDE1NSwgMSwgMjA1LCAxNTUsIDEsIDIyMywgMTg4LCAyNTQsIDIxMCwgMTU1LCAxLCAyMzMsIDEzNSwgMTU1LCAxLCAKLSAgICAyMTIsIDY1LCAxNTUsIDEsIDIyMiwgMzQsIDIzMCwgNjYsIDE1NSwgMSwgMjIyLCAzNCwgMjMxLCAyMDcsIDE1NSwgMSwgCi0gICAgMjA2LCAxNTUsIDEsIDE2MiwgMTU1LCA1LCAyNTAsIDE4OCwgMjE2LCAyNTAsIDE1NSwgMjUsIDUsIDIxNywgNDcsIDE1NSwgCi0gICAgMjUsIDUsIDIxNiwgMzUsIDE1NSwgMjUsIDUsIDIxMSwgMTkwLCAxNTUsIDI1LCA1LCAyMTEsIDE5MSwgMjMxLCA2OSwgMTU1LCAKLSAgICAyNSwgNSwgMjE4LCA0NywgMTU1LCAyNSwgNSwgMjE4LCA0OCwgMjMxLCA1NywgMTU1LCAyNSwgNSwgMjE3LCA2NSwgMTU1LCAKLSAgICAyNSwgNSwgMjQ3LCAxOTQsIDIzMCwgNjUsIDE1NSwgMjUsIDUsIDIyNSwgMTg0LCAxNTUsIDExNiwgNSwgMjM0LCAxNTgsIAotICAgIDE1NSwgMTE2LCA1LCAyMjUsIDE5NiwgMTU1LCAxMTYsIDUsIDI1MSwgMTksIDE1NSwgMjI2LCA0MCwgMTU1LCA0MywgMjIzLCAKLSAgICA2OSwgMTU1LCA0NCwgMjIzLCA2OSwgMTU1LCAyMjYsIDc5LCAyNTQsIDExNywgMTU1LCAyMjYsIDc5LCAyMzEsIDIyNCwgCi0gICAgMTU1LCAyMjYsIDc5LCAyMzIsIDg4LCAxNTUsIDIyNiwgNzksIDIxMSwgMjM4LCAxNTUsIDIyNiwgNzksIDIyNiwgNDEsIAotICAgIDE1NSwgMjI2LCA3OSwgMjMyLCAyMDUsIDE1NSwgMjI2LCA3OSwgMjMyLCA4MiwgMTU1LCAyMjYsIDc5LCAyNTQsIDI0OSwgCi0gICAgMTU1LCAyMjYsIDc5LCAyNTQsIDI1MCwgMjU0LCAyNDksIDE1NSwgMjI2LCA3OSwgMjI1LCA1MSwgMTU1LCAyMTUsIDk0LCAKLSAgICAyMjYsIDc5LCAyMjUsIDUxLCAxNTUsIDIyNiwgMzYsIDE1NSwgMjEsIDIxMCwgODYsIDE1NSwgMjEsIDExMCwgMTU1LCAyMSwgCisgICAgMSwgMjEzLCAxNzYsIDM4LCA4NCwgNSwgMjUzLCAxNzYsIDg0LCA1LCAyMTksIDE4LCAyNTEsIDAsIDg0LCA1LCAyNTEsIDEsIAorICAgIDIxMywgMTUyLCA4NCwgNSwgNTIsIDI1MSwgMSwgMjEzLCAxNTIsIDg0LCA1LCAyNTEsIDEsIDEwNSwgODQsIDUsIDI1MSwgMSwgCisgICAgMTU4LCA4NCwgNSwgMjUxLCAxLCAyNTMsIDE3NiwgODQsIDUsIDIyNCwgMTI1LCA4NCwgMjQzLCAxMDEsIDI0NCwgMTA0LCAKKyAgICA4NCwgMjUwLCAyMzksIDg0LCAyNDEsIDIzMSwgMjM0LCAxODksIDIzMiwgMjQzLCAyMSwgMjEwLCA4NiwgMjM0LCAxODksIAorICAgIDIzMiwgMjQzLCAyMSwgMTEwLCAyMzQsIDE4OSwgMjMyLCAyNDMsIDIxLCAxMDUsIDIzNCwgMTg5LCAyMzIsIDI0MywgMjEsIAorICAgIDE1OCwgMjM0LCAxODksIDIzMiwgMjQzLCAyMSwgMTYxLCAyMzQsIDE4OSwgMjMyLCAyNDMsIDIxLCAxODksIDIzNCwgMTg5LCAKKyAgICAyMzIsIDI0MywgMjEsIDE5NCwgMjM0LCAxODksIDIzMiwgMjQzLCAyMSwgMTk4LCAyMzQsIDE4OSwgMjMyLCAyNDMsIDIxLCAKKyAgICAxOTUsIDIzNCwgMTg5LCAyMzIsIDI0MywgMjEsIDIwMCwgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAxNzYsIDIzNCwgMTg5LCAKKyAgICAyMzIsIDI0MywgMSwgMjM0LCAxMzMsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjQzLCAxMzYsIDIzNCwgMTg5LCAyMzIsIAorICAgIDI0MywgMSwgMjI5LCA3OCwgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAyMDYsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjIwLCAKKyAgICAxMDMsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjEwLCAxMTYsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjI3LCAxNjYsIAorICAgIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjE3LCAxMDYsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjQwLCAyMjcsIDIzNCwgCisgICAgMTg5LCAyMzIsIDI0MywgMSwgMTk3LCAyMzQsIDE4OSwgMjMyLCAyNDMsIDEsIDE5MCwgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAKKyAgICAyMjUsIDE0OCwgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAxODUsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjQ4LCAyMjIsIAorICAgIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjUyLCAxOTIsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjA1LCAyMzQsIDE4OSwgCisgICAgMjMyLCAyNDMsIDEsIDE5MSwgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAyMzMsIDEzNiwgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAKKyAgICAyMTIsIDY1LCAyMzQsIDE4OSwgMjMyLCAyNDMsIDEsIDIxNiwgMjA5LCAyMzQsIDE4OSwgMjMyLCAyNDMsIDEsIDE2MiwgCisgICAgMjM0LCAxODksIDIzMiwgMjQzLCAxLCAyMTQsIDI3LCAyMzQsIDE4OSwgMjMyLCAyNDMsIDEsIDI1MSwgMzQsIDIzNCwgMTg5LCAKKyAgICAyMzIsIDI0MywgMSwgNjEsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjI2LCAyMzUsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgCisgICAgNzMsIDIzNCwgMTg5LCAyMzIsIDI0MywgMSwgMjI2LCAxODQsIDIzNCwgMTg5LCAyMzIsIDI0MywgMjUsIDIxNCwgMjE0LCAKKyAgICAyMzQsIDE4OSwgMjMyLCAyNDMsIDI1LCA3NSwgMjM0LCAxODksIDIzMiwgMjQzLCAyNSwgNzAsIDIzNCwgMTg5LCAyMzIsIAorICAgIDI0MywgMjUsIDI0NSwgMjEwLCAyMzQsIDE4OSwgMjMyLCAyNDMsIDI1LCA3NiwgMjM0LCAxODksIDIzMiwgMjQzLCAxMzgsIAorICAgIDIyNSwgMzEsIDIzNCwgMTg5LCAyMzIsIDI0MywgMTM4LCAyNTEsIDEzLCAyMzQsIDE4OSwgMjMyLCAyNDMsIDEzOCwgMjUxLCAKKyAgICAxNCwgMjI1LCAzMSwgMjM0LCAxODksIDIzMiwgMjQzLCA1LCAyNDksIDc4LCAyMzQsIDE4OSwgMjMyLCAyNDMsIDUsIDIxOSwgCisgICAgMjAwLCAyMjMsIDk0LCAxLCAxNzYsIDIyMywgOTQsIDEsIDI0MywgMTM2LCAyMjMsIDk0LCAxLCAyMjksIDc4LCAyMjMsIDk0LCAKKyAgICAxLCAyMTcsIDEwNiwgMjIzLCA5NCwgMSwgMjQ4LCAyMjIsIDIyMywgOTQsIDEsIDE5NywgMjIzLCA5NCwgMSwgMTkwLCAyMjMsIAorICAgIDk0LCAxLCAyNTIsIDE5MiwgMjIzLCA5NCwgMSwgMTg1LCAyMjMsIDk0LCAxLCAyNTEsIDM0LCAyMjMsIDk0LCAxLCAyMzUsIAorICAgIDE0MiwgMjIzLCA5NCwgMSwgMjI3LCAxNjYsIDIyMywgOTQsIDEsIDIwNiwgMjIzLCA5NCwgMSwgMjA1LCAyMjMsIDk0LCAxLCAKKyAgICAyMzMsIDEzNiwgMjIzLCA5NCwgMSwgMTkxLCAyMjMsIDk0LCAxLCAyMTIsIDY1LCAyMjMsIDk0LCAxLCAxNjIsIDIyMywgOTQsIAorICAgIDEsIDIzMSwgMTI1LCAyMjMsIDk0LCAxLCAyMjksIDU3LCAyMjMsIDk0LCAxLCAyMjksIDE0OSwgMjIzLCA5NCwgMSwgMjI3LCAKKyAgICAxMzYsIDIyMywgOTQsIDEsIDYxLCAyMjMsIDk0LCAyNSwgNSwgNzMsIDIyMywgOTQsIDI1LCA1LCA3MCwgMjIzLCA5NCwgMjUsIAorICAgIDUsIDc1LCAyMjMsIDk0LCAyNSwgNSwgMjU0LCAyMDIsIDIyMywgOTQsIDI1LCA1LCA3NiwgMjIzLCA5NCwgMjUsIDUsIDI1MywgCisgICAgMTkzLCAyMjMsIDk0LCAyNSwgNSwgMjQ1LCA1NiwgMjIzLCA5NCwgMjUsIDUsIDI0NSwgMjM0LCAyMjMsIDk0LCAxMTYsIDUsIAorICAgIDIyOSwgODAsIDIyMywgOTQsIDExNiwgNSwgMjMwLCAyNiwgMjIzLCA5NCwgMTE2LCA1LCAxNTMsIDIyMywgOTQsIDExNiwgNSwgCisgICAgMjQyLCA2MSwgMjIzLCA5NCwgMjEzLCAxNTIsIDIyMywgOTQsIDIyMSwgMTc0LCA3OCwgMjQsIDEwMCwgMjE2LCA5OCwgMjQsIAorICAgIDEwMCwgMjE2LCA5NywgMjQsIDEwMCwgMjE2LCA5NSwgMjQsIDEwMCwgMjE2LCAxMDAsIDI0LCAxMDAsIDIyMywgMjIsIDI0LCAKKyAgICAxMDAsIDIyMywgNiwgMjQsIDEwMCwgMjIzLCAxLCAyNCwgMTAwLCAyMjMsIDMsIDI0LCAxMDAsIDIyMywgMTksIDI0LCAxMDAsIAorICAgIDIyMywgMTIsIDI0LCAxMDAsIDIyMywgNSwgMjQsIDEwMCwgMjIzLCAyNCwgMjQsIDEwMCwgMjIzLCA3LCAyNCwgMTAwLCAKKyAgICAyMjMsIDI2LCAyNCwgMTAwLCAyMjMsIDIzLCAyNCwgMTAwLCAyMzAsIDIxNCwgMjQsIDEwMCwgMjMwLCAyMDUsIDI0LCAxMDAsIAorICAgIDIzMCwgMjA4LCAyNCwgMTAwLCAyMjUsIDgxLCAyNCwgMTAwLCAyMjUsIDkyLCAyNCwgMTAwLCAyMjUsIDkzLCAyNCwgMTAwLCAKKyAgICAyMTgsIDIwOCwgMjQsIDEwMCwgMjM2LCA0NywgMjQsIDEwMCwgMjM2LCA1NCwgMjQsIDEwMCwgMjE4LCAyMTksIDI0LCAxMDAsIAorICAgIDIxOCwgMjA2LCAyNCwgMTAwLCAyMjUsIDEzMSwgMjQsIDEwMCwgMjQxLCAxNjgsIDI0LCAxMDAsIDIxOCwgMjAzLCAxNTUsIAorICAgIDUsIDIyNiwgMjgsIDE1NSwgNSwgMjUwLCAxODgsIDE1NSwgNSwgMjMzLCA2NywgMTU1LCA1LCAyMTEsIDI0MywgMTU1LCAxLCAKKyAgICA2MSwgMTU1LCAxLCAyNDAsIDE1NSwgMjM0LCAxOTIsIDE1NSwgMSwgNzMsIDE1NSwgMSwgMjM2LCAzNCwgMTU1LCAxLCA3MCwgCisgICAgMTU1LCAxLCAyMjYsIDkxLCAyNTAsIDE2NCwgMTU1LCAxLCAyMjksIDc5LCAyMzMsIDI5LCAxNTUsIDEsIDIyOSwgNzksIAorICAgIDIzMywgMzAsIDIyMywgMTQzLCAxNTUsIDEsIDc1LCAxNTUsIDEsIDI1NCwgMjAyLCAxNTUsIDEsIDc2LCAxNTUsIDEsIDE3NiwgCisgICAgMTU1LCAxLCAyMzUsIDE0LCAyMjEsIDIyOSwgMTU1LCAxLCAyMzUsIDE0LCAyMzAsIDY3LCAxNTUsIDEsIDI0MywgMTM2LCAKKyAgICAxNTUsIDEsIDI0MywgMTM3LCAyMzAsIDY3LCAxNTUsIDEsIDIyOSwgNzgsIDE1NSwgMSwgMjUxLCAzNCwgMTU1LCAxLCAyNTEsIAorICAgIDM1LCAyMzAsIDY3LCAxNTUsIDEsIDIzNSwgMTQyLCAxNTUsIDEsIDIyNywgMTY3LCAyMzAsIDY3LCAxNTUsIDEsIDIzNSwgCisgICAgMTQzLCAyMzEsIDIwOCwgMTU1LCAxLCAyMjcsIDE2NiwgMTU1LCAxLCAyMTUsIDE1NywgMTU1LCAxLCAyMTUsIDE1OCwgMjMxLCAKKyAgICAyMDgsIDE1NSwgMSwgMjQ4LCAxMzYsIDE1NSwgMSwgMjQ4LCAxMzcsIDIzMSwgMjA4LCAxNTUsIDEsIDIyOSwgMjMwLCAyMzAsIAorICAgIDY3LCAxNTUsIDEsIDIxNywgMTA2LCAxNTUsIDEsIDIxNywgMTA3LCAyMzAsIDY3LCAxNTUsIDEsIDI0OCwgMjIyLCAxNTUsIAorICAgIDEsIDI0OCwgMjIzLCAyMzEsIDIwOCwgMTU1LCAxLCAxOTcsIDE1NSwgMSwgMTkwLCAxNTUsIDEsIDIyNiwgOTEsIDIzMCwgCisgICAgNjcsIDE1NSwgMSwgMjUyLCAxOTIsIDE1NSwgMSwgMjUyLCAxOTMsIDIzMCwgNjcsIDE1NSwgMSwgMTg1LCAxNTUsIDEsIAorICAgIDE5MSwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMjIzLCAxODksIDI1NCwgMjExLCAxNTUsIDEsIDIzMywgMTM2LCAxNTUsIDEsIAorICAgIDIxMiwgNjUsIDE1NSwgMSwgMjIyLCAzNSwgMjMwLCA2NywgMTU1LCAxLCAyMjIsIDM1LCAyMzEsIDIwOCwgMTU1LCAxLCAKKyAgICAyMDYsIDE1NSwgMSwgMTYyLCAxNTUsIDUsIDI1MCwgMTg5LCAyMTYsIDI1MSwgMTU1LCAyNSwgNSwgMjE3LCA0OCwgMTU1LCAKKyAgICAyNSwgNSwgMjE2LCAzNiwgMTU1LCAyNSwgNSwgMjExLCAxOTAsIDE1NSwgMjUsIDUsIDIxMSwgMTkxLCAyMzEsIDcwLCAxNTUsIAorICAgIDI1LCA1LCAyMTgsIDQ4LCAxNTUsIDI1LCA1LCAyMTgsIDQ5LCAyMzEsIDU4LCAxNTUsIDI1LCA1LCAyMTcsIDY2LCAxNTUsIAorICAgIDI1LCA1LCAyNDcsIDE5NSwgMjMwLCA2NiwgMTU1LCAyNSwgNSwgMjI1LCAxODUsIDE1NSwgMTE2LCA1LCAyMzQsIDE1OSwgCisgICAgMTU1LCAxMTYsIDUsIDIyNSwgMTk3LCAxNTUsIDExNiwgNSwgMjUxLCAyMCwgMTU1LCAyMjYsIDQxLCAxNTUsIDQzLCAyMjMsIAorICAgIDcwLCAxNTUsIDQ0LCAyMjMsIDcwLCAxNTUsIDIyNiwgODAsIDI1NCwgMTE4LCAxNTUsIDIyNiwgODAsIDIzMSwgMjI1LCAKKyAgICAxNTUsIDIyNiwgODAsIDIzMiwgODksIDE1NSwgMjI2LCA4MCwgMjExLCAyMzgsIDE1NSwgMjI2LCA4MCwgMjI2LCA0MiwgCisgICAgMTU1LCAyMjYsIDgwLCAyMzIsIDIwNiwgMTU1LCAyMjYsIDgwLCAyMzIsIDgzLCAxNTUsIDIyNiwgODAsIDI1NCwgMjUwLCAKKyAgICAxNTUsIDIyNiwgODAsIDI1NCwgMjUxLCAyNTQsIDI1MCwgMTU1LCAyMjYsIDgwLCAyMjUsIDUyLCAxNTUsIDIxNSwgOTQsIAorICAgIDIyNiwgODAsIDIyNSwgNTIsIDE1NSwgMjI2LCAzNywgMTU1LCAyMSwgMjEwLCA4NiwgMTU1LCAyMSwgMTEwLCAxNTUsIDIxLCAKICAgICAxMDUsIDE1NSwgMjEsIDE1OCwgMTU1LCAyMSwgMTYxLCAxNTUsIDIxLCAxODksIDE1NSwgMjEsIDE5NCwgMTU1LCAyMSwgCi0gICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCAyMjYsIDc5LCAyMTYsIDY5LCAyMTUsIDEwNiwgMTU1LCAKLSAgICAyMjYsIDc5LCAyMzUsIDE2NywgMTcyLCAxLCA2MSwgMTcyLCAxLCA3MywgMTcyLCAxLCA3MCwgMTcyLCAxLCA3NSwgMTcyLCAKLSAgICAxLCAyNTQsIDIwMSwgMTcyLCAxLCA3NiwgMTcyLCAxLCAxNzYsIDE3MiwgMSwgMjM0LCAxMzIsIDE3MiwgMSwgMjQzLCAxMzUsIAotICAgIDE3MiwgMSwgMjQyLCAyNDksIDE3MiwgMSwgMjI4LCAyNDUsIDE3MiwgMSwgMjI5LCA3NywgMTcyLCAxLCAyNTAsIDE1NywgCi0gICAgMTcyLCAxLCAyNTAsIDExMiwgMTcyLCAxLCAyMzUsIDE0MSwgMTcyLCAxLCAyMzUsIDExNCwgMTcyLCAxLCAyMjgsIDIzNSwgCi0gICAgMTcyLCAxLCAyMjgsIDIzNywgMTcyLCAxLCAyMjgsIDIzNiwgMTcyLCAxLCAyMTcsIDEwNSwgMTcyLCAxLCAyMTYsIDIwOCwgCi0gICAgMTcyLCAxLCAyNDgsIDIyMSwgMTcyLCAxLCAyNDgsIDI1LCAxNzIsIDEsIDIyNywgMjA3LCAxNzIsIDEsIDE5NywgMTcyLCAxLCAKLSAgICAyNDgsIDEzNSwgMTcyLCAxLCAxOTAsIDE3MiwgMSwgMjI0LCAyMjAsIDE3MiwgMSwgMjI1LCAxNDcsIDE3MiwgMSwgMjUyLCAKLSAgICAxOTEsIDE3MiwgMSwgMjUyLCAxOCwgMTcyLCAxLCAyMzAsIDk1LCAxNzIsIDEsIDE4NCwgMTcyLCAxLCAyNTIsIDExMSwgCi0gICAgMTcyLCAxLCAxOTEsIDE3MiwgMSwgMjA1LCAxNzIsIDEsIDIzMywgMTM1LCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAKLSAgICAyMjMsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgMTcyLCAyNSwgNSwgMjU1LCA3MywgMTcyLCAyNSwgNSwgNzMsIDE3MiwgCi0gICAgMjUsIDUsIDIzNiwgMzMsIDE3MiwgMjUsIDUsIDI0NSwgMTk1LCAxNzIsIDI1LCA1LCA3MCwgMTcyLCAyNSwgNSwgMjI2LCAKLSAgICAyMzQsIDE3MiwgMjUsIDUsIDc2LCAxNzIsIDI1LCA1LCAyNTQsIDIwMSwgMTcyLCAyNSwgNSwgMjUzLCAxOTIsIDE3MiwgMjUsIAotICAgIDUsIDIxNCwgMjE0LCAxNzIsIDExNiwgNSwgMTkxLCAxNzIsIDExNiwgNSwgMjA1LCAxNzIsIDExNiwgNSwgMjMzLCAxMzUsIAotICAgIDE3MiwgMTE2LCA1LCAyMTIsIDY1LCAxNzIsIDEsIDQwLCAyMzUsIDIzLCAxNzIsIDEsIDQwLCAyNDMsIDIwMiwgMTcyLCAxLCAKLSAgICA0MCwgMjI5LCA3OSwgMTcyLCAxMTYsIDUsIDQwLCAyMjksIDc5LCAxNzIsIDEsIDQwLCAyNTAsIDE1OCwgMTcyLCAxLCA0MCwgCi0gICAgMjE3LCAxNTIsIDE3MiwgMSwgNDAsIDIzMCwgMjUsIDE3MiwgMSwgNDAsIDIyNiwgMTA1LCAxNzIsIDEsIDQwLCAyMTEsIAotICAgIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI2LCAxNzIsIDExNiwgNSwgCi0gICAgNDAsIDE5MywgMTcyLCAxMTYsIDUsIDQwLCAyNDIsIDYwLCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTAsIDE3MiwgCisgICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCAyMjYsIDgwLCAyMTYsIDcwLCAyMTUsIDEwNywgMTU1LCAKKyAgICAyMjYsIDgwLCAyMzUsIDE2OCwgMTcyLCAxLCA2MSwgMTcyLCAxLCA3MywgMTcyLCAxLCA3MCwgMTcyLCAxLCA3NSwgMTcyLCAKKyAgICAxLCAyNTQsIDIwMiwgMTcyLCAxLCA3NiwgMTcyLCAxLCAxNzYsIDE3MiwgMSwgMjM0LCAxMzMsIDE3MiwgMSwgMjQzLCAxMzYsIAorICAgIDE3MiwgMSwgMjQyLCAyNTAsIDE3MiwgMSwgMjI4LCAyNDYsIDE3MiwgMSwgMjI5LCA3OCwgMTcyLCAxLCAyNTAsIDE1OCwgCisgICAgMTcyLCAxLCAyNTAsIDExMywgMTcyLCAxLCAyMzUsIDE0MiwgMTcyLCAxLCAyMzUsIDExNSwgMTcyLCAxLCAyMjgsIDIzNiwgCisgICAgMTcyLCAxLCAyMjgsIDIzOCwgMTcyLCAxLCAyMjgsIDIzNywgMTcyLCAxLCAyMTcsIDEwNiwgMTcyLCAxLCAyMTYsIDIwOSwgCisgICAgMTcyLCAxLCAyNDgsIDIyMiwgMTcyLCAxLCAyNDgsIDI2LCAxNzIsIDEsIDIyNywgMjA4LCAxNzIsIDEsIDE5NywgMTcyLCAxLCAKKyAgICAyNDgsIDEzNiwgMTcyLCAxLCAxOTAsIDE3MiwgMSwgMjI0LCAyMjEsIDE3MiwgMSwgMjI1LCAxNDgsIDE3MiwgMSwgMjUyLCAKKyAgICAxOTIsIDE3MiwgMSwgMjUyLCAxOSwgMTcyLCAxLCAyMzAsIDk2LCAxNzIsIDEsIDE4NSwgMTcyLCAxLCAyNTIsIDExMiwgCisgICAgMTcyLCAxLCAxOTEsIDE3MiwgMSwgMjA1LCAxNzIsIDEsIDIzMywgMTM2LCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAKKyAgICAyMjQsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgMTcyLCAyNSwgNSwgMjU1LCA3NCwgMTcyLCAyNSwgNSwgNzMsIDE3MiwgCisgICAgMjUsIDUsIDIzNiwgMzQsIDE3MiwgMjUsIDUsIDI0NSwgMTk2LCAxNzIsIDI1LCA1LCA3MCwgMTcyLCAyNSwgNSwgMjI2LCAKKyAgICAyMzUsIDE3MiwgMjUsIDUsIDc2LCAxNzIsIDI1LCA1LCAyNTQsIDIwMiwgMTcyLCAyNSwgNSwgMjUzLCAxOTMsIDE3MiwgMjUsIAorICAgIDUsIDIxNCwgMjE0LCAxNzIsIDExNiwgNSwgMTkxLCAxNzIsIDExNiwgNSwgMjA1LCAxNzIsIDExNiwgNSwgMjMzLCAxMzYsIAorICAgIDE3MiwgMTE2LCA1LCAyMTIsIDY1LCAxNzIsIDEsIDQwLCAyMzUsIDI0LCAxNzIsIDEsIDQwLCAyNDMsIDIwMywgMTcyLCAxLCAKKyAgICA0MCwgMjI5LCA4MCwgMTcyLCAxMTYsIDUsIDQwLCAyMjksIDgwLCAxNzIsIDEsIDQwLCAyNTAsIDE1OSwgMTcyLCAxLCA0MCwgCisgICAgMjE3LCAxNTMsIDE3MiwgMSwgNDAsIDIzMCwgMjYsIDE3MiwgMSwgNDAsIDIyNiwgMTA2LCAxNzIsIDEsIDQwLCAyMTEsIAorICAgIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI3LCAxNzIsIDExNiwgNSwgCisgICAgNDAsIDE5MywgMTcyLCAxMTYsIDUsIDQwLCAyNDIsIDYxLCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTAsIDE3MiwgCiAgICAgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIDIxLCAxNjEsIDE3MiwgMjEsIDE4OSwgMTcyLCAyMSwgMTk0LCAxNzIsIDIxLCAKLSAgICAxOTgsIDE3MiwgMjEsIDE5NSwgMTcyLCAyMSwgMjAwLCAxNzIsIDIyNCwgMTQxLCAyMTgsIDI1MSwgMTcyLCAyMjQsIDE0MSwgCi0gICAgMjQ4LCAxNzgsIDE3MiwgMjI0LCAxNDEsIDUyLCAyNDgsIDE3OCwgMTcyLCAyMjQsIDE0MSwgMjE1LCAyMTEsIDI0OCwgMTc4LCAKLSAgICA2OCwgMSwgMjM0LCAxMjYsIDI0MywgMTM1LCA2OCwgMSwgMjM0LCAxMjYsIDI1MSwgMzMsIDY4LCAxLCAyMzQsIDEyNiwgCi0gICAgMjUwLCAxNTcsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxNDEsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxMTQsIDY4LCAxLCAKLSAgICAyMzQsIDEyNiwgMjI3LCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNTYsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNDQsIAotICAgIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMzUsIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMTksIDY4LCAxLCAyMzQsIDEyNiwgCi0gICAgMjQ4LCAyNSwgNjgsIDEsIDIzNCwgMTI2LCAxOTcsIDY4LCAxLCAyMzQsIDEyNiwgMjA2LCA2OCwgMSwgMjM0LCAxMjYsIAotICAgIDE2MiwgNjgsIDEsIDIzNCwgMTI2LCAyNDEsIDE4OSwgNjgsIDEsIDIzNCwgMTI2LCAyNDQsIDE5NiwgNjgsIDU4LCAxLCAKLSAgICAyMzQsIDEyNiwgMjIzLCAxMDksIDY4LCAxLCAyMzQsIDEyNiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjEwLCAxMTYsIAotICAgIDY4LCAxLCAyMzQsIDEyNiwgMjA1LCA2OCwgMjMyLCAxNDUsIDIzNCwgMTI2LCAyMjYsIDI1MywgNjgsIDIzMiwgMTQ1LCAKLSAgICAyMzQsIDEyNiwgMjI0LCA0MywgNjgsIDIzMiwgMTQ1LCAyMzQsIDEyNiwgMjQxLCAxMjEsIDY4LCAxNiwgMjU0LCAxOTAsIAotICAgIDI0NSwgMzAsIDY4LCAxNiwgMjU0LCAxOTAsIDExMCwgNjgsIDE2LCAyNTQsIDE5MCwgMTA1LCA2OCwgMSwgMjU0LCAxOTAsIAotICAgIDIwNSwgNjgsIDUsIDIyNiwgMjMsIDIzNCwgMjEzLCAyMTYsIDMwLCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMjgsIDM5LCAKLSAgICAyMDgsIDEsIDEyNSwgMjM0LCAyOCwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDEwNSwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIAotICAgIDEwNSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDExNCwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDExNCwgMzksIDIwOCwgMSwgCi0gICAgMTIxLCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTI1LCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTIxLCAyMjksIDQsIDM5LCAKLSAgICAyMDgsIDEsIDEyNSwgMjI5LCA0LCAzOSwgMjA4LCAxLCAxMjEsIDI0OSwgMjM4LCAzOSwgMjA4LCAxLCAxMjUsIDI0OSwgCi0gICAgMjM4LCAzOSwgMjA4LCAxLCAxMjEsIDI1MCwgODYsIDM5LCAyMDgsIDEsIDEyNSwgMjUwLCA4NiwgMzksIDIwOCwgMSwgMTIxLCAKLSAgICAyMTksIDU4LCAzOSwgMjA4LCAxLCAxMjUsIDIxOSwgNTgsIDM5LCAyMDgsIDEsIDEyMSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIDEyMSwgMjQ3LCAxNDUsIDM5LCAyMDgsIDEsIDEyNSwgMjQ3LCAxNDUsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMTExLCAzOSwgMjA4LCAxLCAxMjUsIDExMSwgMzksIDIwOCwgMSwgMTIxLCAyMTYsIDE1NiwgMzksIAotICAgIDIwOCwgMSwgMTI1LCAyMTYsIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMjgsIDc0LCAzOSwgMjA4LCAxLCAxMjUsIDIyOCwgCi0gICAgNzQsIDM5LCAyMDgsIDEsIDEyMSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIDEyNSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIAotICAgIDEyMSwgMjI1LCAxNiwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDE2LCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTIxLCAzOSwgCi0gICAgMjA4LCAxLCAxMjUsIDIyNSwgMTIxLCAzOSwgMjA4LCAxLCAxMjEsIDI0NCwgNDMsIDM5LCAyMDgsIDEsIDEyNSwgMjQ0LCAKLSAgICA0MywgMzksIDIwOCwgMSwgMTIxLCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgMTI1LCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgCi0gICAgMTIxLCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTI1LCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTIxLCAyMjIsIDIxMSwgMzksIAotICAgIDIwOCwgMSwgMTI1LCAyMjIsIDIxMSwgMzksIDIwOCwgMSwgMTIxLCAyMzIsIDE1NiwgMzksIDIwOCwgMSwgMTI1LCAyMzIsIAotICAgIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgMTI1LCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgCi0gICAgMTIxLCAyNDEsIDY4LCAzOSwgMjA4LCAxLCAxMjUsIDI0MSwgNjgsIDM5LCAyMDgsIDEsIDEyMSwgNzYsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgNzYsIDM5LCAyMDgsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDIwOCwgMjUsIDI1NSwgNzMsIDM5LCAyMDgsIDI1LCAKKyAgICAxOTgsIDE3MiwgMjEsIDE5NSwgMTcyLCAyMSwgMjAwLCAxNzIsIDIyNCwgMTQyLCAyMTgsIDI1MiwgMTcyLCAyMjQsIDE0MiwgCisgICAgMjQ4LCAxNzksIDE3MiwgMjI0LCAxNDIsIDUyLCAyNDgsIDE3OSwgMTcyLCAyMjQsIDE0MiwgMjE1LCAyMTIsIDI0OCwgMTc5LCAKKyAgICA2OCwgMSwgMjM0LCAxMjcsIDI0MywgMTM2LCA2OCwgMSwgMjM0LCAxMjcsIDI1MSwgMzQsIDY4LCAxLCAyMzQsIDEyNywgCisgICAgMjUwLCAxNTgsIDY4LCAxLCAyMzQsIDEyNywgMjM1LCAxNDIsIDY4LCAxLCAyMzQsIDEyNywgMjM1LCAxMTUsIDY4LCAxLCAKKyAgICAyMzQsIDEyNywgMjI3LCAxNjYsIDY4LCAxLCAyMzQsIDEyNywgMjE1LCAxNTcsIDY4LCAxLCAyMzQsIDEyNywgMjE1LCAxNDUsIAorICAgIDY4LCAxLCAyMzQsIDEyNywgMjQ4LCAxMzYsIDY4LCAxLCAyMzQsIDEyNywgMjQ4LCAxMjAsIDY4LCAxLCAyMzQsIDEyNywgCisgICAgMjQ4LCAyNiwgNjgsIDEsIDIzNCwgMTI3LCAxOTcsIDY4LCAxLCAyMzQsIDEyNywgMjA2LCA2OCwgMSwgMjM0LCAxMjcsIAorICAgIDE2MiwgNjgsIDEsIDIzNCwgMTI3LCAyNDEsIDE5MCwgNjgsIDEsIDIzNCwgMTI3LCAyNDQsIDE5NywgNjgsIDU4LCAxLCAKKyAgICAyMzQsIDEyNywgMjIzLCAxMTAsIDY4LCAxLCAyMzQsIDEyNywgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEyNywgMjEwLCAxMTYsIAorICAgIDY4LCAxLCAyMzQsIDEyNywgMjA1LCA2OCwgMjMyLCAxNDYsIDIzNCwgMTI3LCAyMjYsIDI1NCwgNjgsIDIzMiwgMTQ2LCAKKyAgICAyMzQsIDEyNywgMjI0LCA0NCwgNjgsIDIzMiwgMTQ2LCAyMzQsIDEyNywgMjQxLCAxMjIsIDY4LCAxNiwgMjU0LCAxOTEsIAorICAgIDI0NSwgMzEsIDY4LCAxNiwgMjU0LCAxOTEsIDExMCwgNjgsIDE2LCAyNTQsIDE5MSwgMTA1LCA2OCwgMSwgMjU0LCAxOTEsIAorICAgIDIwNSwgNjgsIDUsIDIyNiwgMjQsIDIzNCwgMjE0LCAyMTYsIDMxLCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMjksIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjM0LCAyOSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDEwNiwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIAorICAgIDEwNiwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDExNSwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDExNSwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDIsIDE3NSwgMzksIDIwOCwgMSwgMTI1LCAyNDIsIDE3NSwgMzksIDIwOCwgMSwgMTIxLCAyMjksIDUsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjI5LCA1LCAzOSwgMjA4LCAxLCAxMjEsIDI0OSwgMjM5LCAzOSwgMjA4LCAxLCAxMjUsIDI0OSwgCisgICAgMjM5LCAzOSwgMjA4LCAxLCAxMjEsIDI1MCwgODcsIDM5LCAyMDgsIDEsIDEyNSwgMjUwLCA4NywgMzksIDIwOCwgMSwgMTIxLCAKKyAgICAyMTksIDU5LCAzOSwgMjA4LCAxLCAxMjUsIDIxOSwgNTksIDM5LCAyMDgsIDEsIDEyMSwgMjI3LCAxMzUsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgMjI3LCAxMzUsIDM5LCAyMDgsIDEsIDEyMSwgMjQ3LCAxNDYsIDM5LCAyMDgsIDEsIDEyNSwgMjQ3LCAxNDYsIDM5LCAKKyAgICAyMDgsIDEsIDEyMSwgMTExLCAzOSwgMjA4LCAxLCAxMjUsIDExMSwgMzksIDIwOCwgMSwgMTIxLCAyMTYsIDE1NywgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMTYsIDE1NywgMzksIDIwOCwgMSwgMTIxLCAyMjgsIDc1LCAzOSwgMjA4LCAxLCAxMjUsIDIyOCwgCisgICAgNzUsIDM5LCAyMDgsIDEsIDEyMSwgMjUxLCAyMDYsIDM5LCAyMDgsIDEsIDEyNSwgMjUxLCAyMDYsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjI1LCAxNywgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDE3LCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTIyLCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyNSwgMTIyLCAzOSwgMjA4LCAxLCAxMjEsIDI0NCwgNDQsIDM5LCAyMDgsIDEsIDEyNSwgMjQ0LCAKKyAgICA0NCwgMzksIDIwOCwgMSwgMTIxLCAyMzAsIDE2MiwgMzksIDIwOCwgMSwgMTI1LCAyMzAsIDE2MiwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTI1LCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTIxLCAyMjIsIDIxMiwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjIsIDIxMiwgMzksIDIwOCwgMSwgMTIxLCAyMzIsIDE1NywgMzksIDIwOCwgMSwgMTI1LCAyMzIsIAorICAgIDE1NywgMzksIDIwOCwgMSwgMTIxLCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgMTI1LCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDEsIDY5LCAzOSwgMjA4LCAxLCAxMjUsIDI0MSwgNjksIDM5LCAyMDgsIDEsIDEyMSwgNzYsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgNzYsIDM5LCAyMDgsIDIzMSwgMjA1LCAyMzQsIDIzMSwgMzksIDIwOCwgMjUsIDI1NSwgNzQsIDM5LCAyMDgsIDI1LCAKICAgICA3MywgMzksIDIwOCwgMjUsIDIxNCwgMjE0LCAzOSwgMjA4LCAyNSwgNzAsIDM5LCAyMDgsIDI1LCA3NSwgMzksIDIwOCwgMjUsIAotICAgIDc2LCAzOSwgMjA4LCAyMzEsIDIwNCwgMjM0LCAxMDgsIDM5LCAyMDgsIDI1LCAyNDAsIDExOSwgMzksIDIwOCwgMjUsIDIxNCwgCi0gICAgMjEzLCAzOSwgMjA4LCAyNSwgMjE0LCAyMjksIDM5LCAyMDgsIDI1LCAyNTMsIDE5MCwgMzksIDIwOCwgMjUsIDI1MywgMTY3LCAKLSAgICAzOSwgMjA4LCAyNSwgMjU0LCAxMjMsIDM5LCAyMDgsIDI1LCAyNTQsIDEzNiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgCi0gICAgMjQ1LCAxODAsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIyNywgMjA2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMTYsIAotICAgIDE1NiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjE5LCA0MiwgMzksIDIwOCwgMTYsIDIzNCwgMTMsIDM5LCAyMDgsIDE2LCAKLSAgICAyMjcsIDIwNiwgMzksIDIwOCwgMTYsIDIyMSwgMjUzLCAzOSwgMjA4LCAxNiwgMjQxLCA2OSwgMjQxLCA2NCwgMzksIDIwOCwgCi0gICAgMTYsIDIzNCwgMjIsIDIzNCwgMjEsIDE4NiwgMTg1LCAxLCA3NSwgMTg2LCAxODUsIDEsIDc2LCAxODYsIDE4NSwgMSwgMjUwLCAKLSAgICAxNTcsIDE4NiwgMTg1LCAxLCAyMjcsIDE2NSwgMTg2LCAxODUsIDEsIDIxNSwgMTU2LCAxODYsIDE4NSwgMSwgMjE1LCAxNDQsIAotICAgIDE4NiwgMTg1LCAxLCAyNDgsIDEzNSwgMTg2LCAxODUsIDEsIDI0OCwgMTE5LCAxODYsIDE4NSwgMSwgMjI4LCAxMTAsIDE4NiwgCi0gICAgMTg1LCAxLCAyMjAsIDEwMiwgMTg2LCAxODUsIDEsIDIxOCwgMjIzLCAxODYsIDE4NSwgMjUsIDUsIDIzNiwgMzMsIDE4NiwgCi0gICAgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NiwgMTg1LCAyNSwgNSwgMjU1LCAzNywgMTg2LCAxODUsIDI1LCA1LCAyNTMsIAotICAgIDE5MiwgMTg2LCAxODUsIDI1LCA1LCAyNTUsIDMwLCAxODYsIDE4NSwgMjUwLCAxMjUsIDE4NiwgMTg1LCAyNTQsIDIwNiwgCi0gICAgMjM0LCA5OCwgMTg2LCAxODUsIDI1NCwgMTAzLCAxODYsIDE4NSwgMywgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyMTEsIAotICAgIDIwOSwgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyNSwgNSwgMjEzLCAxNDcsIDE4NiwgMTg1LCAyMTMsIDE1MiwgMjksIDMsIAotICAgIDIxNSwgMTM3LCAyOSwgMywgMjE1LCAxNDAsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQxLCAyOSwgMywgMjE1LCAKLSAgICAxNDIsIDI5LCAzLCAyMTUsIDEzOSwgMjksIDMsIDI0OCwgMTEzLCAyOSwgMywgMjQ4LCAxMTUsIDI5LCAzLCAyNDgsIDExOCwgCi0gICAgMjksIDMsIDI0OCwgMTE2LCAyOSwgMywgMjQ4LCAxMTcsIDI5LCAzLCAyNDgsIDExNCwgMjksIDMsIDI0NiwgMjgsIDI5LCAzLCAKLSAgICAyNDYsIDMxLCAyOSwgMywgMjQ2LCAzNywgMjksIDMsIDI0NiwgMzUsIDI5LCAzLCAyNDYsIDM2LCAyOSwgMywgMjQ2LCAyOSwgCi0gICAgMjksIDMsIDI1MCwgMjA0LCAyOSwgMywgMjUwLCAxOTgsIDI5LCAzLCAyNTAsIDIwMCwgMjksIDMsIDI1MCwgMjAzLCAyOSwgCi0gICAgMywgMjUwLCAyMDEsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMTk5LCAyOSwgMywgMjUyLCAxMTEsIDI5LCAzLCAKLSAgICAyNTIsIDkwLCAyOSwgMywgMjUyLCAxMDIsIDI5LCAzLCAyNTIsIDExMCwgMjksIDMsIDI1MiwgMTA1LCAyOSwgMywgMjUyLCAKLSAgICAxMDYsIDI5LCAzLCAyNTIsIDk0LCAxODYsIDE4NSwgMSwgMjM0LCAxOSwgMTg2LCAxODUsIDEsIDIyMSwgMjUzLCAxODYsIAotICAgIDE4NSwgMSwgMjMzLCAxMDksIDE4NiwgMTg1LCAxLCAyMzAsIDE3MiwgMTg2LCAxODUsIDEsIDE5MCwgMTg2LCAxODUsIDEsIAotICAgIDE5NywgMTg2LCAxODUsIDEsIDI1MCwgMTAyLCAxODYsIDE4NSwgMSwgMjE2LCA5MCwgMTg2LCAxODUsIDEsIDIzNCwgMTAxLCAKLSAgICAxODYsIDE4NSwgMSwgMjI4LCAyNTAsIDE4NiwgMTg1LCAxLCAyMTYsIDE1MCwgMTg2LCAxODUsIDEsIDIxMiwgNjAsIDE4NiwgCi0gICAgMTg1LCAxLCAyMTEsIDY5LCAxODYsIDE4NSwgMSwgMjQwLCAyMTYsIDE4NiwgMTg1LCAxLCAyMTQsIDE5MCwgMTg2LCAxODUsIAotICAgIDEsIDczLCAxODYsIDE4NSwgMSwgMjI1LCAxNDIsIDE4NiwgMTg1LCAxLCAyNTMsIDIwMiwgMTg2LCAxODUsIDEsIDI0MiwgCi0gICAgMTY3LCAxODYsIDE4NSwgMSwgMjM1LCAxMTIsIDE4NiwgMTg1LCAxLCAyMjMsIDE2NiwgMTg2LCAxODUsIDEsIDI1MiwgMTkxLCAKLSAgICAxODYsIDE4NSwgMSwgMjM1LCAxMDAsIDE4NiwgMTg1LCAxLCAyNDcsIDIxOSwgMTg2LCAxODUsIDEsIDI0MiwgMjIxLCAxODYsIAotICAgIDE4NSwgMSwgMjQ4LCA1LCAxODYsIDE4NSwgMSwgMjUyLCAxNiwgMTg2LCAxODUsIDEsIDIzNCwgMjAsIDIzMiwgMTI4LCAKLSAgICAxODYsIDE4NSwgMSwgMjMzLCAxMTAsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjMwLCAxNzMsIDIzMiwgMTI4LCAxODYsIAotICAgIDE4NSwgMSwgMjI2LCA5MCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMjksIDIyOSwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAKLSAgICAyMTYsIDkxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIyOCwgMjUxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDI0MCwgCi0gICAgMTU0LCAyMzIsIDEyOCwgMTg2LCAxODUsIDI1LCA1LCAyMjYsIDE5NSwgMTg2LCAxODUsIDI1LCA1LCAyMzUsIDI1MywgMTg2LCAKLSAgICAxODUsIDI1LCA1LCAyNTQsIDEyMiwgMTg2LCAxODUsIDI1LCA1LCAyMTEsIDM4LCAxODYsIDE4NSwgMjUsIDUsIDIxOSwgMzIsIAotICAgIDE4NiwgMTg1LCAyNSwgNSwgMjE0LCAxODcsIDE4NiwgMTg1LCAyNSwgNSwgMjUwLCAxMjMsIDE4NiwgMTg1LCAyNSwgNSwgCi0gICAgMjI3LCAxOTEsIDE4NiwgMTg1LCAyNTAsIDEyNCwgMTg2LCAxODUsIDIzMiwgODUsIDIzNSwgMTUwLCAxODYsIDE4NSwgMjU0LCAKLSAgICA0NiwgMjM1LCAxNTAsIDE4NiwgMTg1LCAyMSwgMjEwLCA4NiwgMTg2LCAxODUsIDIxLCAxMTAsIDE4NiwgMTg1LCAyMSwgCi0gICAgMTA1LCAxODYsIDE4NSwgMjEsIDE1OCwgMTg2LCAxODUsIDIxLCAxNjEsIDE4NiwgMTg1LCAyMSwgMTg5LCAxODYsIDE4NSwgCi0gICAgMjEsIDE5NCwgMTg2LCAxODUsIDIxLCAxOTgsIDE4NiwgMTg1LCAyMSwgMTk1LCAxODYsIDE4NSwgMjEsIDIwMCwgMjQsIAotICAgIDE0MywgMjI3LCA3NywgMjQsIDE0MywgMjI3LCA4MiwgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgCisgICAgNzYsIDM5LCAyMDgsIDIzMSwgMjA1LCAyMzQsIDEwOSwgMzksIDIwOCwgMjUsIDI0MCwgMTIwLCAzOSwgMjA4LCAyNSwgMjE0LCAKKyAgICAyMTMsIDM5LCAyMDgsIDI1LCAyMTQsIDIyOSwgMzksIDIwOCwgMjUsIDI1MywgMTkxLCAzOSwgMjA4LCAyNSwgMjUzLCAxNjgsIAorICAgIDM5LCAyMDgsIDI1LCAyNTQsIDEyNCwgMzksIDIwOCwgMjUsIDI1NCwgMTM3LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA1LCAKKyAgICAyNDUsIDE4MSwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNSwgMjI3LCAyMDcsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDUsIDIxNiwgCisgICAgMTU3LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA1LCAyMTksIDQzLCAzOSwgMjA4LCAxNiwgMjM0LCAxNCwgMzksIDIwOCwgMTYsIAorICAgIDIyNywgMjA3LCAzOSwgMjA4LCAxNiwgMjIxLCAyNTQsIDM5LCAyMDgsIDE2LCAyNDEsIDcwLCAyNDEsIDY1LCAzOSwgMjA4LCAKKyAgICAxNiwgMjM0LCAyMywgMjM0LCAyMiwgMTg3LCAxODYsIDEsIDc1LCAxODcsIDE4NiwgMSwgNzYsIDE4NywgMTg2LCAxLCAyNTAsIAorICAgIDE1OCwgMTg3LCAxODYsIDEsIDIyNywgMTY2LCAxODcsIDE4NiwgMSwgMjE1LCAxNTcsIDE4NywgMTg2LCAxLCAyMTUsIDE0NSwgCisgICAgMTg3LCAxODYsIDEsIDI0OCwgMTM2LCAxODcsIDE4NiwgMSwgMjQ4LCAxMjAsIDE4NywgMTg2LCAxLCAyMjgsIDExMSwgMTg3LCAKKyAgICAxODYsIDEsIDIyMCwgMTAzLCAxODcsIDE4NiwgMSwgMjE4LCAyMjQsIDE4NywgMTg2LCAyNSwgNSwgMjM2LCAzNCwgMTg3LCAKKyAgICAxODYsIDI1LCA1LCAyMTQsIDExOCwgMTg3LCAxODYsIDI1LCA1LCAyNTUsIDM4LCAxODcsIDE4NiwgMjUsIDUsIDI1MywgCisgICAgMTkzLCAxODcsIDE4NiwgMjUsIDUsIDI1NSwgMzEsIDE4NywgMTg2LCAyNTAsIDEyNiwgMTg3LCAxODYsIDI1NCwgMjA3LCAKKyAgICAyMzQsIDk5LCAxODcsIDE4NiwgMjU0LCAxMDQsIDE4NywgMTg2LCAzLCAyMjMsIDc1LCA3OCwgMTg3LCAxODYsIDIxMSwgCisgICAgMjA5LCAyMjMsIDc1LCA3OCwgMTg3LCAxODYsIDI1LCA1LCAyMTMsIDE0NywgMTg3LCAxODYsIDIxMywgMTUyLCAyOSwgMywgCisgICAgMjE1LCAxMzgsIDI5LCAzLCAyMTUsIDE0MSwgMjksIDMsIDIxNSwgMTQ0LCAyOSwgMywgMjE1LCAxNDIsIDI5LCAzLCAyMTUsIAorICAgIDE0MywgMjksIDMsIDIxNSwgMTQwLCAyOSwgMywgMjQ4LCAxMTQsIDI5LCAzLCAyNDgsIDExNiwgMjksIDMsIDI0OCwgMTE5LCAKKyAgICAyOSwgMywgMjQ4LCAxMTcsIDI5LCAzLCAyNDgsIDExOCwgMjksIDMsIDI0OCwgMTE1LCAyOSwgMywgMjQ2LCAyOSwgMjksIDMsIAorICAgIDI0NiwgMzIsIDI5LCAzLCAyNDYsIDM4LCAyOSwgMywgMjQ2LCAzNiwgMjksIDMsIDI0NiwgMzcsIDI5LCAzLCAyNDYsIDMwLCAKKyAgICAyOSwgMywgMjUwLCAyMDUsIDI5LCAzLCAyNTAsIDE5OSwgMjksIDMsIDI1MCwgMjAxLCAyOSwgMywgMjUwLCAyMDQsIDI5LCAKKyAgICAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMjAzLCAyOSwgMywgMjUwLCAyMDAsIDI5LCAzLCAyNTIsIDExMiwgMjksIDMsIAorICAgIDI1MiwgOTEsIDI5LCAzLCAyNTIsIDEwMywgMjksIDMsIDI1MiwgMTExLCAyOSwgMywgMjUyLCAxMDYsIDI5LCAzLCAyNTIsIAorICAgIDEwNywgMjksIDMsIDI1MiwgOTUsIDE4NywgMTg2LCAxLCAyMzQsIDIwLCAxODcsIDE4NiwgMSwgMjIxLCAyNTQsIDE4NywgCisgICAgMTg2LCAxLCAyMzMsIDExMCwgMTg3LCAxODYsIDEsIDIzMCwgMTczLCAxODcsIDE4NiwgMSwgMTkwLCAxODcsIDE4NiwgMSwgCisgICAgMTk3LCAxODcsIDE4NiwgMSwgMjUwLCAxMDMsIDE4NywgMTg2LCAxLCAyMTYsIDkxLCAxODcsIDE4NiwgMSwgMjM0LCAxMDIsIAorICAgIDE4NywgMTg2LCAxLCAyMjgsIDI1MSwgMTg3LCAxODYsIDEsIDIxNiwgMTUxLCAxODcsIDE4NiwgMSwgMjEyLCA2MCwgMTg3LCAKKyAgICAxODYsIDEsIDIxMSwgNjksIDE4NywgMTg2LCAxLCAyNDAsIDIxNywgMTg3LCAxODYsIDEsIDIxNCwgMTkwLCAxODcsIDE4NiwgCisgICAgMSwgNzMsIDE4NywgMTg2LCAxLCAyMjUsIDE0MywgMTg3LCAxODYsIDEsIDI1MywgMjAzLCAxODcsIDE4NiwgMSwgMjQyLCAKKyAgICAxNjgsIDE4NywgMTg2LCAxLCAyMzUsIDExMywgMTg3LCAxODYsIDEsIDIyMywgMTY3LCAxODcsIDE4NiwgMSwgMjUyLCAxOTIsIAorICAgIDE4NywgMTg2LCAxLCAyMzUsIDEwMSwgMTg3LCAxODYsIDEsIDI0NywgMjIwLCAxODcsIDE4NiwgMSwgMjQyLCAyMjIsIDE4NywgCisgICAgMTg2LCAxLCAyNDgsIDYsIDE4NywgMTg2LCAxLCAyNTIsIDE3LCAxODcsIDE4NiwgMSwgMjM0LCAyMSwgMjMyLCAxMjksIAorICAgIDE4NywgMTg2LCAxLCAyMzMsIDExMSwgMjMyLCAxMjksIDE4NywgMTg2LCAxLCAyMzAsIDE3NCwgMjMyLCAxMjksIDE4NywgCisgICAgMTg2LCAxLCAyMjYsIDkxLCAyMzIsIDEyOSwgMTg3LCAxODYsIDEsIDIyOSwgMjMwLCAyMzIsIDEyOSwgMTg3LCAxODYsIDEsIAorICAgIDIxNiwgOTIsIDIzMiwgMTI5LCAxODcsIDE4NiwgMSwgMjI4LCAyNTIsIDIzMiwgMTI5LCAxODcsIDE4NiwgMSwgMjQwLCAKKyAgICAxNTUsIDIzMiwgMTI5LCAxODcsIDE4NiwgMjUsIDUsIDIyNiwgMTk2LCAxODcsIDE4NiwgMjUsIDUsIDIzNSwgMjU0LCAxODcsIAorICAgIDE4NiwgMjUsIDUsIDI1NCwgMTIzLCAxODcsIDE4NiwgMjUsIDUsIDIxMSwgMzgsIDE4NywgMTg2LCAyNSwgNSwgMjE5LCAzMywgCisgICAgMTg3LCAxODYsIDI1LCA1LCAyMTQsIDE4NywgMTg3LCAxODYsIDI1LCA1LCAyNTAsIDEyNCwgMTg3LCAxODYsIDI1LCA1LCAKKyAgICAyMjcsIDE5MiwgMTg3LCAxODYsIDI1MCwgMTI1LCAxODcsIDE4NiwgMjMyLCA4NiwgMjM1LCAxNTEsIDE4NywgMTg2LCAyNTQsIAorICAgIDQ3LCAyMzUsIDE1MSwgMTg3LCAxODYsIDIxLCAyMTAsIDg2LCAxODcsIDE4NiwgMjEsIDExMCwgMTg3LCAxODYsIDIxLCAKKyAgICAxMDUsIDE4NywgMTg2LCAyMSwgMTU4LCAxODcsIDE4NiwgMjEsIDE2MSwgMTg3LCAxODYsIDIxLCAxODksIDE4NywgMTg2LCAKKyAgICAyMSwgMTk0LCAxODcsIDE4NiwgMjEsIDE5OCwgMTg3LCAxODYsIDIxLCAxOTUsIDE4NywgMTg2LCAyMSwgMjAwLCAyNCwgCisgICAgMTQzLCAyMjcsIDc4LCAyNCwgMTQzLCAyMjcsIDgzLCAyNCwgMTQzLCAyMTAsIDI0MywgMjQsIDE0MywgMjEwLCAyNDIsIDI0LCAKICAgICAxNDMsIDIxMCwgMjQxLCAyNCwgMTQzLCAyMTUsIDIzLCAyNCwgMTQzLCAyMTUsIDI2LCAyNCwgMTQzLCAyMTAsIDIxMCwgMjQsIAotICAgIDE0MywgMjEwLCAyMDYsIDI0LCAxNDMsIDI0NSwgNTQsIDI0LCAxNDMsIDI0NSwgNTIsIDI0LCAxNDMsIDI0NSwgNTMsIDI0LCAKLSAgICAxNDMsIDI0NSwgNTAsIDI0LCAxNDMsIDI0MCwgMTQ0LCAyNCwgMTQzLCAyNDAsIDE0MywgMjQsIDE0MywgMjQwLCAxNDEsIAotICAgIDI0LCAxNDMsIDI0MCwgMTQyLCAyNCwgMTQzLCAyNDAsIDE0NywgMjQsIDE0MywgMjQwLCAxNDAsIDI0LCAxNDMsIDI0MCwgCi0gICAgMTM5LCAyNCwgMTQzLCAyNDAsIDE0OSwgMjQsIDE0MywgMjU0LCAzMywgMjQsIDE0MywgMjU0LCAzMiwgMjQsIDkwLCAyMjgsIAotICAgIDIxOSwgMjQsIDkwLCAyMjgsIDIyNSwgMjQsIDkwLCAyMTgsIDIwNCwgMjQsIDkwLCAyMTgsIDIwMywgMjQsIDkwLCAyMTYsIAotICAgIDk2LCAyNCwgOTAsIDIxNiwgOTQsIDI0LCA5MCwgMjE2LCA5MywgMjQsIDkwLCAyMTYsIDk5LCAyNCwgOTAsIDIxNiwgMTAwLCAKLSAgICAyNCwgOTAsIDIxNiwgOTIsIDI0LCA5MCwgMjIzLCA1LCAyNCwgOTAsIDIyMywgMjAsIDI0LCA5MCwgMjE4LCAyMTAsIDI0LCAKLSAgICA5MCwgMjIzLCAxNywgMjQsIDkwLCAyMjMsIDcsIDI0LCA5MCwgMjIzLCA5LCAyNCwgOTAsIDIyMiwgMjUyLCAyNCwgOTAsIAotICAgIDIyMiwgMjUzLCAyNCwgOTAsIDIzNCwgMjE4LCAyNCwgOTAsIDIzMCwgMjEyLCAyNCwgOTAsIDIzMCwgMjA2LCAyNCwgOTAsIAotICAgIDIxOCwgMjE0LCAyNCwgOTAsIDIzMCwgMjA5LCAyNCwgOTAsIDIzMCwgMjE1LCAyNCwgOTAsIDIyNSwgNzYsIDI0LCA5MCwgCi0gICAgMjI1LCA4NSwgMjQsIDkwLCAyMjUsIDg5LCAyNCwgOTAsIDIxOCwgMjEyLCAyNCwgOTAsIDIyNSwgNzksIDI0LCA5MCwgMjI1LCAKLSAgICA5MywgMjQsIDkwLCAyMjUsIDk0LCAyNCwgOTAsIDIxOSwgMTQwLCAyNCwgOTAsIDIxOSwgMTQzLCAyNCwgOTAsIDIxOCwgCi0gICAgMjA4LCAyNCwgOTAsIDIxOCwgMjA2LCAyNCwgOTAsIDIxOSwgMTM4LCAyNCwgOTAsIDIxOSwgMTQ2LCAyNCwgOTAsIDIxOSwgCi0gICAgMTQ3LCAyNCwgOTAsIDIxOSwgMTMyLCAyNCwgOTAsIDIxOSwgMTQ1LCAyNCwgOTAsIDIyNiwgMzAsIDI0LCA5MCwgMjI2LCAKLSAgICAzMSwgMjQsIDkwLCAyMTEsIDI0LCAyNCwgOTAsIDIxMSwgMjUsIDI0LCA5MCwgMjUwLCA0NCwgMjQsIDkwLCAyNTAsIDQzLCAKLSAgICAyNCwgOTAsIDIxOCwgMjE5LCAyNCwgOTAsIDIyNSwgMTI4LCAyNCwgOTAsIDIyNSwgMTI3LCA5LCAxNCwgMjM4LCAyNCwgOSwgCi0gICAgMTQsIDIzOCwgMjMsIDksIDE0LCAyMzgsIDIyLCA5LCAxNCwgMjM4LCAyMSwgOSwgMTQsIDIzOCwgMjAsIDksIDE0LCAyMzgsIAotICAgIDE5LCA5LCAxNCwgMjM4LCAxOCwgOSwgMTQsIDIzOCwgMTcsIDksIDE0LCAyMzgsIDE2LCA5LCAxNCwgMjM4LCAxNSwgOSwgCi0gICAgMTQsIDIzOCwgMTQsIDksIDE0LCAyMzgsIDEzLCA5LCAxNCwgMjM4LCAxMiwgOSwgMTQsIDIzOCwgMTEsIDksIDE0LCAyMzgsIAotICAgIDEwLCA5LCAxNCwgMjM4LCA5LCA5LCAxNCwgMjM4LCA4LCA5LCAxNCwgMjM4LCA3LCA5LCAxNCwgMjM4LCA2LCA5LCAxNCwgCi0gICAgMjM4LCA1LCA5LCAxNCwgMjM4LCA0LCA5LCAxNCwgMjM4LCAzLCA5LCAxNCwgMjM4LCAyLCA5LCAxNCwgMjM4LCAxLCA5LCAKLSAgICAxNCwgMjM4LCAwLCA5LCAxNCwgMjM3LCAyNTUsIDksIDE0LCAyMzcsIDI1NCwgOSwgMTQsIDIzNywgMjUzLCA5LCAxNCwgCi0gICAgMjM3LCAyNTIsIDksIDE0LCAyMzcsIDI1MSwgOSwgMTQsIDIzNywgMjUwLCA5LCAxNCwgMjM3LCAyNDksIDksIDE0LCAyMzcsIAotICAgIDI0OCwgOSwgMTQsIDIzNywgMjQ3LCA5LCAxNCwgMjM3LCAyNDYsIDksIDE0LCAyMzcsIDI0NSwgOSwgMTQsIDIzNywgMjQ0LCAKLSAgICA5LCAxNCwgMjM3LCAyNDMsIDksIDE0LCAyMzcsIDI0MiwgOSwgMTQsIDIzNywgMjQxLCA5LCAxNCwgMjM3LCAyNDAsIDksIAotICAgIDE0LCAyMzcsIDIzOSwgOSwgMTQsIDIzNywgMjM4LCA5LCAxNCwgMjM3LCAyMzcsIDksIDE0LCAyMzcsIDIzNiwgOSwgMTQsIAotICAgIDIzNywgMjM1LCA5LCAxNCwgMjM3LCAyMzQsIDksIDE0LCAyMzcsIDIzMywgOSwgMTQsIDIzNywgMjMyLCA5LCAxNCwgMjM3LCAKLSAgICAyMzEsIDksIDE0LCAyMzcsIDIzMCwgOSwgMTQsIDIzNywgMjI5LCA5LCAxNCwgMjM3LCAyMjgsIDksIDE0LCAyMzcsIDIyNywgCi0gICAgOSwgMTQsIDIzNywgMjI2LCA5LCAxNCwgMjM3LCAyMjUsIDksIDE0LCAyMzcsIDIyNCwgOSwgMTQsIDIzNywgMjIzLCA5LCAKLSAgICAxNCwgMjM3LCAyMjIsIDksIDE0LCAyMzcsIDIyMSwgOSwgMTQsIDIzNywgMjIwLCA5LCAxNCwgMjM3LCAyMTksIDksIDE0LCAKLSAgICAyMzcsIDIxOCwgOSwgMTQsIDIzNywgMjE3LCA5LCAxNCwgMjM3LCAyMTYsIDksIDE0LCAyMzcsIDIxNSwgOSwgMTQsIDIzNywgCi0gICAgMjE0LCA5LCAxNCwgMjM3LCAyMTMsIDksIDE0LCAyMzcsIDIxMiwgOSwgMTQsIDIzNywgMjExLCA5LCAxNCwgMjM3LCAyMTAsIAotICAgIDksIDE0LCAyMzcsIDIwOSwgOSwgMTQsIDIzNywgMjA4LCA5LCAxNCwgMjM3LCAyMDcsIDksIDE0LCAyMzcsIDIwNiwgOSwgCi0gICAgMTQsIDIzNywgMjA1LCA5LCAxNCwgMjM3LCAyMDQsIDksIDE0LCAyMzcsIDIwMywgOSwgMTQsIDIzNywgMjAyLCA5LCAxNCwgCi0gICAgMjM3LCAyMDEsIDksIDE0LCAyMzcsIDIwMCwgOSwgMTQsIDIzNywgMTk5LCA5LCAxNCwgMjM3LCAxOTgsIDksIDE0LCAyMzcsIAotICAgIDE5NywgOSwgMTQsIDIzNywgMTk2LCA5LCAxNCwgMjM3LCAxOTUsIDksIDE0LCAyMzcsIDE5NCwgOSwgMTQsIDIzNywgMTkzLCAKLSAgICA5LCAxNCwgMjM3LCAxOTIsIDksIDE0LCAyMzcsIDE5MSwgOSwgMTQsIDIzNywgMTkwLCA5LCAxNCwgMjM3LCAxODksIDksIAotICAgIDE0LCAyMzcsIDE4OCwgOSwgMTQsIDIzNywgMTg3LCA5LCAxNCwgMjM3LCAxODYsIDksIDE0LCAyMzcsIDE4NSwgOSwgMTQsIAotICAgIDIzNywgMTg0LCA5LCAxNCwgMjM3LCAxODMsIDksIDE0LCAyMzcsIDE4MiwgOSwgMTQsIDIzNywgMTgxLCA5LCAxNCwgMjM3LCAKLSAgICAxODAsIDksIDE0LCAyMzcsIDE3OSwgOSwgMTQsIDIzNywgMTc4LCA5LCAxNCwgMjM3LCAxNzcsIDksIDE0LCAyMzcsIDE3NiwgCi0gICAgOSwgMTQsIDIzNywgMTc1LCA5LCAxNCwgMjM3LCAxNzQsIDksIDE0LCAyMzcsIDE3MywgOSwgMTQsIDIzNywgMTcyLCA5LCAKLSAgICAxNCwgMjM3LCAxNzEsIDksIDE0LCAyMzcsIDE3MCwgOSwgMTQsIDIzNywgMTY5LCA5LCAxNCwgMjM3LCAxNjgsIDksIDE0LCAKLSAgICAyMzcsIDE2NywgOSwgMTQsIDIzNywgMTY2LCA5LCAxNCwgMjM3LCAxNjUsIDksIDE0LCAyMzcsIDE2NCwgOSwgMTQsIDIzNywgCi0gICAgMTYzLCA5LCAxNCwgMjM3LCAxNjIsIDksIDE0LCAyMzcsIDE2MSwgOSwgMTQsIDIzNywgMTYwLCA5LCAxNCwgMjM3LCAxNTksIAotICAgIDksIDE0LCAyMzcsIDE1OCwgOSwgMTQsIDIzNywgMTU3LCA5LCAxNCwgMjM3LCAxNTYsIDksIDE0LCAyMzcsIDE1NSwgOSwgCi0gICAgMTQsIDIzNywgMTU0LCA5LCAxNCwgMjM3LCAxNTMsIDksIDE0LCAyMzcsIDE1MiwgOSwgMTQsIDIzNywgMTUxLCA5LCAxNCwgCi0gICAgMjM3LCAxNTAsIDksIDE0LCAyMzcsIDE0OSwgOSwgMTQsIDIzNywgMTQ4LCA5LCAxNCwgMjM3LCAxNDcsIDksIDE0LCAyMzcsIAotICAgIDE0NiwgOSwgMTQsIDIzNywgMTQ1LCA5LCAxNCwgMjM3LCAxNDQsIDksIDE0LCAyMzcsIDE0MywgOSwgMTQsIDIzNywgMTQyLCAKLSAgICA5LCAxNCwgMjM3LCAxNDEsIDksIDE0LCAyMzcsIDE0MCwgOSwgMTQsIDIzNywgMTM5LCA5LCAxNCwgMjM3LCAxMzgsIDksIAotICAgIDE0LCAyMzcsIDEzNywgOSwgMTQsIDIzNywgMTM2LCA5LCAxNCwgMjM3LCAxMzUsIDksIDE0LCAyMzcsIDEzNCwgOSwgMTQsIAotICAgIDIzNywgMTMzLCA5LCAxNCwgMjM3LCAxMzIsIDksIDE0LCAyMzcsIDEzMSwgOSwgMTQsIDIzNywgMTMwLCA5LCAxNCwgMjM3LCAKLSAgICAxMjksIDksIDE0LCAyMzcsIDEyOCwgOSwgMTQsIDIzNywgMTI3LCA5LCAxNCwgMjM3LCAxMjYsIDksIDE0LCAyMzcsIDEyNSwgCi0gICAgOSwgMTQsIDIzNywgMTI0LCA5LCAxNCwgMjM3LCAxMjMsIDksIDE0LCAyMzcsIDEyMiwgOSwgMTQsIDIzNywgMTIxLCA5LCAKLSAgICAxNCwgMjM3LCAxMjAsIDksIDE0LCAyMzcsIDExOSwgOSwgMTQsIDIzNywgMTE4LCA5LCAxNCwgMjM3LCAxMTcsIDksIDE0LCAKLSAgICAyMzcsIDExNiwgOSwgMTQsIDIzNywgMTE1LCA5LCAxNCwgMjM3LCAxMTQsIDksIDE0LCAyMzcsIDExMywgOSwgMTQsIDIzNywgCi0gICAgMTEyLCA5LCAxNCwgMjM3LCAxMTEsIDksIDE0LCAyMzcsIDExMCwgOSwgMTQsIDIzNywgMTA5LCA5LCAxNCwgMjM3LCAxMDgsIAotICAgIDksIDE0LCAyMzcsIDEwNywgOSwgMTQsIDIzNywgMTA2LCA5LCAxNCwgMjM3LCAxMDUsIDksIDE0LCAyMzcsIDEwNCwgOSwgCi0gICAgMTQsIDIzNywgMTAzLCA5LCAxNCwgMjM3LCAxMDIsIDksIDE0LCAyMzcsIDEwMSwgOSwgMTQsIDIzNywgMTAwLCA5LCAxNCwgCi0gICAgMjM3LCA5OSwgOSwgMTQsIDIzNywgOTgsIDksIDE0LCAyMzcsIDk3LCA5LCAxNCwgMjM3LCA5NiwgOSwgMTQsIDIzNywgOTUsIAotICAgIDksIDE0LCAyMzcsIDk0LCA5LCAxNCwgMjM3LCA5MywgOSwgMTQsIDIzNywgOTIsIDksIDE0LCAyMzcsIDkxLCA5LCAxNCwgCi0gICAgMjM3LCA5MCwgOSwgMTQsIDIzNywgODksIDksIDE0LCAyMzcsIDg4LCA5LCAxNCwgMjM3LCA4NywgOSwgMTQsIDIzNywgODYsIAotICAgIDksIDE0LCAyMzcsIDg1LCA5LCAxNCwgMjM3LCA4NCwgOSwgMTQsIDIzNywgODMsIDksIDE0LCAyMzcsIDgyLCA5LCAxNCwgCi0gICAgMjM3LCA4MSwgOSwgMTQsIDIzNywgODAsIDksIDE0LCAyMzcsIDc5LCA5LCAxNCwgMjM3LCA3OCwgOSwgMTQsIDIzNywgNzcsIAotICAgIDksIDE0LCAyMzcsIDc2LCA5LCAxNCwgMjM3LCA3NSwgOSwgMTQsIDIzNywgNzQsIDksIDE0LCAyMzcsIDczLCA5LCAxNCwgCi0gICAgMjM3LCA3MiwgOSwgMTQsIDIzNywgNzEsIDksIDE0LCAyMzcsIDcwLCA5LCAxNCwgMjM3LCA2OSwgOSwgMTQsIDIzNywgNjgsIAotICAgIDksIDE0LCAyMzcsIDY3LCA5LCAxNCwgMjM3LCA2NiwgOSwgMTQsIDIzNywgNjUsIDksIDE0LCAyMzcsIDY0LCA5LCAxNCwgCi0gICAgMjM3LCA2MywgOSwgMTQsIDIzNywgNjIsIDksIDE0LCAyMzcsIDYxLCA5LCAxNCwgMjM3LCA2MCwgOSwgMTQsIDIzNywgNTksIAotICAgIDksIDE0LCAyMzcsIDU4LCA5LCAxNCwgMjM3LCA1NywgOSwgMTQsIDIzNywgNTYsIDksIDE0LCAyMzcsIDU1LCA5LCAxNCwgCi0gICAgMjM3LCA1NCwgOSwgMTQsIDIzNywgNTMsIDksIDE0LCAyMzcsIDUyLCA5LCAxNCwgMjM3LCA1MSwgOSwgMTQsIDIzNywgNTAsIAotICAgIDksIDE0LCAyMzcsIDQ5LCA5LCAxNCwgMjM3LCA0OCwgOSwgMTQsIDIzNywgNDcsIDksIDE0LCAyMzcsIDQ2LCA5LCAxNCwgCi0gICAgMjM3LCA0NSwgOSwgMTQsIDIzNywgNDQsIDksIDE0LCAyMzcsIDQzLCA5LCAxNCwgMjM3LCA0MiwgOSwgMTQsIDIzNywgNDEsIAotICAgIDksIDE0LCAyMzcsIDQwLCA5LCAxNCwgMjM3LCAzOSwgOSwgMTQsIDIzNywgMzgsIDksIDE0LCAyMzcsIDM3LCA5LCAxNCwgCi0gICAgMjM3LCAzNiwgOSwgMTQsIDIzNywgMzUsIDksIDE0LCAyMzcsIDM0LCA5LCAxNCwgMjM3LCAzMywgOSwgMTQsIDIzNywgMzIsIAotICAgIDksIDE0LCAyMzcsIDMxLCA5LCAxNCwgMjM3LCAzMCwgOSwgMTQsIDIzNywgMjksIDksIDE0LCAyMzcsIDI4LCA5LCAxNCwgCi0gICAgMjM3LCAyNywgOSwgMTQsIDIzNywgMjYsIDksIDE0LCAyMzcsIDI1LCA5LCAxNCwgMjM3LCAyNCwgOSwgMTQsIDIzNywgMjMsIAotICAgIDksIDE0LCAyMzcsIDIyLCA5LCAxNCwgMjM3LCAyMSwgOSwgMTQsIDIzNywgMjAsIDksIDE0LCAyMzcsIDE5LCA5LCAxNCwgCi0gICAgMjM3LCAxOCwgOSwgMTQsIDIzNywgMTcsIDksIDE0LCAyMzcsIDE2LCA5LCAxNCwgMjM3LCAxNSwgOSwgMTQsIDIzNywgMTQsIAotICAgIDksIDE0LCAyMzcsIDEzLCA5LCAxNCwgMjM3LCAxMiwgOSwgMTQsIDIzNywgMTEsIDksIDE0LCAyMzcsIDEwLCA5LCAxNCwgCi0gICAgMjM3LCA5LCA5LCAxNCwgMjM3LCA4LCA5LCAxNCwgMjM3LCA3LCA5LCAxNCwgMjM3LCA2LCA5LCAxNCwgMjM3LCA1LCA5LCAKLSAgICAxNCwgMjM3LCA0LCA5LCAxNCwgMjM3LCAzLCA5LCAxNCwgMjM3LCAyLCA5LCAxNCwgMjM3LCAxLCA5LCAxNCwgMjM3LCAwLCAKLSAgICA5LCAxNCwgMjM2LCAyNTUsIDksIDE0LCAyMzYsIDI1NCwgOSwgMTQsIDIzNiwgMjUzLCA5LCAxNCwgMjM2LCAyNTIsIDksIAotICAgIDE0LCAyMzYsIDI1MSwgOSwgMTQsIDIzNiwgMjUwLCA5LCAxNCwgMjM2LCAyNDksIDksIDE0LCAyMzYsIDI0OCwgOSwgMTQsIAotICAgIDIzNiwgMjQ3LCA5LCAxNCwgMjM2LCAyNDYsIDksIDE0LCAyMzYsIDI0NSwgOSwgMTQsIDIzNiwgMjQ0LCA5LCAxNCwgMjM2LCAKLSAgICAyNDMsIDksIDE0LCAyMzYsIDI0MiwgOSwgMTQsIDIzNiwgMjQxLCA5LCAxNCwgMjM2LCAyNDAsIDksIDE0LCAyMzYsIDIzOSwgCi0gICAgOSwgMTQsIDIzNiwgMjM4LCA5LCAxNCwgMjM2LCAyMzcsIDksIDE0LCAyMzYsIDIzNiwgOSwgMTQsIDIzNiwgMjM1LCA5LCAKLSAgICAxNCwgMjM2LCAyMzQsIDksIDE0LCAyMzYsIDIzMywgOSwgMTQsIDIzNiwgMjMyLCA5LCAxNCwgMjM2LCAyMzEsIDksIDE0LCAKLSAgICAyMzYsIDIzMCwgOSwgMTQsIDIzNiwgMjI5LCA5LCAxNCwgMjM2LCAyMjgsIDksIDE0LCAyMzYsIDIyNywgOSwgMTQsIDIzNiwgCi0gICAgMjI2LCA5LCAxNCwgMjM2LCAyMjUsIDksIDE0LCAyMzYsIDIyNCwgOSwgMTQsIDIzNiwgMjIzLCA5LCAxNCwgMjM2LCAyMjIsIAotICAgIDksIDE0LCAyMzYsIDIyMSwgOSwgMTQsIDIzNiwgMjIwLCA5LCAxNCwgMjM2LCAyMTksIDksIDE0LCAyMzYsIDIxOCwgOSwgCi0gICAgMTQsIDIzNiwgMjE3LCA5LCAxNCwgMjM2LCAyMTYsIDksIDE0LCAyMzYsIDIxNSwgOSwgMTQsIDIzNiwgMjE0LCA5LCAxNCwgCi0gICAgMjM2LCAyMTMsIDksIDE0LCAyMzYsIDIxMiwgOSwgMTQsIDIzNiwgMjExLCA5LCAxNCwgMjM2LCAyMTAsIDksIDE0LCAyMzYsIAotICAgIDIwOSwgOSwgMTQsIDIzNiwgMjA4LCA5LCAxNCwgMjM2LCAyMDcsIDksIDE0LCAyMzYsIDIwNiwgOSwgMTQsIDIzNiwgMjA1LCAKLSAgICA5LCAxNCwgMjM2LCAyMDQsIDksIDE0LCAyMzYsIDIwMywgOSwgMTQsIDIzNiwgMjAyLCA5LCAxNCwgMjM2LCAyMDEsIDksIAotICAgIDE0LCAyMzYsIDIwMCwgOSwgMTQsIDIzNiwgMTk5LCA5LCAxNCwgMjM2LCAxOTgsIDksIDE0LCAyMzYsIDE5NywgOSwgMTQsIAotICAgIDIzNiwgMTk2LCA5LCAxNCwgMjM2LCAxOTUsIDksIDE0LCAyMzYsIDE5NCwgOSwgMTQsIDIzNiwgMTkzLCA5LCAxNCwgMjM2LCAKLSAgICAxOTIsIDksIDE0LCAyMzYsIDE5MSwgOSwgMTQsIDIzNiwgMTkwLCA5LCAxNCwgMjM2LCAxODksIDksIDE0LCAyMzYsIDE4OCwgCi0gICAgOSwgMTQsIDIzNiwgMTg3LCA5LCAxNCwgMjM2LCAxODYsIDksIDE0LCAyMzYsIDE4NSwgOSwgMTQsIDIzNiwgMTg0LCA5LCAKLSAgICAxNCwgMjM2LCAxODMsIDksIDE0LCAyMzYsIDE4MiwgOSwgMTQsIDIzNiwgMTgxLCA5LCAxNCwgMjM2LCAxODAsIDksIDE0LCAKLSAgICAyMzYsIDE3OSwgOSwgMTQsIDIzNiwgMTc4LCA5LCAxNCwgMjM2LCAxNzcsIDksIDE0LCAyMzYsIDE3NiwgOSwgMTQsIDIzNiwgCi0gICAgMTc1LCA5LCAxNCwgMjM2LCAxNzQsIDksIDE0LCAyMzYsIDE3MywgOSwgMTQsIDIzNiwgMTcyLCA5LCAxNCwgMjM2LCAxNzEsIAotICAgIDksIDE0LCAyMzYsIDE3MCwgOSwgMTQsIDIzNiwgMTY5LCA5LCAxNCwgMjM2LCAxNjgsIDksIDE0LCAyMzYsIDE2NywgOSwgCi0gICAgMTQsIDIzNiwgMTY2LCA5LCAxNCwgMjM2LCAxNjUsIDksIDE0LCAyMzYsIDE2NCwgOSwgMTQsIDIzNiwgMTYzLCA5LCAxNCwgCi0gICAgMjM2LCAxNjIsIDksIDE0LCAyMzYsIDE2MSwgOSwgMTQsIDIzNiwgMTYwLCA5LCAxNCwgMjM2LCAxNTksIDksIDE0LCAyMzYsIAotICAgIDE1OCwgOSwgMTQsIDIzNiwgMTU3LCA5LCAxNCwgMjM2LCAxNTYsIDksIDE0LCAyMzYsIDE1NSwgOSwgMTQsIDIzNiwgMTU0LCAKLSAgICA5LCAxNCwgMjM2LCAxNTMsIDksIDE0LCAyMzYsIDE1MiwgOSwgMTQsIDIzNiwgMTUxLCA5LCAxNCwgMjM2LCAxNTAsIDksIAotICAgIDE0LCAyMzYsIDE0OSwgOSwgMTQsIDIzNiwgMTQ4LCA5LCAxNCwgMjM2LCAxNDcsIDksIDE0LCAyMzYsIDE0NiwgOSwgMTQsIAotICAgIDIzNiwgMTQ1LCA5LCAxNCwgMjM2LCAxNDQsIDksIDE0LCAyMzYsIDE0MywgOSwgMTQsIDIzNiwgMTQyLCA5LCAxNCwgMjM2LCAKLSAgICAxNDEsIDksIDE0LCAyMzYsIDE0MCwgOSwgMTQsIDIzNiwgMTM5LCA5LCAxNCwgMjM2LCAxMzgsIDksIDE0LCAyMzYsIDEzNywgCi0gICAgOSwgMTQsIDIzNiwgMTM2LCA5LCAxNCwgMjM2LCAxMzUsIDksIDE0LCAyMzYsIDEzNCwgOSwgMTQsIDIzNiwgMTMzLCA5LCAKLSAgICAxNCwgMjM2LCAxMzIsIDksIDE0LCAyMzYsIDEzMSwgOSwgMTQsIDIzNiwgMTMwLCA5LCAxNCwgMjM2LCAxMjksIDksIDE0LCAKLSAgICAyMzYsIDEyOCwgOSwgMTQsIDIzNiwgMTI3LCA5LCAxNCwgMjM2LCAxMjYsIDksIDE0LCAyMzYsIDEyNSwgOSwgMTQsIDIzNiwgCi0gICAgMTI0LCA5LCAxNCwgMjM2LCAxMjMsIDksIDE0LCAyMzYsIDEyMiwgOSwgMTQsIDIzNiwgMTIxLCA5LCAxNCwgMjM2LCAxMjAsIAotICAgIDksIDE0LCAyMzYsIDExOSwgOSwgMTQsIDIzNiwgMTE4LCA5LCAxNCwgMjM2LCAxMTcsIDksIDE0LCAyMzYsIDExNiwgOSwgCi0gICAgMTQsIDIzNiwgMTE1LCA5LCAxNCwgMjM2LCAxMTQsIDksIDE0LCAyMzYsIDExMywgOSwgMTQsIDIzNiwgMTEyLCA5LCAxNCwgCi0gICAgMjM2LCAxMTEsIDksIDE0LCAyMzYsIDExMCwgOSwgMTQsIDIzNiwgMTA5LCA5LCAxNCwgMjM2LCAxMDgsIDksIDE0LCAyMzYsIAotICAgIDEwNywgOSwgMTQsIDIzNiwgMTA2LCA5LCAxNCwgMjM2LCAxMDUsIDksIDE0LCAyMzYsIDEwNCwgOSwgMTQsIDIzNiwgMTAzLCAKLSAgICA5LCAxNCwgMjM2LCAxMDIsIDksIDE0LCAyMzYsIDEwMSwgOSwgMTQsIDIzNiwgMTAwLCA5LCAxNCwgMjM2LCA5OSwgOSwgMTQsIAotICAgIDIzNiwgOTgsIDksIDE0LCAyMzYsIDk3LCA5LCAxNCwgMjM2LCA5NiwgOSwgMTQsIDIzNiwgOTUsIDksIDE0LCAyMzYsIDk0LCAKLSAgICA5LCAxNCwgMjM2LCA5MywgOSwgMTQsIDIzNiwgOTIsIDksIDE0LCAyMzYsIDkxLCA5LCAxNCwgMjM2LCA5MCwgOSwgMTQsIAotICAgIDIzNiwgODksIDksIDE0LCAyMzYsIDg4LCA5LCAxNCwgMjM2LCA4NywgOSwgMTQsIDIzNiwgODYsIDksIDE0LCAyMzYsIDg1LCAKLSAgICA5LCAxNCwgMjM2LCA4NCwgOSwgMTQsIDIzNiwgODMsIDksIDE0LCAyMzYsIDgyLCA5LCAxNCwgMjM2LCA4MSwgOSwgMTQsIAotICAgIDIzNiwgODAsIDksIDE0LCAyMzYsIDc5LCA5LCAxNCwgMjM2LCA3OCwgOSwgMTQsIDIzNiwgNzcsIDksIDE0LCAyMzYsIDc2LCAKLSAgICA5LCAxNCwgMjM2LCA3NSwgOSwgMTQsIDIzNiwgNzQsIDksIDE0LCAyMzYsIDczLCA5LCAxNCwgMjM2LCA3MiwgOSwgMTQsIAotICAgIDIzNiwgNzEsIDksIDE0LCAyMzYsIDcwLCA5LCAxNCwgMjM2LCA2OSwgOSwgMTQsIDIzNiwgNjgsIDksIDE0LCAyMzYsIDY3LCAKLSAgICA5LCAxNCwgMjM2LCA2NiwgOSwgMTQsIDIzNiwgNjUsIDcsIDQsIDI3LCAyNDQsIDEyNSwgNywgNCwgMjcsIDI0NCwgMTIxLCAKLSAgICA3LCA0LCAyNywgMjQ0LCA3NiwgNywgNCwgMjcsIDI0NCwgMTI0LCA3LCA0LCAyNywgMjQ0LCAxMjMsIDcsIDQsIDI3LCAxOTksIAotICAgIDIyMiwgOTIsIDIxNywgMTUyLCA3LCA0LCAyNywgMjE4LCAxNjgsIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIyOCwgMzksIDE1MCwgCi0gICAgNCwgMjcsIDIzMSwgNTksIDI0NSwgMjEzLCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMzUsIDIyNywgMTUwLCA0LCAyNywgMjEzLCAKLSAgICAxODAsIDIyOCwgMzksIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIxMSwgMTYwLCA5NCwgMSwgMjEwLCAyMzQsIDIsIDI0MSwgCi0gICAgMTU4LCA5NCwgMjI1LCAxMSwgMjM1LCA1MCwgMjE0LCAxMSwgOTQsIDI3LCAyMTEsIDYsIDIxMCwgMjM0LCAyMTAsIDIzNCwgCi0gICAgMjI1LCAyMzksIDk0LCAxLCAyNTQsIDEzOSwgMjUzLCAxNjIsIDk0LCAxLCAyMTEsIDI0NywgMjU0LCAxNzAsIDk0LCAxLCAKLSAgICAyMTEsIDI0NywgMjQ4LCAxODksIDk0LCAxLCAyMTEsIDI0NywgMjQxLCAyMzgsIDk0LCAxLCAyMTEsIDI0NywgMjM0LCAyNTAsIAotICAgIDk0LCAxLCAyMTEsIDI0NywgMjMzLCA5NCwgOTQsIDEsIDIxMSwgMjQ3LCA0MCwgMjMxLCA2NSwgOTQsIDEsIDIxMSwgMjQ3LCAKLSAgICAyMjMsIDY3LCA5NCwgMSwgMjExLCAyNDcsIDIxNywgMzgsIDk0LCAxLCAyNTQsIDEzOSwgOTYsIDUwLCA5NCwgMSwgMjIwLCAKLSAgICAyMSwgMiwgMjIwLCAyMSwgMjQ3LCAxMjAsIDk0LCAxLCAyMjAsIDIxLCAyLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAxLCAKLSAgICAyMjAsIDIxLCAyLCAyNDgsIDIwOCwgMjIsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgMSwgMjIwLCAyMSwgMiwgMjQ4LCAyMDgsIAotICAgIDIyLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAxLCAxMTIsIDIsIDIyNSwgMjM5LCA5NCwgMSwgMTEyLCAyLCAyMjQsIDc2LCAKLSAgICA5NCwgMSwgMTEyLCAyLCAyMzEsIDE3MSwgOTQsIDEsIDI1MiwgMjksIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjQyLCAyMDIsIDIsIAotICAgIDI0OCwgMjA3LCA5NCwgMSwgMjQ4LCAxOTAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjQxLCAyMzksIDIsIDIzMSwgMTcxLCA5NCwgCi0gICAgMSwgMjE0LCA0LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxMCwgOTgsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjE2LCAyMzEsIDIsIAotICAgIDI0OCwgMjA3LCA5NCwgMSwgMjEwLCAyMzQsIDIsIDI0OCwgMjA3LCA5NCwgMSwgNDAsIDIzNCwgMjUxLCAyLCAyNDgsIDIwNywgCi0gICAgOTQsIDEsIDIzNCwgMjUxLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIzMywgOTUsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjMxLCAKLSAgICA2NiwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjcsIDE5NSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjEsIDI1MCwgMiwgMjQ4LCAKLSAgICAyMDcsIDk0LCAxLCA0MCwgMjI1LCAyMjIsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI1LCAyMjIsIDIsIDI0OCwgMjA3LCA5NCwgCi0gICAgMSwgMjE1LCAxODAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI0LCA0MCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjMsIDY4LCAyLCAKLSAgICAyNDgsIDIwNywgOTQsIDEsIDIyMCwgMjEsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjE3LCAzOSwgMiwgMjQ4LCAyMDcsIDk0LCAKLSAgICAxLCAyMTQsIDQsIDIsIDI0MSwgNjEsIDk0LCAxLCAyNTIsIDI5LCAyLCAyMjMsIDE2OSwgOTQsIDEsIDIzNCwgMjUxLCAyLCAKLSAgICAyMjMsIDE2OSwgOTQsIDEsIDIyNSwgMjIyLCAyLCAyMjMsIDE2OSwgOTQsIDI3LCAxMTIsIDIzMywgOTQsIDEwLCAxLCAxMTIsIAotICAgIDIxMiwgNDcsIDUzLCAxNywgMTAsIDEsIDExMiwgMjEyLCA0NywgNDAsIDE3LCAxMCwgMSwgMjUyLCA2NSwgNTMsIDE3LCAxMCwgCi0gICAgMSwgMjUyLCA2NSwgNDAsIDE3LCAxMCwgMSwgMjUyLCA2NSwgNjUsIDE3LCAxMCwgMSwgMjUyLCA2NSwgMTQ3LCAxNywgMTAsIAotICAgIDEsIDIyNSwgMjA2LCA1MywgMTcsIDEwLCAxLCAyMjUsIDIwNiwgNDAsIDE3LCAxMCwgMSwgMjI1LCAyMDYsIDY1LCAxNywgCi0gICAgMTAsIDEsIDIyNSwgMjA2LCAxNDcsIDE3LCAxMCwgMSwgMjUyLCA1MywgNTMsIDE3LCAxMCwgMSwgMjUyLCA1MywgNDAsIDE3LCAKLSAgICAxMCwgMSwgMjUyLCA1MywgNjUsIDE3LCAxMCwgMSwgMjUyLCA1MywgMTQ3LCAxNywgMTAsIDEsIDIxNSwgMTQ3LCA1MywgMTcsIAotICAgIDEwLCAxLCAyMTUsIDE0NywgNDAsIDE3LCAxMCwgMSwgMjE1LCAxNDcsIDY1LCAxNywgMTAsIDEsIDIxNSwgMTQ3LCAxNDcsIAotICAgIDE3LCAxMCwgMSwgMjE3LCA2LCA1MywgMTcsIDEwLCAxLCAyMTcsIDYsIDQwLCAxNywgMTAsIDEsIDIxNywgNiwgNjUsIDE3LCAKLSAgICAxMCwgMSwgMjE3LCA2LCAxNDcsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDUzLCAxNywgMTAsIDEsIDIxNSwgMTQ5LCA0MCwgMTcsIAotICAgIDEwLCAxLCAyMTUsIDE0OSwgNjUsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDE0NywgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNTMsIAorICAgIDE0MywgMjEwLCAyMDYsIDI0LCAxNDMsIDI0NSwgNTUsIDI0LCAxNDMsIDI0NSwgNTMsIDI0LCAxNDMsIDI0NSwgNTQsIDI0LCAKKyAgICAxNDMsIDI0NSwgNTEsIDI0LCAxNDMsIDI0MCwgMTQ1LCAyNCwgMTQzLCAyNDAsIDE0NCwgMjQsIDE0MywgMjQwLCAxNDIsIAorICAgIDI0LCAxNDMsIDI0MCwgMTQzLCAyNCwgMTQzLCAyNDAsIDE0OCwgMjQsIDE0MywgMjQwLCAxNDEsIDI0LCAxNDMsIDI0MCwgCisgICAgMTQwLCAyNCwgMTQzLCAyNDAsIDE1MCwgMjQsIDE0MywgMjU0LCAzNCwgMjQsIDE0MywgMjU0LCAzMywgMjQsIDkwLCAyMjgsIAorICAgIDIyMCwgMjQsIDkwLCAyMjgsIDIyNiwgMjQsIDkwLCAyMTgsIDIwNSwgMjQsIDkwLCAyMTgsIDIwNCwgMjQsIDkwLCAyMTYsIAorICAgIDk3LCAyNCwgOTAsIDIxNiwgOTUsIDI0LCA5MCwgMjE2LCA5NCwgMjQsIDkwLCAyMTYsIDEwMCwgMjQsIDkwLCAyMTYsIDEwMSwgCisgICAgMjQsIDkwLCAyMTYsIDkzLCAyNCwgOTAsIDIyMywgNiwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgCisgICAgOTAsIDIyMywgMTgsIDI0LCA5MCwgMjIzLCA4LCAyNCwgOTAsIDIyMywgMTAsIDI0LCA5MCwgMjIyLCAyNTMsIDI0LCA5MCwgCisgICAgMjIyLCAyNTQsIDI0LCA5MCwgMjM0LCAyMTksIDI0LCA5MCwgMjMwLCAyMTMsIDI0LCA5MCwgMjMwLCAyMDcsIDI0LCA5MCwgCisgICAgMjE4LCAyMTUsIDI0LCA5MCwgMjMwLCAyMTAsIDI0LCA5MCwgMjMwLCAyMTYsIDI0LCA5MCwgMjI1LCA3NywgMjQsIDkwLCAKKyAgICAyMjUsIDg2LCAyNCwgOTAsIDIyNSwgOTAsIDI0LCA5MCwgMjE4LCAyMTMsIDI0LCA5MCwgMjI1LCA4MCwgMjQsIDkwLCAyMjUsIAorICAgIDk0LCAyNCwgOTAsIDIyNSwgOTUsIDI0LCA5MCwgMjE5LCAxNDEsIDI0LCA5MCwgMjE5LCAxNDQsIDI0LCA5MCwgMjE4LCAKKyAgICAyMDksIDI0LCA5MCwgMjE4LCAyMDcsIDI0LCA5MCwgMjE5LCAxMzksIDI0LCA5MCwgMjE5LCAxNDcsIDI0LCA5MCwgMjE5LCAKKyAgICAxNDgsIDI0LCA5MCwgMjE5LCAxMzMsIDI0LCA5MCwgMjE5LCAxNDYsIDI0LCA5MCwgMjI2LCAzMSwgMjQsIDkwLCAyMjYsIAorICAgIDMyLCAyNCwgOTAsIDIxMSwgMjQsIDI0LCA5MCwgMjExLCAyNSwgMjQsIDkwLCAyNTAsIDQ1LCAyNCwgOTAsIDI1MCwgNDQsIAorICAgIDI0LCA5MCwgMjE4LCAyMjAsIDI0LCA5MCwgMjI1LCAxMjksIDI0LCA5MCwgMjI1LCAxMjgsIDksIDE0LCAyMzgsIDI1LCA5LCAKKyAgICAxNCwgMjM4LCAyNCwgOSwgMTQsIDIzOCwgMjMsIDksIDE0LCAyMzgsIDIyLCA5LCAxNCwgMjM4LCAyMSwgOSwgMTQsIDIzOCwgCisgICAgMjAsIDksIDE0LCAyMzgsIDE5LCA5LCAxNCwgMjM4LCAxOCwgOSwgMTQsIDIzOCwgMTcsIDksIDE0LCAyMzgsIDE2LCA5LCAKKyAgICAxNCwgMjM4LCAxNSwgOSwgMTQsIDIzOCwgMTQsIDksIDE0LCAyMzgsIDEzLCA5LCAxNCwgMjM4LCAxMiwgOSwgMTQsIDIzOCwgCisgICAgMTEsIDksIDE0LCAyMzgsIDEwLCA5LCAxNCwgMjM4LCA5LCA5LCAxNCwgMjM4LCA4LCA5LCAxNCwgMjM4LCA3LCA5LCAxNCwgCisgICAgMjM4LCA2LCA5LCAxNCwgMjM4LCA1LCA5LCAxNCwgMjM4LCA0LCA5LCAxNCwgMjM4LCAzLCA5LCAxNCwgMjM4LCAyLCA5LCAKKyAgICAxNCwgMjM4LCAxLCA5LCAxNCwgMjM4LCAwLCA5LCAxNCwgMjM3LCAyNTUsIDksIDE0LCAyMzcsIDI1NCwgOSwgMTQsIDIzNywgCisgICAgMjUzLCA5LCAxNCwgMjM3LCAyNTIsIDksIDE0LCAyMzcsIDI1MSwgOSwgMTQsIDIzNywgMjUwLCA5LCAxNCwgMjM3LCAyNDksIAorICAgIDksIDE0LCAyMzcsIDI0OCwgOSwgMTQsIDIzNywgMjQ3LCA5LCAxNCwgMjM3LCAyNDYsIDksIDE0LCAyMzcsIDI0NSwgOSwgCisgICAgMTQsIDIzNywgMjQ0LCA5LCAxNCwgMjM3LCAyNDMsIDksIDE0LCAyMzcsIDI0MiwgOSwgMTQsIDIzNywgMjQxLCA5LCAxNCwgCisgICAgMjM3LCAyNDAsIDksIDE0LCAyMzcsIDIzOSwgOSwgMTQsIDIzNywgMjM4LCA5LCAxNCwgMjM3LCAyMzcsIDksIDE0LCAyMzcsIAorICAgIDIzNiwgOSwgMTQsIDIzNywgMjM1LCA5LCAxNCwgMjM3LCAyMzQsIDksIDE0LCAyMzcsIDIzMywgOSwgMTQsIDIzNywgMjMyLCAKKyAgICA5LCAxNCwgMjM3LCAyMzEsIDksIDE0LCAyMzcsIDIzMCwgOSwgMTQsIDIzNywgMjI5LCA5LCAxNCwgMjM3LCAyMjgsIDksIAorICAgIDE0LCAyMzcsIDIyNywgOSwgMTQsIDIzNywgMjI2LCA5LCAxNCwgMjM3LCAyMjUsIDksIDE0LCAyMzcsIDIyNCwgOSwgMTQsIAorICAgIDIzNywgMjIzLCA5LCAxNCwgMjM3LCAyMjIsIDksIDE0LCAyMzcsIDIyMSwgOSwgMTQsIDIzNywgMjIwLCA5LCAxNCwgMjM3LCAKKyAgICAyMTksIDksIDE0LCAyMzcsIDIxOCwgOSwgMTQsIDIzNywgMjE3LCA5LCAxNCwgMjM3LCAyMTYsIDksIDE0LCAyMzcsIDIxNSwgCisgICAgOSwgMTQsIDIzNywgMjE0LCA5LCAxNCwgMjM3LCAyMTMsIDksIDE0LCAyMzcsIDIxMiwgOSwgMTQsIDIzNywgMjExLCA5LCAKKyAgICAxNCwgMjM3LCAyMTAsIDksIDE0LCAyMzcsIDIwOSwgOSwgMTQsIDIzNywgMjA4LCA5LCAxNCwgMjM3LCAyMDcsIDksIDE0LCAKKyAgICAyMzcsIDIwNiwgOSwgMTQsIDIzNywgMjA1LCA5LCAxNCwgMjM3LCAyMDQsIDksIDE0LCAyMzcsIDIwMywgOSwgMTQsIDIzNywgCisgICAgMjAyLCA5LCAxNCwgMjM3LCAyMDEsIDksIDE0LCAyMzcsIDIwMCwgOSwgMTQsIDIzNywgMTk5LCA5LCAxNCwgMjM3LCAxOTgsIAorICAgIDksIDE0LCAyMzcsIDE5NywgOSwgMTQsIDIzNywgMTk2LCA5LCAxNCwgMjM3LCAxOTUsIDksIDE0LCAyMzcsIDE5NCwgOSwgCisgICAgMTQsIDIzNywgMTkzLCA5LCAxNCwgMjM3LCAxOTIsIDksIDE0LCAyMzcsIDE5MSwgOSwgMTQsIDIzNywgMTkwLCA5LCAxNCwgCisgICAgMjM3LCAxODksIDksIDE0LCAyMzcsIDE4OCwgOSwgMTQsIDIzNywgMTg3LCA5LCAxNCwgMjM3LCAxODYsIDksIDE0LCAyMzcsIAorICAgIDE4NSwgOSwgMTQsIDIzNywgMTg0LCA5LCAxNCwgMjM3LCAxODMsIDksIDE0LCAyMzcsIDE4MiwgOSwgMTQsIDIzNywgMTgxLCAKKyAgICA5LCAxNCwgMjM3LCAxODAsIDksIDE0LCAyMzcsIDE3OSwgOSwgMTQsIDIzNywgMTc4LCA5LCAxNCwgMjM3LCAxNzcsIDksIAorICAgIDE0LCAyMzcsIDE3NiwgOSwgMTQsIDIzNywgMTc1LCA5LCAxNCwgMjM3LCAxNzQsIDksIDE0LCAyMzcsIDE3MywgOSwgMTQsIAorICAgIDIzNywgMTcyLCA5LCAxNCwgMjM3LCAxNzEsIDksIDE0LCAyMzcsIDE3MCwgOSwgMTQsIDIzNywgMTY5LCA5LCAxNCwgMjM3LCAKKyAgICAxNjgsIDksIDE0LCAyMzcsIDE2NywgOSwgMTQsIDIzNywgMTY2LCA5LCAxNCwgMjM3LCAxNjUsIDksIDE0LCAyMzcsIDE2NCwgCisgICAgOSwgMTQsIDIzNywgMTYzLCA5LCAxNCwgMjM3LCAxNjIsIDksIDE0LCAyMzcsIDE2MSwgOSwgMTQsIDIzNywgMTYwLCA5LCAKKyAgICAxNCwgMjM3LCAxNTksIDksIDE0LCAyMzcsIDE1OCwgOSwgMTQsIDIzNywgMTU3LCA5LCAxNCwgMjM3LCAxNTYsIDksIDE0LCAKKyAgICAyMzcsIDE1NSwgOSwgMTQsIDIzNywgMTU0LCA5LCAxNCwgMjM3LCAxNTMsIDksIDE0LCAyMzcsIDE1MiwgOSwgMTQsIDIzNywgCisgICAgMTUxLCA5LCAxNCwgMjM3LCAxNTAsIDksIDE0LCAyMzcsIDE0OSwgOSwgMTQsIDIzNywgMTQ4LCA5LCAxNCwgMjM3LCAxNDcsIAorICAgIDksIDE0LCAyMzcsIDE0NiwgOSwgMTQsIDIzNywgMTQ1LCA5LCAxNCwgMjM3LCAxNDQsIDksIDE0LCAyMzcsIDE0MywgOSwgCisgICAgMTQsIDIzNywgMTQyLCA5LCAxNCwgMjM3LCAxNDEsIDksIDE0LCAyMzcsIDE0MCwgOSwgMTQsIDIzNywgMTM5LCA5LCAxNCwgCisgICAgMjM3LCAxMzgsIDksIDE0LCAyMzcsIDEzNywgOSwgMTQsIDIzNywgMTM2LCA5LCAxNCwgMjM3LCAxMzUsIDksIDE0LCAyMzcsIAorICAgIDEzNCwgOSwgMTQsIDIzNywgMTMzLCA5LCAxNCwgMjM3LCAxMzIsIDksIDE0LCAyMzcsIDEzMSwgOSwgMTQsIDIzNywgMTMwLCAKKyAgICA5LCAxNCwgMjM3LCAxMjksIDksIDE0LCAyMzcsIDEyOCwgOSwgMTQsIDIzNywgMTI3LCA5LCAxNCwgMjM3LCAxMjYsIDksIAorICAgIDE0LCAyMzcsIDEyNSwgOSwgMTQsIDIzNywgMTI0LCA5LCAxNCwgMjM3LCAxMjMsIDksIDE0LCAyMzcsIDEyMiwgOSwgMTQsIAorICAgIDIzNywgMTIxLCA5LCAxNCwgMjM3LCAxMjAsIDksIDE0LCAyMzcsIDExOSwgOSwgMTQsIDIzNywgMTE4LCA5LCAxNCwgMjM3LCAKKyAgICAxMTcsIDksIDE0LCAyMzcsIDExNiwgOSwgMTQsIDIzNywgMTE1LCA5LCAxNCwgMjM3LCAxMTQsIDksIDE0LCAyMzcsIDExMywgCisgICAgOSwgMTQsIDIzNywgMTEyLCA5LCAxNCwgMjM3LCAxMTEsIDksIDE0LCAyMzcsIDExMCwgOSwgMTQsIDIzNywgMTA5LCA5LCAKKyAgICAxNCwgMjM3LCAxMDgsIDksIDE0LCAyMzcsIDEwNywgOSwgMTQsIDIzNywgMTA2LCA5LCAxNCwgMjM3LCAxMDUsIDksIDE0LCAKKyAgICAyMzcsIDEwNCwgOSwgMTQsIDIzNywgMTAzLCA5LCAxNCwgMjM3LCAxMDIsIDksIDE0LCAyMzcsIDEwMSwgOSwgMTQsIDIzNywgCisgICAgMTAwLCA5LCAxNCwgMjM3LCA5OSwgOSwgMTQsIDIzNywgOTgsIDksIDE0LCAyMzcsIDk3LCA5LCAxNCwgMjM3LCA5NiwgOSwgCisgICAgMTQsIDIzNywgOTUsIDksIDE0LCAyMzcsIDk0LCA5LCAxNCwgMjM3LCA5MywgOSwgMTQsIDIzNywgOTIsIDksIDE0LCAyMzcsIAorICAgIDkxLCA5LCAxNCwgMjM3LCA5MCwgOSwgMTQsIDIzNywgODksIDksIDE0LCAyMzcsIDg4LCA5LCAxNCwgMjM3LCA4NywgOSwgCisgICAgMTQsIDIzNywgODYsIDksIDE0LCAyMzcsIDg1LCA5LCAxNCwgMjM3LCA4NCwgOSwgMTQsIDIzNywgODMsIDksIDE0LCAyMzcsIAorICAgIDgyLCA5LCAxNCwgMjM3LCA4MSwgOSwgMTQsIDIzNywgODAsIDksIDE0LCAyMzcsIDc5LCA5LCAxNCwgMjM3LCA3OCwgOSwgCisgICAgMTQsIDIzNywgNzcsIDksIDE0LCAyMzcsIDc2LCA5LCAxNCwgMjM3LCA3NSwgOSwgMTQsIDIzNywgNzQsIDksIDE0LCAyMzcsIAorICAgIDczLCA5LCAxNCwgMjM3LCA3MiwgOSwgMTQsIDIzNywgNzEsIDksIDE0LCAyMzcsIDcwLCA5LCAxNCwgMjM3LCA2OSwgOSwgCisgICAgMTQsIDIzNywgNjgsIDksIDE0LCAyMzcsIDY3LCA5LCAxNCwgMjM3LCA2NiwgOSwgMTQsIDIzNywgNjUsIDksIDE0LCAyMzcsIAorICAgIDY0LCA5LCAxNCwgMjM3LCA2MywgOSwgMTQsIDIzNywgNjIsIDksIDE0LCAyMzcsIDYxLCA5LCAxNCwgMjM3LCA2MCwgOSwgCisgICAgMTQsIDIzNywgNTksIDksIDE0LCAyMzcsIDU4LCA5LCAxNCwgMjM3LCA1NywgOSwgMTQsIDIzNywgNTYsIDksIDE0LCAyMzcsIAorICAgIDU1LCA5LCAxNCwgMjM3LCA1NCwgOSwgMTQsIDIzNywgNTMsIDksIDE0LCAyMzcsIDUyLCA5LCAxNCwgMjM3LCA1MSwgOSwgCisgICAgMTQsIDIzNywgNTAsIDksIDE0LCAyMzcsIDQ5LCA5LCAxNCwgMjM3LCA0OCwgOSwgMTQsIDIzNywgNDcsIDksIDE0LCAyMzcsIAorICAgIDQ2LCA5LCAxNCwgMjM3LCA0NSwgOSwgMTQsIDIzNywgNDQsIDksIDE0LCAyMzcsIDQzLCA5LCAxNCwgMjM3LCA0MiwgOSwgCisgICAgMTQsIDIzNywgNDEsIDksIDE0LCAyMzcsIDQwLCA5LCAxNCwgMjM3LCAzOSwgOSwgMTQsIDIzNywgMzgsIDksIDE0LCAyMzcsIAorICAgIDM3LCA5LCAxNCwgMjM3LCAzNiwgOSwgMTQsIDIzNywgMzUsIDksIDE0LCAyMzcsIDM0LCA5LCAxNCwgMjM3LCAzMywgOSwgCisgICAgMTQsIDIzNywgMzIsIDksIDE0LCAyMzcsIDMxLCA5LCAxNCwgMjM3LCAzMCwgOSwgMTQsIDIzNywgMjksIDksIDE0LCAyMzcsIAorICAgIDI4LCA5LCAxNCwgMjM3LCAyNywgOSwgMTQsIDIzNywgMjYsIDksIDE0LCAyMzcsIDI1LCA5LCAxNCwgMjM3LCAyNCwgOSwgCisgICAgMTQsIDIzNywgMjMsIDksIDE0LCAyMzcsIDIyLCA5LCAxNCwgMjM3LCAyMSwgOSwgMTQsIDIzNywgMjAsIDksIDE0LCAyMzcsIAorICAgIDE5LCA5LCAxNCwgMjM3LCAxOCwgOSwgMTQsIDIzNywgMTcsIDksIDE0LCAyMzcsIDE2LCA5LCAxNCwgMjM3LCAxNSwgOSwgCisgICAgMTQsIDIzNywgMTQsIDksIDE0LCAyMzcsIDEzLCA5LCAxNCwgMjM3LCAxMiwgOSwgMTQsIDIzNywgMTEsIDksIDE0LCAyMzcsIAorICAgIDEwLCA5LCAxNCwgMjM3LCA5LCA5LCAxNCwgMjM3LCA4LCA5LCAxNCwgMjM3LCA3LCA5LCAxNCwgMjM3LCA2LCA5LCAxNCwgCisgICAgMjM3LCA1LCA5LCAxNCwgMjM3LCA0LCA5LCAxNCwgMjM3LCAzLCA5LCAxNCwgMjM3LCAyLCA5LCAxNCwgMjM3LCAxLCA5LCAKKyAgICAxNCwgMjM3LCAwLCA5LCAxNCwgMjM2LCAyNTUsIDksIDE0LCAyMzYsIDI1NCwgOSwgMTQsIDIzNiwgMjUzLCA5LCAxNCwgCisgICAgMjM2LCAyNTIsIDksIDE0LCAyMzYsIDI1MSwgOSwgMTQsIDIzNiwgMjUwLCA5LCAxNCwgMjM2LCAyNDksIDksIDE0LCAyMzYsIAorICAgIDI0OCwgOSwgMTQsIDIzNiwgMjQ3LCA5LCAxNCwgMjM2LCAyNDYsIDksIDE0LCAyMzYsIDI0NSwgOSwgMTQsIDIzNiwgMjQ0LCAKKyAgICA5LCAxNCwgMjM2LCAyNDMsIDksIDE0LCAyMzYsIDI0MiwgOSwgMTQsIDIzNiwgMjQxLCA5LCAxNCwgMjM2LCAyNDAsIDksIAorICAgIDE0LCAyMzYsIDIzOSwgOSwgMTQsIDIzNiwgMjM4LCA5LCAxNCwgMjM2LCAyMzcsIDksIDE0LCAyMzYsIDIzNiwgOSwgMTQsIAorICAgIDIzNiwgMjM1LCA5LCAxNCwgMjM2LCAyMzQsIDksIDE0LCAyMzYsIDIzMywgOSwgMTQsIDIzNiwgMjMyLCA5LCAxNCwgMjM2LCAKKyAgICAyMzEsIDksIDE0LCAyMzYsIDIzMCwgOSwgMTQsIDIzNiwgMjI5LCA5LCAxNCwgMjM2LCAyMjgsIDksIDE0LCAyMzYsIDIyNywgCisgICAgOSwgMTQsIDIzNiwgMjI2LCA5LCAxNCwgMjM2LCAyMjUsIDksIDE0LCAyMzYsIDIyNCwgOSwgMTQsIDIzNiwgMjIzLCA5LCAKKyAgICAxNCwgMjM2LCAyMjIsIDksIDE0LCAyMzYsIDIyMSwgOSwgMTQsIDIzNiwgMjIwLCA5LCAxNCwgMjM2LCAyMTksIDksIDE0LCAKKyAgICAyMzYsIDIxOCwgOSwgMTQsIDIzNiwgMjE3LCA5LCAxNCwgMjM2LCAyMTYsIDksIDE0LCAyMzYsIDIxNSwgOSwgMTQsIDIzNiwgCisgICAgMjE0LCA5LCAxNCwgMjM2LCAyMTMsIDksIDE0LCAyMzYsIDIxMiwgOSwgMTQsIDIzNiwgMjExLCA5LCAxNCwgMjM2LCAyMTAsIAorICAgIDksIDE0LCAyMzYsIDIwOSwgOSwgMTQsIDIzNiwgMjA4LCA5LCAxNCwgMjM2LCAyMDcsIDksIDE0LCAyMzYsIDIwNiwgOSwgCisgICAgMTQsIDIzNiwgMjA1LCA5LCAxNCwgMjM2LCAyMDQsIDksIDE0LCAyMzYsIDIwMywgOSwgMTQsIDIzNiwgMjAyLCA5LCAxNCwgCisgICAgMjM2LCAyMDEsIDksIDE0LCAyMzYsIDIwMCwgOSwgMTQsIDIzNiwgMTk5LCA5LCAxNCwgMjM2LCAxOTgsIDksIDE0LCAyMzYsIAorICAgIDE5NywgOSwgMTQsIDIzNiwgMTk2LCA5LCAxNCwgMjM2LCAxOTUsIDksIDE0LCAyMzYsIDE5NCwgOSwgMTQsIDIzNiwgMTkzLCAKKyAgICA5LCAxNCwgMjM2LCAxOTIsIDksIDE0LCAyMzYsIDE5MSwgOSwgMTQsIDIzNiwgMTkwLCA5LCAxNCwgMjM2LCAxODksIDksIAorICAgIDE0LCAyMzYsIDE4OCwgOSwgMTQsIDIzNiwgMTg3LCA5LCAxNCwgMjM2LCAxODYsIDksIDE0LCAyMzYsIDE4NSwgOSwgMTQsIAorICAgIDIzNiwgMTg0LCA5LCAxNCwgMjM2LCAxODMsIDksIDE0LCAyMzYsIDE4MiwgOSwgMTQsIDIzNiwgMTgxLCA5LCAxNCwgMjM2LCAKKyAgICAxODAsIDksIDE0LCAyMzYsIDE3OSwgOSwgMTQsIDIzNiwgMTc4LCA5LCAxNCwgMjM2LCAxNzcsIDksIDE0LCAyMzYsIDE3NiwgCisgICAgOSwgMTQsIDIzNiwgMTc1LCA5LCAxNCwgMjM2LCAxNzQsIDksIDE0LCAyMzYsIDE3MywgOSwgMTQsIDIzNiwgMTcyLCA5LCAKKyAgICAxNCwgMjM2LCAxNzEsIDksIDE0LCAyMzYsIDE3MCwgOSwgMTQsIDIzNiwgMTY5LCA5LCAxNCwgMjM2LCAxNjgsIDksIDE0LCAKKyAgICAyMzYsIDE2NywgOSwgMTQsIDIzNiwgMTY2LCA5LCAxNCwgMjM2LCAxNjUsIDksIDE0LCAyMzYsIDE2NCwgOSwgMTQsIDIzNiwgCisgICAgMTYzLCA5LCAxNCwgMjM2LCAxNjIsIDksIDE0LCAyMzYsIDE2MSwgOSwgMTQsIDIzNiwgMTYwLCA5LCAxNCwgMjM2LCAxNTksIAorICAgIDksIDE0LCAyMzYsIDE1OCwgOSwgMTQsIDIzNiwgMTU3LCA5LCAxNCwgMjM2LCAxNTYsIDksIDE0LCAyMzYsIDE1NSwgOSwgCisgICAgMTQsIDIzNiwgMTU0LCA5LCAxNCwgMjM2LCAxNTMsIDksIDE0LCAyMzYsIDE1MiwgOSwgMTQsIDIzNiwgMTUxLCA5LCAxNCwgCisgICAgMjM2LCAxNTAsIDksIDE0LCAyMzYsIDE0OSwgOSwgMTQsIDIzNiwgMTQ4LCA5LCAxNCwgMjM2LCAxNDcsIDksIDE0LCAyMzYsIAorICAgIDE0NiwgOSwgMTQsIDIzNiwgMTQ1LCA5LCAxNCwgMjM2LCAxNDQsIDksIDE0LCAyMzYsIDE0MywgOSwgMTQsIDIzNiwgMTQyLCAKKyAgICA5LCAxNCwgMjM2LCAxNDEsIDksIDE0LCAyMzYsIDE0MCwgOSwgMTQsIDIzNiwgMTM5LCA5LCAxNCwgMjM2LCAxMzgsIDksIAorICAgIDE0LCAyMzYsIDEzNywgOSwgMTQsIDIzNiwgMTM2LCA5LCAxNCwgMjM2LCAxMzUsIDksIDE0LCAyMzYsIDEzNCwgOSwgMTQsIAorICAgIDIzNiwgMTMzLCA5LCAxNCwgMjM2LCAxMzIsIDksIDE0LCAyMzYsIDEzMSwgOSwgMTQsIDIzNiwgMTMwLCA5LCAxNCwgMjM2LCAKKyAgICAxMjksIDksIDE0LCAyMzYsIDEyOCwgOSwgMTQsIDIzNiwgMTI3LCA5LCAxNCwgMjM2LCAxMjYsIDksIDE0LCAyMzYsIDEyNSwgCisgICAgOSwgMTQsIDIzNiwgMTI0LCA5LCAxNCwgMjM2LCAxMjMsIDksIDE0LCAyMzYsIDEyMiwgOSwgMTQsIDIzNiwgMTIxLCA5LCAKKyAgICAxNCwgMjM2LCAxMjAsIDksIDE0LCAyMzYsIDExOSwgOSwgMTQsIDIzNiwgMTE4LCA5LCAxNCwgMjM2LCAxMTcsIDksIDE0LCAKKyAgICAyMzYsIDExNiwgOSwgMTQsIDIzNiwgMTE1LCA5LCAxNCwgMjM2LCAxMTQsIDksIDE0LCAyMzYsIDExMywgOSwgMTQsIDIzNiwgCisgICAgMTEyLCA5LCAxNCwgMjM2LCAxMTEsIDksIDE0LCAyMzYsIDExMCwgOSwgMTQsIDIzNiwgMTA5LCA5LCAxNCwgMjM2LCAxMDgsIAorICAgIDksIDE0LCAyMzYsIDEwNywgOSwgMTQsIDIzNiwgMTA2LCA5LCAxNCwgMjM2LCAxMDUsIDksIDE0LCAyMzYsIDEwNCwgOSwgCisgICAgMTQsIDIzNiwgMTAzLCA5LCAxNCwgMjM2LCAxMDIsIDksIDE0LCAyMzYsIDEwMSwgOSwgMTQsIDIzNiwgMTAwLCA5LCAxNCwgCisgICAgMjM2LCA5OSwgOSwgMTQsIDIzNiwgOTgsIDksIDE0LCAyMzYsIDk3LCA5LCAxNCwgMjM2LCA5NiwgOSwgMTQsIDIzNiwgOTUsIAorICAgIDksIDE0LCAyMzYsIDk0LCA5LCAxNCwgMjM2LCA5MywgOSwgMTQsIDIzNiwgOTIsIDksIDE0LCAyMzYsIDkxLCA5LCAxNCwgCisgICAgMjM2LCA5MCwgOSwgMTQsIDIzNiwgODksIDksIDE0LCAyMzYsIDg4LCA5LCAxNCwgMjM2LCA4NywgOSwgMTQsIDIzNiwgODYsIAorICAgIDksIDE0LCAyMzYsIDg1LCA5LCAxNCwgMjM2LCA4NCwgOSwgMTQsIDIzNiwgODMsIDksIDE0LCAyMzYsIDgyLCA5LCAxNCwgCisgICAgMjM2LCA4MSwgOSwgMTQsIDIzNiwgODAsIDksIDE0LCAyMzYsIDc5LCA5LCAxNCwgMjM2LCA3OCwgOSwgMTQsIDIzNiwgNzcsIAorICAgIDksIDE0LCAyMzYsIDc2LCA5LCAxNCwgMjM2LCA3NSwgOSwgMTQsIDIzNiwgNzQsIDksIDE0LCAyMzYsIDczLCA5LCAxNCwgCisgICAgMjM2LCA3MiwgOSwgMTQsIDIzNiwgNzEsIDksIDE0LCAyMzYsIDcwLCA5LCAxNCwgMjM2LCA2OSwgOSwgMTQsIDIzNiwgNjgsIAorICAgIDksIDE0LCAyMzYsIDY3LCA5LCAxNCwgMjM2LCA2NiwgNywgNCwgMjcsIDI0NCwgMTI2LCA3LCA0LCAyNywgMjQ0LCAxMjIsIAorICAgIDcsIDQsIDI3LCAyNDQsIDc3LCA3LCA0LCAyNywgMjQ0LCAxMjUsIDcsIDQsIDI3LCAyNDQsIDEyNCwgNywgNCwgMjcsIDE5OSwgCisgICAgMjIyLCA5MywgMjE3LCAxNTMsIDcsIDQsIDI3LCAyMTgsIDE2OSwgMTUwLCA0LCAyNywgMjMxLCA2MCwgMjI4LCA0MCwgMTUwLCAKKyAgICA0LCAyNywgMjMxLCA2MCwgMjQ1LCAyMTQsIDE1MCwgNCwgMjcsIDIzMSwgNjAsIDIzNSwgMjI4LCAxNTAsIDQsIDI3LCAyMTMsIAorICAgIDE4MCwgMjI4LCA0MCwgMTUwLCA0LCAyNywgMjMxLCA2MCwgMjExLCAxNjAsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQxLCAKKyAgICAxNTksIDk0LCAyMjUsIDEyLCAyMzUsIDUxLCAyMTQsIDExLCA5NCwgMjcsIDIxMSwgNiwgMjEwLCAyMzQsIDIxMCwgMjM0LCAKKyAgICAyMjUsIDI0MCwgOTQsIDEsIDI1NCwgMTQwLCAyNTMsIDE2MywgOTQsIDEsIDIxMSwgMjQ3LCAyNTQsIDE3MSwgOTQsIDEsIAorICAgIDIxMSwgMjQ3LCAyNDgsIDE5MCwgOTQsIDEsIDIxMSwgMjQ3LCAyNDEsIDIzOSwgOTQsIDEsIDIxMSwgMjQ3LCAyMzQsIDI1MSwgCisgICAgOTQsIDEsIDIxMSwgMjQ3LCAyMzMsIDk1LCA5NCwgMSwgMjExLCAyNDcsIDQwLCAyMzEsIDY2LCA5NCwgMSwgMjExLCAyNDcsIAorICAgIDIyMywgNjgsIDk0LCAxLCAyMTEsIDI0NywgMjE3LCAzOSwgOTQsIDEsIDI1NCwgMTQwLCA5NiwgNTAsIDk0LCAxLCAyMjAsIAorICAgIDIyLCAyLCAyMjAsIDIyLCAyNDcsIDEyMSwgOTQsIDEsIDIyMCwgMjIsIDIsIDIxOSwgMTYwLCAyNDcsIDEyMSwgOTQsIDEsIAorICAgIDIyMCwgMjIsIDIsIDI0OCwgMjA5LCAyMiwgMjIwLCAyMiwgMjQ3LCAxMjEsIDk0LCAxLCAyMjAsIDIyLCAyLCAyNDgsIDIwOSwgCisgICAgMjIsIDIxOSwgMTYwLCAyNDcsIDEyMSwgOTQsIDEsIDExMiwgMiwgMjI1LCAyNDAsIDk0LCAxLCAxMTIsIDIsIDIyNCwgNzcsIAorICAgIDk0LCAxLCAxMTIsIDIsIDIzMSwgMTcyLCA5NCwgMSwgMjUyLCAzMCwgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyNDIsIDIwMywgMiwgCisgICAgMjQ4LCAyMDgsIDk0LCAxLCAyNDgsIDE5MSwgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyNDEsIDI0MCwgMiwgMjMxLCAxNzIsIDk0LCAKKyAgICAxLCAyMTQsIDQsIDIsIDI0OCwgMjA4LCA5NCwgMSwgMjEwLCA5OCwgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyMTYsIDIzMiwgMiwgCisgICAgMjQ4LCAyMDgsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQ4LCAyMDgsIDk0LCAxLCA0MCwgMjM0LCAyNTIsIDIsIDI0OCwgMjA4LCAKKyAgICA5NCwgMSwgMjM0LCAyNTIsIDIsIDI0OCwgMjA4LCA5NCwgMSwgMjMzLCA5NiwgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyMzEsIAorICAgIDY3LCAyLCAyNDgsIDIwOCwgOTQsIDEsIDIyNywgMTk2LCAyLCAyNDgsIDIwOCwgOTQsIDEsIDIyMSwgMjUxLCAyLCAyNDgsIAorICAgIDIwOCwgOTQsIDEsIDQwLCAyMjUsIDIyMywgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyMjUsIDIyMywgMiwgMjQ4LCAyMDgsIDk0LCAKKyAgICAxLCAyMTUsIDE4MSwgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyMjQsIDQxLCAyLCAyNDgsIDIwOCwgOTQsIDEsIDIyMywgNjksIDIsIAorICAgIDI0OCwgMjA4LCA5NCwgMSwgMjIwLCAyMiwgMiwgMjQ4LCAyMDgsIDk0LCAxLCAyMTcsIDQwLCAyLCAyNDgsIDIwOCwgOTQsIAorICAgIDEsIDIxNCwgNCwgMiwgMjQxLCA2MiwgOTQsIDEsIDI1MiwgMzAsIDIsIDIyMywgMTcwLCA5NCwgMSwgMjM0LCAyNTIsIDIsIAorICAgIDIyMywgMTcwLCA5NCwgMSwgMjI1LCAyMjMsIDIsIDIyMywgMTcwLCA5NCwgMjcsIDExMiwgMjMzLCA5NSwgMTAsIDEsIDExMiwgCisgICAgMjEyLCA0NywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyMTIsIDQ3LCA0MCwgMTcsIDEwLCAxLCAyNTIsIDY2LCA1MywgMTcsIDEwLCAKKyAgICAxLCAyNTIsIDY2LCA0MCwgMTcsIDEwLCAxLCAyNTIsIDY2LCA2NSwgMTcsIDEwLCAxLCAyNTIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjI1LCAyMDcsIDUzLCAxNywgMTAsIDEsIDIyNSwgMjA3LCA0MCwgMTcsIDEwLCAxLCAyMjUsIDIwNywgNjUsIDE3LCAKKyAgICAxMCwgMSwgMjI1LCAyMDcsIDE0NywgMTcsIDEwLCAxLCAyNTIsIDU0LCA1MywgMTcsIDEwLCAxLCAyNTIsIDU0LCA0MCwgMTcsIAorICAgIDEwLCAxLCAyNTIsIDU0LCA2NSwgMTcsIDEwLCAxLCAyNTIsIDU0LCAxNDcsIDE3LCAxMCwgMSwgMjE1LCAxNDgsIDUzLCAxNywgCisgICAgMTAsIDEsIDIxNSwgMTQ4LCA0MCwgMTcsIDEwLCAxLCAyMTUsIDE0OCwgNjUsIDE3LCAxMCwgMSwgMjE1LCAxNDgsIDE0NywgCisgICAgMTcsIDEwLCAxLCAyMTcsIDcsIDUzLCAxNywgMTAsIDEsIDIxNywgNywgNDAsIDE3LCAxMCwgMSwgMjE3LCA3LCA2NSwgMTcsIAorICAgIDEwLCAxLCAyMTcsIDcsIDE0NywgMTcsIDEwLCAxLCAyMTUsIDE1MCwgNTMsIDE3LCAxMCwgMSwgMjE1LCAxNTAsIDQwLCAxNywgCisgICAgMTAsIDEsIDIxNSwgMTUwLCA2NSwgMTcsIDEwLCAxLCAyMTUsIDE1MCwgMTQ3LCAxNywgMTAsIDEsIDIxMywgMjQ5LCA1MywgCiAgICAgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNDAsIDE3LCAxMCwgMSwgMjEzLCAyNDksIDY1LCAxNywgMTAsIDEsIDIxMywgMjQ5LCAKLSAgICAxNDcsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDUzLCAxNywgMTAsIDEsIDIyNSwgMjA0LCA0MCwgMTcsIDEwLCAxLCAyMjUsIAotICAgIDIwNCwgNjUsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDE0NywgMTcsIDEwLCAxLCAyNDYsIDQ0LCA1MywgMTcsIDEwLCAxLCAKLSAgICAyNDYsIDQ0LCA0MCwgMTcsIDEwLCAxLCAyNDYsIDQ0LCA2NSwgMTcsIDEwLCAxLCAyNDYsIDQ0LCAxNDcsIDE3LCAxMCwgMSwgCi0gICAgMjI3LCAxNTQsIDUzLCAxNywgMTAsIDEsIDIyNywgMTU0LCA0MCwgMTcsIDEwLCAxLCAyMjcsIDE1NCwgNjUsIDE3LCAxMCwgCi0gICAgMSwgMjI3LCAxNTQsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDI3LCA1MywgMTcsIDEwLCAxLCAyMTcsIDI3LCA0MCwgMTcsIDEwLCAKLSAgICAxLCAyMTcsIDI3LCA2NSwgMTcsIDEwLCAxLCAyMTcsIDI3LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCAyNSwgNTMsIDE3LCAxMCwgCi0gICAgMSwgMjE3LCAyNSwgNDAsIDE3LCAxMCwgMSwgMjE3LCAyNSwgNjUsIDE3LCAxMCwgMSwgMjE3LCAyNSwgMTQ3LCAxNywgMTAsIAotICAgIDEsIDI0OCwgMTMzLCA1MywgMTcsIDEwLCAxLCAyNDgsIDEzMywgNDAsIDE3LCAxMCwgMSwgMjQ4LCAyMDIsIDUzLCAxNywgCi0gICAgMTAsIDEsIDI0OCwgMjAyLCA0MCwgMTcsIDEwLCAxLCAyNDYsIDcxLCA1MywgMTcsIDEwLCAxLCAyNDYsIDcxLCA0MCwgMTcsIAotICAgIDEwLCAxLCAyNDgsIDEzMSwgNTMsIDE3LCAxMCwgMSwgMjQ4LCAxMzEsIDQwLCAxNywgMTAsIDEsIDIzNSwgMTIxLCA1MywgCi0gICAgMTcsIDEwLCAxLCAyMzUsIDEyMSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAxNzIsIDUzLCAxNywgMTAsIDEsIDIyMiwgMTcyLCAKLSAgICA0MCwgMTcsIDEwLCAxLCAyMzQsIDE3NSwgNTMsIDE3LCAxMCwgMSwgMjM0LCAxNzUsIDQwLCAxNywgMTAsIDEsIDIzNCwgCi0gICAgMTc1LCA2NSwgMTcsIDEwLCAxLCAyMzQsIDE3NSwgMTQ3LCAxNywgMTAsIDEsIDI0MywgMTIzLCA1MywgMTcsIDEwLCAxLCAKLSAgICAyNDMsIDEyMywgNDAsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDY1LCAxNywgMTAsIDEsIDI0MywgMTIzLCAxNDcsIDE3LCAxMCwgCi0gICAgMSwgMjQyLCAxMDIsIDUzLCAxNywgMTAsIDEsIDI0MiwgMTAyLCA0MCwgMTcsIDEwLCAxLCAyNDIsIDEwMiwgNjUsIDE3LCAKLSAgICAxMCwgMSwgMjQyLCAxMDIsIDE0NywgMTcsIDEwLCAxLCAyMjksIDMsIDUzLCAxNywgMTAsIDEsIDIyOSwgMywgNDAsIDE3LCAKLSAgICAxMCwgMSwgMjI5LCAzLCA2NSwgMTcsIDEwLCAxLCAyMjksIDMsIDE0NywgMTcsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOSwgCi0gICAgNTMsIDE3LCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTksIDQwLCAxNywgMTAsIDEsIDIyMiwgMjE1LCA1MywgMTcsIDEwLCAxLCAKLSAgICAyMjIsIDIxNSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDY1LCAxNywgMTAsIDEsIDIyMiwgMjE1LCAxNDcsIDE3LCAxMCwgCi0gICAgMSwgMjQxLCAyMTksIDIsIDc5LCA3NywgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDIsIDc5LCA3NywgNDAsIDE3LCAxMCwgCi0gICAgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDQwLCAxNywgMTAsIDEsIAotICAgIDI0MSwgMjE5LCAyNDIsIDE3MiwgNjUsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCAxNDcsIDE3LCAxMCwgMSwgCi0gICAgMjQxLCAyMTksIDI0NywgMTQyLCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQ3LCAxNDIsIDQwLCAxNywgMTAsIDEsIAotICAgIDI0MSwgMjE5LCAyNDcsIDE0MiwgNjUsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0NywgMTQyLCAxNDcsIDE3LCAxMCwgMSwgCi0gICAgNzksIDI1MiwgMTMzLCA1MywgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDQwLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgCi0gICAgMiwgMjAyLCA3NywgNTMsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxNiwgNTksIAorICAgIDE0NywgMTcsIDEwLCAxLCAyMjUsIDIwNSwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDUsIDQwLCAxNywgMTAsIDEsIDIyNSwgCisgICAgMjA1LCA2NSwgMTcsIDEwLCAxLCAyMjUsIDIwNSwgMTQ3LCAxNywgMTAsIDEsIDI0NiwgNDUsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0NiwgNDUsIDQwLCAxNywgMTAsIDEsIDI0NiwgNDUsIDY1LCAxNywgMTAsIDEsIDI0NiwgNDUsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyMjcsIDE1NSwgNTMsIDE3LCAxMCwgMSwgMjI3LCAxNTUsIDQwLCAxNywgMTAsIDEsIDIyNywgMTU1LCA2NSwgMTcsIDEwLCAKKyAgICAxLCAyMjcsIDE1NSwgMTQ3LCAxNywgMTAsIDEsIDIxNywgMjgsIDUzLCAxNywgMTAsIDEsIDIxNywgMjgsIDQwLCAxNywgMTAsIAorICAgIDEsIDIxNywgMjgsIDY1LCAxNywgMTAsIDEsIDIxNywgMjgsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDI2LCA1MywgMTcsIDEwLCAKKyAgICAxLCAyMTcsIDI2LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDI2LCA2NSwgMTcsIDEwLCAxLCAyMTcsIDI2LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAxMzQsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTM0LCA0MCwgMTcsIDEwLCAxLCAyNDgsIDIwMywgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjQ4LCAyMDMsIDQwLCAxNywgMTAsIDEsIDI0NiwgNzIsIDUzLCAxNywgMTAsIDEsIDI0NiwgNzIsIDQwLCAxNywgCisgICAgMTAsIDEsIDI0OCwgMTMyLCA1MywgMTcsIDEwLCAxLCAyNDgsIDEzMiwgNDAsIDE3LCAxMCwgMSwgMjM1LCAxMjIsIDUzLCAKKyAgICAxNywgMTAsIDEsIDIzNSwgMTIyLCA0MCwgMTcsIDEwLCAxLCAyMjIsIDE3MywgNTMsIDE3LCAxMCwgMSwgMjIyLCAxNzMsIAorICAgIDQwLCAxNywgMTAsIDEsIDIzNCwgMTc2LCA1MywgMTcsIDEwLCAxLCAyMzQsIDE3NiwgNDAsIDE3LCAxMCwgMSwgMjM0LCAKKyAgICAxNzYsIDY1LCAxNywgMTAsIDEsIDIzNCwgMTc2LCAxNDcsIDE3LCAxMCwgMSwgMjQzLCAxMjQsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0MywgMTI0LCA0MCwgMTcsIDEwLCAxLCAyNDMsIDEyNCwgNjUsIDE3LCAxMCwgMSwgMjQzLCAxMjQsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDIsIDEwMywgNTMsIDE3LCAxMCwgMSwgMjQyLCAxMDMsIDQwLCAxNywgMTAsIDEsIDI0MiwgMTAzLCA2NSwgMTcsIAorICAgIDEwLCAxLCAyNDIsIDEwMywgMTQ3LCAxNywgMTAsIDEsIDIyOSwgNCwgNTMsIDE3LCAxMCwgMSwgMjI5LCA0LCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMjksIDQsIDY1LCAxNywgMTAsIDEsIDIyOSwgNCwgMTQ3LCAxNywgMTAsIDEsIDIyOCwgNjQsIDI0MiwgMjIwLCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMjgsIDY0LCAyNDIsIDIyMCwgNDAsIDE3LCAxMCwgMSwgMjIyLCAyMTYsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyMiwgMjE2LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDIxNiwgNjUsIDE3LCAxMCwgMSwgMjIyLCAyMTYsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIyMCwgMiwgNzksIDc3LCA1MywgMTcsIDEwLCAxLCAyNDEsIDIyMCwgMiwgNzksIDc3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIyMCwgMjQyLCAxNzMsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjIwLCAyNDIsIDE3MywgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMjAsIDI0MiwgMTczLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIyMCwgMjQyLCAxNzMsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIyMCwgMjQ3LCAxNDMsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjIwLCAyNDcsIDE0MywgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMjAsIDI0NywgMTQzLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIyMCwgMjQ3LCAxNDMsIDE0NywgMTcsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzQsIDUzLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzNCwgNDAsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTM0LCAKKyAgICAyLCAyMDIsIDc3LCA1MywgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzQsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDE2LCA1OSwgCiAgICAgNDgsIDEwLCAxNiwgNTksIDUxLCAxMCwgMTYsIDExMywgMTcwLCA0OCwgMTAsIDE2LCAxMTMsIDE3MCwgNTEsIDEwLCAxNiwgCi0gICAgMTM0LCAxNzAsIDQ4LCAxMCwgMTYsIDEzNCwgMTcwLCA1MSwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgCi0gICAgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDUxLCAxMCwgMTYsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAKLSAgICAxNiwgMjQ0LCAxMSwgMTcwLCA1MSwgMTAsIDE2LCA1MiwgNjcsIDI1MiwgMTQxLCA1MSwgMTAsIDE2LCAxMTMsIDE3MCwgCi0gICAgMjEzLCAxODksIDQ4LCAxMCwgMTYsIDExMywgMTcwLCAyMTMsIDE4OSwgNTEsIDEwLCAxNiwgMjIyLCAyMzMsIDEwLCAxNiwgCi0gICAgNCwgMjE3LCA4MSwgNDgsIDEwLCAxNiwgNCwgMjE3LCA4MSwgNTEsIDEwLCAxLCAyMjksIDgwLCA1MywgMTcsIDEwLCAxLCAKLSAgICAyMjksIDgwLCA0MCwgMTcsIDEwLCAxLCAyMjksIDgwLCA2NSwgMTcsIDEwLCAxLCAyMjksIDgwLCAxNDcsIDE3LCAxMCwgMSwgCi0gICAgMTA0LCA1MywgMTcsIDEwLCAxLCAxMDQsIDQwLCAxNywgMTAsIDEsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMjYsIAotICAgIDIzNSwgNDAsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxMzQsIDE3MCwgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDUxLCAxMCwgMTYsIDEzNCwgMTcwLCAyMjUsIDgsIDI0NiwgMTA1LCAKKyAgICA0OCwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA4LCAyNDYsIDEwNSwgNTEsIDEwLCAxNiwgMjQ0LCAxMiwgMTcwLCA0OCwgMTAsIAorICAgIDE2LCAyNDQsIDEyLCAxNzAsIDUxLCAxMCwgMTYsIDUyLCA2NywgMjUyLCAxNDIsIDUxLCAxMCwgMTYsIDExMywgMTcwLCAKKyAgICAyMTMsIDE4OSwgNDgsIDEwLCAxNiwgMTEzLCAxNzAsIDIxMywgMTg5LCA1MSwgMTAsIDE2LCAyMjIsIDIzNCwgMTAsIDE2LCAKKyAgICA0LCAyMTcsIDgyLCA0OCwgMTAsIDE2LCA0LCAyMTcsIDgyLCA1MSwgMTAsIDEsIDIyOSwgODEsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyOSwgODEsIDQwLCAxNywgMTAsIDEsIDIyOSwgODEsIDY1LCAxNywgMTAsIDEsIDIyOSwgODEsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAxMDQsIDUzLCAxNywgMTAsIDEsIDEwNCwgNDAsIDE3LCAxMCwgMSwgMjI2LCAyMzYsIDUzLCAxNywgMTAsIDEsIDIyNiwgCisgICAgMjM2LCA0MCwgMTcsIDEwLCAxLCAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDEsIAogICAgIDEwNCwgMiwgMjAyLCA3NywgNTMsIDE3LCAxMCwgMSwgMjE0LCAwLCA1MywgMTcsIDEwLCAxLCAyMTQsIDAsIDQwLCAxNywgCi0gICAgMTAsIDEsIDIzNCwgNzMsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMzQsIDczLCAyMjYsIDIzNSwgNDAsIDE3LCAxMCwgCi0gICAgMSwgMjM0LCA3MywgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIzNCwgNzMsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxMCwgMSwgMjM0LCA3NCwgMjI2LCAyMzYsIDUzLCAxNywgMTAsIDEsIDIzNCwgNzQsIDIyNiwgMjM2LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyMzQsIDc0LCAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMSwgMjM0LCA3NCwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDEsIAogICAgIDE2MCwgNTMsIDE3LCAxMCwgMSwgMTYwLCA0MCwgMTcsIDEwLCAxLCAxNjAsIDY1LCAxNywgMTAsIDEsIDE2MCwgMTQ3LCAxNywgCi0gICAgMTAsIDEsIDIxNCwgMjA3LCAyMzQsIDE4NiwgMjM0LCA3MywgMTEyLCAyMzEsIDE5MywgNjUsIDE3LCAxMCwgMSwgMjE0LCAKLSAgICAyMDcsIDIzNCwgMTg2LCAyMzQsIDczLCAxMTIsIDIzMSwgMTkzLCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAxMCwgMSwgMjE0LCAyMDcsIDIzNCwgMTg3LCAyMzQsIDc0LCAxMTIsIDIzMSwgMTk0LCA2NSwgMTcsIDEwLCAxLCAyMTQsIAorICAgIDIwNywgMjM0LCAxODcsIDIzNCwgNzQsIDExMiwgMjMxLCAxOTQsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAogICAgIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgCi0gICAgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDQwLCAKKyAgICAyMDIsIDc3LCAyLCAyNTQsIDI0NSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyNTQsIDI0NSwgNDAsIAogICAgIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMTIsIDMxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAogICAgIDIsIDIxMiwgMzEsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTA0LCA1MywgMTcsIDEwLCAyNywgNzksIAotICAgIDIsIDIwMiwgNzcsIDIsIDEwNCwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjYsIDIzNSwgNTMsIDE3LCAKLSAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjYsIDIzNSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAKKyAgICAyLCAyMDIsIDc3LCAyLCAxMDQsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzYsIDUzLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzYsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgCiAgICAgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDI3LCAKICAgICA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDY1LCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIAotICAgIDIwMiwgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgCi0gICAgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgNzcsIAotICAgIDIsIDExMiwgMjMxLCAxOTMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgNTMsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIAotICAgIDc5LCA0MCwgMTcsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA2NSwgMTcsIDEwLCAyNywgMjE0LCAyMDcsIDIzNCwgNzQsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAxMTIsIDIzMSwgMTk0LCA1MywgMTcsIDEwLCAyNywgMjE0LCAyMDcsIDIzNCwgNzQsIDc5LCAyLCAyMDIsIAorICAgIDc3LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjE0LCAyMDcsIDIzNCwgNzQsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAyLCAxMTIsIDIzMSwgMTk0LCA2NSwgMTcsIDEwLCAxLCAyNDQsIDE2OSwgNzksIDUzLCAxNywgMTAsIDEsIDI0NCwgMTY5LCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMSwgMjQ0LCAxNjksIDc5LCA2NSwgMTcsIDEwLCAxLCAyNDQsIDE2OSwgNzksIDE0NywgMTcsIAogICAgIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMjIsIAogICAgIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgCi0gICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIAotICAgIDI1MiwgNTUsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgCi0gICAgNTUsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAKLSAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIAotICAgIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIAotICAgIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDExMiwgMjMxLCAKLSAgICAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDE1MSwgNTMsIAotICAgIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCAxMTIsIDIzMSwgMTkzLCAKLSAgICA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTUxLCAyLCAxMjIsIDUzLCAxNywgMTAsIAorICAgIDExMiwgMjMxLCAxOTQsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyNTIsIDU2LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU2LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyNTIsIAorICAgIDU2LCAyLCAyMzQsIDEzMSwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTYsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NiwgCisgICAgMiwgMTEyLCAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTYsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjE3LCA5LCAKKyAgICAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgMjM0LCAKKyAgICAxMzEsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCAxMTIsIDIzMSwgCisgICAgMTk0LCA1MywgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTk0LCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMTYsIDE5NCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5NCwgMiwgMTEyLCAyMzEsIDE5NCwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTk0LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAKICAgICAyNywgMTUxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCA2NiwgCi0gICAgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTIyLCA1MywgCi0gICAgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDE1MSwgNTMsIDE3LCAKLSAgICAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDUzLCAxNywgCi0gICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAKLSAgICAyMjIsIDI3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDgsIAotICAgIDIxNywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKLSAgICAyMTcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgCi0gICAgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTAsIDExMiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAKLSAgICA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDE1MSwgNTMsIAotICAgIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxNTEsIDUzLCAxNywgCi0gICAgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIAotICAgIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAKLSAgICAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMjIsIDUzLCAxNywgMTAsIAotICAgIDI3LCAyMjQsIDgyLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgCi0gICAgMTAsIDI3LCAyMjQsIDgyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAKLSAgICAyMzQsIDI1MSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgCi0gICAgMjUxLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgNTMsIDE3LCAxMCwgMjcsIAotICAgIDIzNCwgMjUxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAKLSAgICAyNywgMjM0LCAyNTEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIAotICAgIDIzMywgMTAzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAKLSAgICAyMzMsIDEwMywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgCi0gICAgMjcsIDIzMywgMTAzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgCi0gICAgMTIyLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCA1MywgMTcsIAotICAgIDEwLCAyNywgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAKLSAgICAyMjgsIDYzLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjgsIAotICAgIDYzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgCi0gICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQxLCAKLSAgICAyMTksIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAKLSAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIAotICAgIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgCi0gICAgMTAsIDI3LCA3OSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIAotICAgIDc5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMjAzLCAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAKLSAgICAyMjMsIDk2LCAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAxMTIsIDIzMSwgMTkzLCAyLCAyMTgsIDIzLCAxMTIsIAotICAgIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyNDgsIDE4MywgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDIzNCwgCi0gICAgMjA0LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ0LCAxNjYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAKLSAgICAyNDgsIDE4NSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDIzNCwgMjA2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgCi0gICAgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzEsIDIsIDEyMiwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIzNCwgMTMxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAyLCAxNTEsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjgsIDIsIDIzNCwgMTMxLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjgsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyOCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIyLCAyOCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxOCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKKyAgICAyMTgsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE4LCAyLCAyMzQsIDEzMSwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgCisgICAgMjE4LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODIsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODIsIDIsIAorICAgIDY2LCA1MywgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTgsIDIsIDE1MSwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk4LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ2LCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNDIsIDI0NiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDQsIDE0NCwgMiwgMTUxLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjQ0LCAxNDQsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQ0LCAyLCAyMzQsIDEzMSwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDI0NCwgMTQ0LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQ0LCAyLCAxMTIsIDIzMSwgMTk0LCA1MywgCisgICAgMTcsIDEwLCAyNywgMjQ0LCAxNDQsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjI0LCA4MywgMiwgMTIyLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjI0LCA4MywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgzLCAyLCAxMTIsIDIzMSwgMTk0LCA1MywgMTcsIAorICAgIDEwLCAyNywgMjI0LCA4MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTIsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzQsIAorICAgIDI1MiwgMiwgMjM0LCAxMzEsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgMjMzLCAxMDQsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgMTEyLCAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIzNCwgMjUyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwNCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDIzNCwgMTMxLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDQsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDExMiwgMjMxLCAxOTQsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMzMsIDEwNCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMSwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAxMTIsIDIzMSwgMTk0LCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjI4LCA2NCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjI4LCA2NCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjI4LCAKKyAgICA2NCwgMiwgMjM0LCAxMzEsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDY0LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIAorICAgIDIsIDExMiwgMjMxLCAxOTQsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDY0LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgCisgICAgMjIwLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIyMCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIyMCwgCisgICAgMiwgMTEyLCAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjIwLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAxNTEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIzNCwgMTMxLCA1MywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTQsIDUzLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDIwNCwgMiwgMjE4LCAyNCwgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIzLCA5NywgMiwgMjE4LCAyNCwgMTEyLCA1MywgMTcsIDEwLCAyNywgMTEyLCAyMzEsIDE5NCwgMiwgMjE4LCAyNCwgMTEyLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIwLCA5NSwgMiwgMjQ4LCAxODQsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk1LCAyLCAyMzQsIAorICAgIDIwNSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTUsIDIsIDI0NCwgMTY3LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NSwgMiwgCisgICAgMjQ4LCAxODYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk1LCAyLCAyMzQsIDIwNywgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTUsIAorICAgIDIsIDIxOCwgMjQsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjMsIDk3LCA0MCwgMTcsIDEwLCAKICAgICAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAKLSAgICA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCAKLSAgICA3NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCi0gICAgMjcsIDI1MiwgNTUsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCi0gICAgMjcsIDI1MiwgNTUsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDIxNywgOCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjEwLCAxMDksIDQwLCAxNywgCi0gICAgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKLSAgICAyNywgMjE3LCA4LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA3OSwgNDAsIDE3LCAxMCwgCi0gICAgMjcsIDIxNiwgMTkzLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAotICAgIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIyOCwgNjMsIDQwLCAxNywgCi0gICAgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA3OSwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCAKLSAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIAotICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIAotICAgIDEwMywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIAotICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAotICAgIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjgsIDY0LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgCisgICAgNzcsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU2LCAyLCAyMjMsIDk3LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NiwgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyNTIsIDU2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgNTYsIDIsIDIyOCwgNjQsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU2LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NiwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDksIDIsIDIyMywgOTcsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA5LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgMjI4LCA2NCwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOSwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTYsIDE5NCwgMiwgMjIzLCA5NywgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTk0LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTk0LCAyLCAyMjgsIDY0LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE2LCAxOTQsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMTYsIDE5NCwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyNDQsIDE0NCwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQ0LCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODMsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgzLCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgMjMzLCAKKyAgICAxMDQsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgMTEyLCAKKyAgICAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAKKyAgICA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIAogICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCi0gICAgMjcsIDIyOCwgNjMsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCi0gICAgMjcsIDIyOCwgNjMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA3OSwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDExMiwgMjMxLCAxOTMsIDIsIDIxOCwgMjMsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMjMsIDk2LCAKKyAgICAyNywgMjI4LCA2NCwgMiwgMjIzLCA5NywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjI4LCA2NCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDY0LCAyLCAyMjgsIDY0LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2NCwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTEyLCAyMzEsIDE5NCwgMiwgMjE4LCAyNCwgMTEyLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIyMywgOTcsIAogICAgIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjEwLCAxMDksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDQwLCAxNywgMTAsIAotICAgIDI3LCA3OSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjcsIDc5LCAyLCAyMjgsIDY0LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAKICAgICA3OSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIAotICAgIDIwMiwgNzcsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgCi0gICAgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyNDEsIDIxOSwgCi0gICAgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDY1LCAxNywgMTAsIAotICAgIDI3LCAyNTIsIDU1LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgCi0gICAgMjE3LCA4LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjE3LCAKLSAgICA4LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMTYsIDE5MywgCisgICAgMjAyLCA3NywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIzNCwgMTMxLCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDI0MSwgMjIwLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NiwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjUyLCA1NiwgMiwgMjM0LCAxMzEsIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU2LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTYsIDIsIDI0MSwgMjIwLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDksIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgMjM0LCAxMzEsIDY1LCAxNywgMTAsIDI3LCAyMTcsIAorICAgIDksIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCAyNDEsIDIyMCwgNjUsIDE3LCAxMCwgMjcsIDIxNiwgMTk0LCAKICAgICAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCA2NiwgNjUsIDE3LCAKICAgICAxMCwgMjcsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgCi0gICAgMTMwLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgCi0gICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAKLSAgICAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIAotICAgIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCi0gICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCA2NiwgCi0gICAgNjUsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIxMCwgMTEyLCAyLCA2NiwgNjUsIDE3LCAKLSAgICAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDY1LCAxNywgMTAsIAotICAgIDI3LCAyNDIsIDI0NSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgCi0gICAgMjQ0LCAxNDMsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyNDQsIAotICAgIDE0MywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjQsIAotICAgIDgyLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAKLSAgICAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzNCwgCi0gICAgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgMTAzLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIAotICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIAotICAgIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIAotICAgIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCA2NSwgCi0gICAgMTcsIDEwLCAyNywgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIAotICAgIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIAotICAgIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCi0gICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCAKLSAgICAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgMjE4LCAKLSAgICAyMywgMTEyLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMjIsIDY1LCAxNywgCi0gICAgMTAsIDI3LCA3OSwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA3OSwgCi0gICAgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgNzksIAotICAgIDIsIDIwMiwgNzcsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCi0gICAgMjcsIDI1MiwgNTUsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDE0NywgMTcsIDEwLCAKLSAgICAyNywgMjE3LCA4LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNjYsIDE0NywgMTcsIDEwLCAKLSAgICAyNywgMjE2LCAxOTMsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAotICAgIDI3LCAyMjEsIDE2NywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDE0NywgMTcsIDEwLCAKLSAgICAyNywgMjIwLCA2MCwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgMTAzLCAxNDcsIAotICAgIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIDE0NywgMTcsIAotICAgIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjQxLCAyMTksIDE0NywgMTcsIAotICAgIDEwLCAyNywgNzksIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAKLSAgICAyMjAsIDk0LCAyLCAyNDQsIDE2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyNDgsIDE4NSwgMTQ3LCAxNywgMTAsIAotICAgIDI3LCAyMjAsIDk0LCAyLCAyMzQsIDIwNiwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgCi0gICAgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTEyLCAyMzEsIDE5MywgCi0gICAgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCAxMTIsIDIzMSwgCi0gICAgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDExMiwgCi0gICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKLSAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIAotICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTUxLCAyLCAxMTIsIAotICAgIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMTUxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxMTIsIAotICAgIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCi0gICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIAotICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjAsIAotICAgIDYwLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKLSAgICAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgCi0gICAgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgCi0gICAgMiwgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjE3LCAKLSAgICA4MSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgCi0gICAgMjU0LCAxOTcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNzksIDQwLCAxNywgMTAsIAotICAgIDI3LCAyNDIsIDI0NSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA3OSwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDc5LCA0MCwgCi0gICAgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDc5LCAKLSAgICA0MCwgMTcsIDEwLCAyNywgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMTIyLCAyLCA3OSwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNzksIDQwLCAxNywgCi0gICAgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA3OSwgCi0gICAgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIAotICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA0MCwgCi0gICAgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjIzLCA5NiwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjIzLCA5NiwgCi0gICAgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDY1LCAxNywgMTAsIAotICAgIDI3LCAyMjEsIDE2NywgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAKLSAgICAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDE1MSwgMTQ3LCAxNywgMTAsIAotICAgIDI3LCAyMjEsIDE2NywgMiwgMTIyLCAxNDcsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIDEzMCwgMTQ3LCAxNywgCi0gICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDE0NywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAxNDcsIDE3LCAxMCwgCi0gICAgMjcsIDIyMCwgNjAsIDIsIDIzNCwgMTMwLCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCi0gICAgMjcsIDIxMCwgMTEyLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAxMTIsIDIsIDI0NCwgMTY0LCA0MCwgMTcsIDEwLCAyNywgCi0gICAgMTEyLCAyLCAyNDQsIDE2NCwgNTMsIDE3LCAyMjYsIDE0NiwgNDMsIDIyNiwgMywgMjI2LCAxNDYsIDQ0LCAyMjYsIDMsIDEwLCAKLSAgICAyNywgMjE3LCA4LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIDE1MSwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgCi0gICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgCi0gICAgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIAotICAgIDIxNywgOCwgMiwgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIAorICAgIDEzMSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAxMzEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjgsIAorICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgCisgICAgMjM0LCAxMzEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCAKKyAgICAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCAyMzQsIDEzMSwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjgsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTgsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE4LCAyLCAxMjIsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxOCwgMiwgMjM0LCAxMzEsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxOCwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgyLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMTAsIDExMiwgMiwgNjYsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyNTQsIDE5OCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTgsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDYsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MiwgMjQ2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDI0NCwgMTQ0LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDQsIDE0NCwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDQsIDIsIDIzNCwgMTMxLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAxNDQsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI0LCAKKyAgICA4MywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjI0LCA4MywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgCisgICAgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTIsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCAyMzQsIAorICAgIDEzMSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCAyMzMsIDEwNCwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgMTIyLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDIzNCwgMTMxLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDI0MSwgMjIwLCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgNjUsIAorICAgIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzEsIDY1LCAxNywgMTAsIDI3LCAKKyAgICA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDY0LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDY0LCAyLCAKKyAgICAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDY0LCAyLCAyMzQsIDEzMSwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2NCwgMiwgMjQxLCAyMjAsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIyMCwgMiwgCisgICAgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMjAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMjAsIDIsIDIxOCwgCisgICAgMjQsIDExMiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIzNCwgMTMxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNzksIAorICAgIDIsIDI0MSwgMjIwLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAyLCAyNDEsIDIyMCwgMTQ3LCAxNywgMTAsIDI3LCAyNTIsIDU2LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU2LCAyLCAyNDEsIDIyMCwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOSwgMiwgMjQxLCAyMjAsIDE0NywgMTcsIDEwLCAyNywgMjE2LCAxOTQsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxNiwgMTk0LCAyLCAyNDEsIDIyMCwgMTQ3LCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjgsIDIsIDI0MSwgMjIwLCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgNjEsIDIsIDI0MSwgMjIwLCAxNDcsIDE3LCAxMCwgMjcsIDIzNCwgMjUyLCAyLCAyMzMsIDEwNCwgMTQ3LCAKKyAgICAxNywgMTAsIDI3LCAyMzQsIDI1MiwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDY2LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDIyOCwgNjQsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIDI0MSwgMjIwLCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCA3OSwgMiwgMjQxLCAyMjAsIDE0NywgMTcsIDEwLCAyNywgCisgICAgMjIwLCA5NSwgMiwgMjQ0LCAxNjcsIDE0NywgMTcsIDEwLCAyNywgMjIwLCA5NSwgMiwgMjQ4LCAxODYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA5NSwgMiwgMjM0LCAyMDcsIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4MiwgMiwgMTEyLCAyMzEsIDE5NCwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgODIsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTgsIDIsIDExMiwgMjMxLCAxOTQsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5OCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NiwgMiwgMTEyLCAyMzEsIAorICAgIDE5NCwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ2LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAyLCAxMTIsIAorICAgIDIzMSwgMTk0LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjgsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgCisgICAgMTEyLCAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCAKKyAgICAxMTIsIDIzMSwgMTk0LCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTEyLCAKKyAgICAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMSwgMiwgMTEyLCAKKyAgICAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjgsIDIsIAorICAgIDExMiwgMjMxLCAxOTQsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE4LCAKKyAgICAyLCAxMTIsIDIzMSwgMTk0LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTgsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIwLCAKKyAgICA2MSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgCisgICAgMjM0LCAxMzEsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIAorICAgIDIyMywgOTcsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMjIzLCA5NywgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjgsIAorICAgIDIsIDIyMywgOTcsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxOCwgMiwgMjIzLCA5NywgNTMsIDE3LCAxMCwgMjcsIDIxNywgCisgICAgODIsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDI1NCwgMTk4LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTgsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDYsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NiwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYxLCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAxNTEsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjM0LCAxMzEsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDEzMSwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjIyLCAyOCwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxOCwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE4LCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDEyMiwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDIzNCwgMTMxLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYxLCAyLCAyMjMsIDk3LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjgsIDIsIDIyMywgOTcsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCAyMjMsIDk3LCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTgsIDIsIDIyMywgOTcsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYxLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYxLCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYxLCAyLCAyMzQsIDEzMSwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjgsIDIsIDI0MSwgMjIwLCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgMjQxLCAyMjAsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAyLCAxNTEsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjgsIDIsIDEyMiwgMTQ3LCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMjM0LCAxMzEsIDE0NywgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MSwgMiwgMTUxLCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDEyMiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDYxLCAyLCAyMzQsIDEzMSwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgyLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTAsIDExMiwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMTEyLCAyLCAyNDQsIDE2NSwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDExMiwgMiwgMjQ0LCAxNjUsIDUzLCAxNywgMjI2LCAxNDcsIDQzLCAyMjYsIDQsIDIyNiwgMTQ3LCA0NCwgMjI2LCA0LCAxMCwgCisgICAgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCAxNTEsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCAxMjIsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCAyMzQsIDEzMSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDksIAorICAgIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDksIDIsIDY2LCAyLCAyMzQsIDEzMSwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAKICAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIAotICAgIDEwLCAyNywgMTIyLCAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIAotICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgCi0gICAgMTY3LCAyLCAxNTEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDEyMiwgCi0gICAgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAKLSAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIAotICAgIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDEyMiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgCi0gICAgMjIyLCAyNywgMiwgMTIyLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgCi0gICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA2NiwgCi0gICAgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgCi0gICAgMiwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAKLSAgICAyMjAsIDYwLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIAotICAgIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgCi0gICAgMTMwLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAKLSAgICAyMTcsIDgxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCA3OSwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCAyLCAKLSAgICA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgCi0gICAgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKLSAgICAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgMTEyLCAyMzEsIAotICAgIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDQsIAotICAgIDE0MywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIDIsIDY2LCAKLSAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgCi0gICAgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgMTUxLCA2NSwgMTcsIAotICAgIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgMTUxLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCAKLSAgICAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzMsIAotICAgIDEwMywgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAKKyAgICAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMTIyLCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIAorICAgIDE2OCwgMiwgMTUxLCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjgsIDIsIDY2LCAyLCAxMjIsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAyLCA2NiwgCisgICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjgsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY4LCAKKyAgICAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCAxMjIsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMjgsIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyOCwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MSwgMiwgMTIyLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjEsIDIsIDEyMiwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYxLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgNjYsIAorICAgIDIsIDIzNCwgMTMxLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgNjYsIDIsIDIzNCwgMTMxLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjIwLCA2MSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQ4LCAyMTgsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE4LCAyLCAyMzQsIAorICAgIDEzMSwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxOCwgMiwgMjM0LCAxMzEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgODIsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyNTQsIDE5OCwgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk4LCAyLCA2NiwgMiwgCisgICAgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5OCwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTgsIDIsIAorICAgIDY2LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDYsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ2LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NiwgMiwgNjYsIDIsIDExMiwgMjMxLCAKKyAgICAxOTQsIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0NCwgMiwgMjM0LCAxMzEsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDQsIDIsIDIzNCwgMTMxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODMsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjQsIDgzLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgMTIyLCAyLCA2NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIAorICAgIDEyMiwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIzMywgMTA0LCAyLCAxNTEsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAyMzQsIDEzMSwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgMjM0LCAxMzEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjMzLCAKKyAgICAxMDQsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgCiAgICAgMjcsIDY2LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAKICAgICAyNywgNjYsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIAotICAgIDI3LCA2NiwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgMTUxLCA2NSwgMTcsIAotICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDIzNCwgMTMwLCAKLSAgICA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIAotICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAotICAgIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgCi0gICAgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMTIsIAotICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgCi0gICAgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKLSAgICAyNywgNzksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIAotICAgIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCAKLSAgICAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIAotICAgIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgCi0gICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCi0gICAgMTUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAKLSAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAKLSAgICAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIAotICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIDIsIDc5LCAKLSAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIAorICAgIDI3LCA2NiwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMSwgMiwgMTUxLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDIzNCwgMTMxLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMjAsIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIyMCwgMiwgNjYsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2NCwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIAorICAgIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDY0LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2NCwgMiwgMTUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2NCwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2NCwgCisgICAgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTYsIDIsIDIzNCwgMTMxLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCAKKyAgICAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCAyMzQsIDEzMSwgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDksIDIsIDIzNCwgMTMxLCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA5LCAyLCA2NiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMTcsIDksIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTk0LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMTUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5NCwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2OCwgMiwgMjM0LCAKKyAgICAxMzEsIDIsIDExMiwgMjMxLCAxOTQsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI4LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MSwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE4LCAyLCAxMjIsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgNjYsIAogICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCAyLCAKICAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDIsIDc5LCAKLSAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAKLSAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCi0gICAgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKLSAgICAyMzQsIDI1MSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgCi0gICAgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNjYsIAotICAgIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgCi0gICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODMsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIDEyMiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgzLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIAorICAgIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5OCwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTIsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxNTEsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTIsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxNTEsIAorICAgIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2NCwgMiwgMTUxLCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIAogICAgIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgCi0gICAgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNTIsIAotICAgIDU1LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgCi0gICAgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNjYsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIAotICAgIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjIsIDQsIDIxNCwgMTI4LCAyNTMsIDIzOCwgMjM0LCA0LCAyMTgsIDEzMCwgCi0gICAgNSwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgNzgsIDIxNCwgMTI4LCAyNTMsIDIzOCwgMjM0LCA0LCAyMTgsIDEzMCwgNSwgNTMsIAotICAgIDE3LCAxMCwgMjcsIDI1NCwgMTUzLCA1MywgMTcsIDEwLCAyNywgMjU0LCAxODMsIDUzLCAxNywgMTAsIDI3LCAyMzAsIDE1MywgCi0gICAgNTMsIDE3LCAxMCwgMjcsIDIyMiwgNSwgNTMsIDE3LCAxMCwgMjcsIDIyMywgMTQzLCA1MywgMTcsIDEwLCAyNywgMjU0LCAKLSAgICAxNzIsIDUzLCAxNywgMTAsIDI3LCAyMTIsIDQ5LCA1MywgMTcsIDEwLCAyNywgMjIyLCA0LCA1MywgMTcsIDEwLCAyNywgCi0gICAgMjIyLCAzLCAyNTQsIDE3MiwgMjEyLCA0OCwgMTAsIDI3LCAyMzUsIDEzNCwgMjIzLCAzNCwgNTAsIDEwLCAyNywgMjUxLCAKLSAgICAyMzAsIDI1NCwgMzksIDI1NCwgNDAsIDQ1LCAyMjEsIDE1NiwgNDUsIDIyMSwgNDUsIDQ1LCAyMjAsIDIzMywgNDUsIDIyMCwgCi0gICAgMjIyLCA0NSwgMjIwLCAyMTEsIDQ1LCAyMjAsIDIwMCwgNDUsIDIyMCwgMTg5LCA0NSwgMjIwLCAxNzgsIDQ1LCAyMjAsIAotICAgIDE2NywgNDUsIDIyMSwgMTU1LCA0NSwgMjIxLCAxNDQsIDQ1LCAyMjEsIDEzMywgNDUsIDIyMSwgMTIyLCA0NSwgMjIxLCAKLSAgICAxMTEsIDQ1LCAyMjEsIDEwMCwgNDUsIDIyMSwgODksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0OSwgMjE5LCAyMjQsIAotICAgIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAxMDksIDI0OSwgMjE5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAxMDksIDI0MywgCi0gICAgMjI5LCAyMTgsIDEyOSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ5LCAyMjYsIDIyNCwgMTk0LCAyNDQsIDIwLCAKLSAgICAzMSwgNjcsIDIyMCwgMTUwLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDUsIDMxLCA3OCwgMjI0LCAxOTQsIDI0NCwgCi0gICAgMjAsIDMxLCA2NywgMjI0LCAxMywgNzgsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA3MSwgMjMzLCAyMCwgMTI3LCAKLSAgICAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNzEsIDIzMywgMjAsIDI1MSwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgCi0gICAgMzEsIDY3LCAyMDMsIDI0NSwgMTYzLCAzOCwgMjcsIDQzLCAyNDIsIDI3LCAzOCwgMjcsIDQ0LCAyNDIsIDI3LCAzOCwgNTIsIAotICAgIDIxNiwgODksIDQzLCAyNDIsIDI3LCAzOCwgNTIsIDIxNiwgODksIDQ0LCAyNDIsIDI3LCAzOCwgMjMxLCAyMzMsIDQzLCAKLSAgICAyNDIsIDI3LCAzOCwgMjMxLCAyMzMsIDQ0LCAyNDIsIDI3LCAzOCwgMjQ5LCAxOTcsIDIzMSwgMjMyLCAyMjQsIDE5NCwgCi0gICAgMjQ0LCAyMCwgMzEsIDY3LCAxMTMsIDU5LCAyMzMsIDU2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDUsIDE2MCwgCi0gICAgMjQ4LCAxNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMTUxLCAyNDgsIDE1NiwgMjI0LCAxOTQsIDI0NCwgCi0gICAgMjAsIDMxLCA2NywgMTIxLCAyMzIsIDIxMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjEyLCAzMiwgMTIxLCAyMzIsIAotICAgIDIxMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDIyNiwgMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgCi0gICAgNDQsIDIyNiwgMywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDI0OSwgOTksIDEyNywgMjI0LCAxOTQsIDI0NCwgCi0gICAgMjAsIDMxLCA2NywgNDQsIDI0OSwgOTksIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDIxNiwgNiwgMjIwLCAKLSAgICA1MywgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDIyNCwgMTk0LCAKLSAgICAyNDQsIDIwLCAzMSwgNjcsIDQzLCA4NSwgMjMzLCAyMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgODUsIAotICAgIDIzMywgMjAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDUyLCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgCi0gICAgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAKLSAgICAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIAotICAgIDI0NCwgMjAsIDMxLCA2NywgNDMsIDI0OSwgMTYxLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyNDksIAotICAgIDE2MSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNzEsIDI0OSwgMTYxLCAxMjcsIDIyNCwgMTk0LCAKLSAgICAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA3MSwgMjQ5LCAxNjEsIDEyNywgMjIwLCAxMzEsIDI0NywgMTIwLCA3MSwgMjIwLCAxMzEsIAotICAgIDI0NywgMTIwLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNDIsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCAKLSAgICA2NywgNDQsIDQyLCAxMjcsIDI0OCwgMTU1LCAyMjYsIDExOSwgMjUwLCAxNzIsIDIyNiwgMTE5LCAyMTIsIDMyLCAyMjYsIAotICAgIDExOSwgNTIsIDIxMiwgMzIsIDIyNiwgMTE5LCAyNDgsIDE1NSwgMTIxLCAyMzIsIDIxMywgMjUwLCAxNzIsIDEyMSwgMjMyLCAKLSAgICAyMTMsIDIxMiwgMzIsIDEyMSwgMjMyLCAyMTMsIDQsIDI0OSwgMjE5LCA0LCAxMDksIDI0OSwgMjE5LCA0LCAyNDMsIDIyOSwgCi0gICAgMjE4LCAxMjksIDQsIDIyMCwgMTUwLCA0LCAyNDksIDIyNiwgNCwgMjI0LCAxMywgNzgsIDQsIDI0NSwgMzEsIDc4LCA0LCAKLSAgICAyNDUsIDE2MCwgMjQ4LCAxNTYsIDQsIDQzLCAyMjYsIDMsIDQsIDQ0LCAyMjYsIDMsIDQsIDQzLCAyNDksIDk5LCAxMjcsIDQsIAotICAgIDQ0LCAyNDksIDk5LCAxMjcsIDQsIDQzLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNCwgNDQsIDIxNiwgNiwgMjIwLCA1MywgCi0gICAgMTI3LCA0LCA1NCwgNTAsIDQsIDI1NCwgMTI2LCA0LCAyNTMsIDIxNiwgNCwgOTYsIDUwLCA0LCAyNDAsIDE2NywgNCwgMjMzLCAKLSAgICAxNSwgNTAsIDQsIDI0MiwgMTMwLCA1MCwgNCwgMjQ1LCA5OCwgNTAsIDQsIDIyMywgNTAsIDIxOSwgNDYsIDQsIDI0NywgCi0gICAgMTMyLCA1MCwgNCwgMjI1LCAxODIsIDUwLCA0LCAyNDksIDIxNywgMjUzLCAyMDYsIDEwLCAyNDQsIDE2NCwgNTMsIDE3LCAKLSAgICAxMCwgMjE3LCA0NCwgMiwgMjQ0LCAxNjQsIDQ4LCAxMCwgMjQ4LCAxODMsIDUzLCAxNywgMTAsIDIxNywgNzgsIDI0NCwgMSwgCi0gICAgMTAsIDIzNCwgMjA0LCA1MywgMTcsIDEwLCAyNDQsIDE2NiwgNTMsIDE3LCAxMCwgMjQ0LCAxNjYsIDE0NywgMTcsIDEwLCAKLSAgICAyNDgsIDE4NSwgNTMsIDE3LCAxMCwgMjQ4LCAxODUsIDE0NywgMTcsIDEwLCAyMzQsIDIwNiwgNTMsIDE3LCAxMCwgMjM0LCAKLSAgICAyMDYsIDE0NywgMTcsIDEwLCAyMjAsIDk0LCA1MywgMTcsIDEwLCAyMjAsIDk0LCAxNDcsIDE3LCAxMCwgMjE4LCA0NiwgNTMsIAotICAgIDE3LCAxMCwgMjE4LCA0NiwgMTQ3LCAxNywgMTAsIDEsIDIwMiwgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMzEsIDIyOCwgCi0gICAgNzcsIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgMjMxLCAyMjgsIDc3LCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNzcsIAotICAgIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA3NywgNTMsIAotICAgIDE3LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDUzLCAKLSAgICAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA0MCwgMTcsIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNTMsIDE3LCAKLSAgICAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA2NSwgMTcsIDEwLCAxLCA3OSwgCi0gICAgMiwgMjAyLCA3NywgMTQ3LCAxNywgMTAsIDEsIDExMiwgNTMsIDE3LCAxMCwgMSwgMTEyLCA0MCwgMTcsIDEwLCAxLCAyNTIsIAotICAgIDU1LCA1MywgMTcsIDEwLCAxLCAyNTIsIDU1LCA0MCwgMTcsIDEwLCAxLCAyNTIsIDU1LCA2NSwgMTcsIDEwLCAxLCAyNTIsIAotICAgIDU1LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NSwgNTMsIDE3LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NSwgCi0gICAgNDAsIDE3LCAxMCwgMSwgMjE3LCA4LCA1MywgMTcsIDEwLCAxLCAyMTcsIDgsIDQwLCAxNywgMTAsIDEsIDIxNywgOCwgNjUsIAotICAgIDE3LCAxMCwgMSwgMjE3LCA4LCAxNDcsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDUzLCAxNywgMTAsIDEsIDIxNiwgMTkzLCA0MCwgCi0gICAgMTcsIDEwLCAxLCAyMTYsIDE5MywgNjUsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDE0NywgMTcsIDEwLCAxLCAxNTEsIDUzLCAKLSAgICAxNywgMTAsIDEsIDE1MSwgNDAsIDE3LCAxMCwgMSwgMTUxLCA2NSwgMTcsIDEwLCAxLCAxNTEsIDE0NywgMTcsIDEwLCAxLCAKLSAgICAxMjIsIDUzLCAxNywgMTAsIDEsIDEyMiwgNDAsIDE3LCAxMCwgMSwgMTIyLCA2NSwgMTcsIDEwLCAxLCAxMjIsIDE0NywgMTcsIAotICAgIDEwLCAxLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDEsIDIzNCwgMTMwLCA2NSwgCi0gICAgMTcsIDEwLCAxLCAyMzQsIDEzMCwgMTQ3LCAxNywgMTAsIDEsIDI0OCwgMTk2LCA1MywgMTcsIDEwLCAxLCAyNDgsIDE5NiwgCi0gICAgNDAsIDE3LCAxMCwgMSwgMjE2LCAyMDMsIDUzLCAxNywgMTAsIDEsIDIxNiwgMjAzLCA0MCwgMTcsIDEwLCAxLCAyMjMsIDk2LCAKLSAgICA1MywgMTcsIDEwLCAxLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAxLCAyMTAsIDEwOSwgNTMsIDE3LCAxMCwgMSwgMjEwLCAxMDksIAotICAgIDQwLCAxNywgMTAsIDEsIDIyMSwgMTY3LCA1MywgMTcsIDEwLCAxLCAyMjEsIDE2NywgNDAsIDE3LCAxMCwgMSwgMjIxLCAKLSAgICAxNjcsIDY1LCAxNywgMTAsIDEsIDIyMSwgMTY3LCAxNDcsIDE3LCAxMCwgMSwgMjIwLCA2MCwgNTMsIDE3LCAxMCwgMSwgCi0gICAgMjIwLCA2MCwgNDAsIDE3LCAxMCwgMSwgMjIwLCA2MCwgNjUsIDE3LCAxMCwgMSwgMjIwLCA2MCwgMTQ3LCAxNywgMTAsIDEsIAotICAgIDIyMiwgMjcsIDUzLCAxNywgMTAsIDEsIDIyMiwgMjcsIDQwLCAxNywgMTAsIDEsIDIyMiwgMjcsIDY1LCAxNywgMTAsIDEsIAotICAgIDIyMiwgMjcsIDE0NywgMTcsIDEwLCAxLCAyNDgsIDIxNywgNTMsIDE3LCAxMCwgMSwgMjQ4LCAyMTcsIDQwLCAxNywgMTAsIAotICAgIDEsIDI0OCwgMjE3LCA2NSwgMTcsIDEwLCAxLCAyNDgsIDIxNywgMTQ3LCAxNywgMTAsIDEsIDIxNywgODEsIDUzLCAxNywgCi0gICAgMTAsIDEsIDIxNywgODEsIDQwLCAxNywgMTAsIDEsIDIxNywgODEsIDY1LCAxNywgMTAsIDEsIDIxNywgODEsIDE0NywgMTcsIAotICAgIDEwLCAxLCAyMTAsIDExMiwgNTMsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDQwLCAxNywgMTAsIDEsIDIxMCwgMTEyLCA2NSwgCi0gICAgMTcsIDEwLCAxLCAyMTAsIDExMiwgMTQ3LCAxNywgMTAsIDEsIDI1NCwgMTk3LCA1MywgMTcsIDEwLCAxLCAyNTQsIDE5NywgCi0gICAgNDAsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDY1LCAxNywgMTAsIDEsIDI1NCwgMTk3LCAxNDcsIDE3LCAxMCwgMSwgMjQyLCAKLSAgICAyNDUsIDUzLCAxNywgMTAsIDEsIDI0MiwgMjQ1LCA0MCwgMTcsIDEwLCAxLCAyNDIsIDI0NSwgNjUsIDE3LCAxMCwgMSwgCi0gICAgMjQyLCAyNDUsIDE0NywgMTcsIDEwLCAxLCAyNDQsIDE0MywgNTMsIDE3LCAxMCwgMSwgMjQ0LCAxNDMsIDQwLCAxNywgMTAsIAotICAgIDEsIDI0NCwgMTQzLCA2NSwgMTcsIDEwLCAxLCAyNDQsIDE0MywgMTQ3LCAxNywgMTAsIDEsIDIyNCwgODIsIDUzLCAxNywgCi0gICAgMTAsIDEsIDIyNCwgODIsIDQwLCAxNywgMTAsIDEsIDIyNCwgODIsIDY1LCAxNywgMTAsIDEsIDIyNCwgODIsIDE0NywgMTcsIAotICAgIDEwLCAxLCAyMzQsIDI1MSwgNTMsIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDQwLCAxNywgMTAsIDEsIDIzNCwgMjUxLCA2NSwgCi0gICAgMTcsIDEwLCAxLCAyMzQsIDI1MSwgMTQ3LCAxNywgMTAsIDEsIDIzMywgMTAzLCA1MywgMTcsIDEwLCAxLCAyMzMsIDEwMywgCi0gICAgNDAsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDY1LCAxNywgMTAsIDEsIDIzMywgMTAzLCAxNDcsIDE3LCAxMCwgMSwgNjYsIDUzLCAKLSAgICAxNywgMTAsIDEsIDY2LCA0MCwgMTcsIDEwLCAxLCA2NiwgNjUsIDE3LCAxMCwgMSwgNjYsIDE0NywgMTcsIDEwLCAxLCAyMjgsIAotICAgIDYzLCA1MywgMTcsIDEwLCAxLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAxLCAyMjgsIDYzLCA2NSwgMTcsIDEwLCAxLCAyMjgsIAotICAgIDYzLCAxNDcsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCA0MCwgMTcsIDEwLCAxLCAKLSAgICAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAxLCAyMTIsIDMxLCA1MywgMTcsIDEwLCAKLSAgICAxLCAyMTIsIDMxLCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAxLCAxMTIsIDIzMSwgMTkzLCAKLSAgICA0MCwgMTcsIDEwLCAxLCA3OSwgNTMsIDE3LCAxMCwgMSwgNzksIDQwLCAxNywgMTAsIDEsIDc5LCA2NSwgMTcsIDEwLCAxLCAKLSAgICA3OSwgMTQ3LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDUzLCAxNywgMTAsIDI3LCAKLSAgICAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAKLSAgICAyMDIsIDc3LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMjcsIAotICAgIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIAotICAgIDIwMiwgMjUyLCA0MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCi0gICAgMiwgMTEyLCA0MCwgMTcsIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDczLCAyMTksIDE4LCAxMjYsIDI0NSwgMzEsIDc4LCAKLSAgICAxMjYsIDIyMywgMjU0LCA3OCwgMTI2LCA1NCwgNTAsIDEyNiwgMjQ3LCAxMzIsIDUwLCAxMjYsIDIyNSwgMTgyLCA1MCwgCi0gICAgMTI2LCAyNTQsIDEyNiwgMTI2LCAyNTQsIDU3LCAxMjYsIDQzLCAyMjYsIDMsIDEyNiwgNDQsIDIyNiwgMywgMTI2LCAyNTMsIAotICAgIDIxNiwgMTI2LCA5NiwgNTAsIDEyNiwgMjQ5LCAyMTksIDEyNiwgMjQwLCAxNjcsIDEyNiwgMjQzLCAyMjksIDIxOCwgMTI5LCAKLSAgICAxMjYsIDIxOSwgNDYsIDEyNiwgMjEsIDIxMCwgODYsIDEyNiwgMjEsIDExMCwgMTI2LCAyMSwgMTA1LCAxMjYsIDIxLCAxNTgsIAotICAgIDEyNiwgMjEsIDE2MSwgMTI2LCAyMSwgMTg5LCAxMjYsIDIxLCAxOTQsIDEyNiwgMjEsIDE5OCwgMTI2LCAyMSwgMTk1LCAKLSAgICAxMjYsIDIxLCAyMDAsIDEyNiwgMjQ5LCAyMjYsIDEyNiwgMjIwLCAxNTAsIDEyNiwgMjMzLCAxNSwgNTAsIDEyNiwgMjQ1LCAKLSAgICA5OCwgNTAsIDEyNiwgMjQyLCAxMzAsIDUwLCAxMjYsIDIyNCwgMTMsIDc4LCAxMjYsIDI0OSwgMjE3LCAyNTMsIDIwNiwgCi0gICAgMTI2LCA3LCA2LCAxLCA2MSwgMTI2LCA3LCA2LCAxLCAyNTMsIDE1OCwgMTI2LCA3LCA2LCAxLCAyNTEsIDY2LCAxMjYsIDcsIAotICAgIDYsIDEsIDI0OSwgNjAsIDEyNiwgNywgNiwgMSwgNzUsIDEyNiwgNywgNiwgMSwgMjQ1LCA2LCAxMjYsIDcsIDYsIDEsIDI0MywgCi0gICAgMjAyLCAxMjYsIDcsIDYsIDEsIDI0MiwgNjAsIDEyNiwgNywgNiwgMSwgNzMsIDEyNiwgNywgNiwgMSwgMjM1LCAxNDQsIAotICAgIDEyNiwgNywgNiwgMSwgMjM1LCAyMywgMTI2LCA3LCA2LCAxLCAxNTYsIDEyNiwgNywgNiwgMSwgMTkzLCAxMjYsIDcsIDYsIAotICAgIDEsIDIzMCwgMjUsIDEyNiwgNywgNiwgMSwgNzYsIDEyNiwgNywgNiwgMSwgMjI2LCAxMDUsIDEyNiwgNywgNiwgMSwgMjI0LCAKLSAgICA5NiwgMTI2LCA3LCA2LCAxLCAxNTMsIDEyNiwgNywgNiwgMSwgMjIyLCA5MSwgMTI2LCA3LCA2LCAxLCAyMTcsIDE1MiwgCi0gICAgMTI2LCA3LCA2LCAxLCA3MCwgMTI2LCA3LCA2LCAxLCAyMTQsIDEwNSwgMTI2LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjYsIDcsIAotICAgIDYsIDEsIDIxMSwgMTc4LCAxMjYsIDcsIDYsIDEsIDIxMSwgMTE3LCAxMjYsIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjYsIDQzLCAKLSAgICA0MiwgMTI3LCAxMjYsIDIyMywgNTAsIDIxOSwgNDYsIDEyNiwgNDQsIDQyLCAxMjcsIDEyNiwgMjUwLCAzMSwgMjU1LCAxNCwgCi0gICAgMTI2LCAxMjEsIDIzMiwgMjEzLCAxMjYsIDI0MiwgMTM3LCAyNTUsIDE0LCAxMjYsIDcsIDQsIDEsIDYxLCAxMjYsIDcsIDQsIAotICAgIDEsIDI1MywgMTU4LCAxMjYsIDcsIDQsIDEsIDI1MSwgNjYsIDEyNiwgNywgNCwgMSwgMjQ5LCA2MCwgMTI2LCA3LCA0LCAxLCAKLSAgICA3NSwgMTI2LCA3LCA0LCAxLCAyNDUsIDYsIDEyNiwgNywgNCwgMSwgMjQzLCAyMDIsIDEyNiwgNywgNCwgMSwgMjQyLCA2MCwgCi0gICAgMTI2LCA3LCA0LCAxLCA3MywgMTI2LCA3LCA0LCAxLCAyMzUsIDE0NCwgMTI2LCA3LCA0LCAxLCAyMzUsIDIzLCAxMjYsIDcsIAotICAgIDQsIDEsIDE1NiwgMTI2LCA3LCA0LCAxLCAxOTMsIDEyNiwgNywgNCwgMSwgMjMwLCAyNSwgMTI2LCA3LCA0LCAxLCA3NiwgCi0gICAgMTI2LCA3LCA0LCAxLCAyMjYsIDEwNSwgMTI2LCA3LCA0LCAxLCAyMjQsIDk2LCAxMjYsIDcsIDQsIDEsIDE1MywgMTI2LCA3LCAKLSAgICA0LCAxLCAyMjIsIDkxLCAxMjYsIDcsIDQsIDEsIDIxNywgMTUyLCAxMjYsIDcsIDQsIDEsIDcwLCAxMjYsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA1LCAxMjYsIDcsIDQsIDEsIDIxMiwgOTgsIDEyNiwgNywgNCwgMSwgMjExLCAxNzgsIDEyNiwgNywgNCwgMSwgCi0gICAgMjExLCAxMTcsIDEyNiwgNywgNCwgMSwgMjEwLCAxNTksIDEyNiwgNDMsIDI0OSwgOTksIDEyNywgMTI2LCA2NywgMjMyLCAKLSAgICAyMTMsIDEyNiwgNDQsIDI0OSwgOTksIDEyNywgMTI2LCAxODIsIDEyNiwgNDMsIDcxLCAyMjYsIDMsIDEyNiwgNDQsIDcxLCAKLSAgICAyMjYsIDMsIDEwMSwgMTA5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDEwMSwgNDMsIDI0OSwgMTYxLCAxMjcsIDEwMSwgNDQsIAotICAgIDI0OSwgMTYxLCAxMjcsIDEwMSwgMTA5LCAyNDksIDIxOSwgMTAxLCA1NiwgMjMwLCAyMjQsIDI0NywgMTIwLCAxMDEsIDU2LCAKLSAgICAxLCAyMTEsIDIyNywgMTAxLCA1NiwgMSwgNCwgNjEsIDEwMSwgNTYsIDEsIDQsIDczLCAxMDEsIDU2LCAxLCA0LCA3MCwgCi0gICAgMTAxLCA1NiwgMSwgNCwgNzUsIDEwMSwgNTYsIDEsIDQsIDc2LCAxMDEsIDU2LCAxLCA0LCAxOTEsIDEwMSwgNTYsIDEsIDQsIAotICAgIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCA0LCAyMTAsIDI0NCwgMTAxLCA1NiwgMSwgNCwgMjE1LCAxMTgsIDEwMSwgMjM0LCAKLSAgICAyMDEsIDIyNCwgMTczLCAyMTksIDMxLCA3OCwgMTAxLCA1NiwgMSwgNjEsIDEwMSwgNTYsIDEsIDczLCAxMDEsIDU2LCAxLCAKLSAgICA3MCwgMTAxLCA1NiwgMSwgNzUsIDEwMSwgNTYsIDEsIDc2LCAxMDEsIDU2LCAxLCAxNzYsIDEwMSwgNTYsIDEsIDIzNCwgOTIsIAotICAgIDEwMSwgNTYsIDEsIDIzMywgMjE3LCAxMDEsIDU2LCAxLCAyMzQsIDE4MiwgMTAxLCA1NiwgMSwgMjM0LCAyOCwgMTAxLCA1NiwgCi0gICAgMSwgMjA2LCAxMDEsIDU2LCAxLCAyMTksIDE5MSwgMTAxLCA1NiwgMSwgMjE4LCA4MywgMTAxLCA1NiwgMSwgMjIxLCAxODEsIAotICAgIDEwMSwgNTYsIDEsIDIxOSwgNTgsIDEwMSwgNTYsIDEsIDIxNywgMTA1LCAxMDEsIDU2LCAxLCAyMTYsIDExNywgMTAxLCA1NiwgCi0gICAgMSwgMjE1LCAxMTgsIDEwMSwgNTYsIDEsIDIxNywgMjIsIDEwMSwgNTYsIDEsIDExMSwgMTAxLCA1NiwgMSwgMTk3LCAxMDEsIAotICAgIDU2LCAxLCAyMjgsIDIzMywgMTAxLCA1NiwgMSwgMjI3LCAyMzcsIDEwMSwgNTYsIDEsIDIyOSwgMTA3LCAxMDEsIDU2LCAxLCAKLSAgICAyMjgsIDc0LCAxMDEsIDU2LCAxLCAxNjIsIDEwMSwgNTYsIDEsIDI0MSwgMTgwLCAxMDEsIDU2LCAxLCAyNDAsIDIyMiwgCi0gICAgMTAxLCA1NiwgMSwgMjQxLCAyMzgsIDEwMSwgNTYsIDEsIDI0MSwgNjgsIDEwMSwgNTYsIDEsIDE4NCwgMTAxLCA1NiwgMSwgCi0gICAgMjMwLCAyMzAsIDEwMSwgNTYsIDEsIDIzMCwgMTAyLCAxMDEsIDU2LCAxLCAyMzEsIDkxLCAxMDEsIDU2LCAxLCAyMzAsIAotICAgIDE2MSwgMTAxLCA1NiwgMSwgMTkxLCAxMDEsIDU2LCAxLCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgMjEwLCAyNDQsIDEwMSwgCi0gICAgNTYsIDEsIDIwNSwgMTAxLCA1NiwgMSwgMjIzLCAzNSwgMTAxLCA1NiwgMSwgMjIyLCAxNDAsIDEwMSwgNTYsIDEsIDIyMywgCi0gICAgMTI4LCAxMDEsIDU2LCAxLCAyMjIsIDIxMSwgMTAxLCA1NiwgMSwgMjEyLCA2NSwgMTAxLCA1NiwgMSwgMjMwLCAyNSwgMTAxLCAKLSAgICA1NiwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAxMDEsIDU2LCAyMjAsIDE1NSwgMjE5LCAzMSwgNzgsIDEwMSwgMjQsIDI0NCwgCi0gICAgMTAzLCAxMDEsIDI0LCAxLCAyMzQsIDU4LCAxMDEsIDI0LCAxLCAyMTgsIDIxNSwgMTAxLCAyNCwgMSwgMjM0LCA1MSwgMTAxLCAKLSAgICAyNCwgMSwgMjI4LCAyMjYsIDEwMSwgMjQsIDEsIDIyOCwgMjI0LCAxMDEsIDI0LCAxLCAyMjgsIDIyMywgMTAxLCAyNCwgMSwgCi0gICAgMjE2LCAxMDEsIDEwMSwgMjQsIDEsIDIxOCwgMjA0LCAxMDEsIDI0LCAxLCAyMjMsIDI2LCAxMDEsIDI0LCAxLCAyMjMsIDIxLCAKLSAgICAxMDEsIDI0LCAxLCAyMjMsIDE4LCAxMDEsIDI0LCAxLCAyMjMsIDExLCAxMDEsIDI0LCAxLCAyMjMsIDYsIDEwMSwgMjQsIDEsIAotICAgIDIyMywgMSwgMTAxLCAyNCwgMSwgMjIzLCAxMiwgMTAxLCAyNCwgMSwgMjIzLCAyNCwgMTAxLCAyNCwgMSwgMjMwLCAyMTcsIAotICAgIDEwMSwgMjQsIDEsIDIyNSwgOTUsIDEwMSwgMjQsIDEsIDIxOCwgMjEyLCAxMDEsIDI0LCAxLCAyMjUsIDg0LCAxMDEsIDI0LCAKLSAgICAxLCAyMTksIDE0OCwgMTAxLCAyNCwgMSwgMjE4LCAyMDksIDEwMSwgMjQsIDEsIDIzNiwgNTYsIDEwMSwgMjQsIDEsIDI1MCwgCi0gICAgNDYsIDEwMSwgMjQsIDEsIDIxOCwgMjE5LCAxMDEsIDI0LCAxLCAyNTAsIDEwNiwgMTAxLCAyNCwgMSwgMjM0LCAxMTAsIAotICAgIDEwMSwgMjQsIDEsIDIxNiwgMTczLCAxMDEsIDI0LCAxLCAyMjUsIDEzMSwgMTAxLCAyNCwgMSwgMjQxLCAxNzIsIDEwMSwgCi0gICAgMjQsIDEsIDYxLCAxMDEsIDI0LCAxLCAyNTQsIDI0MywgMTAxLCAyNCwgMSwgMTkxLCAxMDEsIDI0LCAxLCAyMTEsIDkyLCAKLSAgICAxMDEsIDI0LCAxLCAyNDUsIDExNywgMTAxLCAyNCwgMSwgNzUsIDEwMSwgMjQsIDEsIDIxMSwgMzYsIDEwMSwgMjQsIDEsIAotICAgIDIxMSwgNDcsIDEwMSwgMjQsIDEsIDc2LCAxMDEsIDI0LCAxLCAyMTIsIDY1LCAxMDEsIDI0LCAxLCAyMTIsIDYyLCAxMDEsIAotICAgIDI0LCAxLCAyMjYsIDIzNCwgMTAxLCAyNCwgMSwgMjEwLCAyNDQsIDEwMSwgMjQsIDEsIDcwLCAxMDEsIDI0LCAxLCAyMTIsIAotICAgIDExLCAxMDEsIDI0LCAxLCAyMTIsIDIyLCAxMDEsIDI0LCAxLCAyMTEsIDI1MCwgMTAxLCAyNCwgMSwgMjEwLCAyMTIsIDEwMSwgCi0gICAgMjQsIDEsIDI0NSwgNTUsIDEwMSwgMjQsIDEsIDIxMSwgOCwgMTAxLCAyNCwgMSwgNzMsIDEyNiwgMjUwLCAxNzYsIDUwLCAKLSAgICAxMjYsIDIyNCwgMjI4LCA1MCwgMTI2LCAyMjgsIDUyLCA1MCwgMTI2LCAyMzEsIDIzMiwgMTI2LCAyNTEsIDEzNSwgMTMwLCAKLSAgICAxMjYsIDIxMSwgNDAsIDUwLCAxMjYsIDIxMSwgMjE3LCA1MCwgMTAxLCAyNDQsIDE4LCAxOTIsIDIxMywgMjM5LCAxMDEsIAotICAgIDE0MCwgNzQsIDEwMSwgMjE0LCAxNTMsIDc0LCAxMDEsIDk3LCA3NCwgMTAxLCAyNDYsIDEwNCwgNzQsIDEwMSwgODUsIDIxOCwgCi0gICAgMjM0LCAxMDEsIDcxLCAyNTAsIDM1LCAyMzUsIDIwNCwgMjU0LCA5OSwgMjU0LCAxMjAsIDIzNSwgMjA0LCAyNTQsIDk5LCAKLSAgICAyMjAsIDEzNywgMjM1LCAyMDQsIDI1NCwgOTksIDIxNiwgMjM2LCAyMjYsIDI0OSwgMjIzLCA3MiwgMjUwLCAxNDIsIDIyMywgCi0gICAgNzIsIDI1MCwgMTQyLCA2MiwgNTcsIDMsIDI1MywgMTQyLCA2MSwgNjIsIDU3LCAzLCAyNTMsIDExMSwgNzUsIDYyLCA1NywgCi0gICAgMywgMjUzLCAxMjAsIDczLCA2MiwgNTcsIDMsIDI1MywgODgsIDc2LCA2MiwgNTcsIDMsIDI1MywgMTM4LCA3MCwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDE1NywgMjQ4LCAyMjEsIDYyLCA1NywgMywgMjUzLCAxMDQsIDI0OCwgOTAsIDYyLCA1NywgMywgMjUzLCAxNDQsIAotICAgIDI0OCwgMywgNjIsIDU3LCAzLCAyNTMsIDEzNCwgMjQ3LCAxNDUsIDYyLCA1NywgMywgMjUzLCA5OCwgMjQ2LCA3OCwgNjIsIAotICAgIDU3LCAzLCAyNTMsIDkyLCAyMzUsIDE0MSwgNjIsIDU3LCAzLCAyNTMsIDEwMywgMjM1LCAxMjYsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxMTMsIDIzNSwgNjgsIDYyLCA1NywgMywgMjUzLCA4NCwgMjM1LCA1MSwgNjIsIDU3LCAzLCAyNTMsIDcyLCAxNzYsIDYyLCAKLSAgICA1NywgMywgMjUzLCAxMDUsIDIzNCwgMTgyLCA2MiwgNTcsIDMsIDI1MywgODIsIDIzNCwgOTIsIDYyLCA1NywgMywgMjUzLCAKLSAgICA3OSwgMjM0LCAyOCwgNjIsIDU3LCAzLCAyNTMsIDY4LCAyMzMsIDIxNywgNjIsIDU3LCAzLCAyNTMsIDY5LCAxODQsIDYyLCAKLSAgICA1NywgMywgMjUzLCAxMzUsIDIzMSwgOTEsIDYyLCA1NywgMywgMjUzLCA3NiwgMjMwLCAyMzAsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxMzMsIDIzMCwgMTYxLCA2MiwgNTcsIDMsIDI1MywgMTI1LCAyMzAsIDEwMiwgNjIsIDU3LCAzLCAyNTMsIDE0NiwgMTk3LCAKLSAgICA2MiwgNTcsIDMsIDI1MywgMTI0LCAyMjksIDEwNywgNjIsIDU3LCAzLCAyNTMsIDExOCwgMjI4LCAyMzMsIDYyLCA1NywgMywgCi0gICAgMjUzLCA5NywgMjI4LCA3NCwgNjIsIDU3LCAzLCAyNTMsIDk0LCAyMjcsIDIzNywgNjIsIDU3LCAzLCAyNTMsIDE1MywgMTkwLCAKLSAgICA2MiwgNTcsIDMsIDI1MywgNzcsIDIyNSwgMjIxLCA2MiwgNTcsIDMsIDI1MywgMTEwLCAyMjUsIDEwOCwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDEzNywgMjI1LCAxNiwgNjIsIDU3LCAzLCAyNTMsIDk5LCAyMjQsIDE1MCwgNjIsIDU3LCAzLCAyNTMsIDEzMiwgCi0gICAgMjI0LCA4OCwgNjIsIDU3LCAzLCAyNTMsIDcxLCAyMjQsIDY5LCA2MiwgNTcsIDMsIDI1MywgMTI3LCAyMjQsIDUzLCA2MiwgCi0gICAgNTcsIDMsIDI1MywgMTE2LCAyMjQsIDQyLCA2MiwgNTcsIDMsIDI1MywgODksIDIwNSwgNjIsIDU3LCAzLCAyNTMsIDEyMSwgCi0gICAgMjIzLCAxMjgsIDYyLCA1NywgMywgMjUzLCA5NiwgMjIzLCAzNSwgNjIsIDU3LCAzLCAyNTMsIDE1NSwgMjIyLCAyMTEsIDYyLCAKLSAgICA1NywgMywgMjUzLCAxMjIsIDIyMiwgMTQwLCA2MiwgNTcsIDMsIDI1MywgMTE3LCAyMDYsIDYyLCA1NywgMywgMjUzLCAxNDAsIAotICAgIDIyMSwgMTgxLCA2MiwgNTcsIDMsIDI1MywgMTA4LCAyMTksIDE5MSwgNjIsIDU3LCAzLCAyNTMsIDEzNiwgMjE5LCA1OCwgCi0gICAgNjIsIDU3LCAzLCAyNTMsIDkxLCAyMTgsIDgzLCA2MiwgNTcsIDMsIDI1MywgOTAsIDIxNywgMTA1LCA2MiwgNTcsIDMsIAotICAgIDI1MywgMTUxLCAyMTcsIDIyLCA2MiwgNTcsIDMsIDI1MywgMTEyLCAyMTYsIDExNywgNjIsIDU3LCAzLCAyNTMsIDE0OSwgCi0gICAgMTExLCA2MiwgNTcsIDMsIDI1MywgODAsIDIxNSwgMTE4LCA2MiwgNTcsIDMsIDI1MywgOTUsIDIxMiwgNjUsIDYyLCA1NywgCi0gICAgMywgMjUzLCA3NCwgMjEyLCAyMiwgNjIsIDU3LCAzLCAyNTMsIDEwOSwgMjExLCAyNTAsIDYyLCA1NywgMywgMjUzLCAxMDcsIAotICAgIDIxMSwgMjI3LCA2MiwgNTcsIDMsIDI1MywgMTMxLCAyMTAsIDExNiwgNjIsIDU3LCAzLCAyNTMsIDc1LCAyMTAsIDk0LCA2MiwgCi0gICAgNTcsIDMsIDI1MywgMTI4LCAyMTAsIDIzLCA2MiwgNTcsIDMsIDI1MywgMTIzLCAyNTUsIDc1LCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTA2LCAyNTUsIDc0LCA2MiwgNTcsIDMsIDI1MywgNjUsIDI1MywgMTkyLCA2MiwgNTcsIDMsIDI1MywgNzgsIDI0NiwgNDYsIAotICAgIDYyLCA1NywgMywgMjUzLCA2MSwgMjQ2LCA0NSwgNjIsIDU3LCAzLCAyNTMsIDEwMSwgMjI3LCAxNzQsIDYyLCA1NywgMywgCi0gICAgMjUzLCAxMTksIDIyNCwgMTQ4LCA2MiwgNTcsIDMsIDI1MywgODcsIDIyNCwgMTUyLCA2MiwgNTcsIDMsIDI1MywgNzMsIAotICAgIDIyMywgMTg2LCA2MiwgNTcsIDMsIDI1MywgMTE1LCAyMjMsIDE4NSwgNjIsIDU3LCAzLCAyNTMsIDgxLCAyMjIsIDIxMCwgCi0gICAgNjIsIDU3LCAzLCAyNTMsIDgzLCAyMTcsIDEwMiwgNjIsIDU3LCAzLCAyNTMsIDYzLCAyMTUsIDc4LCA2MiwgNTcsIDMsIAotICAgIDI1MywgNjAsIDEwNSwgNjIsIDU3LCAxNiwgMjUzLCAxMzAsIDYyLCA1NywgMTYsIDI1MywgMTI5LCA2MiwgNTcsIDE2LCAKLSAgICAyNTMsIDEyNiwgNjIsIDU3LCAxNiwgMjUzLCAxMTQsIDYyLCA1NywgMTYsIDI1MywgMTAyLCA2MiwgNTcsIDE2LCAyNTMsIAotICAgIDEwMCwgNjIsIDU3LCAxNiwgMjUzLCA5MywgNjIsIDU3LCAxNiwgMjUzLCA4NiwgNjIsIDU3LCAxNiwgMjUzLCA4NSwgNjIsIAotICAgIDU3LCAxNiwgMjUzLCA3MCwgNjIsIDU3LCAxNiwgMjUzLCA2NywgNjIsIDU3LCAxNiwgMjUzLCA2NiwgNjIsIDU3LCAxNiwgCi0gICAgMjUzLCA2NCwgNjIsIDU3LCAxNiwgMjUzLCA2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTksIDIzMSwgMTg1LCA2MiwgNTcsIAotICAgIDEwNiwgMjUzLCA1OCwgMjExLCAyMjEsIDYyLCA1NywgMTA2LCAyNTMsIDU3LCAyNDgsIDc0LCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA1NiwgMjQ1LCA5NSwgNjIsIDU3LCAxMDYsIDI1MywgNTUsIDIzMSwgMTU5LCA2MiwgNTcsIDEwNiwgMjUzLCA1NCwgMjE4LCAKLSAgICAxNjIsIDYyLCA1NywgMTA2LCAyNTMsIDUzLCAyNDUsIDM3LCA2MiwgNTcsIDEwNiwgMjUzLCA1MiwgMjIzLCAxNTMsIDYyLCAKLSAgICA1NywgMTA2LCAyNTMsIDUxLCAyMjAsIDYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1MCwgMjQxLCAyMzcsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDQ5LCAyMTksIDI1LCA2MiwgNTcsIDEwNiwgMjUzLCA0OCwgMjUxLCAyMDMsIDYyLCA1NywgMTA2LCAyNTMsIDQ3LCAKLSAgICAyNDksIDE0NSwgNjIsIDU3LCAxMDYsIDI1MywgNDYsIDI1MSwgMTE1LCA2MiwgNTcsIDEwNiwgMjUzLCA0NSwgMjEyLCAyLCAKLSAgICA2MiwgNTcsIDEwNiwgMjUzLCA0NCwgMjUyLCAxMzYsIDYyLCA1NywgMTA2LCAyNTMsIDQzLCAyMjYsIDIwNSwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgNDIsIDIxOCwgMjU0LCA2MiwgNTcsIDEwNiwgMjUzLCA0MSwgMjQ5LCA2OCwgNjIsIDU3LCAyMzAsIDE0MiwgCi0gICAgMjUzLCA0MCwgMjM0LCAyMjQsIDYyLCA1NywgMjMwLCAxNDIsIDI1MywgMzksIDIzNCwgMjMyLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICAzOCwgMjI2LCAyMTgsIDYyLCA1NywgMTA2LCAyNTMsIDM3LCAyMTEsIDIzNiwgNjIsIDU3LCAxMDYsIDI1MywgMzYsIDYyLCAKLSAgICA1NywgMjMwLCAxNDIsIDI1MywgMzUsIDI1NCwgMTcsIDYyLCA1NywgMjMwLCAxNDIsIDI1MywgMzQsIDIzMSwgNTIsIDYyLCAKLSAgICA1NywgMTA2LCAyNTMsIDMzLCAyNTEsIDEzNCwgNjIsIDU3LCAxMDYsIDI1MywgMzIsIDI0MiwgMTY2LCA2MiwgNTcsIDEwNiwgCi0gICAgMjUzLCAzMSwgNjIsIDU3LCAxMDYsIDI1MywgMzAsIDIxMSwgMjEyLCA2MiwgNTcsIDEwNiwgMjUzLCAyOSwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgMjgsIDYyLCA1NywgMTA2LCAyNTMsIDI3LCAyNDAsIDI0OCwgNjIsIDU3LCAxMDYsIDI1MywgMjYsIDYyLCAKLSAgICA1NywgMTA2LCAyNTMsIDI1LCA2MiwgNTcsIDEwNiwgMjUzLCAyNCwgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAyMiwgMjE1LCAKLSAgICA5MiwgNjIsIDU3LCAxMDYsIDI1MywgMjEsIDYyLCA1NywgMTA2LCAyNTMsIDIwLCA2MiwgNTcsIDEwNiwgMjUzLCAxOSwgCi0gICAgMjQ5LCAyNTAsIDYyLCA1NywgMTA2LCAyNTMsIDE4LCA2MiwgNTcsIDEwNiwgMjUzLCAxNywgNjIsIDU3LCAxMDYsIDI1MywgCi0gICAgMTYsIDI0MywgOTMsIDYyLCA1NywgMTA2LCAyNTMsIDE1LCAyNTQsIDQsIDYyLCA1NywgMTA2LCAyNTMsIDE0LCA2MiwgNTcsIAotICAgIDEwNiwgMjUzLCAxMywgNjIsIDU3LCAxMDYsIDI1MywgMTIsIDYyLCA1NywgMTA2LCAyNTMsIDExLCA2MiwgNTcsIDEwNiwgCi0gICAgMjUzLCAxMCwgNjIsIDU3LCAxMDYsIDI1MywgOSwgNjIsIDU3LCAxMDYsIDI1MywgOCwgNjIsIDU3LCAxMDYsIDI1MywgNywgCi0gICAgNjIsIDU3LCAxMDYsIDI1MywgNiwgNjIsIDU3LCAxMDYsIDI1MywgNSwgMjMwLCAxMzQsIDYyLCA1NywgMTA2LCAyNTMsIDQsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDMsIDIxNSwgMjM1LCA2MiwgNTcsIDEwNiwgMjUzLCAyLCA2MiwgNTcsIDEwNiwgMjUzLCAxLCAKLSAgICA2MiwgNTcsIDEwNiwgMjUzLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTUsIDYyLCA1NywgMTA2LCAyNTIsIDI1NCwgNjIsIAotICAgIDU3LCAxMDYsIDI1MiwgMjUzLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTIsIDYyLCA1NywgMTA2LCAyNTIsIDI1MSwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MiwgMjUwLCA2MiwgNTcsIDEwNiwgMjUyLCAyNDksIDYyLCA1NywgMTA2LCAyNTIsIDI0OCwgNjIsIDU3LCAxMDYsIAotICAgIDI1MiwgMjQ3LCAyNDEsIDIxMSwgNjIsIDU3LCAxMDYsIDI1MiwgMjI2LCAyNDQsIDI4LCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMjMsIDI1MiwgMTE2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTgsIDIxOSwgNSwgNjIsIDU3LCAxMDYsIDI1MiwgMjE3LCA3NCwgCi0gICAgNjIsIDU3LCAxMDYsIDI1MiwgMjE2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTUsIDIxNywgMjM2LCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTQsIDYyLCA1NywgMTA2LCAyNTIsIDIxMywgNjIsIDU3LCAxMDYsIDI1MiwgMjEyLCAyMTEsIDI1NCwgMjUwLCAxMzksIAotICAgIDYyLCA1NywgMTA2LCAyNTIsIDIxMSwgMjUwLCAxMzksIDYyLCA1NywgMTA2LCAyNTIsIDIxMCwgMjUwLCAxNDAsIDI0MywgCi0gICAgMjU1LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDksIDIxMiwgMCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA4LCA2MiwgNTcsIDEwNiwgCi0gICAgMjUyLCAyMDcsIDYyLCA1NywgMjMwLCAxNDIsIDI1MiwgMjA2LCAyNDcsIDE5OCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA1LCAKLSAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMDQsIDYyLCA1NywgMTA2LCAyNTIsIDIwMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjAxLCA2MiwgCi0gICAgNTcsIDEwNiwgMjUyLCAyMDAsIDYyLCA1NywgMTA2LCAyNTIsIDE5OSwgMjQ4LCAxNTksIDYyLCA1NywgMTA2LCAyNTIsIAotICAgIDE5OCwgNjIsIDU3LCAxMDYsIDI1MiwgMTk3LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTYsIDYyLCA1NywgMTA2LCAyNTIsIDE5NSwgCi0gICAgNjIsIDU3LCAxMDYsIDI1MiwgMTk0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MywgMjMsIDYyLCA1NywgMTA2LCAyMTMsIAotICAgIDE4NiwgMjUyLCAyNDYsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDUsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgCi0gICAgMjUyLCAyNDQsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDMsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAKLSAgICAyNDIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDEsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyNDAsIAotICAgIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzksIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzgsIDYyLCA1NywgCi0gICAgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzcsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzYsIDYyLCA1NywgMTA2LCAKLSAgICAyMTMsIDE4NiwgMjUyLCAyMzUsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzQsIDYyLCA1NywgMTA2LCAyMTMsIAotICAgIDE4NiwgMjUyLCAyMzMsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgCi0gICAgMjUyLCAyMzEsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMzAsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAKLSAgICAyMjksIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjgsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjcsIAotICAgIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjUsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjQsIDYyLCA1NywgCi0gICAgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMjEsIDYyLCA1NywgMTA2LCAKLSAgICAyMTMsIDE4NiwgMjUyLCAyMjAsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAyMTksIDYyLCA1NywgMTA2LCAyMTMsIAotICAgIDE4NiwgMjUyLCAyMDMsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUyLCAxOTMsIDI1NCwgMjM2LCAyMTEsIDIwOSwgMjIwLCAKLSAgICAxMzgsIDIzMiwgMjEzLCAyNTQsIDIzNiwgMjExLCAyMDksIDIyMCwgMTM4LCAyNDcsIDEyMCwgMjU0LCAyMzYsIDI1MCwgCi0gICAgMTMwLCA3OCwgMjU0LCAyMzYsIDU0LCAxMTAsIDI1NCwgMjM2LCA1NCwgMTA1LCAyNTQsIDIzNiwgNTQsIDE1OCwgMjU0LCAKLSAgICAyMzYsIDU0LCAxNjEsIDI1NCwgMjM2LCA1NCwgMTg5LCAyNTQsIDIzNiwgNTQsIDE5NCwgMjU0LCAyMzYsIDU0LCAxOTgsIAotICAgIDI1NCwgMjM2LCA1NCwgMTk1LCAyNTQsIDIzNiwgNTQsIDIwMCwgMjU0LCAyMzYsIDU0LCAyMTYsIDI0NywgMjU0LCAyMzYsIAotICAgIDU0LCAyMTUsIDczLCAyNTQsIDIzNiwgNTQsIDIxNiwgMTYyLCAyNTQsIDIzNiwgNTQsIDI0NCwgMTUsIDI1NCwgMjM2LCA1NCwgCi0gICAgMjQ0LCAxMTQsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMTEsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMTYsIDI1NCwgMjM2LCA1NCwgCi0gICAgMjQ1LCAxODQsIDI1NCwgMjM2LCA1NCwgMjI4LCAxOTUsIDI1NCwgMjM2LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjU0LCAyMzYsIAotICAgIDU0LCAxMTMsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDEzNCwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMSwgCi0gICAgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMjUsIDI0MCwgCi0gICAgMjEwLCAyNTQsIDIzNiwgNTQsIDIyMCwgMTIyLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDUsIDE5MywgMjQwLCAyMTAsIAotICAgIDI1NCwgMjM2LCA1NCwgMjI4LCAyMDAsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDEyMywgMjE2LCAxNDcsIDI1NCwgMjM2LCAKLSAgICA1NCwgMTEzLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAxMzQsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NCwgMTEsIAotICAgIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NCwgODEsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxOSwgMTI1LCAyMTYsIAotICAgIDE0NywgMjU0LCAyMzYsIDU0LCAyMjAsIDEyMiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ1LCAxOTMsIDIxNiwgMTQ3LCAKLSAgICAyNTQsIDIzNiwgNTQsIDIyOCwgMjAwLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDI1NCwgCi0gICAgMjM2LCA1NCwgMjE1LCA3NCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE2LCAxNjMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgCi0gICAgNTQsIDI0NCwgMTYsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NCwgMTE1LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAKLSAgICAyMTksIDExMiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMTcsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NSwgCi0gICAgMTg1LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMjgsIDE5NiwgMjE2LCAxNDcsIDI1NCwgMjM2LCAyMTIsIDE0LCAyNTIsIAotICAgIDEyOCwgMjE0LCAxNzMsIDI1NCwgMjM2LCAyMTIsIDE0LCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAxNCwgCi0gICAgMjIxLCAxNzYsIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIDE0LCAyMTYsIDE2OSwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgCi0gICAgMTQsIDI0NCwgNCwgMjE4LCA1OSwgMjU0LCAyMzYsIDI0NiwgODEsIDIzMSwgOTAsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgCi0gICAgMjM2LCAyMzIsIDE5OSwgMjMxLCA5MCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIzMSwgOTAsIDIyMSwgMTc2LCAKLSAgICAyMTgsIDU5LCAyNTQsIDIzNiwgMjMxLCA5MCwgMjE2LCAxNjksIDIxOCwgNTksIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAotICAgIDIyNCwgMjEsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDI0MiwgMjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAotICAgIDI0NiwgMTAwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTg5LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTQsIDI2LCAKLSAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxNiwgCi0gICAgMTQ3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxNiwgMTQ3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAKLSAgICA4MSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgMjQ4LCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIAotICAgIDE5NCwgMjQ0LCAxMTUsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDI0MCwgMjExLCAyMTcsIDY3LCAyNiwgCi0gICAgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjQwLCAyMTEsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAotICAgIDIxNiwgMTQ4LCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE2LCAxNDgsIDIxNywgNjcsIDI2LCAKLSAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgMjQ4LCAyMTgsIAotICAgIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE1LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCi0gICAgMjQwLCAyMTEsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjQwLCAyMTEsIDIxOCwgMTUwLCAKLSAgICAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAyMTYsIDE0OCwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIAotICAgIDI0OCwgMjE2LCAxNDgsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxNiwgMTQ4LCAyMTgsIAotICAgIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgMjQ4LCAyMzAsIDE2NCwgMjYsIDI1NSwgNiwgMjQxLCAyMDUsIDEyMywgCi0gICAgMjI1LCAzMSwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDExMCwgMjYsIDI1NSwgNiwgMjQxLCAyMDEsIDExMCwgMjYsIDI1NSwgCi0gICAgNiwgMjQ1LCAxMDQsIDEwNSwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEwNSwgMjYsIDI1NSwgNiwgMjQ5LCA2NSwgMTEzLCAKLSAgICAyNDYsIDk5LCAyNiwgMjU1LCA2LCAyNDUsIDEwNCwgMTEzLCAyNDYsIDk5LCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMTg5LCAKLSAgICAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjE2LCAyNDcsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyMTYsIDI0OCwgMjU0LCAxNDEsIAotICAgIDE3LCAyNiwgMjU1LCA2LCAyNDEsIDIwMSwgMjE2LCAyNDcsIDI2LCAyNTUsIDYsIDIzMSwgNDEsIDIxNiwgMjQ3LCAyNiwgCi0gICAgMjU1LCA2LCAyMTYsIDE4MSwgMjE2LCAyNDcsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyMTYsIDE2MiwgMjYsIDI1NSwgNiwgCi0gICAgMjE1LCAyMDMsIDI0NCwgMTE0LCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjQ0LCAxMTUsIDI1NCwgMTQxLCAxNywgMjYsIAotICAgIDI1NSwgNiwgMjQxLCAyMDEsIDI0NCwgMTE0LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIAotICAgIDIxNiwgMTgxLCAxMjMsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTM0LCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgCi0gICAgMjQ1LCAxMDQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAKLSAgICAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjUwLCAyMjcsIDI0NCwgODEsIDI0MCwgCi0gICAgMjEwLCAyNiwgMjU1LCA2LCAyMjksIDE4MiwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMjMsIAotICAgIDIxNiwgMTQ3LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMjQ0LCA4MSwgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDI0OCwgNTcsIAotICAgIDI0NCwgODEsIDIzMCwgMTY0LCAyNiwgMjU1LCA2LCAyMTgsIDExOCwgMjQ0LCAxMTUsIDIzMCwgMTY0LCAyNiwgMTIzLCAKLSAgICAxNjMsIDUwLCAyNiwgMTIzLCAxNjMsIDUsIDI1NCwgMTQxLCAxNywgMjYsIDExMywgMjE2LCAxNjcsIDUwLCAyNiwgMTM0LCAKLSAgICAyMjQsIDIwLCA1MCwgMjYsIDIxMSwgNDUsIDUwLCAyNiwgMjE3LCA2OCwgNTAsIDI2LCAyNDYsIDEwMSwgNTAsIDI2LCAyMjYsIAotICAgIDI0NiwgNTAsIDI2LCAxMTMsIDIyNiwgMjQ1LCA1MCwgMjYsIDEzNCwgMjI2LCAyNDUsIDUwLCAyNiwgMjQ0LCAxMSwgMjI2LCAKLSAgICAyNDUsIDUwLCAyNiwgMjQ0LCA4MSwgMjI2LCAyNDUsIDUwLCAyNiwgMjMxLCAzNSwgNTAsIDI2LCAyMzMsIDE1NywgMjUyLCAKLSAgICAxMjgsIDUwLCAyNiwgMjMyLCAxOTQsIDUwLCAyNiwgMjI2LCAxMzEsIDUwLCAyNiwgMjExLCAxNTksIDUwLCAyNiwgMjUzLCAKLSAgICAyNDMsIDUwLCAyNiwgMjU0LCAwLCA1MCwgMjYsIDI0MiwgMTQ0LCA1MCwgMjYsIDIxNSwgMTg2LCAyNTIsIDEyOCwgNTAsIAotICAgIDI2LCAyMTAsIDg3LCA1MCwgMjIyLCAxOTgsIDIyMCwgMTEzLCA1MCwgMjIyLCAxOTgsIDIxNCwgMTg1LCA1MCwgMjIyLCAKLSAgICAxOTgsIDIyMCwgMTQyLCA1MCwgMjIyLCAxOTgsIDIyMCwgMTExLCA1MCwgMjIyLCAxOTgsIDI0NywgMjEzLCAyMjAsIDExMSwgCi0gICAgNTAsIDIyMiwgMTk4LCAyMTksIDE2OCwgNTAsIDIyMiwgMTk4LCAyNDgsIDUzLCA1MCwgMjIyLCAxOTgsIDIyNCwgNiwgNTAsIAotICAgIDIyMiwgMTk4LCAyMjAsIDEyOSwgNTAsIDIyMiwgMTk4LCAyNDYsIDYwLCA1MCwgMjIyLCAxOTgsIDI1MywgMjM4LCA1MCwgCi0gICAgMjIyLCAxOTgsIDI1MCwgMTcxLCA1MCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjUsIDIxMywgMjI1LCAxNDMsIDI0NywgCi0gICAgMTkxLCA1LCAyMjUsIDI0LCAyNDEsIDIzNSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTcsIDQ1LCAyNDEsIDIzNSwgMjI1LCAKLSAgICAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDI0NywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDEwMSwgMjI1LCAxNDMsIAotICAgIDI0NywgMTkxLCA1LCAyMTEsIDIyMSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDEsIDIxMSwgMjI1LCAxNDMsIDI0NywgCi0gICAgMTkxLCA1LCAyNDMsIDg1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNiwgMTE2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAotICAgIDc0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MSwgMTY5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyMCwgMjksIDIyNSwgCi0gICAgMTQzLCAyNDcsIDE5MSwgNSwgMjQ5LCAyNDQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjMxLCAxODQsIDIyNSwgMTQzLCAKLSAgICAyNDcsIDE5MSwgNSwgMjMxLCAxMzYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIxLCAyMTYsIDIyNSwgMTQzLCAyNDcsIAotICAgIDE5MSwgNSwgMjMyLCAyMzcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUxLCAxODgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCi0gICAgMjUwLCAyMzEsIDIyNSwgMzUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ3LCAxMzMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgCi0gICAgNSwgMjQ5LCAyMjMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE5LCA4NywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDksIAotICAgIDIyNCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTIsIDYzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyMCwgMTYsIDIyNSwgCi0gICAgMTQzLCAyNDcsIDE5MSwgNSwgMjQwLCAyNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQxLCAxNzgsIDIyNSwgMTQzLCAKLSAgICAyNDcsIDE5MSwgNSwgMjUxLCAxMTIsIDIzMywgMzYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUwLCAyMjQsIDIyNSwgCi0gICAgMTQzLCAyNDcsIDE5MSwgNSwgMjIzLCAxNTMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ1LCAyMzAsIDIyNSwgMTQzLCAKLSAgICAyNDcsIDE5MSwgNSwgMjQ2LCAxMDcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE1LCAxMDUsIDIyNSwgMTQzLCAyNDcsIAotICAgIDE5MSwgNSwgMjUyLCA2NiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjUsIDM2LCAyMTUsIDIzNSwgMjI1LCAxNDMsIDI0NywgCi0gICAgMTkxLCA1LCAyMTMsIDE1OSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjYsIDE4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAotICAgIDIyMiwgMTkwLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIzMiwgMjI0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNiwgCi0gICAgMTE1LCAyNTIsIDE4NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDQsIDQ4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAotICAgIDI0MiwgMTM4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxOCwgMTE5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDQsIDI1MywgCi0gICAgMTY4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxMiwgMzIsIDI1MiwgMTQ4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDM4LCAKLSAgICAyMjYsIDI0OCwgOTEsIDIzMiwgNjAsIDEsIDYxLCAyMzIsIDYwLCAxLCA3NSwgMjMyLCA2MCwgMSwgMjUzLCAxNTgsIDIzMiwgCi0gICAgNjAsIDEsIDI1MiwgMTksIDIzMiwgNjAsIDEsIDI0MywgMjAyLCAyMzIsIDYwLCAxLCAyNDksIDYwLCAyMzIsIDYwLCAxLCAKLSAgICA3MywgMjMyLCA2MCwgMSwgMjEyLCA5OCwgMjMyLCA2MCwgMSwgMjEwLCAxNTksIDIzMiwgNjAsIDEsIDIxNiwgMjEwLCAyMzIsIAotICAgIDYwLCAxLCAyMzUsIDE0NCwgMjMyLCA2MCwgMSwgMjM1LCAyMywgMjMyLCA2MCwgMSwgMjI0LCA5NiwgMjMyLCA2MCwgMSwgCi0gICAgMTU2LCAyMzIsIDYwLCAxLCAxOTMsIDIzMiwgNjAsIDEsIDIzMCwgMjUsIDIzMiwgNjAsIDEsIDIzMCwgMTY2LCAyMzIsIDYwLCAKLSAgICAxLCAyMjgsIDExMSwgMjMyLCA2MCwgMSwgNzAsIDIzMiwgNjAsIDEsIDIyNiwgMTA1LCAyMzIsIDYwLCAxLCAyMzQsIDQ3LCAKLSAgICAyMzIsIDYwLCAxLCAxNTMsIDIzMiwgNjAsIDEsIDIyMiwgOTEsIDIzMiwgNjAsIDEsIDIxNywgMTUyLCAyMzIsIDYwLCAxLCAKLSAgICAyMTUsIDE1OSwgMjMyLCA2MCwgMSwgMjU0LCAxMjMsIDIzMiwgNjAsIDEsIDI0NSwgMTUwLCAyMzIsIDYwLCAxLCAyNDIsIAotICAgIDYwLCAyMzIsIDYwLCAxLCAyMTEsIDE3OCwgMjUwLCAyMzcsIDEsIDYxLCAyNTAsIDIzNywgMSwgMjI2LCA5MSwgMjUwLCAKLSAgICAyMzcsIDEsIDI0OSwgNjAsIDI1MCwgMjM3LCAxLCAxNTYsIDI1MCwgMjM3LCAxLCAyMTQsIDExNiwgMjUwLCAyMzcsIDEsIAotICAgIDE1MywgMjUwLCAyMzcsIDEsIDIzMywgNjIsIDI1MCwgMjM3LCAxLCAyNTUsIDc1LCAyNTAsIDIzNywgMSwgMjI0LCA5NiwgCi0gICAgMjUwLCAyMzcsIDEsIDI1MywgMTU4LCAyNTAsIDIzNywgMSwgMTkzLCAyNTAsIDIzNywgMSwgNzYsIDI1MCwgMjM3LCAxLCAKLSAgICAyNDgsIDIyMywgMjUwLCAyMzcsIDEsIDIxNywgMTUyLCAyNTAsIDIzNywgMSwgMjIwLCAxMDQsIDI1MCwgMjM3LCAxLCAyMjAsIAotICAgIDEwMywgMjUwLCAyMzcsIDEsIDIyMiwgOTEsIDI1MCwgMjM3LCAxLCAyNTEsIDY1LCAyNTAsIDIzNywgMSwgNzAsIDI1MCwgCi0gICAgMjM3LCAxLCAyMjgsIDExMSwgMjUwLCAyMzcsIDEsIDIxMSwgMTc4LCAyNTAsIDIzNywgMSwgMjMwLCAyNSwgMjUwLCAyMzcsIAotICAgIDEsIDIxNSwgMTU4LCAyNTAsIDIzNywgMSwgMjI2LCAxMDUsIDI1MCwgMjM3LCAxLCAyMTgsIDIyNiwgMjUwLCAyMzcsIDEsIAotICAgIDczLCAyNTAsIDIzNywgMSwgNzUsIDI1MCwgMjM3LCAxLCAyMTQsIDExMywgMjUwLCAyMzcsIDEsIDIzNSwgMjMsIDI1MCwgCi0gICAgMjM3LCAxLCAyMzUsIDE0LCAyNTAsIDIzNywgMSwgMjI5LCAxNTAsIDI1MCwgMjM3LCAxLCAyMTQsIDExOCwgMjUwLCAyMzcsIAotICAgIDEsIDI0MywgMjAyLCAyNTAsIDIzNywgMSwgMjQzLCAxMzcsIDI1MCwgMjM3LCAxLCAyMTgsIDE2OCwgMjUwLCAyMzcsIDEsIAotICAgIDIxOCwgMTY3LCAyNTAsIDIzNywgMSwgMjI5LCA3OSwgMjUwLCAyMzcsIDEsIDIzNiwgMzMsIDI1MCwgMjM3LCAxLCAyNTEsIAotICAgIDY0LCAyNTAsIDIzNywgMSwgMjE1LCAxNTksIDI1MCwgMjM3LCAxLCAyMTQsIDExNSwgMjUwLCAyMzcsIDEsIDIyMiwgMTgwLCAKLSAgICAyNTAsIDIzNywgMSwgMjMxLCAxMjksIDI1MCwgMjM3LCAxLCAyMzEsIDEyOCwgMjUwLCAyMzcsIDEsIDIzMSwgMTI3LCAyNTAsIAotICAgIDIzNywgMSwgMjMxLCAxMjYsIDI1MCwgMjM3LCAxLCAyMzMsIDYxLCAyNTAsIDIzNywgMSwgMjQ1LCAyMzQsIDI1MCwgMjM3LCAKLSAgICAxLCAyMTQsIDExNCwgNTUsIDMyLCAxLCA2MSwgNTUsIDMyLCAxLCAyNTIsIDc1LCA1NSwgMzIsIDEsIDIzNCwgMTgyLCA1NSwgCi0gICAgMzIsIDEsIDI0OCwgOTAsIDU1LCAzMiwgMSwgNzUsIDU1LCAzMiwgMSwgMjEzLCAyNTUsIDU1LCAzMiwgMSwgMjEwLCA5NCwgCi0gICAgNTUsIDMyLCAxLCAyNDEsIDIzOCwgNTUsIDMyLCAxLCAyMTYsIDE5NSwgNTUsIDMyLCAxLCA3MywgNTUsIDMyLCAxLCAxNzYsIAotICAgIDU1LCAzMiwgMSwgMjQ1LCAxNzQsIDU1LCAzMiwgMSwgMjQ1LCAxNTksIDU1LCAzMiwgMSwgMjQ1LCAxNTAsIDU1LCAzMiwgMSwgCi0gICAgMjQ1LCA3NSwgNTUsIDMyLCAxLCA3NiwgNTUsIDMyLCAxLCAyMjUsIDIyMSwgNTUsIDMyLCAxLCAyMjAsIDYzLCA1NSwgMzIsIAotICAgIDEsIDIzMywgMjE3LCA1NSwgMzIsIDEsIDI0NSwgOTIsIDU1LCAzMiwgMSwgMjQ1LCA4MiwgNTUsIDMyLCAxLCAyMTcsIDIyLCAKLSAgICA1NSwgMzIsIDEsIDcwLCA1NSwgMzIsIDEsIDI0NSwgMTc3LCA1NSwgMzIsIDEsIDIyNSwgMTM2LCA1NSwgMzIsIDEsIDIzNCwgCi0gICAgMTE5LCA1NSwgMzIsIDEsIDI0NSwgMjAyLCA1NSwgMzIsIDEsIDI0NSwgODQsIDU1LCAzMiwgMSwgMjUwLCAxMzEsIDU1LCAKLSAgICAzMiwgMSwgMjM2LCAzMywgNTUsIDMyLCAxLCAyMTQsIDExOCwgNTUsIDMyLCAyMjcsIDE5OCwgMTEwLCA1NSwgMzIsIDIyNywgCi0gICAgMTk4LCAxODksIDU1LCAzMiwgMjI3LCAxOTgsIDIxNiwgMjQ3LCA1NSwgMzIsIDIyNywgMTk4LCAyNDQsIDExNCwgMjQyLCAKLSAgICAxNTMsIDEsIDI1NCwgMjA0LCAyNDIsIDE1MywgMSwgMjUyLCAxNjMsIDI0MiwgMTUzLCAxLCAyNDIsIDIxMSwgMjQyLCAxNTMsIAotICAgIDEsIDI0OCwgMjA0LCAyNDIsIDE1MywgMSwgMjU0LCAyMDAsIDI0MiwgMTUzLCAxLCAyMjQsIDc5LCAyNDIsIDE1MywgMSwgCi0gICAgMjM1LCAxNTUsIDI0MiwgMTUzLCAxLCAyNDIsIDM5LCAyNDIsIDE1MywgMSwgMjE2LCAxNTgsIDI0MiwgMTUzLCAxLCAyNDUsIAotICAgIDE4MywgMjQyLCAxNTMsIDEsIDIzMywgMTkwLCAyNDIsIDE1MywgMSwgMjMzLCAxMTMsIDI0MiwgMTUzLCAxLCAyMzEsIDE3OSwgCi0gICAgMjQyLCAxNTMsIDEsIDIyOSwgMTg0LCAyNDIsIDE1MywgMSwgMjM1LCAxMTksIDI0MiwgMTUzLCAxLCAyMTQsIDEzNiwgMjQyLCAKLSAgICAxNTMsIDEsIDIyNiwgNjksIDI0MiwgMTUzLCAxLCAyMjgsIDE5NSwgMjQyLCAxNTMsIDEsIDIyMywgMTY1LCAyNDIsIDE1MywgCi0gICAgMSwgMjIxLCAyMTgsIDI0MiwgMTUzLCAxLCAyMTcsIDQsIDI0MiwgMTUzLCAxLCAyMTEsIDIzNCwgMjQyLCAxNTMsIDEsIAotICAgIDI0NCwgMTc4LCAyNDIsIDE1MywgMSwgMjM2LCAzNywgMjQyLCAxNTMsIDEsIDI0MCwgMTk5LCAyNDIsIDE1MywgMSwgMjI2LCAKLSAgICAxMzksIDI0MiwgMTUzLCAxLCAyMjgsIDIwMCwgMjQwLCAyMTAsIDIxNCwgMjA5LCAxLCAyNTQsIDE0NywgMjE0LCAyMDksIDEsIAotICAgIDI1MiwgMjYsIDIxNCwgMjA5LCAxLCAyNDMsIDEwOCwgMjE0LCAyMDksIDEsIDIzNCwgMTMyLCAyMTQsIDIwOSwgMSwgMjQ4LCAKLSAgICA1NCwgMjE0LCAyMDksIDEsIDI0MSwgNjgsIDIxNCwgMjA5LCAxLCAyMTEsIDIyNywgMjE0LCAyMDksIDEsIDIxMCwgODUsIAotICAgIDIxNCwgMjA5LCAxLCAyNDAsIDI0MSwgMjE0LCAyMDksIDEsIDIxNiwgMjMwLCAyMTQsIDIwOSwgMSwgMjEwLCAyMzMsIDIxNCwgCi0gICAgMjA5LCAxLCAyMzQsIDI1MCwgMjE0LCAyMDksIDEsIDIyMCwgMjAsIDIxNCwgMjA5LCAxLCAyMzMsIDk4LCAyMTQsIDIwOSwgCi0gICAgMSwgMjMxLCA2NSwgMjE0LCAyMDksIDEsIDI0OCwgMjEsIDIxNCwgMjA5LCAxLCAyMjcsIDE5NCwgMjE0LCAyMDksIDEsIAotICAgIDIxMCwgMTMsIDIxNCwgMjA5LCAxLCAyMjEsIDI0OCwgMjE0LCAyMDksIDEsIDI1NCwgMTk2LCAyMTQsIDIwOSwgMSwgMjI0LCAKLSAgICAxNTAsIDIxNCwgMjA5LCAxLCAyMjIsIDI1LCAyMTQsIDIwOSwgMSwgMjI0LCAzNSwgMjE0LCAyMDksIDEsIDIyMywgMTQ0LCAKLSAgICAyMTQsIDIwOSwgMSwgMjE2LCAxOTksIDIxNCwgMjA5LCAxLCAyNDIsIDI0NCwgMjE0LCAyMDksIDEsIDExMSwgMjE0LCAyMDksIAotICAgIDEsIDczLCAyMTQsIDIwOSwgMSwgNzAsIDIxNCwgMjA5LCAxLCAyMTgsIDE3OSwgMjE0LCAyMDksIDIxMSwgMjA5LCAyNDcsIAotICAgIDE3MiwgNTUsIDIyNSwgMTY5LCA1LCA2MSwgNTUsIDIyNSwgMTY5LCA1LCA3MywgNTUsIDIyNSwgMTY5LCA1LCA3MCwgNTUsIAotICAgIDIyNSwgMTY5LCA1LCAxNzYsIDU1LCAyMjUsIDE2OSwgNSwgMjMzLCAyMTcsIDU1LCAyMjUsIDE2OSwgNSwgMjQzLCAxMzUsIAotICAgIDU1LCAyMjUsIDE2OSwgNSwgMjQyLCAxMTMsIDU1LCAyMjUsIDE2OSwgNSwgMjExLCAxNjUsIDU1LCAyMjUsIDE2OSwgNSwgCi0gICAgMjUxLCAzMywgNTUsIDIyNSwgMTY5LCA1LCAyMzUsIDE0MSwgNTUsIDIyNSwgMTY5LCA1LCAyMzUsIDEwOCwgNTUsIDIyNSwgCi0gICAgMTY5LCA1LCAyMTcsIDEwNSwgNTUsIDIyNSwgMTY5LCA1LCAyMTUsIDExOCwgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDIyMSwgCi0gICAgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDMsIDU1LCAyMjUsIDE2OSwgNSwgMjQ2LCA3OCwgNTUsIDIyNSwgMTY5LCA1LCAyMTYsIAotICAgIDIwOCwgNTUsIDIyNSwgMTY5LCA1LCAxOTAsIDU1LCAyMjUsIDE2OSwgNSwgMjUyLCAxOTEsIDU1LCAyMjUsIDE2OSwgNSwgCi0gICAgMjQ0LCAxOTYsIDU1LCAyMjUsIDE2OSwgNSwgMTk3LCA1NSwgMjI1LCAxNjksIDUsIDIyNywgMjM3LCA1NSwgMjI1LCAxNjksIAotICAgIDUsIDE4NCwgNTUsIDIyNSwgMTY5LCA1LCAyMzAsIDIzMCwgNTUsIDIyNSwgMTY5LCA1LCAyMzAsIDEwMiwgNTUsIDIyNSwgCi0gICAgMTY5LCA1LCAxOTEsIDU1LCAyMjUsIDE2OSwgNSwgMjE0LCAyNywgNTUsIDIyNSwgMTY5LCA1LCAyMTMsIDE3NiwgNTUsIAotICAgIDIyNSwgMTY5LCA1LCAyMDUsIDU1LCAyMjUsIDE2OSwgNSwgMjIyLCAxNDAsIDU1LCAyMjUsIDE2OSwgNSwgMjMzLCAxMzUsIAotICAgIDU1LCAyMjUsIDE2OSwgNSwgMjA2LCA1NSwgMjI1LCAxNjksIDUsIDIxMCwgMTE2LCA1NSwgMjI1LCAxNjksIDUsIDIyMCwgCi0gICAgMTAyLCA1NSwgMjI1LCAxNjksIDUsIDIxOCwgMjIzLCA1NSwgMjI1LCAxNjksIDUsIDE2MiwgNTUsIDIyNSwgMTY5LCA1LCAKLSAgICAyNTMsIDE4NiwgNTUsIDIyNSwgMTY5LCA1LCAyNTMsIDE4NSwgNTUsIDIyNSwgMTY5LCA1LCAyNTMsIDE4NCwgNTUsIDIyNSwgCi0gICAgMTY5LCA1LCAyMTEsIDE0MiwgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDIwMCwgNTUsIDIyNSwgMTY5LCA1LCAyNDgsIDE5OSwgCi0gICAgNTUsIDIyNSwgMTY5LCA1LCAyNTIsIDE3MCwgNTUsIDIyNSwgMTY5LCA1LCAyNTEsIDg1LCA1NSwgMjI1LCAxNjksIDIxMSwgCi0gICAgMjA5LCAyNDcsIDE3MiwgNTUsIDIyNSwgMTY5LCA1NCwgMTEwLCA1NSwgMjI1LCAxNjksIDU0LCAxMDUsIDU1LCAyMjUsIAotICAgIDE2OSwgNTQsIDIxNiwgMjQ3LCA1NSwgMjI1LCAxNjksIDU0LCAyMTUsIDczLCA1NSwgMjI1LCAxNjksIDU0LCAyNDAsIDIxMCwgCisgICAgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQ0LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNTIsIAorICAgIDU2LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTIsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI1NCwgMTk4LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyOCwgMiwgNjYsIDIsIDY2LCA2NSwgCisgICAgMTcsIDEwLCAyNywgMjIxLCAxNjgsIDIsIDIzNCwgMTMxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjQsIDIsIAorICAgIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjIsIDUsIDIxNCwgMTI4LCAyNTMsIDIzOSwgMjM0LCA1LCAyMTgsIDEzMSwgCisgICAgNSwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgNzksIDIxNCwgMTI4LCAyNTMsIDIzOSwgMjM0LCA1LCAyMTgsIDEzMSwgNSwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDI1NCwgMTU0LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxODQsIDUzLCAxNywgMTAsIDI3LCAyMzAsIDE1NCwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIyMiwgNiwgNTMsIDE3LCAxMCwgMjcsIDIyMywgMTQ0LCA1MywgMTcsIDEwLCAyNywgMjU0LCAKKyAgICAxNzMsIDUzLCAxNywgMTAsIDI3LCAyMTIsIDQ5LCA1MywgMTcsIDEwLCAyNywgMjIyLCA1LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIyLCA0LCAyNTQsIDE3MywgMjEyLCA0OCwgMTAsIDI3LCAyMzUsIDEzNSwgMjIzLCAzNSwgNTAsIDEwLCAyNywgMjUxLCAKKyAgICAyMzEsIDI1NCwgNDAsIDI1NCwgNDEsIDQ1LCAyMjEsIDE1NywgNDUsIDIyMSwgNDYsIDQ1LCAyMjAsIDIzNCwgNDUsIDIyMCwgCisgICAgMjIzLCA0NSwgMjIwLCAyMTIsIDQ1LCAyMjAsIDIwMSwgNDUsIDIyMCwgMTkwLCA0NSwgMjIwLCAxNzksIDQ1LCAyMjAsIAorICAgIDE2OCwgNDUsIDIyMSwgMTU2LCA0NSwgMjIxLCAxNDUsIDQ1LCAyMjEsIDEzNCwgNDUsIDIyMSwgMTIzLCA0NSwgMjIxLCAKKyAgICAxMTIsIDQ1LCAyMjEsIDEwMSwgNDUsIDIyMSwgOTAsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDI0OSwgMjIwLCAyMjQsIAorICAgIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCAxMDksIDI0OSwgMjIwLCAyMjQsIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCAxMDksIDI0MywgCisgICAgMjMwLCAyMTgsIDEzMCwgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCA2NywgMjQ5LCAyMjcsIDIyNCwgMTk1LCAyNDQsIDIxLCAKKyAgICAzMSwgNjcsIDIyMCwgMTUxLCAyMjQsIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCAyNDUsIDMyLCA3OCwgMjI0LCAxOTUsIDI0NCwgCisgICAgMjEsIDMxLCA2NywgMjI0LCAxNCwgNzgsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQzLCA3MSwgMjMzLCAyMSwgMTI3LCAKKyAgICAyMjQsIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCA0NCwgNzEsIDIzMywgMjEsIDI1MSwgMTU3LCAyMjQsIDE5NSwgMjQ0LCAyMSwgCisgICAgMzEsIDY3LCAyMDMsIDI0NSwgMTY0LCAzOCwgMjcsIDQzLCAyNDIsIDI4LCAzOCwgMjcsIDQ0LCAyNDIsIDI4LCAzOCwgNTIsIAorICAgIDIxNiwgOTAsIDQzLCAyNDIsIDI4LCAzOCwgNTIsIDIxNiwgOTAsIDQ0LCAyNDIsIDI4LCAzOCwgMjMxLCAyMzQsIDQzLCAKKyAgICAyNDIsIDI4LCAzOCwgMjMxLCAyMzQsIDQ0LCAyNDIsIDI4LCAzOCwgMjQ5LCAxOTgsIDIzMSwgMjMzLCAyMjQsIDE5NSwgCisgICAgMjQ0LCAyMSwgMzEsIDY3LCAxMTMsIDU5LCAyMzMsIDU3LCAyMjQsIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCAyNDUsIDE2MSwgCisgICAgMjQ4LCAxNTcsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDI0NSwgMTUyLCAyNDgsIDE1NywgMjI0LCAxOTUsIDI0NCwgCisgICAgMjEsIDMxLCA2NywgMTIxLCAyMzIsIDIxNCwgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCA2NywgMjEyLCAzMiwgMTIxLCAyMzIsIAorICAgIDIxNCwgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCA2NywgNDMsIDIyNiwgNCwgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCA2NywgCisgICAgNDQsIDIyNiwgNCwgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCA2NywgNDMsIDI0OSwgMTAwLCAxMjcsIDIyNCwgMTk1LCAyNDQsIAorICAgIDIxLCAzMSwgNjcsIDQ0LCAyNDksIDEwMCwgMTI3LCAyMjQsIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCA0MywgMjE2LCA3LCAKKyAgICAyMjAsIDU0LCAxMjcsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQ0LCAyMTYsIDcsIDIyMCwgNTQsIDEyNywgMjI0LCAKKyAgICAxOTUsIDI0NCwgMjEsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDIxLCAxMjcsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIAorICAgIDQ0LCA4NSwgMjMzLCAyMSwgMTI3LCAyMjQsIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTExLCAxMjcsIAorICAgIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAxMTEsIDEyNywgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCAKKyAgICA2NywgNDMsIDI1NCwgMTExLCAxMjcsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQ0LCAyNTQsIDExMSwgMTI3LCAyMjQsIAorICAgIDE5NSwgMjQ0LCAyMSwgMzEsIDY3LCA0MywgMjQ5LCAxNjIsIDEyNywgMjI0LCAxOTUsIDI0NCwgMjEsIDMxLCA2NywgNDQsIAorICAgIDI0OSwgMTYyLCAxMjcsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQzLCA3MSwgMjQ5LCAxNjIsIDEyNywgMjI0LCAKKyAgICAxOTUsIDI0NCwgMjEsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2MiwgMTI3LCAyMjAsIDEzMiwgMjQ3LCAxMjEsIDcxLCAyMjAsIAorICAgIDEzMiwgMjQ3LCAxMjEsIDIyNCwgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NSwgMjQ0LCAyMSwgCisgICAgMzEsIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNTYsIDIyNiwgMTIwLCAyNTAsIDE3MywgMjI2LCAxMjAsIDIxMiwgMzIsIAorICAgIDIyNiwgMTIwLCA1MiwgMjEyLCAzMiwgMjI2LCAxMjAsIDI0OCwgMTU2LCAxMjEsIDIzMiwgMjE0LCAyNTAsIDE3MywgMTIxLCAKKyAgICAyMzIsIDIxNCwgMjEyLCAzMiwgMTIxLCAyMzIsIDIxNCwgNCwgMjQ5LCAyMjAsIDQsIDEwOSwgMjQ5LCAyMjAsIDQsIDI0MywgCisgICAgMjMwLCAyMTgsIDEzMCwgNCwgMjIwLCAxNTEsIDQsIDI0OSwgMjI3LCA0LCAyMjQsIDE0LCA3OCwgNCwgMjQ1LCAzMiwgNzgsIAorICAgIDQsIDI0NSwgMTYxLCAyNDgsIDE1NywgNCwgNDMsIDIyNiwgNCwgNCwgNDQsIDIyNiwgNCwgNCwgNDMsIDI0OSwgMTAwLCAKKyAgICAxMjcsIDQsIDQ0LCAyNDksIDEwMCwgMTI3LCA0LCA0MywgMjE2LCA3LCAyMjAsIDU0LCAxMjcsIDQsIDQ0LCAyMTYsIDcsIAorICAgIDIyMCwgNTQsIDEyNywgNCwgNTQsIDUwLCA0LCAyNTQsIDEyNywgNCwgMjUzLCAyMTcsIDQsIDk2LCA1MCwgNCwgMjQwLCAKKyAgICAxNjgsIDQsIDIzMywgMTYsIDUwLCA0LCAyNDIsIDEzMSwgNTAsIDQsIDI0NSwgOTksIDUwLCA0LCAyMjMsIDUxLCAyMTksIAorICAgIDQ3LCA0LCAyNDcsIDEzMywgNTAsIDQsIDIyNSwgMTgzLCA1MCwgNCwgMjQ5LCAyMTgsIDI1MywgMjA3LCAxMCwgMjQ0LCAKKyAgICAxNjUsIDUzLCAxNywgMTAsIDIxNywgNDUsIDIsIDI0NCwgMTY1LCA0OCwgMTAsIDI0OCwgMTg0LCA1MywgMTcsIDEwLCAyMTcsIAorICAgIDc5LCAyNDQsIDIsIDEwLCAyMzQsIDIwNSwgNTMsIDE3LCAxMCwgMjQ0LCAxNjcsIDUzLCAxNywgMTAsIDI0NCwgMTY3LCAKKyAgICAxNDcsIDE3LCAxMCwgMjQ4LCAxODYsIDUzLCAxNywgMTAsIDI0OCwgMTg2LCAxNDcsIDE3LCAxMCwgMjM0LCAyMDcsIDUzLCAKKyAgICAxNywgMTAsIDIzNCwgMjA3LCAxNDcsIDE3LCAxMCwgMjIwLCA5NSwgNTMsIDE3LCAxMCwgMjIwLCA5NSwgMTQ3LCAxNywgMTAsIAorICAgIDIxOCwgNDcsIDUzLCAxNywgMTAsIDIxOCwgNDcsIDE0NywgMTcsIDEwLCAxLCAyMDIsIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgCisgICAgMjMxLCAyMjksIDc3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIzMSwgMjI5LCA3NywgNDAsIDE3LCAxMCwgMSwgMTEyLCAyLCAKKyAgICAyMDIsIDc3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgCisgICAgNzcsIDUzLCAxNywgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCAyNTIsIAorICAgIDQ0LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgMjUyLCA0NCwgNDAsIDE3LCAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIAorICAgIDUzLCAxNywgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNjUsIDE3LCAxMCwgCisgICAgMSwgNzksIDIsIDIwMiwgNzcsIDE0NywgMTcsIDEwLCAxLCAxMTIsIDUzLCAxNywgMTAsIDEsIDExMiwgNDAsIDE3LCAxMCwgCisgICAgMSwgMjUyLCA1NiwgNTMsIDE3LCAxMCwgMSwgMjUyLCA1NiwgNDAsIDE3LCAxMCwgMSwgMjUyLCA1NiwgNjUsIDE3LCAxMCwgCisgICAgMSwgMjUyLCA1NiwgMTQ3LCAxNywgMTAsIDEsIDIxNywgOSwgMjMxLCAxNjYsIDUzLCAxNywgMTAsIDEsIDIxNywgOSwgMjMxLCAKKyAgICAxNjYsIDQwLCAxNywgMTAsIDEsIDIxNywgOSwgNTMsIDE3LCAxMCwgMSwgMjE3LCA5LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDksIAorICAgIDY1LCAxNywgMTAsIDEsIDIxNywgOSwgMTQ3LCAxNywgMTAsIDEsIDIxNiwgMTk0LCA1MywgMTcsIDEwLCAxLCAyMTYsIDE5NCwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjE2LCAxOTQsIDY1LCAxNywgMTAsIDEsIDIxNiwgMTk0LCAxNDcsIDE3LCAxMCwgMSwgMTUxLCAKKyAgICA1MywgMTcsIDEwLCAxLCAxNTEsIDQwLCAxNywgMTAsIDEsIDE1MSwgNjUsIDE3LCAxMCwgMSwgMTUxLCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMTIyLCA1MywgMTcsIDEwLCAxLCAxMjIsIDQwLCAxNywgMTAsIDEsIDEyMiwgNjUsIDE3LCAxMCwgMSwgMTIyLCAxNDcsIAorICAgIDE3LCAxMCwgMSwgMjM0LCAxMzEsIDUzLCAxNywgMTAsIDEsIDIzNCwgMTMxLCA0MCwgMTcsIDEwLCAxLCAyMzQsIDEzMSwgCisgICAgNjUsIDE3LCAxMCwgMSwgMjM0LCAxMzEsIDE0NywgMTcsIDEwLCAxLCAyNDgsIDE5NywgNTMsIDE3LCAxMCwgMSwgMjQ4LCAKKyAgICAxOTcsIDQwLCAxNywgMTAsIDEsIDIxNiwgMjA0LCA1MywgMTcsIDEwLCAxLCAyMTYsIDIwNCwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjIzLCA5NywgNTMsIDE3LCAxMCwgMSwgMjIzLCA5NywgNDAsIDE3LCAxMCwgMSwgMjEwLCAxMDksIDUzLCAxNywgMTAsIDEsIAorICAgIDIxMCwgMTA5LCA0MCwgMTcsIDEwLCAxLCAyMjEsIDE2OCwgNTMsIDE3LCAxMCwgMSwgMjIxLCAxNjgsIDQwLCAxNywgMTAsIAorICAgIDEsIDIyMSwgMTY4LCA2NSwgMTcsIDEwLCAxLCAyMjEsIDE2OCwgMTQ3LCAxNywgMTAsIDEsIDIyMCwgNjEsIDUzLCAxNywgCisgICAgMTAsIDEsIDIyMCwgNjEsIDQwLCAxNywgMTAsIDEsIDIyMCwgNjEsIDY1LCAxNywgMTAsIDEsIDIyMCwgNjEsIDE0NywgMTcsIAorICAgIDEwLCAxLCAyMjIsIDI4LCA1MywgMTcsIDEwLCAxLCAyMjIsIDI4LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDI4LCA2NSwgMTcsIAorICAgIDEwLCAxLCAyMjIsIDI4LCAxNDcsIDE3LCAxMCwgMSwgMjQ4LCAyMTgsIDUzLCAxNywgMTAsIDEsIDI0OCwgMjE4LCA0MCwgCisgICAgMTcsIDEwLCAxLCAyNDgsIDIxOCwgNjUsIDE3LCAxMCwgMSwgMjQ4LCAyMTgsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDgyLCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMTcsIDgyLCA0MCwgMTcsIDEwLCAxLCAyMTcsIDgyLCA2NSwgMTcsIDEwLCAxLCAyMTcsIDgyLCAKKyAgICAxNDcsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDUzLCAxNywgMTAsIDEsIDIxMCwgMTEyLCA0MCwgMTcsIDEwLCAxLCAyMTAsIAorICAgIDExMiwgNjUsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDE0NywgMTcsIDEwLCAxLCAyNTQsIDE5OCwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjU0LCAxOTgsIDQwLCAxNywgMTAsIDEsIDI1NCwgMTk4LCA2NSwgMTcsIDEwLCAxLCAyNTQsIDE5OCwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDI0MiwgMjQ2LCA1MywgMTcsIDEwLCAxLCAyNDIsIDI0NiwgNDAsIDE3LCAxMCwgMSwgMjQyLCAyNDYsIDY1LCAxNywgCisgICAgMTAsIDEsIDI0MiwgMjQ2LCAxNDcsIDE3LCAxMCwgMSwgMjQ0LCAxNDQsIDUzLCAxNywgMTAsIDEsIDI0NCwgMTQ0LCA0MCwgCisgICAgMTcsIDEwLCAxLCAyNDQsIDE0NCwgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNDQsIDE0NywgMTcsIDEwLCAxLCAyMjQsIDgzLCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMjQsIDgzLCA0MCwgMTcsIDEwLCAxLCAyMjQsIDgzLCA2NSwgMTcsIDEwLCAxLCAyMjQsIDgzLCAKKyAgICAxNDcsIDE3LCAxMCwgMSwgMjM0LCAyNTIsIDUzLCAxNywgMTAsIDEsIDIzNCwgMjUyLCA0MCwgMTcsIDEwLCAxLCAyMzQsIAorICAgIDI1MiwgNjUsIDE3LCAxMCwgMSwgMjM0LCAyNTIsIDE0NywgMTcsIDEwLCAxLCAyMzMsIDEwNCwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjMzLCAxMDQsIDQwLCAxNywgMTAsIDEsIDIzMywgMTA0LCA2NSwgMTcsIDEwLCAxLCAyMzMsIDEwNCwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDY2LCA1MywgMTcsIDEwLCAxLCA2NiwgNDAsIDE3LCAxMCwgMSwgNjYsIDY1LCAxNywgMTAsIDEsIDY2LCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjI4LCA2NCwgNTMsIDE3LCAxMCwgMSwgMjI4LCA2NCwgNDAsIDE3LCAxMCwgMSwgMjI4LCA2NCwgNjUsIDE3LCAKKyAgICAxMCwgMSwgMjI4LCA2NCwgMTQ3LCAxNywgMTAsIDEsIDI0MSwgMjIwLCA1MywgMTcsIDEwLCAxLCAyNDEsIDIyMCwgNDAsIAorICAgIDE3LCAxMCwgMSwgMjQxLCAyMjAsIDY1LCAxNywgMTAsIDEsIDI0MSwgMjIwLCAxNDcsIDE3LCAxMCwgMSwgMjEyLCAzMSwgCisgICAgNTMsIDE3LCAxMCwgMSwgMjEyLCAzMSwgNDAsIDE3LCAxMCwgMSwgMTEyLCAyMzEsIDE5NCwgNTMsIDE3LCAxMCwgMSwgMTEyLCAKKyAgICAyMzEsIDE5NCwgNDAsIDE3LCAxMCwgMSwgNzksIDUzLCAxNywgMTAsIDEsIDc5LCA0MCwgMTcsIDEwLCAxLCA3OSwgNjUsIAorICAgIDE3LCAxMCwgMSwgNzksIDE0NywgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDExMiwgMiwgMjMxLCAyMjksIDc3LCA1MywgCisgICAgMTcsIDEwLCAyNywgMjMzLCAxMDQsIDIsIDExMiwgMiwgMjMxLCAyMjksIDc3LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDQsIAorICAgIDIsIDExMiwgMiwgMjAyLCA3NywgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTA0LCAyLCAxMTIsIDIsIDIwMiwgNzcsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMzMsIDEwNCwgMiwgMTEyLCAyLCAyMDIsIDI1MiwgNDQsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgCisgICAgMTEyLCAyLCAyMDIsIDI1MiwgNDQsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwNCwgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDQsIDIsIDExMiwgNDAsIDE3LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA3NCwgMjE5LCAxOSwgMTI2LCAyNDUsIAorICAgIDMyLCA3OCwgMTI2LCAyMjMsIDI1NSwgNzgsIDEyNiwgNTQsIDUwLCAxMjYsIDI0NywgMTMzLCA1MCwgMTI2LCAyMjUsIDE4MywgCisgICAgNTAsIDEyNiwgMjU0LCAxMjcsIDEyNiwgMjU0LCA1OCwgMTI2LCA0MywgMjI2LCA0LCAxMjYsIDQ0LCAyMjYsIDQsIDEyNiwgCisgICAgMjUzLCAyMTcsIDEyNiwgOTYsIDUwLCAxMjYsIDI0OSwgMjIwLCAxMjYsIDI0MCwgMTY4LCAxMjYsIDI0MywgMjMwLCAyMTgsIAorICAgIDEzMCwgMTI2LCAyMTksIDQ3LCAxMjYsIDIxLCAyMTAsIDg2LCAxMjYsIDIxLCAxMTAsIDEyNiwgMjEsIDEwNSwgMTI2LCAyMSwgCisgICAgMTU4LCAxMjYsIDIxLCAxNjEsIDEyNiwgMjEsIDE4OSwgMTI2LCAyMSwgMTk0LCAxMjYsIDIxLCAxOTgsIDEyNiwgMjEsIAorICAgIDE5NSwgMTI2LCAyMSwgMjAwLCAxMjYsIDI0OSwgMjI3LCAxMjYsIDIyMCwgMTUxLCAxMjYsIDIzMywgMTYsIDUwLCAxMjYsIAorICAgIDI0NSwgOTksIDUwLCAxMjYsIDI0MiwgMTMxLCA1MCwgMTI2LCAyMjQsIDE0LCA3OCwgMTI2LCAyNDksIDIxOCwgMjUzLCAKKyAgICAyMDcsIDEyNiwgNywgNiwgMSwgNjEsIDEyNiwgNywgNiwgMSwgMjUzLCAxNTksIDEyNiwgNywgNiwgMSwgMjUxLCA2NywgCisgICAgMTI2LCA3LCA2LCAxLCAyNDksIDYxLCAxMjYsIDcsIDYsIDEsIDc1LCAxMjYsIDcsIDYsIDEsIDI0NSwgNywgMTI2LCA3LCA2LCAKKyAgICAxLCAyNDMsIDIwMywgMTI2LCA3LCA2LCAxLCAyNDIsIDYxLCAxMjYsIDcsIDYsIDEsIDczLCAxMjYsIDcsIDYsIDEsIDIzNSwgCisgICAgMTQ1LCAxMjYsIDcsIDYsIDEsIDIzNSwgMjQsIDEyNiwgNywgNiwgMSwgMTU2LCAxMjYsIDcsIDYsIDEsIDE5MywgMTI2LCA3LCAKKyAgICA2LCAxLCAyMzAsIDI2LCAxMjYsIDcsIDYsIDEsIDc2LCAxMjYsIDcsIDYsIDEsIDIyNiwgMTA2LCAxMjYsIDcsIDYsIDEsIAorICAgIDIyNCwgOTcsIDEyNiwgNywgNiwgMSwgMTUzLCAxMjYsIDcsIDYsIDEsIDIyMiwgOTIsIDEyNiwgNywgNiwgMSwgMjE3LCAKKyAgICAxNTMsIDEyNiwgNywgNiwgMSwgNzAsIDEyNiwgNywgNiwgMSwgMjE0LCAxMDUsIDEyNiwgNywgNiwgMSwgMjEyLCA5OCwgCisgICAgMTI2LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA2LCAxLCAyMTEsIDExNywgMTI2LCA3LCA2LCAxLCAyMTAsIDE1OSwgCisgICAgMTI2LCA0MywgNDIsIDEyNywgMTI2LCAyMjMsIDUxLCAyMTksIDQ3LCAxMjYsIDQ0LCA0MiwgMTI3LCAxMjYsIDI1MCwgMzIsIAorICAgIDI1NSwgMTUsIDEyNiwgMTIxLCAyMzIsIDIxNCwgMTI2LCAyNDIsIDEzOCwgMjU1LCAxNSwgMTI2LCA3LCA0LCAxLCA2MSwgCisgICAgMTI2LCA3LCA0LCAxLCAyNTMsIDE1OSwgMTI2LCA3LCA0LCAxLCAyNTEsIDY3LCAxMjYsIDcsIDQsIDEsIDI0OSwgNjEsIAorICAgIDEyNiwgNywgNCwgMSwgNzUsIDEyNiwgNywgNCwgMSwgMjQ1LCA3LCAxMjYsIDcsIDQsIDEsIDI0MywgMjAzLCAxMjYsIDcsIAorICAgIDQsIDEsIDI0MiwgNjEsIDEyNiwgNywgNCwgMSwgNzMsIDEyNiwgNywgNCwgMSwgMjM1LCAxNDUsIDEyNiwgNywgNCwgMSwgCisgICAgMjM1LCAyNCwgMTI2LCA3LCA0LCAxLCAxNTYsIDEyNiwgNywgNCwgMSwgMTkzLCAxMjYsIDcsIDQsIDEsIDIzMCwgMjYsIAorICAgIDEyNiwgNywgNCwgMSwgNzYsIDEyNiwgNywgNCwgMSwgMjI2LCAxMDYsIDEyNiwgNywgNCwgMSwgMjI0LCA5NywgMTI2LCA3LCAKKyAgICA0LCAxLCAxNTMsIDEyNiwgNywgNCwgMSwgMjIyLCA5MiwgMTI2LCA3LCA0LCAxLCAyMTcsIDE1MywgMTI2LCA3LCA0LCAxLCAKKyAgICA3MCwgMTI2LCA3LCA0LCAxLCAyMTQsIDEwNSwgMTI2LCA3LCA0LCAxLCAyMTIsIDk4LCAxMjYsIDcsIDQsIDEsIDIxMSwgCisgICAgMTc4LCAxMjYsIDcsIDQsIDEsIDIxMSwgMTE3LCAxMjYsIDcsIDQsIDEsIDIxMCwgMTU5LCAxMjYsIDQzLCAyNDksIDEwMCwgCisgICAgMTI3LCAxMjYsIDY3LCAyMzIsIDIxNCwgMTI2LCA0NCwgMjQ5LCAxMDAsIDEyNywgMTI2LCAxODMsIDEyNiwgNDMsIDcxLCAKKyAgICAyMjYsIDQsIDEyNiwgNDQsIDcxLCAyMjYsIDQsIDEwMSwgMTA5LCAyNDMsIDIzMCwgMjE4LCAxMzAsIDEwMSwgNDMsIDI0OSwgCisgICAgMTYyLCAxMjcsIDEwMSwgNDQsIDI0OSwgMTYyLCAxMjcsIDEwMSwgMTA5LCAyNDksIDIyMCwgMTAxLCA1NiwgMjMwLCAyMjUsIAorICAgIDI0NywgMTIxLCAxMDEsIDU2LCAxLCAyMTEsIDIyNywgMTAxLCA1NiwgMSwgNCwgNjEsIDEwMSwgNTYsIDEsIDQsIDczLCAKKyAgICAxMDEsIDU2LCAxLCA0LCA3MCwgMTAxLCA1NiwgMSwgNCwgNzUsIDEwMSwgNTYsIDEsIDQsIDc2LCAxMDEsIDU2LCAxLCA0LCAKKyAgICAxOTEsIDEwMSwgNTYsIDEsIDQsIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCA0LCAyMTAsIDI0NCwgMTAxLCA1NiwgMSwgNCwgCisgICAgMjE1LCAxMTksIDEwMSwgMjM0LCAyMDIsIDIyNCwgMTc0LCAyMTksIDMyLCA3OCwgMTAxLCA1NiwgMSwgNjEsIDEwMSwgNTYsIAorICAgIDEsIDczLCAxMDEsIDU2LCAxLCA3MCwgMTAxLCA1NiwgMSwgNzUsIDEwMSwgNTYsIDEsIDc2LCAxMDEsIDU2LCAxLCAxNzYsIAorICAgIDEwMSwgNTYsIDEsIDIzNCwgOTMsIDEwMSwgNTYsIDEsIDIzMywgMjE4LCAxMDEsIDU2LCAxLCAyMzQsIDE4MywgMTAxLCA1NiwgCisgICAgMSwgMjM0LCAyOSwgMTAxLCA1NiwgMSwgMjA2LCAxMDEsIDU2LCAxLCAyMTksIDE5MiwgMTAxLCA1NiwgMSwgMjE4LCA4NCwgCisgICAgMTAxLCA1NiwgMSwgMjIxLCAxODIsIDEwMSwgNTYsIDEsIDIxOSwgNTksIDEwMSwgNTYsIDEsIDIxNywgMTA2LCAxMDEsIDU2LCAKKyAgICAxLCAyMTYsIDExOCwgMTAxLCA1NiwgMSwgMjE1LCAxMTksIDEwMSwgNTYsIDEsIDIxNywgMjMsIDEwMSwgNTYsIDEsIDExMSwgCisgICAgMTAxLCA1NiwgMSwgMTk3LCAxMDEsIDU2LCAxLCAyMjgsIDIzNCwgMTAxLCA1NiwgMSwgMjI3LCAyMzgsIDEwMSwgNTYsIDEsIAorICAgIDIyOSwgMTA4LCAxMDEsIDU2LCAxLCAyMjgsIDc1LCAxMDEsIDU2LCAxLCAxNjIsIDEwMSwgNTYsIDEsIDI0MSwgMTgxLCAKKyAgICAxMDEsIDU2LCAxLCAyNDAsIDIyMywgMTAxLCA1NiwgMSwgMjQxLCAyMzksIDEwMSwgNTYsIDEsIDI0MSwgNjksIDEwMSwgNTYsIAorICAgIDEsIDE4NSwgMTAxLCA1NiwgMSwgMjMwLCAyMzEsIDEwMSwgNTYsIDEsIDIzMCwgMTAzLCAxMDEsIDU2LCAxLCAyMzEsIDkyLCAKKyAgICAxMDEsIDU2LCAxLCAyMzAsIDE2MiwgMTAxLCA1NiwgMSwgMTkxLCAxMDEsIDU2LCAxLCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgCisgICAgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDIwNSwgMTAxLCA1NiwgMSwgMjIzLCAzNiwgMTAxLCA1NiwgMSwgMjIyLCAxNDEsIAorICAgIDEwMSwgNTYsIDEsIDIyMywgMTI5LCAxMDEsIDU2LCAxLCAyMjIsIDIxMiwgMTAxLCA1NiwgMSwgMjEyLCA2NSwgMTAxLCA1NiwgCisgICAgMSwgMjMwLCAyNiwgMTAxLCA1NiwgMjEzLCAxMzUsIDIxOSwgMzIsIDc4LCAxMDEsIDU2LCAyMjAsIDE1NiwgMjE5LCAzMiwgCisgICAgNzgsIDEwMSwgMjQsIDI0NCwgMTA0LCAxMDEsIDI0LCAxLCAyMzQsIDU5LCAxMDEsIDI0LCAxLCAyMTgsIDIxNiwgMTAxLCAKKyAgICAyNCwgMSwgMjM0LCA1MiwgMTAxLCAyNCwgMSwgMjI4LCAyMjcsIDEwMSwgMjQsIDEsIDIyOCwgMjI1LCAxMDEsIDI0LCAxLCAKKyAgICAyMjgsIDIyNCwgMTAxLCAyNCwgMSwgMjE2LCAxMDIsIDEwMSwgMjQsIDEsIDIxOCwgMjA1LCAxMDEsIDI0LCAxLCAyMjMsIAorICAgIDI3LCAxMDEsIDI0LCAxLCAyMjMsIDIyLCAxMDEsIDI0LCAxLCAyMjMsIDE5LCAxMDEsIDI0LCAxLCAyMjMsIDEyLCAxMDEsIAorICAgIDI0LCAxLCAyMjMsIDcsIDEwMSwgMjQsIDEsIDIyMywgMiwgMTAxLCAyNCwgMSwgMjIzLCAxMywgMTAxLCAyNCwgMSwgMjIzLCAKKyAgICAyNSwgMTAxLCAyNCwgMSwgMjMwLCAyMTgsIDEwMSwgMjQsIDEsIDIyNSwgOTYsIDEwMSwgMjQsIDEsIDIxOCwgMjEzLCAxMDEsIAorICAgIDI0LCAxLCAyMjUsIDg1LCAxMDEsIDI0LCAxLCAyMTksIDE0OSwgMTAxLCAyNCwgMSwgMjE4LCAyMTAsIDEwMSwgMjQsIDEsIAorICAgIDIzNiwgNTcsIDEwMSwgMjQsIDEsIDI1MCwgNDcsIDEwMSwgMjQsIDEsIDIxOCwgMjIwLCAxMDEsIDI0LCAxLCAyNTAsIDEwNywgCisgICAgMTAxLCAyNCwgMSwgMjM0LCAxMTEsIDEwMSwgMjQsIDEsIDIxNiwgMTc0LCAxMDEsIDI0LCAxLCAyMjUsIDEzMiwgMTAxLCAKKyAgICAyNCwgMSwgMjQxLCAxNzMsIDEwMSwgMjQsIDEsIDYxLCAxMDEsIDI0LCAxLCAyNTQsIDI0NCwgMTAxLCAyNCwgMSwgMTkxLCAKKyAgICAxMDEsIDI0LCAxLCAyMTEsIDkyLCAxMDEsIDI0LCAxLCAyNDUsIDExOCwgMTAxLCAyNCwgMSwgNzUsIDEwMSwgMjQsIDEsIAorICAgIDIxMSwgMzYsIDEwMSwgMjQsIDEsIDIxMSwgNDcsIDEwMSwgMjQsIDEsIDc2LCAxMDEsIDI0LCAxLCAyMTIsIDY1LCAxMDEsIAorICAgIDI0LCAxLCAyMTIsIDYyLCAxMDEsIDI0LCAxLCAyMjYsIDIzNSwgMTAxLCAyNCwgMSwgMjEwLCAyNDQsIDEwMSwgMjQsIDEsIAorICAgIDcwLCAxMDEsIDI0LCAxLCAyMTIsIDExLCAxMDEsIDI0LCAxLCAyMTIsIDIyLCAxMDEsIDI0LCAxLCAyMTEsIDI1MCwgMTAxLCAKKyAgICAyNCwgMSwgMjEwLCAyMTIsIDEwMSwgMjQsIDEsIDI0NSwgNTYsIDEwMSwgMjQsIDEsIDIxMSwgOCwgMTAxLCAyNCwgMSwgNzMsIAorICAgIDEyNiwgMjUwLCAxNzcsIDUwLCAxMjYsIDIyNCwgMjI5LCA1MCwgMTI2LCAyMjgsIDUzLCA1MCwgMTI2LCAyMzEsIDIzMywgCisgICAgMTI2LCAyNTEsIDEzNiwgMTMwLCAxMjYsIDIxMSwgNDAsIDUwLCAxMjYsIDIxMSwgMjE3LCA1MCwgMTAxLCAyNDQsIDE5LCAKKyAgICAxOTIsIDIxMywgMjM5LCAxMDEsIDE0MCwgNzQsIDEwMSwgMjE0LCAxNTMsIDc0LCAxMDEsIDk3LCA3NCwgMTAxLCAyNDYsIAorICAgIDEwNSwgNzQsIDEwMSwgODUsIDIxOCwgMjM1LCAxMDEsIDcxLCAyNTAsIDM2LCAyMzUsIDIwNSwgMjU0LCAxMDAsIDI1NCwgCisgICAgMTIxLCAyMzUsIDIwNSwgMjU0LCAxMDAsIDIyMCwgMTM4LCAyMzUsIDIwNSwgMjU0LCAxMDAsIDIxNiwgMjM3LCAyMjYsIAorICAgIDI1MCwgMjIzLCA3MywgMjUwLCAxNDMsIDIyMywgNzMsIDI1MCwgMTQzLCA2MiwgNTcsIDMsIDI1MywgMTQzLCA2MSwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDExMiwgNzUsIDYyLCA1NywgMywgMjUzLCAxMjEsIDczLCA2MiwgNTcsIDMsIDI1MywgODksIDc2LCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTM5LCA3MCwgNjIsIDU3LCAzLCAyNTMsIDE1OCwgMjQ4LCAyMjIsIDYyLCA1NywgMywgMjUzLCAxMDUsIAorICAgIDI0OCwgOTEsIDYyLCA1NywgMywgMjUzLCAxNDUsIDI0OCwgNCwgNjIsIDU3LCAzLCAyNTMsIDEzNSwgMjQ3LCAxNDYsIDYyLCAKKyAgICA1NywgMywgMjUzLCA5OSwgMjQ2LCA3OSwgNjIsIDU3LCAzLCAyNTMsIDkzLCAyMzUsIDE0MiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDEwNCwgMjM1LCAxMjcsIDYyLCA1NywgMywgMjUzLCAxMTQsIDIzNSwgNjksIDYyLCA1NywgMywgMjUzLCA4NSwgMjM1LCA1MiwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDczLCAxNzYsIDYyLCA1NywgMywgMjUzLCAxMDYsIDIzNCwgMTgzLCA2MiwgNTcsIDMsIDI1MywgCisgICAgODMsIDIzNCwgOTMsIDYyLCA1NywgMywgMjUzLCA4MCwgMjM0LCAyOSwgNjIsIDU3LCAzLCAyNTMsIDY5LCAyMzMsIDIxOCwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDcwLCAxODUsIDYyLCA1NywgMywgMjUzLCAxMzYsIDIzMSwgOTIsIDYyLCA1NywgMywgMjUzLCAKKyAgICA3NywgMjMwLCAyMzEsIDYyLCA1NywgMywgMjUzLCAxMzQsIDIzMCwgMTYyLCA2MiwgNTcsIDMsIDI1MywgMTI2LCAyMzAsIAorICAgIDEwMywgNjIsIDU3LCAzLCAyNTMsIDE0NywgMTk3LCA2MiwgNTcsIDMsIDI1MywgMTI1LCAyMjksIDEwOCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDExOSwgMjI4LCAyMzQsIDYyLCA1NywgMywgMjUzLCA5OCwgMjI4LCA3NSwgNjIsIDU3LCAzLCAyNTMsIDk1LCAyMjcsIAorICAgIDIzOCwgNjIsIDU3LCAzLCAyNTMsIDE1NCwgMTkwLCA2MiwgNTcsIDMsIDI1MywgNzgsIDIyNSwgMjIyLCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTExLCAyMjUsIDEwOSwgNjIsIDU3LCAzLCAyNTMsIDEzOCwgMjI1LCAxNywgNjIsIDU3LCAzLCAyNTMsIDEwMCwgCisgICAgMjI0LCAxNTEsIDYyLCA1NywgMywgMjUzLCAxMzMsIDIyNCwgODksIDYyLCA1NywgMywgMjUzLCA3MiwgMjI0LCA3MCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEyOCwgMjI0LCA1NCwgNjIsIDU3LCAzLCAyNTMsIDExNywgMjI0LCA0MywgNjIsIDU3LCAzLCAyNTMsIAorICAgIDkwLCAyMDUsIDYyLCA1NywgMywgMjUzLCAxMjIsIDIyMywgMTI5LCA2MiwgNTcsIDMsIDI1MywgOTcsIDIyMywgMzYsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxNTYsIDIyMiwgMjEyLCA2MiwgNTcsIDMsIDI1MywgMTIzLCAyMjIsIDE0MSwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDExOCwgMjA2LCA2MiwgNTcsIDMsIDI1MywgMTQxLCAyMjEsIDE4MiwgNjIsIDU3LCAzLCAyNTMsIDEwOSwgMjE5LCAxOTIsIAorICAgIDYyLCA1NywgMywgMjUzLCAxMzcsIDIxOSwgNTksIDYyLCA1NywgMywgMjUzLCA5MiwgMjE4LCA4NCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDkxLCAyMTcsIDEwNiwgNjIsIDU3LCAzLCAyNTMsIDE1MiwgMjE3LCAyMywgNjIsIDU3LCAzLCAyNTMsIDExMywgCisgICAgMjE2LCAxMTgsIDYyLCA1NywgMywgMjUzLCAxNTAsIDExMSwgNjIsIDU3LCAzLCAyNTMsIDgxLCAyMTUsIDExOSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDk2LCAyMTIsIDY1LCA2MiwgNTcsIDMsIDI1MywgNzUsIDIxMiwgMjIsIDYyLCA1NywgMywgMjUzLCAxMTAsIAorICAgIDIxMSwgMjUwLCA2MiwgNTcsIDMsIDI1MywgMTA4LCAyMTEsIDIyNywgNjIsIDU3LCAzLCAyNTMsIDEzMiwgMjEwLCAxMTYsIAorICAgIDYyLCA1NywgMywgMjUzLCA3NiwgMjEwLCA5NCwgNjIsIDU3LCAzLCAyNTMsIDEyOSwgMjEwLCAyMywgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDEyNCwgMjU1LCA3NiwgNjIsIDU3LCAzLCAyNTMsIDEwNywgMjU1LCA3NSwgNjIsIDU3LCAzLCAyNTMsIDY2LCAyNTMsIAorICAgIDE5MywgNjIsIDU3LCAzLCAyNTMsIDc5LCAyNDYsIDQ3LCA2MiwgNTcsIDMsIDI1MywgNjIsIDI0NiwgNDYsIDYyLCA1NywgMywgCisgICAgMjUzLCAxMDIsIDIyNywgMTc1LCA2MiwgNTcsIDMsIDI1MywgMTIwLCAyMjQsIDE0OSwgNjIsIDU3LCAzLCAyNTMsIDg4LCAKKyAgICAyMjQsIDE1MywgNjIsIDU3LCAzLCAyNTMsIDc0LCAyMjMsIDE4NywgNjIsIDU3LCAzLCAyNTMsIDExNiwgMjIzLCAxODYsIAorICAgIDYyLCA1NywgMywgMjUzLCA4MiwgMjIyLCAyMTEsIDYyLCA1NywgMywgMjUzLCA4NCwgMjE3LCAxMDMsIDYyLCA1NywgMywgCisgICAgMjUzLCA2NCwgMjE1LCA3OCwgNjIsIDU3LCAzLCAyNTMsIDYxLCAxMDUsIDYyLCA1NywgMTYsIDI1MywgMTMxLCA2MiwgNTcsIAorICAgIDE2LCAyNTMsIDEzMCwgNjIsIDU3LCAxNiwgMjUzLCAxMjcsIDYyLCA1NywgMTYsIDI1MywgMTE1LCA2MiwgNTcsIDE2LCAKKyAgICAyNTMsIDEwMywgNjIsIDU3LCAxNiwgMjUzLCAxMDEsIDYyLCA1NywgMTYsIDI1MywgOTQsIDYyLCA1NywgMTYsIDI1MywgODcsIAorICAgIDYyLCA1NywgMTYsIDI1MywgODYsIDYyLCA1NywgMTYsIDI1MywgNzEsIDYyLCA1NywgMTYsIDI1MywgNjgsIDYyLCA1NywgCisgICAgMTYsIDI1MywgNjcsIDYyLCA1NywgMTYsIDI1MywgNjUsIDYyLCA1NywgMTYsIDI1MywgNjMsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDYwLCAyMzEsIDE4NiwgNjIsIDU3LCAxMDYsIDI1MywgNTksIDIxMSwgMjIxLCA2MiwgNTcsIDEwNiwgMjUzLCA1OCwgMjQ4LCAKKyAgICA3NSwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDI0NSwgOTYsIDYyLCA1NywgMTA2LCAyNTMsIDU2LCAyMzEsIDE2MCwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgNTUsIDIxOCwgMTYzLCA2MiwgNTcsIDEwNiwgMjUzLCA1NCwgMjQ1LCAzOCwgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgNTMsIDIyMywgMTU0LCA2MiwgNTcsIDEwNiwgMjUzLCA1MiwgMjIwLCA2MywgNjIsIDU3LCAxMDYsIDI1MywgNTEsIAorICAgIDI0MSwgMjM4LCA2MiwgNTcsIDEwNiwgMjUzLCA1MCwgMjE5LCAyNiwgNjIsIDU3LCAxMDYsIDI1MywgNDksIDI1MSwgMjA0LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCA0OCwgMjQ5LCAxNDYsIDYyLCA1NywgMTA2LCAyNTMsIDQ3LCAyNTEsIDExNiwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgNDYsIDIxMiwgMiwgNjIsIDU3LCAxMDYsIDI1MywgNDUsIDI1MiwgMTM3LCA2MiwgNTcsIDEwNiwgMjUzLCAKKyAgICA0NCwgMjI2LCAyMDYsIDYyLCA1NywgMTA2LCAyNTMsIDQzLCAyMTgsIDI1NSwgNjIsIDU3LCAxMDYsIDI1MywgNDIsIDI0OSwgCisgICAgNjksIDYyLCA1NywgMjMwLCAxNDMsIDI1MywgNDEsIDIzNCwgMjI1LCA2MiwgNTcsIDIzMCwgMTQzLCAyNTMsIDQwLCAyMzQsIAorICAgIDIzMywgNjIsIDU3LCAxMDYsIDI1MywgMzksIDIyNiwgMjE5LCA2MiwgNTcsIDEwNiwgMjUzLCAzOCwgMjExLCAyMzYsIDYyLCAKKyAgICA1NywgMTA2LCAyNTMsIDM3LCA2MiwgNTcsIDIzMCwgMTQzLCAyNTMsIDM2LCAyNTQsIDE4LCA2MiwgNTcsIDIzMCwgMTQzLCAKKyAgICAyNTMsIDM1LCAyMzEsIDUzLCA2MiwgNTcsIDEwNiwgMjUzLCAzNCwgMjUxLCAxMzUsIDYyLCA1NywgMTA2LCAyNTMsIDMzLCAKKyAgICAyNDIsIDE2NywgNjIsIDU3LCAxMDYsIDI1MywgMzIsIDYyLCA1NywgMTA2LCAyNTMsIDMxLCAyMTEsIDIxMiwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgMzAsIDYyLCA1NywgMTA2LCAyNTMsIDI5LCA2MiwgNTcsIDEwNiwgMjUzLCAyOCwgMjQwLCAyNDksIDYyLCAKKyAgICA1NywgMTA2LCAyNTMsIDI3LCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIDU3LCAxMDYsIDI1MywgMjUsIDYyLCA1NywgCisgICAgMjMwLCAxNDMsIDI1MywgMjMsIDIxNSwgOTIsIDYyLCA1NywgMTA2LCAyNTMsIDIyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDI0OSwgMjUxLCA2MiwgNTcsIDEwNiwgMjUzLCAxOSwgNjIsIDU3LCAxMDYsIDI1MywgCisgICAgMTgsIDYyLCA1NywgMTA2LCAyNTMsIDE3LCAyNDMsIDk0LCA2MiwgNTcsIDEwNiwgMjUzLCAxNiwgMjU0LCA1LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCAxNSwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgMTA2LCAyNTMsIDEzLCA2MiwgNTcsIDEwNiwgCisgICAgMjUzLCAxMiwgNjIsIDU3LCAxMDYsIDI1MywgMTEsIDYyLCA1NywgMTA2LCAyNTMsIDEwLCA2MiwgNTcsIDEwNiwgMjUzLCA5LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCA4LCA2MiwgNTcsIDEwNiwgMjUzLCA3LCA2MiwgNTcsIDEwNiwgMjUzLCA2LCAyMzAsIDEzNSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgNSwgNjIsIDU3LCAxMDYsIDI1MywgNCwgMjE1LCAyMzYsIDYyLCA1NywgMTA2LCAyNTMsIDMsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIDYyLCA1NywgMTA2LCAyNTMsIDAsIDYyLCA1NywgCisgICAgMTA2LCAyNTIsIDI1NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjU0LCA2MiwgNTcsIDEwNiwgMjUyLCAyNTMsIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDI1MiwgMjUxLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTAsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDI0OSwgNjIsIDU3LCAxMDYsIDI1MiwgMjQ4LCAyNDEsIDIxMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjI3LCAyNDQsIDI5LCA2MiwgCisgICAgNTcsIDEwNiwgMjUyLCAyMjQsIDI1MiwgMTE3LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTksIDIxOSwgNiwgNjIsIDU3LCAxMDYsIAorICAgIDI1MiwgMjE4LCA3NCwgNjIsIDU3LCAxMDYsIDI1MiwgMjE3LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTYsIDIxNywgMjM3LCA2MiwgCisgICAgNTcsIDEwNiwgMjUyLCAyMTUsIDYyLCA1NywgMTA2LCAyNTIsIDIxNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjEzLCAyMTEsIAorICAgIDI1NCwgMjUwLCAxNDAsIDYyLCA1NywgMTA2LCAyNTIsIDIxMiwgMjUwLCAxNDAsIDYyLCA1NywgMTA2LCAyNTIsIDIxMSwgCisgICAgMjUwLCAxNDEsIDI0NCwgMCwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCAyMTIsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDIwOSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjA4LCA2MiwgNTcsIDIzMCwgMTQzLCAyNTIsIDIwNywgMjQ3LCAxOTksIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDIwNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjA1LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDMsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIwMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjAxLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDAsIDI0OCwgMTYwLCA2MiwgNTcsIDEwNiwgCisgICAgMjUyLCAxOTksIDYyLCA1NywgMTA2LCAyNTIsIDE5OCwgNjIsIDU3LCAxMDYsIDI1MiwgMTk3LCA2MiwgNTcsIDEwNiwgMjUyLCAKKyAgICAxOTYsIDYyLCA1NywgMTA2LCAyNTIsIDE5NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTMsIDI0LCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjQ3LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ2LCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjQ1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAorICAgIDI1MiwgMjQzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCisgICAgMjQxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM5LCAKKyAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM4LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM3LCA2MiwgNTcsIAorICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM2LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM1LCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjM0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMzLCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjMyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAorICAgIDI1MiwgMjMwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCisgICAgMjI4LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI2LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI1LCAKKyAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIyLCA2MiwgNTcsIAorICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIwLCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjA0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMTk0LCAyNTQsIDIzNywgMjExLCAyMDksIAorICAgIDIyMCwgMTM5LCAyMzIsIDIxNCwgMjU0LCAyMzcsIDIxMSwgMjA5LCAyMjAsIDEzOSwgMjQ3LCAxMjEsIDI1NCwgMjM3LCAKKyAgICAyNTAsIDEzMSwgNzgsIDI1NCwgMjM3LCA1NCwgMTEwLCAyNTQsIDIzNywgNTQsIDEwNSwgMjU0LCAyMzcsIDU0LCAxNTgsIAorICAgIDI1NCwgMjM3LCA1NCwgMTYxLCAyNTQsIDIzNywgNTQsIDE4OSwgMjU0LCAyMzcsIDU0LCAxOTQsIDI1NCwgMjM3LCA1NCwgCisgICAgMTk4LCAyNTQsIDIzNywgNTQsIDE5NSwgMjU0LCAyMzcsIDU0LCAyMDAsIDI1NCwgMjM3LCA1NCwgMjE2LCAyNDgsIDI1NCwgCisgICAgMjM3LCA1NCwgMjE1LCA3MywgMjU0LCAyMzcsIDU0LCAyMTYsIDE2MywgMjU0LCAyMzcsIDU0LCAyNDQsIDE2LCAyNTQsIAorICAgIDIzNywgNTQsIDI0NCwgMTE1LCAyNTQsIDIzNywgNTQsIDIxOSwgMTEyLCAyNTQsIDIzNywgNTQsIDIyMCwgMTE3LCAyNTQsIAorICAgIDIzNywgNTQsIDI0NSwgMTg1LCAyNTQsIDIzNywgNTQsIDIyOCwgMTk2LCAyNTQsIDIzNywgNTQsIDEyMywgMjQwLCAyMTEsIAorICAgIDI1NCwgMjM3LCA1NCwgMTEzLCAyNDAsIDIxMSwgMjU0LCAyMzcsIDU0LCAxMzQsIDI0MCwgMjExLCAyNTQsIDIzNywgNTQsIAorICAgIDI0NCwgMTIsIDI0MCwgMjExLCAyNTQsIDIzNywgNTQsIDI0NCwgODIsIDI0MCwgMjExLCAyNTQsIDIzNywgNTQsIDIxOSwgCisgICAgMTI2LCAyNDAsIDIxMSwgMjU0LCAyMzcsIDU0LCAyMjAsIDEyMywgMjQwLCAyMTEsIDI1NCwgMjM3LCA1NCwgMjQ1LCAxOTQsIAorICAgIDI0MCwgMjExLCAyNTQsIDIzNywgNTQsIDIyOCwgMjAxLCAyNDAsIDIxMSwgMjU0LCAyMzcsIDU0LCAxMjMsIDIxNiwgMTQ4LCAKKyAgICAyNTQsIDIzNywgNTQsIDExMywgMjE2LCAxNDgsIDI1NCwgMjM3LCA1NCwgMTM0LCAyMTYsIDE0OCwgMjU0LCAyMzcsIDU0LCAKKyAgICAyNDQsIDEyLCAyMTYsIDE0OCwgMjU0LCAyMzcsIDU0LCAyNDQsIDgyLCAyMTYsIDE0OCwgMjU0LCAyMzcsIDU0LCAyMTksIAorICAgIDEyNiwgMjE2LCAxNDgsIDI1NCwgMjM3LCA1NCwgMjIwLCAxMjMsIDIxNiwgMTQ4LCAyNTQsIDIzNywgNTQsIDI0NSwgMTk0LCAKKyAgICAyMTYsIDE0OCwgMjU0LCAyMzcsIDU0LCAyMjgsIDIwMSwgMjE2LCAxNDgsIDI1NCwgMjM3LCA1NCwgMjE2LCAyNDksIDIxNiwgCisgICAgMTQ4LCAyNTQsIDIzNywgNTQsIDIxNSwgNzQsIDIxNiwgMTQ4LCAyNTQsIDIzNywgNTQsIDIxNiwgMTY0LCAyMTYsIDE0OCwgCisgICAgMjU0LCAyMzcsIDU0LCAyNDQsIDE3LCAyMTYsIDE0OCwgMjU0LCAyMzcsIDU0LCAyNDQsIDExNiwgMjE2LCAxNDgsIDI1NCwgCisgICAgMjM3LCA1NCwgMjE5LCAxMTMsIDIxNiwgMTQ4LCAyNTQsIDIzNywgNTQsIDIyMCwgMTE4LCAyMTYsIDE0OCwgMjU0LCAyMzcsIAorICAgIDU0LCAyNDUsIDE4NiwgMjE2LCAxNDgsIDI1NCwgMjM3LCA1NCwgMjI4LCAxOTcsIDIxNiwgMTQ4LCAyNTQsIDIzNywgMjEyLCAKKyAgICAxNCwgMjUyLCAxMjksIDIxNCwgMTczLCAyNTQsIDIzNywgMjEyLCAxNCwgMjQ0LCA5MywgMjE4LCA2MCwgMjU0LCAyMzcsIAorICAgIDIxMiwgMTQsIDIyMSwgMTc3LCAyMTgsIDYwLCAyNTQsIDIzNywgMjEyLCAxNCwgMjE2LCAxNzAsIDIxOCwgNjAsIDI1NCwgCisgICAgMjM3LCAyMTIsIDE0LCAyNDQsIDUsIDIxOCwgNjAsIDI1NCwgMjM3LCAyNDYsIDgyLCAyMzEsIDkxLCAyNDQsIDkzLCAyMTgsIAorICAgIDYwLCAyNTQsIDIzNywgMjMyLCAyMDAsIDIzMSwgOTEsIDI0NCwgOTMsIDIxOCwgNjAsIDI1NCwgMjM3LCAyMzEsIDkxLCAKKyAgICAyMjEsIDE3NywgMjE4LCA2MCwgMjU0LCAyMzcsIDIzMSwgOTEsIDIxNiwgMTcwLCAyMTgsIDYwLCAyNiwgMjU1LCA3LCAyNTMsIAorICAgIDE5NSwgMTIzLCAyMjQsIDIyLCAyNiwgMjU1LCA3LCAyNTMsIDE5NSwgMTIzLCAyNDIsIDI4LCAyNiwgMjU1LCA3LCAyNTMsIAorICAgIDE5NSwgMTIzLCAyNDYsIDEwMSwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDE4OSwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDI0NCwgCisgICAgMTE1LCAyNiwgMjU1LCA3LCAyNTMsIDE5NSwgMjQ0LCA4MiwgMjQwLCAyMTEsIDI2LCAyNTUsIDcsIDI1MywgMTk1LCAyNDQsIAorICAgIDgyLCAyMTYsIDE0OCwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDI0NCwgMTE2LCAyMTYsIDE0OCwgMjYsIDI1NSwgNywgMjUzLCAKKyAgICAxOTUsIDI0NCwgODIsIDIxNywgNjgsIDI2LCAyNTUsIDcsIDI1MywgMTk1LCAyMTYsIDI0OSwgMjE3LCA2OCwgMjYsIDI1NSwgCisgICAgNywgMjUzLCAxOTUsIDI0NCwgMTE2LCAyMTcsIDY4LCAyNiwgMjU1LCA3LCAyNTMsIDE5NSwgMTIzLCAyNDAsIDIxMiwgMjE3LCAKKyAgICA2OCwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDI0NCwgODIsIDI0MCwgMjEyLCAyMTcsIDY4LCAyNiwgMjU1LCA3LCAyNTMsIAorICAgIDE5NSwgMTIzLCAyMTYsIDE0OSwgMjE3LCA2OCwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDI0NCwgODIsIDIxNiwgMTQ5LCAKKyAgICAyMTcsIDY4LCAyNiwgMjU1LCA3LCAyNTMsIDE5NSwgMjQ0LCA4MiwgMjE4LCAxNTEsIDI2LCAyNTUsIDcsIDI1MywgMTk1LCAKKyAgICAyMTYsIDI0OSwgMjE4LCAxNTEsIDI2LCAyNTUsIDcsIDI1MywgMTk1LCAyNDQsIDExNiwgMjE4LCAxNTEsIDI2LCAyNTUsIDcsIAorICAgIDI1MywgMTk1LCAxMjMsIDI0MCwgMjEyLCAyMTgsIDE1MSwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDI0NCwgODIsIDI0MCwgCisgICAgMjEyLCAyMTgsIDE1MSwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDEyMywgMjE2LCAxNDksIDIxOCwgMTUxLCAyNiwgMjU1LCA3LCAKKyAgICAyNTMsIDE5NSwgMjE2LCAyNDksIDIxNiwgMTQ5LCAyMTgsIDE1MSwgMjYsIDI1NSwgNywgMjUzLCAxOTUsIDI0NCwgMTE2LCAKKyAgICAyMTYsIDE0OSwgMjE4LCAxNTEsIDI2LCAyNTUsIDcsIDI1MywgMTk1LCAyMTYsIDI0OSwgMjMwLCAxNjUsIDI2LCAyNTUsIDcsIAorICAgIDI0MSwgMjA2LCAxMjMsIDIyNSwgMzIsIDI2LCAyNTUsIDcsIDIxNiwgMTgyLCAxMTAsIDI2LCAyNTUsIDcsIDI0MSwgMjAyLCAKKyAgICAxMTAsIDI2LCAyNTUsIDcsIDI0NSwgMTA1LCAxMDUsIDI2LCAyNTUsIDcsIDIxNiwgMTgyLCAxMDUsIDI2LCAyNTUsIDcsIAorICAgIDI0OSwgNjYsIDExMywgMjQ2LCAxMDAsIDI2LCAyNTUsIDcsIDI0NSwgMTA1LCAxMTMsIDI0NiwgMTAwLCAyNiwgMjU1LCA3LCAKKyAgICAyMTUsIDIwNCwgMTg5LCAyNiwgMjU1LCA3LCAyMTUsIDIwNCwgMjE2LCAyNDgsIDI2LCAyNTUsIDcsIDIxNSwgMjA0LCAyMTYsIAorICAgIDI0OSwgMjU0LCAxNDIsIDE3LCAyNiwgMjU1LCA3LCAyNDEsIDIwMiwgMjE2LCAyNDgsIDI2LCAyNTUsIDcsIDIzMSwgNDIsIAorICAgIDIxNiwgMjQ4LCAyNiwgMjU1LCA3LCAyMTYsIDE4MiwgMjE2LCAyNDgsIDI2LCAyNTUsIDcsIDIxNiwgMTgyLCAyMTYsIDE2MywgCisgICAgMjYsIDI1NSwgNywgMjE1LCAyMDQsIDI0NCwgMTE1LCAyNiwgMjU1LCA3LCAyMTUsIDIwNCwgMjQ0LCAxMTYsIDI1NCwgMTQyLCAKKyAgICAxNywgMjYsIDI1NSwgNywgMjQxLCAyMDIsIDI0NCwgMTE1LCAyNiwgMjU1LCA3LCAyMTYsIDE4MiwgMjQ0LCAxMTUsIDI2LCAKKyAgICAyNTUsIDcsIDIxNiwgMTgyLCAxMjMsIDI0MCwgMjExLCAyNiwgMjU1LCA3LCAyMTYsIDE4MiwgMTM0LCAyNDAsIDIxMSwgMjYsIAorICAgIDI1NSwgNywgMjQ1LCAxMDUsIDI0NCwgODIsIDI0MCwgMjExLCAyNiwgMjU1LCA3LCAyMTUsIDIwNCwgMjQ0LCA4MiwgMjQwLCAKKyAgICAyMTEsIDI2LCAyNTUsIDcsIDIxNiwgMTgyLCAyNDQsIDgyLCAyNDAsIDIxMSwgMjYsIDI1NSwgNywgMjUwLCAyMjgsIDI0NCwgCisgICAgODIsIDI0MCwgMjExLCAyNiwgMjU1LCA3LCAyMjksIDE4MywgMjQ0LCA4MiwgMjQwLCAyMTEsIDI2LCAyNTUsIDcsIDIxNiwgCisgICAgMTgyLCAxMjMsIDIxNiwgMTQ4LCAyNiwgMjU1LCA3LCAyMTYsIDE4MiwgMjQ0LCA4MiwgMjE2LCAxNDgsIDI2LCAyNTUsIDcsIAorICAgIDI0OCwgNTgsIDI0NCwgODIsIDIzMCwgMTY1LCAyNiwgMjU1LCA3LCAyMTgsIDExOSwgMjQ0LCAxMTYsIDIzMCwgMTY1LCAyNiwgCisgICAgMTIzLCAxNjMsIDUwLCAyNiwgMTIzLCAxNjMsIDUsIDI1NCwgMTQyLCAxNywgMjYsIDExMywgMjE2LCAxNjgsIDUwLCAyNiwgCisgICAgMTM0LCAyMjQsIDIxLCA1MCwgMjYsIDIxMSwgNDUsIDUwLCAyNiwgMjE3LCA2OSwgNTAsIDI2LCAyNDYsIDEwMiwgNTAsIDI2LCAKKyAgICAyMjYsIDI0NywgNTAsIDI2LCAxMTMsIDIyNiwgMjQ2LCA1MCwgMjYsIDEzNCwgMjI2LCAyNDYsIDUwLCAyNiwgMjQ0LCAxMiwgCisgICAgMjI2LCAyNDYsIDUwLCAyNiwgMjQ0LCA4MiwgMjI2LCAyNDYsIDUwLCAyNiwgMjMxLCAzNiwgNTAsIDI2LCAyMzMsIDE1OCwgCisgICAgMjUyLCAxMjksIDUwLCAyNiwgMjMyLCAxOTUsIDUwLCAyNiwgMjI2LCAxMzIsIDUwLCAyNiwgMjExLCAxNTksIDUwLCAyNiwgCisgICAgMjUzLCAyNDQsIDUwLCAyNiwgMjU0LCAxLCA1MCwgMjYsIDI0MiwgMTQ1LCA1MCwgMjYsIDIxNSwgMTg3LCAyNTIsIDEyOSwgCisgICAgNTAsIDI2LCAyMTAsIDg3LCA1MCwgMjIyLCAxOTksIDIyMCwgMTE0LCA1MCwgMjIyLCAxOTksIDIxNCwgMTg1LCA1MCwgMjIyLCAKKyAgICAxOTksIDIyMCwgMTQzLCA1MCwgMjIyLCAxOTksIDIyMCwgMTEyLCA1MCwgMjIyLCAxOTksIDI0NywgMjE0LCAyMjAsIDExMiwgCisgICAgNTAsIDIyMiwgMTk5LCAyMTksIDE2OSwgNTAsIDIyMiwgMTk5LCAyNDgsIDU0LCA1MCwgMjIyLCAxOTksIDIyNCwgNywgNTAsIAorICAgIDIyMiwgMTk5LCAyMjAsIDEzMCwgNTAsIDIyMiwgMTk5LCAyNDYsIDYxLCA1MCwgMjIyLCAxOTksIDI1MywgMjM5LCA1MCwgCisgICAgMjIyLCAxOTksIDI1MCwgMTcyLCA1MCwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyMjUsIDIxNCwgMjI1LCAxNDQsIDI0NywgCisgICAgMTkyLCA1LCAyMjUsIDI1LCAyNDEsIDIzNiwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyMTcsIDQ2LCAyNDEsIDIzNiwgMjI1LCAKKyAgICAxNDQsIDI0NywgMTkyLCA1LCAyNTAsIDI0OCwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyNTAsIDEwMiwgMjI1LCAxNDQsIAorICAgIDI0NywgMTkyLCA1LCAyMTEsIDIyMSwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyNDEsIDIxMiwgMjI1LCAxNDQsIDI0NywgCisgICAgMTkyLCA1LCAyNDMsIDg2LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIxNiwgMTE3LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIAorICAgIDc0LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDI1MSwgMTcwLCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIyMCwgMzAsIDIyNSwgCisgICAgMTQ0LCAyNDcsIDE5MiwgNSwgMjQ5LCAyNDUsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjMxLCAxODUsIDIyNSwgMTQ0LCAKKyAgICAyNDcsIDE5MiwgNSwgMjMxLCAxMzcsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjIxLCAyMTcsIDIyNSwgMTQ0LCAyNDcsIAorICAgIDE5MiwgNSwgMjMyLCAyMzgsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjUxLCAxODksIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgCisgICAgMjUwLCAyMzIsIDIyNSwgMzYsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjQ3LCAxMzQsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgCisgICAgNSwgMjQ5LCAyMjQsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjE5LCA4OCwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyNDksIAorICAgIDIyNSwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyNTIsIDY0LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIyMCwgMTcsIDIyNSwgCisgICAgMTQ0LCAyNDcsIDE5MiwgNSwgMjQwLCAyNDksIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjQxLCAxNzksIDIyNSwgMTQ0LCAKKyAgICAyNDcsIDE5MiwgNSwgMjUxLCAxMTMsIDIzMywgMzcsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjUwLCAyMjUsIDIyNSwgCisgICAgMTQ0LCAyNDcsIDE5MiwgNSwgMjIzLCAxNTQsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjQ1LCAyMzEsIDIyNSwgMTQ0LCAKKyAgICAyNDcsIDE5MiwgNSwgMjQ2LCAxMDgsIDIyNSwgMTQ0LCAyNDcsIDE5MiwgNSwgMjE1LCAxMDYsIDIyNSwgMTQ0LCAyNDcsIAorICAgIDE5MiwgNSwgMjUyLCA2NywgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyMjUsIDM3LCAyMTUsIDIzNiwgMjI1LCAxNDQsIDI0NywgCisgICAgMTkyLCA1LCAyMTMsIDE1OSwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyMjYsIDE5LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIAorICAgIDIyMiwgMTkxLCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIzMiwgMjI1LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIyNiwgCisgICAgMTE2LCAyNTIsIDE4NSwgMjI1LCAxNDQsIDI0NywgMTkyLCA1LCAyNDQsIDQ5LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIAorICAgIDI0MiwgMTM5LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIxOCwgMTIwLCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDQsIDI1MywgCisgICAgMTY5LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDIxMiwgMzIsIDI1MiwgMTQ5LCAyMjUsIDE0NCwgMjQ3LCAxOTIsIDUsIDM4LCAKKyAgICAyMjYsIDI0OSwgOTEsIDIzMiwgNjEsIDEsIDYxLCAyMzIsIDYxLCAxLCA3NSwgMjMyLCA2MSwgMSwgMjUzLCAxNTksIDIzMiwgCisgICAgNjEsIDEsIDI1MiwgMjAsIDIzMiwgNjEsIDEsIDI0MywgMjAzLCAyMzIsIDYxLCAxLCAyNDksIDYxLCAyMzIsIDYxLCAxLCAKKyAgICA3MywgMjMyLCA2MSwgMSwgMjEyLCA5OCwgMjMyLCA2MSwgMSwgMjEwLCAxNTksIDIzMiwgNjEsIDEsIDIxNiwgMjExLCAyMzIsIAorICAgIDYxLCAxLCAyMzUsIDE0NSwgMjMyLCA2MSwgMSwgMjM1LCAyNCwgMjMyLCA2MSwgMSwgMjI0LCA5NywgMjMyLCA2MSwgMSwgCisgICAgMTU2LCAyMzIsIDYxLCAxLCAxOTMsIDIzMiwgNjEsIDEsIDIzMCwgMjYsIDIzMiwgNjEsIDEsIDIzMCwgMTY3LCAyMzIsIDYxLCAKKyAgICAxLCAyMjgsIDExMiwgMjMyLCA2MSwgMSwgNzAsIDIzMiwgNjEsIDEsIDIyNiwgMTA2LCAyMzIsIDYxLCAxLCAyMzQsIDQ4LCAKKyAgICAyMzIsIDYxLCAxLCAxNTMsIDIzMiwgNjEsIDEsIDIyMiwgOTIsIDIzMiwgNjEsIDEsIDIxNywgMTUzLCAyMzIsIDYxLCAxLCAKKyAgICAyMTUsIDE2MCwgMjMyLCA2MSwgMSwgMjU0LCAxMjQsIDIzMiwgNjEsIDEsIDI0NSwgMTUxLCAyMzIsIDYxLCAxLCAyNDIsIAorICAgIDYxLCAyMzIsIDYxLCAxLCAyMTEsIDE3OCwgMjUwLCAyMzgsIDEsIDYxLCAyNTAsIDIzOCwgMSwgMjI2LCA5MiwgMjUwLCAKKyAgICAyMzgsIDEsIDI0OSwgNjEsIDI1MCwgMjM4LCAxLCAxNTYsIDI1MCwgMjM4LCAxLCAyMTQsIDExNiwgMjUwLCAyMzgsIDEsIAorICAgIDE1MywgMjUwLCAyMzgsIDEsIDIzMywgNjMsIDI1MCwgMjM4LCAxLCAyNTUsIDc2LCAyNTAsIDIzOCwgMSwgMjI0LCA5NywgCisgICAgMjUwLCAyMzgsIDEsIDI1MywgMTU5LCAyNTAsIDIzOCwgMSwgMTkzLCAyNTAsIDIzOCwgMSwgNzYsIDI1MCwgMjM4LCAxLCAKKyAgICAyNDgsIDIyNCwgMjUwLCAyMzgsIDEsIDIxNywgMTUzLCAyNTAsIDIzOCwgMSwgMjIwLCAxMDUsIDI1MCwgMjM4LCAxLCAyMjAsIAorICAgIDEwNCwgMjUwLCAyMzgsIDEsIDIyMiwgOTIsIDI1MCwgMjM4LCAxLCAyNTEsIDY2LCAyNTAsIDIzOCwgMSwgNzAsIDI1MCwgCisgICAgMjM4LCAxLCAyMjgsIDExMiwgMjUwLCAyMzgsIDEsIDIxMSwgMTc4LCAyNTAsIDIzOCwgMSwgMjMwLCAyNiwgMjUwLCAyMzgsIAorICAgIDEsIDIxNSwgMTU5LCAyNTAsIDIzOCwgMSwgMjI2LCAxMDYsIDI1MCwgMjM4LCAxLCAyMTgsIDIyNywgMjUwLCAyMzgsIDEsIAorICAgIDczLCAyNTAsIDIzOCwgMSwgNzUsIDI1MCwgMjM4LCAxLCAyMTQsIDExMywgMjUwLCAyMzgsIDEsIDIzNSwgMjQsIDI1MCwgCisgICAgMjM4LCAxLCAyMzUsIDE1LCAyNTAsIDIzOCwgMSwgMjI5LCAxNTEsIDI1MCwgMjM4LCAxLCAyMTQsIDExOCwgMjUwLCAyMzgsIAorICAgIDEsIDI0MywgMjAzLCAyNTAsIDIzOCwgMSwgMjQzLCAxMzgsIDI1MCwgMjM4LCAxLCAyMTgsIDE2OSwgMjUwLCAyMzgsIDEsIAorICAgIDIxOCwgMTY4LCAyNTAsIDIzOCwgMSwgMjI5LCA4MCwgMjUwLCAyMzgsIDEsIDIzNiwgMzQsIDI1MCwgMjM4LCAxLCAyNTEsIAorICAgIDY1LCAyNTAsIDIzOCwgMSwgMjE1LCAxNjAsIDI1MCwgMjM4LCAxLCAyMTQsIDExNSwgMjUwLCAyMzgsIDEsIDIyMiwgMTgxLCAKKyAgICAyNTAsIDIzOCwgMSwgMjMxLCAxMzAsIDI1MCwgMjM4LCAxLCAyMzEsIDEyOSwgMjUwLCAyMzgsIDEsIDIzMSwgMTI4LCAyNTAsIAorICAgIDIzOCwgMSwgMjMxLCAxMjcsIDI1MCwgMjM4LCAxLCAyMzMsIDYyLCAyNTAsIDIzOCwgMSwgMjQ1LCAyMzUsIDI1MCwgMjM4LCAKKyAgICAxLCAyMTQsIDExNCwgNTUsIDMyLCAxLCA2MSwgNTUsIDMyLCAxLCAyNTIsIDc2LCA1NSwgMzIsIDEsIDIzNCwgMTgzLCA1NSwgCisgICAgMzIsIDEsIDI0OCwgOTEsIDU1LCAzMiwgMSwgNzUsIDU1LCAzMiwgMSwgMjEzLCAyNTUsIDU1LCAzMiwgMSwgMjEwLCA5NCwgCisgICAgNTUsIDMyLCAxLCAyNDEsIDIzOSwgNTUsIDMyLCAxLCAyMTYsIDE5NiwgNTUsIDMyLCAxLCA3MywgNTUsIDMyLCAxLCAxNzYsIAorICAgIDU1LCAzMiwgMSwgMjQ1LCAxNzUsIDU1LCAzMiwgMSwgMjQ1LCAxNjAsIDU1LCAzMiwgMSwgMjQ1LCAxNTEsIDU1LCAzMiwgMSwgCisgICAgMjQ1LCA3NiwgNTUsIDMyLCAxLCA3NiwgNTUsIDMyLCAxLCAyMjUsIDIyMiwgNTUsIDMyLCAxLCAyMjAsIDY0LCA1NSwgMzIsIAorICAgIDEsIDIzMywgMjE4LCA1NSwgMzIsIDEsIDI0NSwgOTMsIDU1LCAzMiwgMSwgMjQ1LCA4MywgNTUsIDMyLCAxLCAyMTcsIDIzLCAKKyAgICA1NSwgMzIsIDEsIDcwLCA1NSwgMzIsIDEsIDI0NSwgMTc4LCA1NSwgMzIsIDEsIDIyNSwgMTM3LCA1NSwgMzIsIDEsIDIzNCwgCisgICAgMTIwLCA1NSwgMzIsIDEsIDI0NSwgMjAzLCA1NSwgMzIsIDEsIDI0NSwgODUsIDU1LCAzMiwgMSwgMjUwLCAxMzIsIDU1LCAKKyAgICAzMiwgMSwgMjM2LCAzNCwgNTUsIDMyLCAxLCAyMTQsIDExOCwgNTUsIDMyLCAyMjcsIDE5OSwgMTEwLCA1NSwgMzIsIDIyNywgCisgICAgMTk5LCAxODksIDU1LCAzMiwgMjI3LCAxOTksIDIxNiwgMjQ4LCA1NSwgMzIsIDIyNywgMTk5LCAyNDQsIDExNSwgMjQyLCAKKyAgICAxNTQsIDEsIDI1NCwgMjA1LCAyNDIsIDE1NCwgMSwgMjUyLCAxNjQsIDI0MiwgMTU0LCAxLCAyNDIsIDIxMiwgMjQyLCAxNTQsIAorICAgIDEsIDI0OCwgMjA1LCAyNDIsIDE1NCwgMSwgMjU0LCAyMDEsIDI0MiwgMTU0LCAxLCAyMjQsIDgwLCAyNDIsIDE1NCwgMSwgCisgICAgMjM1LCAxNTYsIDI0MiwgMTU0LCAxLCAyNDIsIDQwLCAyNDIsIDE1NCwgMSwgMjE2LCAxNTksIDI0MiwgMTU0LCAxLCAyNDUsIAorICAgIDE4NCwgMjQyLCAxNTQsIDEsIDIzMywgMTkxLCAyNDIsIDE1NCwgMSwgMjMzLCAxMTQsIDI0MiwgMTU0LCAxLCAyMzEsIDE4MCwgCisgICAgMjQyLCAxNTQsIDEsIDIyOSwgMTg1LCAyNDIsIDE1NCwgMSwgMjM1LCAxMjAsIDI0MiwgMTU0LCAxLCAyMTQsIDEzNiwgMjQyLCAKKyAgICAxNTQsIDEsIDIyNiwgNzAsIDI0MiwgMTU0LCAxLCAyMjgsIDE5NiwgMjQyLCAxNTQsIDEsIDIyMywgMTY2LCAyNDIsIDE1NCwgCisgICAgMSwgMjIxLCAyMTksIDI0MiwgMTU0LCAxLCAyMTcsIDUsIDI0MiwgMTU0LCAxLCAyMTEsIDIzNCwgMjQyLCAxNTQsIDEsIAorICAgIDI0NCwgMTc5LCAyNDIsIDE1NCwgMSwgMjM2LCAzOCwgMjQyLCAxNTQsIDEsIDI0MCwgMjAwLCAyNDIsIDE1NCwgMSwgMjI2LCAKKyAgICAxNDAsIDI0MiwgMTU0LCAxLCAyMjgsIDIwMSwgMjQwLCAyMTEsIDIxNCwgMjA5LCAxLCAyNTQsIDE0OCwgMjE0LCAyMDksIDEsIAorICAgIDI1MiwgMjcsIDIxNCwgMjA5LCAxLCAyNDMsIDEwOSwgMjE0LCAyMDksIDEsIDIzNCwgMTMzLCAyMTQsIDIwOSwgMSwgMjQ4LCAKKyAgICA1NSwgMjE0LCAyMDksIDEsIDI0MSwgNjksIDIxNCwgMjA5LCAxLCAyMTEsIDIyNywgMjE0LCAyMDksIDEsIDIxMCwgODUsIAorICAgIDIxNCwgMjA5LCAxLCAyNDAsIDI0MiwgMjE0LCAyMDksIDEsIDIxNiwgMjMxLCAyMTQsIDIwOSwgMSwgMjEwLCAyMzMsIDIxNCwgCisgICAgMjA5LCAxLCAyMzQsIDI1MSwgMjE0LCAyMDksIDEsIDIyMCwgMjEsIDIxNCwgMjA5LCAxLCAyMzMsIDk5LCAyMTQsIDIwOSwgCisgICAgMSwgMjMxLCA2NiwgMjE0LCAyMDksIDEsIDI0OCwgMjIsIDIxNCwgMjA5LCAxLCAyMjcsIDE5NSwgMjE0LCAyMDksIDEsIAorICAgIDIxMCwgMTMsIDIxNCwgMjA5LCAxLCAyMjEsIDI0OSwgMjE0LCAyMDksIDEsIDI1NCwgMTk3LCAyMTQsIDIwOSwgMSwgMjI0LCAKKyAgICAxNTEsIDIxNCwgMjA5LCAxLCAyMjIsIDI2LCAyMTQsIDIwOSwgMSwgMjI0LCAzNiwgMjE0LCAyMDksIDEsIDIyMywgMTQ1LCAKKyAgICAyMTQsIDIwOSwgMSwgMjE2LCAyMDAsIDIxNCwgMjA5LCAxLCAyNDIsIDI0NSwgMjE0LCAyMDksIDEsIDExMSwgMjE0LCAyMDksIAorICAgIDEsIDczLCAyMTQsIDIwOSwgMSwgNzAsIDIxNCwgMjA5LCAxLCAyMTgsIDE4MCwgMjE0LCAyMDksIDIxMSwgMjA5LCAyNDcsIAorICAgIDE3MywgNTUsIDIyNSwgMTcwLCA1LCA2MSwgNTUsIDIyNSwgMTcwLCA1LCA3MywgNTUsIDIyNSwgMTcwLCA1LCA3MCwgNTUsIAorICAgIDIyNSwgMTcwLCA1LCAxNzYsIDU1LCAyMjUsIDE3MCwgNSwgMjMzLCAyMTgsIDU1LCAyMjUsIDE3MCwgNSwgMjQzLCAxMzYsIAorICAgIDU1LCAyMjUsIDE3MCwgNSwgMjQyLCAxMTQsIDU1LCAyMjUsIDE3MCwgNSwgMjExLCAxNjUsIDU1LCAyMjUsIDE3MCwgNSwgCisgICAgMjUxLCAzNCwgNTUsIDIyNSwgMTcwLCA1LCAyMzUsIDE0MiwgNTUsIDIyNSwgMTcwLCA1LCAyMzUsIDEwOSwgNTUsIDIyNSwgCisgICAgMTcwLCA1LCAyMTcsIDEwNiwgNTUsIDIyNSwgMTcwLCA1LCAyMTUsIDExOSwgNTUsIDIyNSwgMTcwLCA1LCAyNDgsIDIyMiwgCisgICAgNTUsIDIyNSwgMTcwLCA1LCAyNDgsIDQsIDU1LCAyMjUsIDE3MCwgNSwgMjQ2LCA3OSwgNTUsIDIyNSwgMTcwLCA1LCAyMTYsIAorICAgIDIwOSwgNTUsIDIyNSwgMTcwLCA1LCAxOTAsIDU1LCAyMjUsIDE3MCwgNSwgMjUyLCAxOTIsIDU1LCAyMjUsIDE3MCwgNSwgCisgICAgMjQ0LCAxOTcsIDU1LCAyMjUsIDE3MCwgNSwgMTk3LCA1NSwgMjI1LCAxNzAsIDUsIDIyNywgMjM4LCA1NSwgMjI1LCAxNzAsIAorICAgIDUsIDE4NSwgNTUsIDIyNSwgMTcwLCA1LCAyMzAsIDIzMSwgNTUsIDIyNSwgMTcwLCA1LCAyMzAsIDEwMywgNTUsIDIyNSwgCisgICAgMTcwLCA1LCAxOTEsIDU1LCAyMjUsIDE3MCwgNSwgMjE0LCAyNywgNTUsIDIyNSwgMTcwLCA1LCAyMTMsIDE3NiwgNTUsIAorICAgIDIyNSwgMTcwLCA1LCAyMDUsIDU1LCAyMjUsIDE3MCwgNSwgMjIyLCAxNDEsIDU1LCAyMjUsIDE3MCwgNSwgMjMzLCAxMzYsIAorICAgIDU1LCAyMjUsIDE3MCwgNSwgMjA2LCA1NSwgMjI1LCAxNzAsIDUsIDIxMCwgMTE2LCA1NSwgMjI1LCAxNzAsIDUsIDIyMCwgCisgICAgMTAzLCA1NSwgMjI1LCAxNzAsIDUsIDIxOCwgMjI0LCA1NSwgMjI1LCAxNzAsIDUsIDE2MiwgNTUsIDIyNSwgMTcwLCA1LCAKKyAgICAyNTMsIDE4NywgNTUsIDIyNSwgMTcwLCA1LCAyNTMsIDE4NiwgNTUsIDIyNSwgMTcwLCA1LCAyNTMsIDE4NSwgNTUsIDIyNSwgCisgICAgMTcwLCA1LCAyMTEsIDE0MiwgNTUsIDIyNSwgMTcwLCA1LCAyNDgsIDIwMSwgNTUsIDIyNSwgMTcwLCA1LCAyNDgsIDIwMCwgCisgICAgNTUsIDIyNSwgMTcwLCA1LCAyNTIsIDE3MSwgNTUsIDIyNSwgMTcwLCA1LCAyNTEsIDg2LCA1NSwgMjI1LCAxNzAsIDIxMSwgCisgICAgMjA5LCAyNDcsIDE3MywgNTUsIDIyNSwgMTcwLCA1NCwgMTEwLCA1NSwgMjI1LCAxNzAsIDU0LCAxMDUsIDU1LCAyMjUsIAorICAgIDE3MCwgNTQsIDIxNiwgMjQ4LCA1NSwgMjI1LCAxNzAsIDU0LCAyMTUsIDczLCA1NSwgMjI1LCAxNzAsIDU0LCAyNDAsIDIxMSwgCiAgICAgMTgxLCA2LCAxLCAxOTksIDczLCAxODEsIDYsIDEsIDE5OSwgNzUsIDE4MSwgNiwgMSwgMTk5LCA2MSwgMTgxLCA2LCAxLCAKLSAgICAxOTksIDI1NCwgMjA5LCAxODEsIDYsIDEsIDE5OSwgNzYsIDE4MSwgNiwgMSwgMTk5LCAyMjYsIDE4MywgMTgxLCA2LCAxLCAKLSAgICAyMTksIDI1MSwgNzMsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDc1LCAxODEsIDYsIDEsIDIxOSwgMjUxLCA2MSwgMTgxLCA2LCAKLSAgICAxLCAyMTksIDI1MSwgMjU0LCAyMDksIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDc2LCAxODEsIDYsIDEsIDIxOSwgMjUxLCAyMjYsIAotICAgIDE4MywgMTgxLCA2LCAxLCAyNTMsIDE2NywgMTgxLCA2LCAxLCAyMjYsIDExNiwgMTgxLCA2LCAxLCAyMTEsIDE5NSwgMTgxLCAKLSAgICA2LCAxLCAyMTEsIDQ0LCAxODEsIDYsIDEsIDI0MiwgNjAsIDE4MSwgNiwgMSwgMjI1LCAyMTEsIDE4MSwgNiwgMSwgMjUyLCAKLSAgICA2NiwgMTgxLCA2LCAxLCAyMTcsIDExLCAxODEsIDYsIDEsIDI0OCwgNzcsIDE4MSwgNiwgMSwgMjUwLCAxMjgsIDE4MSwgNiwgCi0gICAgMSwgMjM1LCAxMjQsIDE4MSwgNiwgMSwgMjM0LCAxODksIDE4MSwgNiwgMSwgMjQzLCA4MywgMTgxLCA2LCAxLCAyNDUsIAotICAgIDIwMiwgMTgxLCA2LCAxLCAyMTMsIDI1MCwgMTgxLCA2LCAxLCAyNDUsIDU5LCAxODEsIDYsIDEsIDIxNiwgMTk0LCAxODEsIAotICAgIDYsIDEsIDI0NSwgODIsIDE4MSwgNiwgMSwgMjEwLCA5MiwgMTgxLCA2LCAxLCAyNDUsIDc1LCAxODEsIDYsIDEsIDIxMCwgCi0gICAgNzMsIDE4MSwgNiwgMSwgMjQ1LCA5MiwgMTgxLCA2LCAxLCAyNDUsIDE3NCwgMTgxLCA2LCAxLCAyNDUsIDE1OSwgMTgxLCA2LCAKLSAgICAxLCAyNDUsIDE1MCwgMTgxLCA2LCAxLCAyNDUsIDEzOCwgMTgxLCA2LCAxLCAyMjYsIDIxOSwgMTgxLCA2LCAxLCAyNDUsIAotICAgIDM4LCAxODEsIDQsIDEsIDE5OSwgNzMsIDE4MSwgNCwgMSwgMTk5LCA3NSwgMTgxLCA0LCAxLCAxOTksIDYxLCAxODEsIDQsIAotICAgIDEsIDE5OSwgMjU0LCAyMDksIDE4MSwgNCwgMSwgMTk5LCA3NiwgMTgxLCA0LCAxLCAxOTksIDIyNiwgMTgzLCAxODEsIDQsIAotICAgIDEsIDIxOSwgMjUxLCA3MywgMTgxLCA0LCAxLCAyMTksIDI1MSwgNzUsIDE4MSwgNCwgMSwgMjE5LCAyNTEsIDYxLCAxODEsIAotICAgIDQsIDEsIDIxOSwgMjUxLCAyNTQsIDIwOSwgMTgxLCA0LCAxLCAyMTksIDI1MSwgNzYsIDE4MSwgNCwgMSwgMjE5LCAyNTEsIAotICAgIDIyNiwgMTgzLCAxODEsIDQsIDEsIDI1MywgMTY3LCAxODEsIDQsIDEsIDIyNiwgMTE2LCAxODEsIDQsIDEsIDIxMSwgMTk1LCAKLSAgICAxODEsIDQsIDEsIDIxMSwgNDQsIDE4MSwgNCwgMSwgMjQyLCA2MCwgMTgxLCA0LCAxLCAyMjUsIDIxMSwgMTgxLCA0LCAxLCAKLSAgICAyNTIsIDY2LCAxODEsIDQsIDEsIDIxNywgMTEsIDE4MSwgNCwgMSwgMjQ4LCA3NywgMTgxLCA0LCAxLCAyNTAsIDEyOCwgCi0gICAgMTgxLCA0LCAxLCAyMzUsIDEyNCwgMTgxLCA0LCAxLCAyMzQsIDE4OSwgMTgxLCA0LCAxLCAyNDMsIDgzLCAxODEsIDQsIDEsIAotICAgIDI0NSwgMjAyLCAxODEsIDQsIDEsIDIxMywgMjUwLCAxODEsIDQsIDEsIDI0NSwgNTksIDE4MSwgNCwgMSwgMjE2LCAxOTQsIAotICAgIDE4MSwgNCwgMSwgMjQ1LCA4MiwgMTgxLCA0LCAxLCAyMTAsIDkyLCAxODEsIDQsIDEsIDI0NSwgNzUsIDE4MSwgNCwgMSwgCi0gICAgMjEwLCA3MywgMTgxLCA0LCAxLCAyNDUsIDkyLCAxODEsIDQsIDEsIDI0NSwgMTc0LCAxODEsIDQsIDEsIDI0NSwgMTU5LCAKLSAgICAxODEsIDQsIDEsIDI0NSwgMTUwLCAxODEsIDQsIDEsIDI0NSwgMTM4LCAxODEsIDQsIDEsIDIyNiwgMjE5LCAxODEsIDQsIDEsIAotICAgIDI0NSwgMzgsIDIyMCwgNjksIDEsIDIyNSwgMjA5LCAyMjAsIDY5LCAxLCAyMTYsIDUsIDIyMCwgNjksIDEsIDIzNCwgOTEsIAotICAgIDIyMCwgNjksIDEsIDI0NCwgMTQ3LCAyMjAsIDY5LCAxLCAyMTYsIDE3MiwgMjIwLCA2OSwgMSwgMjE5LCA1OCwgMjIwLCA2OSwgCi0gICAgMSwgMjE4LCAxNCwgMjIwLCA2OSwgMSwgMjUwLCA2MSwgMjIwLCA2OSwgMSwgMjExLCA0NiwgMjIwLCA2OSwgMSwgMjQwLCAKLSAgICAyMDksIDIyMCwgNjksIDEsIDI1MiwgNSwgMjIwLCA2OSwgMSwgMjQ4LCA4OSwgMjIwLCA2OSwgMSwgMjQzLCAxMjEsIDIyMCwgCi0gICAgNjksIDEsIDIxMywgMTIzLCAyMjAsIDY5LCAxLCAyMTYsIDE3NiwgMjIwLCA2OSwgMSwgMjEwLCAyMSwgMjIwLCA2OSwgMSwgCi0gICAgMjMxLCA4OSwgMjIwLCA2OSwgMSwgMjM1LCA0OSwgMjIwLCA2OSwgMSwgMjExLCAyMjUsIDIyMCwgNjksIDEsIDI0MiwgNDgsIAotICAgIDIyMCwgNjksIDEsIDIzMiwgMTQyLCAyMjAsIDY5LCAxLCAyMzAsIDE4OSwgMjIwLCA2OSwgMSwgMjM2LCA0MCwgMjIwLCA2OSwgCi0gICAgMSwgMjQ1LCAyMDEsIDIyMCwgNjksIDEsIDI1MywgMjMxLCAyMjAsIDY5LCAxLCAyNTQsIDI0NywgMjIwLCA2OSwgMSwgMjI2LCAKLSAgICAxOTYsIDIyMCwgNjksIDEsIDIxMSwgMjEyLCAyMjAsIDY5LCAxLCAyMjYsIDEzMCwgMjIwLCA2OSwgMSwgMjU0LCAyMDksIAotICAgIDIyMCwgNjksIDEsIDIyMiwgMjA4LCAyMjAsIDY5LCAxLCAyMjcsIDE5NCwgMjIwLCA2OSwgMSwgMjQ1LCAyMTcsIDIyMCwgCi0gICAgNjksIDEsIDI1NCwgMjE0LCAyMjAsIDY5LCAxLCAyNDAsIDExMSwgMjIwLCA2OSwgMSwgMjE0LCAxNjMsIDIyMCwgNjksIDEsIAotICAgIDIyNiwgMjU0LCAyMjAsIDY5LCAxLCAyMjYsIDE3NiwgMjIwLCA2OSwgMSwgMjI2LCAyMTgsIDIyMCwgNjksIDEsIDI1MywgCi0gICAgMTcwLCAyMjAsIDY5LCAxLCAyNTQsIDE5LCAyMjAsIDY5LCAxLCAyMjYsIDE1OCwgMjIwLCA2OSwgMSwgMjU0LCAxOTIsIAotICAgIDIyMCwgNjksIDEsIDI0NSwgODYsIDIyMCwgNjksIDEsIDI1MywgMjUzLCAyMjAsIDY5LCAxLCAyNDUsIDIyNywgMjIwLCA2OSwgCi0gICAgMSwgMjQwLCAxMTgsIDIyMCwgNjksIDEsIDIxMSwgMTMsIDIyNiwgMTQxLCAxLCAyNTQsIDE3MCwgMjI2LCAxNDEsIDEsIAotICAgIDI1MiwgMTkxLCAyMjYsIDE0MSwgMSwgMjE3LCAxMDUsIDIyNiwgMTQxLCAxLCAyMzUsIDE0MSwgMjI2LCAxNDEsIDEsIDIxMSwgCi0gICAgMTY1LCAyMjYsIDE0MSwgMSwgMjM0LCAxMzIsIDIyNiwgMTQxLCAxLCAyNDgsIDc2LCAyMjYsIDE0MSwgMSwgMjA1LCAyMjYsIAotICAgIDE0MSwgMSwgMjA2LCAyMjYsIDE0MSwgMSwgMjIwLCAyNiwgMjI2LCAxNDEsIDEsIDI0OCwgMjUsIDIyNiwgMTQxLCAxLCAKLSAgICAyNTAsIDIxNSwgMjI2LCAxNDEsIDEsIDI0MywgMTM1LCAyMjYsIDE0MSwgMSwgMjQ0LCAxOTYsIDIyNiwgMTQxLCAxLCAyMjQsIAotICAgIDg2LCAyMjYsIDE0MSwgMSwgMjM1LCA5LCAyMjYsIDE0MSwgMSwgMjMzLCAxMzAsIDIyNiwgMTQxLCAxLCAyMzAsIDIwMCwgCi0gICAgMjI2LCAxNDEsIDEsIDIyNywgMTc4LCAyMjYsIDE0MSwgMSwgMjEyLCAzMCwgMjI2LCAxNDEsIDEsIDE2MiwgMjI2LCAxNDEsIAotICAgIDEsIDE5MSwgMjI2LCAxNDEsIDEsIDYxLCAyMjYsIDE0MSwgMSwgNzUsIDIyNiwgMTQxLCAxLCA3MywgMjI2LCAxNDEsIDEsIAotICAgIDc2LCAyMjYsIDE0MSwgMSwgNzAsIDIyNiwgMTQxLCAxLCAyNTUsIDczLCAyMjYsIDE0MSwgMSwgMjQ1LCAyMDksIDIyNiwgCi0gICAgMTQxLCAxLCAyMjYsIDE4MywgMjI2LCAxNDEsIDIxLCAyMTAsIDg2LCAyMjYsIDE0MSwgMjEsIDExMCwgMjI2LCAxNDEsIDIxLCAKLSAgICAxMDUsIDIyNiwgMTQxLCAyMSwgMTU4LCAyMjYsIDE0MSwgMjEsIDE2MSwgMjI2LCAxNDEsIDIxLCAxODksIDIyNiwgMTQxLCAKLSAgICAyMSwgMTk0LCAyMjYsIDE0MSwgMjEsIDE5OCwgMjI2LCAxNDEsIDIxLCAxOTUsIDIyNiwgMTQxLCAyMSwgMjAwLCAyNDksIAotICAgIDY3LCAzLCA2MSwgMjQ5LCA2NywgMywgNzUsIDI0OSwgNjcsIDMsIDczLCAyNDksIDY3LCAzLCA3NiwgMjQ5LCA2NywgMywgCi0gICAgNzAsIDI0OSwgNjcsIDMsIDIzNSwgMTQxLCAyNDksIDY3LCAzLCAyMzUsIDY4LCAyNDksIDY3LCAzLCAxNzYsIDI0OSwgNjcsIAotICAgIDMsIDIzNCwgMTgyLCAyNDksIDY3LCAzLCAyMzQsIDkyLCAyNDksIDY3LCAzLCAyMzQsIDI4LCAyNDksIDY3LCAzLCAyMzMsIAotICAgIDIxNywgMjQ5LCA2NywgMywgMjMzLCAxMzUsIDI0OSwgNjcsIDMsIDIzMywgNTgsIDI0OSwgNjcsIDMsIDIzMiwgMjQxLCAKLSAgICAyNDksIDY3LCAzLCAyMzIsIDE1NiwgMjQ5LCA2NywgMywgMjMyLCA5OCwgMjQ5LCA2NywgMywgMTg0LCAyNDksIDY3LCAzLCAKLSAgICAyMzEsIDkxLCAyNDksIDY3LCAzLCAyMzAsIDIzMCwgMjQ5LCA2NywgMywgMjMwLCAxNjEsIDI0OSwgNjcsIDMsIDIzMCwgCi0gICAgMTAyLCAyNDksIDY3LCAzLCAxOTcsIDI0OSwgNjcsIDMsIDIyOSwgMTA3LCAyNDksIDY3LCAzLCAyMjgsIDIzMywgMjQ5LCAKLSAgICA2NywgMywgMjI4LCA3NCwgMjQ5LCA2NywgMywgMjI3LCAyMzcsIDI0OSwgNjcsIDMsIDE5MCwgMjQ5LCA2NywgMywgMjI1LCAKLSAgICAyMjEsIDI0OSwgNjcsIDMsIDIyNSwgMTA4LCAyNDksIDY3LCAzLCAyMjUsIDE2LCAyNDksIDY3LCAzLCAyMjQsIDE1MCwgCi0gICAgMjQ5LCA2NywgMywgMjA1LCAyNDksIDY3LCAzLCAyMjMsIDEyOCwgMjQ5LCA2NywgMywgMjIzLCAzNSwgMjQ5LCA2NywgMywgCi0gICAgMjIyLCAyMTEsIDI0OSwgNjcsIDMsIDIyMiwgMTQwLCAyNDksIDY3LCAzLCAyMDYsIDI0OSwgNjcsIDMsIDIyMSwgMTgxLCAKLSAgICAyNDksIDY3LCAzLCAyMTksIDE5MSwgMjQ5LCA2NywgMywgMjE5LCA1OCwgMjQ5LCA2NywgMywgMjE4LCA4MywgMjQ5LCA2NywgCi0gICAgMywgMjE3LCAxMDUsIDI0OSwgNjcsIDMsIDIxNywgMjIsIDI0OSwgNjcsIDMsIDIxNiwgMTE3LCAyNDksIDY3LCAzLCAxMTEsIAotICAgIDI0OSwgNjcsIDMsIDIxNSwgMTE4LCAyNDksIDY3LCAzLCAyMTIsIDY1LCAyNDksIDY3LCAzLCAyMTIsIDIyLCAyNDksIDY3LCAKLSAgICAzLCAyMTEsIDI1MCwgMjQ5LCA2NywgMywgMjExLCAyMjcsIDI0OSwgNjcsIDMsIDIxMSwgMTY1LCAyNDksIDY3LCAzLCAyMTEsIAotICAgIDE2MiwgMjQ5LCA2NywgMywgMjEwLCAxMTYsIDI0OSwgNjcsIDMsIDIxMCwgMjMsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjU0LCAKLSAgICAxNjgsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjUyLCAyNSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDIsIDIwMSwgMjM2LCAxLCAKLSAgICAyNTQsIDI3LCAxLCAyNDgsIDE4OCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDEsIDIzOCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAKLSAgICAyMTIsIDMwLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIxMCwgOTcsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjQxLCAxOTUsIDIzNiwgCi0gICAgMSwgMjU0LCAyNywgMSwgMjE2LCAyMjYsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjEwLCAyMzIsIDIzNiwgMSwgMjU0LCAyNywgCi0gICAgMSwgMjM0LCAyMjUsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjMzLCA5MywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMzEsIDY1LCAKLSAgICAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyNywgMTk0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMSwgMjQ5LCAyMzYsIDEsIDI1NCwgCi0gICAgMjcsIDEsIDI1MywgMTYyLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyNSwgMjIxLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMiwgCi0gICAgMjQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI0LCAzNCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjMsIDY3LCAyMzYsIDEsIAotICAgIDI1NCwgMjcsIDEsIDIyMCwgMjAsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjE3LCAzNiwgMjM2LCAxLCAyNTQsIDI3LCAyMjEsIAotICAgIDE3MywgNTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDExMCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTA1LCAyMzYsIDEsIDI1NCwgCi0gICAgMjcsIDU0LCAxNTgsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNiwgMjQ3LCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAyMTUsIDczLCAKLSAgICAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMjMsIDIxNiwgMTQ3LCAKLSAgICAyMzYsIDEsIDI1NCwgMjcsIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDIyNSwgMTE5LCAxLCAyNTQsIDE2NSwgMjI1LCAxMTksIAotICAgIDEsIDI1MiwgMjgsIDIyNSwgMTE5LCAxLCAyNDMsIDEwOSwgMjI1LCAxMTksIDEsIDI0OCwgNTYsIDIyNSwgMTE5LCAxLCAKLSAgICAyNDEsIDIzOCwgMjI1LCAxMTksIDEsIDIxMiwgMzcsIDIyNSwgMTE5LCAxLCAyMTAsIDExMCwgMjI1LCAxMTksIDEsIDI0MSwgCi0gICAgMTk3LCAyMjUsIDExOSwgMSwgMjE2LCAyMzAsIDIyNSwgMTE5LCAxLCAyMTAsIDIzMywgMjI1LCAxMTksIDEsIDIzNCwgMjUwLCAKLSAgICAyMjUsIDExOSwgMSwgMjMzLCA5OSwgMjI1LCAxMTksIDEsIDIzMSwgNjUsIDIyNSwgMTE5LCAxLCAyMjcsIDE5NCwgMjI1LCAKLSAgICAxMTksIDEsIDIyMCwgMTQ0LCAyMjUsIDExOSwgMSwgMjU0LCAxOTYsIDIyNSwgMTE5LCAxLCAyMjUsIDIyMSwgMjI1LCAxMTksIAotICAgIDEsIDIyMiwgMjUsIDIyNSwgMTE5LCAxLCAyMjQsIDM5LCAyMjUsIDExOSwgMSwgMjIyLCAxODksIDIyNSwgMTE5LCAxLCAKLSAgICAyMjAsIDIwLCAyMjUsIDExOSwgMSwgMjE3LCA0MSwgMjI1LCAxMTksIDU0LCAxMTAsIDIyNSwgMTE5LCA1NCwgMjE2LCAyNDcsIAotICAgIDIyNSwgMTE5LCA1NCwgMjE1LCA3MywgMjI1LCAxMTksIDU0LCAxMjMsIDI0MCwgMjEwLCAyMjUsIDExOSwgNTQsIDEwNSwgCi0gICAgMjI1LCAxMTksIDU0LCAxNTgsIDIyNSwgMTE5LCAyMTEsIDIwOSwgMjIwLCAxMzcsIDIzMiwgNTksIDEsIDYxLCAyMzIsIDU5LCAKLSAgICAxLCAyNTMsIDE1OCwgMjMyLCA1OSwgMSwgMjQzLCAyMDIsIDIzMiwgNTksIDEsIDI0OSwgNjAsIDIzMiwgNTksIDEsIDc1LCAKLSAgICAyMzIsIDU5LCAxLCAyMTQsIDEwNSwgMjMyLCA1OSwgMSwgNzMsIDIzMiwgNTksIDEsIDIxMSwgMTE3LCAyMzIsIDU5LCAxLCAKLSAgICAyMzUsIDIzLCAyMzIsIDU5LCAxLCAxNTYsIDIzMiwgNTksIDEsIDE5MywgMjMyLCA1OSwgMSwgMjMwLCAyNSwgMjMyLCA1OSwgCi0gICAgMSwgNzYsIDIzMiwgNTksIDEsIDE1MywgMjMyLCA1OSwgMSwgMjE4LCAyMjYsIDIzMiwgNTksIDEsIDIxNywgMTUyLCAyMzIsIAotICAgIDU5LCAxLCA3MCwgMjMyLCA1OSwgMSwgMjQ1LCA2LCAyMzIsIDU5LCAxLCAyMjQsIDk2LCAyMzIsIDU5LCAxLCAyMjIsIDkxLCAKLSAgICAyMzIsIDU5LCAxLCAyMTUsIDE1OSwgMjMyLCA1OSwgMSwgMjU0LCAxMjMsIDIzMiwgNTksIDEsIDI0NSwgMTUwLCAyMzIsIAotICAgIDU5LCAxLCAyMzIsIDYyLCAyMzIsIDU5LCAxLCAyMjgsIDExMSwgMjMyLCA1OSwgMSwgMjUxLCA2NiwgMjMyLCA1OSwgMjE1LCAKLSAgICAyMjIsIDc4LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgNjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA3NSwgMjMxLCA0OCwgCi0gICAgMjQxLCAxNzQsIDEsIDczLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgNzYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxOTEsIAotICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTIsIDY1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjUyLCAxOTEsIDIzMSwgNDgsIAotICAgIDI0MSwgMTc0LCAxLCAyNTIsIDE5MCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5MCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIAotICAgIDE4NCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5NywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyOSwgMjI4LCAyMzEsIDQ4LCAKLSAgICAyNDEsIDE3NCwgMSwgMjI5LCAxMDcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjksIDEwNiwgMjMxLCA0OCwgMjQxLCAxNzQsIAotICAgIDEsIDIwNSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyMywgMTg3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjMzLCAxMzUsIAotICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMzQsIDEzMiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDI0MSwgMTg5LCAyMzEsIDQ4LCAKLSAgICAyNDEsIDE3NCwgMSwgMjA2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjIyLCAzMywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIAotICAgIDIyMSwgMTgxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTc2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI0LCA4OCwgMjMxLCAKLSAgICA0OCwgMjQxLCAxNzQsIDEsIDIxNywgMTA1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAxMDQsIDIzMSwgNDgsIDI0MSwgCi0gICAgMTc0LCAxLCAyMTcsIDIyLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAyMSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIAotICAgIDExMSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDI0OCwgMjIxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMTYsIDIxMywgMTcwLCAKLSAgICAyMzEsIDQ4LCAyNDEsIDE3NCwgMTYsIDIxMywgMTY5LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCA2MSwgMjMxLCA0OCwgMjQ5LCAKLSAgICA5NCwgMSwgNzUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDczLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCA3NiwgMjMxLCA0OCwgCi0gICAgMjQ5LCA5NCwgMSwgMTkxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMTIsIDY1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyNTIsIAotICAgIDE5MSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTkwLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxODQsIDIzMSwgNDgsIDI0OSwgCi0gICAgOTQsIDEsIDE5NywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjI5LCAxMDcsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIwNSwgMjMxLCAKLSAgICA0OCwgMjQ5LCA5NCwgMSwgMjMzLCAxMzUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIzNCwgMTMyLCAyMzEsIDQ4LCAyNDksIAotICAgIDk0LCAxLCAyNDEsIDE4OSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjA2LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyNTQsIDIzLCAKLSAgICAyMDYsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIyMSwgMTgxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxNzYsIDIzMSwgNDgsIAotICAgIDI0OSwgOTQsIDEsIDIyNCwgODgsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIxNywgMTA1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAKLSAgICAyMTcsIDIyLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxMTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI0OCwgMjIxLCAyMzEsIAotICAgIDQ4LCAyNDksIDk0LCAyMzIsIDE0NSwgMjIyLCAyMTcsIDIzMSwgNDgsIDI0OSwgOTQsIDIzMiwgMTQ1LCAyMzYsIDYsIDIzNCwgCi0gICAgMTIwLCAxLCA2MSwgMjM0LCAxMjAsIDI1LCA1LCA3MywgMjM0LCAxMjAsIDI1LCA1LCA3MCwgMjM0LCAxMjAsIDI1LCA1LCAKLSAgICAxNDksIDE1MywgMjM0LCAxMjAsIDI1LCA1LCA3NSwgMjM0LCAxMjAsIDI1LCA1LCA3NiwgMjM0LCAxMjAsIDI1LCAyMzMsIAotICAgIDIzLCA3OCwgMjM0LCAxMjAsIDUsIDUyLCAyMjIsIDIzNCwgNTEsIDIzNCwgMTIwLCA1LCAyNTQsIDc1LCAyMzQsIDEyMCwgNSwgCi0gICAgMjEzLCAxNDcsIDIzNCwgMTIwLCAxLCAxNzYsIDIzNCwgMTIwLCAxLCAyMzQsIDEzMiwgMjM0LCAxMjAsIDEsIDI0MywgMTM1LCAKLSAgICAyMzQsIDEyMCwgMSwgMjQyLCAyNDksIDIzNCwgMTIwLCAxLCAyNTEsIDMzLCAyMzQsIDEyMCwgMSwgMjUwLCAxNTcsIDIzNCwgCi0gICAgMTIwLCAxLCAyMzUsIDE0MSwgMjM0LCAxMjAsIDEsIDIyNywgMTY1LCAyMzQsIDEyMCwgMSwgMjE1LCAxNTYsIDIzNCwgMTIwLCAKLSAgICAxLCAyMTUsIDE0NCwgMjM0LCAxMjAsIDEsIDI0OCwgMTM1LCAyMzQsIDEyMCwgMSwgMjQ4LCAxMTksIDIzNCwgMTIwLCAxLCAKLSAgICAyMjgsIDExMCwgMjM0LCAxMjAsIDEsIDIxNywgMTA1LCAyMzQsIDEyMCwgMSwgMjE2LCAyMDgsIDIzNCwgMTIwLCAxLCAyNDgsIAotICAgIDIyMSwgMjM0LCAxMjAsIDEsIDI0OCwgMjUsIDIzNCwgMTIwLCAxLCAxOTcsIDIzNCwgMTIwLCAxLCAxOTAsIDIzNCwgMTIwLCAKLSAgICAxLCAyMjUsIDE0NywgMjM0LCAxMjAsIDEsIDI1MiwgMTkxLCAyMzQsIDEyMCwgMSwgMjUyLCAxOCwgMjM0LCAxMjAsIDEsIAotICAgIDE4NCwgMjM0LCAxMjAsIDEsIDE5MSwgMjM0LCAxMjAsIDEsIDIwNSwgMjM0LCAxMjAsIDEsIDIzMywgMTM1LCAyMzQsIDEyMCwgCi0gICAgMSwgMjE0LCAyNywgMjM0LCAxMjAsIDEsIDIyMCwgMTAyLCAyMzQsIDEyMCwgMSwgMjE4LCAyMjMsIDIzNCwgMTIwLCAxLCAKLSAgICAyMDYsIDIzNCwgMTIwLCAxLCAyMTAsIDExNiwgMjM0LCAxMjAsIDEsIDE2MiwgMjM0LCAxMjAsIDEsIDIzNCwgNDYsIDIzNCwgCi0gICAgMTIwLCAxLCAyMTUsIDEyNCwgMjM0LCAxMjAsIDUsIDI1MiwgMTQxLCA0OCwgMjM0LCAxMjAsIDUsIDI1MCwgMjIxLCAyMzQsIAotICAgIDEyMCwgNSwgNTksIDUxLCAyMzQsIDEyMCwgMjEzLCAxNTIsIDIzNCwgMTIwLCAyMSwgMTEwLCAyMzQsIDEyMCwgMjEsIDEwNSwgCi0gICAgMjM0LCAxMjAsIDIxLCAxNTgsIDIzNCwgMTIwLCAyMSwgMTYxLCAyMzQsIDEyMCwgNTQsIDIxNiwgMjQ3LCAyMzQsIDEyMCwgCi0gICAgNTQsIDIxNSwgNzMsIDIzNCwgMTIwLCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM0LCAxMjAsIDU0LCAxMjMsIDIxNiwgMTQ3LCAKLSAgICAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0NywgMTIwLCAyMzQsIDEyMCwgMjI0LCAxNDEsIDQsIDI1MCwgMzUsIDIzNCwgMTIwLCAKLSAgICAyMjQsIDE0MSwgMjUwLCAzNSwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyNDksIDEzNywgMTMwLCAyMzQsIDEyMCwgMjI0LCAxNDEsIAotICAgIDIzMSwgMTgwLCAyMzQsIDEyMCwgMjI0LCAxNDEsIDIzMiwgMTE1LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0OCwgMTc4LCAKLSAgICAyMzQsIDEyMCwgMjI0LCAxNDEsIDUyLCAyNDgsIDE3OCwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyMzIsIDIwNywgNTUsIDIxOSwgCi0gICAgMjgsIDI1NCwgMzgsIDEsIDI0MSwgMjM4LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjMzLCA5MywgNTUsIDIxOSwgMjgsIAotICAgIDI1NCwgMzgsIDEsIDI0MSwgMTk1LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjMxLCA2NSwgNTUsIDIxOSwgMjgsIDI1NCwgCi0gICAgMzgsIDEsIDIyNCwgMzQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTIsIDMwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgCi0gICAgMSwgMjIwLCAyMCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMywgNjcsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAKLSAgICAyNTIsIDI1LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjE3LCAzNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMSwgCi0gICAgMjI2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjM0LCAyMjUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjcsIAotICAgIDE5NCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzNCwgMTE2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIyLCAyNCwgCi0gICAgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMSwgMjQ5LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQ0LCAxNTQsIDU1LCAKLSAgICAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNTQsIDE3MCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI1MywgMTYxLCA1NSwgCi0gICAgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQ4LCAyMiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0MiwgMjAxLCA1NSwgMjE5LCAKLSAgICAyOCwgMjU0LCAzOCwgMSwgMjQ4LCAxODgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDIsIDIzOCwgNTUsIDIxOSwgMjgsIAotICAgIDI1NCwgMzgsIDEsIDIxNiwgMjI2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjEwLCA5NiwgNTUsIDIxOSwgMjgsIDI1NCwgCi0gICAgMzgsIDEsIDI0OCwgMTksIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTAsIDIzMiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIAotICAgIDEsIDIxNiwgMTk3LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjE2LCAxNzgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCA1NCwgCi0gICAgMTEwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgNTQsIDI0NCwgMTE0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMTMyLCAyMzUsIAotICAgIDIzOCwgMjUzLCAxNzIsIDEsIDYxLCAyNTMsIDE3MiwgMSwgMjU1LCA3MywgMjUzLCAxNzIsIDEsIDI1NCwgNzMsIDI1MywgCi0gICAgMTcyLCAxLCAyNTUsIDMyLCAyNTMsIDE3MiwgMSwgMjU0LCAxMjMsIDI1MywgMTcyLCAxLCAyNTUsIDMzLCAyNTMsIDE3MiwgCi0gICAgMSwgMjU0LCAyNDMsIDI1MywgMTcyLCAxLCAyNTQsIDIzOSwgMjUzLCAxNzIsIDEsIDc1LCAyNTMsIDE3MiwgMSwgMjQ1LCAKLSAgICAyMDksIDI1MywgMTcyLCAxLCA3NiwgMjUzLCAxNzIsIDEsIDIyNiwgMTgzLCAyNTMsIDE3MiwgMSwgNzMsIDI1MywgMTcyLCAKLSAgICAxLCAyMzYsIDMzLCAyNTMsIDE3MiwgMSwgNzAsIDI1MywgMTcyLCAxLCAyMTQsIDExOCwgMjUzLCAxNzIsIDEsIDIzNCwgCi0gICAgMTgyLCAyNTMsIDE3MiwgMSwgMjExLCAxNjIsIDI1MywgMTcyLCAxLCAyMTEsIDEyOCwgMjUzLCAxNzIsIDEsIDIxMSwgMTM3LCAKLSAgICAyNTMsIDE3MiwgMSwgMjQzLCA2MiwgMjUzLCAxNzIsIDEsIDI0MywgMjQsIDI1MywgMTcyLCAxLCAyNDIsIDIzNiwgMjUzLCAKLSAgICAxNzIsIDEsIDI1MCwgMTkwLCAyNTMsIDE3MiwgMSwgMjM1LCAxMjYsIDI1MywgMTcyLCAxLCAyMTcsIDIyLCAyNTMsIDE3MiwgCi0gICAgMSwgMjE2LCAxOTUsIDI1MywgMTcyLCAxLCAyNDgsIDkwLCAyNTMsIDE3MiwgMSwgMjQ4LCAxNywgMjUzLCAxNzIsIDEsIAotICAgIDIxNSwgMTUxLCAyNTMsIDE3MiwgMSwgMjI1LCAyMjEsIDI1MywgMTcyLCAxLCAyNDQsIDE1NCwgMjUzLCAxNzIsIDEsIDI1MiwgCi0gICAgNzUsIDI1MywgMTcyLCAxLCAyNTIsIDE0LCAyNTMsIDE3MiwgMSwgMjI5LCA2NCwgMjUzLCAxNzIsIDEsIDIyOCwgMjM5LCAKLSAgICAyNTMsIDE3MiwgMSwgMjI4LCAyNDAsIDI1MywgMTcyLCAxLCAyMjksIDEwNywgMjUzLCAxNzIsIDEsIDIyNywgMTU2LCAyNTMsIAotICAgIDE3MiwgMSwgMjI4LCAxMDUsIDI1MywgMTcyLCAxLCAyMzEsIDkxLCAyNTMsIDE3MiwgMSwgMjQxLCAxMTYsIDI1MywgMTcyLCAKLSAgICAxLCAyMTAsIDE2NiwgMjUzLCAxNzIsIDEsIDIxMSwgNDcsIDI1MywgMTcyLCAxLCAyMTMsIDI1NSwgMjUzLCAxNzIsIDEsIAotICAgIDIyMywgMTI4LCAyNTMsIDE3MiwgMSwgMjMzLCA1OCwgMjUzLCAxNzIsIDEsIDIyMSwgMTgxLCAyNTMsIDE3MiwgMSwgMjEwLCAKLSAgICA5NCwgMjUzLCAxNzIsIDEsIDIyMCwgNjMsIDI1MywgMTcyLCAxLCAyMTAsIDc0LCAyNTMsIDE3MiwgMSwgMjE5LCAxOTgsIAotICAgIDI1MywgMTcyLCAxLCAyMTgsIDE5MywgMjUzLCAxNzIsIDEsIDI0MSwgMjM4LCAyNTMsIDE3MiwgMjU1LCAyMSwgNzgsIDIxNiwgCi0gICAgNzksIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCA0LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIAotICAgIDE0MCwgMjMzLCA4NSwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDIzMywgODUsIDEyMywgNTksIDExNywgCi0gICAgMTEzLCAxNzAsIDIyNCwgMTQwLCAyMzMsIDg1LCAxMTMsIDIyMiwgMjMyLCAxMTcsIDEyMywgMjIyLCAyMzQsIDIyNCwgMTQwLCAKLSAgICAyMzMsIDg1LCAxMjMsIDIyMiwgMjM0LCAxMTcsIDExMywgMjIyLCAyMzIsIDIyNCwgMTQwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIAotICAgIDEsIDI1NCwgMTY4LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI1MiwgMjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjQyLCAKLSAgICAyMDEsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjQ4LCAxODgsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjQxLCAyMzgsIAotICAgIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjEyLCAzMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTAsIDk3LCAyMzUsIDIxOCwgCi0gICAgMjI1LCAyNTQsIDEsIDI0MSwgMTk1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxNiwgMjI2LCAyMzUsIDIxOCwgMjI1LCAKLSAgICAyNTQsIDEsIDIxMCwgMjMyLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIzNCwgMjI1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIAotICAgIDIzMywgOTMsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjMxLCA2NSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjcsIDE5NCwgCi0gICAgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjEsIDI0OSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNTMsIDE2MiwgMjM1LCAKLSAgICAyMTgsIDIyNSwgMjU0LCAxLCAyMjUsIDIyMSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjIsIDI0LCAyMzUsIDIxOCwgCi0gICAgMjI1LCAyNTQsIDEsIDIyNCwgMzQsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjIzLCA2NywgMjM1LCAyMTgsIDIyNSwgMjU0LCAKLSAgICAxLCAyMjAsIDIwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxNywgMzYsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDExMCwgCi0gICAgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTA1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxNTgsIDIzNSwgMjE4LCAyMjUsIAotICAgIDI1NCwgNTQsIDE2MSwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMjE2LCAyNDcsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIAotICAgIDIxNSwgNzMsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDEyMywgMjQwLCAyMTAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIAotICAgIDEyMywgMjE2LCAxNDcsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNTQsIDE2OCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI1MiwgCi0gICAgMjUsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNDIsIDIwMSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0OCwgMTg4LCAyMzUsIAotICAgIDIxOCwgMjI2LCA3MiwgMSwgMjQxLCAyMzgsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMTIsIDI5LCAyMzUsIDIxOCwgMjI2LCAKLSAgICA3MiwgMSwgMjEwLCA5NywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0MSwgMTk1LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgCi0gICAgMjE2LCAyMjYsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMTAsIDIzMiwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIzNCwgMjI1LCAKLSAgICAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjMzLCA5MywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIzMSwgNjQsIDIzNSwgMjE4LCAKLSAgICAyMjYsIDcyLCAxLCAyMjcsIDE5NCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMSwgMjQ5LCAyMzUsIDIxOCwgMjI2LCA3MiwgCi0gICAgMSwgMjI1LCAyMjEsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjIsIDI0LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIwLCAKLSAgICAyMCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxNywgMzYsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTEwLCAyMzUsIDIxOCwgCi0gICAgMjI2LCA3MiwgNTQsIDEwNSwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxNTgsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTYxLCAKLSAgICAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDIxNiwgMjQ3LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDIxNSwgNzMsIDIzNSwgCi0gICAgMjE4LCAyMjYsIDcyLCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxMjMsIDIxNiwgMTQ3LCAKLSAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNjEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDYxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKLSAgICAyNTQsIDI0MywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDczLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCA3MywgNTUsIDIwMSwgMSwgCi0gICAgMjExLCAzNywgNzUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA3NiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMjM0LCAKLSAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzNCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NSwgMjUsIDU1LCAyMDEsIDEsIAotICAgIDIxMSwgMzcsIDI1NSwgMjUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDI0MiwgNTUsIDIwMSwgMSwgMjExLCAzNywgCi0gICAgMjU0LCAyNDIsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIxNiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMTYsIAotICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIzNywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzcsIDU1LCAyMDEsIAotICAgIDEsIDIyNiwgMTQ5LCAyNTQsIDI1NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyNTUsIDU1LCAyMDEsIDEsIDIyNiwgCi0gICAgMTQ5LCAyNTQsIDI0MSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgCi0gICAgMTIsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDE2NywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjUzLCAxNjcsIDU1LCAKLSAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIyNCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMjQsIDU1LCAyMDEsIDEsIAotICAgIDIyNiwgMTQ5LCAyNTQsIDIzNSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAKLSAgICAyMjYsIDIzMywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAyMzMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDE3OCwgCi0gICAgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAxNzgsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIzNCwgNTUsIDIwMSwgCi0gICAgMSwgMjI2LCAxNDksIDI0NSwgMTYxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxNTksIDU1LCAyMDEsIDEsIDIyNiwgCi0gICAgMTQ5LCAyNTQsIDEyMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjMyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIAotICAgIDIzMiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTMxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDEzMSwgNTUsIAotICAgIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTQ3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDE0NywgNTUsIDIwMSwgMSwgCi0gICAgMjI2LCAxNDksIDI0NSwgMTE4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDExOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgCi0gICAgMjU0LCAxMTUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEzOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzEsIAotICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEwOCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTc1LCA1NSwgMjAxLCAKLSAgICAxLCAyMjYsIDE0OSwgMjQwLCAxMTMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDIxNSwgNTUsIDIwMSwgMSwgMjExLCAKLSAgICAzNywgMjQ1LCAyMTUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDQ1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIAotICAgIDQ1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjM1LCAxODEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIzNSwgMTgxLCA1NSwgCi0gICAgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNTksIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMTU5LCA1NSwgMjAxLCAxLCAKLSAgICAyMjYsIDE0OSwgMjU0LCA0MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCA0MSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAotICAgIDI1NCwgMjMwLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAyMzcsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIyOCwgCi0gICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMjMxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDIzMSwgNTUsIDIwMSwgCi0gICAgMSwgMjI2LCAxNDksIDI0NSwgNzUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgNzUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAKLSAgICAyNTMsIDIwNiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjUzLCAyMDYsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIyNSwgCi0gICAgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMjUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE0MCwgNTUsIDIwMSwgCi0gICAgMSwgMjI2LCAxNDksIDI1MiwgMTI1LCAyMjIsIDEyNywgMjEsIDExMCwgMjIyLCAxMjcsIDIxLCAxMDUsIDIyMiwgMTI3LCAKLSAgICAyMSwgMTU4LCAyMjIsIDEyNywgMjEsIDE2MSwgMjIyLCAxMjcsIDIxLCAxODksIDIyMiwgMTI3LCAyMSwgMTk0LCAyMjIsIAotICAgIDEyNywgMjEsIDE5OCwgMjIyLCAxMjcsIDIxLCAxOTUsIDIyMiwgMTI3LCAyMSwgMjAwLCAyMjIsIDEyNywgNTQsIDIxNiwgCi0gICAgMjQ3LCAyMjIsIDEyNywgNTQsIDIxNSwgNzMsIDIyMiwgMTI3LCA1NCwgMjE2LCAxNjIsIDIyMiwgMTI3LCA1NCwgMjQ0LCAKLSAgICAxNSwgMjIyLCAxMjcsIDU0LCAyNDQsIDExNCwgMjIyLCAxMjcsIDU0LCAyMTksIDExMSwgMjIyLCAxMjcsIDU0LCAyMjAsIAotICAgIDExNiwgMjIyLCAxMjcsIDU0LCAyNDUsIDE4NCwgMjIyLCAxMjcsIDU0LCAyMjgsIDE5NSwgMjIyLCAxMjcsIDU0LCAxMjMsIAotICAgIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDExMywgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMTM0LCAyNDAsIDIxMCwgMjIyLCAKLSAgICAxMjcsIDU0LCAyNDQsIDExLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjIyLCAxMjcsIAotICAgIDU0LCAyMTksIDEyNSwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMjIwLCAxMjIsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIAotICAgIDI0NSwgMTkzLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyMjgsIDIwMCwgMjQwLCAyMTAsIDIyMiwgMTI3LCAyNDQsIDIsIAotICAgIDEyMywgMjQyLCAyNywgMjIyLCAxMjcsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAyMjIsIDEyNywgMjQ0LCAyLCAxMjMsIDIxNiwgCi0gICAgMTY4LCAyMjIsIDEyNywgMjQ0LCAyLCAxMTMsIDIxNiwgMTY2LCAxMTgsIDUsIDI1MCwgMjU1LCAxMTgsIDUsIDI1NCwgNzUsIAotICAgIDExOCwgNSwgMjEzLCAxNDcsIDExOCwgNSwgMjM1LCAxMDIsIDExOCwgNSwgMjE0LCAxNjEsIDExOCwgMSwgNjEsIDExOCwgMSwgCi0gICAgMjU1LCA3MywgMTE4LCAxLCA3MywgMTE4LCAxLCAyMzYsIDMzLCAxMTgsIDEsIDcwLCAxMTgsIDEsIDIxNCwgMTE4LCAxMTgsIAotICAgIDEsIDE0OSwgMTUzLCAxMTgsIDEsIDE0OSwgMjIyLCAxODAsIDExOCwgMSwgMTQ5LCAxNTYsIDExOCwgMSwgMTQ5LCAyMzIsIAotICAgIDE4NSwgMTE4LCAxLCA3NSwgMTE4LCAxLCAyNTQsIDIwMSwgMTE4LCAxLCA3NiwgMTE4LCAxLCAyNTMsIDE5MiwgMTE4LCAxLCAKLSAgICAxNzYsIDExOCwgMSwgMjM0LCAxMzIsIDExOCwgMSwgMjQzLCAxMzUsIDExOCwgMSwgMjQyLCAyNDksIDExOCwgMSwgMjI5LCAKLSAgICA3NywgMTE4LCAxLCAyNTEsIDMzLCAxMTgsIDEsIDI1MCwgMTU3LCAxMTgsIDEsIDIzNSwgMTQxLCAxMTgsIDEsIDIzNSwgCi0gICAgMTE0LCAxMTgsIDEsIDIyNywgMTY1LCAxMTgsIDEsIDIxNSwgMTU2LCAxMTgsIDEsIDIxNSwgMTQ0LCAxMTgsIDEsIDI0OCwgCi0gICAgMTM1LCAxMTgsIDEsIDI0OCwgMTE5LCAxMTgsIDEsIDIyOCwgMTEwLCAxMTgsIDEsIDIxNywgMTA1LCAxMTgsIDEsIDIxNiwgCi0gICAgMjA4LCAxMTgsIDEsIDI0OCwgMjIxLCAxMTgsIDEsIDI0OCwgMjUsIDExOCwgMSwgMTk3LCAxMTgsIDEsIDE5MCwgMTE4LCAxLCAKLSAgICAyMjUsIDE0NywgMTE4LCAxLCAyNTIsIDE5MSwgMTE4LCAxLCAyNTIsIDE4LCAxMTgsIDEsIDE4NCwgMTE4LCAxLCAxOTEsIAotICAgIDExOCwgMSwgMjA1LCAxMTgsIDEsIDIzMywgMTM1LCAxMTgsIDEsIDIxNCwgMjcsIDExOCwgMSwgMjIwLCAxMDIsIDExOCwgMSwgCi0gICAgMjE4LCAyMjMsIDExOCwgMSwgMjA2LCAxMTgsIDEsIDE2MiwgMTE4LCAxLCAyMzIsIDE4NCwgMTE4LCAxLCA1NSwgMzYsIAotICAgIDIzMiwgMTc1LCAxMTgsIDEsIDU1LCAzNiwgMjIyLCAxNzksIDExOCwgMSwgNTUsIDM2LCAyMjgsIDkyLCAxMTgsIDI1LCA1LCAKLSAgICAyNTUsIDczLCAxMTgsIDI1LCA1LCAyNTIsIDE1LCAyNTUsIDczLCAxMTgsIDI1LCA1LCA3MywgMTE4LCAyNSwgNSwgMjM2LCAKLSAgICAzMywgMTE4LCAyNSwgNSwgNzAsIDExOCwgMjUsIDUsIDIxNCwgMTE4LCAxMTgsIDI1LCA1LCAxNDksIDE1MywgMTE4LCAyNSwgCi0gICAgNSwgMTQ5LCAyMjIsIDE4MCwgMTE4LCAyNSwgNSwgMTQ5LCAxNTYsIDExOCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDExOCwgCi0gICAgMjUsIDUsIDc1LCAxMTgsIDI1LCA1LCAyNTQsIDIwMSwgMTE4LCAyNSwgNSwgNzYsIDExOCwgMjUsIDUsIDI1MywgMTkyLCAKLSAgICAxMTgsIDIxMywgMTUyLCAxMTgsIDI0OCwgMTc4LCAxMTgsIDUyLCAyNDgsIDE3OCwgMTE4LCAyMjQsIDE0MSwgMjQ3LCAxMjAsIAotICAgIDExOCwgMjI0LCAxNDEsIDUyLCAyNDcsIDEyMCwgMTE4LCAyMjQsIDE0MSwgMjMyLCAyMTMsIDExOCwgMjI0LCAxNDEsIDI0OSwgCi0gICAgMTM3LCAxMzAsIDExOCwgMjI0LCAxNDEsIDIzMiwgMTE1LCAxMTgsIDU0LCAxMTAsIDExOCwgNTQsIDEwNSwgMTE4LCA1NCwgCisgICAgMTk5LCAyNTQsIDIxMCwgMTgxLCA2LCAxLCAxOTksIDc2LCAxODEsIDYsIDEsIDE5OSwgMjI2LCAxODQsIDE4MSwgNiwgMSwgCisgICAgMjE5LCAyNTIsIDczLCAxODEsIDYsIDEsIDIxOSwgMjUyLCA3NSwgMTgxLCA2LCAxLCAyMTksIDI1MiwgNjEsIDE4MSwgNiwgCisgICAgMSwgMjE5LCAyNTIsIDI1NCwgMjEwLCAxODEsIDYsIDEsIDIxOSwgMjUyLCA3NiwgMTgxLCA2LCAxLCAyMTksIDI1MiwgMjI2LCAKKyAgICAxODQsIDE4MSwgNiwgMSwgMjUzLCAxNjgsIDE4MSwgNiwgMSwgMjI2LCAxMTcsIDE4MSwgNiwgMSwgMjExLCAxOTUsIDE4MSwgCisgICAgNiwgMSwgMjExLCA0NCwgMTgxLCA2LCAxLCAyNDIsIDYxLCAxODEsIDYsIDEsIDIyNSwgMjEyLCAxODEsIDYsIDEsIDI1MiwgCisgICAgNjcsIDE4MSwgNiwgMSwgMjE3LCAxMiwgMTgxLCA2LCAxLCAyNDgsIDc4LCAxODEsIDYsIDEsIDI1MCwgMTI5LCAxODEsIDYsIAorICAgIDEsIDIzNSwgMTI1LCAxODEsIDYsIDEsIDIzNCwgMTkwLCAxODEsIDYsIDEsIDI0MywgODQsIDE4MSwgNiwgMSwgMjQ1LCAKKyAgICAyMDMsIDE4MSwgNiwgMSwgMjEzLCAyNTAsIDE4MSwgNiwgMSwgMjQ1LCA2MCwgMTgxLCA2LCAxLCAyMTYsIDE5NSwgMTgxLCAKKyAgICA2LCAxLCAyNDUsIDgzLCAxODEsIDYsIDEsIDIxMCwgOTIsIDE4MSwgNiwgMSwgMjQ1LCA3NiwgMTgxLCA2LCAxLCAyMTAsIAorICAgIDczLCAxODEsIDYsIDEsIDI0NSwgOTMsIDE4MSwgNiwgMSwgMjQ1LCAxNzUsIDE4MSwgNiwgMSwgMjQ1LCAxNjAsIDE4MSwgNiwgCisgICAgMSwgMjQ1LCAxNTEsIDE4MSwgNiwgMSwgMjQ1LCAxMzksIDE4MSwgNiwgMSwgMjI2LCAyMjAsIDE4MSwgNiwgMSwgMjQ1LCAKKyAgICAzOSwgMTgxLCA0LCAxLCAxOTksIDczLCAxODEsIDQsIDEsIDE5OSwgNzUsIDE4MSwgNCwgMSwgMTk5LCA2MSwgMTgxLCA0LCAKKyAgICAxLCAxOTksIDI1NCwgMjEwLCAxODEsIDQsIDEsIDE5OSwgNzYsIDE4MSwgNCwgMSwgMTk5LCAyMjYsIDE4NCwgMTgxLCA0LCAKKyAgICAxLCAyMTksIDI1MiwgNzMsIDE4MSwgNCwgMSwgMjE5LCAyNTIsIDc1LCAxODEsIDQsIDEsIDIxOSwgMjUyLCA2MSwgMTgxLCAKKyAgICA0LCAxLCAyMTksIDI1MiwgMjU0LCAyMTAsIDE4MSwgNCwgMSwgMjE5LCAyNTIsIDc2LCAxODEsIDQsIDEsIDIxOSwgMjUyLCAKKyAgICAyMjYsIDE4NCwgMTgxLCA0LCAxLCAyNTMsIDE2OCwgMTgxLCA0LCAxLCAyMjYsIDExNywgMTgxLCA0LCAxLCAyMTEsIDE5NSwgCisgICAgMTgxLCA0LCAxLCAyMTEsIDQ0LCAxODEsIDQsIDEsIDI0MiwgNjEsIDE4MSwgNCwgMSwgMjI1LCAyMTIsIDE4MSwgNCwgMSwgCisgICAgMjUyLCA2NywgMTgxLCA0LCAxLCAyMTcsIDEyLCAxODEsIDQsIDEsIDI0OCwgNzgsIDE4MSwgNCwgMSwgMjUwLCAxMjksIAorICAgIDE4MSwgNCwgMSwgMjM1LCAxMjUsIDE4MSwgNCwgMSwgMjM0LCAxOTAsIDE4MSwgNCwgMSwgMjQzLCA4NCwgMTgxLCA0LCAxLCAKKyAgICAyNDUsIDIwMywgMTgxLCA0LCAxLCAyMTMsIDI1MCwgMTgxLCA0LCAxLCAyNDUsIDYwLCAxODEsIDQsIDEsIDIxNiwgMTk1LCAKKyAgICAxODEsIDQsIDEsIDI0NSwgODMsIDE4MSwgNCwgMSwgMjEwLCA5MiwgMTgxLCA0LCAxLCAyNDUsIDc2LCAxODEsIDQsIDEsIAorICAgIDIxMCwgNzMsIDE4MSwgNCwgMSwgMjQ1LCA5MywgMTgxLCA0LCAxLCAyNDUsIDE3NSwgMTgxLCA0LCAxLCAyNDUsIDE2MCwgCisgICAgMTgxLCA0LCAxLCAyNDUsIDE1MSwgMTgxLCA0LCAxLCAyNDUsIDEzOSwgMTgxLCA0LCAxLCAyMjYsIDIyMCwgMTgxLCA0LCAxLCAKKyAgICAyNDUsIDM5LCAyMjAsIDcwLCAxLCAyMjUsIDIxMCwgMjIwLCA3MCwgMSwgMjE2LCA2LCAyMjAsIDcwLCAxLCAyMzQsIDkyLCAKKyAgICAyMjAsIDcwLCAxLCAyNDQsIDE0OCwgMjIwLCA3MCwgMSwgMjE2LCAxNzMsIDIyMCwgNzAsIDEsIDIxOSwgNTksIDIyMCwgNzAsIAorICAgIDEsIDIxOCwgMTUsIDIyMCwgNzAsIDEsIDI1MCwgNjIsIDIyMCwgNzAsIDEsIDIxMSwgNDYsIDIyMCwgNzAsIDEsIDI0MCwgCisgICAgMjEwLCAyMjAsIDcwLCAxLCAyNTIsIDYsIDIyMCwgNzAsIDEsIDI0OCwgOTAsIDIyMCwgNzAsIDEsIDI0MywgMTIyLCAyMjAsIAorICAgIDcwLCAxLCAyMTMsIDEyMywgMjIwLCA3MCwgMSwgMjE2LCAxNzcsIDIyMCwgNzAsIDEsIDIxMCwgMjEsIDIyMCwgNzAsIDEsIAorICAgIDIzMSwgOTAsIDIyMCwgNzAsIDEsIDIzNSwgNTAsIDIyMCwgNzAsIDEsIDIxMSwgMjI1LCAyMjAsIDcwLCAxLCAyNDIsIDQ5LCAKKyAgICAyMjAsIDcwLCAxLCAyMzIsIDE0MywgMjIwLCA3MCwgMSwgMjMwLCAxOTAsIDIyMCwgNzAsIDEsIDIzNiwgNDEsIDIyMCwgNzAsIAorICAgIDEsIDI0NSwgMjAyLCAyMjAsIDcwLCAxLCAyNTMsIDIzMiwgMjIwLCA3MCwgMSwgMjU0LCAyNDgsIDIyMCwgNzAsIDEsIDIyNiwgCisgICAgMTk3LCAyMjAsIDcwLCAxLCAyMTEsIDIxMiwgMjIwLCA3MCwgMSwgMjI2LCAxMzEsIDIyMCwgNzAsIDEsIDI1NCwgMjEwLCAKKyAgICAyMjAsIDcwLCAxLCAyMjIsIDIwOSwgMjIwLCA3MCwgMSwgMjI3LCAxOTUsIDIyMCwgNzAsIDEsIDI0NSwgMjE4LCAyMjAsIAorICAgIDcwLCAxLCAyNTQsIDIxNSwgMjIwLCA3MCwgMSwgMjQwLCAxMTIsIDIyMCwgNzAsIDEsIDIxNCwgMTYzLCAyMjAsIDcwLCAxLCAKKyAgICAyMjYsIDI1NSwgMjIwLCA3MCwgMSwgMjI2LCAxNzcsIDIyMCwgNzAsIDEsIDIyNiwgMjE5LCAyMjAsIDcwLCAxLCAyNTMsIAorICAgIDE3MSwgMjIwLCA3MCwgMSwgMjU0LCAyMCwgMjIwLCA3MCwgMSwgMjI2LCAxNTksIDIyMCwgNzAsIDEsIDI1NCwgMTkzLCAKKyAgICAyMjAsIDcwLCAxLCAyNDUsIDg3LCAyMjAsIDcwLCAxLCAyNTMsIDI1NCwgMjIwLCA3MCwgMSwgMjQ1LCAyMjgsIDIyMCwgNzAsIAorICAgIDEsIDI0MCwgMTE5LCAyMjAsIDcwLCAxLCAyMTEsIDEzLCAyMjYsIDE0MiwgMSwgMjU0LCAxNzEsIDIyNiwgMTQyLCAxLCAKKyAgICAyNTIsIDE5MiwgMjI2LCAxNDIsIDEsIDIxNywgMTA2LCAyMjYsIDE0MiwgMSwgMjM1LCAxNDIsIDIyNiwgMTQyLCAxLCAyMTEsIAorICAgIDE2NSwgMjI2LCAxNDIsIDEsIDIzNCwgMTMzLCAyMjYsIDE0MiwgMSwgMjQ4LCA3NywgMjI2LCAxNDIsIDEsIDIwNSwgMjI2LCAKKyAgICAxNDIsIDEsIDIwNiwgMjI2LCAxNDIsIDEsIDIyMCwgMjcsIDIyNiwgMTQyLCAxLCAyNDgsIDI2LCAyMjYsIDE0MiwgMSwgCisgICAgMjUwLCAyMTYsIDIyNiwgMTQyLCAxLCAyNDMsIDEzNiwgMjI2LCAxNDIsIDEsIDI0NCwgMTk3LCAyMjYsIDE0MiwgMSwgMjI0LCAKKyAgICA4NywgMjI2LCAxNDIsIDEsIDIzNSwgMTAsIDIyNiwgMTQyLCAxLCAyMzMsIDEzMSwgMjI2LCAxNDIsIDEsIDIzMCwgMjAxLCAKKyAgICAyMjYsIDE0MiwgMSwgMjI3LCAxNzksIDIyNiwgMTQyLCAxLCAyMTIsIDMwLCAyMjYsIDE0MiwgMSwgMTYyLCAyMjYsIDE0MiwgCisgICAgMSwgMTkxLCAyMjYsIDE0MiwgMSwgNjEsIDIyNiwgMTQyLCAxLCA3NSwgMjI2LCAxNDIsIDEsIDczLCAyMjYsIDE0MiwgMSwgCisgICAgNzYsIDIyNiwgMTQyLCAxLCA3MCwgMjI2LCAxNDIsIDEsIDI1NSwgNzQsIDIyNiwgMTQyLCAxLCAyNDUsIDIxMCwgMjI2LCAKKyAgICAxNDIsIDEsIDIyNiwgMTg0LCAyMjYsIDE0MiwgMjEsIDIxMCwgODYsIDIyNiwgMTQyLCAyMSwgMTEwLCAyMjYsIDE0MiwgMjEsIAorICAgIDEwNSwgMjI2LCAxNDIsIDIxLCAxNTgsIDIyNiwgMTQyLCAyMSwgMTYxLCAyMjYsIDE0MiwgMjEsIDE4OSwgMjI2LCAxNDIsIAorICAgIDIxLCAxOTQsIDIyNiwgMTQyLCAyMSwgMTk4LCAyMjYsIDE0MiwgMjEsIDE5NSwgMjI2LCAxNDIsIDIxLCAyMDAsIDI0OSwgCisgICAgNjgsIDMsIDYxLCAyNDksIDY4LCAzLCA3NSwgMjQ5LCA2OCwgMywgNzMsIDI0OSwgNjgsIDMsIDc2LCAyNDksIDY4LCAzLCAKKyAgICA3MCwgMjQ5LCA2OCwgMywgMjM1LCAxNDIsIDI0OSwgNjgsIDMsIDIzNSwgNjksIDI0OSwgNjgsIDMsIDE3NiwgMjQ5LCA2OCwgCisgICAgMywgMjM0LCAxODMsIDI0OSwgNjgsIDMsIDIzNCwgOTMsIDI0OSwgNjgsIDMsIDIzNCwgMjksIDI0OSwgNjgsIDMsIDIzMywgCisgICAgMjE4LCAyNDksIDY4LCAzLCAyMzMsIDEzNiwgMjQ5LCA2OCwgMywgMjMzLCA1OSwgMjQ5LCA2OCwgMywgMjMyLCAyNDIsIAorICAgIDI0OSwgNjgsIDMsIDIzMiwgMTU3LCAyNDksIDY4LCAzLCAyMzIsIDk5LCAyNDksIDY4LCAzLCAxODUsIDI0OSwgNjgsIDMsIAorICAgIDIzMSwgOTIsIDI0OSwgNjgsIDMsIDIzMCwgMjMxLCAyNDksIDY4LCAzLCAyMzAsIDE2MiwgMjQ5LCA2OCwgMywgMjMwLCAKKyAgICAxMDMsIDI0OSwgNjgsIDMsIDE5NywgMjQ5LCA2OCwgMywgMjI5LCAxMDgsIDI0OSwgNjgsIDMsIDIyOCwgMjM0LCAyNDksIAorICAgIDY4LCAzLCAyMjgsIDc1LCAyNDksIDY4LCAzLCAyMjcsIDIzOCwgMjQ5LCA2OCwgMywgMTkwLCAyNDksIDY4LCAzLCAyMjUsIAorICAgIDIyMiwgMjQ5LCA2OCwgMywgMjI1LCAxMDksIDI0OSwgNjgsIDMsIDIyNSwgMTcsIDI0OSwgNjgsIDMsIDIyNCwgMTUxLCAKKyAgICAyNDksIDY4LCAzLCAyMDUsIDI0OSwgNjgsIDMsIDIyMywgMTI5LCAyNDksIDY4LCAzLCAyMjMsIDM2LCAyNDksIDY4LCAzLCAKKyAgICAyMjIsIDIxMiwgMjQ5LCA2OCwgMywgMjIyLCAxNDEsIDI0OSwgNjgsIDMsIDIwNiwgMjQ5LCA2OCwgMywgMjIxLCAxODIsIAorICAgIDI0OSwgNjgsIDMsIDIxOSwgMTkyLCAyNDksIDY4LCAzLCAyMTksIDU5LCAyNDksIDY4LCAzLCAyMTgsIDg0LCAyNDksIDY4LCAKKyAgICAzLCAyMTcsIDEwNiwgMjQ5LCA2OCwgMywgMjE3LCAyMywgMjQ5LCA2OCwgMywgMjE2LCAxMTgsIDI0OSwgNjgsIDMsIDExMSwgCisgICAgMjQ5LCA2OCwgMywgMjE1LCAxMTksIDI0OSwgNjgsIDMsIDIxMiwgNjUsIDI0OSwgNjgsIDMsIDIxMiwgMjIsIDI0OSwgNjgsIAorICAgIDMsIDIxMSwgMjUwLCAyNDksIDY4LCAzLCAyMTEsIDIyNywgMjQ5LCA2OCwgMywgMjExLCAxNjUsIDI0OSwgNjgsIDMsIDIxMSwgCisgICAgMTYyLCAyNDksIDY4LCAzLCAyMTAsIDExNiwgMjQ5LCA2OCwgMywgMjEwLCAyMywgMjM2LCAyLCAyNTQsIDI4LCAxLCAyNTQsIAorICAgIDE2OSwgMjM2LCAyLCAyNTQsIDI4LCAxLCAyNTIsIDI2LCAyMzYsIDIsIDI1NCwgMjgsIDEsIDI0MiwgMjAyLCAyMzYsIDIsIAorICAgIDI1NCwgMjgsIDEsIDI0OCwgMTg5LCAyMzYsIDIsIDI1NCwgMjgsIDEsIDI0MSwgMjM5LCAyMzYsIDIsIDI1NCwgMjgsIDEsIAorICAgIDIxMiwgMzAsIDIzNiwgMiwgMjU0LCAyOCwgMSwgMjEwLCA5NywgMjM2LCAyLCAyNTQsIDI4LCAxLCAyNDEsIDE5NiwgMjM2LCAKKyAgICAyLCAyNTQsIDI4LCAxLCAyMTYsIDIyNywgMjM2LCAyLCAyNTQsIDI4LCAxLCAyMTAsIDIzMiwgMjM2LCAyLCAyNTQsIDI4LCAKKyAgICAxLCAyMzQsIDIyNiwgMjM2LCAyLCAyNTQsIDI4LCAxLCAyMzMsIDk0LCAyMzYsIDIsIDI1NCwgMjgsIDEsIDIzMSwgNjYsIAorICAgIDIzNiwgMiwgMjU0LCAyOCwgMSwgMjI3LCAxOTUsIDIzNiwgMiwgMjU0LCAyOCwgMSwgMjIxLCAyNTAsIDIzNiwgMiwgMjU0LCAKKyAgICAyOCwgMSwgMjUzLCAxNjMsIDIzNiwgMiwgMjU0LCAyOCwgMSwgMjI1LCAyMjIsIDIzNiwgMiwgMjU0LCAyOCwgMSwgMjIyLCAKKyAgICAyNSwgMjM2LCAyLCAyNTQsIDI4LCAxLCAyMjQsIDM1LCAyMzYsIDIsIDI1NCwgMjgsIDEsIDIyMywgNjgsIDIzNiwgMiwgCisgICAgMjU0LCAyOCwgMSwgMjIwLCAyMSwgMjM2LCAyLCAyNTQsIDI4LCAxLCAyMTcsIDM3LCAyMzYsIDIsIDI1NCwgMjgsIDIyMSwgCisgICAgMTc0LCA1MCwgMjM2LCAyLCAyNTQsIDI4LCA1NCwgMTEwLCAyMzYsIDIsIDI1NCwgMjgsIDU0LCAxMDUsIDIzNiwgMiwgMjU0LCAKKyAgICAyOCwgNTQsIDE1OCwgMjM2LCAyLCAyNTQsIDI4LCA1NCwgMjE2LCAyNDgsIDIzNiwgMiwgMjU0LCAyOCwgNTQsIDIxNSwgNzMsIAorICAgIDIzNiwgMiwgMjU0LCAyOCwgNTQsIDEyMywgMjQwLCAyMTEsIDIzNiwgMiwgMjU0LCAyOCwgNTQsIDEyMywgMjE2LCAxNDgsIAorICAgIDIzNiwgMiwgMjU0LCAyOCwgNTQsIDIxNiwgMjQ5LCAyMTYsIDE0OCwgMjI1LCAxMjAsIDEsIDI1NCwgMTY2LCAyMjUsIDEyMCwgCisgICAgMSwgMjUyLCAyOSwgMjI1LCAxMjAsIDEsIDI0MywgMTEwLCAyMjUsIDEyMCwgMSwgMjQ4LCA1NywgMjI1LCAxMjAsIDEsIAorICAgIDI0MSwgMjM5LCAyMjUsIDEyMCwgMSwgMjEyLCAzNywgMjI1LCAxMjAsIDEsIDIxMCwgMTEwLCAyMjUsIDEyMCwgMSwgMjQxLCAKKyAgICAxOTgsIDIyNSwgMTIwLCAxLCAyMTYsIDIzMSwgMjI1LCAxMjAsIDEsIDIxMCwgMjMzLCAyMjUsIDEyMCwgMSwgMjM0LCAyNTEsIAorICAgIDIyNSwgMTIwLCAxLCAyMzMsIDEwMCwgMjI1LCAxMjAsIDEsIDIzMSwgNjYsIDIyNSwgMTIwLCAxLCAyMjcsIDE5NSwgMjI1LCAKKyAgICAxMjAsIDEsIDIyMCwgMTQ1LCAyMjUsIDEyMCwgMSwgMjU0LCAxOTcsIDIyNSwgMTIwLCAxLCAyMjUsIDIyMiwgMjI1LCAxMjAsIAorICAgIDEsIDIyMiwgMjYsIDIyNSwgMTIwLCAxLCAyMjQsIDQwLCAyMjUsIDEyMCwgMSwgMjIyLCAxOTAsIDIyNSwgMTIwLCAxLCAKKyAgICAyMjAsIDIxLCAyMjUsIDEyMCwgMSwgMjE3LCA0MiwgMjI1LCAxMjAsIDU0LCAxMTAsIDIyNSwgMTIwLCA1NCwgMjE2LCAyNDgsIAorICAgIDIyNSwgMTIwLCA1NCwgMjE1LCA3MywgMjI1LCAxMjAsIDU0LCAxMjMsIDI0MCwgMjExLCAyMjUsIDEyMCwgNTQsIDEwNSwgCisgICAgMjI1LCAxMjAsIDU0LCAxNTgsIDIyNSwgMTIwLCAyMTEsIDIwOSwgMjIwLCAxMzgsIDIzMiwgNjAsIDEsIDYxLCAyMzIsIDYwLCAKKyAgICAxLCAyNTMsIDE1OSwgMjMyLCA2MCwgMSwgMjQzLCAyMDMsIDIzMiwgNjAsIDEsIDI0OSwgNjEsIDIzMiwgNjAsIDEsIDc1LCAKKyAgICAyMzIsIDYwLCAxLCAyMTQsIDEwNSwgMjMyLCA2MCwgMSwgNzMsIDIzMiwgNjAsIDEsIDIxMSwgMTE3LCAyMzIsIDYwLCAxLCAKKyAgICAyMzUsIDI0LCAyMzIsIDYwLCAxLCAxNTYsIDIzMiwgNjAsIDEsIDE5MywgMjMyLCA2MCwgMSwgMjMwLCAyNiwgMjMyLCA2MCwgCisgICAgMSwgNzYsIDIzMiwgNjAsIDEsIDE1MywgMjMyLCA2MCwgMSwgMjE4LCAyMjcsIDIzMiwgNjAsIDEsIDIxNywgMTUzLCAyMzIsIAorICAgIDYwLCAxLCA3MCwgMjMyLCA2MCwgMSwgMjQ1LCA3LCAyMzIsIDYwLCAxLCAyMjQsIDk3LCAyMzIsIDYwLCAxLCAyMjIsIDkyLCAKKyAgICAyMzIsIDYwLCAxLCAyMTUsIDE2MCwgMjMyLCA2MCwgMSwgMjU0LCAxMjQsIDIzMiwgNjAsIDEsIDI0NSwgMTUxLCAyMzIsIAorICAgIDYwLCAxLCAyMzIsIDYzLCAyMzIsIDYwLCAxLCAyMjgsIDExMiwgMjMyLCA2MCwgMSwgMjUxLCA2NywgMjMyLCA2MCwgMjE1LCAKKyAgICAyMjMsIDc4LCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgNjEsIDIzMSwgNDksIDI0MSwgMTc1LCAxLCA3NSwgMjMxLCA0OSwgCisgICAgMjQxLCAxNzUsIDEsIDczLCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgNzYsIDIzMSwgNDksIDI0MSwgMTc1LCAxLCAxOTEsIAorICAgIDIzMSwgNDksIDI0MSwgMTc1LCAxLCAyMTIsIDY1LCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMjUyLCAxOTIsIDIzMSwgNDksIAorICAgIDI0MSwgMTc1LCAxLCAyNTIsIDE5MSwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIDE5MCwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIAorICAgIDE4NSwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIDE5NywgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIDIyOSwgMjI5LCAyMzEsIDQ5LCAKKyAgICAyNDEsIDE3NSwgMSwgMjI5LCAxMDgsIDIzMSwgNDksIDI0MSwgMTc1LCAxLCAyMjksIDEwNywgMjMxLCA0OSwgMjQxLCAxNzUsIAorICAgIDEsIDIwNSwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIDIyMywgMTg4LCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMjMzLCAxMzYsIAorICAgIDIzMSwgNDksIDI0MSwgMTc1LCAxLCAyMzQsIDEzMywgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIDI0MSwgMTkwLCAyMzEsIDQ5LCAKKyAgICAyNDEsIDE3NSwgMSwgMjA2LCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMjIyLCAzNCwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIAorICAgIDIyMSwgMTgyLCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMTc2LCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMjI0LCA4OSwgMjMxLCAKKyAgICA0OSwgMjQxLCAxNzUsIDEsIDIxNywgMTA2LCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMjE3LCAxMDUsIDIzMSwgNDksIDI0MSwgCisgICAgMTc1LCAxLCAyMTcsIDIzLCAyMzEsIDQ5LCAyNDEsIDE3NSwgMSwgMjE3LCAyMiwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIAorICAgIDExMSwgMjMxLCA0OSwgMjQxLCAxNzUsIDEsIDI0OCwgMjIyLCAyMzEsIDQ5LCAyNDEsIDE3NSwgMTYsIDIxMywgMTcwLCAKKyAgICAyMzEsIDQ5LCAyNDEsIDE3NSwgMTYsIDIxMywgMTY5LCAyMzEsIDQ5LCAyNDksIDk1LCAxLCA2MSwgMjMxLCA0OSwgMjQ5LCAKKyAgICA5NSwgMSwgNzUsIDIzMSwgNDksIDI0OSwgOTUsIDEsIDczLCAyMzEsIDQ5LCAyNDksIDk1LCAxLCA3NiwgMjMxLCA0OSwgCisgICAgMjQ5LCA5NSwgMSwgMTkxLCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAyMTIsIDY1LCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAyNTIsIAorICAgIDE5MiwgMjMxLCA0OSwgMjQ5LCA5NSwgMSwgMTkwLCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAxODUsIDIzMSwgNDksIDI0OSwgCisgICAgOTUsIDEsIDE5NywgMjMxLCA0OSwgMjQ5LCA5NSwgMSwgMjI5LCAxMDgsIDIzMSwgNDksIDI0OSwgOTUsIDEsIDIwNSwgMjMxLCAKKyAgICA0OSwgMjQ5LCA5NSwgMSwgMjMzLCAxMzYsIDIzMSwgNDksIDI0OSwgOTUsIDEsIDIzNCwgMTMzLCAyMzEsIDQ5LCAyNDksIAorICAgIDk1LCAxLCAyNDEsIDE5MCwgMjMxLCA0OSwgMjQ5LCA5NSwgMSwgMjA2LCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAyNTQsIDI0LCAKKyAgICAyMDYsIDIzMSwgNDksIDI0OSwgOTUsIDEsIDIyMSwgMTgyLCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAxNzYsIDIzMSwgNDksIAorICAgIDI0OSwgOTUsIDEsIDIyNCwgODksIDIzMSwgNDksIDI0OSwgOTUsIDEsIDIxNywgMTA2LCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAKKyAgICAyMTcsIDIzLCAyMzEsIDQ5LCAyNDksIDk1LCAxLCAxMTEsIDIzMSwgNDksIDI0OSwgOTUsIDEsIDI0OCwgMjIyLCAyMzEsIAorICAgIDQ5LCAyNDksIDk1LCAyMzIsIDE0NiwgMjIyLCAyMTgsIDIzMSwgNDksIDI0OSwgOTUsIDIzMiwgMTQ2LCAyMzYsIDcsIDIzNCwgCisgICAgMTIxLCAxLCA2MSwgMjM0LCAxMjEsIDI1LCA1LCA3MywgMjM0LCAxMjEsIDI1LCA1LCA3MCwgMjM0LCAxMjEsIDI1LCA1LCAKKyAgICAxNDksIDE1MywgMjM0LCAxMjEsIDI1LCA1LCA3NSwgMjM0LCAxMjEsIDI1LCA1LCA3NiwgMjM0LCAxMjEsIDI1LCAyMzMsIAorICAgIDI0LCA3OCwgMjM0LCAxMjEsIDUsIDUyLCAyMjIsIDIzNSwgNTEsIDIzNCwgMTIxLCA1LCAyNTQsIDc2LCAyMzQsIDEyMSwgNSwgCisgICAgMjEzLCAxNDcsIDIzNCwgMTIxLCAxLCAxNzYsIDIzNCwgMTIxLCAxLCAyMzQsIDEzMywgMjM0LCAxMjEsIDEsIDI0MywgMTM2LCAKKyAgICAyMzQsIDEyMSwgMSwgMjQyLCAyNTAsIDIzNCwgMTIxLCAxLCAyNTEsIDM0LCAyMzQsIDEyMSwgMSwgMjUwLCAxNTgsIDIzNCwgCisgICAgMTIxLCAxLCAyMzUsIDE0MiwgMjM0LCAxMjEsIDEsIDIyNywgMTY2LCAyMzQsIDEyMSwgMSwgMjE1LCAxNTcsIDIzNCwgMTIxLCAKKyAgICAxLCAyMTUsIDE0NSwgMjM0LCAxMjEsIDEsIDI0OCwgMTM2LCAyMzQsIDEyMSwgMSwgMjQ4LCAxMjAsIDIzNCwgMTIxLCAxLCAKKyAgICAyMjgsIDExMSwgMjM0LCAxMjEsIDEsIDIxNywgMTA2LCAyMzQsIDEyMSwgMSwgMjE2LCAyMDksIDIzNCwgMTIxLCAxLCAyNDgsIAorICAgIDIyMiwgMjM0LCAxMjEsIDEsIDI0OCwgMjYsIDIzNCwgMTIxLCAxLCAxOTcsIDIzNCwgMTIxLCAxLCAxOTAsIDIzNCwgMTIxLCAKKyAgICAxLCAyMjUsIDE0OCwgMjM0LCAxMjEsIDEsIDI1MiwgMTkyLCAyMzQsIDEyMSwgMSwgMjUyLCAxOSwgMjM0LCAxMjEsIDEsIAorICAgIDE4NSwgMjM0LCAxMjEsIDEsIDE5MSwgMjM0LCAxMjEsIDEsIDIwNSwgMjM0LCAxMjEsIDEsIDIzMywgMTM2LCAyMzQsIDEyMSwgCisgICAgMSwgMjE0LCAyNywgMjM0LCAxMjEsIDEsIDIyMCwgMTAzLCAyMzQsIDEyMSwgMSwgMjE4LCAyMjQsIDIzNCwgMTIxLCAxLCAKKyAgICAyMDYsIDIzNCwgMTIxLCAxLCAyMTAsIDExNiwgMjM0LCAxMjEsIDEsIDE2MiwgMjM0LCAxMjEsIDEsIDIzNCwgNDcsIDIzNCwgCisgICAgMTIxLCAxLCAyMTUsIDEyNSwgMjM0LCAxMjEsIDUsIDI1MiwgMTQyLCA0OCwgMjM0LCAxMjEsIDUsIDI1MCwgMjIyLCAyMzQsIAorICAgIDEyMSwgNSwgNTksIDUxLCAyMzQsIDEyMSwgMjEzLCAxNTIsIDIzNCwgMTIxLCAyMSwgMTEwLCAyMzQsIDEyMSwgMjEsIDEwNSwgCisgICAgMjM0LCAxMjEsIDIxLCAxNTgsIDIzNCwgMTIxLCAyMSwgMTYxLCAyMzQsIDEyMSwgNTQsIDIxNiwgMjQ4LCAyMzQsIDEyMSwgCisgICAgNTQsIDIxNSwgNzMsIDIzNCwgMTIxLCA1NCwgMTIzLCAyNDAsIDIxMSwgMjM0LCAxMjEsIDU0LCAxMjMsIDIxNiwgMTQ4LCAKKyAgICAyMzQsIDEyMSwgMjI0LCAxNDIsIDI0NywgMTIxLCAyMzQsIDEyMSwgMjI0LCAxNDIsIDQsIDI1MCwgMzYsIDIzNCwgMTIxLCAKKyAgICAyMjQsIDE0MiwgMjUwLCAzNiwgMjM0LCAxMjEsIDIyNCwgMTQyLCAyNDksIDEzOCwgMTMwLCAyMzQsIDEyMSwgMjI0LCAxNDIsIAorICAgIDIzMSwgMTgxLCAyMzQsIDEyMSwgMjI0LCAxNDIsIDIzMiwgMTE2LCAyMzQsIDEyMSwgMjI0LCAxNDIsIDI0OCwgMTc5LCAKKyAgICAyMzQsIDEyMSwgMjI0LCAxNDIsIDUyLCAyNDgsIDE3OSwgMjM0LCAxMjEsIDIyNCwgMTQyLCAyMzIsIDIwOCwgNTUsIDIxOSwgCisgICAgMjksIDI1NCwgMzksIDEsIDI0MSwgMjM5LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjMzLCA5NCwgNTUsIDIxOSwgMjksIAorICAgIDI1NCwgMzksIDEsIDI0MSwgMTk2LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjMxLCA2NiwgNTUsIDIxOSwgMjksIDI1NCwgCisgICAgMzksIDEsIDIyNCwgMzUsIDU1LCAyMTksIDI5LCAyNTQsIDM5LCAxLCAyMTIsIDMwLCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgCisgICAgMSwgMjIwLCAyMSwgNTUsIDIxOSwgMjksIDI1NCwgMzksIDEsIDIyMywgNjgsIDU1LCAyMTksIDI5LCAyNTQsIDM5LCAxLCAKKyAgICAyNTIsIDI2LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjE3LCAzNywgNTUsIDIxOSwgMjksIDI1NCwgMzksIDEsIDIyMSwgCisgICAgMjI3LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjM0LCAyMjYsIDU1LCAyMTksIDI5LCAyNTQsIDM5LCAxLCAyMjcsIAorICAgIDE5NSwgNTUsIDIxOSwgMjksIDI1NCwgMzksIDEsIDIzNCwgMTE3LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjIyLCAyNSwgCisgICAgNTUsIDIxOSwgMjksIDI1NCwgMzksIDEsIDIyMSwgMjUwLCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjQ0LCAxNTUsIDU1LCAKKyAgICAyMTksIDI5LCAyNTQsIDM5LCAxLCAyNTQsIDE3MSwgNTUsIDIxOSwgMjksIDI1NCwgMzksIDEsIDI1MywgMTYyLCA1NSwgCisgICAgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjQ4LCAyMywgNTUsIDIxOSwgMjksIDI1NCwgMzksIDEsIDI0MiwgMjAyLCA1NSwgMjE5LCAKKyAgICAyOSwgMjU0LCAzOSwgMSwgMjQ4LCAxODksIDU1LCAyMTksIDI5LCAyNTQsIDM5LCAxLCAyNDIsIDIzOSwgNTUsIDIxOSwgMjksIAorICAgIDI1NCwgMzksIDEsIDIxNiwgMjI3LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjEwLCA5NiwgNTUsIDIxOSwgMjksIDI1NCwgCisgICAgMzksIDEsIDI0OCwgMjAsIDU1LCAyMTksIDI5LCAyNTQsIDM5LCAxLCAyMTAsIDIzMiwgNTUsIDIxOSwgMjksIDI1NCwgMzksIAorICAgIDEsIDIxNiwgMTk4LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMSwgMjE2LCAxNzksIDU1LCAyMTksIDI5LCAyNTQsIDM5LCA1NCwgCisgICAgMTEwLCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgNTQsIDI0NCwgMTE1LCA1NSwgMjE5LCAyOSwgMjU0LCAzOSwgMTMyLCAyMzUsIAorICAgIDIzOSwgMjUzLCAxNzMsIDEsIDYxLCAyNTMsIDE3MywgMSwgMjU1LCA3NCwgMjUzLCAxNzMsIDEsIDI1NCwgNzQsIDI1MywgCisgICAgMTczLCAxLCAyNTUsIDMzLCAyNTMsIDE3MywgMSwgMjU0LCAxMjQsIDI1MywgMTczLCAxLCAyNTUsIDM0LCAyNTMsIDE3MywgCisgICAgMSwgMjU0LCAyNDQsIDI1MywgMTczLCAxLCAyNTQsIDI0MCwgMjUzLCAxNzMsIDEsIDc1LCAyNTMsIDE3MywgMSwgMjQ1LCAKKyAgICAyMTAsIDI1MywgMTczLCAxLCA3NiwgMjUzLCAxNzMsIDEsIDIyNiwgMTg0LCAyNTMsIDE3MywgMSwgNzMsIDI1MywgMTczLCAKKyAgICAxLCAyMzYsIDM0LCAyNTMsIDE3MywgMSwgNzAsIDI1MywgMTczLCAxLCAyMTQsIDExOCwgMjUzLCAxNzMsIDEsIDIzNCwgCisgICAgMTgzLCAyNTMsIDE3MywgMSwgMjExLCAxNjIsIDI1MywgMTczLCAxLCAyMTEsIDEyOCwgMjUzLCAxNzMsIDEsIDIxMSwgMTM3LCAKKyAgICAyNTMsIDE3MywgMSwgMjQzLCA2MywgMjUzLCAxNzMsIDEsIDI0MywgMjUsIDI1MywgMTczLCAxLCAyNDIsIDIzNywgMjUzLCAKKyAgICAxNzMsIDEsIDI1MCwgMTkxLCAyNTMsIDE3MywgMSwgMjM1LCAxMjcsIDI1MywgMTczLCAxLCAyMTcsIDIzLCAyNTMsIDE3MywgCisgICAgMSwgMjE2LCAxOTYsIDI1MywgMTczLCAxLCAyNDgsIDkxLCAyNTMsIDE3MywgMSwgMjQ4LCAxOCwgMjUzLCAxNzMsIDEsIAorICAgIDIxNSwgMTUyLCAyNTMsIDE3MywgMSwgMjI1LCAyMjIsIDI1MywgMTczLCAxLCAyNDQsIDE1NSwgMjUzLCAxNzMsIDEsIDI1MiwgCisgICAgNzYsIDI1MywgMTczLCAxLCAyNTIsIDE1LCAyNTMsIDE3MywgMSwgMjI5LCA2NSwgMjUzLCAxNzMsIDEsIDIyOCwgMjQwLCAKKyAgICAyNTMsIDE3MywgMSwgMjI4LCAyNDEsIDI1MywgMTczLCAxLCAyMjksIDEwOCwgMjUzLCAxNzMsIDEsIDIyNywgMTU3LCAyNTMsIAorICAgIDE3MywgMSwgMjI4LCAxMDYsIDI1MywgMTczLCAxLCAyMzEsIDkyLCAyNTMsIDE3MywgMSwgMjQxLCAxMTcsIDI1MywgMTczLCAKKyAgICAxLCAyMTAsIDE2NiwgMjUzLCAxNzMsIDEsIDIxMSwgNDcsIDI1MywgMTczLCAxLCAyMTMsIDI1NSwgMjUzLCAxNzMsIDEsIAorICAgIDIyMywgMTI5LCAyNTMsIDE3MywgMSwgMjMzLCA1OSwgMjUzLCAxNzMsIDEsIDIyMSwgMTgyLCAyNTMsIDE3MywgMSwgMjEwLCAKKyAgICA5NCwgMjUzLCAxNzMsIDEsIDIyMCwgNjQsIDI1MywgMTczLCAxLCAyMTAsIDc0LCAyNTMsIDE3MywgMSwgMjE5LCAxOTksIAorICAgIDI1MywgMTczLCAxLCAyMTgsIDE5NCwgMjUzLCAxNzMsIDEsIDI0MSwgMjM5LCAyNTMsIDE3MywgMjU1LCAyMiwgNzgsIDIxNiwgCisgICAgODAsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQxLCA0LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIAorICAgIDE0MSwgMjMzLCA4NiwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDEsIDIzMywgODYsIDEyMywgNTksIDExNywgCisgICAgMTEzLCAxNzAsIDIyNCwgMTQxLCAyMzMsIDg2LCAxMTMsIDIyMiwgMjMzLCAxMTcsIDEyMywgMjIyLCAyMzUsIDIyNCwgMTQxLCAKKyAgICAyMzMsIDg2LCAxMjMsIDIyMiwgMjM1LCAxMTcsIDExMywgMjIyLCAyMzMsIDIyNCwgMTQxLCAyMzUsIDIxOSwgMjI1LCAyNTUsIAorICAgIDEsIDI1NCwgMTY5LCAyMzUsIDIxOSwgMjI1LCAyNTUsIDEsIDI1MiwgMjYsIDIzNSwgMjE5LCAyMjUsIDI1NSwgMSwgMjQyLCAKKyAgICAyMDIsIDIzNSwgMjE5LCAyMjUsIDI1NSwgMSwgMjQ4LCAxODksIDIzNSwgMjE5LCAyMjUsIDI1NSwgMSwgMjQxLCAyMzksIAorICAgIDIzNSwgMjE5LCAyMjUsIDI1NSwgMSwgMjEyLCAzMCwgMjM1LCAyMTksIDIyNSwgMjU1LCAxLCAyMTAsIDk3LCAyMzUsIDIxOSwgCisgICAgMjI1LCAyNTUsIDEsIDI0MSwgMTk2LCAyMzUsIDIxOSwgMjI1LCAyNTUsIDEsIDIxNiwgMjI3LCAyMzUsIDIxOSwgMjI1LCAKKyAgICAyNTUsIDEsIDIxMCwgMjMyLCAyMzUsIDIxOSwgMjI1LCAyNTUsIDEsIDIzNCwgMjI2LCAyMzUsIDIxOSwgMjI1LCAyNTUsIDEsIAorICAgIDIzMywgOTQsIDIzNSwgMjE5LCAyMjUsIDI1NSwgMSwgMjMxLCA2NiwgMjM1LCAyMTksIDIyNSwgMjU1LCAxLCAyMjcsIDE5NSwgCisgICAgMjM1LCAyMTksIDIyNSwgMjU1LCAxLCAyMjEsIDI1MCwgMjM1LCAyMTksIDIyNSwgMjU1LCAxLCAyNTMsIDE2MywgMjM1LCAKKyAgICAyMTksIDIyNSwgMjU1LCAxLCAyMjUsIDIyMiwgMjM1LCAyMTksIDIyNSwgMjU1LCAxLCAyMjIsIDI1LCAyMzUsIDIxOSwgCisgICAgMjI1LCAyNTUsIDEsIDIyNCwgMzUsIDIzNSwgMjE5LCAyMjUsIDI1NSwgMSwgMjIzLCA2OCwgMjM1LCAyMTksIDIyNSwgMjU1LCAKKyAgICAxLCAyMjAsIDIxLCAyMzUsIDIxOSwgMjI1LCAyNTUsIDEsIDIxNywgMzcsIDIzNSwgMjE5LCAyMjUsIDI1NSwgNTQsIDExMCwgCisgICAgMjM1LCAyMTksIDIyNSwgMjU1LCA1NCwgMTA1LCAyMzUsIDIxOSwgMjI1LCAyNTUsIDU0LCAxNTgsIDIzNSwgMjE5LCAyMjUsIAorICAgIDI1NSwgNTQsIDE2MSwgMjM1LCAyMTksIDIyNSwgMjU1LCA1NCwgMjE2LCAyNDgsIDIzNSwgMjE5LCAyMjUsIDI1NSwgNTQsIAorICAgIDIxNSwgNzMsIDIzNSwgMjE5LCAyMjUsIDI1NSwgNTQsIDEyMywgMjQwLCAyMTEsIDIzNSwgMjE5LCAyMjUsIDI1NSwgNTQsIAorICAgIDEyMywgMjE2LCAxNDgsIDIzNSwgMjE5LCAyMjYsIDczLCAxLCAyNTQsIDE2OSwgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDI1MiwgCisgICAgMjYsIDIzNSwgMjE5LCAyMjYsIDczLCAxLCAyNDIsIDIwMiwgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDI0OCwgMTg5LCAyMzUsIAorICAgIDIxOSwgMjI2LCA3MywgMSwgMjQxLCAyMzksIDIzNSwgMjE5LCAyMjYsIDczLCAxLCAyMTIsIDI5LCAyMzUsIDIxOSwgMjI2LCAKKyAgICA3MywgMSwgMjEwLCA5NywgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDI0MSwgMTk2LCAyMzUsIDIxOSwgMjI2LCA3MywgMSwgCisgICAgMjE2LCAyMjcsIDIzNSwgMjE5LCAyMjYsIDczLCAxLCAyMTAsIDIzMiwgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDIzNCwgMjI2LCAKKyAgICAyMzUsIDIxOSwgMjI2LCA3MywgMSwgMjMzLCA5NCwgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDIzMSwgNjUsIDIzNSwgMjE5LCAKKyAgICAyMjYsIDczLCAxLCAyMjcsIDE5NSwgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDIyMSwgMjUwLCAyMzUsIDIxOSwgMjI2LCA3MywgCisgICAgMSwgMjI1LCAyMjIsIDIzNSwgMjE5LCAyMjYsIDczLCAxLCAyMjIsIDI1LCAyMzUsIDIxOSwgMjI2LCA3MywgMSwgMjIwLCAKKyAgICAyMSwgMjM1LCAyMTksIDIyNiwgNzMsIDEsIDIxNywgMzcsIDIzNSwgMjE5LCAyMjYsIDczLCA1NCwgMTEwLCAyMzUsIDIxOSwgCisgICAgMjI2LCA3MywgNTQsIDEwNSwgMjM1LCAyMTksIDIyNiwgNzMsIDU0LCAxNTgsIDIzNSwgMjE5LCAyMjYsIDczLCA1NCwgMTYxLCAKKyAgICAyMzUsIDIxOSwgMjI2LCA3MywgNTQsIDIxNiwgMjQ4LCAyMzUsIDIxOSwgMjI2LCA3MywgNTQsIDIxNSwgNzMsIDIzNSwgCisgICAgMjE5LCAyMjYsIDczLCA1NCwgMTIzLCAyNDAsIDIxMSwgMjM1LCAyMTksIDIyNiwgNzMsIDU0LCAxMjMsIDIxNiwgMTQ4LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE1MCwgNjEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDYxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDI0NCwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDczLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCA3MywgNTUsIDIwMSwgMSwgCisgICAgMjExLCAzNywgNzUsIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCA3NiwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDIyNiwgMjM1LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzNSwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1NSwgMjYsIDU1LCAyMDEsIDEsIAorICAgIDIxMSwgMzcsIDI1NSwgMjYsIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCAyNTQsIDI0MywgNTUsIDIwMSwgMSwgMjExLCAzNywgCisgICAgMjU0LCAyNDMsIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCAyNTQsIDIxNywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMTcsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCAyNTQsIDIzOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAyMzgsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTUwLCAyNTUsIDAsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NSwgMCwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIAorICAgIDI1NCwgMjQyLCA1NSwgMjAxLCAxLCAyMjYsIDE1MCwgMjQ1LCAxMywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxMywgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1MywgMTY4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDE2OCwgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNTAsIDI1NCwgMjI1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNTAsIDI1NCwgMjM2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNiwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDIyNiwgCisgICAgMjM0LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzNCwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1NCwgMTc5LCA1NSwgCisgICAgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDE3OSwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1NCwgMjM1LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE1MCwgMjQ1LCAxNjIsIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCAyNDUsIDE2MCwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIAorICAgIDI1NCwgMTI0LCA1NSwgMjAxLCAxLCAyMjYsIDE1MCwgMjU0LCAyMzMsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjMzLCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE1MCwgMjQ1LCAxMzIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTMyLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE1MCwgMjQ1LCAxNDgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTQ4LCA1NSwgMjAxLCAxLCAyMjYsIAorICAgIDE1MCwgMjQ1LCAxMTksIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTE5LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIAorICAgIDExNiwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI0NSwgMTM5LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzMiwgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNTAsIDI0NSwgMTA5LCA1NSwgMjAxLCAxLCAyMjYsIDE1MCwgMjI2LCAxNzYsIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTUwLCAyNDAsIDExNCwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI0NSwgMjE2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNDUsIDIxNiwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1NCwgNDYsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgNDYsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCAyMzUsIDE4MiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjM1LCAxODIsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTUwLCAyMjYsIDE2MCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAxNjAsIDU1LCAyMDEsIDEsIDIyNiwgCisgICAgMTUwLCAyNTQsIDQyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDQyLCA1NSwgMjAxLCAxLCAyMjYsIDE1MCwgMjU0LCAKKyAgICAyMzEsIDU1LCAyMDEsIDEsIDIyNiwgMTUwLCAyNTMsIDIzOCwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1NCwgMjI5LCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE1MCwgMjUzLCAyMzIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMjMyLCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE1MCwgMjQ1LCA3NiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCA3NiwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIAorICAgIDI1MywgMjA3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDIwNywgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDI1NCwgMjI2LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNiwgNTUsIDIwMSwgMSwgMjI2LCAxNTAsIDIyNiwgMTQxLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE1MCwgMjUyLCAxMjYsIDIyMiwgMTI4LCAyMSwgMTEwLCAyMjIsIDEyOCwgMjEsIDEwNSwgMjIyLCAxMjgsIAorICAgIDIxLCAxNTgsIDIyMiwgMTI4LCAyMSwgMTYxLCAyMjIsIDEyOCwgMjEsIDE4OSwgMjIyLCAxMjgsIDIxLCAxOTQsIDIyMiwgCisgICAgMTI4LCAyMSwgMTk4LCAyMjIsIDEyOCwgMjEsIDE5NSwgMjIyLCAxMjgsIDIxLCAyMDAsIDIyMiwgMTI4LCA1NCwgMjE2LCAKKyAgICAyNDgsIDIyMiwgMTI4LCA1NCwgMjE1LCA3MywgMjIyLCAxMjgsIDU0LCAyMTYsIDE2MywgMjIyLCAxMjgsIDU0LCAyNDQsIAorICAgIDE2LCAyMjIsIDEyOCwgNTQsIDI0NCwgMTE1LCAyMjIsIDEyOCwgNTQsIDIxOSwgMTEyLCAyMjIsIDEyOCwgNTQsIDIyMCwgCisgICAgMTE3LCAyMjIsIDEyOCwgNTQsIDI0NSwgMTg1LCAyMjIsIDEyOCwgNTQsIDIyOCwgMTk2LCAyMjIsIDEyOCwgNTQsIDEyMywgCisgICAgMjQwLCAyMTEsIDIyMiwgMTI4LCA1NCwgMTEzLCAyNDAsIDIxMSwgMjIyLCAxMjgsIDU0LCAxMzQsIDI0MCwgMjExLCAyMjIsIAorICAgIDEyOCwgNTQsIDI0NCwgMTIsIDI0MCwgMjExLCAyMjIsIDEyOCwgNTQsIDI0NCwgODIsIDI0MCwgMjExLCAyMjIsIDEyOCwgCisgICAgNTQsIDIxOSwgMTI2LCAyNDAsIDIxMSwgMjIyLCAxMjgsIDU0LCAyMjAsIDEyMywgMjQwLCAyMTEsIDIyMiwgMTI4LCA1NCwgCisgICAgMjQ1LCAxOTQsIDI0MCwgMjExLCAyMjIsIDEyOCwgNTQsIDIyOCwgMjAxLCAyNDAsIDIxMSwgMjIyLCAxMjgsIDI0NCwgMywgCisgICAgMTIzLCAyNDIsIDI4LCAyMjIsIDEyOCwgMjQ0LCAzLCAxMjMsIDIyNCwgMjIsIDIyMiwgMTI4LCAyNDQsIDMsIDEyMywgMjE2LCAKKyAgICAxNjksIDIyMiwgMTI4LCAyNDQsIDMsIDExMywgMjE2LCAxNjcsIDExOCwgNSwgMjUxLCAwLCAxMTgsIDUsIDI1NCwgNzYsIAorICAgIDExOCwgNSwgMjEzLCAxNDcsIDExOCwgNSwgMjM1LCAxMDMsIDExOCwgNSwgMjE0LCAxNjEsIDExOCwgMSwgNjEsIDExOCwgMSwgCisgICAgMjU1LCA3NCwgMTE4LCAxLCA3MywgMTE4LCAxLCAyMzYsIDM0LCAxMTgsIDEsIDcwLCAxMTgsIDEsIDIxNCwgMTE4LCAxMTgsIAorICAgIDEsIDE0OSwgMTUzLCAxMTgsIDEsIDE0OSwgMjIyLCAxODEsIDExOCwgMSwgMTQ5LCAxNTYsIDExOCwgMSwgMTQ5LCAyMzIsIAorICAgIDE4NiwgMTE4LCAxLCA3NSwgMTE4LCAxLCAyNTQsIDIwMiwgMTE4LCAxLCA3NiwgMTE4LCAxLCAyNTMsIDE5MywgMTE4LCAxLCAKKyAgICAxNzYsIDExOCwgMSwgMjM0LCAxMzMsIDExOCwgMSwgMjQzLCAxMzYsIDExOCwgMSwgMjQyLCAyNTAsIDExOCwgMSwgMjI5LCAKKyAgICA3OCwgMTE4LCAxLCAyNTEsIDM0LCAxMTgsIDEsIDI1MCwgMTU4LCAxMTgsIDEsIDIzNSwgMTQyLCAxMTgsIDEsIDIzNSwgCisgICAgMTE1LCAxMTgsIDEsIDIyNywgMTY2LCAxMTgsIDEsIDIxNSwgMTU3LCAxMTgsIDEsIDIxNSwgMTQ1LCAxMTgsIDEsIDI0OCwgCisgICAgMTM2LCAxMTgsIDEsIDI0OCwgMTIwLCAxMTgsIDEsIDIyOCwgMTExLCAxMTgsIDEsIDIxNywgMTA2LCAxMTgsIDEsIDIxNiwgCisgICAgMjA5LCAxMTgsIDEsIDI0OCwgMjIyLCAxMTgsIDEsIDI0OCwgMjYsIDExOCwgMSwgMTk3LCAxMTgsIDEsIDE5MCwgMTE4LCAxLCAKKyAgICAyMjUsIDE0OCwgMTE4LCAxLCAyNTIsIDE5MiwgMTE4LCAxLCAyNTIsIDE5LCAxMTgsIDEsIDE4NSwgMTE4LCAxLCAxOTEsIAorICAgIDExOCwgMSwgMjA1LCAxMTgsIDEsIDIzMywgMTM2LCAxMTgsIDEsIDIxNCwgMjcsIDExOCwgMSwgMjIwLCAxMDMsIDExOCwgMSwgCisgICAgMjE4LCAyMjQsIDExOCwgMSwgMjA2LCAxMTgsIDEsIDE2MiwgMTE4LCAxLCAyMzIsIDE4NSwgMTE4LCAxLCA1NSwgMzYsIAorICAgIDIzMiwgMTc2LCAxMTgsIDEsIDU1LCAzNiwgMjIyLCAxODAsIDExOCwgMSwgNTUsIDM2LCAyMjgsIDkzLCAxMTgsIDI1LCA1LCAKKyAgICAyNTUsIDc0LCAxMTgsIDI1LCA1LCAyNTIsIDE2LCAyNTUsIDc0LCAxMTgsIDI1LCA1LCA3MywgMTE4LCAyNSwgNSwgMjM2LCAKKyAgICAzNCwgMTE4LCAyNSwgNSwgNzAsIDExOCwgMjUsIDUsIDIxNCwgMTE4LCAxMTgsIDI1LCA1LCAxNDksIDE1MywgMTE4LCAyNSwgCisgICAgNSwgMTQ5LCAyMjIsIDE4MSwgMTE4LCAyNSwgNSwgMTQ5LCAxNTYsIDExOCwgMjUsIDUsIDE0OSwgMjMyLCAxODYsIDExOCwgCisgICAgMjUsIDUsIDc1LCAxMTgsIDI1LCA1LCAyNTQsIDIwMiwgMTE4LCAyNSwgNSwgNzYsIDExOCwgMjUsIDUsIDI1MywgMTkzLCAKKyAgICAxMTgsIDIxMywgMTUyLCAxMTgsIDI0OCwgMTc5LCAxMTgsIDUyLCAyNDgsIDE3OSwgMTE4LCAyMjQsIDE0MiwgMjQ3LCAxMjEsIAorICAgIDExOCwgMjI0LCAxNDIsIDUyLCAyNDcsIDEyMSwgMTE4LCAyMjQsIDE0MiwgMjMyLCAyMTQsIDExOCwgMjI0LCAxNDIsIDI0OSwgCisgICAgMTM4LCAxMzAsIDExOCwgMjI0LCAxNDIsIDIzMiwgMTE2LCAxMTgsIDU0LCAxMTAsIDExOCwgNTQsIDEwNSwgMTE4LCA1NCwgCiAgICAgMTU4LCAxMTgsIDU0LCAxNjEsIDExOCwgNTQsIDE4OSwgMTE4LCA1NCwgMTk0LCAxMTgsIDU0LCAxOTgsIDExOCwgNTQsIAotICAgIDE5NSwgMTE4LCA1NCwgMjAwLCAxMTgsIDU0LCAyMTYsIDI0NywgMTE4LCA1NCwgMjE1LCA3MywgMTE4LCA1NCwgMjE2LCAKLSAgICAxNjIsIDExOCwgNTQsIDI0NCwgMTUsIDExOCwgNTQsIDI0NCwgMTE0LCAxMTgsIDU0LCAyMTksIDExMSwgMTE4LCA1NCwgCi0gICAgMjIwLCAxMTYsIDExOCwgNTQsIDI0NSwgMTg0LCAxMTgsIDU0LCAyMjgsIDE5NSwgMTE4LCA1NCwgMTIzLCAyNDAsIDIxMCwgCi0gICAgMTE4LCA1NCwgMTIzLCAyMTYsIDE0NywgMTE4LCAyMSwgMjEwLCA4NiwgMTE4LCAyMSwgMTEwLCAxMTgsIDIxLCAxMDUsIAorICAgIDE5NSwgMTE4LCA1NCwgMjAwLCAxMTgsIDU0LCAyMTYsIDI0OCwgMTE4LCA1NCwgMjE1LCA3MywgMTE4LCA1NCwgMjE2LCAKKyAgICAxNjMsIDExOCwgNTQsIDI0NCwgMTYsIDExOCwgNTQsIDI0NCwgMTE1LCAxMTgsIDU0LCAyMTksIDExMiwgMTE4LCA1NCwgCisgICAgMjIwLCAxMTcsIDExOCwgNTQsIDI0NSwgMTg1LCAxMTgsIDU0LCAyMjgsIDE5NiwgMTE4LCA1NCwgMTIzLCAyNDAsIDIxMSwgCisgICAgMTE4LCA1NCwgMTIzLCAyMTYsIDE0OCwgMTE4LCAyMSwgMjEwLCA4NiwgMTE4LCAyMSwgMTEwLCAxMTgsIDIxLCAxMDUsIAogICAgIDExOCwgMjEsIDE1OCwgMTE4LCAyMSwgMTYxLCAxMTgsIDIxLCAxODksIDExOCwgMjEsIDE5NCwgMTE4LCAyMSwgMTk4LCAKLSAgICAxMTgsIDIxLCAxOTUsIDExOCwgMjEsIDIwMCwgMjM0LCAyNDQsIDUsIDI1MCwgMjU1LCAyMzQsIDI0NCwgNSwgMjU0LCA3NSwgCi0gICAgMjM0LCAyNDQsIDUsIDIxMywgMTQ3LCAyMzQsIDI0NCwgMSwgNjEsIDIzNCwgMjQ0LCAxLCAyNTUsIDczLCAyMzQsIDI0NCwgCi0gICAgMSwgNzMsIDIzNCwgMjQ0LCAxLCAyMzYsIDMzLCAyMzQsIDI0NCwgMSwgNzAsIDIzNCwgMjQ0LCAxLCAyMTQsIDExOCwgMjM0LCAKLSAgICAyNDQsIDEsIDc1LCAyMzQsIDI0NCwgMSwgMjU0LCAyMDEsIDIzNCwgMjQ0LCAxLCA3NiwgMjM0LCAyNDQsIDEsIDI1MywgCi0gICAgMTkyLCAyMzQsIDI0NCwgMSwgMTc2LCAyMzQsIDI0NCwgMSwgMjM0LCAxMzIsIDIzNCwgMjQ0LCAxLCAyNDMsIDEzNSwgMjM0LCAKLSAgICAyNDQsIDEsIDI0MiwgMjQ5LCAyMzQsIDI0NCwgMSwgMjI5LCA3NywgMjM0LCAyNDQsIDEsIDI1MSwgMzMsIDIzNCwgMjQ0LCAKLSAgICAxLCAyNTAsIDE1NywgMjM0LCAyNDQsIDEsIDIzNSwgMTQxLCAyMzQsIDI0NCwgMSwgMjM1LCAxMTQsIDIzNCwgMjQ0LCAxLCAKLSAgICAyMjcsIDE2NSwgMjM0LCAyNDQsIDEsIDIxNSwgMTU2LCAyMzQsIDI0NCwgMSwgMjE1LCAxNDQsIDIzNCwgMjQ0LCAxLCAyNDgsIAotICAgIDEzNSwgMjM0LCAyNDQsIDEsIDI0OCwgMTI0LCAyMzQsIDI0NCwgMSwgMjQ4LCAxMTksIDIzNCwgMjQ0LCAxLCAyMjMsIDM5LCAKLSAgICAyMzQsIDI0NCwgMSwgMjI4LCAxMTAsIDIzNCwgMjQ0LCAxLCAyMTcsIDEwNSwgMjM0LCAyNDQsIDEsIDIxNiwgMjA4LCAyMzQsIAotICAgIDI0NCwgMSwgMjQ4LCAyMjEsIDIzNCwgMjQ0LCAxLCAyNDgsIDI1LCAyMzQsIDI0NCwgMSwgMTk3LCAyMzQsIDI0NCwgMSwgCi0gICAgMTkwLCAyMzQsIDI0NCwgMSwgMjI1LCAxNDcsIDIzNCwgMjQ0LCAxLCAyNTIsIDE5MSwgMjM0LCAyNDQsIDEsIDI1MiwgMTgsIAotICAgIDIzNCwgMjQ0LCAxLCAxODQsIDIzNCwgMjQ0LCAxLCAxOTEsIDIzNCwgMjQ0LCAxLCAyMDUsIDIzNCwgMjQ0LCAxLCAyMzMsIAotICAgIDEzNSwgMjM0LCAyNDQsIDEsIDIxNCwgMjcsIDIzNCwgMjQ0LCAxLCAyMjAsIDEwMiwgMjM0LCAyNDQsIDEsIDIxOCwgMjIzLCAKLSAgICAyMzQsIDI0NCwgMSwgMjA2LCAyMzQsIDI0NCwgMSwgMTYyLCAyMzQsIDI0NCwgMjUsIDUsIDI1NSwgNzMsIDIzNCwgMjQ0LCAKLSAgICAyNSwgNSwgNzMsIDIzNCwgMjQ0LCAyNSwgNSwgMjM2LCAzMywgMjM0LCAyNDQsIDI1LCA1LCA3MCwgMjM0LCAyNDQsIDI1LCAKLSAgICA1LCAyMTQsIDExOCwgMjM0LCAyNDQsIDI1LCA1LCA3NSwgMjM0LCAyNDQsIDI1LCA1LCAyNTQsIDIwMSwgMjM0LCAyNDQsIAotICAgIDI1LCA1LCA3NiwgMjM0LCAyNDQsIDI1LCA1LCAyNTMsIDE5MiwgMjM0LCAyNDQsIDUsIDIxMywgMTUyLCAyMzQsIDI0NCwgNSwgCi0gICAgMjI3LCAyMDUsIDIzNCwgMjQ0LCAyNTUsIDIxLCA1MCwgMjM0LCAyNDQsIDI0NSwgMTIxLCA1MCwgMjM0LCAyNDQsIDU0LCAKLSAgICA1MCwgMjM0LCAyNDQsIDIyMSwgMTczLCA3OCwgMjM0LCAyNDQsIDUyLCAyMjEsIDE3MywgNzgsIDIzNCwgMjQ0LCAyNDgsIAotICAgIDE3OCwgMjM0LCAyNDQsIDUyLCAyNDgsIDE3OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjIyLCAxOCwgMjE5LCAzNiwgMjE5LCAKLSAgICA0NCwgMSwgMjE3LCA4MCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjUyLCAxNjgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI1MSwgCi0gICAgMjMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0OCwgMjAzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDMsIDEyMCwgMjE5LCAKLSAgICAzNiwgMjE5LCA0NCwgMSwgMjMxLCAyMTAsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyOSwgNzQsIDIxOSwgMzYsIDIxOSwgNDQsIAotICAgIDEsIDIzMywgMTEyLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjksIDIxMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjE0LCAyNCwgCi0gICAgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI2LCA3MywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjExLCA4NCwgMjE5LCAzNiwgMjE5LCAKLSAgICA0NCwgMSwgMjIzLCAxNjgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0MiwgMzcsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzNCwgCi0gICAgMjQ4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzUsIDEzNiwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI3LCAxNjIsIDIxOSwgCi0gICAgMzYsIDIxOSwgNDQsIDEsIDI1NCwgMjA5LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDUsIDIwNywgMjE5LCAzNiwgMjE5LCAKLSAgICA0NCwgMSwgMjM2LCAzNCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjE0LCAyMDgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyNiwgCi0gICAgMjIyLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDUsIDE5NywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjMxLCAyMjMsIDIxOSwgCi0gICAgMzYsIDIxOSwgNDQsIDIxLCAyMTAsIDg2LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTEwLCAyMTksIDM2LCAyMTksIDQ0LCAKLSAgICAyMSwgMTA1LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTU4LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTYxLCAyMTksIDM2LCAKLSAgICAyMTksIDQ0LCAyMSwgMTg5LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTk0LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTk4LCAKLSAgICAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMTk1LCAyMTksIDM2LCAyMTksIDQ0LCAyMSwgMjAwLCAyNTAsIDE1MSwgNSwgMjUwLCAKLSAgICAyNTUsIDI1MCwgMTUxLCA1LCAyNTQsIDc1LCAyNTAsIDE1MSwgNSwgMjEzLCAxNDcsIDI1MCwgMTUxLCAxLCAyNTUsIDczLCAKLSAgICAyNTAsIDE1MSwgMSwgNzMsIDI1MCwgMTUxLCAxLCA3MCwgMjUwLCAxNTEsIDEsIDc1LCAyNTAsIDE1MSwgMSwgMjM1LCAxMCwgCi0gICAgMjUwLCAxNTEsIDEsIDIzNCwgMTMxLCAyNTAsIDE1MSwgMSwgMjQzLCAxMzIsIDI1MCwgMTUxLCAxLCAyNDIsIDI0OCwgMjUwLCAKLSAgICAxNTEsIDEsIDIyOSwgNzYsIDI1MCwgMTUxLCAxLCAyNTEsIDMyLCAyNTAsIDE1MSwgMSwgMjUwLCAxNTYsIDI1MCwgMTUxLCAKLSAgICAxLCAyMzUsIDE0MCwgMjUwLCAxNTEsIDEsIDIzNSwgMTEzLCAyNTAsIDE1MSwgMSwgMjI3LCAxNjQsIDI1MCwgMTUxLCAxLCAKLSAgICAyMTUsIDE1NSwgMjUwLCAxNTEsIDEsIDIxNSwgMTQzLCAyNTAsIDE1MSwgMSwgMjQ4LCAxMzQsIDI1MCwgMTUxLCAxLCAyNDgsIAotICAgIDExOCwgMjUwLCAxNTEsIDEsIDIyOCwgMTA5LCAyNTAsIDE1MSwgMSwgMjE3LCAxMDEsIDI1MCwgMTUxLCAxLCAyMTYsIDIwNywgCi0gICAgMjUwLCAxNTEsIDEsIDI0OCwgMjIwLCAyNTAsIDE1MSwgMSwgMjQ4LCAyNCwgMjUwLCAxNTEsIDEsIDIyOSwgMjI1LCAyNTAsIAotICAgIDE1MSwgMSwgMjI2LCA4OSwgMjUwLCAxNTEsIDEsIDIyNSwgMTQ2LCAyNTAsIDE1MSwgMSwgMjUyLCAxODksIDI1MCwgMTUxLCAKLSAgICAxLCAyNTIsIDE3LCAyNTAsIDE1MSwgMSwgMjMxLCAyMzcsIDI1MCwgMTUxLCAxLCAyMTAsIDE2NywgMjUwLCAxNTEsIDEsIAotICAgIDIxMSwgMTAzLCAyNTAsIDE1MSwgMSwgMjIzLCAxODQsIDI1MCwgMTUxLCAxLCAyMzMsIDEzNCwgMjUwLCAxNTEsIDEsIDIxMiwgCi0gICAgNjQsIDI1MCwgMTUxLCAxLCAyMjIsIDMxLCAyNTAsIDE1MSwgMSwgMjQyLCA0NiwgMjUwLCAxNTEsIDI1LCA1LCA2MSwgMjUwLCAKLSAgICAxNTEsIDI1LCA1LCA3MywgMjUwLCAxNTEsIDI1LCA1LCAyMzYsIDMzLCAyNTAsIDE1MSwgMjUsIDUsIDcwLCAyNTAsIDE1MSwgCi0gICAgMjUsIDUsIDIxNCwgMTE4LCAyNTAsIDE1MSwgMjUsIDUsIDc1LCAyNTAsIDE1MSwgMjUsIDUsIDI1NCwgMjAxLCAyNTAsIAotICAgIDE1MSwgMjUsIDUsIDc2LCAyNTAsIDE1MSwgMjUsIDUsIDI1MywgMTkyLCAyNTAsIDE1MSwgMjUsIDUsIDIyNiwgMjE5LCAKLSAgICAyNTAsIDE1MSwgMTQ0LCA3OCwgMjUwLCAxNTEsIDI1MywgMTkzLCA3OCwgMjUwLCAxNTEsIDIxMywgMTUyLCAyNTAsIDE1MSwgCi0gICAgMjMxLCAyMzUsIDI1MCwgMTUxLCAyMSwgMjEwLCA4NiwgMjUwLCAxNTEsIDIxLCAxMTAsIDI1MCwgMTUxLCAyMSwgMTA1LCAKLSAgICAyNTAsIDE1MSwgMjEsIDE1OCwgMjUwLCAxNTEsIDIxLCAxNjEsIDI1MCwgMTUxLCAyMSwgMTg5LCAyNTAsIDE1MSwgMjEsIAotICAgIDE5NCwgMjUwLCAxNTEsIDIxLCAxOTgsIDI1MCwgMTUxLCAyMSwgMTk1LCAyNTAsIDE1MSwgMjEsIDIwMCwgMjUwLCAxNTEsIAotICAgIDIyMSwgMTczLCA3OCwgMjUwLCAxNTEsIDI0OCwgMTc4LCAyNTAsIDE1MSwgNTIsIDI0OCwgMTc4LCAyNTAsIDE1MSwgMjI0LCAKLSAgICAxMywgNzgsIDE3NCwgNSwgMjUwLCAyNTUsIDE3NCwgNSwgMjU0LCA3NSwgMTc0LCA1LCAyMTMsIDE0NywgMTc0LCAxLCA2MSwgCi0gICAgMTc0LCAxLCAyNTUsIDczLCAxNzQsIDEsIDczLCAxNzQsIDEsIDIzNiwgMzMsIDE3NCwgMSwgNzAsIDE3NCwgMSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMSwgMTQ5LCAxNTMsIDE3NCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTc0LCAxLCAxNDksIDE1NiwgMTc0LCAxLCAKLSAgICAxNDksIDIzMiwgMTg1LCAxNzQsIDEsIDc1LCAxNzQsIDEsIDI1NCwgMjAxLCAxNzQsIDEsIDc2LCAxNzQsIDEsIDI1MywgCi0gICAgMTkyLCAxNzQsIDEsIDE3NiwgMTc0LCAxLCAyMzQsIDEzMiwgMTc0LCAxLCAyNDMsIDEzNSwgMTc0LCAxLCAyNDIsIDI0OSwgCi0gICAgMTc0LCAxLCAyMjksIDc3LCAxNzQsIDEsIDI1MSwgMzMsIDE3NCwgMSwgMjUwLCAxNTcsIDE3NCwgMSwgMjM1LCAxNDEsIAotICAgIDE3NCwgMSwgMjM1LCAxMTQsIDE3NCwgMSwgMjI3LCAxNjUsIDE3NCwgMSwgMjE1LCAxNTYsIDE3NCwgMSwgMjE1LCAxNDQsIAotICAgIDE3NCwgMSwgMjQ4LCAxMzUsIDE3NCwgMSwgMjQ4LCAxMTksIDE3NCwgMSwgMjI4LCAxMTAsIDE3NCwgMSwgMjE3LCAxMDUsIAotICAgIDE3NCwgMSwgMjE2LCAyMDgsIDE3NCwgMSwgMjQ4LCAyMjEsIDE3NCwgMSwgMjQ4LCAyNSwgMTc0LCAxLCAxOTcsIDE3NCwgMSwgCi0gICAgMTkwLCAxNzQsIDEsIDIyNSwgMTQ3LCAxNzQsIDEsIDI1MiwgMTkxLCAxNzQsIDEsIDI1MiwgMTgsIDE3NCwgMSwgMTg0LCAKLSAgICAxNzQsIDEsIDE5MSwgMTc0LCAxLCAyMDUsIDE3NCwgMSwgMjMzLCAxMzUsIDE3NCwgMSwgMjMyLCAxODQsIDE3NCwgMSwgCi0gICAgMjE0LCAyNywgMTc0LCAxLCAyMjAsIDEwMiwgMTc0LCAxLCAyMTgsIDIyMywgMTc0LCAxLCAyMDYsIDE3NCwgMSwgMTYyLCAKLSAgICAxNzQsIDI1LCA1LCAyNTUsIDczLCAxNzQsIDI1LCA1LCA3MywgMTc0LCAyNSwgNSwgMjM2LCAzMywgMTc0LCAyNSwgNSwgNzAsIAotICAgIDE3NCwgMjUsIDUsIDIxNCwgMTE4LCAxNzQsIDI1LCA1LCAxNDksIDE1MywgMTc0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgCi0gICAgMTc0LCAyNSwgNSwgMTQ5LCAxNTYsIDE3NCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3NCwgMjUsIDUsIDc1LCAxNzQsIDI1LCAKLSAgICA1LCAyNTQsIDIwMSwgMTc0LCAyNSwgNSwgNzYsIDE3NCwgMjUsIDUsIDI1MywgMTkyLCAxNzQsIDUsIDIxMywgMTUyLCAxNzQsIAotICAgIDUsIDI1MywgMTc1LCAxNzQsIDUsIDIzNSwgMTAyLCAxNzQsIDUsIDIxNCwgMTYxLCAxNzQsIDIyNiwgMjA0LCAxNzQsIDI0OCwgCi0gICAgMTc4LCAxNzQsIDUyLCAyNDgsIDE3OCwgMTc0LCAyNTUsIDIxLCA1MCwgMTc0LCAyMjAsIDEzNywgMTc0LCAyMSwgMjEwLCAKKyAgICAxMTgsIDIxLCAxOTUsIDExOCwgMjEsIDIwMCwgMjM0LCAyNDUsIDUsIDI1MSwgMCwgMjM0LCAyNDUsIDUsIDI1NCwgNzYsIAorICAgIDIzNCwgMjQ1LCA1LCAyMTMsIDE0NywgMjM0LCAyNDUsIDEsIDYxLCAyMzQsIDI0NSwgMSwgMjU1LCA3NCwgMjM0LCAyNDUsIAorICAgIDEsIDczLCAyMzQsIDI0NSwgMSwgMjM2LCAzNCwgMjM0LCAyNDUsIDEsIDcwLCAyMzQsIDI0NSwgMSwgMjE0LCAxMTgsIDIzNCwgCisgICAgMjQ1LCAxLCA3NSwgMjM0LCAyNDUsIDEsIDI1NCwgMjAyLCAyMzQsIDI0NSwgMSwgNzYsIDIzNCwgMjQ1LCAxLCAyNTMsIAorICAgIDE5MywgMjM0LCAyNDUsIDEsIDE3NiwgMjM0LCAyNDUsIDEsIDIzNCwgMTMzLCAyMzQsIDI0NSwgMSwgMjQzLCAxMzYsIDIzNCwgCisgICAgMjQ1LCAxLCAyNDIsIDI1MCwgMjM0LCAyNDUsIDEsIDIyOSwgNzgsIDIzNCwgMjQ1LCAxLCAyNTEsIDM0LCAyMzQsIDI0NSwgCisgICAgMSwgMjUwLCAxNTgsIDIzNCwgMjQ1LCAxLCAyMzUsIDE0MiwgMjM0LCAyNDUsIDEsIDIzNSwgMTE1LCAyMzQsIDI0NSwgMSwgCisgICAgMjI3LCAxNjYsIDIzNCwgMjQ1LCAxLCAyMTUsIDE1NywgMjM0LCAyNDUsIDEsIDIxNSwgMTQ1LCAyMzQsIDI0NSwgMSwgMjQ4LCAKKyAgICAxMzYsIDIzNCwgMjQ1LCAxLCAyNDgsIDEyNSwgMjM0LCAyNDUsIDEsIDI0OCwgMTIwLCAyMzQsIDI0NSwgMSwgMjIzLCA0MCwgCisgICAgMjM0LCAyNDUsIDEsIDIyOCwgMTExLCAyMzQsIDI0NSwgMSwgMjE3LCAxMDYsIDIzNCwgMjQ1LCAxLCAyMTYsIDIwOSwgMjM0LCAKKyAgICAyNDUsIDEsIDI0OCwgMjIyLCAyMzQsIDI0NSwgMSwgMjQ4LCAyNiwgMjM0LCAyNDUsIDEsIDE5NywgMjM0LCAyNDUsIDEsIAorICAgIDE5MCwgMjM0LCAyNDUsIDEsIDIyNSwgMTQ4LCAyMzQsIDI0NSwgMSwgMjUyLCAxOTIsIDIzNCwgMjQ1LCAxLCAyNTIsIDE5LCAKKyAgICAyMzQsIDI0NSwgMSwgMTg1LCAyMzQsIDI0NSwgMSwgMTkxLCAyMzQsIDI0NSwgMSwgMjA1LCAyMzQsIDI0NSwgMSwgMjMzLCAKKyAgICAxMzYsIDIzNCwgMjQ1LCAxLCAyMTQsIDI3LCAyMzQsIDI0NSwgMSwgMjIwLCAxMDMsIDIzNCwgMjQ1LCAxLCAyMTgsIDIyNCwgCisgICAgMjM0LCAyNDUsIDEsIDIwNiwgMjM0LCAyNDUsIDEsIDE2MiwgMjM0LCAyNDUsIDI1LCA1LCAyNTUsIDc0LCAyMzQsIDI0NSwgCisgICAgMjUsIDUsIDczLCAyMzQsIDI0NSwgMjUsIDUsIDIzNiwgMzQsIDIzNCwgMjQ1LCAyNSwgNSwgNzAsIDIzNCwgMjQ1LCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDIzNCwgMjQ1LCAyNSwgNSwgNzUsIDIzNCwgMjQ1LCAyNSwgNSwgMjU0LCAyMDIsIDIzNCwgMjQ1LCAKKyAgICAyNSwgNSwgNzYsIDIzNCwgMjQ1LCAyNSwgNSwgMjUzLCAxOTMsIDIzNCwgMjQ1LCA1LCAyMTMsIDE1MiwgMjM0LCAyNDUsIDUsIAorICAgIDIyNywgMjA2LCAyMzQsIDI0NSwgMjU1LCAyMiwgNTAsIDIzNCwgMjQ1LCAyNDUsIDEyMiwgNTAsIDIzNCwgMjQ1LCA1NCwgCisgICAgNTAsIDIzNCwgMjQ1LCAyMjEsIDE3NCwgNzgsIDIzNCwgMjQ1LCA1MiwgMjIxLCAxNzQsIDc4LCAyMzQsIDI0NSwgMjQ4LCAKKyAgICAxNzksIDIzNCwgMjQ1LCA1MiwgMjQ4LCAxNzksIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIyMiwgMTksIDIxOSwgMzcsIDIxOSwgCisgICAgNDUsIDEsIDIxNywgODEsIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDI1MiwgMTY5LCAyMTksIDM3LCAyMTksIDQ1LCAxLCAyNTEsIAorICAgIDI0LCAyMTksIDM3LCAyMTksIDQ1LCAxLCAyNDgsIDIwNCwgMjE5LCAzNywgMjE5LCA0NSwgMSwgMjQzLCAxMjEsIDIxOSwgCisgICAgMzcsIDIxOSwgNDUsIDEsIDIzMSwgMjExLCAyMTksIDM3LCAyMTksIDQ1LCAxLCAyMjksIDc1LCAyMTksIDM3LCAyMTksIDQ1LCAKKyAgICAxLCAyMzMsIDExMywgMjE5LCAzNywgMjE5LCA0NSwgMSwgMjI5LCAyMTQsIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIxNCwgMjQsIAorICAgIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIyNiwgNzQsIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIxMSwgODQsIDIxOSwgMzcsIDIxOSwgCisgICAgNDUsIDEsIDIyMywgMTY5LCAyMTksIDM3LCAyMTksIDQ1LCAxLCAyNDIsIDM4LCAyMTksIDM3LCAyMTksIDQ1LCAxLCAyMzQsIAorICAgIDI0OSwgMjE5LCAzNywgMjE5LCA0NSwgMSwgMjM1LCAxMzcsIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIyNywgMTYzLCAyMTksIAorICAgIDM3LCAyMTksIDQ1LCAxLCAyNTQsIDIxMCwgMjE5LCAzNywgMjE5LCA0NSwgMSwgMjQ1LCAyMDgsIDIxOSwgMzcsIDIxOSwgCisgICAgNDUsIDEsIDIzNiwgMzUsIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIxNCwgMjA4LCAyMTksIDM3LCAyMTksIDQ1LCAxLCAyMjYsIAorICAgIDIyMywgMjE5LCAzNywgMjE5LCA0NSwgMSwgMjQ1LCAxOTgsIDIxOSwgMzcsIDIxOSwgNDUsIDEsIDIzMSwgMjI0LCAyMTksIAorICAgIDM3LCAyMTksIDQ1LCAyMSwgMjEwLCA4NiwgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDExMCwgMjE5LCAzNywgMjE5LCA0NSwgCisgICAgMjEsIDEwNSwgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDE1OCwgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDE2MSwgMjE5LCAzNywgCisgICAgMjE5LCA0NSwgMjEsIDE4OSwgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDE5NCwgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDE5OCwgCisgICAgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDE5NSwgMjE5LCAzNywgMjE5LCA0NSwgMjEsIDIwMCwgMjUwLCAxNTIsIDUsIDI1MSwgCisgICAgMCwgMjUwLCAxNTIsIDUsIDI1NCwgNzYsIDI1MCwgMTUyLCA1LCAyMTMsIDE0NywgMjUwLCAxNTIsIDEsIDI1NSwgNzQsIAorICAgIDI1MCwgMTUyLCAxLCA3MywgMjUwLCAxNTIsIDEsIDcwLCAyNTAsIDE1MiwgMSwgNzUsIDI1MCwgMTUyLCAxLCAyMzUsIDExLCAKKyAgICAyNTAsIDE1MiwgMSwgMjM0LCAxMzIsIDI1MCwgMTUyLCAxLCAyNDMsIDEzMywgMjUwLCAxNTIsIDEsIDI0MiwgMjQ5LCAyNTAsIAorICAgIDE1MiwgMSwgMjI5LCA3NywgMjUwLCAxNTIsIDEsIDI1MSwgMzMsIDI1MCwgMTUyLCAxLCAyNTAsIDE1NywgMjUwLCAxNTIsIAorICAgIDEsIDIzNSwgMTQxLCAyNTAsIDE1MiwgMSwgMjM1LCAxMTQsIDI1MCwgMTUyLCAxLCAyMjcsIDE2NSwgMjUwLCAxNTIsIDEsIAorICAgIDIxNSwgMTU2LCAyNTAsIDE1MiwgMSwgMjE1LCAxNDQsIDI1MCwgMTUyLCAxLCAyNDgsIDEzNSwgMjUwLCAxNTIsIDEsIDI0OCwgCisgICAgMTE5LCAyNTAsIDE1MiwgMSwgMjI4LCAxMTAsIDI1MCwgMTUyLCAxLCAyMTcsIDEwMiwgMjUwLCAxNTIsIDEsIDIxNiwgMjA4LCAKKyAgICAyNTAsIDE1MiwgMSwgMjQ4LCAyMjEsIDI1MCwgMTUyLCAxLCAyNDgsIDI1LCAyNTAsIDE1MiwgMSwgMjI5LCAyMjYsIDI1MCwgCisgICAgMTUyLCAxLCAyMjYsIDkwLCAyNTAsIDE1MiwgMSwgMjI1LCAxNDcsIDI1MCwgMTUyLCAxLCAyNTIsIDE5MCwgMjUwLCAxNTIsIAorICAgIDEsIDI1MiwgMTgsIDI1MCwgMTUyLCAxLCAyMzEsIDIzOCwgMjUwLCAxNTIsIDEsIDIxMCwgMTY3LCAyNTAsIDE1MiwgMSwgCisgICAgMjExLCAxMDMsIDI1MCwgMTUyLCAxLCAyMjMsIDE4NSwgMjUwLCAxNTIsIDEsIDIzMywgMTM1LCAyNTAsIDE1MiwgMSwgMjEyLCAKKyAgICA2NCwgMjUwLCAxNTIsIDEsIDIyMiwgMzIsIDI1MCwgMTUyLCAxLCAyNDIsIDQ3LCAyNTAsIDE1MiwgMjUsIDUsIDYxLCAyNTAsIAorICAgIDE1MiwgMjUsIDUsIDczLCAyNTAsIDE1MiwgMjUsIDUsIDIzNiwgMzQsIDI1MCwgMTUyLCAyNSwgNSwgNzAsIDI1MCwgMTUyLCAKKyAgICAyNSwgNSwgMjE0LCAxMTgsIDI1MCwgMTUyLCAyNSwgNSwgNzUsIDI1MCwgMTUyLCAyNSwgNSwgMjU0LCAyMDIsIDI1MCwgCisgICAgMTUyLCAyNSwgNSwgNzYsIDI1MCwgMTUyLCAyNSwgNSwgMjUzLCAxOTMsIDI1MCwgMTUyLCAyNSwgNSwgMjI2LCAyMjAsIAorICAgIDI1MCwgMTUyLCAxNDQsIDc4LCAyNTAsIDE1MiwgMjUzLCAxOTQsIDc4LCAyNTAsIDE1MiwgMjEzLCAxNTIsIDI1MCwgMTUyLCAKKyAgICAyMzEsIDIzNiwgMjUwLCAxNTIsIDIxLCAyMTAsIDg2LCAyNTAsIDE1MiwgMjEsIDExMCwgMjUwLCAxNTIsIDIxLCAxMDUsIAorICAgIDI1MCwgMTUyLCAyMSwgMTU4LCAyNTAsIDE1MiwgMjEsIDE2MSwgMjUwLCAxNTIsIDIxLCAxODksIDI1MCwgMTUyLCAyMSwgCisgICAgMTk0LCAyNTAsIDE1MiwgMjEsIDE5OCwgMjUwLCAxNTIsIDIxLCAxOTUsIDI1MCwgMTUyLCAyMSwgMjAwLCAyNTAsIDE1MiwgCisgICAgMjIxLCAxNzQsIDc4LCAyNTAsIDE1MiwgMjQ4LCAxNzksIDI1MCwgMTUyLCA1MiwgMjQ4LCAxNzksIDI1MCwgMTUyLCAyMjQsIAorICAgIDE0LCA3OCwgMTc0LCA1LCAyNTEsIDAsIDE3NCwgNSwgMjU0LCA3NiwgMTc0LCA1LCAyMTMsIDE0NywgMTc0LCAxLCA2MSwgCisgICAgMTc0LCAxLCAyNTUsIDc0LCAxNzQsIDEsIDczLCAxNzQsIDEsIDIzNiwgMzQsIDE3NCwgMSwgNzAsIDE3NCwgMSwgMjE0LCAKKyAgICAxMTgsIDE3NCwgMSwgMTQ5LCAxNTMsIDE3NCwgMSwgMTQ5LCAyMjIsIDE4MSwgMTc0LCAxLCAxNDksIDE1NiwgMTc0LCAxLCAKKyAgICAxNDksIDIzMiwgMTg2LCAxNzQsIDEsIDc1LCAxNzQsIDEsIDI1NCwgMjAyLCAxNzQsIDEsIDc2LCAxNzQsIDEsIDI1MywgCisgICAgMTkzLCAxNzQsIDEsIDE3NiwgMTc0LCAxLCAyMzQsIDEzMywgMTc0LCAxLCAyNDMsIDEzNiwgMTc0LCAxLCAyNDIsIDI1MCwgCisgICAgMTc0LCAxLCAyMjksIDc4LCAxNzQsIDEsIDI1MSwgMzQsIDE3NCwgMSwgMjUwLCAxNTgsIDE3NCwgMSwgMjM1LCAxNDIsIAorICAgIDE3NCwgMSwgMjM1LCAxMTUsIDE3NCwgMSwgMjI3LCAxNjYsIDE3NCwgMSwgMjE1LCAxNTcsIDE3NCwgMSwgMjE1LCAxNDUsIAorICAgIDE3NCwgMSwgMjQ4LCAxMzYsIDE3NCwgMSwgMjQ4LCAxMjAsIDE3NCwgMSwgMjI4LCAxMTEsIDE3NCwgMSwgMjE3LCAxMDYsIAorICAgIDE3NCwgMSwgMjE2LCAyMDksIDE3NCwgMSwgMjQ4LCAyMjIsIDE3NCwgMSwgMjQ4LCAyNiwgMTc0LCAxLCAxOTcsIDE3NCwgMSwgCisgICAgMTkwLCAxNzQsIDEsIDIyNSwgMTQ4LCAxNzQsIDEsIDI1MiwgMTkyLCAxNzQsIDEsIDI1MiwgMTksIDE3NCwgMSwgMTg1LCAKKyAgICAxNzQsIDEsIDE5MSwgMTc0LCAxLCAyMDUsIDE3NCwgMSwgMjMzLCAxMzYsIDE3NCwgMSwgMjMyLCAxODUsIDE3NCwgMSwgCisgICAgMjE0LCAyNywgMTc0LCAxLCAyMjAsIDEwMywgMTc0LCAxLCAyMTgsIDIyNCwgMTc0LCAxLCAyMDYsIDE3NCwgMSwgMTYyLCAKKyAgICAxNzQsIDI1LCA1LCAyNTUsIDc0LCAxNzQsIDI1LCA1LCA3MywgMTc0LCAyNSwgNSwgMjM2LCAzNCwgMTc0LCAyNSwgNSwgNzAsIAorICAgIDE3NCwgMjUsIDUsIDIxNCwgMTE4LCAxNzQsIDI1LCA1LCAxNDksIDE1MywgMTc0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MSwgCisgICAgMTc0LCAyNSwgNSwgMTQ5LCAxNTYsIDE3NCwgMjUsIDUsIDE0OSwgMjMyLCAxODYsIDE3NCwgMjUsIDUsIDc1LCAxNzQsIDI1LCAKKyAgICA1LCAyNTQsIDIwMiwgMTc0LCAyNSwgNSwgNzYsIDE3NCwgMjUsIDUsIDI1MywgMTkzLCAxNzQsIDUsIDIxMywgMTUyLCAxNzQsIAorICAgIDUsIDI1MywgMTc2LCAxNzQsIDUsIDIzNSwgMTAzLCAxNzQsIDUsIDIxNCwgMTYxLCAxNzQsIDIyNiwgMjA1LCAxNzQsIDI0OCwgCisgICAgMTc5LCAxNzQsIDUyLCAyNDgsIDE3OSwgMTc0LCAyNTUsIDIyLCA1MCwgMTc0LCAyMjAsIDEzOCwgMTc0LCAyMSwgMjEwLCAKICAgICA4NiwgMTc0LCAyMSwgMTEwLCAxNzQsIDIxLCAxMDUsIDE3NCwgMjEsIDE1OCwgMTc0LCAyMSwgMTYxLCAxNzQsIDIxLCAxODksIAotICAgIDE3NCwgMjEsIDE5NCwgMTc0LCAyMSwgMTk4LCAxNzQsIDIxLCAxOTUsIDE3NCwgMjEsIDIwMCwgMjE3LCA2OSwgMSwgNjEsIAotICAgIDIxNywgNjksIDEsIDI1NSwgNzMsIDIxNywgNjksIDEsIDczLCAyMTcsIDY5LCAxLCAyMzYsIDMzLCAyMTcsIDY5LCAxLCA3MCwgCi0gICAgMjE3LCA2OSwgMSwgMjE0LCAxMTgsIDIxNywgNjksIDEsIDc1LCAyMTcsIDY5LCAxLCAyNTQsIDIwMSwgMjE3LCA2OSwgMSwgCi0gICAgNzYsIDIxNywgNjksIDEsIDI1MywgMTkyLCAyMTcsIDY5LCAxLCAxNzYsIDIxNywgNjksIDEsIDIzNCwgMTMyLCAyMTcsIDY5LCAKLSAgICAxLCAyNDMsIDEzNSwgMjE3LCA2OSwgMSwgMjQyLCAyNDksIDIxNywgNjksIDEsIDIyOSwgNzcsIDIxNywgNjksIDEsIDI1MSwgCi0gICAgMzMsIDIxNywgNjksIDEsIDI1MCwgMTU3LCAyMTcsIDY5LCAxLCAyMzUsIDE0MSwgMjE3LCA2OSwgMSwgMjM1LCAxMTQsIAotICAgIDIxNywgNjksIDEsIDIyNywgMTY1LCAyMTcsIDY5LCAxLCAyMTUsIDE1NiwgMjE3LCA2OSwgMSwgMjE1LCAxNDQsIDIxNywgCi0gICAgNjksIDEsIDI0OCwgMTM1LCAyMTcsIDY5LCAxLCAyNDgsIDExOSwgMjE3LCA2OSwgMSwgMjI4LCAxMTAsIDIxNywgNjksIDEsIAotICAgIDIxNywgMTA1LCAyMTcsIDY5LCAxLCAyMTYsIDIwOCwgMjE3LCA2OSwgMSwgMjQ4LCAyMjEsIDIxNywgNjksIDEsIDI0OCwgCi0gICAgMjUsIDIxNywgNjksIDEsIDE5NywgMjE3LCA2OSwgMSwgMTkwLCAyMTcsIDY5LCAxLCAyMjUsIDE0NywgMjE3LCA2OSwgMSwgCi0gICAgMjUyLCAxOTEsIDIxNywgNjksIDEsIDI1MiwgMTgsIDIxNywgNjksIDEsIDE4NCwgMjE3LCA2OSwgMSwgMTkxLCAyMTcsIDY5LCAKLSAgICAxLCAyMDUsIDIxNywgNjksIDEsIDIzMywgMTM1LCAyMTcsIDY5LCAxLCAyMTQsIDI3LCAyMTcsIDY5LCAxLCAyMjAsIDEwMiwgCi0gICAgMjE3LCA2OSwgMSwgMjA2LCAyMTcsIDY5LCAxLCAxNjIsIDIxNywgNjksIDEsIDIyMiwgMTc5LCAyMTcsIDY5LCA1LCAyNTQsIAotICAgIDc1LCAyMTcsIDY5LCA1LCAyMTMsIDE0NywgMjE3LCA2OSwgMjUsIDUsIDI1NSwgNzMsIDIxNywgNjksIDI1LCA1LCA3MywgCi0gICAgMjE3LCA2OSwgMjUsIDUsIDIzNiwgMzMsIDIxNywgNjksIDI1LCA1LCA3MCwgMjE3LCA2OSwgMjUsIDUsIDIxNCwgMTE4LCAKLSAgICAyMTcsIDY5LCAyNSwgNSwgNzUsIDIxNywgNjksIDI1LCA1LCAyNTQsIDIwMSwgMjE3LCA2OSwgMjUsIDUsIDc2LCAyMTcsIAotICAgIDY5LCAyNSwgNSwgMjUzLCAxOTIsIDIxNywgNjksIDUsIDIxMywgMTUyLCAyMTcsIDY5LCA1LCAyMjcsIDIwNSwgMjE3LCA2OSwgCi0gICAgMjEsIDIxMCwgODYsIDIxNywgNjksIDIxLCAxMTAsIDIxNywgNjksIDIxLCAxMDUsIDIxNywgNjksIDIxLCAxNTgsIDIxNywgCi0gICAgNjksIDIxLCAxNjEsIDIxNywgNjksIDIxLCAxODksIDIxNywgNjksIDIxLCAxOTQsIDIxNywgNjksIDIxLCAxOTgsIDIxNywgCi0gICAgNjksIDIxLCAxOTUsIDIxNywgNjksIDIxLCAyMDAsIDE1LCA1LCA2MSwgMTUsIDUsIDExNSwgMzAsIDYxLCAxNSwgNSwgMTE1LCAKLSAgICAzMCwgMjUyLCAxNzYsIDE1LCA1LCAxMTUsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAxMTUsIDMwLCAxNjIsIAotICAgIDE1LCA1LCAxMTUsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMTE1LCAzMCwgMjMzLCAxMTYsIDI0MiwgOTQsIDE1LCA1LCAxMTUsIAotICAgIDMwLCAyMzAsIDYxLCAxNSwgNSwgMTE1LCAzMCwgMjIyLCAyMSwgMTUsIDUsIDI1NSwgNzUsIDE1LCA1LCAyNTUsIDI1LCAxNSwgCi0gICAgNSwgMjU1LCAyNiwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAKLSAgICAyNTUsIDI2LCAzMCwgMjQzLCAxMTgsIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgCi0gICAgMjU1LCAyNiwgMzAsIDE2MiwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjU1LCAyNiwgCi0gICAgMzAsIDIzNiwgOSwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyMzMsIDExNywgMTUsIDUsIDI1NSwgMjYsIDMwLCAyMjAsIDQ4LCAKLSAgICAxNSwgNSwgMjU1LCAyNiwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjU1LCAyNiwgMjQyLCA5NCwgMTUsIDUsIAotICAgIDI1NSwgMjMsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjQzLCAxMDUsIDIxNiwgCi0gICAgMjM5LCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyMjAsIAotICAgIDEwMCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjU0LCAyNTUsIDE1LCA1LCAyNTQsIDE4NiwgMTUsIAotICAgIDUsIDI1NCwgMTg3LCAzMCwgMjQ1LCA4NywgMTUsIDUsIDI1NCwgMTg3LCAzMCwgMjIwLCAxMCwgOTYsIDI0MiwgMTkwLCAxNSwgCi0gICAgNSwgMjU0LCAxNzgsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNDcsIAotICAgIDIxNiwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjQyLCAxOTAsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDE2MiwgMTUsIDUsIDI1NCwgCi0gICAgMTc5LCAzMCwgMjM0LCAyNTUsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIAotICAgIDIyMCwgNjMsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjU0LCAxNzUsIDE1LCA1LCAyNTQsIDE2OCwgCi0gICAgMTUsIDUsIDI1NCwgMTMyLCAxNSwgNSwgMjU0LCAxMzMsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjU0LCAxMjMsIDE1LCA1LCAKLSAgICAyNTQsIDEyNCwgMTE3LCAyNTQsIDEyMywgMTUsIDUsIDI1NCwgMTI0LCAxMzQsIDIxNiwgODUsIDE1LCA1LCAyNTQsIDEyNCwgCi0gICAgOTYsIDIyOSwgMjE3LCAyMjYsIDE2NCwgMjU0LCAxMjQsIDk2LCAyMjksIDIxNiwgMTUsIDUsIDI1NCwgMTI0LCA5NiwgMjI5LCAKLSAgICAyMTcsIDIxOCwgMjMzLCAxNSwgNSwgMjU0LCA5NCwgMTUsIDUsIDI1NCwgNjcsIDE1LCA1LCAyNTQsIDM1LCAxNSwgNSwgCi0gICAgMjU0LCAzNiwgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjU0LCA4LCAxNSwgNSwgMjUzLCAyMzYsIDE1LCA1LCAyNTMsIDIzMSwgCi0gICAgMTUsIDUsIDI1MywgMjMyLCAyMTAsIDQwLCAyMTYsIDIzOSwgMTUsIDUsIDI1MywgMjMyLCAyMzUsIDMsIDIxNiwgMjM5LCAKLSAgICAxNSwgNSwgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDIxNSwgMTE0LCAxMTcsIDIxNSwgMTE0LCAyMTUsIDExNCwgMTE3LCAKLSAgICAyMTUsIDExNCwgMjI2LCAyMSwgMTUsIDUsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMxLCAxNSwgNSwgCi0gICAgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDI0OSwgMTI1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIAotICAgIDIzMiwgMTE3LCAyNTMsIDIzMSwgMTUsIDUsIDI1MywgMjI5LCAxNSwgNSwgMjUzLCAyMjYsIDE1LCA1LCAyNTIsIDE5MSwgCi0gICAgMTUsIDUsIDI1MiwgMTc2LCAxNSwgNSwgMjUyLCAxNzEsIDE1LCA1LCAyNTIsIDE2NywgMTUsIDUsIDI1MiwgMTYxLCAxNSwgCi0gICAgNSwgMjUyLCAxNjIsIDExNywgMjUyLCAxNjEsIDE1LCA1LCAyNTIsIDE2MCwgMTUsIDUsIDEzMCwgMTUsIDUsIDI1MiwgMTQwLCAKLSAgICAxNSwgNSwgMjUyLCA2LCAxNSwgNSwgMjUyLCA3LCAzMCwgNjEsIDE1LCA1LCAyNTIsIDcsIDMwLCAyNDMsIDk2LCAxNSwgNSwgCi0gICAgMjUyLCA3LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI1MSwgMTI1LCAxNSwgNSwgMjUxLCAxMjYsIDExNywgMjUxLCAKLSAgICAxMjYsIDI1NSwgMjUsIDE1LCA1LCAyNTEsIDEyNiwgMTE3LCAyNTEsIDEyNiwgMjE0LCAxOTAsIDE1LCA1LCAyNTEsIDEyNiwgCi0gICAgMjQ5LCAxMjUsIDI1MSwgMTI1LCAxNSwgNSwgMjUxLCAxMDksIDE1LCA1LCAyNTEsIDExMCwgMTE3LCAyNTEsIDEwOSwgMTUsIAotICAgIDUsIDI1MSwgOTgsIDE1LCA1LCAyNTEsIDk3LCAxNSwgNSwgMjQ4LCAyMjEsIDE1LCA1LCAyNDgsIDIxMiwgMTUsIDUsIDI0OCwgCi0gICAgMjEzLCAyMzQsIDY2LCAzMCwgMTE1LCA5NiwgMjMxLCAxNDcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI1NCwgCi0gICAgMTMyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAKLSAgICAzMCwgMjUyLCA2LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIAotICAgIDY2LCAzMCwgMjQzLCAxMzYsIDk2LCAyMzEsIDE0NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQyLCAyMTQsIAotICAgIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAKLSAgICAyNDIsIDEwMywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMTYyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIAotICAgIDMwLCAyMzUsIDE3OSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjM1LCAxODAsIDk2LCAyMzIsIDk4LCAxNSwgNSwgCi0gICAgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMzLCAxMzUsIAotICAgIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMiwgOTgsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMiwgCi0gICAgOTksIDk2LCAyMzEsIDE0NiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCA4NCwgMTUsIDUsIDI0OCwgMjEzLCAKLSAgICAyMzQsIDY2LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIyNiwgMjIsIDk2LCAyMjYsIAotICAgIDIxLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTksIDE5MSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgCi0gICAgMjE3LCA3MiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjE0LCAyMzEsIDk2LCAyNDIsIDE5NywgMTUsIDUsIAotICAgIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNDgsIDE4NywgMTUsIDUsIDI0OCwgMTY2LCAxNSwgNSwgCi0gICAgMjQ4LCAxNjUsIDE1LCA1LCAyNDgsIDE2NCwgMTUsIDUsIDI0OCwgMywgMTUsIDUsIDI0NywgMjQyLCAxNSwgNSwgMjQ3LCAKLSAgICAyMTcsIDE1LCA1LCAyNDcsIDIxOCwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDcsIDIxNiwgMTUsIDUsIDI0NywgMjA2LCAxNSwgCi0gICAgNSwgMjQ3LCAyMDcsIDIzNCwgMjA4LCAxMDQsIDI0MiwgOTUsIDI0NywgMTg3LCAxNSwgNSwgMjQ3LCAxODcsIDE1LCA1LCAKLSAgICAyNDYsIDc4LCAxNSwgNSwgMjQ2LCA3OSwgMTE3LCAyNDYsIDc4LCAxNSwgNSwgMjQ2LCA3OSwgMjQyLCA5NCwgMTUsIDUsIAotICAgIDI0NiwgNzksIDIyMCwgNDUsIDE1LCA1LCAyNDYsIDc2LCAxNSwgNSwgMjQ2LCA3NywgMzAsIDI0NSwgNzIsIDE1LCA1LCAKLSAgICAyNDYsIDc1LCAxNSwgNSwgMjQ2LCA3NCwgMTUsIDUsIDI0NiwgNzMsIDE1LCA1LCAyNDYsIDcyLCAxNSwgNSwgMjQ2LCA2OCwgCi0gICAgMTUsIDUsIDI0NiwgNjYsIDE1LCA1LCAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgMjQ2LCA2NywgMjQyLCA5NSwgMjQyLCAKLSAgICA5NCwgMTUsIDUsIDI0NiwgNjUsIDE1LCA1LCAyNDYsIDU4LCAxNSwgNSwgNzUsIDE1LCA1LCAxNjAsIDMwLCAyMjYsIDIxLCAKLSAgICAxNSwgNSwgMTYwLCAxMTcsIDE2MCwgMjI3LCAxOTUsIDExNywgMjI3LCAxOTQsIDE1LCA1LCAyNDUsIDIzNCwgMTUsIDUsIAotICAgIDI0NSwgMjM1LCAzMCwgMTE1LCA5NiwgMjQyLCA0OSwgOTYsIDI0OCwgMjIxLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyNDMsIAotICAgIDk2LCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDI0NSwgMjM1LCAzMCwgMjIyLCA4LCAxNSwgNSwgCi0gICAgMjQ1LCAyMzUsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCA3MCwgMTUsIDUsIDI0NSwgMjExLCAxNSwgNSwgCi0gICAgMjQ1LCAyMDAsIDE1LCA1LCAyNDUsIDE3NCwgMTUsIDUsIDI0NSwgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyNDMsIAotICAgIDEwNCwgMTUsIDUsIDI0NSwgMTUxLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyMzEsIAotICAgIDkxLCAxNSwgNSwgMjQ1LCAxNTEsIDI0OSwgMTI1LCAyNDUsIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAyMjYsIDE2NCwgMjQ1LCAKLSAgICAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMjE4LCAyMzMsIDE1LCA1LCAyNDUsIDg5LCAxNSwgNSwgMjQ1LCA4NywgMTUsIDUsIAotICAgIDI0NSwgNzIsIDE1LCA1LCAyNDUsIDEwLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDYxLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDExNSwgCi0gICAgOTYsIDIzMywgMTA0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDExNSwgOTYsIDIzMywgMTA1LCAzMCwgMjMzLCAxMDQsIDE1LCA1LCAKLSAgICAyNDUsIDExLCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDUsIDExLCAzMCwgCi0gICAgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNDYsIDY3LCAyNDIsIDk1LCAyNDIsIDk0LCAxNSwgNSwgCi0gICAgMjQ1LCAxMSwgMzAsIDE2MiwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNDIsIDQ5LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgCi0gICAgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyNDUsIDExLCAzMCwgCi0gICAgMjM0LCAyMDgsIDIxOCwgMjMzLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzMywgMjE1LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAotICAgIDIzMywgMTM1LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzMywgMTA1LCAzMCwgMjMzLCAxMDQsIDE1LCA1LCAyNDUsIDExLCAzMCwgCi0gICAgMjMyLCAyNDEsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMyLCA5OCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMTQsIDIzMCwgMTUsIAotICAgIDUsIDI0NSwgMTEsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDI0MywgMTM1LCAxNSwgNSwgMjQzLCAxMzYsIDI0MiwgOTQsIDE1LCAKLSAgICA1LCAyNDMsIDEzMywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTE1LCA5NiwgMjQ4LCAyMjIsIDk2LCAxNjIsIDE1LCA1LCAyNDMsIAotICAgIDEzNCwgMzAsIDExNSwgOTYsIDE2MiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTE1LCA5NiwgMjM2LCAzNSwgMTUsIDUsIDI0MywgCi0gICAgMTM0LCAzMCwgMjU1LCAyNCwgMjE2LCAyNDAsIDk2LCAyMTcsIDkzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTQsIDEyMywgCi0gICAgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUzLCAyMzEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MywgMjMwLCA5NiwgMjQzLCAKLSAgICAxMTgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTIsIDE0MSwgOTYsIAotICAgIDIwNSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUxLCA5OCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUxLCA5OSwgOTYsIDIwNSwgCi0gICAgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ4LCAyMjEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0OCwgMywgMTUsIDUsIDI0MywgCi0gICAgMTM0LCAzMCwgMjQ3LCAyMTgsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDYsIDc2LCAxNSwgNSwgMjQzLCAKLSAgICAxMzQsIDMwLCAyNDUsIDE3NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ1LCAxNzUsIDk2LCAyMzMsIDEzNSwgMTUsIDUsIAotICAgIDI0MywgMTM0LCAzMCwgMjQ1LCAxNTAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NSwgMTUxLCAzMCwgMjQzLCAxMDUsIDIxNiwgCi0gICAgMjM5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MywgCi0gICAgOTYsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMjE0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDIxMiwgMTUsIDUsIAotICAgIDI0MywgMTM0LCAzMCwgMjQyLCAyMTMsIDk2LCA2MSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAxOTgsIDk2LCAyMTgsIAotICAgIDgzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDQ5LCA5NiwgMjMyLCA5OSwgOTYsIDI0NSwgNzIsIDE1LCA1LCAyNDMsIAotICAgIDEzNCwgMzAsIDI0MiwgMzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMzEsIDk2LCAyMzMsIDEzNSwgMTUsIDUsIDI0MywgCi0gICAgMTM0LCAzMCwgMjQxLCAxODEsIDk2LCAyMzIsIDI0MSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQwLCAyMTgsIDE1LCA1LCAKLSAgICAyNDMsIDEzNCwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNSwgMTY2LCA5NiwgMjQwLCAKLSAgICAyMjMsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIAotICAgIDIzNCwgMjA3LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDg5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDkwLCA5NiwgCi0gICAgMjMzLCAxMDQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzMywgMjE2LCA5NiwgMjU0LCAxMjMsIDE1LCA1LCAyNDMsIDEzNCwgCi0gICAgMzAsIDIzMywgMTM1LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyNDMsIAotICAgIDEzNCwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCi0gICAgMjI3LCAxOTUsIDExNywgMjI3LCAxOTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDE5MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCi0gICAgMjIyLCA4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjEsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIwLCA2MywgMTUsIAotICAgIDUsIDI0MywgMTM0LCAzMCwgMjIwLCA2NCwgOTYsIDIxNSwgOTgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMCwgMzAsIDE1LCAKLSAgICA1LCAyNDMsIDEzNCwgMzAsIDIxOCwgNDMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNywgNzIsIDE1LCA1LCAyNDMsIDEzNCwgCi0gICAgMzAsIDcwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE0LCAyMjAsIDk2LCAKLSAgICAyNDYsIDc4LCAxNSwgNSwgMjQzLCAxMzQsIDExNywgMjQzLCAxMzMsIDE1LCA1LCAyNDMsIDEyOCwgMTUsIDUsIDI0MywgCi0gICAgMTI5LCAyNDksIDEyNSwgMjQzLCAxMjgsIDE1LCA1LCAyNDMsIDEyNiwgMTUsIDUsIDI0MywgMTI3LCAxMTcsIDI0MywgMTI3LCAKLSAgICAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAyNDMsIDExOCwgMTUsIDUsIDI0MywgMTE5LCAyNDMsIDEyNywgMTE3LCAKLSAgICAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMjQzLCAxMTcsIDE1LCA1LCAyNDMsIDExNSwgMTUsIDUsIAotICAgIDI0MywgMTA2LCAxNSwgNSwgMjQzLCAxMDQsIDE1LCA1LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDMsIDEwNSwgCi0gICAgMTE3LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgMTA1LCAyNDksIDEyNSwgMjQzLCAxMDQsIDE1LCA1LCAyNDMsIDk2LCAxNSwgCi0gICAgNSwgMjQzLCA5NSwgMTUsIDUsIDI0MywgOTAsIDE1LCA1LCAyNDMsIDM2LCAxNSwgNSwgMjQzLCAzNywgMzAsIDIzMywgMTk2LCAKLSAgICAxNSwgNSwgMjQyLCAyMTQsIDE1LCA1LCAyNDIsIDIxNSwgMzAsIDc1LCAxNSwgNSwgMjQyLCAyMTUsIDMwLCA3MCwgMTUsIDUsIAotICAgIDI0MiwgMjE1LCAyNDksIDEyNSwgMjQyLCAyMTQsIDE1LCA1LCAyNDIsIDIxMiwgMTUsIDUsIDI0MiwgMjEzLCAxMTcsIDI0MiwgCi0gICAgMjEyLCAxNSwgNSwgMjQyLCAyMTMsIDI0OSwgMTI1LCAyNDIsIDIxMiwgMTUsIDUsIDI0MiwgMjA5LCAxNSwgNSwgMjQyLCAKLSAgICAxOTcsIDE1LCA1LCAyNDIsIDE5OCwgMjQyLCA5NCwgMTUsIDUsIDI0MiwgMTk1LCAxNSwgNSwgMjQyLCAxOTYsIDMwLCAxMTUsIAotICAgIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQyLCAxOTYsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDIsIDE5NiwgCi0gICAgMzAsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDIzMiwgOTksIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQyLCAxOTYsIAotICAgIDMwLCAxOTAsIDE1LCA1LCAyNDIsIDE5MiwgMTUsIDUsIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDI0OSwgMTI1LCAKLSAgICAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTkxLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDIsIDE5MSwgMzAsIDIxNywgNzIsIAotICAgIDE1LCA1LCAyNDIsIDE5MSwgMjE2LCAyMzksIDE1LCA1LCAyNDIsIDExMywgMTUsIDUsIDI0MiwgMTE0LCAyNDksIDEyNSwgCi0gICAgMjQyLCAxMTMsIDE1LCA1LCAyNDIsIDExMSwgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyNDIsIAotICAgIDExMiwgMzAsIDIzNCwgMjQzLCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjI3LCAxOTQsIAotICAgIDE1LCA1LCAyNDIsIDExMiwgMzAsIDIyMiwgOSwgOTYsIDIxNSwgMTEzLCAxNSwgNSwgMjQyLCAxMTIsIDI0MiwgOTQsIDE1LCAKLSAgICA1LCAyNDIsIDEwMywgMTUsIDUsIDI0MiwgMTA0LCAzMCwgMTE1LCA5NiwgMjMzLCAxOTYsIDE1LCA1LCAyNDIsIDEwNCwgMzAsIAotICAgIDIzMywgMTk2LCAxNSwgNSwgMjQyLCAxMDQsIDExNywgMjQyLCAxMDQsIDIzMiwgOTEsIDE1LCA1LCAyNDIsIDk4LCAxNSwgNSwgCi0gICAgMjQyLCA5NiwgMTUsIDUsIDI0MiwgOTcsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQyLCA4OCwgMTUsIDUsIDI0MiwgODcsIDE1LCAKLSAgICA1LCAyNDIsIDg0LCAxNSwgNSwgMjQyLCA4MywgMTUsIDUsIDE2MiwgMTUsIDUsIDI0MiwgNDksIDIxNiwgMjM5LCAxNSwgNSwgCi0gICAgMjQyLCA0OSwgMjQyLCA5NCwgMTUsIDUsIDI0MiwgMzAsIDE1LCA1LCAyNDEsIDE4MCwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgCi0gICAgMjUzLCAyMzEsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNTIsIDE3NiwgCi0gICAgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjQ3LCAxODcsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI0MywgMTI2LCAxNSwgNSwgMjQxLCAKLSAgICAxODEsIDMwLCAyMzQsIDgxLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgCi0gICAgMjIwLCA2MywgMTUsIDUsIDI0MSwgMTgxLCAzMCwgNzAsIDE1LCA1LCAyNDAsIDIyMiwgMTUsIDUsIDI0MCwgMjE4LCAxNSwgCi0gICAgNSwgMjQwLCAyMTksIDMwLCAyNTQsIDEyMywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjQyLCAzMCwgMTUsIDUsIDI0MCwgMjE5LCAKLSAgICAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDIzMiwgMTk3LCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyMTQsIAotICAgIDIxOSwgMTUsIDUsIDI0MCwgMjE1LCAxNSwgNSwgNzMsIDE1LCA1LCAyNDAsIDE1NCwgNjEsIDE1LCA1LCAyNDAsIDExNSwgCi0gICAgMTUsIDUsIDIzNiwgNjMsIDE1LCA1LCAyMzYsIDY0LCAxMTcsIDIzNiwgNjQsIDI1MSwgOTgsIDE1LCA1LCAyMzYsIDY0LCAKLSAgICAxMTcsIDIzNiwgNjQsIDIxOCwgMjMzLCAxNSwgNSwgMjM2LCAzOCwgMTUsIDUsIDIzNiwgMzUsIDE1LCA1LCAyMzYsIDM2LCAKLSAgICAyNDcsIDI0MiwgMTUsIDUsIDIzNiwgMzYsIDIyMywgMzUsIDE1LCA1LCAyMzYsIDM2LCAxMTcsIDIzNiwgMzYsIDIyMCwgMTQsIAotICAgIDExNywgMjIwLCAxNCwgMjE0LCAyMjAsIDExNywgMjE0LCAyMTksIDE1LCA1LCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgCi0gICAgMjM2LCAyNywgMTUsIDUsIDIzNiwgMjgsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMzYsIDI2LCAxNSwgNSwgCi0gICAgMjM2LCAxNiwgMTUsIDUsIDIzNiwgMTcsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjM2LCAxNywgMjQ5LCAxMjUsIDIzNiwgMTYsIAotICAgIDE1LCA1LCAyMzYsIDE3LCAyMjYsIDE2NCwgMjM2LCAxNiwgMTUsIDUsIDIzNiwgMTcsIDIxOCwgMjMzLCAxNSwgNSwgMjM2LCAKLSAgICA5LCAxNSwgNSwgMjM1LCAyNTUsIDE1LCA1LCAyMzUsIDE3OSwgMTUsIDUsIDIzNSwgMTY1LCAxNSwgNSwgMTc2LCAxNSwgNSwgCi0gICAgMjM1LCAxMywgMzAsIDYxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1NCwgMjU1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1NSwgCi0gICAgMCwgOTYsIDIzMywgMjE1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1MiwgCi0gICAgMTc2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDEzMCwgMTUsIDUsIDIzNSwgCi0gICAgMTMsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQ1LCA4NywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDUsIDcyLCAKLSAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgMTE4LCAxNSwgNSwgMjM1LCAKLSAgICAxMywgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjM1LCAxMywgCi0gICAgMzAsIDI0MywgOTcsIDk2LCAyMjAsIDEwMSwgOTYsIDYxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMjE0LCAxNSwgNSwgCi0gICAgMjM1LCAxMywgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMTkxLCA5NiwgMjIxLCAyMzEsIDE1LCA1LCAKLSAgICAyMzUsIDEzLCAzMCwgMjQyLCAxOTEsIDI0OSwgMTI1LCAyNDIsIDE5MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDExMywgCi0gICAgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDg3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMzUsIDEzLCAKLSAgICAzMCwgMjM2LCAxNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzQsIDkyLCAKLSAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgODksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMyLCAyNDEsIDE1LCA1LCAyMzUsIAotICAgIDEzLCAzMCwgMjMyLCA5OCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzEsIDkxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgCi0gICAgOTIsIDk2LCAyNDYsIDc4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgOTIsIDk2LCAyNDIsIDIxNCwgMTUsIDUsIDIzNSwgCi0gICAgMTMsIDMwLCAyMzEsIDkyLCA5NiwgMjE3LCAyMiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIzNSwgCi0gICAgMTMsIDMwLCAyMzAsIDIzMSwgOTYsIDIyNywgMTg5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjM1LCAKLSAgICAxMywgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyNSwgMTA4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMiwgCi0gICAgMTQwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIwNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjEsIDIzMSwgMTUsIDUsIDIzNSwgCi0gICAgMTMsIDMwLCAyMjAsIDEwMiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMCwgCi0gICAgMzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE5LCAxODIsIDE1LCA1LCAKLSAgICAyMzUsIDEzLCAzMCwgMjE4LCA1MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTcsIDUwLCAxNSwgNSwgMjM1LCAxMywgMzAsIAotICAgIDcwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNCwgMjE5LCAxNSwgNSwgCi0gICAgMjM1LCAxMywgMzAsIDIxNCwgMTkzLCAzMCwgMTkwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjM1LCAKLSAgICAxMywgMzAsIDIxMCwgNDQsIDE1LCA1LCAyMzUsIDExLCAxNSwgNSwgMjM1LCAxMiwgMjQ5LCAxMjUsIDIzNSwgMTEsIDE1LCAKLSAgICA1LCAyMzUsIDQsIDE1LCA1LCAyMzUsIDEsIDE1LCA1LCAyMzQsIDI1NSwgMTUsIDUsIDIzNCwgMjU0LCAxNSwgNSwgMjM0LCAKLSAgICAyNTIsIDE1LCA1LCAyMzQsIDI1MywgMTE3LCAyMzQsIDI1MiwgMTUsIDUsIDIzNCwgMjQyLCAxNSwgNSwgMjM0LCAyNDMsIAotICAgIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjM0LCAyMzgsIDE1LCA1LCAyMzQsIDIzOSwgMzAsIDI1MiwgMTc2LCAxNSwgCi0gICAgNSwgMjM0LCAyMzksIDI0OSwgMTI1LCAyMzQsIDIzOCwgMTUsIDUsIDIzNCwgMjM2LCAxNSwgNSwgMjM0LCAyMzUsIDE1LCA1LCAKLSAgICAyMzQsIDIwNywgMTUsIDUsIDIzNCwgMjA4LCAyMzMsIDExOCwgMzAsIDEwNCwgMTE3LCAyMzMsIDExOCwgMzAsIDcwLCAxNSwgCi0gICAgNSwgMjM0LCAyMDgsIDExNywgMjM0LCAyMDgsIDIzMywgMTE4LCAzMCwgMTA0LCAxMTcsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCAKLSAgICA1LCAyMzQsIDE1NywgMTUsIDUsIDIzNCwgOTIsIDE1LCA1LCAyMzQsIDkzLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzQsIAotICAgIDkzLCAzMCwgNzAsIDE1LCA1LCAyMzQsIDkzLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzQsIDg5LCAxNSwgNSwgMjM0LCA4MSwgCi0gICAgMTUsIDUsIDIzNCwgNjgsIDE1LCA1LCAyMzQsIDY3LCAxNSwgNSwgMjM0LCA2NSwgMTUsIDUsIDIzNCwgNjYsIDExNywgMjM0LCAKLSAgICA2NSwgMTUsIDUsIDIzMywgMjE3LCAxNSwgNSwgMjMzLCAyMTgsIDExNywgMjQxLCAxODEsIDMwLCAyNTMsIDIzMCwgMjMzLCAKLSAgICAyMTgsIDExNywgMjQxLCAxODEsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAyMTMsIDE1LCAKLSAgICA1LCAyMzMsIDIxNCwgMjE0LCAxMiwgMTcsIDE1LCA1LCAyMzMsIDIxMiwgMTUsIDUsIDIzMywgMjA5LCAxNSwgNSwgMjMzLCAKLSAgICAyMTAsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIDIwOCwgMTUsIDUsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxOTcsIDIyNiwgCi0gICAgMTY0LCAyMzMsIDE5NiwgMTUsIDUsIDIzMywgMTkxLCAxNSwgNSwgMjMzLCAxNzIsIDE1LCA1LCAyMzMsIDEzNSwgMTUsIDUsIAotICAgIDIzMywgMTE3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCA2MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTE1LCA5NiwgMjQ4LCAKLSAgICAyMjIsIDk2LCAxNjIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDExNSwgOTYsIDI0MywgOTYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAotICAgIDExNSwgOTYsIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCi0gICAgMjU0LCAxMjMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1MywgMjMyLCAyMTAsIDQwLCAyMTYsIDIzOSwgMTUsIDUsIDIzMywgCi0gICAgMTE4LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1MiwgNiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQ4LCAKLSAgICAxNjYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0NSwgMTUwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIAotICAgIDIzMywgMTE4LCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAyMzMsIDExOCwgCi0gICAgMzAsIDI0MiwgMTA0LCA5NiwgMjQyLCAxMDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAKLSAgICAzMCwgMjQyLCAzMCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQxLCAxODEsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIzMywgCi0gICAgMTE4LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM2LCAxNiwgMTUsIDUsIDIzMywgMTE4LCAKLSAgICAzMCwgMjM2LCAxNywgOTYsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM2LCAxNywgOTYsIDIzMiwgOTgsIDE1LCA1LCAKLSAgICAyMzMsIDExOCwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzNCwgODEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAotICAgIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDIwOSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMzLCAyMTAsIAotICAgIDk2LCAyNDEsIDE4MSwgOTYsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIzMywgMTE4LCAzMCwgCi0gICAgMjMyLCAxOTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMiwgOTgsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMiwgODYsIDE1LCAKLSAgICA1LCAyMzMsIDExOCwgMzAsIDIzMSwgOTEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIAotICAgIDUsIDIzMywgMTE4LCAzMCwgMjMwLCA2MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzMsIDExOCwgCi0gICAgMzAsIDIyMCwgNjQsIDk2LCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTEsIDk2LCAKLSAgICAyNDUsIDg3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTEsIDIxNiwgMjM5LCAxNSwgNSwgCi0gICAgMjMzLCAxMTgsIDMwLCAyMTksIDIyMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE5LCAyMjQsIDk2LCAyMTksIDIyMywgMTUsIAotICAgIDUsIDIzMywgMTE4LCAzMCwgMjE4LCA0MywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE3LCA4NCwgMTUsIDUsIDIzMywgMTE4LCAKLSAgICAzMCwgMjE3LCA3MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE3LCAyMywgOTYsIDExNSwgOTYsIDIxOCwgODQsIDk2LCAxOTcsIAotICAgIDE1LCA1LCAyMzMsIDExOCwgMzAsIDcwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIDUsIDIzMywgCi0gICAgMTE4LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAKLSAgICAyMzEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIAotICAgIDIzMywgMTE4LCAyMTgsIDIzMywgMTUsIDUsIDIzMywgMTE1LCAxNSwgNSwgMjMzLCAxMTYsIDMwLCAyMjAsIDYzLCAxNSwgNSwgCi0gICAgMjMzLCAxMTYsIDMwLCAyMjAsIDY0LCA5NiwgMjE4LCA0MywgMTUsIDUsIDIzMywgMTE2LCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAKLSAgICAxMTYsIDI0MiwgOTUsIDExNywgMjMzLCAxMTYsIDI0MiwgOTUsIDIyMCwgNjMsIDE1LCA1LCAyMzMsIDExMSwgMTUsIDUsIAotICAgIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIDIzMywgMTAyLCAxNSwgNSwgMjMzLCAKLSAgICAxMDMsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIzMywgMTAzLCAzMCwgMjMzLCAxOTcsIDk2LCAyMjIsIDE0MCwgMTUsIDUsIAotICAgIDIzMiwgMjQxLCAxNSwgNSwgMjMyLCAyMjYsIDE1LCA1LCAyMzIsIDIxNiwgMTUsIDUsIDIzMiwgMTk3LCAxNSwgNSwgMjMyLCAKLSAgICA5OCwgMTUsIDUsIDIzMiwgOTksIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgCi0gICAgMjU0LCAxNzgsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjQ1LCA3MiwgMTUsIAotICAgIDUsIDIzMiwgOTcsIDMwLCAyNDUsIDczLCAyMTYsIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDMsIDEwNSwgMjE2LCAKLSAgICAyMzksIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjQxLCAxODEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzYsIAotICAgIDE2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNSwgMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzQsIDI1NSwgMTUsIDUsIDIzMiwgCi0gICAgOTcsIDMwLCAyMzUsIDAsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjMyLCAKLSAgICA5NywgMzAsIDIzMywgMTM2LCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyMzIsIAotICAgIDk3LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjMyLCAKLSAgICA5NywgMzAsIDIyNywgMjM3LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIxOSwgMTkyLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMzIsIAotICAgIDk3LCAzMCwgMjE5LCAxNzQsIDk2LCAyNTEsIDEyNSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMTUsIDExMywgMTUsIDUsIDIzMiwgCi0gICAgOTcsIDIxNiwgMjM5LCAxNSwgNSwgMjMyLCA5NywgMjQ5LCAxMjUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAyMjYsIAotICAgIDE2NCwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIxOCwgMjMzLCAxNSwgNSwgMjMyLCA5NywgMjIwLCA0NSwgMTUsIDUsIAotICAgIDIzMiwgOTUsIDE1LCA1LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA5MiwgMTE3LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA5MiwgCi0gICAgMjI2LCAxNjQsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAyMjAsIDQ1LCAxNSwgNSwgMjMyLCA4OSwgMTUsIDUsIDIzMiwgCi0gICAgODYsIDE1LCA1LCAyMzIsIDg0LCAxNSwgNSwgMjMyLCA4NSwgMTE3LCAyMzIsIDg0LCAxNSwgNSwgMjMyLCA4NSwgMTE3LCAKLSAgICAyMzIsIDg1LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAxODQsIDE1LCA1LCAyMzEsIDIzOSwgMzAsIDIxNywgNzIsIAotICAgIDE1LCA1LCAyMzEsIDIzOSwgMjQyLCA5NCwgMTUsIDUsIDIzMSwgMjM4LCAxNSwgNSwgMjMxLCAyMTAsIDE1LCA1LCAyMzEsIAotICAgIDE2NiwgMTUsIDUsIDIzMSwgMTQ3LCAxNSwgNSwgMjMxLCAxNDYsIDE1LCA1LCAyMzEsIDkxLCAxNSwgNSwgMjMxLCA0NywgCi0gICAgMTUsIDUsIDIzMCwgMjMwLCAxNSwgNSwgMjMwLCAxODgsIDE1LCA1LCAyMzAsIDEwMiwgMTUsIDUsIDIzMCwgMTAzLCAxMTcsIAotICAgIDIzMCwgMTAyLCAxNSwgNSwgMjMwLCA5MywgMTUsIDUsIDIzMCwgOTQsIDI0MiwgOTQsIDE1LCA1LCAyMzAsIDc4LCAxNSwgNSwgCi0gICAgMjMwLCA2NCwgMTUsIDUsIDIzMCwgNjEsIDE1LCA1LCAyMzAsIDYyLCAzMCwgNjEsIDE1LCA1LCAyMzAsIDYyLCAzMCwgMjMzLCAKLSAgICAxOTYsIDE1LCA1LCAyMzAsIDYyLCAzMCwgMjEwLCAxMTYsIDE1LCA1LCAyMzAsIDYyLCAxMTcsIDIzMCwgNjEsIDE1LCA1LCAKLSAgICAyMzAsIDYyLCAxMTcsIDIzMCwgNjIsIDMwLCAxMTUsIDk2LCAxOTcsIDE1LCA1LCAyMzAsIDYyLCAyNDksIDEyNSwgMjMwLCAKLSAgICA2MSwgMTUsIDUsIDIzMCwgNTksIDE1LCA1LCAyMzAsIDYwLCAzMCwgNjEsIDE1LCA1LCAyMzAsIDYwLCAzMCwgMTE1LCA5NiwgCi0gICAgMjQ4LCAzLCAxNSwgNSwgMjMwLCA2MCwgMzAsIDI0OCwgMywgMTUsIDUsIDIzMCwgNjAsIDI0MiwgOTQsIDE1LCA1LCAxOTcsIAotICAgIDE1LCA1LCAyMjksIDIyNywgMTUsIDUsIDIyOSwgMjE2LCAxNSwgNSwgMjI5LCAyMTcsIDIzNSwgMTkyLCAxNSwgNSwgMjI5LCAKLSAgICAyMTcsIDMwLCAyMTksIDIyNiwgMjE2LCAyMzksIDE1LCA1LCAyMjksIDIxNywgMjI2LCAxNjQsIDIyOSwgMjE2LCAxNSwgNSwgCi0gICAgMjI5LCAyMTUsIDE1LCA1LCAyMjksIDIwOCwgMjI3LCAxODAsIDE1LCA1LCAyMjksIDIwNywgMTUsIDUsIDIyOSwgMjA2LCAKLSAgICAxNSwgNSwgMjI5LCAxMDcsIDE1LCA1LCAyMjksIDEwOCwgMzAsIDYxLCAxNSwgNSwgMjI5LCAxMDgsIDMwLCAyMTQsIDIxOSwgCi0gICAgMTUsIDUsIDIyOSwgMTA4LCAyMjAsIDQ1LCAxNSwgNSwgMjI4LCAyMzMsIDE1LCA1LCAyMjgsIDIzNCwgMzAsIDc1LCAxNSwgCi0gICAgNSwgMjI4LCAyMzIsIDE1LCA1LCAyMjgsIDIwMywgMTUsIDUsIDIyOCwgMjA0LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAKLSAgICAxNSwgNSwgMjI4LCAyMDQsIDMwLCAyNDMsIDk3LCA5NiwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjI4LCAyMDEsIAotICAgIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgCi0gICAgMjAyLCAzMCwgMjUzLCAyMzIsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAKLSAgICAyMjgsIDIwMiwgMzAsIDIzMSwgOTIsIDk2LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyOSwgCi0gICAgMTA3LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2MywgMTUsIDUsIAotICAgIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgOTYsIDExNSwgMjU0LCAxMjMsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyMCwgNjQsIAotICAgIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgOTYsIDI1MywgMjMyLCA5NiwgMjUzLCAyMzEsIAotICAgIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIxNCwgCi0gICAgMTI2LCAxNSwgNSwgMjI4LCAxOTAsIDE1LCA1LCAyMjcsIDIzNywgMTUsIDUsIDIyNywgMjEwLCAxNSwgNSwgMjI3LCAxOTQsIAotICAgIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgCi0gICAgMjMxLCAxNDcsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAKLSAgICAxMTYsIDMwLCAyMjIsIDksIDExNywgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjI3LCAxOTUsIAotICAgIDIzMywgMTE2LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMjcsIDE5NSwgMjE2LCAyMzksIDE1LCA1LCAyMjcsIDE5NSwgMTE3LCAKLSAgICAyMjcsIDE5NCwgMTUsIDUsIDIyNywgMTk1LCAyNDksIDEyNSwgMjI3LCAxOTQsIDE1LCA1LCAyMjcsIDE5NSwgMjQ5LCAxMjUsIAotICAgIDIyNywgMTk1LCAyMzMsIDExNiwgMTE3LCAyMzMsIDExNSwgMTUsIDUsIDIyNywgMTg5LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgCi0gICAgMjQsIDMwLCAyNTMsIDIyNiwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjI3LCAxOTAsIAotICAgIDI1NSwgMjQsIDMwLCAyNDYsIDc0LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyNDIsIDEwMywgMTUsIDUsIDIyNywgCi0gICAgMTkwLCAyNTUsIDI0LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjM0LCAKLSAgICAyNTUsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDIzMywgMTM1LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIAotICAgIDMwLCAyMjksIDEwNywgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjE5LCAxNzEsIDE1LCA1LCAyMjcsIDE5MCwgCi0gICAgMjU1LCAyNCwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjI3LCAxOTAsIDIzNCwgNjYsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMjcsIAotICAgIDE5MCwgMjM0LCA2NiwgMzAsIDI1MiwgNywgNzAsIDE1LCA1LCAxOTAsIDE1LCA1LCAyMjYsIDgwLCAxNSwgNSwgMjI2LCA0NywgCi0gICAgMTUsIDUsIDIyNiwgMjEsIDE1LCA1LCAyMjUsIDE2MSwgMTUsIDUsIDIyNSwgMTA4LCAxNSwgNSwgMjI1LCAxMDksIDMwLCAKLSAgICA2MSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgMjU1LCAyNSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgMjUyLCA2LCAxNSwgNSwgCi0gICAgMjI1LCAxMDksIDMwLCAyNTEsIDEyNSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDczLCAKLSAgICAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNDAsIDExNSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzAsIDE1LCA1LCAyMjUsIDEwOSwgCi0gICAgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjI1LCAxMDksIDI0OSwgMTI1LCAyMjUsIDEwOCwgMTUsIDUsIDIyNSwgNTMsIDE1LCA1LCAKLSAgICAyMjUsIDU0LCAzMCwgMjM0LCAyMzgsIDE1LCA1LCAyMjUsIDU0LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMjUsIDU0LCAzMCwgCi0gICAgMjEwLCAxMTYsIDE1LCA1LCAyMjUsIDU0LCAyMjYsIDE2NCwgMjI1LCA1MywgMTUsIDUsIDIwNSwgMTUsIDUsIDIyMywgMTgyLCAKLSAgICAxNSwgNSwgMjIzLCAzNSwgMTUsIDUsIDIyMiwgMTQwLCAxNSwgNSwgMjA2LCAxNSwgNSwgMjIyLCAyMiwgMjI3LCAxODAsIAotICAgIDE1LCA1LCAyMjIsIDIxLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDYxLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDI0NiwgNzgsIDE1LCAKLSAgICA1LCAyMjIsIDIyLCAzMCwgMjQ2LCA3NiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAxNjIsIDE1LCA1LCAyMjIsIDIyLCAzMCwgCi0gICAgMjM0LCAyNDIsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjMyLCA4NCwgMTUsIAotICAgIDUsIDIyMiwgMjIsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIyMiwgMjIsIAotICAgIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjIwLCAzMCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTcsIDkzLCAxNSwgCi0gICAgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMjI1LCAxNSwgNSwgMjIyLCAyMiwgCi0gICAgMzAsIDIxNCwgMTk3LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMTUwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNCwgMTI2LCAKLSAgICAxNSwgNSwgMjIyLCAyMiwgMTE3LCAyMjIsIDIxLCAxNSwgNSwgMjIyLCAyMiwgMjQyLCA5NCwgMTUsIDUsIDIyMiwgOCwgMTUsIAotICAgIDUsIDIyMiwgOSwgMjMzLCAxMTgsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDIyMSwgMjM5LCAxNSwgNSwgMjIxLCAyMzEsIDE1LCAKLSAgICA1LCAyMjAsIDEwMiwgMTUsIDUsIDIyMCwgMTAwLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMTAxLCAKLSAgICAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDI0MiwgMTkwLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMjksIAotICAgIDEwNywgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjE5LCAyMjMsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIxNSwgOTgsIDE1LCA1LCAKLSAgICAyMjAsIDEwMSwgMzAsIDcwLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIDUsIDIyMCwgOTksIDE1LCAKLSAgICA1LCAyMjAsIDk3LCAxNSwgNSwgMjIwLCA3OCwgMTUsIDUsIDIyMCwgNjMsIDE1LCA1LCAyMjAsIDY0LCAyNDAsIDIyMiwgMTUsIAotICAgIDUsIDIyMCwgNjQsIDExNywgMjIwLCA2NCwgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgCi0gICAgMTUsIDUsIDIyMCwgNjQsIDExNywgMjIwLCA2NCwgMjE3LCA5NCwgMTE3LCAyMTcsIDk0LCAyNDMsIDk3LCAxMTcsIDI0MywgCi0gICAgOTYsIDE1LCA1LCAyMjAsIDU2LCAxNSwgNSwgMjIwLCA1MSwgMTUsIDUsIDIyMCwgNDgsIDE1LCA1LCAyMjAsIDQ3LCAxNSwgCi0gICAgNSwgMjIwLCA0NCwgMTUsIDUsIDIyMCwgMzAsIDE1LCA1LCAyMjAsIDMxLCAzMCwgNjEsIDE1LCA1LCAyMjAsIDMxLCAzMCwgCi0gICAgMjM2LCAxNiwgMTUsIDUsIDIyMCwgMjQsIDE1LCA1LCAyMjAsIDI1LCAzMCwgNjEsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjUyLCAKLSAgICAxNjEsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjUxLCAxMDksIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjQ3LCAyMDYsIDE1LCA1LCAKLSAgICAyMjAsIDI1LCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjIwLCAyNSwgMzAsIAotICAgIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjMzLCAxOTEsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjMyLCAKLSAgICA4NiwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzAsIDkzLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyMCwgCi0gICAgMTgsIDE1LCA1LCAyMjAsIDEzLCAxNSwgNSwgMjIwLCAxNCwgMjE2LCAyMzksIDE1LCA1LCAyMjAsIDE0LCAxMTcsIDIyMCwgCi0gICAgMTQsIDI1MSwgOTksIDExNywgMjUxLCA5OCwgMTUsIDUsIDIyMCwgOSwgMTUsIDUsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAKLSAgICAyMjYsIDExNywgMjM1LCAxOTMsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAyMjMsIDE1LCA1LCAyMTksIDIyMiwgMTUsIDUsIAotICAgIDIxOSwgMTkxLCAxNSwgNSwgMjE5LCAxOTIsIDI0MiwgOTQsIDE1LCA1LCAyMTksIDE4MiwgMTUsIDUsIDIxOSwgMTgwLCAxNSwgCi0gICAgNSwgMjE5LCAxODEsIDExNywgMjE5LCAxODEsIDIxOSwgMjIzLCAxNSwgNSwgMjE5LCAxNzMsIDE1LCA1LCAyMTksIDE3MSwgCi0gICAgMTUsIDUsIDIxOCwgODMsIDE1LCA1LCAyMTgsIDg0LCAxMTcsIDIxOCwgODMsIDE1LCA1LCAyMTgsIDU0LCAxNSwgNSwgMjE4LCAKLSAgICA1MywgMTUsIDUsIDIxOCwgNTEsIDE1LCA1LCAyMTgsIDQzLCAxNSwgNSwgMjE4LCA0MiwgMTUsIDUsIDIxOCwgMTcsIDE1LCAKLSAgICA1LCAyMTgsIDE2LCAxNSwgNSwgMjE3LCAxMDUsIDE1LCA1LCAyMTcsIDEwNiwgMjUzLCAyMTYsIDE1LCA1LCAyMTcsIDEwNiwgCi0gICAgMzAsIDI0MSwgMTgwLCAxNSwgNSwgMjE3LCAxMDYsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIxNywgMTA2LCAyNDIsIDk0LCAKLSAgICAxNSwgNSwgMjE3LCA5MywgMTUsIDUsIDIxNywgOTQsIDExNywgMjE3LCA5NCwgMjI4LCAyMzQsIDExNywgMjI4LCAyMzQsIAotICAgIDI0NywgMTg4LCAxMTcsIDI0NywgMTg3LCAxNSwgNSwgMjE3LCA5NCwgMjE4LCAyMzMsIDE1LCA1LCAyMTcsIDg0LCAxNSwgNSwgCi0gICAgMTI5LCAzMCwgMjUyLCA2LCAxNSwgNSwgMTI5LCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAxMjksIDMwLCAyMjAsIDYzLCAxNSwgCi0gICAgNSwgMTI5LCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAxMjksIDMwLCAyMTUsIDExMywgMTUsIDUsIDEyOSwgMzAsIDIxNCwgMjE5LCAKLSAgICAxNSwgNSwgMjE3LCA3MiwgMTUsIDUsIDIxNywgNTAsIDE1LCA1LCAyMTcsIDIyLCAxNSwgNSwgMjE3LCAyMywgMjQyLCA5NCwgCi0gICAgMTUsIDUsIDIxNiwgMTE3LCAxNSwgNSwgMjE2LCAxMTgsIDIxNiwgMjM5LCAxNSwgNSwgMjE2LCA5MCwgMTUsIDUsIDIxNiwgCi0gICAgNzIsIDE1LCA1LCAyMTYsIDczLCAzMCwgMjE3LCA3MiwgMTUsIDUsIDIxNiwgNzMsIDExNywgMjE2LCA3MiwgMTUsIDUsIAotICAgIDIxNiwgNzMsIDExNywgMjE2LCA3MywgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgCi0gICAgMTUsIDUsIDIxNSwgMTE4LCAxNSwgNSwgMjE1LCAxMTMsIDE1LCA1LCAyMTUsIDExMSwgMTUsIDUsIDIxNSwgMTA4LCAxNSwgCi0gICAgNSwgMjE1LCA5OCwgMTUsIDUsIDIxNSwgOTksIDExNywgMjE1LCA5OSwgMjEwLCAxMTcsIDExNywgMjEwLCAxMTYsIDE1LCA1LCAKLSAgICA3MCwgMTUsIDUsIDEwNCwgMjQyLCAxMDMsIDE1LCA1LCAxMDQsIDEwNCwgNzAsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAyMjYsIAotICAgIDkwLCAxMTcsIDIyNiwgOTAsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDIxOCwgMTgsIAotICAgIDExNywgMjE4LCAxNywgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDEwNCwgMjIzLCA0OSwgMTE3LCAxMDQsIDIyMywgNDgsIDE1LCAKLSAgICA1LCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMjI1LCAxNSwgNSwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIDIyMCwgMjMzLCAxOTEsIAotICAgIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDIxNCwgCi0gICAgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIAotICAgIDEwNCwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMjIwLCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAyMjAsIDIyMCwgNDUsIDE1LCA1LCAKLSAgICAyMTQsIDIyMCwgMjIwLCA0NiwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjE0LCAyMTUsIDE1LCA1LCAyMTQsIDE5NywgMTUsIDUsIAotICAgIDIxNCwgMTk4LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDIzMSwgOTIsIDk2LCAyNDgsIDIyMSwgMTUsIAotICAgIDUsIDIxNCwgMTk4LCAzMCwgMjIwLCAxMDAsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDcwLCAxNSwgNSwgMjE0LCAxOTYsIDE1LCAKLSAgICA1LCAyMTQsIDE5MiwgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyMTQsIDE5MywgMzAsIDE5MCwgMTUsIAotICAgIDUsIDIxNCwgMTkwLCAxNSwgNSwgMjE0LCAxOTEsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAKLSAgICAyNDksIDEyNSwgMjE0LCAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgMjIwLCA0NSwgMTUsIDUsIDIxNCwgMTQ4LCAxNSwgNSwgCi0gICAgMjE0LCAxNDksIDMwLCAxMTUsIDk2LCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNSwgOTYsIDE5NywgMTUsIDUsIAotICAgIDIxNCwgMTQ5LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgCi0gICAgMjI3LCAxOTQsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgCi0gICAgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MiwgNiwgMTUsIDUsIDIxNCwgMTQ3LCAKLSAgICAxNSwgNSwgMjE0LCAxNDQsIDE1LCA1LCAyMTQsIDE0MywgMTUsIDUsIDIxNCwgMTM5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKLSAgICA2MSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjUzLCAyMjYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEzMCwgMTUsIDUsIDIxNCwgCi0gICAgMTQwLCAzMCwgMjQ2LCA2OCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAotICAgIDI0MywgMTE4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAotICAgIDI0MywgOTYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MiwgMTEzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxNjIsIDE1LCA1LCAKLSAgICAyMTQsIDE0MCwgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNiwgMTYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAotICAgIDIzNSwgMTY1LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzIsIDg0LCAxNSwgCi0gICAgNSwgMjE0LCAxNDAsIDMwLCAyMzAsIDE4OCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTkwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKLSAgICAyMjAsIDYzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTksIDE4MCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE1LCAxMTgsIAotICAgIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEwNCwgOTYsIDI0MiwgMTAzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTQsIDIxOSwgCisgICAgMTc0LCAyMSwgMTk0LCAxNzQsIDIxLCAxOTgsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMjAwLCAyMTcsIDcwLCAxLCA2MSwgCisgICAgMjE3LCA3MCwgMSwgMjU1LCA3NCwgMjE3LCA3MCwgMSwgNzMsIDIxNywgNzAsIDEsIDIzNiwgMzQsIDIxNywgNzAsIDEsIDcwLCAKKyAgICAyMTcsIDcwLCAxLCAyMTQsIDExOCwgMjE3LCA3MCwgMSwgNzUsIDIxNywgNzAsIDEsIDI1NCwgMjAyLCAyMTcsIDcwLCAxLCAKKyAgICA3NiwgMjE3LCA3MCwgMSwgMjUzLCAxOTMsIDIxNywgNzAsIDEsIDE3NiwgMjE3LCA3MCwgMSwgMjM0LCAxMzMsIDIxNywgNzAsIAorICAgIDEsIDI0MywgMTM2LCAyMTcsIDcwLCAxLCAyNDIsIDI1MCwgMjE3LCA3MCwgMSwgMjI5LCA3OCwgMjE3LCA3MCwgMSwgMjUxLCAKKyAgICAzNCwgMjE3LCA3MCwgMSwgMjUwLCAxNTgsIDIxNywgNzAsIDEsIDIzNSwgMTQyLCAyMTcsIDcwLCAxLCAyMzUsIDExNSwgCisgICAgMjE3LCA3MCwgMSwgMjI3LCAxNjYsIDIxNywgNzAsIDEsIDIxNSwgMTU3LCAyMTcsIDcwLCAxLCAyMTUsIDE0NSwgMjE3LCAKKyAgICA3MCwgMSwgMjQ4LCAxMzYsIDIxNywgNzAsIDEsIDI0OCwgMTIwLCAyMTcsIDcwLCAxLCAyMjgsIDExMSwgMjE3LCA3MCwgMSwgCisgICAgMjE3LCAxMDYsIDIxNywgNzAsIDEsIDIxNiwgMjA5LCAyMTcsIDcwLCAxLCAyNDgsIDIyMiwgMjE3LCA3MCwgMSwgMjQ4LCAKKyAgICAyNiwgMjE3LCA3MCwgMSwgMTk3LCAyMTcsIDcwLCAxLCAxOTAsIDIxNywgNzAsIDEsIDIyNSwgMTQ4LCAyMTcsIDcwLCAxLCAKKyAgICAyNTIsIDE5MiwgMjE3LCA3MCwgMSwgMjUyLCAxOSwgMjE3LCA3MCwgMSwgMTg1LCAyMTcsIDcwLCAxLCAxOTEsIDIxNywgNzAsIAorICAgIDEsIDIwNSwgMjE3LCA3MCwgMSwgMjMzLCAxMzYsIDIxNywgNzAsIDEsIDIxNCwgMjcsIDIxNywgNzAsIDEsIDIyMCwgMTAzLCAKKyAgICAyMTcsIDcwLCAxLCAyMDYsIDIxNywgNzAsIDEsIDE2MiwgMjE3LCA3MCwgMSwgMjIyLCAxODAsIDIxNywgNzAsIDUsIDI1NCwgCisgICAgNzYsIDIxNywgNzAsIDUsIDIxMywgMTQ3LCAyMTcsIDcwLCAyNSwgNSwgMjU1LCA3NCwgMjE3LCA3MCwgMjUsIDUsIDczLCAKKyAgICAyMTcsIDcwLCAyNSwgNSwgMjM2LCAzNCwgMjE3LCA3MCwgMjUsIDUsIDcwLCAyMTcsIDcwLCAyNSwgNSwgMjE0LCAxMTgsIAorICAgIDIxNywgNzAsIDI1LCA1LCA3NSwgMjE3LCA3MCwgMjUsIDUsIDI1NCwgMjAyLCAyMTcsIDcwLCAyNSwgNSwgNzYsIDIxNywgCisgICAgNzAsIDI1LCA1LCAyNTMsIDE5MywgMjE3LCA3MCwgNSwgMjEzLCAxNTIsIDIxNywgNzAsIDUsIDIyNywgMjA2LCAyMTcsIDcwLCAKKyAgICAyMSwgMjEwLCA4NiwgMjE3LCA3MCwgMjEsIDExMCwgMjE3LCA3MCwgMjEsIDEwNSwgMjE3LCA3MCwgMjEsIDE1OCwgMjE3LCAKKyAgICA3MCwgMjEsIDE2MSwgMjE3LCA3MCwgMjEsIDE4OSwgMjE3LCA3MCwgMjEsIDE5NCwgMjE3LCA3MCwgMjEsIDE5OCwgMjE3LCAKKyAgICA3MCwgMjEsIDE5NSwgMjE3LCA3MCwgMjEsIDIwMCwgMTUsIDUsIDYxLCAxNSwgNSwgMTE1LCAzMCwgNjEsIDE1LCA1LCAxMTUsIAorICAgIDMwLCAyNTIsIDE3NywgMTUsIDUsIDExNSwgMzAsIDI0MywgMTA2LCAyMTYsIDI0MCwgMTUsIDUsIDExNSwgMzAsIDE2MiwgCisgICAgMTUsIDUsIDExNSwgMzAsIDIzNiwgMzYsIDE1LCA1LCAxMTUsIDMwLCAyMzMsIDExNywgMjQyLCA5NSwgMTUsIDUsIDExNSwgCisgICAgMzAsIDIzMCwgNjIsIDE1LCA1LCAxMTUsIDMwLCAyMjIsIDIyLCAxNSwgNSwgMjU1LCA3NiwgMTUsIDUsIDI1NSwgMjYsIDE1LCAKKyAgICA1LCAyNTUsIDI3LCAzMCwgMjUzLCAyMzAsIDE1LCA1LCAyNTUsIDI3LCAzMCwgMjQ2LCA2OCwgMjQyLCA5NSwgMTUsIDUsIAorICAgIDI1NSwgMjcsIDMwLCAyNDMsIDExOSwgMTUsIDUsIDI1NSwgMjcsIDMwLCAyNDMsIDEwNiwgMjE2LCAyNDAsIDE1LCA1LCAKKyAgICAyNTUsIDI3LCAzMCwgMTYyLCAxNSwgNSwgMjU1LCAyNywgMzAsIDIzNiwgMzcsIDI0MiwgOTUsIDE1LCA1LCAyNTUsIDI3LCAKKyAgICAzMCwgMjM2LCAxMCwgMTUsIDUsIDI1NSwgMjcsIDMwLCAyMzMsIDExOCwgMTUsIDUsIDI1NSwgMjcsIDMwLCAyMjAsIDQ5LCAKKyAgICAxNSwgNSwgMjU1LCAyNywgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjU1LCAyNywgMjQyLCA5NSwgMTUsIDUsIAorICAgIDI1NSwgMjQsIDE1LCA1LCAyNTUsIDI1LCAzMCwgMjUyLCAxNjEsIDE1LCA1LCAyNTUsIDI1LCAzMCwgMjQzLCAxMDYsIDIxNiwgCisgICAgMjQwLCAxNSwgNSwgMjU1LCAyNSwgMzAsIDIzMSwgOTMsIDk2LCAyNDUsIDE1MSwgMTUsIDUsIDI1NSwgMjUsIDMwLCAyMjAsIAorICAgIDEwMSwgMTUsIDUsIDI1NSwgMjUsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjU1LCAwLCAxNSwgNSwgMjU0LCAxODcsIDE1LCA1LCAKKyAgICAyNTQsIDE4OCwgMzAsIDI0NSwgODgsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDIyMCwgMTEsIDk2LCAyNDIsIDE5MSwgMTUsIDUsIAorICAgIDI1NCwgMTc5LCAxNSwgNSwgMjU0LCAxODAsIDMwLCAyNTQsIDE3OSwgMTUsIDUsIDI1NCwgMTgwLCAzMCwgMjQ3LCAyMTcsIAorICAgIDE1LCA1LCAyNTQsIDE4MCwgMzAsIDI0MiwgMTkxLCAxNSwgNSwgMjU0LCAxODAsIDMwLCAxNjIsIDE1LCA1LCAyNTQsIDE4MCwgCisgICAgMzAsIDIzNSwgMCwgMTUsIDUsIDI1NCwgMTgwLCAzMCwgMjM0LCA5MywgMTUsIDUsIDI1NCwgMTgwLCAzMCwgMjIwLCA2NCwgCisgICAgMTUsIDUsIDI1NCwgMTgwLCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNTQsIDE3NiwgMTUsIDUsIDI1NCwgMTY5LCAxNSwgNSwgCisgICAgMjU0LCAxMzMsIDE1LCA1LCAyNTQsIDEzNCwgMzAsIDIyMCwgNjQsIDE1LCA1LCAyNTQsIDEyNCwgMTUsIDUsIDI1NCwgMTI1LCAKKyAgICAxMTcsIDI1NCwgMTI0LCAxNSwgNSwgMjU0LCAxMjUsIDEzNCwgMjE2LCA4NiwgMTUsIDUsIDI1NCwgMTI1LCA5NiwgMjI5LCAKKyAgICAyMTgsIDIyNiwgMTY1LCAyNTQsIDEyNSwgOTYsIDIyOSwgMjE3LCAxNSwgNSwgMjU0LCAxMjUsIDk2LCAyMjksIDIxOCwgCisgICAgMjE4LCAyMzQsIDE1LCA1LCAyNTQsIDk1LCAxNSwgNSwgMjU0LCA2OCwgMTUsIDUsIDI1NCwgMzYsIDE1LCA1LCAyNTQsIDM3LCAKKyAgICAzMCwgMjMzLCAxOTcsIDE1LCA1LCAyNTQsIDksIDE1LCA1LCAyNTMsIDIzNywgMTUsIDUsIDI1MywgMjMyLCAxNSwgNSwgCisgICAgMjUzLCAyMzMsIDIxMCwgNDAsIDIxNiwgMjQwLCAxNSwgNSwgMjUzLCAyMzMsIDIzNSwgNCwgMjE2LCAyNDAsIDE1LCA1LCAKKyAgICAyNTMsIDIzMywgMTE3LCAyNTMsIDIzMywgMjE1LCAxMTUsIDExNywgMjE1LCAxMTUsIDIxNSwgMTE1LCAxMTcsIDIxNSwgCisgICAgMTE1LCAyMjYsIDIyLCAxNSwgNSwgMjUzLCAyMzMsIDExNywgMjUzLCAyMzMsIDExNywgMjUzLCAyMzIsIDE1LCA1LCAyNTMsIAorICAgIDIzMywgMTE3LCAyNTMsIDIzMywgMTE3LCAyNTMsIDIzMywgMjQ5LCAxMjYsIDI1MywgMjMzLCAxMTcsIDI1MywgMjMzLCAKKyAgICAxMTcsIDI1MywgMjMyLCAxNSwgNSwgMjUzLCAyMzAsIDE1LCA1LCAyNTMsIDIyNywgMTUsIDUsIDI1MiwgMTkyLCAxNSwgNSwgCisgICAgMjUyLCAxNzcsIDE1LCA1LCAyNTIsIDE3MiwgMTUsIDUsIDI1MiwgMTY4LCAxNSwgNSwgMjUyLCAxNjIsIDE1LCA1LCAyNTIsIAorICAgIDE2MywgMTE3LCAyNTIsIDE2MiwgMTUsIDUsIDI1MiwgMTYxLCAxNSwgNSwgMTMwLCAxNSwgNSwgMjUyLCAxNDEsIDE1LCA1LCAKKyAgICAyNTIsIDcsIDE1LCA1LCAyNTIsIDgsIDMwLCA2MSwgMTUsIDUsIDI1MiwgOCwgMzAsIDI0MywgOTcsIDE1LCA1LCAyNTIsIDgsIAorICAgIDMwLCAyMzYsIDM3LCAyNDIsIDk1LCAxNSwgNSwgMjUxLCAxMjYsIDE1LCA1LCAyNTEsIDEyNywgMTE3LCAyNTEsIDEyNywgCisgICAgMjU1LCAyNiwgMTUsIDUsIDI1MSwgMTI3LCAxMTcsIDI1MSwgMTI3LCAyMTQsIDE5MCwgMTUsIDUsIDI1MSwgMTI3LCAyNDksIAorICAgIDEyNiwgMjUxLCAxMjYsIDE1LCA1LCAyNTEsIDExMCwgMTUsIDUsIDI1MSwgMTExLCAxMTcsIDI1MSwgMTEwLCAxNSwgNSwgCisgICAgMjUxLCA5OSwgMTUsIDUsIDI1MSwgOTgsIDE1LCA1LCAyNDgsIDIyMiwgMTUsIDUsIDI0OCwgMjEzLCAxNSwgNSwgMjQ4LCAKKyAgICAyMTQsIDIzNCwgNjcsIDMwLCAxMTUsIDk2LCAyMzEsIDE0OCwgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjU0LCAKKyAgICAxMzMsIDE1LCA1LCAyNDgsIDIxNCwgMjM0LCA2NywgMzAsIDI1MiwgMTYxLCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgNjcsIAorICAgIDMwLCAyNTIsIDcsIDE1LCA1LCAyNDgsIDIxNCwgMjM0LCA2NywgMzAsIDI0MywgMTM2LCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgCisgICAgNjcsIDMwLCAyNDMsIDEzNywgOTYsIDIzMSwgMTQ4LCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgNjcsIDMwLCAyNDIsIDIxNSwgCisgICAgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjQyLCAxOTgsIDE1LCA1LCAyNDgsIDIxNCwgMjM0LCA2NywgMzAsIAorICAgIDI0MiwgMTA0LCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgNjcsIDMwLCAxNjIsIDE1LCA1LCAyNDgsIDIxNCwgMjM0LCA2NywgCisgICAgMzAsIDIzNSwgMTgwLCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgNjcsIDMwLCAyMzUsIDE4MSwgOTYsIDIzMiwgOTksIDE1LCA1LCAKKyAgICAyNDgsIDIxNCwgMjM0LCA2NywgMzAsIDIzNCwgMjQzLCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgNjcsIDMwLCAyMzMsIDEzNiwgCisgICAgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjMyLCA5OSwgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjMyLCAKKyAgICAxMDAsIDk2LCAyMzEsIDE0NywgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjMyLCA4NSwgMTUsIDUsIDI0OCwgCisgICAgMjE0LCAyMzQsIDY3LCAzMCwgMjI5LCAxMDgsIDE1LCA1LCAyNDgsIDIxNCwgMjM0LCA2NywgMzAsIDIyNiwgMjMsIDk2LCAKKyAgICAyMjYsIDIyLCAxNSwgNSwgMjQ4LCAyMTQsIDIzNCwgNjcsIDMwLCAyMTksIDE5MiwgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIAorICAgIDY3LCAzMCwgMjE3LCA3MywgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjE0LCAyMzEsIDk2LCAyNDIsIDE5OCwgCisgICAgMTUsIDUsIDI0OCwgMjE0LCAyMzQsIDY3LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNDgsIDE4OCwgMTUsIDUsIDI0OCwgMTY3LCAKKyAgICAxNSwgNSwgMjQ4LCAxNjYsIDE1LCA1LCAyNDgsIDE2NSwgMTUsIDUsIDI0OCwgNCwgMTUsIDUsIDI0NywgMjQzLCAxNSwgNSwgCisgICAgMjQ3LCAyMTgsIDE1LCA1LCAyNDcsIDIxOSwgMzAsIDIyMCwgNjQsIDE1LCA1LCAyNDcsIDIxNywgMTUsIDUsIDI0NywgMjA3LCAKKyAgICAxNSwgNSwgMjQ3LCAyMDgsIDIzNCwgMjA5LCAxMDQsIDI0MiwgOTYsIDI0NywgMTg4LCAxNSwgNSwgMjQ3LCAxODgsIDE1LCAKKyAgICA1LCAyNDYsIDc5LCAxNSwgNSwgMjQ2LCA4MCwgMTE3LCAyNDYsIDc5LCAxNSwgNSwgMjQ2LCA4MCwgMjQyLCA5NSwgMTUsIDUsIAorICAgIDI0NiwgODAsIDIyMCwgNDYsIDE1LCA1LCAyNDYsIDc3LCAxNSwgNSwgMjQ2LCA3OCwgMzAsIDI0NSwgNzMsIDE1LCA1LCAKKyAgICAyNDYsIDc2LCAxNSwgNSwgMjQ2LCA3NSwgMTUsIDUsIDI0NiwgNzQsIDE1LCA1LCAyNDYsIDczLCAxNSwgNSwgMjQ2LCA2OSwgCisgICAgMTUsIDUsIDI0NiwgNjcsIDE1LCA1LCAyNDYsIDY4LCAyNDIsIDk1LCAxNSwgNSwgMjQ2LCA2OCwgMjQyLCA5NiwgMjQyLCAKKyAgICA5NSwgMTUsIDUsIDI0NiwgNjYsIDE1LCA1LCAyNDYsIDU5LCAxNSwgNSwgNzUsIDE1LCA1LCAxNjAsIDMwLCAyMjYsIDIyLCAKKyAgICAxNSwgNSwgMTYwLCAxMTcsIDE2MCwgMjI3LCAxOTYsIDExNywgMjI3LCAxOTUsIDE1LCA1LCAyNDUsIDIzNSwgMTUsIDUsIAorICAgIDI0NSwgMjM2LCAzMCwgMTE1LCA5NiwgMjQyLCA1MCwgOTYsIDI0OCwgMjIyLCAxNSwgNSwgMjQ1LCAyMzYsIDMwLCAyNDMsIAorICAgIDk3LCAxNSwgNSwgMjQ1LCAyMzYsIDMwLCAyMzAsIDIzMSwgMTUsIDUsIDI0NSwgMjM2LCAzMCwgMjIyLCA5LCAxNSwgNSwgCisgICAgMjQ1LCAyMzYsIDMwLCAyMjAsIDY0LCAxNSwgNSwgMjQ1LCAyMzYsIDMwLCA3MCwgMTUsIDUsIDI0NSwgMjEyLCAxNSwgNSwgCisgICAgMjQ1LCAyMDEsIDE1LCA1LCAyNDUsIDE3NSwgMTUsIDUsIDI0NSwgMTUxLCAxNSwgNSwgMjQ1LCAxNTIsIDMwLCAyNDMsIAorICAgIDEwNSwgMTUsIDUsIDI0NSwgMTUyLCAzMCwgMjQzLCAxMDYsIDIxNiwgMjQwLCAxNSwgNSwgMjQ1LCAxNTIsIDMwLCAyMzEsIAorICAgIDkyLCAxNSwgNSwgMjQ1LCAxNTIsIDI0OSwgMTI2LCAyNDUsIDE1MSwgMTUsIDUsIDI0NSwgMTUyLCAyMjYsIDE2NSwgMjQ1LCAKKyAgICAxNTEsIDE1LCA1LCAyNDUsIDE1MiwgMjE4LCAyMzQsIDE1LCA1LCAyNDUsIDkwLCAxNSwgNSwgMjQ1LCA4OCwgMTUsIDUsIAorICAgIDI0NSwgNzMsIDE1LCA1LCAyNDUsIDExLCAxNSwgNSwgMjQ1LCAxMiwgMzAsIDYxLCAxNSwgNSwgMjQ1LCAxMiwgMzAsIDExNSwgCisgICAgOTYsIDIzMywgMTA1LCAxNSwgNSwgMjQ1LCAxMiwgMzAsIDExNSwgOTYsIDIzMywgMTA2LCAzMCwgMjMzLCAxMDUsIDE1LCA1LCAKKyAgICAyNDUsIDEyLCAzMCwgMjU0LCAxMjQsIDE1LCA1LCAyNDUsIDEyLCAzMCwgMjUyLCAxNzcsIDE1LCA1LCAyNDUsIDEyLCAzMCwgCisgICAgMjQ2LCA2OCwgMjQyLCA5NSwgMTUsIDUsIDI0NSwgMTIsIDMwLCAyNDYsIDY4LCAyNDIsIDk2LCAyNDIsIDk1LCAxNSwgNSwgCisgICAgMjQ1LCAxMiwgMzAsIDE2MiwgMTUsIDUsIDI0NSwgMTIsIDMwLCAyNDIsIDUwLCAyNDIsIDk1LCAxNSwgNSwgMjQ1LCAxMiwgCisgICAgMzAsIDIzNiwgMzcsIDI0MiwgOTUsIDE1LCA1LCAyNDUsIDEyLCAzMCwgMjM0LCAyMDgsIDE1LCA1LCAyNDUsIDEyLCAzMCwgCisgICAgMjM0LCAyMDksIDIxOCwgMjM0LCAxNSwgNSwgMjQ1LCAxMiwgMzAsIDIzMywgMjE2LCAxNSwgNSwgMjQ1LCAxMiwgMzAsIAorICAgIDIzMywgMTM2LCAxNSwgNSwgMjQ1LCAxMiwgMzAsIDIzMywgMTA2LCAzMCwgMjMzLCAxMDUsIDE1LCA1LCAyNDUsIDEyLCAzMCwgCisgICAgMjMyLCAyNDIsIDE1LCA1LCAyNDUsIDEyLCAzMCwgMjMyLCA5OSwgMTUsIDUsIDI0NSwgMTIsIDMwLCAyMTQsIDIzMCwgMTUsIAorICAgIDUsIDI0NSwgMTIsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDI0MywgMTM2LCAxNSwgNSwgMjQzLCAxMzcsIDI0MiwgOTUsIDE1LCAKKyAgICA1LCAyNDMsIDEzNCwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMTE1LCA5NiwgMjQ4LCAyMjMsIDk2LCAxNjIsIDE1LCA1LCAyNDMsIAorICAgIDEzNSwgMzAsIDExNSwgOTYsIDE2MiwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMTE1LCA5NiwgMjM2LCAzNiwgMTUsIDUsIDI0MywgCisgICAgMTM1LCAzMCwgMjU1LCAyNSwgMjE2LCAyNDEsIDk2LCAyMTcsIDk0LCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyNTQsIDEyNCwgCisgICAgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjUzLCAyMzIsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDI1MywgMjMxLCA5NiwgMjQzLCAKKyAgICAxMTksIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDI1MiwgMTc3LCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyNTIsIDE0MiwgOTYsIAorICAgIDIwNSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjUxLCA5OSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjUxLCAxMDAsIDk2LCAKKyAgICAyMDUsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDI0OCwgMjIyLCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyNDgsIDQsIDE1LCA1LCAKKyAgICAyNDMsIDEzNSwgMzAsIDI0NywgMjE5LCAzMCwgMjIwLCA2NCwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjQ2LCA3NywgMTUsIDUsIAorICAgIDI0MywgMTM1LCAzMCwgMjQ1LCAxNzUsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDI0NSwgMTc2LCA5NiwgMjMzLCAxMzYsIDE1LCAKKyAgICA1LCAyNDMsIDEzNSwgMzAsIDI0NSwgMTUxLCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyNDUsIDE1MiwgMzAsIDI0MywgMTA2LCAKKyAgICAyMTYsIDI0MCwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjQzLCAxMDYsIDIxNiwgMjQwLCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAKKyAgICAyNDMsIDk3LCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyNDIsIDIxNSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjQyLCAyMTMsIAorICAgIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDI0MiwgMjE0LCA5NiwgNjEsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDI0MiwgMTk5LCA5NiwgCisgICAgMjE4LCA4NCwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjQyLCA1MCwgOTYsIDIzMiwgMTAwLCA5NiwgMjQ1LCA3MywgMTUsIDUsIAorICAgIDI0MywgMTM1LCAzMCwgMjQyLCAzMSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjQyLCAzMiwgOTYsIDIzMywgMTM2LCAxNSwgNSwgCisgICAgMjQzLCAxMzUsIDMwLCAyNDEsIDE4MiwgOTYsIDIzMiwgMjQyLCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyNDAsIDIxOSwgMTUsIAorICAgIDUsIDI0MywgMTM1LCAzMCwgMjM2LCAzNywgMjQyLCA5NSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjM1LCAxNjcsIDk2LCAKKyAgICAyNDAsIDIyNCwgOTYsIDI1MywgMjMyLCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyMzQsIDI0MywgMTUsIDUsIDI0MywgMTM1LCAKKyAgICAzMCwgMjM0LCAyMDgsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDIzNCwgOTAsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDIzNCwgOTEsIAorICAgIDk2LCAyMzMsIDEwNSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjMzLCAyMTcsIDk2LCAyNTQsIDEyNCwgMTUsIDUsIDI0MywgCisgICAgMTM1LCAzMCwgMjMzLCAxMzYsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDIzMSwgOTMsIDk2LCAyNDUsIDE1MSwgMTUsIDUsIAorICAgIDI0MywgMTM1LCAzMCwgMjMwLCAyMzEsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDIyNywgMTk1LCAxNSwgNSwgMjQzLCAxMzUsIAorICAgIDMwLCAyMjcsIDE5NiwgMTE3LCAyMjcsIDE5NSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMTkwLCAxNSwgNSwgMjQzLCAxMzUsIAorICAgIDMwLCAyMjIsIDksIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDIyMSwgMjMyLCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyMjAsIDY0LCAKKyAgICAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyMjAsIDY1LCA5NiwgMjE1LCA5OSwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjIwLCAzMSwgCisgICAgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjE4LCA0NCwgMTUsIDUsIDI0MywgMTM1LCAzMCwgMjE3LCA3MywgMTUsIDUsIDI0MywgCisgICAgMTM1LCAzMCwgNzAsIDE1LCA1LCAyNDMsIDEzNSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzUsIDMwLCAyMTQsIAorICAgIDIyMCwgOTYsIDI0NiwgNzksIDE1LCA1LCAyNDMsIDEzNSwgMTE3LCAyNDMsIDEzNCwgMTUsIDUsIDI0MywgMTI5LCAxNSwgNSwgCisgICAgMjQzLCAxMzAsIDI0OSwgMTI2LCAyNDMsIDEyOSwgMTUsIDUsIDI0MywgMTI3LCAxNSwgNSwgMjQzLCAxMjgsIDExNywgMjQzLCAKKyAgICAxMjgsIDI0MywgOTgsIDExNywgMjQzLCA5NywgMTUsIDUsIDI0MywgMTE5LCAxNSwgNSwgMjQzLCAxMjAsIDI0MywgMTI4LCAKKyAgICAxMTcsIDI0MywgMTI4LCAyNDMsIDk4LCAxMTcsIDI0MywgOTcsIDE1LCA1LCAyNDMsIDExOCwgMTUsIDUsIDI0MywgMTE2LCAKKyAgICAxNSwgNSwgMjQzLCAxMDcsIDE1LCA1LCAyNDMsIDEwNSwgMTUsIDUsIDI0MywgMTA2LCAyMTYsIDI0MCwgMTUsIDUsIDI0MywgCisgICAgMTA2LCAxMTcsIDI0MywgMTA1LCAxNSwgNSwgMjQzLCAxMDYsIDI0OSwgMTI2LCAyNDMsIDEwNSwgMTUsIDUsIDI0MywgOTcsIAorICAgIDE1LCA1LCAyNDMsIDk2LCAxNSwgNSwgMjQzLCA5MSwgMTUsIDUsIDI0MywgMzcsIDE1LCA1LCAyNDMsIDM4LCAzMCwgMjMzLCAKKyAgICAxOTcsIDE1LCA1LCAyNDIsIDIxNSwgMTUsIDUsIDI0MiwgMjE2LCAzMCwgNzUsIDE1LCA1LCAyNDIsIDIxNiwgMzAsIDcwLCAKKyAgICAxNSwgNSwgMjQyLCAyMTYsIDI0OSwgMTI2LCAyNDIsIDIxNSwgMTUsIDUsIDI0MiwgMjEzLCAxNSwgNSwgMjQyLCAyMTQsIAorICAgIDExNywgMjQyLCAyMTMsIDE1LCA1LCAyNDIsIDIxNCwgMjQ5LCAxMjYsIDI0MiwgMjEzLCAxNSwgNSwgMjQyLCAyMTAsIDE1LCAKKyAgICA1LCAyNDIsIDE5OCwgMTUsIDUsIDI0MiwgMTk5LCAyNDIsIDk1LCAxNSwgNSwgMjQyLCAxOTYsIDE1LCA1LCAyNDIsIDE5NywgCisgICAgMzAsIDExNSwgOTYsIDIzNiwgMzYsIDE1LCA1LCAyNDIsIDE5NywgMzAsIDI0MywgMTA2LCAyMTYsIDI0MCwgMTUsIDUsIAorICAgIDI0MiwgMTk3LCAzMCwgMjM2LCAzNiwgMTUsIDUsIDI0MiwgMTk3LCAzMCwgMjMyLCAxMDAsIDk2LCAyMzYsIDM2LCAxNSwgNSwgCisgICAgMjQyLCAxOTcsIDMwLCAxOTAsIDE1LCA1LCAyNDIsIDE5MywgMTUsIDUsIDI0MiwgMTkxLCAxNSwgNSwgMjQyLCAxOTIsIAorICAgIDI0OSwgMTI2LCAyNDIsIDE5MSwgMTUsIDUsIDI0MiwgMTkyLCAzMCwgMjUyLCAxNzcsIDE1LCA1LCAyNDIsIDE5MiwgMzAsIAorICAgIDIxNywgNzMsIDE1LCA1LCAyNDIsIDE5MiwgMjE2LCAyNDAsIDE1LCA1LCAyNDIsIDExNCwgMTUsIDUsIDI0MiwgMTE1LCAKKyAgICAyNDksIDEyNiwgMjQyLCAxMTQsIDE1LCA1LCAyNDIsIDExMiwgMTUsIDUsIDI0MiwgMTEzLCAzMCwgMjM0LCAyNDMsIDE1LCAKKyAgICA1LCAyNDIsIDExMywgMzAsIDIzNCwgMjQ0LCAzMCwgMjM2LCAzNywgMjQyLCA5NSwgMTUsIDUsIDI0MiwgMTEzLCAzMCwgCisgICAgMjI3LCAxOTUsIDE1LCA1LCAyNDIsIDExMywgMzAsIDIyMiwgMTAsIDk2LCAyMTUsIDExNCwgMTUsIDUsIDI0MiwgMTEzLCAKKyAgICAyNDIsIDk1LCAxNSwgNSwgMjQyLCAxMDQsIDE1LCA1LCAyNDIsIDEwNSwgMzAsIDExNSwgOTYsIDIzMywgMTk3LCAxNSwgNSwgCisgICAgMjQyLCAxMDUsIDMwLCAyMzMsIDE5NywgMTUsIDUsIDI0MiwgMTA1LCAxMTcsIDI0MiwgMTA1LCAyMzIsIDkyLCAxNSwgNSwgCisgICAgMjQyLCA5OSwgMTUsIDUsIDI0MiwgOTcsIDE1LCA1LCAyNDIsIDk4LCAzMCwgMjIwLCA2NCwgMTUsIDUsIDI0MiwgODksIDE1LCAKKyAgICA1LCAyNDIsIDg4LCAxNSwgNSwgMjQyLCA4NSwgMTUsIDUsIDI0MiwgODQsIDE1LCA1LCAxNjIsIDE1LCA1LCAyNDIsIDUwLCAKKyAgICAyMTYsIDI0MCwgMTUsIDUsIDI0MiwgNTAsIDI0MiwgOTUsIDE1LCA1LCAyNDIsIDMxLCAxNSwgNSwgMjQxLCAxODEsIDE1LCAKKyAgICA1LCAyNDEsIDE4MiwgMzAsIDI1MywgMjMyLCAxNSwgNSwgMjQxLCAxODIsIDMwLCAyNTMsIDIzMCwgMTUsIDUsIDI0MSwgCisgICAgMTgyLCAzMCwgMjUyLCAxNzcsIDE1LCA1LCAyNDEsIDE4MiwgMzAsIDI0NywgMTg4LCAxNSwgNSwgMjQxLCAxODIsIDMwLCAKKyAgICAyNDMsIDEyNywgMTUsIDUsIDI0MSwgMTgyLCAzMCwgMjM0LCA4MiwgMTUsIDUsIDI0MSwgMTgyLCAzMCwgMjI3LCAxOTUsIAorICAgIDE1LCA1LCAyNDEsIDE4MiwgMzAsIDIyMCwgNjQsIDE1LCA1LCAyNDEsIDE4MiwgMzAsIDcwLCAxNSwgNSwgMjQwLCAyMjMsIAorICAgIDE1LCA1LCAyNDAsIDIxOSwgMTUsIDUsIDI0MCwgMjIwLCAzMCwgMjU0LCAxMjQsIDE1LCA1LCAyNDAsIDIyMCwgMzAsIDI0MiwgCisgICAgMzEsIDE1LCA1LCAyNDAsIDIyMCwgMzAsIDIzNCwgMjA4LCAxNSwgNSwgMjQwLCAyMjAsIDMwLCAyMzIsIDE5OCwgMTUsIDUsIAorICAgIDI0MCwgMjIwLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyNDAsIDIxNiwgMTUsIDUsIDczLCAxNSwgNSwgMjQwLCAxNTUsIDYxLCAKKyAgICAxNSwgNSwgMjQwLCAxMTYsIDE1LCA1LCAyMzYsIDY0LCAxNSwgNSwgMjM2LCA2NSwgMTE3LCAyMzYsIDY1LCAyNTEsIDk5LCAKKyAgICAxNSwgNSwgMjM2LCA2NSwgMTE3LCAyMzYsIDY1LCAyMTgsIDIzNCwgMTUsIDUsIDIzNiwgMzksIDE1LCA1LCAyMzYsIDM2LCAKKyAgICAxNSwgNSwgMjM2LCAzNywgMjQ3LCAyNDMsIDE1LCA1LCAyMzYsIDM3LCAyMjMsIDM2LCAxNSwgNSwgMjM2LCAzNywgMTE3LCAKKyAgICAyMzYsIDM3LCAyMjAsIDE1LCAxMTcsIDIyMCwgMTUsIDIxNCwgMjIwLCAxMTcsIDIxNCwgMjE5LCAxNSwgNSwgMjM2LCAzNywgCisgICAgMjQyLCA5NSwgMTUsIDUsIDIzNiwgMjgsIDE1LCA1LCAyMzYsIDI5LCAzMCwgMjQzLCAxMDYsIDIxNiwgMjQwLCAxNSwgNSwgCisgICAgMjM2LCAyNywgMTUsIDUsIDIzNiwgMTcsIDE1LCA1LCAyMzYsIDE4LCAzMCwgMjE3LCA3MywgMTUsIDUsIDIzNiwgMTgsIAorICAgIDI0OSwgMTI2LCAyMzYsIDE3LCAxNSwgNSwgMjM2LCAxOCwgMjI2LCAxNjUsIDIzNiwgMTcsIDE1LCA1LCAyMzYsIDE4LCAKKyAgICAyMTgsIDIzNCwgMTUsIDUsIDIzNiwgMTAsIDE1LCA1LCAyMzYsIDAsIDE1LCA1LCAyMzUsIDE4MCwgMTUsIDUsIDIzNSwgCisgICAgMTY2LCAxNSwgNSwgMTc2LCAxNSwgNSwgMjM1LCAxNCwgMzAsIDYxLCAxNSwgNSwgMjM1LCAxNCwgMzAsIDI1NSwgMCwgMTUsIAorICAgIDUsIDIzNSwgMTQsIDMwLCAyNTUsIDEsIDk2LCAyMzMsIDIxNiwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNTMsIDIzMCwgMTUsIAorICAgIDUsIDIzNSwgMTQsIDMwLCAyNTIsIDE3NywgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNTIsIDE2MSwgMTUsIDUsIDIzNSwgMTQsIAorICAgIDMwLCAxMzAsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjUyLCA3LCAxNSwgNSwgMjM1LCAxNCwgMzAsIDI0NSwgODgsIDE1LCA1LCAKKyAgICAyMzUsIDE0LCAzMCwgMjQ1LCA3MywgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNDMsIDEzNiwgMTUsIDUsIDIzNSwgMTQsIDMwLCAKKyAgICAyNDMsIDExOSwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNDMsIDEwNiwgMjE2LCAyNDAsIDE1LCA1LCAyMzUsIDE0LCAzMCwgCisgICAgMjQzLCA5NywgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNDMsIDk4LCA5NiwgMjIwLCAxMDIsIDk2LCA2MSwgMTUsIDUsIDIzNSwgCisgICAgMTQsIDMwLCAyNDIsIDIxNSwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNDIsIDE5OCwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyNDIsIAorICAgIDE5MiwgOTYsIDIyMSwgMjMyLCAxNSwgNSwgMjM1LCAxNCwgMzAsIDI0MiwgMTkyLCAyNDksIDEyNiwgMjQyLCAxOTEsIDE1LCAKKyAgICA1LCAyMzUsIDE0LCAzMCwgMjQyLCAxMTQsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjQyLCA4OCwgMTUsIDUsIDIzNSwgMTQsIAorICAgIDMwLCAyMzYsIDM2LCAxNSwgNSwgMjM1LCAxNCwgMzAsIDIzNiwgMTcsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjM0LCAyNDMsIAorICAgIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjM0LCA5MywgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMzQsIDkwLCAxNSwgNSwgMjM1LCAxNCwgCisgICAgMzAsIDIzMiwgMjQyLCAxNSwgNSwgMjM1LCAxNCwgMzAsIDIzMiwgOTksIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjMxLCA5MiwgCisgICAgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMzEsIDkzLCA5NiwgMjQ2LCA3OSwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMzEsIDkzLCAKKyAgICA5NiwgMjQyLCAyMTUsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjMxLCA5MywgOTYsIDIxNywgMjMsIDE1LCA1LCAyMzUsIDE0LCAKKyAgICAzMCwgMjMwLCAyMzEsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjMwLCAyMzIsIDk2LCAyMjcsIDE5MCwgMTUsIDUsIDIzNSwgMTQsIAorICAgIDMwLCAyMjksIDEwOCwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMjcsIDE5NSwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMjUsIDEwOSwgCisgICAgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMjIsIDE0MSwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMDYsIDE1LCA1LCAyMzUsIDE0LCAKKyAgICAzMCwgMjIxLCAyMzIsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjIwLCAxMDMsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjIwLCA2NCwgCisgICAgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMjAsIDMxLCAxNSwgNSwgMjM1LCAxNCwgMzAsIDIxOSwgMjI2LCAxNSwgNSwgMjM1LCAKKyAgICAxNCwgMzAsIDIxOSwgMTgzLCAxNSwgNSwgMjM1LCAxNCwgMzAsIDIxOCwgNTIsIDE1LCA1LCAyMzUsIDE0LCAzMCwgMjE3LCAKKyAgICA1MSwgMTUsIDUsIDIzNSwgMTQsIDMwLCA3MCwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIzNSwgMTQsIAorICAgIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMTQsIDE5MywgMzAsIDE5MCwgMTUsIDUsIDIzNSwgMTQsIDMwLCAKKyAgICAyMTQsIDEyNiwgMTUsIDUsIDIzNSwgMTQsIDMwLCAyMTAsIDQ0LCAxNSwgNSwgMjM1LCAxMiwgMTUsIDUsIDIzNSwgMTMsIAorICAgIDI0OSwgMTI2LCAyMzUsIDEyLCAxNSwgNSwgMjM1LCA1LCAxNSwgNSwgMjM1LCAyLCAxNSwgNSwgMjM1LCAwLCAxNSwgNSwgCisgICAgMjM0LCAyNTUsIDE1LCA1LCAyMzQsIDI1MywgMTUsIDUsIDIzNCwgMjU0LCAxMTcsIDIzNCwgMjUzLCAxNSwgNSwgMjM0LCAKKyAgICAyNDMsIDE1LCA1LCAyMzQsIDI0NCwgMzAsIDIzNiwgMzcsIDI0MiwgOTUsIDE1LCA1LCAyMzQsIDIzOSwgMTUsIDUsIDIzNCwgCisgICAgMjQwLCAzMCwgMjUyLCAxNzcsIDE1LCA1LCAyMzQsIDI0MCwgMjQ5LCAxMjYsIDIzNCwgMjM5LCAxNSwgNSwgMjM0LCAyMzcsIAorICAgIDE1LCA1LCAyMzQsIDIzNiwgMTUsIDUsIDIzNCwgMjA4LCAxNSwgNSwgMjM0LCAyMDksIDIzMywgMTE5LCAzMCwgMTA0LCAKKyAgICAxMTcsIDIzMywgMTE5LCAzMCwgNzAsIDE1LCA1LCAyMzQsIDIwOSwgMTE3LCAyMzQsIDIwOSwgMjMzLCAxMTksIDMwLCAxMDQsIAorICAgIDExNywgMjMzLCAxMTksIDMwLCA3MCwgMTUsIDUsIDIzNCwgMTU4LCAxNSwgNSwgMjM0LCA5MywgMTUsIDUsIDIzNCwgOTQsIAorICAgIDMwLCAyNTIsIDE3NywgMTUsIDUsIDIzNCwgOTQsIDMwLCA3MCwgMTUsIDUsIDIzNCwgOTQsIDMwLCAyMTQsIDIxOSwgMTUsIAorICAgIDUsIDIzNCwgOTAsIDE1LCA1LCAyMzQsIDgyLCAxNSwgNSwgMjM0LCA2OSwgMTUsIDUsIDIzNCwgNjgsIDE1LCA1LCAyMzQsIAorICAgIDY2LCAxNSwgNSwgMjM0LCA2NywgMTE3LCAyMzQsIDY2LCAxNSwgNSwgMjMzLCAyMTgsIDE1LCA1LCAyMzMsIDIxOSwgMTE3LCAKKyAgICAyNDEsIDE4MiwgMzAsIDI1MywgMjMxLCAyMzMsIDIxOSwgMTE3LCAyNDEsIDE4MiwgMzAsIDI1MywgMjMwLCAxNSwgNSwgCisgICAgMjMzLCAyMTYsIDE1LCA1LCAyMzMsIDIxNCwgMTUsIDUsIDIzMywgMjE1LCAyMTQsIDEyLCAxNywgMTUsIDUsIDIzMywgMjEzLCAKKyAgICAxNSwgNSwgMjMzLCAyMTAsIDE1LCA1LCAyMzMsIDIxMSwgMjQyLCA5NSwgMTUsIDUsIDIzMywgMjA5LCAxNSwgNSwgMjMzLCAKKyAgICAxOTcsIDE1LCA1LCAyMzMsIDE5OCwgMjI2LCAxNjUsIDIzMywgMTk3LCAxNSwgNSwgMjMzLCAxOTIsIDE1LCA1LCAyMzMsIAorICAgIDE3MywgMTUsIDUsIDIzMywgMTM2LCAxNSwgNSwgMjMzLCAxMTgsIDE1LCA1LCAyMzMsIDExOSwgMzAsIDYxLCAxNSwgNSwgCisgICAgMjMzLCAxMTksIDMwLCAxMTUsIDk2LCAyNDgsIDIyMywgOTYsIDE2MiwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMTE1LCA5NiwgCisgICAgMjQzLCA5NywgMTUsIDUsIDIzMywgMTE5LCAzMCwgMTE1LCA5NiwgMjMzLCAxMDUsIDE1LCA1LCAyMzMsIDExOSwgMzAsIAorICAgIDI1NCwgMTc5LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyNTQsIDEyNCwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjUzLCAyMzMsIAorICAgIDIxMCwgNDAsIDIxNiwgMjQwLCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyNTIsIDE3NywgMTUsIDUsIDIzMywgMTE5LCAzMCwgCisgICAgMjUyLCA3LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyNDgsIDE2NywgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjQ1LCAxNTEsIDE1LCAKKyAgICA1LCAyMzMsIDExOSwgMzAsIDI0MywgMTM2LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyNDMsIDk3LCAxNSwgNSwgMjMzLCAxMTksIAorICAgIDMwLCAyNDIsIDEwNCwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjQyLCAxMDUsIDk2LCAyNDIsIDEwNCwgMTUsIDUsIDIzMywgCisgICAgMTE5LCAzMCwgMTYyLCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyNDIsIDMxLCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyNDEsIAorICAgIDE4MiwgMzAsIDIyNywgMTk1LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMzYsIDM3LCAyNDIsIDk1LCAxNSwgNSwgMjMzLCAKKyAgICAxMTksIDMwLCAyMzYsIDE3LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMzYsIDE4LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMTksIAorICAgIDMwLCAyMzYsIDE4LCA5NiwgMjMyLCA5OSwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjM0LCA5MywgMTUsIDUsIDIzMywgMTE5LCAKKyAgICAzMCwgMjM0LCA4MiwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjMzLCAyMTYsIDE1LCA1LCAyMzMsIDExOSwgMzAsIDIzMywgCisgICAgMjEwLCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMzMsIDIxMSwgOTYsIDI0MSwgMTgyLCA5NiwgNjEsIDE1LCA1LCAyMzMsIAorICAgIDExOSwgMzAsIDIzMywgMTE4LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMzIsIDE5OCwgMTUsIDUsIDIzMywgMTE5LCAzMCwgCisgICAgMjMyLCA5OSwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjMyLCA4NywgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjMxLCA5MiwgMTUsIAorICAgIDUsIDIzMywgMTE5LCAzMCwgMjMxLCA5MywgOTYsIDI0NSwgMTUxLCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMzAsIDYyLCAxNSwgCisgICAgNSwgMjMzLCAxMTksIDMwLCAyMjksIDEwOCwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjIwLCA2NSwgOTYsIDIxOCwgNDQsIDE1LCAKKyAgICA1LCAyMzMsIDExOSwgMzAsIDIyMCwgMTEsIDk2LCAyNDIsIDE5MiwgOTYsIDI0NSwgODgsIDE1LCA1LCAyMzMsIDExOSwgMzAsIAorICAgIDIyMCwgMTEsIDk2LCAyNDIsIDE5MiwgMjE2LCAyNDAsIDE1LCA1LCAyMzMsIDExOSwgMzAsIDIxOSwgMjI0LCAxNSwgNSwgCisgICAgMjMzLCAxMTksIDMwLCAyMTksIDIyNSwgOTYsIDIxOSwgMjI0LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMTgsIDQ0LCAxNSwgCisgICAgNSwgMjMzLCAxMTksIDMwLCAyMTcsIDg1LCAxNSwgNSwgMjMzLCAxMTksIDMwLCAyMTcsIDczLCAxNSwgNSwgMjMzLCAxMTksIAorICAgIDMwLCAyMTcsIDI0LCA5NiwgMTE1LCA5NiwgMjE4LCA4NSwgOTYsIDE5NywgMTUsIDUsIDIzMywgMTE5LCAzMCwgNzAsIDE1LCAKKyAgICA1LCAyMzMsIDExOSwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAxMTksIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgCisgICAgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIDIzMiwgMTUsIDUsIDIzMywgMTE5LCAzMCwgMjE0LCAKKyAgICAyMTksIDE1LCA1LCAyMzMsIDExOSwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjMzLCAxMTksIDIxOCwgMjM0LCAxNSwgNSwgCisgICAgMjMzLCAxMTYsIDE1LCA1LCAyMzMsIDExNywgMzAsIDIyMCwgNjQsIDE1LCA1LCAyMzMsIDExNywgMzAsIDIyMCwgNjUsIDk2LCAKKyAgICAyMTgsIDQ0LCAxNSwgNSwgMjMzLCAxMTcsIDI0MiwgOTUsIDE1LCA1LCAyMzMsIDExNywgMjQyLCA5NiwgMTE3LCAyMzMsIAorICAgIDExNywgMjQyLCA5NiwgMjIwLCA2NCwgMTUsIDUsIDIzMywgMTEyLCAxNSwgNSwgMjMzLCAxMDUsIDE1LCA1LCAyMzMsIDEwNiwgCisgICAgMzAsIDIzMywgMTA1LCAxNSwgNSwgMjMzLCAxMDMsIDE1LCA1LCAyMzMsIDEwNCwgMzAsIDIzMywgMTk3LCAxNSwgNSwgMjMzLCAKKyAgICAxMDQsIDMwLCAyMzMsIDE5OCwgOTYsIDIyMiwgMTQxLCAxNSwgNSwgMjMyLCAyNDIsIDE1LCA1LCAyMzIsIDIyNywgMTUsIDUsIAorICAgIDIzMiwgMjE3LCAxNSwgNSwgMjMyLCAxOTgsIDE1LCA1LCAyMzIsIDk5LCAxNSwgNSwgMjMyLCAxMDAsIDMwLCAyNTIsIDE3NywgCisgICAgMTUsIDUsIDIzMiwgOTcsIDE1LCA1LCAyMzIsIDk4LCAzMCwgMjU0LCAxNzksIDE1LCA1LCAyMzIsIDk4LCAzMCwgMjUyLCAKKyAgICAxNzcsIDE1LCA1LCAyMzIsIDk4LCAzMCwgMjQ1LCA3MywgMTUsIDUsIDIzMiwgOTgsIDMwLCAyNDUsIDc0LCAyMTYsIDI0MCwgCisgICAgMTUsIDUsIDIzMiwgOTgsIDMwLCAyNDMsIDEwNiwgMjE2LCAyNDAsIDE1LCA1LCAyMzIsIDk4LCAzMCwgMjQxLCAxODIsIDMwLCAKKyAgICAyNTIsIDE3NywgMTUsIDUsIDIzMiwgOTgsIDMwLCAyMzYsIDE3LCAxNSwgNSwgMjMyLCA5OCwgMzAsIDIzNSwgMiwgMTUsIDUsIAorICAgIDIzMiwgOTgsIDMwLCAyMzUsIDAsIDE1LCA1LCAyMzIsIDk4LCAzMCwgMjM1LCAxLCA5NiwgMjUzLCAyMzIsIDE1LCA1LCAKKyAgICAyMzIsIDk4LCAzMCwgMjM0LCA5MywgMTUsIDUsIDIzMiwgOTgsIDMwLCAyMzMsIDEzNywgOTYsIDI1MywgMjMyLCAxNSwgNSwgCisgICAgMjMyLCA5OCwgMzAsIDIzMywgMTE4LCAxNSwgNSwgMjMyLCA5OCwgMzAsIDIzMSwgOTMsIDk2LCAyNDUsIDE1MSwgMTUsIDUsIAorICAgIDIzMiwgOTgsIDMwLCAyMjksIDEwOCwgMTUsIDUsIDIzMiwgOTgsIDMwLCAyMjcsIDIzOCwgMTUsIDUsIDIzMiwgOTgsIDMwLCAKKyAgICAyMTksIDE5MywgOTYsIDI1MywgMjMyLCAxNSwgNSwgMjMyLCA5OCwgMzAsIDIxOSwgMTc1LCA5NiwgMjUxLCAxMjYsIDE1LCAKKyAgICA1LCAyMzIsIDk4LCAzMCwgMjE1LCAxMTQsIDE1LCA1LCAyMzIsIDk4LCAyMTYsIDI0MCwgMTUsIDUsIDIzMiwgOTgsIDI0OSwgCisgICAgMTI2LCAyMzIsIDk3LCAxNSwgNSwgMjMyLCA5OCwgMjI2LCAxNjUsIDIzMiwgOTcsIDE1LCA1LCAyMzIsIDk4LCAyMTgsIAorICAgIDIzNCwgMTUsIDUsIDIzMiwgOTgsIDIyMCwgNDYsIDE1LCA1LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5MiwgMTUsIDUsIDIzMiwgCisgICAgOTMsIDExNywgMjMyLCA5MiwgMTUsIDUsIDIzMiwgOTMsIDIyNiwgMTY1LCAyMzIsIDkyLCAxNSwgNSwgMjMyLCA5MywgMjIwLCAKKyAgICA0NiwgMTUsIDUsIDIzMiwgOTAsIDE1LCA1LCAyMzIsIDg3LCAxNSwgNSwgMjMyLCA4NSwgMTUsIDUsIDIzMiwgODYsIDExNywgCisgICAgMjMyLCA4NSwgMTUsIDUsIDIzMiwgODYsIDExNywgMjMyLCA4NiwgMjQzLCA5OCwgMTE3LCAyNDMsIDk3LCAxNSwgNSwgMTg1LCAKKyAgICAxNSwgNSwgMjMxLCAyNDAsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjMxLCAyNDAsIDI0MiwgOTUsIDE1LCA1LCAyMzEsIDIzOSwgCisgICAgMTUsIDUsIDIzMSwgMjExLCAxNSwgNSwgMjMxLCAxNjcsIDE1LCA1LCAyMzEsIDE0OCwgMTUsIDUsIDIzMSwgMTQ3LCAxNSwgCisgICAgNSwgMjMxLCA5MiwgMTUsIDUsIDIzMSwgNDgsIDE1LCA1LCAyMzAsIDIzMSwgMTUsIDUsIDIzMCwgMTg5LCAxNSwgNSwgMjMwLCAKKyAgICAxMDMsIDE1LCA1LCAyMzAsIDEwNCwgMTE3LCAyMzAsIDEwMywgMTUsIDUsIDIzMCwgOTQsIDE1LCA1LCAyMzAsIDk1LCAyNDIsIAorICAgIDk1LCAxNSwgNSwgMjMwLCA3OSwgMTUsIDUsIDIzMCwgNjUsIDE1LCA1LCAyMzAsIDYyLCAxNSwgNSwgMjMwLCA2MywgMzAsIAorICAgIDYxLCAxNSwgNSwgMjMwLCA2MywgMzAsIDIzMywgMTk3LCAxNSwgNSwgMjMwLCA2MywgMzAsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgMjMwLCA2MywgMTE3LCAyMzAsIDYyLCAxNSwgNSwgMjMwLCA2MywgMTE3LCAyMzAsIDYzLCAzMCwgMTE1LCA5NiwgMTk3LCAKKyAgICAxNSwgNSwgMjMwLCA2MywgMjQ5LCAxMjYsIDIzMCwgNjIsIDE1LCA1LCAyMzAsIDYwLCAxNSwgNSwgMjMwLCA2MSwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjMwLCA2MSwgMzAsIDExNSwgOTYsIDI0OCwgNCwgMTUsIDUsIDIzMCwgNjEsIDMwLCAyNDgsIDQsIDE1LCAKKyAgICA1LCAyMzAsIDYxLCAyNDIsIDk1LCAxNSwgNSwgMTk3LCAxNSwgNSwgMjI5LCAyMjgsIDE1LCA1LCAyMjksIDIxNywgMTUsIDUsIAorICAgIDIyOSwgMjE4LCAyMzUsIDE5MywgMTUsIDUsIDIyOSwgMjE4LCAzMCwgMjE5LCAyMjcsIDIxNiwgMjQwLCAxNSwgNSwgMjI5LCAKKyAgICAyMTgsIDIyNiwgMTY1LCAyMjksIDIxNywgMTUsIDUsIDIyOSwgMjE2LCAxNSwgNSwgMjI5LCAyMDksIDIyNywgMTgxLCAxNSwgCisgICAgNSwgMjI5LCAyMDgsIDE1LCA1LCAyMjksIDIwNywgMTUsIDUsIDIyOSwgMTA4LCAxNSwgNSwgMjI5LCAxMDksIDMwLCA2MSwgCisgICAgMTUsIDUsIDIyOSwgMTA5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMjksIDEwOSwgMjIwLCA0NiwgMTUsIDUsIDIyOCwgMjM0LCAKKyAgICAxNSwgNSwgMjI4LCAyMzUsIDMwLCA3NSwgMTUsIDUsIDIyOCwgMjMzLCAxNSwgNSwgMjI4LCAyMDQsIDE1LCA1LCAyMjgsIAorICAgIDIwNSwgMzAsIDI0MywgMTA2LCAyMTYsIDI0MCwgMTUsIDUsIDIyOCwgMjA1LCAzMCwgMjQzLCA5OCwgOTYsIDI0MywgMTA2LCAKKyAgICAyMTYsIDI0MCwgMTUsIDUsIDIyOCwgMjAyLCAxNSwgNSwgMjI4LCAyMDMsIDMwLCAyNTQsIDEyNCwgMTUsIDUsIDIyOCwgCisgICAgMjAzLCAzMCwgMjUzLCAyMzIsIDE1LCA1LCAyMjgsIDIwMywgMzAsIDI1MywgMjMzLCA5NiwgMjUzLCAyMzIsIDE1LCA1LCAKKyAgICAyMjgsIDIwMywgMzAsIDI0MiwgMTA0LCAxNSwgNSwgMjI4LCAyMDMsIDMwLCAyMzEsIDkzLCA5NiwgMjQzLCAxMDYsIDIxNiwgCisgICAgMjQwLCAxNSwgNSwgMjI4LCAyMDMsIDMwLCAyMjksIDEwOCwgMTUsIDUsIDIyOCwgMjAzLCAzMCwgMjI3LCAxOTUsIDE1LCA1LCAKKyAgICAyMjgsIDIwMywgMzAsIDIyMCwgNjQsIDE1LCA1LCAyMjgsIDIwMywgMzAsIDIyMCwgNjUsIDk2LCAxMTUsIDI1NCwgMTI0LCAKKyAgICAxNSwgNSwgMjI4LCAyMDMsIDMwLCAyMjAsIDY1LCA5NiwgMjUzLCAyMzIsIDE1LCA1LCAyMjgsIDIwMywgMzAsIDIyMCwgNjUsIAorICAgIDk2LCAyNTMsIDIzMywgOTYsIDI1MywgMjMyLCAxNSwgNSwgMjI4LCAyMDMsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjMyLCAKKyAgICAxNSwgNSwgMjI4LCAyMDMsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyOCwgMTkxLCAxNSwgNSwgMjI3LCAyMzgsIDE1LCA1LCAKKyAgICAyMjcsIDIxMSwgMTUsIDUsIDIyNywgMTk1LCAxNSwgNSwgMjI3LCAxOTYsIDIzMywgMTE3LCAzMCwgMjQzLCA5NywgMTUsIDUsIAorICAgIDIyNywgMTk2LCAyMzMsIDExNywgMzAsIDIzMSwgMTQ4LCAxNSwgNSwgMjI3LCAxOTYsIDIzMywgMTE3LCAzMCwgMjIyLCA5LCAKKyAgICAxNSwgNSwgMjI3LCAxOTYsIDIzMywgMTE3LCAzMCwgMjIyLCAxMCwgMTE3LCAyMjcsIDE5NiwgMjMzLCAxMTcsIDMwLCAyMjIsIAorICAgIDksIDE1LCA1LCAyMjcsIDE5NiwgMjMzLCAxMTcsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk2LCAyMTYsIDI0MCwgCisgICAgMTUsIDUsIDIyNywgMTk2LCAxMTcsIDIyNywgMTk1LCAxNSwgNSwgMjI3LCAxOTYsIDI0OSwgMTI2LCAyMjcsIDE5NSwgMTUsIAorICAgIDUsIDIyNywgMTk2LCAyNDksIDEyNiwgMjI3LCAxOTYsIDIzMywgMTE3LCAxMTcsIDIzMywgMTE2LCAxNSwgNSwgMjI3LCAKKyAgICAxOTAsIDE1LCA1LCAyMjcsIDE5MSwgMjU1LCAyNSwgMzAsIDI1MywgMjI3LCAxNSwgNSwgMjI3LCAxOTEsIDI1NSwgMjUsIAorICAgIDMwLCAyNTIsIDcsIDE1LCA1LCAyMjcsIDE5MSwgMjU1LCAyNSwgMzAsIDI0NiwgNzUsIDE1LCA1LCAyMjcsIDE5MSwgMjU1LCAKKyAgICAyNSwgMzAsIDI0MiwgMTA0LCAxNSwgNSwgMjI3LCAxOTEsIDI1NSwgMjUsIDMwLCAyMzYsIDM3LCAyNDIsIDk1LCAxNSwgNSwgCisgICAgMjI3LCAxOTEsIDI1NSwgMjUsIDMwLCAyMzUsIDAsIDE1LCA1LCAyMjcsIDE5MSwgMjU1LCAyNSwgMzAsIDIzMywgMTM2LCAKKyAgICAxNSwgNSwgMjI3LCAxOTEsIDI1NSwgMjUsIDMwLCAyMjksIDEwOCwgMTUsIDUsIDIyNywgMTkxLCAyNTUsIDI1LCAzMCwgCisgICAgMjE5LCAxNzIsIDE1LCA1LCAyMjcsIDE5MSwgMjU1LCAyNSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjI3LCAxOTEsIDIzNCwgCisgICAgNjcsIDMwLCAyNTIsIDcsIDE1LCA1LCAyMjcsIDE5MSwgMjM0LCA2NywgMzAsIDI1MiwgOCwgNzAsIDE1LCA1LCAxOTAsIDE1LCAKKyAgICA1LCAyMjYsIDgxLCAxNSwgNSwgMjI2LCA0OCwgMTUsIDUsIDIyNiwgMjIsIDE1LCA1LCAyMjUsIDE2MiwgMTUsIDUsIDIyNSwgCisgICAgMTA5LCAxNSwgNSwgMjI1LCAxMTAsIDMwLCA2MSwgMTUsIDUsIDIyNSwgMTEwLCAzMCwgMjU1LCAyNiwgMTUsIDUsIDIyNSwgCisgICAgMTEwLCAzMCwgMjUyLCA3LCAxNSwgNSwgMjI1LCAxMTAsIDMwLCAyNTEsIDEyNiwgMTUsIDUsIDIyNSwgMTEwLCAzMCwgNzUsIAorICAgIDE1LCA1LCAyMjUsIDExMCwgMzAsIDczLCAxNSwgNSwgMjI1LCAxMTAsIDMwLCAyNDAsIDExNiwgMTUsIDUsIDIyNSwgMTEwLCAKKyAgICAzMCwgNzAsIDE1LCA1LCAyMjUsIDExMCwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjI1LCAxMTAsIDI0OSwgMTI2LCAyMjUsIAorICAgIDEwOSwgMTUsIDUsIDIyNSwgNTQsIDE1LCA1LCAyMjUsIDU1LCAzMCwgMjM0LCAyMzksIDE1LCA1LCAyMjUsIDU1LCAzMCwgCisgICAgMjE0LCAyMTksIDE1LCA1LCAyMjUsIDU1LCAzMCwgMjEwLCAxMTYsIDE1LCA1LCAyMjUsIDU1LCAyMjYsIDE2NSwgMjI1LCAKKyAgICA1NCwgMTUsIDUsIDIwNSwgMTUsIDUsIDIyMywgMTgzLCAxNSwgNSwgMjIzLCAzNiwgMTUsIDUsIDIyMiwgMTQxLCAxNSwgNSwgCisgICAgMjA2LCAxNSwgNSwgMjIyLCAyMywgMjI3LCAxODEsIDE1LCA1LCAyMjIsIDIyLCAxNSwgNSwgMjIyLCAyMywgMzAsIDYxLCAKKyAgICAxNSwgNSwgMjIyLCAyMywgMzAsIDI0NiwgNzksIDE1LCA1LCAyMjIsIDIzLCAzMCwgMjQ2LCA3NywgMTUsIDUsIDIyMiwgMjMsIAorICAgIDMwLCAxNjIsIDE1LCA1LCAyMjIsIDIzLCAzMCwgMjM0LCAyNDMsIDE1LCA1LCAyMjIsIDIzLCAzMCwgMjMzLCAxOTcsIDE1LCAKKyAgICA1LCAyMjIsIDIzLCAzMCwgMjMyLCA4NSwgMTUsIDUsIDIyMiwgMjMsIDMwLCAyMzAsIDIzMSwgMTUsIDUsIDIyMiwgMjMsIAorICAgIDMwLCAyMjcsIDE5NSwgMTUsIDUsIDIyMiwgMjMsIDMwLCAyMjIsIDksIDE1LCA1LCAyMjIsIDIzLCAzMCwgMjIwLCAzMSwgCisgICAgMTUsIDUsIDIyMiwgMjMsIDMwLCAyMTcsIDk0LCAxNSwgNSwgMjIyLCAyMywgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjIyLCAKKyAgICAyMywgMzAsIDIxNCwgMjI1LCAxNSwgNSwgMjIyLCAyMywgMzAsIDIxNCwgMTk3LCAxNSwgNSwgMjIyLCAyMywgMzAsIDIxNCwgCisgICAgMTUwLCAxNSwgNSwgMjIyLCAyMywgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjIyLCAyMywgMTE3LCAyMjIsIDIyLCAxNSwgNSwgCisgICAgMjIyLCAyMywgMjQyLCA5NSwgMTUsIDUsIDIyMiwgOSwgMTUsIDUsIDIyMiwgMTAsIDIzMywgMTE5LCAzMCwgMjUzLCAyMzAsIAorICAgIDE1LCA1LCAyMjEsIDI0MCwgMTUsIDUsIDIyMSwgMjMyLCAxNSwgNSwgMjIwLCAxMDMsIDE1LCA1LCAyMjAsIDEwMSwgMTUsIAorICAgIDUsIDIyMCwgMTAyLCAzMCwgNjEsIDE1LCA1LCAyMjAsIDEwMiwgMzAsIDI1MiwgMTc3LCAxNSwgNSwgMjIwLCAxMDIsIDMwLCAKKyAgICAyNDIsIDE5MSwgMTUsIDUsIDIyMCwgMTAyLCAzMCwgMjI5LCAxMDgsIDE1LCA1LCAyMjAsIDEwMiwgMzAsIDIxOSwgMjI0LCAKKyAgICAxNSwgNSwgMjIwLCAxMDIsIDMwLCAyMTUsIDk5LCAxNSwgNSwgMjIwLCAxMDIsIDMwLCA3MCwgMTUsIDUsIDIyMCwgMTAyLCAKKyAgICAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMjAsIDEwMCwgMTUsIDUsIDIyMCwgOTgsIDE1LCA1LCAyMjAsIDc5LCAxNSwgNSwgCisgICAgMjIwLCA2NCwgMTUsIDUsIDIyMCwgNjUsIDI0MCwgMjIzLCAxNSwgNSwgMjIwLCA2NSwgMTE3LCAyMjAsIDY1LCAyNDMsIAorICAgIDEyOCwgMTE3LCAyNDMsIDEyOCwgMjQzLCA5OCwgMTE3LCAyNDMsIDk3LCAxNSwgNSwgMjIwLCA2NSwgMTE3LCAyMjAsIDY1LCAKKyAgICAyMTcsIDk1LCAxMTcsIDIxNywgOTUsIDI0MywgOTgsIDExNywgMjQzLCA5NywgMTUsIDUsIDIyMCwgNTcsIDE1LCA1LCAyMjAsIAorICAgIDUyLCAxNSwgNSwgMjIwLCA0OSwgMTUsIDUsIDIyMCwgNDgsIDE1LCA1LCAyMjAsIDQ1LCAxNSwgNSwgMjIwLCAzMSwgMTUsIAorICAgIDUsIDIyMCwgMzIsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMzIsIDMwLCAyMzYsIDE3LCAxNSwgNSwgMjIwLCAyNSwgMTUsIDUsIAorICAgIDIyMCwgMjYsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMjYsIDMwLCAyNTIsIDE2MiwgMTUsIDUsIDIyMCwgMjYsIDMwLCAyNTEsIAorICAgIDExMCwgMTUsIDUsIDIyMCwgMjYsIDMwLCAyNDcsIDIwNywgMTUsIDUsIDIyMCwgMjYsIDMwLCAyNDMsIDk3LCAxNSwgNSwgCisgICAgMjIwLCAyNiwgMzAsIDIzNiwgMzYsIDE1LCA1LCAyMjAsIDI2LCAzMCwgMjM2LCAzNywgMjQyLCA5NSwgMTUsIDUsIDIyMCwgCisgICAgMjYsIDMwLCAyMzMsIDE5MiwgMTUsIDUsIDIyMCwgMjYsIDMwLCAyMzIsIDg3LCAxNSwgNSwgMjIwLCAyNiwgMzAsIDIzMCwgCisgICAgOTQsIDE1LCA1LCAyMjAsIDI2LCAzMCwgMjIyLCA5LCAxNSwgNSwgMjIwLCAxOSwgMTUsIDUsIDIyMCwgMTQsIDE1LCA1LCAKKyAgICAyMjAsIDE1LCAyMTYsIDI0MCwgMTUsIDUsIDIyMCwgMTUsIDExNywgMjIwLCAxNSwgMjUxLCAxMDAsIDExNywgMjUxLCA5OSwgCisgICAgMTUsIDUsIDIyMCwgMTAsIDE1LCA1LCAyMTksIDIyNiwgMTUsIDUsIDIxOSwgMjI3LCAxMTcsIDIzNSwgMTk0LCAyMTksIAorICAgIDIyNiwgMTUsIDUsIDIxOSwgMjI0LCAxNSwgNSwgMjE5LCAyMjMsIDE1LCA1LCAyMTksIDE5MiwgMTUsIDUsIDIxOSwgMTkzLCAKKyAgICAyNDIsIDk1LCAxNSwgNSwgMjE5LCAxODMsIDE1LCA1LCAyMTksIDE4MSwgMTUsIDUsIDIxOSwgMTgyLCAxMTcsIDIxOSwgCisgICAgMTgyLCAyMTksIDIyNCwgMTUsIDUsIDIxOSwgMTc0LCAxNSwgNSwgMjE5LCAxNzIsIDE1LCA1LCAyMTgsIDg0LCAxNSwgNSwgCisgICAgMjE4LCA4NSwgMTE3LCAyMTgsIDg0LCAxNSwgNSwgMjE4LCA1NSwgMTUsIDUsIDIxOCwgNTQsIDE1LCA1LCAyMTgsIDUyLCAKKyAgICAxNSwgNSwgMjE4LCA0NCwgMTUsIDUsIDIxOCwgNDMsIDE1LCA1LCAyMTgsIDE4LCAxNSwgNSwgMjE4LCAxNywgMTUsIDUsIAorICAgIDIxNywgMTA2LCAxNSwgNSwgMjE3LCAxMDcsIDI1MywgMjE3LCAxNSwgNSwgMjE3LCAxMDcsIDMwLCAyNDEsIDE4MSwgMTUsIAorICAgIDUsIDIxNywgMTA3LCAzMCwgMjMwLCAyMzEsIDE1LCA1LCAyMTcsIDEwNywgMjQyLCA5NSwgMTUsIDUsIDIxNywgOTQsIDE1LCAKKyAgICA1LCAyMTcsIDk1LCAxMTcsIDIxNywgOTUsIDIyOCwgMjM1LCAxMTcsIDIyOCwgMjM1LCAyNDcsIDE4OSwgMTE3LCAyNDcsIAorICAgIDE4OCwgMTUsIDUsIDIxNywgOTUsIDIxOCwgMjM0LCAxNSwgNSwgMjE3LCA4NSwgMTUsIDUsIDEyOSwgMzAsIDI1MiwgNywgCisgICAgMTUsIDUsIDEyOSwgMzAsIDI0MiwgMTA0LCAxNSwgNSwgMTI5LCAzMCwgMjIwLCA2NCwgMTUsIDUsIDEyOSwgMzAsIDIxOSwgCisgICAgMjI2LCAxNSwgNSwgMTI5LCAzMCwgMjE1LCAxMTQsIDE1LCA1LCAxMjksIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIxNywgNzMsIAorICAgIDE1LCA1LCAyMTcsIDUxLCAxNSwgNSwgMjE3LCAyMywgMTUsIDUsIDIxNywgMjQsIDI0MiwgOTUsIDE1LCA1LCAyMTYsIDExOCwgCisgICAgMTUsIDUsIDIxNiwgMTE5LCAyMTYsIDI0MCwgMTUsIDUsIDIxNiwgOTEsIDE1LCA1LCAyMTYsIDczLCAxNSwgNSwgMjE2LCAKKyAgICA3NCwgMzAsIDIxNywgNzMsIDE1LCA1LCAyMTYsIDc0LCAxMTcsIDIxNiwgNzMsIDE1LCA1LCAyMTYsIDc0LCAxMTcsIDIxNiwgCisgICAgNzQsIDI0MywgMTI4LCAxMTcsIDI0MywgMTI4LCAyNDMsIDk4LCAxMTcsIDI0MywgOTcsIDE1LCA1LCAyMTUsIDExOSwgMTUsIAorICAgIDUsIDIxNSwgMTE0LCAxNSwgNSwgMjE1LCAxMTIsIDE1LCA1LCAyMTUsIDEwOSwgMTUsIDUsIDIxNSwgOTksIDE1LCA1LCAKKyAgICAyMTUsIDEwMCwgMTE3LCAyMTUsIDEwMCwgMjEwLCAxMTcsIDExNywgMjEwLCAxMTYsIDE1LCA1LCA3MCwgMTUsIDUsIDEwNCwgCisgICAgMjQyLCAxMDQsIDE1LCA1LCAxMDQsIDEwNCwgNzAsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAyMjYsIDkxLCAxMTcsIDIyNiwgCisgICAgOTEsIDI0MywgOTgsIDExNywgMjQzLCA5NywgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDIxOCwgMTksIDExNywgMjE4LCAxOCwgCisgICAgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDEwNCwgMjIzLCA1MCwgMTE3LCAxMDQsIDIyMywgNDksIDE1LCA1LCAyMTQsIDIzMCwgCisgICAgMTUsIDUsIDIxNCwgMjI1LCAxNSwgNSwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIDIyMCwgMjMzLCAxOTIsIDE1LCA1LCAyMTQsIAorICAgIDIyMCwgMzAsIDI1MiwgMTc3LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyMzAsIDIzMSwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgCisgICAgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDEwNCwgMjQyLCAKKyAgICA5NSwgMTUsIDUsIDIxNCwgMjIwLCAyNDIsIDk1LCAxNSwgNSwgMjE0LCAyMjAsIDIyMCwgNDYsIDE1LCA1LCAyMTQsIDIyMCwgCisgICAgMjIwLCA0NywgMzAsIDI1MiwgMTc3LCAxNSwgNSwgMjE0LCAyMTUsIDE1LCA1LCAyMTQsIDE5NywgMTUsIDUsIDIxNCwgMTk4LCAKKyAgICAzMCwgMjMzLCAxMTgsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDIzMSwgOTMsIDk2LCAyNDgsIDIyMiwgMTUsIDUsIDIxNCwgCisgICAgMTk4LCAzMCwgMjIwLCAxMDEsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDcwLCAxNSwgNSwgMjE0LCAxOTYsIDE1LCA1LCAyMTQsIAorICAgIDE5MiwgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMjM0LCAyMDgsIDE1LCA1LCAyMTQsIDE5MywgMzAsIDE5MCwgMTUsIDUsIDIxNCwgCisgICAgMTkwLCAxNSwgNSwgMjE0LCAxOTEsIDI0MiwgOTUsIDE1LCA1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyNDksIAorICAgIDEyNiwgMjE0LCAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgMjIwLCA0NiwgMTUsIDUsIDIxNCwgMTQ4LCAxNSwgNSwgMjE0LCAKKyAgICAxNDksIDMwLCAxMTUsIDk2LCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNSwgOTYsIDE5NywgMTUsIDUsIDIxNCwgCisgICAgMTQ5LCAzMCwgMjU0LCAxNzksIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjI3LCAKKyAgICAxOTUsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIAorICAgIDI1MywgMjMyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MiwgNywgMTUsIDUsIDIxNCwgMTQ3LCAxNSwgCisgICAgNSwgMjE0LCAxNDQsIDE1LCA1LCAyMTQsIDE0MywgMTUsIDUsIDIxNCwgMTM5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCA2MSwgCisgICAgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjUzLCAyMjcsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEzMCwgMTUsIDUsIDIxNCwgMTQwLCAKKyAgICAzMCwgMjQ2LCA2OSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQzLCAxMzYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgCisgICAgMTE5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEwNiwgMjE2LCAyNDAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgCisgICAgOTcsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MiwgMTE0LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxNjIsIDE1LCA1LCAyMTQsIAorICAgIDE0MCwgMzAsIDIzNiwgMzYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNiwgMTcsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNSwgCisgICAgMTY2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzQsIDkzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzIsIDg1LCAxNSwgNSwgCisgICAgMjE0LCAxNDAsIDMwLCAyMzAsIDE4OSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTkwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyMjAsIDY0LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTksIDE4MSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE1LCAxMTksIAorICAgIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEwNCwgOTYsIDI0MiwgMTA0LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTQsIDIxOSwgCiAgICAgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE0LCAxMzcsIDE1LCA1LCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM4LCAzMCwgNzAsIAotICAgIDE1LCA1LCAyMTQsIDEyNiwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgNjEsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIzMywgMjE3LCAKLSAgICAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDIxNCwgCisgICAgMTUsIDUsIDIxNCwgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMTgsIAorICAgIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIzMywgMTk3LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjE0LCAKICAgICAxMjIsIDE1LCA1LCAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgCi0gICAgMTUsIDUsIDIxNCwgMTA5LCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgCi0gICAgMjEwLCAxMTcsIDIxNiwgMjM5LCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMTAsIDExMywgCisgICAgMTUsIDUsIDIxNCwgMTA5LCAzMCwgMjM0LCAyMDgsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgMjEwLCAxMTcsIDIxNiwgMjQwLCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAxOTcsIDE1LCA1LCAyMTAsIDExMywgCiAgICAgMTUsIDUsIDIxMCwgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTcsIAotICAgIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgMywgMjE2LCAKLSAgICAyMzksIDE1LCA1LCAyMTAsIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgCisgICAgMjEwLCA0NCwgMTUsIDUsIDIxMCwgNDMsIDE1LCA1LCAyMTAsIDQxLCAxNSwgNSwgMjEwLCA0MiwgMjM1LCA0LCAyMTYsIAorICAgIDI0MCwgMTUsIDUsIDIxMCwgMzYsIDE1LCA1LCAyMTAsIDI4LCAxNSwgNSwgMjEwLCAxMywgMTUsIDUsIDIxMCwgMTEsIDE1LCAKICAgICA1LCAyMTAsIDEyLCAzMCwgNjEsIDE1LCA1LCAyMTAsIDEwLCAxNSwgNSwgMjEwLCA5LCAxNSwgMTMyLCA1LCAxMTMsIDI1MywgCi0gICAgMjMxLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTMsIDIzMSwgMTUsIDEzMiwgCi0gICAgNSwgMjQ0LCA4MSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIxOSwgMTI1LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjIwLCAKLSAgICAxMjIsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyNTMsIAotICAgIDIzMSwgMTUsIDEzMiwgNSwgMTM0LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjQ3LCAxODcsIDE1LCAxMzIsIAotICAgIDUsIDI0NCwgODEsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyMCwgCi0gICAgMTIyLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjQ3LCAKLSAgICAxODcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDcwLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCA3MCwgMTUsIDEzMiwgNSwgMjE5LCAKLSAgICAxMjUsIDcwLCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgNzAsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCA3MCwgMTUsIDEzMiwgNSwgCi0gICAgMjI4LCAyMDAsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDExMywgMjQzLCAzOCwgMTUsIAotICAgIDEzMiwgNSwgMTM0LCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAKLSAgICAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDI0MywgMzgsIAotICAgIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgCi0gICAgMTIzLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCAzNSwgMTUsIAotICAgIDEzMiwgNSwgMjQ0LCAxMSwgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTEzLCAKLSAgICAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3OSwgMjE0LCAxMiwgMTcsIAotICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIAotICAgIDIxOSwgMTI1LCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIAotICAgIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMjMsIDIyMCwgNzMsIDE1LCAKLSAgICAxMzIsIDUsIDExMywgMjIwLCA3MywgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDczLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzQsIAotICAgIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMjAsIDczLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMjAsIDczLCAKLSAgICAxNSwgMTMyLCA1LCAyMjAsIDc5LCAzMCwgMjQzLCAxMTksIDk2LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjIwLCA3OSwgMzAsIAotICAgIDI0MywgMTE5LCA5NiwgMjMwLCAxODgsIDE1LCAxMzIsIDUsIDEyMywgMjUxLCA5NSwgMTUsIDEzMiwgNSwgMTEzLCAyNTEsIAotICAgIDk1LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDEzNCwgMjUxLCA5NiwgMjE0LCAxMiwgMTcsIDE1LCAKLSAgICAxMzIsIDUsIDI0NCwgMTEsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDEzNCwgCi0gICAgMjE0LCAxMiwgMjQ0LCAyMCwgMjQ1LCA3NCwgMTUsIDEzMiwgNSwgMTM0LCAyMTQsIDEyLCAyNDQsIDIwLCAyNDUsIDcxLCAKLSAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIDIxNywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgCi0gICAgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTUsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgCi0gICAgMjE4LCA2MSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTgsIDI1MywgMTU4LCAxNSwgCi0gICAgMTMyLCA1LCAyMTksIDEyNSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjUzLCAyMjgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIAotICAgIDEyLCAyNDQsIDIwLCAyMzYsIDgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDEwLCA2MSwgCi0gICAgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMTAsIDI1MywgMTU4LCAxNSwgMTMyLCA1LCAKLSAgICAyNDUsIDE5MywgMjE0LCAxMiwgMjQ0LCAyMCwgMjE0LCAxMjEsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyMTQsIDEyLCAyNDQsIAotICAgIDIwLCAyMTQsIDEyMCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjQsIDE1LCAxMzIsIAotICAgIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDIzLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgCi0gICAgMjQ0LCAyMCwgMjM2LCAyMiwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjUsIDYxLCAKLSAgICAxNSwgMTMyLCA1LCAxMTMsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMiwgMjE2LCAyMzksIAotICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUzLCAyMzIsIAotICAgIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjUzLCAyMzIsIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAxMjMsIDI1MiwgCi0gICAgMTUwLCAxNSwgMTMyLCA1LCAxMTMsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAxMzQsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAKLSAgICAyNDQsIDExLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUyLCAxNTEsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCAKLSAgICA1LCAyNDQsIDgxLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUyLCAxNTEsIDIxNCwgMTIsIDE3LCAxNSwgCi0gICAgMTMyLCA1LCAyMjgsIDIxMCwgMTUsIDEzMiwgNSwgMjI4LCAyMTEsIDE1LCAxMzIsIDUsIDEyMywgMjQ1LCA3MCwgMTUsIAotICAgIDEzMiwgNSwgMTEzLCAyNDUsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTY5LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgCi0gICAgMTEzLCAyMTYsIDE2NywgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIxOSwgMTE0LCAyNDcsIDE4NywgMTUsIAotICAgIDEzMiwgNSwgMTIzLCAyMTYsIDE2OSwgMjE0LCAxMiwgMjQ0LCAyMCwgNjEsIDE1LCAxMzIsIDUsIDExMywgMjE2LCAxNjcsIAotICAgIDIxNCwgMTIsIDI0NCwgMjAsIDYxLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgMTg5LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgCi0gICAgMTIzLCAyMjQsIDIyLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgNTUsIDI1MywgMjE5LCAxMjMsIDIxOSwgMTE1LCAxNSwgMTMyLCAKLSAgICA1LCA1NSwgMjUzLCAyMTksIDEyMywgMjI0LCAyMSwgMTUsIDIyNCwgMTQxLCA1LCA1NSwgMjUzLCAyMTksIDIxMSwgMjA5LCAKLSAgICAyNDcsIDE3MiwgMTUsIDIyNCwgMTQxLCA1LCA2NywgMjQ5LCAyMjYsIDE1LCAyMjQsIDE0MSwgNSwgMjQ3LCAyNTUsIDI0OSwgCi0gICAgMjI2LCAxNSwgMjI0LCAxNDEsIDUsIDI0NywgMjU1LCAyMTUsIDIyMSwgMTIsIDEzLCAyNTUsIDE1NSwgMTIsIDEzLCAyNTUsIAotICAgIDE1NCwgMTIsIDEzLCAyNTUsIDE1MywgMTIsIDEzLCAyNTUsIDE1MiwgMTIsIDEzLCAyNTUsIDE1MSwgMTIsIDEzLCAyNTUsIAotICAgIDE1MCwgMTIsIDEzLCAyNTUsIDE0OSwgMTIsIDEzLCAyNTUsIDE0OCwgMTIsIDEzLCAyNTUsIDE0NywgMTIsIDEzLCAyNTUsIAotICAgIDE0NiwgMTIsIDEzLCAyNTUsIDE0NSwgMTIsIDEzLCAyNTUsIDE0NCwgMTIsIDEzLCAyNTUsIDE0MywgMTIsIDEzLCAyNTUsIAotICAgIDE0MiwgMTIsIDEzLCAyNTUsIDE0MSwgMTIsIDEzLCAyNTUsIDE0MCwgMTIsIDEzLCAyNTUsIDEzOSwgMTIsIDEzLCAyNTUsIAotICAgIDEzOCwgMTIsIDEzLCAyNTUsIDEzNywgMTIsIDEzLCAyNTUsIDEzNiwgMTIsIDEzLCAyNTUsIDEzNSwgMTIsIDEzLCAyNTUsIAotICAgIDEzNCwgMTIsIDEzLCAyNTUsIDEzMywgMTIsIDEzLCAyNTUsIDEzMiwgMTIsIDEzLCAyNTUsIDEzMSwgMTIsIDEzLCAyNTUsIAotICAgIDEzMCwgMTIsIDEzLCAyNTUsIDEyOSwgMTIsIDEzLCAyNTUsIDEyOCwgMTIsIDEzLCAyNTUsIDEyNywgMTIsIDEzLCAyNTUsIAotICAgIDEyNiwgMTIsIDEzLCAyNTUsIDEyNSwgMTIsIDEzLCAyNTUsIDEyNCwgMTIsIDEzLCAyNTUsIDEyMywgMTIsIDEzLCAyNTUsIAotICAgIDEyMiwgMTIsIDEzLCAyNTUsIDEyMSwgMTIsIDEzLCAyNTUsIDEyMCwgMTIsIDEzLCAyNTUsIDExOSwgMTIsIDEzLCAyNTUsIAotICAgIDExOCwgMTIsIDEzLCAyNTUsIDExNywgMTIsIDEzLCAyNTUsIDExNiwgMTIsIDEzLCAyNTUsIDExNSwgMTIsIDEzLCAyNTUsIAotICAgIDExNCwgMTIsIDEzLCAyNTUsIDExMywgMTIsIDEzLCAyNTUsIDExMiwgMTIsIDEzLCAyNTUsIDExMSwgMTIsIDEzLCAyNTUsIAotICAgIDExMCwgMTIsIDEzLCAyNTUsIDEwOSwgMTIsIDEzLCAyNTUsIDEwOCwgMTIsIDEzLCAyNTUsIDEwNywgMTIsIDEzLCAyNTUsIAotICAgIDEwNiwgMTIsIDEzLCAyNTUsIDEwNSwgMTIsIDEzLCAyNTUsIDEwNCwgMTIsIDEzLCAyNTUsIDEwMywgMTIsIDEzLCAyNTUsIAotICAgIDEwMiwgMTIsIDEzLCAyNTUsIDEwMSwgMTIsIDEzLCAyNTUsIDEwMCwgMTIsIDEzLCAyNTUsIDk5LCAxMiwgMTMsIDI1NSwgCi0gICAgOTgsIDEyLCAxMywgMjU1LCA5NywgMTIsIDEzLCAyNTUsIDk2LCAxMiwgMTMsIDI1NSwgOTUsIDEyLCAxMywgMjU1LCA5NCwgCi0gICAgMTIsIDEzLCAyNTUsIDkzLCAxMiwgMTMsIDI1NSwgOTIsIDEyLCAxMywgMjU1LCA5MSwgMTIsIDEzLCAyNTUsIDkwLCAxMiwgCi0gICAgMTMsIDI1NSwgODksIDEyLCAxMywgMjU1LCA4OCwgMTIsIDEzLCAyNTUsIDg3LCAxMiwgMTMsIDI1NSwgODYsIDEyLCAxMywgCi0gICAgMjU1LCA4NSwgMTIsIDEzLCAyNTUsIDg0LCAxMiwgMTMsIDI1NSwgODMsIDEyLCAxMywgMjU1LCA4MiwgMTIsIDEzLCAyNTUsIAotICAgIDgxLCAxMiwgMTMsIDI1NSwgODAsIDEyLCAxMywgMjU1LCA3OSwgMTIsIDEzLCAyNTUsIDc4LCAxMiwgMTMsIDI1NSwgNzcsIAotICAgIDEyLCAxMywgMjU1LCA3NiwgMTIsIDEzLCAyNTMsIDE1NiwgMTIsIDEzLCAyNTMsIDE1NCwgMTIsIDEzLCAyNTMsIDE1MiwgCi0gICAgMTIsIDEzLCAyNTMsIDE1MCwgMTIsIDEzLCAyNTMsIDE0OCwgMTIsIDEzLCAyNTMsIDE0NywgMTIsIDEzLCAyNTMsIDE0NSwgCi0gICAgMTIsIDEzLCAyNTMsIDE0MywgMTIsIDEzLCAyNTMsIDE0MSwgMTIsIDEzLCAyNTMsIDEzOSwgMTIsIDEzLCAyNTEsIDYyLCAKLSAgICAxMiwgMTMsIDI1MSwgNjEsIDEyLCAxMywgMjUxLCA2MCwgMTIsIDEzLCAyNTEsIDU5LCAxMiwgMTMsIDI1MSwgNTgsIDEyLCAKLSAgICAxMywgMjUxLCA1NywgMTIsIDEzLCAyNTEsIDU2LCAxMiwgMTMsIDI1MSwgNTUsIDEyLCAxMywgMjUxLCA1NCwgMTIsIDEzLCAKLSAgICAyNTEsIDUzLCAxMiwgMTMsIDI1MSwgNTIsIDEyLCAxMywgMjUxLCA1MSwgMTIsIDEzLCAyNTEsIDUwLCAxMiwgMTMsIDI1MSwgCi0gICAgNDksIDEyLCAxMywgMjUxLCA0OCwgMTIsIDEzLCAyNTEsIDQ3LCAxMiwgMTMsIDI1MSwgNDYsIDEyLCAxMywgMjUxLCA0NSwgCi0gICAgMTIsIDEzLCAyNTEsIDQ0LCAxMiwgMTMsIDI1MSwgNDMsIDEyLCAxMywgMjUxLCA0MiwgMTIsIDEzLCAyNTEsIDQxLCAxMiwgCi0gICAgMTMsIDI1MSwgNDAsIDEyLCAxMywgMjUxLCAzOSwgMTIsIDEzLCAyNTEsIDM4LCAxMiwgMTMsIDI1MSwgMzcsIDEyLCAxMywgCi0gICAgMjUxLCAzNiwgMTIsIDEzLCAyNTEsIDM1LCAxMiwgMTMsIDI0OSwgNTksIDEyLCAxMywgMjQ5LCA1OCwgMTIsIDEzLCAyNDksIAotICAgIDU3LCAxMiwgMTMsIDI0OSwgNTYsIDEyLCAxMywgMjQ5LCA1NSwgMTIsIDEzLCAyNDksIDU0LCAxMiwgMTMsIDI0OSwgNTMsIAotICAgIDEyLCAxMywgMjQ5LCA1MiwgMTIsIDEzLCAyNDksIDUxLCAxMiwgMTMsIDI0OSwgNTAsIDEyLCAxMywgMjQ5LCA0OSwgMTIsIAotICAgIDEzLCAyNDksIDQ4LCAxMiwgMTMsIDI0OSwgNDcsIDEyLCAxMywgMjQ5LCA0NiwgMTIsIDEzLCAyNDksIDQ1LCAxMiwgMTMsIAotICAgIDI0OSwgNDQsIDEyLCAxMywgMjQ5LCA0MywgMTIsIDEzLCAyNDksIDQyLCAxMiwgMTMsIDI0OSwgNDEsIDEyLCAxMywgMjQ5LCAKLSAgICA0MCwgMTIsIDEzLCAyNDksIDM5LCAxMiwgMTMsIDI0OSwgMzgsIDEyLCAxMywgMjQ5LCAzNywgMTIsIDEzLCAyNDksIDM2LCAKLSAgICAxMiwgMTMsIDI0OSwgMzUsIDEyLCAxMywgMjQ5LCAzNCwgMTIsIDEzLCAyNDksIDMzLCAxMiwgMTMsIDI0OSwgMzIsIDEyLCAKLSAgICAxMywgMjQ5LCAzMSwgMTIsIDEzLCAyNDksIDMwLCAxMiwgMTMsIDI0OSwgMjksIDEyLCAxMywgMjQ5LCAyOCwgMTIsIDEzLCAKLSAgICAyNDksIDI3LCAxMiwgMTMsIDI0OSwgMjYsIDEyLCAxMywgMjQ5LCAyNSwgMTIsIDEzLCAyNDksIDI0LCAxMiwgMTMsIDI0OSwgCi0gICAgMjMsIDEyLCAxMywgMjQ5LCAyMiwgMTIsIDEzLCAyNDksIDIxLCAxMiwgMTMsIDI0OSwgMjAsIDEyLCAxMywgMjQ5LCAxOSwgCi0gICAgMTIsIDEzLCAyNDksIDE4LCAxMiwgMTMsIDI0OSwgMTcsIDEyLCAxMywgMjQ5LCAxNiwgMTIsIDEzLCAyNDksIDE1LCAxMiwgCi0gICAgMTMsIDI0OSwgMTQsIDEyLCAxMywgMjQ5LCAxMywgMTIsIDEzLCAyNDksIDEyLCAxMiwgMTMsIDI0OSwgMTEsIDEyLCAxMywgCi0gICAgMjQ5LCAxMCwgMTIsIDEzLCAyNDksIDksIDEyLCAxMywgMjQ5LCA4LCAxMiwgMTMsIDI0OSwgNywgMTIsIDEzLCAyNDksIDYsIAotICAgIDEyLCAxMywgMjQ5LCA1LCAxMiwgMTMsIDI0OSwgNCwgMTIsIDEzLCAyNDksIDMsIDEyLCAxMywgMjQ5LCAyLCAxMiwgMTMsIAotICAgIDI0OSwgMSwgMTIsIDEzLCAyNDksIDAsIDEyLCAxMywgMjQ4LCAyNTUsIDEyLCAxMywgMjQ4LCAyNTQsIDEyLCAxMywgMjQ4LCAKLSAgICAyNTMsIDEyLCAxMywgMjQ4LCAyNTIsIDEyLCAxMywgMjQ4LCAyNTEsIDEyLCAxMywgMjQ4LCAyNTAsIDEyLCAxMywgMjQ4LCAKLSAgICAyNDksIDEyLCAxMywgMjQ4LCAyNDgsIDEyLCAxMywgMjQ4LCAyNDcsIDEyLCAxMywgMjQ4LCAyNDYsIDEyLCAxMywgMjQ4LCAKLSAgICAyNDUsIDEyLCAxMywgMjQ4LCAyNDQsIDEyLCAxMywgMjQ4LCAyNDMsIDEyLCAxMywgMjQ4LCAyNDIsIDEyLCAxMywgMjQ4LCAKLSAgICAyNDEsIDEyLCAxMywgMjQ4LCAyNDAsIDEyLCAxMywgMjQ4LCAyMzksIDEyLCAxMywgMjQ4LCAyMzgsIDEyLCAxMywgMjQ4LCAKLSAgICAyMzcsIDEyLCAxMywgMjQ4LCAyMzYsIDEyLCAxMywgMjQ4LCAyMzUsIDEyLCAxMywgMjQ4LCAyMzQsIDEyLCAxMywgMjQ4LCAKLSAgICAyMzMsIDEyLCAxMywgMjQ4LCAyMzIsIDEyLCAxMywgMjQ4LCAyMzEsIDEyLCAxMywgMjQ4LCAyMzAsIDEyLCAxMywgMjQ4LCAKLSAgICAyMjksIDEyLCAxMywgMjQ4LCAyMjgsIDEyLCAxMywgMjQ4LCAyMjcsIDEyLCAxMywgMjQ4LCAyMjYsIDEyLCAxMywgMjQ4LCAKLSAgICAyMjUsIDEyLCAxMywgMjQ4LCAyMjQsIDEyLCAxMywgMjQ2LCAyMywgMTIsIDEzLCAyNDYsIDIyLCAxMiwgMTMsIDI0NiwgMjEsIAotICAgIDEyLCAxMywgMjQ2LCAyMCwgMTIsIDEzLCAyNDYsIDE5LCAxMiwgMTMsIDI0NiwgMTgsIDEyLCAxMywgMjQ2LCAxNywgMTIsIAotICAgIDEzLCAyNDYsIDE2LCAxMiwgMTMsIDI0NiwgMTUsIDEyLCAxMywgMjQ2LCAxNCwgMTIsIDEzLCAyNDYsIDEzLCAxMiwgMTMsIAotICAgIDI0NiwgMTIsIDEyLCAxMywgMjQ2LCAxMSwgMTIsIDEzLCAyNDYsIDEwLCAxMiwgMTMsIDI0NiwgOSwgMTIsIDEzLCAyNDYsIAotICAgIDgsIDEyLCAxMywgMjQ2LCA3LCAxMiwgMTMsIDI0NiwgNiwgMTIsIDEzLCAyNDYsIDUsIDEyLCAxMywgMjQ2LCA0LCAxMiwgCi0gICAgMTMsIDI0NiwgMywgMTIsIDEzLCAyNDYsIDIsIDEyLCAxMywgMjQ2LCAxLCAxMiwgMTMsIDI0NiwgMCwgMTIsIDEzLCAyNDUsIAotICAgIDI1NSwgMTIsIDEzLCAyNDUsIDI1NCwgMTIsIDEzLCAyNDUsIDI1MywgMTIsIDEzLCAyNDUsIDI1MiwgMTIsIDEzLCAyNDUsIAotICAgIDI1MSwgMTIsIDEzLCAyNDUsIDI1MCwgMTIsIDEzLCAyNDUsIDI0OSwgMTIsIDEzLCAyNDUsIDI0OCwgMTIsIDEzLCAyNDUsIAotICAgIDI0NywgMTIsIDEzLCAyNDUsIDI0NiwgMTIsIDEzLCAyNDUsIDI0NSwgMTIsIDEzLCAyNDUsIDI0NCwgMTIsIDEzLCAyNDUsIAotICAgIDI0MywgMTIsIDEzLCAyNDUsIDI0MiwgMTIsIDEzLCAyNDUsIDI0MSwgMTIsIDEzLCAyNDUsIDI0MCwgMTIsIDEzLCAyNDUsIAotICAgIDIzOSwgMTIsIDEzLCAyNDUsIDIzOCwgMTIsIDEzLCAyNDUsIDIzNywgMTIsIDEzLCAyNDUsIDIzNiwgMTIsIDEzLCAyNDUsIAotICAgIDUsIDEyLCAxMywgMjQ1LCA0LCAxMiwgMTMsIDI0NSwgMywgMTIsIDEzLCAyNDUsIDIsIDEyLCAxMywgMjQ1LCAxLCAxMiwgCi0gICAgMTMsIDI0NSwgMCwgMTIsIDEzLCAyNDQsIDI1NSwgMTIsIDEzLCAyNDQsIDI1NCwgMTIsIDEzLCAyNDQsIDI1MywgMTIsIDEzLCAKLSAgICAyNDQsIDI1MiwgMTIsIDEzLCAyNDQsIDI1MSwgMTIsIDEzLCAyNDQsIDI1MCwgMTIsIDEzLCAyNDQsIDI0OSwgMTIsIDEzLCAKLSAgICAyNDQsIDI0OCwgMTIsIDEzLCAyNDQsIDI0NywgMTIsIDEzLCAyNDQsIDI0NiwgMTIsIDEzLCAyNDQsIDI0NSwgMTIsIDEzLCAKLSAgICAyNDQsIDI0NCwgMTIsIDEzLCAyNDQsIDI0MywgMTIsIDEzLCAyNDQsIDI0MiwgMTIsIDEzLCAyNDQsIDI0MSwgMTIsIDEzLCAKLSAgICAyNDQsIDI0MCwgMTIsIDEzLCAyNDQsIDIzOSwgMTIsIDEzLCAyNDQsIDIzOCwgMTIsIDEzLCAyNDQsIDIzNywgMTIsIDEzLCAKLSAgICAyNDQsIDIzNiwgMTIsIDEzLCAyNDQsIDIzNSwgMTIsIDEzLCAyNDQsIDIzNCwgMTIsIDEzLCAyNDQsIDIzMywgMTIsIDEzLCAKLSAgICAyNDQsIDIzMiwgMTIsIDEzLCAyNDQsIDIzMSwgMTIsIDEzLCAyNDQsIDIzMCwgMTIsIDEzLCAyNDQsIDIyOSwgMTIsIDEzLCAKLSAgICAyNDQsIDIyOCwgMTIsIDEzLCAyNDQsIDIyNywgMTIsIDEzLCAyNDQsIDIyNiwgMTIsIDEzLCAyNDQsIDIyNSwgMTIsIDEzLCAKLSAgICAyNDQsIDIyNCwgMTIsIDEzLCAyNDQsIDIyMywgMTIsIDEzLCAyNDQsIDIyMiwgMTIsIDEzLCAyNDQsIDIyMSwgMTIsIDEzLCAKLSAgICAyNDQsIDIyMCwgMTIsIDEzLCAyNDQsIDIxOSwgMTIsIDEzLCAyNDQsIDIxOCwgMTIsIDEzLCAyNDQsIDIxNywgMTIsIDEzLCAKLSAgICAyNDQsIDIxNiwgMTIsIDEzLCAyNDQsIDIxNSwgMTIsIDEzLCAyNDQsIDIxNCwgMTIsIDEzLCAyNDQsIDIxMywgMTIsIDEzLCAKLSAgICAyNDQsIDIxMiwgMTIsIDEzLCAyNDQsIDIxMSwgMTIsIDEzLCAyNDQsIDIxMCwgMTIsIDEzLCAyNDQsIDIwOSwgMTIsIDEzLCAKLSAgICAyNDQsIDIwOCwgMTIsIDEzLCAyNDQsIDIwNywgMTIsIDEzLCAyNDQsIDIwNiwgMTIsIDEzLCAyNDQsIDIwNSwgMTIsIDEzLCAKLSAgICAyNDQsIDIwNCwgMTIsIDEzLCAyNDQsIDIwMywgMTIsIDEzLCAyNDQsIDIwMiwgMTIsIDEzLCAyNDQsIDIwMSwgMTIsIDEzLCAKLSAgICAyNDQsIDIwMCwgMTIsIDEzLCAyNDQsIDE5OSwgMTIsIDEzLCAyNDQsIDE5OCwgMTIsIDEzLCAyNDQsIDE5NywgMTIsIDEzLCAKLSAgICAyNDMsIDIwMSwgMTIsIDEzLCAyNDMsIDIwMCwgMTIsIDEzLCAyNDMsIDE5OSwgMTIsIDEzLCAyNDMsIDE5OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5NywgMTIsIDEzLCAyNDMsIDE5NiwgMTIsIDEzLCAyNDMsIDE5NSwgMTIsIDEzLCAyNDMsIDE5NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5MywgMTIsIDEzLCAyNDMsIDE5MiwgMTIsIDEzLCAyNDMsIDE5MSwgMTIsIDEzLCAyNDMsIDE5MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE4OSwgMTIsIDEzLCAyNDMsIDE4OCwgMTIsIDEzLCAyNDMsIDE4NywgMTIsIDEzLCAyNDMsIDE4NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4NSwgMTIsIDEzLCAyNDMsIDE4NCwgMTIsIDEzLCAyNDMsIDE4MywgMTIsIDEzLCAyNDMsIDE4MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4MSwgMTIsIDEzLCAyNDMsIDE4MCwgMTIsIDEzLCAyNDMsIDE3OSwgMTIsIDEzLCAyNDMsIDE3OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3NywgMTIsIDEzLCAyNDMsIDE3NiwgMTIsIDEzLCAyNDMsIDE3NSwgMTIsIDEzLCAyNDMsIDE3NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3MywgMTIsIDEzLCAyNDMsIDE3MiwgMTIsIDEzLCAyNDMsIDE3MSwgMTIsIDEzLCAyNDMsIDE3MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE2OSwgMTIsIDEzLCAyNDMsIDE2OCwgMTIsIDEzLCAyNDMsIDE2NywgMTIsIDEzLCAyNDMsIDE2NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2NSwgMTIsIDEzLCAyNDMsIDE2NCwgMTIsIDEzLCAyNDMsIDE2MywgMTIsIDEzLCAyNDMsIDE2MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2MSwgMTIsIDEzLCAyNDMsIDE2MCwgMTIsIDEzLCAyNDMsIDE1OSwgMTIsIDEzLCAyNDMsIDE1OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1NywgMTIsIDEzLCAyNDMsIDE1NiwgMTIsIDEzLCAyNDMsIDE1NSwgMTIsIDEzLCAyNDMsIDE1NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1MywgMTIsIDEzLCAyNDMsIDE1MiwgMTIsIDEzLCAyNDMsIDE1MSwgMTIsIDEzLCAyNDMsIDE1MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE0OSwgMTIsIDEzLCAyNDMsIDE0OCwgMTIsIDEzLCAyNDMsIDE0NywgMTIsIDEzLCAyNDMsIDE0NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE0NSwgMTIsIDEzLCAyNDMsIDE0NCwgMTIsIDEzLCAyNDMsIDE0MywgMTIsIDEzLCAyNDMsIDE0MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE0MSwgMTIsIDEzLCAyNDMsIDE0MCwgMTIsIDEzLCAyNDMsIDEzOSwgMTIsIDEzLCAyNDMsIDEzOCwgMTIsIDEzLCAKLSAgICAyNDIsIDU4LCAxMiwgMTMsIDI0MiwgNTcsIDEyLCAxMywgMjQyLCA1NiwgMTIsIDEzLCAyNDIsIDU1LCAxMiwgMTMsIDI0MiwgCi0gICAgNTQsIDEyLCAxMywgMjQyLCA1MywgMTIsIDEzLCAyNDIsIDUyLCAxMiwgMTMsIDI0MiwgNTEsIDEyLCAxMywgMjQyLCA1MCwgCi0gICAgMTIsIDEzLCAyNDAsIDEzOCwgMTIsIDEzLCAyNDAsIDEzNywgMTIsIDEzLCAyNDAsIDEzNiwgMTIsIDEzLCAyNDAsIDEzNSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzNCwgMTIsIDEzLCAyNDAsIDEzMywgMTIsIDEzLCAyNDAsIDEzMiwgMTIsIDEzLCAyNDAsIDEzMSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzMCwgMTIsIDEzLCAyNDAsIDEyOSwgMTIsIDEzLCAyNDAsIDEyOCwgMTIsIDEzLCAyNDAsIDEyNywgCi0gICAgMTIsIDEzLCAyNDAsIDEyNiwgMTIsIDEzLCAyNDAsIDEyNSwgMTIsIDEzLCAyNDAsIDEyNCwgMTIsIDEzLCAyNDAsIDEyMywgCi0gICAgMTIsIDEzLCAyNDAsIDEyMiwgMTIsIDEzLCAyNDAsIDEyMSwgMTIsIDEzLCAyNDAsIDEyMCwgMTIsIDEzLCAyMzUsIDIyLCAKLSAgICAxMiwgMTMsIDIzNSwgMjEsIDEyLCAxMywgMjM1LCAyMCwgMTIsIDEzLCAyMzUsIDE5LCAxMiwgMTMsIDIzNSwgMTgsIDEyLCAKLSAgICAxMywgMjM1LCAxNywgMTIsIDEzLCAyMzUsIDE2LCAxMiwgMTMsIDIzNSwgMTUsIDEyLCAxMywgMjMzLCAxNDYsIDEyLCAxMywgCi0gICAgMjMzLCAxNDUsIDEyLCAxMywgMjMzLCAxNDQsIDEyLCAxMywgMjMzLCAxNDMsIDEyLCAxMywgMjMzLCAxNDIsIDEyLCAxMywgCi0gICAgMjMzLCAxNDEsIDEyLCAxMywgMjMzLCAxNDAsIDEyLCAxMywgMjMzLCAxMzksIDEyLCAxMywgMjMzLCAxMzgsIDEyLCAxMywgCi0gICAgMjMzLCAxMzcsIDEyLCAxMywgMjMyLCA0OSwgMTIsIDEzLCAyMzIsIDQ4LCAxMiwgMTMsIDIzMiwgNDcsIDEyLCAxMywgMjMyLCAKLSAgICA0NiwgMTIsIDEzLCAyMzIsIDQ1LCAxMiwgMTMsIDIzMiwgNDQsIDEyLCAxMywgMjMyLCA0MywgMTIsIDEzLCAyMzIsIDQyLCAKLSAgICAxMiwgMTMsIDIzMiwgNDEsIDEyLCAxMywgMjMyLCA0MCwgMTIsIDEzLCAyMzIsIDM5LCAxMiwgMTMsIDIzMiwgMzgsIDEyLCAKLSAgICAxMywgMjMyLCAzNywgMTIsIDEzLCAyMzIsIDM2LCAxMiwgMTMsIDIzMiwgMzUsIDEyLCAxMywgMjMyLCAzNCwgMTIsIDEzLCAKLSAgICAyMzIsIDMzLCAxMiwgMTMsIDIzMiwgMzIsIDEyLCAxMywgMjMyLCAzMSwgMTIsIDEzLCAyMzIsIDMwLCAxMiwgMTMsIDIzMiwgCi0gICAgMjksIDEyLCAxMywgMjMyLCAyOCwgMTIsIDEzLCAyMzIsIDI3LCAxMiwgMTMsIDIzMiwgMjYsIDEyLCAxMywgMjMyLCAyNSwgCi0gICAgMTIsIDEzLCAyMzIsIDI0LCAxMiwgMTMsIDIzMiwgMjMsIDEyLCAxMywgMjMyLCAyMiwgMTIsIDEzLCAyMzIsIDIxLCAxMiwgCi0gICAgMTMsIDIzMiwgMjAsIDEyLCAxMywgMjMyLCAxOSwgMTIsIDEzLCAyMzIsIDE4LCAxMiwgMTMsIDIzMiwgMTcsIDEyLCAxMywgCi0gICAgMjMyLCAxNiwgMTIsIDEzLCAyMzIsIDE1LCAxMiwgMTMsIDIzMiwgMTQsIDEyLCAxMywgMjMyLCAxMywgMTIsIDEzLCAyMzIsIAotICAgIDEyLCAxMiwgMTMsIDIzMiwgMTEsIDEyLCAxMywgMjMyLCAxMCwgMTIsIDEzLCAyMzIsIDksIDEyLCAxMywgMjMyLCA4LCAxMiwgCi0gICAgMTMsIDIzMiwgNywgMTIsIDEzLCAyMzIsIDYsIDEyLCAxMywgMjMyLCA1LCAxMiwgMTMsIDIzMiwgNCwgMTIsIDEzLCAyMzIsIAotICAgIDMsIDEyLCAxMywgMjMyLCAyLCAxMiwgMTMsIDIzMiwgMSwgMTIsIDEzLCAyMzIsIDAsIDEyLCAxMywgMjMxLCAyNTUsIDEyLCAKLSAgICAxMywgMjMxLCAyNTQsIDEyLCAxMywgMjMxLCAyNTMsIDEyLCAxMywgMjMxLCAyNTIsIDEyLCAxMywgMjMxLCAyNTEsIDEyLCAKLSAgICAxMywgMjMxLCAyNTAsIDEyLCAxMywgMjMxLCAyNDksIDEyLCAxMywgMjMxLCAyNDgsIDEyLCAxMywgMjMxLCAyNDcsIDEyLCAKLSAgICAxMywgMjMxLCAyNDYsIDEyLCAxMywgMjMxLCAyNDUsIDEyLCAxMywgMjMxLCAyNDQsIDEyLCAxMywgMjMxLCAyNDMsIDEyLCAKLSAgICAxMywgMjMxLCAyNDIsIDEyLCAxMywgMjMxLCAyNDEsIDEyLCAxMywgMjMxLCAyNDAsIDEyLCAxMywgMjMwLCAyMiwgMTIsIAotICAgIDEzLCAyMzAsIDIxLCAxMiwgMTMsIDIzMCwgMjAsIDEyLCAxMywgMjMwLCAxOSwgMTIsIDEzLCAyMzAsIDE4LCAxMiwgMTMsIAotICAgIDIzMCwgMTcsIDEyLCAxMywgMjMwLCAxNiwgMTIsIDEzLCAyMzAsIDE1LCAxMiwgMTMsIDIzMCwgMTQsIDEyLCAxMywgMjMwLCAKLSAgICAxMywgMTIsIDEzLCAyMzAsIDEyLCAxMiwgMTMsIDIzMCwgMTEsIDEyLCAxMywgMjMwLCAxMCwgMTIsIDEzLCAyMzAsIDksIAotICAgIDEyLCAxMywgMjMwLCA4LCAxMiwgMTMsIDIzMCwgNywgMTIsIDEzLCAyMzAsIDYsIDEyLCAxMywgMjMwLCA1LCAxMiwgMTMsIAotICAgIDIzMCwgNCwgMTIsIDEzLCAyMzAsIDMsIDEyLCAxMywgMjMwLCAyLCAxMiwgMTMsIDIzMCwgMSwgMTIsIDEzLCAyMzAsIDAsIAotICAgIDEyLCAxMywgMjI5LCAyNTUsIDEyLCAxMywgMjI5LCAyNTQsIDEyLCAxMywgMjI5LCAyNTMsIDEyLCAxMywgMjI5LCAyNTIsIAotICAgIDEyLCAxMywgMjI5LCAyNTEsIDEyLCAxMywgMjI5LCAyNTAsIDEyLCAxMywgMjI5LCAyNDksIDEyLCAxMywgMjI5LCAyNDgsIAotICAgIDEyLCAxMywgMjI5LCAyNDcsIDEyLCAxMywgMjI5LCAyNDYsIDEyLCAxMywgMjI5LCAyNDUsIDEyLCAxMywgMjI5LCAyNDQsIAotICAgIDEyLCAxMywgMjI5LCAyNDMsIDEyLCAxMywgMjI5LCAyNDIsIDEyLCAxMywgMjI5LCAyNDEsIDEyLCAxMywgMjI5LCAyNDAsIAotICAgIDEyLCAxMywgMjI5LCAyMzksIDEyLCAxMywgMjI5LCAyMzgsIDEyLCAxMywgMjI5LCAyMzcsIDEyLCAxMywgMjI5LCAyMzYsIAotICAgIDEyLCAxMywgMjI5LCAyMzUsIDEyLCAxMywgMjI5LCAyMzQsIDEyLCAxMywgMjI5LCAyMzMsIDEyLCAxMywgMjI5LCAyMzIsIAotICAgIDEyLCAxMywgMjI5LCAyMzEsIDEyLCAxMywgMjI5LCAyMzAsIDEyLCAxMywgMjI4LCAxMzQsIDEyLCAxMywgMjI4LCAxMzMsIAotICAgIDEyLCAxMywgMjI4LCAxMzIsIDEyLCAxMywgMjI4LCAxMzEsIDEyLCAxMywgMjI4LCAxMzAsIDEyLCAxMywgMjI4LCAxMjksIAotICAgIDEyLCAxMywgMjI4LCAxMjgsIDEyLCAxMywgMjI4LCAxMjcsIDEyLCAxMywgMjI4LCAxMjYsIDEyLCAxMywgMjI4LCAxMjUsIAotICAgIDEyLCAxMywgMjI4LCAxMjQsIDEyLCAxMywgMjI4LCAxMjMsIDEyLCAxMywgMjI4LCAxMjIsIDEyLCAxMywgMjI4LCAxMjEsIAotICAgIDEyLCAxMywgMjI4LCAxMjAsIDEyLCAxMywgMjI4LCAxMTksIDEyLCAxMywgMjI4LCAxMTgsIDEyLCAxMywgMjI4LCAxMTcsIAotICAgIDEyLCAxMywgMjI4LCAxMTYsIDEyLCAxMywgMjI4LCAxMTUsIDEyLCAxMywgMjI4LCAxMTQsIDEyLCAxMywgMjI4LCAxMTMsIAotICAgIDEyLCAxMywgMjI3LCAyMzYsIDEyLCAxMywgMjI3LCAyMzUsIDEyLCAxMywgMjI3LCAyMzQsIDEyLCAxMywgMjI3LCAyMzMsIAotICAgIDEyLCAxMywgMjI3LCAyMzIsIDEyLCAxMywgMjI3LCAyMzEsIDEyLCAxMywgMjI3LCAyMzAsIDEyLCAxMywgMjI3LCAyMjksIAotICAgIDEyLCAxMywgMjI3LCAyMjgsIDEyLCAxMywgMjI3LCAyMjcsIDEyLCAxMywgMjI3LCAyMjYsIDEyLCAxMywgMjI3LCAyMjUsIAotICAgIDEyLCAxMywgMjI3LCAyMjQsIDEyLCAxMywgMjI3LCAyMjMsIDEyLCAxMywgMjI3LCAyMjIsIDEyLCAxMywgMjI3LCAyMjEsIAotICAgIDEyLCAxMywgMjI3LCAyMjAsIDEyLCAxMywgMjI3LCAyMTksIDEyLCAxMywgMjI3LCAyMTgsIDEyLCAxMywgMjI3LCAyMTcsIAotICAgIDEyLCAxMywgMjI3LCAyMTYsIDEyLCAxMywgMjI3LCAyMTUsIDEyLCAxMywgMjI3LCAyMTQsIDEyLCAxMywgMjI3LCAyMTMsIAotICAgIDEyLCAxMywgMjI3LCAyMTIsIDEyLCAxMywgMjI3LCAyMTEsIDEyLCAxMywgMjI3LCA3NiwgMTIsIDEzLCAyMjcsIDc1LCAxMiwgCi0gICAgMTMsIDIyNywgNzQsIDEyLCAxMywgMjI3LCA3MywgMTIsIDEzLCAyMjcsIDcyLCAxMiwgMTMsIDIyNywgNzEsIDEyLCAxMywgCi0gICAgMjI3LCA3MCwgMTIsIDEzLCAyMjcsIDY5LCAxMiwgMTMsIDIyNywgNjgsIDEyLCAxMywgMjI3LCA2NywgMTIsIDEzLCAyMjcsIAotICAgIDY2LCAxMiwgMTMsIDIyNywgNjUsIDEyLCAxMywgMjI3LCA2NCwgMTIsIDEzLCAyMjcsIDYzLCAxMiwgMTMsIDIyNywgNjIsIAotICAgIDEyLCAxMywgMjI3LCA2MSwgMTIsIDEzLCAyMjcsIDYwLCAxMiwgMTMsIDIyNywgNTksIDEyLCAxMywgMjI3LCA1OCwgMTIsIAotICAgIDEzLCAyMjcsIDU3LCAxMiwgMTMsIDIyNywgNTYsIDEyLCAxMywgMjI3LCA1NSwgMTIsIDEzLCAyMjcsIDU0LCAxMiwgMTMsIAotICAgIDIyNywgNTMsIDEyLCAxMywgMjI3LCA1MiwgMTIsIDEzLCAyMjcsIDUxLCAxMiwgMTMsIDIyNywgNTAsIDEyLCAxMywgMjI3LCAKLSAgICA0OSwgMTIsIDEzLCAyMjcsIDQ4LCAxMiwgMTMsIDIyNywgNDcsIDEyLCAxMywgMjI3LCA0NiwgMTIsIDEzLCAyMjcsIDQ1LCAKLSAgICAxMiwgMTMsIDIyNywgNDQsIDEyLCAxMywgMjI3LCA0MywgMTIsIDEzLCAyMjcsIDQyLCAxMiwgMTMsIDIyNywgNDEsIDEyLCAKLSAgICAxMywgMjI3LCA0MCwgMTIsIDEzLCAyMjcsIDM5LCAxMiwgMTMsIDIyNywgMzgsIDEyLCAxMywgMjI3LCAzNywgMTIsIDEzLCAKLSAgICAyMjcsIDM2LCAxMiwgMTMsIDIyNywgMzUsIDEyLCAxMywgMjI3LCAzNCwgMTIsIDEzLCAyMjcsIDMzLCAxMiwgMTMsIDIyNywgCi0gICAgMzIsIDEyLCAxMywgMjI3LCAzMSwgMTIsIDEzLCAyMjcsIDMwLCAxMiwgMTMsIDIyNywgMjksIDEyLCAxMywgMjI3LCAyOCwgCi0gICAgMTIsIDEzLCAyMjcsIDI3LCAxMiwgMTMsIDIyNywgMjYsIDEyLCAxMywgMjI3LCAyNSwgMTIsIDEzLCAyMjcsIDI0LCAxMiwgCi0gICAgMTMsIDIyNywgMjMsIDEyLCAxMywgMjI3LCAyMiwgMTIsIDEzLCAyMjcsIDIxLCAxMiwgMTMsIDIyNywgMjAsIDEyLCAxMywgCi0gICAgMjI3LCAxOSwgMTIsIDEzLCAyMjcsIDE4LCAxMiwgMTMsIDIyNywgMTcsIDEyLCAxMywgMjI3LCAxNiwgMTIsIDEzLCAyMjcsIAotICAgIDE1LCAxMiwgMTMsIDIyNywgMTQsIDEyLCAxMywgMjI3LCAxMywgMTIsIDEzLCAyMjcsIDEyLCAxMiwgMTMsIDIyNywgMTEsIAotICAgIDEyLCAxMywgMjI3LCAxMCwgMTIsIDEzLCAyMjcsIDksIDEyLCAxMywgMjI3LCA4LCAxMiwgMTMsIDIyNywgNywgMTIsIDEzLCAKLSAgICAyMjcsIDYsIDEyLCAxMywgMjI3LCA1LCAxMiwgMTMsIDIyNywgNCwgMTIsIDEzLCAyMjcsIDMsIDEyLCAxMywgMjI3LCAyLCAKLSAgICAxMiwgMTMsIDIyNiwgMTA0LCAxMiwgMTMsIDIyNiwgMTAzLCAxMiwgMTMsIDIyNiwgMTAyLCAxMiwgMTMsIDIyNiwgMTAxLCAKLSAgICAxMiwgMTMsIDIyNiwgMTAwLCAxMiwgMTMsIDIyNiwgOTksIDEyLCAxMywgMjI2LCA5OCwgMTIsIDEzLCAyMjYsIDk3LCAxMiwgCi0gICAgMTMsIDIyNiwgOTYsIDEyLCAxMywgMjI2LCA5NSwgMTIsIDEzLCAyMjYsIDk0LCAxMiwgMTMsIDIyNiwgOTMsIDEyLCAxMywgCi0gICAgMjI2LCA5MiwgMTIsIDEzLCAyMjQsIDk1LCAxMiwgMTMsIDIyNCwgOTQsIDEyLCAxMywgMjI0LCA5MywgMTIsIDEzLCAyMjQsIAotICAgIDkyLCAxMiwgMTMsIDIyNCwgOTEsIDEyLCAxMywgMjI0LCA5MCwgMTIsIDEzLCAyMjQsIDg5LCAxMiwgMTMsIDIyMywgMjIyLCAKLSAgICAxMiwgMTMsIDIyMywgMjIxLCAxMiwgMTMsIDIyMywgMjIwLCAxMiwgMTMsIDIyMywgMjE5LCAxMiwgMTMsIDIyMywgMjE4LCAKLSAgICAxMiwgMTMsIDIyMywgMjE3LCAxMiwgMTMsIDIyMywgMjE2LCAxMiwgMTMsIDIyMywgMjE1LCAxMiwgMTMsIDIyMywgMjE0LCAKLSAgICAxMiwgMTMsIDIyMywgMjEzLCAxMiwgMTMsIDIyMywgMjEyLCAxMiwgMTMsIDIyMywgMjExLCAxMiwgMTMsIDIyMywgMjEwLCAKLSAgICAxMiwgMTMsIDIyMywgMjA5LCAxMiwgMTMsIDIyMywgMjA4LCAxMiwgMTMsIDIyMywgMjA3LCAxMiwgMTMsIDIyMywgMjA2LCAKLSAgICAxMiwgMTMsIDIyMywgMjA1LCAxMiwgMTMsIDIyMywgMjA0LCAxMiwgMTMsIDIyMywgMjAzLCAxMiwgMTMsIDIyMywgMjAyLCAKLSAgICAxMiwgMTMsIDIyMywgMjAxLCAxMiwgMTMsIDIyMywgMjAwLCAxMiwgMTMsIDIyMywgMTk5LCAxMiwgMTMsIDIyMywgMTk4LCAKLSAgICAxMiwgMTMsIDIyMywgMTk3LCAxMiwgMTMsIDIyMywgMTk2LCAxMiwgMTMsIDIyMywgMTk1LCAxMiwgMTMsIDIyMywgMTk0LCAKLSAgICAxMiwgMTMsIDIyMywgMTkzLCAxMiwgMTMsIDIyMywgMTkyLCAxMiwgMTMsIDIyMywgMTkxLCAxMiwgMTMsIDIyMywgMTkwLCAKLSAgICAxMiwgMTMsIDIyMywgMTg5LCAxMiwgMTMsIDIyMiwgODgsIDEyLCAxMywgMjIyLCA4NywgMTIsIDEzLCAyMjIsIDg2LCAxMiwgCi0gICAgMTMsIDIyMiwgODUsIDEyLCAxMywgMjIyLCA4NCwgMTIsIDEzLCAyMjIsIDgzLCAxMiwgMTMsIDIyMiwgODIsIDEyLCAxMywgCi0gICAgMjIyLCA4MSwgMTIsIDEzLCAyMjIsIDgwLCAxMiwgMTMsIDIyMiwgNzksIDEyLCAxMywgMjIyLCA3OCwgMTIsIDEzLCAyMjIsIAotICAgIDc3LCAxMiwgMTMsIDIyMiwgNzYsIDEyLCAxMywgMjIyLCA3NSwgMTIsIDEzLCAyMjIsIDc0LCAxMiwgMTMsIDIyMiwgNzMsIAotICAgIDEyLCAxMywgMjIyLCA3MiwgMTIsIDEzLCAyMjIsIDcxLCAxMiwgMTMsIDIyMiwgNzAsIDEyLCAxMywgMjIyLCA2OSwgMTIsIAotICAgIDEzLCAyMjIsIDY4LCAxMiwgMTMsIDIyMiwgNjcsIDEyLCAxMywgMjIyLCA2NiwgMTIsIDEzLCAyMjIsIDY1LCAxMiwgMTMsIAotICAgIDIyMiwgNjQsIDEyLCAxMywgMjIyLCA2MywgMTIsIDEzLCAyMjIsIDYyLCAxMiwgMTMsIDIyMiwgNjEsIDEyLCAxMywgMjIyLCAKLSAgICA2MCwgMTIsIDEzLCAyMjIsIDU5LCAxMiwgMTMsIDIyMiwgNTgsIDEyLCAxMywgMjIyLCA1NywgMTIsIDEzLCAyMjIsIDU2LCAKLSAgICAxMiwgMTMsIDIyMiwgNTUsIDEyLCAxMywgMjIyLCA1NCwgMTIsIDEzLCAyMjIsIDUzLCAxMiwgMTMsIDIyMiwgNTIsIDEyLCAKLSAgICAxMywgMjIyLCA1MSwgMTIsIDEzLCAyMjIsIDUwLCAxMiwgMTMsIDIyMiwgNDksIDEyLCAxMywgMjIyLCA0OCwgMTIsIDEzLCAKLSAgICAyMjIsIDQ3LCAxMiwgMTMsIDIyMiwgNDYsIDEyLCAxMywgMjIyLCA0NSwgMTIsIDEzLCAyMjIsIDQ0LCAxMiwgMTMsIDIyMiwgCi0gICAgNDMsIDEyLCAxMywgMjIyLCA0MiwgMTIsIDEzLCAyMjIsIDQxLCAxMiwgMTMsIDIyMiwgNDAsIDEyLCAxMywgMjIyLCAzOSwgCi0gICAgMTIsIDEzLCAyMjIsIDM4LCAxMiwgMTMsIDIyMiwgMzcsIDEyLCAxMywgMjIyLCAzNiwgMTIsIDEzLCAyMjIsIDM1LCAxMiwgCi0gICAgMTMsIDIxNywgMTUwLCAxMiwgMTMsIDIxNywgMTQ5LCAxMiwgMTMsIDIxNywgMTQ4LCAxMiwgMTMsIDIxNywgMTQ3LCAxMiwgCi0gICAgMTMsIDIxNywgMTQ2LCAxMiwgMTMsIDIxNywgMTQ1LCAxMiwgMTMsIDIxNywgMTQ0LCAxMiwgMTMsIDIxNywgMTQzLCAxMiwgCi0gICAgMTMsIDIxNywgMTQyLCAxMiwgMTMsIDIxNywgMTQxLCAxMiwgMTMsIDIxNywgMTQwLCAxMiwgMTMsIDIxNywgMTM5LCAxMiwgCi0gICAgMTMsIDIxNywgMTM4LCAxMiwgMTMsIDIxNywgMTM3LCAxMiwgMTMsIDIxNywgMTM2LCAxMiwgMTMsIDIxNywgMTM1LCAxMiwgCi0gICAgMTMsIDIxNywgMTM0LCAxMiwgMTMsIDIxNywgMTMzLCAxMiwgMTMsIDIxNywgMTMyLCAxMiwgMTMsIDIxNywgMTMxLCAxMiwgCi0gICAgMTMsIDIxNywgMTMwLCAxMiwgMTMsIDIxNywgMTI5LCAxMiwgMTMsIDIxNywgMTI4LCAxMiwgMTMsIDIxNywgMTI3LCAxMiwgCi0gICAgMTMsIDIxNywgMTI2LCAxMiwgMTMsIDIxNywgMTI1LCAxMiwgMTMsIDIxNywgMTI0LCAxMiwgMTMsIDIxNywgMTIzLCAxMiwgCi0gICAgMTMsIDIxNywgMTIyLCAxMiwgMTMsIDIxNywgMTIxLCAxMiwgMTMsIDIxNywgMTIwLCAxMiwgMTMsIDIxNywgMTE5LCAxMiwgCi0gICAgMTMsIDIxNywgMTE4LCAxMiwgMTMsIDIxNywgMTE3LCAxMiwgMTMsIDIxNywgMTE2LCAxMiwgMTMsIDIxNywgMTE1LCAxMiwgCi0gICAgMTMsIDIxNywgMTE0LCAxMiwgMTMsIDIxNywgMTEzLCAxMiwgMTMsIDIxNywgMTEyLCAxMiwgMTMsIDIxNywgMTExLCAxMiwgCi0gICAgMTMsIDIxNywgMTEwLCAxMiwgMTMsIDIxNywgMTA5LCAxMiwgMTMsIDIxNywgMTA4LCAxMiwgMTMsIDIxNywgMTA3LCAxMiwgCisgICAgMjMyLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjMyLCAxNSwgMTMyLCA1LCAyNDQsIDEyLCAyNTMsIDIzMiwgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MiwgMjUzLCAyMzIsIDE1LCAxMzIsIDUsIDIxOSwgMTI2LCAyNTMsIDIzMiwgMTUsIDEzMiwgNSwgMjIwLCAKKyAgICAxMjMsIDI1MywgMjMyLCAxNSwgMTMyLCA1LCAyNDUsIDE5NCwgMjUzLCAyMzIsIDE1LCAxMzIsIDUsIDIyOCwgMjAxLCAyNTMsIAorICAgIDIzMiwgMTUsIDEzMiwgNSwgMTM0LCAyNDcsIDE4OCwgMTUsIDEzMiwgNSwgMjQ0LCAxMiwgMjQ3LCAxODgsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODIsIDI0NywgMTg4LCAxNSwgMTMyLCA1LCAyMTksIDEyNiwgMjQ3LCAxODgsIDE1LCAxMzIsIDUsIDIyMCwgCisgICAgMTIzLCAyNDcsIDE4OCwgMTUsIDEzMiwgNSwgMjQ1LCAxOTQsIDI0NywgMTg4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMSwgMjQ3LCAKKyAgICAxODgsIDE1LCAxMzIsIDUsIDI0NCwgMTIsIDcwLCAxNSwgMTMyLCA1LCAyNDQsIDgyLCA3MCwgMTUsIDEzMiwgNSwgMjE5LCAKKyAgICAxMjYsIDcwLCAxNSwgMTMyLCA1LCAyMjAsIDEyMywgNzAsIDE1LCAxMzIsIDUsIDI0NSwgMTk0LCA3MCwgMTUsIDEzMiwgNSwgCisgICAgMjI4LCAyMDEsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDI0MywgMzksIDE1LCAxMzIsIDUsIDExMywgMjQzLCAzOSwgMTUsIAorICAgIDEzMiwgNSwgMTM0LCAyNDMsIDM5LCAxNSwgMTMyLCA1LCAyNDQsIDEyLCAyNDMsIDM5LCAxNSwgMTMyLCA1LCAyNDQsIDgyLCAKKyAgICAyNDMsIDM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNiwgMjQzLCAzOSwgMTUsIDEzMiwgNSwgMjIwLCAxMjMsIDI0MywgMzksIAorICAgIDE1LCAxMzIsIDUsIDI0NSwgMTk0LCAyNDMsIDM5LCAxNSwgMTMyLCA1LCAyMjgsIDIwMSwgMjQzLCAzOSwgMTUsIDEzMiwgNSwgCisgICAgMTIzLCAyNDMsIDM2LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzYsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCAzNiwgMTUsIAorICAgIDEzMiwgNSwgMjQ0LCAxMiwgMjQzLCAzNiwgMTUsIDEzMiwgNSwgMjQ0LCA4MiwgMjQzLCAzNiwgMTUsIDEzMiwgNSwgMTEzLCAKKyAgICAyMjAsIDc5LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzksIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA4MCwgMjE0LCAxMiwgMTcsIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTIsIDIyMCwgNzksIDE1LCAxMzIsIDUsIDI0NCwgODIsIDIyMCwgNzksIDE1LCAxMzIsIDUsIAorICAgIDIxOSwgMTI2LCAyMjAsIDc5LCAxNSwgMTMyLCA1LCAyMjAsIDEyMywgMjIwLCA3OSwgMTUsIDEzMiwgNSwgMjQ1LCAxOTQsIAorICAgIDIyMCwgNzksIDE1LCAxMzIsIDUsIDIyOCwgMjAxLCAyMjAsIDc5LCAxNSwgMTMyLCA1LCAxMjMsIDIyMCwgNzQsIDE1LCAKKyAgICAxMzIsIDUsIDExMywgMjIwLCA3NCwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc0LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzUsIAorICAgIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDEyLCAyMjAsIDc0LCAxNSwgMTMyLCA1LCAyNDQsIDgyLCAyMjAsIDc0LCAKKyAgICAxNSwgMTMyLCA1LCAyMjAsIDgwLCAzMCwgMjQzLCAxMjAsIDk2LCAyNDcsIDE4OCwgMTUsIDEzMiwgNSwgMjIwLCA4MCwgMzAsIAorICAgIDI0MywgMTIwLCA5NiwgMjMwLCAxODksIDE1LCAxMzIsIDUsIDEyMywgMjUxLCA5NiwgMTUsIDEzMiwgNSwgMTEzLCAyNTEsIAorICAgIDk2LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTYsIDE1LCAxMzIsIDUsIDEzNCwgMjUxLCA5NywgMjE0LCAxMiwgMTcsIDE1LCAKKyAgICAxMzIsIDUsIDI0NCwgMTIsIDI1MSwgOTYsIDE1LCAxMzIsIDUsIDI0NCwgODIsIDI1MSwgOTYsIDE1LCAxMzIsIDUsIDEzNCwgCisgICAgMjE0LCAxMiwgMjQ0LCAyMSwgMjQ1LCA3NSwgMTUsIDEzMiwgNSwgMTM0LCAyMTQsIDEyLCAyNDQsIDIxLCAyNDUsIDcyLCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDEyLCAyMTQsIDEyLCAyNDQsIDIxLCAyMzIsIDIxOCwgMTUsIDEzMiwgNSwgMjQ0LCAxMiwgCisgICAgMjE0LCAxMiwgMjQ0LCAyMSwgMjMyLCAyMTYsIDE1LCAxMzIsIDUsIDI0NCwgMTIsIDIxNCwgMTIsIDI0NCwgMjEsIDIzMiwgCisgICAgMjE5LCA2MSwgMTUsIDEzMiwgNSwgMjQ0LCAxMiwgMjE0LCAxMiwgMjQ0LCAyMSwgMjMyLCAyMTksIDI1MywgMTU5LCAxNSwgCisgICAgMTMyLCA1LCAyMTksIDEyNiwgMjE0LCAxMiwgMjQ0LCAyMSwgMjUzLCAyMjksIDE1LCAxMzIsIDUsIDIyMCwgMTIzLCAyMTQsIAorICAgIDEyLCAyNDQsIDIxLCAyMzYsIDksIDE1LCAxMzIsIDUsIDIyMCwgMTIzLCAyMTQsIDEyLCAyNDQsIDIxLCAyMzYsIDExLCA2MSwgCisgICAgMTUsIDEzMiwgNSwgMjIwLCAxMjMsIDIxNCwgMTIsIDI0NCwgMjEsIDIzNiwgMTEsIDI1MywgMTU5LCAxNSwgMTMyLCA1LCAKKyAgICAyNDUsIDE5NCwgMjE0LCAxMiwgMjQ0LCAyMSwgMjE0LCAxMjEsIDE1LCAxMzIsIDUsIDI0NSwgMTk0LCAyMTQsIDEyLCAyNDQsIAorICAgIDIxLCAyMTQsIDEyMCwgMTUsIDEzMiwgNSwgMjI4LCAyMDEsIDIxNCwgMTIsIDI0NCwgMjEsIDIzNiwgMjUsIDE1LCAxMzIsIAorICAgIDUsIDIyOCwgMjAxLCAyMTQsIDEyLCAyNDQsIDIxLCAyMzYsIDI0LCAxNSwgMTMyLCA1LCAyMjgsIDIwMSwgMjE0LCAxMiwgCisgICAgMjQ0LCAyMSwgMjM2LCAyMywgMTUsIDEzMiwgNSwgMjI4LCAyMDEsIDIxNCwgMTIsIDI0NCwgMjEsIDIzNiwgMjYsIDYxLCAKKyAgICAxNSwgMTMyLCA1LCAxMTMsIDI1MywgMjMzLCAyMTYsIDI0MCwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMywgMjE2LCAyNDAsIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTIsIDI1MywgMjMzLCAyMTYsIDI0MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MiwgMjUzLCAyMzMsIAorICAgIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAyMTksIDEyNiwgMjUzLCAyMzMsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAxMjMsIDI1MiwgCisgICAgMTUxLCAxNSwgMTMyLCA1LCAxMTMsIDI1MiwgMTUxLCAxNSwgMTMyLCA1LCAxMzQsIDI1MiwgMTUxLCAxNSwgMTMyLCA1LCAKKyAgICAyNDQsIDEyLCAyNTIsIDE1MSwgMTUsIDEzMiwgNSwgMjQ0LCAxMiwgMjUyLCAxNTIsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgyLCAyNTIsIDE1MSwgMTUsIDEzMiwgNSwgMjQ0LCA4MiwgMjUyLCAxNTIsIDIxNCwgMTIsIDE3LCAxNSwgCisgICAgMTMyLCA1LCAyMjgsIDIxMSwgMTUsIDEzMiwgNSwgMjI4LCAyMTIsIDE1LCAxMzIsIDUsIDEyMywgMjQ1LCA3MSwgMTUsIAorICAgIDEzMiwgNSwgMTEzLCAyNDUsIDcxLCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTcwLCAyNDcsIDE4OCwgMTUsIDEzMiwgNSwgCisgICAgMTEzLCAyMTYsIDE2OCwgMjQ3LCAxODgsIDE1LCAxMzIsIDUsIDI0NCwgODIsIDIxOSwgMTE1LCAyNDcsIDE4OCwgMTUsIAorICAgIDEzMiwgNSwgMTIzLCAyMTYsIDE3MCwgMjE0LCAxMiwgMjQ0LCAyMSwgNjEsIDE1LCAxMzIsIDUsIDExMywgMjE2LCAxNjgsIAorICAgIDIxNCwgMTIsIDI0NCwgMjEsIDYxLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgMTkwLCAyNTMsIDIzMiwgMTUsIDEzMiwgNSwgCisgICAgMTIzLCAyMjQsIDIzLCAyNTMsIDIzMiwgMTUsIDEzMiwgNSwgNTUsIDI1MywgMjIwLCAxMjMsIDIxOSwgMTE2LCAxNSwgMTMyLCAKKyAgICA1LCA1NSwgMjUzLCAyMjAsIDEyMywgMjI0LCAyMiwgMTUsIDIyNCwgMTQyLCA1LCA1NSwgMjUzLCAyMjAsIDIxMSwgMjA5LCAKKyAgICAyNDcsIDE3MywgMTUsIDIyNCwgMTQyLCA1LCA2NywgMjQ5LCAyMjcsIDE1LCAyMjQsIDE0MiwgNSwgMjQ4LCAwLCAyNDksIAorICAgIDIyNywgMTUsIDIyNCwgMTQyLCA1LCAyNDgsIDAsIDIxNSwgMjIyLCAxMiwgMTMsIDI1NSwgMTU2LCAxMiwgMTMsIDI1NSwgCisgICAgMTU1LCAxMiwgMTMsIDI1NSwgMTU0LCAxMiwgMTMsIDI1NSwgMTUzLCAxMiwgMTMsIDI1NSwgMTUyLCAxMiwgMTMsIDI1NSwgCisgICAgMTUxLCAxMiwgMTMsIDI1NSwgMTUwLCAxMiwgMTMsIDI1NSwgMTQ5LCAxMiwgMTMsIDI1NSwgMTQ4LCAxMiwgMTMsIDI1NSwgCisgICAgMTQ3LCAxMiwgMTMsIDI1NSwgMTQ2LCAxMiwgMTMsIDI1NSwgMTQ1LCAxMiwgMTMsIDI1NSwgMTQ0LCAxMiwgMTMsIDI1NSwgCisgICAgMTQzLCAxMiwgMTMsIDI1NSwgMTQyLCAxMiwgMTMsIDI1NSwgMTQxLCAxMiwgMTMsIDI1NSwgMTQwLCAxMiwgMTMsIDI1NSwgCisgICAgMTM5LCAxMiwgMTMsIDI1NSwgMTM4LCAxMiwgMTMsIDI1NSwgMTM3LCAxMiwgMTMsIDI1NSwgMTM2LCAxMiwgMTMsIDI1NSwgCisgICAgMTM1LCAxMiwgMTMsIDI1NSwgMTM0LCAxMiwgMTMsIDI1NSwgMTMzLCAxMiwgMTMsIDI1NSwgMTMyLCAxMiwgMTMsIDI1NSwgCisgICAgMTMxLCAxMiwgMTMsIDI1NSwgMTMwLCAxMiwgMTMsIDI1NSwgMTI5LCAxMiwgMTMsIDI1NSwgMTI4LCAxMiwgMTMsIDI1NSwgCisgICAgMTI3LCAxMiwgMTMsIDI1NSwgMTI2LCAxMiwgMTMsIDI1NSwgMTI1LCAxMiwgMTMsIDI1NSwgMTI0LCAxMiwgMTMsIDI1NSwgCisgICAgMTIzLCAxMiwgMTMsIDI1NSwgMTIyLCAxMiwgMTMsIDI1NSwgMTIxLCAxMiwgMTMsIDI1NSwgMTIwLCAxMiwgMTMsIDI1NSwgCisgICAgMTE5LCAxMiwgMTMsIDI1NSwgMTE4LCAxMiwgMTMsIDI1NSwgMTE3LCAxMiwgMTMsIDI1NSwgMTE2LCAxMiwgMTMsIDI1NSwgCisgICAgMTE1LCAxMiwgMTMsIDI1NSwgMTE0LCAxMiwgMTMsIDI1NSwgMTEzLCAxMiwgMTMsIDI1NSwgMTEyLCAxMiwgMTMsIDI1NSwgCisgICAgMTExLCAxMiwgMTMsIDI1NSwgMTEwLCAxMiwgMTMsIDI1NSwgMTA5LCAxMiwgMTMsIDI1NSwgMTA4LCAxMiwgMTMsIDI1NSwgCisgICAgMTA3LCAxMiwgMTMsIDI1NSwgMTA2LCAxMiwgMTMsIDI1NSwgMTA1LCAxMiwgMTMsIDI1NSwgMTA0LCAxMiwgMTMsIDI1NSwgCisgICAgMTAzLCAxMiwgMTMsIDI1NSwgMTAyLCAxMiwgMTMsIDI1NSwgMTAxLCAxMiwgMTMsIDI1NSwgMTAwLCAxMiwgMTMsIDI1NSwgCisgICAgOTksIDEyLCAxMywgMjU1LCA5OCwgMTIsIDEzLCAyNTUsIDk3LCAxMiwgMTMsIDI1NSwgOTYsIDEyLCAxMywgMjU1LCA5NSwgCisgICAgMTIsIDEzLCAyNTUsIDk0LCAxMiwgMTMsIDI1NSwgOTMsIDEyLCAxMywgMjU1LCA5MiwgMTIsIDEzLCAyNTUsIDkxLCAxMiwgCisgICAgMTMsIDI1NSwgOTAsIDEyLCAxMywgMjU1LCA4OSwgMTIsIDEzLCAyNTUsIDg4LCAxMiwgMTMsIDI1NSwgODcsIDEyLCAxMywgCisgICAgMjU1LCA4NiwgMTIsIDEzLCAyNTUsIDg1LCAxMiwgMTMsIDI1NSwgODQsIDEyLCAxMywgMjU1LCA4MywgMTIsIDEzLCAyNTUsIAorICAgIDgyLCAxMiwgMTMsIDI1NSwgODEsIDEyLCAxMywgMjU1LCA4MCwgMTIsIDEzLCAyNTUsIDc5LCAxMiwgMTMsIDI1NSwgNzgsIAorICAgIDEyLCAxMywgMjU1LCA3NywgMTIsIDEzLCAyNTMsIDE1NywgMTIsIDEzLCAyNTMsIDE1NSwgMTIsIDEzLCAyNTMsIDE1MywgCisgICAgMTIsIDEzLCAyNTMsIDE1MSwgMTIsIDEzLCAyNTMsIDE0OSwgMTIsIDEzLCAyNTMsIDE0OCwgMTIsIDEzLCAyNTMsIDE0NiwgCisgICAgMTIsIDEzLCAyNTMsIDE0NCwgMTIsIDEzLCAyNTMsIDE0MiwgMTIsIDEzLCAyNTMsIDE0MCwgMTIsIDEzLCAyNTEsIDYzLCAKKyAgICAxMiwgMTMsIDI1MSwgNjIsIDEyLCAxMywgMjUxLCA2MSwgMTIsIDEzLCAyNTEsIDYwLCAxMiwgMTMsIDI1MSwgNTksIDEyLCAKKyAgICAxMywgMjUxLCA1OCwgMTIsIDEzLCAyNTEsIDU3LCAxMiwgMTMsIDI1MSwgNTYsIDEyLCAxMywgMjUxLCA1NSwgMTIsIDEzLCAKKyAgICAyNTEsIDU0LCAxMiwgMTMsIDI1MSwgNTMsIDEyLCAxMywgMjUxLCA1MiwgMTIsIDEzLCAyNTEsIDUxLCAxMiwgMTMsIDI1MSwgCisgICAgNTAsIDEyLCAxMywgMjUxLCA0OSwgMTIsIDEzLCAyNTEsIDQ4LCAxMiwgMTMsIDI1MSwgNDcsIDEyLCAxMywgMjUxLCA0NiwgCisgICAgMTIsIDEzLCAyNTEsIDQ1LCAxMiwgMTMsIDI1MSwgNDQsIDEyLCAxMywgMjUxLCA0MywgMTIsIDEzLCAyNTEsIDQyLCAxMiwgCisgICAgMTMsIDI1MSwgNDEsIDEyLCAxMywgMjUxLCA0MCwgMTIsIDEzLCAyNTEsIDM5LCAxMiwgMTMsIDI1MSwgMzgsIDEyLCAxMywgCisgICAgMjUxLCAzNywgMTIsIDEzLCAyNTEsIDM2LCAxMiwgMTMsIDI0OSwgNjAsIDEyLCAxMywgMjQ5LCA1OSwgMTIsIDEzLCAyNDksIAorICAgIDU4LCAxMiwgMTMsIDI0OSwgNTcsIDEyLCAxMywgMjQ5LCA1NiwgMTIsIDEzLCAyNDksIDU1LCAxMiwgMTMsIDI0OSwgNTQsIAorICAgIDEyLCAxMywgMjQ5LCA1MywgMTIsIDEzLCAyNDksIDUyLCAxMiwgMTMsIDI0OSwgNTEsIDEyLCAxMywgMjQ5LCA1MCwgMTIsIAorICAgIDEzLCAyNDksIDQ5LCAxMiwgMTMsIDI0OSwgNDgsIDEyLCAxMywgMjQ5LCA0NywgMTIsIDEzLCAyNDksIDQ2LCAxMiwgMTMsIAorICAgIDI0OSwgNDUsIDEyLCAxMywgMjQ5LCA0NCwgMTIsIDEzLCAyNDksIDQzLCAxMiwgMTMsIDI0OSwgNDIsIDEyLCAxMywgMjQ5LCAKKyAgICA0MSwgMTIsIDEzLCAyNDksIDQwLCAxMiwgMTMsIDI0OSwgMzksIDEyLCAxMywgMjQ5LCAzOCwgMTIsIDEzLCAyNDksIDM3LCAKKyAgICAxMiwgMTMsIDI0OSwgMzYsIDEyLCAxMywgMjQ5LCAzNSwgMTIsIDEzLCAyNDksIDM0LCAxMiwgMTMsIDI0OSwgMzMsIDEyLCAKKyAgICAxMywgMjQ5LCAzMiwgMTIsIDEzLCAyNDksIDMxLCAxMiwgMTMsIDI0OSwgMzAsIDEyLCAxMywgMjQ5LCAyOSwgMTIsIDEzLCAKKyAgICAyNDksIDI4LCAxMiwgMTMsIDI0OSwgMjcsIDEyLCAxMywgMjQ5LCAyNiwgMTIsIDEzLCAyNDksIDI1LCAxMiwgMTMsIDI0OSwgCisgICAgMjQsIDEyLCAxMywgMjQ5LCAyMywgMTIsIDEzLCAyNDksIDIyLCAxMiwgMTMsIDI0OSwgMjEsIDEyLCAxMywgMjQ5LCAyMCwgCisgICAgMTIsIDEzLCAyNDksIDE5LCAxMiwgMTMsIDI0OSwgMTgsIDEyLCAxMywgMjQ5LCAxNywgMTIsIDEzLCAyNDksIDE2LCAxMiwgCisgICAgMTMsIDI0OSwgMTUsIDEyLCAxMywgMjQ5LCAxNCwgMTIsIDEzLCAyNDksIDEzLCAxMiwgMTMsIDI0OSwgMTIsIDEyLCAxMywgCisgICAgMjQ5LCAxMSwgMTIsIDEzLCAyNDksIDEwLCAxMiwgMTMsIDI0OSwgOSwgMTIsIDEzLCAyNDksIDgsIDEyLCAxMywgMjQ5LCA3LCAKKyAgICAxMiwgMTMsIDI0OSwgNiwgMTIsIDEzLCAyNDksIDUsIDEyLCAxMywgMjQ5LCA0LCAxMiwgMTMsIDI0OSwgMywgMTIsIDEzLCAKKyAgICAyNDksIDIsIDEyLCAxMywgMjQ5LCAxLCAxMiwgMTMsIDI0OSwgMCwgMTIsIDEzLCAyNDgsIDI1NSwgMTIsIDEzLCAyNDgsIAorICAgIDI1NCwgMTIsIDEzLCAyNDgsIDI1MywgMTIsIDEzLCAyNDgsIDI1MiwgMTIsIDEzLCAyNDgsIDI1MSwgMTIsIDEzLCAyNDgsIAorICAgIDI1MCwgMTIsIDEzLCAyNDgsIDI0OSwgMTIsIDEzLCAyNDgsIDI0OCwgMTIsIDEzLCAyNDgsIDI0NywgMTIsIDEzLCAyNDgsIAorICAgIDI0NiwgMTIsIDEzLCAyNDgsIDI0NSwgMTIsIDEzLCAyNDgsIDI0NCwgMTIsIDEzLCAyNDgsIDI0MywgMTIsIDEzLCAyNDgsIAorICAgIDI0MiwgMTIsIDEzLCAyNDgsIDI0MSwgMTIsIDEzLCAyNDgsIDI0MCwgMTIsIDEzLCAyNDgsIDIzOSwgMTIsIDEzLCAyNDgsIAorICAgIDIzOCwgMTIsIDEzLCAyNDgsIDIzNywgMTIsIDEzLCAyNDgsIDIzNiwgMTIsIDEzLCAyNDgsIDIzNSwgMTIsIDEzLCAyNDgsIAorICAgIDIzNCwgMTIsIDEzLCAyNDgsIDIzMywgMTIsIDEzLCAyNDgsIDIzMiwgMTIsIDEzLCAyNDgsIDIzMSwgMTIsIDEzLCAyNDgsIAorICAgIDIzMCwgMTIsIDEzLCAyNDgsIDIyOSwgMTIsIDEzLCAyNDgsIDIyOCwgMTIsIDEzLCAyNDgsIDIyNywgMTIsIDEzLCAyNDgsIAorICAgIDIyNiwgMTIsIDEzLCAyNDgsIDIyNSwgMTIsIDEzLCAyNDYsIDI0LCAxMiwgMTMsIDI0NiwgMjMsIDEyLCAxMywgMjQ2LCAyMiwgCisgICAgMTIsIDEzLCAyNDYsIDIxLCAxMiwgMTMsIDI0NiwgMjAsIDEyLCAxMywgMjQ2LCAxOSwgMTIsIDEzLCAyNDYsIDE4LCAxMiwgCisgICAgMTMsIDI0NiwgMTcsIDEyLCAxMywgMjQ2LCAxNiwgMTIsIDEzLCAyNDYsIDE1LCAxMiwgMTMsIDI0NiwgMTQsIDEyLCAxMywgCisgICAgMjQ2LCAxMywgMTIsIDEzLCAyNDYsIDEyLCAxMiwgMTMsIDI0NiwgMTEsIDEyLCAxMywgMjQ2LCAxMCwgMTIsIDEzLCAyNDYsIAorICAgIDksIDEyLCAxMywgMjQ2LCA4LCAxMiwgMTMsIDI0NiwgNywgMTIsIDEzLCAyNDYsIDYsIDEyLCAxMywgMjQ2LCA1LCAxMiwgCisgICAgMTMsIDI0NiwgNCwgMTIsIDEzLCAyNDYsIDMsIDEyLCAxMywgMjQ2LCAyLCAxMiwgMTMsIDI0NiwgMSwgMTIsIDEzLCAyNDYsIAorICAgIDAsIDEyLCAxMywgMjQ1LCAyNTUsIDEyLCAxMywgMjQ1LCAyNTQsIDEyLCAxMywgMjQ1LCAyNTMsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTIsIDEyLCAxMywgMjQ1LCAyNTEsIDEyLCAxMywgMjQ1LCAyNTAsIDEyLCAxMywgMjQ1LCAyNDksIDEyLCAxMywgMjQ1LCAKKyAgICAyNDgsIDEyLCAxMywgMjQ1LCAyNDcsIDEyLCAxMywgMjQ1LCAyNDYsIDEyLCAxMywgMjQ1LCAyNDUsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDQsIDEyLCAxMywgMjQ1LCAyNDMsIDEyLCAxMywgMjQ1LCAyNDIsIDEyLCAxMywgMjQ1LCAyNDEsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDAsIDEyLCAxMywgMjQ1LCAyMzksIDEyLCAxMywgMjQ1LCAyMzgsIDEyLCAxMywgMjQ1LCAyMzcsIDEyLCAxMywgMjQ1LCAKKyAgICA2LCAxMiwgMTMsIDI0NSwgNSwgMTIsIDEzLCAyNDUsIDQsIDEyLCAxMywgMjQ1LCAzLCAxMiwgMTMsIDI0NSwgMiwgMTIsIAorICAgIDEzLCAyNDUsIDEsIDEyLCAxMywgMjQ1LCAwLCAxMiwgMTMsIDI0NCwgMjU1LCAxMiwgMTMsIDI0NCwgMjU0LCAxMiwgMTMsIAorICAgIDI0NCwgMjUzLCAxMiwgMTMsIDI0NCwgMjUyLCAxMiwgMTMsIDI0NCwgMjUxLCAxMiwgMTMsIDI0NCwgMjUwLCAxMiwgMTMsIAorICAgIDI0NCwgMjQ5LCAxMiwgMTMsIDI0NCwgMjQ4LCAxMiwgMTMsIDI0NCwgMjQ3LCAxMiwgMTMsIDI0NCwgMjQ2LCAxMiwgMTMsIAorICAgIDI0NCwgMjQ1LCAxMiwgMTMsIDI0NCwgMjQ0LCAxMiwgMTMsIDI0NCwgMjQzLCAxMiwgMTMsIDI0NCwgMjQyLCAxMiwgMTMsIAorICAgIDI0NCwgMjQxLCAxMiwgMTMsIDI0NCwgMjQwLCAxMiwgMTMsIDI0NCwgMjM5LCAxMiwgMTMsIDI0NCwgMjM4LCAxMiwgMTMsIAorICAgIDI0NCwgMjM3LCAxMiwgMTMsIDI0NCwgMjM2LCAxMiwgMTMsIDI0NCwgMjM1LCAxMiwgMTMsIDI0NCwgMjM0LCAxMiwgMTMsIAorICAgIDI0NCwgMjMzLCAxMiwgMTMsIDI0NCwgMjMyLCAxMiwgMTMsIDI0NCwgMjMxLCAxMiwgMTMsIDI0NCwgMjMwLCAxMiwgMTMsIAorICAgIDI0NCwgMjI5LCAxMiwgMTMsIDI0NCwgMjI4LCAxMiwgMTMsIDI0NCwgMjI3LCAxMiwgMTMsIDI0NCwgMjI2LCAxMiwgMTMsIAorICAgIDI0NCwgMjI1LCAxMiwgMTMsIDI0NCwgMjI0LCAxMiwgMTMsIDI0NCwgMjIzLCAxMiwgMTMsIDI0NCwgMjIyLCAxMiwgMTMsIAorICAgIDI0NCwgMjIxLCAxMiwgMTMsIDI0NCwgMjIwLCAxMiwgMTMsIDI0NCwgMjE5LCAxMiwgMTMsIDI0NCwgMjE4LCAxMiwgMTMsIAorICAgIDI0NCwgMjE3LCAxMiwgMTMsIDI0NCwgMjE2LCAxMiwgMTMsIDI0NCwgMjE1LCAxMiwgMTMsIDI0NCwgMjE0LCAxMiwgMTMsIAorICAgIDI0NCwgMjEzLCAxMiwgMTMsIDI0NCwgMjEyLCAxMiwgMTMsIDI0NCwgMjExLCAxMiwgMTMsIDI0NCwgMjEwLCAxMiwgMTMsIAorICAgIDI0NCwgMjA5LCAxMiwgMTMsIDI0NCwgMjA4LCAxMiwgMTMsIDI0NCwgMjA3LCAxMiwgMTMsIDI0NCwgMjA2LCAxMiwgMTMsIAorICAgIDI0NCwgMjA1LCAxMiwgMTMsIDI0NCwgMjA0LCAxMiwgMTMsIDI0NCwgMjAzLCAxMiwgMTMsIDI0NCwgMjAyLCAxMiwgMTMsIAorICAgIDI0NCwgMjAxLCAxMiwgMTMsIDI0NCwgMjAwLCAxMiwgMTMsIDI0NCwgMTk5LCAxMiwgMTMsIDI0NCwgMTk4LCAxMiwgMTMsIAorICAgIDI0MywgMjAyLCAxMiwgMTMsIDI0MywgMjAxLCAxMiwgMTMsIDI0MywgMjAwLCAxMiwgMTMsIDI0MywgMTk5LCAxMiwgMTMsIAorICAgIDI0MywgMTk4LCAxMiwgMTMsIDI0MywgMTk3LCAxMiwgMTMsIDI0MywgMTk2LCAxMiwgMTMsIDI0MywgMTk1LCAxMiwgMTMsIAorICAgIDI0MywgMTk0LCAxMiwgMTMsIDI0MywgMTkzLCAxMiwgMTMsIDI0MywgMTkyLCAxMiwgMTMsIDI0MywgMTkxLCAxMiwgMTMsIAorICAgIDI0MywgMTkwLCAxMiwgMTMsIDI0MywgMTg5LCAxMiwgMTMsIDI0MywgMTg4LCAxMiwgMTMsIDI0MywgMTg3LCAxMiwgMTMsIAorICAgIDI0MywgMTg2LCAxMiwgMTMsIDI0MywgMTg1LCAxMiwgMTMsIDI0MywgMTg0LCAxMiwgMTMsIDI0MywgMTgzLCAxMiwgMTMsIAorICAgIDI0MywgMTgyLCAxMiwgMTMsIDI0MywgMTgxLCAxMiwgMTMsIDI0MywgMTgwLCAxMiwgMTMsIDI0MywgMTc5LCAxMiwgMTMsIAorICAgIDI0MywgMTc4LCAxMiwgMTMsIDI0MywgMTc3LCAxMiwgMTMsIDI0MywgMTc2LCAxMiwgMTMsIDI0MywgMTc1LCAxMiwgMTMsIAorICAgIDI0MywgMTc0LCAxMiwgMTMsIDI0MywgMTczLCAxMiwgMTMsIDI0MywgMTcyLCAxMiwgMTMsIDI0MywgMTcxLCAxMiwgMTMsIAorICAgIDI0MywgMTcwLCAxMiwgMTMsIDI0MywgMTY5LCAxMiwgMTMsIDI0MywgMTY4LCAxMiwgMTMsIDI0MywgMTY3LCAxMiwgMTMsIAorICAgIDI0MywgMTY2LCAxMiwgMTMsIDI0MywgMTY1LCAxMiwgMTMsIDI0MywgMTY0LCAxMiwgMTMsIDI0MywgMTYzLCAxMiwgMTMsIAorICAgIDI0MywgMTYyLCAxMiwgMTMsIDI0MywgMTYxLCAxMiwgMTMsIDI0MywgMTYwLCAxMiwgMTMsIDI0MywgMTU5LCAxMiwgMTMsIAorICAgIDI0MywgMTU4LCAxMiwgMTMsIDI0MywgMTU3LCAxMiwgMTMsIDI0MywgMTU2LCAxMiwgMTMsIDI0MywgMTU1LCAxMiwgMTMsIAorICAgIDI0MywgMTU0LCAxMiwgMTMsIDI0MywgMTUzLCAxMiwgMTMsIDI0MywgMTUyLCAxMiwgMTMsIDI0MywgMTUxLCAxMiwgMTMsIAorICAgIDI0MywgMTUwLCAxMiwgMTMsIDI0MywgMTQ5LCAxMiwgMTMsIDI0MywgMTQ4LCAxMiwgMTMsIDI0MywgMTQ3LCAxMiwgMTMsIAorICAgIDI0MywgMTQ2LCAxMiwgMTMsIDI0MywgMTQ1LCAxMiwgMTMsIDI0MywgMTQ0LCAxMiwgMTMsIDI0MywgMTQzLCAxMiwgMTMsIAorICAgIDI0MywgMTQyLCAxMiwgMTMsIDI0MywgMTQxLCAxMiwgMTMsIDI0MywgMTQwLCAxMiwgMTMsIDI0MywgMTM5LCAxMiwgMTMsIAorICAgIDI0MiwgNTksIDEyLCAxMywgMjQyLCA1OCwgMTIsIDEzLCAyNDIsIDU3LCAxMiwgMTMsIDI0MiwgNTYsIDEyLCAxMywgMjQyLCAKKyAgICA1NSwgMTIsIDEzLCAyNDIsIDU0LCAxMiwgMTMsIDI0MiwgNTMsIDEyLCAxMywgMjQyLCA1MiwgMTIsIDEzLCAyNDIsIDUxLCAKKyAgICAxMiwgMTMsIDI0MCwgMTM5LCAxMiwgMTMsIDI0MCwgMTM4LCAxMiwgMTMsIDI0MCwgMTM3LCAxMiwgMTMsIDI0MCwgMTM2LCAKKyAgICAxMiwgMTMsIDI0MCwgMTM1LCAxMiwgMTMsIDI0MCwgMTM0LCAxMiwgMTMsIDI0MCwgMTMzLCAxMiwgMTMsIDI0MCwgMTMyLCAKKyAgICAxMiwgMTMsIDI0MCwgMTMxLCAxMiwgMTMsIDI0MCwgMTMwLCAxMiwgMTMsIDI0MCwgMTI5LCAxMiwgMTMsIDI0MCwgMTI4LCAKKyAgICAxMiwgMTMsIDI0MCwgMTI3LCAxMiwgMTMsIDI0MCwgMTI2LCAxMiwgMTMsIDI0MCwgMTI1LCAxMiwgMTMsIDI0MCwgMTI0LCAKKyAgICAxMiwgMTMsIDI0MCwgMTIzLCAxMiwgMTMsIDI0MCwgMTIyLCAxMiwgMTMsIDI0MCwgMTIxLCAxMiwgMTMsIDIzNSwgMjMsIAorICAgIDEyLCAxMywgMjM1LCAyMiwgMTIsIDEzLCAyMzUsIDIxLCAxMiwgMTMsIDIzNSwgMjAsIDEyLCAxMywgMjM1LCAxOSwgMTIsIAorICAgIDEzLCAyMzUsIDE4LCAxMiwgMTMsIDIzNSwgMTcsIDEyLCAxMywgMjM1LCAxNiwgMTIsIDEzLCAyMzMsIDE0NywgMTIsIDEzLCAKKyAgICAyMzMsIDE0NiwgMTIsIDEzLCAyMzMsIDE0NSwgMTIsIDEzLCAyMzMsIDE0NCwgMTIsIDEzLCAyMzMsIDE0MywgMTIsIDEzLCAKKyAgICAyMzMsIDE0MiwgMTIsIDEzLCAyMzMsIDE0MSwgMTIsIDEzLCAyMzMsIDE0MCwgMTIsIDEzLCAyMzMsIDEzOSwgMTIsIDEzLCAKKyAgICAyMzMsIDEzOCwgMTIsIDEzLCAyMzIsIDUwLCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCA0OCwgMTIsIDEzLCAyMzIsIAorICAgIDQ3LCAxMiwgMTMsIDIzMiwgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAxMiwgMTMsIDIzMiwgNDMsIAorICAgIDEyLCAxMywgMjMyLCA0MiwgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAxMywgMjMyLCAzOSwgMTIsIAorICAgIDEzLCAyMzIsIDM4LCAxMiwgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAyMzIsIDM1LCAxMiwgMTMsIAorICAgIDIzMiwgMzQsIDEyLCAxMywgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgMzEsIDEyLCAxMywgMjMyLCAKKyAgICAzMCwgMTIsIDEzLCAyMzIsIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgMTIsIDEzLCAyMzIsIDI2LCAKKyAgICAxMiwgMTMsIDIzMiwgMjUsIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgMTMsIDIzMiwgMjIsIDEyLCAKKyAgICAxMywgMjMyLCAyMSwgMTIsIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgMjMyLCAxOCwgMTIsIDEzLCAKKyAgICAyMzIsIDE3LCAxMiwgMTMsIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIDE0LCAxMiwgMTMsIDIzMiwgCisgICAgMTMsIDEyLCAxMywgMjMyLCAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIDEyLCAxMywgMjMyLCA5LCAKKyAgICAxMiwgMTMsIDIzMiwgOCwgMTIsIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIDIzMiwgNSwgMTIsIDEzLCAKKyAgICAyMzIsIDQsIDEyLCAxMywgMjMyLCAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIDEyLCAxMywgMjMyLCAwLCAKKyAgICAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgMTMsIDIzMSwgMjUyLCAKKyAgICAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgMTMsIDIzMSwgMjQ4LCAKKyAgICAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgMTMsIDIzMSwgMjQ0LCAKKyAgICAxMiwgMTMsIDIzMSwgMjQzLCAxMiwgMTMsIDIzMSwgMjQyLCAxMiwgMTMsIDIzMSwgMjQxLCAxMiwgMTMsIDIzMCwgMjMsIAorICAgIDEyLCAxMywgMjMwLCAyMiwgMTIsIDEzLCAyMzAsIDIxLCAxMiwgMTMsIDIzMCwgMjAsIDEyLCAxMywgMjMwLCAxOSwgMTIsIAorICAgIDEzLCAyMzAsIDE4LCAxMiwgMTMsIDIzMCwgMTcsIDEyLCAxMywgMjMwLCAxNiwgMTIsIDEzLCAyMzAsIDE1LCAxMiwgMTMsIAorICAgIDIzMCwgMTQsIDEyLCAxMywgMjMwLCAxMywgMTIsIDEzLCAyMzAsIDEyLCAxMiwgMTMsIDIzMCwgMTEsIDEyLCAxMywgMjMwLCAKKyAgICAxMCwgMTIsIDEzLCAyMzAsIDksIDEyLCAxMywgMjMwLCA4LCAxMiwgMTMsIDIzMCwgNywgMTIsIDEzLCAyMzAsIDYsIDEyLCAKKyAgICAxMywgMjMwLCA1LCAxMiwgMTMsIDIzMCwgNCwgMTIsIDEzLCAyMzAsIDMsIDEyLCAxMywgMjMwLCAyLCAxMiwgMTMsIDIzMCwgCisgICAgMSwgMTIsIDEzLCAyMzAsIDAsIDEyLCAxMywgMjI5LCAyNTUsIDEyLCAxMywgMjI5LCAyNTQsIDEyLCAxMywgMjI5LCAyNTMsIAorICAgIDEyLCAxMywgMjI5LCAyNTIsIDEyLCAxMywgMjI5LCAyNTEsIDEyLCAxMywgMjI5LCAyNTAsIDEyLCAxMywgMjI5LCAyNDksIAorICAgIDEyLCAxMywgMjI5LCAyNDgsIDEyLCAxMywgMjI5LCAyNDcsIDEyLCAxMywgMjI5LCAyNDYsIDEyLCAxMywgMjI5LCAyNDUsIAorICAgIDEyLCAxMywgMjI5LCAyNDQsIDEyLCAxMywgMjI5LCAyNDMsIDEyLCAxMywgMjI5LCAyNDIsIDEyLCAxMywgMjI5LCAyNDEsIAorICAgIDEyLCAxMywgMjI5LCAyNDAsIDEyLCAxMywgMjI5LCAyMzksIDEyLCAxMywgMjI5LCAyMzgsIDEyLCAxMywgMjI5LCAyMzcsIAorICAgIDEyLCAxMywgMjI5LCAyMzYsIDEyLCAxMywgMjI5LCAyMzUsIDEyLCAxMywgMjI5LCAyMzQsIDEyLCAxMywgMjI5LCAyMzMsIAorICAgIDEyLCAxMywgMjI5LCAyMzIsIDEyLCAxMywgMjI5LCAyMzEsIDEyLCAxMywgMjI4LCAxMzUsIDEyLCAxMywgMjI4LCAxMzQsIAorICAgIDEyLCAxMywgMjI4LCAxMzMsIDEyLCAxMywgMjI4LCAxMzIsIDEyLCAxMywgMjI4LCAxMzEsIDEyLCAxMywgMjI4LCAxMzAsIAorICAgIDEyLCAxMywgMjI4LCAxMjksIDEyLCAxMywgMjI4LCAxMjgsIDEyLCAxMywgMjI4LCAxMjcsIDEyLCAxMywgMjI4LCAxMjYsIAorICAgIDEyLCAxMywgMjI4LCAxMjUsIDEyLCAxMywgMjI4LCAxMjQsIDEyLCAxMywgMjI4LCAxMjMsIDEyLCAxMywgMjI4LCAxMjIsIAorICAgIDEyLCAxMywgMjI4LCAxMjEsIDEyLCAxMywgMjI4LCAxMjAsIDEyLCAxMywgMjI4LCAxMTksIDEyLCAxMywgMjI4LCAxMTgsIAorICAgIDEyLCAxMywgMjI4LCAxMTcsIDEyLCAxMywgMjI4LCAxMTYsIDEyLCAxMywgMjI4LCAxMTUsIDEyLCAxMywgMjI4LCAxMTQsIAorICAgIDEyLCAxMywgMjI3LCAyMzcsIDEyLCAxMywgMjI3LCAyMzYsIDEyLCAxMywgMjI3LCAyMzUsIDEyLCAxMywgMjI3LCAyMzQsIAorICAgIDEyLCAxMywgMjI3LCAyMzMsIDEyLCAxMywgMjI3LCAyMzIsIDEyLCAxMywgMjI3LCAyMzEsIDEyLCAxMywgMjI3LCAyMzAsIAorICAgIDEyLCAxMywgMjI3LCAyMjksIDEyLCAxMywgMjI3LCAyMjgsIDEyLCAxMywgMjI3LCAyMjcsIDEyLCAxMywgMjI3LCAyMjYsIAorICAgIDEyLCAxMywgMjI3LCAyMjUsIDEyLCAxMywgMjI3LCAyMjQsIDEyLCAxMywgMjI3LCAyMjMsIDEyLCAxMywgMjI3LCAyMjIsIAorICAgIDEyLCAxMywgMjI3LCAyMjEsIDEyLCAxMywgMjI3LCAyMjAsIDEyLCAxMywgMjI3LCAyMTksIDEyLCAxMywgMjI3LCAyMTgsIAorICAgIDEyLCAxMywgMjI3LCAyMTcsIDEyLCAxMywgMjI3LCAyMTYsIDEyLCAxMywgMjI3LCAyMTUsIDEyLCAxMywgMjI3LCAyMTQsIAorICAgIDEyLCAxMywgMjI3LCAyMTMsIDEyLCAxMywgMjI3LCAyMTIsIDEyLCAxMywgMjI3LCA3NywgMTIsIDEzLCAyMjcsIDc2LCAxMiwgCisgICAgMTMsIDIyNywgNzUsIDEyLCAxMywgMjI3LCA3NCwgMTIsIDEzLCAyMjcsIDczLCAxMiwgMTMsIDIyNywgNzIsIDEyLCAxMywgCisgICAgMjI3LCA3MSwgMTIsIDEzLCAyMjcsIDcwLCAxMiwgMTMsIDIyNywgNjksIDEyLCAxMywgMjI3LCA2OCwgMTIsIDEzLCAyMjcsIAorICAgIDY3LCAxMiwgMTMsIDIyNywgNjYsIDEyLCAxMywgMjI3LCA2NSwgMTIsIDEzLCAyMjcsIDY0LCAxMiwgMTMsIDIyNywgNjMsIAorICAgIDEyLCAxMywgMjI3LCA2MiwgMTIsIDEzLCAyMjcsIDYxLCAxMiwgMTMsIDIyNywgNjAsIDEyLCAxMywgMjI3LCA1OSwgMTIsIAorICAgIDEzLCAyMjcsIDU4LCAxMiwgMTMsIDIyNywgNTcsIDEyLCAxMywgMjI3LCA1NiwgMTIsIDEzLCAyMjcsIDU1LCAxMiwgMTMsIAorICAgIDIyNywgNTQsIDEyLCAxMywgMjI3LCA1MywgMTIsIDEzLCAyMjcsIDUyLCAxMiwgMTMsIDIyNywgNTEsIDEyLCAxMywgMjI3LCAKKyAgICA1MCwgMTIsIDEzLCAyMjcsIDQ5LCAxMiwgMTMsIDIyNywgNDgsIDEyLCAxMywgMjI3LCA0NywgMTIsIDEzLCAyMjcsIDQ2LCAKKyAgICAxMiwgMTMsIDIyNywgNDUsIDEyLCAxMywgMjI3LCA0NCwgMTIsIDEzLCAyMjcsIDQzLCAxMiwgMTMsIDIyNywgNDIsIDEyLCAKKyAgICAxMywgMjI3LCA0MSwgMTIsIDEzLCAyMjcsIDQwLCAxMiwgMTMsIDIyNywgMzksIDEyLCAxMywgMjI3LCAzOCwgMTIsIDEzLCAKKyAgICAyMjcsIDM3LCAxMiwgMTMsIDIyNywgMzYsIDEyLCAxMywgMjI3LCAzNSwgMTIsIDEzLCAyMjcsIDM0LCAxMiwgMTMsIDIyNywgCisgICAgMzMsIDEyLCAxMywgMjI3LCAzMiwgMTIsIDEzLCAyMjcsIDMxLCAxMiwgMTMsIDIyNywgMzAsIDEyLCAxMywgMjI3LCAyOSwgCisgICAgMTIsIDEzLCAyMjcsIDI4LCAxMiwgMTMsIDIyNywgMjcsIDEyLCAxMywgMjI3LCAyNiwgMTIsIDEzLCAyMjcsIDI1LCAxMiwgCisgICAgMTMsIDIyNywgMjQsIDEyLCAxMywgMjI3LCAyMywgMTIsIDEzLCAyMjcsIDIyLCAxMiwgMTMsIDIyNywgMjEsIDEyLCAxMywgCisgICAgMjI3LCAyMCwgMTIsIDEzLCAyMjcsIDE5LCAxMiwgMTMsIDIyNywgMTgsIDEyLCAxMywgMjI3LCAxNywgMTIsIDEzLCAyMjcsIAorICAgIDE2LCAxMiwgMTMsIDIyNywgMTUsIDEyLCAxMywgMjI3LCAxNCwgMTIsIDEzLCAyMjcsIDEzLCAxMiwgMTMsIDIyNywgMTIsIAorICAgIDEyLCAxMywgMjI3LCAxMSwgMTIsIDEzLCAyMjcsIDEwLCAxMiwgMTMsIDIyNywgOSwgMTIsIDEzLCAyMjcsIDgsIDEyLCAxMywgCisgICAgMjI3LCA3LCAxMiwgMTMsIDIyNywgNiwgMTIsIDEzLCAyMjcsIDUsIDEyLCAxMywgMjI3LCA0LCAxMiwgMTMsIDIyNywgMywgCisgICAgMTIsIDEzLCAyMjYsIDEwNSwgMTIsIDEzLCAyMjYsIDEwNCwgMTIsIDEzLCAyMjYsIDEwMywgMTIsIDEzLCAyMjYsIDEwMiwgCisgICAgMTIsIDEzLCAyMjYsIDEwMSwgMTIsIDEzLCAyMjYsIDEwMCwgMTIsIDEzLCAyMjYsIDk5LCAxMiwgMTMsIDIyNiwgOTgsIDEyLCAKKyAgICAxMywgMjI2LCA5NywgMTIsIDEzLCAyMjYsIDk2LCAxMiwgMTMsIDIyNiwgOTUsIDEyLCAxMywgMjI2LCA5NCwgMTIsIDEzLCAKKyAgICAyMjYsIDkzLCAxMiwgMTMsIDIyNCwgOTYsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgCisgICAgOTMsIDEyLCAxMywgMjI0LCA5MiwgMTIsIDEzLCAyMjQsIDkxLCAxMiwgMTMsIDIyNCwgOTAsIDEyLCAxMywgMjIzLCAyMjMsIAorICAgIDEyLCAxMywgMjIzLCAyMjIsIDEyLCAxMywgMjIzLCAyMjEsIDEyLCAxMywgMjIzLCAyMjAsIDEyLCAxMywgMjIzLCAyMTksIAorICAgIDEyLCAxMywgMjIzLCAyMTgsIDEyLCAxMywgMjIzLCAyMTcsIDEyLCAxMywgMjIzLCAyMTYsIDEyLCAxMywgMjIzLCAyMTUsIAorICAgIDEyLCAxMywgMjIzLCAyMTQsIDEyLCAxMywgMjIzLCAyMTMsIDEyLCAxMywgMjIzLCAyMTIsIDEyLCAxMywgMjIzLCAyMTEsIAorICAgIDEyLCAxMywgMjIzLCAyMTAsIDEyLCAxMywgMjIzLCAyMDksIDEyLCAxMywgMjIzLCAyMDgsIDEyLCAxMywgMjIzLCAyMDcsIAorICAgIDEyLCAxMywgMjIzLCAyMDYsIDEyLCAxMywgMjIzLCAyMDUsIDEyLCAxMywgMjIzLCAyMDQsIDEyLCAxMywgMjIzLCAyMDMsIAorICAgIDEyLCAxMywgMjIzLCAyMDIsIDEyLCAxMywgMjIzLCAyMDEsIDEyLCAxMywgMjIzLCAyMDAsIDEyLCAxMywgMjIzLCAxOTksIAorICAgIDEyLCAxMywgMjIzLCAxOTgsIDEyLCAxMywgMjIzLCAxOTcsIDEyLCAxMywgMjIzLCAxOTYsIDEyLCAxMywgMjIzLCAxOTUsIAorICAgIDEyLCAxMywgMjIzLCAxOTQsIDEyLCAxMywgMjIzLCAxOTMsIDEyLCAxMywgMjIzLCAxOTIsIDEyLCAxMywgMjIzLCAxOTEsIAorICAgIDEyLCAxMywgMjIzLCAxOTAsIDEyLCAxMywgMjIyLCA4OSwgMTIsIDEzLCAyMjIsIDg4LCAxMiwgMTMsIDIyMiwgODcsIDEyLCAKKyAgICAxMywgMjIyLCA4NiwgMTIsIDEzLCAyMjIsIDg1LCAxMiwgMTMsIDIyMiwgODQsIDEyLCAxMywgMjIyLCA4MywgMTIsIDEzLCAKKyAgICAyMjIsIDgyLCAxMiwgMTMsIDIyMiwgODEsIDEyLCAxMywgMjIyLCA4MCwgMTIsIDEzLCAyMjIsIDc5LCAxMiwgMTMsIDIyMiwgCisgICAgNzgsIDEyLCAxMywgMjIyLCA3NywgMTIsIDEzLCAyMjIsIDc2LCAxMiwgMTMsIDIyMiwgNzUsIDEyLCAxMywgMjIyLCA3NCwgCisgICAgMTIsIDEzLCAyMjIsIDczLCAxMiwgMTMsIDIyMiwgNzIsIDEyLCAxMywgMjIyLCA3MSwgMTIsIDEzLCAyMjIsIDcwLCAxMiwgCisgICAgMTMsIDIyMiwgNjksIDEyLCAxMywgMjIyLCA2OCwgMTIsIDEzLCAyMjIsIDY3LCAxMiwgMTMsIDIyMiwgNjYsIDEyLCAxMywgCisgICAgMjIyLCA2NSwgMTIsIDEzLCAyMjIsIDY0LCAxMiwgMTMsIDIyMiwgNjMsIDEyLCAxMywgMjIyLCA2MiwgMTIsIDEzLCAyMjIsIAorICAgIDYxLCAxMiwgMTMsIDIyMiwgNjAsIDEyLCAxMywgMjIyLCA1OSwgMTIsIDEzLCAyMjIsIDU4LCAxMiwgMTMsIDIyMiwgNTcsIAorICAgIDEyLCAxMywgMjIyLCA1NiwgMTIsIDEzLCAyMjIsIDU1LCAxMiwgMTMsIDIyMiwgNTQsIDEyLCAxMywgMjIyLCA1MywgMTIsIAorICAgIDEzLCAyMjIsIDUyLCAxMiwgMTMsIDIyMiwgNTEsIDEyLCAxMywgMjIyLCA1MCwgMTIsIDEzLCAyMjIsIDQ5LCAxMiwgMTMsIAorICAgIDIyMiwgNDgsIDEyLCAxMywgMjIyLCA0NywgMTIsIDEzLCAyMjIsIDQ2LCAxMiwgMTMsIDIyMiwgNDUsIDEyLCAxMywgMjIyLCAKKyAgICA0NCwgMTIsIDEzLCAyMjIsIDQzLCAxMiwgMTMsIDIyMiwgNDIsIDEyLCAxMywgMjIyLCA0MSwgMTIsIDEzLCAyMjIsIDQwLCAKKyAgICAxMiwgMTMsIDIyMiwgMzksIDEyLCAxMywgMjIyLCAzOCwgMTIsIDEzLCAyMjIsIDM3LCAxMiwgMTMsIDIyMiwgMzYsIDEyLCAKKyAgICAxMywgMjE3LCAxNTEsIDEyLCAxMywgMjE3LCAxNTAsIDEyLCAxMywgMjE3LCAxNDksIDEyLCAxMywgMjE3LCAxNDgsIDEyLCAKKyAgICAxMywgMjE3LCAxNDcsIDEyLCAxMywgMjE3LCAxNDYsIDEyLCAxMywgMjE3LCAxNDUsIDEyLCAxMywgMjE3LCAxNDQsIDEyLCAKKyAgICAxMywgMjE3LCAxNDMsIDEyLCAxMywgMjE3LCAxNDIsIDEyLCAxMywgMjE3LCAxNDEsIDEyLCAxMywgMjE3LCAxNDAsIDEyLCAKKyAgICAxMywgMjE3LCAxMzksIDEyLCAxMywgMjE3LCAxMzgsIDEyLCAxMywgMjE3LCAxMzcsIDEyLCAxMywgMjE3LCAxMzYsIDEyLCAKKyAgICAxMywgMjE3LCAxMzUsIDEyLCAxMywgMjE3LCAxMzQsIDEyLCAxMywgMjE3LCAxMzMsIDEyLCAxMywgMjE3LCAxMzIsIDEyLCAKKyAgICAxMywgMjE3LCAxMzEsIDEyLCAxMywgMjE3LCAxMzAsIDEyLCAxMywgMjE3LCAxMjksIDEyLCAxMywgMjE3LCAxMjgsIDEyLCAKKyAgICAxMywgMjE3LCAxMjcsIDEyLCAxMywgMjE3LCAxMjYsIDEyLCAxMywgMjE3LCAxMjUsIDEyLCAxMywgMjE3LCAxMjQsIDEyLCAKKyAgICAxMywgMjE3LCAxMjMsIDEyLCAxMywgMjE3LCAxMjIsIDEyLCAxMywgMjE3LCAxMjEsIDEyLCAxMywgMjE3LCAxMjAsIDEyLCAKKyAgICAxMywgMjE3LCAxMTksIDEyLCAxMywgMjE3LCAxMTgsIDEyLCAxMywgMjE3LCAxMTcsIDEyLCAxMywgMjE3LCAxMTYsIDEyLCAKKyAgICAxMywgMjE3LCAxMTUsIDEyLCAxMywgMjE3LCAxMTQsIDEyLCAxMywgMjE3LCAxMTMsIDEyLCAxMywgMjE3LCAxMTIsIDEyLCAKKyAgICAxMywgMjE3LCAxMTEsIDEyLCAxMywgMjE3LCAxMTAsIDEyLCAxMywgMjE3LCAxMDksIDEyLCAxMywgMjE3LCAxMDgsIDEyLCAKICAgICAxMywgMjE1LCAyMiwgMTIsIDEzLCAyMTUsIDIxLCAxMiwgMTMsIDIxNSwgMjAsIDEyLCAxMywgMjE1LCAxOSwgMTIsIDEzLCAKICAgICAyMTUsIDE4LCAxMiwgMTMsIDIxNSwgMTcsIDEyLCAxMywgMjE1LCAxNiwgMTIsIDEzLCAyMTUsIDE1LCAxMiwgMTMsIDIxNSwgCiAgICAgMTQsIDEyLCAxMywgMjE1LCAxMywgMTIsIDEzLCAyMTUsIDEyLCAxMiwgMTMsIDIxNSwgMTEsIDEyLCAxMywgMjE1LCAxMCwgCkBAIC0xMjE3NCwxNjQ5ICsxMjE3NSwxNjUwIEBACiAgICAgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAxMywgMjEwLCAxMjgsIDEyLCAxMywgCiAgICAgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAxMywgMjEwLCAxMjQsIDEyLCAxMywgCiAgICAgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAxMywgMjEwLCAxMjAsIDEyLCAxMywgCi0gICAgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIAotICAgIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCAKLSAgICA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAKLSAgICAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAKLSAgICAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAKLSAgICAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgCi0gICAgNDksIDEyLCAxMywgMjU1LCA0OCwgMTIsIDEzLCAyNTUsIDQ3LCAxMiwgMTMsIDI1NSwgNDYsIDEyLCAxMywgMjU1LCA0NSwgCi0gICAgMTIsIDEzLCAyNTUsIDQ0LCAxMiwgMTMsIDI1NSwgNDMsIDEyLCAxMywgMjU1LCA0MiwgMTIsIDEzLCAyNTUsIDQxLCAxMiwgCi0gICAgMTMsIDI1NSwgNDAsIDEyLCAxMywgMjU1LCAzOSwgMjAsIDEsIDE2NywgMjI5LCAxMiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCi0gICAgMjQzLCA3MCwgMjQ0LCAzNiwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIzMSwgMTcsIDIyNSwgNTcsIDIwLCAxLCAxNjcsIAotICAgIDIyNCwgMjUxLCAyMzEsIDE3LCAyMjUsIDU4LCAyMCwgMSwgMTY3LCAyMjksIDIyNiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCi0gICAgMjE5LCAyMjEsIDIwLCAxLCAxNjcsIDIxNiwgNjYsIDIzMSwgMTYsIDIwLCAxLCAxNjcsIDIyNywgMTE4LCAyMzEsIDE2LCAKLSAgICAyMCwgMSwgMTY3LCAyMjAsIDE5LCAyMjYsIDkwLCAyMjgsIDE2OSwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIyNiwgOTAsIAotICAgIDIyOCwgMTcwLCAyMjUsIDU3LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjI2LCA5MCwgMjI4LCAxNzAsIDIyNSwgNTgsIDIwLCAKLSAgICAxLCAxNjcsIDIzMSwgMjE4LCAyMCwgMSwgMTY3LCAyMTUsIDExOSwgMjMxLCAyMTksIDIwLCAxLCAxNjcsIDIyOSwgNzEsIAotICAgIDIwLCAxLCAxNjcsIDIzMSwgMjE1LCAyMCwgMSwgMTY3LCAyMzEsIDE3NiwgMjAsIDEsIDE2NywgMjMwLCA0OCwgMjAsIDEsIAotICAgIDE2NywgMjIwLCAxMjQsIDIwLCAxLCAxNjcsIDIyNywgMjQxLCAyMCwgMSwgMTY3LCAyMzQsIDE0OSwgMjAsIDEsIDE2NywgCi0gICAgMjI4LCAxMzgsIDIwLCAxLCAxNjcsIDIxOCwgNCwgMjAsIDEsIDE2NywgMjI5LCAxMSwgMjAsIDEsIDE2NywgMjMzLCA4NywgCi0gICAgMjAsIDEsIDE2NywgMjMzLCAxMiwgMjMzLCAxODksIDIwLCAxLCAxNjcsIDIyNywgMjQ4LCAyMzEsIDI0LCAyMCwgMSwgMTY3LCAKLSAgICAyMzEsIDIyMiwgMjAsIDEsIDE2NywgMjI1LCAyNDYsIDIwLCAxLCAxNjcsIDI0MiwgMjMxLCAyMCwgMSwgMTY3LCAyMjYsIAotICAgIDUwLCAyMCwgMSwgMTY3LCAyMzAsIDE1MSwgMjI5LCA0NSwgMjAsIDEsIDE2NywgMjI3LCA5OSwgMjMxLCAyNywgMjAsIDEsIAotICAgIDE2NywgMTA0LCAyMTAsIDE4OCwgMjI5LCAyMjAsIDIwLCAxLCAxNjcsIDI0MiwgMjMyLCAyMCwgMSwgMTY3LCAyMjcsIDI0OCwgCi0gICAgMjI3LCAyNDksIDIwLCAxLCAxNjcsIDIxOSwgMTI4LCAyMCwgMSwgMTY3LCAyMzEsIDksIDIwLCAxLCAxNjcsIDIzMSwgMzAsIAotICAgIDIwLCAxLCAxNjcsIDIzMCwgMTMwLCAyMCwgMSwgMTY3LCAyMzQsIDI0OSwgMjAsIDEsIDE2NywgMjI2LCA5MCwgMjMzLCA0NywgCi0gICAgMjAsIDEsIDE2NywgMjI5LCAxNDksIDIzMywgNDcsIDIwLCAxLCAxNjcsIDIyNSwgMTU4LCAyMCwgMSwgMTY3LCAyMzEsIAotICAgIDIxNiwgMjAsIDEsIDE2NywgMjI4LCAyMDcsIDIwLCAxLCAxNjcsIDIyNCwgMTM0LCAyMCwgMSwgMTY3LCAyMTUsIDExNiwgCi0gICAgMjAsIDEsIDE2NywgMjMyLCA5NCwgMjAsIDEsIDE2NywgMjE5LCA0MSwgMjAsIDEsIDE2NywgMjE2LCAyMTYsIDIwLCAxLCAKLSAgICAxNjcsIDIzMSwgMjEzLCAyMCwgMSwgMTY3LCAyMzQsIDE1NiwgMjAsIDEsIDE2NywgMjI5LCAxNDUsIDIwLCAxLCAxNjcsIAotICAgIDIzMywgMjAxLCAyMCwgMSwgMTY3LCAyMzAsIDEzMSwgMjAsIDEsIDE2NywgMjE5LCAyMTgsIDIwLCAxLCAxNjcsIDIzMiwgCi0gICAgMTM4LCAyMCwgMSwgMTY3LCAyNDQsIDkzLCAyMCwgMSwgMTY3LCAyMjIsIDE5OSwgMjAsIDEsIDE2NywgMjMzLCAyNDEsIDIwLCAKLSAgICAxLCAxNjcsIDIxOSwgMzcsIDIwLCAxLCAxNjcsIDIzMSwgMTczLCAyMjUsIDk5LCAyMCwgMSwgMTY3LCAyMjAsIDEyLCAyMCwgCi0gICAgMSwgMTY3LCAyMjcsIDI0NywgMjAsIDEsIDE2NywgMjE5LCAyNTMsIDIyOCwgMiwgMjEwLCAxOTYsIDIwLCAxLCAxNjcsIAotICAgIDIyNywgMTM4LCAyMzAsIDE0OCwgMjAsIDEsIDE2NywgMjI2LCA4NSwgMjAsIDEsIDE2NywgMjI4LCAxMzksIDIwLCAxLCAKLSAgICAxNjcsIDIxNCwgMTcwLCAyMCwgMSwgMTY3LCAyMjksIDQ4LCAyMCwgMSwgMTY3LCAyMzEsIDIxMiwgMjAsIDEsIDE2NywgCi0gICAgMjI4LCAxODEsIDIwLCAxLCAxNjcsIDIzMSwgMTE5LCAyMCwgMSwgMTY3LCAyMjcsIDE1MSwgMjAsIDEsIDE2NywgMjE2LCAKLSAgICAyMjAsIDIwLCAxLCAxNjcsIDIxOSwgMzQsIDIwLCAxLCAxNjcsIDIyNiwgODYsIDIwLCAxLCAxNjcsIDIyOCwgNiwgMjAsIDEsIAotICAgIDE2NywgMjMxLCAyMjAsIDIwLCAxLCAxNjcsIDIyNywgMTQ4LCAyMCwgMSwgMTY3LCAyMzQsIDIxNiwgMjAsIDEsIDE2NywgCi0gICAgMjI4LCA5LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgMjMyLCA5OCwgMjAsIDEsIDE2NywgMjI5LCA5OCwgCi0gICAgMjAsIDEsIDE2NywgMjI5LCAxOTYsIDIwLCAxLCAxNjcsIDIzMSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgNCwgMjAsIAotICAgIDEsIDIyNSwgMTM4LCAyMTUsIDExOSwgMjMxLCAyMTcsIDIwLCAxLCAyMjUsIDEzOCwgMjE5LCAxODUsIDIwLCAxLCAyMjUsIAotICAgIDEzOCwgMjIwLCAxMjgsIDIxNSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMiwgMTQwLCAyMjcsIDI0NCwgMjAsIDEsIDIyNSwgCi0gICAgMTM4LCAyMzEsIDEyNSwgMjMxLCAyMjEsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCA4NywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIAotICAgIDE1LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTIwLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMjM3LCAyMCwgMSwgMjI1LCAKLSAgICAxMzgsIDIyNSwgMjA4LCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgODksIDIzMywgNDcsIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAKLSAgICAxMDMsIDIyOCwgMiwgMjI3LCAxNjAsIDIwLCAxLCAyMjUsIDEzOCwgMjI3LCAyNDIsIDIyMCwgMzgsIDIwLCAxLCAyMjUsIAotICAgIDEzOCwgMjI5LCAxMTYsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxMzgsIDI0MiwgMjI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyNSwgCi0gICAgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjE1LCAxMTksIDIyOCwgMCwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDQzLCAyMjgsIAotICAgIDE3OSwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDM5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTcsIDIxNiwgMjE5LCAyMCwgMSwgCi0gICAgMjI1LCAxMzgsIDIzMSwgMTA3LCAyMzEsIDEyMSwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDE0OSwgMjI3LCAyNDQsIDIwLCAxLCAKLSAgICAyMjUsIDEzOCwgMjM0LCAxNDUsIDIwLCAxLCAyMjUsIDEzOCwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAxMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI1LCAyNDksIDIwLCAxLCAyMjUsIDEzOCwgCi0gICAgMjEzLCAxODIsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAxMywgMjMwLCA0NiwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDQ3LCAKLSAgICAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIDE5MywgMjAsIDEsIDIyNSwgMTM4LCAyMjIsIDExLCAyMCwgMSwgCi0gICAgMjI1LCAxMzgsIDIxNywgOTcsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDMyLCAKLSAgICAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMzMsIDIzMywgODQsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxOSwgMjAsIDEsIDIyNSwgCi0gICAgMTM4LCAyMTgsIDUyLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTExLCAyMCwgMSwgMjI1LCAxMzgsIDIzMCwgMTMzLCAyMCwgCi0gICAgMSwgMjI1LCAxMzgsIDIyNywgMTYzLCAyMCwgMSwgMjI1LCAxMzgsIDIyNCwgMTM4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgCi0gICAgMjgsIDIyOSwgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjQ0LCAxMjYsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCA5OCwgMjAsIDEsIAotICAgIDIyNSwgMTM4LCAyNDQsIDE0NywgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE1MywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDIzOSwgCi0gICAgMjI4LCAxNzMsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyMzksIDIyOCwgMTQ5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMywgMTEsIAotICAgIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCA1NSwgMjAsIDEsIDIyNSwgMTM4LCAyMjgsIDExLCAyMCwgMSwgMjI1LCAxMzgsIDE4NCwgCi0gICAgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDc0LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMSwgMjAsIDEsIDEzNywgMjI5LCAxMiwgCi0gICAgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIyNywgMTE3LCAyMCwgMSwgMTM3LCAyMTAsIDE5NiwgMjAsIDEsIDEzNywgMjEyLCAKLSAgICA1MywgMjAsIDEsIDEzNywgMjI5LCA0OCwgMjAsIDEsIDEzNywgMjI5LCAxMzcsIDIwLCAxLCAxMzcsIDIyOSwgMTksIDIwLCAKLSAgICAxLCAxMzcsIDI0MiwgMjM5LCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjQzLCA3NywgMjAsIDEsIDEzNywgCi0gICAgMjI3LCAxNDAsIDIzMCwgMTcwLCAyMzEsIDMxLCAyMCwgMSwgMTM3LCAyMjcsIDI0MCwgMjMxLCAxMDYsIDIwLCAxLCAxMzcsIAotICAgIDIzMSwgMTEyLCAyMCwgMSwgMTM3LCAyMjUsIDU1LCAyMCwgMSwgMTM3LCAyMjksIDEyMiwgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMjMsIDI1MSwgMjksIDIwLCAxLCAxMzcsIDIzNCwgMTQzLCAyMCwgMSwgMTM3LCAyNDIsIDI0MCwgMjAsIDEsIDEzNywgCi0gICAgMjM0LCAxNTAsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDc2LCAyMCwgMSwgMTM3LCAyMjcsIDExMSwgMjAsIDEsIAotICAgIDEzNywgMjMxLCAxMDAsIDIwLCAxLCAxMzcsIDIyOCwgMTAsIDIwLCAxLCAxMzcsIDIzMSwgMTA2LCAyMCwgMSwgMTM3LCAKLSAgICAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI0OSwgMjAsIDEsIDEzNywgMjM1LCAxMCwgMjAsIDEsIDEzNywgMjIwLCAxMjMsIAotICAgIDIwLCAxLCAxMzcsIDIyOSwgMTMxLCAyMCwgMSwgMTM3LCAyMTcsIDk1LCAyMCwgMSwgMTM3LCAyMjgsIDE1MywgMjAsIDEsIAotICAgIDEzNywgMjE2LCA2NiwgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgNzksIDIwLCAxLCAxMzcsIDIyOSwgMzksIDIyNywgCi0gICAgMTYwLCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAxOTksIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAKLSAgICAyMzQsIDE1MiwgMjAsIDEsIDEzNywgMjI3LCAyNDksIDIwLCAxLCAxMzcsIDIyOSwgMzQsIDIwLCAxLCAxMzcsIDIzMywgODgsIAotICAgIDIwLCAxLCAxMzcsIDIzMSwgMTA4LCAyMCwgMSwgMTM3LCAyMzEsIDgsIDIwLCAxLCAxMzcsIDIyNywgMjQzLCAyMCwgMSwgCi0gICAgMTM3LCAyMTYsIDIxNSwgMjAsIDEsIDEzNywgMjI5LCAzNiwgMjAsIDEsIDEzNywgMjQzLCAyMzMsIDIwLCAxLCAxMzcsIAotICAgIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMjgsIDEyLCAyMCwgMSwgMTM3LCAyMjgsIDgsIDIwLCAxLCAxMzcsIDI1MSwgMTA3LCAKLSAgICAyMCwgMSwgMTM3LCAyMTMsIDE4MywgMjAsIDEsIDEzNywgMjMxLCAxMTMsIDIwLCAxLCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgCi0gICAgMTM3LCAyMjgsIDE4MywgMjAsIDEsIDEzNywgMjMzLCAxMDIsIDIwLCAxLCAxMzcsIDIxNiwgNjQsIDIwLCAxLCAxMzcsIAotICAgIDIyNywgMjUwLCAyMjksIDEsIDIwLCAxLCAxMzcsIDIyOCwgMTc1LCAyMCwgMSwgMTM3LCAyMzQsIDE1NiwgMjAsIDEsIDEzNywgCi0gICAgMjI5LCA0MCwgMjAsIDEsIDEzNywgMjMxLCAyMTIsIDIwLCAxLCAxMzcsIDIzMSwgMTAxLCAyMCwgMSwgMTM3LCAyMzIsIDk4LCAKLSAgICAyMCwgMSwgMTM3LCAyMzMsIDE4OSwgMjAsIDEsIDEzNywgMjI4LCAxODEsIDIwLCAxLCAxMzcsIDIyOSwgMSwgMjAsIDEsIAotICAgIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgMzcsIDIwLCAxLCAxMzcsIDIyNywgMjUzLCAyMCwgMSwgMTM3LCAKLSAgICAyMjcsIDI0NSwgMjAsIDEsIDEzNywgMjMzLCAyMDMsIDIyOCwgMTM5LCAyMCwgMSwgMTM3LCAyMjcsIDI1MSwgMjAsIDEsIAotICAgIDEzNywgMjI5LCAxNDQsIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAyMjgsIDAsIDIwLCAxLCAxMzcsIDIxMSwgMTAzLCAyMCwgMSwgCi0gICAgMTM3LCAyMjksIDE0MywgMjAsIDEsIDEzNywgMjE5LCAyMjAsIDIwLCAxLCAxMzcsIDIyMCwgMTI2LCAyMCwgMSwgMTM3LCAKLSAgICAyMzEsIDEwOSwgMjAsIDEsIDEzNywgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIzMSwgMTE5LCAyMCwgMSwgMTM3LCAyMzQsIAotICAgIDE0NCwgMjAsIDEsIDEzNywgMjMxLCAxMTAsIDIwLCAxLCAxMzcsIDIzNCwgMTQ4LCAyMCwgMSwgMTM3LCAyMzEsIDEyMywgCi0gICAgMjI1LCAxMDMsIDIwLCAxLCAxMzcsIDIxMCwgMTc5LCAyMCwgMSwgMTM3LCAyMjgsIDE3MSwgMjAsIDEsIDEzNywgMjMwLCAKLSAgICAyMjAsIDIwLCAxLCAxMzcsIDIzMCwgMTAwLCAyMCwgMSwgMTM3LCAyMjAsIDE1LCAyMCwgMSwgMTM3LCAyMzQsIDE2NiwgCi0gICAgMjMzLCA3MCwgMjAsIDEsIDEzNywgMjM0LCAxNjYsIDI0NCwgMTYwLCAyMCwgMSwgMTM3LCAyMjksIDY5LCAyMCwgMSwgMTM3LCAKLSAgICAyMjksIDE5NiwgMjAsIDEsIDEzNywgMjMyLCAyMDAsIDIwLCAxLCAxMzcsIDIyNSwgNjUsIDIwLCAxLCAxMzcsIDIyNSwgCi0gICAgMTk5LCAyMCwgMSwgMTM3LCAyMTYsIDIzMCwgMjAsIDEsIDEwNywgMjMxLCA5OSwgMjAsIDEsIDEwNywgMjEyLCA1MSwgMjAsIAotICAgIDEsIDEwNywgMjI4LCAxNjksIDIwLCAxLCAxMDcsIDIzMSwgMTYsIDIwLCAxLCAxMDcsIDIyOCwgMTY3LCAyMCwgMSwgMTA3LCAKLSAgICAyMzIsIDIzNSwgMjAsIDEsIDEwNywgMjI4LCAxNzIsIDIwLCAxLCAxMDcsIDIyOCwgNywgMjAsIDEsIDEwNywgMjI5LCA1NCwgCi0gICAgMjAsIDEsIDEwNywgMjI3LCAxNjAsIDIwLCAxLCAxMDcsIDIxMSwgMTk0LCAyMCwgMSwgMTA3LCAyMjksIDksIDIwLCAxLCAKLSAgICAxMDcsIDIyMCwgNjEsIDIwLCAxLCAxMDcsIDIyOSwgMjAsIDIwLCAxLCAxMDcsIDIzNCwgMTUxLCAyMCwgMSwgMTA3LCAyMTYsIAotICAgIDIxNywgMjAsIDEsIDEwNywgMjIwLCA0MSwgMjAsIDEsIDEwNywgMjI4LCAxODAsIDIwLCAxLCAxMDcsIDIxOCwgNTIsIDIwLCAKLSAgICAxLCAxMDcsIDIzNCwgMTU2LCAyMCwgMSwgMTA3LCAyMTEsIDkxLCAyMCwgMSwgMTA3LCAyMzMsIDIwNCwgMjAsIDEsIDEwNywgCi0gICAgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOSwgMTM1LCAyMCwgMSwgMTA3LCAyMzEsIAotICAgIDE4OCwgMjAsIDEsIDEwNywgMjMxLCAyNywgMjAsIDEsIDEwNywgMjIwLCAxMjUsIDIwLCAxLCAxMDcsIDIxMSwgMzksIDIwLCAKLSAgICAxLCAxMDcsIDIyOCwgMTc0LCAyMCwgMSwgMTA3LCAyMzQsIDE0NywgMjMxLCAxMDIsIDIwLCAxLCAxMDcsIDIyOSwgMTYsIAotICAgIDIwLCAxLCAxMDcsIDIxNSwgMTE4LCAyMCwgMSwgMTA3LCAyNDIsIDI0OCwgMjAsIDEsIDEwNywgMjI5LCA2LCAyMCwgMSwgCi0gICAgMTA3LCAyNDQsIDEyNywgMjAsIDEsIDEwNywgMjI5LCAxMzksIDIwLCAxLCAxMDcsIDIzMSwgMCwgMjAsIDEsIDEwNywgMjMzLCAKLSAgICA1LCAyMCwgMSwgMTA3LCAyMjksIDEyMSwgMjAsIDEsIDEwNywgMjMwLCAxNDcsIDIwLCAxLCAxMDcsIDIzMSwgNCwgMjAsIDEsIAotICAgIDEwNywgMjI0LCAxMTgsIDIwLCAxLCAxMDcsIDIzMSwgMiwgMjAsIDEsIDEwNywgMjMxLCAxOCwgMjAsIDEsIDEwNywgMjMyLCAKLSAgICA4NCwgMjAsIDEsIDEwNywgMjI3LCAyNTUsIDIwLCAxLCAxMDcsIDIzMSwgMTIyLCAyMCwgMSwgMTA3LCAyMzMsIDE4MCwgMjAsIAotICAgIDEsIDEwNywgMjI3LCAxNTEsIDIwLCAxLCAxMDcsIDIxNiwgMjIwLCAyMCwgMSwgMTA3LCAyMTksIDM0LCAyMCwgMSwgMTA3LCAKLSAgICAyMTAsIDE3OSwgMjAsIDEsIDEwNywgMjM0LCAxNDgsIDIwLCAxLCAxMDcsIDIyMywgMTcwLCAyMCwgMSwgMTA3LCAyMTcsIAotICAgIDEwLCAyMCwgMSwgMTA3LCAyMjksIDE3LCAyMCwgMSwgMTA3LCAyMzEsIDIzLCAyMCwgMSwgMTA3LCAyMjcsIDI1NCwgMjAsIAotICAgIDEsIDEwNywgMjM0LCAxNDYsIDIwLCAxLCAxMDcsIDIyNSwgNTksIDIwLCAxLCAxMDcsIDIyNSwgMTUyLCAyMCwgMSwgMTA3LCAKLSAgICAyMjcsIDEyNywgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCA1NSwgMjAsIDEsIDEwNywgMjMxLCAyMCwgCi0gICAgMjAsIDEsIDEwNywgMjI5LCAyOSwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAxMDcsIDIyNiwgMjEsIDIwLCAxLCAKLSAgICAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0NCwgMjAsIDEsIDEwNywgMjI3LCAyNDQsIDIwLCAxLCAxMDcsIAotICAgIDIxOCwgODEsIDIwLCAxLCAxMDcsIDIzMywgMjA4LCAyMCwgMSwgMTA3LCAyMjksIDQ0LCAyMCwgMSwgMTA3LCAyMjksIDE0LCAKLSAgICAyMCwgMSwgMTA3LCAyMTUsIDEwMiwgMjAsIDEsIDEwNywgMjMxLCAzMSwgMjAsIDEsIDEwNywgMjMzLCAxOTgsIDIwLCAxLCAKLSAgICAxMDcsIDIyNywgMjUyLCAyMCwgMSwgMTA3LCAyMTYsIDIxOCwgMjAsIDEsIDEwNywgMjMxLCAyMTQsIDIwLCAxLCAxMDcsIAotICAgIDIyOSwgNTMsIDIwLCAxLCAxMDcsIDIzMywgNCwgMjAsIDEsIDEwNywgMjI5LCAzNSwgMjAsIDEsIDEwNywgMjI4LCAxLCAyMCwgCi0gICAgMSwgMTA3LCAyMjgsIDE1MywgMjAsIDEsIDEwNywgMjQyLCAyMzMsIDIwLCAxLCAxMDcsIDIzMywgMjE3LCAyMCwgMSwgMTA3LCAKLSAgICAyMjMsIDg0LCAyMjYsIDIwOSwgMjAsIDEsIDEwNywgMjE3LCA4NiwgMjAsIDEsIDEwNywgMjE2LCAxMCwgMjAsIDEsIDEwNywgCi0gICAgMjI3LCAxNDgsIDIwLCAxLCAxMDcsIDIyMiwgMjM5LCAyMCwgMSwgMTA3LCAyMzMsIDQ5LCAyMCwgMSwgMTA3LCAyMzEsIDc5LCAKLSAgICAyMCwgMSwgMTA3LCAxOTMsIDIwLCAxLCAxMDcsIDIxOCwgNCwgMjAsIDEsIDEwNywgMjMwLCAxMDIsIDIwLCAxLCAxMDcsIAotICAgIDIyMCwgMjcsIDIwLCAxLCAxMDcsIDIyMCwgMzcsIDIwLCAxLCAxMDcsIDIzMywgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDIzNywgCi0gICAgMjAsIDEsIDEwNywgMjE5LCAyMjUsIDIwLCAxLCAxMDcsIDIyNywgMjQ2LCAyMCwgMSwgMTA3LCAyMjUsIDIxMSwgMjAsIDEsIAotICAgIDEwNywgMjI4LCAyMzMsIDIwLCAxLCAxMDcsIDIxOSwgMjUyLCAyMCwgMSwgMTA3LCAyMjQsIDEzMywgMjAsIDEsIDEwNywgCi0gICAgMjMwLCA0NiwgMjAsIDEsIDEwNywgMjMyLCAxMTksIDIwLCAxLCAxMDcsIDIyMywgODQsIDIzMCwgOTYsIDIwLCAxLCAxMDcsIAotICAgIDIxNiwgMTE3LCAyMCwgMSwgMTA3LCAyMjcsIDIzOCwgMjAsIDEsIDEwNywgMjMxLCAxMjMsIDE5OCwgMjAsIDEsIDEwNywgCi0gICAgMjIxLCAyMzIsIDIwLCAxLCAxMDcsIDI0NCwgMTk1LCAyMCwgMSwgODIsIDIyOSwgMTQzLCAyMCwgMSwgODIsIDIxNiwgMTYsIAotICAgIDIwLCAxLCA4MiwgMjMxLCAxMTIsIDIwLCAxLCA4MiwgMjMzLCA4OCwgMjAsIDEsIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAKLSAgICAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMjYsIDg5LCAyMCwgMSwgODIsIDIxOSwgNDUsIDIwLCAxLCA4MiwgMjIzLCAxNDUsIAotICAgIDIwLCAxLCA4MiwgMjI4LCAzLCAyMCwgMSwgODIsIDIyOSwgMTE0LCAyMCwgMSwgODIsIDIyNCwgMTQ3LCAyMCwgMSwgODIsIAotICAgIDIxNywgNjIsIDIwLCAxLCA4MiwgMjI5LCAyMiwgMjAsIDEsIDgyLCAyMzMsIDI0NSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgCi0gICAgMjAsIDEsIDgyLCAyMjEsIDE3MCwgMjAsIDEsIDgyLCAyMjksIDQ1LCAyMCwgMSwgODIsIDIyNiwgODYsIDIwLCAxLCA4MiwgCi0gICAgMjE2LCAxNywgMjAsIDEsIDgyLCAyMzMsIDIwMiwgMjAsIDEsIDgyLCAyMzIsIDEzOSwgMjAsIDEsIDgyLCAyMjgsIDYsIDIwLCAKLSAgICAxLCA4MiwgMjI4LCAyNTQsIDIwLCAxLCA4MiwgMjMxLCAyMjAsIDIwLCAxLCA4MiwgMjI5LCAxNSwgMjAsIDEsIDgyLCAyMjgsIAotICAgIDI1MywgMjAsIDEsIDgyLCAyMjgsIDUsIDIwLCAxLCA4MiwgMjIyLCAyMzcsIDIwLCAxLCA4MiwgMjI4LCAxNzEsIDIwLCAxLCAKLSAgICA4MiwgMjI1LCAyMTAsIDIwLCAxLCA4MiwgMjIyLCAzMSwgMjAsIDEsIDgyLCAyMjksIDMwLCAyMCwgMSwgODIsIDIzMSwgMTAsIAotICAgIDIwLCAxLCA4MiwgMjQyLCAyMjcsIDIwLCAxLCA4MiwgMjI5LCAxOCwgMjAsIDEsIDgyLCAyMjgsIDE4MiwgMjAsIDEsIDgyLCAKLSAgICAyMzEsIDE3MiwgMjAsIDEsIDgyLCAyMzIsIDEyMSwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgODIsIDIyOSwgMTI3LCAKLSAgICAyMCwgMSwgODIsIDIxNywgODUsIDIyNywgMjQ0LCAyMCwgMSwgODIsIDIyMCwgMTI3LCAyMCwgMSwgODIsIDIyNCwgMTQzLCAKLSAgICAyMCwgMSwgODIsIDIyOSwgMTQ3LCAyMTksIDUxLCAyMCwgMSwgODIsIDIyOSwgMzgsIDIyNywgMTYwLCAyMCwgMSwgODIsIAotICAgIDIxMSwgNCwgMjAsIDEsIDgyLCAyNDIsIDIyOCwgMjAsIDEsIDgyLCAyMTUsIDExNywgMjAsIDEsIDgyLCAyMTEsIDE5LCAyMCwgCi0gICAgMSwgODIsIDIyNSwgMTYsIDIwLCAxLCA4MiwgMjE1LCAxMDcsIDIwLCAxLCA4MiwgMjM0LCAxNTQsIDIwLCAxLCA4MiwgMjE4LCAKLSAgICA4MCwgMjAsIDEsIDgyLCAyMTYsIDIxOSwgMjAsIDEsIDgyLCAyMTMsIDE4NCwgMjAsIDEsIDgyLCAyMTIsIDYsIDIwLCAxLCAKLSAgICA4MiwgMjMzLCAxMzIsIDIwLCAxLCA4MiwgMjI0LCAxNTAsIDIwLCAxLCA4MiwgMjE3LCA5NiwgMjAsIDEsIDgyLCAyNDIsIAotICAgIDI0NywgMjAsIDEsIDgyLCAyMjksIDU5LCAyMCwgMSwgODIsIDIyMCwgNDAsIDIwLCAxLCA4MiwgMjMxLCA1LCAyMCwgMSwgCi0gICAgODIsIDIzMSwgMTE2LCAyMCwgMSwgODIsIDIyNywgMTE1LCAyMCwgMSwgODIsIDIyOCwgMTM2LCAyMCwgMSwgODIsIDI0MywgCi0gICAgNzMsIDIwLCAxLCA4MiwgMjE1LCAxMDgsIDIwLCAxLCA4MiwgMjMzLCAyMTEsIDIwLCAxLCA4MiwgMjExLCA2NywgMjAsIDEsIAotICAgIDgyLCAyMjcsIDE0OSwgMjUwLCAxNiwgMjAsIDEsIDgyLCAyMTAsIDI1MCwgMjAsIDEsIDgyLCAyMzEsIDIyLCAyMCwgMSwgCi0gICAgODIsIDIyOSwgMTMyLCAyMCwgMSwgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIxMCwgMTk3LCAyMCwgMSwgODIsIDIzMywgCi0gICAgNiwgMjAsIDEsIDgyLCAyNDMsIDIzMywgMjAsIDEsIDgyLCAyNDMsIDcyLCAyMCwgMSwgODIsIDIyOSwgOCwgMjAsIDEsIDgyLCAKLSAgICAyMzQsIDE1NiwgMjAsIDEsIDgyLCAyMzEsIDIyMywgMjAsIDEsIDgyLCAyMjksIDIxLCAyMCwgMSwgODIsIDI0MiwgMjM0LCAKLSAgICAyMCwgMSwgODIsIDI0NCwgMTk2LCAyMCwgMSwgODIsIDIyNywgMjM5LCAyMCwgMSwgODIsIDIyNSwgMTUzLCAyMCwgMSwgODIsIAotICAgIDIxMSwgMTcsIDIwLCAxLCA4MiwgMjI5LCA0NiwgMjAsIDEsIDgyLCAyMjcsIDE0OSwgMjUyLCAyMywgMjAsIDEsIDgyLCAKLSAgICAyMjcsIDk1LCAyMCwgMSwgODIsIDIyNCwgMjQ3LCAyMCwgMSwgODIsIDIzMCwgMjIwLCAyMCwgMSwgODIsIDI0MywgMjMxLCAKLSAgICAyMCwgMSwgODIsIDIyOSwgMjIwLCAyMCwgMSwgODIsIDIzMCwgMTAwLCAyMCwgMSwgODIsIDI0MiwgMjMzLCAyMCwgMSwgODIsIAotICAgIDI0MywgMjM1LCA3MywgMjAsIDEsIDgyLCAyMzAsIDQ3LCAyMCwgMSwgODIsIDIyNCwgMTQ2LCAyMCwgMSwgODIsIDIyOSwgCi0gICAgMTAsIDIwLCAxLCA4MiwgMjMzLCAxODksIDIwLCAxLCA4MiwgMjI1LCA5NywgMjAsIDEsIDgyLCAyMjcsIDI0NywgMjAsIDEsIAotICAgIDgyLCAyMTEsIDE4LCAyMCwgMSwgODIsIDIyOSwgMzEsIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAxODcsIDIwLCAxLCA4MiwgCi0gICAgMjQzLCAyMzUsIDI1MSwgMTUsIDIwLCAxLCA4MiwgMjQ0LCAzNywgMjAsIDEsIDgyLCAyMjgsIDE3NiwgMjAsIDEsIDgyLCAKLSAgICA2MSwgMjAsIDEsIDgyLCAyMTYsIDEwLCAyMCwgMSwgODIsIDc2LCAyMCwgMSwgODIsIDczLCAyMCwgMSwgODIsIDIzMywgODYsIAotICAgIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAyMywgMjAsIDEsIDgyLCAyMTcsIDEwMSwgMjAsIDEsIDgyLCAyMTcsIDUxLCAyMCwgCi0gICAgMSwgODIsIDIyOSwgMTQ3LCAyMzAsIDM0LCAyNDAsIDIzNCwgMjAsIDEsIDgyLCAyMjAsIDE1LCAyMCwgMSwgODIsIDIxMSwgCi0gICAgMTQsIDIwLCAxLCA4MiwgMjI4LCAyNDcsIDIwLCAxLCA4MiwgMjEwLCAyMDIsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDIxNywgCi0gICAgMjQwLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyNDksIDE0NywgMjAsIDEsIDgyLCAyMTAsIDE4NywgMjAsIDEsIDgyLCAyMTAsIAotICAgIDE5NSwgMjAsIDEsIDgyLCAyMzQsIDE0MiwgMjAsIDEsIDgyLCAyMjUsIDE1MSwgMjAsIDEsIDgyLCAyMjgsIDE3NywgMjQ1LCAKLSAgICAxMDIsIDIwLCAxLCA4MiwgMjI0LCAxNDQsIDIwLCAxLCA4MiwgMjExLCAxOTIsIDIwLCAxLCA4MiwgMjQ0LCAxNDcsIDIwLCAKLSAgICAxLCA4MiwgMjEzLCAyNTAsIDIwLCAxLCA4MiwgMjMyLCA5OCwgMjAsIDEsIDgyLCAyMzAsIDIzMCwgMjAsIDEsIDgyLCAyMjMsIAotICAgIDUxLCAyMCwgMSwgODIsIDIyMywgMTcxLCAyMCwgMSwgODIsIDIyOCwgMjQ2LCAyMCwgMSwgODIsIDIyOSwgNzcsIDIwLCAxLCAKLSAgICA4MiwgMjIwLCA3LCAyMCwgMSwgODIsIDIxOSwgMjUyLCAyMCwgMSwgODIsIDI0MywgMjM1LCAyMjMsIDg2LCAyMCwgMSwgODIsIAotICAgIDE5NywgMjAsIDEsIDgyLCAyMjUsIDEwOCwgMjAsIDEsIDgyLCAyMzIsIDExOSwgMjAsIDEsIDgyLCAyMzQsIDI4LCAyMCwgMSwgCi0gICAgODIsIDIzMSwgNTgsIDIwLCAxLCA4MiwgMTg0LCAyMCwgMSwgODIsIDIzMSwgMTY5LCAyMCwgMSwgODIsIDIxNiwgMjIxLCAKLSAgICAyMCwgMSwgODIsIDIzNCwgOTIsIDIwLCAxLCA4MiwgMjMwLCAxNTAsIDIwLCAxLCA4MiwgMjE2LCAyNDcsIDIwLCAxLCA4MiwgCi0gICAgMjQ0LCAxNjksIDIwLCAxLCA4MiwgMjQyLCAyMjMsIDIwLCAxLCAyMjUsIDEzNywgMTc2LCAyMCwgMSwgMjI1LCAxMzcsIDcwLCAKLSAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMywgMjE3LCAyMCwgMSwgMjI1LCAxMzcsIDI0NSwgMjA5LCAyMCwgMSwgMjI1LCAxMzcsIAotICAgIDIyMywgMTA4LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgODYsIDIwLCAxLCAyMjUsIDEzNywgMjI3LCAxNDgsIDIwLCAxLCAKLSAgICAyMjUsIDEzNywgMjMzLCAxMzUsIDIwLCAxLCAyMjUsIDEzNywgMjIyLCAyMzksIDIwLCAxLCAyMjUsIDEzNywgMjIzLCAyOSwgCi0gICAgMjAsIDEsIDIyNSwgMTM3LCAyMzEsIDc5LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgMTAxLCAyMCwgMSwgMjI1LCAxMzcsIAotICAgIDIyOSwgMTQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMTgzLCAyMCwgMSwgMjI1LCAxMzcsIDE5MywgMjAsIDEsIDIyNSwgCi0gICAgMTM3LCAyMTgsIDQsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCAyNywgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDE5MSwgMjAsIDEsIAotICAgIDIyNSwgMTM3LCAyMjAsIDEyMywgMjAsIDEsIDIyNSwgMTM3LCAyMzMsIDE1NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDE1NiwgCi0gICAgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIwOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIzNywgMjAsIDEsIDIyNSwgMTM3LCAKLSAgICAyMjgsIDE1NCwgMjAsIDEsIDIyNSwgMTM3LCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDIyNSwgMjAsIDEsIAotICAgIDIyNSwgMTM3LCAxOTEsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCA5LCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMTUxLCAyMCwgMSwgCi0gICAgMjI1LCAxMzcsIDIyNywgMjQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMjExLCAKLSAgICAyMCwgMSwgMjI1LCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMjMzLCAyMCwgMSwgMjI1LCAxMzcsIAotICAgIDIyMywgNTEsIDIwLCAxLCAyMjUsIDEzNywgMjM0LCAxNjUsIDIwLCAxLCAyMjUsIDEzNywgMjI5LCA3LCAyMCwgMSwgMjI1LCAKLSAgICAxMzcsIDIyOSwgNTYsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCA3LCAyMCwgMSwgMjI1LCAxMzcsIDIyNCwgMTQ3LCAyMCwgMSwgCi0gICAgMjI1LCAxMzcsIDI0NCwgMzcsIDIwLCAxLCAyMjUsIDEzNywgMjEyLCA2NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDI0MSwgCi0gICAgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDExOSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDI4LCAyMCwgMSwgMjI1LCAxMzcsIAotICAgIDIzMSwgMTE0LCAyMCwgMSwgMjI1LCAxMzcsIDIyMywgODMsIDIwLCAxLCAyMjUsIDEzNywgMTg0LCAyMCwgMSwgMjI1LCAKLSAgICAxMzcsIDIzMCwgMTYxLCAyMCwgMSwgMjI1LCAxMzcsIDIzMSwgMTIyLCAyMCwgMSwgMjI1LCAxMzcsIDIxNiwgMjMwLCAyMCwgCi0gICAgMSwgMjI1LCAxMzcsIDIzMywgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIyMSwgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIxMiwgCi0gICAgMTE1LCA5NSwgMSwgMTkwLCA5NSwgMSwgMjUyLCAxOTEsIDk1LCAxLCA4LCAxOTAsIDk1LCAxLCAyMjUsIDQyLCA5NSwgMSwgCi0gICAgMTg0LCA5NSwgMSwgMjMwLCAyMzMsIDk1LCAxLCAyNTQsIDIzLCAxODQsIDk1LCAxLCAyNDQsIDE5NiwgOTUsIDEsIDIxNCwgCi0gICAgMjcsIDk1LCAxLCAyMTMsIDE3NywgOTUsIDEsIDIxNywgMTA1LCA5NSwgMSwgMjQ4LCAyMjEsIDk1LCAxLCA4LCAyMTUsIAotICAgIDE1NiwgOTUsIDEsIDgsIDIxNywgMTA1LCA5NSwgMSwgMjE1LCAxNTYsIDk1LCAxLCAyNDgsIDEzNSwgOTUsIDEsIDE5NywgCi0gICAgOTUsIDEsIDIyOCwgMjM3LCA5NSwgMSwgOCwgMjI4LCAxMTAsIDk1LCAxLCAyNTQsIDIzLCAxOTcsIDk1LCAxLCAyMjgsIAotICAgIDExMCwgOTUsIDEsIDIyOCwgOTYsIDk1LCAxLCAyMzMsIDEzNSwgOTUsIDEsIDIzMiwgNjEsIDk1LCAxLCAyMzIsIDI1NCwgCi0gICAgOTUsIDEsIDIzMiwgMjQzLCA5NSwgMSwgMjE2LCA1NiwgOTUsIDEsIDI0NywgMTUzLCA5NSwgMSwgMjE2LCA0OCwgOTUsIDEsIAotICAgIDI0NywgMTUyLCA5NSwgMSwgMTc2LCA5NSwgMSwgMjQzLCAxMzUsIDk1LCAxLCA4LCAxNzYsIDk1LCAxLCAyMjQsIDg4LCA5NSwgCi0gICAgMSwgMjI0LCA2NiwgOTUsIDEsIDIyOSwgNzcsIDk1LCAxLCAyMjksIDI4LCA5NSwgMSwgMjU0LCAyMywgMjI5LCA3NywgOTUsIAotICAgIDEsIDE2MiwgOTUsIDEsIDIxMSwgMTY1LCA5NSwgMSwgMjQyLCAyNDksIDk1LCAxLCAyNDIsIDIyNiwgOTUsIDEsIDIxNSwgCi0gICAgMTY1LCA5NSwgMSwgMjQ2LCAyNiwgOTUsIDEsIDIyNywgMTY1LCA5NSwgMSwgMjI3LCAxNTAsIDk1LCAxLCAyMTUsIDE3NSwgCi0gICAgOTUsIDEsIDI0NiwgMzMsIDk1LCAxLCA4LCAyMTUsIDE3NSwgOTUsIDEsIDgsIDI0NiwgMzMsIDk1LCAxLCAyMjMsIDEwNiwgCi0gICAgMjE1LCAxNzUsIDk1LCAxLCAyMjAsIDEwMiwgOTUsIDEsIDIxOCwgMjIzLCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgCi0gICAgMTQsIDk1LCAxLCAyMTUsIDE4MywgOTUsIDEsIDI0NiwgMzgsIDk1LCAxLCA4LCAyMTUsIDE4MywgOTUsIDEsIDIwNiwgOTUsIAotICAgIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAKLSAgICAyNTQsIDIzLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgCi0gICAgMSwgMjU0LCAyMDksIDk1LCAxLCAyNDEsIDE4OSwgOTUsIDEsIDIyOSwgMTkyLCA5NSwgNSwgMjUzLCAyMjIsIDk1LCA1LCAKLSAgICAyMjMsIDEwNiwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIDEwNiwgMjUzLCAyMjIsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgCi0gICAgMjU1LCA3MywgOTUsIDI1LCA1LCAyNTQsIDIwNSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCAyNTQsIDExNSwgCi0gICAgOTUsIDI1LCA1LCA3NiwgOTUsIDI1LCA1LCAyMjYsIDE4MywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIAotICAgIDk4LCA5NSwgMjUsIDUsIDc1LCA5NSwgMjUsIDUsIDI0NSwgMTUwLCA5NSwgMjUsIDUsIDI0NSwgMTM4LCA5NSwgMjUsIDUsIAotICAgIDIyNiwgMjMyLCA5NSwgMjUsIDUsIDczLCA5NSwgMjUsIDUsIDI0MCwgMTE5LCA5NSwgMjUsIDUsIDI0MCwgMTE4LCA5NSwgCi0gICAgMjUsIDUsIDI0MCwgMTE3LCA5NSwgMjUsIDUsIDIzNSwgMTg5LCA5NSwgMjUsIDUsIDIzNiwgNjAsIDk1LCAyNSwgNSwgMjM2LCAKLSAgICAzMywgOTUsIDI1LCA1LCAyMzUsIDE1NiwgOTUsIDI1LCA1LCAyMzUsIDIzMSwgOTUsIDI1LCA1LCA3MCwgOTUsIDI1LCA1LCAKKyAgICAyMTAsIDExOSwgMTIsIDEzLCAyMTAsIDExOCwgMTIsIDEzLCAyNTUsIDczLCAxMiwgMTMsIDI1NSwgNzIsIDEyLCAxMywgCisgICAgMjU1LCA3MSwgMTIsIDEzLCAyNTUsIDcwLCAxMiwgMTMsIDI1NSwgNjksIDEyLCAxMywgMjU1LCA2OCwgMTIsIDEzLCAyNTUsIAorICAgIDY3LCAxMiwgMTMsIDI1NSwgNjYsIDEyLCAxMywgMjU1LCA2NSwgMTIsIDEzLCAyNTUsIDY0LCAxMiwgMTMsIDI1NSwgNjMsIAorICAgIDEyLCAxMywgMjU1LCA2MiwgMTIsIDEzLCAyNTUsIDYxLCAxMiwgMTMsIDI1NSwgNjAsIDEyLCAxMywgMjU1LCA1OSwgMTIsIAorICAgIDEzLCAyNTUsIDU4LCAxMiwgMTMsIDI1NSwgNTcsIDEyLCAxMywgMjU1LCA1NiwgMTIsIDEzLCAyNTUsIDU1LCAxMiwgMTMsIAorICAgIDI1NSwgNTQsIDEyLCAxMywgMjU1LCA1MywgMTIsIDEzLCAyNTUsIDUyLCAxMiwgMTMsIDI1NSwgNTEsIDEyLCAxMywgMjU1LCAKKyAgICA1MCwgMTIsIDEzLCAyNTUsIDQ5LCAxMiwgMTMsIDI1NSwgNDgsIDEyLCAxMywgMjU1LCA0NywgMTIsIDEzLCAyNTUsIDQ2LCAKKyAgICAxMiwgMTMsIDI1NSwgNDUsIDEyLCAxMywgMjU1LCA0NCwgMTIsIDEzLCAyNTUsIDQzLCAxMiwgMTMsIDI1NSwgNDIsIDEyLCAKKyAgICAxMywgMjU1LCA0MSwgMTIsIDEzLCAyNTUsIDQwLCAyMCwgMSwgMTY3LCAyMjksIDEzLCAyMzEsIDE3LCAyMCwgMSwgMTY3LCAKKyAgICAyNDMsIDcxLCAyNDQsIDM3LCAyMCwgMSwgMTY3LCAyMjQsIDI1MiwgMjMxLCAxOCwgMjI1LCA1OCwgMjAsIDEsIDE2NywgCisgICAgMjI0LCAyNTIsIDIzMSwgMTgsIDIyNSwgNTksIDIwLCAxLCAxNjcsIDIyOSwgMjI3LCAyMzEsIDE3LCAyMCwgMSwgMTY3LCAKKyAgICAyMTksIDIyMiwgMjAsIDEsIDE2NywgMjE2LCA2NywgMjMxLCAxNywgMjAsIDEsIDE2NywgMjI3LCAxMTksIDIzMSwgMTcsIAorICAgIDIwLCAxLCAxNjcsIDIyMCwgMjAsIDIyNiwgOTEsIDIyOCwgMTcwLCAyMCwgMSwgMTY3LCAyMjQsIDI1MiwgMjI2LCA5MSwgCisgICAgMjI4LCAxNzEsIDIyNSwgNTgsIDIwLCAxLCAxNjcsIDIyNCwgMjUyLCAyMjYsIDkxLCAyMjgsIDE3MSwgMjI1LCA1OSwgMjAsIAorICAgIDEsIDE2NywgMjMxLCAyMTksIDIwLCAxLCAxNjcsIDIxNSwgMTIwLCAyMzEsIDIyMCwgMjAsIDEsIDE2NywgMjI5LCA3MiwgCisgICAgMjAsIDEsIDE2NywgMjMxLCAyMTYsIDIwLCAxLCAxNjcsIDIzMSwgMTc3LCAyMCwgMSwgMTY3LCAyMzAsIDQ5LCAyMCwgMSwgCisgICAgMTY3LCAyMjAsIDEyNSwgMjAsIDEsIDE2NywgMjI3LCAyNDIsIDIwLCAxLCAxNjcsIDIzNCwgMTUwLCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDEzOSwgMjAsIDEsIDE2NywgMjE4LCA1LCAyMCwgMSwgMTY3LCAyMjksIDEyLCAyMCwgMSwgMTY3LCAyMzMsIDg4LCAKKyAgICAyMCwgMSwgMTY3LCAyMzMsIDEzLCAyMzMsIDE5MCwgMjAsIDEsIDE2NywgMjI3LCAyNDksIDIzMSwgMjUsIDIwLCAxLCAxNjcsIAorICAgIDIzMSwgMjIzLCAyMCwgMSwgMTY3LCAyMjUsIDI0NywgMjAsIDEsIDE2NywgMjQyLCAyMzIsIDIwLCAxLCAxNjcsIDIyNiwgCisgICAgNTEsIDIwLCAxLCAxNjcsIDIzMCwgMTUyLCAyMjksIDQ2LCAyMCwgMSwgMTY3LCAyMjcsIDEwMCwgMjMxLCAyOCwgMjAsIDEsIAorICAgIDE2NywgMTA0LCAyMTAsIDE4OCwgMjI5LCAyMjEsIDIwLCAxLCAxNjcsIDI0MiwgMjMzLCAyMCwgMSwgMTY3LCAyMjcsIDI0OSwgCisgICAgMjI3LCAyNTAsIDIwLCAxLCAxNjcsIDIxOSwgMTI5LCAyMCwgMSwgMTY3LCAyMzEsIDEwLCAyMCwgMSwgMTY3LCAyMzEsIDMxLCAKKyAgICAyMCwgMSwgMTY3LCAyMzAsIDEzMSwgMjAsIDEsIDE2NywgMjM0LCAyNTAsIDIwLCAxLCAxNjcsIDIyNiwgOTEsIDIzMywgNDgsIAorICAgIDIwLCAxLCAxNjcsIDIyOSwgMTUwLCAyMzMsIDQ4LCAyMCwgMSwgMTY3LCAyMjUsIDE1OSwgMjAsIDEsIDE2NywgMjMxLCAKKyAgICAyMTcsIDIwLCAxLCAxNjcsIDIyOCwgMjA4LCAyMCwgMSwgMTY3LCAyMjQsIDEzNSwgMjAsIDEsIDE2NywgMjE1LCAxMTcsIAorICAgIDIwLCAxLCAxNjcsIDIzMiwgOTUsIDIwLCAxLCAxNjcsIDIxOSwgNDIsIDIwLCAxLCAxNjcsIDIxNiwgMjE3LCAyMCwgMSwgCisgICAgMTY3LCAyMzEsIDIxNCwgMjAsIDEsIDE2NywgMjM0LCAxNTcsIDIwLCAxLCAxNjcsIDIyOSwgMTQ2LCAyMCwgMSwgMTY3LCAKKyAgICAyMzMsIDIwMiwgMjAsIDEsIDE2NywgMjMwLCAxMzIsIDIwLCAxLCAxNjcsIDIxOSwgMjE5LCAyMCwgMSwgMTY3LCAyMzIsIAorICAgIDEzOSwgMjAsIDEsIDE2NywgMjQ0LCA5NCwgMjAsIDEsIDE2NywgMjIyLCAyMDAsIDIwLCAxLCAxNjcsIDIzMywgMjQyLCAyMCwgCisgICAgMSwgMTY3LCAyMTksIDM4LCAyMCwgMSwgMTY3LCAyMzEsIDE3NCwgMjI1LCAxMDAsIDIwLCAxLCAxNjcsIDIyMCwgMTMsIDIwLCAKKyAgICAxLCAxNjcsIDIyNywgMjQ4LCAyMCwgMSwgMTY3LCAyMTksIDI1NCwgMjI4LCAzLCAyMTAsIDE5NiwgMjAsIDEsIDE2NywgCisgICAgMjI3LCAxMzksIDIzMCwgMTQ5LCAyMCwgMSwgMTY3LCAyMjYsIDg2LCAyMCwgMSwgMTY3LCAyMjgsIDE0MCwgMjAsIDEsIAorICAgIDE2NywgMjE0LCAxNzAsIDIwLCAxLCAxNjcsIDIyOSwgNDksIDIwLCAxLCAxNjcsIDIzMSwgMjEzLCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDE4MiwgMjAsIDEsIDE2NywgMjMxLCAxMjAsIDIwLCAxLCAxNjcsIDIyNywgMTUyLCAyMCwgMSwgMTY3LCAyMTYsIAorICAgIDIyMSwgMjAsIDEsIDE2NywgMjE5LCAzNSwgMjAsIDEsIDE2NywgMjI2LCA4NywgMjAsIDEsIDE2NywgMjI4LCA3LCAyMCwgMSwgCisgICAgMTY3LCAyMzEsIDIyMSwgMjAsIDEsIDE2NywgMjI3LCAxNDksIDIwLCAxLCAxNjcsIDIzNCwgMjE3LCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDEwLCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgMjMyLCA5OSwgMjAsIDEsIDE2NywgMjI5LCA5OSwgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxOTcsIDIwLCAxLCAxNjcsIDIzMSwgMTE5LCAyMCwgMSwgMjI1LCAxMzksIDIyOCwgNSwgMjAsIAorICAgIDEsIDIyNSwgMTM5LCAyMTUsIDEyMCwgMjMxLCAyMTgsIDIwLCAxLCAyMjUsIDEzOSwgMjE5LCAxODYsIDIwLCAxLCAyMjUsIAorICAgIDEzOSwgMjIwLCAxMjksIDIxNSwgMTE5LCAyMCwgMSwgMjI1LCAxMzksIDIzMiwgMTQxLCAyMjcsIDI0NSwgMjAsIDEsIDIyNSwgCisgICAgMTM5LCAyMzEsIDEyNiwgMjMxLCAyMjIsIDIwLCAxLCAyMjUsIDEzOSwgMjM0LCA4OCwgMjAsIDEsIDIyNSwgMTM5LCAyMTEsIAorICAgIDE1LCAyMCwgMSwgMjI1LCAxMzksIDIzMSwgMTIxLCAyMCwgMSwgMjI1LCAxMzksIDIzNCwgMjM4LCAyMCwgMSwgMjI1LCAKKyAgICAxMzksIDIyNSwgMjA5LCAyMCwgMSwgMjI1LCAxMzksIDIxMSwgODksIDIzMywgNDgsIDIwLCAxLCAyMjUsIDEzOSwgMjMzLCAKKyAgICAxMDQsIDIyOCwgMywgMjI3LCAxNjEsIDIwLCAxLCAyMjUsIDEzOSwgMjI3LCAyNDMsIDIyMCwgMzksIDIwLCAxLCAyMjUsIAorICAgIDEzOSwgMjI5LCAxMTcsIDIyOCwgMTg1LCAyMCwgMSwgMjI1LCAxMzksIDI0MiwgMjMwLCAyMCwgMSwgMjI1LCAxMzksIDIyNSwgCisgICAgNTAsIDIwLCAxLCAyMjUsIDEzOSwgMjE1LCAxMjAsIDIyOCwgMSwgMjAsIDEsIDIyNSwgMTM5LCAyMjAsIDQ0LCAyMjgsIAorICAgIDE4MCwgMjAsIDEsIDIyNSwgMTM5LCAyMjAsIDQwLCAyMCwgMSwgMjI1LCAxMzksIDIzMSwgMTgsIDIxNiwgMjIwLCAyMCwgMSwgCisgICAgMjI1LCAxMzksIDIzMSwgMTA4LCAyMzEsIDEyMiwgMjAsIDEsIDIyNSwgMTM5LCAyMjcsIDE1MCwgMjI3LCAyNDUsIDIwLCAxLCAKKyAgICAyMjUsIDEzOSwgMjM0LCAxNDYsIDIwLCAxLCAyMjUsIDEzOSwgMjQyLCAyMzEsIDIwLCAxLCAyMjUsIDEzOSwgMjM0LCAxNDIsIAorICAgIDIwLCAxLCAyMjUsIDEzOSwgMjMzLCAxMzAsIDIwLCAxLCAyMjUsIDEzOSwgMjI1LCAyNTAsIDIwLCAxLCAyMjUsIDEzOSwgCisgICAgMjEzLCAxODIsIDIwLCAxLCAyMjUsIDEzOSwgMjI5LCAxNCwgMjMwLCA0NywgMjAsIDEsIDIyNSwgMTM5LCAyMjksIDQ4LCAKKyAgICAyMzEsIDEwNCwgMjAsIDEsIDIyNSwgMTM5LCAyMTEsIDE5MywgMjAsIDEsIDIyNSwgMTM5LCAyMjIsIDEyLCAyMCwgMSwgCisgICAgMjI1LCAxMzksIDIxNywgOTgsIDIwLCAxLCAyMjUsIDEzOSwgMjMxLCAzMCwgMjAsIDEsIDIyNSwgMTM5LCAyMjksIDMzLCAKKyAgICAyMCwgMSwgMjI1LCAxMzksIDIyOSwgMzQsIDIzMywgODUsIDIwLCAxLCAyMjUsIDEzOSwgMjMxLCAyMCwgMjAsIDEsIDIyNSwgCisgICAgMTM5LCAyMTgsIDUzLCAyMCwgMSwgMjI1LCAxMzksIDIzMSwgMTEyLCAyMCwgMSwgMjI1LCAxMzksIDIzMCwgMTM0LCAyMCwgCisgICAgMSwgMjI1LCAxMzksIDIyNywgMTY0LCAyMCwgMSwgMjI1LCAxMzksIDIyNCwgMTM5LCAyMCwgMSwgMjI1LCAxMzksIDIzMSwgCisgICAgMjksIDIyOSwgNTAsIDIwLCAxLCAyMjUsIDEzOSwgMjQ0LCAxMjcsIDIwLCAxLCAyMjUsIDEzOSwgMjMxLCA5OSwgMjAsIDEsIAorICAgIDIyNSwgMTM5LCAyNDQsIDE0OCwgMjAsIDEsIDIyNSwgMTM5LCAyMzQsIDE1NCwgMjAsIDEsIDIyNSwgMTM5LCAyMzEsIDI0MCwgCisgICAgMjI4LCAxNzQsIDIwLCAxLCAyMjUsIDEzOSwgMjMxLCAyNDAsIDIyOCwgMTUwLCAyMCwgMSwgMjI1LCAxMzksIDIzMywgMTIsIAorICAgIDIwLCAxLCAyMjUsIDEzOSwgMjI5LCA1NiwgMjAsIDEsIDIyNSwgMTM5LCAyMjgsIDEyLCAyMCwgMSwgMjI1LCAxMzksIDE4NSwgCisgICAgMjAsIDEsIDIyNSwgMTM5LCAyMzQsIDc1LCAyMCwgMSwgMjI1LCAxMzksIDIyOSwgMiwgMjAsIDEsIDEzNywgMjI5LCAxMywgCisgICAgMjMxLCAyMjAsIDIwLCAxLCAxMzcsIDIyNywgMTE4LCAyMCwgMSwgMTM3LCAyMTAsIDE5NiwgMjAsIDEsIDEzNywgMjEyLCAKKyAgICA1MywgMjAsIDEsIDEzNywgMjI5LCA0OSwgMjAsIDEsIDEzNywgMjI5LCAxMzgsIDIwLCAxLCAxMzcsIDIyOSwgMjAsIDIwLCAKKyAgICAxLCAxMzcsIDI0MiwgMjQwLCAyMCwgMSwgMTM3LCAyMzEsIDExNiwgMjAsIDEsIDEzNywgMjQzLCA3OCwgMjAsIDEsIDEzNywgCisgICAgMjI3LCAxNDEsIDIzMCwgMTcxLCAyMzEsIDMyLCAyMCwgMSwgMTM3LCAyMjcsIDI0MSwgMjMxLCAxMDcsIDIwLCAxLCAxMzcsIAorICAgIDIzMSwgMTEzLCAyMCwgMSwgMTM3LCAyMjUsIDU2LCAyMCwgMSwgMTM3LCAyMjksIDEyMywgMjAsIDEsIDEzNywgMjMxLCAKKyAgICAxMjQsIDI1MSwgMzAsIDIwLCAxLCAxMzcsIDIzNCwgMTQ0LCAyMCwgMSwgMTM3LCAyNDIsIDI0MSwgMjAsIDEsIDEzNywgCisgICAgMjM0LCAxNTEsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDc3LCAyMCwgMSwgMTM3LCAyMjcsIDExMiwgMjAsIDEsIAorICAgIDEzNywgMjMxLCAxMDEsIDIwLCAxLCAxMzcsIDIyOCwgMTEsIDIwLCAxLCAxMzcsIDIzMSwgMTA3LCAyMCwgMSwgMTM3LCAKKyAgICAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI1MCwgMjAsIDEsIDEzNywgMjM1LCAxMSwgMjAsIDEsIDEzNywgMjIwLCAxMjQsIAorICAgIDIwLCAxLCAxMzcsIDIyOSwgMTMyLCAyMCwgMSwgMTM3LCAyMTcsIDk2LCAyMCwgMSwgMTM3LCAyMjgsIDE1NCwgMjAsIDEsIAorICAgIDEzNywgMjE2LCA2NywgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgODAsIDIwLCAxLCAxMzcsIDIyOSwgNDAsIDIyNywgCisgICAgMTYxLCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAyMDAsIDIwLCAxLCAxMzcsIDIzMSwgMjQwLCAKKyAgICAyMzQsIDE1MywgMjAsIDEsIDEzNywgMjI3LCAyNTAsIDIwLCAxLCAxMzcsIDIyOSwgMzUsIDIwLCAxLCAxMzcsIDIzMywgODksIAorICAgIDIwLCAxLCAxMzcsIDIzMSwgMTA5LCAyMCwgMSwgMTM3LCAyMzEsIDksIDIwLCAxLCAxMzcsIDIyNywgMjQ0LCAyMCwgMSwgCisgICAgMTM3LCAyMTYsIDIxNiwgMjAsIDEsIDEzNywgMjI5LCAzNywgMjAsIDEsIDEzNywgMjQzLCAyMzQsIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgMTM3LCAyMCwgMSwgMTM3LCAyMjgsIDEzLCAyMCwgMSwgMTM3LCAyMjgsIDksIDIwLCAxLCAxMzcsIDI1MSwgMTA4LCAKKyAgICAyMCwgMSwgMTM3LCAyMTMsIDE4MywgMjAsIDEsIDEzNywgMjMxLCAxMTQsIDIwLCAxLCAxMzcsIDIyMiwgMTQxLCAyMCwgMSwgCisgICAgMTM3LCAyMjgsIDE4NCwgMjAsIDEsIDEzNywgMjMzLCAxMDMsIDIwLCAxLCAxMzcsIDIxNiwgNjUsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMjUxLCAyMjksIDIsIDIwLCAxLCAxMzcsIDIyOCwgMTc2LCAyMCwgMSwgMTM3LCAyMzQsIDE1NywgMjAsIDEsIDEzNywgCisgICAgMjI5LCA0MSwgMjAsIDEsIDEzNywgMjMxLCAyMTMsIDIwLCAxLCAxMzcsIDIzMSwgMTAyLCAyMCwgMSwgMTM3LCAyMzIsIDk5LCAKKyAgICAyMCwgMSwgMTM3LCAyMzMsIDE5MCwgMjAsIDEsIDEzNywgMjI4LCAxODIsIDIwLCAxLCAxMzcsIDIyOSwgMiwgMjAsIDEsIAorICAgIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgMzgsIDIwLCAxLCAxMzcsIDIyNywgMjU0LCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDI0NiwgMjAsIDEsIDEzNywgMjMzLCAyMDQsIDIyOCwgMTQwLCAyMCwgMSwgMTM3LCAyMjcsIDI1MiwgMjAsIDEsIAorICAgIDEzNywgMjI5LCAxNDUsIDIwLCAxLCAxMzcsIDIzMSwgMjQwLCAyMjgsIDEsIDIwLCAxLCAxMzcsIDIxMSwgMTAzLCAyMCwgMSwgCisgICAgMTM3LCAyMjksIDE0NCwgMjAsIDEsIDEzNywgMjE5LCAyMjEsIDIwLCAxLCAxMzcsIDIyMCwgMTI3LCAyMCwgMSwgMTM3LCAKKyAgICAyMzEsIDExMCwgMjAsIDEsIDEzNywgMjMxLCAyMjAsIDIwLCAxLCAxMzcsIDIzMSwgMTIwLCAyMCwgMSwgMTM3LCAyMzQsIAorICAgIDE0NSwgMjAsIDEsIDEzNywgMjMxLCAxMTEsIDIwLCAxLCAxMzcsIDIzNCwgMTQ5LCAyMCwgMSwgMTM3LCAyMzEsIDEyNCwgCisgICAgMjI1LCAxMDQsIDIwLCAxLCAxMzcsIDIxMCwgMTc5LCAyMCwgMSwgMTM3LCAyMjgsIDE3MiwgMjAsIDEsIDEzNywgMjMwLCAKKyAgICAyMjEsIDIwLCAxLCAxMzcsIDIzMCwgMTAxLCAyMCwgMSwgMTM3LCAyMjAsIDE2LCAyMCwgMSwgMTM3LCAyMzQsIDE2NywgCisgICAgMjMzLCA3MSwgMjAsIDEsIDEzNywgMjM0LCAxNjcsIDI0NCwgMTYxLCAyMCwgMSwgMTM3LCAyMjksIDcwLCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDE5NywgMjAsIDEsIDEzNywgMjMyLCAyMDEsIDIwLCAxLCAxMzcsIDIyNSwgNjYsIDIwLCAxLCAxMzcsIDIyNSwgCisgICAgMjAwLCAyMCwgMSwgMTM3LCAyMTYsIDIzMSwgMjAsIDEsIDEwNywgMjMxLCAxMDAsIDIwLCAxLCAxMDcsIDIxMiwgNTEsIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTcwLCAyMCwgMSwgMTA3LCAyMzEsIDE3LCAyMCwgMSwgMTA3LCAyMjgsIDE2OCwgMjAsIDEsIDEwNywgCisgICAgMjMyLCAyMzYsIDIwLCAxLCAxMDcsIDIyOCwgMTczLCAyMCwgMSwgMTA3LCAyMjgsIDgsIDIwLCAxLCAxMDcsIDIyOSwgNTUsIAorICAgIDIwLCAxLCAxMDcsIDIyNywgMTYxLCAyMCwgMSwgMTA3LCAyMTEsIDE5NCwgMjAsIDEsIDEwNywgMjI5LCAxMCwgMjAsIDEsIAorICAgIDEwNywgMjIwLCA2MiwgMjAsIDEsIDEwNywgMjI5LCAyMSwgMjAsIDEsIDEwNywgMjM0LCAxNTIsIDIwLCAxLCAxMDcsIDIxNiwgCisgICAgMjE4LCAyMCwgMSwgMTA3LCAyMjAsIDQyLCAyMCwgMSwgMTA3LCAyMjgsIDE4MSwgMjAsIDEsIDEwNywgMjE4LCA1MywgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNTcsIDIwLCAxLCAxMDcsIDIxMSwgOTEsIDIwLCAxLCAxMDcsIDIzMywgMjA1LCAyMCwgMSwgMTA3LCAKKyAgICAyMjEsIDIzNSwgMjAsIDEsIDEwNywgMjMxLCAyMiwgMjAsIDEsIDEwNywgMjI5LCAxMzYsIDIwLCAxLCAxMDcsIDIzMSwgCisgICAgMTg5LCAyMCwgMSwgMTA3LCAyMzEsIDI4LCAyMCwgMSwgMTA3LCAyMjAsIDEyNiwgMjAsIDEsIDEwNywgMjExLCAzOSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNzUsIDIwLCAxLCAxMDcsIDIzNCwgMTQ4LCAyMzEsIDEwMywgMjAsIDEsIDEwNywgMjI5LCAxNywgCisgICAgMjAsIDEsIDEwNywgMjE1LCAxMTksIDIwLCAxLCAxMDcsIDI0MiwgMjQ5LCAyMCwgMSwgMTA3LCAyMjksIDcsIDIwLCAxLCAKKyAgICAxMDcsIDI0NCwgMTI4LCAyMCwgMSwgMTA3LCAyMjksIDE0MCwgMjAsIDEsIDEwNywgMjMxLCAxLCAyMCwgMSwgMTA3LCAyMzMsIAorICAgIDYsIDIwLCAxLCAxMDcsIDIyOSwgMTIyLCAyMCwgMSwgMTA3LCAyMzAsIDE0OCwgMjAsIDEsIDEwNywgMjMxLCA1LCAyMCwgMSwgCisgICAgMTA3LCAyMjQsIDExOSwgMjAsIDEsIDEwNywgMjMxLCAzLCAyMCwgMSwgMTA3LCAyMzEsIDE5LCAyMCwgMSwgMTA3LCAyMzIsIAorICAgIDg1LCAyMCwgMSwgMTA3LCAyMjgsIDAsIDIwLCAxLCAxMDcsIDIzMSwgMTIzLCAyMCwgMSwgMTA3LCAyMzMsIDE4MSwgMjAsIAorICAgIDEsIDEwNywgMjI3LCAxNTIsIDIwLCAxLCAxMDcsIDIxNiwgMjIxLCAyMCwgMSwgMTA3LCAyMTksIDM1LCAyMCwgMSwgMTA3LCAKKyAgICAyMTAsIDE3OSwgMjAsIDEsIDEwNywgMjM0LCAxNDksIDIwLCAxLCAxMDcsIDIyMywgMTcxLCAyMCwgMSwgMTA3LCAyMTcsIAorICAgIDExLCAyMCwgMSwgMTA3LCAyMjksIDE4LCAyMCwgMSwgMTA3LCAyMzEsIDI0LCAyMCwgMSwgMTA3LCAyMjcsIDI1NSwgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNDcsIDIwLCAxLCAxMDcsIDIyNSwgNjAsIDIwLCAxLCAxMDcsIDIyNSwgMTUzLCAyMCwgMSwgMTA3LCAKKyAgICAyMjcsIDEyOCwgMjAsIDEsIDEwNywgMjMzLCAxMiwgMjAsIDEsIDEwNywgMjI5LCA1NiwgMjAsIDEsIDEwNywgMjMxLCAyMSwgCisgICAgMjAsIDEsIDEwNywgMjI5LCAzMCwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAxMDcsIDIyNiwgMjIsIDIwLCAxLCAKKyAgICAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0NSwgMjAsIDEsIDEwNywgMjI3LCAyNDUsIDIwLCAxLCAxMDcsIAorICAgIDIxOCwgODIsIDIwLCAxLCAxMDcsIDIzMywgMjA5LCAyMCwgMSwgMTA3LCAyMjksIDQ1LCAyMCwgMSwgMTA3LCAyMjksIDE1LCAKKyAgICAyMCwgMSwgMTA3LCAyMTUsIDEwMywgMjAsIDEsIDEwNywgMjMxLCAzMiwgMjAsIDEsIDEwNywgMjMzLCAxOTksIDIwLCAxLCAKKyAgICAxMDcsIDIyNywgMjUzLCAyMCwgMSwgMTA3LCAyMTYsIDIxOSwgMjAsIDEsIDEwNywgMjMxLCAyMTUsIDIwLCAxLCAxMDcsIAorICAgIDIyOSwgNTQsIDIwLCAxLCAxMDcsIDIzMywgNSwgMjAsIDEsIDEwNywgMjI5LCAzNiwgMjAsIDEsIDEwNywgMjI4LCAyLCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE1NCwgMjAsIDEsIDEwNywgMjQyLCAyMzQsIDIwLCAxLCAxMDcsIDIzMywgMjE4LCAyMCwgMSwgMTA3LCAKKyAgICAyMjMsIDg1LCAyMjYsIDIxMCwgMjAsIDEsIDEwNywgMjE3LCA4NywgMjAsIDEsIDEwNywgMjE2LCAxMSwgMjAsIDEsIDEwNywgCisgICAgMjI3LCAxNDksIDIwLCAxLCAxMDcsIDIyMiwgMjQwLCAyMCwgMSwgMTA3LCAyMzMsIDUwLCAyMCwgMSwgMTA3LCAyMzEsIDgwLCAKKyAgICAyMCwgMSwgMTA3LCAxOTMsIDIwLCAxLCAxMDcsIDIxOCwgNSwgMjAsIDEsIDEwNywgMjMwLCAxMDMsIDIwLCAxLCAxMDcsIAorICAgIDIyMCwgMjgsIDIwLCAxLCAxMDcsIDIyMCwgMzgsIDIwLCAxLCAxMDcsIDIzMywgMTU2LCAyMCwgMSwgMTA3LCAyMjcsIDIzOCwgCisgICAgMjAsIDEsIDEwNywgMjE5LCAyMjYsIDIwLCAxLCAxMDcsIDIyNywgMjQ3LCAyMCwgMSwgMTA3LCAyMjUsIDIxMiwgMjAsIDEsIAorICAgIDEwNywgMjI4LCAyMzQsIDIwLCAxLCAxMDcsIDIxOSwgMjUzLCAyMCwgMSwgMTA3LCAyMjQsIDEzNCwgMjAsIDEsIDEwNywgCisgICAgMjMwLCA0NywgMjAsIDEsIDEwNywgMjMyLCAxMjAsIDIwLCAxLCAxMDcsIDIyMywgODUsIDIzMCwgOTcsIDIwLCAxLCAxMDcsIAorICAgIDIxNiwgMTE4LCAyMCwgMSwgMTA3LCAyMjcsIDIzOSwgMjAsIDEsIDEwNywgMjMxLCAxMjQsIDE5OCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzMsIDIwLCAxLCAxMDcsIDI0NCwgMTk2LCAyMCwgMSwgODIsIDIyOSwgMTQ0LCAyMCwgMSwgODIsIDIxNiwgMTcsIAorICAgIDIwLCAxLCA4MiwgMjMxLCAxMTMsIDIwLCAxLCA4MiwgMjMzLCA4OSwgMjAsIDEsIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAKKyAgICAyMzIsIDEyNiwgMjAsIDEsIDgyLCAyMjYsIDkwLCAyMCwgMSwgODIsIDIxOSwgNDYsIDIwLCAxLCA4MiwgMjIzLCAxNDYsIAorICAgIDIwLCAxLCA4MiwgMjI4LCA0LCAyMCwgMSwgODIsIDIyOSwgMTE1LCAyMCwgMSwgODIsIDIyNCwgMTQ4LCAyMCwgMSwgODIsIAorICAgIDIxNywgNjMsIDIwLCAxLCA4MiwgMjI5LCAyMywgMjAsIDEsIDgyLCAyMzMsIDI0NiwgMjAsIDEsIDgyLCAyMTEsIDE4NywgCisgICAgMjAsIDEsIDgyLCAyMjEsIDE3MSwgMjAsIDEsIDgyLCAyMjksIDQ2LCAyMCwgMSwgODIsIDIyNiwgODcsIDIwLCAxLCA4MiwgCisgICAgMjE2LCAxOCwgMjAsIDEsIDgyLCAyMzMsIDIwMywgMjAsIDEsIDgyLCAyMzIsIDE0MCwgMjAsIDEsIDgyLCAyMjgsIDcsIDIwLCAKKyAgICAxLCA4MiwgMjI4LCAyNTUsIDIwLCAxLCA4MiwgMjMxLCAyMjEsIDIwLCAxLCA4MiwgMjI5LCAxNiwgMjAsIDEsIDgyLCAyMjgsIAorICAgIDI1NCwgMjAsIDEsIDgyLCAyMjgsIDYsIDIwLCAxLCA4MiwgMjIyLCAyMzgsIDIwLCAxLCA4MiwgMjI4LCAxNzIsIDIwLCAxLCAKKyAgICA4MiwgMjI1LCAyMTEsIDIwLCAxLCA4MiwgMjIyLCAzMiwgMjAsIDEsIDgyLCAyMjksIDMxLCAyMCwgMSwgODIsIDIzMSwgMTEsIAorICAgIDIwLCAxLCA4MiwgMjQyLCAyMjgsIDIwLCAxLCA4MiwgMjI5LCAxOSwgMjAsIDEsIDgyLCAyMjgsIDE4MywgMjAsIDEsIDgyLCAKKyAgICAyMzEsIDE3MywgMjAsIDEsIDgyLCAyMzIsIDEyMiwgMjAsIDEsIDgyLCAyMjksIDUxLCAyMCwgMSwgODIsIDIyOSwgMTI4LCAKKyAgICAyMCwgMSwgODIsIDIxNywgODYsIDIyNywgMjQ1LCAyMCwgMSwgODIsIDIyMCwgMTI4LCAyMCwgMSwgODIsIDIyNCwgMTQ0LCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMTQ4LCAyMTksIDUyLCAyMCwgMSwgODIsIDIyOSwgMzksIDIyNywgMTYxLCAyMCwgMSwgODIsIAorICAgIDIxMSwgNCwgMjAsIDEsIDgyLCAyNDIsIDIyOSwgMjAsIDEsIDgyLCAyMTUsIDExOCwgMjAsIDEsIDgyLCAyMTEsIDE5LCAyMCwgCisgICAgMSwgODIsIDIyNSwgMTcsIDIwLCAxLCA4MiwgMjE1LCAxMDgsIDIwLCAxLCA4MiwgMjM0LCAxNTUsIDIwLCAxLCA4MiwgMjE4LCAKKyAgICA4MSwgMjAsIDEsIDgyLCAyMTYsIDIyMCwgMjAsIDEsIDgyLCAyMTMsIDE4NCwgMjAsIDEsIDgyLCAyMTIsIDYsIDIwLCAxLCAKKyAgICA4MiwgMjMzLCAxMzMsIDIwLCAxLCA4MiwgMjI0LCAxNTEsIDIwLCAxLCA4MiwgMjE3LCA5NywgMjAsIDEsIDgyLCAyNDIsIAorICAgIDI0OCwgMjAsIDEsIDgyLCAyMjksIDYwLCAyMCwgMSwgODIsIDIyMCwgNDEsIDIwLCAxLCA4MiwgMjMxLCA2LCAyMCwgMSwgCisgICAgODIsIDIzMSwgMTE3LCAyMCwgMSwgODIsIDIyNywgMTE2LCAyMCwgMSwgODIsIDIyOCwgMTM3LCAyMCwgMSwgODIsIDI0MywgCisgICAgNzQsIDIwLCAxLCA4MiwgMjE1LCAxMDksIDIwLCAxLCA4MiwgMjMzLCAyMTIsIDIwLCAxLCA4MiwgMjExLCA2NywgMjAsIDEsIAorICAgIDgyLCAyMjcsIDE1MCwgMjUwLCAxNywgMjAsIDEsIDgyLCAyMTAsIDI1MCwgMjAsIDEsIDgyLCAyMzEsIDIzLCAyMCwgMSwgCisgICAgODIsIDIyOSwgMTMzLCAyMCwgMSwgODIsIDIyNSwgMTAxLCAyMCwgMSwgODIsIDIxMCwgMTk3LCAyMCwgMSwgODIsIDIzMywgCisgICAgNywgMjAsIDEsIDgyLCAyNDMsIDIzNCwgMjAsIDEsIDgyLCAyNDMsIDczLCAyMCwgMSwgODIsIDIyOSwgOSwgMjAsIDEsIDgyLCAKKyAgICAyMzQsIDE1NywgMjAsIDEsIDgyLCAyMzEsIDIyNCwgMjAsIDEsIDgyLCAyMjksIDIyLCAyMCwgMSwgODIsIDI0MiwgMjM1LCAKKyAgICAyMCwgMSwgODIsIDI0NCwgMTk3LCAyMCwgMSwgODIsIDIyNywgMjQwLCAyMCwgMSwgODIsIDIyNSwgMTU0LCAyMCwgMSwgODIsIAorICAgIDIxMSwgMTcsIDIwLCAxLCA4MiwgMjI5LCA0NywgMjAsIDEsIDgyLCAyMjcsIDE1MCwgMjUyLCAyNCwgMjAsIDEsIDgyLCAKKyAgICAyMjcsIDk2LCAyMCwgMSwgODIsIDIyNCwgMjQ4LCAyMCwgMSwgODIsIDIzMCwgMjIxLCAyMCwgMSwgODIsIDI0MywgMjMyLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMjIxLCAyMCwgMSwgODIsIDIzMCwgMTAxLCAyMCwgMSwgODIsIDI0MiwgMjM0LCAyMCwgMSwgODIsIAorICAgIDI0MywgMjM2LCA3MywgMjAsIDEsIDgyLCAyMzAsIDQ4LCAyMCwgMSwgODIsIDIyNCwgMTQ3LCAyMCwgMSwgODIsIDIyOSwgCisgICAgMTEsIDIwLCAxLCA4MiwgMjMzLCAxOTAsIDIwLCAxLCA4MiwgMjI1LCA5OCwgMjAsIDEsIDgyLCAyMjcsIDI0OCwgMjAsIDEsIAorICAgIDgyLCAyMTEsIDE4LCAyMCwgMSwgODIsIDIyOSwgMzIsIDIwLCAxLCA4MiwgMjI2LCA5MSwgMjI1LCAxODgsIDIwLCAxLCA4MiwgCisgICAgMjQzLCAyMzYsIDI1MSwgMTYsIDIwLCAxLCA4MiwgMjQ0LCAzOCwgMjAsIDEsIDgyLCAyMjgsIDE3NywgMjAsIDEsIDgyLCAKKyAgICA2MSwgMjAsIDEsIDgyLCAyMTYsIDExLCAyMCwgMSwgODIsIDc2LCAyMCwgMSwgODIsIDczLCAyMCwgMSwgODIsIDIzMywgODcsIAorICAgIDIwLCAxLCA4MiwgMjI2LCA5MSwgMjI1LCAyNCwgMjAsIDEsIDgyLCAyMTcsIDEwMiwgMjAsIDEsIDgyLCAyMTcsIDUyLCAyMCwgCisgICAgMSwgODIsIDIyOSwgMTQ4LCAyMzAsIDM1LCAyNDAsIDIzNSwgMjAsIDEsIDgyLCAyMjAsIDE2LCAyMCwgMSwgODIsIDIxMSwgCisgICAgMTQsIDIwLCAxLCA4MiwgMjI4LCAyNDgsIDIwLCAxLCA4MiwgMjEwLCAyMDIsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDIxNywgCisgICAgMjQxLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyNDksIDE0OCwgMjAsIDEsIDgyLCAyMTAsIDE4NywgMjAsIDEsIDgyLCAyMTAsIAorICAgIDE5NSwgMjAsIDEsIDgyLCAyMzQsIDE0MywgMjAsIDEsIDgyLCAyMjUsIDE1MiwgMjAsIDEsIDgyLCAyMjgsIDE3OCwgMjQ1LCAKKyAgICAxMDMsIDIwLCAxLCA4MiwgMjI0LCAxNDUsIDIwLCAxLCA4MiwgMjExLCAxOTIsIDIwLCAxLCA4MiwgMjQ0LCAxNDgsIDIwLCAKKyAgICAxLCA4MiwgMjEzLCAyNTAsIDIwLCAxLCA4MiwgMjMyLCA5OSwgMjAsIDEsIDgyLCAyMzAsIDIzMSwgMjAsIDEsIDgyLCAyMjMsIAorICAgIDUyLCAyMCwgMSwgODIsIDIyMywgMTcyLCAyMCwgMSwgODIsIDIyOCwgMjQ3LCAyMCwgMSwgODIsIDIyOSwgNzgsIDIwLCAxLCAKKyAgICA4MiwgMjIwLCA4LCAyMCwgMSwgODIsIDIxOSwgMjUzLCAyMCwgMSwgODIsIDI0MywgMjM2LCAyMjMsIDg3LCAyMCwgMSwgODIsIAorICAgIDE5NywgMjAsIDEsIDgyLCAyMjUsIDEwOSwgMjAsIDEsIDgyLCAyMzIsIDEyMCwgMjAsIDEsIDgyLCAyMzQsIDI5LCAyMCwgMSwgCisgICAgODIsIDIzMSwgNTksIDIwLCAxLCA4MiwgMTg1LCAyMCwgMSwgODIsIDIzMSwgMTcwLCAyMCwgMSwgODIsIDIxNiwgMjIyLCAKKyAgICAyMCwgMSwgODIsIDIzNCwgOTMsIDIwLCAxLCA4MiwgMjMwLCAxNTEsIDIwLCAxLCA4MiwgMjE2LCAyNDgsIDIwLCAxLCA4MiwgCisgICAgMjQ0LCAxNzAsIDIwLCAxLCA4MiwgMjQyLCAyMjQsIDIwLCAxLCAyMjUsIDEzOCwgMTc2LCAyMCwgMSwgMjI1LCAxMzgsIDcwLCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIzMywgMjE4LCAyMCwgMSwgMjI1LCAxMzgsIDI0NSwgMjEwLCAyMCwgMSwgMjI1LCAxMzgsIAorICAgIDIyMywgMTA5LCAyMCwgMSwgMjI1LCAxMzgsIDIxNywgODcsIDIwLCAxLCAyMjUsIDEzOCwgMjI3LCAxNDksIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjMzLCAxMzYsIDIwLCAxLCAyMjUsIDEzOCwgMjIyLCAyNDAsIDIwLCAxLCAyMjUsIDEzOCwgMjIzLCAzMCwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDgwLCAyMCwgMSwgMjI1LCAxMzgsIDIxNywgMTAyLCAyMCwgMSwgMjI1LCAxMzgsIAorICAgIDIyOSwgMTQ3LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxMzgsIDE5MywgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMTgsIDUsIDIwLCAxLCAyMjUsIDEzOCwgMjIwLCAyOCwgMjAsIDEsIDIyNSwgMTM4LCAyMTksIDE5MiwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMjAsIDEyNCwgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIDE1NiwgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE1NywgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDIxMCwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDIzOCwgMjAsIDEsIDIyNSwgMTM4LCAKKyAgICAyMjgsIDE1NSwgMjAsIDEsIDIyNSwgMTM4LCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTM4LCAyMTksIDIyNiwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAxOTEsIDIwLCAxLCAyMjUsIDEzOCwgMjI4LCAxMCwgMjAsIDEsIDIyNSwgMTM4LCAyMjUsIDE1MiwgMjAsIAorICAgIDEsIDIyNSwgMTM4LCAyMjcsIDI0NywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMTM4LCAyMjUsIAorICAgIDIxMiwgMjAsIDEsIDIyNSwgMTM4LCAyMjIsIDE0MSwgMjAsIDEsIDIyNSwgMTM4LCAyMjgsIDIzNCwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMjMsIDUyLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMTY2LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgOCwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMjksIDU3LCAyMCwgMSwgMjI1LCAxMzgsIDIyMCwgOCwgMjAsIDEsIDIyNSwgMTM4LCAyMjQsIDE0OCwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyNDQsIDM4LCAyMCwgMSwgMjI1LCAxMzgsIDIxMiwgNjUsIDIwLCAxLCAyMjUsIDEzOCwgMjMyLCAKKyAgICAyNDIsIDIwLCAxLCAyMjUsIDEzOCwgMjMyLCAxMjAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAyOSwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMzEsIDExNSwgMjAsIDEsIDIyNSwgMTM4LCAyMjMsIDg0LCAyMCwgMSwgMjI1LCAxMzgsIDE4NSwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMzAsIDE2MiwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDEyMywgMjAsIDEsIDIyNSwgMTM4LCAyMTYsIDIzMSwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIDI1MiwgMjAsIDEsIDIyNSwgMTM4LCAyMjEsIDI1MiwgMjAsIDEsIDIyNSwgMTM4LCAKKyAgICAyMTIsIDExNSwgOTUsIDEsIDE5MCwgOTUsIDEsIDI1MiwgMTkyLCA5NSwgMSwgOCwgMTkwLCA5NSwgMSwgMjI1LCA0MywgOTUsIAorICAgIDEsIDE4NSwgOTUsIDEsIDIzMCwgMjM0LCA5NSwgMSwgMjU0LCAyNCwgMTg1LCA5NSwgMSwgMjQ0LCAxOTcsIDk1LCAxLCAKKyAgICAyMTQsIDI3LCA5NSwgMSwgMjEzLCAxNzcsIDk1LCAxLCAyMTcsIDEwNiwgOTUsIDEsIDI0OCwgMjIyLCA5NSwgMSwgOCwgCisgICAgMjE1LCAxNTcsIDk1LCAxLCA4LCAyMTcsIDEwNiwgOTUsIDEsIDIxNSwgMTU3LCA5NSwgMSwgMjQ4LCAxMzYsIDk1LCAxLCAKKyAgICAxOTcsIDk1LCAxLCAyMjgsIDIzOCwgOTUsIDEsIDgsIDIyOCwgMTExLCA5NSwgMSwgMjU0LCAyNCwgMTk3LCA5NSwgMSwgCisgICAgMjI4LCAxMTEsIDk1LCAxLCAyMjgsIDk3LCA5NSwgMSwgMjMzLCAxMzYsIDk1LCAxLCAyMzIsIDYyLCA5NSwgMSwgMjMyLCAKKyAgICAyNTUsIDk1LCAxLCAyMzIsIDI0NCwgOTUsIDEsIDIxNiwgNTcsIDk1LCAxLCAyNDcsIDE1NCwgOTUsIDEsIDIxNiwgNDksIAorICAgIDk1LCAxLCAyNDcsIDE1MywgOTUsIDEsIDE3NiwgOTUsIDEsIDI0MywgMTM2LCA5NSwgMSwgOCwgMTc2LCA5NSwgMSwgMjI0LCAKKyAgICA4OSwgOTUsIDEsIDIyNCwgNjcsIDk1LCAxLCAyMjksIDc4LCA5NSwgMSwgMjI5LCAyOSwgOTUsIDEsIDI1NCwgMjQsIDIyOSwgCisgICAgNzgsIDk1LCAxLCAxNjIsIDk1LCAxLCAyMTEsIDE2NSwgOTUsIDEsIDI0MiwgMjUwLCA5NSwgMSwgMjQyLCAyMjcsIDk1LCAxLCAKKyAgICAyMTUsIDE2NiwgOTUsIDEsIDI0NiwgMjcsIDk1LCAxLCAyMjcsIDE2NiwgOTUsIDEsIDIyNywgMTUxLCA5NSwgMSwgMjE1LCAKKyAgICAxNzYsIDk1LCAxLCAyNDYsIDM0LCA5NSwgMSwgOCwgMjE1LCAxNzYsIDk1LCAxLCA4LCAyNDYsIDM0LCA5NSwgMSwgMjIzLCAKKyAgICAxMDcsIDIxNSwgMTc2LCA5NSwgMSwgMjIwLCAxMDMsIDk1LCAxLCAyMTgsIDIyNCwgOTUsIDEsIDIxMCwgODIsIDk1LCAxLCAKKyAgICAyMTAsIDE0LCA5NSwgMSwgMjE1LCAxODQsIDk1LCAxLCAyNDYsIDM5LCA5NSwgMSwgOCwgMjE1LCAxODQsIDk1LCAxLCAyMDYsIAorICAgIDk1LCAxLCAyMTAsIDExNiwgOTUsIDEsIDIxMCwgMTUsIDk1LCAxLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgMjIzLCA5NSwgMSwgCisgICAgMjU0LCAyNCwgMjA5LCAyNDMsIDk1LCAxLCAyMDksIDIxNSwgOTUsIDEsIDIwOSwgMjIyLCA5NSwgMSwgMjEyLCA2NSwgOTUsIAorICAgIDEsIDI1NCwgMjEwLCA5NSwgMSwgMjQxLCAxOTAsIDk1LCAxLCAyMjksIDE5MywgOTUsIDUsIDI1MywgMjIzLCA5NSwgNSwgCisgICAgMjIzLCAxMDcsIDIxMywgMTMzLCA5NSwgNSwgMjIzLCAxMDcsIDI1MywgMjIzLCA5NSwgMjUsIDUsIDYxLCA5NSwgMjUsIDUsIAorICAgIDI1NSwgNzQsIDk1LCAyNSwgNSwgMjU0LCAyMDYsIDk1LCAyNSwgNSwgMjU0LCAxMjQsIDk1LCAyNSwgNSwgMjU0LCAxMTYsIAorICAgIDk1LCAyNSwgNSwgNzYsIDk1LCAyNSwgNSwgMjI2LCAxODQsIDk1LCAyNSwgNSwgMjExLCAyMjcsIDk1LCAyNSwgNSwgMjEyLCAKKyAgICA5OCwgOTUsIDI1LCA1LCA3NSwgOTUsIDI1LCA1LCAyNDUsIDE1MSwgOTUsIDI1LCA1LCAyNDUsIDEzOSwgOTUsIDI1LCA1LCAKKyAgICAyMjYsIDIzMywgOTUsIDI1LCA1LCA3MywgOTUsIDI1LCA1LCAyNDAsIDEyMCwgOTUsIDI1LCA1LCAyNDAsIDExOSwgOTUsIAorICAgIDI1LCA1LCAyNDAsIDExOCwgOTUsIDI1LCA1LCAyMzUsIDE5MCwgOTUsIDI1LCA1LCAyMzYsIDYxLCA5NSwgMjUsIDUsIDIzNiwgCisgICAgMzQsIDk1LCAyNSwgNSwgMjM1LCAxNTcsIDk1LCAyNSwgNSwgMjM1LCAyMzIsIDk1LCAyNSwgNSwgNzAsIDk1LCAyNSwgNSwgCiAgICAgMjE0LCAyMjksIDk1LCAyNSwgNSwgMjE0LCAyMjgsIDk1LCAyNSwgNSwgMjE0LCAyMjcsIDk1LCAyNSwgNSwgMjE0LCAxMTgsIAogICAgIDk1LCAyNSwgNSwgMjE0LCAyMTEsIDk1LCAyNSwgNSwgMjE0LCAxNzgsIDk1LCAyNSwgNSwgMjExLCAxMTcsIDk1LCAyNSwgNSwgCi0gICAgMjExLCA4LCA5NSwgMjUsIDUsIDI1NCwgMjQzLCA5NSwgMjUsIDUsIDI1NCwgMjM5LCA5NSwgMjUsIDUsIDI0NSwgODYsIDk1LCAKLSAgICAyNSwgNSwgMjIyLCAxODMsIDI0NSwgODYsIDk1LCAyNSwgNSwgMjQ1LCA5MiwgOTUsIDI1LCA1LCAyMjIsIDE4MywgMjQ1LCAKLSAgICA5MiwgOTUsIDI1LCA1LCAyNTQsIDIwMSwgOTUsIDI1LCA1LCAyNDUsIDE5NSwgOTUsIDI1LCA1LCAyNTMsIDE5MiwgOTUsIAotICAgIDI1LCA1LCAyMjYsIDEzNCwgOTUsIDI1LCA1LCAyMzAsIDI1LCA5NSwgMjUsIDUsIDIyOSwgNzksIDk1LCAxMzgsIDIyMiwgCi0gICAgMjUxLCA5NSwgMTM4LCAyMTYsIDE0LCAyMjIsIDI1MSwgOTUsIDEzOCwgNDgsIDk1LCAxMzgsIDUxLCA5NSwgMSwgMjE2LCAKLSAgICAyOCwgOTUsIDEsIDIxNiwgMjcsIDk1LCAxLCAyMTYsIDI2LCA5NSwgMSwgMjE2LCAyNSwgOTUsIDEsIDIxNiwgMjQsIDk1LCAKLSAgICAxLCAyMTYsIDIzLCA5NSwgMSwgMjE2LCAyMiwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI5LCA5NSwgMSwgMjIzLCAxMDYsIAotICAgIDIxNiwgMjgsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyNiwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI1LCA5NSwgMSwgMjIzLCAKLSAgICAxMDYsIDIxNiwgMjQsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyMiwgNTYsIDEsIDI1NCwgMjMsIDc1LCAxNDEsIDEsIDI1NCwgCi0gICAgMjMsIDIxMSwgNDcsIDQ5LCAyOCwgMTYsIDIyNCwgMTU0LCA0OSwgMjgsIDE2LCAyNDgsIDE1OCwgNDksIDI4LCAxNiwgMjI1LCAKLSAgICAxNzUsIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDI0NywgMjAxLCA0OSwgCi0gICAgMjgsIDE2LCAyMTQsIDE2LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIAotICAgIDIzNCwgMTk3LCA0OSwgMjgsIDE2LCAyMTcsIDE2OSwgNDksIDI4LCAxNiwgMjI2LCA5LCA0OSwgMjgsIDE2LCAyMTAsIDIxNywgCi0gICAgNDksIDI4LCAxNiwgMjEwLCAyMTgsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAyMzMsIDIzNCwgNDksIDI4LCAxNiwgMjU0LCAKLSAgICA2OCwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDI0NSwgMjYsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMTcsIDIsIDQ5LCAyOCwgCi0gICAgMTYsIDIzNCwgMTYxLCA0OSwgMjgsIDE2LCAyNTQsIDU4LCA0OSwgMjgsIDE2LCAyNTQsIDU5LCAyNDcsIDIwMSwgNDksIDI4LCAKLSAgICAxNiwgMjE3LCAxNzUsIDQ5LCAyOCwgMTYsIDIxNiwgMTU5LCA0OSwgMjgsIDE2LCAyMjYsIDIwNiwgMjU0LCAyMSwgNDksIAotICAgIDI4LCAxNiwgMjQyLCAxNTksIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyNCwgMTUzLCA0OSwgMjgsIDE2LCAyNTAsIDE0OSwgCi0gICAgNDksIDI4LCAxNiwgMjE0LCA2LCA0OSwgMjgsIDE2LCAyMzUsIDE2NCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIAotICAgIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjEsIDIxMywgNDksIDI4LCAxNiwgCi0gICAgMjI2LCAwLCA0OSwgMjgsIDE2LCAyMTgsIDE0NiwgMjU0LCA2MSwgNDksIDI4LCAxNiwgMjI2LCAxMTIsIDI1NCwgMjEsIDQ5LCAKLSAgICAyOCwgMTYsIDIxNCwgMTUsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgNjIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgCi0gICAgNTYsIDQ5LCAyOCwgMTYsIDIzNCwgMzcsIDQ5LCAyOCwgMTYsIDIyMywgNDYsIDQ5LCAyOCwgMTYsIDIyNSwgMTA2LCAyNTQsIAotICAgIDIxLCA0OSwgMjgsIDE2LCAyMTYsIDgzLCA0OSwgMjgsIDE2LCAyNTQsIDEyMSwgNDksIDI4LCAxNiwgMjIxLCAxNTksIDQ5LCAKLSAgICAyOCwgMTYsIDIxNywgMTc4LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMTcsIDE3OCwgMjMxLCA0MCwgMjE4LCAxNDQsIDQ5LCAKLSAgICAyOCwgMTYsIDIyNiwgMTA3LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMTYsIDE5MCwgNDksIDI4LCAxNiwgMjMzLCAyNywgNDksIAotICAgIDI4LCAxNiwgMjQ2LCA0MSwgNDksIDI4LCAxNiwgMjE1LCAyMjcsIDQ5LCAyOCwgMTYsIDIxNiwgMjMyLCA0OSwgMjgsIDE2LCAKLSAgICAyMzMsIDIzNywgNDksIDI4LCAxNiwgMjU0LCA2OCwgMjQ1LCAyNiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIAotICAgIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzNiwgMTIsIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAKLSAgICAyMzQsIDIwMCwgMjE1LCAxOTgsIDQ5LCAyOCwgMTYsIDIyNSwgMjAwLCA0OSwgMjgsIDE2LCAyMjQsIDE1OCwgNDksIDI4LCAKLSAgICAxNiwgMjM0LCAxMSwgNDksIDI4LCAxNiwgMjUwLCA4MCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjIzLCAxNDYsIDQ5LCAyOCwgCi0gICAgMTYsIDIyNiwgMTIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyNiwgMTAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI0MCwgMTA5LCAKLSAgICA0OSwgMjgsIDE2LCAyMjksIDIwMywgNDksIDI4LCAxNiwgMjI1LCAxNTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTIsIDI1NCwgCi0gICAgMTQ5LCA0OSwgMjgsIDE2LCAyMTUsIDE5OSwgMjU0LCAxNDksIDQ5LCAyOCwgMTYsIDIxOCwgMTIzLCA0OSwgMjgsIDE2LCAKLSAgICAyNDIsIDEyMywgNDksIDI4LCAxNiwgMjM1LCAxNjQsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgMjA2LCAyMjksIDk1LCAKLSAgICA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI1LCAxNTUsIDQ5LCAyOCwgMTYsIDIzMywgCi0gICAgMjU0LCA0OSwgMjgsIDE2LCAyMjUsIDE1NCwgNDksIDI4LCAxNiwgMjMzLCAyMzYsIDQ5LCAyOCwgMTYsIDIyNSwgMjAxLCAKLSAgICAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIAotICAgIDIyOSwgOTYsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDIxMCwgMjE1LCA0OSwgMjgsIDE2LCAyNTQsIDU5LCAyMjksIDk1LCA0OSwgCi0gICAgMjgsIDE2LCAyNTQsIDYwLCAyMTcsIDE3NiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjEwLCAyMTYsIDQ5LCAyOCwgMTYsIAotICAgIDIzMywgMjM1LCA0OSwgMjgsIDE2LCAyNDUsIDE3MywgNDksIDI4LCAxNiwgMjUwLCAxNTAsIDQ5LCAyOCwgMTYsIDIzMCwgCi0gICAgMTk4LCAyMzUsIDE2MywgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI1LCAxMDYsIDIyOSwgCi0gICAgOTUsIDQ5LCAyOCwgMTYsIDIyNCwgMTU5LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIDIwMywgNDksIDI4LCAxNiwgMjU0LCAKLSAgICA4NCwgNDksIDI4LCAxNiwgMjMyLCA1OCwgNDksIDI4LCAxNiwgMjI2LCAxMCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxMiwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjQ1LCA2MCwgMjI2LCAxMSwgNDksIDI4LCAxNiwgMjMzLCAxNTMsIDQ5LCAyOCwgCi0gICAgMTYsIDI1NCwgODUsIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDE3NiwgNDksIDI4LCAKLSAgICAxNiwgMjE3LCAxNzgsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxNywgMTcwLCA0OSwgMjgsIDE2LCAyNTAsIDgwLCAyMjksIAotICAgIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDEwNiwgNDksIDI4LCAxNiwgMjIxLCAxNjAsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxMSwgCi0gICAgMTUxLCAyMzQsIDM3LCA0OSwgMjgsIDE2LCAyMTUsIDE5NiwgNDksIDI4LCAxNiwgMjI0LCAxNjAsIDQ5LCAyOCwgMTYsIAotICAgIDIxNSwgMjAwLCA0OSwgMjgsIDE2LCAyMTUsIDE5NywgNDksIDI4LCAxNiwgMjI0LCAxNTcsIDQ5LCAyOCwgMTYsIDIxNSwgCi0gICAgMTk1LCA0OSwgMjgsIDE2LCAyMjQsIDE1NiwgNDksIDI4LCAxNiwgMjQyLCAxNTgsIDQ5LCAyOCwgMTYsIDI1NCwgMTQsIDQ5LCAKLSAgICAyOCwgMTYsIDI0NSwgNjAsIDI1NCwgMTQsIDQ5LCAyOCwgMTYsIDIyNiwgMTA3LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTYsIAotICAgIDE4OSwgMjQ1LCA2OSwgNDksIDI4LCAxNiwgMjE2LCAxODksIDI0NSwgMjUsIDQ5LCAyOCwgMTYsIDIxNiwgMTkxLCAyNTQsIAotICAgIDYzLCA0OSwgMjgsIDE2LCAyMTYsIDE4NCwgMjM0LCAyNDcsIDI1NCwgNTUsIDQ5LCAyOCwgMTYsIDIzNCwgMTk5LCA0OSwgCi0gICAgMjgsIDE2LCAyNDUsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMSwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDIxMSwgMTEsIAotICAgIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ1LCA0OSwgMjgsIDE2LCAyMzQsIDM4LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAKLSAgICAyNDcsIDIwMiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCAKLSAgICAyNTQsIDE0OSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI1NCwgNjIsIDIyOSwgOTUsIAotICAgIDQ5LCAyOCwgMTYsIDI1NCwgNjQsIDQ5LCAyOCwgMTYsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAyMTUsIDIxMCwgNDksIDI4LCAKLSAgICAxNiwgMjE2LCAyMjQsIDQ5LCAyOCwgMTYsIDIzNCwgMiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjQ1LCAxMzQsIDI1MCwgNzEsIAotICAgIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDI0NiwgNDIsIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDIxNSwgMjEyLCAKLSAgICAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyMTYsIDIzNCwgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgCi0gICAgMjM2LCA3LCAyNTAsIDcxLCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjQyLCAKLSAgICAxNTksIDIyNiwgMSwgMjU0LCAxMCwgNDksIDI4LCAxNiwgMjQyLCAxNTksIDIyNiwgMSwgMjQ4LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjQ3LCAyMjUsIDQ5LCAyOCwgMTYsIDI0NywgMjI2LCAyMjYsIDEsIDI1NCwgMTEsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAKLSAgICAyNDcsIDIyNiwgMjI2LCAxLCAyNTQsIDExLCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyNDcsIDIyNiwgMjI2LCAxLCAyNDgsIAotICAgIDI5LCA0OSwgMjgsIDE2LCAyMTUsIDIxNiwgNDksIDI4LCAxNiwgMjU0LCAxNSwgNDksIDI4LCAxNiwgMjM2LCAxNCwgNDksIAotICAgIDI4LCAxNiwgMjQ3LCAyNDYsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMjUsIDAsIDI1NCwgMTYsIDQ5LCAyOCwgMTYsIDI1NCwgCi0gICAgMjExLCAyNTQsIDEzLCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjU0LCAxNiwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIzMSwgCi0gICAgMzQsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMzEsIDQ1LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjQyLCAxNjAsIDQ5LCAKLSAgICAyOCwgMTYsIDI1NCwgMjExLCAyNDIsIDE1NywgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIyNSwgMCwgMjQyLCAxNjAsIDQ5LCAKLSAgICAyOCwgMTYsIDIzMSwgMTUxLCAyMjQsIDE2NSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyNTQsIDE1MSwgCi0gICAgMjI0LCAxNjUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjQ4LCAyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIAotICAgIDIzMSwgMTUxLCAyNTQsIDE1MSwgMjQ4LCAyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTUsIDIwNSwgCi0gICAgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTUsIDIxNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNiwgMjI4LCAKLSAgICAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNiwgMjI4LCAyMzMsIDM1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgCi0gICAgMjMxLCAxNTEsIDIzMywgMzUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjI1LCAzOSwgMjQwLCAxMDcsIDQ5LCAKLSAgICAyOCwgMTYsIDIzNSwgMTY5LCAyMTYsIDI1MSwgMjQwLCAxMDgsIDQ5LCAyOCwgMTYsIDI1NCwgNjAsIDIxNiwgMjUxLCAyNDAsIAotICAgIDEwOCwgNDksIDI4LCAxNiwgMjQ0LCAxNzIsIDIxNiwgMjI1LCA0OSwgMjgsIDE2LCAyNDQsIDE3MiwgMjMwLCAxNDMsIDQ5LCAKLSAgICAyOCwgMTYsIDI0NCwgMTcyLCAyNDcsIDIzMCwgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNCwgMTAsIDI0MCwgMTA3LCA0OSwgCi0gICAgMjgsIDE2LCAyMzEsIDE1MSwgMjI0LCAxNjQsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjI1LCAzOSwgMjE2LCAKLSAgICAyMjgsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyNDIsIDE1NSwgMjMwLCAyNiwgMjU0LCA2MywgNDksIDI4LCAxNiwgMjQyLCAKLSAgICAxNTUsIDIzMCwgMjYsIDI0NywgMjAwLCA0OSwgMjgsIDE2LCAyNDUsIDE0OCwgMjM0LCAyNDcsIDI0MywgMjM2LCAyMTMsIAotICAgIDEyNCwgNDksIDI4LCAxNiwgMjM2LCAxMywgNDksIDI4LCAxNiwgMjM2LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI1NCwgCi0gICAgMjIsIDI0OCwgMjcsIDI0MCwgMTA2LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDE5MCwgNDksIDI4LCAxNiwgCi0gICAgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMjksIDIwMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIyOSwgMTk4LCAyNDAsIDEwNywgCi0gICAgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyNDgsIDMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgCi0gICAgMjQ3LCAyNDMsIDI0OCwgMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMzQsIDE4MiwgNDksIDI4LCAxNiwgCi0gICAgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMTAsIDIzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOCwgMjM0LCAKLSAgICAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMjgsIDIzNCwgMjU0LCA5NiwgNDksIDI4LCAxNiwgCi0gICAgMjQzLCAyMzYsIDIzMSwgMTkxLCAyNTAsIDczLCAyNDcsIDIzMCwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIzMSwgMTkxLCAKLSAgICAyNTAsIDczLCAyMzAsIDE0MywgNDksIDI4LCAxNiwgMjQ0LCAxMjIsIDIxOSwgMTAyLCAyNTAsIDczLCAyMTQsIDksIDQ5LCAKLSAgICAyOCwgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgMjUwLCA3MywgMjE3LCAxNzksIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMjksIAotICAgIDk3LCA0OSwgMjgsIDE2LCAyNTAsIDc0LCAyMDksIDI0OSwgNDksIDI4LCAxNiwgMjUwLCA3NCwgMjM0LCAzNiwgNDksIDI4LCAKLSAgICAxNiwgMjUwLCA3NCwgMjE5LCA5LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQwLCAxNTQsIDIxMSwgMTAsIDIxNiwgMjI5LCAKLSAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ1LCAxNDksIDI1NCwgODYsIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIxNSwgMjA2LCAKLSAgICA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE1LCAyMDYsIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTYsIDIyOSwgNDksIDI4LCAKLSAgICAxNiwgMjQ3LCAyMzgsIDI1NCwgNjUsIDI0NiwgNDIsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjMwLCAxNDEsIAotICAgIDIxNiwgMjMzLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDI0NywgMjIyLCAyNDUsIDM2LCAyNDcsIDEzOSwgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNSwgMjE0LCAyMjYsIDIxMSwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIAotICAgIDI1NCwgNjUsIDI0NiwgNDIsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMzAsIDE0MSwgMjE2LCAyMzMsIDI0NywgCi0gICAgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNDcsIDIyMiwgMjQ1LCAzNiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgCi0gICAgMTAsIDIxNSwgMjE0LCAyMjYsIDIxMSwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0MywgNDksIDI0NywgMjM3LCA0OSwgMjgsIAotICAgIDE2LCAyNDMsIDQ5LCAyMTEsIDksIDQ5LCAyOCwgMTYsIDI0NywgMjQ1LCAyNTQsIDY1LCAyMzAsIDE5OSwgNDksIDI4LCAxNiwgCi0gICAgMjQ3LCAyNDUsIDI1NCwgNjUsIDIzMSwgNzMsIDQ5LCAyOCwgMTYsIDI0NywgMjQ1LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgCi0gICAgMjQ3LCAyNDUsIDIxNiwgMTgyLCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjE2LCAxODIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAKLSAgICAyMTYsIDE4MywgMjQ3LCAxODYsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyMTYsIDE4MywgMjE1LCAyMDcsIDQ5LCAyOCwgMTYsIAotICAgIDIxOSwgMTYzLCAyMTYsIDE4MywgMjE2LCAyMjIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyNTMsIDI0NCwgNDksIDI4LCAxNiwgCi0gICAgMjE5LCAxNjMsIDI1MywgMjQ1LCAyNDcsIDE4NiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ1LCAyMTUsIDIwNywgCi0gICAgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ1LCAyMTYsIDIyMiwgNDksIDI4LCAxNiwgMjQ3LCAyMjMsIDI0MywgMzAsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjI5LCAyMjYsIDEzNCwgNDksIDI4LCAxNiwgMjE4LCAxMzcsIDQ5LCAyOCwgMTYsIDI1NCwgNywgCi0gICAgMTkwLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIxMywgMTI0LCA0OSwgMjgsIDE2LCAyNTQsIDcsIDI0MywgMTM1LCA0OSwgMjgsIAotICAgIDE2LCAyNTQsIDcsIDI0OCwgMywgNDksIDI4LCAxNiwgMjU0LCA3LCAyMzQsIDE4MiwgNDksIDI4LCAxNiwgMjU0LCA3LCAKLSAgICAyMTAsIDIzLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIyOCwgMjMzLCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgMjI5LCA5NiwgCi0gICAgMjMxLCA0NCwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIDIyOSwgOTYsIDIzMSwgNDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAKLSAgICAyMjksIDk2LCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIDIyOSwgOTYsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAKLSAgICAyMzQsIDM4LCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjQyLCAxNTksIDIyOSwgOTYsIDIzNCwgMTk2LCAyOCwgMTYsIDIxOSwgCi0gICAgMTU1LCAyNTIsIDEzNSwgMjgsIDE2LCA1MiwgMjUyLCAxMzUsIDI4LCAxNiwgNDAsIDI1MiwgMTM1LCAyOCwgMTYsIDIyMywgCi0gICAgNTAsIDQwLCAyNTIsIDEzNSwgMjgsIDE2LCAyNDgsIDE1NSwgMjUyLCAxMzUsIDI4LCAxNiwgMjE5LCAyNTEsIDI1MiwgMTM1LCAKLSAgICAyOCwgMTYsIDQzLCAyMjMsIDc3LCA1MCwgMjgsIDE2LCA0NCwgMjIzLCA3NywgNTAsIDI4LCAxNiwgMjIzLCA3NywgMjQ3LCAKLSAgICAxMTgsIDI4LCAxNiwgMjQ4LCAxOTYsIDIyMSwgMTYzLCAyOCwgMTYsIDI0OCwgMjIyLCAyNTAsIDI0OSwgMjgsIDE2LCAyMjEsIAotICAgIDE2MywgMjgsIDE2LCAyNDksIDIzNCwgMjgsIDE2LCAyMjMsIDc1LCAyNDQsIDExMSwgMjgsIDE2LCAyMjMsIDc1LCAyNDQsIAotICAgIDExMCwgMjgsIDE2LCAyMjMsIDc1LCAyNDQsIDEwOSwgMjgsIDE2LCAyNDQsIDEzMSwgMjgsIDE2LCAyNDQsIDEzMiwgNTEsIAotICAgIDI4LCAxNiwgMjUxLCAxNDgsIDc4LCAyOCwgMTYsIDI1MSwgMjQsIDI4LCAxNiwgMjUxLCAxNTksIDI4LCAxNiwgMTI3LCAyOCwgCi0gICAgMTYsIDIyNiwgMTkzLCAyMTgsIDE2MywgMjgsIDE2LCAyMTUsIDU3LCAyMTgsIDE2MywgMjgsIDE2LCAyMTYsIDE0MiwgMjE4LCAKLSAgICAxNjMsIDI4LCAxNiwgMjQ0LCAxMCwgMjE4LCAxNjMsIDI4LCAxNiwgMjQ0LCA4MCwgMjE4LCAxNjMsIDI4LCAxNiwgMjE5LCAKLSAgICAxMjQsIDIxOCwgMTYzLCAyOCwgMTYsIDIxOSwgMTIyLCAyNDMsIDI1MCwgMjgsIDE2LCAyNDQsIDgsIDI0MywgMjUwLCAyOCwgCi0gICAgMTYsIDI0MywgMjAzLCAyNTAsIDE0LCAyOCwgMTYsIDI0MywgMjAzLCAyNTAsIDE1LCAyMjYsIDEzNiwgMjU0LCAxNDIsIDI4LCAKLSAgICAxNiwgMjQzLCAyMDMsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTIsIDEyMiwgMjgsIDE2LCAyNTEsIDY3LCAyNTAsIDE0LCAyOCwgCi0gICAgMTYsIDI0NSwgNywgMjUwLCAxNCwgMjgsIDE2LCAyNDUsIDcsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIDE2LCAKLSAgICAyNDUsIDcsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTIsIDEyMiwgMjgsIDE2LCAyNDYsIDgzLCAyNTAsIDEzLCAyOCwgMTYsIAotICAgIDI0NiwgODMsIDI1MCwgMTIsIDI4LCAxNiwgMjMwLCA4NSwgMjMxLCA5MCwgMjIzLCA2MSwgMjgsIDE2LCA1MiwgMjIwLCA3NSwgCi0gICAgMjgsIDE2LCA1MiwgMjQ0LCA2NSwgMjgsIDE2LCAyNDQsIDY2LCAyMTQsIDE2MywgMjgsIDE2LCAyNDQsIDY2LCAyNDYsIAotICAgIDEwNiwgMjgsIDE2LCAyMjksIDE4OCwgMjE0LCAxNjMsIDI4LCAxNiwgMjI5LCAxODgsIDI0NiwgMTA2LCAyOCwgMTYsIDIyMCwgCi0gICAgNzYsIDIxNCwgMTYzLCAyOCwgMTYsIDIyMCwgNzYsIDI0NiwgMTA2LCAyOCwgMTYsIDIyNCwgMjIsIDEzOCwgMjIwLCA3NSwgCi0gICAgMjgsIDE2LCAyMjQsIDIyLCAxMzgsIDI0NCwgNjUsIDI4LCAxNiwgMjQ5LCAyMTYsIDIxNiwgODcsIDI4LCAxNiwgMjQ5LCAKLSAgICA4NSwgMjE2LCA4NywgMjgsIDE2LCAyMjYsIDEzNiwgMjU0LCAxNDIsIDI4LCAxNiwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgCi0gICAgMTYsIDIyNCwgNCwgMjU0LCAxNDIsIDI4LCAxNiwgMjI0LCA0LCAyNTIsIDEyMiwgMjgsIDE2LCAyMzAsIDg4LCAyMjMsIDYxLCAKLSAgICAyOCwgMTYsIDIxMSwgMjUxLCAyMjMsIDYxLCAyOCwgMTYsIDE2MywgMjIzLCA2MSwgMjgsIDE2LCAyMjQsIDIyLCAyMjMsIAotICAgIDYxLCAyOCwgMTYsIDI0NSwgMTg5LCAyMjMsIDYxLCAyOCwgMTYsIDIxOSwgMTE4LCAyMjMsIDYxLCAyOCwgMTYsIDIxNiwgCi0gICAgMTYwLCAyMjMsIDYxLCAyOCwgMTYsIDIxOSwgMTEwLCAyMjMsIDYxLCAyOCwgMTYsIDEyMywgMjQwLCAyMTEsIDIxNSwgNzEsIAotICAgIDIyMywgNjEsIDI4LCAxNiwgMjExLCAxNzksIDIyOCwgNDMsIDI4LCAxNiwgOTYsIDIyOCwgNDMsIDI4LCAxNiwgMjUwLCAzNiwgCi0gICAgMjExLCAxNzksIDIyOCwgNDMsIDI4LCAxNiwgNDIsIDIyOCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDQyLCAyMjgsIDQ0LCAKLSAgICAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTIwLCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNiwgCi0gICAgMjI4LCA0NCwgMTIwLCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDMsIDIxMSwgMjUzLCAyOCwgMTYsIAotICAgIDIxNSwgMjI2LCAyMjgsIDQ0LCA0MywgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDQ0LCAyMTEsIDI1MywgCi0gICAgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjQsIAotICAgIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjQsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAKLSAgICAyMjgsIDQ0LCAxMjAsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTIwLCA0NCwgMjUxLCAyMjEsIAotICAgIDI4LCAxNiwgMjMwLCAxMjksIDIyOCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDIzMCwgMTI5LCAyMjgsIDQ0LCAyNTEsIDIyMSwgCi0gICAgMjgsIDE2LCAyMTUsIDIyMywgMjI4LCA0NCwgMTI0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyMywgMjI4LCA0NCwgMTI0LCAKLSAgICAyNTEsIDIyMSwgMjgsIDE2LCAyMjYsIDQsIDIyOCwgNDMsIDI4LCAxNiwgMjEzLCAxMzIsIDIyOCwgNDMsIDI4LCAxNiwgCi0gICAgMjI4LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjI3LCAyMDMsIDIyOCwgNDMsIDI4LCAxNiwgMjQ5LCAyNDEsIDIyOCwgNDQsIAotICAgIDIxMSwgMjUzLCAyOCwgMTYsIDI0OSwgMjQxLCAyMjgsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyNTEsIDE0NiwgMjgsIDE2LCAKLSAgICAyMTEsIDI1MSwgMjI4LCA0NywgMjgsIDE2LCAxNjMsIDIyOCwgNDcsIDI4LCAxNiwgMjI0LCAyMiwgMjI4LCA0NywgMjgsIAotICAgIDE2LCAyNDUsIDE4OSwgMjI4LCA0NywgMjgsIDE2LCAyMTksIDExOCwgMjI4LCA0NywgMjgsIDE2LCAyMTYsIDE2MCwgMjI4LCAKLSAgICA0NywgMjgsIDE2LCAyMTksIDExMCwgMjI4LCA0NywgMjgsIDE2LCAxMjMsIDI0MCwgMjExLCAyMTUsIDcxLCAyMjgsIDQ3LCAKLSAgICAyOCwgMTYsIDM4LCAyMTgsIDEzOSwgMjgsIDE2LCAzOCwgMjE4LCAyNDAsIDIxOCwgMTM5LCAyOCwgMTYsIDM4LCAyMTUsIAotICAgIDIzNCwgMjgsIDE2LCAzOCwgMjE1LCAyMzMsIDI4LCAxNiwgMzgsIDIxNSwgMjMyLCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIAotICAgIDIzNCwgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAyMzMsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgMjMyLCAyOCwgMTYsIDM4LCAKLSAgICAyNTMsIDE4OSwgMjQ3LCAxMjAsIDI4LCAxNiwgMzgsIDI0NCwgNzIsIDI4LCAxNiwgMzgsIDI0NCwgNzEsIDI4LCAxNiwgMzgsIAotICAgIDI0NCwgNzAsIDI4LCAxNiwgMzgsIDI0NCwgNjksIDI4LCAxNiwgMzgsIDI0NCwgNjgsIDI4LCAxNiwgMjUyLCA1OCwgMjUyLCAKLSAgICA3NCwgMjgsIDE2LCAyNDUsIDE0MywgMjUyLCA3NCwgMjgsIDE2LCAyNTIsIDU4LCAyMTYsIDExMSwgMjgsIDE2LCAyNDUsIAotICAgIDE0MywgMjE2LCAxMTEsIDI4LCAxNiwgMjUyLCA1OCwgMjE5LCA4MCwgMjgsIDE2LCAyNDUsIDE0MywgMjE5LCA4MCwgMjgsIAotICAgIDE2LCAyNTIsIDU4LCAyMjUsIDExNSwgMjgsIDE2LCAyNDUsIDE0MywgMjI1LCAxMTUsIDI4LCAxNiwgMzgsIDI1NSwgMTQsIAotICAgIDI4LCAxNiwgMzgsIDIxOCwgMTY1LCAyOCwgMTYsIDM4LCAyMTYsIDIzOCwgMjgsIDE2LCAzOCwgMjE4LCAxNjYsIDI4LCAxNiwgCi0gICAgMzgsIDIzMSwgMTYyLCAyOCwgMTYsIDM4LCAyMzEsIDE2MSwgMjgsIDE2LCAzOCwgMjU1LCAxMywgMjgsIDE2LCAzOCwgMjMyLCAKLSAgICAxMTIsIDI4LCAxNiwgMjUzLCAyNTQsIDIxNCwgMTYzLCAyOCwgMTYsIDI1MywgMjU0LCAyNDYsIDEwNiwgMjgsIDE2LCAzOCwgCi0gICAgMjQ3LCAxMzUsIDI4LCAxNiwgMzgsIDIyMiwgMjMxLCAyOCwgMTYsIDM4LCAyNDQsIDU4LCAyOCwgMTYsIDM4LCAyMTksIDc2LCAKLSAgICAyOCwgMTYsIDM4LCAyNTIsIDM4LCAyOCwgMTYsIDM4LCA1MiwgMjE2LCAxOSwgMjgsIDE2LCAzOCwgMjE1LCAyMTEsIDIxNiwgCi0gICAgMTksIDI4LCAxNiwgMjIyLCAyMzUsIDI4LCAxNiwgMjE4LCA3NSwgMjgsIDE2LCAyMTAsIDE1OSwgMjgsIDE2LCAyMjUsIAotICAgIDEwNywgMjgsIDE2LCAyMzEsIDI1LCAyOCwgMTYsIDI0NCwgMTcsIDI4LCAxNiwgMjQ5LCAxMzgsIDI4LCAxNiwgMjQ4LCA3OCwgCi0gICAgMjgsIDE2LCAyNDIsIDE1MCwgMjI4LCA0OCwgMjE5LCA5NSwgMjgsIDE2LCAyNDIsIDE1MCwgMjI4LCA0OCwgMjI4LCA3NSwgCi0gICAgMjE5LCA5NSwgMjgsIDE2LCAyMTYsIDAsIDI4LCAxNiwgMjE1LCA5NSwgMjgsIDE2LCAyMzUsIDE5MywgMjE1LCA5NSwgMjgsIAotICAgIDE2LCAyMTUsIDk2LCAyMTksIDk1LCAyOCwgMTYsIDIxNSwgOTYsIDIxNCwgMTYzLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIAotICAgIDEwMiwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5OSwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5OCwgMjgsIDE2LCAyMjYsIAotICAgIDE0OCwgMjE4LCA5NywgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5NiwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5NSwgMjgsIAotICAgIDE2LCAyMjYsIDE0OCwgMjE4LCA5NCwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCA5MywgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAKLSAgICA5MiwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAxMDEsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgMTAwLCAyOCwgMTYsIDI0MSwgCi0gICAgMjQ1LCAyOCwgMTYsIDIyOSwgMTA1LCAyOCwgMTYsIDI0NSwgMTQzLCA2NCwgMjE4LCAxMzMsIDI4LCAxNiwgMjQ4LCA3MSwgCi0gICAgMjE5LCA5NSwgMjgsIDE2LCAzOCwgMTI0LCAyNTEsIDE2OSwgMjgsIDE2LCAzOCwgMTIwLCAyNTEsIDE2OSwgMjgsIDE2LCAKLSAgICAzOCwgMjQyLCAwLCAyOCwgMTYsIDM4LCAyMTksIDY3LCAyMjUsIDQzLCAyOCwgMTYsIDIyNSwgMjE2LCA3OCwgMjgsIDE2LCAKLSAgICAyMjUsIDIxNiwgMTIwLCA3OCwgMjgsIDE2LCAxNjMsIDIyNSwgMjE2LCA3OCwgMjgsIDE2LCAyNDIsIDE4MiwgMjE0LCAxNjMsIAotICAgIDI4LCAxNiwgMjQyLCAxODIsIDI0NiwgMTA2LCAyOCwgMTYsIDIsIDI0NCwgMTAwLCAyOCwgMTYsIDI0OCwgMTgwLCAyOCwgCi0gICAgMTYsIDI0OCwgMTgxLCAyNTQsIDE1NCwgMjgsIDE2LCAyMzEsIDEzMywgMjgsIDE2LCAyMzIsIDEyOSwgMjgsIDE2LCAyNTEsIAotICAgIDE0MywgMjgsIDE2LCAyMjAsIDE1NCwgMjExLCAyNTMsIDI4LCAxNiwgMjIwLCAxNTQsIDI1MSwgMjIxLCAyOCwgMTYsIDIzMCwgCi0gICAgMTg0LCAyOCwgMTYsIDIzMCwgMTg1LCAyNTEsIDIyMSwgMjgsIDE2LCAyMjAsIDE0OCwgMjExLCAyNTMsIDI4LCAxNiwgMjIwLCAKLSAgICAxNDgsIDI1MSwgMjIxLCAyOCwgMTYsIDI0MywgMjIwLCAyMTEsIDI1MywgMjgsIDE2LCAyNDMsIDIyMCwgMjUxLCAyMjEsIAotICAgIDI4LCAxNiwgMjMyLCAxMzAsIDIyNSwgMTgwLCAyMjMsIDYxLCAyOCwgMTYsIDIzMiwgMTMwLCAyMzYsIDQsIDIyMywgNjEsIAotICAgIDI4LCAxNiwgMjUxLCAxNDQsIDIyMywgNjEsIDI4LCAxNiwgMjIwLCAxNTQsIDIyMywgNjEsIDI4LCAxNiwgMjMwLCAxODUsIAotICAgIDIyMywgNjEsIDI4LCAxNiwgMjIwLCAxNDgsIDIyMywgNjEsIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgCi0gICAgMjI0LCAxNzQsIDIyNSwgMTc5LCAyOCwgMTYsIDIxNiwgMjQ5LCAyMjUsIDE3OCwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIAotICAgIDMsIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgMjI0LCAxNzQsIDIyNSwgMTgwLCAyNDcsIDIxMSwgCi0gICAgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIyNSwgMTc5LCAyOCwgMTYsIDIxNiwgMjQ5LCAKLSAgICAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjM2LCAzLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAKLSAgICAyMjQsIDE3NCwgMjM2LCA0LCAyNDcsIDIxMSwgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIAotICAgIDIzNiwgNCwgMjQ3LCAyMTAsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIDQsIAotICAgIDI0NywgMjA5LCAyOCwgMTYsIDI0OSwgMTMzLCAyOCwgMTYsIDI0MiwgMTI2LCAyNTEsIDY3LCAyNTAsIDE0LCAyOCwgMTYsIAotICAgIDI0MiwgMTI2LCAyNDUsIDcsIDI1MCwgMTQsIDI4LCAxNiwgNDIsIDI1MywgMTU4LCAyOCwgMTYsIDIxMywgMTUxLCAyOCwgCi0gICAgMTYsIDIyNSwgMTQsIDI4LCAxNiwgMjUwLCA1LCAyOCwgMTYsIDIyMSwgMjAzLCAyOCwgMTYsIDI1MCwgOSwgMjgsIDE2LCAKLSAgICAyMTYsIDcsIDI4LCAxNiwgMjI0LCAyNDIsIDI4LCAxNiwgMjI0LCAyNDMsIDI0NCwgNjAsIDI4LCAxNiwgMjIxLCAyMDQsIAotICAgIDI0NCwgNjAsIDI4LCAxNiwgMjE2LCA4LCAyMjMsIDU4LCAyOCwgMTYsIDIyNSwgMTYzLCAyMTgsIDY2LCAyNiwgMjEzLCAKLSAgICAxMzcsIDE4NywgMjE3LCAyMjksIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxOCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCi0gICAgMjA4LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMDEsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MywgMjYsIDIxMywgCi0gICAgMTM3LCAxODcsIDIxNywgMTg3LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAotICAgIDE4NSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjgsIDI2LCAyMTMsIAotICAgIDEzNywgMTg3LCAyMTcsIDIyNywgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI2LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKLSAgICAyMjUsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyNCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjIzLCAyNiwgMjEzLCAKLSAgICAxMzcsIDE4NywgMjE3LCAyMjIsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyMSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCi0gICAgMjIwLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTksIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxNywgMjYsIDIxMywgCi0gICAgMTM3LCAxODcsIDIxNywgMjE2LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTUsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAotICAgIDIxNCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjEzLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTIsIDI2LCAyMTMsIAotICAgIDEzNywgMTg3LCAyMTcsIDE5MSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkwLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKLSAgICAxODksIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4OCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjI5LCAyNiwgMjM1LCAKLSAgICAyMTQsIDE4NywgMjE3LCAyMTgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCi0gICAgMTkzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxODYsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4NSwgMjYsIDIzNSwgCi0gICAgMjE0LCAxODcsIDIxNywgMjI3LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjYsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAotICAgIDIyNSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjI0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjEsIDI2LCAyMzUsIAotICAgIDIxNCwgMTg3LCAyMTcsIDIyMCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjE5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKLSAgICAyMTQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxMywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEyLCAyNiwgMjM1LCAKLSAgICAyMTQsIDE4NywgMjE3LCAyMTEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxMCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCi0gICAgMjA5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNiwgMjYsIDIzNSwgCi0gICAgMjE0LCAxODcsIDIxNywgMjA1LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAotICAgIDIwMywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAyLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDAsIDI2LCAyMzUsIAotICAgIDIxNCwgMTg3LCAyMTcsIDE5OSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKLSAgICAxOTcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5NiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk1LCAyNiwgMjM1LCAKLSAgICAyMTQsIDE4NywgMjE3LCAxOTQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5MiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCi0gICAgMTkxLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTAsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4OSwgMjYsIDIzNSwgCi0gICAgMjE0LCAxODcsIDIxNywgMTg4LCAzOCwgMjYsIDI4LCAyMTUsIDIwOCwgMzgsIDI2LCAyOCwgMjE2LCAyMjMsIDM4LCAyNiwgCi0gICAgMjgsIDIyNSwgMTg4LCAyNiwgMjgsIDIzMywgMzEsIDIzMCwgMTQyLCAzMSwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQxLCAKLSAgICAyMjIsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0MCwgMjE0LCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMiwgCi0gICAgMjQxLCAyMjMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjIsIDI0MCwgMjEzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIzLCAxODAsIAotICAgIDMxLCAyNTAsIDE3NCwgMTgwLCAzMSwgMjQzLCAyMjksIDI1MCwgMzUsIDE4MCwgMzEsIDIzMCwgMTc3LCAxODAsIDMxLCAKLSAgICAyNTIsIDEzMCwgMTgwLCAzMSwgMjM0LCAxNzksIDIxOSwgNzksIDE4MCwgMzEsIDI0OSwgMTc5LCAxODAsIDMxLCAyNTMsIAotICAgIDIzMywgMTgwLCAzMSwgMjI2LCAxNjMsIDE4MCwgMzEsIDI1MSwgMTUzLCAyMjYsIDEzMCwgMTgwLCAzMSwgMjQ4LCA3MywgCi0gICAgMTc3LCAyNDcsIDE3OSwgMTgwLCAzMSwgMjQ3LCAxNzYsIDE4MCwgMzEsIDIxMCwgMjIyLCAxODAsIDMxLCAyMzUsIDI0NywgCi0gICAgMTgwLCAzMSwgMjI1LCAxOTcsIDE4MCwgMzEsIDIyMywgMTI3LCAxODAsIDMxLCAyNDksIDE4OSwgMTgwLCAzMSwgMjQxLCAKLSAgICA2MCwgMjUyLCAxODQsIDE4MCwgMzEsIDIxMiwgNTksIDE4MCwgMzEsIDI0NCwgMzksIDE4MCwgMzEsIDI1NCwgMjQ2LCAxODAsIAotICAgIDMxLCAyMjMsIDg5LCAxODAsIDMxLCAyMjMsIDY1LCAxODAsIDMxLCAyNDUsIDIyMSwgMTgwLCAzMSwgMjM1LCA1MywgMTgwLCAKLSAgICAzMSwgMjQ5LCAxODQsIDE4MCwgMzEsIDI0NSwgMTQyLCAxODAsIDMxLCAyNDYsIDUyLCAxODAsIDMxLCAyNTAsIDE0NSwgCi0gICAgMTgwLCAzMSwgMjQ4LCA4MiwgMTgwLCAzMSwgMjMsIDIyMywgNjQsIDE4MCwgMzEsIDIyNiwgODEsIDE4MCwgMzEsIDIzMywgCi0gICAgMzQsIDE4MCwgMzEsIDI0OSwgMjU0LCAxODAsIDMxLCAyMzQsIDc3LCAxODAsIDMxLCAyNDMsIDg2LCAxODAsIDMxLCAyMTgsIAotICAgIDExMiwgMTgwLCAzMSwgMjI0LCAxMzAsIDE4MCwgMzEsIDI0MywgMjI4LCAxODAsIDMxLCAyMjMsIDY2LCAxODAsIDMxLCAKLSAgICAyMzMsIDcxLCAxNzcsIDIzMCwgMTU3LCAxODAsIDMxLCAyMjMsIDYyLCAxODAsIDMxLCAyNDIsIDE2OCwgMjE2LCA0MiwgCi0gICAgMjMxLCA3NiwgMTgwLCAzMSwgMjQ1LCAxNDQsIDE4MCwgMzEsIDIxOCwgMTI0LCAxODAsIDMxLCAyNDIsIDEyOCwgMTgwLCAKLSAgICAzMSwgMjQ1LCAxMzYsIDE4MCwgMzEsIDIyNSwgMjM1LCAxODAsIDMxLCAyMjIsIDIyNSwgMTgwLCAzMSwgMjQ0LCA1OSwgCi0gICAgMTgwLCAzMSwgMjE0LCA4LCAxNzcsIDIxMiwgNDQsIDE4MCwgMzEsIDI0OSwgMTkzLCAxODAsIDMxLCAyMzEsIDg5LCAxODAsIAotICAgIDMxLCAyNDUsIDYxLCAxODAsIDMxLCAyMTQsIDE3MiwgMTgwLCAzMSwgMjQ3LCAyMTIsIDE4MCwgMzEsIDI1MCwgMCwgMjMwLCAKLSAgICAxMTAsIDE4MCwgMzEsIDI0MiwgMTA2LCAxODAsIDMxLCAyNDMsIDg3LCAyMzUsIDI1NSwgMTgwLCAzMSwgMjMxLCAxNDEsIAotICAgIDE4MCwgMzEsIDI1NSwgMTAsIDE4MCwgMzEsIDI0NSwgMTU3LCAxODAsIDMxLCAyNDYsIDEwOSwgMTgwLCAzMSwgMjEyLCA0MiwgCi0gICAgMTgwLCAzMSwgMjE5LCAxNTAsIDE4MCwgMzEsIDIzNSwgMjIyLCAxODAsIDMxLCAyNDgsIDQyLCAxODAsIDMxLCAyNDgsIAotICAgIDE2MCwgMTgwLCAzMSwgMjQ3LCAyMDgsIDE4MCwgMzEsIDI0NSwgMjksIDE4MCwgMzEsIDIyMCwgMTE1LCAxODAsIDMxLCAKLSAgICAyMTgsIDEyOCwgMTgwLCAzMSwgMjQyLCAyLCAxODAsIDMxLCAyNDksIDIxMiwgMTgwLCAzMSwgMjQ5LCAyNTEsIDE4MCwgMzEsIAotICAgIDI0NCwgMTc3LCAxODAsIDMxLCAyNTQsIDIxMiwgMTgwLCAzMSwgMjQ5LCAyMTEsIDE4MCwgMzEsIDIyNiwgMTk3LCAyMTYsIAotICAgIDE5NiwgMjEzLCAyNDIsIDE4MCwgMzEsIDI0NywgMjMyLCAxODAsIDMxLCAyMzMsIDEyNCwgMTgwLCAzMSwgMjQ0LCAxMywgCi0gICAgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDExMCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIAotICAgIDEwNSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDE1OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgCi0gICAgMjEsIDE2MSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDE4OSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIAotICAgIDE3NCwgMjEsIDE5NCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDE5OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAKLSAgICAyMTQsIDE3NCwgMjEsIDE5NSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTQsIDE3NCwgMjEsIDIwMCwgMjQ5LCAxNDksIDIyMiwgCi0gICAgMjAyLCAyMTYsIDI0MywgMjEsIDExMCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDEwNSwgMjQ5LCAxNDksIAotICAgIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE1OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE2MSwgMjQ5LCAKLSAgICAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE4OSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE5NCwgCi0gICAgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDE5OCwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIAotICAgIDE5NSwgMjQ5LCAxNDksIDIyMiwgMjAyLCAyMTYsIDI0MywgMjEsIDIwMCwgMTEsIDIzLCA2LCA2MSwgMTEsIDIzLCA2LCAKLSAgICAyNTMsIDE1OCwgMTEsIDIzLCA2LCAyNTEsIDY2LCAxMSwgMjMsIDYsIDI0OSwgNjAsIDExLCAyMywgNiwgNzUsIDExLCAyMywgCi0gICAgNiwgMjQ1LCA2LCAxMSwgMjMsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDYsIDI0MiwgNjAsIDExLCAyMywgNiwgNzMsIDExLCAKLSAgICAyMywgNiwgMjM1LCAxNDQsIDExLCAyMywgNiwgMjM1LCAyMywgMTEsIDIzLCA2LCAxNTYsIDExLCAyMywgNiwgMTkzLCAxMSwgCi0gICAgMjMsIDYsIDIzMCwgMjUsIDExLCAyMywgNiwgNzYsIDExLCAyMywgNiwgMjI2LCAxMDUsIDExLCAyMywgNiwgMjI0LCA5NiwgCi0gICAgMTEsIDIzLCA2LCAxNTMsIDExLCAyMywgNiwgMjIyLCA5MSwgMTEsIDIzLCA2LCAyMTcsIDE1MiwgMTEsIDIzLCA2LCA3MCwgCi0gICAgMTEsIDIzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMjMsIDYsIAotICAgIDIxMSwgMTE3LCAxMSwgMjMsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDQsIDYxLCAxMSwgMjMsIDQsIDI1MywgMTU4LCAxMSwgCi0gICAgMjMsIDQsIDI1MSwgNjYsIDExLCAyMywgNCwgMjQ5LCA2MCwgMTEsIDIzLCA0LCA3NSwgMTEsIDIzLCA0LCAyNDUsIDYsIDExLCAKLSAgICAyMywgNCwgMjQzLCAyMDIsIDExLCAyMywgNCwgMjQyLCA2MCwgMTEsIDIzLCA0LCA3MywgMTEsIDIzLCA0LCAyMzUsIDE0NCwgCi0gICAgMTEsIDIzLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDQsIDE1NiwgMTEsIDIzLCA0LCAxOTMsIDExLCAyMywgNCwgMjMwLCAyNSwgCi0gICAgMTEsIDIzLCA0LCA3NiwgMTEsIDIzLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCA0LCAyMjQsIDk2LCAxMSwgMjMsIDQsIDE1MywgCi0gICAgMTEsIDIzLCA0LCAyMjIsIDkxLCAxMSwgMjMsIDQsIDIxNywgMTUyLCAxMSwgMjMsIDQsIDcwLCAxMSwgMjMsIDQsIDIxNCwgCi0gICAgMTA1LCAxMSwgMjMsIDQsIDIxMiwgOTgsIDExLCAyMywgNCwgMjExLCAxNzgsIDExLCAyMywgNCwgMjExLCAxMTcsIDExLCAKLSAgICAyMywgNCwgMjEwLCAxNTksIDExLCAzMiwgNiwgNjEsIDExLCAzMiwgNiwgMjUzLCAxNTgsIDExLCAzMiwgNiwgMjUxLCA2NiwgCi0gICAgMTEsIDMyLCA2LCAyNDksIDYwLCAxMSwgMzIsIDYsIDc1LCAxMSwgMzIsIDYsIDI0NSwgNiwgMTEsIDMyLCA2LCAyNDMsIAotICAgIDIwMiwgMTEsIDMyLCA2LCAyNDIsIDYwLCAxMSwgMzIsIDYsIDczLCAxMSwgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzIsIDYsIAotICAgIDIzNSwgMjMsIDExLCAzMiwgNiwgMTU2LCAxMSwgMzIsIDYsIDE5MywgMTEsIDMyLCA2LCAyMzAsIDI1LCAxMSwgMzIsIDYsIAotICAgIDc2LCAxMSwgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzIsIDYsIDIyNCwgOTYsIDExLCAzMiwgNiwgMTUzLCAxMSwgMzIsIDYsIAotICAgIDIyMiwgOTEsIDExLCAzMiwgNiwgMjE3LCAxNTIsIDExLCAzMiwgNiwgNzAsIDExLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzMiwgCi0gICAgNiwgMjEyLCA5OCwgMTEsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDMyLCA2LCAyMTEsIDExNywgMTEsIDMyLCA2LCAyMTAsIAotICAgIDE1OSwgMTEsIDMyLCA0LCA2MSwgMTEsIDMyLCA0LCAyNTMsIDE1OCwgMTEsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMzIsIDQsIAotICAgIDI0OSwgNjAsIDExLCAzMiwgNCwgNzUsIDExLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMzIsIDQsIDI0MywgMjAyLCAxMSwgMzIsIAotICAgIDQsIDczLCAxMSwgMzIsIDQsIDIzNSwgMTQ0LCAxMSwgMzIsIDQsIDIzNSwgMjMsIDExLCAzMiwgNCwgMTU2LCAxMSwgMzIsIAotICAgIDQsIDE5MywgMTEsIDMyLCA0LCAyMzAsIDI1LCAxMSwgMzIsIDQsIDc2LCAxMSwgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzIsIAotICAgIDQsIDIyNCwgOTYsIDExLCAzMiwgNCwgMTUzLCAxMSwgMzIsIDQsIDIyMiwgOTEsIDExLCAzMiwgNCwgMjE3LCAxNTIsIDExLCAKLSAgICAzMiwgNCwgNzAsIDExLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDMyLCA0LCAyMTEsIDE3OCwgCi0gICAgMTEsIDMyLCA0LCAyMTEsIDExNywgMTEsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgNiwgNjEsIDExLCAyMywgMzIsIAotICAgIDYsIDI1MywgMTU4LCAxMSwgMjMsIDMyLCA2LCAyNTEsIDY2LCAxMSwgMjMsIDMyLCA2LCAyNDksIDYwLCAxMSwgMjMsIDMyLCAKLSAgICA2LCA3NSwgMTEsIDIzLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDIzLCAzMiwgNiwgCi0gICAgMjQyLCA2MCwgMTEsIDIzLCAzMiwgNiwgNzMsIDExLCAyMywgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIDMyLCA2LCAyMzUsIAotICAgIDIzLCAxMSwgMjMsIDMyLCA2LCAxNTYsIDExLCAyMywgMzIsIDYsIDE5MywgMTEsIDIzLCAzMiwgNiwgMjMwLCAyNSwgMTEsIAotICAgIDIzLCAzMiwgNiwgNzYsIDExLCAyMywgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMjMsIAotICAgIDMyLCA2LCAxNTMsIDExLCAyMywgMzIsIDYsIDIyMiwgOTEsIDExLCAyMywgMzIsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDMyLCAKLSAgICA2LCA3MCwgMTEsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAyMywgMzIsIDYsIAotICAgIDIxMSwgMTc4LCAxMSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAyMywgMzIsIAotICAgIDQsIDYxLCAxMSwgMjMsIDMyLCA0LCAyNTMsIDE1OCwgMTEsIDIzLCAzMiwgNCwgMjUxLCA2NiwgMTEsIDIzLCAzMiwgNCwgCi0gICAgMjQ5LCA2MCwgMTEsIDIzLCAzMiwgNCwgNzUsIDExLCAyMywgMzIsIDQsIDI0NSwgNiwgMTEsIDIzLCAzMiwgNCwgMjQzLCAKLSAgICAyMDIsIDExLCAyMywgMzIsIDQsIDI0MiwgNjAsIDExLCAyMywgMzIsIDQsIDczLCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE0NCwgCi0gICAgMTEsIDIzLCAzMiwgNCwgMjM1LCAyMywgMTEsIDIzLCAzMiwgNCwgMTU2LCAxMSwgMjMsIDMyLCA0LCAxOTMsIDExLCAyMywgCi0gICAgMzIsIDQsIDIzMCwgMjUsIDExLCAyMywgMzIsIDQsIDc2LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAzMiwgCi0gICAgNCwgMjI0LCA5NiwgMTEsIDIzLCAzMiwgNCwgMTUzLCAxMSwgMjMsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMjMsIDMyLCA0LCAKLSAgICAyMTcsIDE1MiwgMTEsIDIzLCAzMiwgNCwgNzAsIDExLCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDMyLCA0LCAyMTIsIAotICAgIDk4LCAxMSwgMjMsIDMyLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAyMywgMzIsIDQsIDIxMCwgCi0gICAgMTU5LCAxMSwgMTE5LCA2LCA2MSwgMTEsIDExOSwgNiwgMjUxLCA2NiwgMTEsIDExOSwgNiwgMjQ5LCA2MCwgMTEsIDExOSwgCi0gICAgNiwgMjQzLCAyMDIsIDExLCAxMTksIDYsIDIzNSwgMTQ0LCAxMSwgMTE5LCA2LCAyMzUsIDIzLCAxMSwgMTE5LCA2LCAyMzAsIAotICAgIDI1LCAxMSwgMTE5LCA2LCA3NiwgMTEsIDExOSwgNiwgMjI2LCAxMDUsIDExLCAxMTksIDYsIDIyNCwgOTYsIDExLCAxMTksIAotICAgIDYsIDIyMiwgOTEsIDExLCAxMTksIDYsIDIxNywgMTUyLCAxMSwgMTE5LCA2LCA3MCwgMTEsIDExOSwgNiwgMjE0LCAxMDUsIAotICAgIDExLCAxMTksIDYsIDIxMiwgOTgsIDExLCAxMTksIDYsIDIxMSwgMTc4LCAxMSwgMTE5LCA2LCAyMTEsIDExNywgMTEsIDExOSwgCi0gICAgNiwgMjEwLCAxNTksIDExLCAxMTksIDQsIDYxLCAxMSwgMTE5LCA0LCAyNTMsIDE1OCwgMTEsIDExOSwgNCwgMjUxLCA2NiwgCi0gICAgMTEsIDExOSwgNCwgMjQ5LCA2MCwgMTEsIDExOSwgNCwgMjQ1LCA2LCAxMSwgMTE5LCA0LCAyNDIsIDYwLCAxMSwgMTE5LCA0LCAKLSAgICA3MywgMTEsIDExOSwgNCwgMjM1LCAxNDQsIDExLCAxMTksIDQsIDIzNSwgMjMsIDExLCAxMTksIDQsIDE1NiwgMTEsIDExOSwgCi0gICAgNCwgMTkzLCAxMSwgMTE5LCA0LCAyMzAsIDI1LCAxMSwgMTE5LCA0LCAyMjYsIDEwNSwgMTEsIDExOSwgNCwgMjI0LCA5NiwgCi0gICAgMTEsIDExOSwgNCwgMTUzLCAxMSwgMTE5LCA0LCAyMjIsIDkxLCAxMSwgMTE5LCA0LCAyMTcsIDE1MiwgMTEsIDExOSwgNCwgCi0gICAgNzAsIDExLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMTE5LCA0LCAyMTEsIDE3OCwgMTEsIAotICAgIDExOSwgNCwgMjExLCAxMTcsIDExLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNiwgNjEsIDExLCAyMywgMTE5LCAKLSAgICA2LCAyNTMsIDE1OCwgMTEsIDIzLCAxMTksIDYsIDI1MSwgNjYsIDExLCAyMywgMTE5LCA2LCAyNDksIDYwLCAxMSwgMjMsIAotICAgIDExOSwgNiwgNzUsIDExLCAyMywgMTE5LCA2LCAyNDUsIDYsIDExLCAyMywgMTE5LCA2LCAyNDMsIDIwMiwgMTEsIDIzLCAKLSAgICAxMTksIDYsIDI0MiwgNjAsIDExLCAyMywgMTE5LCA2LCA3MywgMTEsIDIzLCAxMTksIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIAotICAgIDExOSwgNiwgMjM1LCAyMywgMTEsIDIzLCAxMTksIDYsIDE1NiwgMTEsIDIzLCAxMTksIDYsIDE5MywgMTEsIDIzLCAxMTksIAotICAgIDYsIDIzMCwgMjUsIDExLCAyMywgMTE5LCA2LCA3NiwgMTEsIDIzLCAxMTksIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDExOSwgNiwgCi0gICAgMjI0LCA5NiwgMTEsIDIzLCAxMTksIDYsIDE1MywgMTEsIDIzLCAxMTksIDYsIDIyMiwgOTEsIDExLCAyMywgMTE5LCA2LCAKLSAgICAyMTcsIDE1MiwgMTEsIDIzLCAxMTksIDYsIDcwLCAxMSwgMjMsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA2LCAKLSAgICAyMTIsIDk4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxNzgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIAotICAgIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNCwgNjEsIDExLCAyMywgMTE5LCA0LCAyNTMsIDE1OCwgMTEsIDIzLCAxMTksIAotICAgIDQsIDI1MSwgNjYsIDExLCAyMywgMTE5LCA0LCAyNDksIDYwLCAxMSwgMjMsIDExOSwgNCwgNzUsIDExLCAyMywgMTE5LCA0LCAKLSAgICAyNDUsIDYsIDExLCAyMywgMTE5LCA0LCAyNDMsIDIwMiwgMTEsIDIzLCAxMTksIDQsIDI0MiwgNjAsIDExLCAyMywgMTE5LCAKLSAgICA0LCA3MywgMTEsIDIzLCAxMTksIDQsIDIzNSwgMTQ0LCAxMSwgMjMsIDExOSwgNCwgMjM1LCAyMywgMTEsIDIzLCAxMTksIDQsIAotICAgIDE1NiwgMTEsIDIzLCAxMTksIDQsIDE5MywgMTEsIDIzLCAxMTksIDQsIDIzMCwgMjUsIDExLCAyMywgMTE5LCA0LCA3NiwgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjI0LCA5NiwgMTEsIDIzLCAxMTksIDQsIDE1MywgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIyMiwgOTEsIDExLCAyMywgMTE5LCA0LCAyMTcsIDE1MiwgMTEsIDIzLCAxMTksIDQsIDcwLCAKLSAgICAxMSwgMjMsIDExOSwgNCwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAKLSAgICAxNzgsIDExLCAyMywgMTE5LCA0LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMTMzLCA2LCA2MSwgCi0gICAgMTEsIDEzMywgNiwgMjUzLCAxNTgsIDExLCAxMzMsIDYsIDI0OSwgNjAsIDExLCAxMzMsIDYsIDc1LCAxMSwgMTMzLCA2LCAKLSAgICAyNDUsIDYsIDExLCAxMzMsIDYsIDI0MywgMjAyLCAxMSwgMTMzLCA2LCAyMzUsIDE0NCwgMTEsIDEzMywgNiwgMjM1LCAyMywgCi0gICAgMTEsIDEzMywgNiwgMTU2LCAxMSwgMTMzLCA2LCAxOTMsIDExLCAxMzMsIDYsIDIzMCwgMjUsIDExLCAxMzMsIDYsIDc2LCAKLSAgICAxMSwgMTMzLCA2LCAyMjYsIDEwNSwgMTEsIDEzMywgNiwgMjI0LCA5NiwgMTEsIDEzMywgNiwgMjIyLCA5MSwgMTEsIDEzMywgCi0gICAgNiwgMjE3LCAxNTIsIDExLCAxMzMsIDYsIDcwLCAxMSwgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDEzMywgNiwgMjEyLCA5OCwgCi0gICAgMTEsIDEzMywgNiwgMjExLCAxNzgsIDExLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCA2MSwgMTEsIDEzMywgNCwgCi0gICAgMjUzLCAxNTgsIDExLCAxMzMsIDQsIDI1MSwgNjYsIDExLCAxMzMsIDQsIDI0OSwgNjAsIDExLCAxMzMsIDQsIDc1LCAxMSwgCi0gICAgMTMzLCA0LCAyNDUsIDYsIDExLCAxMzMsIDQsIDI0MywgMjAyLCAxMSwgMTMzLCA0LCAyNDIsIDYwLCAxMSwgMTMzLCA0LCAKLSAgICA3MywgMTEsIDEzMywgNCwgMjM1LCAxNDQsIDExLCAxMzMsIDQsIDIzNSwgMjMsIDExLCAxMzMsIDQsIDE1NiwgMTEsIDEzMywgCi0gICAgNCwgMTkzLCAxMSwgMTMzLCA0LCAyMzAsIDI1LCAxMSwgMTMzLCA0LCA3NiwgMTEsIDEzMywgNCwgMjI2LCAxMDUsIDExLCAKLSAgICAxMzMsIDQsIDIyNCwgOTYsIDExLCAxMzMsIDQsIDE1MywgMTEsIDEzMywgNCwgMjIyLCA5MSwgMTEsIDEzMywgNCwgMjE3LCAKLSAgICAxNTIsIDExLCAxMzMsIDQsIDcwLCAxMSwgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDEzMywgNCwgMjEyLCA5OCwgMTEsIDEzMywgCi0gICAgNCwgMjExLCAxNzgsIDExLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDEzOSwgNiwgNjEsIAotICAgIDExLCAxMzksIDYsIDI1MywgMTU4LCAxMSwgMTM5LCA2LCAyNDksIDYwLCAxMSwgMTM5LCA2LCA3NSwgMTEsIDEzOSwgNiwgCi0gICAgMjQ1LCA2LCAxMSwgMTM5LCA2LCAyNDMsIDIwMiwgMTEsIDEzOSwgNiwgNzMsIDExLCAxMzksIDYsIDIzNSwgMTQ0LCAxMSwgCi0gICAgMTM5LCA2LCAyMzUsIDIzLCAxMSwgMTM5LCA2LCAxNTYsIDExLCAxMzksIDYsIDE5MywgMTEsIDEzOSwgNiwgNzYsIDExLCAKLSAgICAxMzksIDYsIDIyMiwgOTEsIDExLCAxMzksIDYsIDIxNywgMTUyLCAxMSwgMTM5LCA2LCA3MCwgMTEsIDEzOSwgNiwgMjE0LCAKLSAgICAxMDUsIDExLCAxMzksIDYsIDIxMiwgOTgsIDExLCAxMzksIDYsIDIxMSwgMTc4LCAxMSwgMTM5LCA2LCAyMTEsIDExNywgMTEsIAotICAgIDEzOSwgNCwgNjEsIDExLCAxMzksIDQsIDI1MywgMTU4LCAxMSwgMTM5LCA0LCAyNTEsIDY2LCAxMSwgMTM5LCA0LCAyNDksIAotICAgIDYwLCAxMSwgMTM5LCA0LCA3NSwgMTEsIDEzOSwgNCwgMjQ1LCA2LCAxMSwgMTM5LCA0LCAyNDMsIDIwMiwgMTEsIDEzOSwgNCwgCi0gICAgMjQyLCA2MCwgMTEsIDEzOSwgNCwgNzMsIDExLCAxMzksIDQsIDIzNSwgMTQ0LCAxMSwgMTM5LCA0LCAyMzUsIDIzLCAxMSwgCi0gICAgMTM5LCA0LCAxNTYsIDExLCAxMzksIDQsIDE5MywgMTEsIDEzOSwgNCwgMjMwLCAyNSwgMTEsIDEzOSwgNCwgNzYsIDExLCAKLSAgICAxMzksIDQsIDIyNiwgMTA1LCAxMSwgMTM5LCA0LCAyMjQsIDk2LCAxMSwgMTM5LCA0LCAxNTMsIDExLCAxMzksIDQsIDIyMiwgCi0gICAgOTEsIDExLCAxMzksIDQsIDIxNywgMTUyLCAxMSwgMTM5LCA0LCA3MCwgMTEsIDEzOSwgNCwgMjE0LCAxMDUsIDExLCAxMzksIAotICAgIDQsIDIxMiwgOTgsIDExLCAxMzksIDQsIDIxMSwgMTc4LCAxMSwgMTM5LCA0LCAyMTEsIDExNywgMTEsIDEzOSwgNCwgMjEwLCAKLSAgICAxNTksIDExLCAyMywgMTMzLCA2LCA2MSwgMTEsIDIzLCAxMzMsIDYsIDI1MywgMTU4LCAxMSwgMjMsIDEzMywgNiwgMjUxLCAKLSAgICA2NiwgMTEsIDIzLCAxMzMsIDYsIDI0OSwgNjAsIDExLCAyMywgMTMzLCA2LCA3NSwgMTEsIDIzLCAxMzMsIDYsIDI0NSwgNiwgCi0gICAgMTEsIDIzLCAxMzMsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDEzMywgNiwgMjQyLCA2MCwgMTEsIDIzLCAxMzMsIDYsIDczLCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjM1LCAxNDQsIDExLCAyMywgMTMzLCA2LCAyMzUsIDIzLCAxMSwgMjMsIDEzMywgNiwgMTU2LCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMTkzLCAxMSwgMjMsIDEzMywgNiwgMjMwLCAyNSwgMTEsIDIzLCAxMzMsIDYsIDc2LCAxMSwgMjMsIAotICAgIDEzMywgNiwgMjI2LCAxMDUsIDExLCAyMywgMTMzLCA2LCAyMjQsIDk2LCAxMSwgMjMsIDEzMywgNiwgMTUzLCAxMSwgMjMsIAotICAgIDEzMywgNiwgMjIyLCA5MSwgMTEsIDIzLCAxMzMsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDEzMywgNiwgNzAsIDExLCAyMywgCi0gICAgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIAotICAgIDIzLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNiwgMjEwLCAxNTksIDExLCAyMywgMTMzLCA0LCA2MSwgMTEsIAotICAgIDIzLCAxMzMsIDQsIDI1MywgMTU4LCAxMSwgMjMsIDEzMywgNCwgMjUxLCA2NiwgMTEsIDIzLCAxMzMsIDQsIDI0OSwgNjAsIAotICAgIDExLCAyMywgMTMzLCA0LCA3NSwgMTEsIDIzLCAxMzMsIDQsIDI0NSwgNiwgMTEsIDIzLCAxMzMsIDQsIDI0MywgMjAyLCAxMSwgCi0gICAgMjMsIDEzMywgNCwgMjQyLCA2MCwgMTEsIDIzLCAxMzMsIDQsIDczLCAxMSwgMjMsIDEzMywgNCwgMjM1LCAxNDQsIDExLCAKLSAgICAyMywgMTMzLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDEzMywgNCwgMTU2LCAxMSwgMjMsIDEzMywgNCwgMTkzLCAxMSwgMjMsIAotICAgIDEzMywgNCwgMjMwLCAyNSwgMTEsIDIzLCAxMzMsIDQsIDc2LCAxMSwgMjMsIDEzMywgNCwgMjI2LCAxMDUsIDExLCAyMywgCi0gICAgMTMzLCA0LCAyMjQsIDk2LCAxMSwgMjMsIDEzMywgNCwgMTUzLCAxMSwgMjMsIDEzMywgNCwgMjIyLCA5MSwgMTEsIDIzLCAKLSAgICAxMzMsIDQsIDIxNywgMTUyLCAxMSwgMjMsIDEzMywgNCwgNzAsIDExLCAyMywgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAKLSAgICAxMzMsIDQsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgCi0gICAgMjMsIDEzMywgNCwgMjEwLCAxNTksIDExLCAzNSwgNiwgNjEsIDExLCAzNSwgNiwgMjUzLCAxNTgsIDExLCAzNSwgNiwgMjUxLCAKLSAgICA2NiwgMTEsIDM1LCA2LCAyNDksIDYwLCAxMSwgMzUsIDYsIDc1LCAxMSwgMzUsIDYsIDI0NSwgNiwgMTEsIDM1LCA2LCAyNDMsIAotICAgIDIwMiwgMTEsIDM1LCA2LCAyNDIsIDYwLCAxMSwgMzUsIDYsIDczLCAxMSwgMzUsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDYsIAotICAgIDIzNSwgMjMsIDExLCAzNSwgNiwgMTU2LCAxMSwgMzUsIDYsIDE5MywgMTEsIDM1LCA2LCAyMzAsIDI1LCAxMSwgMzUsIDYsIAotICAgIDc2LCAxMSwgMzUsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDYsIDIyNCwgOTYsIDExLCAzNSwgNiwgMTUzLCAxMSwgMzUsIDYsIAotICAgIDIyMiwgOTEsIDExLCAzNSwgNiwgMjE3LCAxNTIsIDExLCAzNSwgNiwgNzAsIDExLCAzNSwgNiwgMjE0LCAxMDUsIDExLCAzNSwgCi0gICAgNiwgMjEyLCA5OCwgMTEsIDM1LCA2LCAyMTEsIDE3OCwgMTEsIDM1LCA2LCAyMTEsIDExNywgMTEsIDM1LCA2LCAyMTAsIAotICAgIDE1OSwgMTEsIDM1LCA0LCA2MSwgMTEsIDM1LCA0LCAyNTMsIDE1OCwgMTEsIDM1LCA0LCAyNTEsIDY2LCAxMSwgMzUsIDQsIAotICAgIDI0OSwgNjAsIDExLCAzNSwgNCwgNzUsIDExLCAzNSwgNCwgMjQ1LCA2LCAxMSwgMzUsIDQsIDI0MywgMjAyLCAxMSwgMzUsIAotICAgIDQsIDI0MiwgNjAsIDExLCAzNSwgNCwgNzMsIDExLCAzNSwgNCwgMjM1LCAxNDQsIDExLCAzNSwgNCwgMjM1LCAyMywgMTEsIAotICAgIDM1LCA0LCAxNTYsIDExLCAzNSwgNCwgMTkzLCAxMSwgMzUsIDQsIDIzMCwgMjUsIDExLCAzNSwgNCwgNzYsIDExLCAzNSwgNCwgCi0gICAgMjI2LCAxMDUsIDExLCAzNSwgNCwgMjI0LCA5NiwgMTEsIDM1LCA0LCAxNTMsIDExLCAzNSwgNCwgMjIyLCA5MSwgMTEsIDM1LCAKLSAgICA0LCAyMTcsIDE1MiwgMTEsIDM1LCA0LCA3MCwgMTEsIDM1LCA0LCAyMTQsIDEwNSwgMTEsIDM1LCA0LCAyMTIsIDk4LCAxMSwgCi0gICAgMzUsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCA2LCAKLSAgICA2MSwgMTEsIDM1LCAyMywgNiwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDYsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDYsIDI0OSwgCi0gICAgNjAsIDExLCAzNSwgMjMsIDYsIDc1LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDYsIDExLCAzNSwgMjMsIDYsIDI0MywgMjAyLCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCA2LCA3MywgMTEsIDM1LCAyMywgNiwgMjM1LCAxNDQsIDExLCAKLSAgICAzNSwgMjMsIDYsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDYsIDE1NiwgMTEsIDM1LCAyMywgNiwgMTkzLCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCA2LCA3NiwgMTEsIDM1LCAyMywgNiwgMjI2LCAxMDUsIDExLCAzNSwgMjMsIDYsIAotICAgIDIyNCwgOTYsIDExLCAzNSwgMjMsIDYsIDE1MywgMTEsIDM1LCAyMywgNiwgMjIyLCA5MSwgMTEsIDM1LCAyMywgNiwgMjE3LCAKLSAgICAxNTIsIDExLCAzNSwgMjMsIDYsIDcwLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgNiwgMjEyLCA5OCwgCi0gICAgMTEsIDM1LCAyMywgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCA2LCAyMTAsIAotICAgIDE1OSwgMTEsIDM1LCAyMywgNCwgNjEsIDExLCAzNSwgMjMsIDQsIDI1MywgMTU4LCAxMSwgMzUsIDIzLCA0LCAyNTEsIDY2LCAKLSAgICAxMSwgMzUsIDIzLCA0LCAyNDksIDYwLCAxMSwgMzUsIDIzLCA0LCA3NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCA2LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyNDMsIDIwMiwgMTEsIDM1LCAyMywgNCwgMjQyLCA2MCwgMTEsIDM1LCAyMywgNCwgNzMsIDExLCAzNSwgMjMsIAotICAgIDQsIDIzNSwgMTQ0LCAxMSwgMzUsIDIzLCA0LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCA0LCAxNTYsIDExLCAzNSwgMjMsIDQsIAotICAgIDE5MywgMTEsIDM1LCAyMywgNCwgMjMwLCAyNSwgMTEsIDM1LCAyMywgNCwgNzYsIDExLCAzNSwgMjMsIDQsIDIyNiwgMTA1LCAKLSAgICAxMSwgMzUsIDIzLCA0LCAyMjQsIDk2LCAxMSwgMzUsIDIzLCA0LCAxNTMsIDExLCAzNSwgMjMsIDQsIDIyMiwgOTEsIDExLCAKLSAgICAzNSwgMjMsIDQsIDIxNywgMTUyLCAxMSwgMzUsIDIzLCA0LCA3MCwgMTEsIDM1LCAyMywgNCwgMjE0LCAxMDUsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDExNywgMTEsIDM1LCAKLSAgICAyMywgNCwgMjEwLCAxNTksIDExLCAzNSwgMzIsIDYsIDYxLCAxMSwgMzUsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAzMiwgCi0gICAgNiwgMjUxLCA2NiwgMTEsIDM1LCAzMiwgNiwgMjQ5LCA2MCwgMTEsIDM1LCAzMiwgNiwgNzUsIDExLCAzNSwgMzIsIDYsIAotICAgIDI0NSwgNiwgMTEsIDM1LCAzMiwgNiwgMjQzLCAyMDIsIDExLCAzNSwgMzIsIDYsIDI0MiwgNjAsIDExLCAzNSwgMzIsIDYsIAotICAgIDczLCAxMSwgMzUsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDM1LCAzMiwgNiwgMjM1LCAyMywgMTEsIDM1LCAzMiwgNiwgMTU2LCAKLSAgICAxMSwgMzUsIDMyLCA2LCAxOTMsIDExLCAzNSwgMzIsIDYsIDIzMCwgMjUsIDExLCAzNSwgMzIsIDYsIDc2LCAxMSwgMzUsIAotICAgIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAzMiwgNiwgMjI0LCA5NiwgMTEsIDM1LCAzMiwgNiwgMTUzLCAxMSwgMzUsIDMyLCAKLSAgICA2LCAyMjIsIDkxLCAxMSwgMzUsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDM1LCAzMiwgNiwgNzAsIDExLCAzNSwgMzIsIDYsIAotICAgIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAzMiwgNiwgCi0gICAgMjExLCAxMTcsIDExLCAzNSwgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCA0LCA2MSwgMTEsIDM1LCAzMiwgNCwgMjUzLCAKLSAgICAxNTgsIDExLCAzNSwgMzIsIDQsIDI1MSwgNjYsIDExLCAzNSwgMzIsIDQsIDI0OSwgNjAsIDExLCAzNSwgMzIsIDQsIDc1LCAKLSAgICAxMSwgMzUsIDMyLCA0LCAyNDUsIDYsIDExLCAzNSwgMzIsIDQsIDI0MywgMjAyLCAxMSwgMzUsIDMyLCA0LCAyNDIsIDYwLCAKLSAgICAxMSwgMzUsIDMyLCA0LCA3MywgMTEsIDM1LCAzMiwgNCwgMjM1LCAxNDQsIDExLCAzNSwgMzIsIDQsIDIzNSwgMjMsIDExLCAKLSAgICAzNSwgMzIsIDQsIDE1NiwgMTEsIDM1LCAzMiwgNCwgMTkzLCAxMSwgMzUsIDMyLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDMyLCAKLSAgICA0LCA3NiwgMTEsIDM1LCAzMiwgNCwgMjI2LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIyNCwgOTYsIDExLCAzNSwgMzIsIDQsIAotICAgIDE1MywgMTEsIDM1LCAzMiwgNCwgMjIyLCA5MSwgMTEsIDM1LCAzMiwgNCwgMjE3LCAxNTIsIDExLCAzNSwgMzIsIDQsIDcwLCAKLSAgICAxMSwgMzUsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAzMiwgNCwgMjExLCAxNzgsIAotICAgIDExLCAzNSwgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgMzIsIDYsIDYxLCAKLSAgICAxMSwgMzUsIDIzLCAzMiwgNiwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTEsIDY2LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjQ5LCA2MCwgMTEsIDM1LCAyMywgMzIsIDYsIDc1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNiwgMjQzLCAyMDIsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCAzMiwgNiwgNzMsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDMyLCA2LCAKLSAgICAxNTYsIDExLCAzNSwgMjMsIDMyLCA2LCAxOTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgNzYsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgOTYsIDExLCAzNSwgCi0gICAgMjMsIDMyLCA2LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCAxNTIsIAotICAgIDExLCAzNSwgMjMsIDMyLCA2LCA3MCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNiwgCi0gICAgMjEyLCA5OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxMTcsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgMzIsIDQsIDYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUzLCAKLSAgICAxNTgsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ5LCA2MCwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDc1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQzLCAyMDIsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA0LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCAzMiwgNCwgNzMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIAotICAgIDE0NCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDMyLCA0LCAxNTYsIDExLCAzNSwgMjMsIDMyLCAKLSAgICA0LCAxOTMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCAzMiwgNCwgNzYsIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgOTYsIDExLCAzNSwgMjMsIDMyLCA0LCAxNTMsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE3LCAxNTIsIDExLCAzNSwgMjMsIDMyLCA0LCAKLSAgICA3MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIAotICAgIDE1OSwgMTEsIDIzMCwgMTM4LCA2LCA2MSwgMTEsIDIzMCwgMTM4LCA2LCAyNTMsIDE1OCwgMTEsIDIzMCwgMTM4LCA2LCAKLSAgICAyNTEsIDY2LCAxMSwgMjMwLCAxMzgsIDYsIDI0OSwgNjAsIDExLCAyMzAsIDEzOCwgNiwgNzUsIDExLCAyMzAsIDEzOCwgNiwgCi0gICAgMjQ1LCA2LCAxMSwgMjMwLCAxMzgsIDYsIDI0MywgMjAyLCAxMSwgMjMwLCAxMzgsIDYsIDI0MiwgNjAsIDExLCAyMzAsIAotICAgIDEzOCwgNiwgNzMsIDExLCAyMzAsIDEzOCwgNiwgMjM1LCAxNDQsIDExLCAyMzAsIDEzOCwgNiwgMjM1LCAyMywgMTEsIDIzMCwgCi0gICAgMTM4LCA2LCAxNTYsIDExLCAyMzAsIDEzOCwgNiwgMTkzLCAxMSwgMjMwLCAxMzgsIDYsIDIzMCwgMjUsIDExLCAyMzAsIAotICAgIDEzOCwgNiwgNzYsIDExLCAyMzAsIDEzOCwgNiwgMjI2LCAxMDUsIDExLCAyMzAsIDEzOCwgNiwgMjI0LCA5NiwgMTEsIDIzMCwgCi0gICAgMTM4LCA2LCAxNTMsIDExLCAyMzAsIDEzOCwgNiwgMjIyLCA5MSwgMTEsIDIzMCwgMTM4LCA2LCAyMTcsIDE1MiwgMTEsIAotICAgIDIzMCwgMTM4LCA2LCA3MCwgMTEsIDIzMCwgMTM4LCA2LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTM4LCA2LCAyMTIsIDk4LCAxMSwgCi0gICAgMjMwLCAxMzgsIDYsIDIxMSwgMTc4LCAxMSwgMjMwLCAxMzgsIDYsIDIxMSwgMTE3LCAxMSwgMjMwLCAxMzgsIDYsIDIxMCwgCi0gICAgMTU5LCAxMSwgMjMwLCAxMzgsIDQsIDYxLCAxMSwgMjMwLCAxMzgsIDQsIDI1MywgMTU4LCAxMSwgMjMwLCAxMzgsIDQsIAotICAgIDI1MSwgNjYsIDExLCAyMzAsIDEzOCwgNCwgMjQ5LCA2MCwgMTEsIDIzMCwgMTM4LCA0LCA3NSwgMTEsIDIzMCwgMTM4LCA0LCAKLSAgICAyNDUsIDYsIDExLCAyMzAsIDEzOCwgNCwgMjQzLCAyMDIsIDExLCAyMzAsIDEzOCwgNCwgMjQyLCA2MCwgMTEsIDIzMCwgCi0gICAgMTM4LCA0LCA3MywgMTEsIDIzMCwgMTM4LCA0LCAyMzUsIDE0NCwgMTEsIDIzMCwgMTM4LCA0LCAyMzUsIDIzLCAxMSwgMjMwLCAKLSAgICAxMzgsIDQsIDE1NiwgMTEsIDIzMCwgMTM4LCA0LCAxOTMsIDExLCAyMzAsIDEzOCwgNCwgMjMwLCAyNSwgMTEsIDIzMCwgCi0gICAgMTM4LCA0LCA3NiwgMTEsIDIzMCwgMTM4LCA0LCAyMjYsIDEwNSwgMTEsIDIzMCwgMTM4LCA0LCAyMjQsIDk2LCAxMSwgMjMwLCAKLSAgICAxMzgsIDQsIDE1MywgMTEsIDIzMCwgMTM4LCA0LCAyMjIsIDkxLCAxMSwgMjMwLCAxMzgsIDQsIDIxNywgMTUyLCAxMSwgCi0gICAgMjMwLCAxMzgsIDQsIDcwLCAxMSwgMjMwLCAxMzgsIDQsIDIxNCwgMTA1LCAxMSwgMjMwLCAxMzgsIDQsIDIxMiwgOTgsIDExLCAKLSAgICAyMzAsIDEzOCwgNCwgMjExLCAxNzgsIDExLCAyMzAsIDEzOCwgNCwgMjExLCAxMTcsIDExLCAyMzAsIDEzOCwgNCwgMjEwLCAKLSAgICAxNTksIDExLCAzMiwgNCwgMjQ3LCAxMTksIDczLCAxMSwgMzIsIDQsIDI0NywgMTE5LCAyMzUsIDE0NCwgMTEsIDIzLCA2LCAKLSAgICAyNTQsIDE0MywgMTEsIDIzLCA2LCAyNTIsIDI2LCAxMSwgMjMsIDYsIDI0MywgMTA3LCAxMSwgMjMsIDYsIDI0OCwgNTQsIAotICAgIDExLCAyMywgNiwgMjQ1LCAxMDAsIDExLCAyMywgNiwgMjEwLCA4NSwgMTEsIDIzLCA2LCAyNDUsIDYzLCAxMSwgMjMsIDYsIAotICAgIDIxNiwgMTc5LCAxMSwgMjMsIDYsIDIzNSwgMTg1LCAxMSwgMjMsIDYsIDIzNCwgMjIyLCAxMSwgMjMsIDYsIDIzMywgOTgsIAotICAgIDExLCAyMywgNiwgMjMwLCAxMDIsIDExLCAyMywgNiwgMjI3LCAyMzcsIDExLCAyMywgNiwgMjExLCAxNTcsIDExLCAyMywgNiwgCi0gICAgMjI2LCAxOTksIDExLCAyMywgNiwgMjI1LCAxMDgsIDExLCAyMywgNiwgMjIzLCAzNywgMTEsIDIzLCA2LCAyMTYsIDE4MCwgCi0gICAgODcsIDExLCAyMywgNiwgMjE5LCAxNzcsIDExLCAyMywgNiwgMjE3LCA0MSwgMTEsIDIzLCA2LCAyMTQsIDE1NywgMTEsIDIzLCAKLSAgICA2LCAyMjUsIDEzMywgMTEsIDIzLCA2LCAyNTAsIDExMCwgMTEsIDIzLCA2LCAyMjQsIDE2MSwgMTEsIDIzLCA2LCAyMjYsIAotICAgIDIwMSwgMTEsIDIzLCAyMjksIDIyMSwgMTEsIDIzLCA0LCAyNTQsIDE0MywgMTEsIDIzLCA0LCAyNTIsIDI2LCAxMSwgMjMsIAotICAgIDQsIDI0MywgMTA3LCAxMSwgMjMsIDQsIDI0OCwgNTQsIDExLCAyMywgNCwgMjQ1LCAxMDAsIDExLCAyMywgNCwgMjEwLCA4NSwgCi0gICAgMTEsIDIzLCA0LCAyNDUsIDYzLCAxMSwgMjMsIDQsIDIxNiwgMTc5LCAxMSwgMjMsIDQsIDIzNSwgMTg1LCAxMSwgMjMsIDQsIAotICAgIDIzNCwgMjIyLCAxMSwgMjMsIDQsIDIzMywgOTgsIDExLCAyMywgNCwgMjMwLCAxMDIsIDExLCAyMywgNCwgMjI3LCAyMzcsIAotICAgIDExLCAyMywgNCwgMjExLCAxNTcsIDExLCAyMywgNCwgMjI2LCAxOTksIDExLCAyMywgNCwgMjI1LCAxMDgsIDExLCAyMywgNCwgCi0gICAgMjIzLCAzNywgMTEsIDIzLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAyMywgNCwgMjE5LCAxNzcsIDExLCAyMywgNCwgMjE3LCAKLSAgICA0MSwgMTEsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDIzLCA0LCAyMjUsIDEzMywgMTEsIDIzLCA0LCAyNTAsIDExMCwgMTEsIAotICAgIDIzLCA0LCAyMjQsIDE2MSwgMTEsIDIzLCA0LCAyMjYsIDIwMSwgMTEsIDIzLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAyMywgCi0gICAgMjQ1LCAxMDEsIDg3LCAxMSwgMjMsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAyMzQsIDIyMywgODcsIDExLCAyMywgMjI1LCAKLSAgICAxMzQsIDg3LCAxMSwgMjMsIDIyMywgMzgsIDg3LCAxMSwgMjMsIDIyNSwgMTA5LCA4NywgMTEsIDMyLCA2LCAyNTQsIDE0MywgCi0gICAgMTEsIDMyLCA2LCAyNTIsIDI2LCAxMSwgMzIsIDYsIDI0MywgMTA3LCAxMSwgMzIsIDYsIDI0OCwgNTQsIDExLCAzMiwgNiwgCi0gICAgMjQ1LCAxMDAsIDExLCAzMiwgNiwgMjEwLCA4NSwgMTEsIDMyLCA2LCAyNDUsIDYzLCAxMSwgMzIsIDYsIDIxNiwgMTc5LCAKLSAgICAxMSwgMzIsIDYsIDIzNSwgMTg1LCAxMSwgMzIsIDYsIDIzNCwgMjIyLCAxMSwgMzIsIDYsIDIzMywgOTgsIDExLCAzMiwgNiwgCi0gICAgMjMwLCAxMDIsIDExLCAzMiwgNiwgMjI3LCAyMzcsIDExLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzMiwgNiwgMjI2LCAxOTksIAotICAgIDExLCAzMiwgNiwgMjI1LCAxMDgsIDExLCAzMiwgNiwgMjIzLCAzNywgMTEsIDMyLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzMiwgCi0gICAgNiwgMjE5LCAxNzcsIDExLCAzMiwgNiwgMjE3LCA0MSwgMTEsIDMyLCA2LCAyMTQsIDE1NywgMTEsIDMyLCA2LCAyMjUsIAotICAgIDEzMywgMTEsIDMyLCA2LCAyNTAsIDExMCwgMTEsIDMyLCA2LCAyMjQsIDE2MSwgMTEsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIAotICAgIDMyLCAyMjksIDIyMSwgMTEsIDMyLCA0LCAyNTQsIDE0MywgMTEsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMzIsIDQsIDI0MywgCi0gICAgMTA3LCAxMSwgMzIsIDQsIDI0OCwgNTQsIDExLCAzMiwgNCwgMjQ1LCAxMDAsIDExLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDMyLCAKLSAgICA0LCAyNDUsIDYzLCAxMSwgMzIsIDQsIDIxNiwgMTc5LCAxMSwgMzIsIDQsIDIzNSwgMTg1LCAxMSwgMzIsIDQsIDIzNCwgCi0gICAgMjIyLCAxMSwgMzIsIDQsIDIzMywgOTgsIDExLCAzMiwgNCwgMjMwLCAxMDIsIDExLCAzMiwgNCwgMjI3LCAyMzcsIDExLCAKLSAgICAzMiwgNCwgMjExLCAxNTcsIDExLCAzMiwgNCwgMjI2LCAxOTksIDExLCAzMiwgNCwgMjI1LCAxMDgsIDExLCAzMiwgNCwgCi0gICAgMjIzLCAzNywgMTEsIDMyLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAzMiwgNCwgMjE5LCAxNzcsIDExLCAzMiwgNCwgMjE3LCAKLSAgICA0MSwgMTEsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDMyLCA0LCAyMjUsIDEzMywgMTEsIDMyLCA0LCAyNTAsIDExMCwgMTEsIAotICAgIDMyLCA0LCAyMjQsIDE2MSwgMTEsIDMyLCA0LCAyMjYsIDIwMSwgMTEsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzMiwgCi0gICAgMjQ1LCAxMDEsIDg3LCAxMSwgMzIsIDIxNiwgMTgwLCA4NywgMTEsIDMyLCAyMzQsIDIyMywgODcsIDExLCAzMiwgMjI1LCAKLSAgICAxMzQsIDg3LCAxMSwgMzIsIDIyMywgMzgsIDg3LCAxMSwgMzIsIDIyNSwgMTA5LCA4NywgMTEsIDIzLCAzMiwgNiwgMjU0LCAKLSAgICAxNDMsIDExLCAyMywgMzIsIDYsIDI1MiwgMjYsIDExLCAyMywgMzIsIDYsIDI0MywgMTA3LCAxMSwgMjMsIDMyLCA2LCAyNDgsIAotICAgIDU0LCAxMSwgMjMsIDMyLCA2LCAyNDUsIDEwMCwgMTEsIDIzLCAzMiwgNiwgMjEwLCA4NSwgMTEsIDIzLCAzMiwgNiwgMjQ1LCAKLSAgICA2MywgMTEsIDIzLCAzMiwgNiwgMjE2LCAxNzksIDExLCAyMywgMzIsIDYsIDIzNSwgMTg1LCAxMSwgMjMsIDMyLCA2LCAyMzQsIAotICAgIDIyMiwgMTEsIDIzLCAzMiwgNiwgMjMzLCA5OCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAxMDIsIDExLCAyMywgMzIsIDYsIDIyNywgCi0gICAgMjM3LCAxMSwgMjMsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI2LCAxOTksIDExLCAyMywgMzIsIDYsIAotICAgIDIyNSwgMTA4LCAxMSwgMjMsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgODcsIDExLCAyMywgCi0gICAgMzIsIDYsIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDE1NywgMTEsIDIzLCAKLSAgICAzMiwgNiwgMjI1LCAxMzMsIDExLCAyMywgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMjMsIDMyLCA2LCAyMjQsIDE2MSwgMTEsIAotICAgIDIzLCAzMiwgNiwgMjI2LCAyMDEsIDExLCAyMywgMzIsIDIyOSwgMjIxLCAxMSwgMjMsIDMyLCA0LCAyNTQsIDE0MywgMTEsIAotICAgIDIzLCAzMiwgNCwgMjUyLCAyNiwgMTEsIDIzLCAzMiwgNCwgMjQzLCAxMDcsIDExLCAyMywgMzIsIDQsIDI0OCwgNTQsIDExLCAKLSAgICAyMywgMzIsIDQsIDI0NSwgMTAwLCAxMSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDYzLCAxMSwgCi0gICAgMjMsIDMyLCA0LCAyMTYsIDE3OSwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxODUsIDExLCAyMywgMzIsIDQsIDIzNCwgMjIyLCAKLSAgICAxMSwgMjMsIDMyLCA0LCAyMzMsIDk4LCAxMSwgMjMsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDIzLCAzMiwgNCwgMjI3LCAyMzcsIAotICAgIDExLCAyMywgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDE5OSwgMTEsIDIzLCAzMiwgNCwgMjI1LCAKLSAgICAxMDgsIDExLCAyMywgMzIsIDQsIDIyMywgMzcsIDExLCAyMywgMzIsIDQsIDQwLCAyMTksIDE3NywgMTEsIDIzLCAzMiwgNCwgCi0gICAgMjE5LCAxNzcsIDExLCAyMywgMzIsIDQsIDIxNywgNDEsIDExLCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIDMyLCA0LCAKLSAgICAyMjUsIDEzMywgMTEsIDIzLCAzMiwgNCwgMjUwLCAxMTAsIDExLCAyMywgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMjMsIDMyLCAKLSAgICA0LCAyMjYsIDIwMSwgMTEsIDIzLCAzMiwgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMjMsIDMyLCAyNDUsIDEwMSwgODcsIAotICAgIDExLCAyMywgMzIsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAzMiwgMjM0LCAyMjMsIDg3LCAxMSwgMjMsIDMyLCAyMjUsIDEzNCwgCi0gICAgODcsIDExLCAyMywgMzIsIDIyMywgMzgsIDg3LCAxMSwgMjMsIDMyLCAyMjUsIDEwOSwgODcsIDExLCAzNSwgMjMsIDYsIAotICAgIDI1NCwgMTQzLCAxMSwgMzUsIDIzLCA2LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCA2LCAyNDMsIDEwNywgMTEsIDM1LCAyMywgNiwgCi0gICAgMjQ4LCA1NCwgMTEsIDM1LCAyMywgNiwgMjQ1LCAxMDAsIDExLCAzNSwgMjMsIDYsIDIxMCwgODUsIDExLCAzNSwgMjMsIDYsIAotICAgIDI0NSwgNjMsIDExLCAzNSwgMjMsIDYsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCA2LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgNiwgCi0gICAgMjM0LCAyMjIsIDExLCAzNSwgMjMsIDYsIDIzMywgOTgsIDExLCAzNSwgMjMsIDYsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCA2LCAKLSAgICAyMjcsIDIzNywgMTEsIDM1LCAyMywgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyMjUsIDEwOCwgMTEsIDM1LCAyMywgNiwgMjIzLCAzNywgMTEsIDM1LCAyMywgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIAotICAgIDIzLCA2LCAyMTksIDE3NywgMTEsIDM1LCAyMywgNiwgMjE3LCA0MSwgMTEsIDM1LCAyMywgNiwgMjE0LCAxNTcsIDExLCAzNSwgCi0gICAgMjMsIDYsIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCA2LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgNiwgMjI0LCAxNjEsIDExLCAKLSAgICAzNSwgMjMsIDYsIDIyNiwgMjAxLCAxMSwgMzUsIDIzLCAyMjksIDIyMSwgMTEsIDM1LCAyMywgNCwgMjU0LCAxNDMsIDExLCAKLSAgICAzNSwgMjMsIDQsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDQsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCA0LCAyNDgsIDU0LCAxMSwgCi0gICAgMzUsIDIzLCA0LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCA2MywgMTEsIAotICAgIDM1LCAyMywgNCwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDQsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCA0LCAyMzQsIDIyMiwgCi0gICAgMTEsIDM1LCAyMywgNCwgMjMzLCA5OCwgMTEsIDM1LCAyMywgNCwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDQsIDIyNywgMjM3LCAKLSAgICAxMSwgMzUsIDIzLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNCwgMjI2LCAxOTksIDExLCAzNSwgMjMsIDQsIDIyNSwgCi0gICAgMTA4LCAxMSwgMzUsIDIzLCA0LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDQsIAotICAgIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA0LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgNCwgCi0gICAgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDQsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCA0LCAyMjQsIDE2MSwgMTEsIDM1LCAyMywgCi0gICAgNCwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDM1LCAyMywgMjQ1LCAxMDEsIDg3LCAKLSAgICAxMSwgMzUsIDIzLCAyMTYsIDE4MCwgODcsIDExLCAzNSwgMjMsIDIzNCwgMjIzLCA4NywgMTEsIDM1LCAyMywgMjI1LCAxMzQsIAotICAgIDg3LCAxMSwgMzUsIDIzLCAyMjMsIDM4LCA4NywgMTEsIDM1LCAyMywgMjI1LCAxMDksIDg3LCAxMSwgMzUsIDIzLCAzMiwgNiwgCi0gICAgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyNDgsIDU0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCAxMDAsIDExLCAzNSwgMjMsIDMyLCA2LCAKLSAgICAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCA2MywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTc5LCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNiwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzQsIDIyMiwgMTEsIDM1LCAyMywgMzIsIDYsIDIzMywgCi0gICAgOTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNywgMjM3LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNSwgCi0gICAgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIzLCAzNywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAKLSAgICAyMywgMzIsIDYsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCA0MSwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNCwgCi0gICAgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTAsIDExMCwgMTEsIDM1LCAKLSAgICAyMywgMzIsIDYsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDMyLCAyMjksIAotICAgIDIyMSwgMTEsIDM1LCAyMywgMzIsIDQsIDI1NCwgMTQzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUyLCAyNiwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgMTAwLCAKLSAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNjMsIDExLCAzNSwgMjMsIDMyLCAKLSAgICA0LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM0LCAyMjIsIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDMyLCAKLSAgICA0LCAyMjcsIDIzNywgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAxOTksIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEwOCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyMywgMzcsIDExLCAzNSwgMjMsIDMyLCAKLSAgICA0LCA0MCwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDQsIDIxNywgNDEsIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNCwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjQsIDE2MSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgMjAxLCAKLSAgICAxMSwgMzUsIDIzLCAzMiwgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzUsIDIzLCAzMiwgMjQ1LCAxMDEsIDg3LCAxMSwgMzUsIAotICAgIDIzLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjM0LCAyMjMsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAKLSAgICAxMzQsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjIzLCAzOCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMjUsIDEwOSwgODcsIDExLCAKLSAgICAyMywgNiwgMjQ3LCAyMjcsIDExLCAyMywgNCwgMjQ3LCAyMjcsIDExLCAyMywgMjEsIDIxMCwgODYsIDExLCAyMywgMjEsIAotICAgIDExMCwgMTEsIDIzLCAyMSwgMTA1LCAxMSwgMjMsIDIxLCAxNTgsIDExLCAyMywgMjEsIDE2MSwgMTEsIDIzLCAyMSwgMTg5LCAKLSAgICAxMSwgMjMsIDIxLCAxOTQsIDExLCAyMywgMjEsIDE5OCwgMTEsIDIzLCAyMSwgMTk1LCAxMSwgMjMsIDIxLCAyMDAsIDExLCAKLSAgICAxMzksIDIxLCAyMTAsIDg2LCAxMSwgMTM5LCAyMSwgMTEwLCAxMSwgMTM5LCAyMSwgMTA1LCAxMSwgMTM5LCAyMSwgMTU4LCAKLSAgICAxMSwgMTM5LCAyMSwgMTYxLCAxMSwgMTM5LCAyMSwgMTg5LCAxMSwgMTM5LCAyMSwgMTk0LCAxMSwgMTM5LCAyMSwgMTk4LCAKLSAgICAxMSwgMTM5LCAyMSwgMTk1LCAxMSwgMTM5LCAyMSwgMjAwLCAxMSwgMzUsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIxLCAxMTAsIAotICAgIDExLCAzNSwgMjEsIDEwNSwgMTEsIDM1LCAyMSwgMTU4LCAxMSwgMzUsIDIxLCAxNjEsIDExLCAzNSwgMjEsIDE4OSwgMTEsIAotICAgIDM1LCAyMSwgMTk0LCAxMSwgMzUsIDIxLCAxOTgsIDExLCAzNSwgMjEsIDE5NSwgMTEsIDM1LCAyMSwgMjAwLCAxMSwgMzUsIAotICAgIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDM1LCAyMywgMjEsIDExMCwgMTEsIDM1LCAyMywgMjEsIDEwNSwgMTEsIDM1LCAyMywgCi0gICAgMjEsIDE1OCwgMTEsIDM1LCAyMywgMjEsIDE2MSwgMTEsIDM1LCAyMywgMjEsIDE4OSwgMTEsIDM1LCAyMywgMjEsIDE5NCwgCi0gICAgMTEsIDM1LCAyMywgMjEsIDE5OCwgMTEsIDM1LCAyMywgMjEsIDE5NSwgMTEsIDM1LCAyMywgMjEsIDIwMCwgMTEsIDIzMCwgCi0gICAgMTM4LCAyMSwgMjEwLCA4NiwgMTEsIDIzMCwgMTM4LCAyMSwgMTEwLCAxMSwgMjMwLCAxMzgsIDIxLCAxMDUsIDExLCAyMzAsIAotICAgIDEzOCwgMjEsIDE1OCwgMTEsIDIzMCwgMTM4LCAyMSwgMTYxLCAxMSwgMjMwLCAxMzgsIDIxLCAxODksIDExLCAyMzAsIDEzOCwgCi0gICAgMjEsIDE5NCwgMTEsIDIzMCwgMTM4LCAyMSwgMTk4LCAxMSwgMjMwLCAxMzgsIDIxLCAxOTUsIDExLCAyMzAsIDEzOCwgMjEsIAotICAgIDIwMCwgMTAsIDExLCAyNTQsIDE3MCwgMTAsIDExLCAyNTIsIDU0LCAxMCwgMTEsIDIzNSwgMTIzLCAxMCwgMTEsIDI0OCwgCi0gICAgMTk1LCAxMCwgMTEsIDIxMiwgMzAsIDEwLCAxMSwgMjEwLCAxMDgsIDEwLCAxMSwgMjQyLCAzNywgMTAsIDExLCAyMTcsIDgwLCAKLSAgICAxMCwgMTEsIDIxMSwgNDMsIDEwLCAxMSwgMjM0LCAyNTAsIDEwLCAxMSwgMjMzLCAxMDIsIDEwLCAxMSwgMjMxLCA3OCwgMTAsIAotICAgIDExLCAyMjgsIDYyLCAxMCwgMTEsIDIyMSwgMTY2LCAxMCwgMTEsIDI1NCwgMTk2LCAxMCwgMTEsIDI0NCwgMTQyLCAxMCwgCi0gICAgMTEsIDIyMiwgMjYsIDEwLCAxMSwgMjI0LCA4MSwgMTAsIDExLCAyMjMsIDk1LCAxMCwgMTEsIDIyMCwgNTksIDEwLCAxMSwgCi0gICAgMjE3LCA3LCAxMCwgMTEsIDIxNiwgMTkyLCAxMCwgMTEsIDIzNCwgMTI5LCAxMCwgMTEsIDIxNiwgMjAyLCAxMCwgMTEsIAotICAgIDI0OCwgMjE2LCAxMCwgMTEsIDIxMCwgMTExLCAxMCwgMTEsIDI0MiwgMjQ0LCAxMCwgMTEsIDI0NywgMTE5LCAyNTIsIDU0LCAKLSAgICAxMCwgMTEsIDI0NywgMTE5LCAyMjgsIDYyLCAxMCwgMTEsIDI0NywgMTE5LCAyNDQsIDE0MiwgMTAsIDExLCAyNDcsIDExOSwgCi0gICAgMjI0LCA4MSwgMTAsIDExLCA2NSwgMjUyLCA1NCwgMTAsIDExLCA2NSwgMjM1LCAxMjMsIDEwLCAxMSwgNjUsIDI0MSwgMjE4LCAKLSAgICAxMCwgMTEsIDY1LCAyNDIsIDM3LCAxMCwgMTEsIDY1LCAyMTEsIDQzLCAxMCwgMTEsIDY1LCAyMzQsIDI1MCwgMTAsIDExLCAKLSAgICA2NSwgMjMzLCAxMDIsIDEwLCAxMSwgNjUsIDIzMSwgNzgsIDEwLCAxMSwgNjUsIDIyOCwgNjIsIDEwLCAxMSwgNjUsIDIyMSwgCi0gICAgMTY2LCAxMCwgMTEsIDY1LCAyNTQsIDE5NiwgMTAsIDExLCA2NSwgMjQ0LCAxNDIsIDEwLCAxMSwgNjUsIDIyMiwgMjYsIDEwLCAKLSAgICAxMSwgNjUsIDIyNCwgODEsIDEwLCAxMSwgNjUsIDIyMCwgNTksIDEwLCAxMSwgNjUsIDIxNywgNywgMTAsIDExLCA2NSwgCi0gICAgMjE2LCAxOTIsIDEwLCAxMSwgNjUsIDIzNCwgMTI5LCAxMCwgMTEsIDY1LCAyNDgsIDIxNiwgMTAsIDExLCA2NSwgMjQyLCAKLSAgICAyNDQsIDEwLCAxMSwgMjE3LCA3NiwgMjM1LCAxMjMsIDEwLCAxMSwgMjE3LCA3NiwgMjQyLCAzNywgMTAsIDExLCAyMTcsIAotICAgIDc2LCAyMTEsIDQzLCAxMCwgMTEsIDIxNywgNzYsIDIzMywgMTAyLCAxMCwgMTEsIDIxNywgNzYsIDIyOCwgNjIsIDEwLCAxMSwgCi0gICAgMjE3LCA3NiwgMjIxLCAxNjYsIDEwLCAxMSwgMjE3LCA3NiwgMjU0LCAxOTYsIDEwLCAxMSwgMjE3LCA3NiwgMjIyLCAyNiwgCi0gICAgMTAsIDExLCAyMTcsIDc2LCAyMjQsIDgxLCAxMCwgMTEsIDIxNywgNzYsIDIyMCwgNTksIDEwLCAxMSwgMjE3LCA3NiwgMjM0LCAKLSAgICAxMjksIDEwLCAxMSwgMjE3LCA3NiwgMjQ4LCAyMTYsIDEwLCAxMSwgMjE3LCA3NiwgMjQyLCAyNDQsIDEwLCAxMSwgMjE3LCAKLSAgICA3NiwgMjQ3LCAxMTksIDIyOCwgNjIsIDEwLCAxMSwgMjE3LCA3NiwgMjQ3LCAxMTksIDIyNCwgODEsIDEwLCAxMSwgMjE4LCAKLSAgICAxMTAsIDI1MiwgNTQsIDEwLCAxMSwgMjE4LCAxMTAsIDIzNSwgMTIzLCAxMCwgMTEsIDIxOCwgMTEwLCAyNDEsIDIxOCwgMTAsIAotICAgIDExLCAyMTgsIDExMCwgMjQyLCAzNywgMTAsIDExLCAyMTgsIDExMCwgMjE3LCA4MCwgMTAsIDExLCAyMTgsIDExMCwgMjExLCAKLSAgICA0MywgMTAsIDExLCAyMTgsIDExMCwgMjM0LCAyNTAsIDEwLCAxMSwgMjE4LCAxMTAsIDIzMSwgNzgsIDEwLCAxMSwgMjE4LCAKLSAgICAxMTAsIDIyOCwgNjIsIDEwLCAxMSwgMjE4LCAxMTAsIDIyMSwgMTY2LCAxMCwgMTEsIDIxOCwgMTEwLCAyNTQsIDE5NiwgMTAsIAotICAgIDExLCAyMTgsIDExMCwgMjQ0LCAxNDIsIDEwLCAxMSwgMjE4LCAxMTAsIDIyMiwgMjYsIDEwLCAxMSwgMjE4LCAxMTAsIDIyNCwgCi0gICAgODEsIDEwLCAxMSwgMjE4LCAxMTAsIDIyMCwgNTksIDEwLCAxMSwgMjE4LCAxMTAsIDIxNywgNywgMTAsIDExLCAyMTgsIAotICAgIDExMCwgMjE2LCAxOTIsIDEwLCAxMSwgMjE4LCAxMTAsIDIzNCwgMTI5LCAxMCwgMTEsIDIxOCwgMTEwLCAyNDgsIDIxNiwgCi0gICAgMTAsIDExLCAyMTgsIDExMCwgMjEwLCAxMTEsIDEwLCAxMSwgMjE4LCAxMTAsIDI0MiwgMjQ0LCAxMCwgMTEsIDIxOCwgMTEwLCAKLSAgICAyNDcsIDExOSwgMjUyLCA1NCwgMTAsIDExLCAyMTgsIDExMCwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMTEsIDIzMiwgCi0gICAgMTIyLCAyNTQsIDE3MCwgMTAsIDExLCAyMzIsIDEyMiwgMjUyLCA1NCwgMTAsIDExLCAyMzIsIDEyMiwgMjM1LCAxMjMsIDEwLCAKLSAgICAxMSwgMjMyLCAxMjIsIDI0OCwgMTk1LCAxMCwgMTEsIDIzMiwgMTIyLCAyNDEsIDIxOCwgMTAsIDExLCAyMzIsIDEyMiwgCi0gICAgMjEyLCAzMCwgMTAsIDExLCAyMzIsIDEyMiwgMjEwLCAxMDgsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MiwgMzcsIDEwLCAxMSwgCi0gICAgMjMyLCAxMjIsIDIxNywgODAsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMSwgNDMsIDEwLCAxMSwgMjMyLCAxMjIsIDIzMywgMTAyLCAKLSAgICAxMCwgMTEsIDIzMiwgMTIyLCAyMzEsIDc4LCAxMCwgMTEsIDIzMiwgMTIyLCAyMjgsIDYyLCAxMCwgMTEsIDIzMiwgMTIyLCAKLSAgICAyMjEsIDE2NiwgMTAsIDExLCAyMzIsIDEyMiwgMjU0LCAxOTYsIDEwLCAxMSwgMjMyLCAxMjIsIDI0NCwgMTQyLCAxMCwgMTEsIAotICAgIDIzMiwgMTIyLCAyMjIsIDI2LCAxMCwgMTEsIDIzMiwgMTIyLCAyMjQsIDgxLCAxMCwgMTEsIDIzMiwgMTIyLCAyMjMsIDk1LCAKLSAgICAxMCwgMTEsIDIzMiwgMTIyLCAyMjAsIDU5LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTcsIDcsIDEwLCAxMSwgMjMyLCAxMjIsIAotICAgIDIxNiwgMTkyLCAxMCwgMTEsIDIzMiwgMTIyLCAyMzQsIDEyOSwgMTAsIDExLCAyMzIsIDEyMiwgMjE2LCAyMDIsIDEwLCAxMSwgCi0gICAgMjMyLCAxMjIsIDI0OCwgMjE2LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTAsIDExMSwgMTAsIDExLCAyMzIsIDEyMiwgMjQyLCAKLSAgICAyNDQsIDEwLCAxMSwgMTM5LCAyNTIsIDU0LCAxMCwgMTEsIDEzOSwgMjM1LCAxMjMsIDEwLCAxMSwgMTM5LCAyNDgsIDE5NSwgCi0gICAgMTAsIDExLCAxMzksIDIxMiwgMzAsIDEwLCAxMSwgMTM5LCAyMTAsIDEwOCwgMTAsIDExLCAxMzksIDI0MiwgMzcsIDEwLCAKLSAgICAxMSwgMTM5LCAyMTcsIDgwLCAxMCwgMTEsIDEzOSwgMjExLCA0MywgMTAsIDExLCAxMzksIDIzMywgMTAyLCAxMCwgMTEsIAotICAgIDEzOSwgMjMxLCA3OCwgMTAsIDExLCAxMzksIDIyOCwgNjIsIDEwLCAxMSwgMTM5LCAyMjEsIDE2NiwgMTAsIDExLCAxMzksIAotICAgIDI1NCwgMTk2LCAxMCwgMTEsIDEzOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMTM5LCAyMjIsIDI2LCAxMCwgMTEsIDEzOSwgMjI0LCAKLSAgICA4MSwgMTAsIDExLCAxMzksIDIyMywgOTUsIDEwLCAxMSwgMTM5LCAyMjAsIDU5LCAxMCwgMTEsIDEzOSwgMjE3LCA3LCAxMCwgCi0gICAgMTEsIDEzOSwgMjE2LCAxOTIsIDEwLCAxMSwgMTM5LCAyMzQsIDEyOSwgMTAsIDExLCAxMzksIDIxNiwgMjAyLCAxMCwgMTEsIAotICAgIDEzOSwgMjQ4LCAyMTYsIDEwLCAxMSwgMTM5LCAyMTAsIDExMSwgMTAsIDExLCAxMzksIDI0MiwgMjQ0LCAxMCwgMTEsIDIyNiwgCi0gICAgMTY4LCA2NiwgMiwgMTIyLCAyLCAyMTcsIDQzLCAxMCwgMTEsIDIyNiwgMTY4LCAxMjIsIDIsIDI0OCwgMTk1LCAyMzEsIAotICAgIDIwNSwgODYsIDI0NSwgMjIwLCAyMTEsIDIzOSwgMjMxLCAyMDUsIDg2LCAyMTksIDI4LCAyMTEsIDIzOSwgMjMxLCAyMDUsIAotICAgIDg2LCAyMTIsIDksIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIyOCwgNTYsIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIyMywgCi0gICAgMTExLCAyNDYsIDk2LCAyMzEsIDIwNSwgODYsIDI0MiwgMTI3LCAyNDYsIDk2LCAyMzEsIDIwNSwgODYsIDcxLCAyNDYsIDk2LCAKLSAgICAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MCwgMTQxLCAyMzEsIAotICAgIDIwNSwgODYsIDEzNCwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTAsIDE0MSwgMjMxLCAKLSAgICAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTAsIDE0MSwgCi0gICAgMjMxLCAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUwLCAKLSAgICAxNDEsIDIzMSwgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTIsIAotICAgIDE1MywgMjMxLCAyMDUsIDg2LCAxMTMsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAxMzQsIDY0LCAyNTIsIDE1MywgCi0gICAgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjQ0LCA4MSwgNjQsIDI1MiwgMTUzLCAKLSAgICAyMzEsIDIwNSwgODYsIDIxOSwgMTI1LCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTIsIAotICAgIDE1MywgMjMxLCAyMDUsIDg2LCAyNDUsIDE5MywgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDIyOCwgMjAwLCA2NCwgCi0gICAgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAxMTMsIDY0LCAyNTAsIDM0LCAKLSAgICAyMzEsIDIwNSwgODYsIDEzNCwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MCwgMzQsIDIzMSwgCi0gICAgMjA1LCA4NiwgMjQ0LCA4MSwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTAsIDM0LCAyMzEsIAotICAgIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyNDUsIDE5MywgNjQsIDI1MCwgMzQsIDIzMSwgCi0gICAgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDIyNSwgMjUsIDIzMSwgMjA1LCA4NiwgMjI2LCAKLSAgICAxNTYsIDIzMSwgMjA1LCA4NiwgMjUyLCAxNTQsIDIzMSwgMjA1LCA4NiwgMjUwLCA3MCwgMjMxLCAyMDUsIDg2LCAyMTgsIAotICAgIDIzOSwgMjMxLCAyMDUsIDg2LCAyMTgsIDM5LCAyMzEsIDIwNSwgODYsIDI1MywgMTc5LCAyMzEsIDIwNSwgODYsIDIxMSwgCi0gICAgMjMyLCAyMzEsIDIwNSwgODYsIDIzNSwgNjIsIDIzMSwgMjA1LCA4NiwgMjUyLCAxODQsIDEzMSwgODYsIDIwMywgMjUyLCAKLSAgICAxODQsIDEzMSwgODYsIDI0MSwgNDMsIDEzMSwgODYsIDI0MSwgNDIsIDEzMSwgODYsIDI0MSwgNDEsIDEzMSwgODYsIDI0MSwgCi0gICAgNDAsIDEzMSwgODYsIDI0MSwgMzksIDEzMSwgODYsIDI0MSwgMzgsIDEzMSwgODYsIDI0MSwgMzcsIDEzMSwgODYsIDI0MSwgCi0gICAgMzYsIDEzMSwgODYsIDI0MSwgMzUsIDEzMSwgODYsIDI0MSwgMzQsIDEzMSwgODYsIDI0MSwgMzMsIDEzMSwgODYsIDI0MSwgCi0gICAgMzIsIDEzMSwgODYsIDI0MSwgMzEsIDEzMSwgODYsIDI0MSwgMzAsIDEzMSwgODYsIDI0MSwgMjksIDEzMSwgODYsIDI0MSwgCi0gICAgMjgsIDEzMSwgODYsIDI0MSwgMjcsIDEzMSwgODYsIDI0MSwgMjYsIDEzMSwgODYsIDI0MSwgMjUsIDEzMSwgODYsIDI0MSwgCi0gICAgMjQsIDEzMSwgODYsIDI0MSwgMjMsIDEzMSwgODYsIDI0MSwgMjIsIDEzMSwgODYsIDI0MSwgMjEsIDEzMSwgODYsIDI0MSwgCi0gICAgMjAsIDEzMSwgODYsIDI0MSwgMTksIDEzMSwgODYsIDI0MSwgMTgsIDEzMSwgODYsIDI0MSwgMTcsIDEzMSwgODYsIDI0MSwgCi0gICAgMTYsIDEzMSwgODYsIDI0MSwgMTUsIDEzMSwgODYsIDI0MSwgMTQsIDEzMSwgODYsIDI0MSwgMTMsIDEzMSwgODYsIDI0MSwgCi0gICAgMTIsIDEzMSwgODYsIDI0MSwgMTEsIDEzMSwgODYsIDI0MSwgMTAsIDEzMSwgODYsIDI0MSwgOSwgMTMxLCA4NiwgMjQxLCA4LCAKLSAgICAxMzEsIDg2LCAyNDEsIDcsIDEzMSwgODYsIDI0MSwgNiwgMTMxLCA4NiwgMjQxLCA1LCAxMzEsIDg2LCAyNDEsIDQsIDEzMSwgCi0gICAgODYsIDI0MSwgMywgMTMxLCA4NiwgMjQxLCAyLCAxMzEsIDg2LCAyNDEsIDEsIDEzMSwgODYsIDI0MSwgMCwgMTMxLCA4NiwgCi0gICAgMjQwLCAyNTUsIDEzMSwgODYsIDI0MCwgMjU0LCAxMzEsIDg2LCAyNDAsIDI1MywgMTMxLCA4NiwgMjQwLCAyNTIsIDEzMSwgCi0gICAgODYsIDI0MCwgMjUxLCAxMzEsIDg2LCA2NywgMjUyLCAxODQsIDEzMSwgODYsIDIxMywgMjM4LCAxMzEsIDg2LCAyMTMsIAotICAgIDIzNywgMTMxLCA4NiwgMjEzLCAyMzYsIDEzMSwgODYsIDIxMywgMjM1LCAxMzEsIDg2LCAyMTMsIDIzNCwgMTMxLCA4NiwgCi0gICAgMjEzLCAyMzMsIDEzMSwgODYsIDIxMywgMjMyLCAxMzEsIDg2LCAyMTMsIDIzMSwgMTMxLCA4NiwgMjEzLCAyMzAsIDEzMSwgCi0gICAgODYsIDIxMywgMjI5LCAxMzEsIDg2LCAyMTMsIDIyOCwgMTMxLCA4NiwgMjEzLCAyMjcsIDEzMSwgODYsIDIxMywgMjI2LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIyNSwgMTMxLCA4NiwgMjEzLCAyMjQsIDEzMSwgODYsIDIxMywgMjIzLCAxMzEsIDg2LCAyMTMsIAotICAgIDIyMiwgMTMxLCA4NiwgMjEzLCAyMjEsIDEzMSwgODYsIDIxMywgMjIwLCAxMzEsIDg2LCAyMTMsIDIxOSwgMTMxLCA4NiwgCi0gICAgMjEzLCAyMTgsIDEzMSwgODYsIDIxMywgMjE3LCAxMzEsIDg2LCAyMTMsIDIxNiwgMTMxLCA4NiwgMjEzLCAyMTUsIDEzMSwgCi0gICAgODYsIDIxMywgMjE0LCAxMzEsIDg2LCAyMTMsIDIxMywgMTMxLCA4NiwgMjEzLCAyMTIsIDEzMSwgODYsIDIxMywgMjExLCAKLSAgICAxMzEsIDg2LCAyMTMsIDIxMCwgMTMxLCA4NiwgMjEzLCAyMDksIDEzMSwgODYsIDIxMywgMjA4LCAxMzEsIDg2LCAyMTMsIAotICAgIDIwNywgMTMxLCA4NiwgMjEzLCAyMDYsIDEzMSwgODYsIDIxMywgMjA1LCAxMzEsIDg2LCAyMTMsIDIwNCwgMTMxLCA4NiwgCi0gICAgMjEzLCAyMDMsIDEzMSwgODYsIDIxMywgMjAyLCAxMzEsIDg2LCAyMTMsIDIwMSwgMTMxLCA4NiwgMjEzLCAyMDAsIDEzMSwgCi0gICAgODYsIDIxMywgMTk5LCAxMzEsIDg2LCAyMTMsIDE5OCwgMTMxLCA4NiwgMjEzLCAxOTcsIDEzMSwgODYsIDIxMywgMTk2LCAKLSAgICAxMzEsIDg2LCAyMTMsIDE5NSwgMTMxLCA4NiwgMjEzLCAxOTQsIDEzMSwgODYsIDIxMywgMTkzLCAxMzEsIDg2LCAyMTMsIAotICAgIDE5MiwgMTMxLCA4NiwgMjEzLCAxOTEsIDEzMSwgODYsIDIxMywgMTkwLCAyMjUsIDMzLCAyNTAsIDI0MywgMjUyLCAxODQsIAotICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjE5LCAKLSAgICAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgCi0gICAgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgODEsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE5LCAKLSAgICAxMjUsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIAotICAgIDI0MywgMjQ1LCAxOTMsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIDY0LCAyMTksIDE1LCAKLSAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM1LCAxMzksIAotICAgIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKLSAgICAyMjQsIDE1LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAKLSAgICAyNTAsIDI0MywgMjU1LCA5LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyNDEsIDIyNSwgCi0gICAgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAxMSwgNjQsIAotICAgIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgCi0gICAgMjE5LCAxMjUsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjQxLCAyMjUsIDIyNSwgCi0gICAgMzMsIDI1MCwgMjQzLCAyNDUsIDE5MywgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIDY0LCAKLSAgICAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIxNiwgMjQ4LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKLSAgICAyMzUsIDEzOSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDI0MSwgMjI1LCAyMjUsIAotICAgIDMzLCAyNTAsIDI0MywgMjI0LCAxNSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDI0MSwgCi0gICAgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjU1LCA5LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAKLSAgICAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAKLSAgICAxMSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIAotICAgIDI0MywgMjE5LCAxMjUsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjQ3LCAyNDcsIAotICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDUsIDE5MywgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIAotICAgIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIxNiwgMjQ4LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgCi0gICAgMjQzLCAyMzUsIDEzOSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDI0NywgMjQ3LCAKLSAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjI0LCAxNSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIAotICAgIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgODUsIDIzNSwgNjIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAKLSAgICAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCAKLSAgICA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgCi0gICAgMjQzLCAyNDQsIDgxLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTksIDEyNSwgNjQsIDI0OSwgMjQyLCAKLSAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCAKLSAgICA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIAotICAgIDI0MywgMjE2LCAyNDgsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNSwgMTM5LCA2NCwgMjQ5LCAyNDIsIAotICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgCi0gICAgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAKLSAgICA3MSwgMjM1LCA2MiwgMjEsIDIxMCwgODcsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIxMCwgODcsIDI0OSwgMjE5LCAyMSwgCi0gICAgMTIzLCAyNDksIDIxOSwgMjEsIDExMywgMjQ5LCAyMTksIDIxLCAxMzQsIDI0OSwgMjE5LCAyMSwgMjQ0LCAxMSwgMjQ5LCAKLSAgICAyMTksIDIxLCAyNDQsIDgxLCAyNDksIDIxOSwgMjEsIDIxOSwgMTI1LCAyNDksIDIxOSwgMjEsIDIyMCwgMTIyLCAyNDksIAotICAgIDIxOSwgMjEsIDI0NSwgMTkzLCAyNDksIDIxOSwgMjEsIDIyOCwgMjAwLCAyNDksIDIxOSwgODgsIDcsIDYsIDEsIDYxLCA4OCwgCi0gICAgNywgNiwgMSwgMjUzLCAxNTgsIDg4LCA3LCA2LCAxLCAyNTEsIDY2LCA4OCwgNywgNiwgMSwgMjQ5LCA2MCwgODgsIDcsIDYsIAotICAgIDEsIDc1LCA4OCwgNywgNiwgMSwgMjQ1LCA2LCA4OCwgNywgNiwgMSwgMjQzLCAyMDIsIDg4LCA3LCA2LCAxLCAyNDIsIDYwLCAKLSAgICA4OCwgNywgNiwgMSwgNzMsIDg4LCA3LCA2LCAxLCAyMzUsIDE0NCwgODgsIDcsIDYsIDEsIDIzNSwgMjMsIDg4LCA3LCA2LCAKLSAgICAxLCAxNTYsIDg4LCA3LCA2LCAxLCAxOTMsIDg4LCA3LCA2LCAxLCAyMzAsIDI1LCA4OCwgNywgNiwgMSwgNzYsIDg4LCA3LCAKLSAgICA2LCAxLCAyMjYsIDEwNSwgODgsIDcsIDYsIDEsIDIyNCwgOTYsIDg4LCA3LCA2LCAxLCAxNTMsIDg4LCA3LCA2LCAxLCAyMjIsIAotICAgIDkxLCA4OCwgNywgNiwgMSwgMjE3LCAxNTIsIDg4LCA3LCA2LCAxLCA3MCwgODgsIDcsIDYsIDEsIDIxNCwgMTA1LCA4OCwgNywgCi0gICAgNiwgMSwgMjEyLCA5OCwgODgsIDcsIDYsIDEsIDIxMSwgMTc4LCA4OCwgNywgNiwgMSwgMjExLCAxMTcsIDg4LCA3LCA2LCAxLCAKLSAgICAyMTAsIDE1OSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgNywgNiwgMSwgMjIyLCA5MSwgMzcsIDMyLCA3LCA2LCAxLCAKLSAgICAyNTEsIDY2LCAzNywgMzIsIDcsIDYsIDEsIDE1MywgMzcsIDI1MCwgMTkxLCAzNywgMjExLCAxODAsIDkyLCA3LCA2LCAxLCAKLSAgICA2MSwgOTIsIDcsIDYsIDEsIDI1MywgMTU4LCA5MiwgNywgNiwgMSwgMjUxLCA2NiwgOTIsIDcsIDYsIDEsIDI0OSwgNjAsIAotICAgIDkyLCA3LCA2LCAxLCA3NSwgOTIsIDcsIDYsIDEsIDI0NSwgNiwgOTIsIDcsIDYsIDEsIDI0MywgMjAyLCA5MiwgNywgNiwgMSwgCi0gICAgMjQyLCA2MCwgOTIsIDcsIDYsIDEsIDczLCA5MiwgNywgNiwgMSwgMjM1LCAxNDQsIDkyLCA3LCA2LCAxLCAyMzUsIDIzLCAKLSAgICA5MiwgNywgNiwgMSwgMTU2LCA5MiwgNywgNiwgMSwgMTkzLCA5MiwgNywgNiwgMSwgMjMwLCAyNSwgOTIsIDcsIDYsIDEsIAotICAgIDc2LCA5MiwgNywgNiwgMSwgMjI2LCAxMDUsIDkyLCA3LCA2LCAxLCAyMjQsIDk2LCA5MiwgNywgNiwgMSwgMTUzLCA5MiwgNywgCi0gICAgNiwgMSwgMjIyLCA5MSwgOTIsIDcsIDYsIDEsIDIxNywgMTUyLCA5MiwgNywgNiwgMSwgNzAsIDkyLCA3LCA2LCAxLCAyMTQsIAotICAgIDEwNSwgOTIsIDcsIDYsIDEsIDIxMiwgOTgsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTE3LCAKLSAgICA5MiwgNywgNiwgMSwgMjEwLCAxNTksIDkyLCAyNDAsIDIwMSwgOTIsIDIzMCwgNDksIDkyLCAyMjEsIDE4MywgOTIsIDIxOCwgCi0gICAgMjI2LCA5MiwgMjI0LCAyMTgsIDkyLCAyMTIsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCA2MSwgMTUyLCAzNywgNywgNiwgMSwgCi0gICAgMjUzLCAxNTgsIDE1MiwgMzcsIDcsIDYsIDEsIDI1MSwgNjYsIDE1MiwgMzcsIDcsIDYsIDEsIDI0OSwgNjAsIDE1MiwgMzcsIAotICAgIDcsIDYsIDEsIDc1LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDUsIDYsIDE1MiwgMzcsIDcsIDYsIDEsIDI0MywgMjAyLCAxNTIsIAotICAgIDM3LCA3LCA2LCAxLCAyNDIsIDYwLCAxNTIsIDM3LCA3LCA2LCAxLCA3MywgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAxNDQsIAotICAgIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMjMsIDE1MiwgMzcsIDcsIDYsIDEsIDE1NiwgMTUyLCAzNywgNywgNiwgMSwgMTkzLCAKLSAgICAxNTIsIDM3LCA3LCA2LCAxLCAyMzAsIDI1LCAxNTIsIDM3LCA3LCA2LCAxLCA3NiwgMTUyLCAzNywgNywgNiwgMSwgMjI2LCAKLSAgICAxMDUsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNCwgOTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE1MywgMTUyLCAzNywgNywgNiwgMSwgCi0gICAgMjIyLCA5MSwgMTUyLCAzNywgNywgNiwgMSwgMjE3LCAxNTIsIDE1MiwgMzcsIDcsIDYsIDEsIDcwLCAxNTIsIDM3LCA3LCA2LCAKLSAgICAxLCAyMTQsIDEwNSwgMTUyLCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMTUyLCAzNywgNywgNiwgMSwgMjExLCAxNzgsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDIxMSwgMTE3LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMjIzLCAxNTcsIDIzMSwgOTcsIDUwLCAKLSAgICAyMjMsIDE1NywgMjMxLCA5NCwgNTAsIDE1MiwgOTIsIDcsIDYsIDEsIDYxLCAxNTIsIDkyLCA3LCA2LCAxLCAyNTMsIDE1OCwgCi0gICAgMTUyLCA5MiwgNywgNiwgMSwgMjUxLCA2NiwgMTUyLCA5MiwgNywgNiwgMSwgMjQ5LCA2MCwgMTUyLCA5MiwgNywgNiwgMSwgCi0gICAgNzUsIDE1MiwgOTIsIDcsIDYsIDEsIDI0NSwgNiwgMTUyLCA5MiwgNywgNiwgMSwgMjQzLCAyMDIsIDE1MiwgOTIsIDcsIDYsIAotICAgIDEsIDI0MiwgNjAsIDE1MiwgOTIsIDcsIDYsIDEsIDczLCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIDE0NCwgMTUyLCA5MiwgNywgCi0gICAgNiwgMSwgMjM1LCAyMywgMTUyLCA5MiwgNywgNiwgMSwgMTU2LCAxNTIsIDkyLCA3LCA2LCAxLCAxOTMsIDE1MiwgOTIsIDcsIAotICAgIDYsIDEsIDIzMCwgMjUsIDE1MiwgOTIsIDcsIDYsIDEsIDc2LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwNSwgMTUyLCA5MiwgCi0gICAgNywgNiwgMSwgMjI0LCA5NiwgMTUyLCA5MiwgNywgNiwgMSwgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCAyMjIsIDkxLCAxNTIsIAotICAgIDkyLCA3LCA2LCAxLCAyMTcsIDE1MiwgMTUyLCA5MiwgNywgNiwgMSwgNzAsIDE1MiwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCAKLSAgICAxNTIsIDkyLCA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCA5MiwgNywgNiwgMSwgCi0gICAgMjExLCAxMTcsIDE1MiwgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCAyNDksIDEyOCwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAKLSAgICAxMDUsIDE1MiwgOTIsIDI0MCwgMTEzLCAxNTIsIDkyLCAxOTAsIDE1MiwgOTIsIDIwNiwgMTUyLCA5MiwgMjU1LCAyNSwgCi0gICAgMTUyLCA5MiwgMjEyLCAyMywgNDIsIDI0NywgMTY0LCA5MiwgMjUwLCAyMywgOTIsIDI0OSwgMTcwLCA5MiwgMjQzLCAyNTIsIAotICAgIDkyLCAyNDAsIDEwNSwgOTIsIDIyOSwgODYsIDkyLCAyMjksIDc5LCA5MiwgMjI2LCAyMTQsIDkyLCAyMTksIDM1LCA5MiwgCi0gICAgMTIwLCAyLCAyNDUsIDMxLCA3OCwgOTIsIDIxMywgMTE5LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA2MSwgMjIzLCAKLSAgICAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjUzLCAxNTgsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI1MSwgNjYsIDIyMywgCi0gICAgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI0OSwgNjAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDc1LCAyMjMsIDEwMywgCi0gICAgMjM1LCAyMzksIDE2LCAxLCAyNDUsIDYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI0MywgMjAyLCAyMjMsIDEwMywgCi0gICAgMjM1LCAyMzksIDE2LCAxLCAyNDIsIDYwLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3MywgMjIzLCAxMDMsIDIzNSwgCi0gICAgMjM5LCAxNiwgMSwgMjM1LCAxNDQsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIzNSwgMjMsIDIyMywgMTAzLCAyMzUsIAotICAgIDIzOSwgMTYsIDEsIDE1NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMTkzLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAKLSAgICAxLCAyMzAsIDI1LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgCi0gICAgMjI2LCAxMDUsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIyNCwgOTYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIAotICAgIDE1MywgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjIyLCA5MSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjE3LCAKLSAgICAxNTIsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDcwLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTQsIDEwNSwgCi0gICAgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjEyLCA5OCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjExLCAxNzgsIAotICAgIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMSwgMTE3LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTAsIDE1OSwgCi0gICAgNDIsIDE0MSwgMjQxLCA2MywgOTIsIDU2LCAyMzQsIDE4LCA5MiwgNTYsIDIwNiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUwLCAKLSAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MiwgOTIsIDU2LCAyNDgsIDkwLCA5MiwgCi0gICAgOSwgMjE0LCAxNzcsIDIzOCwgNjksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI4LCAKLSAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2OCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAotICAgIDQyLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NCwgOTIsIDksIDIxNCwgMTc3LCAKLSAgICAyMzgsIDY1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NywgOTIsIDksIDIxNCwgCi0gICAgMTc3LCAyMzgsIDQzLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyOSwgOTIsIDksIAotICAgIDIxNCwgMTc3LCAyMzgsIDM0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjcsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NywgCi0gICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzcsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKLSAgICA0OCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNzIsIDkyLCA5LCAyMTQsIDE3NywgCi0gICAgMjM4LCA3MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTIsIDkyLCA5LCAyMTQsIAotICAgIDE3NywgMjM4LCA3MCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDcsIDkyLCA5LCAKLSAgICAyMTQsIDE3NywgMjM4LCAyNiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzEsIAotICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCi0gICAgMzgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0MCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQxLCA5MiwgOSwgMjE0LCAxNzcsIAotICAgIDIzOCwgMzMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU4LCAyMTYsIDYsIDIyMCwgCi0gICAgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCAzOSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzEsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDY5LCAyMTYsIDYsIAotICAgIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA1MywgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgCi0gICAgMjE0LCAxNzcsIDIzOCwgMzYsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDQ5LCAyMTYsIAotICAgIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCAzMiwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgCi0gICAgMjE0LCAxNzcsIDIzOCwgNjMsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDQ1LCAzNywgCi0gICAgMTU0LCAyNTQsIDI0NSwgMzcsIDE1NCwgMjU1LCAxMiwgMjQ5LCA3MSwgMjQ0LCA0MiwgMjUwLCAwLCAyMTQsIDE5NCwgMjI4LCAKLSAgICAyMTMsIDIsIDIxOCwgMTUzLCAyMTgsIDMzLCAxMTcsIDIzMCwgMTE0LCAyMTgsIDMyLCAyNTAsIDI2LCAyNTMsIDIwNywgCi0gICAgMjQ2LCA1NCwgMjE4LCAzMSwgMTE3LCAyNTEsIDExOCwgMjIzLCAxNTgsIDI1MSwgMTQwLCAyNTMsIDIwNywgMjI4LCAyMTIsIAotICAgIDIxMiwgNDEsIDIxMiwgMzUsIDIxMywgMTMxLCAyMzAsIDE5NSwgMjEyLCAyNSwgMjQ1LCAyMjQsIDI0MiwgMTgxLCAyNDUsIAotICAgIDQ1LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI1NCwgMTI4LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI1MywgMjI1LCAyNDIsIDE4MSwgCi0gICAgMiwgMjMxLCA1MSwgMTY2LCAyMzAsIDEyOSwgODcsIDIxMiwgMjcsIDI0OSwgMTM3LCAyMzAsIDEyOSwgODcsIDI0NCwgOTIsIAotICAgIDIyNCwgMjIsIDIzMCwgMTI5LCA4NywgMjEyLCAyNywgMjQyLCAyMTAsIDIzMCwgMTI5LCA4NywgMjQzLCAyMjksIDIzMCwgCi0gICAgMTI5LCA4NywgMjEyLCA1MiwgMjQyLCAyMTAsIDIzMCwgMTI5LCA4NywgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAxMjksIDg3LCAKLSAgICAyMTIsIDUyLCAyNDksIDEzNywgMjMwLCAxMjksIDg3LCAyNDksIDEzNywgMjMwLCAxMjgsIDE2NiwgMjMwLCAxMjksIDIsIAotICAgIDI0NCwgMTkwLCAyNDQsIDkyLCAyMjQsIDIyLCAyMzAsIDEyOSwgMiwgMjQ0LCAxOTAsIDIzMywgODAsIDIyNCwgMjIsIDIzMCwgCi0gICAgMTI5LCAyLCAyNDQsIDE5MCwgMjQzLCAyMjksIDIzMCwgMTI5LCAyLCAyNDQsIDE5MCwgMjE4LCAzOCwgMiwgMjQ0LCAxOTAsIAotICAgIDI0MiwgMTc5LCAyMTgsIDE1NiwgMjE5LCAyNTUsIDIxOCwgMTU2LCAyNTAsIDExNiwgMjIxLCAxNjgsIDI0NSwgMzksIDIxNSwgCi0gICAgMjM1LCAyNDgsIDg0LCAyMTUsIDIzNSwgMjI2LCA1OSwgMjE1LCAyMzUsIDI1MSwgMjcsIDIxNSwgMTA5LCAyNTAsIDExOCwgCi0gICAgMjUxLCAyMTAsIDIyMiwgMTkxLCAyNDEsIDE3OSwgMjE4LCAzNiwgMjUxLCAyMTAsIDI0NSwgMjI4LCA2NCwgMjMxLCAxOTQsIAotICAgIDI0NSwgMjI4LCA2NCwgMjIzLCAzMSwgMjQxLCAyMDQsIDI0NCwgMTEsIDIzMywgNTQsIDI0OSwgMjQ2LCAyMzEsIDE3MCwgCi0gICAgMjMzLCA1MywgMjQ0LCAxNzYsIDIzMywgNTMsIDIzMywgNTQsIDI0NCwgNDcsIDIzNiwgMCwgMjExLCAyMzksIDIzMCwgNTgsIAotICAgIDIxNiwgMzQsIDI1MywgMTkxLCAyNDIsIDE0MywgMjMxLCA2NywgMjEyLCAzOSwgMjE3LCA1NywgMjMzLCAyNiwgMjUyLCAKLSAgICAxNDksIDIyNSwgNjIsIDIyMywgMTExLCAyNTQsIDU0LCAyNDIsIDEyNywgMjU0LCA1NCwgMjI1LCAyMTcsIDIyNSwgMjE4LCAKLSAgICAyNTAsIDExOSwgMjE4LCAxMTQsIDI0MiwgMjMsIDIxOSwgOTAsIDY0LCAyMjUsIDQ0LCAyMzEsIDg3LCAyMjYsIDE5NywgCi0gICAgMjUxLCAxOTQsIDIyNCwgMjI5LCAyMzMsIDM2LCAyMjMsIDMyLCAyNDksIDE0MiwgMjIzLCAzMiwgMjUyLCAxNTksIDI0OSwgCi0gICAgMTczLCAyMjMsIDMxLCAyNDksIDk1LCAyMiwgMjIzLCAzMSwgMjE4LCAxNDEsIDI1MSwgMTY3LCAyMTksIDE0LCAyNTEsIAotICAgIDE1MSwgMjQzLCAyNTEsIDI0MywgMjQ3LCAyMjIsIDIwNywgMjE3LCAyNDYsIDIyNCwgMjMxLCAyNDgsIDE3NSwgMjI2LCAKLSAgICAyMzYsIDIxOCwgNywgMjQzLCAyNDgsIDIxOSwgMjMwLCAyNDQsIDkxLCAyNTEsIDIxLCAyLCAyMTcsIDIzOSwgMjQ4LCAzNSwgCi0gICAgMjE5LCA1MiwgMjQwLCAxMTIsIDI0OSwgMTQxLCAyMjAsIDcwLCAyNDAsIDExMSwgMjQwLCAxMTIsIDI0OSwgMTQxLCAyNDYsIAotICAgIDEwOCwgMjQ5LCAxNzIsIDI1MCwgODQsIDEzMCwgMjUwLCAyNTQsIDIzMiwgMTQxLCAyNDksIDg4LCAyNDEsIDU1LCAyMjQsIAotICAgIDIzMywgMjE5LCAyNDAsIDI1MiwgMzYsIDI1MSwgMTYzLCAyMjQsIDIzNCwgNjQsIDI0NCwgMzMsIDI0OSwgMTcxLCAyNDQsIAotICAgIDI0LCAyMiwgMjM0LCAzMiwgMjE3LCAxOSwgMjExLCAyMzAsIDI0MiwgMTMsIDIyMiwgMTIsIDI1MSwgMTc3LCAyMiwgMjQ5LCAKLSAgICAxMDIsIDIxMSwgMjM3LCAyNDIsIDE4NCwgMjQ5LCAyMzUsIDI0MiwgMTg0LCAyMTUsIDE5MywgMjQ2LCA5MCwgMjUyLCA2MiwgCi0gICAgMjMwLCA5MywgMjUwLCA3LCAyNTIsIDYyLCAyMzAsIDkyLCAyNTIsIDE4NywgMjUxLCAxNzYsIDIyMywgMzMsIDIxMSwgMjAxLCAKLSAgICAyMjQsIDE5NSwgMjUxLCAyMzUsIDI1MSwgMjAsIDIzNSwgMTM4LCAyNTAsIDc3LCAyMTUsIDIzNSwgMjQ0LCAxNjIsIDI1MCwgCi0gICAgNzYsIDI0NCwgOTQsIDI0NCwgOTUsIDIxOSwgMTIsIDI1MiwgMTU4LCAyMjUsIDI1MCwgMjI0LCAyNDQsIDI0OSwgMjA0LCAKLSAgICAyNTIsIDE1OSwgMjE3LCA1OSwgMjE1LCAyMzUsIDI0OSwgMTI4LCAyNDQsIDY3LCAyMjUsIDYzLCAyNDgsIDgxLCAyMzUsIAotICAgIDEzMSwgMjQ3LCAxMzEsIDI1MCwgMjMyLCAyMTgsIDExMywgMjExLCAyNDAsIDI1MCwgOTgsIDIzMCwgMTI5LCAyMTMsIDE2NCwgCi0gICAgMjUwLCAxNjIsIDIyMSwgMTk5LCAyMjEsIDIyNCwgMjQyLCAxNDgsIDI1MCwgMjUxLCAyNTAsIDIzMywgMjQwLCAyNDUsIAotICAgIDI0NCwgMTMwLCAyMTIsIDAsIDIyMiwgMjAwLCAyNDksIDIzNiwgMjQ0LCA4NiwgMjI1LCAyLCAyMiwgMjQ0LCA5MCwgMjMwLCAKLSAgICAyMjcsIDIzMCwgMTA4LCAyNTEsIDEwLCAyNTAsIDM5LCAyNDEsIDIzMiwgMjUzLCAyNDEsIDIyNiwgNjIsIDIxNiwgMTQsIAotICAgIDI0MSwgMjUxLCAyNTAsIDI5LCAyMTYsIDI0MiwgMjE2LCAxMTMsIDI1MCwgMjAsIDI1MSwgMjAyLCAyMjUsIDE3NywgMjUzLCAKLSAgICAyNDAsIDIxMywgMTcyLCAyNDMsIDExMCwgMjQ3LCAxOTcsIDI0MSwgMTU2LCAyMTksIDg0LCAyMzEsIDIzNCwgMjUxLCAyNDUsIAotICAgIDI0MywgMTExLCAyNDcsIDI0MCwgMjUxLCAxNjYsIDI0NCwgNTIsIDIyNSwgMzMsIDI1MCwgMjQxLCAyOCwgMjI4LCA0NywgCi0gICAgMjMwLCA4NSwgMjgsIDIyOCwgNDIsIDIyMSwgMjEyLCAyNDIsIDk5LCAyOCwgMjM0LCAxMzcsIDIxNSwgMTkwLCAyMTMsIAotICAgIDE1NCwgMjgsIDIyMSwgMTkyLCAyMjIsIDEyNCwgMjIwLCAxMSwgMiwgMjIxLCAyMjcsIDIxNiwgMjQ0LCAyMjMsIDE3OCwgCi0gICAgMjIsIDI1MiwgMTU5LCAyMTksIDEwNSwgMjIsIDIxOSwgMTA1LCAyNTEsIDE4NywgMjUyLCAxMjMsIDIyLCAyNDEsIDQ5LCAKLSAgICAyNTAsIDEyMCwgMjQ0LCA3MywgMjE5LCA2MywgMjIyLCAxMjUsIDIxOCwgMTIsIDIxNSwgMTk0LCAyNDAsIDI0NiwgMjIzLCAKLSAgICAxNzksIDI1NCwgMTI5LCAyNDQsIDMxLCAyMjIsIDEzNiwgMjQ0LCAzMSwgMjE3LCAyNDEsIDI0MCwgMjM1LCAyNTEsIDExOSwgCi0gICAgMjQwLCAyMzUsIDIsIDI0MywgOTQsIDIyNiwgMjI5LCAyNTEsIDExOSwgMjM1LCAxMzEsIDIyNCwgMjM5LCAyMjYsIDIyOCwgCi0gICAgMjQ1LCA0NCwgMjI0LCAyMzksIDIyNiwgMjI4LCAyNDAsIDI0NCwgMjUyLCAxNDUsIDI1MywgMTgxLCAyMTYsIDI1MiwgMjMxLCAKLSAgICAyMzQsIDI0MCwgMjQwLCAyMzIsIDExMSwgMjQwLCAyNDAsIDI0OSwgMTc2LCAyMTgsIDEyNSwgMjIxLCAxOTgsIDI0OCwgNDMsIAotICAgIDIxOCwgMTI1LCAyNDQsIDE4MCwgMjM1LCAxNDksIDIzMywgODksIDIzNSwgMTMxLCAyNTAsIDIyNiwgMjQ1LCA0NCwgMjUwLCAKLSAgICAyMjYsIDIyMywgMTQxLCAyMzAsIDExMiwgMjI2LCAxMTQsIDIxMiwgNDEsIDI1MSwgMTIzLCAyNDksIDE0NSwgMjE2LCAxMDYsIAotICAgIDIzMywgMTgsIDIyMywgMTgwLCAyNTAsIDIyNCwgMjQ2LCA5NiwgMjQ5LCAxMzUsIDIxMiwgMywgMjE5LCA3MCwgMjE5LCA2OCwgCi0gICAgMjQwLCAyNDUsIDIyMywgMTUzLCAyNDIsIDE3MCwgMjIwLCA1NywgMjMwLCAxNDUsIDIyMiwgMTk0LCAyNTAsIDEwOCwgMjQ3LCAKLSAgICAxMzYsIDIyNSwgNzMsIDI1MSwgMjAzLCAyNDUsIDE2OSwgMjI2LCAyMzgsIDIxOCwgMjUyLCAyMjAsIDUyLCAyNTEsIDEyMiwgCi0gICAgMjU0LCA5MiwgMjQxLCA1NCwgMjMzLCAxMjEsIDI1MiwgNjAsIDI0NCwgOTAsIDIxNSwgMTkzLCAyNDQsIDkwLCAyNTEsIAotICAgIDIwOSwgMjE1LCA5MSwgMjQxLCAyNDksIDI1MCwgMTA5LCAyNTIsIDE4NywgMjUwLCAxMDksIDI0MywgMjQyLCAyNTIsIDE4NywgCi0gICAgMjUwLCAxMDksIDI1MSwgMjM3LCAyMjUsIDE5NSwgMjM0LCAyNiwgMjI0LCAyNDgsIDI0NiwgODcsIDI1MSwgMTEsIDI1MiwgCi0gICAgMTc3LCAyNTEsIDExLCAyNDcsIDEzMCwgMjMwLCAxMTMsIDI0NCwgMTkwLCAyNDksIDE0NiwgMjQ0LCAxOTAsIDIxNiwgMTA3LCAKLSAgICAyNDQsIDE5MCwgMjIzLCAxODEsIDI0NCwgMTkwLCAyNTAsIDIyNSwgMjQ0LCAxOTAsIDI0NiwgOTcsIDI0NCwgMTkwLCAyMTgsIAotICAgIDI0MSwgMjEyLCAzLCAyNDAsIDI0NiwgMjQ0LCAxOTAsIDIzMCwgMTQ2LCAyNDQsIDE5MCwgMjQ3LCAxMzcsIDI0NCwgMTkwLCAKLSAgICAyMjUsIDc0LCAyNDQsIDE5MCwgMjQzLCAyNDUsIDI0NCwgMTkwLCAyNDIsIDIwLCAyNDQsIDE5MCwgMjExLCAyMjQsIDI0NCwgCi0gICAgMTkwLCAyNTIsIDcxLCAyNDQsIDE5MCwgMjI2LCA0NSwgMjQ0LCAxOTAsIDIyNSwgNzQsIDIyOCwgNTMsIDIyNSwgMjMyLCAKLSAgICAyMjQsIDE4NiwgMjQ1LCAxMywgMjQ1LCAyMjcsIDIyOCwgNTMsIDIzMCwgMTEwLCAyMTYsIDE5LCA3MSwgMTIwLCAyMjUsIDcsIAotICAgIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDEyNCwgMjI1LCA3LCAyNTIsIDE4MiwgMjM1LCAyNDIsIDcxLCA0MywgMjI1LCA3LCAKLSAgICAyNTIsIDE4MiwgMjM1LCAyNDIsIDcxLCA0NCwgMjI1LCA3LCAyNTIsIDE4MiwgMjM1LCAyNDIsIDI0NCwgODQsIDI0MiwgMTYsIAotICAgIDUwLCAyMTIsIDMzLCAyNDIsIDE2LCA1MCwgMjI2LCAyMTUsIDI0MiwgMTYsIDUwLCAyMTYsIDEzNSwgMTIwLCA1MCwgMjE2LCAKLSAgICAxMzUsIDEyNCwgNTAsIDI1MCwgMTksIDI0MiwgMTEsIDUwLCAyMDQsIDI0MiwgMTEsIDUwLCAyNDksIDEyMywgMjExLCAyMjAsIAotICAgIDI0MSwgMjUxLCAyNDUsIDE0LCAyMjksIDEwNCwgMjE3LCAxNTEsIDIzNSwgMTI1LCAyNDYsIDkyLCAyMzQsIDgyLCAyNTEsIAotICAgIDI0NywgMjExLCAyMjAsIDI0OSwgMjQ5LCAyMjQsIDEyNywgMjQyLCAxNCwgMjI0LCAyMzAsIDIzMSwgMTc3LCAyMjAsIDQsIAotICAgIDI1MywgMjAzLCAyMjAsIDQsIDI0MSwgMTY0LCAyMjAsIDQsIDIxMSwgMjIwLCAyMjEsIDI0MCwgMjExLCAyMjAsIDI1MSwgCi0gICAgMTg2LCAyNDQsIDI5LCAyNTEsIDkwLCAyMzYsIDAsIDIxOSwgMTY5LCAyNTEsIDg5LCAyMzYsIDAsIDIxOSwgMTY5LCAyNTEsIAotICAgIDE2MiwgMjQyLCAxOTQsIDIzMSwgMTg1LCAyMTEsIDIyMSwgMjQ0LCAxNzQsIDIzMSwgMTg2LCAyMiwgMjExLCAyMjIsIDI0MSwgCi0gICAgNjAsIDI0MiwgMTAsIDExMywgMjMxLCA1OSwgMjQxLCA2MCwgMjQyLCAxMCwgMTEzLCAyMTEsIDIxOSwgMjQxLCA2MCwgMjQyLCAKLSAgICAxMCwgMjI0LCAyNTUsIDIyNiwgMjI3LCAyMTEsIDIyMiwgMiwgMjUxLCAxMDYsIDI0NSwgMjI1LCAyNTEsIDE0MSwgMiwgCi0gICAgMjEzLCAyNDYsIDIyNSwgMTY4LCAyLCAyNTEsIDIxMiwgMjQyLCAzNCwgMjMxLCAxODYsIDIsIDI0MiwgMTEwLCAyMjUsIAotICAgIDEwOSwgMjMxLCAxNzQsIDIzMSwgMTg2LCAyLCAyMTUsIDk3LCAyMjYsIDIwOCwgMjMxLCAxODUsIDIyNiwgMjA4LCAyMTEsIAotICAgIDIyMSwgMjUyLCAxODYsIDI0OSwgMTkwLCAyMTEsIDIwNSwgMjI0LCAxODksIDIzNSwgMTMxLCAyMjYsIDIyMywgMjM1LCAKLSAgICAxMzEsIDI0MiwgMTY5LCAyNDIsIDIyMiwgMjUyLCAxODcsIDI1NCwgMTEzLCAyNDUsIDE4LCAyNTQsIDE2MCwgMjU0LCAxNjEsIAotICAgIDIzMCwgMTM2LCAyMzYsIDUsIDIxOSwgMTAwLCAyMzUsIDIzMiwgMjQ4LCAzNCwgMjI1LCAxNjcsIDI0MiwgMTA1LCAyNDgsIAotICAgIDE3OSwgMjMyLCAyMDEsIDIyOSwgMjExLCAyMjQsIDI1NCwgMjQ0LCAxOTEsIDIzMSwgMTQyLCAyNDIsIDMzLCAyNTIsIDEzOCwgCi0gICAgMjI1LCAxLCAyMTcsIDE3MSwgMjI1LCA2NiwgMjM0LCA2NCwgNzgsIDIzMiwgMTExLCAyMzMsIDEwLCAyMjIsIDIzMywgMjQzLCAKLSAgICA1NCwgMjE4LCAxMzEsIDIzNCwgNjMsIDI1MSwgMTcxLCAyNDksIDE0OCwgMiwgMjQxLCAyMjcsIDIxMiwgMTksIDI1MiwgNjksIAotICAgIDI0MSwgMjI3LCAyNTEsIDEzNSwgMjQxLCAyMjcsIDExMywgMjQxLCAyMjUsIDIxOSwgMTAsIDI0MSwgMjI3LCAyNDIsIDEyMCwgCi0gICAgMjQxLCAyMjcsIDI0MSwgMjI4LCAyLCA3NCwgMjUxLCAyMDgsIDI0MSwgMjI3LCAyNDIsIDEyNywgMjQxLCAyMjcsIDIxMSwgCi0gICAgNDIsIDI0MSwgMjI3LCAyMjQsIDEyOCwgMjQxLCAyMjcsIDI0MSwgMjI4LCAyLCAyMjMsIDMzLCAyMjMsIDQ0LCAyNDEsIAotICAgIDIyNSwgMjQxLCAyMjgsIDI0OCwgODEsIDI0NywgMjQ5LCAyMjAsIDgyLCAyLCAxMTUsIDU5LCAyMzUsIDIxNSwgMjQ1LCAKLSAgICAxNzIsIDE5MiwgMjUxLCAxMTYsIDI1NCwgMTEyLCA4NywgMjUxLCAxOTUsIDIxOSwgOTIsIDg3LCAyNDksIDIyOCwgODcsIAotICAgIDIxOCwgMjQ2LCAyMTcsIDI0OCwgODcsIDI0NiwgODUsIDI0OCwgMTU3LCA4NywgMjI1LCA2NywgNjQsIDIyNCwgMjQ5LCAKLSAgICAyNDQsIDYxLCAyNTIsIDMsIDI0NywgMTY1LCA4NywgMjE5LCAzLCAyNTIsIDE1OCwgMjE2LCAxNDksIDI1MiwgMTU4LCA3MSwgCi0gICAgMjQ0LCA1MSwgMjQwLCAyMTEsIDIyNSwgNSwgODcsIDIzMCwgMTQ5LCAyNTIsIDE3MiwgMjQ5LCA5OCwgMjQ1LCAzMiwgMTE0LCAKLSAgICAyNDcsIDEzMiwgNTAsIDI0OSwgMTM5LCAyNTAsIDI0MiwgMjUyLCAxNDQsIDIsIDIxMSwgNDAsIDUwLCAyNTIsIDE0NCwgMiwgCi0gICAgMjQ3LCAxMzIsIDUwLCAyNTIsIDE0NCwgMiwgMjQ1LCA0NywgNTAsIDI1MiwgMTQ0LCAyLCAyMjQsIDIyOCwgNTAsIDIzMCwgCi0gICAgMTQ5LCAyLCAyMTEsIDIzNSwgMjUwLCAxMzgsIDIsIDIxNCwgMTUzLCAyMTUsIDIzMSwgMjIsIDIxMSwgNDAsIDUwLCAyMjEsIAotICAgIDE3OCwgMjI1LCAxNjYsIDI0OSwgMjA4LCAyNTEsIDEzOSwgMjMwLCAxODYsIDI0NCwgNTYsIDI0NywgMTg1LCAyMjYsIDE2MSwgCi0gICAgMjQ3LCAxOTAsIDI0NiwgNDksIDI0NCwgMTA3LCAyNDQsIDQwLCAyMDQsIDI0NCwgMTA3LCAyNDQsIDQwLCAyMjYsIDc2LCAyLCAKLSAgICAyNDksIDEwMCwgMjI2LCA3NiwgMjQ0LCAxODMsIDIxNCwgMTYzLCAyNTEsIDE2LCAyMTcsIDE4LCAyNTEsIDE2LCAyNTAsIAotICAgIDI0MywgMjM1LCAyNDIsIDI1MCwgMTM4LCAyLCAyMTQsIDE1MywgMjE1LCAyMzAsIDI1MCwgMTM4LCAyLCAyNDYsIDEwNCwgCi0gICAgMjE1LCAyMzAsIDI1MiwgMTQxLCAyNTAsIDEzNywgMjUwLCA2LCAyMjQsIDEyMywgMjIyLCAxODUsIDIyNCwgMTIzLCAyMjYsIAotICAgIDE5LCAyMTgsIDEyMSwgMjIyLCAxMzEsIDIxNSwgMjIyLCAyMjIsIDEzMSwgMjUxLCAxOTEsIDIxNywgOTEsIDIzMywgNTEsIAotICAgIDIyOCwgNDUsIDIyOCwgNDYsIDIsIDI0OCwgODAsIDI0OSwgMTQ3LCAyNTAsIDAsIDI1MSwgMTkyLCAyMDQsIDI1MSwgMTkyLCAKLSAgICAyNDIsIDEyNywgMjUxLCAxOTIsIDI1MSwgMjA4LCAyNTEsIDE5MiwgMjI2LCAxNTcsIDI1MSwgMTkyLCAyNTEsIDE4OSwgCi0gICAgMjI5LCAyMDUsIDI1MiwgMTc1LCAyMjEsIDE4NiwgMjMxLCA2MCwgMjE3LCAxLCAyMjMsIDEyMywgMjI2LCA3NCwgMjQ0LCAKLSAgICAxNTksIDIzMSwgMjM0LCAyMjEsIDIyMywgMjU0LCA4OSwgMjI0LCAxNDUsIDI1NCwgMjUyLCAyMzIsIDExMywgMjUwLCAxMjcsIAotICAgIDIzMSwgNzIsIDIyNiwgMTI5LCAyMTUsIDIzOCwgMjM1LCAyNTIsIDIxNSwgMjM4LCAyMjYsIDgyLCAyNDYsIDI0LCA4NywgCi0gICAgMjM1LCAyNDksIDI0NSwgMTE5LCAyNDUsIDEyMCwgMiwgMjQ2LCAxMDQsIDgwLCA0OCwgMjUwLCAwLCAyMzEsIDIwMCwgMiwgCi0gICAgMjMyLCAxMDcsIDI0NCwgNzMsIDI1MCwgMCwgMjMxLCAyMDAsIDIsIDIyMywgMTU3LCAyNDQsIDczLCAyMDQsIDIzMSwgMjAwLCAKLSAgICAyLCAyMjMsIDE1NywgMjQ0LCA3MywgMjA0LCAyMzEsIDIwMCwgMiwgMjMyLCAxMDcsIDI0NCwgNzMsIDIyNCwgMjM2LCAyMjQsIAotICAgIDIzNywgMjQwLCAyNDgsIDIyOSwgODQsIDIzMCwgMTU5LCAyMjUsIDExNywgMjMwLCAxNTksIDIyNSwgMTE4LCAyLCA5NywgCi0gICAgODAsIDI1MywgMjA3LCAyMzMsIDQ2LCAyMTMsIDE3NSwgMjMwLCAxNTgsIDIzMCwgMTU5LCAyMjUsIDExOCwgMjI2LCAyMzAsIAotICAgIDIyOCwgNzUsIDIzMCwgMTU5LCAyMjUsIDExNiwgMjU0LCA5MCwgMiwgMjUyLCAxMjksIDI1MSwgMTAsIDIxMywgMTcyLCAKLSAgICAyNTEsIDEwLCAyMTYsIDI1NCwgMjIzLCAxNzMsIDIxMywgMTcxLCAyMTUsIDYwLCA5NywgMjUzLCAyNDcsIDI1MCwgMiwgOTcsIAotICAgIDIyLCAxNDAsIDIwNCwgMjUwLCAzNiwgMjUzLCAyNDcsIDI1MCwgMiwgOTcsIDIyLCAxNDAsIDIwNCwgMjUwLCAzNiwgMjUzLCAKLSAgICAyNDgsIDIsIDM3LCAxMjMsIDIyNiwgMTIwLCAyNTAsIDIsIDI0NiwgMTA0LCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCAzNiwgCi0gICAgMjUzLCAyNDcsIDI1NCwgODgsIDI0NiwgMTA0LCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCAzNiwgMjUzLCAyNDcsIDEyMSwgCi0gICAgMjUxLCAxMzgsIDg3LCAxMjUsIDI1MSwgMTM4LCA4NywgMjE5LCA3LCAyLCAyNTEsIDQsIDkxLCAyMTksIDYsIDIxOSwgNywgCi0gICAgMiwgMTIzLCAyMTksIDMxLCAyMTIsIDM1LCAyMTksIDcsIDIsIDEzNCwgMjE5LCAzMSwgMjEyLCAzNCwgMjUyLCAxMTUsIAotICAgIDI0NSwgMTcyLCAyMjUsIDI3LCAyMzMsIDQyLCAyMzEsIDIxMSwgMjQyLCAxODQsIDIyMiwgMjQ3LCAyMzEsIDIxMSwgMjQyLCAKLSAgICAxODQsIDIzMiwgMTUyLCAyLCAyMzUsIDIyNSwgMjI1LCAxOTksIDI1MCwgMCwgMjMyLCAxNTIsIDIsIDIzNCwgMTM4LCAyMzQsIAotICAgIDEzOCwgMjMyLCAxNTEsIDIwNCwgMjMyLCAxNTEsIDI1MiwgNDQsIDI1MiwgNDUsIDIsIDI1MSwgNCwgOTEsIDI1MSwgMTkwLCAKLSAgICAyMzIsIDIwNCwgODcsIDIyMywgMTc0LCAyNTEsIDg2LCAyNTIsIDE4NSwgMiwgMTQwLCA4MCwgNDgsIDI0NSwgMTQzLCAyLCAKLSAgICAxNDAsIDgwLCA0OCwgMjI2LCAxOTcsIDIsIDI0NSwgMzEsIDE2NCwgMiwgNDMsIDQ0LCA4MCwgNDgsIDIxOSwgMzksIDIsIAotICAgIDk3LCA4MCwgNDgsIDIxNiwgMTQsIDIsIDIxNCwgMTUzLCA4MCwgNDgsIDIyOCwgNzUsIDEyMywgMjE0LCAxODQsIDI0NSwgCi0gICAgMTkxLCA4NywgMjM0LCAxMzYsIDIxNiwgMjQ3LCAyMzUsIDIxOSwgMTYsIDMxLCA3LCA2LCAyMzMsIDksIDIzNSwgMjE5LCAKLSAgICAxNiwgMzEsIDcsIDQsIDIzMywgOSwgMjM1LCAyMTksIDE2LCAzMSwgMjI3LCAxOTksIDIzNSwgMjE5LCAxNiwgMzEsIDIxNywgCi0gICAgMTgzLCAyMzUsIDIxOSwgMTYsIDMxLCA3LCAyMzMsIDksIDI0NCwgOTYsIDI0NSwgMTcyLCAyMTYsIDksIDIxMSwgMTk5LCAKLSAgICAyNDIsIDIxLCAyMjcsIDE4MiwgMjIsIDI1MSwgMTk3LCAyNDEsIDY2LCAyMjUsIDUwLCAyMzAsIDIyNiwgMjE2LCAyNTUsIAotICAgIDI0OSwgMTE0LCAyNTIsIDE1OSwgMjE5LCAxMjUsIDIyNSwgOSwgMjE4LCAxNTcsIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgCi0gICAgMjM1LCAxMzEsIDE2LCAzMSwgMjUyLCA1NywgMjE1LCAyMjAsIDI0NSwgMTU2LCA4NSwgNDIsIDI1MSwgODYsIDcxLCA0MiwgCi0gICAgMjUxLCA4NiwgMjMzLCA4NSwgMjIzLCAxMTEsIDI1MCwgMzUsIDIzMywgODUsIDI1MSwgMjA4LCAyNTAsIDM1LCAyMzMsIDg1LCAKLSAgICAyMjYsIDE1NywgMjQ3LCAyNDgsIDIzMywgODUsIDI1MSwgMjA4LCAyNDcsIDI0OCwgNCwgMjI2LCAxNTcsIDI0NywgMjQ4LCAKLSAgICA0LCAyNTEsIDIwOCwgMjQ3LCAyNDgsIDIxNCwgMTYyLCAyMjMsIDExMSwgMjE1LCAyMjUsIDI0NiwgMTA1LCAyMjMsIDExMSwgCi0gICAgMjE1LCAyMjUsIDIxNCwgMTYyLCA0LCAyMjMsIDExMSwgMjE1LCAyMjUsIDI0NiwgMTA1LCA0LCAyMjMsIDExMSwgMjE1LCAKLSAgICAyMjUsIDM3LCAyNDksIDEzMSwgMjI0LCAyNTIsIDI0OSwgMTMxLCAyMjQsIDI1MywgMiwgMjQyLCAyNiwgNTEsIDI0OSwgCi0gICAgMTMxLCAyMjQsIDI1MiwgMjI4LCA0OSwgNDMsIDIyMCwgMTUzLCAyLCAxMzQsIDI0NywgMTE4LCAyNTAsIDQsIDI0NCwgMTkxLCAKLSAgICAxMjMsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAxMTMsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAxMzQsIAotICAgIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDExLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA4MSwgCi0gICAgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxOSwgMTI1LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjIwLCAKLSAgICAxMjIsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDUsIDE5MywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIAotICAgIDIyOCwgMjAwLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAyNDgsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgCi0gICAgMTkxLCAyNDUsIDE2OCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNSwgNzcsIDIyNiwgMjQyLCAyNTAsIDQsIAotICAgIDI0NCwgMTkxLCAyMjYsIDE5MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA1NiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAKLSAgICAxNDAsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgNywgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA3OSwgMjUwLCA0LCAyNDQsIAotICAgIDE5MSwgMjE5LCAxMjEsIDI1MCwgNCwgMjQ0LCAxOTEsIDIyMCwgMTIxLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDUsIDE5MiwgCi0gICAgMjUwLCA0LCAyNDQsIDE5MSwgMjI4LCAxOTksIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNiwgMjQ2LCAyNTAsIDQsIDI0NCwgMTkxLCAKLSAgICAyNDUsIDE2NiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA3NSwgMjMwLCAxMTcsIDI0MywgMjMwLCAyMTYsIDM2LCAyMTYsIDIsIAotICAgIDIxOCwgMTQ4LCA2NCwgMjMyLCAyMzksIDIxOSwgMTcwLCA2NCwgMjM1LCAxMzIsIDIzMCwgMTA2LCAyNDIsIDEyNCwgMjQ0LCAKLSAgICAxOTAsIDI0MiwgMTI0LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjQ0LCAxOTEsIDIsIDIxNywgMTQsIDY0LCAKLSAgICAyMzUsIDUzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgCi0gICAgMjMwLCAxMTEsIDIyLCAyMTksIDc0LCAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMSwgMjIsIAotICAgIDI0OSwgMjMwLCAyMTcsIDI0NywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTEsIDIyLCAyMTYsIDEwNCwgCi0gICAgMjQ1LCAxMywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MiwgMjUsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyNDAsIDI0NywgCi0gICAgMjExLCAyMzMsIDI0NCwgMTkwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjQ0LCAxOTEsIAotICAgIDIyMSwgMjE3LCAyNDgsIDYyLCAyNDQsIDMzLCAyMjMsIDg4LCAyNDQsIDE5MCwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MSwgCi0gICAgMjI2LCAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjE4LCAzNCwgMjE5LCA3MywgMjQ0LCAxOTAsIDIyOSwgODcsIAotICAgIDI0NCwgMTkwLCAyNDUsIDIzLCAyNDQsIDE5MCwgMjE0LCAxODgsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjQ5LCAyMzAsIAotICAgIDIxNywgMjQ3LCAyMjUsIDE5MiwgMjQ0LCAxOTAsIDI0OSwgMjAxLCAyNDQsIDE5MCwgMjQ5LCAyMDIsIDI0NCwgMTkwLCAKLSAgICAyMzQsIDYyLCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIxNiwgMTM3LCAxMTUsIDIzNCwgNjMsIDIzNCwgNjIsIDI0NCwgMTkxLCAKLSAgICAyLCAyMTksIDc0LCAyNDUsIDEzLCAyMzQsIDYyLCAyNDQsIDE5MSwgMiwgMjUwLCAwLCAyNDUsIDEzLCAyNDQsIDE5MSwgMiwgCi0gICAgMjE4LCA4OCwgMjE2LCAxOSwgMjQ0LCAxOTEsIDIsIDIxOCwgODgsIDIxNiwgMjAsIDIyLCAyMTEsIDIzMywgMjQ1LCAxNSwgCi0gICAgMjQ0LCAxOTEsIDIsIDIxOCwgODgsIDIxNiwgMjAsIDIyLCAyMTYsIDEwNCwgMjQ1LCAxMywgMjQ3LCAxOTIsIDI0NCwgMTkwLCAKLSAgICAyMTEsIDIwNCwgMjQ0LCAxOTAsIDI1NCwgMTA4LCAyNDQsIDE5MCwgMjI0LCAyMjcsIDI0NCwgMTkwLCAyNDksIDExNiwgCi0gICAgMjQ0LCAxOTAsIDIyNSwgMTcwLCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIsIDIzMiwgMTI2LCA2NCwgMjE1LCAyMDQsIDI0NywgCi0gICAgMTkyLCAyNTEsIDg4LCAyMjMsIDg4LCAyNDQsIDE5MCwgMjQzLCAyMzksIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAKLSAgICAyNTQsIDEwNiwgMjQ0LCAxOTAsIDI0NCwgMTUyLCAyNDQsIDE5MCwgMjEyLCAyMCwgMjQ0LCAxOTAsIDIxOSwgOTEsIDI0NCwgCi0gICAgMTkwLCAyMTYsIDcxLCAyNDQsIDE5MCwgMjQyLCAxMjUsIDI0NCwgMTkwLCAyMzIsIDExNCwgMjQ5LCAxMTYsIDI0NCwgMTkwLCAKLSAgICAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgMjQwLCAyMDMsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIAotICAgIDExMSwgMjIsIDI0OSwgMjMwLCAyMTcsIDI0NywgMjQ0LCAxOTEsIDIyMSwgMTkwLCAyMzYsIDAsIDI0NCwgMTUzLCAyNTMsIAotICAgIDIxMywgMjQ0LCAxOTAsIDI0NCwgNDksIDI0NCwgMTkwLCAyMTksIDkyLCAyNDQsIDE5MCwgMjQ3LCAxNjUsIDI0NCwgMTkwLCAKLSAgICAyNDQsIDE5MSwgMjExLCAyMzAsIDIzMCwgMTEwLCAyNDQsIDE5MSwgMiwgMjMxLCA4NCwgMjMxLCAxNDQsIDI0MiwgMTI0LCAKLSAgICAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjE3LCAxNCwgCi0gICAgNjQsIDIzNSwgNTMsIDIxOSwgNzQsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgMjE5LCA3NCwgMjUwLCAKLSAgICAyMjUsIDI0NCwgMTkxLCAyLCAyNDEsIDIyNiwgMjQ1LCAxMywgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTEsIDE5NiwgCi0gICAgMjE5LCA3NSwgMjM0LCA2MiwgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyNTAsIDAsIDI0NSwgMTMsIDIyNCwgMjI3LCAyNTAsIAotICAgIDIyNSwgMjQ0LCAxOTAsIDI0OSwgMTE2LCAyNTAsIDIyNSwgMjQ0LCAxOTAsIDIxMiwgMjAsIDI1MCwgMjI1LCAyNDQsIDE5MCwgCi0gICAgMjQ0LCAxOTEsIDIsIDIyOCwgNzUsIDI0MiwgMTYzLCAyNDMsIDM0LCAyNDQsIDE5MSwgMiwgMjI2LCAyMTUsIDI0MywgMzQsIAotICAgIDIyNSwgMTY4LCAyNTEsIDE2OCwgMjQ4LCA3NSwgMjIxLCAxNjksIDIzMCwgMTQ1LCAyNDEsIDIyOSwgMjMwLCAxNDUsIDIxOSwgCi0gICAgOCwgMjMwLCAxNDUsIDI0MiwgNSwgMjI1LCAxNjgsIDIyMywgMTU2LCAxMjMsIDI0MiwgMTUsIDIyNSwgMTY4LCAyMjMsIAotICAgIDE1NiwgMjUxLCAxNzgsIDI0MiwgMTEsIDIzNiwgMCwgMjUwLCAxNzksIDIyNSwgMTY4LCAyNDMsIDIzOCwgMjI1LCAxNjgsIAotICAgIDIsIDIyNCwgMjI3LCAyNDQsIDE5MCwgMjI1LCAxNjgsIDIsIDI0NCwgNDEsIDI0MiwgMTAsIDIyMiwgMjAzLCAyNDEsIDIxNCwgCi0gICAgMjE4LCAxNDMsIDIzMiwgMTQ5LCAyMjMsIDE2MiwgMjUwLCAyNDQsIDI0MSwgMTYyLCAyMTUsIDI0OCwgMjQxLCAxNjIsIAotICAgIDIxNSwgMjQ5LCAyLCAyNTEsIDExNCwgMjI4LCA1MywgMjE1LCAyNDgsIDIzMSwgMzIsIDE5MiwgMjIzLCAxNjMsIDIxOCwgCi0gICAgMTQ5LCAyMTUsIDI0NiwgMjE1LCAyNDcsIDI1MCwgMjQ0LCAyNTEsIDkyLCAyMjYsIDE5NCwgMjUxLCA5MiwgMjE1LCAyMDEsIAotICAgIDI1MSwgOTMsIDIxOCwgMTI5LCAyMzAsIDE4NywgMjU0LCAxMzAsIDI0NCwgOTcsIDI0NSwgMTM3LCAyMjQsIDI1NSwgMjUwLCAKLSAgICAyNDQsIDIyNiwgMTk0LCAyMjQsIDI1NSwgMjUwLCAyNDQsIDIxNywgMzIsIDIyNiwgMTk0LCAyMTcsIDMyLCAyNTMsIDE4MCwgCi0gICAgMjI2LCAxOTQsIDI1MywgMTgwLCAyMjMsIDExOCwgMjEzLCAyNDcsIDI0OCwgNTgsIDIxNSwgMTkyLCAyNTMsIDI0MiwgMjMyLCAKLSAgICAxMTcsIDIxNSwgMjU0LCAyMzAsIDEzOSwgMjMwLCAxMTYsIDIyMywgMTYxLCAyMTgsIDYsIDIyMywgMTYxLCAyMzAsIDExNiwgCi0gICAgMjUxLCAyOCwgMjU0LCAyMjksIDIxNSwgMjQ1LCAyMjAsIDE2LCAyMjIsIDE4MiwgMjE5LCAxLCAyMDMsIDIxNSwgMjUyLCAKLSAgICAyMzIsIDIzMCwgNjcsIDIxNSwgMjUyLCAyMzIsIDIzMCwgMjQ5LCAxOTAsIDUwLCAyMjQsIDI1NSwgMjUwLCAyMjksIDIyMywgCi0gICAgNDQsIDIzMiwgMjMwLCAyMTUsIDIyMiwgMjQ0LCA3NCwgMjI2LCAxOTcsIDIyNCwgMjM4LCAyNDcsIDEyMywgMjI4LCA3NSwgCi0gICAgMjQ1LCAxMjUsIDUwLCAyMTksIDcyLCA4NywgMjI4LCA3NSwgMjE5LCA3MiwgODcsIDIyNCwgMTIyLCAyMzIsIDE5MywgMjM2LCAKLSAgICAwLCAyMzUsIDE1NywgMjI1LCA0MSwgODcsIDI0NywgMTQ2LCAyMjgsIDUyLCAyMzIsIDE5MywgODcsIDIyNCwgMjMyLCAyMTIsIAotICAgIDQxLCA4NywgMjI4LCA2NiwgMjEyLCA0MSwgODcsIDI1MiwgMiwgMjI4LCA3NSwgMjUyLCAxLCAyNTIsIDAsIDIzMCwgMTE2LCAKLSAgICAyNTIsIDAsIDIyNSwgMjEzLCAyMjgsIDc1LCAyMjUsIDIxMiwgMjUwLCAxMDAsIDI0OSwgMTI0LCAyMzEsIDU2LCA4NywgCi0gICAgMjExLCAyMTgsIDg3LCAyMjMsIDU5LCAyNTIsIDE4NywgODcsIDIxNiwgMzcsIDIxMiwgNDEsIDI0OSwgMjUzLCAyMTksIAotICAgIDIzNCwgMjUyLCAxMTgsIDI1MiwgMTE2LCAyMjUsIDI0MiwgMjQ5LCAxNzcsIDI0OSwgODYsIDI1MiwgMTY5LCAyNTAsIDIyLCAKLSAgICA0MywgMjMyLCA5MCwgMTA4LCAxNiwgMzEsIDIyNCwgMywgMTA4LCAxNiwgMzEsIDI1NCwgMTkyLCAxMDgsIDE2LCAzMSwgCi0gICAgMjQ0LCA5NiwgMTA4LCAxNiwgMzEsIDI0NSwgMjIzLCAxMDgsIDE2LCAzMSwgMjEyLCA0MCwgMTA4LCAxNiwgMzEsIDI1NCwgCi0gICAgNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDQ0LCAyMjMsIDEwNSwgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIyMywgMTA0LCAxMDgsIAotICAgIDE2LCAzMSwgMjU0LCA0NCwgMjEzLCAxNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDQ0LCAyMTMsIDE0MiwgMTA4LCAxNiwgMzEsIAorICAgIDIxMSwgOCwgOTUsIDI1LCA1LCAyNTQsIDI0NCwgOTUsIDI1LCA1LCAyNTQsIDI0MCwgOTUsIDI1LCA1LCAyNDUsIDg3LCA5NSwgCisgICAgMjUsIDUsIDIyMiwgMTg0LCAyNDUsIDg3LCA5NSwgMjUsIDUsIDI0NSwgOTMsIDk1LCAyNSwgNSwgMjIyLCAxODQsIDI0NSwgCisgICAgOTMsIDk1LCAyNSwgNSwgMjU0LCAyMDIsIDk1LCAyNSwgNSwgMjQ1LCAxOTYsIDk1LCAyNSwgNSwgMjUzLCAxOTMsIDk1LCAKKyAgICAyNSwgNSwgMjI2LCAxMzUsIDk1LCAyNSwgNSwgMjMwLCAyNiwgOTUsIDI1LCA1LCAyMjksIDgwLCA5NSwgMTM4LCAyMjIsIAorICAgIDI1MiwgOTUsIDEzOCwgMjE2LCAxNSwgMjIyLCAyNTIsIDk1LCAxMzgsIDQ4LCA5NSwgMTM4LCA1MSwgOTUsIDEsIDIxNiwgCisgICAgMjksIDk1LCAxLCAyMTYsIDI4LCA5NSwgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgCisgICAgMSwgMjE2LCAyNCwgOTUsIDEsIDIxNiwgMjMsIDk1LCAxLCAyMjMsIDEwNywgMjE2LCAzMCwgOTUsIDEsIDIyMywgMTA3LCAKKyAgICAyMTYsIDI5LCA5NSwgMSwgMjIzLCAxMDcsIDIxNiwgMjcsIDk1LCAxLCAyMjMsIDEwNywgMjE2LCAyNiwgOTUsIDEsIDIyMywgCisgICAgMTA3LCAyMTYsIDI1LCA5NSwgMSwgMjIzLCAxMDcsIDIxNiwgMjMsIDU2LCAxLCAyNTQsIDI0LCA3NSwgMTQxLCAxLCAyNTQsIAorICAgIDI0LCAyMTEsIDQ3LCA0OSwgMjgsIDE2LCAyMjQsIDE1NSwgNDksIDI4LCAxNiwgMjQ4LCAxNTksIDQ5LCAyOCwgMTYsIDIyNSwgCisgICAgMTc2LCA0OSwgMjgsIDE2LCAyMjYsIDExNCwgMjQ1LCAxNzksIDQ5LCAyOCwgMTYsIDIyNiwgMTE0LCAyNDcsIDIwMiwgNDksIAorICAgIDI4LCAxNiwgMjE0LCAxNiwgMjQ1LCAxNzksIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDI0NywgMjAyLCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDE5OCwgNDksIDI4LCAxNiwgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDIyNiwgMTAsIDQ5LCAyOCwgMTYsIDIxMCwgCisgICAgMjE3LCA0OSwgMjgsIDE2LCAyMTAsIDIxOCwgMjQ3LCAyMDIsIDQ5LCAyOCwgMTYsIDIzMywgMjM1LCA0OSwgMjgsIDE2LCAKKyAgICAyNTQsIDY5LCAyNDUsIDE3OSwgNDksIDI4LCAxNiwgMjQ1LCAyNywgMjQ1LCAxNzksIDQ5LCAyOCwgMTYsIDIxNywgMywgNDksIAorICAgIDI4LCAxNiwgMjM0LCAxNjIsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDQ5LCAyOCwgMTYsIDI1NCwgNjAsIDI0NywgMjAyLCA0OSwgCisgICAgMjgsIDE2LCAyMTcsIDE3NiwgNDksIDI4LCAxNiwgMjE2LCAxNjAsIDQ5LCAyOCwgMTYsIDIyNiwgMjA3LCAyNTQsIDIyLCAKKyAgICA0OSwgMjgsIDE2LCAyNDIsIDE2MCwgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjI0LCAxNTQsIDQ5LCAyOCwgMTYsIDI1MCwgCisgICAgMTUwLCA0OSwgMjgsIDE2LCAyMTQsIDYsIDQ5LCAyOCwgMTYsIDIzNSwgMTY1LCAyNTQsIDIyLCA0OSwgMjgsIDE2LCAyMzQsIAorICAgIDE2NCwgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjM0LCAxNjMsIDI1NCwgMjIsIDQ5LCAyOCwgMTYsIDIyMSwgMjE0LCA0OSwgCisgICAgMjgsIDE2LCAyMjYsIDEsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ3LCAyNTQsIDYyLCA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjU0LCAKKyAgICAyMiwgNDksIDI4LCAxNiwgMjE0LCAxNSwgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjU0LCA2MywgMjU0LCAyMiwgNDksIDI4LCAKKyAgICAxNiwgMjU0LCA1NywgNDksIDI4LCAxNiwgMjM0LCAzOCwgNDksIDI4LCAxNiwgMjIzLCA0NywgNDksIDI4LCAxNiwgMjI1LCAKKyAgICAxMDcsIDI1NCwgMjIsIDQ5LCAyOCwgMTYsIDIxNiwgODQsIDQ5LCAyOCwgMTYsIDI1NCwgMTIyLCA0OSwgMjgsIDE2LCAyMjEsIAorICAgIDE2MCwgNDksIDI4LCAxNiwgMjE3LCAxNzksIDI1NCwgMjIsIDQ5LCAyOCwgMTYsIDIxNywgMTc5LCAyMzEsIDQxLCAyMTgsIAorICAgIDE0NSwgNDksIDI4LCAxNiwgMjI2LCAxMDgsIDI1NCwgMjIsIDQ5LCAyOCwgMTYsIDIxNiwgMTkxLCA0OSwgMjgsIDE2LCAKKyAgICAyMzMsIDI4LCA0OSwgMjgsIDE2LCAyNDYsIDQyLCA0OSwgMjgsIDE2LCAyMTUsIDIyOCwgNDksIDI4LCAxNiwgMjE2LCAyMzMsIAorICAgIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCA0OSwgMjgsIDE2LCAyNTQsIDY5LCAyNDUsIDI3LCAyMjksIDk2LCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNywgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjM2LCAxMywgNDksIDI4LCAxNiwgMjE1LCAyMDAsIDI1NCwgMjIsIAorICAgIDQ5LCAyOCwgMTYsIDIzNCwgMjAxLCAyMTUsIDE5OSwgNDksIDI4LCAxNiwgMjI1LCAyMDEsIDQ5LCAyOCwgMTYsIDIyNCwgCisgICAgMTU5LCA0OSwgMjgsIDE2LCAyMzQsIDEyLCA0OSwgMjgsIDE2LCAyNTAsIDgxLCAyNTQsIDIyLCA0OSwgMjgsIDE2LCAyMjMsIAorICAgIDE0NywgNDksIDI4LCAxNiwgMjI2LCAxMywgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjI2LCAxMSwgMjU0LCAyMiwgNDksIDI4LCAKKyAgICAxNiwgMjQwLCAxMTAsIDQ5LCAyOCwgMTYsIDIyOSwgMjA0LCA0OSwgMjgsIDE2LCAyMjUsIDE1NywgNDksIDI4LCAxNiwgCisgICAgMjM0LCAxMywgMjU0LCAxNTAsIDQ5LCAyOCwgMTYsIDIxNSwgMjAwLCAyNTQsIDE1MCwgNDksIDI4LCAxNiwgMjE4LCAxMjQsIAorICAgIDQ5LCAyOCwgMTYsIDI0MiwgMTI0LCA0OSwgMjgsIDE2LCAyMzUsIDE2NSwgMjI5LCA5NiwgNDksIDI4LCAxNiwgMjI2LCAKKyAgICAyMDcsIDIyOSwgOTYsIDQ5LCAyOCwgMTYsIDIyNiwgMTE0LCAyMjksIDk2LCA0OSwgMjgsIDE2LCAyMjUsIDE1NiwgNDksIAorICAgIDI4LCAxNiwgMjMzLCAyNTUsIDQ5LCAyOCwgMTYsIDIyNSwgMTU1LCA0OSwgMjgsIDE2LCAyMzMsIDIzNywgNDksIDI4LCAxNiwgCisgICAgMjI1LCAyMDIsIDIyOSwgOTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAyMjksIDk3LCAyNTQsIDk3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDE2NCwgMjI5LCA5NywgMjU0LCA5NywgNDksIDI4LCAxNiwgMjEwLCAyMTUsIDQ5LCAyOCwgMTYsIDI1NCwgNjAsIAorICAgIDIyOSwgOTYsIDQ5LCAyOCwgMTYsIDI1NCwgNjEsIDIxNywgMTc3LCAyMjksIDk2LCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgCisgICAgNDksIDI4LCAxNiwgMjMzLCAyMzYsIDQ5LCAyOCwgMTYsIDI0NSwgMTc0LCA0OSwgMjgsIDE2LCAyNTAsIDE1MSwgNDksIDI4LCAKKyAgICAxNiwgMjMwLCAxOTksIDIzNSwgMTY0LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDk2LCA0OSwgMjgsIDE2LCAyMjUsIAorICAgIDEwNywgMjI5LCA5NiwgNDksIDI4LCAxNiwgMjI0LCAxNjAsIDIyOSwgOTYsIDQ5LCAyOCwgMTYsIDIyNiwgMjA0LCA0OSwgCisgICAgMjgsIDE2LCAyNTQsIDg1LCA0OSwgMjgsIDE2LCAyMzIsIDU5LCA0OSwgMjgsIDE2LCAyMjYsIDExLCAyMjksIDk2LCA0OSwgCisgICAgMjgsIDE2LCAyMjYsIDEzLCAyMjksIDk2LCA0OSwgMjgsIDE2LCAyNDUsIDYxLCAyMjYsIDEyLCA0OSwgMjgsIDE2LCAyMzMsIAorICAgIDE1NCwgNDksIDI4LCAxNiwgMjU0LCA4NiwgNDksIDI4LCAxNiwgMjE1LCAyMDAsIDIyOSwgOTYsIDQ5LCAyOCwgMTYsIDI0NSwgCisgICAgMTc3LCA0OSwgMjgsIDE2LCAyMTcsIDE3OSwgMjI5LCA5NiwgNDksIDI4LCAxNiwgMjE3LCAxNzEsIDQ5LCAyOCwgMTYsIAorICAgIDI1MCwgODEsIDIyOSwgOTYsIDQ5LCAyOCwgMTYsIDI0NSwgMTA3LCA0OSwgMjgsIDE2LCAyMjEsIDE2MSwgMjI5LCA5NiwgCisgICAgNDksIDI4LCAxNiwgMjExLCAxNTEsIDIzNCwgMzgsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIAorICAgIDE2MSwgNDksIDI4LCAxNiwgMjE1LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMTk4LCA0OSwgMjgsIDE2LCAyMjQsIDE1OCwgCisgICAgNDksIDI4LCAxNiwgMjE1LCAxOTYsIDQ5LCAyOCwgMTYsIDIyNCwgMTU3LCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgNDksIDI4LCAKKyAgICAxNiwgMjU0LCAxNSwgNDksIDI4LCAxNiwgMjQ1LCA2MSwgMjU0LCAxNSwgNDksIDI4LCAxNiwgMjI2LCAxMDgsIDIyOSwgOTYsIAorICAgIDQ5LCAyOCwgMTYsIDIxNiwgMTkwLCAyNDUsIDcwLCA0OSwgMjgsIDE2LCAyMTYsIDE5MCwgMjQ1LCAyNiwgNDksIDI4LCAxNiwgCisgICAgMjE2LCAxOTIsIDI1NCwgNjQsIDQ5LCAyOCwgMTYsIDIxNiwgMTg1LCAyMzQsIDI0OCwgMjU0LCA1NiwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAyMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTQwLCA0OSwgMjgsIDE2LCAyMTEsIDExLCAyMzQsIDE5NywgNDksIDI4LCAKKyAgICAxNiwgMjExLCAxMSwgMjU0LCA5NywgNDksIDI4LCAxNiwgMjE4LCAxNDYsIDQ5LCAyOCwgMTYsIDIzNCwgMzksIDI1NCwgOTcsIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjAzLCAyNTQsIDIyLCA0OSwgMjgsIDE2LCAyMzMsIDIzOSwgMjU0LCAyMiwgNDksIDI4LCAxNiwgCisgICAgMjMzLCAyMzksIDI1NCwgMTUwLCA0OSwgMjgsIDE2LCAyMzMsIDIzOSwgMjI5LCA5NiwgNDksIDI4LCAxNiwgMjU0LCA2MywgCisgICAgMjI5LCA5NiwgNDksIDI4LCAxNiwgMjU0LCA2NSwgNDksIDI4LCAxNiwgMjQ3LCAyMDIsIDQ5LCAyOCwgMTYsIDIxNSwgMjExLCAKKyAgICA0OSwgMjgsIDE2LCAyMTYsIDIyNSwgNDksIDI4LCAxNiwgMjM0LCAzLCA0OSwgMjgsIDE2LCAyMzMsIDMzLCAyNDUsIDEzNSwgCisgICAgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMywgMjQ2LCA0MywgMjUwLCA3MywgNDksIDI4LCAxNiwgMjMzLCAzMywgMjE1LCAKKyAgICAyMTMsIDI1MCwgNzMsIDQ5LCAyOCwgMTYsIDIzMywgMzMsIDIxNiwgMjM1LCAyNTAsIDczLCA0OSwgMjgsIDE2LCAyMzMsIAorICAgIDMzLCAyMzYsIDgsIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDI0MiwgMTYwLCAyMjksIDk3LCAyNTQsIDk3LCA0OSwgMjgsIDE2LCAKKyAgICAyNDIsIDE2MCwgMjI2LCAyLCAyNTQsIDExLCA0OSwgMjgsIDE2LCAyNDIsIDE2MCwgMjI2LCAyLCAyNDgsIDMwLCA0OSwgMjgsIAorICAgIDE2LCAyNDcsIDIyNiwgNDksIDI4LCAxNiwgMjQ3LCAyMjcsIDIyNiwgMiwgMjU0LCAxMiwgMjM0LCAxOTcsIDQ5LCAyOCwgCisgICAgMTYsIDI0NywgMjI3LCAyMjYsIDIsIDI1NCwgMTIsIDI1NCwgOTcsIDQ5LCAyOCwgMTYsIDI0NywgMjI3LCAyMjYsIDIsIAorICAgIDI0OCwgMzAsIDQ5LCAyOCwgMTYsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyNTQsIDE2LCA0OSwgMjgsIDE2LCAyMzYsIDE1LCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDI0NywgNDksIDI4LCAxNiwgMjU0LCAyMTIsIDIyNSwgMSwgMjU0LCAxNywgNDksIDI4LCAxNiwgCisgICAgMjU0LCAyMTIsIDI1NCwgMTQsIDQ5LCAyOCwgMTYsIDI1NCwgMjEyLCAyNTQsIDE3LCA0OSwgMjgsIDE2LCAyNTQsIDIxMiwgCisgICAgMjMxLCAzNSwgNDksIDI4LCAxNiwgMjU0LCAyMTIsIDIzMSwgNDYsIDQ5LCAyOCwgMTYsIDI1NCwgMjEyLCAyNDIsIDE2MSwgCisgICAgNDksIDI4LCAxNiwgMjU0LCAyMTIsIDI0MiwgMTU4LCA0OSwgMjgsIDE2LCAyNTQsIDIxMiwgMjI1LCAxLCAyNDIsIDE2MSwgCisgICAgNDksIDI4LCAxNiwgMjMxLCAxNTIsIDIyNCwgMTY2LCAyNDAsIDEwOCwgNDksIDI4LCAxNiwgMjMxLCAxNTIsIDI1NCwgMTUyLCAKKyAgICAyMjQsIDE2NiwgMjQwLCAxMDgsIDQ5LCAyOCwgMTYsIDIzMSwgMTUyLCAyNDgsIDI5LCAyNDAsIDEwOCwgNDksIDI4LCAxNiwgCisgICAgMjMxLCAxNTIsIDI1NCwgMTUyLCAyNDgsIDI5LCAyNDAsIDEwOCwgNDksIDI4LCAxNiwgMjMxLCAxNTIsIDIxNSwgMjA2LCAKKyAgICAyNDAsIDEwOCwgNDksIDI4LCAxNiwgMjMxLCAxNTIsIDIxNSwgMjE4LCA0OSwgMjgsIDE2LCAyMzEsIDE1MiwgMjE2LCAyMjksIAorICAgIDI0MCwgMTA4LCA0OSwgMjgsIDE2LCAyMzEsIDE1MiwgMjE2LCAyMjksIDIzMywgMzYsIDI0MCwgMTA4LCA0OSwgMjgsIDE2LCAKKyAgICAyMzEsIDE1MiwgMjMzLCAzNiwgMjQwLCAxMDgsIDQ5LCAyOCwgMTYsIDIzMSwgMTUyLCAyMjUsIDQwLCAyNDAsIDEwOCwgNDksIAorICAgIDI4LCAxNiwgMjM1LCAxNzAsIDIxNiwgMjUyLCAyNDAsIDEwOSwgNDksIDI4LCAxNiwgMjU0LCA2MSwgMjE2LCAyNTIsIDI0MCwgCisgICAgMTA5LCA0OSwgMjgsIDE2LCAyNDQsIDE3MywgMjE2LCAyMjYsIDQ5LCAyOCwgMTYsIDI0NCwgMTczLCAyMzAsIDE0NCwgNDksIAorICAgIDI4LCAxNiwgMjQ0LCAxNzMsIDI0NywgMjMxLCA0OSwgMjgsIDE2LCAyMzEsIDE1MiwgMjE0LCAxMCwgMjQwLCAxMDgsIDQ5LCAKKyAgICAyOCwgMTYsIDIzMSwgMTUyLCAyMjQsIDE2NSwgMjQwLCAxMDgsIDQ5LCAyOCwgMTYsIDIzMSwgMTUyLCAyMjUsIDQwLCAyMTYsIAorICAgIDIyOSwgMjQwLCAxMDgsIDQ5LCAyOCwgMTYsIDI0MiwgMTU2LCAyMzAsIDI3LCAyNTQsIDY0LCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1NiwgMjMwLCAyNywgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDI0NSwgMTQ5LCAyMzQsIDI0OCwgMjQzLCAyMzcsIDIxMywgCisgICAgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDE0LCA0OSwgMjgsIDE2LCAyMzYsIDEyLCA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjU0LCAKKyAgICAyMywgMjQ4LCAyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDI0MywgMjM3LCAyNDcsIDI0NSwgMTkwLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNywgMjQ3LCAyNDUsIDIyOSwgMjA0LCA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjI5LCAxOTksIDI0MCwgMTA4LCAKKyAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjQ3LCAyNDUsIDI0OCwgNCwgNDksIDI4LCAxNiwgMjQzLCAyMzcsIDIxOSwgMTAzLCAKKyAgICAyNDcsIDI0NCwgMjQ4LCA0LCA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjQ3LCAyNDUsIDIzNCwgMTgzLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNywgMjQ3LCAyNDUsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI0MywgMjM3LCAyNDcsIDI0NSwgMjI4LCAyMzUsIAorICAgIDIzNCwgMTk3LCA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjQ3LCAyNDUsIDIyOCwgMjM1LCAyNTQsIDk3LCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNywgMjMxLCAxOTIsIDI1MCwgNzQsIDI0NywgMjMxLCA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjMxLCAxOTIsIAorICAgIDI1MCwgNzQsIDIzMCwgMTQ0LCA0OSwgMjgsIDE2LCAyNDQsIDEyMywgMjE5LCAxMDMsIDI1MCwgNzQsIDIxNCwgOSwgNDksIAorICAgIDI4LCAxNiwgMjQzLCAyMzcsIDIxOSwgMTAzLCAyNTAsIDc0LCAyMTcsIDE4MCwgNDksIDI4LCAxNiwgMjQzLCAyMzcsIDIyOSwgCisgICAgOTgsIDQ5LCAyOCwgMTYsIDI1MCwgNzUsIDIwOSwgMjQ5LCA0OSwgMjgsIDE2LCAyNTAsIDc1LCAyMzQsIDM3LCA0OSwgMjgsIAorICAgIDE2LCAyNTAsIDc1LCAyMTksIDEwLCA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjQwLCAxNTUsIDIxMSwgMTAsIDIxNiwgMjMwLCAKKyAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNywgMjQ1LCAxNTAsIDI1NCwgODcsIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIxNSwgMjA3LCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIzOSwgMjE1LCAyMDcsIDQ5LCAyOCwgMTYsIDI0NywgMjM5LCAyMTYsIDIzMCwgNDksIDI4LCAKKyAgICAxNiwgMjQ3LCAyMzksIDI1NCwgNjYsIDI0NiwgNDMsIDI0NywgMTQwLCA0OSwgMjgsIDE2LCAyNDcsIDIzOSwgMjMwLCAxNDIsIAorICAgIDIxNiwgMjM0LCAyNDcsIDE0MCwgNDksIDI4LCAxNiwgMjQ3LCAyMzksIDI0NywgMjIzLCAyNDUsIDM3LCAyNDcsIDE0MCwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMzksIDIxNSwgMjE1LCAyMjYsIDIxMiwgMjQ3LCAxNDAsIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIAorICAgIDI1NCwgNjYsIDI0NiwgNDMsIDI0NywgMTQwLCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMzAsIDE0MiwgMjE2LCAyMzQsIDI0NywgCisgICAgMTQwLCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNDcsIDIyMywgMjQ1LCAzNywgMjQ3LCAxNDAsIDQ5LCAyOCwgMTYsIDIxMSwgCisgICAgMTAsIDIxNSwgMjE1LCAyMjYsIDIxMiwgMjQ3LCAxNDAsIDQ5LCAyOCwgMTYsIDI0MywgNTAsIDI0NywgMjM4LCA0OSwgMjgsIAorICAgIDE2LCAyNDMsIDUwLCAyMTEsIDksIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNTQsIDY2LCAyMzAsIDIwMCwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyNDYsIDI1NCwgNjYsIDIzMSwgNzQsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNDcsIDIwMiwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyNDYsIDIxNiwgMTgzLCA0OSwgMjgsIDE2LCAyMTksIDE2NCwgMjE2LCAxODMsIDQ5LCAyOCwgMTYsIDIxOSwgMTY0LCAKKyAgICAyMTYsIDE4NCwgMjQ3LCAxODcsIDQ5LCAyOCwgMTYsIDIxOSwgMTY0LCAyMTYsIDE4NCwgMjE1LCAyMDgsIDQ5LCAyOCwgMTYsIAorICAgIDIxOSwgMTY0LCAyMTYsIDE4NCwgMjE2LCAyMjMsIDQ5LCAyOCwgMTYsIDIxOSwgMTY0LCAyNTMsIDI0NSwgNDksIDI4LCAxNiwgCisgICAgMjE5LCAxNjQsIDI1MywgMjQ2LCAyNDcsIDE4NywgNDksIDI4LCAxNiwgMjE5LCAxNjQsIDI1MywgMjQ2LCAyMTUsIDIwOCwgCisgICAgNDksIDI4LCAxNiwgMjE5LCAxNjQsIDI1MywgMjQ2LCAyMTYsIDIyMywgNDksIDI4LCAxNiwgMjQ3LCAyMjQsIDI0MywgMzEsIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMwLCAyMjYsIDEzNSwgNDksIDI4LCAxNiwgMjE4LCAxMzgsIDQ5LCAyOCwgMTYsIDI1NCwgOCwgCisgICAgMTkwLCA0OSwgMjgsIDE2LCAyNTQsIDgsIDIxMywgMTI0LCA0OSwgMjgsIDE2LCAyNTQsIDgsIDI0MywgMTM2LCA0OSwgMjgsIAorICAgIDE2LCAyNTQsIDgsIDI0OCwgNCwgNDksIDI4LCAxNiwgMjU0LCA4LCAyMzQsIDE4MywgNDksIDI4LCAxNiwgMjU0LCA4LCAKKyAgICAyMTAsIDIzLCA0OSwgMjgsIDE2LCAyNTQsIDgsIDIyOCwgMjM0LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NywgCisgICAgMjMxLCA0NSwgNDksIDI4LCAxNiwgMjM0LCAxNjQsIDIyOSwgOTcsIDIzMSwgNDUsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAKKyAgICAyMjksIDk3LCAyMzQsIDE5NywgNDksIDI4LCAxNiwgMjM0LCAxNjQsIDIyOSwgOTcsIDIzNCwgMTk3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDM5LCAyMzQsIDE5NywgNDksIDI4LCAxNiwgMjQyLCAxNjAsIDIyOSwgOTcsIDIzNCwgMTk3LCAyOCwgMTYsIDIxOSwgCisgICAgMTU2LCAyNTIsIDEzNiwgMjgsIDE2LCA1MiwgMjUyLCAxMzYsIDI4LCAxNiwgNDAsIDI1MiwgMTM2LCAyOCwgMTYsIDIyMywgCisgICAgNTEsIDQwLCAyNTIsIDEzNiwgMjgsIDE2LCAyNDgsIDE1NiwgMjUyLCAxMzYsIDI4LCAxNiwgMjE5LCAyNTIsIDI1MiwgMTM2LCAKKyAgICAyOCwgMTYsIDQzLCAyMjMsIDc4LCA1MCwgMjgsIDE2LCA0NCwgMjIzLCA3OCwgNTAsIDI4LCAxNiwgMjIzLCA3OCwgMjQ3LCAKKyAgICAxMTksIDI4LCAxNiwgMjQ4LCAxOTcsIDIyMSwgMTY0LCAyOCwgMTYsIDI0OCwgMjIzLCAyNTAsIDI1MCwgMjgsIDE2LCAyMjEsIAorICAgIDE2NCwgMjgsIDE2LCAyNDksIDIzNSwgMjgsIDE2LCAyMjMsIDc2LCAyNDQsIDExMiwgMjgsIDE2LCAyMjMsIDc2LCAyNDQsIAorICAgIDExMSwgMjgsIDE2LCAyMjMsIDc2LCAyNDQsIDExMCwgMjgsIDE2LCAyNDQsIDEzMiwgMjgsIDE2LCAyNDQsIDEzMywgNTEsIAorICAgIDI4LCAxNiwgMjUxLCAxNDksIDc4LCAyOCwgMTYsIDI1MSwgMjUsIDI4LCAxNiwgMjUxLCAxNjAsIDI4LCAxNiwgMTI3LCAyOCwgCisgICAgMTYsIDIyNiwgMTk0LCAyMTgsIDE2NCwgMjgsIDE2LCAyMTUsIDU3LCAyMTgsIDE2NCwgMjgsIDE2LCAyMTYsIDE0MywgMjE4LCAKKyAgICAxNjQsIDI4LCAxNiwgMjQ0LCAxMSwgMjE4LCAxNjQsIDI4LCAxNiwgMjQ0LCA4MSwgMjE4LCAxNjQsIDI4LCAxNiwgMjE5LCAKKyAgICAxMjUsIDIxOCwgMTY0LCAyOCwgMTYsIDIxOSwgMTIzLCAyNDMsIDI1MSwgMjgsIDE2LCAyNDQsIDksIDI0MywgMjUxLCAyOCwgCisgICAgMTYsIDI0MywgMjA0LCAyNTAsIDE1LCAyOCwgMTYsIDI0MywgMjA0LCAyNTAsIDE2LCAyMjYsIDEzNywgMjU0LCAxNDMsIDI4LCAKKyAgICAxNiwgMjQzLCAyMDQsIDI1MCwgMTYsIDIyNiwgMTM3LCAyNTIsIDEyMywgMjgsIDE2LCAyNTEsIDY4LCAyNTAsIDE1LCAyOCwgCisgICAgMTYsIDI0NSwgOCwgMjUwLCAxNSwgMjgsIDE2LCAyNDUsIDgsIDI1MCwgMTYsIDIyNiwgMTM3LCAyNTQsIDE0MywgMjgsIDE2LCAKKyAgICAyNDUsIDgsIDI1MCwgMTYsIDIyNiwgMTM3LCAyNTIsIDEyMywgMjgsIDE2LCAyNDYsIDg0LCAyNTAsIDE0LCAyOCwgMTYsIAorICAgIDI0NiwgODQsIDI1MCwgMTMsIDI4LCAxNiwgMjMwLCA4NiwgMjMxLCA5MSwgMjIzLCA2MiwgMjgsIDE2LCA1MiwgMjIwLCA3NiwgCisgICAgMjgsIDE2LCA1MiwgMjQ0LCA2NiwgMjgsIDE2LCAyNDQsIDY3LCAyMTQsIDE2MywgMjgsIDE2LCAyNDQsIDY3LCAyNDYsIAorICAgIDEwNywgMjgsIDE2LCAyMjksIDE4OSwgMjE0LCAxNjMsIDI4LCAxNiwgMjI5LCAxODksIDI0NiwgMTA3LCAyOCwgMTYsIDIyMCwgCisgICAgNzcsIDIxNCwgMTYzLCAyOCwgMTYsIDIyMCwgNzcsIDI0NiwgMTA3LCAyOCwgMTYsIDIyNCwgMjMsIDEzOCwgMjIwLCA3NiwgCisgICAgMjgsIDE2LCAyMjQsIDIzLCAxMzgsIDI0NCwgNjYsIDI4LCAxNiwgMjQ5LCAyMTcsIDIxNiwgODgsIDI4LCAxNiwgMjQ5LCAKKyAgICA4NiwgMjE2LCA4OCwgMjgsIDE2LCAyMjYsIDEzNywgMjU0LCAxNDMsIDI4LCAxNiwgMjI2LCAxMzcsIDI1MiwgMTIzLCAyOCwgCisgICAgMTYsIDIyNCwgNSwgMjU0LCAxNDMsIDI4LCAxNiwgMjI0LCA1LCAyNTIsIDEyMywgMjgsIDE2LCAyMzAsIDg5LCAyMjMsIDYyLCAKKyAgICAyOCwgMTYsIDIxMSwgMjUxLCAyMjMsIDYyLCAyOCwgMTYsIDE2MywgMjIzLCA2MiwgMjgsIDE2LCAyMjQsIDIzLCAyMjMsIAorICAgIDYyLCAyOCwgMTYsIDI0NSwgMTkwLCAyMjMsIDYyLCAyOCwgMTYsIDIxOSwgMTE5LCAyMjMsIDYyLCAyOCwgMTYsIDIxNiwgCisgICAgMTYxLCAyMjMsIDYyLCAyOCwgMTYsIDIxOSwgMTExLCAyMjMsIDYyLCAyOCwgMTYsIDEyMywgMjQwLCAyMTIsIDIxNSwgNzEsIAorICAgIDIyMywgNjIsIDI4LCAxNiwgMjExLCAxNzksIDIyOCwgNDQsIDI4LCAxNiwgOTYsIDIyOCwgNDQsIDI4LCAxNiwgMjUwLCAzNywgCisgICAgMjExLCAxNzksIDIyOCwgNDQsIDI4LCAxNiwgNDIsIDIyOCwgNDUsIDIxMSwgMjUzLCAyOCwgMTYsIDQyLCAyMjgsIDQ1LCAKKyAgICAyNTEsIDIyMiwgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0NSwgMTIwLCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgCisgICAgMjI4LCA0NSwgMTIwLCAyNTEsIDIyMiwgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0NSwgNDMsIDIxMSwgMjUzLCAyOCwgMTYsIAorICAgIDIxNSwgMjI3LCAyMjgsIDQ1LCA0MywgMjUxLCAyMjIsIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgNDUsIDQ0LCAyMTEsIDI1MywgCisgICAgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0NSwgNDQsIDI1MSwgMjIyLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ1LCAxMjQsIAorICAgIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ1LCAxMjQsIDI1MSwgMjIyLCAyOCwgMTYsIDIxNSwgMjI3LCAKKyAgICAyMjgsIDQ1LCAxMjAsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0NSwgMTIwLCA0NCwgMjUxLCAyMjIsIAorICAgIDI4LCAxNiwgMjMwLCAxMzAsIDIyOCwgNDUsIDIxMSwgMjUzLCAyOCwgMTYsIDIzMCwgMTMwLCAyMjgsIDQ1LCAyNTEsIDIyMiwgCisgICAgMjgsIDE2LCAyMTUsIDIyNCwgMjI4LCA0NSwgMTI0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNCwgMjI4LCA0NSwgMTI0LCAKKyAgICAyNTEsIDIyMiwgMjgsIDE2LCAyMjYsIDUsIDIyOCwgNDQsIDI4LCAxNiwgMjEzLCAxMzIsIDIyOCwgNDQsIDI4LCAxNiwgCisgICAgMjI4LCA0NSwgMjUxLCAyMjIsIDI4LCAxNiwgMjI3LCAyMDQsIDIyOCwgNDQsIDI4LCAxNiwgMjQ5LCAyNDIsIDIyOCwgNDUsIAorICAgIDIxMSwgMjUzLCAyOCwgMTYsIDI0OSwgMjQyLCAyMjgsIDQ1LCAyNTEsIDIyMiwgMjgsIDE2LCAyNTEsIDE0NywgMjgsIDE2LCAKKyAgICAyMTEsIDI1MSwgMjI4LCA0OCwgMjgsIDE2LCAxNjMsIDIyOCwgNDgsIDI4LCAxNiwgMjI0LCAyMywgMjI4LCA0OCwgMjgsIAorICAgIDE2LCAyNDUsIDE5MCwgMjI4LCA0OCwgMjgsIDE2LCAyMTksIDExOSwgMjI4LCA0OCwgMjgsIDE2LCAyMTYsIDE2MSwgMjI4LCAKKyAgICA0OCwgMjgsIDE2LCAyMTksIDExMSwgMjI4LCA0OCwgMjgsIDE2LCAxMjMsIDI0MCwgMjEyLCAyMTUsIDcxLCAyMjgsIDQ4LCAKKyAgICAyOCwgMTYsIDM4LCAyMTgsIDE0MCwgMjgsIDE2LCAzOCwgMjE4LCAyNDEsIDIxOCwgMTQwLCAyOCwgMTYsIDM4LCAyMTUsIAorICAgIDIzNSwgMjgsIDE2LCAzOCwgMjE1LCAyMzQsIDI4LCAxNiwgMzgsIDIxNSwgMjMzLCAyOCwgMTYsIDI0NCwgMTAyLCAyMTUsIAorICAgIDIzNSwgMjgsIDE2LCAyNDQsIDEwMiwgMjE1LCAyMzQsIDI4LCAxNiwgMjQ0LCAxMDIsIDIxNSwgMjMzLCAyOCwgMTYsIDM4LCAKKyAgICAyNTMsIDE5MCwgMjQ3LCAxMjEsIDI4LCAxNiwgMzgsIDI0NCwgNzMsIDI4LCAxNiwgMzgsIDI0NCwgNzIsIDI4LCAxNiwgMzgsIAorICAgIDI0NCwgNzEsIDI4LCAxNiwgMzgsIDI0NCwgNzAsIDI4LCAxNiwgMzgsIDI0NCwgNjksIDI4LCAxNiwgMjUyLCA1OSwgMjUyLCAKKyAgICA3NSwgMjgsIDE2LCAyNDUsIDE0NCwgMjUyLCA3NSwgMjgsIDE2LCAyNTIsIDU5LCAyMTYsIDExMiwgMjgsIDE2LCAyNDUsIAorICAgIDE0NCwgMjE2LCAxMTIsIDI4LCAxNiwgMjUyLCA1OSwgMjE5LCA4MSwgMjgsIDE2LCAyNDUsIDE0NCwgMjE5LCA4MSwgMjgsIAorICAgIDE2LCAyNTIsIDU5LCAyMjUsIDExNiwgMjgsIDE2LCAyNDUsIDE0NCwgMjI1LCAxMTYsIDI4LCAxNiwgMzgsIDI1NSwgMTUsIAorICAgIDI4LCAxNiwgMzgsIDIxOCwgMTY2LCAyOCwgMTYsIDM4LCAyMTYsIDIzOSwgMjgsIDE2LCAzOCwgMjE4LCAxNjcsIDI4LCAxNiwgCisgICAgMzgsIDIzMSwgMTYzLCAyOCwgMTYsIDM4LCAyMzEsIDE2MiwgMjgsIDE2LCAzOCwgMjU1LCAxNCwgMjgsIDE2LCAzOCwgMjMyLCAKKyAgICAxMTMsIDI4LCAxNiwgMjUzLCAyNTUsIDIxNCwgMTYzLCAyOCwgMTYsIDI1MywgMjU1LCAyNDYsIDEwNywgMjgsIDE2LCAzOCwgCisgICAgMjQ3LCAxMzYsIDI4LCAxNiwgMzgsIDIyMiwgMjMyLCAyOCwgMTYsIDM4LCAyNDQsIDU5LCAyOCwgMTYsIDM4LCAyMTksIDc3LCAKKyAgICAyOCwgMTYsIDM4LCAyNTIsIDM5LCAyOCwgMTYsIDM4LCA1MiwgMjE2LCAyMCwgMjgsIDE2LCAzOCwgMjE1LCAyMTIsIDIxNiwgCisgICAgMjAsIDI4LCAxNiwgMjIyLCAyMzYsIDI4LCAxNiwgMjE4LCA3NiwgMjgsIDE2LCAyMTAsIDE1OSwgMjgsIDE2LCAyMjUsIAorICAgIDEwOCwgMjgsIDE2LCAyMzEsIDI2LCAyOCwgMTYsIDI0NCwgMTgsIDI4LCAxNiwgMjQ5LCAxMzksIDI4LCAxNiwgMjQ4LCA3OSwgCisgICAgMjgsIDE2LCAyNDIsIDE1MSwgMjI4LCA0OSwgMjE5LCA5NiwgMjgsIDE2LCAyNDIsIDE1MSwgMjI4LCA0OSwgMjI4LCA3NiwgCisgICAgMjE5LCA5NiwgMjgsIDE2LCAyMTYsIDEsIDI4LCAxNiwgMjE1LCA5NSwgMjgsIDE2LCAyMzUsIDE5NCwgMjE1LCA5NSwgMjgsIAorICAgIDE2LCAyMTUsIDk2LCAyMTksIDk2LCAyOCwgMTYsIDIxNSwgOTYsIDIxNCwgMTYzLCAyOCwgMTYsIDIyNiwgMTQ5LCAyMTgsIAorICAgIDEwMywgMjgsIDE2LCAyMjYsIDE0OSwgMjE4LCAxMDAsIDI4LCAxNiwgMjI2LCAxNDksIDIxOCwgOTksIDI4LCAxNiwgMjI2LCAKKyAgICAxNDksIDIxOCwgOTgsIDI4LCAxNiwgMjI2LCAxNDksIDIxOCwgOTcsIDI4LCAxNiwgMjI2LCAxNDksIDIxOCwgOTYsIDI4LCAKKyAgICAxNiwgMjI2LCAxNDksIDIxOCwgOTUsIDI4LCAxNiwgMjI2LCAxNDksIDIxOCwgOTQsIDI4LCAxNiwgMjI2LCAxNDksIDIxOCwgCisgICAgOTMsIDI4LCAxNiwgMjI2LCAxNDksIDIxOCwgMTAyLCAyOCwgMTYsIDIyNiwgMTQ5LCAyMTgsIDEwMSwgMjgsIDE2LCAyNDEsIAorICAgIDI0NiwgMjgsIDE2LCAyMjksIDEwNiwgMjgsIDE2LCAyNDUsIDE0NCwgNjQsIDIxOCwgMTM0LCAyOCwgMTYsIDI0OCwgNzIsIAorICAgIDIxOSwgOTYsIDI4LCAxNiwgMzgsIDEyNCwgMjUxLCAxNzAsIDI4LCAxNiwgMzgsIDEyMCwgMjUxLCAxNzAsIDI4LCAxNiwgCisgICAgMzgsIDI0MiwgMSwgMjgsIDE2LCAzOCwgMjE5LCA2OCwgMjI1LCA0NCwgMjgsIDE2LCAyMjUsIDIxNywgNzgsIDI4LCAxNiwgCisgICAgMjI1LCAyMTcsIDEyMCwgNzgsIDI4LCAxNiwgMTYzLCAyMjUsIDIxNywgNzgsIDI4LCAxNiwgMjQyLCAxODMsIDIxNCwgMTYzLCAKKyAgICAyOCwgMTYsIDI0MiwgMTgzLCAyNDYsIDEwNywgMjgsIDE2LCAyLCAyNDQsIDEwMSwgMjgsIDE2LCAyNDgsIDE4MSwgMjgsIAorICAgIDE2LCAyNDgsIDE4MiwgMjU0LCAxNTUsIDI4LCAxNiwgMjMxLCAxMzQsIDI4LCAxNiwgMjMyLCAxMzAsIDI4LCAxNiwgMjUxLCAKKyAgICAxNDQsIDI4LCAxNiwgMjIwLCAxNTUsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTU1LCAyNTEsIDIyMiwgMjgsIDE2LCAyMzAsIAorICAgIDE4NSwgMjgsIDE2LCAyMzAsIDE4NiwgMjUxLCAyMjIsIDI4LCAxNiwgMjIwLCAxNDksIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgCisgICAgMTQ5LCAyNTEsIDIyMiwgMjgsIDE2LCAyNDMsIDIyMSwgMjExLCAyNTMsIDI4LCAxNiwgMjQzLCAyMjEsIDI1MSwgMjIyLCAKKyAgICAyOCwgMTYsIDIzMiwgMTMxLCAyMjUsIDE4MSwgMjIzLCA2MiwgMjgsIDE2LCAyMzIsIDEzMSwgMjM2LCA1LCAyMjMsIDYyLCAKKyAgICAyOCwgMTYsIDI1MSwgMTQ1LCAyMjMsIDYyLCAyOCwgMTYsIDIyMCwgMTU1LCAyMjMsIDYyLCAyOCwgMTYsIDIzMCwgMTg2LCAKKyAgICAyMjMsIDYyLCAyOCwgMTYsIDIyMCwgMTQ5LCAyMjMsIDYyLCAyOCwgMTYsIDIxNiwgMjUwLCAyMjUsIDE3OSwgMjQ5LCAxMDgsIAorICAgIDIyNCwgMTc1LCAyMjUsIDE4MCwgMjgsIDE2LCAyMTYsIDI1MCwgMjI1LCAxNzksIDI0OSwgMTA4LCAyMjQsIDE3NSwgMjM2LCAKKyAgICA0LCAyOCwgMTYsIDIxNiwgMjUwLCAyMjUsIDE3OSwgMjQ5LCAxMDgsIDIyNCwgMTc1LCAyMjUsIDE4MSwgMjQ3LCAyMTIsIAorICAgIDI4LCAxNiwgMjE2LCAyNTAsIDIzNiwgMywgMjQ5LCAxMDgsIDIyNCwgMTc1LCAyMjUsIDE4MCwgMjgsIDE2LCAyMTYsIDI1MCwgCisgICAgMjM2LCAzLCAyNDksIDEwOCwgMjI0LCAxNzUsIDIzNiwgNCwgMjgsIDE2LCAyMTYsIDI1MCwgMjM2LCAzLCAyNDksIDEwOCwgCisgICAgMjI0LCAxNzUsIDIzNiwgNSwgMjQ3LCAyMTIsIDI4LCAxNiwgMjE2LCAyNTAsIDIzNiwgMywgMjQ5LCAxMDgsIDIyNCwgMTc1LCAKKyAgICAyMzYsIDUsIDI0NywgMjExLCAyOCwgMTYsIDIxNiwgMjUwLCAyMzYsIDMsIDI0OSwgMTA4LCAyMjQsIDE3NSwgMjM2LCA1LCAKKyAgICAyNDcsIDIxMCwgMjgsIDE2LCAyNDksIDEzNCwgMjgsIDE2LCAyNDIsIDEyNywgMjUxLCA2OCwgMjUwLCAxNSwgMjgsIDE2LCAKKyAgICAyNDIsIDEyNywgMjQ1LCA4LCAyNTAsIDE1LCAyOCwgMTYsIDQyLCAyNTMsIDE1OSwgMjgsIDE2LCAyMTMsIDE1MSwgMjgsIAorICAgIDE2LCAyMjUsIDE1LCAyOCwgMTYsIDI1MCwgNiwgMjgsIDE2LCAyMjEsIDIwNCwgMjgsIDE2LCAyNTAsIDEwLCAyOCwgMTYsIAorICAgIDIxNiwgOCwgMjgsIDE2LCAyMjQsIDI0MywgMjgsIDE2LCAyMjQsIDI0NCwgMjQ0LCA2MSwgMjgsIDE2LCAyMjEsIDIwNSwgCisgICAgMjQ0LCA2MSwgMjgsIDE2LCAyMTYsIDksIDIyMywgNTksIDI4LCAxNiwgMjI1LCAxNjQsIDIxOCwgNjcsIDI2LCAyMTMsIAorICAgIDEzNywgMTg4LCAyMTcsIDIzMCwgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgMjE5LCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAKKyAgICAyMDksIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIDIwMiwgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgMTk0LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4OCwgMjE3LCAxODgsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIDE4NywgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgCisgICAgMTg2LCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAxODUsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIDIyOSwgMjYsIDIxMywgCisgICAgMTM3LCAxODgsIDIxNywgMjI4LCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAyMjcsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIAorICAgIDIyNiwgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgMjI1LCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAyMjQsIDI2LCAyMTMsIAorICAgIDEzNywgMTg4LCAyMTcsIDIyMywgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgMjIyLCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAKKyAgICAyMjEsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIDIyMCwgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgMjE4LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4OCwgMjE3LCAyMTcsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIDIxNiwgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgCisgICAgMjE1LCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAyMTQsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIDE5MywgMjYsIDIxMywgCisgICAgMTM3LCAxODgsIDIxNywgMTkyLCAyNiwgMjEzLCAxMzcsIDE4OCwgMjE3LCAxOTEsIDI2LCAyMTMsIDEzNywgMTg4LCAyMTcsIAorICAgIDE5MCwgMjYsIDIxMywgMTM3LCAxODgsIDIxNywgMTg5LCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAyMzAsIDI2LCAyMzUsIAorICAgIDIxNSwgMTg4LCAyMTcsIDIxOSwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMjAyLCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAKKyAgICAxOTQsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDE4NywgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMTg2LCAyNiwgMjM1LCAKKyAgICAyMTUsIDE4OCwgMjE3LCAyMjgsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDIyNywgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgCisgICAgMjI2LCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAyMjUsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDIyMiwgMjYsIDIzNSwgCisgICAgMjE1LCAxODgsIDIxNywgMjIxLCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAyMjAsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIAorICAgIDIxNSwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMjE0LCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAyMTMsIDI2LCAyMzUsIAorICAgIDIxNSwgMTg4LCAyMTcsIDIxMiwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMjExLCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAKKyAgICAyMTAsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDIwOCwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMjA3LCAyNiwgMjM1LCAKKyAgICAyMTUsIDE4OCwgMjE3LCAyMDYsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDIwNSwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgCisgICAgMjA0LCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAyMDMsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDIwMSwgMjYsIDIzNSwgCisgICAgMjE1LCAxODgsIDIxNywgMjAwLCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAxOTksIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIAorICAgIDE5OCwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMTk3LCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAxOTYsIDI2LCAyMzUsIAorICAgIDIxNSwgMTg4LCAyMTcsIDE5NSwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMTkzLCAyNiwgMjM1LCAyMTUsIDE4OCwgMjE3LCAKKyAgICAxOTIsIDI2LCAyMzUsIDIxNSwgMTg4LCAyMTcsIDE5MSwgMjYsIDIzNSwgMjE1LCAxODgsIDIxNywgMTkwLCAyNiwgMjM1LCAKKyAgICAyMTUsIDE4OCwgMjE3LCAxODksIDM4LCAyNiwgMjgsIDIxNSwgMjA5LCAzOCwgMjYsIDI4LCAyMTYsIDIyNCwgMzgsIDI2LCAKKyAgICAyOCwgMjI1LCAxODksIDI2LCAyOCwgMjMzLCAzMiwgMjMwLCAxNDMsIDMxLCAyNDUsIDIyNCwgMjQ3LCAyMjUsIDMxLCAyNDEsIAorICAgIDIyMywgMjQ1LCAyMjQsIDI0NywgMjI1LCAzMSwgMjQwLCAyMTUsIDI0NSwgMjI0LCAyNDcsIDIyNSwgMzEsIDI0NSwgMjIzLCAKKyAgICAyNDEsIDIyNCwgMjQ3LCAyMjUsIDMxLCAyNDUsIDIyMywgMjQwLCAyMTQsIDI0NywgMjI1LCAzMSwgMjQ1LCAyMjQsIDE4MCwgCisgICAgMzEsIDI1MCwgMTc1LCAxODAsIDMxLCAyNDMsIDIzMCwgMjUwLCAzNiwgMTgwLCAzMSwgMjMwLCAxNzgsIDE4MCwgMzEsIAorICAgIDI1MiwgMTMxLCAxODAsIDMxLCAyMzQsIDE4MCwgMjE5LCA4MCwgMTgwLCAzMSwgMjQ5LCAxODAsIDE4MCwgMzEsIDI1MywgCisgICAgMjM0LCAxODAsIDMxLCAyMjYsIDE2NCwgMTgwLCAzMSwgMjUxLCAxNTQsIDIyNiwgMTMxLCAxODAsIDMxLCAyNDgsIDc0LCAKKyAgICAxNzcsIDI0NywgMTgwLCAxODAsIDMxLCAyNDcsIDE3NywgMTgwLCAzMSwgMjEwLCAyMjIsIDE4MCwgMzEsIDIzNSwgMjQ4LCAKKyAgICAxODAsIDMxLCAyMjUsIDE5OCwgMTgwLCAzMSwgMjIzLCAxMjgsIDE4MCwgMzEsIDI0OSwgMTkwLCAxODAsIDMxLCAyNDEsIAorICAgIDYxLCAyNTIsIDE4NSwgMTgwLCAzMSwgMjEyLCA1OSwgMTgwLCAzMSwgMjQ0LCA0MCwgMTgwLCAzMSwgMjU0LCAyNDcsIDE4MCwgCisgICAgMzEsIDIyMywgOTAsIDE4MCwgMzEsIDIyMywgNjYsIDE4MCwgMzEsIDI0NSwgMjIyLCAxODAsIDMxLCAyMzUsIDU0LCAxODAsIAorICAgIDMxLCAyNDksIDE4NSwgMTgwLCAzMSwgMjQ1LCAxNDMsIDE4MCwgMzEsIDI0NiwgNTMsIDE4MCwgMzEsIDI1MCwgMTQ2LCAKKyAgICAxODAsIDMxLCAyNDgsIDgzLCAxODAsIDMxLCAyMywgMjIzLCA2NSwgMTgwLCAzMSwgMjI2LCA4MiwgMTgwLCAzMSwgMjMzLCAKKyAgICAzNSwgMTgwLCAzMSwgMjQ5LCAyNTUsIDE4MCwgMzEsIDIzNCwgNzgsIDE4MCwgMzEsIDI0MywgODcsIDE4MCwgMzEsIDIxOCwgCisgICAgMTEzLCAxODAsIDMxLCAyMjQsIDEzMSwgMTgwLCAzMSwgMjQzLCAyMjksIDE4MCwgMzEsIDIyMywgNjcsIDE4MCwgMzEsIAorICAgIDIzMywgNzIsIDE3NywgMjMwLCAxNTgsIDE4MCwgMzEsIDIyMywgNjMsIDE4MCwgMzEsIDI0MiwgMTY5LCAyMTYsIDQzLCAKKyAgICAyMzEsIDc3LCAxODAsIDMxLCAyNDUsIDE0NSwgMTgwLCAzMSwgMjE4LCAxMjUsIDE4MCwgMzEsIDI0MiwgMTI5LCAxODAsIAorICAgIDMxLCAyNDUsIDEzNywgMTgwLCAzMSwgMjI1LCAyMzYsIDE4MCwgMzEsIDIyMiwgMjI2LCAxODAsIDMxLCAyNDQsIDYwLCAKKyAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAxOTQsIDE4MCwgMzEsIDIzMSwgOTAsIDE4MCwgCisgICAgMzEsIDI0NSwgNjIsIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIxMywgMTgwLCAzMSwgMjUwLCAxLCAyMzAsIAorICAgIDExMSwgMTgwLCAzMSwgMjQyLCAxMDcsIDE4MCwgMzEsIDI0MywgODgsIDIzNiwgMCwgMTgwLCAzMSwgMjMxLCAxNDIsIDE4MCwgCisgICAgMzEsIDI1NSwgMTEsIDE4MCwgMzEsIDI0NSwgMTU4LCAxODAsIDMxLCAyNDYsIDExMCwgMTgwLCAzMSwgMjEyLCA0MiwgMTgwLCAKKyAgICAzMSwgMjE5LCAxNTEsIDE4MCwgMzEsIDIzNSwgMjIzLCAxODAsIDMxLCAyNDgsIDQzLCAxODAsIDMxLCAyNDgsIDE2MSwgCisgICAgMTgwLCAzMSwgMjQ3LCAyMDksIDE4MCwgMzEsIDI0NSwgMzAsIDE4MCwgMzEsIDIyMCwgMTE2LCAxODAsIDMxLCAyMTgsIAorICAgIDEyOSwgMTgwLCAzMSwgMjQyLCAzLCAxODAsIDMxLCAyNDksIDIxMywgMTgwLCAzMSwgMjQ5LCAyNTIsIDE4MCwgMzEsIDI0NCwgCisgICAgMTc4LCAxODAsIDMxLCAyNTQsIDIxMywgMTgwLCAzMSwgMjQ5LCAyMTIsIDE4MCwgMzEsIDIyNiwgMTk4LCAyMTYsIDE5NywgCisgICAgMjEzLCAyNDIsIDE4MCwgMzEsIDI0NywgMjMzLCAxODAsIDMxLCAyMzMsIDEyNSwgMTgwLCAzMSwgMjQ0LCAxNCwgMjQ5LCAKKyAgICAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIDExMCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIDEwNSwgCisgICAgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIDE1OCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIAorICAgIDE2MSwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIDE4OSwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgCisgICAgMjEsIDE5NCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIDE5OCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIAorICAgIDE3NCwgMjEsIDE5NSwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTQsIDE3NCwgMjEsIDIwMCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAKKyAgICAyMTYsIDI0NCwgMjEsIDExMCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDEwNSwgMjQ5LCAxNTAsIDIyMiwgCisgICAgMjAzLCAyMTYsIDI0NCwgMjEsIDE1OCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDE2MSwgMjQ5LCAxNTAsIAorICAgIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDE4OSwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDE5NCwgMjQ5LCAKKyAgICAxNTAsIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDE5OCwgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDE5NSwgCisgICAgMjQ5LCAxNTAsIDIyMiwgMjAzLCAyMTYsIDI0NCwgMjEsIDIwMCwgMTEsIDIzLCA2LCA2MSwgMTEsIDIzLCA2LCAyNTMsIAorICAgIDE1OSwgMTEsIDIzLCA2LCAyNTEsIDY3LCAxMSwgMjMsIDYsIDI0OSwgNjEsIDExLCAyMywgNiwgNzUsIDExLCAyMywgNiwgCisgICAgMjQ1LCA3LCAxMSwgMjMsIDYsIDI0MywgMjAzLCAxMSwgMjMsIDYsIDI0MiwgNjEsIDExLCAyMywgNiwgNzMsIDExLCAyMywgCisgICAgNiwgMjM1LCAxNDUsIDExLCAyMywgNiwgMjM1LCAyNCwgMTEsIDIzLCA2LCAxNTYsIDExLCAyMywgNiwgMTkzLCAxMSwgMjMsIAorICAgIDYsIDIzMCwgMjYsIDExLCAyMywgNiwgNzYsIDExLCAyMywgNiwgMjI2LCAxMDYsIDExLCAyMywgNiwgMjI0LCA5NywgMTEsIAorICAgIDIzLCA2LCAxNTMsIDExLCAyMywgNiwgMjIyLCA5MiwgMTEsIDIzLCA2LCAyMTcsIDE1MywgMTEsIDIzLCA2LCA3MCwgMTEsIAorICAgIDIzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMjMsIDYsIDIxMSwgCisgICAgMTE3LCAxMSwgMjMsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDQsIDYxLCAxMSwgMjMsIDQsIDI1MywgMTU5LCAxMSwgMjMsIDQsIAorICAgIDI1MSwgNjcsIDExLCAyMywgNCwgMjQ5LCA2MSwgMTEsIDIzLCA0LCA3NSwgMTEsIDIzLCA0LCAyNDUsIDcsIDExLCAyMywgNCwgCisgICAgMjQzLCAyMDMsIDExLCAyMywgNCwgMjQyLCA2MSwgMTEsIDIzLCA0LCA3MywgMTEsIDIzLCA0LCAyMzUsIDE0NSwgMTEsIDIzLCAKKyAgICA0LCAyMzUsIDI0LCAxMSwgMjMsIDQsIDE1NiwgMTEsIDIzLCA0LCAxOTMsIDExLCAyMywgNCwgMjMwLCAyNiwgMTEsIDIzLCAKKyAgICA0LCA3NiwgMTEsIDIzLCA0LCAyMjYsIDEwNiwgMTEsIDIzLCA0LCAyMjQsIDk3LCAxMSwgMjMsIDQsIDE1MywgMTEsIDIzLCAKKyAgICA0LCAyMjIsIDkyLCAxMSwgMjMsIDQsIDIxNywgMTUzLCAxMSwgMjMsIDQsIDcwLCAxMSwgMjMsIDQsIDIxNCwgMTA1LCAxMSwgCisgICAgMjMsIDQsIDIxMiwgOTgsIDExLCAyMywgNCwgMjExLCAxNzgsIDExLCAyMywgNCwgMjExLCAxMTcsIDExLCAyMywgNCwgMjEwLCAKKyAgICAxNTksIDExLCAzMiwgNiwgNjEsIDExLCAzMiwgNiwgMjUzLCAxNTksIDExLCAzMiwgNiwgMjUxLCA2NywgMTEsIDMyLCA2LCAKKyAgICAyNDksIDYxLCAxMSwgMzIsIDYsIDc1LCAxMSwgMzIsIDYsIDI0NSwgNywgMTEsIDMyLCA2LCAyNDMsIDIwMywgMTEsIDMyLCAKKyAgICA2LCAyNDIsIDYxLCAxMSwgMzIsIDYsIDczLCAxMSwgMzIsIDYsIDIzNSwgMTQ1LCAxMSwgMzIsIDYsIDIzNSwgMjQsIDExLCAKKyAgICAzMiwgNiwgMTU2LCAxMSwgMzIsIDYsIDE5MywgMTEsIDMyLCA2LCAyMzAsIDI2LCAxMSwgMzIsIDYsIDc2LCAxMSwgMzIsIDYsIAorICAgIDIyNiwgMTA2LCAxMSwgMzIsIDYsIDIyNCwgOTcsIDExLCAzMiwgNiwgMTUzLCAxMSwgMzIsIDYsIDIyMiwgOTIsIDExLCAzMiwgCisgICAgNiwgMjE3LCAxNTMsIDExLCAzMiwgNiwgNzAsIDExLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzMiwgNiwgMjEyLCA5OCwgMTEsIAorICAgIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDMyLCA2LCAyMTEsIDExNywgMTEsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDMyLCA0LCA2MSwgCisgICAgMTEsIDMyLCA0LCAyNTMsIDE1OSwgMTEsIDMyLCA0LCAyNTEsIDY3LCAxMSwgMzIsIDQsIDI0OSwgNjEsIDExLCAzMiwgNCwgCisgICAgNzUsIDExLCAzMiwgNCwgMjQ1LCA3LCAxMSwgMzIsIDQsIDI0MywgMjAzLCAxMSwgMzIsIDQsIDczLCAxMSwgMzIsIDQsIAorICAgIDIzNSwgMTQ1LCAxMSwgMzIsIDQsIDIzNSwgMjQsIDExLCAzMiwgNCwgMTU2LCAxMSwgMzIsIDQsIDE5MywgMTEsIDMyLCA0LCAKKyAgICAyMzAsIDI2LCAxMSwgMzIsIDQsIDc2LCAxMSwgMzIsIDQsIDIyNiwgMTA2LCAxMSwgMzIsIDQsIDIyNCwgOTcsIDExLCAzMiwgCisgICAgNCwgMTUzLCAxMSwgMzIsIDQsIDIyMiwgOTIsIDExLCAzMiwgNCwgMjE3LCAxNTMsIDExLCAzMiwgNCwgNzAsIDExLCAzMiwgCisgICAgNCwgMjE0LCAxMDUsIDExLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDMyLCA0LCAyMTEsIDE3OCwgMTEsIDMyLCA0LCAyMTEsIAorICAgIDExNywgMTEsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgNiwgNjEsIDExLCAyMywgMzIsIDYsIDI1MywgMTU5LCAxMSwgCisgICAgMjMsIDMyLCA2LCAyNTEsIDY3LCAxMSwgMjMsIDMyLCA2LCAyNDksIDYxLCAxMSwgMjMsIDMyLCA2LCA3NSwgMTEsIDIzLCAKKyAgICAzMiwgNiwgMjQ1LCA3LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDIwMywgMTEsIDIzLCAzMiwgNiwgMjQyLCA2MSwgMTEsIDIzLCAKKyAgICAzMiwgNiwgNzMsIDExLCAyMywgMzIsIDYsIDIzNSwgMTQ1LCAxMSwgMjMsIDMyLCA2LCAyMzUsIDI0LCAxMSwgMjMsIDMyLCAKKyAgICA2LCAxNTYsIDExLCAyMywgMzIsIDYsIDE5MywgMTEsIDIzLCAzMiwgNiwgMjMwLCAyNiwgMTEsIDIzLCAzMiwgNiwgNzYsIAorICAgIDExLCAyMywgMzIsIDYsIDIyNiwgMTA2LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDk3LCAxMSwgMjMsIDMyLCA2LCAxNTMsIDExLCAKKyAgICAyMywgMzIsIDYsIDIyMiwgOTIsIDExLCAyMywgMzIsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDMyLCA2LCA3MCwgMTEsIDIzLCAKKyAgICAzMiwgNiwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAyMywgMzIsIDQsIDYxLCAxMSwgMjMsIDMyLCAKKyAgICA0LCAyNTMsIDE1OSwgMTEsIDIzLCAzMiwgNCwgMjUxLCA2NywgMTEsIDIzLCAzMiwgNCwgMjQ5LCA2MSwgMTEsIDIzLCAzMiwgCisgICAgNCwgNzUsIDExLCAyMywgMzIsIDQsIDI0NSwgNywgMTEsIDIzLCAzMiwgNCwgMjQzLCAyMDMsIDExLCAyMywgMzIsIDQsIAorICAgIDI0MiwgNjEsIDExLCAyMywgMzIsIDQsIDczLCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE0NSwgMTEsIDIzLCAzMiwgNCwgMjM1LCAKKyAgICAyNCwgMTEsIDIzLCAzMiwgNCwgMTU2LCAxMSwgMjMsIDMyLCA0LCAxOTMsIDExLCAyMywgMzIsIDQsIDIzMCwgMjYsIDExLCAKKyAgICAyMywgMzIsIDQsIDc2LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDEwNiwgMTEsIDIzLCAzMiwgNCwgMjI0LCA5NywgMTEsIDIzLCAKKyAgICAzMiwgNCwgMTUzLCAxMSwgMjMsIDMyLCA0LCAyMjIsIDkyLCAxMSwgMjMsIDMyLCA0LCAyMTcsIDE1MywgMTEsIDIzLCAzMiwgCisgICAgNCwgNzAsIDExLCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyMTEsIDE3OCwgMTEsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAyMywgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMTE5LCA2LCAKKyAgICA2MSwgMTEsIDExOSwgNiwgMjUxLCA2NywgMTEsIDExOSwgNiwgMjQ5LCA2MSwgMTEsIDExOSwgNiwgMjQzLCAyMDMsIDExLCAKKyAgICAxMTksIDYsIDIzNSwgMTQ1LCAxMSwgMTE5LCA2LCAyMzUsIDI0LCAxMSwgMTE5LCA2LCAyMzAsIDI2LCAxMSwgMTE5LCA2LCAKKyAgICA3NiwgMTEsIDExOSwgNiwgMjI2LCAxMDYsIDExLCAxMTksIDYsIDIyNCwgOTcsIDExLCAxMTksIDYsIDIyMiwgOTIsIDExLCAKKyAgICAxMTksIDYsIDIxNywgMTUzLCAxMSwgMTE5LCA2LCA3MCwgMTEsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAxMTksIDYsIDIxMiwgCisgICAgOTgsIDExLCAxMTksIDYsIDIxMSwgMTc4LCAxMSwgMTE5LCA2LCAyMTEsIDExNywgMTEsIDExOSwgNiwgMjEwLCAxNTksIDExLCAKKyAgICAxMTksIDQsIDYxLCAxMSwgMTE5LCA0LCAyNTMsIDE1OSwgMTEsIDExOSwgNCwgMjUxLCA2NywgMTEsIDExOSwgNCwgMjQ5LCAKKyAgICA2MSwgMTEsIDExOSwgNCwgMjQ1LCA3LCAxMSwgMTE5LCA0LCAyNDIsIDYxLCAxMSwgMTE5LCA0LCA3MywgMTEsIDExOSwgNCwgCisgICAgMjM1LCAxNDUsIDExLCAxMTksIDQsIDIzNSwgMjQsIDExLCAxMTksIDQsIDE1NiwgMTEsIDExOSwgNCwgMTkzLCAxMSwgMTE5LCAKKyAgICA0LCAyMzAsIDI2LCAxMSwgMTE5LCA0LCAyMjYsIDEwNiwgMTEsIDExOSwgNCwgMjI0LCA5NywgMTEsIDExOSwgNCwgMTUzLCAKKyAgICAxMSwgMTE5LCA0LCAyMjIsIDkyLCAxMSwgMTE5LCA0LCAyMTcsIDE1MywgMTEsIDExOSwgNCwgNzAsIDExLCAxMTksIDQsIAorICAgIDIxNCwgMTA1LCAxMSwgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMTE5LCA0LCAyMTEsIDE3OCwgMTEsIDExOSwgNCwgMjExLCAKKyAgICAxMTcsIDExLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNiwgNjEsIDExLCAyMywgMTE5LCA2LCAyNTMsIDE1OSwgCisgICAgMTEsIDIzLCAxMTksIDYsIDI1MSwgNjcsIDExLCAyMywgMTE5LCA2LCAyNDksIDYxLCAxMSwgMjMsIDExOSwgNiwgNzUsIDExLCAKKyAgICAyMywgMTE5LCA2LCAyNDUsIDcsIDExLCAyMywgMTE5LCA2LCAyNDMsIDIwMywgMTEsIDIzLCAxMTksIDYsIDI0MiwgNjEsIAorICAgIDExLCAyMywgMTE5LCA2LCA3MywgMTEsIDIzLCAxMTksIDYsIDIzNSwgMTQ1LCAxMSwgMjMsIDExOSwgNiwgMjM1LCAyNCwgCisgICAgMTEsIDIzLCAxMTksIDYsIDE1NiwgMTEsIDIzLCAxMTksIDYsIDE5MywgMTEsIDIzLCAxMTksIDYsIDIzMCwgMjYsIDExLCAKKyAgICAyMywgMTE5LCA2LCA3NiwgMTEsIDIzLCAxMTksIDYsIDIyNiwgMTA2LCAxMSwgMjMsIDExOSwgNiwgMjI0LCA5NywgMTEsIAorICAgIDIzLCAxMTksIDYsIDE1MywgMTEsIDIzLCAxMTksIDYsIDIyMiwgOTIsIDExLCAyMywgMTE5LCA2LCAyMTcsIDE1MywgMTEsIAorICAgIDIzLCAxMTksIDYsIDcwLCAxMSwgMjMsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA2LCAyMTIsIDk4LCAxMSwgCisgICAgMjMsIDExOSwgNiwgMjExLCAxNzgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDYsIDIxMCwgMTU5LCAKKyAgICAxMSwgMjMsIDExOSwgNCwgNjEsIDExLCAyMywgMTE5LCA0LCAyNTMsIDE1OSwgMTEsIDIzLCAxMTksIDQsIDI1MSwgNjcsIAorICAgIDExLCAyMywgMTE5LCA0LCAyNDksIDYxLCAxMSwgMjMsIDExOSwgNCwgNzUsIDExLCAyMywgMTE5LCA0LCAyNDUsIDcsIDExLCAKKyAgICAyMywgMTE5LCA0LCAyNDMsIDIwMywgMTEsIDIzLCAxMTksIDQsIDI0MiwgNjEsIDExLCAyMywgMTE5LCA0LCA3MywgMTEsIAorICAgIDIzLCAxMTksIDQsIDIzNSwgMTQ1LCAxMSwgMjMsIDExOSwgNCwgMjM1LCAyNCwgMTEsIDIzLCAxMTksIDQsIDE1NiwgMTEsIAorICAgIDIzLCAxMTksIDQsIDE5MywgMTEsIDIzLCAxMTksIDQsIDIzMCwgMjYsIDExLCAyMywgMTE5LCA0LCA3NiwgMTEsIDIzLCAKKyAgICAxMTksIDQsIDIyNiwgMTA2LCAxMSwgMjMsIDExOSwgNCwgMjI0LCA5NywgMTEsIDIzLCAxMTksIDQsIDE1MywgMTEsIDIzLCAKKyAgICAxMTksIDQsIDIyMiwgOTIsIDExLCAyMywgMTE5LCA0LCAyMTcsIDE1MywgMTEsIDIzLCAxMTksIDQsIDcwLCAxMSwgMjMsIAorICAgIDExOSwgNCwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAxNzgsIDExLCAKKyAgICAyMywgMTE5LCA0LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMTMzLCA2LCA2MSwgMTEsIDEzMywgCisgICAgNiwgMjUzLCAxNTksIDExLCAxMzMsIDYsIDI0OSwgNjEsIDExLCAxMzMsIDYsIDc1LCAxMSwgMTMzLCA2LCAyNDUsIDcsIDExLCAKKyAgICAxMzMsIDYsIDI0MywgMjAzLCAxMSwgMTMzLCA2LCAyMzUsIDE0NSwgMTEsIDEzMywgNiwgMjM1LCAyNCwgMTEsIDEzMywgNiwgCisgICAgMTU2LCAxMSwgMTMzLCA2LCAxOTMsIDExLCAxMzMsIDYsIDIzMCwgMjYsIDExLCAxMzMsIDYsIDc2LCAxMSwgMTMzLCA2LCAKKyAgICAyMjYsIDEwNiwgMTEsIDEzMywgNiwgMjI0LCA5NywgMTEsIDEzMywgNiwgMjIyLCA5MiwgMTEsIDEzMywgNiwgMjE3LCAxNTMsIAorICAgIDExLCAxMzMsIDYsIDcwLCAxMSwgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDEzMywgNiwgMjEyLCA5OCwgMTEsIDEzMywgNiwgCisgICAgMjExLCAxNzgsIDExLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCA2MSwgMTEsIDEzMywgNCwgMjUzLCAxNTksIDExLCAKKyAgICAxMzMsIDQsIDI1MSwgNjcsIDExLCAxMzMsIDQsIDI0OSwgNjEsIDExLCAxMzMsIDQsIDc1LCAxMSwgMTMzLCA0LCAyNDUsIDcsIAorICAgIDExLCAxMzMsIDQsIDI0MywgMjAzLCAxMSwgMTMzLCA0LCAyNDIsIDYxLCAxMSwgMTMzLCA0LCA3MywgMTEsIDEzMywgNCwgCisgICAgMjM1LCAxNDUsIDExLCAxMzMsIDQsIDIzNSwgMjQsIDExLCAxMzMsIDQsIDE1NiwgMTEsIDEzMywgNCwgMTkzLCAxMSwgMTMzLCAKKyAgICA0LCAyMzAsIDI2LCAxMSwgMTMzLCA0LCA3NiwgMTEsIDEzMywgNCwgMjI2LCAxMDYsIDExLCAxMzMsIDQsIDIyNCwgOTcsIAorICAgIDExLCAxMzMsIDQsIDE1MywgMTEsIDEzMywgNCwgMjIyLCA5MiwgMTEsIDEzMywgNCwgMjE3LCAxNTMsIDExLCAxMzMsIDQsIAorICAgIDcwLCAxMSwgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDEzMywgNCwgMjEyLCA5OCwgMTEsIDEzMywgNCwgMjExLCAxNzgsIDExLCAKKyAgICAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDEzOSwgNiwgNjEsIDExLCAxMzksIDYsIDI1MywgCisgICAgMTU5LCAxMSwgMTM5LCA2LCAyNDksIDYxLCAxMSwgMTM5LCA2LCA3NSwgMTEsIDEzOSwgNiwgMjQ1LCA3LCAxMSwgMTM5LCA2LCAKKyAgICAyNDMsIDIwMywgMTEsIDEzOSwgNiwgNzMsIDExLCAxMzksIDYsIDIzNSwgMTQ1LCAxMSwgMTM5LCA2LCAyMzUsIDI0LCAxMSwgCisgICAgMTM5LCA2LCAxNTYsIDExLCAxMzksIDYsIDE5MywgMTEsIDEzOSwgNiwgNzYsIDExLCAxMzksIDYsIDIyMiwgOTIsIDExLCAKKyAgICAxMzksIDYsIDIxNywgMTUzLCAxMSwgMTM5LCA2LCA3MCwgMTEsIDEzOSwgNiwgMjE0LCAxMDUsIDExLCAxMzksIDYsIDIxMiwgCisgICAgOTgsIDExLCAxMzksIDYsIDIxMSwgMTc4LCAxMSwgMTM5LCA2LCAyMTEsIDExNywgMTEsIDEzOSwgNCwgNjEsIDExLCAxMzksIAorICAgIDQsIDI1MywgMTU5LCAxMSwgMTM5LCA0LCAyNTEsIDY3LCAxMSwgMTM5LCA0LCAyNDksIDYxLCAxMSwgMTM5LCA0LCA3NSwgCisgICAgMTEsIDEzOSwgNCwgMjQ1LCA3LCAxMSwgMTM5LCA0LCAyNDMsIDIwMywgMTEsIDEzOSwgNCwgMjQyLCA2MSwgMTEsIDEzOSwgCisgICAgNCwgNzMsIDExLCAxMzksIDQsIDIzNSwgMTQ1LCAxMSwgMTM5LCA0LCAyMzUsIDI0LCAxMSwgMTM5LCA0LCAxNTYsIDExLCAKKyAgICAxMzksIDQsIDE5MywgMTEsIDEzOSwgNCwgMjMwLCAyNiwgMTEsIDEzOSwgNCwgNzYsIDExLCAxMzksIDQsIDIyNiwgMTA2LCAKKyAgICAxMSwgMTM5LCA0LCAyMjQsIDk3LCAxMSwgMTM5LCA0LCAxNTMsIDExLCAxMzksIDQsIDIyMiwgOTIsIDExLCAxMzksIDQsIAorICAgIDIxNywgMTUzLCAxMSwgMTM5LCA0LCA3MCwgMTEsIDEzOSwgNCwgMjE0LCAxMDUsIDExLCAxMzksIDQsIDIxMiwgOTgsIDExLCAKKyAgICAxMzksIDQsIDIxMSwgMTc4LCAxMSwgMTM5LCA0LCAyMTEsIDExNywgMTEsIDEzOSwgNCwgMjEwLCAxNTksIDExLCAyMywgCisgICAgMTMzLCA2LCA2MSwgMTEsIDIzLCAxMzMsIDYsIDI1MywgMTU5LCAxMSwgMjMsIDEzMywgNiwgMjUxLCA2NywgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDI0OSwgNjEsIDExLCAyMywgMTMzLCA2LCA3NSwgMTEsIDIzLCAxMzMsIDYsIDI0NSwgNywgMTEsIDIzLCAxMzMsIAorICAgIDYsIDI0MywgMjAzLCAxMSwgMjMsIDEzMywgNiwgMjQyLCA2MSwgMTEsIDIzLCAxMzMsIDYsIDczLCAxMSwgMjMsIDEzMywgNiwgCisgICAgMjM1LCAxNDUsIDExLCAyMywgMTMzLCA2LCAyMzUsIDI0LCAxMSwgMjMsIDEzMywgNiwgMTU2LCAxMSwgMjMsIDEzMywgNiwgCisgICAgMTkzLCAxMSwgMjMsIDEzMywgNiwgMjMwLCAyNiwgMTEsIDIzLCAxMzMsIDYsIDc2LCAxMSwgMjMsIDEzMywgNiwgMjI2LCAKKyAgICAxMDYsIDExLCAyMywgMTMzLCA2LCAyMjQsIDk3LCAxMSwgMjMsIDEzMywgNiwgMTUzLCAxMSwgMjMsIDEzMywgNiwgMjIyLCAKKyAgICA5MiwgMTEsIDIzLCAxMzMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDEzMywgNiwgNzAsIDExLCAyMywgMTMzLCA2LCAyMTQsIAorICAgIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDIzLCAxMzMsIDYsIAorICAgIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNiwgMjEwLCAxNTksIDExLCAyMywgMTMzLCA0LCA2MSwgMTEsIDIzLCAxMzMsIDQsIAorICAgIDI1MywgMTU5LCAxMSwgMjMsIDEzMywgNCwgMjUxLCA2NywgMTEsIDIzLCAxMzMsIDQsIDI0OSwgNjEsIDExLCAyMywgMTMzLCAKKyAgICA0LCA3NSwgMTEsIDIzLCAxMzMsIDQsIDI0NSwgNywgMTEsIDIzLCAxMzMsIDQsIDI0MywgMjAzLCAxMSwgMjMsIDEzMywgNCwgCisgICAgMjQyLCA2MSwgMTEsIDIzLCAxMzMsIDQsIDczLCAxMSwgMjMsIDEzMywgNCwgMjM1LCAxNDUsIDExLCAyMywgMTMzLCA0LCAKKyAgICAyMzUsIDI0LCAxMSwgMjMsIDEzMywgNCwgMTU2LCAxMSwgMjMsIDEzMywgNCwgMTkzLCAxMSwgMjMsIDEzMywgNCwgMjMwLCAKKyAgICAyNiwgMTEsIDIzLCAxMzMsIDQsIDc2LCAxMSwgMjMsIDEzMywgNCwgMjI2LCAxMDYsIDExLCAyMywgMTMzLCA0LCAyMjQsIAorICAgIDk3LCAxMSwgMjMsIDEzMywgNCwgMTUzLCAxMSwgMjMsIDEzMywgNCwgMjIyLCA5MiwgMTEsIDIzLCAxMzMsIDQsIDIxNywgCisgICAgMTUzLCAxMSwgMjMsIDEzMywgNCwgNzAsIDExLCAyMywgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAxMzMsIDQsIDIxMiwgCisgICAgOTgsIDExLCAyMywgMTMzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNCwgCisgICAgMjEwLCAxNTksIDExLCAzNSwgNiwgNjEsIDExLCAzNSwgNiwgMjUzLCAxNTksIDExLCAzNSwgNiwgMjUxLCA2NywgMTEsIDM1LCAKKyAgICA2LCAyNDksIDYxLCAxMSwgMzUsIDYsIDc1LCAxMSwgMzUsIDYsIDI0NSwgNywgMTEsIDM1LCA2LCAyNDMsIDIwMywgMTEsIAorICAgIDM1LCA2LCAyNDIsIDYxLCAxMSwgMzUsIDYsIDczLCAxMSwgMzUsIDYsIDIzNSwgMTQ1LCAxMSwgMzUsIDYsIDIzNSwgMjQsIAorICAgIDExLCAzNSwgNiwgMTU2LCAxMSwgMzUsIDYsIDE5MywgMTEsIDM1LCA2LCAyMzAsIDI2LCAxMSwgMzUsIDYsIDc2LCAxMSwgCisgICAgMzUsIDYsIDIyNiwgMTA2LCAxMSwgMzUsIDYsIDIyNCwgOTcsIDExLCAzNSwgNiwgMTUzLCAxMSwgMzUsIDYsIDIyMiwgOTIsIAorICAgIDExLCAzNSwgNiwgMjE3LCAxNTMsIDExLCAzNSwgNiwgNzAsIDExLCAzNSwgNiwgMjE0LCAxMDUsIDExLCAzNSwgNiwgMjEyLCAKKyAgICA5OCwgMTEsIDM1LCA2LCAyMTEsIDE3OCwgMTEsIDM1LCA2LCAyMTEsIDExNywgMTEsIDM1LCA2LCAyMTAsIDE1OSwgMTEsIAorICAgIDM1LCA0LCA2MSwgMTEsIDM1LCA0LCAyNTMsIDE1OSwgMTEsIDM1LCA0LCAyNTEsIDY3LCAxMSwgMzUsIDQsIDI0OSwgNjEsIAorICAgIDExLCAzNSwgNCwgNzUsIDExLCAzNSwgNCwgMjQ1LCA3LCAxMSwgMzUsIDQsIDI0MywgMjAzLCAxMSwgMzUsIDQsIDI0MiwgCisgICAgNjEsIDExLCAzNSwgNCwgNzMsIDExLCAzNSwgNCwgMjM1LCAxNDUsIDExLCAzNSwgNCwgMjM1LCAyNCwgMTEsIDM1LCA0LCAKKyAgICAxNTYsIDExLCAzNSwgNCwgMTkzLCAxMSwgMzUsIDQsIDIzMCwgMjYsIDExLCAzNSwgNCwgNzYsIDExLCAzNSwgNCwgMjI2LCAKKyAgICAxMDYsIDExLCAzNSwgNCwgMjI0LCA5NywgMTEsIDM1LCA0LCAxNTMsIDExLCAzNSwgNCwgMjIyLCA5MiwgMTEsIDM1LCA0LCAKKyAgICAyMTcsIDE1MywgMTEsIDM1LCA0LCA3MCwgMTEsIDM1LCA0LCAyMTQsIDEwNSwgMTEsIDM1LCA0LCAyMTIsIDk4LCAxMSwgMzUsIAorICAgIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCA2LCA2MSwgCisgICAgMTEsIDM1LCAyMywgNiwgMjUzLCAxNTksIDExLCAzNSwgMjMsIDYsIDI1MSwgNjcsIDExLCAzNSwgMjMsIDYsIDI0OSwgNjEsIAorICAgIDExLCAzNSwgMjMsIDYsIDc1LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDcsIDExLCAzNSwgMjMsIDYsIDI0MywgMjAzLCAxMSwgCisgICAgMzUsIDIzLCA2LCAyNDIsIDYxLCAxMSwgMzUsIDIzLCA2LCA3MywgMTEsIDM1LCAyMywgNiwgMjM1LCAxNDUsIDExLCAzNSwgCisgICAgMjMsIDYsIDIzNSwgMjQsIDExLCAzNSwgMjMsIDYsIDE1NiwgMTEsIDM1LCAyMywgNiwgMTkzLCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMzAsIDI2LCAxMSwgMzUsIDIzLCA2LCA3NiwgMTEsIDM1LCAyMywgNiwgMjI2LCAxMDYsIDExLCAzNSwgMjMsIDYsIDIyNCwgCisgICAgOTcsIDExLCAzNSwgMjMsIDYsIDE1MywgMTEsIDM1LCAyMywgNiwgMjIyLCA5MiwgMTEsIDM1LCAyMywgNiwgMjE3LCAxNTMsIAorICAgIDExLCAzNSwgMjMsIDYsIDcwLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgNiwgMjEyLCA5OCwgMTEsIAorICAgIDM1LCAyMywgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCA2LCAyMTAsIDE1OSwgCisgICAgMTEsIDM1LCAyMywgNCwgNjEsIDExLCAzNSwgMjMsIDQsIDI1MywgMTU5LCAxMSwgMzUsIDIzLCA0LCAyNTEsIDY3LCAxMSwgCisgICAgMzUsIDIzLCA0LCAyNDksIDYxLCAxMSwgMzUsIDIzLCA0LCA3NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCA3LCAxMSwgMzUsIDIzLCAKKyAgICA0LCAyNDMsIDIwMywgMTEsIDM1LCAyMywgNCwgMjQyLCA2MSwgMTEsIDM1LCAyMywgNCwgNzMsIDExLCAzNSwgMjMsIDQsIAorICAgIDIzNSwgMTQ1LCAxMSwgMzUsIDIzLCA0LCAyMzUsIDI0LCAxMSwgMzUsIDIzLCA0LCAxNTYsIDExLCAzNSwgMjMsIDQsIDE5MywgCisgICAgMTEsIDM1LCAyMywgNCwgMjMwLCAyNiwgMTEsIDM1LCAyMywgNCwgNzYsIDExLCAzNSwgMjMsIDQsIDIyNiwgMTA2LCAxMSwgCisgICAgMzUsIDIzLCA0LCAyMjQsIDk3LCAxMSwgMzUsIDIzLCA0LCAxNTMsIDExLCAzNSwgMjMsIDQsIDIyMiwgOTIsIDExLCAzNSwgCisgICAgMjMsIDQsIDIxNywgMTUzLCAxMSwgMzUsIDIzLCA0LCA3MCwgMTEsIDM1LCAyMywgNCwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIAorICAgIDQsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDExNywgMTEsIDM1LCAyMywgCisgICAgNCwgMjEwLCAxNTksIDExLCAzNSwgMzIsIDYsIDYxLCAxMSwgMzUsIDMyLCA2LCAyNTMsIDE1OSwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjUxLCA2NywgMTEsIDM1LCAzMiwgNiwgMjQ5LCA2MSwgMTEsIDM1LCAzMiwgNiwgNzUsIDExLCAzNSwgMzIsIDYsIDI0NSwgCisgICAgNywgMTEsIDM1LCAzMiwgNiwgMjQzLCAyMDMsIDExLCAzNSwgMzIsIDYsIDI0MiwgNjEsIDExLCAzNSwgMzIsIDYsIDczLCAKKyAgICAxMSwgMzUsIDMyLCA2LCAyMzUsIDE0NSwgMTEsIDM1LCAzMiwgNiwgMjM1LCAyNCwgMTEsIDM1LCAzMiwgNiwgMTU2LCAxMSwgCisgICAgMzUsIDMyLCA2LCAxOTMsIDExLCAzNSwgMzIsIDYsIDIzMCwgMjYsIDExLCAzNSwgMzIsIDYsIDc2LCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyMjYsIDEwNiwgMTEsIDM1LCAzMiwgNiwgMjI0LCA5NywgMTEsIDM1LCAzMiwgNiwgMTUzLCAxMSwgMzUsIDMyLCA2LCAyMjIsIAorICAgIDkyLCAxMSwgMzUsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAzMiwgNiwgNzAsIDExLCAzNSwgMzIsIDYsIDIxNCwgMTA1LCAKKyAgICAxMSwgMzUsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAzMiwgNiwgMjExLCAxMTcsIAorICAgIDExLCAzNSwgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCA0LCA2MSwgMTEsIDM1LCAzMiwgNCwgMjUzLCAxNTksIDExLCAKKyAgICAzNSwgMzIsIDQsIDI1MSwgNjcsIDExLCAzNSwgMzIsIDQsIDI0OSwgNjEsIDExLCAzNSwgMzIsIDQsIDc1LCAxMSwgMzUsIAorICAgIDMyLCA0LCAyNDUsIDcsIDExLCAzNSwgMzIsIDQsIDI0MywgMjAzLCAxMSwgMzUsIDMyLCA0LCAyNDIsIDYxLCAxMSwgMzUsIAorICAgIDMyLCA0LCA3MywgMTEsIDM1LCAzMiwgNCwgMjM1LCAxNDUsIDExLCAzNSwgMzIsIDQsIDIzNSwgMjQsIDExLCAzNSwgMzIsIAorICAgIDQsIDE1NiwgMTEsIDM1LCAzMiwgNCwgMTkzLCAxMSwgMzUsIDMyLCA0LCAyMzAsIDI2LCAxMSwgMzUsIDMyLCA0LCA3NiwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjI2LCAxMDYsIDExLCAzNSwgMzIsIDQsIDIyNCwgOTcsIDExLCAzNSwgMzIsIDQsIDE1MywgMTEsIAorICAgIDM1LCAzMiwgNCwgMjIyLCA5MiwgMTEsIDM1LCAzMiwgNCwgMjE3LCAxNTMsIDExLCAzNSwgMzIsIDQsIDcwLCAxMSwgMzUsIAorICAgIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAzMiwgNCwgMjExLCAxNzgsIDExLCAzNSwgCisgICAgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgMzIsIDYsIDYxLCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjUzLCAxNTksIDExLCAzNSwgMjMsIDMyLCA2LCAyNTEsIDY3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ5LCAKKyAgICA2MSwgMTEsIDM1LCAyMywgMzIsIDYsIDc1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCA3LCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMjQzLCAyMDMsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDIsIDYxLCAxMSwgMzUsIDIzLCAzMiwgNiwgNzMsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyMzUsIDE0NSwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNSwgMjQsIDExLCAzNSwgMjMsIDMyLCA2LCAxNTYsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA2LCAxOTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDI2LCAxMSwgMzUsIDIzLCAzMiwgNiwgNzYsIAorICAgIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDEwNiwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgOTcsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjIsIDkyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCAxNTMsIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCA3MCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjEyLCA5OCwgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgMzIsIDQsIDYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUzLCAxNTksIDExLCAzNSwgCisgICAgMjMsIDMyLCA0LCAyNTEsIDY3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ5LCA2MSwgMTEsIDM1LCAyMywgMzIsIDQsIDc1LCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQzLCAyMDMsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyNDIsIDYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgNzMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDE0NSwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDQsIDIzNSwgMjQsIDExLCAzNSwgMjMsIDMyLCA0LCAxNTYsIDExLCAzNSwgMjMsIDMyLCA0LCAxOTMsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA0LCAyMzAsIDI2LCAxMSwgMzUsIDIzLCAzMiwgNCwgNzYsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIAorICAgIDEwNiwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgOTcsIDExLCAzNSwgMjMsIDMyLCA0LCAxNTMsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyMjIsIDkyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCA3MCwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgCisgICAgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzMCwgCisgICAgMTM5LCA2LCA2MSwgMTEsIDIzMCwgMTM5LCA2LCAyNTMsIDE1OSwgMTEsIDIzMCwgMTM5LCA2LCAyNTEsIDY3LCAxMSwgMjMwLCAKKyAgICAxMzksIDYsIDI0OSwgNjEsIDExLCAyMzAsIDEzOSwgNiwgNzUsIDExLCAyMzAsIDEzOSwgNiwgMjQ1LCA3LCAxMSwgMjMwLCAKKyAgICAxMzksIDYsIDI0MywgMjAzLCAxMSwgMjMwLCAxMzksIDYsIDI0MiwgNjEsIDExLCAyMzAsIDEzOSwgNiwgNzMsIDExLCAyMzAsIAorICAgIDEzOSwgNiwgMjM1LCAxNDUsIDExLCAyMzAsIDEzOSwgNiwgMjM1LCAyNCwgMTEsIDIzMCwgMTM5LCA2LCAxNTYsIDExLCAKKyAgICAyMzAsIDEzOSwgNiwgMTkzLCAxMSwgMjMwLCAxMzksIDYsIDIzMCwgMjYsIDExLCAyMzAsIDEzOSwgNiwgNzYsIDExLCAyMzAsIAorICAgIDEzOSwgNiwgMjI2LCAxMDYsIDExLCAyMzAsIDEzOSwgNiwgMjI0LCA5NywgMTEsIDIzMCwgMTM5LCA2LCAxNTMsIDExLCAKKyAgICAyMzAsIDEzOSwgNiwgMjIyLCA5MiwgMTEsIDIzMCwgMTM5LCA2LCAyMTcsIDE1MywgMTEsIDIzMCwgMTM5LCA2LCA3MCwgMTEsIAorICAgIDIzMCwgMTM5LCA2LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTM5LCA2LCAyMTIsIDk4LCAxMSwgMjMwLCAxMzksIDYsIDIxMSwgCisgICAgMTc4LCAxMSwgMjMwLCAxMzksIDYsIDIxMSwgMTE3LCAxMSwgMjMwLCAxMzksIDYsIDIxMCwgMTU5LCAxMSwgMjMwLCAxMzksIAorICAgIDQsIDYxLCAxMSwgMjMwLCAxMzksIDQsIDI1MywgMTU5LCAxMSwgMjMwLCAxMzksIDQsIDI1MSwgNjcsIDExLCAyMzAsIDEzOSwgCisgICAgNCwgMjQ5LCA2MSwgMTEsIDIzMCwgMTM5LCA0LCA3NSwgMTEsIDIzMCwgMTM5LCA0LCAyNDUsIDcsIDExLCAyMzAsIDEzOSwgCisgICAgNCwgMjQzLCAyMDMsIDExLCAyMzAsIDEzOSwgNCwgMjQyLCA2MSwgMTEsIDIzMCwgMTM5LCA0LCA3MywgMTEsIDIzMCwgMTM5LCAKKyAgICA0LCAyMzUsIDE0NSwgMTEsIDIzMCwgMTM5LCA0LCAyMzUsIDI0LCAxMSwgMjMwLCAxMzksIDQsIDE1NiwgMTEsIDIzMCwgCisgICAgMTM5LCA0LCAxOTMsIDExLCAyMzAsIDEzOSwgNCwgMjMwLCAyNiwgMTEsIDIzMCwgMTM5LCA0LCA3NiwgMTEsIDIzMCwgMTM5LCAKKyAgICA0LCAyMjYsIDEwNiwgMTEsIDIzMCwgMTM5LCA0LCAyMjQsIDk3LCAxMSwgMjMwLCAxMzksIDQsIDE1MywgMTEsIDIzMCwgCisgICAgMTM5LCA0LCAyMjIsIDkyLCAxMSwgMjMwLCAxMzksIDQsIDIxNywgMTUzLCAxMSwgMjMwLCAxMzksIDQsIDcwLCAxMSwgMjMwLCAKKyAgICAxMzksIDQsIDIxNCwgMTA1LCAxMSwgMjMwLCAxMzksIDQsIDIxMiwgOTgsIDExLCAyMzAsIDEzOSwgNCwgMjExLCAxNzgsIAorICAgIDExLCAyMzAsIDEzOSwgNCwgMjExLCAxMTcsIDExLCAyMzAsIDEzOSwgNCwgMjEwLCAxNTksIDExLCAzMiwgNCwgMjQ3LCAKKyAgICAxMjAsIDczLCAxMSwgMzIsIDQsIDI0NywgMTIwLCAyMzUsIDE0NSwgMTEsIDIzLCA2LCAyNTQsIDE0NCwgMTEsIDIzLCA2LCAKKyAgICAyNTIsIDI3LCAxMSwgMjMsIDYsIDI0MywgMTA4LCAxMSwgMjMsIDYsIDI0OCwgNTUsIDExLCAyMywgNiwgMjQ1LCAxMDEsIAorICAgIDExLCAyMywgNiwgMjEwLCA4NSwgMTEsIDIzLCA2LCAyNDUsIDY0LCAxMSwgMjMsIDYsIDIxNiwgMTgwLCAxMSwgMjMsIDYsIAorICAgIDIzNSwgMTg2LCAxMSwgMjMsIDYsIDIzNCwgMjIzLCAxMSwgMjMsIDYsIDIzMywgOTksIDExLCAyMywgNiwgMjMwLCAxMDMsIAorICAgIDExLCAyMywgNiwgMjI3LCAyMzgsIDExLCAyMywgNiwgMjExLCAxNTcsIDExLCAyMywgNiwgMjI2LCAyMDAsIDExLCAyMywgNiwgCisgICAgMjI1LCAxMDksIDExLCAyMywgNiwgMjIzLCAzOCwgMTEsIDIzLCA2LCAyMTYsIDE4MSwgODcsIDExLCAyMywgNiwgMjE5LCAKKyAgICAxNzgsIDExLCAyMywgNiwgMjE3LCA0MiwgMTEsIDIzLCA2LCAyMTQsIDE1NywgMTEsIDIzLCA2LCAyMjUsIDEzNCwgMTEsIAorICAgIDIzLCA2LCAyNTAsIDExMSwgMTEsIDIzLCA2LCAyMjQsIDE2MiwgMTEsIDIzLCA2LCAyMjYsIDIwMiwgMTEsIDIzLCAyMjksIAorICAgIDIyMiwgMTEsIDIzLCA0LCAyNTQsIDE0NCwgMTEsIDIzLCA0LCAyNTIsIDI3LCAxMSwgMjMsIDQsIDI0MywgMTA4LCAxMSwgCisgICAgMjMsIDQsIDI0OCwgNTUsIDExLCAyMywgNCwgMjQ1LCAxMDEsIDExLCAyMywgNCwgMjEwLCA4NSwgMTEsIDIzLCA0LCAyNDUsIAorICAgIDY0LCAxMSwgMjMsIDQsIDIxNiwgMTgwLCAxMSwgMjMsIDQsIDIzNSwgMTg2LCAxMSwgMjMsIDQsIDIzNCwgMjIzLCAxMSwgCisgICAgMjMsIDQsIDIzMywgOTksIDExLCAyMywgNCwgMjMwLCAxMDMsIDExLCAyMywgNCwgMjI3LCAyMzgsIDExLCAyMywgNCwgMjExLCAKKyAgICAxNTcsIDExLCAyMywgNCwgMjI2LCAyMDAsIDExLCAyMywgNCwgMjI1LCAxMDksIDExLCAyMywgNCwgMjIzLCAzOCwgMTEsIAorICAgIDIzLCA0LCA0MCwgMjE5LCAxNzgsIDExLCAyMywgNCwgMjE5LCAxNzgsIDExLCAyMywgNCwgMjE3LCA0MiwgMTEsIDIzLCA0LCAKKyAgICAyMTQsIDE1NywgMTEsIDIzLCA0LCAyMjUsIDEzNCwgMTEsIDIzLCA0LCAyNTAsIDExMSwgMTEsIDIzLCA0LCAyMjQsIDE2MiwgCisgICAgMTEsIDIzLCA0LCAyMjYsIDIwMiwgMTEsIDIzLCAyMjUsIDI1NCwgMjQ3LCAyMzQsIDExLCAyMywgMjQ1LCAxMDIsIDg3LCAKKyAgICAxMSwgMjMsIDIxNiwgMTgxLCA4NywgMTEsIDIzLCAyMzQsIDIyNCwgODcsIDExLCAyMywgMjI1LCAxMzUsIDg3LCAxMSwgMjMsIAorICAgIDIyMywgMzksIDg3LCAxMSwgMjMsIDIyNSwgMTEwLCA4NywgMTEsIDMyLCA2LCAyNTQsIDE0NCwgMTEsIDMyLCA2LCAyNTIsIAorICAgIDI3LCAxMSwgMzIsIDYsIDI0MywgMTA4LCAxMSwgMzIsIDYsIDI0OCwgNTUsIDExLCAzMiwgNiwgMjQ1LCAxMDEsIDExLCAzMiwgCisgICAgNiwgMjEwLCA4NSwgMTEsIDMyLCA2LCAyNDUsIDY0LCAxMSwgMzIsIDYsIDIxNiwgMTgwLCAxMSwgMzIsIDYsIDIzNSwgMTg2LCAKKyAgICAxMSwgMzIsIDYsIDIzNCwgMjIzLCAxMSwgMzIsIDYsIDIzMywgOTksIDExLCAzMiwgNiwgMjMwLCAxMDMsIDExLCAzMiwgNiwgCisgICAgMjI3LCAyMzgsIDExLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzMiwgNiwgMjI2LCAyMDAsIDExLCAzMiwgNiwgMjI1LCAxMDksIAorICAgIDExLCAzMiwgNiwgMjIzLCAzOCwgMTEsIDMyLCA2LCAyMTYsIDE4MSwgODcsIDExLCAzMiwgNiwgMjE5LCAxNzgsIDExLCAzMiwgCisgICAgNiwgMjE3LCA0MiwgMTEsIDMyLCA2LCAyMTQsIDE1NywgMTEsIDMyLCA2LCAyMjUsIDEzNCwgMTEsIDMyLCA2LCAyNTAsIAorICAgIDExMSwgMTEsIDMyLCA2LCAyMjQsIDE2MiwgMTEsIDMyLCA2LCAyMjYsIDIwMiwgMTEsIDMyLCAyMjksIDIyMiwgMTEsIDMyLCAKKyAgICA0LCAyNTQsIDE0NCwgMTEsIDMyLCA0LCAyNTIsIDI3LCAxMSwgMzIsIDQsIDI0MywgMTA4LCAxMSwgMzIsIDQsIDI0OCwgNTUsIAorICAgIDExLCAzMiwgNCwgMjQ1LCAxMDEsIDExLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDMyLCA0LCAyNDUsIDY0LCAxMSwgMzIsIDQsIAorICAgIDIxNiwgMTgwLCAxMSwgMzIsIDQsIDIzNSwgMTg2LCAxMSwgMzIsIDQsIDIzNCwgMjIzLCAxMSwgMzIsIDQsIDIzMywgOTksIAorICAgIDExLCAzMiwgNCwgMjMwLCAxMDMsIDExLCAzMiwgNCwgMjI3LCAyMzgsIDExLCAzMiwgNCwgMjExLCAxNTcsIDExLCAzMiwgNCwgCisgICAgMjI2LCAyMDAsIDExLCAzMiwgNCwgMjI1LCAxMDksIDExLCAzMiwgNCwgMjIzLCAzOCwgMTEsIDMyLCA0LCA0MCwgMjE5LCAKKyAgICAxNzgsIDExLCAzMiwgNCwgMjE5LCAxNzgsIDExLCAzMiwgNCwgMjE3LCA0MiwgMTEsIDMyLCA0LCAyMTQsIDE1NywgMTEsIAorICAgIDMyLCA0LCAyMjUsIDEzNCwgMTEsIDMyLCA0LCAyNTAsIDExMSwgMTEsIDMyLCA0LCAyMjQsIDE2MiwgMTEsIDMyLCA0LCAKKyAgICAyMjYsIDIwMiwgMTEsIDMyLCAyMjUsIDI1NCwgMjQ3LCAyMzQsIDExLCAzMiwgMjQ1LCAxMDIsIDg3LCAxMSwgMzIsIDIxNiwgCisgICAgMTgxLCA4NywgMTEsIDMyLCAyMzQsIDIyNCwgODcsIDExLCAzMiwgMjI1LCAxMzUsIDg3LCAxMSwgMzIsIDIyMywgMzksIDg3LCAKKyAgICAxMSwgMzIsIDIyNSwgMTEwLCA4NywgMTEsIDIzLCAzMiwgNiwgMjU0LCAxNDQsIDExLCAyMywgMzIsIDYsIDI1MiwgMjcsIAorICAgIDExLCAyMywgMzIsIDYsIDI0MywgMTA4LCAxMSwgMjMsIDMyLCA2LCAyNDgsIDU1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIDEwMSwgCisgICAgMTEsIDIzLCAzMiwgNiwgMjEwLCA4NSwgMTEsIDIzLCAzMiwgNiwgMjQ1LCA2NCwgMTEsIDIzLCAzMiwgNiwgMjE2LCAxODAsIAorICAgIDExLCAyMywgMzIsIDYsIDIzNSwgMTg2LCAxMSwgMjMsIDMyLCA2LCAyMzQsIDIyMywgMTEsIDIzLCAzMiwgNiwgMjMzLCA5OSwgCisgICAgMTEsIDIzLCAzMiwgNiwgMjMwLCAxMDMsIDExLCAyMywgMzIsIDYsIDIyNywgMjM4LCAxMSwgMjMsIDMyLCA2LCAyMTEsIAorICAgIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDAsIDExLCAyMywgMzIsIDYsIDIyNSwgMTA5LCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyMjMsIDM4LCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MSwgODcsIDExLCAyMywgMzIsIDYsIDIxOSwgMTc4LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI1LCAxMzQsIDExLCAyMywgCisgICAgMzIsIDYsIDI1MCwgMTExLCAxMSwgMjMsIDMyLCA2LCAyMjQsIDE2MiwgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDIsIDExLCAKKyAgICAyMywgMzIsIDIyOSwgMjIyLCAxMSwgMjMsIDMyLCA0LCAyNTQsIDE0NCwgMTEsIDIzLCAzMiwgNCwgMjUyLCAyNywgMTEsIAorICAgIDIzLCAzMiwgNCwgMjQzLCAxMDgsIDExLCAyMywgMzIsIDQsIDI0OCwgNTUsIDExLCAyMywgMzIsIDQsIDI0NSwgMTAxLCAxMSwgCisgICAgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDY0LCAxMSwgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIAorICAgIDIzLCAzMiwgNCwgMjM1LCAxODYsIDExLCAyMywgMzIsIDQsIDIzNCwgMjIzLCAxMSwgMjMsIDMyLCA0LCAyMzMsIDk5LCAxMSwgCisgICAgMjMsIDMyLCA0LCAyMzAsIDEwMywgMTEsIDIzLCAzMiwgNCwgMjI3LCAyMzgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTU3LCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMjYsIDIwMCwgMTEsIDIzLCAzMiwgNCwgMjI1LCAxMDksIDExLCAyMywgMzIsIDQsIDIyMywgMzgsIAorICAgIDExLCAyMywgMzIsIDQsIDQwLCAyMTksIDE3OCwgMTEsIDIzLCAzMiwgNCwgMjE5LCAxNzgsIDExLCAyMywgMzIsIDQsIDIxNywgCisgICAgNDIsIDExLCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIDMyLCA0LCAyMjUsIDEzNCwgMTEsIDIzLCAzMiwgNCwgMjUwLCAKKyAgICAxMTEsIDExLCAyMywgMzIsIDQsIDIyNCwgMTYyLCAxMSwgMjMsIDMyLCA0LCAyMjYsIDIwMiwgMTEsIDIzLCAzMiwgMjI1LCAKKyAgICAyNTQsIDI0NywgMjM0LCAxMSwgMjMsIDMyLCAyNDUsIDEwMiwgODcsIDExLCAyMywgMzIsIDIxNiwgMTgxLCA4NywgMTEsIAorICAgIDIzLCAzMiwgMjM0LCAyMjQsIDg3LCAxMSwgMjMsIDMyLCAyMjUsIDEzNSwgODcsIDExLCAyMywgMzIsIDIyMywgMzksIDg3LCAKKyAgICAxMSwgMjMsIDMyLCAyMjUsIDExMCwgODcsIDExLCAzNSwgMjMsIDYsIDI1NCwgMTQ0LCAxMSwgMzUsIDIzLCA2LCAyNTIsIAorICAgIDI3LCAxMSwgMzUsIDIzLCA2LCAyNDMsIDEwOCwgMTEsIDM1LCAyMywgNiwgMjQ4LCA1NSwgMTEsIDM1LCAyMywgNiwgMjQ1LCAKKyAgICAxMDEsIDExLCAzNSwgMjMsIDYsIDIxMCwgODUsIDExLCAzNSwgMjMsIDYsIDI0NSwgNjQsIDExLCAzNSwgMjMsIDYsIDIxNiwgCisgICAgMTgwLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDE4NiwgMTEsIDM1LCAyMywgNiwgMjM0LCAyMjMsIDExLCAzNSwgMjMsIDYsIAorICAgIDIzMywgOTksIDExLCAzNSwgMjMsIDYsIDIzMCwgMTAzLCAxMSwgMzUsIDIzLCA2LCAyMjcsIDIzOCwgMTEsIDM1LCAyMywgNiwgCisgICAgMjExLCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjAwLCAxMSwgMzUsIDIzLCA2LCAyMjUsIDEwOSwgMTEsIDM1LCAyMywgCisgICAgNiwgMjIzLCAzOCwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODEsIDg3LCAxMSwgMzUsIDIzLCA2LCAyMTksIDE3OCwgMTEsIDM1LCAKKyAgICAyMywgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNiwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNSwgMTM0LCAxMSwgMzUsIAorICAgIDIzLCA2LCAyNTAsIDExMSwgMTEsIDM1LCAyMywgNiwgMjI0LCAxNjIsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjAyLCAxMSwgCisgICAgMzUsIDIzLCAyMjksIDIyMiwgMTEsIDM1LCAyMywgNCwgMjU0LCAxNDQsIDExLCAzNSwgMjMsIDQsIDI1MiwgMjcsIDExLCAKKyAgICAzNSwgMjMsIDQsIDI0MywgMTA4LCAxMSwgMzUsIDIzLCA0LCAyNDgsIDU1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDEwMSwgMTEsIAorICAgIDM1LCAyMywgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCA2NCwgMTEsIDM1LCAyMywgNCwgMjE2LCAxODAsIDExLCAKKyAgICAzNSwgMjMsIDQsIDIzNSwgMTg2LCAxMSwgMzUsIDIzLCA0LCAyMzQsIDIyMywgMTEsIDM1LCAyMywgNCwgMjMzLCA5OSwgMTEsIAorICAgIDM1LCAyMywgNCwgMjMwLCAxMDMsIDExLCAzNSwgMjMsIDQsIDIyNywgMjM4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDE1NywgCisgICAgMTEsIDM1LCAyMywgNCwgMjI2LCAyMDAsIDExLCAzNSwgMjMsIDQsIDIyNSwgMTA5LCAxMSwgMzUsIDIzLCA0LCAyMjMsIDM4LCAKKyAgICAxMSwgMzUsIDIzLCA0LCA0MCwgMjE5LCAxNzgsIDExLCAzNSwgMjMsIDQsIDIxOSwgMTc4LCAxMSwgMzUsIDIzLCA0LCAyMTcsIAorICAgIDQyLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgNCwgMjI1LCAxMzQsIDExLCAzNSwgMjMsIDQsIDI1MCwgCisgICAgMTExLCAxMSwgMzUsIDIzLCA0LCAyMjQsIDE2MiwgMTEsIDM1LCAyMywgNCwgMjI2LCAyMDIsIDExLCAzNSwgMjMsIDIyNSwgCisgICAgMjU0LCAyNDcsIDIzNCwgMTEsIDM1LCAyMywgMjQ1LCAxMDIsIDg3LCAxMSwgMzUsIDIzLCAyMTYsIDE4MSwgODcsIDExLCAKKyAgICAzNSwgMjMsIDIzNCwgMjI0LCA4NywgMTEsIDM1LCAyMywgMjI1LCAxMzUsIDg3LCAxMSwgMzUsIDIzLCAyMjMsIDM5LCA4NywgCisgICAgMTEsIDM1LCAyMywgMjI1LCAxMTAsIDg3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjU0LCAxNDQsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyNTIsIDI3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQzLCAxMDgsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDgsIDU1LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjQ1LCAxMDEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ1LCAKKyAgICA2NCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgwLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM1LCAxODYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyMzQsIDIyMywgMTEsIDM1LCAyMywgMzIsIDYsIDIzMywgOTksIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDEwMywgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDIyNywgMjM4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCAyMjYsIDIwMCwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNSwgMTA5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIzLCAzOCwgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgxLCA4NywgMTEsIDM1LCAyMywgMzIsIDYsIDIxOSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAxMzQsIDExLCAKKyAgICAzNSwgMjMsIDMyLCA2LCAyNTAsIDExMSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgMTYyLCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMjI2LCAyMDIsIDExLCAzNSwgMjMsIDMyLCAyMjksIDIyMiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1NCwgMTQ0LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNCwgMjUyLCAyNywgMTEsIDM1LCAyMywgMzIsIDQsIDI0MywgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ4LCAKKyAgICA1NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgMTAxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDI0NSwgNjQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTg2LCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjM0LCAyMjMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzMsIDk5LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMjMwLCAxMDMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjcsIDIzOCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTU3LCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAyMDAsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEwOSwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIyMywgMzgsIDExLCAzNSwgMjMsIDMyLCA0LCA0MCwgMjE5LCAxNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTksIDE3OCwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxNywgNDIsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIyNSwgMTM0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUwLCAxMTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjQsIDE2MiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgMjAyLCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAyNTQsIDI0NywgMjM0LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgMjQ1LCAxMDIsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjM0LCAKKyAgICAyMjQsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAxMzUsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjIzLCAzOSwgODcsIDExLCAKKyAgICAzNSwgMjMsIDMyLCAyMjUsIDExMCwgODcsIDExLCAyMywgNiwgMjQ3LCAyMjgsIDExLCAyMywgNCwgMjQ3LCAyMjgsIDExLCAKKyAgICAyMywgMjEsIDIxMCwgODYsIDExLCAyMywgMjEsIDExMCwgMTEsIDIzLCAyMSwgMTA1LCAxMSwgMjMsIDIxLCAxNTgsIDExLCAKKyAgICAyMywgMjEsIDE2MSwgMTEsIDIzLCAyMSwgMTg5LCAxMSwgMjMsIDIxLCAxOTQsIDExLCAyMywgMjEsIDE5OCwgMTEsIDIzLCAKKyAgICAyMSwgMTk1LCAxMSwgMjMsIDIxLCAyMDAsIDExLCAxMzksIDIxLCAyMTAsIDg2LCAxMSwgMTM5LCAyMSwgMTEwLCAxMSwgCisgICAgMTM5LCAyMSwgMTA1LCAxMSwgMTM5LCAyMSwgMTU4LCAxMSwgMTM5LCAyMSwgMTYxLCAxMSwgMTM5LCAyMSwgMTg5LCAxMSwgCisgICAgMTM5LCAyMSwgMTk0LCAxMSwgMTM5LCAyMSwgMTk4LCAxMSwgMTM5LCAyMSwgMTk1LCAxMSwgMTM5LCAyMSwgMjAwLCAxMSwgCisgICAgMzUsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIxLCAxMTAsIDExLCAzNSwgMjEsIDEwNSwgMTEsIDM1LCAyMSwgMTU4LCAxMSwgCisgICAgMzUsIDIxLCAxNjEsIDExLCAzNSwgMjEsIDE4OSwgMTEsIDM1LCAyMSwgMTk0LCAxMSwgMzUsIDIxLCAxOTgsIDExLCAzNSwgCisgICAgMjEsIDE5NSwgMTEsIDM1LCAyMSwgMjAwLCAxMSwgMzUsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDM1LCAyMywgMjEsIDExMCwgCisgICAgMTEsIDM1LCAyMywgMjEsIDEwNSwgMTEsIDM1LCAyMywgMjEsIDE1OCwgMTEsIDM1LCAyMywgMjEsIDE2MSwgMTEsIDM1LCAKKyAgICAyMywgMjEsIDE4OSwgMTEsIDM1LCAyMywgMjEsIDE5NCwgMTEsIDM1LCAyMywgMjEsIDE5OCwgMTEsIDM1LCAyMywgMjEsIAorICAgIDE5NSwgMTEsIDM1LCAyMywgMjEsIDIwMCwgMTEsIDIzMCwgMTM5LCAyMSwgMjEwLCA4NiwgMTEsIDIzMCwgMTM5LCAyMSwgCisgICAgMTEwLCAxMSwgMjMwLCAxMzksIDIxLCAxMDUsIDExLCAyMzAsIDEzOSwgMjEsIDE1OCwgMTEsIDIzMCwgMTM5LCAyMSwgMTYxLCAKKyAgICAxMSwgMjMwLCAxMzksIDIxLCAxODksIDExLCAyMzAsIDEzOSwgMjEsIDE5NCwgMTEsIDIzMCwgMTM5LCAyMSwgMTk4LCAxMSwgCisgICAgMjMwLCAxMzksIDIxLCAxOTUsIDExLCAyMzAsIDEzOSwgMjEsIDIwMCwgMTAsIDExLCAyNTQsIDE3MSwgMTAsIDExLCAyNTIsIAorICAgIDU1LCAxMCwgMTEsIDIzNSwgMTI0LCAxMCwgMTEsIDI0OCwgMTk2LCAxMCwgMTEsIDIxMiwgMzAsIDEwLCAxMSwgMjEwLCAKKyAgICAxMDgsIDEwLCAxMSwgMjQyLCAzOCwgMTAsIDExLCAyMTcsIDgxLCAxMCwgMTEsIDIxMSwgNDMsIDEwLCAxMSwgMjM0LCAyNTEsIAorICAgIDEwLCAxMSwgMjMzLCAxMDMsIDEwLCAxMSwgMjMxLCA3OSwgMTAsIDExLCAyMjgsIDYzLCAxMCwgMTEsIDIyMSwgMTY3LCAxMCwgCisgICAgMTEsIDI1NCwgMTk3LCAxMCwgMTEsIDI0NCwgMTQzLCAxMCwgMTEsIDIyMiwgMjcsIDEwLCAxMSwgMjI0LCA4MiwgMTAsIDExLCAKKyAgICAyMjMsIDk2LCAxMCwgMTEsIDIyMCwgNjAsIDEwLCAxMSwgMjE3LCA4LCAxMCwgMTEsIDIxNiwgMTkzLCAxMCwgMTEsIDIzNCwgCisgICAgMTMwLCAxMCwgMTEsIDIxNiwgMjAzLCAxMCwgMTEsIDI0OCwgMjE3LCAxMCwgMTEsIDIxMCwgMTExLCAxMCwgMTEsIDI0MiwgCisgICAgMjQ1LCAxMCwgMTEsIDI0NywgMTIwLCAyNTIsIDU1LCAxMCwgMTEsIDI0NywgMTIwLCAyMjgsIDYzLCAxMCwgMTEsIDI0NywgCisgICAgMTIwLCAyNDQsIDE0MywgMTAsIDExLCAyNDcsIDEyMCwgMjI0LCA4MiwgMTAsIDExLCA2NSwgMjUyLCA1NSwgMTAsIDExLCAKKyAgICA2NSwgMjM1LCAxMjQsIDEwLCAxMSwgNjUsIDI0MSwgMjE5LCAxMCwgMTEsIDY1LCAyNDIsIDM4LCAxMCwgMTEsIDY1LCAyMTEsIAorICAgIDQzLCAxMCwgMTEsIDY1LCAyMzQsIDI1MSwgMTAsIDExLCA2NSwgMjMzLCAxMDMsIDEwLCAxMSwgNjUsIDIzMSwgNzksIDEwLCAKKyAgICAxMSwgNjUsIDIyOCwgNjMsIDEwLCAxMSwgNjUsIDIyMSwgMTY3LCAxMCwgMTEsIDY1LCAyNTQsIDE5NywgMTAsIDExLCA2NSwgCisgICAgMjQ0LCAxNDMsIDEwLCAxMSwgNjUsIDIyMiwgMjcsIDEwLCAxMSwgNjUsIDIyNCwgODIsIDEwLCAxMSwgNjUsIDIyMCwgNjAsIAorICAgIDEwLCAxMSwgNjUsIDIxNywgOCwgMTAsIDExLCA2NSwgMjE2LCAxOTMsIDEwLCAxMSwgNjUsIDIzNCwgMTMwLCAxMCwgMTEsIAorICAgIDY1LCAyNDgsIDIxNywgMTAsIDExLCA2NSwgMjQyLCAyNDUsIDEwLCAxMSwgMjE3LCA3NywgMjM1LCAxMjQsIDEwLCAxMSwgCisgICAgMjE3LCA3NywgMjQyLCAzOCwgMTAsIDExLCAyMTcsIDc3LCAyMTEsIDQzLCAxMCwgMTEsIDIxNywgNzcsIDIzMywgMTAzLCAKKyAgICAxMCwgMTEsIDIxNywgNzcsIDIyOCwgNjMsIDEwLCAxMSwgMjE3LCA3NywgMjIxLCAxNjcsIDEwLCAxMSwgMjE3LCA3NywgCisgICAgMjU0LCAxOTcsIDEwLCAxMSwgMjE3LCA3NywgMjIyLCAyNywgMTAsIDExLCAyMTcsIDc3LCAyMjQsIDgyLCAxMCwgMTEsIAorICAgIDIxNywgNzcsIDIyMCwgNjAsIDEwLCAxMSwgMjE3LCA3NywgMjM0LCAxMzAsIDEwLCAxMSwgMjE3LCA3NywgMjQ4LCAyMTcsIAorICAgIDEwLCAxMSwgMjE3LCA3NywgMjQyLCAyNDUsIDEwLCAxMSwgMjE3LCA3NywgMjQ3LCAxMjAsIDIyOCwgNjMsIDEwLCAxMSwgCisgICAgMjE3LCA3NywgMjQ3LCAxMjAsIDIyNCwgODIsIDEwLCAxMSwgMjE4LCAxMTEsIDI1MiwgNTUsIDEwLCAxMSwgMjE4LCAxMTEsIAorICAgIDIzNSwgMTI0LCAxMCwgMTEsIDIxOCwgMTExLCAyNDEsIDIxOSwgMTAsIDExLCAyMTgsIDExMSwgMjQyLCAzOCwgMTAsIDExLCAKKyAgICAyMTgsIDExMSwgMjE3LCA4MSwgMTAsIDExLCAyMTgsIDExMSwgMjExLCA0MywgMTAsIDExLCAyMTgsIDExMSwgMjM0LCAyNTEsIAorICAgIDEwLCAxMSwgMjE4LCAxMTEsIDIzMSwgNzksIDEwLCAxMSwgMjE4LCAxMTEsIDIyOCwgNjMsIDEwLCAxMSwgMjE4LCAxMTEsIAorICAgIDIyMSwgMTY3LCAxMCwgMTEsIDIxOCwgMTExLCAyNTQsIDE5NywgMTAsIDExLCAyMTgsIDExMSwgMjQ0LCAxNDMsIDEwLCAxMSwgCisgICAgMjE4LCAxMTEsIDIyMiwgMjcsIDEwLCAxMSwgMjE4LCAxMTEsIDIyNCwgODIsIDEwLCAxMSwgMjE4LCAxMTEsIDIyMCwgNjAsIAorICAgIDEwLCAxMSwgMjE4LCAxMTEsIDIxNywgOCwgMTAsIDExLCAyMTgsIDExMSwgMjE2LCAxOTMsIDEwLCAxMSwgMjE4LCAxMTEsIAorICAgIDIzNCwgMTMwLCAxMCwgMTEsIDIxOCwgMTExLCAyNDgsIDIxNywgMTAsIDExLCAyMTgsIDExMSwgMjEwLCAxMTEsIDEwLCAxMSwgCisgICAgMjE4LCAxMTEsIDI0MiwgMjQ1LCAxMCwgMTEsIDIxOCwgMTExLCAyNDcsIDEyMCwgMjUyLCA1NSwgMTAsIDExLCAyMTgsIAorICAgIDExMSwgMjQ3LCAxMjAsIDI0NCwgMTQzLCAxMCwgMTEsIDIzMiwgMTIzLCAyNTQsIDE3MSwgMTAsIDExLCAyMzIsIDEyMywgCisgICAgMjUyLCA1NSwgMTAsIDExLCAyMzIsIDEyMywgMjM1LCAxMjQsIDEwLCAxMSwgMjMyLCAxMjMsIDI0OCwgMTk2LCAxMCwgMTEsIAorICAgIDIzMiwgMTIzLCAyNDEsIDIxOSwgMTAsIDExLCAyMzIsIDEyMywgMjEyLCAzMCwgMTAsIDExLCAyMzIsIDEyMywgMjEwLCAKKyAgICAxMDgsIDEwLCAxMSwgMjMyLCAxMjMsIDI0MiwgMzgsIDEwLCAxMSwgMjMyLCAxMjMsIDIxNywgODEsIDEwLCAxMSwgMjMyLCAKKyAgICAxMjMsIDIxMSwgNDMsIDEwLCAxMSwgMjMyLCAxMjMsIDIzMywgMTAzLCAxMCwgMTEsIDIzMiwgMTIzLCAyMzEsIDc5LCAxMCwgCisgICAgMTEsIDIzMiwgMTIzLCAyMjgsIDYzLCAxMCwgMTEsIDIzMiwgMTIzLCAyMjEsIDE2NywgMTAsIDExLCAyMzIsIDEyMywgMjU0LCAKKyAgICAxOTcsIDEwLCAxMSwgMjMyLCAxMjMsIDI0NCwgMTQzLCAxMCwgMTEsIDIzMiwgMTIzLCAyMjIsIDI3LCAxMCwgMTEsIDIzMiwgCisgICAgMTIzLCAyMjQsIDgyLCAxMCwgMTEsIDIzMiwgMTIzLCAyMjMsIDk2LCAxMCwgMTEsIDIzMiwgMTIzLCAyMjAsIDYwLCAxMCwgCisgICAgMTEsIDIzMiwgMTIzLCAyMTcsIDgsIDEwLCAxMSwgMjMyLCAxMjMsIDIxNiwgMTkzLCAxMCwgMTEsIDIzMiwgMTIzLCAyMzQsIAorICAgIDEzMCwgMTAsIDExLCAyMzIsIDEyMywgMjE2LCAyMDMsIDEwLCAxMSwgMjMyLCAxMjMsIDI0OCwgMjE3LCAxMCwgMTEsIDIzMiwgCisgICAgMTIzLCAyMTAsIDExMSwgMTAsIDExLCAyMzIsIDEyMywgMjQyLCAyNDUsIDEwLCAxMSwgMTM5LCAyNTIsIDU1LCAxMCwgMTEsIAorICAgIDEzOSwgMjM1LCAxMjQsIDEwLCAxMSwgMTM5LCAyNDgsIDE5NiwgMTAsIDExLCAxMzksIDIxMiwgMzAsIDEwLCAxMSwgMTM5LCAKKyAgICAyMTAsIDEwOCwgMTAsIDExLCAxMzksIDI0MiwgMzgsIDEwLCAxMSwgMTM5LCAyMTcsIDgxLCAxMCwgMTEsIDEzOSwgMjExLCAKKyAgICA0MywgMTAsIDExLCAxMzksIDIzMywgMTAzLCAxMCwgMTEsIDEzOSwgMjMxLCA3OSwgMTAsIDExLCAxMzksIDIyOCwgNjMsIAorICAgIDEwLCAxMSwgMTM5LCAyMjEsIDE2NywgMTAsIDExLCAxMzksIDI1NCwgMTk3LCAxMCwgMTEsIDEzOSwgMjQ0LCAxNDMsIDEwLCAKKyAgICAxMSwgMTM5LCAyMjIsIDI3LCAxMCwgMTEsIDEzOSwgMjI0LCA4MiwgMTAsIDExLCAxMzksIDIyMywgOTYsIDEwLCAxMSwgCisgICAgMTM5LCAyMjAsIDYwLCAxMCwgMTEsIDEzOSwgMjE3LCA4LCAxMCwgMTEsIDEzOSwgMjE2LCAxOTMsIDEwLCAxMSwgMTM5LCAKKyAgICAyMzQsIDEzMCwgMTAsIDExLCAxMzksIDIxNiwgMjAzLCAxMCwgMTEsIDEzOSwgMjQ4LCAyMTcsIDEwLCAxMSwgMTM5LCAyMTAsIAorICAgIDExMSwgMTAsIDExLCAxMzksIDI0MiwgMjQ1LCAxMCwgMTEsIDIyNiwgMTY5LCA2NiwgMiwgMTIyLCAyLCAyMTcsIDQ0LCAxMCwgCisgICAgMTEsIDIyNiwgMTY5LCAxMjIsIDIsIDI0OCwgMTk2LCAyMzEsIDIwNiwgODYsIDI0NSwgMjIxLCAyMTEsIDIzOSwgMjMxLCAKKyAgICAyMDYsIDg2LCAyMTksIDI5LCAyMTEsIDIzOSwgMjMxLCAyMDYsIDg2LCAyMTIsIDksIDIxMSwgMjM5LCAyMzEsIDIwNiwgODYsIAorICAgIDIyOCwgNTcsIDIxMSwgMjM5LCAyMzEsIDIwNiwgODYsIDIyMywgMTEyLCAyNDYsIDk3LCAyMzEsIDIwNiwgODYsIDI0MiwgCisgICAgMTI4LCAyNDYsIDk3LCAyMzEsIDIwNiwgODYsIDcxLCAyNDYsIDk3LCAyMzEsIDIwNiwgODYsIDEyMywgNjQsIDI1MCwgMTQyLCAKKyAgICAyMzEsIDIwNiwgODYsIDExMywgNjQsIDI1MCwgMTQyLCAyMzEsIDIwNiwgODYsIDEzNCwgNjQsIDI1MCwgMTQyLCAyMzEsIAorICAgIDIwNiwgODYsIDI0NCwgMTIsIDY0LCAyNTAsIDE0MiwgMjMxLCAyMDYsIDg2LCAyNDQsIDgyLCA2NCwgMjUwLCAxNDIsIDIzMSwgCisgICAgMjA2LCA4NiwgMjE5LCAxMjYsIDY0LCAyNTAsIDE0MiwgMjMxLCAyMDYsIDg2LCAyMjAsIDEyMywgNjQsIDI1MCwgMTQyLCAKKyAgICAyMzEsIDIwNiwgODYsIDI0NSwgMTk0LCA2NCwgMjUwLCAxNDIsIDIzMSwgMjA2LCA4NiwgMjI4LCAyMDEsIDY0LCAyNTAsIAorICAgIDE0MiwgMjMxLCAyMDYsIDg2LCAxMjMsIDY0LCAyNTIsIDE1NCwgMjMxLCAyMDYsIDg2LCAxMTMsIDY0LCAyNTIsIDE1NCwgCisgICAgMjMxLCAyMDYsIDg2LCAxMzQsIDY0LCAyNTIsIDE1NCwgMjMxLCAyMDYsIDg2LCAyNDQsIDEyLCA2NCwgMjUyLCAxNTQsIAorICAgIDIzMSwgMjA2LCA4NiwgMjQ0LCA4MiwgNjQsIDI1MiwgMTU0LCAyMzEsIDIwNiwgODYsIDIxOSwgMTI2LCA2NCwgMjUyLCAKKyAgICAxNTQsIDIzMSwgMjA2LCA4NiwgMjIwLCAxMjMsIDY0LCAyNTIsIDE1NCwgMjMxLCAyMDYsIDg2LCAyNDUsIDE5NCwgNjQsIAorICAgIDI1MiwgMTU0LCAyMzEsIDIwNiwgODYsIDIyOCwgMjAxLCA2NCwgMjUyLCAxNTQsIDIzMSwgMjA2LCA4NiwgMTIzLCA2NCwgCisgICAgMjUwLCAzNSwgMjMxLCAyMDYsIDg2LCAxMTMsIDY0LCAyNTAsIDM1LCAyMzEsIDIwNiwgODYsIDEzNCwgNjQsIDI1MCwgMzUsIAorICAgIDIzMSwgMjA2LCA4NiwgMjQ0LCAxMiwgNjQsIDI1MCwgMzUsIDIzMSwgMjA2LCA4NiwgMjQ0LCA4MiwgNjQsIDI1MCwgMzUsIAorICAgIDIzMSwgMjA2LCA4NiwgMjE5LCAxMjYsIDY0LCAyNTAsIDM1LCAyMzEsIDIwNiwgODYsIDIyMCwgMTIzLCA2NCwgMjUwLCAzNSwgCisgICAgMjMxLCAyMDYsIDg2LCAyNDUsIDE5NCwgNjQsIDI1MCwgMzUsIDIzMSwgMjA2LCA4NiwgMjI4LCAyMDEsIDY0LCAyNTAsIDM1LCAKKyAgICAyMzEsIDIwNiwgODYsIDIyNSwgMjYsIDIzMSwgMjA2LCA4NiwgMjI2LCAxNTcsIDIzMSwgMjA2LCA4NiwgMjUyLCAxNTUsIAorICAgIDIzMSwgMjA2LCA4NiwgMjUwLCA3MSwgMjMxLCAyMDYsIDg2LCAyMTgsIDI0MCwgMjMxLCAyMDYsIDg2LCAyMTgsIDQwLCAKKyAgICAyMzEsIDIwNiwgODYsIDI1MywgMTgwLCAyMzEsIDIwNiwgODYsIDIxMSwgMjMyLCAyMzEsIDIwNiwgODYsIDIzNSwgNjMsIAorICAgIDIzMSwgMjA2LCA4NiwgMjUyLCAxODUsIDEzMSwgODYsIDIwMywgMjUyLCAxODUsIDEzMSwgODYsIDI0MSwgNDQsIDEzMSwgCisgICAgODYsIDI0MSwgNDMsIDEzMSwgODYsIDI0MSwgNDIsIDEzMSwgODYsIDI0MSwgNDEsIDEzMSwgODYsIDI0MSwgNDAsIDEzMSwgCisgICAgODYsIDI0MSwgMzksIDEzMSwgODYsIDI0MSwgMzgsIDEzMSwgODYsIDI0MSwgMzcsIDEzMSwgODYsIDI0MSwgMzYsIDEzMSwgCisgICAgODYsIDI0MSwgMzUsIDEzMSwgODYsIDI0MSwgMzQsIDEzMSwgODYsIDI0MSwgMzMsIDEzMSwgODYsIDI0MSwgMzIsIDEzMSwgCisgICAgODYsIDI0MSwgMzEsIDEzMSwgODYsIDI0MSwgMzAsIDEzMSwgODYsIDI0MSwgMjksIDEzMSwgODYsIDI0MSwgMjgsIDEzMSwgCisgICAgODYsIDI0MSwgMjcsIDEzMSwgODYsIDI0MSwgMjYsIDEzMSwgODYsIDI0MSwgMjUsIDEzMSwgODYsIDI0MSwgMjQsIDEzMSwgCisgICAgODYsIDI0MSwgMjMsIDEzMSwgODYsIDI0MSwgMjIsIDEzMSwgODYsIDI0MSwgMjEsIDEzMSwgODYsIDI0MSwgMjAsIDEzMSwgCisgICAgODYsIDI0MSwgMTksIDEzMSwgODYsIDI0MSwgMTgsIDEzMSwgODYsIDI0MSwgMTcsIDEzMSwgODYsIDI0MSwgMTYsIDEzMSwgCisgICAgODYsIDI0MSwgMTUsIDEzMSwgODYsIDI0MSwgMTQsIDEzMSwgODYsIDI0MSwgMTMsIDEzMSwgODYsIDI0MSwgMTIsIDEzMSwgCisgICAgODYsIDI0MSwgMTEsIDEzMSwgODYsIDI0MSwgMTAsIDEzMSwgODYsIDI0MSwgOSwgMTMxLCA4NiwgMjQxLCA4LCAxMzEsIDg2LCAKKyAgICAyNDEsIDcsIDEzMSwgODYsIDI0MSwgNiwgMTMxLCA4NiwgMjQxLCA1LCAxMzEsIDg2LCAyNDEsIDQsIDEzMSwgODYsIDI0MSwgCisgICAgMywgMTMxLCA4NiwgMjQxLCAyLCAxMzEsIDg2LCAyNDEsIDEsIDEzMSwgODYsIDI0MSwgMCwgMTMxLCA4NiwgMjQwLCAyNTUsIAorICAgIDEzMSwgODYsIDI0MCwgMjU0LCAxMzEsIDg2LCAyNDAsIDI1MywgMTMxLCA4NiwgMjQwLCAyNTIsIDEzMSwgODYsIDY3LCAKKyAgICAyNTIsIDE4NSwgMTMxLCA4NiwgMjEzLCAyMzgsIDEzMSwgODYsIDIxMywgMjM3LCAxMzEsIDg2LCAyMTMsIDIzNiwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMzUsIDEzMSwgODYsIDIxMywgMjM0LCAxMzEsIDg2LCAyMTMsIDIzMywgMTMxLCA4NiwgMjEzLCAyMzIsIAorICAgIDEzMSwgODYsIDIxMywgMjMxLCAxMzEsIDg2LCAyMTMsIDIzMCwgMTMxLCA4NiwgMjEzLCAyMjksIDEzMSwgODYsIDIxMywgCisgICAgMjI4LCAxMzEsIDg2LCAyMTMsIDIyNywgMTMxLCA4NiwgMjEzLCAyMjYsIDEzMSwgODYsIDIxMywgMjI1LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIyNCwgMTMxLCA4NiwgMjEzLCAyMjMsIDEzMSwgODYsIDIxMywgMjIyLCAxMzEsIDg2LCAyMTMsIDIyMSwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMjAsIDEzMSwgODYsIDIxMywgMjE5LCAxMzEsIDg2LCAyMTMsIDIxOCwgMTMxLCA4NiwgMjEzLCAyMTcsIAorICAgIDEzMSwgODYsIDIxMywgMjE2LCAxMzEsIDg2LCAyMTMsIDIxNSwgMTMxLCA4NiwgMjEzLCAyMTQsIDEzMSwgODYsIDIxMywgCisgICAgMjEzLCAxMzEsIDg2LCAyMTMsIDIxMiwgMTMxLCA4NiwgMjEzLCAyMTEsIDEzMSwgODYsIDIxMywgMjEwLCAxMzEsIDg2LCAKKyAgICAyMTMsIDIwOSwgMTMxLCA4NiwgMjEzLCAyMDgsIDEzMSwgODYsIDIxMywgMjA3LCAxMzEsIDg2LCAyMTMsIDIwNiwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMDUsIDEzMSwgODYsIDIxMywgMjA0LCAxMzEsIDg2LCAyMTMsIDIwMywgMTMxLCA4NiwgMjEzLCAyMDIsIAorICAgIDEzMSwgODYsIDIxMywgMjAxLCAxMzEsIDg2LCAyMTMsIDIwMCwgMTMxLCA4NiwgMjEzLCAxOTksIDEzMSwgODYsIDIxMywgCisgICAgMTk4LCAxMzEsIDg2LCAyMTMsIDE5NywgMTMxLCA4NiwgMjEzLCAxOTYsIDEzMSwgODYsIDIxMywgMTk1LCAxMzEsIDg2LCAKKyAgICAyMTMsIDE5NCwgMTMxLCA4NiwgMjEzLCAxOTMsIDEzMSwgODYsIDIxMywgMTkyLCAxMzEsIDg2LCAyMTMsIDE5MSwgMTMxLCAKKyAgICA4NiwgMjEzLCAxOTAsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyNTIsIDE4NSwgMjI1LCAzNCwgMjUwLCAyNDQsIDI1NSwgMTAsIAorICAgIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMTEzLCA2NCwgMjE5LCAxNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDEzNCwgCisgICAgNjQsIDIxOSwgMTYsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyNDQsIDEyLCA2NCwgMjE5LCAxNiwgMjI1LCAzNCwgMjUwLCAyNDQsIAorICAgIDI0NCwgODIsIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjE5LCAxMjYsIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAKKyAgICAyNTAsIDI0NCwgMjIwLCAxMjMsIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjQ1LCAxOTQsIDY0LCAyMTksIAorICAgIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjI4LCAyMDEsIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjE2LCAKKyAgICAyNDksIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjM1LCAxNDAsIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIAorICAgIDI0NCwgMjM0LCAzMiwgNjQsIDIxOSwgMTYsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMjQsIDE2LCA2NCwgMjE5LCAxNiwgMjI1LCAKKyAgICAzNCwgMjUwLCAyNDQsIDIzNCwgODAsIDY0LCAyMTksIDE2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjU1LCAxMCwgNjQsIDI0MSwgCisgICAgMjI2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMTEzLCA2NCwgMjQxLCAyMjYsIDIyNSwgMzQsIDI1MCwgMjQ0LCAxMzQsIDY0LCAKKyAgICAyNDEsIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDI0NCwgMTIsIDY0LCAyNDEsIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIAorICAgIDI0NCwgODIsIDY0LCAyNDEsIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDIxOSwgMTI2LCA2NCwgMjQxLCAyMjYsIDIyNSwgCisgICAgMzQsIDI1MCwgMjQ0LCAyMjAsIDEyMywgNjQsIDI0MSwgMjI2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjQ1LCAxOTQsIDY0LCAKKyAgICAyNDEsIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDIyOCwgMjAxLCA2NCwgMjQxLCAyMjYsIDIyNSwgMzQsIDI1MCwgMjQ0LCAKKyAgICAyMTYsIDI0OSwgNjQsIDI0MSwgMjI2LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjM1LCAxNDAsIDY0LCAyNDEsIDIyNiwgMjI1LCAKKyAgICAzNCwgMjUwLCAyNDQsIDIzNCwgMzIsIDY0LCAyNDEsIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDIyNCwgMTYsIDY0LCAyNDEsIAorICAgIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDIzNCwgODAsIDY0LCAyNDEsIDIyNiwgMjI1LCAzNCwgMjUwLCAyNDQsIDI1NSwgCisgICAgMTAsIDY0LCAyNDcsIDI0OCwgMjI1LCAzNCwgMjUwLCAyNDQsIDExMywgNjQsIDI0NywgMjQ4LCAyMjUsIDM0LCAyNTAsIAorICAgIDI0NCwgMTM0LCA2NCwgMjQ3LCAyNDgsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyNDQsIDEyLCA2NCwgMjQ3LCAyNDgsIDIyNSwgCisgICAgMzQsIDI1MCwgMjQ0LCAyNDQsIDgyLCA2NCwgMjQ3LCAyNDgsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMTksIDEyNiwgNjQsIAorICAgIDI0NywgMjQ4LCAyMjUsIDM0LCAyNTAsIDI0NCwgMjIwLCAxMjMsIDY0LCAyNDcsIDI0OCwgMjI1LCAzNCwgMjUwLCAyNDQsIAorICAgIDI0NSwgMTk0LCA2NCwgMjQ3LCAyNDgsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMjgsIDIwMSwgNjQsIDI0NywgMjQ4LCAyMjUsIAorICAgIDM0LCAyNTAsIDI0NCwgMjE2LCAyNDksIDY0LCAyNDcsIDI0OCwgMjI1LCAzNCwgMjUwLCAyNDQsIDIzNSwgMTQwLCA2NCwgCisgICAgMjQ3LCAyNDgsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMzQsIDMyLCA2NCwgMjQ3LCAyNDgsIDIyNSwgMzQsIDI1MCwgMjQ0LCAKKyAgICAyMjQsIDE2LCA2NCwgMjQ3LCAyNDgsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMzQsIDgwLCA2NCwgMjQ3LCAyNDgsIDIyNSwgMzQsIAorICAgIDI1MCwgMjQ0LCA4NSwgMjM1LCA2MywgMjI1LCAzNCwgMjUwLCAyNDQsIDI1NSwgMTAsIDY0LCAyNDksIDI0MywgMjI1LCAzNCwgCisgICAgMjUwLCAyNDQsIDExMywgNjQsIDI0OSwgMjQzLCAyMjUsIDM0LCAyNTAsIDI0NCwgMTM0LCA2NCwgMjQ5LCAyNDMsIDIyNSwgCisgICAgMzQsIDI1MCwgMjQ0LCAyNDQsIDEyLCA2NCwgMjQ5LCAyNDMsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyNDQsIDgyLCA2NCwgMjQ5LCAKKyAgICAyNDMsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMTksIDEyNiwgNjQsIDI0OSwgMjQzLCAyMjUsIDM0LCAyNTAsIDI0NCwgMjIwLCAKKyAgICAxMjMsIDY0LCAyNDksIDI0MywgMjI1LCAzNCwgMjUwLCAyNDQsIDI0NSwgMTk0LCA2NCwgMjQ5LCAyNDMsIDIyNSwgMzQsIAorICAgIDI1MCwgMjQ0LCAyMjgsIDIwMSwgNjQsIDI0OSwgMjQzLCAyMjUsIDM0LCAyNTAsIDI0NCwgMjE2LCAyNDksIDY0LCAyNDksIAorICAgIDI0MywgMjI1LCAzNCwgMjUwLCAyNDQsIDIzNSwgMTQwLCA2NCwgMjQ5LCAyNDMsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMzQsIAorICAgIDMyLCA2NCwgMjQ5LCAyNDMsIDIyNSwgMzQsIDI1MCwgMjQ0LCAyMjQsIDE2LCA2NCwgMjQ5LCAyNDMsIDIyNSwgMzQsIDI1MCwgCisgICAgMjQ0LCAyMzQsIDgwLCA2NCwgMjQ5LCAyNDMsIDIyNSwgMzQsIDI1MCwgMjQ0LCA3MSwgMjM1LCA2MywgMjEsIDIxMCwgODcsIAorICAgIDI0MywgMjMwLCAyMTgsIDEzMCwgMjEsIDIxMCwgODcsIDI0OSwgMjIwLCAyMSwgMTIzLCAyNDksIDIyMCwgMjEsIDExMywgCisgICAgMjQ5LCAyMjAsIDIxLCAxMzQsIDI0OSwgMjIwLCAyMSwgMjQ0LCAxMiwgMjQ5LCAyMjAsIDIxLCAyNDQsIDgyLCAyNDksIAorICAgIDIyMCwgMjEsIDIxOSwgMTI2LCAyNDksIDIyMCwgMjEsIDIyMCwgMTIzLCAyNDksIDIyMCwgMjEsIDI0NSwgMTk0LCAyNDksIAorICAgIDIyMCwgMjEsIDIyOCwgMjAxLCAyNDksIDIyMCwgODgsIDcsIDYsIDEsIDYxLCA4OCwgNywgNiwgMSwgMjUzLCAxNTksIDg4LCAKKyAgICA3LCA2LCAxLCAyNTEsIDY3LCA4OCwgNywgNiwgMSwgMjQ5LCA2MSwgODgsIDcsIDYsIDEsIDc1LCA4OCwgNywgNiwgMSwgCisgICAgMjQ1LCA3LCA4OCwgNywgNiwgMSwgMjQzLCAyMDMsIDg4LCA3LCA2LCAxLCAyNDIsIDYxLCA4OCwgNywgNiwgMSwgNzMsIDg4LCAKKyAgICA3LCA2LCAxLCAyMzUsIDE0NSwgODgsIDcsIDYsIDEsIDIzNSwgMjQsIDg4LCA3LCA2LCAxLCAxNTYsIDg4LCA3LCA2LCAxLCAKKyAgICAxOTMsIDg4LCA3LCA2LCAxLCAyMzAsIDI2LCA4OCwgNywgNiwgMSwgNzYsIDg4LCA3LCA2LCAxLCAyMjYsIDEwNiwgODgsIDcsIAorICAgIDYsIDEsIDIyNCwgOTcsIDg4LCA3LCA2LCAxLCAxNTMsIDg4LCA3LCA2LCAxLCAyMjIsIDkyLCA4OCwgNywgNiwgMSwgMjE3LCAKKyAgICAxNTMsIDg4LCA3LCA2LCAxLCA3MCwgODgsIDcsIDYsIDEsIDIxNCwgMTA1LCA4OCwgNywgNiwgMSwgMjEyLCA5OCwgODgsIDcsIAorICAgIDYsIDEsIDIxMSwgMTc4LCA4OCwgNywgNiwgMSwgMjExLCAxMTcsIDg4LCA3LCA2LCAxLCAyMTAsIDE1OSwgMjE2LCA3LCAKKyAgICAyMjAsIDU0LCAyNTEsIDE1OCwgNywgNiwgMSwgMjIyLCA5MiwgMzcsIDMyLCA3LCA2LCAxLCAyNTEsIDY3LCAzNywgMzIsIDcsIAorICAgIDYsIDEsIDE1MywgMzcsIDI1MCwgMTkyLCAzNywgMjExLCAxODAsIDkyLCA3LCA2LCAxLCA2MSwgOTIsIDcsIDYsIDEsIDI1MywgCisgICAgMTU5LCA5MiwgNywgNiwgMSwgMjUxLCA2NywgOTIsIDcsIDYsIDEsIDI0OSwgNjEsIDkyLCA3LCA2LCAxLCA3NSwgOTIsIDcsIAorICAgIDYsIDEsIDI0NSwgNywgOTIsIDcsIDYsIDEsIDI0MywgMjAzLCA5MiwgNywgNiwgMSwgMjQyLCA2MSwgOTIsIDcsIDYsIDEsIAorICAgIDczLCA5MiwgNywgNiwgMSwgMjM1LCAxNDUsIDkyLCA3LCA2LCAxLCAyMzUsIDI0LCA5MiwgNywgNiwgMSwgMTU2LCA5MiwgNywgCisgICAgNiwgMSwgMTkzLCA5MiwgNywgNiwgMSwgMjMwLCAyNiwgOTIsIDcsIDYsIDEsIDc2LCA5MiwgNywgNiwgMSwgMjI2LCAxMDYsIAorICAgIDkyLCA3LCA2LCAxLCAyMjQsIDk3LCA5MiwgNywgNiwgMSwgMTUzLCA5MiwgNywgNiwgMSwgMjIyLCA5MiwgOTIsIDcsIDYsIAorICAgIDEsIDIxNywgMTUzLCA5MiwgNywgNiwgMSwgNzAsIDkyLCA3LCA2LCAxLCAyMTQsIDEwNSwgOTIsIDcsIDYsIDEsIDIxMiwgCisgICAgOTgsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTE3LCA5MiwgNywgNiwgMSwgMjEwLCAxNTksIAorICAgIDkyLCAyNDAsIDIwMiwgOTIsIDIzMCwgNTAsIDkyLCAyMjEsIDE4NCwgOTIsIDIxOCwgMjI3LCA5MiwgMjI0LCAyMTksIDkyLCAKKyAgICAyMTIsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCA2MSwgMTUyLCAzNywgNywgNiwgMSwgMjUzLCAxNTksIDE1MiwgMzcsIDcsIDYsIAorICAgIDEsIDI1MSwgNjcsIDE1MiwgMzcsIDcsIDYsIDEsIDI0OSwgNjEsIDE1MiwgMzcsIDcsIDYsIDEsIDc1LCAxNTIsIDM3LCA3LCAKKyAgICA2LCAxLCAyNDUsIDcsIDE1MiwgMzcsIDcsIDYsIDEsIDI0MywgMjAzLCAxNTIsIDM3LCA3LCA2LCAxLCAyNDIsIDYxLCAxNTIsIAorICAgIDM3LCA3LCA2LCAxLCA3MywgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAxNDUsIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMjQsIAorICAgIDE1MiwgMzcsIDcsIDYsIDEsIDE1NiwgMTUyLCAzNywgNywgNiwgMSwgMTkzLCAxNTIsIDM3LCA3LCA2LCAxLCAyMzAsIDI2LCAKKyAgICAxNTIsIDM3LCA3LCA2LCAxLCA3NiwgMTUyLCAzNywgNywgNiwgMSwgMjI2LCAxMDYsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNCwgCisgICAgOTcsIDE1MiwgMzcsIDcsIDYsIDEsIDE1MywgMTUyLCAzNywgNywgNiwgMSwgMjIyLCA5MiwgMTUyLCAzNywgNywgNiwgMSwgCisgICAgMjE3LCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIDcwLCAxNTIsIDM3LCA3LCA2LCAxLCAyMTQsIDEwNSwgMTUyLCAzNywgNywgCisgICAgNiwgMSwgMjEyLCA5OCwgMTUyLCAzNywgNywgNiwgMSwgMjExLCAxNzgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgMTE3LCAKKyAgICAxNTIsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMjIzLCAxNTgsIDIzMSwgOTgsIDUwLCAyMjMsIDE1OCwgMjMxLCA5NSwgNTAsIAorICAgIDE1MiwgOTIsIDcsIDYsIDEsIDYxLCAxNTIsIDkyLCA3LCA2LCAxLCAyNTMsIDE1OSwgMTUyLCA5MiwgNywgNiwgMSwgMjUxLCAKKyAgICA2NywgMTUyLCA5MiwgNywgNiwgMSwgMjQ5LCA2MSwgMTUyLCA5MiwgNywgNiwgMSwgNzUsIDE1MiwgOTIsIDcsIDYsIDEsIAorICAgIDI0NSwgNywgMTUyLCA5MiwgNywgNiwgMSwgMjQzLCAyMDMsIDE1MiwgOTIsIDcsIDYsIDEsIDI0MiwgNjEsIDE1MiwgOTIsIAorICAgIDcsIDYsIDEsIDczLCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIDE0NSwgMTUyLCA5MiwgNywgNiwgMSwgMjM1LCAyNCwgMTUyLCAKKyAgICA5MiwgNywgNiwgMSwgMTU2LCAxNTIsIDkyLCA3LCA2LCAxLCAxOTMsIDE1MiwgOTIsIDcsIDYsIDEsIDIzMCwgMjYsIDE1MiwgCisgICAgOTIsIDcsIDYsIDEsIDc2LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwNiwgMTUyLCA5MiwgNywgNiwgMSwgMjI0LCA5NywgCisgICAgMTUyLCA5MiwgNywgNiwgMSwgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCAyMjIsIDkyLCAxNTIsIDkyLCA3LCA2LCAxLCAyMTcsIAorICAgIDE1MywgMTUyLCA5MiwgNywgNiwgMSwgNzAsIDE1MiwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICAyMTIsIDk4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIDE1MiwgOTIsIAorICAgIDcsIDYsIDEsIDIxMCwgMTU5LCAyNDksIDEyOSwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAxMDYsIDE1MiwgOTIsIDI0MCwgCisgICAgMTE0LCAxNTIsIDkyLCAxOTAsIDE1MiwgOTIsIDIwNiwgMTUyLCA5MiwgMjU1LCAyNiwgMTUyLCA5MiwgMjEyLCAyMywgNDIsIAorICAgIDI0NywgMTY1LCA5MiwgMjUwLCAyNCwgOTIsIDI0OSwgMTcxLCA5MiwgMjQzLCAyNTMsIDkyLCAyNDAsIDEwNiwgOTIsIDIyOSwgCisgICAgODcsIDkyLCAyMjksIDgwLCA5MiwgMjI2LCAyMTUsIDkyLCAyMTksIDM2LCA5MiwgMTIwLCAyLCAyNDUsIDMyLCA3OCwgOTIsIAorICAgIDIxMywgMTE5LCAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCA2MSwgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgMSwgMjUzLCAKKyAgICAxNTksIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDI1MSwgNjcsIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDI0OSwgCisgICAgNjEsIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDc1LCAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCAyNDUsIDcsIAorICAgIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDI0MywgMjAzLCAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCAyNDIsIDYxLCAKKyAgICAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCA3MywgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgMSwgMjM1LCAxNDUsIDIyMywgCisgICAgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDIzNSwgMjQsIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDE1NiwgMjIzLCAxMDQsIAorICAgIDIzNSwgMjQwLCAxNiwgMSwgMTkzLCAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCAyMzAsIDI2LCAyMjMsIDEwNCwgMjM1LCAKKyAgICAyNDAsIDE2LCAxLCA3NiwgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgMSwgMjI2LCAxMDYsIDIyMywgMTA0LCAyMzUsIDI0MCwgCisgICAgMTYsIDEsIDIyNCwgOTcsIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIDE1MywgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgCisgICAgMSwgMjIyLCA5MiwgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgMSwgMjE3LCAxNTMsIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIAorICAgIDEsIDcwLCAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCAyMTQsIDEwNSwgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgMSwgCisgICAgMjEyLCA5OCwgMjIzLCAxMDQsIDIzNSwgMjQwLCAxNiwgMSwgMjExLCAxNzgsIDIyMywgMTA0LCAyMzUsIDI0MCwgMTYsIDEsIAorICAgIDIxMSwgMTE3LCAyMjMsIDEwNCwgMjM1LCAyNDAsIDE2LCAxLCAyMTAsIDE1OSwgNDIsIDE0MSwgMjQxLCA2NCwgOTIsIDU2LCAKKyAgICAyMzQsIDE5LCA5MiwgNTYsIDIwNiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTUsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MywgOTIsIDU2LCAyNDgsIDkxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNzAsIDkyLCAKKyAgICA5LCAyMTQsIDE3NywgMjM4LCA1NywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTYsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQzLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgMzYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY2LCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgNTIsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2OCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ0LCA5MiwgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNjcsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDM1LCA5MiwgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMjgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1OCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYwLCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDQ3LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNzMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA3MiwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDI2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA3MSwgOTIsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDYyLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyNywgOTIsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDUwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzIsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMSwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICA0MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQyLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCA2NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU5LCAyMTYsIDcsIDIyMCwgNTQsIDI1MSwgMTU4LCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA0MCwgMjE2LCA3LCAyMjAsIDU0LCAyNTEsIDE1OCwgOSwgMjE0LCAxNzcsIDIzOCwgNzIsIDIxNiwgNywgCisgICAgMjIwLCA1NCwgMjUxLCAxNTgsIDksIDIxNCwgMTc3LCAyMzgsIDcwLCAyMTYsIDcsIDIyMCwgNTQsIDI1MSwgMTU4LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCA1NCwgMjE2LCA3LCAyMjAsIDU0LCAyNTEsIDE1OCwgOSwgMjE0LCAxNzcsIDIzOCwgMzcsIDIxNiwgCisgICAgNywgMjIwLCA1NCwgMjUxLCAxNTgsIDksIDIxNCwgMTc3LCAyMzgsIDUwLCAyMTYsIDcsIDIyMCwgNTQsIDI1MSwgMTU4LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAzMywgMjE2LCA3LCAyMjAsIDU0LCAyNTEsIDE1OCwgOSwgMjE0LCAxNzcsIDIzOCwgNjQsIDIxNiwgCisgICAgNywgMjIwLCA1NCwgMjUxLCAxNTgsIDksIDIxNCwgMTc3LCAyMzgsIDQ2LCAzNywgMTU0LCAyNTQsIDI0NiwgMzcsIDE1NCwgCisgICAgMjU1LCAxMywgMjQ5LCA3MiwgMjQ0LCA0MywgMjUwLCAxLCAyMTQsIDE5NCwgMjI4LCAyMTQsIDIsIDIxOCwgMTU0LCAyMTgsIAorICAgIDM0LCAxMTcsIDIzMCwgMTE1LCAyMTgsIDMzLCAyNTAsIDI3LCAyNTMsIDIwOCwgMjQ2LCA1NSwgMjE4LCAzMiwgMTE3LCAKKyAgICAyNTEsIDExOSwgMjIzLCAxNTksIDI1MSwgMTQxLCAyNTMsIDIwOCwgMjI4LCAyMTMsIDIxMiwgNDEsIDIxMiwgMzUsIDIxMywgCisgICAgMTMxLCAyMzAsIDE5NiwgMjEyLCAyNSwgMjQ1LCAyMjUsIDI0MiwgMTgyLCAyNDUsIDQ2LCAyNDUsIDIyNSwgMjQyLCAxODIsIAorICAgIDI1NCwgMTI5LCAyNDUsIDIyNSwgMjQyLCAxODIsIDI1MywgMjI2LCAyNDIsIDE4MiwgMiwgMjMxLCA1MiwgMTY2LCAyMzAsIAorICAgIDEzMCwgODcsIDIxMiwgMjcsIDI0OSwgMTM4LCAyMzAsIDEzMCwgODcsIDI0NCwgOTMsIDIyNCwgMjMsIDIzMCwgMTMwLCA4NywgCisgICAgMjEyLCAyNywgMjQyLCAyMTEsIDIzMCwgMTMwLCA4NywgMjQzLCAyMzAsIDIzMCwgMTMwLCA4NywgMjEyLCA1MiwgMjQyLCAKKyAgICAyMTEsIDIzMCwgMTMwLCA4NywgMjMzLCA4MSwgMjI0LCAyMywgMjMwLCAxMzAsIDg3LCAyMTIsIDUyLCAyNDksIDEzOCwgCisgICAgMjMwLCAxMzAsIDg3LCAyNDksIDEzOCwgMjMwLCAxMjksIDE2NiwgMjMwLCAxMzAsIDIsIDI0NCwgMTkxLCAyNDQsIDkzLCAKKyAgICAyMjQsIDIzLCAyMzAsIDEzMCwgMiwgMjQ0LCAxOTEsIDIzMywgODEsIDIyNCwgMjMsIDIzMCwgMTMwLCAyLCAyNDQsIDE5MSwgCisgICAgMjQzLCAyMzAsIDIzMCwgMTMwLCAyLCAyNDQsIDE5MSwgMjE4LCAzOSwgMiwgMjQ0LCAxOTEsIDI0MiwgMTgwLCAyMTgsIAorICAgIDE1NywgMjIwLCAwLCAyMTgsIDE1NywgMjUwLCAxMTcsIDIyMSwgMTY5LCAyNDUsIDQwLCAyMTUsIDIzNiwgMjQ4LCA4NSwgCisgICAgMjE1LCAyMzYsIDIyNiwgNjAsIDIxNSwgMjM2LCAyNTEsIDI4LCAyMTUsIDExMCwgMjUwLCAxMTksIDI1MSwgMjExLCAyMjIsIAorICAgIDE5MiwgMjQxLCAxODAsIDIxOCwgMzcsIDI1MSwgMjExLCAyNDUsIDIyOSwgNjQsIDIzMSwgMTk1LCAyNDUsIDIyOSwgNjQsIAorICAgIDIyMywgMzIsIDI0MSwgMjA1LCAyNDQsIDEyLCAyMzMsIDU1LCAyNDksIDI0NywgMjMxLCAxNzEsIDIzMywgNTQsIDI0NCwgCisgICAgMTc3LCAyMzMsIDU0LCAyMzMsIDU1LCAyNDQsIDQ4LCAyMzYsIDEsIDIxMSwgMjM5LCAyMzAsIDU5LCAyMTYsIDM1LCAyNTMsIAorICAgIDE5MiwgMjQyLCAxNDQsIDIzMSwgNjgsIDIxMiwgMzksIDIxNywgNTgsIDIzMywgMjcsIDI1MiwgMTUwLCAyMjUsIDYzLCAKKyAgICAyMjMsIDExMiwgMjU0LCA1NSwgMjQyLCAxMjgsIDI1NCwgNTUsIDIyNSwgMjE4LCAyMjUsIDIxOSwgMjUwLCAxMjAsIDIxOCwgCisgICAgMTE1LCAyNDIsIDI0LCAyMTksIDkxLCA2NCwgMjI1LCA0NSwgMjMxLCA4OCwgMjI2LCAxOTgsIDI1MSwgMTk1LCAyMjQsIAorICAgIDIzMCwgMjMzLCAzNywgMjIzLCAzMywgMjQ5LCAxNDMsIDIyMywgMzMsIDI1MiwgMTYwLCAyNDksIDE3NCwgMjIzLCAzMiwgCisgICAgMjQ5LCA5NiwgMjIsIDIyMywgMzIsIDIxOCwgMTQyLCAyNTEsIDE2OCwgMjE5LCAxNSwgMjUxLCAxNTIsIDI0MywgMjUyLCAKKyAgICAyNDMsIDI0OCwgMjIyLCAyMDgsIDIxNywgMjQ3LCAyMjQsIDIzMiwgMjQ4LCAxNzYsIDIyNiwgMjM3LCAyMTgsIDgsIDI0MywgCisgICAgMjQ5LCAyMTksIDIzMSwgMjQ0LCA5MiwgMjUxLCAyMiwgMiwgMjE3LCAyNDAsIDI0OCwgMzYsIDIxOSwgNTMsIDI0MCwgMTEzLCAKKyAgICAyNDksIDE0MiwgMjIwLCA3MSwgMjQwLCAxMTIsIDI0MCwgMTEzLCAyNDksIDE0MiwgMjQ2LCAxMDksIDI0OSwgMTczLCAyNTAsIAorICAgIDg1LCAxMzAsIDI1MCwgMjU1LCAyMzIsIDE0MiwgMjQ5LCA4OSwgMjQxLCA1NiwgMjI0LCAyMzQsIDIxOSwgMjQxLCAyNTIsIAorICAgIDM3LCAyNTEsIDE2NCwgMjI0LCAyMzUsIDY0LCAyNDQsIDM0LCAyNDksIDE3MiwgMjQ0LCAyNSwgMjIsIDIzNCwgMzMsIDIxNywgCisgICAgMjAsIDIxMSwgMjMwLCAyNDIsIDE0LCAyMjIsIDEzLCAyNTEsIDE3OCwgMjIsIDI0OSwgMTAzLCAyMTEsIDIzNywgMjQyLCAKKyAgICAxODUsIDI0OSwgMjM2LCAyNDIsIDE4NSwgMjE1LCAxOTQsIDI0NiwgOTEsIDI1MiwgNjMsIDIzMCwgOTQsIDI1MCwgOCwgCisgICAgMjUyLCA2MywgMjMwLCA5MywgMjUyLCAxODgsIDI1MSwgMTc3LCAyMjMsIDM0LCAyMTEsIDIwMSwgMjI0LCAxOTYsIDI1MSwgCisgICAgMjM2LCAyNTEsIDIxLCAyMzUsIDEzOSwgMjUwLCA3OCwgMjE1LCAyMzYsIDI0NCwgMTYzLCAyNTAsIDc3LCAyNDQsIDk1LCAKKyAgICAyNDQsIDk2LCAyMTksIDEzLCAyNTIsIDE1OSwgMjI1LCAyNTEsIDIyNCwgMjQ1LCAyNDksIDIwNSwgMjUyLCAxNjAsIDIxNywgCisgICAgNjAsIDIxNSwgMjM2LCAyNDksIDEyOSwgMjQ0LCA2OCwgMjI1LCA2NCwgMjQ4LCA4MiwgMjM1LCAxMzIsIDI0NywgMTMyLCAKKyAgICAyNTAsIDIzMywgMjE4LCAxMTQsIDIxMSwgMjQwLCAyNTAsIDk5LCAyMzAsIDEzMCwgMjEzLCAxNjQsIDI1MCwgMTYzLCAyMjEsIAorICAgIDIwMCwgMjIxLCAyMjUsIDI0MiwgMTQ5LCAyNTAsIDI1MiwgMjUwLCAyMzQsIDI0MCwgMjQ2LCAyNDQsIDEzMSwgMjEyLCAwLCAKKyAgICAyMjIsIDIwMSwgMjQ5LCAyMzcsIDI0NCwgODcsIDIyNSwgMywgMjIsIDI0NCwgOTEsIDIzMCwgMjI4LCAyMzAsIDEwOSwgCisgICAgMjUxLCAxMSwgMjUwLCA0MCwgMjQxLCAyMzMsIDI1MywgMjQyLCAyMjYsIDYzLCAyMTYsIDE1LCAyNDEsIDI1MiwgMjUwLCAKKyAgICAzMCwgMjE2LCAyNDMsIDIxNiwgMTE0LCAyNTAsIDIxLCAyNTEsIDIwMywgMjI1LCAxNzgsIDI1MywgMjQxLCAyMTMsIDE3MiwgCisgICAgMjQzLCAxMTEsIDI0NywgMTk4LCAyNDEsIDE1NywgMjE5LCA4NSwgMjMxLCAyMzUsIDI1MSwgMjQ2LCAyNDMsIDExMiwgMjQ3LCAKKyAgICAyNDEsIDI1MSwgMTY3LCAyNDQsIDUzLCAyMjUsIDM0LCAyNTAsIDI0MiwgMjgsIDIyOCwgNDgsIDIzMCwgODYsIDI4LCAyMjgsIAorICAgIDQzLCAyMjEsIDIxMywgMjQyLCAxMDAsIDI4LCAyMzQsIDEzOCwgMjE1LCAxOTEsIDIxMywgMTU0LCAyOCwgMjIxLCAxOTMsIAorICAgIDIyMiwgMTI1LCAyMjAsIDEyLCAyLCAyMjEsIDIyOCwgMjE2LCAyNDUsIDIyMywgMTc5LCAyMiwgMjUyLCAxNjAsIDIxOSwgCisgICAgMTA2LCAyMiwgMjE5LCAxMDYsIDI1MSwgMTg4LCAyNTIsIDEyNCwgMjIsIDI0MSwgNTAsIDI1MCwgMTIxLCAyNDQsIDc0LCAKKyAgICAyMTksIDY0LCAyMjIsIDEyNiwgMjE4LCAxMywgMjE1LCAxOTUsIDI0MCwgMjQ3LCAyMjMsIDE4MCwgMjU0LCAxMzAsIDI0NCwgCisgICAgMzIsIDIyMiwgMTM3LCAyNDQsIDMyLCAyMTcsIDI0MiwgMjQwLCAyMzYsIDI1MSwgMTIwLCAyNDAsIDIzNiwgMiwgMjQzLCAKKyAgICA5NSwgMjI2LCAyMzAsIDI1MSwgMTIwLCAyMzUsIDEzMiwgMjI0LCAyNDAsIDIyNiwgMjI5LCAyNDUsIDQ1LCAyMjQsIDI0MCwgCisgICAgMjI2LCAyMjksIDI0MCwgMjQ1LCAyNTIsIDE0NiwgMjUzLCAxODIsIDIxNiwgMjUzLCAyMzEsIDIzNSwgMjQwLCAyNDEsIAorICAgIDIzMiwgMTEyLCAyNDAsIDI0MSwgMjQ5LCAxNzcsIDIxOCwgMTI2LCAyMjEsIDE5OSwgMjQ4LCA0NCwgMjE4LCAxMjYsIDI0NCwgCisgICAgMTgxLCAyMzUsIDE1MCwgMjMzLCA5MCwgMjM1LCAxMzIsIDI1MCwgMjI3LCAyNDUsIDQ1LCAyNTAsIDIyNywgMjIzLCAxNDIsIAorICAgIDIzMCwgMTEzLCAyMjYsIDExNSwgMjEyLCA0MSwgMjUxLCAxMjQsIDI0OSwgMTQ2LCAyMTYsIDEwNywgMjMzLCAxOSwgMjIzLCAKKyAgICAxODEsIDI1MCwgMjI1LCAyNDYsIDk3LCAyNDksIDEzNiwgMjEyLCAzLCAyMTksIDcxLCAyMTksIDY5LCAyNDAsIDI0NiwgCisgICAgMjIzLCAxNTQsIDI0MiwgMTcxLCAyMjAsIDU4LCAyMzAsIDE0NiwgMjIyLCAxOTUsIDI1MCwgMTA5LCAyNDcsIDEzNywgMjI1LCAKKyAgICA3NCwgMjUxLCAyMDQsIDI0NSwgMTcwLCAyMjYsIDIzOSwgMjE4LCAyNTMsIDIyMCwgNTMsIDI1MSwgMTIzLCAyNTQsIDkzLCAKKyAgICAyNDEsIDU1LCAyMzMsIDEyMiwgMjUyLCA2MSwgMjQ0LCA5MSwgMjE1LCAxOTQsIDI0NCwgOTEsIDI1MSwgMjEwLCAyMTUsIAorICAgIDkxLCAyNDEsIDI1MCwgMjUwLCAxMTAsIDI1MiwgMTg4LCAyNTAsIDExMCwgMjQzLCAyNDMsIDI1MiwgMTg4LCAyNTAsIDExMCwgCisgICAgMjUxLCAyMzgsIDIyNSwgMTk2LCAyMzQsIDI3LCAyMjQsIDI0OSwgMjQ2LCA4OCwgMjUxLCAxMiwgMjUyLCAxNzgsIDI1MSwgCisgICAgMTIsIDI0NywgMTMxLCAyMzAsIDExNCwgMjQ0LCAxOTEsIDI0OSwgMTQ3LCAyNDQsIDE5MSwgMjE2LCAxMDgsIDI0NCwgMTkxLCAKKyAgICAyMjMsIDE4MiwgMjQ0LCAxOTEsIDI1MCwgMjI2LCAyNDQsIDE5MSwgMjQ2LCA5OCwgMjQ0LCAxOTEsIDIxOCwgMjQyLCAyMTIsIAorICAgIDMsIDI0MCwgMjQ3LCAyNDQsIDE5MSwgMjMwLCAxNDcsIDI0NCwgMTkxLCAyNDcsIDEzOCwgMjQ0LCAxOTEsIDIyNSwgNzUsIAorICAgIDI0NCwgMTkxLCAyNDMsIDI0NiwgMjQ0LCAxOTEsIDI0MiwgMjEsIDI0NCwgMTkxLCAyMTEsIDIyNCwgMjQ0LCAxOTEsIDI1MiwgCisgICAgNzIsIDI0NCwgMTkxLCAyMjYsIDQ2LCAyNDQsIDE5MSwgMjI1LCA3NSwgMjI4LCA1NCwgMjI1LCAyMzMsIDIyNCwgMTg3LCAKKyAgICAyNDUsIDE0LCAyNDUsIDIyOCwgMjI4LCA1NCwgMjMwLCAxMTEsIDIxNiwgMjAsIDcxLCAxMjAsIDIyNSwgOCwgMjUyLCAxODMsIAorICAgIDIzNSwgMjQzLCA3MSwgMTI0LCAyMjUsIDgsIDI1MiwgMTgzLCAyMzUsIDI0MywgNzEsIDQzLCAyMjUsIDgsIDI1MiwgMTgzLCAKKyAgICAyMzUsIDI0MywgNzEsIDQ0LCAyMjUsIDgsIDI1MiwgMTgzLCAyMzUsIDI0MywgMjQ0LCA4NSwgMjQyLCAxNywgNTAsIDIxMiwgCisgICAgMzMsIDI0MiwgMTcsIDUwLCAyMjYsIDIxNiwgMjQyLCAxNywgNTAsIDIxNiwgMTM2LCAxMjAsIDUwLCAyMTYsIDEzNiwgMTI0LCAKKyAgICA1MCwgMjUwLCAyMCwgMjQyLCAxMiwgNTAsIDIwNCwgMjQyLCAxMiwgNTAsIDI0OSwgMTI0LCAyMTEsIDIyMCwgMjQxLCAyNTIsIAorICAgIDI0NSwgMTUsIDIyOSwgMTA1LCAyMTcsIDE1MiwgMjM1LCAxMjYsIDI0NiwgOTMsIDIzNCwgODMsIDI1MSwgMjQ4LCAyMTEsIAorICAgIDIyMCwgMjQ5LCAyNTAsIDIyNCwgMTI4LCAyNDIsIDE1LCAyMjQsIDIzMSwgMjMxLCAxNzgsIDIyMCwgNSwgMjUzLCAyMDQsIAorICAgIDIyMCwgNSwgMjQxLCAxNjUsIDIyMCwgNSwgMjExLCAyMjAsIDIyMSwgMjQxLCAyMTEsIDIyMCwgMjUxLCAxODcsIDI0NCwgCisgICAgMzAsIDI1MSwgOTEsIDIzNiwgMSwgMjE5LCAxNzAsIDI1MSwgOTAsIDIzNiwgMSwgMjE5LCAxNzAsIDI1MSwgMTYzLCAyNDIsIAorICAgIDE5NSwgMjMxLCAxODYsIDIxMSwgMjIxLCAyNDQsIDE3NSwgMjMxLCAxODcsIDIyLCAyMTEsIDIyMiwgMjQxLCA2MSwgMjQyLCAKKyAgICAxMSwgMTEzLCAyMzEsIDYwLCAyNDEsIDYxLCAyNDIsIDExLCAxMTMsIDIxMSwgMjE5LCAyNDEsIDYxLCAyNDIsIDExLCAyMjUsIAorICAgIDAsIDIyNiwgMjI4LCAyMTEsIDIyMiwgMiwgMjUxLCAxMDcsIDI0NSwgMjI2LCAyNTEsIDE0MiwgMiwgMjEzLCAyNDYsIDIyNSwgCisgICAgMTY5LCAyLCAyNTEsIDIxMywgMjQyLCAzNSwgMjMxLCAxODcsIDIsIDI0MiwgMTExLCAyMjUsIDExMCwgMjMxLCAxNzUsIAorICAgIDIzMSwgMTg3LCAyLCAyMTUsIDk4LCAyMjYsIDIwOSwgMjMxLCAxODYsIDIyNiwgMjA5LCAyMTEsIDIyMSwgMjUyLCAxODcsIAorICAgIDI0OSwgMTkxLCAyMTEsIDIwNSwgMjI0LCAxOTAsIDIzNSwgMTMyLCAyMjYsIDIyNCwgMjM1LCAxMzIsIDI0MiwgMTcwLCAKKyAgICAyNDIsIDIyMywgMjUyLCAxODgsIDI1NCwgMTE0LCAyNDUsIDE5LCAyNTQsIDE2MSwgMjU0LCAxNjIsIDIzMCwgMTM3LCAyMzYsIAorICAgIDYsIDIxOSwgMTAxLCAyMzUsIDIzMywgMjQ4LCAzNSwgMjI1LCAxNjgsIDI0MiwgMTA2LCAyNDgsIDE4MCwgMjMyLCAyMDIsIAorICAgIDIyOSwgMjEyLCAyMjQsIDI1NSwgMjQ0LCAxOTIsIDIzMSwgMTQzLCAyNDIsIDM0LCAyNTIsIDEzOSwgMjI1LCAyLCAyMTcsIAorICAgIDE3MiwgMjI1LCA2NywgMjM0LCA2NSwgNzgsIDIzMiwgMTEyLCAyMzMsIDExLCAyMjIsIDIzNCwgMjQzLCA1NSwgMjE4LCAKKyAgICAxMzIsIDIzNCwgNjQsIDI1MSwgMTcyLCAyNDksIDE0OSwgMiwgMjQxLCAyMjgsIDIxMiwgMTksIDI1MiwgNzAsIDI0MSwgCisgICAgMjI4LCAyNTEsIDEzNiwgMjQxLCAyMjgsIDExMywgMjQxLCAyMjYsIDIxOSwgMTEsIDI0MSwgMjI4LCAyNDIsIDEyMSwgMjQxLCAKKyAgICAyMjgsIDI0MSwgMjI5LCAyLCA3NCwgMjUxLCAyMDksIDI0MSwgMjI4LCAyNDIsIDEyOCwgMjQxLCAyMjgsIDIxMSwgNDIsIAorICAgIDI0MSwgMjI4LCAyMjQsIDEyOSwgMjQxLCAyMjgsIDI0MSwgMjI5LCAyLCAyMjMsIDM0LCAyMjMsIDQ1LCAyNDEsIDIyNiwgCisgICAgMjQxLCAyMjksIDI0OCwgODIsIDI0NywgMjUwLCAyMjAsIDgzLCAyLCAxMTUsIDU5LCAyMzUsIDIxNiwgMjQ1LCAxNzMsIAorICAgIDE5MiwgMjUxLCAxMTcsIDI1NCwgMTEzLCA4NywgMjUxLCAxOTYsIDIxOSwgOTMsIDg3LCAyNDksIDIyOSwgODcsIDIxOCwgCisgICAgMjQ3LCAyMTcsIDI0OSwgODcsIDI0NiwgODYsIDI0OCwgMTU4LCA4NywgMjI1LCA2OCwgNjQsIDIyNCwgMjUwLCAyNDQsIDYyLCAKKyAgICAyNTIsIDQsIDI0NywgMTY2LCA4NywgMjE5LCA0LCAyNTIsIDE1OSwgMjE2LCAxNTAsIDI1MiwgMTU5LCA3MSwgMjQ0LCA1MiwgCisgICAgMjQwLCAyMTIsIDIyNSwgNiwgODcsIDIzMCwgMTUwLCAyNTIsIDE3MywgMjQ5LCA5OSwgMjQ1LCAzMywgMTE0LCAyNDcsIAorICAgIDEzMywgNTAsIDI0OSwgMTQwLCAyNTAsIDI0MywgMjUyLCAxNDUsIDIsIDIxMSwgNDAsIDUwLCAyNTIsIDE0NSwgMiwgMjQ3LCAKKyAgICAxMzMsIDUwLCAyNTIsIDE0NSwgMiwgMjQ1LCA0OCwgNTAsIDI1MiwgMTQ1LCAyLCAyMjQsIDIyOSwgNTAsIDIzMCwgMTUwLCAKKyAgICAyLCAyMTEsIDIzNSwgMjUwLCAxMzksIDIsIDIxNCwgMTUzLCAyMTUsIDIzMiwgMjIsIDIxMSwgNDAsIDUwLCAyMjEsIDE3OSwgCisgICAgMjI1LCAxNjcsIDI0OSwgMjA5LCAyNTEsIDE0MCwgMjMwLCAxODcsIDI0NCwgNTcsIDI0NywgMTg2LCAyMjYsIDE2MiwgMjQ3LCAKKyAgICAxOTEsIDI0NiwgNTAsIDI0NCwgMTA4LCAyNDQsIDQxLCAyMDQsIDI0NCwgMTA4LCAyNDQsIDQxLCAyMjYsIDc3LCAyLCAyNDksIAorICAgIDEwMSwgMjI2LCA3NywgMjQ0LCAxODQsIDIxNCwgMTYzLCAyNTEsIDE3LCAyMTcsIDE5LCAyNTEsIDE3LCAyNTAsIDI0NCwgCisgICAgMjM1LCAyNDMsIDI1MCwgMTM5LCAyLCAyMTQsIDE1MywgMjE1LCAyMzEsIDI1MCwgMTM5LCAyLCAyNDYsIDEwNSwgMjE1LCAKKyAgICAyMzEsIDI1MiwgMTQyLCAyNTAsIDEzOCwgMjUwLCA3LCAyMjQsIDEyNCwgMjIyLCAxODYsIDIyNCwgMTI0LCAyMjYsIDIwLCAKKyAgICAyMTgsIDEyMiwgMjIyLCAxMzIsIDIxNSwgMjIzLCAyMjIsIDEzMiwgMjUxLCAxOTIsIDIxNywgOTIsIDIzMywgNTIsIDIyOCwgCisgICAgNDYsIDIyOCwgNDcsIDIsIDI0OCwgODEsIDI0OSwgMTQ4LCAyNTAsIDEsIDI1MSwgMTkzLCAyMDQsIDI1MSwgMTkzLCAyNDIsIAorICAgIDEyOCwgMjUxLCAxOTMsIDI1MSwgMjA5LCAyNTEsIDE5MywgMjI2LCAxNTgsIDI1MSwgMTkzLCAyNTEsIDE5MCwgMjI5LCAKKyAgICAyMDYsIDI1MiwgMTc2LCAyMjEsIDE4NywgMjMxLCA2MSwgMjE3LCAyLCAyMjMsIDEyNCwgMjI2LCA3NSwgMjQ0LCAxNjAsIAorICAgIDIzMSwgMjM1LCAyMjEsIDIyNCwgMjU0LCA5MCwgMjI0LCAxNDYsIDI1NCwgMjUzLCAyMzIsIDExNCwgMjUwLCAxMjgsIDIzMSwgCisgICAgNzMsIDIyNiwgMTMwLCAyMTUsIDIzOSwgMjM1LCAyNTMsIDIxNSwgMjM5LCAyMjYsIDgzLCAyNDYsIDI1LCA4NywgMjM1LCAKKyAgICAyNTAsIDI0NSwgMTIwLCAyNDUsIDEyMSwgMiwgMjQ2LCAxMDUsIDgwLCA0OCwgMjUwLCAxLCAyMzEsIDIwMSwgMiwgMjMyLCAKKyAgICAxMDgsIDI0NCwgNzQsIDI1MCwgMSwgMjMxLCAyMDEsIDIsIDIyMywgMTU4LCAyNDQsIDc0LCAyMDQsIDIzMSwgMjAxLCAyLCAKKyAgICAyMjMsIDE1OCwgMjQ0LCA3NCwgMjA0LCAyMzEsIDIwMSwgMiwgMjMyLCAxMDgsIDI0NCwgNzQsIDIyNCwgMjM3LCAyMjQsIAorICAgIDIzOCwgMjQwLCAyNDksIDIyOSwgODUsIDIzMCwgMTYwLCAyMjUsIDExOCwgMjMwLCAxNjAsIDIyNSwgMTE5LCAyLCA5NywgCisgICAgODAsIDI1MywgMjA4LCAyMzMsIDQ3LCAyMTMsIDE3NSwgMjMwLCAxNTksIDIzMCwgMTYwLCAyMjUsIDExOSwgMjI2LCAyMzEsIAorICAgIDIyOCwgNzYsIDIzMCwgMTYwLCAyMjUsIDExNywgMjU0LCA5MSwgMiwgMjUyLCAxMzAsIDI1MSwgMTEsIDIxMywgMTcyLCAKKyAgICAyNTEsIDExLCAyMTYsIDI1NSwgMjIzLCAxNzQsIDIxMywgMTcxLCAyMTUsIDYwLCA5NywgMjUzLCAyNDgsIDI1MCwgMywgOTcsIAorICAgIDIyLCAxNDAsIDIwNCwgMjUwLCAzNywgMjUzLCAyNDgsIDI1MCwgMywgOTcsIDIyLCAxNDAsIDIwNCwgMjUwLCAzNywgMjUzLCAKKyAgICAyNDksIDIsIDM3LCAxMjMsIDIyNiwgMTIxLCAyNTAsIDMsIDI0NiwgMTA1LCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCAzNywgCisgICAgMjUzLCAyNDgsIDI1NCwgODksIDI0NiwgMTA1LCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCAzNywgMjUzLCAyNDgsIDEyMSwgCisgICAgMjUxLCAxMzksIDg3LCAxMjUsIDI1MSwgMTM5LCA4NywgMjE5LCA4LCAyLCAyNTEsIDUsIDkxLCAyMTksIDcsIDIxOSwgOCwgCisgICAgMiwgMTIzLCAyMTksIDMyLCAyMTIsIDM1LCAyMTksIDgsIDIsIDEzNCwgMjE5LCAzMiwgMjEyLCAzNCwgMjUyLCAxMTYsIAorICAgIDI0NSwgMTczLCAyMjUsIDI4LCAyMzMsIDQzLCAyMzEsIDIxMiwgMjQyLCAxODUsIDIyMiwgMjQ4LCAyMzEsIDIxMiwgMjQyLCAKKyAgICAxODUsIDIzMiwgMTUzLCAyLCAyMzUsIDIyNiwgMjI1LCAyMDAsIDI1MCwgMSwgMjMyLCAxNTMsIDIsIDIzNCwgMTM5LCAyMzQsIAorICAgIDEzOSwgMjMyLCAxNTIsIDIwNCwgMjMyLCAxNTIsIDI1MiwgNDUsIDI1MiwgNDYsIDIsIDI1MSwgNSwgOTEsIDI1MSwgMTkxLCAKKyAgICAyMzIsIDIwNSwgODcsIDIyMywgMTc1LCAyNTEsIDg3LCAyNTIsIDE4NiwgMiwgMTQwLCA4MCwgNDgsIDI0NSwgMTQ0LCAyLCAKKyAgICAxNDAsIDgwLCA0OCwgMjI2LCAxOTgsIDIsIDI0NSwgMzIsIDE2NCwgMiwgNDMsIDQ0LCA4MCwgNDgsIDIxOSwgNDAsIDIsIAorICAgIDk3LCA4MCwgNDgsIDIxNiwgMTUsIDIsIDIxNCwgMTUzLCA4MCwgNDgsIDIyOCwgNzYsIDEyMywgMjE0LCAxODQsIDI0NSwgCisgICAgMTkyLCA4NywgMjM0LCAxMzcsIDIxNiwgMjQ4LCAyMzUsIDIyMCwgMTYsIDMxLCA3LCA2LCAyMzMsIDEwLCAyMzUsIDIyMCwgCisgICAgMTYsIDMxLCA3LCA0LCAyMzMsIDEwLCAyMzUsIDIyMCwgMTYsIDMxLCAyMjcsIDIwMCwgMjM1LCAyMjAsIDE2LCAzMSwgMjE3LCAKKyAgICAxODQsIDIzNSwgMjIwLCAxNiwgMzEsIDcsIDIzMywgMTAsIDI0NCwgOTcsIDI0NSwgMTczLCAyMTYsIDEwLCAyMTEsIDE5OSwgCisgICAgMjQyLCAyMiwgMjI3LCAxODMsIDIyLCAyNTEsIDE5OCwgMjQxLCA2NywgMjI1LCA1MSwgMjMwLCAyMjcsIDIxNywgMCwgMjQ5LCAKKyAgICAxMTUsIDI1MiwgMTYwLCAyMTksIDEyNiwgMjI1LCAxMCwgMjE4LCAxNTgsIDIsIDIzMCwgMjI1LCAyNDcsIDEyMSwgMjM1LCAKKyAgICAxMzIsIDE2LCAzMSwgMjUyLCA1OCwgMjE1LCAyMjEsIDI0NSwgMTU3LCA4NSwgNDIsIDI1MSwgODcsIDcxLCA0MiwgMjUxLCAKKyAgICA4NywgMjMzLCA4NiwgMjIzLCAxMTIsIDI1MCwgMzYsIDIzMywgODYsIDI1MSwgMjA5LCAyNTAsIDM2LCAyMzMsIDg2LCAyMjYsIAorICAgIDE1OCwgMjQ3LCAyNDksIDIzMywgODYsIDI1MSwgMjA5LCAyNDcsIDI0OSwgNCwgMjI2LCAxNTgsIDI0NywgMjQ5LCA0LCAKKyAgICAyNTEsIDIwOSwgMjQ3LCAyNDksIDIxNCwgMTYyLCAyMjMsIDExMiwgMjE1LCAyMjYsIDI0NiwgMTA2LCAyMjMsIDExMiwgCisgICAgMjE1LCAyMjYsIDIxNCwgMTYyLCA0LCAyMjMsIDExMiwgMjE1LCAyMjYsIDI0NiwgMTA2LCA0LCAyMjMsIDExMiwgMjE1LCAKKyAgICAyMjYsIDM3LCAyNDksIDEzMiwgMjI0LCAyNTMsIDI0OSwgMTMyLCAyMjQsIDI1NCwgMiwgMjQyLCAyNywgNTEsIDI0OSwgCisgICAgMTMyLCAyMjQsIDI1MywgMjI4LCA1MCwgNDMsIDIyMCwgMTU0LCAyLCAxMzQsIDI0NywgMTE5LCAyNTAsIDUsIDI0NCwgMTkyLCAKKyAgICAxMjMsIDIyNiwgMjQzLCAyNTAsIDUsIDI0NCwgMTkyLCAxMTMsIDIyNiwgMjQzLCAyNTAsIDUsIDI0NCwgMTkyLCAxMzQsIAorICAgIDIyNiwgMjQzLCAyNTAsIDUsIDI0NCwgMTkyLCAyNDQsIDEyLCAyMjYsIDI0MywgMjUwLCA1LCAyNDQsIDE5MiwgMjQ0LCA4MiwgCisgICAgMjI2LCAyNDMsIDI1MCwgNSwgMjQ0LCAxOTIsIDIxOSwgMTI2LCAyMjYsIDI0MywgMjUwLCA1LCAyNDQsIDE5MiwgMjIwLCAKKyAgICAxMjMsIDIyNiwgMjQzLCAyNTAsIDUsIDI0NCwgMTkyLCAyNDUsIDE5NCwgMjI2LCAyNDMsIDI1MCwgNSwgMjQ0LCAxOTIsIAorICAgIDIyOCwgMjAxLCAyMjYsIDI0MywgMjUwLCA1LCAyNDQsIDE5MiwgMjE2LCAyNDksIDIyNiwgMjQzLCAyNTAsIDUsIDI0NCwgCisgICAgMTkyLCAyNDUsIDE2OSwgMjI2LCAyNDMsIDI1MCwgNSwgMjQ0LCAxOTIsIDIxNSwgNzcsIDIyNiwgMjQzLCAyNTAsIDUsIAorICAgIDI0NCwgMTkyLCAyMjYsIDE5MywgMjUwLCA1LCAyNDQsIDE5MiwgMjE1LCA1NiwgMjUwLCA1LCAyNDQsIDE5MiwgMjE2LCAKKyAgICAxNDEsIDI1MCwgNSwgMjQ0LCAxOTIsIDI0NCwgOCwgMjUwLCA1LCAyNDQsIDE5MiwgMjQ0LCA4MCwgMjUwLCA1LCAyNDQsIAorICAgIDE5MiwgMjE5LCAxMjIsIDI1MCwgNSwgMjQ0LCAxOTIsIDIyMCwgMTIyLCAyNTAsIDUsIDI0NCwgMTkyLCAyNDUsIDE5MywgCisgICAgMjUwLCA1LCAyNDQsIDE5MiwgMjI4LCAyMDAsIDI1MCwgNSwgMjQ0LCAxOTIsIDIxNiwgMjQ3LCAyNTAsIDUsIDI0NCwgMTkyLCAKKyAgICAyNDUsIDE2NywgMjUwLCA1LCAyNDQsIDE5MiwgMjE1LCA3NSwgMjMwLCAxMTgsIDI0MywgMjMxLCAyMTYsIDM3LCAyMTYsIDMsIAorICAgIDIxOCwgMTQ5LCA2NCwgMjMyLCAyNDAsIDIxOSwgMTcxLCA2NCwgMjM1LCAxMzMsIDIzMCwgMTA3LCAyNDIsIDEyNSwgMjQ0LCAKKyAgICAxOTEsIDI0MiwgMTI1LCAyNDQsIDE5MiwgMiwgMjE5LCA3NSwgMjQ1LCAxNCwgMjQ0LCAxOTIsIDIsIDIxNywgMTUsIDY0LCAKKyAgICAyMzUsIDU0LCAyMTksIDc1LCAyNDQsIDE5MiwgMiwgMjA0LCAyMzAsIDExMSwgMjE5LCA3NSwgMjQ0LCAxOTIsIDIsIDIwNCwgCisgICAgMjMwLCAxMTIsIDIyLCAyMTksIDc1LCAyNDUsIDE0LCAyMTksIDc1LCAyNDQsIDE5MiwgMiwgMjA0LCAyMzAsIDExMiwgMjIsIAorICAgIDI0OSwgMjMxLCAyMTcsIDI0OCwgMjE5LCA3NSwgMjQ0LCAxOTIsIDIsIDIwNCwgMjMwLCAxMTIsIDIyLCAyMTYsIDEwNSwgCisgICAgMjQ1LCAxNCwgMjE5LCA3NSwgMjQ0LCAxOTIsIDIsIDI0MiwgMjYsIDIxOSwgNzUsIDI0NCwgMTkyLCAyLCAyNDAsIDI0OCwgCisgICAgMjExLCAyMzMsIDI0NCwgMTkxLCAyMTksIDc1LCAyNDQsIDE5MiwgMiwgMjE5LCA3NSwgMjQ1LCAxNCwgMjQ0LCAxOTIsIAorICAgIDIyMSwgMjE4LCAyNDgsIDYzLCAyNDQsIDM0LCAyMjMsIDg5LCAyNDQsIDE5MSwgMjE5LCA3NSwgMjQ0LCAxOTIsIDIsIDI0MSwgCisgICAgMjI3LCAyNDUsIDE0LCAyMTksIDc1LCAyNDQsIDE5MiwgMiwgMjE4LCAzNSwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIyOSwgODgsIAorICAgIDI0NCwgMTkxLCAyNDUsIDI0LCAyNDQsIDE5MSwgMjE0LCAxODgsIDI0NCwgMTkxLCAyNDQsIDE5MiwgMiwgMjQ5LCAyMzEsIAorICAgIDIxNywgMjQ4LCAyMjUsIDE5MywgMjQ0LCAxOTEsIDI0OSwgMjAyLCAyNDQsIDE5MSwgMjQ5LCAyMDMsIDI0NCwgMTkxLCAKKyAgICAyMzQsIDYzLCAyNDQsIDE5MSwgMjQ0LCAxOTIsIDIxNiwgMTM4LCAxMTUsIDIzNCwgNjQsIDIzNCwgNjMsIDI0NCwgMTkyLCAKKyAgICAyLCAyMTksIDc1LCAyNDUsIDE0LCAyMzQsIDYzLCAyNDQsIDE5MiwgMiwgMjUwLCAxLCAyNDUsIDE0LCAyNDQsIDE5MiwgMiwgCisgICAgMjE4LCA4OSwgMjE2LCAyMCwgMjQ0LCAxOTIsIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTEsIDIzMywgMjQ1LCAxNiwgCisgICAgMjQ0LCAxOTIsIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTYsIDEwNSwgMjQ1LCAxNCwgMjQ3LCAxOTMsIDI0NCwgMTkxLCAKKyAgICAyMTEsIDIwNCwgMjQ0LCAxOTEsIDI1NCwgMTA5LCAyNDQsIDE5MSwgMjI0LCAyMjgsIDI0NCwgMTkxLCAyNDksIDExNywgCisgICAgMjQ0LCAxOTEsIDIyNSwgMTcxLCAyNDQsIDE5MSwgMjQ0LCAxOTIsIDIsIDIzMiwgMTI3LCA2NCwgMjE1LCAyMDUsIDI0NywgCisgICAgMTkzLCAyNTEsIDg5LCAyMjMsIDg5LCAyNDQsIDE5MSwgMjQzLCAyNDAsIDI0NCwgMTkyLCAyLCAyMDQsIDIzMCwgMTExLCAKKyAgICAyNTQsIDEwNywgMjQ0LCAxOTEsIDI0NCwgMTUzLCAyNDQsIDE5MSwgMjEyLCAyMCwgMjQ0LCAxOTEsIDIxOSwgOTIsIDI0NCwgCisgICAgMTkxLCAyMTYsIDcyLCAyNDQsIDE5MSwgMjQyLCAxMjYsIDI0NCwgMTkxLCAyMzIsIDExNSwgMjQ5LCAxMTcsIDI0NCwgMTkxLCAKKyAgICAyNDQsIDE5MiwgMiwgMjA0LCAyMzAsIDExMSwgMjQwLCAyMDQsIDI0NCwgMTkxLCAyNDQsIDE5MiwgMiwgMjA0LCAyMzAsIAorICAgIDExMiwgMjIsIDI0OSwgMjMxLCAyMTcsIDI0OCwgMjQ0LCAxOTIsIDIyMSwgMTkxLCAyMzYsIDEsIDI0NCwgMTU0LCAyNTMsIAorICAgIDIxNCwgMjQ0LCAxOTEsIDI0NCwgNTAsIDI0NCwgMTkxLCAyMTksIDkzLCAyNDQsIDE5MSwgMjQ3LCAxNjYsIDI0NCwgMTkxLCAKKyAgICAyNDQsIDE5MiwgMjExLCAyMzAsIDIzMCwgMTExLCAyNDQsIDE5MiwgMiwgMjMxLCA4NSwgMjMxLCAxNDUsIDI0MiwgMTI1LCAKKyAgICAyNTAsIDIyNiwgMjQ0LCAxOTIsIDIsIDIxOSwgNzUsIDI0NSwgMTQsIDI1MCwgMjI2LCAyNDQsIDE5MiwgMiwgMjE3LCAxNSwgCisgICAgNjQsIDIzNSwgNTQsIDIxOSwgNzUsIDI1MCwgMjI2LCAyNDQsIDE5MiwgMiwgMjA0LCAyMzAsIDExMSwgMjE5LCA3NSwgMjUwLCAKKyAgICAyMjYsIDI0NCwgMTkyLCAyLCAyNDEsIDIyNywgMjQ1LCAxNCwgMjUwLCAyMjYsIDI0NCwgMTkyLCAyLCAyMTEsIDE5NiwgCisgICAgMjE5LCA3NiwgMjM0LCA2MywgMjUwLCAyMjYsIDI0NCwgMTkyLCAyLCAyNTAsIDEsIDI0NSwgMTQsIDIyNCwgMjI4LCAyNTAsIAorICAgIDIyNiwgMjQ0LCAxOTEsIDI0OSwgMTE3LCAyNTAsIDIyNiwgMjQ0LCAxOTEsIDIxMiwgMjAsIDI1MCwgMjI2LCAyNDQsIDE5MSwgCisgICAgMjQ0LCAxOTIsIDIsIDIyOCwgNzYsIDI0MiwgMTY0LCAyNDMsIDM1LCAyNDQsIDE5MiwgMiwgMjI2LCAyMTYsIDI0MywgMzUsIAorICAgIDIyNSwgMTY5LCAyNTEsIDE2OSwgMjQ4LCA3NiwgMjIxLCAxNzAsIDIzMCwgMTQ2LCAyNDEsIDIzMCwgMjMwLCAxNDYsIDIxOSwgCisgICAgOSwgMjMwLCAxNDYsIDI0MiwgNiwgMjI1LCAxNjksIDIyMywgMTU3LCAxMjMsIDI0MiwgMTYsIDIyNSwgMTY5LCAyMjMsIAorICAgIDE1NywgMjUxLCAxNzksIDI0MiwgMTIsIDIzNiwgMSwgMjUwLCAxODAsIDIyNSwgMTY5LCAyNDMsIDIzOSwgMjI1LCAxNjksIAorICAgIDIsIDIyNCwgMjI4LCAyNDQsIDE5MSwgMjI1LCAxNjksIDIsIDI0NCwgNDIsIDI0MiwgMTEsIDIyMiwgMjA0LCAyNDEsIDIxNSwgCisgICAgMjE4LCAxNDQsIDIzMiwgMTUwLCAyMjMsIDE2MywgMjUwLCAyNDUsIDI0MSwgMTYzLCAyMTUsIDI0OSwgMjQxLCAxNjMsIAorICAgIDIxNSwgMjUwLCAyLCAyNTEsIDExNSwgMjI4LCA1NCwgMjE1LCAyNDksIDIzMSwgMzMsIDE5MiwgMjIzLCAxNjQsIDIxOCwgCisgICAgMTUwLCAyMTUsIDI0NywgMjE1LCAyNDgsIDI1MCwgMjQ1LCAyNTEsIDkzLCAyMjYsIDE5NSwgMjUxLCA5MywgMjE1LCAyMDIsIAorICAgIDI1MSwgOTQsIDIxOCwgMTMwLCAyMzAsIDE4OCwgMjU0LCAxMzEsIDI0NCwgOTgsIDI0NSwgMTM4LCAyMjUsIDAsIDI1MCwgCisgICAgMjQ1LCAyMjYsIDE5NSwgMjI1LCAwLCAyNTAsIDI0NSwgMjE3LCAzMywgMjI2LCAxOTUsIDIxNywgMzMsIDI1MywgMTgxLCAKKyAgICAyMjYsIDE5NSwgMjUzLCAxODEsIDIyMywgMTE5LCAyMTMsIDI0NywgMjQ4LCA1OSwgMjE1LCAxOTMsIDI1MywgMjQzLCAyMzIsIAorICAgIDExOCwgMjE1LCAyNTUsIDIzMCwgMTQwLCAyMzAsIDExNywgMjIzLCAxNjIsIDIxOCwgNywgMjIzLCAxNjIsIDIzMCwgMTE3LCAKKyAgICAyNTEsIDI5LCAyNTQsIDIzMCwgMjE1LCAyNDYsIDIyMCwgMTcsIDIyMiwgMTgzLCAyMTksIDIsIDIwMywgMjE1LCAyNTMsIAorICAgIDIzMiwgMjMxLCA2NywgMjE1LCAyNTMsIDIzMiwgMjMxLCAyNDksIDE5MSwgNTAsIDIyNSwgMCwgMjUwLCAyMzAsIDIyMywgCisgICAgNDUsIDIzMiwgMjMxLCAyMTUsIDIyMywgMjQ0LCA3NSwgMjI2LCAxOTgsIDIyNCwgMjM5LCAyNDcsIDEyNCwgMjI4LCA3NiwgCisgICAgMjQ1LCAxMjYsIDUwLCAyMTksIDczLCA4NywgMjI4LCA3NiwgMjE5LCA3MywgODcsIDIyNCwgMTIzLCAyMzIsIDE5NCwgMjM2LCAKKyAgICAxLCAyMzUsIDE1OCwgMjI1LCA0MiwgODcsIDI0NywgMTQ3LCAyMjgsIDUzLCAyMzIsIDE5NCwgODcsIDIyNCwgMjMzLCAyMTIsIAorICAgIDQxLCA4NywgMjI4LCA2NywgMjEyLCA0MSwgODcsIDI1MiwgMywgMjI4LCA3NiwgMjUyLCAyLCAyNTIsIDEsIDIzMCwgMTE3LCAKKyAgICAyNTIsIDEsIDIyNSwgMjE0LCAyMjgsIDc2LCAyMjUsIDIxMywgMjUwLCAxMDEsIDI0OSwgMTI1LCAyMzEsIDU3LCA4NywgCisgICAgMjExLCAyMTgsIDg3LCAyMjMsIDYwLCAyNTIsIDE4OCwgODcsIDIxNiwgMzgsIDIxMiwgNDEsIDI0OSwgMjU0LCAyMTksIAorICAgIDIzNSwgMjUyLCAxMTksIDI1MiwgMTE3LCAyMjUsIDI0MywgMjQ5LCAxNzgsIDI0OSwgODcsIDI1MiwgMTcwLCAyNTAsIDIzLCAKKyAgICA0MywgMjMyLCA5MSwgMTA4LCAxNiwgMzEsIDIyNCwgNCwgMTA4LCAxNiwgMzEsIDI1NCwgMTkzLCAxMDgsIDE2LCAzMSwgCisgICAgMjQ0LCA5NywgMTA4LCAxNiwgMzEsIDI0NSwgMjI0LCAxMDgsIDE2LCAzMSwgMjEyLCA0MCwgMTA4LCAxNiwgMzEsIDI1NCwgCisgICAgNDQsIDEwOCwgMTYsIDMxLCAyNTQsIDQ1LCAyMjMsIDEwNiwgMTA4LCAxNiwgMzEsIDI1NCwgNDUsIDIyMywgMTA1LCAxMDgsIAorICAgIDE2LCAzMSwgMjU0LCA0NSwgMjEzLCAxNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDQ1LCAyMTMsIDE0MiwgMTA4LCAxNiwgMzEsIAogICAgIDIxMywgMTU3LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTYsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NSwgMTA4LCAxNiwgMzEsIDIxOCwgCi0gICAgNDQsIDEwOCwgMTYsIDMxLCAyMjUsIDEyNSwgMjE4LCA0NCwgMTA4LCAxNiwgMzEsIDg1LCAyMTgsIDQ0LCAxMDgsIDE2LCAKLSAgICAzMSwgMjMxLCA1NSwgMjE4LCA3MSwgMTA4LCAxNiwgMzEsIDIzMSwgNTUsIDIxOCwgNzAsIDEwOCwgMTYsIDMxLCAyMzEsIAotICAgIDU1LCAyMTgsIDY5LCAxMDgsIDE2LCAzMSwgMjUwLCAzOCwgMTA4LCAxNiwgMzEsIDIyMiwgMSwgMTA4LCAxNiwgMzEsIDIyOCwgCi0gICAgMTg4LCAxMDgsIDE2LCAzMSwgMjEzLCAxNDEsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MCwgMTA4LCAxNiwgMzEsIDIyMiwgMjA0LCAKLSAgICAyMjIsIDEsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNCwgMjIyLCAwLCAxMDgsIDE2LCAzMSwgMjQyLCAxNjYsIDEwOCwgMTYsIAotICAgIDMxLCAyMTksIDE2NiwgMTA4LCAxNiwgMzEsIDIzNSwgMTc3LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIzNSwgMTc3LCAKLSAgICAyMjYsIDE1MiwgMTA4LCAxNiwgMzEsIDI0OSwgMTM0LCA2NCwgMjM1LCAxNzYsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgNjQsIAotICAgIDIzNSwgMTc2LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNjgsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjM1LCAxNzUsIDIyNiwgCi0gICAgMTUzLCAxMDgsIDE2LCAzMSwgMjE4LCA3MiwgNjQsIDI0OSwgMTY3LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyNDksIAotICAgIDE2NywgMTA4LCAxNiwgMzEsIDI0OSwgMTM0LCA2NCwgMjQ5LCAxNjYsIDEwOCwgMTYsIDMxLCAyNDksIDE2OCwgMjU0LCA4MywgCi0gICAgMTA4LCAxNiwgMzEsIDIyMiwgMiwgNjQsIDI0OSwgMTY4LCAyNTQsIDgzLCAxMDgsIDE2LCAzMSwgMjE4LCA3MiwgNjQsIAotICAgIDIyMiwgMiwgNjQsIDI0OSwgMTY3LCAxMDgsIDE2LCAzMSwgMjEzLCAyNDMsIDEwOCwgMTYsIDMxLCAyMTYsIDg0LCAyMjYsIAotICAgIDE1MywgMTA4LCAxNiwgMzEsIDIzMywgNTcsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjU0LCA4MiwgMjI2LCAxNTMsIDEwOCwgCi0gICAgMTYsIDMxLCAyMTgsIDcyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgMzEsIDIyMiwgMiwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIAotICAgIDMxLCAyMTgsIDcyLCA2NCwgMjIyLCAyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgMzEsIDIxMywgMTU4LCA2NCwgMjU0LCA4MSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgMjU0LCA4MCwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTAwLCAxMDgsIDE2LCAzMSwgMjIzLCA5OSwgMTA4LCAxNiwgMzEsIDIyMywgOTgsIDEwOCwgCi0gICAgMTYsIDMxLCAyMjMsIDk3LCAxMDgsIDE2LCAzMSwgMjU0LCAxNTcsIDEwOCwgMTYsIDMxLCAyNTQsIDE1NiwgMTA4LCAxNiwgCi0gICAgMzEsIDIzMSwgMTYzLCAxMDgsIDE2LCAzMSwgMjIyLCA3LCAxMDgsIDE2LCAzMSwgMjUzLCAyNDYsIDEwOCwgMTYsIDMxLCAKLSAgICAyMjMsIDEyNSwgMTA4LCAxNiwgMzEsIDIyMywgMTI0LCAxMDgsIDE2LCAzMSwgMjUzLCAxODMsIDEwOCwgMTYsIDMxLCAyNTEsIAotICAgIDIyOSwgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMTcsIDQ5LCAxMDgsIDE2LCAzMSwgMjE3LCA0OCwgMTA4LCAxNiwgMzEsIAotICAgIDIyNCwgOCwgMjMyLCAyMjIsIDEwOCwgMTYsIDMxLCAyNTEsIDE4MywgMTA4LCAxNiwgMzEsIDI1MSwgMTgyLCAxMDgsIDE2LCAKLSAgICAzMSwgMjUxLCAxODEsIDEwOCwgMTYsIDMxLCAyNTQsIDEzOCwgMTA4LCAxNiwgMzEsIDIyNiwgMjE4LCAxMDgsIDE2LCAzMSwgCi0gICAgMjE4LCAyNDgsIDEwOCwgMTYsIDMxLCAyMTYsIDgyLCAxMDgsIDE2LCAzMSwgMjQyLCA5NiwgMTA4LCAxNiwgMzEsIDIxMiwgCi0gICAgMjgsIDEwOCwgMTYsIDMxLCAyMjQsIDIyNiwgMTA4LCAxNiwgMzEsIDI1MSwgMTQsIDEwOCwgMTYsIDMxLCAyMTUsIDg2LCAKLSAgICAxMDgsIDE2LCAzMSwgMjUwLCAyNDYsIDIzMCwgMTIyLCAxMDgsIDE2LCAzMSwgMjIxLCAyMDIsIDY0LCAyMzUsIDU1LCAxMDgsIAotICAgIDE2LCAzMSwgMjUxLCAyNSwgMTA4LCAxNiwgMzEsIDIxNSwgMjE5LCAxMDgsIDE2LCAzMSwgMjE4LCAxNTQsIDIxNSwgMjE5LCAKLSAgICAxMDgsIDE2LCAzMSwgMjMyLCAxNDgsIDEwOCwgMTYsIDMxLCAyMTksIDU2LCAxMDgsIDE2LCAzMSwgMjE0LCAxNDIsIDEwOCwgCi0gICAgMTYsIDMxLCAyNDAsIDI0NiwgMjQ2LCA2NCwgMTA4LCAxNiwgMzEsIDI1MywgMjI3LCAxMDgsIDE2LCAzMSwgMjI0LCAyMzQsIAotICAgIDI1MywgMjI3LCAxMDgsIDE2LCAzMSwgMjUxLCAxNDIsIDEwOCwgMTYsIDMxLCAyMjQsIDIyNSwgMjUxLCAxNDIsIDEwOCwgCi0gICAgMTYsIDMxLCAyNTQsIDEzNSwgMTA4LCAxNiwgMzEsIDIxOCwgMTE3LCAyMTgsIDI2LCAyMTgsIDExNiwgMTA4LCAxNiwgMzEsIAotICAgIDIxOCwgMTE3LCAyMTgsIDI2LCAyMTgsIDExNSwgMTA4LCAxNiwgMzEsIDIxOCwgNjgsIDEwOCwgMTYsIDMxLCAyMjQsIDIwMCwgCi0gICAgMTA4LCAxNiwgMzEsIDI0NywgMTgxLCAxMDgsIDE2LCAzMSwgMjQ3LCAxODMsIDEwOCwgMTYsIDMxLCAyNDcsIDE4MiwgMTA4LCAKLSAgICAxNiwgMzEsIDIyNCwgMTMxLCAxMDgsIDE2LCAzMSwgMjI0LCAxMjAsIDEwOCwgMTYsIDMxLCAyNDksIDEyMiwgMTA4LCAxNiwgCi0gICAgMzEsIDI0OSwgMTIxLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMjAsIDEwOCwgMTYsIDMxLCAyNDksIDExOSwgMTA4LCAxNiwgMzEsIAotICAgIDI0OSwgMTE4LCAxMDgsIDE2LCAzMSwgMjU0LCAxNjksIDEwOCwgMTYsIDMxLCAyNTIsIDExOSwgNjQsIDIzMSwgMTQ5LCAKLSAgICAxMDgsIDE2LCAzMSwgMjUyLCAxMTksIDY0LCAyMTQsIDE3LCAxMDgsIDE2LCAzMSwgMjIzLCA1NywgMTA4LCAxNiwgMzEsIAotICAgIDI0MCwgMjM4LCAxMDgsIDE2LCAzMSwgMjI4LCAyMTIsIDEwOCwgMTYsIDMxLCAyNDgsIDE0NSwgMTA4LCAxNiwgMzEsIDIzMCwgCi0gICAgMTM0LCAxMDgsIDE2LCAzMSwgMTYzLCAyNDYsIDk0LCAxMDgsIDE2LCAzMSwgMTYzLCAyMjYsIDEzMiwgOSwgMTQsIDI0MCwgCi0gICAgMTAyLCA5LCAxNCwgMjQwLCAxMDEsIDksIDE0LCAyNDAsIDEwMCwgOSwgMTQsIDI0MCwgOTksIDksIDE0LCAyNDAsIDk4LCA5LCAKLSAgICAxNCwgMjQwLCA5NywgOSwgMTQsIDI0MCwgOTYsIDksIDE0LCAyNDAsIDk1LCA5LCAxNCwgMjQwLCA5NCwgOSwgMTQsIDI0MCwgCi0gICAgOTMsIDksIDE0LCAyNDAsIDkyLCA5LCAxNCwgMjQwLCA5MSwgOSwgMTQsIDI0MCwgOTAsIDksIDE0LCAyNDAsIDg5LCA5LCAKLSAgICAxNCwgMjQwLCA4OCwgOSwgMTQsIDI0MCwgODcsIDksIDE0LCAyNDAsIDg2LCA5LCAxNCwgMjQwLCA4NSwgOSwgMTQsIDI0MCwgCi0gICAgODQsIDksIDE0LCAyNDAsIDgzLCA5LCAxNCwgMjQwLCA4MiwgOSwgMTQsIDI0MCwgODEsIDksIDE0LCAyNDAsIDgwLCA5LCAKLSAgICAxNCwgMjQwLCA3OSwgOSwgMTQsIDI0MCwgNzgsIDksIDE0LCAyNDAsIDc3LCA5LCAxNCwgMjQwLCA3NiwgOSwgMTQsIDI0MCwgCi0gICAgNzUsIDksIDE0LCAyNDAsIDc0LCA5LCAxNCwgMjQwLCA3MywgOSwgMTQsIDI0MCwgNzIsIDksIDE0LCAyNDAsIDcxLCA5LCAKLSAgICAxNCwgMjQwLCA3MCwgOSwgMTQsIDI0MCwgNjksIDksIDE0LCAyNDAsIDY4LCA5LCAxNCwgMjQwLCA2NywgOSwgMTQsIDI0MCwgCi0gICAgNjYsIDksIDE0LCAyNDAsIDY1LCA5LCAxNCwgMjQwLCA2NCwgOSwgMTQsIDI0MCwgNjMsIDksIDE0LCAyNDAsIDYyLCA5LCAKLSAgICAxNCwgMjQwLCA2MSwgOSwgMTQsIDI0MCwgNjAsIDksIDE0LCAyNDAsIDU5LCA5LCAxNCwgMjQwLCA1OCwgOSwgMTQsIDI0MCwgCi0gICAgNTcsIDksIDE0LCAyNDAsIDU2LCA5LCAxNCwgMjQwLCA1NSwgOSwgMTQsIDI0MCwgNTQsIDksIDE0LCAyNDAsIDUzLCA5LCAKLSAgICAxNCwgMjQwLCA1MiwgOSwgMTQsIDI0MCwgNTEsIDksIDE0LCAyNDAsIDUwLCA5LCAxNCwgMjQwLCA0OSwgOSwgMTQsIDI0MCwgCi0gICAgNDgsIDksIDE0LCAyNDAsIDQ3LCA5LCAxNCwgMjQwLCA0NiwgOSwgMTQsIDI0MCwgNDUsIDksIDE0LCAyNDAsIDQ0LCA5LCAKLSAgICAxNCwgMjQwLCA0MywgOSwgMTQsIDI0MCwgNDIsIDksIDE0LCAyNDAsIDQxLCA5LCAxNCwgMjQwLCA0MCwgOSwgMTQsIDI0MCwgCi0gICAgMzksIDksIDE0LCAyNDAsIDM4LCA5LCAxNCwgMjQwLCAzNywgOSwgMTQsIDI0MCwgMzYsIDksIDE0LCAyNDAsIDM1LCA5LCAKLSAgICAxNCwgMjQwLCAzNCwgOSwgMTQsIDI0MCwgMzMsIDksIDE0LCAyNDAsIDMyLCA5LCAxNCwgMjQwLCAzMSwgOSwgMTQsIDI0MCwgCi0gICAgMzAsIDksIDE0LCAyNDAsIDI5LCA5LCAxNCwgMjQwLCAyOCwgOSwgMTQsIDI0MCwgMjcsIDksIDE0LCAyNDAsIDI2LCA5LCAKLSAgICAxNCwgMjQwLCAyNSwgOSwgMTQsIDI0MCwgMjQsIDksIDE0LCAyNDAsIDIzLCA5LCAxNCwgMjQwLCAyMiwgOSwgMTQsIDI0MCwgCi0gICAgMjEsIDksIDE0LCAyNDAsIDIwLCA5LCAxNCwgMjQwLCAxOSwgOSwgMTQsIDI0MCwgMTgsIDksIDE0LCAyNDAsIDE3LCA5LCAKLSAgICAxNCwgMjQwLCAxNiwgOSwgMTQsIDI0MCwgMTUsIDksIDE0LCAyNDAsIDE0LCA5LCAxNCwgMjQwLCAxMywgOSwgMTQsIDI0MCwgCi0gICAgMTIsIDksIDE0LCAyNDAsIDExLCA5LCAxNCwgMjQwLCAxMCwgOSwgMTQsIDI0MCwgOSwgOSwgMTQsIDI0MCwgOCwgOSwgMTQsIAotICAgIDI0MCwgNywgOSwgMTQsIDI0MCwgNiwgOSwgMTQsIDI0MCwgNSwgOSwgMTQsIDI0MCwgNCwgOSwgMTQsIDI0MCwgMywgOSwgCi0gICAgMTQsIDI0MCwgMiwgOSwgMTQsIDI0MCwgMSwgOSwgMTQsIDI0MCwgMCwgOSwgMTQsIDIzOSwgMjU1LCA5LCAxNCwgMjM5LCAKLSAgICAyNTQsIDksIDE0LCAyMzksIDI1MywgOSwgMTQsIDIzOSwgMjUyLCA5LCAxNCwgMjM5LCAyNTEsIDksIDE0LCAyMzksIDI1MCwgCi0gICAgOSwgMTQsIDIzOSwgMjQ5LCA5LCAxNCwgMjM5LCAyNDgsIDksIDE0LCAyMzksIDI0NywgOSwgMTQsIDIzOSwgMjQ2LCA5LCAKLSAgICAxNCwgMjM5LCAyNDUsIDksIDE0LCAyMzksIDI0NCwgOSwgMTQsIDIzOSwgMjQzLCA5LCAxNCwgMjM5LCAyNDIsIDksIDE0LCAKLSAgICAyMzksIDI0MSwgOSwgMTQsIDIzOSwgMjQwLCA5LCAxNCwgMjM5LCAyMzksIDksIDE0LCAyMzksIDIzOCwgOSwgMTQsIDIzOSwgCi0gICAgMjM3LCA5LCAxNCwgMjM5LCAyMzYsIDksIDE0LCAyMzksIDIzNSwgOSwgMTQsIDIzOSwgMjM0LCA5LCAxNCwgMjM5LCAyMzMsIAotICAgIDksIDE0LCAyMzksIDIzMiwgOSwgMTQsIDIzOSwgMjMxLCA5LCAxNCwgMjM5LCAyMzAsIDksIDE0LCAyMzksIDIyOSwgOSwgCi0gICAgMTQsIDIzOSwgMjI4LCA5LCAxNCwgMjM5LCAyMjcsIDksIDE0LCAyMzksIDIyNiwgOSwgMTQsIDIzOSwgMjI1LCA5LCAxNCwgCi0gICAgMjM5LCAyMjQsIDksIDE0LCAyMzksIDIyMywgOSwgMTQsIDIzOSwgMjIyLCA5LCAxNCwgMjM5LCAyMjEsIDksIDE0LCAyMzksIAotICAgIDIyMCwgOSwgMTQsIDIzOSwgMjE5LCA5LCAxNCwgMjM5LCAyMTgsIDksIDE0LCAyMzksIDIxNywgOSwgMTQsIDIzOSwgMjE2LCAKLSAgICA5LCAxNCwgMjM5LCAyMTUsIDksIDE0LCAyMzksIDIxNCwgOSwgMTQsIDIzOSwgMjEzLCA5LCAxNCwgMjM5LCAyMTIsIDksIAotICAgIDE0LCAyMzksIDIxMSwgOSwgMTQsIDIzOSwgMjEwLCA5LCAxNCwgMjM5LCAyMDksIDksIDE0LCAyMzksIDIwOCwgOSwgMTQsIAotICAgIDIzOSwgMjA3LCA5LCAxNCwgMjM5LCAyMDYsIDksIDE0LCAyMzksIDIwNSwgOSwgMTQsIDIzOSwgMjA0LCA5LCAxNCwgMjM5LCAKLSAgICAyMDMsIDksIDE0LCAyMzksIDIwMiwgOSwgMTQsIDIzOSwgMjAxLCA5LCAxNCwgMjM5LCAyMDAsIDksIDE0LCAyMzksIDE5OSwgCi0gICAgOSwgMTQsIDIzOSwgMTk4LCA5LCAxNCwgMjM5LCAxOTcsIDksIDE0LCAyMzksIDE5NiwgOSwgMTQsIDIzOSwgMTk1LCA5LCAKLSAgICAxNCwgMjM5LCAxOTQsIDksIDE0LCAyMzksIDE5MywgOSwgMTQsIDIzOSwgMTkyLCA5LCAxNCwgMjM5LCAxOTEsIDksIDE0LCAKLSAgICAyMzksIDE5MCwgOSwgMTQsIDIzOSwgMTg5LCA5LCAxNCwgMjM5LCAxODgsIDksIDE0LCAyMzksIDE4NywgOSwgMTQsIDIzOSwgCi0gICAgMTg2LCA5LCAxNCwgMjM5LCAxODUsIDksIDE0LCAyMzksIDE4NCwgOSwgMTQsIDIzOSwgMTgzLCA5LCAxNCwgMjM5LCAxODIsIAotICAgIDksIDE0LCAyMzksIDE4MSwgOSwgMTQsIDIzOSwgMTgwLCA5LCAxNCwgMjM5LCAxNzksIDksIDE0LCAyMzksIDE3OCwgOSwgCi0gICAgMTQsIDIzOSwgMTc3LCA5LCAxNCwgMjM5LCAxNzYsIDksIDE0LCAyMzksIDE3NSwgOSwgMTQsIDIzOSwgMTc0LCA5LCAxNCwgCi0gICAgMjM5LCAxNzMsIDksIDE0LCAyMzksIDE3MiwgOSwgMTQsIDIzOSwgMTcxLCA5LCAxNCwgMjM5LCAxNzAsIDksIDE0LCAyMzksIAotICAgIDE2OSwgOSwgMTQsIDIzOSwgMTY4LCA5LCAxNCwgMjM5LCAxNjcsIDksIDE0LCAyMzksIDE2NiwgOSwgMTQsIDIzOSwgMTY1LCAKLSAgICA5LCAxNCwgMjM5LCAxNjQsIDksIDE0LCAyMzksIDE2MywgOSwgMTQsIDIzOSwgMTYyLCA5LCAxNCwgMjM5LCAxNjEsIDksIAotICAgIDE0LCAyMzksIDE2MCwgOSwgMTQsIDIzOSwgMTU5LCA5LCAxNCwgMjM5LCAxNTgsIDksIDE0LCAyMzksIDE1NywgOSwgMTQsIAotICAgIDIzOSwgMTU2LCA5LCAxNCwgMjM5LCAxNTUsIDksIDE0LCAyMzksIDE1NCwgOSwgMTQsIDIzOSwgMTUzLCA5LCAxNCwgMjM5LCAKLSAgICAxNTIsIDksIDE0LCAyMzksIDE1MSwgOSwgMTQsIDIzOSwgMTUwLCA5LCAxNCwgMjM5LCAxNDksIDksIDE0LCAyMzksIDE0OCwgCi0gICAgOSwgMTQsIDIzOSwgMTQ3LCA5LCAxNCwgMjM5LCAxNDYsIDksIDE0LCAyMzksIDE0NSwgOSwgMTQsIDIzOSwgMTQ0LCA5LCAKLSAgICAxNCwgMjM5LCAxNDMsIDksIDE0LCAyMzksIDE0MiwgOSwgMTQsIDIzOSwgMTQxLCA5LCAxNCwgMjM5LCAxNDAsIDksIDE0LCAKLSAgICAyMzksIDEzOSwgOSwgMTQsIDIzOSwgMTM4LCA5LCAxNCwgMjM5LCAxMzcsIDksIDE0LCAyMzksIDEzNiwgOSwgMTQsIDIzOSwgCi0gICAgMTM1LCA5LCAxNCwgMjM5LCAxMzQsIDksIDE0LCAyMzksIDEzMywgOSwgMTQsIDIzOSwgMTMyLCA5LCAxNCwgMjM5LCAxMzEsIAotICAgIDksIDE0LCAyMzksIDEzMCwgOSwgMTQsIDIzOSwgMTI5LCA5LCAxNCwgMjM5LCAxMjgsIDksIDE0LCAyMzksIDEyNywgOSwgCi0gICAgMTQsIDIzOSwgMTI2LCA5LCAxNCwgMjM5LCAxMjUsIDksIDE0LCAyMzksIDEyNCwgOSwgMTQsIDIzOSwgMTIzLCA5LCAxNCwgCi0gICAgMjM5LCAxMjIsIDksIDE0LCAyMzksIDEyMSwgOSwgMTQsIDIzOSwgMTIwLCA5LCAxNCwgMjM5LCAxMTksIDksIDE0LCAyMzksIAotICAgIDExOCwgOSwgMTQsIDIzOSwgMTE3LCA5LCAxNCwgMjM5LCAxMTYsIDksIDE0LCAyMzksIDExNSwgOSwgMTQsIDIzOSwgMTE0LCAKLSAgICA5LCAxNCwgMjM5LCAxMTMsIDksIDE0LCAyMzksIDExMiwgOSwgMTQsIDIzOSwgMTExLCA5LCAxNCwgMjM5LCAxMTAsIDksIAotICAgIDE0LCAyMzksIDEwOSwgOSwgMTQsIDIzOSwgMTA4LCA5LCAxNCwgMjM5LCAxMDcsIDksIDE0LCAyMzksIDEwNiwgOSwgMTQsIAotICAgIDIzOSwgMTA1LCA5LCAxNCwgMjM5LCAxMDQsIDksIDE0LCAyMzksIDEwMywgOSwgMTQsIDIzOSwgMTAyLCA5LCAxNCwgMjM5LCAKLSAgICAxMDEsIDksIDE0LCAyMzksIDEwMCwgOSwgMTQsIDIzOSwgOTksIDksIDE0LCAyMzksIDk4LCA5LCAxNCwgMjM5LCA5NywgOSwgCi0gICAgMTQsIDIzOSwgOTYsIDksIDE0LCAyMzksIDk1LCA5LCAxNCwgMjM5LCA5NCwgOSwgMTQsIDIzOSwgOTMsIDksIDE0LCAyMzksIAotICAgIDkyLCA5LCAxNCwgMjM5LCA5MSwgOSwgMTQsIDIzOSwgOTAsIDksIDE0LCAyMzksIDg5LCA5LCAxNCwgMjM5LCA4OCwgOSwgCi0gICAgMTQsIDIzOSwgODcsIDksIDE0LCAyMzksIDg2LCA5LCAxNCwgMjM5LCA4NSwgOSwgMTQsIDIzOSwgODQsIDksIDE0LCAyMzksIAotICAgIDgzLCA5LCAxNCwgMjM5LCA4MiwgOSwgMTQsIDIzOSwgODEsIDksIDE0LCAyMzksIDgwLCA5LCAxNCwgMjM5LCA3OSwgOSwgCi0gICAgMTQsIDIzOSwgNzgsIDksIDE0LCAyMzksIDc3LCA5LCAxNCwgMjM5LCA3NiwgOSwgMTQsIDIzOSwgNzUsIDksIDE0LCAyMzksIAotICAgIDc0LCA5LCAxNCwgMjM5LCA3MywgOSwgMTQsIDIzOSwgNzIsIDksIDE0LCAyMzksIDcxLCA5LCAxNCwgMjM5LCA3MCwgOSwgCi0gICAgMTQsIDIzOSwgNjksIDksIDE0LCAyMzksIDY4LCA5LCAxNCwgMjM5LCA2NywgOSwgMTQsIDIzOSwgNjYsIDksIDE0LCAyMzksIAotICAgIDY1LCA5LCAxNCwgMjM5LCA2NCwgOSwgMTQsIDIzOSwgNjMsIDksIDE0LCAyMzksIDYyLCA5LCAxNCwgMjM5LCA2MSwgOSwgCi0gICAgMTQsIDIzOSwgNjAsIDksIDE0LCAyMzksIDU5LCA5LCAxNCwgMjM5LCA1OCwgOSwgMTQsIDIzOSwgNTcsIDksIDE0LCAyMzksIAotICAgIDU2LCA5LCAxNCwgMjM5LCA1NSwgOSwgMTQsIDIzOSwgNTQsIDksIDE0LCAyMzksIDUzLCA5LCAxNCwgMjM5LCA1MiwgOSwgCi0gICAgMTQsIDIzOSwgNTEsIDksIDE0LCAyMzksIDUwLCA5LCAxNCwgMjM5LCA0OSwgOSwgMTQsIDIzOSwgNDgsIDksIDE0LCAyMzksIAotICAgIDQ3LCA5LCAxNCwgMjM5LCA0NiwgOSwgMTQsIDIzOSwgNDUsIDksIDE0LCAyMzksIDQ0LCA5LCAxNCwgMjM5LCA0MywgOSwgCi0gICAgMTQsIDIzOSwgNDIsIDksIDE0LCAyMzksIDQxLCA5LCAxNCwgMjM5LCA0MCwgOSwgMTQsIDIzOSwgMzksIDksIDE0LCAyMzksIAotICAgIDM4LCA5LCAxNCwgMjM5LCAzNywgOSwgMTQsIDIzOSwgMzYsIDksIDE0LCAyMzksIDM1LCA5LCAxNCwgMjM5LCAzNCwgOSwgCi0gICAgMTQsIDIzOSwgMzMsIDksIDE0LCAyMzksIDMyLCA5LCAxNCwgMjM5LCAzMSwgOSwgMTQsIDIzOSwgMzAsIDksIDE0LCAyMzksIAotICAgIDI5LCA5LCAxNCwgMjM5LCAyOCwgOSwgMTQsIDIzOSwgMjcsIDksIDE0LCAyMzksIDI2LCA5LCAxNCwgMjM5LCAyNSwgOSwgCi0gICAgMTQsIDIzOSwgMjQsIDksIDE0LCAyMzksIDIzLCA5LCAxNCwgMjM5LCAyMiwgOSwgMTQsIDIzOSwgMjEsIDksIDE0LCAyMzksIAotICAgIDIwLCA5LCAxNCwgMjM5LCAxOSwgOSwgMTQsIDIzOSwgMTgsIDksIDE0LCAyMzksIDE3LCA5LCAxNCwgMjM5LCAxNiwgOSwgCi0gICAgMTQsIDIzOSwgMTUsIDksIDE0LCAyMzksIDE0LCA5LCAxNCwgMjM5LCAxMywgOSwgMTQsIDIzOSwgMTIsIDksIDE0LCAyMzksIAotICAgIDExLCA5LCAxNCwgMjM5LCAxMCwgOSwgMTQsIDIzOSwgOSwgOSwgMTQsIDIzOSwgOCwgOSwgMTQsIDIzOSwgNywgOSwgMTQsIAotICAgIDIzOSwgNiwgOSwgMTQsIDIzOSwgNSwgOSwgMTQsIDIzOSwgNCwgOSwgMTQsIDIzOSwgMywgOSwgMTQsIDIzOSwgMiwgOSwgCi0gICAgMTQsIDIzOSwgMSwgOSwgMTQsIDIzOSwgMCwgOSwgMTQsIDIzOCwgMjU1LCA5LCAxNCwgMjM4LCAyNTQsIDksIDE0LCAyMzgsIAotICAgIDI1MywgOSwgMTQsIDIzOCwgMjUyLCA5LCAxNCwgMjM4LCAyNTEsIDksIDE0LCAyMzgsIDI1MCwgOSwgMTQsIDIzOCwgMjQ5LCAKLSAgICA5LCAxNCwgMjM4LCAyNDgsIDksIDE0LCAyMzgsIDI0NywgOSwgMTQsIDIzOCwgMjQ2LCA5LCAxNCwgMjM4LCAyNDUsIDksIAotICAgIDE0LCAyMzgsIDI0NCwgOSwgMTQsIDIzOCwgMjQzLCA5LCAxNCwgMjM4LCAyNDIsIDksIDE0LCAyMzgsIDI0MSwgOSwgMTQsIAotICAgIDIzOCwgMjQwLCA5LCAxNCwgMjM4LCAyMzksIDksIDE0LCAyMzgsIDIzOCwgOSwgMTQsIDIzOCwgMjM3LCA5LCAxNCwgMjM4LCAKLSAgICAyMzYsIDksIDE0LCAyMzgsIDIzNSwgOSwgMTQsIDIzOCwgMjM0LCA5LCAxNCwgMjM4LCAyMzMsIDksIDE0LCAyMzgsIDIzMiwgCi0gICAgOSwgMTQsIDIzOCwgMjMxLCA5LCAxNCwgMjM4LCAyMzAsIDksIDE0LCAyMzgsIDIyOSwgOSwgMTQsIDIzOCwgMjI4LCA5LCAKLSAgICAxNCwgMjM4LCAyMjcsIDksIDE0LCAyMzgsIDIyNiwgOSwgMTQsIDIzOCwgMjI1LCA5LCAxNCwgMjM4LCAyMjQsIDksIDE0LCAKLSAgICAyMzgsIDIyMywgOSwgMTQsIDIzOCwgMjIyLCA5LCAxNCwgMjM4LCAyMjEsIDksIDE0LCAyMzgsIDIyMCwgOSwgMTQsIDIzOCwgCi0gICAgMjE5LCA5LCAxNCwgMjM4LCAyMTgsIDksIDE0LCAyMzgsIDIxNywgOSwgMTQsIDIzOCwgMjE2LCA5LCAxNCwgMjM4LCAyMTUsIAotICAgIDksIDE0LCAyMzgsIDIxNCwgOSwgMTQsIDIzOCwgMjEzLCA5LCAxNCwgMjM4LCAyMTIsIDksIDE0LCAyMzgsIDIxMSwgOSwgCi0gICAgMTQsIDIzOCwgMjEwLCA5LCAxNCwgMjM4LCAyMDksIDksIDE0LCAyMzgsIDIwOCwgOSwgMTQsIDIzOCwgMjA3LCA5LCAxNCwgCi0gICAgMjM4LCAyMDYsIDksIDE0LCAyMzgsIDIwNSwgOSwgMTQsIDIzOCwgMjA0LCA5LCAxNCwgMjM4LCAyMDMsIDksIDE0LCAyMzgsIAotICAgIDIwMiwgOSwgMTQsIDIzOCwgMjAxLCA5LCAxNCwgMjM4LCAyMDAsIDksIDE0LCAyMzgsIDE5OSwgOSwgMTQsIDIzOCwgMTk4LCAKLSAgICA5LCAxNCwgMjM4LCAxOTcsIDksIDE0LCAyMzgsIDE5NiwgOSwgMTQsIDIzOCwgMTk1LCA5LCAxNCwgMjM4LCAxOTQsIDksIAotICAgIDE0LCAyMzgsIDE5MywgOSwgMTQsIDIzOCwgMTkyLCA5LCAxNCwgMjM4LCAxOTEsIDksIDE0LCAyMzgsIDE5MCwgOSwgMTQsIAotICAgIDIzOCwgMTg5LCA5LCAxNCwgMjM4LCAxODgsIDksIDE0LCAyMzgsIDE4NywgOSwgMTQsIDIzOCwgMTg2LCA5LCAxNCwgMjM4LCAKLSAgICAxODUsIDksIDE0LCAyMzgsIDE4NCwgOSwgMTQsIDIzOCwgMTgzLCA5LCAxNCwgMjM4LCAxODIsIDksIDE0LCAyMzgsIDE4MSwgCi0gICAgOSwgMTQsIDIzOCwgMTgwLCA5LCAxNCwgMjM4LCAxNzksIDksIDE0LCAyMzgsIDE3OCwgOSwgMTQsIDIzOCwgMTc3LCA5LCAKLSAgICAxNCwgMjM4LCAxNzYsIDksIDE0LCAyMzgsIDE3NSwgOSwgMTQsIDIzOCwgMTc0LCA5LCAxNCwgMjM4LCAxNzMsIDksIDE0LCAKLSAgICAyMzgsIDE3MiwgOSwgMTQsIDIzOCwgMTcxLCA5LCAxNCwgMjM4LCAxNzAsIDksIDE0LCAyMzgsIDE2OSwgOSwgMTQsIDIzOCwgCi0gICAgMTY4LCA5LCAxNCwgMjM4LCAxNjcsIDksIDE0LCAyMzgsIDE2NiwgOSwgMTQsIDIzOCwgMTY1LCA5LCAxNCwgMjM4LCAxNjQsIAotICAgIDksIDE0LCAyMzgsIDE2MywgOSwgMTQsIDIzOCwgMTYyLCA5LCAxNCwgMjM4LCAxNjEsIDksIDE0LCAyMzgsIDE2MCwgOSwgCi0gICAgMTQsIDIzOCwgMTU5LCA5LCAxNCwgMjM4LCAxNTgsIDksIDE0LCAyMzgsIDE1NywgOSwgMTQsIDIzOCwgMTU2LCA5LCAxNCwgCi0gICAgMjM4LCAxNTUsIDksIDE0LCAyMzgsIDE1NCwgOSwgMTQsIDIzOCwgMTUzLCA5LCAxNCwgMjM4LCAxNTIsIDksIDE0LCAyMzgsIAotICAgIDE1MSwgOSwgMTQsIDIzOCwgMTUwLCA5LCAxNCwgMjM4LCAxNDksIDksIDE0LCAyMzgsIDE0OCwgOSwgMTQsIDIzOCwgMTQ3LCAKLSAgICA5LCAxNCwgMjM4LCAxNDYsIDksIDE0LCAyMzgsIDE0NSwgOSwgMTQsIDIzOCwgMTQ0LCA5LCAxNCwgMjM4LCAxNDMsIDksIAotICAgIDE0LCAyMzgsIDE0MiwgOSwgMTQsIDIzOCwgMTQxLCA5LCAxNCwgMjM4LCAxNDAsIDksIDE0LCAyMzgsIDEzOSwgOSwgMTQsIAotICAgIDIzOCwgMTM4LCA5LCAxNCwgMjM4LCAxMzcsIDksIDE0LCAyMzgsIDEzNiwgOSwgMTQsIDIzOCwgMTM1LCA5LCAxNCwgMjM4LCAKLSAgICAxMzQsIDksIDE0LCAyMzgsIDEzMywgOSwgMTQsIDIzOCwgMTMyLCA5LCAxNCwgMjM4LCAxMzEsIDksIDE0LCAyMzgsIDEzMCwgCi0gICAgOSwgMTQsIDIzOCwgMTI5LCA5LCAxNCwgMjM4LCAxMjgsIDksIDE0LCAyMzgsIDEyNywgOSwgMTQsIDIzOCwgMTI2LCA5LCAKLSAgICAxNCwgMjM4LCAxMjUsIDksIDE0LCAyMzgsIDEyNCwgOSwgMTQsIDIzOCwgMTIzLCA5LCAxNCwgMjM4LCAxMjIsIDksIDE0LCAKLSAgICAyMzgsIDEyMSwgOSwgMTQsIDIzOCwgMTIwLCA5LCAxNCwgMjM4LCAxMTksIDksIDE0LCAyMzgsIDExOCwgOSwgMTQsIDIzOCwgCi0gICAgMTE3LCA5LCAxNCwgMjM4LCAxMTYsIDksIDE0LCAyMzgsIDExNSwgOSwgMTQsIDIzOCwgMTE0LCA5LCAxNCwgMjM4LCAxMTMsIAotICAgIDksIDE0LCAyMzgsIDExMiwgOSwgMTQsIDIzOCwgMTExLCA5LCAxNCwgMjM4LCAxMTAsIDksIDE0LCAyMzgsIDEwOSwgOSwgCi0gICAgMTQsIDIzOCwgMTA4LCA5LCAxNCwgMjM4LCAxMDcsIDksIDE0LCAyMzgsIDEwNiwgOSwgMTQsIDIzOCwgMTA1LCA5LCAxNCwgCi0gICAgMjM4LCAxMDQsIDksIDE0LCAyMzgsIDEwMywgOSwgMTQsIDIzOCwgMTAyLCA5LCAxNCwgMjM4LCAxMDEsIDksIDE0LCAyMzgsIAotICAgIDEwMCwgOSwgMTQsIDIzOCwgOTksIDksIDE0LCAyMzgsIDk4LCA5LCAxNCwgMjM4LCA5NywgOSwgMTQsIDIzOCwgOTYsIDksIAotICAgIDE0LCAyMzgsIDk1LCA5LCAxNCwgMjM4LCA5NCwgOSwgMTQsIDIzOCwgOTMsIDksIDE0LCAyMzgsIDkyLCA5LCAxNCwgMjM4LCAKLSAgICA5MSwgOSwgMTQsIDIzOCwgOTAsIDksIDE0LCAyMzgsIDg5LCA5LCAxNCwgMjM4LCA4OCwgOSwgMTQsIDIzOCwgODcsIDksIAotICAgIDE0LCAyMzgsIDg2LCA5LCAxNCwgMjM4LCA4NSwgOSwgMTQsIDIzOCwgODQsIDksIDE0LCAyMzgsIDgzLCA5LCAxNCwgMjM4LCAKLSAgICA4MiwgOSwgMTQsIDIzOCwgODEsIDksIDE0LCAyMzgsIDgwLCA5LCAxNCwgMjM4LCA3OSwgOSwgMTQsIDIzOCwgNzgsIDksIAotICAgIDE0LCAyMzgsIDc3LCA5LCAxNCwgMjM4LCA3NiwgOSwgMTQsIDIzOCwgNzUsIDksIDE0LCAyMzgsIDc0LCA5LCAxNCwgMjM4LCAKLSAgICA3MywgMjMzLCA5MCwgMjE3LCA4NCwgMTI5LCAyMTksIDE4LCAxMjksIDI0NSwgMzEsIDc4LCAxMjksIDIyMywgMjU0LCA3OCwgCi0gICAgMTI5LCA1NCwgNTAsIDEyOSwgMjQ3LCAxMzIsIDUwLCAxMjksIDIyNSwgMTgyLCA1MCwgMTI5LCAyNTQsIDEyNiwgMTI5LCAKLSAgICAyNTQsIDU3LCAxMjksIDQzLCAyMjYsIDMsIDEyOSwgNDQsIDIyNiwgMywgMTI5LCAyNTMsIDIxNiwgMTI5LCA5NiwgNTAsIAotICAgIDEyOSwgMjQ5LCAyMTksIDEyOSwgMjQwLCAxNjcsIDEyOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMjksIDIxOSwgNDYsIDEyOSwgCi0gICAgMjEsIDIxMCwgODYsIDEyOSwgMjEsIDExMCwgMTI5LCAyMSwgMTA1LCAxMjksIDIxLCAxNTgsIDEyOSwgMjEsIDE2MSwgMTI5LCAKLSAgICAyMSwgMTg5LCAxMjksIDIxLCAxOTQsIDEyOSwgMjEsIDE5OCwgMTI5LCAyMSwgMTk1LCAxMjksIDIxLCAyMDAsIDEyOSwgCi0gICAgMjQ5LCAyMjYsIDEyOSwgMjIwLCAxNTAsIDEyOSwgMjMzLCAxNSwgNTAsIDEyOSwgMjQ1LCA5OCwgNTAsIDEyOSwgMjQyLCAKLSAgICAxMzAsIDUwLCAxMjksIDIyNCwgMTMsIDc4LCAxMjksIDI0OSwgMjE3LCAyNTMsIDIwNiwgMTI5LCA3LCA2LCAxLCA2MSwgCi0gICAgMTI5LCA3LCA2LCAxLCAyNTMsIDE1OCwgMTI5LCA3LCA2LCAxLCAyNTEsIDY2LCAxMjksIDcsIDYsIDEsIDI0OSwgNjAsIAotICAgIDEyOSwgNywgNiwgMSwgNzUsIDEyOSwgNywgNiwgMSwgMjQ1LCA2LCAxMjksIDcsIDYsIDEsIDI0MywgMjAyLCAxMjksIDcsIAotICAgIDYsIDEsIDI0MiwgNjAsIDEyOSwgNywgNiwgMSwgNzMsIDEyOSwgNywgNiwgMSwgMjM1LCAxNDQsIDEyOSwgNywgNiwgMSwgCi0gICAgMjM1LCAyMywgMTI5LCA3LCA2LCAxLCAxNTYsIDEyOSwgNywgNiwgMSwgMTkzLCAxMjksIDcsIDYsIDEsIDIzMCwgMjUsIAotICAgIDEyOSwgNywgNiwgMSwgNzYsIDEyOSwgNywgNiwgMSwgMjI2LCAxMDUsIDEyOSwgNywgNiwgMSwgMjI0LCA5NiwgMTI5LCA3LCAKLSAgICA2LCAxLCAxNTMsIDEyOSwgNywgNiwgMSwgMjIyLCA5MSwgMTI5LCA3LCA2LCAxLCAyMTcsIDE1MiwgMTI5LCA3LCA2LCAxLCAKKyAgICA0NSwgMTA4LCAxNiwgMzEsIDIyNSwgMTI2LCAyMTgsIDQ1LCAxMDgsIDE2LCAzMSwgODUsIDIxOCwgNDUsIDEwOCwgMTYsIAorICAgIDMxLCAyMzEsIDU2LCAyMTgsIDcyLCAxMDgsIDE2LCAzMSwgMjMxLCA1NiwgMjE4LCA3MSwgMTA4LCAxNiwgMzEsIDIzMSwgCisgICAgNTYsIDIxOCwgNzAsIDEwOCwgMTYsIDMxLCAyNTAsIDM5LCAxMDgsIDE2LCAzMSwgMjIyLCAyLCAxMDgsIDE2LCAzMSwgMjI4LCAKKyAgICAxODksIDEwOCwgMTYsIDMxLCAyMTMsIDE0MSwgMTA4LCAxNiwgMzEsIDIxMywgMTQwLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDUsIAorICAgIDIyMiwgMiwgMTA4LCAxNiwgMzEsIDIyMiwgMjA1LCAyMjIsIDEsIDEwOCwgMTYsIDMxLCAyNDIsIDE2NywgMTA4LCAxNiwgCisgICAgMzEsIDIxOSwgMTY3LCAxMDgsIDE2LCAzMSwgMjM1LCAxNzgsIDIyNiwgMTU0LCAxMDgsIDE2LCAzMSwgMjM1LCAxNzgsIAorICAgIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzUsIDY0LCAyMzUsIDE3NywgMTA4LCAxNiwgMzEsIDIyMywgMTAyLCA2NCwgCisgICAgMjM1LCAxNzcsIDEwOCwgMTYsIDMxLCAyNDksIDE2OSwgMjI2LCAxNTQsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NiwgMjI2LCAKKyAgICAxNTQsIDEwOCwgMTYsIDMxLCAyMTgsIDczLCA2NCwgMjQ5LCAxNjgsIDEwOCwgMTYsIDMxLCAyNDksIDEzNSwgNjQsIDI0OSwgCisgICAgMTY4LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzUsIDY0LCAyNDksIDE2NywgMTA4LCAxNiwgMzEsIDI0OSwgMTY5LCAyNTQsIDg0LCAKKyAgICAxMDgsIDE2LCAzMSwgMjIyLCAzLCA2NCwgMjQ5LCAxNjksIDI1NCwgODQsIDEwOCwgMTYsIDMxLCAyMTgsIDczLCA2NCwgCisgICAgMjIyLCAzLCA2NCwgMjQ5LCAxNjgsIDEwOCwgMTYsIDMxLCAyMTMsIDI0MywgMTA4LCAxNiwgMzEsIDIxNiwgODUsIDIyNiwgCisgICAgMTU0LCAxMDgsIDE2LCAzMSwgMjMzLCA1OCwgMjI2LCAxNTQsIDEwOCwgMTYsIDMxLCAyNTQsIDgzLCAyMjYsIDE1NCwgMTA4LCAKKyAgICAxNiwgMzEsIDIxOCwgNzMsIDY0LCAyNTQsIDgyLCAxMDgsIDE2LCAzMSwgMjIyLCAzLCA2NCwgMjU0LCA4MiwgMTA4LCAxNiwgCisgICAgMzEsIDIxOCwgNzMsIDY0LCAyMjIsIDMsIDY0LCAyNTQsIDgyLCAxMDgsIDE2LCAzMSwgMjEzLCAxNTgsIDY0LCAyNTQsIDgyLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDIsIDY0LCAyNTQsIDgyLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDIsIDY0LCAyNTQsIDgxLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMCwgMTA4LCAxNiwgMzEsIDIyMywgOTksIDEwOCwgCisgICAgMTYsIDMxLCAyMjMsIDk4LCAxMDgsIDE2LCAzMSwgMjU0LCAxNTgsIDEwOCwgMTYsIDMxLCAyNTQsIDE1NywgMTA4LCAxNiwgCisgICAgMzEsIDIzMSwgMTY0LCAxMDgsIDE2LCAzMSwgMjIyLCA4LCAxMDgsIDE2LCAzMSwgMjUzLCAyNDcsIDEwOCwgMTYsIDMxLCAKKyAgICAyMjMsIDEyNiwgMTA4LCAxNiwgMzEsIDIyMywgMTI1LCAxMDgsIDE2LCAzMSwgMjUzLCAxODQsIDEwOCwgMTYsIDMxLCAyNTEsIAorICAgIDIzMCwgMjI2LCAxNTQsIDEwOCwgMTYsIDMxLCAyMTcsIDUwLCAxMDgsIDE2LCAzMSwgMjE3LCA0OSwgMTA4LCAxNiwgMzEsIAorICAgIDIyNCwgOSwgMjMyLCAyMjMsIDEwOCwgMTYsIDMxLCAyNTEsIDE4NCwgMTA4LCAxNiwgMzEsIDI1MSwgMTgzLCAxMDgsIDE2LCAKKyAgICAzMSwgMjUxLCAxODIsIDEwOCwgMTYsIDMxLCAyNTQsIDEzOSwgMTA4LCAxNiwgMzEsIDIyNiwgMjE5LCAxMDgsIDE2LCAzMSwgCisgICAgMjE4LCAyNDksIDEwOCwgMTYsIDMxLCAyMTYsIDgzLCAxMDgsIDE2LCAzMSwgMjQyLCA5NywgMTA4LCAxNiwgMzEsIDIxMiwgCisgICAgMjgsIDEwOCwgMTYsIDMxLCAyMjQsIDIyNywgMTA4LCAxNiwgMzEsIDI1MSwgMTUsIDEwOCwgMTYsIDMxLCAyMTUsIDg2LCAKKyAgICAxMDgsIDE2LCAzMSwgMjUwLCAyNDcsIDIzMCwgMTIzLCAxMDgsIDE2LCAzMSwgMjIxLCAyMDMsIDY0LCAyMzUsIDU2LCAxMDgsIAorICAgIDE2LCAzMSwgMjUxLCAyNiwgMTA4LCAxNiwgMzEsIDIxNSwgMjIwLCAxMDgsIDE2LCAzMSwgMjE4LCAxNTUsIDIxNSwgMjIwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjMyLCAxNDksIDEwOCwgMTYsIDMxLCAyMTksIDU3LCAxMDgsIDE2LCAzMSwgMjE0LCAxNDIsIDEwOCwgCisgICAgMTYsIDMxLCAyNDAsIDI0NywgMjQ2LCA2NSwgMTA4LCAxNiwgMzEsIDI1MywgMjI4LCAxMDgsIDE2LCAzMSwgMjI0LCAyMzUsIAorICAgIDI1MywgMjI4LCAxMDgsIDE2LCAzMSwgMjUxLCAxNDMsIDEwOCwgMTYsIDMxLCAyMjQsIDIyNiwgMjUxLCAxNDMsIDEwOCwgCisgICAgMTYsIDMxLCAyNTQsIDEzNiwgMTA4LCAxNiwgMzEsIDIxOCwgMTE4LCAyMTgsIDI3LCAyMTgsIDExNywgMTA4LCAxNiwgMzEsIAorICAgIDIxOCwgMTE4LCAyMTgsIDI3LCAyMTgsIDExNiwgMTA4LCAxNiwgMzEsIDIxOCwgNjksIDEwOCwgMTYsIDMxLCAyMjQsIDIwMSwgCisgICAgMTA4LCAxNiwgMzEsIDI0NywgMTgyLCAxMDgsIDE2LCAzMSwgMjQ3LCAxODQsIDEwOCwgMTYsIDMxLCAyNDcsIDE4MywgMTA4LCAKKyAgICAxNiwgMzEsIDIyNCwgMTMyLCAxMDgsIDE2LCAzMSwgMjI0LCAxMjEsIDEwOCwgMTYsIDMxLCAyNDksIDEyMywgMTA4LCAxNiwgCisgICAgMzEsIDI0OSwgMTIyLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMjEsIDEwOCwgMTYsIDMxLCAyNDksIDEyMCwgMTA4LCAxNiwgMzEsIAorICAgIDI0OSwgMTE5LCAxMDgsIDE2LCAzMSwgMjU0LCAxNzAsIDEwOCwgMTYsIDMxLCAyNTIsIDEyMCwgNjQsIDIzMSwgMTUwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjUyLCAxMjAsIDY0LCAyMTQsIDE3LCAxMDgsIDE2LCAzMSwgMjIzLCA1OCwgMTA4LCAxNiwgMzEsIAorICAgIDI0MCwgMjM5LCAxMDgsIDE2LCAzMSwgMjI4LCAyMTMsIDEwOCwgMTYsIDMxLCAyNDgsIDE0NiwgMTA4LCAxNiwgMzEsIDIzMCwgCisgICAgMTM1LCAxMDgsIDE2LCAzMSwgMTYzLCAyNDYsIDk1LCAxMDgsIDE2LCAzMSwgMTYzLCAyMjYsIDEzMywgOSwgMTQsIDI0MCwgCisgICAgMTAzLCA5LCAxNCwgMjQwLCAxMDIsIDksIDE0LCAyNDAsIDEwMSwgOSwgMTQsIDI0MCwgMTAwLCA5LCAxNCwgMjQwLCA5OSwgCisgICAgOSwgMTQsIDI0MCwgOTgsIDksIDE0LCAyNDAsIDk3LCA5LCAxNCwgMjQwLCA5NiwgOSwgMTQsIDI0MCwgOTUsIDksIDE0LCAKKyAgICAyNDAsIDk0LCA5LCAxNCwgMjQwLCA5MywgOSwgMTQsIDI0MCwgOTIsIDksIDE0LCAyNDAsIDkxLCA5LCAxNCwgMjQwLCA5MCwgCisgICAgOSwgMTQsIDI0MCwgODksIDksIDE0LCAyNDAsIDg4LCA5LCAxNCwgMjQwLCA4NywgOSwgMTQsIDI0MCwgODYsIDksIDE0LCAKKyAgICAyNDAsIDg1LCA5LCAxNCwgMjQwLCA4NCwgOSwgMTQsIDI0MCwgODMsIDksIDE0LCAyNDAsIDgyLCA5LCAxNCwgMjQwLCA4MSwgCisgICAgOSwgMTQsIDI0MCwgODAsIDksIDE0LCAyNDAsIDc5LCA5LCAxNCwgMjQwLCA3OCwgOSwgMTQsIDI0MCwgNzcsIDksIDE0LCAKKyAgICAyNDAsIDc2LCA5LCAxNCwgMjQwLCA3NSwgOSwgMTQsIDI0MCwgNzQsIDksIDE0LCAyNDAsIDczLCA5LCAxNCwgMjQwLCA3MiwgCisgICAgOSwgMTQsIDI0MCwgNzEsIDksIDE0LCAyNDAsIDcwLCA5LCAxNCwgMjQwLCA2OSwgOSwgMTQsIDI0MCwgNjgsIDksIDE0LCAKKyAgICAyNDAsIDY3LCA5LCAxNCwgMjQwLCA2NiwgOSwgMTQsIDI0MCwgNjUsIDksIDE0LCAyNDAsIDY0LCA5LCAxNCwgMjQwLCA2MywgCisgICAgOSwgMTQsIDI0MCwgNjIsIDksIDE0LCAyNDAsIDYxLCA5LCAxNCwgMjQwLCA2MCwgOSwgMTQsIDI0MCwgNTksIDksIDE0LCAKKyAgICAyNDAsIDU4LCA5LCAxNCwgMjQwLCA1NywgOSwgMTQsIDI0MCwgNTYsIDksIDE0LCAyNDAsIDU1LCA5LCAxNCwgMjQwLCA1NCwgCisgICAgOSwgMTQsIDI0MCwgNTMsIDksIDE0LCAyNDAsIDUyLCA5LCAxNCwgMjQwLCA1MSwgOSwgMTQsIDI0MCwgNTAsIDksIDE0LCAKKyAgICAyNDAsIDQ5LCA5LCAxNCwgMjQwLCA0OCwgOSwgMTQsIDI0MCwgNDcsIDksIDE0LCAyNDAsIDQ2LCA5LCAxNCwgMjQwLCA0NSwgCisgICAgOSwgMTQsIDI0MCwgNDQsIDksIDE0LCAyNDAsIDQzLCA5LCAxNCwgMjQwLCA0MiwgOSwgMTQsIDI0MCwgNDEsIDksIDE0LCAKKyAgICAyNDAsIDQwLCA5LCAxNCwgMjQwLCAzOSwgOSwgMTQsIDI0MCwgMzgsIDksIDE0LCAyNDAsIDM3LCA5LCAxNCwgMjQwLCAzNiwgCisgICAgOSwgMTQsIDI0MCwgMzUsIDksIDE0LCAyNDAsIDM0LCA5LCAxNCwgMjQwLCAzMywgOSwgMTQsIDI0MCwgMzIsIDksIDE0LCAKKyAgICAyNDAsIDMxLCA5LCAxNCwgMjQwLCAzMCwgOSwgMTQsIDI0MCwgMjksIDksIDE0LCAyNDAsIDI4LCA5LCAxNCwgMjQwLCAyNywgCisgICAgOSwgMTQsIDI0MCwgMjYsIDksIDE0LCAyNDAsIDI1LCA5LCAxNCwgMjQwLCAyNCwgOSwgMTQsIDI0MCwgMjMsIDksIDE0LCAKKyAgICAyNDAsIDIyLCA5LCAxNCwgMjQwLCAyMSwgOSwgMTQsIDI0MCwgMjAsIDksIDE0LCAyNDAsIDE5LCA5LCAxNCwgMjQwLCAxOCwgCisgICAgOSwgMTQsIDI0MCwgMTcsIDksIDE0LCAyNDAsIDE2LCA5LCAxNCwgMjQwLCAxNSwgOSwgMTQsIDI0MCwgMTQsIDksIDE0LCAKKyAgICAyNDAsIDEzLCA5LCAxNCwgMjQwLCAxMiwgOSwgMTQsIDI0MCwgMTEsIDksIDE0LCAyNDAsIDEwLCA5LCAxNCwgMjQwLCA5LCAKKyAgICA5LCAxNCwgMjQwLCA4LCA5LCAxNCwgMjQwLCA3LCA5LCAxNCwgMjQwLCA2LCA5LCAxNCwgMjQwLCA1LCA5LCAxNCwgMjQwLCAKKyAgICA0LCA5LCAxNCwgMjQwLCAzLCA5LCAxNCwgMjQwLCAyLCA5LCAxNCwgMjQwLCAxLCA5LCAxNCwgMjQwLCAwLCA5LCAxNCwgCisgICAgMjM5LCAyNTUsIDksIDE0LCAyMzksIDI1NCwgOSwgMTQsIDIzOSwgMjUzLCA5LCAxNCwgMjM5LCAyNTIsIDksIDE0LCAyMzksIAorICAgIDI1MSwgOSwgMTQsIDIzOSwgMjUwLCA5LCAxNCwgMjM5LCAyNDksIDksIDE0LCAyMzksIDI0OCwgOSwgMTQsIDIzOSwgMjQ3LCAKKyAgICA5LCAxNCwgMjM5LCAyNDYsIDksIDE0LCAyMzksIDI0NSwgOSwgMTQsIDIzOSwgMjQ0LCA5LCAxNCwgMjM5LCAyNDMsIDksIAorICAgIDE0LCAyMzksIDI0MiwgOSwgMTQsIDIzOSwgMjQxLCA5LCAxNCwgMjM5LCAyNDAsIDksIDE0LCAyMzksIDIzOSwgOSwgMTQsIAorICAgIDIzOSwgMjM4LCA5LCAxNCwgMjM5LCAyMzcsIDksIDE0LCAyMzksIDIzNiwgOSwgMTQsIDIzOSwgMjM1LCA5LCAxNCwgMjM5LCAKKyAgICAyMzQsIDksIDE0LCAyMzksIDIzMywgOSwgMTQsIDIzOSwgMjMyLCA5LCAxNCwgMjM5LCAyMzEsIDksIDE0LCAyMzksIDIzMCwgCisgICAgOSwgMTQsIDIzOSwgMjI5LCA5LCAxNCwgMjM5LCAyMjgsIDksIDE0LCAyMzksIDIyNywgOSwgMTQsIDIzOSwgMjI2LCA5LCAKKyAgICAxNCwgMjM5LCAyMjUsIDksIDE0LCAyMzksIDIyNCwgOSwgMTQsIDIzOSwgMjIzLCA5LCAxNCwgMjM5LCAyMjIsIDksIDE0LCAKKyAgICAyMzksIDIyMSwgOSwgMTQsIDIzOSwgMjIwLCA5LCAxNCwgMjM5LCAyMTksIDksIDE0LCAyMzksIDIxOCwgOSwgMTQsIDIzOSwgCisgICAgMjE3LCA5LCAxNCwgMjM5LCAyMTYsIDksIDE0LCAyMzksIDIxNSwgOSwgMTQsIDIzOSwgMjE0LCA5LCAxNCwgMjM5LCAyMTMsIAorICAgIDksIDE0LCAyMzksIDIxMiwgOSwgMTQsIDIzOSwgMjExLCA5LCAxNCwgMjM5LCAyMTAsIDksIDE0LCAyMzksIDIwOSwgOSwgCisgICAgMTQsIDIzOSwgMjA4LCA5LCAxNCwgMjM5LCAyMDcsIDksIDE0LCAyMzksIDIwNiwgOSwgMTQsIDIzOSwgMjA1LCA5LCAxNCwgCisgICAgMjM5LCAyMDQsIDksIDE0LCAyMzksIDIwMywgOSwgMTQsIDIzOSwgMjAyLCA5LCAxNCwgMjM5LCAyMDEsIDksIDE0LCAyMzksIAorICAgIDIwMCwgOSwgMTQsIDIzOSwgMTk5LCA5LCAxNCwgMjM5LCAxOTgsIDksIDE0LCAyMzksIDE5NywgOSwgMTQsIDIzOSwgMTk2LCAKKyAgICA5LCAxNCwgMjM5LCAxOTUsIDksIDE0LCAyMzksIDE5NCwgOSwgMTQsIDIzOSwgMTkzLCA5LCAxNCwgMjM5LCAxOTIsIDksIAorICAgIDE0LCAyMzksIDE5MSwgOSwgMTQsIDIzOSwgMTkwLCA5LCAxNCwgMjM5LCAxODksIDksIDE0LCAyMzksIDE4OCwgOSwgMTQsIAorICAgIDIzOSwgMTg3LCA5LCAxNCwgMjM5LCAxODYsIDksIDE0LCAyMzksIDE4NSwgOSwgMTQsIDIzOSwgMTg0LCA5LCAxNCwgMjM5LCAKKyAgICAxODMsIDksIDE0LCAyMzksIDE4MiwgOSwgMTQsIDIzOSwgMTgxLCA5LCAxNCwgMjM5LCAxODAsIDksIDE0LCAyMzksIDE3OSwgCisgICAgOSwgMTQsIDIzOSwgMTc4LCA5LCAxNCwgMjM5LCAxNzcsIDksIDE0LCAyMzksIDE3NiwgOSwgMTQsIDIzOSwgMTc1LCA5LCAKKyAgICAxNCwgMjM5LCAxNzQsIDksIDE0LCAyMzksIDE3MywgOSwgMTQsIDIzOSwgMTcyLCA5LCAxNCwgMjM5LCAxNzEsIDksIDE0LCAKKyAgICAyMzksIDE3MCwgOSwgMTQsIDIzOSwgMTY5LCA5LCAxNCwgMjM5LCAxNjgsIDksIDE0LCAyMzksIDE2NywgOSwgMTQsIDIzOSwgCisgICAgMTY2LCA5LCAxNCwgMjM5LCAxNjUsIDksIDE0LCAyMzksIDE2NCwgOSwgMTQsIDIzOSwgMTYzLCA5LCAxNCwgMjM5LCAxNjIsIAorICAgIDksIDE0LCAyMzksIDE2MSwgOSwgMTQsIDIzOSwgMTYwLCA5LCAxNCwgMjM5LCAxNTksIDksIDE0LCAyMzksIDE1OCwgOSwgCisgICAgMTQsIDIzOSwgMTU3LCA5LCAxNCwgMjM5LCAxNTYsIDksIDE0LCAyMzksIDE1NSwgOSwgMTQsIDIzOSwgMTU0LCA5LCAxNCwgCisgICAgMjM5LCAxNTMsIDksIDE0LCAyMzksIDE1MiwgOSwgMTQsIDIzOSwgMTUxLCA5LCAxNCwgMjM5LCAxNTAsIDksIDE0LCAyMzksIAorICAgIDE0OSwgOSwgMTQsIDIzOSwgMTQ4LCA5LCAxNCwgMjM5LCAxNDcsIDksIDE0LCAyMzksIDE0NiwgOSwgMTQsIDIzOSwgMTQ1LCAKKyAgICA5LCAxNCwgMjM5LCAxNDQsIDksIDE0LCAyMzksIDE0MywgOSwgMTQsIDIzOSwgMTQyLCA5LCAxNCwgMjM5LCAxNDEsIDksIAorICAgIDE0LCAyMzksIDE0MCwgOSwgMTQsIDIzOSwgMTM5LCA5LCAxNCwgMjM5LCAxMzgsIDksIDE0LCAyMzksIDEzNywgOSwgMTQsIAorICAgIDIzOSwgMTM2LCA5LCAxNCwgMjM5LCAxMzUsIDksIDE0LCAyMzksIDEzNCwgOSwgMTQsIDIzOSwgMTMzLCA5LCAxNCwgMjM5LCAKKyAgICAxMzIsIDksIDE0LCAyMzksIDEzMSwgOSwgMTQsIDIzOSwgMTMwLCA5LCAxNCwgMjM5LCAxMjksIDksIDE0LCAyMzksIDEyOCwgCisgICAgOSwgMTQsIDIzOSwgMTI3LCA5LCAxNCwgMjM5LCAxMjYsIDksIDE0LCAyMzksIDEyNSwgOSwgMTQsIDIzOSwgMTI0LCA5LCAKKyAgICAxNCwgMjM5LCAxMjMsIDksIDE0LCAyMzksIDEyMiwgOSwgMTQsIDIzOSwgMTIxLCA5LCAxNCwgMjM5LCAxMjAsIDksIDE0LCAKKyAgICAyMzksIDExOSwgOSwgMTQsIDIzOSwgMTE4LCA5LCAxNCwgMjM5LCAxMTcsIDksIDE0LCAyMzksIDExNiwgOSwgMTQsIDIzOSwgCisgICAgMTE1LCA5LCAxNCwgMjM5LCAxMTQsIDksIDE0LCAyMzksIDExMywgOSwgMTQsIDIzOSwgMTEyLCA5LCAxNCwgMjM5LCAxMTEsIAorICAgIDksIDE0LCAyMzksIDExMCwgOSwgMTQsIDIzOSwgMTA5LCA5LCAxNCwgMjM5LCAxMDgsIDksIDE0LCAyMzksIDEwNywgOSwgCisgICAgMTQsIDIzOSwgMTA2LCA5LCAxNCwgMjM5LCAxMDUsIDksIDE0LCAyMzksIDEwNCwgOSwgMTQsIDIzOSwgMTAzLCA5LCAxNCwgCisgICAgMjM5LCAxMDIsIDksIDE0LCAyMzksIDEwMSwgOSwgMTQsIDIzOSwgMTAwLCA5LCAxNCwgMjM5LCA5OSwgOSwgMTQsIDIzOSwgCisgICAgOTgsIDksIDE0LCAyMzksIDk3LCA5LCAxNCwgMjM5LCA5NiwgOSwgMTQsIDIzOSwgOTUsIDksIDE0LCAyMzksIDk0LCA5LCAKKyAgICAxNCwgMjM5LCA5MywgOSwgMTQsIDIzOSwgOTIsIDksIDE0LCAyMzksIDkxLCA5LCAxNCwgMjM5LCA5MCwgOSwgMTQsIDIzOSwgCisgICAgODksIDksIDE0LCAyMzksIDg4LCA5LCAxNCwgMjM5LCA4NywgOSwgMTQsIDIzOSwgODYsIDksIDE0LCAyMzksIDg1LCA5LCAKKyAgICAxNCwgMjM5LCA4NCwgOSwgMTQsIDIzOSwgODMsIDksIDE0LCAyMzksIDgyLCA5LCAxNCwgMjM5LCA4MSwgOSwgMTQsIDIzOSwgCisgICAgODAsIDksIDE0LCAyMzksIDc5LCA5LCAxNCwgMjM5LCA3OCwgOSwgMTQsIDIzOSwgNzcsIDksIDE0LCAyMzksIDc2LCA5LCAKKyAgICAxNCwgMjM5LCA3NSwgOSwgMTQsIDIzOSwgNzQsIDksIDE0LCAyMzksIDczLCA5LCAxNCwgMjM5LCA3MiwgOSwgMTQsIDIzOSwgCisgICAgNzEsIDksIDE0LCAyMzksIDcwLCA5LCAxNCwgMjM5LCA2OSwgOSwgMTQsIDIzOSwgNjgsIDksIDE0LCAyMzksIDY3LCA5LCAKKyAgICAxNCwgMjM5LCA2NiwgOSwgMTQsIDIzOSwgNjUsIDksIDE0LCAyMzksIDY0LCA5LCAxNCwgMjM5LCA2MywgOSwgMTQsIDIzOSwgCisgICAgNjIsIDksIDE0LCAyMzksIDYxLCA5LCAxNCwgMjM5LCA2MCwgOSwgMTQsIDIzOSwgNTksIDksIDE0LCAyMzksIDU4LCA5LCAKKyAgICAxNCwgMjM5LCA1NywgOSwgMTQsIDIzOSwgNTYsIDksIDE0LCAyMzksIDU1LCA5LCAxNCwgMjM5LCA1NCwgOSwgMTQsIDIzOSwgCisgICAgNTMsIDksIDE0LCAyMzksIDUyLCA5LCAxNCwgMjM5LCA1MSwgOSwgMTQsIDIzOSwgNTAsIDksIDE0LCAyMzksIDQ5LCA5LCAKKyAgICAxNCwgMjM5LCA0OCwgOSwgMTQsIDIzOSwgNDcsIDksIDE0LCAyMzksIDQ2LCA5LCAxNCwgMjM5LCA0NSwgOSwgMTQsIDIzOSwgCisgICAgNDQsIDksIDE0LCAyMzksIDQzLCA5LCAxNCwgMjM5LCA0MiwgOSwgMTQsIDIzOSwgNDEsIDksIDE0LCAyMzksIDQwLCA5LCAKKyAgICAxNCwgMjM5LCAzOSwgOSwgMTQsIDIzOSwgMzgsIDksIDE0LCAyMzksIDM3LCA5LCAxNCwgMjM5LCAzNiwgOSwgMTQsIDIzOSwgCisgICAgMzUsIDksIDE0LCAyMzksIDM0LCA5LCAxNCwgMjM5LCAzMywgOSwgMTQsIDIzOSwgMzIsIDksIDE0LCAyMzksIDMxLCA5LCAKKyAgICAxNCwgMjM5LCAzMCwgOSwgMTQsIDIzOSwgMjksIDksIDE0LCAyMzksIDI4LCA5LCAxNCwgMjM5LCAyNywgOSwgMTQsIDIzOSwgCisgICAgMjYsIDksIDE0LCAyMzksIDI1LCA5LCAxNCwgMjM5LCAyNCwgOSwgMTQsIDIzOSwgMjMsIDksIDE0LCAyMzksIDIyLCA5LCAKKyAgICAxNCwgMjM5LCAyMSwgOSwgMTQsIDIzOSwgMjAsIDksIDE0LCAyMzksIDE5LCA5LCAxNCwgMjM5LCAxOCwgOSwgMTQsIDIzOSwgCisgICAgMTcsIDksIDE0LCAyMzksIDE2LCA5LCAxNCwgMjM5LCAxNSwgOSwgMTQsIDIzOSwgMTQsIDksIDE0LCAyMzksIDEzLCA5LCAKKyAgICAxNCwgMjM5LCAxMiwgOSwgMTQsIDIzOSwgMTEsIDksIDE0LCAyMzksIDEwLCA5LCAxNCwgMjM5LCA5LCA5LCAxNCwgMjM5LCAKKyAgICA4LCA5LCAxNCwgMjM5LCA3LCA5LCAxNCwgMjM5LCA2LCA5LCAxNCwgMjM5LCA1LCA5LCAxNCwgMjM5LCA0LCA5LCAxNCwgCisgICAgMjM5LCAzLCA5LCAxNCwgMjM5LCAyLCA5LCAxNCwgMjM5LCAxLCA5LCAxNCwgMjM5LCAwLCA5LCAxNCwgMjM4LCAyNTUsIDksIAorICAgIDE0LCAyMzgsIDI1NCwgOSwgMTQsIDIzOCwgMjUzLCA5LCAxNCwgMjM4LCAyNTIsIDksIDE0LCAyMzgsIDI1MSwgOSwgMTQsIAorICAgIDIzOCwgMjUwLCA5LCAxNCwgMjM4LCAyNDksIDksIDE0LCAyMzgsIDI0OCwgOSwgMTQsIDIzOCwgMjQ3LCA5LCAxNCwgMjM4LCAKKyAgICAyNDYsIDksIDE0LCAyMzgsIDI0NSwgOSwgMTQsIDIzOCwgMjQ0LCA5LCAxNCwgMjM4LCAyNDMsIDksIDE0LCAyMzgsIDI0MiwgCisgICAgOSwgMTQsIDIzOCwgMjQxLCA5LCAxNCwgMjM4LCAyNDAsIDksIDE0LCAyMzgsIDIzOSwgOSwgMTQsIDIzOCwgMjM4LCA5LCAKKyAgICAxNCwgMjM4LCAyMzcsIDksIDE0LCAyMzgsIDIzNiwgOSwgMTQsIDIzOCwgMjM1LCA5LCAxNCwgMjM4LCAyMzQsIDksIDE0LCAKKyAgICAyMzgsIDIzMywgOSwgMTQsIDIzOCwgMjMyLCA5LCAxNCwgMjM4LCAyMzEsIDksIDE0LCAyMzgsIDIzMCwgOSwgMTQsIDIzOCwgCisgICAgMjI5LCA5LCAxNCwgMjM4LCAyMjgsIDksIDE0LCAyMzgsIDIyNywgOSwgMTQsIDIzOCwgMjI2LCA5LCAxNCwgMjM4LCAyMjUsIAorICAgIDksIDE0LCAyMzgsIDIyNCwgOSwgMTQsIDIzOCwgMjIzLCA5LCAxNCwgMjM4LCAyMjIsIDksIDE0LCAyMzgsIDIyMSwgOSwgCisgICAgMTQsIDIzOCwgMjIwLCA5LCAxNCwgMjM4LCAyMTksIDksIDE0LCAyMzgsIDIxOCwgOSwgMTQsIDIzOCwgMjE3LCA5LCAxNCwgCisgICAgMjM4LCAyMTYsIDksIDE0LCAyMzgsIDIxNSwgOSwgMTQsIDIzOCwgMjE0LCA5LCAxNCwgMjM4LCAyMTMsIDksIDE0LCAyMzgsIAorICAgIDIxMiwgOSwgMTQsIDIzOCwgMjExLCA5LCAxNCwgMjM4LCAyMTAsIDksIDE0LCAyMzgsIDIwOSwgOSwgMTQsIDIzOCwgMjA4LCAKKyAgICA5LCAxNCwgMjM4LCAyMDcsIDksIDE0LCAyMzgsIDIwNiwgOSwgMTQsIDIzOCwgMjA1LCA5LCAxNCwgMjM4LCAyMDQsIDksIAorICAgIDE0LCAyMzgsIDIwMywgOSwgMTQsIDIzOCwgMjAyLCA5LCAxNCwgMjM4LCAyMDEsIDksIDE0LCAyMzgsIDIwMCwgOSwgMTQsIAorICAgIDIzOCwgMTk5LCA5LCAxNCwgMjM4LCAxOTgsIDksIDE0LCAyMzgsIDE5NywgOSwgMTQsIDIzOCwgMTk2LCA5LCAxNCwgMjM4LCAKKyAgICAxOTUsIDksIDE0LCAyMzgsIDE5NCwgOSwgMTQsIDIzOCwgMTkzLCA5LCAxNCwgMjM4LCAxOTIsIDksIDE0LCAyMzgsIDE5MSwgCisgICAgOSwgMTQsIDIzOCwgMTkwLCA5LCAxNCwgMjM4LCAxODksIDksIDE0LCAyMzgsIDE4OCwgOSwgMTQsIDIzOCwgMTg3LCA5LCAKKyAgICAxNCwgMjM4LCAxODYsIDksIDE0LCAyMzgsIDE4NSwgOSwgMTQsIDIzOCwgMTg0LCA5LCAxNCwgMjM4LCAxODMsIDksIDE0LCAKKyAgICAyMzgsIDE4MiwgOSwgMTQsIDIzOCwgMTgxLCA5LCAxNCwgMjM4LCAxODAsIDksIDE0LCAyMzgsIDE3OSwgOSwgMTQsIDIzOCwgCisgICAgMTc4LCA5LCAxNCwgMjM4LCAxNzcsIDksIDE0LCAyMzgsIDE3NiwgOSwgMTQsIDIzOCwgMTc1LCA5LCAxNCwgMjM4LCAxNzQsIAorICAgIDksIDE0LCAyMzgsIDE3MywgOSwgMTQsIDIzOCwgMTcyLCA5LCAxNCwgMjM4LCAxNzEsIDksIDE0LCAyMzgsIDE3MCwgOSwgCisgICAgMTQsIDIzOCwgMTY5LCA5LCAxNCwgMjM4LCAxNjgsIDksIDE0LCAyMzgsIDE2NywgOSwgMTQsIDIzOCwgMTY2LCA5LCAxNCwgCisgICAgMjM4LCAxNjUsIDksIDE0LCAyMzgsIDE2NCwgOSwgMTQsIDIzOCwgMTYzLCA5LCAxNCwgMjM4LCAxNjIsIDksIDE0LCAyMzgsIAorICAgIDE2MSwgOSwgMTQsIDIzOCwgMTYwLCA5LCAxNCwgMjM4LCAxNTksIDksIDE0LCAyMzgsIDE1OCwgOSwgMTQsIDIzOCwgMTU3LCAKKyAgICA5LCAxNCwgMjM4LCAxNTYsIDksIDE0LCAyMzgsIDE1NSwgOSwgMTQsIDIzOCwgMTU0LCA5LCAxNCwgMjM4LCAxNTMsIDksIAorICAgIDE0LCAyMzgsIDE1MiwgOSwgMTQsIDIzOCwgMTUxLCA5LCAxNCwgMjM4LCAxNTAsIDksIDE0LCAyMzgsIDE0OSwgOSwgMTQsIAorICAgIDIzOCwgMTQ4LCA5LCAxNCwgMjM4LCAxNDcsIDksIDE0LCAyMzgsIDE0NiwgOSwgMTQsIDIzOCwgMTQ1LCA5LCAxNCwgMjM4LCAKKyAgICAxNDQsIDksIDE0LCAyMzgsIDE0MywgOSwgMTQsIDIzOCwgMTQyLCA5LCAxNCwgMjM4LCAxNDEsIDksIDE0LCAyMzgsIDE0MCwgCisgICAgOSwgMTQsIDIzOCwgMTM5LCA5LCAxNCwgMjM4LCAxMzgsIDksIDE0LCAyMzgsIDEzNywgOSwgMTQsIDIzOCwgMTM2LCA5LCAKKyAgICAxNCwgMjM4LCAxMzUsIDksIDE0LCAyMzgsIDEzNCwgOSwgMTQsIDIzOCwgMTMzLCA5LCAxNCwgMjM4LCAxMzIsIDksIDE0LCAKKyAgICAyMzgsIDEzMSwgOSwgMTQsIDIzOCwgMTMwLCA5LCAxNCwgMjM4LCAxMjksIDksIDE0LCAyMzgsIDEyOCwgOSwgMTQsIDIzOCwgCisgICAgMTI3LCA5LCAxNCwgMjM4LCAxMjYsIDksIDE0LCAyMzgsIDEyNSwgOSwgMTQsIDIzOCwgMTI0LCA5LCAxNCwgMjM4LCAxMjMsIAorICAgIDksIDE0LCAyMzgsIDEyMiwgOSwgMTQsIDIzOCwgMTIxLCA5LCAxNCwgMjM4LCAxMjAsIDksIDE0LCAyMzgsIDExOSwgOSwgCisgICAgMTQsIDIzOCwgMTE4LCA5LCAxNCwgMjM4LCAxMTcsIDksIDE0LCAyMzgsIDExNiwgOSwgMTQsIDIzOCwgMTE1LCA5LCAxNCwgCisgICAgMjM4LCAxMTQsIDksIDE0LCAyMzgsIDExMywgOSwgMTQsIDIzOCwgMTEyLCA5LCAxNCwgMjM4LCAxMTEsIDksIDE0LCAyMzgsIAorICAgIDExMCwgOSwgMTQsIDIzOCwgMTA5LCA5LCAxNCwgMjM4LCAxMDgsIDksIDE0LCAyMzgsIDEwNywgOSwgMTQsIDIzOCwgMTA2LCAKKyAgICA5LCAxNCwgMjM4LCAxMDUsIDksIDE0LCAyMzgsIDEwNCwgOSwgMTQsIDIzOCwgMTAzLCA5LCAxNCwgMjM4LCAxMDIsIDksIAorICAgIDE0LCAyMzgsIDEwMSwgOSwgMTQsIDIzOCwgMTAwLCA5LCAxNCwgMjM4LCA5OSwgOSwgMTQsIDIzOCwgOTgsIDksIDE0LCAKKyAgICAyMzgsIDk3LCA5LCAxNCwgMjM4LCA5NiwgOSwgMTQsIDIzOCwgOTUsIDksIDE0LCAyMzgsIDk0LCA5LCAxNCwgMjM4LCA5MywgCisgICAgOSwgMTQsIDIzOCwgOTIsIDksIDE0LCAyMzgsIDkxLCA5LCAxNCwgMjM4LCA5MCwgOSwgMTQsIDIzOCwgODksIDksIDE0LCAKKyAgICAyMzgsIDg4LCA5LCAxNCwgMjM4LCA4NywgOSwgMTQsIDIzOCwgODYsIDksIDE0LCAyMzgsIDg1LCA5LCAxNCwgMjM4LCA4NCwgCisgICAgOSwgMTQsIDIzOCwgODMsIDksIDE0LCAyMzgsIDgyLCA5LCAxNCwgMjM4LCA4MSwgOSwgMTQsIDIzOCwgODAsIDksIDE0LCAKKyAgICAyMzgsIDc5LCA5LCAxNCwgMjM4LCA3OCwgOSwgMTQsIDIzOCwgNzcsIDksIDE0LCAyMzgsIDc2LCA5LCAxNCwgMjM4LCA3NSwgCisgICAgOSwgMTQsIDIzOCwgNzQsIDIzMywgOTEsIDIxNywgODUsIDEyOSwgMjE5LCAxOSwgMTI5LCAyNDUsIDMyLCA3OCwgMTI5LCAKKyAgICAyMjMsIDI1NSwgNzgsIDEyOSwgNTQsIDUwLCAxMjksIDI0NywgMTMzLCA1MCwgMTI5LCAyMjUsIDE4MywgNTAsIDEyOSwgCisgICAgMjU0LCAxMjcsIDEyOSwgMjU0LCA1OCwgMTI5LCA0MywgMjI2LCA0LCAxMjksIDQ0LCAyMjYsIDQsIDEyOSwgMjUzLCAyMTcsIAorICAgIDEyOSwgOTYsIDUwLCAxMjksIDI0OSwgMjIwLCAxMjksIDI0MCwgMTY4LCAxMjksIDI0MywgMjMwLCAyMTgsIDEzMCwgMTI5LCAKKyAgICAyMTksIDQ3LCAxMjksIDIxLCAyMTAsIDg2LCAxMjksIDIxLCAxMTAsIDEyOSwgMjEsIDEwNSwgMTI5LCAyMSwgMTU4LCAxMjksIAorICAgIDIxLCAxNjEsIDEyOSwgMjEsIDE4OSwgMTI5LCAyMSwgMTk0LCAxMjksIDIxLCAxOTgsIDEyOSwgMjEsIDE5NSwgMTI5LCAyMSwgCisgICAgMjAwLCAxMjksIDI0OSwgMjI3LCAxMjksIDIyMCwgMTUxLCAxMjksIDIzMywgMTYsIDUwLCAxMjksIDI0NSwgOTksIDUwLCAKKyAgICAxMjksIDI0MiwgMTMxLCA1MCwgMTI5LCAyMjQsIDE0LCA3OCwgMTI5LCAyNDksIDIxOCwgMjUzLCAyMDcsIDEyOSwgNywgNiwgCisgICAgMSwgNjEsIDEyOSwgNywgNiwgMSwgMjUzLCAxNTksIDEyOSwgNywgNiwgMSwgMjUxLCA2NywgMTI5LCA3LCA2LCAxLCAyNDksIAorICAgIDYxLCAxMjksIDcsIDYsIDEsIDc1LCAxMjksIDcsIDYsIDEsIDI0NSwgNywgMTI5LCA3LCA2LCAxLCAyNDMsIDIwMywgMTI5LCAKKyAgICA3LCA2LCAxLCAyNDIsIDYxLCAxMjksIDcsIDYsIDEsIDczLCAxMjksIDcsIDYsIDEsIDIzNSwgMTQ1LCAxMjksIDcsIDYsIDEsIAorICAgIDIzNSwgMjQsIDEyOSwgNywgNiwgMSwgMTU2LCAxMjksIDcsIDYsIDEsIDE5MywgMTI5LCA3LCA2LCAxLCAyMzAsIDI2LCAKKyAgICAxMjksIDcsIDYsIDEsIDc2LCAxMjksIDcsIDYsIDEsIDIyNiwgMTA2LCAxMjksIDcsIDYsIDEsIDIyNCwgOTcsIDEyOSwgNywgCisgICAgNiwgMSwgMTUzLCAxMjksIDcsIDYsIDEsIDIyMiwgOTIsIDEyOSwgNywgNiwgMSwgMjE3LCAxNTMsIDEyOSwgNywgNiwgMSwgCiAgICAgNzAsIDEyOSwgNywgNiwgMSwgMjE0LCAxMDUsIDEyOSwgNywgNiwgMSwgMjEyLCA5OCwgMTI5LCA3LCA2LCAxLCAyMTEsIAogICAgIDE3OCwgMTI5LCA3LCA2LCAxLCAyMTEsIDExNywgMTI5LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgNDIsIDEyNywgCi0gICAgMTI5LCAyMjMsIDUwLCAyMTksIDQ2LCAxMjksIDQ0LCA0MiwgMTI3LCAxMjksIDI1MCwgMzEsIDI1NSwgMTQsIDEyOSwgMTIxLCAKLSAgICAyMzIsIDIxMywgMTI5LCAyNDIsIDEzNywgMjU1LCAxNCwgMTI5LCA3LCA0LCAxLCA2MSwgMTI5LCA3LCA0LCAxLCAyNTMsIAotICAgIDE1OCwgMTI5LCA3LCA0LCAxLCAyNTEsIDY2LCAxMjksIDcsIDQsIDEsIDI0OSwgNjAsIDEyOSwgNywgNCwgMSwgNzUsIDEyOSwgCi0gICAgNywgNCwgMSwgMjQ1LCA2LCAxMjksIDcsIDQsIDEsIDI0MywgMjAyLCAxMjksIDcsIDQsIDEsIDI0MiwgNjAsIDEyOSwgNywgCi0gICAgNCwgMSwgNzMsIDEyOSwgNywgNCwgMSwgMjM1LCAxNDQsIDEyOSwgNywgNCwgMSwgMjM1LCAyMywgMTI5LCA3LCA0LCAxLCAKLSAgICAxNTYsIDEyOSwgNywgNCwgMSwgMTkzLCAxMjksIDcsIDQsIDEsIDIzMCwgMjUsIDEyOSwgNywgNCwgMSwgNzYsIDEyOSwgNywgCi0gICAgNCwgMSwgMjI2LCAxMDUsIDEyOSwgNywgNCwgMSwgMjI0LCA5NiwgMTI5LCA3LCA0LCAxLCAxNTMsIDEyOSwgNywgNCwgMSwgCi0gICAgMjIyLCA5MSwgMTI5LCA3LCA0LCAxLCAyMTcsIDE1MiwgMTI5LCA3LCA0LCAxLCA3MCwgMTI5LCA3LCA0LCAxLCAyMTQsIAorICAgIDEyOSwgMjIzLCA1MSwgMjE5LCA0NywgMTI5LCA0NCwgNDIsIDEyNywgMTI5LCAyNTAsIDMyLCAyNTUsIDE1LCAxMjksIDEyMSwgCisgICAgMjMyLCAyMTQsIDEyOSwgMjQyLCAxMzgsIDI1NSwgMTUsIDEyOSwgNywgNCwgMSwgNjEsIDEyOSwgNywgNCwgMSwgMjUzLCAKKyAgICAxNTksIDEyOSwgNywgNCwgMSwgMjUxLCA2NywgMTI5LCA3LCA0LCAxLCAyNDksIDYxLCAxMjksIDcsIDQsIDEsIDc1LCAxMjksIAorICAgIDcsIDQsIDEsIDI0NSwgNywgMTI5LCA3LCA0LCAxLCAyNDMsIDIwMywgMTI5LCA3LCA0LCAxLCAyNDIsIDYxLCAxMjksIDcsIAorICAgIDQsIDEsIDczLCAxMjksIDcsIDQsIDEsIDIzNSwgMTQ1LCAxMjksIDcsIDQsIDEsIDIzNSwgMjQsIDEyOSwgNywgNCwgMSwgCisgICAgMTU2LCAxMjksIDcsIDQsIDEsIDE5MywgMTI5LCA3LCA0LCAxLCAyMzAsIDI2LCAxMjksIDcsIDQsIDEsIDc2LCAxMjksIDcsIAorICAgIDQsIDEsIDIyNiwgMTA2LCAxMjksIDcsIDQsIDEsIDIyNCwgOTcsIDEyOSwgNywgNCwgMSwgMTUzLCAxMjksIDcsIDQsIDEsIAorICAgIDIyMiwgOTIsIDEyOSwgNywgNCwgMSwgMjE3LCAxNTMsIDEyOSwgNywgNCwgMSwgNzAsIDEyOSwgNywgNCwgMSwgMjE0LCAKICAgICAxMDUsIDEyOSwgNywgNCwgMSwgMjEyLCA5OCwgMTI5LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI5LCA3LCA0LCAxLCAyMTEsIAotICAgIDExNywgMTI5LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjksIDY3LCAyMzIsIDIxMywgCi0gICAgMTI5LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjksIDE4MiwgMjUxLCA2LCAyMTcsIDg0LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgCi0gICAgNjcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA0NCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAxMSwgNDUsIAotICAgIDIyMSwgMCwgNDUsIDIyMCwgMjQ1LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgMjM1LCA0NSwgMjIwLCAKLSAgICAyMzQsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIDIyOSwgNDUsIDIyMCwgCi0gICAgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAyMjQsIDQ1LCAyMjAsIAotICAgIDIyMywgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgMjE4LCA0NSwgMjIwLCAKLSAgICAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIDIxMywgNDUsIDIyMCwgCi0gICAgMjEyLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAyMDcsIDQ1LCAyMjAsIAotICAgIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgMjAyLCA0NSwgMjIwLCAKLSAgICAyMDEsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIDE5NiwgNDUsIDIyMCwgCi0gICAgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAxOTEsIDQ1LCAyMjAsIAotICAgIDE5MCwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgMTg1LCA0NSwgMjIwLCAKLSAgICAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIDE4MCwgNDUsIDIyMCwgCi0gICAgMTc5LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAxNzQsIDQ1LCAyMjAsIAotICAgIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgMTY5LCA0NSwgMjIwLCAKLSAgICAxNjgsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIDE2MywgNDUsIDIyMCwgCi0gICAgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIwLCAxNTgsIDQ1LCAyMjAsIAotICAgIDE1NywgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgMTUxLCA0NSwgMjIxLCAKLSAgICAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIDE0NiwgNDUsIDIyMSwgCi0gICAgMTQ1LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAxNDAsIDQ1LCAyMjEsIAotICAgIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgMTM1LCA0NSwgMjIxLCAKLSAgICAxMzQsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIDEyOSwgNDUsIDIyMSwgCi0gICAgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAxMjQsIDQ1LCAyMjEsIAotICAgIDEyMywgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgMTE4LCA0NSwgMjIxLCAKLSAgICAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIDExMywgNDUsIDIyMSwgCi0gICAgMTEyLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAxMDcsIDQ1LCAyMjEsIAotICAgIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgMTAyLCA0NSwgMjIxLCAKLSAgICAxMDEsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCA0NSwgMjIxLCA5NSwgNDUsIAotICAgIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTEsIDQ1LCAyMjEsIDkwLCA0NSwgMjIxLCA4OCwgCi0gICAgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAyMjEsIDgzLCA0NSwgMjIxLCAKLSAgICA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA3OSwgNDUsIDIyMSwgNzcsIDQ1LCAyMjEsIDc2LCA0NSwgCi0gICAgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgNzEsIDQ1LCAyMjEsIDcwLCAKLSAgICA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNjgsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIDIyMSwgNjQsIDQ1LCAyMjEsIAotICAgIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgNDUsIDIyMSwgNTgsIDQ1LCAKLSAgICAyMjEsIDU3LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCA1MiwgNDUsIDIyMSwgNTEsIAotICAgIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ3LCA0NSwgMjIxLCA0NiwgNDUsIDIyMSwgCi0gICAgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCA0NSwgMjIxLCAzOCwgNDUsIAotICAgIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMzQsIDQ1LCAyMjEsIDMyLCA0NSwgMjIxLCAzMSwgCi0gICAgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAyMjEsIDI2LCA0NSwgMjIxLCAKLSAgICAyNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDIzLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIDQ1LCAyMjEsIDE5LCA0NSwgCi0gICAgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgMTQsIDQ1LCAyMjEsIDEzLCAKLSAgICA0NSwgMjIxLCAxMiwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAyMjEsIDcsIDQ1LCAyMjEsIDYsIAotICAgIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDIsIDQ1LCAyMjEsIDEsIDQ1LCAyMjAsIDI1NSwgCi0gICAgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAKLSAgICAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDcsIDQ1LCAyMjAsIDI0NiwgNDUsIDIyMCwgMjQ0LCA0NSwgCi0gICAgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAyNDAsIDQ1LCAyMjAsIDIzOSwgNDUsIAotICAgIDIyMCwgMjM4LCAyMjcsIDIwMiwgMjI3LCAyMDQsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDIxOSwgNDgsIDIxOCwgMTUyLCAKLSAgICA2NCwgMjE2LCAyMTIsIDIxOCwgODUsIDI0NSwgMTQzLCA2NCwgMjE2LCAyMTIsIDI0NSwgNTYsIDI0NSwgMTQzLCA2NCwgCi0gICAgMjE1LCAyNDMsIDI0NSwgMTA5LCAyNDUsIDEzMiwgMjQ1LCAxMzMsIDI1NSwgNywgMjU1LCA4LCAyNTQsIDE2NywgMjUyLCAKLSAgICA0NywgMjUyLCAxNzksIDI1MSwgMTMxLCAxMzUsIDIxNywgODksIDIwMywgMjE3LCA4OSwgMjQwLCAyMjcsIDIxNywgOTMsIAotICAgIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTY2LCAyMzIsIDIxMywgMjQ1LCAxNDMsIDY0LCAyMzIsIDIxMywgMjMzLCAwLCAyMjgsIAotICAgIDEzNSwgMjQ1LCAxMTIsIDIzMiwgMjE0LCAyMTcsIDg5LCA2NywgMjE3LCA4OSwgMjEyLCAxMTgsIDI0NCwgMjAsIDI0NCwgCi0gICAgMTQ1LCAyNDQsIDEyNSwgMjUwLCAyMzAsIDIyMywgNTMsIDI0OSwgMTQzLCAyMjAsIDI4LCAyMjYsIDEzMCwgMjMyLCAxNTAsIAotICAgIDExMCwgMjE5LCA1OCwgMjIwLCAyOCwgMjM1LCAyNTUsIDIzMiwgMTUwLCAyMTAsIDg2LCAyMTksIDE5MSwgMjQ4LCAxNTEsIAotICAgIDIzMiwgMjA0LCAyNDUsIDc3LCAyNDcsIDE1NSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDExMCwgMjQ4LCAxNDEsIDI0OCwgMzEsIAotICAgIDI0OSwgMTc4LCAxMDUsIDI0OCwgMTQwLCAyNDgsIDMxLCAyNDksIDE3OCwgMTU4LCAyNDgsIDEzOSwgMjQ4LCAzMSwgMjQ5LCAKLSAgICAxNzgsIDE2MSwgMjQ4LCAxMzgsIDE1MiwgMjU1LCA3LCAyMjksIDIwOSwgMjE3LCAxNzcsIDIzNiwgNjIsIDIxNywgMTgwLCAKLSAgICAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMjQ1LCA2MiwgMjUxLCA1LCAyNTEsIDcsIDI0NSwgMTQzLCA2NCwgCi0gICAgMjMxLCA4MSwgMjQ1LCAxMTAsIDIxOCwgNjEsIDIxOCwgNzgsIDI0NSwgNzcsIDI0NSwgNzgsIDIzNSwgMjMyLCAyMjAsIAotICAgIDEzOCwgMTYxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDI0MywgMjM3LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDE1OCwgMjQyLCAKLSAgICAxMjEsIDIyMCwgMTM3LCAyNDIsIDExOCwgMjM1LCAyMzIsIDIyMCwgMTM4LCAxMDUsIDIyMywgMTIxLCAyMjAsIDEzNywgCi0gICAgMjIyLCAxNDUsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTEwLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDIxNCwgMTMzLCAyMTksIDIxLCAKLSAgICAyNDgsIDYzLCAyNDgsIDY1LCAyMjYsIDc4LCAyNTAsIDE0MiwgMjI2LCA4MCwgMTI1LCAyMjYsIDI0MCwgMjI0LCAxOTMsIAotICAgIDI0MSwgNDcsIDI1MSwgMTUwLCAyMjUsIDE3MywgMjQxLCAyMDMsIDI1MSwgMTYxLCAyMjgsIDc1LCAyNTEsIDE1MCwgMjQxLCAKLSAgICAyMDMsIDIyOSwgMTc1LCAyMzUsIDI0MiwgMjM1LCAyNDQsIDIyOSwgODIsIDIzMiwgMjEzLCAyMjksIDk5LCAyMTgsIDE1MiwgCi0gICAgNjQsIDIyMSwgMTU4LCAyNTQsIDE4LCAyMTgsIDIyMywgMjQ1LCAxNDMsIDY0LCAyMjEsIDE1OCwgMjU0LCAxOCwgMjQ1LCAKLSAgICA4MCwgMTM1LCAyMTcsIDkwLCAyMjAsIDEyNywgMjAzLCAyMTcsIDkwLCAyMjAsIDEyNywgMjQwLCAyMjQsIDEzNSwgMjE3LCAKLSAgICA5MCwgMiwgMjM1LCAzNSwgMjAzLCAyMTcsIDkwLCAyLCAyMzUsIDM1LCAyNDAsIDIyNSwgMjMyLCAyMTQsIDIxNywgOTAsIAotICAgIDIyMCwgMTI3LCA2NywgMjE3LCA5MCwgMjIwLCAxMjcsIDIxMiwgMTE3LCAyMjUsIDI1MywgMjMyLCAyMTQsIDI0NCwgMTQsIAotICAgIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjQ2LCAxMDYsIDIyNSwgMzIsIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjUyLCAxNzgsIDIyNSwgCi0gICAgMjUzLCAyMzIsIDIxNCwgMjE0LCAxNjMsIDIyNSwgMjgsIDIyMywgNTAsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMjIzLCA1MCwgCi0gICAgMjM1LCAyNDIsIDIyMywgMzUsIDIxOSwgMTU1LCAyMjAsIDI4LCAxMDUsIDIxOSwgMTUyLCAyMTgsIDIyNSwgMjE5LCAxNTUsIAotICAgIDIyMCwgMjgsIDE1OCwgMjE5LCAxNTEsIDIxOCwgMjI0LCAyNDgsIDMxLCAyNDksIDE3OCwgMjE4LCAxMDUsIDI0OCwgMTM3LCAKLSAgICAyMjQsIDE4MywgMjE0LCAxMzIsIDExMCwgMjI0LCAxODMsIDIxNCwgMTMwLCAyMjQsIDE0OSwgMjI0LCAxODMsIDIxNCwgCi0gICAgMTMyLCAxMDUsIDIyNCwgMTgzLCAyMTQsIDEyOSwgMjI0LCAxNDgsIDIyMCwgMTI4LCAyMTUsIDI0MiwgMjE4LCAxNTEsIAotICAgIDIxOCwgODksIDI1MSwgNiwgMjUwLCAxNDIsIDI1MCwgMjA5LCAyMzEsIDQzLCAyMTIsIDU5LCAyMzAsIDQzLCAyMTgsIDE1MiwgCi0gICAgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyMTgsIDE1MiwgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyMTksIDIwLCAyNDUsIAotICAgIDE0MywgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyNDUsIDE0MywgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyNDUsIDEwNywgCi0gICAgMjE4LCAxNTIsIDY0LCAyMTgsIDEwNSwgMjE5LCAzNSwgMjE5LCAxNTUsIDI0MiwgMTQxLCAxMzUsIDIzNSwgMTk1LCAyMjAsIAotICAgIDEwNywgMjE5LCAxNTUsIDEzNSwgMjM1LCAxOTUsIDIyMSwgMTk0LCAyNDksIDE3OCwgMjIwLCAxMzUsIDIzNSwgMTk1LCAKLSAgICAyNDksIDExMywgMjE4LCAxMDYsIDIxNiwgMjM2LCAyMTgsIDE2OCwgMjI2LCAxNjksIDIxNywgMTY3LCAyNDksIDIxOCwgCi0gICAgMjI2LCAxNDIsIDIyNCwgMTg0LCAyMzEsIDQyLCAyMjUsIDE5LCAyNTQsIDUzLCAyMjQsIDE3OCwgMjQ5LCAyMTgsIDI1NCwgCi0gICAgNjksIDIyOSwgMTYzLCAyMTksIDIwMCwgNywgNiwgMSwgMjQyLCAyNDksIDcsIDQsIDEsIDI0MiwgMjQ5LCAyNTAsIDE1OSwgCi0gICAgMTY1LCAxLCAyMzIsIDE3NSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDI0NCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAKLSAgICAyNDQsIDE1NywgMjA5LCAyMDksIDEsIDIyMiwgMjExLCAyMDksIDIwOSwgMSwgMjMyLCAxNTYsIDYzLCAxNjQsIDI1MSwgCi0gICAgMjIzLCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIDI0OCwgMjIzLCA0MSwgMjQzLCAyMTYsIDI0MywgMjE1LCAyNDMsIDIxNCwgCi0gICAgMjMwLCA0NSwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIDI1NCwgMjMyLCAxMDIsIDIyMiwgMjE5LCAyMzIsIDEwMywgMjIyLCAKLSAgICAyMjAsIDIyNSwgMjIzLCAyMzIsIDEwMSwgMjIyLCAyMTgsIDIyOCwgMTA2LCAyMzAsIDE2NSwgMjExLCAyMjksIDIxMiwgMTUsIAotICAgIDI0NSwgMTYyLCAyNDMsIDIyNiwgMjMwLCAyMjksIDIyNiwgMTk3LCAyMTQsIDEzNCwgODcsIDIzMCwgMjI5LCAyNDgsIDE1NywgCi0gICAgODcsIDgsIDMsIDIzNSwgMTU4LCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyMzMsIDIwLCAxMjcsIAotICAgIDIxMywgMTE4LCAyMTMsIDcsIDIxMiwgMTk1LCAyMTIsIDE4NCwgMjEyLCAxNzMsIDIxMiwgMTYyLCAyMTIsIDE1MSwgMjEyLCAKLSAgICAxNDAsIDIxMiwgMTI5LCAyMTMsIDExNywgMjEzLCAxMDYsIDIxMywgOTUsIDIxMywgODQsIDIxMywgNzMsIDIxMywgNjIsIAotICAgIDIxMywgNTEsIDI1MSwgNzEsIDIyNiwgMTU1LCA3OCwgMjUxLCAxOTYsIDIwOSwgMjUzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCi0gICAgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgMjEzLCA0MCwgMjEzLCAyOSwgMjEzLCAxOCwgMjEzLCA2LCAyMTIsIDI1MSwgCi0gICAgMjEyLCAyNDAsIDIxMiwgMjI5LCAyMTIsIDIxOCwgMjEyLCAyMDcsIDIxMiwgMTk5LCAyMTIsIDE5OCwgMjEyLCAxOTcsIAotICAgIDIxMiwgMTk2LCAyMTIsIDE5NCwgMjEyLCAxOTMsIDIxMiwgMTkyLCAyMTIsIDE5MSwgMjEyLCAxOTAsIDIxMiwgMTg5LCAKLSAgICAyMTIsIDE4OCwgMjEyLCAxODcsIDIxMiwgMTg2LCAyMTIsIDE4NSwgMjEyLCAxODMsIDIxMiwgMTgyLCAyMTIsIDE4MSwgCi0gICAgMjEyLCAxODAsIDIxMiwgMTc5LCAyMTIsIDE3OCwgMjEyLCAxNzcsIDIxMiwgMTc2LCAyMTIsIDE3NSwgMjEyLCAxNzQsIAotICAgIDIxMiwgMTcyLCAyMTIsIDE3MSwgMjEyLCAxNzAsIDIxMiwgMTY5LCAyMTIsIDE2OCwgMjEyLCAxNjcsIDIxMiwgMTY2LCAKLSAgICAyMTIsIDE2NSwgMjEyLCAxNjQsIDIxMiwgMTYzLCAyMTIsIDE2MSwgMjEyLCAxNjAsIDIxMiwgMTU5LCAyMTIsIDE1OCwgCi0gICAgMjEyLCAxNTcsIDIxMiwgMTU2LCAyMTIsIDE1NSwgMjEyLCAxNTQsIDIxMiwgMTUzLCAyMTIsIDE1MiwgMjEyLCAxNTAsIAotICAgIDIxMiwgMTQ5LCAyMTIsIDE0OCwgMjEyLCAxNDcsIDIxMiwgMTQ2LCAyMTIsIDE0NSwgMjEyLCAxNDQsIDIxMiwgMTQzLCAKLSAgICAyMTIsIDE0MiwgMjEyLCAxNDEsIDIxMiwgMTM5LCAyMTIsIDEzOCwgMjEyLCAxMzcsIDIxMiwgMTM2LCAyMTIsIDEzNSwgCi0gICAgMjEyLCAxMzQsIDIxMiwgMTMzLCAyMTIsIDEzMiwgMjEyLCAxMzEsIDIxMiwgMTMwLCAyMTIsIDEyOCwgMjEyLCAxMjcsIAotICAgIDIxMiwgMTI2LCAyMTIsIDEyNSwgMjEyLCAxMjQsIDIxMiwgMTIzLCAyMTIsIDEyMiwgMjEyLCAxMjEsIDIxMiwgMTIwLCAKLSAgICAyMTIsIDExOSwgMjEzLCAxMTYsIDIxMywgMTE1LCAyMTMsIDExNCwgMjEzLCAxMTMsIDIxMywgMTEyLCAyMTMsIDExMSwgCi0gICAgMjEzLCAxMTAsIDIxMywgMTA5LCAyMTMsIDEwOCwgMjEzLCAxMDcsIDIxMywgMTA1LCAyMTMsIDEwNCwgMjEzLCAxMDMsIAotICAgIDIxMywgMTAyLCAyMTMsIDEwMSwgMjEzLCAxMDAsIDIxMywgOTksIDIxMywgOTgsIDIxMywgOTcsIDIxMywgOTYsIDIxMywgCi0gICAgOTQsIDIxMywgOTMsIDIxMywgOTIsIDIxMywgOTEsIDIxMywgOTAsIDIxMywgODksIDIxMywgODgsIDIxMywgODcsIDIxMywgCi0gICAgODYsIDIxMywgODUsIDIxMywgODMsIDIxMywgODIsIDIxMywgODEsIDIxMywgODAsIDIxMywgNzksIDIxMywgNzgsIDIxMywgCi0gICAgNzcsIDIxMywgNzYsIDIxMywgNzUsIDIxMywgNzQsIDIxMywgNzIsIDIxMywgNzEsIDIxMywgNzAsIDIxMywgNjksIDIxMywgCi0gICAgNjgsIDIxMywgNjcsIDIxMywgNjYsIDIxMywgNjUsIDIxMywgNjQsIDIxMywgNjMsIDIxMywgNjEsIDIxMywgNjAsIDIxMywgCi0gICAgNTksIDIxMywgNTgsIDIxMywgNTcsIDIxMywgNTYsIDIxMywgNTUsIDIxMywgNTQsIDIxMywgNTMsIDIxMywgNTIsIDIxMywgCi0gICAgNTAsIDIxMywgNDksIDIxMywgNDgsIDIxMywgNDcsIDIxMywgNDYsIDIxMywgNDUsIDIxMywgNDQsIDIxMywgNDMsIDIxMywgCi0gICAgNDIsIDIxMywgNDEsIDIxMywgMzksIDIxMywgMzgsIDIxMywgMzcsIDIxMywgMzYsIDIxMywgMzUsIDIxMywgMzQsIDIxMywgCi0gICAgMzMsIDIxMywgMzIsIDIxMywgMzEsIDIxMywgMzAsIDIxMywgMjgsIDIxMywgMjcsIDIxMywgMjYsIDIxMywgMjUsIDIxMywgCi0gICAgMjQsIDIxMywgMjMsIDIxMywgMjIsIDIxMywgMjEsIDIxMywgMjAsIDIxMywgMTksIDIxMywgMTcsIDIxMywgMTYsIDIxMywgCi0gICAgMTUsIDIxMywgMTQsIDIxMywgMTMsIDIxMywgMTIsIDIxMywgMTEsIDIxMywgMTAsIDIxMywgOSwgMjEzLCA4LCAyMTMsIDUsIAotICAgIDIxMywgNCwgMjEzLCAzLCAyMTMsIDIsIDIxMywgMSwgMjEzLCAwLCAyMTIsIDI1NSwgMjEyLCAyNTQsIDIxMiwgMjUzLCAKLSAgICAyMTIsIDI1MiwgMjEyLCAyNTAsIDIxMiwgMjQ5LCAyMTIsIDI0OCwgMjEyLCAyNDcsIDIxMiwgMjQ2LCAyMTIsIDI0NSwgCi0gICAgMjEyLCAyNDQsIDIxMiwgMjQzLCAyMTIsIDI0MiwgMjEyLCAyNDEsIDIxMiwgMjM5LCAyMTIsIDIzOCwgMjEyLCAyMzcsIAotICAgIDIxMiwgMjM2LCAyMTIsIDIzNSwgMjEyLCAyMzQsIDIxMiwgMjMzLCAyMTIsIDIzMiwgMjEyLCAyMzEsIDIxMiwgMjMwLCAKLSAgICAyMTIsIDIyOCwgMjEyLCAyMjcsIDIxMiwgMjI2LCAyMTIsIDIyNSwgMjEyLCAyMjQsIDIxMiwgMjIzLCAyMTIsIDIyMiwgCi0gICAgMjEyLCAyMjEsIDIxMiwgMjIwLCAyMTIsIDIxOSwgMjEyLCAyMTcsIDIxMiwgMjE2LCAyMTIsIDIxNSwgMjEyLCAyMTQsIAotICAgIDIxMiwgMjEzLCAyMTIsIDIxMiwgMjEyLCAyMTEsIDIxMiwgMjEwLCAyMTIsIDIwOSwgMjEyLCAyMDgsIDIxMiwgMjA2LCAKLSAgICAyMTIsIDIwNSwgMjEyLCAyMDQsIDIxMiwgMjAzLCAyMTIsIDIwMiwgMjEyLCAyMDEsIDIxMiwgMjAwLCA3LCA2LCAxLCAxMTUsIAotICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCi0gICAgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAotICAgIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgCi0gICAgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAKLSAgICAyNTAsIDMxLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKLSAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjUwLCAyMzQsIDcsIAotICAgIDYsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKLSAgICAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMjI5LCAKLSAgICA4MCwgMiwgMjE2LCA4OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAKLSAgICA2NywgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCAKLSAgICA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDY3LCAKLSAgICAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAKLSAgICAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIAotICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIAotICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIAotICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIAotICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAKLSAgICA1OSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIDIsIDU5LCAKLSAgICA3NywgMjIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIAotICAgIDE1NCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIAotICAgIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDU5LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgCi0gICAgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIAotICAgIDEsIDIzNSwgMTQ1LCAyLCAxODIsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIDEsIDIzMywgCi0gICAgMTQ5LCAyLCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxODIsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE4MiwgNywgNCwgCi0gICAgMSwgMjMyLCA1MCwgMiwgMTgyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCAKLSAgICA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgCi0gICAgMjA0LCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTUsIAotICAgIDk0LCAyMTQsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMSwgMTk2LCAKLSAgICAyLCAxNDIsIDcsIDQsIDEsIDI0MSwgNTEsIDIyMSwgMTk2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQxLCA1MSwgMjIxLCAKLSAgICAxOTYsIDIsIDE0MiwgMTQ2LCAxLCAyMzQsIDEwOSwgMzYsIDExNiwgMjM1LCAyMywgMzYsIDExNiwgMjI5LCA3OSwgMzYsIAotICAgIDExNiwgMjUxLCA2NiwgMzYsIDExNiwgMjI3LCAxNjcsIDM2LCAxMTYsIDIxNSwgMTU5LCAzNiwgMTE2LCAyMjgsIDExMSwgCi0gICAgMzYsIDExNiwgMjE3LCAxNTIsIDM2LCAxMTYsIDIzMCwgMjUsIDM2LCAxMTYsIDIyNiwgMTA1LCAzNiwgMTE2LCAxOTMsIDM2LCAKLSAgICAxMTYsIDIxMSwgMTE3LCAzNiwgMTE2LCAxNTMsIDM2LCAxMTYsIDE1NiwgMzYsIDExNiwgMjE0LCAxMDUsIDM2LCAxMTYsIAotICAgIDIzMiwgMTc2LCAzNiwgMTE2LCAyMzIsIDE4NSwgMzYsIDExNiwgMjIyLCAxODAsIDM2LCAxMTYsIDIyOCwgOTMsIDM2LCAKLSAgICAxMTYsIDIzNSwgMTQ0LCAzNiwgMTE2LCAyMjAsIDEwNCwgMzYsIDExNiwgMjE4LCAyMjYsIDM2LCAxMTYsIDIyMiwgOTEsIAotICAgIDM2LCAxMTYsIDI0MiwgNjAsIDM2LCAxMTYsIDIzMywgMjMyLCAzNiwgMywgMjM1LCAxMCwgMzYsIDMsIDIzNCwgOTIsIDM2LCAKLSAgICAzLCAyMzQsIDgzLCAzNiwgMywgMjMzLCAyMTcsIDM2LCAzLCAyMzMsIDE4OCwgMzYsIDMsIDIzNCwgMTgyLCAzNiwgMywgCi0gICAgMjM0LCAxODEsIDM2LCAzLCAyMzQsIDI0NiwgMzYsIDMsIDIzNCwgMjgsIDM2LCAzLCAyMzQsIDEwLCAzNiwgMywgMjM0LCAKLSAgICAxOTUsIDM2LCAzLCAyMjksIDc2LCAzNiwgMywgMjI5LCAyNywgMzYsIDMsIDIyOSwgMjMsIDM2LCAzLCAyMjgsIDI0OCwgMzYsIAotICAgIDMsIDIyOCwgMjQxLCAzNiwgMywgMjI5LCA2NCwgMzYsIDMsIDIyOSwgNjIsIDM2LCAzLCAyMjksIDczLCAzNiwgMywgMjI5LCAKLSAgICA0LCAzNiwgMywgMjI4LCAyNTUsIDM2LCAzLCAyMjksIDY2LCAzNiwgMywgMjUxLCAzMiwgMzYsIDMsIDI1MCwgNTEsIDM2LCAKLSAgICAzLCAyNTAsIDQxLCAzNiwgMywgMjQ5LCAxMTIsIDM2LCAzLCAyNDksIDgzLCAzNiwgMywgMjUwLCAxOTAsIDM2LCAzLCAyNTAsIAotICAgIDE4MiwgMzYsIDMsIDI1MSwgMjIsIDM2LCAzLCAyNDksIDIzOCwgMzYsIDMsIDI0OSwgMTc0LCAzNiwgMywgMjUwLCAyMjIsIAotICAgIDM2LCAzLCAyMjcsIDE2NCwgMzYsIDMsIDIyNywgMTQ4LCAzNiwgMywgMjI3LCAxNDMsIDM2LCAzLCAyMjcsIDEyOCwgMzYsIAotICAgIDMsIDIyNywgMTIxLCAzNiwgMywgMjI3LCAxNTYsIDM2LCAzLCAyMjcsIDE1NSwgMzYsIDMsIDIyNywgMTYxLCAzNiwgMywgCi0gICAgMjI3LCAxMzQsIDM2LCAzLCAyMjcsIDEzMiwgMzYsIDMsIDIyNywgMTU5LCAzNiwgMywgMjE1LCAxNTUsIDM2LCAzLCAyMTUsIAotICAgIDEzNSwgMzYsIDMsIDIxNSwgMTM0LCAzNiwgMywgMjE1LCAxMjMsIDM2LCAzLCAyMTUsIDEyMCwgMzYsIDMsIDIxNSwgMTUxLCAKLSAgICAzNiwgMywgMjE1LCAxNTAsIDM2LCAzLCAyMTUsIDE1NCwgMzYsIDMsIDIxNSwgMTMzLCAzNiwgMywgMjE1LCAxMzIsIDM2LCAKLSAgICAzLCAyMTUsIDE1MywgMzYsIDMsIDIyOCwgMTA5LCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIDIyOCwgOTQsIDM2LCAzLCAyMjgsIAotICAgIDc4LCAzNiwgMywgMjI4LCA3NywgMzYsIDMsIDIyOCwgMTA1LCAzNiwgMywgMjI4LCAxMDQsIDM2LCAzLCAyMjgsIDEwOCwgCi0gICAgMzYsIDMsIDIyOCwgODAsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCAxMDcsIDM2LCAzLCAyMTcsIDEwMSwgMzYsIDMsIAotICAgIDIxNiwgMTE3LCAzNiwgMywgMjE2LCAxMDMsIDM2LCAzLCAyMTUsIDExOCwgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIAotICAgIDIyLCAzNiwgMywgMjE3LCAxMSwgMzYsIDMsIDIxNywgNzksIDM2LCAzLCAxMTEsIDM2LCAzLCAyMTYsIDE3LCAzNiwgMywgCi0gICAgMjE3LCA0MSwgMzYsIDMsIDIyOSwgMjI1LCAzNiwgMywgMjI4LCAyMzMsIDM2LCAzLCAyMjgsIDIwOCwgMzYsIDMsIDIyNywgCi0gICAgMjM3LCAzNiwgMywgMjI3LCAxNzksIDM2LCAzLCAyMjksIDEwNywgMzYsIDMsIDIyOSwgMTAzLCAzNiwgMywgMjI5LCAyMTIsIAotICAgIDM2LCAzLCAyMjgsIDc0LCAzNiwgMywgMjI4LCA2NCwgMzYsIDMsIDIyOSwgMTg3LCAzNiwgMywgMjI2LCA4OSwgMzYsIDMsIAotICAgIDIyNSwgMTA4LCAzNiwgMywgMjI1LCA3MSwgMzYsIDMsIDIyNCwgMTUwLCAzNiwgMywgMjI0LCAxMTksIDM2LCAzLCAyMjUsIAotICAgIDIyMSwgMzYsIDMsIDIyNSwgMjExLCAzNiwgMywgMjI2LCA3MSwgMzYsIDMsIDIyNSwgMTYsIDM2LCAzLCAyMjQsIDI0OSwgCi0gICAgMzYsIDMsIDIyNSwgMjM0LCAzNiwgMywgMjMxLCAyMzcsIDM2LCAzLCAyMzAsIDIzMCwgMzYsIDMsIDIzMCwgMjAxLCAzNiwgCi0gICAgMywgMjMwLCAxMDIsIDM2LCAzLCAyMzAsIDU0LCAzNiwgMywgMjMxLCA5MSwgMzYsIDMsIDIzMSwgODAsIDM2LCAzLCAyMzEsIAotICAgIDIwMywgMzYsIDMsIDIzMCwgMTYxLCAzNiwgMywgMjMwLCAxMzIsIDM2LCAzLCAyMzEsIDEzNSwgMzYsIDMsIDIxMSwgMTAzLCAKLSAgICAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgCi0gICAgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIAotICAgIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NCwgMzYsIDMsIDIyMywgMzUsIDM2LCAzLCAyMjIsIDIzOSwgCi0gICAgMzYsIDMsIDIyMiwgMTQwLCAzNiwgMywgMjIyLCAxMTIsIDM2LCAzLCAyMjMsIDEyOCwgMzYsIDMsIDIyMywgMTA4LCAzNiwgCi0gICAgMywgMjIzLCAxNjYsIDM2LCAzLCAyMjIsIDIxMSwgMzYsIDMsIDIyMiwgMTk3LCAzNiwgMywgMjIzLCAxMzYsIDM2LCAzLCAKLSAgICAyMzMsIDEzNCwgMzYsIDMsIDIzMiwgMjQxLCAzNiwgMywgMjMyLCAyMjcsIDM2LCAzLCAyMzIsIDk4LCAzNiwgMywgMjMyLCAKLSAgICA3MywgMzYsIDMsIDIzMywgNTgsIDM2LCAzLCAyMzMsIDUwLCAzNiwgMywgMjMzLCAxMDksIDM2LCAzLCAyMzIsIDE1NiwgMzYsIAotICAgIDMsIDIzMiwgMTI3LCAzNiwgMywgMjMzLCA3NCwgMzYsIDMsIDIxNCwgMjYsIDM2LCAzLCAyMTMsIDE3NiwgMzYsIDMsIDIxMywgCi0gICAgMTYyLCAzNiwgMywgMjEyLCAxMTYsIDM2LCAzLCAyMTIsIDEwOSwgMzYsIDMsIDIxMywgMjU1LCAzNiwgMywgMjEzLCAyNTAsIAotICAgIDM2LCAzLCAyMTQsIDIzLCAzNiwgMywgMjEzLCAxMzgsIDM2LCAzLCAyMTMsIDEyNywgMzYsIDMsIDIxNCwgNSwgMzYsIDMsIAotICAgIDIzMiwgMTc0LCAzNiwgMywgMjMyLCAxNjksIDM2LCAzLCAyMzIsIDE2OCwgMzYsIDMsIDIzMiwgMTY1LCAzNiwgMywgMjMyLCAKLSAgICAxNjQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE2NywgCi0gICAgMzYsIDMsIDIzMiwgMTY2LCAzNiwgMywgMjMyLCAxNzIsIDM2LCAzLCAyMzIsIDE4MywgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCi0gICAgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE2MSwgMzYsIDMsIDIzMiwgMTYwLCAzNiwgMywgMjMyLCAxODAsIDM2LCAzLCAKLSAgICAyMzIsIDE3OSwgMzYsIDMsIDIzMiwgMTgyLCAzNiwgMywgMjMyLCAxNjMsIDM2LCAzLCAyMzIsIDE2MiwgMzYsIDMsIDIzMiwgCi0gICAgMTgxLCAzNiwgMywgMjIyLCAxNzgsIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgMjIyLCAxNjAsIAotICAgIDM2LCAzLCAyMjIsIDE1MywgMzYsIDMsIDIyMiwgMTc0LCAzNiwgMywgMjIyLCAxNzMsIDM2LCAzLCAyMjIsIDE3NywgMzYsIAotICAgIDMsIDIyMiwgMTY1LCAzNiwgMywgMjIyLCAxNjQsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIDMsIDIyOCwgOTEsIDM2LCAzLCAKLSAgICAyMjgsIDg2LCAzNiwgMywgMjI4LCA4NSwgMzYsIDMsIDIyOCwgODIsIDM2LCAzLCAyMjgsIDgxLCAzNiwgMywgMjI4LCA4OCwgCi0gICAgMzYsIDMsIDIyOCwgODcsIDM2LCAzLCAyMjgsIDkwLCAzNiwgMywgMjI4LCA4NCwgMzYsIDMsIDIyOCwgODMsIDM2LCAzLCAKLSAgICAyMjgsIDg5LCAzNiwgMywgMjM1LCAxNDAsIDM2LCAzLCAyMzUsIDEwOCwgMzYsIDMsIDIzNSwgMTAxLCAzNiwgMywgMjM1LCAKLSAgICA1MSwgMzYsIDMsIDIzNSwgMzMsIDM2LCAzLCAyMzUsIDEyNiwgMzYsIDMsIDIzNSwgMTI0LCAzNiwgMywgMjM1LCAxMzUsIAotICAgIDM2LCAzLCAyMzUsIDY4LCAzNiwgMywgMjM1LCA1OSwgMzYsIDMsIDIzNSwgMTI5LCAzNiwgMywgMjIwLCA5OCwgMzYsIDMsIAotICAgIDIyMCwgMzIsIDM2LCAzLCAyMjAsIDI3LCAzNiwgMywgMjE5LCAyMjUsIDM2LCAzLCAyMTksIDIxMCwgMzYsIDMsIDIyMCwgCi0gICAgNjMsIDM2LCAzLCAyMjAsIDYxLCAzNiwgMywgMjIwLCA5MCwgMzYsIDMsIDIyMCwgNywgMzYsIDMsIDIyMCwgMSwgMzYsIDMsIAotICAgIDIyMCwgNzEsIDM2LCAzLCAyMTgsIDIyMiwgMzYsIDMsIDIxOCwgMTkyLCAzNiwgMywgMjE4LCAxODgsIDM2LCAzLCAyMTgsIAotICAgIDE3OSwgMzYsIDMsIDIxOCwgMTc2LCAzNiwgMywgMjE4LCAxOTcsIDM2LCAzLCAyMTgsIDE5NiwgMzYsIDMsIDIxOCwgMjIxLCAKLSAgICAzNiwgMywgMjE4LCAxODQsIDM2LCAzLCAyMTgsIDE4MywgMzYsIDMsIDIxOCwgMTk5LCAzNiwgMywgMjIyLCAzMSwgMzYsIDMsIAotICAgIDIxOSwgMTkxLCAzNiwgMywgMjE5LCAxNzUsIDM2LCAzLCAyMTgsIDgzLCAzNiwgMywgMjE4LCA0LCAzNiwgMywgMjIxLCAKLSAgICAxODEsIDM2LCAzLCAyMjEsIDE3MCwgMzYsIDMsIDIyMiwgMTcsIDM2LCAzLCAyMTksIDU4LCAzNiwgMywgMjE5LCA0MCwgMzYsIAotICAgIDMsIDIyMSwgMjE5LCAzNiwgMywgMjQyLCA0NiwgMzYsIDMsIDI0MSwgMTgwLCAzNiwgMywgMjQxLCAxNjEsIDM2LCAzLCAKLSAgICAyNDAsIDIyMiwgMzYsIDMsIDI0MCwgMjAyLCAzNiwgMywgMjQxLCAyMzgsIDM2LCAzLCAyNDEsIDIyMCwgMzYsIDMsIDI0MiwgCi0gICAgMzYsIDM2LCAzLCAyNDEsIDY4LCAzNiwgMywgMjQxLCA1MywgMzYsIDMsIDI0MSwgMjQ2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAKLSAgICAzLCAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI1LCAzNiwgMywgMjMzLCAyMjQsIDM2LCAzLCAyMzMsIDIyMSwgMzYsIDMsIAotICAgIDIzMywgMjIwLCAzNiwgMywgMjMzLCAyMjcsIDM2LCAzLCAyMzMsIDIyNiwgMzYsIDMsIDIzMywgMjI5LCAzNiwgMywgMjMzLCAKLSAgICAyMjMsIDM2LCAzLCAyMzMsIDIyMiwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjE5LCAyMzEsIDE3NSwgMTE2LCA1LCAyMTEsIAotICAgIDY4LCAxNzUsIDExNiwgNSwgMjIzLCAxNTUsIDE3NSwgMTE2LCA1LCAyMjMsIDc4LCA5OCwgMSwgMjE1LCAyOCwgNjksIDExNiwgCi0gICAgNSwgMjQ5LCAyMzMsIDE3NiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTMyLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgCi0gICAgMjM0LCAyOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTA1LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI5LCA0LCAKLSAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUxLCAzMywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MCwgMTU3LCA2OSwgMTE2LCAKLSAgICA1LCAyNDksIDIzMywgMjQ5LCAyMzgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTAsIDg2LCA2OSwgMTE2LCA1LCAyNDksIAotICAgIDIzMywgMjI3LCAxMzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNDgsIDIyMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNSwgCi0gICAgMTQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjQ3LCAxNDUsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTUsIDEzOSwgNjksIAotICAgIDExNiwgNSwgMjQ5LCAyMzMsIDE5NywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNywgMTA1LCA2OSwgMTE2LCA1LCAyNDksIAotICAgIDIzMywgMjE2LCAyMDgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxMTEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTYsIDE1NiwgCi0gICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyOCwgNzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTIsIDE5MSwgNjksIDExNiwgCi0gICAgNSwgMjQ5LCAyMzMsIDIyNSwgMTQ3LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI1LCAxNiwgNjksIDExNiwgNSwgMjQ5LCAKLSAgICAyMzMsIDIyNSwgMTIxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMwLCAxNjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTAsIAotICAgIDI0NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMiwgMjExLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMyLCAxNTYsIDY5LCAKLSAgICAxMTYsIDUsIDI0OSwgMjMzLCAyMTMsIDEzOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMCwgMTAyLCA2OSwgMTE2LCA1LCAKLSAgICAyNDksIDIzMywgMjE4LCAyMjMsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMDYsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxNjIsIAotICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzMsIDEzNSwgNjksIDI1LCA1LCAyNDksIDIzMywgMjI0LCA4OCwgNjksIDIzNSwgCi0gICAgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAyMjIsIDEwMCwgCi0gICAgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAKLSAgICAyMjQsIDY5LCA2OSwgMjUsIDUsIDIyNiwgMjA0LCA2OSwgMjUsIDUsIDI1NSwgMzQsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgCi0gICAgNzcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgMjcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCAxNDEsIDEsIDI1MSwgCi0gICAgMjU1LCAyMjksIDY0LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjksIDQsIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA3NywgNTYsIDEsIAotICAgIDI1MSwgMjU1LCAyMjksIDI3LCA1NiwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCA1NiwgMSwgMjUxLCAyNTUsIDIyOSwgNjQsIAotICAgIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA0LCA1NiwgMSwgMjU0LCAxOTQsIDI1MCwgMTkwLCA1NiwgMSwgMjU0LCAxOTQsIDIxNSwgCi0gICAgMTE4LCA1NiwgMSwgMjU0LCAxOTQsIDExMSwgNTYsIDEsIDI1NCwgMTk0LCAyMjYsIDEwNSwgNTgsIDEsIDI0NSwgMjAsIAotICAgIDI0NSwgMTksIDI0OSwgMTgyLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NSwgMjAsIDI0OSwgMTgyLCAxMzgsIDEzMCwgCisgICAgMTE3LCAxMjksIDcsIDQsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCAyNDksIDEwMCwgMTI3LCAxMjksIDY3LCAyMzIsIDIxNCwgCisgICAgMTI5LCA0NCwgMjQ5LCAxMDAsIDEyNywgMTI5LCAxODMsIDI1MSwgNywgMjE3LCA4NSwgNDUsIDIyMSwgNzksIDQ1LCAyMjEsIAorICAgIDY4LCA0NSwgMjIxLCA1NywgNDUsIDIyMSwgNDUsIDQ1LCAyMjEsIDM0LCA0NSwgMjIxLCAyMywgNDUsIDIyMSwgMTIsIDQ1LCAKKyAgICAyMjEsIDEsIDQ1LCAyMjAsIDI0NiwgNDUsIDIyMCwgMjM4LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgCisgICAgMjM1LCA0NSwgMjIwLCAyMzMsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIAorICAgIDIyOSwgNDUsIDIyMCwgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAKKyAgICAyMjQsIDQ1LCAyMjAsIDIyMiwgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgCisgICAgMjE4LCA0NSwgMjIwLCAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIAorICAgIDIxMywgNDUsIDIyMCwgMjExLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAKKyAgICAyMDcsIDQ1LCAyMjAsIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgCisgICAgMjAyLCA0NSwgMjIwLCAyMDAsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIAorICAgIDE5NiwgNDUsIDIyMCwgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAKKyAgICAxOTEsIDQ1LCAyMjAsIDE4OSwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgCisgICAgMTg1LCA0NSwgMjIwLCAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIAorICAgIDE4MCwgNDUsIDIyMCwgMTc4LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAKKyAgICAxNzQsIDQ1LCAyMjAsIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgCisgICAgMTY5LCA0NSwgMjIwLCAxNjcsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIAorICAgIDE2MywgNDUsIDIyMCwgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIwLCAKKyAgICAxNTgsIDQ1LCAyMjEsIDE1NSwgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgCisgICAgMTUxLCA0NSwgMjIxLCAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIAorICAgIDE0NiwgNDUsIDIyMSwgMTQ0LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAKKyAgICAxNDAsIDQ1LCAyMjEsIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgCisgICAgMTM1LCA0NSwgMjIxLCAxMzMsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIAorICAgIDEyOSwgNDUsIDIyMSwgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAKKyAgICAxMjQsIDQ1LCAyMjEsIDEyMiwgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgCisgICAgMTE4LCA0NSwgMjIxLCAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIAorICAgIDExMywgNDUsIDIyMSwgMTExLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAKKyAgICAxMDcsIDQ1LCAyMjEsIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgCisgICAgMTAyLCA0NSwgMjIxLCAxMDAsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCAKKyAgICA0NSwgMjIxLCA5NSwgNDUsIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTEsIDQ1LCAyMjEsIAorICAgIDg5LCA0NSwgMjIxLCA4OCwgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAKKyAgICAyMjEsIDgzLCA0NSwgMjIxLCA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgNzcsIAorICAgIDQ1LCAyMjEsIDc2LCA0NSwgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgCisgICAgNzEsIDQ1LCAyMjEsIDcwLCA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNjcsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIAorICAgIDIyMSwgNjQsIDQ1LCAyMjEsIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgCisgICAgNDUsIDIyMSwgNTgsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCAKKyAgICA1MiwgNDUsIDIyMSwgNTEsIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ3LCA0NSwgCisgICAgMjIxLCA0NCwgNDUsIDIyMSwgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCAKKyAgICA0NSwgMjIxLCAzOCwgNDUsIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIAorICAgIDMyLCA0NSwgMjIxLCAzMSwgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAKKyAgICAyMjEsIDI2LCA0NSwgMjIxLCAyNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIAorICAgIDQ1LCAyMjEsIDE5LCA0NSwgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgCisgICAgMTQsIDQ1LCAyMjEsIDEzLCA0NSwgMjIxLCAxMSwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAKKyAgICAyMjEsIDcsIDQ1LCAyMjEsIDYsIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDIsIDQ1LCAKKyAgICAyMjEsIDAsIDQ1LCAyMjAsIDI1NSwgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgCisgICAgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDcsIDQ1LCAyMjAsIAorICAgIDI0NSwgNDUsIDIyMCwgMjQ0LCA0NSwgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAKKyAgICAyNDAsIDQ1LCAyMjAsIDIzOSwgMjI3LCAyMDMsIDIyNywgMjA1LCAyMTgsIDE1MywgNjQsIDI0MSwgMjM0LCAyMTksIDQ5LCAKKyAgICAyMTgsIDE1MywgNjQsIDIxNiwgMjEzLCAyMTgsIDg2LCAyNDUsIDE0NCwgNjQsIDIxNiwgMjEzLCAyNDUsIDU3LCAyNDUsIAorICAgIDE0NCwgNjQsIDIxNSwgMjQ0LCAyNDUsIDExMCwgMjQ1LCAxMzMsIDI0NSwgMTM0LCAyNTUsIDgsIDI1NSwgOSwgMjU0LCAKKyAgICAxNjgsIDI1MiwgNDgsIDI1MiwgMTgwLCAyNTEsIDEzMiwgMTM1LCAyMTcsIDkwLCAyMDMsIDIxNywgOTAsIDI0MCwgMjI4LCAKKyAgICAyMTcsIDk0LCAyMzIsIDIxNSwgMjQ0LCAxNDYsIDE2NiwgMjMyLCAyMTQsIDI0NSwgMTQ0LCA2NCwgMjMyLCAyMTQsIDIzMywgCisgICAgMSwgMjI4LCAxMzYsIDI0NSwgMTEzLCAyMzIsIDIxNSwgMjE3LCA5MCwgNjcsIDIxNywgOTAsIDIxMiwgMTE4LCAyNDQsIDIxLCAKKyAgICAyNDQsIDE0NiwgMjQ0LCAxMjYsIDI1MCwgMjMxLCAyMjMsIDU0LCAyNDksIDE0NCwgMjIwLCAyOSwgMjI2LCAxMzEsIDIzMiwgCisgICAgMTUxLCAxMTAsIDIxOSwgNTksIDIyMCwgMjksIDIzNiwgMCwgMjMyLCAxNTEsIDIxMCwgODYsIDIxOSwgMTkyLCAyNDgsIAorICAgIDE1MiwgMjMyLCAyMDUsIDI0NSwgNzgsIDI0NywgMTU2LCAyNDgsIDMyLCAyNDksIDE3OSwgMTEwLCAyNDgsIDE0MiwgMjQ4LCAKKyAgICAzMiwgMjQ5LCAxNzksIDEwNSwgMjQ4LCAxNDEsIDI0OCwgMzIsIDI0OSwgMTc5LCAxNTgsIDI0OCwgMTQwLCAyNDgsIDMyLCAKKyAgICAyNDksIDE3OSwgMTYxLCAyNDgsIDEzOSwgMTUyLCAyNTUsIDgsIDIyOSwgMjEwLCAyMTcsIDE3OCwgMjM2LCA2MywgMjE3LCAKKyAgICAxODEsIDI0NSwgMTQ0LCA2NCwgMjE1LCAyNDUsIDI1MSwgMjE0LCAyNDUsIDYzLCAyNTEsIDYsIDI1MSwgOCwgMjQ1LCAxNDQsIAorICAgIDY0LCAyMzEsIDgyLCAyNDUsIDExMSwgMjE4LCA2MiwgMjE4LCA3OSwgMjQ1LCA3OCwgMjQ1LCA3OSwgMjM1LCAyMzMsIDIyMCwgCisgICAgMTM5LCAxNjEsIDI0NCwgMTA4LCAyMjAsIDEzOCwgMjQzLCAyMzgsIDIzNSwgMjMzLCAyMjAsIDEzOSwgMTU4LCAyNDIsIAorICAgIDEyMiwgMjIwLCAxMzgsIDI0MiwgMTE5LCAyMzUsIDIzMywgMjIwLCAxMzksIDEwNSwgMjIzLCAxMjIsIDIyMCwgMTM4LCAKKyAgICAyMjIsIDE0NiwgMjM1LCAyMzMsIDIyMCwgMTM5LCAxMTAsIDIxNCwgMTc0LCAyMjAsIDEzOCwgMjE0LCAxMzMsIDIxOSwgMjIsIAorICAgIDI0OCwgNjQsIDI0OCwgNjYsIDIyNiwgNzksIDI1MCwgMTQzLCAyMjYsIDgxLCAxMjUsIDIyNiwgMjQxLCAyMjQsIDE5NCwgCisgICAgMjQxLCA0OCwgMjUxLCAxNTEsIDIyNSwgMTc0LCAyNDEsIDIwNCwgMjUxLCAxNjIsIDIyOCwgNzYsIDI1MSwgMTUxLCAyNDEsIAorICAgIDIwNCwgMjI5LCAxNzYsIDIzNSwgMjQzLCAyMzUsIDI0NSwgMjI5LCA4MywgMjMyLCAyMTQsIDIyOSwgMTAwLCAyMTgsIDE1MywgCisgICAgNjQsIDIyMSwgMTU5LCAyNTQsIDE5LCAyMTgsIDIyNCwgMjQ1LCAxNDQsIDY0LCAyMjEsIDE1OSwgMjU0LCAxOSwgMjQ1LCAKKyAgICA4MSwgMTM1LCAyMTcsIDkxLCAyMjAsIDEyOCwgMjAzLCAyMTcsIDkxLCAyMjAsIDEyOCwgMjQwLCAyMjUsIDEzNSwgMjE3LCAKKyAgICA5MSwgMiwgMjM1LCAzNiwgMjAzLCAyMTcsIDkxLCAyLCAyMzUsIDM2LCAyNDAsIDIyNiwgMjMyLCAyMTUsIDIxNywgOTEsIAorICAgIDIyMCwgMTI4LCA2NywgMjE3LCA5MSwgMjIwLCAxMjgsIDIxMiwgMTE3LCAyMjUsIDI1NCwgMjMyLCAyMTUsIDI0NCwgMTUsIAorICAgIDIyNSwgMjU0LCAyMzIsIDIxNSwgMjQ2LCAxMDcsIDIyNSwgMzMsIDIyNSwgMjU0LCAyMzIsIDIxNSwgMjUyLCAxNzksIDIyNSwgCisgICAgMjU0LCAyMzIsIDIxNSwgMjE0LCAxNjMsIDIyNSwgMjksIDIyMywgNTEsIDIzMiwgMjE1LCAyNDQsIDE0NiwgMjIzLCA1MSwgCisgICAgMjM1LCAyNDMsIDIyMywgMzYsIDIxOSwgMTU2LCAyMjAsIDI5LCAxMDUsIDIxOSwgMTUzLCAyMTgsIDIyNiwgMjE5LCAxNTYsIAorICAgIDIyMCwgMjksIDE1OCwgMjE5LCAxNTIsIDIxOCwgMjI1LCAyNDgsIDMyLCAyNDksIDE3OSwgMjE4LCAxMDYsIDI0OCwgMTM4LCAKKyAgICAyMjQsIDE4NCwgMjE0LCAxMzIsIDExMCwgMjI0LCAxODQsIDIxNCwgMTMwLCAyMjQsIDE1MCwgMjI0LCAxODQsIDIxNCwgCisgICAgMTMyLCAxMDUsIDIyNCwgMTg0LCAyMTQsIDEyOSwgMjI0LCAxNDksIDIyMCwgMTI5LCAyMTUsIDI0MywgMjE4LCAxNTIsIAorICAgIDIxOCwgOTAsIDI1MSwgNywgMjUwLCAxNDMsIDI1MCwgMjEwLCAyMzEsIDQ0LCAyMTIsIDU5LCAyMzAsIDQ0LCAyMTgsIDE1MywgCisgICAgNjQsIDI0MiwgMTA4LCAyNTQsIDE5LCAyMTgsIDE1MywgNjQsIDIyNCwgMTY3LCAyNTQsIDE5LCAyMTksIDIxLCAyNDUsIAorICAgIDE0NCwgNjQsIDI0MiwgMTA4LCAyNTQsIDE5LCAyNDUsIDE0NCwgNjQsIDIyNCwgMTY3LCAyNTQsIDE5LCAyNDUsIDEwOCwgCisgICAgMjE4LCAxNTMsIDY0LCAyMTgsIDEwNiwgMjE5LCAzNiwgMjE5LCAxNTYsIDI0MiwgMTQyLCAxMzUsIDIzNSwgMTk2LCAyMjAsIAorICAgIDEwOCwgMjE5LCAxNTYsIDEzNSwgMjM1LCAxOTYsIDIyMSwgMTk1LCAyNDksIDE3OSwgMjIwLCAxMzYsIDIzNSwgMTk2LCAKKyAgICAyNDksIDExNCwgMjE4LCAxMDcsIDIxNiwgMjM3LCAyMTgsIDE2OSwgMjI2LCAxNzAsIDIxNywgMTY4LCAyNDksIDIxOSwgCisgICAgMjI2LCAxNDMsIDIyNCwgMTg1LCAyMzEsIDQzLCAyMjUsIDIwLCAyNTQsIDU0LCAyMjQsIDE3OSwgMjQ5LCAyMTksIDI1NCwgCisgICAgNzAsIDIyOSwgMTY0LCAyMTksIDIwMSwgNywgNiwgMSwgMjQyLCAyNTAsIDcsIDQsIDEsIDI0MiwgMjUwLCAyNTAsIDE2MCwgCisgICAgMTgyLCAyMTgsIDY4LCAyNDksIDIyOCwgMjE5LCAxMDcsIDIzMywgNDcsIDE2NSwgMSwgMjMyLCAxNzYsIDIwOSwgMjA5LCAxLCAKKyAgICAyNDQsIDQ1LCAyNDQsIDM3LCAyMDksIDIwOSwgMSwgMjQ0LCA0NSwgMjQ0LCAxNTgsIDIwOSwgMjA5LCAxLCAyMjIsIDIxMiwgCisgICAgMjA5LCAyMDksIDEsIDIzMiwgMTU3LCA2MywgMTY0LCAyNTEsIDIyNCwgMjIwLCA0LCAyNDIsIDIxNiwgMjMwLCAyNDksIAorICAgIDIyMywgNDIsIDI0MywgMjE3LCAyNDMsIDIxNiwgMjQzLCAyMTUsIDIzMCwgNDYsIDIwOSwgMjUxLCAyMDksIDI1MiwgMjA5LCAKKyAgICAyNTQsIDIzMiwgMTAzLCAyMjIsIDIyMCwgMjMyLCAxMDQsIDIyMiwgMjIxLCAyMjUsIDIyNCwgMjMyLCAxMDIsIDIyMiwgCisgICAgMjE5LCAyMjgsIDEwNywgMjMwLCAxNjYsIDIxMSwgMjI5LCAyMTIsIDE1LCAyNDUsIDE2MywgMjQzLCAyMjcsIDIzMCwgMjMwLCAKKyAgICAyMjYsIDE5OCwgMjE0LCAxMzQsIDg3LCAyMzAsIDIzMCwgMjQ4LCAxNTgsIDg3LCA4LCAzLCAyMzUsIDE1OSwgNzgsIDIyNCwgCisgICAgMTk1LCAyNDQsIDIxLCAzMSwgNjcsIDQ0LCA3MSwgMjMzLCAyMSwgMTI3LCAyMTMsIDExOCwgMjEzLCA3LCAyMTIsIDE5NSwgCisgICAgMjEyLCAxODQsIDIxMiwgMTczLCAyMTIsIDE2MiwgMjEyLCAxNTEsIDIxMiwgMTQwLCAyMTIsIDEyOSwgMjEzLCAxMTcsIAorICAgIDIxMywgMTA2LCAyMTMsIDk1LCAyMTMsIDg0LCAyMTMsIDczLCAyMTMsIDYyLCAyMTMsIDUxLCAyNTEsIDcyLCAyMjYsIDE1NiwgCisgICAgNzgsIDI1MSwgMTk3LCAyMDksIDI1MywgNDksIDI4LCAxNiwgMjQzLCAyMzcsIDIxOSwgMTAzLCAyNTAsIDc0LCAyMTQsIDksIAorICAgIDIxMywgNDAsIDIxMywgMjksIDIxMywgMTgsIDIxMywgNiwgMjEyLCAyNTEsIDIxMiwgMjQwLCAyMTIsIDIyOSwgMjEyLCAKKyAgICAyMTgsIDIxMiwgMjA3LCAyMTIsIDE5OSwgMjEyLCAxOTgsIDIxMiwgMTk3LCAyMTIsIDE5NiwgMjEyLCAxOTQsIDIxMiwgCisgICAgMTkzLCAyMTIsIDE5MiwgMjEyLCAxOTEsIDIxMiwgMTkwLCAyMTIsIDE4OSwgMjEyLCAxODgsIDIxMiwgMTg3LCAyMTIsIAorICAgIDE4NiwgMjEyLCAxODUsIDIxMiwgMTgzLCAyMTIsIDE4MiwgMjEyLCAxODEsIDIxMiwgMTgwLCAyMTIsIDE3OSwgMjEyLCAKKyAgICAxNzgsIDIxMiwgMTc3LCAyMTIsIDE3NiwgMjEyLCAxNzUsIDIxMiwgMTc0LCAyMTIsIDE3MiwgMjEyLCAxNzEsIDIxMiwgCisgICAgMTcwLCAyMTIsIDE2OSwgMjEyLCAxNjgsIDIxMiwgMTY3LCAyMTIsIDE2NiwgMjEyLCAxNjUsIDIxMiwgMTY0LCAyMTIsIAorICAgIDE2MywgMjEyLCAxNjEsIDIxMiwgMTYwLCAyMTIsIDE1OSwgMjEyLCAxNTgsIDIxMiwgMTU3LCAyMTIsIDE1NiwgMjEyLCAKKyAgICAxNTUsIDIxMiwgMTU0LCAyMTIsIDE1MywgMjEyLCAxNTIsIDIxMiwgMTUwLCAyMTIsIDE0OSwgMjEyLCAxNDgsIDIxMiwgCisgICAgMTQ3LCAyMTIsIDE0NiwgMjEyLCAxNDUsIDIxMiwgMTQ0LCAyMTIsIDE0MywgMjEyLCAxNDIsIDIxMiwgMTQxLCAyMTIsIAorICAgIDEzOSwgMjEyLCAxMzgsIDIxMiwgMTM3LCAyMTIsIDEzNiwgMjEyLCAxMzUsIDIxMiwgMTM0LCAyMTIsIDEzMywgMjEyLCAKKyAgICAxMzIsIDIxMiwgMTMxLCAyMTIsIDEzMCwgMjEyLCAxMjgsIDIxMiwgMTI3LCAyMTIsIDEyNiwgMjEyLCAxMjUsIDIxMiwgCisgICAgMTI0LCAyMTIsIDEyMywgMjEyLCAxMjIsIDIxMiwgMTIxLCAyMTIsIDEyMCwgMjEyLCAxMTksIDIxMywgMTE2LCAyMTMsIAorICAgIDExNSwgMjEzLCAxMTQsIDIxMywgMTEzLCAyMTMsIDExMiwgMjEzLCAxMTEsIDIxMywgMTEwLCAyMTMsIDEwOSwgMjEzLCAKKyAgICAxMDgsIDIxMywgMTA3LCAyMTMsIDEwNSwgMjEzLCAxMDQsIDIxMywgMTAzLCAyMTMsIDEwMiwgMjEzLCAxMDEsIDIxMywgCisgICAgMTAwLCAyMTMsIDk5LCAyMTMsIDk4LCAyMTMsIDk3LCAyMTMsIDk2LCAyMTMsIDk0LCAyMTMsIDkzLCAyMTMsIDkyLCAyMTMsIAorICAgIDkxLCAyMTMsIDkwLCAyMTMsIDg5LCAyMTMsIDg4LCAyMTMsIDg3LCAyMTMsIDg2LCAyMTMsIDg1LCAyMTMsIDgzLCAyMTMsIAorICAgIDgyLCAyMTMsIDgxLCAyMTMsIDgwLCAyMTMsIDc5LCAyMTMsIDc4LCAyMTMsIDc3LCAyMTMsIDc2LCAyMTMsIDc1LCAyMTMsIAorICAgIDc0LCAyMTMsIDcyLCAyMTMsIDcxLCAyMTMsIDcwLCAyMTMsIDY5LCAyMTMsIDY4LCAyMTMsIDY3LCAyMTMsIDY2LCAyMTMsIAorICAgIDY1LCAyMTMsIDY0LCAyMTMsIDYzLCAyMTMsIDYxLCAyMTMsIDYwLCAyMTMsIDU5LCAyMTMsIDU4LCAyMTMsIDU3LCAyMTMsIAorICAgIDU2LCAyMTMsIDU1LCAyMTMsIDU0LCAyMTMsIDUzLCAyMTMsIDUyLCAyMTMsIDUwLCAyMTMsIDQ5LCAyMTMsIDQ4LCAyMTMsIAorICAgIDQ3LCAyMTMsIDQ2LCAyMTMsIDQ1LCAyMTMsIDQ0LCAyMTMsIDQzLCAyMTMsIDQyLCAyMTMsIDQxLCAyMTMsIDM5LCAyMTMsIAorICAgIDM4LCAyMTMsIDM3LCAyMTMsIDM2LCAyMTMsIDM1LCAyMTMsIDM0LCAyMTMsIDMzLCAyMTMsIDMyLCAyMTMsIDMxLCAyMTMsIAorICAgIDMwLCAyMTMsIDI4LCAyMTMsIDI3LCAyMTMsIDI2LCAyMTMsIDI1LCAyMTMsIDI0LCAyMTMsIDIzLCAyMTMsIDIyLCAyMTMsIAorICAgIDIxLCAyMTMsIDIwLCAyMTMsIDE5LCAyMTMsIDE3LCAyMTMsIDE2LCAyMTMsIDE1LCAyMTMsIDE0LCAyMTMsIDEzLCAyMTMsIAorICAgIDEyLCAyMTMsIDExLCAyMTMsIDEwLCAyMTMsIDksIDIxMywgOCwgMjEzLCA1LCAyMTMsIDQsIDIxMywgMywgMjEzLCAyLCAKKyAgICAyMTMsIDEsIDIxMywgMCwgMjEyLCAyNTUsIDIxMiwgMjU0LCAyMTIsIDI1MywgMjEyLCAyNTIsIDIxMiwgMjUwLCAyMTIsIAorICAgIDI0OSwgMjEyLCAyNDgsIDIxMiwgMjQ3LCAyMTIsIDI0NiwgMjEyLCAyNDUsIDIxMiwgMjQ0LCAyMTIsIDI0MywgMjEyLCAKKyAgICAyNDIsIDIxMiwgMjQxLCAyMTIsIDIzOSwgMjEyLCAyMzgsIDIxMiwgMjM3LCAyMTIsIDIzNiwgMjEyLCAyMzUsIDIxMiwgCisgICAgMjM0LCAyMTIsIDIzMywgMjEyLCAyMzIsIDIxMiwgMjMxLCAyMTIsIDIzMCwgMjEyLCAyMjgsIDIxMiwgMjI3LCAyMTIsIAorICAgIDIyNiwgMjEyLCAyMjUsIDIxMiwgMjI0LCAyMTIsIDIyMywgMjEyLCAyMjIsIDIxMiwgMjIxLCAyMTIsIDIyMCwgMjEyLCAKKyAgICAyMTksIDIxMiwgMjE3LCAyMTIsIDIxNiwgMjEyLCAyMTUsIDIxMiwgMjE0LCAyMTIsIDIxMywgMjEyLCAyMTIsIDIxMiwgCisgICAgMjExLCAyMTIsIDIxMCwgMjEyLCAyMDksIDIxMiwgMjA4LCAyMTIsIDIwNiwgMjEyLCAyMDUsIDIxMiwgMjA0LCAyMTIsIAorICAgIDIwMywgMjEyLCAyMDIsIDIxMiwgMjAxLCAyMTIsIDIwMCwgNywgNiwgMSwgMTE1LCAyLCAyMzEsIDIzNCwgMjIsIDI0MiwgCisgICAgMTM3LCA3LCA0LCAxLCAxMTUsIDIsIDIzMSwgMjM0LCAyMiwgMjQyLCAxMzcsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgCisgICAgMjE1LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTUsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDY3LCAyMzIsIAorICAgIDIxNSwgMjUyLCA0NCwgMjIsIDI0MiwgMTM3LCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNSwgMjUyLCA0NCwgMjIsIAorICAgIDI0MiwgMTM3LCA3LCA2LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNSwgMjUyLCA0NCwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAKKyAgICAyLCA2NywgMjMyLCAyMTUsIDI1MiwgNDQsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMiwgMjIsIDIzMSwgCisgICAgMjMzLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzIsIDIyLCAyMzEsIDIzMywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMyLCAKKyAgICAyMiwgMjUwLCAyMzUsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMiwgMjIsIDI1MCwgMjM1LCA3LCA2LCAxLCAyNDAsIDE1NSwgCisgICAgMiwgMjMxLCAyMzQsIDIyLCAyNDIsIDEzNywgNywgNCwgMSwgMjQwLCAxNTUsIDIsIDIzMSwgMjM0LCAyMiwgMjQyLCAxMzcsIAorICAgIDcsIDQsIDEsIDI0MCwgMTU1LCAyLCA1OSwgNzcsIDIyLCAxNDIsIDcsIDQsIDEsIDIyOSwgODEsIDIsIDIxNiwgOTAsIDQ4LCAKKyAgICA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE1LCA1MSwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTUsIDI1MiwgNDQsIDIyLCAyNDIsIDEzNywgNywgNCwgMSwgMTQ0LCAyLCA2NywgCisgICAgMjMyLCAyMTUsIDI1MiwgNDQsIDIyLCAyNDIsIDEzNywgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTUsIDI1MiwgNDQsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE1LCAyNTIsIDQ0LCAyMiwgMTQyLCA3LCA2LCAxLCAyMjIsIAorICAgIDkzLCAyLCA2NywgMjMyLCAyMTUsIDUxLCA3LCA0LCAxLCAyMjIsIDkzLCAyLCA2NywgMjMyLCAyMTUsIDUxLCA3LCA2LCAxLCAKKyAgICAxMDQsIDIsIDIzMSwgMjM0LCAyMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzQsIDIyLCAyNDIsIDEzNywgCisgICAgNywgNiwgMSwgMTE1LCAyLCAyMjYsIDIyNiwgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyMjYsIDIyNiwgMjIsIDE0MiwgCisgICAgNywgNiwgMSwgMTE1LCAyLCAyMjYsIDIyNiwgMjIsIDE4MywgNywgNCwgMSwgMTE1LCAyLCAyMjYsIDIyNiwgMjIsIDE4MywgCisgICAgNywgNiwgMSwgMTYwLCAyLCAyMjYsIDIyNiwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyNiwgMjIsIDE0MiwgCisgICAgNywgNiwgMSwgMTYwLCAyLCAyMjYsIDIyNiwgMjIsIDE4MywgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyNiwgMjIsIDE4MywgCisgICAgNywgNiwgMSwgMTYwLCAyLCA1OSwgNzcsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA2LCAKKyAgICAxLCAxNjAsIDIsIDU5LCA3NywgMjIsIDE4MywgNywgNCwgMSwgMTYwLCAyLCA1OSwgNzcsIDIyLCAxODMsIDcsIDQsIDEsIAorICAgIDI0MCwgMTU1LCAyLCA1OSwgNzcsIDIyLCAyNDIsIDEzNywgNywgNCwgMSwgMjQwLCAxNTUsIDIsIDU5LCA3NywgMjIsIDE4MywgCisgICAgNywgNiwgMSwgMjQwLCAxNTUsIDIsIDIyNiwgMjI2LCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE1NSwgMiwgMjI2LCAyMjYsIAorICAgIDIyLCA1OSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMTU1LCAyLCAyMjYsIDIyNiwgMjIsIDE4MywgNywgNCwgMSwgCisgICAgMjQwLCAxNTUsIDIsIDIyNiwgMjI2LCAyMiwgNTksIDc3LCAyMiwgMTgzLCA3LCA2LCAxLCAyMzUsIDE0NiwgMiwgMTgzLCA3LCAKKyAgICA0LCAxLCAyMzUsIDE0NiwgMiwgNTksIDc3LCAyMiwgMTgzLCA3LCA2LCAxLCAyMzMsIDE1MCwgMiwgMTgzLCA3LCA0LCAxLCAKKyAgICAyMzMsIDE1MCwgMiwgMTgzLCA3LCA2LCAxLCAyMzIsIDUxLCAyLCAxODMsIDcsIDQsIDEsIDIzMiwgNTEsIDIsIDE4MywgNywgCisgICAgNiwgMSwgMjIzLCAyMjUsIDIsIDE4MywgNywgNCwgMSwgMjIzLCAyMjUsIDIsIDE4MywgNywgNiwgMSwgMTA0LCAyLCAyMjYsIAorICAgIDIyNiwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyMjYsIDIyNiwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIAorICAgIDIyNiwgMjIsIDE4MywgNywgNCwgMSwgMTA0LCAyLCAyMjYsIDIyNiwgMjIsIDE4MywgNywgNiwgMSwgMTA0LCAyLCAyMzEsIAorICAgIDIzNCwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzNCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIAorICAgIDIzNCwgMjIsIDE4MywgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzNCwgMjIsIDE4MywgNywgNCwgMSwgMjU0LCAyNDUsIDIsIAorICAgIDI0MiwgMTM3LCA3LCA0LCAxLCAyMDQsIDE0NCwgMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAxNDIsIDcsIAorICAgIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA2LCAyLCAyNDIsIDEzNywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDE0MiwgCisgICAgNywgNCwgMSwgMjIxLCAxOTcsIDIsIDI0MiwgMTM3LCA3LCA0LCAxLCAyMjEsIDE5NywgMiwgMTQyLCA3LCA0LCAxLCAyNDEsIAorICAgIDUyLCAyMjEsIDE5NywgMiwgMjQyLCAxMzcsIDcsIDQsIDEsIDI0MSwgNTIsIDIyMSwgMTk3LCAyLCAxNDIsIDE0NiwgMSwgCisgICAgMjM0LCAxMTAsIDM2LCAxMTYsIDIzNSwgMjQsIDM2LCAxMTYsIDIyOSwgODAsIDM2LCAxMTYsIDI1MSwgNjcsIDM2LCAxMTYsIAorICAgIDIyNywgMTY4LCAzNiwgMTE2LCAyMTUsIDE2MCwgMzYsIDExNiwgMjI4LCAxMTIsIDM2LCAxMTYsIDIxNywgMTUzLCAzNiwgCisgICAgMTE2LCAyMzAsIDI2LCAzNiwgMTE2LCAyMjYsIDEwNiwgMzYsIDExNiwgMTkzLCAzNiwgMTE2LCAyMTEsIDExNywgMzYsIAorICAgIDExNiwgMTUzLCAzNiwgMTE2LCAxNTYsIDM2LCAxMTYsIDIxNCwgMTA1LCAzNiwgMTE2LCAyMzIsIDE3NywgMzYsIDExNiwgCisgICAgMjMyLCAxODYsIDM2LCAxMTYsIDIyMiwgMTgxLCAzNiwgMTE2LCAyMjgsIDk0LCAzNiwgMTE2LCAyMzUsIDE0NSwgMzYsIAorICAgIDExNiwgMjIwLCAxMDUsIDM2LCAxMTYsIDIxOCwgMjI3LCAzNiwgMTE2LCAyMjIsIDkyLCAzNiwgMTE2LCAyNDIsIDYxLCAzNiwgCisgICAgMTE2LCAyMzMsIDIzMywgMzYsIDMsIDIzNSwgMTEsIDM2LCAzLCAyMzQsIDkzLCAzNiwgMywgMjM0LCA4NCwgMzYsIDMsIAorICAgIDIzMywgMjE4LCAzNiwgMywgMjMzLCAxODksIDM2LCAzLCAyMzQsIDE4MywgMzYsIDMsIDIzNCwgMTgyLCAzNiwgMywgMjM0LCAKKyAgICAyNDcsIDM2LCAzLCAyMzQsIDI5LCAzNiwgMywgMjM0LCAxMSwgMzYsIDMsIDIzNCwgMTk2LCAzNiwgMywgMjI5LCA3NywgMzYsIAorICAgIDMsIDIyOSwgMjgsIDM2LCAzLCAyMjksIDI0LCAzNiwgMywgMjI4LCAyNDksIDM2LCAzLCAyMjgsIDI0MiwgMzYsIDMsIDIyOSwgCisgICAgNjUsIDM2LCAzLCAyMjksIDYzLCAzNiwgMywgMjI5LCA3NCwgMzYsIDMsIDIyOSwgNSwgMzYsIDMsIDIyOSwgMCwgMzYsIDMsIAorICAgIDIyOSwgNjcsIDM2LCAzLCAyNTEsIDMzLCAzNiwgMywgMjUwLCA1MiwgMzYsIDMsIDI1MCwgNDIsIDM2LCAzLCAyNDksIDExMywgCisgICAgMzYsIDMsIDI0OSwgODQsIDM2LCAzLCAyNTAsIDE5MSwgMzYsIDMsIDI1MCwgMTgzLCAzNiwgMywgMjUxLCAyMywgMzYsIDMsIAorICAgIDI0OSwgMjM5LCAzNiwgMywgMjQ5LCAxNzUsIDM2LCAzLCAyNTAsIDIyMywgMzYsIDMsIDIyNywgMTY1LCAzNiwgMywgMjI3LCAKKyAgICAxNDksIDM2LCAzLCAyMjcsIDE0NCwgMzYsIDMsIDIyNywgMTI5LCAzNiwgMywgMjI3LCAxMjIsIDM2LCAzLCAyMjcsIDE1NywgCisgICAgMzYsIDMsIDIyNywgMTU2LCAzNiwgMywgMjI3LCAxNjIsIDM2LCAzLCAyMjcsIDEzNSwgMzYsIDMsIDIyNywgMTMzLCAzNiwgCisgICAgMywgMjI3LCAxNjAsIDM2LCAzLCAyMTUsIDE1NiwgMzYsIDMsIDIxNSwgMTM2LCAzNiwgMywgMjE1LCAxMzUsIDM2LCAzLCAKKyAgICAyMTUsIDEyNCwgMzYsIDMsIDIxNSwgMTIxLCAzNiwgMywgMjE1LCAxNTIsIDM2LCAzLCAyMTUsIDE1MSwgMzYsIDMsIDIxNSwgCisgICAgMTU1LCAzNiwgMywgMjE1LCAxMzQsIDM2LCAzLCAyMTUsIDEzMywgMzYsIDMsIDIxNSwgMTU0LCAzNiwgMywgMjI4LCAxMTAsIAorICAgIDM2LCAzLCAyMjgsIDk2LCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIDIyOCwgNzksIDM2LCAzLCAyMjgsIDc4LCAzNiwgMywgCisgICAgMjI4LCAxMDYsIDM2LCAzLCAyMjgsIDEwNSwgMzYsIDMsIDIyOCwgMTA5LCAzNiwgMywgMjI4LCA4MSwgMzYsIDMsIDIyOCwgCisgICAgODAsIDM2LCAzLCAyMjgsIDEwOCwgMzYsIDMsIDIxNywgMTAyLCAzNiwgMywgMjE2LCAxMTgsIDM2LCAzLCAyMTYsIDEwNCwgCisgICAgMzYsIDMsIDIxNSwgMTE5LCAzNiwgMywgMjE1LCA4NSwgMzYsIDMsIDIxNywgMjMsIDM2LCAzLCAyMTcsIDEyLCAzNiwgMywgCisgICAgMjE3LCA4MCwgMzYsIDMsIDExMSwgMzYsIDMsIDIxNiwgMTgsIDM2LCAzLCAyMTcsIDQyLCAzNiwgMywgMjI5LCAyMjYsIDM2LCAKKyAgICAzLCAyMjgsIDIzNCwgMzYsIDMsIDIyOCwgMjA5LCAzNiwgMywgMjI3LCAyMzgsIDM2LCAzLCAyMjcsIDE4MCwgMzYsIDMsIAorICAgIDIyOSwgMTA4LCAzNiwgMywgMjI5LCAxMDQsIDM2LCAzLCAyMjksIDIxMywgMzYsIDMsIDIyOCwgNzUsIDM2LCAzLCAyMjgsIAorICAgIDY1LCAzNiwgMywgMjI5LCAxODgsIDM2LCAzLCAyMjYsIDkwLCAzNiwgMywgMjI1LCAxMDksIDM2LCAzLCAyMjUsIDcyLCAzNiwgCisgICAgMywgMjI0LCAxNTEsIDM2LCAzLCAyMjQsIDEyMCwgMzYsIDMsIDIyNSwgMjIyLCAzNiwgMywgMjI1LCAyMTIsIDM2LCAzLCAKKyAgICAyMjYsIDcyLCAzNiwgMywgMjI1LCAxNywgMzYsIDMsIDIyNCwgMjUwLCAzNiwgMywgMjI1LCAyMzUsIDM2LCAzLCAyMzEsIAorICAgIDIzOCwgMzYsIDMsIDIzMCwgMjMxLCAzNiwgMywgMjMwLCAyMDIsIDM2LCAzLCAyMzAsIDEwMywgMzYsIDMsIDIzMCwgNTUsIAorICAgIDM2LCAzLCAyMzEsIDkyLCAzNiwgMywgMjMxLCA4MSwgMzYsIDMsIDIzMSwgMjA0LCAzNiwgMywgMjMwLCAxNjIsIDM2LCAzLCAKKyAgICAyMzAsIDEzMywgMzYsIDMsIDIzMSwgMTM2LCAzNiwgMywgMjExLCAxMDMsIDM2LCAzLCAyMTEsIDgsIDM2LCAzLCAyMTAsIAorICAgIDI1NSwgMzYsIDMsIDIxMCwgMjEyLCAzNiwgMywgMjEwLCAxODEsIDM2LCAzLCAyMTEsIDQ3LCAzNiwgMywgMjExLCA0NCwgCisgICAgMzYsIDMsIDIxMSwgODIsIDM2LCAzLCAyMTAsIDI0NCwgMzYsIDMsIDIxMCwgMjI5LCAzNiwgMywgMjExLCA1NSwgMzYsIDMsIAorICAgIDIyMywgMTg1LCAzNiwgMywgMjIzLCAzNiwgMzYsIDMsIDIyMiwgMjQwLCAzNiwgMywgMjIyLCAxNDEsIDM2LCAzLCAyMjIsIAorICAgIDExMywgMzYsIDMsIDIyMywgMTI5LCAzNiwgMywgMjIzLCAxMDksIDM2LCAzLCAyMjMsIDE2NywgMzYsIDMsIDIyMiwgMjEyLCAKKyAgICAzNiwgMywgMjIyLCAxOTgsIDM2LCAzLCAyMjMsIDEzNywgMzYsIDMsIDIzMywgMTM1LCAzNiwgMywgMjMyLCAyNDIsIDM2LCAKKyAgICAzLCAyMzIsIDIyOCwgMzYsIDMsIDIzMiwgOTksIDM2LCAzLCAyMzIsIDc0LCAzNiwgMywgMjMzLCA1OSwgMzYsIDMsIDIzMywgCisgICAgNTEsIDM2LCAzLCAyMzMsIDExMCwgMzYsIDMsIDIzMiwgMTU3LCAzNiwgMywgMjMyLCAxMjgsIDM2LCAzLCAyMzMsIDc1LCAKKyAgICAzNiwgMywgMjE0LCAyNiwgMzYsIDMsIDIxMywgMTc2LCAzNiwgMywgMjEzLCAxNjIsIDM2LCAzLCAyMTIsIDExNiwgMzYsIDMsIAorICAgIDIxMiwgMTA5LCAzNiwgMywgMjEzLCAyNTUsIDM2LCAzLCAyMTMsIDI1MCwgMzYsIDMsIDIxNCwgMjMsIDM2LCAzLCAyMTMsIAorICAgIDEzOCwgMzYsIDMsIDIxMywgMTI3LCAzNiwgMywgMjE0LCA1LCAzNiwgMywgMjMyLCAxNzUsIDM2LCAzLCAyMzIsIDE3MCwgCisgICAgMzYsIDMsIDIzMiwgMTY5LCAzNiwgMywgMjMyLCAxNjYsIDM2LCAzLCAyMzIsIDE2NSwgMzYsIDMsIDIzMiwgMTcyLCAzNiwgCisgICAgMywgMjMyLCAxNzEsIDM2LCAzLCAyMzIsIDE3NCwgMzYsIDMsIDIzMiwgMTY4LCAzNiwgMywgMjMyLCAxNjcsIDM2LCAzLCAKKyAgICAyMzIsIDE3MywgMzYsIDMsIDIzMiwgMTg0LCAzNiwgMywgMjMyLCAxNzksIDM2LCAzLCAyMzIsIDE3OCwgMzYsIDMsIDIzMiwgCisgICAgMTYyLCAzNiwgMywgMjMyLCAxNjEsIDM2LCAzLCAyMzIsIDE4MSwgMzYsIDMsIDIzMiwgMTgwLCAzNiwgMywgMjMyLCAxODMsIAorICAgIDM2LCAzLCAyMzIsIDE2NCwgMzYsIDMsIDIzMiwgMTYzLCAzNiwgMywgMjMyLCAxODIsIDM2LCAzLCAyMjIsIDE3OSwgMzYsIAorICAgIDMsIDIyMiwgMTY4LCAzNiwgMywgMjIyLCAxNjcsIDM2LCAzLCAyMjIsIDE2MSwgMzYsIDMsIDIyMiwgMTU0LCAzNiwgMywgCisgICAgMjIyLCAxNzUsIDM2LCAzLCAyMjIsIDE3NCwgMzYsIDMsIDIyMiwgMTc4LCAzNiwgMywgMjIyLCAxNjYsIDM2LCAzLCAyMjIsIAorICAgIDE2NSwgMzYsIDMsIDIyMiwgMTc3LCAzNiwgMywgMjI4LCA5MiwgMzYsIDMsIDIyOCwgODcsIDM2LCAzLCAyMjgsIDg2LCAzNiwgCisgICAgMywgMjI4LCA4MywgMzYsIDMsIDIyOCwgODIsIDM2LCAzLCAyMjgsIDg5LCAzNiwgMywgMjI4LCA4OCwgMzYsIDMsIDIyOCwgCisgICAgOTEsIDM2LCAzLCAyMjgsIDg1LCAzNiwgMywgMjI4LCA4NCwgMzYsIDMsIDIyOCwgOTAsIDM2LCAzLCAyMzUsIDE0MSwgMzYsIAorICAgIDMsIDIzNSwgMTA5LCAzNiwgMywgMjM1LCAxMDIsIDM2LCAzLCAyMzUsIDUyLCAzNiwgMywgMjM1LCAzNCwgMzYsIDMsIDIzNSwgCisgICAgMTI3LCAzNiwgMywgMjM1LCAxMjUsIDM2LCAzLCAyMzUsIDEzNiwgMzYsIDMsIDIzNSwgNjksIDM2LCAzLCAyMzUsIDYwLCAKKyAgICAzNiwgMywgMjM1LCAxMzAsIDM2LCAzLCAyMjAsIDk5LCAzNiwgMywgMjIwLCAzMywgMzYsIDMsIDIyMCwgMjgsIDM2LCAzLCAKKyAgICAyMTksIDIyNiwgMzYsIDMsIDIxOSwgMjExLCAzNiwgMywgMjIwLCA2NCwgMzYsIDMsIDIyMCwgNjIsIDM2LCAzLCAyMjAsIAorICAgIDkxLCAzNiwgMywgMjIwLCA4LCAzNiwgMywgMjIwLCAyLCAzNiwgMywgMjIwLCA3MiwgMzYsIDMsIDIxOCwgMjIzLCAzNiwgMywgCisgICAgMjE4LCAxOTMsIDM2LCAzLCAyMTgsIDE4OSwgMzYsIDMsIDIxOCwgMTgwLCAzNiwgMywgMjE4LCAxNzcsIDM2LCAzLCAyMTgsIAorICAgIDE5OCwgMzYsIDMsIDIxOCwgMTk3LCAzNiwgMywgMjE4LCAyMjIsIDM2LCAzLCAyMTgsIDE4NSwgMzYsIDMsIDIxOCwgMTg0LCAKKyAgICAzNiwgMywgMjE4LCAyMDAsIDM2LCAzLCAyMjIsIDMyLCAzNiwgMywgMjE5LCAxOTIsIDM2LCAzLCAyMTksIDE3NiwgMzYsIDMsIAorICAgIDIxOCwgODQsIDM2LCAzLCAyMTgsIDUsIDM2LCAzLCAyMjEsIDE4MiwgMzYsIDMsIDIyMSwgMTcxLCAzNiwgMywgMjIyLCAxOCwgCisgICAgMzYsIDMsIDIxOSwgNTksIDM2LCAzLCAyMTksIDQxLCAzNiwgMywgMjIxLCAyMjAsIDM2LCAzLCAyNDIsIDQ3LCAzNiwgMywgCisgICAgMjQxLCAxODEsIDM2LCAzLCAyNDEsIDE2MiwgMzYsIDMsIDI0MCwgMjIzLCAzNiwgMywgMjQwLCAyMDMsIDM2LCAzLCAyNDEsIAorICAgIDIzOSwgMzYsIDMsIDI0MSwgMjIxLCAzNiwgMywgMjQyLCAzNywgMzYsIDMsIDI0MSwgNjksIDM2LCAzLCAyNDEsIDU0LCAzNiwgCisgICAgMywgMjQxLCAyNDcsIDM2LCAzLCAyMzMsIDIzMiwgMzYsIDMsIDIzMywgMjMxLCAzNiwgMywgMjMzLCAyMjYsIDM2LCAzLCAKKyAgICAyMzMsIDIyNSwgMzYsIDMsIDIzMywgMjIyLCAzNiwgMywgMjMzLCAyMjEsIDM2LCAzLCAyMzMsIDIyOCwgMzYsIDMsIDIzMywgCisgICAgMjI3LCAzNiwgMywgMjMzLCAyMzAsIDM2LCAzLCAyMzMsIDIyNCwgMzYsIDMsIDIzMywgMjIzLCAzNiwgMywgMjMzLCAyMjksIAorICAgIDM2LCAzLCAyMTksIDIzMiwgMTc1LCAxMTYsIDUsIDIxMSwgNjgsIDE3NSwgMTE2LCA1LCAyMjMsIDE1NiwgMTc1LCAxMTYsIAorICAgIDUsIDIyMywgNzksIDk4LCAxLCAyMTUsIDI4LCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMTc2LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzNCwgMjM0LCAxMzMsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyMzQsIDI5LCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMjM0LCAKKyAgICAxMDYsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyMjksIDUsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyNTEsIDM0LCA2OSwgCisgICAgMTE2LCA1LCAyNDksIDIzNCwgMjUwLCAxNTgsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyNDksIDIzOSwgNjksIDExNiwgNSwgCisgICAgMjQ5LCAyMzQsIDI1MCwgODcsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyMjcsIDEzNSwgNjksIDExNiwgNSwgMjQ5LCAyMzQsIAorICAgIDI0OCwgMjIyLCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMjE1LCAxNDUsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyNDcsIDE0NiwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzQsIDIxNSwgMTQwLCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMTk3LCA2OSwgMTE2LCA1LCAKKyAgICAyNDksIDIzNCwgMjE3LCAxMDYsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyMTYsIDIwOSwgNjksIDExNiwgNSwgMjQ5LCAyMzQsIAorICAgIDExMSwgNjksIDExNiwgNSwgMjQ5LCAyMzQsIDIxNiwgMTU3LCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMjI4LCA3NSwgNjksIAorICAgIDExNiwgNSwgMjQ5LCAyMzQsIDI1MiwgMTkyLCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMjI1LCAxNDgsIDY5LCAxMTYsIDUsIAorICAgIDI0OSwgMjM0LCAyMjUsIDE3LCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMjI1LCAxMjIsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAKKyAgICAyMzAsIDE2MiwgNjksIDExNiwgNSwgMjQ5LCAyMzQsIDIxMCwgMjQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzNCwgMjIyLCAyMTIsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyMzIsIDE1NywgNjksIDExNiwgNSwgMjQ5LCAyMzQsIDIxMywgMTM4LCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzNCwgMjIwLCAxMDMsIDY5LCAxMTYsIDUsIDI0OSwgMjM0LCAyMTgsIDIyNCwgNjksIDExNiwgNSwgMjQ5LCAKKyAgICAyMzQsIDIwNiwgNjksIDExNiwgNSwgMjQ5LCAyMzQsIDE2MiwgNjksIDExNiwgNSwgMjQ5LCAyMzQsIDIzMywgMTM2LCA2OSwgCisgICAgMjUsIDUsIDI0OSwgMjM0LCAyMjQsIDg5LCA2OSwgMjM1LCAyNDQsIDI1LCA1LCAyNDksIDIzNCwgMjI0LCAzMSwgNjksIAorICAgIDIzNSwgMjQ0LCAyNSwgNSwgMjQ5LCAyMzQsIDIyMiwgMTAxLCA2OSwgMjM1LCAyNDQsIDI1LCA1LCAyNDksIDIzNCwgMjIyLCAKKyAgICA5NCwgNjksIDIzNSwgMjQ0LCAyNSwgNSwgMjQ5LCAyMzQsIDIyNCwgNzAsIDY5LCAyNSwgNSwgMjI2LCAyMDUsIDY5LCAyNSwgCisgICAgNSwgMjU1LCAzNSwgMTQxLCAxLCAyNTIsIDAsIDIyOSwgNzgsIDE0MSwgMSwgMjUyLCAwLCAyMjksIDI4LCAxNDEsIDEsIAorICAgIDI1MiwgMCwgMjI4LCAyNDksIDE0MSwgMSwgMjUyLCAwLCAyMjksIDY1LCAxNDEsIDEsIDI1MiwgMCwgMjI5LCA1LCA1NiwgMSwgCisgICAgMjUyLCAwLCAyMjksIDc4LCA1NiwgMSwgMjUyLCAwLCAyMjksIDI4LCA1NiwgMSwgMjUyLCAwLCAyMjgsIDI0OSwgNTYsIDEsIAorICAgIDI1MiwgMCwgMjI5LCA2NSwgNTYsIDEsIDI1MiwgMCwgMjI5LCA1LCA1NiwgMSwgMjU0LCAxOTUsIDI1MCwgMTkxLCA1NiwgMSwgCisgICAgMjU0LCAxOTUsIDIxNSwgMTE5LCA1NiwgMSwgMjU0LCAxOTUsIDExMSwgNTYsIDEsIDI1NCwgMTk1LCAyMjYsIDEwNiwgNTgsIAorICAgIDEsIDI0NSwgMjEsIDI0NSwgMjAsIDI0OSwgMTgzLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDI0NSwgMjEsIDI0OSwgCisgICAgMTgzLCAxMzgsIDEzMCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTE1MDQwLDIwNDQgKzE1MDQyLDIwNDQgQEAKICAgICAzOTI1MSwgMzkyNTgsIDM5MjY1LCAzOTI3MiwgMzkyNzksIDM5Mjg1LCAzOTI5MSwgMzkyOTgsIDM5MzA1LCAzOTMxMiwgMCwgCiAgICAgMCwgMCwgMzkzMTksIDM5MzIyLCAzOTMyNSwgMzkzMjgsIDM5MzMzLCAzOTMzNiwgMzkzMzksIDM5MzQyLCAzOTM0NSwgCiAgICAgMzkzNDgsIDM5MzUxLCAzOTM1NSwgMzkzNTgsIDM5MzYxLCAzOTM2NCwgMzkzNjcsIDM5MzcwLCAzOTM3NSwgMzkzNzgsIAotICAgIDM5MzgxLCAzOTM4NCwgMzkzODcsIDM5MzkwLCAzOTM5NSwgMzkzOTgsIDM5NDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTQwNiwgMzk0MTEsIDM5NDE2LCAzOTQyMywgCi0gICAgMzk0MzEsIDM5NDM2LCAzOTQ0MSwgMzk0NDUsIDM5NDQ5LCAzOTQ1NCwgMzk0NjEsIDM5NDY4LCAzOTQ3MiwgMzk0NzcsIAotICAgIDM5NDgyLCAzOTQ4NywgMzk0OTIsIDM5NDk5LCAzOTUwNCwgMzk1MDksIDM5NTE0LCAzOTUyMywgMzk1MzAsIDM5NTM3LCAKLSAgICAzOTU0MSwgMzk1NDYsIDM5NTUyLCAzOTU1NywgMzk1NjQsIDM5NTczLCAzOTU4MiwgMzk1ODYsIDM5NTkwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTU5NCwgMzk1OTgsIDM5NjA2LCAzOTYxMCwgMzk2MTQsIAotICAgIDM5NjE5LCAzOTYyMywgMzk2MjcsIDM5NjMxLCAzOTYzMywgMzk2MzcsIDM5NjQxLCAzOTY0NSwgMzk2NTAsIDM5NjU0LCAKLSAgICAzOTY1OCwgMzk2NjYsIDM5NjY5LCAzOTY3MywgMzk2NzYsIDM5Njc5LCAzOTY4NSwgMzk2ODksIDM5NjkyLCAzOTY5OCwgCi0gICAgMzk3MDIsIDM5NzA2LCAzOTcxMCwgMzk3MTMsIDM5NzE3LCAzOTcyMCwgMzk3MjQsIDM5NzI2LCAzOTcyOSwgMzk3MzIsIAotICAgIDM5NzM2LCAzOTczOCwgMzk3NDIsIDM5NzQ1LCAzOTc0OCwgMzk3NTMsIDM5NzU4LCAzOTc2NSwgMzk3NjgsIDM5NzcxLCAKLSAgICAzOTc3NSwgMzk3ODAsIDM5NzgzLCAzOTc4NiwgMzk3ODksIDM5NzkzLCAzOTc5OCwgMzk4MDEsIDM5ODA0LCAzOTgwNiwgCi0gICAgMzk4MDksIDM5ODEyLCAzOTgxNSwgMzk4MTksIDM5ODI0LCAzOTgyNywgMzk4MzEsIDM5ODM1LCAzOTgzOSwgMzk4NDMsIAotICAgIDM5ODQ4LCAzOTg1NCwgMzk4NTksIDM5ODY0LCAzOTg3MCwgMzk4NzUsIDM5ODgwLCAzOTg4NCwgMzk4ODgsIDM5ODkzLCAKLSAgICAzOTg5NywgMzk5MDEsIDM5OTA0LCAzOTkwNiwgMzk5MTEsIDM5OTE3LCAzOTkyNCwgMzk5MzEsIDM5OTM4LCAzOTk0NSwgCi0gICAgMzk5NTIsIDM5OTU5LCAzOTk2NiwgMzk5NzMsIDM5OTgxLCAzOTk4OCwgMzk5OTYsIDQwMDAzLCA0MDAxMCwgNDAwMTgsIAotICAgIDQwMDI2LCA0MDAzMSwgNDAwMzYsIDQwMDQxLCA0MDA0NiwgNDAwNTEsIDQwMDU2LCA0MDA2MSwgNDAwNjYsIDQwMDcxLCAKLSAgICA0MDA3NiwgNDAwODIsIDQwMDg4LCA0MDA5NCwgNDAxMDAsIDQwMTA3LCA0MDExNSwgNDAxMjIsIDQwMTI4LCA0MDEzNCwgCi0gICAgNDAxNDAsIDQwMTQ2LCA0MDE1MiwgNDAxNTgsIDQwMTY0LCA0MDE3MCwgNDAxNzYsIDQwMTgzLCA0MDE5MCwgNDAxOTcsIAotICAgIDQwMjA0LCA0MDIxMiwgNDAyMjEsIDQwMjI5LCA0MDI0MCwgNDAyNDgsIDQwMjU2LCA0MDI2NSwgNDAyNzIsIDQwMjgxLCAKLSAgICA0MDI5MCwgNDAyOTgsIDQwMzA3LCAwLCAwLCAwLCAwLCAwLCAwLCA0MDMxNSwgNDAzMTcsIDQwMzIwLCA0MDMyMiwgNDAzMjUsIAotICAgIDQwMzI4LCA0MDMzMSwgNDAzMzYsIDQwMzQxLCA0MDM0NiwgNDAzNTEsIDQwMzU1LCA0MDM1OSwgNDAzNjMsIDQwMzY3LCAKLSAgICA0MDM3MiwgNDAzNzgsIDQwMzgzLCA0MDM4OSwgNDAzOTQsIDQwMzk5LCA0MDQwNCwgNDA0MTAsIDQwNDE1LCA0MDQyMSwgCi0gICAgNDA0MjcsIDQwNDMxLCA0MDQzNSwgNDA0NDAsIDQwNDQ1LCA0MDQ1MCwgNDA0NTUsIDQwNDYwLCA0MDQ2OCwgNDA0NzYsIAotICAgIDQwNDg0LCA0MDQ5MiwgNDA0OTksIDQwNTA3LCA0MDUxNCwgNDA1MjEsIDQwNTMwLCA0MDU0MiwgNDA1NDgsIDQwNTU0LCAKLSAgICA0MDU2MiwgNDA1NzAsIDQwNTc5LCA0MDU4OCwgNDA1OTYsIDQwNjA0LCA0MDYxMywgNDA2MjIsIDQwNjI3LCA0MDYzNSwgCi0gICAgNDA2NDAsIDQwNjQ1LCA0MDY1MSwgNDA2NTYsIDQwNjYyLCA0MDY2OSwgNDA2NzYsIDQwNjgxLCA0MDY4NywgNDA2OTIsIAotICAgIDQwNjk1LCA0MDY5OSwgNDA3MDIsIDQwNzA2LCA0MDcxMCwgNDA3MTQsIDQwNzIwLCA0MDcyNiwgNDA3MzIsIDQwNzM4LCAKLSAgICA0MDc0MiwgNDA3NDYsIDQwNzUwLCA0MDc1NCwgNDA3NjAsIDQwNzY2LCA0MDc3MCwgNDA3NzUsIDQwNzc5LCA0MDc4NCwgCi0gICAgNDA3ODksIDQwNzk0LCA0MDc5NywgNDA4MDEsIDQwODA0LCA0MDgwOCwgNDA4MTUsIDQwODIzLCA0MDgzNCwgNDA4NDUsIAotICAgIDQwODUwLCA0MDg1OSwgNDA4NjYsIDQwODc1LCA0MDg4NCwgNDA4ODgsIDQwODk0LCA0MDkwMiwgNDA5MDYsIDQwOTExLCAKLSAgICA0MDkxNiwgNDA5MjIsIDQwOTI4LCA0MDkzNCwgNDA5NDEsIDQwOTQ1LCA0MDk0OSwgNDA5NTQsIDQwOTU3LCA0MDk1OSwgCi0gICAgNDA5NjMsIDQwOTY3LCA0MDk3NSwgNDA5NzksIDQwOTgxLCA0MDk4MywgNDA5ODcsIDQwOTk1LCA0MTAwMCwgNDEwMDYsIAotICAgIDQxMDE2LCA0MTAyMywgNDEwMjgsIDQxMDMyLCA0MTAzNiwgNDEwNDAsIDQxMDQzLCA0MTA0NiwgNDEwNDksIDQxMDUzLCAKLSAgICA0MTA1NywgNDEwNjEsIDQxMDY1LCA0MTA2OSwgNDEwNzIsIDQxMDc2LCA0MTA4MCwgNDEwODMsIDQxMDg1LCA0MTA4OCwgCi0gICAgNDEwOTAsIDQxMDk0LCA0MTA5OCwgNDExMDAsIDQxMTA2LCA0MTEwOSwgNDExMTQsIDQxMTE4LCA0MTEyMiwgNDExMjQsIAotICAgIDQxMTI2LCA0MTEyOCwgNDExMzEsIDQxMTM1LCA0MTEzOSwgNDExNDMsIDQxMTQ3LCA0MTE1MSwgNDExNTcsIDQxMTYzLCAKLSAgICA0MTE2NSwgNDExNjcsIDQxMTY5LCA0MTE3MSwgNDExNzQsIDQxMTc2LCA0MTE4MCwgNDExODIsIDQxMTg2LCA0MTE4OSwgCi0gICAgNDExOTUsIDQxMTk5LCA0MTIwMywgNDEyMDYsIDQxMjA5LCA0MTIxMywgNDEyMTksIDQxMjIzLCA0MTIzMywgNDEyNDMsIAotICAgIDQxMjQ3LCA0MTI1MywgNDEyNTksIDQxMjYyLCA0MTI2NiwgNDEyNjksIDQxMjc0LCA0MTI3OCwgNDEyODQsIDQxMjg4LCAKLSAgICA0MTMwMCwgNDEzMDgsIDQxMzEyLCA0MTMxNiwgNDEzMjIsIDQxMzI2LCA0MTMyOSwgNDEzMzEsIDQxMzM0LCA0MTMzOCwgCi0gICAgNDEzNDIsIDQxMzQ5LCA0MTM1MywgNDEzNTcsIDQxMzYxLCA0MTM2NCwgNDEzNjksIDQxMzc0LCA0MTM3OSwgNDEzODQsIAotICAgIDQxMzg5LCA0MTM5NCwgNDE0MDIsIDQxNDEwLCA0MTQxNCwgNDE0MTgsIDQxNDIwLCA0MTQyNSwgNDE0MjksIDQxNDMzLCAKLSAgICA0MTQ0MSwgNDE0NDksIDQxNDU1LCA0MTQ2MSwgNDE0NzAsIDQxNDc5LCA0MTQ4NCwgNDE0ODksIDQxNDk3LCA0MTUwNSwgCi0gICAgNDE1MDcsIDQxNTA5LCA0MTUxNCwgNDE1MTksIDQxNTI1LCA0MTUzMSwgNDE1MzcsIDQxNTQzLCA0MTU0NywgNDE1NTEsIAotICAgIDQxNTU4LCA0MTU2NSwgNDE1NzEsIDQxNTc3LCA0MTU4NywgNDE1OTcsIDQxNjA1LCA0MTYxMywgNDE2MTUsIDQxNjE5LCAKLSAgICA0MTYyMywgNDE2MjgsIDQxNjMzLCA0MTY0MCwgNDE2NDcsIDQxNjUwLCA0MTY1MywgNDE2NTYsIDQxNjU5LCA0MTY2MiwgCi0gICAgNDE2NjcsIDQxNjcxLCA0MTY3NiwgNDE2ODEsIDQxNjg0LCA0MTY4NywgNDE2OTAsIDQxNjkzLCA0MTY5NiwgNDE3MDAsIAotICAgIDQxNzAzLCA0MTcwNiwgNDE3MDksIDQxNzEyLCA0MTcxNCwgNDE3MTYsIDQxNzE4LCA0MTcyMCwgNDE3MjgsIDQxNzM2LCAKLSAgICA0MTc0MiwgNDE3NDYsIDQxNzUyLCA0MTc2MiwgNDE3NjgsIDQxNzc0LCA0MTc4MCwgNDE3ODgsIDQxNzk2LCA0MTgwNywgCi0gICAgNDE4MTEsIDQxODE1LCA0MTgxNywgNDE4MjMsIDQxODI1LCA0MTgyNywgNDE4MjksIDQxODMxLCA0MTgzNywgNDE4NDAsIAotICAgIDQxODQ2LCA0MTg1MiwgNDE4NTYsIDQxODYwLCA0MTg2NCwgNDE4NjcsIDQxODcxLCA0MTg3NSwgNDE4NzcsIDQxODg2LCAKLSAgICA0MTg5NSwgNDE5MDAsIDQxOTA1LCA0MTkxMSwgNDE5MTcsIDQxOTIzLCA0MTkyNiwgNDE5MjksIDQxOTMyLCA0MTkzNSwgCi0gICAgNDE5MzcsIDQxOTQyLCA0MTk0NywgNDE5NTIsIDQxOTU4LCA0MTk2NCwgNDE5NzIsIDQxOTgwLCA0MTk4NiwgNDE5OTIsIAotICAgIDQxOTk4LCA0MjAwNCwgNDIwMTMsIDQyMDIyLCA0MjAzMSwgNDIwNDAsIDQyMDQ5LCA0MjA1OCwgNDIwNjcsIDQyMDc2LCAKLSAgICA0MjA4NSwgNDIwOTQsIDQyMTAyLCA0MjExNCwgNDIxMjQsIDQyMTM5LCA0MjE0MiwgNDIxNDcsIDQyMTUzLCA0MjE1OSwgCi0gICAgNDIxNjYsIDQyMTgwLCA0MjE5NSwgNDIyMDEsIDQyMjA3LCA0MjIxNCwgNDIyMjAsIDQyMjI4LCA0MjIzNCwgNDIyNDcsIAotICAgIDQyMjYxLCA0MjI2NiwgNDIyNzIsIDQyMjc5LCA0MjI4MiwgNDIyODUsIDQyMjg3LCA0MjI5MCwgNDIyOTMsIDQyMjk1LCAKLSAgICA0MjI5NywgNDIzMDEsIDQyMzA0LCA0MjMwNywgNDIzMTAsIDQyMzEzLCA0MjMxOCwgNDIzMjMsIDQyMzI4LCA0MjMzMywgCi0gICAgNDIzMzgsIDQyMzQxLCA0MjM0MywgNDIzNDUsIDQyMzQ3LCA0MjM1MSwgNDIzNTUsIDQyMzU5LCA0MjM2NSwgNDIzNzAsIAotICAgIDQyMzcyLCA0MjM3NCwgNDIzNzksIDQyMzg0LCA0MjM4OSwgNDIzOTQsIDQyMzk5LCA0MjQwNCwgNDI0MDYsIDQyNDA4LCAKLSAgICA0MjQxNywgNDI0MjEsIDQyNDI5LCA0MjQzOCwgNDI0NDAsIDQyNDQ1LCA0MjQ1MCwgNDI0NTgsIDQyNDYyLCA0MjQ2NCwgCi0gICAgNDI0NjgsIDQyNDcwLCA0MjQ3NCwgNDI0NzgsIDQyNDgyLCA0MjQ4NCwgNDI0ODYsIDQyNDg4LCA0MjQ5NSwgNDI1MDQsIAotICAgIDQyNTEzLCA0MjUyMiwgNDI1MzEsIDQyNTQwLCA0MjU0OSwgNDI1NTgsIDQyNTY3LCA0MjU3NSwgNDI1ODMsIDQyNTkyLCAKLSAgICA0MjYwMSwgNDI2MTAsIDQyNjE5LCA0MjYyNywgNDI2MzUsIDQyNjQ0LCA0MjY1MywgNDI2NjIsIDQyNjcyLCA0MjY4MSwgCi0gICAgNDI2OTEsIDQyNzAwLCA0MjcxMCwgNDI3MTksIDQyNzI5LCA0MjczOSwgNDI3NDgsIDQyNzU4LCA0Mjc2NywgNDI3NzcsIAotICAgIDQyNzg2LCA0Mjc5NiwgNDI4MDUsIDQyODE0LCA0MjgyMywgNDI4MzIsIDQyODQxLCA0Mjg1MSwgNDI4NjAsIDQyODY5LCAKLSAgICA0Mjg3OCwgNDI4ODgsIDQyODk3LCA0MjkwNiwgNDI5MTUsIDQyOTI0LCA0MjkzNCwgNDI5NDQsIDQyOTUzLCA0Mjk2MiwgCi0gICAgNDI5NzAsIDQyOTc4LCA0Mjk4NSwgNDI5OTMsIDQzMDAyLCA0MzAxMywgNDMwMjIsIDQzMDMxLCA0MzA0MCwgNDMwNDcsIAotICAgIDQzMDU0LCA0MzA2MSwgNDMwNzAsIDQzMDc5LCA0MzA4OCwgNDMwOTcsIDQzMTA0LCA0MzEwOSwgNDMxMTgsIDQzMTIzLCAKLSAgICA0MzEyNiwgNDMxMzQsIDQzMTM3LCA0MzE0MiwgNDMxNDcsIDQzMTUwLCA0MzE1MywgNDMxNjEsIDQzMTY0LCA0MzE2OSwgCi0gICAgNDMxNzIsIDQzMTc5LCA0MzE4NCwgNDMxOTIsIDQzMTk1LCA0MzE5OCwgNDMyMDEsIDQzMjA2LCA0MzIxMSwgNDMyMTQsIAotICAgIDQzMjE3LCA0MzIyNSwgNDMyMjgsIDQzMjM1LCA0MzI0MiwgNDMyNDYsIDQzMjUwLCA0MzI1NSwgNDMyNjAsIDQzMjY2LCAKLSAgICA0MzI3MSwgNDMyNzcsIDQzMjgzLCA0MzI4OCwgNDMyOTQsIDQzMzAyLCA0MzMwOCwgNDMzMTYsIDQzMzI0LCA0MzMzMCwgCi0gICAgNDMzMzgsIDQzMzQ2LCA0MzM1NSwgNDMzNjMsIDQzMzY5LCA0MzM3NywgNDMzODYsIDQzMzk0LCA0MzM5OCwgNDM0MDMsIAotICAgIDQzNDE2LCA0MzQyOSwgNDM0MzMsIDQzNDM3LCA0MzQ0MSwgNDM0NDUsIDQzNDU1LCA0MzQ1OSwgNDM0NjQsIDQzNDY5LCAKLSAgICA0MzQ3NCwgNDM0NzksIDQzNDg0LCA0MzQ4OSwgNDM0OTksIDQzNTA5LCA0MzUxNywgNDM1MjcsIDQzNTM3LCA0MzU0NSwgCi0gICAgNDM1NTUsIDQzNTY1LCA0MzU3MywgNDM1ODMsIDQzNTkzLCA0MzYwMSwgNDM2MDksIDQzNjE5LCA0MzYyOSwgNDM2MzIsIAotICAgIDQzNjM1LCA0MzYzOCwgNDM2NDMsIDQzNjQ3LCA0MzY1MywgNDM2NjAsIDQzNjY3LCA0MzY3NSwgNDM2ODIsIDQzNjg2LCAKLSAgICA0MzY5MCwgNDM2OTQsIDQzNjk4LCA0MzcwMCwgNDM3MDQsIDQzNzA4LCA0MzcxMywgNDM3MTgsIDQzNzI1LCA0MzczMiwgCi0gICAgNDM3MzUsIDQzNzQyLCA0Mzc0NCwgNDM3NDYsIDQzNzUwLCA0Mzc1NCwgNDM3NTksIDQzNzY1LCA0Mzc3MSwgNDM3NzcsIAotICAgIDQzNzgzLCA0Mzc5MiwgNDM4MDEsIDQzODEwLCA0MzgxNCwgNDM4MTYsIDQzODIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0MzgyNywgNDM4MzEsIDQzODM4LCA0Mzg0NSwgNDM4NTIsIDQzODU5LCA0Mzg2MywgNDM4NjcsIAotICAgIDQzODcxLCA0Mzg3NSwgNDM4ODAsIDQzODg2LCA0Mzg5MSwgNDM4OTcsIDQzOTAzLCA0MzkwOSwgNDM5MTUsIDQzOTIzLCAKLSAgICA0MzkzMCwgNDM5MzcsIDQzOTQ0LCA0Mzk1MSwgNDM5NTYsIDQzOTYyLCA0Mzk3MSwgNDM5NzUsIDQzOTgyLCA0Mzk4NiwgCi0gICAgNDM5OTAsIDQzOTk2LCA0NDAwMiwgNDQwMDgsIDQ0MDE0LCA0NDAxOCwgNDQwMjIsIDQ0MDI1LCA0NDAyOCwgNDQwMzIsIAotICAgIDQ0MDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0NDA0NiwgNDQwNDksIDQ0MDUzLCA0NDA1NywgNDQwNjMsIDQ0MDY5LCA0NDA3NSwgNDQwODMsIDQ0MDkwLCAKLSAgICA0NDA5NCwgNDQxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ0MTA3LCA0NDExMCwgNDQxMTMsIDQ0MTE2LCA0NDExOSwgNDQxMjIsIDQ0MTI1LCA0NDEyOCwgNDQxMzEsIDQ0MTM0LCAKLSAgICA0NDEzOCwgNDQxNDIsIDQ0MTQ2LCA0NDE1MCwgNDQxNTQsIDQ0MTU4LCA0NDE2MiwgNDQxNjYsIDQ0MTcwLCA0NDE3NCwgCi0gICAgNDQxNzgsIDQ0MTgxLCA0NDE4NCwgNDQxODcsIDQ0MTkwLCA0NDE5MywgNDQxOTYsIDQ0MTk5LCA0NDIwMiwgNDQyMDUsIAotICAgIDQ0MjA5LCA0NDIxMywgNDQyMTcsIDQ0MjIxLCA0NDIyNSwgNDQyMjksIDQ0MjMzLCA0NDIzNywgNDQyNDEsIDQ0MjQ1LCAKLSAgICA0NDI0OSwgNDQyNTUsIDQ0MjYxLCA0NDI2NywgNDQyNzQsIDQ0MjgxLCA0NDI4OCwgNDQyOTUsIDQ0MzAyLCA0NDMwOSwgCi0gICAgNDQzMTYsIDQ0MzIzLCA0NDMzMCwgNDQzMzcsIDQ0MzQ0LCA0NDM1MSwgNDQzNTgsIDQ0MzY1LCA0NDM3MiwgNDQzNzksIAotICAgIDQ0Mzg2LCA0NDM5MSwgNDQzOTcsIDQ0NDAzLCA0NDQwOSwgNDQ0MTQsIDQ0NDIwLCA0NDQyNiwgNDQ0MzIsIDQ0NDM3LCAKLSAgICA0NDQ0MywgNDQ0NDksIDQ0NDU0LCA0NDQ1OSwgNDQ0NjUsIDQ0NDcwLCA0NDQ3NiwgNDQ0ODIsIDQ0NDg3LCA0NDQ5MywgCi0gICAgNDQ0OTksIDQ0NTA0LCA0NDUxMCwgNDQ1MTYsIDQ0NTIyLCA0NDUyOCwgNDQ1MzQsIDQ0NTM5LCA0NDU0NSwgNDQ1NTEsIAotICAgIDQ0NTU3LCA0NDU2MiwgNDQ1NjgsIDQ0NTc0LCA0NDU4MCwgNDQ1ODUsIDQ0NTkxLCA0NDU5NywgNDQ2MDIsIDQ0NjA3LCAKLSAgICA0NDYxMywgNDQ2MTgsIDQ0NjI0LCA0NDYzMCwgNDQ2MzUsIDQ0NjQxLCA0NDY0NywgNDQ2NTIsIDQ0NjU4LCA0NDY2NCwgCi0gICAgNDQ2NzAsIDQ0Njc2LCA0NDY4MiwgNDQ2ODcsIDQ0NjkzLCA0NDY5OSwgNDQ3MDUsIDQ0NzEwLCA0NDcxNiwgNDQ3MjIsIAotICAgIDQ0NzI4LCA0NDczMywgNDQ3MzksIDQ0NzQ1LCA0NDc1MCwgNDQ3NTUsIDQ0NzYxLCA0NDc2NiwgNDQ3NzIsIDQ0Nzc4LCAKLSAgICA0NDc4MywgNDQ3ODksIDQ0Nzk1LCA0NDgwMCwgNDQ4MDYsIDQ0ODEyLCA0NDgxOCwgNDQ4MjQsIDQ0ODMwLCA0NDgzNCwgCi0gICAgNDQ4MzksIDQ0ODQ0LCA0NDg0OSwgNDQ4NTQsIDQ0ODU5LCA0NDg2NCwgNDQ4NjksIDQ0ODc0LCA0NDg3OSwgNDQ4ODQsIAotICAgIDQ0ODg4LCA0NDg5MiwgNDQ4OTYsIDQ0OTAwLCA0NDkwNCwgNDQ5MDgsIDQ0OTEyLCA0NDkxNiwgNDQ5MjAsIDQ0OTI1LCAKLSAgICA0NDkzMCwgNDQ5MzUsIDQ0OTQwLCA0NDk0NSwgNDQ5NTAsIDQ0OTU5LCA0NDk2OCwgNDQ5NzcsIDQ0OTg2LCA0NDk5NSwgCi0gICAgNDUwMDQsIDQ1MDEzLCA0NTAyMiwgNDUwMjksIDQ1MDM3LCA0NTA0NSwgNDUwNTIsIDQ1MDU5LCA0NTA2NywgNDUwNzUsIAotICAgIDQ1MDgyLCA0NTA4OSwgNDUwOTcsIDQ1MTA1LCA0NTExMiwgNDUxMTksIDQ1MTI3LCA0NTEzNSwgNDUxNDIsIDQ1MTQ5LCAKLSAgICA0NTE1NywgNDUxNjYsIDQ1MTc1LCA0NTE4MywgNDUxOTIsIDQ1MjAxLCA0NTIwOCwgNDUyMTUsIDQ1MjIzLCA0NTIzMiwgCi0gICAgNDUyNDEsIDQ1MjQ5LCA0NTI1OCwgNDUyNjcsIDQ1Mjc0LCA0NTI4MSwgNDUyOTAsIDQ1Mjk5LCA0NTMwNywgNDUzMTUsIAotICAgIDQ1MzI0LCA0NTMzMywgNDUzNDAsIDQ1MzQ3LCA0NTM1NiwgNDUzNjUsIDQ1MzczLCA0NTM4MSwgNDUzOTAsIDQ1Mzk5LCAKLSAgICA0NTQwNiwgNDU0MTMsIDQ1NDIyLCA0NTQzMSwgNDU0MzksIDQ1NDQ4LCA0NTQ1NywgNDU0NjUsIDQ1NDc1LCA0NTQ4NSwgCi0gICAgNDU0OTUsIDQ1NTA1LCA0NTUxNCwgNDU1MjMsIDQ1NTMyLCA0NTU0MSwgNDU1NDgsIDQ1NTU2LCA0NTU2NCwgNDU1NzIsIAotICAgIDQ1NTgwLCA0NTU4NSwgNDU1OTAsIDQ1NTk5LCA0NTYwNywgNDU2MTQsIDQ1NjIzLCA0NTYzMSwgNDU2MzgsIDQ1NjQ3LCAKLSAgICA0NTY1NSwgNDU2NjIsIDQ1NjcxLCA0NTY3OSwgNDU2ODYsIDQ1Njk1LCA0NTcwMywgNDU3MTAsIDQ1NzE5LCA0NTcyNywgCi0gICAgNDU3MzQsIDQ1NzQzLCA0NTc1MSwgNDU3NTgsIDQ1NzY3LCA0NTc3NSwgNDU3ODIsIDQ1NzkxLCA0NTc5OSwgNDU4MDYsIAotICAgIDQ1ODE1LCA0NTgyNCwgNDU4MzMsIDQ1ODQyLCA0NTg1NiwgNDU4NzAsIDQ1ODc3LCA0NTg4MiwgNDU4ODcsIDQ1ODkyLCAKLSAgICA0NTg5NywgNDU5MDIsIDQ1OTA3LCA0NTkxMiwgNDU5MTcsIDQ1OTI1LCA0NTkzMywgNDU5NDEsIDQ1OTQ5LCA0NTk1NCwgCi0gICAgNDU5NjEsIDQ1OTY4LCA0NTk3NSwgNDU5ODAsIDQ1OTg4LCA0NTk5NSwgNDYwMDMsIDQ2MDA3LCA0NjAxNCwgNDYwMjAsIAotICAgIDQ2MDI3LCA0NjAzMSwgNDYwMzcsIDQ2MDQzLCA0NjA0OSwgNDYwNTMsIDQ2MDU2LCA0NjA2MCwgNDYwNjQsIDQ2MDcxLCAKLSAgICA0NjA3NywgNDYwODMsIDQ2MDg5LCA0NjA5NSwgNDYxMDksIDQ2MTE5LCA0NjEzMywgNDYxNDcsIDQ2MTUzLCA0NjE2MywgCi0gICAgNDYxNzcsIDQ2MTgwLCA0NjE4MywgNDYxOTAsIDQ2MTk4LCA0NjIwMywgNDYyMDgsIDQ2MjE2LCA0NjIyOCwgNDYyNDAsIAotICAgIDQ2MjQ4LCA0NjI1MiwgNDYyNTYsIDQ2MjU5LCA0NjI2MiwgNDYyNjYsIDQ2MjcwLCA0NjI3MywgNDYyNzYsIDQ2MjgxLCAKLSAgICA0NjI4NiwgNDYyOTIsIDQ2Mjk4LCA0NjMwMywgNDYzMDgsIDQ2MzE0LCA0NjMyMCwgNDYzMjUsIDQ2MzMwLCA0NjMzNSwgCi0gICAgNDYzNDAsIDQ2MzQ2LCA0NjM1MiwgNDYzNTcsIDQ2MzYyLCA0NjM2OCwgNDYzNzQsIDQ2Mzc5LCA0NjM4NCwgNDYzODcsIAotICAgIDQ2MzkwLCA0NjM5OSwgNDY0MDEsIDQ2NDAzLCA0NjQwNiwgNDY0MTAsIDQ2NDE2LCA0NjQxOCwgNDY0MjEsIDQ2NDI4LCAKLSAgICA0NjQzNSwgNDY0NDMsIDQ2NDUxLCA0NjQ2MSwgNDY0NzUsIDQ2NDgwLCA0NjQ4NSwgNDY0ODksIDQ2NDk0LCA0NjUwMiwgCi0gICAgNDY1MTAsIDQ2NTE5LCA0NjUyOCwgNDY1MzcsIDQ2NTQ2LCA0NjU1MSwgNDY1NTYsIDQ2NTYyLCA0NjU2OCwgNDY1NzQsIAotICAgIDQ2NTgwLCA0NjU4MywgNDY1ODksIDQ2NTk1LCA0NjYwNSwgNDY2MTUsIDQ2NjIzLCA0NjYzMSwgNDY2NDAsIDQ2NjQ5LCAKLSAgICA0NjY1MywgNDY2NjEsIDQ2NjY5LCA0NjY3NywgNDY2ODUsIDQ2Njk0LCA0NjcwMywgNDY3MTIsIDQ2NzIxLCA0NjcyNiwgCi0gICAgNDY3MzEsIDQ2NzM2LCA0Njc0MSwgNDY3NDYsIDQ2NzUyLCA0Njc1OCwgNDY3NjMsIDQ2NzY5LCA0Njc3MSwgNDY3NzMsIAotICAgIDQ2Nzc1LCA0Njc3NywgNDY3ODAsIDQ2NzgzLCA0Njc4NSwgNDY3ODcsIDQ2Nzg5LCA0Njc5MywgNDY3OTcsIDQ2Nzk5LCAKLSAgICA0NjgwMSwgNDY4MDQsIDQ2ODA3LCA0NjgxMSwgNDY4MTcsIDQ2ODIzLCA0NjgyNSwgNDY4MzIsIDQ2ODM2LCA0Njg0MSwgCi0gICAgNDY4NDYsIDQ2ODQ4LCA0Njg1OCwgNDY4NjQsIDQ2ODcwLCA0Njg3NiwgNDY4ODIsIDQ2ODg4LCA0Njg5NCwgNDY4OTksIAotICAgIDQ2OTAyLCA0NjkwNSwgNDY5MDgsIDQ2OTEwLCA0NjkxMiwgNDY5MTYsIDQ2OTIwLCA0NjkyNSwgNDY5MzAsIDQ2OTM1LCAKLSAgICA0NjkzOCwgNDY5NDIsIDQ2OTQ3LCA0Njk1MCwgNDY5NTQsIDQ2OTU5LCA0Njk2NCwgNDY5NjksIDQ2OTc0LCA0Njk3OSwgCi0gICAgNDY5ODQsIDQ2OTg5LCA0Njk5NCwgNDY5OTksIDQ3MDA0LCA0NzAwOSwgNDcwMTQsIDQ3MDIwLCA0NzAyNiwgNDcwMzIsIAotICAgIDQ3MDM0LCA0NzAzNywgNDcwMzksIDQ3MDQyLCA0NzA0NCwgNDcwNDYsIDQ3MDQ4LCA0NzA1MCwgNDcwNTIsIDQ3MDU0LCAKLSAgICA0NzA1NiwgNDcwNTgsIDQ3MDYwLCA0NzA2MiwgNDcwNjQsIDQ3MDY2LCA0NzA2OCwgNDcwNzAsIDQ3MDcyLCA0NzA3NCwgCi0gICAgNDcwNzYsIDQ3MDgxLCA0NzA4NiwgNDcwOTEsIDQ3MDk2LCA0NzEwMSwgNDcxMDYsIDQ3MTExLCA0NzExNiwgNDcxMjEsIAotICAgIDQ3MTI2LCA0NzEzMSwgNDcxMzYsIDQ3MTQxLCA0NzE0NiwgNDcxNTEsIDQ3MTU2LCA0NzE2MSwgNDcxNjYsIDQ3MTcxLCAKLSAgICA0NzE3NiwgNDcxODAsIDQ3MTg0LCA0NzE4OCwgNDcxOTQsIDQ3MjAwLCA0NzIwNSwgNDcyMTAsIDQ3MjE1LCA0NzIyMCwgCi0gICAgNDcyMjUsIDQ3MjMwLCA0NzIzOCwgNDcyNDYsIDQ3MjU0LCA0NzI2MiwgNDcyNzAsIDQ3Mjc4LCA0NzI4NiwgNDcyOTQsIAotICAgIDQ3MzAwLCA0NzMwNSwgNDczMTAsIDQ3MzE1LCA0NzMxOCwgNDczMjIsIDQ3MzI2LCA0NzMzMCwgNDczMzQsIDQ3MzM4LCAKLSAgICA0NzM0MiwgNDczNDksIDQ3MzU2LCA0NzM2NCwgNDczNzIsIDQ3Mzc3LCA0NzM4MiwgNDczODksIDQ3Mzk2LCA0NzQwMywgCi0gICAgNDc0MTAsIDQ3NDEzLCA0NzQxNiwgNDc0MjEsIDQ3NDIzLCA0NzQyNywgNDc0MzIsIDQ3NDM0LCA0NzQzNiwgNDc0MzgsIAotICAgIDQ3NDQwLCA0NzQ0NSwgNDc0NDgsIDQ3NDUwLCA0NzQ1NSwgNDc0NjIsIDQ3NDY5LCA0NzQ3MiwgNDc0NzYsIDQ3NDgxLCAKLSAgICA0NzQ4NiwgNDc0OTQsIDQ3NTAwLCA0NzUwNiwgNDc1MTgsIDQ3NTI1LCA0NzUzMiwgNDc1MzcsIDQ3NTQyLCA0NzU0OCwgCi0gICAgNDc1NTEsIDQ3NTU0LCA0NzU1OSwgNDc1NjEsIDQ3NTY1LCA0NzU2NywgNDc1NjksIDQ3NTcxLCA0NzU3MywgNDc1NzUsIAotICAgIDQ3NTc3LCA0NzU4MiwgNDc1ODQsIDQ3NTg2LCA0NzU4OCwgNDc1OTAsIDQ3NTk0LCA0NzU5NiwgNDc1OTksIDQ3NjA0LCAKLSAgICA0NzYwOSwgNDc2MTQsIDQ3NjE5LCA0NzYyNSwgNDc2MzEsIDQ3NjMzLCA0NzYzNiwgNDc2NDMsIDQ3NjUwLCA0NzY1NywgCi0gICAgNDc2NjQsIDQ3NjY4LCA0NzY3MiwgNDc2NzQsIDQ3Njc2LCA0NzY4MCwgNDc2ODYsIDQ3NjkxLCA0NzY5MywgNDc2OTcsIAotICAgIDQ3NzA2LCA0NzcxNCwgNDc3MjIsIDQ3NzI4LCA0NzczNCwgNDc3MzksIDQ3NzQ1LCA0Nzc1MCwgNDc3NTMsIDQ3NzY3LCAKLSAgICA0Nzc3MCwgNDc3NzUsIDQ3NzgwLCA0Nzc4NiwgNDc3OTYsIDQ3Nzk4LCA0NzgwNCwgNDc4MTAsIDQ3ODE0LCA0NzgyMSwgCi0gICAgNDc4MjUsIDQ3ODI3LCA0NzgyOSwgNDc4MzMsIDQ3ODM5LCA0Nzg0NCwgNDc4NTAsIDQ3ODUyLCA0Nzg1OCwgNDc4NjAsIAotICAgIDQ3ODY2LCA0Nzg2OCwgNDc4NzAsIDQ3ODc1LCA0Nzg3NywgNDc4ODEsIDQ3ODg2LCA0Nzg4OCwgNDc4OTMsIDQ3ODk4LCAKLSAgICA0NzkwMiwgNDc5MDksIDAsIDQ3OTE5LCA0NzkyNSwgNDc5MjgsIDQ3OTM0LCA0NzkzNywgNDc5NDIsIDQ3OTQ3LCA0Nzk1MSwgCi0gICAgNDc5NTMsIDQ3OTU1LCA0Nzk1OSwgNDc5NjMsIDQ3OTY3LCA0Nzk3MSwgNDc5NzYsIDQ3OTc4LCA0Nzk4MywgNDc5ODYsIAotICAgIDQ3OTg5LCA0Nzk5MiwgNDc5OTYsIDQ4MDAwLCA0ODAwNSwgNDgwMDksIDQ4MDE0LCA0ODAxOSwgNDgwMjMsIDQ4MDI4LCAKLSAgICA0ODAzNCwgNDgwMzcsIDQ4MDQzLCA0ODA0OCwgNDgwNTIsIDQ4MDU3LCA0ODA2MywgNDgwNjksIDQ4MDc2LCA0ODA4MiwgCi0gICAgNDgwODksIDQ4MDk2LCA0ODA5OCwgNDgxMDUsIDQ4MTA5LCA0ODExNSwgNDgxMjEsIDQ4MTI2LCA0ODEzMiwgNDgxMzYsIAotICAgIDQ4MTQxLCA0ODE0NCwgNDgxNDksIDQ4MTU1LCA0ODE2MiwgNDgxNzAsIDQ4MTc3LCA0ODE4NiwgNDgxOTYsIDQ4MjAzLCAKLSAgICA0ODIwOSwgNDgyMTMsIDQ4MjIwLCA0ODIyNSwgNDgyMzQsIDQ4MjM3LCA0ODI0MCwgNDgyNDksIDQ4MjU5LCA0ODI2NiwgCi0gICAgNDgyNjgsIDQ4Mjc0LCA0ODI3OSwgNDgyODEsIDQ4Mjg0LCA0ODI4OCwgNDgyOTYsIDQ4MzA1LCA0ODMwOCwgNDgzMTMsIAotICAgIDQ4MzE4LCA0ODMyNiwgNDgzMzQsIDQ4MzQyLCA0ODM1MCwgNDgzNTYsIDQ4MzYyLCA0ODM2OCwgNDgzNzYsIDQ4MzgxLCAKLSAgICA0ODM4NCwgNDgzODgsIDQ4MzkxLCA0ODQwMywgNDg0MTMsIDQ4NDI0LCA0ODQzMywgNDg0NDQsIDQ4NDU0LCA0ODQ2MywgCi0gICAgNDg0NjksIDQ4NDc3LCA0ODQ4MSwgNDg0ODksIDQ4NDkzLCA0ODUwMSwgNDg1MDgsIDQ4NTE1LCA0ODUyNCwgNDg1MzMsIAotICAgIDQ4NTQzLCA0ODU1MywgNDg1NjMsIDQ4NTczLCA0ODU4MiwgNDg1OTEsIDQ4NjAxLCA0ODYxMSwgNDg2MjAsIDQ4NjI5LCAKLSAgICA0ODYzNSwgNDg2NDEsIDQ4NjQ3LCA0ODY1MywgNDg2NTksIDQ4NjY1LCA0ODY3MSwgNDg2NzcsIDQ4NjgzLCA0ODY5MCwgCi0gICAgNDg2OTYsIDQ4NzAyLCA0ODcwOCwgNDg3MTQsIDQ4NzIwLCA0ODcyNiwgNDg3MzIsIDQ4NzM4LCA0ODc0NCwgNDg3NTEsIAotICAgIDQ4NzU4LCA0ODc2NSwgNDg3NzIsIDQ4Nzc5LCA0ODc4NiwgNDg3OTMsIDQ4ODAwLCA0ODgwNywgNDg4MTQsIDQ4ODIyLCAKLSAgICA0ODgyNywgNDg4MzAsIDQ4ODM0LCA0ODgzOCwgNDg4NDQsIDQ4ODQ3LCA0ODg1MywgNDg4NTksIDQ4ODY0LCA0ODg2OCwgCi0gICAgNDg4NzMsIDQ4ODc5LCA0ODg4NiwgNDg4ODksIDQ4ODk2LCA0ODkwMywgNDg5MDcsIDQ4OTE2LCA0ODkyNSwgNDg5MzAsIAotICAgIDQ4OTM2LCA0ODk0MSwgNDg5NDYsIDQ4OTUzLCA0ODk2MCwgNDg5NjgsIDQ4OTc2LCA0ODk4NSwgNDg5ODksIDQ4OTk4LCAKLSAgICA0OTAwMywgNDkwMDcsIDQ5MDE0LCA0OTAxOCwgNDkwMjUsIDQ5MDMzLCA0OTAzOCwgNDkwNDYsIDQ5MDUwLCA0OTA1NSwgCi0gICAgNDkwNTksIDQ5MDY0LCA0OTA2OCwgNDkwNzMsIDQ5MDc4LCA0OTA4NywgNDkwODksIDQ5MDkyLCA0OTA5NSwgNDkxMDIsIAotICAgIDQ5MTA5LCA0OTExNCwgNDkxMjIsIDQ5MTI4LCA0OTEzNCwgNDkxMzksIDQ5MTQyLCA0OTE0NywgNDkxNTIsIDQ5MTU3LCAKLSAgICA0OTE2NSwgNDkxNjksIDQ5MTc2LCA0OTE4NCwgNDkxOTIsIDQ5MTk3LCA0OTIwMiwgNDkyMDgsIDQ5MjEzLCA0OTIxOCwgCi0gICAgNDkyMjQsIDQ5MjI5LCA0OTIzMiwgNDkyMzYsIDQ5MjQwLCA0OTI0NywgNDkyNTYsIDQ5MjYxLCA0OTI3MCwgNDkyNzksIAotICAgIDQ5Mjg1LCA0OTI5MSwgNDkyOTYsIDQ5MzAxLCA0OTMwNiwgNDkzMTEsIDQ5MzE3LCA0OTMyMywgNDkzMzEsIDQ5MzM5LCAKLSAgICA0OTM0NSwgNDkzNTEsIDQ5MzU2LCA0OTM2MSwgNDkzNjgsIDQ5Mzc1LCA0OTM4MSwgNDkzODQsIDQ5Mzg3LCA0OTM5MSwgCi0gICAgNDkzOTUsIDQ5Mzk5LCA0OTQwNCwgNDk0MTAsIDQ5NDE2LCA0OTQyMywgNDk0MzAsIDQ5NDM1LCA0OTQzOSwgNDk0NDMsIAotICAgIDQ5NDQ3LCA0OTQ1MSwgNDk0NTUsIDQ5NDU5LCA0OTQ2MywgNDk0NjcsIDQ5NDcxLCA0OTQ3NSwgNDk0NzksIDQ5NDgzLCAKLSAgICA0OTQ4NywgNDk0OTEsIDQ5NDk1LCA0OTQ5OSwgNDk1MDMsIDQ5NTA3LCA0OTUxMSwgNDk1MTUsIDQ5NTE5LCA0OTUyMywgCi0gICAgNDk1MjcsIDQ5NTMxLCA0OTUzNSwgNDk1MzksIDQ5NTQzLCA0OTU0NywgNDk1NTEsIDQ5NTU1LCA0OTU1OSwgNDk1NjMsIAotICAgIDQ5NTY3LCA0OTU3MSwgNDk1NzUsIDQ5NTc5LCA0OTU4MywgNDk1ODcsIDQ5NTkxLCA0OTU5NSwgNDk1OTksIDQ5NjAzLCAKLSAgICA0OTYwNywgNDk2MTEsIDQ5NjE1LCA0OTYxOSwgNDk2MjMsIDQ5NjI3LCA0OTYzMSwgNDk2MzUsIDQ5NjM5LCA0OTY0MywgCi0gICAgNDk2NDcsIDQ5NjUxLCA0OTY1NSwgNDk2NTksIDQ5NjYzLCA0OTY2NywgNDk2NzEsIDQ5Njc1LCA0OTY3OSwgNDk2ODMsIAotICAgIDQ5Njg3LCA0OTY5MSwgNDk2OTUsIDQ5Njk5LCA0OTcwMywgNDk3MDcsIDQ5NzExLCA0OTcxNSwgNDk3MTksIDQ5NzIzLCAKLSAgICA0OTcyNywgNDk3MzEsIDQ5NzM1LCA0OTczOSwgNDk3NDMsIDQ5NzQ3LCA0OTc1MSwgNDk3NTUsIDQ5NzU5LCA0OTc2MywgCi0gICAgNDk3NjcsIDQ5NzcxLCA0OTc3NSwgNDk3NzksIDQ5NzgzLCA0OTc4NywgNDk3OTEsIDQ5Nzk1LCA0OTc5OSwgNDk4MDMsIAotICAgIDQ5ODA3LCA0OTgxMSwgNDk4MTUsIDQ5ODE5LCA0OTgyMywgNDk4MjcsIDQ5ODMxLCA0OTgzNSwgNDk4MzksIDQ5ODQzLCAKLSAgICA0OTg0NywgNDk4NTEsIDQ5ODU1LCA0OTg1OSwgNDk4NjMsIDQ5ODY3LCA0OTg3MSwgNDk4NzUsIDQ5ODc5LCA0OTg4MywgCi0gICAgNDk4ODcsIDQ5ODkxLCA0OTg5NSwgNDk4OTksIDQ5OTAzLCA0OTkwNywgNDk5MTEsIDQ5OTE1LCA0OTkxOSwgNDk5MjMsIAotICAgIDQ5OTI3LCA0OTkzMSwgNDk5MzUsIDQ5OTM5LCA0OTk0MywgNDk5NDcsIDQ5OTUxLCA0OTk1NSwgNDk5NTksIDQ5OTYzLCAKLSAgICA0OTk2NywgNDk5NzEsIDQ5OTc1LCA0OTk3OSwgNDk5ODMsIDQ5OTg3LCA0OTk5MSwgNDk5OTUsIDQ5OTk5LCA1MDAwMywgCi0gICAgNTAwMDcsIDUwMDExLCA1MDAxNSwgNTAwMTksIDUwMDIzLCA1MDAyNywgNTAwMzEsIDUwMDM1LCA1MDAzOSwgNTAwNDMsIAotICAgIDUwMDQ3LCA1MDA1MSwgNTAwNTUsIDUwMDU5LCA1MDA2MywgNTAwNjcsIDUwMDcxLCA1MDA3NSwgNTAwNzksIDUwMDgzLCAKLSAgICA1MDA4NywgNTAwOTEsIDUwMDk1LCA1MDA5OSwgNTAxMDMsIDUwMTA3LCA1MDExMSwgNTAxMTUsIDUwMTE5LCA1MDEyMywgCi0gICAgNTAxMjcsIDUwMTMxLCA1MDEzNSwgNTAxMzksIDUwMTQzLCA1MDE0NywgNTAxNTEsIDUwMTU1LCA1MDE1OSwgNTAxNjMsIAotICAgIDUwMTY3LCA1MDE3MSwgNTAxNzUsIDUwMTc5LCA1MDE4MywgNTAxODcsIDUwMTkxLCA1MDE5NSwgNTAxOTksIDUwMjAzLCAKLSAgICA1MDIwNywgNTAyMTEsIDUwMjE1LCA1MDIxOSwgNTAyMjMsIDUwMjI3LCA1MDIzMSwgNTAyMzUsIDUwMjM5LCA1MDI0MywgCi0gICAgNTAyNDcsIDUwMjUxLCA1MDI1NSwgNTAyNTksIDUwMjYzLCA1MDI2NywgNTAyNzEsIDUwMjc1LCA1MDI3OSwgNTAyODMsIAotICAgIDUwMjg3LCA1MDI5MSwgNTAyOTUsIDUwMjk5LCA1MDMwMywgNTAzMDcsIDUwMzExLCA1MDMxNSwgNTAzMTksIDUwMzIzLCAKLSAgICA1MDMyNywgNTAzMzEsIDUwMzM1LCA1MDMzOSwgNTAzNDMsIDUwMzQ3LCA1MDM1MSwgNTAzNTUsIDUwMzU5LCA1MDM2MywgCi0gICAgNTAzNjcsIDUwMzcxLCA1MDM3NSwgNTAzNzksIDUwMzgzLCA1MDM4NywgNTAzOTEsIDUwMzk1LCA1MDM5OSwgNTA0MDMsIAotICAgIDUwNDA3LCA1MDQxMSwgNTA0MTUsIDUwNDE5LCA1MDQyMywgNTA0MjcsIDUwNDMxLCA1MDQzNSwgNTA0MzksIDUwNDQzLCAKLSAgICA1MDQ0NywgNTA0NTEsIDUwNDU1LCA1MDQ1OSwgNTA0NjYsIDUwNDc0LCA1MDQ4MCwgNTA0ODYsIDUwNDkzLCA1MDUwMCwgCi0gICAgNTA1MDYsIDUwNTEyLCA1MDUxOCwgNTA1MjQsIDUwNTI5LCA1MDUzNCwgNTA1MzksIDUwNTQ0LCA1MDU1MCwgNTA1NTYsIAotICAgIDUwNTY0LCA1MDU3MSwgNTA1NzcsIDUwNTgzLCA1MDU5MSwgNTA2MDAsIDUwNjA3LCA1MDYxNywgNTA2MjgsIDUwNjMxLCAKLSAgICA1MDYzNCwgNTA2MzgsIDUwNjQyLCA1MDY0OSwgNTA2NTYsIDUwNjY3LCA1MDY3OCwgNTA2ODgsIDUwNjk4LCA1MDcwNSwgCi0gICAgNTA3MTIsIDUwNzE5LCA1MDcyNiwgNTA3MzcsIDUwNzQ4LCA1MDc1OSwgNTA3NzAsIDUwNzgwLCA1MDc5MCwgNTA4MDIsIAotICAgIDUwODE0LCA1MDgyNSwgNTA4MzYsIDUwODQ4LCA1MDg2MCwgNTA4NjksIDUwODc5LCA1MDg4OSwgNTA5MDAsIDUwOTExLCAKLSAgICA1MDkxOCwgNTA5MjUsIDUwOTMyLCA1MDkzOSwgNTA5NDksIDUwOTU5LCA1MDk2NywgNTA5NzUsIDUwOTgyLCA1MDk4OSwgCi0gICAgNTA5OTYsIDUxMDAzLCA1MTAxMCwgNTEwMTUsIDUxMDIwLCA1MTAyNiwgNTEwMzQsIDUxMDQ0LCA1MTA1NCwgNTEwNjQsIAotICAgIDUxMDc0LCA1MTA4NCwgNTEwOTQsIDUxMTA0LCA1MTExNCwgNTExMjQsIDUxMTM0LCA1MTE0NCwgNTExNTUsIDUxMTY2LCAKLSAgICA1MTE3NiwgNTExODYsIDUxMTk3LCA1MTIwOCwgNTEyMTgsIDUxMjI4LCA1MTIzOSwgNTEyNTAsIDUxMjYwLCA1MTI3MCwgCi0gICAgNTEyODEsIDUxMjkyLCA1MTMwOCwgNTEzMjcsIDUxMzQzLCA1MTM2MiwgNTEzNzgsIDUxMzk0LCA1MTQxMCwgNTE0MjYsIAotICAgIDUxNDM3LCA1MTQ0OSwgNTE0NjAsIDUxNDcyLCA1MTQ5MSwgNTE1MTAsIDUxNTE4LCA1MTUyNCwgNTE1MzEsIDUxNTM4LCAKLSAgICA1MTU0NSwgNTE1NTIsIDUxNTU3LCA1MTU2MywgNTE1NjgsIDUxNTczLCA1MTU3OSwgNTE1ODQsIDUxNTg5LCA1MTU5NCwgCi0gICAgNTE1OTksIDUxNjA0LCA1MTYxMSwgNTE2MTYsIDUxNjIzLCA1MTYyOCwgNTE2MzMsIDUxNjM3LCA1MTY0MSwgNTE2NDgsIAotICAgIDUxNjU1LCA1MTY2MiwgNTE2NjksIDUxNjc2LCA1MTY4MywgNTE2OTYsIDUxNzA5LCA1MTcyMiwgNTE3MzUsIDUxNzQzLCAKLSAgICA1MTc1MSwgNTE3NTcsIDUxNzYzLCA1MTc3MCwgNTE3NzcsIDUxNzg0LCA1MTc5MSwgNTE3OTUsIDUxODAwLCA1MTgwOCwgCi0gICAgNTE4MTYsIDUxODI0LCA1MTgzMSwgNTE4MzUsIDUxODQzLCA1MTg1MSwgNTE4NTUsIDUxODU5LCA1MTg2NCwgNTE4NzEsIAotICAgIDUxODc5LCA1MTg4NywgNTE5MDYsIDUxOTI1LCA1MTk0NCwgNTE5NjMsIDUxOTgyLCA1MjAwMSwgNTIwMjAsIDUyMDM5LCAKLSAgICA1MjA0NSwgNTIwNTIsIDUyMDYxLCA1MjA2OSwgNTIwNzcsIDUyMDgyLCA1MjA4NSwgNTIwODgsIDUyMDkzLCA1MjA5NiwgCi0gICAgNTIxMTUsIDUyMTIyLCA1MjEyOCwgNTIxMzQsIDUyMTM4LCA1MjE0MSwgNTIxNDQsIDUyMTQ3LCA1MjE1OSwgNTIxNzIsIAotICAgIDUyMTc5LCA1MjE4NiwgNTIxODksIDUyMTkzLCA1MjE5NiwgNTIyMDEsIDUyMjA2LCA1MjIxMSwgNTIyMTcsIDUyMjI2LCAKLSAgICA1MjIzMywgNTIyNDAsIDUyMjQ4LCA1MjI1NSwgNTIyNjIsIDUyMjY1LCA1MjI3MSwgNTIyNzcsIDUyMjgwLCA1MjI4MywgCi0gICAgNTIyODgsIDUyMjkzLCA1MjI5OSwgNTIzMDUsIDUyMzA5LCA1MjMxNCwgNTIzMjEsIDUyMzI1LCA1MjMzMSwgNTIzMzUsIAotICAgIDUyMzM5LCA1MjM0NywgNTIzNTksIDUyMzY4LCA1MjM3MiwgNTIzNzQsIDUyMzgzLCA1MjM5MiwgNTIzOTgsIDUyNDAxLCAKLSAgICA1MjQwNywgNTI0MTMsIDUyNDE4LCA1MjQyMywgNTI0MjgsIDUyNDMzLCA1MjQzOCwgNTI0NDMsIDUyNDQ1LCA1MjQ1MSwgCi0gICAgNTI0NTYsIDUyNDYzLCA1MjQ2NywgNTI0NzMsIDUyNDc2LCA1MjQ4MCwgNTI0ODcsIDUyNDk0LCA1MjQ5NiwgNTI0OTgsIAotICAgIDUyNTA0LCA1MjUxMCwgNTI1MTYsIDUyNTI1LCA1MjUzNCwgNTI1NDEsIDUyNTQ4LCA1MjU1NCwgNTI1NjAsIDUyNTY1LCAKLSAgICA1MjU3MCwgNTI1NzUsIDUyNTgxLCA1MjU4NywgNTI1OTIsIDUyNTk5LCA1MjYwMywgNTI2MDcsIDUyNjIwLCA1MjYzMywgCi0gICAgNTI2NDUsIDUyNjU0LCA1MjY2MCwgNTI2NjcsIDUyNjcyLCA1MjY3NywgNTI2ODIsIDUyNjg3LCA1MjY5MiwgNTI2OTQsIAotICAgIDUyNzAxLCA1MjcwOCwgNTI3MTUsIDUyNzIyLCA1MjcyOSwgNTI3MzcsIDUyNzQzLCA1Mjc0OCwgNTI3NTQsIDUyNzYwLCAKLSAgICA1Mjc2NiwgNTI3NzMsIDUyNzc5LCA1Mjc4NywgNTI3OTUsIDUyODAzLCA1MjgxMSwgNTI4MTgsIDUyODI0LCA1MjgzMCwgCi0gICAgNTI4MzksIDUyODQzLCA1Mjg1MiwgNTI4NjEsIDUyODcwLCA1Mjg3OCwgNTI4ODIsIDUyODg4LCA1Mjg5NSwgNTI5MDIsIAotICAgIDUyOTA2LCA1MjkxMiwgNTI5MTksIDUyOTI0LCA1MjkyOSwgNTI5MzUsIDUyOTQwLCA1Mjk0NSwgNTI5NTIsIDUyOTU5LCAKLSAgICA1Mjk2NCwgNTI5NjksIDUyOTc3LCA1Mjk4NSwgNTI5OTUsIDUzMDA1LCA1MzAxMiwgNTMwMTksIDUzMDIzLCA1MzAyNywgCi0gICAgNTMwMzksIDUzMDQ1LCA1MzA1MSwgNTMwNTYsIDUzMDYxLCA1MzA2OCwgNTMwNzUsIDUzMDgxLCA1MzA4NywgNTMwOTYsIAotICAgIDUzMTA0LCA1MzExMiwgNTMxMTksIDUzMTI2LCA1MzEzMywgNTMxMzksIDUzMTQ2LCA1MzE1MiwgNTMxNTksIDUzMTY2LCAKLSAgICA1MzE3MywgNTMxODAsIDUzMTg2LCA1MzE5MSwgNTMyMDAsIDUzMjEwLCA1MzIxNywgNTMyMjYsIDUzMjMyLCA1MzIzNywgCi0gICAgNTMyNDIsIDUzMjUyLCA1MzI1OCwgNTMyNjQsIDUzMjcwLCA1MzI3OCwgNTMyODMsIDUzMjkwLCA1MzI5NywgNTMzMDgsIAotICAgIDUzMzE1LCA1MzMyMiwgNTMzMjksIDUzMzM2LCA1MzM0MywgNTMzNTAsIDUzMzU3LCA1MzM2OSwgNTMzODEsIDUzMzkyLCAKLSAgICA1MzQwMywgNTM0MTYsIDUzNDI5LCA1MzQzNCwgNTM0MzksIDUzNDQ4LCA1MzQ1NywgNTM0NjQsIDUzNDcxLCA1MzQ4MCwgCi0gICAgNTM0ODksIDUzNDk3LCA1MzUwNSwgNTM1MTMsIDUzNTIxLCA1MzUzMSwgNTM1NDEsIDUzNTU1LCA1MzU2OSwgNTM1NzcsIAotICAgIDUzNTg1LCA1MzU5NywgNTM2MDksIDUzNjE3LCA1MzYyNSwgNTM2MzUsIDUzNjQ1LCA1MzY1MCwgNTM2NTUsIDUzNjY0LCAKLSAgICA1MzY3MywgNTM2NzgsIDUzNjgzLCA1MzY5MSwgNTM2OTcsIDUzNzAzLCA1MzcxMSwgNTM3MTksIDUzNzMyLCA1Mzc0NSwgCi0gICAgNTM3NDksIDUzNzUzLCA1Mzc2MCwgNTM3NjcsIDUzNzc0LCA1Mzc4MiwgNTM3OTAsIDUzNzk5LCA1MzgwOCwgNTM4MTQsIAotICAgIDUzODIwLCA1MzgyNywgNTM4MzQsIDUzODQxLCA1Mzg0OCwgNTM4NTcsIDUzODY2LCA1Mzg2OSwgNTM4NzIsIDUzODc3LCAKLSAgICA1Mzg4MiwgNTM4ODgsIDUzODk0LCA1MzkwMSwgNTM5MDgsIDUzOTE4LCA1MzkyOCwgNTM5MzUsIDUzOTQyLCA1Mzk1MCwgCi0gICAgNTM5NTgsIDUzOTY2LCA1Mzk3NCwgNTM5ODIsIDUzOTkwLCA1Mzk5NiwgNTQwMDIsIDU0MDA2LCA1NDAxMCwgNTQwMTcsIAotICAgIDU0MDI0LCA1NDAyOSwgNTQwMzQsIDU0MDM5LCA1NDA0NCwgNTQwNTAsIDU0MDY0LCA1NDA3MSwgNTQwNzgsIDU0MDgyLCAKLSAgICA1NDA4NCwgNTQwODYsIDU0MDkxLCA1NDA5NiwgNTQxMDEsIDU0MTA2LCA1NDExNCwgNTQxMjEsIDU0MTI4LCA1NDEzNiwgCi0gICAgNTQxNDgsIDU0MTU2LCA1NDE2NCwgNTQxNzUsIDU0MTc5LCA1NDE4MywgNTQxODksIDU0MTk3LCA1NDIxMCwgNTQyMTcsIAotICAgIDU0MjI0LCA1NDIzMSwgNTQyMzYsIDU0MjQzLCA1NDI1MiwgNTQyNjAsIDU0MjY2LCA1NDI3MiwgNTQyNzgsIDU0Mjg3LCAKLSAgICA1NDI5NiwgNTQzMDQsIDU0MzEzLCA1NDMxOCwgNTQzMjEsIDU0MzI2LCA1NDMzMiwgNTQzMzgsIDU0MzQ0LCA1NDM1MCwgCi0gICAgNTQzNTQsIDU0MzU3LCA1NDM2MSwgNTQzNjUsIDU0MzcxLCA1NDM3NywgNTQzODMsIDU0Mzg5LCA1NDM5MywgNTQzOTcsIAotICAgIDU0NDA0LCA1NDQxMSwgNTQ0MTgsIDU0NDI1LCA1NDQzMiwgNTQ0MzksIDU0NDQ5LCA1NDQ1OSwgNTQ0NjYsIDU0NDczLCAKLSAgICA1NDQ4MSwgNTQ0ODksIDU0NDkzLCA1NDQ5OCwgNTQ1MDMsIDU0NTA5LCA1NDUxNSwgNTQ1MTgsIDU0NTIxLCA1NDUyNCwgCi0gICAgNTQ1MjcsIDU0NTMxLCA1NDUzNiwgNTQ1NDEsIDU0NTQ2LCA1NDU1MSwgNTQ1NTYsIDU0NTYwLCA1NDU2NCwgNTQ1NjgsIAotICAgIDU0NTcyLCA1NDU3NiwgNTQ1ODAsIDU0NTg0LCA1NDU5MCwgNTQ1OTQsIDU0NjAwLCA1NDYwNSwgNTQ2MTIsIDU0NjIwLCAKLSAgICA1NDYyNywgNTQ2MzUsIDU0NjQyLCA1NDY1MCwgNTQ2NTksIDU0NjY2LCA1NDY3NiwgNTQ2ODcsIDU0NjkzLCA1NDcwMiwgCi0gICAgNTQ3MDgsIDU0NzE3LCA1NDcyNiwgNTQ3MzIsIDU0NzM4LCA1NDc0MiwgNTQ3NDYsIDU0NzU1LCA1NDc2NCwgNTQ3NzEsIAotICAgIDU0Nzc4LCA1NDc4NywgMCwgMCwgMCwgNTQ3OTYsIDU0ODAxLCA1NDgwNSwgNTQ4MDksIDU0ODE0LCA1NDgxOSwgNTQ4MjQsIAotICAgIDU0ODMyLCA1NDg0MCwgNTQ4NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM5MzgxLCAzOTM4NCwgMzkzODcsIDM5MzkwLCAzOTM5NSwgMzkzOTgsIDM5NDAxLCAzOTQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk0MTEsIDM5NDE2LCAzOTQyMSwgMzk0MjgsIAorICAgIDM5NDM2LCAzOTQ0MSwgMzk0NDYsIDM5NDUwLCAzOTQ1NCwgMzk0NTksIDM5NDY2LCAzOTQ3MywgMzk0NzcsIDM5NDgyLCAKKyAgICAzOTQ4NywgMzk0OTIsIDM5NDk3LCAzOTUwNCwgMzk1MDksIDM5NTE0LCAzOTUxOSwgMzk1MjgsIDM5NTM1LCAzOTU0MiwgCisgICAgMzk1NDYsIDM5NTUxLCAzOTU1NywgMzk1NjIsIDM5NTY5LCAzOTU3OCwgMzk1ODcsIDM5NTkxLCAzOTU5NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1OTksIDM5NjAzLCAzOTYxMSwgMzk2MTUsIDM5NjE5LCAKKyAgICAzOTYyNCwgMzk2MjgsIDM5NjMyLCAzOTYzNiwgMzk2MzgsIDM5NjQyLCAzOTY0NiwgMzk2NTAsIDM5NjU1LCAzOTY1OSwgCisgICAgMzk2NjMsIDM5NjcxLCAzOTY3NCwgMzk2NzgsIDM5NjgxLCAzOTY4NCwgMzk2OTAsIDM5Njk0LCAzOTY5NywgMzk3MDMsIAorICAgIDM5NzA3LCAzOTcxMSwgMzk3MTUsIDM5NzE4LCAzOTcyMiwgMzk3MjUsIDM5NzI5LCAzOTczMSwgMzk3MzQsIDM5NzM3LCAKKyAgICAzOTc0MSwgMzk3NDMsIDM5NzQ3LCAzOTc1MCwgMzk3NTMsIDM5NzU4LCAzOTc2MywgMzk3NzAsIDM5NzczLCAzOTc3NiwgCisgICAgMzk3ODAsIDM5Nzg1LCAzOTc4OCwgMzk3OTEsIDM5Nzk0LCAzOTc5OCwgMzk4MDMsIDM5ODA2LCAzOTgwOSwgMzk4MTEsIAorICAgIDM5ODE0LCAzOTgxNywgMzk4MjAsIDM5ODI0LCAzOTgyOSwgMzk4MzIsIDM5ODM2LCAzOTg0MCwgMzk4NDQsIDM5ODQ4LCAKKyAgICAzOTg1MywgMzk4NTksIDM5ODY0LCAzOTg2OSwgMzk4NzUsIDM5ODgwLCAzOTg4NSwgMzk4ODksIDM5ODkzLCAzOTg5OCwgCisgICAgMzk5MDIsIDM5OTA2LCAzOTkwOSwgMzk5MTEsIDM5OTE2LCAzOTkyMiwgMzk5MjksIDM5OTM2LCAzOTk0MywgMzk5NTAsIAorICAgIDM5OTU3LCAzOTk2NCwgMzk5NzEsIDM5OTc4LCAzOTk4NiwgMzk5OTMsIDQwMDAxLCA0MDAwOCwgNDAwMTUsIDQwMDIzLCAKKyAgICA0MDAzMSwgNDAwMzYsIDQwMDQxLCA0MDA0NiwgNDAwNTEsIDQwMDU2LCA0MDA2MSwgNDAwNjYsIDQwMDcxLCA0MDA3NiwgCisgICAgNDAwODEsIDQwMDg3LCA0MDA5MywgNDAwOTksIDQwMTA1LCA0MDExMiwgNDAxMjAsIDQwMTI3LCA0MDEzMywgNDAxMzksIAorICAgIDQwMTQ1LCA0MDE1MSwgNDAxNTcsIDQwMTYzLCA0MDE2OSwgNDAxNzUsIDQwMTgxLCA0MDE4OCwgNDAxOTUsIDQwMjAyLCAKKyAgICA0MDIwOSwgNDAyMTcsIDQwMjI2LCA0MDIzNCwgNDAyNDUsIDQwMjUzLCA0MDI2MSwgNDAyNzAsIDQwMjc3LCA0MDI4NiwgCisgICAgNDAyOTUsIDQwMzAzLCA0MDMxMiwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzMjAsIDQwMzIyLCA0MDMyNSwgNDAzMjcsIDQwMzMwLCAKKyAgICA0MDMzMywgNDAzMzYsIDQwMzQxLCA0MDM0NiwgNDAzNTEsIDQwMzU2LCA0MDM2MCwgNDAzNjQsIDQwMzY4LCA0MDM3MiwgCisgICAgNDAzNzcsIDQwMzgzLCA0MDM4OCwgNDAzOTQsIDQwMzk5LCA0MDQwNCwgNDA0MDksIDQwNDE1LCA0MDQyMCwgNDA0MjYsIAorICAgIDQwNDMyLCA0MDQzNiwgNDA0NDAsIDQwNDQ1LCA0MDQ1MCwgNDA0NTUsIDQwNDYwLCA0MDQ2NSwgNDA0NzMsIDQwNDgxLCAKKyAgICA0MDQ4OSwgNDA0OTcsIDQwNTA0LCA0MDUxMiwgNDA1MTksIDQwNTI2LCA0MDUzNSwgNDA1NDcsIDQwNTUzLCA0MDU1OSwgCisgICAgNDA1NjcsIDQwNTc1LCA0MDU4NCwgNDA1OTMsIDQwNjAxLCA0MDYwOSwgNDA2MTgsIDQwNjI3LCA0MDYzMiwgNDA2NDAsIAorICAgIDQwNjQ1LCA0MDY1MCwgNDA2NTYsIDQwNjYxLCA0MDY2NywgNDA2NzQsIDQwNjgxLCA0MDY4NiwgNDA2OTIsIDQwNjk3LCAKKyAgICA0MDcwMCwgNDA3MDQsIDQwNzA3LCA0MDcxMSwgNDA3MTUsIDQwNzE5LCA0MDcyNSwgNDA3MzEsIDQwNzM3LCA0MDc0MywgCisgICAgNDA3NDcsIDQwNzUxLCA0MDc1NSwgNDA3NTksIDQwNzY1LCA0MDc3MSwgNDA3NzUsIDQwNzgwLCA0MDc4NCwgNDA3ODksIAorICAgIDQwNzk0LCA0MDc5OSwgNDA4MDIsIDQwODA2LCA0MDgwOSwgNDA4MTMsIDQwODIwLCA0MDgyOCwgNDA4MzksIDQwODUwLCAKKyAgICA0MDg1NSwgNDA4NjQsIDQwODcxLCA0MDg4MCwgNDA4ODksIDQwODkzLCA0MDg5OSwgNDA5MDcsIDQwOTExLCA0MDkxNiwgCisgICAgNDA5MjEsIDQwOTI3LCA0MDkzMywgNDA5MzksIDQwOTQ2LCA0MDk1MCwgNDA5NTQsIDQwOTU5LCA0MDk2MiwgNDA5NjQsIAorICAgIDQwOTY4LCA0MDk3MiwgNDA5ODAsIDQwOTg0LCA0MDk4NiwgNDA5ODgsIDQwOTkyLCA0MTAwMCwgNDEwMDUsIDQxMDExLCAKKyAgICA0MTAyMSwgNDEwMjgsIDQxMDMzLCA0MTAzNywgNDEwNDEsIDQxMDQ1LCA0MTA0OCwgNDEwNTEsIDQxMDU0LCA0MTA1OCwgCisgICAgNDEwNjIsIDQxMDY2LCA0MTA3MCwgNDEwNzQsIDQxMDc3LCA0MTA4MSwgNDEwODUsIDQxMDg4LCA0MTA5MCwgNDEwOTMsIAorICAgIDQxMDk1LCA0MTA5OSwgNDExMDMsIDQxMTA1LCA0MTExMSwgNDExMTQsIDQxMTE5LCA0MTEyMywgNDExMjcsIDQxMTI5LCAKKyAgICA0MTEzMSwgNDExMzMsIDQxMTM2LCA0MTE0MCwgNDExNDQsIDQxMTQ4LCA0MTE1MiwgNDExNTYsIDQxMTYyLCA0MTE2OCwgCisgICAgNDExNzAsIDQxMTcyLCA0MTE3NCwgNDExNzYsIDQxMTc5LCA0MTE4MSwgNDExODUsIDQxMTg3LCA0MTE5MSwgNDExOTQsIAorICAgIDQxMjAwLCA0MTIwNCwgNDEyMDgsIDQxMjExLCA0MTIxNCwgNDEyMTgsIDQxMjI0LCA0MTIyOCwgNDEyMzgsIDQxMjQ4LCAKKyAgICA0MTI1MiwgNDEyNTgsIDQxMjY0LCA0MTI2NywgNDEyNzEsIDQxMjc0LCA0MTI3OSwgNDEyODMsIDQxMjg5LCA0MTI5MywgCisgICAgNDEzMDUsIDQxMzEzLCA0MTMxNywgNDEzMjEsIDQxMzI3LCA0MTMzMSwgNDEzMzQsIDQxMzM2LCA0MTMzOSwgNDEzNDMsIAorICAgIDQxMzQ3LCA0MTM1NCwgNDEzNTgsIDQxMzYyLCA0MTM2NiwgNDEzNjksIDQxMzc0LCA0MTM3OSwgNDEzODQsIDQxMzg5LCAKKyAgICA0MTM5NCwgNDEzOTksIDQxNDA3LCA0MTQxNSwgNDE0MTksIDQxNDIzLCA0MTQyNSwgNDE0MzAsIDQxNDM0LCA0MTQzOCwgCisgICAgNDE0NDYsIDQxNDU0LCA0MTQ2MCwgNDE0NjYsIDQxNDc1LCA0MTQ4NCwgNDE0ODksIDQxNDk0LCA0MTUwMiwgNDE1MTAsIAorICAgIDQxNTEyLCA0MTUxNCwgNDE1MTksIDQxNTI0LCA0MTUzMCwgNDE1MzYsIDQxNTQyLCA0MTU0OCwgNDE1NTIsIDQxNTU2LCAKKyAgICA0MTU2MywgNDE1NzAsIDQxNTc2LCA0MTU4MiwgNDE1OTIsIDQxNjAyLCA0MTYxMCwgNDE2MTgsIDQxNjIwLCA0MTYyNCwgCisgICAgNDE2MjgsIDQxNjMzLCA0MTYzOCwgNDE2NDUsIDQxNjUyLCA0MTY1NSwgNDE2NTgsIDQxNjYxLCA0MTY2NCwgNDE2NjcsIAorICAgIDQxNjcyLCA0MTY3NiwgNDE2ODEsIDQxNjg2LCA0MTY4OSwgNDE2OTIsIDQxNjk1LCA0MTY5OCwgNDE3MDEsIDQxNzA1LCAKKyAgICA0MTcwOCwgNDE3MTEsIDQxNzE0LCA0MTcxNywgNDE3MTksIDQxNzIxLCA0MTcyMywgNDE3MjUsIDQxNzMzLCA0MTc0MSwgCisgICAgNDE3NDcsIDQxNzUxLCA0MTc1NywgNDE3NjcsIDQxNzczLCA0MTc3OSwgNDE3ODUsIDQxNzkzLCA0MTgwMSwgNDE4MTIsIAorICAgIDQxODE2LCA0MTgyMCwgNDE4MjIsIDQxODI4LCA0MTgzMCwgNDE4MzIsIDQxODM0LCA0MTgzNiwgNDE4NDIsIDQxODQ1LCAKKyAgICA0MTg1MSwgNDE4NTcsIDQxODYxLCA0MTg2NSwgNDE4NjksIDQxODcyLCA0MTg3NiwgNDE4ODAsIDQxODgyLCA0MTg5MSwgCisgICAgNDE5MDAsIDQxOTA1LCA0MTkxMCwgNDE5MTYsIDQxOTIyLCA0MTkyOCwgNDE5MzEsIDQxOTM0LCA0MTkzNywgNDE5NDAsIAorICAgIDQxOTQyLCA0MTk0NywgNDE5NTIsIDQxOTU3LCA0MTk2MywgNDE5NjksIDQxOTc3LCA0MTk4NSwgNDE5OTEsIDQxOTk3LCAKKyAgICA0MjAwMywgNDIwMDksIDQyMDE4LCA0MjAyNywgNDIwMzYsIDQyMDQ1LCA0MjA1NCwgNDIwNjMsIDQyMDcyLCA0MjA4MSwgCisgICAgNDIwOTAsIDQyMDk5LCA0MjEwNywgNDIxMTksIDQyMTI5LCA0MjE0NCwgNDIxNDcsIDQyMTUyLCA0MjE1OCwgNDIxNjQsIAorICAgIDQyMTcxLCA0MjE4NSwgNDIyMDAsIDQyMjA2LCA0MjIxMiwgNDIyMTksIDQyMjI1LCA0MjIzMywgNDIyMzksIDQyMjUyLCAKKyAgICA0MjI2NiwgNDIyNzEsIDQyMjc3LCA0MjI4NCwgNDIyODcsIDQyMjkwLCA0MjI5MiwgNDIyOTUsIDQyMjk4LCA0MjMwMCwgCisgICAgNDIzMDIsIDQyMzA2LCA0MjMwOSwgNDIzMTIsIDQyMzE1LCA0MjMxOCwgNDIzMjMsIDQyMzI4LCA0MjMzMywgNDIzMzgsIAorICAgIDQyMzQzLCA0MjM0NiwgNDIzNDgsIDQyMzUwLCA0MjM1MiwgNDIzNTYsIDQyMzYwLCA0MjM2NCwgNDIzNzAsIDQyMzc1LCAKKyAgICA0MjM3NywgNDIzNzksIDQyMzg0LCA0MjM4OSwgNDIzOTQsIDQyMzk5LCA0MjQwNCwgNDI0MDksIDQyNDExLCA0MjQxMywgCisgICAgNDI0MjIsIDQyNDI2LCA0MjQzNCwgNDI0NDMsIDQyNDQ1LCA0MjQ1MCwgNDI0NTUsIDQyNDYzLCA0MjQ2NywgNDI0NjksIAorICAgIDQyNDczLCA0MjQ3NSwgNDI0NzksIDQyNDgzLCA0MjQ4NywgNDI0ODksIDQyNDkxLCA0MjQ5MywgNDI1MDAsIDQyNTA5LCAKKyAgICA0MjUxOCwgNDI1MjcsIDQyNTM2LCA0MjU0NSwgNDI1NTQsIDQyNTYzLCA0MjU3MiwgNDI1ODAsIDQyNTg4LCA0MjU5NywgCisgICAgNDI2MDYsIDQyNjE1LCA0MjYyNCwgNDI2MzIsIDQyNjQwLCA0MjY0OSwgNDI2NTgsIDQyNjY3LCA0MjY3NywgNDI2ODYsIAorICAgIDQyNjk2LCA0MjcwNSwgNDI3MTUsIDQyNzI0LCA0MjczNCwgNDI3NDQsIDQyNzUzLCA0Mjc2MywgNDI3NzIsIDQyNzgyLCAKKyAgICA0Mjc5MSwgNDI4MDEsIDQyODEwLCA0MjgxOSwgNDI4MjgsIDQyODM3LCA0Mjg0NiwgNDI4NTYsIDQyODY1LCA0Mjg3NCwgCisgICAgNDI4ODMsIDQyODkzLCA0MjkwMiwgNDI5MTEsIDQyOTIwLCA0MjkyOSwgNDI5MzksIDQyOTQ5LCA0Mjk1OCwgNDI5NjcsIAorICAgIDQyOTc1LCA0Mjk4MywgNDI5OTAsIDQyOTk4LCA0MzAwNywgNDMwMTgsIDQzMDI3LCA0MzAzNiwgNDMwNDUsIDQzMDUyLCAKKyAgICA0MzA1OSwgNDMwNjYsIDQzMDc1LCA0MzA4NCwgNDMwOTMsIDQzMTAyLCA0MzEwOSwgNDMxMTQsIDQzMTIzLCA0MzEyOCwgCisgICAgNDMxMzEsIDQzMTM5LCA0MzE0MiwgNDMxNDcsIDQzMTUyLCA0MzE1NSwgNDMxNTgsIDQzMTY2LCA0MzE2OSwgNDMxNzQsIAorICAgIDQzMTc3LCA0MzE4NCwgNDMxODksIDQzMTk3LCA0MzIwMCwgNDMyMDMsIDQzMjA2LCA0MzIxMSwgNDMyMTYsIDQzMjE5LCAKKyAgICA0MzIyMiwgNDMyMzAsIDQzMjMzLCA0MzI0MCwgNDMyNDcsIDQzMjUxLCA0MzI1NSwgNDMyNjAsIDQzMjY1LCA0MzI3MSwgCisgICAgNDMyNzYsIDQzMjgyLCA0MzI4OCwgNDMyOTMsIDQzMjk5LCA0MzMwNywgNDMzMTMsIDQzMzIxLCA0MzMyOSwgNDMzMzUsIAorICAgIDQzMzQzLCA0MzM1MSwgNDMzNjAsIDQzMzY4LCA0MzM3NCwgNDMzODIsIDQzMzkxLCA0MzM5OSwgNDM0MDMsIDQzNDA4LCAKKyAgICA0MzQyMSwgNDM0MzQsIDQzNDM4LCA0MzQ0MiwgNDM0NDYsIDQzNDUwLCA0MzQ2MCwgNDM0NjQsIDQzNDY5LCA0MzQ3NCwgCisgICAgNDM0NzksIDQzNDg0LCA0MzQ4OSwgNDM0OTQsIDQzNTA0LCA0MzUxNCwgNDM1MjIsIDQzNTMyLCA0MzU0MiwgNDM1NTAsIAorICAgIDQzNTYwLCA0MzU3MCwgNDM1NzgsIDQzNTg4LCA0MzU5OCwgNDM2MDYsIDQzNjE0LCA0MzYyNCwgNDM2MzQsIDQzNjM3LCAKKyAgICA0MzY0MCwgNDM2NDMsIDQzNjQ4LCA0MzY1MiwgNDM2NTgsIDQzNjY1LCA0MzY3MiwgNDM2ODAsIDQzNjg3LCA0MzY5MSwgCisgICAgNDM2OTUsIDQzNjk5LCA0MzcwMywgNDM3MDUsIDQzNzA5LCA0MzcxMywgNDM3MTgsIDQzNzIzLCA0MzczMCwgNDM3MzcsIAorICAgIDQzNzQwLCA0Mzc0NywgNDM3NDksIDQzNzUxLCA0Mzc1NSwgNDM3NTksIDQzNzY0LCA0Mzc3MCwgNDM3NzYsIDQzNzgyLCAKKyAgICA0Mzc4OCwgNDM3OTcsIDQzODA2LCA0MzgxNSwgNDM4MTksIDQzODIxLCA0MzgyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDM4MzIsIDQzODM2LCA0Mzg0MywgNDM4NTAsIDQzODU3LCA0Mzg2NCwgNDM4NjgsIDQzODcyLCAKKyAgICA0Mzg3NiwgNDM4ODAsIDQzODg1LCA0Mzg5MSwgNDM4OTYsIDQzOTAyLCA0MzkwOCwgNDM5MTQsIDQzOTIwLCA0MzkyOCwgCisgICAgNDM5MzUsIDQzOTQyLCA0Mzk0OSwgNDM5NTYsIDQzOTYxLCA0Mzk2NywgNDM5NzYsIDQzOTgwLCA0Mzk4NywgNDM5OTEsIAorICAgIDQzOTk1LCA0NDAwMSwgNDQwMDcsIDQ0MDEzLCA0NDAxOSwgNDQwMjMsIDQ0MDI3LCA0NDAzMCwgNDQwMzMsIDQ0MDM3LCAKKyAgICA0NDA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDQwNTEsIDQ0MDU0LCA0NDA1OCwgNDQwNjIsIDQ0MDY4LCA0NDA3NCwgNDQwODAsIDQ0MDg4LCA0NDA5NSwgCisgICAgNDQwOTksIDQ0MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NDExMiwgNDQxMTUsIDQ0MTE4LCA0NDEyMSwgNDQxMjQsIDQ0MTI3LCA0NDEzMCwgNDQxMzMsIDQ0MTM2LCA0NDEzOSwgCisgICAgNDQxNDMsIDQ0MTQ3LCA0NDE1MSwgNDQxNTUsIDQ0MTU5LCA0NDE2MywgNDQxNjcsIDQ0MTcxLCA0NDE3NSwgNDQxNzksIAorICAgIDQ0MTgzLCA0NDE4NiwgNDQxODksIDQ0MTkyLCA0NDE5NSwgNDQxOTgsIDQ0MjAxLCA0NDIwNCwgNDQyMDcsIDQ0MjEwLCAKKyAgICA0NDIxNCwgNDQyMTgsIDQ0MjIyLCA0NDIyNiwgNDQyMzAsIDQ0MjM0LCA0NDIzOCwgNDQyNDIsIDQ0MjQ2LCA0NDI1MCwgCisgICAgNDQyNTQsIDQ0MjYwLCA0NDI2NiwgNDQyNzIsIDQ0Mjc5LCA0NDI4NiwgNDQyOTMsIDQ0MzAwLCA0NDMwNywgNDQzMTQsIAorICAgIDQ0MzIxLCA0NDMyOCwgNDQzMzUsIDQ0MzQyLCA0NDM0OSwgNDQzNTYsIDQ0MzYzLCA0NDM3MCwgNDQzNzcsIDQ0Mzg0LCAKKyAgICA0NDM5MSwgNDQzOTYsIDQ0NDAyLCA0NDQwOCwgNDQ0MTQsIDQ0NDE5LCA0NDQyNSwgNDQ0MzEsIDQ0NDM3LCA0NDQ0MiwgCisgICAgNDQ0NDgsIDQ0NDU0LCA0NDQ1OSwgNDQ0NjQsIDQ0NDcwLCA0NDQ3NSwgNDQ0ODEsIDQ0NDg3LCA0NDQ5MiwgNDQ0OTgsIAorICAgIDQ0NTA0LCA0NDUwOSwgNDQ1MTUsIDQ0NTIxLCA0NDUyNywgNDQ1MzMsIDQ0NTM5LCA0NDU0NCwgNDQ1NTAsIDQ0NTU2LCAKKyAgICA0NDU2MiwgNDQ1NjcsIDQ0NTczLCA0NDU3OSwgNDQ1ODUsIDQ0NTkwLCA0NDU5NiwgNDQ2MDIsIDQ0NjA3LCA0NDYxMiwgCisgICAgNDQ2MTgsIDQ0NjIzLCA0NDYyOSwgNDQ2MzUsIDQ0NjQwLCA0NDY0NiwgNDQ2NTIsIDQ0NjU3LCA0NDY2MywgNDQ2NjksIAorICAgIDQ0Njc1LCA0NDY4MSwgNDQ2ODcsIDQ0NjkyLCA0NDY5OCwgNDQ3MDQsIDQ0NzEwLCA0NDcxNSwgNDQ3MjEsIDQ0NzI3LCAKKyAgICA0NDczMywgNDQ3MzgsIDQ0NzQ0LCA0NDc1MCwgNDQ3NTUsIDQ0NzYwLCA0NDc2NiwgNDQ3NzEsIDQ0Nzc3LCA0NDc4MywgCisgICAgNDQ3ODgsIDQ0Nzk0LCA0NDgwMCwgNDQ4MDUsIDQ0ODExLCA0NDgxNywgNDQ4MjMsIDQ0ODI5LCA0NDgzNSwgNDQ4MzksIAorICAgIDQ0ODQ0LCA0NDg0OSwgNDQ4NTQsIDQ0ODU5LCA0NDg2NCwgNDQ4NjksIDQ0ODc0LCA0NDg3OSwgNDQ4ODQsIDQ0ODg5LCAKKyAgICA0NDg5MywgNDQ4OTcsIDQ0OTAxLCA0NDkwNSwgNDQ5MDksIDQ0OTEzLCA0NDkxNywgNDQ5MjEsIDQ0OTI1LCA0NDkzMCwgCisgICAgNDQ5MzUsIDQ0OTQwLCA0NDk0NSwgNDQ5NTAsIDQ0OTU1LCA0NDk2NCwgNDQ5NzMsIDQ0OTgyLCA0NDk5MSwgNDUwMDAsIAorICAgIDQ1MDA5LCA0NTAxOCwgNDUwMjcsIDQ1MDM0LCA0NTA0MiwgNDUwNTAsIDQ1MDU3LCA0NTA2NCwgNDUwNzIsIDQ1MDgwLCAKKyAgICA0NTA4NywgNDUwOTQsIDQ1MTAyLCA0NTExMCwgNDUxMTcsIDQ1MTI0LCA0NTEzMiwgNDUxNDAsIDQ1MTQ3LCA0NTE1NCwgCisgICAgNDUxNjIsIDQ1MTcxLCA0NTE4MCwgNDUxODgsIDQ1MTk3LCA0NTIwNiwgNDUyMTMsIDQ1MjIwLCA0NTIyOCwgNDUyMzcsIAorICAgIDQ1MjQ2LCA0NTI1NCwgNDUyNjMsIDQ1MjcyLCA0NTI3OSwgNDUyODYsIDQ1Mjk1LCA0NTMwNCwgNDUzMTIsIDQ1MzIwLCAKKyAgICA0NTMyOSwgNDUzMzgsIDQ1MzQ1LCA0NTM1MiwgNDUzNjEsIDQ1MzcwLCA0NTM3OCwgNDUzODYsIDQ1Mzk1LCA0NTQwNCwgCisgICAgNDU0MTEsIDQ1NDE4LCA0NTQyNywgNDU0MzYsIDQ1NDQ0LCA0NTQ1MywgNDU0NjIsIDQ1NDcwLCA0NTQ4MCwgNDU0OTAsIAorICAgIDQ1NTAwLCA0NTUxMCwgNDU1MTksIDQ1NTI4LCA0NTUzNywgNDU1NDYsIDQ1NTUzLCA0NTU2MSwgNDU1NjksIDQ1NTc3LCAKKyAgICA0NTU4NSwgNDU1OTAsIDQ1NTk1LCA0NTYwNCwgNDU2MTIsIDQ1NjE5LCA0NTYyOCwgNDU2MzYsIDQ1NjQzLCA0NTY1MiwgCisgICAgNDU2NjAsIDQ1NjY3LCA0NTY3NiwgNDU2ODQsIDQ1NjkxLCA0NTcwMCwgNDU3MDgsIDQ1NzE1LCA0NTcyNCwgNDU3MzIsIAorICAgIDQ1NzM5LCA0NTc0OCwgNDU3NTYsIDQ1NzYzLCA0NTc3MiwgNDU3ODAsIDQ1Nzg3LCA0NTc5NiwgNDU4MDQsIDQ1ODExLCAKKyAgICA0NTgyMCwgNDU4MjksIDQ1ODM4LCA0NTg0NywgNDU4NjEsIDQ1ODc1LCA0NTg4MiwgNDU4ODcsIDQ1ODkyLCA0NTg5NywgCisgICAgNDU5MDIsIDQ1OTA3LCA0NTkxMiwgNDU5MTcsIDQ1OTIyLCA0NTkzMCwgNDU5MzgsIDQ1OTQ2LCA0NTk1NCwgNDU5NTksIAorICAgIDQ1OTY2LCA0NTk3MywgNDU5ODAsIDQ1OTg1LCA0NTk5MywgNDYwMDAsIDQ2MDA4LCA0NjAxMiwgNDYwMTksIDQ2MDI1LCAKKyAgICA0NjAzMiwgNDYwMzYsIDQ2MDQyLCA0NjA0OCwgNDYwNTQsIDQ2MDU4LCA0NjA2MSwgNDYwNjUsIDQ2MDY5LCA0NjA3NiwgCisgICAgNDYwODIsIDQ2MDg4LCA0NjA5NCwgNDYxMDAsIDQ2MTE0LCA0NjEyNCwgNDYxMzgsIDQ2MTUyLCA0NjE1OCwgNDYxNjgsIAorICAgIDQ2MTgyLCA0NjE4NSwgNDYxODgsIDQ2MTk1LCA0NjIwMywgNDYyMDgsIDQ2MjEzLCA0NjIyMSwgNDYyMzMsIDQ2MjQ1LCAKKyAgICA0NjI1MywgNDYyNTcsIDQ2MjYxLCA0NjI2NCwgNDYyNjcsIDQ2MjcxLCA0NjI3NSwgNDYyNzgsIDQ2MjgxLCA0NjI4NiwgCisgICAgNDYyOTEsIDQ2Mjk3LCA0NjMwMywgNDYzMDgsIDQ2MzEzLCA0NjMxOSwgNDYzMjUsIDQ2MzMwLCA0NjMzNSwgNDYzNDAsIAorICAgIDQ2MzQ1LCA0NjM1MSwgNDYzNTcsIDQ2MzYyLCA0NjM2NywgNDYzNzMsIDQ2Mzc5LCA0NjM4NCwgNDYzODksIDQ2MzkyLCAKKyAgICA0NjM5NSwgNDY0MDQsIDQ2NDA2LCA0NjQwOCwgNDY0MTEsIDQ2NDE1LCA0NjQyMSwgNDY0MjMsIDQ2NDI2LCA0NjQzMywgCisgICAgNDY0NDAsIDQ2NDQ4LCA0NjQ1NiwgNDY0NjYsIDQ2NDgwLCA0NjQ4NSwgNDY0OTAsIDQ2NDk0LCA0NjQ5OSwgNDY1MDcsIAorICAgIDQ2NTE1LCA0NjUyNCwgNDY1MzMsIDQ2NTQyLCA0NjU1MSwgNDY1NTYsIDQ2NTYxLCA0NjU2NywgNDY1NzMsIDQ2NTc5LCAKKyAgICA0NjU4NSwgNDY1ODgsIDQ2NTk0LCA0NjYwMCwgNDY2MTAsIDQ2NjIwLCA0NjYyOCwgNDY2MzYsIDQ2NjQ1LCA0NjY1NCwgCisgICAgNDY2NTgsIDQ2NjY2LCA0NjY3NCwgNDY2ODIsIDQ2NjkwLCA0NjY5OSwgNDY3MDgsIDQ2NzE3LCA0NjcyNiwgNDY3MzEsIAorICAgIDQ2NzM2LCA0Njc0MSwgNDY3NDYsIDQ2NzUxLCA0Njc1NywgNDY3NjMsIDQ2NzY4LCA0Njc3NCwgNDY3NzYsIDQ2Nzc4LCAKKyAgICA0Njc4MCwgNDY3ODIsIDQ2Nzg1LCA0Njc4OCwgNDY3OTAsIDQ2NzkyLCA0Njc5NCwgNDY3OTgsIDQ2ODAyLCA0NjgwNCwgCisgICAgNDY4MDYsIDQ2ODA5LCA0NjgxMiwgNDY4MTYsIDQ2ODIyLCA0NjgyOCwgNDY4MzAsIDQ2ODM3LCA0Njg0MSwgNDY4NDYsIAorICAgIDQ2ODUxLCA0Njg1MywgNDY4NjMsIDQ2ODY5LCA0Njg3NSwgNDY4ODEsIDQ2ODg3LCA0Njg5MywgNDY4OTksIDQ2OTA0LCAKKyAgICA0NjkwNywgNDY5MTAsIDQ2OTEzLCA0NjkxNSwgNDY5MTcsIDQ2OTIxLCA0NjkyNSwgNDY5MzAsIDQ2OTM1LCA0Njk0MCwgCisgICAgNDY5NDMsIDQ2OTQ3LCA0Njk1MiwgNDY5NTUsIDQ2OTU5LCA0Njk2NCwgNDY5NjksIDQ2OTc0LCA0Njk3OSwgNDY5ODQsIAorICAgIDQ2OTg5LCA0Njk5NCwgNDY5OTksIDQ3MDA0LCA0NzAwOSwgNDcwMTQsIDQ3MDE5LCA0NzAyNSwgNDcwMzEsIDQ3MDM3LCAKKyAgICA0NzAzOSwgNDcwNDIsIDQ3MDQ0LCA0NzA0NywgNDcwNDksIDQ3MDUxLCA0NzA1MywgNDcwNTUsIDQ3MDU3LCA0NzA1OSwgCisgICAgNDcwNjEsIDQ3MDYzLCA0NzA2NSwgNDcwNjcsIDQ3MDY5LCA0NzA3MSwgNDcwNzMsIDQ3MDc1LCA0NzA3NywgNDcwNzksIAorICAgIDQ3MDgxLCA0NzA4NiwgNDcwOTEsIDQ3MDk2LCA0NzEwMSwgNDcxMDYsIDQ3MTExLCA0NzExNiwgNDcxMjEsIDQ3MTI2LCAKKyAgICA0NzEzMSwgNDcxMzYsIDQ3MTQxLCA0NzE0NiwgNDcxNTEsIDQ3MTU2LCA0NzE2MSwgNDcxNjYsIDQ3MTcxLCA0NzE3NiwgCisgICAgNDcxODEsIDQ3MTg1LCA0NzE4OSwgNDcxOTMsIDQ3MTk5LCA0NzIwNSwgNDcyMTAsIDQ3MjE1LCA0NzIyMCwgNDcyMjUsIAorICAgIDQ3MjMwLCA0NzIzNSwgNDcyNDMsIDQ3MjUxLCA0NzI1OSwgNDcyNjcsIDQ3Mjc1LCA0NzI4MywgNDcyOTEsIDQ3Mjk5LCAKKyAgICA0NzMwNSwgNDczMTAsIDQ3MzE1LCA0NzMyMCwgNDczMjMsIDQ3MzI3LCA0NzMzMSwgNDczMzUsIDQ3MzM5LCA0NzM0MywgCisgICAgNDczNDcsIDQ3MzU0LCA0NzM2MSwgNDczNjksIDQ3Mzc3LCA0NzM4MiwgNDczODcsIDQ3Mzk0LCA0NzQwMSwgNDc0MDgsIAorICAgIDQ3NDE1LCA0NzQxOCwgNDc0MjEsIDQ3NDI2LCA0NzQyOCwgNDc0MzIsIDQ3NDM3LCA0NzQzOSwgNDc0NDEsIDQ3NDQzLCAKKyAgICA0NzQ0NSwgNDc0NTAsIDQ3NDUzLCA0NzQ1NSwgNDc0NjAsIDQ3NDY3LCA0NzQ3NCwgNDc0NzcsIDQ3NDgxLCA0NzQ4NiwgCisgICAgNDc0OTEsIDQ3NDk5LCA0NzUwNSwgNDc1MTEsIDQ3NTIzLCA0NzUzMCwgNDc1MzcsIDQ3NTQyLCA0NzU0NywgNDc1NTMsIAorICAgIDQ3NTU2LCA0NzU1OSwgNDc1NjQsIDQ3NTY2LCA0NzU3MCwgNDc1NzIsIDQ3NTc0LCA0NzU3NiwgNDc1NzgsIDQ3NTgwLCAKKyAgICA0NzU4MiwgNDc1ODcsIDQ3NTg5LCA0NzU5MSwgNDc1OTMsIDQ3NTk1LCA0NzU5OSwgNDc2MDEsIDQ3NjA0LCA0NzYwOSwgCisgICAgNDc2MTQsIDQ3NjE5LCA0NzYyNCwgNDc2MzAsIDQ3NjM2LCA0NzYzOCwgNDc2NDEsIDQ3NjQ4LCA0NzY1NSwgNDc2NjIsIAorICAgIDQ3NjY5LCA0NzY3MywgNDc2NzcsIDQ3Njc5LCA0NzY4MSwgNDc2ODUsIDQ3NjkxLCA0NzY5NiwgNDc2OTgsIDQ3NzAyLCAKKyAgICA0NzcxMSwgNDc3MTksIDQ3NzI3LCA0NzczMywgNDc3MzksIDQ3NzQ0LCA0Nzc1MCwgNDc3NTUsIDQ3NzU4LCA0Nzc3MiwgCisgICAgNDc3NzUsIDQ3NzgwLCA0Nzc4NSwgNDc3OTEsIDQ3ODAxLCA0NzgwMywgNDc4MDksIDQ3ODE1LCA0NzgxOSwgNDc4MjYsIAorICAgIDQ3ODMwLCA0NzgzMiwgNDc4MzQsIDQ3ODM4LCA0Nzg0NCwgNDc4NDksIDQ3ODU1LCA0Nzg1NywgNDc4NjMsIDQ3ODY1LCAKKyAgICA0Nzg3MSwgNDc4NzMsIDQ3ODc1LCA0Nzg4MCwgNDc4ODIsIDQ3ODg2LCA0Nzg5MSwgNDc4OTMsIDQ3ODk4LCA0NzkwMywgCisgICAgNDc5MDcsIDQ3OTE0LCAwLCA0NzkyNCwgNDc5MzAsIDQ3OTMzLCA0NzkzOSwgNDc5NDIsIDQ3OTQ3LCA0Nzk1MiwgNDc5NTYsIAorICAgIDQ3OTU4LCA0Nzk2MCwgNDc5NjQsIDQ3OTY4LCA0Nzk3MiwgNDc5NzYsIDQ3OTgxLCA0Nzk4MywgNDc5ODgsIDQ3OTkxLCAKKyAgICA0Nzk5NCwgNDc5OTcsIDQ4MDAxLCA0ODAwNSwgNDgwMTAsIDQ4MDE0LCA0ODAxOSwgNDgwMjQsIDQ4MDI4LCA0ODAzMywgCisgICAgNDgwMzksIDQ4MDQyLCA0ODA0OCwgNDgwNTMsIDQ4MDU3LCA0ODA2MiwgNDgwNjgsIDQ4MDc0LCA0ODA4MSwgNDgwODcsIAorICAgIDQ4MDk0LCA0ODEwMSwgNDgxMDMsIDQ4MTEwLCA0ODExNCwgNDgxMjAsIDQ4MTI2LCA0ODEzMSwgNDgxMzcsIDQ4MTQxLCAKKyAgICA0ODE0NiwgNDgxNDksIDQ4MTU0LCA0ODE2MCwgNDgxNjcsIDQ4MTc1LCA0ODE4MiwgNDgxOTEsIDQ4MjAxLCA0ODIwOCwgCisgICAgNDgyMTQsIDQ4MjE4LCA0ODIyNSwgNDgyMzAsIDQ4MjM5LCA0ODI0MiwgNDgyNDUsIDQ4MjU0LCA0ODI2NCwgNDgyNzEsIAorICAgIDQ4MjczLCA0ODI3OSwgNDgyODQsIDQ4Mjg2LCA0ODI4OSwgNDgyOTMsIDQ4MzAxLCA0ODMxMCwgNDgzMTMsIDQ4MzE4LCAKKyAgICA0ODMyMywgNDgzMzEsIDQ4MzM5LCA0ODM0NywgNDgzNTUsIDQ4MzYxLCA0ODM2NywgNDgzNzMsIDQ4MzgxLCA0ODM4NiwgCisgICAgNDgzODksIDQ4MzkzLCA0ODM5NiwgNDg0MDgsIDQ4NDE4LCA0ODQyOSwgNDg0MzgsIDQ4NDQ5LCA0ODQ1OSwgNDg0NjgsIAorICAgIDQ4NDc0LCA0ODQ4MiwgNDg0ODYsIDQ4NDk0LCA0ODQ5OCwgNDg1MDYsIDQ4NTEzLCA0ODUyMCwgNDg1MjksIDQ4NTM4LCAKKyAgICA0ODU0OCwgNDg1NTgsIDQ4NTY4LCA0ODU3OCwgNDg1ODcsIDQ4NTk2LCA0ODYwNiwgNDg2MTYsIDQ4NjI1LCA0ODYzNCwgCisgICAgNDg2NDAsIDQ4NjQ2LCA0ODY1MiwgNDg2NTgsIDQ4NjY0LCA0ODY3MCwgNDg2NzYsIDQ4NjgyLCA0ODY4OCwgNDg2OTUsIAorICAgIDQ4NzAxLCA0ODcwNywgNDg3MTMsIDQ4NzE5LCA0ODcyNSwgNDg3MzEsIDQ4NzM3LCA0ODc0MywgNDg3NDksIDQ4NzU2LCAKKyAgICA0ODc2MywgNDg3NzAsIDQ4Nzc3LCA0ODc4NCwgNDg3OTEsIDQ4Nzk4LCA0ODgwNSwgNDg4MTIsIDQ4ODE5LCA0ODgyNywgCisgICAgNDg4MzIsIDQ4ODM1LCA0ODgzOSwgNDg4NDMsIDQ4ODQ5LCA0ODg1MiwgNDg4NTgsIDQ4ODY0LCA0ODg2OSwgNDg4NzMsIAorICAgIDQ4ODc4LCA0ODg4NCwgNDg4OTEsIDQ4ODk0LCA0ODkwMSwgNDg5MDgsIDQ4OTEyLCA0ODkyMSwgNDg5MzAsIDQ4OTM1LCAKKyAgICA0ODk0MSwgNDg5NDYsIDQ4OTUxLCA0ODk1OCwgNDg5NjUsIDQ4OTczLCA0ODk4MSwgNDg5OTAsIDQ4OTk0LCA0OTAwMywgCisgICAgNDkwMDgsIDQ5MDEyLCA0OTAxOSwgNDkwMjMsIDQ5MDMwLCA0OTAzOCwgNDkwNDMsIDQ5MDUxLCA0OTA1NSwgNDkwNjAsIAorICAgIDQ5MDY0LCA0OTA2OSwgNDkwNzMsIDQ5MDc4LCA0OTA4MywgNDkwOTIsIDQ5MDk0LCA0OTA5NywgNDkxMDAsIDQ5MTA3LCAKKyAgICA0OTExNCwgNDkxMTksIDQ5MTI3LCA0OTEzMywgNDkxMzksIDQ5MTQ0LCA0OTE0NywgNDkxNTIsIDQ5MTU3LCA0OTE2MiwgCisgICAgNDkxNzAsIDQ5MTc0LCA0OTE4MSwgNDkxODksIDQ5MTk3LCA0OTIwMiwgNDkyMDcsIDQ5MjEzLCA0OTIxOCwgNDkyMjMsIAorICAgIDQ5MjI5LCA0OTIzNCwgNDkyMzcsIDQ5MjQxLCA0OTI0NSwgNDkyNTIsIDQ5MjYxLCA0OTI2NiwgNDkyNzUsIDQ5Mjg0LCAKKyAgICA0OTI5MCwgNDkyOTYsIDQ5MzAxLCA0OTMwNiwgNDkzMTEsIDQ5MzE2LCA0OTMyMiwgNDkzMjgsIDQ5MzM2LCA0OTM0NCwgCisgICAgNDkzNTAsIDQ5MzU2LCA0OTM2MSwgNDkzNjYsIDQ5MzczLCA0OTM4MCwgNDkzODYsIDQ5Mzg5LCA0OTM5MiwgNDkzOTYsIAorICAgIDQ5NDAwLCA0OTQwNCwgNDk0MDksIDQ5NDE1LCA0OTQyMSwgNDk0MjgsIDQ5NDM1LCA0OTQ0MCwgNDk0NDQsIDQ5NDQ4LCAKKyAgICA0OTQ1MiwgNDk0NTYsIDQ5NDYwLCA0OTQ2NCwgNDk0NjgsIDQ5NDcyLCA0OTQ3NiwgNDk0ODAsIDQ5NDg0LCA0OTQ4OCwgCisgICAgNDk0OTIsIDQ5NDk2LCA0OTUwMCwgNDk1MDQsIDQ5NTA4LCA0OTUxMiwgNDk1MTYsIDQ5NTIwLCA0OTUyNCwgNDk1MjgsIAorICAgIDQ5NTMyLCA0OTUzNiwgNDk1NDAsIDQ5NTQ0LCA0OTU0OCwgNDk1NTIsIDQ5NTU2LCA0OTU2MCwgNDk1NjQsIDQ5NTY4LCAKKyAgICA0OTU3MiwgNDk1NzYsIDQ5NTgwLCA0OTU4NCwgNDk1ODgsIDQ5NTkyLCA0OTU5NiwgNDk2MDAsIDQ5NjA0LCA0OTYwOCwgCisgICAgNDk2MTIsIDQ5NjE2LCA0OTYyMCwgNDk2MjQsIDQ5NjI4LCA0OTYzMiwgNDk2MzYsIDQ5NjQwLCA0OTY0NCwgNDk2NDgsIAorICAgIDQ5NjUyLCA0OTY1NiwgNDk2NjAsIDQ5NjY0LCA0OTY2OCwgNDk2NzIsIDQ5Njc2LCA0OTY4MCwgNDk2ODQsIDQ5Njg4LCAKKyAgICA0OTY5MiwgNDk2OTYsIDQ5NzAwLCA0OTcwNCwgNDk3MDgsIDQ5NzEyLCA0OTcxNiwgNDk3MjAsIDQ5NzI0LCA0OTcyOCwgCisgICAgNDk3MzIsIDQ5NzM2LCA0OTc0MCwgNDk3NDQsIDQ5NzQ4LCA0OTc1MiwgNDk3NTYsIDQ5NzYwLCA0OTc2NCwgNDk3NjgsIAorICAgIDQ5NzcyLCA0OTc3NiwgNDk3ODAsIDQ5Nzg0LCA0OTc4OCwgNDk3OTIsIDQ5Nzk2LCA0OTgwMCwgNDk4MDQsIDQ5ODA4LCAKKyAgICA0OTgxMiwgNDk4MTYsIDQ5ODIwLCA0OTgyNCwgNDk4MjgsIDQ5ODMyLCA0OTgzNiwgNDk4NDAsIDQ5ODQ0LCA0OTg0OCwgCisgICAgNDk4NTIsIDQ5ODU2LCA0OTg2MCwgNDk4NjQsIDQ5ODY4LCA0OTg3MiwgNDk4NzYsIDQ5ODgwLCA0OTg4NCwgNDk4ODgsIAorICAgIDQ5ODkyLCA0OTg5NiwgNDk5MDAsIDQ5OTA0LCA0OTkwOCwgNDk5MTIsIDQ5OTE2LCA0OTkyMCwgNDk5MjQsIDQ5OTI4LCAKKyAgICA0OTkzMiwgNDk5MzYsIDQ5OTQwLCA0OTk0NCwgNDk5NDgsIDQ5OTUyLCA0OTk1NiwgNDk5NjAsIDQ5OTY0LCA0OTk2OCwgCisgICAgNDk5NzIsIDQ5OTc2LCA0OTk4MCwgNDk5ODQsIDQ5OTg4LCA0OTk5MiwgNDk5OTYsIDUwMDAwLCA1MDAwNCwgNTAwMDgsIAorICAgIDUwMDEyLCA1MDAxNiwgNTAwMjAsIDUwMDI0LCA1MDAyOCwgNTAwMzIsIDUwMDM2LCA1MDA0MCwgNTAwNDQsIDUwMDQ4LCAKKyAgICA1MDA1MiwgNTAwNTYsIDUwMDYwLCA1MDA2NCwgNTAwNjgsIDUwMDcyLCA1MDA3NiwgNTAwODAsIDUwMDg0LCA1MDA4OCwgCisgICAgNTAwOTIsIDUwMDk2LCA1MDEwMCwgNTAxMDQsIDUwMTA4LCA1MDExMiwgNTAxMTYsIDUwMTIwLCA1MDEyNCwgNTAxMjgsIAorICAgIDUwMTMyLCA1MDEzNiwgNTAxNDAsIDUwMTQ0LCA1MDE0OCwgNTAxNTIsIDUwMTU2LCA1MDE2MCwgNTAxNjQsIDUwMTY4LCAKKyAgICA1MDE3MiwgNTAxNzYsIDUwMTgwLCA1MDE4NCwgNTAxODgsIDUwMTkyLCA1MDE5NiwgNTAyMDAsIDUwMjA0LCA1MDIwOCwgCisgICAgNTAyMTIsIDUwMjE2LCA1MDIyMCwgNTAyMjQsIDUwMjI4LCA1MDIzMiwgNTAyMzYsIDUwMjQwLCA1MDI0NCwgNTAyNDgsIAorICAgIDUwMjUyLCA1MDI1NiwgNTAyNjAsIDUwMjY0LCA1MDI2OCwgNTAyNzIsIDUwMjc2LCA1MDI4MCwgNTAyODQsIDUwMjg4LCAKKyAgICA1MDI5MiwgNTAyOTYsIDUwMzAwLCA1MDMwNCwgNTAzMDgsIDUwMzEyLCA1MDMxNiwgNTAzMjAsIDUwMzI0LCA1MDMyOCwgCisgICAgNTAzMzIsIDUwMzM2LCA1MDM0MCwgNTAzNDQsIDUwMzQ4LCA1MDM1MiwgNTAzNTYsIDUwMzYwLCA1MDM2NCwgNTAzNjgsIAorICAgIDUwMzcyLCA1MDM3NiwgNTAzODAsIDUwMzg0LCA1MDM4OCwgNTAzOTIsIDUwMzk2LCA1MDQwMCwgNTA0MDQsIDUwNDA4LCAKKyAgICA1MDQxMiwgNTA0MTYsIDUwNDIwLCA1MDQyNCwgNTA0MjgsIDUwNDMyLCA1MDQzNiwgNTA0NDAsIDUwNDQ0LCA1MDQ0OCwgCisgICAgNTA0NTIsIDUwNDU2LCA1MDQ2MCwgNTA0NjQsIDUwNDcxLCA1MDQ3OSwgNTA0ODUsIDUwNDkxLCA1MDQ5OCwgNTA1MDUsIAorICAgIDUwNTExLCA1MDUxNywgNTA1MjMsIDUwNTI5LCA1MDUzNCwgNTA1MzksIDUwNTQ0LCA1MDU0OSwgNTA1NTUsIDUwNTYxLCAKKyAgICA1MDU2OSwgNTA1NzYsIDUwNTgyLCA1MDU4OCwgNTA1OTYsIDUwNjA1LCA1MDYxMiwgNTA2MjIsIDUwNjMzLCA1MDYzNiwgCisgICAgNTA2MzksIDUwNjQzLCA1MDY0NywgNTA2NTQsIDUwNjYxLCA1MDY3MiwgNTA2ODMsIDUwNjkzLCA1MDcwMywgNTA3MTAsIAorICAgIDUwNzE3LCA1MDcyNCwgNTA3MzEsIDUwNzQyLCA1MDc1MywgNTA3NjQsIDUwNzc1LCA1MDc4NSwgNTA3OTUsIDUwODA3LCAKKyAgICA1MDgxOSwgNTA4MzAsIDUwODQxLCA1MDg1MywgNTA4NjUsIDUwODc0LCA1MDg4NCwgNTA4OTQsIDUwOTA1LCA1MDkxNiwgCisgICAgNTA5MjMsIDUwOTMwLCA1MDkzNywgNTA5NDQsIDUwOTU0LCA1MDk2NCwgNTA5NzIsIDUwOTgwLCA1MDk4NywgNTA5OTQsIAorICAgIDUxMDAxLCA1MTAwOCwgNTEwMTUsIDUxMDIwLCA1MTAyNSwgNTEwMzEsIDUxMDM5LCA1MTA0OSwgNTEwNTksIDUxMDY5LCAKKyAgICA1MTA3OSwgNTEwODksIDUxMDk5LCA1MTEwOSwgNTExMTksIDUxMTI5LCA1MTEzOSwgNTExNDksIDUxMTYwLCA1MTE3MSwgCisgICAgNTExODEsIDUxMTkxLCA1MTIwMiwgNTEyMTMsIDUxMjIzLCA1MTIzMywgNTEyNDQsIDUxMjU1LCA1MTI2NSwgNTEyNzUsIAorICAgIDUxMjg2LCA1MTI5NywgNTEzMTMsIDUxMzMyLCA1MTM0OCwgNTEzNjcsIDUxMzgzLCA1MTM5OSwgNTE0MTUsIDUxNDMxLCAKKyAgICA1MTQ0MiwgNTE0NTQsIDUxNDY1LCA1MTQ3NywgNTE0OTYsIDUxNTE1LCA1MTUyMywgNTE1MjksIDUxNTM2LCA1MTU0MywgCisgICAgNTE1NTAsIDUxNTU3LCA1MTU2MiwgNTE1NjgsIDUxNTczLCA1MTU3OCwgNTE1ODQsIDUxNTg5LCA1MTU5NCwgNTE1OTksIAorICAgIDUxNjA0LCA1MTYwOSwgNTE2MTYsIDUxNjIxLCA1MTYyOCwgNTE2MzMsIDUxNjM4LCA1MTY0MiwgNTE2NDYsIDUxNjUzLCAKKyAgICA1MTY2MCwgNTE2NjcsIDUxNjc0LCA1MTY4MSwgNTE2ODgsIDUxNzAxLCA1MTcxNCwgNTE3MjcsIDUxNzQwLCA1MTc0OCwgCisgICAgNTE3NTYsIDUxNzYyLCA1MTc2OCwgNTE3NzUsIDUxNzgyLCA1MTc4OSwgNTE3OTYsIDUxODAwLCA1MTgwNSwgNTE4MTMsIAorICAgIDUxODIxLCA1MTgyOSwgNTE4MzYsIDUxODQwLCA1MTg0OCwgNTE4NTYsIDUxODYwLCA1MTg2NCwgNTE4NjksIDUxODc2LCAKKyAgICA1MTg4NCwgNTE4OTIsIDUxOTExLCA1MTkzMCwgNTE5NDksIDUxOTY4LCA1MTk4NywgNTIwMDYsIDUyMDI1LCA1MjA0NCwgCisgICAgNTIwNTAsIDUyMDU3LCA1MjA2NiwgNTIwNzQsIDUyMDgyLCA1MjA4NywgNTIwOTAsIDUyMDkzLCA1MjA5OCwgNTIxMDEsIAorICAgIDUyMTIwLCA1MjEyNywgNTIxMzMsIDUyMTM5LCA1MjE0MywgNTIxNDYsIDUyMTQ5LCA1MjE1MiwgNTIxNjQsIDUyMTc3LCAKKyAgICA1MjE4NCwgNTIxOTEsIDUyMTk0LCA1MjE5OCwgNTIyMDEsIDUyMjA2LCA1MjIxMSwgNTIyMTYsIDUyMjIyLCA1MjIzMSwgCisgICAgNTIyMzgsIDUyMjQ1LCA1MjI1MywgNTIyNjAsIDUyMjY3LCA1MjI3MCwgNTIyNzYsIDUyMjgyLCA1MjI4NSwgNTIyODgsIAorICAgIDUyMjkzLCA1MjI5OCwgNTIzMDQsIDUyMzEwLCA1MjMxNCwgNTIzMTksIDUyMzI2LCA1MjMzMCwgNTIzMzYsIDUyMzQwLCAKKyAgICA1MjM0NCwgNTIzNTIsIDUyMzY0LCA1MjM3MywgNTIzNzcsIDUyMzc5LCA1MjM4OCwgNTIzOTcsIDUyNDAzLCA1MjQwNiwgCisgICAgNTI0MTIsIDUyNDE4LCA1MjQyMywgNTI0MjgsIDUyNDMzLCA1MjQzOCwgNTI0NDMsIDUyNDQ4LCA1MjQ1MCwgNTI0NTYsIAorICAgIDUyNDYxLCA1MjQ2OCwgNTI0NzIsIDUyNDc4LCA1MjQ4MSwgNTI0ODUsIDUyNDkyLCA1MjQ5OSwgNTI1MDEsIDUyNTAzLCAKKyAgICA1MjUwOSwgNTI1MTUsIDUyNTIxLCA1MjUzMCwgNTI1MzksIDUyNTQ2LCA1MjU1MywgNTI1NTksIDUyNTY1LCA1MjU3MCwgCisgICAgNTI1NzUsIDUyNTgwLCA1MjU4NiwgNTI1OTIsIDUyNTk3LCA1MjYwNCwgNTI2MDgsIDUyNjEyLCA1MjYyNSwgNTI2MzgsIAorICAgIDUyNjUwLCA1MjY1OSwgNTI2NjUsIDUyNjcyLCA1MjY3NywgNTI2ODIsIDUyNjg3LCA1MjY5MiwgNTI2OTcsIDUyNjk5LCAKKyAgICA1MjcwNiwgNTI3MTMsIDUyNzIwLCA1MjcyNywgNTI3MzQsIDUyNzQyLCA1Mjc0OCwgNTI3NTMsIDUyNzU5LCA1Mjc2NSwgCisgICAgNTI3NzEsIDUyNzc4LCA1Mjc4NCwgNTI3OTIsIDUyODAwLCA1MjgwOCwgNTI4MTYsIDUyODIzLCA1MjgyOSwgNTI4MzUsIAorICAgIDUyODQ0LCA1Mjg0OCwgNTI4NTcsIDUyODY2LCA1Mjg3NSwgNTI4ODMsIDUyODg3LCA1Mjg5MywgNTI5MDAsIDUyOTA3LCAKKyAgICA1MjkxMSwgNTI5MTcsIDUyOTI0LCA1MjkyOSwgNTI5MzQsIDUyOTQwLCA1Mjk0NSwgNTI5NTAsIDUyOTU3LCA1Mjk2NCwgCisgICAgNTI5NjksIDUyOTc0LCA1Mjk4MiwgNTI5OTAsIDUzMDAwLCA1MzAxMCwgNTMwMTcsIDUzMDI0LCA1MzAyOCwgNTMwMzIsIAorICAgIDUzMDQ0LCA1MzA1MCwgNTMwNTYsIDUzMDYxLCA1MzA2NiwgNTMwNzMsIDUzMDgwLCA1MzA4NiwgNTMwOTIsIDUzMTAxLCAKKyAgICA1MzEwOSwgNTMxMTcsIDUzMTI0LCA1MzEzMSwgNTMxMzgsIDUzMTQ0LCA1MzE1MSwgNTMxNTcsIDUzMTY0LCA1MzE3MSwgCisgICAgNTMxNzgsIDUzMTg1LCA1MzE5MSwgNTMxOTYsIDUzMjA1LCA1MzIxNSwgNTMyMjIsIDUzMjMxLCA1MzIzNywgNTMyNDIsIAorICAgIDUzMjQ3LCA1MzI1NywgNTMyNjMsIDUzMjY5LCA1MzI3NSwgNTMyODMsIDUzMjg4LCA1MzI5NSwgNTMzMDIsIDUzMzEzLCAKKyAgICA1MzMyMCwgNTMzMjcsIDUzMzM0LCA1MzM0MSwgNTMzNDgsIDUzMzU1LCA1MzM2MiwgNTMzNzQsIDUzMzg2LCA1MzM5NywgCisgICAgNTM0MDgsIDUzNDIxLCA1MzQzNCwgNTM0MzksIDUzNDQ0LCA1MzQ1MywgNTM0NjIsIDUzNDY5LCA1MzQ3NiwgNTM0ODUsIAorICAgIDUzNDk0LCA1MzUwMiwgNTM1MTAsIDUzNTE4LCA1MzUyNiwgNTM1MzYsIDUzNTQ2LCA1MzU2MCwgNTM1NzQsIDUzNTgyLCAKKyAgICA1MzU5MCwgNTM2MDIsIDUzNjE0LCA1MzYyMiwgNTM2MzAsIDUzNjQwLCA1MzY1MCwgNTM2NTUsIDUzNjYwLCA1MzY2OSwgCisgICAgNTM2NzgsIDUzNjgzLCA1MzY4OCwgNTM2OTYsIDUzNzAyLCA1MzcwOCwgNTM3MTYsIDUzNzI0LCA1MzczNywgNTM3NTAsIAorICAgIDUzNzU0LCA1Mzc1OCwgNTM3NjUsIDUzNzcyLCA1Mzc3OSwgNTM3ODcsIDUzNzk1LCA1MzgwNCwgNTM4MTMsIDUzODE5LCAKKyAgICA1MzgyNSwgNTM4MzIsIDUzODM5LCA1Mzg0NiwgNTM4NTMsIDUzODYyLCA1Mzg3MSwgNTM4NzQsIDUzODc3LCA1Mzg4MiwgCisgICAgNTM4ODcsIDUzODkzLCA1Mzg5OSwgNTM5MDYsIDUzOTEzLCA1MzkyMywgNTM5MzMsIDUzOTQwLCA1Mzk0NywgNTM5NTUsIAorICAgIDUzOTYzLCA1Mzk3MSwgNTM5NzksIDUzOTg3LCA1Mzk5NSwgNTQwMDEsIDU0MDA3LCA1NDAxMSwgNTQwMTUsIDU0MDIyLCAKKyAgICA1NDAyOSwgNTQwMzQsIDU0MDM5LCA1NDA0NCwgNTQwNDksIDU0MDU1LCA1NDA2OSwgNTQwNzYsIDU0MDgzLCA1NDA4NywgCisgICAgNTQwODksIDU0MDkxLCA1NDA5NiwgNTQxMDEsIDU0MTA2LCA1NDExMSwgNTQxMTksIDU0MTI2LCA1NDEzMywgNTQxNDEsIAorICAgIDU0MTUzLCA1NDE2MSwgNTQxNjksIDU0MTgwLCA1NDE4NCwgNTQxODgsIDU0MTk0LCA1NDIwMiwgNTQyMTUsIDU0MjIyLCAKKyAgICA1NDIyOSwgNTQyMzYsIDU0MjQxLCA1NDI0OCwgNTQyNTcsIDU0MjY1LCA1NDI3MSwgNTQyNzcsIDU0MjgzLCA1NDI5MiwgCisgICAgNTQzMDEsIDU0MzA5LCA1NDMxOCwgNTQzMjMsIDU0MzI2LCA1NDMzMSwgNTQzMzcsIDU0MzQzLCA1NDM0OSwgNTQzNTUsIAorICAgIDU0MzU5LCA1NDM2MiwgNTQzNjYsIDU0MzcwLCA1NDM3NiwgNTQzODIsIDU0Mzg4LCA1NDM5NCwgNTQzOTgsIDU0NDAyLCAKKyAgICA1NDQwOSwgNTQ0MTYsIDU0NDIzLCA1NDQzMCwgNTQ0MzcsIDU0NDQ0LCA1NDQ1NCwgNTQ0NjQsIDU0NDcxLCA1NDQ3OCwgCisgICAgNTQ0ODYsIDU0NDk0LCA1NDQ5OCwgNTQ1MDMsIDU0NTA4LCA1NDUxNCwgNTQ1MjAsIDU0NTIzLCA1NDUyNiwgNTQ1MjksIAorICAgIDU0NTMyLCA1NDUzNiwgNTQ1NDEsIDU0NTQ2LCA1NDU1MSwgNTQ1NTYsIDU0NTYxLCA1NDU2NSwgNTQ1NjksIDU0NTczLCAKKyAgICA1NDU3NywgNTQ1ODEsIDU0NTg1LCA1NDU4OSwgNTQ1OTUsIDU0NTk5LCA1NDYwNSwgNTQ2MTAsIDU0NjE3LCA1NDYyNSwgCisgICAgNTQ2MzIsIDU0NjQwLCA1NDY0NywgNTQ2NTUsIDU0NjY0LCA1NDY3MSwgNTQ2ODEsIDU0NjkyLCA1NDY5OCwgNTQ3MDcsIAorICAgIDU0NzEzLCA1NDcyMiwgNTQ3MzEsIDU0NzM3LCA1NDc0MywgNTQ3NDcsIDU0NzUxLCA1NDc2MCwgNTQ3NjksIDU0Nzc2LCAKKyAgICA1NDc4MywgNTQ3OTIsIDAsIDAsIDAsIDU0ODAxLCA1NDgwNiwgNTQ4MTAsIDU0ODE0LCA1NDgxOSwgNTQ4MjQsIDU0ODI5LCAKKyAgICA1NDgzNywgNTQ4NDUsIDU0ODQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NDg0NywgNTQ4NTIsIDU0ODU3LCA1NDg2MiwgNTQ4NjcsIDU0ODcyLCA1NDg3NywgNTQ4ODIsIAotICAgIDU0ODg3LCA1NDg5MiwgNTQ4OTcsIDU0OTAzLCA1NDkwNywgNTQ5MTIsIDU0OTE3LCA1NDkyMiwgNTQ5MjcsIDU0OTMyLCAKLSAgICA1NDkzNywgNTQ5NDIsIDU0OTQ3LCA1NDk1MiwgNTQ5NTcsIDU0OTYyLCA1NDk2NywgNTQ5NzIsIDU0OTc3LCA1NDk4MiwgCi0gICAgNTQ5ODcsIDU0OTkyLCA1NDk5NywgNTUwMDIsIDU1MDA3LCA1NTAxMiwgNTUwMTcsIDU1MDIzLCA1NTAyOCwgNTUwMzQsIAotICAgIDU1MDQzLCA1NTA0OCwgNTUwNTYsIDU1MDYzLCA1NTA3MiwgNTUwNzcsIDU1MDgyLCA1NTA4NywgNTUwOTMsIDAsIDU1MTAwLCAKLSAgICA1NTEwNSwgNTUxMTAsIDU1MTE1LCA1NTEyMCwgNTUxMjUsIDU1MTMwLCA1NTEzNSwgNTUxNDAsIDU1MTQ1LCA1NTE1MCwgCi0gICAgNTUxNTYsIDU1MTYwLCA1NTE2NSwgNTUxNzAsIDU1MTc1LCA1NTE4MCwgNTUxODUsIDU1MTkwLCA1NTE5NSwgNTUyMDAsIAotICAgIDU1MjA1LCA1NTIxMCwgNTUyMTUsIDU1MjIwLCA1NTIyNSwgNTUyMzAsIDU1MjM1LCA1NTI0MCwgNTUyNDUsIDU1MjUwLCAKLSAgICA1NTI1NSwgNTUyNjAsIDU1MjY1LCA1NTI3MCwgNTUyNzYsIDU1MjgxLCA1NTI4NywgNTUyOTYsIDU1MzAxLCA1NTMwOSwgCi0gICAgNTUzMTYsIDU1MzI1LCA1NTMzMCwgNTUzMzUsIDU1MzQwLCA1NTM0NiwgMCwgNTUzNTMsIDU1MzYxLCA1NTM2OSwgNTUzNzgsIAotICAgIDU1Mzg1LCA1NTM5MywgNTUzOTksIDU1NDA4LCA1NTQxNiwgNTU0MjQsIDU1NDMyLCA1NTQ0MCwgNTU0NDgsIDU1NDU2LCAKLSAgICA1NTQ2MSwgNTU0NjgsIDU1NDc0LCA1NTQ4MSwgNTU0ODksIDU1NDk2LCA1NTUwMywgNTU1MTEsIDU1NTE3LCA1NTUyMywgCi0gICAgNTU1MzAsIDU1NTM3LCA1NTU0NywgNTU1NTcsIDU1NTY0LCA1NTU3MSwgNTU1NzYsIDU1NTg2LCA1NTU5NiwgNTU2MDEsIAotICAgIDU1NjA2LCA1NTYxMSwgNTU2MTYsIDU1NjIxLCA1NTYyNiwgNTU2MzEsIDU1NjM2LCA1NTY0MSwgNTU2NDYsIDU1NjUxLCAKLSAgICA1NTY1NiwgNTU2NjEsIDU1NjY2LCA1NTY3MSwgNTU2NzYsIDU1NjgxLCA1NTY4NiwgNTU2OTEsIDU1Njk2LCA1NTcwMSwgCi0gICAgNTU3MDYsIDU1NzExLCA1NTcxNiwgNTU3MjEsIDU1NzI2LCA1NTczMSwgNTU3MzYsIDU1NzQxLCA1NTc0NiwgNTU3NTAsIAotICAgIDU1NzU0LCA1NTc1OSwgNTU3NjQsIDU1NzY5LCA1NTc3NCwgNTU3NzksIDU1Nzg0LCA1NTc4OSwgNTU3OTQsIDU1Nzk5LCAKLSAgICA1NTgwNCwgNTU4MDksIDU1ODE0LCA1NTgxOSwgNTU4MjQsIDU1ODI5LCA1NTgzNCwgNTU4MzksIDU1ODQ0LCA1NTg1MSwgCi0gICAgNTU4NTgsIDU1ODY1LCA1NTg3MiwgNTU4NzksIDU1ODg2LCA1NTg5MywgNTU5MDAsIDU1OTA3LCA1NTkxNCwgNTU5MjEsIAotICAgIDU1OTI4LCA1NTkzNSwgNTU5NDIsIDU1OTQ3LCA1NTk1MiwgNTU5NTksIDU1OTY2LCA1NTk3MywgNTU5ODAsIDU1OTg3LCAKLSAgICA1NTk5NCwgNTYwMDEsIDU2MDA4LCA1NjAxNSwgNTYwMjIsIDU2MDI5LCA1NjAzNiwgNTYwNDIsIDU2MDQ4LCA1NjA1NCwgCi0gICAgNTYwNjAsIDU2MDY3LCA1NjA3NCwgNTYwODEsIDU2MDg4LCA1NjA5NSwgNTYxMDIsIDU2MTA5LCA1NjExNiwgNTYxMjMsIAotICAgIDU2MTMwLCA1NjEzOCwgNTYxNDYsIDU2MTU0LCA1NjE2MiwgNTYxNzAsIDU2MTc4LCA1NjE4NiwgNTYxOTQsIDU2MTk4LCAKLSAgICA1NjIwNCwgNTYyMTAsIDU2MjE0LCA1NjIyMCwgNTYyMjYsIDU2MjMyLCA1NjIzOSwgNTYyNDYsIDU2MjUzLCA1NjI2MCwgCi0gICAgNTYyNjUsIDU2MjcxLCA1NjI3NywgNTYyODQsIDAsIDAsIDAsIDAsIDAsIDU2MjkxLCA1NjI5OSwgNTYzMDgsIDU2MzE3LCAKLSAgICA1NjMyNSwgNTYzMzEsIDU2MzM2LCA1NjM0MSwgNTYzNDYsIDU2MzUxLCA1NjM1NiwgNTYzNjEsIDU2MzY2LCA1NjM3MSwgCi0gICAgNTYzNzYsIDU2MzgxLCA1NjM4NiwgNTYzOTEsIDU2Mzk2LCA1NjQwMSwgNTY0MDYsIDU2NDExLCA1NjQxNiwgNTY0MjEsIAotICAgIDU2NDI2LCA1NjQzMSwgNTY0MzYsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU2LCA1NjQ2MSwgNTY0NjYsIDU2NDcxLCAKLSAgICA1NjQ3NiwgNTY0ODEsIDU2NDg2LCA1NjQ5MSwgNTY0OTYsIDU2NTAxLCA1NjUwNiwgNTY1MTEsIDU2NTE2LCA1NjUyMSwgCi0gICAgNTY1MjYsIDAsIDU2NTMxLCAwLCAwLCAwLCAwLCAwLCA1NjUzNiwgMCwgMCwgNTY1NDEsIDU2NTQ1LCA1NjU1MCwgNTY1NTUsIAotICAgIDU2NTYwLCA1NjU2NSwgNTY1NzQsIDU2NTc5LCA1NjU4NCwgNTY1ODksIDU2NTk0LCA1NjU5OSwgNTY2MDQsIDU2NjA5LCAKLSAgICA1NjYxNCwgNTY2MjEsIDU2NjI2LCA1NjYzMSwgNTY2NDAsIDU2NjQ3LCA1NjY1MiwgNTY2NTcsIDU2NjYyLCA1NjY2OSwgCi0gICAgNTY2NzQsIDU2NjgxLCA1NjY4NiwgNTY2OTEsIDU2Njk4LCA1NjcwNSwgNTY3MTAsIDU2NzE1LCA1NjcyMCwgNTY3MjcsIAotICAgIDU2NzM0LCA1NjczOSwgNTY3NDQsIDU2NzQ5LCA1Njc1NCwgNTY3NTksIDU2NzY2LCA1Njc3MywgNTY3NzgsIDU2NzgzLCAKLSAgICA1Njc4OCwgNTY3OTMsIDU2Nzk4LCA1NjgwMywgNTY4MDgsIDU2ODEzLCA1NjgxOCwgNTY4MjMsIDU2ODI4LCA1NjgzNSwgCi0gICAgNTY4NDAsIDU2ODQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg1MCwgNTY4NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU2ODYyLCA1Njg2NywgNTY4NzEsIDU2ODc1LCA1Njg3OSwgNTY4ODMsIDU2ODg3LCA1Njg5MSwgCi0gICAgNTY4OTUsIDU2ODk5LCA1NjkwMywgNTY5MDcsIDU2OTEzLCA1NjkxNywgNTY5MjEsIDU2OTI1LCA1NjkyOSwgNTY5MzMsIAotICAgIDU2OTM3LCA1Njk0MSwgNTY5NDUsIDU2OTQ5LCA1Njk1MywgNTY5NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU2OTYxLCA1Njk2NSwgNTY5NjksIDU2OTczLCA1Njk3NywgNTY5ODEsIDU2OTg1LCAwLCA1Njk4OSwgNTY5OTMsIDU2OTk3LCAKLSAgICA1NzAwMSwgNTcwMDUsIDU3MDA5LCA1NzAxMywgMCwgNTcwMTcsIDU3MDIxLCA1NzAyNSwgNTcwMjksIDU3MDMzLCA1NzAzNywgCi0gICAgNTcwNDEsIDAsIDU3MDQ1LCA1NzA0OSwgNTcwNTMsIDU3MDU3LCA1NzA2MSwgNTcwNjUsIDU3MDY5LCAwLCA1NzA3MywgCi0gICAgNTcwNzcsIDU3MDgxLCA1NzA4NSwgNTcwODksIDU3MDkzLCA1NzA5NywgMCwgNTcxMDEsIDU3MTA1LCA1NzEwOSwgNTcxMTMsIAotICAgIDU3MTE3LCA1NzEyMSwgNTcxMjUsIDAsIDU3MTI5LCA1NzEzMywgNTcxMzcsIDU3MTQxLCA1NzE0NSwgNTcxNDksIDU3MTUzLCAKLSAgICAwLCA1NzE1NywgNTcxNjEsIDU3MTY1LCA1NzE2OSwgNTcxNzMsIDU3MTc3LCA1NzE4MSwgMCwgNTcxODUsIDU3MTkwLCAKLSAgICA1NzE5NSwgNTcyMDAsIDU3MjA1LCA1NzIxMCwgNTcyMTUsIDU3MjE5LCA1NzIyNCwgNTcyMjksIDU3MjM0LCA1NzIzOCwgCi0gICAgNTcyNDMsIDU3MjQ4LCA1NzI1MywgNTcyNTgsIDU3MjYyLCA1NzI2NywgNTcyNzIsIDU3Mjc3LCA1NzI4MiwgNTcyODcsIAotICAgIDU3MjkyLCA1NzI5NiwgNTczMDEsIDU3MzA2LCA1NzMxMywgNTczMTgsIDU3MzIzLCA1NzMyOSwgNTczMzYsIDU3MzQzLCAKLSAgICA1NzM1MiwgNTczNTksIDU3MzY4LCA1NzM3MiwgNTczNzYsIDU3MzgyLCA1NzM4OCwgNTczOTQsIDU3NDAyLCA1NzQwOCwgCi0gICAgNTc0MTIsIDU3NDE2LCA1NzQyMCwgNTc0MjYsIDU3NDMyLCA1NzQzNiwgNTc0MzgsIDU3NDQyLCA1NzQ0OCwgNTc0NTAsIAotICAgIDU3NDU0LCA1NzQ1OCwgNTc0NjIsIDU3NDY4LCA1NzQ3MywgNTc0NzcsIDU3NDgxLCA1NzQ4NiwgNTc0OTIsIDU3NDk3LCAKLSAgICA1NzUwMiwgNTc1MDcsIDU3NTEyLCA1NzUxOSwgNTc1MjYsIDU3NTMxLCA1NzUzNiwgNTc1NDEsIDU3NTQ2LCA1NzU1MSwgCi0gICAgNTc1NTYsIDU3NTYwLCA1NzU2NCwgNTc1NzEsIDU3NTc4LCA1NzU4NCwgNTc1ODgsIDU3NTkzLCA1NzU5NSwgNTc1OTksIAotICAgIDU3NjA3LCA1NzYxMSwgNTc2MTUsIDU3NjE5LCA1NzYyMywgNTc2MjksIDU3NjM1LCA1NzYzOSwgNTc2NDUsIDU3NjQ5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NDg1MiwgNTQ4NTcsIDU0ODYyLCA1NDg2NywgNTQ4NzIsIDU0ODc3LCA1NDg4MiwgNTQ4ODcsIAorICAgIDU0ODkyLCA1NDg5NywgNTQ5MDIsIDU0OTA4LCA1NDkxMiwgNTQ5MTcsIDU0OTIyLCA1NDkyNywgNTQ5MzIsIDU0OTM3LCAKKyAgICA1NDk0MiwgNTQ5NDcsIDU0OTUyLCA1NDk1NywgNTQ5NjIsIDU0OTY3LCA1NDk3MiwgNTQ5NzcsIDU0OTgyLCA1NDk4NywgCisgICAgNTQ5OTIsIDU0OTk3LCA1NTAwMiwgNTUwMDcsIDU1MDEyLCA1NTAxNywgNTUwMjIsIDU1MDI4LCA1NTAzMywgNTUwMzksIAorICAgIDU1MDQ4LCA1NTA1MywgNTUwNjEsIDU1MDY4LCA1NTA3NywgNTUwODIsIDU1MDg3LCA1NTA5MiwgNTUwOTgsIDAsIDU1MTA1LCAKKyAgICA1NTExMCwgNTUxMTUsIDU1MTIwLCA1NTEyNSwgNTUxMzAsIDU1MTM1LCA1NTE0MCwgNTUxNDUsIDU1MTUwLCA1NTE1NSwgCisgICAgNTUxNjEsIDU1MTY1LCA1NTE3MCwgNTUxNzUsIDU1MTgwLCA1NTE4NSwgNTUxOTAsIDU1MTk1LCA1NTIwMCwgNTUyMDUsIAorICAgIDU1MjEwLCA1NTIxNSwgNTUyMjAsIDU1MjI1LCA1NTIzMCwgNTUyMzUsIDU1MjQwLCA1NTI0NSwgNTUyNTAsIDU1MjU1LCAKKyAgICA1NTI2MCwgNTUyNjUsIDU1MjcwLCA1NTI3NSwgNTUyODEsIDU1Mjg2LCA1NTI5MiwgNTUzMDEsIDU1MzA2LCA1NTMxNCwgCisgICAgNTUzMjEsIDU1MzMwLCA1NTMzNSwgNTUzNDAsIDU1MzQ1LCA1NTM1MSwgMCwgNTUzNTgsIDU1MzY2LCA1NTM3NCwgNTUzODMsIAorICAgIDU1MzkwLCA1NTM5OCwgNTU0MDQsIDU1NDEzLCA1NTQyMSwgNTU0MjksIDU1NDM3LCA1NTQ0NSwgNTU0NTMsIDU1NDYxLCAKKyAgICA1NTQ2NiwgNTU0NzMsIDU1NDc5LCA1NTQ4NiwgNTU0OTQsIDU1NTAxLCA1NTUwOCwgNTU1MTYsIDU1NTIyLCA1NTUyOCwgCisgICAgNTU1MzUsIDU1NTQyLCA1NTU1MiwgNTU1NjIsIDU1NTY5LCA1NTU3NiwgNTU1ODEsIDU1NTkxLCA1NTYwMSwgNTU2MDYsIAorICAgIDU1NjExLCA1NTYxNiwgNTU2MjEsIDU1NjI2LCA1NTYzMSwgNTU2MzYsIDU1NjQxLCA1NTY0NiwgNTU2NTEsIDU1NjU2LCAKKyAgICA1NTY2MSwgNTU2NjYsIDU1NjcxLCA1NTY3NiwgNTU2ODEsIDU1Njg2LCA1NTY5MSwgNTU2OTYsIDU1NzAxLCA1NTcwNiwgCisgICAgNTU3MTEsIDU1NzE2LCA1NTcyMSwgNTU3MjYsIDU1NzMxLCA1NTczNiwgNTU3NDEsIDU1NzQ2LCA1NTc1MSwgNTU3NTUsIAorICAgIDU1NzU5LCA1NTc2NCwgNTU3NjksIDU1Nzc0LCA1NTc3OSwgNTU3ODQsIDU1Nzg5LCA1NTc5NCwgNTU3OTksIDU1ODA0LCAKKyAgICA1NTgwOSwgNTU4MTQsIDU1ODE5LCA1NTgyNCwgNTU4MjksIDU1ODM0LCA1NTgzOSwgNTU4NDQsIDU1ODQ5LCA1NTg1NiwgCisgICAgNTU4NjMsIDU1ODcwLCA1NTg3NywgNTU4ODQsIDU1ODkxLCA1NTg5OCwgNTU5MDUsIDU1OTEyLCA1NTkxOSwgNTU5MjYsIAorICAgIDU1OTMzLCA1NTk0MCwgNTU5NDcsIDU1OTUyLCA1NTk1NywgNTU5NjQsIDU1OTcxLCA1NTk3OCwgNTU5ODUsIDU1OTkyLCAKKyAgICA1NTk5OSwgNTYwMDYsIDU2MDEzLCA1NjAyMCwgNTYwMjcsIDU2MDM0LCA1NjA0MSwgNTYwNDcsIDU2MDUzLCA1NjA1OSwgCisgICAgNTYwNjUsIDU2MDcyLCA1NjA3OSwgNTYwODYsIDU2MDkzLCA1NjEwMCwgNTYxMDcsIDU2MTE0LCA1NjEyMSwgNTYxMjgsIAorICAgIDU2MTM1LCA1NjE0MywgNTYxNTEsIDU2MTU5LCA1NjE2NywgNTYxNzUsIDU2MTgzLCA1NjE5MSwgNTYxOTksIDU2MjAzLCAKKyAgICA1NjIwOSwgNTYyMTUsIDU2MjE5LCA1NjIyNSwgNTYyMzEsIDU2MjM3LCA1NjI0NCwgNTYyNTEsIDU2MjU4LCA1NjI2NSwgCisgICAgNTYyNzAsIDU2Mjc2LCA1NjI4MiwgNTYyODksIDAsIDAsIDAsIDAsIDAsIDU2Mjk2LCA1NjMwNCwgNTYzMTMsIDU2MzIyLCAKKyAgICA1NjMzMCwgNTYzMzYsIDU2MzQxLCA1NjM0NiwgNTYzNTEsIDU2MzU2LCA1NjM2MSwgNTYzNjYsIDU2MzcxLCA1NjM3NiwgCisgICAgNTYzODEsIDU2Mzg2LCA1NjM5MSwgNTYzOTYsIDU2NDAxLCA1NjQwNiwgNTY0MTEsIDU2NDE2LCA1NjQyMSwgNTY0MjYsIAorICAgIDU2NDMxLCA1NjQzNiwgNTY0NDEsIDU2NDQ2LCA1NjQ1MSwgNTY0NTYsIDU2NDYxLCA1NjQ2NiwgNTY0NzEsIDU2NDc2LCAKKyAgICA1NjQ4MSwgNTY0ODYsIDU2NDkxLCA1NjQ5NiwgNTY1MDEsIDU2NTA2LCA1NjUxMSwgNTY1MTYsIDU2NTIxLCA1NjUyNiwgCisgICAgNTY1MzEsIDAsIDU2NTM2LCAwLCAwLCAwLCAwLCAwLCA1NjU0MSwgMCwgMCwgNTY1NDYsIDU2NTUwLCA1NjU1NSwgNTY1NjAsIAorICAgIDU2NTY1LCA1NjU3MCwgNTY1NzksIDU2NTg0LCA1NjU4OSwgNTY1OTQsIDU2NTk5LCA1NjYwNCwgNTY2MDksIDU2NjE0LCAKKyAgICA1NjYxOSwgNTY2MjYsIDU2NjMxLCA1NjYzNiwgNTY2NDUsIDU2NjUyLCA1NjY1NywgNTY2NjIsIDU2NjY3LCA1NjY3NCwgCisgICAgNTY2NzksIDU2Njg2LCA1NjY5MSwgNTY2OTYsIDU2NzAzLCA1NjcxMCwgNTY3MTUsIDU2NzIwLCA1NjcyNSwgNTY3MzIsIAorICAgIDU2NzM5LCA1Njc0NCwgNTY3NDksIDU2NzU0LCA1Njc1OSwgNTY3NjQsIDU2NzcxLCA1Njc3OCwgNTY3ODMsIDU2Nzg4LCAKKyAgICA1Njc5MywgNTY3OTgsIDU2ODAzLCA1NjgwOCwgNTY4MTMsIDU2ODE4LCA1NjgyMywgNTY4MjgsIDU2ODMzLCA1Njg0MCwgCisgICAgNTY4NDUsIDU2ODUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg1NSwgNTY4NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU2ODY3LCA1Njg3MiwgNTY4NzYsIDU2ODgwLCA1Njg4NCwgNTY4ODgsIDU2ODkyLCA1Njg5NiwgCisgICAgNTY5MDAsIDU2OTA0LCA1NjkwOCwgNTY5MTIsIDU2OTE4LCA1NjkyMiwgNTY5MjYsIDU2OTMwLCA1NjkzNCwgNTY5MzgsIAorICAgIDU2OTQyLCA1Njk0NiwgNTY5NTAsIDU2OTU0LCA1Njk1OCwgNTY5NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU2OTY2LCA1Njk3MCwgNTY5NzQsIDU2OTc4LCA1Njk4MiwgNTY5ODYsIDU2OTkwLCAwLCA1Njk5NCwgNTY5OTgsIDU3MDAyLCAKKyAgICA1NzAwNiwgNTcwMTAsIDU3MDE0LCA1NzAxOCwgMCwgNTcwMjIsIDU3MDI2LCA1NzAzMCwgNTcwMzQsIDU3MDM4LCA1NzA0MiwgCisgICAgNTcwNDYsIDAsIDU3MDUwLCA1NzA1NCwgNTcwNTgsIDU3MDYyLCA1NzA2NiwgNTcwNzAsIDU3MDc0LCAwLCA1NzA3OCwgCisgICAgNTcwODIsIDU3MDg2LCA1NzA5MCwgNTcwOTQsIDU3MDk4LCA1NzEwMiwgMCwgNTcxMDYsIDU3MTEwLCA1NzExNCwgNTcxMTgsIAorICAgIDU3MTIyLCA1NzEyNiwgNTcxMzAsIDAsIDU3MTM0LCA1NzEzOCwgNTcxNDIsIDU3MTQ2LCA1NzE1MCwgNTcxNTQsIDU3MTU4LCAKKyAgICAwLCA1NzE2MiwgNTcxNjYsIDU3MTcwLCA1NzE3NCwgNTcxNzgsIDU3MTgyLCA1NzE4NiwgMCwgNTcxOTAsIDU3MTk1LCAKKyAgICA1NzIwMCwgNTcyMDUsIDU3MjEwLCA1NzIxNSwgNTcyMjAsIDU3MjI0LCA1NzIyOSwgNTcyMzQsIDU3MjM5LCA1NzI0MywgCisgICAgNTcyNDgsIDU3MjUzLCA1NzI1OCwgNTcyNjMsIDU3MjY3LCA1NzI3MiwgNTcyNzcsIDU3MjgyLCA1NzI4NywgNTcyOTIsIAorICAgIDU3Mjk3LCA1NzMwMSwgNTczMDYsIDU3MzExLCA1NzMxOCwgNTczMjMsIDU3MzI4LCA1NzMzNCwgNTczNDEsIDU3MzQ4LCAKKyAgICA1NzM1NywgNTczNjQsIDU3MzczLCA1NzM3NywgNTczODEsIDU3Mzg3LCA1NzM5MywgNTczOTksIDU3NDA3LCA1NzQxMywgCisgICAgNTc0MTcsIDU3NDIxLCA1NzQyNSwgNTc0MzEsIDU3NDM3LCA1NzQ0MSwgNTc0NDMsIDU3NDQ3LCA1NzQ1MywgNTc0NTUsIAorICAgIDU3NDU5LCA1NzQ2MywgNTc0NjcsIDU3NDczLCA1NzQ3OCwgNTc0ODIsIDU3NDg2LCA1NzQ5MSwgNTc0OTcsIDU3NTAyLCAKKyAgICA1NzUwNywgNTc1MTIsIDU3NTE3LCA1NzUyNCwgNTc1MzEsIDU3NTM2LCA1NzU0MSwgNTc1NDYsIDU3NTUxLCA1NzU1NiwgCisgICAgNTc1NjEsIDU3NTY1LCA1NzU2OSwgNTc1NzYsIDU3NTgzLCA1NzU4OSwgNTc1OTMsIDU3NTk4LCA1NzYwMCwgNTc2MDQsIAorICAgIDU3NjEyLCA1NzYxNiwgNTc2MjAsIDU3NjI0LCA1NzYyOCwgNTc2MzQsIDU3NjQwLCA1NzY0NCwgNTc2NTAsIDU3NjU0LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzY1MywgNTc2NTcsIAotICAgIDU3NjYxLCA1NzY2NiwgNTc2NzEsIDU3Njc2LCA1NzY4MCwgNTc2ODQsIDU3Njg4LCA1NzY5MywgNTc2OTgsIDU3NzAyLCAKLSAgICA1NzcwNiwgNTc3MTAsIDU3NzE0LCA1NzcxOSwgNTc3MjQsIDU3NzI5LCA1NzczNCwgNTc3MzgsIDU3NzQyLCA1Nzc0NywgCi0gICAgNTc3NTIsIDU3NzU3LCA1Nzc2MiwgNTc3NjYsIDAsIDU3NzcwLCA1Nzc3NCwgNTc3NzgsIDU3NzgyLCA1Nzc4NiwgNTc3OTAsIAotICAgIDU3Nzk0LCA1Nzc5OSwgNTc4MDQsIDU3ODA4LCA1NzgxMywgNTc4MTgsIDU3ODI3LCA1NzgzMSwgNTc4MzUsIDU3ODM5LCAKLSAgICA1Nzg0NiwgNTc4NTAsIDU3ODU1LCA1Nzg2MCwgNTc4NjQsIDU3ODY4LCA1Nzg3NCwgNTc4NzksIDU3ODg0LCA1Nzg4OSwgCi0gICAgNTc4OTQsIDU3ODk4LCA1NzkwMiwgNTc5MDYsIDU3OTEwLCA1NzkxNCwgNTc5MTksIDU3OTI0LCA1NzkyOCwgNTc5MzIsIAotICAgIDU3OTM3LCA1Nzk0MiwgNTc5NDcsIDU3OTUxLCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MSwgNTc5NzcsIDU3OTgxLCAKLSAgICA1Nzk4NywgNTc5OTMsIDU3OTk3LCA1ODAwMywgNTgwMDksIDU4MDE0LCA1ODAxOSwgNTgwMjMsIDU4MDI5LCA1ODAzMywgCi0gICAgNTgwMzcsIDU4MDQzLCA1ODA0OSwgNTgwNTQsIDU4MDU5LCA1ODA2MywgNTgwNjcsIDU4MDc1LCA1ODA4MSwgNTgwODcsIAotICAgIDU4MDkzLCA1ODA5OCwgNTgxMDMsIDU4MTA4LCA1ODExNCwgNTgxMTgsIDU4MTI0LCA1ODEyOCwgNTgxMzIsIDU4MTM4LCAKLSAgICA1ODE0NCwgNTgxNTAsIDU4MTU2LCA1ODE2MiwgNTgxNjgsIDU4MTc0LCA1ODE4MCwgNTgxODYsIDU4MTkyLCA1ODE5OCwgCi0gICAgNTgyMDQsIDU4MjA4LCA1ODIxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyMjAsIDU4MjIzLCAKLSAgICA1ODIyNywgNTgyMzEsIDU4MjM1LCA1ODIzOSwgNTgyNDIsIDU4MjQ1LCA1ODI0OSwgNTgyNTMsIDU4MjU3LCA1ODI2MSwgCi0gICAgNTgyNjQsIDU4MjY5LCA1ODI3MywgNTgyNzcsIDU4MjgxLCA1ODI4NiwgNTgyOTAsIDU4Mjk0LCA1ODI5OCwgNTgzMDIsIAotICAgIDU4MzA4LCA1ODMxNCwgNTgzMTgsIDU4MzIyLCA1ODMyNiwgNTgzMzAsIDU4MzM0LCA1ODMzOCwgNTgzNDIsIDU4MzQ2LCAKLSAgICA1ODM1MCwgNTgzNTQsIDU4MzU4LCA1ODM2NCwgNTgzNjgsIDU4MzcyLCA1ODM3NiwgNTgzODAsIDU4Mzg0LCA1ODM4OCwgCi0gICAgNTgzOTIsIDU4Mzk2LCA1ODQwMCwgNTg0MDQsIDU4NDA4LCA1ODQxMiwgNTg0MTYsIDU4NDIwLCA1ODQyNCwgNTg0MjgsIAotICAgIDU4NDM0LCA1ODQ0MCwgNTg0NDUsIDU4NDUwLCA1ODQ1NCwgNTg0NTgsIDU4NDYyLCA1ODQ2NiwgNTg0NzAsIDU4NDc0LCAKLSAgICA1ODQ3OCwgNTg0ODIsIDU4NDg2LCA1ODQ5MCwgNTg0OTQsIDU4NDk4LCA1ODUwMiwgNTg1MDYsIDU4NTEwLCA1ODUxNCwgCi0gICAgNTg1MTgsIDU4NTIyLCA1ODUyNiwgNTg1MzAsIDU4NTM0LCA1ODUzOCwgNTg1NDIsIDU4NTQ2LCA1ODU1MiwgNTg1NTYsIAotICAgIDU4NTYwLCA1ODU2NCwgNTg1NjgsIDU4NTcyLCA1ODU3NiwgNTg1ODAsIDU4NTg0LCA1ODU4OSwgNTg1OTYsIDU4NjAwLCAKLSAgICA1ODYwNCwgNTg2MDgsIDU4NjEyLCA1ODYxNiwgNTg2MjAsIDU4NjI0LCA1ODYyOCwgNTg2MzIsIDU4NjM2LCA1ODY0MCwgCi0gICAgNTg2NDQsIDU4NjUxLCA1ODY1NSwgNTg2NjEsIDU4NjY1LCA1ODY2OSwgNTg2NzMsIDU4Njc3LCA1ODY4MSwgNTg2ODQsIAotICAgIDU4Njg4LCA1ODY5MiwgNTg2OTYsIDU4NzAwLCA1ODcwNCwgNTg3MDgsIDU4NzEyLCA1ODcxNiwgNTg3MjAsIDU4NzI0LCAKLSAgICA1ODcyOCwgNTg3MzIsIDU4NzM2LCA1ODc0MCwgNTg3NDQsIDU4NzQ4LCA1ODc1MiwgNTg3NTYsIDU4NzYwLCA1ODc2NCwgCi0gICAgNTg3NjgsIDU4NzcyLCA1ODc3NiwgNTg3ODAsIDU4Nzg0LCA1ODc4OCwgNTg3OTIsIDU4Nzk2LCA1ODgwMCwgNTg4MDQsIAotICAgIDU4ODA4LCA1ODgxMiwgNTg4MTgsIDU4ODIyLCA1ODgyNiwgNTg4MzAsIDU4ODM0LCA1ODgzOCwgNTg4NDIsIDU4ODQ2LCAKLSAgICA1ODg1MCwgNTg4NTQsIDU4ODU4LCA1ODg2MiwgNTg4NjYsIDU4ODcwLCA1ODg3NCwgNTg4NzgsIDU4ODgyLCA1ODg4NiwgCi0gICAgNTg4OTAsIDU4ODk0LCA1ODg5OCwgNTg5MDIsIDU4OTA2LCA1ODkxMCwgNTg5MTQsIDU4OTE4LCA1ODkyMiwgNTg5MjYsIAotICAgIDU4OTM0LCA1ODkzOCwgNTg5NDIsIDU4OTQ2LCA1ODk1MCwgNTg5NTQsIDU4OTYwLCA1ODk2NCwgNTg5NjgsIDU4OTcyLCAKLSAgICA1ODk3NiwgNTg5ODAsIDU4OTg0LCA1ODk4OCwgNTg5OTIsIDU4OTk2LCA1OTAwMCwgNTkwMDQsIDU5MDA4LCA1OTAxMiwgCi0gICAgNTkwMTgsIDU5MDIyLCA1OTAyNiwgNTkwMzAsIDU5MDM0LCA1OTAzOCwgNTkwNDIsIDU5MDQ2LCA1OTA1MCwgNTkwNTQsIAotICAgIDU5MDU4LCA1OTA2MiwgNTkwNjYsIDU5MDcwLCA1OTA3NCwgNTkwNzgsIDU5MDgyLCA1OTA4NiwgNTkwOTAsIDU5MDk0LCAKLSAgICA1OTA5OCwgNTkxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU5MTA2LCA1OTExNSwgNTkxMjMsIDU5MTM1LCA1OTE0NiwgNTkxNTQsIDU5MTYzLCA1OTE3MiwgCi0gICAgNTkxODIsIDU5MTk0LCA1OTIwNiwgNTkyMTgsIDAsIDAsIDAsIDAsIDU5MjI0LCA1OTIyNywgNTkyMzAsIDU5MjM1LCAKLSAgICA1OTIzOCwgNTkyNDUsIDU5MjQ5LCA1OTI1MywgNTkyNTcsIDU5MjYxLCA1OTI2NSwgNTkyNzAsIDU5Mjc1LCA1OTI3OSwgCi0gICAgNTkyODMsIDU5Mjg4LCA1OTI5MywgNTkyOTgsIDU5MzAzLCA1OTMwNiwgNTkzMDksIDU5MzE1LCA1OTMyMSwgNTkzMjYsIAotICAgIDU5MzMxLCA1OTMzOCwgNTkzNDUsIDU5MzQ5LCA1OTM1MywgNTkzNTcsIDU5MzY1LCA1OTM3MSwgNTkzNzgsIDU5MzgzLCAKLSAgICA1OTM4OCwgNTkzOTMsIDU5Mzk4LCA1OTQwMywgNTk0MDgsIDU5NDEzLCA1OTQxOCwgNTk0MjMsIDU5NDI4LCA1OTQzMywgCi0gICAgNTk0MzgsIDU5NDQzLCA1OTQ0OCwgNTk0NTQsIDU5NDU5LCA1OTQ2MywgNTk0NjksIDU5NDgwLCA1OTQ5MCwgNTk1MDUsIAotICAgIDU5NTE1LCA1OTUxOSwgNTk1MjksIDU5NTM1LCA1OTU0MSwgNTk1NDcsIDU5NTUyLCA1OTU1NSwgNTk1NjAsIDU5NTY0LCAwLCAKLSAgICA1OTU3MCwgNTk1NzQsIDU5NTc3LCA1OTU4MSwgNTk1ODQsIDU5NTg4LCA1OTU5MSwgNTk1OTUsIDU5NTk4LCA1OTYwMiwgCi0gICAgNTk2MDUsIDU5NjA4LCA1OTYxMiwgNTk2MTYsIDU5NjIwLCA1OTYyNCwgNTk2MjgsIDU5NjMyLCA1OTYzNiwgNTk2NDAsIAotICAgIDU5NjQ0LCA1OTY0NywgNTk2NTEsIDU5NjU1LCA1OTY1OSwgNTk2NjMsIDU5NjY3LCA1OTY3MSwgNTk2NzUsIDU5Njc5LCAKLSAgICA1OTY4MywgNTk2ODcsIDU5NjkxLCA1OTY5NSwgNTk2OTksIDU5NzA0LCA1OTcwOCwgNTk3MTIsIDU5NzE2LCA1OTcyMCwgCi0gICAgNTk3MjMsIDU5NzI3LCA1OTczMCwgNTk3MzQsIDU5NzM4LCA1OTc0MiwgNTk3NDYsIDU5NzQ5LCA1OTc1MywgNTk3NTYsIAotICAgIDU5NzYwLCA1OTc2NCwgNTk3NjgsIDU5NzcyLCA1OTc3NiwgNTk3ODAsIDU5Nzg0LCA1OTc4OCwgNTk3OTIsIDU5Nzk2LCAKLSAgICA1OTgwMCwgNTk4MDQsIDU5ODA3LCA1OTgxMSwgNTk4MTUsIDU5ODE5LCA1OTgyMywgNTk4MjcsIDU5ODMwLCA1OTgzNSwgCi0gICAgNTk4MzksIDU5ODQ0LCA1OTg0OCwgNTk4NTEsIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY3LCA1OTg3MiwgNTk4NzYsIAotICAgIDU5ODgwLCA1OTg4NCwgNTk4ODgsIDU5ODkyLCA1OTg5NiwgNTk5MDAsIDAsIDAsIDU5OTA1LCA1OTkxMywgNTk5MjEsIAotICAgIDU5OTI4LCA1OTkzNSwgNTk5MzksIDU5OTQ1LCA1OTk1MCwgNTk5NTUsIDU5OTU5LCA1OTk2MiwgNTk5NjYsIDU5OTY5LCAKLSAgICA1OTk3MywgNTk5NzYsIDU5OTgwLCA1OTk4MywgNTk5ODcsIDU5OTkwLCA1OTk5MywgNTk5OTcsIDYwMDAxLCA2MDAwNSwgCi0gICAgNjAwMDksIDYwMDEzLCA2MDAxNywgNjAwMjEsIDYwMDI1LCA2MDAyOSwgNjAwMzIsIDYwMDM2LCA2MDA0MCwgNjAwNDQsIAotICAgIDYwMDQ4LCA2MDA1MiwgNjAwNTYsIDYwMDYwLCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODAsIDYwMDg0LCAKLSAgICA2MDA4OSwgNjAwOTMsIDYwMDk3LCA2MDEwMSwgNjAxMDUsIDYwMTA4LCA2MDExMiwgNjAxMTUsIDYwMTE5LCA2MDEyMywgCi0gICAgNjAxMjcsIDYwMTMxLCA2MDEzNCwgNjAxMzgsIDYwMTQxLCA2MDE0NSwgNjAxNDksIDYwMTUzLCA2MDE1NywgNjAxNjEsIAotICAgIDYwMTY1LCA2MDE2OSwgNjAxNzMsIDYwMTc3LCA2MDE4MSwgNjAxODUsIDYwMTg5LCA2MDE5MiwgNjAxOTYsIDYwMjAwLCAKLSAgICA2MDIwNCwgNjAyMDgsIDYwMjEyLCA2MDIxNSwgNjAyMjAsIDYwMjI0LCA2MDIyOSwgNjAyMzMsIDYwMjM2LCA2MDI0MCwgCi0gICAgNjAyNDQsIDYwMjQ4LCA2MDI1MiwgNjAyNTcsIDYwMjYxLCA2MDI2NSwgNjAyNjksIDYwMjczLCA2MDI3NywgNjAyODEsIAotICAgIDYwMjg1LCA2MDI5MCwgNjAyOTQsIDYwMjk4LCA2MDMwMiwgNjAzMDYsIDYwMzExLCA2MDMxOCwgNjAzMjIsIDYwMzI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MDMzMywgNjAzMzgsIDYwMzQzLCA2MDM0NywgNjAzNTIsIDYwMzU3LCA2MDM2MiwgNjAzNjcsIAotICAgIDYwMzcxLCA2MDM3NiwgNjAzODEsIDYwMzg2LCA2MDM5MSwgNjAzOTYsIDYwNDAxLCA2MDQwNiwgNjA0MTEsIDYwNDE2LCAKLSAgICA2MDQyMCwgNjA0MjUsIDYwNDMwLCA2MDQzNSwgNjA0MzksIDYwNDQzLCA2MDQ0NywgNjA0NTIsIDYwNDU3LCA2MDQ2MiwgCi0gICAgNjA0NjcsIDYwNDcyLCA2MDQ3NywgNjA0ODIsIDYwNDg3LCA2MDQ5MiwgNjA0OTcsIDYwNTAxLCA2MDUwNSwgNjA1MTAsIAotICAgIDYwNTE1LCA2MDUyMCwgNjA1MjUsIDAsIDAsIDAsIDYwNTMwLCA2MDUzNCwgNjA1MzgsIDYwNTQyLCA2MDU0NiwgNjA1NTAsIAotICAgIDYwNTU0LCA2MDU1OCwgNjA1NjIsIDYwNTY2LCA2MDU3MCwgNjA1NzQsIDYwNTc4LCA2MDU4MiwgNjA1ODYsIDYwNTkwLCAKLSAgICA2MDU5NCwgNjA1OTgsIDYwNjAyLCA2MDYwNiwgNjA2MTAsIDYwNjE0LCA2MDYxOCwgNjA2MjIsIDYwNjI2LCA2MDYzMCwgCi0gICAgNjA2MzQsIDYwNjM4LCA2MDY0MiwgNjA2NDYsIDYwNjUwLCA2MDY1MywgNjA2NTcsIDYwNjYwLCA2MDY2NCwgNjA2NjgsIAotICAgIDYwNjcxLCA2MDY3NSwgNjA2NzksIDYwNjgyLCA2MDY4NiwgNjA2OTAsIDYwNjk0LCA2MDY5OCwgNjA3MDEsIDYwNzA1LCAKLSAgICA2MDcwOSwgNjA3MTMsIDYwNzE3LCA2MDcyMSwgNjA3MjUsIDYwNzI4LCA2MDczMSwgNjA3MzUsIDYwNzM5LCA2MDc0MywgCi0gICAgNjA3NDcsIDYwNzUxLCA2MDc1NSwgNjA3NTksIDYwNzYzLCA2MDc2NywgNjA3NzEsIDYwNzc1LCA2MDc3OSwgNjA3ODMsIAotICAgIDYwNzg3LCA2MDc5MSwgNjA3OTUsIDYwNzk5LCA2MDgwMywgNjA4MDcsIDYwODExLCA2MDgxNSwgNjA4MTksIDYwODIzLCAKLSAgICA2MDgyNywgNjA4MzEsIDYwODM1LCA2MDgzOSwgNjA4NDMsIDYwODQ3LCA2MDg1MSwgNjA4NTUsIDYwODU5LCA2MDg2MywgCi0gICAgNjA4NjcsIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODgzLCA2MDg4NywgNjA4OTEsIDYwODk1LCAwLCA2MDg5OSwgNjA5MDUsIAotICAgIDYwOTExLCA2MDkxNiwgNjA5MjEsIDYwOTI2LCA2MDkzMiwgNjA5MzgsIDYwOTQ0LCA2MDk1MCwgNjA5NTYsIDYwOTYyLCAKLSAgICA2MDk2OCwgNjA5NzQsIDYwOTgwLCA2MDk4NiwgNjA5OTIsIDYwOTk3LCA2MTAwMiwgNjEwMDcsIDYxMDEyLCA2MTAxNywgCi0gICAgNjEwMjIsIDYxMDI3LCA2MTAzMiwgNjEwMzcsIDYxMDQyLCA2MTA0NywgNjEwNTIsIDYxMDU3LCA2MTA2MiwgNjEwNjcsIAotICAgIDYxMDcyLCA2MTA3NywgNjEwODIsIDYxMDg3LCA2MTA5MiwgNjEwOTgsIDYxMTA0LCA2MTExMCwgNjExMTYsIDYxMTIxLCAKLSAgICA2MTEyNiwgMCwgMCwgMCwgMCwgMCwgNjExMzEsIDYxMTM2LCA2MTE0MSwgNjExNDYsIDYxMTUxLCA2MTE1NiwgNjExNjEsIAotICAgIDYxMTY2LCA2MTE3MSwgNjExNzYsIDYxMTgxLCA2MTE4NiwgNjExOTEsIDYxMTk2LCA2MTIwMSwgNjEyMDYsIDYxMjExLCAKLSAgICA2MTIxNiwgNjEyMjEsIDYxMjI2LCA2MTIzMSwgNjEyMzYsIDYxMjQxLCA2MTI0NiwgNjEyNTEsIDYxMjU2LCA2MTI2MSwgCi0gICAgNjEyNjYsIDYxMjcxLCA2MTI3NiwgNjEyODEsIDYxMjg2LCA2MTI5MSwgNjEyOTYsIDYxMzAxLCA2MTMwNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzMTEsIDYxMzE2LCA2MTMyMSwgNjEzMjYsIDYxMzMwLCA2MTMzNSwgCi0gICAgNjEzMzksIDYxMzQ0LCA2MTM0OSwgNjEzNTQsIDYxMzU5LCA2MTM2NCwgNjEzNjgsIDYxMzczLCA2MTM3OCwgNjEzODMsIAotICAgIDYxMzg4LCA2MTM5MiwgNjEzOTYsIDYxNDAwLCA2MTQwNCwgNjE0MDgsIDYxNDEyLCA2MTQxNiwgNjE0MjAsIDYxNDI0LCAKLSAgICA2MTQyOCwgNjE0MzIsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ5LCA2MTQ1NCwgNjE0NTksIDYxNDY0LCA2MTQ2OSwgCi0gICAgNjE0NzQsIDYxNDc5LCA2MTQ4NCwgNjE0ODksIDYxNDk0LCA2MTQ5OSwgNjE1MDQsIDYxNTA5LCA2MTUxNCwgNjE1MTksIAotICAgIDYxNTI1LCAwLCA2MTUzMiwgNjE1MzUsIDYxNTM4LCA2MTU0MSwgNjE1NDQsIDYxNTQ3LCA2MTU1MCwgNjE1NTMsIDYxNTU2LCAKLSAgICA2MTU1OSwgNjE1NjMsIDYxNTY3LCA2MTU3MSwgNjE1NzUsIDYxNTc5LCA2MTU4MywgNjE1ODcsIDYxNTkxLCA2MTU5NSwgCi0gICAgNjE1OTksIDYxNjAzLCA2MTYwNywgNjE2MTEsIDYxNjE1LCA2MTYxOSwgNjE2MjMsIDYxNjI3LCA2MTYzMSwgNjE2MzUsIAotICAgIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCA2MTY1NSwgNjE2NTksIDYxNjYzLCA2MTY2NywgNjE2NzEsIDYxNjc1LCAKLSAgICA2MTY3OSwgNjE2ODMsIDYxNjkyLCA2MTcwMSwgNjE3MTAsIDYxNzE5LCA2MTcyOCwgNjE3MzcsIDYxNzQ2LCA2MTc1NSwgCi0gICAgNjE3NTgsIDYxNzYzLCA2MTc2OCwgNjE3NzMsIDYxNzc4LCA2MTc4MywgNjE3ODgsIDYxNzkzLCA2MTc5OCwgNjE4MDMsIAotICAgIDYxODA3LCA2MTgxMiwgNjE4MTcsIDYxODIyLCA2MTgyNywgNjE4MzIsIDYxODM2LCA2MTg0MCwgNjE4NDQsIDYxODQ4LCAKLSAgICA2MTg1MiwgNjE4NTYsIDYxODYwLCA2MTg2NCwgNjE4NjgsIDYxODcyLCA2MTg3NiwgNjE4ODAsIDYxODg0LCA2MTg4OCwgCi0gICAgNjE4OTMsIDYxODk4LCA2MTkwMywgNjE5MDgsIDYxOTEzLCA2MTkxOCwgNjE5MjMsIDYxOTI4LCA2MTkzMywgNjE5MzgsIAotICAgIDYxOTQzLCA2MTk0OCwgNjE5NTMsIDYxOTU4LCA2MTk2NCwgNjE5NzAsIDYxOTc1LCA2MTk4MCwgNjE5ODMsIDYxOTg2LCAKLSAgICA2MTk4OSwgNjE5OTIsIDYxOTk1LCA2MTk5OCwgNjIwMDEsIDYyMDA0LCA2MjAwNywgNjIwMTEsIDYyMDE1LCA2MjAxOSwgCi0gICAgNjIwMjMsIDYyMDI3LCA2MjAzMSwgNjIwMzUsIDYyMDM5LCA2MjA0MywgNjIwNDcsIDYyMDUxLCA2MjA1NSwgNjIwNTksIAotICAgIDYyMDYzLCA2MjA2NywgNjIwNzEsIDYyMDc1LCA2MjA3OSwgNjIwODMsIDYyMDg3LCA2MjA5MSwgNjIwOTUsIDYyMDk5LCAKLSAgICA2MjEwMywgNjIxMDcsIDYyMTExLCA2MjExNSwgNjIxMTksIDYyMTIzLCA2MjEyNywgNjIxMzEsIDYyMTM1LCA2MjEzOSwgCi0gICAgNjIxNDMsIDYyMTQ3LCA2MjE1MSwgNjIxNTUsIDYyMTU5LCA2MjE2MywgNjIxNjcsIDYyMTcyLCA2MjE3NywgNjIxODIsIAotICAgIDYyMTg3LCA2MjE5MSwgNjIxOTYsIDYyMjAxLCA2MjIwNiwgNjIyMTEsIDYyMjE2LCA2MjIyMSwgNjIyMjYsIDYyMjMxLCAKLSAgICA2MjIzNiwgNjIyNDAsIDYyMjQ3LCA2MjI1NCwgNjIyNjEsIDYyMjY4LCA2MjI3NSwgNjIyODIsIDYyMjg5LCA2MjI5NiwgCi0gICAgNjIzMDMsIDYyMzEwLCA2MjMxNywgNjIzMjQsIDYyMzI3LCA2MjMzMCwgNjIzMzMsIDYyMzM4LCA2MjM0MSwgNjIzNDQsIAotICAgIDYyMzQ3LCA2MjM1MCwgNjIzNTMsIDYyMzU2LCA2MjM2MCwgNjIzNjQsIDYyMzY4LCA2MjM3MiwgNjIzNzUsIDYyMzc5LCAKLSAgICA2MjM4MywgNjIzODcsIDYyMzkxLCA2MjM5NSwgNjIzOTksIDYyNDAzLCA2MjQwNywgNjI0MTAsIDYyNDEzLCA2MjQxNywgCi0gICAgNjI0MjEsIDYyNDI1LCA2MjQyOSwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MSwgNjI0NTUsIAotICAgIDYyNDU5LCA2MjQ2MywgNjI0NjcsIDYyNDcwLCA2MjQ3NCwgNjI0NzgsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCAKLSAgICA2MjQ5NywgNjI1MDEsIDYyNTA1LCA2MjUwOSwgMCwgNjI1MTMsIDYyNTE2LCA2MjUxOSwgNjI1MjIsIDYyNTI1LCA2MjUyOCwgCi0gICAgNjI1MzEsIDYyNTM0LCA2MjUzNywgNjI1NDAsIDYyNTQzLCA2MjU0NiwgNjI1NDksIDYyNTUyLCA2MjU1NSwgNjI1NTgsIAotICAgIDYyNTYxLCA2MjU2NCwgNjI1NjcsIDYyNTcwLCA2MjU3MywgNjI1NzYsIDYyNTc5LCA2MjU4MiwgNjI1ODUsIDYyNTg4LCAKLSAgICA2MjU5MSwgNjI1OTQsIDYyNTk3LCA2MjYwMCwgNjI2MDMsIDYyNjA2LCA2MjYwOSwgNjI2MTIsIDYyNjE1LCA2MjYxOCwgCi0gICAgNjI2MjEsIDYyNjI0LCA2MjYyNywgNjI2MzAsIDYyNjMzLCA2MjYzNiwgNjI2MzksIDYyNjQyLCA2MjY0NSwgNjI2NDgsIAotICAgIDYyNjUxLCA2MjY1NCwgNjI2NTcsIDYyNjYwLCA2MjY2MywgNjI2NjYsIDYyNjY5LCA2MjY3MiwgNjI2NzUsIDYyNjc4LCAKLSAgICA2MjY4MSwgNjI2ODQsIDYyNjg3LCA2MjY5MCwgNjI2OTMsIDYyNjk2LCA2MjY5OSwgNjI3MDIsIDYyNzA1LCA2MjcwOCwgCi0gICAgNjI3MTEsIDYyNzE0LCA2MjcxNywgNjI3MjAsIDYyNzIzLCA2MjcyNiwgNjI3MjksIDYyNzMyLCA2MjczNSwgNjI3MzgsIAotICAgIDYyNzQxLCA2Mjc0NCwgNjI3NDcsIDYyNzUwLCA2Mjc1MywgNjI3NTYsIDYyNzU5LCA2Mjc2MiwgNjI3NjUsIDYyNzY4LCAKLSAgICA2Mjc3MSwgNjI3NzQsIDYyNzc3LCA2Mjc4NiwgNjI3OTQsIDYyODAyLCA2MjgxMCwgNjI4MTgsIDYyODI2LCA2MjgzNCwgCi0gICAgNjI4NDIsIDYyODUwLCA2Mjg1OCwgNjI4NjcsIDYyODc2LCA2Mjg4NSwgNjI4OTQsIDYyOTAzLCA2MjkxMiwgNjI5MjEsIAotICAgIDYyOTMwLCA2MjkzOSwgNjI5NDgsIDYyOTU3LCA2Mjk2NiwgNjI5NzUsIDYyOTg0LCA2Mjk5MywgNjI5OTYsIDYyOTk5LCAKLSAgICA2MzAwMiwgNjMwMDQsIDYzMDA3LCA2MzAxMCwgNjMwMTMsIDYzMDE4LCA2MzAyMywgNjMwMjYsIDYzMDMzLCA2MzA0MCwgCi0gICAgNjMwNDcsIDYzMDU0LCA2MzA1NywgNjMwNjIsIDYzMDY0LCA2MzA2OCwgNjMwNzAsIDYzMDcyLCA2MzA3NSwgNjMwNzgsIAotICAgIDYzMDgxLCA2MzA4NCwgNjMwODcsIDYzMDkwLCA2MzA5MywgNjMwOTgsIDYzMTAzLCA2MzEwNiwgNjMxMDksIDYzMTEyLCAKLSAgICA2MzExNSwgNjMxMTgsIDYzMTIxLCA2MzEyNCwgNjMxMjgsIDYzMTMxLCA2MzEzNCwgNjMxMzcsIDYzMTQwLCA2MzE0MywgCi0gICAgNjMxNDcsIDYzMTUwLCA2MzE1MywgNjMxNTYsIDYzMTYxLCA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIAotICAgIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjEwLCA2MzIxMiwgNjMyMTUsIDYzMjE4LCA2MzIyMSwgNjMyMjQsIDYzMjMwLCAKLSAgICA2MzIzOCwgNjMyNDEsIDYzMjQ0LCA2MzI0OSwgNjMyNTIsIDYzMjU1LCA2MzI1OCwgNjMyNjMsIDYzMjY2LCA2MzI2OSwgCi0gICAgNjMyNzQsIDYzMjc3LCA2MzI4MCwgNjMyODUsIDYzMjg4LCA2MzI5MSwgNjMyOTYsIDYzMzAxLCA2MzMwNiwgNjMzMDksIAotICAgIDYzMzEyLCA2MzMxNSwgNjMzMTgsIDYzMzI0LCA2MzMyNywgNjMzMzAsIDYzMzMzLCA2MzMzNSwgNjMzMzgsIDYzMzQxLCAKLSAgICA2MzM0NCwgNjMzNDksIDYzMzUyLCA2MzM1NSwgNjMzNTgsIDYzMzYxLCA2MzM2NCwgNjMzNjksIDYzMzcyLCA2MzM3NSwgCi0gICAgNjMzNzgsIDYzMzgxLCA2MzM4NCwgNjMzODcsIDYzMzkwLCA2MzM5MywgNjMzOTYsIDYzNDAxLCA2MzQwNSwgNjM0MTMsIAotICAgIDYzNDIxLCA2MzQyOSwgNjM0MzcsIDYzNDQ1LCA2MzQ1MywgNjM0NjEsIDYzNDY5LCA2MzQ3NywgNjM0ODYsIDYzNDk1LCAKLSAgICA2MzUwNCwgNjM1MTMsIDYzNTIyLCA2MzUzMSwgNjM1NDAsIDYzNTQ5LCA2MzU1OCwgNjM1NjcsIDYzNTc2LCA2MzU4NSwgCi0gICAgNjM1OTQsIDYzNjAzLCA2MzYxMiwgNjM2MjEsIDYzNjMwLCA2MzYzOSwgNjM2NDgsIDYzNjU3LCA2MzY2NiwgNjM2NzUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NjU4LCA1NzY2MiwgCisgICAgNTc2NjYsIDU3NjcxLCA1NzY3NiwgNTc2ODEsIDU3Njg1LCA1NzY4OSwgNTc2OTMsIDU3Njk4LCA1NzcwMywgNTc3MDcsIAorICAgIDU3NzExLCA1NzcxNSwgNTc3MTksIDU3NzI0LCA1NzcyOSwgNTc3MzQsIDU3NzM5LCA1Nzc0MywgNTc3NDcsIDU3NzUyLCAKKyAgICA1Nzc1NywgNTc3NjIsIDU3NzY3LCA1Nzc3MSwgMCwgNTc3NzUsIDU3Nzc5LCA1Nzc4MywgNTc3ODcsIDU3NzkxLCA1Nzc5NSwgCisgICAgNTc3OTksIDU3ODA0LCA1NzgwOSwgNTc4MTMsIDU3ODE4LCA1NzgyMywgNTc4MzIsIDU3ODM2LCA1Nzg0MCwgNTc4NDQsIAorICAgIDU3ODUxLCA1Nzg1NSwgNTc4NjAsIDU3ODY1LCA1Nzg2OSwgNTc4NzMsIDU3ODc5LCA1Nzg4NCwgNTc4ODksIDU3ODk0LCAKKyAgICA1Nzg5OSwgNTc5MDMsIDU3OTA3LCA1NzkxMSwgNTc5MTUsIDU3OTE5LCA1NzkyNCwgNTc5MjksIDU3OTMzLCA1NzkzNywgCisgICAgNTc5NDIsIDU3OTQ3LCA1Nzk1MiwgNTc5NTYsIDU3OTYwLCA1Nzk2NSwgNTc5NzAsIDU3OTc2LCA1Nzk4MiwgNTc5ODYsIAorICAgIDU3OTkyLCA1Nzk5OCwgNTgwMDIsIDU4MDA4LCA1ODAxNCwgNTgwMTksIDU4MDI0LCA1ODAyOCwgNTgwMzQsIDU4MDM4LCAKKyAgICA1ODA0MiwgNTgwNDgsIDU4MDU0LCA1ODA1OSwgNTgwNjQsIDU4MDY4LCA1ODA3MiwgNTgwODAsIDU4MDg2LCA1ODA5MiwgCisgICAgNTgwOTgsIDU4MTAzLCA1ODEwOCwgNTgxMTMsIDU4MTE5LCA1ODEyMywgNTgxMjksIDU4MTMzLCA1ODEzNywgNTgxNDMsIAorICAgIDU4MTQ5LCA1ODE1NSwgNTgxNjEsIDU4MTY3LCA1ODE3MywgNTgxNzksIDU4MTg1LCA1ODE5MSwgNTgxOTcsIDU4MjAzLCAKKyAgICA1ODIwOSwgNTgyMTMsIDU4MjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIyNSwgNTgyMjgsIAorICAgIDU4MjMyLCA1ODIzNiwgNTgyNDAsIDU4MjQ0LCA1ODI0NywgNTgyNTAsIDU4MjU0LCA1ODI1OCwgNTgyNjIsIDU4MjY2LCAKKyAgICA1ODI2OSwgNTgyNzQsIDU4Mjc4LCA1ODI4MiwgNTgyODYsIDU4MjkxLCA1ODI5NSwgNTgyOTksIDU4MzAzLCA1ODMwNywgCisgICAgNTgzMTMsIDU4MzE5LCA1ODMyMywgNTgzMjcsIDU4MzMxLCA1ODMzNSwgNTgzMzksIDU4MzQzLCA1ODM0NywgNTgzNTEsIAorICAgIDU4MzU1LCA1ODM1OSwgNTgzNjMsIDU4MzY5LCA1ODM3MywgNTgzNzcsIDU4MzgxLCA1ODM4NSwgNTgzODksIDU4MzkzLCAKKyAgICA1ODM5NywgNTg0MDEsIDU4NDA1LCA1ODQwOSwgNTg0MTMsIDU4NDE3LCA1ODQyMSwgNTg0MjUsIDU4NDI5LCA1ODQzMywgCisgICAgNTg0MzksIDU4NDQ1LCA1ODQ1MCwgNTg0NTUsIDU4NDU5LCA1ODQ2MywgNTg0NjcsIDU4NDcxLCA1ODQ3NSwgNTg0NzksIAorICAgIDU4NDgzLCA1ODQ4NywgNTg0OTEsIDU4NDk1LCA1ODQ5OSwgNTg1MDMsIDU4NTA3LCA1ODUxMSwgNTg1MTUsIDU4NTE5LCAKKyAgICA1ODUyMywgNTg1MjcsIDU4NTMxLCA1ODUzNSwgNTg1MzksIDU4NTQzLCA1ODU0NywgNTg1NTEsIDU4NTU3LCA1ODU2MSwgCisgICAgNTg1NjUsIDU4NTY5LCA1ODU3MywgNTg1NzcsIDU4NTgxLCA1ODU4NSwgNTg1ODksIDU4NTk0LCA1ODYwMSwgNTg2MDUsIAorICAgIDU4NjA5LCA1ODYxMywgNTg2MTcsIDU4NjIxLCA1ODYyNSwgNTg2MjksIDU4NjMzLCA1ODYzNywgNTg2NDEsIDU4NjQ1LCAKKyAgICA1ODY0OSwgNTg2NTYsIDU4NjYwLCA1ODY2NiwgNTg2NzAsIDU4Njc0LCA1ODY3OCwgNTg2ODIsIDU4Njg2LCA1ODY4OSwgCisgICAgNTg2OTMsIDU4Njk3LCA1ODcwMSwgNTg3MDUsIDU4NzA5LCA1ODcxMywgNTg3MTcsIDU4NzIxLCA1ODcyNSwgNTg3MjksIAorICAgIDU4NzMzLCA1ODczNywgNTg3NDEsIDU4NzQ1LCA1ODc0OSwgNTg3NTMsIDU4NzU3LCA1ODc2MSwgNTg3NjUsIDU4NzY5LCAKKyAgICA1ODc3MywgNTg3NzcsIDU4NzgxLCA1ODc4NSwgNTg3ODksIDU4NzkzLCA1ODc5NywgNTg4MDEsIDU4ODA1LCA1ODgwOSwgCisgICAgNTg4MTMsIDU4ODE3LCA1ODgyMywgNTg4MjcsIDU4ODMxLCA1ODgzNSwgNTg4MzksIDU4ODQzLCA1ODg0NywgNTg4NTEsIAorICAgIDU4ODU1LCA1ODg1OSwgNTg4NjMsIDU4ODY3LCA1ODg3MSwgNTg4NzUsIDU4ODc5LCA1ODg4MywgNTg4ODcsIDU4ODkxLCAKKyAgICA1ODg5NSwgNTg4OTksIDU4OTAzLCA1ODkwNywgNTg5MTEsIDU4OTE1LCA1ODkxOSwgNTg5MjMsIDU4OTI3LCA1ODkzMSwgCisgICAgNTg5MzksIDU4OTQzLCA1ODk0NywgNTg5NTEsIDU4OTU1LCA1ODk1OSwgNTg5NjUsIDU4OTY5LCA1ODk3MywgNTg5NzcsIAorICAgIDU4OTgxLCA1ODk4NSwgNTg5ODksIDU4OTkzLCA1ODk5NywgNTkwMDEsIDU5MDA1LCA1OTAwOSwgNTkwMTMsIDU5MDE3LCAKKyAgICA1OTAyMywgNTkwMjcsIDU5MDMxLCA1OTAzNSwgNTkwMzksIDU5MDQzLCA1OTA0NywgNTkwNTEsIDU5MDU1LCA1OTA1OSwgCisgICAgNTkwNjMsIDU5MDY3LCA1OTA3MSwgNTkwNzUsIDU5MDc5LCA1OTA4MywgNTkwODcsIDU5MDkxLCA1OTA5NSwgNTkwOTksIAorICAgIDU5MTAzLCA1OTEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTkxMTEsIDU5MTIwLCA1OTEyOCwgNTkxNDAsIDU5MTUxLCA1OTE1OSwgNTkxNjgsIDU5MTc3LCAKKyAgICA1OTE4NywgNTkxOTksIDU5MjExLCA1OTIyMywgMCwgMCwgMCwgMCwgNTkyMjksIDU5MjMyLCA1OTIzNSwgNTkyNDAsIAorICAgIDU5MjQzLCA1OTI1MCwgNTkyNTQsIDU5MjU4LCA1OTI2MiwgNTkyNjYsIDU5MjcwLCA1OTI3NSwgNTkyODAsIDU5Mjg0LCAKKyAgICA1OTI4OCwgNTkyOTMsIDU5Mjk4LCA1OTMwMywgNTkzMDgsIDU5MzExLCA1OTMxNCwgNTkzMjAsIDU5MzI2LCA1OTMzMSwgCisgICAgNTkzMzYsIDU5MzQzLCA1OTM1MCwgNTkzNTQsIDU5MzU4LCA1OTM2MiwgNTkzNzAsIDU5Mzc2LCA1OTM4MywgNTkzODgsIAorICAgIDU5MzkzLCA1OTM5OCwgNTk0MDMsIDU5NDA4LCA1OTQxMywgNTk0MTgsIDU5NDIzLCA1OTQyOCwgNTk0MzMsIDU5NDM4LCAKKyAgICA1OTQ0MywgNTk0NDgsIDU5NDUzLCA1OTQ1OSwgNTk0NjQsIDU5NDY4LCA1OTQ3NCwgNTk0ODUsIDU5NDk1LCA1OTUxMCwgCisgICAgNTk1MjAsIDU5NTI0LCA1OTUzNCwgNTk1NDAsIDU5NTQ2LCA1OTU1MiwgNTk1NTcsIDU5NTYwLCA1OTU2NSwgNTk1NjksIDAsIAorICAgIDU5NTc1LCA1OTU3OSwgNTk1ODIsIDU5NTg2LCA1OTU4OSwgNTk1OTMsIDU5NTk2LCA1OTYwMCwgNTk2MDMsIDU5NjA3LCAKKyAgICA1OTYxMCwgNTk2MTMsIDU5NjE3LCA1OTYyMSwgNTk2MjUsIDU5NjI5LCA1OTYzMywgNTk2MzcsIDU5NjQxLCA1OTY0NSwgCisgICAgNTk2NDksIDU5NjUyLCA1OTY1NiwgNTk2NjAsIDU5NjY0LCA1OTY2OCwgNTk2NzIsIDU5Njc2LCA1OTY4MCwgNTk2ODQsIAorICAgIDU5Njg4LCA1OTY5MiwgNTk2OTYsIDU5NzAwLCA1OTcwNCwgNTk3MDksIDU5NzEzLCA1OTcxNywgNTk3MjEsIDU5NzI1LCAKKyAgICA1OTcyOCwgNTk3MzIsIDU5NzM1LCA1OTczOSwgNTk3NDMsIDU5NzQ3LCA1OTc1MSwgNTk3NTQsIDU5NzU4LCA1OTc2MSwgCisgICAgNTk3NjUsIDU5NzY5LCA1OTc3MywgNTk3NzcsIDU5NzgxLCA1OTc4NSwgNTk3ODksIDU5NzkzLCA1OTc5NywgNTk4MDEsIAorICAgIDU5ODA1LCA1OTgwOSwgNTk4MTIsIDU5ODE2LCA1OTgyMCwgNTk4MjQsIDU5ODI4LCA1OTgzMiwgNTk4MzUsIDU5ODQwLCAKKyAgICA1OTg0NCwgNTk4NDksIDU5ODUzLCA1OTg1NiwgNTk4NjAsIDU5ODY0LCA1OTg2OCwgNTk4NzIsIDU5ODc3LCA1OTg4MSwgCisgICAgNTk4ODUsIDU5ODg5LCA1OTg5MywgNTk4OTcsIDU5OTAxLCA1OTkwNSwgMCwgMCwgNTk5MTAsIDU5OTE4LCA1OTkyNiwgCisgICAgNTk5MzMsIDU5OTQwLCA1OTk0NCwgNTk5NTAsIDU5OTU1LCA1OTk2MCwgNTk5NjQsIDU5OTY3LCA1OTk3MSwgNTk5NzQsIAorICAgIDU5OTc4LCA1OTk4MSwgNTk5ODUsIDU5OTg4LCA1OTk5MiwgNTk5OTUsIDU5OTk4LCA2MDAwMiwgNjAwMDYsIDYwMDEwLCAKKyAgICA2MDAxNCwgNjAwMTgsIDYwMDIyLCA2MDAyNiwgNjAwMzAsIDYwMDM0LCA2MDAzNywgNjAwNDEsIDYwMDQ1LCA2MDA0OSwgCisgICAgNjAwNTMsIDYwMDU3LCA2MDA2MSwgNjAwNjUsIDYwMDY5LCA2MDA3MywgNjAwNzcsIDYwMDgxLCA2MDA4NSwgNjAwODksIAorICAgIDYwMDk0LCA2MDA5OCwgNjAxMDIsIDYwMTA2LCA2MDExMCwgNjAxMTMsIDYwMTE3LCA2MDEyMCwgNjAxMjQsIDYwMTI4LCAKKyAgICA2MDEzMiwgNjAxMzYsIDYwMTM5LCA2MDE0MywgNjAxNDYsIDYwMTUwLCA2MDE1NCwgNjAxNTgsIDYwMTYyLCA2MDE2NiwgCisgICAgNjAxNzAsIDYwMTc0LCA2MDE3OCwgNjAxODIsIDYwMTg2LCA2MDE5MCwgNjAxOTQsIDYwMTk3LCA2MDIwMSwgNjAyMDUsIAorICAgIDYwMjA5LCA2MDIxMywgNjAyMTcsIDYwMjIwLCA2MDIyNSwgNjAyMjksIDYwMjM0LCA2MDIzOCwgNjAyNDEsIDYwMjQ1LCAKKyAgICA2MDI0OSwgNjAyNTMsIDYwMjU3LCA2MDI2MiwgNjAyNjYsIDYwMjcwLCA2MDI3NCwgNjAyNzgsIDYwMjgyLCA2MDI4NiwgCisgICAgNjAyOTAsIDYwMjk1LCA2MDI5OSwgNjAzMDMsIDYwMzA3LCA2MDMxMSwgNjAzMTYsIDYwMzIzLCA2MDMyNywgNjAzMzMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDYwMzM4LCA2MDM0MywgNjAzNDgsIDYwMzUyLCA2MDM1NywgNjAzNjIsIDYwMzY3LCA2MDM3MiwgCisgICAgNjAzNzYsIDYwMzgxLCA2MDM4NiwgNjAzOTEsIDYwMzk2LCA2MDQwMSwgNjA0MDYsIDYwNDExLCA2MDQxNiwgNjA0MjEsIAorICAgIDYwNDI1LCA2MDQzMCwgNjA0MzUsIDYwNDQwLCA2MDQ0NCwgNjA0NDgsIDYwNDUyLCA2MDQ1NywgNjA0NjIsIDYwNDY3LCAKKyAgICA2MDQ3MiwgNjA0NzcsIDYwNDgyLCA2MDQ4NywgNjA0OTIsIDYwNDk3LCA2MDUwMiwgNjA1MDYsIDYwNTEwLCA2MDUxNSwgCisgICAgNjA1MjAsIDYwNTI1LCA2MDUzMCwgMCwgMCwgMCwgNjA1MzUsIDYwNTM5LCA2MDU0MywgNjA1NDcsIDYwNTUxLCA2MDU1NSwgCisgICAgNjA1NTksIDYwNTYzLCA2MDU2NywgNjA1NzEsIDYwNTc1LCA2MDU3OSwgNjA1ODMsIDYwNTg3LCA2MDU5MSwgNjA1OTUsIAorICAgIDYwNTk5LCA2MDYwMywgNjA2MDcsIDYwNjExLCA2MDYxNSwgNjA2MTksIDYwNjIzLCA2MDYyNywgNjA2MzEsIDYwNjM1LCAKKyAgICA2MDYzOSwgNjA2NDMsIDYwNjQ3LCA2MDY1MSwgNjA2NTUsIDYwNjU4LCA2MDY2MiwgNjA2NjUsIDYwNjY5LCA2MDY3MywgCisgICAgNjA2NzYsIDYwNjgwLCA2MDY4NCwgNjA2ODcsIDYwNjkxLCA2MDY5NSwgNjA2OTksIDYwNzAzLCA2MDcwNiwgNjA3MTAsIAorICAgIDYwNzE0LCA2MDcxOCwgNjA3MjIsIDYwNzI2LCA2MDczMCwgNjA3MzMsIDYwNzM2LCA2MDc0MCwgNjA3NDQsIDYwNzQ4LCAKKyAgICA2MDc1MiwgNjA3NTYsIDYwNzYwLCA2MDc2NCwgNjA3NjgsIDYwNzcyLCA2MDc3NiwgNjA3ODAsIDYwNzg0LCA2MDc4OCwgCisgICAgNjA3OTIsIDYwNzk2LCA2MDgwMCwgNjA4MDQsIDYwODA4LCA2MDgxMiwgNjA4MTYsIDYwODIwLCA2MDgyNCwgNjA4MjgsIAorICAgIDYwODMyLCA2MDgzNiwgNjA4NDAsIDYwODQ0LCA2MDg0OCwgNjA4NTIsIDYwODU2LCA2MDg2MCwgNjA4NjQsIDYwODY4LCAKKyAgICA2MDg3MiwgNjA4NzYsIDYwODgwLCA2MDg4NCwgNjA4ODgsIDYwODkyLCA2MDg5NiwgNjA5MDAsIDAsIDYwOTA0LCA2MDkxMCwgCisgICAgNjA5MTYsIDYwOTIxLCA2MDkyNiwgNjA5MzEsIDYwOTM3LCA2MDk0MywgNjA5NDksIDYwOTU1LCA2MDk2MSwgNjA5NjcsIAorICAgIDYwOTczLCA2MDk3OSwgNjA5ODUsIDYwOTkxLCA2MDk5NywgNjEwMDIsIDYxMDA3LCA2MTAxMiwgNjEwMTcsIDYxMDIyLCAKKyAgICA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCA2MTA1NywgNjEwNjIsIDYxMDY3LCA2MTA3MiwgCisgICAgNjEwNzcsIDYxMDgyLCA2MTA4NywgNjEwOTIsIDYxMDk3LCA2MTEwMywgNjExMDksIDYxMTE1LCA2MTEyMSwgNjExMjYsIAorICAgIDYxMTMxLCAwLCAwLCAwLCAwLCAwLCA2MTEzNiwgNjExNDEsIDYxMTQ2LCA2MTE1MSwgNjExNTYsIDYxMTYxLCA2MTE2NiwgCisgICAgNjExNzEsIDYxMTc2LCA2MTE4MSwgNjExODYsIDYxMTkxLCA2MTE5NiwgNjEyMDEsIDYxMjA2LCA2MTIxMSwgNjEyMTYsIAorICAgIDYxMjIxLCA2MTIyNiwgNjEyMzEsIDYxMjM2LCA2MTI0MSwgNjEyNDYsIDYxMjUxLCA2MTI1NiwgNjEyNjEsIDYxMjY2LCAKKyAgICA2MTI3MSwgNjEyNzYsIDYxMjgxLCA2MTI4NiwgNjEyOTEsIDYxMjk2LCA2MTMwMSwgNjEzMDYsIDYxMzExLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTMxNiwgNjEzMjEsIDYxMzI2LCA2MTMzMSwgNjEzMzUsIDYxMzQwLCAKKyAgICA2MTM0NCwgNjEzNDksIDYxMzU0LCA2MTM1OSwgNjEzNjQsIDYxMzY5LCA2MTM3MywgNjEzNzgsIDYxMzgzLCA2MTM4OCwgCisgICAgNjEzOTMsIDYxMzk3LCA2MTQwMSwgNjE0MDUsIDYxNDA5LCA2MTQxMywgNjE0MTcsIDYxNDIxLCA2MTQyNSwgNjE0MjksIAorICAgIDYxNDMzLCA2MTQzNywgNjE0NDEsIDYxNDQ1LCA2MTQ0OSwgNjE0NTQsIDYxNDU5LCA2MTQ2NCwgNjE0NjksIDYxNDc0LCAKKyAgICA2MTQ3OSwgNjE0ODQsIDYxNDg5LCA2MTQ5NCwgNjE0OTksIDYxNTA0LCA2MTUwOSwgNjE1MTQsIDYxNTE5LCA2MTUyNCwgCisgICAgNjE1MzAsIDAsIDYxNTM3LCA2MTU0MCwgNjE1NDMsIDYxNTQ2LCA2MTU0OSwgNjE1NTIsIDYxNTU1LCA2MTU1OCwgNjE1NjEsIAorICAgIDYxNTY0LCA2MTU2OCwgNjE1NzIsIDYxNTc2LCA2MTU4MCwgNjE1ODQsIDYxNTg4LCA2MTU5MiwgNjE1OTYsIDYxNjAwLCAKKyAgICA2MTYwNCwgNjE2MDgsIDYxNjEyLCA2MTYxNiwgNjE2MjAsIDYxNjI0LCA2MTYyOCwgNjE2MzIsIDYxNjM2LCA2MTY0MCwgCisgICAgNjE2NDQsIDYxNjQ4LCA2MTY1MiwgNjE2NTYsIDYxNjYwLCA2MTY2NCwgNjE2NjgsIDYxNjcyLCA2MTY3NiwgNjE2ODAsIAorICAgIDYxNjg0LCA2MTY4OCwgNjE2OTcsIDYxNzA2LCA2MTcxNSwgNjE3MjQsIDYxNzMzLCA2MTc0MiwgNjE3NTEsIDYxNzYwLCAKKyAgICA2MTc2MywgNjE3NjgsIDYxNzczLCA2MTc3OCwgNjE3ODMsIDYxNzg4LCA2MTc5MywgNjE3OTgsIDYxODAzLCA2MTgwOCwgCisgICAgNjE4MTIsIDYxODE3LCA2MTgyMiwgNjE4MjcsIDYxODMyLCA2MTgzNywgNjE4NDEsIDYxODQ1LCA2MTg0OSwgNjE4NTMsIAorICAgIDYxODU3LCA2MTg2MSwgNjE4NjUsIDYxODY5LCA2MTg3MywgNjE4NzcsIDYxODgxLCA2MTg4NSwgNjE4ODksIDYxODkzLCAKKyAgICA2MTg5OCwgNjE5MDMsIDYxOTA4LCA2MTkxMywgNjE5MTgsIDYxOTIzLCA2MTkyOCwgNjE5MzMsIDYxOTM4LCA2MTk0MywgCisgICAgNjE5NDgsIDYxOTUzLCA2MTk1OCwgNjE5NjMsIDYxOTY5LCA2MTk3NSwgNjE5ODAsIDYxOTg1LCA2MTk4OCwgNjE5OTEsIAorICAgIDYxOTk0LCA2MTk5NywgNjIwMDAsIDYyMDAzLCA2MjAwNiwgNjIwMDksIDYyMDEyLCA2MjAxNiwgNjIwMjAsIDYyMDI0LCAKKyAgICA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTYsIDYyMDYwLCA2MjA2NCwgCisgICAgNjIwNjgsIDYyMDcyLCA2MjA3NiwgNjIwODAsIDYyMDg0LCA2MjA4OCwgNjIwOTIsIDYyMDk2LCA2MjEwMCwgNjIxMDQsIAorICAgIDYyMTA4LCA2MjExMiwgNjIxMTYsIDYyMTIwLCA2MjEyNCwgNjIxMjgsIDYyMTMyLCA2MjEzNiwgNjIxNDAsIDYyMTQ0LCAKKyAgICA2MjE0OCwgNjIxNTIsIDYyMTU2LCA2MjE2MCwgNjIxNjQsIDYyMTY4LCA2MjE3MiwgNjIxNzcsIDYyMTgyLCA2MjE4NywgCisgICAgNjIxOTIsIDYyMTk2LCA2MjIwMSwgNjIyMDYsIDYyMjExLCA2MjIxNiwgNjIyMjEsIDYyMjI2LCA2MjIzMSwgNjIyMzYsIAorICAgIDYyMjQxLCA2MjI0NSwgNjIyNTIsIDYyMjU5LCA2MjI2NiwgNjIyNzMsIDYyMjgwLCA2MjI4NywgNjIyOTQsIDYyMzAxLCAKKyAgICA2MjMwOCwgNjIzMTUsIDYyMzIyLCA2MjMyOSwgNjIzMzIsIDYyMzM1LCA2MjMzOCwgNjIzNDMsIDYyMzQ2LCA2MjM0OSwgCisgICAgNjIzNTIsIDYyMzU1LCA2MjM1OCwgNjIzNjEsIDYyMzY1LCA2MjM2OSwgNjIzNzMsIDYyMzc3LCA2MjM4MCwgNjIzODQsIAorICAgIDYyMzg4LCA2MjM5MiwgNjIzOTYsIDYyNDAwLCA2MjQwNCwgNjI0MDgsIDYyNDEyLCA2MjQxNSwgNjI0MTgsIDYyNDIyLCAKKyAgICA2MjQyNiwgNjI0MzAsIDYyNDM0LCA2MjQzNywgNjI0NDEsIDYyNDQ1LCA2MjQ0OSwgNjI0NTMsIDYyNDU2LCA2MjQ2MCwgCisgICAgNjI0NjQsIDYyNDY4LCA2MjQ3MiwgNjI0NzUsIDYyNDc5LCA2MjQ4MywgNjI0ODYsIDYyNDkwLCA2MjQ5NCwgNjI0OTgsIAorICAgIDYyNTAyLCA2MjUwNiwgNjI1MTAsIDYyNTE0LCAwLCA2MjUxOCwgNjI1MjEsIDYyNTI0LCA2MjUyNywgNjI1MzAsIDYyNTMzLCAKKyAgICA2MjUzNiwgNjI1MzksIDYyNTQyLCA2MjU0NSwgNjI1NDgsIDYyNTUxLCA2MjU1NCwgNjI1NTcsIDYyNTYwLCA2MjU2MywgCisgICAgNjI1NjYsIDYyNTY5LCA2MjU3MiwgNjI1NzUsIDYyNTc4LCA2MjU4MSwgNjI1ODQsIDYyNTg3LCA2MjU5MCwgNjI1OTMsIAorICAgIDYyNTk2LCA2MjU5OSwgNjI2MDIsIDYyNjA1LCA2MjYwOCwgNjI2MTEsIDYyNjE0LCA2MjYxNywgNjI2MjAsIDYyNjIzLCAKKyAgICA2MjYyNiwgNjI2MjksIDYyNjMyLCA2MjYzNSwgNjI2MzgsIDYyNjQxLCA2MjY0NCwgNjI2NDcsIDYyNjUwLCA2MjY1MywgCisgICAgNjI2NTYsIDYyNjU5LCA2MjY2MiwgNjI2NjUsIDYyNjY4LCA2MjY3MSwgNjI2NzQsIDYyNjc3LCA2MjY4MCwgNjI2ODMsIAorICAgIDYyNjg2LCA2MjY4OSwgNjI2OTIsIDYyNjk1LCA2MjY5OCwgNjI3MDEsIDYyNzA0LCA2MjcwNywgNjI3MTAsIDYyNzEzLCAKKyAgICA2MjcxNiwgNjI3MTksIDYyNzIyLCA2MjcyNSwgNjI3MjgsIDYyNzMxLCA2MjczNCwgNjI3MzcsIDYyNzQwLCA2Mjc0MywgCisgICAgNjI3NDYsIDYyNzQ5LCA2Mjc1MiwgNjI3NTUsIDYyNzU4LCA2Mjc2MSwgNjI3NjQsIDYyNzY3LCA2Mjc3MCwgNjI3NzMsIAorICAgIDYyNzc2LCA2Mjc3OSwgNjI3ODIsIDYyNzkxLCA2Mjc5OSwgNjI4MDcsIDYyODE1LCA2MjgyMywgNjI4MzEsIDYyODM5LCAKKyAgICA2Mjg0NywgNjI4NTUsIDYyODYzLCA2Mjg3MiwgNjI4ODEsIDYyODkwLCA2Mjg5OSwgNjI5MDgsIDYyOTE3LCA2MjkyNiwgCisgICAgNjI5MzUsIDYyOTQ0LCA2Mjk1MywgNjI5NjIsIDYyOTcxLCA2Mjk4MCwgNjI5ODksIDYyOTk4LCA2MzAwMSwgNjMwMDQsIAorICAgIDYzMDA3LCA2MzAwOSwgNjMwMTIsIDYzMDE1LCA2MzAxOCwgNjMwMjMsIDYzMDI4LCA2MzAzMSwgNjMwMzgsIDYzMDQ1LCAKKyAgICA2MzA1MiwgNjMwNTksIDYzMDYyLCA2MzA2NywgNjMwNjksIDYzMDczLCA2MzA3NSwgNjMwNzcsIDYzMDgwLCA2MzA4MywgCisgICAgNjMwODYsIDYzMDg5LCA2MzA5MiwgNjMwOTUsIDYzMDk4LCA2MzEwMywgNjMxMDgsIDYzMTExLCA2MzExNCwgNjMxMTcsIAorICAgIDYzMTIwLCA2MzEyMywgNjMxMjYsIDYzMTI5LCA2MzEzMywgNjMxMzYsIDYzMTM5LCA2MzE0MiwgNjMxNDUsIDYzMTQ4LCAKKyAgICA2MzE1MiwgNjMxNTUsIDYzMTU4LCA2MzE2MSwgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCA2MzE5MSwgCisgICAgNjMxOTYsIDYzMjAxLCA2MzIwNywgNjMyMTUsIDYzMjE3LCA2MzIyMCwgNjMyMjMsIDYzMjI2LCA2MzIyOSwgNjMyMzUsIAorICAgIDYzMjQzLCA2MzI0NiwgNjMyNDksIDYzMjU0LCA2MzI1NywgNjMyNjAsIDYzMjYzLCA2MzI2OCwgNjMyNzEsIDYzMjc0LCAKKyAgICA2MzI3OSwgNjMyODIsIDYzMjg1LCA2MzI5MCwgNjMyOTMsIDYzMjk2LCA2MzMwMSwgNjMzMDYsIDYzMzExLCA2MzMxNCwgCisgICAgNjMzMTcsIDYzMzIwLCA2MzMyMywgNjMzMjksIDYzMzMyLCA2MzMzNSwgNjMzMzgsIDYzMzQwLCA2MzM0MywgNjMzNDYsIAorICAgIDYzMzQ5LCA2MzM1NCwgNjMzNTcsIDYzMzYwLCA2MzM2MywgNjMzNjYsIDYzMzY5LCA2MzM3NCwgNjMzNzcsIDYzMzgwLCAKKyAgICA2MzM4MywgNjMzODYsIDYzMzg5LCA2MzM5MiwgNjMzOTUsIDYzMzk4LCA2MzQwMSwgNjM0MDYsIDYzNDEwLCA2MzQxOCwgCisgICAgNjM0MjYsIDYzNDM0LCA2MzQ0MiwgNjM0NTAsIDYzNDU4LCA2MzQ2NiwgNjM0NzQsIDYzNDgyLCA2MzQ5MSwgNjM1MDAsIAorICAgIDYzNTA5LCA2MzUxOCwgNjM1MjcsIDYzNTM2LCA2MzU0NSwgNjM1NTQsIDYzNTYzLCA2MzU3MiwgNjM1ODEsIDYzNTkwLCAKKyAgICA2MzU5OSwgNjM2MDgsIDYzNjE3LCA2MzYyNiwgNjM2MzUsIDYzNjQ0LCA2MzY1MywgNjM2NjIsIDYzNjcxLCA2MzY4MCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM2NzgsIDYzNjg3LCA2MzY5NiwgNjM3MDcsIAotICAgIDYzNzE0LCA2MzcxOSwgNjM3MjQsIDYzNzMxLCA2MzczOCwgNjM3NDQsIDYzNzQ5LCA2Mzc1NCwgNjM3NTksIDYzNzY0LCAKLSAgICA2Mzc3MSwgNjM3NzYsIDYzNzgxLCA2Mzc4NiwgNjM3OTcsIDYzODAyLCA2MzgwNywgNjM4MTQsIDYzODE5LCA2MzgyNiwgCi0gICAgNjM4MzEsIDYzODM2LCA2Mzg0MywgNjM4NTAsIDYzODU3LCA2Mzg2NiwgNjM4NzUsIDYzODgwLCA2Mzg4NSwgNjM4OTAsIAotICAgIDYzODk3LCA2MzkwMiwgNjM5MTIsIDYzOTE5LCA2MzkyNCwgNjM5MjksIDYzOTM0LCA2MzkzOSwgNjM5NDQsIDYzOTQ5LCAKLSAgICA2Mzk1OCwgNjM5NjUsIDYzOTcyLCA2Mzk3NywgNjM5ODQsIDYzOTg5LCA2Mzk5NiwgNjQwMDUsIDY0MDE2LCA2NDAyMSwgCi0gICAgNjQwMzAsIDY0MDM1LCA2NDA0MiwgNjQwNTEsIDY0MDYwLCA2NDA2NSwgNjQwNzAsIDY0MDc3LCA2NDA4MywgNjQwOTAsIAotICAgIDY0MDk3LCA2NDEwMSwgNjQxMDUsIDY0MTA4LCA2NDExMiwgNjQxMTYsIDY0MTIwLCA2NDEyNCwgNjQxMjgsIDY0MTMyLCAKLSAgICA2NDEzNiwgNjQxMzksIDY0MTQzLCA2NDE0NywgNjQxNTEsIDY0MTU1LCA2NDE1OSwgNjQxNjMsIDY0MTY2LCA2NDE3MCwgCi0gICAgNjQxNzQsIDY0MTc3LCA2NDE4MSwgNjQxODUsIDY0MTg5LCA2NDE5MywgNjQxOTcsIDY0MjAxLCA2NDIwNSwgNjQyMDksIAotICAgIDY0MjEzLCA2NDIxNywgNjQyMjEsIDY0MjI1LCA2NDIyOSwgNjQyMzMsIDY0MjM3LCA2NDI0MSwgNjQyNDUsIDY0MjQ5LCAKLSAgICA2NDI1MywgNjQyNTcsIDY0MjYxLCA2NDI2NSwgNjQyNjksIDY0MjczLCA2NDI3NywgNjQyODEsIDY0Mjg1LCA2NDI4OSwgCi0gICAgNjQyOTMsIDY0Mjk3LCA2NDMwMSwgNjQzMDUsIDY0MzA5LCA2NDMxMywgNjQzMTcsIDY0MzIxLCA2NDMyNSwgNjQzMjksIAotICAgIDY0MzMzLCA2NDMzNywgNjQzNDEsIDY0MzQ1LCA2NDM0OSwgNjQzNTMsIDY0MzU2LCA2NDM2MCwgNjQzNjQsIDY0MzY4LCAKLSAgICA2NDM3MiwgNjQzNzYsIDY0MzgwLCA2NDM4NCwgNjQzODgsIDY0MzkyLCA2NDM5NiwgNjQ0MDAsIDY0NDA0LCA2NDQwOCwgCi0gICAgNjQ0MTIsIDY0NDE2LCA2NDQyMCwgNjQ0MjQsIDY0NDI4LCA2NDQzMiwgNjQ0MzYsIDY0NDQwLCA2NDQ0NCwgNjQ0NDgsIAotICAgIDY0NDUyLCA2NDQ1NiwgNjQ0NjAsIDY0NDY0LCA2NDQ2OCwgNjQ0NzIsIDY0NDc2LCA2NDQ4MCwgNjQ0ODQsIDY0NDg4LCAKLSAgICA2NDQ5MiwgNjQ0OTYsIDY0NTAwLCA2NDUwNCwgNjQ1MDgsIDY0NTEyLCA2NDUxNiwgNjQ1MjAsIDY0NTI0LCA2NDUyOCwgCi0gICAgNjQ1MzIsIDY0NTM2LCA2NDU0MCwgNjQ1NDQsIDY0NTQ4LCA2NDU1MiwgNjQ1NTYsIDY0NTYwLCA2NDU2NCwgNjQ1NjgsIAotICAgIDY0NTcyLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCA2NDYwMCwgNjQ2MDQsIDY0NjA4LCAKLSAgICA2NDYxMiwgNjQ2MTYsIDY0NjIwLCA2NDYyNCwgNjQ2MjgsIDY0NjMyLCA2NDYzNiwgNjQ2NDAsIDY0NjQ0LCA2NDY0OCwgCi0gICAgNjQ2NTIsIDY0NjU2LCA2NDY2MCwgNjQ2NjQsIDY0NjY4LCA2NDY3MiwgNjQ2NzYsIDY0NjgwLCA2NDY4NCwgNjQ2ODgsIAotICAgIDY0NjkyLCA2NDY5NiwgNjQ3MDAsIDY0NzA0LCA2NDcwOCwgNjQ3MTIsIDY0NzE2LCA2NDcyMCwgNjQ3MjQsIDY0NzI4LCAKLSAgICA2NDczMiwgNjQ3MzYsIDY0NzQwLCA2NDc0NCwgNjQ3NDgsIDY0NzUyLCA2NDc1NiwgNjQ3NjAsIDY0NzY0LCA2NDc2OCwgCi0gICAgNjQ3NzIsIDY0Nzc2LCA2NDc4MCwgNjQ3ODQsIDY0Nzg4LCA2NDc5MiwgNjQ3OTYsIDY0ODAwLCA2NDgwNCwgNjQ4MDgsIAotICAgIDY0ODEyLCA2NDgxNiwgNjQ4MjAsIDY0ODI0LCA2NDgyNywgNjQ4MzEsIDY0ODM1LCA2NDgzOSwgNjQ4NDMsIDY0ODQ3LCAKLSAgICA2NDg1MSwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NSwgNjQ4NzksIDY0ODgzLCA2NDg4NywgCi0gICAgNjQ4OTEsIDY0ODk1LCA2NDg5OSwgNjQ5MDMsIDY0OTA3LCA2NDkxMSwgNjQ5MTUsIDY0OTE5LCA2NDkyMywgNjQ5MjcsIAotICAgIDY0OTMxLCA2NDkzNSwgNjQ5MzksIDY0OTQzLCA2NDk0NywgNjQ5NTEsIDY0OTU1LCA2NDk1OSwgNjQ5NjMsIDY0OTY3LCAKLSAgICA2NDk3MSwgNjQ5NzUsIDY0OTc5LCA2NDk4MywgNjQ5ODcsIDY0OTkxLCA2NDk5NSwgNjQ5OTksIDY1MDAzLCA2NTAwNywgCi0gICAgNjUwMTEsIDY1MDE1LCA2NTAxOSwgNjUwMjMsIDY1MDI3LCA2NTAzMSwgNjUwMzUsIDY1MDM5LCA2NTA0MywgNjUwNDcsIAotICAgIDY1MDUxLCA2NTA1NSwgNjUwNTksIDY1MDYzLCA2NTA2NywgNjUwNzEsIDY1MDc1LCA2NTA3OSwgNjUwODMsIDY1MDg3LCAKLSAgICA2NTA5MSwgNjUwOTUsIDY1MDk5LCA2NTEwMywgNjUxMDcsIDY1MTExLCA2NTExNSwgNjUxMTksIDY1MTIzLCA2NTEyNywgCi0gICAgNjUxMzEsIDY1MTM1LCA2NTEzOSwgNjUxNDMsIDY1MTQ3LCA2NTE1MSwgNjUxNTUsIDY1MTU5LCA2NTE2MywgNjUxNjcsIAotICAgIDY1MTcxLCA2NTE3NSwgNjUxNzksIDY1MTgzLCA2NTE4NywgNjUxOTEsIDY1MTk1LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCAKLSAgICA2NTIxMSwgNjUyMTUsIDY1MjE5LCA2NTIyMywgNjUyMjcsIDY1MjMxLCA2NTIzNSwgNjUyMzksIDY1MjQzLCA2NTI0NywgCi0gICAgNjUyNTEsIDY1MjU1LCA2NTI1OSwgNjUyNjMsIDY1MjY3LCA2NTI3MSwgNjUyNzUsIDY1Mjc5LCA2NTI4MywgNjUyODcsIAotICAgIDY1MjkwLCA2NTI5NCwgNjUyOTgsIDY1MzAyLCA2NTMwNiwgNjUzMTAsIDY1MzE0LCA2NTMxOCwgNjUzMjIsIDY1MzI2LCAKLSAgICA2NTMzMCwgNjUzMzQsIDY1MzM4LCA2NTM0MiwgNjUzNDYsIDY1MzUwLCA2NTM1NCwgNjUzNTgsIDY1MzYyLCA2NTM2NiwgCi0gICAgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIDY1Mzg2LCA2NTM5MCwgNjUzOTQsIDY1Mzk4LCA2NTQwMiwgNjU0MDYsIAotICAgIDY1NDEwLCA2NTQxNCwgNjU0MTgsIDY1NDIyLCA2NTQyNiwgNjU0MzAsIDY1NDM0LCA2NTQzOCwgNjU0NDIsIDY1NDQ2LCAKLSAgICA2NTQ1MCwgNjU0NTQsIDY1NDU4LCA2NTQ2MiwgNjU0NjYsIDY1NDcwLCA2NTQ3NCwgNjU0NzgsIDY1NDgyLCA2NTQ4NiwgCi0gICAgNjU0OTAsIDY1NDk0LCA2NTQ5OCwgNjU1MDIsIDY1NTA2LCA2NTUxMCwgNjU1MTQsIDY1NTE4LCA2NTUyMiwgNjU1MjYsIAotICAgIDY1NTMwLCA2NTUzNCwgNjU1MzgsIDY1NTQyLCA2NTU0NiwgNjU1NTAsIDY1NTU0LCA2NTU1OCwgNjU1NjIsIDY1NTY2LCAKLSAgICA2NTU3MCwgNjU1NzQsIDY1NTc4LCA2NTU4MiwgNjU1ODYsIDY1NTkwLCA2NTU5NCwgNjU1OTgsIDY1NjAyLCA2NTYwNiwgCi0gICAgNjU2MTAsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIDY1NjI2LCA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIAotICAgIDY1NjQ5LCA2NTY1MywgNjU2NTcsIDY1NjYxLCA2NTY2NSwgNjU2NjksIDY1NjczLCA2NTY3NywgNjU2ODEsIDY1Njg1LCAKLSAgICA2NTY4OSwgNjU2OTMsIDY1Njk3LCA2NTcwMSwgNjU3MDUsIDY1NzA5LCA2NTcxMywgNjU3MTcsIDY1NzIxLCA2NTcyNSwgCi0gICAgNjU3MjksIDY1NzMzLCA2NTczNywgNjU3NDEsIDY1NzQ1LCA2NTc0OSwgNjU3NTMsIDY1NzU3LCA2NTc2MSwgNjU3NjUsIAotICAgIDY1NzY5LCA2NTc3MywgNjU3NzcsIDY1NzgxLCA2NTc4NSwgNjU3ODksIDY1NzkzLCA2NTc5NywgNjU4MDEsIDY1ODA1LCAKLSAgICA2NTgwOSwgNjU4MTMsIDY1ODE3LCA2NTgyMSwgNjU4MjUsIDY1ODI5LCA2NTgzMywgNjU4MzcsIDY1ODQxLCA2NTg0NSwgCi0gICAgNjU4NDksIDY1ODUzLCA2NTg1NywgNjU4NjEsIDY1ODY1LCA2NTg2OSwgNjU4NzMsIDY1ODc3LCA2NTg4MSwgNjU4ODUsIAotICAgIDY1ODg5LCA2NTg5MywgNjU4OTcsIDY1OTAxLCA2NTkwNSwgNjU5MDksIDY1OTEzLCA2NTkxNywgNjU5MjEsIDY1OTI1LCAKLSAgICA2NTkyOSwgNjU5MzMsIDY1OTM3LCA2NTk0MSwgNjU5NDUsIDY1OTQ5LCA2NTk1MywgNjU5NTcsIDY1OTYxLCA2NTk2NSwgCi0gICAgNjU5NjksIDY1OTczLCA2NTk3NywgNjU5ODEsIDY1OTg1LCA2NTk4OSwgNjU5OTMsIDY1OTk3LCA2NjAwMSwgNjYwMDUsIAotICAgIDY2MDA5LCA2NjAxMywgNjYwMTcsIDY2MDIxLCA2NjAyNSwgNjYwMjksIDY2MDMzLCA2NjAzNywgNjYwNDEsIDY2MDQ1LCAKLSAgICA2NjA0OSwgNjYwNTMsIDY2MDU3LCA2NjA2MSwgNjYwNjUsIDY2MDY5LCA2NjA3MywgNjYwNzcsIDY2MDgxLCA2NjA4NSwgCi0gICAgNjYwODksIDY2MDkzLCA2NjA5NywgNjYxMDEsIDY2MTA1LCA2NjEwOSwgNjYxMTMsIDY2MTE3LCA2NjEyMSwgNjYxMjUsIAotICAgIDY2MTI5LCA2NjEzMywgNjYxMzcsIDY2MTQxLCA2NjE0NCwgNjYxNDgsIDY2MTUyLCA2NjE1NiwgNjYxNjAsIDY2MTY0LCAKLSAgICA2NjE2OCwgNjYxNzIsIDY2MTc2LCA2NjE4MCwgNjYxODQsIDY2MTg4LCA2NjE5MiwgNjYxOTYsIDY2MjAwLCA2NjIwNCwgCi0gICAgNjYyMDgsIDY2MjEyLCA2NjIxNiwgNjYyMjAsIDY2MjI0LCA2NjIyOCwgNjYyMzIsIDY2MjM2LCA2NjI0MCwgNjYyNDQsIAotICAgIDY2MjQ4LCA2NjI1MiwgNjYyNTYsIDY2MjYwLCA2NjI2NCwgNjYyNjgsIDY2MjcyLCA2NjI3NiwgNjYyODAsIDY2Mjg0LCAKLSAgICA2NjI4OCwgNjYyOTIsIDY2Mjk2LCA2NjMwMCwgNjYzMDQsIDY2MzA4LCA2NjMxMiwgNjYzMTYsIDY2MzIwLCA2NjMyNCwgCi0gICAgNjYzMjgsIDY2MzMyLCA2NjMzNiwgNjYzNDAsIDY2MzQ0LCA2NjM0OCwgNjYzNTIsIDY2MzU2LCA2NjM2MCwgNjYzNjQsIAotICAgIDY2MzY4LCA2NjM3MiwgNjYzNzYsIDY2MzgwLCA2NjM4NCwgNjYzODgsIDY2MzkyLCA2NjM5NiwgNjY0MDAsIDY2NDA0LCAKLSAgICA2NjQwOCwgNjY0MTIsIDY2NDE2LCA2NjQyMCwgNjY0MjQsIDY2NDI4LCA2NjQzMiwgNjY0MzYsIDY2NDQwLCA2NjQ0NCwgCi0gICAgNjY0NDgsIDY2NDUyLCA2NjQ1NiwgNjY0NjAsIDY2NDY0LCA2NjQ2OCwgNjY0NzIsIDY2NDc2LCA2NjQ4MCwgNjY0ODQsIAotICAgIDY2NDg4LCA2NjQ5MiwgNjY0OTYsIDY2NTAwLCA2NjUwNCwgNjY1MDgsIDY2NTEyLCA2NjUxNiwgNjY1MjAsIDY2NTI0LCAKLSAgICA2NjUyOCwgNjY1MzIsIDY2NTM2LCA2NjU0MCwgNjY1NDQsIDY2NTQ4LCA2NjU1MiwgNjY1NTYsIDY2NTYwLCA2NjU2NCwgCi0gICAgNjY1NjgsIDY2NTcyLCA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4OCwgNjY1OTIsIDY2NTk2LCA2NjU5OSwgNjY2MDMsIAotICAgIDY2NjA3LCA2NjYxMSwgNjY2MTUsIDY2NjE5LCA2NjYyMywgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCAKLSAgICA2NjY0NywgNjY2NTEsIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgCi0gICAgNjY2ODcsIDY2NjkxLCA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIAotICAgIDY2NzI3LCA2NjczMSwgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCAKLSAgICA2Njc2NywgNjY3NzEsIDY2Nzc1LCA2Njc3OSwgNjY3ODMsIDY2Nzg3LCA2Njc5MSwgNjY3OTUsIDY2Nzk5LCA2NjgwMywgCi0gICAgNjY4MDcsIDY2ODExLCA2NjgxNSwgNjY4MTksIDY2ODIzLCA2NjgyNywgNjY4MzEsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIAotICAgIDY2ODQ3LCA2Njg1MSwgNjY4NTUsIDY2ODU5LCA2Njg2MywgNjY4NjcsIDY2ODcxLCA2Njg3NSwgNjY4NzksIDY2ODgzLCAKLSAgICA2Njg4NywgNjY4OTEsIDY2ODk1LCA2Njg5OSwgNjY5MDMsIDY2OTA3LCA2NjkxMSwgNjY5MTUsIDY2OTE5LCA2NjkyMywgCi0gICAgNjY5MjcsIDY2OTMxLCA2NjkzNSwgNjY5MzksIDY2OTQzLCA2Njk0NywgNjY5NTEsIDY2OTU1LCA2Njk1OSwgNjY5NjMsIAotICAgIDY2OTY3LCA2Njk3MSwgNjY5NzUsIDY2OTc5LCA2Njk4MywgNjY5ODcsIDY2OTkxLCA2Njk5NSwgNjY5OTksIDY3MDAzLCAKLSAgICA2NzAwNywgNjcwMTEsIDY3MDE1LCA2NzAxOSwgNjcwMjMsIDY3MDI3LCA2NzAzMSwgNjcwMzUsIDY3MDM5LCA2NzA0MywgCi0gICAgNjcwNDcsIDY3MDUxLCA2NzA1NSwgNjcwNTksIDY3MDYzLCA2NzA2NywgNjcwNzEsIDY3MDc1LCA2NzA3OSwgNjcwODMsIAotICAgIDY3MDg3LCA2NzA5MSwgNjcwOTUsIDY3MDk5LCA2NzEwMywgNjcxMDcsIDY3MTExLCA2NzExNSwgNjcxMTksIDY3MTIzLCAKLSAgICA2NzEyNywgNjcxMzEsIDY3MTM1LCA2NzEzOSwgNjcxNDMsIDY3MTQ3LCA2NzE1MSwgNjcxNTUsIDY3MTU5LCA2NzE2MywgCi0gICAgNjcxNjcsIDY3MTcxLCA2NzE3NSwgNjcxNzksIDY3MTgzLCA2NzE4NywgNjcxOTEsIDY3MTk1LCA2NzE5OSwgNjcyMDIsIAotICAgIDY3MjA2LCA2NzIxMCwgNjcyMTQsIDY3MjE4LCA2NzIyMiwgNjcyMjYsIDY3MjMwLCA2NzIzMywgNjcyMzcsIDY3MjQxLCAKLSAgICA2NzI0NSwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgCi0gICAgNjcyODUsIDY3Mjg5LCA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIAotICAgIDY3MzI1LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCAKLSAgICA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgCi0gICAgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIAotICAgIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCAKLSAgICA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgCi0gICAgNjc1MjUsIDY3NTI5LCA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIAotICAgIDY3NTY1LCA2NzU2OSwgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCAKLSAgICA2NzYwNSwgNjc2MDksIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgCi0gICAgNjc2NDUsIDY3NjQ5LCA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIAotICAgIDY3Njg1LCA2NzY4OSwgNjc2OTMsIDY3Njk3LCA2NzcwMSwgNjc3MDUsIDY3NzA5LCA2NzcxMywgNjc3MTcsIDY3NzIxLCAKLSAgICA2NzcyNSwgNjc3MjksIDY3NzMzLCA2NzczNywgNjc3NDEsIDY3NzQ1LCA2Nzc0OSwgNjc3NTMsIDY3NzU3LCA2Nzc2MSwgCi0gICAgNjc3NjUsIDY3NzY5LCA2Nzc3MywgNjc3NzcsIDY3NzgxLCA2Nzc4NSwgNjc3ODksIDY3NzkzLCA2Nzc5NywgNjc4MDEsIAotICAgIDY3ODA1LCA2NzgwOSwgNjc4MTMsIDY3ODE3LCA2NzgyMSwgNjc4MjUsIDY3ODI5LCA2NzgzMywgNjc4MzcsIDY3ODQxLCAKLSAgICA2Nzg0NSwgNjc4NDksIDY3ODUzLCA2Nzg1NywgNjc4NjEsIDY3ODY1LCA2Nzg2OSwgNjc4NzMsIDY3ODc3LCA2Nzg4MSwgCi0gICAgNjc4ODUsIDY3ODg5LCA2Nzg5MywgNjc4OTcsIDY3OTAxLCA2NzkwNSwgNjc5MDksIDY3OTEzLCA2NzkxNywgNjc5MjEsIAotICAgIDY3OTI1LCA2NzkyOSwgNjc5MzMsIDY3OTM3LCA2Nzk0MSwgNjc5NDUsIDY3OTQ5LCA2Nzk1MywgNjc5NTcsIDY3OTYwLCAKLSAgICA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5ODAsIDY3OTg0LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgCi0gICAgNjgwMDQsIDY4MDA4LCA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIAotICAgIDY4MDQ0LCA2ODA0OCwgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCAKLSAgICA2ODA4NCwgNjgwODgsIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgCi0gICAgNjgxMjQsIDY4MTI4LCA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCAKLSAgICA2ODIwNCwgNjgyMDgsIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgCi0gICAgNjgyNDQsIDY4MjQ4LCA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIAotICAgIDY4Mjg0LCA2ODI4OCwgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCAKLSAgICA2ODMyNCwgNjgzMjgsIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgCi0gICAgNjgzNjQsIDY4MzY4LCA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIAotICAgIDY4NDA0LCA2ODQwOCwgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCAKLSAgICA2ODQ0NCwgNjg0NDgsIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgCi0gICAgNjg0ODQsIDY4NDg4LCA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIAotICAgIDY4NTI0LCA2ODUyOCwgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTYsIDY4NTYwLCAKLSAgICA2ODU2NCwgNjg1NjgsIDY4NTcyLCA2ODU3NiwgNjg1ODAsIDY4NTg0LCA2ODU4OCwgNjg1OTIsIDY4NTk2LCA2ODYwMCwgCi0gICAgNjg2MDQsIDY4NjA4LCA2ODYxMiwgNjg2MTYsIDY4NjIwLCA2ODYyNCwgNjg2MjgsIDY4NjMyLCA2ODYzNiwgNjg2NDAsIAotICAgIDY4NjQ0LCA2ODY0OCwgNjg2NTIsIDY4NjU2LCA2ODY2MCwgNjg2NjQsIDY4NjY4LCA2ODY3MiwgNjg2NzYsIDY4NjgwLCAKLSAgICA2ODY4NCwgNjg2ODgsIDY4NjkyLCA2ODY5NiwgNjg3MDAsIDY4NzA0LCA2ODcwOCwgNjg3MTIsIDY4NzE2LCA2ODcyMCwgCi0gICAgNjg3MjQsIDY4NzI4LCA2ODczMiwgNjg3MzYsIDY4NzQwLCAwLCAwLCAwLCA2ODc0NCwgNjg3NDgsIDY4NzUyLCA2ODc1NiwgCi0gICAgNjg3NjAsIDY4NzY0LCA2ODc2OCwgNjg3NzIsIDY4Nzc2LCA2ODc4MCwgNjg3ODQsIDY4Nzg4LCA2ODc5MiwgNjg3OTYsIAotICAgIDY4ODAwLCA2ODgwNCwgNjg4MDgsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI0LCA2ODgyOCwgNjg4MzIsIDY4ODM2LCAKLSAgICA2ODg0MCwgNjg4NDQsIDY4ODQ4LCA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgCi0gICAgNjg4ODAsIDY4ODg0LCA2ODg4OCwgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIAotICAgIDY4OTIwLCA2ODkyNCwgNjg5MjgsIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCAKLSAgICA2ODk2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjg5NjQsIDY4OTY5LCA2ODk3MywgNjg5NzgsIDY4OTgzLCAKLSAgICA2ODk4OCwgNjg5OTMsIDY4OTk4LCA2OTAwMiwgNjkwMDcsIDY5MDEyLCA2OTAxNywgNjkwMjIsIDY5MDI3LCA2OTAzMiwgCi0gICAgNjkwMzcsIDY5MDQxLCA2OTA0NSwgNjkwNTAsIDY5MDU0LCA2OTA1OSwgNjkwNjQsIDY5MDY5LCA2OTA3MywgNjkwNzgsIAotICAgIDY5MDgzLCA2OTA4OCwgNjkwOTMsIDY5MDk4LCA2OTEwMiwgNjkxMDcsIDY5MTExLCA2OTExNiwgNjkxMjAsIDY5MTI1LCAKLSAgICA2OTEyOSwgNjkxMzMsIDY5MTM3LCA2OTE0MiwgNjkxNDcsIDY5MTUyLCA2OTE2MCwgNjkxNjgsIDY5MTc2LCA2OTE4NCwgCi0gICAgNjkxOTEsIDY5MTk5LCA2OTIwNSwgNjkyMTMsIDY5MjE3LCA2OTIyMSwgNjkyMjUsIDY5MjI5LCA2OTIzMywgNjkyMzcsIAotICAgIDY5MjQxLCA2OTI0NSwgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCAKLSAgICA2OTI4MSwgNjkyODUsIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAxLCA2OTMwNSwgNjkzMDksIDY5MzEzLCA2OTMxNywgCi0gICAgNjkzMjEsIDY5MzI1LCA2OTMyOSwgNjkzMzMsIDY5MzM3LCA2OTM0MSwgNjkzNDUsIDY5MzQ5LCA2OTM1MywgNjkzNTcsIAotICAgIDY5MzYwLCA2OTM2NCwgNjkzNjgsIDY5MzcyLCA2OTM3NiwgNjkzODAsIDY5Mzg0LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCAKLSAgICA2OTQwMCwgNjk0MDQsIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgCi0gICAgNjk0NDAsIDY5NDQ0LCA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIAotICAgIDY5NDgwLCA2OTQ4NCwgNjk0ODgsIDY5NDkyLCA2OTQ5NiwgNjk1MDAsIDY5NTA0LCA2OTUwNywgNjk1MTEsIDY5NTE1LCAKLSAgICA2OTUxOCwgNjk1MjIsIDY5NTI2LCA2OTUzMCwgNjk1MzMsIDY5NTM3LCA2OTU0MSwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgCi0gICAgNjk1NTcsIDY5NTYxLCA2OTU2NSwgNjk1NjksIDY5NTczLCA2OTU3NywgNjk1ODEsIDY5NTg1LCA2OTU4OSwgNjk1OTIsIAotICAgIDY5NTk2LCA2OTYwMCwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTUsIDY5NjE5LCA2OTYyMywgNjk2MjcsIDY5NjMwLCAKLSAgICA2OTYzMywgNjk2MzcsIDY5NjQxLCA2OTY0NSwgNjk2NDgsIDY5NjUxLCA2OTY1NSwgNjk2NTksIDY5NjYzLCA2OTY2NywgCi0gICAgNjk2NzEsIDY5Njc1LCA2OTY3OSwgNjk2ODMsIDY5Njg3LCA2OTY5MSwgNjk2OTUsIDY5Njk5LCA2OTcwMywgNjk3MDcsIAotICAgIDY5NzExLCA2OTcxNSwgNjk3MTksIDY5NzIzLCA2OTcyNywgNjk3MzEsIDY5NzM1LCA2OTczOSwgNjk3NDMsIDY5NzQ3LCAKLSAgICA2OTc1MSwgNjk3NTUsIDY5NzU5LCA2OTc2MywgNjk3NjcsIDY5NzcxLCA2OTc3NSwgNjk3NzksIDY5NzgzLCA2OTc4NywgCi0gICAgNjk3OTEsIDY5Nzk1LCA2OTc5OSwgNjk4MDIsIDY5ODA2LCA2OTgxMCwgNjk4MTQsIDY5ODE4LCA2OTgyMiwgNjk4MjYsIAotICAgIDY5ODMwLCA2OTgzNCwgNjk4MzgsIDY5ODQyLCA2OTg0NiwgNjk4NTAsIDY5ODU0LCA2OTg1OCwgNjk4NjIsIDY5ODY2LCAKLSAgICA2OTg3MCwgNjk4NzQsIDY5ODc4LCA2OTg4MiwgNjk4ODYsIDY5ODkwLCA2OTg5NCwgNjk4OTgsIDY5OTAyLCA2OTkwNiwgCi0gICAgNjk5MTAsIDY5OTE0LCA2OTkxOCwgNjk5MjIsIDY5OTI2LCA2OTkzMCwgNjk5MzQsIDY5OTM4LCA2OTk0MiwgNjk5NDYsIAotICAgIDY5OTQ5LCA2OTk1MywgNjk5NTcsIDY5OTYxLCA2OTk2NSwgNjk5NjksIDY5OTczLCA2OTk3NywgNjk5ODEsIDY5OTg1LCAKLSAgICA2OTk4OSwgNjk5OTMsIDY5OTk3LCA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTYsIDcwMDIwLCA3MDAyNCwgCi0gICAgNzAwMjgsIDcwMDMyLCA3MDAzNiwgNzAwNDAsIDcwMDQ0LCA3MDA0OCwgNzAwNTIsIDcwMDU2LCA3MDA2MCwgNzAwNjQsIAotICAgIDcwMDY4LCA3MDA3MiwgNzAwNzYsIDcwMDgwLCA3MDA4NCwgNzAwODgsIDcwMDkyLCA3MDA5NiwgNzAxMDAsIDcwMTAzLCAKLSAgICA3MDEwNywgNzAxMTEsIDcwMTE1LCA3MDExOSwgNzAxMjMsIDcwMTI3LCA3MDEzMSwgNzAxMzUsIDcwMTM5LCA3MDE0MywgCi0gICAgNzAxNDcsIDcwMTUxLCA3MDE1NSwgNzAxNTksIDcwMTYzLCA3MDE2NywgNzAxNzEsIDcwMTc1LCA3MDE3OSwgNzAxODMsIAotICAgIDcwMTg3LCA3MDE5MSwgNzAxOTUsIDcwMTk5LCA3MDIwMywgNzAyMDcsIDcwMjExLCA3MDIxNSwgNzAyMTksIDcwMjIzLCAKLSAgICA3MDIyNywgNzAyMzEsIDcwMjM1LCA3MDIzOSwgNzAyNDMsIDcwMjQ3LCA3MDI1MSwgNzAyNTUsIDcwMjU5LCA3MDI2MywgCi0gICAgNzAyNjcsIDcwMjcxLCA3MDI3NSwgNzAyNzgsIDcwMjgzLCA3MDI4NywgNzAyOTMsIDcwMjk4LCA3MDMwNCwgNzAzMDgsIAotICAgIDcwMzEyLCA3MDMxNiwgNzAzMjAsIDcwMzI0LCA3MDMyOCwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ4LCAKLSAgICA3MDM1MiwgNzAzNTYsIDcwMzYwLCA3MDM2MywgNzAzNjYsIDcwMzY5LCA3MDM3MiwgNzAzNzUsIDcwMzc4LCA3MDM4MSwgCi0gICAgNzAzODQsIDcwMzg3LCA3MDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzAzOTgsIDcwNDAzLCA3MDQwOCwgNzA0MTMsIDcwNDE4LCA3MDQyNSwgNzA0MzIsIDcwNDM3LCA3MDQ0MiwgCi0gICAgNzA0NDcsIDcwNDUyLCA3MDQ1OSwgNzA0NjYsIDcwNDczLCA3MDQ4MCwgNzA0ODcsIDcwNDk0LCA3MDUwNCwgNzA1MTQsIAotICAgIDcwNTIxLCA3MDUyOCwgNzA1MzUsIDcwNTQyLCA3MDU0OCwgNzA1NTQsIDcwNTYzLCA3MDU3MiwgNzA1NzksIDcwNTg2LCAKLSAgICA3MDU5NywgNzA2MDgsIDcwNjEzLCA3MDYxOCwgNzA2MjUsIDcwNjMyLCA3MDYzOSwgNzA2NDYsIDcwNjUzLCA3MDY2MCwgCi0gICAgNzA2NjcsIDcwNjc0LCA3MDY4MCwgNzA2ODYsIDcwNjkyLCA3MDY5OCwgNzA3MDUsIDcwNzEyLCA3MDcxNywgNzA3MjEsIAotICAgIDcwNzI4LCA3MDczNSwgNzA3NDIsIDcwNzQ2LCA3MDc1MywgNzA3NTcsIDcwNzYyLCA3MDc2NiwgNzA3NzIsIDcwNzc3LCAKLSAgICA3MDc4MywgNzA3ODgsIDcwNzkyLCA3MDc5NiwgNzA3OTksIDcwODAyLCA3MDgwNywgNzA4MTIsIDcwODE3LCA3MDgyMiwgCi0gICAgNzA4MjcsIDcwODMyLCA3MDgzNywgNzA4NDIsIDcwODQ3LCA3MDg1MiwgNzA4NjEsIDcwODcwLCA3MDg3NSwgNzA4ODAsIAotICAgIDcwODg1LCA3MDg5MCwgNzA4OTUsIDcwOTAwLCA3MDkwNSwgNzA5MTAsIDcwOTE1LCA3MDkyMCwgNzA5MjUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcwOTMwLCA3MDkzNiwgNzA5MzksIDcwOTQyLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgCi0gICAgNzA5NjEsIDcwOTY0LCA3MDk2OCwgNzA5NzEsIDcwOTc1LCA3MDk3OCwgNzA5ODIsIDcwOTg2LCA3MDk5MCwgNzA5OTQsIAotICAgIDcwOTk4LCA3MTAwMiwgNzEwMDYsIDcxMDA5LCA3MTAxMywgNzEwMTcsIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCAKLSAgICA3MTAzNywgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY4LCA3MTA3MiwgCi0gICAgNzEwNzYsIDcxMDgwLCA3MTA4NCwgNzEwODgsIDcxMDkyLCA3MTA5NiwgNzExMDAsIDcxMTA0LCA3MTEwOCwgNzExMTIsIAotICAgIDcxMTE2LCA3MTEyMCwgNzExMjQsIDcxMTI4LCA3MTEzMiwgNzExMzYsIDcxMTQwLCA3MTE0NCwgNzExNDgsIDcxMTUyLCAKLSAgICA3MTE1NiwgNzExNjAsIDcxMTY0LCA3MTE2NywgNzExNzEsIDcxMTc1LCA3MTE3OSwgNzExODMsIDcxMTg3LCA3MTE5MSwgCi0gICAgNzExOTUsIDcxMTk4LCA3MTIwMiwgNzEyMDYsIDcxMjEwLCA3MTIxNCwgNzEyMTgsIDcxMjIyLCA3MTIyNiwgNzEyMzAsIAotICAgIDcxMjM0LCA3MTIzOCwgNzEyNDIsIDcxMjQ2LCA3MTI1MSwgNzEyNTYsIDcxMjU5LCA3MTI2NCwgNzEyNjcsIDcxMjcwLCAKLSAgICA3MTI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEyNzcsIDcxMjg2LCA3MTI5NSwgNzEzMDQsIDcxMzEzLCA3MTMyMiwgCi0gICAgNzEzMzEsIDcxMzQwLCA3MTM0OSwgNzEzNTcsIDcxMzY0LCA3MTM3MiwgNzEzNzksIDcxMzg3LCA3MTM5NywgNzE0MDYsIAotICAgIDcxNDE2LCA3MTQyNSwgNzE0MzUsIDcxNDQzLCA3MTQ1MCwgNzE0NTgsIDcxNDY1LCA3MTQ3MywgNzE0NzgsIDcxNDgzLCAKLSAgICA3MTQ4OCwgNzE0OTcsIDcxNTAzLCA3MTUwOSwgNzE1MTYsIDcxNTI1LCA3MTUzMywgNzE1NDEsIDcxNTQ5LCA3MTU1NiwgCi0gICAgNzE1NjMsIDcxNTcwLCA3MTU3NywgNzE1ODIsIDcxNTg3LCA3MTU5MiwgNzE1OTcsIDcxNjAyLCA3MTYwNywgNzE2MTIsIAotICAgIDcxNjE3LCA3MTYyNSwgNzE2MzMsIDcxNjM5LCA3MTY0NSwgNzE2NTAsIDcxNjU1LCA3MTY2MCwgNzE2NjUsIDcxNjcwLCAKLSAgICA3MTY3NSwgNzE2ODAsIDcxNjg1LCA3MTY5MywgNzE3MDEsIDcxNzA2LCA3MTcxMSwgNzE3MjEsIDcxNzMxLCA3MTczOCwgCi0gICAgNzE3NDUsIDcxNzU0LCA3MTc2MywgNzE3NzUsIDcxNzg3LCA3MTc5MywgNzE3OTksIDcxODA3LCA3MTgxNSwgNzE4MjUsIAotICAgIDcxODM1LCA3MTg0MiwgNzE4NDksIDcxODU0LCA3MTg1OSwgNzE4NzEsIDcxODgzLCA3MTg5MSwgNzE4OTksIDcxOTA5LCAKLSAgICA3MTkxOSwgNzE5MzEsIDcxOTQzLCA3MTk1MiwgNzE5NjEsIDcxOTY4LCA3MTk3NSwgNzE5ODIsIDcxOTg5LCA3MTk5OCwgCi0gICAgNzIwMDcsIDcyMDEyLCA3MjAxNywgNzIwMjQsIDcyMDMxLCA3MjAzOCwgNzIwNDUsIDcyMDU3LCA3MjA2OSwgNzIwNzQsIAotICAgIDcyMDc5LCA3MjA4NCwgNzIwODksIDcyMDk0LCA3MjA5OSwgNzIxMDQsIDcyMTA5LCA3MjExMywgNzIxMTgsIDcyMTIzLCAKLSAgICA3MjEyOCwgNzIxMzMsIDcyMTM4LCA3MjE0NCwgNzIxNDksIDcyMTU0LCA3MjE2MSwgNzIxNjgsIDcyMTc1LCA3MjE4MiwgCi0gICAgNzIxODksIDcyMTk4LCA3MjIwNywgNzIyMTMsIDcyMjE5LCA3MjIyNSwgNzIyMzEsIDcyMjM4LCA3MjI0NSwgNzIyNTIsIAotICAgIDcyMjU5LCA3MjI2NiwgNzIyNzAsIDcyMjc3LCA3MjI4MiwgNzIyODcsIDcyMjk0LCAwLCA3MjMwNywgNzIzMTUsIDcyMzIzLCAKLSAgICA3MjMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIzMzcsIDcyMzQ2LCA3MjM1NSwgNzIzNjQsIAotICAgIDcyMzczLCA3MjM4MiwgNzIzOTEsIDcyNDAwLCA3MjQwOSwgNzI0MTgsIDcyNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzY4MywgNjM2OTIsIDYzNzAxLCA2MzcxMiwgCisgICAgNjM3MTksIDYzNzI0LCA2MzcyOSwgNjM3MzYsIDYzNzQzLCA2Mzc0OSwgNjM3NTQsIDYzNzU5LCA2Mzc2NCwgNjM3NjksIAorICAgIDYzNzc2LCA2Mzc4MSwgNjM3ODYsIDYzNzkxLCA2MzgwMiwgNjM4MDcsIDYzODEyLCA2MzgxOSwgNjM4MjQsIDYzODMxLCAKKyAgICA2MzgzNiwgNjM4NDEsIDYzODQ4LCA2Mzg1NSwgNjM4NjIsIDYzODcxLCA2Mzg4MCwgNjM4ODUsIDYzODkwLCA2Mzg5NSwgCisgICAgNjM5MDIsIDYzOTA3LCA2MzkxNywgNjM5MjQsIDYzOTI5LCA2MzkzNCwgNjM5MzksIDYzOTQ0LCA2Mzk0OSwgNjM5NTQsIAorICAgIDYzOTYzLCA2Mzk3MCwgNjM5NzcsIDYzOTgyLCA2Mzk4OSwgNjM5OTQsIDY0MDAxLCA2NDAxMCwgNjQwMjEsIDY0MDI2LCAKKyAgICA2NDAzNSwgNjQwNDAsIDY0MDQ3LCA2NDA1NiwgNjQwNjUsIDY0MDcwLCA2NDA3NSwgNjQwODIsIDY0MDg4LCA2NDA5NSwgCisgICAgNjQxMDIsIDY0MTA2LCA2NDExMCwgNjQxMTMsIDY0MTE3LCA2NDEyMSwgNjQxMjUsIDY0MTI5LCA2NDEzMywgNjQxMzcsIAorICAgIDY0MTQxLCA2NDE0NCwgNjQxNDgsIDY0MTUyLCA2NDE1NiwgNjQxNjAsIDY0MTY0LCA2NDE2OCwgNjQxNzEsIDY0MTc1LCAKKyAgICA2NDE3OSwgNjQxODIsIDY0MTg2LCA2NDE5MCwgNjQxOTQsIDY0MTk4LCA2NDIwMiwgNjQyMDYsIDY0MjEwLCA2NDIxNCwgCisgICAgNjQyMTgsIDY0MjIyLCA2NDIyNiwgNjQyMzAsIDY0MjM0LCA2NDIzOCwgNjQyNDIsIDY0MjQ2LCA2NDI1MCwgNjQyNTQsIAorICAgIDY0MjU4LCA2NDI2MiwgNjQyNjYsIDY0MjcwLCA2NDI3NCwgNjQyNzgsIDY0MjgyLCA2NDI4NiwgNjQyOTAsIDY0Mjk0LCAKKyAgICA2NDI5OCwgNjQzMDIsIDY0MzA2LCA2NDMxMCwgNjQzMTQsIDY0MzE4LCA2NDMyMiwgNjQzMjYsIDY0MzMwLCA2NDMzNCwgCisgICAgNjQzMzgsIDY0MzQyLCA2NDM0NiwgNjQzNTAsIDY0MzU0LCA2NDM1OCwgNjQzNjEsIDY0MzY1LCA2NDM2OSwgNjQzNzMsIAorICAgIDY0Mzc3LCA2NDM4MSwgNjQzODUsIDY0Mzg5LCA2NDM5MywgNjQzOTcsIDY0NDAxLCA2NDQwNSwgNjQ0MDksIDY0NDEzLCAKKyAgICA2NDQxNywgNjQ0MjEsIDY0NDI1LCA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIDY0NDQ5LCA2NDQ1MywgCisgICAgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg1LCA2NDQ4OSwgNjQ0OTMsIAorICAgIDY0NDk3LCA2NDUwMSwgNjQ1MDUsIDY0NTA5LCA2NDUxMywgNjQ1MTcsIDY0NTIxLCA2NDUyNSwgNjQ1MjksIDY0NTMzLCAKKyAgICA2NDUzNywgNjQ1NDEsIDY0NTQ1LCA2NDU0OSwgNjQ1NTMsIDY0NTU3LCA2NDU2MSwgNjQ1NjUsIDY0NTY5LCA2NDU3MywgCisgICAgNjQ1NzcsIDY0NTgxLCA2NDU4NSwgNjQ1ODksIDY0NTkzLCA2NDU5NywgNjQ2MDEsIDY0NjA1LCA2NDYwOSwgNjQ2MTMsIAorICAgIDY0NjE3LCA2NDYyMSwgNjQ2MjUsIDY0NjI5LCA2NDYzMywgNjQ2MzcsIDY0NjQxLCA2NDY0NSwgNjQ2NDksIDY0NjUzLCAKKyAgICA2NDY1NywgNjQ2NjEsIDY0NjY1LCA2NDY2OSwgNjQ2NzMsIDY0Njc3LCA2NDY4MSwgNjQ2ODUsIDY0Njg5LCA2NDY5MywgCisgICAgNjQ2OTcsIDY0NzAxLCA2NDcwNSwgNjQ3MDksIDY0NzEzLCA2NDcxNywgNjQ3MjEsIDY0NzI1LCA2NDcyOSwgNjQ3MzMsIAorICAgIDY0NzM3LCA2NDc0MSwgNjQ3NDUsIDY0NzQ5LCA2NDc1MywgNjQ3NTcsIDY0NzYxLCA2NDc2NSwgNjQ3NjksIDY0NzczLCAKKyAgICA2NDc3NywgNjQ3ODEsIDY0Nzg1LCA2NDc4OSwgNjQ3OTMsIDY0Nzk3LCA2NDgwMSwgNjQ4MDUsIDY0ODA5LCA2NDgxMywgCisgICAgNjQ4MTcsIDY0ODIxLCA2NDgyNSwgNjQ4MjksIDY0ODMyLCA2NDgzNiwgNjQ4NDAsIDY0ODQ0LCA2NDg0OCwgNjQ4NTIsIAorICAgIDY0ODU2LCA2NDg2MCwgNjQ4NjQsIDY0ODY4LCA2NDg3MiwgNjQ4NzYsIDY0ODgwLCA2NDg4NCwgNjQ4ODgsIDY0ODkyLCAKKyAgICA2NDg5NiwgNjQ5MDAsIDY0OTA0LCA2NDkwOCwgNjQ5MTIsIDY0OTE2LCA2NDkyMCwgNjQ5MjQsIDY0OTI4LCA2NDkzMiwgCisgICAgNjQ5MzYsIDY0OTQwLCA2NDk0NCwgNjQ5NDgsIDY0OTUyLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCA2NDk2OCwgNjQ5NzIsIAorICAgIDY0OTc2LCA2NDk4MCwgNjQ5ODQsIDY0OTg4LCA2NDk5MiwgNjQ5OTYsIDY1MDAwLCA2NTAwNCwgNjUwMDgsIDY1MDEyLCAKKyAgICA2NTAxNiwgNjUwMjAsIDY1MDI0LCA2NTAyOCwgNjUwMzIsIDY1MDM2LCA2NTA0MCwgNjUwNDQsIDY1MDQ4LCA2NTA1MiwgCisgICAgNjUwNTYsIDY1MDYwLCA2NTA2NCwgNjUwNjgsIDY1MDcyLCA2NTA3NiwgNjUwODAsIDY1MDg0LCA2NTA4OCwgNjUwOTIsIAorICAgIDY1MDk2LCA2NTEwMCwgNjUxMDQsIDY1MTA4LCA2NTExMiwgNjUxMTYsIDY1MTIwLCA2NTEyNCwgNjUxMjgsIDY1MTMyLCAKKyAgICA2NTEzNiwgNjUxNDAsIDY1MTQ0LCA2NTE0OCwgNjUxNTIsIDY1MTU2LCA2NTE2MCwgNjUxNjQsIDY1MTY4LCA2NTE3MiwgCisgICAgNjUxNzYsIDY1MTgwLCA2NTE4NCwgNjUxODgsIDY1MTkyLCA2NTE5NiwgNjUyMDAsIDY1MjA0LCA2NTIwOCwgNjUyMTIsIAorICAgIDY1MjE2LCA2NTIyMCwgNjUyMjQsIDY1MjI4LCA2NTIzMiwgNjUyMzYsIDY1MjQwLCA2NTI0NCwgNjUyNDgsIDY1MjUyLCAKKyAgICA2NTI1NiwgNjUyNjAsIDY1MjY0LCA2NTI2OCwgNjUyNzIsIDY1Mjc2LCA2NTI4MCwgNjUyODQsIDY1Mjg4LCA2NTI5MiwgCisgICAgNjUyOTUsIDY1Mjk5LCA2NTMwMywgNjUzMDcsIDY1MzExLCA2NTMxNSwgNjUzMTksIDY1MzIzLCA2NTMyNywgNjUzMzEsIAorICAgIDY1MzM1LCA2NTMzOSwgNjUzNDMsIDY1MzQ3LCA2NTM1MSwgNjUzNTUsIDY1MzU5LCA2NTM2MywgNjUzNjcsIDY1MzcxLCAKKyAgICA2NTM3NSwgNjUzNzksIDY1MzgzLCA2NTM4NywgNjUzOTEsIDY1Mzk1LCA2NTM5OSwgNjU0MDMsIDY1NDA3LCA2NTQxMSwgCisgICAgNjU0MTUsIDY1NDE5LCA2NTQyMywgNjU0MjcsIDY1NDMxLCA2NTQzNSwgNjU0MzksIDY1NDQzLCA2NTQ0NywgNjU0NTEsIAorICAgIDY1NDU1LCA2NTQ1OSwgNjU0NjMsIDY1NDY3LCA2NTQ3MSwgNjU0NzUsIDY1NDc5LCA2NTQ4MywgNjU0ODcsIDY1NDkxLCAKKyAgICA2NTQ5NSwgNjU0OTksIDY1NTAzLCA2NTUwNywgNjU1MTEsIDY1NTE1LCA2NTUxOSwgNjU1MjMsIDY1NTI3LCA2NTUzMSwgCisgICAgNjU1MzUsIDY1NTM5LCA2NTU0MywgNjU1NDcsIDY1NTUxLCA2NTU1NSwgNjU1NTksIDY1NTYzLCA2NTU2NywgNjU1NzEsIAorICAgIDY1NTc1LCA2NTU3OSwgNjU1ODMsIDY1NTg3LCA2NTU5MSwgNjU1OTUsIDY1NTk5LCA2NTYwMywgNjU2MDcsIDY1NjExLCAKKyAgICA2NTYxNSwgNjU2MTksIDY1NjIzLCA2NTYyNywgNjU2MzEsIDY1NjM1LCA2NTYzOSwgNjU2NDMsIDY1NjQ3LCA2NTY1MSwgCisgICAgNjU2NTQsIDY1NjU4LCA2NTY2MiwgNjU2NjYsIDY1NjcwLCA2NTY3NCwgNjU2NzgsIDY1NjgyLCA2NTY4NiwgNjU2OTAsIAorICAgIDY1Njk0LCA2NTY5OCwgNjU3MDIsIDY1NzA2LCA2NTcxMCwgNjU3MTQsIDY1NzE4LCA2NTcyMiwgNjU3MjYsIDY1NzMwLCAKKyAgICA2NTczNCwgNjU3MzgsIDY1NzQyLCA2NTc0NiwgNjU3NTAsIDY1NzU0LCA2NTc1OCwgNjU3NjIsIDY1NzY2LCA2NTc3MCwgCisgICAgNjU3NzQsIDY1Nzc4LCA2NTc4MiwgNjU3ODYsIDY1NzkwLCA2NTc5NCwgNjU3OTgsIDY1ODAyLCA2NTgwNiwgNjU4MTAsIAorICAgIDY1ODE0LCA2NTgxOCwgNjU4MjIsIDY1ODI2LCA2NTgzMCwgNjU4MzQsIDY1ODM4LCA2NTg0MiwgNjU4NDYsIDY1ODUwLCAKKyAgICA2NTg1NCwgNjU4NTgsIDY1ODYyLCA2NTg2NiwgNjU4NzAsIDY1ODc0LCA2NTg3OCwgNjU4ODIsIDY1ODg2LCA2NTg5MCwgCisgICAgNjU4OTQsIDY1ODk4LCA2NTkwMiwgNjU5MDYsIDY1OTEwLCA2NTkxNCwgNjU5MTgsIDY1OTIyLCA2NTkyNiwgNjU5MzAsIAorICAgIDY1OTM0LCA2NTkzOCwgNjU5NDIsIDY1OTQ2LCA2NTk1MCwgNjU5NTQsIDY1OTU4LCA2NTk2MiwgNjU5NjYsIDY1OTcwLCAKKyAgICA2NTk3NCwgNjU5NzgsIDY1OTgyLCA2NTk4NiwgNjU5OTAsIDY1OTk0LCA2NTk5OCwgNjYwMDIsIDY2MDA2LCA2NjAxMCwgCisgICAgNjYwMTQsIDY2MDE4LCA2NjAyMiwgNjYwMjYsIDY2MDMwLCA2NjAzNCwgNjYwMzgsIDY2MDQyLCA2NjA0NiwgNjYwNTAsIAorICAgIDY2MDU0LCA2NjA1OCwgNjYwNjIsIDY2MDY2LCA2NjA3MCwgNjYwNzQsIDY2MDc4LCA2NjA4MiwgNjYwODYsIDY2MDkwLCAKKyAgICA2NjA5NCwgNjYwOTgsIDY2MTAyLCA2NjEwNiwgNjYxMTAsIDY2MTE0LCA2NjExOCwgNjYxMjIsIDY2MTI2LCA2NjEzMCwgCisgICAgNjYxMzQsIDY2MTM4LCA2NjE0MiwgNjYxNDYsIDY2MTQ5LCA2NjE1MywgNjYxNTcsIDY2MTYxLCA2NjE2NSwgNjYxNjksIAorICAgIDY2MTczLCA2NjE3NywgNjYxODEsIDY2MTg1LCA2NjE4OSwgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCAKKyAgICA2NjIxMywgNjYyMTcsIDY2MjIxLCA2NjIyNSwgNjYyMjksIDY2MjMzLCA2NjIzNywgNjYyNDEsIDY2MjQ1LCA2NjI0OSwgCisgICAgNjYyNTMsIDY2MjU3LCA2NjI2MSwgNjYyNjUsIDY2MjY5LCA2NjI3MywgNjYyNzcsIDY2MjgxLCA2NjI4NSwgNjYyODksIAorICAgIDY2MjkzLCA2NjI5NywgNjYzMDEsIDY2MzA1LCA2NjMwOSwgNjYzMTMsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzI5LCAKKyAgICA2NjMzMywgNjYzMzcsIDY2MzQxLCA2NjM0NSwgNjYzNDksIDY2MzUzLCA2NjM1NywgNjYzNjEsIDY2MzY1LCA2NjM2OSwgCisgICAgNjYzNzMsIDY2Mzc3LCA2NjM4MSwgNjYzODUsIDY2Mzg5LCA2NjM5MywgNjYzOTcsIDY2NDAxLCA2NjQwNSwgNjY0MDksIAorICAgIDY2NDEzLCA2NjQxNywgNjY0MjEsIDY2NDI1LCA2NjQyOSwgNjY0MzMsIDY2NDM3LCA2NjQ0MSwgNjY0NDUsIDY2NDQ5LCAKKyAgICA2NjQ1MywgNjY0NTcsIDY2NDYxLCA2NjQ2NSwgNjY0NjksIDY2NDczLCA2NjQ3NywgNjY0ODEsIDY2NDg1LCA2NjQ4OSwgCisgICAgNjY0OTMsIDY2NDk3LCA2NjUwMSwgNjY1MDUsIDY2NTA5LCA2NjUxMywgNjY1MTcsIDY2NTIxLCA2NjUyNSwgNjY1MjksIAorICAgIDY2NTMzLCA2NjUzNywgNjY1NDEsIDY2NTQ1LCA2NjU0OSwgNjY1NTMsIDY2NTU3LCA2NjU2MSwgNjY1NjUsIDY2NTY5LCAKKyAgICA2NjU3MywgNjY1NzcsIDY2NTgxLCA2NjU4NSwgNjY1ODksIDY2NTkzLCA2NjU5NywgNjY2MDEsIDY2NjA0LCA2NjYwOCwgCisgICAgNjY2MTIsIDY2NjE2LCA2NjYyMCwgNjY2MjQsIDY2NjI4LCA2NjYzMiwgNjY2MzYsIDY2NjQwLCA2NjY0NCwgNjY2NDgsIAorICAgIDY2NjUyLCA2NjY1NiwgNjY2NjAsIDY2NjY0LCA2NjY2OCwgNjY2NzIsIDY2Njc2LCA2NjY4MCwgNjY2ODQsIDY2Njg4LCAKKyAgICA2NjY5MiwgNjY2OTYsIDY2NzAwLCA2NjcwNCwgNjY3MDgsIDY2NzEyLCA2NjcxNiwgNjY3MjAsIDY2NzI0LCA2NjcyOCwgCisgICAgNjY3MzIsIDY2NzM2LCA2Njc0MCwgNjY3NDQsIDY2NzQ4LCA2Njc1MiwgNjY3NTYsIDY2NzYwLCA2Njc2NCwgNjY3NjgsIAorICAgIDY2NzcyLCA2Njc3NiwgNjY3ODAsIDY2Nzg0LCA2Njc4OCwgNjY3OTIsIDY2Nzk2LCA2NjgwMCwgNjY4MDQsIDY2ODA4LCAKKyAgICA2NjgxMiwgNjY4MTYsIDY2ODIwLCA2NjgyNCwgNjY4MjgsIDY2ODMyLCA2NjgzNiwgNjY4NDAsIDY2ODQ0LCA2Njg0OCwgCisgICAgNjY4NTIsIDY2ODU2LCA2Njg2MCwgNjY4NjQsIDY2ODY4LCA2Njg3MiwgNjY4NzYsIDY2ODgwLCA2Njg4NCwgNjY4ODgsIAorICAgIDY2ODkyLCA2Njg5NiwgNjY5MDAsIDY2OTA0LCA2NjkwOCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCAKKyAgICA2NjkzMiwgNjY5MzYsIDY2OTQwLCA2Njk0NCwgNjY5NDgsIDY2OTUyLCA2Njk1NiwgNjY5NjAsIDY2OTY0LCA2Njk2OCwgCisgICAgNjY5NzIsIDY2OTc2LCA2Njk4MCwgNjY5ODQsIDY2OTg4LCA2Njk5MiwgNjY5OTYsIDY3MDAwLCA2NzAwNCwgNjcwMDgsIAorICAgIDY3MDEyLCA2NzAxNiwgNjcwMjAsIDY3MDI0LCA2NzAyOCwgNjcwMzIsIDY3MDM2LCA2NzA0MCwgNjcwNDQsIDY3MDQ4LCAKKyAgICA2NzA1MiwgNjcwNTYsIDY3MDYwLCA2NzA2NCwgNjcwNjgsIDY3MDcyLCA2NzA3NiwgNjcwODAsIDY3MDg0LCA2NzA4OCwgCisgICAgNjcwOTIsIDY3MDk2LCA2NzEwMCwgNjcxMDQsIDY3MTA4LCA2NzExMiwgNjcxMTYsIDY3MTIwLCA2NzEyNCwgNjcxMjgsIAorICAgIDY3MTMyLCA2NzEzNiwgNjcxNDAsIDY3MTQ0LCA2NzE0OCwgNjcxNTIsIDY3MTU2LCA2NzE2MCwgNjcxNjQsIDY3MTY4LCAKKyAgICA2NzE3MiwgNjcxNzYsIDY3MTgwLCA2NzE4NCwgNjcxODgsIDY3MTkyLCA2NzE5NiwgNjcyMDAsIDY3MjA0LCA2NzIwNywgCisgICAgNjcyMTEsIDY3MjE1LCA2NzIxOSwgNjcyMjMsIDY3MjI3LCA2NzIzMSwgNjcyMzUsIDY3MjM4LCA2NzI0MiwgNjcyNDYsIAorICAgIDY3MjUwLCA2NzI1NCwgNjcyNTgsIDY3MjYyLCA2NzI2NiwgNjcyNzAsIDY3Mjc0LCA2NzI3OCwgNjcyODIsIDY3Mjg2LCAKKyAgICA2NzI5MCwgNjcyOTQsIDY3Mjk4LCA2NzMwMiwgNjczMDYsIDY3MzEwLCA2NzMxNCwgNjczMTgsIDY3MzIyLCA2NzMyNiwgCisgICAgNjczMzAsIDY3MzM0LCA2NzMzOCwgNjczNDIsIDY3MzQ2LCA2NzM1MCwgNjczNTQsIDY3MzU4LCA2NzM2MiwgNjczNjYsIAorICAgIDY3MzcwLCA2NzM3NCwgNjczNzgsIDY3MzgyLCA2NzM4NiwgNjczOTAsIDY3Mzk0LCA2NzM5OCwgNjc0MDIsIDY3NDA2LCAKKyAgICA2NzQxMCwgNjc0MTQsIDY3NDE4LCA2NzQyMiwgNjc0MjYsIDY3NDMwLCA2NzQzNCwgNjc0MzgsIDY3NDQyLCA2NzQ0NiwgCisgICAgNjc0NTAsIDY3NDU0LCA2NzQ1OCwgNjc0NjIsIDY3NDY2LCA2NzQ3MCwgNjc0NzQsIDY3NDc4LCA2NzQ4MiwgNjc0ODYsIAorICAgIDY3NDkwLCA2NzQ5NCwgNjc0OTgsIDY3NTAyLCA2NzUwNiwgNjc1MTAsIDY3NTE0LCA2NzUxOCwgNjc1MjIsIDY3NTI2LCAKKyAgICA2NzUzMCwgNjc1MzQsIDY3NTM4LCA2NzU0MiwgNjc1NDYsIDY3NTUwLCA2NzU1NCwgNjc1NTgsIDY3NTYyLCA2NzU2NiwgCisgICAgNjc1NzAsIDY3NTc0LCA2NzU3OCwgNjc1ODIsIDY3NTg2LCA2NzU5MCwgNjc1OTQsIDY3NTk4LCA2NzYwMiwgNjc2MDYsIAorICAgIDY3NjEwLCA2NzYxNCwgNjc2MTgsIDY3NjIyLCA2NzYyNiwgNjc2MzAsIDY3NjM0LCA2NzYzOCwgNjc2NDIsIDY3NjQ2LCAKKyAgICA2NzY1MCwgNjc2NTQsIDY3NjU4LCA2NzY2MiwgNjc2NjYsIDY3NjcwLCA2NzY3NCwgNjc2NzgsIDY3NjgyLCA2NzY4NiwgCisgICAgNjc2OTAsIDY3Njk0LCA2NzY5OCwgNjc3MDIsIDY3NzA2LCA2NzcxMCwgNjc3MTQsIDY3NzE4LCA2NzcyMiwgNjc3MjYsIAorICAgIDY3NzMwLCA2NzczNCwgNjc3MzgsIDY3NzQyLCA2Nzc0NiwgNjc3NTAsIDY3NzU0LCA2Nzc1OCwgNjc3NjIsIDY3NzY2LCAKKyAgICA2Nzc3MCwgNjc3NzQsIDY3Nzc4LCA2Nzc4MiwgNjc3ODYsIDY3NzkwLCA2Nzc5NCwgNjc3OTgsIDY3ODAyLCA2NzgwNiwgCisgICAgNjc4MTAsIDY3ODE0LCA2NzgxOCwgNjc4MjIsIDY3ODI2LCA2NzgzMCwgNjc4MzQsIDY3ODM4LCA2Nzg0MiwgNjc4NDYsIAorICAgIDY3ODUwLCA2Nzg1NCwgNjc4NTgsIDY3ODYyLCA2Nzg2NiwgNjc4NzAsIDY3ODc0LCA2Nzg3OCwgNjc4ODIsIDY3ODg2LCAKKyAgICA2Nzg5MCwgNjc4OTQsIDY3ODk4LCA2NzkwMiwgNjc5MDYsIDY3OTEwLCA2NzkxNCwgNjc5MTgsIDY3OTIyLCA2NzkyNiwgCisgICAgNjc5MzAsIDY3OTM0LCA2NzkzOCwgNjc5NDIsIDY3OTQ2LCA2Nzk1MCwgNjc5NTQsIDY3OTU4LCA2Nzk2MiwgNjc5NjUsIAorICAgIDY3OTY5LCA2Nzk3MywgNjc5NzcsIDY3OTgxLCA2Nzk4NSwgNjc5ODksIDY3OTkzLCA2Nzk5NywgNjgwMDEsIDY4MDA1LCAKKyAgICA2ODAwOSwgNjgwMTMsIDY4MDE3LCA2ODAyMSwgNjgwMjUsIDY4MDI5LCA2ODAzMywgNjgwMzcsIDY4MDQxLCA2ODA0NSwgCisgICAgNjgwNDksIDY4MDUzLCA2ODA1NywgNjgwNjEsIDY4MDY1LCA2ODA2OSwgNjgwNzMsIDY4MDc3LCA2ODA4MSwgNjgwODUsIAorICAgIDY4MDg5LCA2ODA5MywgNjgwOTcsIDY4MTAxLCA2ODEwNSwgNjgxMDksIDY4MTEzLCA2ODExNywgNjgxMjEsIDY4MTI1LCAKKyAgICA2ODEyOSwgNjgxMzMsIDY4MTM3LCA2ODE0MSwgNjgxNDUsIDY4MTQ5LCA2ODE1MywgNjgxNTcsIDY4MTYxLCA2ODE2NSwgCisgICAgNjgxNjksIDY4MTczLCA2ODE3NywgNjgxODEsIDY4MTg1LCA2ODE4OSwgNjgxOTMsIDY4MTk3LCA2ODIwMSwgNjgyMDUsIAorICAgIDY4MjA5LCA2ODIxMywgNjgyMTcsIDY4MjIxLCA2ODIyNSwgNjgyMjksIDY4MjMzLCA2ODIzNywgNjgyNDEsIDY4MjQ1LCAKKyAgICA2ODI0OSwgNjgyNTMsIDY4MjU3LCA2ODI2MSwgNjgyNjUsIDY4MjY5LCA2ODI3MywgNjgyNzcsIDY4MjgxLCA2ODI4NSwgCisgICAgNjgyODksIDY4MjkzLCA2ODI5NywgNjgzMDEsIDY4MzA1LCA2ODMwOSwgNjgzMTMsIDY4MzE3LCA2ODMyMSwgNjgzMjUsIAorICAgIDY4MzI5LCA2ODMzMywgNjgzMzcsIDY4MzQxLCA2ODM0NSwgNjgzNDksIDY4MzUzLCA2ODM1NywgNjgzNjEsIDY4MzY1LCAKKyAgICA2ODM2OSwgNjgzNzMsIDY4Mzc3LCA2ODM4MSwgNjgzODUsIDY4Mzg5LCA2ODM5MywgNjgzOTcsIDY4NDAxLCA2ODQwNSwgCisgICAgNjg0MDksIDY4NDEzLCA2ODQxNywgNjg0MjEsIDY4NDI1LCA2ODQyOSwgNjg0MzMsIDY4NDM3LCA2ODQ0MSwgNjg0NDUsIAorICAgIDY4NDQ5LCA2ODQ1MywgNjg0NTcsIDY4NDYxLCA2ODQ2NSwgNjg0NjksIDY4NDczLCA2ODQ3NywgNjg0ODEsIDY4NDg1LCAKKyAgICA2ODQ4OSwgNjg0OTMsIDY4NDk3LCA2ODUwMSwgNjg1MDUsIDY4NTA5LCA2ODUxMywgNjg1MTcsIDY4NTIxLCA2ODUyNSwgCisgICAgNjg1MjksIDY4NTMzLCA2ODUzNywgNjg1NDEsIDY4NTQ1LCA2ODU0OSwgNjg1NTMsIDY4NTU3LCA2ODU2MSwgNjg1NjUsIAorICAgIDY4NTY5LCA2ODU3MywgNjg1NzcsIDY4NTgxLCA2ODU4NSwgNjg1ODksIDY4NTkzLCA2ODU5NywgNjg2MDEsIDY4NjA1LCAKKyAgICA2ODYwOSwgNjg2MTMsIDY4NjE3LCA2ODYyMSwgNjg2MjUsIDY4NjI5LCA2ODYzMywgNjg2MzcsIDY4NjQxLCA2ODY0NSwgCisgICAgNjg2NDksIDY4NjUzLCA2ODY1NywgNjg2NjEsIDY4NjY1LCA2ODY2OSwgNjg2NzMsIDY4Njc3LCA2ODY4MSwgNjg2ODUsIAorICAgIDY4Njg5LCA2ODY5MywgNjg2OTcsIDY4NzAxLCA2ODcwNSwgNjg3MDksIDY4NzEzLCA2ODcxNywgNjg3MjEsIDY4NzI1LCAKKyAgICA2ODcyOSwgNjg3MzMsIDY4NzM3LCA2ODc0MSwgNjg3NDUsIDAsIDAsIDAsIDY4NzQ5LCA2ODc1MywgNjg3NTcsIDY4NzYxLCAKKyAgICA2ODc2NSwgNjg3NjksIDY4NzczLCA2ODc3NywgNjg3ODEsIDY4Nzg1LCA2ODc4OSwgNjg3OTMsIDY4Nzk3LCA2ODgwMSwgCisgICAgNjg4MDUsIDY4ODA5LCA2ODgxMywgNjg4MTcsIDY4ODIxLCA2ODgyNSwgNjg4MjksIDY4ODMzLCA2ODgzNywgNjg4NDEsIAorICAgIDY4ODQ1LCA2ODg0OSwgNjg4NTMsIDY4ODU3LCA2ODg2MSwgNjg4NjUsIDY4ODY5LCA2ODg3MywgNjg4NzcsIDY4ODgxLCAKKyAgICA2ODg4NSwgNjg4ODksIDY4ODkzLCA2ODg5NywgNjg5MDEsIDY4OTA1LCA2ODkwOSwgNjg5MTMsIDY4OTE3LCA2ODkyMSwgCisgICAgNjg5MjUsIDY4OTI5LCA2ODkzMywgNjg5MzcsIDY4OTQxLCA2ODk0NSwgNjg5NDksIDY4OTUzLCA2ODk1NywgNjg5NjEsIAorICAgIDY4OTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2ODk2OSwgNjg5NzQsIDY4OTc4LCA2ODk4MywgNjg5ODgsIAorICAgIDY4OTkzLCA2ODk5OCwgNjkwMDMsIDY5MDA3LCA2OTAxMiwgNjkwMTcsIDY5MDIyLCA2OTAyNywgNjkwMzIsIDY5MDM3LCAKKyAgICA2OTA0MiwgNjkwNDYsIDY5MDUwLCA2OTA1NSwgNjkwNTksIDY5MDY0LCA2OTA2OSwgNjkwNzQsIDY5MDc4LCA2OTA4MywgCisgICAgNjkwODgsIDY5MDkzLCA2OTA5OCwgNjkxMDMsIDY5MTA3LCA2OTExMiwgNjkxMTYsIDY5MTIxLCA2OTEyNSwgNjkxMzAsIAorICAgIDY5MTM0LCA2OTEzOCwgNjkxNDIsIDY5MTQ3LCA2OTE1MiwgNjkxNTcsIDY5MTY1LCA2OTE3MywgNjkxODEsIDY5MTg5LCAKKyAgICA2OTE5NiwgNjkyMDQsIDY5MjEwLCA2OTIxOCwgNjkyMjIsIDY5MjI2LCA2OTIzMCwgNjkyMzQsIDY5MjM4LCA2OTI0MiwgCisgICAgNjkyNDYsIDY5MjUwLCA2OTI1NCwgNjkyNTgsIDY5MjYyLCA2OTI2NiwgNjkyNzAsIDY5Mjc0LCA2OTI3OCwgNjkyODIsIAorICAgIDY5Mjg2LCA2OTI5MCwgNjkyOTQsIDY5Mjk4LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMTgsIDY5MzIyLCAKKyAgICA2OTMyNiwgNjkzMzAsIDY5MzM0LCA2OTMzOCwgNjkzNDIsIDY5MzQ2LCA2OTM1MCwgNjkzNTQsIDY5MzU4LCA2OTM2MiwgCisgICAgNjkzNjUsIDY5MzY5LCA2OTM3MywgNjkzNzcsIDY5MzgxLCA2OTM4NSwgNjkzODksIDY5MzkzLCA2OTM5NywgNjk0MDEsIAorICAgIDY5NDA1LCA2OTQwOSwgNjk0MTMsIDY5NDE3LCA2OTQyMSwgNjk0MjUsIDY5NDI5LCA2OTQzMywgNjk0MzcsIDY5NDQxLCAKKyAgICA2OTQ0NSwgNjk0NDksIDY5NDUzLCA2OTQ1NywgNjk0NjEsIDY5NDY1LCA2OTQ2OSwgNjk0NzMsIDY5NDc3LCA2OTQ4MSwgCisgICAgNjk0ODUsIDY5NDg5LCA2OTQ5MywgNjk0OTcsIDY5NTAxLCA2OTUwNSwgNjk1MDksIDY5NTEyLCA2OTUxNiwgNjk1MjAsIAorICAgIDY5NTIzLCA2OTUyNywgNjk1MzEsIDY5NTM1LCA2OTUzOCwgNjk1NDIsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIDY5NTU4LCAKKyAgICA2OTU2MiwgNjk1NjYsIDY5NTcwLCA2OTU3NCwgNjk1NzgsIDY5NTgyLCA2OTU4NiwgNjk1OTAsIDY5NTk0LCA2OTU5NywgCisgICAgNjk2MDEsIDY5NjA1LCA2OTYwOCwgNjk2MTIsIDY5NjE2LCA2OTYyMCwgNjk2MjQsIDY5NjI4LCA2OTYzMiwgNjk2MzUsIAorICAgIDY5NjM4LCA2OTY0MiwgNjk2NDYsIDY5NjUwLCA2OTY1MywgNjk2NTYsIDY5NjYwLCA2OTY2NCwgNjk2NjgsIDY5NjcyLCAKKyAgICA2OTY3NiwgNjk2ODAsIDY5Njg0LCA2OTY4OCwgNjk2OTIsIDY5Njk2LCA2OTcwMCwgNjk3MDQsIDY5NzA4LCA2OTcxMiwgCisgICAgNjk3MTYsIDY5NzIwLCA2OTcyNCwgNjk3MjgsIDY5NzMyLCA2OTczNiwgNjk3NDAsIDY5NzQ0LCA2OTc0OCwgNjk3NTIsIAorICAgIDY5NzU2LCA2OTc2MCwgNjk3NjQsIDY5NzY4LCA2OTc3MiwgNjk3NzYsIDY5NzgwLCA2OTc4NCwgNjk3ODgsIDY5NzkyLCAKKyAgICA2OTc5NiwgNjk4MDAsIDY5ODA0LCA2OTgwNywgNjk4MTEsIDY5ODE1LCA2OTgxOSwgNjk4MjMsIDY5ODI3LCA2OTgzMSwgCisgICAgNjk4MzUsIDY5ODM5LCA2OTg0MywgNjk4NDcsIDY5ODUxLCA2OTg1NSwgNjk4NTksIDY5ODYzLCA2OTg2NywgNjk4NzEsIAorICAgIDY5ODc1LCA2OTg3OSwgNjk4ODMsIDY5ODg3LCA2OTg5MSwgNjk4OTUsIDY5ODk5LCA2OTkwMywgNjk5MDcsIDY5OTExLCAKKyAgICA2OTkxNSwgNjk5MTksIDY5OTIzLCA2OTkyNywgNjk5MzEsIDY5OTM1LCA2OTkzOSwgNjk5NDMsIDY5OTQ3LCA2OTk1MSwgCisgICAgNjk5NTQsIDY5OTU4LCA2OTk2MiwgNjk5NjYsIDY5OTcwLCA2OTk3NCwgNjk5NzgsIDY5OTgyLCA2OTk4NiwgNjk5OTAsIAorICAgIDY5OTk0LCA2OTk5OCwgNzAwMDIsIDcwMDA2LCA3MDAxMCwgNzAwMTQsIDcwMDE4LCA3MDAyMSwgNzAwMjUsIDcwMDI5LCAKKyAgICA3MDAzMywgNzAwMzcsIDcwMDQxLCA3MDA0NSwgNzAwNDksIDcwMDUzLCA3MDA1NywgNzAwNjEsIDcwMDY1LCA3MDA2OSwgCisgICAgNzAwNzMsIDcwMDc3LCA3MDA4MSwgNzAwODUsIDcwMDg5LCA3MDA5MywgNzAwOTcsIDcwMTAxLCA3MDEwNSwgNzAxMDgsIAorICAgIDcwMTEyLCA3MDExNiwgNzAxMjAsIDcwMTI0LCA3MDEyOCwgNzAxMzIsIDcwMTM2LCA3MDE0MCwgNzAxNDQsIDcwMTQ4LCAKKyAgICA3MDE1MiwgNzAxNTYsIDcwMTYwLCA3MDE2NCwgNzAxNjgsIDcwMTcyLCA3MDE3NiwgNzAxODAsIDcwMTg0LCA3MDE4OCwgCisgICAgNzAxOTIsIDcwMTk2LCA3MDIwMCwgNzAyMDQsIDcwMjA4LCA3MDIxMiwgNzAyMTYsIDcwMjIwLCA3MDIyNCwgNzAyMjgsIAorICAgIDcwMjMyLCA3MDIzNiwgNzAyNDAsIDcwMjQ0LCA3MDI0OCwgNzAyNTIsIDcwMjU2LCA3MDI2MCwgNzAyNjQsIDcwMjY4LCAKKyAgICA3MDI3MiwgNzAyNzYsIDcwMjgwLCA3MDI4MywgNzAyODgsIDcwMjkyLCA3MDI5OCwgNzAzMDMsIDcwMzA5LCA3MDMxMywgCisgICAgNzAzMTcsIDcwMzIxLCA3MDMyNSwgNzAzMjksIDcwMzMzLCA3MDMzNywgNzAzNDEsIDcwMzQ1LCA3MDM0OSwgNzAzNTMsIAorICAgIDcwMzU3LCA3MDM2MSwgNzAzNjUsIDcwMzY4LCA3MDM3MSwgNzAzNzQsIDcwMzc3LCA3MDM4MCwgNzAzODMsIDcwMzg2LCAKKyAgICA3MDM4OSwgNzAzOTIsIDcwMzk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MDQwMywgNzA0MDgsIDcwNDEzLCA3MDQxOCwgNzA0MjMsIDcwNDMwLCA3MDQzNywgNzA0NDIsIDcwNDQ3LCAKKyAgICA3MDQ1MiwgNzA0NTcsIDcwNDY0LCA3MDQ3MSwgNzA0NzgsIDcwNDg1LCA3MDQ5MiwgNzA0OTksIDcwNTA5LCA3MDUxOSwgCisgICAgNzA1MjYsIDcwNTMzLCA3MDU0MCwgNzA1NDcsIDcwNTUzLCA3MDU1OSwgNzA1NjgsIDcwNTc3LCA3MDU4NCwgNzA1OTEsIAorICAgIDcwNjAyLCA3MDYxMywgNzA2MTgsIDcwNjIzLCA3MDYzMCwgNzA2MzcsIDcwNjQ0LCA3MDY1MSwgNzA2NTgsIDcwNjY1LCAKKyAgICA3MDY3MiwgNzA2NzksIDcwNjg1LCA3MDY5MSwgNzA2OTcsIDcwNzAzLCA3MDcxMCwgNzA3MTcsIDcwNzIyLCA3MDcyNiwgCisgICAgNzA3MzMsIDcwNzQwLCA3MDc0NywgNzA3NTEsIDcwNzU4LCA3MDc2MiwgNzA3NjcsIDcwNzcxLCA3MDc3NywgNzA3ODIsIAorICAgIDcwNzg4LCA3MDc5MywgNzA3OTcsIDcwODAxLCA3MDgwNCwgNzA4MDcsIDcwODEyLCA3MDgxNywgNzA4MjIsIDcwODI3LCAKKyAgICA3MDgzMiwgNzA4MzcsIDcwODQyLCA3MDg0NywgNzA4NTIsIDcwODU3LCA3MDg2NiwgNzA4NzUsIDcwODgwLCA3MDg4NSwgCisgICAgNzA4OTAsIDcwODk1LCA3MDkwMCwgNzA5MDUsIDcwOTEwLCA3MDkxNSwgNzA5MjAsIDcwOTI1LCA3MDkzMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzA5MzUsIDcwOTQxLCA3MDk0NCwgNzA5NDcsIDcwOTUwLCA3MDk1NCwgNzA5NTgsIDcwOTYyLCAKKyAgICA3MDk2NiwgNzA5NjksIDcwOTczLCA3MDk3NiwgNzA5ODAsIDcwOTgzLCA3MDk4NywgNzA5OTEsIDcwOTk1LCA3MDk5OSwgCisgICAgNzEwMDMsIDcxMDA3LCA3MTAxMSwgNzEwMTQsIDcxMDE4LCA3MTAyMiwgNzEwMjYsIDcxMDMwLCA3MTAzNCwgNzEwMzgsIAorICAgIDcxMDQyLCA3MTA0NiwgNzEwNTAsIDcxMDU0LCA3MTA1OCwgNzEwNjIsIDcxMDY2LCA3MTA3MCwgNzEwNzMsIDcxMDc3LCAKKyAgICA3MTA4MSwgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTcsIDcxMTAxLCA3MTEwNSwgNzExMDksIDcxMTEzLCA3MTExNywgCisgICAgNzExMjEsIDcxMTI1LCA3MTEyOSwgNzExMzMsIDcxMTM3LCA3MTE0MSwgNzExNDUsIDcxMTQ5LCA3MTE1MywgNzExNTcsIAorICAgIDcxMTYxLCA3MTE2NSwgNzExNjksIDcxMTcyLCA3MTE3NiwgNzExODAsIDcxMTg0LCA3MTE4OCwgNzExOTIsIDcxMTk2LCAKKyAgICA3MTIwMCwgNzEyMDMsIDcxMjA3LCA3MTIxMSwgNzEyMTUsIDcxMjE5LCA3MTIyMywgNzEyMjcsIDcxMjMxLCA3MTIzNSwgCisgICAgNzEyMzksIDcxMjQzLCA3MTI0NywgNzEyNTEsIDcxMjU2LCA3MTI2MSwgNzEyNjQsIDcxMjY5LCA3MTI3MiwgNzEyNzUsIAorICAgIDcxMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTI4MiwgNzEyOTEsIDcxMzAwLCA3MTMwOSwgNzEzMTgsIDcxMzI3LCAKKyAgICA3MTMzNiwgNzEzNDUsIDcxMzU0LCA3MTM2MiwgNzEzNjksIDcxMzc3LCA3MTM4NCwgNzEzOTIsIDcxNDAyLCA3MTQxMSwgCisgICAgNzE0MjEsIDcxNDMwLCA3MTQ0MCwgNzE0NDgsIDcxNDU1LCA3MTQ2MywgNzE0NzAsIDcxNDc4LCA3MTQ4MywgNzE0ODgsIAorICAgIDcxNDkzLCA3MTUwMiwgNzE1MDgsIDcxNTE0LCA3MTUyMSwgNzE1MzAsIDcxNTM4LCA3MTU0NiwgNzE1NTQsIDcxNTYxLCAKKyAgICA3MTU2OCwgNzE1NzUsIDcxNTgyLCA3MTU4NywgNzE1OTIsIDcxNTk3LCA3MTYwMiwgNzE2MDcsIDcxNjEyLCA3MTYxNywgCisgICAgNzE2MjIsIDcxNjMwLCA3MTYzOCwgNzE2NDQsIDcxNjUwLCA3MTY1NSwgNzE2NjAsIDcxNjY1LCA3MTY3MCwgNzE2NzUsIAorICAgIDcxNjgwLCA3MTY4NSwgNzE2OTAsIDcxNjk4LCA3MTcwNiwgNzE3MTEsIDcxNzE2LCA3MTcyNiwgNzE3MzYsIDcxNzQzLCAKKyAgICA3MTc1MCwgNzE3NTksIDcxNzY4LCA3MTc4MCwgNzE3OTIsIDcxNzk4LCA3MTgwNCwgNzE4MTIsIDcxODIwLCA3MTgzMCwgCisgICAgNzE4NDAsIDcxODQ3LCA3MTg1NCwgNzE4NTksIDcxODY0LCA3MTg3NiwgNzE4ODgsIDcxODk2LCA3MTkwNCwgNzE5MTQsIAorICAgIDcxOTI0LCA3MTkzNiwgNzE5NDgsIDcxOTU3LCA3MTk2NiwgNzE5NzMsIDcxOTgwLCA3MTk4NywgNzE5OTQsIDcyMDAzLCAKKyAgICA3MjAxMiwgNzIwMTcsIDcyMDIyLCA3MjAyOSwgNzIwMzYsIDcyMDQzLCA3MjA1MCwgNzIwNjIsIDcyMDc0LCA3MjA3OSwgCisgICAgNzIwODQsIDcyMDg5LCA3MjA5NCwgNzIwOTksIDcyMTA0LCA3MjEwOSwgNzIxMTQsIDcyMTE4LCA3MjEyMywgNzIxMjgsIAorICAgIDcyMTMzLCA3MjEzOCwgNzIxNDMsIDcyMTQ5LCA3MjE1NCwgNzIxNTksIDcyMTY2LCA3MjE3MywgNzIxODAsIDcyMTg3LCAKKyAgICA3MjE5NCwgNzIyMDMsIDcyMjEyLCA3MjIxOCwgNzIyMjQsIDcyMjMwLCA3MjIzNiwgNzIyNDMsIDcyMjUwLCA3MjI1NywgCisgICAgNzIyNjQsIDcyMjcxLCA3MjI3NSwgNzIyODIsIDcyMjg3LCA3MjI5MiwgNzIyOTksIDAsIDcyMzEyLCA3MjMyMCwgNzIzMjgsIAorICAgIDcyMzM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjM0MiwgNzIzNTEsIDcyMzYwLCA3MjM2OSwgCisgICAgNzIzNzgsIDcyMzg3LCA3MjM5NiwgNzI0MDUsIDcyNDE0LCA3MjQyMywgNzI0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNDM0LCAKLSAgICA3MjQ0MSwgNzI0NDcsIDcyNDU0LCA3MjQ2MiwgNzI0NzAsIDcyNDc3LCA3MjQ4NSwgNzI0OTIsIDcyNDk4LCA3MjUwNCwgCi0gICAgNzI1MTEsIDcyNTE3LCA3MjUyMywgNzI1MjksIDcyNTM2LCA3MjU0MywgNzI1NTAsIDcyNTU3LCA3MjU2NCwgNzI1NzEsIAotICAgIDcyNTc4LCA3MjU4NSwgNzI1OTIsIDcyNTk5LCA3MjYwNiwgNzI2MTMsIDcyNjIwLCA3MjYyNywgNzI2MzMsIDcyNjQwLCAKLSAgICA3MjY0NywgNzI2NTQsIDcyNjYxLCA3MjY2OCwgNzI2NzUsIDcyNjgyLCA3MjY4OSwgNzI2OTYsIDcyNzAzLCA3MjcxMCwgCi0gICAgNzI3MTcsIDcyNzI0LCA3MjczMSwgNzI3MzgsIDcyNzQ1LCA3Mjc1MiwgNzI3NTksIDcyNzY3LCA3Mjc3NSwgNzI3ODMsIAotICAgIDcyNzkxLCAwLCAwLCAwLCAwLCA3Mjc5OSwgNzI4MDgsIDcyODE3LCA3MjgyNiwgNzI4MzUsIDcyODQ0LCA3Mjg1MywgCi0gICAgNzI4NjAsIDcyODY3LCA3Mjg3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4ODEsIDcyODg1LCA3Mjg5MCwgNzI4OTUsIDcyOTAwLCAKLSAgICA3MjkwNSwgNzI5MTAsIDcyOTE1LCA3MjkyMCwgNzI5MjUsIDcyOTMwLCA3MjkzNSwgNzI5MzksIDcyOTQzLCA3Mjk0OCwgCi0gICAgNzI5NTMsIDcyOTU3LCA3Mjk2MiwgNzI5NjcsIDcyOTcyLCA3Mjk3NywgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIAotICAgIDczMDAwLCA3MzAwNSwgNzMwMTAsIDczMDE0LCA3MzAxOCwgNzMwMjIsIDczMDI2LCA3MzAzMCwgNzMwMzQsIDczMDM4LCAKLSAgICA3MzA0MywgNzMwNDgsIDczMDUzLCA3MzA1OCwgNzMwNjMsIDczMDcwLCA3MzA3NiwgNzMwODEsIDczMDg2LCA3MzA5MSwgCi0gICAgNzMwOTYsIDczMTAyLCA3MzEwOSwgNzMxMTUsIDczMTIyLCA3MzEyOCwgNzMxMzQsIDczMTM5LCA3MzE0NiwgNzMxNTIsIAotICAgIDczMTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzE2MywgNzMxNjcsIDczMTcxLCA3MzE3NCwgNzMxNzgsIDczMTgxLCAKLSAgICA3MzE4NSwgNzMxODgsIDczMTkyLCA3MzE5NiwgNzMyMDEsIDczMjA1LCA3MzIxMCwgNzMyMTMsIDczMjE3LCA3MzIyMSwgCi0gICAgNzMyMjQsIDczMjI4LCA3MzIzMiwgNzMyMzUsIDczMjM5LCA3MzI0MywgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIAotICAgIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCAKLSAgICA3MzMwMywgNzMzMDcsIDczMzEwLCA3MzMxMywgNzMzMTcsIDczMzIxLCA3MzMyNSwgNzMzMjgsIDczMzMxLCA3MzMzNCwgCi0gICAgNzMzMzgsIDczMzQyLCA3MzM0NiwgNzMzNTAsIDczMzUzLCA3MzM1NiwgNzMzNjAsIDczMzY1LCA3MzM3MCwgNzMzNzQsIAotICAgIDczMzc5LCA3MzM4MywgNzMzODgsIDczMzkzLCA3MzM5OSwgNzM0MDQsIDczNDEwLCA3MzQxNCwgNzM0MTksIDczNDI0LCAKLSAgICA3MzQyOCwgNzM0MzMsIDczNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzQ0MiwgNzM0NDUsIDczNDQ5LCAKLSAgICA3MzQ1MywgNzM0NTYsIDczNDU5LCA3MzQ2MiwgNzM0NjUsIDczNDY4LCA3MzQ3MSwgNzM0NzQsIDczNDc3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3MzQ4MCwgNzM0ODUsIDczNDg5LCA3MzQ5MywgNzM0OTcsIDczNTAxLCA3MzUwNSwgNzM1MDksIDczNTEzLCAKLSAgICA3MzUxNywgNzM1MjEsIDczNTI1LCA3MzUyOSwgNzM1MzMsIDczNTM3LCA3MzU0MSwgNzM1NDUsIDczNTUwLCA3MzU1NSwgCi0gICAgNzM1NjEsIDczNTY3LCA3MzU3NCwgNzM1NzksIDczNTg0LCA3MzU5MCwgNzM1OTQsIDczNTk5LCA3MzYwMiwgMCwgMCwgMCwgCi0gICAgMCwgNzM2MDUsIDczNjEyLCA3MzYxOCwgNzM2MjQsIDczNjMwLCA3MzYzNiwgNzM2NDIsIDczNjQ4LCA3MzY1NCwgNzM2NjAsIAotICAgIDczNjY2LCA3MzY3MiwgNzM2NzksIDczNjg2LCA3MzY5MywgNzM2OTksIDczNzA2LCA3MzcxMywgNzM3MjAsIDczNzI3LCAKLSAgICA3MzczNCwgNzM3NDAsIDczNzQ2LCA3Mzc1MywgNzM3NTksIDczNzY2LCA3Mzc3MywgNzM3NzksIDczNzg1LCA3Mzc5MiwgCi0gICAgNzM3OTksIDczODA2LCA3MzgxMiwgNzM4MTksIDczODI2LCA3MzgzMiwgNzM4MzksIDczODQ1LCA3Mzg1MiwgNzM4NTksIAotICAgIDczODY1LCA3Mzg3MSwgNzM4NzgsIDczODg0LCA3Mzg5MSwgNzM4OTgsIDczOTA3LCA3MzkxNCwgNzM5MjEsIDczOTI1LCAKLSAgICA3MzkzMCwgNzM5MzUsIDczOTQwLCA3Mzk0NSwgNzM5NDksIDczOTUzLCA3Mzk1OCwgNzM5NjIsIDczOTY3LCA3Mzk3MiwgCi0gICAgNzM5NzcsIDczOTgxLCA3Mzk4NSwgNzM5OTAsIDczOTk0LCA3Mzk5OSwgNzQwMDMsIDc0MDA4LCA3NDAxMywgNzQwMTgsIAotICAgIDc0MDIzLCA3NDAyNywgNzQwMzIsIDc0MDM3LCA3NDA0MiwgNzQwNDgsIDc0MDUzLCA3NDA1OSwgNzQwNjUsIDc0MDcxLCAKLSAgICA3NDA3NywgNzQwODMsIDc0MDg4LCA3NDA5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQwOTgsIAotICAgIDc0MTAzLCA3NDEwNywgNzQxMTEsIDc0MTE1LCA3NDExOSwgNzQxMjMsIDc0MTI3LCA3NDEzMSwgNzQxMzUsIDc0MTM5LCAKLSAgICA3NDE0MywgNzQxNDcsIDc0MTUxLCA3NDE1NSwgNzQxNTksIDc0MTYzLCA3NDE2NywgNzQxNzEsIDc0MTc1LCA3NDE3OSwgCi0gICAgNzQxODMsIDc0MTg3LCA3NDE5MSwgNzQxOTUsIDc0MTk5LCA3NDIwMywgNzQyMDcsIDc0MjExLCA3NDIxNSwgMCwgMCwgMCwgCi0gICAgNzQyMTksIDc0MjIzLCA3NDIyNywgNzQyMzEsIDc0MjM1LCA3NDIzOCwgNzQyNDQsIDc0MjQ3LCA3NDI1MSwgNzQyNTQsIAotICAgIDc0MjYwLCA3NDI2NiwgNzQyNzQsIDc0Mjc3LCA3NDI4MSwgNzQyODQsIDc0Mjg3LCA3NDI5MywgNzQyOTksIDc0MzAzLCAKLSAgICA3NDMwOSwgNzQzMTMsIDc0MzE3LCA3NDMyMywgNzQzMjcsIDc0MzMzLCA3NDMzOSwgNzQzNDMsIDc0MzQ3LCA3NDM1MywgCi0gICAgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzMsIDc0Mzc5LCA3NDM4MywgNzQzODksIDc0MzkyLCA3NDM5NSwgNzQ0MDEsIAotICAgIDc0NDA1LCA3NDQxMSwgNzQ0MTQsIDc0NDE3LCA3NDQyMCwgNzQ0MjYsIDc0NDMwLCA3NDQzNCwgNzQ0NDAsIDc0NDQ2LCAKLSAgICA3NDQ0OSwgNzQ0NTIsIDc0NDU4LCA3NDQ2MywgNzQ0NjgsIDc0NDczLCA3NDQ4MCwgNzQ0ODUsIDc0NDkyLCA3NDQ5NywgCi0gICAgNzQ1MDQsIDc0NTA5LCA3NDUxNCwgNzQ1MTksIDc0NTI0LCA3NDUyNywgNzQ1MzEsIDc0NTM1LCA3NDU0MCwgNzQ1NDUsIAotICAgIDc0NTUwLCA3NDU1NSwgNzQ1NjAsIDc0NTY1LCA3NDU3MCwgNzQ1NzUsIDc0NTgyLCA3NDU4NywgMCwgNzQ1OTQsIDc0NTk3LCAKLSAgICA3NDYwMSwgNzQ2MDQsIDc0NjA3LCA3NDYxMCwgNzQ2MTMsIDc0NjE2LCA3NDYxOSwgNzQ2MjIsIDc0NjI1LCAwLCAwLCAwLCAKLSAgICAwLCA3NDYyOCwgNzQ2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjQwLCA3NDY0MywgNzQ2NDYsIDc0NjQ5LCA3NDY1MiwgCi0gICAgNzQ2NTYsIDc0NjU5LCA3NDY2MiwgNzQ2NjYsIDc0NjcwLCA3NDY3NCwgNzQ2NzgsIDc0NjgyLCA3NDY4NiwgNzQ2OTAsIAotICAgIDc0Njk0LCA3NDY5OCwgNzQ3MDIsIDc0NzA2LCA3NDcxMCwgNzQ3MTQsIDc0NzE4LCA3NDcyMiwgNzQ3MjYsIDc0NzMwLCAKLSAgICA3NDczMywgNzQ3MzcsIDc0NzQwLCA3NDc0NCwgNzQ3NDgsIDc0NzUyLCA3NDc1NiwgNzQ3NjAsIDc0NzYzLCA3NDc2NywgCi0gICAgNzQ3NzAsIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OCwgNzQ3OTEsIDc0Nzk2LCA3NDgwMCwgNzQ4MDUsIAotICAgIDc0ODEwLCA3NDgxNCwgNzQ4MTksIDc0ODIzLCA3NDgyOCwgNzQ4MzMsIDc0ODM4LCA3NDg0MiwgNzQ4NDYsIDc0ODUxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDg1NiwgNzQ4NjEsIDc0ODY2LCA3NDg3MSwgNzQ4NzcsIDc0ODgyLCA3NDg4NywgCi0gICAgNzQ4OTIsIDc0ODk3LCA3NDkwMiwgNzQ5MDYsIDc0OTEwLCA3NDkxNSwgNzQ5MjAsIDAsIDAsIDc0OTI2LCA3NDkzMCwgCi0gICAgNzQ5MzMsIDc0OTM2LCA3NDkzOSwgNzQ5NDIsIDc0OTQ1LCA3NDk0OCwgNzQ5NTEsIDc0OTU0LCAwLCAwLCA3NDk1NywgCi0gICAgNzQ5NjIsIDc0OTY3LCA3NDk3MywgNzQ5ODAsIDc0OTg2LCA3NDk5MiwgNzQ5OTgsIDc1MDA0LCA3NTAxMCwgNzUwMTYsIAotICAgIDc1MDIyLCA3NTAyOCwgNzUwMzQsIDc1MDQwLCA3NTA0NiwgNzUwNTEsIDc1MDU2LCA3NTA2MSwgNzUwNjcsIDc1MDczLCAKLSAgICA3NTA4MCwgNzUwODYsIDc1MDkyLCA3NTA5NywgNzUxMDQsIDc1MTExLCA3NTExOCwgNzUxMjQsIDc1MTI5LCA3NTEzNCwgCi0gICAgNzUxMzksIDAsIDAsIDAsIDAsIDc1MTQ3LCA3NTE1MywgNzUxNTksIDc1MTY1LCA3NTE3MSwgNzUxNzcsIDc1MTgzLCAKLSAgICA3NTE4OSwgNzUxOTUsIDc1MjAxLCA3NTIwNywgNzUyMTMsIDc1MjE5LCA3NTIyNSwgNzUyMzEsIDc1MjM3LCA3NTI0MywgCi0gICAgNzUyNDksIDc1MjU1LCA3NTI2MSwgNzUyNjcsIDc1MjcyLCA3NTI3NywgNzUyODMsIDc1Mjg5LCA3NTI5NSwgNzUzMDEsIAotICAgIDc1MzA3LCA3NTMxMywgNzUzMTksIDc1MzI1LCA3NTMzMSwgNzUzMzcsIDc1MzQzLCA3NTM0OSwgNzUzNTUsIDc1MzYxLCAKLSAgICA3NTM2NywgNzUzNzMsIDc1Mzc5LCA3NTM4NSwgNzUzOTEsIDc1Mzk3LCA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgCi0gICAgNzU0MjYsIDc1NDMxLCA3NTQzNywgNzU0NDIsIDc1NDQ2LCA3NTQ1MSwgNzU0NTUsIDc1NDU5LCA3NTQ2MywgNzU0NjksIAotICAgIDc1NDc0LCA3NTQ3OSwgNzU0ODQsIDc1NDg5LCA3NTQ5NCwgNzU0OTksIDc1NTA0LCA3NTUxMSwgNzU1MTgsIDc1NTI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjQzOSwgCisgICAgNzI0NDYsIDcyNDUyLCA3MjQ1OSwgNzI0NjcsIDcyNDc1LCA3MjQ4MiwgNzI0OTAsIDcyNDk3LCA3MjUwMywgNzI1MDksIAorICAgIDcyNTE2LCA3MjUyMiwgNzI1MjgsIDcyNTM0LCA3MjU0MSwgNzI1NDgsIDcyNTU1LCA3MjU2MiwgNzI1NjksIDcyNTc2LCAKKyAgICA3MjU4MywgNzI1OTAsIDcyNTk3LCA3MjYwNCwgNzI2MTEsIDcyNjE4LCA3MjYyNSwgNzI2MzIsIDcyNjM4LCA3MjY0NSwgCisgICAgNzI2NTIsIDcyNjU5LCA3MjY2NiwgNzI2NzMsIDcyNjgwLCA3MjY4NywgNzI2OTQsIDcyNzAxLCA3MjcwOCwgNzI3MTUsIAorICAgIDcyNzIyLCA3MjcyOSwgNzI3MzYsIDcyNzQzLCA3Mjc1MCwgNzI3NTcsIDcyNzY0LCA3Mjc3MiwgNzI3ODAsIDcyNzg4LCAKKyAgICA3Mjc5NiwgMCwgMCwgMCwgMCwgNzI4MDQsIDcyODEzLCA3MjgyMiwgNzI4MzEsIDcyODQwLCA3Mjg0OSwgNzI4NTgsIAorICAgIDcyODY1LCA3Mjg3MiwgNzI4NzksIDAsIDAsIDAsIDAsIDAsIDAsIDcyODg2LCA3Mjg5MCwgNzI4OTUsIDcyOTAwLCA3MjkwNSwgCisgICAgNzI5MTAsIDcyOTE1LCA3MjkyMCwgNzI5MjUsIDcyOTMwLCA3MjkzNSwgNzI5NDAsIDcyOTQ0LCA3Mjk0OCwgNzI5NTMsIAorICAgIDcyOTU4LCA3Mjk2MiwgNzI5NjcsIDcyOTcyLCA3Mjk3NywgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTcsIDczMDAxLCAKKyAgICA3MzAwNSwgNzMwMTAsIDczMDE1LCA3MzAxOSwgNzMwMjMsIDczMDI3LCA3MzAzMSwgNzMwMzUsIDczMDM5LCA3MzA0MywgCisgICAgNzMwNDgsIDczMDUzLCA3MzA1OCwgNzMwNjMsIDczMDY4LCA3MzA3NSwgNzMwODEsIDczMDg2LCA3MzA5MSwgNzMwOTYsIAorICAgIDczMTAxLCA3MzEwNywgNzMxMTQsIDczMTIwLCA3MzEyNywgNzMxMzMsIDczMTM5LCA3MzE0NCwgNzMxNTEsIDczMTU3LCAKKyAgICA3MzE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzMxNjgsIDczMTcyLCA3MzE3NiwgNzMxNzksIDczMTgzLCA3MzE4NiwgCisgICAgNzMxOTAsIDczMTkzLCA3MzE5NywgNzMyMDEsIDczMjA2LCA3MzIxMCwgNzMyMTUsIDczMjE4LCA3MzIyMiwgNzMyMjYsIAorICAgIDczMjI5LCA3MzIzMywgNzMyMzcsIDczMjQwLCA3MzI0NCwgNzMyNDgsIDczMjUyLCA3MzI1NiwgNzMyNjAsIDczMjY0LCAKKyAgICA3MzI2OCwgNzMyNzIsIDczMjc2LCA3MzI4MCwgNzMyODQsIDczMjg4LCA3MzI5MiwgNzMyOTYsIDczMzAwLCA3MzMwNCwgCisgICAgNzMzMDgsIDczMzEyLCA3MzMxNSwgNzMzMTgsIDczMzIyLCA3MzMyNiwgNzMzMzAsIDczMzMzLCA3MzMzNiwgNzMzMzksIAorICAgIDczMzQzLCA3MzM0NywgNzMzNTEsIDczMzU1LCA3MzM1OCwgNzMzNjEsIDczMzY1LCA3MzM3MCwgNzMzNzUsIDczMzc5LCAKKyAgICA3MzM4NCwgNzMzODgsIDczMzkzLCA3MzM5OCwgNzM0MDQsIDczNDA5LCA3MzQxNSwgNzM0MTksIDczNDI0LCA3MzQyOSwgCisgICAgNzM0MzMsIDczNDM4LCA3MzQ0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM0NDcsIDczNDUwLCA3MzQ1NCwgCisgICAgNzM0NTgsIDczNDYxLCA3MzQ2NCwgNzM0NjcsIDczNDcwLCA3MzQ3MywgNzM0NzYsIDczNDc5LCA3MzQ4MiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzM0ODUsIDczNDkwLCA3MzQ5NCwgNzM0OTgsIDczNTAyLCA3MzUwNiwgNzM1MTAsIDczNTE0LCA3MzUxOCwgCisgICAgNzM1MjIsIDczNTI2LCA3MzUzMCwgNzM1MzQsIDczNTM4LCA3MzU0MiwgNzM1NDYsIDczNTUwLCA3MzU1NSwgNzM1NjAsIAorICAgIDczNTY2LCA3MzU3MiwgNzM1NzksIDczNTg0LCA3MzU4OSwgNzM1OTUsIDczNTk5LCA3MzYwNCwgNzM2MDcsIDAsIDAsIDAsIAorICAgIDAsIDczNjEwLCA3MzYxNywgNzM2MjMsIDczNjI5LCA3MzYzNSwgNzM2NDEsIDczNjQ3LCA3MzY1MywgNzM2NTksIDczNjY1LCAKKyAgICA3MzY3MSwgNzM2NzcsIDczNjg0LCA3MzY5MSwgNzM2OTgsIDczNzA0LCA3MzcxMSwgNzM3MTgsIDczNzI1LCA3MzczMiwgCisgICAgNzM3MzksIDczNzQ1LCA3Mzc1MSwgNzM3NTgsIDczNzY0LCA3Mzc3MSwgNzM3NzgsIDczNzg0LCA3Mzc5MCwgNzM3OTcsIAorICAgIDczODA0LCA3MzgxMSwgNzM4MTcsIDczODI0LCA3MzgzMSwgNzM4MzcsIDczODQ0LCA3Mzg1MCwgNzM4NTcsIDczODY0LCAKKyAgICA3Mzg3MCwgNzM4NzYsIDczODgzLCA3Mzg4OSwgNzM4OTYsIDczOTAzLCA3MzkxMiwgNzM5MTksIDczOTI2LCA3MzkzMCwgCisgICAgNzM5MzUsIDczOTQwLCA3Mzk0NSwgNzM5NTAsIDczOTU0LCA3Mzk1OCwgNzM5NjMsIDczOTY3LCA3Mzk3MiwgNzM5NzcsIAorICAgIDczOTgyLCA3Mzk4NiwgNzM5OTAsIDczOTk1LCA3Mzk5OSwgNzQwMDQsIDc0MDA4LCA3NDAxMywgNzQwMTgsIDc0MDIzLCAKKyAgICA3NDAyOCwgNzQwMzIsIDc0MDM3LCA3NDA0MiwgNzQwNDcsIDc0MDUzLCA3NDA1OCwgNzQwNjQsIDc0MDcwLCA3NDA3NiwgCisgICAgNzQwODIsIDc0MDg4LCA3NDA5MywgNzQwOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0MTAzLCAKKyAgICA3NDEwOCwgNzQxMTIsIDc0MTE2LCA3NDEyMCwgNzQxMjQsIDc0MTI4LCA3NDEzMiwgNzQxMzYsIDc0MTQwLCA3NDE0NCwgCisgICAgNzQxNDgsIDc0MTUyLCA3NDE1NiwgNzQxNjAsIDc0MTY0LCA3NDE2OCwgNzQxNzIsIDc0MTc2LCA3NDE4MCwgNzQxODQsIAorICAgIDc0MTg4LCA3NDE5MiwgNzQxOTYsIDc0MjAwLCA3NDIwNCwgNzQyMDgsIDc0MjEyLCA3NDIxNiwgNzQyMjAsIDAsIDAsIDAsIAorICAgIDc0MjI0LCA3NDIyOCwgNzQyMzIsIDc0MjM2LCA3NDI0MCwgNzQyNDMsIDc0MjQ5LCA3NDI1MiwgNzQyNTYsIDc0MjU5LCAKKyAgICA3NDI2NSwgNzQyNzEsIDc0Mjc5LCA3NDI4MiwgNzQyODYsIDc0Mjg5LCA3NDI5MiwgNzQyOTgsIDc0MzA0LCA3NDMwOCwgCisgICAgNzQzMTQsIDc0MzE4LCA3NDMyMiwgNzQzMjgsIDc0MzMyLCA3NDMzOCwgNzQzNDQsIDc0MzQ4LCA3NDM1MiwgNzQzNTgsIAorICAgIDc0MzYyLCA3NDM2OCwgNzQzNzQsIDc0Mzc4LCA3NDM4NCwgNzQzODgsIDc0Mzk0LCA3NDM5NywgNzQ0MDAsIDc0NDA2LCAKKyAgICA3NDQxMCwgNzQ0MTYsIDc0NDE5LCA3NDQyMiwgNzQ0MjUsIDc0NDMxLCA3NDQzNSwgNzQ0MzksIDc0NDQ1LCA3NDQ1MSwgCisgICAgNzQ0NTQsIDc0NDU3LCA3NDQ2MywgNzQ0NjgsIDc0NDczLCA3NDQ3OCwgNzQ0ODUsIDc0NDkwLCA3NDQ5NywgNzQ1MDIsIAorICAgIDc0NTA5LCA3NDUxNCwgNzQ1MTksIDc0NTI0LCA3NDUyOSwgNzQ1MzIsIDc0NTM2LCA3NDU0MCwgNzQ1NDUsIDc0NTUwLCAKKyAgICA3NDU1NSwgNzQ1NjAsIDc0NTY1LCA3NDU3MCwgNzQ1NzUsIDc0NTgwLCA3NDU4NywgNzQ1OTIsIDAsIDc0NTk5LCA3NDYwMiwgCisgICAgNzQ2MDYsIDc0NjA5LCA3NDYxMiwgNzQ2MTUsIDc0NjE4LCA3NDYyMSwgNzQ2MjQsIDc0NjI3LCA3NDYzMCwgMCwgMCwgMCwgCisgICAgMCwgNzQ2MzMsIDc0NjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY0NSwgNzQ2NDgsIDc0NjUxLCA3NDY1NCwgNzQ2NTcsIAorICAgIDc0NjYxLCA3NDY2NCwgNzQ2NjcsIDc0NjcxLCA3NDY3NSwgNzQ2NzksIDc0NjgzLCA3NDY4NywgNzQ2OTEsIDc0Njk1LCAKKyAgICA3NDY5OSwgNzQ3MDMsIDc0NzA3LCA3NDcxMSwgNzQ3MTUsIDc0NzE5LCA3NDcyMywgNzQ3MjcsIDc0NzMxLCA3NDczNSwgCisgICAgNzQ3MzgsIDc0NzQyLCA3NDc0NSwgNzQ3NDksIDc0NzUzLCA3NDc1NywgNzQ3NjEsIDc0NzY1LCA3NDc2OCwgNzQ3NzIsIAorICAgIDc0Nzc1LCA3NDc3OCwgNzQ3ODIsIDc0Nzg2LCA3NDc5MCwgNzQ3OTMsIDc0Nzk2LCA3NDgwMSwgNzQ4MDUsIDc0ODEwLCAKKyAgICA3NDgxNSwgNzQ4MTksIDc0ODI0LCA3NDgyOCwgNzQ4MzMsIDc0ODM4LCA3NDg0MywgNzQ4NDcsIDc0ODUxLCA3NDg1NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ4NjEsIDc0ODY2LCA3NDg3MSwgNzQ4NzYsIDc0ODgyLCA3NDg4NywgNzQ4OTIsIAorICAgIDc0ODk3LCA3NDkwMiwgNzQ5MDcsIDc0OTExLCA3NDkxNSwgNzQ5MjAsIDc0OTI1LCAwLCAwLCA3NDkzMSwgNzQ5MzUsIAorICAgIDc0OTM4LCA3NDk0MSwgNzQ5NDQsIDc0OTQ3LCA3NDk1MCwgNzQ5NTMsIDc0OTU2LCA3NDk1OSwgMCwgMCwgNzQ5NjIsIAorICAgIDc0OTY3LCA3NDk3MiwgNzQ5NzgsIDc0OTg1LCA3NDk5MSwgNzQ5OTcsIDc1MDAzLCA3NTAwOSwgNzUwMTUsIDc1MDIxLCAKKyAgICA3NTAyNywgNzUwMzMsIDc1MDM5LCA3NTA0NSwgNzUwNTEsIDc1MDU2LCA3NTA2MSwgNzUwNjYsIDc1MDcyLCA3NTA3OCwgCisgICAgNzUwODUsIDc1MDkxLCA3NTA5NywgNzUxMDIsIDc1MTA5LCA3NTExNiwgNzUxMjMsIDc1MTI5LCA3NTEzNCwgNzUxMzksIAorICAgIDc1MTQ0LCAwLCAwLCAwLCAwLCA3NTE1MiwgNzUxNTgsIDc1MTY0LCA3NTE3MCwgNzUxNzYsIDc1MTgyLCA3NTE4OCwgCisgICAgNzUxOTQsIDc1MjAwLCA3NTIwNiwgNzUyMTIsIDc1MjE4LCA3NTIyNCwgNzUyMzAsIDc1MjM2LCA3NTI0MiwgNzUyNDgsIAorICAgIDc1MjU0LCA3NTI2MCwgNzUyNjYsIDc1MjcyLCA3NTI3NywgNzUyODIsIDc1Mjg4LCA3NTI5NCwgNzUzMDAsIDc1MzA2LCAKKyAgICA3NTMxMiwgNzUzMTgsIDc1MzI0LCA3NTMzMCwgNzUzMzYsIDc1MzQyLCA3NTM0OCwgNzUzNTQsIDc1MzYwLCA3NTM2NiwgCisgICAgNzUzNzIsIDc1Mzc4LCA3NTM4NCwgNzUzOTAsIDc1Mzk2LCA3NTQwMiwgNzU0MDgsIDc1NDE0LCA3NTQyMCwgNzU0MjYsIAorICAgIDc1NDMxLCA3NTQzNiwgNzU0NDIsIDc1NDQ3LCA3NTQ1MSwgNzU0NTYsIDc1NDYwLCA3NTQ2NCwgNzU0NjgsIDc1NDc0LCAKKyAgICA3NTQ3OSwgNzU0ODQsIDc1NDg5LCA3NTQ5NCwgNzU0OTksIDc1NTA0LCA3NTUwOSwgNzU1MTYsIDc1NTIzLCA3NTUzMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzU1MzIsIDc1NTM3LCA3NTU0MiwgNzU1NDcsIDc1NTU0LCA3NTU2MSwgNzU1NjUsIDc1NTY5LCA3NTU3NCwgNzU1NzksIAotICAgIDc1NTg0LCA3NTU4OSwgNzU1OTQsIDc1NTk5LCA3NTYwNCwgNzU2MDksIDc1NjE0LCA3NTYyMCwgNzU2MjYsIDc1NjMyLCAKLSAgICA3NTYzOCwgNzU2NDQsIDc1NjQ4LCA3NTY1NCwgNzU2NTgsIDc1NjY0LCA3NTY3MSwgNzU2NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc1NjgxLCA3NTY4NSwgNzU2ODksIDc1NjkzLCA3NTY5NywgNzU3MDEsIDAsIDAsIDc1NzA1LCA3NTcwOSwgCi0gICAgNzU3MTMsIDc1NzE3LCA3NTcyMSwgNzU3MjUsIDAsIDAsIDc1NzI5LCA3NTczMywgNzU3MzcsIDc1NzQxLCA3NTc0NSwgCi0gICAgNzU3NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzUzLCA3NTc1NywgNzU3NjEsIDc1NzY1LCA3NTc2OSwgCi0gICAgNzU3NzMsIDc1Nzc3LCAwLCA3NTc4MSwgNzU3ODUsIDc1Nzg5LCA3NTc5MywgNzU3OTcsIDc1ODAxLCA3NTgwNSwgMCwgMCwgCisgICAgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTIsIDc1NTU5LCA3NTU2NiwgNzU1NzAsIDc1NTc0LCA3NTU3OSwgNzU1ODQsIAorICAgIDc1NTg5LCA3NTU5NCwgNzU1OTksIDc1NjA0LCA3NTYwOSwgNzU2MTQsIDc1NjE5LCA3NTYyNSwgNzU2MzEsIDc1NjM3LCAKKyAgICA3NTY0MywgNzU2NDksIDc1NjUzLCA3NTY1OSwgNzU2NjMsIDc1NjY5LCA3NTY3NiwgNzU2ODIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc1Njg2LCA3NTY5MCwgNzU2OTQsIDc1Njk4LCA3NTcwMiwgNzU3MDYsIDAsIDAsIDc1NzEwLCA3NTcxNCwgCisgICAgNzU3MTgsIDc1NzIyLCA3NTcyNiwgNzU3MzAsIDAsIDAsIDc1NzM0LCA3NTczOCwgNzU3NDIsIDc1NzQ2LCA3NTc1MCwgCisgICAgNzU3NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzU4LCA3NTc2MiwgNzU3NjYsIDc1NzcwLCA3NTc3NCwgCisgICAgNzU3NzgsIDc1NzgyLCAwLCA3NTc4NiwgNzU3OTAsIDc1Nzk0LCA3NTc5OCwgNzU4MDIsIDc1ODA2LCA3NTgxMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzU4MDksIDc1ODE0LCA3NTgxOSwgNzU4MjQsIDc1ODI5LCA3NTgzMywgNzU4MzcsIDc1ODQyLCA3NTg0NywgNzU4NTIsIAotICAgIDc1ODU3LCA3NTg2MiwgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODIsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIDc1OTAxLCAKLSAgICA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ4LCA3NTk1NSwgCi0gICAgNzU5NjIsIDc1OTY5LCA3NTk3NiwgNzU5ODMsIDc1OTkwLCA3NTk5NywgNzYwMDMsIDc2MDA5LCA3NjAxNSwgNzYwMjEsIAotICAgIDc2MDI3LCA3NjAzMywgNzYwMzksIDc2MDQ1LCA3NjA0OSwgNzYwNTUsIDAsIDAsIDc2MDYxLCA3NjA2NiwgNzYwNzAsIAotICAgIDc2MDc0LCA3NjA3OCwgNzYwODIsIDc2MDg2LCA3NjA5MCwgNzYwOTQsIDc2MDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NTgxNCwgNzU4MTksIDc1ODI0LCA3NTgyOSwgNzU4MzQsIDc1ODM4LCA3NTg0MiwgNzU4NDcsIDc1ODUyLCA3NTg1NywgCisgICAgNzU4NjIsIDc1ODY3LCA3NTg3MiwgNzU4NzcsIDc1ODgyLCA3NTg4NywgNzU4OTEsIDc1ODk2LCA3NTkwMSwgNzU5MDYsIAorICAgIDc1OTExLCA3NTkxNiwgNzU5MjEsIDc1OTI2LCA3NTkzMSwgNzU5MzYsIDc1OTQxLCA3NTk0NiwgNzU5NTMsIDc1OTYwLCAKKyAgICA3NTk2NywgNzU5NzQsIDc1OTgxLCA3NTk4OCwgNzU5OTUsIDc2MDAyLCA3NjAwOCwgNzYwMTQsIDc2MDIwLCA3NjAyNiwgCisgICAgNzYwMzIsIDc2MDM4LCA3NjA0NCwgNzYwNTAsIDc2MDU0LCA3NjA2MCwgMCwgMCwgNzYwNjYsIDc2MDcxLCA3NjA3NSwgCisgICAgNzYwNzksIDc2MDgzLCA3NjA4NywgNzYwOTEsIDc2MDk1LCA3NjA5OSwgNzYxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTAyLCAKLSAgICA3NjEwNiwgNzYxMTAsIDc2MTE0LCA3NjExOCwgNzYxMjIsIDc2MTI2LCA3NjEzMCwgNzYxMzQsIDc2MTM4LCA3NjE0MiwgCi0gICAgNzYxNDYsIDc2MTUwLCA3NjE1NCwgNzYxNTgsIDc2MTYyLCA3NjE2NiwgNzYxNzAsIDc2MTc0LCA3NjE3OCwgNzYxODIsIAotICAgIDc2MTg2LCA3NjE5MCwgMCwgMCwgMCwgMCwgNzYxOTQsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgCi0gICAgNzYyMTgsIDc2MjIyLCA3NjIyNiwgNzYyMzAsIDc2MjM0LCA3NjIzOCwgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIAotICAgIDc2MjU4LCA3NjI2MiwgNzYyNjYsIDc2MjcwLCA3NjI3NCwgNzYyNzgsIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCAKLSAgICA3NjI5OCwgNzYzMDIsIDc2MzA2LCA3NjMxMCwgNzYzMTQsIDc2MzE4LCA3NjMyMiwgNzYzMjYsIDc2MzMwLCA3NjMzNCwgCi0gICAgNzYzMzgsIDc2MzQyLCA3NjM0NiwgNzYzNTAsIDc2MzU0LCA3NjM1OCwgNzYzNjIsIDc2MzY2LCA3NjM3MCwgNzYzNzQsIAotICAgIDc2Mzc4LCA3NjM4MiwgNzYzODYsIDAsIDAsIDAsIDAsIDc2MzkwLCA3NjM5NCwgNzYzOTgsIDc2NDAyLCA3NjQwNiwgCi0gICAgNzY0MTAsIDc2NDE0LCA3NjQxOCwgNzY0MjIsIDc2NDI2LCA3NjQzMCwgNzY0MzQsIDc2NDM4LCA3NjQ0MiwgNzY0NDYsIAotICAgIDc2NDUwLCA3NjQ1NCwgNzY0NTgsIDc2NDYyLCA3NjQ2NiwgNzY0NzAsIDc2NDc0LCA3NjQ3OCwgNzY0ODIsIDc2NDg2LCAKLSAgICA3NjQ5MCwgNzY0OTQsIDc2NDk4LCA3NjUwMiwgNzY1MDYsIDc2NTEwLCA3NjUxNCwgNzY1MTgsIDc2NTIyLCA3NjUyNiwgCi0gICAgNzY1MzAsIDc2NTM0LCA3NjUzOCwgNzY1NDIsIDc2NTQ2LCA3NjU1MCwgNzY1NTQsIDc2NTU4LCA3NjU2MiwgNzY1NjYsIAotICAgIDc2NTcwLCA3NjU3NCwgNzY1NzgsIDc2NTgyLCA3NjU4NiwgNzY1OTAsIDc2NTk0LCA3NjU5OCwgNzY2MDIsIDc2NjA2LCAKLSAgICA3NjYxMCwgNzY2MTQsIDc2NjE4LCA3NjYyMiwgNzY2MjYsIDc2NjMwLCA3NjYzNCwgNzY2MzgsIDc2NjQyLCA3NjY0NiwgCi0gICAgNzY2NTAsIDc2NjU0LCA3NjY1OCwgNzY2NjIsIDc2NjY2LCA3NjY3MCwgNzY2NzQsIDc2Njc4LCA3NjY4MiwgNzY2ODYsIAotICAgIDc2NjkwLCA3NjY5NCwgNzY2OTgsIDc2NzAyLCA3NjcwNiwgNzY3MTAsIDc2NzE0LCA3NjcxOCwgNzY3MjIsIDc2NzI2LCAKLSAgICA3NjczMCwgNzY3MzQsIDc2NzM4LCA3Njc0MiwgNzY3NDYsIDc2NzUwLCA3Njc1NCwgNzY3NTgsIDc2NzYyLCA3Njc2NiwgCi0gICAgNzY3NzAsIDc2Nzc0LCA3Njc3OCwgNzY3ODIsIDc2Nzg2LCA3Njc5MCwgNzY3OTQsIDc2Nzk4LCA3NjgwMiwgNzY4MDYsIAotICAgIDc2ODEwLCA3NjgxNCwgNzY4MTgsIDc2ODIyLCA3NjgyNiwgNzY4MzAsIDc2ODM0LCA3NjgzOCwgNzY4NDIsIDc2ODQ2LCAKLSAgICA3Njg1MCwgNzY4NTQsIDc2ODU4LCA3Njg2MiwgNzY4NjYsIDc2ODcwLCA3Njg3NCwgNzY4NzgsIDc2ODgyLCA3Njg4NiwgCi0gICAgNzY4OTAsIDc2ODk0LCA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgNzY5MjYsIAotICAgIDc2OTMwLCA3NjkzNCwgNzY5MzgsIDc2OTQyLCA3Njk0NiwgNzY5NTAsIDc2OTU0LCA3Njk1OCwgNzY5NjIsIDc2OTY2LCAKLSAgICA3Njk3MCwgNzY5NzQsIDc2OTc4LCA3Njk4MiwgNzY5ODYsIDc2OTkwLCA3Njk5NCwgNzY5OTgsIDc3MDAyLCA3NzAwNiwgCi0gICAgNzcwMTAsIDc3MDE0LCA3NzAxOCwgNzcwMjIsIDc3MDI2LCA3NzAzMCwgNzcwMzQsIDc3MDM4LCA3NzA0MiwgNzcwNDYsIAotICAgIDc3MDUwLCA3NzA1NCwgNzcwNTgsIDc3MDYyLCA3NzA2NiwgNzcwNzAsIDc3MDc0LCA3NzA3OCwgNzcwODIsIDc3MDg2LCAKLSAgICA3NzA5MCwgNzcwOTQsIDc3MDk4LCA3NzEwMiwgNzcxMDYsIDc3MTEwLCA3NzExNCwgNzcxMTgsIDc3MTIyLCA3NzEyNiwgCi0gICAgNzcxMzAsIDc3MTM0LCA3NzEzOCwgNzcxNDIsIDc3MTQ2LCA3NzE1MCwgNzcxNTQsIDc3MTU4LCA3NzE2MiwgNzcxNjYsIAotICAgIDc3MTcwLCA3NzE3NCwgNzcxNzgsIDc3MTgyLCA3NzE4NiwgNzcxOTAsIDc3MTk0LCA3NzE5OCwgNzcyMDIsIDc3MjA2LCAKLSAgICA3NzIxMCwgNzcyMTQsIDc3MjE4LCA3NzIyMiwgNzcyMjYsIDc3MjMwLCA3NzIzNCwgNzcyMzgsIDc3MjQyLCA3NzI0NiwgCi0gICAgNzcyNTAsIDc3MjU0LCA3NzI1OCwgNzcyNjIsIDc3MjY2LCA3NzI3MCwgNzcyNzQsIDc3Mjc4LCA3NzI4MiwgNzcyODYsIAotICAgIDc3MjkwLCA3NzI5NCwgNzcyOTgsIDc3MzAyLCA3NzMwNiwgNzczMTAsIDc3MzE0LCA3NzMxOCwgNzczMjIsIDc3MzI2LCAKLSAgICA3NzMzMCwgNzczMzQsIDc3MzM4LCA3NzM0MiwgNzczNDYsIDc3MzUwLCA3NzM1NCwgNzczNTgsIDc3MzYyLCA3NzM2NiwgCi0gICAgNzczNzAsIDc3Mzc0LCA3NzM3OCwgNzczODIsIDc3Mzg2LCA3NzM5MCwgNzczOTQsIDc3Mzk4LCA3NzQwMiwgNzc0MDYsIAotICAgIDc3NDEwLCA3NzQxNCwgNzc0MTgsIDc3NDIyLCA3NzQyNiwgNzc0MzAsIDc3NDM0LCA3NzQzOCwgNzc0NDIsIDc3NDQ2LCAKLSAgICA3NzQ1MCwgNzc0NTQsIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIDc3NDcwLCA3NzQ3NCwgNzc0NzgsIDc3NDgyLCA3NzQ4NiwgCi0gICAgNzc0OTAsIDc3NDk0LCA3NzQ5OCwgNzc1MDIsIDc3NTA2LCA3NzUxMCwgNzc1MTQsIDc3NTE4LCA3NzUyMiwgNzc1MjYsIAotICAgIDc3NTMwLCA3NzUzNCwgNzc1MzgsIDc3NTQyLCA3NzU0NiwgNzc1NTAsIDc3NTU0LCA3NzU1OCwgNzc1NjIsIDc3NTY2LCAKLSAgICA3NzU3MCwgNzc1NzQsIDc3NTc4LCA3NzU4MiwgNzc1ODYsIDc3NTkwLCA3NzU5NCwgNzc1OTgsIDc3NjAyLCA3NzYwNiwgCi0gICAgNzc2MTAsIDc3NjE0LCA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMCwgNzc2MzQsIDc3NjM4LCA3NzY0MiwgNzc2NDYsIAotICAgIDc3NjUwLCA3NzY1NCwgNzc2NTgsIDc3NjYyLCA3NzY2NiwgNzc2NzAsIDc3Njc0LCA3NzY3OCwgNzc2ODIsIDc3Njg2LCAKLSAgICA3NzY5MCwgNzc2OTQsIDc3Njk4LCA3NzcwMiwgNzc3MDYsIDc3NzEwLCA3NzcxNCwgNzc3MTgsIDc3NzIyLCA3NzcyNiwgCi0gICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTQsIDc3NzU4LCA3Nzc2MiwgNzc3NjYsIAotICAgIDc3NzcwLCA3Nzc3NCwgNzc3NzgsIDc3NzgyLCA3Nzc4NiwgNzc3OTAsIDc3Nzk0LCA3Nzc5OCwgNzc4MDIsIDc3ODA2LCAKLSAgICA3NzgxMCwgNzc4MTQsIDc3ODE4LCA3NzgyMiwgNzc4MjYsIDc3ODMwLCA3NzgzNCwgNzc4MzgsIDc3ODQyLCA3Nzg0NiwgCi0gICAgNzc4NTAsIDAsIDAsIDc3ODU0LCA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCA3Nzg4MiwgCi0gICAgNzc4ODYsIDc3ODkwLCA3Nzg5NCwgNzc4OTgsIDc3OTAyLCA3NzkwNiwgNzc5MTAsIDc3OTE0LCA3NzkxOCwgNzc5MjIsIAotICAgIDc3OTI2LCA3NzkzMCwgNzc5MzQsIDc3OTM4LCA3Nzk0MiwgNzc5NDYsIDc3OTUwLCA3Nzk1NCwgNzc5NTgsIDc3OTYyLCAKLSAgICA3Nzk2NiwgNzc5NzAsIDc3OTc0LCA3Nzk3OCwgNzc5ODIsIDc3OTg2LCA3Nzk5MCwgNzc5OTQsIDc3OTk4LCA3ODAwMiwgCi0gICAgNzgwMDYsIDc4MDEwLCA3ODAxNCwgNzgwMTgsIDc4MDIyLCA3ODAyNiwgNzgwMzAsIDc4MDM0LCA3ODAzOCwgNzgwNDIsIAotICAgIDc4MDQ2LCA3ODA1MCwgNzgwNTQsIDc4MDU4LCA3ODA2MiwgNzgwNjYsIDc4MDcwLCA3ODA3NCwgNzgwNzgsIDc4MDgyLCAKLSAgICA3ODA4NiwgNzgwOTAsIDc4MDk0LCA3ODA5OCwgNzgxMDIsIDc4MTA2LCA3ODExMCwgNzgxMTQsIDc4MTE4LCA3ODEyMiwgCi0gICAgNzgxMjYsIDc4MTMwLCA3ODEzNCwgNzgxMzgsIDc4MTQyLCA3ODE0NiwgNzgxNTAsIDc4MTU0LCA3ODE1OCwgNzgxNjIsIAotICAgIDc4MTY2LCA3ODE3MCwgNzgxNzQsIDc4MTc4LCA3ODE4MiwgNzgxODYsIDc4MTkwLCA3ODE5NCwgNzgxOTgsIDc4MjAyLCAKLSAgICA3ODIwNiwgNzgyMTAsIDc4MjE0LCA3ODIxOCwgNzgyMjIsIDc4MjI2LCA3ODIzMCwgNzgyMzQsIDc4MjM4LCA3ODI0MiwgCi0gICAgNzgyNDYsIDc4MjUwLCA3ODI1NCwgNzgyNTgsIDc4MjYyLCA3ODI2NiwgNzgyNzAsIDc4Mjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjEwNywgCisgICAgNzYxMTEsIDc2MTE1LCA3NjExOSwgNzYxMjMsIDc2MTI3LCA3NjEzMSwgNzYxMzUsIDc2MTM5LCA3NjE0MywgNzYxNDcsIAorICAgIDc2MTUxLCA3NjE1NSwgNzYxNTksIDc2MTYzLCA3NjE2NywgNzYxNzEsIDc2MTc1LCA3NjE3OSwgNzYxODMsIDc2MTg3LCAKKyAgICA3NjE5MSwgNzYxOTUsIDAsIDAsIDAsIDAsIDc2MTk5LCA3NjIwMywgNzYyMDcsIDc2MjExLCA3NjIxNSwgNzYyMTksIAorICAgIDc2MjIzLCA3NjIyNywgNzYyMzEsIDc2MjM1LCA3NjIzOSwgNzYyNDMsIDc2MjQ3LCA3NjI1MSwgNzYyNTUsIDc2MjU5LCAKKyAgICA3NjI2MywgNzYyNjcsIDc2MjcxLCA3NjI3NSwgNzYyNzksIDc2MjgzLCA3NjI4NywgNzYyOTEsIDc2Mjk1LCA3NjI5OSwgCisgICAgNzYzMDMsIDc2MzA3LCA3NjMxMSwgNzYzMTUsIDc2MzE5LCA3NjMyMywgNzYzMjcsIDc2MzMxLCA3NjMzNSwgNzYzMzksIAorICAgIDc2MzQzLCA3NjM0NywgNzYzNTEsIDc2MzU1LCA3NjM1OSwgNzYzNjMsIDc2MzY3LCA3NjM3MSwgNzYzNzUsIDc2Mzc5LCAKKyAgICA3NjM4MywgNzYzODcsIDc2MzkxLCAwLCAwLCAwLCAwLCA3NjM5NSwgNzYzOTksIDc2NDAzLCA3NjQwNywgNzY0MTEsIAorICAgIDc2NDE1LCA3NjQxOSwgNzY0MjMsIDc2NDI3LCA3NjQzMSwgNzY0MzUsIDc2NDM5LCA3NjQ0MywgNzY0NDcsIDc2NDUxLCAKKyAgICA3NjQ1NSwgNzY0NTksIDc2NDYzLCA3NjQ2NywgNzY0NzEsIDc2NDc1LCA3NjQ3OSwgNzY0ODMsIDc2NDg3LCA3NjQ5MSwgCisgICAgNzY0OTUsIDc2NDk5LCA3NjUwMywgNzY1MDcsIDc2NTExLCA3NjUxNSwgNzY1MTksIDc2NTIzLCA3NjUyNywgNzY1MzEsIAorICAgIDc2NTM1LCA3NjUzOSwgNzY1NDMsIDc2NTQ3LCA3NjU1MSwgNzY1NTUsIDc2NTU5LCA3NjU2MywgNzY1NjcsIDc2NTcxLCAKKyAgICA3NjU3NSwgNzY1NzksIDc2NTgzLCA3NjU4NywgNzY1OTEsIDc2NTk1LCA3NjU5OSwgNzY2MDMsIDc2NjA3LCA3NjYxMSwgCisgICAgNzY2MTUsIDc2NjE5LCA3NjYyMywgNzY2MjcsIDc2NjMxLCA3NjYzNSwgNzY2MzksIDc2NjQzLCA3NjY0NywgNzY2NTEsIAorICAgIDc2NjU1LCA3NjY1OSwgNzY2NjMsIDc2NjY3LCA3NjY3MSwgNzY2NzUsIDc2Njc5LCA3NjY4MywgNzY2ODcsIDc2NjkxLCAKKyAgICA3NjY5NSwgNzY2OTksIDc2NzAzLCA3NjcwNywgNzY3MTEsIDc2NzE1LCA3NjcxOSwgNzY3MjMsIDc2NzI3LCA3NjczMSwgCisgICAgNzY3MzUsIDc2NzM5LCA3Njc0MywgNzY3NDcsIDc2NzUxLCA3Njc1NSwgNzY3NTksIDc2NzYzLCA3Njc2NywgNzY3NzEsIAorICAgIDc2Nzc1LCA3Njc3OSwgNzY3ODMsIDc2Nzg3LCA3Njc5MSwgNzY3OTUsIDc2Nzk5LCA3NjgwMywgNzY4MDcsIDc2ODExLCAKKyAgICA3NjgxNSwgNzY4MTksIDc2ODIzLCA3NjgyNywgNzY4MzEsIDc2ODM1LCA3NjgzOSwgNzY4NDMsIDc2ODQ3LCA3Njg1MSwgCisgICAgNzY4NTUsIDc2ODU5LCA3Njg2MywgNzY4NjcsIDc2ODcxLCA3Njg3NSwgNzY4NzksIDc2ODgzLCA3Njg4NywgNzY4OTEsIAorICAgIDc2ODk1LCA3Njg5OSwgNzY5MDMsIDc2OTA3LCA3NjkxMSwgNzY5MTUsIDc2OTE5LCA3NjkyMywgNzY5MjcsIDc2OTMxLCAKKyAgICA3NjkzNSwgNzY5MzksIDc2OTQzLCA3Njk0NywgNzY5NTEsIDc2OTU1LCA3Njk1OSwgNzY5NjMsIDc2OTY3LCA3Njk3MSwgCisgICAgNzY5NzUsIDc2OTc5LCA3Njk4MywgNzY5ODcsIDc2OTkxLCA3Njk5NSwgNzY5OTksIDc3MDAzLCA3NzAwNywgNzcwMTEsIAorICAgIDc3MDE1LCA3NzAxOSwgNzcwMjMsIDc3MDI3LCA3NzAzMSwgNzcwMzUsIDc3MDM5LCA3NzA0MywgNzcwNDcsIDc3MDUxLCAKKyAgICA3NzA1NSwgNzcwNTksIDc3MDYzLCA3NzA2NywgNzcwNzEsIDc3MDc1LCA3NzA3OSwgNzcwODMsIDc3MDg3LCA3NzA5MSwgCisgICAgNzcwOTUsIDc3MDk5LCA3NzEwMywgNzcxMDcsIDc3MTExLCA3NzExNSwgNzcxMTksIDc3MTIzLCA3NzEyNywgNzcxMzEsIAorICAgIDc3MTM1LCA3NzEzOSwgNzcxNDMsIDc3MTQ3LCA3NzE1MSwgNzcxNTUsIDc3MTU5LCA3NzE2MywgNzcxNjcsIDc3MTcxLCAKKyAgICA3NzE3NSwgNzcxNzksIDc3MTgzLCA3NzE4NywgNzcxOTEsIDc3MTk1LCA3NzE5OSwgNzcyMDMsIDc3MjA3LCA3NzIxMSwgCisgICAgNzcyMTUsIDc3MjE5LCA3NzIyMywgNzcyMjcsIDc3MjMxLCA3NzIzNSwgNzcyMzksIDc3MjQzLCA3NzI0NywgNzcyNTEsIAorICAgIDc3MjU1LCA3NzI1OSwgNzcyNjMsIDc3MjY3LCA3NzI3MSwgNzcyNzUsIDc3Mjc5LCA3NzI4MywgNzcyODcsIDc3MjkxLCAKKyAgICA3NzI5NSwgNzcyOTksIDc3MzAzLCA3NzMwNywgNzczMTEsIDc3MzE1LCA3NzMxOSwgNzczMjMsIDc3MzI3LCA3NzMzMSwgCisgICAgNzczMzUsIDc3MzM5LCA3NzM0MywgNzczNDcsIDc3MzUxLCA3NzM1NSwgNzczNTksIDc3MzYzLCA3NzM2NywgNzczNzEsIAorICAgIDc3Mzc1LCA3NzM3OSwgNzczODMsIDc3Mzg3LCA3NzM5MSwgNzczOTUsIDc3Mzk5LCA3NzQwMywgNzc0MDcsIDc3NDExLCAKKyAgICA3NzQxNSwgNzc0MTksIDc3NDIzLCA3NzQyNywgNzc0MzEsIDc3NDM1LCA3NzQzOSwgNzc0NDMsIDc3NDQ3LCA3NzQ1MSwgCisgICAgNzc0NTUsIDc3NDU5LCA3NzQ2MywgNzc0NjcsIDc3NDcxLCA3NzQ3NSwgNzc0NzksIDc3NDgzLCA3NzQ4NywgNzc0OTEsIAorICAgIDc3NDk1LCA3NzQ5OSwgNzc1MDMsIDc3NTA3LCA3NzUxMSwgNzc1MTUsIDc3NTE5LCA3NzUyMywgNzc1MjcsIDc3NTMxLCAKKyAgICA3NzUzNSwgNzc1MzksIDc3NTQzLCA3NzU0NywgNzc1NTEsIDc3NTU1LCA3NzU1OSwgNzc1NjMsIDc3NTY3LCA3NzU3MSwgCisgICAgNzc1NzUsIDc3NTc5LCA3NzU4MywgNzc1ODcsIDc3NTkxLCA3NzU5NSwgNzc1OTksIDc3NjAzLCA3NzYwNywgNzc2MTEsIAorICAgIDc3NjE1LCA3NzYxOSwgNzc2MjMsIDc3NjI3LCA3NzYzMSwgNzc2MzUsIDc3NjM5LCA3NzY0MywgNzc2NDcsIDc3NjUxLCAKKyAgICA3NzY1NSwgNzc2NTksIDc3NjYzLCA3NzY2NywgNzc2NzEsIDc3Njc1LCA3NzY3OSwgNzc2ODMsIDc3Njg3LCA3NzY5MSwgCisgICAgNzc2OTUsIDc3Njk5LCA3NzcwMywgNzc3MDcsIDc3NzExLCA3NzcxNSwgNzc3MTksIDc3NzIzLCA3NzcyNywgNzc3MzEsIAorICAgIDc3NzM1LCA3NzczOSwgNzc3NDMsIDc3NzQ3LCA3Nzc1MSwgNzc3NTUsIDc3NzU5LCA3Nzc2MywgNzc3NjcsIDc3NzcxLCAKKyAgICA3Nzc3NSwgNzc3NzksIDc3NzgzLCA3Nzc4NywgNzc3OTEsIDc3Nzk1LCA3Nzc5OSwgNzc4MDMsIDc3ODA3LCA3NzgxMSwgCisgICAgNzc4MTUsIDc3ODE5LCA3NzgyMywgNzc4MjcsIDc3ODMxLCA3NzgzNSwgNzc4MzksIDc3ODQzLCA3Nzg0NywgNzc4NTEsIAorICAgIDc3ODU1LCAwLCAwLCA3Nzg1OSwgNzc4NjMsIDc3ODY3LCA3Nzg3MSwgNzc4NzUsIDc3ODc5LCA3Nzg4MywgNzc4ODcsIAorICAgIDc3ODkxLCA3Nzg5NSwgNzc4OTksIDc3OTAzLCA3NzkwNywgNzc5MTEsIDc3OTE1LCA3NzkxOSwgNzc5MjMsIDc3OTI3LCAKKyAgICA3NzkzMSwgNzc5MzUsIDc3OTM5LCA3Nzk0MywgNzc5NDcsIDc3OTUxLCA3Nzk1NSwgNzc5NTksIDc3OTYzLCA3Nzk2NywgCisgICAgNzc5NzEsIDc3OTc1LCA3Nzk3OSwgNzc5ODMsIDc3OTg3LCA3Nzk5MSwgNzc5OTUsIDc3OTk5LCA3ODAwMywgNzgwMDcsIAorICAgIDc4MDExLCA3ODAxNSwgNzgwMTksIDc4MDIzLCA3ODAyNywgNzgwMzEsIDc4MDM1LCA3ODAzOSwgNzgwNDMsIDc4MDQ3LCAKKyAgICA3ODA1MSwgNzgwNTUsIDc4MDU5LCA3ODA2MywgNzgwNjcsIDc4MDcxLCA3ODA3NSwgNzgwNzksIDc4MDgzLCA3ODA4NywgCisgICAgNzgwOTEsIDc4MDk1LCA3ODA5OSwgNzgxMDMsIDc4MTA3LCA3ODExMSwgNzgxMTUsIDc4MTE5LCA3ODEyMywgNzgxMjcsIAorICAgIDc4MTMxLCA3ODEzNSwgNzgxMzksIDc4MTQzLCA3ODE0NywgNzgxNTEsIDc4MTU1LCA3ODE1OSwgNzgxNjMsIDc4MTY3LCAKKyAgICA3ODE3MSwgNzgxNzUsIDc4MTc5LCA3ODE4MywgNzgxODcsIDc4MTkxLCA3ODE5NSwgNzgxOTksIDc4MjAzLCA3ODIwNywgCisgICAgNzgyMTEsIDc4MjE1LCA3ODIxOSwgNzgyMjMsIDc4MjI3LCA3ODIzMSwgNzgyMzUsIDc4MjM5LCA3ODI0MywgNzgyNDcsIAorICAgIDc4MjUxLCA3ODI1NSwgNzgyNTksIDc4MjYzLCA3ODI2NywgNzgyNzEsIDc4Mjc1LCA3ODI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgyNzgsIDc4MjgzLCA3ODI4OCwgNzgyOTMsIDc4Mjk4LCA3ODMwMywgNzgzMTEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4MzE2LCA3ODMyMywgNzgzMzAsIDc4MzM3LCA3ODM0NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNzgzNTEsIDc4MzU4LCA3ODM2NSwgNzgzNzUsIDc4MzgxLCA3ODM4NywgNzgzOTMsIDc4Mzk5LCAKLSAgICA3ODQwNSwgNzg0MTEsIDc4NDE4LCA3ODQyNCwgNzg0MzAsIDc4NDM2LCA3ODQ0NSwgNzg0NTQsIDc4NDY2LCA3ODQ3OCwgCi0gICAgNzg0ODQsIDc4NDkwLCA3ODQ5NiwgNzg1MDMsIDc4NTEwLCA3ODUxNywgNzg1MjQsIDc4NTMxLCAwLCA3ODUzOCwgNzg1NDUsIAotICAgIDc4NTUyLCA3ODU2MCwgNzg1NjcsIDAsIDc4NTc0LCAwLCA3ODU4MSwgNzg1ODgsIDAsIDc4NTk1LCA3ODYwMywgMCwgCi0gICAgNzg2MTAsIDc4NjE3LCA3ODYyNCwgNzg2MzEsIDc4NjM4LCA3ODY0NSwgNzg2NTIsIDc4NjU5LCA3ODY2NiwgNzg2NzMsIAotICAgIDc4Njc4LCA3ODY4NSwgNzg2OTIsIDc4Njk4LCA3ODcwNCwgNzg3MTAsIDc4NzE2LCA3ODcyMiwgNzg3MjgsIDc4NzM0LCAKLSAgICA3ODc0MCwgNzg3NDYsIDc4NzUyLCA3ODc1OCwgNzg3NjQsIDc4NzcwLCA3ODc3NiwgNzg3ODIsIDc4Nzg4LCA3ODc5NCwgCi0gICAgNzg4MDAsIDc4ODA2LCA3ODgxMiwgNzg4MTgsIDc4ODI0LCA3ODgzMCwgNzg4MzYsIDc4ODQyLCA3ODg0OCwgNzg4NTQsIAotICAgIDc4ODYwLCA3ODg2NiwgNzg4NzIsIDc4ODc4LCA3ODg4NCwgNzg4OTAsIDc4ODk2LCA3ODkwMiwgNzg5MDgsIDc4OTE0LCAKLSAgICA3ODkyMCwgNzg5MjYsIDc4OTMyLCA3ODkzOCwgNzg5NDQsIDc4OTUwLCA3ODk1NiwgNzg5NjIsIDc4OTY4LCA3ODk3NCwgCi0gICAgNzg5ODAsIDc4OTg2LCA3ODk5MiwgNzg5OTgsIDc5MDA0LCA3OTAxMCwgNzkwMTYsIDc5MDIyLCA3OTAyOCwgNzkwMzQsIAotICAgIDc5MDQwLCA3OTA0NiwgNzkwNTIsIDc5MDU4LCA3OTA2NCwgNzkwNzAsIDc5MDc2LCA3OTA4MiwgNzkwODgsIDc5MDk0LCAKLSAgICA3OTEwMCwgNzkxMDYsIDc5MTEyLCA3OTExOCwgNzkxMjQsIDc5MTMwLCA3OTEzNiwgNzkxNDIsIDc5MTQ4LCA3OTE1NiwgCi0gICAgNzkxNjQsIDc5MTcwLCA3OTE3NiwgNzkxODIsIDc5MTg4LCA3OTE5NywgNzkyMDYsIDc5MjE0LCA3OTIyMiwgNzkyMzAsIAotICAgIDc5MjM4LCA3OTI0NiwgNzkyNTQsIDc5MjYyLCA3OTI3MCwgNzkyNzcsIDc5Mjg0LCA3OTI5NCwgNzkzMDQsIDc5MzA4LCAKLSAgICA3OTMxMiwgNzkzMTcsIDc5MzIyLCA3OTMyNywgNzkzMzIsIDc5MzQxLCA3OTM1MCwgNzkzNTYsIDc5MzYyLCA3OTM2OSwgCi0gICAgNzkzNzYsIDc5MzgzLCA3OTM4NywgNzkzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc5Mzk5LCA3OTQwNSwgNzk0MTEsIDc5NDE3LCA3OTQyMywgNzk0MjgsIDc5NDMzLCA3OTQzOSwgNzk0NDUsIAotICAgIDc5NDUxLCA3OTQ1NywgNzk0NjUsIDc5NDcxLCA3OTQ3NywgNzk0ODUsIDc5NDkzLCA3OTUwMSwgNzk1MDksIDc5NTE0LCAKLSAgICA3OTUxOSwgNzk1MjQsIDc5NTI5LCA3OTU0MiwgNzk1NTUsIDc5NTY1LCA3OTU3NSwgNzk1ODYsIDc5NTk3LCA3OTYwOCwgCi0gICAgNzk2MTksIDc5NjI5LCA3OTYzOSwgNzk2NTAsIDc5NjYxLCA3OTY3MiwgNzk2ODMsIDc5NjkzLCA3OTcwMywgNzk3MTMsIAotICAgIDc5NzI5LCA3OTc0NSwgNzk3NjEsIDc5NzY4LCA3OTc3NSwgNzk3ODIsIDc5Nzg5LCA3OTc5OSwgNzk4MDksIDc5ODE5LCAKLSAgICA3OTgzMSwgNzk4NDEsIDc5ODQ5LCA3OTg1NywgNzk4NjYsIDc5ODc0LCA3OTg4NCwgNzk4OTIsIDc5OTAwLCA3OTkwOCwgCi0gICAgNzk5MTcsIDc5OTI1LCA3OTkzNSwgNzk5NDMsIDc5OTUxLCA3OTk1OSwgNzk5NjksIDc5OTc3LCA3OTk4NCwgNzk5OTEsIAotICAgIDc5OTk4LCA4MDAwNSwgODAwMTMsIDgwMDIxLCA4MDAyOSwgODAwMzcsIDgwMDQ1LCA4MDA1NCwgODAwNjIsIDgwMDcwLCAKLSAgICA4MDA3OCwgODAwODYsIDgwMDk0LCA4MDEwMywgODAxMTEsIDgwMTE5LCA4MDEyNywgODAxMzUsIDgwMTQzLCA4MDE1MSwgCi0gICAgODAxNTksIDgwMTY3LCA4MDE3NSwgODAxODMsIDgwMTkyLCA4MDIwMCwgODAyMTAsIDgwMjE4LCA4MDIyNiwgODAyMzQsIAotICAgIDgwMjQ0LCA4MDI1MiwgODAyNjAsIDgwMjY4LCA4MDI3NiwgODAyODUsIDgwMjk0LCA4MDMwMiwgODAzMTIsIDgwMzIwLCAKLSAgICA4MDMyOCwgODAzMzYsIDgwMzQ1LCA4MDM1MywgODAzNjMsIDgwMzcxLCA4MDM3OCwgODAzODUsIDgwMzkzLCA4MDQwMCwgCi0gICAgODA0MDksIDgwNDE2LCA4MDQyNCwgODA0MzIsIDgwNDQxLCA4MDQ0OSwgODA0NTksIDgwNDY3LCA4MDQ3NSwgODA0ODMsIAotICAgIDgwNDkzLCA4MDUwMSwgODA1MDgsIDgwNTE1LCA4MDUyMywgODA1MzAsIDgwNTM5LCA4MDU0NiwgODA1NTYsIDgwNTY2LCAKLSAgICA4MDU3NywgODA1ODYsIDgwNTk1LCA4MDYwNCwgODA2MTMsIDgwNjIyLCA4MDYzMiwgODA2NDMsIDgwNjU0LCA4MDY2NCwgCi0gICAgODA2NzUsIDgwNjg3LCA4MDY5NywgODA3MDYsIDgwNzE1LCA4MDcyMywgODA3MzIsIDgwNzQyLCA4MDc1MCwgODA3NTksIAotICAgIDgwNzY4LCA4MDc3NiwgODA3ODUsIDgwNzk1LCA4MDgwMywgODA4MTIsIDgwODIxLCA4MDgyOSwgODA4MzgsIDgwODQ4LCAKLSAgICA4MDg1NiwgODA4NjYsIDgwODc0LCA4MDg4NCwgODA4OTIsIDgwOTAwLCA4MDkwOSwgODA5MTcsIDgwOTI3LCA4MDkzNSwgCi0gICAgODA5NDMsIDgwOTUzLCA4MDk2MSwgODA5NjgsIDgwOTc1LCA4MDk4NCwgODA5OTMsIDgxMDAxLCA4MTAxMCwgODEwMjAsIAotICAgIDgxMDI4LCA4MTAzOSwgODEwNDcsIDgxMDU1LCA4MTA2MiwgODEwNzAsIDgxMDc5LCA4MTA4NiwgODEwOTYsIDgxMTA2LCAKLSAgICA4MTExNywgODExMjcsIDgxMTM4LCA4MTE0NiwgODExNTQsIDgxMTYzLCA4MTE3MSwgODExODAsIDgxMTg4LCA4MTE5NiwgCi0gICAgODEyMDUsIDgxMjEzLCA4MTIyMiwgODEyMzAsIDgxMjM3LCA4MTI0NCwgODEyNTEsIDgxMjU4LCA4MTI2NiwgODEyNzQsIAotICAgIDgxMjgyLCA4MTI5MCwgODEyOTksIDgxMzA3LCA4MTMxNSwgODEzMjQsIDgxMzMyLCA4MTM0MCwgODEzNDgsIDgxMzU3LCAKLSAgICA4MTM2NSwgODEzNzMsIDgxMzgxLCA4MTM4OSwgODEzOTcsIDgxNDA1LCA4MTQxMywgODE0MjEsIDgxNDI5LCA4MTQzOCwgCi0gICAgODE0NDYsIDgxNDU0LCA4MTQ2MiwgODE0NzAsIDgxNDc4LCA4MTQ4NywgODE0OTYsIDgxNTA0LCA4MTUxMiwgODE1MjAsIAotICAgIDgxNTI5LCA4MTUzNywgODE1NDYsIDgxNTUzLCA4MTU2MCwgODE1NjgsIDgxNTc1LCA4MTU4MywgODE1OTEsIDgxNjAwLCAKLSAgICA4MTYwOCwgODE2MTcsIDgxNjI1LCA4MTYzMywgODE2NDMsIDgxNjUwLCA4MTY1NywgODE2NjUsIDgxNjcyLCA4MTY4MCwgCi0gICAgODE2OTAsIDgxNzAxLCA4MTcwOSwgODE3MTgsIDgxNzI2LCA4MTczNSwgODE3NDMsIDgxNzUyLCA4MTc2MCwgODE3NjksIAotICAgIDgxNzc3LCA4MTc4NiwgODE3OTUsIDgxODAzLCA4MTgxMSwgODE4MTksIDgxODI4LCA4MTgzNSwgODE4NDMsIDgxODUyLCAKLSAgICA4MTg2MSwgODE4NzAsIDgxODgwLCA4MTg4OCwgODE4OTgsIDgxOTA2LCA4MTkxNiwgODE5MjQsIDgxOTM0LCA4MTk0MiwgCi0gICAgODE5NTIsIDgxOTYwLCA4MTk2OSwgODE5NzYsIDgxOTg1LCA4MTk5MiwgODIwMDIsIDgyMDEwLCA4MjAyMCwgODIwMjgsIAotICAgIDgyMDM4LCA4MjA0NiwgODIwNTQsIDgyMDYyLCA4MjA3MSwgODIwNzksIDgyMDg4LCA4MjA5NywgODIxMDYsIDgyMTE1LCAKLSAgICA4MjEyNSwgODIxMzMsIDgyMTQzLCA4MjE1MSwgODIxNjEsIDgyMTY5LCA4MjE3OSwgODIxODcsIDgyMTk3LCA4MjIwNSwgCi0gICAgODIyMTQsIDgyMjIxLCA4MjIzMCwgODIyMzcsIDgyMjQ3LCA4MjI1NSwgODIyNjUsIDgyMjczLCA4MjI4MywgODIyOTEsIAotICAgIDgyMjk5LCA4MjMwNywgODIzMTYsIDgyMzI0LCA4MjMzMywgODIzNDIsIDgyMzUxLCA4MjM2MCwgODIzNjgsIDgyMzc2LCAKLSAgICA4MjM4NSwgODIzOTMsIDgyNDAyLCA4MjQxMSwgODI0MTksIDgyNDI3LCA4MjQzNSwgODI0NDQsIDgyNDUyLCA4MjQ2MCwgCi0gICAgODI0NjksIDgyNDc3LCA4MjQ4NSwgODI0OTMsIDgyNTAxLCA4MjUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgODI1MTEsIDgyNTIxLCA4MjUzMSwgODI1NDEsIDgyNTUxLCA4MjU2MiwgODI1NzIsIDgyNTgyLCAKLSAgICA4MjU5MywgODI2MDIsIDgyNjExLCA4MjYyMCwgODI2MzEsIDgyNjQxLCA4MjY1MSwgODI2NjMsIDgyNjczLCA4MjY4MywgCi0gICAgODI2OTMsIDgyNzAzLCA4MjcxMywgODI3MjMsIDgyNzMzLCA4Mjc0MywgODI3NTMsIDgyNzYzLCA4Mjc3MywgODI3ODQsIAotICAgIDgyNzk1LCA4MjgwNSwgODI4MTUsIDgyODI3LCA4MjgzOCwgODI4NDksIDgyODU5LCA4Mjg2OSwgODI4NzksIDgyODg5LCAKLSAgICA4Mjg5OSwgODI5MDksIDgyOTE5LCA4MjkzMSwgODI5NDEsIDgyOTUxLCA4Mjk2MywgODI5NzQsIDgyOTg1LCA4Mjk5NSwgCi0gICAgODMwMDUsIDgzMDE1LCA4MzAyNSwgODMwMzcsIDgzMDQ3LCA4MzA1NywgODMwNjgsIDgzMDc5LCA4MzA4OSwgODMwOTksIAotICAgIDgzMTA4LCA4MzExNywgODMxMjYsIDgzMTM1LCA4MzE0NCwgODMxNTQsIDAsIDAsIDgzMTY0LCA4MzE3NCwgODMxODQsIAotICAgIDgzMTk0LCA4MzIwNCwgODMyMTYsIDgzMjI2LCA4MzIzNiwgODMyNDgsIDgzMjU4LCA4MzI3MCwgODMyNzksIDgzMjg4LCAKLSAgICA4MzI5OSwgODMzMDksIDgzMzIxLCA4MzMzMiwgODMzNDUsIDgzMzU1LCA4MzM2NywgODMzNzYsIDgzMzg3LCA4MzM5OCwgCi0gICAgODM0MTEsIDgzNDIxLCA4MzQzMSwgODM0NDEsIDgzNDUxLCA4MzQ2MSwgODM0NzAsIDgzNDc5LCA4MzQ4OCwgODM0OTcsIAotICAgIDgzNTA3LCA4MzUxNywgODM1MjcsIDgzNTM3LCA4MzU0NywgODM1NTcsIDgzNTY3LCA4MzU3NywgODM1ODcsIDgzNTk3LCAKLSAgICA4MzYwNywgODM2MTcsIDgzNjI2LCA4MzYzNSwgODM2NDQsIDgzNjU0LCA4MzY2NCwgODM2NzQsIDgzNjg0LCA4MzY5NCwgCi0gICAgODM3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNzE1LCA4MzczMCwgCi0gICAgODM3NDUsIDgzNzUxLCA4Mzc1NywgODM3NjMsIDgzNzY5LCA4Mzc3NSwgODM3ODEsIDgzNzg3LCA4Mzc5MywgODM4MDEsIAotICAgIDgzODA1LCA4MzgwOCwgMCwgMCwgODM4MTYsIDgzODE5LCA4MzgyMiwgODM4MjUsIDgzODI4LCA4MzgzMSwgODM4MzQsIAotICAgIDgzODM3LCA4Mzg0MCwgODM4NDMsIDgzODQ2LCA4Mzg0OSwgODM4NTIsIDgzODU1LCA4Mzg1OCwgODM4NjEsIDgzODY0LCAKLSAgICA4Mzg3MiwgODM4ODEsIDgzODkyLCA4MzkwMCwgODM5MDgsIDgzOTE3LCA4MzkyNiwgODM5MzcsIDgzOTQ5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4Mzk1OCwgODM5NjMsIDgzOTY4LCA4Mzk3NSwgODM5ODIsIDgzOTg4LCA4Mzk5NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODM5OTksIDg0MDA5LCA4NDAxOSwgODQwMjksIDg0MDM4LCA4NDA0OSwgODQwNTgsIDg0MDY3LCAKLSAgICA4NDA3NywgODQwODcsIDg0MDk5LCA4NDExMSwgODQxMjIsIDg0MTMzLCA4NDE0NCwgODQxNTUsIDg0MTY1LCA4NDE3NSwgCi0gICAgODQxODUsIDg0MTk1LCA4NDIwNiwgODQyMTcsIDg0MjIxLCA4NDIyNiwgODQyMzUsIDg0MjQ0LCA4NDI0OCwgODQyNTIsIAotICAgIDg0MjU2LCA4NDI2MSwgODQyNjYsIDg0MjcxLCA4NDI3NiwgODQyNzksIDg0MjgzLCAwLCA4NDI4OCwgODQyOTEsIDg0Mjk0LCAKLSAgICA4NDI5OCwgODQzMDIsIDg0MzA3LCA4NDMxMSwgODQzMTUsIDg0MzIwLCA4NDMyNSwgODQzMzIsIDg0MzM5LCA4NDM0MiwgCi0gICAgODQzNDUsIDg0MzQ4LCA4NDM1MSwgODQzNTQsIDg0MzU4LCA4NDM2MiwgMCwgODQzNjYsIDg0MzcxLCA4NDM3NSwgODQzNzksIAotICAgIDAsIDAsIDAsIDAsIDg0Mzg0LCA4NDM4OSwgODQzOTYsIDg0NDAxLCA4NDQwNiwgMCwgODQ0MTEsIDg0NDE2LCA4NDQyMSwgCi0gICAgODQ0MjYsIDg0NDMxLCA4NDQzNiwgODQ0NDEsIDg0NDQ2LCA4NDQ1MSwgODQ0NTYsIDg0NDYxLCA4NDQ2NiwgODQ0NzUsIAotICAgIDg0NDg0LCA4NDQ5MiwgODQ1MDAsIDg0NTA5LCA4NDUxOCwgODQ1MjcsIDg0NTM2LCA4NDU0NCwgODQ1NTIsIDg0NTYwLCAKLSAgICA4NDU2OCwgODQ1NzMsIDg0NTc4LCA4NDU4NCwgODQ1OTAsIDg0NTk2LCA4NDYwMiwgODQ2MTAsIDg0NjE4LCA4NDYyNCwgCi0gICAgODQ2MzAsIDg0NjM2LCA4NDY0MiwgODQ2NDgsIDg0NjU0LCA4NDY2MCwgODQ2NjYsIDg0NjcxLCA4NDY3NiwgODQ2ODEsIAotICAgIDg0Njg2LCA4NDY5MSwgODQ2OTYsIDg0NzAxLCA4NDcwNiwgODQ3MTIsIDg0NzE4LCA4NDcyNCwgODQ3MzAsIDg0NzM2LCAKLSAgICA4NDc0MiwgODQ3NDgsIDg0NzU0LCA4NDc2MCwgODQ3NjYsIDg0NzcyLCA4NDc3OCwgODQ3ODQsIDg0NzkwLCA4NDc5NiwgCi0gICAgODQ4MDIsIDg0ODA4LCA4NDgxNCwgODQ4MjAsIDg0ODI2LCA4NDgzMiwgODQ4MzgsIDg0ODQ0LCA4NDg1MCwgODQ4NTYsIAotICAgIDg0ODYyLCA4NDg2OCwgODQ4NzQsIDg0ODgwLCA4NDg4NiwgODQ4OTIsIDg0ODk4LCA4NDkwNCwgODQ5MTAsIDg0OTE2LCAKLSAgICA4NDkyMiwgODQ5MjgsIDg0OTM0LCA4NDk0MCwgODQ5NDYsIDg0OTUyLCA4NDk1OCwgODQ5NjQsIDg0OTcwLCA4NDk3NiwgCi0gICAgODQ5ODIsIDg0OTg4LCA4NDk5NCwgODUwMDAsIDg1MDA2LCA4NTAxMiwgODUwMTgsIDg1MDI0LCA4NTAzMCwgODUwMzYsIAotICAgIDg1MDQyLCA4NTA0OCwgODUwNTQsIDg1MDYwLCA4NTA2NiwgODUwNzEsIDg1MDc2LCA4NTA4MSwgODUwODYsIDg1MDkyLCAKLSAgICA4NTA5OCwgODUxMDQsIDg1MTEwLCA4NTExNiwgODUxMjIsIDg1MTI4LCA4NTEzNCwgODUxNDAsIDg1MTQ2LCA4NTE1MywgCi0gICAgODUxNjAsIDg1MTY1LCA4NTE3MCwgODUxNzUsIDg1MTgwLCA4NTE5MiwgODUyMDQsIDg1MjE1LCA4NTIyNiwgODUyMzgsIAotICAgIDg1MjUwLCA4NTI1OCwgMCwgMCwgODUyNjYsIDAsIDg1Mjc0LCA4NTI3OCwgODUyODIsIDg1Mjg1LCA4NTI4OSwgODUyOTMsIAotICAgIDg1Mjk2LCA4NTI5OSwgODUzMDMsIDg1MzA3LCA4NTMxMCwgODUzMTMsIDg1MzE2LCA4NTMxOSwgODUzMjQsIDg1MzI3LCAKLSAgICA4NTMzMSwgODUzMzQsIDg1MzM3LCA4NTM0MCwgODUzNDMsIDg1MzQ2LCA4NTM0OSwgODUzNTIsIDg1MzU1LCA4NTM1OCwgCi0gICAgODUzNjEsIDg1MzY0LCA4NTM2OCwgODUzNzIsIDg1Mzc2LCA4NTM4MCwgODUzODUsIDg1MzkwLCA4NTM5NiwgODU0MDIsIAotICAgIDg1NDA4LCA4NTQxMywgODU0MTksIDg1NDI1LCA4NTQzMSwgODU0MzYsIDg1NDQyLCA4NTQ0OCwgODU0NTMsIDg1NDU4LCAKLSAgICA4NTQ2NCwgODU0NjksIDg1NDc1LCA4NTQ4MSwgODU0ODYsIDg1NDkyLCA4NTQ5OCwgODU1MDMsIDg1NTA5LCA4NTUxNSwgCi0gICAgODU1MjEsIDg1NTI3LCA4NTUzMywgODU1MzcsIDg1NTQyLCA4NTU0NiwgODU1NTEsIDg1NTU1LCA4NTU2MCwgODU1NjUsIAotICAgIDg1NTcxLCA4NTU3NywgODU1ODMsIDg1NTg4LCA4NTU5NCwgODU2MDAsIDg1NjA2LCA4NTYxMSwgODU2MTcsIDg1NjIzLCAKLSAgICA4NTYyOCwgODU2MzMsIDg1NjM5LCA4NTY0NCwgODU2NTAsIDg1NjU2LCA4NTY2MSwgODU2NjcsIDg1NjczLCA4NTY3OCwgCi0gICAgODU2ODQsIDg1NjkwLCA4NTY5NiwgODU3MDIsIDg1NzA4LCA4NTcxMywgODU3MTcsIDg1NzIyLCA4NTcyNCwgODU3MjksIAotICAgIDg1NzM0LCA4NTc0MCwgODU3NDUsIDg1NzUwLCA4NTc1NCwgODU3NjAsIDg1NzY1LCA4NTc3MCwgODU3NzUsIDg1NzgwLCAKLSAgICA4NTc4NSwgODU3OTAsIDg1Nzk1LCA4NTgwMSwgODU4MDcsIDg1ODEzLCA4NTgyMSwgODU4MjUsIDg1ODI5LCA4NTgzMywgCi0gICAgODU4MzcsIDg1ODQxLCA4NTg0NSwgODU4NTAsIDg1ODU1LCA4NTg2MCwgODU4NjUsIDg1ODY5LCA4NTg3NCwgODU4NzksIAotICAgIDg1ODg0LCA4NTg4OSwgODU4OTQsIDg1ODk5LCA4NTkwNCwgODU5MDksIDg1OTEzLCA4NTkxNywgODU5MjIsIDg1OTI3LCAKLSAgICA4NTkzMiwgODU5MzcsIDg1OTQxLCA4NTk0NiwgODU5NTEsIDg1OTU2LCA4NTk2MSwgODU5NjUsIDg1OTcwLCA4NTk3NSwgCi0gICAgODU5ODAsIDg1OTg1LCA4NTk4OSwgODU5OTQsIDg1OTk5LCA4NjAwMywgODYwMDgsIDg2MDEzLCA4NjAxOCwgODYwMjMsIAotICAgIDg2MDI4LCA4NjAzMywgODYwNDAsIDg2MDQ3LCA4NjA1MSwgODYwNTYsIDg2MDYxLCA4NjA2NiwgODYwNzEsIDg2MDc2LCAKLSAgICA4NjA4MSwgODYwODYsIDg2MDkxLCA4NjA5NiwgODYxMDEsIDg2MTA2LCA4NjExMSwgODYxMTYsIDg2MTIxLCA4NjEyNiwgCi0gICAgODYxMzEsIDg2MTM2LCA4NjE0MSwgODYxNDYsIDg2MTUxLCA4NjE1NiwgODYxNjEsIDg2MTY2LCA4NjE3MSwgODYxNzYsIAotICAgIDg2MTgxLCA4NjE4NiwgODYxOTEsIDg2MTk2LCAwLCAwLCAwLCA4NjIwMSwgODYyMDUsIDg2MjEwLCA4NjIxNCwgODYyMTksIAotICAgIDg2MjI0LCAwLCAwLCA4NjIyOCwgODYyMzMsIDg2MjM4LCA4NjI0MiwgODYyNDcsIDg2MjUyLCAwLCAwLCA4NjI1NywgCi0gICAgODYyNjIsIDg2MjY2LCA4NjI3MSwgODYyNzYsIDg2MjgxLCAwLCAwLCA4NjI4NiwgODYyOTEsIDg2Mjk2LCAwLCAwLCAwLCAKLSAgICA4NjMwMCwgODYzMDQsIDg2MzA4LCA4NjMxMiwgODYzMTUsIDg2MzE5LCA4NjMyMywgMCwgODYzMjcsIDg2MzMzLCA4NjMzNiwgCi0gICAgODYzNDAsIDg2MzQzLCA4NjM0NywgODYzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MzU1LCA4NjM2MSwgCi0gICAgODYzNjcsIDg2MzczLCA4NjM3OSwgMCwgMCwgODYzODMsIDg2Mzg5LCA4NjM5NSwgODY0MDEsIDg2NDA3LCA4NjQxMywgCi0gICAgODY0MjAsIDg2NDI3LCA4NjQzNCwgODY0NDEsIDg2NDQ4LCA4NjQ1NSwgMCwgODY0NjIsIDg2NDY5LCA4NjQ3NiwgODY0ODIsIAotICAgIDg2NDg5LCA4NjQ5NiwgODY1MDMsIDg2NTEwLCA4NjUxNiwgODY1MjMsIDg2NTMwLCA4NjUzNywgODY1NDQsIDg2NTUwLCAKLSAgICA4NjU1NywgODY1NjQsIDg2NTcxLCA4NjU3OCwgODY1ODQsIDg2NTkxLCA4NjU5OCwgODY2MDUsIDg2NjEyLCA4NjYxOSwgCi0gICAgODY2MjYsIDg2NjMzLCAwLCA4NjY0MCwgODY2NDYsIDg2NjUzLCA4NjY2MCwgODY2NjcsIDg2Njc0LCA4NjY4MCwgODY2ODcsIAotICAgIDg2Njk0LCA4NjcwMSwgODY3MDgsIDg2NzE1LCA4NjcyMiwgODY3MjksIDg2NzM1LCA4Njc0MiwgODY3NDksIDg2NzU2LCAKLSAgICA4Njc2MywgMCwgODY3NzAsIDg2Nzc3LCAwLCA4Njc4NCwgODY3OTEsIDg2Nzk4LCA4NjgwNSwgODY4MTIsIDg2ODE5LCAKLSAgICA4NjgyNiwgODY4MzMsIDg2ODQwLCA4Njg0NywgODY4NTQsIDg2ODYxLCA4Njg2OCwgODY4NzUsIDg2ODgyLCAwLCAwLCAKLSAgICA4Njg4OCwgODY4OTMsIDg2ODk4LCA4NjkwMywgODY5MDgsIDg2OTEzLCA4NjkxOCwgODY5MjMsIDg2OTI4LCA4NjkzMywgCi0gICAgODY5MzgsIDg2OTQzLCA4Njk0OCwgODY5NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2OTU4LCA4Njk2NSwgCi0gICAgODY5NzIsIDg2OTc5LCA4Njk4NiwgODY5OTMsIDg3MDAwLCA4NzAwNywgODcwMTQsIDg3MDIxLCA4NzAyOCwgODcwMzUsIAotICAgIDg3MDQyLCA4NzA0OSwgODcwNTYsIDg3MDYzLCA4NzA3MCwgODcwNzcsIDg3MDg0LCA4NzA5MSwgODcwOTksIDg3MTA3LCAKLSAgICA4NzExNCwgODcxMjEsIDg3MTI2LCA4NzEzNCwgODcxNDIsIDg3MTQ5LCA4NzE1NiwgODcxNjEsIDg3MTY4LCA4NzE3MywgCi0gICAgODcxNzgsIDg3MTg1LCA4NzE5MCwgODcxOTUsIDg3MjAwLCA4NzIwOCwgODcyMTMsIDg3MjE4LCA4NzIyNSwgODcyMzAsIAotICAgIDg3MjM1LCA4NzI0MiwgODcyNDksIDg3MjU0LCA4NzI1OSwgODcyNjQsIDg3MjY5LCA4NzI3NCwgODcyNzksIDg3Mjg0LCAKLSAgICA4NzI4OSwgODcyOTQsIDg3MzAxLCA4NzMwNiwgODczMTMsIDg3MzE4LCA4NzMyMywgODczMjgsIDg3MzMzLCA4NzMzOCwgCi0gICAgODczNDMsIDg3MzQ4LCA4NzM1MywgODczNTgsIDg3MzYzLCA4NzM2OCwgODczNzUsIDg3MzgyLCA4NzM4OSwgODczOTYsIAotICAgIDg3NDAyLCA4NzQwNywgODc0MTQsIDg3NDE5LCA4NzQyNCwgODc0MzMsIDg3NDQwLCA4NzQ0OSwgODc0NTYsIDg3NDYxLCAKLSAgICA4NzQ2NiwgODc0NzQsIDg3NDc5LCA4NzQ4NCwgODc0ODksIDg3NDk0LCA4NzQ5OSwgODc1MDYsIDg3NTExLCA4NzUxNiwgCi0gICAgODc1MjEsIDg3NTI2LCA4NzUzMSwgODc1MzgsIDg3NTQ1LCA4NzU1MiwgODc1NTksIDg3NTY2LCA4NzU3MywgODc1ODAsIAotICAgIDg3NTg3LCA4NzU5NCwgODc2MDEsIDg3NjA4LCA4NzYxNSwgODc2MjIsIDg3NjI5LCA4NzYzNiwgODc2NDMsIDg3NjUwLCAKLSAgICA4NzY1NywgODc2NjQsIDg3NjcxLCA4NzY3OCwgODc2ODUsIDg3NjkyLCA4NzY5OSwgODc3MDYsIDg3NzEzLCA4NzcyMCwgCi0gICAgODc3MjcsIDAsIDAsIDAsIDAsIDAsIDg3NzM0LCA4Nzc0MiwgODc3NTAsIDAsIDAsIDAsIDAsIDg3NzU1LCA4Nzc1OSwgCi0gICAgODc3NjMsIDg3NzY3LCA4Nzc3MSwgODc3NzUsIDg3Nzc5LCA4Nzc4MywgODc3ODcsIDg3NzkxLCA4Nzc5NiwgODc4MDEsIAotICAgIDg3ODA2LCA4NzgxMSwgODc4MTYsIDg3ODIxLCA4NzgyNiwgODc4MzEsIDg3ODM2LCA4Nzg0MiwgODc4NDgsIDg3ODU0LCAKLSAgICA4Nzg2MSwgODc4NjgsIDg3ODc1LCA4Nzg4MiwgODc4ODksIDg3ODk2LCA4NzkwMiwgODc5MDgsIDg3OTE0LCA4NzkyMSwgCi0gICAgODc5MjgsIDg3OTM1LCA4Nzk0MiwgODc5NDksIDg3OTU2LCA4Nzk2MywgODc5NzAsIDg3OTc3LCA4Nzk4NCwgODc5OTEsIAotICAgIDg3OTk4LCA4ODAwNSwgODgwMTIsIDAsIDAsIDAsIDg4MDE5LCA4ODAyNywgODgwMzUsIDg4MDQzLCA4ODA1MSwgODgwNTksIAotICAgIDg4MDY5LCA4ODA3OSwgODgwODcsIDg4MDk1LCA4ODEwMywgODgxMTEsIDg4MTE5LCA4ODEyNSwgODgxMzIsIDg4MTQxLCAKLSAgICA4ODE1MCwgODgxNTksIDg4MTY4LCA4ODE3NywgODgxODYsIDg4MTk2LCA4ODIwNywgODgyMTcsIDg4MjI4LCA4ODIzNywgCi0gICAgODgyNDYsIDg4MjU1LCA4ODI2NSwgODgyNzYsIDg4Mjg2LCA4ODI5NywgODgzMDgsIDg4MzE3LCA4ODMyNSwgODgzMzEsIAotICAgIDg4MzM3LCA4ODM0MywgODgzNDksIDg4MzU3LCA4ODM2NSwgODgzNzEsIDg4Mzc4LCA4ODM4OCwgODgzOTUsIDg4NDAyLCAKLSAgICA4ODQwOSwgODg0MTYsIDg4NDIzLCA4ODQzMywgODg0NDAsIDg4NDQ3LCA4ODQ1NSwgODg0NjMsIDg4NDcyLCA4ODQ4MSwgCi0gICAgODg0OTAsIDg4NDk5LCA4ODUwOCwgODg1MTYsIDg4NTI1LCA4ODUzNCwgODg1NDMsIDg4NTQ3LCA4ODU1NCwgODg1NTksIAotICAgIDg4NTY0LCA4ODU2OCwgODg1NzIsIDg4NTc2LCA4ODU4MCwgODg1ODUsIDg4NTkwLCA4ODU5NiwgODg2MDIsIDg4NjA2LCAKLSAgICA4ODYxMiwgODg2MTYsIDg4NjIwLCA4ODYyNCwgODg2MjgsIDg4NjMyLCA4ODYzNiwgODg2NDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzMsIDg4Njc4LCA4ODY4MywgODg2ODgsIDg4NjkzLCAKLSAgICA4ODY5OCwgODg3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4MjgzLCA3ODI4OCwgNzgyOTMsIDc4Mjk4LCA3ODMwMywgNzgzMDgsIDc4MzE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODMyMSwgNzgzMjgsIDc4MzM1LCA3ODM0MiwgNzgzNDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDc4MzU2LCA3ODM2MywgNzgzNzAsIDc4MzgwLCA3ODM4NiwgNzgzOTIsIDc4Mzk4LCA3ODQwNCwgCisgICAgNzg0MTAsIDc4NDE2LCA3ODQyMywgNzg0MjksIDc4NDM1LCA3ODQ0MSwgNzg0NTAsIDc4NDU5LCA3ODQ3MSwgNzg0ODMsIAorICAgIDc4NDg5LCA3ODQ5NSwgNzg1MDEsIDc4NTA4LCA3ODUxNSwgNzg1MjIsIDc4NTI5LCA3ODUzNiwgMCwgNzg1NDMsIDc4NTUwLCAKKyAgICA3ODU1NywgNzg1NjUsIDc4NTcyLCAwLCA3ODU3OSwgMCwgNzg1ODYsIDc4NTkzLCAwLCA3ODYwMCwgNzg2MDgsIDAsIAorICAgIDc4NjE1LCA3ODYyMiwgNzg2MjksIDc4NjM2LCA3ODY0MywgNzg2NTAsIDc4NjU3LCA3ODY2NCwgNzg2NzEsIDc4Njc4LCAKKyAgICA3ODY4MywgNzg2OTAsIDc4Njk3LCA3ODcwMywgNzg3MDksIDc4NzE1LCA3ODcyMSwgNzg3MjcsIDc4NzMzLCA3ODczOSwgCisgICAgNzg3NDUsIDc4NzUxLCA3ODc1NywgNzg3NjMsIDc4NzY5LCA3ODc3NSwgNzg3ODEsIDc4Nzg3LCA3ODc5MywgNzg3OTksIAorICAgIDc4ODA1LCA3ODgxMSwgNzg4MTcsIDc4ODIzLCA3ODgyOSwgNzg4MzUsIDc4ODQxLCA3ODg0NywgNzg4NTMsIDc4ODU5LCAKKyAgICA3ODg2NSwgNzg4NzEsIDc4ODc3LCA3ODg4MywgNzg4ODksIDc4ODk1LCA3ODkwMSwgNzg5MDcsIDc4OTEzLCA3ODkxOSwgCisgICAgNzg5MjUsIDc4OTMxLCA3ODkzNywgNzg5NDMsIDc4OTQ5LCA3ODk1NSwgNzg5NjEsIDc4OTY3LCA3ODk3MywgNzg5NzksIAorICAgIDc4OTg1LCA3ODk5MSwgNzg5OTcsIDc5MDAzLCA3OTAwOSwgNzkwMTUsIDc5MDIxLCA3OTAyNywgNzkwMzMsIDc5MDM5LCAKKyAgICA3OTA0NSwgNzkwNTEsIDc5MDU3LCA3OTA2MywgNzkwNjksIDc5MDc1LCA3OTA4MSwgNzkwODcsIDc5MDkzLCA3OTA5OSwgCisgICAgNzkxMDUsIDc5MTExLCA3OTExNywgNzkxMjMsIDc5MTI5LCA3OTEzNSwgNzkxNDEsIDc5MTQ3LCA3OTE1MywgNzkxNjEsIAorICAgIDc5MTY5LCA3OTE3NSwgNzkxODEsIDc5MTg3LCA3OTE5MywgNzkyMDIsIDc5MjExLCA3OTIxOSwgNzkyMjcsIDc5MjM1LCAKKyAgICA3OTI0MywgNzkyNTEsIDc5MjU5LCA3OTI2NywgNzkyNzUsIDc5MjgyLCA3OTI4OSwgNzkyOTksIDc5MzA5LCA3OTMxMywgCisgICAgNzkzMTcsIDc5MzIyLCA3OTMyNywgNzkzMzIsIDc5MzM3LCA3OTM0NiwgNzkzNTUsIDc5MzYxLCA3OTM2NywgNzkzNzQsIAorICAgIDc5MzgxLCA3OTM4OCwgNzkzOTIsIDc5Mzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3OTQwNCwgNzk0MTAsIDc5NDE2LCA3OTQyMiwgNzk0MjgsIDc5NDMzLCA3OTQzOCwgNzk0NDQsIDc5NDUwLCAKKyAgICA3OTQ1NiwgNzk0NjIsIDc5NDcwLCA3OTQ3NiwgNzk0ODIsIDc5NDkwLCA3OTQ5OCwgNzk1MDYsIDc5NTE0LCA3OTUxOSwgCisgICAgNzk1MjQsIDc5NTI5LCA3OTUzNCwgNzk1NDcsIDc5NTYwLCA3OTU3MCwgNzk1ODAsIDc5NTkxLCA3OTYwMiwgNzk2MTMsIAorICAgIDc5NjI0LCA3OTYzNCwgNzk2NDQsIDc5NjU1LCA3OTY2NiwgNzk2NzcsIDc5Njg4LCA3OTY5OCwgNzk3MDgsIDc5NzE4LCAKKyAgICA3OTczNCwgNzk3NTAsIDc5NzY2LCA3OTc3MywgNzk3ODAsIDc5Nzg3LCA3OTc5NCwgNzk4MDQsIDc5ODE0LCA3OTgyNCwgCisgICAgNzk4MzYsIDc5ODQ2LCA3OTg1NCwgNzk4NjIsIDc5ODcxLCA3OTg3OSwgNzk4ODksIDc5ODk3LCA3OTkwNSwgNzk5MTMsIAorICAgIDc5OTIyLCA3OTkzMCwgNzk5NDAsIDc5OTQ4LCA3OTk1NiwgNzk5NjQsIDc5OTc0LCA3OTk4MiwgNzk5ODksIDc5OTk2LCAKKyAgICA4MDAwMywgODAwMTAsIDgwMDE4LCA4MDAyNiwgODAwMzQsIDgwMDQyLCA4MDA1MCwgODAwNTksIDgwMDY3LCA4MDA3NSwgCisgICAgODAwODMsIDgwMDkxLCA4MDA5OSwgODAxMDgsIDgwMTE2LCA4MDEyNCwgODAxMzIsIDgwMTQwLCA4MDE0OCwgODAxNTYsIAorICAgIDgwMTY0LCA4MDE3MiwgODAxODAsIDgwMTg4LCA4MDE5NywgODAyMDUsIDgwMjE1LCA4MDIyMywgODAyMzEsIDgwMjM5LCAKKyAgICA4MDI0OSwgODAyNTcsIDgwMjY1LCA4MDI3MywgODAyODEsIDgwMjkwLCA4MDI5OSwgODAzMDcsIDgwMzE3LCA4MDMyNSwgCisgICAgODAzMzMsIDgwMzQxLCA4MDM1MCwgODAzNTgsIDgwMzY4LCA4MDM3NiwgODAzODMsIDgwMzkwLCA4MDM5OCwgODA0MDUsIAorICAgIDgwNDE0LCA4MDQyMSwgODA0MjksIDgwNDM3LCA4MDQ0NiwgODA0NTQsIDgwNDY0LCA4MDQ3MiwgODA0ODAsIDgwNDg4LCAKKyAgICA4MDQ5OCwgODA1MDYsIDgwNTEzLCA4MDUyMCwgODA1MjgsIDgwNTM1LCA4MDU0NCwgODA1NTEsIDgwNTYxLCA4MDU3MSwgCisgICAgODA1ODIsIDgwNTkxLCA4MDYwMCwgODA2MDksIDgwNjE4LCA4MDYyNywgODA2MzcsIDgwNjQ4LCA4MDY1OSwgODA2NjksIAorICAgIDgwNjgwLCA4MDY5MiwgODA3MDIsIDgwNzExLCA4MDcyMCwgODA3MjgsIDgwNzM3LCA4MDc0NywgODA3NTUsIDgwNzY0LCAKKyAgICA4MDc3MywgODA3ODEsIDgwNzkwLCA4MDgwMCwgODA4MDgsIDgwODE3LCA4MDgyNiwgODA4MzQsIDgwODQzLCA4MDg1MywgCisgICAgODA4NjEsIDgwODcxLCA4MDg3OSwgODA4ODksIDgwODk3LCA4MDkwNSwgODA5MTQsIDgwOTIyLCA4MDkzMiwgODA5NDAsIAorICAgIDgwOTQ4LCA4MDk1OCwgODA5NjYsIDgwOTczLCA4MDk4MCwgODA5ODksIDgwOTk4LCA4MTAwNiwgODEwMTUsIDgxMDI1LCAKKyAgICA4MTAzMywgODEwNDQsIDgxMDUyLCA4MTA2MCwgODEwNjcsIDgxMDc1LCA4MTA4NCwgODEwOTEsIDgxMTAxLCA4MTExMSwgCisgICAgODExMjIsIDgxMTMyLCA4MTE0MywgODExNTEsIDgxMTU5LCA4MTE2OCwgODExNzYsIDgxMTg1LCA4MTE5MywgODEyMDEsIAorICAgIDgxMjEwLCA4MTIxOCwgODEyMjcsIDgxMjM1LCA4MTI0MiwgODEyNDksIDgxMjU2LCA4MTI2MywgODEyNzEsIDgxMjc5LCAKKyAgICA4MTI4NywgODEyOTUsIDgxMzA0LCA4MTMxMiwgODEzMjAsIDgxMzI5LCA4MTMzNywgODEzNDUsIDgxMzUzLCA4MTM2MiwgCisgICAgODEzNzAsIDgxMzc4LCA4MTM4NiwgODEzOTQsIDgxNDAyLCA4MTQxMCwgODE0MTgsIDgxNDI2LCA4MTQzNCwgODE0NDMsIAorICAgIDgxNDUxLCA4MTQ1OSwgODE0NjcsIDgxNDc1LCA4MTQ4MywgODE0OTIsIDgxNTAxLCA4MTUwOSwgODE1MTcsIDgxNTI1LCAKKyAgICA4MTUzNCwgODE1NDIsIDgxNTUxLCA4MTU1OCwgODE1NjUsIDgxNTczLCA4MTU4MCwgODE1ODgsIDgxNTk2LCA4MTYwNSwgCisgICAgODE2MTMsIDgxNjIyLCA4MTYzMCwgODE2MzgsIDgxNjQ4LCA4MTY1NSwgODE2NjIsIDgxNjcwLCA4MTY3NywgODE2ODUsIAorICAgIDgxNjk1LCA4MTcwNiwgODE3MTQsIDgxNzIzLCA4MTczMSwgODE3NDAsIDgxNzQ4LCA4MTc1NywgODE3NjUsIDgxNzc0LCAKKyAgICA4MTc4MiwgODE3OTEsIDgxODAwLCA4MTgwOCwgODE4MTYsIDgxODI0LCA4MTgzMywgODE4NDAsIDgxODQ4LCA4MTg1NywgCisgICAgODE4NjYsIDgxODc1LCA4MTg4NSwgODE4OTMsIDgxOTAzLCA4MTkxMSwgODE5MjEsIDgxOTI5LCA4MTkzOSwgODE5NDcsIAorICAgIDgxOTU3LCA4MTk2NSwgODE5NzQsIDgxOTgxLCA4MTk5MCwgODE5OTcsIDgyMDA3LCA4MjAxNSwgODIwMjUsIDgyMDMzLCAKKyAgICA4MjA0MywgODIwNTEsIDgyMDU5LCA4MjA2NywgODIwNzYsIDgyMDg0LCA4MjA5MywgODIxMDIsIDgyMTExLCA4MjEyMCwgCisgICAgODIxMzAsIDgyMTM4LCA4MjE0OCwgODIxNTYsIDgyMTY2LCA4MjE3NCwgODIxODQsIDgyMTkyLCA4MjIwMiwgODIyMTAsIAorICAgIDgyMjE5LCA4MjIyNiwgODIyMzUsIDgyMjQyLCA4MjI1MiwgODIyNjAsIDgyMjcwLCA4MjI3OCwgODIyODgsIDgyMjk2LCAKKyAgICA4MjMwNCwgODIzMTIsIDgyMzIxLCA4MjMyOSwgODIzMzgsIDgyMzQ3LCA4MjM1NiwgODIzNjUsIDgyMzczLCA4MjM4MSwgCisgICAgODIzOTAsIDgyMzk4LCA4MjQwNywgODI0MTYsIDgyNDI0LCA4MjQzMiwgODI0NDAsIDgyNDQ5LCA4MjQ1NywgODI0NjUsIAorICAgIDgyNDc0LCA4MjQ4MiwgODI0OTAsIDgyNDk4LCA4MjUwNiwgODI1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgyNTE2LCA4MjUyNiwgODI1MzYsIDgyNTQ2LCA4MjU1NiwgODI1NjcsIDgyNTc3LCA4MjU4NywgCisgICAgODI1OTgsIDgyNjA3LCA4MjYxNiwgODI2MjUsIDgyNjM2LCA4MjY0NiwgODI2NTYsIDgyNjY4LCA4MjY3OCwgODI2ODgsIAorICAgIDgyNjk4LCA4MjcwOCwgODI3MTgsIDgyNzI4LCA4MjczOCwgODI3NDgsIDgyNzU4LCA4Mjc2OCwgODI3NzgsIDgyNzg5LCAKKyAgICA4MjgwMCwgODI4MTAsIDgyODIwLCA4MjgzMiwgODI4NDMsIDgyODU0LCA4Mjg2NCwgODI4NzQsIDgyODg0LCA4Mjg5NCwgCisgICAgODI5MDQsIDgyOTE0LCA4MjkyNCwgODI5MzYsIDgyOTQ2LCA4Mjk1NiwgODI5NjgsIDgyOTc5LCA4Mjk5MCwgODMwMDAsIAorICAgIDgzMDEwLCA4MzAyMCwgODMwMzAsIDgzMDQyLCA4MzA1MiwgODMwNjIsIDgzMDczLCA4MzA4NCwgODMwOTQsIDgzMTA0LCAKKyAgICA4MzExMywgODMxMjIsIDgzMTMxLCA4MzE0MCwgODMxNDksIDgzMTU5LCAwLCAwLCA4MzE2OSwgODMxNzksIDgzMTg5LCAKKyAgICA4MzE5OSwgODMyMDksIDgzMjIxLCA4MzIzMSwgODMyNDEsIDgzMjUzLCA4MzI2MywgODMyNzUsIDgzMjg0LCA4MzI5MywgCisgICAgODMzMDQsIDgzMzE0LCA4MzMyNiwgODMzMzcsIDgzMzUwLCA4MzM2MCwgODMzNzIsIDgzMzgxLCA4MzM5MiwgODM0MDMsIAorICAgIDgzNDE2LCA4MzQyNiwgODM0MzYsIDgzNDQ2LCA4MzQ1NiwgODM0NjYsIDgzNDc1LCA4MzQ4NCwgODM0OTMsIDgzNTAyLCAKKyAgICA4MzUxMiwgODM1MjIsIDgzNTMyLCA4MzU0MiwgODM1NTIsIDgzNTYyLCA4MzU3MiwgODM1ODIsIDgzNTkyLCA4MzYwMiwgCisgICAgODM2MTIsIDgzNjIyLCA4MzYzMSwgODM2NDAsIDgzNjQ5LCA4MzY1OSwgODM2NjksIDgzNjc5LCA4MzY4OSwgODM2OTksIAorICAgIDgzNzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzcyMCwgODM3MzUsIAorICAgIDgzNzUwLCA4Mzc1NiwgODM3NjIsIDgzNzY4LCA4Mzc3NCwgODM3ODAsIDgzNzg2LCA4Mzc5MiwgODM3OTgsIDgzODA2LCAKKyAgICA4MzgxMCwgODM4MTMsIDAsIDAsIDgzODIxLCA4MzgyNCwgODM4MjcsIDgzODMwLCA4MzgzMywgODM4MzYsIDgzODM5LCAKKyAgICA4Mzg0MiwgODM4NDUsIDgzODQ4LCA4Mzg1MSwgODM4NTQsIDgzODU3LCA4Mzg2MCwgODM4NjMsIDgzODY2LCA4Mzg2OSwgCisgICAgODM4NzcsIDgzODg2LCA4Mzg5NywgODM5MDUsIDgzOTEzLCA4MzkyMiwgODM5MzEsIDgzOTQyLCA4Mzk1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODM5NjMsIDgzOTY4LCA4Mzk3MywgODM5ODAsIDgzOTg3LCA4Mzk5MywgODM5OTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDg0MDA0LCA4NDAxNCwgODQwMjQsIDg0MDM0LCA4NDA0MywgODQwNTQsIDg0MDYzLCA4NDA3MiwgCisgICAgODQwODIsIDg0MDkyLCA4NDEwNCwgODQxMTYsIDg0MTI3LCA4NDEzOCwgODQxNDksIDg0MTYwLCA4NDE3MCwgODQxODAsIAorICAgIDg0MTkwLCA4NDIwMCwgODQyMTEsIDg0MjIyLCA4NDIyNiwgODQyMzEsIDg0MjQwLCA4NDI0OSwgODQyNTMsIDg0MjU3LCAKKyAgICA4NDI2MSwgODQyNjYsIDg0MjcxLCA4NDI3NiwgODQyODEsIDg0Mjg0LCA4NDI4OCwgMCwgODQyOTMsIDg0Mjk2LCA4NDI5OSwgCisgICAgODQzMDMsIDg0MzA3LCA4NDMxMiwgODQzMTYsIDg0MzIwLCA4NDMyNSwgODQzMzAsIDg0MzM3LCA4NDM0NCwgODQzNDcsIAorICAgIDg0MzUwLCA4NDM1MywgODQzNTYsIDg0MzU5LCA4NDM2MywgODQzNjcsIDAsIDg0MzcxLCA4NDM3NiwgODQzODAsIDg0Mzg0LCAKKyAgICAwLCAwLCAwLCAwLCA4NDM4OSwgODQzOTQsIDg0NDAxLCA4NDQwNiwgODQ0MTEsIDAsIDg0NDE2LCA4NDQyMSwgODQ0MjYsIAorICAgIDg0NDMxLCA4NDQzNiwgODQ0NDEsIDg0NDQ2LCA4NDQ1MSwgODQ0NTYsIDg0NDYxLCA4NDQ2NiwgODQ0NzEsIDg0NDgwLCAKKyAgICA4NDQ4OSwgODQ0OTcsIDg0NTA1LCA4NDUxNCwgODQ1MjMsIDg0NTMyLCA4NDU0MSwgODQ1NDksIDg0NTU3LCA4NDU2NSwgCisgICAgODQ1NzMsIDg0NTc4LCA4NDU4MywgODQ1ODksIDg0NTk1LCA4NDYwMSwgODQ2MDcsIDg0NjE1LCA4NDYyMywgODQ2MjksIAorICAgIDg0NjM1LCA4NDY0MSwgODQ2NDcsIDg0NjUzLCA4NDY1OSwgODQ2NjUsIDg0NjcxLCA4NDY3NiwgODQ2ODEsIDg0Njg2LCAKKyAgICA4NDY5MSwgODQ2OTYsIDg0NzAxLCA4NDcwNiwgODQ3MTEsIDg0NzE3LCA4NDcyMywgODQ3MjksIDg0NzM1LCA4NDc0MSwgCisgICAgODQ3NDcsIDg0NzUzLCA4NDc1OSwgODQ3NjUsIDg0NzcxLCA4NDc3NywgODQ3ODMsIDg0Nzg5LCA4NDc5NSwgODQ4MDEsIAorICAgIDg0ODA3LCA4NDgxMywgODQ4MTksIDg0ODI1LCA4NDgzMSwgODQ4MzcsIDg0ODQzLCA4NDg0OSwgODQ4NTUsIDg0ODYxLCAKKyAgICA4NDg2NywgODQ4NzMsIDg0ODc5LCA4NDg4NSwgODQ4OTEsIDg0ODk3LCA4NDkwMywgODQ5MDksIDg0OTE1LCA4NDkyMSwgCisgICAgODQ5MjcsIDg0OTMzLCA4NDkzOSwgODQ5NDUsIDg0OTUxLCA4NDk1NywgODQ5NjMsIDg0OTY5LCA4NDk3NSwgODQ5ODEsIAorICAgIDg0OTg3LCA4NDk5MywgODQ5OTksIDg1MDA1LCA4NTAxMSwgODUwMTcsIDg1MDIzLCA4NTAyOSwgODUwMzUsIDg1MDQxLCAKKyAgICA4NTA0NywgODUwNTMsIDg1MDU5LCA4NTA2NSwgODUwNzEsIDg1MDc2LCA4NTA4MSwgODUwODYsIDg1MDkxLCA4NTA5NywgCisgICAgODUxMDMsIDg1MTA5LCA4NTExNSwgODUxMjEsIDg1MTI3LCA4NTEzMywgODUxMzksIDg1MTQ1LCA4NTE1MSwgODUxNTgsIAorICAgIDg1MTY1LCA4NTE3MCwgODUxNzUsIDg1MTgwLCA4NTE4NSwgODUxOTcsIDg1MjA5LCA4NTIyMCwgODUyMzEsIDg1MjQzLCAKKyAgICA4NTI1NSwgODUyNjMsIDAsIDAsIDg1MjcxLCAwLCA4NTI3OSwgODUyODMsIDg1Mjg3LCA4NTI5MCwgODUyOTQsIDg1Mjk4LCAKKyAgICA4NTMwMSwgODUzMDQsIDg1MzA4LCA4NTMxMiwgODUzMTUsIDg1MzE4LCA4NTMyMSwgODUzMjQsIDg1MzI5LCA4NTMzMiwgCisgICAgODUzMzYsIDg1MzM5LCA4NTM0MiwgODUzNDUsIDg1MzQ4LCA4NTM1MSwgODUzNTQsIDg1MzU3LCA4NTM2MCwgODUzNjMsIAorICAgIDg1MzY2LCA4NTM2OSwgODUzNzMsIDg1Mzc3LCA4NTM4MSwgODUzODUsIDg1MzkwLCA4NTM5NSwgODU0MDEsIDg1NDA3LCAKKyAgICA4NTQxMywgODU0MTgsIDg1NDI0LCA4NTQzMCwgODU0MzYsIDg1NDQxLCA4NTQ0NywgODU0NTMsIDg1NDU4LCA4NTQ2MywgCisgICAgODU0NjksIDg1NDc0LCA4NTQ4MCwgODU0ODYsIDg1NDkxLCA4NTQ5NywgODU1MDMsIDg1NTA4LCA4NTUxNCwgODU1MjAsIAorICAgIDg1NTI2LCA4NTUzMiwgODU1MzgsIDg1NTQyLCA4NTU0NywgODU1NTEsIDg1NTU2LCA4NTU2MCwgODU1NjUsIDg1NTcwLCAKKyAgICA4NTU3NiwgODU1ODIsIDg1NTg4LCA4NTU5MywgODU1OTksIDg1NjA1LCA4NTYxMSwgODU2MTYsIDg1NjIyLCA4NTYyOCwgCisgICAgODU2MzMsIDg1NjM4LCA4NTY0NCwgODU2NDksIDg1NjU1LCA4NTY2MSwgODU2NjYsIDg1NjcyLCA4NTY3OCwgODU2ODMsIAorICAgIDg1Njg5LCA4NTY5NSwgODU3MDEsIDg1NzA3LCA4NTcxMywgODU3MTgsIDg1NzIyLCA4NTcyNywgODU3MjksIDg1NzM0LCAKKyAgICA4NTczOSwgODU3NDUsIDg1NzUwLCA4NTc1NSwgODU3NTksIDg1NzY1LCA4NTc3MCwgODU3NzUsIDg1NzgwLCA4NTc4NSwgCisgICAgODU3OTAsIDg1Nzk1LCA4NTgwMCwgODU4MDYsIDg1ODEyLCA4NTgxOCwgODU4MjYsIDg1ODMwLCA4NTgzNCwgODU4MzgsIAorICAgIDg1ODQyLCA4NTg0NiwgODU4NTAsIDg1ODU1LCA4NTg2MCwgODU4NjUsIDg1ODcwLCA4NTg3NCwgODU4NzksIDg1ODg0LCAKKyAgICA4NTg4OSwgODU4OTQsIDg1ODk5LCA4NTkwNCwgODU5MDksIDg1OTE0LCA4NTkxOCwgODU5MjIsIDg1OTI3LCA4NTkzMiwgCisgICAgODU5MzcsIDg1OTQyLCA4NTk0NiwgODU5NTEsIDg1OTU2LCA4NTk2MSwgODU5NjYsIDg1OTcwLCA4NTk3NSwgODU5ODAsIAorICAgIDg1OTg1LCA4NTk5MCwgODU5OTQsIDg1OTk5LCA4NjAwNCwgODYwMDgsIDg2MDEzLCA4NjAxOCwgODYwMjMsIDg2MDI4LCAKKyAgICA4NjAzMywgODYwMzgsIDg2MDQ1LCA4NjA1MiwgODYwNTYsIDg2MDYxLCA4NjA2NiwgODYwNzEsIDg2MDc2LCA4NjA4MSwgCisgICAgODYwODYsIDg2MDkxLCA4NjA5NiwgODYxMDEsIDg2MTA2LCA4NjExMSwgODYxMTYsIDg2MTIxLCA4NjEyNiwgODYxMzEsIAorICAgIDg2MTM2LCA4NjE0MSwgODYxNDYsIDg2MTUxLCA4NjE1NiwgODYxNjEsIDg2MTY2LCA4NjE3MSwgODYxNzYsIDg2MTgxLCAKKyAgICA4NjE4NiwgODYxOTEsIDg2MTk2LCA4NjIwMSwgMCwgMCwgMCwgODYyMDYsIDg2MjEwLCA4NjIxNSwgODYyMTksIDg2MjI0LCAKKyAgICA4NjIyOSwgMCwgMCwgODYyMzMsIDg2MjM4LCA4NjI0MywgODYyNDcsIDg2MjUyLCA4NjI1NywgMCwgMCwgODYyNjIsIAorICAgIDg2MjY3LCA4NjI3MSwgODYyNzYsIDg2MjgxLCA4NjI4NiwgMCwgMCwgODYyOTEsIDg2Mjk2LCA4NjMwMSwgMCwgMCwgMCwgCisgICAgODYzMDUsIDg2MzA5LCA4NjMxMywgODYzMTcsIDg2MzIwLCA4NjMyNCwgODYzMjgsIDAsIDg2MzMyLCA4NjMzOCwgODYzNDEsIAorICAgIDg2MzQ1LCA4NjM0OCwgODYzNTIsIDg2MzU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjM2MCwgODYzNjYsIAorICAgIDg2MzcyLCA4NjM3OCwgODYzODQsIDAsIDAsIDg2Mzg4LCA4NjM5NCwgODY0MDAsIDg2NDA2LCA4NjQxMiwgODY0MTgsIAorICAgIDg2NDI1LCA4NjQzMiwgODY0MzksIDg2NDQ2LCA4NjQ1MywgODY0NjAsIDAsIDg2NDY3LCA4NjQ3NCwgODY0ODEsIDg2NDg3LCAKKyAgICA4NjQ5NCwgODY1MDEsIDg2NTA4LCA4NjUxNSwgODY1MjEsIDg2NTI4LCA4NjUzNSwgODY1NDIsIDg2NTQ5LCA4NjU1NSwgCisgICAgODY1NjIsIDg2NTY5LCA4NjU3NiwgODY1ODMsIDg2NTg5LCA4NjU5NiwgODY2MDMsIDg2NjEwLCA4NjYxNywgODY2MjQsIAorICAgIDg2NjMxLCA4NjYzOCwgMCwgODY2NDUsIDg2NjUxLCA4NjY1OCwgODY2NjUsIDg2NjcyLCA4NjY3OSwgODY2ODUsIDg2NjkyLCAKKyAgICA4NjY5OSwgODY3MDYsIDg2NzEzLCA4NjcyMCwgODY3MjcsIDg2NzM0LCA4Njc0MCwgODY3NDcsIDg2NzU0LCA4Njc2MSwgCisgICAgODY3NjgsIDAsIDg2Nzc1LCA4Njc4MiwgMCwgODY3ODksIDg2Nzk2LCA4NjgwMywgODY4MTAsIDg2ODE3LCA4NjgyNCwgCisgICAgODY4MzEsIDg2ODM4LCA4Njg0NSwgODY4NTIsIDg2ODU5LCA4Njg2NiwgODY4NzMsIDg2ODgwLCA4Njg4NywgMCwgMCwgCisgICAgODY4OTMsIDg2ODk4LCA4NjkwMywgODY5MDgsIDg2OTEzLCA4NjkxOCwgODY5MjMsIDg2OTI4LCA4NjkzMywgODY5MzgsIAorICAgIDg2OTQzLCA4Njk0OCwgODY5NTMsIDg2OTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Njk2MywgODY5NzAsIAorICAgIDg2OTc3LCA4Njk4NCwgODY5OTEsIDg2OTk4LCA4NzAwNSwgODcwMTIsIDg3MDE5LCA4NzAyNiwgODcwMzMsIDg3MDQwLCAKKyAgICA4NzA0NywgODcwNTQsIDg3MDYxLCA4NzA2OCwgODcwNzUsIDg3MDgyLCA4NzA4OSwgODcwOTYsIDg3MTA0LCA4NzExMiwgCisgICAgODcxMTksIDg3MTI2LCA4NzEzMSwgODcxMzksIDg3MTQ3LCA4NzE1NCwgODcxNjEsIDg3MTY2LCA4NzE3MywgODcxNzgsIAorICAgIDg3MTgzLCA4NzE5MCwgODcxOTUsIDg3MjAwLCA4NzIwNSwgODcyMTMsIDg3MjE4LCA4NzIyMywgODcyMzAsIDg3MjM1LCAKKyAgICA4NzI0MCwgODcyNDcsIDg3MjU0LCA4NzI1OSwgODcyNjQsIDg3MjY5LCA4NzI3NCwgODcyNzksIDg3Mjg0LCA4NzI4OSwgCisgICAgODcyOTQsIDg3Mjk5LCA4NzMwNiwgODczMTEsIDg3MzE4LCA4NzMyMywgODczMjgsIDg3MzMzLCA4NzMzOCwgODczNDMsIAorICAgIDg3MzQ4LCA4NzM1MywgODczNTgsIDg3MzYzLCA4NzM2OCwgODczNzMsIDg3MzgwLCA4NzM4NywgODczOTQsIDg3NDAxLCAKKyAgICA4NzQwNywgODc0MTIsIDg3NDE5LCA4NzQyNCwgODc0MjksIDg3NDM4LCA4NzQ0NSwgODc0NTQsIDg3NDYxLCA4NzQ2NiwgCisgICAgODc0NzEsIDg3NDc5LCA4NzQ4NCwgODc0ODksIDg3NDk0LCA4NzQ5OSwgODc1MDQsIDg3NTExLCA4NzUxNiwgODc1MjEsIAorICAgIDg3NTI2LCA4NzUzMSwgODc1MzYsIDg3NTQzLCA4NzU1MCwgODc1NTcsIDg3NTY0LCA4NzU3MSwgODc1NzgsIDg3NTg1LCAKKyAgICA4NzU5MiwgODc1OTksIDg3NjA2LCA4NzYxMywgODc2MjAsIDg3NjI3LCA4NzYzNCwgODc2NDEsIDg3NjQ4LCA4NzY1NSwgCisgICAgODc2NjIsIDg3NjY5LCA4NzY3NiwgODc2ODMsIDg3NjkwLCA4NzY5NywgODc3MDQsIDg3NzExLCA4NzcxOCwgODc3MjUsIAorICAgIDg3NzMyLCAwLCAwLCAwLCAwLCAwLCA4NzczOSwgODc3NDcsIDg3NzU1LCAwLCAwLCAwLCAwLCA4Nzc2MCwgODc3NjQsIAorICAgIDg3NzY4LCA4Nzc3MiwgODc3NzYsIDg3NzgwLCA4Nzc4NCwgODc3ODgsIDg3NzkyLCA4Nzc5NiwgODc4MDEsIDg3ODA2LCAKKyAgICA4NzgxMSwgODc4MTYsIDg3ODIxLCA4NzgyNiwgODc4MzEsIDg3ODM2LCA4Nzg0MSwgODc4NDcsIDg3ODUzLCA4Nzg1OSwgCisgICAgODc4NjYsIDg3ODczLCA4Nzg4MCwgODc4ODcsIDg3ODk0LCA4NzkwMSwgODc5MDcsIDg3OTEzLCA4NzkxOSwgODc5MjYsIAorICAgIDg3OTMzLCA4Nzk0MCwgODc5NDcsIDg3OTU0LCA4Nzk2MSwgODc5NjgsIDg3OTc1LCA4Nzk4MiwgODc5ODksIDg3OTk2LCAKKyAgICA4ODAwMywgODgwMTAsIDg4MDE3LCAwLCAwLCAwLCA4ODAyNCwgODgwMzIsIDg4MDQwLCA4ODA0OCwgODgwNTYsIDg4MDY0LCAKKyAgICA4ODA3NCwgODgwODQsIDg4MDkyLCA4ODEwMCwgODgxMDgsIDg4MTE2LCA4ODEyNCwgODgxMzAsIDg4MTM3LCA4ODE0NiwgCisgICAgODgxNTUsIDg4MTY0LCA4ODE3MywgODgxODIsIDg4MTkxLCA4ODIwMSwgODgyMTIsIDg4MjIyLCA4ODIzMywgODgyNDIsIAorICAgIDg4MjUxLCA4ODI2MCwgODgyNzAsIDg4MjgxLCA4ODI5MSwgODgzMDIsIDg4MzEzLCA4ODMyMiwgODgzMzAsIDg4MzM2LCAKKyAgICA4ODM0MiwgODgzNDgsIDg4MzU0LCA4ODM2MiwgODgzNzAsIDg4Mzc2LCA4ODM4MywgODgzOTMsIDg4NDAwLCA4ODQwNywgCisgICAgODg0MTQsIDg4NDIxLCA4ODQyOCwgODg0MzgsIDg4NDQ1LCA4ODQ1MiwgODg0NjAsIDg4NDY4LCA4ODQ3NywgODg0ODYsIAorICAgIDg4NDk1LCA4ODUwNCwgODg1MTMsIDg4NTIxLCA4ODUzMCwgODg1MzksIDg4NTQ4LCA4ODU1MiwgODg1NTksIDg4NTY0LCAKKyAgICA4ODU2OSwgODg1NzMsIDg4NTc3LCA4ODU4MSwgODg1ODUsIDg4NTkwLCA4ODU5NSwgODg2MDEsIDg4NjA3LCA4ODYxMSwgCisgICAgODg2MTcsIDg4NjIxLCA4ODYyNSwgODg2MjksIDg4NjMzLCA4ODYzNywgODg2NDEsIDg4NjQ3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzEsIDg4Njc4LCA4ODY4MywgODg2ODgsIDg4NjkzLCA4ODY5OCwgCisgICAgODg3MDMsIDg4NzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODcwOCwgODg3MTUsIDg4NzI0LCA4ODczMywgODg3NDAsIDg4NzQ3LCA4ODc1NCwgCi0gICAgODg3NjEsIDg4NzY4LCA4ODc3NSwgODg3ODEsIDg4Nzg4LCA4ODc5NSwgODg4MDIsIDg4ODA5LCA4ODgxNiwgODg4MjMsIAotICAgIDg4ODMwLCA4ODgzNywgODg4NDYsIDg4ODUzLCA4ODg2MCwgODg4NjcsIDg4ODc0LCA4ODg4MSwgODg4ODgsIDg4ODk1LCAKLSAgICA4ODkwMiwgODg5MTEsIDg4OTE4LCA4ODkyNSwgODg5MzIsIDg4OTM5LCA4ODk0NiwgODg5NTMsIDg4OTYyLCA4ODk2OSwgCi0gICAgODg5NzYsIDg4OTgzLCA4ODk5MCwgODg5OTksIDg5MDA2LCA4OTAxMywgODkwMjAsIDg5MDI4LCA4OTAzNywgMCwgMCwgCi0gICAgODkwNDYsIDg5MDUwLCA4OTA1NCwgODkwNTksIDg5MDY0LCA4OTA2OSwgODkwNzQsIDg5MDc4LCA4OTA4MywgODkwODgsIAotICAgIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMiwgODkxMTYsIDg5MTIxLCA4OTEyNiwgODkxMzEsIDg5MTM1LCAKLSAgICA4OTE0MCwgODkxNDUsIDg5MTQ5LCA4OTE1NCwgODkxNTksIDg5MTY0LCA4OTE2OSwgODkxNzQsIDg5MTc5LCAwLCAwLCAwLCAKLSAgICA4OTE4NCwgODkxODgsIDg5MTkzLCA4OTE5OCwgODkyMDIsIDg5MjA3LCA4OTIxMSwgODkyMTYsIDg5MjIxLCA4OTIyNiwgCi0gICAgODkyMzEsIDg5MjM1LCA4OTIzOSwgODkyNDQsIDg5MjQ5LCA4OTI1NCwgODkyNTksIDg5MjY0LCA4OTI2OSwgODkyNzMsIAotICAgIDg5Mjc4LCA4OTI4MywgODkyODgsIDg5MjkzLCA4OTI5OCwgODkzMDMsIDg5MzA3LCA4OTMxMSwgODkzMTYsIDg5MzIxLCAKLSAgICA4OTMyNiwgODkzMzEsIDg5MzM2LCA4OTM0MSwgODkzNDYsIDg5MzUxLCA4OTM1NiwgODkzNjEsIDg5MzY2LCA4OTM3MSwgCi0gICAgODkzNzYsIDg5MzgxLCA4OTM4NiwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3MTMsIDg4NzIwLCA4ODcyOSwgODg3MzgsIDg4NzQ1LCA4ODc1MiwgODg3NTksIAorICAgIDg4NzY2LCA4ODc3MywgODg3ODAsIDg4Nzg2LCA4ODc5MywgODg4MDAsIDg4ODA3LCA4ODgxNCwgODg4MjEsIDg4ODI4LCAKKyAgICA4ODgzNSwgODg4NDIsIDg4ODUxLCA4ODg1OCwgODg4NjUsIDg4ODcyLCA4ODg3OSwgODg4ODYsIDg4ODkzLCA4ODkwMCwgCisgICAgODg5MDcsIDg4OTE2LCA4ODkyMywgODg5MzAsIDg4OTM3LCA4ODk0NCwgODg5NTEsIDg4OTU4LCA4ODk2NywgODg5NzQsIAorICAgIDg4OTgxLCA4ODk4OCwgODg5OTUsIDg5MDA0LCA4OTAxMSwgODkwMTgsIDg5MDI1LCA4OTAzMywgODkwNDIsIDAsIDAsIAorICAgIDg5MDUxLCA4OTA1NSwgODkwNTksIDg5MDY0LCA4OTA2OSwgODkwNzQsIDg5MDc5LCA4OTA4MywgODkwODgsIDg5MDkzLCAKKyAgICA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMywgODkxMTcsIDg5MTIxLCA4OTEyNiwgODkxMzEsIDg5MTM2LCA4OTE0MCwgCisgICAgODkxNDUsIDg5MTUwLCA4OTE1NCwgODkxNTksIDg5MTY0LCA4OTE2OSwgODkxNzQsIDg5MTc5LCA4OTE4NCwgMCwgMCwgMCwgCisgICAgODkxODksIDg5MTkzLCA4OTE5OCwgODkyMDMsIDg5MjA3LCA4OTIxMiwgODkyMTYsIDg5MjIxLCA4OTIyNiwgODkyMzEsIAorICAgIDg5MjM2LCA4OTI0MCwgODkyNDQsIDg5MjQ5LCA4OTI1NCwgODkyNTksIDg5MjY0LCA4OTI2OSwgODkyNzQsIDg5Mjc4LCAKKyAgICA4OTI4MywgODkyODgsIDg5MjkzLCA4OTI5OCwgODkzMDMsIDg5MzA4LCA4OTMxMiwgODkzMTYsIDg5MzIxLCA4OTMyNiwgCisgICAgODkzMzEsIDg5MzM2LCA4OTM0MSwgODkzNDYsIDg5MzUxLCA4OTM1NiwgODkzNjEsIDg5MzY2LCA4OTM3MSwgODkzNzYsIAorICAgIDg5MzgxLCA4OTM4NiwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQxNiwgODk0MjEsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NDIxLCA4OTQyNSwgCi0gICAgODk0MzAsIDg5NDM1LCA4OTQ0MCwgODk0NDQsIDg5NDQ5LCA4OTQ1NCwgODk0NTksIDg5NDY0LCA4OTQ2OCwgODk0NzIsIAotICAgIDg5NDc3LCA4OTQ4MiwgODk0ODcsIDg5NDkyLCA4OTQ5NiwgODk1MDEsIDg5NTA2LCA4OTUxMSwgODk1MTYsIDg5NTIxLCAKLSAgICA4OTUyNiwgODk1MzAsIDg5NTM1LCA4OTU0MCwgODk1NDUsIDg5NTUwLCA4OTU1NSwgODk1NjAsIDg5NTY1LCAwLCA4OTU3MCwgCi0gICAgODk1NzUsIDg5NTgwLCA4OTU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk1OTIsIDg5NTk3LCAKLSAgICA4OTYwMiwgODk2MDcsIDg5NjEyLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMiwgODk2MzcsIDg5NjQyLCA4OTY0NywgCi0gICAgODk2NTIsIDg5NjU3LCA4OTY2MiwgODk2NjcsIDg5NjcyLCA4OTY3NywgODk2ODIsIDg5Njg3LCA4OTY5MiwgODk2OTcsIAotICAgIDg5NzAyLCA4OTcwNywgODk3MTIsIDg5NzE3LCA4OTcyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk0MjYsIDg5NDMwLCAKKyAgICA4OTQzNSwgODk0NDAsIDg5NDQ1LCA4OTQ0OSwgODk0NTQsIDg5NDU5LCA4OTQ2NCwgODk0NjksIDg5NDczLCA4OTQ3NywgCisgICAgODk0ODIsIDg5NDg3LCA4OTQ5MiwgODk0OTcsIDg5NTAxLCA4OTUwNiwgODk1MTEsIDg5NTE2LCA4OTUyMSwgODk1MjYsIAorICAgIDg5NTMxLCA4OTUzNSwgODk1NDAsIDg5NTQ1LCA4OTU1MCwgODk1NTUsIDg5NTYwLCA4OTU2NSwgODk1NzAsIDAsIDg5NTc1LCAKKyAgICA4OTU4MCwgODk1ODUsIDg5NTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTU5NywgODk2MDIsIAorICAgIDg5NjA3LCA4OTYxMiwgODk2MTcsIDg5NjIyLCA4OTYyNywgODk2MzIsIDg5NjM3LCA4OTY0MiwgODk2NDcsIDg5NjUyLCAKKyAgICA4OTY1NywgODk2NjIsIDg5NjY3LCA4OTY3MiwgODk2NzcsIDg5NjgyLCA4OTY4NywgODk2OTIsIDg5Njk3LCA4OTcwMiwgCisgICAgODk3MDcsIDg5NzEyLCA4OTcxNywgODk3MjIsIDg5NzI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTcyOSwgODk3MzQsIDg5NzM5LCAKLSAgICA4OTc0NCwgODk3NDksIDg5NzU0LCA4OTc1OSwgODk3NjQsIDg5NzY5LCA4OTc3NCwgODk3NzksIDg5Nzg0LCA4OTc4OSwgCi0gICAgODk3OTQsIDg5Nzk5LCA4OTgwNCwgODk4MDksIDg5ODE0LCA4OTgxOSwgODk4MjQsIDg5ODI5LCA4OTgzNCwgODk4MzksIAotICAgIDg5ODQ0LCA4OTg0OSwgODk4NTQsIDg5ODU5LCA4OTg2MywgODk4NjcsIDg5ODcxLCAwLCA4OTg3NiwgODk4ODIsIDg5ODg3LCAKLSAgICA4OTg5MiwgODk4OTcsIDg5OTAyLCA4OTkwOCwgODk5MTQsIDg5OTIwLCA4OTkyNiwgODk5MzIsIDg5OTM4LCA4OTk0NCwgCi0gICAgODk5NTAsIDg5OTU2LCA4OTk2MiwgODk5NjgsIDg5OTc0LCA4OTk4MCwgODk5ODUsIDg5OTkxLCA4OTk5NywgOTAwMDIsIAotICAgIDkwMDA4LCA5MDAxMywgOTAwMTksIDkwMDI1LCA5MDAzMCwgOTAwMzYsIDkwMDQyLCA5MDA0NywgOTAwNTMsIDkwMDU5LCAKLSAgICA5MDA2NCwgOTAwNzAsIDkwMDc2LCA5MDA4MiwgMCwgMCwgMCwgMCwgOTAwODcsIDkwMDkzLCA5MDA5OSwgOTAxMDUsIAotICAgIDkwMTExLCA5MDExNywgOTAxMjMsIDkwMTI5LCA5MDEzNSwgOTAxNDIsIDkwMTQ3LCA5MDE1MiwgOTAxNTgsIDkwMTY0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTczNCwgODk3MzksIDg5NzQ0LCAKKyAgICA4OTc0OSwgODk3NTQsIDg5NzU5LCA4OTc2NCwgODk3NjksIDg5Nzc0LCA4OTc3OSwgODk3ODQsIDg5Nzg5LCA4OTc5NCwgCisgICAgODk3OTksIDg5ODA0LCA4OTgwOSwgODk4MTQsIDg5ODE5LCA4OTgyNCwgODk4MjksIDg5ODM0LCA4OTgzOSwgODk4NDQsIAorICAgIDg5ODQ5LCA4OTg1NCwgODk4NTksIDg5ODY0LCA4OTg2OCwgODk4NzIsIDg5ODc2LCAwLCA4OTg4MSwgODk4ODcsIDg5ODkyLCAKKyAgICA4OTg5NywgODk5MDIsIDg5OTA3LCA4OTkxMywgODk5MTksIDg5OTI1LCA4OTkzMSwgODk5MzcsIDg5OTQzLCA4OTk0OSwgCisgICAgODk5NTUsIDg5OTYxLCA4OTk2NywgODk5NzMsIDg5OTc5LCA4OTk4NSwgODk5OTAsIDg5OTk2LCA5MDAwMiwgOTAwMDcsIAorICAgIDkwMDEzLCA5MDAxOCwgOTAwMjQsIDkwMDMwLCA5MDAzNSwgOTAwNDEsIDkwMDQ3LCA5MDA1MiwgOTAwNTgsIDkwMDY0LCAKKyAgICA5MDA2OSwgOTAwNzUsIDkwMDgxLCA5MDA4NywgMCwgMCwgMCwgMCwgOTAwOTIsIDkwMDk4LCA5MDEwNCwgOTAxMTAsIAorICAgIDkwMTE2LCA5MDEyMiwgOTAxMjgsIDkwMTM0LCA5MDE0MCwgOTAxNDcsIDkwMTUyLCA5MDE1NywgOTAxNjMsIDkwMTY5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDE3MCwgOTAxNzUsIDkwMTgwLCAKLSAgICA5MDE4NSwgOTAxOTEsIDkwMTk2LCA5MDIwMiwgOTAyMDgsIDkwMjE0LCA5MDIyMCwgOTAyMjcsIDkwMjMzLCA5MDI0MCwgCi0gICAgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIAotICAgIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCAKLSAgICA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgCi0gICAgOTAzOTUsIDkwNDAxLCA5MDQwNiwgOTA0MTIsIDkwNDE4LCA5MDQyNCwgOTA0MzAsIDkwNDM3LCA5MDQ0MywgOTA0NTAsIAotICAgIDkwNDU1LCA5MDQ2MCwgOTA0NjUsIDkwNDcwLCA5MDQ3NSwgOTA0ODAsIDkwNDg1LCA5MDQ5MCwgOTA0OTUsIDkwNTAwLCAKLSAgICA5MDUwNSwgOTA1MTAsIDkwNTE1LCA5MDUyMCwgOTA1MjUsIDkwNTMwLCA5MDUzNSwgOTA1NDAsIDkwNTQ1LCA5MDU1MCwgCi0gICAgOTA1NTUsIDkwNTYwLCA5MDU2NSwgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkwLCA5MDU5NSwgOTA2MDAsIAotICAgIDkwNjA1LCA5MDYxMCwgOTA2MTUsIDkwNjIwLCA5MDYyNSwgOTA2MzAsIDkwNjM1LCA5MDY0MCwgOTA2NDUsIDkwNjUwLCAKLSAgICA5MDY1NSwgOTA2NjAsIDkwNjY1LCA5MDY3MCwgOTA2NzUsIDkwNjgwLCA5MDY4NSwgOTA2OTAsIDkwNjk1LCA5MDcwMCwgCi0gICAgOTA3MDUsIDkwNzEwLCA5MDcxNSwgOTA3MjAsIDkwNzI1LCA5MDczMCwgOTA3MzUsIDkwNzQwLCA5MDc0NSwgOTA3NTAsIAotICAgIDkwNzU1LCA5MDc2MCwgOTA3NjUsIDkwNzcwLCA5MDc3NSwgOTA3ODAsIDkwNzg1LCA5MDc5MCwgOTA3OTUsIDkwODAwLCAKLSAgICA5MDgwNSwgOTA4MTAsIDkwODE1LCA5MDgyMCwgOTA4MjUsIDkwODMwLCA5MDgzNSwgOTA4NDAsIDkwODQ1LCA5MDg1MCwgCi0gICAgOTA4NTUsIDkwODYwLCA5MDg2NSwgOTA4NjksIDkwODczLCA5MDg3OCwgOTA4ODMsIDkwODg4LCA5MDg5MywgOTA4OTgsIAotICAgIDkwOTAzLCA5MDkwOCwgOTA5MTMsIDkwOTE4LCA5MDkyMywgOTA5MjgsIDkwOTMyLCA5MDkzNiwgOTA5NDAsIDkwOTQ0LCAKLSAgICA5MDk0OCwgOTA5NTIsIDkwOTU2LCA5MDk2MSwgOTA5NjYsIDAsIDAsIDkwOTcxLCA5MDk3NiwgOTA5ODAsIDkwOTg0LCAKLSAgICA5MDk4OCwgOTA5OTIsIDkwOTk2LCA5MTAwMCwgOTEwMDQsIDkxMDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDE3NSwgOTAxODAsIDkwMTg1LCAKKyAgICA5MDE5MCwgOTAxOTYsIDkwMjAxLCA5MDIwNywgOTAyMTMsIDkwMjE5LCA5MDIyNSwgOTAyMzIsIDkwMjM4LCA5MDI0NSwgCisgICAgOTAyNTAsIDkwMjU1LCA5MDI2MCwgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgOTAyOTUsIAorICAgIDkwMzAwLCA5MDMwNSwgOTAzMTAsIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIDkwMzQ1LCAKKyAgICA5MDM1MCwgOTAzNTUsIDkwMzYwLCA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCA5MDM5NSwgCisgICAgOTA0MDAsIDkwNDA2LCA5MDQxMSwgOTA0MTcsIDkwNDIzLCA5MDQyOSwgOTA0MzUsIDkwNDQyLCA5MDQ0OCwgOTA0NTUsIAorICAgIDkwNDYwLCA5MDQ2NSwgOTA0NzAsIDkwNDc1LCA5MDQ4MCwgOTA0ODUsIDkwNDkwLCA5MDQ5NSwgOTA1MDAsIDkwNTA1LCAKKyAgICA5MDUxMCwgOTA1MTUsIDkwNTIwLCA5MDUyNSwgOTA1MzAsIDkwNTM1LCA5MDU0MCwgOTA1NDUsIDkwNTUwLCA5MDU1NSwgCisgICAgOTA1NjAsIDkwNTY1LCA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTAsIDkwNTk1LCA5MDYwMCwgOTA2MDUsIAorICAgIDkwNjEwLCA5MDYxNSwgOTA2MjAsIDkwNjI1LCA5MDYzMCwgOTA2MzUsIDkwNjQwLCA5MDY0NSwgOTA2NTAsIDkwNjU1LCAKKyAgICA5MDY2MCwgOTA2NjUsIDkwNjcwLCA5MDY3NSwgOTA2ODAsIDkwNjg1LCA5MDY5MCwgOTA2OTUsIDkwNzAwLCA5MDcwNSwgCisgICAgOTA3MTAsIDkwNzE1LCA5MDcyMCwgOTA3MjUsIDkwNzMwLCA5MDczNSwgOTA3NDAsIDkwNzQ1LCA5MDc1MCwgOTA3NTUsIAorICAgIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc1LCA5MDc4MCwgOTA3ODUsIDkwNzkwLCA5MDc5NSwgOTA4MDAsIDkwODA1LCAKKyAgICA5MDgxMCwgOTA4MTUsIDkwODIwLCA5MDgyNSwgOTA4MzAsIDkwODM1LCA5MDg0MCwgOTA4NDUsIDkwODUwLCA5MDg1NSwgCisgICAgOTA4NjAsIDkwODY1LCA5MDg3MCwgOTA4NzQsIDkwODc4LCA5MDg4MywgOTA4ODgsIDkwODkzLCA5MDg5OCwgOTA5MDMsIAorICAgIDkwOTA4LCA5MDkxMywgOTA5MTgsIDkwOTIzLCA5MDkyOCwgOTA5MzMsIDkwOTM3LCA5MDk0MSwgOTA5NDUsIDkwOTQ5LCAKKyAgICA5MDk1MywgOTA5NTcsIDkwOTYxLCA5MDk2NiwgOTA5NzEsIDAsIDAsIDkwOTc2LCA5MDk4MSwgOTA5ODUsIDkwOTg5LCAKKyAgICA5MDk5MywgOTA5OTcsIDkxMDAxLCA5MTAwNSwgOTEwMDksIDkxMDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5MTAxMiwgOTEwMTYsIDkxMDIwLCA5MTAyNCwgOTEwMjgsIDkxMDMyLCAwLCAwLCA5MTAzNywgMCwgCi0gICAgOTEwNDIsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYxLCA5MTA2NiwgOTEwNzEsIDkxMDc2LCA5MTA4MSwgOTEwODYsIAotICAgIDkxMDkxLCA5MTA5NSwgOTExMDAsIDkxMTA1LCA5MTExMCwgOTExMTUsIDkxMTE5LCA5MTEyNCwgOTExMjksIDkxMTM0LCAKLSAgICA5MTEzOSwgOTExNDMsIDkxMTQ4LCA5MTE1MywgOTExNTgsIDkxMTYzLCA5MTE2NywgOTExNzIsIDkxMTc3LCA5MTE4MiwgCi0gICAgOTExODcsIDkxMTkxLCA5MTE5NiwgOTEyMDEsIDkxMjA2LCA5MTIxMSwgOTEyMTYsIDkxMjIxLCA5MTIyNiwgOTEyMzAsIAotICAgIDkxMjM1LCA5MTI0MCwgOTEyNDUsIDkxMjUwLCAwLCA5MTI1NSwgOTEyNjAsIDAsIDAsIDAsIDkxMjY1LCAwLCAwLCA5MTI3MCwgCi0gICAgOTEyNzUsIDkxMjgyLCA5MTI4OSwgOTEyOTYsIDkxMzAzLCA5MTMxMCwgOTEzMTcsIDkxMzI0LCA5MTMzMSwgOTEzMzgsIAotICAgIDkxMzQ1LCA5MTM1MiwgOTEzNTksIDkxMzY2LCA5MTM3MywgOTEzODAsIDkxMzg3LCA5MTM5NCwgOTE0MDEsIDkxNDA4LCAKLSAgICA5MTQxNSwgOTE0MjIsIDAsIDkxNDI5LCA5MTQzNiwgOTE0NDIsIDkxNDQ4LCA5MTQ1NCwgOTE0NjEsIDkxNDY4LCA5MTQ3NiwgCi0gICAgOTE0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDkzLCA5MTQ5OCwgOTE1MDMsIDkxNTA4LCA5MTUxMywgOTE1MTgsIAotICAgIDkxNTIzLCA5MTUyOCwgOTE1MzMsIDkxNTM4LCA5MTU0MywgOTE1NDgsIDkxNTUzLCA5MTU1OCwgOTE1NjMsIDkxNTY4LCAKLSAgICA5MTU3MywgOTE1NzgsIDkxNTgzLCA5MTU4OCwgOTE1OTMsIDkxNTk4LCA5MTYwMywgOTE2MDcsIDkxNjEyLCA5MTYxNywgCi0gICAgOTE2MjMsIDkxNjI3LCAwLCAwLCAwLCA5MTYzMSwgOTE2MzcsIDkxNjQxLCA5MTY0NiwgOTE2NTEsIDkxNjU2LCA5MTY2MCwgCi0gICAgOTE2NjUsIDkxNjY5LCA5MTY3NCwgOTE2NzksIDkxNjgzLCA5MTY4NywgOTE2OTIsIDkxNjk2LCA5MTcwMCwgOTE3MDUsIAotICAgIDkxNzEwLCA5MTcxNCwgOTE3MTksIDkxNzI0LCA5MTcyOSwgOTE3MzQsIDkxNzM5LCA5MTc0NCwgOTE3NDksIDkxNzU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5MTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTEwMTcsIDkxMDIxLCA5MTAyNSwgOTEwMjksIDkxMDMzLCA5MTAzNywgMCwgMCwgOTEwNDIsIDAsIAorICAgIDkxMDQ3LCA5MTA1MSwgOTEwNTYsIDkxMDYxLCA5MTA2NiwgOTEwNzEsIDkxMDc2LCA5MTA4MSwgOTEwODYsIDkxMDkxLCAKKyAgICA5MTA5NiwgOTExMDAsIDkxMTA1LCA5MTExMCwgOTExMTUsIDkxMTIwLCA5MTEyNCwgOTExMjksIDkxMTM0LCA5MTEzOSwgCisgICAgOTExNDQsIDkxMTQ4LCA5MTE1MywgOTExNTgsIDkxMTYzLCA5MTE2OCwgOTExNzIsIDkxMTc3LCA5MTE4MiwgOTExODcsIAorICAgIDkxMTkyLCA5MTE5NiwgOTEyMDEsIDkxMjA2LCA5MTIxMSwgOTEyMTYsIDkxMjIxLCA5MTIyNiwgOTEyMzEsIDkxMjM1LCAKKyAgICA5MTI0MCwgOTEyNDUsIDkxMjUwLCA5MTI1NSwgMCwgOTEyNjAsIDkxMjY1LCAwLCAwLCAwLCA5MTI3MCwgMCwgMCwgOTEyNzUsIAorICAgIDkxMjgwLCA5MTI4NywgOTEyOTQsIDkxMzAxLCA5MTMwOCwgOTEzMTUsIDkxMzIyLCA5MTMyOSwgOTEzMzYsIDkxMzQzLCAKKyAgICA5MTM1MCwgOTEzNTcsIDkxMzY0LCA5MTM3MSwgOTEzNzgsIDkxMzg1LCA5MTM5MiwgOTEzOTksIDkxNDA2LCA5MTQxMywgCisgICAgOTE0MjAsIDkxNDI3LCAwLCA5MTQzNCwgOTE0NDEsIDkxNDQ3LCA5MTQ1MywgOTE0NTksIDkxNDY2LCA5MTQ3MywgOTE0ODEsIAorICAgIDkxNDg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTQ5OCwgOTE1MDMsIDkxNTA4LCA5MTUxMywgOTE1MTgsIDkxNTIzLCAKKyAgICA5MTUyOCwgOTE1MzMsIDkxNTM4LCA5MTU0MywgOTE1NDgsIDkxNTUzLCA5MTU1OCwgOTE1NjMsIDkxNTY4LCA5MTU3MywgCisgICAgOTE1NzgsIDkxNTgzLCA5MTU4OCwgOTE1OTMsIDkxNTk4LCA5MTYwMywgOTE2MDgsIDkxNjEyLCA5MTYxNywgOTE2MjIsIAorICAgIDkxNjI4LCA5MTYzMiwgMCwgMCwgMCwgOTE2MzYsIDkxNjQyLCA5MTY0NiwgOTE2NTEsIDkxNjU2LCA5MTY2MSwgOTE2NjUsIAorICAgIDkxNjcwLCA5MTY3NCwgOTE2NzksIDkxNjg0LCA5MTY4OCwgOTE2OTIsIDkxNjk3LCA5MTcwMSwgOTE3MDUsIDkxNzEwLCAKKyAgICA5MTcxNSwgOTE3MTksIDkxNzI0LCA5MTcyOSwgOTE3MzQsIDkxNzM5LCA5MTc0NCwgOTE3NDksIDkxNzU0LCA5MTc1OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTE3NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNzY0LCAKLSAgICA5MTc3MCwgOTE3NzYsIDkxNzgyLCA5MTc4OCwgOTE3OTQsIDkxODAxLCA5MTgwOCwgOTE4MTUsIDkxODIxLCA5MTgyNywgCi0gICAgOTE4MzMsIDkxODQwLCA5MTg0NywgOTE4NTQsIDkxODYwLCA5MTg2NywgOTE4NzQsIDkxODgxLCA5MTg4OCwgOTE4OTQsIAotICAgIDkxOTAxLCA5MTkwOCwgOTE5MTQsIDkxOTIxLCA5MTkyOCwgOTE5MzUsIDkxOTQyLCA5MTk0OSwgOTE5NTUsIDkxOTYyLCAKLSAgICA5MTk2OSwgOTE5NzYsIDkxOTgyLCA5MTk4OCwgOTE5OTQsIDkyMDAwLCA5MjAwNiwgOTIwMTMsIDkyMDIwLCA5MjAyNiwgCi0gICAgOTIwMzIsIDkyMDM4LCA5MjA0NSwgOTIwNTEsIDkyMDU4LCA5MjA2NSwgOTIwNzIsIDkyMDc4LCA5MjA4NiwgOTIwOTMsIAotICAgIDkyMDk5LCA5MjEwNiwgOTIxMTMsIDkyMTIwLCA5MjEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgOTIxMzMsIDkyMTQxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc2OSwgCisgICAgOTE3NzUsIDkxNzgxLCA5MTc4NywgOTE3OTMsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIDkxODIwLCA5MTgyNiwgOTE4MzIsIAorICAgIDkxODM4LCA5MTg0NSwgOTE4NTIsIDkxODU5LCA5MTg2NSwgOTE4NzIsIDkxODc5LCA5MTg4NiwgOTE4OTMsIDkxODk5LCAKKyAgICA5MTkwNiwgOTE5MTMsIDkxOTE5LCA5MTkyNiwgOTE5MzMsIDkxOTQwLCA5MTk0NywgOTE5NTQsIDkxOTYwLCA5MTk2NywgCisgICAgOTE5NzQsIDkxOTgxLCA5MTk4NywgOTE5OTMsIDkxOTk5LCA5MjAwNSwgOTIwMTEsIDkyMDE4LCA5MjAyNSwgOTIwMzEsIAorICAgIDkyMDM3LCA5MjA0MywgOTIwNTAsIDkyMDU2LCA5MjA2MywgOTIwNzAsIDkyMDc3LCA5MjA4MywgOTIwOTEsIDkyMDk4LCAKKyAgICA5MjEwNCwgOTIxMTEsIDkyMTE4LCA5MjEyNSwgOTIxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMTM4LCA5MjE0NiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIxNDksIDkyMTUzLCA5MjE1OCwgOTIxNjMsIDAsIAotICAgIDkyMTY5LCA5MjE3NCwgMCwgMCwgMCwgMCwgMCwgOTIxNzksIDkyMTg1LCA5MjE5MiwgOTIxOTcsIDkyMjAyLCA5MjIwNiwgCi0gICAgOTIyMTEsIDkyMjE2LCAwLCA5MjIyMSwgOTIyMjYsIDkyMjMxLCAwLCA5MjIzNiwgOTIyNDEsIDkyMjQ2LCA5MjI1MSwgCi0gICAgOTIyNTYsIDkyMjYxLCA5MjI2NiwgOTIyNzEsIDkyMjc2LCA5MjI4MSwgOTIyODYsIDkyMjkwLCA5MjI5NCwgOTIyOTksIAotICAgIDkyMzA0LCA5MjMwOSwgOTIzMTMsIDkyMzE3LCA5MjMyMSwgOTIzMjYsIDkyMzMxLCA5MjMzNiwgOTIzNDEsIDkyMzQ1LCAKLSAgICA5MjM1MCwgOTIzNTQsIDkyMzU5LCAwLCAwLCAwLCAwLCA5MjM2NCwgOTIzNzAsIDkyMzc1LCAwLCAwLCAwLCAwLCA5MjM4MCwgCi0gICAgOTIzODQsIDkyMzg4LCA5MjM5MiwgOTIzOTYsIDkyNDAwLCA5MjQwNSwgOTI0MTAsIDkyNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5MjQyMiwgOTI0MjgsIDkyNDM1LCA5MjQ0MSwgOTI0NDgsIDkyNDU0LCA5MjQ2MCwgOTI0NjYsIDkyNDczLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5MjQ3OSwgOTI0ODcsIDkyNDk1LCA5MjUwMywgOTI1MTEsIDkyNTE5LCA5MjUyNywgOTI1MzUsIAotICAgIDkyNTQzLCA5MjU1MSwgOTI1NTksIDkyNTY3LCA5MjU3NSwgOTI1ODMsIDkyNTkxLCA5MjU5OSwgOTI2MDcsIDkyNjE1LCAKLSAgICA5MjYyMywgOTI2MzEsIDkyNjM5LCA5MjY0NywgOTI2NTUsIDkyNjYzLCA5MjY3MSwgOTI2NzksIDkyNjg3LCA5MjY5NSwgCi0gICAgOTI3MDMsIDkyNzExLCA5MjcxOCwgOTI3MjYsIDkyNzM0LCA5MjczOCwgOTI3NDMsIDkyNzQ4LCA5Mjc1MywgOTI3NTgsIAotICAgIDkyNzYzLCA5Mjc2OCwgOTI3NzMsIDkyNzc3LCA5Mjc4MiwgOTI3ODYsIDkyNzkxLCA5Mjc5NSwgOTI4MDAsIDkyODA0LCAKLSAgICA5MjgwOSwgOTI4MTQsIDkyODE5LCA5MjgyNCwgOTI4MjksIDkyODM0LCA5MjgzOSwgOTI4NDQsIDkyODQ5LCA5Mjg1NCwgCi0gICAgOTI4NTksIDkyODY0LCA5Mjg2OSwgOTI4NzQsIDkyODc5LCA5Mjg4NCwgOTI4ODksIDkyODk0LCA5Mjg5OSwgOTI5MDQsIAotICAgIDkyOTA5LCA5MjkxNCwgOTI5MTksIDkyOTI0LCA5MjkyOSwgOTI5MzQsIDkyOTM5LCA5Mjk0NCwgOTI5NDksIDkyOTU0LCAKLSAgICA5Mjk1OSwgOTI5NjQsIDkyOTY5LCA5Mjk3NCwgOTI5NzksIDkyOTg0LCA5Mjk4OSwgOTI5OTQsIDAsIDAsIDAsIDkyOTk5LCAKLSAgICA5MzAwNCwgOTMwMTMsIDkzMDIxLCA5MzAzMCwgOTMwMzksIDkzMDUwLCA5MzA2MSwgOTMwNjgsIDkzMDc1LCA5MzA4MiwgCi0gICAgOTMwODksIDkzMDk2LCA5MzEwMywgOTMxMTAsIDkzMTE3LCA5MzEyNCwgOTMxMzEsIDkzMTM4LCA5MzE0NSwgOTMxNTIsIAotICAgIDkzMTU5LCA5MzE2NiwgOTMxNzMsIDkzMTgwLCA5MzE4NywgOTMxOTQsIDkzMjAxLCA5MzIwOCwgMCwgMCwgOTMyMTUsIAotICAgIDkzMjIxLCA5MzIyNywgOTMyMzMsIDkzMjM5LCA5MzI0NiwgOTMyNTMsIDkzMjYxLCA5MzI2OSwgOTMyNzYsIDkzMjgzLCAKLSAgICA5MzI5MCwgOTMyOTcsIDkzMzA0LCA5MzMxMSwgOTMzMTgsIDkzMzI1LCA5MzMzMiwgOTMzMzksIDkzMzQ2LCA5MzM1MywgCi0gICAgOTMzNjAsIDkzMzY3LCA5MzM3NCwgOTMzODEsIDkzMzg4LCA5MzM5NSwgMCwgMCwgMCwgMCwgMCwgOTM0MDIsIDkzNDA4LCAKLSAgICA5MzQxNCwgOTM0MjAsIDkzNDI2LCA5MzQzMywgOTM0NDAsIDkzNDQ4LCA5MzQ1NiwgOTM0NjIsIDkzNDY4LCA5MzQ3NSwgCi0gICAgOTM0ODEsIDkzNDg3LCA5MzQ5MywgOTM0OTksIDkzNTA2LCA5MzUxMywgOTM1MjAsIDkzNTI3LCA5MzUzNCwgOTM1NDEsIAotICAgIDkzNTQ4LCA5MzU1NSwgOTM1NjIsIDkzNTY5LCA5MzU3NiwgOTM1ODMsIDkzNTkwLCA5MzU5NywgOTM2MDQsIDkzNjExLCAKLSAgICA5MzYxOCwgOTM2MjUsIDkzNjMyLCA5MzYzOSwgOTM2NDYsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIDkzNjc0LCA5MzY4MSwgCi0gICAgOTM2ODgsIDkzNjk1LCA5MzcwMiwgOTM3MDksIDkzNzE2LCA5MzcyMywgOTM3MzAsIDkzNzM3LCA5Mzc0NCwgOTM3NTEsIAotICAgIDkzNzU4LCA5Mzc2NSwgOTM3NzIsIDkzNzc5LCA5Mzc4NiwgOTM3OTMsIDkzODAwLCA5MzgwNywgOTM4MTQsIDkzODIxLCAKLSAgICA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg3MCwgOTM4NzcsIDkzODg0LCA5Mzg5MSwgCi0gICAgOTM4OTgsIDkzOTA1LCA5MzkxMiwgOTM5MTksIDkzOTI2LCA5MzkzMywgOTM5NDAsIDkzOTQ3LCA5Mzk1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIxNTQsIDkyMTU4LCA5MjE2MywgOTIxNjgsIDAsIAorICAgIDkyMTc0LCA5MjE3OSwgMCwgMCwgMCwgMCwgMCwgOTIxODQsIDkyMTkwLCA5MjE5NywgOTIyMDIsIDkyMjA3LCA5MjIxMSwgCisgICAgOTIyMTYsIDkyMjIxLCAwLCA5MjIyNiwgOTIyMzEsIDkyMjM2LCAwLCA5MjI0MSwgOTIyNDYsIDkyMjUxLCA5MjI1NiwgCisgICAgOTIyNjEsIDkyMjY2LCA5MjI3MSwgOTIyNzYsIDkyMjgxLCA5MjI4NiwgOTIyOTEsIDkyMjk1LCA5MjI5OSwgOTIzMDQsIAorICAgIDkyMzA5LCA5MjMxNCwgOTIzMTgsIDkyMzIyLCA5MjMyNiwgOTIzMzEsIDkyMzM2LCA5MjM0MSwgOTIzNDYsIDkyMzUwLCAKKyAgICA5MjM1NSwgOTIzNTksIDkyMzY0LCAwLCAwLCAwLCAwLCA5MjM2OSwgOTIzNzUsIDkyMzgwLCAwLCAwLCAwLCAwLCA5MjM4NSwgCisgICAgOTIzODksIDkyMzkzLCA5MjM5NywgOTI0MDEsIDkyNDA1LCA5MjQxMCwgOTI0MTUsIDkyNDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5MjQyNywgOTI0MzMsIDkyNDQwLCA5MjQ0NiwgOTI0NTMsIDkyNDU5LCA5MjQ2NSwgOTI0NzEsIDkyNDc4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5MjQ4NCwgOTI0OTIsIDkyNTAwLCA5MjUwOCwgOTI1MTYsIDkyNTI0LCA5MjUzMiwgOTI1NDAsIAorICAgIDkyNTQ4LCA5MjU1NiwgOTI1NjQsIDkyNTcyLCA5MjU4MCwgOTI1ODgsIDkyNTk2LCA5MjYwNCwgOTI2MTIsIDkyNjIwLCAKKyAgICA5MjYyOCwgOTI2MzYsIDkyNjQ0LCA5MjY1MiwgOTI2NjAsIDkyNjY4LCA5MjY3NiwgOTI2ODQsIDkyNjkyLCA5MjcwMCwgCisgICAgOTI3MDgsIDkyNzE2LCA5MjcyMywgOTI3MzEsIDkyNzM5LCA5Mjc0MywgOTI3NDgsIDkyNzUzLCA5Mjc1OCwgOTI3NjMsIAorICAgIDkyNzY4LCA5Mjc3MywgOTI3NzgsIDkyNzgyLCA5Mjc4NywgOTI3OTEsIDkyNzk2LCA5MjgwMCwgOTI4MDUsIDkyODA5LCAKKyAgICA5MjgxNCwgOTI4MTksIDkyODI0LCA5MjgyOSwgOTI4MzQsIDkyODM5LCA5Mjg0NCwgOTI4NDksIDkyODU0LCA5Mjg1OSwgCisgICAgOTI4NjQsIDkyODY5LCA5Mjg3NCwgOTI4NzksIDkyODg0LCA5Mjg4OSwgOTI4OTQsIDkyODk5LCA5MjkwNCwgOTI5MDksIAorICAgIDkyOTE0LCA5MjkxOSwgOTI5MjQsIDkyOTI5LCA5MjkzNCwgOTI5MzksIDkyOTQ0LCA5Mjk0OSwgOTI5NTQsIDkyOTU5LCAKKyAgICA5Mjk2NCwgOTI5NjksIDkyOTc0LCA5Mjk3OSwgOTI5ODQsIDkyOTg5LCA5Mjk5NCwgOTI5OTksIDAsIDAsIDAsIDkzMDA0LCAKKyAgICA5MzAwOSwgOTMwMTgsIDkzMDI2LCA5MzAzNSwgOTMwNDQsIDkzMDU1LCA5MzA2NiwgOTMwNzMsIDkzMDgwLCA5MzA4NywgCisgICAgOTMwOTQsIDkzMTAxLCA5MzEwOCwgOTMxMTUsIDkzMTIyLCA5MzEyOSwgOTMxMzYsIDkzMTQzLCA5MzE1MCwgOTMxNTcsIAorICAgIDkzMTY0LCA5MzE3MSwgOTMxNzgsIDkzMTg1LCA5MzE5MiwgOTMxOTksIDkzMjA2LCA5MzIxMywgMCwgMCwgOTMyMjAsIAorICAgIDkzMjI2LCA5MzIzMiwgOTMyMzgsIDkzMjQ0LCA5MzI1MSwgOTMyNTgsIDkzMjY2LCA5MzI3NCwgOTMyODEsIDkzMjg4LCAKKyAgICA5MzI5NSwgOTMzMDIsIDkzMzA5LCA5MzMxNiwgOTMzMjMsIDkzMzMwLCA5MzMzNywgOTMzNDQsIDkzMzUxLCA5MzM1OCwgCisgICAgOTMzNjUsIDkzMzcyLCA5MzM3OSwgOTMzODYsIDkzMzkzLCA5MzQwMCwgMCwgMCwgMCwgMCwgMCwgOTM0MDcsIDkzNDEzLCAKKyAgICA5MzQxOSwgOTM0MjUsIDkzNDMxLCA5MzQzOCwgOTM0NDUsIDkzNDUzLCA5MzQ2MSwgOTM0NjcsIDkzNDczLCA5MzQ4MCwgCisgICAgOTM0ODYsIDkzNDkyLCA5MzQ5OCwgOTM1MDQsIDkzNTExLCA5MzUxOCwgOTM1MjUsIDkzNTMyLCA5MzUzOSwgOTM1NDYsIAorICAgIDkzNTUzLCA5MzU2MCwgOTM1NjcsIDkzNTc0LCA5MzU4MSwgOTM1ODgsIDkzNTk1LCA5MzYwMiwgOTM2MDksIDkzNjE2LCAKKyAgICA5MzYyMywgOTM2MzAsIDkzNjM3LCA5MzY0NCwgOTM2NTEsIDkzNjU4LCA5MzY2NSwgOTM2NzIsIDkzNjc5LCA5MzY4NiwgCisgICAgOTM2OTMsIDkzNzAwLCA5MzcwNywgOTM3MTQsIDkzNzIxLCA5MzcyOCwgOTM3MzUsIDkzNzQyLCA5Mzc0OSwgOTM3NTYsIAorICAgIDkzNzYzLCA5Mzc3MCwgOTM3NzcsIDkzNzg0LCA5Mzc5MSwgOTM3OTgsIDkzODA1LCA5MzgxMiwgOTM4MTksIDkzODI2LCAKKyAgICA5MzgzMywgOTM4NDAsIDkzODQ3LCA5Mzg1NCwgOTM4NjEsIDkzODY4LCA5Mzg3NSwgOTM4ODIsIDkzODg5LCA5Mzg5NiwgCisgICAgOTM5MDMsIDkzOTEwLCA5MzkxNywgOTM5MjQsIDkzOTMxLCA5MzkzOCwgOTM5NDUsIDkzOTUyLCA5Mzk1OSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTM5NjEsIDkzOTY1LCA5Mzk2OSwgOTM5NzMsIDkzOTc3LCA5Mzk4MSwgOTM5ODUsIDkzOTg5LCAKLSAgICA5Mzk5MywgOTM5OTcsIDk0MDAyLCA5NDAwNywgOTQwMTIsIDk0MDE3LCA5NDAyMiwgOTQwMjcsIDk0MDMyLCA5NDAzNywgCi0gICAgOTQwNDIsIDk0MDQ4LCA5NDA1NCwgOTQwNjAsIDk0MDY3LCA5NDA3NCwgOTQwODEsIDk0MDg4LCA5NDA5NSwgOTQxMDIsIAotICAgIDk0MTA5LCA5NDExNiwgOTQxMjMsIDAsIDk0MTMwLCA5NDEzNCwgOTQxMzgsIDk0MTQyLCA5NDE0NiwgOTQxNTAsIDk0MTUzLCAKLSAgICA5NDE1NywgOTQxNjAsIDk0MTY0LCA5NDE2NywgOTQxNzEsIDk0MTc1LCA5NDE4MCwgOTQxODQsIDk0MTg5LCA5NDE5MiwgCi0gICAgOTQxOTYsIDk0MTk5LCA5NDIwMywgOTQyMDYsIDk0MjEwLCA5NDIxNCwgOTQyMTgsIDk0MjIyLCA5NDIyNiwgOTQyMzAsIAotICAgIDk0MjM0LCA5NDIzOCwgOTQyNDIsIDk0MjQ2LCA5NDI1MCwgOTQyNTQsIDk0MjU4LCA5NDI2MiwgOTQyNjYsIDk0MjcwLCAKLSAgICA5NDI3NCwgOTQyNzgsIDk0MjgxLCA5NDI4NCwgOTQyODgsIDk0MjkyLCA5NDI5NiwgOTQyOTksIDk0MzAyLCA5NDMwNSwgCi0gICAgOTQzMDksIDk0MzEzLCA5NDMxNywgOTQzMjEsIDk0MzI0LCA5NDMyNywgOTQzMzEsIDk0MzM3LCA5NDM0MywgOTQzNDksIAotICAgIDk0MzU0LCA5NDM2MSwgOTQzNjUsIDk0MzcwLCA5NDM3NCwgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTUsIDk0NDAxLCAKLSAgICA5NDQwNSwgOTQ0MTAsIDk0NDE0LCA5NDQxOSwgOTQ0MjIsIDk0NDI1LCA5NDQyOSwgOTQ0MzQsIDk0NDQwLCA5NDQ0NSwgCi0gICAgOTQ0NTEsIDAsIDAsIDAsIDAsIDk0NDU2LCA5NDQ1OSwgOTQ0NjIsIDk0NDY1LCA5NDQ2OCwgOTQ0NzEsIDk0NDc0LCAKLSAgICA5NDQ3NywgOTQ0ODAsIDk0NDgzLCA5NDQ4NywgOTQ0OTEsIDk0NDk1LCA5NDQ5OSwgOTQ1MDMsIDk0NTA3LCA5NDUxMSwgCi0gICAgOTQ1MTUsIDk0NTE5LCA5NDUyNCwgOTQ1MjksIDk0NTMzLCA5NDUzNiwgOTQ1MzksIDk0NTQyLCA5NDU0NSwgOTQ1NDgsIAotICAgIDk0NTUxLCA5NDU1NCwgOTQ1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk0NTYwLCA5NDU2NSwgOTQ1NzAsIDk0NTc1LCA5NDU3OSwgOTQ1ODQsIDk0NTg4LCA5NDU5MywgOTQ1OTcsIDk0NjAyLCAKLSAgICA5NDYwNiwgOTQ2MTEsIDk0NjE1LCA5NDYyMCwgOTQ2MjQsIDk0NjI5LCA5NDYzNCwgOTQ2MzksIDk0NjQ0LCA5NDY0OSwgCi0gICAgOTQ2NTQsIDk0NjU5LCA5NDY2NCwgOTQ2NjksIDk0Njc0LCA5NDY3OSwgOTQ2ODQsIDk0Njg5LCA5NDY5NCwgOTQ2OTksIAotICAgIDk0NzA0LCA5NDcwOSwgOTQ3MTQsIDk0NzE5LCA5NDcyNCwgOTQ3MjgsIDk0NzMyLCA5NDczNywgOTQ3NDIsIDk0NzQ3LCAKLSAgICA5NDc1MSwgOTQ3NTUsIDk0NzU5LCA5NDc2NCwgOTQ3NjksIDk0Nzc0LCA5NDc3OSwgOTQ3ODMsIDk0Nzg3LCA5NDc5MywgCi0gICAgOTQ3OTgsIDk0ODA0LCA5NDgwOSwgOTQ4MTUsIDk0ODIwLCA5NDgyNiwgOTQ4MzEsIDk0ODM3LCA5NDg0MiwgOTQ4NDcsIAotICAgIDk0ODUyLCA5NDg1NywgOTQ4NjEsIDk0ODY2LCA5NDg3MiwgOTQ4NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDk0ODgxLCA5NDg4OCwgOTQ4OTUsIDk0OTAyLCA5NDkwOSwgOTQ5MTYsIDk0OTIzLCA5NDkzMCwgCi0gICAgOTQ5MzcsIDk0OTQ0LCA5NDk1MSwgOTQ5NTgsIDk0OTY1LCA5NDk3MiwgOTQ5NzksIDk0OTg2LCA5NDk5MywgOTUwMDAsIAotICAgIDk1MDA3LCA5NTAxNCwgOTUwMjEsIDk1MDI4LCA5NTAzNSwgOTUwNDIsIDk1MDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NTA1NiwgOTUwNjMsIDk1MDY5LCA5NTA3NSwgOTUwODEsIDk1MDg3LCA5NTA5MywgOTUwOTksIDk1MTA1LCA5NTExMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOTUxMTcsIDk1MTIyLCA5NTEyNywgOTUxMzIsIDk1MTM3LCA5NTE0MSwgOTUxNDUsIDk1MTQ5LCAKLSAgICA5NTE1NCwgOTUxNTksIDk1MTY0LCA5NTE2OSwgOTUxNzQsIDk1MTc5LCA5NTE4NCwgOTUxODksIDk1MTk0LCA5NTE5OSwgCi0gICAgOTUyMDQsIDk1MjA5LCA5NTIxNCwgOTUyMTksIDk1MjI0LCA5NTIyOSwgOTUyMzQsIDk1MjM5LCA5NTI0NCwgOTUyNDksIAotICAgIDk1MjU0LCA5NTI1OSwgOTUyNjQsIDk1MjY5LCA5NTI3NCwgOTUyNzksIDk1Mjg0LCA5NTI4OSwgOTUyOTQsIDk1Mjk5LCAKLSAgICA5NTMwNCwgOTUzMDksIDk1MzE0LCA5NTMxOSwgOTUzMjUsIDk1MzMwLCA5NTMzNiwgOTUzNDEsIDk1MzQ3LCA5NTM1MiwgCi0gICAgOTUzNTgsIDk1MzY0LCA5NTM2OCwgOTUzNzMsIDk1Mzc3LCAwLCA5NTM4MSwgOTUzODYsIDk1MzkwLCA5NTM5NCwgOTUzOTgsIAotICAgIDk1NDAyLCA5NTQwNiwgOTU0MTAsIDk1NDE0LCA5NTQxOCwgOTU0MjIsIDk1NDI3LCA5NTQzMSwgOTU0MzYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkzOTY2LCA5Mzk3MCwgOTM5NzQsIDkzOTc4LCA5Mzk4MiwgOTM5ODYsIDkzOTkwLCA5Mzk5NCwgCisgICAgOTM5OTgsIDk0MDAyLCA5NDAwNywgOTQwMTIsIDk0MDE3LCA5NDAyMiwgOTQwMjcsIDk0MDMyLCA5NDAzNywgOTQwNDIsIAorICAgIDk0MDQ3LCA5NDA1MywgOTQwNTksIDk0MDY1LCA5NDA3MiwgOTQwNzksIDk0MDg2LCA5NDA5MywgOTQxMDAsIDk0MTA3LCAKKyAgICA5NDExNCwgOTQxMjEsIDk0MTI4LCAwLCA5NDEzNSwgOTQxMzksIDk0MTQzLCA5NDE0NywgOTQxNTEsIDk0MTU1LCA5NDE1OCwgCisgICAgOTQxNjIsIDk0MTY1LCA5NDE2OSwgOTQxNzIsIDk0MTc2LCA5NDE4MCwgOTQxODUsIDk0MTg5LCA5NDE5NCwgOTQxOTcsIAorICAgIDk0MjAxLCA5NDIwNCwgOTQyMDgsIDk0MjExLCA5NDIxNSwgOTQyMTksIDk0MjIzLCA5NDIyNywgOTQyMzEsIDk0MjM1LCAKKyAgICA5NDIzOSwgOTQyNDMsIDk0MjQ3LCA5NDI1MSwgOTQyNTUsIDk0MjU5LCA5NDI2MywgOTQyNjcsIDk0MjcxLCA5NDI3NSwgCisgICAgOTQyNzksIDk0MjgzLCA5NDI4NiwgOTQyODksIDk0MjkzLCA5NDI5NywgOTQzMDEsIDk0MzA0LCA5NDMwNywgOTQzMTAsIAorICAgIDk0MzE0LCA5NDMxOCwgOTQzMjIsIDk0MzI2LCA5NDMyOSwgOTQzMzIsIDk0MzM2LCA5NDM0MiwgOTQzNDgsIDk0MzU0LCAKKyAgICA5NDM1OSwgOTQzNjYsIDk0MzcwLCA5NDM3NSwgOTQzNzksIDk0Mzg0LCA5NDM4OSwgOTQzOTUsIDk0NDAwLCA5NDQwNiwgCisgICAgOTQ0MTAsIDk0NDE1LCA5NDQxOSwgOTQ0MjQsIDk0NDI3LCA5NDQzMCwgOTQ0MzQsIDk0NDM5LCA5NDQ0NSwgOTQ0NTAsIAorICAgIDk0NDU2LCAwLCAwLCAwLCAwLCA5NDQ2MSwgOTQ0NjQsIDk0NDY3LCA5NDQ3MCwgOTQ0NzMsIDk0NDc2LCA5NDQ3OSwgCisgICAgOTQ0ODIsIDk0NDg1LCA5NDQ4OCwgOTQ0OTIsIDk0NDk2LCA5NDUwMCwgOTQ1MDQsIDk0NTA4LCA5NDUxMiwgOTQ1MTYsIAorICAgIDk0NTIwLCA5NDUyNCwgOTQ1MjksIDk0NTM0LCA5NDUzOCwgOTQ1NDEsIDk0NTQ0LCA5NDU0NywgOTQ1NTAsIDk0NTUzLCAKKyAgICA5NDU1NiwgOTQ1NTksIDk0NTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NDU2NSwgOTQ1NzAsIDk0NTc1LCA5NDU4MCwgOTQ1ODQsIDk0NTg5LCA5NDU5MywgOTQ1OTgsIDk0NjAyLCA5NDYwNywgCisgICAgOTQ2MTEsIDk0NjE2LCA5NDYyMCwgOTQ2MjUsIDk0NjI5LCA5NDYzNCwgOTQ2MzksIDk0NjQ0LCA5NDY0OSwgOTQ2NTQsIAorICAgIDk0NjU5LCA5NDY2NCwgOTQ2NjksIDk0Njc0LCA5NDY3OSwgOTQ2ODQsIDk0Njg5LCA5NDY5NCwgOTQ2OTksIDk0NzA0LCAKKyAgICA5NDcwOSwgOTQ3MTQsIDk0NzE5LCA5NDcyNCwgOTQ3MjksIDk0NzMzLCA5NDczNywgOTQ3NDIsIDk0NzQ3LCA5NDc1MiwgCisgICAgOTQ3NTYsIDk0NzYwLCA5NDc2NCwgOTQ3NjksIDk0Nzc0LCA5NDc3OSwgOTQ3ODQsIDk0Nzg4LCA5NDc5MiwgOTQ3OTgsIAorICAgIDk0ODAzLCA5NDgwOSwgOTQ4MTQsIDk0ODIwLCA5NDgyNSwgOTQ4MzEsIDk0ODM2LCA5NDg0MiwgOTQ4NDcsIDk0ODUyLCAKKyAgICA5NDg1NywgOTQ4NjIsIDk0ODY2LCA5NDg3MSwgOTQ4NzcsIDk0ODgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5NDg4NiwgOTQ4OTMsIDk0OTAwLCA5NDkwNywgOTQ5MTQsIDk0OTIxLCA5NDkyOCwgOTQ5MzUsIAorICAgIDk0OTQyLCA5NDk0OSwgOTQ5NTYsIDk0OTYzLCA5NDk3MCwgOTQ5NzcsIDk0OTg0LCA5NDk5MSwgOTQ5OTgsIDk1MDA1LCAKKyAgICA5NTAxMiwgOTUwMTksIDk1MDI2LCA5NTAzMywgOTUwNDAsIDk1MDQ3LCA5NTA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTUwNjEsIDk1MDY4LCA5NTA3NCwgOTUwODAsIDk1MDg2LCA5NTA5MiwgOTUwOTgsIDk1MTA0LCA5NTExMCwgOTUxMTYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDk1MTIyLCA5NTEyNywgOTUxMzIsIDk1MTM3LCA5NTE0MiwgOTUxNDYsIDk1MTUwLCA5NTE1NCwgCisgICAgOTUxNTksIDk1MTY0LCA5NTE2OSwgOTUxNzQsIDk1MTc5LCA5NTE4NCwgOTUxODksIDk1MTk0LCA5NTE5OSwgOTUyMDQsIAorICAgIDk1MjA5LCA5NTIxNCwgOTUyMTksIDk1MjI0LCA5NTIyOSwgOTUyMzQsIDk1MjM5LCA5NTI0NCwgOTUyNDksIDk1MjU0LCAKKyAgICA5NTI1OSwgOTUyNjQsIDk1MjY5LCA5NTI3NCwgOTUyNzksIDk1Mjg0LCA5NTI4OSwgOTUyOTQsIDk1Mjk5LCA5NTMwNCwgCisgICAgOTUzMDksIDk1MzE0LCA5NTMxOSwgOTUzMjQsIDk1MzMwLCA5NTMzNSwgOTUzNDEsIDk1MzQ2LCA5NTM1MiwgOTUzNTcsIAorICAgIDk1MzYzLCA5NTM2OSwgOTUzNzMsIDk1Mzc4LCA5NTM4MiwgMCwgOTUzODYsIDk1MzkxLCA5NTM5NSwgOTUzOTksIDk1NDAzLCAKKyAgICA5NTQwNywgOTU0MTEsIDk1NDE1LCA5NTQxOSwgOTU0MjMsIDk1NDI3LCA5NTQzMiwgOTU0MzYsIDk1NDQxLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ0MSwgOTU0NDUsIDk1NDQ5LCA5NTQ1MywgOTU0NTYsIDk1NDYwLCAKLSAgICA5NTQ2MywgOTU0NjcsIDk1NDcwLCA5NTQ3NCwgOTU0NzgsIDk1NDgzLCA5NTQ4NywgOTU0OTIsIDk1NDk1LCA5NTQ5OSwgCi0gICAgOTU1MDIsIDk1NTA2LCA5NTUwOSwgOTU1MTMsIDk1NTE3LCA5NTUyMSwgOTU1MjUsIDk1NTI5LCA5NTUzMywgOTU1MzcsIAotICAgIDk1NTQxLCA5NTU0NSwgOTU1NDksIDk1NTUzLCA5NTU1NywgOTU1NjEsIDk1NTY1LCA5NTU2OSwgOTU1NzMsIDk1NTc3LCAKLSAgICA5NTU4MSwgOTU1ODQsIDk1NTg3LCA5NTU5MSwgOTU1OTUsIDk1NTk5LCA5NTYwMiwgOTU2MDUsIDk1NjA4LCA5NTYxMiwgCi0gICAgOTU2MTYsIDk1NjIwLCA5NTYyNCwgOTU2MjgsIDk1NjMxLCA5NTYzNCwgOTU2MzksIDk1NjQzLCA5NTY0OCwgOTU2NTIsIAotICAgIDk1NjU3LCA5NTY2MiwgOTU2NjgsIDk1NjczLCA5NTY3OSwgOTU2ODMsIDk1Njg4LCA5NTY5MiwgOTU2OTcsIDk1NzAxLCAKLSAgICA5NTcwNSwgOTU3MDksIDk1NzEzLCA5NTcxNiwgOTU3MTksIDk1NzIzLCA5NTcyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTU3MzAsIDk1NzM0LCA5NTczNywgOTU3NDAsIDk1NzQzLCA5NTc0NiwgOTU3NDksIDk1NzUyLCA5NTc1NSwgOTU3NTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NDQ2LCA5NTQ1MCwgOTU0NTQsIDk1NDU4LCA5NTQ2MSwgOTU0NjUsIAorICAgIDk1NDY4LCA5NTQ3MiwgOTU0NzUsIDk1NDc5LCA5NTQ4MywgOTU0ODgsIDk1NDkyLCA5NTQ5NywgOTU1MDAsIDk1NTA0LCAKKyAgICA5NTUwNywgOTU1MTEsIDk1NTE0LCA5NTUxOCwgOTU1MjIsIDk1NTI2LCA5NTUzMCwgOTU1MzQsIDk1NTM4LCA5NTU0MiwgCisgICAgOTU1NDYsIDk1NTUwLCA5NTU1NCwgOTU1NTgsIDk1NTYyLCA5NTU2NiwgOTU1NzAsIDk1NTc0LCA5NTU3OCwgOTU1ODIsIAorICAgIDk1NTg2LCA5NTU4OSwgOTU1OTIsIDk1NTk2LCA5NTYwMCwgOTU2MDQsIDk1NjA3LCA5NTYxMCwgOTU2MTMsIDk1NjE3LCAKKyAgICA5NTYyMSwgOTU2MjUsIDk1NjI5LCA5NTYzMywgOTU2MzYsIDk1NjM5LCA5NTY0NCwgOTU2NDgsIDk1NjUzLCA5NTY1NywgCisgICAgOTU2NjIsIDk1NjY3LCA5NTY3MywgOTU2NzgsIDk1Njg0LCA5NTY4OCwgOTU2OTMsIDk1Njk3LCA5NTcwMiwgOTU3MDYsIAorICAgIDk1NzEwLCA5NTcxNCwgOTU3MTgsIDk1NzIxLCA5NTcyNCwgOTU3MjgsIDk1NzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NTczNSwgOTU3MzksIDk1NzQyLCA5NTc0NSwgOTU3NDgsIDk1NzUxLCA5NTc1NCwgOTU3NTcsIDk1NzYwLCA5NTc2MywgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NjEsIDk1NzY1LCA5NTc3MCwgOTU3NzQsIDk1Nzc5LCAKLSAgICA5NTc4MywgOTU3ODgsIDk1NzkyLCA5NTc5NywgOTU4MDEsIDk1ODA2LCA5NTgxMCwgOTU4MTUsIDk1ODIwLCA5NTgyNSwgCi0gICAgOTU4MzAsIDk1ODM1LCA5NTg0MCwgOTU4NDUsIDk1ODUwLCA5NTg1NSwgOTU4NjAsIDk1ODY1LCA5NTg3MCwgOTU4NzUsIAotICAgIDk1ODgwLCA5NTg4NSwgOTU4OTAsIDk1ODk1LCA5NTkwMCwgOTU5MDQsIDk1OTA4LCA5NTkxMywgOTU5MTgsIDk1OTIzLCAKLSAgICA5NTkyNywgOTU5MzEsIDk1OTM1LCA5NTk0MCwgOTU5NDUsIDk1OTUwLCA5NTk1NCwgOTU5NTgsIDk1OTYzLCA5NTk2OCwgCi0gICAgOTU5NzMsIDk1OTc5LCA5NTk4NCwgOTU5OTAsIDk1OTk1LCA5NjAwMSwgOTYwMDYsIDk2MDEyLCA5NjAxNywgOTYwMjMsIAotICAgIDk2MDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjAzMywgOTYwMzgsIDk2MDQyLCA5NjA0NiwgOTYwNTAsIDk2MDU0LCAKLSAgICA5NjA1OCwgOTYwNjIsIDk2MDY2LCA5NjA3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NjYsIDk1NzcwLCA5NTc3NSwgOTU3NzksIDk1Nzg0LCAKKyAgICA5NTc4OCwgOTU3OTMsIDk1Nzk3LCA5NTgwMiwgOTU4MDYsIDk1ODExLCA5NTgxNSwgOTU4MjAsIDk1ODI1LCA5NTgzMCwgCisgICAgOTU4MzUsIDk1ODQwLCA5NTg0NSwgOTU4NTAsIDk1ODU1LCA5NTg2MCwgOTU4NjUsIDk1ODcwLCA5NTg3NSwgOTU4ODAsIAorICAgIDk1ODg1LCA5NTg5MCwgOTU4OTUsIDk1OTAwLCA5NTkwNSwgOTU5MDksIDk1OTEzLCA5NTkxOCwgOTU5MjMsIDk1OTI4LCAKKyAgICA5NTkzMiwgOTU5MzYsIDk1OTQwLCA5NTk0NSwgOTU5NTAsIDk1OTU1LCA5NTk1OSwgOTU5NjMsIDk1OTY4LCA5NTk3MywgCisgICAgOTU5NzgsIDk1OTg0LCA5NTk4OSwgOTU5OTUsIDk2MDAwLCA5NjAwNiwgOTYwMTEsIDk2MDE3LCA5NjAyMiwgOTYwMjgsIAorICAgIDk2MDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjAzOCwgOTYwNDMsIDk2MDQ3LCA5NjA1MSwgOTYwNTUsIDk2MDU5LCAKKyAgICA5NjA2MywgOTYwNjcsIDk2MDcxLCA5NjA3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTYwNzQsIDk2MDc3LCA5NjA4MiwgOTYwODgsIAotICAgIDk2MDk2LCA5NjEwMSwgOTYxMDcsIDk2MTE1LCA5NjEyMSwgOTYxMjcsIDk2MTMxLCA5NjEzNSwgOTYxNDIsIDk2MTUxLCAKLSAgICA5NjE1OCwgOTYxNjcsIDk2MTczLCA5NjE4MiwgOTYxODksIDk2MTk2LCA5NjIwMywgOTYyMTMsIDk2MjE5LCA5NjIyMywgCi0gICAgOTYyMzAsIDk2MjM5LCA5NjI0OSwgOTYyNTYsIDk2MjYzLCA5NjI2NywgOTYyNzEsIDk2Mjc4LCA5NjI4OCwgOTYyOTIsIAotICAgIDk2Mjk5LCA5NjMwNiwgOTYzMTMsIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgOTYzNTEsIDk2MzU1LCAKLSAgICA5NjM1OSwgOTYzNjYsIDk2MzcwLCA5NjM3NywgOTYzODQsIDk2Mzk4LCA5NjQwNywgOTY0MTEsIDk2NDE1LCA5NjQxOSwgCi0gICAgOTY0MjYsIDk2NDMwLCA5NjQzNCwgOTY0MzgsIDk2NDQ2LCA5NjQ1NCwgOTY0NzMsIDk2NDgzLCA5NjUwMywgOTY1MDcsIAotICAgIDk2NTExLCA5NjUxNSwgOTY1MTksIDk2NTIzLCA5NjUyNywgOTY1MzEsIDk2NTM4LCA5NjU0MiwgOTY1NDUsIDk2NTQ5LCAKLSAgICA5NjU1MywgOTY1NTksIDk2NTY2LCA5NjU3NSwgOTY1NzksIDk2NTg4LCA5NjU5NywgOTY2MDUsIDk2NjA5LCA5NjYxNiwgCi0gICAgOTY2MjAsIDk2NjI0LCA5NjYyOCwgOTY2MzIsIDk2NjQzLCA5NjY1MiwgOTY2NjEsIDk2NjcwLCA5NjY3OSwgOTY2OTEsIAotICAgIDk2NzAwLCA5NjcwOSwgOTY3MTgsIDk2NzI2LCA5NjczNSwgOTY3NDcsIDk2NzU2LCA5Njc2NSwgOTY3NzQsIDk2Nzg2LCAKLSAgICA5Njc5NSwgOTY4MDQsIDk2ODE2LCA5NjgyNSwgOTY4MzQsIDk2ODQ2LCA5Njg1NSwgOTY4NTksIDk2ODYzLCA5Njg2NywgCi0gICAgOTY4NzEsIDk2ODc1LCA5Njg3OSwgOTY4ODMsIDk2ODkwLCA5Njg5NCwgOTY4OTgsIDk2OTA5LCA5NjkxMywgOTY5MTcsIAotICAgIDk2OTI0LCA5NjkzMCwgOTY5MzYsIDk2OTQwLCA5Njk0NywgOTY5NTEsIDk2OTU1LCA5Njk1OSwgOTY5NjMsIDk2OTY3LCAKLSAgICA5Njk3MSwgOTY5NzcsIDk2OTg1LCA5Njk4OSwgOTY5OTMsIDk2OTk2LCA5NzAwMiwgOTcwMTIsIDk3MDE2LCA5NzAyOCwgCi0gICAgOTcwMzUsIDk3MDQyLCA5NzA0OSwgOTcwNTYsIDk3MDYyLCA5NzA2NiwgOTcwNzAsIDk3MDc0LCA5NzA3OCwgOTcwODUsIAotICAgIDk3MDk0LCA5NzEwMSwgOTcxMDksIDk3MTE3LCA5NzEyMywgOTcxMjcsIDk3MTMxLCA5NzEzNSwgOTcxMzksIDk3MTQ1LCAKLSAgICA5NzE1NCwgOTcxNjYsIDk3MTczLCA5NzE4MCwgOTcxODksIDk3MjAwLCA5NzIwNiwgOTcyMTUsIDk3MjI0LCA5NzIzMSwgCi0gICAgOTcyNDAsIDk3MjQ3LCA5NzI1NCwgOTcyNjQsIDk3MjcxLCA5NzI3OCwgOTcyODUsIDk3MjkyLCA5NzI5NiwgOTczMDIsIAotICAgIDk3MzA2LCA5NzMxNywgOTczMjUsIDk3MzM0LCA5NzM0NiwgOTczNTMsIDk3MzYwLCA5NzM3MCwgOTczNzcsIDk3Mzg2LCAKLSAgICA5NzM5MywgOTc0MDIsIDk3NDA5LCA5NzQxNiwgOTc0MjYsIDk3NDMzLCA5NzQ0MCwgOTc0NTAsIDk3NDU3LCA5NzQ2OSwgCi0gICAgOTc0NzgsIDk3NDg1LCA5NzQ5MiwgOTc0OTksIDk3NTA4LCA5NzUxOCwgOTc1MzEsIDk3NTM4LCA5NzU0OCwgOTc1NTgsIAotICAgIDk3NTY1LCA5NzU3NCwgOTc1ODcsIDk3NTk0LCA5NzYwMSwgOTc2MDgsIDk3NjE4LCA5NzYyOCwgOTc2MzUsIDk3NjQ1LCAKLSAgICA5NzY1MiwgOTc2NTksIDk3NjY5LCA5NzY3NSwgOTc2ODIsIDk3Njg5LCA5NzY5NiwgOTc3MDYsIDk3NzEzLCA5NzcyMCwgCi0gICAgOTc3MjcsIDk3NzMzLCA5Nzc0MCwgOTc3NTAsIDk3NzU3LCA5Nzc2MSwgOTc3NjksIDk3NzczLCA5Nzc4NSwgOTc3ODksIAotICAgIDk3ODAzLCA5NzgwNywgOTc4MTEsIDk3ODE1LCA5NzgxOSwgOTc4MjUsIDk3ODMyLCA5Nzg0MCwgOTc4NDQsIDk3ODQ4LCAKLSAgICA5Nzg1MiwgOTc4NTYsIDk3ODYzLCA5Nzg2NywgOTc4NzMsIDk3ODc5LCA5Nzg4NywgOTc4OTEsIDk3ODk4LCA5NzkwNiwgCi0gICAgOTc5MTAsIDk3OTE0LCA5NzkyMCwgOTc5MjQsIDk3OTMzLCA5Nzk0MiwgOTc5NDksIDk3OTU5LCA5Nzk2NSwgOTc5NjksIAotICAgIDk3OTczLCA5Nzk4MSwgOTc5ODgsIDk3OTk1LCA5ODAwMSwgOTgwMDUsIDk4MDEzLCA5ODAxNywgOTgwMjQsIDk4MDM2LCAKLSAgICA5ODA0MywgOTgwNTMsIDk4MDU5LCA5ODA2MywgOTgwNzIsIDk4MDc5LCA5ODA4OCwgOTgwOTIsIDk4MDk2LCA5ODEwMywgCi0gICAgOTgxMDcsIDk4MTExLCA5ODExNSwgOTgxMTksIDk4MTIyLCA5ODEyOCwgOTgxMzQsIDk4MTM4LCA5ODE0MiwgOTgxNDksIAotICAgIDk4MTU2LCA5ODE2MywgOTgxNzAsIDk4MTc3LCA5ODE4NCwgOTgxOTEsIDk4MTk4LCA5ODIwNCwgOTgyMDgsIDk4MjEyLCAKLSAgICA5ODIxOSwgOTgyMjYsIDk4MjMzLCA5ODI0MCwgOTgyNDcsIDk4MjUxLCA5ODI1NCwgOTgyNTksIDk4MjYzLCA5ODI2NywgCi0gICAgOTgyNzYsIDk4Mjg1LCA5ODI4OSwgOTgyOTMsIDk4Mjk5LCA5ODMwNSwgOTgzMjIsIDk4MzI4LCA5ODMzMiwgOTgzNDEsIAotICAgIDk4MzQ1LCA5ODM0OSwgOTgzNTYsIDk4MzY0LCA5ODM3MiwgOTgzNzgsIDk4MzgyLCA5ODM4NiwgOTgzOTAsIDk4Mzk0LCAKLSAgICA5ODM5NywgOTg0MDMsIDk4NDEwLCA5ODQyMCwgOTg0MjcsIDk4NDM0LCA5ODQ0MSwgOTg0NDcsIDk4NDU0LCA5ODQ2MSwgCi0gICAgOTg0NjgsIDk4NDc1LCA5ODQ4MiwgOTg0OTEsIDk4NDk4LCA5ODUxMCwgOTg1MTcsIDk4NTI0LCA5ODUzNCwgOTg1NDUsIAotICAgIDk4NTUyLCA5ODU1OSwgOTg1NjYsIDk4NTczLCA5ODU4MCwgOTg1ODcsIDk4NTk0LCA5ODYwMSwgOTg2MDgsIDk4NjE1LCAKLSAgICA5ODYyNSwgOTg2MzUsIDk4NjQ1LCA5ODY1MiwgOTg2NjIsIDk4NjY5LCA5ODY3NiwgOTg2ODMsIDk4NjkwLCA5ODY5NiwgCi0gICAgOTg3MDMsIDk4NzEwLCA5ODcxNywgOTg3MjQsIDk4NzMxLCA5ODczOCwgOTg3NDUsIDk4NzUyLCA5ODc1OCwgOTg3NjUsIAotICAgIDk4NzcyLCA5ODc4MSwgOTg3ODgsIDk4Nzk1LCA5ODc5OSwgOTg4MDcsIDk4ODExLCA5ODgxNSwgOTg4MTksIDk4ODIzLCAKLSAgICA5ODgyNywgOTg4MzQsIDk4ODM4LCA5ODg0NywgOTg4NTEsIDk4ODU4LCA5ODg2NiwgOTg4NzAsIDk4ODc0LCA5ODg3OCwgCi0gICAgOTg4OTEsIDk4OTA3LCA5ODkxMSwgOTg5MTUsIDk4OTIyLCA5ODkyOCwgOTg5MzUsIDk4OTM5LCA5ODk0MywgOTg5NDcsIAotICAgIDk4OTUxLCA5ODk1NSwgOTg5NjIsIDk4OTY2LCA5ODk4NCwgOTg5ODgsIDk4OTkyLCA5ODk5OSwgOTkwMDMsIDk5MDA3LCAKLSAgICA5OTAxMywgOTkwMTcsIDk5MDIxLCA5OTAyOSwgOTkwMzMsIDk5MDM3LCA5OTA0MSwgOTkwNDUsIDk5MDUxLCA5OTA2MiwgCi0gICAgOTkwNzEsIDk5MDgwLCA5OTA4NywgOTkwOTQsIDk5MTA1LCA5OTExMiwgOTkxMTksIDk5MTI2LCA5OTEzMywgOTkxNDAsIAotICAgIDk5MTQ3LCA5OTE1NCwgOTkxNjQsIDk5MTcwLCA5OTE3NywgOTkxODcsIDk5MTk2LCA5OTIwMywgOTkyMTIsIDk5MjIyLCAKLSAgICA5OTIyOSwgOTkyMzYsIDk5MjQzLCA5OTI1MCwgOTkyNjIsIDk5MjY5LCA5OTI3NiwgOTkyODMsIDk5MjkwLCA5OTI5NywgCi0gICAgOTkzMDcsIDk5MzE0LCA5OTMyMSwgOTkzMzEsIDk5MzQ0LCA5OTM1NiwgOTkzNjMsIDk5MzczLCA5OTM4MCwgOTkzODcsIAotICAgIDk5Mzk0LCA5OTQwOCwgOTk0MTQsIDk5NDIyLCA5OTQzMiwgOTk0NDIsIDk5NDQ5LCA5OTQ1NiwgOTk0NjIsIDk5NDY2LCAKLSAgICA5OTQ3MywgOTk0ODMsIDk5NDg5LCA5OTUwMiwgOTk1MDYsIDk5NTEwLCA5OTUxNywgOTk1MjEsIDk5NTI4LCA5OTUzOCwgCi0gICAgOTk1NDIsIDk5NTQ2LCA5OTU1MCwgOTk1NTQsIDk5NTU4LCA5OTU2NSwgOTk1NjksIDk5NTc2LCA5OTU4MywgOTk1OTAsIAotICAgIDk5NTk5LCA5OTYwOCwgOTk2MTgsIDk5NjI1LCA5OTYzMiwgOTk2MzksIDk5NjQ5LCA5OTY1NiwgOTk2NjYsIDk5NjczLCAKLSAgICA5OTY4MywgOTk2OTAsIDk5Njk3LCA5OTcwNywgOTk3MTcsIDk5NzI0LCA5OTczMCwgOTk3MzgsIDk5NzQ2LCA5OTc1MiwgCi0gICAgOTk3NTgsIDk5NzYyLCA5OTc2NiwgOTk3NzMsIDk5NzgxLCA5OTc4NywgOTk3OTEsIDk5Nzk1LCA5OTc5OSwgOTk4MDYsIAotICAgIDk5ODE4LCA5OTgyMSwgOTk4MjgsIDk5ODM0LCA5OTgzOCwgOTk4NDIsIDk5ODQ2LCA5OTg1MCwgOTk4NTQsIDk5ODU4LCAKLSAgICA5OTg2MiwgOTk4NjYsIDk5ODcwLCA5OTg3NCwgOTk4ODEsIDk5ODg1LCA5OTg5MSwgOTk4OTUsIDk5ODk5LCA5OTkwMywgCi0gICAgOTk5MDksIDk5OTE2LCA5OTkyMywgOTk5MzAsIDk5OTQxLCA5OTk0OSwgOTk5NTMsIDk5OTU5LCA5OTk2OCwgOTk5NzUsIAotICAgIDk5OTgxLCA5OTk4NCwgOTk5ODgsIDk5OTkyLCA5OTk5OCwgMTAwMDA3LCAxMDAwMTUsIDEwMDAxOSwgMTAwMDI1LCAKLSAgICAxMDAwMjksIDEwMDAzMywgMTAwMDM3LCAxMDAwNDMsIDEwMDA1MCwgMTAwMDU2LCAxMDAwNjAsIDEwMDA2NiwgMTAwMDcwLCAKLSAgICAxMDAwNzQsIDEwMDA4MywgMTAwMDk1LCAxMDAwOTksIDEwMDEwNiwgMTAwMTEzLCAxMDAxMjMsIDEwMDEzMCwgMTAwMTQyLCAKLSAgICAxMDAxNDksIDEwMDE1NiwgMTAwMTYzLCAxMDAxNzQsIDEwMDE4NCwgMTAwMTk3LCAxMDAyMDcsIDEwMDIxNCwgMTAwMjE4LCAKLSAgICAxMDAyMjIsIDEwMDIyNiwgMTAwMjMwLCAxMDAyMzksIDEwMDI0OCwgMTAwMjU3LCAxMDAyNzQsIDEwMDI4MywgMTAwMjg5LCAKLSAgICAxMDAyOTYsIDEwMDMwNCwgMTAwMzE3LCAxMDAzMjEsIDEwMDMzMCwgMTAwMzM5LCAxMDAzNDgsIDEwMDM1NywgMTAwMzY4LCAKLSAgICAxMDAzNzcsIDEwMDM4NiwgMTAwMzk1LCAxMDA0MDQsIDEwMDQxMywgMTAwNDIyLCAxMDA0MzIsIDEwMDQzNSwgMTAwNDM5LCAKLSAgICAxMDA0NDMsIDEwMDQ0NywgMTAwNDUxLCAxMDA0NTUsIDEwMDQ2MSwgMTAwNDY4LCAxMDA0NzUsIDEwMDQ4MiwgMTAwNDg4LCAKLSAgICAxMDA0OTQsIDEwMDUwMSwgMTAwNTA3LCAxMDA1MTQsIDEwMDUyMiwgMTAwNTI2LCAxMDA1MzMsIDEwMDU0MCwgMTAwNTQ3LCAKLSAgICAxMDA1NTUsIDEwMDU1OCwgMTAwNTYyLCAxMDA1NjYsIDEwMDU3MCwgMTAwNTczLCAxMDA1NzksIDEwMDU4MywgMTAwNTg5LCAKLSAgICAxMDA1OTYsIDEwMDYwMywgMTAwNjA5LCAxMDA2MTYsIDEwMDYyMywgMTAwNjMwLCAxMDA2MzcsIDEwMDY0NCwgMTAwNjUxLCAKLSAgICAxMDA2NTgsIDEwMDY2NSwgMTAwNjcyLCAxMDA2NzksIDEwMDY4NiwgMTAwNjkzLCAxMDA3MDAsIDEwMDcwNywgMTAwNzEzLCAKLSAgICAxMDA3MTcsIDEwMDcyNiwgMTAwNzMwLCAxMDA3MzQsIDEwMDczOCwgMTAwNzQyLCAxMDA3NDgsIDEwMDc1NSwgMTAwNzYyLCAKLSAgICAxMDA3NjksIDEwMDc3NiwgMTAwNzgzLCAxMDA3ODksIDEwMDc5NywgMTAwODAxLCAxMDA4MDUsIDEwMDgwOSwgMTAwODEzLCAKLSAgICAxMDA4MTksIDEwMDgzNiwgMTAwODUzLCAxMDA4NTcsIDEwMDg2MSwgMTAwODY1LCAxMDA4NjksIDEwMDg3MywgMTAwODc3LCAKLSAgICAxMDA4ODMsIDEwMDg5MCwgMTAwODk0LCAxMDA5MDAsIDEwMDkwNywgMTAwOTE0LCAxMDA5MjEsIDEwMDkyOCwgMTAwOTM1LCAKLSAgICAxMDA5NDQsIDEwMDk1MSwgMTAwOTU4LCAxMDA5NjUsIDEwMDk3MiwgMTAwOTc2LCAxMDA5ODAsIDEwMDk4NiwgMTAwOTk4LCAKLSAgICAxMDEwMDIsIDEwMTAwNiwgMTAxMDE1LCAxMDEwMTksIDEwMTAyMywgMTAxMDI3LCAxMDEwMzMsIDEwMTAzNywgMTAxMDQxLCAKLSAgICAxMDEwNTAsIDEwMTA1NCwgMTAxMDU4LCAxMDEwNjIsIDEwMTA2OSwgMTAxMDczLCAxMDEwNzcsIDEwMTA4MSwgMTAxMDg1LCAKLSAgICAxMDEwODksIDEwMTA5MywgMTAxMDk3LCAxMDExMDEsIDEwMTEwNywgMTAxMTE0LCAxMDExMjEsIDEwMTEyNywgMTAxMTMxLCAKLSAgICAxMDExNDgsIDEwMTE1NCwgMTAxMTU4LCAxMDExNjQsIDEwMTE3MCwgMTAxMTc2LCAxMDExODIsIDEwMTE4OCwgMTAxMTk0LCAKLSAgICAxMDExOTgsIDEwMTIwMiwgMTAxMjA2LCAxMDEyMTIsIDEwMTIxNiwgMTAxMjIyLCAxMDEyMjYsIDEwMTIzMCwgMTAxMjM3LCAKLSAgICAxMDEyNDQsIDEwMTI2MSwgMTAxMjY1LCAxMDEyNjksIDEwMTI3MywgMTAxMjc3LCAxMDEyODEsIDEwMTI5MywgMTAxMjk2LCAKLSAgICAxMDEzMDEsIDEwMTMwNiwgMTAxMzIxLCAxMDEzMzEsIDEwMTM0MywgMTAxMzQ3LCAxMDEzNTEsIDEwMTM1NSwgMTAxMzYxLCAKLSAgICAxMDEzNjgsIDEwMTM3NSwgMTAxMzg1LCAxMDEzOTcsIDEwMTQwMywgMTAxNDA5LCAxMDE0MTgsIDEwMTQyMiwgMTAxNDI2LCAKLSAgICAxMDE0MzMsIDEwMTQ0MywgMTAxNDUwLCAxMDE0NTYsIDEwMTQ2MCwgMTAxNDY0LCAxMDE0NzEsIDEwMTQ3NywgMTAxNDgxLCAKLSAgICAxMDE0ODcsIDEwMTQ5MSwgMTAxNDk5LCAxMDE1MDUsIDEwMTUwOSwgMTAxNTE3LCAxMDE1MjUsIDEwMTUzMiwgMTAxNTM4LCAKLSAgICAxMDE1NDUsIDEwMTU1MiwgMTAxNTYyLCAxMDE1NzIsIDEwMTU3NiwgMTAxNTgwLCAxMDE1ODQsIDEwMTU4OCwgMTAxNTk0LCAKLSAgICAxMDE2MDEsIDEwMTYwNywgMTAxNjE0LCAxMDE2MjEsIDEwMTYyOCwgMTAxNjM3LCAxMDE2NDQsIDEwMTY1MSwgMTAxNjU3LCAKLSAgICAxMDE2NjQsIDEwMTY3MSwgMTAxNjc4LCAxMDE2ODUsIDEwMTY5MiwgMTAxNjk5LCAxMDE3MDUsIDEwMTcxMiwgMTAxNzE5LCAKLSAgICAxMDE3MjYsIDEwMTczNSwgMTAxNzQyLCAxMDE3NDksIDEwMTc1MywgMTAxNzU5LCAxMDE3NjMsIDEwMTc2OSwgMTAxNzc2LCAKLSAgICAxMDE3ODMsIDEwMTc5MCwgMTAxNzk0LCAxMDE3OTgsIDEwMTgwMiwgMTAxODA2LCAxMDE4MTAsIDEwMTgxNywgMTAxODIxLCAKLSAgICAxMDE4MjUsIDEwMTgzMSwgMTAxODM5LCAxMDE4NDMsIDEwMTg0NywgMTAxODUxLCAxMDE4NTUsIDEwMTg2MiwgMTAxODY2LCAKLSAgICAxMDE4NzAsIDEwMTg3OCwgMTAxODgyLCAxMDE4ODYsIDEwMTg5MCwgMTAxODk0LCAxMDE5MDAsIDEwMTkwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxOTA4LCAxMDE5MTQsIDEwMTkyMCwgMTAxOTI3LCAKLSAgICAxMDE5MzQsIDEwMTk0MSwgMTAxOTQ4LCAxMDE5NTUsIDEwMTk2MiwgMTAxOTY4LCAxMDE5NzUsIDEwMTk4MiwgMTAxOTg5LCAKLSAgICAxMDE5OTYsIDEwMjAwMywgMTAyMDEwLCAxMDIwMTYsIDEwMjAyMiwgMTAyMDI4LCAxMDIwMzQsIDEwMjA0MCwgMTAyMDQ2LCAKLSAgICAxMDIwNTIsIDEwMjA1OCwgMTAyMDY0LCAxMDIwNzEsIDEwMjA3OCwgMTAyMDg1LCAxMDIwOTIsIDEwMjA5OSwgMTAyMTA2LCAKLSAgICAxMDIxMTIsIDEwMjExOCwgMTAyMTI0LCAxMDIxMzEsIDEwMjEzOCwgMTAyMTQ0LCAxMDIxNTAsIDEwMjE1OSwgMTAyMTY2LCAKLSAgICAxMDIxNzMsIDEwMjE4MCwgMTAyMTg3LCAxMDIxOTQsIDEwMjIwMSwgMTAyMjA3LCAxMDIyMTMsIDEwMjIxOSwgMTAyMjI4LCAKLSAgICAxMDIyMzUsIDEwMjI0MiwgMTAyMjUzLCAxMDIyNjQsIDEwMjI3MCwgMTAyMjc2LCAxMDIyODIsIDEwMjI5MSwgMTAyMjk4LCAKLSAgICAxMDIzMDUsIDEwMjMxNSwgMTAyMzI1LCAxMDIzMzYsIDEwMjM0NywgMTAyMzU5LCAxMDIzNzIsIDEwMjM4MywgMTAyMzk0LCAKLSAgICAxMDI0MDYsIDEwMjQxOSwgMTAyNDMwLCAxMDI0NDEsIDEwMjQ1MiwgMTAyNDYzLCAxMDI0NzQsIDEwMjQ4NiwgMTAyNDk0LCAKLSAgICAxMDI1MDIsIDEwMjUxMSwgMTAyNTIwLCAxMDI1MjksIDEwMjUzNSwgMTAyNTQxLCAxMDI1NDcsIDEwMjU1NCwgMTAyNTY0LCAKLSAgICAxMDI1NzEsIDEwMjU4MSwgMTAyNTg2LCAxMDI1OTEsIDEwMjU5NywgMTAyNjAzLCAxMDI2MTEsIDEwMjYxOSwgMTAyNjI4LCAKLSAgICAxMDI2MzksIDEwMjY1MCwgMTAyNjU4LCAxMDI2NjYsIDEwMjY3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTAyNjg0LCAxMDI2OTUsIDEwMjcwMiwgMTAyNzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDI3MTgsIDEwMjcyMiwgMTAyNzI2LCAxMDI3MzAsIDEwMjczNCwgMTAyNzM4LCAxMDI3NDIsIDEwMjc0NiwgMTAyNzUwLCAKLSAgICAxMDI3NTQsIDEwMjc1OCwgMTAyNzYyLCAxMDI3NjYsIDEwMjc3MCwgMTAyNzc0LCAxMDI3NzgsIDEwMjc4MiwgMTAyNzg2LCAKLSAgICAxMDI3OTAsIDEwMjc5NCwgMTAyNzk4LCAxMDI4MDIsIDEwMjgwNiwgMTAyODEwLCAxMDI4MTQsIDEwMjgxOCwgMTAyODIyLCAKLSAgICAxMDI4MjYsIDEwMjgzMCwgMTAyODM0LCAxMDI4MzgsIDEwMjg0MiwgMTAyODQ2LCAxMDI4NTAsIDEwMjg1NCwgMTAyODU4LCAKLSAgICAxMDI4NjIsIDEwMjg2NiwgMTAyODcwLCAxMDI4NzQsIDEwMjg3OCwgMTAyODgyLCAxMDI4ODYsIDEwMjg5MCwgMTAyODk0LCAKLSAgICAxMDI4OTgsIDEwMjkwMiwgMTAyOTA2LCAxMDI5MTAsIDEwMjkxNCwgMTAyOTE4LCAxMDI5MjIsIDEwMjkyNiwgMTAyOTMwLCAKLSAgICAxMDI5MzQsIDEwMjkzOCwgMTAyOTQyLCAxMDI5NDYsIDEwMjk1MCwgMTAyOTU0LCAxMDI5NTgsIDEwMjk2MiwgMTAyOTY2LCAKLSAgICAxMDI5NzAsIDEwMjk3NCwgMTAyOTc4LCAxMDI5ODIsIDEwMjk4NiwgMTAyOTkwLCAxMDI5OTQsIDEwMjk5OCwgMTAzMDAyLCAKLSAgICAxMDMwMDYsIDEwMzAxMCwgMTAzMDE0LCAxMDMwMTgsIDEwMzAyMiwgMTAzMDI2LCAxMDMwMzAsIDEwMzAzNCwgMTAzMDM4LCAKLSAgICAxMDMwNDIsIDEwMzA0NiwgMTAzMDUwLCAxMDMwNTQsIDEwMzA1OCwgMTAzMDYyLCAxMDMwNjYsIDEwMzA3MCwgMTAzMDc0LCAKLSAgICAxMDMwNzgsIDEwMzA4MiwgMTAzMDg2LCAxMDMwOTAsIDEwMzA5NCwgMTAzMDk4LCAxMDMxMDIsIDEwMzEwNiwgMTAzMTEwLCAKLSAgICAxMDMxMTQsIDEwMzExOCwgMTAzMTIyLCAxMDMxMjYsIDEwMzEzMCwgMTAzMTM0LCAxMDMxMzgsIDEwMzE0MiwgMTAzMTQ2LCAKLSAgICAxMDMxNTAsIDEwMzE1NCwgMTAzMTU4LCAxMDMxNjIsIDEwMzE2NiwgMTAzMTcwLCAxMDMxNzQsIDEwMzE3OCwgMTAzMTgyLCAKLSAgICAxMDMxODYsIDEwMzE5MCwgMTAzMTk0LCAxMDMxOTgsIDEwMzIwMiwgMTAzMjA2LCAxMDMyMTAsIDEwMzIxNCwgMTAzMjE4LCAKLSAgICAxMDMyMjIsIDEwMzIyNiwgMTAzMjMwLCAxMDMyMzQsIDEwMzIzOCwgMTAzMjQyLCAxMDMyNDYsIDEwMzI1MCwgMTAzMjU0LCAKLSAgICAxMDMyNTgsIDEwMzI2MiwgMTAzMjY2LCAxMDMyNzAsIDEwMzI3NCwgMTAzMjc4LCAxMDMyODIsIDEwMzI4NiwgMTAzMjkwLCAKLSAgICAxMDMyOTQsIDEwMzI5OCwgMTAzMzAyLCAxMDMzMDYsIDEwMzMxMCwgMTAzMzE0LCAxMDMzMTgsIDEwMzMyMiwgMTAzMzI2LCAKLSAgICAxMDMzMzAsIDEwMzMzNCwgMTAzMzM4LCAxMDMzNDIsIDEwMzM0NiwgMTAzMzUwLCAxMDMzNTQsIDEwMzM1OCwgMTAzMzYyLCAKLSAgICAxMDMzNjYsIDEwMzM3MCwgMTAzMzc0LCAxMDMzNzgsIDEwMzM4MiwgMTAzMzg2LCAxMDMzOTAsIDEwMzM5NCwgMTAzMzk4LCAKLSAgICAxMDM0MDIsIDEwMzQwNiwgMTAzNDEwLCAxMDM0MTQsIDEwMzQxOCwgMTAzNDIyLCAxMDM0MjYsIDEwMzQzMCwgMTAzNDM0LCAKLSAgICAxMDM0MzgsIDEwMzQ0MiwgMTAzNDQ2LCAxMDM0NTAsIDEwMzQ1NCwgMTAzNDU4LCAxMDM0NjIsIDEwMzQ2NiwgMTAzNDcwLCAKLSAgICAxMDM0NzQsIDEwMzQ3OCwgMTAzNDgyLCAxMDM0ODYsIDEwMzQ5MCwgMTAzNDk0LCAxMDM0OTgsIDEwMzUwMiwgMTAzNTA2LCAKLSAgICAxMDM1MTAsIDEwMzUxNCwgMTAzNTE4LCAxMDM1MjIsIDEwMzUyNiwgMTAzNTMwLCAxMDM1MzQsIDEwMzUzOCwgMTAzNTQyLCAKLSAgICAxMDM1NDYsIDEwMzU1MCwgMTAzNTU0LCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY2LCAxMDM1NzAsIDEwMzU3NCwgMTAzNTc4LCAKLSAgICAxMDM1ODIsIDEwMzU4NiwgMTAzNTkwLCAxMDM1OTQsIDEwMzU5OCwgMTAzNjAyLCAxMDM2MDYsIDEwMzYxMCwgMTAzNjE0LCAKLSAgICAxMDM2MTgsIDEwMzYyMiwgMTAzNjI2LCAxMDM2MzAsIDEwMzYzNCwgMTAzNjM4LCAxMDM2NDIsIDEwMzY0NiwgMTAzNjUwLCAKLSAgICAxMDM2NTQsIDEwMzY1OCwgMTAzNjYyLCAxMDM2NjYsIDEwMzY3MCwgMTAzNjc0LCAxMDM2NzgsIDEwMzY4MiwgMTAzNjg2LCAKLSAgICAxMDM2OTAsIDEwMzY5NCwgMTAzNjk4LCAxMDM3MDIsIDEwMzcwNiwgMTAzNzEwLCAxMDM3MTQsIDEwMzcxOCwgMTAzNzIyLCAKLSAgICAxMDM3MjYsIDEwMzczMCwgMTAzNzM0LCAxMDM3MzgsIDEwMzc0MiwgMTAzNzQ2LCAxMDM3NTAsIDEwMzc1NCwgMTAzNzU4LCAKLSAgICAxMDM3NjIsIDEwMzc2NiwgMTAzNzcwLCAxMDM3NzQsIDEwMzc3OCwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MCwgMTAzNzk0LCAKLSAgICAxMDM3OTgsIDEwMzgwMiwgMTAzODA2LCAxMDM4MTAsIDEwMzgxNCwgMTAzODE4LCAxMDM4MjIsIDEwMzgyNiwgMTAzODMwLCAKLSAgICAxMDM4MzQsIDEwMzgzOCwgMTAzODQyLCAxMDM4NDYsIDEwMzg1MCwgMTAzODU0LCAxMDM4NTgsIDEwMzg2MiwgMTAzODY2LCAKLSAgICAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgMTAzOTAyLCAKLSAgICAxMDM5MDYsIDEwMzkxMCwgMTAzOTE0LCAxMDM5MTgsIDEwMzkyMiwgMTAzOTI2LCAxMDM5MzAsIDEwMzkzNCwgMTAzOTM4LCAKLSAgICAxMDM5NDIsIDEwMzk0NiwgMTAzOTUwLCAxMDM5NTQsIDEwMzk1OCwgMTAzOTYyLCAxMDM5NjYsIDEwMzk3MCwgMTAzOTc0LCAKLSAgICAxMDM5NzgsIDEwMzk4MiwgMTAzOTg2LCAxMDM5OTAsIDEwMzk5NCwgMTAzOTk4LCAxMDQwMDIsIDEwNDAwNiwgMTA0MDEwLCAKLSAgICAxMDQwMTQsIDEwNDAxOCwgMTA0MDIyLCAxMDQwMjYsIDEwNDAzMCwgMTA0MDM0LCAxMDQwMzgsIDEwNDA0MiwgMTA0MDQ2LCAKLSAgICAxMDQwNTAsIDEwNDA1NCwgMTA0MDU4LCAxMDQwNjIsIDEwNDA2NiwgMTA0MDcwLCAxMDQwNzQsIDEwNDA3OCwgMTA0MDgyLCAKLSAgICAxMDQwODYsIDEwNDA5MCwgMTA0MDk0LCAxMDQwOTgsIDEwNDEwMiwgMTA0MTA2LCAxMDQxMTAsIDEwNDExNCwgMTA0MTE4LCAKLSAgICAxMDQxMjIsIDEwNDEyNiwgMTA0MTMwLCAxMDQxMzQsIDEwNDEzOCwgMTA0MTQyLCAxMDQxNDYsIDEwNDE1MCwgMTA0MTU0LCAKLSAgICAxMDQxNTgsIDEwNDE2MiwgMTA0MTY2LCAxMDQxNzAsIDEwNDE3NCwgMTA0MTc4LCAxMDQxODIsIDEwNDE4NiwgMTA0MTkwLCAKLSAgICAxMDQxOTQsIDEwNDE5OCwgMTA0MjAyLCAxMDQyMDYsIDEwNDIxMCwgMTA0MjE0LCAxMDQyMTgsIDEwNDIyMiwgMTA0MjI2LCAKLSAgICAxMDQyMzAsIDEwNDIzNCwgMTA0MjM4LCAxMDQyNDIsIDEwNDI0NiwgMTA0MjUwLCAxMDQyNTQsIDEwNDI1OCwgMTA0MjYyLCAKLSAgICAxMDQyNjYsIDEwNDI3MCwgMTA0Mjc0LCAxMDQyNzgsIDEwNDI4MiwgMTA0Mjg2LCAxMDQyOTAsIDEwNDI5NCwgMTA0Mjk4LCAKLSAgICAxMDQzMDIsIDEwNDMwNiwgMTA0MzEwLCAxMDQzMTQsIDEwNDMxOCwgMTA0MzIyLCAxMDQzMjYsIDEwNDMzMCwgMTA0MzM0LCAKLSAgICAxMDQzMzgsIDEwNDM0MiwgMTA0MzQ2LCAxMDQzNTAsIDEwNDM1NCwgMTA0MzU4LCAxMDQzNjIsIDEwNDM2NiwgMTA0MzcwLCAKLSAgICAxMDQzNzQsIDEwNDM3OCwgMTA0MzgyLCAxMDQzODYsIDEwNDM5MCwgMTA0Mzk0LCAxMDQzOTgsIDEwNDQwMiwgMTA0NDA2LCAKLSAgICAxMDQ0MTAsIDEwNDQxNCwgMTA0NDE4LCAxMDQ0MjIsIDEwNDQyNiwgMTA0NDMwLCAxMDQ0MzQsIDEwNDQzOCwgMTA0NDQyLCAKLSAgICAxMDQ0NDYsIDEwNDQ1MCwgMTA0NDU0LCAxMDQ0NTgsIDEwNDQ2MiwgMTA0NDY2LCAxMDQ0NzAsIDEwNDQ3NCwgMTA0NDc4LCAKLSAgICAxMDQ0ODIsIDEwNDQ4NiwgMTA0NDkwLCAxMDQ0OTQsIDEwNDQ5OCwgMTA0NTAyLCAxMDQ1MDYsIDEwNDUxMCwgMTA0NTE0LCAKLSAgICAxMDQ1MTgsIDEwNDUyMiwgMTA0NTI2LCAxMDQ1MzAsIDEwNDUzNCwgMTA0NTM4LCAxMDQ1NDIsIDEwNDU0NiwgMTA0NTUwLCAKLSAgICAxMDQ1NTQsIDEwNDU1OCwgMTA0NTYyLCAxMDQ1NjYsIDEwNDU3MCwgMTA0NTc0LCAxMDQ1NzgsIDEwNDU4MiwgMTA0NTg2LCAKLSAgICAxMDQ1OTAsIDEwNDU5NCwgMTA0NTk4LCAxMDQ2MDIsIDEwNDYwNiwgMTA0NjEwLCAxMDQ2MTQsIDEwNDYxOCwgMTA0NjIyLCAKLSAgICAxMDQ2MjYsIDEwNDYzMCwgMTA0NjM0LCAxMDQ2MzgsIDEwNDY0MiwgMTA0NjQ2LCAxMDQ2NTAsIDEwNDY1NCwgMTA0NjU4LCAKLSAgICAxMDQ2NjIsIDEwNDY2NiwgMTA0NjcwLCAxMDQ2NzQsIDEwNDY3OCwgMTA0NjgyLCAxMDQ2ODYsIDEwNDY5MCwgMTA0Njk0LCAKLSAgICAxMDQ2OTgsIDEwNDcwMiwgMTA0NzA2LCAxMDQ3MTAsIDEwNDcxNCwgMTA0NzE4LCAxMDQ3MjIsIDEwNDcyNiwgMTA0NzMwLCAKLSAgICAxMDQ3MzQsIDEwNDczOCwgMTA0NzQyLCAxMDQ3NDYsIDEwNDc1MCwgMTA0NzU0LCAxMDQ3NTgsIDEwNDc2MiwgMTA0NzY2LCAKLSAgICAxMDQ3NzAsIDEwNDc3NCwgMTA0Nzc4LCAxMDQ3ODIsIDEwNDc4NiwgMTA0NzkwLCAxMDQ3OTQsIDEwNDc5OCwgMTA0ODAyLCAKLSAgICAxMDQ4MDYsIDEwNDgxMCwgMTA0ODE0LCAxMDQ4MTgsIDEwNDgyMiwgMTA0ODI2LCAxMDQ4MzAsIDEwNDgzNCwgMTA0ODM4LCAKLSAgICAxMDQ4NDIsIDEwNDg0NiwgMTA0ODUwLCAxMDQ4NTQsIDEwNDg1OCwgMTA0ODYyLCAxMDQ4NjYsIDEwNDg3MCwgMTA0ODc0LCAKLSAgICAxMDQ4NzgsIDEwNDg4MiwgMTA0ODg2LCAxMDQ4OTAsIDEwNDg5NCwgMTA0ODk4LCAxMDQ5MDIsIDEwNDkwNiwgMTA0OTEwLCAKLSAgICAxMDQ5MTQsIDEwNDkxOCwgMTA0OTIyLCAxMDQ5MjYsIDEwNDkzMCwgMTA0OTM0LCAxMDQ5MzgsIDEwNDk0MiwgMTA0OTQ2LCAKLSAgICAxMDQ5NTAsIDEwNDk1NCwgMTA0OTU4LCAxMDQ5NjIsIDEwNDk2NiwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OCwgMTA0OTgyLCAKLSAgICAxMDQ5ODYsIDEwNDk5MCwgMTA0OTk0LCAxMDQ5OTgsIDEwNTAwMiwgMTA1MDA2LCAxMDUwMTAsIDEwNTAxNCwgMTA1MDE4LCAKLSAgICAxMDUwMjIsIDEwNTAyNiwgMTA1MDMwLCAxMDUwMzQsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDYsIDEwNTA1MCwgMTA1MDU0LCAKLSAgICAxMDUwNTgsIDEwNTA2MiwgMTA1MDY2LCAxMDUwNzAsIDEwNTA3NCwgMTA1MDc4LCAxMDUwODIsIDEwNTA4NiwgMTA1MDkwLCAKLSAgICAxMDUwOTQsIDEwNTA5OCwgMTA1MTAyLCAxMDUxMDYsIDEwNTExMCwgMTA1MTE0LCAxMDUxMTgsIDEwNTEyMiwgMTA1MTI2LCAKLSAgICAxMDUxMzAsIDEwNTEzNCwgMTA1MTM4LCAxMDUxNDIsIDEwNTE0NiwgMTA1MTUwLCAxMDUxNTQsIDEwNTE1OCwgMTA1MTYyLCAKLSAgICAxMDUxNjYsIDEwNTE3MCwgMTA1MTc0LCAxMDUxNzgsIDEwNTE4MiwgMTA1MTg2LCAxMDUxOTAsIDEwNTE5NCwgMTA1MTk4LCAKLSAgICAxMDUyMDIsIDEwNTIwNiwgMTA1MjEwLCAxMDUyMTQsIDEwNTIxOCwgMTA1MjIyLCAxMDUyMjYsIDEwNTIzMCwgMTA1MjM0LCAKLSAgICAxMDUyMzgsIDEwNTI0MiwgMTA1MjQ2LCAxMDUyNTAsIDEwNTI1NCwgMTA1MjU4LCAxMDUyNjIsIDEwNTI2NiwgMTA1MjcwLCAKLSAgICAxMDUyNzQsIDEwNTI3OCwgMTA1MjgyLCAxMDUyODYsIDEwNTI5MCwgMTA1Mjk0LCAxMDUyOTgsIDEwNTMwMiwgMTA1MzA2LCAKLSAgICAxMDUzMTAsIDEwNTMxNCwgMTA1MzE4LCAxMDUzMjIsIDEwNTMyNiwgMTA1MzMwLCAxMDUzMzQsIDEwNTMzOCwgMTA1MzQyLCAKLSAgICAxMDUzNDYsIDEwNTM1MCwgMTA1MzU0LCAxMDUzNTgsIDEwNTM2MiwgMTA1MzY2LCAxMDUzNzAsIDEwNTM3NCwgMTA1Mzc4LCAKLSAgICAxMDUzODIsIDEwNTM4NiwgMTA1MzkwLCAxMDUzOTQsIDEwNTM5OCwgMTA1NDAyLCAxMDU0MDYsIDEwNTQxMCwgMTA1NDE0LCAKLSAgICAxMDU0MTgsIDEwNTQyMiwgMTA1NDI2LCAxMDU0MzAsIDEwNTQzNCwgMTA1NDM4LCAxMDU0NDIsIDEwNTQ0NiwgMTA1NDUwLCAKLSAgICAxMDU0NTQsIDEwNTQ1OCwgMTA1NDYyLCAxMDU0NjYsIDEwNTQ3MCwgMTA1NDc0LCAxMDU0NzgsIDEwNTQ4MiwgMTA1NDg2LCAKLSAgICAxMDU0OTAsIDEwNTQ5NCwgMTA1NDk4LCAxMDU1MDIsIDEwNTUwNiwgMTA1NTEwLCAxMDU1MTQsIDEwNTUxOCwgMTA1NTIyLCAKLSAgICAxMDU1MjYsIDEwNTUzMCwgMTA1NTM0LCAxMDU1MzgsIDEwNTU0MiwgMTA1NTQ2LCAxMDU1NTAsIDEwNTU1NCwgMTA1NTU4LCAKLSAgICAxMDU1NjIsIDEwNTU2NiwgMTA1NTcwLCAxMDU1NzQsIDEwNTU3OCwgMTA1NTgyLCAxMDU1ODYsIDEwNTU5MCwgMTA1NTk0LCAKLSAgICAxMDU1OTgsIDEwNTYwMiwgMTA1NjA2LCAxMDU2MTAsIDEwNTYxNCwgMTA1NjE4LCAxMDU2MjIsIDEwNTYyNiwgMTA1NjMwLCAKLSAgICAxMDU2MzQsIDEwNTYzOCwgMTA1NjQyLCAxMDU2NDYsIDEwNTY1MCwgMTA1NjU0LCAxMDU2NTgsIDEwNTY2MiwgMTA1NjY2LCAKLSAgICAxMDU2NzAsIDEwNTY3NCwgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkwLCAxMDU2OTQsIDEwNTY5OCwgMTA1NzAyLCAKLSAgICAxMDU3MDYsIDEwNTcxMCwgMTA1NzE0LCAxMDU3MTgsIDEwNTcyMiwgMTA1NzI2LCAxMDU3MzAsIDEwNTczNCwgMTA1NzM4LCAKLSAgICAxMDU3NDIsIDEwNTc0NiwgMTA1NzUwLCAxMDU3NTQsIDEwNTc1OCwgMTA1NzYyLCAxMDU3NjYsIDEwNTc3MCwgMTA1Nzc0LCAKLSAgICAxMDU3NzgsIDEwNTc4MiwgMTA1Nzg2LCAxMDU3OTAsIDEwNTc5NCwgMTA1Nzk4LCAxMDU4MDIsIDEwNTgwNiwgMTA1ODEwLCAKLSAgICAxMDU4MTQsIDEwNTgxOCwgMTA1ODIyLCAxMDU4MjYsIDEwNTgzMCwgMTA1ODM0LCAxMDU4MzgsIDEwNTg0MiwgMTA1ODQ2LCAKLSAgICAxMDU4NTAsIDEwNTg1NCwgMTA1ODU4LCAxMDU4NjIsIDEwNTg2NiwgMTA1ODcwLCAxMDU4NzQsIDEwNTg3OCwgMTA1ODgyLCAKLSAgICAxMDU4ODYsIDEwNTg5MCwgMTA1ODk0LCAxMDU4OTgsIDEwNTkwMiwgMTA1OTA2LCAxMDU5MTAsIDEwNTkxNCwgMTA1OTE4LCAKLSAgICAxMDU5MjIsIDEwNTkyNiwgMTA1OTMwLCAxMDU5MzQsIDEwNTkzOCwgMTA1OTQyLCAxMDU5NDYsIDEwNTk1MCwgMTA1OTU0LCAKLSAgICAxMDU5NTgsIDEwNTk2MiwgMTA1OTY2LCAxMDU5NzAsIDEwNTk3NCwgMTA1OTc4LCAxMDU5ODIsIDEwNTk4NiwgMTA1OTkwLCAKLSAgICAxMDU5OTQsIDEwNTk5OCwgMTA2MDAyLCAxMDYwMDYsIDEwNjAxMCwgMTA2MDE0LCAxMDYwMTgsIDEwNjAyMiwgMTA2MDI2LCAKLSAgICAxMDYwMzAsIDEwNjAzNCwgMTA2MDM4LCAxMDYwNDIsIDEwNjA0NiwgMTA2MDUwLCAxMDYwNTQsIDEwNjA1OCwgMTA2MDYyLCAKLSAgICAxMDYwNjYsIDEwNjA3MCwgMTA2MDc0LCAxMDYwNzgsIDEwNjA4MiwgMTA2MDg2LCAxMDYwOTAsIDEwNjA5NCwgMTA2MDk4LCAKLSAgICAxMDYxMDIsIDEwNjEwNiwgMTA2MTEwLCAxMDYxMTQsIDEwNjExOCwgMTA2MTIyLCAxMDYxMjYsIDEwNjEzMCwgMTA2MTM0LCAKLSAgICAxMDYxMzgsIDEwNjE0MiwgMTA2MTQ2LCAxMDYxNTAsIDEwNjE1NCwgMTA2MTU4LCAxMDYxNjIsIDEwNjE2NiwgMTA2MTcwLCAKLSAgICAxMDYxNzQsIDEwNjE3OCwgMTA2MTgyLCAxMDYxODYsIDEwNjE5MCwgMTA2MTk0LCAxMDYxOTgsIDEwNjIwMiwgMTA2MjA2LCAKLSAgICAxMDYyMTAsIDEwNjIxNCwgMTA2MjE4LCAxMDYyMjIsIDEwNjIyNiwgMTA2MjMwLCAxMDYyMzQsIDEwNjIzOCwgMTA2MjQyLCAKLSAgICAxMDYyNDYsIDEwNjI1MCwgMTA2MjU0LCAxMDYyNTgsIDEwNjI2MiwgMTA2MjY2LCAxMDYyNzAsIDEwNjI3NCwgMTA2Mjc4LCAKLSAgICAxMDYyODIsIDEwNjI4NiwgMTA2MjkwLCAxMDYyOTQsIDEwNjI5OCwgMTA2MzAyLCAxMDYzMDYsIDEwNjMxMCwgMTA2MzE0LCAKLSAgICAxMDYzMTgsIDEwNjMyMiwgMTA2MzI2LCAxMDYzMzAsIDEwNjMzNCwgMTA2MzM4LCAxMDYzNDIsIDEwNjM0NiwgMTA2MzUwLCAKLSAgICAxMDYzNTQsIDEwNjM1OCwgMTA2MzYyLCAxMDYzNjYsIDEwNjM3MCwgMTA2Mzc0LCAxMDYzNzgsIDEwNjM4MiwgMTA2Mzg2LCAKLSAgICAxMDYzOTAsIDEwNjM5NCwgMTA2Mzk4LCAxMDY0MDIsIDEwNjQwNiwgMTA2NDEwLCAxMDY0MTQsIDEwNjQxOCwgMTA2NDIyLCAKLSAgICAxMDY0MjYsIDEwNjQzMCwgMTA2NDM0LCAxMDY0MzgsIDEwNjQ0MiwgMTA2NDQ2LCAxMDY0NTAsIDEwNjQ1NCwgMTA2NDU4LCAKLSAgICAxMDY0NjIsIDEwNjQ2NiwgMTA2NDcwLCAxMDY0NzQsIDEwNjQ3OCwgMTA2NDgyLCAxMDY0ODYsIDEwNjQ5MCwgMTA2NDk0LCAKLSAgICAxMDY0OTgsIDEwNjUwMiwgMTA2NTA2LCAxMDY1MTAsIDEwNjUxNCwgMTA2NTE4LCAxMDY1MjIsIDEwNjUyNiwgMTA2NTMwLCAKLSAgICAxMDY1MzQsIDEwNjUzOCwgMTA2NTQyLCAxMDY1NDYsIDEwNjU1MCwgMTA2NTU0LCAxMDY1NTgsIDEwNjU2MiwgMTA2NTY2LCAKLSAgICAxMDY1NzAsIDEwNjU3NCwgMTA2NTc4LCAxMDY1ODIsIDEwNjU4NiwgMTA2NTkwLCAxMDY1OTQsIDEwNjU5OCwgMTA2NjAyLCAKLSAgICAxMDY2MDYsIDEwNjYxMCwgMTA2NjE0LCAxMDY2MTgsIDEwNjYyMiwgMTA2NjI2LCAxMDY2MzAsIDEwNjYzNCwgMTA2NjM4LCAKLSAgICAxMDY2NDIsIDEwNjY0NiwgMTA2NjUwLCAxMDY2NTQsIDEwNjY1OCwgMTA2NjYyLCAxMDY2NjYsIDEwNjY3MCwgMTA2Njc0LCAKLSAgICAxMDY2NzgsIDEwNjY4MiwgMTA2Njg2LCAxMDY2OTAsIDEwNjY5NCwgMTA2Njk4LCAxMDY3MDIsIDEwNjcwNiwgMTA2NzEwLCAKLSAgICAxMDY3MTQsIDEwNjcxOCwgMTA2NzIyLCAxMDY3MjYsIDEwNjczMCwgMTA2NzM0LCAxMDY3MzgsIDEwNjc0MiwgMTA2NzQ2LCAKLSAgICAxMDY3NTAsIDEwNjc1NCwgMTA2NzU4LCAxMDY3NjIsIDEwNjc2NiwgMTA2NzcwLCAxMDY3NzQsIDEwNjc3OCwgMTA2NzgyLCAKLSAgICAxMDY3ODYsIDEwNjc5MCwgMTA2Nzk0LCAxMDY3OTgsIDEwNjgwMiwgMTA2ODA2LCAxMDY4MTAsIDEwNjgxNCwgMTA2ODE4LCAKLSAgICAxMDY4MjIsIDEwNjgyNiwgMTA2ODMwLCAxMDY4MzQsIDEwNjgzOCwgMTA2ODQyLCAxMDY4NDYsIDEwNjg1MCwgMTA2ODU0LCAKLSAgICAxMDY4NTgsIDEwNjg2MiwgMTA2ODY2LCAxMDY4NzAsIDEwNjg3NCwgMTA2ODc4LCAxMDY4ODIsIDEwNjg4NiwgMTA2ODkwLCAKLSAgICAxMDY4OTQsIDEwNjg5OCwgMTA2OTAyLCAxMDY5MDYsIDEwNjkxMCwgMTA2OTE0LCAxMDY5MTgsIDEwNjkyMiwgMTA2OTI2LCAKLSAgICAxMDY5MzAsIDEwNjkzNCwgMTA2OTM4LCAxMDY5NDIsIDEwNjk0NiwgMTA2OTUwLCAxMDY5NTQsIDEwNjk1OCwgMTA2OTYyLCAKLSAgICAxMDY5NjYsIDEwNjk3MCwgMTA2OTc0LCAxMDY5NzgsIDEwNjk4MiwgMTA2OTg2LCAxMDY5OTAsIDEwNjk5NCwgMTA2OTk4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjA3OSwgOTYwODIsIDk2MDg3LCA5NjA5MywgCisgICAgOTYxMDEsIDk2MTA2LCA5NjExMiwgOTYxMjAsIDk2MTI2LCA5NjEzMiwgOTYxMzYsIDk2MTQwLCA5NjE0NywgOTYxNTYsIAorICAgIDk2MTYzLCA5NjE3MiwgOTYxNzgsIDk2MTg3LCA5NjE5NCwgOTYyMDEsIDk2MjA4LCA5NjIxOCwgOTYyMjQsIDk2MjI4LCAKKyAgICA5NjIzNSwgOTYyNDQsIDk2MjU0LCA5NjI2MSwgOTYyNjgsIDk2MjcyLCA5NjI3NiwgOTYyODMsIDk2MjkzLCA5NjI5NywgCisgICAgOTYzMDQsIDk2MzExLCA5NjMxOCwgOTYzMjQsIDk2MzMxLCA5NjMzOCwgOTYzNDUsIDk2MzUyLCA5NjM1NiwgOTYzNjAsIAorICAgIDk2MzY0LCA5NjM3MSwgOTYzNzUsIDk2MzgyLCA5NjM4OSwgOTY0MDMsIDk2NDEyLCA5NjQxNiwgOTY0MjAsIDk2NDI0LCAKKyAgICA5NjQzMSwgOTY0MzUsIDk2NDM5LCA5NjQ0MywgOTY0NTEsIDk2NDU5LCA5NjQ3OCwgOTY0ODgsIDk2NTA4LCA5NjUxMiwgCisgICAgOTY1MTYsIDk2NTIwLCA5NjUyNCwgOTY1MjgsIDk2NTMyLCA5NjUzNiwgOTY1NDMsIDk2NTQ3LCA5NjU1MCwgOTY1NTQsIAorICAgIDk2NTU4LCA5NjU2NCwgOTY1NzEsIDk2NTgwLCA5NjU4NCwgOTY1OTMsIDk2NjAyLCA5NjYxMCwgOTY2MTQsIDk2NjIxLCAKKyAgICA5NjYyNSwgOTY2MjksIDk2NjMzLCA5NjYzNywgOTY2NDgsIDk2NjU3LCA5NjY2NiwgOTY2NzUsIDk2Njg0LCA5NjY5NiwgCisgICAgOTY3MDUsIDk2NzE0LCA5NjcyMywgOTY3MzEsIDk2NzQwLCA5Njc1MiwgOTY3NjEsIDk2NzcwLCA5Njc3OSwgOTY3OTEsIAorICAgIDk2ODAwLCA5NjgwOSwgOTY4MjEsIDk2ODMwLCA5NjgzOSwgOTY4NTEsIDk2ODYwLCA5Njg2NCwgOTY4NjgsIDk2ODcyLCAKKyAgICA5Njg3NiwgOTY4ODAsIDk2ODg0LCA5Njg4OCwgOTY4OTUsIDk2ODk5LCA5NjkwMywgOTY5MTQsIDk2OTE4LCA5NjkyMiwgCisgICAgOTY5MjksIDk2OTM1LCA5Njk0MSwgOTY5NDUsIDk2OTUyLCA5Njk1NiwgOTY5NjAsIDk2OTY0LCA5Njk2OCwgOTY5NzIsIAorICAgIDk2OTc2LCA5Njk4MiwgOTY5OTAsIDk2OTk0LCA5Njk5OCwgOTcwMDEsIDk3MDA3LCA5NzAxNywgOTcwMjEsIDk3MDMzLCAKKyAgICA5NzA0MCwgOTcwNDcsIDk3MDU0LCA5NzA2MSwgOTcwNjcsIDk3MDcxLCA5NzA3NSwgOTcwNzksIDk3MDgzLCA5NzA5MCwgCisgICAgOTcwOTksIDk3MTA2LCA5NzExNCwgOTcxMjIsIDk3MTI4LCA5NzEzMiwgOTcxMzYsIDk3MTQwLCA5NzE0NCwgOTcxNTAsIAorICAgIDk3MTU5LCA5NzE3MSwgOTcxNzgsIDk3MTg1LCA5NzE5NCwgOTcyMDUsIDk3MjExLCA5NzIyMCwgOTcyMjksIDk3MjM2LCAKKyAgICA5NzI0NSwgOTcyNTIsIDk3MjU5LCA5NzI2OSwgOTcyNzYsIDk3MjgzLCA5NzI5MCwgOTcyOTcsIDk3MzAxLCA5NzMwNywgCisgICAgOTczMTEsIDk3MzIyLCA5NzMzMCwgOTczMzksIDk3MzUxLCA5NzM1OCwgOTczNjUsIDk3Mzc1LCA5NzM4MiwgOTczOTEsIAorICAgIDk3Mzk4LCA5NzQwNywgOTc0MTQsIDk3NDIxLCA5NzQzMSwgOTc0MzgsIDk3NDQ1LCA5NzQ1NSwgOTc0NjIsIDk3NDc0LCAKKyAgICA5NzQ4MywgOTc0OTAsIDk3NDk3LCA5NzUwNCwgOTc1MTMsIDk3NTIzLCA5NzUzNiwgOTc1NDMsIDk3NTUzLCA5NzU2MywgCisgICAgOTc1NzAsIDk3NTc5LCA5NzU5MiwgOTc1OTksIDk3NjA2LCA5NzYxMywgOTc2MjMsIDk3NjMzLCA5NzY0MCwgOTc2NTAsIAorICAgIDk3NjU3LCA5NzY2NCwgOTc2NzQsIDk3NjgwLCA5NzY4NywgOTc2OTQsIDk3NzAxLCA5NzcxMSwgOTc3MTgsIDk3NzI1LCAKKyAgICA5NzczMiwgOTc3MzgsIDk3NzQ1LCA5Nzc1NSwgOTc3NjIsIDk3NzY2LCA5Nzc3NCwgOTc3NzgsIDk3NzkwLCA5Nzc5NCwgCisgICAgOTc4MDgsIDk3ODEyLCA5NzgxNiwgOTc4MjAsIDk3ODI0LCA5NzgzMCwgOTc4MzcsIDk3ODQ1LCA5Nzg0OSwgOTc4NTMsIAorICAgIDk3ODU3LCA5Nzg2MSwgOTc4NjgsIDk3ODcyLCA5Nzg3OCwgOTc4ODQsIDk3ODkyLCA5Nzg5NiwgOTc5MDMsIDk3OTExLCAKKyAgICA5NzkxNSwgOTc5MTksIDk3OTI1LCA5NzkyOSwgOTc5MzgsIDk3OTQ3LCA5Nzk1NCwgOTc5NjQsIDk3OTcwLCA5Nzk3NCwgCisgICAgOTc5NzgsIDk3OTg2LCA5Nzk5MywgOTgwMDAsIDk4MDA2LCA5ODAxMCwgOTgwMTgsIDk4MDIyLCA5ODAyOSwgOTgwNDEsIAorICAgIDk4MDQ4LCA5ODA1OCwgOTgwNjQsIDk4MDY4LCA5ODA3NywgOTgwODQsIDk4MDkzLCA5ODA5NywgOTgxMDEsIDk4MTA4LCAKKyAgICA5ODExMiwgOTgxMTYsIDk4MTIwLCA5ODEyNCwgOTgxMjcsIDk4MTMzLCA5ODEzOSwgOTgxNDMsIDk4MTQ3LCA5ODE1NCwgCisgICAgOTgxNjEsIDk4MTY4LCA5ODE3NSwgOTgxODIsIDk4MTg5LCA5ODE5NiwgOTgyMDMsIDk4MjA5LCA5ODIxMywgOTgyMTcsIAorICAgIDk4MjI0LCA5ODIzMSwgOTgyMzgsIDk4MjQ1LCA5ODI1MiwgOTgyNTYsIDk4MjU5LCA5ODI2NCwgOTgyNjgsIDk4MjcyLCAKKyAgICA5ODI4MSwgOTgyOTAsIDk4Mjk0LCA5ODI5OCwgOTgzMDQsIDk4MzEwLCA5ODMyNywgOTgzMzMsIDk4MzM3LCA5ODM0NiwgCisgICAgOTgzNTAsIDk4MzU0LCA5ODM2MSwgOTgzNjksIDk4Mzc3LCA5ODM4MywgOTgzODcsIDk4MzkxLCA5ODM5NSwgOTgzOTksIAorICAgIDk4NDAyLCA5ODQwOCwgOTg0MTUsIDk4NDI1LCA5ODQzMiwgOTg0MzksIDk4NDQ2LCA5ODQ1MiwgOTg0NTksIDk4NDY2LCAKKyAgICA5ODQ3MywgOTg0ODAsIDk4NDg3LCA5ODQ5NiwgOTg1MDMsIDk4NTE1LCA5ODUyMiwgOTg1MjksIDk4NTM5LCA5ODU1MCwgCisgICAgOTg1NTcsIDk4NTY0LCA5ODU3MSwgOTg1NzgsIDk4NTg1LCA5ODU5MiwgOTg1OTksIDk4NjA2LCA5ODYxMywgOTg2MjAsIAorICAgIDk4NjMwLCA5ODY0MCwgOTg2NTAsIDk4NjU3LCA5ODY2NywgOTg2NzQsIDk4NjgxLCA5ODY4OCwgOTg2OTUsIDk4NzAxLCAKKyAgICA5ODcwOCwgOTg3MTUsIDk4NzIyLCA5ODcyOSwgOTg3MzYsIDk4NzQzLCA5ODc1MCwgOTg3NTcsIDk4NzYzLCA5ODc3MCwgCisgICAgOTg3NzcsIDk4Nzg2LCA5ODc5MywgOTg4MDAsIDk4ODA0LCA5ODgxMiwgOTg4MTYsIDk4ODIwLCA5ODgyNCwgOTg4MjgsIAorICAgIDk4ODMyLCA5ODgzOSwgOTg4NDMsIDk4ODUyLCA5ODg1NiwgOTg4NjMsIDk4ODcxLCA5ODg3NSwgOTg4NzksIDk4ODgzLCAKKyAgICA5ODg5NiwgOTg5MTIsIDk4OTE2LCA5ODkyMCwgOTg5MjcsIDk4OTMzLCA5ODk0MCwgOTg5NDQsIDk4OTQ4LCA5ODk1MiwgCisgICAgOTg5NTYsIDk4OTYwLCA5ODk2NywgOTg5NzEsIDk4OTg5LCA5ODk5MywgOTg5OTcsIDk5MDA0LCA5OTAwOCwgOTkwMTIsIAorICAgIDk5MDE4LCA5OTAyMiwgOTkwMjYsIDk5MDM0LCA5OTAzOCwgOTkwNDIsIDk5MDQ2LCA5OTA1MCwgOTkwNTYsIDk5MDY3LCAKKyAgICA5OTA3NiwgOTkwODUsIDk5MDkyLCA5OTA5OSwgOTkxMTAsIDk5MTE3LCA5OTEyNCwgOTkxMzEsIDk5MTM4LCA5OTE0NSwgCisgICAgOTkxNTIsIDk5MTU5LCA5OTE2OSwgOTkxNzUsIDk5MTgyLCA5OTE5MiwgOTkyMDEsIDk5MjA4LCA5OTIxNywgOTkyMjcsIAorICAgIDk5MjM0LCA5OTI0MSwgOTkyNDgsIDk5MjU1LCA5OTI2NywgOTkyNzQsIDk5MjgxLCA5OTI4OCwgOTkyOTUsIDk5MzAyLCAKKyAgICA5OTMxMiwgOTkzMTksIDk5MzI2LCA5OTMzNiwgOTkzNDksIDk5MzYxLCA5OTM2OCwgOTkzNzgsIDk5Mzg1LCA5OTM5MiwgCisgICAgOTkzOTksIDk5NDEzLCA5OTQxOSwgOTk0MjcsIDk5NDM3LCA5OTQ0NywgOTk0NTQsIDk5NDYxLCA5OTQ2NywgOTk0NzEsIAorICAgIDk5NDc4LCA5OTQ4OCwgOTk0OTQsIDk5NTA3LCA5OTUxMSwgOTk1MTUsIDk5NTIyLCA5OTUyNiwgOTk1MzMsIDk5NTQzLCAKKyAgICA5OTU0NywgOTk1NTEsIDk5NTU1LCA5OTU1OSwgOTk1NjMsIDk5NTcwLCA5OTU3NCwgOTk1ODEsIDk5NTg4LCA5OTU5NSwgCisgICAgOTk2MDQsIDk5NjEzLCA5OTYyMywgOTk2MzAsIDk5NjM3LCA5OTY0NCwgOTk2NTQsIDk5NjYxLCA5OTY3MSwgOTk2NzgsIAorICAgIDk5Njg4LCA5OTY5NSwgOTk3MDIsIDk5NzEyLCA5OTcyMiwgOTk3MjksIDk5NzM1LCA5OTc0MywgOTk3NTEsIDk5NzU3LCAKKyAgICA5OTc2MywgOTk3NjcsIDk5NzcxLCA5OTc3OCwgOTk3ODYsIDk5NzkyLCA5OTc5NiwgOTk4MDAsIDk5ODA0LCA5OTgxMSwgCisgICAgOTk4MjMsIDk5ODI2LCA5OTgzMywgOTk4MzksIDk5ODQzLCA5OTg0NywgOTk4NTEsIDk5ODU1LCA5OTg1OSwgOTk4NjMsIAorICAgIDk5ODY3LCA5OTg3MSwgOTk4NzUsIDk5ODc5LCA5OTg4NiwgOTk4OTAsIDk5ODk2LCA5OTkwMCwgOTk5MDQsIDk5OTA4LCAKKyAgICA5OTkxNCwgOTk5MjEsIDk5OTI4LCA5OTkzNSwgOTk5NDYsIDk5OTU0LCA5OTk1OCwgOTk5NjQsIDk5OTczLCA5OTk4MCwgCisgICAgOTk5ODYsIDk5OTg5LCA5OTk5MywgOTk5OTcsIDEwMDAwMywgMTAwMDEyLCAxMDAwMjAsIDEwMDAyNCwgMTAwMDMwLCAKKyAgICAxMDAwMzQsIDEwMDAzOCwgMTAwMDQyLCAxMDAwNDgsIDEwMDA1NSwgMTAwMDYxLCAxMDAwNjUsIDEwMDA3MSwgMTAwMDc1LCAKKyAgICAxMDAwNzksIDEwMDA4OCwgMTAwMTAwLCAxMDAxMDQsIDEwMDExMSwgMTAwMTE4LCAxMDAxMjgsIDEwMDEzNSwgMTAwMTQ3LCAKKyAgICAxMDAxNTQsIDEwMDE2MSwgMTAwMTY4LCAxMDAxNzksIDEwMDE4OSwgMTAwMjAyLCAxMDAyMTIsIDEwMDIxOSwgMTAwMjIzLCAKKyAgICAxMDAyMjcsIDEwMDIzMSwgMTAwMjM1LCAxMDAyNDQsIDEwMDI1MywgMTAwMjYyLCAxMDAyNzksIDEwMDI4OCwgMTAwMjk0LCAKKyAgICAxMDAzMDEsIDEwMDMwOSwgMTAwMzIyLCAxMDAzMjYsIDEwMDMzNSwgMTAwMzQ0LCAxMDAzNTMsIDEwMDM2MiwgMTAwMzczLCAKKyAgICAxMDAzODIsIDEwMDM5MSwgMTAwNDAwLCAxMDA0MDksIDEwMDQxOCwgMTAwNDI3LCAxMDA0MzcsIDEwMDQ0MCwgMTAwNDQ0LCAKKyAgICAxMDA0NDgsIDEwMDQ1MiwgMTAwNDU2LCAxMDA0NjAsIDEwMDQ2NiwgMTAwNDczLCAxMDA0ODAsIDEwMDQ4NywgMTAwNDkzLCAKKyAgICAxMDA0OTksIDEwMDUwNiwgMTAwNTEyLCAxMDA1MTksIDEwMDUyNywgMTAwNTMxLCAxMDA1MzgsIDEwMDU0NSwgMTAwNTUyLCAKKyAgICAxMDA1NjAsIDEwMDU2MywgMTAwNTY3LCAxMDA1NzEsIDEwMDU3NSwgMTAwNTc4LCAxMDA1ODQsIDEwMDU4OCwgMTAwNTk0LCAKKyAgICAxMDA2MDEsIDEwMDYwOCwgMTAwNjE0LCAxMDA2MjEsIDEwMDYyOCwgMTAwNjM1LCAxMDA2NDIsIDEwMDY0OSwgMTAwNjU2LCAKKyAgICAxMDA2NjMsIDEwMDY3MCwgMTAwNjc3LCAxMDA2ODQsIDEwMDY5MSwgMTAwNjk4LCAxMDA3MDUsIDEwMDcxMiwgMTAwNzE4LCAKKyAgICAxMDA3MjIsIDEwMDczMSwgMTAwNzM1LCAxMDA3MzksIDEwMDc0MywgMTAwNzQ3LCAxMDA3NTMsIDEwMDc2MCwgMTAwNzY3LCAKKyAgICAxMDA3NzQsIDEwMDc4MSwgMTAwNzg4LCAxMDA3OTQsIDEwMDgwMiwgMTAwODA2LCAxMDA4MTAsIDEwMDgxNCwgMTAwODE4LCAKKyAgICAxMDA4MjQsIDEwMDg0MSwgMTAwODU4LCAxMDA4NjIsIDEwMDg2NiwgMTAwODcwLCAxMDA4NzQsIDEwMDg3OCwgMTAwODgyLCAKKyAgICAxMDA4ODgsIDEwMDg5NSwgMTAwODk5LCAxMDA5MDUsIDEwMDkxMiwgMTAwOTE5LCAxMDA5MjYsIDEwMDkzMywgMTAwOTQwLCAKKyAgICAxMDA5NDksIDEwMDk1NiwgMTAwOTYzLCAxMDA5NzAsIDEwMDk3NywgMTAwOTgxLCAxMDA5ODUsIDEwMDk5MSwgMTAxMDAzLCAKKyAgICAxMDEwMDcsIDEwMTAxMSwgMTAxMDIwLCAxMDEwMjQsIDEwMTAyOCwgMTAxMDMyLCAxMDEwMzgsIDEwMTA0MiwgMTAxMDQ2LCAKKyAgICAxMDEwNTUsIDEwMTA1OSwgMTAxMDYzLCAxMDEwNjcsIDEwMTA3NCwgMTAxMDc4LCAxMDEwODIsIDEwMTA4NiwgMTAxMDkwLCAKKyAgICAxMDEwOTQsIDEwMTA5OCwgMTAxMTAyLCAxMDExMDYsIDEwMTExMiwgMTAxMTE5LCAxMDExMjYsIDEwMTEzMiwgMTAxMTM2LCAKKyAgICAxMDExNTMsIDEwMTE1OSwgMTAxMTYzLCAxMDExNjksIDEwMTE3NSwgMTAxMTgxLCAxMDExODcsIDEwMTE5MywgMTAxMTk5LCAKKyAgICAxMDEyMDMsIDEwMTIwNywgMTAxMjExLCAxMDEyMTcsIDEwMTIyMSwgMTAxMjI3LCAxMDEyMzEsIDEwMTIzNSwgMTAxMjQyLCAKKyAgICAxMDEyNDksIDEwMTI2NiwgMTAxMjcwLCAxMDEyNzQsIDEwMTI3OCwgMTAxMjgyLCAxMDEyODYsIDEwMTI5OCwgMTAxMzAxLCAKKyAgICAxMDEzMDYsIDEwMTMxMSwgMTAxMzI2LCAxMDEzMzYsIDEwMTM0OCwgMTAxMzUyLCAxMDEzNTYsIDEwMTM2MCwgMTAxMzY2LCAKKyAgICAxMDEzNzMsIDEwMTM4MCwgMTAxMzkwLCAxMDE0MDIsIDEwMTQwOCwgMTAxNDE0LCAxMDE0MjMsIDEwMTQyNywgMTAxNDMxLCAKKyAgICAxMDE0MzgsIDEwMTQ0OCwgMTAxNDU1LCAxMDE0NjEsIDEwMTQ2NSwgMTAxNDY5LCAxMDE0NzYsIDEwMTQ4MiwgMTAxNDg2LCAKKyAgICAxMDE0OTIsIDEwMTQ5NiwgMTAxNTA0LCAxMDE1MTAsIDEwMTUxNCwgMTAxNTIyLCAxMDE1MzAsIDEwMTUzNywgMTAxNTQzLCAKKyAgICAxMDE1NTAsIDEwMTU1NywgMTAxNTY3LCAxMDE1NzcsIDEwMTU4MSwgMTAxNTg1LCAxMDE1ODksIDEwMTU5MywgMTAxNTk5LCAKKyAgICAxMDE2MDYsIDEwMTYxMiwgMTAxNjE5LCAxMDE2MjYsIDEwMTYzMywgMTAxNjQyLCAxMDE2NDksIDEwMTY1NiwgMTAxNjYyLCAKKyAgICAxMDE2NjksIDEwMTY3NiwgMTAxNjgzLCAxMDE2OTAsIDEwMTY5NywgMTAxNzA0LCAxMDE3MTAsIDEwMTcxNywgMTAxNzI0LCAKKyAgICAxMDE3MzEsIDEwMTc0MCwgMTAxNzQ3LCAxMDE3NTQsIDEwMTc1OCwgMTAxNzY0LCAxMDE3NjgsIDEwMTc3NCwgMTAxNzgxLCAKKyAgICAxMDE3ODgsIDEwMTc5NSwgMTAxNzk5LCAxMDE4MDMsIDEwMTgwNywgMTAxODExLCAxMDE4MTUsIDEwMTgyMiwgMTAxODI2LCAKKyAgICAxMDE4MzAsIDEwMTgzNiwgMTAxODQ0LCAxMDE4NDgsIDEwMTg1MiwgMTAxODU2LCAxMDE4NjAsIDEwMTg2NywgMTAxODcxLCAKKyAgICAxMDE4NzUsIDEwMTg4MywgMTAxODg3LCAxMDE4OTEsIDEwMTg5NSwgMTAxODk5LCAxMDE5MDUsIDEwMTkwOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxOTEzLCAxMDE5MTksIDEwMTkyNSwgMTAxOTMyLCAKKyAgICAxMDE5MzksIDEwMTk0NiwgMTAxOTUzLCAxMDE5NjAsIDEwMTk2NywgMTAxOTczLCAxMDE5ODAsIDEwMTk4NywgMTAxOTk0LCAKKyAgICAxMDIwMDEsIDEwMjAwOCwgMTAyMDE1LCAxMDIwMjEsIDEwMjAyNywgMTAyMDMzLCAxMDIwMzksIDEwMjA0NSwgMTAyMDUxLCAKKyAgICAxMDIwNTcsIDEwMjA2MywgMTAyMDY5LCAxMDIwNzYsIDEwMjA4MywgMTAyMDkwLCAxMDIwOTcsIDEwMjEwNCwgMTAyMTExLCAKKyAgICAxMDIxMTcsIDEwMjEyMywgMTAyMTI5LCAxMDIxMzYsIDEwMjE0MywgMTAyMTQ5LCAxMDIxNTUsIDEwMjE2NCwgMTAyMTcxLCAKKyAgICAxMDIxNzgsIDEwMjE4NSwgMTAyMTkyLCAxMDIxOTksIDEwMjIwNiwgMTAyMjEyLCAxMDIyMTgsIDEwMjIyNCwgMTAyMjMzLCAKKyAgICAxMDIyNDAsIDEwMjI0NywgMTAyMjU4LCAxMDIyNjksIDEwMjI3NSwgMTAyMjgxLCAxMDIyODcsIDEwMjI5NiwgMTAyMzAzLCAKKyAgICAxMDIzMTAsIDEwMjMyMCwgMTAyMzMwLCAxMDIzNDEsIDEwMjM1MiwgMTAyMzY0LCAxMDIzNzcsIDEwMjM4OCwgMTAyMzk5LCAKKyAgICAxMDI0MTEsIDEwMjQyNCwgMTAyNDM1LCAxMDI0NDYsIDEwMjQ1NywgMTAyNDY4LCAxMDI0NzksIDEwMjQ5MSwgMTAyNDk5LCAKKyAgICAxMDI1MDcsIDEwMjUxNiwgMTAyNTI1LCAxMDI1MzQsIDEwMjU0MCwgMTAyNTQ2LCAxMDI1NTIsIDEwMjU1OSwgMTAyNTY5LCAKKyAgICAxMDI1NzYsIDEwMjU4NiwgMTAyNTkxLCAxMDI1OTYsIDEwMjYwMiwgMTAyNjA4LCAxMDI2MTYsIDEwMjYyNCwgMTAyNjMzLCAKKyAgICAxMDI2NDQsIDEwMjY1NSwgMTAyNjYzLCAxMDI2NzEsIDEwMjY4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTAyNjg5LCAxMDI3MDAsIDEwMjcwNywgMTAyNzE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDI3MjMsIDEwMjcyNywgMTAyNzMxLCAxMDI3MzUsIDEwMjczOSwgMTAyNzQzLCAxMDI3NDcsIDEwMjc1MSwgMTAyNzU1LCAKKyAgICAxMDI3NTksIDEwMjc2MywgMTAyNzY3LCAxMDI3NzEsIDEwMjc3NSwgMTAyNzc5LCAxMDI3ODMsIDEwMjc4NywgMTAyNzkxLCAKKyAgICAxMDI3OTUsIDEwMjc5OSwgMTAyODAzLCAxMDI4MDcsIDEwMjgxMSwgMTAyODE1LCAxMDI4MTksIDEwMjgyMywgMTAyODI3LCAKKyAgICAxMDI4MzEsIDEwMjgzNSwgMTAyODM5LCAxMDI4NDMsIDEwMjg0NywgMTAyODUxLCAxMDI4NTUsIDEwMjg1OSwgMTAyODYzLCAKKyAgICAxMDI4NjcsIDEwMjg3MSwgMTAyODc1LCAxMDI4NzksIDEwMjg4MywgMTAyODg3LCAxMDI4OTEsIDEwMjg5NSwgMTAyODk5LCAKKyAgICAxMDI5MDMsIDEwMjkwNywgMTAyOTExLCAxMDI5MTUsIDEwMjkxOSwgMTAyOTIzLCAxMDI5MjcsIDEwMjkzMSwgMTAyOTM1LCAKKyAgICAxMDI5MzksIDEwMjk0MywgMTAyOTQ3LCAxMDI5NTEsIDEwMjk1NSwgMTAyOTU5LCAxMDI5NjMsIDEwMjk2NywgMTAyOTcxLCAKKyAgICAxMDI5NzUsIDEwMjk3OSwgMTAyOTgzLCAxMDI5ODcsIDEwMjk5MSwgMTAyOTk1LCAxMDI5OTksIDEwMzAwMywgMTAzMDA3LCAKKyAgICAxMDMwMTEsIDEwMzAxNSwgMTAzMDE5LCAxMDMwMjMsIDEwMzAyNywgMTAzMDMxLCAxMDMwMzUsIDEwMzAzOSwgMTAzMDQzLCAKKyAgICAxMDMwNDcsIDEwMzA1MSwgMTAzMDU1LCAxMDMwNTksIDEwMzA2MywgMTAzMDY3LCAxMDMwNzEsIDEwMzA3NSwgMTAzMDc5LCAKKyAgICAxMDMwODMsIDEwMzA4NywgMTAzMDkxLCAxMDMwOTUsIDEwMzA5OSwgMTAzMTAzLCAxMDMxMDcsIDEwMzExMSwgMTAzMTE1LCAKKyAgICAxMDMxMTksIDEwMzEyMywgMTAzMTI3LCAxMDMxMzEsIDEwMzEzNSwgMTAzMTM5LCAxMDMxNDMsIDEwMzE0NywgMTAzMTUxLCAKKyAgICAxMDMxNTUsIDEwMzE1OSwgMTAzMTYzLCAxMDMxNjcsIDEwMzE3MSwgMTAzMTc1LCAxMDMxNzksIDEwMzE4MywgMTAzMTg3LCAKKyAgICAxMDMxOTEsIDEwMzE5NSwgMTAzMTk5LCAxMDMyMDMsIDEwMzIwNywgMTAzMjExLCAxMDMyMTUsIDEwMzIxOSwgMTAzMjIzLCAKKyAgICAxMDMyMjcsIDEwMzIzMSwgMTAzMjM1LCAxMDMyMzksIDEwMzI0MywgMTAzMjQ3LCAxMDMyNTEsIDEwMzI1NSwgMTAzMjU5LCAKKyAgICAxMDMyNjMsIDEwMzI2NywgMTAzMjcxLCAxMDMyNzUsIDEwMzI3OSwgMTAzMjgzLCAxMDMyODcsIDEwMzI5MSwgMTAzMjk1LCAKKyAgICAxMDMyOTksIDEwMzMwMywgMTAzMzA3LCAxMDMzMTEsIDEwMzMxNSwgMTAzMzE5LCAxMDMzMjMsIDEwMzMyNywgMTAzMzMxLCAKKyAgICAxMDMzMzUsIDEwMzMzOSwgMTAzMzQzLCAxMDMzNDcsIDEwMzM1MSwgMTAzMzU1LCAxMDMzNTksIDEwMzM2MywgMTAzMzY3LCAKKyAgICAxMDMzNzEsIDEwMzM3NSwgMTAzMzc5LCAxMDMzODMsIDEwMzM4NywgMTAzMzkxLCAxMDMzOTUsIDEwMzM5OSwgMTAzNDAzLCAKKyAgICAxMDM0MDcsIDEwMzQxMSwgMTAzNDE1LCAxMDM0MTksIDEwMzQyMywgMTAzNDI3LCAxMDM0MzEsIDEwMzQzNSwgMTAzNDM5LCAKKyAgICAxMDM0NDMsIDEwMzQ0NywgMTAzNDUxLCAxMDM0NTUsIDEwMzQ1OSwgMTAzNDYzLCAxMDM0NjcsIDEwMzQ3MSwgMTAzNDc1LCAKKyAgICAxMDM0NzksIDEwMzQ4MywgMTAzNDg3LCAxMDM0OTEsIDEwMzQ5NSwgMTAzNDk5LCAxMDM1MDMsIDEwMzUwNywgMTAzNTExLCAKKyAgICAxMDM1MTUsIDEwMzUxOSwgMTAzNTIzLCAxMDM1MjcsIDEwMzUzMSwgMTAzNTM1LCAxMDM1MzksIDEwMzU0MywgMTAzNTQ3LCAKKyAgICAxMDM1NTEsIDEwMzU1NSwgMTAzNTU5LCAxMDM1NjMsIDEwMzU2NywgMTAzNTcxLCAxMDM1NzUsIDEwMzU3OSwgMTAzNTgzLCAKKyAgICAxMDM1ODcsIDEwMzU5MSwgMTAzNTk1LCAxMDM1OTksIDEwMzYwMywgMTAzNjA3LCAxMDM2MTEsIDEwMzYxNSwgMTAzNjE5LCAKKyAgICAxMDM2MjMsIDEwMzYyNywgMTAzNjMxLCAxMDM2MzUsIDEwMzYzOSwgMTAzNjQzLCAxMDM2NDcsIDEwMzY1MSwgMTAzNjU1LCAKKyAgICAxMDM2NTksIDEwMzY2MywgMTAzNjY3LCAxMDM2NzEsIDEwMzY3NSwgMTAzNjc5LCAxMDM2ODMsIDEwMzY4NywgMTAzNjkxLCAKKyAgICAxMDM2OTUsIDEwMzY5OSwgMTAzNzAzLCAxMDM3MDcsIDEwMzcxMSwgMTAzNzE1LCAxMDM3MTksIDEwMzcyMywgMTAzNzI3LCAKKyAgICAxMDM3MzEsIDEwMzczNSwgMTAzNzM5LCAxMDM3NDMsIDEwMzc0NywgMTAzNzUxLCAxMDM3NTUsIDEwMzc1OSwgMTAzNzYzLCAKKyAgICAxMDM3NjcsIDEwMzc3MSwgMTAzNzc1LCAxMDM3NzksIDEwMzc4MywgMTAzNzg3LCAxMDM3OTEsIDEwMzc5NSwgMTAzNzk5LCAKKyAgICAxMDM4MDMsIDEwMzgwNywgMTAzODExLCAxMDM4MTUsIDEwMzgxOSwgMTAzODIzLCAxMDM4MjcsIDEwMzgzMSwgMTAzODM1LCAKKyAgICAxMDM4MzksIDEwMzg0MywgMTAzODQ3LCAxMDM4NTEsIDEwMzg1NSwgMTAzODU5LCAxMDM4NjMsIDEwMzg2NywgMTAzODcxLCAKKyAgICAxMDM4NzUsIDEwMzg3OSwgMTAzODgzLCAxMDM4ODcsIDEwMzg5MSwgMTAzODk1LCAxMDM4OTksIDEwMzkwMywgMTAzOTA3LCAKKyAgICAxMDM5MTEsIDEwMzkxNSwgMTAzOTE5LCAxMDM5MjMsIDEwMzkyNywgMTAzOTMxLCAxMDM5MzUsIDEwMzkzOSwgMTAzOTQzLCAKKyAgICAxMDM5NDcsIDEwMzk1MSwgMTAzOTU1LCAxMDM5NTksIDEwMzk2MywgMTAzOTY3LCAxMDM5NzEsIDEwMzk3NSwgMTAzOTc5LCAKKyAgICAxMDM5ODMsIDEwMzk4NywgMTAzOTkxLCAxMDM5OTUsIDEwMzk5OSwgMTA0MDAzLCAxMDQwMDcsIDEwNDAxMSwgMTA0MDE1LCAKKyAgICAxMDQwMTksIDEwNDAyMywgMTA0MDI3LCAxMDQwMzEsIDEwNDAzNSwgMTA0MDM5LCAxMDQwNDMsIDEwNDA0NywgMTA0MDUxLCAKKyAgICAxMDQwNTUsIDEwNDA1OSwgMTA0MDYzLCAxMDQwNjcsIDEwNDA3MSwgMTA0MDc1LCAxMDQwNzksIDEwNDA4MywgMTA0MDg3LCAKKyAgICAxMDQwOTEsIDEwNDA5NSwgMTA0MDk5LCAxMDQxMDMsIDEwNDEwNywgMTA0MTExLCAxMDQxMTUsIDEwNDExOSwgMTA0MTIzLCAKKyAgICAxMDQxMjcsIDEwNDEzMSwgMTA0MTM1LCAxMDQxMzksIDEwNDE0MywgMTA0MTQ3LCAxMDQxNTEsIDEwNDE1NSwgMTA0MTU5LCAKKyAgICAxMDQxNjMsIDEwNDE2NywgMTA0MTcxLCAxMDQxNzUsIDEwNDE3OSwgMTA0MTgzLCAxMDQxODcsIDEwNDE5MSwgMTA0MTk1LCAKKyAgICAxMDQxOTksIDEwNDIwMywgMTA0MjA3LCAxMDQyMTEsIDEwNDIxNSwgMTA0MjE5LCAxMDQyMjMsIDEwNDIyNywgMTA0MjMxLCAKKyAgICAxMDQyMzUsIDEwNDIzOSwgMTA0MjQzLCAxMDQyNDcsIDEwNDI1MSwgMTA0MjU1LCAxMDQyNTksIDEwNDI2MywgMTA0MjY3LCAKKyAgICAxMDQyNzEsIDEwNDI3NSwgMTA0Mjc5LCAxMDQyODMsIDEwNDI4NywgMTA0MjkxLCAxMDQyOTUsIDEwNDI5OSwgMTA0MzAzLCAKKyAgICAxMDQzMDcsIDEwNDMxMSwgMTA0MzE1LCAxMDQzMTksIDEwNDMyMywgMTA0MzI3LCAxMDQzMzEsIDEwNDMzNSwgMTA0MzM5LCAKKyAgICAxMDQzNDMsIDEwNDM0NywgMTA0MzUxLCAxMDQzNTUsIDEwNDM1OSwgMTA0MzYzLCAxMDQzNjcsIDEwNDM3MSwgMTA0Mzc1LCAKKyAgICAxMDQzNzksIDEwNDM4MywgMTA0Mzg3LCAxMDQzOTEsIDEwNDM5NSwgMTA0Mzk5LCAxMDQ0MDMsIDEwNDQwNywgMTA0NDExLCAKKyAgICAxMDQ0MTUsIDEwNDQxOSwgMTA0NDIzLCAxMDQ0MjcsIDEwNDQzMSwgMTA0NDM1LCAxMDQ0MzksIDEwNDQ0MywgMTA0NDQ3LCAKKyAgICAxMDQ0NTEsIDEwNDQ1NSwgMTA0NDU5LCAxMDQ0NjMsIDEwNDQ2NywgMTA0NDcxLCAxMDQ0NzUsIDEwNDQ3OSwgMTA0NDgzLCAKKyAgICAxMDQ0ODcsIDEwNDQ5MSwgMTA0NDk1LCAxMDQ0OTksIDEwNDUwMywgMTA0NTA3LCAxMDQ1MTEsIDEwNDUxNSwgMTA0NTE5LCAKKyAgICAxMDQ1MjMsIDEwNDUyNywgMTA0NTMxLCAxMDQ1MzUsIDEwNDUzOSwgMTA0NTQzLCAxMDQ1NDcsIDEwNDU1MSwgMTA0NTU1LCAKKyAgICAxMDQ1NTksIDEwNDU2MywgMTA0NTY3LCAxMDQ1NzEsIDEwNDU3NSwgMTA0NTc5LCAxMDQ1ODMsIDEwNDU4NywgMTA0NTkxLCAKKyAgICAxMDQ1OTUsIDEwNDU5OSwgMTA0NjAzLCAxMDQ2MDcsIDEwNDYxMSwgMTA0NjE1LCAxMDQ2MTksIDEwNDYyMywgMTA0NjI3LCAKKyAgICAxMDQ2MzEsIDEwNDYzNSwgMTA0NjM5LCAxMDQ2NDMsIDEwNDY0NywgMTA0NjUxLCAxMDQ2NTUsIDEwNDY1OSwgMTA0NjYzLCAKKyAgICAxMDQ2NjcsIDEwNDY3MSwgMTA0Njc1LCAxMDQ2NzksIDEwNDY4MywgMTA0Njg3LCAxMDQ2OTEsIDEwNDY5NSwgMTA0Njk5LCAKKyAgICAxMDQ3MDMsIDEwNDcwNywgMTA0NzExLCAxMDQ3MTUsIDEwNDcxOSwgMTA0NzIzLCAxMDQ3MjcsIDEwNDczMSwgMTA0NzM1LCAKKyAgICAxMDQ3MzksIDEwNDc0MywgMTA0NzQ3LCAxMDQ3NTEsIDEwNDc1NSwgMTA0NzU5LCAxMDQ3NjMsIDEwNDc2NywgMTA0NzcxLCAKKyAgICAxMDQ3NzUsIDEwNDc3OSwgMTA0NzgzLCAxMDQ3ODcsIDEwNDc5MSwgMTA0Nzk1LCAxMDQ3OTksIDEwNDgwMywgMTA0ODA3LCAKKyAgICAxMDQ4MTEsIDEwNDgxNSwgMTA0ODE5LCAxMDQ4MjMsIDEwNDgyNywgMTA0ODMxLCAxMDQ4MzUsIDEwNDgzOSwgMTA0ODQzLCAKKyAgICAxMDQ4NDcsIDEwNDg1MSwgMTA0ODU1LCAxMDQ4NTksIDEwNDg2MywgMTA0ODY3LCAxMDQ4NzEsIDEwNDg3NSwgMTA0ODc5LCAKKyAgICAxMDQ4ODMsIDEwNDg4NywgMTA0ODkxLCAxMDQ4OTUsIDEwNDg5OSwgMTA0OTAzLCAxMDQ5MDcsIDEwNDkxMSwgMTA0OTE1LCAKKyAgICAxMDQ5MTksIDEwNDkyMywgMTA0OTI3LCAxMDQ5MzEsIDEwNDkzNSwgMTA0OTM5LCAxMDQ5NDMsIDEwNDk0NywgMTA0OTUxLCAKKyAgICAxMDQ5NTUsIDEwNDk1OSwgMTA0OTYzLCAxMDQ5NjcsIDEwNDk3MSwgMTA0OTc1LCAxMDQ5NzksIDEwNDk4MywgMTA0OTg3LCAKKyAgICAxMDQ5OTEsIDEwNDk5NSwgMTA0OTk5LCAxMDUwMDMsIDEwNTAwNywgMTA1MDExLCAxMDUwMTUsIDEwNTAxOSwgMTA1MDIzLCAKKyAgICAxMDUwMjcsIDEwNTAzMSwgMTA1MDM1LCAxMDUwMzksIDEwNTA0MywgMTA1MDQ3LCAxMDUwNTEsIDEwNTA1NSwgMTA1MDU5LCAKKyAgICAxMDUwNjMsIDEwNTA2NywgMTA1MDcxLCAxMDUwNzUsIDEwNTA3OSwgMTA1MDgzLCAxMDUwODcsIDEwNTA5MSwgMTA1MDk1LCAKKyAgICAxMDUwOTksIDEwNTEwMywgMTA1MTA3LCAxMDUxMTEsIDEwNTExNSwgMTA1MTE5LCAxMDUxMjMsIDEwNTEyNywgMTA1MTMxLCAKKyAgICAxMDUxMzUsIDEwNTEzOSwgMTA1MTQzLCAxMDUxNDcsIDEwNTE1MSwgMTA1MTU1LCAxMDUxNTksIDEwNTE2MywgMTA1MTY3LCAKKyAgICAxMDUxNzEsIDEwNTE3NSwgMTA1MTc5LCAxMDUxODMsIDEwNTE4NywgMTA1MTkxLCAxMDUxOTUsIDEwNTE5OSwgMTA1MjAzLCAKKyAgICAxMDUyMDcsIDEwNTIxMSwgMTA1MjE1LCAxMDUyMTksIDEwNTIyMywgMTA1MjI3LCAxMDUyMzEsIDEwNTIzNSwgMTA1MjM5LCAKKyAgICAxMDUyNDMsIDEwNTI0NywgMTA1MjUxLCAxMDUyNTUsIDEwNTI1OSwgMTA1MjYzLCAxMDUyNjcsIDEwNTI3MSwgMTA1Mjc1LCAKKyAgICAxMDUyNzksIDEwNTI4MywgMTA1Mjg3LCAxMDUyOTEsIDEwNTI5NSwgMTA1Mjk5LCAxMDUzMDMsIDEwNTMwNywgMTA1MzExLCAKKyAgICAxMDUzMTUsIDEwNTMxOSwgMTA1MzIzLCAxMDUzMjcsIDEwNTMzMSwgMTA1MzM1LCAxMDUzMzksIDEwNTM0MywgMTA1MzQ3LCAKKyAgICAxMDUzNTEsIDEwNTM1NSwgMTA1MzU5LCAxMDUzNjMsIDEwNTM2NywgMTA1MzcxLCAxMDUzNzUsIDEwNTM3OSwgMTA1MzgzLCAKKyAgICAxMDUzODcsIDEwNTM5MSwgMTA1Mzk1LCAxMDUzOTksIDEwNTQwMywgMTA1NDA3LCAxMDU0MTEsIDEwNTQxNSwgMTA1NDE5LCAKKyAgICAxMDU0MjMsIDEwNTQyNywgMTA1NDMxLCAxMDU0MzUsIDEwNTQzOSwgMTA1NDQzLCAxMDU0NDcsIDEwNTQ1MSwgMTA1NDU1LCAKKyAgICAxMDU0NTksIDEwNTQ2MywgMTA1NDY3LCAxMDU0NzEsIDEwNTQ3NSwgMTA1NDc5LCAxMDU0ODMsIDEwNTQ4NywgMTA1NDkxLCAKKyAgICAxMDU0OTUsIDEwNTQ5OSwgMTA1NTAzLCAxMDU1MDcsIDEwNTUxMSwgMTA1NTE1LCAxMDU1MTksIDEwNTUyMywgMTA1NTI3LCAKKyAgICAxMDU1MzEsIDEwNTUzNSwgMTA1NTM5LCAxMDU1NDMsIDEwNTU0NywgMTA1NTUxLCAxMDU1NTUsIDEwNTU1OSwgMTA1NTYzLCAKKyAgICAxMDU1NjcsIDEwNTU3MSwgMTA1NTc1LCAxMDU1NzksIDEwNTU4MywgMTA1NTg3LCAxMDU1OTEsIDEwNTU5NSwgMTA1NTk5LCAKKyAgICAxMDU2MDMsIDEwNTYwNywgMTA1NjExLCAxMDU2MTUsIDEwNTYxOSwgMTA1NjIzLCAxMDU2MjcsIDEwNTYzMSwgMTA1NjM1LCAKKyAgICAxMDU2MzksIDEwNTY0MywgMTA1NjQ3LCAxMDU2NTEsIDEwNTY1NSwgMTA1NjU5LCAxMDU2NjMsIDEwNTY2NywgMTA1NjcxLCAKKyAgICAxMDU2NzUsIDEwNTY3OSwgMTA1NjgzLCAxMDU2ODcsIDEwNTY5MSwgMTA1Njk1LCAxMDU2OTksIDEwNTcwMywgMTA1NzA3LCAKKyAgICAxMDU3MTEsIDEwNTcxNSwgMTA1NzE5LCAxMDU3MjMsIDEwNTcyNywgMTA1NzMxLCAxMDU3MzUsIDEwNTczOSwgMTA1NzQzLCAKKyAgICAxMDU3NDcsIDEwNTc1MSwgMTA1NzU1LCAxMDU3NTksIDEwNTc2MywgMTA1NzY3LCAxMDU3NzEsIDEwNTc3NSwgMTA1Nzc5LCAKKyAgICAxMDU3ODMsIDEwNTc4NywgMTA1NzkxLCAxMDU3OTUsIDEwNTc5OSwgMTA1ODAzLCAxMDU4MDcsIDEwNTgxMSwgMTA1ODE1LCAKKyAgICAxMDU4MTksIDEwNTgyMywgMTA1ODI3LCAxMDU4MzEsIDEwNTgzNSwgMTA1ODM5LCAxMDU4NDMsIDEwNTg0NywgMTA1ODUxLCAKKyAgICAxMDU4NTUsIDEwNTg1OSwgMTA1ODYzLCAxMDU4NjcsIDEwNTg3MSwgMTA1ODc1LCAxMDU4NzksIDEwNTg4MywgMTA1ODg3LCAKKyAgICAxMDU4OTEsIDEwNTg5NSwgMTA1ODk5LCAxMDU5MDMsIDEwNTkwNywgMTA1OTExLCAxMDU5MTUsIDEwNTkxOSwgMTA1OTIzLCAKKyAgICAxMDU5MjcsIDEwNTkzMSwgMTA1OTM1LCAxMDU5MzksIDEwNTk0MywgMTA1OTQ3LCAxMDU5NTEsIDEwNTk1NSwgMTA1OTU5LCAKKyAgICAxMDU5NjMsIDEwNTk2NywgMTA1OTcxLCAxMDU5NzUsIDEwNTk3OSwgMTA1OTgzLCAxMDU5ODcsIDEwNTk5MSwgMTA1OTk1LCAKKyAgICAxMDU5OTksIDEwNjAwMywgMTA2MDA3LCAxMDYwMTEsIDEwNjAxNSwgMTA2MDE5LCAxMDYwMjMsIDEwNjAyNywgMTA2MDMxLCAKKyAgICAxMDYwMzUsIDEwNjAzOSwgMTA2MDQzLCAxMDYwNDcsIDEwNjA1MSwgMTA2MDU1LCAxMDYwNTksIDEwNjA2MywgMTA2MDY3LCAKKyAgICAxMDYwNzEsIDEwNjA3NSwgMTA2MDc5LCAxMDYwODMsIDEwNjA4NywgMTA2MDkxLCAxMDYwOTUsIDEwNjA5OSwgMTA2MTAzLCAKKyAgICAxMDYxMDcsIDEwNjExMSwgMTA2MTE1LCAxMDYxMTksIDEwNjEyMywgMTA2MTI3LCAxMDYxMzEsIDEwNjEzNSwgMTA2MTM5LCAKKyAgICAxMDYxNDMsIDEwNjE0NywgMTA2MTUxLCAxMDYxNTUsIDEwNjE1OSwgMTA2MTYzLCAxMDYxNjcsIDEwNjE3MSwgMTA2MTc1LCAKKyAgICAxMDYxNzksIDEwNjE4MywgMTA2MTg3LCAxMDYxOTEsIDEwNjE5NSwgMTA2MTk5LCAxMDYyMDMsIDEwNjIwNywgMTA2MjExLCAKKyAgICAxMDYyMTUsIDEwNjIxOSwgMTA2MjIzLCAxMDYyMjcsIDEwNjIzMSwgMTA2MjM1LCAxMDYyMzksIDEwNjI0MywgMTA2MjQ3LCAKKyAgICAxMDYyNTEsIDEwNjI1NSwgMTA2MjU5LCAxMDYyNjMsIDEwNjI2NywgMTA2MjcxLCAxMDYyNzUsIDEwNjI3OSwgMTA2MjgzLCAKKyAgICAxMDYyODcsIDEwNjI5MSwgMTA2Mjk1LCAxMDYyOTksIDEwNjMwMywgMTA2MzA3LCAxMDYzMTEsIDEwNjMxNSwgMTA2MzE5LCAKKyAgICAxMDYzMjMsIDEwNjMyNywgMTA2MzMxLCAxMDYzMzUsIDEwNjMzOSwgMTA2MzQzLCAxMDYzNDcsIDEwNjM1MSwgMTA2MzU1LCAKKyAgICAxMDYzNTksIDEwNjM2MywgMTA2MzY3LCAxMDYzNzEsIDEwNjM3NSwgMTA2Mzc5LCAxMDYzODMsIDEwNjM4NywgMTA2MzkxLCAKKyAgICAxMDYzOTUsIDEwNjM5OSwgMTA2NDAzLCAxMDY0MDcsIDEwNjQxMSwgMTA2NDE1LCAxMDY0MTksIDEwNjQyMywgMTA2NDI3LCAKKyAgICAxMDY0MzEsIDEwNjQzNSwgMTA2NDM5LCAxMDY0NDMsIDEwNjQ0NywgMTA2NDUxLCAxMDY0NTUsIDEwNjQ1OSwgMTA2NDYzLCAKKyAgICAxMDY0NjcsIDEwNjQ3MSwgMTA2NDc1LCAxMDY0NzksIDEwNjQ4MywgMTA2NDg3LCAxMDY0OTEsIDEwNjQ5NSwgMTA2NDk5LCAKKyAgICAxMDY1MDMsIDEwNjUwNywgMTA2NTExLCAxMDY1MTUsIDEwNjUxOSwgMTA2NTIzLCAxMDY1MjcsIDEwNjUzMSwgMTA2NTM1LCAKKyAgICAxMDY1MzksIDEwNjU0MywgMTA2NTQ3LCAxMDY1NTEsIDEwNjU1NSwgMTA2NTU5LCAxMDY1NjMsIDEwNjU2NywgMTA2NTcxLCAKKyAgICAxMDY1NzUsIDEwNjU3OSwgMTA2NTgzLCAxMDY1ODcsIDEwNjU5MSwgMTA2NTk1LCAxMDY1OTksIDEwNjYwMywgMTA2NjA3LCAKKyAgICAxMDY2MTEsIDEwNjYxNSwgMTA2NjE5LCAxMDY2MjMsIDEwNjYyNywgMTA2NjMxLCAxMDY2MzUsIDEwNjYzOSwgMTA2NjQzLCAKKyAgICAxMDY2NDcsIDEwNjY1MSwgMTA2NjU1LCAxMDY2NTksIDEwNjY2MywgMTA2NjY3LCAxMDY2NzEsIDEwNjY3NSwgMTA2Njc5LCAKKyAgICAxMDY2ODMsIDEwNjY4NywgMTA2NjkxLCAxMDY2OTUsIDEwNjY5OSwgMTA2NzAzLCAxMDY3MDcsIDEwNjcxMSwgMTA2NzE1LCAKKyAgICAxMDY3MTksIDEwNjcyMywgMTA2NzI3LCAxMDY3MzEsIDEwNjczNSwgMTA2NzM5LCAxMDY3NDMsIDEwNjc0NywgMTA2NzUxLCAKKyAgICAxMDY3NTUsIDEwNjc1OSwgMTA2NzYzLCAxMDY3NjcsIDEwNjc3MSwgMTA2Nzc1LCAxMDY3NzksIDEwNjc4MywgMTA2Nzg3LCAKKyAgICAxMDY3OTEsIDEwNjc5NSwgMTA2Nzk5LCAxMDY4MDMsIDEwNjgwNywgMTA2ODExLCAxMDY4MTUsIDEwNjgxOSwgMTA2ODIzLCAKKyAgICAxMDY4MjcsIDEwNjgzMSwgMTA2ODM1LCAxMDY4MzksIDEwNjg0MywgMTA2ODQ3LCAxMDY4NTEsIDEwNjg1NSwgMTA2ODU5LCAKKyAgICAxMDY4NjMsIDEwNjg2NywgMTA2ODcxLCAxMDY4NzUsIDEwNjg3OSwgMTA2ODgzLCAxMDY4ODcsIDEwNjg5MSwgMTA2ODk1LCAKKyAgICAxMDY4OTksIDEwNjkwMywgMTA2OTA3LCAxMDY5MTEsIDEwNjkxNSwgMTA2OTE5LCAxMDY5MjMsIDEwNjkyNywgMTA2OTMxLCAKKyAgICAxMDY5MzUsIDEwNjkzOSwgMTA2OTQzLCAxMDY5NDcsIDEwNjk1MSwgMTA2OTU1LCAxMDY5NTksIDEwNjk2MywgMTA2OTY3LCAKKyAgICAxMDY5NzEsIDEwNjk3NSwgMTA2OTc5LCAxMDY5ODMsIDEwNjk4NywgMTA2OTkxLCAxMDY5OTUsIDEwNjk5OSwgMTA3MDAzLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcwMDIsIDEwNzAwOSwgMTA3MDE2LCAxMDcwMjUsIDEwNzAzNCwgCi0gICAgMTA3MDQxLCAxMDcwNDYsIDEwNzA1MywgMTA3MDYwLCAxMDcwNjksIDEwNzA4MCwgMTA3MDkxLCAxMDcwOTYsIDEwNzEwMywgCi0gICAgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIzLCAxMDcxMjgsIDEwNzEzMywgMTA3MTM4LCAxMDcxNDMsIDEwNzE0OCwgCi0gICAgMTA3MTUzLCAxMDcxNTgsIDEwNzE2NSwgMTA3MTcyLCAxMDcxNzcsIDEwNzE4MiwgMTA3MTg3LCAxMDcxOTIsIDEwNzE5OSwgCi0gICAgMTA3MjA2LCAxMDcyMTQsIDEwNzIxOSwgMTA3MjI2LCAxMDcyMzEsIDEwNzIzNiwgMTA3MjQxLCAxMDcyNDYsIDEwNzI1MSwgCi0gICAgMTA3MjU4LCAxMDcyNjUsIDEwNzI3MCwgMTA3Mjc1LCAxMDcyODAsIDEwNzI4NSwgMTA3MjkwLCAxMDcyOTUsIDEwNzMwMCwgCi0gICAgMTA3MzA1LCAxMDczMTAsIDEwNzMxNSwgMTA3MzIwLCAxMDczMjUsIDEwNzMzMCwgMTA3MzM1LCAxMDczNDAsIDEwNzM0NSwgCi0gICAgMTA3MzUwLCAxMDczNTUsIDEwNzM2MCwgMTA3MzY3LCAxMDczNzIsIDEwNzM3NywgMTA3Mzg2LCAxMDczOTMsIDEwNzM5OCwgCi0gICAgMTA3NDAzLCAxMDc0MDgsIDEwNzQxMywgMTA3NDE4LCAxMDc0MjMsIDEwNzQyOCwgMTA3NDMzLCAxMDc0MzgsIDEwNzQ0MywgCi0gICAgMTA3NDQ4LCAxMDc0NTMsIDEwNzQ1OCwgMTA3NDYzLCAxMDc0NjgsIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgCi0gICAgMTA3NDkzLCAxMDc0OTgsIDEwNzUwNCwgMTA3NTEyLCAxMDc1MTgsIDEwNzUyNiwgMTA3NTM0LCAxMDc1NDIsIDEwNzU0OCwgCi0gICAgMTA3NTU0LCAxMDc1NjAsIDEwNzU2NiwgMTA3NTcyLCAxMDc1ODAsIDEwNzU5MCwgMTA3NTk4LCAxMDc2MDYsIDEwNzYxMiwgCi0gICAgMTA3NjE4LCAxMDc2MjYsIDEwNzYzNCwgMTA3NjQwLCAxMDc2NDgsIDEwNzY1NiwgMTA3NjY0LCAxMDc2NzAsIDEwNzY3NiwgCi0gICAgMTA3NjgyLCAxMDc2ODgsIDEwNzY5NCwgMTA3NzAwLCAxMDc3MDgsIDEwNzcxNiwgMTA3NzIyLCAxMDc3MjgsIDEwNzczNCwgCi0gICAgMTA3NzQwLCAxMDc3NDYsIDEwNzc1NCwgMTA3NzYwLCAxMDc3NjYsIDEwNzc3MiwgMTA3Nzc4LCAxMDc3ODQsIDEwNzc5MCwgCi0gICAgMTA3Nzk4LCAxMDc4MDQsIDEwNzgxMCwgMTA3ODE2LCAxMDc4MjIsIDEwNzgzMCwgMTA3ODM4LCAxMDc4NDQsIDEwNzg1MCwgCi0gICAgMTA3ODU2LCAxMDc4NjEsIDEwNzg2NywgMTA3ODczLCAxMDc4ODAsIDEwNzg4NSwgMTA3ODkwLCAxMDc4OTUsIDEwNzkwMCwgCi0gICAgMTA3OTA1LCAxMDc5MTAsIDEwNzkxNSwgMTA3OTIwLCAxMDc5MjUsIDEwNzkzNCwgMTA3OTQxLCAxMDc5NDYsIDEwNzk1MSwgCi0gICAgMTA3OTU2LCAxMDc5NjMsIDEwNzk2OCwgMTA3OTczLCAxMDc5NzgsIDEwNzk4NSwgMTA3OTkwLCAxMDc5OTUsIDEwODAwMCwgCi0gICAgMTA4MDA1LCAxMDgwMTAsIDEwODAxNSwgMTA4MDIwLCAxMDgwMjUsIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NywgCi0gICAgMTA4MDUyLCAxMDgwNTksIDEwODA2NCwgMTA4MDY5LCAxMDgwNzYsIDEwODA4MSwgMTA4MDg2LCAxMDgwOTEsIDEwODA5NiwgCi0gICAgMTA4MTAxLCAxMDgxMDYsIDEwODExMSwgMTA4MTE2LCAxMDgxMjEsIDEwODEyNiwgMTA4MTMxLCAxMDgxMzYsIDEwODE0MSwgCi0gICAgMTA4MTQ2LCAxMDgxNTEsIDEwODE1NiwgMTA4MTYxLCAxMDgxNjYsIDEwODE3MSwgMTA4MTc4LCAxMDgxODMsIDEwODE4OCwgCi0gICAgMTA4MTkzLCAxMDgxOTgsIDEwODIwMywgMTA4MjA4LCAxMDgyMTMsIDEwODIxOCwgMTA4MjIzLCAxMDgyMjgsIDEwODIzMywgCi0gICAgMTA4MjM4LCAxMDgyNDMsIDEwODI1MCwgMTA4MjU1LCAxMDgyNjAsIDEwODI2NywgMTA4MjcyLCAxMDgyNzcsIDEwODI4MiwgCi0gICAgMTA4Mjg3LCAxMDgyOTIsIDEwODI5NywgMTA4MzAyLCAxMDgzMDcsIDEwODMxMiwgMTA4MzE3LCAxMDgzMjQsIDEwODMyOSwgCi0gICAgMTA4MzM0LCAxMDgzMzksIDEwODM0NCwgMTA4MzQ5LCAxMDgzNTYsIDEwODM2MywgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgCi0gICAgMTA4MzgzLCAxMDgzODgsIDEwODM5MywgMTA4Mzk4LCAxMDg0MDMsIDEwODQwOCwgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgCi0gICAgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MywgMTA4NDU4LCAxMDg0NjMsIDEwODQ2OCwgCi0gICAgMTA4NDczLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAxMDg0OTMsIDEwODQ5OCwgMTA4NTAzLCAxMDg1MDgsIDEwODUxMywgCi0gICAgMTA4NTE4LCAxMDg1MjMsIDEwODUyOCwgMTA4NTMzLCAxMDg1MzgsIDEwODU0MywgMTA4NTUwLCAxMDg1NTUsIDEwODU2MCwgCi0gICAgMTA4NTY1LCAxMDg1NzAsIDEwODU3NSwgMTA4NTgwLCAxMDg1ODUsIDEwODU5MCwgMTA4NTk1LCAxMDg2MDAsIDEwODYwNSwgCi0gICAgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MzAsIDEwODYzNSwgMTA4NjQwLCAxMDg2NDUsIDEwODY1MCwgCi0gICAgMTA4NjU1LCAxMDg2NjAsIDEwODY2NSwgMTA4NjcwLCAxMDg2NzUsIDEwODY4MCwgMTA4Njg1LCAxMDg2OTAsIDEwODY5NSwgCi0gICAgMTA4NzAwLCAxMDg3MDUsIDEwODcxMCwgMTA4NzE1LCAxMDg3MjAsIDEwODcyNSwgMTA4NzMwLCAxMDg3MzUsIDEwODc0MCwgCi0gICAgMTA4NzQ1LCAxMDg3NTAsIDEwODc1NSwgMTA4NzYwLCAxMDg3NjUsIDEwODc3MCwgMTA4Nzc1LCAxMDg3ODAsIDEwODc4NSwgCi0gICAgMTA4NzkwLCAxMDg3OTUsIDEwODgwMCwgMTA4ODA1LCAxMDg4MTAsIDEwODgxNSwgMTA4ODIwLCAxMDg4MjUsIDEwODgzMCwgCi0gICAgMTA4ODM1LCAxMDg4NDAsIDEwODg0NywgMTA4ODUyLCAxMDg4NTcsIDEwODg2MiwgMTA4ODY3LCAxMDg4NzIsIDEwODg3NywgCi0gICAgMTA4ODgxLCAxMDg4ODYsIDEwODg5MSwgMTA4ODk2LCAxMDg5MDEsIDEwODkwNiwgMTA4OTExLCAxMDg5MTYsIDEwODkyMSwgCi0gICAgMTA4OTI2LCAxMDg5MzEsIDEwODkzNiwgMTA4OTQxLCAxMDg5NDYsIDEwODk1MSwgMTA4OTU4LCAxMDg5NjMsIDEwODk2OCwgCi0gICAgMTA4OTc0LCAxMDg5NzksIDEwODk4NCwgMTA4OTg5LCAxMDg5OTQsIDEwODk5OSwgMTA5MDA0LCAxMDkwMDksIDEwOTAxNCwgCi0gICAgMTA5MDE5LCAxMDkwMjQsIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzksIDEwOTA0NCwgMTA5MDQ5LCAxMDkwNTQsIDEwOTA1OSwgCi0gICAgMTA5MDY0LCAxMDkwNjksIDEwOTA3NCwgMTA5MDc5LCAxMDkwODQsIDEwOTA4OSwgMTA5MDk0LCAxMDkwOTksIDEwOTEwNCwgCi0gICAgMTA5MTA5LCAxMDkxMTQsIDEwOTExOSwgMTA5MTI0LCAxMDkxMjksIDEwOTEzNCwgMTA5MTM5LCAxMDkxNDQsIDEwOTE0OSwgCi0gICAgMTA5MTU0LCAxMDkxNTksIDEwOTE2NCwgMTA5MTY5LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg0LCAxMDkxODksIDEwOTE5NiwgCi0gICAgMTA5MjAxLCAxMDkyMDYsIDEwOTIxMywgMTA5MjIwLCAxMDkyMjUsIDEwOTIzMCwgMTA5MjM1LCAxMDkyNDAsIDEwOTI0NSwgCi0gICAgMTA5MjUwLCAxMDkyNTUsIDEwOTI2MCwgMTA5MjY1LCAxMDkyNzAsIDEwOTI3NSwgMTA5MjgwLCAxMDkyODUsIDEwOTI5MCwgCi0gICAgMTA5Mjk1LCAxMDkzMDAsIDEwOTMwNSwgMTA5MzEwLCAxMDkzMTUsIDEwOTMyMCwgMTA5MzI1LCAxMDkzMzAsIDEwOTMzNSwgCi0gICAgMTA5MzQwLCAxMDkzNDUsIDEwOTM1MiwgMTA5MzU3LCAxMDkzNjIsIDEwOTM2NywgMTA5MzcyLCAxMDkzNzcsIDEwOTM4MiwgCi0gICAgMTA5Mzg3LCAxMDkzOTIsIDEwOTM5NywgMTA5NDAyLCAxMDk0MDcsIDEwOTQxMiwgMTA5NDE3LCAxMDk0MjIsIDEwOTQyNywgCi0gICAgMTA5NDMyLCAxMDk0MzcsIDEwOTQ0MiwgMTA5NDQ5LCAxMDk0NTQsIDEwOTQ1OSwgMTA5NDY0LCAxMDk0NjksIDEwOTQ3NCwgCi0gICAgMTA5NDc5LCAxMDk0ODQsIDEwOTQ5MCwgMTA5NDk1LCAxMDk1MDAsIDEwOTUwNSwgMTA5NTEwLCAxMDk1MTUsIDEwOTUyMCwgCi0gICAgMTA5NTI1LCAxMDk1MzAsIDEwOTUzNywgMTA5NTQ0LCAxMDk1NDksIDEwOTU1NCwgMTA5NTU4LCAxMDk1NjMsIDEwOTU2NywgCi0gICAgMTA5NTcxLCAxMDk1NzYsIDEwOTU4MywgMTA5NTg4LCAxMDk1OTMsIDEwOTYwMiwgMTA5NjA3LCAxMDk2MTIsIDEwOTYxNywgCi0gICAgMTA5NjIyLCAxMDk2MjksIDEwOTYzNiwgMTA5NjQxLCAxMDk2NDYsIDEwOTY1MSwgMTA5NjU2LCAxMDk2NjMsIDEwOTY2OCwgCi0gICAgMTA5NjczLCAxMDk2NzgsIDEwOTY4MywgMTA5Njg4LCAxMDk2OTMsIDEwOTY5OCwgMTA5NzAzLCAxMDk3MDgsIDEwOTcxMywgCi0gICAgMTA5NzE4LCAxMDk3MjMsIDEwOTczMCwgMTA5NzM0LCAxMDk3MzksIDEwOTc0NCwgMTA5NzQ5LCAxMDk3NTQsIDEwOTc1OCwgCi0gICAgMTA5NzYzLCAxMDk3NjgsIDEwOTc3MywgMTA5Nzc4LCAxMDk3ODMsIDEwOTc4OCwgMTA5NzkzLCAxMDk3OTgsIDEwOTgwMywgCi0gICAgMTA5ODA5LCAxMDk4MTUsIDEwOTgyMSwgMTA5ODI3LCAxMDk4MzMsIDEwOTgzOSwgMTA5ODQ1LCAxMDk4NTEsIDEwOTg1NywgCi0gICAgMTA5ODYzLCAxMDk4NjksIDEwOTg3NSwgMTA5ODgwLCAxMDk4ODYsIDEwOTg5MiwgMTA5ODk4LCAxMDk5MDQsIDEwOTkxMCwgCi0gICAgMTA5OTE2LCAxMDk5MjIsIDEwOTkyOCwgMTA5OTM0LCAxMDk5NDAsIDEwOTk0NiwgMTA5OTUxLCAxMDk5NTcsIDEwOTk2MywgCi0gICAgMTA5OTY5LCAxMDk5NzUsIDEwOTk4MSwgMTA5OTg3LCAxMDk5OTMsIDEwOTk5OSwgMTEwMDA1LCAxMTAwMTEsIDExMDAxNywgCi0gICAgMTEwMDIzLCAxMTAwMjksIDExMDAzNSwgMTEwMDQxLCAxMTAwNDcsIDExMDA1MywgMTEwMDU5LCAxMTAwNjUsIDExMDA3MSwgCi0gICAgMTEwMDc2LCAxMTAwODIsIDExMDA4OCwgMTEwMDk0LCAxMTAxMDAsIDExMDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MDA3LCAxMDcwMTQsIDEwNzAyMSwgMTA3MDMwLCAxMDcwMzksIAorICAgIDEwNzA0NiwgMTA3MDUxLCAxMDcwNTgsIDEwNzA2NSwgMTA3MDc0LCAxMDcwODUsIDEwNzA5NiwgMTA3MTAxLCAxMDcxMDgsIAorICAgIDEwNzExMywgMTA3MTE4LCAxMDcxMjMsIDEwNzEyOCwgMTA3MTMzLCAxMDcxMzgsIDEwNzE0MywgMTA3MTQ4LCAxMDcxNTMsIAorICAgIDEwNzE1OCwgMTA3MTYzLCAxMDcxNzAsIDEwNzE3NywgMTA3MTgyLCAxMDcxODcsIDEwNzE5MiwgMTA3MTk3LCAxMDcyMDQsIAorICAgIDEwNzIxMSwgMTA3MjE5LCAxMDcyMjQsIDEwNzIzMSwgMTA3MjM2LCAxMDcyNDEsIDEwNzI0NiwgMTA3MjUxLCAxMDcyNTYsIAorICAgIDEwNzI2MywgMTA3MjcwLCAxMDcyNzUsIDEwNzI4MCwgMTA3Mjg1LCAxMDcyOTAsIDEwNzI5NSwgMTA3MzAwLCAxMDczMDUsIAorICAgIDEwNzMxMCwgMTA3MzE1LCAxMDczMjAsIDEwNzMyNSwgMTA3MzMwLCAxMDczMzUsIDEwNzM0MCwgMTA3MzQ1LCAxMDczNTAsIAorICAgIDEwNzM1NSwgMTA3MzYwLCAxMDczNjUsIDEwNzM3MiwgMTA3Mzc3LCAxMDczODIsIDEwNzM5MSwgMTA3Mzk4LCAxMDc0MDMsIAorICAgIDEwNzQwOCwgMTA3NDEzLCAxMDc0MTgsIDEwNzQyMywgMTA3NDI4LCAxMDc0MzMsIDEwNzQzOCwgMTA3NDQzLCAxMDc0NDgsIAorICAgIDEwNzQ1MywgMTA3NDU4LCAxMDc0NjMsIDEwNzQ2OCwgMTA3NDczLCAxMDc0NzgsIDEwNzQ4MywgMTA3NDg4LCAxMDc0OTMsIAorICAgIDEwNzQ5OCwgMTA3NTAzLCAxMDc1MDksIDEwNzUxNywgMTA3NTIzLCAxMDc1MzEsIDEwNzUzOSwgMTA3NTQ3LCAxMDc1NTMsIAorICAgIDEwNzU1OSwgMTA3NTY1LCAxMDc1NzEsIDEwNzU3NywgMTA3NTg1LCAxMDc1OTUsIDEwNzYwMywgMTA3NjExLCAxMDc2MTcsIAorICAgIDEwNzYyMywgMTA3NjMxLCAxMDc2MzksIDEwNzY0NSwgMTA3NjUzLCAxMDc2NjEsIDEwNzY2OSwgMTA3Njc1LCAxMDc2ODEsIAorICAgIDEwNzY4NywgMTA3NjkzLCAxMDc2OTksIDEwNzcwNSwgMTA3NzEzLCAxMDc3MjEsIDEwNzcyNywgMTA3NzMzLCAxMDc3MzksIAorICAgIDEwNzc0NSwgMTA3NzUxLCAxMDc3NTksIDEwNzc2NSwgMTA3NzcxLCAxMDc3NzcsIDEwNzc4MywgMTA3Nzg5LCAxMDc3OTUsIAorICAgIDEwNzgwMywgMTA3ODA5LCAxMDc4MTUsIDEwNzgyMSwgMTA3ODI3LCAxMDc4MzUsIDEwNzg0MywgMTA3ODQ5LCAxMDc4NTUsIAorICAgIDEwNzg2MSwgMTA3ODY2LCAxMDc4NzIsIDEwNzg3OCwgMTA3ODg1LCAxMDc4OTAsIDEwNzg5NSwgMTA3OTAwLCAxMDc5MDUsIAorICAgIDEwNzkxMCwgMTA3OTE1LCAxMDc5MjAsIDEwNzkyNSwgMTA3OTMwLCAxMDc5MzksIDEwNzk0NiwgMTA3OTUxLCAxMDc5NTYsIAorICAgIDEwNzk2MSwgMTA3OTY4LCAxMDc5NzMsIDEwNzk3OCwgMTA3OTgzLCAxMDc5OTAsIDEwNzk5NSwgMTA4MDAwLCAxMDgwMDUsIAorICAgIDEwODAxMCwgMTA4MDE1LCAxMDgwMjAsIDEwODAyNSwgMTA4MDMwLCAxMDgwMzUsIDEwODA0MCwgMTA4MDQ1LCAxMDgwNTIsIAorICAgIDEwODA1NywgMTA4MDY0LCAxMDgwNjksIDEwODA3NCwgMTA4MDgxLCAxMDgwODYsIDEwODA5MSwgMTA4MDk2LCAxMDgxMDEsIAorICAgIDEwODEwNiwgMTA4MTExLCAxMDgxMTYsIDEwODEyMSwgMTA4MTI2LCAxMDgxMzEsIDEwODEzNiwgMTA4MTQxLCAxMDgxNDYsIAorICAgIDEwODE1MSwgMTA4MTU2LCAxMDgxNjEsIDEwODE2NiwgMTA4MTcxLCAxMDgxNzYsIDEwODE4MywgMTA4MTg4LCAxMDgxOTMsIAorICAgIDEwODE5OCwgMTA4MjAzLCAxMDgyMDgsIDEwODIxMywgMTA4MjE4LCAxMDgyMjMsIDEwODIyOCwgMTA4MjMzLCAxMDgyMzgsIAorICAgIDEwODI0MywgMTA4MjQ4LCAxMDgyNTUsIDEwODI2MCwgMTA4MjY1LCAxMDgyNzIsIDEwODI3NywgMTA4MjgyLCAxMDgyODcsIAorICAgIDEwODI5MiwgMTA4Mjk3LCAxMDgzMDIsIDEwODMwNywgMTA4MzEyLCAxMDgzMTcsIDEwODMyMiwgMTA4MzI5LCAxMDgzMzQsIAorICAgIDEwODMzOSwgMTA4MzQ0LCAxMDgzNDksIDEwODM1NCwgMTA4MzYxLCAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAxMDgzODMsIAorICAgIDEwODM4OCwgMTA4MzkzLCAxMDgzOTgsIDEwODQwMywgMTA4NDA4LCAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAxMDg0MjgsIAorICAgIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUzLCAxMDg0NTgsIDEwODQ2MywgMTA4NDY4LCAxMDg0NzMsIAorICAgIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDEwODQ5MywgMTA4NDk4LCAxMDg1MDMsIDEwODUwOCwgMTA4NTEzLCAxMDg1MTgsIAorICAgIDEwODUyMywgMTA4NTI4LCAxMDg1MzMsIDEwODUzOCwgMTA4NTQzLCAxMDg1NDgsIDEwODU1NSwgMTA4NTYwLCAxMDg1NjUsIAorICAgIDEwODU3MCwgMTA4NTc1LCAxMDg1ODAsIDEwODU4NSwgMTA4NTkwLCAxMDg1OTUsIDEwODYwMCwgMTA4NjA1LCAxMDg2MTAsIAorICAgIDEwODYxNSwgMTA4NjIwLCAxMDg2MjUsIDEwODYzMCwgMTA4NjM1LCAxMDg2NDAsIDEwODY0NSwgMTA4NjUwLCAxMDg2NTUsIAorICAgIDEwODY2MCwgMTA4NjY1LCAxMDg2NzAsIDEwODY3NSwgMTA4NjgwLCAxMDg2ODUsIDEwODY5MCwgMTA4Njk1LCAxMDg3MDAsIAorICAgIDEwODcwNSwgMTA4NzEwLCAxMDg3MTUsIDEwODcyMCwgMTA4NzI1LCAxMDg3MzAsIDEwODczNSwgMTA4NzQwLCAxMDg3NDUsIAorICAgIDEwODc1MCwgMTA4NzU1LCAxMDg3NjAsIDEwODc2NSwgMTA4NzcwLCAxMDg3NzUsIDEwODc4MCwgMTA4Nzg1LCAxMDg3OTAsIAorICAgIDEwODc5NSwgMTA4ODAwLCAxMDg4MDUsIDEwODgxMCwgMTA4ODE1LCAxMDg4MjAsIDEwODgyNSwgMTA4ODMwLCAxMDg4MzUsIAorICAgIDEwODg0MCwgMTA4ODQ1LCAxMDg4NTIsIDEwODg1NywgMTA4ODYyLCAxMDg4NjcsIDEwODg3MiwgMTA4ODc3LCAxMDg4ODIsIAorICAgIDEwODg4NiwgMTA4ODkxLCAxMDg4OTYsIDEwODkwMSwgMTA4OTA2LCAxMDg5MTEsIDEwODkxNiwgMTA4OTIxLCAxMDg5MjYsIAorICAgIDEwODkzMSwgMTA4OTM2LCAxMDg5NDEsIDEwODk0NiwgMTA4OTUxLCAxMDg5NTYsIDEwODk2MywgMTA4OTY4LCAxMDg5NzMsIAorICAgIDEwODk3OSwgMTA4OTg0LCAxMDg5ODksIDEwODk5NCwgMTA4OTk5LCAxMDkwMDQsIDEwOTAwOSwgMTA5MDE0LCAxMDkwMTksIAorICAgIDEwOTAyNCwgMTA5MDI5LCAxMDkwMzQsIDEwOTAzOSwgMTA5MDQ0LCAxMDkwNDksIDEwOTA1NCwgMTA5MDU5LCAxMDkwNjQsIAorICAgIDEwOTA2OSwgMTA5MDc0LCAxMDkwNzksIDEwOTA4NCwgMTA5MDg5LCAxMDkwOTQsIDEwOTA5OSwgMTA5MTA0LCAxMDkxMDksIAorICAgIDEwOTExNCwgMTA5MTE5LCAxMDkxMjQsIDEwOTEyOSwgMTA5MTM0LCAxMDkxMzksIDEwOTE0NCwgMTA5MTQ5LCAxMDkxNTQsIAorICAgIDEwOTE1OSwgMTA5MTY0LCAxMDkxNjksIDEwOTE3NCwgMTA5MTc5LCAxMDkxODQsIDEwOTE4OSwgMTA5MTk0LCAxMDkyMDEsIAorICAgIDEwOTIwNiwgMTA5MjExLCAxMDkyMTgsIDEwOTIyNSwgMTA5MjMwLCAxMDkyMzUsIDEwOTI0MCwgMTA5MjQ1LCAxMDkyNTAsIAorICAgIDEwOTI1NSwgMTA5MjYwLCAxMDkyNjUsIDEwOTI3MCwgMTA5Mjc1LCAxMDkyODAsIDEwOTI4NSwgMTA5MjkwLCAxMDkyOTUsIAorICAgIDEwOTMwMCwgMTA5MzA1LCAxMDkzMTAsIDEwOTMxNSwgMTA5MzIwLCAxMDkzMjUsIDEwOTMzMCwgMTA5MzM1LCAxMDkzNDAsIAorICAgIDEwOTM0NSwgMTA5MzUwLCAxMDkzNTcsIDEwOTM2MiwgMTA5MzY3LCAxMDkzNzIsIDEwOTM3NywgMTA5MzgyLCAxMDkzODcsIAorICAgIDEwOTM5MiwgMTA5Mzk3LCAxMDk0MDIsIDEwOTQwNywgMTA5NDEyLCAxMDk0MTcsIDEwOTQyMiwgMTA5NDI3LCAxMDk0MzIsIAorICAgIDEwOTQzNywgMTA5NDQyLCAxMDk0NDcsIDEwOTQ1NCwgMTA5NDU5LCAxMDk0NjQsIDEwOTQ2OSwgMTA5NDc0LCAxMDk0NzksIAorICAgIDEwOTQ4NCwgMTA5NDg5LCAxMDk0OTUsIDEwOTUwMCwgMTA5NTA1LCAxMDk1MTAsIDEwOTUxNSwgMTA5NTIwLCAxMDk1MjUsIAorICAgIDEwOTUzMCwgMTA5NTM1LCAxMDk1NDIsIDEwOTU0OSwgMTA5NTU0LCAxMDk1NTksIDEwOTU2MywgMTA5NTY4LCAxMDk1NzIsIAorICAgIDEwOTU3NiwgMTA5NTgxLCAxMDk1ODgsIDEwOTU5MywgMTA5NTk4LCAxMDk2MDcsIDEwOTYxMiwgMTA5NjE3LCAxMDk2MjIsIAorICAgIDEwOTYyNywgMTA5NjM0LCAxMDk2NDEsIDEwOTY0NiwgMTA5NjUxLCAxMDk2NTYsIDEwOTY2MSwgMTA5NjY4LCAxMDk2NzMsIAorICAgIDEwOTY3OCwgMTA5NjgzLCAxMDk2ODgsIDEwOTY5MywgMTA5Njk4LCAxMDk3MDMsIDEwOTcwOCwgMTA5NzEzLCAxMDk3MTgsIAorICAgIDEwOTcyMywgMTA5NzI4LCAxMDk3MzUsIDEwOTczOSwgMTA5NzQ0LCAxMDk3NDksIDEwOTc1NCwgMTA5NzU5LCAxMDk3NjMsIAorICAgIDEwOTc2OCwgMTA5NzczLCAxMDk3NzgsIDEwOTc4MywgMTA5Nzg4LCAxMDk3OTMsIDEwOTc5OCwgMTA5ODAzLCAxMDk4MDgsIAorICAgIDEwOTgxNCwgMTA5ODIwLCAxMDk4MjYsIDEwOTgzMiwgMTA5ODM4LCAxMDk4NDQsIDEwOTg1MCwgMTA5ODU2LCAxMDk4NjIsIAorICAgIDEwOTg2OCwgMTA5ODc0LCAxMDk4ODAsIDEwOTg4NSwgMTA5ODkxLCAxMDk4OTcsIDEwOTkwMywgMTA5OTA5LCAxMDk5MTUsIAorICAgIDEwOTkyMSwgMTA5OTI3LCAxMDk5MzMsIDEwOTkzOSwgMTA5OTQ1LCAxMDk5NTEsIDEwOTk1NiwgMTA5OTYyLCAxMDk5NjgsIAorICAgIDEwOTk3NCwgMTA5OTgwLCAxMDk5ODYsIDEwOTk5MiwgMTA5OTk4LCAxMTAwMDQsIDExMDAxMCwgMTEwMDE2LCAxMTAwMjIsIAorICAgIDExMDAyOCwgMTEwMDM0LCAxMTAwNDAsIDExMDA0NiwgMTEwMDUyLCAxMTAwNTgsIDExMDA2NCwgMTEwMDcwLCAxMTAwNzYsIAorICAgIDExMDA4MSwgMTEwMDg3LCAxMTAwOTMsIDExMDA5OSwgMTEwMTA1LCAxMTAxMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDExMiwgMTEwMTE1LCAxMTAxMTksIAotICAgIDExMDEyMywgMTEwMTI3LCAxMTAxMzAsIDExMDEzNCwgMTEwMTM5LCAxMTAxNDMsIDExMDE0NywgMTEwMTUxLCAxMTAxNTUsIAotICAgIDExMDE1OSwgMTEwMTY0LCAxMTAxNjksIDExMDE3MywgMTEwMTc3LCAxMTAxODAsIDExMDE4NCwgMTEwMTg5LCAxMTAxOTQsIAotICAgIDExMDE5OCwgMTEwMjAyLCAxMTAyMDYsIDExMDIxMCwgMTEwMjE0LCAxMTAyMTgsIDExMDIyMiwgMTEwMjI2LCAxMTAyMzAsIAotICAgIDExMDIzNCwgMTEwMjM3LCAxMTAyNDEsIDExMDI0NSwgMTEwMjQ5LCAxMTAyNTMsIDExMDI1NywgMTEwMjYxLCAxMTAyNjcsIAotICAgIDExMDI3MCwgMTEwMjc0LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIAotICAgIDExMDMwNiwgMTEwMzExLCAxMTAzMTYsIDExMDMyMiwgMTEwMzI2LCAxMTAzMzAsIDExMDMzNCwgMTEwMzM4LCAxMTAzNDIsIAotICAgIDExMDM0NiwgMTEwMzUxLCAxMTAzNTQsIDExMDM1OCwgMTEwMzYyLCAxMTAzNjYsIDExMDM3MCwgMTEwMzc2LCAxMTAzODAsIAotICAgIDExMDM4NCwgMTEwMzg4LCAxMTAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDM5NiwgMTEwNDAwLCAKLSAgICAxMTA0MDQsIDExMDQxMCwgMTEwNDE2LCAxMTA0MjAsIDExMDQyNSwgMTEwNDMwLCAxMTA0MzUsIDExMDQ0MCwgMTEwNDQ0LCAKLSAgICAxMTA0NDksIDExMDQ1NCwgMTEwNDU5LCAxMTA0NjMsIDExMDQ2OCwgMTEwNDczLCAxMTA0NzgsIDExMDQ4MiwgMTEwNDg3LCAKLSAgICAxMTA0OTIsIDExMDQ5NywgMTEwNTAyLCAxMTA1MDcsIDExMDUxMiwgMTEwNTE3LCAxMTA1MjIsIDExMDUyNiwgMTEwNTMxLCAKLSAgICAxMTA1MzYsIDExMDU0MSwgMTEwNTQ2LCAxMTA1NTEsIDExMDU1NiwgMTEwNTYxLCAxMTA1NjYsIDExMDU3MSwgMTEwNTc2LCAKLSAgICAxMTA1ODEsIDExMDU4OCwgMTEwNTkzLCAxMTA2MDAsIDExMDYwNSwgMTEwNjEwLCAxMTA2MTUsIDExMDYyMCwgMTEwNjI1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2MzAsIDExMDYzNCwgMTEwNjQwLCAKLSAgICAxMTA2NDMsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjYyLCAxMTA2NjYsIDExMDY3MCwgMTEwNjc0LCAKLSAgICAxMTA2ODAsIDExMDY4NiwgMTEwNjkyLCAxMTA2OTgsIDExMDcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTE3LCAxMTAxMjAsIDExMDEyNCwgCisgICAgMTEwMTI4LCAxMTAxMzIsIDExMDEzNSwgMTEwMTM5LCAxMTAxNDQsIDExMDE0OCwgMTEwMTUyLCAxMTAxNTYsIDExMDE2MCwgCisgICAgMTEwMTY0LCAxMTAxNjksIDExMDE3NCwgMTEwMTc4LCAxMTAxODIsIDExMDE4NSwgMTEwMTg5LCAxMTAxOTQsIDExMDE5OSwgCisgICAgMTEwMjAzLCAxMTAyMDcsIDExMDIxMSwgMTEwMjE1LCAxMTAyMTksIDExMDIyMywgMTEwMjI3LCAxMTAyMzEsIDExMDIzNSwgCisgICAgMTEwMjM5LCAxMTAyNDIsIDExMDI0NiwgMTEwMjUwLCAxMTAyNTQsIDExMDI1OCwgMTEwMjYyLCAxMTAyNjYsIDExMDI3MiwgCisgICAgMTEwMjc1LCAxMTAyNzksIDExMDI4MywgMTEwMjg3LCAxMTAyOTEsIDExMDI5NSwgMTEwMjk5LCAxMTAzMDMsIDExMDMwNywgCisgICAgMTEwMzExLCAxMTAzMTYsIDExMDMyMSwgMTEwMzI3LCAxMTAzMzEsIDExMDMzNSwgMTEwMzM5LCAxMTAzNDMsIDExMDM0NywgCisgICAgMTEwMzUxLCAxMTAzNTYsIDExMDM1OSwgMTEwMzYzLCAxMTAzNjcsIDExMDM3MSwgMTEwMzc1LCAxMTAzODEsIDExMDM4NSwgCisgICAgMTEwMzg5LCAxMTAzOTMsIDExMDM5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNDAxLCAxMTA0MDUsIAorICAgIDExMDQwOSwgMTEwNDE1LCAxMTA0MjEsIDExMDQyNSwgMTEwNDMwLCAxMTA0MzUsIDExMDQ0MCwgMTEwNDQ1LCAxMTA0NDksIAorICAgIDExMDQ1NCwgMTEwNDU5LCAxMTA0NjQsIDExMDQ2OCwgMTEwNDczLCAxMTA0NzgsIDExMDQ4MywgMTEwNDg3LCAxMTA0OTIsIAorICAgIDExMDQ5NywgMTEwNTAyLCAxMTA1MDcsIDExMDUxMiwgMTEwNTE3LCAxMTA1MjIsIDExMDUyNywgMTEwNTMxLCAxMTA1MzYsIAorICAgIDExMDU0MSwgMTEwNTQ2LCAxMTA1NTEsIDExMDU1NiwgMTEwNTYxLCAxMTA1NjYsIDExMDU3MSwgMTEwNTc2LCAxMTA1ODEsIAorICAgIDExMDU4NiwgMTEwNTkzLCAxMTA1OTgsIDExMDYwNSwgMTEwNjEwLCAxMTA2MTUsIDExMDYyMCwgMTEwNjI1LCAxMTA2MzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDYzNSwgMTEwNjM5LCAxMTA2NDUsIAorICAgIDExMDY0OCwgMTEwNjUxLCAxMTA2NTUsIDExMDY1OSwgMTEwNjYzLCAxMTA2NjcsIDExMDY3MSwgMTEwNjc1LCAxMTA2NzksIAorICAgIDExMDY4NSwgMTEwNjkxLCAxMTA2OTcsIDExMDcwMywgMTEwNzA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA3MTAsIDExMDcxNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNzE1LCAxMTA3MjAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExMDcyMSwgMTEwNzI2LCAxMTA3MzEsIDExMDczNiwgMTEwNzQzLCAxMTA3NTAsIDExMDc1NywgMTEwNzY0LCAxMTA3NjksIAotICAgIDExMDc3NCwgMTEwNzc5LCAxMTA3ODQsIDExMDc5MSwgMTEwNzk2LCAxMTA4MDMsIDExMDgxMCwgMTEwODE1LCAxMTA4MjAsIAotICAgIDExMDgyNSwgMTEwODMyLCAxMTA4MzcsIDExMDg0MiwgMTEwODQ5LCAxMTA4NTYsIDExMDg2MSwgMTEwODY2LCAxMTA4NzEsIAotICAgIDExMDg3OCwgMTEwODg1LCAxMTA4OTIsIDExMDg5NywgMTEwOTAyLCAxMTA5MDksIDExMDkxNiwgMTEwOTIzLCAxMTA5MzAsIAotICAgIDExMDkzNSwgMTEwOTQwLCAxMTA5NDUsIDExMDk1MiwgMTEwOTU3LCAxMTA5NjIsIDExMDk2NywgMTEwOTc0LCAxMTA5ODMsIAotICAgIDExMDk5MCwgMTEwOTk1LCAxMTEwMDAsIDExMTAwNSwgMTExMDEwLCAxMTEwMTUsIDExMTAyMCwgMTExMDI5LCAxMTEwMzYsIAotICAgIDExMTA0MSwgMTExMDQ4LCAxMTEwNTUsIDExMTA2MCwgMTExMDY1LCAxMTEwNzAsIDExMTA3NywgMTExMDgyLCAxMTEwODksIAotICAgIDExMTA5NiwgMTExMTAxLCAxMTExMDYsIDExMTExMSwgMTExMTE4LCAxMTExMjUsIDExMTEzMCwgMTExMTM1LCAxMTExNDIsIAotICAgIDExMTE0OSwgMTExMTU2LCAxMTExNjEsIDExMTE2NiwgMTExMTcxLCAxMTExNzYsIDExMTE4MywgMTExMTkyLCAxMTEyMDEsIAotICAgIDExMTIwNiwgMTExMjEzLCAxMTEyMjIsIDExMTIyNywgMTExMjMyLCAxMTEyMzcsIDExMTI0MiwgMTExMjQ5LCAxMTEyNTYsIAotICAgIDExMTI2MywgMTExMjcwLCAxMTEyNzUsIDExMTI4MCwgMTExMjg1LCAxMTEyOTIsIDExMTI5OSwgMTExMzA2LCAxMTEzMTEsIAotICAgIDExMTMxNiwgMTExMzIzLCAxMTEzMjgsIDExMTMzNSwgMTExMzQwLCAxMTEzNDcsIDExMTM1MiwgMTExMzU5LCAxMTEzNjYsIAotICAgIDExMTM3MSwgMTExMzc2LCAxMTEzODEsIDExMTM4NiwgMTExMzkxLCAxMTEzOTYsIDExMTQwMSwgMTExNDA2LCAxMTE0MTEsIAotICAgIDExMTQxOCwgMTExNDI1LCAxMTE0MzIsIDExMTQzOSwgMTExNDQ2LCAxMTE0NTUsIDExMTQ2MCwgMTExNDY1LCAxMTE0NzIsIAotICAgIDExMTQ3OSwgMTExNDg0LCAxMTE0OTEsIDExMTQ5OCwgMTExNTA1LCAxMTE1MTIsIDExMTUxOSwgMTExNTI2LCAxMTE1MzEsIAotICAgIDExMTUzNiwgMTExNTQxLCAxMTE1NDYsIDExMTU1MSwgMTExNTYwLCAxMTE1NjksIDExMTU3OCwgMTExNTg3LCAxMTE1OTYsIAotICAgIDExMTYwNSwgMTExNjE0LCAxMTE2MjMsIDExMTYyOCwgMTExNjM5LCAxMTE2NTAsIDExMTY1OSwgMTExNjY0LCAxMTE2NjksIAotICAgIDExMTY3NCwgMTExNjc5LCAxMTE2ODgsIDExMTY5NSwgMTExNzAyLCAxMTE3MDksIDExMTcxNiwgMTExNzIzLCAxMTE3MzAsIAotICAgIDExMTczOSwgMTExNzQ4LCAxMTE3NTksIDExMTc2OCwgMTExNzc5LCAxMTE3ODgsIDExMTc5NSwgMTExODA0LCAxMTE4MTUsIAotICAgIDExMTgyNCwgMTExODMzLCAxMTE4NDIsIDExMTg1MSwgMTExODU4LCAxMTE4NjUsIDExMTg3MiwgMTExODgxLCAxMTE4OTAsIAotICAgIDExMTkwMSwgMTExOTEwLCAxMTE5MTksIDExMTkzMCwgMTExOTM1LCAxMTE5NDAsIDExMTk1MSwgMTExOTU5LCAxMTE5NjgsIAotICAgIDExMTk3NywgMTExOTg2LCAxMTE5OTcsIDExMjAwNiwgMTEyMDE1LCAxMTIwMjYsIDExMjAzNywgMTEyMDQ4LCAxMTIwNTksIAotICAgIDExMjA3MCwgMTEyMDgxLCAxMTIwODgsIDExMjA5NSwgMTEyMTAyLCAxMTIxMDksIDExMjEyMCwgMTEyMTI5LCAxMTIxMzYsIAotICAgIDExMjE0MywgMTEyMTUwLCAxMTIxNjEsIDExMjE3MiwgMTEyMTgzLCAxMTIxOTQsIDExMjIwNSwgMTEyMjE2LCAxMTIyMjcsIAotICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI2MSwgMTEyMjcwLCAxMTIyNzcsIDExMjI4NCwgMTEyMjkxLCAxMTIzMDAsIAotICAgIDExMjMwOSwgMTEyMzE4LCAxMTIzMjUsIDExMjMzNCwgMTEyMzQzLCAxMTIzNTIsIDExMjM1OSwgMTEyMzY2LCAxMTIzNzEsIAotICAgIDExMjM3NywgMTEyMzg0LCAxMTIzOTEsIDExMjM5OCwgMTEyNDA1LCAxMTI0MTIsIDExMjQxOSwgMTEyNDI4LCAxMTI0MzcsIAotICAgIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjQ3MSwgMTEyNDc3LCAKLSAgICAxMTI0ODIsIDExMjQ4NywgMTEyNDk0LCAxMTI1MDAsIDExMjUwNiwgMTEyNTEyLCAxMTI1MTgsIDExMjUyNCwgMTEyNTMwLCAKLSAgICAxMTI1MzYsIDExMjU0MCwgMTEyNTQ0LCAxMTI1NTAsIDExMjU1NiwgMTEyNTYyLCAxMTI1NjYsIDExMjU3MSwgMTEyNTc2LCAKLSAgICAxMTI1ODAsIDExMjU4NCwgMTEyNTg3LCAxMTI1OTMsIDExMjU5OSwgMTEyNjA1LCAxMTI2MTEsIDExMjYxNywgMTEyNjIzLCAKLSAgICAxMTI2MjksIDExMjYzNSwgMTEyNjQxLCAxMTI2NTEsIDExMjY2MSwgMTEyNjY3LCAxMTI2NzMsIDExMjY4MywgMTEyNjkzLCAKLSAgICAxMTI2OTksIDAsIDAsIDExMjcwNSwgMTEyNzEzLCAxMTI3MTgsIDExMjcyMywgMTEyNzI5LCAxMTI3MzUsIDExMjc0MSwgCi0gICAgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OSwgMTEyNzY2LCAxMTI3NzMsIDExMjc3OSwgMTEyNzg1LCAxMTI3OTEsIDExMjc5NywgCi0gICAgMTEyODAzLCAxMTI4MDksIDExMjgxNSwgMTEyODIxLCAxMTI4MjYsIDExMjgzMiwgMTEyODM4LCAxMTI4NDQsIDExMjg1MCwgCi0gICAgMTEyODU2LCAxMTI4NjUsIDExMjg3MSwgMTEyODc2LCAxMTI4ODQsIDExMjg5MSwgMTEyODk4LCAxMTI5MDcsIDExMjkxNiwgCi0gICAgMTEyOTI1LCAxMTI5MzQsIDExMjk0MywgMTEyOTUyLCAxMTI5NjEsIDExMjk3MCwgMTEyOTgwLCAxMTI5OTAsIDExMjk5OCwgCi0gICAgMTEzMDA2LCAxMTMwMTUsIDExMzAyNCwgMTEzMDMwLCAxMTMwMzYsIDExMzA0MiwgMTEzMDQ4LCAxMTMwNTYsIDExMzA2NCwgCi0gICAgMTEzMDY4LCAxMTMwNzQsIDExMzA3OSwgMTEzMDg1LCAxMTMwOTEsIDExMzA5NywgMTEzMTAzLCAxMTMxMDksIDExMzExOCwgCi0gICAgMTEzMTIzLCAxMTMxMzAsIDExMzEzNSwgMTEzMTQwLCAxMTMxNDUsIDExMzE1MSwgMTEzMTU3LCAxMTMxNjMsIDExMzE3MCwgCi0gICAgMTEzMTc1LCAxMTMxODAsIDExMzE4NSwgMTEzMTkwLCAxMTMxOTUsIDExMzIwMSwgMTEzMjA3LCAxMTMyMTMsIDExMzIxOSwgCi0gICAgMTEzMjI1LCAxMTMyMzEsIDExMzIzNywgMTEzMjQzLCAxMTMyNDgsIDExMzI1MywgMTEzMjU4LCAxMTMyNjMsIDExMzI2OCwgCi0gICAgMTEzMjczLCAxMTMyNzgsIDExMzI4MywgMTEzMjg5LCAxMTMyOTUsIDExMzMwMCwgMTEzMzA1LCAxMTMzMTAsIDExMzMxNSwgCi0gICAgMTEzMzIwLCAxMTMzMjYsIDExMzMzMywgMTEzMzM3LCAxMTMzNDEsIDExMzM0NSwgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgCi0gICAgMTEzMzYxLCAxMTMzNjUsIDExMzM3MywgMTEzMzgzLCAxMTMzODcsIDExMzM5MSwgMTEzMzk3LCAxMTM0MDMsIDExMzQwOSwgCi0gICAgMTEzNDE1LCAxMTM0MjEsIDExMzQyNywgMTEzNDMzLCAxMTM0MzksIDExMzQ0NSwgMTEzNDUxLCAxMTM0NTcsIDExMzQ2MywgCi0gICAgMTEzNDY5LCAxMTM0NzUsIDExMzQ3OSwgMTEzNDgzLCAxMTM0OTAsIDExMzQ5NiwgMTEzNTAyLCAxMTM1MDgsIDExMzUxMywgCi0gICAgMTEzNTIwLCAxMTM1MjUsIDExMzUzMSwgMTEzNTM3LCAxMTM1NDMsIDExMzU0OSwgMTEzNTU0LCAxMTM1NTgsIDExMzU2NCwgCi0gICAgMTEzNTY4LCAxMTM1NzIsIDExMzU3NiwgMTEzNTgyLCAxMTM1ODgsIDExMzU5MiwgMTEzNTk4LCAxMTM2MDQsIDExMzYxMCwgCi0gICAgMTEzNjE2LCAxMTM2MjIsIDExMzYzMCwgMTEzNjM4LCAxMTM2NDQsIDExMzY1MCwgMTEzNjU2LCAxMTM2NjIsIDExMzY3NCwgCi0gICAgMTEzNjg2LCAxMTM3MDAsIDExMzcxMiwgMTEzNzI0LCAxMTM3MzgsIDExMzc1MiwgMTEzNzY2LCAxMTM3NzAsIDExMzc3OCwgCi0gICAgMTEzNzg2LCAxMTM3OTEsIDExMzc5NSwgMTEzNzk5LCAxMTM4MDMsIDExMzgwNywgMTEzODExLCAxMTM4MTUsIDExMzgxOSwgCi0gICAgMTEzODI1LCAxMTM4MzEsIDExMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzODQzLCAxMTM4NDksIAotICAgIDExMzg1NSwgMTEzODYxLCAxMTM4NjcsIDExMzg3MywgMTEzODc5LCAxMTM4ODUsIDExMzg5MSwgMTEzODk3LCAxMTM5MDMsIAotICAgIDExMzkwOSwgMTEzOTE1LCAxMTM5MjEsIDExMzkyNywgMTEzOTMzLCAxMTM5MzksIDExMzk0NSwgMTEzOTUxLCAxMTM5NTcsIAotICAgIDExMzk2MywgMTEzOTY5LCAxMTM5NzUsIDExMzk4MSwgMTEzOTg3LCAxMTM5OTMsIDExMzk5OSwgMTE0MDA1LCAxMTQwMTEsIAotICAgIDExNDAxNywgMTE0MDIzLCAxMTQwMjksIDExNDAzNSwgMTE0MDQxLCAxMTQwNDcsIDExNDA1MywgMTE0MDU5LCAxMTQwNjUsIAotICAgIDExNDA3MSwgMTE0MDc3LCAxMTQwODMsIDExNDA4OSwgMTE0MDk1LCAxMTQxMDEsIDExNDEwNywgMTE0MTEzLCAxMTQxMTksIAotICAgIDExNDEyNSwgMTE0MTMxLCAxMTQxMzcsIDExNDE0MywgMTE0MTQ5LCAxMTQxNTUsIDExNDE2MSwgMTE0MTY3LCAxMTQxNzMsIAotICAgIDExNDE3OSwgMTE0MTg1LCAxMTQxOTEsIDExNDE5NywgMTE0MjAzLCAxMTQyMDksIDExNDIxNSwgMTE0MjIxLCAxMTQyMjcsIAotICAgIDExNDIzMywgMTE0MjM5LCAxMTQyNDQsIDExNDI0OSwgMTE0MjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTA3MjYsIDExMDczMSwgMTEwNzM2LCAxMTA3NDEsIDExMDc0OCwgMTEwNzU1LCAxMTA3NjIsIDExMDc2OSwgMTEwNzc0LCAKKyAgICAxMTA3NzksIDExMDc4NCwgMTEwNzg5LCAxMTA3OTYsIDExMDgwMSwgMTEwODA4LCAxMTA4MTUsIDExMDgyMCwgMTEwODI1LCAKKyAgICAxMTA4MzAsIDExMDgzNywgMTEwODQyLCAxMTA4NDcsIDExMDg1NCwgMTEwODYxLCAxMTA4NjYsIDExMDg3MSwgMTEwODc2LCAKKyAgICAxMTA4ODMsIDExMDg5MCwgMTEwODk3LCAxMTA5MDIsIDExMDkwNywgMTEwOTE0LCAxMTA5MjEsIDExMDkyOCwgMTEwOTM1LCAKKyAgICAxMTA5NDAsIDExMDk0NSwgMTEwOTUwLCAxMTA5NTcsIDExMDk2MiwgMTEwOTY3LCAxMTA5NzIsIDExMDk3OSwgMTEwOTg4LCAKKyAgICAxMTA5OTUsIDExMTAwMCwgMTExMDA1LCAxMTEwMTAsIDExMTAxNSwgMTExMDIwLCAxMTEwMjUsIDExMTAzNCwgMTExMDQxLCAKKyAgICAxMTEwNDYsIDExMTA1MywgMTExMDYwLCAxMTEwNjUsIDExMTA3MCwgMTExMDc1LCAxMTEwODIsIDExMTA4NywgMTExMDk0LCAKKyAgICAxMTExMDEsIDExMTEwNiwgMTExMTExLCAxMTExMTYsIDExMTEyMywgMTExMTMwLCAxMTExMzUsIDExMTE0MCwgMTExMTQ3LCAKKyAgICAxMTExNTQsIDExMTE2MSwgMTExMTY2LCAxMTExNzEsIDExMTE3NiwgMTExMTgxLCAxMTExODgsIDExMTE5NywgMTExMjA2LCAKKyAgICAxMTEyMTEsIDExMTIxOCwgMTExMjI3LCAxMTEyMzIsIDExMTIzNywgMTExMjQyLCAxMTEyNDcsIDExMTI1NCwgMTExMjYxLCAKKyAgICAxMTEyNjgsIDExMTI3NSwgMTExMjgwLCAxMTEyODUsIDExMTI5MCwgMTExMjk3LCAxMTEzMDQsIDExMTMxMSwgMTExMzE2LCAKKyAgICAxMTEzMjEsIDExMTMyOCwgMTExMzMzLCAxMTEzNDAsIDExMTM0NSwgMTExMzUyLCAxMTEzNTcsIDExMTM2NCwgMTExMzcxLCAKKyAgICAxMTEzNzYsIDExMTM4MSwgMTExMzg2LCAxMTEzOTEsIDExMTM5NiwgMTExNDAxLCAxMTE0MDYsIDExMTQxMSwgMTExNDE2LCAKKyAgICAxMTE0MjMsIDExMTQzMCwgMTExNDM3LCAxMTE0NDQsIDExMTQ1MSwgMTExNDYwLCAxMTE0NjUsIDExMTQ3MCwgMTExNDc3LCAKKyAgICAxMTE0ODQsIDExMTQ4OSwgMTExNDk2LCAxMTE1MDMsIDExMTUxMCwgMTExNTE3LCAxMTE1MjQsIDExMTUzMSwgMTExNTM2LCAKKyAgICAxMTE1NDEsIDExMTU0NiwgMTExNTUxLCAxMTE1NTYsIDExMTU2NSwgMTExNTc0LCAxMTE1ODMsIDExMTU5MiwgMTExNjAxLCAKKyAgICAxMTE2MTAsIDExMTYxOSwgMTExNjI4LCAxMTE2MzMsIDExMTY0NCwgMTExNjU1LCAxMTE2NjQsIDExMTY2OSwgMTExNjc0LCAKKyAgICAxMTE2NzksIDExMTY4NCwgMTExNjkzLCAxMTE3MDAsIDExMTcwNywgMTExNzE0LCAxMTE3MjEsIDExMTcyOCwgMTExNzM1LCAKKyAgICAxMTE3NDQsIDExMTc1MywgMTExNzY0LCAxMTE3NzMsIDExMTc4NCwgMTExNzkzLCAxMTE4MDAsIDExMTgwOSwgMTExODIwLCAKKyAgICAxMTE4MjksIDExMTgzOCwgMTExODQ3LCAxMTE4NTYsIDExMTg2MywgMTExODcwLCAxMTE4NzcsIDExMTg4NiwgMTExODk1LCAKKyAgICAxMTE5MDYsIDExMTkxNSwgMTExOTI0LCAxMTE5MzUsIDExMTk0MCwgMTExOTQ1LCAxMTE5NTYsIDExMTk2NCwgMTExOTczLCAKKyAgICAxMTE5ODIsIDExMTk5MSwgMTEyMDAyLCAxMTIwMTEsIDExMjAyMCwgMTEyMDMxLCAxMTIwNDIsIDExMjA1MywgMTEyMDY0LCAKKyAgICAxMTIwNzUsIDExMjA4NiwgMTEyMDkzLCAxMTIxMDAsIDExMjEwNywgMTEyMTE0LCAxMTIxMjUsIDExMjEzNCwgMTEyMTQxLCAKKyAgICAxMTIxNDgsIDExMjE1NSwgMTEyMTY2LCAxMTIxNzcsIDExMjE4OCwgMTEyMTk5LCAxMTIyMTAsIDExMjIyMSwgMTEyMjMyLCAKKyAgICAxMTIyNDMsIDExMjI1MCwgMTEyMjU3LCAxMTIyNjYsIDExMjI3NSwgMTEyMjgyLCAxMTIyODksIDExMjI5NiwgMTEyMzA1LCAKKyAgICAxMTIzMTQsIDExMjMyMywgMTEyMzMwLCAxMTIzMzksIDExMjM0OCwgMTEyMzU3LCAxMTIzNjQsIDExMjM3MSwgMTEyMzc2LCAKKyAgICAxMTIzODIsIDExMjM4OSwgMTEyMzk2LCAxMTI0MDMsIDExMjQxMCwgMTEyNDE3LCAxMTI0MjQsIDExMjQzMywgMTEyNDQyLCAKKyAgICAxMTI0NTEsIDExMjQ2MCwgMTEyNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTI0NzYsIDExMjQ4MiwgCisgICAgMTEyNDg3LCAxMTI0OTIsIDExMjQ5OSwgMTEyNTA1LCAxMTI1MTEsIDExMjUxNywgMTEyNTIzLCAxMTI1MjksIDExMjUzNSwgCisgICAgMTEyNTQxLCAxMTI1NDUsIDExMjU0OSwgMTEyNTU1LCAxMTI1NjEsIDExMjU2NywgMTEyNTcxLCAxMTI1NzYsIDExMjU4MSwgCisgICAgMTEyNTg1LCAxMTI1ODksIDExMjU5MiwgMTEyNTk4LCAxMTI2MDQsIDExMjYxMCwgMTEyNjE2LCAxMTI2MjIsIDExMjYyOCwgCisgICAgMTEyNjM0LCAxMTI2NDAsIDExMjY0NiwgMTEyNjU2LCAxMTI2NjYsIDExMjY3MiwgMTEyNjc4LCAxMTI2ODgsIDExMjY5OCwgCisgICAgMTEyNzA0LCAwLCAwLCAxMTI3MTAsIDExMjcxOCwgMTEyNzIzLCAxMTI3MjgsIDExMjczNCwgMTEyNzQwLCAxMTI3NDYsIAorICAgIDExMjc1MiwgMTEyNzU4LCAxMTI3NjQsIDExMjc3MSwgMTEyNzc4LCAxMTI3ODQsIDExMjc5MCwgMTEyNzk2LCAxMTI4MDIsIAorICAgIDExMjgwOCwgMTEyODE0LCAxMTI4MjAsIDExMjgyNiwgMTEyODMxLCAxMTI4MzcsIDExMjg0MywgMTEyODQ5LCAxMTI4NTUsIAorICAgIDExMjg2MSwgMTEyODcwLCAxMTI4NzYsIDExMjg4MSwgMTEyODg5LCAxMTI4OTYsIDExMjkwMywgMTEyOTEyLCAxMTI5MjEsIAorICAgIDExMjkzMCwgMTEyOTM5LCAxMTI5NDgsIDExMjk1NywgMTEyOTY2LCAxMTI5NzUsIDExMjk4NSwgMTEyOTk1LCAxMTMwMDMsIAorICAgIDExMzAxMSwgMTEzMDIwLCAxMTMwMjksIDExMzAzNSwgMTEzMDQxLCAxMTMwNDcsIDExMzA1MywgMTEzMDYxLCAxMTMwNjksIAorICAgIDExMzA3MywgMTEzMDc5LCAxMTMwODQsIDExMzA5MCwgMTEzMDk2LCAxMTMxMDIsIDExMzEwOCwgMTEzMTE0LCAxMTMxMjMsIAorICAgIDExMzEyOCwgMTEzMTM1LCAxMTMxNDAsIDExMzE0NSwgMTEzMTUwLCAxMTMxNTYsIDExMzE2MiwgMTEzMTY4LCAxMTMxNzUsIAorICAgIDExMzE4MCwgMTEzMTg1LCAxMTMxOTAsIDExMzE5NSwgMTEzMjAwLCAxMTMyMDYsIDExMzIxMiwgMTEzMjE4LCAxMTMyMjQsIAorICAgIDExMzIzMCwgMTEzMjM2LCAxMTMyNDIsIDExMzI0OCwgMTEzMjUzLCAxMTMyNTgsIDExMzI2MywgMTEzMjY4LCAxMTMyNzMsIAorICAgIDExMzI3OCwgMTEzMjgzLCAxMTMyODgsIDExMzI5NCwgMTEzMzAwLCAxMTMzMDUsIDExMzMxMCwgMTEzMzE1LCAxMTMzMjAsIAorICAgIDExMzMyNSwgMTEzMzMxLCAxMTMzMzgsIDExMzM0MiwgMTEzMzQ2LCAxMTMzNTAsIDExMzM1NCwgMTEzMzU4LCAxMTMzNjIsIAorICAgIDExMzM2NiwgMTEzMzcwLCAxMTMzNzgsIDExMzM4OCwgMTEzMzkyLCAxMTMzOTYsIDExMzQwMiwgMTEzNDA4LCAxMTM0MTQsIAorICAgIDExMzQyMCwgMTEzNDI2LCAxMTM0MzIsIDExMzQzOCwgMTEzNDQ0LCAxMTM0NTAsIDExMzQ1NiwgMTEzNDYyLCAxMTM0NjgsIAorICAgIDExMzQ3NCwgMTEzNDgwLCAxMTM0ODQsIDExMzQ4OCwgMTEzNDk1LCAxMTM1MDEsIDExMzUwNywgMTEzNTEzLCAxMTM1MTgsIAorICAgIDExMzUyNSwgMTEzNTMwLCAxMTM1MzYsIDExMzU0MiwgMTEzNTQ4LCAxMTM1NTQsIDExMzU1OSwgMTEzNTYzLCAxMTM1NjksIAorICAgIDExMzU3MywgMTEzNTc3LCAxMTM1ODEsIDExMzU4NywgMTEzNTkzLCAxMTM1OTcsIDExMzYwMywgMTEzNjA5LCAxMTM2MTUsIAorICAgIDExMzYyMSwgMTEzNjI3LCAxMTM2MzUsIDExMzY0MywgMTEzNjQ5LCAxMTM2NTUsIDExMzY2MSwgMTEzNjY3LCAxMTM2NzksIAorICAgIDExMzY5MSwgMTEzNzA1LCAxMTM3MTcsIDExMzcyOSwgMTEzNzQzLCAxMTM3NTcsIDExMzc3MSwgMTEzNzc1LCAxMTM3ODMsIAorICAgIDExMzc5MSwgMTEzNzk2LCAxMTM4MDAsIDExMzgwNCwgMTEzODA4LCAxMTM4MTIsIDExMzgxNiwgMTEzODIwLCAxMTM4MjQsIAorICAgIDExMzgzMCwgMTEzODM2LCAxMTM4NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMzg0OCwgMTEzODU0LCAKKyAgICAxMTM4NjAsIDExMzg2NiwgMTEzODcyLCAxMTM4NzgsIDExMzg4NCwgMTEzODkwLCAxMTM4OTYsIDExMzkwMiwgMTEzOTA4LCAKKyAgICAxMTM5MTQsIDExMzkyMCwgMTEzOTI2LCAxMTM5MzIsIDExMzkzOCwgMTEzOTQ0LCAxMTM5NTAsIDExMzk1NiwgMTEzOTYyLCAKKyAgICAxMTM5NjgsIDExMzk3NCwgMTEzOTgwLCAxMTM5ODYsIDExMzk5MiwgMTEzOTk4LCAxMTQwMDQsIDExNDAxMCwgMTE0MDE2LCAKKyAgICAxMTQwMjIsIDExNDAyOCwgMTE0MDM0LCAxMTQwNDAsIDExNDA0NiwgMTE0MDUyLCAxMTQwNTgsIDExNDA2NCwgMTE0MDcwLCAKKyAgICAxMTQwNzYsIDExNDA4MiwgMTE0MDg4LCAxMTQwOTQsIDExNDEwMCwgMTE0MTA2LCAxMTQxMTIsIDExNDExOCwgMTE0MTI0LCAKKyAgICAxMTQxMzAsIDExNDEzNiwgMTE0MTQyLCAxMTQxNDgsIDExNDE1NCwgMTE0MTYwLCAxMTQxNjYsIDExNDE3MiwgMTE0MTc4LCAKKyAgICAxMTQxODQsIDExNDE5MCwgMTE0MTk2LCAxMTQyMDIsIDExNDIwOCwgMTE0MjE0LCAxMTQyMjAsIDExNDIyNiwgMTE0MjMyLCAKKyAgICAxMTQyMzgsIDExNDI0NCwgMTE0MjQ5LCAxMTQyNTQsIDExNDI1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE0MjU4LCAxMTQyNjMsIDExNDI3MCwgMTE0Mjc3LCAxMTQyODQsIDExNDI5MSwgMTE0Mjk2LCAxMTQzMDAsIDExNDMwNiwgCi0gICAgMTE0MzEwLCAxMTQzMTQsIDExNDMyMCwgMTE0MzI0LCAxMTQzMjgsIDExNDMzMiwgMTE0MzM4LCAxMTQzNDUsIDExNDM0OSwgCi0gICAgMTE0MzUzLCAxMTQzNTcsIDExNDM2MSwgMTE0MzY1LCAxMTQzNjksIDExNDM3NSwgMTE0Mzc5LCAxMTQzODMsIDExNDM4NywgCi0gICAgMTE0MzkxLCAxMTQzOTUsIDExNDM5OSwgMTE0NDAzLCAxMTQ0MDcsIDExNDQxMSwgMTE0NDE1LCAxMTQ0MTksIDExNDQyMywgCi0gICAgMTE0NDI4LCAxMTQ0MzIsIDExNDQzNiwgMTE0NDQwLCAxMTQ0NDQsIDExNDQ0OCwgMTE0NDUyLCAxMTQ0NTYsIDExNDQ2MCwgCi0gICAgMTE0NDY0LCAxMTQ0NzEsIDExNDQ3NSwgMTE0NDgzLCAxMTQ0ODcsIDExNDQ5MSwgMTE0NDk1LCAxMTQ0OTksIDExNDUwMywgCi0gICAgMTE0NTA3LCAxMTQ1MTEsIDExNDUxOCwgMTE0NTIyLCAxMTQ1MjYsIDExNDUzMCwgMTE0NTM0LCAxMTQ1MzgsIDExNDU0NCwgCi0gICAgMTE0NTQ4LCAxMTQ1NTQsIDExNDU1OCwgMTE0NTYyLCAxMTQ1NjYsIDExNDU3MCwgMTE0NTc0LCAxMTQ1NzgsIDExNDU4MiwgCi0gICAgMTE0NTg2LCAxMTQ1OTAsIDExNDU5NCwgMTE0NTk4LCAxMTQ2MDIsIDExNDYwNiwgMTE0NjEwLCAxMTQ2MTQsIDExNDYxOCwgCi0gICAgMTE0NjIyLCAxMTQ2MjYsIDExNDYzMCwgMTE0NjM4LCAxMTQ2NDIsIDExNDY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTE0NjUwLCAxMTQ2NTgsIDExNDY2NiwgMTE0Njc0LCAxMTQ2ODIsIDExNDY5MCwgMTE0Njk4LCAxMTQ3MDYsIAotICAgIDExNDcxNCwgMTE0NzIyLCAxMTQ3MzAsIDExNDczOCwgMTE0NzQ2LCAxMTQ3NTQsIDExNDc2MiwgMTE0NzcwLCAxMTQ3NzgsIAotICAgIDExNDc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0Nzk0LCAxMTQ3OTgsIDExNDgwMywgCi0gICAgMTE0ODA4LCAxMTQ4MTMsIDExNDgxNywgMTE0ODIyLCAxMTQ4MjcsIDExNDgzMiwgMTE0ODM2LCAxMTQ4NDEsIDExNDg0NiwgCi0gICAgMTE0ODUwLCAxMTQ4NTQsIDExNDg1OSwgMTE0ODYzLCAxMTQ4NjgsIDExNDg3MywgMTE0ODc3LCAxMTQ4ODIsIDExNDg4NywgCi0gICAgMTE0ODkxLCAxMTQ4OTYsIDExNDkwMSwgMTE0OTA2LCAxMTQ5MTEsIDExNDkxNiwgMTE0OTIwLCAxMTQ5MjUsIDExNDkzMCwgCi0gICAgMTE0OTM1LCAxMTQ5MzksIDExNDk0NCwgMTE0OTQ5LCAxMTQ5NTQsIDExNDk1OCwgMTE0OTYzLCAxMTQ5NjgsIDExNDk3MiwgCi0gICAgMTE0OTc2LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTkwLCAxMTQ5OTUsIDExNDk5OSwgMTE1MDA0LCAxMTUwMDksIDExNTAxMywgCi0gICAgMTE1MDE4LCAxMTUwMjMsIDExNTAyOCwgMTE1MDMzLCAxMTUwMzgsIDExNTA0MiwgMTE1MDQ3LCAxMTUwNTIsIDExNTA1NywgCi0gICAgMTE1MDYxLCAxMTUwNjYsIDExNTA3MSwgMTE1MDc2LCAxMTUwODAsIDExNTA4NSwgMTE1MDkwLCAxMTUwOTQsIDExNTA5OCwgCi0gICAgMTE1MTAzLCAxMTUxMDcsIDExNTExMiwgMTE1MTE3LCAxMTUxMjEsIDExNTEyNiwgMTE1MTMxLCAxMTUxMzUsIDExNTE0MCwgCi0gICAgMTE1MTQ1LCAxMTUxNTAsIDExNTE1NSwgMTE1MTYwLCAxMTUxNjQsIDExNTE2OSwgMTE1MTc0LCAxMTUxNzksIDExNTE4MywgCi0gICAgMTE1MTg4LCAwLCAxMTUxOTMsIDExNTE5NywgMTE1MjAyLCAxMTUyMDcsIDExNTIxMSwgMTE1MjE1LCAxMTUyMjAsIAotICAgIDExNTIyNCwgMTE1MjI5LCAxMTUyMzQsIDExNTIzOCwgMTE1MjQzLCAxMTUyNDgsIDExNTI1MiwgMTE1MjU3LCAxMTUyNjIsIAotICAgIDExNTI2NywgMTE1MjcyLCAxMTUyNzcsIDExNTI4MiwgMTE1Mjg4LCAxMTUyOTQsIDExNTMwMCwgMTE1MzA1LCAxMTUzMTEsIAotICAgIDExNTMxNywgMTE1MzIzLCAxMTUzMjgsIDExNTMzNCwgMTE1MzQwLCAxMTUzNDUsIDExNTM1MCwgMTE1MzU2LCAxMTUzNjEsIAotICAgIDExNTM2NywgMTE1MzczLCAxMTUzNzgsIDExNTM4NCwgMTE1MzkwLCAxMTUzOTUsIDExNTQwMSwgMTE1NDA3LCAxMTU0MTMsIAotICAgIDExNTQxOSwgMTE1NDI1LCAxMTU0MzAsIDExNTQzNiwgMTE1NDQyLCAxMTU0NDgsIDExNTQ1MywgMTE1NDU5LCAxMTU0NjUsIAotICAgIDExNTQ3MSwgMTE1NDc2LCAxMTU0ODIsIDExNTQ4OCwgMTE1NDkzLCAxMTU0OTgsIDExNTUwNCwgMTE1NTA5LCAxMTU1MTUsIAotICAgIDExNTUyMSwgMTE1NTI2LCAxMTU1MzIsIDExNTUzOCwgMTE1NTQzLCAxMTU1NDksIDExNTU1NSwgMTE1NTYxLCAxMTU1NjcsIAotICAgIDExNTU3MywgMCwgMTE1NTc3LCAxMTU1ODIsIDAsIDAsIDExNTU4NywgMCwgMCwgMTE1NTkyLCAxMTU1OTcsIDAsIDAsIAotICAgIDExNTYwMiwgMTE1NjA3LCAxMTU2MTEsIDExNTYxNiwgMCwgMTE1NjIxLCAxMTU2MjYsIDExNTYzMSwgMTE1NjM1LCAKLSAgICAxMTU2NDAsIDExNTY0NSwgMTE1NjUwLCAxMTU2NTUsIDExNTY2MCwgMTE1NjY0LCAxMTU2NjksIDExNTY3NCwgMCwgCi0gICAgMTE1Njc5LCAwLCAxMTU2ODQsIDExNTY4OSwgMTE1NjkzLCAxMTU2OTgsIDExNTcwMywgMTE1NzA3LCAxMTU3MTEsIDAsIAotICAgIDExNTcxNiwgMTE1NzIxLCAxMTU3MjYsIDExNTczMCwgMTE1NzM1LCAxMTU3NDAsIDExNTc0NCwgMTE1NzQ5LCAxMTU3NTQsIAotICAgIDExNTc1OSwgMTE1NzY0LCAxMTU3NjksIDExNTc3NCwgMTE1NzgwLCAxMTU3ODYsIDExNTc5MiwgMTE1Nzk3LCAxMTU4MDMsIAotICAgIDExNTgwOSwgMTE1ODE1LCAxMTU4MjAsIDExNTgyNiwgMTE1ODMyLCAxMTU4MzcsIDExNTg0MiwgMTE1ODQ4LCAxMTU4NTMsIAotICAgIDExNTg1OSwgMTE1ODY1LCAxMTU4NzAsIDExNTg3NiwgMTE1ODgyLCAxMTU4ODcsIDExNTg5MywgMTE1ODk5LCAxMTU5MDUsIAotICAgIDExNTkxMSwgMTE1OTE3LCAxMTU5MjIsIDExNTkyOCwgMTE1OTM0LCAxMTU5NDAsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTcsIAotICAgIDExNTk2MywgMTE1OTY4LCAxMTU5NzQsIDExNTk4MCwgMTE1OTg1LCAxMTU5OTAsIDExNTk5NiwgMTE2MDAxLCAxMTYwMDcsIAotICAgIDExNjAxMywgMTE2MDE4LCAxMTYwMjQsIDExNjAzMCwgMTE2MDM1LCAxMTYwNDEsIDExNjA0NywgMTE2MDUzLCAxMTYwNTksIAotICAgIDExNjA2NSwgMTE2MDY5LCAwLCAxMTYwNzQsIDExNjA3OSwgMTE2MDgzLCAxMTYwODgsIDAsIDAsIDExNjA5MywgMTE2MDk4LCAKLSAgICAxMTYxMDMsIDExNjEwNywgMTE2MTExLCAxMTYxMTYsIDExNjEyMCwgMTE2MTI1LCAwLCAxMTYxMzAsIDExNjEzNSwgCi0gICAgMTE2MTQwLCAxMTYxNDQsIDExNjE0OSwgMTE2MTU0LCAxMTYxNTksIDAsIDExNjE2NCwgMTE2MTY4LCAxMTYxNzMsIAotICAgIDExNjE3OCwgMTE2MTgzLCAxMTYxODcsIDExNjE5MiwgMTE2MTk3LCAxMTYyMDIsIDExNjIwNiwgMTE2MjExLCAxMTYyMTYsIAotICAgIDExNjIyMCwgMTE2MjI0LCAxMTYyMjksIDExNjIzMywgMTE2MjM4LCAxMTYyNDMsIDExNjI0NywgMTE2MjUyLCAxMTYyNTcsIAotICAgIDExNjI2MSwgMTE2MjY2LCAxMTYyNzEsIDExNjI3NiwgMTE2MjgxLCAxMTYyODYsIDExNjI5MCwgMCwgMTE2Mjk1LCAKLSAgICAxMTYzMDAsIDExNjMwNCwgMTE2MzA5LCAwLCAxMTYzMTQsIDExNjMxOCwgMTE2MzIzLCAxMTYzMjgsIDExNjMzMiwgMCwgCi0gICAgMTE2MzM2LCAwLCAwLCAwLCAxMTYzNDAsIDExNjM0NSwgMTE2MzUwLCAxMTYzNTQsIDExNjM1OSwgMTE2MzY0LCAxMTYzNjksIAotICAgIDAsIDExNjM3NCwgMTE2Mzc4LCAxMTYzODMsIDExNjM4OCwgMTE2MzkzLCAxMTYzOTcsIDExNjQwMiwgMTE2NDA3LCAKLSAgICAxMTY0MTIsIDExNjQxNiwgMTE2NDIxLCAxMTY0MjYsIDExNjQzMCwgMTE2NDM0LCAxMTY0MzksIDExNjQ0MywgMTE2NDQ4LCAKLSAgICAxMTY0NTMsIDExNjQ1NywgMTE2NDYyLCAxMTY0NjcsIDExNjQ3MSwgMTE2NDc2LCAxMTY0ODEsIDExNjQ4NiwgMTE2NDkxLCAKLSAgICAxMTY0OTYsIDExNjUwMSwgMTE2NTA3LCAxMTY1MTMsIDExNjUxOSwgMTE2NTI0LCAxMTY1MzAsIDExNjUzNiwgMTE2NTQyLCAKLSAgICAxMTY1NDcsIDExNjU1MywgMTE2NTU5LCAxMTY1NjQsIDExNjU2OSwgMTE2NTc1LCAxMTY1ODAsIDExNjU4NiwgMTE2NTkyLCAKLSAgICAxMTY1OTcsIDExNjYwMywgMTE2NjA5LCAxMTY2MTQsIDExNjYyMCwgMTE2NjI2LCAxMTY2MzIsIDExNjYzOCwgMTE2NjQ0LCAKLSAgICAxMTY2NDksIDExNjY1NSwgMTE2NjYxLCAxMTY2NjcsIDExNjY3MiwgMTE2Njc4LCAxMTY2ODQsIDExNjY5MCwgMTE2Njk1LCAKLSAgICAxMTY3MDEsIDExNjcwNywgMTE2NzEyLCAxMTY3MTcsIDExNjcyMywgMTE2NzI4LCAxMTY3MzQsIDExNjc0MCwgMTE2NzQ1LCAKLSAgICAxMTY3NTEsIDExNjc1NywgMTE2NzYyLCAxMTY3NjgsIDExNjc3NCwgMTE2NzgwLCAxMTY3ODYsIDExNjc5MiwgMTE2Nzk2LCAKLSAgICAxMTY4MDEsIDExNjgwNiwgMTE2ODExLCAxMTY4MTUsIDExNjgyMCwgMTE2ODI1LCAxMTY4MzAsIDExNjgzNCwgMTE2ODM5LCAKLSAgICAxMTY4NDQsIDExNjg0OCwgMTE2ODUyLCAxMTY4NTcsIDExNjg2MSwgMTE2ODY2LCAxMTY4NzEsIDExNjg3NSwgMTE2ODgwLCAKLSAgICAxMTY4ODUsIDExNjg4OSwgMTE2ODk0LCAxMTY4OTksIDExNjkwNCwgMTE2OTA5LCAxMTY5MTQsIDExNjkxOCwgMTE2OTIzLCAKLSAgICAxMTY5MjgsIDExNjkzMywgMTE2OTM3LCAxMTY5NDIsIDExNjk0NywgMTE2OTUyLCAxMTY5NTYsIDExNjk2MSwgMTE2OTY2LCAKLSAgICAxMTY5NzAsIDExNjk3NCwgMTE2OTc5LCAxMTY5ODMsIDExNjk4OCwgMTE2OTkzLCAxMTY5OTcsIDExNzAwMiwgMTE3MDA3LCAKLSAgICAxMTcwMTEsIDExNzAxNiwgMTE3MDIxLCAxMTcwMjYsIDExNzAzMSwgMTE3MDM2LCAxMTcwNDEsIDExNzA0NywgMTE3MDUzLCAKLSAgICAxMTcwNTksIDExNzA2NCwgMTE3MDcwLCAxMTcwNzYsIDExNzA4MiwgMTE3MDg3LCAxMTcwOTMsIDExNzA5OSwgMTE3MTA0LCAKLSAgICAxMTcxMDksIDExNzExNSwgMTE3MTIwLCAxMTcxMjYsIDExNzEzMiwgMTE3MTM3LCAxMTcxNDMsIDExNzE0OSwgMTE3MTU0LCAKLSAgICAxMTcxNjAsIDExNzE2NiwgMTE3MTcyLCAxMTcxNzgsIDExNzE4NCwgMTE3MTg5LCAxMTcxOTUsIDExNzIwMSwgMTE3MjA3LCAKLSAgICAxMTcyMTIsIDExNzIxOCwgMTE3MjI0LCAxMTcyMzAsIDExNzIzNSwgMTE3MjQxLCAxMTcyNDcsIDExNzI1MiwgMTE3MjU3LCAKLSAgICAxMTcyNjMsIDExNzI2OCwgMTE3Mjc0LCAxMTcyODAsIDExNzI4NSwgMTE3MjkxLCAxMTcyOTcsIDExNzMwMiwgMTE3MzA4LCAKLSAgICAxMTczMTQsIDExNzMyMCwgMTE3MzI2LCAxMTczMzIsIDExNzMzNywgMTE3MzQzLCAxMTczNDksIDExNzM1NSwgMTE3MzYwLCAKLSAgICAxMTczNjYsIDExNzM3MiwgMTE3Mzc4LCAxMTczODMsIDExNzM4OSwgMTE3Mzk1LCAxMTc0MDAsIDExNzQwNSwgMTE3NDExLCAKLSAgICAxMTc0MTYsIDExNzQyMiwgMTE3NDI4LCAxMTc0MzMsIDExNzQzOSwgMTE3NDQ1LCAxMTc0NTAsIDExNzQ1NiwgMTE3NDYyLCAKLSAgICAxMTc0NjgsIDExNzQ3NCwgMTE3NDgwLCAxMTc0ODUsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDMsIDExNzUwOCwgMTE3NTE0LCAKLSAgICAxMTc1MjAsIDExNzUyNiwgMTE3NTMxLCAxMTc1MzcsIDExNzU0MywgMTE3NTQ4LCAxMTc1NTMsIDExNzU1OSwgMTE3NTY0LCAKLSAgICAxMTc1NzAsIDExNzU3NiwgMTE3NTgxLCAxMTc1ODcsIDExNzU5MywgMTE3NTk4LCAxMTc2MDQsIDExNzYxMCwgMTE3NjE2LCAKLSAgICAxMTc2MjIsIDExNzYyOCwgMTE3NjM0LCAxMTc2NDEsIDExNzY0OCwgMTE3NjU1LCAxMTc2NjEsIDExNzY2OCwgMTE3Njc1LCAKLSAgICAxMTc2ODIsIDExNzY4OCwgMTE3Njk1LCAxMTc3MDIsIDExNzcwOCwgMTE3NzE0LCAxMTc3MjEsIDExNzcyNywgMTE3NzM0LCAKLSAgICAxMTc3NDEsIDExNzc0NywgMTE3NzU0LCAxMTc3NjEsIDExNzc2NywgMTE3Nzc0LCAxMTc3ODEsIDExNzc4OCwgMTE3Nzk1LCAKLSAgICAxMTc4MDIsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjIsIDExNzgyOSwgMTE3ODM1LCAxMTc4NDIsIDExNzg0OSwgMTE3ODU2LCAKLSAgICAxMTc4NjIsIDExNzg2OSwgMTE3ODc2LCAxMTc4ODIsIDExNzg4OCwgMTE3ODk1LCAxMTc5MDEsIDExNzkwOCwgMTE3OTE1LCAKLSAgICAxMTc5MjEsIDExNzkyOCwgMTE3OTM1LCAxMTc5NDEsIDExNzk0OCwgMTE3OTU1LCAxMTc5NjIsIDExNzk2OSwgMTE3OTc2LCAKLSAgICAxMTc5ODEsIDExNzk4NywgMTE3OTkzLCAxMTc5OTksIDExODAwNCwgMTE4MDEwLCAxMTgwMTYsIDExODAyMiwgMTE4MDI3LCAKLSAgICAxMTgwMzMsIDExODAzOSwgMTE4MDQ0LCAxMTgwNDksIDExODA1NSwgMTE4MDYwLCAxMTgwNjYsIDExODA3MiwgMTE4MDc3LCAKLSAgICAxMTgwODMsIDExODA4OSwgMTE4MDk0LCAxMTgxMDAsIDExODEwNiwgMTE4MTEyLCAxMTgxMTgsIDExODEyNCwgMTE4MTI5LCAKLSAgICAxMTgxMzUsIDExODE0MSwgMTE4MTQ3LCAxMTgxNTIsIDExODE1OCwgMTE4MTY0LCAxMTgxNzAsIDExODE3NSwgMTE4MTgxLCAKLSAgICAxMTgxODcsIDExODE5MiwgMTE4MTk3LCAxMTgyMDMsIDExODIwOCwgMTE4MjE0LCAxMTgyMjAsIDExODIyNSwgMTE4MjMxLCAKLSAgICAxMTgyMzcsIDExODI0MiwgMTE4MjQ4LCAxMTgyNTQsIDExODI2MCwgMTE4MjY2LCAxMTgyNzIsIDExODI3OCwgMCwgMCwgCi0gICAgMTE4Mjg1LCAxMTgyOTAsIDExODI5NSwgMTE4MzAwLCAxMTgzMDUsIDExODMxMCwgMTE4MzE1LCAxMTgzMjAsIDExODMyNSwgCi0gICAgMTE4MzMwLCAxMTgzMzUsIDExODM0MCwgMTE4MzQ1LCAxMTgzNTAsIDExODM1NSwgMTE4MzYwLCAxMTgzNjUsIDExODM3MCwgCi0gICAgMTE4Mzc2LCAxMTgzODEsIDExODM4NiwgMTE4MzkxLCAxMTgzOTYsIDExODQwMSwgMTE4NDA2LCAxMTg0MTEsIDExODQxNSwgCi0gICAgMTE4NDIwLCAxMTg0MjUsIDExODQzMCwgMTE4NDM1LCAxMTg0NDAsIDExODQ0NSwgMTE4NDUwLCAxMTg0NTUsIDExODQ2MCwgCi0gICAgMTE4NDY1LCAxMTg0NzAsIDExODQ3NSwgMTE4NDgwLCAxMTg0ODUsIDExODQ5MCwgMTE4NDk1LCAxMTg1MDAsIDExODUwNiwgCi0gICAgMTE4NTExLCAxMTg1MTYsIDExODUyMSwgMTE4NTI2LCAxMTg1MzEsIDExODUzNiwgMTE4NTQxLCAxMTg1NDcsIDExODU1MiwgCi0gICAgMTE4NTU3LCAxMTg1NjIsIDExODU2NywgMTE4NTcyLCAxMTg1NzcsIDExODU4MiwgMTE4NTg3LCAxMTg1OTIsIDExODU5NywgCi0gICAgMTE4NjAyLCAxMTg2MDcsIDExODYxMiwgMTE4NjE3LCAxMTg2MjIsIDExODYyNywgMTE4NjMyLCAxMTg2MzcsIDExODY0MiwgCi0gICAgMTE4NjQ3LCAxMTg2NTIsIDExODY1NywgMTE4NjYyLCAxMTg2NjgsIDExODY3MywgMTE4Njc4LCAxMTg2ODMsIDExODY4OCwgCi0gICAgMTE4NjkzLCAxMTg2OTgsIDExODcwMywgMTE4NzA3LCAxMTg3MTIsIDExODcxNywgMTE4NzIyLCAxMTg3MjcsIDExODczMiwgCi0gICAgMTE4NzM3LCAxMTg3NDIsIDExODc0NywgMTE4NzUyLCAxMTg3NTcsIDExODc2MiwgMTE4NzY3LCAxMTg3NzIsIDExODc3NywgCi0gICAgMTE4NzgyLCAxMTg3ODcsIDExODc5MiwgMTE4Nzk4LCAxMTg4MDMsIDExODgwOCwgMTE4ODEzLCAxMTg4MTgsIDExODgyMywgCi0gICAgMTE4ODI4LCAxMTg4MzMsIDExODgzOSwgMTE4ODQ0LCAxMTg4NDksIDExODg1NCwgMTE4ODU5LCAxMTg4NjQsIDExODg2OSwgCi0gICAgMTE4ODc1LCAxMTg4ODEsIDExODg4NywgMTE4ODkzLCAxMTg4OTksIDExODkwNSwgMTE4OTExLCAxMTg5MTcsIDExODkyMywgCi0gICAgMTE4OTI5LCAxMTg5MzUsIDExODk0MSwgMTE4OTQ3LCAxMTg5NTMsIDExODk1OSwgMTE4OTY1LCAxMTg5NzEsIDExODk3OCwgCi0gICAgMTE4OTg0LCAxMTg5OTAsIDExODk5NiwgMTE5MDAyLCAxMTkwMDgsIDExOTAxNCwgMTE5MDIwLCAxMTkwMjUsIDExOTAzMSwgCi0gICAgMTE5MDM3LCAxMTkwNDMsIDExOTA0OSwgMTE5MDU1LCAxMTkwNjEsIDExOTA2NywgMTE5MDczLCAxMTkwNzksIDExOTA4NSwgCi0gICAgMTE5MDkxLCAxMTkwOTcsIDExOTEwMywgMTE5MTA5LCAxMTkxMTUsIDExOTEyMSwgMTE5MTI3LCAxMTkxMzQsIDExOTE0MCwgCi0gICAgMTE5MTQ2LCAxMTkxNTIsIDExOTE1OCwgMTE5MTY0LCAxMTkxNzAsIDExOTE3NiwgMTE5MTgzLCAxMTkxODksIDExOTE5NSwgCi0gICAgMTE5MjAxLCAxMTkyMDcsIDExOTIxMywgMTE5MjE5LCAxMTkyMjUsIDExOTIzMSwgMTE5MjM3LCAxMTkyNDMsIDExOTI0OSwgCi0gICAgMTE5MjU1LCAxMTkyNjEsIDExOTI2NywgMTE5MjczLCAxMTkyNzksIDExOTI4NSwgMTE5MjkxLCAxMTkyOTcsIDExOTMwMywgCi0gICAgMTE5MzA5LCAxMTkzMTUsIDExOTMyMSwgMTE5MzI4LCAxMTkzMzQsIDExOTM0MCwgMTE5MzQ2LCAxMTkzNTIsIDExOTM1OCwgCi0gICAgMTE5MzY0LCAxMTkzNzAsIDExOTM3NSwgMTE5MzgxLCAxMTkzODcsIDExOTM5MywgMTE5Mzk5LCAxMTk0MDUsIDExOTQxMSwgCi0gICAgMTE5NDE3LCAxMTk0MjMsIDExOTQyOSwgMTE5NDM1LCAxMTk0NDEsIDExOTQ0NywgMTE5NDUzLCAxMTk0NTksIDExOTQ2NSwgCi0gICAgMTE5NDcxLCAxMTk0NzcsIDExOTQ4NCwgMTE5NDkwLCAxMTk0OTYsIDExOTUwMiwgMTE5NTA4LCAxMTk1MTQsIDExOTUyMCwgCi0gICAgMTE5NTI2LCAxMTk1MzMsIDExOTUzOSwgMTE5NTQ1LCAxMTk1NTEsIDExOTU1NywgMTE5NTYzLCAxMTk1NjksIDExOTU3NiwgCi0gICAgMTE5NTgzLCAxMTk1OTAsIDExOTU5NywgMTE5NjA0LCAxMTk2MTEsIDExOTYxOCwgMTE5NjI1LCAxMTk2MzIsIDExOTYzOSwgCi0gICAgMTE5NjQ2LCAxMTk2NTMsIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgMTE5Njg4LCAxMTk2OTYsIDExOTcwMywgCi0gICAgMTE5NzEwLCAxMTk3MTcsIDExOTcyNCwgMTE5NzMxLCAxMTk3MzgsIDExOTc0NSwgMTE5NzUxLCAxMTk3NTgsIDExOTc2NSwgCi0gICAgMTE5NzcyLCAxMTk3NzksIDExOTc4NiwgMTE5NzkzLCAxMTk4MDAsIDExOTgwNywgMTE5ODE0LCAxMTk4MjEsIDExOTgyOCwgCi0gICAgMTE5ODM1LCAxMTk4NDIsIDExOTg0OSwgMTE5ODU2LCAxMTk4NjMsIDExOTg3MCwgMTE5ODc4LCAxMTk4ODUsIDExOTg5MiwgCi0gICAgMTE5ODk5LCAxMTk5MDYsIDExOTkxMywgMTE5OTIwLCAxMTk5MjcsIDExOTkzNSwgMTE5OTQyLCAxMTk5NDksIDExOTk1NiwgCi0gICAgMTE5OTYzLCAxMTk5NzAsIDExOTk3NywgMTE5OTgyLCAwLCAwLCAxMTk5ODcsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIAotICAgIDEyMDAwNCwgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMzLCAxMjAwMzcsIAotICAgIDEyMDA0MSwgMTIwMDQ1LCAxMjAwNDksIDEyMDA1MywgMTIwMDU3LCAxMjAwNjEsIDEyMDA2NSwgMTIwMDY5LCAxMjAwNzQsIAotICAgIDEyMDA3OCwgMTIwMDgyLCAxMjAwODYsIDEyMDA5MCwgMTIwMDk0LCAxMjAwOTgsIDEyMDEwMiwgMTIwMTA2LCAxMjAxMTAsIAotICAgIDEyMDExNiwgMTIwMTIxLCAxMjAxMjYsIDEyMDEzMSwgMTIwMTM2LCAxMjAxNDEsIDEyMDE0NiwgMTIwMTUxLCAxMjAxNTYsIAotICAgIDEyMDE2MSwgMTIwMTY3LCAxMjAxNzIsIDEyMDE3NywgMTIwMTgyLCAxMjAxODcsIDEyMDE5MiwgMTIwMTk3LCAxMjAyMDIsIAotICAgIDEyMDIwNywgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgMTIwMjI0LCAwLCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAKLSAgICAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAKLSAgICAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAKLSAgICAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjYsIDEyMDMzMiwgMTIwMzM4LCAwLCAxMjAzNDQsIDEyMDM0OSwgMCwgCi0gICAgMTIwMzU0LCAwLCAwLCAxMjAzNTksIDAsIDEyMDM2NCwgMTIwMzY5LCAxMjAzNzQsIDEyMDM3OSwgMTIwMzg0LCAxMjAzODksIAotICAgIDEyMDM5NCwgMTIwMzk5LCAxMjA0MDQsIDEyMDQwOSwgMCwgMTIwNDE0LCAxMjA0MTksIDEyMDQyNCwgMTIwNDI5LCAwLCAKLSAgICAxMjA0MzQsIDAsIDEyMDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwNDQ0LCAwLCAwLCAwLCAwLCAxMjA0NTAsIDAsIAotICAgIDEyMDQ1NiwgMCwgMTIwNDYyLCAwLCAxMjA0NjgsIDEyMDQ3NCwgMTIwNDgwLCAwLCAxMjA0ODYsIDEyMDQ5MiwgMCwgCi0gICAgMTIwNDk4LCAwLCAwLCAxMjA1MDQsIDAsIDEyMDUxMCwgMCwgMTIwNTE2LCAwLCAxMjA1MjIsIDAsIDEyMDUzMCwgMCwgCi0gICAgMTIwNTM4LCAxMjA1NDQsIDAsIDEyMDU1MCwgMCwgMCwgMTIwNTU2LCAxMjA1NjIsIDEyMDU2OCwgMTIwNTc0LCAwLCAKLSAgICAxMjA1ODAsIDEyMDU4NiwgMTIwNTkyLCAxMjA1OTgsIDEyMDYwNCwgMTIwNjEwLCAxMjA2MTYsIDAsIDEyMDYyMiwgCi0gICAgMTIwNjI4LCAxMjA2MzQsIDEyMDY0MCwgMCwgMTIwNjQ2LCAxMjA2NTIsIDEyMDY1OCwgMTIwNjY0LCAwLCAxMjA2NzIsIDAsIAotICAgIDEyMDY4MCwgMTIwNjg2LCAxMjA2OTIsIDEyMDY5OCwgMTIwNzA0LCAxMjA3MTAsIDEyMDcxNiwgMTIwNzIyLCAxMjA3MjgsIAotICAgIDEyMDczNCwgMCwgMTIwNzQwLCAxMjA3NDYsIDEyMDc1MiwgMTIwNzU4LCAxMjA3NjQsIDEyMDc3MCwgMTIwNzc2LCAKLSAgICAxMjA3ODIsIDEyMDc4OCwgMTIwNzk0LCAxMjA4MDAsIDEyMDgwNiwgMTIwODEyLCAxMjA4MTgsIDEyMDgyNCwgMTIwODMwLCAKLSAgICAxMjA4MzYsIDAsIDAsIDAsIDAsIDAsIDEyMDg0MiwgMTIwODQ3LCAxMjA4NTIsIDAsIDEyMDg1NywgMTIwODYyLCAxMjA4NjcsIAotICAgIDEyMDg3MiwgMTIwODc3LCAwLCAxMjA4ODIsIDEyMDg4NywgMTIwODkyLCAxMjA4OTcsIDEyMDkwMiwgMTIwOTA3LCAKLSAgICAxMjA5MTIsIDEyMDkxNywgMTIwOTIyLCAxMjA5MjcsIDEyMDkzMiwgMTIwOTM3LCAxMjA5NDIsIDEyMDk0NywgMTIwOTUyLCAKLSAgICAxMjA5NTcsIDEyMDk2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE0MjYzLCAxMTQyNjgsIDExNDI3NSwgMTE0MjgyLCAxMTQyODksIDExNDI5NiwgMTE0MzAxLCAxMTQzMDUsIDExNDMxMSwgCisgICAgMTE0MzE1LCAxMTQzMTksIDExNDMyNSwgMTE0MzI5LCAxMTQzMzMsIDExNDMzNywgMTE0MzQzLCAxMTQzNTAsIDExNDM1NCwgCisgICAgMTE0MzU4LCAxMTQzNjIsIDExNDM2NiwgMTE0MzcwLCAxMTQzNzQsIDExNDM4MCwgMTE0Mzg0LCAxMTQzODgsIDExNDM5MiwgCisgICAgMTE0Mzk2LCAxMTQ0MDAsIDExNDQwNCwgMTE0NDA4LCAxMTQ0MTIsIDExNDQxNiwgMTE0NDIwLCAxMTQ0MjQsIDExNDQyOCwgCisgICAgMTE0NDMzLCAxMTQ0MzcsIDExNDQ0MSwgMTE0NDQ1LCAxMTQ0NDksIDExNDQ1MywgMTE0NDU3LCAxMTQ0NjEsIDExNDQ2NSwgCisgICAgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MCwgMTE0NDg4LCAxMTQ0OTIsIDExNDQ5NiwgMTE0NTAwLCAxMTQ1MDQsIDExNDUwOCwgCisgICAgMTE0NTEyLCAxMTQ1MTYsIDExNDUyMywgMTE0NTI3LCAxMTQ1MzEsIDExNDUzNSwgMTE0NTM5LCAxMTQ1NDMsIDExNDU0OSwgCisgICAgMTE0NTUzLCAxMTQ1NTksIDExNDU2MywgMTE0NTY3LCAxMTQ1NzEsIDExNDU3NSwgMTE0NTc5LCAxMTQ1ODMsIDExNDU4NywgCisgICAgMTE0NTkxLCAxMTQ1OTUsIDExNDU5OSwgMTE0NjAzLCAxMTQ2MDcsIDExNDYxMSwgMTE0NjE1LCAxMTQ2MTksIDExNDYyMywgCisgICAgMTE0NjI3LCAxMTQ2MzEsIDExNDYzNSwgMTE0NjQzLCAxMTQ2NDcsIDExNDY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTE0NjU1LCAxMTQ2NjMsIDExNDY3MSwgMTE0Njc5LCAxMTQ2ODcsIDExNDY5NSwgMTE0NzAzLCAxMTQ3MTEsIAorICAgIDExNDcxOSwgMTE0NzI3LCAxMTQ3MzUsIDExNDc0MywgMTE0NzUxLCAxMTQ3NTksIDExNDc2NywgMTE0Nzc1LCAxMTQ3ODMsIAorICAgIDExNDc5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0Nzk5LCAxMTQ4MDMsIDExNDgwOCwgCisgICAgMTE0ODEzLCAxMTQ4MTgsIDExNDgyMiwgMTE0ODI3LCAxMTQ4MzIsIDExNDgzNywgMTE0ODQxLCAxMTQ4NDYsIDExNDg1MSwgCisgICAgMTE0ODU1LCAxMTQ4NTksIDExNDg2NCwgMTE0ODY4LCAxMTQ4NzMsIDExNDg3OCwgMTE0ODgyLCAxMTQ4ODcsIDExNDg5MiwgCisgICAgMTE0ODk2LCAxMTQ5MDEsIDExNDkwNiwgMTE0OTExLCAxMTQ5MTYsIDExNDkyMSwgMTE0OTI1LCAxMTQ5MzAsIDExNDkzNSwgCisgICAgMTE0OTQwLCAxMTQ5NDQsIDExNDk0OSwgMTE0OTU0LCAxMTQ5NTksIDExNDk2MywgMTE0OTY4LCAxMTQ5NzMsIDExNDk3NywgCisgICAgMTE0OTgxLCAxMTQ5ODYsIDExNDk5MCwgMTE0OTk1LCAxMTUwMDAsIDExNTAwNCwgMTE1MDA5LCAxMTUwMTQsIDExNTAxOCwgCisgICAgMTE1MDIzLCAxMTUwMjgsIDExNTAzMywgMTE1MDM4LCAxMTUwNDMsIDExNTA0NywgMTE1MDUyLCAxMTUwNTcsIDExNTA2MiwgCisgICAgMTE1MDY2LCAxMTUwNzEsIDExNTA3NiwgMTE1MDgxLCAxMTUwODUsIDExNTA5MCwgMTE1MDk1LCAxMTUwOTksIDExNTEwMywgCisgICAgMTE1MTA4LCAxMTUxMTIsIDExNTExNywgMTE1MTIyLCAxMTUxMjYsIDExNTEzMSwgMTE1MTM2LCAxMTUxNDAsIDExNTE0NSwgCisgICAgMTE1MTUwLCAxMTUxNTUsIDExNTE2MCwgMTE1MTY1LCAxMTUxNjksIDExNTE3NCwgMTE1MTc5LCAxMTUxODQsIDExNTE4OCwgCisgICAgMTE1MTkzLCAwLCAxMTUxOTgsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTIsIDExNTIxNiwgMTE1MjIwLCAxMTUyMjUsIAorICAgIDExNTIyOSwgMTE1MjM0LCAxMTUyMzksIDExNTI0MywgMTE1MjQ4LCAxMTUyNTMsIDExNTI1NywgMTE1MjYyLCAxMTUyNjcsIAorICAgIDExNTI3MiwgMTE1Mjc3LCAxMTUyODIsIDExNTI4NywgMTE1MjkzLCAxMTUyOTksIDExNTMwNSwgMTE1MzEwLCAxMTUzMTYsIAorICAgIDExNTMyMiwgMTE1MzI4LCAxMTUzMzMsIDExNTMzOSwgMTE1MzQ1LCAxMTUzNTAsIDExNTM1NSwgMTE1MzYxLCAxMTUzNjYsIAorICAgIDExNTM3MiwgMTE1Mzc4LCAxMTUzODMsIDExNTM4OSwgMTE1Mzk1LCAxMTU0MDAsIDExNTQwNiwgMTE1NDEyLCAxMTU0MTgsIAorICAgIDExNTQyNCwgMTE1NDMwLCAxMTU0MzUsIDExNTQ0MSwgMTE1NDQ3LCAxMTU0NTMsIDExNTQ1OCwgMTE1NDY0LCAxMTU0NzAsIAorICAgIDExNTQ3NiwgMTE1NDgxLCAxMTU0ODcsIDExNTQ5MywgMTE1NDk4LCAxMTU1MDMsIDExNTUwOSwgMTE1NTE0LCAxMTU1MjAsIAorICAgIDExNTUyNiwgMTE1NTMxLCAxMTU1MzcsIDExNTU0MywgMTE1NTQ4LCAxMTU1NTQsIDExNTU2MCwgMTE1NTY2LCAxMTU1NzIsIAorICAgIDExNTU3OCwgMCwgMTE1NTgyLCAxMTU1ODcsIDAsIDAsIDExNTU5MiwgMCwgMCwgMTE1NTk3LCAxMTU2MDIsIDAsIDAsIAorICAgIDExNTYwNywgMTE1NjEyLCAxMTU2MTYsIDExNTYyMSwgMCwgMTE1NjI2LCAxMTU2MzEsIDExNTYzNiwgMTE1NjQwLCAKKyAgICAxMTU2NDUsIDExNTY1MCwgMTE1NjU1LCAxMTU2NjAsIDExNTY2NSwgMTE1NjY5LCAxMTU2NzQsIDExNTY3OSwgMCwgCisgICAgMTE1Njg0LCAwLCAxMTU2ODksIDExNTY5NCwgMTE1Njk4LCAxMTU3MDMsIDExNTcwOCwgMTE1NzEyLCAxMTU3MTYsIDAsIAorICAgIDExNTcyMSwgMTE1NzI2LCAxMTU3MzEsIDExNTczNSwgMTE1NzQwLCAxMTU3NDUsIDExNTc0OSwgMTE1NzU0LCAxMTU3NTksIAorICAgIDExNTc2NCwgMTE1NzY5LCAxMTU3NzQsIDExNTc3OSwgMTE1Nzg1LCAxMTU3OTEsIDExNTc5NywgMTE1ODAyLCAxMTU4MDgsIAorICAgIDExNTgxNCwgMTE1ODIwLCAxMTU4MjUsIDExNTgzMSwgMTE1ODM3LCAxMTU4NDIsIDExNTg0NywgMTE1ODUzLCAxMTU4NTgsIAorICAgIDExNTg2NCwgMTE1ODcwLCAxMTU4NzUsIDExNTg4MSwgMTE1ODg3LCAxMTU4OTIsIDExNTg5OCwgMTE1OTA0LCAxMTU5MTAsIAorICAgIDExNTkxNiwgMTE1OTIyLCAxMTU5MjcsIDExNTkzMywgMTE1OTM5LCAxMTU5NDUsIDExNTk1MCwgMTE1OTU2LCAxMTU5NjIsIAorICAgIDExNTk2OCwgMTE1OTczLCAxMTU5NzksIDExNTk4NSwgMTE1OTkwLCAxMTU5OTUsIDExNjAwMSwgMTE2MDA2LCAxMTYwMTIsIAorICAgIDExNjAxOCwgMTE2MDIzLCAxMTYwMjksIDExNjAzNSwgMTE2MDQwLCAxMTYwNDYsIDExNjA1MiwgMTE2MDU4LCAxMTYwNjQsIAorICAgIDExNjA3MCwgMTE2MDc0LCAwLCAxMTYwNzksIDExNjA4NCwgMTE2MDg4LCAxMTYwOTMsIDAsIDAsIDExNjA5OCwgMTE2MTAzLCAKKyAgICAxMTYxMDgsIDExNjExMiwgMTE2MTE2LCAxMTYxMjEsIDExNjEyNSwgMTE2MTMwLCAwLCAxMTYxMzUsIDExNjE0MCwgCisgICAgMTE2MTQ1LCAxMTYxNDksIDExNjE1NCwgMTE2MTU5LCAxMTYxNjQsIDAsIDExNjE2OSwgMTE2MTczLCAxMTYxNzgsIAorICAgIDExNjE4MywgMTE2MTg4LCAxMTYxOTIsIDExNjE5NywgMTE2MjAyLCAxMTYyMDcsIDExNjIxMSwgMTE2MjE2LCAxMTYyMjEsIAorICAgIDExNjIyNSwgMTE2MjI5LCAxMTYyMzQsIDExNjIzOCwgMTE2MjQzLCAxMTYyNDgsIDExNjI1MiwgMTE2MjU3LCAxMTYyNjIsIAorICAgIDExNjI2NiwgMTE2MjcxLCAxMTYyNzYsIDExNjI4MSwgMTE2Mjg2LCAxMTYyOTEsIDExNjI5NSwgMCwgMTE2MzAwLCAKKyAgICAxMTYzMDUsIDExNjMwOSwgMTE2MzE0LCAwLCAxMTYzMTksIDExNjMyMywgMTE2MzI4LCAxMTYzMzMsIDExNjMzNywgMCwgCisgICAgMTE2MzQxLCAwLCAwLCAwLCAxMTYzNDUsIDExNjM1MCwgMTE2MzU1LCAxMTYzNTksIDExNjM2NCwgMTE2MzY5LCAxMTYzNzQsIAorICAgIDAsIDExNjM3OSwgMTE2MzgzLCAxMTYzODgsIDExNjM5MywgMTE2Mzk4LCAxMTY0MDIsIDExNjQwNywgMTE2NDEyLCAKKyAgICAxMTY0MTcsIDExNjQyMSwgMTE2NDI2LCAxMTY0MzEsIDExNjQzNSwgMTE2NDM5LCAxMTY0NDQsIDExNjQ0OCwgMTE2NDUzLCAKKyAgICAxMTY0NTgsIDExNjQ2MiwgMTE2NDY3LCAxMTY0NzIsIDExNjQ3NiwgMTE2NDgxLCAxMTY0ODYsIDExNjQ5MSwgMTE2NDk2LCAKKyAgICAxMTY1MDEsIDExNjUwNiwgMTE2NTEyLCAxMTY1MTgsIDExNjUyNCwgMTE2NTI5LCAxMTY1MzUsIDExNjU0MSwgMTE2NTQ3LCAKKyAgICAxMTY1NTIsIDExNjU1OCwgMTE2NTY0LCAxMTY1NjksIDExNjU3NCwgMTE2NTgwLCAxMTY1ODUsIDExNjU5MSwgMTE2NTk3LCAKKyAgICAxMTY2MDIsIDExNjYwOCwgMTE2NjE0LCAxMTY2MTksIDExNjYyNSwgMTE2NjMxLCAxMTY2MzcsIDExNjY0MywgMTE2NjQ5LCAKKyAgICAxMTY2NTQsIDExNjY2MCwgMTE2NjY2LCAxMTY2NzIsIDExNjY3NywgMTE2NjgzLCAxMTY2ODksIDExNjY5NSwgMTE2NzAwLCAKKyAgICAxMTY3MDYsIDExNjcxMiwgMTE2NzE3LCAxMTY3MjIsIDExNjcyOCwgMTE2NzMzLCAxMTY3MzksIDExNjc0NSwgMTE2NzUwLCAKKyAgICAxMTY3NTYsIDExNjc2MiwgMTE2NzY3LCAxMTY3NzMsIDExNjc3OSwgMTE2Nzg1LCAxMTY3OTEsIDExNjc5NywgMTE2ODAxLCAKKyAgICAxMTY4MDYsIDExNjgxMSwgMTE2ODE2LCAxMTY4MjAsIDExNjgyNSwgMTE2ODMwLCAxMTY4MzUsIDExNjgzOSwgMTE2ODQ0LCAKKyAgICAxMTY4NDksIDExNjg1MywgMTE2ODU3LCAxMTY4NjIsIDExNjg2NiwgMTE2ODcxLCAxMTY4NzYsIDExNjg4MCwgMTE2ODg1LCAKKyAgICAxMTY4OTAsIDExNjg5NCwgMTE2ODk5LCAxMTY5MDQsIDExNjkwOSwgMTE2OTE0LCAxMTY5MTksIDExNjkyMywgMTE2OTI4LCAKKyAgICAxMTY5MzMsIDExNjkzOCwgMTE2OTQyLCAxMTY5NDcsIDExNjk1MiwgMTE2OTU3LCAxMTY5NjEsIDExNjk2NiwgMTE2OTcxLCAKKyAgICAxMTY5NzUsIDExNjk3OSwgMTE2OTg0LCAxMTY5ODgsIDExNjk5MywgMTE2OTk4LCAxMTcwMDIsIDExNzAwNywgMTE3MDEyLCAKKyAgICAxMTcwMTYsIDExNzAyMSwgMTE3MDI2LCAxMTcwMzEsIDExNzAzNiwgMTE3MDQxLCAxMTcwNDYsIDExNzA1MiwgMTE3MDU4LCAKKyAgICAxMTcwNjQsIDExNzA2OSwgMTE3MDc1LCAxMTcwODEsIDExNzA4NywgMTE3MDkyLCAxMTcwOTgsIDExNzEwNCwgMTE3MTA5LCAKKyAgICAxMTcxMTQsIDExNzEyMCwgMTE3MTI1LCAxMTcxMzEsIDExNzEzNywgMTE3MTQyLCAxMTcxNDgsIDExNzE1NCwgMTE3MTU5LCAKKyAgICAxMTcxNjUsIDExNzE3MSwgMTE3MTc3LCAxMTcxODMsIDExNzE4OSwgMTE3MTk0LCAxMTcyMDAsIDExNzIwNiwgMTE3MjEyLCAKKyAgICAxMTcyMTcsIDExNzIyMywgMTE3MjI5LCAxMTcyMzUsIDExNzI0MCwgMTE3MjQ2LCAxMTcyNTIsIDExNzI1NywgMTE3MjYyLCAKKyAgICAxMTcyNjgsIDExNzI3MywgMTE3Mjc5LCAxMTcyODUsIDExNzI5MCwgMTE3Mjk2LCAxMTczMDIsIDExNzMwNywgMTE3MzEzLCAKKyAgICAxMTczMTksIDExNzMyNSwgMTE3MzMxLCAxMTczMzcsIDExNzM0MiwgMTE3MzQ4LCAxMTczNTQsIDExNzM2MCwgMTE3MzY1LCAKKyAgICAxMTczNzEsIDExNzM3NywgMTE3MzgzLCAxMTczODgsIDExNzM5NCwgMTE3NDAwLCAxMTc0MDUsIDExNzQxMCwgMTE3NDE2LCAKKyAgICAxMTc0MjEsIDExNzQyNywgMTE3NDMzLCAxMTc0MzgsIDExNzQ0NCwgMTE3NDUwLCAxMTc0NTUsIDExNzQ2MSwgMTE3NDY3LCAKKyAgICAxMTc0NzMsIDExNzQ3OSwgMTE3NDg1LCAxMTc0OTAsIDExNzQ5NiwgMTE3NTAyLCAxMTc1MDgsIDExNzUxMywgMTE3NTE5LCAKKyAgICAxMTc1MjUsIDExNzUzMSwgMTE3NTM2LCAxMTc1NDIsIDExNzU0OCwgMTE3NTUzLCAxMTc1NTgsIDExNzU2NCwgMTE3NTY5LCAKKyAgICAxMTc1NzUsIDExNzU4MSwgMTE3NTg2LCAxMTc1OTIsIDExNzU5OCwgMTE3NjAzLCAxMTc2MDksIDExNzYxNSwgMTE3NjIxLCAKKyAgICAxMTc2MjcsIDExNzYzMywgMTE3NjM5LCAxMTc2NDYsIDExNzY1MywgMTE3NjYwLCAxMTc2NjYsIDExNzY3MywgMTE3NjgwLCAKKyAgICAxMTc2ODcsIDExNzY5MywgMTE3NzAwLCAxMTc3MDcsIDExNzcxMywgMTE3NzE5LCAxMTc3MjYsIDExNzczMiwgMTE3NzM5LCAKKyAgICAxMTc3NDYsIDExNzc1MiwgMTE3NzU5LCAxMTc3NjYsIDExNzc3MiwgMTE3Nzc5LCAxMTc3ODYsIDExNzc5MywgMTE3ODAwLCAKKyAgICAxMTc4MDcsIDExNzgxMywgMTE3ODIwLCAxMTc4MjcsIDExNzgzNCwgMTE3ODQwLCAxMTc4NDcsIDExNzg1NCwgMTE3ODYxLCAKKyAgICAxMTc4NjcsIDExNzg3NCwgMTE3ODgxLCAxMTc4ODcsIDExNzg5MywgMTE3OTAwLCAxMTc5MDYsIDExNzkxMywgMTE3OTIwLCAKKyAgICAxMTc5MjYsIDExNzkzMywgMTE3OTQwLCAxMTc5NDYsIDExNzk1MywgMTE3OTYwLCAxMTc5NjcsIDExNzk3NCwgMTE3OTgxLCAKKyAgICAxMTc5ODYsIDExNzk5MiwgMTE3OTk4LCAxMTgwMDQsIDExODAwOSwgMTE4MDE1LCAxMTgwMjEsIDExODAyNywgMTE4MDMyLCAKKyAgICAxMTgwMzgsIDExODA0NCwgMTE4MDQ5LCAxMTgwNTQsIDExODA2MCwgMTE4MDY1LCAxMTgwNzEsIDExODA3NywgMTE4MDgyLCAKKyAgICAxMTgwODgsIDExODA5NCwgMTE4MDk5LCAxMTgxMDUsIDExODExMSwgMTE4MTE3LCAxMTgxMjMsIDExODEyOSwgMTE4MTM0LCAKKyAgICAxMTgxNDAsIDExODE0NiwgMTE4MTUyLCAxMTgxNTcsIDExODE2MywgMTE4MTY5LCAxMTgxNzUsIDExODE4MCwgMTE4MTg2LCAKKyAgICAxMTgxOTIsIDExODE5NywgMTE4MjAyLCAxMTgyMDgsIDExODIxMywgMTE4MjE5LCAxMTgyMjUsIDExODIzMCwgMTE4MjM2LCAKKyAgICAxMTgyNDIsIDExODI0NywgMTE4MjUzLCAxMTgyNTksIDExODI2NSwgMTE4MjcxLCAxMTgyNzcsIDExODI4MywgMCwgMCwgCisgICAgMTE4MjkwLCAxMTgyOTUsIDExODMwMCwgMTE4MzA1LCAxMTgzMTAsIDExODMxNSwgMTE4MzIwLCAxMTgzMjUsIDExODMzMCwgCisgICAgMTE4MzM1LCAxMTgzNDAsIDExODM0NSwgMTE4MzUwLCAxMTgzNTUsIDExODM2MCwgMTE4MzY1LCAxMTgzNzAsIDExODM3NSwgCisgICAgMTE4MzgxLCAxMTgzODYsIDExODM5MSwgMTE4Mzk2LCAxMTg0MDEsIDExODQwNiwgMTE4NDExLCAxMTg0MTYsIDExODQyMCwgCisgICAgMTE4NDI1LCAxMTg0MzAsIDExODQzNSwgMTE4NDQwLCAxMTg0NDUsIDExODQ1MCwgMTE4NDU1LCAxMTg0NjAsIDExODQ2NSwgCisgICAgMTE4NDcwLCAxMTg0NzUsIDExODQ4MCwgMTE4NDg1LCAxMTg0OTAsIDExODQ5NSwgMTE4NTAwLCAxMTg1MDUsIDExODUxMSwgCisgICAgMTE4NTE2LCAxMTg1MjEsIDExODUyNiwgMTE4NTMxLCAxMTg1MzYsIDExODU0MSwgMTE4NTQ2LCAxMTg1NTIsIDExODU1NywgCisgICAgMTE4NTYyLCAxMTg1NjcsIDExODU3MiwgMTE4NTc3LCAxMTg1ODIsIDExODU4NywgMTE4NTkyLCAxMTg1OTcsIDExODYwMiwgCisgICAgMTE4NjA3LCAxMTg2MTIsIDExODYxNywgMTE4NjIyLCAxMTg2MjcsIDExODYzMiwgMTE4NjM3LCAxMTg2NDIsIDExODY0NywgCisgICAgMTE4NjUyLCAxMTg2NTcsIDExODY2MiwgMTE4NjY3LCAxMTg2NzMsIDExODY3OCwgMTE4NjgzLCAxMTg2ODgsIDExODY5MywgCisgICAgMTE4Njk4LCAxMTg3MDMsIDExODcwOCwgMTE4NzEyLCAxMTg3MTcsIDExODcyMiwgMTE4NzI3LCAxMTg3MzIsIDExODczNywgCisgICAgMTE4NzQyLCAxMTg3NDcsIDExODc1MiwgMTE4NzU3LCAxMTg3NjIsIDExODc2NywgMTE4NzcyLCAxMTg3NzcsIDExODc4MiwgCisgICAgMTE4Nzg3LCAxMTg3OTIsIDExODc5NywgMTE4ODAzLCAxMTg4MDgsIDExODgxMywgMTE4ODE4LCAxMTg4MjMsIDExODgyOCwgCisgICAgMTE4ODMzLCAxMTg4MzgsIDExODg0NCwgMTE4ODQ5LCAxMTg4NTQsIDExODg1OSwgMTE4ODY0LCAxMTg4NjksIDExODg3NCwgCisgICAgMTE4ODgwLCAxMTg4ODYsIDExODg5MiwgMTE4ODk4LCAxMTg5MDQsIDExODkxMCwgMTE4OTE2LCAxMTg5MjIsIDExODkyOCwgCisgICAgMTE4OTM0LCAxMTg5NDAsIDExODk0NiwgMTE4OTUyLCAxMTg5NTgsIDExODk2NCwgMTE4OTcwLCAxMTg5NzYsIDExODk4MywgCisgICAgMTE4OTg5LCAxMTg5OTUsIDExOTAwMSwgMTE5MDA3LCAxMTkwMTMsIDExOTAxOSwgMTE5MDI1LCAxMTkwMzAsIDExOTAzNiwgCisgICAgMTE5MDQyLCAxMTkwNDgsIDExOTA1NCwgMTE5MDYwLCAxMTkwNjYsIDExOTA3MiwgMTE5MDc4LCAxMTkwODQsIDExOTA5MCwgCisgICAgMTE5MDk2LCAxMTkxMDIsIDExOTEwOCwgMTE5MTE0LCAxMTkxMjAsIDExOTEyNiwgMTE5MTMyLCAxMTkxMzksIDExOTE0NSwgCisgICAgMTE5MTUxLCAxMTkxNTcsIDExOTE2MywgMTE5MTY5LCAxMTkxNzUsIDExOTE4MSwgMTE5MTg4LCAxMTkxOTQsIDExOTIwMCwgCisgICAgMTE5MjA2LCAxMTkyMTIsIDExOTIxOCwgMTE5MjI0LCAxMTkyMzAsIDExOTIzNiwgMTE5MjQyLCAxMTkyNDgsIDExOTI1NCwgCisgICAgMTE5MjYwLCAxMTkyNjYsIDExOTI3MiwgMTE5Mjc4LCAxMTkyODQsIDExOTI5MCwgMTE5Mjk2LCAxMTkzMDIsIDExOTMwOCwgCisgICAgMTE5MzE0LCAxMTkzMjAsIDExOTMyNiwgMTE5MzMzLCAxMTkzMzksIDExOTM0NSwgMTE5MzUxLCAxMTkzNTcsIDExOTM2MywgCisgICAgMTE5MzY5LCAxMTkzNzUsIDExOTM4MCwgMTE5Mzg2LCAxMTkzOTIsIDExOTM5OCwgMTE5NDA0LCAxMTk0MTAsIDExOTQxNiwgCisgICAgMTE5NDIyLCAxMTk0MjgsIDExOTQzNCwgMTE5NDQwLCAxMTk0NDYsIDExOTQ1MiwgMTE5NDU4LCAxMTk0NjQsIDExOTQ3MCwgCisgICAgMTE5NDc2LCAxMTk0ODIsIDExOTQ4OSwgMTE5NDk1LCAxMTk1MDEsIDExOTUwNywgMTE5NTEzLCAxMTk1MTksIDExOTUyNSwgCisgICAgMTE5NTMxLCAxMTk1MzgsIDExOTU0NCwgMTE5NTUwLCAxMTk1NTYsIDExOTU2MiwgMTE5NTY4LCAxMTk1NzQsIDExOTU4MSwgCisgICAgMTE5NTg4LCAxMTk1OTUsIDExOTYwMiwgMTE5NjA5LCAxMTk2MTYsIDExOTYyMywgMTE5NjMwLCAxMTk2MzcsIDExOTY0NCwgCisgICAgMTE5NjUxLCAxMTk2NTgsIDExOTY2NSwgMTE5NjcyLCAxMTk2NzksIDExOTY4NiwgMTE5NjkzLCAxMTk3MDEsIDExOTcwOCwgCisgICAgMTE5NzE1LCAxMTk3MjIsIDExOTcyOSwgMTE5NzM2LCAxMTk3NDMsIDExOTc1MCwgMTE5NzU2LCAxMTk3NjMsIDExOTc3MCwgCisgICAgMTE5Nzc3LCAxMTk3ODQsIDExOTc5MSwgMTE5Nzk4LCAxMTk4MDUsIDExOTgxMiwgMTE5ODE5LCAxMTk4MjYsIDExOTgzMywgCisgICAgMTE5ODQwLCAxMTk4NDcsIDExOTg1NCwgMTE5ODYxLCAxMTk4NjgsIDExOTg3NSwgMTE5ODgzLCAxMTk4OTAsIDExOTg5NywgCisgICAgMTE5OTA0LCAxMTk5MTEsIDExOTkxOCwgMTE5OTI1LCAxMTk5MzIsIDExOTk0MCwgMTE5OTQ3LCAxMTk5NTQsIDExOTk2MSwgCisgICAgMTE5OTY4LCAxMTk5NzUsIDExOTk4MiwgMTE5OTg3LCAwLCAwLCAxMTk5OTIsIDExOTk5NywgMTIwMDAxLCAxMjAwMDUsIAorICAgIDEyMDAwOSwgMTIwMDEzLCAxMjAwMTcsIDEyMDAyMSwgMTIwMDI1LCAxMjAwMjksIDEyMDAzMywgMTIwMDM4LCAxMjAwNDIsIAorICAgIDEyMDA0NiwgMTIwMDUwLCAxMjAwNTQsIDEyMDA1OCwgMTIwMDYyLCAxMjAwNjYsIDEyMDA3MCwgMTIwMDc0LCAxMjAwNzksIAorICAgIDEyMDA4MywgMTIwMDg3LCAxMjAwOTEsIDEyMDA5NSwgMTIwMDk5LCAxMjAxMDMsIDEyMDEwNywgMTIwMTExLCAxMjAxMTUsIAorICAgIDEyMDEyMSwgMTIwMTI2LCAxMjAxMzEsIDEyMDEzNiwgMTIwMTQxLCAxMjAxNDYsIDEyMDE1MSwgMTIwMTU2LCAxMjAxNjEsIAorICAgIDEyMDE2NiwgMTIwMTcyLCAxMjAxNzcsIDEyMDE4MiwgMTIwMTg3LCAxMjAxOTIsIDEyMDE5NywgMTIwMjAyLCAxMjAyMDcsIAorICAgIDEyMDIxMiwgMTIwMjE3LCAxMjAyMjEsIDEyMDIyNSwgMTIwMjI5LCAwLCAxMjAyMzMsIDEyMDIzNywgMTIwMjQxLCAKKyAgICAxMjAyNDUsIDEyMDI0OSwgMTIwMjUzLCAxMjAyNTcsIDEyMDI2MSwgMTIwMjY1LCAxMjAyNjksIDEyMDI3MywgMTIwMjc3LCAKKyAgICAxMjAyODEsIDEyMDI4NSwgMTIwMjg5LCAxMjAyOTMsIDEyMDI5NywgMTIwMzAxLCAxMjAzMDUsIDEyMDMwOSwgMTIwMzEzLCAKKyAgICAxMjAzMTcsIDEyMDMyMSwgMTIwMzI1LCAxMjAzMzEsIDEyMDMzNywgMTIwMzQzLCAwLCAxMjAzNDksIDEyMDM1NCwgMCwgCisgICAgMTIwMzU5LCAwLCAwLCAxMjAzNjQsIDAsIDEyMDM2OSwgMTIwMzc0LCAxMjAzNzksIDEyMDM4NCwgMTIwMzg5LCAxMjAzOTQsIAorICAgIDEyMDM5OSwgMTIwNDA0LCAxMjA0MDksIDEyMDQxNCwgMCwgMTIwNDE5LCAxMjA0MjQsIDEyMDQyOSwgMTIwNDM0LCAwLCAKKyAgICAxMjA0MzksIDAsIDEyMDQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwNDQ5LCAwLCAwLCAwLCAwLCAxMjA0NTUsIDAsIAorICAgIDEyMDQ2MSwgMCwgMTIwNDY3LCAwLCAxMjA0NzMsIDEyMDQ3OSwgMTIwNDg1LCAwLCAxMjA0OTEsIDEyMDQ5NywgMCwgCisgICAgMTIwNTAzLCAwLCAwLCAxMjA1MDksIDAsIDEyMDUxNSwgMCwgMTIwNTIxLCAwLCAxMjA1MjcsIDAsIDEyMDUzNSwgMCwgCisgICAgMTIwNTQzLCAxMjA1NDksIDAsIDEyMDU1NSwgMCwgMCwgMTIwNTYxLCAxMjA1NjcsIDEyMDU3MywgMTIwNTc5LCAwLCAKKyAgICAxMjA1ODUsIDEyMDU5MSwgMTIwNTk3LCAxMjA2MDMsIDEyMDYwOSwgMTIwNjE1LCAxMjA2MjEsIDAsIDEyMDYyNywgCisgICAgMTIwNjMzLCAxMjA2MzksIDEyMDY0NSwgMCwgMTIwNjUxLCAxMjA2NTcsIDEyMDY2MywgMTIwNjY5LCAwLCAxMjA2NzcsIDAsIAorICAgIDEyMDY4NSwgMTIwNjkxLCAxMjA2OTcsIDEyMDcwMywgMTIwNzA5LCAxMjA3MTUsIDEyMDcyMSwgMTIwNzI3LCAxMjA3MzMsIAorICAgIDEyMDczOSwgMCwgMTIwNzQ1LCAxMjA3NTEsIDEyMDc1NywgMTIwNzYzLCAxMjA3NjksIDEyMDc3NSwgMTIwNzgxLCAKKyAgICAxMjA3ODcsIDEyMDc5MywgMTIwNzk5LCAxMjA4MDUsIDEyMDgxMSwgMTIwODE3LCAxMjA4MjMsIDEyMDgyOSwgMTIwODM1LCAKKyAgICAxMjA4NDEsIDAsIDAsIDAsIDAsIDAsIDEyMDg0NywgMTIwODUyLCAxMjA4NTcsIDAsIDEyMDg2MiwgMTIwODY3LCAxMjA4NzIsIAorICAgIDEyMDg3NywgMTIwODgyLCAwLCAxMjA4ODcsIDEyMDg5MiwgMTIwODk3LCAxMjA5MDIsIDEyMDkwNywgMTIwOTEyLCAKKyAgICAxMjA5MTcsIDEyMDkyMiwgMTIwOTI3LCAxMjA5MzIsIDEyMDkzNywgMTIwOTQyLCAxMjA5NDcsIDEyMDk1MiwgMTIwOTU3LCAKKyAgICAxMjA5NjIsIDEyMDk2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwOTY3LCAxMjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyMDk4NSwgMTIwOTkyLCAxMjA5OTksIDEyMTAwNiwgMTIxMDEzLCAxMjEwMjAsIDEyMTAyNywgCi0gICAgMTIxMDMzLCAxMjEwNDAsIDEyMTA0NywgMTIxMDU0LCAxMjEwNjIsIDEyMTA3MCwgMTIxMDc4LCAxMjEwODYsIDEyMTA5NCwgCi0gICAgMTIxMTAyLCAxMjExMDksIDEyMTExNiwgMTIxMTIzLCAxMjExMzEsIDEyMTEzOSwgMTIxMTQ3LCAxMjExNTUsIDEyMTE2MywgCi0gICAgMTIxMTcxLCAxMjExNzgsIDEyMTE4NSwgMTIxMTkyLCAxMjEyMDAsIDEyMTIwOCwgMTIxMjE2LCAxMjEyMjQsIDEyMTIzMiwgCi0gICAgMTIxMjQwLCAxMjEyNDUsIDEyMTI1MCwgMTIxMjU1LCAxMjEyNjAsIDEyMTI2NSwgMTIxMjcwLCAxMjEyNzUsIDEyMTI4MCwgCi0gICAgMTIxMjg1LCAwLCAwLCAwLCAwLCAxMjEyOTAsIDEyMTI5NSwgMTIxMjk5LCAxMjEzMDMsIDEyMTMwNywgMTIxMzExLCAKLSAgICAxMjEzMTUsIDEyMTMxOSwgMTIxMzIzLCAxMjEzMjcsIDEyMTMzMSwgMTIxMzM1LCAxMjEzMzksIDEyMTM0MywgMTIxMzQ3LCAKLSAgICAxMjEzNTEsIDEyMTM1NSwgMTIxMzU5LCAxMjEzNjMsIDEyMTM2NywgMTIxMzcxLCAxMjEzNzUsIDEyMTM3OSwgMTIxMzgzLCAKLSAgICAxMjEzODcsIDEyMTM5MSwgMTIxMzk1LCAxMjEzOTksIDEyMTQwMywgMTIxNDA3LCAxMjE0MTEsIDEyMTQxNSwgMTIxNDE5LCAKLSAgICAxMjE0MjMsIDEyMTQyNywgMTIxNDMxLCAxMjE0MzUsIDEyMTQzOSwgMTIxNDQzLCAxMjE0NDcsIDEyMTQ1MSwgMTIxNDU1LCAKLSAgICAxMjE0NTksIDEyMTQ2MywgMTIxNDY3LCAxMjE0NzEsIDEyMTQ3NSwgMTIxNDc5LCAxMjE0ODMsIDEyMTQ4NywgMTIxNDkxLCAKLSAgICAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAKLSAgICAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAKLSAgICAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAKLSAgICAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAKLSAgICAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAKLSAgICAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyMTY5MiwgMTIxNjk4LCAxMjE3MDcsIDEyMTcxNSwgMTIxNzIzLCAxMjE3MzIsIDEyMTc0MSwgMTIxNzUwLCAxMjE3NTksIAotICAgIDEyMTc2OCwgMTIxNzc3LCAxMjE3ODYsIDEyMTc5NSwgMTIxODA0LCAxMjE4MTMsIDAsIDAsIDEyMTgyMiwgMTIxODMxLCAKLSAgICAxMjE4MzksIDEyMTg0NywgMTIxODU2LCAxMjE4NjUsIDEyMTg3NCwgMTIxODgzLCAxMjE4OTIsIDEyMTkwMSwgMTIxOTEwLCAKLSAgICAxMjE5MTksIDEyMTkyOCwgMTIxOTM3LCAwLCAwLCAxMjE5NDYsIDEyMTk1NSwgMTIxOTYzLCAxMjE5NzEsIDEyMTk4MCwgCi0gICAgMTIxOTg5LCAxMjE5OTgsIDEyMjAwNywgMTIyMDE2LCAxMjIwMjUsIDEyMjAzNCwgMTIyMDQzLCAxMjIwNTIsIDEyMjA2MSwgCi0gICAgMTIyMDcwLCAwLCAxMjIwNzcsIDEyMjA4NiwgMTIyMDk0LCAxMjIxMDIsIDEyMjExMSwgMTIyMTIwLCAxMjIxMjksIAotICAgIDEyMjEzOCwgMTIyMTQ3LCAxMjIxNTYsIDEyMjE2NSwgMTIyMTc0LCAxMjIxODMsIDEyMjE5MiwgMTIyMjAxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA5NzIsIDEyMDk4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTIwOTkwLCAxMjA5OTcsIDEyMTAwNCwgMTIxMDExLCAxMjEwMTgsIDEyMTAyNSwgMTIxMDMyLCAKKyAgICAxMjEwMzgsIDEyMTA0NSwgMTIxMDUyLCAxMjEwNTksIDEyMTA2NywgMTIxMDc1LCAxMjEwODMsIDEyMTA5MSwgMTIxMDk5LCAKKyAgICAxMjExMDcsIDEyMTExNCwgMTIxMTIxLCAxMjExMjgsIDEyMTEzNiwgMTIxMTQ0LCAxMjExNTIsIDEyMTE2MCwgMTIxMTY4LCAKKyAgICAxMjExNzYsIDEyMTE4MywgMTIxMTkwLCAxMjExOTcsIDEyMTIwNSwgMTIxMjEzLCAxMjEyMjEsIDEyMTIyOSwgMTIxMjM3LCAKKyAgICAxMjEyNDUsIDEyMTI1MCwgMTIxMjU1LCAxMjEyNjAsIDEyMTI2NSwgMTIxMjcwLCAxMjEyNzUsIDEyMTI4MCwgMTIxMjg1LCAKKyAgICAxMjEyOTAsIDAsIDAsIDAsIDAsIDEyMTI5NSwgMTIxMzAwLCAxMjEzMDQsIDEyMTMwOCwgMTIxMzEyLCAxMjEzMTYsIAorICAgIDEyMTMyMCwgMTIxMzI0LCAxMjEzMjgsIDEyMTMzMiwgMTIxMzM2LCAxMjEzNDAsIDEyMTM0NCwgMTIxMzQ4LCAxMjEzNTIsIAorICAgIDEyMTM1NiwgMTIxMzYwLCAxMjEzNjQsIDEyMTM2OCwgMTIxMzcyLCAxMjEzNzYsIDEyMTM4MCwgMTIxMzg0LCAxMjEzODgsIAorICAgIDEyMTM5MiwgMTIxMzk2LCAxMjE0MDAsIDEyMTQwNCwgMTIxNDA4LCAxMjE0MTIsIDEyMTQxNiwgMTIxNDIwLCAxMjE0MjQsIAorICAgIDEyMTQyOCwgMTIxNDMyLCAxMjE0MzYsIDEyMTQ0MCwgMTIxNDQ0LCAxMjE0NDgsIDEyMTQ1MiwgMTIxNDU2LCAxMjE0NjAsIAorICAgIDEyMTQ2NCwgMTIxNDY4LCAxMjE0NzIsIDEyMTQ3NiwgMTIxNDgwLCAxMjE0ODQsIDEyMTQ4OCwgMTIxNDkyLCAxMjE0OTYsIAorICAgIDEyMTUwMSwgMTIxNTA1LCAxMjE1MDksIDEyMTUxMywgMTIxNTE3LCAxMjE1MjEsIDEyMTUyNSwgMTIxNTI5LCAxMjE1MzMsIAorICAgIDEyMTUzNywgMTIxNTQxLCAxMjE1NDUsIDEyMTU0OSwgMTIxNTUzLCAxMjE1NTcsIDEyMTU2MSwgMTIxNTY1LCAxMjE1NjksIAorICAgIDEyMTU3MywgMTIxNTc3LCAxMjE1ODEsIDEyMTU4NSwgMTIxNTg5LCAxMjE1OTMsIDEyMTU5NywgMTIxNjAxLCAxMjE2MDUsIAorICAgIDEyMTYwOSwgMTIxNjEzLCAxMjE2MTcsIDEyMTYyMSwgMTIxNjI1LCAxMjE2MjksIDEyMTYzMywgMTIxNjM3LCAxMjE2NDEsIAorICAgIDEyMTY0NSwgMTIxNjQ5LCAxMjE2NTMsIDEyMTY1NywgMTIxNjYxLCAxMjE2NjUsIDEyMTY2OSwgMTIxNjczLCAxMjE2NzcsIAorICAgIDEyMTY4MSwgMTIxNjg1LCAxMjE2ODksIDEyMTY5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIxNjk3LCAxMjE3MDMsIDEyMTcxMiwgMTIxNzIwLCAxMjE3MjgsIDEyMTczNywgMTIxNzQ2LCAxMjE3NTUsIDEyMTc2NCwgCisgICAgMTIxNzczLCAxMjE3ODIsIDEyMTc5MSwgMTIxODAwLCAxMjE4MDksIDEyMTgxOCwgMCwgMCwgMTIxODI3LCAxMjE4MzYsIAorICAgIDEyMTg0NCwgMTIxODUyLCAxMjE4NjEsIDEyMTg3MCwgMTIxODc5LCAxMjE4ODgsIDEyMTg5NywgMTIxOTA2LCAxMjE5MTUsIAorICAgIDEyMTkyNCwgMTIxOTMzLCAxMjE5NDIsIDAsIDAsIDEyMTk1MSwgMTIxOTYwLCAxMjE5NjgsIDEyMTk3NiwgMTIxOTg1LCAKKyAgICAxMjE5OTQsIDEyMjAwMywgMTIyMDEyLCAxMjIwMjEsIDEyMjAzMCwgMTIyMDM5LCAxMjIwNDgsIDEyMjA1NywgMTIyMDY2LCAKKyAgICAxMjIwNzUsIDAsIDEyMjA4MiwgMTIyMDkxLCAxMjIwOTksIDEyMjEwNywgMTIyMTE2LCAxMjIxMjUsIDEyMjEzNCwgCisgICAgMTIyMTQzLCAxMjIxNTIsIDEyMjE2MSwgMTIyMTcwLCAxMjIxNzksIDEyMjE4OCwgMTIyMTk3LCAxMjIyMDYsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyMjIwOCwgMTIyMjE1LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNywgCi0gICAgMTIyMjQyLCAxMjIyNDcsIDEyMjI1MiwgMTIyMjU3LCAwLCAwLCAwLCAwLCAwLCAxMjIyNjIsIDEyMjI2NywgMTIyMjczLCAKLSAgICAxMjIyNzksIDEyMjI4NSwgMTIyMjkwLCAxMjIyOTYsIDEyMjMwMiwgMTIyMzA4LCAxMjIzMTMsIDEyMjMxOSwgMTIyMzI1LCAKLSAgICAxMjIzMzAsIDEyMjMzNSwgMTIyMzQxLCAxMjIzNDYsIDEyMjM1MiwgMTIyMzU4LCAxMjIzNjMsIDEyMjM2OSwgMTIyMzc1LCAKLSAgICAxMjIzODAsIDEyMjM4NiwgMTIyMzkyLCAxMjIzOTgsIDEyMjQwNCwgMTIyNDEwLCAxMjI0MjEsIDEyMjQyOCwgMTIyNDM0LCAKLSAgICAxMjI0MzcsIDAsIDEyMjQ0MCwgMTIyNDQ1LCAxMjI0NTEsIDEyMjQ1NywgMTIyNDYzLCAxMjI0NjgsIDEyMjQ3NCwgCi0gICAgMTIyNDgwLCAxMjI0ODYsIDEyMjQ5MSwgMTIyNDk3LCAxMjI1MDMsIDEyMjUwOCwgMTIyNTEzLCAxMjI1MTksIDEyMjUyNCwgCi0gICAgMTIyNTMwLCAxMjI1MzYsIDEyMjU0MSwgMTIyNTQ3LCAxMjI1NTMsIDEyMjU1OCwgMTIyNTY0LCAxMjI1NzAsIDEyMjU3NiwgCi0gICAgMTIyNTgyLCAxMjI1ODgsIDEyMjU5MSwgMTIyNTk0LCAxMjI1OTcsIDEyMjYwMCwgMTIyNjAzLCAxMjI2MDYsIDEyMjYxMiwgCi0gICAgMTIyNjE5LCAxMjI2MjYsIDEyMjYzMywgMTIyNjM5LCAxMjI2NDYsIDEyMjY1MywgMTIyNjYwLCAxMjI2NjYsIDEyMjY3MywgCi0gICAgMTIyNjgwLCAxMjI2ODYsIDEyMjY5MiwgMTIyNjk5LCAxMjI3MDUsIDEyMjcxMiwgMTIyNzE5LCAxMjI3MjUsIDEyMjczMiwgCi0gICAgMTIyNzM5LCAxMjI3NDUsIDEyMjc1MiwgMTIyNzU5LCAxMjI3NjYsIDEyMjc3MywgMTIyNzgwLCAxMjI3ODUsIDAsIDAsIDAsIAotICAgIDAsIDEyMjc5MCwgMTIyNzk2LCAxMjI4MDMsIDEyMjgxMCwgMTIyODE3LCAxMjI4MjMsIDEyMjgzMCwgMTIyODM3LCAKLSAgICAxMjI4NDQsIDEyMjg1MCwgMTIyODU3LCAxMjI4NjQsIDEyMjg3MCwgMTIyODc2LCAxMjI4ODMsIDEyMjg4OSwgMTIyODk2LCAKLSAgICAxMjI5MDMsIDEyMjkwOSwgMTIyOTE2LCAxMjI5MjMsIDEyMjkyOSwgMTIyOTM2LCAxMjI5NDMsIDEyMjk1MCwgMTIyOTU3LCAKLSAgICAxMjI5NjQsIDEyMjk3MywgMTIyOTc3LCAxMjI5ODAsIDEyMjk4MywgMTIyOTg3LCAxMjI5OTEsIDEyMjk5NCwgMTIyOTk3LCAKLSAgICAxMjMwMDAsIDEyMzAwMywgMTIzMDA2LCAxMjMwMDksIDEyMzAxMiwgMTIzMDE1LCAxMjMwMTgsIDEyMzAyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTIyMjEzLCAxMjIyMjAsIDEyMjIyNSwgMTIyMjI5LCAxMjIyMzMsIDEyMjIzNywgMTIyMjQyLCAKKyAgICAxMjIyNDcsIDEyMjI1MiwgMTIyMjU3LCAxMjIyNjIsIDAsIDAsIDAsIDAsIDAsIDEyMjI2NywgMTIyMjcyLCAxMjIyNzgsIAorICAgIDEyMjI4NCwgMTIyMjkwLCAxMjIyOTUsIDEyMjMwMSwgMTIyMzA3LCAxMjIzMTMsIDEyMjMxOCwgMTIyMzI0LCAxMjIzMzAsIAorICAgIDEyMjMzNSwgMTIyMzQwLCAxMjIzNDYsIDEyMjM1MSwgMTIyMzU3LCAxMjIzNjMsIDEyMjM2OCwgMTIyMzc0LCAxMjIzODAsIAorICAgIDEyMjM4NSwgMTIyMzkxLCAxMjIzOTcsIDEyMjQwMywgMTIyNDA5LCAxMjI0MTUsIDEyMjQyNiwgMTIyNDMzLCAxMjI0MzksIAorICAgIDEyMjQ0MiwgMCwgMTIyNDQ1LCAxMjI0NTAsIDEyMjQ1NiwgMTIyNDYyLCAxMjI0NjgsIDEyMjQ3MywgMTIyNDc5LCAKKyAgICAxMjI0ODUsIDEyMjQ5MSwgMTIyNDk2LCAxMjI1MDIsIDEyMjUwOCwgMTIyNTEzLCAxMjI1MTgsIDEyMjUyNCwgMTIyNTI5LCAKKyAgICAxMjI1MzUsIDEyMjU0MSwgMTIyNTQ2LCAxMjI1NTIsIDEyMjU1OCwgMTIyNTYzLCAxMjI1NjksIDEyMjU3NSwgMTIyNTgxLCAKKyAgICAxMjI1ODcsIDEyMjU5MywgMTIyNTk2LCAxMjI1OTksIDEyMjYwMiwgMTIyNjA1LCAxMjI2MDgsIDEyMjYxMSwgMTIyNjE3LCAKKyAgICAxMjI2MjQsIDEyMjYzMSwgMTIyNjM4LCAxMjI2NDQsIDEyMjY1MSwgMTIyNjU4LCAxMjI2NjUsIDEyMjY3MSwgMTIyNjc4LCAKKyAgICAxMjI2ODUsIDEyMjY5MSwgMTIyNjk3LCAxMjI3MDQsIDEyMjcxMCwgMTIyNzE3LCAxMjI3MjQsIDEyMjczMCwgMTIyNzM3LCAKKyAgICAxMjI3NDQsIDEyMjc1MCwgMTIyNzU3LCAxMjI3NjQsIDEyMjc3MSwgMTIyNzc4LCAxMjI3ODUsIDEyMjc5MCwgMCwgMCwgMCwgCisgICAgMCwgMTIyNzk1LCAxMjI4MDEsIDEyMjgwOCwgMTIyODE1LCAxMjI4MjIsIDEyMjgyOCwgMTIyODM1LCAxMjI4NDIsIAorICAgIDEyMjg0OSwgMTIyODU1LCAxMjI4NjIsIDEyMjg2OSwgMTIyODc1LCAxMjI4ODEsIDEyMjg4OCwgMTIyODk0LCAxMjI5MDEsIAorICAgIDEyMjkwOCwgMTIyOTE0LCAxMjI5MjEsIDEyMjkyOCwgMTIyOTM0LCAxMjI5NDEsIDEyMjk0OCwgMTIyOTU1LCAxMjI5NjIsIAorICAgIDEyMjk2OSwgMTIyOTc4LCAxMjI5ODIsIDEyMjk4NSwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgMTIyOTk5LCAxMjMwMDIsIAorICAgIDEyMzAwNSwgMTIzMDA4LCAxMjMwMTEsIDEyMzAxNCwgMTIzMDE3LCAxMjMwMjAsIDEyMzAyMywgMTIzMDI5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjMwMjcsIDEyMzAzNCwgMTIzMDQyLCAxMjMwNTAsIDEyMzA1OCwgMTIzMDY1LCAxMjMwNzMsIDEyMzA4MSwgMTIzMDg5LCAKLSAgICAxMjMwOTYsIDEyMzEwNCwgMTIzMTEyLCAxMjMxMTksIDEyMzEyNiwgMTIzMTM0LCAxMjMxNDEsIDEyMzE0OSwgMTIzMTU3LCAKLSAgICAxMjMxNjQsIDEyMzE3MiwgMTIzMTgwLCAxMjMxODcsIDEyMzE5NSwgMTIzMjAzLCAxMjMyMTEsIDEyMzIxOSwgMTIzMjI3LCAKLSAgICAxMjMyMzEsIDEyMzIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMjM4LCAxMjMyNDQsIAotICAgIDEyMzI1MCwgMTIzMjU2LCAxMjMyNjAsIDEyMzI2NiwgMTIzMjcyLCAxMjMyNzgsIDEyMzI4NCwgMTIzMjkwLCAxMjMyOTYsIAotICAgIDEyMzMwMiwgMTIzMzA4LCAxMjMzMTQsIDEyMzMyMCwgMTIzMzI2LCAxMjMzMzIsIDEyMzMzOCwgMTIzMzQ0LCAxMjMzNTAsIAotICAgIDEyMzM1NiwgMTIzMzYyLCAxMjMzNjgsIDEyMzM3NCwgMTIzMzgwLCAxMjMzODYsIDEyMzM5MiwgMTIzMzk4LCAxMjM0MDQsIAotICAgIDEyMzQxMCwgMTIzNDE2LCAxMjM0MjIsIDEyMzQyOCwgMTIzNDM0LCAxMjM0NDAsIDEyMzQ0NiwgMTIzNDUyLCAxMjM0NTgsIAotICAgIDEyMzQ2NCwgMTIzNDcwLCAxMjM0NzYsIDEyMzQ4MiwgMTIzNDg4LCAwLCAwLCAwLCAwLCAwLCAxMjM0OTQsIDEyMzUwNSwgCi0gICAgMTIzNTE2LCAxMjM1MjcsIDEyMzUzOCwgMTIzNTQ5LCAxMjM1NjAsIDEyMzU3MSwgMTIzNTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjM1OTMsIDEyMzU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIzMDMyLCAxMjMwMzksIDEyMzA0NywgMTIzMDU1LCAxMjMwNjMsIDEyMzA3MCwgMTIzMDc4LCAxMjMwODYsIDEyMzA5NCwgCisgICAgMTIzMTAxLCAxMjMxMDksIDEyMzExNywgMTIzMTI0LCAxMjMxMzEsIDEyMzEzOSwgMTIzMTQ2LCAxMjMxNTQsIDEyMzE2MiwgCisgICAgMTIzMTY5LCAxMjMxNzcsIDEyMzE4NSwgMTIzMTkyLCAxMjMyMDAsIDEyMzIwOCwgMTIzMjE2LCAxMjMyMjQsIDEyMzIzMiwgCisgICAgMTIzMjM2LCAxMjMyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzI0MywgMTIzMjQ5LCAKKyAgICAxMjMyNTUsIDEyMzI2MSwgMTIzMjY1LCAxMjMyNzEsIDEyMzI3NywgMTIzMjgzLCAxMjMyODksIDEyMzI5NSwgMTIzMzAxLCAKKyAgICAxMjMzMDcsIDEyMzMxMywgMTIzMzE5LCAxMjMzMjUsIDEyMzMzMSwgMTIzMzM3LCAxMjMzNDMsIDEyMzM0OSwgMTIzMzU1LCAKKyAgICAxMjMzNjEsIDEyMzM2NywgMTIzMzczLCAxMjMzNzksIDEyMzM4NSwgMTIzMzkxLCAxMjMzOTcsIDEyMzQwMywgMTIzNDA5LCAKKyAgICAxMjM0MTUsIDEyMzQyMSwgMTIzNDI3LCAxMjM0MzMsIDEyMzQzOSwgMTIzNDQ1LCAxMjM0NTEsIDEyMzQ1NywgMTIzNDYzLCAKKyAgICAxMjM0NjksIDEyMzQ3NSwgMTIzNDgxLCAxMjM0ODcsIDEyMzQ5MywgMCwgMCwgMCwgMCwgMCwgMTIzNDk5LCAxMjM1MTAsIAorICAgIDEyMzUyMSwgMTIzNTMyLCAxMjM1NDMsIDEyMzU1NCwgMTIzNTY1LCAxMjM1NzYsIDEyMzU4NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTIzNTk4LCAxMjM2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyMzYwMSwgMTIzNjAzLCAxMjM2MDUsIDEyMzYwOSwgMTIzNjE0LCAxMjM2MTksIDEyMzYyMSwgCi0gICAgMTIzNjI3LCAxMjM2MzIsIDEyMzYzNCwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0NiwgMTIzNjUwLCAxMjM2NTYsIDEyMzY2MiwgCi0gICAgMTIzNjY4LCAxMjM2NzMsIDEyMzY3NywgMTIzNjg0LCAxMjM2OTEsIDEyMzY5OCwgMTIzNzAzLCAxMjM3MTAsIDEyMzcxNywgCi0gICAgMTIzNzI0LCAxMjM3MjgsIDEyMzczNCwgMTIzNzQzLCAxMjM3NTIsIDEyMzc1OSwgMTIzNzY0LCAxMjM3NjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzc3MiwgMTIzNzc0LCAxMjM3NzYsIDEyMzc4MCwgCi0gICAgMTIzNzg0LCAxMjM3ODgsIDAsIDEyMzc5MCwgMTIzNzkyLCAxMjM3OTYsIDEyMzc5OCwgMTIzODAwLCAxMjM4MDIsIAotICAgIDEyMzgwNCwgMTIzODA5LCAxMjM4MTQsIDEyMzgxNiwgMTIzODIyLCAxMjM4MjYsIDEyMzgzMCwgMTIzODM4LCAxMjM4NDAsIAotICAgIDEyMzg0MiwgMTIzODQ0LCAxMjM4NDYsIDEyMzg0OCwgMTIzODUwLCAxMjM4NTIsIDEyMzg1NCwgMTIzODU2LCAxMjM4NTgsIAotICAgIDEyMzg2MiwgMTIzODY2LCAxMjM4NjgsIDEyMzg3MCwgMTIzODcyLCAxMjM4NzQsIDEyMzg3NiwgMTIzODgxLCAxMjM4ODcsIAotICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNCwgMTIzOTE2LCAxMjM5MjAsIAotICAgIDEyMzkyNiwgMTIzOTI4LCAxMjM5MzAsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDUsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAotICAgIDEyMzk2MSwgMTIzOTYzLCAxMjM5NjYsIDEyMzk2OCwgMTIzOTcwLCAxMjM5NzIsIDEyMzk3NiwgMTIzOTc4LCAxMjM5ODIsIAotICAgIDEyMzk4NywgMTIzOTg5LCAxMjM5OTQsIDEyNDAwMCwgMTI0MDA3LCAxMjQwMTEsIDEyNDAxNSwgMTI0MDE5LCAxMjQwMjMsIAotICAgIDEyNDAyOSwgMCwgMCwgMCwgMTI0MDMzLCAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDUsIDEyNDA0OSwgMTI0MDUzLCAKLSAgICAxMjQwNTUsIDEyNDA1OSwgMTI0MDYxLCAxMjQwNjUsIDEyNDA2OSwgMTI0MDczLCAxMjQwNzcsIDEyNDA4MSwgMTI0MDg1LCAKLSAgICAxMjQwODksIDEyNDA5MywgMTI0MDk5LCAxMjQxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTI2LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM0LCAxMjQxMzYsIAotICAgIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MCwgMTI0MTU0LCAxMjQxNTgsIDEyNDE2MiwgMTI0MTY2LCAxMjQxNzAsIAotICAgIDEyNDE3MiwgMTI0MTc2LCAxMjQxNzgsIDEyNDE4NCwgMTI0MTg3LCAxMjQxOTIsIDEyNDE5NCwgMTI0MTk2LCAxMjQxOTksIAotICAgIDEyNDIwMSwgMTI0MjAzLCAxMjQyMDYsIDEyNDIxMywgMTI0MjIwLCAxMjQyMjcsIDEyNDIzMiwgMTI0MjM2LCAxMjQyMzgsIAotICAgIDEyNDI0MCwgMCwgMTI0MjQyLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDI1OCwgMTI0MjYyLCAxMjQyNjcsIDEyNDI3MSwgCi0gICAgMTI0Mjc3LCAxMjQyODMsIDEyNDI4NSwgMTI0Mjg3LCAxMjQyOTMsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDMsIDEyNDMwNSwgCi0gICAgMTI0MzA5LCAxMjQzMTEsIDEyNDMxNSwgMTI0MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjQzMjMsIDEyNDMyNSwgMTI0MzI3LCAxMjQzMjksIDEyNDMzMywgMTI0MzM1LCAxMjQzMzcsIDEyNDMzOSwgCi0gICAgMTI0MzQxLCAxMjQzNDMsIDEyNDM0NSwgMTI0MzQ3LCAxMjQzNDksIDEyNDM1MSwgMTI0MzUzLCAxMjQzNTUsIDEyNDM1NywgCi0gICAgMTI0MzU5LCAxMjQzNjEsIDEyNDM2MywgMTI0MzY1LCAxMjQzNjcsIDEyNDM2OSwgMTI0MzcxLCAxMjQzNzMsIDEyNDM3NSwgCi0gICAgMTI0Mzc3LCAxMjQzODEsIDEyNDM4MywgMTI0Mzg1LCAxMjQzODcsIDEyNDM5MSwgMTI0MzkzLCAxMjQzOTcsIDEyNDM5OSwgCi0gICAgMTI0NDAxLCAxMjQ0MDUsIDEyNDQwOSwgMTI0NDE1LCAxMjQ0MTcsIDEyNDQxOSwgMTI0NDIxLCAxMjQ0MjMsIDEyNDQyNywgCi0gICAgMTI0NDMxLCAxMjQ0MzMsIDEyNDQzNywgMTI0NDQxLCAxMjQ0NDUsIDEyNDQ0OSwgMTI0NDUzLCAxMjQ0NTcsIDEyNDQ2MSwgCi0gICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCi0gICAgMTI0NTAxLCAwLCAxMjQ1MDUsIDAsIDEyNDUwNywgMTI0NTA5LCAxMjQ1MTEsIDEyNDUxMywgMTI0NTE1LCAxMjQ1MjMsIAotICAgIDEyNDUzMSwgMTI0NTM5LCAxMjQ1NDcsIDEyNDU1MiwgMTI0NTU3LCAxMjQ1NjIsIDEyNDU2NiwgMTI0NTcwLCAxMjQ1NzUsIAotICAgIDEyNDU3OSwgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4NywgMTI0NTg5LCAxMjQ1OTEsIDEyNDU5MywgMTI0NTk1LCAxMjQ1OTcsIAotICAgIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDUsIDEyNDYwNywgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIAotICAgIDEyNDYyOSwgMTI0NjMxLCAxMjQ2MzcsIDEyNDY0MywgMTI0NjQ1LCAxMjQ2NDcsIDEyNDY0OSwgMTI0NjUxLCAxMjQ2NTMsIAotICAgIDEyNDY2MiwgMTI0NjY5LCAxMjQ2NzYsIDEyNDY4MCwgMTI0Njg3LCAxMjQ2OTIsIDEyNDY5OSwgMTI0NzA4LCAxMjQ3MTMsIAotICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjMsIDEyNDcyNywgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzM5LCAxMjQ3NDMsIAotICAgIDEyNDc0NywgMTI0NzUxLCAxMjQ3NTMsIDEyNDc1NSwgMTI0NzYxLCAxMjQ3NjMsIDEyNDc2NSwgMTI0NzY3LCAxMjQ3NzEsIAotICAgIDEyNDc3NSwgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4MywgMTI0Nzg1LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk0LCAxMjQ3OTgsIAotICAgIDEyNDgwMCwgMTI0ODAyLCAxMjQ4MDcsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIAotICAgIDEyNDgzMiwgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTMsIDEyNDg1NywgMTI0ODYxLCAxMjQ4NzAsIAotICAgIDEyNDg3NSwgMTI0ODc4LCAxMjQ4ODAsIDEyNDg4MywgMTI0ODg2LCAxMjQ4OTEsIDEyNDg5MywgMTI0ODk2LCAxMjQ5MDEsIAotICAgIDEyNDkwNSwgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTE5LCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIAotICAgIDEyNDk0MCwgMTI0OTQ2LCAxMjQ5NTIsIDEyNDk1OCwgMTI0OTY0LCAxMjQ5NjksIDEyNDk4MCwgMTI0OTgyLCAxMjQ5ODYsIAotICAgIDEyNDk4OCwgMTI0OTkwLCAxMjQ5OTQsIDEyNDk5OCwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOSwgMTI1MDE0LCAxMjUwMjAsIAotICAgIDEyNTAyMiwgMTI1MDI2LCAxMjUwMzAsIDEyNTAzNywgMTI1MDQ0LCAxMjUwNDgsIDEyNTA1MCwgMTI1MDUyLCAxMjUwNTYsIAotICAgIDEyNTA1OCwgMTI1MDYyLCAxMjUwNjYsIDEyNTA3MCwgMTI1MDcyLCAxMjUwNzQsIDEyNTA4MSwgMTI1MDg1LCAxMjUwODgsIAotICAgIDEyNTA5MiwgMTI1MDk2LCAxMjUxMDAsIDEyNTEwMiwgMTI1MTA2LCAxMjUxMDgsIDEyNTExMCwgMTI1MTE0LCAxMjUxMTYsIAotICAgIDEyNTEyMCwgMTI1MTI0LCAxMjUxMzAsIDEyNTEzNCwgMTI1MTM4LCAxMjUxNDIsIDEyNTE0NCwgMTI1MTQ3LCAxMjUxNTEsIAotICAgIDEyNTE1OCwgMTI1MTY3LCAxMjUxNzYsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTQsIDEyNTE5OCwgMTI1MjAwLCAxMjUyMDQsIAotICAgIDEyNTIxNSwgMTI1MjE5LCAxMjUyMjUsIDEyNTIzMSwgMTI1MjM2LCAwLCAxMjUyMzgsIDEyNTI0MiwgMTI1MjQ0LCAKLSAgICAxMjUyNDYsIDAsIDAsIDAsIDEyNTI0OCwgMTI1MjUzLCAxMjUyNjMsIDEyNTI3OCwgMTI1MjkwLCAxMjUzMDIsIDEyNTMwNiwgCi0gICAgMTI1MzEwLCAxMjUzMTYsIDEyNTMxOCwgMTI1MzI2LCAxMjUzMzQsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgCi0gICAgMTI1MzU5LCAxMjUzNjYsIDEyNTM2OCwgMTI1MzcwLCAxMjUzNzMsIDEyNTM3NSwgMTI1MzgxLCAxMjUzODMsIDEyNTM4NiwgCi0gICAgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDEzLCAxMjU0MTksIDEyNTQyNiwgMTI1NDM0LCAxMjU0MzgsIDEyNTQ0NiwgCi0gICAgMTI1NDU0LCAxMjU0NjAsIDEyNTQ2NiwgMTI1NDczLCAxMjU0NzUsIDEyNTQ3OSwgMTI1NDgxLCAxMjU0ODMsIDEyNTQ4OCwgCi0gICAgMTI1NDkwLCAxMjU0OTIsIDEyNTQ5NCwgMTI1NDk2LCAxMjU1MDAsIDEyNTUxMSwgMTI1NTE3LCAxMjU1MjEsIDEyNTUyNSwgCi0gICAgMTI1NTI5LCAxMjU1MzUsIDEyNTU0MSwgMTI1NTQ3LCAxMjU1NTMsIDEyNTU1OCwgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgCi0gICAgMTI1NTgyLCAwLCAwLCAxMjU1ODksIDEyNTU5NCwgMTI1NjAyLCAxMjU2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEyNTYxNSwgMTI1NjIyLCAxMjU2MjksIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY2MCwgMTI1NjY4LCAKLSAgICAxMjU2NzYsIDEyNTY4NCwgMTI1NjkyLCAxMjU3MDAsIDEyNTcwOCwgMTI1NzE0LCAxMjU3MjAsIDEyNTcyNiwgMTI1NzMyLCAKLSAgICAxMjU3MzgsIDEyNTc0NCwgMTI1NzUwLCAxMjU3NTYsIDEyNTc2MiwgMTI1NzY4LCAxMjU3NzQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMzYwNiwgMTIzNjA4LCAxMjM2MTAsIDEyMzYxNCwgMTIzNjE5LCAxMjM2MjQsIDEyMzYyNiwgCisgICAgMTIzNjMyLCAxMjM2MzcsIDEyMzYzOSwgMTIzNjQ1LCAxMjM2NDksIDEyMzY1MSwgMTIzNjU1LCAxMjM2NjEsIDEyMzY2NywgCisgICAgMTIzNjczLCAxMjM2NzgsIDEyMzY4MiwgMTIzNjg5LCAxMjM2OTYsIDEyMzcwMywgMTIzNzA4LCAxMjM3MTUsIDEyMzcyMiwgCisgICAgMTIzNzI5LCAxMjM3MzMsIDEyMzczOSwgMTIzNzQ4LCAxMjM3NTcsIDEyMzc2NCwgMTIzNzY5LCAxMjM3NzMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzc3NywgMTIzNzc5LCAxMjM3ODEsIDEyMzc4NSwgCisgICAgMTIzNzg5LCAxMjM3OTMsIDAsIDEyMzc5NSwgMTIzNzk3LCAxMjM4MDEsIDEyMzgwMywgMTIzODA1LCAxMjM4MDcsIAorICAgIDEyMzgwOSwgMTIzODE0LCAxMjM4MTksIDEyMzgyMSwgMTIzODI3LCAxMjM4MzEsIDEyMzgzNSwgMTIzODQzLCAxMjM4NDUsIAorICAgIDEyMzg0NywgMTIzODQ5LCAxMjM4NTEsIDEyMzg1MywgMTIzODU1LCAxMjM4NTcsIDEyMzg1OSwgMTIzODYxLCAxMjM4NjMsIAorICAgIDEyMzg2NywgMTIzODcxLCAxMjM4NzMsIDEyMzg3NSwgMTIzODc3LCAxMjM4NzksIDEyMzg4MSwgMTIzODg2LCAxMjM4OTIsIAorICAgIDEyMzg5NiwgMTIzOTAwLCAxMjM5MDQsIDEyMzkwOCwgMTIzOTEzLCAxMjM5MTcsIDEyMzkxOSwgMTIzOTIxLCAxMjM5MjUsIAorICAgIDEyMzkzMSwgMTIzOTMzLCAxMjM5MzUsIDEyMzkzNywgMTIzOTQxLCAxMjM5NTAsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIAorICAgIDEyMzk2NiwgMTIzOTY4LCAxMjM5NzEsIDEyMzk3MywgMTIzOTc1LCAxMjM5NzcsIDEyMzk4MSwgMTIzOTgzLCAxMjM5ODcsIAorICAgIDEyMzk5MiwgMTIzOTk0LCAxMjM5OTksIDEyNDAwNSwgMTI0MDEyLCAxMjQwMTYsIDEyNDAyMCwgMTI0MDI0LCAxMjQwMjgsIAorICAgIDEyNDAzNCwgMCwgMCwgMCwgMTI0MDM4LCAxMjQwNDAsIDEyNDA0NCwgMTI0MDQ4LCAxMjQwNTAsIDEyNDA1NCwgMTI0MDU4LCAKKyAgICAxMjQwNjAsIDEyNDA2NCwgMTI0MDY2LCAxMjQwNzAsIDEyNDA3NCwgMTI0MDc4LCAxMjQwODIsIDEyNDA4NiwgMTI0MDkwLCAKKyAgICAxMjQwOTQsIDEyNDA5OCwgMTI0MTA0LCAxMjQxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDExMiwgMTI0MTE2LCAxMjQxMjAsIDEyNDEyNCwgMTI0MTMxLCAxMjQxMzMsIDEyNDEzNywgMTI0MTM5LCAxMjQxNDEsIAorICAgIDEyNDE0NSwgMTI0MTQ5LCAxMjQxNTMsIDEyNDE1NSwgMTI0MTU5LCAxMjQxNjMsIDEyNDE2NywgMTI0MTcxLCAxMjQxNzUsIAorICAgIDEyNDE3NywgMTI0MTgxLCAxMjQxODMsIDEyNDE4OSwgMTI0MTkyLCAxMjQxOTcsIDEyNDE5OSwgMTI0MjAxLCAxMjQyMDQsIAorICAgIDEyNDIwNiwgMTI0MjA4LCAxMjQyMTEsIDEyNDIxOCwgMTI0MjI1LCAxMjQyMzIsIDEyNDIzNywgMTI0MjQxLCAxMjQyNDMsIAorICAgIDEyNDI0NSwgMCwgMTI0MjQ3LCAxMjQyNDksIDEyNDI1MywgMTI0MjU3LCAxMjQyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDI2MywgMTI0MjY3LCAxMjQyNzIsIDEyNDI3NiwgCisgICAgMTI0MjgyLCAxMjQyODgsIDEyNDI5MCwgMTI0MjkyLCAxMjQyOTgsIDEyNDMwMCwgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMCwgCisgICAgMTI0MzE0LCAxMjQzMTYsIDEyNDMyMCwgMTI0MzI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjQzMjgsIDEyNDMzMCwgMTI0MzMyLCAxMjQzMzQsIDEyNDMzOCwgMTI0MzQwLCAxMjQzNDIsIDEyNDM0NCwgCisgICAgMTI0MzQ2LCAxMjQzNDgsIDEyNDM1MCwgMTI0MzUyLCAxMjQzNTQsIDEyNDM1NiwgMTI0MzU4LCAxMjQzNjAsIDEyNDM2MiwgCisgICAgMTI0MzY0LCAxMjQzNjYsIDEyNDM2OCwgMTI0MzcwLCAxMjQzNzIsIDEyNDM3NCwgMTI0Mzc2LCAxMjQzNzgsIDEyNDM4MCwgCisgICAgMTI0MzgyLCAxMjQzODYsIDEyNDM4OCwgMTI0MzkwLCAxMjQzOTIsIDEyNDM5NiwgMTI0Mzk4LCAxMjQ0MDIsIDEyNDQwNCwgCisgICAgMTI0NDA2LCAxMjQ0MTAsIDEyNDQxNCwgMTI0NDIwLCAxMjQ0MjIsIDEyNDQyNCwgMTI0NDI2LCAxMjQ0MjgsIDEyNDQzMiwgCisgICAgMTI0NDM2LCAxMjQ0MzgsIDEyNDQ0MiwgMTI0NDQ2LCAxMjQ0NTAsIDEyNDQ1NCwgMTI0NDU4LCAxMjQ0NjIsIDEyNDQ2NiwgCisgICAgMTI0NDcwLCAxMjQ0NzQsIDEyNDQ3OCwgMTI0NDgyLCAxMjQ0ODYsIDEyNDQ5MCwgMTI0NDk0LCAxMjQ0OTgsIDEyNDUwMiwgCisgICAgMTI0NTA2LCAwLCAxMjQ1MTAsIDAsIDEyNDUxMiwgMTI0NTE0LCAxMjQ1MTYsIDEyNDUxOCwgMTI0NTIwLCAxMjQ1MjgsIAorICAgIDEyNDUzNiwgMTI0NTQ0LCAxMjQ1NTIsIDEyNDU1NywgMTI0NTYyLCAxMjQ1NjcsIDEyNDU3MSwgMTI0NTc1LCAxMjQ1ODAsIAorICAgIDEyNDU4NCwgMTI0NTg2LCAxMjQ1OTAsIDEyNDU5MiwgMTI0NTk0LCAxMjQ1OTYsIDEyNDU5OCwgMTI0NjAwLCAxMjQ2MDIsIAorICAgIDEyNDYwNCwgMTI0NjA4LCAxMjQ2MTAsIDEyNDYxMiwgMTI0NjE0LCAxMjQ2MTgsIDEyNDYyMiwgMTI0NjI2LCAxMjQ2MzAsIAorICAgIDEyNDYzNCwgMTI0NjM2LCAxMjQ2NDIsIDEyNDY0OCwgMTI0NjUwLCAxMjQ2NTIsIDEyNDY1NCwgMTI0NjU2LCAxMjQ2NTgsIAorICAgIDEyNDY2NywgMTI0Njc0LCAxMjQ2ODEsIDEyNDY4NSwgMTI0NjkyLCAxMjQ2OTcsIDEyNDcwNCwgMTI0NzEzLCAxMjQ3MTgsIAorICAgIDEyNDcyMiwgMTI0NzI2LCAxMjQ3MjgsIDEyNDczMiwgMTI0NzM0LCAxMjQ3MzgsIDEyNDc0MiwgMTI0NzQ0LCAxMjQ3NDgsIAorICAgIDEyNDc1MiwgMTI0NzU2LCAxMjQ3NTgsIDEyNDc2MCwgMTI0NzY2LCAxMjQ3NjgsIDEyNDc3MCwgMTI0NzcyLCAxMjQ3NzYsIAorICAgIDEyNDc4MCwgMTI0NzgyLCAxMjQ3ODYsIDEyNDc4OCwgMTI0NzkwLCAxMjQ3OTMsIDEyNDc5NywgMTI0Nzk5LCAxMjQ4MDMsIAorICAgIDEyNDgwNSwgMTI0ODA3LCAxMjQ4MTIsIDEyNDgxNCwgMTI0ODE4LCAxMjQ4MjIsIDEyNDgyNSwgMTI0ODI5LCAxMjQ4MzMsIAorICAgIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OSwgMTI0ODUzLCAxMjQ4NTgsIDEyNDg2MiwgMTI0ODY2LCAxMjQ4NzUsIAorICAgIDEyNDg4MCwgMTI0ODgzLCAxMjQ4ODUsIDEyNDg4OCwgMTI0ODkxLCAxMjQ4OTYsIDEyNDg5OCwgMTI0OTAxLCAxMjQ5MDYsIAorICAgIDEyNDkxMCwgMTI0OTEzLCAxMjQ5MTcsIDEyNDkyMSwgMTI0OTI0LCAxMjQ5MjksIDEyNDkzMywgMTI0OTM3LCAxMjQ5NDEsIAorICAgIDEyNDk0NSwgMTI0OTUxLCAxMjQ5NTcsIDEyNDk2MywgMTI0OTY5LCAxMjQ5NzQsIDEyNDk4NSwgMTI0OTg3LCAxMjQ5OTEsIAorICAgIDEyNDk5MywgMTI0OTk1LCAxMjQ5OTksIDEyNTAwMywgMTI1MDA1LCAxMjUwMDksIDEyNTAxNCwgMTI1MDE5LCAxMjUwMjUsIAorICAgIDEyNTAyNywgMTI1MDMxLCAxMjUwMzUsIDEyNTA0MiwgMTI1MDQ5LCAxMjUwNTMsIDEyNTA1NSwgMTI1MDU3LCAxMjUwNjEsIAorICAgIDEyNTA2MywgMTI1MDY3LCAxMjUwNzEsIDEyNTA3NSwgMTI1MDc3LCAxMjUwNzksIDEyNTA4NiwgMTI1MDkwLCAxMjUwOTMsIAorICAgIDEyNTA5NywgMTI1MTAxLCAxMjUxMDUsIDEyNTEwNywgMTI1MTExLCAxMjUxMTMsIDEyNTExNSwgMTI1MTE5LCAxMjUxMjEsIAorICAgIDEyNTEyNSwgMTI1MTI5LCAxMjUxMzUsIDEyNTEzOSwgMTI1MTQzLCAxMjUxNDcsIDEyNTE0OSwgMTI1MTUyLCAxMjUxNTYsIAorICAgIDEyNTE2MywgMTI1MTcyLCAxMjUxODEsIDEyNTE4OSwgMTI1MTk3LCAxMjUxOTksIDEyNTIwMywgMTI1MjA1LCAxMjUyMDksIAorICAgIDEyNTIyMCwgMTI1MjI0LCAxMjUyMzAsIDEyNTIzNiwgMTI1MjQxLCAwLCAxMjUyNDMsIDEyNTI0NywgMTI1MjQ5LCAKKyAgICAxMjUyNTEsIDAsIDAsIDAsIDEyNTI1MywgMTI1MjU4LCAxMjUyNjgsIDEyNTI4MywgMTI1Mjk1LCAxMjUzMDcsIDEyNTMxMSwgCisgICAgMTI1MzE1LCAxMjUzMjEsIDEyNTMyMywgMTI1MzMxLCAxMjUzMzksIDEyNTM0MSwgMTI1MzQ1LCAxMjUzNTEsIDEyNTM1NywgCisgICAgMTI1MzY0LCAxMjUzNzEsIDEyNTM3MywgMTI1Mzc1LCAxMjUzNzgsIDEyNTM4MCwgMTI1Mzg2LCAxMjUzODgsIDEyNTM5MSwgCisgICAgMTI1Mzk1LCAxMjU0MDEsIDEyNTQwNywgMTI1NDE4LCAxMjU0MjQsIDEyNTQzMSwgMTI1NDM5LCAxMjU0NDMsIDEyNTQ1MSwgCisgICAgMTI1NDU5LCAxMjU0NjUsIDEyNTQ3MSwgMTI1NDc4LCAxMjU0ODAsIDEyNTQ4NCwgMTI1NDg2LCAxMjU0ODgsIDEyNTQ5MywgCisgICAgMTI1NDk1LCAxMjU0OTcsIDEyNTQ5OSwgMTI1NTAxLCAxMjU1MDUsIDEyNTUxNiwgMTI1NTIyLCAxMjU1MjYsIDEyNTUzMCwgCisgICAgMTI1NTM0LCAxMjU1NDAsIDEyNTU0NiwgMTI1NTUyLCAxMjU1NTgsIDEyNTU2MywgMTI1NTY4LCAxMjU1NzQsIDEyNTU4MCwgCisgICAgMTI1NTg3LCAwLCAwLCAxMjU1OTQsIDEyNTU5OSwgMTI1NjA3LCAxMjU2MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyNTYyMCwgMTI1NjI3LCAxMjU2MzQsIDEyNTY0MSwgMTI1NjQ5LCAxMjU2NTcsIDEyNTY2NSwgMTI1NjczLCAKKyAgICAxMjU2ODEsIDEyNTY4OSwgMTI1Njk3LCAxMjU3MDUsIDEyNTcxMywgMTI1NzE5LCAxMjU3MjUsIDEyNTczMSwgMTI1NzM3LCAKKyAgICAxMjU3NDMsIDEyNTc0OSwgMTI1NzU1LCAxMjU3NjEsIDEyNTc2NywgMTI1NzczLCAxMjU3NzksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTc4MCwgCi0gICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MywgMTI1Nzk4LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODEzLCAxMjU4MjEsIDEyNTgyOSwgCi0gICAgMTI1ODQyLCAxMjU4NTUsIDEyNTg2OCwgMTI1ODc1LCAxMjU4ODIsIDEyNTg4NiwgMTI1ODk1LCAxMjU5MDMsIDEyNTkwNywgCi0gICAgMTI1OTE2LCAxMjU5MjMsIDEyNTkyNywgMTI1OTMxLCAxMjU5MzUsIDEyNTkzOSwgMTI1OTQ2LCAxMjU5NTAsIDEyNTk1NCwgCi0gICAgMTI1OTU4LCAxMjU5NjIsIDEyNTk2OSwgMTI1OTc4LCAxMjU5ODcsIDEyNTk5NCwgMTI2MDA2LCAxMjYwMTgsIDEyNjAyMiwgCi0gICAgMTI2MDI2LCAxMjYwMzAsIDEyNjAzNCwgMTI2MDM4LCAxMjYwNDIsIDEyNjA1MCwgMTI2MDU4LCAxMjYwNjYsIDEyNjA3MCwgCi0gICAgMTI2MDc0LCAxMjYwNzgsIDEyNjA4MiwgMTI2MDg2LCAxMjYwOTAsIDEyNjA5NiwgMTI2MTAyLCAxMjYxMDYsIDEyNjExNywgCi0gICAgMTI2MTI1LCAxMjYxMjksIDEyNjEzMywgMTI2MTM3LCAxMjYxNDEsIDEyNjE0NywgMTI2MTU0LCAxMjYxNjUsIDEyNjE3NSwgCi0gICAgMTI2MTg1LCAxMjYxOTYsIDEyNjIwNSwgMTI2MjE2LCAxMjYyMjIsIDEyNjIyOCwgMCwgMCwgMCwgMCwgMTI2MjM0LCAKLSAgICAxMjYyNDMsIDEyNjI1MCwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzcsIDEyNjI4OSwgMTI2MjkzLCAKLSAgICAxMjYzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTc4NSwgCisgICAgMTI1Nzg5LCAxMjU3OTMsIDEyNTc5OCwgMTI1ODAzLCAxMjU4MDUsIDEyNTgwOSwgMTI1ODE4LCAxMjU4MjYsIDEyNTgzNCwgCisgICAgMTI1ODQ3LCAxMjU4NjAsIDEyNTg3MywgMTI1ODgwLCAxMjU4ODcsIDEyNTg5MSwgMTI1OTAwLCAxMjU5MDgsIDEyNTkxMiwgCisgICAgMTI1OTIxLCAxMjU5MjgsIDEyNTkzMiwgMTI1OTM2LCAxMjU5NDAsIDEyNTk0NCwgMTI1OTUxLCAxMjU5NTUsIDEyNTk1OSwgCisgICAgMTI1OTYzLCAxMjU5NjcsIDEyNTk3NCwgMTI1OTgzLCAxMjU5OTIsIDEyNTk5OSwgMTI2MDExLCAxMjYwMjMsIDEyNjAyNywgCisgICAgMTI2MDMxLCAxMjYwMzUsIDEyNjAzOSwgMTI2MDQzLCAxMjYwNDcsIDEyNjA1NSwgMTI2MDYzLCAxMjYwNzEsIDEyNjA3NSwgCisgICAgMTI2MDc5LCAxMjYwODMsIDEyNjA4NywgMTI2MDkxLCAxMjYwOTUsIDEyNjEwMSwgMTI2MTA3LCAxMjYxMTEsIDEyNjEyMiwgCisgICAgMTI2MTMwLCAxMjYxMzQsIDEyNjEzOCwgMTI2MTQyLCAxMjYxNDYsIDEyNjE1MiwgMTI2MTU5LCAxMjYxNzAsIDEyNjE4MCwgCisgICAgMTI2MTkwLCAxMjYyMDEsIDEyNjIxMCwgMTI2MjIxLCAxMjYyMjcsIDEyNjIzMywgMCwgMCwgMCwgMCwgMTI2MjM5LCAKKyAgICAxMjYyNDgsIDEyNjI1NSwgMTI2MjYxLCAxMjYyNjUsIDEyNjI2OSwgMTI2MjczLCAxMjYyODIsIDEyNjI5NCwgMTI2Mjk4LCAKKyAgICAxMjYzMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyNjMwNywgMTI2MzA5LCAxMjYzMTEsIDEyNjMxNSwgMTI2MzE5LCAxMjYzMjMsIDEyNjMzMiwgMTI2MzM0LCAKLSAgICAxMjYzMzYsIDEyNjMzOSwgMTI2MzQxLCAxMjYzNDMsIDEyNjM0NywgMTI2MzQ5LCAxMjYzNTMsIDEyNjM1NSwgMTI2MzU5LCAKLSAgICAxMjYzNjEsIDEyNjM2MywgMTI2MzY3LCAxMjYzNzEsIDEyNjM3NywgMTI2Mzc5LCAxMjYzODMsIDEyNjM4NSwgMTI2Mzg5LCAKLSAgICAxMjYzOTMsIDEyNjM5NywgMTI2NDAxLCAxMjY0MDMsIDEyNjQwNSwgMTI2NDA5LCAxMjY0MTMsIDEyNjQxNywgMTI2NDIxLCAKLSAgICAxMjY0MjMsIDEyNjQyNSwgMTI2NDI3LCAxMjY0MzIsIDEyNjQzNywgMTI2NDQwLCAxMjY0NDgsIDEyNjQ1NiwgMTI2NDU4LCAKLSAgICAxMjY0NjMsIDEyNjQ2NiwgMTI2NDcxLCAxMjY0ODIsIDEyNjQ4OSwgMTI2NDk0LCAxMjY0OTksIDEyNjUwMSwgMTI2NTA1LCAKLSAgICAxMjY1MDcsIDEyNjUxMSwgMTI2NTEzLCAxMjY1MTcsIDEyNjUyMSwgMTI2NTI0LCAxMjY1MjcsIDEyNjUyOSwgMTI2NTMyLCAKLSAgICAxMjY1MzQsIDEyNjUzOCwgMTI2NTQwLCAxMjY1NDIsIDEyNjU0NCwgMTI2NTQ4LCAxMjY1NTAsIDEyNjU1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTI2MzEyLCAxMjYzMTQsIDEyNjMxNiwgMTI2MzIwLCAxMjYzMjQsIDEyNjMyOCwgMTI2MzM3LCAxMjYzMzksIAorICAgIDEyNjM0MSwgMTI2MzQ0LCAxMjYzNDYsIDEyNjM0OCwgMTI2MzUyLCAxMjYzNTQsIDEyNjM1OCwgMTI2MzYwLCAxMjYzNjQsIAorICAgIDEyNjM2NiwgMTI2MzY4LCAxMjYzNzIsIDEyNjM3NiwgMTI2MzgyLCAxMjYzODQsIDEyNjM4OCwgMTI2MzkwLCAxMjYzOTQsIAorICAgIDEyNjM5OCwgMTI2NDAyLCAxMjY0MDYsIDEyNjQwOCwgMTI2NDEwLCAxMjY0MTQsIDEyNjQxOCwgMTI2NDIyLCAxMjY0MjYsIAorICAgIDEyNjQyOCwgMTI2NDMwLCAxMjY0MzIsIDEyNjQzNywgMTI2NDQyLCAxMjY0NDUsIDEyNjQ1MywgMTI2NDYxLCAxMjY0NjMsIAorICAgIDEyNjQ2OCwgMTI2NDcxLCAxMjY0NzYsIDEyNjQ4NywgMTI2NDk0LCAxMjY0OTksIDEyNjUwNCwgMTI2NTA2LCAxMjY1MTAsIAorICAgIDEyNjUxMiwgMTI2NTE2LCAxMjY1MTgsIDEyNjUyMiwgMTI2NTI2LCAxMjY1MjksIDEyNjUzMiwgMTI2NTM0LCAxMjY1MzcsIAorICAgIDEyNjUzOSwgMTI2NTQzLCAxMjY1NDUsIDEyNjU0NywgMTI2NTQ5LCAxMjY1NTMsIDEyNjU1NSwgMTI2NTU5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY1NTcsIDEyNjU2MiwgMTI2NTY3LCAxMjY1NzIsIDEyNjU3NywgMTI2NTgyLCAKLSAgICAxMjY1ODcsIDEyNjU5NCwgMTI2NjAxLCAxMjY2MDgsIDEyNjYxNSwgMTI2NjIwLCAxMjY2MjUsIDEyNjYzMCwgMTI2NjM1LCAKLSAgICAxMjY2NDIsIDEyNjY0OCwgMTI2NjU1LCAxMjY2NjIsIDEyNjY2OSwgMTI2Njc0LCAxMjY2NzksIDEyNjY4NCwgMTI2Njg5LCAKLSAgICAxMjY2OTQsIDEyNjcwMSwgMTI2NzA4LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzI1LCAxMjY3MzIsIDEyNjc0MCwgMTI2NzQ4LCAKLSAgICAxMjY3NTUsIDEyNjc2MiwgMTI2NzcwLCAxMjY3NzgsIDEyNjc4NiwgMTI2NzkzLCAxMjY4MDMsIDEyNjgxNCwgMTI2ODE5LCAKLSAgICAxMjY4MjYsIDEyNjgzMywgMTI2ODQwLCAxMjY4NDgsIDEyNjg1NiwgMTI2ODY3LCAxMjY4NzUsIDEyNjg4MywgMTI2ODkxLCAKLSAgICAxMjY4OTYsIDEyNjkwMSwgMTI2OTA2LCAxMjY5MTEsIDEyNjkxNiwgMTI2OTIxLCAxMjY5MjYsIDEyNjkzMSwgMTI2OTM2LCAKLSAgICAxMjY5NDEsIDEyNjk0NiwgMTI2OTUxLCAxMjY5NTgsIDEyNjk2MywgMTI2OTY4LCAxMjY5NzUsIDEyNjk4MCwgMTI2OTg1LCAKLSAgICAxMjY5OTAsIDEyNjk5NSwgMTI3MDAwLCAxMjcwMDUsIDEyNzAxMCwgMTI3MDE1LCAxMjcwMjAsIDEyNzAyNSwgMTI3MDMwLCAKLSAgICAxMjcwMzUsIDEyNzA0MiwgMTI3MDUwLCAxMjcwNTUsIDEyNzA2MCwgMTI3MDY3LCAxMjcwNzIsIDEyNzA3NywgMTI3MDgyLCAKLSAgICAxMjcwODksIDEyNzA5NCwgMTI3MTAxLCAxMjcxMDYsIDEyNzExMywgMTI3MTE4LCAxMjcxMjcsIDEyNzEzNiwgMTI3MTQxLCAKLSAgICAxMjcxNDYsIDEyNzE1MSwgMTI3MTU2LCAxMjcxNjEsIDEyNzE2NiwgMTI3MTcxLCAxMjcxNzYsIDEyNzE4MSwgMTI3MTg2LCAKLSAgICAxMjcxOTEsIDEyNzE5NiwgMTI3MjAxLCAxMjcyMDksIDEyNzIxNywgMTI3MjIyLCAxMjcyMjcsIDEyNzIzMiwgMTI3MjM3LCAKLSAgICAxMjcyNDIsIDEyNzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjU0LCAxMjcyNTgsIAotICAgIDEyNzI2MiwgMTI3MjY2LCAxMjcyNzAsIDEyNzI3NCwgMTI3Mjc4LCAxMjcyODIsIDEyNzI4NiwgMTI3MjkwLCAxMjcyOTQsIAotICAgIDEyNzI5OCwgMTI3MzAyLCAxMjczMDYsIDEyNzMxMCwgMTI3MzE0LCAxMjczMTgsIDEyNzMyMiwgMTI3MzI2LCAxMjczMzAsIAotICAgIDEyNzMzNCwgMTI3MzM4LCAxMjczNDIsIDEyNzM0NiwgMTI3MzUwLCAxMjczNTQsIDEyNzM1OCwgMTI3MzYyLCAxMjczNjYsIAotICAgIDEyNzM3MCwgMTI3Mzc0LCAxMjczNzgsIDEyNzM4MiwgMTI3Mzg2LCAxMjczOTAsIDEyNzM5NCwgMTI3Mzk4LCAxMjc0MDIsIAotICAgIDEyNzQwNiwgMTI3NDEwLCAxMjc0MTQsIDEyNzQxOCwgMTI3NDIyLCAxMjc0MjYsIDEyNzQzMCwgMTI3NDM0LCAxMjc0MzgsIAotICAgIDEyNzQ0MiwgMTI3NDQ2LCAxMjc0NTAsIDEyNzQ1NCwgMTI3NDU4LCAxMjc0NjIsIDEyNzQ2NiwgMTI3NDcwLCAxMjc0NzQsIAotICAgIDEyNzQ3OCwgMTI3NDgyLCAxMjc0ODYsIDEyNzQ5MCwgMTI3NDk0LCAxMjc0OTgsIDEyNzUwMiwgMTI3NTA2LCAxMjc1MTAsIAotICAgIDEyNzUxNCwgMTI3NTE4LCAxMjc1MjIsIDEyNzUyNiwgMTI3NTMwLCAxMjc1MzQsIDEyNzUzOCwgMTI3NTQyLCAxMjc1NDYsIAotICAgIDEyNzU1MCwgMTI3NTU0LCAxMjc1NTgsIDEyNzU2MiwgMTI3NTY2LCAxMjc1NzAsIDEyNzU3NCwgMTI3NTc4LCAxMjc1ODIsIAotICAgIDEyNzU4NiwgMTI3NTkwLCAxMjc1OTQsIDEyNzU5OCwgMTI3NjAyLCAxMjc2MDYsIDEyNzYxMCwgMTI3NjE0LCAxMjc2MTgsIAotICAgIDEyNzYyMiwgMTI3NjI2LCAxMjc2MzAsIDEyNzYzNCwgMTI3NjM4LCAxMjc2NDIsIDEyNzY0NiwgMTI3NjUwLCAxMjc2NTQsIAotICAgIDEyNzY1OCwgMTI3NjYyLCAxMjc2NjYsIDEyNzY3MCwgMTI3Njc0LCAxMjc2NzgsIDEyNzY4MiwgMTI3Njg2LCAxMjc2OTAsIAotICAgIDEyNzY5NCwgMTI3Njk4LCAxMjc3MDIsIDEyNzcwNiwgMTI3NzEwLCAxMjc3MTQsIDEyNzcxOCwgMTI3NzIyLCAxMjc3MjYsIAotICAgIDEyNzczMCwgMTI3NzM0LCAxMjc3MzgsIDEyNzc0MiwgMTI3NzQ2LCAxMjc3NTAsIDEyNzc1NCwgMTI3NzU4LCAxMjc3NjIsIAotICAgIDEyNzc2NiwgMTI3NzcwLCAxMjc3NzQsIDEyNzc3OCwgMTI3NzgyLCAxMjc3ODYsIDEyNzc5MCwgMTI3Nzk0LCAxMjc3OTgsIAotICAgIDEyNzgwMiwgMTI3ODA2LCAxMjc4MTAsIDEyNzgxNCwgMTI3ODE4LCAxMjc4MjIsIDEyNzgyNiwgMTI3ODMwLCAxMjc4MzQsIAotICAgIDEyNzgzOCwgMTI3ODQyLCAxMjc4NDYsIDEyNzg1MCwgMTI3ODU0LCAxMjc4NTgsIDEyNzg2MiwgMTI3ODY2LCAxMjc4NzAsIAotICAgIDEyNzg3NCwgMTI3ODc4LCAxMjc4ODIsIDEyNzg4NiwgMTI3ODkwLCAxMjc4OTQsIDEyNzg5OCwgMTI3OTAyLCAxMjc5MDYsIAotICAgIDEyNzkxMCwgMTI3OTE0LCAxMjc5MTgsIDEyNzkyMiwgMTI3OTI2LCAxMjc5MzAsIDEyNzkzNCwgMTI3OTM4LCAxMjc5NDIsIAotICAgIDEyNzk0NiwgMTI3OTUwLCAxMjc5NTQsIDEyNzk1OCwgMTI3OTYyLCAxMjc5NjYsIDEyNzk3MCwgMTI3OTc0LCAxMjc5NzgsIAotICAgIDEyNzk4MiwgMTI3OTg2LCAxMjc5OTAsIDEyNzk5NCwgMTI3OTk4LCAxMjgwMDIsIDEyODAwNiwgMTI4MDEwLCAxMjgwMTQsIAotICAgIDEyODAxOCwgMTI4MDIyLCAxMjgwMjYsIDEyODAzMCwgMTI4MDM0LCAxMjgwMzgsIDEyODA0MiwgMTI4MDQ2LCAxMjgwNTAsIAotICAgIDEyODA1NCwgMTI4MDU4LCAxMjgwNjIsIDEyODA2NiwgMTI4MDcwLCAxMjgwNzQsIDEyODA3OCwgMTI4MDgyLCAxMjgwODYsIAotICAgIDEyODA5MCwgMTI4MDk0LCAxMjgwOTgsIDEyODEwMiwgMTI4MTA2LCAxMjgxMTAsIDEyODExNCwgMTI4MTE4LCAxMjgxMjIsIAotICAgIDEyODEyNiwgMTI4MTMwLCAxMjgxMzQsIDEyODEzOCwgMTI4MTQyLCAxMjgxNDYsIDEyODE1MCwgMTI4MTU0LCAxMjgxNTgsIAotICAgIDEyODE2MiwgMTI4MTY2LCAxMjgxNzAsIDEyODE3NCwgMTI4MTc4LCAxMjgxODIsIDEyODE4NiwgMTI4MTkwLCAxMjgxOTQsIAotICAgIDEyODE5OCwgMTI4MjAyLCAxMjgyMDYsIDEyODIxMCwgMTI4MjE0LCAxMjgyMTgsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzAsIAotICAgIDEyODIzNCwgMTI4MjM4LCAxMjgyNDIsIDEyODI0NiwgMTI4MjUwLCAxMjgyNTQsIDEyODI1OCwgMTI4MjYyLCAxMjgyNjYsIAotICAgIDEyODI3MCwgMTI4Mjc0LCAxMjgyNzgsIDEyODI4MiwgMTI4Mjg2LCAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIAotICAgIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOCwgMTI4MzIyLCAxMjgzMjYsIDEyODMzMCwgMTI4MzM0LCAxMjgzMzgsIAotICAgIDEyODM0MiwgMTI4MzQ2LCAxMjgzNTAsIDEyODM1NCwgMTI4MzU4LCAxMjgzNjIsIDEyODM2NiwgMTI4MzcwLCAxMjgzNzQsIAotICAgIDEyODM3OCwgMTI4MzgyLCAxMjgzODYsIDEyODM5MCwgMTI4Mzk0LCAxMjgzOTgsIDEyODQwMiwgMTI4NDA2LCAxMjg0MTAsIAotICAgIDEyODQxNCwgMTI4NDE4LCAxMjg0MjIsIDEyODQyNiwgMTI4NDMwLCAxMjg0MzQsIDEyODQzOCwgMTI4NDQyLCAxMjg0NDYsIAotICAgIDEyODQ1MCwgMTI4NDU0LCAxMjg0NTgsIDEyODQ2MiwgMTI4NDY2LCAxMjg0NzAsIDEyODQ3NCwgMTI4NDc4LCAxMjg0ODIsIAotICAgIDEyODQ4NiwgMTI4NDkwLCAxMjg0OTQsIDEyODQ5OCwgMTI4NTAyLCAxMjg1MDYsIDEyODUxMCwgMTI4NTE0LCAxMjg1MTgsIAotICAgIDEyODUyMiwgMTI4NTI2LCAxMjg1MzAsIDEyODUzNCwgMTI4NTM4LCAxMjg1NDIsIDEyODU0NiwgMTI4NTUwLCAxMjg1NTQsIAotICAgIDEyODU1OCwgMTI4NTYyLCAxMjg1NjYsIDEyODU3MCwgMTI4NTc0LCAxMjg1NzgsIDEyODU4MiwgMTI4NTg2LCAxMjg1OTAsIAotICAgIDEyODU5NCwgMTI4NTk4LCAxMjg2MDIsIDEyODYwNiwgMTI4NjEwLCAxMjg2MTQsIDEyODYxOCwgMTI4NjIyLCAxMjg2MjYsIAotICAgIDEyODYzMCwgMTI4NjM0LCAxMjg2MzgsIDEyODY0MiwgMTI4NjQ2LCAxMjg2NTAsIDEyODY1NCwgMTI4NjU4LCAxMjg2NjIsIAotICAgIDEyODY2NiwgMTI4NjcwLCAxMjg2NzQsIDEyODY3OCwgMTI4NjgyLCAxMjg2ODYsIDEyODY5MCwgMTI4Njk0LCAxMjg2OTgsIAotICAgIDEyODcwMiwgMTI4NzA2LCAxMjg3MTAsIDEyODcxNCwgMTI4NzE4LCAxMjg3MjIsIDEyODcyNiwgMTI4NzMwLCAxMjg3MzQsIAotICAgIDEyODczOCwgMTI4NzQyLCAxMjg3NDYsIDEyODc1MCwgMTI4NzU0LCAxMjg3NTgsIDEyODc2MiwgMTI4NzY2LCAxMjg3NzAsIAotICAgIDEyODc3NCwgMTI4Nzc4LCAxMjg3ODIsIDEyODc4NiwgMTI4NzkwLCAxMjg3OTQsIDEyODc5OCwgMTI4ODAyLCAxMjg4MDYsIAotICAgIDEyODgxMCwgMTI4ODE0LCAxMjg4MTgsIDEyODgyMiwgMTI4ODI2LCAxMjg4MzAsIDEyODgzNCwgMTI4ODM4LCAxMjg4NDIsIAotICAgIDEyODg0NiwgMTI4ODUwLCAxMjg4NTQsIDEyODg1OCwgMTI4ODYyLCAxMjg4NjYsIDEyODg3MCwgMTI4ODc0LCAxMjg4NzgsIAotICAgIDEyODg4MiwgMTI4ODg2LCAxMjg4OTAsIDEyODg5NCwgMTI4ODk4LCAxMjg5MDIsIDEyODkwNiwgMTI4OTEwLCAxMjg5MTQsIAotICAgIDEyODkxOCwgMTI4OTIyLCAxMjg5MjYsIDEyODkzMCwgMTI4OTM0LCAxMjg5MzgsIDEyODk0MiwgMTI4OTQ2LCAxMjg5NTAsIAotICAgIDEyODk1NCwgMTI4OTU4LCAxMjg5NjIsIDEyODk2NiwgMTI4OTcwLCAxMjg5NzQsIDEyODk3OCwgMTI4OTgyLCAxMjg5ODYsIAotICAgIDEyODk5MCwgMTI4OTk0LCAxMjg5OTgsIDEyOTAwMiwgMTI5MDA2LCAxMjkwMTAsIDEyOTAxNCwgMTI5MDE4LCAxMjkwMjIsIAotICAgIDEyOTAyNiwgMTI5MDMwLCAxMjkwMzQsIDEyOTAzOCwgMTI5MDQyLCAxMjkwNDYsIDEyOTA1MCwgMTI5MDU0LCAxMjkwNTgsIAotICAgIDEyOTA2MiwgMTI5MDY2LCAxMjkwNzAsIDEyOTA3NCwgMTI5MDc4LCAxMjkwODIsIDEyOTA4NiwgMTI5MDkwLCAxMjkwOTQsIAotICAgIDEyOTA5OCwgMTI5MTAyLCAxMjkxMDYsIDEyOTExMCwgMTI5MTE0LCAxMjkxMTgsIDEyOTEyMiwgMTI5MTI2LCAxMjkxMzAsIAotICAgIDEyOTEzNCwgMTI5MTM4LCAxMjkxNDIsIDEyOTE0NiwgMTI5MTUwLCAxMjkxNTQsIDEyOTE1OCwgMTI5MTYyLCAxMjkxNjYsIAotICAgIDEyOTE3MCwgMTI5MTc0LCAxMjkxNzgsIDEyOTE4MiwgMTI5MTg2LCAxMjkxOTAsIDEyOTE5NCwgMTI5MTk4LCAxMjkyMDIsIAotICAgIDEyOTIwNiwgMTI5MjEwLCAxMjkyMTQsIDEyOTIxOCwgMTI5MjIyLCAxMjkyMjYsIDEyOTIzMCwgMTI5MjM0LCAxMjkyMzgsIAotICAgIDEyOTI0MiwgMTI5MjQ2LCAxMjkyNTAsIDEyOTI1NCwgMTI5MjU4LCAxMjkyNjIsIDEyOTI2NiwgMTI5MjcwLCAxMjkyNzQsIAotICAgIDEyOTI3OCwgMTI5MjgyLCAxMjkyODYsIDEyOTI5MCwgMTI5Mjk0LCAxMjkyOTgsIDEyOTMwMiwgMTI5MzA2LCAxMjkzMTAsIAotICAgIDEyOTMxNCwgMTI5MzE4LCAxMjkzMjIsIDEyOTMyNiwgMTI5MzMwLCAxMjkzMzQsIDEyOTMzOCwgMTI5MzQyLCAxMjkzNDYsIAotICAgIDEyOTM1MCwgMTI5MzU0LCAxMjkzNTgsIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzAsIDEyOTM3NCwgMTI5Mzc4LCAxMjkzODIsIAotICAgIDEyOTM4NiwgMTI5MzkwLCAxMjkzOTQsIDEyOTM5OCwgMTI5NDAyLCAxMjk0MDYsIDEyOTQxMCwgMTI5NDE0LCAxMjk0MTgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjU2MiwgMTI2NTY3LCAxMjY1NzIsIDEyNjU3NywgMTI2NTgyLCAxMjY1ODcsIAorICAgIDEyNjU5MiwgMTI2NTk5LCAxMjY2MDYsIDEyNjYxMywgMTI2NjIwLCAxMjY2MjUsIDEyNjYzMCwgMTI2NjM1LCAxMjY2NDAsIAorICAgIDEyNjY0NywgMTI2NjUzLCAxMjY2NjAsIDEyNjY2NywgMTI2Njc0LCAxMjY2NzksIDEyNjY4NCwgMTI2Njg5LCAxMjY2OTQsIAorICAgIDEyNjY5OSwgMTI2NzA2LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzIzLCAxMjY3MzAsIDEyNjczNywgMTI2NzQ1LCAxMjY3NTMsIAorICAgIDEyNjc2MCwgMTI2NzY3LCAxMjY3NzUsIDEyNjc4MywgMTI2NzkxLCAxMjY3OTgsIDEyNjgwOCwgMTI2ODE5LCAxMjY4MjQsIAorICAgIDEyNjgzMSwgMTI2ODM4LCAxMjY4NDUsIDEyNjg1MywgMTI2ODYxLCAxMjY4NzIsIDEyNjg4MCwgMTI2ODg4LCAxMjY4OTYsIAorICAgIDEyNjkwMSwgMTI2OTA2LCAxMjY5MTEsIDEyNjkxNiwgMTI2OTIxLCAxMjY5MjYsIDEyNjkzMSwgMTI2OTM2LCAxMjY5NDEsIAorICAgIDEyNjk0NiwgMTI2OTUxLCAxMjY5NTYsIDEyNjk2MywgMTI2OTY4LCAxMjY5NzMsIDEyNjk4MCwgMTI2OTg1LCAxMjY5OTAsIAorICAgIDEyNjk5NSwgMTI3MDAwLCAxMjcwMDUsIDEyNzAxMCwgMTI3MDE1LCAxMjcwMjAsIDEyNzAyNSwgMTI3MDMwLCAxMjcwMzUsIAorICAgIDEyNzA0MCwgMTI3MDQ3LCAxMjcwNTUsIDEyNzA2MCwgMTI3MDY1LCAxMjcwNzIsIDEyNzA3NywgMTI3MDgyLCAxMjcwODcsIAorICAgIDEyNzA5NCwgMTI3MDk5LCAxMjcxMDYsIDEyNzExMSwgMTI3MTE4LCAxMjcxMjMsIDEyNzEzMiwgMTI3MTQxLCAxMjcxNDYsIAorICAgIDEyNzE1MSwgMTI3MTU2LCAxMjcxNjEsIDEyNzE2NiwgMTI3MTcxLCAxMjcxNzYsIDEyNzE4MSwgMTI3MTg2LCAxMjcxOTEsIAorICAgIDEyNzE5NiwgMTI3MjAxLCAxMjcyMDYsIDEyNzIxNCwgMTI3MjIyLCAxMjcyMjcsIDEyNzIzMiwgMTI3MjM3LCAxMjcyNDIsIAorICAgIDEyNzI0NywgMTI3MjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyNTksIDEyNzI2MywgCisgICAgMTI3MjY3LCAxMjcyNzEsIDEyNzI3NSwgMTI3Mjc5LCAxMjcyODMsIDEyNzI4NywgMTI3MjkxLCAxMjcyOTUsIDEyNzI5OSwgCisgICAgMTI3MzAzLCAxMjczMDcsIDEyNzMxMSwgMTI3MzE1LCAxMjczMTksIDEyNzMyMywgMTI3MzI3LCAxMjczMzEsIDEyNzMzNSwgCisgICAgMTI3MzM5LCAxMjczNDMsIDEyNzM0NywgMTI3MzUxLCAxMjczNTUsIDEyNzM1OSwgMTI3MzYzLCAxMjczNjcsIDEyNzM3MSwgCisgICAgMTI3Mzc1LCAxMjczNzksIDEyNzM4MywgMTI3Mzg3LCAxMjczOTEsIDEyNzM5NSwgMTI3Mzk5LCAxMjc0MDMsIDEyNzQwNywgCisgICAgMTI3NDExLCAxMjc0MTUsIDEyNzQxOSwgMTI3NDIzLCAxMjc0MjcsIDEyNzQzMSwgMTI3NDM1LCAxMjc0MzksIDEyNzQ0MywgCisgICAgMTI3NDQ3LCAxMjc0NTEsIDEyNzQ1NSwgMTI3NDU5LCAxMjc0NjMsIDEyNzQ2NywgMTI3NDcxLCAxMjc0NzUsIDEyNzQ3OSwgCisgICAgMTI3NDgzLCAxMjc0ODcsIDEyNzQ5MSwgMTI3NDk1LCAxMjc0OTksIDEyNzUwMywgMTI3NTA3LCAxMjc1MTEsIDEyNzUxNSwgCisgICAgMTI3NTE5LCAxMjc1MjMsIDEyNzUyNywgMTI3NTMxLCAxMjc1MzUsIDEyNzUzOSwgMTI3NTQzLCAxMjc1NDcsIDEyNzU1MSwgCisgICAgMTI3NTU1LCAxMjc1NTksIDEyNzU2MywgMTI3NTY3LCAxMjc1NzEsIDEyNzU3NSwgMTI3NTc5LCAxMjc1ODMsIDEyNzU4NywgCisgICAgMTI3NTkxLCAxMjc1OTUsIDEyNzU5OSwgMTI3NjAzLCAxMjc2MDcsIDEyNzYxMSwgMTI3NjE1LCAxMjc2MTksIDEyNzYyMywgCisgICAgMTI3NjI3LCAxMjc2MzEsIDEyNzYzNSwgMTI3NjM5LCAxMjc2NDMsIDEyNzY0NywgMTI3NjUxLCAxMjc2NTUsIDEyNzY1OSwgCisgICAgMTI3NjYzLCAxMjc2NjcsIDEyNzY3MSwgMTI3Njc1LCAxMjc2NzksIDEyNzY4MywgMTI3Njg3LCAxMjc2OTEsIDEyNzY5NSwgCisgICAgMTI3Njk5LCAxMjc3MDMsIDEyNzcwNywgMTI3NzExLCAxMjc3MTUsIDEyNzcxOSwgMTI3NzIzLCAxMjc3MjcsIDEyNzczMSwgCisgICAgMTI3NzM1LCAxMjc3MzksIDEyNzc0MywgMTI3NzQ3LCAxMjc3NTEsIDEyNzc1NSwgMTI3NzU5LCAxMjc3NjMsIDEyNzc2NywgCisgICAgMTI3NzcxLCAxMjc3NzUsIDEyNzc3OSwgMTI3NzgzLCAxMjc3ODcsIDEyNzc5MSwgMTI3Nzk1LCAxMjc3OTksIDEyNzgwMywgCisgICAgMTI3ODA3LCAxMjc4MTEsIDEyNzgxNSwgMTI3ODE5LCAxMjc4MjMsIDEyNzgyNywgMTI3ODMxLCAxMjc4MzUsIDEyNzgzOSwgCisgICAgMTI3ODQzLCAxMjc4NDcsIDEyNzg1MSwgMTI3ODU1LCAxMjc4NTksIDEyNzg2MywgMTI3ODY3LCAxMjc4NzEsIDEyNzg3NSwgCisgICAgMTI3ODc5LCAxMjc4ODMsIDEyNzg4NywgMTI3ODkxLCAxMjc4OTUsIDEyNzg5OSwgMTI3OTAzLCAxMjc5MDcsIDEyNzkxMSwgCisgICAgMTI3OTE1LCAxMjc5MTksIDEyNzkyMywgMTI3OTI3LCAxMjc5MzEsIDEyNzkzNSwgMTI3OTM5LCAxMjc5NDMsIDEyNzk0NywgCisgICAgMTI3OTUxLCAxMjc5NTUsIDEyNzk1OSwgMTI3OTYzLCAxMjc5NjcsIDEyNzk3MSwgMTI3OTc1LCAxMjc5NzksIDEyNzk4MywgCisgICAgMTI3OTg3LCAxMjc5OTEsIDEyNzk5NSwgMTI3OTk5LCAxMjgwMDMsIDEyODAwNywgMTI4MDExLCAxMjgwMTUsIDEyODAxOSwgCisgICAgMTI4MDIzLCAxMjgwMjcsIDEyODAzMSwgMTI4MDM1LCAxMjgwMzksIDEyODA0MywgMTI4MDQ3LCAxMjgwNTEsIDEyODA1NSwgCisgICAgMTI4MDU5LCAxMjgwNjMsIDEyODA2NywgMTI4MDcxLCAxMjgwNzUsIDEyODA3OSwgMTI4MDgzLCAxMjgwODcsIDEyODA5MSwgCisgICAgMTI4MDk1LCAxMjgwOTksIDEyODEwMywgMTI4MTA3LCAxMjgxMTEsIDEyODExNSwgMTI4MTE5LCAxMjgxMjMsIDEyODEyNywgCisgICAgMTI4MTMxLCAxMjgxMzUsIDEyODEzOSwgMTI4MTQzLCAxMjgxNDcsIDEyODE1MSwgMTI4MTU1LCAxMjgxNTksIDEyODE2MywgCisgICAgMTI4MTY3LCAxMjgxNzEsIDEyODE3NSwgMTI4MTc5LCAxMjgxODMsIDEyODE4NywgMTI4MTkxLCAxMjgxOTUsIDEyODE5OSwgCisgICAgMTI4MjAzLCAxMjgyMDcsIDEyODIxMSwgMTI4MjE1LCAxMjgyMTksIDEyODIyMywgMTI4MjI3LCAxMjgyMzEsIDEyODIzNSwgCisgICAgMTI4MjM5LCAxMjgyNDMsIDEyODI0NywgMTI4MjUxLCAxMjgyNTUsIDEyODI1OSwgMTI4MjYzLCAxMjgyNjcsIDEyODI3MSwgCisgICAgMTI4Mjc1LCAxMjgyNzksIDEyODI4MywgMTI4Mjg3LCAxMjgyOTEsIDEyODI5NSwgMTI4Mjk5LCAxMjgzMDMsIDEyODMwNywgCisgICAgMTI4MzExLCAxMjgzMTUsIDEyODMxOSwgMTI4MzIzLCAxMjgzMjcsIDEyODMzMSwgMTI4MzM1LCAxMjgzMzksIDEyODM0MywgCisgICAgMTI4MzQ3LCAxMjgzNTEsIDEyODM1NSwgMTI4MzU5LCAxMjgzNjMsIDEyODM2NywgMTI4MzcxLCAxMjgzNzUsIDEyODM3OSwgCisgICAgMTI4MzgzLCAxMjgzODcsIDEyODM5MSwgMTI4Mzk1LCAxMjgzOTksIDEyODQwMywgMTI4NDA3LCAxMjg0MTEsIDEyODQxNSwgCisgICAgMTI4NDE5LCAxMjg0MjMsIDEyODQyNywgMTI4NDMxLCAxMjg0MzUsIDEyODQzOSwgMTI4NDQzLCAxMjg0NDcsIDEyODQ1MSwgCisgICAgMTI4NDU1LCAxMjg0NTksIDEyODQ2MywgMTI4NDY3LCAxMjg0NzEsIDEyODQ3NSwgMTI4NDc5LCAxMjg0ODMsIDEyODQ4NywgCisgICAgMTI4NDkxLCAxMjg0OTUsIDEyODQ5OSwgMTI4NTAzLCAxMjg1MDcsIDEyODUxMSwgMTI4NTE1LCAxMjg1MTksIDEyODUyMywgCisgICAgMTI4NTI3LCAxMjg1MzEsIDEyODUzNSwgMTI4NTM5LCAxMjg1NDMsIDEyODU0NywgMTI4NTUxLCAxMjg1NTUsIDEyODU1OSwgCisgICAgMTI4NTYzLCAxMjg1NjcsIDEyODU3MSwgMTI4NTc1LCAxMjg1NzksIDEyODU4MywgMTI4NTg3LCAxMjg1OTEsIDEyODU5NSwgCisgICAgMTI4NTk5LCAxMjg2MDMsIDEyODYwNywgMTI4NjExLCAxMjg2MTUsIDEyODYxOSwgMTI4NjIzLCAxMjg2MjcsIDEyODYzMSwgCisgICAgMTI4NjM1LCAxMjg2MzksIDEyODY0MywgMTI4NjQ3LCAxMjg2NTEsIDEyODY1NSwgMTI4NjU5LCAxMjg2NjMsIDEyODY2NywgCisgICAgMTI4NjcxLCAxMjg2NzUsIDEyODY3OSwgMTI4NjgzLCAxMjg2ODcsIDEyODY5MSwgMTI4Njk1LCAxMjg2OTksIDEyODcwMywgCisgICAgMTI4NzA3LCAxMjg3MTEsIDEyODcxNSwgMTI4NzE5LCAxMjg3MjMsIDEyODcyNywgMTI4NzMxLCAxMjg3MzUsIDEyODczOSwgCisgICAgMTI4NzQzLCAxMjg3NDcsIDEyODc1MSwgMTI4NzU1LCAxMjg3NTksIDEyODc2MywgMTI4NzY3LCAxMjg3NzEsIDEyODc3NSwgCisgICAgMTI4Nzc5LCAxMjg3ODMsIDEyODc4NywgMTI4NzkxLCAxMjg3OTUsIDEyODc5OSwgMTI4ODAzLCAxMjg4MDcsIDEyODgxMSwgCisgICAgMTI4ODE1LCAxMjg4MTksIDEyODgyMywgMTI4ODI3LCAxMjg4MzEsIDEyODgzNSwgMTI4ODM5LCAxMjg4NDMsIDEyODg0NywgCisgICAgMTI4ODUxLCAxMjg4NTUsIDEyODg1OSwgMTI4ODYzLCAxMjg4NjcsIDEyODg3MSwgMTI4ODc1LCAxMjg4NzksIDEyODg4MywgCisgICAgMTI4ODg3LCAxMjg4OTEsIDEyODg5NSwgMTI4ODk5LCAxMjg5MDMsIDEyODkwNywgMTI4OTExLCAxMjg5MTUsIDEyODkxOSwgCisgICAgMTI4OTIzLCAxMjg5MjcsIDEyODkzMSwgMTI4OTM1LCAxMjg5MzksIDEyODk0MywgMTI4OTQ3LCAxMjg5NTEsIDEyODk1NSwgCisgICAgMTI4OTU5LCAxMjg5NjMsIDEyODk2NywgMTI4OTcxLCAxMjg5NzUsIDEyODk3OSwgMTI4OTgzLCAxMjg5ODcsIDEyODk5MSwgCisgICAgMTI4OTk1LCAxMjg5OTksIDEyOTAwMywgMTI5MDA3LCAxMjkwMTEsIDEyOTAxNSwgMTI5MDE5LCAxMjkwMjMsIDEyOTAyNywgCisgICAgMTI5MDMxLCAxMjkwMzUsIDEyOTAzOSwgMTI5MDQzLCAxMjkwNDcsIDEyOTA1MSwgMTI5MDU1LCAxMjkwNTksIDEyOTA2MywgCisgICAgMTI5MDY3LCAxMjkwNzEsIDEyOTA3NSwgMTI5MDc5LCAxMjkwODMsIDEyOTA4NywgMTI5MDkxLCAxMjkwOTUsIDEyOTA5OSwgCisgICAgMTI5MTAzLCAxMjkxMDcsIDEyOTExMSwgMTI5MTE1LCAxMjkxMTksIDEyOTEyMywgMTI5MTI3LCAxMjkxMzEsIDEyOTEzNSwgCisgICAgMTI5MTM5LCAxMjkxNDMsIDEyOTE0NywgMTI5MTUxLCAxMjkxNTUsIDEyOTE1OSwgMTI5MTYzLCAxMjkxNjcsIDEyOTE3MSwgCisgICAgMTI5MTc1LCAxMjkxNzksIDEyOTE4MywgMTI5MTg3LCAxMjkxOTEsIDEyOTE5NSwgMTI5MTk5LCAxMjkyMDMsIDEyOTIwNywgCisgICAgMTI5MjExLCAxMjkyMTUsIDEyOTIxOSwgMTI5MjIzLCAxMjkyMjcsIDEyOTIzMSwgMTI5MjM1LCAxMjkyMzksIDEyOTI0MywgCisgICAgMTI5MjQ3LCAxMjkyNTEsIDEyOTI1NSwgMTI5MjU5LCAxMjkyNjMsIDEyOTI2NywgMTI5MjcxLCAxMjkyNzUsIDEyOTI3OSwgCisgICAgMTI5MjgzLCAxMjkyODcsIDEyOTI5MSwgMTI5Mjk1LCAxMjkyOTksIDEyOTMwMywgMTI5MzA3LCAxMjkzMTEsIDEyOTMxNSwgCisgICAgMTI5MzE5LCAxMjkzMjMsIDEyOTMyNywgMTI5MzMxLCAxMjkzMzUsIDEyOTMzOSwgMTI5MzQzLCAxMjkzNDcsIDEyOTM1MSwgCisgICAgMTI5MzU1LCAxMjkzNTksIDEyOTM2MywgMTI5MzY3LCAxMjkzNzEsIDEyOTM3NSwgMTI5Mzc5LCAxMjkzODMsIDEyOTM4NywgCisgICAgMTI5MzkxLCAxMjkzOTUsIDEyOTM5OSwgMTI5NDAzLCAxMjk0MDcsIDEyOTQxMSwgMTI5NDE1LCAxMjk0MTksIDEyOTQyMywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTI5NDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk0MjYsIDEyOTQyOSwgMTI5NDMzLCAxMjk0MzcsIDEyOTQ0MCwgCi0gICAgMTI5NDQ0LCAxMjk0NDgsIDEyOTQ1MSwgMTI5NDU0LCAxMjk0NTgsIDEyOTQ2MiwgMTI5NDY1LCAxMjk0NjgsIDEyOTQ3MSwgCi0gICAgMTI5NDc0LCAxMjk0NzksIDEyOTQ4MiwgMTI5NDg2LCAxMjk0ODksIDEyOTQ5MiwgMTI5NDk1LCAxMjk0OTgsIDEyOTUwMSwgCi0gICAgMTI5NTA0LCAxMjk1MDcsIDEyOTUxMCwgMTI5NTEzLCAxMjk1MTYsIDEyOTUxOSwgMTI5NTIzLCAxMjk1MjcsIDEyOTUzMSwgCi0gICAgMTI5NTM1LCAxMjk1NDAsIDEyOTU0NSwgMTI5NTUxLCAxMjk1NTcsIDEyOTU2MywgMTI5NTY4LCAxMjk1NzQsIDEyOTU4MCwgCi0gICAgMTI5NTg2LCAxMjk1OTEsIDEyOTU5NywgMTI5NjAzLCAxMjk2MDgsIDEyOTYxMywgMTI5NjE5LCAxMjk2MjQsIDEyOTYzMCwgCi0gICAgMTI5NjM2LCAxMjk2NDEsIDEyOTY0NywgMTI5NjUzLCAxMjk2NTgsIDEyOTY2NCwgMTI5NjcwLCAxMjk2NzYsIDEyOTY4MiwgCi0gICAgMTI5Njg4LCAxMjk2OTIsIDEyOTY5NywgMTI5NzAxLCAxMjk3MDYsIDEyOTcxMCwgMTI5NzE1LCAxMjk3MjAsIDEyOTcyNiwgCi0gICAgMTI5NzMyLCAxMjk3MzgsIDEyOTc0MywgMTI5NzQ5LCAxMjk3NTUsIDEyOTc2MSwgMTI5NzY2LCAxMjk3NzIsIDEyOTc3OCwgCi0gICAgMTI5NzgzLCAxMjk3ODgsIDEyOTc5NCwgMTI5Nzk5LCAxMjk4MDUsIDEyOTgxMSwgMTI5ODE2LCAxMjk4MjIsIDEyOTgyOCwgCi0gICAgMTI5ODMzLCAxMjk4MzksIDEyOTg0NSwgMTI5ODUxLCAxMjk4NTcsIDEyOTg2MywgMTI5ODY4LCAxMjk4NzIsIDEyOTg3NywgCi0gICAgMTI5ODc5LCAxMjk4ODMsIDEyOTg4NiwgMTI5ODg5LCAxMjk4OTIsIDEyOTg5NSwgMTI5ODk4LCAxMjk5MDEsIDEyOTkwNCwgCi0gICAgMTI5OTA3LCAxMjk5MTAsIDEyOTkxMywgMTI5OTE2LCAxMjk5MTksIDEyOTkyMiwgMTI5OTI1LCAxMjk5MjgsIDEyOTkzMSwgCi0gICAgMTI5OTM0LCAxMjk5MzcsIDEyOTk0MCwgMTI5OTQzLCAxMjk5NDYsIDEyOTk0OSwgMTI5OTUyLCAxMjk5NTUsIDEyOTk1OCwgCi0gICAgMTI5OTYxLCAxMjk5NjQsIDEyOTk2NywgMTI5OTcwLCAxMjk5NzMsIDEyOTk3NiwgMTI5OTc5LCAxMjk5ODIsIDEyOTk4NSwgCi0gICAgMTI5OTg4LCAxMjk5OTEsIDEyOTk5NCwgMTI5OTk3LCAxMzAwMDAsIDEzMDAwMywgMTMwMDA2LCAxMzAwMDksIDEzMDAxMiwgCi0gICAgMTMwMDE1LCAxMzAwMTgsIDEzMDAyMSwgMTMwMDI0LCAxMzAwMjcsIDEzMDAzMCwgMTMwMDMzLCAxMzAwMzYsIDEzMDAzOSwgCi0gICAgMTMwMDQyLCAxMzAwNDUsIDEzMDA0OCwgMTMwMDUxLCAxMzAwNTQsIDEzMDA1NywgMTMwMDYwLCAxMzAwNjMsIDEzMDA2NiwgCi0gICAgMTMwMDY5LCAxMzAwNzIsIDEzMDA3NSwgMTMwMDc4LCAxMzAwODEsIDEzMDA4NCwgMTMwMDg3LCAxMzAwOTAsIDEzMDA5MywgCi0gICAgMTMwMDk2LCAxMzAwOTksIDEzMDEwMiwgMTMwMTA1LCAxMzAxMDgsIDEzMDExMSwgMTMwMTE0LCAxMzAxMTcsIDEzMDEyMCwgCi0gICAgMTMwMTIzLCAxMzAxMjYsIDEzMDEyOSwgMTMwMTMyLCAxMzAxMzUsIDEzMDEzOCwgMTMwMTQxLCAxMzAxNDQsIDEzMDE0NywgCi0gICAgMTMwMTUwLCAxMzAxNTMsIDEzMDE1NiwgMTMwMTU5LCAxMzAxNjIsIDEzMDE2NSwgMTMwMTY4LCAxMzAxNzEsIDEzMDE3NCwgCi0gICAgMTMwMTc3LCAxMzAxODAsIDEzMDE4MywgMTMwMTg2LCAxMzAxODksIDEzMDE5MiwgMTMwMTk1LCAxMzAxOTgsIDEzMDIwMSwgCi0gICAgMTMwMjA0LCAxMzAyMDcsIDEzMDIxMCwgMTMwMjEzLCAxMzAyMTYsIDEzMDIxOSwgMTMwMjIyLCAxMzAyMjUsIDEzMDIyOCwgCi0gICAgMTMwMjMxLCAxMzAyMzQsIDEzMDIzNywgMTMwMjQwLCAxMzAyNDMsIDEzMDI0NiwgMTMwMjQ5LCAxMzAyNTIsIDEzMDI1NSwgCi0gICAgMTMwMjU4LCAxMzAyNjEsIDEzMDI2NCwgMTMwMjY3LCAxMzAyNzAsIDEzMDI3MywgMTMwMjc2LCAxMzAyNzksIDEzMDI4MiwgCi0gICAgMTMwMjg1LCAxMzAyODgsIDEzMDI5MSwgMTMwMjk0LCAxMzAyOTcsIDEzMDMwMCwgMTMwMzAzLCAxMzAzMDYsIDEzMDMwOSwgCi0gICAgMTMwMzEyLCAxMzAzMTUsIDEzMDMxOCwgMTMwMzIxLCAxMzAzMjQsIDEzMDMyNywgMTMwMzMwLCAxMzAzMzMsIDEzMDMzNiwgCi0gICAgMTMwMzM5LCAxMzAzNDIsIDEzMDM0NSwgMTMwMzQ4LCAxMzAzNTEsIDEzMDM1NCwgMTMwMzU3LCAxMzAzNjAsIDEzMDM2MywgCi0gICAgMTMwMzY2LCAxMzAzNjksIDEzMDM3MiwgMTMwMzc1LCAxMzAzNzgsIDEzMDM4MSwgMTMwMzg0LCAxMzAzODcsIDEzMDM5MCwgCi0gICAgMTMwMzkzLCAxMzAzOTYsIDEzMDM5OSwgMTMwNDAyLCAxMzA0MDUsIDEzMDQwOCwgMTMwNDExLCAxMzA0MTQsIDEzMDQxNywgCi0gICAgMTMwNDIwLCAxMzA0MjMsIDEzMDQyNiwgMTMwNDI5LCAxMzA0MzIsIDEzMDQzNSwgMTMwNDM4LCAxMzA0NDEsIDEzMDQ0NCwgCi0gICAgMTMwNDQ3LCAxMzA0NTAsIDEzMDQ1MywgMTMwNDU2LCAxMzA0NTksIDEzMDQ2MiwgMTMwNDY1LCAxMzA0NjgsIDEzMDQ3MSwgCi0gICAgMTMwNDc0LCAxMzA0NzcsIDEzMDQ4MCwgMTMwNDgzLCAxMzA0ODYsIDEzMDQ4OSwgMTMwNDkyLCAxMzA0OTUsIDEzMDQ5OCwgCi0gICAgMTMwNTAxLCAxMzA1MDQsIDEzMDUwNywgMTMwNTEwLCAxMzA1MTMsIDEzMDUxNiwgMTMwNTE5LCAxMzA1MjIsIDEzMDUyNSwgCi0gICAgMTMwNTI4LCAxMzA1MzEsIDEzMDUzNCwgMTMwNTM3LCAxMzA1NDAsIDEzMDU0MywgMTMwNTQ2LCAxMzA1NDksIDEzMDU1MiwgCi0gICAgMTMwNTU1LCAxMzA1NTgsIDEzMDU2MSwgMTMwNTY0LCAxMzA1NjcsIDEzMDU3MCwgMTMwNTczLCAxMzA1NzYsIDEzMDU3OSwgCi0gICAgMTMwNTgyLCAxMzA1ODUsIDEzMDU4OCwgMTMwNTkxLCAxMzA1OTQsIDEzMDU5NywgMTMwNjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2MDMsIDEzMDYwNSwgMTMwNjA3LCAxMzA2MTIsIDEzMDYxNCwgCi0gICAgMTMwNjE5LCAxMzA2MjEsIDEzMDYyNiwgMTMwNjI4LCAxMzA2MzMsIDEzMDYzNSwgMTMwNjM3LCAxMzA2MzksIDEzMDY0MSwgCi0gICAgMTMwNjQzLCAxMzA2NDUsIDEzMDY0NywgMTMwNjQ5LCAxMzA2NTEsIDEzMDY1NCwgMTMwNjU3LCAxMzA2NTksIDEzMDY2MSwgCi0gICAgMTMwNjY1LCAxMzA2NjgsIDEzMDY3MywgMTMwNjc1LCAxMzA2NzcsIDEzMDY3OSwgMTMwNjgzLCAxMzA2ODYsIDEzMDY4OCwgCi0gICAgMTMwNjkyLCAxMzA2OTQsIDEzMDY5OCwgMTMwNzAwLCAxMzA3MDQsIDEzMDcwNywgMTMwNzA5LCAxMzA3MTMsIDEzMDcxNywgCi0gICAgMTMwNzE5LCAxMzA3MjUsIDEzMDcyNywgMTMwNzMyLCAxMzA3MzQsIDEzMDczOSwgMTMwNzQxLCAxMzA3NDYsIDEzMDc0OCwgCi0gICAgMTMwNzUzLCAxMzA3NTUsIDEzMDc1OCwgMTMwNzYwLCAxMzA3NjQsIDEzMDc2NiwgMTMwNzczLCAxMzA3NzUsIDEzMDc3NywgCi0gICAgMTMwNzc5LCAxMzA3ODQsIDEzMDc4NiwgMTMwNzg4LCAxMzA3OTAsIDEzMDc5MiwgMTMwNzk0LCAxMzA3OTksIDEzMDgwMywgCi0gICAgMTMwODA1LCAxMzA4MTAsIDEzMDgxNCwgMTMwODE2LCAxMzA4MjEsIDEzMDgyNSwgMTMwODI3LCAxMzA4MzIsIDEzMDgzNiwgCi0gICAgMTMwODM4LCAxMzA4NDAsIDEzMDg0MiwgMTMwODQ0LCAxMzA4NDgsIDEzMDg1MCwgMTMwODU1LCAxMzA4NTcsIDEzMDg2MywgCi0gICAgMTMwODY1LCAxMzA4NzEsIDEzMDg3MywgMTMwODc1LCAxMzA4NzcsIDEzMDg4MSwgMTMwODgzLCAxMzA4OTAsIDEzMDg5MiwgCi0gICAgMTMwODk5LCAxMzA5MDEsIDEzMDkwNiwgMTMwOTExLCAxMzA5MTMsIDEzMDkxOSwgMTMwOTI1LCAxMzA5MjcsIDEzMDkzMywgCi0gICAgMTMwOTM4LCAxMzA5NDAsIDEzMDk0NiwgMTMwOTUyLCAxMzA5NTQsIDEzMDk2MCwgMTMwOTY2LCAxMzA5NjgsIDEzMDk3NCwgCi0gICAgMTMwOTc4LCAxMzA5ODAsIDEzMDk4NSwgMTMwOTg3LCAxMzA5ODksIDEzMDk5NCwgMTMwOTk2LCAxMzA5OTgsIDEzMTAwNCwgCi0gICAgMTMxMDA2LCAxMzEwMTEsIDEzMTAxNSwgMTMxMDE3LCAxMzEwMjIsIDEzMTAyNiwgMTMxMDI4LCAxMzEwMzQsIDEzMTAzNiwgCi0gICAgMTMxMDQwLCAxMzEwNDIsIDEzMTA0NiwgMTMxMDQ4LCAxMzEwNTUsIDEzMTA2MiwgMTMxMDY0LCAxMzEwNzEsIDEzMTA3OCwgCi0gICAgMTMxMDgwLCAxMzEwODUsIDEzMTA4NywgMTMxMDk0LCAxMzEwOTYsIDEzMTEwMSwgMTMxMTAzLCAxMzExMDksIDEzMTExMSwgCi0gICAgMTMxMTE1LCAxMzExMTcsIDEzMTEyMywgMTMxMTI1LCAxMzExMjksIDEzMTEzMSwgMTMxMTM3LCAxMzExMzksIDEzMTE0MSwgCi0gICAgMTMxMTQzLCAxMzExNDgsIDEzMTE1MywgMTMxMTU1LCAxMzExNTksIDEzMTE2NiwgMTMxMTczLCAxMzExNzgsIDEzMTE4MywgCi0gICAgMTMxMTk1LCAxMzExOTcsIDEzMTE5OSwgMTMxMjAxLCAxMzEyMDMsIDEzMTIwNSwgMTMxMjA3LCAxMzEyMDksIDEzMTIxMSwgCi0gICAgMTMxMjEzLCAxMzEyMTUsIDEzMTIxNywgMTMxMjE5LCAxMzEyMjEsIDEzMTIyMywgMTMxMjI1LCAxMzEyMjcsIDEzMTIyOSwgCi0gICAgMTMxMjM1LCAxMzEyNDIsIDEzMTI0NywgMTMxMjUyLCAxMzEyNjMsIDEzMTI2NSwgMTMxMjY3LCAxMzEyNjksIDEzMTI3MSwgCi0gICAgMTMxMjczLCAxMzEyNzUsIDEzMTI3NywgMTMxMjc5LCAxMzEyODEsIDEzMTI4MywgMTMxMjg1LCAxMzEyODcsIDEzMTI4OSwgCi0gICAgMTMxMjkxLCAxMzEyOTMsIDEzMTI5NSwgMTMxMzAwLCAxMzEzMDIsIDEzMTMwNCwgMTMxMzE1LCAxMzEzMTcsIDEzMTMxOSwgCi0gICAgMTMxMzIxLCAxMzEzMjMsIDEzMTMyNSwgMTMxMzI3LCAxMzEzMjksIDEzMTMzMSwgMTMxMzMzLCAxMzEzMzUsIDEzMTMzNywgCi0gICAgMTMxMzM5LCAxMzEzNDEsIDEzMTM0MywgMTMxMzQ1LCAxMzEzNDcsIDEzMTM0OSwgMTMxMzUxLCAxMzEzNTMsIDEzMTM1NSwgCi0gICAgMTMxMzU3LCAxMzEzNTksIDEzMTM2MSwgMTMxMzYzLCAxMzEzNjUsIDEzMTM2NywgMTMxMzY5LCAxMzEzNzEsIDEzMTM3MywgCi0gICAgMTMxMzc1LCAxMzEzNzcsIDEzMTM3OSwgMTMxMzgxLCAxMzEzODMsIDEzMTM4NSwgMTMxMzg3LCAxMzEzODksIDEzMTM5MSwgCi0gICAgMTMxMzkzLCAxMzEzOTUsIDEzMTM5NywgMTMxMzk5LCAxMzE0MDEsIDEzMTQwMywgMTMxNDA1LCAxMzE0MDcsIDEzMTQwOSwgCi0gICAgMTMxNDExLCAxMzE0MTMsIDEzMTQxNSwgMTMxNDE3LCAxMzE0MTksIDEzMTQyMSwgMTMxNDIzLCAxMzE0MjUsIDEzMTQyNywgCi0gICAgMTMxNDI5LCAxMzE0MzEsIDEzMTQzMywgMTMxNDM1LCAxMzE0MzcsIDEzMTQzOSwgMTMxNDQxLCAxMzE0NDMsIDEzMTQ0NSwgCi0gICAgMTMxNDQ3LCAxMzE0NDksIDEzMTQ1MSwgMTMxNDUzLCAxMzE0NTUsIDEzMTQ1NywgMTMxNDU5LCAxMzE0NjEsIDEzMTQ2MywgCi0gICAgMTMxNDY1LCAxMzE0NjcsIDEzMTQ2OSwgMTMxNDcxLCAxMzE0NzMsIDEzMTQ3NSwgMTMxNDc3LCAxMzE0NzksIDEzMTQ4MSwgCi0gICAgMTMxNDgzLCAxMzE0ODUsIDEzMTQ4NywgMTMxNDg5LCAxMzE0OTEsIDEzMTQ5MywgMTMxNDk1LCAxMzE0OTcsIDEzMTQ5OSwgCi0gICAgMTMxNTAxLCAxMzE1MDMsIDEzMTUwNSwgMTMxNTA3LCAxMzE1MDksIDEzMTUxMSwgMTMxNTEzLCAxMzE1MTUsIDEzMTUxNywgCi0gICAgMTMxNTE5LCAxMzE1MjEsIDEzMTUyMywgMTMxNTI1LCAxMzE1MjcsIDEzMTUyOSwgMTMxNTMxLCAxMzE1MzMsIDEzMTUzNSwgCi0gICAgMTMxNTM3LCAxMzE1MzksIDEzMTU0MSwgMTMxNTQzLCAxMzE1NDUsIDEzMTU0NywgMTMxNTQ5LCAxMzE1NTEsIDEzMTU1MywgCi0gICAgMTMxNTU1LCAxMzE1NTcsIDEzMTU1OSwgMTMxNTYxLCAxMzE1NjMsIDEzMTU2NSwgMTMxNTY3LCAxMzE1NjksIDEzMTU3MSwgCi0gICAgMTMxNTczLCAxMzE1NzUsIDEzMTU3NywgMTMxNTc5LCAxMzE1ODEsIDEzMTU4MywgMTMxNTg1LCAxMzE1ODcsIDEzMTU4OSwgCi0gICAgMTMxNTkxLCAxMzE1OTMsIDEzMTU5NSwgMTMxNTk3LCAxMzE1OTksIDEzMTYwMSwgMTMxNjAzLCAxMzE2MDUsIDEzMTYwNywgCi0gICAgMTMxNjA5LCAxMzE2MTEsIDEzMTYxMywgMTMxNjE1LCAxMzE2MTcsIDEzMTYxOSwgMTMxNjIxLCAxMzE2MjMsIDEzMTYyNSwgCi0gICAgMTMxNjI3LCAxMzE2MjksIDEzMTYzMSwgMTMxNjMzLCAxMzE2MzUsIDEzMTYzNywgMTMxNjM5LCAxMzE2NDEsIDEzMTY0MywgCi0gICAgMTMxNjQ1LCAxMzE2NDcsIDEzMTY0OSwgMTMxNjUxLCAxMzE2NTMsIDEzMTY1NSwgMTMxNjU3LCAxMzE2NTksIDEzMTY2MSwgCi0gICAgMTMxNjYzLCAxMzE2NjUsIDEzMTY2NywgMTMxNjY5LCAxMzE2NzEsIDEzMTY3MywgMTMxNjc1LCAxMzE2NzcsIDEzMTY3OSwgCi0gICAgMTMxNjgxLCAxMzE2ODMsIDEzMTY4NSwgMTMxNjg3LCAxMzE2ODksIDEzMTY5MSwgMTMxNjkzLCAxMzE2OTUsIDEzMTY5NywgCi0gICAgMTMxNjk5LCAxMzE3MDEsIDEzMTcwMywgMTMxNzA1LCAxMzE3MDcsIDEzMTcwOSwgMTMxNzExLCAxMzE3MTMsIDEzMTcxNSwgCi0gICAgMTMxNzE3LCAxMzE3MTksIDEzMTcyMSwgMTMxNzIzLCAxMzE3MjUsIDEzMTcyNywgMTMxNzI5LCAxMzE3MzEsIDEzMTczMywgCi0gICAgMTMxNzM1LCAxMzE3MzcsIDEzMTczOSwgMTMxNzQxLCAxMzE3NDMsIDEzMTc0NSwgMTMxNzQ3LCAxMzE3NDksIDEzMTc1MSwgCi0gICAgMTMxNzUzLCAxMzE3NTUsIDEzMTc1NywgMTMxNzU5LCAxMzE3NjEsIDEzMTc2MywgMTMxNzY1LCAxMzE3NjcsIDEzMTc2OSwgCi0gICAgMTMxNzcxLCAxMzE3NzMsIDEzMTc3NSwgMTMxNzc3LCAxMzE3NzksIDEzMTc4MSwgMTMxNzgzLCAxMzE3ODUsIDEzMTc4NywgCi0gICAgMTMxNzg5LCAxMzE3OTEsIDEzMTc5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTI5NDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk0MzEsIDEyOTQzNCwgMTI5NDM4LCAxMjk0NDIsIDEyOTQ0NSwgCisgICAgMTI5NDQ5LCAxMjk0NTMsIDEyOTQ1NiwgMTI5NDU5LCAxMjk0NjMsIDEyOTQ2NywgMTI5NDcwLCAxMjk0NzMsIDEyOTQ3NiwgCisgICAgMTI5NDc5LCAxMjk0ODQsIDEyOTQ4NywgMTI5NDkxLCAxMjk0OTQsIDEyOTQ5NywgMTI5NTAwLCAxMjk1MDMsIDEyOTUwNiwgCisgICAgMTI5NTA5LCAxMjk1MTIsIDEyOTUxNSwgMTI5NTE4LCAxMjk1MjEsIDEyOTUyNCwgMTI5NTI4LCAxMjk1MzIsIDEyOTUzNiwgCisgICAgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MCwgMTI5NTU2LCAxMjk1NjIsIDEyOTU2OCwgMTI5NTczLCAxMjk1NzksIDEyOTU4NSwgCisgICAgMTI5NTkxLCAxMjk1OTYsIDEyOTYwMiwgMTI5NjA4LCAxMjk2MTMsIDEyOTYxOCwgMTI5NjI0LCAxMjk2MjksIDEyOTYzNSwgCisgICAgMTI5NjQxLCAxMjk2NDYsIDEyOTY1MiwgMTI5NjU4LCAxMjk2NjMsIDEyOTY2OSwgMTI5Njc1LCAxMjk2ODEsIDEyOTY4NywgCisgICAgMTI5NjkzLCAxMjk2OTcsIDEyOTcwMiwgMTI5NzA2LCAxMjk3MTEsIDEyOTcxNSwgMTI5NzIwLCAxMjk3MjUsIDEyOTczMSwgCisgICAgMTI5NzM3LCAxMjk3NDMsIDEyOTc0OCwgMTI5NzU0LCAxMjk3NjAsIDEyOTc2NiwgMTI5NzcxLCAxMjk3NzcsIDEyOTc4MywgCisgICAgMTI5Nzg4LCAxMjk3OTMsIDEyOTc5OSwgMTI5ODA0LCAxMjk4MTAsIDEyOTgxNiwgMTI5ODIxLCAxMjk4MjcsIDEyOTgzMywgCisgICAgMTI5ODM4LCAxMjk4NDQsIDEyOTg1MCwgMTI5ODU2LCAxMjk4NjIsIDEyOTg2OCwgMTI5ODczLCAxMjk4NzcsIDEyOTg4MiwgCisgICAgMTI5ODg0LCAxMjk4ODgsIDEyOTg5MSwgMTI5ODk0LCAxMjk4OTcsIDEyOTkwMCwgMTI5OTAzLCAxMjk5MDYsIDEyOTkwOSwgCisgICAgMTI5OTEyLCAxMjk5MTUsIDEyOTkxOCwgMTI5OTIxLCAxMjk5MjQsIDEyOTkyNywgMTI5OTMwLCAxMjk5MzMsIDEyOTkzNiwgCisgICAgMTI5OTM5LCAxMjk5NDIsIDEyOTk0NSwgMTI5OTQ4LCAxMjk5NTEsIDEyOTk1NCwgMTI5OTU3LCAxMjk5NjAsIDEyOTk2MywgCisgICAgMTI5OTY2LCAxMjk5NjksIDEyOTk3MiwgMTI5OTc1LCAxMjk5NzgsIDEyOTk4MSwgMTI5OTg0LCAxMjk5ODcsIDEyOTk5MCwgCisgICAgMTI5OTkzLCAxMjk5OTYsIDEyOTk5OSwgMTMwMDAyLCAxMzAwMDUsIDEzMDAwOCwgMTMwMDExLCAxMzAwMTQsIDEzMDAxNywgCisgICAgMTMwMDIwLCAxMzAwMjMsIDEzMDAyNiwgMTMwMDI5LCAxMzAwMzIsIDEzMDAzNSwgMTMwMDM4LCAxMzAwNDEsIDEzMDA0NCwgCisgICAgMTMwMDQ3LCAxMzAwNTAsIDEzMDA1MywgMTMwMDU2LCAxMzAwNTksIDEzMDA2MiwgMTMwMDY1LCAxMzAwNjgsIDEzMDA3MSwgCisgICAgMTMwMDc0LCAxMzAwNzcsIDEzMDA4MCwgMTMwMDgzLCAxMzAwODYsIDEzMDA4OSwgMTMwMDkyLCAxMzAwOTUsIDEzMDA5OCwgCisgICAgMTMwMTAxLCAxMzAxMDQsIDEzMDEwNywgMTMwMTEwLCAxMzAxMTMsIDEzMDExNiwgMTMwMTE5LCAxMzAxMjIsIDEzMDEyNSwgCisgICAgMTMwMTI4LCAxMzAxMzEsIDEzMDEzNCwgMTMwMTM3LCAxMzAxNDAsIDEzMDE0MywgMTMwMTQ2LCAxMzAxNDksIDEzMDE1MiwgCisgICAgMTMwMTU1LCAxMzAxNTgsIDEzMDE2MSwgMTMwMTY0LCAxMzAxNjcsIDEzMDE3MCwgMTMwMTczLCAxMzAxNzYsIDEzMDE3OSwgCisgICAgMTMwMTgyLCAxMzAxODUsIDEzMDE4OCwgMTMwMTkxLCAxMzAxOTQsIDEzMDE5NywgMTMwMjAwLCAxMzAyMDMsIDEzMDIwNiwgCisgICAgMTMwMjA5LCAxMzAyMTIsIDEzMDIxNSwgMTMwMjE4LCAxMzAyMjEsIDEzMDIyNCwgMTMwMjI3LCAxMzAyMzAsIDEzMDIzMywgCisgICAgMTMwMjM2LCAxMzAyMzksIDEzMDI0MiwgMTMwMjQ1LCAxMzAyNDgsIDEzMDI1MSwgMTMwMjU0LCAxMzAyNTcsIDEzMDI2MCwgCisgICAgMTMwMjYzLCAxMzAyNjYsIDEzMDI2OSwgMTMwMjcyLCAxMzAyNzUsIDEzMDI3OCwgMTMwMjgxLCAxMzAyODQsIDEzMDI4NywgCisgICAgMTMwMjkwLCAxMzAyOTMsIDEzMDI5NiwgMTMwMjk5LCAxMzAzMDIsIDEzMDMwNSwgMTMwMzA4LCAxMzAzMTEsIDEzMDMxNCwgCisgICAgMTMwMzE3LCAxMzAzMjAsIDEzMDMyMywgMTMwMzI2LCAxMzAzMjksIDEzMDMzMiwgMTMwMzM1LCAxMzAzMzgsIDEzMDM0MSwgCisgICAgMTMwMzQ0LCAxMzAzNDcsIDEzMDM1MCwgMTMwMzUzLCAxMzAzNTYsIDEzMDM1OSwgMTMwMzYyLCAxMzAzNjUsIDEzMDM2OCwgCisgICAgMTMwMzcxLCAxMzAzNzQsIDEzMDM3NywgMTMwMzgwLCAxMzAzODMsIDEzMDM4NiwgMTMwMzg5LCAxMzAzOTIsIDEzMDM5NSwgCisgICAgMTMwMzk4LCAxMzA0MDEsIDEzMDQwNCwgMTMwNDA3LCAxMzA0MTAsIDEzMDQxMywgMTMwNDE2LCAxMzA0MTksIDEzMDQyMiwgCisgICAgMTMwNDI1LCAxMzA0MjgsIDEzMDQzMSwgMTMwNDM0LCAxMzA0MzcsIDEzMDQ0MCwgMTMwNDQzLCAxMzA0NDYsIDEzMDQ0OSwgCisgICAgMTMwNDUyLCAxMzA0NTUsIDEzMDQ1OCwgMTMwNDYxLCAxMzA0NjQsIDEzMDQ2NywgMTMwNDcwLCAxMzA0NzMsIDEzMDQ3NiwgCisgICAgMTMwNDc5LCAxMzA0ODIsIDEzMDQ4NSwgMTMwNDg4LCAxMzA0OTEsIDEzMDQ5NCwgMTMwNDk3LCAxMzA1MDAsIDEzMDUwMywgCisgICAgMTMwNTA2LCAxMzA1MDksIDEzMDUxMiwgMTMwNTE1LCAxMzA1MTgsIDEzMDUyMSwgMTMwNTI0LCAxMzA1MjcsIDEzMDUzMCwgCisgICAgMTMwNTMzLCAxMzA1MzYsIDEzMDUzOSwgMTMwNTQyLCAxMzA1NDUsIDEzMDU0OCwgMTMwNTUxLCAxMzA1NTQsIDEzMDU1NywgCisgICAgMTMwNTYwLCAxMzA1NjMsIDEzMDU2NiwgMTMwNTY5LCAxMzA1NzIsIDEzMDU3NSwgMTMwNTc4LCAxMzA1ODEsIDEzMDU4NCwgCisgICAgMTMwNTg3LCAxMzA1OTAsIDEzMDU5MywgMTMwNTk2LCAxMzA1OTksIDEzMDYwMiwgMTMwNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2MDgsIDEzMDYxMCwgMTMwNjEyLCAxMzA2MTcsIDEzMDYxOSwgCisgICAgMTMwNjI0LCAxMzA2MjYsIDEzMDYzMSwgMTMwNjMzLCAxMzA2MzgsIDEzMDY0MCwgMTMwNjQyLCAxMzA2NDQsIDEzMDY0NiwgCisgICAgMTMwNjQ4LCAxMzA2NTAsIDEzMDY1MiwgMTMwNjU0LCAxMzA2NTYsIDEzMDY1OSwgMTMwNjYyLCAxMzA2NjQsIDEzMDY2NiwgCisgICAgMTMwNjcwLCAxMzA2NzMsIDEzMDY3OCwgMTMwNjgwLCAxMzA2ODIsIDEzMDY4NCwgMTMwNjg4LCAxMzA2OTEsIDEzMDY5MywgCisgICAgMTMwNjk3LCAxMzA2OTksIDEzMDcwMywgMTMwNzA1LCAxMzA3MDksIDEzMDcxMiwgMTMwNzE0LCAxMzA3MTgsIDEzMDcyMiwgCisgICAgMTMwNzI0LCAxMzA3MzAsIDEzMDczMiwgMTMwNzM3LCAxMzA3MzksIDEzMDc0NCwgMTMwNzQ2LCAxMzA3NTEsIDEzMDc1MywgCisgICAgMTMwNzU4LCAxMzA3NjAsIDEzMDc2MywgMTMwNzY1LCAxMzA3NjksIDEzMDc3MSwgMTMwNzc4LCAxMzA3ODAsIDEzMDc4MiwgCisgICAgMTMwNzg0LCAxMzA3ODksIDEzMDc5MSwgMTMwNzkzLCAxMzA3OTUsIDEzMDc5NywgMTMwNzk5LCAxMzA4MDQsIDEzMDgwOCwgCisgICAgMTMwODEwLCAxMzA4MTUsIDEzMDgxOSwgMTMwODIxLCAxMzA4MjYsIDEzMDgzMCwgMTMwODMyLCAxMzA4MzcsIDEzMDg0MSwgCisgICAgMTMwODQzLCAxMzA4NDUsIDEzMDg0NywgMTMwODQ5LCAxMzA4NTMsIDEzMDg1NSwgMTMwODYwLCAxMzA4NjIsIDEzMDg2OCwgCisgICAgMTMwODcwLCAxMzA4NzYsIDEzMDg3OCwgMTMwODgwLCAxMzA4ODIsIDEzMDg4NiwgMTMwODg4LCAxMzA4OTUsIDEzMDg5NywgCisgICAgMTMwOTA0LCAxMzA5MDYsIDEzMDkxMSwgMTMwOTE2LCAxMzA5MTgsIDEzMDkyNCwgMTMwOTMwLCAxMzA5MzIsIDEzMDkzOCwgCisgICAgMTMwOTQzLCAxMzA5NDUsIDEzMDk1MSwgMTMwOTU3LCAxMzA5NTksIDEzMDk2NSwgMTMwOTcxLCAxMzA5NzMsIDEzMDk3OSwgCisgICAgMTMwOTgzLCAxMzA5ODUsIDEzMDk5MCwgMTMwOTkyLCAxMzA5OTQsIDEzMDk5OSwgMTMxMDAxLCAxMzEwMDMsIDEzMTAwOSwgCisgICAgMTMxMDExLCAxMzEwMTYsIDEzMTAyMCwgMTMxMDIyLCAxMzEwMjcsIDEzMTAzMSwgMTMxMDMzLCAxMzEwMzksIDEzMTA0MSwgCisgICAgMTMxMDQ1LCAxMzEwNDcsIDEzMTA1MSwgMTMxMDUzLCAxMzEwNjAsIDEzMTA2NywgMTMxMDY5LCAxMzEwNzYsIDEzMTA4MywgCisgICAgMTMxMDg1LCAxMzEwOTAsIDEzMTA5MiwgMTMxMDk5LCAxMzExMDEsIDEzMTEwNiwgMTMxMTA4LCAxMzExMTQsIDEzMTExNiwgCisgICAgMTMxMTIwLCAxMzExMjIsIDEzMTEyOCwgMTMxMTMwLCAxMzExMzQsIDEzMTEzNiwgMTMxMTQyLCAxMzExNDQsIDEzMTE0NiwgCisgICAgMTMxMTQ4LCAxMzExNTMsIDEzMTE1OCwgMTMxMTYwLCAxMzExNjksIDEzMTE3MywgMTMxMTgwLCAxMzExODcsIDEzMTE5MiwgCisgICAgMTMxMTk3LCAxMzEyMDksIDEzMTIxMSwgMTMxMjEzLCAxMzEyMTUsIDEzMTIxNywgMTMxMjE5LCAxMzEyMjEsIDEzMTIyMywgCisgICAgMTMxMjI1LCAxMzEyMjcsIDEzMTIyOSwgMTMxMjMxLCAxMzEyMzMsIDEzMTIzNSwgMTMxMjM3LCAxMzEyMzksIDEzMTI0MSwgCisgICAgMTMxMjQzLCAxMzEyNDksIDEzMTI1NiwgMTMxMjYxLCAxMzEyNjYsIDEzMTI3NywgMTMxMjc5LCAxMzEyODEsIDEzMTI4MywgCisgICAgMTMxMjg1LCAxMzEyODcsIDEzMTI4OSwgMTMxMjkxLCAxMzEyOTMsIDEzMTI5NSwgMTMxMjk3LCAxMzEyOTksIDEzMTMwMSwgCisgICAgMTMxMzAzLCAxMzEzMDUsIDEzMTMwNywgMTMxMzA5LCAxMzEzMTQsIDEzMTMxNiwgMTMxMzE4LCAxMzEzMjksIDEzMTMzMSwgCisgICAgMTMxMzMzLCAxMzEzMzUsIDEzMTMzNywgMTMxMzM5LCAxMzEzNDEsIDEzMTM0MywgMTMxMzQ1LCAxMzEzNDcsIDEzMTM0OSwgCisgICAgMTMxMzUxLCAxMzEzNTMsIDEzMTM1NSwgMTMxMzU3LCAxMzEzNTksIDEzMTM2MSwgMTMxMzYzLCAxMzEzNjUsIDEzMTM2NywgCisgICAgMTMxMzY5LCAxMzEzNzEsIDEzMTM3MywgMTMxMzc1LCAxMzEzNzcsIDEzMTM3OSwgMTMxMzgxLCAxMzEzODMsIDEzMTM4NSwgCisgICAgMTMxMzg3LCAxMzEzODksIDEzMTM5MSwgMTMxMzkzLCAxMzEzOTUsIDEzMTM5NywgMTMxMzk5LCAxMzE0MDEsIDEzMTQwMywgCisgICAgMTMxNDA1LCAxMzE0MDcsIDEzMTQwOSwgMTMxNDExLCAxMzE0MTMsIDEzMTQxNSwgMTMxNDE3LCAxMzE0MTksIDEzMTQyMSwgCisgICAgMTMxNDIzLCAxMzE0MjUsIDEzMTQyNywgMTMxNDI5LCAxMzE0MzEsIDEzMTQzMywgMTMxNDM1LCAxMzE0MzcsIDEzMTQzOSwgCisgICAgMTMxNDQxLCAxMzE0NDMsIDEzMTQ0NSwgMTMxNDQ3LCAxMzE0NDksIDEzMTQ1MSwgMTMxNDUzLCAxMzE0NTUsIDEzMTQ1NywgCisgICAgMTMxNDU5LCAxMzE0NjEsIDEzMTQ2MywgMTMxNDY1LCAxMzE0NjcsIDEzMTQ2OSwgMTMxNDcxLCAxMzE0NzMsIDEzMTQ3NSwgCisgICAgMTMxNDc3LCAxMzE0NzksIDEzMTQ4MSwgMTMxNDgzLCAxMzE0ODUsIDEzMTQ4NywgMTMxNDg5LCAxMzE0OTEsIDEzMTQ5MywgCisgICAgMTMxNDk1LCAxMzE0OTcsIDEzMTQ5OSwgMTMxNTAxLCAxMzE1MDMsIDEzMTUwNSwgMTMxNTA3LCAxMzE1MDksIDEzMTUxMSwgCisgICAgMTMxNTEzLCAxMzE1MTUsIDEzMTUxNywgMTMxNTE5LCAxMzE1MjEsIDEzMTUyMywgMTMxNTI1LCAxMzE1MjcsIDEzMTUyOSwgCisgICAgMTMxNTMxLCAxMzE1MzMsIDEzMTUzNSwgMTMxNTM3LCAxMzE1MzksIDEzMTU0MSwgMTMxNTQzLCAxMzE1NDUsIDEzMTU0NywgCisgICAgMTMxNTQ5LCAxMzE1NTEsIDEzMTU1MywgMTMxNTU1LCAxMzE1NTcsIDEzMTU1OSwgMTMxNTYxLCAxMzE1NjMsIDEzMTU2NSwgCisgICAgMTMxNTY3LCAxMzE1NjksIDEzMTU3MSwgMTMxNTczLCAxMzE1NzUsIDEzMTU3NywgMTMxNTc5LCAxMzE1ODEsIDEzMTU4MywgCisgICAgMTMxNTg1LCAxMzE1ODcsIDEzMTU4OSwgMTMxNTkxLCAxMzE1OTMsIDEzMTU5NSwgMTMxNTk3LCAxMzE1OTksIDEzMTYwMSwgCisgICAgMTMxNjAzLCAxMzE2MDUsIDEzMTYwNywgMTMxNjA5LCAxMzE2MTEsIDEzMTYxMywgMTMxNjE1LCAxMzE2MTcsIDEzMTYxOSwgCisgICAgMTMxNjIxLCAxMzE2MjMsIDEzMTYyNSwgMTMxNjI3LCAxMzE2MjksIDEzMTYzMSwgMTMxNjMzLCAxMzE2MzUsIDEzMTYzNywgCisgICAgMTMxNjM5LCAxMzE2NDEsIDEzMTY0MywgMTMxNjQ1LCAxMzE2NDcsIDEzMTY0OSwgMTMxNjUxLCAxMzE2NTMsIDEzMTY1NSwgCisgICAgMTMxNjU3LCAxMzE2NTksIDEzMTY2MSwgMTMxNjYzLCAxMzE2NjUsIDEzMTY2NywgMTMxNjY5LCAxMzE2NzEsIDEzMTY3MywgCisgICAgMTMxNjc1LCAxMzE2NzcsIDEzMTY3OSwgMTMxNjgxLCAxMzE2ODMsIDEzMTY4NSwgMTMxNjg3LCAxMzE2ODksIDEzMTY5MSwgCisgICAgMTMxNjkzLCAxMzE2OTUsIDEzMTY5NywgMTMxNjk5LCAxMzE3MDEsIDEzMTcwMywgMTMxNzA1LCAxMzE3MDcsIDEzMTcwOSwgCisgICAgMTMxNzExLCAxMzE3MTMsIDEzMTcxNSwgMTMxNzE3LCAxMzE3MTksIDEzMTcyMSwgMTMxNzIzLCAxMzE3MjUsIDEzMTcyNywgCisgICAgMTMxNzI5LCAxMzE3MzEsIDEzMTczMywgMTMxNzM1LCAxMzE3MzcsIDEzMTczOSwgMTMxNzQxLCAxMzE3NDMsIDEzMTc0NSwgCisgICAgMTMxNzQ3LCAxMzE3NDksIDEzMTc1MSwgMTMxNzUzLCAxMzE3NTUsIDEzMTc1NywgMTMxNzU5LCAxMzE3NjEsIDEzMTc2MywgCisgICAgMTMxNzY1LCAxMzE3NjcsIDEzMTc2OSwgMTMxNzcxLCAxMzE3NzMsIDEzMTc3NSwgMTMxNzc3LCAxMzE3NzksIDEzMTc4MSwgCisgICAgMTMxNzgzLCAxMzE3ODUsIDEzMTc4NywgMTMxNzg5LCAxMzE3OTEsIDEzMTc5MywgMTMxNzk1LCAxMzE3OTcsIDEzMTc5OSwgCisgICAgMTMxODAxLCAxMzE4MDMsIDEzMTgwNSwgMTMxODA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzE3OTUsIDEzMTgwNSwgMTMxODE1LCAxMzE4MjQsIDEzMTgzMywgMTMxODQ2LCAxMzE4NTksIDEzMTg3MSwgMTMxODgzLCAKLSAgICAxMzE4OTMsIDEzMTkwMywgMTMxOTEzLCAxMzE5MjMsIDEzMTkzNCwgMTMxOTQ1LCAxMzE5NTUsIDEzMTk2NCwgMTMxOTczLCAKLSAgICAxMzE5ODIsIDEzMTk5NSwgMTMyMDA4LCAxMzIwMjAsIDEzMjAzMiwgMTMyMDQyLCAxMzIwNTIsIDEzMjA2MiwgMTMyMDcyLCAKLSAgICAxMzIwODEsIDEzMjA5MCwgMTMyMDk5LCAxMzIxMDgsIDEzMjExNywgMTMyMTI2LCAxMzIxMzUsIDEzMjE0NCwgMTMyMTUzLCAKLSAgICAxMzIxNjIsIDEzMjE3MSwgMTMyMTgwLCAxMzIxOTEsIDEzMjIwMSwgMTMyMjExLCAxMzIyMjQsIDEzMjIzNCwgMTMyMjQ3LCAKLSAgICAxMzIyNTQsIDEzMjI2NCwgMTMyMjcxLCAxMzIyNzgsIDEzMjI4NSwgMTMyMjkyLCAxMzIyOTksIDEzMjMwNiwgMTMyMzE1LCAKLSAgICAxMzIzMjQsIDEzMjMzMywgMTMyMzQyLCAxMzIzNTEsIDEzMjM2MCwgMTMyMzY5LCAxMzIzNzgsIDEzMjM4NiwgMTMyMzk0LCAKLSAgICAxMzI0MDEsIDEzMjQxMSwgMTMyNDIwLCAxMzI0MjgsIDEzMjQzNSwgMTMyNDQ1LCAxMzI0NTQsIDEzMjQ1OCwgMTMyNDYyLCAKLSAgICAxMzI0NjYsIDEzMjQ3MCwgMTMyNDc0LCAxMzI0NzgsIDEzMjQ4MiwgMTMyNDg2LCAxMzI0OTAsIDEzMjQ5NCwgMTMyNDk3LCAKLSAgICAxMzI1MDEsIDEzMjUwNCwgMTMyNTA3LCAxMzI1MTEsIDEzMjUxNSwgMTMyNTE5LCAxMzI1MjMsIDEzMjUyNywgMTMyNTMxLCAKLSAgICAxMzI1MzUsIDEzMjUzOSwgMTMyNTQzLCAxMzI1NDcsIDEzMjU1MSwgMTMyNTU1LCAxMzI1NTksIDEzMjU2MywgMTMyNTY3LCAKLSAgICAxMzI1NzEsIDEzMjU3NSwgMTMyNTc5LCAxMzI1ODMsIDEzMjU4NywgMTMyNTkxLCAxMzI1OTUsIDEzMjU5OSwgMTMyNjAzLCAKLSAgICAxMzI2MDcsIDEzMjYxMSwgMTMyNjE1LCAxMzI2MTksIDEzMjYyMywgMTMyNjI3LCAxMzI2MzEsIDEzMjYzNSwgMTMyNjM5LCAKLSAgICAxMzI2NDMsIDEzMjY0NywgMTMyNjUxLCAxMzI2NTUsIDEzMjY1OSwgMTMyNjYzLCAxMzI2NjcsIDEzMjY3MSwgMTMyNjc1LCAKLSAgICAxMzI2NzksIDEzMjY4MywgMTMyNjg3LCAxMzI2OTEsIDEzMjY5NSwgMTMyNjk5LCAxMzI3MDMsIDEzMjcwNywgMTMyNzExLCAKLSAgICAxMzI3MTUsIDEzMjcxOSwgMTMyNzIzLCAxMzI3MjcsIDEzMjczMSwgMTMyNzM1LCAxMzI3MzksIDEzMjc0MywgMTMyNzQ3LCAKLSAgICAxMzI3NTEsIDEzMjc1NSwgMTMyNzU5LCAxMzI3NjMsIDEzMjc2NywgMTMyNzcxLCAxMzI3NzUsIDEzMjc3OSwgMTMyNzgzLCAKLSAgICAxMzI3ODcsIDEzMjc5MSwgMTMyNzk1LCAxMzI3OTksIDEzMjgwMywgMTMyODA3LCAxMzI4MTEsIDEzMjgxNSwgMTMyODE5LCAKLSAgICAxMzI4MjMsIDEzMjgyNywgMTMyODMxLCAxMzI4MzUsIDEzMjgzOSwgMTMyODQzLCAxMzI4NDcsIDEzMjg1MCwgMTMyODU0LCAKLSAgICAxMzI4NTgsIDEzMjg2MiwgMTMyODY2LCAxMzI4NzAsIDEzMjg3NCwgMTMyODc4LCAxMzI4ODIsIDEzMjg4NiwgMTMyODkwLCAKLSAgICAxMzI4OTQsIDEzMjg5OCwgMTMyOTAyLCAxMzI5MDYsIDEzMjkxMCwgMTMyOTE0LCAxMzI5MTgsIDEzMjkyMiwgMTMyOTI2LCAKLSAgICAxMzI5MzAsIDEzMjkzNCwgMTMyOTM4LCAxMzI5NDIsIDEzMjk0NiwgMTMyOTUwLCAxMzI5NTQsIDEzMjk1OCwgMTMyOTYyLCAKLSAgICAxMzI5NjYsIDEzMjk3MCwgMTMyOTc0LCAxMzI5NzgsIDEzMjk4MiwgMTMyOTg2LCAxMzI5OTAsIDEzMjk5NCwgMTMyOTk4LCAKLSAgICAxMzMwMDIsIDEzMzAwNiwgMTMzMDEwLCAxMzMwMTQsIDEzMzAxOCwgMTMzMDIyLCAxMzMwMjYsIDEzMzAzMCwgMTMzMDM0LCAKLSAgICAxMzMwMzgsIDEzMzA0MiwgMTMzMDQ2LCAxMzMwNTAsIDEzMzA1NCwgMTMzMDU4LCAxMzMwNjIsIDEzMzA2NiwgMTMzMDcwLCAKLSAgICAxMzMwNzQsIDEzMzA3OCwgMTMzMDgyLCAxMzMwODYsIDEzMzA5MCwgMTMzMDk0LCAxMzMwOTgsIDEzMzEwMiwgMTMzMTA2LCAKLSAgICAxMzMxMTAsIDEzMzExNCwgMTMzMTE4LCAxMzMxMjIsIDEzMzEyNiwgMTMzMTMwLCAxMzMxMzQsIDEzMzEzOCwgMTMzMTQyLCAKLSAgICAxMzMxNDYsIDEzMzE1MCwgMTMzMTU0LCAxMzMxNTgsIDEzMzE2MiwgMTMzMTY2LCAxMzMxNzAsIDEzMzE3NCwgMTMzMTc4LCAKLSAgICAxMzMxODIsIDEzMzE4NiwgMTMzMTkwLCAxMzMxOTQsIDEzMzE5OCwgMTMzMjAyLCAxMzMyMDYsIDEzMzIxMCwgMTMzMjE0LCAKLSAgICAxMzMyMTgsIDEzMzIyMiwgMTMzMjI2LCAxMzMyMzAsIDEzMzIzNCwgMTMzMjM4LCAxMzMyNDIsIDEzMzI0NiwgMTMzMjUwLCAKLSAgICAxMzMyNTQsIDEzMzI1OCwgMTMzMjYyLCAxMzMyNjYsIDEzMzI3MCwgMTMzMjc0LCAxMzMyNzgsIDEzMzI4MiwgMTMzMjg2LCAKLSAgICAxMzMyOTAsIDEzMzI5NCwgMTMzMjk4LCAxMzMzMDIsIDEzMzMwNiwgMTMzMzEwLCAxMzMzMTQsIDEzMzMxOCwgMTMzMzIyLCAKLSAgICAxMzMzMjYsIDEzMzMzMCwgMTMzMzM0LCAxMzMzMzgsIDEzMzM0MiwgMTMzMzQ2LCAxMzMzNTAsIDEzMzM1NCwgMTMzMzU4LCAKLSAgICAxMzMzNjIsIDEzMzM2NiwgMTMzMzcwLCAxMzMzNzQsIDEzMzM3OCwgMTMzMzgyLCAxMzMzODYsIDEzMzM5MCwgMTMzMzk0LCAKLSAgICAxMzMzOTgsIDEzMzQwMiwgMTMzNDA2LCAxMzM0MTAsIDEzMzQxNCwgMTMzNDE4LCAxMzM0MjIsIDEzMzQyNiwgMTMzNDMwLCAKLSAgICAxMzM0MzQsIDEzMzQzOCwgMTMzNDQyLCAxMzM0NDYsIDEzMzQ1MCwgMTMzNDU0LCAxMzM0NTgsIDEzMzQ2MiwgMTMzNDY2LCAKLSAgICAxMzM0NzAsIDEzMzQ3NCwgMTMzNDc4LCAxMzM0ODIsIDEzMzQ4NiwgMTMzNDkwLCAxMzM0OTQsIDEzMzQ5OCwgMTMzNTAyLCAKLSAgICAxMzM1MDYsIDEzMzUxMCwgMTMzNTE0LCAxMzM1MTgsIDEzMzUyMiwgMTMzNTI2LCAxMzM1MzAsIDEzMzUzNCwgMTMzNTM4LCAKLSAgICAxMzM1NDIsIDEzMzU0NiwgMTMzNTUwLCAxMzM1NTQsIDEzMzU1OCwgMTMzNTYyLCAxMzM1NjYsIDEzMzU3MCwgMTMzNTc0LCAKLSAgICAxMzM1NzgsIDEzMzU4MiwgMTMzNTg2LCAxMzM1OTAsIDEzMzU5NCwgMTMzNTk4LCAxMzM2MDIsIDEzMzYwNiwgMTMzNjEwLCAKLSAgICAxMzM2MTQsIDEzMzYxOSwgMTMzNjI0LCAxMzM2MjksIDEzMzYzMywgMTMzNjM5LCAxMzM2NDYsIDEzMzY1MywgMTMzNjYwLCAKLSAgICAxMzM2NjcsIDEzMzY3NCwgMTMzNjgxLCAxMzM2ODgsIDEzMzY5NSwgMTMzNzAyLCAxMzM3MDksIDEzMzcxNiwgMTMzNzIzLCAKLSAgICAxMzM3MzAsIDEzMzczNiwgMTMzNzQzLCAxMzM3NTAsIDEzMzc1NiwgMTMzNzYzLCAxMzM3NzAsIDEzMzc3NywgMTMzNzg0LCAKLSAgICAxMzM3OTEsIDEzMzc5OCwgMTMzODA1LCAxMzM4MTIsIDEzMzgxOSwgMTMzODI2LCAxMzM4MzMsIDEzMzg0MCwgMTMzODQ3LCAKLSAgICAxMzM4NTMsIDEzMzg1OSwgMTMzODY2LCAxMzM4NzMsIDEzMzg4MiwgMTMzODkxLCAxMzM5MDAsIDEzMzkwOSwgMTMzOTE0LCAKLSAgICAxMzM5MTksIDEzMzkyNSwgMTMzOTMxLCAxMzM5MzcsIDEzMzk0MywgMTMzOTQ5LCAxMzM5NTUsIDEzMzk2MSwgMTMzOTY3LCAKLSAgICAxMzM5NzMsIDEzMzk3OSwgMTMzOTg1LCAxMzM5OTEsIDEzMzk5NiwgMTM0MDAyLCAxMzQwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMTgwOSwgMTMxODE5LCAxMzE4MjksIDEzMTgzOCwgMTMxODQ3LCAxMzE4NjAsIDEzMTg3MywgMTMxODg1LCAxMzE4OTcsIAorICAgIDEzMTkwNywgMTMxOTE3LCAxMzE5MjcsIDEzMTkzNywgMTMxOTQ4LCAxMzE5NTksIDEzMTk2OSwgMTMxOTc4LCAxMzE5ODcsIAorICAgIDEzMTk5NiwgMTMyMDA5LCAxMzIwMjIsIDEzMjAzNCwgMTMyMDQ2LCAxMzIwNTYsIDEzMjA2NiwgMTMyMDc2LCAxMzIwODYsIAorICAgIDEzMjA5NSwgMTMyMTA0LCAxMzIxMTMsIDEzMjEyMiwgMTMyMTMxLCAxMzIxNDAsIDEzMjE0OSwgMTMyMTU4LCAxMzIxNjcsIAorICAgIDEzMjE3NiwgMTMyMTg1LCAxMzIxOTQsIDEzMjIwNSwgMTMyMjE1LCAxMzIyMjUsIDEzMjIzOCwgMTMyMjQ4LCAxMzIyNjEsIAorICAgIDEzMjI2OCwgMTMyMjc4LCAxMzIyODUsIDEzMjI5MiwgMTMyMjk5LCAxMzIzMDYsIDEzMjMxMywgMTMyMzIwLCAxMzIzMjksIAorICAgIDEzMjMzOCwgMTMyMzQ3LCAxMzIzNTYsIDEzMjM2NSwgMTMyMzc0LCAxMzIzODMsIDEzMjM5MiwgMTMyNDAwLCAxMzI0MDgsIAorICAgIDEzMjQxNSwgMTMyNDI1LCAxMzI0MzQsIDEzMjQ0MiwgMTMyNDQ5LCAxMzI0NTksIDEzMjQ2OCwgMTMyNDcyLCAxMzI0NzYsIAorICAgIDEzMjQ4MCwgMTMyNDg0LCAxMzI0ODgsIDEzMjQ5MiwgMTMyNDk2LCAxMzI1MDAsIDEzMjUwNCwgMTMyNTA4LCAxMzI1MTEsIAorICAgIDEzMjUxNSwgMTMyNTE4LCAxMzI1MjEsIDEzMjUyNSwgMTMyNTI5LCAxMzI1MzMsIDEzMjUzNywgMTMyNTQxLCAxMzI1NDUsIAorICAgIDEzMjU0OSwgMTMyNTUzLCAxMzI1NTcsIDEzMjU2MSwgMTMyNTY1LCAxMzI1NjksIDEzMjU3MywgMTMyNTc3LCAxMzI1ODEsIAorICAgIDEzMjU4NSwgMTMyNTg5LCAxMzI1OTMsIDEzMjU5NywgMTMyNjAxLCAxMzI2MDUsIDEzMjYwOSwgMTMyNjEzLCAxMzI2MTcsIAorICAgIDEzMjYyMSwgMTMyNjI1LCAxMzI2MjksIDEzMjYzMywgMTMyNjM3LCAxMzI2NDEsIDEzMjY0NSwgMTMyNjQ5LCAxMzI2NTMsIAorICAgIDEzMjY1NywgMTMyNjYxLCAxMzI2NjUsIDEzMjY2OSwgMTMyNjczLCAxMzI2NzcsIDEzMjY4MSwgMTMyNjg1LCAxMzI2ODksIAorICAgIDEzMjY5MywgMTMyNjk3LCAxMzI3MDEsIDEzMjcwNSwgMTMyNzA5LCAxMzI3MTMsIDEzMjcxNywgMTMyNzIxLCAxMzI3MjUsIAorICAgIDEzMjcyOSwgMTMyNzMzLCAxMzI3MzcsIDEzMjc0MSwgMTMyNzQ1LCAxMzI3NDksIDEzMjc1MywgMTMyNzU3LCAxMzI3NjEsIAorICAgIDEzMjc2NSwgMTMyNzY5LCAxMzI3NzMsIDEzMjc3NywgMTMyNzgxLCAxMzI3ODUsIDEzMjc4OSwgMTMyNzkzLCAxMzI3OTcsIAorICAgIDEzMjgwMSwgMTMyODA1LCAxMzI4MDksIDEzMjgxMywgMTMyODE3LCAxMzI4MjEsIDEzMjgyNSwgMTMyODI5LCAxMzI4MzMsIAorICAgIDEzMjgzNywgMTMyODQxLCAxMzI4NDUsIDEzMjg0OSwgMTMyODUzLCAxMzI4NTcsIDEzMjg2MSwgMTMyODY0LCAxMzI4NjgsIAorICAgIDEzMjg3MiwgMTMyODc2LCAxMzI4ODAsIDEzMjg4NCwgMTMyODg4LCAxMzI4OTIsIDEzMjg5NiwgMTMyOTAwLCAxMzI5MDQsIAorICAgIDEzMjkwOCwgMTMyOTEyLCAxMzI5MTYsIDEzMjkyMCwgMTMyOTI0LCAxMzI5MjgsIDEzMjkzMiwgMTMyOTM2LCAxMzI5NDAsIAorICAgIDEzMjk0NCwgMTMyOTQ4LCAxMzI5NTIsIDEzMjk1NiwgMTMyOTYwLCAxMzI5NjQsIDEzMjk2OCwgMTMyOTcyLCAxMzI5NzYsIAorICAgIDEzMjk4MCwgMTMyOTg0LCAxMzI5ODgsIDEzMjk5MiwgMTMyOTk2LCAxMzMwMDAsIDEzMzAwNCwgMTMzMDA4LCAxMzMwMTIsIAorICAgIDEzMzAxNiwgMTMzMDIwLCAxMzMwMjQsIDEzMzAyOCwgMTMzMDMyLCAxMzMwMzYsIDEzMzA0MCwgMTMzMDQ0LCAxMzMwNDgsIAorICAgIDEzMzA1MiwgMTMzMDU2LCAxMzMwNjAsIDEzMzA2NCwgMTMzMDY4LCAxMzMwNzIsIDEzMzA3NiwgMTMzMDgwLCAxMzMwODQsIAorICAgIDEzMzA4OCwgMTMzMDkyLCAxMzMwOTYsIDEzMzEwMCwgMTMzMTA0LCAxMzMxMDgsIDEzMzExMiwgMTMzMTE2LCAxMzMxMjAsIAorICAgIDEzMzEyNCwgMTMzMTI4LCAxMzMxMzIsIDEzMzEzNiwgMTMzMTQwLCAxMzMxNDQsIDEzMzE0OCwgMTMzMTUyLCAxMzMxNTYsIAorICAgIDEzMzE2MCwgMTMzMTY0LCAxMzMxNjgsIDEzMzE3MiwgMTMzMTc2LCAxMzMxODAsIDEzMzE4NCwgMTMzMTg4LCAxMzMxOTIsIAorICAgIDEzMzE5NiwgMTMzMjAwLCAxMzMyMDQsIDEzMzIwOCwgMTMzMjEyLCAxMzMyMTYsIDEzMzIyMCwgMTMzMjI0LCAxMzMyMjgsIAorICAgIDEzMzIzMiwgMTMzMjM2LCAxMzMyNDAsIDEzMzI0NCwgMTMzMjQ4LCAxMzMyNTIsIDEzMzI1NiwgMTMzMjYwLCAxMzMyNjQsIAorICAgIDEzMzI2OCwgMTMzMjcyLCAxMzMyNzYsIDEzMzI4MCwgMTMzMjg0LCAxMzMyODgsIDEzMzI5MiwgMTMzMjk2LCAxMzMzMDAsIAorICAgIDEzMzMwNCwgMTMzMzA4LCAxMzMzMTIsIDEzMzMxNiwgMTMzMzIwLCAxMzMzMjQsIDEzMzMyOCwgMTMzMzMyLCAxMzMzMzYsIAorICAgIDEzMzM0MCwgMTMzMzQ0LCAxMzMzNDgsIDEzMzM1MiwgMTMzMzU2LCAxMzMzNjAsIDEzMzM2NCwgMTMzMzY4LCAxMzMzNzIsIAorICAgIDEzMzM3NiwgMTMzMzgwLCAxMzMzODQsIDEzMzM4OCwgMTMzMzkyLCAxMzMzOTYsIDEzMzQwMCwgMTMzNDA0LCAxMzM0MDgsIAorICAgIDEzMzQxMiwgMTMzNDE2LCAxMzM0MjAsIDEzMzQyNCwgMTMzNDI4LCAxMzM0MzIsIDEzMzQzNiwgMTMzNDQwLCAxMzM0NDQsIAorICAgIDEzMzQ0OCwgMTMzNDUyLCAxMzM0NTYsIDEzMzQ2MCwgMTMzNDY0LCAxMzM0NjgsIDEzMzQ3MiwgMTMzNDc2LCAxMzM0ODAsIAorICAgIDEzMzQ4NCwgMTMzNDg4LCAxMzM0OTIsIDEzMzQ5NiwgMTMzNTAwLCAxMzM1MDQsIDEzMzUwOCwgMTMzNTEyLCAxMzM1MTYsIAorICAgIDEzMzUyMCwgMTMzNTI0LCAxMzM1MjgsIDEzMzUzMiwgMTMzNTM2LCAxMzM1NDAsIDEzMzU0NCwgMTMzNTQ4LCAxMzM1NTIsIAorICAgIDEzMzU1NiwgMTMzNTYwLCAxMzM1NjQsIDEzMzU2OCwgMTMzNTcyLCAxMzM1NzYsIDEzMzU4MCwgMTMzNTg0LCAxMzM1ODgsIAorICAgIDEzMzU5MiwgMTMzNTk2LCAxMzM2MDAsIDEzMzYwNCwgMTMzNjA4LCAxMzM2MTIsIDEzMzYxNiwgMTMzNjIwLCAxMzM2MjQsIAorICAgIDEzMzYyOCwgMTMzNjMzLCAxMzM2MzgsIDEzMzY0MywgMTMzNjQ3LCAxMzM2NTMsIDEzMzY2MCwgMTMzNjY3LCAxMzM2NzQsIAorICAgIDEzMzY4MSwgMTMzNjg4LCAxMzM2OTUsIDEzMzcwMiwgMTMzNzA5LCAxMzM3MTYsIDEzMzcyMywgMTMzNzMwLCAxMzM3MzcsIAorICAgIDEzMzc0NCwgMTMzNzUwLCAxMzM3NTcsIDEzMzc2NCwgMTMzNzcwLCAxMzM3NzcsIDEzMzc4NCwgMTMzNzkxLCAxMzM3OTgsIAorICAgIDEzMzgwNSwgMTMzODEyLCAxMzM4MTksIDEzMzgyNiwgMTMzODMzLCAxMzM4NDAsIDEzMzg0NywgMTMzODU0LCAxMzM4NjEsIAorICAgIDEzMzg2NywgMTMzODczLCAxMzM4ODAsIDEzMzg4NywgMTMzODk2LCAxMzM5MDUsIDEzMzkxNCwgMTMzOTIzLCAxMzM5MjgsIAorICAgIDEzMzkzMywgMTMzOTM5LCAxMzM5NDUsIDEzMzk1MSwgMTMzOTU3LCAxMzM5NjMsIDEzMzk2OSwgMTMzOTc1LCAxMzM5ODEsIAorICAgIDEzMzk4NywgMTMzOTkzLCAxMzM5OTksIDEzNDAwNSwgMTM0MDEwLCAxMzQwMTYsIDEzNDAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xNzExNyw5ICsxNzExOSw5IEBACiAgICAgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIDkyMjEyLCAwLCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc2NiwgCiAgICAgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCA5ODM4MjIsIDAsIDEyMDUxOSwgNjYzNzYsIAogICAgIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCA3NzE0LCA2NjIyMiwgCi0gICAgNjk5MDIsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCA5ODM0MTMsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCisgICAgNjk5MDIsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCA5ODM0MTQsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCiAgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDEyNjU3MCwgMCwgNjQ2MTUsIDQxOTE1LCAKLSAgICAwLCAxMjA3NSwgNzAwNjIsIDAsIDUxNzQsIDk4MzIxNSwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCAKKyAgICAwLCAxMjA3NSwgNzAwNjIsIDAsIDUxNzQsIDk4MzIxNiwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCAKICAgICA4NDA4LCA2NDcwNCwgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCA0MzA0OSwgCiAgICAgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIAogICAgIDkzMjIsIDAsIDEyMDU5NSwgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgMCwgCkBAIC0xNzEyNywxMCArMTcxMjksMTAgQEAKICAgICA5OTI3LCA0MTMzNSwgNDExOCwgMTc5NywgMCwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgMTI3ODgxLCAyOTgsIDAsIDEyODExNCwgCiAgICAgMCwgNDI2MjcsIDAsIDMyLCA2MTg3LCAxMTkwNTIsIDExNDk1LCAxMTQ1OSwgMzY2NSwgOTgzNjAwLCA0Mjg3MSwgMCwgCiAgICAgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDkyNDk1LCAwLCAKLSAgICA5ODM0NTgsIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgMCwgMTIwMTk5LCA5MTc4OTcsIDEyMDE5OCwgNjk4MDksIDYxODEsIAorICAgIDk4MzQ1OSwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCiAgICAgNjUwMTQsIDAsIDAsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAwLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgCiAgICAgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDk4MzExOCwgMTAyMDcsIDg3ODksIAotICAgIDk4MzIyMywgMCwgMCwgOTgzNDY0LCA5MjM0LCAwLCA2MTgyLCA5ODM0NjYsIDY1MDU4LCAwLCA5ODM0NzAsIDk4MzQ2NywgMCwgCisgICAgOTgzMjI0LCAwLCAwLCA5ODM0NjUsIDkyMzQsIDAsIDYxODIsIDk4MzQ2NywgNjUwNTgsIDAsIDk4MzQ3MSwgOTgzNDY4LCAwLCAKICAgICA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgMCwgCiAgICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCA2NDQwNSwgNDEzMzcsIDAsIAogICAgIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDAsIDY0NjE4LCAKQEAgLTE3MTc3LDcgKzE3MTc5LDcgQEAKICAgICAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIDkyMjc5LCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjczMTgsIDEyNzMxNSwgCiAgICAgMTIyODMsIDE2MTYsIDM3OTUsIDAsIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDAsIDAsIAogICAgIDMyMzksIDEyNzMxMSwgMCwgMCwgODQzMSwgMCwgNDIxNjQsIDAsIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDExOTA3MywgCi0gICAgNTA0MCwgMCwgMCwgOTgzNDM1LCA3ODQyMCwgMCwgNTAzOSwgMCwgNzg0MTgsIDAsIDUwMzgsIDAsIDAsIDEzMTg0LCAKKyAgICA1MDQwLCAwLCAwLCA5ODM0MzYsIDc4NDIwLCAwLCA1MDM5LCAwLCA3ODQxOCwgMCwgNTAzOCwgMCwgMCwgMTMxODQsIAogICAgIDc0MjkzLCAwLCA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDAsIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDAsIDM4NjMsIAogICAgIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIAogICAgIDAsIDQyNTg5LCA1NjksIDAsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDAsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIApAQCAtMTcyMDIsMTYgKzE3MjA0LDE2IEBACiAgICAgNjE4MywgMCwgMCwgMCwgMTIwNDQ4LCA3NjIzLCAxMTg5MjUsIDExODg4OSwgOTIzNSwgMTI3NjAsIDc0MTc2LCA2OTY2MiwgCiAgICAgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgMCwgMTI2NTk3LCAxMjA0MzUsIDAsIAogICAgIDc3MjYsIDAsIDE5OTIyLCAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCAKLSAgICA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgMCwgOTgzMzQwLCAwLCAzMzkxLCAKKyAgICA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgMCwgOTgzMzQxLCAwLCAzMzkxLCAKICAgICA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgMCwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCAKLSAgICAxMjc1MzcsIDEzMDE0LCAxMzAxMywgMCwgNjY3MywgMCwgMCwgMCwgMTI0MzgsIDAsIDk4MzMzNCwgMCwgOTgzODcxLCAKKyAgICAxMjc1MzcsIDEzMDE0LCAxMzAxMywgMCwgNjY3MywgMCwgMCwgMCwgMTI0MzgsIDAsIDk4MzMzNSwgMCwgOTgzODcxLCAKICAgICAxMjY2MzgsIDkwNTMsIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgOTgzODE5LCA2NjYwLCA3ODc1OCwgCi0gICAgOTE3NzYwLCA5MTc3OTMsIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgMCwgMTI3OTQwLCA5ODMzMzMsIAorICAgIDkxNzc2MCwgOTE3NzkzLCA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIDEyNzk0MCwgOTgzMzM0LCAKICAgICA3NDU0NywgMTI2NTg1LCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIAogICAgIDc4MDk5LCAxMjcwODUsIDAsIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAKICAgICAwLCA0MjUzMywgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDk4MzE0MSwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAKICAgICAwLCA3OTEsIDkxNjIsIDY5NzcsIDAsIDc4ODg5LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIAotICAgIDk4MzQ0MSwgNzU1NywgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIAorICAgIDk4MzQ0MiwgNzU1NywgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIAogICAgIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIAogICAgIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgCiAgICAgNzgwODMsIDEyODgyNCwgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzEzMDIsIDQ0MDgsIDQxMjIsIDY3NzIsIApAQCAtMTcyNjcsMTIgKzE3MjY5LDEyIEBACiAgICAgMTk0NTg3LCAwLCAxMjExLCAwLCAwLCAwLCAxMTg4MzIsIDEyMzE4LCAwLCAwLCA2ODAwNSwgMTA2MjIsIDk4Mzc3MCwgMCwgCiAgICAgNzg2NTQsIDY1NjYsIDc4NjU5LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIDgyODQsIDEzMDgxLCAwLCAKICAgICAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgOTIyMzYsIDQyNjUsIDY2NDIsIDM5NzcsIDc0MTg2LCA0MTc3OCwgODM2LCAKLSAgICAxMTkyMTYsIDI0ODgsIDAsIDQ1ODIsIDAsIDAsIDQxNzc3LCAxMjkyNiwgOTgzMzY5LCA3NTI4LCAxMDU1MCwgMCwgOTI3MDYsIAorICAgIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCA5ODMzNzAsIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgCiAgICAgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAKICAgICAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgCi0gICAgMCwgNzEzMDEsIDk4Mzg1MywgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzODIsIAotICAgIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzYyLCA4MDgwLCA3MDA2LCAwLCA5ODMzNjMsIDY3NTcsIDY0MzUxLCAKLSAgICAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNjQsIDYxNDYsIDAsIDc3MSwgOTgzMzY1LCAwLCAxMjgxMiwgCisgICAgMCwgNzEzMDEsIDk4Mzg1MywgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzODMsIAorICAgIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzYzLCA4MDgwLCA3MDA2LCAwLCA5ODMzNjQsIDY3NTcsIDY0MzUxLCAKKyAgICAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNjUsIDYxNDYsIDAsIDc3MSwgOTgzMzY2LCAwLCAxMjgxMiwgCiAgICAgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAKICAgICAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc2NCwgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIAogICAgIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgCkBAIC0xNzI4NiwxMSArMTcyODgsMTEgQEAKICAgICAxMTg5MjgsIDExMTgsIDcxMzM0LCAwLCAwLCAxMDgxLCA3NDM2LCA2ODQyMCwgNzI1MiwgMCwgNTk5NiwgNjk5MjEsIDQ5MDMsIAogICAgIDAsIDQxMzg2LCA1MTYyLCAxMTkxODksIDEzMzAsIDAsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgCiAgICAgNjMyNCwgNDE5NzUsIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3MzIsIDEyNzE1LCA2ODAwMiwgCi0gICAgOTgzNDcxLCAxMjY2MzAsIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDkyNDY0LCAwLCAKKyAgICA5ODM0NzIsIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIAogICAgIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgCiAgICAgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIAotICAgIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzc5LCAwLCA0MjI3OSwgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCAKLSAgICA5ODMzNzYsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCAKKyAgICAxMTk2MDcsIDMxMTcsIDU0NjAsIDAsIDAsIDk4MzM4MCwgMCwgNDIyNzksIDE5NDU3NywgMCwgNzg0MTUsIDAsIDE5NTAwOCwgCisgICAgOTgzMzc3LCAxMzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2MywgMCwgMCwgMCwgMCwgMjQ4MiwgMTQ3MSwgMCwgMCwgCiAgICAgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDAsIDEyMzc0LCAwLCAwLCAwLCA5ODM2ODUsIDI0NjAsIDAsIDExOTQ0LCAKICAgICAxMjM3NiwgMTI3ODY4LCA2NDY3OSwgMCwgMTIzODAsIDEwNTU3LCA2NDQ3MywgNTg3MCwgMCwgMjAyNCwgMTI3MTgwLCAwLCAKICAgICAwLCA1MzksIDAsIDEyNzc2NSwgOTQwNTIsIDM4NTMsIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgCkBAIC0xNzI5OCwyMCArMTczMDAsMjAgQEAKICAgICA2OTYzMywgMTIwMDg5LCAxMjQ3MCwgMCwgNzQxODksIDI3NDIsIDEyNDc2LCAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgCiAgICAgMCwgOTgzNTc5LCAwLCA2OTY3MiwgODIxMywgNzQwMTcsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAwLCA3ODg4NSwgCiAgICAgOTgzNjk5LCAxMjc5NzEsIDEyMDU4MiwgNzg1NDcsIDAsIDEwMzAxLCAxMDMzMywgMTAzOTcsIDAsIDAsIDczNzkxLCAwLCAwLCAKLSAgICAwLCAwLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgOTgzMjU2LCAwLCAKKyAgICAwLCAwLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgOTgzMjU3LCAwLCAKICAgICAxMjIxMCwgNzIyMSwgNDIxNDcsIDAsIDc0NTUwLCA3NDQ2NSwgNjQ3NDcsIDExODg0MSwgMCwgMTI1MTYsIDQ0NDQsIDAsIAogICAgIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIDM1OTEsIDQxOTY5LCAwLCAKICAgICAyNDUzLCAxMjg1NDksIDkyNjY2LCA2NDcwNSwgMCwgMCwgMTAzNDksIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIAogICAgIDc0MzUzLCAwLCA4MzE2LCAwLCAwLCA5NDA2MCwgNjg3LCAwLCAwLCAwLCAxODQwLCAwLCA2ODY3MSwgMTE5ODA5LCA0ODgzLCAKICAgICAyODUsIDQ3MjMsIDcwMDk5LCA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIAotICAgIDQyMzIzLCAwLCA5NzQzLCAxMjAyMzIsIDEzMTM0LCAxMjY1MzUsIDAsIDAsIDAsIDAsIDQyNjM0LCA5ODMzMzUsIDQzNDM3LCAKKyAgICA0MjMyMywgMCwgOTc0MywgMTIwMjMyLCAxMzEzNCwgMTI2NTM1LCAwLCAwLCAwLCAwLCA0MjYzNCwgOTgzMzM2LCA0MzQzNywgCiAgICAgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMCwgMTA0NDUsIDAsIDAsIDY2NzE3LCAyNjE0LCA5MTI1LCAxMTkwMjMsIDE3MjksIAogICAgIDAsIDEyMDIzNiwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDAsIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIAogICAgIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3NDE4MiwgCiAgICAgMTI3OTE1LCA2NDMsIDMwODYsIDAsIDQyNDQ4LCA0MjI5OSwgNTgsIDAsIDkxNzk1MiwgMTIwMDgzLCA2Mzg3MywgODQ5MSwgCiAgICAgMCwgMCwgMCwgNDUzMCwgNDI0MDksIDcxMjYsIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAxMTkwOTYsIDE5OTI5LCAwLCAKICAgICAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIAotICAgIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzIzMiwgNTUyODAsIDQyMTc0LCAKKyAgICAxMDc0MCwgMzA5NCwgMCwgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCA5ODMyMzMsIDU1MjgwLCA0MjE3NCwgCiAgICAgMTk0OTI1LCA0MjQzMCwgMCwgMCwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCAwLCA2NjY2NywgCiAgICAgMTI3MzA5LCAwLCAxMjY1MjEsIDQyMjAwLCA0MjU2NiwgMCwgMCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIAogICAgIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAKQEAgLTE3MzM3LDcgKzE3MzM5LDcgQEAKICAgICA5MTc3NzYsIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA5ODM4MjYsIAogICAgIDkxNzc4MiwgNTk5OSwgMCwgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDAsIDgyMTIsIDAsIAogICAgIDEyODAxNCwgNDI0MjMsIDExOTA2NiwgMCwgMTI4MTA4LCA2NjcwOSwgMCwgODgxMSwgOTI3LCAwLCAwLCAxMjQzNiwgCi0gICAgOTgzMjM5LCA0MjAyMSwgMCwgMCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAwLCA3ODE5NywgCisgICAgOTgzMjQwLCA0MjAyMSwgMCwgMCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAwLCA3ODE5NywgCiAgICAgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCA5ODMxODQsIDAsIDE5OTE0LCAxMjE3OSwgOTgzODAzLCAyMjk2LCAxOTQ5MjMsIAogICAgIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIDI1OTQsIDM0NDQsIDYzODE3LCA2NDY1MSwgMCwgNDE1MDMsIAogICAgIDEyNzQ3OCwgMTEyNjUsIDAsIDEyMDc1NiwgMTk0OTIyLCAwLCA1NjY0LCAzOTcyLCAwLCAwLCAwLCAxMjg1MDgsIDEyNDE2LCAKQEAgLTE3MzQ4LDcgKzE3MzUwLDcgQEAKICAgICA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgCiAgICAgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCAKICAgICA2ODY1MSwgMCwgOTgzODg2LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIAotICAgIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCA5ODMyMzUsIDMwMTQsIDUwODEsIDY1ODUzLCAKKyAgICAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDEyMDE4NCwgODUxOSwgOTgzMjM2LCAzMDE0LCA1MDgxLCA2NTg1MywgCiAgICAgMTIwNzE1LCAwLCA2ODAxNCwgNjk5NTEsIDUwNzksIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIDExODI4LCAxMjAxODUsIAogICAgIDEyMzcxLCAwLCA4NDA3LCAwLCAxMDgwNSwgODUxOCwgMTA3NzksIDEyMDE4OCwgNzEzMDMsIDk4MzkyNCwgMTIzNjcsIAogICAgIDQyMTcwLCAwLCA5MjU1NywgNjI5LCAxOTI0LCAwLCAxMjAzNywgNzQzNjYsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCAKQEAgLTE3NDAwLDcgKzE3NDAyLDcgQEAKICAgICA5NTk0LCAwLCAwLCA0MzUyNywgMCwgNzI3LCAxOTQ3MDMsIDE5NTAyMywgNTgwNSwgMCwgNjcyNiwgMCwgNDIxNzYsIAogICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgMCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCAwLCA5MjM0MywgMCwgCiAgICAgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAwLCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgCi0gICAgMTIwMzA2LCA2ODQ3NCwgOTI0NzMsIDAsIDk4MzMwNSwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIAorICAgIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCA5ODMzMDYsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCAKICAgICA2Mzk2NSwgMCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgCiAgICAgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCAwLCA4Nzc0LCAwLCAxMjcwODYsIDk5NDEsIDEyMDE3MiwgMCwgMTkzMywgCiAgICAgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgMCwgMjQ4NywgNjc2MTQsIDMxMjEsIDE4MDQsIDMzMTEsIDY3NjE1LCAKQEAgLTE3NDUyLDcgKzE3NDU0LDcgQEAKICAgICA2NDQzNiwgMzYwMSwgMTk1MDk0LCAxMjgwNzMsIDk4MzU2MiwgNjA5LCAxMTU1NSwgOTgzMDk5LCAxMjQ5NiwgMTI3ODM5LCAKICAgICA3NDE4MSwgNDM0MywgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgCiAgICAgMCwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIDEyNjk2LCAxMjgyNTYsIDAsIDk0MDYyLCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCAKLSAgICA5ODMyMDQsIDQyODE4LCAxMjY2MzIsIDAsIDEyMDQ5MCwgMCwgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMCwgOTI0OTEsIDAsIAorICAgIDk4MzIwNSwgNDI4MTgsIDEyNjYzMiwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCA5MjQ5MSwgMCwgCiAgICAgMTI2NTEsIDAsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKICAgICAxMTg4NDQsIDAsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAKICAgICAwLCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCAKQEAgLTE3NDg1LDcgKzE3NDg3LDcgQEAKICAgICA2NjQ4OSwgMjI0LCAwLCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCAwLCAzODQxLCA2ODYzNCwgMCwgCiAgICAgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDAsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCA5ODM3MDksIAogICAgIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgMCwgMTE5NjIsIDE5NDY5NCwgMTI1MDcsIDExOTYsIDEyODY4NywgMTI4MzExLCAKLSAgICA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgMCwgNjQ4MjQsIDExOTM0MywgOTgzMjMwLCAKKyAgICA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgMCwgNjQ4MjQsIDExOTM0MywgOTgzMjMxLCAKICAgICA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDc4MDAwLCAyNzA1LCA5MTc5NzUsIDQxNTIwLCAwLCAwLCAxMTk4NiwgNzc2NSwgCiAgICAgNDI1MDIsIDgyODAsIDc0NTIwLCAyNzAxLCAwLCAxMjcwMDIsIDU3NjcsIDAsIDAsIDk4MDksIDgzNTMsIDYzNzQ3LCAKICAgICA2NjcwMSwgNjM3NzIsIDk4MzgwNSwgNjM3NDUsIDE3NDgsIDYzNzcwLCAwLCAwLCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAKQEAgLTE3NDk1LDcgKzE3NDk3LDcgQEAKICAgICAxMDk5NiwgOTIyNDcsIDE5MjIsIDAsIDEyNDk4LCAxMDk4NywgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMCwgCiAgICAgMTk0ODQyLCA5ODM1ODgsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIAogICAgIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgMCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIAotICAgIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCA3ODIxOSwgOTgzMDgxLCAxMTYxMSwgMTE2MzIsIAorICAgIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCA3ODIxOSwgOTgzMDgxLCA4Mzc4LCAxMTYzMiwgCiAgICAgMTI3MDQxLCA2NjIxMywgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIAogICAgIDY2MjM2LCA2NjIxMSwgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIAogICAgIDY2MjM0LCAxMTYwNSwgNjM3NTksIDk4MzY0NSwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIApAQCAtMTc1MTUsNyArMTc1MTcsNyBAQAogICAgIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc2OSwgOTM3MiwgCiAgICAgMTI0NDQsIDAsIDAsIDEzMDE2LCA4MjEwLCA5ODM5NDksIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgCiAgICAgODc0NCwgNzI2LCAwLCA5ODM4MjgsIDQxNTUsIDAsIDAsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIAotICAgIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgOTgzODMyLCAxMjUyNSwgOTgzNDYzLCAxMjAxNiwgNjU3NzAsIAorICAgIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgOTgzODMyLCAxMjUyNSwgOTgzNDY0LCAxMjAxNiwgNjU3NzAsIAogICAgIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIAogICAgIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgMCwgMTI1MDYsIDAsIDEyMjMxLCAwLCAxMjUwMCwgCiAgICAgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCA0MTA0NywgMTIwMzIxLCA3ODM5NSwgCkBAIC0xNzU1Nyw3ICsxNzU1OSw3IEBACiAgICAgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgCiAgICAgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDEyNjU5NiwgMCwgMTE5OTMzLCAKICAgICAwLCAzMTE1LCA5OTE4LCAwLCAxMTMyMSwgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAKLSAgICA5ODMyNjYsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgCisgICAgOTgzMjY3LCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIAogICAgIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCAwLCAxMTkwNzEsIAogICAgIDcwMjUsIDYzOTc0LCAwLCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgNTY2MiwgNDIzODIsIAogICAgIDE5NDY4NiwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIDY0NzUyLCA0NzMyLCAKQEAgLTE3NTg3LDcgKzE3NTg5LDcgQEAKICAgICA2MTUzLCAyODY3LCAxOTQ3MDgsIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzAwMTcsIDE5NDcxMywgCiAgICAgNjUxLCAxMjY0MSwgMCwgMCwgMCwgMCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCAKICAgICA3ODQ2MSwgMTk0Njk3LCA3NDM1NiwgNjQ5NDUsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgCi0gICAgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCA5ODM0ODcsIDEwMTAxLCAwLCAKKyAgICAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgMTIwNjc2LCA4NzAzLCA1NDYyLCA5MTc2MjksIDk4MzQ4OCwgMTAxMDEsIDAsIAogICAgIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgMCwgMCwgNjYyNTQsIDEyMDgyMSwgMCwgMCwgMTI4NjU0LCAwLCAxMTkxOTQsIAogICAgIDc0MDUwLCA5MjcwMSwgMCwgMCwgMCwgMCwgMCwgMTIyNzgsIDAsIDAsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgMCwgCiAgICAgMCwgMjY5OSwgMCwgNzM4NDUsIDI5ODUsIDkyNTY4LCAxMjY0NzUsIDkxNzg0NSwgMTIxOTIsIDExOTMxNCwgMCwgMTE5MzEyLCAKQEAgLTE3NjAyLDggKzE3NjA0LDggQEAKICAgICA5NjMyLCA5MjMyMywgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDAsIDAsIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCAKICAgICA3MTMyNSwgMCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgCiAgICAgMTI3MzAsIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAxMjAxNjEsIDAsIDAsIDQxOTM0LCA3NDY1LCAwLCAKLSAgICAxMjgxNjgsIDk4MzI2MCwgNDcxNSwgNjEwMSwgOTQxMDYsIDQxOTM2LCAwLCA0ODc5LCAwLCA2NTQ0NiwgMCwgMzA3LCAKLSAgICAxMjcxNDcsIDk1ODUsIDUzNzQsIDk4MzI1OSwgMTI4MDU5LCAwLCAwLCAxMjY2MTgsIDEyMDM5MCwgMCwgNjU1NjcsIAorICAgIDEyODE2OCwgOTgzMjYxLCA0NzE1LCA2MTAxLCA5NDEwNiwgNDE5MzYsIDAsIDQ4NzksIDAsIDY1NDQ2LCAwLCAzMDcsIAorICAgIDEyNzE0NywgOTU4NSwgNTM3NCwgOTgzMjYwLCAxMjgwNTksIDAsIDAsIDEyNjYxOCwgMTIwMzkwLCAwLCA2NTU2NywgCiAgICAgMTIwNjE0LCAxOTI5LCAwLCAxMjE0MiwgMCwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDE5NDYyMywgCiAgICAgNTM3OCwgNzg3OTEsIDEyODY3OSwgNDE0MjEsIDAsIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIAogICAgIDU4MDAsIDEyMDE1NywgOTgzMTE1LCAxNzYwLCAyNDIxLCA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIApAQCAtMTc2MjAsNyArMTc2MjIsNyBAQAogICAgIDc3OTUwLCAxOTQ1NzgsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDE5NDU4MiwgMTE0MTQsIDEyODg2OCwgMjUzMSwgMTMwMzQsIAogICAgIDAsIDAsIDQyMTEsIDEyNTksIDc1MTcsIDAsIDAsIDE5NDU2MSwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIAogICAgIDk0MDM0LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgMCwgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgMTI4MTUzLCAKLSAgICAwLCA2NDA5OCwgNjU3OTMsIDQ1MzUsIDE5NDU3MywgNDI3MSwgNzg0MTcsIDEyODM1NywgNjc2OSwgNDE0MTAsIDk4MzQ0NCwgCisgICAgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAxOTQ1NzMsIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCA5ODM0NDUsIAogICAgIDY0MjYyLCA2NzY3LCA0MTQwNywgMCwgMCwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjc5MzQsIDEyNjYwOCwgMCwgMCwgMCwgMCwgCiAgICAgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCA2OTg5NSwgCiAgICAgMTEyNzAsIDAsIDAsIDExOTMzLCAwLCAwLCA0MTkwMywgNDM0NDcsIDExMDAxLCAwLCA0MjI1NSwgMCwgOTI2NjEsIDY5ODIxLCAKQEAgLTE3NjUwLDcgKzE3NjUyLDcgQEAKICAgICAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAwLCAwLCAxNDk0LCA5ODMxNDYsIDEyNjYxMywgMCwgCiAgICAgMTE2OTMsIDEyNjUxMywgMTA0OTQsIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAwLCAwLCAwLCAwLCA2NDU4MiwgMCwgCiAgICAgNzM3OTQsIDAsIDgwMjIsIDAsIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA5NDA2OSwgOTE3OTk0LCA5MTc5OTMsIDkxNzk5NSwgCi0gICAgNTU3MCwgMTg4MSwgNzIxMCwgMCwgMTAxMiwgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIDU1NjksIDk4MzIzNiwgCisgICAgNTU3MCwgMTg4MSwgNzIxMCwgMCwgMTAxMiwgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIDU1NjksIDk4MzIzNywgCiAgICAgNDIzMzksIDAsIDYwNjMsIDAsIDc4MzgzLCAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCA5MjIwMSwgNjQ3MjcsIDkxNjAsIAogICAgIDE5NDgyNywgMCwgMCwgOTIxODAsIDEwNTAzLCAxMTg4MTAsIDYwNTUsIDM4NzAsIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgCiAgICAgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCA5ODMxMTYsIDAsIDEyMDExOSwgNzgzMzMsIDEyMDExNywgCkBAIC0xNzY1OCw3ICsxNzY2MCw3IEBACiAgICAgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgMTIwMTAxLCA1ODksIDcwNTAsIDk4Mzc5MSwgNDMyODEsIAogICAgIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIDAsIDE5NDgxNSwgODU4MywgCiAgICAgMCwgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCAKLSAgICA0MjU2MSwgMTIwNjI2LCA5ODMyNDUsIDAsIDgxMjAsIDEyMDcwMSwgMCwgMCwgMTI4MDEyLCA0MTA2MywgMCwgMTA2NjQsIDAsIAorICAgIDQyNTYxLCAxMjA2MjYsIDk4MzI0NiwgMCwgODEyMCwgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgCiAgICAgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAwLCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIAogICAgIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA5ODM2NjIsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgCiAgICAgMCwgNzc5NzAsIDk4MzU2MCwgMCwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCAKQEAgLTE3NjgxLDcgKzE3NjgzLDcgQEAKICAgICA3Mzg5OCwgMTE5NzksIDcwMDUxLCAxMTg5MDAsIDkxNzg5NCwgMCwgOTYzNSwgMTI2MDAsIDg4NzEsIDAsIDAsIDAsIDY0NjksIAogICAgIDc0MjI3LCAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgMCwgMCwgMCwgMCwgCiAgICAgNDI5MTYsIDAsIDAsIDAsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgMTI3MTM4LCAxMjgwODIsIDM0OTQsIDc0NjA2LCAKLSAgICA2NTU1LCAwLCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzIzOCwgNjUzMTIsIDU0NDcsIDAsIAorICAgIDY1NTUsIDAsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgOTgzMTg5LCA2NTg5OCwgOTgzMjM5LCA2NTMxMiwgNTQ0NywgMCwgCiAgICAgMTI4OTUsIDY1NTkzLCA0MDEwLCAwLCA0MTEwNiwgMCwgNjQ0NDgsIDAsIDQxMTA1LCAwLCA2NTgyMCwgNjIzMiwgMCwgCiAgICAgMTI4MjgwLCAwLCA0MzYwOCwgMTE5MDkxLCAwLCA2NTM4LCA0MzM1LCA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCAKICAgICA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NjUsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIApAQCAtMTc2OTUsOSArMTc2OTcsOSBAQAogICAgIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgCiAgICAgOTIyMzAsIDAsIDYxMjksIDAsIDEyODUyOCwgMTI4MjY4LCAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCAKICAgICA3MDEwMiwgNjM4ODYsIDExODg4MSwgOTYwNSwgNzEzMDgsIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgCi0gICAgMCwgMCwgMCwgNTI0MCwgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDk4MzM0MywgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MjQwLCA5ODExLCAxMDAxMiwgMzA5NiwgMCwgMCwgOTgzMzQ0LCA2NjY3NiwgNjU4NzMsIDAsIDAsIDAsIAogICAgIDk1MDEsIDAsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgCi0gICAgMCwgOTE3ODEyLCAwLCAxMTg4OTksIDEyMTkzLCAwLCAwLCAwLCAwLCA5ODMzNDUsIDE5OTM1LCAwLCA5MjE2MiwgNjk2NzYsIAorICAgIDAsIDkxNzgxMiwgMCwgMTE4ODk5LCAxMjE5MywgMCwgMCwgMCwgMCwgOTgzMzQ2LCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAKICAgICAwLCAwLCAwLCA1Mjc1LCAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIAogICAgIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkwMiwgOTUzNywgMzk2MSwgMTIxMTUsIAogICAgIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAxMTY2NywgNDI2ODYsIDc3OTczLCAKQEAgLTE3NzQ4LDE0ICsxNzc1MCwxNCBAQAogICAgIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCAKICAgICA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAxMDQ3MCwgMCwgCiAgICAgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAwLCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCAKLSAgICA0NDAwOSwgNzgyODQsIDY2MzM4LCAwLCAwLCAxODM5LCAxMTg3OTksIDk4MzIxNywgMTA5MjcsIDE3MDEsIDk4MzY1NSwgCisgICAgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgMTE4Nzk5LCA5ODMyMTgsIDEwOTI3LCAxNzAxLCA5ODM2NTUsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA0MTc1OCwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCAKICAgICA5MjQ5MywgNzg2NzcsIDAsIDkyNDI5LCA3ODE3NCwgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgMCwgNjU4MTIsIAogICAgIDkxNzgzMSwgMCwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDE5NDgwMCwgMTk0ODAzLCA0MjcwMCwgMTk0ODA1LCAxMjc5ODAsIAogICAgIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDAsIDAsIDQ0OTMsIDQzMzYsIDAsIDIzMTQsIDQzNjAyLCA3ODgyNiwgCiAgICAgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCA0NDg5LCA3MTMzMSwgMCwgMTk0NzkzLCAxOTEyLCAKICAgICA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAwLCA4ODY3LCAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDc4ODIxLCAxNDEwLCAKLSAgICA5MjY3MSwgOTgzMjQ0LCAxMTg4NzgsIDAsIDAsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjc5NzUsIAorICAgIDkyNjcxLCA5ODMyNDUsIDExODg3OCwgMCwgMCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgCiAgICAgNzgxODgsIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIAogICAgIDIwNzksIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDEyNjU3MywgMzY2OCwgCiAgICAgNjU3NTQsIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgCkBAIC0xNzc2NSw3ICsxNzc2Nyw3IEBACiAgICAgNDI4MDksIDQyODA3LCAwLCAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgCiAgICAgMjM2MCwgNDE3OTQsIDkxNzk0MiwgNzEzMTQsIDEyNzgxOCwgMCwgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCAKICAgICA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIAotICAgIDU1Mjg0LCA5MjIwMywgMCwgMTAzODQsIDk4MzIxOCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCAKKyAgICA1NTI4NCwgOTIyMDMsIDAsIDEwMzg0LCA5ODMyMTksIDAsIDAsIDc3NTMsIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgMCwgCiAgICAgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDAsIDQzNTQ5LCA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAKICAgICAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgNjUwNDUsIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDAsIAogICAgIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDAsIDAsIDAsIDQxODg3LCAwLCAKQEAgLTE3Nzc2LDcgKzE3Nzc4LDcgQEAKICAgICA3ODE2NywgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCAKICAgICA3MzkwMiwgNjk3NDAsIDAsIDAsIDk5NzUsIDEyODAzOSwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCAKICAgICA3NDQ0MSwgNzg4MTAsIDAsIDAsIDY3OTg3LCAwLCAwLCAwLCA2Nzk4OSwgMCwgMTAwNjUsIDgyMDcsIDAsIDkyNjEzLCAKLSAgICAxMjgwMTEsIDAsIDY2MiwgMCwgOTI0NCwgMTk0ODYzLCAwLCAxMTkyNjEsIDk4MzQyMCwgMCwgMCwgMCwgNDE5MjksIDAsIDAsIAorICAgIDEyODAxMSwgMCwgNjYyLCAwLCA5MjQ0LCAxOTQ4NjMsIDAsIDExOTI2MSwgOTgzNDIxLCAwLCAwLCAwLCA0MTkyOSwgMCwgMCwgCiAgICAgNjY2NzQsIDQxOTI2LCAxMjA0MDgsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIAogICAgIDY0NzUsIDAsIDEyMDM0MSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMCwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAwLCAKICAgICA5MTc5NDUsIDEyNzgyMywgMTE1ODIsIDEyMDc2MSwgMTIyODEsIDAsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIApAQCAtMTc3ODYsNyArMTc3ODgsNyBAQAogICAgIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgCiAgICAgNjU1MTQsIDAsIDYzOTQwLCAxMjg3MDYsIDY0NTMzLCAxMjAxMjksIDAsIDY3ODQyLCAxMTk5MCwgOTI0MzAsIDYzOTM5LCAKICAgICA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTgzOTAxLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIAotICAgIDk4MzM1MywgNzQyOTQsIDk4MzkwNSwgNjkyMzksIDAsIDExOTAyNywgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA5MjU3NCwgCisgICAgOTgzMzU0LCA3NDI5NCwgOTgzOTA1LCA2OTIzOSwgMCwgMTE5MDI3LCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDkyNTc0LCAKICAgICAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCAwLCAwLCAwLCAKICAgICA2MzkyMCwgNzQxMjgsIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCAxMjY5ODYsIDY1ODU4LCAwLCAwLCAwLCA3ODk5LCAwLCAKICAgICA4NDE3LCA0Mzc5OCwgNzA3MiwgMCwgMCwgNDAzMywgMTI4MTY0LCA0Mzk5MiwgMCwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCkBAIC0xNzc5NywxMyArMTc3OTksMTMgQEAKICAgICAxMjYyNCwgMCwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIAogICAgIDExOTU5OCwgOTgyMCwgMCwgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgMCwgMCwgMCwgMCwgCiAgICAgNzQ4MjYsIDY0NzMzLCAwLCAwLCAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgCi0gICAgOTI0ODMsIDc1MTQsIDk4MzM1OSwgMCwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIAorICAgIDkyNDgzLCA3NTE0LCA5ODMzNjAsIDAsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAKICAgICAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDkzOTkxLCAKICAgICAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCAwLCA5MjMwMSwgMCwgODg5NSwgCiAgICAgNTI1MywgNzAwMjUsIDU0NTgsIDAsIDI4NjYsIDAsIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIAogICAgIDEyMDU4MywgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NjgsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCAKICAgICA2MzgyNiwgNjc5NzAsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgOTgzNjc4LCAyODQ0LCA5ODM5MzIsIDQxOTc0LCAwLCAKLSAgICAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIDE5NDc2NSwgOTgzMjI3LCAKKyAgICAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIDE5NDc2NSwgOTgzMjI4LCAKICAgICA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgOTgzMDcwLCAwLCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgCiAgICAgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIDY1OTAzLCAKICAgICAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIDY1MjcwLCAwLCAKQEAgLTE3ODY0LDcgKzE3ODY2LDcgQEAKICAgICA5Mzk5OCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgODg4OSwgMCwgCiAgICAgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgOTgzNzk2LCA3NDM2NSwgNzU1MiwgMCwgMCwgCiAgICAgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCi0gICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCA5ODMyODUsIAorICAgIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCAwLCAwLCAzOCwgODUzMywgNjY2NjksIDExOTEyNCwgOTgzMjg2LCAKICAgICA5ODM3ODMsIDAsIDQzNTcsIDAsIDExOTgzNywgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIDQyODYwLCAxMTk4MzgsIAogICAgIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgMCwgMTE5MzI0LCAwLCAxMTAxNCwgMTI3OTcyLCA4OTQyLCAxMjAwMCwgNjkyMjQsIAogICAgIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA5MjIxMywgNDI3NzIsIDEyNzUxOCwgMTE2NTAsIDUwMTMsIDkyNjYzLCAxMjY1ODMsIApAQCAtMTc4ODIsNyArMTc4ODQsNyBAQAogICAgIDQxODY5LCAxMjYxOSwgMCwgMTAxNTQsIDk4MzA0MywgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgCiAgICAgNDU4LCAxMjA2MjAsIDAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCA5ODMxMzMsIAogICAgIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCAKLSAgICA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgOTgzNDIzLCAwLCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCAxMjgxOTIsIAorICAgIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCAwLCA5ODM0MjQsIDAsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDEyODE5MiwgCiAgICAgNDEyNzcsIDY0NjU4LCAwLCA2NDM4MCwgNjYyNSwgNzQzNTQsIDE5OTA0LCAwLCAwLCAwLCA2NTM3MSwgNzA3OCwgMCwgODMzLCAKICAgICAwLCA2MzY5LCAwLCAxMDk3OSwgNDE5NTMsIDAsIDQxNDM0LCA2MDYyLCAwLCAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCAKICAgICA5ODQyLCA2NzIwLCA2NTc0NCwgMCwgOTgzNTkyLCAxMjgyOTUsIDAsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIApAQCAtMTc4OTcsNyArMTc4OTksNyBAQAogICAgIDY3NDEsIDQzMDQ3LCAwLCAxMzE4MCwgMTI4NTE3LCA0MTgsIDkxNzk3MiwgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIAogICAgIDQxNzUyLCA3NDMzOSwgODY0MSwgNDE0NDksIDAsIDc0MTAwLCAwLCAxMDkxMSwgNjk0MiwgMCwgMTAyNCwgNDI4NDksIAogICAgIDQxNzUxLCA2OTc3NiwgODk0MSwgOTgzNTU2LCA0NTU0LCAwLCA5MDIzLCAxMTY4NSwgMCwgOTkyOCwgNzg2MTcsIDAsIAotICAgIDExNDM3LCA0Mzc0MSwgOTIxNjMsIDEyMDcwMCwgNjM5NjcsIDk4MzQ3NSwgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIAorICAgIDExNDM3LCA0Mzc0MSwgOTIxNjMsIDEyMDcwMCwgNjM5NjcsIDk4MzQ3NiwgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIAogICAgIDQzMTY2LCAwLCAxMTY4MCwgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMCwgCiAgICAgOTIxODMsIDY0NTIzLCAxMDM0MywgMTA0MDcsIDAsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIAogICAgIDEyMDUwLCA2ODIwMSwgMjg2MCwgMCwgMCwgMCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDAsIDkyMzQyLCAKQEAgLTE3OTEzLDcgKzE3OTE1LDcgQEAKICAgICA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAxMjc4ODAsIDY4Mzk5LCA0Mzk5OCwgCiAgICAgMTEzNjAsIDAsIDAsIDAsIDExODgyNiwgNDIxNDksIDAsIDAsIDAsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDAsIAogICAgIDU1MjQ3LCA0MTEwLCA2NjAwNSwgNjk1OSwgMTA5MjksIDExOTExMCwgMCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgCi0gICAgNjAyNSwgNjkyNDIsIDk4MzE3NiwgMCwgMCwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNjgsIDEwMTE3LCA5ODMxNjksIAorICAgIDYwMjUsIDY5MjQyLCA5ODMxNzYsIDAsIDAsIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzY5LCAxMDExNywgOTgzMTY5LCAKICAgICA5MjI5NywgNDE2MzYsIDAsIDAsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAwLCA2NTY2OSwgMTI4MzM5LCA0OTYzLCAwLCAKICAgICAxMjc1MTcsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCAwLCA0MTk0OCwgMCwgMCwgMCwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAKICAgICAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyODIxMCwgNDE3NjYsIDExOTExNCwgNjU4ODIsIDc4ODQ5LCAKQEAgLTE3OTI4LDE1ICsxNzkzMCwxNSBAQAogICAgIDEwNzE2LCAwLCA0MjgyMiwgMCwgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIAogICAgIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAKICAgICAxMjY1MzcsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIAotICAgIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgNDMyMTksIDEyODcwOSwgOTgzNDUyLCAxMjE4NSwgMTI4ODc5LCA3MDA3MiwgCi0gICAgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgOTgzMzg5LCA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgCi0gICAgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIDAsIDk4MzQ1NiwgNTY3OCwgMTE4MjEsIDAsIAotICAgIDY3MTEsIDQ2MCwgMCwgMCwgOTgzNDUzLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIDAsIDk4MzQ1NCwgMCwgCisgICAgMCwgMCwgNzQyNjAsIDAsIDQyODU0LCA0MzIxOSwgMTI4NzA5LCA5ODM0NTMsIDEyMTg1LCAxMjg4NzksIDcwMDcyLCAKKyAgICA2ODM1NSwgNjgzNTcsIDAsIDQyODU2LCA4NjM0LCAwLCA5ODMzOTAsIDQyMDksIDEyMDcwMiwgMCwgNjU4NzksIDQxNTM4LCAKKyAgICA2NTYxMiwgMTI3NTQzLCA2NjksIDU2NzksIDAsIDY5Nzg2LCA5MjU0MCwgMCwgOTgzNDU3LCA1Njc4LCAxMTgyMSwgMCwgCisgICAgNjcxMSwgNDYwLCAwLCAwLCA5ODM0NTQsIDAsIDEyMDc0NywgMCwgMCwgNzgwNTAsIDExOTAyMiwgMCwgOTgzNDU1LCAwLCAKICAgICA3NzgyLCA5MDQ0LCA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI4MDc5LCAKLSAgICA1NzkyLCAwLCAwLCA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDAsIDU2ODMsIDk4MzM4NCwgMCwgNzgxMTksIDE1NDksIDAsIDAsIAorICAgIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgOTgzMzg1LCAwLCA3ODExOSwgMTU0OSwgMCwgMCwgCiAgICAgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCAxMjg1MTIsIDY5NzY4LCAxNDQ5LCAKICAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCA2ODAzMCwgNTU2NywgCi0gICAgMjcxNywgMCwgMCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTgzMjQ4LCAxMjgwMjYsIDAsIDY1NzA4LCAKKyAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5ODMyNDksIDEyODAyNiwgMCwgNjU3MDgsIAogICAgIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCiAgICAgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDAsIDY2NTk4LCAwLCA2NDY2NCwgMTA2NDcsIAogICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMTE5OTAzLCA4ODAyLCA3ODcxMCwgCkBAIC0xNzk1MCwxMiArMTc5NTIsMTIgQEAKICAgICAxMTk1NzAsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgCiAgICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgCiAgICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAotICAgIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCA5ODMyMTEsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCAKKyAgICAxOTAsIDAsIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgOTgzMjEyLCA5MjI2MSwgNjM3MCwgMCwgNzgyNywgCiAgICAgNjg0NDEsIDY5NjUsIDAsIDAsIDEzMjAxLCAxMjgyMDUsIDY5ODk2LCAwLCA3NDM4MiwgNzM3ODEsIDc5MTgsIDczOTg4LCAwLCAKLSAgICAwLCA5MTc4ODQsIDE3MjgsIDAsIDQzNzY0LCAxNzgsIDEyOTcyLCA5MjY3OSwgMCwgOTE3ODg3LCA5MjU2MywgOTgzMzczLCAKKyAgICAwLCA5MTc4ODQsIDE3MjgsIDAsIDQzNzY0LCAxNzgsIDEyOTcyLCA5MjY3OSwgMCwgOTE3ODg3LCA5MjU2MywgOTgzMzc0LCAKICAgICAwLCA3ODMyNywgMTIwNDA1LCA2NTY5MCwgMCwgMCwgMTE5MDU0LCAwLCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAKICAgICAwLCAwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDAsIDExNzYzLCA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMCwgNjk5MywgCi0gICAgMCwgMCwgODMzMywgMCwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMwNywgNjk5MTEsIDExOTEwLCAKKyAgICAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzA4LCA2OTkxMSwgMTE5MTAsIAogICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKICAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NDEsIDAsIDc0OTEsIAogICAgIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIApAQCAtMTc5ODIsMjcgKzE3OTg0LDI3IEBACiAgICAgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgCiAgICAgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNzc5MzEsIDE1MzYsIAogICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyNzE1NywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKLSAgICAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgOTgzMjk5LCA4MTM0LCAKKyAgICAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgOTgzMzAwLCA4MTM0LCAKICAgICAxMjgwMjgsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDAsIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIAogICAgIDY2NTg1LCA3MTI5NywgMzE5NiwgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCAKICAgICA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIAogICAgIDEyODc4MSwgNDExNjksIDg5MzksIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCAKLSAgICA0MTE3MiwgNzg1NSwgMCwgMCwgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzAwLCA2NDUsIDEyNjYxNiwgCisgICAgNDExNzIsIDc4NTUsIDAsIDAsIDEwNDgwLCAwLCAwLCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMwMSwgNjQ1LCAxMjY2MTYsIAogICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCiAgICAgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgMCwgMTI4MTQwLCA2ODQxNSwgOTgzMDkzLCA0NTM4LCAxMjA0MDYsIAotICAgIDQzMTQxLCAwLCA5ODMyMDgsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAorICAgIDQzMTQxLCAwLCA5ODMyMDksIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAogICAgIDk4MzE1OSwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAKICAgICAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCAKLSAgICA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCA5ODM0ODIsIDExOTU2NiwgMCwgMTI4MDgsIAorICAgIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDk4MzQ4MywgMTE5NTY2LCAwLCAxMjgwOCwgCiAgICAgMTIxODMsIDYxNDUsIDExODk1NSwgNjQ5MjksIDkyNDMzLCAwLCA5ODMxOTMsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCiAgICAgOTE4NywgOTgzNjE0LCAwLCAxMDE5MSwgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgMCwgNzEzNjYsIDY2NjgwLCAKLSAgICAxMjAwOTAsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCA5ODMyODksIDAsIDEyMDA4MiwgMTIwMDgxLCAxMjAwODQsIAorICAgIDEyMDA5MCwgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDk4MzI5MCwgMCwgMTIwMDgyLCAxMjAwODEsIDEyMDA4NCwgCiAgICAgNDEwMjcsIDEyMDA4NiwgMCwgMTIwMDg4LCA3MzY2LCA3MDE5LCAxMjAwNzMsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKICAgICA2NDY1NywgODY1NywgMTIwMDQ4LCA4NTk0LCAxMjAwNjgsIDAsIDAsIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIDAsIAogICAgIDQzMTU0LCA0MTAyOSwgMCwgMTEzMzIsIDY1MzgwLCA3NzI4LCA5NDA3NywgMTEyOTQsIDAsIDY2NjY1LCA3ODUxLCAwLCAKICAgICA4Mzc1LCA4Njk5LCAwLCA0MjUyNCwgMCwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIDEyODA5NSwgOTgzODU1LCAKICAgICAwLCA4MDg4LCAwLCA3NDAxMiwgOTI1MDAsIDAsIDQ0MzksIDY5MjYsIDk4MzA0NywgMTI5MjQsIDEyODIyNywgNDIzNjksIAotICAgIDQzNTAsIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMCwgMTEyOTYsIDk4MzI3NSwgMCwgMCwgCisgICAgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgOTgzMjc2LCAwLCAwLCAKICAgICA2NTgyNSwgOTU3NywgNjgxOTksIDAsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIAogICAgIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIAogICAgIDc4MDY5LCAxMjA4MDgsIDI1OSwgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMCwgNjUxMjUsIApAQCAtMTgwMTYsMTMgKzE4MDE4LDEzIEBACiAgICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAxMjg1ODQsIDEyNjIyLCAwLCAKICAgICAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDEyNjk4MywgNDI3MzEsIDY3OTcyLCAKICAgICAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCAKLSAgICA5NTEwLCA2NjIzNywgOTgzMjk0LCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAzNTA1LCA4NzA3LCAKKyAgICA5NTEwLCA2NjIzNywgOTgzMjk1LCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAzNTA1LCA4NzA3LCAKICAgICA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIDY2ODYsIAotICAgIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDk4MzI5OCwgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgCisgICAgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgMCwgOTgzMjk5LCA5MjY5NiwgMCwgMCwgMCwgMTI4NTIzLCAzMjI1LCAKICAgICA5MTc5OTYsIDQ0MzMsIDQxMTU2LCA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDAsIDAsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIAogICAgIDY0ODc5LCA5MTc5NDksIDkxNzk1MCwgMTI3ODQ4LCAxMzIyNywgMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkxNzk1MywgCiAgICAgNDE0MTgsIDAsIDY1OTE0LCA2NzIxLCAyMTcsIDkxNzk1NSwgOTE3OTYwLCA5MTc5NjEsIDEwNDQzLCAxMDc4OSwgNDExNTgsIAotICAgIDExOTI1NywgNDI3NCwgOTgzMjkyLCA0MTQ4MywgMCwgNDEyNTAsIDAsIDQyMTc5LCAwLCA1OTMxLCAxMTc0NCwgNjkyMzIsIAorICAgIDExOTI1NywgNDI3NCwgOTgzMjkzLCA0MTQ4MywgMCwgNDEyNTAsIDAsIDQyMTc5LCAwLCA1OTMxLCAxMTc0NCwgNjkyMzIsIAogICAgIDAsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgMCwgMCwgNDM5NywgCiAgICAgMTI4MDM3LCAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTI4MDQ5LCAwLCA0MTQ4NSwgMzUxMSwgNDEyODIsIDU5MjMsIAogICAgIDEwNDAwLCAwLCAxMjg4MTgsIDc2MCwgMCwgMTIwODgsIDU3ODYsIDAsIDQyMjU2LCAxMTk4NjksIDExOTg2MCwgNDE3LCAKQEAgLTE4MDMyLDcgKzE4MDM0LDcgQEAKICAgICAxMTk1NzYsIDAsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDQyMDYzLCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAKICAgICAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMCwgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMCwgMTE5ODgwLCAKICAgICAxMDc2OSwgOTY3NiwgMTE5MDQxLCAwLCA5NzUzLCAwLCA4OTQ0LCAwLCAwLCAxMDQ3MywgMCwgMCwgNjA3MiwgNDMwMjUsIAotICAgIDEwMjk5LCAwLCAwLCAxMjA2MDgsIDY2MzI2LCA5ODM0MzksIDEyNzc5NCwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTAyOTksIDAsIDAsIDEyMDYwOCwgNjYzMjYsIDk4MzQ0MCwgMTI3Nzk0LCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKICAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCA5ODM3NzMsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCAKICAgICA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc3OTI4LCA3NDE0LCA3NzkyOSwgNDM5ODIsIAogICAgIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgCkBAIC0xODA2Myw3ICsxODA2NSw3IEBACiAgICAgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgMCwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgCiAgICAgMTI4MzUwLCA4NTk1LCAwLCA5MTc5NDcsIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgMCwgMTIzODEsIAogICAgIDM0ODgsIDU5MzMsIDEwMDMzLCA3MzczOCwgNjYyNDEsIDY1NTcwLCAwLCAxMjI5NywgMTE5MTUzLCAxOTU1LCAwLCA1MzQ5LCAKLSAgICA0MjUzOCwgMCwgMCwgNzQxMSwgOTQ2MiwgOTE3NTU0LCAwLCAwLCAwLCA0MjczNiwgMCwgNTc1NiwgOTgzMjE5LCA3NjM4LCAKKyAgICA0MjUzOCwgMCwgMCwgNzQxMSwgOTQ2MiwgOTE3NTU0LCAwLCAwLCAwLCA0MjczNiwgMCwgNTc1NiwgOTgzMjIwLCA3NjM4LCAKICAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCA3NDAzNywgMCwgNzM4MzIsIDEyODgyNywgMTIwNjM1LCAKICAgICAxMjgyMzEsIDc4MzM0LCAwLCA3NjM2LCA2NTE3MSwgOTEyNCwgMCwgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCAwLCAyMDI3LCAKICAgICA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgMCwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDQyNTEyLCAxMjA0MzEsIApAQCAtMTgxMTAsMTQgKzE4MTEyLDE0IEBACiAgICAgMCwgNDkxNiwgMCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgCiAgICAgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgOTE3ODk2LCAwLCA3OTQ2LCAxMjU0MSwgODE4MiwgCiAgICAgNjc1ODYsIDY5NzgwLCAwLCAwLCAwLCAwLCA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAwLCA2ODAxMSwgODg0NywgMCwgCi0gICAgNjU4NzYsIDU1MzUsIDgzMjksIDc0NTkwLCA5ODMyMDYsIDkyNjA5LCAwLCAwLCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIAorICAgIDY1ODc2LCA1NTM1LCA4MzI5LCA3NDU5MCwgOTgzMjA3LCA5MjYwOSwgMCwgMCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAKICAgICA5ODM4NDksIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgCiAgICAgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDAsIDY1MDExLCA0MTA5MCwgMCwgMCwgMTE4OCwgNzI1NCwgCiAgICAgMTEwMCwgMCwgMTI4MzAxLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY5NzkyLCAwLCA2ODAxOSwgMzU3MiwgMTAwMjMsIDQ5NTksIAotICAgIDEzMDc5LCAwLCA5ODMyNjgsIDk3MjksIDAsIDAsIDAsIDQzMzYxLCAwLCAwLCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIAotICAgIDEzMzA0LCAxMjgyOTAsIDEyNzI2MCwgNDE0NTEsIDAsIDExMDk1LCA4MjczLCAxMjc1MzMsIDM0NTEsIDk4MzMwMSwgOTcyLCAKLSAgICA0MTQ1MywgOTgzNDM0LCAwLCA3Mzg4MywgNjgwMjIsIDczOTQ1LCA5ODM3MjYsIDIyODgsIDE5OTU1LCA5NTM4LCAwLCAKLSAgICA2OTgwNywgMCwgMCwgMCwgMCwgMTEzOTYsIDk4MzQzMiwgMTEwMTksIDAsIDAsIDAsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIAorICAgIDEzMDc5LCAwLCA5ODMyNjksIDk3MjksIDAsIDAsIDAsIDQzMzYxLCAwLCAwLCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIAorICAgIDEzMzA0LCAxMjgyOTAsIDEyNzI2MCwgNDE0NTEsIDAsIDExMDk1LCA4MjczLCAxMjc1MzMsIDM0NTEsIDk4MzMwMiwgOTcyLCAKKyAgICA0MTQ1MywgOTgzNDM1LCAwLCA3Mzg4MywgNjgwMjIsIDczOTQ1LCA5ODM3MjYsIDIyODgsIDE5OTU1LCA5NTM4LCAwLCAKKyAgICA2OTgwNywgMCwgMCwgMCwgMCwgMTEzOTYsIDk4MzQzMywgMTEwMTksIDAsIDAsIDAsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIAogICAgIDI2MSwgNTkyNywgNzc5MSwgMCwgNzM2MiwgMCwgMTA2OTYsIDAsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgCiAgICAgOTM5OTUsIDI4MiwgMTI2NTEwLCA2NDM3LCA3NDA3OCwgMTI4MDAwLCA5ODAxLCAwLCA3NDE3NywgMCwgMCwgMzQ3NCwgCiAgICAgMTE4Nzg3LCAwLCAxMjA2NTUsIDYwODEsIDAsIDc4ODc0LCA3NDA3NiwgNzg4NzksIDAsIDAsIDAsIDAsIDAsIDg3NTEsIApAQCAtMTgxMzgsNyArMTgxNDAsNyBAQAogICAgIDQ1NjQsIDAsIDAsIDc0MjcxLCA3Mzc1MywgODM3NCwgOTgzMTU2LCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgMCwgCiAgICAgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCA3NDA3NSwgMTI3MjM2LCAxMjgwMTksIDQyNjE0LCAKICAgICA1MzUzLCA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDY5OTQyLCA2OTUyLCAKLSAgICA5ODMyNjQsIDEyMDc1MiwgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIAorICAgIDk4MzI2NSwgMTIwNzUyLCA3ODc2MiwgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAxMDQ3MSwgCiAgICAgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAyNDAwLCAKICAgICA1NjI3LCAxMjAwMTcsIDEyMDAxOCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAwLCAyMDMsIDAsIDAsIDAsIDAsIAogICAgIDc4MzUwLCAwLCA2NDM3OCwgNDIwNTQsIDAsIDAsIDU1NCwgMTE5NjQ5LCAxMTM1OCwgMCwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgCkBAIC0xODE3NSwxMCArMTgxNzcsMTAgQEAKICAgICA2MTIsIDAsIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDk4MzE2MywgMTIyODAsIDAsIDU0MCwgCiAgICAgNzQ1NjQsIDExOTAxNywgMCwgODQzMiwgMCwgMTEwNzMsIDAsIDY0MzE2LCAwLCAwLCA4MjAsIDQxNzQxLCAwLCAxMjA2NjcsIAogICAgIDAsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIDY5OTM0LCA2NTE3NywgNjIyNiwgMzUzLCAxMjM5NiwgMCwgMTE5NjEyLCAKLSAgICA2NDc0MiwgMTI4NjgyLCAxMjAyODIsIDAsIDk4MzQ0MiwgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDc4ODQ3LCAxODg0LCAKKyAgICA2NDc0MiwgMTI4NjgyLCAxMjAyODIsIDAsIDk4MzQ0MywgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDc4ODQ3LCAxODg0LCAKICAgICA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCAwLCAxMTk1LCA2NDg5OCwgNzkyNCwgMCwgNDExNTEsIDIwMTAsIDAsIAogICAgIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIDQzNjAsIDEyNzAwOSwgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDAsIAotICAgIDQyNTIxLCA4NTM5LCA5ODM3MTYsIDAsIDExODk4NiwgMCwgNDc4OCwgMCwgNjgwMjMsIDY1NzM0LCA5ODM0NDcsIDQzNzkwLCAKKyAgICA0MjUyMSwgODUzOSwgOTgzNzE2LCAwLCAxMTg5ODYsIDAsIDQ3ODgsIDAsIDY4MDIzLCA2NTczNCwgOTgzNDQ4LCA0Mzc5MCwgCiAgICAgMCwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCAKICAgICA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTE5NjE3LCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIAogICAgIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgOTE3ODM3LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCkBAIC0xODIxNCw3ICsxODIxNiw3IEBACiAgICAgNDE0NjEsIDEyODgyMywgMCwgMTI3OTEyLCAwLCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKICAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCAwLCAwLCA5MDk0LCAwLCAxMTc1OCwgNjg0MjUsIDAsIDEwNjQsIDQyNDY3LCAKICAgICAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDAsIDc4NjIsIDY0NTUxLCAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCAKLSAgICA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDk4MzI2MSwgMjkxMSwgMCwgNDExNzgsIDU0MjcsIDY0ODIzLCAwLCAwLCAKKyAgICA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDk4MzI2MiwgMjkxMSwgMCwgNDExNzgsIDU0MjcsIDY0ODIzLCAwLCAwLCAKICAgICAzNzg3LCA0MTE3NCwgMCwgNDE0NTgsIDAsIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIAogICAgIDY5OTIzLCA2MDc0LCA5NjE4LCAxMjg2NjgsIDk4Mzk0MywgNDM0NDAsIDAsIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDAsIAogICAgIDEyMDYwMCwgNDE0NTYsIDAsIDE1OTksIDExMzMzLCAwLCA2NzAzLCA4NTEzLCAwLCAxNjEzLCAwLCA2ODQ1NiwgMTI1OTgsIApAQCAtMTgyMzYsNyArMTgyMzgsNyBAQAogICAgIDQxMjg3LCA5MjYxMCwgMCwgMCwgNDIyMTksIDEyODI1NywgMCwgNDE5ODcsIDQxNjc2LCA5ODMwNTksIDEyMDgyMywgCiAgICAgOTgzMTQ0LCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAxMTQ1MSwgCiAgICAgOTgzMTExLCAxMjg4MjIsIDQyNjMxLCAyMzU5LCAwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgCi0gICAgNjQzNjgsIDk4MzIzMywgMTI4Nzk1LCAwLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCAKKyAgICA2NDM2OCwgOTgzMjM0LCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAogICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKICAgICAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIAogICAgIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzgxNDIsIApAQCAtMTgyNTAsNyArMTgyNTIsNyBAQAogICAgIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgNjYzMjQsIAogICAgIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAKICAgICAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAxMjAzNzEsIAotICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5MCwgNDMyMTYsIAorICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5MSwgNDMyMTYsIAogICAgIDYwODksIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCAKICAgICA3NDQsIDAsIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCA5ODMxNjIsIAogICAgIDY1MTM2LCAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgCkBAIC0xODI3Nyw4ICsxODI3OSw4IEBACiAgICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCiAgICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKICAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4MzkzOSwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKLSAgICA5ODMyNTIsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKLSAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNDYsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCisgICAgOTgzMjUzLCAwLCA3MDA3OSwgODQ2MSwgMTI4MTAyLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgCisgICAgNzU3MSwgMTMwNzMsIDAsIDAsIDY4MSwgOTgzMjQ3LCA3MDMsIDAsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAogICAgIDkyMjg4LCA3NDQ0NiwgMCwgOTI1MzIsIDAsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDAsIDAsIDY1OTI4LCAwLCAwLCA2NTAyMSwgCiAgICAgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCAKICAgICA5ODk1LCAxNjU1LCA3ODgxNywgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgOTgzMTIyLCAwLCAwLCAwLCAxMDAzOSwgMCwgCkBAIC0xODI4OCw3ICsxODI5MCw3IEBACiAgICAgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKICAgICA2NTExOCwgMCwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDAsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2MzksIDAsIDY1NDU1LCAKICAgICAwLCA5MjI0NiwgMCwgMTE5MTI5LCAwLCAxMjg4NiwgMTI3OTIwLCA2NjYyNCwgMCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgCi0gICAgMTAzOTYsIDc0MTM1LCA5ODM0NDUsIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgCisgICAgMTAzOTYsIDc0MTM1LCA5ODM0NDYsIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgCiAgICAgNDE0NzUsIDEyODY3MiwgOTM5NzUsIDAsIDExNDc5LCAwLCAxMjAzNTYsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIAogICAgIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgCiAgICAgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIApAQCAtMTgzMDQsOCArMTgzMDYsOCBAQAogICAgIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMTI4Mjg1LCA2NjQ0NywgODA0NiwgCiAgICAgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMCwgMTUyMSwgOTg5NiwgOTM5NjUsIDEwNDg3LCAKICAgICA2OTg3OCwgMTI1MjcsIDAsIDc5NzAsIDAsIDEyODY2MCwgMCwgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAKLSAgICA5ODMyMjksIDAsIDUyMzcsIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgMjI4MywgCi0gICAgOTgzMjMxLCAwLCAzMDA4LCA0ODk2LCAwLCAxMjA4NywgMCwgNTUyMzEsIDQxMTAzLCAwLCA2NDU2NSwgNDc3MywgMCwgCisgICAgOTgzMjMwLCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAorICAgIDk4MzIzMiwgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAogICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCiAgICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCiAgICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIApAQCAtMTgzMzMsNyArMTgzMzUsNyBAQAogICAgIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDAsIDY1MDk4LCA2MzY0LCA5NTYsIDAsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIAogICAgIDczNzM0LCAwLCAwLCAwLCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMCwgMCwgOTIyOTQsIAogICAgIDAsIDEwNDQsIDQxMjc2LCAwLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDAsIDAsIDAsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgCi0gICAgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDAsIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgOTgzNDQ2LCA3MDk4LCAwLCAKKyAgICAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCA5ODM0NDcsIDcwOTgsIDAsIAogICAgIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIAogICAgIDkyNTEwLCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzU3OCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIAogICAgIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgCkBAIC0xODM2NCw5ICsxODM2Niw5IEBACiAgICAgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDE5NDk5NywgMTIwMDA1LCAwLCA5ODM5NTcsIAogICAgIDUwODQsIDAsIDAsIDExODg2MSwgMCwgNzMzLCA5MTc4NzYsIDc4MDE0LCA3ODQzNiwgNzg0MzUsIDQxNjc3LCAwLCA5MjE4LCAKICAgICAxNzMxLCAwLCA5ODM3MzcsIDAsIDY3OTkwLCAwLCAwLCAwLCAxMjAwMDEsIDEyNzAxOCwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgCi0gICAgNTM1OCwgOTgzNzM1LCAwLCA5MTc3NjcsIDY0NDI0LCA5ODMyMjUsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMCwgNzgzMTUsIAorICAgIDUzNTgsIDk4MzczNSwgMCwgOTE3NzY3LCA2NDQyNCwgOTgzMjI2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDc4MzE1LCAKICAgICA2ODQzMCwgNjc5ODAsIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIAotICAgIDExNTgwLCAwLCA2NDYwMSwgMTIyMDUsIDAsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjc2LCAKKyAgICAxMTU4MCwgMCwgNjQ2MDEsIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI3NywgCiAgICAgOTgzNzEyLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMCwgMjU0NCwgNjUwNzQsIAogICAgIDExOTIxMSwgMCwgMCwgNzgwMTEsIDM1MSwgMTE5MTQ5LCAwLCAwLCA1NTIyOSwgMCwgNzQyNjgsIDAsIDAsIDAsIDQyMzc3LCAKICAgICAwLCAwLCAwLCA5ODM5MTUsIDAsIDkwMTMsIDQwNTQsIDAsIDk4MzU3MCwgMCwgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAKQEAgLTE4NDM5LDMzICsxODQ0MSwzMyBAQAogICAgIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCA5ODMxNDcsIAogICAgIDE5OTAsIDY2NTg5LCA0NDk4LCA3ODY2NCwgMTE5MTgzLCAwLCAwLCA2OTczNCwgMjk2MCwgNzM3NzksIDAsIDg5NjksIAogICAgIDEyODExNywgNDM0MjQsIDEyNzA1OSwgMCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAwLCAwLCAwLCA0OTUzLCAKLSAgICA5ODM2NzMsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgOTgzMjQwLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgCisgICAgOTgzNjczLCAwLCAwLCAwLCA2OTIzMCwgMCwgMCwgNjU2ODgsIDk4MzI0MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIAogICAgIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCAKICAgICA3MTMxNywgNjQ5MjMsIDEyODA0MCwgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCAKICAgICA5MTc3NzQsIDEyMDYwMiwgMzc2MSwgMCwgMCwgNzAwNjgsIDAsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMCwgMCwgCiAgICAgMCwgMCwgOTA4LCAwLCA4NjExLCAwLCAwLCAxMjc1NTUsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIAogICAgIDQxNTg2LCAxMDUyNywgMCwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgMTk0OTM3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCAKLSAgICA5ODMyNTEsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI0OSwgMTI3MTYzLCA2ODE5MywgMzQ3LCAKKyAgICA5ODMyNTIsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI1MCwgMTI3MTYzLCA2ODE5MywgMzQ3LCAKICAgICAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKICAgICA2OTY1NywgNzg1MTIsIDAsIDQzNDQxLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAxMDY4MSwgCiAgICAgMCwgOTgzNjg2LCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgCi0gICAgNjYwOSwgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCA5ODMyMTIsIDAsIDczODQ3LCA3ODc2MSwgCisgICAgNjYwOSwgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCA5ODMyMTMsIDAsIDczODQ3LCA3ODc2MSwgCiAgICAgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMCwgMCwgMCwgNDEyMDMsIDkxNzYxMiwgMTMxMTAsIDQxNzI2LCA5ODM4NDYsIDAsIAogICAgIDEwMDAsIDY5NjUxLCAwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIAogICAgIDAsIDY4MjEzLCAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgCiAgICAgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCAKICAgICA2NDM5OCwgMCwgMTE5OTcwLCAxMjMxMSwgOTgzNzE4LCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIAogICAgIDc4NzkzLCA2NjY3MCwgMCwgMCwgMTIyOTAsIDEyMDE2OSwgMCwgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgCi0gICAgMCwgOTYyNywgNzg1MzYsIDc4NTQyLCA3ODUzNSwgOTgzMjEwLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIAorICAgIDAsIDk2MjcsIDc4NTM2LCA3ODU0MiwgNzg1MzUsIDk4MzIxMSwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAKICAgICAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIDExOTk5NSwgMCwgMTE5OTk3LCAxMTk5OTgsIDY1MzA1LCA2NTEwMCwgCiAgICAgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIAogICAgIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDAsIDQxODk5LCAwLCA4MDAyLCAwLCA0MzY0LCAKICAgICAwLCAwLCA2NDMzMiwgMCwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNzg0NTUsIDcyNzksIAotICAgIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDAsIDAsIDk2NjAsIDk4MzI3MiwgMTMwMTIsIDQ1NzEsIDAsIDAsIDEyMDE2NCwgCisgICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMCwgMCwgOTY2MCwgOTgzMjczLCAxMzAxMiwgNDU3MSwgMCwgMCwgMTIwMTY0LCAKICAgICAxMjA3OCwgMjk3MCwgMCwgMTA5MzMsIDAsIDc3ODcwLCAwLCAxMjcwMTUsIDAsIDQxNTk5LCAwLCAxMjg4MzEsIDAsIAogICAgIDEyOTUwLCA5MjE2MCwgMzQ4NiwgMCwgNzgzMTEsIDQyMzksIDAsIDEyNzc5OSwgNjY1MTEsIDAsIDI2MzcsIDY0NjI5LCAKICAgICA4NDYwLCAxMjcwNTMsIDg0NzYsIDk4Mzk2NiwgMCwgMCwgMCwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgCi0gICAgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCA3Mzg2NCwgOTgzMjAxLCA0MTczNCwgCisgICAgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCA3Mzg2NCwgOTgzMjAyLCA0MTczNCwgCiAgICAgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIAogICAgIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgMCwgNzM5NjMsIAogICAgIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgNzExNSwgNjYwMzAsIApAQCAtMTg0NzMsOCArMTg0NzUsOCBAQAogICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDk4MzY5MCwgNzg1MTEsIDMxNjEsIDI5NSwgMTIwMjA3LCAwLCA5MjIyMywgCiAgICAgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM2NDEsIDAsIDM5NzEsIDAsIDcwMDYzLCAyOTUyLCAKICAgICA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCA5NDA0MywgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIAotICAgIDQxNzIyLCAwLCA1MTcyLCAwLCAwLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgCi0gICAgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIDQxNzIzLCAKKyAgICA0MTcyMiwgMCwgNTE3MiwgMCwgOTgzMjcxLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgCisgICAgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIDQxNzIzLCAKICAgICA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDEyNjYzNiwgMCwgNDIzNDgsIDczODkyLCAKICAgICA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDYsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDAsIDYzODQ2LCAyOTcyLCAxMjkzMiwgCiAgICAgNzI2MiwgMCwgNjM4NDksIDYzODQ4LCA2Mzg0NywgMTI4MDcwLCA2NTcwLCA4MzAyLCA3MjU5LCA2Mzg0MiwgNDE3OCwgCkBAIC0xODUxNSw3ICsxODUxNyw3IEBACiAgICAgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIAogICAgIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjI0LCA0NTE4LCAKICAgICAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDEyMDE1OCwgMjcxMCwgMCwgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgCi0gICAgNDE2OTAsIDEyNDc5LCA5ODM2MjYsIDAsIDAsIDk4MzgwOSwgNzAwNDYsIDE2MjgsIDEyNzE0OSwgOTgzNDc5LCA5ODM3MjIsIAorICAgIDQxNjkwLCAxMjQ3OSwgOTgzNjI2LCAwLCAwLCA5ODM4MDksIDcwMDQ2LCAxNjI4LCAxMjcxNDksIDk4MzQ4MCwgOTgzNzIyLCAKICAgICA2NTI2MiwgNjMzMywgMTA3ODMsIDQyMzE1LCAwLCA2Mzg1NSwgOTQwNTYsIDAsIDAsIDUzMzksIDc0MzIzLCAwLCAxMzAwNCwgCiAgICAgMCwgNDQ1NywgMCwgMCwgMCwgMCwgNTY4NCwgODY3OCwgMTA5MTQsIDAsIDU2ODksIDY1ODA3LCAwLCA2ODQ2NCwgMTI2MzMsIAogICAgIDEyODcwLCA2OTcwNSwgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAwLCA3NDI1MSwgMCwgMTIwNjQ3LCAKQEAgLTE4NTQyLDcgKzE4NTQ0LDcgQEAKICAgICA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDc4NDA2LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAxOTQ2NjQsIDAsIAogICAgIDAsIDQzMjQsIDEyNiwgNDIyNDYsIDExOTE1MiwgMCwgNzQzNzgsIDY1OTI2LCA3NzQ0LCAxOTQ2MzYsIDc0Mjc3LCA3NDMwMiwgCiAgICAgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIDAsIDQ3NjIsIDExMDMsIDAsIDAsIAotICAgIDQ3NjUsIDk4MzQ4NCwgMTMwNzgsIDAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDAsIDQyMjM2LCAKKyAgICA0NzY1LCA5ODM0ODUsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgCiAgICAgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDkyMTYxLCAKICAgICA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDAsIDgzMDQsIAogICAgIDkxNzU2MSwgMCwgMTE5NTc1LCAyMjkzLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCA0Mzg1LCAwLCAxMzAxMSwgCkBAIC0xODU2Niw3ICsxODU2OCw3IEBACiAgICAgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCiAgICAgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMCwgOTQwNzQsIDYzNzkzLCAKICAgICAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgCi0gICAgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMyMSwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgCisgICAgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMyMiwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgCiAgICAgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgMCwgMCwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIAogICAgIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAKICAgICAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCAKQEAgLTE4NTk1LDcgKzE4NTk3LDcgQEAKICAgICA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgMCwgNDI4NTUsIDExODg1NiwgNDI4NjYsIDAsIDAsIDAsIDY2NDM4LCA0MTc4NSwgCiAgICAgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAwLCA5ODM1NjgsIDAsIDAsIDkyNDAyLCAxMjgwNjIsIDEyOTY1LCAKICAgICAzODQsIDY0NTEyLCAxMDQwNCwgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIAotICAgIDQxNzg3LCA5ODMyMzcsIDEyNjk5NCwgNDEzNzMsIDc4MDM5LCAxMjMwMywgMCwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIAorICAgIDQxNzg3LCA5ODMyMzgsIDEyNjk5NCwgNDEzNzMsIDc4MDM5LCAxMjMwMywgMCwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIAogICAgIDQxMzcxLCAxMTY1NiwgMCwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgMTI4MDE4LCAxMDk2LCAKICAgICAwLCAwLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDAsIDgwMzIsIDEzMjQzLCAKICAgICAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDAsIDAsIDk4NjQsIApAQCAtMTg2MjMsNyArMTg2MjUsNyBAQAogICAgIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCAKICAgICA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgCiAgICAgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCA5NTI5LCAwLCA2NjY1NywgNjk4MCwgCi0gICAgNzg0ODMsIDEyMDAzNSwgNzg0ODQsIDk4MzQ4MywgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgMCwgCisgICAgNzg0ODMsIDEyMDAzNSwgNzg0ODQsIDk4MzQ4NCwgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgMCwgCiAgICAgOTgzMDU1LCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgCiAgICAgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKICAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAKQEAgLTE4NjMxLDcgKzE4NjMzLDcgQEAKICAgICA0MjYwOCwgNzg0NjksIDk4ODQsIDQ3NTksIDAsIDAsIDEwMjY2LCA0MTM1OSwgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgCiAgICAgMTYwOSwgOTAyLCAwLCA2MzkzNiwgMTI4ODc1LCAxMTY2MSwgODEyMiwgNTgxOCwgMCwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIAogICAgIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDAsIDAsIDgwNywgNDMwNzksIDAsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAwLCAKLSAgICA0MjE1NSwgMCwgNDEzNTYsIDc0MTEwLCAxMTg4MDEsIDEyNjYxNCwgMCwgODY3NiwgOTgzMjgzLCAwLCA1NTgyLCA0NTEsIAorICAgIDQyMTU1LCAwLCA0MTM1NiwgNzQxMTAsIDExODgwMSwgMTI2NjE0LCAwLCA4Njc2LCA5ODMyODQsIDAsIDU1ODIsIDQ1MSwgCiAgICAgNjM5NDEsIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDAsIDAsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAogICAgIDEyODg1MywgMTIwMDE2LCA3NDI4MywgMTEwMDUsIDAsIDY2NjU2LCA2NjA0NCwgMCwgMTk0Njk4LCAwLCAwLCA0MzM5MywgCiAgICAgMTAwOTQsIDAsIDExNTI5LCAxMDg1NywgMTIwNjQzLCA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDAsIDY4NDA1LCAwLCAwLCAKQEAgLTE4NjY1LDcgKzE4NjY3LDcgQEAKICAgICAwLCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgODU3OSwgNDE5MTQsIDc5ODEsIDAsIAogICAgIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCA3NDI3NiwgMTIwMDgwLCA2Nzg0LCAKICAgICA3ODc4OCwgNjgxODEsIDAsIDAsIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgOTgzOTIwLCA2NDI4OSwgCi0gICAgNjUyODksIDc4MTUxLCA2NjY1OCwgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIDEyNjUwNSwgMTEwNTEsIDk4MzI4OCwgMCwgCisgICAgNjUyODksIDc4MTUxLCA2NjY1OCwgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIDEyNjUwNSwgMTEwNTEsIDk4MzI4OSwgMCwgCiAgICAgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgCiAgICAgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCAwLCA2MzkyMiwgNjU5NCwgOTgzNzMxLCAwLCAwLCAKICAgICAzNjI0LCA0MzAzNiwgMCwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgCkBAIC0xODY4MCw3ICsxODY4Miw3IEBACiAgICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAogICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCA2Mzk4MCwgCiAgICAgMTE4MDEsIDM2MjIsIDk4MzEyNCwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCAKLSAgICA0MzYyOCwgMCwgOTgzMjg0LCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAorICAgIDQzNjI4LCAwLCA5ODMyODUsIDAsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgCiAgICAgNDAyLCAwLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCAKICAgICAwLCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDAsIDE5NDY3MCwgMCwgOTIzNTEsIDAsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMCwgCiAgICAgOTIzNTksIDY0OTQyLCA5ODM1NTksIDE5NDczMywgOTgzNjc3LCAxOTQ3MzIsIDAsIDc0MzAxLCAwLCAxMTI4MCwgMCwgCkBAIC0xODY5MSw3ICsxODY5Myw3IEBACiAgICAgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAKICAgICA5ODM3NTMsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgNzQ3NjcsIDAsIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCA5ODM3NTIsIAogICAgIDM3ODgsIDk4MzEwNiwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTgzNjg4LCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjAyLCAxMjA4MzEsIAorICAgIDk4MzY4OCwgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCA5MjIxNywgMTMxNjMsIDk4MzIwMywgMTIwODMxLCAKICAgICA3NDU5NywgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDE5NDYyMSwgMTE0NDMsIDAsIAogICAgIDY2MzE5LCA3NDU5OCwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDAsIDc0NDg1LCAKICAgICA0MjQ0MiwgNjU0NzAsIDk4Mzg5OCwgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCAxMjgwMDYsIDAsIDk4MjgsIDAsIApAQCAtMTg3MDMsMTQgKzE4NzA1LDE0IEBACiAgICAgMCwgMTk0Njc1LCAxNDA2LCAwLCAwLCA5MjY1OSwgMCwgNjgyMjMsIDQxNDMsIDE5NDY3NywgMCwgNjU3NDgsIDQxNDEsIAogICAgIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgCiAgICAgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCAwLCA0MzQwMywgMCwgCi0gICAgMCwgMCwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwMywgMTI5NTUsIDEwNTk2LCAyODg4LCAxOTQ2NDUsIDAsIAorICAgIDAsIDAsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDQsIDEyOTU1LCAxMDU5NiwgMjg4OCwgMTk0NjQ1LCAwLCAKICAgICAwLCA5NjU3LCA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCAKICAgICA2MzI4LCAwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAKICAgICAxMjY1NDIsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDAsIDEyNjY0NywgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCAKICAgICA5Mjg4LCA2NDgyMiwgMjg5MiwgMCwgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIDAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCAKICAgICA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIDAsIDE3ODQsIDEzNjEsIAogICAgIDE5NTA0NywgMCwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgMTMxNTgsIDkyMTY2LCA3MjExLCAwLCA5MzcxLCA3Mzk3MywgCi0gICAgOTE3NTUzLCA2ODI4LCAxNjI1LCA5MjMwMiwgMCwgMTM0MiwgNjg0NDAsIDY0MTcxLCAxMjY3MDQsIDEwOTAzLCA5ODM0ODYsIAorICAgIDkxNzU1MywgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIDEzNDIsIDY4NDQwLCA2NDE3MSwgMTI2NzA0LCAxMDkwMywgOTgzNDg3LCAKICAgICAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCA5ODMxMTIsIDAsIDY0MzgxLCAwLCAwLCAxOTUwOTAsIAogICAgIDQyMjQ1LCAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCiAgICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDExOTU5OSwgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDE5NDk3MCwgCkBAIC0xODczNiwxMCArMTg3MzgsMTAgQEAKICAgICA0NzMxLCAwLCA2NjYyOSwgMCwgMCwgMTI1NSwgNDE0OSwgOTI0NywgMCwgOTkxMywgMCwgMCwgNjQ5MTQsIDkxNzc4NywgCiAgICAgNjUxMDEsIDAsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIAogICAgIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDAsIDgxODAsIDAsIDAsIDk5NzIsIDczODY1LCA0NTE5LCAKLSAgICA2MTE0LCAxMDg5OCwgNDMwNzIsIDAsIDAsIDkzOTYwLCA5ODMzMTQsIDEyNjU4MSwgMTA2OTUsIDAsIDc1NDAsIDAsIDg4MSwgCisgICAgNjExNCwgMTA4OTgsIDQzMDcyLCAwLCAwLCA5Mzk2MCwgOTgzMzE1LCAxMjY1ODEsIDEwNjk1LCAwLCA3NTQwLCAwLCA4ODEsIAogICAgIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCAwLCAwLCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgODM1OSwgMCwgMTI2ODksIAotICAgIDAsIDE5NDU5NCwgMCwgOTgzMzA0LCA5ODM4NzIsIDY4MTgzLCAwLCA5ODMzMDYsIDEyODcsIDU0MzYsIDAsIDk4MzMwOSwgCi0gICAgNzQxNDIsIDkyMzI4LCA3NDE1MiwgMTE5MDc4LCA2MDUxLCAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA5ODMzMTUsIDAsIAorICAgIDAsIDE5NDU5NCwgMCwgOTgzMzA1LCA5ODM4NzIsIDY4MTgzLCAwLCA5ODMzMDcsIDEyODcsIDU0MzYsIDAsIDk4MzMxMCwgCisgICAgNzQxNDIsIDkyMzI4LCA3NDE1MiwgMTE5MDc4LCA2MDUxLCAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA5ODMzMTYsIDAsIAogICAgIDEyNzI0MiwgMCwgMCwgMzY1MiwgMTA1MzcsIDAsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMCwgMCwgCiAgICAgMTQ4OSwgMCwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIDk4MzU1NywgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIAogICAgIDEzNDUsIDc4NjAwLCAwLCAwLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMCwgMTIxNTEsIDc4NjA4LCAKQEAgLTE4NzU0LDE0ICsxODc1NiwxNCBAQAogICAgIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgNDEyMDgsIDk4MzcwNCwgNDExNjgsIAogICAgIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3ODYzNCwgMTk0NywgMCwgMCwgCiAgICAgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCAwLCA4MDE3LCAxMTk4MzEsIAotICAgIDY1MDk2LCA2NjcyMCwgMCwgNDM0NzUsIDAsIDQ5MDksIDEyMTI2LCAxMjg2NzMsIDEyMDY5NiwgNDkwNCwgOTgzMzI1LCAKKyAgICA2NTA5NiwgNjY3MjAsIDAsIDQzNDc1LCAwLCA0OTA5LCAxMjEyNiwgMTI4NjczLCAxMjA2OTYsIDQ5MDQsIDk4MzMyNiwgCiAgICAgNjk2NTAsIDEzNjUsIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMCwgMCwgMCwgMCwgMTE5NTg3LCA2NDQxNSwgMCwgMCwgCiAgICAgNTM5OCwgMCwgMTI3Mzg2LCA5Mzk1MywgMCwgMCwgMTE5MDE1LCAwLCAwLCA5NDc2LCAwLCA5ODM3NjgsIDEyNzYzLCAKICAgICAxMjY2MDMsIDM2MjksIDAsIDEzMDA1LCAwLCAzNjI4LCAwLCAwLCA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIAogICAgIDY0ODA5LCAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIDAsIDY0NjY1LCA0MzA4NiwgOTExNCwgMCwgNDI1ODMsIAogICAgIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAKICAgICAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDAsIDYwMTgsIAotICAgIDkyMjkwLCAwLCAxMjI3NiwgMCwgNjgzNzIsIDAsIDkyMjU5LCAxMTkyNDQsIDAsIDk4MzIyNCwgMTA0NjcsIDAsIDI0NDMsIAorICAgIDkyMjkwLCAwLCAxMjI3NiwgMCwgNjgzNzIsIDAsIDkyMjU5LCAxMTkyNDQsIDAsIDk4MzIyNSwgMTA0NjcsIDAsIDI0NDMsIAogICAgIDEwOTE4LCA3ODIxNywgMTE5ODI1LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAwLCA3Mzk4NywgMTI3ODg1LCAwLCAwLCAKICAgICAxMTg4MjgsIDEyMDI3MSwgNjU2NzgsIDEyODY3LCAwLCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCAKICAgICA1MTgsIDY1ODU3LCAwLCAxMjg2NzQsIDEzMjA0LCA0Mzg3LCA4NTcsIDAsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIApAQCAtMTg3NzcsMTkgKzE4Nzc5LDE5IEBACiAgICAgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIDQyNDk1LCAxMTg5NTYsIDAsIDQwNTEsIDEwNDYwLCA0MzM2NCwgCiAgICAgMTE4OTE3LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIAogICAgIDQyMTEyLCAxMjc5NzgsIDE4NzUsIDEwODA4LCA0MjEwOSwgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgCi0gICAgNTI4OSwgMTMxNDQsIDEyODY1OCwgMCwgNTU3NSwgOTY3NSwgMCwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNjksIAorICAgIDUyODksIDEzMTQ0LCAxMjg2NTgsIDAsIDU1NzUsIDk2NzUsIDAsIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjcwLCAKICAgICAxMTk4MzAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIAogICAgIDczNzU5LCA0MzEwMCwgNjk4ODgsIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIAogICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAxMjY1NTEsIDAsIDYwNDgsIDc0NDYwLCA0MjExMCwgNzM5NjUsIAogICAgIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDExOTA0OSwgOTY4MSwgNDQ3NSwgMCwgNDExNDIsIDIxMDAsIDAsIDEyMDczMSwgCi0gICAgNjAzNSwgMCwgNzY1MSwgMTAyOTYsIDY0NDQzLCAwLCA5ODMyODcsIDkxNzk4NywgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIAorICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjg4LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKICAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCiAgICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKICAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKICAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKICAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY2MywgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIAogICAgIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgCi0gICAgMCwgODg5MywgOTgzMjkzLCAxMjU0MiwgMCwgNjUzNDEsIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAKKyAgICAwLCA4ODkzLCA5ODMyOTQsIDEyNTQyLCAwLCA2NTM0MSwgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDAsIDAsIAogICAgIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEyNzEwMiwgNjgyMDcsIDEyNzEwMCwgNzA5OSwgCiAgICAgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgNDM3NTAsIDAsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIAogICAgIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc3OTgyLCAwLCA1MTI3LCAKQEAgLTE4ODExLDcgKzE4ODEzLDcgQEAKICAgICA0MDk4OCwgOTI1OTIsIDc0ODA5LCA0MTcyNywgMCwgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgCiAgICAgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCAwLCAKICAgICA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAotICAgIDEyNzE1NCwgNDA5ODMsIDAsIDk4MzIzNCwgMCwgNzIwMSwgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAKKyAgICAxMjcxNTQsIDQwOTgzLCAwLCA5ODMyMzUsIDAsIDcyMDEsIDEyNTYxLCAwLCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgCiAgICAgMTAwNTIsIDQwOTgyLCAwLCAwLCAxNDg4LCAwLCAwLCAwLCA5MTc1NTksIDAsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCiAgICAgOTgzOTMxLCAwLCAwLCAxMjc4NzIsIDcxMzYzLCA1ODAzLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMCwgMjkyMiwgNjA4MiwgMCwgCiAgICAgNjUwMDksIDk4MzkzMywgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCAKQEAgLTE4ODIyLDEzICsxODgyNCwxMyBAQAogICAgIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDExOTM1MCwgNjUwNSwgCiAgICAgNzQwMTAsIDAsIDEzMDY0LCA1NTI2NywgMTIwODEwLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgNzM3NjQsIDAsIDkyMzc2LCAKICAgICAxMjc0NSwgOTY3OCwgMCwgMTIwNTg3LCA5ODY5LCAxMjg4MTUsIDE3NzEsIDAsIDg5MzYsIDAsIDAsIDQyMDgsIDc4MzQxLCAKLSAgICA3ODU2NywgNzgzNDIsIDAsIDk4MzQ0OCwgNzQxMDEsIDAsIDExNzYyLCAwLCA5MjQyMiwgNzc5OTcsIDY4MDEwLCA2NjQ3NSwgCisgICAgNzg1NjcsIDc4MzQyLCAwLCA5ODM0NDksIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCA2ODAxMCwgNjY0NzUsIAogICAgIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgNTAyNiwgCi0gICAgOTgzMjQ3LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCA3NDc5MCwgNzgxMzgsIAorICAgIDk4MzI0OCwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKICAgICAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAwLCAKICAgICAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgOTgzNjcwLCAxMDYwMCwgOTE3ODY3LCAKICAgICA2MjAsIDQxMDAxLCA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIAotICAgIDY5ODkyLCA5ODMyMDcsIDAsIDExODg4NSwgMCwgNjU1NTcsIDAsIDc0NTQxLCA5ODM1ODcsIDExNTk5LCAxMjgyMDksIAorICAgIDY5ODkyLCA5ODMyMDgsIDAsIDExODg4NSwgMCwgNjU1NTcsIDAsIDc0NTQxLCA5ODM1ODcsIDExNTk5LCAxMjgyMDksIAogICAgIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgCiAgICAgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgCiAgICAgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgCkBAIC0xODk0Myw3ICsxODk0NSw3IEBACiAgICAgMTIwMzU3LCA4NDUsIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA5MTc5MTksIDQ1NjksIDc0MTMwLCAwLCAKICAgICA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCA2NTYyOSwgMCwgMTk0ODU4LCAwLCAwLCAxMjc1NDUsIAogICAgIDEyMDU0MywgMCwgMCwgNjI5MSwgMCwgNzg2MzksIDQxNjY5LCA3MDk0LCA5MTc5MjEsIDAsIDk4MzU4MSwgNzQwNTQsIAotICAgIDEyNzc1NCwgMTk1MDI5LCAwLCA4MzksIDk4MzMxMSwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDE5NDY2MywgNDg1OSwgCisgICAgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgOTgzMzEyLCA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgMTk0NjYzLCA0ODU5LCAKICAgICA2NDQ2NywgMCwgOTgzOTU0LCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIAogICAgIDk4Mzg1NCwgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgCiAgICAgNzQyNDUsIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgCkBAIC0xODk2Niw3ICsxODk2OCw3IEBACiAgICAgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgMTIwNDA5LCAxMjcwNDQsIDAsIDg1MzcsIDAsIAogICAgIDAsIDkzNTQsIDk4MzE2NCwgMTI4ODMzLCA0MTE5OSwgMTAxMjEsIDIwMjgsIDAsIDk4MzE5NCwgNjk3MTUsIDAsIDMwNjIsIAogICAgIDAsIDc0NDQ3LCAxMjYwOCwgMCwgNjY0NDAsIDc1NDUsIDk3MDAsIDEyNTgwLCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIAotICAgIDQxMTU1LCAwLCA3NDA3MSwgMCwgOTgzNDQ5LCAxMjcxMywgMCwgMCwgMCwgNzg3NzIsIDAsIDE3MzQsIDAsIDAsIDEyNzA0MCwgCisgICAgNDExNTUsIDAsIDc0MDcxLCAwLCA5ODM0NTAsIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCAKICAgICA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgNTQyLCAwLCAxMTg3ODYsIDAsIDk4Mzk3MCwgMTIzMCwgMCwgMCwgMzU5NywgCiAgICAgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgMTI3OTM4LCA4MzUyLCAwLCA1Njg3LCAwLCA2NDUxNSwgMCwgCiAgICAgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCAwLCAwLCA3MDA4MCwgNzEzMzgsIDAsIDg2NjAsIDEyNjQ5NSwgCkBAIC0xODk4Niw3ICsxODk4OCw3IEBACiAgICAgMTE5MTczLCAwLCAwLCA3ODA1LCAwLCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCAKICAgICA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIAogICAgIDc4MzM1LCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgOTgzOTUyLCAwLCAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgCi0gICAgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDUxLCAxOTUwNjIsIDk5NDksIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgCisgICAgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDUyLCAxOTUwNjIsIDk5NDksIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgCiAgICAgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDk4Mzc0OCwgMCwgNTI5MiwgNTUyNzIsIAogICAgIDk4Mzg3NCwgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAxMjQ1NSwgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIAogICAgIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCA3NDE5NywgCkBAIC0xODk5Nyw3ICsxODk5OSw3IEBACiAgICAgMCwgMCwgNzgwNzQsIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCAKICAgICA3NDQ2NiwgOTM5NjYsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIAogICAgIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCi0gICAgOTgzNDUwLCA3ODQzMiwgNzgyNTYsIDc4MzUxLCA3ODM1MiwgMCwgOTgzNjQ4LCAwLCAwLCAxMzc4LCA5NTA5LCAwLCAwLCAKKyAgICA5ODM0NTEsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCA5ODM2NDgsIDAsIDAsIDEzNzgsIDk1MDksIDAsIDAsIAogICAgIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCA3ODM2NSwgODc4NywgMTIwMzc5LCAxOTQ2MTYsIAogICAgIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAxOTQ2MTIsIDAsIDc4MzY2LCA0MjA4OCwgMCwgCiAgICAgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzQ1MzQsIDgxMTksIDY0ODc0LCAKQEAgLTE5MDE2LDcgKzE5MDE4LDcgQEAKICAgICA1NDksIDE1NzAsIDAsIDI4MzUsIDAsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDEyNzE5MSwgMCwgMCwgMTI2MDYsIDc4NDMzLCAKICAgICAyODI1LCAwLCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA5ODM3NDQsIDEyMDU5MywgMTMwNzEsIDAsIAogICAgIDQ1MiwgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDAsIDY0NzAzLCAKLSAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDAsIDE2NjgsIDAsIDAsIDAsIDExODcsIDk4MzM3NywgCisgICAgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAxNjY4LCAwLCAwLCAwLCAxMTg3LCA5ODMzNzgsIAogICAgIDQyNjI4LCA3ODU3NSwgMCwgMTI4Nzc3LCAwLCAzMjQwLCAxMjg1MTgsIDEyMTk0LCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIAogICAgIDgxNjYsIDAsIDAsIDAsIDc0NTM1LCAxNjIzLCA2NTI5NywgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgCiAgICAgODkxNiwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDAsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDEyNzMwMCwgOTIyOTYsIApAQCAtMTkwMzMsNyArMTkwMzUsNyBAQAogICAgIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCiAgICAgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAKICAgICAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMCwgCi0gICAgMzYzNSwgNjQzMzcsIDk4MzI3MywgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgCisgICAgMzYzNSwgNjQzMzcsIDk4MzI3NCwgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgCiAgICAgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgCiAgICAgNDE3NiwgNzAwNTAsIDIwMzQsIDkyNTUxLCAxMjA4MDUsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCAKICAgICA3ODU5NiwgMCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIApAQCAtMTkwNDMsMTMgKzE5MDQ1LDEzIEBACiAgICAgMTk0NTY3LCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCAxMjY2NDQsIAogICAgIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAKICAgICAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgCi0gICAgMCwgNjgzNjQsIDk4MzIyMiwgNDg5MSwgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgCisgICAgMCwgNjgzNjQsIDk4MzIyMywgNDg5MSwgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgCiAgICAgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgMCwgMCwgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCAKLSAgICA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgMTM2MiwgMTMyOTcsIDAsIDEyODA5NCwgMCwgOTgzMzIzLCA3Mzc4OSwgMCwgCi0gICAgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDk4MzgzMywgOTIzMTksIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCA5ODMzMjIsIAorICAgIDUyNzEsIDkyMzE4LCA5MjUxNywgMTE4ODgyLCAxMzYyLCAxMzI5NywgMCwgMTI4MDk0LCAwLCA5ODMzMjQsIDczNzg5LCAwLCAKKyAgICA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgOTgzODMzLCA5MjMxOSwgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDAsIDk4MzMyMywgCiAgICAgMjQxNiwgMzMxMCwgNDI3MDMsIDAsIDM3OSwgMCwgNDM3NTUsIDAsIDAsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAogICAgIDQ1NDksIDAsIDAsIDk4MzE1NCwgMTI3NzYzLCAxMDgwNywgOTU1OCwgMTk0NjEzLCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCi0gICAgNjUzMDgsIDMyOTQsIDk4MzMyNCwgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDAsIDkyNDU4LCAKKyAgICA2NTMwOCwgMzI5NCwgOTgzMzI1LCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgMCwgOTI0NTgsIAogICAgIDczNzU3LCA2NjQ1NiwgNDIzNTksIDAsIDIwMzEsIDAsIDcyMDIsIDAsIDEyNjc2LCA0MjcyOSwgOTIxOTgsIDMyMTUsIDAsIAogICAgIDc3MTAsIDE2MTAsIDczODAxLCAwLCAwLCA2NTY4MiwgMCwgMTIwNTM3LCA2NTkyNCwgOTk3NCwgMjI4LCA2NjM1NCwgMTUwMSwgCiAgICAgMCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDAsIDY1Nzk0LCAxNzI1LCA2NTUzMywgODE5NiwgNzQ3NiwgNzQzOTksIDAsIApAQCAtMTkwNzYsMjAgKzE5MDc4LDIwIEBACiAgICAgMTI2NDY5LCAxMTk0NiwgMCwgMzI1NywgMCwgMTIzMDcsIDE4NDUsIDk4MzE1NywgNDM1MjYsIDAsIDAsIDE4ODYsIDQyMzQyLCAKICAgICAxMDA4OSwgODcwLCA3NjQ4LCAzNDk5LCA4NjA5LCA3NjUyLCA4NzYsIDg3MSwgODc3LCAwLCA4NzgsIDQyMDE1LCA4NzksIAogICAgIDQzNjkyLCA0NTYzLCAwLCAwLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDEyNjYwNywgODY4LCA4NzMsIDc2NDIsIAotICAgIDAsIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgNzkwLCAxMjgzMDMsIDAsIDAsIDAsIDY2MTgyLCA5ODMyNTAsIAotICAgIDU0MjksIDE5NTA1NSwgNjYxODAsIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyODEsIDk4MzI0MiwgNDIwNjcsIDAsIAorICAgIDAsIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgNzkwLCAxMjgzMDMsIDAsIDAsIDAsIDY2MTgyLCA5ODMyNTEsIAorICAgIDU0MjksIDE5NTA1NSwgNjYxODAsIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyODIsIDk4MzI0MywgNDIwNjcsIDAsIAogICAgIDU0MzMsIDEwNjU3LCA3OTExLCAxOTQ2MjIsIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCAKICAgICA1MzE3LCA1NDIzLCA0NjExLCAwLCA2NzYzNywgMCwgOTY3OSwgNzQxMjIsIDAsIDAsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgCiAgICAgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAwLCAxODUxLCAwLCAxMjcxODksIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIAotICAgIDk4MzI3MCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgODgyOSwgNzcxMSwgOTI3MTQsIDAsIDkyMzIxLCA0MzMxOCwgMCwgODgwOSwgCi0gICAgNjk4ODEsIDAsIDk4MzE0MiwgMTIwNjA0LCA5ODMwNTIsIDk4Mzg3MywgMCwgOTgzMjYyLCAwLCAwLCA3NDI3LCA5OTU4LCAKKyAgICA5ODMyMDEsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDkyNzE0LCAwLCA5MjMyMSwgNDMzMTgsIDAsIDg4MDksIAorICAgIDY5ODgxLCAwLCA5ODMxNDIsIDEyMDYwNCwgOTgzMDUyLCA5ODM4NzMsIDAsIDk4MzI2MywgMCwgMCwgNzQyNywgOTk1OCwgCiAgICAgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxOTQ5NjgsIDI0MzMsIDAsIDExOTYyMiwgMzM1MiwgNzQzNjMsIDk4Mzg3NiwgMCwgCiAgICAgNzkzLCA3NDQwNCwgMCwgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDEyODUxOSwgODIwOCwgMCwgNDE2OTUsIDE2NDcsIAogICAgIDExODg3NywgMCwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDE5NDYyOCwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCAKICAgICAxMjY1NzYsIDEyMDU5NCwgNzQwODYsIDkxNzYxNSwgOTE3NjE0LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgCiAgICAgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDkxNzYwNSwgOTE3NjA0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIAogICAgIDEyNjYxMiwgMCwgMjg0MCwgMCwgMTE5OTgyLCA5ODM5MzAsIDAsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMCwgMCwgCi0gICAgMTI5OTEsIDAsIDI2NTEsIDY4MDE2LCA5ODMyNTcsIDkxNzYxMSwgMTI3MDI2LCAxMjg4ODMsIDAsIDAsIDQzNjQ4LCAKKyAgICAxMjk5MSwgMCwgMjY1MSwgNjgwMTYsIDk4MzI1OCwgOTE3NjExLCAxMjcwMjYsIDEyODg4MywgMCwgMCwgNDM2NDgsIAogICAgIDEyMDgxMiwgMCwgNDMzMjIsIDkyNjYyLCAwLCAwLCA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCAKICAgICA3NDUyLCAzMjg1LCAxMjg3NzksIDEyNzgyMSwgMTE5OTg4LCA2NTYxMCwgMjM5MSwgMCwgOTIyNDgsIDY3MSwgMjUwLCAKICAgICA3NDM0LCA2MTgsIDY2OCwgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCAKQEAgLTE5MTA2LDcgKzE5MTA4LDcgQEAKICAgICAxMjAyODUsIDc0MjI1LCA5NDExMSwgODI2NywgMCwgMTI3MjY1LCAwLCA3NTE2LCAwLCAyNjI1LCA5ODM5NjgsIDgwMzQsIAogICAgIDc0MzA5LCAwLCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCAwLCAwLCA0MzM4NCwgMTI2NjAsIDAsIDAsIAogICAgIDAsIDc0ODUwLCA0MTA2OSwgMCwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgMCwgMzk5MCwgCi0gICAgMCwgOTgzMjU0LCA2NjM2OCwgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDExOTE0NCwgMTAzMCwgMTE4ODAwLCA5ODMxMjAsIAorICAgIDAsIDk4MzI1NSwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgOTgzMTIwLCAKICAgICA5NTEzLCA0MTA1OSwgOTM1NywgMCwgMTc3MywgMCwgMTIwMzUwLCAwLCA2MzM5LCA3NzQ1LCA5ODQ0LCAwLCA2NDY1MCwgOTQsIAogICAgIDE4ODAsIDc0NzY2LCA5ODM4MjksIDg5MDgsIDAsIDEyODcwNywgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDAsIAogICAgIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzM1LCA2NDc4NSwgNzM5NCwgCkBAIC0xOTEyNSwxNyArMTkxMjcsMTcgQEAKICAgICA2NTMwMiwgNDA5ODksIDAsIDE5NDY5NiwgMCwgNDI3NjAsIDAsIDk4MzU2NiwgMCwgNDA5ODcsIDQ2NjcsIDAsIDk4MzkyMywgCiAgICAgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAKICAgICAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCAKLSAgICA5NTEsIDAsIDAsIDk4Mzg1OCwgNzYwNCwgOTgzMjgyLCA0MDA5LCAxMjc4MTYsIDk4MzcwMSwgMTIwNTYyLCAwLCA5ODM3MTEsIAorICAgIDk1MSwgMCwgMCwgOTgzODU4LCA3NjA0LCA5ODMyODMsIDQwMDksIDEyNzgxNiwgOTgzNzAxLCAxMjA1NjIsIDAsIDk4MzcxMSwgCiAgICAgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAxMjczNzAsIDQwNDgsIDk4MzU5OCwgMCwgNzAwMjQsIDE2NDYsIDc3ODkwLCAKICAgICA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgMCwgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAKICAgICAzNDQxLCAxMTk4OTQsIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MjYsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgCiAgICAgOTE3NTYyLCAxOTQ2MTAsIDMzOTksIDk4NTEsIDk4MzcwOCwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDAsIDAsIAogICAgIDAsIDcxMzY3LCAwLCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2OTc2NywgNzQ5LCA0MjM2NiwgMCwgNTM4NSwgMTI4NTc0LCAKICAgICAxMjgyMTgsIDAsIDAsIDU5ODksIDAsIDAsIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgCi0gICAgOTgzMjE0LCA1MTksIDAsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCAxMjAxMzgsIDQxMjk3LCAwLCAzNjY2LCAKKyAgICA5ODMyMTUsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIAogICAgIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgCiAgICAgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAwLCA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgCi0gICAgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIDk4MzIyMSwgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCAKKyAgICAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgOTgzMjIyLCAxMTczMCwgMCwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIAogICAgIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDAsIDAsIDc3NjQsIDk4MzcwNSwgMTEwOTQsIDEyMDgyNSwgMCwgMCwgNDI4MiwgCiAgICAgODI5OCwgMCwgMCwgMCwgMCwgMCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDAsIDc0NzgzLCA2NTY3MCwgMCwgCiAgICAgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAwLCAwLCAwLCAwLCAxMjA3NjQsIDAsIDEwMDE5LCA3NDc2MiwgMCwgCkBAIC0xOTE1MCw0OCArMTkxNTIsNDggQEAKICAgICA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCAKICAgICA3Mzc3NCwgMTA5MTMsIDAsIDAsIDg2NjYsIDY3NSwgNDI0OTMsIDAsIDQzNTcxLCAwLCA2MjE5LCAwLCA5OTgwLCA0MTIzMiwgCiAgICAgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgMCwgMTI3MTEsIDMxODEsIDY2MjEyLCAKLSAgICA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCA5ODMzNzEsIDAsIDk4MzIyMCwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCAKKyAgICA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCA5ODMzNzIsIDAsIDk4MzIyMSwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCAKICAgICA3MjM0LCA3NDA0NywgOTgzMDg4LCAwLCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgCiAgICAgNDM5ODMsIDc0NTA3LCA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIAogICAgIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIDEyMDQ2MSwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIAogICAgIDc4NzI5LCAxOTAxLCA3ODcyNywgMTI3MzI2LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIAogICAgIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDAsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgCi0gICAgMTE5NjYxLCAwLCAwLCA5ODMzMTMsIDEyMDczNywgMCwgOTgzOTYyLCA5ODMzMTIsIDM3OCwgMjYxMCwgMCwgNjUwNzksIAotICAgIDk4MzMxNywgNjU2OTUsIDEyNjU1OSwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgMTIwNDc5LCAzMjA5LCAxMjA0NzcsIDAsIAotICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA5ODMzOTEsIDAsIDAsIDAsIDAsIDY1NTEwLCAwLCAwLCA1MjMzLCAKLSAgICA5ODMzMjcsIDY0NzkyLCA5ODMzMjYsIDAsIDEyNjYzMywgMCwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIAorICAgIDExOTY2MSwgMCwgMCwgOTgzMzE0LCAxMjA3MzcsIDAsIDk4Mzk2MiwgOTgzMzEzLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAKKyAgICA5ODMzMTgsIDY1Njk1LCAxMjY1NTksIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDEyMDQ3OSwgMzIwOSwgMTIwNDc3LCAwLCAKKyAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgOTgzMzkyLCAwLCAwLCAwLCAwLCA2NTUxMCwgMCwgMCwgNTIzMywgCisgICAgOTgzMzI4LCA2NDc5MiwgOTgzMzI3LCAwLCAxMjY2MzMsIDAsIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCAKICAgICA3Mzk3MSwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIAogICAgIDkwMTQsIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCA2NTQ3LCAxMjgxMzIsIDgyMDMsIDc4NDg4LCAKICAgICA5ODMwOTAsIDg0NTgsIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIAogICAgIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIAogICAgIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCAKICAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAKLSAgICAwLCA0Mjg4OCwgNjU3MTIsIDk4MzI5NiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIAorICAgIDAsIDQyODg4LCA2NTcxMiwgOTgzMjk3LCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAxNzgzLCA2ODY0OCwgNTcyOCwgMCwgCiAgICAgMCwgMCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAwLCA1NzI3LCA3ODUyMSwgMCwgMCwgNzY0LCAwLCAxMjgxMTYsIDQzNTMxLCAwLCAKICAgICA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDAsIDExOTg2MSwgNzEzNDQsIDQzNDY1LCAwLCAKICAgICAxMjgyNjcsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDAsIAogICAgIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMCwgNzczOSwgNzQ1NDMsIDAsIAogICAgIDAsIDAsIDYxMzIsIDAsIDYzNzY1LCAwLCA3MDA1OCwgNDExNDQsIDAsIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIAogICAgIDQzNjksIDkxNzc5MSwgMCwgOTgzMTQ4LCA4ODIwLCAzOTQ3LCAwLCAwLCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAKLSAgICAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCA5ODMzNzQsIAorICAgIDE5NDYwMywgOTE3Nzg1LCAxOTQ5MzIsIDAsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDAsIDAsIDk4MzM3NSwgCiAgICAgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgOTE3Nzg4LCA3NDAyNCwgMTIyOTMsIDAsIDY0MzU3LCAxMTc5NCwgCiAgICAgNDIwODIsIDAsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCAwLCA5MzM1LCAxMjg1MCwgMTE5ODcwLCA2NTUzLCA3MDU1LCAKICAgICAwLCA4Mjc3LCAwLCAwLCA1NDc1LCA3NDc5NSwgNjc4MCwgMCwgMCwgMTI5OTAsIDExNjAsIDQyMDg0LCAxMTk2NTAsIAogICAgIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDAsIDAsIDY4MTc2LCA1ODYzLCAzMTM3LCAwLCA0MTQ3LCA5ODMxNzAsIAotICAgIDQxMjE2LCA3ODQ0LCAyNjE2LCAxMTkxOTAsIDY4NDYxLCA2NTIzNCwgOTgzMjg2LCAxMzA3NiwgMzEzNSwgOTgzMjc5LCAKKyAgICA0MTIxNiwgNzg0NCwgMjYxNiwgMTE5MTkwLCA2ODQ2MSwgNjUyMzQsIDk4MzI4NywgMTMwNzYsIDMxMzUsIDk4MzI4MCwgCiAgICAgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgCiAgICAgNzM5NjcsIDk0MDA4LCA2MjI3LCAwLCAxMjcxNzMsIDY5NzQxLCA5ODM1ODIsIDYxNjMsIDk4MzU1OCwgMCwgMTI3MzE0LCAwLCAKICAgICAwLCA4NjAzLCAwLCAxMTk4NjYsIDMzMDYsIDEwODc2LCA0MzM5MiwgMTE5NTczLCAxMjc5MzEsIDU3NTEsIDAsIDYyMjIsIDAsIAogICAgIDAsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDAsIAotICAgIDAsIDI1NzAsIDcwMjEsIDAsIDAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCAwLCAwLCA5ODMyMDksIDUwMDIsIDAsIAorICAgIDAsIDI1NzAsIDcwMjEsIDAsIDAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCAwLCAwLCA5ODMyMTAsIDUwMDIsIDAsIAogICAgIDQxMjg2LCA2OTk0NiwgMTI3MDE5LCAwLCA0MzU4NSwgMCwgNjU1MSwgOTgzOTUzLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAKLSAgICAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIDEyODY2MSwgMCwgOTgzMzY3LCA0MTI3OSwgMCwgMCwgCisgICAgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAxMjg2NjEsIDAsIDk4MzM2OCwgNDEyNzksIDAsIDAsIAogICAgIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAKICAgICAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyMCwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIAogICAgIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIDAsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIAogICAgIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCA3NDA1OCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgCiAgICAgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxODIsIAotICAgIDM3NTEsIDkxMjAsIDk4MzQ3NywgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIAorICAgIDM3NTEsIDkxMjAsIDk4MzQ3OCwgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIAogICAgIDgxMzcsIDk0MDk4LCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIAogICAgIDYxMzYsIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAKICAgICAxOTQ5NDUsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgCkBAIC0xOTIwMyw3ICsxOTIwNSw3IEBACiAgICAgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDAsIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIAogICAgIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDk4MzcyNCwgMTE5MDQyLCAwLCAxMjc4NjUsIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgCiAgICAgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCAKLSAgICA0MjQzMiwgMCwgMCwgMTk0NzgyLCAwLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCAwLCA5ODMyMTYsIDcwNjEsIAorICAgIDQyNDMyLCAwLCAwLCAxOTQ3ODIsIDAsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIDk5MTUsIDAsIDk4MzIxNywgNzA2MSwgCiAgICAgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCA0MjMxOSwgMTMwODIsIDAsIDcwNjcsIDY4MjIxLCAwLCAKICAgICAxMjczODMsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCA3NDc5MiwgCiAgICAgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCAKQEAgLTE5MjE3LDcgKzE5MjE5LDcgQEAKICAgICAzOTYsIDQxNTgwLCA2ODE0NiwgMCwgMTI5MDEsIDQzMDU4LCAwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgNzgxNTQsIDAsIAogICAgIDQ3NDMsIDAsIDAsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAwLCAzNzM5LCA2MjYzLCA3MTM0OSwgCiAgICAgMCwgMzk2NCwgNjU5MiwgMCwgMTI4NjkzLCA2NjA0MCwgMCwgNDI1NjgsIDY5ODA2LCAxMjgxMTMsIDE3NzgsIDM5NTYsIDAsIAotICAgIDQyMDcwLCA2NTYzLCA0MzA3NSwgOTAxOCwgOTQwMDYsIDk4MzM4OCwgMTIwNjcsIDQxMzEyLCAwLCA1NTQ3LCA3NDUzMSwgCisgICAgNDIwNzAsIDY1NjMsIDQzMDc1LCA5MDE4LCA5NDAwNiwgOTgzMzg5LCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAKICAgICAxMjc5NjksIDAsIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAogICAgIDExODgyMiwgMTc1MCwgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg3OSwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIAogICAgIDExOTE0NSwgMCwgOTE3NTU4LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgCkBAIC0xOTIzOCwyNiArMTkyNDAsMjYgQEAKICAgICAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCA3MTMzNiwgMCwgMCwgMCwgNjQyOTMsIAogICAgIDY4MDk4LCAyNjM1LCAwLCAwLCA5ODM4MzcsIDAsIDk4MzYzMiwgNzgzNSwgNzAwNDAsIDAsIDE5NDk4OCwgOTIyODUsIAogICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCA5ODMxMDIsIDAsIDAsIDcwMDMzLCA0MDExLCAKLSAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDg4LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKKyAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDg5LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKICAgICA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgCi0gICAgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ3NiwgOTgzNDczLCA5ODM0NzQsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgCi0gICAgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIDk4MzQ4MCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCAKKyAgICAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDc3LCA5ODM0NzQsIDk4MzQ3NSwgMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCAKKyAgICA5NjcxLCAxMTI1LCA0Mzk5LCAxMjc0NzksIDkxNzYxMCwgOTgzNDgxLCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIAogICAgIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgCiAgICAgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCAKICAgICA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAKICAgICAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCi0gICAgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjA3MTAsIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCA5ODM0NjUsIAotICAgIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDAsIDAsIDc4NjM3LCAxMjY0NywgMCwgMTI4MDQzLCA2OTg5MywgMTAzNiwgOTgzNDY5LCAKLSAgICA5MjQxOSwgMTcyMywgMTI4MDU2LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDAsIDEwNzA1LCA3Mzg3NiwgOTgzNDYxLCAKLSAgICA3NDQ4NiwgOTgzNDU5LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA2ODQzNywgCisgICAgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjA3MTAsIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCA5ODM0NjYsIAorICAgIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDAsIDAsIDc4NjM3LCAxMjY0NywgMCwgMTI4MDQzLCA2OTg5MywgMTAzNiwgOTgzNDcwLCAKKyAgICA5MjQxOSwgMTcyMywgMTI4MDU2LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDAsIDEwNzA1LCA3Mzg3NiwgOTgzNDYyLCAKKyAgICA3NDQ4NiwgOTgzNDYwLCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA2ODQzNywgCiAgICAgNzgxNDAsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA1NTI2MywgMTE5MDcsIAogICAgIDE5NTAwMCwgNTY5MCwgOTIyNTUsIDkzOTkyLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIDk1MDYsIAogICAgIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIDAsIAogICAgIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCiAgICAgMTI2MDIsIDk0MDQ0LCAwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIAogICAgIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCAwLCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgCi0gICAgMTI3NDkwLCA5ODM0MzMsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDc0Nzk3LCAwLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIAotICAgIDQxMTc1LCA5ODM0NDAsIDk4MzQzNywgOTgzNDM4LCA1Mjk2LCA5ODM0MzYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIAorICAgIDEyNzQ5MCwgOTgzNDM0LCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCAKKyAgICA0MTE3NSwgOTgzNDQxLCA5ODM0MzgsIDk4MzQzOSwgNTI5NiwgOTgzNDM3LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAKICAgICAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCAKICAgICA0Mzk3NiwgMCwgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAxMTg4NjksIDAsIDQ1NDAsIAogICAgIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIDQ2NDMsIDUxMzIsIDAsIDYzODksIDEyODUzMywgNTE0MywgMCwgCkBAIC0xOTI3NSwxNCArMTkyNzcsMTQgQEAKICAgICA1MTk4LCA0MzQ5LCAxMDM5MCwgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMCwgNDMzMDcsIDAsIAogICAgIDExODk3MywgMCwgMTIxMzQsIDAsIDAsIDExODg0MywgOTEyNiwgNDM1LCAwLCAxMjAxNCwgMTAzNzcsIDgwOTMsIDkwNzksIAogICAgIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDAsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIDEyODE3OCwgNTczOCwgCi0gICAgOTgzMjEzLCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDAsIDY4MTEyLCA3ODcyLCA4NTgxLCAwLCAxMjYwLCAKKyAgICA5ODMyMTQsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgNjgxMTIsIDc4NzIsIDg1ODEsIDAsIDEyNjAsIAogICAgIDMxNDksIDUzNTksIDEyMDEzNCwgMCwgNzkxNCwgNTM1NywgOTIxNzAsIDEyODY1OSwgMjYyNCwgNTM2NCwgMCwgMTE0MzEsIAogICAgIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCAwLCA3ODI5MywgNDIyNzEsIDc4Mjg5LCA0MjkxNywgMTIwNzkzLCAwLCAKICAgICA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODM4NSwgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCAKICAgICA3ODM3OSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIDc0NTgxLCAxMjA2MzIsIDAsIDAsIAogICAgIDQxODg5LCA5MjQ1MywgMCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAwLCAwLCA3MzgxOSwgMTIwNTg4LCAKICAgICA1MDEyLCA3NzkxMiwgNDEzNjIsIDY5ODYyLCA3ODI5NiwgMTE5MjEsIDAsIDExNzY5LCAwLCA2ODYwOSwgNDEzNjQsIDAsIAotICAgIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAwLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAxMTYxMSwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCAKICAgICA4MTk5LCA3ODM4OSwgMTE5OTE3LCA2NzcsIDExOTkxNiwgMCwgMTE5OTMyLCAxMjcxNjksIDAsIDAsIDAsIDMzNDksIAogICAgIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCAwLCA1ODAyLCAwLCA4NjE1LCAwLCAwLCA0OTEsIDEyODgxOSwgMTAxOTAsIAogICAgIDEyMDY5OCwgNjU4MzcsIDEyODgyMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCkBAIC0xOTMyMyw3ICsxOTMyNSw3IEBACiAgICAgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgOTgzNjY0LCA0MzM2NywgNjQ1NzksIAogICAgIDkxNzkzMCwgNzg1MiwgMCwgMCwgNjc1NCwgNjMxMiwgMCwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgCiAgICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAwLCA5ODMyMjgsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDE5NTAzMCwgCisgICAgOTUzMiwgNjYzNTUsIDAsIDk4MzIyOSwgOTE3OTI1LCA2NDM0MywgMTk1MDMyLCAxMjgyODEsIDE5NTAzMSwgMCwgMTk1MDMwLCAKICAgICAxOTUwNTcsIDExNDQ1LCAwLCAyMTEyLCAxOTUwNTYsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIAogICAgIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgMCwgMTIwNDkzLCAKICAgICAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCAKQEAgLTE5MzU4LDQzICsxOTM2MCw0MyBAQAogICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKICAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAogICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzMSwgOTgzMzMwLCA5ODMzMjksIDk4MzMyOCwgMjczNSwgCisgICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzMiwgOTgzMzMxLCA5ODMzMzAsIDk4MzMyOSwgMjczNSwgCiAgICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCiAgICAgOTgzOTE5LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKICAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzQ5LCA2NzU4LCAKLSAgICA5ODM5MTcsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjAsIDcwMTAwLCAKLSAgICA5ODMzMTgsIDcyNjAsIDk4MzMxNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAorICAgIDk4MzkxNywgMTYxNSwgNTg1NSwgODA5LCAwLCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIDk4MzMyMSwgNzAxMDAsIAorICAgIDk4MzMxOSwgNzI2MCwgOTgzMzE3LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgCiAgICAgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCAKICAgICA1MzIsIDc4NjYzLCAwLCA5ODM3ODcsIDEyMDYwOSwgMCwgMzM3MCwgMCwgMTEzNjEsIDU0NDMsIDc4Nzc4LCA4MTUzLCAKLSAgICA3Mzc2NywgMCwgMTA3NDEsIDAsIDIyOTgsIDAsIDk4MzkwOCwgNjU0OTUsIDY0NzA2LCA5ODMzMTAsIDQzMzQ0LCA5ODMzMDgsIAotICAgIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCA5ODMzMDMsIDk4MzMwMiwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCisgICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MDgsIDY1NDk1LCA2NDcwNiwgOTgzMzExLCA0MzM0NCwgOTgzMzA5LCAKKyAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzA0LCA5ODMzMDMsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAogICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAogICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKLSAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMyOTcsIAotICAgIDExNzE4LCA5ODMyOTUsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKKyAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMyOTgsIAorICAgIDExNzE4LCA5ODMyOTYsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKICAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKICAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKLSAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjkxLCA5ODMyOTAsIDEyODI3MywgMTA3NDUsIAorICAgIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMyOTIsIDk4MzI5MSwgMTI4MjczLCAxMDc0NSwgCiAgICAgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIAogICAgIDEyMDc3MywgMCwgOTgxMiwgMCwgNDQ2MCwgMCwgMCwgNzEzMDcsIDEyODAzOCwgMCwgMCwgMTI3MTc0LCA2NDI3OCwgCiAgICAgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzM4NzksIDE4MDEsIDEyODM1LCAxMTkwMjksIDAsIDczODIzLCAwLCAKLSAgICA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDk4MzI3OCwgOTgzMjc3LCAKLSAgICAxMjg1NzAsIDEyMTA2LCA5ODMyNzQsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKKyAgICA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDk4MzI3OSwgOTgzMjc4LCAKKyAgICAxMjg1NzAsIDEyMTA2LCA5ODMyNzUsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKICAgICA5NTIyLCA3NDA3OSwgNzgyNjYsIDY2NjA0LCAwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIDc3ODk5LCAKICAgICA3NzkwMCwgODQ1MSwgMCwgMCwgMCwgNjk3MzksIDAsIDAsIDAsIDAsIDI5MDgsIDAsIDQzMzg2LCA2NDkwMiwgNDI0MywgMCwgCi0gICAgMTIyMzksIDAsIDAsIDQ0NDEsIDAsIDk4MzI3MSwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDk4MzI2NywgNDExLCA5ODMyNjUsIAotICAgIDkxOTksIDk4MzI2MywgNDA1NiwgMTE4OTkyLCA0MTg5MCwgMCwgMjczMCwgNDE2MDQsIDk4MzkyOCwgNTQyOCwgMTk0NzQzLCAKKyAgICAxMjIzOSwgMCwgMCwgNDQ0MSwgMCwgOTgzMjcyLCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgOTgzMjY4LCA0MTEsIDk4MzI2NiwgCisgICAgOTE5OSwgOTgzMjY0LCA0MDU2LCAxMTg5OTIsIDQxODkwLCAwLCAyNzMwLCA0MTYwNCwgOTgzOTI4LCA1NDI4LCAxOTQ3NDMsIAogICAgIDMzNjQsIDQyMjY1LCA2NDQzNywgMTI3OTM1LCAxMTg4MTYsIDE5NDc0MiwgOTY4NCwgMjE2LCAwLCAxNDAxLCAxMjgwNTMsIAogICAgIDQ0MDEyLCAwLCAwLCA5MjU4NSwgOTE1OCwgNzc4NDIsIDY5OTA1LCA1NzY4LCAwLCAwLCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgCi0gICAgNjU4OTUsIDAsIDAsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCA5ODMyNTUsIDkzOTYyLCAyNzk0LCAKKyAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI1NiwgOTM5NjIsIDI3OTQsIAogICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAogICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKICAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAotICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQzLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCisgICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNDQsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKICAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCAKICAgICA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIAogICAgIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgCi0gICAgMTAzODUsIDQxNzA2LCAwLCAwLCA5ODM0MDUsIDAsIDExNzM5LCA5ODM0MTgsIDQxOTgxLCAwLCA1OTM4LCAwLCA0Mzc2NiwgCisgICAgMTAzODUsIDQxNzA2LCAwLCAwLCA5ODM0MDYsIDAsIDExNzM5LCA5ODM0MTksIDQxOTgxLCAwLCA1OTM4LCAwLCA0Mzc2NiwgCiAgICAgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDAsIDEzMDU3LCAwLCAxMjY5NzYsIDAsIDEwMDA5LCAwLCAKICAgICA0MTcwMywgOTgzNjI5LCAxMjE2NSwgMCwgMCwgOTg4NSwgMCwgODA3NywgMCwgMTI3OTA4LCAwLCAwLCAwLCA5MjQ1NywgMCwgCiAgICAgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIDAsIDEyODM0MCwgMCwgMCwgMCwgMTA5NzAsIApAQCAtMTk0MDYsNTMgKzE5NDA4LDUzIEBACiAgICAgMCwgNDQ3NywgMTE4OTY0LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIDY2MTk4LCA0MTg4MCwgCiAgICAgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCA3Mzc4OCwgNzc4OCwgCiAgICAgNDg0NywgMCwgMTI3NzU5LCAwLCAwLCAwLCAxNTgxLCA2NTM1LCA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCAKLSAgICA3ODE1OCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgOTgzNDMwLCA2ODYyNSwgOTgzNDI4LCA3MjY5LCAwLCAKLSAgICA1OTY0LCAxMjkwOCwgOTgzNTU1LCAwLCA3NDc2NCwgNzQ0NzcsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MjEsIDQ0MywgCi0gICAgOTgzNDE5LCA0OTQ0LCA1NDY3LCAxMTk2MDMsIDAsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDAsIAorICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzEsIDY4NjI1LCA5ODM0MjksIDcyNjksIDAsIAorICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyMiwgNDQzLCAKKyAgICA5ODM0MjAsIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgCiAgICAgMTk0OTMxLCAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIAogICAgIDgyNCwgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIAogICAgIDExOTgxOSwgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDExOTgzMiwgCiAgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCiAgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCAxMTk5NDksIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAotICAgIDE4NTUsIDk4MzQwNCwgNjg2NjksIDk4MzQwMiwgOTI0NDUsIDEyNzU1NCwgMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIAotICAgIDExNzk3LCA5ODM0MTAsIDEyODE1OSwgOTIwMiwgNDY1NCwgOTgzNDA2LCA5ODM0MDgsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAotICAgIDQ2NDksIDY1MjA5LCA5ODM0MDksIDAsIDQ2NDgsIDQzMDgwLCA5ODMzOTgsIDk4MzM5OSwgOTgzMzk2LCA2MjQ2LCA2NDk1MCwgCisgICAgMTg1NSwgOTgzNDA1LCA2ODY2OSwgOTgzNDAzLCA5MjQ0NSwgMTI3NTU0LCAwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgCisgICAgMTE3OTcsIDk4MzQxMSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA5ODM0MDcsIDk4MzQwOSwgNjg2MzgsIDczOTkzLCAxMDUyNSwgCisgICAgNDY0OSwgNjUyMDksIDk4MzQxMCwgMCwgNDY0OCwgNDMwODAsIDk4MzM5OSwgOTgzNDAwLCA5ODMzOTcsIDYyNDYsIDY0OTUwLCAKICAgICA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIDQzMTg3LCA4NjY5LCAKLSAgICA5ODM0MDcsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgOTgzMDYwLCA5ODM0MTEsIDAsIDY4MzY5LCAxMjAwNTQsIAorICAgIDk4MzQwOCwgNjgyMSwgNjUwOTMsIDAsIDc4ODgxLCAyNzE2LCAwLCA5ODMwNjAsIDk4MzQxMiwgMCwgNjgzNjksIDEyMDA1NCwgCiAgICAgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDc5OTIsIDAsIDAsIDQ2NjIsIDc4MDMzLCA3ODAzMiwgCiAgICAgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCA3ODExLCAKLSAgICA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDAzLCAKKyAgICA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDA0LCAKICAgICAwLCAwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIAotICAgIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgOTgzMzg3LCA5NDA3MCwgOTgzMzg1LCA5ODMzODYsIAotICAgIDk4MzM4MywgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCA3ODg4MywgCi0gICAgOTgzMzc4LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgOTgzMzcyLCA1OTU4LCAwLCA5ODM0MjUsIDQyMTUsIAotICAgIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgOTgzMzgxLCA0MTMxMywgNTIyLCA1MzY4LCAwLCA2NTgwMywgMCwgNTM2NiwgCi0gICAgMTIyMDEsIDUzNzIsIDAsIDk4MzQwMSwgMCwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzMzkyLCAwLCA0NjM4LCA5ODMzOTcsIAorICAgIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgOTgzMzg4LCA5NDA3MCwgOTgzMzg2LCA5ODMzODcsIAorICAgIDk4MzM4NCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCA3ODg4MywgCisgICAgOTgzMzc5LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgOTgzMzczLCA1OTU4LCAwLCA5ODM0MjYsIDQyMTUsIAorICAgIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgOTgzMzgyLCA0MTMxMywgNTIyLCA1MzY4LCAwLCA2NTgwMywgMCwgNTM2NiwgCisgICAgMTIyMDEsIDUzNzIsIDAsIDk4MzQwMiwgMCwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzMzkzLCAwLCA0NjM4LCA5ODMzOTgsIAogICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCAxMjc4MzMsIDUzNzYsIDE4MzUsIDUzMzUsIDE5NDk2NiwgCiAgICAgMTI4MDg5LCA0NjMzLCAwLCA2ODExOSwgMTE4MCwgNDYzMiwgMTI4MDkzLCA1Mzg3LCA1MzMzLCAwLCAwLCA0MjA5NCwgCiAgICAgNTMzMSwgNDYzNCwgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgCiAgICAgNjUwOTcsIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKLSAgICA5ODMzNjYsIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAotICAgIDc0Mzg0LCA5ODMzNzAsIDY4Mzc3LCA2MjQ4LCA5ODMzNTQsIDk4MzM1NSwgOTgzMzUyLCA0MjMxOCwgOTI1ODIsIDUyMjksIAorICAgIDk4MzM2NywgMTYwOCwgMjczOCwgMCwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCisgICAgNzQzODQsIDk4MzM3MSwgNjgzNzcsIDYyNDgsIDk4MzM1NSwgOTgzMzU2LCA5ODMzNTMsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCiAgICAgNDc1NywgMCwgMCwgMjcyOCwgNDc1MiwgNjQ1NjMsIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDAsIDEwNzEzLCA3MTY2LCAwLCAKICAgICAyNjIyLCA3NDYwLCAxMjczMDIsIDAsIDAsIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCAKICAgICA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMCwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIAotICAgIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAwLCA1NTI1LCA1MzMwLCA1MzE5LCA5ODM0MTIsIAotICAgIDk4Mzg2MywgMTk0OTA3LCA0NDAwMywgMCwgOTgzNDcyLCA5ODM0MTUsIDEyMDQ5OCwgMTI3ODUxLCAxOTUwMDksIDk4Mzg1NiwgCi0gICAgNzQwMjIsIDk4MzQxNCwgNjQ2MDksIDY4NjQzLCAxMjA2MzQsIDk4MzQ4MSwgNTcyMSwgOTgzMzkzLCA1NTE5LCA4NjMyLCAKLSAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgOTgzMzQ0LCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKLSAgICAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMzNDcsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCAKLSAgICA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDk4MzM0MSwgOTgzMzM4LCA3Nzg0OSwgNDYwOCwgNjQyNjAsIAorICAgIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAwLCA1NTI1LCA1MzMwLCA1MzE5LCA5ODM0MTMsIAorICAgIDk4Mzg2MywgMTk0OTA3LCA0NDAwMywgMCwgOTgzNDczLCA5ODM0MTYsIDEyMDQ5OCwgMTI3ODUxLCAxOTUwMDksIDk4Mzg1NiwgCisgICAgNzQwMjIsIDk4MzQxNSwgNjQ2MDksIDY4NjQzLCAxMjA2MzQsIDk4MzQ4MiwgNTcyMSwgOTgzMzk0LCA1NTE5LCA4NjMyLCAKKyAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgOTgzMzQ1LCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKKyAgICAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMzNDgsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCAKKyAgICA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDk4MzM0MiwgOTgzMzM5LCA3Nzg0OSwgNDYwOCwgNjQyNjAsIAogICAgIDQxMTI0LCA1MTkwLCA2NzYyOCwgMCwgNjgxNDUsIDcwODYsIDAsIDY3OTk4LCA2NzYyMCwgMCwgMjczNCwgMTEwNzQsIDAsIAogICAgIDY3NjI3LCA0MzU5MywgMCwgNjc2MjUsIDU5NjAsIDAsIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgCiAgICAgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCAKICAgICA2MjM5LCAxMTk5NTYsIDQxMjU2LCAwLCA2ODEzNCwgMCwgNzQyMDksIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAKICAgICAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCAKICAgICA3MTkzLCA2ODEzNywgMCwgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCA5ODM4MzEsIDQ4NjksIDEyMDU2MywgMCwgCi0gICAgNDIyMywgMTI4MjAxLCA2NjUwLCAxMjY1MDksIDAsIDk4MzQ1NSwgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCAKKyAgICA0MjIzLCAxMjgyMDEsIDY2NTAsIDEyNjUwOSwgMCwgOTgzNDU2LCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIAogICAgIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgMCwgCiAgICAgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDAsIDY4NjMxLCAKLSAgICA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCA1OTY2LCA5ODM0NzgsIDQ3NzgsIDAsIDEwODYzLCAwLCA0NzgxLCAwLCAKKyAgICA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCA1OTY2LCA5ODM0NzksIDQ3NzgsIDAsIDEwODYzLCAwLCA0NzgxLCAwLCAKICAgICA2NDQwNywgMCwgMTI4MzIzLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgCiAgICAgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgCiAgICAgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCAKQEAgLTE5NDYwLDE5ICsxOTQ2MiwxOSBAQAogICAgIDQ4NTQsIDEyNzkxOCwgNTE2NCwgOTgzODYxLCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgCiAgICAgOTI0NzEsIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDAsIDQxMjY4LCA0ODQ4LCAyNTMwLCA5MTc5MDksIDIwNjgsIDE5NjQsIAogICAgIDAsIDczNzYyLCAxMDQ1OCwgMCwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDAsIDY4MjExLCA4MzIyLCA0Nzk3LCAKLSAgICA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQxNiwgMzAzLCA5ODMxMDEsIDkyNjIyLCAKLSAgICA5ODM0MTcsIDI0MzcsIDAsIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgMCwgNDMyOTIsIDAsIDI0NDEsIAorICAgIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDE3LCAzMDMsIDk4MzEwMSwgOTI2MjIsIAorICAgIDk4MzQxOCwgMjQzNywgMCwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCAwLCA0MzI5MiwgMCwgMjQ0MSwgCiAgICAgMTA3MzksIDY1MDkwLCAwLCAxMTkzMjcsIDEyNjU0MSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCiAgICAgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMCwgMCwgCiAgICAgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDAsIDE4MSwgCi0gICAgOTgzNDIyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIAorICAgIDk4MzQyMywgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAKICAgICA5ODM2MDEsIDAsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCAKICAgICA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgCiAgICAgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIAogICAgIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAotICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA5ODM0MzEsIDc4NzE0LCA2NDE5MSwgCisgICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDk4MzQzMiwgNzg3MTQsIDY0MTkxLCAKICAgICA2NDE5MCwgODg5OCwgNjQxODgsIDAsIDQxMDMwLCA3ODgzNiwgMCwgOTE3ODM1LCA3ODgyMCwgOTE3ODM0LCAwLCA3ODgwNSwgCi0gICAgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzNDI5LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgCisgICAgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzNDMwLCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgCiAgICAgNzA3OSwgNTg1NiwgMTI3MDQzLCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDAsIDEwNTY0LCAKICAgICA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIAogICAgIDQyNDgsIDAsIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCkBAIC0xOTQ4OCwzMCArMTk0OTAsMzAgQEAKICAgICAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMCwgNDI2MDksIDAsIDc0MTc1LCAwLCAxMjcwMTYsIDAsIDk4Mzg2NCwgCiAgICAgNDIxMzAsIDAsIDUxNTEsIDkxNzgyOSwgOTE3ODIzLCAwLCA5Mzk4MCwgMCwgNzYyMCwgMzgwMCwgNjUxMjIsIDAsIDAsIAogICAgIDgzNTUsIDc4NTQsIDAsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIAotICAgIDEwNzExLCA0NTkzLCAxMjc3NDUsIDEyMDU4NCwgOTgzNDAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCAKKyAgICAxMDcxMSwgNDU5MywgMTI3NzQ1LCAxMjA1ODQsIDk4MzQwMSwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMCwgMCwgMCwgCiAgICAgNjQ3NTksIDYzODEsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAogICAgIDc4MjA0LCA2NDEzMSwgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgMCwgNzc4NzYsIDYzNiwgMTE2OTgsIAotICAgIDAsIDk4MzQ0MywgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIDkyNDMxLCAKLSAgICAxMTk5NjAsIDE0NzcsIDQzMjg5LCAwLCA3NDM1OCwgODYxOCwgOTgzMzk0LCA5OTA4LCA5ODM5NzIsIDAsIDAsIDM5MzcsIAotICAgIDEyMzEyLCAwLCA5ODMzOTUsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIDkzOTU0LCA3NDUzMiwgMTI2NTk0LCA2MjQ0LCAKLSAgICA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgOTgzNDY4LCAwLCAxMTk1MCwgNTM5MiwgNDIyNDgsIDY1MTI5LCA2ODY1NiwgCisgICAgMCwgOTgzNDQ0LCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIAorICAgIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCA4NjE4LCA5ODMzOTUsIDk5MDgsIDk4Mzk3MiwgMCwgMCwgMzkzNywgCisgICAgMTIzMTIsIDAsIDk4MzM5NiwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIAorICAgIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCA5ODM0NjksIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCAKICAgICA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgMzU0LCA2ODYxNSwgMTE5OTQ4LCAKICAgICA3ODUwMywgMCwgMCwgNDIwMzksIDAsIDAsIDY0MTQyLCA2MjYsIDAsIDU4OTUsIDAsIDAsIDU3ODAsIDAsIDAsIDEyODg3NCwgCiAgICAgMCwgMCwgNDMyOTcsIDk4MzA3OSwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCA2NjQ1MiwgCiAgICAgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIAogICAgIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCA5MjI4NywgCi0gICAgMTI4MjI0LCAwLCAwLCA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCA5ODM0NjAsIDQzMDYxLCA3MDU0LCAKKyAgICAxMjgyMjQsIDAsIDAsIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA5MTc4MDcsIDAsIDk4MzQ2MSwgNDMwNjEsIDcwNTQsIAogICAgIDY0MTQ3LCAwLCA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDEyMDAwNiwgMTE5ODEsIDEyMjAyLCAwLCAKICAgICAxMTAzMiwgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY4NjYyLCA2NTg0MywgMTcwLCAwLCAwLCA0MTY5LCAwLCA0MTg1OSwgCiAgICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCAwLCAwLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCiAgICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCA5MTc4NjUsIDQ3MzcsIDExNzc5LCA0NzQyLCAxMjA1NjQsIDkyMzkxLCAKLSAgICA3MzczNiwgOTgzMzU2LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKLSAgICA0MjEwOCwgOTgzMzQ2LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAotICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzU4LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKKyAgICA3MzczNiwgOTgzMzU3LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKKyAgICA0MjEwOCwgOTgzMzQ3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAorICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzU5LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKICAgICAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgCiAgICAgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDAsIDExOTU5MSwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIAogICAgIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCAKLSAgICA0ODI1LCA2OTI0MCwgOTE3ODUyLCA2ODY1NSwgMCwgOTgzMzgwLCAwLCAwLCA2ODYyOCwgOTgzMzM5LCA5ODUwLCAxMTg5MzcsIAorICAgIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIDY4NjU1LCAwLCA5ODMzODEsIDAsIDAsIDY4NjI4LCA5ODMzNDAsIDk4NTAsIDExODkzNywgCiAgICAgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAKICAgICAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAxMjY2MjYsIDY0MTAxLCAwLCAwLCAKICAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAwLCAxODg4LCAxOTYwLCA3ODYxLCA5MTc4NTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIApAQCAtMTk1MjAsNyArMTk1MjIsNyBAQAogICAgIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAKICAgICAzOTI0LCAwLCAxMTM2NiwgOTE3ODQzLCAwLCAwLCA5MTc4NDYsIDQxMTE2LCA5MTc4NDQsIDkxNzU2NCwgMCwgMTEzNjMsIAogICAgIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDEyNjY0MSwgNjYyMDIsIDg5NTcsIDQxMzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyNzQwLCAxMjg3MDIsIDQ3MjIsIDY4MTYsIDEyNzc5MywgMTI3NTksIDQ3MjUsIDk4MzM3NSwgNDcyNiwgMCwgCisgICAgMCwgMTI3NDAsIDEyODcwMiwgNDcyMiwgNjgxNiwgMTI3NzkzLCAxMjc1OSwgNDcyNSwgOTgzMzc2LCA0NzI2LCAwLCAKICAgICAxOTQ4OTIsIDAsIDEyODMyMSwgOTE3OTA1LCAwLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDAsIDgwNTIsIDQ3NiwgMCwgMCwgCiAgICAgMTI4Mjk0LCA2NDIxMiwgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMCwgCiAgICAgMCwgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCAwLCA2NDA2NywgMTI3MzI4LCA4NTUyLCA2NDExMywgNDE4NDUsIApAQCAtMTk1MzcsMTEgKzE5NTM5LDExIEBACiAgICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKICAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAogICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDk4MzQ2MiwgNjQwODAsIDAsIDY0MDkwLCAwLCA2OTkxMywgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAKKyAgICAxMjcyMzMsIDY0MDkyLCA5ODM0NjMsIDY0MDgwLCAwLCA2NDA5MCwgMCwgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMCwgODQ1NCwgCiAgICAgMTI3ODg4LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIAogICAgIDc4MTE2LCAwLCA5ODMxMzksIDAsIDk4MzA3NCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA5ODM4NjUsIAotICAgIDAsIDk4MzQyNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAwLCA0NTI5LCAKLSAgICAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCA5ODM0MjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIAorICAgIDAsIDk4MzQyNywgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAwLCA0NTI5LCAKKyAgICAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCA5ODM0MjUsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIAogICAgIDIyOTEsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIAogICAgIDAsIDQxOTMsIDkyMjUwLCA0MjQxLCA5ODMwNTcsIDc5OTgsIDAsIDAsIDAsIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCAwLCAKICAgICAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgOTgzODc3LCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKQEAgLTE5NTUwLDEzICsxOTU1MiwxMyBAQAogICAgIDI4MCwgNzQ1NTgsIDEyNzMzMiwgNjgxMzgsIDEzMDcyLCAxODk0LCAwLCAwLCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIAogICAgIDExNzczLCAwLCAwLCAwLCAwLCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzQzLCAxMTkyMzcsIDAsIDEyODgwNSwgCiAgICAgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAxMjcxNDMsIDAsIAotICAgIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA5ODMzNDgsIDY5Njg1LCA5ODM3NDcsIDAsIDAsIDQ0MDIwLCAKKyAgICA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgOTgzMzQ5LCA2OTY4NSwgOTgzNzQ3LCAwLCAwLCA0NDAyMCwgCiAgICAgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDAsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIAogICAgIDM5NDMsIDAsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAwLCAwLCA1MzUyLCAwLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgCiAgICAgNDEyMDQsIDEyNzMyMiwgNDEyMDksIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDAsIDAsIDU0MjAsIDM4OTcsIDEwMTM0LCAwLCAKICAgICA3NDQxNywgNDAxOCwgNzE1MCwgNjgxMjcsIDAsIDAsIDAsIDAsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAogICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAwLCA3ODc1MSwgNzE0NiwgMCwgNjUxNTAsIAotICAgIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCA5ODM0MjcsIDY5NjQxLCAxMDc1MywgCisgICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDk4MzQyOCwgNjk2NDEsIDEwNzUzLCAKICAgICAxMDgzMCwgMCwgNjE1LCA2NDQ5MCwgNzU3NCwgOTI2MTcsIDc3OTIyLCAwLCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIAogICAgIDAsIDAsIDY3OTk2LCAyMDIwLCAwLCA0MDIyLCAxMjg3ODMsIDAsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCAwLCA3NDMyOSwgCiAgICAgMCwgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAKQEAgLTE5NTkwLDkgKzE5NTkyLDkgQEAKICAgICA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMCwgMjAwNCwgOTA5NiwgOTc4MiwgCiAgICAgMTI4ODQ4LCA5MTcyLCAxMjg1NDUsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgNzQ3NzMsIDAsIDAsIDY0NzgyLCAKICAgICAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAwLCAwLCAxMjczNjQsIDEwNjA2LCA4MDY1LCAKLSAgICAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgMCwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCA5ODMyODAsIDQzMjgwLCA4MjE5LCAKKyAgICAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgMCwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCA5ODMyODEsIDQzMjgwLCA4MjE5LCAKICAgICA2ODQwMiwgMTgxMiwgMTE5OTYzLCA5ODM2ODMsIDAsIDEyNjQ4OCwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIAotICAgIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDk4MzI1MywgNjg2NzgsIAorICAgIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDk4MzI1NCwgNjg2NzgsIAogICAgIDAsIDAsIDEwNDksIDAsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAogICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCiAgICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgOTgzMTMwLCAyMDA5LCAwLCAwLCAxMjcxNDIsIApAQCAtMTk2MzQsOSArMTk2MzYsOSBAQAogICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIAogICAgIDAsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyNzkyMiwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc4OCwgCiAgICAgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCAyMjg1LCA5MjM0NCwgMzk4NiwgCi0gICAgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCAwLCA5ODMzNTAsIDk1NDEsIDc4Mjc2LCAwLCAxMTI3NSwgODU0MCwgCi0gICAgMTE0OTgsIDAsIDk4MzM0OSwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgMCwgCi0gICAgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTgzMzQyLCAwLCAxNjA2LCAxMjAzNDgsIAorICAgIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgMCwgOTgzMzUxLCA5NTQxLCA3ODI3NiwgMCwgMTEyNzUsIDg1NDAsIAorICAgIDExNDk4LCAwLCA5ODMzNTAsIDQxMDQwLCAyNDU5LCAwLCAxMzA2MCwgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIDAsIDAsIAorICAgIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDk4MzM0MywgMCwgMTYwNiwgMTIwMzQ4LCAKICAgICAxMjAzNTEsIDMwOTMsIDY4NDM2LCAwLCA5ODMwNjEsIDExOTYxMywgMCwgMCwgNDMxMiwgNzQwOTEsIDEyMDMzNywgCiAgICAgMTIwMzM2LCAxMTkyMywgNDAyMywgMTIwMzMzLCA1NzYzLCA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgCiAgICAgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCAwLCAwLCAxMTg4MzcsIDExOTczLCAKQEAgLTE5NjQ2LDExICsxOTY0OCwxMSBAQAogICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDkzOTk2LCAyMzc2LCAwLCAxMTkzMjAsIAogICAgIDAsIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgCiAgICAgMCwgMCwgOTgzMDg0LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDk4MzA4NiwgOTgzNTczLCAxMjAwNDcsIDEyODU3NSwgMCwgCi0gICAgMCwgMTIwMDQ5LCAwLCAxODQ3LCAwLCAxMDMzOSwgOTgzMzU3LCA0MjM4NCwgMCwgNDIyNywgNzQxNTgsIDAsIDkyNTAxLCAKLSAgICA0MzAzMiwgMCwgNDIzNjUsIDAsIDEyNjcxLCAxMTM4NCwgMCwgOTgzNDU3LCAwLCA2NDc5NywgOTgzMzM3LCA1ODIwLCAKLSAgICA5ODMzMzYsIDEyMDA1MiwgMTIwMDY1LCAwLCAxMjAwNjQsIDEyMDY1MCwgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAKKyAgICAwLCAxMjAwNDksIDAsIDE4NDcsIDAsIDEwMzM5LCA5ODMzNTgsIDQyMzg0LCAwLCA0MjI3LCA3NDE1OCwgMCwgOTI1MDEsIAorICAgIDQzMDMyLCAwLCA0MjM2NSwgMCwgMTI2NzEsIDExMzg0LCAwLCA5ODM0NTgsIDAsIDY0Nzk3LCA5ODMzMzgsIDU4MjAsIAorICAgIDk4MzMzNywgMTIwMDUyLCAxMjAwNjUsIDAsIDEyMDA2NCwgMTIwNjUwLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIAogICAgIDEyMDA2MywgMCwgNzM3NywgMTI3ODY3LCA0MTc5OSwgNjU1MzAsIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgCi0gICAgOTgzMzMyLCAxMTg5MzgsIDAsIDEwODUzLCA5MjYsIDk4MzM2MSwgNzQxODQsIDk4MzM2MCwgMTIwMDU1LCAwLCA0MzE3NSwgCisgICAgOTgzMzMzLCAxMTg5MzgsIDAsIDEwODUzLCA5MjYsIDk4MzM2MiwgNzQxODQsIDk4MzM2MSwgMTIwMDU1LCAwLCA0MzE3NSwgCiAgICAgMCwgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAogICAgIDEyNjk5LCA4MzMxLCAwLCAzMDkxLCA0MTAzNCwgMTI3MzUzLCA5ODM2NzIsIDgzNjAsIDAsIDc4MDQ0LCAzMjEsIDQyMjksIAogICAgIDY0NTQzLCA5MTc5NDYsIDY1NTYzLCAwLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMCwgOTE5NSwgOTIzODYsIApAQCAtMTk2NjQsNyArMTk2NjYsNyBAQAogICAgIDc4MjIyLCAxMzQ2LCAwLCA5MTc2MzEsIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgMCwgODI3MiwgMTI3ODEyLCAKICAgICAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyNzIzNCwgNDM1NjQsIDAsIDAsIDk1ODQsIDEwNDY1LCA5ODM4OTMsIAogICAgIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIDEyMDIzMCwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAwLCAwLCAyNjUsIAotICAgIDQxNzk1LCA2NDY2NiwgMTI2NTA4LCA0MzUzMCwgMjc1MiwgMCwgMCwgOTgzNDg1LCA1OSwgMCwgOTgzNTkzLCAwLCA5MjM3MSwgCisgICAgNDE3OTUsIDY0NjY2LCAxMjY1MDgsIDQzNTMwLCAyNzUyLCAwLCAwLCA5ODM0ODYsIDU5LCAwLCA5ODM1OTMsIDAsIDkyMzcxLCAKICAgICA3Nzg3MywgNDE4MTAsIDAsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCAwLCA0MjI1MiwgNDIyMTMsIDgwMDksIAogICAgIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA2NjI1NSwgMTMxMjcsIDEyMDA2NywgMCwgNzQzOTcsIDEyMDIzNSwgOTE3OTc3LCAKICAgICA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCAxOTQ4NzAsIDIxMDMsIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAKQEAgLTE5NzAzLDcgKzE5NzA1LDcgQEAKICAgICA3ODcxOSwgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDE5NDY1NSwgMCwgNDEwOTQsIDAsIDAsIDE5NDg5MywgMCwgCiAgICAgOTI2ODksIDYxOTYsIDY5NDUsIDkzOTY5LCAxOTQ4OTAsIDEyODE4NCwgMTIwNDkxLCAxMTgxNiwgMTk0OTQzLCA1NzMzLCAKICAgICAyOTMwLCAwLCAwLCA0MTA5OCwgMCwgNDEwOTMsIDAsIDY2NjI2LCA1ODgsIDk3NjAsIDAsIDE5NDcxNywgMTIzOCwgMjAwLCAKLSAgICA5ODMyMDUsIDE2NjAsIDczOTE2LCAwLCAxMTg5MDUsIDc0MzYyLCAwLCA5MjQ4NSwgMTk0NjUxLCAwLCA5ODM2OTcsIDMzOTQsIAorICAgIDk4MzIwNiwgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzY5NywgMzM5NCwgCiAgICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCiAgICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCiAgICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCkBAIC0xOTczMiw3ICsxOTczNCw3IEBACiAgICAgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIAogICAgIDAsIDc0MDE1LCA5MDU1LCA0MTg1MywgNDg1OCwgOTE3NzgwLCAwLCA0MzYsIDQ3NzEsIDAsIDI3ODYsIDAsIDQ4NTYsIAogICAgIDgwNTEsIDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDAsIDAsIDAsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCAKLSAgICA5ODMzNTEsIDczOTA2LCAxMjg2ODAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCA0MjE1NywgMCwgMzE1NywgCisgICAgOTgzMzUyLCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAogICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAogICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NTYsIDAsIDM4NiwgMCwgODgzNCwgMCwgCiAgICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIApAQCAtMTk3NDYsNyArMTk3NDgsNyBAQAogICAgIDQyNTA3LCAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMCwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCAKICAgICA1NDM3LCA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCAwLCAxOTksIDE5NDg0MywgNDEwNSwgMTk0ODQ1LCAKICAgICAxOTQ2OTksIDE5NDg0NywgMTk0NzEwLCAxMTk4NzUsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0ODAsIDE5NTA3MCwgCi0gICAgNjQ3MiwgNjU4MTQsIDczOTU0LCAwLCA0NzI0LCAwLCAwLCA5MTkxLCAwLCA2NDQzMiwgOTgzODA4LCA5ODMyNDEsIAorICAgIDY0NzIsIDY1ODE0LCA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDk4MzgwOCwgOTgzMjQyLCAKICAgICAxOTUwMjQsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDAsIDE5NTA1MSwgNjY3OSwgNzQ0MTIsIAogICAgIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgOTgzNjIyLCA5ODM2MjgsIDEyNzg5MSwgMTI3NDg0LCAxOTQ4MzMsIAogICAgIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNzgxOTUsIDY1NDQyLCAKQEAgLTE5NzkyLDExICsxOTc5NCwxMSBAQAogICAgIDY0MDMyLCA0MjczNSwgNjQwMzgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIDE5NDkyOCwgNjQwMTUsIDY0MDE0LCAKICAgICA2NDY4MSwgMTk0OTMwLCAwLCA3ODE0NSwgMCwgNDMwOTAsIDAsIDM0NzYsIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIAogICAgIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgMjA0LCAwLCA0ODAyLCA0MTExLCAKLSAgICA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCA5ODMyNTgsIDAsIDQ3NjcsIDkzNDMsIAorICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI1OSwgMCwgNDc2NywgOTM0MywgCiAgICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKICAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCiAgICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKLSAgICA5ODMyMjYsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKKyAgICA5ODMyMjcsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKICAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAogICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCiAgICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDAsIApAQCAtMTk4MDQsNyArMTk4MDYsNyBAQAogICAgIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIDAsIDExOTg4NiwgMTE5ODkxLCAxMTk4OTIsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgCiAgICAgMTE5ODk2LCAwLCA3ODAxLCA2NTU3OCwgMTk0ODM5LCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDE5NDk1NSwgMTEzNSwgCiAgICAgMCwgMCwgMTI4NTI1LCAxOTk1LCA2NzIyLCA5ODM5MTYsIDAsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCAKLSAgICA3ODQ5NiwgOTgzMzE5LCAwLCA2NjgyLCAwLCA3ODY3OSwgNjQ3MTAsIDQxNTQ3LCA5ODM2MjEsIDIwMTMsIDEyODI5MSwgCisgICAgNzg0OTYsIDk4MzMyMCwgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgOTgzNjIxLCAyMDEzLCAxMjgyOTEsIAogICAgIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIDExOTkwOCwgOTEzNywgCiAgICAgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIDIwMDIsIDIwMDAsIAogICAgIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgCkBAIC0xOTgxOSw3ICsxOTgyMSw3IEBACiAjZGVmaW5lIGNvZGVfcG9seSAzMjc3MQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfc3RhcnQgPSAweGYwMDAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9IDB4ZjAxYzE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gMHhmMDFjMjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7CiAgICAgMHgwMDAwLAogICAgIDB4MDAwMCwKQEAgLTE5OTgyLDYgKzE5OTg0LDcgQEAKICAgICAweDAxQTIsCiAgICAgMHgwMUEzLAogICAgIDB4MDM0RiwKKyAgICAweDA3MDksCiAgICAgMHgwQ0RFLAogICAgIDB4MEU5RCwKICAgICAweDBFOUYsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3ppcGltcG9ydC5jIGIvTW9kdWxlcy96aXBpbXBvcnQuYwppbmRleCAyZmViMmE4Li42MDNlZmQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3ppcGltcG9ydC5jCisrKyBiL01vZHVsZXMvemlwaW1wb3J0LmMKQEAgLTg2Miw2ICs4NjIsNyBAQAogICAgIGxvbmcgbCwgY291bnQ7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGNoYXIgbmFtZVtNQVhQQVRITEVOICsgNV07CisgICAgY2hhciBkdW1teVs4XTsgLyogQnVmZmVyIHRvIHJlYWQgdW51c2VkIGhlYWRlciB2YWx1ZXMgaW50byAqLwogICAgIFB5T2JqZWN0ICpuYW1lb2JqID0gTlVMTDsKICAgICBjaGFyICpwLCBlbmRvZl9jZW50cmFsX2RpclsyMl07CiAgICAgUHlfc3NpemVfdCBhcmNfb2Zmc2V0OyAgLyogQWJzb2x1dGUgb2Zmc2V0IHRvIHN0YXJ0IG9mIHRoZSB6aXAtYXJjaGl2ZS4gKi8KQEAgLTkwNSwxNyArOTA2LDIzIEBACiAKICAgICAvKiBTdGFydCBvZiBDZW50cmFsIERpcmVjdG9yeSAqLwogICAgIGNvdW50ID0gMDsKKyAgICBpZiAoZnNlZWsoZnAsIGhlYWRlcl9vZmZzZXQsIDApID09IC0xKQorICAgICAgICBnb3RvIGZpbGVfZXJyb3I7CiAgICAgZm9yICg7OykgewogICAgICAgICBQeU9iamVjdCAqdDsKICAgICAgICAgaW50IGVycjsKIAotICAgICAgICBpZiAoZnNlZWsoZnAsIGhlYWRlcl9vZmZzZXQsIDApID09IC0xKSAgLyogU3RhcnQgb2YgZmlsZSBoZWFkZXIgKi8KLSAgICAgICAgICAgIGdvdG8gZnNlZWtfZXJyb3I7CisgICAgICAgIC8qIFN0YXJ0IG9mIGZpbGUgaGVhZGVyICovCiAgICAgICAgIGwgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgICAgIGlmIChsICE9IDB4MDIwMTRCNTApCiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgIC8qIEJhZDogQ2VudHJhbCBEaXIgRmlsZSBIZWFkZXIgKi8KLSAgICAgICAgaWYgKGZzZWVrKGZwLCBoZWFkZXJfb2Zmc2V0ICsgOCwgMCkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZzZWVrX2Vycm9yOworCisgICAgICAgIC8qIE9uIFdpbmRvd3MsIGNhbGxpbmcgZnNlZWsgdG8gc2tpcCBvdmVyIHRoZSBmaWVsZHMgd2UgZG9uJ3QgdXNlIGlzCisgICAgICAgIHNsb3dlciB0aGFuIHJlYWRpbmcgdGhlIGRhdGEgaW50byBhIGR1bW15IGJ1ZmZlciBiZWNhdXNlIGZzZWVrIGZsdXNoZXMKKyAgICAgICAgc3RkaW8ncyBpbnRlcm5hbCBidWZmZXJzLiBTZWUgaXNzdWUgIzg3NDUuICovCisgICAgICAgIGlmIChmcmVhZChkdW1teSwgMSwgNCwgZnApICE9IDQpIC8qIFNraXAgdW51c2VkIGZpZWxkcywgYXZvaWQgZnNlZWsgKi8KKyAgICAgICAgICAgIGdvdG8gZmlsZV9lcnJvcjsKKwogICAgICAgICBmbGFncyA9ICh1bnNpZ25lZCBzaG9ydClQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApOwogICAgICAgICBjb21wcmVzcyA9IFB5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmlsZShmcCk7CiAgICAgICAgIHRpbWUgPSBQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApOwpAQCAtOTI0LDExICs5MzEsMTEgQEAKICAgICAgICAgZGF0YV9zaXplID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgICAgICBmaWxlX3NpemUgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgICAgIG5hbWVfc2l6ZSA9IFB5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmlsZShmcCk7Ci0gICAgICAgIGhlYWRlcl9zaXplID0gNDYgKyBuYW1lX3NpemUgKworICAgICAgICBoZWFkZXJfc2l6ZSA9IG5hbWVfc2l6ZSArCiAgICAgICAgICAgIFB5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmlsZShmcCkgKwogICAgICAgICAgICBQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApOwotICAgICAgICBpZiAoZnNlZWsoZnAsIGhlYWRlcl9vZmZzZXQgKyA0MiwgMCkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZzZWVrX2Vycm9yOworICAgICAgICBpZiAoZnJlYWQoZHVtbXksIDEsIDgsIGZwKSAhPSA4KSAvKiBTa2lwIHVudXNlZCBmaWVsZHMsIGF2b2lkIGZzZWVrICovCisgICAgICAgICAgICBnb3RvIGZpbGVfZXJyb3I7CiAgICAgICAgIGZpbGVfb2Zmc2V0ID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApICsgYXJjX29mZnNldDsKICAgICAgICAgaWYgKG5hbWVfc2l6ZSA+IE1BWFBBVEhMRU4pCiAgICAgICAgICAgICBuYW1lX3NpemUgPSBNQVhQQVRITEVOOwpAQCAtOTQxLDcgKzk0OCw5IEBACiAgICAgICAgICAgICBwKys7CiAgICAgICAgIH0KICAgICAgICAgKnAgPSAwOyAgICAgICAgIC8qIEFkZCB0ZXJtaW5hdGluZyBudWxsIGJ5dGUgKi8KLSAgICAgICAgaGVhZGVyX29mZnNldCArPSBoZWFkZXJfc2l6ZTsKKyAgICAgICAgZm9yICg7IGkgPCBoZWFkZXJfc2l6ZTsgaSsrKSAvKiBTa2lwIHRoZSByZXN0IG9mIHRoZSBoZWFkZXIgKi8KKyAgICAgICAgICAgIGlmKGdldGMoZnApID09IEVPRikgLyogQXZvaWQgZnNlZWsgKi8KKyAgICAgICAgICAgICAgICBnb3RvIGZpbGVfZXJyb3I7CiAKICAgICAgICAgYm9vdHN0cmFwID0gMDsKICAgICAgICAgaWYgKGZsYWdzICYgMHgwODAwKQpAQCAtOTg4LDcgKzk5Nyw3IEBACiAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlUlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlKTsKICAgICByZXR1cm4gZmlsZXM7Ci1mc2Vla19lcnJvcjoKK2ZpbGVfZXJyb3I6CiAgICAgZmNsb3NlKGZwKTsKICAgICBQeV9YREVDUkVGKGZpbGVzKTsKICAgICBQeV9YREVDUkVGKG5hbWVvYmopOwpAQCAtMTI0OSw3ICsxMjU4LDcgQEAKIH0KIAogLyogR2l2ZW4gYSBzdHJpbmcgYnVmZmVyIGNvbnRhaW5pbmcgUHl0aG9uIHNvdXJjZSBjb2RlLCBjb21waWxlIGl0Ci0gICByZXR1cm4gYW5kIHJldHVybiBhIGNvZGUgb2JqZWN0IGFzIGEgbmV3IHJlZmVyZW5jZS4gKi8KKyAgIGFuZCByZXR1cm4gYSBjb2RlIG9iamVjdCBhcyBhIG5ldyByZWZlcmVuY2UuICovCiBzdGF0aWMgUHlPYmplY3QgKgogY29tcGlsZV9zb3VyY2UoUHlPYmplY3QgKnBhdGhuYW1lLCBQeU9iamVjdCAqc291cmNlKQogewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGlibW9kdWxlLmMgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwppbmRleCBlNzE4Nzk1Li4xNjk5MDNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwpAQCAtMTMyLDEwICsxMzIsMzAgQEAKICAgICB9CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKK3N0YXRpYyB2b2lkKgorUHlabGliX01hbGxvYyh2b2lkcGYgY3R4LCB1SW50IGl0ZW1zLCB1SW50IHNpemUpCit7CisgICAgaWYgKGl0ZW1zID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIHNpemUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFB5TWVtX01hbGxvYygpIGNhbm5vdCBiZSB1c2VkOiB0aGUgR0lMIGlzIG5vdCBoZWxkIHdoZW4KKyAgICAgICBpbmZsYXRlKCkgYW5kIGRlZmxhdGUoKSBhcmUgY2FsbGVkICovCisgICAgcmV0dXJuIFB5TWVtX1Jhd01hbGxvYyhpdGVtcyAqIHNpemUpOworfQorCitzdGF0aWMgdm9pZAorUHlabGliX0ZyZWUodm9pZHBmIGN0eCwgdm9pZCAqcHRyKQoreworICAgIFB5TWVtX1Jhd0ZyZWUocHRyKTsKK30KKwogUHlEb2NfU1RSVkFSKGNvbXByZXNzX19kb2NfXywKICJjb21wcmVzcyhzdHJpbmdbLCBsZXZlbF0pIC0tIFJldHVybmVkIGNvbXByZXNzZWQgc3RyaW5nLlxuIgogIlxuIgpAQCAtMTYxLDExICsxODEsMTEgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgaW5wdXQgPSBwaW5wdXQuYnVmOwotICAgIGxlbmd0aCA9IHBpbnB1dC5sZW47CisgICAgbGVuZ3RoID0gKHVuc2lnbmVkIGludClwaW5wdXQubGVuOwogCiAgICAgenN0LmF2YWlsX291dCA9IGxlbmd0aCArIGxlbmd0aC8xMDAwICsgMTIgKyAxOwogCi0gICAgb3V0cHV0ID0gKEJ5dGUqKW1hbGxvYyh6c3QuYXZhaWxfb3V0KTsKKyAgICBvdXRwdXQgPSAoQnl0ZSopUHlNZW1fTWFsbG9jKHpzdC5hdmFpbF9vdXQpOwogICAgIGlmIChvdXRwdXQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIGNvbXByZXNzIGRhdGEiKTsKQEAgLTE3NSw4ICsxOTUsOSBAQAogICAgIC8qIFBhc3QgdGhlIHBvaW50IG9mIG5vIHJldHVybi4gIEZyb20gaGVyZSBvbiBvdXQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlCiAgICAgICAgd2UgY2xlYW4gdXAgbWFsbG9jcyAmIElOQ1JFRnMuICovCiAKLSAgICB6c3QuemFsbG9jID0gKGFsbG9jX2Z1bmMpTlVMTDsKLSAgICB6c3QuemZyZWUgPSAoZnJlZV9mdW5jKVpfTlVMTDsKKyAgICB6c3Qub3BhcXVlID0gTlVMTDsKKyAgICB6c3QuemFsbG9jID0gUHlabGliX01hbGxvYzsKKyAgICB6c3QuemZyZWUgPSBQeVpsaWJfRnJlZTsKICAgICB6c3QubmV4dF9vdXQgPSAoQnl0ZSAqKW91dHB1dDsKICAgICB6c3QubmV4dF9pbiA9IChCeXRlICopaW5wdXQ7CiAgICAgenN0LmF2YWlsX2luID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIzOSw3IEBACiAKICBlcnJvcjoKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwaW5wdXQpOwotICAgIGZyZWUob3V0cHV0KTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAKICAgICByZXR1cm4gUmV0dXJuVmFsOwogfQpAQCAtMjUxLDcgKzI3Miw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlucHV0ID0gcGlucHV0LmJ1ZjsKLSAgICBsZW5ndGggPSBwaW5wdXQubGVuOworICAgIGxlbmd0aCA9ICh1bnNpZ25lZCBpbnQpcGlucHV0LmxlbjsKIAogICAgIGlmIChyX3N0cmxlbiA8PSAwKQogICAgICAgICByX3N0cmxlbiA9IDE7CkBAIC0yNjIsOCArMjgzLDkgQEAKICAgICBpZiAoIShyZXN1bHRfc3RyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByX3N0cmxlbikpKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgenN0LnphbGxvYyA9IChhbGxvY19mdW5jKU5VTEw7Ci0gICAgenN0LnpmcmVlID0gKGZyZWVfZnVuYylaX05VTEw7CisgICAgenN0Lm9wYXF1ZSA9IE5VTEw7CisgICAgenN0LnphbGxvYyA9IFB5WmxpYl9NYWxsb2M7CisgICAgenN0LnpmcmVlID0gUHlabGliX0ZyZWU7CiAgICAgenN0Lm5leHRfb3V0ID0gKEJ5dGUgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHRfc3RyKTsKICAgICB6c3QubmV4dF9pbiA9IChCeXRlICopaW5wdXQ7CiAgICAgZXJyID0gaW5mbGF0ZUluaXQyKCZ6c3QsIHdzaXplKTsKQEAgLTM1Niw4ICszNzgsOSBAQAogICAgIHNlbGYgPSBuZXdjb21wb2JqZWN0KCZDb21wdHlwZSk7CiAgICAgaWYgKHNlbGY9PU5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc2VsZi0+enN0LnphbGxvYyA9IChhbGxvY19mdW5jKU5VTEw7Ci0gICAgc2VsZi0+enN0LnpmcmVlID0gKGZyZWVfZnVuYylaX05VTEw7CisgICAgc2VsZi0+enN0Lm9wYXF1ZSA9IE5VTEw7CisgICAgc2VsZi0+enN0LnphbGxvYyA9IFB5WmxpYl9NYWxsb2M7CisgICAgc2VsZi0+enN0LnpmcmVlID0gUHlabGliX0ZyZWU7CiAgICAgc2VsZi0+enN0Lm5leHRfaW4gPSBOVUxMOwogICAgIHNlbGYtPnpzdC5hdmFpbF9pbiA9IDA7CiAgICAgZXJyID0gZGVmbGF0ZUluaXQyKCZzZWxmLT56c3QsIGxldmVsLCBtZXRob2QsIHdiaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpOwpAQCAtNDIwLDggKzQ0Myw5IEBACiAgICAgc2VsZiA9IG5ld2NvbXBvYmplY3QoJkRlY29tcHR5cGUpOwogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybihOVUxMKTsKLSAgICBzZWxmLT56c3QuemFsbG9jID0gKGFsbG9jX2Z1bmMpTlVMTDsKLSAgICBzZWxmLT56c3QuemZyZWUgPSAoZnJlZV9mdW5jKVpfTlVMTDsKKyAgICBzZWxmLT56c3Qub3BhcXVlID0gTlVMTDsKKyAgICBzZWxmLT56c3QuemFsbG9jID0gUHlabGliX01hbGxvYzsKKyAgICBzZWxmLT56c3QuemZyZWUgPSBQeVpsaWJfRnJlZTsKICAgICBzZWxmLT56c3QubmV4dF9pbiA9IE5VTEw7CiAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKICAgICBpZiAoemRpY3QgIT0gTlVMTCkgewpAQCAtNTI1LDggKzU0OSw3IEBACiAgICAgICAgc28gZXh0ZW5kIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0cnkgYWdhaW4gKi8KICAgICB3aGlsZSAoZXJyID09IFpfT0sgJiYgc2VsZi0+enN0LmF2YWlsX291dCA9PSAwKSB7CiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJlJldFZhbCwgbGVuZ3RoIDw8IDEpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7Ci0gICAgICAgICAgICBSZXRWYWwgPSBOVUxMOworICAgICAgICAgICAgUHlfQ0xFQVIoUmV0VmFsKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+enN0Lm5leHRfb3V0ID0KQEAgLTU1MCw4ICs1NzMsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZSZXRWYWwsIHNlbGYtPnpzdC50b3RhbF9vdXQgLSBzdGFydF90b3RhbF9vdXQpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKLSAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgUHlfQ0xFQVIoUmV0VmFsKTsKICAgICB9CiAKICBlcnJvcjoKQEAgLTU3Myw3ICs1OTUsNyBAQAogICAgICAgICAgICAgUHlfc3NpemVfdCBvbGRfc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+dW51c2VkX2RhdGEpOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdfZGF0YTsKLSAgICAgICAgICAgIGlmIChzZWxmLT56c3QuYXZhaWxfaW4gPiBQWV9TU0laRV9UX01BWCAtIG9sZF9zaXplKSB7CisgICAgICAgICAgICBpZiAoKFB5X3NzaXplX3Qpc2VsZi0+enN0LmF2YWlsX2luID4gUFlfU1NJWkVfVF9NQVggLSBvbGRfc2l6ZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtNjk4LDggKzcyMCw3IEBACiAgICAgICAgICAgICBsZW5ndGggPSBtYXhfbGVuZ3RoOwogCiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJlJldFZhbCwgbGVuZ3RoKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwotICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgICAgIFB5X0NMRUFSKFJldFZhbCk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPnpzdC5uZXh0X291dCA9CkBAIC03MzMsOCArNzU0LDcgQEAKICAgICB9CiAKICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZSZXRWYWwsIHNlbGYtPnpzdC50b3RhbF9vdXQgLSBzdGFydF90b3RhbF9vdXQpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKLSAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgUHlfQ0xFQVIoUmV0VmFsKTsKICAgICB9CiAKICBlcnJvcjoKQEAgLTc4Nyw4ICs4MDcsNyBAQAogICAgICAgIHNvIGV4dGVuZCB0aGUgb3V0cHV0IGJ1ZmZlciBhbmQgdHJ5IGFnYWluICovCiAgICAgd2hpbGUgKGVyciA9PSBaX09LICYmIHNlbGYtPnpzdC5hdmFpbF9vdXQgPT0gMCkgewogICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZSZXRWYWwsIGxlbmd0aCA8PCAxKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwotICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgICAgIFB5X0NMRUFSKFJldFZhbCk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPnpzdC5uZXh0X291dCA9CkBAIC04MjcsOCArODQ2LDcgQEAKICAgICB9CiAKICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZSZXRWYWwsIHNlbGYtPnpzdC50b3RhbF9vdXQgLSBzdGFydF90b3RhbF9vdXQpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKLSAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgUHlfQ0xFQVIoUmV0VmFsKTsKICAgICB9CiAKICBlcnJvcjoKQEAgLTk4OCw4ICsxMDA2LDcgQEAKICAgICAgICBzbyBleHRlbmQgdGhlIG91dHB1dCBidWZmZXIgYW5kIHRyeSBhZ2FpbiAqLwogICAgIHdoaWxlICgoZXJyID09IFpfT0sgfHwgZXJyID09IFpfQlVGX0VSUk9SKSAmJiBzZWxmLT56c3QuYXZhaWxfb3V0ID09IDApIHsKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0dmFsLCBsZW5ndGggPDwgMSkgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CisgICAgICAgICAgICBQeV9DTEVBUihyZXR2YWwpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBzZWxmLT56c3QubmV4dF9vdXQgPSAoQnl0ZSAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJldHZhbCkgKyBsZW5ndGg7CkBAIC0xMDIxLDggKzEwMzgsNyBAQAogICAgIH0KIAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldHZhbCwgc2VsZi0+enN0LnRvdGFsX291dCAtIHN0YXJ0X3RvdGFsX291dCkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICByZXR2YWwgPSBOVUxMOworICAgICAgICBQeV9DTEVBUihyZXR2YWwpOwogICAgIH0KIAogZXJyb3I6CkBAIC0xMDk0LDEwICsxMTEwLDEwIEBACiAgICAgICAgICAgICBidWYgKz0gKHNpemVfdCkgVUlOVF9NQVg7CiAgICAgICAgICAgICBsZW4gLT0gKHNpemVfdCkgVUlOVF9NQVg7CiAgICAgICAgIH0KLSAgICAgICAgYWRsZXIzMnZhbCA9IGFkbGVyMzIoYWRsZXIzMnZhbCwgYnVmLCBsZW4pOworICAgICAgICBhZGxlcjMydmFsID0gYWRsZXIzMihhZGxlcjMydmFsLCBidWYsICh1bnNpZ25lZCBpbnQpbGVuKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9IGVsc2UgewotICAgICAgICBhZGxlcjMydmFsID0gYWRsZXIzMihhZGxlcjMydmFsLCBwYnVmLmJ1ZiwgcGJ1Zi5sZW4pOworICAgICAgICBhZGxlcjMydmFsID0gYWRsZXIzMihhZGxlcjMydmFsLCBwYnVmLmJ1ZiwgKHVuc2lnbmVkIGludClwYnVmLmxlbik7CiAgICAgfQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhhZGxlcjMydmFsICYgMHhmZmZmZmZmZlUpOwpAQCAtMTEzMiwxMCArMTE0OCwxMCBAQAogICAgICAgICAgICAgYnVmICs9IChzaXplX3QpIFVJTlRfTUFYOwogICAgICAgICAgICAgbGVuIC09IChzaXplX3QpIFVJTlRfTUFYOwogICAgICAgICB9Ci0gICAgICAgIHNpZ25lZF92YWwgPSBjcmMzMihjcmMzMnZhbCwgYnVmLCBsZW4pOworICAgICAgICBzaWduZWRfdmFsID0gY3JjMzIoY3JjMzJ2YWwsIGJ1ZiwgKHVuc2lnbmVkIGludClsZW4pOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNpZ25lZF92YWwgPSBjcmMzMihjcmMzMnZhbCwgcGJ1Zi5idWYsIHBidWYubGVuKTsKKyAgICAgICAgc2lnbmVkX3ZhbCA9IGNyYzMyKGNyYzMydmFsLCBwYnVmLmJ1ZiwgKHVuc2lnbmVkIGludClwYnVmLmxlbik7CiAgICAgfQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhzaWduZWRfdmFsICYgMHhmZmZmZmZmZlUpOwpAQCAtMTI2NiwyMCArMTI4MiwyMCBAQAogICAgICAgICBQeV9JTkNSRUYoWmxpYkVycm9yKTsKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFpsaWJFcnJvcik7CiAgICAgfQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNQVhfV0JJVFMiLCBNQVhfV0JJVFMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJERUZMQVRFRCIsIERFRkxBVEVEKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiREVGX01FTV9MRVZFTCIsIERFRl9NRU1fTEVWRUwpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJaX0JFU1RfU1BFRUQiLCBaX0JFU1RfU1BFRUQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJaX0JFU1RfQ09NUFJFU1NJT04iLCBaX0JFU1RfQ09NUFJFU1NJT04pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJaX0RFRkFVTFRfQ09NUFJFU1NJT04iLCBaX0RFRkFVTFRfQ09NUFJFU1NJT04pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJaX0ZJTFRFUkVEIiwgWl9GSUxURVJFRCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlpfSFVGRk1BTl9PTkxZIiwgWl9IVUZGTUFOX09OTFkpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJaX0RFRkFVTFRfU1RSQVRFR1kiLCBaX0RFRkFVTFRfU1RSQVRFR1kpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1BWF9XQklUUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGTEFURUQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9NRU1fTEVWRUwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFpfQkVTVF9TUEVFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgWl9CRVNUX0NPTVBSRVNTSU9OKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBaX0RFRkFVTFRfQ09NUFJFU1NJT04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFpfRklMVEVSRUQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFpfSFVGRk1BTl9PTkxZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBaX0RFRkFVTFRfU1RSQVRFR1kpOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlpfRklOSVNIIiwgWl9GSU5JU0gpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJaX05PX0ZMVVNIIiwgWl9OT19GTFVTSCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlpfU1lOQ19GTFVTSCIsIFpfU1lOQ19GTFVTSCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlpfRlVMTF9GTFVTSCIsIFpfRlVMTF9GTFVTSCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgWl9GSU5JU0gpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFpfTk9fRkxVU0gpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFpfU1lOQ19GTFVTSCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgWl9GVUxMX0ZMVVNIKTsKIAogICAgIHZlciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFpMSUJfVkVSU0lPTik7CiAgICAgaWYgKHZlciAhPSBOVUxMKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDdmMTgwOGYuLjVmMTFjM2QgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTY0LDQ5ICs2NCw3MCBAQAogfQogI2RlZmluZSBQeU9iamVjdF9MZW5ndGggUHlPYmplY3RfU2l6ZQogCitpbnQKK19QeU9iamVjdF9IYXNMZW4oUHlPYmplY3QgKm8pIHsKKyAgICByZXR1cm4gKFB5X1RZUEUobyktPnRwX2FzX3NlcXVlbmNlICYmIFB5X1RZUEUobyktPnRwX2FzX3NlcXVlbmNlLT5zcV9sZW5ndGgpIHx8CisgICAgICAgIChQeV9UWVBFKG8pLT50cF9hc19tYXBwaW5nICYmIFB5X1RZUEUobyktPnRwX2FzX21hcHBpbmctPm1wX2xlbmd0aCk7Cit9CiAKIC8qIFRoZSBsZW5ndGggaGludCBmdW5jdGlvbiByZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIHZhbHVlIGZyb20gby5fX2xlbl9fKCkKLSAgIG9yIG8uX19sZW5ndGhfaGludF9fKCkuICBJZiB0aG9zZSBtZXRob2RzIGFyZW4ndCBmb3VuZCBvciByZXR1cm4gYSBuZWdhdGl2ZQotICAgdmFsdWUsIHRoZW4gdGhlIGRlZmF1bHR2YWx1ZSBpcyByZXR1cm5lZC4gIElmIG9uZSBvZiB0aGUgY2FsbHMgZmFpbHMsCisgICBvciBvLl9fbGVuZ3RoX2hpbnRfXygpLiBJZiB0aG9zZSBtZXRob2RzIGFyZW4ndCBmb3VuZCB0aGUgZGVmYXVsdHZhbHVlIGlzCisgICByZXR1cm5lZC4gIElmIG9uZSBvZiB0aGUgY2FsbHMgZmFpbHMgd2l0aCBhbiBleGNlcHRpb24gb3RoZXIgdGhhbiBUeXBlRXJyb3IKICAgIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAtMS4KICovCiAKIFB5X3NzaXplX3QKLV9QeU9iamVjdF9MZW5ndGhIaW50KFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGRlZmF1bHR2YWx1ZSkKK1B5T2JqZWN0X0xlbmd0aEhpbnQoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgZGVmYXVsdHZhbHVlKQogeworICAgIFB5T2JqZWN0ICpoaW50LCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgcmVzOwogICAgIF9QeV9JREVOVElGSUVSKF9fbGVuZ3RoX2hpbnRfXyk7Ci0gICAgUHlPYmplY3QgKnJvLCAqaGludG1ldGg7Ci0gICAgUHlfc3NpemVfdCBydjsKLQotICAgIC8qIHRyeSBvLl9fbGVuX18oKSAqLwotICAgIHJ2ID0gUHlPYmplY3RfU2l6ZShvKTsKLSAgICBpZiAocnYgPj0gMCkKLSAgICAgICAgcmV0dXJuIHJ2OwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgIHJlcyA9IFB5T2JqZWN0X0xlbmd0aChvKTsKKyAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9Ci0KLSAgICAvKiB0cnkgby5fX2xlbmd0aF9oaW50X18oKSAqLwotICAgIGhpbnRtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19sZW5ndGhfaGludF9fKTsKLSAgICBpZiAoaGludG1ldGggPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHR2YWx1ZTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0gICAgcm8gPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGhpbnRtZXRoLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoaGludG1ldGgpOwotICAgIGlmIChybyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgIGhpbnQgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX2xlbmd0aF9oaW50X18pOworICAgIGlmIChoaW50ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gZGVmYXVsdHZhbHVlOwogICAgIH0KLSAgICBydiA9IFB5TG9uZ19DaGVjayhybykgPyBQeUxvbmdfQXNTc2l6ZV90KHJvKSA6IGRlZmF1bHR2YWx1ZTsKLSAgICBQeV9ERUNSRUYocm8pOwotICAgIHJldHVybiBydjsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGhpbnQsIE5VTEwpOworICAgIFB5X0RFQ1JFRihoaW50KTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIGlmIChyZXN1bHQgPT0gUHlfTm90SW1wbGVtZW50ZWQpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBkZWZhdWx0dmFsdWU7CisgICAgfQorICAgIGlmICghUHlMb25nX0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIl9fbGVuZ3RoX2hpbnRfXyBtdXN0IGJlIGFuIGludGVnZXIsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzID0gUHlMb25nX0FzU3NpemVfdChyZXN1bHQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIl9fbGVuZ3RoX2hpbnRfXygpIHNob3VsZCByZXR1cm4gPj0gMCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTEyMTcsNyArMTIzOCw3IEBACiAgIHRvIGJlIGFuIGludCBvciBoYXZlIGFuIF9faW50X18gbWV0aG9kLiBTdGVhbHMgaW50ZWdyYWwncwogICByZWZlcmVuY2UuIGVycm9yX2Zvcm1hdCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBUeXBlRXJyb3IgaWYgaW50ZWdyYWwKICAgaXNuJ3QgYWN0dWFsbHkgYW4gSW50ZWdyYWwgaW5zdGFuY2UuIGVycm9yX2Zvcm1hdCBzaG91bGQgYmUgYSBmb3JtYXQgc3RyaW5nCi0gIHRoYXQgY2FuIGFjY2VwdCBhIGNoYXIqIG5hbWluZyBpbnRlZ3JhbCdzIHR5cGUuIAorICB0aGF0IGNhbiBhY2NlcHQgYSBjaGFyKiBuYW1pbmcgaW50ZWdyYWwncyB0eXBlLgogKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBjb252ZXJ0X2ludGVncmFsX3RvX2ludChQeU9iamVjdCAqaW50ZWdyYWwsIGNvbnN0IGNoYXIgKmVycm9yX2Zvcm1hdCkKQEAgLTEyMzYsNyArMTI1Nyw3IEBACiAgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIGVycm9yX2Zvcm1hdCwgUHlfVFlQRShpbnRlZ3JhbCktPnRwX25hbWUpOwogICAgIFB5X0RFQ1JFRihpbnRlZ3JhbCk7Ci0gICAgcmV0dXJuIE5VTEw7ICAgIAorICAgIHJldHVybiBOVUxMOwogfQogCiAKQEAgLTE2NzAsNyArMTY5MSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogR3Vlc3MgcmVzdWx0IHNpemUgYW5kIGFsbG9jYXRlIHNwYWNlLiAqLwotICAgIG4gPSBfUHlPYmplY3RfTGVuZ3RoSGludCh2LCAxMCk7CisgICAgbiA9IFB5T2JqZWN0X0xlbmd0aEhpbnQodiwgMTApOwogICAgIGlmIChuID09IC0xKQogICAgICAgICBnb3RvIEZhaWw7CiAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7CkBAIC0yMDY0LDEwICsyMDg1LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKKyNpZmRlZiBOREVCVUcKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgIk5VTEwgcmVzdWx0IHdpdGhvdXQgZXJyb3IgaW4gUHlPYmplY3RfQ2FsbCIpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBhc3NlcnQocmVzdWx0ICE9IE5VTEwgfHwgUHlFcnJfT2NjdXJyZWQoKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLApAQCAtMjEwMiw3ICsyMTI4LDcgQEAKIH0KIAogUHlPYmplY3QgKgotUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5T2JqZWN0ICpjYWxsYWJsZSwgY2hhciAqZm9ybWF0LCAuLi4pCitQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlPYmplY3QgKmNhbGxhYmxlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICphcmdzOwpAQCAtMjEyMiw3ICsyMTQ4LDcgQEAKIH0KIAogUHlPYmplY3QgKgotX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7CiAgICAgUHlPYmplY3QgKmFyZ3M7CkBAIC0yMTQyLDcgKzIxNjgsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1jYWxsbWV0aG9kKFB5T2JqZWN0KiBmdW5jLCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEsIGludCBpc19zaXplX3QpCitjYWxsbWV0aG9kKFB5T2JqZWN0KiBmdW5jLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEsIGludCBpc19zaXplX3QpCiB7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFyZ3M7CkBAIC0yMTcxLDcgKzIxOTcsNyBAQAogfQogCiBQeU9iamVjdCAqCi1QeU9iamVjdF9DYWxsTWV0aG9kKFB5T2JqZWN0ICpvLCBjaGFyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK1B5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwpAQCAtMjE5Miw3ICsyMjE4LDggQEAKIH0KIAogUHlPYmplY3QgKgotX1B5T2JqZWN0X0NhbGxNZXRob2RJZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5T2JqZWN0X0NhbGxNZXRob2RJZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwpAQCAtMjIxMyw3ICsyMjQwLDggQEAKIH0KIAogUHlPYmplY3QgKgotX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKQEAgLTIyMzMsNyArMjI2MSw4IEBACiB9CiAKIFB5T2JqZWN0ICoKLV9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKQEAgLTIzMDMsNyArMjMzMiw3IEBACiB9CiAKIFB5T2JqZWN0ICoKLV9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKK19QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lLCAuLi4pCiB7CiAgICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CkBAIC0yNjc4LDggKzI3MDcsOCBAQAogICogTlVMTCB0ZXJtaW5hdGVkIHN0cmluZyBwb2ludGVycyB3aXRoIGEgTlVMTCBjaGFyKiB0ZXJtaW5hdGluZyB0aGUgYXJyYXkuCiAgKiAoaWU6IGFuIGFyZ3Ygb3IgZW52IGxpc3QpCiAgKgotICogTWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHJldHVybmVkIGxpc3QgaXMgYWxsb2NhdGVkIHVzaW5nIG1hbGxvYygpIGFuZCBNVVNUCi0gKiBiZSBmcmVlZCBieSB0aGUgY2FsbGVyIHVzaW5nIGEgZnJlZSgpIGxvb3Agb3IgX1B5X0ZyZWVDaGFyUEFycmF5KCkuCisgKiBNZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgcmV0dXJuZWQgbGlzdCBpcyBhbGxvY2F0ZWQgdXNpbmcgUHlNZW1fTWFsbG9jKCkKKyAqIGFuZCBNVVNUIGJlIGZyZWVkIGJ5IF9QeV9GcmVlQ2hhclBBcnJheSgpLgogICovCiBjaGFyICpjb25zdCAqCiBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheShQeU9iamVjdCogc2VsZikKQEAgLTI2ODcsNiArMjcxNiw3IEBACiAgICAgY2hhciAqKmFycmF5OwogICAgIFB5X3NzaXplX3QgaSwgYXJnYzsKICAgICBQeU9iamVjdCAqaXRlbSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOwogCiAgICAgYXJnYyA9IFB5U2VxdWVuY2VfU2l6ZShzZWxmKTsKICAgICBpZiAoYXJnYyA9PSAtMSkKQEAgLTI2OTksNyArMjcyOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFycmF5ID0gbWFsbG9jKChhcmdjICsgMSkgKiBzaXplb2YoY2hhciAqKSk7CisgICAgYXJyYXkgPSBQeU1lbV9NYWxsb2MoKGFyZ2MgKyAxKSAqIHNpemVvZihjaGFyICopKTsKICAgICBpZiAoYXJyYXkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3MTgsMTEgKzI3NDgsMTMgQEAKICAgICAgICAgICAgIGFycmF5W2ldID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBhcnJheVtpXSA9IHN0cmR1cChkYXRhKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoaXRlbSkgKyAxOworICAgICAgICBhcnJheVtpXSA9IFB5TWVtX01hbGxvYyhzaXplKTsKICAgICAgICAgaWYgKCFhcnJheVtpXSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQorICAgICAgICBtZW1jcHkoYXJyYXlbaV0sIGRhdGEsIHNpemUpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgfQogICAgIGFycmF5W2FyZ2NdID0gTlVMTDsKQEAgLTI3NDIsNyArMjc3NCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGZvciAoaSA9IDA7IGFycmF5W2ldICE9IE5VTEw7ICsraSkgewotICAgICAgICBmcmVlKGFycmF5W2ldKTsKKyAgICAgICAgUHlNZW1fRnJlZShhcnJheVtpXSk7CiAgICAgfQotICAgIGZyZWUoKHZvaWQqKWFycmF5KTsKKyAgICBQeU1lbV9GcmVlKCh2b2lkKilhcnJheSk7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwppbmRleCA2MGIyODExLi5hYTM4OTI0IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKQEAgLTEwMzgsNiArMTAzOCw3IEBACiAjZGVmaW5lIEZBU1RTRUFSQ0ggZmFzdHNlYXJjaAogI2RlZmluZSBTVFJJTkdMSUIoRikgc3RyaW5nbGliXyMjRgogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiBjaGFyCisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAxCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gUHlCeXRlQXJyYXlfR0VUX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX1NUUiBQeUJ5dGVBcnJheV9BU19TVFJJTkcKICNkZWZpbmUgU1RSSU5HTElCX05FVyBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQpAQCAtMTA0OSw2ICsxMDUwLDcgQEAKICNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2pvaW4uaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2N0eXBlLmgiCkBAIC0yMjkxLDcgKzIyOTMsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFRyeSB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJndW1lbnQuIDMyIGlzIGFyYml0cmFyeS4gKi8KLSAgICBidWZfc2l6ZSA9IF9QeU9iamVjdF9MZW5ndGhIaW50KGFyZywgMzIpOworICAgIGJ1Zl9zaXplID0gUHlPYmplY3RfTGVuZ3RoSGludChhcmcsIDMyKTsKICAgICBpZiAoYnVmX3NpemUgPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTc4LDczICsyNTgwLDkgQEAKIGluIGJldHdlZW4gZWFjaCBwYWlyLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2pvaW4oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdCkKK2J5dGVhcnJheV9qb2luKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7Ci0gICAgUHlPYmplY3QgKnNlcTsKLSAgICBQeV9zc2l6ZV90IG15c2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeU9iamVjdCAqKml0ZW1zOwotICAgIFB5X3NzaXplX3QgdG90YWxzaXplID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGNoYXIgKmRlc3Q7Ci0KLSAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3QoaXQsICJjYW4gb25seSBqb2luIGFuIGl0ZXJhYmxlIik7Ci0gICAgaWYgKHNlcSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBuID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSk7Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoc2VxKTsKLQotICAgIC8qIENvbXB1dGUgdGhlIHRvdGFsIHNpemUsIGFuZCBjaGVjayB0aGF0IHRoZXkgYXJlIGFsbCBieXRlcyAqLwotICAgIC8qIFhYWCBTaG91bGRuJ3Qgd2UgdXNlIF9nZXRidWZmZXIoKSBvbiB0aGVzZSBpdGVtcyBpbnN0ZWFkPyAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKm9iaiA9IGl0ZW1zW2ldOwotICAgICAgICBpZiAoIVB5Qnl0ZUFycmF5X0NoZWNrKG9iaikgJiYgIVB5Qnl0ZXNfQ2hlY2sob2JqKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuIG9ubHkgam9pbiBhbiBpdGVyYWJsZSBvZiBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIihpdGVtICVsZCBoYXMgdHlwZSAnJS4xMDBzJykiLAotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCAlbGQgaXNuJ3QgcmlnaHQgb24gV2luNjQgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZylpLCBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICB0b3RhbHNpemUgKz0gbXlzaXplOwotICAgICAgICB0b3RhbHNpemUgKz0gUHlfU0laRShvYmopOwotICAgICAgICBpZiAodG90YWxzaXplIDwgMCkgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBBbGxvY2F0ZSB0aGUgcmVzdWx0LCBhbmQgY29weSB0aGUgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB0b3RhbHNpemUpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBkZXN0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBQeU9iamVjdCAqb2JqID0gaXRlbXNbaV07Ci0gICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5X1NJWkUob2JqKTsKLSAgICAgICAgY2hhciAqYnVmOwotICAgICAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sob2JqKSkKLSAgICAgICAgICAgYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG9iaik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqKTsKLSAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIG1lbWNweShkZXN0LCBzZWxmLT5vYl9ieXRlcywgbXlzaXplKTsKLSAgICAgICAgICAgIGRlc3QgKz0gbXlzaXplOwotICAgICAgICB9Ci0gICAgICAgIG1lbWNweShkZXN0LCBidWYsIHNpemUpOwotICAgICAgICBkZXN0ICs9IHNpemU7Ci0gICAgfQotCi0gICAgLyogRG9uZSAqLwotICAgIFB5X0RFQ1JFRihzZXEpOwotICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAvKiBFcnJvciBoYW5kbGluZyAqLwotICBlcnJvcjoKLSAgICBQeV9ERUNSRUYoc2VxKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oc2VsZiwgaXRlcmFibGUpOwogfQogCiBQeURvY19TVFJWQVIoc3BsaXRsaW5lc19fZG9jX18sCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggNDc4OThmZS4uMDU2YWMzNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtMTAsOSArMTAsMTggQEAKIHN0YXRpYyBQeV9zc2l6ZV90CiBfZ2V0YnVmZmVyKFB5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldykKIHsKLSAgICBQeUJ1ZmZlclByb2NzICpidWZmZXIgPSBQeV9UWVBFKG9iaiktPnRwX2FzX2J1ZmZlcjsKKyAgICBQeUJ1ZmZlclByb2NzICpidWZmZXJwcm9jczsKKyAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoLCBlLmcuIGZvciAuam9pbigpIG9mIG1hbnkgYnl0ZXMgb2JqZWN0cyAqLworICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICAgICAgdmlldy0+b2JqID0gb2JqOworICAgICAgICB2aWV3LT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmopOworICAgICAgICB2aWV3LT5sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iaik7CisgICAgICAgIHJldHVybiB2aWV3LT5sZW47CisgICAgfQogCi0gICAgaWYgKGJ1ZmZlciA9PSBOVUxMIHx8IGJ1ZmZlci0+YmZfZ2V0YnVmZmVyID09IE5VTEwpCisgICAgYnVmZmVycHJvY3MgPSBQeV9UWVBFKG9iaiktPnRwX2FzX2J1ZmZlcjsKKyAgICBpZiAoYnVmZmVycHJvY3MgPT0gTlVMTCB8fCBidWZmZXJwcm9jcy0+YmZfZ2V0YnVmZmVyID09IE5VTEwpCiAgICAgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIlR5cGUgJS4xMDBzIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYnVmZmVyIEFQSSIsCkBAIC0yMCw3ICsyOSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5iZl9nZXRidWZmZXIob2JqLCB2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkKKyAgICBpZiAoYnVmZmVycHJvY3MtPmJmX2dldGJ1ZmZlcihvYmosIHZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIHZpZXctPmxlbjsKIH0KQEAgLTU2MCw2ICs1NjksNyBAQAogI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvam9pbi5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvY3R5cGUuaCIKQEAgLTExMTIsOTQgKzExMjIsOSBAQAogRXhhbXBsZTogYicuJy5qb2luKFtiJ2FiJywgYidwcScsIGIncnMnXSkgLT4gYidhYi5wcS5ycycuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19qb2luKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3JpZykKK2J5dGVzX2pvaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZSkKIHsKLSAgICBjaGFyICpzZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBjb25zdCBQeV9zc2l6ZV90IHNlcGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IHNlcWxlbiA9IDA7Ci0gICAgc2l6ZV90IHN6ID0gMDsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgUHlPYmplY3QgKnNlcSwgKml0ZW07Ci0KLSAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qob3JpZywgIiIpOwotICAgIGlmIChzZXEgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKLSAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcoIiIpOwotICAgIH0KLSAgICBpZiAoc2VxbGVuID09IDEpIHsKLSAgICAgICAgaXRlbSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIDApOwotICAgICAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KGl0ZW0pKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVtOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogVGhlcmUgYXJlIGF0IGxlYXN0IHR3byB0aGluZ3MgdG8gam9pbiwgb3IgZWxzZSB3ZSBoYXZlIGEgc3ViY2xhc3MKLSAgICAgKiBvZiB0aGUgYnVpbHRpbiB0eXBlcyBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICogRG8gYSBwcmUtcGFzcyB0byBmaWd1cmUgb3V0IHRoZSB0b3RhbCBhbW91bnQgb2Ygc3BhY2Ugd2UnbGwKLSAgICAgKiBuZWVkIChzeiksIGFuZCBzZWUgd2hldGhlciBhbGwgYXJndW1lbnQgYXJlIGJ5dGVzLgotICAgICAqLwotICAgIC8qIFhYWCBTaG91bGRuJ3Qgd2UgdXNlIF9nZXRidWZmZXIoKSBvbiB0aGVzZSBpdGVtcyBpbnN0ZWFkPyAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewotICAgICAgICBjb25zdCBzaXplX3Qgb2xkX3N6ID0gc3o7Ci0gICAgICAgIGl0ZW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGl0ZW0pICYmICFQeUJ5dGVBcnJheV9DaGVjayhpdGVtKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAic2VxdWVuY2UgaXRlbSAlemQ6IGV4cGVjdGVkIGJ5dGVzLCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiICUuODBzIGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpLCBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgc3ogKz0gUHlfU0laRShpdGVtKTsKLSAgICAgICAgaWYgKGkgIT0gMCkKLSAgICAgICAgICAgIHN6ICs9IHNlcGxlbjsKLSAgICAgICAgaWYgKHN6IDwgb2xkX3N6IHx8IHN6ID4gUFlfU1NJWkVfVF9NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICJqb2luKCkgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBieXRlcyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEFsbG9jYXRlIHJlc3VsdCBzcGFjZS4gKi8KLSAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyKilOVUxMLCBzeik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZXEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICAvKiBDYXRlbmF0ZSBldmVyeXRoaW5nLiAqLwotICAgIC8qIEknbSBub3Qgd29ycmllZCBhYm91dCBhIFB5Qnl0ZUFycmF5IGl0ZW0gZ3Jvd2luZyBiZWNhdXNlIHRoZXJlJ3MKLSAgICAgICBub3doZXJlIGluIHRoaXMgZnVuY3Rpb24gd2hlcmUgd2UgcmVsZWFzZSB0aGUgR0lMLiAqLwotICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47ICsraSkgewotICAgICAgICBzaXplX3QgbjsKLSAgICAgICAgY2hhciAqcTsKLSAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBzZXAsIHNlcGxlbik7Ci0gICAgICAgICAgICBwICs9IHNlcGxlbjsKLSAgICAgICAgfQotICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHNlcSwgaSk7Ci0gICAgICAgIG4gPSBQeV9TSVpFKGl0ZW0pOwotICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhpdGVtKSkKLSAgICAgICAgICAgIHEgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcSA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhpdGVtKTsKLSAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOwotICAgICAgICBwICs9IG47Ci0gICAgfQotCi0gICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oc2VsZiwgaXRlcmFibGUpOwogfQogCiBQeU9iamVjdCAqCkBAIC0yMzE2LDggKzIyNDEsNiBAQAogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIGt3bGlzdCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Qoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKQEAgLTI2NzksNyArMjYwMiw3IEBACiAgICAgfQogCiAgICAgLyogRm9yIGl0ZXJhdG9yIHZlcnNpb24sIGNyZWF0ZSBhIHN0cmluZyBvYmplY3QgYW5kIHJlc2l6ZSBhcyBuZWVkZWQgKi8KLSAgICBzaXplID0gX1B5T2JqZWN0X0xlbmd0aEhpbnQoeCwgNjQpOworICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICAvKiBBbGxvY2F0ZSBhbiBleHRyYSBieXRlIHRvIHByZXZlbnQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpIGZyb20KZGlmZiAtLWdpdCBhL09iamVjdHMvY29tcGxleG9iamVjdC5jIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKaW5kZXggNDAzYzYwYy4uNTQ4MzhjYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKQEAgLTI3MSw2ICsyNzEsMTIgQEAKICAgICBpZiAoZikgewogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGYpOworICAgICAgICBpZiAocmVzICE9IE5VTEwgJiYgIVB5Q29tcGxleF9DaGVjayhyZXMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJfX2NvbXBsZXhfXyBzaG91bGQgcmV0dXJuIGEgY29tcGxleCBvYmplY3QiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTYsMTIgKzMwMiw2IEBACiAgICAgbmV3b3AgPSB0cnlfY29tcGxleF9zcGVjaWFsX21ldGhvZChvcCk7CiAKICAgICBpZiAobmV3b3ApIHsKLSAgICAgICAgaWYgKCFQeUNvbXBsZXhfQ2hlY2sobmV3b3ApKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJfX2NvbXBsZXhfXyBzaG91bGQgcmV0dXJuIGEgY29tcGxleCBvYmplY3QiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdvcCk7Ci0gICAgICAgICAgICByZXR1cm4gY3Y7Ci0gICAgICAgIH0KICAgICAgICAgY3YgPSAoKFB5Q29tcGxleE9iamVjdCAqKW5ld29wKS0+Y3ZhbDsKICAgICAgICAgUHlfREVDUkVGKG5ld29wKTsKICAgICAgICAgcmV0dXJuIGN2OwpAQCAtNzA1LDcgKzcwNSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgcmV0ID0gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKICAgICAgICAgJndyaXRlciwKICAgICAgICAgc2VsZiwKZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCBhYmNjMDAyLi5kNGY4MDQ4IDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC0xMTUsNyArMTE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICgoUHlUeXBlT2JqZWN0ICopdHlwZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5Q0Z1bmN0aW9uX05ldyhkZXNjci0+ZF9tZXRob2QsIHR5cGUpOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9OZXdFeChkZXNjci0+ZF9tZXRob2QsIHR5cGUsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI1LDcgKzEyNSw3IEBACiAKICAgICBpZiAoZGVzY3JfY2hlY2soKFB5RGVzY3JPYmplY3QgKilkZXNjciwgb2JqLCAmcmVzKSkKICAgICAgICAgcmV0dXJuIHJlczsKLSAgICByZXR1cm4gUHlDRnVuY3Rpb25fTmV3KGRlc2NyLT5kX21ldGhvZCwgb2JqKTsKKyAgICByZXR1cm4gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBvYmosIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjM5LDcgKzIzOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXcoZGVzY3ItPmRfbWV0aG9kLCBzZWxmKTsKKyAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKQEAgLTI5Miw3ICsyOTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3KGRlc2NyLT5kX21ldGhvZCwgc2VsZik7CisgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGRlc2NyLT5kX21ldGhvZCwgc2VsZiwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7CkBAIC0xMDA5LDcgKzEwMDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdyYXBwZXJfcmljaGNvbXBhcmUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ApCiB7Ci0gICAgaW50IHJlc3VsdDsKKyAgICBQeV9pbnRwdHJfdCByZXN1bHQ7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlXcmFwcGVyRGVzY3JPYmplY3QgKmFfZGVzY3IsICpiX2Rlc2NyOwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3RvYmplY3QuYyBiL09iamVjdHMvZGljdG9iamVjdC5jCmluZGV4IDdhYTVlYTguLmUwY2I4YWMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvZGljdG9iamVjdC5jCkBAIC0zMDUsOSArMzA1LDkgQEAKICAqICNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pID4+IDEpICsgKChuKSA+PiAyKSAtICgobikgPj4gMykpCiAqLwogCi0vKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4gCi0gKiBDdXJyZW50bHkgc2V0IHRvIHVzZWQqMiArIGNhcGFjaXR5LzIuIAotICogVGhpcyBtZWFucyB0aGF0IGRpY3RzIGRvdWJsZSBpbiBzaXplIHdoZW4gZ3Jvd2luZyB3aXRob3V0IGRlbGV0aW9ucywgCisvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4KKyAqIEN1cnJlbnRseSBzZXQgdG8gdXNlZCoyICsgY2FwYWNpdHkvMi4KKyAqIFRoaXMgbWVhbnMgdGhhdCBkaWN0cyBkb3VibGUgaW4gc2l6ZSB3aGVuIGdyb3dpbmcgd2l0aG91dCBkZWxldGlvbnMsCiAgKiBidXQgaGF2ZSBtb3JlIGhlYWQgcm9vbSB3aGVuIHRoZSBudW1iZXIgb2YgZGVsZXRpb25zIGlzIG9uIGEgcGFyIHdpdGggdGhlCiAgKiBudW1iZXIgb2YgaW5zZXJ0aW9ucy4KICAqIFJhaXNpbmcgdGhpcyB0byB1c2VkKjQgZG91YmxlcyBtZW1vcnkgY29uc3VtcHRpb24gZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mCkBAIC0zODksNiArMzg5LDcgQEAKIG5ld19kaWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5T2JqZWN0ICoqdmFsdWVzKQogewogICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgYXNzZXJ0KGtleXMgIT0gTlVMTCk7CiAgICAgaWYgKG51bWZyZWUpIHsKICAgICAgICAgbXAgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0IChtcCAhPSBOVUxMKTsKQEAgLTQzMSw3ICs0MzIsMTAgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9OZXcodm9pZCkKIHsKLSAgICByZXR1cm4gbmV3X2RpY3QobmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKSwgTlVMTCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgaWYgKGtleXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG5ld19kaWN0KGtleXMsIE5VTEwpOwogfQogCiAvKgpAQCAtMTM5MSw3ICsxMzk1LDcgQEAKICAgICAgICAgfQogICAgICAgICBES19ERUNSRUYoa2V5cyk7CiAgICAgfQotICAgIGVsc2UgeworICAgIGVsc2UgaWYgKGtleXMgIT0gTlVMTCkgewogICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOwogICAgICAgICBES19ERUNSRUYoa2V5cyk7CiAgICAgfQpAQCAtMTQzOSw2ICsxNDQzLDkgQEAKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgcyA9IFB5T2JqZWN0X1JlcHIoa2V5KTsKICAgICAgICAgUHlVbmljb2RlX0FwcGVuZCgmcywgY29sb24pOworICAgICAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworCiAgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnMsIFB5T2JqZWN0X1JlcHIodmFsdWUpKTsKICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CkBAIC0yMTE4LDEzICsyMTI1LDE4IEBACiAgICAgICAgIGlmIChhdmFsICE9IE5VTEwpIHsKICAgICAgICAgICAgIGludCBjbXA7CiAgICAgICAgICAgICBQeU9iamVjdCAqYnZhbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqdmFkZHI7CiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIC8qIHRlbXBvcmFyaWx5IGJ1bXAgYXZhbCdzIHJlZmNvdW50IHRvIGVuc3VyZSBpdCBzdGF5cwogICAgICAgICAgICAgICAgYWxpdmUgdW50aWwgd2UncmUgZG9uZSB3aXRoIGl0ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoYXZhbCk7CiAgICAgICAgICAgICAvKiBkaXR0byBmb3Iga2V5ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGJ2YWwgPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKiliLCBrZXkpOworICAgICAgICAgICAgLyogcmV1c2UgdGhlIGtub3duIGhhc2ggdmFsdWUgKi8KKyAgICAgICAgICAgIGlmICgoYi0+bWFfa2V5cy0+ZGtfbG9va3VwKShiLCBrZXksIGVwLT5tZV9oYXNoLCAmdmFkZHIpID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnZhbCA9IE5VTEw7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnZhbCA9ICp2YWRkcjsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgaWYgKGJ2YWwgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdmFsKTsKQEAgLTIyMTAsMTkgKzIyMjIsMTkgQEAKICAgICByZXR1cm4gdmFsOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotZGljdF9zZXRkZWZhdWx0KHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICphcmdzKQorUHlPYmplY3QgKgorUHlEaWN0X1NldERlZmF1bHQoUHlPYmplY3QgKmQsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZhdWx0b2JqKQogewotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0ZGVmYXVsdCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKKyAgICBpZiAoIVB5RGljdF9DaGVjayhkKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICB9CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CkBAIC0yMjQwLDIwICsyMjUyLDMyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdG9iaik7CiAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBmYWlsb2JqKTsKKyAgICAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgZGVmYXVsdG9iaik7CiAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSBmYWlsb2JqOwotICAgICAgICB2YWwgPSBmYWlsb2JqOworICAgICAgICAqdmFsdWVfYWRkciA9IGRlZmF1bHRvYmo7CisgICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKICAgICAgICAgbXAtPm1hX3VzZWQrKzsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHZhbCk7CiAgICAgcmV0dXJuIHZhbDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3Rfc2V0ZGVmYXVsdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsOworICAgIFB5T2JqZWN0ICpkZWZhdWx0b2JqID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLCAxLCAyLCAma2V5LCAmZGVmYXVsdG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmFsID0gUHlEaWN0X1NldERlZmF1bHQoKFB5T2JqZWN0ICopbXAsIGtleSwgZGVmYXVsdG9iaik7CisgICAgUHlfWElOQ1JFRih2YWwpOworICAgIHJldHVybiB2YWw7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X2NsZWFyKHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXApCkBAIC0yNDYwLDEwICsyNDg0LDEwIEBACiAyLXR1cGxlOyBidXQgcmFpc2UgS2V5RXJyb3IgaWYgRCBpcyBlbXB0eS4iKTsKIAogUHlEb2NfU1RSVkFSKHVwZGF0ZV9fZG9jX18sCi0iRC51cGRhdGUoW0UsIF0qKkYpIC0+IE5vbmUuICBVcGRhdGUgRCBmcm9tIGRpY3QvaXRlcmFibGUgRSBhbmQgRi5cbiIKLSJJZiBFIHByZXNlbnQgYW5kIGhhcyBhIC5rZXlzKCkgbWV0aG9kLCBkb2VzOiAgICAgZm9yIGsgaW4gRTogRFtrXSA9IEVba11cblwKLUlmIEUgcHJlc2VudCBhbmQgbGFja3MgLmtleXMoKSBtZXRob2QsIGRvZXM6ICAgICBmb3IgKGssIHYpIGluIEU6IERba10gPSB2XG5cCi1JbiBlaXRoZXIgY2FzZSwgdGhpcyBpcyBmb2xsb3dlZCBieTogZm9yIGsgaW4gRjogRFtrXSA9IEZba10iKTsKKyJELnVwZGF0ZShbRSwgXSoqRikgLT4gTm9uZS4gIFVwZGF0ZSBEIGZyb20gZGljdC9pdGVyYWJsZSBFIGFuZCBGLlxuXAorSWYgRSBpcyBwcmVzZW50IGFuZCBoYXMgYSAua2V5cygpIG1ldGhvZCwgdGhlbiBkb2VzOiAgZm9yIGsgaW4gRTogRFtrXSA9IEVba11cblwKK0lmIEUgaXMgcHJlc2VudCBhbmQgbGFja3MgYSAua2V5cygpIG1ldGhvZCwgdGhlbiBkb2VzOiAgZm9yIGssIHYgaW4gRTogRFtrXSA9IHZcblwKK0luIGVpdGhlciBjYXNlLCB0aGlzIGlzIGZvbGxvd2VkIGJ5OiBmb3IgayBpbiBGOiAgRFtrXSA9IEZba10iKTsKIAogUHlEb2NfU1RSVkFSKGZyb21rZXlzX19kb2NfXywKICJkaWN0LmZyb21rZXlzKFNbLHZdKSAtPiBOZXcgZGljdCB3aXRoIGtleXMgZnJvbSBTIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdi5cblwKQEAgLTI1NjgsMjIgKzI1OTIsMjMgQEAKIGRpY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpzZWxmOworICAgIFB5RGljdE9iamVjdCAqZDsKIAogICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CiAgICAgc2VsZiA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwotICAgIGlmIChzZWxmICE9IE5VTEwpIHsKLSAgICAgICAgUHlEaWN0T2JqZWN0ICpkID0gKFB5RGljdE9iamVjdCAqKXNlbGY7Ci0gICAgICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpOwotICAgICAgICAvKiBYWFggLSBTaG91bGQgd2UgcmFpc2UgYSBuby1tZW1vcnkgZXJyb3I/ICovCi0gICAgICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKLSAgICAgICAgICAgIERLX0lOQ1JFRihQeV9FTVBUWV9LRVlTKTsKLSAgICAgICAgICAgIGQtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOwotICAgICAgICAgICAgZC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOwotICAgICAgICB9Ci0gICAgICAgIGQtPm1hX3VzZWQgPSAwOwotICAgICAgICAvKiBUaGUgb2JqZWN0IGhhcyBiZWVuIGltcGxpY2l0bHkgdHJhY2tlZCBieSB0cF9hbGxvYyAqLwotICAgICAgICBpZiAodHlwZSA9PSAmUHlEaWN0X1R5cGUpCi0gICAgICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBkID0gKFB5RGljdE9iamVjdCAqKXNlbGY7CisKKyAgICAvKiBUaGUgb2JqZWN0IGhhcyBiZWVuIGltcGxpY2l0bHkgdHJhY2tlZCBieSB0cF9hbGxvYyAqLworICAgIGlmICh0eXBlID09ICZQeURpY3RfVHlwZSkKKyAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZCk7CisKKyAgICBkLT5tYV91c2VkID0gMDsKKyAgICBkLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBpZiAoZC0+bWFfa2V5cyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMjY1OSw4ICsyNjg0LDEwIEBACiB7CiAgICAgUHlPYmplY3QgKmt2OwogICAgIGt2ID0gX1B5VW5pY29kZV9Gcm9tSWQoa2V5KTsgLyogYm9ycm93ZWQgKi8KLSAgICBpZiAoa3YgPT0gTlVMTCkKKyAgICBpZiAoa3YgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtKGRwLCBrdik7CiB9CiAKQEAgLTI2NzEsOCArMjY5OCwxMCBAQAogewogICAgIFB5T2JqZWN0ICprdiwgKnJ2OwogICAgIGt2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoa2V5KTsKLSAgICBpZiAoa3YgPT0gTlVMTCkKKyAgICBpZiAoa3YgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcnYgPSBQeURpY3RfR2V0SXRlbSh2LCBrdik7CiAgICAgUHlfREVDUkVGKGt2KTsKICAgICByZXR1cm4gcnY7CmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDZiMDQ3MDAuLjc5YmJiOGYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC0yMzI3LDcgKzIzMjcsNyBAQAogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDxXaW5zb2NrMi5oPgorI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAvKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3ZXJlIGFkZGVkIHRvIGVycm5vLmggaW4gVlMyMDEwIGJ1dCBoYXZlCiAgICBwcmVmZXJyZWQgV1NBIGVxdWl2YWxlbnRzLiAqLwogI3VuZGVmIEVBRERSSU5VU0UKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggM2EzMTMxNC4uZTBjNWJmZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTM5MCw3ICszOTAsNyBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGVycm5vID0gMDsKLSNpZiBkZWZpbmVkKE1TX1dJTjY0KSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChuID4gSU5UX01BWCkKICAgICAgICAgbiA9IElOVF9NQVg7CiAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBjLCAoaW50KW4pOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCmluZGV4IGI1NzFjYTguLjdlZTIwMzQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmxvYXRvYmplY3QuYworKysgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKQEAgLTksMTEgKzksNiBAQAogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8ZmxvYXQuaD4KIAotI3VuZGVmIE1BWAotI3VuZGVmIE1JTgotI2RlZmluZSBNQVgoeCwgeSkgKCh4KSA8ICh5KSA/ICh5KSA6ICh4KSkKLSNkZWZpbmUgTUlOKHgsIHkpICgoeCkgPCAoeSkgPyAoeCkgOiAoeSkpCi0KIAogLyogU3BlY2lhbCBmcmVlIGxpc3QKICAgIGZyZWVfbGlzdCBpcyBhIHNpbmdseS1saW5rZWQgbGlzdCBvZiBhdmFpbGFibGUgUHlGbG9hdE9iamVjdHMsIGxpbmtlZApAQCAtMTEzMSw3ICsxMTI2LDcgQEAKICAgICB9CiAKICAgICBtID0gZnJleHAoZmFicyh4KSwgJmUpOwotICAgIHNoaWZ0ID0gMSAtIE1BWChEQkxfTUlOX0VYUCAtIGUsIDApOworICAgIHNoaWZ0ID0gMSAtIFB5X01BWChEQkxfTUlOX0VYUCAtIGUsIDApOwogICAgIG0gPSBsZGV4cChtLCBzaGlmdCk7CiAgICAgZSAtPSBzaGlmdDsKIApAQCAtMTI4NSw4ICsxMjgwLDggQEAKICAgICBmZGlnaXRzID0gY29lZmZfZW5kIC0gc19zdG9yZTsKICAgICBpZiAobmRpZ2l0cyA9PSAwKQogICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgIGlmIChuZGlnaXRzID4gTUlOKERCTF9NSU5fRVhQIC0gREJMX01BTlRfRElHIC0gTE9OR19NSU4vMiwKLSAgICAgICAgICAgICAgICAgICAgICBMT05HX01BWC8yICsgMSAtIERCTF9NQVhfRVhQKS80KQorICAgIGlmIChuZGlnaXRzID4gUHlfTUlOKERCTF9NSU5fRVhQIC0gREJMX01BTlRfRElHIC0gTE9OR19NSU4vMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBMT05HX01BWC8yICsgMSAtIERCTF9NQVhfRVhQKS80KQogICAgICAgICBnb3RvIGluc2FuZV9sZW5ndGhfZXJyb3I7CiAKICAgICAvKiBbcCA8ZXhwb25lbnQ+XSAqLwpAQCAtMTM0Miw3ICsxMzM3LDcgQEAKIAogICAgIC8qIGxzYiA9IGV4cG9uZW50IG9mIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiB0aGUgKnJvdW5kZWQqIHZhbHVlLgogICAgICAgIFRoaXMgaXMgdG9wX2V4cCAtIERCTF9NQU5UX0RJRyB1bmxlc3MgcmVzdWx0IGlzIHN1Ym5vcm1hbC4gKi8KLSAgICBsc2IgPSBNQVgodG9wX2V4cCwgKGxvbmcpREJMX01JTl9FWFApIC0gREJMX01BTlRfRElHOworICAgIGxzYiA9IFB5X01BWCh0b3BfZXhwLCAobG9uZylEQkxfTUlOX0VYUCkgLSBEQkxfTUFOVF9ESUc7CiAKICAgICB4ID0gMC4wOwogICAgIGlmIChleHAgPj0gbHNiKSB7CkBAIC0xNzExLDcgKzE3MDYsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdF9zcGVjKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgMCk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOwogICAgIHJldCA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAogICAgICAgICAmd3JpdGVyLAogICAgICAgICBzZWxmLApAQCAtMTg1OCw3ICsxODUzLDcgQEAKICAgICBmbG9hdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAotdm9pZAoraW50CiBfUHlGbG9hdF9Jbml0KHZvaWQpCiB7CiAgICAgLyogV2UgYXR0ZW1wdCB0byBkZXRlcm1pbmUgaWYgdGhpcyBtYWNoaW5lIGlzIHVzaW5nIElFRUUKQEAgLTE5MDgsOCArMTkwMywxMSBAQAogICAgIGZsb2F0X2Zvcm1hdCA9IGRldGVjdGVkX2Zsb2F0X2Zvcm1hdDsKIAogICAgIC8qIEluaXQgZmxvYXQgaW5mbyAqLwotICAgIGlmIChGbG9hdEluZm9UeXBlLnRwX25hbWUgPT0gMCkKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmRmxvYXRJbmZvVHlwZSwgJmZsb2F0aW5mb19kZXNjKTsKKyAgICBpZiAoRmxvYXRJbmZvVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZGbG9hdEluZm9UeXBlLCAmZmxvYXRpbmZvX2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKIH0KIAogaW50CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggODA4ZTU5NS4uYTYyYTQ1ZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtNywxMSArNyw2IEBACiAjaW5jbHVkZSAib3Bjb2RlLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKLSN1bmRlZiBNSU4KLSN1bmRlZiBNQVgKLSNkZWZpbmUgTUlOKGEsIGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCi0jZGVmaW5lIE1BWChhLCBiKSAoKGEpID4gKGIpID8gKGEpIDogKGIpKQotCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeUZyYW1lT2JqZWN0LCB4KQogCiBzdGF0aWMgUHlNZW1iZXJEZWYgZnJhbWVfbWVtYmVybGlzdFtdID0gewpAQCAtMTYwLDggKzE1NSw4IEBACiAKICAgICAvKiBXZSdyZSBub3cgcmVhZHkgdG8gbG9vayBhdCB0aGUgYnl0ZWNvZGUuICovCiAgICAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoZi0+Zl9jb2RlLT5jb19jb2RlLCAoY2hhciAqKikmY29kZSwgJmNvZGVfbGVuKTsKLSAgICBtaW5fYWRkciA9IE1JTihuZXdfbGFzdGksIGYtPmZfbGFzdGkpOwotICAgIG1heF9hZGRyID0gTUFYKG5ld19sYXN0aSwgZi0+Zl9sYXN0aSk7CisgICAgbWluX2FkZHIgPSBQeV9NSU4obmV3X2xhc3RpLCBmLT5mX2xhc3RpKTsKKyAgICBtYXhfYWRkciA9IFB5X01BWChuZXdfbGFzdGksIGYtPmZfbGFzdGkpOwogCiAgICAgLyogWW91IGNhbid0IGp1bXAgb250byBhIGxpbmUgd2l0aCBhbiAnZXhjZXB0JyBzdGF0ZW1lbnQgb24gaXQgLQogICAgICAqIHRoZXkgZXhwZWN0IHRvIGhhdmUgYW4gZXhjZXB0aW9uIG9uIHRoZSB0b3Agb2YgdGhlIHN0YWNrLCB3aGljaApAQCAtMjkzLDcgKzI4OCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1pbl9kZWx0YV9pYmxvY2sgPSBNSU4obWluX2RlbHRhX2libG9jaywgZGVsdGFfaWJsb2NrKTsKKyAgICAgICAgbWluX2RlbHRhX2libG9jayA9IFB5X01JTihtaW5fZGVsdGFfaWJsb2NrLCBkZWx0YV9pYmxvY2spOwogCiAgICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7CiAgICAgICAgICAgICBhZGRyICs9IDI7CkBAIC00NjYsNyArNDYxLDcgQEAKIGZyYW1lX3RyYXZlcnNlKFB5RnJhbWVPYmplY3QgKmYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewogICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipwOwotICAgIGludCBpLCBzbG90czsKKyAgICBQeV9zc2l6ZV90IGksIHNsb3RzOwogCiAgICAgUHlfVklTSVQoZi0+Zl9iYWNrKTsKICAgICBQeV9WSVNJVChmLT5mX2NvZGUpOwpAQCAtNDkzLDEwICs0ODgsMTAgQEAKIH0KIAogc3RhdGljIHZvaWQKLWZyYW1lX2NsZWFyKFB5RnJhbWVPYmplY3QgKmYpCitmcmFtZV90cF9jbGVhcihQeUZyYW1lT2JqZWN0ICpmKQogewogICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipwLCAqKm9sZHRvcDsKLSAgICBpbnQgaSwgc2xvdHM7CisgICAgUHlfc3NpemVfdCBpLCBzbG90czsKIAogICAgIC8qIEJlZm9yZSBhbnl0aGluZyBlbHNlLCBtYWtlIHN1cmUgdGhhdCB0aGlzIGZyYW1lIGlzIGNsZWFybHkgbWFya2VkCiAgICAgICogYXMgYmVpbmcgZGVmdW5jdCEgIEVsc2UsIGUuZy4sIGEgZ2VuZXJhdG9yIHJlYWNoYWJsZSBmcm9tIHRoaXMKQEAgLTUwNSw2ICs1MDAsNyBAQAogICAgICAqLwogICAgIG9sZHRvcCA9IGYtPmZfc3RhY2t0b3A7CiAgICAgZi0+Zl9zdGFja3RvcCA9IE5VTEw7CisgICAgZi0+Zl9leGVjdXRpbmcgPSAwOwogCiAgICAgUHlfQ0xFQVIoZi0+Zl9leGNfdHlwZSk7CiAgICAgUHlfQ0xFQVIoZi0+Zl9leGNfdmFsdWUpOwpAQCAtNTI1LDYgKzUyMSwyNSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZnJhbWVfY2xlYXIoUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBpZiAoZi0+Zl9leGVjdXRpbmcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY2xlYXIgYW4gZXhlY3V0aW5nIGZyYW1lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoZi0+Zl9nZW4pIHsKKyAgICAgICAgX1B5R2VuX0ZpbmFsaXplKGYtPmZfZ2VuKTsKKyAgICAgICAgYXNzZXJ0KGYtPmZfZ2VuID09IE5VTEwpOworICAgIH0KKyAgICBmcmFtZV90cF9jbGVhcihmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGNsZWFyX19kb2NfXywKKyJGLmNsZWFyKCk6IGNsZWFyIG1vc3QgcmVmZXJlbmNlcyBoZWxkIGJ5IHRoZSBmcmFtZSIpOworCitzdGF0aWMgUHlPYmplY3QgKgogZnJhbWVfc2l6ZW9mKFB5RnJhbWVPYmplY3QgKmYpCiB7CiAgICAgUHlfc3NpemVfdCByZXMsIGV4dHJhcywgbmNlbGxzLCBuZnJlZXM7CkBAIC01NDMsNiArNTU4LDggQEAKICJGLl9fc2l6ZW9mX18oKSAtPiBzaXplIG9mIEYgaW4gbWVtb3J5LCBpbiBieXRlcyIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgZnJhbWVfbWV0aG9kc1tdID0geworICAgIHsiY2xlYXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWZyYW1lX2NsZWFyLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgY2xlYXJfX2RvY19ffSwKICAgICB7Il9fc2l6ZW9mX18iLCAgICAgIChQeUNGdW5jdGlvbilmcmFtZV9zaXplb2YsICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIHNpemVvZl9fZG9jX199LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLwpAQCAtNTcxLDcgKzU4OCw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWZyYW1lX3RyYXZlcnNlLCAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgKGlucXVpcnkpZnJhbWVfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChpbnF1aXJ5KWZyYW1lX3RwX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwpAQCAtNzEzLDYgKzczMCw4IEBACiAgICAgZi0+Zl9sYXN0aSA9IC0xOwogICAgIGYtPmZfbGluZW5vID0gY29kZS0+Y29fZmlyc3RsaW5lbm87CiAgICAgZi0+Zl9pYmxvY2sgPSAwOworICAgIGYtPmZfZXhlY3V0aW5nID0gMDsKKyAgICBmLT5mX2dlbiA9IE5VTEw7CiAKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soZik7CiAgICAgcmV0dXJuIGY7CkBAIC04NDgsNyArODY3LDcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwogICAgIFB5Q29kZU9iamVjdCAqY287CiAgICAgUHlfc3NpemVfdCBqOwotICAgIGludCBuY2VsbHMsIG5mcmVldmFyczsKKyAgICBQeV9zc2l6ZV90IG5jZWxscywgbmZyZWV2YXJzOwogICAgIGlmIChmID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICBsb2NhbHMgPSBmLT5mX2xvY2FsczsKQEAgLTkwMCw3ICs5MTksNyBAQAogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeV9zc2l6ZV90IGo7Ci0gICAgaW50IG5jZWxscywgbmZyZWV2YXJzOworICAgIFB5X3NzaXplX3QgbmNlbGxzLCBuZnJlZXZhcnM7CiAgICAgaWYgKGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGxvY2FscyA9IGYtPmZfbG9jYWxzOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwppbmRleCA0OTQxNWI5Li5iMDQzOTM0IDEwMDY0NAotLS0gYS9PYmplY3RzL2Z1bmNvYmplY3QuYworKysgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwpAQCAtOCw2MCArOCw1OSBAQAogUHlPYmplY3QgKgogUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7Ci0gICAgUHlGdW5jdGlvbk9iamVjdCAqb3AgPSBQeU9iamVjdF9HQ19OZXcoUHlGdW5jdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlGdW5jdGlvbl9UeXBlKTsKLSAgICBzdGF0aWMgUHlPYmplY3QgKl9fbmFtZV9fID0gMDsKLSAgICBpZiAob3AgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqZG9jOwotICAgICAgICBQeU9iamVjdCAqY29uc3RzOwotICAgICAgICBQeU9iamVjdCAqbW9kdWxlOwotICAgICAgICBvcC0+ZnVuY193ZWFrcmVmbGlzdCA9IE5VTEw7Ci0gICAgICAgIFB5X0lOQ1JFRihjb2RlKTsKLSAgICAgICAgb3AtPmZ1bmNfY29kZSA9IGNvZGU7Ci0gICAgICAgIFB5X0lOQ1JFRihnbG9iYWxzKTsKLSAgICAgICAgb3AtPmZ1bmNfZ2xvYmFscyA9IGdsb2JhbHM7Ci0gICAgICAgIG9wLT5mdW5jX25hbWUgPSAoKFB5Q29kZU9iamVjdCAqKWNvZGUpLT5jb19uYW1lOwotICAgICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfbmFtZSk7Ci0gICAgICAgIG9wLT5mdW5jX2RlZmF1bHRzID0gTlVMTDsgLyogTm8gZGVmYXVsdCBhcmd1bWVudHMgKi8KLSAgICAgICAgb3AtPmZ1bmNfa3dkZWZhdWx0cyA9IE5VTEw7IC8qIE5vIGtleXdvcmQgb25seSBkZWZhdWx0cyAqLwotICAgICAgICBvcC0+ZnVuY19jbG9zdXJlID0gTlVMTDsKLSAgICAgICAgY29uc3RzID0gKChQeUNvZGVPYmplY3QgKiljb2RlKS0+Y29fY29uc3RzOwotICAgICAgICBpZiAoUHlUdXBsZV9TaXplKGNvbnN0cykgPj0gMSkgewotICAgICAgICAgICAgZG9jID0gUHlUdXBsZV9HZXRJdGVtKGNvbnN0cywgMCk7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhkb2MpKQotICAgICAgICAgICAgICAgIGRvYyA9IFB5X05vbmU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKGRvYyk7Ci0gICAgICAgIG9wLT5mdW5jX2RvYyA9IGRvYzsKLSAgICAgICAgb3AtPmZ1bmNfZGljdCA9IE5VTEw7Ci0gICAgICAgIG9wLT5mdW5jX21vZHVsZSA9IE5VTEw7Ci0gICAgICAgIG9wLT5mdW5jX2Fubm90YXRpb25zID0gTlVMTDsKKyAgICBQeUZ1bmN0aW9uT2JqZWN0ICpvcDsKKyAgICBQeU9iamVjdCAqZG9jLCAqY29uc3RzLCAqbW9kdWxlOworICAgIHN0YXRpYyBQeU9iamVjdCAqX19uYW1lX18gPSBOVUxMOwogCi0gICAgICAgIC8qIF9fbW9kdWxlX186IElmIG1vZHVsZSBuYW1lIGlzIGluIGdsb2JhbHMsIHVzZSBpdC4KLSAgICAgICAgICAgT3RoZXJ3aXNlLCB1c2UgTm9uZS4KLSAgICAgICAgKi8KLSAgICAgICAgaWYgKCFfX25hbWVfXykgewotICAgICAgICAgICAgX19uYW1lX18gPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKLSAgICAgICAgICAgIGlmICghX19uYW1lX18pIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3ApOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGdsb2JhbHMsIF9fbmFtZV9fKTsKLSAgICAgICAgaWYgKG1vZHVsZSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKG1vZHVsZSk7Ci0gICAgICAgICAgICBvcC0+ZnVuY19tb2R1bGUgPSBtb2R1bGU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHF1YWxuYW1lKQotICAgICAgICAgICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSBxdWFsbmFtZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSBvcC0+ZnVuY19uYW1lOwotICAgICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOworICAgIGlmIChfX25hbWVfXyA9PSBOVUxMKSB7CisgICAgICAgIF9fbmFtZV9fID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fbmFtZV9fIik7CisgICAgICAgIGlmIChfX25hbWVfXyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3AgPSBQeU9iamVjdF9HQ19OZXcoUHlGdW5jdGlvbk9iamVjdCwgJlB5RnVuY3Rpb25fVHlwZSk7CisgICAgaWYgKG9wID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgb3AtPmZ1bmNfd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIFB5X0lOQ1JFRihjb2RlKTsKKyAgICBvcC0+ZnVuY19jb2RlID0gY29kZTsKKyAgICBQeV9JTkNSRUYoZ2xvYmFscyk7CisgICAgb3AtPmZ1bmNfZ2xvYmFscyA9IGdsb2JhbHM7CisgICAgb3AtPmZ1bmNfbmFtZSA9ICgoUHlDb2RlT2JqZWN0ICopY29kZSktPmNvX25hbWU7CisgICAgUHlfSU5DUkVGKG9wLT5mdW5jX25hbWUpOworICAgIG9wLT5mdW5jX2RlZmF1bHRzID0gTlVMTDsgLyogTm8gZGVmYXVsdCBhcmd1bWVudHMgKi8KKyAgICBvcC0+ZnVuY19rd2RlZmF1bHRzID0gTlVMTDsgLyogTm8ga2V5d29yZCBvbmx5IGRlZmF1bHRzICovCisgICAgb3AtPmZ1bmNfY2xvc3VyZSA9IE5VTEw7CisKKyAgICBjb25zdHMgPSAoKFB5Q29kZU9iamVjdCAqKWNvZGUpLT5jb19jb25zdHM7CisgICAgaWYgKFB5VHVwbGVfU2l6ZShjb25zdHMpID49IDEpIHsKKyAgICAgICAgZG9jID0gUHlUdXBsZV9HZXRJdGVtKGNvbnN0cywgMCk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGRvYykpCisgICAgICAgICAgICBkb2MgPSBQeV9Ob25lOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBkb2MgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihkb2MpOworICAgIG9wLT5mdW5jX2RvYyA9IGRvYzsKKworICAgIG9wLT5mdW5jX2RpY3QgPSBOVUxMOworICAgIG9wLT5mdW5jX21vZHVsZSA9IE5VTEw7CisgICAgb3AtPmZ1bmNfYW5ub3RhdGlvbnMgPSBOVUxMOworCisgICAgLyogX19tb2R1bGVfXzogSWYgbW9kdWxlIG5hbWUgaXMgaW4gZ2xvYmFscywgdXNlIGl0LgorICAgICAgIE90aGVyd2lzZSwgdXNlIE5vbmUuICovCisgICAgbW9kdWxlID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgX19uYW1lX18pOworICAgIGlmIChtb2R1bGUpIHsKKyAgICAgICAgUHlfSU5DUkVGKG1vZHVsZSk7CisgICAgICAgIG9wLT5mdW5jX21vZHVsZSA9IG1vZHVsZTsKKyAgICB9CisgICAgaWYgKHF1YWxuYW1lKQorICAgICAgICBvcC0+ZnVuY19xdWFsbmFtZSA9IHF1YWxuYW1lOworICAgIGVsc2UKKyAgICAgICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSBvcC0+ZnVuY19uYW1lOworICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19xdWFsbmFtZSk7CisKICAgICBfUHlPYmplY3RfR0NfVFJBQ0sob3ApOwogICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDAxNmJmYTIuLjA4ZDMwYmYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtMTUsNiArMTUsMzEgQEAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZAorX1B5R2VuX0ZpbmFsaXplKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5R2VuT2JqZWN0ICpnZW4gPSAoUHlHZW5PYmplY3QgKilzZWxmOworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKworICAgIGlmIChnZW4tPmdpX2ZyYW1lID09IE5VTEwgfHwgZ2VuLT5naV9mcmFtZS0+Zl9zdGFja3RvcCA9PSBOVUxMKQorICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCisgICAgICAgIHJldHVybjsKKworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICByZXMgPSBnZW5fY2xvc2UoZ2VuLCBOVUxMKTsKKworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHNlbGYpOworICAgIGVsc2UKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKwogc3RhdGljIHZvaWQKIGdlbl9kZWFsbG9jKFB5R2VuT2JqZWN0ICpnZW4pCiB7CkBAIC0yNywxMiArNTIsOCBAQAogCiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKHNlbGYpOwogCi0gICAgaWYgKGdlbi0+Z2lfZnJhbWUgIT0gTlVMTCAmJiBnZW4tPmdpX2ZyYW1lLT5mX3N0YWNrdG9wICE9IE5VTEwpIHsKLSAgICAgICAgLyogR2VuZXJhdG9yIGlzIHBhdXNlZCwgc28gd2UgbmVlZCB0byBjbG9zZSAqLwotICAgICAgICBQeV9UWVBFKGdlbiktPnRwX2RlbChzZWxmKTsKLSAgICAgICAgaWYgKHNlbGYtPm9iX3JlZmNudCA+IDApCi0gICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdXJyZWN0ZWQuICA6KCAqLwotICAgIH0KKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKHNlbGYpKQorICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdXJyZWN0ZWQuICA6KCAqLwogCiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CiAgICAgUHlfQ0xFQVIoZ2VuLT5naV9mcmFtZSk7CkBAIC00MCw3ICs2MSw2IEBACiAgICAgUHlPYmplY3RfR0NfRGVsKGdlbik7CiB9CiAKLQogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9zZW5kX2V4KFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmcsIGludCBleGMpCiB7CkBAIC0xMjAsNiArMTQwLDcgQEAKICAgICAgICAgUHlfWERFQ1JFRih0KTsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfZ2VuID0gTlVMTDsKICAgICAgICAgZ2VuLT5naV9mcmFtZSA9IE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICB9CkBAIC0yMjIsNjggKzI0Myw2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkCi1nZW5fZGVsKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKLSAgICBQeUdlbk9iamVjdCAqZ2VuID0gKFB5R2VuT2JqZWN0ICopc2VsZjsKLQotICAgIGlmIChnZW4tPmdpX2ZyYW1lID09IE5VTEwgfHwgZ2VuLT5naV9mcmFtZS0+Zl9zdGFja3RvcCA9PSBOVUxMKQotICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCi0gICAgICAgIHJldHVybjsKLQotICAgIC8qIFRlbXBvcmFyaWx5IHJlc3VycmVjdCB0aGUgb2JqZWN0LiAqLwotICAgIGFzc2VydChzZWxmLT5vYl9yZWZjbnQgPT0gMCk7Ci0gICAgc2VsZi0+b2JfcmVmY250ID0gMTsKLQotICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCi0gICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7Ci0KLSAgICByZXMgPSBnZW5fY2xvc2UoZ2VuLCBOVUxMKTsKLQotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHNlbGYpOwotICAgIGVsc2UKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0KLSAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCi0gICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKLQotICAgIC8qIFVuZG8gdGhlIHRlbXBvcmFyeSByZXN1cnJlY3Rpb247IGNhbid0IHVzZSBERUNSRUYgaGVyZSwgaXQgd291bGQKLSAgICAgKiBjYXVzZSBhIHJlY3Vyc2l2ZSBjYWxsLgotICAgICAqLwotICAgIGFzc2VydChzZWxmLT5vYl9yZWZjbnQgPiAwKTsKLSAgICBpZiAoLS1zZWxmLT5vYl9yZWZjbnQgPT0gMCkKLSAgICAgICAgcmV0dXJuOyAvKiB0aGlzIGlzIHRoZSBub3JtYWwgcGF0aCBvdXQgKi8KLQotICAgIC8qIGNsb3NlKCkgcmVzdXJyZWN0ZWQgaXQhICBNYWtlIGl0IGxvb2sgbGlrZSB0aGUgb3JpZ2luYWwgUHlfREVDUkVGCi0gICAgICogbmV2ZXIgaGFwcGVuZWQuCi0gICAgICovCi0gICAgewotICAgICAgICBQeV9zc2l6ZV90IHJlZmNudCA9IHNlbGYtPm9iX3JlZmNudDsKLSAgICAgICAgX1B5X05ld1JlZmVyZW5jZShzZWxmKTsKLSAgICAgICAgc2VsZi0+b2JfcmVmY250ID0gcmVmY250OwotICAgIH0KLSAgICBhc3NlcnQoUHlUeXBlX0lTX0dDKFB5X1RZUEUoc2VsZikpICYmCi0gICAgICAgICAgIF9QeV9BU19HQyhzZWxmKS0+Z2MuZ2NfcmVmcyAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7Ci0KLSAgICAvKiBJZiBQeV9SRUZfREVCVUcsIF9QeV9OZXdSZWZlcmVuY2UgYnVtcGVkIF9QeV9SZWZUb3RhbCwgc28KLSAgICAgKiB3ZSBuZWVkIHRvIHVuZG8gdGhhdC4gKi8KLSAgICBfUHlfREVDX1JFRlRPVEFMOwotICAgIC8qIElmIFB5X1RSQUNFX1JFRlMsIF9QeV9OZXdSZWZlcmVuY2UgcmUtYWRkZWQgc2VsZiB0byB0aGUgb2JqZWN0Ci0gICAgICogY2hhaW4sIHNvIG5vIG1vcmUgdG8gZG8gdGhlcmUuCi0gICAgICogSWYgQ09VTlRfQUxMT0NTLCB0aGUgb3JpZ2luYWwgZGVjcmVmIGJ1bXBlZCB0cF9mcmVlcywgYW5kCi0gICAgICogX1B5X05ld1JlZmVyZW5jZSBidW1wZWQgdHBfYWxsb2NzOiAgYm90aCBvZiB0aG9zZSBuZWVkIHRvIGJlCi0gICAgICogdW5kb25lLgotICAgICAqLwotI2lmZGVmIENPVU5UX0FMTE9DUwotICAgIC0tKFB5X1RZUEUoc2VsZiktPnRwX2ZyZWVzKTsKLSAgICAtLShQeV9UWVBFKHNlbGYpLT50cF9hbGxvY3MpOwotI2VuZGlmCi19Ci0KLQogCiBQeURvY19TVFJWQVIodGhyb3dfZG9jLAogInRocm93KHR5cFssdmFsWyx0Yl1dKSAtPiByYWlzZSBleGNlcHRpb24gaW4gZ2VuZXJhdG9yLFxuXApAQCAtNTE3LDcgKzQ3Niw4IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CisgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylnZW5fdHJhdmVyc2UsICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTU0NCw3ICs1MDQsOSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCi0gICAgZ2VuX2RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICBfUHlHZW5fRmluYWxpemUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiBQeU9iamVjdCAqCkBAIC01NTYsNiArNTE4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGdlbi0+Z2lfZnJhbWUgPSBmOworICAgIGYtPmZfZ2VuID0gKFB5T2JqZWN0ICopIGdlbjsKICAgICBQeV9JTkNSRUYoZi0+Zl9jb2RlKTsKICAgICBnZW4tPmdpX2NvZGUgPSAoUHlPYmplY3QgKikoZi0+Zl9jb2RlKTsKICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCAzY2ZiZWFmLi43N2ZmODEwIDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtNCw3ICs0LDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBsb25nICAgICAgaXRfaW5kZXg7CisgICAgUHlfc3NpemVfdCBpdF9pbmRleDsKICAgICBQeU9iamVjdCAqaXRfc2VxOyAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBzZXFpdGVyb2JqZWN0OwogCkBAIC03Niw5ICs3NiwxNCBAQAogICAgIFB5X3NzaXplX3Qgc2Vxc2l6ZSwgbGVuOwogCiAgICAgaWYgKGl0LT5pdF9zZXEpIHsKLSAgICAgICAgc2Vxc2l6ZSA9IFB5U2VxdWVuY2VfU2l6ZShpdC0+aXRfc2VxKTsKLSAgICAgICAgaWYgKHNlcXNpemUgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNMZW4oaXQtPml0X3NlcSkpIHsKKyAgICAgICAgICAgIHNlcXNpemUgPSBQeVNlcXVlbmNlX1NpemUoaXQtPml0X3NlcSk7CisgICAgICAgICAgICBpZiAoc2Vxc2l6ZSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICAgICAgfQogICAgICAgICBsZW4gPSBzZXFzaXplIC0gaXQtPml0X2luZGV4OwogICAgICAgICBpZiAobGVuID49IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7CmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IDZlMGQwOTQuLjJmMjAzYjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC02NDQsOSArNjQ0LDE0IEBACiAgICAgbWVtY3B5KHJlY3ljbGUsICZpdGVtW2lsb3ddLCBzKTsKIAogICAgIGlmIChkIDwgMCkgeyAvKiBEZWxldGUgLWQgaXRlbXMgKi8KLSAgICAgICAgbWVtbW92ZSgmaXRlbVtpaGlnaCtkXSwgJml0ZW1baWhpZ2hdLAotICAgICAgICAgICAgKFB5X1NJWkUoYSkgLSBpaGlnaCkqc2l6ZW9mKFB5T2JqZWN0ICopKTsKLSAgICAgICAgbGlzdF9yZXNpemUoYSwgUHlfU0laRShhKSArIGQpOworICAgICAgICBQeV9zc2l6ZV90IHRhaWw7CisgICAgICAgIHRhaWwgPSAoUHlfU0laRShhKSAtIGloaWdoKSAqIHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgbWVtbW92ZSgmaXRlbVtpaGlnaCtkXSwgJml0ZW1baWhpZ2hdLCB0YWlsKTsKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKGEsIFB5X1NJWkUoYSkgKyBkKSA8IDApIHsKKyAgICAgICAgICAgIG1lbW1vdmUoJml0ZW1baWhpZ2hdLCAmaXRlbVtpaGlnaCtkXSwgdGFpbCk7CisgICAgICAgICAgICBtZW1jcHkoJml0ZW1baWxvd10sIHJlY3ljbGUsIHMpOworICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgfQogICAgICAgICBpdGVtID0gYS0+b2JfaXRlbTsKICAgICB9CiAgICAgZWxzZSBpZiAoZCA+IDApIHsgLyogSW5zZXJ0IGQgaXRlbXMgKi8KQEAgLTgyNiw3ICs4MzEsNyBAQAogICAgIGl0ZXJuZXh0ID0gKml0LT5vYl90eXBlLT50cF9pdGVybmV4dDsKIAogICAgIC8qIEd1ZXNzIGEgcmVzdWx0IGxpc3Qgc2l6ZS4gKi8KLSAgICBuID0gX1B5T2JqZWN0X0xlbmd0aEhpbnQoYiwgOCk7CisgICAgbiA9IFB5T2JqZWN0X0xlbmd0aEhpbnQoYiwgOCk7CiAgICAgaWYgKG4gPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NzEsOCArODc2LDEwIEBACiAgICAgfQogCiAgICAgLyogQ3V0IGJhY2sgcmVzdWx0IGxpc3QgaWYgaW5pdGlhbCBndWVzcyB3YXMgdG9vIGxhcmdlLiAqLwotICAgIGlmIChQeV9TSVpFKHNlbGYpIDwgc2VsZi0+YWxsb2NhdGVkKQotICAgICAgICBsaXN0X3Jlc2l6ZShzZWxmLCBQeV9TSVpFKHNlbGYpKTsgIC8qIHNocmlua2luZyBjYW4ndCBmYWlsICovCisgICAgaWYgKFB5X1NJWkUoc2VsZikgPCBzZWxmLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIFB5X1NJWkUoc2VsZikpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCiAgICAgUHlfREVDUkVGKGl0KTsKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTkyNSwxNyArOTMyLDE3IEBACiAgICAgdiA9IHNlbGYtPm9iX2l0ZW1baV07CiAgICAgaWYgKGkgPT0gUHlfU0laRShzZWxmKSAtIDEpIHsKICAgICAgICAgc3RhdHVzID0gbGlzdF9yZXNpemUoc2VsZiwgUHlfU0laRShzZWxmKSAtIDEpOwotICAgICAgICBhc3NlcnQoc3RhdHVzID49IDApOwotICAgICAgICByZXR1cm4gdjsgLyogYW5kIHYgbm93IG93bnMgdGhlIHJlZmVyZW5jZSB0aGUgbGlzdCBoYWQgKi8KKyAgICAgICAgaWYgKHN0YXR1cyA+PSAwKQorICAgICAgICAgICAgcmV0dXJuIHY7IC8qIGFuZCB2IG5vdyBvd25zIHRoZSByZWZlcmVuY2UgdGhlIGxpc3QgaGFkICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYodik7CiAgICAgc3RhdHVzID0gbGlzdF9hc3Nfc2xpY2Uoc2VsZiwgaSwgaSsxLCAoUHlPYmplY3QgKilOVUxMKTsKLSAgICBhc3NlcnQoc3RhdHVzID49IDApOwotICAgIC8qIFVzZSBzdGF0dXMsIHNvIHRoYXQgaW4gYSByZWxlYXNlIGJ1aWxkIGNvbXBpbGVycyBkb24ndAotICAgICAqIGNvbXBsYWluIGFib3V0IHRoZSB1bnVzZWQgbmFtZS4KLSAgICAgKi8KLSAgICAodm9pZCkgc3RhdHVzOwotCisgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTI2NjAsNyArMjY2Nyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgbG9uZyBpdF9pbmRleDsKKyAgICBQeV9zc2l6ZV90IGl0X2luZGV4OwogICAgIFB5TGlzdE9iamVjdCAqaXRfc2VxOyAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBsaXN0aXRlcm9iamVjdDsKIApAQCAtMjc5Nyw3ICsyODA0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBsaXN0aXRlcl9zZXRzdGF0ZShsaXN0aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKIHsKLSAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOwogICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CkBAIC0yOTU4LDcgKzI5NjUsNyBAQAogICAgIGlmIChmb3J3YXJkKSB7CiAgICAgICAgIGxpc3RpdGVyb2JqZWN0ICppdCA9IChsaXN0aXRlcm9iamVjdCAqKV9pdDsKICAgICAgICAgaWYgKGl0LT5pdF9zZXEpCi0gICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGlzdHJldml0ZXJvYmplY3QgKml0ID0gKGxpc3RyZXZpdGVyb2JqZWN0ICopX2l0OwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCAzMGZmYzk0Li5lMGQ2NDFhMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sb25nb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKQEAgLTE3LDcgKzE3LDggQEAKICNlbmRpZgogCiAvKiBjb252ZXJ0IGEgUHlMb25nIG9mIHNpemUgMSwgMCBvciAtMSB0byBhbiBzZGlnaXQgKi8KLSNkZWZpbmUgTUVESVVNX1ZBTFVFKHgpIChQeV9TSVpFKHgpIDwgMCA/IC0oc2RpZ2l0KSh4KS0+b2JfZGlnaXRbMF0gOiAgIFwKKyNkZWZpbmUgTUVESVVNX1ZBTFVFKHgpIChhc3NlcnQoLTEgPD0gUHlfU0laRSh4KSAmJiBQeV9TSVpFKHgpIDw9IDEpLCAgIFwKKyAgICAgICAgIFB5X1NJWkUoeCkgPCAwID8gLShzZGlnaXQpKHgpLT5vYl9kaWdpdFswXSA6ICAgXAogICAgICAgICAgICAgIChQeV9TSVpFKHgpID09IDAgPyAoc2RpZ2l0KTAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAoc2RpZ2l0KSh4KS0+b2JfZGlnaXRbMF0pKQogI2RlZmluZSBBQlMoeCkgKCh4KSA8IDAgPyAtKHgpIDogKHgpKQpAQCAtNzAsMTEgKzcxLDIxIEBACiAKIC8qIElmIGEgZnJlc2hseS1hbGxvY2F0ZWQgbG9uZyBpcyBhbHJlYWR5IHNoYXJlZCwgaXQgbXVzdAogICAgYmUgYSBzbWFsbCBpbnRlZ2VyLCBzbyBuZWdhdGluZyBpdCBtdXN0IGdvIHRvIFB5TG9uZ19Gcm9tTG9uZyAqLwotI2RlZmluZSBORUdBVEUoeCkgXAotICAgIGRvIGlmIChQeV9SRUZDTlQoeCkgPT0gMSkgUHlfU0laRSh4KSA9IC1QeV9TSVpFKHgpOyAgXAotICAgICAgIGVsc2UgeyBQeU9iamVjdCogdG1wPVB5TG9uZ19Gcm9tTG9uZygtTUVESVVNX1ZBTFVFKHgpKTsgIFwKLSAgICAgICAgICAgUHlfREVDUkVGKHgpOyAoeCkgPSAoUHlMb25nT2JqZWN0Kil0bXA7IH0gICAgICAgICAgICAgICBcCi0gICAgd2hpbGUoMCkKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX1B5TG9uZ19OZWdhdGUoUHlMb25nT2JqZWN0ICoqeF9wKQoreworICAgIFB5TG9uZ09iamVjdCAqeDsKKworICAgIHggPSAoUHlMb25nT2JqZWN0ICopKnhfcDsKKyAgICBpZiAoUHlfUkVGQ05UKHgpID09IDEpIHsKKyAgICAgICAgUHlfU0laRSh4KSA9IC1QeV9TSVpFKHgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKnhfcCA9IChQeUxvbmdPYmplY3QgKilQeUxvbmdfRnJvbUxvbmcoLU1FRElVTV9WQUxVRSh4KSk7CisgICAgUHlfREVDUkVGKHgpOworfQorCiAvKiBGb3IgbG9uZyBtdWx0aXBsaWNhdGlvbiwgdXNlIHRoZSBPKE4qKjIpIHNjaG9vbCBhbGdvcml0aG0gdW5sZXNzCiAgKiBib3RoIG9wZXJhbmRzIGNvbnRhaW4gbW9yZSB0aGFuIEtBUkFUU1VCQV9DVVRPRkYgZGlnaXRzICh0aGlzCiAgKiBiZWluZyBhbiBpbnRlcm5hbCBQeXRob24gbG9uZyBkaWdpdCwgaW4gYmFzZSBCQVNFKS4KQEAgLTg5LDExICsxMDAsNiBAQAogICovCiAjZGVmaW5lIEZJVkVBUllfQ1VUT0ZGIDgKIAotI3VuZGVmIE1JTgotI3VuZGVmIE1BWAotI2RlZmluZSBNQVgoeCwgeSkgKCh4KSA8ICh5KSA/ICh5KSA6ICh4KSkKLSNkZWZpbmUgTUlOKHgsIHkpICgoeCkgPiAoeSkgPyAoeSkgOiAoeCkpCi0KICNkZWZpbmUgU0lHQ0hFQ0soUHlUcnlCbG9jaykgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSBQeVRyeUJsb2NrICAgIFwKQEAgLTU0Myw3ICs1NDksNyBAQAogICAgICAgICB4ID0gKHggPDwgUHlMb25nX1NISUZUKSB8IHYtPm9iX2RpZ2l0W2ldOwogICAgICAgICBpZiAoKHggPj4gUHlMb25nX1NISUZUKSAhPSBwcmV2KSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIGludCB0b28gbGFyZ2UgdG8gY29udmVydCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBpbnQgdG9vIGxhcmdlIHRvIGNvbnZlcnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBDIHVuc2lnbmVkIGxvbmciKTsKICAgICAgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZykgLTE7CiAgICAgICAgIH0KQEAgLTk1NCw5ICs5NjAsNiBAQAogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCiB7CiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotICAgIC8qIHNwZWNpYWwtY2FzZSBudWxsIHBvaW50ZXIgKi8KLSAgICBpZiAoIXApCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKShQeV91aW50cHRyX3QpcCk7CiAjZWxzZQogCkBAIC05NjYsOSArOTY5LDYgQEAKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAogIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgotICAgIC8qIHNwZWNpYWwtY2FzZSBudWxsIHBvaW50ZXIgKi8KLSAgICBpZiAoIXApCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgUFlfTE9OR19MT05HKShQeV91aW50cHRyX3QpcCk7CiAjZW5kaWYgLyogU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORyAqLwogCkBAIC0xMDE0LDcgKzEwMTQsNiBAQAogICogcmV3cml0dGVuIHRvIHVzZSB0aGUgbmV3ZXIgUHlMb25nX3tBcyxGcm9tfUJ5dGVBcnJheSBBUEkuCiAgKi8KIAotI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOIChpbnQpKih1bnNpZ25lZCBjaGFyKikmb25lCiAjZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NSU4pCiAKIC8qIENyZWF0ZSBhIG5ldyBsb25nIGludCBvYmplY3QgZnJvbSBhIEMgUFlfTE9OR19MT05HIGludC4gKi8KQEAgLTExNjcsNyArMTE2Niw2IEBACiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwogICAgIFBZX0xPTkdfTE9ORyBieXRlczsKLSAgICBpbnQgb25lID0gMTsKICAgICBpbnQgcmVzOwogCiAgICAgaWYgKHZ2ID09IE5VTEwpIHsKQEAgLTEyMDIsNyArMTIwMCw3IEBACiAgICAgY2FzZSAxOiByZXR1cm4gdi0+b2JfZGlnaXRbMF07CiAgICAgfQogICAgIHJlcyA9IF9QeUxvbmdfQXNCeXRlQXJyYXkoKFB5TG9uZ09iamVjdCAqKXZ2LCAodW5zaWduZWQgY2hhciAqKSZieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNJWkVPRl9MT05HX0xPTkcsIElTX0xJVFRMRV9FTkRJQU4sIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRU9GX0xPTkdfTE9ORywgUFlfTElUVExFX0VORElBTiwgMSk7CiAKICAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKQEAgLTEyMTksNyArMTIxNyw2IEBACiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwogICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBieXRlczsKLSAgICBpbnQgb25lID0gMTsKICAgICBpbnQgcmVzOwogCiAgICAgaWYgKHZ2ID09IE5VTEwpIHsKQEAgLTEyMzgsNyArMTIzNSw3IEBACiAgICAgfQogCiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopdnYsICh1bnNpZ25lZCBjaGFyICopJmJ5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRU9GX0xPTkdfTE9ORywgSVNfTElUVExFX0VORElBTiwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfTE9OR19MT05HLCBQWV9MSVRUTEVfRU5ESUFOLCAwKTsKIAogICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQpAQCAtMTMxNCw3ICsxMzExLDYgQEAKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CiAgICAgfQogfQotI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAogLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgogICAgX19pbnRfXyBtZXRob2QuCkBAIC0xNjA2LDcgKzE2MDIsNyBAQAogICAgICovCiAgICAgaWYgKHNpemVfYSA+IFBZX1NTSVpFX1RfTUFYIC8gUHlMb25nX1NISUZUKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImxvbmcgaXMgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImludCB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgLyogdGhlIGV4cHJlc3Npb24gc2l6ZV9hICogUHlMb25nX1NISUZUIGlzIG5vdyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KQEAgLTE2NzYsNyArMTY3Miw2IEBACiAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQShzdHIpICsgc3RybGVuOyAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICpwID0gJ1wwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseSAgICAgICAgICAgIFwKICAgICAgICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTc5MCw3ICsxNzg1LDcgQEAKICAgICAgICAgLyogRW5zdXJlIG92ZXJmbG93IGRvZXNuJ3Qgb2NjdXIgZHVyaW5nIGNvbXB1dGF0aW9uIG9mIHN6LiAqLwogICAgICAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgaXMgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgdG9vIGxhcmdlIHRvIGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHNpemVfYV9pbl9iaXRzID0gKHNpemVfYSAtIDEpICogUHlMb25nX1NISUZUICsKQEAgLTIyOTIsNyArMjI4Nyw3IEBACiAgICAgaWYgKHN0cm9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgImludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlICVkOiAlUiIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxpdGVyYWwgZm9yIGludCgpIHdpdGggYmFzZSAlZDogJS4yMDBSIiwKICAgICAgICAgICAgICAgICAgYmFzZSwgc3Ryb2JqKTsKICAgICBQeV9ERUNSRUYoc3Ryb2JqKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMTYsNyArMjMxMSw3IEBACiAgICAgc3Ryb2JqID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCBQeV9NSU4obGVuLCAyMDApKTsKICAgICBpZiAoc3Ryb2JqICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgJWQ6ICVSIiwKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxpdGVyYWwgZm9yIGludCgpIHdpdGggYmFzZSAlZDogJS4yMDBSIiwKICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN0cm9iaik7CiAgICAgICAgIFB5X0RFQ1JFRihzdHJvYmopOwogICAgIH0KQEAgLTIzMzcsNyArMjMzMiw3IEBACiBQeU9iamVjdCAqCiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QoUHlPYmplY3QgKnUsIGludCBiYXNlKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQsICphc2NpaWRpZywgKnN0cm9iajsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYXNjaWlkaWc7CiAgICAgY2hhciAqYnVmZmVyLCAqZW5kID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGJ1ZmxlbjsKIApAQCAtMjM1OSwxMyArMjM1NCw5IEBACiAgICAgICAgIFB5X0RFQ1JFRihhc2NpaWRpZyk7CiAgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICB9Ci0gICAgc3Ryb2JqID0gUHlTZXF1ZW5jZV9HZXRTbGljZSh1LCAwLCAyMDApOwotICAgIGlmIChzdHJvYmogIT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxpdGVyYWwgZm9yIGludCgpIHdpdGggYmFzZSAlZDogJVIiLAotICAgICAgICAgICAgICAgICAgICAgYmFzZSwgc3Ryb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cm9iaik7Ci0gICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgJWQ6ICUuMjAwUiIsCisgICAgICAgICAgICAgICAgIGJhc2UsIHUpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yNDE5LDEwICsyNDEwLDIxIEBACiAgICAgICAgVGhlIHF1b3RpZW50IHogaGFzIHRoZSBzaWduIG9mIGEqYjsKICAgICAgICB0aGUgcmVtYWluZGVyIHIgaGFzIHRoZSBzaWduIG9mIGEsCiAgICAgICAgc28gYSA9IGIqeiArIHIuICovCi0gICAgaWYgKChQeV9TSVpFKGEpIDwgMCkgIT0gKFB5X1NJWkUoYikgPCAwKSkKLSAgICAgICAgTkVHQVRFKHopOwotICAgIGlmIChQeV9TSVpFKGEpIDwgMCAmJiBQeV9TSVpFKCpwcmVtKSAhPSAwKQotICAgICAgICBORUdBVEUoKnByZW0pOworICAgIGlmICgoUHlfU0laRShhKSA8IDApICE9IChQeV9TSVpFKGIpIDwgMCkpIHsKKyAgICAgICAgX1B5TG9uZ19OZWdhdGUoJnopOworICAgICAgICBpZiAoeiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9DTEVBUigqcHJlbSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5X1NJWkUoYSkgPCAwICYmIFB5X1NJWkUoKnByZW0pICE9IDApIHsKKyAgICAgICAgX1B5TG9uZ19OZWdhdGUocHJlbSk7CisgICAgICAgIGlmICgqcHJlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoeik7CisgICAgICAgICAgICBQeV9DTEVBUigqcHJlbSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CiAgICAgKnBkaXYgPSBtYXliZV9zbWFsbF9sb25nKHopOwogICAgIHJldHVybiAwOwogfQpAQCAtMjY5OCw3ICsyNzAwLDcgQEAKICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImxvbmcgaW50IHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIGZsb2F0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAiaW50IHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIGZsb2F0Iik7CiAgICAgICAgIHJldHVybiAtMS4wOwogICAgIH0KICAgICByZXR1cm4gbGRleHAoeCwgKGludClleHBvbmVudCk7CkBAIC0yOTE4LDggKzI5MjAsMTEgQEAKICAgICAgICAgYm9ycm93ICY9IDE7IC8qIEtlZXAgb25seSBvbmUgc2lnbiBiaXQgKi8KICAgICB9CiAgICAgYXNzZXJ0KGJvcnJvdyA9PSAwKTsKLSAgICBpZiAoc2lnbiA8IDApCi0gICAgICAgIE5FR0FURSh6KTsKKyAgICBpZiAoc2lnbiA8IDApIHsKKyAgICAgICAgX1B5TG9uZ19OZWdhdGUoJnopOworICAgICAgICBpZiAoeiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiBsb25nX25vcm1hbGl6ZSh6KTsKIH0KIApAQCAtMzA4Niw3ICszMDkxLDcgQEAKICAgICBQeV9zc2l6ZV90IHNpemVfbG8sIHNpemVfaGk7CiAgICAgY29uc3QgUHlfc3NpemVfdCBzaXplX24gPSBBQlMoUHlfU0laRShuKSk7CiAKLSAgICBzaXplX2xvID0gTUlOKHNpemVfbiwgc2l6ZSk7CisgICAgc2l6ZV9sbyA9IFB5X01JTihzaXplX24sIHNpemUpOwogICAgIHNpemVfaGkgPSBzaXplX24gLSBzaXplX2xvOwogCiAgICAgaWYgKChoaSA9IF9QeUxvbmdfTmV3KHNpemVfaGkpKSA9PSBOVUxMKQpAQCAtMzM1Nyw3ICszMzYyLDcgQEAKICAgICBuYmRvbmUgPSAwOwogICAgIHdoaWxlIChic2l6ZSA+IDApIHsKICAgICAgICAgUHlMb25nT2JqZWN0ICpwcm9kdWN0OwotICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5idG91c2UgPSBNSU4oYnNpemUsIGFzaXplKTsKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCBuYnRvdXNlID0gUHlfTUlOKGJzaXplLCBhc2l6ZSk7CiAKICAgICAgICAgLyogTXVsdGlwbHkgdGhlIG5leHQgc2xpY2Ugb2YgYiBieSBhLiAqLwogICAgICAgICBtZW1jcHkoYnNsaWNlLT5vYl9kaWdpdCwgYi0+b2JfZGlnaXQgKyBuYmRvbmUsCkBAIC0zNDEwLDggKzM0MTUsMTEgQEAKIAogICAgIHogPSBrX211bChhLCBiKTsKICAgICAvKiBOZWdhdGUgaWYgZXhhY3RseSBvbmUgb2YgdGhlIGlucHV0cyBpcyBuZWdhdGl2ZS4gKi8KLSAgICBpZiAoKChQeV9TSVpFKGEpIF4gUHlfU0laRShiKSkgPCAwKSAmJiB6KQotICAgICAgICBORUdBVEUoeik7CisgICAgaWYgKCgoUHlfU0laRShhKSBeIFB5X1NJWkUoYikpIDwgMCkgJiYgeikgeworICAgICAgICBfUHlMb25nX05lZ2F0ZSgmeik7CisgICAgICAgIGlmICh6ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXo7CiB9CiAKQEAgLTM2NDgsNyArMzY1Niw3IEBACiAgICAgICAgIGdvdG8gdW5kZXJmbG93X29yX3plcm87CiAKICAgICAvKiBDaG9vc2UgdmFsdWUgZm9yIHNoaWZ0OyBzZWUgY29tbWVudHMgZm9yIHN0ZXAgMSBhYm92ZS4gKi8KLSAgICBzaGlmdCA9IE1BWChkaWZmLCBEQkxfTUlOX0VYUCkgLSBEQkxfTUFOVF9ESUcgLSAyOworICAgIHNoaWZ0ID0gUHlfTUFYKGRpZmYsIERCTF9NSU5fRVhQKSAtIERCTF9NQU5UX0RJRyAtIDI7CiAKICAgICBpbmV4YWN0ID0gMDsKIApAQCAtMzcxOSw3ICszNzI3LDcgQEAKICAgICB4X2JpdHMgPSAoeF9zaXplLTEpKlB5TG9uZ19TSElGVCtiaXRzX2luX2RpZ2l0KHgtPm9iX2RpZ2l0W3hfc2l6ZS0xXSk7CiAKICAgICAvKiBUaGUgbnVtYmVyIG9mIGV4dHJhIGJpdHMgdGhhdCBoYXZlIHRvIGJlIHJvdW5kZWQgYXdheS4gKi8KLSAgICBleHRyYV9iaXRzID0gTUFYKHhfYml0cywgREJMX01JTl9FWFAgLSBzaGlmdCkgLSBEQkxfTUFOVF9ESUc7CisgICAgZXh0cmFfYml0cyA9IFB5X01BWCh4X2JpdHMsIERCTF9NSU5fRVhQIC0gc2hpZnQpIC0gREJMX01BTlRfRElHOwogICAgIGFzc2VydChleHRyYV9iaXRzID09IDIgfHwgZXh0cmFfYml0cyA9PSAzKTsKIAogICAgIC8qIFJvdW5kIGJ5IGRpcmVjdGx5IG1vZGlmeWluZyB0aGUgbG93IGRpZ2l0IG9mIHguICovCkBAIC0zODU4LDcgKzM4NjYsOSBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGMpOwogICAgICAgICAgICAgYyA9IHRlbXA7CiAgICAgICAgICAgICB0ZW1wID0gTlVMTDsKLSAgICAgICAgICAgIE5FR0FURShjKTsKKyAgICAgICAgICAgIF9QeUxvbmdfTmVnYXRlKCZjKTsKKyAgICAgICAgICAgIGlmIChjID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIGlmIG1vZHVsdXMgPT0gMToKQEAgLTM5NTgsMTAgKzM5NjgsNyBAQAogICAgIGdvdG8gRG9uZTsKIAogICBFcnJvcjoKLSAgICBpZiAoeiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih6KTsKLSAgICAgICAgeiA9IE5VTEw7Ci0gICAgfQorICAgIFB5X0NMRUFSKHopOwogICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICBEb25lOgogICAgIGlmIChQeV9TSVpFKGIpID4gRklWRUFSWV9DVVRPRkYpIHsKQEAgLTQwOTEsMTAgKzQwOTgsMTAgQEAKIAogICAgIHNoaWZ0YnkgPSBQeUxvbmdfQXNTc2l6ZV90KChQeU9iamVjdCAqKWIpOwogICAgIGlmIChzaGlmdGJ5ID09IC0xTCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGxzaGlmdF9lcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNoaWZ0YnkgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2hpZnQgY291bnQiKTsKLSAgICAgICAgZ290byBsc2hpZnRfZXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiB3b3Jkc2hpZnQsIHJlbXNoaWZ0ID0gZGl2bW9kKHNoaWZ0YnksIFB5TG9uZ19TSElGVCkgKi8KICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwpAQCAtNDEwNiw5ICs0MTEzLDExIEBACiAgICAgICAgICsrbmV3c2l6ZTsKICAgICB6ID0gX1B5TG9uZ19OZXcobmV3c2l6ZSk7CiAgICAgaWYgKHogPT0gTlVMTCkKLSAgICAgICAgZ290byBsc2hpZnRfZXJyb3I7Ci0gICAgaWYgKFB5X1NJWkUoYSkgPCAwKQotICAgICAgICBORUdBVEUoeik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeV9TSVpFKGEpIDwgMCkgeworICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHopID09IDEpOworICAgICAgICBQeV9TSVpFKHopID0gLVB5X1NJWkUoeik7CisgICAgfQogICAgIGZvciAoaSA9IDA7IGkgPCB3b3Jkc2hpZnQ7IGkrKykKICAgICAgICAgei0+b2JfZGlnaXRbaV0gPSAwOwogICAgIGFjY3VtID0gMDsKQEAgLTQxMjIsNyArNDEzMSw2IEBACiAgICAgZWxzZQogICAgICAgICBhc3NlcnQoIWFjY3VtKTsKICAgICB6ID0gbG9uZ19ub3JtYWxpemUoeik7Ci0gIGxzaGlmdF9lcnJvcjoKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG1heWJlX3NtYWxsX2xvbmcoeik7CiB9CiAKQEAgLTQxNDcsNyArNDE1NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBsb25nX2JpdHdpc2UoUHlMb25nT2JqZWN0ICphLAotICAgICAgICAgICAgIGludCBvcCwgIC8qICcmJywgJ3wnLCAnXicgKi8KKyAgICAgICAgICAgICBjaGFyIG9wLCAgLyogJyYnLCAnfCcsICdeJyAqLwogICAgICAgICAgICAgIFB5TG9uZ09iamVjdCAqYikKIHsKICAgICBpbnQgbmVnYSwgbmVnYiwgbmVnejsKQEAgLTQzMjIsOCArNDMzMCw3IEBACiBsb25nX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqb2Jhc2UgPSBOVUxMLCAqeCA9IE5VTEw7Ci0gICAgbG9uZyBiYXNlOwotICAgIGludCBvdmVyZmxvdzsKKyAgICBQeV9zc2l6ZV90IGJhc2U7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ4IiwgImJhc2UiLCAwfTsKIAogICAgIGlmICh0eXBlICE9ICZQeUxvbmdfVHlwZSkKQEAgLTQzNDIsMTAgKzQzNDksMTAgQEAKICAgICBpZiAob2Jhc2UgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5TnVtYmVyX0xvbmcoeCk7CiAKLSAgICBiYXNlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iYXNlLCAmb3ZlcmZsb3cpOworICAgIGJhc2UgPSBQeU51bWJlcl9Bc1NzaXplX3Qob2Jhc2UsIE5VTEwpOwogICAgIGlmIChiYXNlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvdmVyZmxvdyB8fCAoYmFzZSAhPSAwICYmIGJhc2UgPCAyKSB8fCBiYXNlID4gMzYpIHsKKyAgICBpZiAoKGJhc2UgIT0gMCAmJiBiYXNlIDwgMikgfHwgYmFzZSA+IDM2KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCgpIGJhc2UgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ0MjYsNyArNDQzMyw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgcmV0ID0gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcigKICAgICAgICAgJndyaXRlciwKICAgICAgICAgc2VsZiwKQEAgLTUwODMsOCArNTA5MCwxMCBAQAogICAgIH0KICNlbmRpZgogICAgIC8qIGluaXRpYWxpemUgaW50X2luZm8gKi8KLSAgICBpZiAoSW50X0luZm9UeXBlLnRwX25hbWUgPT0gMCkKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmSW50X0luZm9UeXBlLCAmaW50X2luZm9fZGVzYyk7CisgICAgaWYgKEludF9JbmZvVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZJbnRfSW5mb1R5cGUsICZpbnRfaW5mb19kZXNjKSA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICByZXR1cm4gMTsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCmluZGV4IGYwNjg1ZGQuLjExYzhiNmUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwpAQCAtMTMsNiArMTMsMTUgQEAKICNkZWZpbmUgUHlDRnVuY3Rpb25fTUFYRlJFRUxJU1QgMjU2CiAjZW5kaWYKIAorLyogdW5kZWZpbmUgbWFjcm8gdHJhbXBvbGluZSB0byBQeUNGdW5jdGlvbl9OZXdFeCAqLworI3VuZGVmIFB5Q0Z1bmN0aW9uX05ldworCitQeU9iamVjdCAqCitQeUNGdW5jdGlvbl9OZXcoUHlNZXRob2REZWYgKm1sLCBQeU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gUHlDRnVuY3Rpb25fTmV3RXgobWwsIHNlbGYsIE5VTEwpOworfQorCiBQeU9iamVjdCAqCiBQeUNGdW5jdGlvbl9OZXdFeChQeU1ldGhvZERlZiAqbWwsIFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbW9kdWxlKQogewpAQCAtNzAsMjMgKzc5LDM0IEBACiBQeU9iamVjdCAqCiBQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCiB7CisjZGVmaW5lIENIRUNLX1JFU1VMVChyZXMpIGFzc2VydChyZXMgIT0gTlVMTCB8fCBQeUVycl9PY2N1cnJlZCgpKQorCiAgICAgUHlDRnVuY3Rpb25PYmplY3QqIGYgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmM7CiAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCiAgICAgc3dpdGNoIChQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCkpIHsKICAgICBjYXNlIE1FVEhfVkFSQVJHUzoKLSAgICAgICAgaWYgKGt3ID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3cpID09IDApCi0gICAgICAgICAgICByZXR1cm4gKCptZXRoKShzZWxmLCBhcmcpOworICAgICAgICBpZiAoa3cgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrdykgPT0gMCkgeworICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBhcmcpOworICAgICAgICAgICAgQ0hFQ0tfUkVTVUxUKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUzoKLSAgICAgICAgcmV0dXJuICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZywga3cpOworICAgICAgICByZXMgPSAoKihQeUNGdW5jdGlvbldpdGhLZXl3b3JkcyltZXRoKShzZWxmLCBhcmcsIGt3KTsKKyAgICAgICAgQ0hFQ0tfUkVTVUxUKHJlcyk7CisgICAgICAgIHJldHVybiByZXM7CiAgICAgY2FzZSBNRVRIX05PQVJHUzoKICAgICAgICAgaWYgKGt3ID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3cpID09IDApIHsKICAgICAgICAgICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZyk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiAoKm1ldGgpKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfUkVTVUxUKHJlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIG5vIGFyZ3VtZW50cyAoJXpkIGdpdmVuKSIsCiAgICAgICAgICAgICAgICAgZi0+bV9tbC0+bWxfbmFtZSwgc2l6ZSk7CkBAIC05Niw4ICsxMTYsMTEgQEAKICAgICBjYXNlIE1FVEhfTzoKICAgICAgICAgaWYgKGt3ID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3cpID09IDApIHsKICAgICAgICAgICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZyk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA9PSAxKQotICAgICAgICAgICAgICAgIHJldHVybiAoKm1ldGgpKHNlbGYsIFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSk7CisgICAgICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBQeVR1cGxlX0dFVF9JVEVNKGFyZywgMCkpOworICAgICAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOworICAgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKSIsCiAgICAgICAgICAgICAgICAgZi0+bV9tbC0+bWxfbmFtZSwgc2l6ZSk7CkBAIC0xMTQsNiArMTM3LDggQEAKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAogICAgICAgICAgICAgICAgICBmLT5tX21sLT5tbF9uYW1lKTsKICAgICByZXR1cm4gTlVMTDsKKworI3VuZGVmIENIRUNLX1JFU1VMVAogfQogCiAvKiBNZXRob2RzICh0aGUgc3RhbmRhcmQgYnVpbHQtaW4gbWV0aG9kcywgdGhhdCBpcykgKi8KQEAgLTM0NiwxNyArMzcxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5Q0Z1bmN0aW9uT2JqZWN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUNGdW5jdGlvbk9iamVjdCkpOwogfQotCi0vKiBQeUNGdW5jdGlvbl9OZXcoKSBpcyBub3cganVzdCBhIG1hY3JvIHRoYXQgY2FsbHMgUHlDRnVuY3Rpb25fTmV3RXgoKSwKLSAgIGJ1dCBpdCdzIHBhcnQgb2YgdGhlIEFQSSBzbyB3ZSBuZWVkIHRvIGtlZXAgYSBmdW5jdGlvbiBhcm91bmQgdGhhdAotICAgZXhpc3RpbmcgQyBleHRlbnNpb25zIGNhbiBjYWxsLgotKi8KLQotI3VuZGVmIFB5Q0Z1bmN0aW9uX05ldwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9OZXcoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKik7Ci0KLVB5T2JqZWN0ICoKLVB5Q0Z1bmN0aW9uX05ldyhQeU1ldGhvZERlZiAqbWwsIFB5T2JqZWN0ICpzZWxmKQotewotICAgIHJldHVybiBQeUNGdW5jdGlvbl9OZXdFeChtbCwgc2VsZiwgTlVMTCk7Ci19CmRpZmYgLS1naXQgYS9PYmplY3RzL21vZHVsZW9iamVjdC5jIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwppbmRleCAyZjJiZDM2Li4zZWEzYmU4IDEwMDY0NAotLS0gYS9PYmplY3RzL21vZHVsZW9iamVjdC5jCisrKyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKQEAgLTExLDYgKzExLDggQEAKICAgICBQeU9iamVjdCAqbWRfZGljdDsKICAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKm1kX2RlZjsKICAgICB2b2lkICptZF9zdGF0ZTsKKyAgICBQeU9iamVjdCAqbWRfd2Vha2xpc3Q7CisgICAgUHlPYmplY3QgKm1kX25hbWU7ICAvKiBmb3IgbG9nZ2luZyBwdXJwb3NlcyBhZnRlciBtZF9kaWN0IGlzIGNsZWFyZWQgKi8KIH0gUHlNb2R1bGVPYmplY3Q7CiAKIHN0YXRpYyBQeU1lbWJlckRlZiBtb2R1bGVfbWVtYmVyc1tdID0gewpAQCAtMjYsNiArMjgsMzMgQEAKIH07CiAKIAorc3RhdGljIGludAorbW9kdWxlX2luaXRfZGljdChQeU1vZHVsZU9iamVjdCAqbW9kLCBQeU9iamVjdCAqbWRfZGljdCwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpkb2MpCit7CisgICAgaWYgKG1kX2RpY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChkb2MgPT0gTlVMTCkKKyAgICAgICAgZG9jID0gUHlfTm9uZTsKKworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lKSAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1kX2RpY3QsICJfX2RvY19fIiwgZG9jKSAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1kX2RpY3QsICJfX3BhY2thZ2VfXyIsIFB5X05vbmUpICE9IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fbG9hZGVyX18iLCBQeV9Ob25lKSAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG5hbWUpKSB7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgUHlfWERFQ1JFRihtb2QtPm1kX25hbWUpOworICAgICAgICBtb2QtPm1kX25hbWUgPSBuYW1lOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisKIFB5T2JqZWN0ICoKIFB5TW9kdWxlX05ld09iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKQEAgLTM1LDE0ICs2NCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtLT5tZF9kZWYgPSBOVUxMOwogICAgIG0tPm1kX3N0YXRlID0gTlVMTDsKKyAgICBtLT5tZF93ZWFrbGlzdCA9IE5VTEw7CisgICAgbS0+bWRfbmFtZSA9IE5VTEw7CiAgICAgbS0+bWRfZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAobS0+bWRfZGljdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX25hbWVfXyIsIG5hbWUpICE9IDApCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fZG9jX18iLCBQeV9Ob25lKSAhPSAwKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX3BhY2thZ2VfXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKG1vZHVsZV9pbml0X2RpY3QobSwgbS0+bWRfZGljdCwgbmFtZSwgTlVMTCkgIT0gMCkKICAgICAgICAgZ290byBmYWlsOwogICAgIFB5T2JqZWN0X0dDX1RyYWNrKG0pOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltOwpAQCAtMzQ3LDkgKzM3Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIG0tPm1kX2RpY3QgPSBkaWN0OwogICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fbmFtZV9fIiwgbmFtZSkgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RvY19fIiwgZG9jKSA8IDApCisgICAgaWYgKG1vZHVsZV9pbml0X2RpY3QobSwgZGljdCwgbmFtZSwgZG9jKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTM1OCwxMiArMzgxLDE1IEBACiBtb2R1bGVfZGVhbGxvYyhQeU1vZHVsZU9iamVjdCAqbSkKIHsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKG0pOworICAgIGlmIChQeV9WZXJib3NlRmxhZyAmJiBtLT5tZF9uYW1lKSB7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyBkZXN0cm95ICVTXG4iLCBtLT5tZF9uYW1lKTsKKyAgICB9CisgICAgaWYgKG0tPm1kX3dlYWtsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIG0pOwogICAgIGlmIChtLT5tZF9kZWYgJiYgbS0+bWRfZGVmLT5tX2ZyZWUpCiAgICAgICAgIG0tPm1kX2RlZi0+bV9mcmVlKG0pOwotICAgIGlmIChtLT5tZF9kaWN0ICE9IE5VTEwpIHsKLSAgICAgICAgX1B5TW9kdWxlX0NsZWFyKChQeU9iamVjdCAqKW0pOwotICAgICAgICBQeV9ERUNSRUYobS0+bWRfZGljdCk7Ci0gICAgfQorICAgIFB5X1hERUNSRUYobS0+bWRfZGljdCk7CisgICAgUHlfWERFQ1JFRihtLT5tZF9uYW1lKTsKICAgICBpZiAobS0+bWRfc3RhdGUgIT0gTlVMTCkKICAgICAgICAgUHlNZW1fRlJFRShtLT5tZF9zdGF0ZSk7CiAgICAgUHlfVFlQRShtKS0+dHBfZnJlZSgoUHlPYmplY3QgKiltKTsKQEAgLTM4MCw3ICs0MDYsNyBAQAogICAgIGlmIChtLT5tZF9kaWN0ICE9IE5VTEwpIHsKICAgICAgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fbG9hZGVyX18iKTsKICAgICB9Ci0gICAgaWYgKGxvYWRlciAhPSBOVUxMKSB7CisgICAgaWYgKGxvYWRlciAhPSBOVUxMICYmIGxvYWRlciAhPSBQeV9Ob25lKSB7CiAgICAgICAgIHJlcHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxvYWRlciwgIm1vZHVsZV9yZXByIiwgIihPKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKW0sIE5VTEwpOwogICAgICAgICBpZiAocmVwciA9PSBOVUxMKSB7CkBAIC00MDQsMTAgKzQzMCwxMCBAQAogICAgIGZpbGVuYW1lID0gUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoKFB5T2JqZWN0ICopbSk7CiAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgLyogVGhlcmUncyBubyBtLl9fZmlsZV9fLCBzbyBpZiB0aGVyZSB3YXMgYW4gX19sb2FkZXJfXywgdXNlIHRoYXQgaW4KKyAgICAgICAgLyogVGhlcmUncyBubyBtLl9fZmlsZV9fLCBzbyBpZiB0aGVyZSB3YXMgYSBfX2xvYWRlcl9fLCB1c2UgdGhhdCBpbgogICAgICAgICAgKiB0aGUgcmVwciwgb3RoZXJ3aXNlLCB0aGUgb25seSB0aGluZyB5b3UgY2FuIHVzZSBpcyBtLl9fbmFtZV9fCiAgICAgICAgICAqLwotICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMIHx8IGxvYWRlciA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJVI+IiwgbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC01MDksNyArNTM1LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKW1vZHVsZV90cmF2ZXJzZSwgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpbW9kdWxlX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoUHlNb2R1bGVPYmplY3QsIG1kX3dlYWtsaXN0KSwgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBtb2R1bGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCmluZGV4IGZmMjc4ZDMuLjhjNTFiMDcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwpAQCAtNDQsNyArNDQsNyBAQAogICAgIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgUHlfc3NpemVfdCBhcmdjb3VudCA9IFB5T2JqZWN0X1NpemUoYXJncyk7CiAgICAgICAgIGlmIChhcmdjb3VudCA8IDApCi0gICAgICAgICAgICByZXR1cm4gYXJnY291bnQ7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVsc2UgaWYgKGFyZ2NvdW50ID4gMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm5vIHBvc2l0aW9uYWwgYXJndW1lbnRzIGV4cGVjdGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC02NiwxNiArNjYsMjAgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotbmFtZXNwYWNlX3JlcHIoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK25hbWVzcGFjZV9yZXByKFB5T2JqZWN0ICpucykKIHsKICAgICBpbnQgaSwgbG9vcF9lcnJvciA9IDA7CiAgICAgUHlPYmplY3QgKnBhaXJzID0gTlVMTCwgKmQgPSBOVUxMLCAqa2V5cyA9IE5VTEwsICprZXlzX2l0ZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICprZXk7CiAgICAgUHlPYmplY3QgKnNlcGFyYXRvciwgKnBhaXJzcmVwciwgKnJlcHIgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKiBuYW1lOwogCi0gICAgaSA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilucyk7CisgICAgbmFtZSA9IChQeV9UWVBFKG5zKSA9PSAmX1B5TmFtZXNwYWNlX1R5cGUpID8gIm5hbWVzcGFjZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBucy0+b2JfdHlwZS0+dHBfbmFtZTsKKworICAgIGkgPSBQeV9SZXByRW50ZXIobnMpOwogICAgIGlmIChpICE9IDApIHsKLSAgICAgICAgcmV0dXJuIGkgPiAwID8gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm5hbWVzcGFjZSguLi4pIikgOiBOVUxMOworICAgICAgICByZXR1cm4gaSA+IDAgPyBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoLi4uKSIsIG5hbWUpIDogTlVMTDsKICAgICB9CiAKICAgICBwYWlycyA9IFB5TGlzdF9OZXcoMCk7CkBAIC0xMjcsOCArMTMxLDcgQEAKICAgICBpZiAocGFpcnNyZXByID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVTKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlPYmplY3QgKilucyktPm9iX3R5cGUtPnRwX25hbWUsIHBhaXJzcmVwcik7CisgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUykiLCBuYW1lLCBwYWlyc3JlcHIpOwogICAgIFB5X0RFQ1JFRihwYWlyc3JlcHIpOwogCiBlcnJvcjoKQEAgLTEzNiw3ICsxMzksNyBAQAogICAgIFB5X1hERUNSRUYoZCk7CiAgICAgUHlfWERFQ1JFRihrZXlzKTsKICAgICBQeV9YREVDUkVGKGtleXNfaXRlcik7Ci0gICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW5zKTsKKyAgICBQeV9SZXByTGVhdmUobnMpOwogCiAgICAgcmV0dXJuIHJlcHI7CiB9CkBAIC0xNTgsMTQgKzE2MSw0OSBAQAogfQogCiAKK3N0YXRpYyBQeU9iamVjdCAqCituYW1lc3BhY2VfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQoreworICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKHNlbGYsIChQeU9iamVjdCAqKSZfUHlOYW1lc3BhY2VfVHlwZSkgJiYKKyAgICAgICAgICAgIFB5T2JqZWN0X0lzSW5zdGFuY2Uob3RoZXIsIChQeU9iamVjdCAqKSZfUHlOYW1lc3BhY2VfVHlwZSkpCisgICAgICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZSgoKF9QeU5hbWVzcGFjZU9iamVjdCAqKXNlbGYpLT5uc19kaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9QeU5hbWVzcGFjZU9iamVjdCAqKW90aGVyKS0+bnNfZGljdCwgb3ApOworICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworfQorCisKK1B5RG9jX1NUUlZBUihuYW1lc3BhY2VfcmVkdWNlX19kb2NfXywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmciKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK25hbWVzcGFjZV9yZWR1Y2UocmVnaXN0ZXIgX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYXJncyA9IFB5VHVwbGVfTmV3KDApOworCisgICAgaWYgKCFhcmdzKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygzLCAoUHlPYmplY3QgKilQeV9UWVBFKG5zKSwgYXJncywgbnMtPm5zX2RpY3QpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBuYW1lc3BhY2VfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbiluYW1lc3BhY2VfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgbmFtZXNwYWNlX3JlZHVjZV9fZG9jX199LAorICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvKiBzZW50aW5lbCAqLworfTsKKworCiBQeURvY19TVFJWQVIobmFtZXNwYWNlX2RvYywKICJBIHNpbXBsZSBhdHRyaWJ1dGUtYmFzZWQgbmFtZXNwYWNlLlxuXAogXG5cCi1uYW1lc3BhY2UoKiprd2FyZ3MpIik7CitTaW1wbGVOYW1lc3BhY2UoKiprd2FyZ3MpIik7CiAKIFB5VHlwZU9iamVjdCBfUHlOYW1lc3BhY2VfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICJuYW1lc3BhY2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJ0eXBlcy5TaW1wbGVOYW1lc3BhY2UiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihfUHlOYW1lc3BhY2VPYmplY3QpLCAgICAgICAgICAgICAgICAgLyogdHBfc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAoZGVzdHJ1Y3RvciluYW1lc3BhY2VfZGVhbGxvYywgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTE4OCwxMSArMjI2LDExIEBACiAgICAgbmFtZXNwYWNlX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKW5hbWVzcGFjZV90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpbmFtZXNwYWNlX2NsZWFyLCAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBuYW1lc3BhY2VfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBuYW1lc3BhY2VfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBuYW1lc3BhY2VfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggOTQ5ZTdkYy4uYzgzMTA5ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0yNTUsNiArMjU1LDcyIEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0lOSVRfVkFSKG9wLCB0cCwgbml0ZW1zKTsKIH0KIAordm9pZAorUHlPYmplY3RfQ2FsbEZpbmFsaXplcihQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKKworICAgIC8qIFRoZSBmb3JtZXIgY291bGQgaGFwcGVuIG9uIGhlYXB0eXBlcyBjcmVhdGVkIGZyb20gdGhlIEMgQVBJLCBlLmcuCisgICAgICAgUHlUeXBlX0Zyb21TcGVjKCkuICovCisgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZSh0cCwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFKSB8fAorICAgICAgICB0cC0+dHBfZmluYWxpemUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIC8qIHRwX2ZpbmFsaXplIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLiAqLworICAgIGlmIChQeVR5cGVfSVNfR0ModHApICYmIF9QeUdDX0ZJTkFMSVpFRChzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdHAtPnRwX2ZpbmFsaXplKHNlbGYpOworICAgIGlmIChQeVR5cGVfSVNfR0ModHApKQorICAgICAgICBfUHlHQ19TRVRfRklOQUxJWkVEKHNlbGYsIDEpOworfQorCitpbnQKK1B5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9zc2l6ZV90IHJlZmNudDsKKworICAgIC8qIFRlbXBvcmFyaWx5IHJlc3VycmVjdCB0aGUgb2JqZWN0LiAqLworICAgIGlmIChzZWxmLT5vYl9yZWZjbnQgIT0gMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MgY2FsbGVkIG9uICIKKyAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHdpdGggYSBub24temVybyByZWZjb3VudCIpOworICAgIH0KKyAgICBzZWxmLT5vYl9yZWZjbnQgPSAxOworCisgICAgUHlPYmplY3RfQ2FsbEZpbmFsaXplcihzZWxmKTsKKworICAgIC8qIFVuZG8gdGhlIHRlbXBvcmFyeSByZXN1cnJlY3Rpb247IGNhbid0IHVzZSBERUNSRUYgaGVyZSwgaXQgd291bGQKKyAgICAgKiBjYXVzZSBhIHJlY3Vyc2l2ZSBjYWxsLgorICAgICAqLworICAgIGFzc2VydChzZWxmLT5vYl9yZWZjbnQgPiAwKTsKKyAgICBpZiAoLS1zZWxmLT5vYl9yZWZjbnQgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgLyogdGhpcyBpcyB0aGUgbm9ybWFsIHBhdGggb3V0ICovCisKKyAgICAvKiB0cF9maW5hbGl6ZSByZXN1cnJlY3RlZCBpdCEgIE1ha2UgaXQgbG9vayBsaWtlIHRoZSBvcmlnaW5hbCBQeV9ERUNSRUYKKyAgICAgKiBuZXZlciBoYXBwZW5lZC4KKyAgICAgKi8KKyAgICByZWZjbnQgPSBzZWxmLT5vYl9yZWZjbnQ7CisgICAgX1B5X05ld1JlZmVyZW5jZShzZWxmKTsKKyAgICBzZWxmLT5vYl9yZWZjbnQgPSByZWZjbnQ7CisKKyAgICBpZiAoUHlUeXBlX0lTX0dDKFB5X1RZUEUoc2VsZikpKSB7CisgICAgICAgIGFzc2VydChfUHlHQ19SRUZTKHNlbGYpICE9IF9QeUdDX1JFRlNfVU5UUkFDS0VEKTsKKyAgICB9CisgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCisgICAgICogd2UgbmVlZCB0byB1bmRvIHRoYXQuICovCisgICAgX1B5X0RFQ19SRUZUT1RBTDsKKyAgICAvKiBJZiBQeV9UUkFDRV9SRUZTLCBfUHlfTmV3UmVmZXJlbmNlIHJlLWFkZGVkIHNlbGYgdG8gdGhlIG9iamVjdAorICAgICAqIGNoYWluLCBzbyBubyBtb3JlIHRvIGRvIHRoZXJlLgorICAgICAqIElmIENPVU5UX0FMTE9DUywgdGhlIG9yaWdpbmFsIGRlY3JlZiBidW1wZWQgdHBfZnJlZXMsIGFuZAorICAgICAqIF9QeV9OZXdSZWZlcmVuY2UgYnVtcGVkIHRwX2FsbG9jczogIGJvdGggb2YgdGhvc2UgbmVlZCB0byBiZQorICAgICAqIHVuZG9uZS4KKyAgICAgKi8KKyNpZmRlZiBDT1VOVF9BTExPQ1MKKyAgICAtLVB5X1RZUEUoc2VsZiktPnRwX2ZyZWVzOworICAgIC0tUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCiBpbnQKIFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICpvcCwgRklMRSAqZnAsIGludCBmbGFncykKIHsKQEAgLTM3Nyw2ICs0NDMsMTQgQEAKICAgICBpZiAoUHlfVFlQRSh2KS0+dHBfcmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBvYmplY3QgYXQgJXA+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUsIHYpOworCisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiBQeU9iamVjdF9SZXByKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb29zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisjZW5kaWYKKwogICAgIHJlcyA9ICgqdi0+b2JfdHlwZS0+dHBfcmVwcikodik7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQwOCw2ICs0ODIsNyBAQAogI2VuZGlmCiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8TlVMTD4iKTsKKwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgewogI2lmbmRlZiBQeV9ERUJVRwogICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHYpIDwgMCkKQEAgLTQxOSw2ICs0OTQsMTMgQEAKICAgICBpZiAoUHlfVFlQRSh2KS0+dHBfc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeU9iamVjdF9SZXByKHYpOwogCisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiBQeU9iamVjdF9TdHIoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKyNlbmRpZgorCiAgICAgLyogSXQgaXMgcG9zc2libGUgZm9yIGEgdHlwZSB0byBoYXZlIGEgdHBfc3RyIHJlcHJlc2VudGF0aW9uIHRoYXQgbG9vcHMKICAgICAgICBpbmZpbml0ZWx5LiAqLwogICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBnZXR0aW5nIHRoZSBzdHIgb2YgYW4gb2JqZWN0IikpCkBAIC00NTEsNiArNTMzLDkgQEAKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkocmVwcikpCisgICAgICAgIHJldHVybiByZXByOworCiAgICAgLyogcmVwciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgUHlVbmljb2RlIG9iamVjdCBieSBQeU9iamVjdF9SZXByICovCiAgICAgYXNjaWkgPSBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcocmVwciwgImJhY2tzbGFzaHJlcGxhY2UiKTsKICAgICBQeV9ERUNSRUYocmVwcik7CkBAIC0xNTI0LDEyICsxNjA5LDIxIEBACiAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCitzdGF0aWMgdm9pZAorbm90aW1wbGVtZW50ZWRfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQoreworICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgorICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgTm90SW1wbGVtZW50ZWQgb3V0IG9mIGV4aXN0ZW5jZS4KKyAgICAgKi8KKyAgICBQeV9GYXRhbEVycm9yKCJkZWFsbG9jYXRpbmcgTm90SW1wbGVtZW50ZWQiKTsKK30KKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeU5vdEltcGxlbWVudGVkX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiTm90SW1wbGVtZW50ZWRUeXBlIiwKICAgICAwLAogICAgIDAsCi0gICAgbm9uZV9kZWFsbG9jLCAgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCisgICAgbm90aW1wbGVtZW50ZWRfZGVhbGxvYywgICAgICAgLyp0cF9kZWFsbG9jKi8gLypuZXZlciBjYWxsZWQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KQEAgLTE2OTksMTUgKzE3OTMsNiBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TWVtYmVyRGVzY3JfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1lbWJlciBkZXNjcmlwdG9yIHR5cGUiKTsKIAotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5RmlsdGVyX1R5cGUpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmaWx0ZXIgdHlwZSIpOwotCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlNYXBfVHlwZSkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1hcCB0eXBlIik7Ci0KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVppcF9UeXBlKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgemlwIHR5cGUiKTsKLQogICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU5hbWVzcGFjZV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbmFtZXNwYWNlIHR5cGUiKTsKIApAQCAtMTg1NiwyNiArMTk0MSw2IEBACiBQeV9zc2l6ZV90ICgqX1B5X2Fic3RyYWN0X2hhY2spKFB5T2JqZWN0ICopID0gUHlPYmplY3RfU2l6ZTsKIAogCi0vKiBQeXRob24ncyBtYWxsb2Mgd3JhcHBlcnMgKHNlZSBweW1lbS5oKSAqLwotCi12b2lkICoKLVB5TWVtX01hbGxvYyhzaXplX3QgbmJ5dGVzKQotewotICAgIHJldHVybiBQeU1lbV9NQUxMT0MobmJ5dGVzKTsKLX0KLQotdm9pZCAqCi1QeU1lbV9SZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCi17Ci0gICAgcmV0dXJuIFB5TWVtX1JFQUxMT0MocCwgbmJ5dGVzKTsKLX0KLQotdm9pZAotUHlNZW1fRnJlZSh2b2lkICpwKQotewotICAgIFB5TWVtX0ZSRUUocCk7Ci19Ci0KIHZvaWQKIF9QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhGSUxFICpvdXQpCiB7CkBAIC0xOTI3LDcgKzE5OTIsOCBAQAogICAgICAgICBpZiAoUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpID09IG9iaikKICAgICAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBQeUxpc3RfQXBwZW5kKGxpc3QsIG9iaik7CisgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgb2JqKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTkzNywxMyArMjAwMywxOCBAQAogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICpsaXN0OwogICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKICAgICBkaWN0ID0gUHlUaHJlYWRTdGF0ZV9HZXREaWN0KCk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnb3RvIGZpbmFsbHk7CisKICAgICBsaXN0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgS0VZKTsKICAgICBpZiAobGlzdCA9PSBOVUxMIHx8ICFQeUxpc3RfQ2hlY2sobGlzdCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ290byBmaW5hbGx5OworCiAgICAgaSA9IFB5TGlzdF9HRVRfU0laRShsaXN0KTsKICAgICAvKiBDb3VudCBiYWNrd2FyZHMgYmVjYXVzZSB3ZSBhbHdheXMgZXhwZWN0IG9iaiB0byBiZSBsaXN0Wy0xXSAqLwogICAgIHdoaWxlICgtLWkgPj0gMCkgewpAQCAtMTk1Miw2ICsyMDIzLDEwIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworZmluYWxseToKKyAgICAvKiBpZ25vcmUgZXhjZXB0aW9ucyBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byByZXBvcnQgdGhlbS4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOwogfQogCiAvKiBUcmFzaGNhbiBzdXBwb3J0LiAqLwpAQCAtMTk3Miw3ICsyMDQ3LDcgQEAKIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0ICpvcCkKIHsKICAgICBhc3NlcnQoUHlPYmplY3RfSVNfR0Mob3ApKTsKLSAgICBhc3NlcnQoX1B5X0FTX0dDKG9wKS0+Z2MuZ2NfcmVmcyA9PSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7CisgICAgYXNzZXJ0KF9QeUdDX1JFRlMob3ApID09IF9QeUdDX1JFRlNfVU5UUkFDS0VEKTsKICAgICBhc3NlcnQob3AtPm9iX3JlZmNudCA9PSAwKTsKICAgICBfUHlfQVNfR0Mob3ApLT5nYy5nY19wcmV2ID0gKFB5R0NfSGVhZCAqKV9QeVRyYXNoX2RlbGV0ZV9sYXRlcjsKICAgICBfUHlUcmFzaF9kZWxldGVfbGF0ZXIgPSBvcDsKQEAgLTE5ODQsNyArMjA1OSw3IEBACiB7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBhc3NlcnQoUHlPYmplY3RfSVNfR0Mob3ApKTsKLSAgICBhc3NlcnQoX1B5X0FTX0dDKG9wKS0+Z2MuZ2NfcmVmcyA9PSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7CisgICAgYXNzZXJ0KF9QeUdDX1JFRlMob3ApID09IF9QeUdDX1JFRlNfVU5UUkFDS0VEKTsKICAgICBhc3NlcnQob3AtPm9iX3JlZmNudCA9PSAwKTsKICAgICBfUHlfQVNfR0Mob3ApLT5nYy5nY19wcmV2ID0gKFB5R0NfSGVhZCAqKSB0c3RhdGUtPnRyYXNoX2RlbGV0ZV9sYXRlcjsKICAgICB0c3RhdGUtPnRyYXNoX2RlbGV0ZV9sYXRlciA9IG9wOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDUwZmM3YzEuLmYxNDYyMjIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTEsMTQgKzEsMzU0IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKKy8qIFB5dGhvbidzIG1hbGxvYyB3cmFwcGVycyAoc2VlIHB5bWVtLmgpICovCisKKyNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworCitzdGF0aWMgdm9pZCBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKK3N0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhjaGFyIGFwaV9pZCwgY29uc3Qgdm9pZCAqcCk7CisjZW5kaWYKKwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKIAotI2lmZGVmIEhBVkVfTU1BUAotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotICNpZmRlZiBNQVBfQU5PTllNT1VTCi0gICNkZWZpbmUgQVJFTkFTX1VTRV9NTUFQCi0gI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworIyAgaW5jbHVkZSA8d2luZG93cy5oPgorI2VsaWYgZGVmaW5lZChIQVZFX01NQVApCisjICBpbmNsdWRlIDxzeXMvbW1hbi5oPgorIyAgaWZkZWYgTUFQX0FOT05ZTU9VUworIyAgICBkZWZpbmUgQVJFTkFTX1VTRV9NTUFQCisjICBlbmRpZgogI2VuZGlmCiAKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK3N0YXRpYyB2b2lkKiBfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQgX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKK3N0YXRpYyB2b2lkKiBfUHlPYmplY3RfUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOworI2VuZGlmCisKKworc3RhdGljIHZvaWQgKgorX1B5TWVtX1Jhd01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQoreworICAgIC8qIFB5TWVtX01hbGxvYygwKSBtZWFucyBtYWxsb2MoMSkuIFNvbWUgc3lzdGVtcyB3b3VsZCByZXR1cm4gTlVMTAorICAgICAgIGZvciBtYWxsb2MoMCksIHdoaWNoIHdvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIFNvbWUgcGxhdGZvcm1zIHdvdWxkCisgICAgICAgcmV0dXJuIGEgcG9pbnRlciB3aXRoIG5vIG1lbW9yeSBiZWhpbmQgaXQsIHdoaWNoIHdvdWxkIGJyZWFrIHB5bWFsbG9jLgorICAgICAgIFRvIHNvbHZlIHRoZXNlIHByb2JsZW1zLCBhbGxvY2F0ZSBhbiBleHRyYSBieXRlLiAqLworICAgIGlmIChzaXplID09IDApCisgICAgICAgIHNpemUgPSAxOworICAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9SYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICBzaXplID0gMTsKKyAgICByZXR1cm4gcmVhbGxvYyhwdHIsIHNpemUpOworfQorCitzdGF0aWMgdm9pZAorX1B5TWVtX1Jhd0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCit7CisgICAgZnJlZShwdHIpOworfQorCisKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgdm9pZCAqCitfUHlPYmplY3RfQXJlbmFWaXJ0dWFsQWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gVmlydHVhbEFsbG9jKE5VTEwsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIFBBR0VfUkVBRFdSSVRFKTsKK30KKworc3RhdGljIHZvaWQKK19QeU9iamVjdF9BcmVuYVZpcnR1YWxGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBWaXJ0dWFsRnJlZShwdHIsIDAsIE1FTV9SRUxFQVNFKTsKK30KKworI2VsaWYgZGVmaW5lZChBUkVOQVNfVVNFX01NQVApCitzdGF0aWMgdm9pZCAqCitfUHlPYmplY3RfQXJlbmFNbWFwKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCit7CisgICAgdm9pZCAqcHRyOworICAgIHB0ciA9IG1tYXAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCk7CisgICAgaWYgKHB0ciA9PSBNQVBfRkFJTEVEKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQocHRyICE9IE5VTEwpOworICAgIHJldHVybiBwdHI7Cit9CisKK3N0YXRpYyB2b2lkCitfUHlPYmplY3RfQXJlbmFNdW5tYXAodm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKQoreworICAgIG11bm1hcChwdHIsIHNpemUpOworfQorCisjZWxzZQorc3RhdGljIHZvaWQgKgorX1B5T2JqZWN0X0FyZW5hTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIG1hbGxvYyhzaXplKTsKK30KKworc3RhdGljIHZvaWQKK19QeU9iamVjdF9BcmVuYUZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKQoreworICAgIGZyZWUocHRyKTsKK30KKyNlbmRpZgorCisKKyNkZWZpbmUgUFlSQVdfRlVOQ1MgX1B5TWVtX1Jhd01hbGxvYywgX1B5TWVtX1Jhd1JlYWxsb2MsIF9QeU1lbV9SYXdGcmVlCisjaWZkZWYgV0lUSF9QWU1BTExPQworI2RlZmluZSBQWU9CSkVDVF9GVU5DUyBfUHlPYmplY3RfTWFsbG9jLCBfUHlPYmplY3RfUmVhbGxvYywgX1B5T2JqZWN0X0ZyZWUKKyNlbHNlCisjZGVmaW5lIFBZT0JKRUNUX0ZVTkNTIFBZUkFXX0ZVTkNTCisjZW5kaWYKKworI2lmZGVmIFBZTUFMTE9DX0RFQlVHCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogV2UgdGFnIGVhY2ggYmxvY2sgd2l0aCBhbiBBUEkgSUQgaW4gb3JkZXIgdG8gdGFnIEFQSSB2aW9sYXRpb25zICovCisgICAgY2hhciBhcGlfaWQ7CisgICAgUHlNZW1BbGxvY2F0b3IgYWxsb2M7Cit9IGRlYnVnX2FsbG9jX2FwaV90Oworc3RhdGljIHN0cnVjdCB7CisgICAgZGVidWdfYWxsb2NfYXBpX3QgcmF3OworICAgIGRlYnVnX2FsbG9jX2FwaV90IG1lbTsKKyAgICBkZWJ1Z19hbGxvY19hcGlfdCBvYmo7Cit9IF9QeU1lbV9EZWJ1ZyA9IHsKKyAgICB7J3InLCB7TlVMTCwgUFlSQVdfRlVOQ1N9fSwKKyAgICB7J20nLCB7TlVMTCwgUFlSQVdfRlVOQ1N9fSwKKyAgICB7J28nLCB7TlVMTCwgUFlPQkpFQ1RfRlVOQ1N9fQorICAgIH07CisKKyNkZWZpbmUgUFlERUJVR19GVU5DUyBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKKyNlbmRpZgorCitzdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5TWVtX1JhdyA9IHsKKyNpZmRlZiBQWU1BTExPQ19ERUJVRworICAgICZfUHlNZW1fRGVidWcucmF3LCBQWURFQlVHX0ZVTkNTCisjZWxzZQorICAgIE5VTEwsIFBZUkFXX0ZVTkNTCisjZW5kaWYKKyAgICB9OworCitzdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5TWVtID0geworI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREVCVUdfRlVOQ1MKKyNlbHNlCisgICAgTlVMTCwgUFlSQVdfRlVOQ1MKKyNlbmRpZgorICAgIH07CisKK3N0YXRpYyBQeU1lbUFsbG9jYXRvciBfUHlPYmplY3QgPSB7CisjaWZkZWYgUFlNQUxMT0NfREVCVUcKKyAgICAmX1B5TWVtX0RlYnVnLm9iaiwgUFlERUJVR19GVU5DUworI2Vsc2UKKyAgICBOVUxMLCBQWU9CSkVDVF9GVU5DUworI2VuZGlmCisgICAgfTsKKworI3VuZGVmIFBZUkFXX0ZVTkNTCisjdW5kZWYgUFlPQkpFQ1RfRlVOQ1MKKyN1bmRlZiBQWURFQlVHX0ZVTkNTCisKK3N0YXRpYyBQeU9iamVjdEFyZW5hQWxsb2NhdG9yIF9QeU9iamVjdF9BcmVuYSA9IHtOVUxMLAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBfUHlPYmplY3RfQXJlbmFWaXJ0dWFsQWxsb2MsIF9QeU9iamVjdF9BcmVuYVZpcnR1YWxGcmVlCisjZWxpZiBkZWZpbmVkKEFSRU5BU19VU0VfTU1BUCkKKyAgICBfUHlPYmplY3RfQXJlbmFNbWFwLCBfUHlPYmplY3RfQXJlbmFNdW5tYXAKKyNlbHNlCisgICAgX1B5T2JqZWN0X0FyZW5hTWFsbG9jLCBfUHlPYmplY3RfQXJlbmFGcmVlCisjZW5kaWYKKyAgICB9OworCit2b2lkCitQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKK3sKKyNpZmRlZiBQWU1BTExPQ19ERUJVRworICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworCisgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOworICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSZWFsbG9jOworICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdGcmVlOworCisgICAgaWYgKF9QeU1lbV9SYXcubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z01hbGxvYykgeworICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLnJhdzsKKyAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZfUHlNZW1fRGVidWcucmF3LmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7CisgICAgfQorCisgICAgaWYgKF9QeU1lbS5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnTWFsbG9jKSB7CisgICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcubWVtOworICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJl9QeU1lbV9EZWJ1Zy5tZW0uYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJmFsbG9jKTsKKyAgICB9CisKKyAgICBpZiAoX1B5T2JqZWN0Lm1hbGxvYyAhPSBfUHlNZW1fRGVidWdNYWxsb2MpIHsKKyAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5vYmo7CisgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmX1B5TWVtX0RlYnVnLm9iai5hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2MpOworICAgIH0KKyNlbmRpZgorfQorCit2b2lkCitQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKQoreworICAgIHN3aXRjaChkb21haW4pCisgICAgeworICAgIGNhc2UgUFlNRU1fRE9NQUlOX1JBVzogKmFsbG9jYXRvciA9IF9QeU1lbV9SYXc7IGJyZWFrOworICAgIGNhc2UgUFlNRU1fRE9NQUlOX01FTTogKmFsbG9jYXRvciA9IF9QeU1lbTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiAqYWxsb2NhdG9yID0gX1B5T2JqZWN0OyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duIGRvbWFpbiAqLworICAgICAgICBhbGxvY2F0b3ItPmN0eCA9IE5VTEw7CisgICAgICAgIGFsbG9jYXRvci0+bWFsbG9jID0gTlVMTDsKKyAgICAgICAgYWxsb2NhdG9yLT5yZWFsbG9jID0gTlVMTDsKKyAgICAgICAgYWxsb2NhdG9yLT5mcmVlID0gTlVMTDsKKyAgICB9Cit9CisKK3ZvaWQKK1B5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCit7CisgICAgc3dpdGNoKGRvbWFpbikKKyAgICB7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fUkFXOiBfUHlNZW1fUmF3ID0gKmFsbG9jYXRvcjsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fTUVNOiBfUHlNZW0gPSAqYWxsb2NhdG9yOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9PQko6IF9QeU9iamVjdCA9ICphbGxvY2F0b3I7IGJyZWFrOworICAgIC8qIGlnbm9yZSB1bmtub3duIGRvbWFpbiAqLworICAgIH0KKworfQorCit2b2lkCitQeU9iamVjdF9HZXRBcmVuYUFsbG9jYXRvcihQeU9iamVjdEFyZW5hQWxsb2NhdG9yICphbGxvY2F0b3IpCit7CisgICAgKmFsbG9jYXRvciA9IF9QeU9iamVjdF9BcmVuYTsKK30KKwordm9pZAorUHlPYmplY3RfU2V0QXJlbmFBbGxvY2F0b3IoUHlPYmplY3RBcmVuYUFsbG9jYXRvciAqYWxsb2NhdG9yKQoreworICAgIF9QeU9iamVjdF9BcmVuYSA9ICphbGxvY2F0b3I7Cit9CisKK3ZvaWQgKgorUHlNZW1fUmF3TWFsbG9jKHNpemVfdCBzaXplKQoreworICAgIC8qCisgICAgICogTGltaXQgb3Vyc2VsdmVzIHRvIFBZX1NTSVpFX1RfTUFYIGJ5dGVzIHRvIHByZXZlbnQgc2VjdXJpdHkgaG9sZXMuCisgICAgICogTW9zdCBweXRob24gaW50ZXJuYWxzIGJsaW5kbHkgdXNlIGEgc2lnbmVkIFB5X3NzaXplX3QgdG8gdHJhY2sKKyAgICAgKiB0aGluZ3Mgd2l0aG91dCBjaGVja2luZyBmb3Igb3ZlcmZsb3dzIG9yIG5lZ2F0aXZlcy4KKyAgICAgKiBBcyBzaXplX3QgaXMgdW5zaWduZWQsIGNoZWNraW5nIGZvciBzaXplIDwgMCBpcyBub3QgcmVxdWlyZWQuCisgICAgICovCisgICAgaWYgKHNpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBfUHlNZW1fUmF3Lm1hbGxvYyhfUHlNZW1fUmF3LmN0eCwgc2l6ZSk7Cit9CisKK3ZvaWQqCitQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQoreworICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLworICAgIGlmIChuZXdfc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVgpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlNZW1fUmF3LnJlYWxsb2MoX1B5TWVtX1Jhdy5jdHgsIHB0ciwgbmV3X3NpemUpOworfQorCit2b2lkIFB5TWVtX1Jhd0ZyZWUodm9pZCAqcHRyKQoreworICAgIF9QeU1lbV9SYXcuZnJlZShfUHlNZW1fUmF3LmN0eCwgcHRyKTsKK30KKwordm9pZCAqCitQeU1lbV9NYWxsb2Moc2l6ZV90IHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKHNpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TWVtLm1hbGxvYyhfUHlNZW0uY3R4LCBzaXplKTsKK30KKwordm9pZCAqCitQeU1lbV9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQoreworICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLworICAgIGlmIChuZXdfc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVgpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlNZW0ucmVhbGxvYyhfUHlNZW0uY3R4LCBwdHIsIG5ld19zaXplKTsKK30KKwordm9pZAorUHlNZW1fRnJlZSh2b2lkICpwdHIpCit7CisgICAgX1B5TWVtLmZyZWUoX1B5TWVtLmN0eCwgcHRyKTsKK30KKworY2hhciAqCitfUHlNZW1fUmF3U3RyZHVwKGNvbnN0IGNoYXIgKnN0cikKK3sKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpjb3B5OworCisgICAgc2l6ZSA9IHN0cmxlbihzdHIpICsgMTsKKyAgICBjb3B5ID0gUHlNZW1fUmF3TWFsbG9jKHNpemUpOworICAgIGlmIChjb3B5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbWNweShjb3B5LCBzdHIsIHNpemUpOworICAgIHJldHVybiBjb3B5OworfQorCitjaGFyICoKK19QeU1lbV9TdHJkdXAoY29uc3QgY2hhciAqc3RyKQoreworICAgIHNpemVfdCBzaXplOworICAgIGNoYXIgKmNvcHk7CisKKyAgICBzaXplID0gc3RybGVuKHN0cikgKyAxOworICAgIGNvcHkgPSBQeU1lbV9NYWxsb2Moc2l6ZSk7CisgICAgaWYgKGNvcHkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtY3B5KGNvcHksIHN0ciwgc2l6ZSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK3ZvaWQgKgorUHlPYmplY3RfTWFsbG9jKHNpemVfdCBzaXplKQoreworICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLworICAgIGlmIChzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU9iamVjdC5tYWxsb2MoX1B5T2JqZWN0LmN0eCwgc2l6ZSk7Cit9CisKK3ZvaWQgKgorUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKK3sKKyAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KKyAgICBpZiAobmV3X3NpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5T2JqZWN0LnJlYWxsb2MoX1B5T2JqZWN0LmN0eCwgcHRyLCBuZXdfc2l6ZSk7Cit9CisKK3ZvaWQKK1B5T2JqZWN0X0ZyZWUodm9pZCAqcHRyKQoreworICAgIF9QeU9iamVjdC5mcmVlKF9QeU9iamVjdC5jdHgsIHB0cik7Cit9CisKKworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKwogI2lmZGVmIFdJVEhfVkFMR1JJTkQKICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgogCkBAIC01MjUsNiArODY1LDE1IEBACiAvKiBIaWdoIHdhdGVyIG1hcmsgKG1heCB2YWx1ZSBldmVyIHNlZW4pIGZvciBuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQuICovCiBzdGF0aWMgc2l6ZV90IG5hcmVuYXNfaGlnaHdhdGVyID0gMDsKIAorc3RhdGljIFB5X3NzaXplX3QgX1B5X0FsbG9jYXRlZEJsb2NrcyA9IDA7CisKK1B5X3NzaXplX3QKK19QeV9HZXRBbGxvY2F0ZWRCbG9ja3Modm9pZCkKK3sKKyAgICByZXR1cm4gX1B5X0FsbG9jYXRlZEJsb2NrczsKK30KKworCiAvKiBBbGxvY2F0ZSBhIG5ldyBhcmVuYS4gIElmIHdlIHJ1biBvdXQgb2YgbWVtb3J5LCByZXR1cm4gTlVMTC4gIEVsc2UKICAqIGFsbG9jYXRlIGEgbmV3IGFyZW5hLCBhbmQgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIGFuIGFyZW5hX29iamVjdAogICogZGVzY3JpYmluZyB0aGUgbmV3IGFyZW5hLiAgSXQncyBleHBlY3RlZCB0aGF0IHRoZSBjYWxsZXIgd2lsbCBzZXQKQEAgLTUzNiw3ICs4ODUsNiBAQAogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCiAgICAgdm9pZCAqYWRkcmVzczsKLSAgICBpbnQgZXJyOwogCiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQpAQCAtNTU4LDcgKzkwNiw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogb3ZlcmZsb3cgKi8KICNlbmRpZgogICAgICAgICBuYnl0ZXMgPSBudW1hcmVuYXMgKiBzaXplb2YoKmFyZW5hcyk7Ci0gICAgICAgIGFyZW5hb2JqID0gKHN0cnVjdCBhcmVuYV9vYmplY3QgKilyZWFsbG9jKGFyZW5hcywgbmJ5dGVzKTsKKyAgICAgICAgYXJlbmFvYmogPSAoc3RydWN0IGFyZW5hX29iamVjdCAqKVB5TWVtX1JlYWxsb2MoYXJlbmFzLCBuYnl0ZXMpOwogICAgICAgICBpZiAoYXJlbmFvYmogPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhcmVuYXMgPSBhcmVuYW9iajsKQEAgLTU4OSwxNSArOTM3LDggQEAKICAgICBhcmVuYW9iaiA9IHVudXNlZF9hcmVuYV9vYmplY3RzOwogICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYXJlbmFvYmotPm5leHRhcmVuYTsKICAgICBhc3NlcnQoYXJlbmFvYmotPmFkZHJlc3MgPT0gMCk7Ci0jaWZkZWYgQVJFTkFTX1VTRV9NTUFQCi0gICAgYWRkcmVzcyA9IG1tYXAoTlVMTCwgQVJFTkFfU0laRSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKLSAgICBlcnIgPSAoYWRkcmVzcyA9PSBNQVBfRkFJTEVEKTsKLSNlbHNlCi0gICAgYWRkcmVzcyA9IG1hbGxvYyhBUkVOQV9TSVpFKTsKLSAgICBlcnIgPSAoYWRkcmVzcyA9PSAwKTsKLSNlbmRpZgotICAgIGlmIChlcnIpIHsKKyAgICBhZGRyZXNzID0gX1B5T2JqZWN0X0FyZW5hLmFsbG9jKF9QeU9iamVjdF9BcmVuYS5jdHgsIEFSRU5BX1NJWkUpOworICAgIGlmIChhZGRyZXNzID09IE5VTEwpIHsKICAgICAgICAgLyogVGhlIGFsbG9jYXRpb24gZmFpbGVkOiByZXR1cm4gTlVMTCBhZnRlciBwdXR0aW5nIHRoZQogICAgICAgICAgKiBhcmVuYW9iaiBiYWNrLgogICAgICAgICAgKi8KQEAgLTc2MCwxNSArMTEwMSwxNiBAQAogICogVW5sZXNzIHRoZSBvcHRpbWl6ZXIgcmVvcmRlcnMgZXZlcnl0aGluZywgYmVpbmcgdG9vIHNtYXJ0Li4uCiAgKi8KIAotI3VuZGVmIFB5T2JqZWN0X01hbGxvYwotdm9pZCAqCi1QeU9iamVjdF9NYWxsb2Moc2l6ZV90IG5ieXRlcykKK3N0YXRpYyB2b2lkICoKK19QeU9iamVjdF9NYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQogewogICAgIGJsb2NrICpicDsKICAgICBwb29scCBwb29sOwogICAgIHBvb2xwIG5leHQ7CiAgICAgdWludCBzaXplOwogCisgICAgX1B5X0FsbG9jYXRlZEJsb2NrcysrOworCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIGlmIChVTkxJS0VMWShydW5uaW5nX29uX3ZhbGdyaW5kID09IC0xKSkKICAgICAgICAgcnVubmluZ19vbl92YWxncmluZCA9IFJVTk5JTkdfT05fVkFMR1JJTkQ7CkBAIC03NzcsMTUgKzExMTksNiBAQAogI2VuZGlmCiAKICAgICAvKgotICAgICAqIExpbWl0IG91cnNlbHZlcyB0byBQWV9TU0laRV9UX01BWCBieXRlcyB0byBwcmV2ZW50IHNlY3VyaXR5IGhvbGVzLgotICAgICAqIE1vc3QgcHl0aG9uIGludGVybmFscyBibGluZGx5IHVzZSBhIHNpZ25lZCBQeV9zc2l6ZV90IHRvIHRyYWNrCi0gICAgICogdGhpbmdzIHdpdGhvdXQgY2hlY2tpbmcgZm9yIG92ZXJmbG93cyBvciBuZWdhdGl2ZXMuCi0gICAgICogQXMgc2l6ZV90IGlzIHVuc2lnbmVkLCBjaGVja2luZyBmb3IgbmJ5dGVzIDwgMCBpcyBub3QgcmVxdWlyZWQuCi0gICAgICovCi0gICAgaWYgKG5ieXRlcyA+IFBZX1NTSVpFX1RfTUFYKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qCiAgICAgICogVGhpcyBpbXBsaWNpdGx5IHJlZGlyZWN0cyBtYWxsb2MoMCkuCiAgICAgICovCiAgICAgaWYgKChuYnl0ZXMgLSAxKSA8IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEKSB7CkBAIC05MDEsNiArMTIzNCw3IEBACiAgICAgICAgICAgICAgICAgICogYW5kIGZyZWUgbGlzdCBhcmUgYWxyZWFkeSBpbml0aWFsaXplZC4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBicCA9IHBvb2wtPmZyZWVibG9jazsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYnAgIT0gTlVMTCk7CiAgICAgICAgICAgICAgICAgcG9vbC0+ZnJlZWJsb2NrID0gKihibG9jayAqKilicDsKICAgICAgICAgICAgICAgICBVTkxPQ0soKTsKICAgICAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKQEAgLTk1NiwxNiArMTI5MCwxOCBAQAogICAgICAqIGxhc3QgY2hhbmNlIHRvIHNlcnZlIHRoZSByZXF1ZXN0KSBvciB3aGVuIHRoZSBtYXggbWVtb3J5IGxpbWl0CiAgICAgICogaGFzIGJlZW4gcmVhY2hlZC4KICAgICAgKi8KLSAgICBpZiAobmJ5dGVzID09IDApCi0gICAgICAgIG5ieXRlcyA9IDE7Ci0gICAgcmV0dXJuICh2b2lkICopbWFsbG9jKG5ieXRlcyk7CisgICAgeworICAgICAgICB2b2lkICpyZXN1bHQgPSBQeU1lbV9NYWxsb2MobmJ5dGVzKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzLS07CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogfQogCiAvKiBmcmVlICovCiAKLSN1bmRlZiBQeU9iamVjdF9GcmVlCi12b2lkCi1QeU9iamVjdF9GcmVlKHZvaWQgKnApCitzdGF0aWMgdm9pZAorX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQogewogICAgIHBvb2xwIHBvb2w7CiAgICAgYmxvY2sgKmxhc3RmcmVlOwpAQCAtOTc4LDYgKzEzMTQsOCBAQAogICAgIGlmIChwID09IE5VTEwpICAgICAgLyogZnJlZShOVUxMKSBoYXMgbm8gZWZmZWN0ICovCiAgICAgICAgIHJldHVybjsKIAorICAgIF9QeV9BbGxvY2F0ZWRCbG9ja3MtLTsKKwogI2lmZGVmIFdJVEhfVkFMR1JJTkQKICAgICBpZiAoVU5MSUtFTFkocnVubmluZ19vbl92YWxncmluZCA+IDApKQogICAgICAgICBnb3RvIHJlZGlyZWN0OwpAQCAtMTA3MiwxMSArMTQxMCw4IEBACiAgICAgICAgICAgICAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhbzsKIAogICAgICAgICAgICAgICAgIC8qIEZyZWUgdGhlIGVudGlyZSBhcmVuYS4gKi8KLSNpZmRlZiBBUkVOQVNfVVNFX01NQVAKLSAgICAgICAgICAgICAgICBtdW5tYXAoKHZvaWQgKilhby0+YWRkcmVzcywgQVJFTkFfU0laRSk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGZyZWUoKHZvaWQgKilhby0+YWRkcmVzcyk7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBfUHlPYmplY3RfQXJlbmEuZnJlZShfUHlPYmplY3RfQXJlbmEuY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW8tPmFkZHJlc3MsIEFSRU5BX1NJWkUpOwogICAgICAgICAgICAgICAgIGFvLT5hZGRyZXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXJrIHVuYXNzb2NpYXRlZCAqLwogICAgICAgICAgICAgICAgIC0tbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwogCkBAIC0xMTg1LDcgKzE1MjAsNyBAQAogcmVkaXJlY3Q6CiAjZW5kaWYKICAgICAvKiBXZSBkaWRuJ3QgYWxsb2NhdGUgdGhpcyBhZGRyZXNzLiAqLwotICAgIGZyZWUocCk7CisgICAgUHlNZW1fRnJlZShwKTsKIH0KIAogLyogcmVhbGxvYy4gIElmIHAgaXMgTlVMTCwgdGhpcyBhY3RzIGxpa2UgbWFsbG9jKG5ieXRlcykuICBFbHNlIGlmIG5ieXRlcz09MCwKQEAgLTExOTMsOSArMTUyOCw4IEBACiAgKiByZXR1cm4gYSBub24tTlVMTCByZXN1bHQuCiAgKi8KIAotI3VuZGVmIFB5T2JqZWN0X1JlYWxsb2MKLXZvaWQgKgotUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQorc3RhdGljIHZvaWQgKgorX1B5T2JqZWN0X1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQogewogICAgIHZvaWQgKmJwOwogICAgIHBvb2xwIHBvb2w7CkBAIC0xMjA1LDE2ICsxNTM5LDcgQEAKICNlbmRpZgogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X01hbGxvYyhuYnl0ZXMpOwotCi0gICAgLyoKLSAgICAgKiBMaW1pdCBvdXJzZWx2ZXMgdG8gUFlfU1NJWkVfVF9NQVggYnl0ZXMgdG8gcHJldmVudCBzZWN1cml0eSBob2xlcy4KLSAgICAgKiBNb3N0IHB5dGhvbiBpbnRlcm5hbHMgYmxpbmRseSB1c2UgYSBzaWduZWQgUHlfc3NpemVfdCB0byB0cmFjawotICAgICAqIHRoaW5ncyB3aXRob3V0IGNoZWNraW5nIGZvciBvdmVyZmxvd3Mgb3IgbmVnYXRpdmVzLgotICAgICAqIEFzIHNpemVfdCBpcyB1bnNpZ25lZCwgY2hlY2tpbmcgZm9yIG5ieXRlcyA8IDAgaXMgbm90IHJlcXVpcmVkLgotICAgICAqLwotICAgIGlmIChuYnl0ZXMgPiBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfTWFsbG9jKGN0eCwgbmJ5dGVzKTsKIAogI2lmZGVmIFdJVEhfVkFMR1JJTkQKICAgICAvKiBUcmVhdCBydW5uaW5nX29uX3ZhbGdyaW5kID09IC0xIHRoZSBzYW1lIGFzIDAgKi8KQEAgLTEyNDIsMTAgKzE1NjcsMTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXM7CiAgICAgICAgIH0KLSAgICAgICAgYnAgPSBQeU9iamVjdF9NYWxsb2MobmJ5dGVzKTsKKyAgICAgICAgYnAgPSBfUHlPYmplY3RfTWFsbG9jKGN0eCwgbmJ5dGVzKTsKICAgICAgICAgaWYgKGJwICE9IE5VTEwpIHsKICAgICAgICAgICAgIG1lbWNweShicCwgcCwgc2l6ZSk7Ci0gICAgICAgICAgICBQeU9iamVjdF9GcmVlKHApOworICAgICAgICAgICAgX1B5T2JqZWN0X0ZyZWUoY3R4LCBwKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYnA7CiAgICAgfQpAQCAtMTI2MywxNCArMTU4OCwxNCBAQAogICAgICAqIGF0IHAuICBJbnN0ZWFkIHdlIHB1bnQ6ICBsZXQgQyBjb250aW51ZSB0byBtYW5hZ2UgdGhpcyBibG9jay4KICAgICAgKi8KICAgICBpZiAobmJ5dGVzKQotICAgICAgICByZXR1cm4gcmVhbGxvYyhwLCBuYnl0ZXMpOworICAgICAgICByZXR1cm4gUHlNZW1fUmVhbGxvYyhwLCBuYnl0ZXMpOwogICAgIC8qIEMgZG9lc24ndCBkZWZpbmUgdGhlIHJlc3VsdCBvZiByZWFsbG9jKHAsIDApIChpdCBtYXkgb3IgbWF5IG5vdAogICAgICAqIHJldHVybiBOVUxMIHRoZW4pLCBidXQgUHl0aG9uJ3MgZG9jcyBwcm9taXNlIHRoYXQgbmJ5dGVzPT0wIG5ldmVyCiAgICAgICogcmV0dXJucyBOVUxMLiAgV2UgZG9uJ3QgcGFzcyAwIHRvIHJlYWxsb2MoKSwgdG8gYXZvaWQgdGhhdCBlbmRjYXNlCiAgICAgICogdG8gYmVnaW4gd2l0aC4gIEV2ZW4gdGhlbiwgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHJlYWxsb2MoKSB3b24ndAogICAgICAqIHJldHVybiBOVUxMLgogICAgICAqLwotICAgIGJwID0gcmVhbGxvYyhwLCAxKTsKKyAgICBicCA9IFB5TWVtX1JlYWxsb2MocCwgMSk7CiAgICAgcmV0dXJuIGJwID8gYnAgOiBwOwogfQogCkBAIC0xMjgwLDIzICsxNjA1LDEyIEBACiAvKiBweW1hbGxvYyBub3QgZW5hYmxlZDogIFJlZGlyZWN0IHRoZSBlbnRyeSBwb2ludHMgdG8gbWFsbG9jLiAgVGhlc2Ugd2lsbAogICogb25seSBiZSB1c2VkIGJ5IGV4dGVuc2lvbnMgdGhhdCBhcmUgY29tcGlsZWQgd2l0aCBweW1hbGxvYyBlbmFibGVkLiAqLwogCi12b2lkICoKLVB5T2JqZWN0X01hbGxvYyhzaXplX3QgbikKK1B5X3NzaXplX3QKK19QeV9HZXRBbGxvY2F0ZWRCbG9ja3Modm9pZCkKIHsKLSAgICByZXR1cm4gUHlNZW1fTUFMTE9DKG4pOworICAgIHJldHVybiAwOwogfQogCi12b2lkICoKLVB5T2JqZWN0X1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCi17Ci0gICAgcmV0dXJuIFB5TWVtX1JFQUxMT0MocCwgbik7Ci19Ci0KLXZvaWQKLVB5T2JqZWN0X0ZyZWUodm9pZCAqcCkKLXsKLSAgICBQeU1lbV9GUkVFKHApOwotfQogI2VuZGlmIC8qIFdJVEhfUFlNQUxMT0MgKi8KIAogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCkBAIC0xMzE2LDEwICsxNjMwLDYgQEAKICNkZWZpbmUgREVBREJZVEUgICAgICAgMHhEQiAgICAvKiBkZWFkIChuZXdseSBmcmVlZCkgbWVtb3J5ICovCiAjZGVmaW5lIEZPUkJJRERFTkJZVEUgIDB4RkIgICAgLyogdW50b3VjaGFibGUgYnl0ZXMgYXQgZWFjaCBlbmQgb2YgYSBibG9jayAqLwogCi0vKiBXZSB0YWcgZWFjaCBibG9jayB3aXRoIGFuIEFQSSBJRCBpbiBvcmRlciB0byB0YWcgQVBJIHZpb2xhdGlvbnMgKi8KLSNkZWZpbmUgX1BZTUFMTE9DX01FTV9JRCAnbScgICAvKiB0aGUgUHlNZW1fTWFsbG9jKCkgQVBJICovCi0jZGVmaW5lIF9QWU1BTExPQ19PQkpfSUQgJ28nICAgLyogVGhlIFB5T2JqZWN0X01hbGxvYygpIEFQSSAqLwotCiBzdGF0aWMgc2l6ZV90IHNlcmlhbG5vID0gMDsgICAgIC8qIGluY3JlbWVudGVkIG9uIGVhY2ggZGVidWcge20scmV9YWxsb2MgKi8KIAogLyogc2VyaWFsbm8gaXMgYWx3YXlzIGluY3JlbWVudGVkIHZpYSBjYWxsaW5nIHRoaXMgcm91dGluZS4gIFRoZSBwb2ludCBpcwpAQCAtMTQwMiw1OCArMTcxMiwxOCBAQAogcFsyKlMrbjogMipTK24rU10KICAgICBDb3BpZXMgb2YgRk9SQklEREVOQllURS4gIFVzZWQgdG8gY2F0Y2ggb3Zlci0gd3JpdGVzIGFuZCByZWFkcy4KIHBbMipTK24rUzogMipTK24rMipTXQotICAgIEEgc2VyaWFsIG51bWJlciwgaW5jcmVtZW50ZWQgYnkgMSBvbiBlYWNoIGNhbGwgdG8gX1B5T2JqZWN0X0RlYnVnTWFsbG9jCi0gICAgYW5kIF9QeU9iamVjdF9EZWJ1Z1JlYWxsb2MuCisgICAgQSBzZXJpYWwgbnVtYmVyLCBpbmNyZW1lbnRlZCBieSAxIG9uIGVhY2ggY2FsbCB0byBfUHlNZW1fRGVidWdNYWxsb2MKKyAgICBhbmQgX1B5TWVtX0RlYnVnUmVhbGxvYy4KICAgICBUaGlzIGlzIGEgYmlnLWVuZGlhbiBzaXplX3QuCiAgICAgSWYgImJhZCBtZW1vcnkiIGlzIGRldGVjdGVkIGxhdGVyLCB0aGUgc2VyaWFsIG51bWJlciBnaXZlcyBhbgogICAgIGV4Y2VsbGVudCB3YXkgdG8gc2V0IGEgYnJlYWtwb2ludCBvbiB0aGUgbmV4dCBydW4sIHRvIGNhcHR1cmUgdGhlCiAgICAgaW5zdGFudCBhdCB3aGljaCB0aGlzIGJsb2NrIHdhcyBwYXNzZWQgb3V0LgogKi8KIAotLyogZGVidWcgcmVwbGFjZW1lbnRzIGZvciB0aGUgUHlNZW1fKiBtZW1vcnkgQVBJICovCi12b2lkICoKLV9QeU1lbV9EZWJ1Z01hbGxvYyhzaXplX3QgbmJ5dGVzKQorc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKIHsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKF9QWU1BTExPQ19NRU1fSUQsIG5ieXRlcyk7Ci19Ci12b2lkICoKLV9QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKLXsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0RlYnVnUmVhbGxvY0FwaShfUFlNQUxMT0NfTUVNX0lELCBwLCBuYnl0ZXMpOwotfQotdm9pZAotX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpwKQotewotICAgIF9QeU9iamVjdF9EZWJ1Z0ZyZWVBcGkoX1BZTUFMTE9DX01FTV9JRCwgcCk7Ci19Ci0KLS8qIGRlYnVnIHJlcGxhY2VtZW50cyBmb3IgdGhlIFB5T2JqZWN0XyogbWVtb3J5IEFQSSAqLwotdm9pZCAqCi1fUHlPYmplY3RfRGVidWdNYWxsb2Moc2l6ZV90IG5ieXRlcykKLXsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKF9QWU1BTExPQ19PQkpfSUQsIG5ieXRlcyk7Ci19Ci12b2lkICoKLV9QeU9iamVjdF9EZWJ1Z1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKLXsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0RlYnVnUmVhbGxvY0FwaShfUFlNQUxMT0NfT0JKX0lELCBwLCBuYnl0ZXMpOwotfQotdm9pZAotX1B5T2JqZWN0X0RlYnVnRnJlZSh2b2lkICpwKQotewotICAgIF9QeU9iamVjdF9EZWJ1Z0ZyZWVBcGkoX1BZTUFMTE9DX09CSl9JRCwgcCk7Ci19Ci12b2lkCi1fUHlPYmplY3RfRGVidWdDaGVja0FkZHJlc3MoY29uc3Qgdm9pZCAqcCkKLXsKLSAgICBfUHlPYmplY3RfRGVidWdDaGVja0FkZHJlc3NBcGkoX1BZTUFMTE9DX09CSl9JRCwgcCk7Ci19Ci0KLQotLyogZ2VuZXJpYyBkZWJ1ZyBtZW1vcnkgYXBpLCB3aXRoIGFuICJpZCIgdG8gaWRlbnRpZnkgdGhlIEFQSSBpbiB1c2UgKi8KLXZvaWQgKgotX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKGNoYXIgaWQsIHNpemVfdCBuYnl0ZXMpCi17CisgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKICAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KICAgICB1Y2hhciAqdGFpbDsgICAgICAgIC8qIHAgKyAyKlNTVCArIG5ieXRlcyA9PSBwb2ludGVyIHRvIHRhaWwgcGFkIGJ5dGVzICovCiAgICAgc2l6ZV90IHRvdGFsOyAgICAgICAvKiBuYnl0ZXMgKyA0KlNTVCAqLwpAQCAtMTQ2NCwxNCArMTczNCwxNCBAQAogICAgICAgICAvKiBvdmVyZmxvdzogIGNhbid0IHJlcHJlc2VudCB0b3RhbCBhcyBhIHNpemVfdCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHAgPSAodWNoYXIgKilQeU9iamVjdF9NYWxsb2ModG90YWwpOworICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOwogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogYXQgcCwgd3JpdGUgc2l6ZSAoU1NUIGJ5dGVzKSwgaWQgKDEgYnl0ZSksIHBhZCAoU1NULTEgYnl0ZXMpICovCiAgICAgd3JpdGVfc2l6ZV90KHAsIG5ieXRlcyk7Ci0gICAgcFtTU1RdID0gKHVjaGFyKWlkOwotICAgIG1lbXNldChwICsgU1NUICsgMSAsIEZPUkJJRERFTkJZVEUsIFNTVC0xKTsKKyAgICBwW1NTVF0gPSAodWNoYXIpYXBpLT5hcGlfaWQ7CisgICAgbWVtc2V0KHAgKyBTU1QgKyAxLCBGT1JCSURERU5CWVRFLCBTU1QtMSk7CiAKICAgICBpZiAobmJ5dGVzID4gMCkKICAgICAgICAgbWVtc2V0KHAgKyAyKlNTVCwgQ0xFQU5CWVRFLCBuYnl0ZXMpOwpAQCAtMTQ4OSwzNSArMTc1OSwzNyBAQAogICAgVGhlbiBmaWxscyB0aGUgb3JpZ2luYWwgYnl0ZXMgd2l0aCBERUFEQllURS4KICAgIFRoZW4gY2FsbHMgdGhlIHVuZGVybHlpbmcgZnJlZS4KICovCi12b2lkCi1fUHlPYmplY3RfRGVidWdGcmVlQXBpKGNoYXIgYXBpLCB2b2lkICpwKQorc3RhdGljIHZvaWQKK19QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQogeworICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7CiAgICAgdWNoYXIgKnEgPSAodWNoYXIgKilwIC0gMipTU1Q7ICAvKiBhZGRyZXNzIHJldHVybmVkIGZyb20gbWFsbG9jICovCiAgICAgc2l6ZV90IG5ieXRlczsKIAogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKLSAgICBfUHlPYmplY3RfRGVidWdDaGVja0FkZHJlc3NBcGkoYXBpLCBwKTsKKyAgICBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoYXBpLT5hcGlfaWQsIHApOwogICAgIG5ieXRlcyA9IHJlYWRfc2l6ZV90KHEpOwogICAgIG5ieXRlcyArPSA0KlNTVDsKICAgICBpZiAobmJ5dGVzID4gMCkKICAgICAgICAgbWVtc2V0KHEsIERFQURCWVRFLCBuYnl0ZXMpOwotICAgIFB5T2JqZWN0X0ZyZWUocSk7CisgICAgYXBpLT5hbGxvYy5mcmVlKGFwaS0+YWxsb2MuY3R4LCBxKTsKIH0KIAotdm9pZCAqCi1fUHlPYmplY3RfRGVidWdSZWFsbG9jQXBpKGNoYXIgYXBpLCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQorc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCiB7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwOworICAgIGRlYnVnX2FsbG9jX2FwaV90ICphcGkgPSAoZGVidWdfYWxsb2NfYXBpX3QgKiljdHg7CisgICAgdWNoYXIgKnEgPSAodWNoYXIgKilwLCAqb2xkcTsKICAgICB1Y2hhciAqdGFpbDsKICAgICBzaXplX3QgdG90YWw7ICAgICAgIC8qIG5ieXRlcyArIDQqU1NUICovCiAgICAgc2l6ZV90IG9yaWdpbmFsX25ieXRlczsKICAgICBpbnQgaTsKIAogICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBfUHlPYmplY3RfRGVidWdNYWxsb2NBcGkoYXBpLCBuYnl0ZXMpOworICAgICAgICByZXR1cm4gX1B5TWVtX0RlYnVnTWFsbG9jKGN0eCwgbmJ5dGVzKTsKIAotICAgIF9QeU9iamVjdF9EZWJ1Z0NoZWNrQWRkcmVzc0FwaShhcGksIHApOworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhhcGktPmFwaV9pZCwgcCk7CiAgICAgYnVtcHNlcmlhbG5vKCk7CiAgICAgb3JpZ2luYWxfbmJ5dGVzID0gcmVhZF9zaXplX3QocSAtIDIqU1NUKTsKICAgICB0b3RhbCA9IG5ieXRlcyArIDQqU1NUOwpAQCAtMTUyNSwyNCArMTc5NywyNiBAQAogICAgICAgICAvKiBvdmVyZmxvdzogIGNhbid0IHJlcHJlc2VudCB0b3RhbCBhcyBhIHNpemVfdCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChuYnl0ZXMgPCBvcmlnaW5hbF9uYnl0ZXMpIHsKLSAgICAgICAgLyogc2hyaW5raW5nOiAgbWFyayBvbGQgZXh0cmEgbWVtb3J5IGRlYWQgKi8KLSAgICAgICAgbWVtc2V0KHEgKyBuYnl0ZXMsIERFQURCWVRFLCBvcmlnaW5hbF9uYnl0ZXMgLSBuYnl0ZXMgKyAyKlNTVCk7Ci0gICAgfQotCiAgICAgLyogUmVzaXplIGFuZCBhZGQgZGVjb3JhdGlvbnMuIFdlIG1heSBnZXQgYSBuZXcgcG9pbnRlciBoZXJlLCBpbiB3aGljaAogICAgICAqIGNhc2Ugd2UgZGlkbid0IGdldCB0aGUgY2hhbmNlIHRvIG1hcmsgdGhlIG9sZCBtZW1vcnkgd2l0aCBERUFEQllURSwKICAgICAgKiBidXQgd2UgbGl2ZSB3aXRoIHRoYXQuCiAgICAgICovCi0gICAgcSA9ICh1Y2hhciAqKVB5T2JqZWN0X1JlYWxsb2MocSAtIDIqU1NULCB0b3RhbCk7CisgICAgb2xkcSA9IHE7CisgICAgcSA9ICh1Y2hhciAqKWFwaS0+YWxsb2MucmVhbGxvYyhhcGktPmFsbG9jLmN0eCwgcSAtIDIqU1NULCB0b3RhbCk7CiAgICAgaWYgKHEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAocSA9PSBvbGRxICYmIG5ieXRlcyA8IG9yaWdpbmFsX25ieXRlcykgeworICAgICAgICAvKiBzaHJpbmtpbmc6ICBtYXJrIG9sZCBleHRyYSBtZW1vcnkgZGVhZCAqLworICAgICAgICBtZW1zZXQocSArIG5ieXRlcywgREVBREJZVEUsIG9yaWdpbmFsX25ieXRlcyAtIG5ieXRlcyk7CisgICAgfQorCiAgICAgd3JpdGVfc2l6ZV90KHEsIG5ieXRlcyk7Ci0gICAgYXNzZXJ0KHFbU1NUXSA9PSAodWNoYXIpYXBpKTsKKyAgICBhc3NlcnQocVtTU1RdID09ICh1Y2hhcilhcGktPmFwaV9pZCk7CiAgICAgZm9yIChpID0gMTsgaSA8IFNTVDsgKytpKQogICAgICAgICBhc3NlcnQocVtTU1QgKyBpXSA9PSBGT1JCSURERU5CWVRFKTsKICAgICBxICs9IDIqU1NUOworCiAgICAgdGFpbCA9IHEgKyBuYnl0ZXM7CiAgICAgbWVtc2V0KHRhaWwsIEZPUkJJRERFTkJZVEUsIFNTVCk7CiAgICAgd3JpdGVfc2l6ZV90KHRhaWwgKyBTU1QsIHNlcmlhbG5vKTsKQEAgLTE1NjEsOCArMTgzNSw4IEBACiAgKiBhbmQgY2FsbCBQeV9GYXRhbEVycm9yIHRvIGtpbGwgdGhlIHByb2dyYW0uCiAgKiBUaGUgQVBJIGlkLCBpcyBhbHNvIGNoZWNrZWQuCiAgKi8KLSB2b2lkCi1fUHlPYmplY3RfRGVidWdDaGVja0FkZHJlc3NBcGkoY2hhciBhcGksIGNvbnN0IHZvaWQgKnApCitzdGF0aWMgdm9pZAorX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGNoYXIgYXBpLCBjb25zdCB2b2lkICpwKQogewogICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKICAgICBjaGFyIG1zZ2J1Zls2NF07CkBAIC0xNjE0LDcgKzE4ODgsNyBAQAogfQogCiAvKiBEaXNwbGF5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBtZW1vcnkgYmxvY2sgYXQgcC4gKi8KLXZvaWQKK3N0YXRpYyB2b2lkCiBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKQogewogICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCAyMTRiNDU1Li5iYTUxZmVjIDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC0zMTgsMTk1ICszMTgsNiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLS8qIEFkZGl0aW9uYWwgaGVscGVycywgc2luY2UgdGhlIHN0YW5kYXJkIHNsaWNlIGhlbHBlcnMKLSAqIGFsbCBjbGlwIHRvIFBZX1NTSVpFX1RfTUFYCi0gKi8KLQotLyogUmVwbGFjZSBfUHlFdmFsX1NsaWNlSW5kZXggKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1jb21wdXRlX3NsaWNlX2VsZW1lbnQoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpZiAob2JqICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5SW5kZXhfQ2hlY2sob2JqKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfSW5kZXgob2JqKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsaWNlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgb3IgaGF2ZSBhbiBfX2luZGV4X18gbWV0aG9kIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUmVwbGFjZSBQeVNsaWNlX0dldEluZGljZXNFeAotICogICBSZXN1bHQgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBzbGljZSBpcyBlbXB0eQotICogICAgKC0xID0gZXJyb3IsIDAgPSBlbXB0eSBzbGljZSwgMSA9IHNsaWNlIGNvbnRhaW5zIGVsZW1lbnRzKQotICovCi1zdGF0aWMgaW50Ci1jb21wdXRlX3NsaWNlX2luZGljZXMocmFuZ2VvYmplY3QgKnIsIFB5U2xpY2VPYmplY3QgKnNsaWNlLAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3RhcnQsIFB5T2JqZWN0ICoqc3RvcCwgUHlPYmplY3QgKipzdGVwKQotewotICAgIGludCBjbXBfcmVzdWx0LCBoYXNfZWxlbWVudHM7Ci0gICAgUHlfc3NpemVfdCBjbGFtcGVkX3N0ZXAgPSAwOwotICAgIFB5T2JqZWN0ICp6ZXJvID0gTlVMTCwgKm9uZSA9IE5VTEwsICpuZWdfb25lID0gTlVMTCwgKmNhbmRpZGF0ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnRtcF9zdGFydCA9IE5VTEwsICp0bXBfc3RvcCA9IE5VTEwsICp0bXBfc3RlcCA9IE5VTEw7Ci0gICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKLSAgICBpZiAoemVybyA9PSBOVUxMKSBnb3RvIEZhaWw7Ci0gICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOwotICAgIGlmIChvbmUgPT0gTlVMTCkgZ290byBGYWlsOwotICAgIG5lZ19vbmUgPSBQeUxvbmdfRnJvbUxvbmcoLTEpOwotICAgIGlmIChuZWdfb25lID09IE5VTEwpIGdvdG8gRmFpbDsKLQotICAgIC8qIENhbGN1bGF0ZSBzdGVwIHZhbHVlICovCi0gICAgaWYgKHNsaWNlLT5zdGVwID09IFB5X05vbmUpIHsKLSAgICAgICAgY2xhbXBlZF9zdGVwID0gMTsKLSAgICAgICAgdG1wX3N0ZXAgPSBvbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih0bXBfc3RlcCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFfUHlFdmFsX1NsaWNlSW5kZXgoc2xpY2UtPnN0ZXAsICZjbGFtcGVkX3N0ZXApKSBnb3RvIEZhaWw7Ci0gICAgICAgIGlmIChjbGFtcGVkX3N0ZXAgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsaWNlIHN0ZXAgY2Fubm90IGJlIHplcm8iKTsKLSAgICAgICAgICAgIGdvdG8gRmFpbDsKLSAgICAgICAgfQotICAgICAgICB0bXBfc3RlcCA9IGNvbXB1dGVfc2xpY2VfZWxlbWVudChzbGljZS0+c3RlcCk7Ci0gICAgICAgIGlmICh0bXBfc3RlcCA9PSBOVUxMKSBnb3RvIEZhaWw7Ci0gICAgfQotCi0gICAgLyogQ2FsY3VsYXRlIHN0YXJ0IHZhbHVlICovCi0gICAgaWYgKHNsaWNlLT5zdGFydCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGlmIChjbGFtcGVkX3N0ZXAgPCAwKSB7Ci0gICAgICAgICAgICB0bXBfc3RhcnQgPSBQeU51bWJlcl9TdWJ0cmFjdChyLT5sZW5ndGgsIG9uZSk7Ci0gICAgICAgICAgICBpZiAodG1wX3N0YXJ0ID09IE5VTEwpIGdvdG8gRmFpbDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRtcF9zdGFydCA9IHplcm87Ci0gICAgICAgICAgICBQeV9JTkNSRUYodG1wX3N0YXJ0KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNhbmRpZGF0ZSA9IGNvbXB1dGVfc2xpY2VfZWxlbWVudChzbGljZS0+c3RhcnQpOwotICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpIGdvdG8gRmFpbDsKLSAgICAgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChjYW5kaWRhdGUsIHplcm8sIFB5X0xUKTsKLSAgICAgICAgaWYgKGNtcF9yZXN1bHQgPT0gLTEpIGdvdG8gRmFpbDsKLSAgICAgICAgaWYgKGNtcF9yZXN1bHQpIHsKLSAgICAgICAgICAgIC8qIGNhbmRpZGF0ZSA8IDAgKi8KLSAgICAgICAgICAgIHRtcF9zdGFydCA9IFB5TnVtYmVyX0FkZChyLT5sZW5ndGgsIGNhbmRpZGF0ZSk7Ci0gICAgICAgICAgICBpZiAodG1wX3N0YXJ0ID09IE5VTEwpIGdvdG8gRmFpbDsKLSAgICAgICAgICAgIFB5X0NMRUFSKGNhbmRpZGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjYW5kaWRhdGUgPj0gMCAqLwotICAgICAgICAgICAgdG1wX3N0YXJ0ID0gY2FuZGlkYXRlOwotICAgICAgICAgICAgY2FuZGlkYXRlID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHRtcF9zdGFydCwgemVybywgUHlfTFQpOwotICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkgZ290byBGYWlsOwotICAgICAgICBpZiAoY21wX3Jlc3VsdCkgewotICAgICAgICAgICAgLyogdG1wX3N0YXJ0IDwgMCAqLwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wX3N0YXJ0KTsKLSAgICAgICAgICAgIGlmIChjbGFtcGVkX3N0ZXAgPCAwKSB7Ci0gICAgICAgICAgICAgICAgdG1wX3N0YXJ0ID0gbmVnX29uZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdG1wX3N0YXJ0ID0gemVybzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih0bXBfc3RhcnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogdG1wX3N0YXJ0ID49IDAgKi8KLSAgICAgICAgICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodG1wX3N0YXJ0LCByLT5sZW5ndGgsIFB5X0dFKTsKLSAgICAgICAgICAgIGlmIChjbXBfcmVzdWx0ID09IC0xKSBnb3RvIEZhaWw7Ci0gICAgICAgICAgICBpZiAoY21wX3Jlc3VsdCkgewotICAgICAgICAgICAgICAgIC8qIHRtcF9zdGFydCA+PSByLT5sZW5ndGggKi8KLSAgICAgICAgICAgICAgICBQeV9DTEVBUih0bXBfc3RhcnQpOwotICAgICAgICAgICAgICAgIGlmIChjbGFtcGVkX3N0ZXAgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRtcF9zdGFydCA9IFB5TnVtYmVyX1N1YnRyYWN0KHItPmxlbmd0aCwgb25lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRtcF9zdGFydCA9PSBOVUxMKSBnb3RvIEZhaWw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdG1wX3N0YXJ0ID0gci0+bGVuZ3RoOwotICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodG1wX3N0YXJ0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBDYWxjdWxhdGUgc3RvcCB2YWx1ZSAqLwotICAgIGlmIChzbGljZS0+c3RvcCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGlmIChjbGFtcGVkX3N0ZXAgPCAwKSB7Ci0gICAgICAgICAgICB0bXBfc3RvcCA9IG5lZ19vbmU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0bXBfc3RvcCA9IHItPmxlbmd0aDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYodG1wX3N0b3ApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNhbmRpZGF0ZSA9IGNvbXB1dGVfc2xpY2VfZWxlbWVudChzbGljZS0+c3RvcCk7Ci0gICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkgZ290byBGYWlsOwotICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNhbmRpZGF0ZSwgemVybywgUHlfTFQpOwotICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkgZ290byBGYWlsOwotICAgICAgICBpZiAoY21wX3Jlc3VsdCkgewotICAgICAgICAgICAgLyogY2FuZGlkYXRlIDwgMCAqLwotICAgICAgICAgICAgdG1wX3N0b3AgPSBQeU51bWJlcl9BZGQoci0+bGVuZ3RoLCBjYW5kaWRhdGUpOwotICAgICAgICAgICAgaWYgKHRtcF9zdG9wID09IE5VTEwpIGdvdG8gRmFpbDsKLSAgICAgICAgICAgIFB5X0NMRUFSKGNhbmRpZGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjYW5kaWRhdGUgPj0gMCAqLwotICAgICAgICAgICAgdG1wX3N0b3AgPSBjYW5kaWRhdGU7Ci0gICAgICAgICAgICBjYW5kaWRhdGUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodG1wX3N0b3AsIHplcm8sIFB5X0xUKTsKLSAgICAgICAgaWYgKGNtcF9yZXN1bHQgPT0gLTEpIGdvdG8gRmFpbDsKLSAgICAgICAgaWYgKGNtcF9yZXN1bHQpIHsKLSAgICAgICAgICAgIC8qIHRtcF9zdG9wIDwgMCAqLwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wX3N0b3ApOwotICAgICAgICAgICAgaWYgKGNsYW1wZWRfc3RlcCA8IDApIHsKLSAgICAgICAgICAgICAgICB0bXBfc3RvcCA9IG5lZ19vbmU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRtcF9zdG9wID0gemVybzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih0bXBfc3RvcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiB0bXBfc3RvcCA+PSAwICovCi0gICAgICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHRtcF9zdG9wLCByLT5sZW5ndGgsIFB5X0dFKTsKLSAgICAgICAgICAgIGlmIChjbXBfcmVzdWx0ID09IC0xKSBnb3RvIEZhaWw7Ci0gICAgICAgICAgICBpZiAoY21wX3Jlc3VsdCkgewotICAgICAgICAgICAgICAgIC8qIHRtcF9zdG9wID49IHItPmxlbmd0aCAqLwotICAgICAgICAgICAgICAgIFB5X0NMRUFSKHRtcF9zdG9wKTsKLSAgICAgICAgICAgICAgICBpZiAoY2xhbXBlZF9zdGVwIDwgMCkgewotICAgICAgICAgICAgICAgICAgICB0bXBfc3RvcCA9IFB5TnVtYmVyX1N1YnRyYWN0KHItPmxlbmd0aCwgb25lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRtcF9zdG9wID09IE5VTEwpIGdvdG8gRmFpbDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0bXBfc3RvcCA9IHItPmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRtcF9zdG9wKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBDaGVjayBpZiB0aGUgc2xpY2UgaXMgZW1wdHkgb3Igbm90ICovCi0gICAgaWYgKGNsYW1wZWRfc3RlcCA8IDApIHsKLSAgICAgICAgaGFzX2VsZW1lbnRzID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHRtcF9zdGFydCwgdG1wX3N0b3AsIFB5X0dUKTsKLSAgICB9IGVsc2UgewotICAgICAgICBoYXNfZWxlbWVudHMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodG1wX3N0YXJ0LCB0bXBfc3RvcCwgUHlfTFQpOwotICAgIH0KLSAgICBpZiAoaGFzX2VsZW1lbnRzID09IC0xKSBnb3RvIEZhaWw7Ci0KLSAgICAqc3RhcnQgPSB0bXBfc3RhcnQ7Ci0gICAgKnN0b3AgPSB0bXBfc3RvcDsKLSAgICAqc3RlcCA9IHRtcF9zdGVwOwotICAgIFB5X0RFQ1JFRihuZWdfb25lKTsKLSAgICBQeV9ERUNSRUYob25lKTsKLSAgICBQeV9ERUNSRUYoemVybyk7Ci0gICAgcmV0dXJuIGhhc19lbGVtZW50czsKLQotICBGYWlsOgotICAgIFB5X1hERUNSRUYodG1wX3N0YXJ0KTsKLSAgICBQeV9YREVDUkVGKHRtcF9zdG9wKTsKLSAgICBQeV9YREVDUkVGKHRtcF9zdGVwKTsKLSAgICBQeV9YREVDUkVGKGNhbmRpZGF0ZSk7Ci0gICAgUHlfWERFQ1JFRihuZWdfb25lKTsKLSAgICBQeV9YREVDUkVGKG9uZSk7Ci0gICAgUHlfWERFQ1JFRih6ZXJvKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBjb21wdXRlX3NsaWNlKHJhbmdlb2JqZWN0ICpyLCBQeU9iamVjdCAqX3NsaWNlKQogewpAQCAtNTE0LDEwICszMjUsMTEgQEAKICAgICByYW5nZW9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpzdGFydCA9IE5VTEwsICpzdG9wID0gTlVMTCwgKnN0ZXAgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdWJzdGFydCA9IE5VTEwsICpzdWJzdG9wID0gTlVMTCwgKnN1YnN0ZXAgPSBOVUxMOwotICAgIGludCBoYXNfZWxlbWVudHM7CisgICAgaW50IGVycm9yOwogCi0gICAgaGFzX2VsZW1lbnRzID0gY29tcHV0ZV9zbGljZV9pbmRpY2VzKHIsIHNsaWNlLCAmc3RhcnQsICZzdG9wLCAmc3RlcCk7Ci0gICAgaWYgKGhhc19lbGVtZW50cyA9PSAtMSkgcmV0dXJuIE5VTEw7CisgICAgZXJyb3IgPSBfUHlTbGljZV9HZXRMb25nSW5kaWNlcyhzbGljZSwgci0+bGVuZ3RoLCAmc3RhcnQsICZzdG9wLCAmc3RlcCk7CisgICAgaWYgKGVycm9yID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN1YnN0ZXAgPSBQeU51bWJlcl9NdWx0aXBseShyLT5zdGVwLCBzdGVwKTsKICAgICBpZiAoc3Vic3RlcCA9PSBOVUxMKSBnb3RvIGZhaWw7CkBAIC01MjcsMTMgKzMzOSw4IEBACiAgICAgaWYgKHN1YnN0YXJ0ID09IE5VTEwpIGdvdG8gZmFpbDsKICAgICBQeV9DTEVBUihzdGFydCk7CiAKLSAgICBpZiAoaGFzX2VsZW1lbnRzKSB7Ci0gICAgICAgIHN1YnN0b3AgPSBjb21wdXRlX2l0ZW0ociwgc3RvcCk7Ci0gICAgICAgIGlmIChzdWJzdG9wID09IE5VTEwpIGdvdG8gZmFpbDsKLSAgICB9IGVsc2UgewotICAgICAgICBzdWJzdG9wID0gc3Vic3RhcnQ7Ci0gICAgICAgIFB5X0lOQ1JFRihzdWJzdG9wKTsKLSAgICB9CisgICAgc3Vic3RvcCA9IGNvbXB1dGVfaXRlbShyLCBzdG9wKTsKKyAgICBpZiAoc3Vic3RvcCA9PSBOVUxMKSBnb3RvIGZhaWw7CiAgICAgUHlfQ0xFQVIoc3RvcCk7CiAKICAgICByZXN1bHQgPSBtYWtlX3JhbmdlX29iamVjdChQeV9UWVBFKHIpLCBzdWJzdGFydCwgc3Vic3RvcCwgc3Vic3RlcCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCBlYTVhMjRjLi4wY2VhMmE4IDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgIC8qIEluIHRoZSBsb29wLCBrZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCiAgICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOworICAgICAgICBpID0gaSAqIDUgKyBwZXJ0dXJiICsgMTsKICAgICAgICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoZnJlZXNsb3QgIT0gTlVMTCkKQEAgLTE4OSw3ICsxODksNyBAQAogICAgIC8qIEluIHRoZSBsb29wLCBrZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCiAgICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOworICAgICAgICBpID0gaSAqIDUgKyBwZXJ0dXJiICsgMTsKICAgICAgICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlbnRyeSA6IGZyZWVzbG90OwpAQCAtMjU4LDcgKzI1OCw3IEBACiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZW50cnktPmtleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgaSA9IGkgKiA1ICsgcGVydHVyYiArIDE7CiAgICAgICAgIGVudHJ5ID0gJnRhYmxlW2kgJiBtYXNrXTsKICAgICB9CiAgICAgc28tPmZpbGwrKzsKZGlmZiAtLWdpdCBhL09iamVjdHMvc2xpY2VvYmplY3QuYyBiL09iamVjdHMvc2xpY2VvYmplY3QuYwppbmRleCAxNTkzMzM1Li41MmYxYzg5IDEwMDY0NAotLS0gYS9PYmplY3RzL3NsaWNlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zbGljZW9iamVjdC5jCkBAIC0yOTksMjMgKzI5OSwxOTggQEAKICAgICB7MH0KIH07CiAKKy8qIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgc2xpY2UgYXJndW1lbnQgdG8gYSBQeUxvbmcsIGFuZCByYWlzZSBUeXBlRXJyb3IKKyAgIHdpdGggYSBzdWl0YWJsZSBtZXNzYWdlIG9uIGZhaWx1cmUuICovCisKK3N0YXRpYyBQeU9iamVjdCoKK2V2YWx1YXRlX3NsaWNlX2luZGV4KFB5T2JqZWN0ICp2KQoreworICAgIGlmIChQeUluZGV4X0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeU51bWJlcl9JbmRleCh2KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2xpY2UgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIG9yIGhhdmUgYW4gX19pbmRleF9fIG1ldGhvZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIENvbXB1dGUgc2xpY2UgaW5kaWNlcyBnaXZlbiBhIHNsaWNlIGFuZCBsZW5ndGguICBSZXR1cm4gLTEgb24gZmFpbHVyZS4gIFVzZWQKKyAgIGJ5IHNsaWNlLmluZGljZXMgYW5kIHJhbmdlb2JqZWN0IHNsaWNpbmcuICBBc3N1bWVzIHRoYXQgYGxlbmAgaXMgYQorICAgbm9ubmVnYXRpdmUgaW5zdGFuY2Ugb2YgUHlMb25nLiAqLworCitpbnQKK19QeVNsaWNlX0dldExvbmdJbmRpY2VzKFB5U2xpY2VPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN0YXJ0X3B0ciwgUHlPYmplY3QgKipzdG9wX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3RlcF9wdHIpCit7CisgICAgUHlPYmplY3QgKnN0YXJ0PU5VTEwsICpzdG9wPU5VTEwsICpzdGVwPU5VTEw7CisgICAgUHlPYmplY3QgKnVwcGVyPU5VTEwsICpsb3dlcj1OVUxMOworICAgIGludCBzdGVwX2lzX25lZ2F0aXZlLCBjbXBfcmVzdWx0OworCisgICAgLyogQ29udmVydCBzdGVwIHRvIGFuIGludGVnZXI7IHJhaXNlIGZvciB6ZXJvIHN0ZXAuICovCisgICAgaWYgKHNlbGYtPnN0ZXAgPT0gUHlfTm9uZSkgeworICAgICAgICBzdGVwID0gUHlMb25nX0Zyb21Mb25nKDFMKTsKKyAgICAgICAgaWYgKHN0ZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0ZXBfaXNfbmVnYXRpdmUgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IHN0ZXBfc2lnbjsKKyAgICAgICAgc3RlcCA9IGV2YWx1YXRlX3NsaWNlX2luZGV4KHNlbGYtPnN0ZXApOworICAgICAgICBpZiAoc3RlcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgc3RlcF9zaWduID0gX1B5TG9uZ19TaWduKHN0ZXApOworICAgICAgICBpZiAoc3RlcF9zaWduID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGljZSBzdGVwIGNhbm5vdCBiZSB6ZXJvIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHN0ZXBfaXNfbmVnYXRpdmUgPSBzdGVwX3NpZ24gPCAwOworICAgIH0KKworICAgIC8qIEZpbmQgbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3Igc3RhcnQgYW5kIHN0b3AuICovCisgICAgaWYgKHN0ZXBfaXNfbmVnYXRpdmUpIHsKKyAgICAgICAgbG93ZXIgPSBQeUxvbmdfRnJvbUxvbmcoLTFMKTsKKyAgICAgICAgaWYgKGxvd2VyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIHVwcGVyID0gUHlOdW1iZXJfQWRkKGxlbmd0aCwgbG93ZXIpOworICAgICAgICBpZiAodXBwZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsb3dlciA9IFB5TG9uZ19Gcm9tTG9uZygwTCk7CisgICAgICAgIGlmIChsb3dlciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICB1cHBlciA9IGxlbmd0aDsKKyAgICAgICAgUHlfSU5DUkVGKHVwcGVyKTsKKyAgICB9CisKKyAgICAvKiBDb21wdXRlIHN0YXJ0LiAqLworICAgIGlmIChzZWxmLT5zdGFydCA9PSBQeV9Ob25lKSB7CisgICAgICAgIHN0YXJ0ID0gc3RlcF9pc19uZWdhdGl2ZSA/IHVwcGVyIDogbG93ZXI7CisgICAgICAgIFB5X0lOQ1JFRihzdGFydCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFydCA9IGV2YWx1YXRlX3NsaWNlX2luZGV4KHNlbGYtPnN0YXJ0KTsKKyAgICAgICAgaWYgKHN0YXJ0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChfUHlMb25nX1NpZ24oc3RhcnQpIDwgMCkgeworICAgICAgICAgICAgLyogc3RhcnQgKz0gbGVuZ3RoICovCisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlOdW1iZXJfQWRkKHN0YXJ0LCBsZW5ndGgpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0KTsKKyAgICAgICAgICAgIHN0YXJ0ID0gdG1wOworICAgICAgICAgICAgaWYgKHN0YXJ0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydCwgbG93ZXIsIFB5X0xUKTsKKyAgICAgICAgICAgIGlmIChjbXBfcmVzdWx0IDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKGNtcF9yZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYobG93ZXIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydCk7CisgICAgICAgICAgICAgICAgc3RhcnQgPSBsb3dlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnQsIHVwcGVyLCBQeV9HVCk7CisgICAgICAgICAgICBpZiAoY21wX3Jlc3VsdCA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChjbXBfcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHVwcGVyKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnQpOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gdXBwZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDb21wdXRlIHN0b3AuICovCisgICAgaWYgKHNlbGYtPnN0b3AgPT0gUHlfTm9uZSkgeworICAgICAgICBzdG9wID0gc3RlcF9pc19uZWdhdGl2ZSA/IGxvd2VyIDogdXBwZXI7CisgICAgICAgIFB5X0lOQ1JFRihzdG9wKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0b3AgPSBldmFsdWF0ZV9zbGljZV9pbmRleChzZWxmLT5zdG9wKTsKKyAgICAgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKF9QeUxvbmdfU2lnbihzdG9wKSA8IDApIHsKKyAgICAgICAgICAgIC8qIHN0b3AgKz0gbGVuZ3RoICovCisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlOdW1iZXJfQWRkKHN0b3AsIGxlbmd0aCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RvcCk7CisgICAgICAgICAgICBzdG9wID0gdG1wOworICAgICAgICAgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0b3AsIGxvd2VyLCBQeV9MVCk7CisgICAgICAgICAgICBpZiAoY21wX3Jlc3VsdCA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChjbXBfcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGxvd2VyKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RvcCk7CisgICAgICAgICAgICAgICAgc3RvcCA9IGxvd2VyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdG9wLCB1cHBlciwgUHlfR1QpOworICAgICAgICAgICAgaWYgKGNtcF9yZXN1bHQgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoY21wX3Jlc3VsdCkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih1cHBlcik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0b3ApOworICAgICAgICAgICAgICAgIHN0b3AgPSB1cHBlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgICpzdGFydF9wdHIgPSBzdGFydDsKKyAgICAqc3RvcF9wdHIgPSBzdG9wOworICAgICpzdGVwX3B0ciA9IHN0ZXA7CisgICAgUHlfREVDUkVGKHVwcGVyKTsKKyAgICBQeV9ERUNSRUYobG93ZXIpOworICAgIHJldHVybiAwOworCisgIGVycm9yOgorICAgICpzdGFydF9wdHIgPSAqc3RvcF9wdHIgPSAqc3RlcF9wdHIgPSBOVUxMOworICAgIFB5X1hERUNSRUYoc3RhcnQpOworICAgIFB5X1hERUNSRUYoc3RvcCk7CisgICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICBQeV9YREVDUkVGKHVwcGVyKTsKKyAgICBQeV9YREVDUkVGKGxvd2VyKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHNsaWNlLmluZGljZXMuICovCisKIHN0YXRpYyBQeU9iamVjdCoKIHNsaWNlX2luZGljZXMoUHlTbGljZU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGxlbikKIHsKLSAgICBQeV9zc2l6ZV90IGlsZW4sIHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKKyAgICBQeU9iamVjdCAqc3RhcnQsICpzdG9wLCAqc3RlcDsKKyAgICBQeU9iamVjdCAqbGVuZ3RoOworICAgIGludCBlcnJvcjsKIAotICAgIGlsZW4gPSBQeU51bWJlcl9Bc1NzaXplX3QobGVuLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAvKiBDb252ZXJ0IGxlbmd0aCB0byBhbiBpbnRlZ2VyIGlmIG5lY2Vzc2FyeTsgcmFpc2UgZm9yIG5lZ2F0aXZlIGxlbmd0aC4gKi8KKyAgICBsZW5ndGggPSBQeU51bWJlcl9JbmRleChsZW4pOworICAgIGlmIChsZW5ndGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoaWxlbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgaWYgKF9QeUxvbmdfU2lnbihsZW5ndGgpIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZW5ndGggc2hvdWxkIG5vdCBiZSBuZWdhdGl2ZSIpOworICAgICAgICBQeV9ERUNSRUYobGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeU9iamVjdCopc2VsZiwgaWxlbiwgJnN0YXJ0LCAmc3RvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CisgICAgZXJyb3IgPSBfUHlTbGljZV9HZXRMb25nSW5kaWNlcyhzZWxmLCBsZW5ndGgsICZzdGFydCwgJnN0b3AsICZzdGVwKTsKKyAgICBQeV9ERUNSRUYobGVuZ3RoKTsKKyAgICBpZiAoZXJyb3IgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIobm5uKSIsIHN0YXJ0LCBzdG9wLCBzdGVwKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTk5OKSIsIHN0YXJ0LCBzdG9wLCBzdGVwKTsKIH0KIAogUHlEb2NfU1RSVkFSKHNsaWNlX2luZGljZXNfZG9jLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKaW5kZXggZjYyODEzZC4uZDBmYzE4ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oCkBAIC0xOSw3ICsxOSw2IEBACiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQQogI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKICNkZWZpbmUgU1RSSU5HTElCX05FVyhTVFIsTEVOKSAgIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKChjaGFyKikoU1RSKSwoTEVOKSkKLSNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjawogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAppbmRleCBmMzUzMzY3Li5mODU1MDAzIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtNDcsNyArNDcsNyBAQAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9zOwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoU1RSSU5HTElCX0NIQVIpKHZhbHVlICYgMHhGRnUpOwogICAgICAgICAgICAgICAgICAgICBfcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDgpICYgMHhGRnUpOwogICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDE2KSAmIDB4RkZ1KTsKQEAgLTQ4Niw3ICs0ODYsNyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEgPSAqaW5wdHI7CiAgICAgU1RSSU5HTElCX0NIQVIgKnAgPSBkZXN0ICsgKm91dHBvczsKICAgICAvKiBPZmZzZXRzIGZyb20gcSBmb3IgcmV0cmlldmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgaWhpID0gISFuYXRpdmVfb3JkZXJpbmcsIGlsbyA9ICFuYXRpdmVfb3JkZXJpbmc7CiAjZWxzZQogICAgIGludCBpaGkgPSAhbmF0aXZlX29yZGVyaW5nLCBpbG8gPSAhIW5hdGl2ZV9vcmRlcmluZzsKQEAgLTUxNyw3ICs1MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBibG9jayA9IFNXQUIoYmxvY2spOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgfQotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisjaWYgUFlfTElUVExFX0VORElBTgogIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CiAgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKICAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiAxNik7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKaW5kZXggNTVhYzc3ZC4uY2Q3Y2FjNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaApAQCAtMTQyLDYgKzE0Miw4IEBACiAgICAgbWFzayA9IDA7CiAKICAgICBpZiAobW9kZSAhPSBGQVNUX1JTRUFSQ0gpIHsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnNzID0gcyArIG0gLSAxOworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHAgPSBwICsgbSAtIDE7CiAKICAgICAgICAgLyogY3JlYXRlIGNvbXByZXNzZWQgYm95ZXItbW9vcmUgZGVsdGEgMSB0YWJsZSAqLwogCkBAIC0xNTYsNyArMTU4LDcgQEAKIAogICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IHc7IGkrKykgewogICAgICAgICAgICAgLyogbm90ZTogdXNpbmcgbWxhc3QgaW4gdGhlIHNraXAgcGF0aCBzbG93cyB0aGluZ3MgZG93biBvbiB4ODYgKi8KLSAgICAgICAgICAgIGlmIChzW2krbS0xXSA9PSBwW20tMV0pIHsKKyAgICAgICAgICAgIGlmIChzc1tpXSA9PSBwcFswXSkgewogICAgICAgICAgICAgICAgIC8qIGNhbmRpZGF0ZSBtYXRjaCAqLwogICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBtbGFzdDsgaisrKQogICAgICAgICAgICAgICAgICAgICBpZiAoc1tpK2pdICE9IHBbal0pCkBAIC0xNzIsMTMgKzE3NCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogbWlzczogY2hlY2sgaWYgbmV4dCBjaGFyYWN0ZXIgaXMgcGFydCBvZiBwYXR0ZXJuICovCi0gICAgICAgICAgICAgICAgaWYgKCFTVFJJTkdMSUJfQkxPT00obWFzaywgc1tpK21dKSkKKyAgICAgICAgICAgICAgICBpZiAoIVNUUklOR0xJQl9CTE9PTShtYXNrLCBzc1tpKzFdKSkKICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBtOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyBza2lwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBza2lwOiBjaGVjayBpZiBuZXh0IGNoYXJhY3RlciBpcyBwYXJ0IG9mIHBhdHRlcm4gKi8KLSAgICAgICAgICAgICAgICBpZiAoIVNUUklOR0xJQl9CTE9PTShtYXNrLCBzW2krbV0pKQorICAgICAgICAgICAgICAgIGlmICghU1RSSU5HTElCX0JMT09NKG1hc2ssIHNzW2krMV0pKQogICAgICAgICAgICAgICAgICAgICBpID0gaSArIG07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaCBiL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTY4YjMxCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCkBAIC0wLDAgKzEsMTMzIEBACisvKiBzdHJpbmdsaWI6IGJ5dGVzIGpvaW5pbmcgaW1wbGVtZW50YXRpb24gKi8KKworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAhPSAxCisjZXJyb3Igam9pbi5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzCisjZW5kaWYKKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitTVFJJTkdMSUIoYnl0ZXNfam9pbikoUHlPYmplY3QgKnNlcCwgUHlPYmplY3QgKml0ZXJhYmxlKQoreworICAgIGNoYXIgKnNlcHN0ciA9IFNUUklOR0xJQl9TVFIoc2VwKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNlcGxlbiA9IFNUUklOR0xJQl9MRU4oc2VwKTsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBjaGFyICpwOworICAgIFB5X3NzaXplX3Qgc2VxbGVuID0gMDsKKyAgICBQeV9zc2l6ZV90IHN6ID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG5idWZzOworICAgIFB5T2JqZWN0ICpzZXEsICppdGVtOworICAgIFB5X2J1ZmZlciAqYnVmZmVycyA9IE5VTEw7CisjZGVmaW5lIE5CX1NUQVRJQ19CVUZGRVJTIDEwCisgICAgUHlfYnVmZmVyIHN0YXRpY19idWZmZXJzW05CX1NUQVRJQ19CVUZGRVJTXTsKKworICAgIHNlcSA9IFB5U2VxdWVuY2VfRmFzdChpdGVyYWJsZSwgImNhbiBvbmx5IGpvaW4gYW4gaXRlcmFibGUiKTsKKyAgICBpZiAoc2VxID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VxbGVuID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSk7CisgICAgaWYgKHNlcWxlbiA9PSAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhOVUxMLCAwKTsKKyAgICB9CisjaWZuZGVmIFNUUklOR0xJQl9NVVRBQkxFCisgICAgaWYgKHNlcWxlbiA9PSAxKSB7CisgICAgICAgIGl0ZW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCAwKTsKKyAgICAgICAgaWYgKFNUUklOR0xJQl9DSEVDS19FWEFDVChpdGVtKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIGlmIChzZXFsZW4gPiBOQl9TVEFUSUNfQlVGRkVSUykgeworICAgICAgICBidWZmZXJzID0gUHlNZW1fTkVXKFB5X2J1ZmZlciwgc2VxbGVuKTsKKyAgICAgICAgaWYgKGJ1ZmZlcnMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGJ1ZmZlcnMgPSBzdGF0aWNfYnVmZmVyczsKKyAgICB9CisKKyAgICAvKiBIZXJlIGlzIHRoZSBnZW5lcmFsIGNhc2UuICBEbyBhIHByZS1wYXNzIHRvIGZpZ3VyZSBvdXQgdGhlIHRvdGFsCisgICAgICogYW1vdW50IG9mIHNwYWNlIHdlJ2xsIG5lZWQgKHN6KSwgYW5kIHNlZSB3aGV0aGVyIGFsbCBhcmd1bWVudHMgYXJlCisgICAgICogYnVmZmVyLWNvbXBhdGlibGUuCisgICAgICovCisgICAgZm9yIChpID0gMCwgbmJ1ZnMgPSAwOyBpIDwgc2VxbGVuOyBpKyspIHsKKyAgICAgICAgUHlfc3NpemVfdCBpdGVtbGVuOworICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHNlcSwgaSk7CisgICAgICAgIGlmIChfZ2V0YnVmZmVyKGl0ZW0sICZidWZmZXJzW2ldKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNlcXVlbmNlIGl0ZW0gJXpkOiBleHBlY3RlZCBieXRlcywgYnl0ZWFycmF5LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGFuIG9iamVjdCB3aXRoIHRoZSBidWZmZXIgaW50ZXJmYWNlLCAlLjgwcyBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgaSwgUHlfVFlQRShpdGVtKS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG5idWZzID0gaSArIDE7ICAvKiBmb3IgZXJyb3IgY2xlYW51cCAqLworICAgICAgICBpdGVtbGVuID0gYnVmZmVyc1tpXS5sZW47CisgICAgICAgIGlmIChpdGVtbGVuID4gUFlfU1NJWkVfVF9NQVggLSBzeikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3ogKz0gaXRlbWxlbjsKKyAgICAgICAgaWYgKGkgIT0gMCkgeworICAgICAgICAgICAgaWYgKHNlcGxlbiA+IFBZX1NTSVpFX1RfTUFYIC0gc3opIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3ogKz0gc2VwbGVuOworICAgICAgICB9CisgICAgICAgIGlmIChzZXFsZW4gIT0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcXVlbmNlIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQWxsb2NhdGUgcmVzdWx0IHNwYWNlLiAqLworICAgIHJlcyA9IFNUUklOR0xJQl9ORVcoTlVMTCwgc3opOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIENhdGVuYXRlIGV2ZXJ5dGhpbmcuICovCisgICAgcCA9IFNUUklOR0xJQl9TVFIocmVzKTsKKyAgICBpZiAoIXNlcGxlbikgeworICAgICAgICAvKiBmYXN0IHBhdGggKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5idWZzOyBpKyspIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbiA9IGJ1ZmZlcnNbaV0ubGVuOworICAgICAgICAgICAgY2hhciAqcSA9IGJ1ZmZlcnNbaV0uYnVmOworICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOworICAgICAgICAgICAgcCArPSBuOworICAgICAgICB9CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG5idWZzOyBpKyspIHsKKyAgICAgICAgUHlfc3NpemVfdCBuOworICAgICAgICBjaGFyICpxOworICAgICAgICBpZiAoaSkgeworICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHNlcHN0ciwgc2VwbGVuKTsKKyAgICAgICAgICAgIHAgKz0gc2VwbGVuOworICAgICAgICB9CisgICAgICAgIG4gPSBidWZmZXJzW2ldLmxlbjsKKyAgICAgICAgcSA9IGJ1ZmZlcnNbaV0uYnVmOworICAgICAgICBQeV9NRU1DUFkocCwgcSwgbik7CisgICAgICAgIHAgKz0gbjsKKyAgICB9CisgICAgZ290byBkb25lOworCitlcnJvcjoKKyAgICByZXMgPSBOVUxMOworZG9uZToKKyAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmJ1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyc1tpXSk7CisgICAgaWYgKGJ1ZmZlcnMgIT0gc3RhdGljX2J1ZmZlcnMpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVycyk7CisgICAgcmV0dXJuIHJlczsKK30KKworI3VuZGVmIE5CX1NUQVRJQ19CVUZGRVJTCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9yZXBsYWNlLmggYi9PYmplY3RzL3N0cmluZ2xpYi9yZXBsYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYzMThlZAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3JlcGxhY2UuaApAQCAtMCwwICsxLDUzIEBACisvKiBzdHJpbmdsaWI6IHJlcGxhY2UgaW1wbGVtZW50YXRpb24gKi8KKworI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICisjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCisjZW5kaWYKKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitTVFJJTkdMSUIocmVwbGFjZV8xY2hhcl9pbnBsYWNlKShTVFJJTkdMSUJfQ0hBUiogcywgU1RSSU5HTElCX0NIQVIqIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdTEsIFB5X1VDUzQgdTIsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgKnMgPSB1MjsKKyAgICB3aGlsZSAoLS1tYXhjb3VudCAmJiArK3MgIT0gZW5kKSB7CisgICAgICAgIC8qIEZpbmQgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHJlcGxhY2VkLgorCisgICAgICAgICAgIElmIGl0IG9jY3VycyBvZnRlbiwgaXQgaXMgZmFzdGVyIHRvIHNjYW4gZm9yIGl0IHVzaW5nIGFuIGlubGluZQorICAgICAgICAgICBsb29wLiAgSWYgaXQgb2NjdXJzIHNlbGRvbSwgaXQgaXMgZmFzdGVyIHRvIHNjYW4gZm9yIGl0IHVzaW5nIGEKKyAgICAgICAgICAgZnVuY3Rpb24gY2FsbDsgdGhlIG92ZXJoZWFkIG9mIHRoZSBmdW5jdGlvbiBjYWxsIGlzIGFtb3J0aXplZAorICAgICAgICAgICBhY3Jvc3MgdGhlIG1hbnkgY2hhcmFjdGVycyB0aGF0IGNhbGwgY292ZXJzLiAgV2Ugc3RhcnQgd2l0aCBhbgorICAgICAgICAgICBpbmxpbmUgbG9vcCBhbmQgdXNlIGEgaGV1cmlzdGljIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGZhbGwgYmFjaworICAgICAgICAgICB0byBhIGZ1bmN0aW9uIGNhbGwuICovCisgICAgICAgIGlmICgqcyAhPSB1MSkgeworICAgICAgICAgICAgaW50IGF0dGVtcHRzID0gMTA7CisgICAgICAgICAgICAvKiBzZWFyY2ggdTEgaW4gYSBkdW1teSBsb29wICovCisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGlmICgrK3MgPT0gZW5kKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaWYgKCpzID09IHUxKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoIS0tYXR0ZW1wdHMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogaWYgdTEgd2FzIG5vdCBmb3VuZCBmb3IgYXR0ZW1wdHMgaXRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgdXNlIEZBU1RTRUFSQ0goKSBvciBtZW1jaHIoKSAqLworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgICAgICAgICAgICAgIHMrKzsKKyAgICAgICAgICAgICAgICAgICAgcyA9IG1lbWNocihzLCB1MSwgZW5kIC0gcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisjZWxzZQorICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIGNoMSA9IChTVFJJTkdMSUJfQ0hBUikgdTE7CisgICAgICAgICAgICAgICAgICAgIHMrKzsKKyAgICAgICAgICAgICAgICAgICAgaSA9IEZBU1RTRUFSQ0gocywgZW5kIC0gcywgJmNoMSwgMSwgMCwgRkFTVF9TRUFSQ0gpOworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHMgKz0gaTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAvKiByZXN0YXJ0IHRoZSBkdW1teSBsb29wICovCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqcyA9IHUyOworICAgIH0KK30KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaCBiL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaAppbmRleCA3YmI5MWE3Li5jZTI3ZjNlIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oCkBAIC0yMSw3ICsyMSw2IEBACiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORwogI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgX1B5Qnl0ZXNfUmVzaXplCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeUJ5dGVzX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeUJ5dGVzX0NoZWNrRXhhY3QKICNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oCmluZGV4IGU4YzZmY2IuLmNlMWViNTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmgKQEAgLTE5LDcgKzE5LDYgQEAKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAogI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgX1B5VW5pY29kZV9Gcm9tVUNTMQotI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmgKaW5kZXggNDVlNTcyOS4uZjkwMGNiNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaApAQCAtMTksNyArMTksNiBAQAogI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEKICNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICiAjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBfUHlVbmljb2RlX0Zyb21VQ1MyCi0jZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaAppbmRleCA2NDdhMjdlLi44NmE0ODBmIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oCkBAIC0xOSw3ICsxOSw2IEBACiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQQogI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKICNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIF9QeVVuaWNvZGVfRnJvbVVDUzQKLSNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjawogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuZGVmLmgKaW5kZXggMDMxMTdlYy4uZjlkM2YxZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCkBAIC02LDcgKzYsNiBAQAogI3VuZGVmICBTVFJJTkdMSUJfU1RSCiAjdW5kZWYgIFNUUklOR0xJQl9MRU4KICN1bmRlZiAgU1RSSU5HTElCX05FVwotI3VuZGVmICBTVFJJTkdMSUJfUkVTSVpFCiAjdW5kZWYgIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwogI3VuZGVmIFNUUklOR0xJQl9JU19VTklDT0RFCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCmluZGV4IGMxYzJjZjMuLmFlYzIyMWEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaApAQCAtNTQzLDcgKzU0Myw3IEBACiAKIHN0YXRpYyBpbnQKIHBhcnNlX2ZpZWxkKFN1YlN0cmluZyAqc3RyLCBTdWJTdHJpbmcgKmZpZWxkX25hbWUsIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICBQeV9VQ1M0ICpjb252ZXJzaW9uKQorICAgICAgICAgICAgaW50ICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIFB5X1VDUzQgKmNvbnZlcnNpb24pCiB7CiAgICAgLyogTm90ZSB0aGlzIGZ1bmN0aW9uIHdvcmtzIGlmIHRoZSBmaWVsZCBuYW1lIGlzIHplcm8gbGVuZ3RoLAogICAgICAgIHdoaWNoIGlzIGdvb2QuICBaZXJvIGxlbmd0aCBmaWVsZCBuYW1lcyBhcmUgaGFuZGxlZCBsYXRlciwgaW4KQEAgLTU2MSw2ICs1NjEsMTUgQEAKICAgICBmaWVsZF9uYW1lLT5zdGFydCA9IHN0ci0+c3RhcnQ7CiAgICAgd2hpbGUgKHN0ci0+c3RhcnQgPCBzdHItPmVuZCkgewogICAgICAgICBzd2l0Y2ggKChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHItPnN0ciwgc3RyLT5zdGFydCsrKSkpIHsKKyAgICAgICAgY2FzZSAneyc6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInVuZXhwZWN0ZWQgJ3snIGluIGZpZWxkIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgICAgIGZvciAoOyBzdHItPnN0YXJ0IDwgc3RyLT5lbmQ7IHN0ci0+c3RhcnQrKykKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihzdHItPnN0ciwgc3RyLT5zdGFydCkgPT0gJ10nKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjYXNlICd9JzoKICAgICAgICAgY2FzZSAnOic6CiAgICAgICAgIGNhc2UgJyEnOgogICAgICAgICAgICAgYnJlYWs7CkBAIC01NzAsNDEgKzU3OSw2MiBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnN0YXJ0IC0gMTsKICAgICBpZiAoYyA9PSAnIScgfHwgYyA9PSAnOicpIHsKKyAgICAgICAgUHlfc3NpemVfdCBjb3VudDsKICAgICAgICAgLyogd2UgaGF2ZSBhIGZvcm1hdCBzcGVjaWZpZXIgYW5kL29yIGEgY29udmVyc2lvbiAqLwogICAgICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSBsYXN0IGNoYXJhY3RlciAqLwotICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnN0YXJ0LTE7Ci0KLSAgICAgICAgLyogdGhlIGZvcm1hdCBzcGVjaWZpZXIgaXMgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAqLwotICAgICAgICBmb3JtYXRfc3BlYy0+c3RyID0gc3RyLT5zdHI7Ci0gICAgICAgIGZvcm1hdF9zcGVjLT5zdGFydCA9IHN0ci0+c3RhcnQ7Ci0gICAgICAgIGZvcm1hdF9zcGVjLT5lbmQgPSBzdHItPmVuZDsKIAogICAgICAgICAvKiBzZWUgaWYgdGhlcmUncyBhIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCiAgICAgICAgIGlmIChjID09ICchJykgewogICAgICAgICAgICAgLyogdGhlcmUgbXVzdCBiZSBhbm90aGVyIGNoYXJhY3RlciBwcmVzZW50ICovCi0gICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnN0YXJ0ID49IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgIGlmIChzdHItPnN0YXJ0ID49IHN0ci0+ZW5kKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQgb2YgZm9ybWF0IHdoaWxlIGxvb2tpbmcgZm9yIGNvbnZlcnNpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kIG9mIHN0cmluZyB3aGlsZSBsb29raW5nIGZvciBjb252ZXJzaW9uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKmNvbnZlcnNpb24gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGZvcm1hdF9zcGVjLT5zdHIsIGZvcm1hdF9zcGVjLT5zdGFydCsrKTsKKyAgICAgICAgICAgICpjb252ZXJzaW9uID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHItPnN0ciwgc3RyLT5zdGFydCsrKTsKIAotICAgICAgICAgICAgLyogaWYgdGhlcmUgaXMgYW5vdGhlciBjaGFyYWN0ZXIsIGl0IG11c3QgYmUgYSBjb2xvbiAqLwotICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5zdGFydCA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKLSAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYy0+c3RyLCBmb3JtYXRfc3BlYy0+c3RhcnQrKyk7CisgICAgICAgICAgICBpZiAoc3RyLT5zdGFydCA8IHN0ci0+ZW5kKSB7CisgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLT5zdHIsIHN0ci0+c3RhcnQrKyk7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ30nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICBpZiAoYyAhPSAnOicpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJzonIGFmdGVyIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAnOicgYWZ0ZXIgY29udmVyc2lvbiBzcGVjaWZpZXIiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGZvcm1hdF9zcGVjLT5zdHIgPSBzdHItPnN0cjsKKyAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0ID0gc3RyLT5zdGFydDsKKyAgICAgICAgY291bnQgPSAxOworICAgICAgICB3aGlsZSAoc3RyLT5zdGFydCA8IHN0ci0+ZW5kKSB7CisgICAgICAgICAgICBzd2l0Y2ggKChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHItPnN0ciwgc3RyLT5zdGFydCsrKSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ3snOgorICAgICAgICAgICAgICAgICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcgPSAxOworICAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICd9JzoKKyAgICAgICAgICAgICAgICBjb3VudC0tOworICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5lbmQgPSBzdHItPnN0YXJ0IC0gMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5tYXRjaGVkICd7JyBpbiBmb3JtYXQgc3BlYyIpOworICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICAvKiBlbmQgb2Ygc3RyaW5nLCB0aGVyZSdzIG5vIGZvcm1hdF9zcGVjIG9yIGNvbnZlcnNpb24gKi8KLSAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5zdGFydDsKKyAgICBlbHNlIGlmIChjICE9ICd9JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4cGVjdGVkICd9JyBiZWZvcmUgZW5kIG9mIHN0cmluZyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTYzOCwxMCArNjY4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgUHlfVUNTNCAqY29udmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgaW50ICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpCiB7Ci0gICAgaW50IGF0X2VuZCwgaGl0X2Zvcm1hdF9zcGVjOworICAgIGludCBhdF9lbmQ7CiAgICAgUHlfVUNTNCBjID0gMDsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwotICAgIGludCBjb3VudDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgbWFya3VwX2ZvbGxvd3MgPSAwOwogCkBAIC03MTMsNTAgKzc0MiwxMiBAQAogICAgIGlmICghbWFya3VwX2ZvbGxvd3MpCiAgICAgICAgIHJldHVybiAyOwogCi0gICAgLyogdGhpcyBpcyBtYXJrdXAsIGZpbmQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGJ5IGNvdW50aW5nIG5lc3RlZAotICAgICAgIGJyYWNlcy4gIG5vdGUgdGhhdCB0aGlzIHByb2hpYml0cyBlc2NhcGVkIGJyYWNlcywgc28gdGhhdAotICAgICAgIGZvcm1hdF9zcGVjcyBjYW5ub3QgaGF2ZSBicmFjZXMgaW4gdGhlbS4gKi8KKyAgICAvKiB0aGlzIGlzIG1hcmt1cDsgcGFyc2UgdGhlIGZpZWxkICovCiAgICAgKmZpZWxkX3ByZXNlbnQgPSAxOwotICAgIGNvdW50ID0gMTsKLQotICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwotCi0gICAgLyogd2Uga25vdyB3ZSBjYW4ndCBoYXZlIGEgemVybyBsZW5ndGggc3RyaW5nLCBzbyBkb24ndCB3b3JyeQotICAgICAgIGFib3V0IHRoYXQgY2FzZSAqLwotICAgIGhpdF9mb3JtYXRfc3BlYyA9IDA7Ci0gICAgd2hpbGUgKHNlbGYtPnN0ci5zdGFydCA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5zdHIuc3RhcnQrKykpIHsKLSAgICAgICAgY2FzZSAnOic6Ci0gICAgICAgICAgICBoaXRfZm9ybWF0X3NwZWMgPSAxOwotICAgICAgICAgICAgY291bnQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3snOgotICAgICAgICAgICAgLyogdGhlIGZvcm1hdCBzcGVjIG5lZWRzIHRvIGJlIHJlY3Vyc2l2ZWx5IGV4cGFuZGVkLgotICAgICAgICAgICAgICAgdGhpcyBpcyBhbiBvcHRpbWl6YXRpb24sIGFuZCBub3Qgc3RyaWN0bHkgbmVlZGVkICovCi0gICAgICAgICAgICBpZiAoaGl0X2Zvcm1hdF9zcGVjKQotICAgICAgICAgICAgICAgICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcgPSAxOwotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd9JzoKLSAgICAgICAgICAgIGNvdW50LS07Ci0gICAgICAgICAgICBpZiAoY291bnQgPD0gMCkgewotICAgICAgICAgICAgICAgIC8qIHdlJ3JlIGRvbmUuICBwYXJzZSBhbmQgZ2V0IG91dCAqLwotICAgICAgICAgICAgICAgIFN1YlN0cmluZyBzOwotCi0gICAgICAgICAgICAgICAgU3ViU3RyaW5nX2luaXQoJnMsIHNlbGYtPnN0ci5zdHIsIHN0YXJ0LCBzZWxmLT5zdHIuc3RhcnQgLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VfZmllbGQoJnMsIGZpZWxkX25hbWUsIGZvcm1hdF9zcGVjLCBjb252ZXJzaW9uKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICAgICAgICAgIC8qIHN1Y2Nlc3MgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogZW5kIG9mIHN0cmluZyB3aGlsZSBzZWFyY2hpbmcgZm9yIG1hdGNoaW5nICd9JyAqLwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5tYXRjaGVkICd7JyBpbiBmb3JtYXQiKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIXBhcnNlX2ZpZWxkKCZzZWxmLT5zdHIsIGZpZWxkX25hbWUsIGZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBjb252ZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDI7CiB9CiAKIApAQCAtODc1LDI1ICs4NjYsMTkgQEAKICAgICBTdWJTdHJpbmcgbGl0ZXJhbDsKICAgICBTdWJTdHJpbmcgZmllbGRfbmFtZTsKICAgICBTdWJTdHJpbmcgZm9ybWF0X3NwZWM7Ci0gICAgUHlfVUNTNCBjb252ZXJzaW9uLCBtYXhjaGFyOwotICAgIFB5X3NzaXplX3Qgc3VibGVuOwotICAgIGludCBlcnI7CisgICAgUHlfVUNTNCBjb252ZXJzaW9uOwogCiAgICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXRlciwgaW5wdXQtPnN0ciwgaW5wdXQtPnN0YXJ0LCBpbnB1dC0+ZW5kKTsKICAgICB3aGlsZSAoKHJlc3VsdCA9IE1hcmt1cEl0ZXJhdG9yX25leHQoJml0ZXIsICZsaXRlcmFsLCAmZmllbGRfcHJlc2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpZWxkX25hbWUsICZmb3JtYXRfc3BlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpKSA9PSAyKSB7Ci0gICAgICAgIHN1YmxlbiA9IGxpdGVyYWwuZW5kIC0gbGl0ZXJhbC5zdGFydDsKLSAgICAgICAgaWYgKHN1YmxlbikgewotICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIobGl0ZXJhbC5zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsLnN0YXJ0LCBsaXRlcmFsLmVuZCk7Ci0gICAgICAgICAgICBlcnIgPSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdWJsZW4sIG1heGNoYXIpOwotICAgICAgICAgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgaWYgKGxpdGVyYWwuZW5kICE9IGxpdGVyYWwuc3RhcnQpIHsKKyAgICAgICAgICAgIGlmICghZmllbGRfcHJlc2VudCAmJiBpdGVyLnN0ci5zdGFydCA9PSBpdGVyLnN0ci5lbmQpCisgICAgICAgICAgICAgICAgd3JpdGVyLT5vdmVyYWxsb2NhdGUgPSAwOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdWJzdHJpbmcod3JpdGVyLCBsaXRlcmFsLnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWwuc3RhcnQsIGxpdGVyYWwuZW5kKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsLnN0ciwgbGl0ZXJhbC5zdGFydCwgc3VibGVuKTsKLSAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IHN1YmxlbjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmaWVsZF9wcmVzZW50KSB7CkBAIC05MTgsNyArOTAzLDYgQEAKICAgICAgICAgICAgICBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKLSAgICBQeV9zc2l6ZV90IG1pbmxlbjsKIAogICAgIC8qIGNoZWNrIHRoZSByZWN1cnNpb24gbGV2ZWwgKi8KICAgICBpZiAocmVjdXJzaW9uX2RlcHRoIDw9IDApIHsKQEAgLTkyNyw4ICs5MTEsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBtaW5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dC0+c3RyKSArIDEwMDsKLSAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgbWlubGVuKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dC0+c3RyKSArIDEwMDsKIAogICAgIGlmICghZG9fbWFya3VwKGlucHV0LCBhcmdzLCBrd2FyZ3MsICZ3cml0ZXIsIHJlY3Vyc2lvbl9kZXB0aCwKICAgICAgICAgICAgICAgICAgICBhdXRvX251bWJlcikpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCmluZGV4IGYxNmYyMWUuLjQ4ZDAwZWMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaApAQCAtMjEsNyArMjEsNiBAQAogI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUKICNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Vbmljb2RlCi0jZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBQeVVuaWNvZGVfUmVzaXplCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKICNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RydWN0c2VxLmMgYi9PYmplY3RzL3N0cnVjdHNlcS5jCmluZGV4IGMzYjlhNzIuLjY2NDM0NGIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RydWN0c2VxLmMKKysrIGIvT2JqZWN0cy9zdHJ1Y3RzZXEuYwpAQCAtMTEsMTcgKzExLDIwIEBACiAvKiBGaWVsZHMgd2l0aCB0aGlzIG5hbWUgaGF2ZSBvbmx5IGEgZmllbGQgaW5kZXgsIG5vdCBhIGZpZWxkIG5hbWUuCiAgICBUaGV5IGFyZSBvbmx5IGFsbG93ZWQgZm9yIGluZGljZXMgPCBuX3Zpc2libGVfZmllbGRzLiAqLwogY2hhciAqUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQgPSAidW5uYW1lZCBmaWVsZCI7CitfUHlfSURFTlRJRklFUihuX3NlcXVlbmNlX2ZpZWxkcyk7CitfUHlfSURFTlRJRklFUihuX2ZpZWxkcyk7CitfUHlfSURFTlRJRklFUihuX3VubmFtZWRfZmllbGRzKTsKIAogI2RlZmluZSBWSVNJQkxFX1NJWkUob3ApIFB5X1NJWkUob3ApCiAjZGVmaW5lIFZJU0lCTEVfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAotICAgICAgICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtU3RyaW5nKCh0cCktPnRwX2RpY3QsIHZpc2libGVfbGVuZ3RoX2tleSkpCisgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl9zZXF1ZW5jZV9maWVsZHMpKQogCiAjZGVmaW5lIFJFQUxfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAotICAgICAgICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtU3RyaW5nKCh0cCktPnRwX2RpY3QsIHJlYWxfbGVuZ3RoX2tleSkpCisgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl9maWVsZHMpKQogI2RlZmluZSBSRUFMX1NJWkUob3ApIFJFQUxfU0laRV9UUChQeV9UWVBFKG9wKSkKIAogI2RlZmluZSBVTk5BTUVEX0ZJRUxEU19UUCh0cCkgUHlMb25nX0FzTG9uZyggXAotICAgICAgICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtU3RyaW5nKCh0cCktPnRwX2RpY3QsIHVubmFtZWRfZmllbGRzX2tleSkpCisgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl91bm5hbWVkX2ZpZWxkcykpCiAjZGVmaW5lIFVOTkFNRURfRklFTERTKG9wKSBVTk5BTUVEX0ZJRUxEU19UUChQeV9UWVBFKG9wKSkKIAogCkBAIC01OSw3ICs2Miw3IEBACiBzdHJ1Y3RzZXFfZGVhbGxvYyhQeVN0cnVjdFNlcXVlbmNlICpvYmopCiB7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwotICAgIAorCiAgICAgc2l6ZSA9IFJFQUxfU0laRShvYmopOwogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgUHlfWERFQ1JFRihvYmotPm9iX2l0ZW1baV0pOwpAQCAtMjMwLDggKzIzMyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3RydWN0c2VxX3JlZHVjZShQeVN0cnVjdFNlcXVlbmNlKiBzZWxmKQogewotICAgIFB5T2JqZWN0KiB0dXA7Ci0gICAgUHlPYmplY3QqIGRpY3Q7CisgICAgUHlPYmplY3QqIHR1cCA9IE5VTEw7CisgICAgUHlPYmplY3QqIGRpY3QgPSBOVUxMOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgUHlfc3NpemVfdCBuX2ZpZWxkcywgbl92aXNpYmxlX2ZpZWxkcywgbl91bm5hbWVkX2ZpZWxkczsKICAgICBpbnQgaTsKQEAgLTI0MCwxNSArMjQzLDEyIEBACiAgICAgbl92aXNpYmxlX2ZpZWxkcyA9IFZJU0lCTEVfU0laRShzZWxmKTsKICAgICBuX3VubmFtZWRfZmllbGRzID0gVU5OQU1FRF9GSUVMRFMoc2VsZik7CiAgICAgdHVwID0gUHlUdXBsZV9OZXcobl92aXNpYmxlX2ZpZWxkcyk7Ci0gICAgaWYgKCF0dXApIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICghdHVwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIWRpY3QpIHsKLSAgICAgICAgUHlfREVDUkVGKHR1cCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBpZiAoIWRpY3QpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbl92aXNpYmxlX2ZpZWxkczsgaSsrKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5vYl9pdGVtW2ldKTsKQEAgLTI1Nyw4ICsyNTcsOCBAQAogCiAgICAgZm9yICg7IGkgPCBuX2ZpZWxkczsgaSsrKSB7CiAgICAgICAgIGNoYXIgKm4gPSBQeV9UWVBFKHNlbGYpLT50cF9tZW1iZXJzW2ktbl91bm5hbWVkX2ZpZWxkc10ubmFtZTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbVtpXSk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCBuLCBzZWxmLT5vYl9pdGVtW2ldKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIihPKE9PKSkiLCBQeV9UWVBFKHNlbGYpLCB0dXAsIGRpY3QpOwpAQCAtMjY3LDYgKzI2NywxMSBAQAogICAgIFB5X0RFQ1JFRihkaWN0KTsKIAogICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYodHVwKTsKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgc3RydWN0c2VxX21ldGhvZHNbXSA9IHsKQEAgLTMxNSwxMiArMzIwLDEzIEBACiAgICAgc3RydWN0c2VxX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKLXZvaWQKLVB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgKmRlc2MpCitpbnQKK1B5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjICpkZXNjKQogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5TWVtYmVyRGVmKiBtZW1iZXJzOwogICAgIGludCBuX21lbWJlcnMsIG5fdW5uYW1lZF9tZW1iZXJzLCBpLCBrOworICAgIFB5T2JqZWN0ICp2OwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIC8qIGlmIHRoZSB0eXBlIG9iamVjdCB3YXMgY2hhaW5lZCwgdW5jaGFpbiBpdCBmaXJzdApAQCAtMzQyLDggKzM0OCwxMCBAQAogICAgIHR5cGUtPnRwX2RvYyA9IGRlc2MtPmRvYzsKIAogICAgIG1lbWJlcnMgPSBQeU1lbV9ORVcoUHlNZW1iZXJEZWYsIG5fbWVtYmVycy1uX3VubmFtZWRfbWVtYmVycysxKTsKLSAgICBpZiAobWVtYmVycyA9PSBOVUxMKQotICAgICAgICByZXR1cm47CisgICAgaWYgKG1lbWJlcnMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgZm9yIChpID0gayA9IDA7IGkgPCBuX21lbWJlcnM7ICsraSkgewogICAgICAgICBpZiAoZGVzYy0+ZmllbGRzW2ldLm5hbWUgPT0gUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQpCkBAIC0zNjEsMzAgKzM2OSw1NiBAQAogICAgIHR5cGUtPnRwX21lbWJlcnMgPSBtZW1iZXJzOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0lOQ1JFRih0eXBlKTsKIAogICAgIGRpY3QgPSB0eXBlLT50cF9kaWN0OwogI2RlZmluZSBTRVRfRElDVF9GUk9NX0lOVChrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7ICAgICAgICAgICAgXAotICAgICAgICBpZiAodiAhPSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIGtleSwgdik7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAodiA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCBrZXksIHYpIDwgMCkgeyAgICAgICAgICAgXAogICAgICAgICAgICAgUHlfREVDUkVGKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAgICAgU0VUX0RJQ1RfRlJPTV9JTlQodmlzaWJsZV9sZW5ndGhfa2V5LCBkZXNjLT5uX2luX3NlcXVlbmNlKTsKICAgICBTRVRfRElDVF9GUk9NX0lOVChyZWFsX2xlbmd0aF9rZXksIG5fbWVtYmVycyk7CiAgICAgU0VUX0RJQ1RfRlJPTV9JTlQodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5U3RydWN0U2VxdWVuY2VfRGVzYyAqZGVzYykKK3sKKyAgICAodm9pZClQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMih0eXBlLCBkZXNjKTsKIH0KIAogUHlUeXBlT2JqZWN0KgogUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlKFB5U3RydWN0U2VxdWVuY2VfRGVzYyAqZGVzYykKIHsKLSAgICBQeVR5cGVPYmplY3QgKnJlc3VsdCA9IChQeVR5cGVPYmplY3QqKVB5VHlwZV9HZW5lcmljQWxsb2MoJlB5VHlwZV9UeXBlLCAwKTsKLSAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZShyZXN1bHQsIGRlc2MpOworICAgIFB5VHlwZU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gKFB5VHlwZU9iamVjdCopUHlUeXBlX0dlbmVyaWNBbGxvYygmUHlUeXBlX1R5cGUsIDApOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKHJlc3VsdCwgZGVzYykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKworaW50IF9QeVN0cnVjdFNlcXVlbmNlX0luaXQodm9pZCkKK3sKKyAgICBpZiAoX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfbl9zZXF1ZW5jZV9maWVsZHMpID09IE5VTEwKKyAgICAgICAgfHwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfbl9maWVsZHMpID09IE5VTEwKKyAgICAgICAgfHwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfbl91bm5hbWVkX2ZpZWxkcykgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggZWMzZjkxYi4uNTI4OTZiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtMzIyLDYgKzMyMiw5IEBACiAKICAgICAgMTA4MjUyNywgMTE2NTA0OSwgMTA4MjUzMSwgMTE2NTA1NywgMTI0NzU4MSwgMTMzMDEwMywgMTA4MjUzMywKICAgICAgMTMzMDExMSwgMTQxMjYzMywgMTE2NTA2OSwgMTI0NzU5OSwgMTQ5NTE3NywgMTU3NzY5OQorCisgICBUZXN0cyBoYXZlIHNob3duIHRoYXQgaXQncyBub3Qgd29ydGggdG8gY2FjaGUgdGhlIGhhc2ggdmFsdWUsIHNlZQorICAgaXNzdWUgIzk2ODUuCiAqLwogCiBzdGF0aWMgUHlfaGFzaF90CkBAIC05MjcsNyArOTMwLDcgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBsb25nIGl0X2luZGV4OworICAgIFB5X3NzaXplX3QgaXRfaW5kZXg7CiAgICAgUHlUdXBsZU9iamVjdCAqaXRfc2VxOyAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSB0dXBsZWl0ZXJvYmplY3Q7CiAKQEAgLTk4NSw3ICs5ODgsNyBAQAogdHVwbGVpdGVyX3JlZHVjZSh0dXBsZWl0ZXJvYmplY3QgKml0KQogewogICAgIGlmIChpdC0+aXRfc2VxKQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7CkBAIC05OTQsNyArOTk3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0dXBsZWl0ZXJfc2V0c3RhdGUodHVwbGVpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQogewotICAgIGxvbmcgaW5kZXggPSBQeUxvbmdfQXNMb25nKHN0YXRlKTsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CiAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggYTU1ZDk3Ny4uM2ZmNDJkYSAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTczNiw2ICs3MzYsMTMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiB0eXBlX2NhbGwoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKyNlbmRpZgorCiAgICAgb2JqID0gdHlwZS0+dHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOwogICAgIGlmIChvYmogIT0gTlVMTCkgewogICAgICAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLApAQCAtNzUwLDEwICs3NTcsMTIgQEAKICAgICAgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gb2JqOwogICAgICAgICB0eXBlID0gUHlfVFlQRShvYmopOwotICAgICAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBOVUxMICYmCi0gICAgICAgICAgICB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcykgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgICAgIG9iaiA9IE5VTEw7CisgICAgICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7CisgICAgICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIG9iaiA9IE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG9iajsKQEAgLTkxMiw2ICs5MjEsNyBAQAogICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2U7CiAgICAgZGVzdHJ1Y3RvciBiYXNlZGVhbGxvYzsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGludCBoYXNfZmluYWxpemVyOwogCiAgICAgLyogRXh0cmFjdCB0aGUgdHlwZTsgd2UgZXhwZWN0IGl0IHRvIGJlIGEgaGVhcCB0eXBlICovCiAgICAgdHlwZSA9IFB5X1RZUEUoc2VsZik7CkBAIC05MjcsNiArOTM3LDEwIEBACiAgICAgICAgICAgIGNsZWFyX3Nsb3RzKCksIG9yIERFQ1JFRiB0aGUgZGljdCwgb3IgY2xlYXIgd2Vha3JlZnMuICovCiAKICAgICAgICAgLyogTWF5YmUgY2FsbCBmaW5hbGl6ZXI7IGV4aXQgZWFybHkgaWYgcmVzdXJyZWN0ZWQgKi8KKyAgICAgICAgaWYgKHR5cGUtPnRwX2ZpbmFsaXplKSB7CisgICAgICAgICAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKHNlbGYpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgaWYgKHR5cGUtPnRwX2RlbCkgewogICAgICAgICAgICAgdHlwZS0+dHBfZGVsKHNlbGYpOwogICAgICAgICAgICAgaWYgKHNlbGYtPm9iX3JlZmNudCA+IDApCkBAIC05NzgsMjUgKzk5MiwzNiBAQAogICAgICAgICBhc3NlcnQoYmFzZSk7CiAgICAgfQogCi0gICAgLyogSWYgd2UgYWRkZWQgYSB3ZWFrbGlzdCwgd2UgY2xlYXIgaXQuICAgICAgRG8gdGhpcyAqYmVmb3JlKiBjYWxsaW5nCi0gICAgICAgdGhlIGZpbmFsaXplciAoX19kZWxfXyksIGNsZWFyaW5nIHNsb3RzLCBvciBjbGVhcmluZyB0aGUgaW5zdGFuY2UKLSAgICAgICBkaWN0LiAqLworICAgIGhhc19maW5hbGl6ZXIgPSB0eXBlLT50cF9maW5hbGl6ZSB8fCB0eXBlLT50cF9kZWw7CiAKKyAgICAvKiBNYXliZSBjYWxsIGZpbmFsaXplcjsgZXhpdCBlYXJseSBpZiByZXN1cnJlY3RlZCAqLworICAgIGlmIChoYXNfZmluYWxpemVyKQorICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0soc2VsZik7CisKKyAgICBpZiAodHlwZS0+dHBfZmluYWxpemUpIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhzZWxmKSA8IDApIHsKKyAgICAgICAgICAgIC8qIFJlc3VycmVjdGVkICovCisgICAgICAgICAgICBnb3RvIGVuZGxhYmVsOworICAgICAgICB9CisgICAgfQorICAgIC8qIElmIHdlIGFkZGVkIGEgd2Vha2xpc3QsIHdlIGNsZWFyIGl0LiAgICAgIERvIHRoaXMgKmJlZm9yZSogY2FsbGluZworICAgICAgIHRwX2RlbCwgY2xlYXJpbmcgc2xvdHMsIG9yIGNsZWFyaW5nIHRoZSBpbnN0YW5jZSBkaWN0LiAqLwogICAgIGlmICh0eXBlLT50cF93ZWFrbGlzdG9mZnNldCAmJiAhYmFzZS0+dHBfd2Vha2xpc3RvZmZzZXQpCiAgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoc2VsZik7CiAKLSAgICAvKiBNYXliZSBjYWxsIGZpbmFsaXplcjsgZXhpdCBlYXJseSBpZiByZXN1cnJlY3RlZCAqLwogICAgIGlmICh0eXBlLT50cF9kZWwpIHsKLSAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKHNlbGYpOwogICAgICAgICB0eXBlLT50cF9kZWwoc2VsZik7Ci0gICAgICAgIGlmIChzZWxmLT5vYl9yZWZjbnQgPiAwKQotICAgICAgICAgICAgZ290byBlbmRsYWJlbDsgICAgICAgICAgICAgIC8qIHJlc3VycmVjdGVkICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgICAgICBpZiAoc2VsZi0+b2JfcmVmY250ID4gMCkgeworICAgICAgICAgICAgLyogUmVzdXJyZWN0ZWQgKi8KKyAgICAgICAgICAgIGdvdG8gZW5kbGFiZWw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGhhc19maW5hbGl6ZXIpIHsKKyAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CiAgICAgICAgIC8qIE5ldyB3ZWFrcmVmcyBjb3VsZCBiZSBjcmVhdGVkIGR1cmluZyB0aGUgZmluYWxpemVyIGNhbGwuCi0gICAgICAgICAgICBJZiB0aGlzIG9jY3VycywgY2xlYXIgdGhlbSBvdXQgd2l0aG91dCBjYWxsaW5nIHRoZWlyCi0gICAgICAgICAgICBmaW5hbGl6ZXJzIHNpbmNlIHRoZXkgbWlnaHQgcmVseSBvbiBwYXJ0IG9mIHRoZSBvYmplY3QKLSAgICAgICAgICAgIGJlaW5nIGZpbmFsaXplZCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiAqLworICAgICAgICAgICBJZiB0aGlzIG9jY3VycywgY2xlYXIgdGhlbSBvdXQgd2l0aG91dCBjYWxsaW5nIHRoZWlyCisgICAgICAgICAgIGZpbmFsaXplcnMgc2luY2UgdGhleSBtaWdodCByZWx5IG9uIHBhcnQgb2YgdGhlIG9iamVjdAorICAgICAgICAgICBiZWluZyBmaW5hbGl6ZWQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4gKi8KICAgICAgICAgaWYgKHR5cGUtPnRwX3dlYWtsaXN0b2Zmc2V0ICYmICFiYXNlLT50cF93ZWFrbGlzdG9mZnNldCkgewogICAgICAgICAgICAgLyogTW9kZWxlZCBhZnRlciBHRVRfV0VBS1JFRlNfTElTVFBUUigpICovCiAgICAgICAgICAgICBQeVdlYWtSZWZlcmVuY2UgKipsaXN0ID0gKFB5V2Vha1JlZmVyZW5jZSAqKikgXApAQCAtMTQ1Niw4ICsxNDgxLDEwIEBACiAgICAgICAgdGhhdCBpcyBub3QgaW5jbHVkZWQgaW4gYWNjLgogICAgICovCiAgICAgcmVtYWluID0gKGludCAqKVB5TWVtX01BTExPQyhTSVpFT0ZfSU5UKnRvX21lcmdlX3NpemUpOwotICAgIGlmIChyZW1haW4gPT0gTlVMTCkKKyAgICBpZiAocmVtYWluID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBmb3IgKGkgPSAwOyBpIDwgdG9fbWVyZ2Vfc2l6ZTsgaSsrKQogICAgICAgICByZW1haW5baV0gPSAwOwogCkBAIC0xNDg5LDcgKzE1MTYsNyBAQAogICAgICAgICB9CiAgICAgICAgIG9rID0gUHlMaXN0X0FwcGVuZChhY2MsIGNhbmRpZGF0ZSk7CiAgICAgICAgIGlmIChvayA8IDApIHsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUocmVtYWluKTsKKyAgICAgICAgICAgIFB5TWVtX0ZSRUUocmVtYWluKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG9fbWVyZ2Vfc2l6ZTsgaisrKSB7CkBAIC0xOTQ5LDcgKzE5NzYsNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLWxvbmcKK3Vuc2lnbmVkIGxvbmcKIFB5VHlwZV9HZXRGbGFncyhQeVR5cGVPYmplY3QgKnR5cGUpCiB7CiAgICAgcmV0dXJuIHR5cGUtPnRwX2ZsYWdzOwpAQCAtMjIyMCw3ICsyMjQ3LDcgQEAKIAogICAgIC8qIEluaXRpYWxpemUgdHBfZmxhZ3MgKi8KICAgICB0eXBlLT50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEVBUFRZUEUgfAotICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFOworICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFOwogICAgIGlmIChiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19IQVZFX0dDOwogCkBAIC0yMjkwLDggKzIzMTcsMTAgQEAKICAgICAgICAgICAgIC8qIFNpbGVudGx5IHRydW5jYXRlIHRoZSBkb2NzdHJpbmcgaWYgaXQgY29udGFpbnMgbnVsbCBieXRlcy4gKi8KICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihkb2Nfc3RyKTsKICAgICAgICAgICAgIHRwX2RvYyA9IChjaGFyICopUHlPYmplY3RfTUFMTE9DKGxlbiArIDEpOwotICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgZG9jX3N0ciwgbGVuICsgMSk7CiAgICAgICAgICAgICB0eXBlLT50cF9kb2MgPSB0cF9kb2M7CiAgICAgICAgIH0KQEAgLTI0MTEsNyArMjQ0MCw3IEBACiAgICAgY2hhciAqczsKICAgICBjaGFyICpyZXNfc3RhcnQgPSAoY2hhciopcmVzOwogICAgIFB5VHlwZV9TbG90ICpzbG90OwotICAgIAorCiAgICAgLyogU2V0IHRoZSB0eXBlIG5hbWUgYW5kIHF1YWxuYW1lICovCiAgICAgcyA9IHN0cnJjaHIoc3BlYy0+bmFtZSwgJy4nKTsKICAgICBpZiAocyA9PSBOVUxMKQpAQCAtMjQzMiw3ICsyNDYxLDcgQEAKICAgICB0eXBlLT50cF9uYW1lID0gc3BlYy0+bmFtZTsKICAgICBpZiAoIXR5cGUtPnRwX25hbWUpCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAKKwogICAgIC8qIEFkanVzdCBmb3IgZW1wdHkgdHVwbGUgYmFzZXMgKi8KICAgICBpZiAoIWJhc2VzKSB7CiAgICAgICAgIGJhc2UgPSAmUHlCYXNlT2JqZWN0X1R5cGU7CkBAIC0yNDk0LDggKzI1MjMsMTAgQEAKICAgICAgICAgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfZG9jKSB7CiAgICAgICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKHNsb3QtPnBmdW5jKSsxOwogICAgICAgICAgICAgY2hhciAqdHBfZG9jID0gUHlPYmplY3RfTUFMTE9DKGxlbik7Ci0gICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpCisgICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1lbWNweSh0cF9kb2MsIHNsb3QtPnBmdW5jLCBsZW4pOwogICAgICAgICAgICAgdHlwZS0+dHBfZG9jID0gdHBfZG9jOwogICAgICAgICB9CkBAIC0yNTE2LDcgKzI1NDcsNyBAQAogICAgIC8qIFNldCB0eXBlLl9fbW9kdWxlX18gKi8KICAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOwogICAgIGlmIChzICE9IE5VTEwpCi0gICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIAorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLAogICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpKTsKIApAQCAtMzMyMyw3ICszMzU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICJfX2NsYXNzX18gYXNzaWdubWVudDogb25seSBmb3IgaGVhcCB0eXBlcyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmIChjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KG5ld3RvLCBvbGR0bywgIl9fY2xhc3NfXyIpKSB7CisgICAgaWYgKGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQob2xkdG8sIG5ld3RvLCAiX19jbGFzc19fIikpIHsKICAgICAgICAgUHlfSU5DUkVGKG5ld3RvKTsKICAgICAgICAgUHlfVFlQRShzZWxmKSA9IG5ld3RvOwogICAgICAgICBQeV9ERUNSRUYob2xkdG8pOwpAQCAtMzY2OSwxNiArMzcwMCw5IEBACiAgICAgICAgIC8qIElzc3VlIDc5OTQ6IElmIHdlJ3JlIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcsIHdlCiAgICAgICAgICAgIHNob3VsZCByZWplY3QgZm9ybWF0IHNwZWNpZmljYXRpb25zICovCiAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykgPiAwKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKSB7Ci0gICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIEV2ZW50dWFsbHkgdGhpcyB3aWxsIGJlY29tZSBhbiBlcnJvcjoKLSAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgIm5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIHBhc3NlZCB0byBvYmplY3QuX19mb3JtYXRfXyIpOwotICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogCiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOwpAQCAtMzgzMyw3ICszODU3LDcgQEAKICAgICAgICAgICAgIGRlc2NyID0gUHlEZXNjcl9OZXdDbGFzc01ldGhvZCh0eXBlLCBtZXRoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChtZXRoLT5tbF9mbGFncyAmIE1FVEhfU1RBVElDKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqY2Z1bmMgPSBQeUNGdW5jdGlvbl9OZXcobWV0aCwgKFB5T2JqZWN0Kil0eXBlKTsKKyAgICAgICAgICBQeU9iamVjdCAqY2Z1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChtZXRoLCAoUHlPYmplY3QqKXR5cGUsIE5VTEwpOwogICAgICAgICAgICAgaWYgKGNmdW5jID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgZGVzY3IgPSBQeVN0YXRpY01ldGhvZF9OZXcoY2Z1bmMpOwpAQCAtNDEwMyw2ICs0MTI3LDEwIEBACiAgICAgICAgIENPUFlTTE9UKHRwX2luaXQpOwogICAgICAgICBDT1BZU0xPVCh0cF9hbGxvYyk7CiAgICAgICAgIENPUFlTTE9UKHRwX2lzX2djKTsKKyAgICAgICAgaWYgKCh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSkgJiYKKyAgICAgICAgICAgIChiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSkpIHsKKyAgICAgICAgICAgIENPUFlTTE9UKHRwX2ZpbmFsaXplKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IQVZFX0dDKSA9PQogICAgICAgICAgICAgKGJhc2UtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IQVZFX0dDKSkgewogICAgICAgICAgICAgLyogVGhleSBhZ3JlZSBhYm91dCBnYy4gKi8KQEAgLTQyNTUsMTEgKzQyODMsMTUgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwogICAgICAgICAgICAgaWYgKGRvYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fLCBkb2MpOworICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18sIGRvYykgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRvYyk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRihkb2MpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fZG9jX18sIFB5X05vbmUpOworICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19kb2NfXywgUHlfTm9uZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzMDMsMTMgKzQzMzUsMTEgQEAKICAgICAvKiBXYXJuIGZvciBhIHR5cGUgdGhhdCBpbXBsZW1lbnRzIHRwX2NvbXBhcmUgKG5vdyBrbm93biBhcwogICAgICAgIHRwX3Jlc2VydmVkKSBidXQgbm90IHRwX3JpY2hjb21wYXJlLiAqLwogICAgIGlmICh0eXBlLT50cF9yZXNlcnZlZCAmJiAhdHlwZS0+dHBfcmljaGNvbXBhcmUpIHsKLSAgICAgICAgaW50IGVycm9yOwotICAgICAgICBlcnJvciA9IFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgIlR5cGUgJS4xMDBzIGRlZmluZXMgdHBfcmVzZXJ2ZWQgKGZvcm1lcmx5IHRwX2NvbXBhcmUpICIKICAgICAgICAgICAgICJidXQgbm90IHRwX3JpY2hjb21wYXJlLiBDb21wYXJpc29ucyBtYXkgbm90IGJlaGF2ZSBhcyBpbnRlbmRlZC4iLAogICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGlmIChlcnJvciA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgLyogQWxsIGRvbmUgLS0gc2V0IHRoZSByZWFkeSBmbGFnICovCkBAIC00MzM4LDYgKzQzNjgsOCBAQAogICAgIH0KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGxpc3QpKTsKICAgICBuZXdvYmogPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKXR5cGUsIE5VTEwpOworICAgIGlmIChuZXdvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIGkgPSBQeUxpc3RfR0VUX1NJWkUobGlzdCk7CiAgICAgd2hpbGUgKC0taSA+PSAwKSB7CiAgICAgICAgIHJlZiA9IFB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKTsKQEAgLTQ3MjUsNiArNDc1NywxOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgord3JhcF9kZWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCB2b2lkICp3cmFwcGVkKQoreworICAgIGRlc3RydWN0b3IgZnVuYyA9IChkZXN0cnVjdG9yKXdyYXBwZWQ7CisKKyAgICBpZiAoIWNoZWNrX251bV9hcmdzKGFyZ3MsIDApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICgqZnVuYykoc2VsZik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiB3cmFwX3JpY2hjbXBmdW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgdm9pZCAqd3JhcHBlZCwgaW50IG9wKQogewogICAgIHJpY2hjbXBmdW5jIGZ1bmMgPSAocmljaGNtcGZ1bmMpd3JhcHBlZDsKQEAgLTQ5MDMsNyArNDk0Nyw3IEBACiAKICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19uZXdfXykgIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ldyh0cF9uZXdfbWV0aG9kZGVmLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgodHBfbmV3X21ldGhvZGRlZiwgKFB5T2JqZWN0ICopdHlwZSwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fLCBmdW5jKSkgewpAQCAtNTI4MSwyOSArNTMyNSwxMiBAQAogICAgIF9QeV9JREVOVElGSUVSKF9fc3RyX18pOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zdHJfXyk7Ci0gICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgIGlmIChmdW5jID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogUHlPYmplY3QgKnJlc3M7ICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJlcyA9IHNsb3RfdHBfcmVwcihzZWxmKTsKLSAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogWFhYIHRoaXMgaXMgbm9uLXNlbnNpY2FsLiBXaHkgc2hvdWxkIHdlIHJldHVybgotICAgICAgICAgICBhIGJ5dGVzIG9iamVjdCBmcm9tIF9fc3RyX18uIElzIHRoaXMgY29kZSBldmVuCi0gICAgICAgICAgIHVzZWQ/IC0gbXZsICovCi0gICAgICAgIGFzc2VydCgwKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgLyoKLSAgICAgICAgcmVzcyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhyZXMpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3M7Ci0gICAgICAgICovCi0gICAgfQotfQogCiBzdGF0aWMgUHlfaGFzaF90CiBzbG90X3RwX2hhc2goUHlPYmplY3QgKnNlbGYpCkBAIC01NjIyLDE2ICs1NjQ5LDEyIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1zbG90X3RwX2RlbChQeU9iamVjdCAqc2VsZikKK3Nsb3RfdHBfZmluYWxpemUoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgX1B5X0lERU5USUZJRVIoX19kZWxfXyk7CiAgICAgUHlPYmplY3QgKmRlbCwgKnJlczsKICAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwogCi0gICAgLyogVGVtcG9yYXJpbHkgcmVzdXJyZWN0IHRoZSBvYmplY3QuICovCi0gICAgYXNzZXJ0KHNlbGYtPm9iX3JlZmNudCA9PSAwKTsKLSAgICBzZWxmLT5vYl9yZWZjbnQgPSAxOwotCiAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKIApAQCAtNTY0OCwzNyArNTY3MSw2IEBACiAKICAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCiAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKLQotICAgIC8qIFVuZG8gdGhlIHRlbXBvcmFyeSByZXN1cnJlY3Rpb247IGNhbid0IHVzZSBERUNSRUYgaGVyZSwgaXQgd291bGQKLSAgICAgKiBjYXVzZSBhIHJlY3Vyc2l2ZSBjYWxsLgotICAgICAqLwotICAgIGFzc2VydChzZWxmLT5vYl9yZWZjbnQgPiAwKTsKLSAgICBpZiAoLS1zZWxmLT5vYl9yZWZjbnQgPT0gMCkKLSAgICAgICAgcmV0dXJuOyAgICAgICAgIC8qIHRoaXMgaXMgdGhlIG5vcm1hbCBwYXRoIG91dCAqLwotCi0gICAgLyogX19kZWxfXyByZXN1cnJlY3RlZCBpdCEgIE1ha2UgaXQgbG9vayBsaWtlIHRoZSBvcmlnaW5hbCBQeV9ERUNSRUYKLSAgICAgKiBuZXZlciBoYXBwZW5lZC4KLSAgICAgKi8KLSAgICB7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVmY250ID0gc2VsZi0+b2JfcmVmY250OwotICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKHNlbGYpOwotICAgICAgICBzZWxmLT5vYl9yZWZjbnQgPSByZWZjbnQ7Ci0gICAgfQotICAgIGFzc2VydCghUHlUeXBlX0lTX0dDKFB5X1RZUEUoc2VsZikpIHx8Ci0gICAgICAgICAgIF9QeV9BU19HQyhzZWxmKS0+Z2MuZ2NfcmVmcyAhPSBfUHlHQ19SRUZTX1VOVFJBQ0tFRCk7Ci0gICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCi0gICAgICogd2UgbmVlZCB0byB1bmRvIHRoYXQuICovCi0gICAgX1B5X0RFQ19SRUZUT1RBTDsKLSAgICAvKiBJZiBQeV9UUkFDRV9SRUZTLCBfUHlfTmV3UmVmZXJlbmNlIHJlLWFkZGVkIHNlbGYgdG8gdGhlIG9iamVjdAotICAgICAqIGNoYWluLCBzbyBubyBtb3JlIHRvIGRvIHRoZXJlLgotICAgICAqIElmIENPVU5UX0FMTE9DUywgdGhlIG9yaWdpbmFsIGRlY3JlZiBidW1wZWQgdHBfZnJlZXMsIGFuZAotICAgICAqIF9QeV9OZXdSZWZlcmVuY2UgYnVtcGVkIHRwX2FsbG9jczogIGJvdGggb2YgdGhvc2UgbmVlZCB0byBiZQotICAgICAqIHVuZG9uZS4KLSAgICAgKi8KLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICAtLVB5X1RZUEUoc2VsZiktPnRwX2ZyZWVzOwotICAgIC0tUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzOwotI2VuZGlmCiB9CiAKIApAQCAtNTc4Nyw3ICs1Nzc5LDcgQEAKICAgICAgICAgICAgInNlZSBoZWxwKHR5cGUoeCkpIGZvciBzaWduYXR1cmUiLAogICAgICAgICAgICBQeVdyYXBwZXJGbGFnX0tFWVdPUkRTKSwKICAgICBUUFNMT1QoIl9fbmV3X18iLCB0cF9uZXcsIHNsb3RfdHBfbmV3LCBOVUxMLCAiIiksCi0gICAgVFBTTE9UKCJfX2RlbF9fIiwgdHBfZGVsLCBzbG90X3RwX2RlbCwgTlVMTCwgIiIpLAorICAgIFRQU0xPVCgiX19kZWxfXyIsIHRwX2ZpbmFsaXplLCBzbG90X3RwX2ZpbmFsaXplLCAod3JhcHBlcmZ1bmMpd3JhcF9kZWwsICIiKSwKIAogICAgIEJJTlNMT1QoIl9fYWRkX18iLCBuYl9hZGQsIHNsb3RfbmJfYWRkLAogICAgICAgICAiKyIpLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCA0NDBkMzVhLi4yZjQzN2Y2IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtNDcsMTQgKzQ3LDYgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAotLyogRW5kaWFubmVzcyBzd2l0Y2hlczsgZGVmYXVsdHMgdG8gbGl0dGxlIGVuZGlhbiAqLwotCi0jaWZkZWYgV09SRFNfQklHRU5ESUFOCi0jIGRlZmluZSBCWVRFT1JERVJfSVNfQklHX0VORElBTgotI2Vsc2UKLSMgZGVmaW5lIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0jZW5kaWYKLQogLyogLS0tIEdsb2JhbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE5PVEU6IEluIHRoZSBpbnRlcnByZXRlcidzIGluaXRpYWxpemF0aW9uIHBoYXNlLCBzb21lIGdsb2JhbHMgYXJlIGN1cnJlbnRseQpAQCAtMTMwLDE2ICsxMjIsMTQgQEAKIC8qIHRydWUgaWYgdGhlIFVuaWNvZGUgb2JqZWN0IGhhcyBhbiBhbGxvY2F0ZWQgVVRGLTggbWVtb3J5IGJsb2NrCiAgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCiAjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKLSAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgKCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApICAgICAgICAgICAgICAgICAgIFwKICAgICAgICYmIF9QeVVuaWNvZGVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgJiYgX1B5VW5pY29kZV9VVEY4KG9wKSAhPSBQeVVuaWNvZGVfREFUQShvcCkpKQogCiAvKiB0cnVlIGlmIHRoZSBVbmljb2RlIG9iamVjdCBoYXMgYW4gYWxsb2NhdGVkIHdzdHIgbWVtb3J5IGJsb2NrCiAgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCiAjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKLSAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoX1B5VW5pY29kZV9XU1RSKG9wKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChfUHlVbmljb2RlX1dTVFIob3ApICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICghUHlVbmljb2RlX0lTX1JFQURZKG9wKSB8fCAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIF9QeVVuaWNvZGVfV1NUUihvcCkgIT0gUHlVbmljb2RlX0RBVEEob3ApKSkpCiAKQEAgLTE5OSw2ICsxODksMTAgQEAKICAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpOworCiAvKiBMaXN0IG9mIHN0YXRpYyBzdHJpbmdzLiAqLwogc3RhdGljIF9QeV9JZGVudGlmaWVyICpzdGF0aWNfc3RyaW5ncyA9IE5VTEw7CiAKQEAgLTQyNyw4ICs0MjEsNiBAQAogI2lmbmRlZiBQeV9ERUJVRwogICAgIFB5X3NzaXplX3QgbGVuOwogCi0gICAgYXNzZXJ0KFB5X1JFRkNOVCh1bmljb2RlKSA9PSAxKTsKLQogICAgIGxlbiA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CiAgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTQ0NSwxMCArNDM3LDEyIEBACiAgICAgfQogCiAgICAgaWYgKF9QeVVuaWNvZGVfUmVhZHkodW5pY29kZSkgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYodW5pY29kZSk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2Vsc2UKKyAgICBhc3NlcnQoUHlfUkVGQ05UKHVuaWNvZGUpID09IDEpOworCiAgICAgLyogZG9uJ3QgbWFrZSB0aGUgcmVzdWx0IHJlYWR5IGluIGRlYnVnIG1vZGUgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxlcgogICAgICAgIG1ha2VzIHRoZSBzdHJpbmcgcmVhZHkgYmVmb3JlIHVzaW5nIGl0ICovCiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CkBAIC00NzEsNyArNDY1LDkgQEAKICAgICB9CiAKICAgICBpZiAobGVuZ3RoID09IDEpIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgMCk7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOwogICAgICAgICBpZiAoY2ggPCAyNTYpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpsYXRpbjFfY2hhciA9IHVuaWNvZGVfbGF0aW4xW2NoXTsKICAgICAgICAgICAgIGlmIChsYXRpbjFfY2hhciAhPSBOVUxMKSB7CkBAIC01NDQsNyArNTQwLDYgQEAKIAogc3RhdGljIEJMT09NX01BU0sgYmxvb21fbGluZWJyZWFrID0gfihCTE9PTV9NQVNLKTA7CiAKLSNkZWZpbmUgQkxPT01fQUREKG1hc2ssIGNoKSAoKG1hc2sgfD0gKDFVTCA8PCAoKGNoKSAmIChCTE9PTV9XSURUSCAtIDEpKSkpKQogI2RlZmluZSBCTE9PTShtYXNrLCBjaCkgICAgICgobWFzayAmICAoMVVMIDw8ICgoY2gpICYgKEJMT09NX1dJRFRIIC0gMSkpKSkpCiAKICNkZWZpbmUgQkxPT01fTElORUJSRUFLKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTU1NCwyMSArNTQ5LDQwIEBACiBQeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKIG1ha2VfYmxvb21fbWFzayhpbnQga2luZCwgdm9pZCogcHRyLCBQeV9zc2l6ZV90IGxlbikKIHsKKyNkZWZpbmUgQkxPT01fVVBEQVRFKFRZUEUsIE1BU0ssIFBUUiwgTEVOKSAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBUWVBFICpkYXRhID0gKFRZUEUgKilQVFI7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgVFlQRSAqZW5kID0gZGF0YSArIExFTjsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X1VDUzQgY2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKDsgZGF0YSAhPSBlbmQ7IGRhdGErKykgeyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNoID0gKmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBNQVNLIHw9ICgxVUwgPDwgKGNoICYgKEJMT09NX1dJRFRIIC0gMSkpKTsgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKwogICAgIC8qIGNhbGN1bGF0ZSBzaW1wbGUgYmxvb20tc3R5bGUgYml0bWFzayBmb3IgYSBnaXZlbiB1bmljb2RlIHN0cmluZyAqLwogCiAgICAgQkxPT01fTUFTSyBtYXNrOwotICAgIFB5X3NzaXplX3QgaTsKIAogICAgIG1hc2sgPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgQkxPT01fQUREKG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIHB0ciwgaSkpOwotCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgQkxPT01fVVBEQVRFKFB5X1VDUzEsIG1hc2ssIHB0ciwgbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgQkxPT01fVVBEQVRFKFB5X1VDUzIsIG1hc2ssIHB0ciwgbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgQkxPT01fVVBEQVRFKFB5X1VDUzQsIG1hc2ssIHB0ciwgbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KICAgICByZXR1cm4gbWFzazsKLX0KIAotI2RlZmluZSBCTE9PTV9NRU1CRVIobWFzaywgY2hyLCBzdHIpIFwKLSAgICAoQkxPT00obWFzaywgY2hyKSBcCi0gICAgICYmIChQeVVuaWNvZGVfRmluZENoYXIoc3RyLCBjaHIsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksIDEpID49IDApKQorI3VuZGVmIEJMT09NX1VQREFURQorfQogCiAvKiBDb21waWxhdGlvbiBvZiB0ZW1wbGF0ZWQgcm91dGluZXMgKi8KIApAQCAtNTg4LDYgKzYwMiw3IEBACiAjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcmVwbGFjZS5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKQEAgLTU5OCw2ICs2MTMsNyBAQAogI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3JlcGxhY2UuaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCkBAIC02MDgsNiArNjI0LDcgQEAKICNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9yZXBsYWNlLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKICNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgpAQCAtNjU0LDYgKzY3MSwyNSBAQAogICAgIH0KIH0KIAorI2lmZGVmIFB5X0RFQlVHCisvKiBGaWxsIHRoZSBkYXRhIG9mIGFuIFVuaWNvZGUgc3RyaW5nIHdpdGggaW52YWxpZCBjaGFyYWN0ZXJzIHRvIGRldGVjdCBidWdzCisgICBlYXJsaWVyLgorCisgICBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSBkZXRlY3RzIGludmFsaWQgY2hhcmFjdGVycywgYXQgbGVhc3QgZm9yCisgICBBU0NJSSBhbmQgVUNTLTQgc3RyaW5ncy4gVSswMEZGIGlzIGludmFsaWQgaW4gQVNDSUkgYW5kIFUrRkZGRkZGRkYgaXMgYW4KKyAgIGludmFsaWQgY2hhcmFjdGVyIGluIFVuaWNvZGUgNi4wLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfZmlsbF9pbnZhbGlkKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IG9sZF9sZW5ndGgpCit7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBQeV9VQ1MxICpkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgUHlfc3NpemVfdCBsZW5ndGggPSBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuZ3RoIDw9IG9sZF9sZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAgICBtZW1zZXQoZGF0YSArIG9sZF9sZW5ndGggKiBraW5kLCAweGZmLCAobGVuZ3RoIC0gb2xkX2xlbmd0aCkgKiBraW5kKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QqCiByZXNpemVfY29tcGFjdChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCiB7CkBAIC02NjIsNiArNjk4LDEwIEBACiAgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKICAgICBpbnQgc2hhcmVfd3N0cjsKICAgICBQeU9iamVjdCAqbmV3X3VuaWNvZGU7CisjaWZkZWYgUHlfREVCVUcKKyAgICBQeV9zc2l6ZV90IG9sZF9sZW5ndGggPSBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKyNlbmRpZgorCiAgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSk7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKQEAgLTcwMSw2ICs3NDEsOSBAQAogICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICB1bmljb2RlX2ZpbGxfaW52YWxpZCh1bmljb2RlLCBvbGRfbGVuZ3RoKTsKKyNlbmRpZgogICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgMCk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CkBAIC03MTksNiArNzYyLDkgQEAKICAgICAgICAgUHlfc3NpemVfdCBjaGFyX3NpemU7CiAgICAgICAgIGludCBzaGFyZV93c3RyLCBzaGFyZV91dGY4OwogICAgICAgICB2b2lkICpkYXRhOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIFB5X3NzaXplX3Qgb2xkX2xlbmd0aCA9IF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworI2VuZGlmCiAKICAgICAgICAgZGF0YSA9IF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSk7CiAgICAgICAgIGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwpAQCAtNzU0LDYgKzgwMCw5IEBACiAgICAgICAgIH0KICAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CiAgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgZGF0YSwgbGVuZ3RoLCAwKTsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICB1bmljb2RlX2ZpbGxfaW52YWxpZCh1bmljb2RlLCBvbGRfbGVuZ3RoKTsKKyNlbmRpZgogICAgICAgICBpZiAoc2hhcmVfd3N0ciB8fCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPT0gTlVMTCkgewogICAgICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTgwNiw4ICs4NTUsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGNvcHlfbGVuZ3RoID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKICAgICAgICAgY29weV9sZW5ndGggPSBQeV9NSU4oY29weV9sZW5ndGgsIGxlbmd0aCk7Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShfUHlVbmljb2RlX1dTVFIodyksIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfbGVuZ3RoKTsKKyAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgY29weV9sZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gdzsKICAgICB9CiB9CkBAIC0xMDc4LDExICsxMTI3LDcgQEAKICAgICAgICAgfQogICAgIH0KICNpZmRlZiBQeV9ERUJVRwotICAgIC8qIEZpbGwgdGhlIGRhdGEgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMgdG8gZGV0ZWN0IGJ1Z3MgZWFybGllci4KLSAgICAgICBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSBkZXRlY3RzIGludmFsaWQgY2hhcmFjdGVycywKLSAgICAgICBhdCBsZWFzdCBmb3IgQVNDSUkgYW5kIFVDUy00IHN0cmluZ3MuIFUrMDBGRiBpcyBpbnZhbGlkIGluIEFTQ0lJCi0gICAgICAgYW5kIFUrRkZGRkZGRkYgaXMgYW4gaW52YWxpZCBjaGFyYWN0ZXIgaW4gVW5pY29kZSA2LjAuICovCi0gICAgbWVtc2V0KGRhdGEsIDB4ZmYsIHNpemUgKiBraW5kKTsKKyAgICB1bmljb2RlX2ZpbGxfaW52YWxpZCgoUHlPYmplY3QqKXVuaWNvZGUsIDApOwogI2VuZGlmCiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgoUHlPYmplY3QqKXVuaWNvZGUsIDApKTsKICAgICByZXR1cm4gb2JqOwpAQCAtMTY0NCwzOCArMTY4OSw2IEBACiAgICAgcmV0dXJuIHVuaWNvZGVfcmVzaXplKHBfdW5pY29kZSwgbGVuZ3RoKTsKIH0KIAotc3RhdGljIGludAotdW5pY29kZV93aWRlbihQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhjaGFyKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSgqcF91bmljb2RlKSk7Ci0gICAgYXNzZXJ0KGxlbmd0aCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcF91bmljb2RlKSk7Ci0gICAgaWYgKG1heGNoYXIgPD0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKCpwX3VuaWNvZGUpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KFB5VW5pY29kZV9HRVRfTEVOR1RIKCpwX3VuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y2hhcik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCAwLCAqcF91bmljb2RlLCAwLCBsZW5ndGgpOwotICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKLSAgICAqcF91bmljb2RlID0gcmVzdWx0OwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci11bmljb2RlX3B1dGNoYXIoUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgKnBvcywKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoKQotewotICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgaWYgKHVuaWNvZGVfd2lkZW4ocF91bmljb2RlLCAqcG9zLCBjaCkgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKCpwX3VuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQSgqcF91bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgKCpwb3MpKyssIGNoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogLyogQ29weSBhIEFTQ0lJIG9yIGxhdGluMSBjaGFyKiBzdHJpbmcgaW50byBhIFB5dGhvbiBVbmljb2RlIHN0cmluZy4KIAogICAgV0FSTklORzogVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY29weSB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIgYW5kCkBAIC0xNjkyLDYgKzE3MDUsMTQgQEAKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7CiAgICAgICAgIGFzc2VydChpbmRleCArIGxlbiA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlfVUNTNCBtYXhjaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKAorICAgICAgICAgICAgICAgIChjb25zdCBQeV9VQ1MxKilzdHIsCisgICAgICAgICAgICAgICAgKGNvbnN0IFB5X1VDUzEqKXN0ciArIGxlbik7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8IDEyOCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBtZW1jcHkoKGNoYXIgKikgZGF0YSArIGluZGV4LCBzdHIsIGxlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE5MzcsMTMgKzE5NTgsMTcgQEAKICAgICBhc3NlcnQoc2l6ZSA+IDApOwogICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IHVbMF07CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogICAgICAgICBpZiAoY2ggPCAyNTYpCiAgICAgICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKWNoKTsKIAogICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXMpLCBQeVVuaWNvZGVfREFUQShyZXMpLCAwLCBjaCk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIDAsIGNoKTsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CkBAIC0xOTczLDEzICsxOTk4LDE3IEBACiAgICAgYXNzZXJ0KHNpemUgPiAwKTsKICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSB1WzBdOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKGNoIDwgMjU2KQogICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CiAKICAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCAwLCBjaCk7CiAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQpAQCAtMjI3OCwxNiArMjMwNyw5IEBACiAKIHN0YXRpYyB2b2lkCiBtYWtlZm10KGNoYXIgKmZtdCwgaW50IGxvbmdmbGFnLCBpbnQgbG9uZ2xvbmdmbGFnLCBpbnQgc2l6ZV90ZmxhZywKLSAgICAgICAgaW50IHplcm9wYWQsIGludCB3aWR0aCwgaW50IHByZWNpc2lvbiwgY2hhciBjKQorICAgICAgICBjaGFyIGMpCiB7CiAgICAgKmZtdCsrID0gJyUnOwotICAgIGlmICh3aWR0aCkgewotICAgICAgICBpZiAoemVyb3BhZCkKLSAgICAgICAgICAgICpmbXQrKyA9ICcwJzsKLSAgICAgICAgZm10ICs9IHNwcmludGYoZm10LCAiJWQiLCB3aWR0aCk7Ci0gICAgfQotICAgIGlmIChwcmVjaXNpb24pCi0gICAgICAgIGZtdCArPSBzcHJpbnRmKGZtdCwgIi4lZCIsIHByZWNpc2lvbik7CiAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAqZm10KysgPSAnbCc7CiAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKSB7CkBAIC0yMzEyLDQ0ICsyMzM0LDEzOSBAQAogICAgICpmbXQgPSAnXDAnOwogfQogCi0vKiBoZWxwZXIgZm9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpICovCisvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KKyAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAorICAgcGx1cyAxIGZvciB0aGUgc2lnbi4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLworI2RlZmluZSBNQVhfTE9OR19MT05HX0NIQVJTICgyICsgKFNJWkVPRl9MT05HX0xPTkcqNTMtMSkgLyAyMikKKworc3RhdGljIGludAordW5pY29kZV9mcm9tZm9ybWF0X3dyaXRlX3N0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgd2lkdGgsIFB5X3NzaXplX3QgcHJlY2lzaW9uKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBmaWxsLCBhcmdsZW47CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGlmICgocHJlY2lzaW9uID09IC0xIHx8IHByZWNpc2lvbiA+PSBsZW5ndGgpCisgICAgICAgICYmIHdpZHRoIDw9IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBzdHIpOworCisgICAgaWYgKHByZWNpc2lvbiAhPSAtMSkKKyAgICAgICAgbGVuZ3RoID0gUHlfTUlOKHByZWNpc2lvbiwgbGVuZ3RoKTsKKworICAgIGFyZ2xlbiA9IFB5X01BWChsZW5ndGgsIHdpZHRoKTsKKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cikgPiB3cml0ZXItPm1heGNoYXIpCisgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHN0ciwgMCwgbGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1heGNoYXIgPSB3cml0ZXItPm1heGNoYXI7CisKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgYXJnbGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKHdpZHRoID4gbGVuZ3RoKSB7CisgICAgICAgIGZpbGwgPSB3aWR0aCAtIGxlbmd0aDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9GaWxsKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgZmlsbCwgJyAnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gZmlsbDsKKyAgICB9CisKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCAwLCBsZW5ndGgpOworICAgIHdyaXRlci0+cG9zICs9IGxlbmd0aDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordW5pY29kZV9mcm9tZm9ybWF0X3dyaXRlX2NzdHIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBjb25zdCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHdpZHRoLCBQeV9zc2l6ZV90IHByZWNpc2lvbikKK3sKKyAgICAvKiBVVEYtOCAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGludCByZXM7CisKKyAgICBsZW5ndGggPSBzdHJsZW4oc3RyKTsKKyAgICBpZiAocHJlY2lzaW9uICE9IC0xKQorICAgICAgICBsZW5ndGggPSBQeV9NSU4obGVuZ3RoLCBwcmVjaXNpb24pOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHN0ciwgbGVuZ3RoLCAicmVwbGFjZSIsIE5VTEwpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJlcyA9IHVuaWNvZGVfZnJvbWZvcm1hdF93cml0ZV9zdHIod3JpdGVyLCB1bmljb2RlLCB3aWR0aCwgLTEpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gcmVzOworfQogCiBzdGF0aWMgY29uc3QgY2hhcioKLXBhcnNlX2Zvcm1hdF9mbGFncyhjb25zdCBjaGFyICpmLAotICAgICAgICAgICAgICAgICAgIGludCAqcF93aWR0aCwgaW50ICpwX3ByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICBpbnQgKnBfbG9uZ2ZsYWcsIGludCAqcF9sb25nbG9uZ2ZsYWcsIGludCAqcF9zaXplX3RmbGFnKQordW5pY29kZV9mcm9tZm9ybWF0X2FyZyhfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmYsIHZhX2xpc3QgKnZhcmdzKQogewotICAgIGludCB3aWR0aCwgcHJlY2lzaW9uLCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IHplcm9wYWQ7CisgICAgUHlfc3NpemVfdCB3aWR0aDsKKyAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKKyAgICBpbnQgbG9uZ2ZsYWc7CisgICAgaW50IGxvbmdsb25nZmxhZzsKKyAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICBQeV9zc2l6ZV90IGZpbGw7CisKKyAgICBwID0gZjsKKyAgICBmKys7CisgICAgemVyb3BhZCA9IDA7CisgICAgaWYgKCpmID09ICcwJykgeworICAgICAgICB6ZXJvcGFkID0gMTsKKyAgICAgICAgZisrOworICAgIH0KIAogICAgIC8qIHBhcnNlIHRoZSB3aWR0aC5wcmVjaXNpb24gcGFydCwgZS5nLiAiJTIuNXMiID0+IHdpZHRoPTIsIHByZWNpc2lvbj01ICovCi0gICAgZisrOwotICAgIHdpZHRoID0gMDsKLSAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICB3aWR0aCA9ICh3aWR0aCoxMCkgKyAqZisrIC0gJzAnOwotICAgIHByZWNpc2lvbiA9IDA7CisgICAgd2lkdGggPSAtMTsKKyAgICBpZiAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKSB7CisgICAgICAgIHdpZHRoID0gKmYgLSAnMCc7CisgICAgICAgIGYrKzsKKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkgeworICAgICAgICAgICAgaWYgKHdpZHRoID4gKFBZX1NTSVpFX1RfTUFYIC0gKChpbnQpKmYgLSAnMCcpKSAvIDEwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCB0b28gYmlnIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aWR0aCA9ICh3aWR0aCAqIDEwKSArICgqZiAtICcwJyk7CisgICAgICAgICAgICBmKys7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJlY2lzaW9uID0gLTE7CiAgICAgaWYgKCpmID09ICcuJykgewogICAgICAgICBmKys7Ci0gICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICBwcmVjaXNpb24gPSAocHJlY2lzaW9uKjEwKSArICpmKysgLSAnMCc7CisgICAgICAgIGlmIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpIHsKKyAgICAgICAgICAgIHByZWNpc2lvbiA9ICgqZiAtICcwJyk7CisgICAgICAgICAgICBmKys7CisgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWNpc2lvbiA+IChQWV9TU0laRV9UX01BWCAtICgoaW50KSpmIC0gJzAnKSkgLyAxMCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjaXNpb24gdG9vIGJpZyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gKHByZWNpc2lvbiAqIDEwKSArICgqZiAtICcwJyk7CisgICAgICAgICAgICAgICAgZisrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKICAgICAgICAgICAgIC8qICIlLjMlcyIgPT4gZiBwb2ludHMgdG8gIjMiICovCiAgICAgICAgICAgICBmLS07CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCpmID09ICdcMCcpIHsKLSAgICAgICAgLyogYm9ndXMgZm9ybWF0ICIlLjEiID0+IGdvIGJhY2t3YXJkLCBmIHBvaW50cyB0byAiMSIgKi8KKyAgICAgICAgLyogYm9ndXMgZm9ybWF0ICIlLjEyMyIgPT4gZ28gYmFja3dhcmQsIGYgcG9pbnRzIHRvICIzIiAqLwogICAgICAgICBmLS07CiAgICAgfQotICAgIGlmIChwX3dpZHRoICE9IE5VTEwpCi0gICAgICAgICpwX3dpZHRoID0gd2lkdGg7Ci0gICAgaWYgKHBfcHJlY2lzaW9uICE9IE5VTEwpCi0gICAgICAgICpwX3ByZWNpc2lvbiA9IHByZWNpc2lvbjsKIAogICAgIC8qIEhhbmRsZSAlbGQsICVsdSwgJWxsZCBhbmQgJWxsdS4gKi8KICAgICBsb25nZmxhZyA9IDA7CiAgICAgbG9uZ2xvbmdmbGFnID0gMDsKICAgICBzaXplX3RmbGFnID0gMDsKLQogICAgIGlmICgqZiA9PSAnbCcpIHsKICAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSB7CiAgICAgICAgICAgICBsb25nZmxhZyA9IDE7CkBAIC0yMzY4LDQ5OSArMjQ4NSwyODkgQEAKICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7CiAgICAgICAgICsrZjsKICAgICB9Ci0gICAgaWYgKHBfbG9uZ2ZsYWcgIT0gTlVMTCkKLSAgICAgICAgKnBfbG9uZ2ZsYWcgPSBsb25nZmxhZzsKLSAgICBpZiAocF9sb25nbG9uZ2ZsYWcgIT0gTlVMTCkKLSAgICAgICAgKnBfbG9uZ2xvbmdmbGFnID0gbG9uZ2xvbmdmbGFnOwotICAgIGlmIChwX3NpemVfdGZsYWcgIT0gTlVMTCkKLSAgICAgICAgKnBfc2l6ZV90ZmxhZyA9IHNpemVfdGZsYWc7CisKKyAgICBpZiAoZlsxXSA9PSAnXDAnKQorICAgICAgICB3cml0ZXItPm92ZXJhbGxvY2F0ZSA9IDA7CisKKyAgICBzd2l0Y2ggKCpmKSB7CisgICAgY2FzZSAnYyc6CisgICAgeworICAgICAgICBpbnQgb3JkaW5hbCA9IHZhX2FyZygqdmFyZ3MsIGludCk7CisgICAgICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgYXJndW1lbnQgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKHdyaXRlciwgb3JkaW5hbCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgJ2knOgorICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ3UnOgorICAgIGNhc2UgJ3gnOgorICAgIHsKKyAgICAgICAgLyogdXNlZCBieSBzcHJpbnRmICovCisgICAgICAgIGNoYXIgZm10WzEwXTsgLyogc2hvdWxkIGJlIGVub3VnaCBmb3IgIiUwbGxkXDAiICovCisgICAgICAgIGNoYXIgYnVmZmVyW01BWF9MT05HX0xPTkdfQ0hBUlNdOworICAgICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKKworICAgICAgICBpZiAoKmYgPT0gJ3UnKSB7CisgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgKmYpOworCisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGludCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCpmID09ICd4JykgeworICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsICd4Jyk7CisgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LCB2YV9hcmcoKnZhcmdzLCBpbnQpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCAqZik7CisKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFBZX0xPTkdfTE9ORykpOworI2VuZGlmCisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBQeV9zc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGludCkpOworICAgICAgICB9CisgICAgICAgIGFzc2VydChsZW4gPj0gMCk7CisKKyAgICAgICAgaWYgKHByZWNpc2lvbiA8IGxlbikKKyAgICAgICAgICAgIHByZWNpc2lvbiA9IGxlbjsKKworICAgICAgICBhcmdsZW4gPSBQeV9NQVgocHJlY2lzaW9uLCB3aWR0aCk7CisgICAgICAgIGFzc2VydCh1Y3MxbGliX2ZpbmRfbWF4X2NoYXIoKFB5X1VDUzEqKWJ1ZmZlciwgKFB5X1VDUzEqKWJ1ZmZlciArIGxlbikgPD0gMTI3KTsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIGFyZ2xlbiwgMTI3KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmICh3aWR0aCA+IHByZWNpc2lvbikgeworICAgICAgICAgICAgUHlfVUNTNCBmaWxsY2hhcjsKKyAgICAgICAgICAgIGZpbGwgPSB3aWR0aCAtIHByZWNpc2lvbjsKKyAgICAgICAgICAgIGZpbGxjaGFyID0gemVyb3BhZD8nMCc6JyAnOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9GaWxsKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgZmlsbCwgZmlsbGNoYXIpID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgd3JpdGVyLT5wb3MgKz0gZmlsbDsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJlY2lzaW9uID4gbGVuKSB7CisgICAgICAgICAgICBmaWxsID0gcHJlY2lzaW9uIC0gbGVuOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9GaWxsKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgZmlsbCwgJzAnKSA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IGZpbGw7CisgICAgICAgIH0KKworICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLCBidWZmZXIsIGxlbik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAncCc6CisgICAgeworICAgICAgICBjaGFyIG51bWJlcltNQVhfTE9OR19MT05HX0NIQVJTXTsKKworICAgICAgICBsZW4gPSBzcHJpbnRmKG51bWJlciwgIiVwIiwgdmFfYXJnKCp2YXJncywgdm9pZCopKTsKKyAgICAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKKworICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLworICAgICAgICBpZiAobnVtYmVyWzFdID09ICdYJykKKyAgICAgICAgICAgIG51bWJlclsxXSA9ICd4JzsKKyAgICAgICAgZWxzZSBpZiAobnVtYmVyWzFdICE9ICd4JykgeworICAgICAgICAgICAgbWVtbW92ZShudW1iZXIgKyAyLCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgIHN0cmxlbihudW1iZXIpICsgMSk7CisgICAgICAgICAgICBudW1iZXJbMF0gPSAnMCc7CisgICAgICAgICAgICBudW1iZXJbMV0gPSAneCc7CisgICAgICAgICAgICBsZW4gKz0gMjsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydCh1Y3MxbGliX2ZpbmRfbWF4X2NoYXIoKFB5X1VDUzEqKW51bWJlciwgKFB5X1VDUzEqKW51bWJlciArIGxlbikgPD0gMTI3KTsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIGxlbiwgMTI3KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLCBudW1iZXIsIGxlbik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAncyc6CisgICAgeworICAgICAgICAvKiBVVEYtOCAqLworICAgICAgICBjb25zdCBjaGFyICpzID0gdmFfYXJnKCp2YXJncywgY29uc3QgY2hhciopOworICAgICAgICBpZiAodW5pY29kZV9mcm9tZm9ybWF0X3dyaXRlX2NzdHIod3JpdGVyLCBzLCB3aWR0aCwgcHJlY2lzaW9uKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAnVSc6CisgICAgeworICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKCp2YXJncywgUHlPYmplY3QgKik7CisgICAgICAgIGFzc2VydChvYmogJiYgX1B5VW5pY29kZV9DSEVDSyhvYmopKTsKKworICAgICAgICBpZiAodW5pY29kZV9mcm9tZm9ybWF0X3dyaXRlX3N0cih3cml0ZXIsIG9iaiwgd2lkdGgsIHByZWNpc2lvbikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAnVic6CisgICAgeworICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKCp2YXJncywgUHlPYmplY3QgKik7CisgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IHZhX2FyZygqdmFyZ3MsIGNvbnN0IGNoYXIgKik7CisgICAgICAgIGlmIChvYmopIHsKKyAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9iaikpOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfZnJvbWZvcm1hdF93cml0ZV9zdHIod3JpdGVyLCBvYmosIHdpZHRoLCBwcmVjaXNpb24pID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2Zyb21mb3JtYXRfd3JpdGVfY3N0cih3cml0ZXIsIHN0ciwgd2lkdGgsIHByZWNpc2lvbikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgJ1MnOgorICAgIHsKKyAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZygqdmFyZ3MsIFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqc3RyOworICAgICAgICBhc3NlcnQob2JqKTsKKyAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKG9iaik7CisgICAgICAgIGlmICghc3RyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICh1bmljb2RlX2Zyb21mb3JtYXRfd3JpdGVfc3RyKHdyaXRlciwgc3RyLCB3aWR0aCwgcHJlY2lzaW9uKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAnUic6CisgICAgeworICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKCp2YXJncywgUHlPYmplY3QgKik7CisgICAgICAgIFB5T2JqZWN0ICpyZXByOworICAgICAgICBhc3NlcnQob2JqKTsKKyAgICAgICAgcmVwciA9IFB5T2JqZWN0X1JlcHIob2JqKTsKKyAgICAgICAgaWYgKCFyZXByKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICh1bmljb2RlX2Zyb21mb3JtYXRfd3JpdGVfc3RyKHdyaXRlciwgcmVwciwgd2lkdGgsIHByZWNpc2lvbikgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAnQSc6CisgICAgeworICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKCp2YXJncywgUHlPYmplY3QgKik7CisgICAgICAgIFB5T2JqZWN0ICphc2NpaTsKKyAgICAgICAgYXNzZXJ0KG9iaik7CisgICAgICAgIGFzY2lpID0gUHlPYmplY3RfQVNDSUkob2JqKTsKKyAgICAgICAgaWYgKCFhc2NpaSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAodW5pY29kZV9mcm9tZm9ybWF0X3dyaXRlX3N0cih3cml0ZXIsIGFzY2lpLCB3aWR0aCwgcHJlY2lzaW9uKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGFzY2lpKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihhc2NpaSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgJyUnOgorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUod3JpdGVyLCAnJScpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIGlmIHdlIHN0dW1ibGUgdXBvbiBhbiB1bmtub3duIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdAorICAgICAgICAgICBvZiB0aGUgZm9ybWF0IHN0cmluZyB0byB0aGUgb3V0cHV0IHN0cmluZy4gKHdlIGNhbm5vdCBqdXN0CisgICAgICAgICAgIHNraXAgdGhlIGNvZGUsIHNpbmNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hhdCdzIGluIHRoZQorICAgICAgICAgICBhcmd1bWVudCBsaXN0KSAqLworICAgICAgICBsZW4gPSBzdHJsZW4ocCk7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ3N0cih3cml0ZXIsIHAsIGxlbikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZiA9IHArbGVuOworICAgICAgICByZXR1cm4gZjsKKyAgICB9CisKKyAgICBmKys7CiAgICAgcmV0dXJuIGY7CiB9CiAKLS8qIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVxdWlyZWQgZm9yIG91dHB1dCBvZiAlbGQuICAyMSBjaGFyYWN0ZXJzCi0gICBhbGxvd3MgZm9yIDY0LWJpdCBpbnRlZ2VycyAoaW4gZGVjaW1hbCkgYW5kIGFuIG9wdGlvbmFsIHNpZ24uICovCi0jZGVmaW5lIE1BWF9MT05HX0NIQVJTIDIxCi0vKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZC4KLSAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAotICAgcGx1cyAxIGZvciB0aGUgc2lnbi4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLwotI2RlZmluZSBNQVhfTE9OR19MT05HX0NIQVJTICgyICsgKFNJWkVPRl9MT05HX0xPTkcqNTMtMSkgLyAyMikKLQogUHlPYmplY3QgKgogUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIHsKLSAgICB2YV9saXN0IGNvdW50OwotICAgIFB5X3NzaXplX3QgY2FsbGNvdW50ID0gMDsKLSAgICBQeU9iamVjdCAqKmNhbGxyZXN1bHRzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqKmNhbGxyZXN1bHQgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbiA9IDA7Ci0gICAgaW50IHdpZHRoID0gMDsKLSAgICBpbnQgcHJlY2lzaW9uID0gMDsKLSAgICBpbnQgemVyb3BhZDsKLSAgICBjb25zdCBjaGFyKiBmOwotICAgIFB5T2JqZWN0ICpzdHJpbmc7Ci0gICAgLyogdXNlZCBieSBzcHJpbnRmICovCi0gICAgY2hhciBmbXRbNjFdOyAvKiBzaG91bGQgYmUgZW5vdWdoIGZvciAlMHdpZHRoLnByZWNpc2lvbmxsZCAqLwotICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsgLyogcmVzdWx0IGlzIEFTQ0lJIGJ5IGRlZmF1bHQgKi8KLSAgICBQeV9VQ1M0IGFyZ21heGNoYXI7Ci0gICAgUHlfc3NpemVfdCBudW1iZXJzaXplID0gMDsKLSAgICBjaGFyICpudW1iZXJyZXN1bHRzID0gTlVMTDsKLSAgICBjaGFyICpudW1iZXJyZXN1bHQgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBpbnQga2luZDsKLSAgICB2b2lkICpkYXRhOworICAgIHZhX2xpc3QgdmFyZ3MyOworICAgIGNvbnN0IGNoYXIgKmY7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAKLSAgICBQeV9WQV9DT1BZKGNvdW50LCB2YXJncyk7Ci0gICAgLyogc3RlcCAxOiBjb3VudCB0aGUgbnVtYmVyIG9mICVTLyVSLyVBLyVzIGZvcm1hdCBzcGVjaWZpY2F0aW9ucwotICAgICAqICh3ZSBjYWxsIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeU9iamVjdF9BU0NJSSgpLwotICAgICAqIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgZm9yIHRoZXNlIG9iamVjdHMgb25jZSBkdXJpbmcgc3RlcCAzIGFuZCBwdXQgdGhlCi0gICAgICogcmVzdWx0IGluIGFuIGFycmF5KQotICAgICAqIGFsc28gZXN0aW1hdGUgYSB1cHBlciBib3VuZCBmb3IgYWxsIHRoZSBudW1iZXIgZm9ybWF0cyBpbiB0aGUgc3RyaW5nLAotICAgICAqIG51bWJlcnMgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gc3RlcCAzIGFuZCBiZSBrZXB0IGluIGEgJ1wwJy1zZXBhcmF0ZWQKLSAgICAgKiBidWZmZXIgYmVmb3JlIHB1dHRpbmcgZXZlcnl0aGluZyB0b2dldGhlci4gKi8KLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzdHJsZW4oZm9ybWF0KSArIDEwMDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKworICAgIC8qIHZhX2xpc3QgbWF5IGJlIGFuIGFycmF5IChvZiAxIGl0ZW0pIG9uIHNvbWUgcGxhdGZvcm1zIChleDogQU1ENjQpLgorICAgICAgIENvcHkgaXQgdG8gYmUgYWJsZSB0byBwYXNzIGEgcmVmZXJlbmNlIHRvIGEgc3ViZnVuY3Rpb24uICovCisgICAgUHlfVkFfQ09QWSh2YXJnczIsIHZhcmdzKTsKKworICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7ICkgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnOwotICAgICAgICAgICAgLyogc2tpcCB3aWR0aCBvciB3aWR0aC5wcmVjaXNpb24gKGVnLiAiMS4yIiBvZiAiJTEuMmYiKSAqLwotICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsIE5VTEwsIE5VTEwsICZsb25nbG9uZ2ZsYWcsIE5VTEwpOwotICAgICAgICAgICAgaWYgKCpmID09ICdzJyB8fCAqZj09J1MnIHx8ICpmPT0nUicgfHwgKmY9PSdBJyB8fCAqZj09J1YnKQotICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwotCi0gICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAnZCcgfHwgKmY9PSd1JyB8fCAqZj09J2knIHx8ICpmPT0neCcgfHwgKmY9PSdwJykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgaWYgKGxvbmdsb25nZmxhZykgewotICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCBNQVhfTE9OR19MT05HX0NIQVJTKQotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBNQVhfTE9OR19MT05HX0NIQVJTOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgLyogTUFYX0xPTkdfQ0hBUlMgaXMgZW5vdWdoIHRvIGhvbGQgYSA2NC1iaXQgaW50ZWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHNpZ24uICBEZWNpbWFsIHRha2VzIHRoZSBtb3N0IHNwYWNlLiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgICBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLiAgSWYgYSB3aWR0aCBpcyBzcGVjaWZpZWQgd2UKLSAgICAgICAgICAgICAgICAgICAgICAgbmVlZCBtb3JlICh3aGljaCB3ZSBhbGxvY2F0ZSBsYXRlcikuICovCi0gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IE1BWF9MT05HX0NIQVJTKQotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBNQVhfTE9OR19DSEFSUzsKLQotICAgICAgICAgICAgICAgIC8qIGFjY291bnQgZm9yIHRoZSBzaXplICsgJ1wwJyB0byBzZXBhcmF0ZSBudW1iZXJzCi0gICAgICAgICAgICAgICAgICAgaW5zaWRlIG9mIHRoZSBudW1iZXJyZXN1bHRzIGJ1ZmZlciAqLwotICAgICAgICAgICAgICAgIG51bWJlcnNpemUgKz0gKHdpZHRoICsgMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKHVuc2lnbmVkIGNoYXIpKmYgPiAxMjcpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAic3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHglMDJ4IiwKLSAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikqZik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBzdGVwIDI6IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3VsdHMgb2YKLSAgICAgKiBQeU9iamVjdF9TdHIoKS9QeU9iamVjdF9SZXByKCkvUHlVbmljb2RlX0RlY29kZVVURjgoKSBjYWxscyAqLwotICAgIGlmIChjYWxsY291bnQpIHsKLSAgICAgICAgY2FsbHJlc3VsdHMgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFB5T2JqZWN0ICopICogY2FsbGNvdW50KTsKLSAgICAgICAgaWYgKCFjYWxscmVzdWx0cykgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKLSAgICB9Ci0gICAgLyogc3RlcCAyLjU6IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3VsdHMgb2YgZm9ybWF0aW5nIG51bWJlcnMgKi8KLSAgICBpZiAobnVtYmVyc2l6ZSkgewotICAgICAgICBudW1iZXJyZXN1bHRzID0gUHlPYmplY3RfTWFsbG9jKG51bWJlcnNpemUpOwotICAgICAgICBpZiAoIW51bWJlcnJlc3VsdHMpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgbnVtYmVycmVzdWx0ID0gbnVtYmVycmVzdWx0czsKLSAgICB9Ci0KLSAgICAvKiBzdGVwIDM6IGZvcm1hdCBudW1iZXJzIGFuZCBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHA7Ci0gICAgICAgICAgICBpbnQgbG9uZ2ZsYWc7Ci0gICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWc7Ci0gICAgICAgICAgICBpbnQgbnVtcHJpbnRlZDsKLQotICAgICAgICAgICAgcCA9IGY7Ci0gICAgICAgICAgICB6ZXJvcGFkID0gKGZbMV0gPT0gJzAnKTsKLSAgICAgICAgICAgIGYgPSBwYXJzZV9mb3JtYXRfZmxhZ3MoZiwgJndpZHRoLCAmcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9uZ2ZsYWcsICZsb25nbG9uZ2ZsYWcsICZzaXplX3RmbGFnKTsKLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gTUFYX1VOSUNPREUpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIChQeV9VQ1M0KW9yZGluYWwpOwotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAqZik7Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgUHlfc3NpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgaW50KSk7Ci0gICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOwotICAgICAgICAgICAgICAgIC8qIGFkdmFuY2UgYnkgKzEgdG8gc2tpcCBvdmVyIHRoZSAnXDAnICovCi0gICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICd1Jyk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBpbnQpKTsKLSAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7Ci0gICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ3gnKTsKLSAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwgdmFfYXJnKGNvdW50LCBpbnQpKTsKLSAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7Ci0gICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsICIlcCIsIHZhX2FyZyhjb3VudCwgdm9pZCopKTsKLSAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLwotICAgICAgICAgICAgICAgIGlmIChudW1iZXJyZXN1bHRbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobnVtYmVycmVzdWx0WzFdICE9ICd4JykgewotICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKG51bWJlcnJlc3VsdCArIDIsIG51bWJlcnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4obnVtYmVycmVzdWx0KSArIDEpOwotICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdFsxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCArPSAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7Ci0gICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvKiBVVEYtOCAqLwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSB2YV9hcmcoY291bnQsIGNvbnN0IGNoYXIqKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzdHJsZW4ocyksICJyZXBsYWNlIiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHIpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAvKiBzaW5jZSBQeVVuaWNvZGVfRGVjb2RlVVRGOCByZXR1cm5zIGFscmVhZHkgZmxleGlibGUKLSAgICAgICAgICAgICAgICAgICB1bmljb2RlIG9iamVjdHMsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCByZWFkeSBvbiB0aGVtICovCi0gICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOwotICAgICAgICAgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgYXJnbWF4Y2hhcik7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwotICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSBzdHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCi0gICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ1UnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcoY291bnQsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIGFzc2VydChvYmogJiYgX1B5VW5pY29kZV9DSEVDSyhvYmopKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9iaik7Ci0gICAgICAgICAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBhcmdtYXhjaGFyKTsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdWJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKGNvdW50LCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoY291bnQsIGNvbnN0IGNoYXIgKik7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cl9vYmo7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG9iaiB8fCBzdHIpOwotICAgICAgICAgICAgICAgIGFzc2VydCghb2JqIHx8IF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob2JqKTsKLSAgICAgICAgICAgICAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBhcmdtYXhjaGFyKTsKLSAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwotICAgICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyX29iaikKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyX29iaik7Ci0gICAgICAgICAgICAgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgYXJnbWF4Y2hhcik7Ci0gICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7Ci0gICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHJfb2JqOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcoY291bnQsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHI7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG9iaik7Ci0gICAgICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKG9iaik7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdHIpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOwotICAgICAgICAgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgYXJnbWF4Y2hhcik7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwotICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSBzdHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCi0gICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcoY291bnQsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXByOwotICAgICAgICAgICAgICAgIGFzc2VydChvYmopOwotICAgICAgICAgICAgICAgIHJlcHIgPSBQeU9iamVjdF9SZXByKG9iaik7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXByKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXByKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwcik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXByKTsKLSAgICAgICAgICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIGFyZ21heGNoYXIpOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwcik7Ci0gICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHJlcHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCi0gICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHJlcHI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdBJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKGNvdW50LCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXNjaWk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG9iaik7Ci0gICAgICAgICAgICAgICAgYXNjaWkgPSBQeU9iamVjdF9BU0NJSShvYmopOwotICAgICAgICAgICAgICAgIGlmICghYXNjaWkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFzY2lpKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXNjaWkpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoYXNjaWkpOwotICAgICAgICAgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgYXJnbWF4Y2hhcik7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhc2NpaSk7Ci0gICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHJlcHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCi0gICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IGFzY2lpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgotICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgotICAgICAgICAgICAgICAgICAgIHRoZSBmb3JtYXQgc3RyaW5nIHRvIHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICBzdHJpbmcuICh3ZSBjYW5ub3QganVzdCBza2lwIHRoZQotICAgICAgICAgICAgICAgICAgIGNvZGUsIHNpbmNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSAgICAgICAgICAgICAgICAgICB3aGF0J3MgaW4gdGhlIGFyZ3VtZW50IGxpc3QpICovCi0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgZ290byBleHBhbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbisrOwotICAgIH0KLSAgZXhwYW5kOgotICAgIC8qIHN0ZXAgNDogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCwKLSAgICAgICB3ZSBkb24ndCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nLgotICAgICAgIFRoZXJlIGNhbiBiZSBubyBlcnJvcnMgYmV5b25kIHRoaXMgcG9pbnQuICovCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX05ldyhuLCBtYXhjaGFyKTsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgZ290byBmYWlsOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwotICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKLSAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOwotCi0gICAgZm9yIChpID0gMCwgZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwOwotCi0gICAgICAgICAgICBwID0gZjsKLSAgICAgICAgICAgIGYgPSBwYXJzZV9mb3JtYXRfZmxhZ3MoZiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgICAgICAgICAvKiBjaGVja2luZyBmb3IgPT0gYmVjYXVzZSB0aGUgbGFzdCBhcmd1bWVudCBjb3VsZCBiZSBhIGVtcHR5Ci0gICAgICAgICAgICAgICBzdHJpbmcsIHdoaWNoIGNhdXNlcyBpIHRvIHBvaW50IHRvIGVuZCwgdGhlIGFzc2VydCBhdCB0aGUgZW5kIG9mCi0gICAgICAgICAgICAgICB0aGUgbG9vcCAqLwotICAgICAgICAgICAgYXNzZXJ0KGkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCBvcmRpbmFsID0gdmFfYXJnKHZhcmdzLCBpbnQpOwotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssIG9yZGluYWwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCi0gICAgICAgICAgICAgICAgaWYgKCpmID09ICdwJykKLSAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgdm9pZCAqKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogZXh0cmFjdCB0aGUgcmVzdWx0IGZyb20gbnVtYmVycmVzdWx0cyBhbmQgYXBwZW5kLiAqLwotICAgICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihudW1iZXJyZXN1bHQpOwotICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIG51bWJlcnJlc3VsdCwgbGVuKTsKLSAgICAgICAgICAgICAgICAvKiBza2lwIG92ZXIgdGhlIHNlcGFyYXRpbmcgJ1wwJyAqLwotICAgICAgICAgICAgICAgIGkgKz0gbGVuOwotICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSBsZW47Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCpudW1iZXJyZXN1bHQgPT0gJ1wwJyk7Ci0gICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0Kys7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCi0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGNoYXIgKik7Ci0gICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOwotICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsIHNpemUpOwotICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKLSAgICAgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhlIHVuaWNvZGUoKS9yZXByKCkgPT4gZm9yZ2V0IGl0ICovCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gbmV4dCB1bmljb2RlKCkvcmVwcigpIHJlc3VsdCAqLwotICAgICAgICAgICAgICAgICsrY2FsbHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ1UnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQob2JqKSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKLSAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKLSAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksIG9iaiwgMCwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgaSArPSBzaXplOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnVic6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgY29uc3QgY2hhciAqKTsKLSAgICAgICAgICAgICAgICBpZiAob2JqKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQob2JqKSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKLSAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCBvYmosIDAsIHNpemUpOwotICAgICAgICAgICAgICAgICAgICBpICs9IHNpemU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7Ci0gICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsIHNpemUpOwotICAgICAgICAgICAgICAgICAgICBpICs9IHNpemU7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICsrY2FsbHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgY2FzZSAnUic6Ci0gICAgICAgICAgICBjYXNlICdBJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgLyogdW51c2VkLCBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCAqLwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCgqY2FsbHJlc3VsdCkgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7Ci0gICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCAqY2FsbHJlc3VsdCwgMCwgIHNpemUpOwotICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKLSAgICAgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhlIHVuaWNvZGUoKS9yZXByKCkgPT4gZm9yZ2V0IGl0ICovCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gbmV4dCB1bmljb2RlKCkvcmVwcigpIHJlc3VsdCAqLwotICAgICAgICAgICAgICAgICsrY2FsbHJlc3VsdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssICclJyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIHAsIGxlbik7Ci0gICAgICAgICAgICAgICAgaSArPSBsZW47Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7Ci0gICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmID0gdW5pY29kZV9mcm9tZm9ybWF0X2FyZygmd3JpdGVyLCBmLCAmdmFyZ3MyKTsKKyAgICAgICAgICAgIGlmIChmID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXNzZXJ0KGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKTsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssICpmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBhc3NlcnQoaSA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnA7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKIAotICBlbmQ6Ci0gICAgaWYgKGNhbGxyZXN1bHRzKQotICAgICAgICBQeU9iamVjdF9GcmVlKGNhbGxyZXN1bHRzKTsKLSAgICBpZiAobnVtYmVycmVzdWx0cykKLSAgICAgICAgUHlPYmplY3RfRnJlZShudW1iZXJyZXN1bHRzKTsKLSAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQoc3RyaW5nKTsKLSAgZmFpbDoKLSAgICBpZiAoY2FsbHJlc3VsdHMpIHsKLSAgICAgICAgUHlPYmplY3QgKipjYWxscmVzdWx0MiA9IGNhbGxyZXN1bHRzOwotICAgICAgICB3aGlsZSAoY2FsbHJlc3VsdDIgPCBjYWxscmVzdWx0KSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKCpjYWxscmVzdWx0Mik7Ci0gICAgICAgICAgICArK2NhbGxyZXN1bHQyOworICAgICAgICAgICAgcCA9IGY7CisgICAgICAgICAgICBkbworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgY2hhcikqcCA+IDEyNykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLAorICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpKnApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKCpwICE9ICdcMCcgJiYgKnAgIT0gJyUnKTsKKyAgICAgICAgICAgIGxlbiA9IHAgLSBmOworCisgICAgICAgICAgICBpZiAoKnAgPT0gJ1wwJykKKyAgICAgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgbGVuLCAxMjcpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cih3cml0ZXIuYnVmZmVyLCB3cml0ZXIucG9zLCBmLCBsZW4pOworICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBsZW47CisKKyAgICAgICAgICAgIGYgPSBwOwogICAgICAgICB9Ci0gICAgICAgIFB5T2JqZWN0X0ZyZWUoY2FsbHJlc3VsdHMpOwogICAgIH0KLSAgICBpZiAobnVtYmVycmVzdWx0cykKLSAgICAgICAgUHlPYmplY3RfRnJlZShudW1iZXJyZXN1bHRzKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CisKKyAgZmFpbDoKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTI5NjgsNiArMjg3NSw5IEBACiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoaW50IG9yZGluYWwpCiB7CiAgICAgUHlPYmplY3QgKnY7CisgICAgdm9pZCAqZGF0YTsKKyAgICBpbnQga2luZDsKKwogICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gTUFYX1VOSUNPREUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hyKCkgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKQEAgLTI5ODAsNyArMjg5MCw5IEBACiAgICAgdiA9IFB5VW5pY29kZV9OZXcoMSwgb3JkaW5hbCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHYpLCBQeVVuaWNvZGVfREFUQSh2KSwgMCwgb3JkaW5hbCk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh2KTsKKyAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgMCwgb3JkaW5hbCk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC0zMDYwLDggKzI5NzIsOCBAQAogICAgMSBvbiBzdWNjZXNzLiAqLwogaW50CiBfUHlfbm9ybWFsaXplX2VuY29kaW5nKGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgIGNoYXIgKmxvd2VyLAotICAgICAgICAgICAgICAgICAgIHNpemVfdCBsb3dlcl9sZW4pCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmxvd2VyLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbG93ZXJfbGVuKQogewogICAgIGNvbnN0IGNoYXIgKmU7CiAgICAgY2hhciAqbDsKQEAgLTMzNDMsNyArMzI1NSw3IEBACiAgICAgfQogCiAgICAgaWYgKHN1cnJvZ2F0ZWVzY2FwZSkgewotICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KKyAgICAgICAgLyogInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciAqLwogICAgICAgICBjaGFyICpzdHI7CiAKICAgICAgICAgc3RyID0gX1B5X3djaGFyMmNoYXIod3N0ciwgJmVycm9yX3Bvcyk7CkBAIC0zMzYzLDYgKzMyNzUsNyBAQAogICAgICAgICBQeU1lbV9GcmVlKHN0cik7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiBzdHJpY3QgbW9kZSAqLwogICAgICAgICBzaXplX3QgbGVuLCBsZW4yOwogCiAgICAgICAgIGxlbiA9IHdjc3RvbWJzKE5VTEwsIHdzdHIsIDApOwpAQCAtMzQwMSw3ICszMzE0LDcgQEAKICAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CiAgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdzdHIpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGVycm1zZyA9IE5VTEw7CiAgICAgfQpAQCAtMzYwOCw4ICszNTIxLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHN1cnJvZ2F0ZWVzY2FwZSkKLSAgICB7CisgICAgaWYgKHN1cnJvZ2F0ZWVzY2FwZSkgeworICAgICAgICAvKiAic3Vycm9nYXRlZXNjYXBlIiBlcnJvciBoYW5kbGVyICovCiAgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihzdHIsICZ3bGVuKTsKICAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHdsZW4gPT0gKHNpemVfdCktMSkKQEAgLTM2MjAsOSArMzUzMywxMCBAQAogICAgICAgICB9CiAKICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgd2xlbik7Ci0gICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUod3N0cik7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiBzdHJpY3QgbW9kZSAqLwogI2lmbmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUwogICAgICAgICB3bGVuID0gbWJzdG93Y3MoTlVMTCwgc3RyLCAwKTsKICNlbHNlCkBAIC0zNjQyLDcgKzM1NTYsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9CiAKLSAgICAgICAgLyogVGhpcyBzaG91bGRuJ3QgZmFpbCBub3cgKi8KICAgICAgICAgd2xlbjIgPSBtYnN0b3djcyh3c3RyLCBzdHIsIHdsZW4rMSk7CiAgICAgICAgIGlmICh3bGVuMiA9PSAoc2l6ZV90KS0xKSB7CiAgICAgICAgICAgICBpZiAod3N0ciAhPSBzbWFsbGJ1ZikKQEAgLTM2NjgsNyArMzU4MSw3IEBACiAgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihlcnJtc2csICZlcnJsZW4pOwogICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3c3RyKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBlcnJtc2cgPSBOVUxMOwogICAgIH0KQEAgLTM3MzYsMTggKzM2NDksMjAgQEAKIAogCiBpbnQKLV9QeVVuaWNvZGVfSGFzTlVMQ2hhcnMoUHlPYmplY3QqIHMpCitfUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0KiBzdHIpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpudWwgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zOwogCi0gICAgaWYgKG51bCA9PSBOVUxMKQotICAgICAgICBudWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoIlwwIiwgMSk7Ci0gICAgaWYgKG51bCA9PSBOVUxMKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBQeVVuaWNvZGVfQ29udGFpbnMocywgbnVsKTsKKyAgICBwb3MgPSBmaW5kY2hhcihQeVVuaWNvZGVfREFUQShzdHIpLCBQeVVuaWNvZGVfS0lORChzdHIpLAorICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksICdcMCcsIDEpOworICAgIGlmIChwb3MgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDE7CiB9CiAKLQogaW50CiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKQEAgLTQwMTksNiArMzkzNCw5IEBACiBQeV9VQ1M0CiBQeVVuaWNvZGVfUmVhZENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgpCiB7CisgICAgdm9pZCAqZGF0YTsKKyAgICBpbnQga2luZDsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CkBAIC00MDI3LDcgKzM5NDUsOSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbmRleCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpOwogfQogCiBpbnQKQEAgLTQwODYsNiArNDAwNiw3IEBACiAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IE5VTEw7CiB9CiAKKyNpZmRlZiBIQVZFX01CQ1MKIC8qIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrIGhlbHBlcjoKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBpZiBubyBleGNlcHRpb24gb2NjdXJyZWQsIGNvcHkgdGhlIHJlcGxhY2VtZW50IHRvIHRoZSBvdXRwdXQKQEAgLTQwOTQsMTEgKzQwMTUsMTIgQEAKICovCiAKIHN0YXRpYyBpbnQKLXVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmlucHV0LCBjb25zdCBjaGFyICoqaW5lbmQsIFB5X3NzaXplX3QgKnN0YXJ0aW5wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MpCit1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93Y2hhcigKKyAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAorICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgY29uc3QgY2hhciAqKmlucHV0LCBjb25zdCBjaGFyICoqaW5lbmQsIFB5X3NzaXplX3QgKnN0YXJ0aW5wb3MsCisgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCisgICAgUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKQEAgLTQxMDksMTIgKzQwMzEsMTEgQEAKICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3BvczsKICAgICBQeU9iamVjdCAqaW5wdXRvYmogPSBOVUxMOwotICAgIGludCByZXMgPSAtMTsKKyAgICB3Y2hhcl90ICpyZXB3c3RyOworICAgIFB5X3NzaXplX3QgcmVwd2xlbjsKIAotICAgIGlmIChfUHlVbmljb2RlX0tJTkQoKm91dHB1dCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCi0gICAgICAgIG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqb3V0cHV0KTsKLSAgICBlbHNlCi0gICAgICAgIG91dHNpemUgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKCpvdXRwdXQpOworICAgIGFzc2VydCAoX1B5VW5pY29kZV9LSU5EKCpvdXRwdXQpID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKTsKKyAgICBvdXRzaXplID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCgqb3V0cHV0KTsKIAogICAgIGlmICgqZXJyb3JIYW5kbGVyID09IE5VTEwpIHsKICAgICAgICAgKmVycm9ySGFuZGxlciA9IFB5Q29kZWNfTG9va3VwRXJyb3IoZXJyb3JzKTsKQEAgLTQxMzksNyArNDA2MCw5OCBAQAogICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUocmVzdHVwbGUsIGFyZ3BhcnNlLCAmUHlVbmljb2RlX1R5cGUsICZyZXB1bmljb2RlLCAmbmV3cG9zKSkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpCisKKyAgICAvKiBDb3B5IGJhY2sgdGhlIGJ5dGVzIHZhcmlhYmxlcywgd2hpY2ggbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkIGJ5IHRoZQorICAgICAgIGNhbGxiYWNrICovCisgICAgaW5wdXRvYmogPSBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QoKmV4Y2VwdGlvbk9iamVjdCk7CisgICAgaWYgKCFpbnB1dG9iaikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmICghUHlCeXRlc19DaGVjayhpbnB1dG9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImV4Y2VwdGlvbiBhdHRyaWJ1dGUgb2JqZWN0IG11c3QgYmUgYnl0ZXMiKTsKKyAgICB9CisgICAgKmlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRvYmopOworICAgIGluc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoaW5wdXRvYmopOworICAgICppbmVuZCA9ICppbnB1dCArIGluc2l6ZTsKKyAgICAvKiB3ZSBjYW4gREVDUkVGIHNhZmVseSwgYXMgdGhlIGV4Y2VwdGlvbiBoYXMgYW5vdGhlciByZWZlcmVuY2UsCisgICAgICAgc28gdGhlIG9iamVjdCB3b24ndCBnbyBhd2F5LiAqLworICAgIFB5X0RFQ1JFRihpbnB1dG9iaik7CisKKyAgICBpZiAobmV3cG9zPDApCisgICAgICAgIG5ld3BvcyA9IGluc2l6ZStuZXdwb3M7CisgICAgaWYgKG5ld3BvczwwIHx8IG5ld3Bvcz5pbnNpemUpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsICJwb3NpdGlvbiAlemQgZnJvbSBlcnJvciBoYW5kbGVyIG91dCBvZiBib3VuZHMiLCBuZXdwb3MpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorCisgICAgcmVwd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHJlcHVuaWNvZGUsICZyZXB3bGVuKTsKKyAgICBpZiAocmVwd3N0ciA9PSBOVUxMKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCisgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKKyAgICAgICBhdCB0aGUgbmV3IGlucHV0IHBvc2l0aW9uKSwgc28gd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZQorICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLworICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXB3bGVuICsgaW5zaXplLW5ld3BvczsKKyAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgeworICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMipvdXRzaXplKQorICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOworICAgICAgICBpZiAodW5pY29kZV9yZXNpemUob3V0cHV0LCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisgICAgd2NzbmNweShfUHlVbmljb2RlX1dTVFIoKm91dHB1dCkgKyAqb3V0cG9zLCByZXB3c3RyLCByZXB3bGVuKTsKKyAgICAqb3V0cG9zICs9IHJlcHdsZW47CisKKyAgICAqZW5kaW5wb3MgPSBuZXdwb3M7CisgICAgKmlucHRyID0gKmlucHV0ICsgbmV3cG9zOworCisgICAgLyogd2UgbWFkZSBpdCEgKi8KKyAgICBQeV9YREVDUkVGKHJlc3R1cGxlKTsKKyAgICByZXR1cm4gMDsKKworICBvbkVycm9yOgorICAgIFB5X1hERUNSRUYocmVzdHVwbGUpOworICAgIHJldHVybiAtMTsKK30KKyNlbmRpZiAgIC8qIEhBVkVfTUJDUyAqLworCitzdGF0aWMgaW50Cit1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAorICAgIGNvbnN0IGNoYXIgKippbnB1dCwgY29uc3QgY2hhciAqKmluZW5kLCBQeV9zc2l6ZV90ICpzdGFydGlucG9zLAorICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciAvKiBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zICovKQoreworICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKworICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaW5zaXplOworICAgIFB5X3NzaXplX3QgbmV3cG9zOworICAgIFB5X3NzaXplX3QgcmVwbGVuOworICAgIFB5T2JqZWN0ICppbnB1dG9iaiA9IE5VTEw7CisKKyAgICBpZiAoKmVycm9ySGFuZGxlciA9PSBOVUxMKSB7CisgICAgICAgICplcnJvckhhbmRsZXIgPSBQeUNvZGVjX0xvb2t1cEVycm9yKGVycm9ycyk7CisgICAgICAgIGlmICgqZXJyb3JIYW5kbGVyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorCisgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgZW5jb2RpbmcsCisgICAgICAgICppbnB1dCwgKmluZW5kIC0gKmlucHV0LAorICAgICAgICAqc3RhcnRpbnBvcywgKmVuZGlucG9zLAorICAgICAgICByZWFzb24pOworICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgIHJlc3R1cGxlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygqZXJyb3JIYW5kbGVyLCAqZXhjZXB0aW9uT2JqZWN0LCBOVUxMKTsKKyAgICBpZiAocmVzdHVwbGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmICghUHlUdXBsZV9DaGVjayhyZXN0dXBsZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgJmFyZ3BhcnNlWzRdKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUocmVzdHVwbGUsIGFyZ3BhcnNlLCAmUHlVbmljb2RlX1R5cGUsICZyZXB1bmljb2RlLCAmbmV3cG9zKSkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogQ29weSBiYWNrIHRoZSBieXRlcyB2YXJpYWJsZXMsIHdoaWNoIG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZCBieSB0aGUKQEAgLTQxNjQsNTQgKzQxNzYsMjUgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX0tJTkQoKm91dHB1dCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKLSAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCi0gICAgICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCi0gICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLwotICAgICAgICBQeV9zc2l6ZV90IHJlcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOwotICAgICAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwbGVuICsgaW5zaXplLW5ld3BvczsKLSAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKLSAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipvdXRzaXplKQotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKLSAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAodW5pY29kZV93aWRlbihvdXRwdXQsICpvdXRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXB1bmljb2RlKSkgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygqb3V0cHV0LCAqb3V0cG9zLCByZXB1bmljb2RlLCAwLCByZXBsZW4pOwotICAgICAgICAqb3V0cG9zICs9IHJlcGxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdjaGFyX3QgKnJlcHdzdHI7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwd2xlbjsKLSAgICAgICAgcmVwd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHJlcHVuaWNvZGUsICZyZXB3bGVuKTsKLSAgICAgICAgaWYgKHJlcHdzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCi0gICAgICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCi0gICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLwotICAgICAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwd2xlbiArIGluc2l6ZS1uZXdwb3M7Ci0gICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7Ci0gICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMipvdXRzaXplKQotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKLSAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgfQotICAgICAgICB3Y3NuY3B5KF9QeVVuaWNvZGVfV1NUUigqb3V0cHV0KSArICpvdXRwb3MsIHJlcHdzdHIsIHJlcHdsZW4pOwotICAgICAgICAqb3V0cG9zICs9IHJlcHdsZW47Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPCAwKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgcmVwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgd3JpdGVyLT5taW5fbGVuZ3RoICs9IHJlcGxlbjsKKyAgICBpZiAocmVwbGVuID4gMSkKKyAgICAgICAgd3JpdGVyLT5vdmVyYWxsb2NhdGUgPSAxOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgcmVwdW5pY29kZSkgPT0gLTEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKwogICAgICplbmRpbnBvcyA9IG5ld3BvczsKICAgICAqaW5wdHIgPSAqaW5wdXQgKyBuZXdwb3M7CiAKICAgICAvKiB3ZSBtYWRlIGl0ISAqLwotICAgIHJlcyA9IDA7CisgICAgUHlfWERFQ1JFRihyZXN0dXBsZSk7CisgICAgcmV0dXJuIDA7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHJlc3R1cGxlKTsKLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiAtMTsKIH0KIAogLyogLS0tIFVURi03IENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC00MzE5LDkgKzQzMDIsOCBAQAogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKICAgICBpbnQgaW5TaGlmdCA9IDA7CiAgICAgUHlfc3NpemVfdCBzaGlmdE91dFN0YXJ0OwpAQCAtNDMzMSwxNyArNDMxMywxNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogU3RhcnQgb2ZmIGFzc3VtaW5nIGl0J3MgYWxsIEFTQ0lJLiBXaWRlbiBsYXRlciBhcyBuZWNlc3NhcnkuICovCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAgICAgKmNvbnN1bWVkID0gMDsKLSAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIH0KIAotICAgIHNoaWZ0T3V0U3RhcnQgPSBvdXRwb3MgPSAwOworICAgIC8qIFN0YXJ0IG9mZiBhc3N1bWluZyBpdCdzIGFsbCBBU0NJSS4gV2lkZW4gbGF0ZXIgYXMgbmVjZXNzYXJ5LiAqLworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisKKyAgICBzaGlmdE91dFN0YXJ0ID0gMDsKICAgICBlID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGUpIHsKQEAgLTQzNjMsMTMgKzQzNDUsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV4cGVjdGluZyBhIHNlY29uZCBzdXJyb2dhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUob3V0Q2gpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaDIgPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhzdXJyb2dhdGUsIG91dENoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaDIpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gyKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgc3Vycm9nYXRlKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHN1cnJvZ2F0ZSkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTQzNzksNyArNDM2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSBvdXRDaDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIG91dENoKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgb3V0Q2gpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC00Mzg4LDcgKzQzNzAsNyBAQAogICAgICAgICAgICAgICAgIGluU2hpZnQgPSAwOwogICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgICBpZiAoc3Vycm9nYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIHN1cnJvZ2F0ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgc3Vycm9nYXRlKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDQwOSw3ICs0MzkxLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qICctJyBpcyBhYnNvcmJlZDsgb3RoZXIgdGVybWluYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBhcmUgcHJlc2VydmVkICovCi0gICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQ0MTksMTkgKzQ0MDEsMTkgQEAKICAgICAgICAgICAgIHMrKzsgLyogY29uc3VtZSAnKycgKi8KICAgICAgICAgICAgIGlmIChzIDwgZSAmJiAqcyA9PSAnLScpIHsgLyogJystJyBlbmNvZGVzICcrJyAqLwogICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCAnKycpIDwgMCkKKyAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgJysnKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBiZWdpbiBiYXNlNjQtZW5jb2RlZCBzZWN0aW9uICovCiAgICAgICAgICAgICAgICAgaW5TaGlmdCA9IDE7Ci0gICAgICAgICAgICAgICAgc2hpZnRPdXRTdGFydCA9IG91dHBvczsKKyAgICAgICAgICAgICAgICBzaGlmdE91dFN0YXJ0ID0gd3JpdGVyLnBvczsKICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChERUNPREVfRElSRUNUKGNoKSkgeyAvKiBjaGFyYWN0ZXIgZGVjb2RlcyBhcyBpdHNlbGYgKi8KLSAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgcysrOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwpAQCAtNDQ0MiwxMSArNDQyNCwxMSBAQAogICAgICAgICBjb250aW51ZTsKIHV0ZjdFcnJvcjoKICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmNyIsIGVycm1zZywKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQorICAgICAgICAgICAgICAgICZ3cml0ZXIpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIApAQCAtNDQ1OCwxMSArNDQ0MCwxMSBAQAogICAgICAgICAgICAgICAgIChiYXNlNjRiaXRzID49IDYpIHx8CiAgICAgICAgICAgICAgICAgKGJhc2U2NGJpdHMgPiAwICYmIGJhc2U2NGJ1ZmZlciAhPSAwKSkgewogICAgICAgICAgICAgZW5kaW5wb3MgPSBzaXplOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidXRmNyIsICJ1bnRlcm1pbmF0ZWQgc2hpZnQgc2VxdWVuY2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKKyAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgaWYgKHMgPCBlKQogICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKQEAgLTQ0NzIsNyArNDQ1NCw3IEBACiAgICAgLyogcmV0dXJuIHN0YXRlICovCiAgICAgaWYgKGNvbnN1bWVkKSB7CiAgICAgICAgIGlmIChpblNoaWZ0KSB7Ci0gICAgICAgICAgICBvdXRwb3MgPSBzaGlmdE91dFN0YXJ0OyAvKiBiYWNrIG9mZiBvdXRwdXQgKi8KKyAgICAgICAgICAgIHdyaXRlci5wb3MgPSBzaGlmdE91dFN0YXJ0OyAvKiBiYWNrIG9mZiBvdXRwdXQgKi8KICAgICAgICAgICAgICpjb25zdW1lZCA9IHN0YXJ0aW5wb3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC00NDgwLDE3ICs0NDYyLDE0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0KICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQ1NzMsNyArNDU1Miw3IEBACiAKICAgICAgICAgICAgIC8qIGNvZGUgZmlyc3Qgc3Vycm9nYXRlICovCiAgICAgICAgICAgICBiYXNlNjRiaXRzICs9IDE2OwotICAgICAgICAgICAgYmFzZTY0YnVmZmVyID0gKGJhc2U2NGJ1ZmZlciA8PCAxNikgfCAweGQ4MDAgfCAoKGNoLTB4MTAwMDApID4+IDEwKTsKKyAgICAgICAgICAgIGJhc2U2NGJ1ZmZlciA9IChiYXNlNjRidWZmZXIgPDwgMTYpIHwgUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURShjaCk7CiAgICAgICAgICAgICB3aGlsZSAoYmFzZTY0Yml0cyA+PSA2KSB7CiAgICAgICAgICAgICAgICAgKm91dCsrID0gVE9fQkFTRTY0KGJhc2U2NGJ1ZmZlciA+PiAoYmFzZTY0Yml0cy02KSk7CiAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyAtPSA2OwpAQCAtNDcyNSwxMCArNDcwNCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBjb25zdCBjaGFyICplbmQgPSBzICsgc2l6ZTsKLSAgICBQeV9zc2l6ZV90IG91dHBvczsKIAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwpAQCAtNDc0OSwyOSArNDcyNywyNiBAQAogICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKXNbMF0pOwogICAgIH0KIAotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgd3JpdGVyLm1pbl9sZW5ndGgsIDEyNykgPT0gLTEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlbmQsIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKLSAgICBzICs9IG91dHBvczsKKyAgICB3cml0ZXIucG9zID0gYXNjaWlfZGVjb2RlKHMsIGVuZCwgd3JpdGVyLmRhdGEpOworICAgIHMgKz0gd3JpdGVyLnBvczsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBQeV9VQ1M0IGNoOwotICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICBpbnQga2luZCA9IHdyaXRlci5raW5kOwogICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKLSAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHdyaXRlci5idWZmZXIpKQorICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwgd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaCA9IHVjczFsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgICAgICAgICBjaCA9IHVjczFsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwgd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zKTsKICAgICAgICAgfSBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7Ci0gICAgICAgICAgICBjaCA9IHVjczJsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOworICAgICAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsIHdyaXRlci5kYXRhLCAmd3JpdGVyLnBvcyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgICAgICBjaCA9IHVjczRsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOworICAgICAgICAgICAgY2ggPSB1Y3M0bGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsIHdyaXRlci5kYXRhLCAmd3JpdGVyLnBvcyk7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKGNoKSB7CkBAIC00Nzk1LDM1ICs0NzcwLDMxIEBACiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyBjaCAtIDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKIEVuZDoKLSAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0KICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IHMgLSBzdGFydHM7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOwotICAgIHJldHVybiB1bmljb2RlOworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYodW5pY29kZSk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC00ODMzLDcgKzQ4MDQsNyBAQAogICAgdXNlZCB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb24gTWFjIE9TIFguCiAKICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICh1c2UKLSAgIFB5TWVtX0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkpLCBvciBOVUxMIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLiAqLworICAgUHlNZW1fUmF3RnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSksIG9yIE5VTEwgb24gbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuICovCiAKIHdjaGFyX3QqCiBfUHlfRGVjb2RlVVRGOF9zdXJyb2dhdGVlc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQpAQCAtNDg0Niw3ICs0ODE3LDcgQEAKICAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KICAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgPCAoc2l6ZSArIDEpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB1bmljb2RlID0gUHlNZW1fTWFsbG9jKChzaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgIHVuaWNvZGUgPSBQeU1lbV9SYXdNYWxsb2MoKHNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDk2OSwxNyArNDk0MCwxMCBAQAogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7Ci0gICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCisgICAgaW50IGxlLCBibyA9IDA7ICAgICAgIC8qIGFzc3VtZSBuYXRpdmUgb3JkZXJpbmcgYnkgZGVmYXVsdCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwotICAgIC8qIE9mZnNldHMgZnJvbSBxIGZvciByZXRyaWV2aW5nIGJ5dGVzIGluIHRoZSByaWdodCBvcmRlci4gKi8KLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIGludCBpb3JkZXJbXSA9IHswLCAxLCAyLCAzfTsKLSNlbHNlCi0gICAgaW50IGlvcmRlcltdID0gezMsIDIsIDEsIDB9OwotI2VuZGlmCiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKQEAgLTQ5OTMsMTA3ICs0OTU3LDEwNiBAQAogICAgICAgIGJ5dGUgb3JkZXIgc2V0dGluZyBhY2NvcmRpbmdseS4gSW4gbmF0aXZlIG1vZGUsIHRoZSBsZWFkaW5nIEJPTQogICAgICAgIG1hcmsgaXMgc2tpcHBlZCwgaW4gYWxsIG90aGVyIG1vZGVzLCBpdCBpcyBjb3BpZWQgdG8gdGhlIG91dHB1dAogICAgICAgIHN0cmVhbSBhcy1pcyAoZ2l2aW5nIGEgWldOQlNQIGNoYXJhY3RlcikuICovCi0gICAgaWYgKGJvID09IDApIHsKLSAgICAgICAgaWYgKHNpemUgPj0gNCkgewotICAgICAgICAgICAgY29uc3QgUHlfVUNTNCBib20gPSAocVtpb3JkZXJbM11dIDw8IDI0KSB8IChxW2lvcmRlclsyXV0gPDwgMTYpIHwKLSAgICAgICAgICAgICAgICAocVtpb3JkZXJbMV1dIDw8IDgpIHwgcVtpb3JkZXJbMF1dOwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4MDAwMEZFRkYpIHsKLSAgICAgICAgICAgICAgICBxICs9IDQ7Ci0gICAgICAgICAgICAgICAgYm8gPSAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAweEZGRkUwMDAwKSB7Ci0gICAgICAgICAgICAgICAgcSArPSA0OwotICAgICAgICAgICAgICAgIGJvID0gMTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAoYm8gPT0gMCAmJiBzaXplID49IDQpIHsKKyAgICAgICAgUHlfVUNTNCBib20gPSAocVszXSA8PCAyNCkgfCAocVsyXSA8PCAxNikgfCAocVsxXSA8PCA4KSB8IHFbMF07CisgICAgICAgIGlmIChib20gPT0gMHgwMDAwRkVGRikgeworICAgICAgICAgICAgYm8gPSAtMTsKKyAgICAgICAgICAgIHEgKz0gNDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFMDAwMCkgeworICAgICAgICAgICAgYm8gPSAxOworICAgICAgICAgICAgcSArPSA0OworICAgICAgICB9CisgICAgICAgIGlmIChieXRlb3JkZXIpCisgICAgICAgICAgICAqYnl0ZW9yZGVyID0gYm87CisgICAgfQorCisgICAgaWYgKHEgPT0gZSkgeworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgPSBzaXplOworICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICB9CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyAgICBsZSA9IGJvIDwgMDsKICNlbHNlCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4MDAwMEZFRkYpIHsKLSAgICAgICAgICAgICAgICBxICs9IDQ7Ci0gICAgICAgICAgICAgICAgYm8gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9tID09IDB4RkZGRTAwMDApIHsKLSAgICAgICAgICAgICAgICBxICs9IDQ7Ci0gICAgICAgICAgICAgICAgYm8gPSAtMTsKLSAgICAgICAgICAgIH0KKyAgICBsZSA9IGJvIDw9IDA7CiAjZW5kaWYKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICB3cml0ZXIubWluX2xlbmd0aCA9IChlIC0gcSArIDMpIC8gNDsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpID09IC0xKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gMDsKKyAgICAgICAgUHlfVUNTNCBtYXhjaCA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXIuYnVmZmVyKTsKKworICAgICAgICBpZiAoZSAtIHEgPj0gNCkgeworICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gd3JpdGVyLmtpbmQ7CisgICAgICAgICAgICB2b2lkICpkYXRhID0gd3JpdGVyLmRhdGE7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpsYXN0ID0gZSAtIDQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IHdyaXRlci5wb3M7CisgICAgICAgICAgICBpZiAobGUpIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gKHFbM10gPDwgMjQpIHwgKHFbMl0gPDwgMTYpIHwgKHFbMV0gPDwgOCkgfCBxWzBdOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPiBtYXhjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgcG9zKyssIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgcSArPSA0OworICAgICAgICAgICAgICAgIH0gd2hpbGUgKHEgPD0gbGFzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gKHFbMF0gPDwgMjQpIHwgKHFbMV0gPDwgMTYpIHwgKHFbMl0gPDwgOCkgfCBxWzNdOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPiBtYXhjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgcG9zKyssIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgcSArPSA0OworICAgICAgICAgICAgICAgIH0gd2hpbGUgKHEgPD0gbGFzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZXIucG9zID0gcG9zOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgaWYgKGJvID09IC0xKSB7Ci0gICAgICAgIC8qIGZvcmNlIExFICovCi0gICAgICAgIGlvcmRlclswXSA9IDA7Ci0gICAgICAgIGlvcmRlclsxXSA9IDE7Ci0gICAgICAgIGlvcmRlclsyXSA9IDI7Ci0gICAgICAgIGlvcmRlclszXSA9IDM7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJvID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaW9yZGVyWzBdID0gMzsKLSAgICAgICAgaW9yZGVyWzFdID0gMjsKLSAgICAgICAgaW9yZGVyWzJdID0gMTsKLSAgICAgICAgaW9yZGVyWzNdID0gMDsKLSAgICB9Ci0KLSAgICAvKiBUaGlzIG1pZ2h0IGJlIG9uZSB0byBtdWNoLCBiZWNhdXNlIG9mIGEgQk9NICovCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoKHNpemUrMykvNCwgMTI3KTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiB1bmljb2RlOwotICAgIG91dHBvcyA9IDA7Ci0KLSAgICB3aGlsZSAocSA8IGUpIHsKLSAgICAgICAgUHlfVUNTNCBjaDsKLSAgICAgICAgLyogcmVtYWluaW5nIGJ5dGVzIGF0IHRoZSBlbmQ/IChzaXplIHNob3VsZCBiZSBkaXZpc2libGUgYnkgNCkgKi8KLSAgICAgICAgaWYgKGUtcTw0KSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgIGlmIChjaCA8PSBtYXhjaCkgeworICAgICAgICAgICAgaWYgKHEgPT0gZSB8fCBjb25zdW1lZCkKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qIHJlbWFpbmluZyBieXRlcyBhdCB0aGUgZW5kPyAoc2l6ZSBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IDQpICovCiAgICAgICAgICAgICBlcnJtc2cgPSAidHJ1bmNhdGVkIGRhdGEiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gKChjb25zdCBjaGFyICopZSktc3RhcnRzOwotICAgICAgICAgICAgZ290byB1dGYzMkVycm9yOwotICAgICAgICAgICAgLyogVGhlIHJlbWFpbmluZyBpbnB1dCBjaGFycyBhcmUgaWdub3JlZCBpZiB0aGUgY2FsbGJhY2sKLSAgICAgICAgICAgICAgIGNob29zZXMgdG8gc2tpcCB0aGUgaW5wdXQgKi8KKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gKChjb25zdCBjaGFyICopZSkgLSBzdGFydHM7CiAgICAgICAgIH0KLSAgICAgICAgY2ggPSAocVtpb3JkZXJbM11dIDw8IDI0KSB8IChxW2lvcmRlclsyXV0gPDwgMTYpIHwKLSAgICAgICAgICAgIChxW2lvcmRlclsxXV0gPDwgOCkgfCBxW2lvcmRlclswXV07Ci0KLSAgICAgICAgaWYgKGNoID49IDB4MTEwMDAwKQotICAgICAgICB7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNoIDwgMHgxMTAwMDApIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIHEgKz0gNDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVycm1zZyA9ICJjb2RlcG9pbnQgbm90IGluIHJhbmdlKDB4MTEwMDAwKSI7Ci0gICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSktc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzQ7Ci0gICAgICAgICAgICBnb3RvIHV0ZjMyRXJyb3I7CisgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyA0OwogICAgICAgICB9Ci0gICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIHEgKz0gNDsKLSAgICAgICAgY29udGludWU7Ci0gICAgICB1dGYzMkVycm9yOgotICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisKKyAgICAgICAgLyogVGhlIHJlbWFpbmluZyBpbnB1dCBjaGFycyBhcmUgaWdub3JlZCBpZiB0aGUgY2FsbGJhY2sKKyAgICAgICAgICAgY2hvb3NlcyB0byBza2lwIHRoZSBpbnB1dCAqLworICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmMzIiLCBlcnJtc2csCiAgICAgICAgICAgICAgICAgJnN0YXJ0cywgKGNvbnN0IGNoYXIgKiopJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsIChjb25zdCBjaGFyICoqKSZxLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyKQotICAgICAgICAqYnl0ZW9yZGVyID0gYm87Ci0KICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IChjb25zdCBjaGFyICopcS1zdGFydHM7CiAKLSAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKLSAgICAgICAgZ290byBvbkVycm9yOwotCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTExMSw3ICs1MDc0LDcgQEAKICAgICB1bnNpZ25lZCBjaGFyICpwOwogICAgIFB5X3NzaXplX3QgbnNpemUsIGk7CiAgICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCi0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KKyNpZiBQWV9MSVRUTEVfRU5ESUFOCiAgICAgaW50IGlvcmRlcltdID0gezAsIDEsIDIsIDN9OwogI2Vsc2UKICAgICBpbnQgaW9yZGVyW10gPSB7MywgMiwgMSwgMH07CkBAIC01MjE0LDggKzUxNzcsNyBAQAogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCiAgICAgaW50IG5hdGl2ZV9vcmRlcmluZzsKQEAgLTUyNTMsNyArNTIxNSw3IEBACiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIH0KIAotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisjaWYgUFlfTElUVExFX0VORElBTgogICAgIG5hdGl2ZV9vcmRlcmluZyA9IGJvIDw9IDA7CiAjZWxzZQogICAgIG5hdGl2ZV9vcmRlcmluZyA9IGJvID49IDA7CkBAIC01MjYxLDMyICs1MjIzLDMyIEBACiAKICAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQogICAgICAgIGNoYXJhY3RlciBjb3VudCAqLwotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChlIC0gcSArIDEpIC8gMiwgMTI3KTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICB3cml0ZXIubWluX2xlbmd0aCA9IChlIC0gcSArIDEpIC8gMjsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpID09IC0xKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAKLSAgICBvdXRwb3MgPSAwOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSAwOwogICAgICAgICBpZiAoZSAtIHEgPj0gMikgewotICAgICAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgICAgIGludCBraW5kID0gd3JpdGVyLmtpbmQ7CiAgICAgICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh3cml0ZXIuYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X1VDUzEqKXdyaXRlci5kYXRhLCAmd3JpdGVyLnBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2ggPSB1Y3MxbGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVUNTMSopd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgICAgICAgICBjaCA9IHVjczJsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVUNTMiopd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOwogICAgICAgICAgICAgICAgIGNoID0gdWNzNGxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VQ1M0Kil3cml0ZXIuZGF0YSwgJndyaXRlci5wb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01MzIyLDEyICs1Mjg0LDEyIEBACiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLAogICAgICAgICAgICAgICAgICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjE2IiwgZXJybXNnLApAQCAtNTMzNyw4ICs1Mjk5LDcgQEAKICAgICAgICAgICAgICAgICAmZW5kaW5wb3MsCiAgICAgICAgICAgICAgICAgJmV4YywKICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKikmcSwKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwKLSAgICAgICAgICAgICAgICAmb3V0cG9zKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTUzNDYsMTYgKzUzMDcsMTIgQEAKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IChjb25zdCBjaGFyICopcS1zdGFydHM7CiAKLSAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKLSAgICAgICAgZ290byBvbkVycm9yOwotCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTM3Myw3ICs1MzMwLDcgQEAKICAgICB1bnNpZ25lZCBzaG9ydCAqb3V0OwogICAgIFB5X3NzaXplX3QgYnl0ZXNpemU7CiAgICAgUHlfc3NpemVfdCBwYWlyczsKLSNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyNpZiBQWV9CSUdfRU5ESUFOCiAgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA+PSAwOwogI2Vsc2UKICAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CkBAIC01NTIxLDI3ICs1NDc4LDI2IEBACiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgY2hhciogbWVzc2FnZTsKICAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIFB5X3NzaXplX3QgaTsKIAogICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogCiAgICAgLyogQWZ0ZXIgbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKCkgdGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZXMsCiAgICAgICAgZWl0aGVyIHRoZSBzdHJpbmcgaXMgcHVyZSBBU0NJSSB3aXRoIG5hbWVkIGVzY2FwZXMgbGlrZSBcbiwgZXRjLgogICAgICAgIGFuZCB3ZSBkZXRlcm1pbmVkIGl0J3MgZXhhY3Qgc2l6ZSAoY29tbW9uIGNhc2UpCiAgICAgICAgb3IgaXQgY29udGFpbnMgXHgsIFx1LCAuLi4gZXNjYXBlIHNlcXVlbmNlcy4gIHRoZW4gd2UgY3JlYXRlIGEKICAgICAgICBsZWdhY3kgd2NoYXIgc3RyaW5nIGFuZCByZXNpemUgaXQgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLiAqLwotICAgIGlmIChsZW4gPj0gMCkgewotICAgICAgICB2ID0gUHlVbmljb2RlX05ldyhsZW4sIDEyNyk7Ci0gICAgICAgIGlmICghdikKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHYpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBsZW47CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwpAQCAtNTU0OSwxNSArNTUwNSwxMSBAQAogICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KICAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCiAgICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKLSAgICAgICAgaWYgKCF2KQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBsZW4gPSBzaXplOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CiAgICAgfQogCiAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgaSA9IDA7CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKICAgICBlbmQgPSBzICsgc2l6ZTsKIAogICAgIHdoaWxlIChzIDwgZW5kKSB7CkBAIC01NTY1LDEzICs1NTE3LDExIEBACiAgICAgICAgIFB5X1VDUzQgeDsKICAgICAgICAgaW50IGRpZ2l0czsKIAotICAgICAgICAvKiBUaGUgb25seSBjYXNlIGluIHdoaWNoIGkgPT0gYXNjaWlfbGVuZ3RoIGlzIGEgYmFja3NsYXNoCi0gICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgbmV3bGluZS4gKi8KLSAgICAgICAgYXNzZXJ0KGkgPD0gbGVuKTsKLQogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZpLCAodW5zaWduZWQgY2hhcikgKnMrKykgPCAwKQorICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzOworICAgICAgICAgICAgcysrOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNTU4MywxOCArNTUzMywxNCBAQAogICAgICAgICBpZiAocyA+IGVuZCkKICAgICAgICAgICAgIGMgPSAnXDAnOyAvKiBJbnZhbGlkIGFmdGVyIFwgKi8KIAotICAgICAgICAvKiBUaGUgb25seSBjYXNlIGluIHdoaWNoIGkgPT0gYXNjaWlfbGVuZ3RoIGlzIGEgYmFja3NsYXNoCi0gICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgbmV3bGluZS4gKi8KLSAgICAgICAgYXNzZXJ0KGkgPCBsZW4gfHwgKGkgPT0gbGVuICYmIGMgPT0gJ1xuJykpOwotCiAgICAgICAgIHN3aXRjaCAoYykgewogCiAgICAgICAgICAgICAvKiBceCBlc2NhcGVzICovCi0jZGVmaW5lIFdSSVRFQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZpLCBjaCkgPCAwKSAgICBcCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH13aGlsZSgwKQorI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAoY2gpKSA8IDApICAgIFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICBjYXNlICdcbic6IGJyZWFrOwogICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7CkBAIC01NzE4LDM1ICs1NjY0LDMyIEBACiAKICAgICAgIGVycm9yOgogICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmdiwgJmkpKQorICAgICAgICAgICAgICAgICZ3cml0ZXIpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKICAgICAgICAgY29udGludWU7CiAgICAgfQogI3VuZGVmIFdSSVRFQ0hBUgogCi0gICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBpKSA8IDApCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgdWNuaGFzaEVycm9yOgogICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgUHlFeGNfVW5pY29kZUVycm9yLAogICAgICAgICAiXFxOIGVzY2FwZXMgbm90IHN1cHBvcnRlZCAoY2FuJ3QgbG9hZCB1bmljb2RlZGF0YSBtb2R1bGUpIgogICAgICAgICApOwotICAgIFB5X1hERUNSRUYodik7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTg5OSwyMyArNTg0MiwyMiBAQAogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKmJzOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CisKICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCi0gICAgdiA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgb3V0cG9zID0gMDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworCiAgICAgZW5kID0gcyArIHNpemU7CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjOwpAQCAtNTkyNSw3ICs1ODY3LDggQEAKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsICh1bnNpZ25lZCBjaGFyKSpzKyspIDwgMCkKKyAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNTkzNyw3ICs1ODgwLDggQEAKICAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKICAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgKHVuc2lnbmVkIGNoYXIpKnMrKykgPCAwKQorICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoKChzIC0gYnMpICYgMSkgPT0gMCB8fApAQCAtNTk0NSw3ICs1ODg5LDcgQEAKICAgICAgICAgICAgICgqcyAhPSAndScgJiYgKnMgIT0gJ1UnKSkgewogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgb3V0cG9zLS07CisgICAgICAgIHdyaXRlci5wb3MtLTsKICAgICAgICAgY291bnQgPSAqcz09J3UnID8gNCA6IDg7CiAgICAgICAgIHMrKzsKIApAQCAtNTk1NCwxMSArNTg5OCwxMSBAQAogICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKICAgICAgICAgICAgIH0KQEAgLTU5NzEsMjggKzU5MTUsMjcgQEAKICAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdBJzsKICAgICAgICAgfQogICAgICAgICBpZiAoeCA8PSBNQVhfVU5JQ09ERSkgewotICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgeCkgPCAwKQorICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQorICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgIG5leHRCeXRlOgogICAgICAgICA7CiAgICAgfQotICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgb3V0cG9zKSA8IDApCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNjA5Miw4ICs2MDM1LDcgQEAKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwotICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5T2JqZWN0ICp2OworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpyZWFzb247CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CkBAIC02MTA0LDE1ICs2MDQ2LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAxKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBYWFggb3ZlcmZsb3cgZGV0ZWN0aW9uIG1pc3NpbmcgKi8KLSAgICB2ID0gUHlVbmljb2RlX05ldygoc2l6ZStQeV9VTklDT0RFX1NJWkUtMSkvIFB5X1VOSUNPREVfU0laRSwgMTI3KTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpID09IDApCi0gICAgICAgIHJldHVybiB2OwotICAgIG91dHBvcyA9IDA7Ci0gICAgZW5kID0gcyArIHNpemU7CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgaWYgKHNpemUgLyBQeV9VTklDT0RFX1NJWkUgPiBQWV9TU0laRV9UX01BWCAtIDEpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICB3cml0ZXIubWluX2xlbmd0aCA9IChzaXplICsgKFB5X1VOSUNPREVfU0laRSAtIDEpKSAvIFB5X1VOSUNPREVfU0laRTsKKworICAgIGVuZCA9IHMgKyBzaXplOwogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIFB5X1VOSUNPREUgdWNoOwogICAgICAgICBQeV9VQ1M0IGNoOwpAQCAtNjE1NCwyOCArNjA5OCwyNiBAQAogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgY29udGludWU7CiAKICAgZXJyb3I6CiAgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzOwotICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIiwgcmVhc29uLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQotICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih2KTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTY1MzksNyArNjQ4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgaW50IGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CkBAIC02NTU2LDQ2ICs2NDk4LDQ2IEBACiAgICAgaWYgKHNpemUgPT0gMSAmJiAodW5zaWduZWQgY2hhcilzWzBdIDwgMTI4KQogICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKXNbMF0pOwogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBlID0gcyArIHNpemU7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKICAgICBvdXRwb3MgPSBhc2NpaV9kZWNvZGUocywgZSwgKFB5X1VDUzEgKilkYXRhKTsKLSAgICBpZiAob3V0cG9zID09IHNpemUpCi0gICAgICAgIHJldHVybiB1bmljb2RlOworICAgIHdyaXRlci5wb3MgPSBvdXRwb3M7CisgICAgaWYgKHdyaXRlci5wb3MgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCi0gICAgcyArPSBvdXRwb3M7Ci0gICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgIHMgKz0gd3JpdGVyLnBvczsKKyAgICBraW5kID0gd3JpdGVyLmtpbmQ7CiAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICBpZiAoYyA8IDEyOCkgewotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIG91dHBvcysrLCBjKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjKTsKKyAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKICAgICAgICAgICAgICsrczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7Ci0gICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCisgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKLSAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgIGtpbmQgPSB3cml0ZXIua2luZDsKKyAgICAgICAgICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQotICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKLSAgICByZXR1cm4gdW5pY29kZTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHVuaWNvZGUpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNjYyNyw3ICs2NTY5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogRmFzdCBwYXRoOiBpZiBpdCBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZywgY29uc3RydWN0IGJ5dGVzIG9iamVjdAogICAgICAgIGRpcmVjdGx5LiBFbHNlIGRlZmVyIHRvIGFib3ZlIGZ1bmN0aW9uIHRvIHJhaXNlIHRoZSBleGNlcHRpb24uICovCi0gICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOwogICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKQEAgLTY3MDUsOCArNjY0Nyw4IEBACiAgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCBpbiBzdHJpY3QKICAqIG1vZGUuCiAgKgotICogUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIHJldHVybnMgLTIgb24gZGVjb2RlIGVycm9yLCBvciByYWlzZSBhCi0gKiBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMgLTEgb24gb3RoZXIgZXJyb3IuCisgKiBSZXR1cm5zIGNvbnN1bWVkIHNpemUgaWYgc3VjY2VlZCwgcmV0dXJucyAtMiBvbiBkZWNvZGUgZXJyb3IsIG9yIHJhaXNlIGFuCisgKiBPU0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgogICovCiBzdGF0aWMgaW50CiBkZWNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwKQEAgLTY3NTcsNyArNjY5OSw3IEBACiAgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3Qgd2l0aCBhbiBlcnJvcgogICogaGFuZGxlci4KICAqCi0gKiBSZXR1cm5zIGNvbnN1bWVkIHNpemUgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3Igb3IKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCBvciByYWlzZSBhbiBPU0Vycm9yIG9yCiAgKiBVbmljb2RlRGVjb2RlRXJyb3IgZXhjZXB0aW9uIGFuZCByZXR1cm5zIC0xIG9uIGVycm9yLgogICovCiBzdGF0aWMgaW50CkBAIC02Nzc2LDcgKzY3MTgsOCBAQAogICAgIC8qIGVhY2ggc3RlcCBjYW5ub3QgZGVjb2RlIG1vcmUgdGhhbiAxIGNoYXJhY3RlciwgYnV0IGEgY2hhcmFjdGVyIGNhbiBiZQogICAgICAgIHJlcHJlc2VudGVkIGFzIGEgc3Vycm9nYXRlIHBhaXIgKi8KICAgICB3Y2hhcl90IGJ1ZmZlclsyXSwgKnN0YXJ0b3V0LCAqb3V0OwotICAgIGludCBpbnNpemUsIG91dHNpemU7CisgICAgaW50IGluc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG91dHNpemU7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CkBAIC02ODU2LDcgKzY3OTksNyBAQAogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IGluIC0gc3RhcnRpbjsKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CiAgICAgICAgICAgICBvdXRwb3MgPSBvdXQgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7Ci0gICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd2NoYXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0aW4sICZlbmRpbiwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJmluLApAQCAtNzAxMiw3ICs2OTU1LDcgQEAKICAqIG1vZGUuCiAgKgogICogUmV0dXJucyBjb25zdW1lZCBjaGFyYWN0ZXJzIGlmIHN1Y2NlZWQsIHJldHVybnMgLTIgb24gZW5jb2RlIGVycm9yLCBvciByYWlzZQotICogYSBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMgLTEgb24gb3RoZXIgZXJyb3IuCisgKiBhbiBPU0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgogICovCiBzdGF0aWMgaW50CiBlbmNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKQEAgLTcwNDYsMTAgKzY5ODksMTEgQEAKICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KHNpemUgPD0gSU5UX01BWCk7CiAKICAgICAvKiBGaXJzdCBnZXQgdGhlIHNpemUgb2YgdGhlIHJlc3VsdCAqLwogICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCAoaW50KXNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKTsKICAgICBpZiAob3V0c2l6ZSA8PSAwKQpAQCAtNzA4Niw3ICs3MDMwLDcgQEAKIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCiAgICAgb3V0c2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoY29kZV9wYWdlLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIChpbnQpc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIG91dHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CiAgICAgUHlfQ0xFQVIoc3Vic3RyaW5nKTsKQEAgLTcxMDgsNyArNzA1Miw3IEBACiAgKiBFbmNvZGUgYSBVbmljb2RlIHN0cmluZyB0byBhIFdpbmRvd3MgY29kZSBwYWdlIGludG8gYSBieXRlIHN0cmluZyB1c2luZyBhCiAgKiBlcnJvciBoYW5kbGVyLgogICoKLSAqIFJldHVybnMgY29uc3VtZWQgY2hhcmFjdGVycyBpZiBzdWNjZWVkLCBvciByYWlzZSBhIFdpbmRvd3NFcnJvciBhbmQgcmV0dXJucworICogUmV0dXJucyBjb25zdW1lZCBjaGFyYWN0ZXJzIGlmIHN1Y2NlZWQsIG9yIHJhaXNlIGFuIE9TRXJyb3IgYW5kIHJldHVybnMKICAqIC0xIG9uIG90aGVyIGVycm9yLgogICovCiBzdGF0aWMgaW50CkBAIC03MTk0LDkgKzcxMzgsOCBAQAogICAgICAgICAgICAgY2hhcnNpemUgPSAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2ggLT0gMHgxMDAwMDsKLSAgICAgICAgICAgIGNoYXJzWzBdID0gMHhkODAwICsgKGNoID4+IDEwKTsKLSAgICAgICAgICAgIGNoYXJzWzFdID0gMHhkYzAwICsgKGNoICYgMHgzZmYpOworICAgICAgICAgICAgY2hhcnNbMF0gPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgIGNoYXJzWzFdID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKICAgICAgICAgICAgIGNoYXJzaXplID0gMjsKICAgICAgICAgfQogCkBAIC03Mzg5LDIyMCArNzMzMiwyNTggQEAKIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKK3N0YXRpYyBpbnQKK2NoYXJtYXBfZGVjb2RlX3N0cmluZyhjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CisgICAgY29uc3QgY2hhciAqZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3MsIGVuZGlucG9zOworICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMLCAqZXhjID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG1hcGxlbjsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG1hcGtpbmQ7CisgICAgdm9pZCAqbWFwZGF0YTsKKyAgICBQeV9VQ1M0IHg7CisgICAgdW5zaWduZWQgY2hhciBjaDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobWFwcGluZykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG1hcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG1hcHBpbmcpOworICAgIG1hcGRhdGEgPSBQeVVuaWNvZGVfREFUQShtYXBwaW5nKTsKKyAgICBtYXBraW5kID0gUHlVbmljb2RlX0tJTkQobWFwcGluZyk7CisKKyAgICBlID0gcyArIHNpemU7CisKKyAgICBpZiAobWFwa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCAmJiBtYXBsZW4gPj0gMjU2KSB7CisgICAgICAgIC8qIGZhc3QtcGF0aCBmb3IgY3AwMzcsIGNwNTAwIGFuZCBpc284ODU5XzEgZW5jb2RpbmdzLiBpc284ODU5XzEKKyAgICAgICAgICogaXMgZGlzYWJsZWQgaW4gZW5jb2RpbmcgYWxpYXNlcywgbGF0aW4xIGlzIHByZWZlcnJlZCBiZWNhdXNlCisgICAgICAgICAqIGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBmYXN0ZXIuICovCisgICAgICAgIFB5X1VDUzEgKm1hcGRhdGFfdWNzMSA9IChQeV9VQ1MxICopbWFwZGF0YTsKKyAgICAgICAgUHlfVUNTMSAqb3V0ZGF0YSA9IChQeV9VQ1MxICopd3JpdGVyLT5kYXRhOworICAgICAgICBQeV9VQ1M0IG1heGNoYXIgPSB3cml0ZXItPm1heGNoYXI7CisKKyAgICAgICAgYXNzZXJ0ICh3cml0ZXItPmtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgICAgICAgIGNoID0gKnM7CisgICAgICAgICAgICB4ID0gbWFwZGF0YV91Y3MxW2NoXTsKKyAgICAgICAgICAgIGlmICh4ID4gbWF4Y2hhcikgeworICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCAxLCAweGZmKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSB3cml0ZXItPm1heGNoYXI7CisgICAgICAgICAgICAgICAgb3V0ZGF0YSA9IChQeV9VQ1MxICopd3JpdGVyLT5kYXRhOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ZGF0YVt3cml0ZXItPnBvc10gPSB4OworICAgICAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgICAgaWYgKG1hcGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgJiYgbWFwbGVuID49IDI1NikgeworICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBvdXRraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICAgICAgUHlfVUNTMiAqbWFwZGF0YV91Y3MyID0gKFB5X1VDUzIgKiltYXBkYXRhOworICAgICAgICAgICAgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1MxICpvdXRkYXRhID0gKFB5X1VDUzEgKil3cml0ZXItPmRhdGE7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBtYXhjaGFyID0gd3JpdGVyLT5tYXhjaGFyOworICAgICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgeworICAgICAgICAgICAgICAgICAgICBjaCA9ICpzOworICAgICAgICAgICAgICAgICAgICB4ID0gbWFwZGF0YV91Y3MyW2NoXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHggPiBtYXhjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgb3V0ZGF0YVt3cml0ZXItPnBvc10gPSB4OworICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcysrOworICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAob3V0a2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIFB5X1VDUzIgKm91dGRhdGEgPSAoUHlfVUNTMiAqKXdyaXRlci0+ZGF0YTsKKyAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSAqczsKKyAgICAgICAgICAgICAgICAgICAgeCA9IG1hcGRhdGFfdWNzMltjaF07CisgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDB4RkZGRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIG91dGRhdGFbd3JpdGVyLT5wb3NdID0geDsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgKytzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjaCA9ICpzOworCisgICAgICAgIGlmIChjaCA8IG1hcGxlbikKKyAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChtYXBraW5kLCBtYXBkYXRhLCBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHggPSAweGZmZmU7IC8qIGludmFsaWQgdmFsdWUgKi8KK0Vycm9yOgorICAgICAgICBpZiAoeCA9PSAweGZmZmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCisgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgImNoYXJtYXAiLCAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgICAgIHdyaXRlcikpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSh3cml0ZXIsIHgpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgKytzOworICAgIH0KKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiAwOworCitvbkVycm9yOgorICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50CitjaGFybWFwX2RlY29kZV9tYXBwaW5nKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CisgICAgY29uc3QgY2hhciAqZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3MsIGVuZGlucG9zOworICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMLCAqZXhjID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyIGNoOworICAgIFB5T2JqZWN0ICprZXksICppdGVtID0gTlVMTDsKKworICAgIGUgPSBzICsgc2l6ZTsKKworICAgIHdoaWxlIChzIDwgZSkgeworICAgICAgICBjaCA9ICpzOworCisgICAgICAgIC8qIEdldCBtYXBwaW5nIChjaGFyIG9yZGluYWwgLT4gaW50ZWdlciwgVW5pY29kZSBjaGFyIG9yIE5vbmUpICovCisgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyljaCk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICBpdGVtID0gUHlPYmplY3RfR2V0SXRlbShtYXBwaW5nLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfTG9va3VwRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgLyogTm8gbWFwcGluZyBmb3VuZCBtZWFuczogbWFwcGluZyBpcyB1bmRlZmluZWQuICovCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICBnb3RvIFVuZGVmaW5lZDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEFwcGx5IG1hcHBpbmcgKi8KKyAgICAgICAgaWYgKGl0ZW0gPT0gUHlfTm9uZSkKKyAgICAgICAgICAgIGdvdG8gVW5kZWZpbmVkOworICAgICAgICBpZiAoUHlMb25nX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgICAgICBsb25nIHZhbHVlID0gUHlMb25nX0FTX0xPTkcoaXRlbSk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gMHhGRkZFKQorICAgICAgICAgICAgICAgIGdvdG8gVW5kZWZpbmVkOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHglbHgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpTUFYX1VOSUNPREUgKyAxKTsKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSh3cml0ZXIsIHZhbHVlKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhpdGVtKSkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpdGVtKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSkgPT0gMSkgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGl0ZW0sIDApOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAweEZGRkUpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gVW5kZWZpbmVkOworICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSh3cml0ZXIsIHZhbHVlKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIGl0ZW0pID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiB3cm9uZyByZXR1cm4gdmFsdWUgKi8KKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgcmV0dXJuIGludGVnZXIsIE5vbmUgb3Igc3RyIik7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlfQ0xFQVIoaXRlbSk7CisgICAgICAgICsrczsKKyAgICAgICAgY29udGludWU7CisKK1VuZGVmaW5lZDoKKyAgICAgICAgLyogdW5kZWZpbmVkIG1hcHBpbmcgKi8KKyAgICAgICAgUHlfQ0xFQVIoaXRlbSk7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7CisgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICJjaGFybWFwIiwgImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IiwKKyAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgd3JpdGVyKSkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgfQorICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIDA7CisKK29uRXJyb3I6CisgICAgUHlfWERFQ1JFRihpdGVtKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiAtMTsKK30KKwogUHlPYmplY3QgKgogUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgY29uc3QgY2hhciAqZTsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IGV4dHJhY2hhcnMgPSAwOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOwogCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKIAotICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiB2OwotICAgIG91dHBvcyA9IDA7Ci0gICAgZSA9IHMgKyBzaXplOworICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgd3JpdGVyLm1pbl9sZW5ndGgsIDEyNykgPT0gLTEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChtYXBwaW5nKSkgewotICAgICAgICBQeV9zc2l6ZV90IG1hcGxlbjsKLSAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBtYXBraW5kOwotICAgICAgICB2b2lkICptYXBkYXRhOwotICAgICAgICBQeV9VQ1M0IHg7Ci0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShtYXBwaW5nKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIG1hcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG1hcHBpbmcpOwotICAgICAgICBtYXBkYXRhID0gUHlVbmljb2RlX0RBVEEobWFwcGluZyk7Ci0gICAgICAgIG1hcGtpbmQgPSBQeVVuaWNvZGVfS0lORChtYXBwaW5nKTsKLSAgICAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoOwotICAgICAgICAgICAgaWYgKG1hcGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgJiYgbWFwbGVuID49IDI1NikgewotICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgb3V0a2luZCA9IFB5VW5pY29kZV9LSU5EKHYpOwotICAgICAgICAgICAgICAgIGlmIChvdXRraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQgKm91dGRhdGEgPSBQeVVuaWNvZGVfREFUQSh2KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHYpOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChQeVVuaWNvZGVfMkJZVEVfS0lORCwgbWFwZGF0YSwgY2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPiBtYXhjaGFyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlXzFCWVRFX0tJTkQsIG91dGRhdGEsIG91dHBvcysrLCB4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAob3V0a2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewotICAgICAgICAgICAgICAgICAgICB2b2lkICpvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEodik7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaCA9ICpzOwotICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5VW5pY29kZV9SRUFEKFB5VW5pY29kZV8yQllURV9LSU5ELCBtYXBkYXRhLCBjaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSAweEZGRkUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfMkJZVEVfS0lORCwgb3V0ZGF0YSwgb3V0cG9zKyssIHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgKytzOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKnM7Ci0KLSAgICAgICAgICAgIGlmIChjaCA8IG1hcGxlbikKLSAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQobWFwa2luZCwgbWFwZGF0YSwgY2gpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHggPSAweGZmZmU7IC8qIGludmFsaWQgdmFsdWUgKi8KLUVycm9yOgotICAgICAgICAgICAgaWYgKHggPT0gMHhmZmZlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjaGFybWFwIiwgImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgKytzOwotICAgICAgICB9CisgICAgICAgIGlmIChjaGFybWFwX2RlY29kZV9zdHJpbmcocywgc2l6ZSwgbWFwcGluZywgZXJyb3JzLCAmd3JpdGVyKSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp3LCAqeDsKLQotICAgICAgICAgICAgLyogR2V0IG1hcHBpbmcgKGNoYXIgb3JkaW5hbCAtPiBpbnRlZ2VyLCBVbmljb2RlIGNoYXIgb3IgTm9uZSkgKi8KLSAgICAgICAgICAgIHcgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpY2gpOwotICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShtYXBwaW5nLCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Mb29rdXBFcnJvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogTm8gbWFwcGluZyBmb3VuZCBtZWFuczogbWFwcGluZyBpcyB1bmRlZmluZWQuICovCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gVW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8qIEFwcGx5IG1hcHBpbmcgKi8KLSAgICAgICAgICAgIGlmICh4ID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgZ290byBVbmRlZmluZWQ7Ci0gICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHgpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZyB2YWx1ZSA9IFB5TG9uZ19BU19MT05HKHgpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAweEZGRkUpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gVW5kZWZpbmVkOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBNQVhfVU5JQ09ERSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHglbHgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKU1BWF9VTklDT0RFICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB2YWx1ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZTsKLQotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoeCkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRhcmdldHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KTsKLQotICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaXplID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogMS0xIG1hcHBpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCB2YWx1ZSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoeCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAweEZGRkUpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIFVuZGVmaW5lZDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgdmFsdWUpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldHNpemUgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIDEtbiBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaXplID4gZXh0cmFjaGFycykgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVzaXplIGZpcnN0ICovCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5lZWRlZCA9ICh0YXJnZXRzaXplIC0gZXh0cmFjaGFycykgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldHNpemUgPDwgMik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzICs9IG5lZWRlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgbmVlZGVkKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV93aWRlbigmdiwgb3V0cG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoeCkpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyh2LCBvdXRwb3MsIHgsIDAsIHRhcmdldHNpemUpOwotICAgICAgICAgICAgICAgICAgICBvdXRwb3MgKz0gdGFyZ2V0c2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyAtPSB0YXJnZXRzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiAxLTAgbWFwcGluZzogc2tpcCB0aGUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiB3cm9uZyByZXR1cm4gdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCByZXR1cm4gaW50ZWdlciwgTm9uZSBvciBzdHIiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgKytzOwotICAgICAgICAgICAgY29udGludWU7Ci1VbmRlZmluZWQ6Ci0gICAgICAgICAgICAvKiB1bmRlZmluZWQgbWFwcGluZyAqLwotICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAotICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICJjaGFybWFwIiwgImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IiwKLSAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpIHsKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNoYXJtYXBfZGVjb2RlX21hcHBpbmcocywgc2l6ZSwgbWFwcGluZywgZXJyb3JzLCAmd3JpdGVyKSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQotICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgb3V0cG9zKSA8IDApCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYodik7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC04MTE2LDEwICs4MDk3LDE0IEBACiAgICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsCiAgICAgICogMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KICAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgdm9pZCAqZGF0YTsKKyAgICBpbnQga2luZDsKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwogCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKQEAgLTgxMzQsNyArODExOSw3IEBACiAgICAgICAgIHJldHVybiByZXM7CiAKICAgICB3aGlsZSAoaW5wb3M8c2l6ZSkgewotICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbnBvcyk7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbnBvcyk7CiAgICAgICAgIC8qIHRyeSB0byBlbmNvZGUgaXQgKi8KICAgICAgICAgY2hhcm1hcGVuY29kZV9yZXN1bHQgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KGNoLCBtYXBwaW5nLCAmcmVzLCAmcmVzcG9zKTsKICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pIC8qIGVycm9yICovCkBAIC04MjIwLDE5ICs4MjA1LDYgQEAKICAgICB9CiB9CiAKLS8qIHJhaXNlcyBhIFVuaWNvZGVUcmFuc2xhdGVFcnJvciAqLwotc3RhdGljIHZvaWQKLXJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQotewotICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7Ci0gICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKLSAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7Ci19Ci0KIC8qIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrIGhlbHBlcjoKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBwdXQgdGhlIHJlc3VsdCBpbnRvIG5ld3BvcyBhbmQgcmV0dXJuIHRoZSByZXBsYWNlbWVudCBzdHJpbmcsIHdoaWNoCkBAIC04NTA4LDggKzg0ODAsMTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7CiAgICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4YywgaW5wdXQsIGNvbGxzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlbmQsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKCZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgaWYgKGV4YyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwogICAgICAgICAgICAgICAgIC8qIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHNwYWNlLCB0aGlzIGlzIGEgMToxIHJlcGxhY2VtZW50ICovCkBAIC05MTAxLDcgKzkwNzUsNyBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAogICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpID09IDApCiAgICAgICAgIHJldHVybiAxOwpAQCAtOTEzOSw3ICs5MTEzLDYgQEAKICAgICAgICAgICAgIC8qIFdlIGRvIG5vdCBuZWVkIHRvIGNvbXBhcmUgMCBhbmQgbGVuKHN1YnN0cmluZyktMSBiZWNhdXNlCiAgICAgICAgICAgICAgICB0aGUgaWYgc3RhdGVtZW50IGFib3ZlIGVuc3VyZWQgYWxyZWFkeSB0aGF0IHRoZXkgYXJlIGVxdWFsCiAgICAgICAgICAgICAgICB3aGVuIHdlIGVuZCB1cCBoZXJlLiAqLwotICAgICAgICAgICAgLyogVE9ETzogaG9ub3IgZGlyZWN0aW9uIGFuZCBkbyBhIGZvcndhcmQgb3IgYmFja3dhcmRzIHNlYXJjaCAqLwogICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IGVuZF9zdWI7ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kX3NlbGYsIGRhdGFfc2VsZiwgb2Zmc2V0ICsgaSkgIT0KICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCBpKSkKQEAgLTk2MDEsNDEgKzk1NzQsNDkgQEAKICAgICAgICAgICAgIHNlcF9kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VwKTsKICAgICB9CiAjZW5kaWYKLSAgICBmb3IgKGkgPSAwLCByZXNfb2Zmc2V0ID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaXRlbWxlbjsKLSAgICAgICAgaXRlbSA9IGl0ZW1zW2ldOwotICAgICAgICAvKiBDb3B5IGl0ZW0sIGFuZCBtYXliZSB0aGUgc2VwYXJhdG9yLiAqLwotICAgICAgICBpZiAoaSAmJiBzZXBsZW4gIT0gMCkgewotICAgICAgICAgICAgaWYgKHVzZV9tZW1jcHkpIHsKKyAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VxbGVuOyArK2kpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbWxlbjsKKyAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTsKKworICAgICAgICAgICAgLyogQ29weSBpdGVtLCBhbmQgbWF5YmUgdGhlIHNlcGFyYXRvci4gKi8KKyAgICAgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIHNlcGxlbik7CiAgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIHNlcGxlbjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgcmVzX29mZnNldCwgc2VwLCAwLCBzZXBsZW4pOwotICAgICAgICAgICAgICAgIHJlc19vZmZzZXQgKz0gc2VwbGVuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKLSAgICAgICAgaWYgKGl0ZW1sZW4gIT0gMCkgewotICAgICAgICAgICAgaWYgKHVzZV9tZW1jcHkpIHsKKworICAgICAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICAgICAgaWYgKGl0ZW1sZW4gIT0gMCkgewogICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoaXRlbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBpdGVtbGVuKTsKICAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogaXRlbWxlbjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICB9CisgICAgICAgIGFzc2VydChyZXNfZGF0YSA9PSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICArIGtpbmQgKiBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IDAsIHJlc19vZmZzZXQgPSAwOyBpIDwgc2VxbGVuOyArK2kpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbWxlbjsKKyAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTsKKworICAgICAgICAgICAgLyogQ29weSBpdGVtLCBhbmQgbWF5YmUgdGhlIHNlcGFyYXRvci4gKi8KKyAgICAgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCByZXNfb2Zmc2V0LCBzZXAsIDAsIHNlcGxlbik7CisgICAgICAgICAgICAgICAgcmVzX29mZnNldCArPSBzZXBsZW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKKyAgICAgICAgICAgIGlmIChpdGVtbGVuICE9IDApIHsKICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIHJlc19vZmZzZXQsIGl0ZW0sIDAsIGl0ZW1sZW4pOwogICAgICAgICAgICAgICAgIHJlc19vZmZzZXQgKz0gaXRlbWxlbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICBpZiAodXNlX21lbWNweSkKLSAgICAgICAgYXNzZXJ0KHJlc19kYXRhID09IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICsga2luZCAqIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcykpOwotICAgIGVsc2UKICAgICAgICAgYXNzZXJ0KHJlc19vZmZzZXQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CisgICAgfQogCiAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKQEAgLTEwMDI3LDYgKzEwMDA4LDMxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkCityZXBsYWNlXzFjaGFyX2lucGxhY2UoUHlPYmplY3QgKnUsIFB5X3NzaXplX3QgcG9zLAorICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdTEsIFB5X1VDUzQgdTIsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICB1Y3MxbGliX3JlcGxhY2VfMWNoYXJfaW5wbGFjZSgoUHlfVUNTMSAqKWRhdGEgKyBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VQ1MxICopZGF0YSArIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTEsIHUyLCBtYXhjb3VudCk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgdWNzMmxpYl9yZXBsYWNlXzFjaGFyX2lucGxhY2UoKFB5X1VDUzIgKilkYXRhICsgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVUNTMiAqKWRhdGEgKyBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxLCB1MiwgbWF4Y291bnQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICB1Y3M0bGliX3JlcGxhY2VfMWNoYXJfaW5wbGFjZSgoUHlfVUNTNCAqKWRhdGEgKyBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VQ1M0ICopZGF0YSArIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTEsIHUyLCBtYXhjb3VudCk7CisgICAgfQorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cjEsCiAgICAgICAgIFB5T2JqZWN0ICpzdHIyLCBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMTAwNDMsNyArMTAwNDksNyBAQAogICAgIFB5X3NzaXplX3QgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpOwogICAgIFB5X3NzaXplX3QgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpOwogICAgIGludCBtYXlzaHJpbms7Ci0gICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyX3N0cjI7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyX3N0cjEsIG1heGNoYXJfc3RyMjsKIAogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CkBAIC0xMDA1MiwxNSArMTAwNTgsMTYgQEAKIAogICAgIGlmIChzdHIxID09IHN0cjIpCiAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICBpZiAoc2tpbmQgPCBraW5kMSkKLSAgICAgICAgLyogc3Vic3RyaW5nIHRvbyB3aWRlIHRvIGJlIHByZXNlbnQgKi8KLSAgICAgICAgZ290byBub3RoaW5nOwogCiAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZWxmKTsKKyAgICBtYXhjaGFyX3N0cjEgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyMSk7CisgICAgaWYgKG1heGNoYXIgPCBtYXhjaGFyX3N0cjEpCisgICAgICAgIC8qIHN1YnN0cmluZyB0b28gd2lkZSB0byBiZSBwcmVzZW50ICovCisgICAgICAgIGdvdG8gbm90aGluZzsKICAgICBtYXhjaGFyX3N0cjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyMik7CiAgICAgLyogUmVwbGFjaW5nIHN0cjEgd2l0aCBzdHIyIG1heSBjYXVzZSBhIG1heGNoYXIgcmVkdWN0aW9uIGluIHRoZQogICAgICAgIHJlc3VsdCBzdHJpbmcuICovCi0gICAgbWF5c2hyaW5rID0gKG1heGNoYXJfc3RyMiA8IG1heGNoYXIpOworICAgIG1heXNocmluayA9IChtYXhjaGFyX3N0cjIgPCBtYXhjaGFyX3N0cjEpICYmIChtYXhjaGFyID09IG1heGNoYXJfc3RyMSk7CiAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBtYXhjaGFyX3N0cjIpOwogCiAgICAgaWYgKGxlbjEgPT0gbGVuMikgewpAQCAtMTAwNzAsMzUgKzEwMDc3LDE5IEBACiAgICAgICAgIGlmIChsZW4xID09IDEpIHsKICAgICAgICAgICAgIC8qIHJlcGxhY2UgY2hhcmFjdGVycyAqLwogICAgICAgICAgICAgUHlfVUNTNCB1MSwgdTI7Ci0gICAgICAgICAgICBpbnQgcmtpbmQ7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4LCBwb3M7Ci0gICAgICAgICAgICBjaGFyICpzcmM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvczsKIAotICAgICAgICAgICAgdTEgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0cjEsIDApOwotICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc2J1ZiwgUHlVbmljb2RlX0tJTkQoc2VsZiksIHNsZW4sIHUxLCAxKTsKKyAgICAgICAgICAgIHUxID0gUHlVbmljb2RlX1JFQUQoa2luZDEsIGJ1ZjEsIDApOworICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc2J1Ziwgc2tpbmQsIHNsZW4sIHUxLCAxKTsKICAgICAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgICAgIHUyID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHIyLCAwKTsKKyAgICAgICAgICAgIHUyID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGJ1ZjIsIDApOwogICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHUsIDAsIHNlbGYsIDAsIHNsZW4pOwotICAgICAgICAgICAgcmtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKIAotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCBQeVVuaWNvZGVfREFUQSh1KSwgcG9zLCB1Mik7Ci0gICAgICAgICAgICBpbmRleCA9IDA7Ci0gICAgICAgICAgICBzcmMgPSBzYnVmOwotICAgICAgICAgICAgd2hpbGUgKC0tbWF4Y291bnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgICAgc3JjICs9IHBvcyAqIFB5VW5pY29kZV9LSU5EKHNlbGYpOwotICAgICAgICAgICAgICAgIHNsZW4gLT0gcG9zOwotICAgICAgICAgICAgICAgIGluZGV4ICs9IHBvczsKLSAgICAgICAgICAgICAgICBwb3MgPSBmaW5kY2hhcihzcmMsIFB5VW5pY29kZV9LSU5EKHNlbGYpLCBzbGVuLCB1MSwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBvcyA8IDApCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgUHlVbmljb2RlX0RBVEEodSksIGluZGV4ICsgcG9zLCB1Mik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCAwLCBzZWxmLCAwLCBzbGVuKTsKKyAgICAgICAgICAgIHJlcGxhY2VfMWNoYXJfaW5wbGFjZSh1LCBwb3MsIHUxLCB1MiwgbWF4Y291bnQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CkBAIC0xMDQxMCw5ICsxMDQwMSwyOCBAQAogc3RhdGljIGludAogdW5pY29kZV9jb21wYXJlKFB5T2JqZWN0ICpzdHIxLCBQeU9iamVjdCAqc3RyMikKIHsKKyNkZWZpbmUgQ09NUEFSRShUWVBFMSwgVFlQRTIpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgVFlQRTEqIHAxID0gKFRZUEUxICopZGF0YTE7IFwKKyAgICAgICAgVFlQRTIqIHAyID0gKFRZUEUyICopZGF0YTI7IFwKKyAgICAgICAgVFlQRTEqIGVuZCA9IHAxICsgbGVuOyBcCisgICAgICAgIFB5X1VDUzQgYzEsIGMyOyBcCisgICAgICAgIGZvciAoOyBwMSAhPSBlbmQ7IHAxKyssIHAyKyspIHsgXAorICAgICAgICAgICAgYzEgPSAqcDE7IFwKKyAgICAgICAgICAgIGMyID0gKnAyOyBcCisgICAgICAgICAgICBpZiAoYzEgIT0gYzIpIFwKKyAgICAgICAgICAgICAgICByZXR1cm4gKGMxIDwgYzIpID8gLTEgOiAxOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIHdoaWxlICgwKQorCiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpkYXRhMSwgKmRhdGEyOwotICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaTsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGxlbjsKKworICAgIC8qIGEgc3RyaW5nIGlzIGVxdWFsIHRvIGl0c2VsZiAqLworICAgIGlmIChzdHIxID09IHN0cjIpCisgICAgICAgIHJldHVybiAwOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIxKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN0cjIpOwpAQCAtMTA0MjAsMTkgKzEwNDMwLDEyMCBAQAogICAgIGRhdGEyID0gUHlVbmljb2RlX0RBVEEoc3RyMik7CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKTsKKyAgICBsZW4gPSBQeV9NSU4obGVuMSwgbGVuMik7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuMSAmJiBpIDwgbGVuMjsgKytpKSB7Ci0gICAgICAgIFB5X1VDUzQgYzEsIGMyOwotICAgICAgICBjMSA9IFB5VW5pY29kZV9SRUFEKGtpbmQxLCBkYXRhMSwgaSk7Ci0gICAgICAgIGMyID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGRhdGEyLCBpKTsKLQotICAgICAgICBpZiAoYzEgIT0gYzIpCi0gICAgICAgICAgICByZXR1cm4gKGMxIDwgYzIpID8gLTEgOiAxOworICAgIHN3aXRjaChraW5kMSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgeworICAgICAgICBzd2l0Y2goa2luZDIpIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGNtcCA9IG1lbWNtcChkYXRhMSwgZGF0YTIsIGxlbik7CisgICAgICAgICAgICAvKiBub3JtYWxpemUgcmVzdWx0IG9mIG1lbWNtcCgpIGludG8gdGhlIHJhbmdlIFstMTsgMV0gKi8KKyAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIENPTVBBUkUoUHlfVUNTMSwgUHlfVUNTMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIENPTVBBUkUoUHlfVUNTMSwgUHlfVUNTNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICB7CisgICAgICAgIHN3aXRjaChraW5kMikgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgQ09NUEFSRShQeV9VQ1MyLCBQeV9VQ1MxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICB7CisgICAgICAgICAgICBDT01QQVJFKFB5X1VDUzIsIFB5X1VDUzIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIENPTVBBUkUoUHlfVUNTMiwgUHlfVUNTNCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICB7CisgICAgICAgIHN3aXRjaChraW5kMikgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgQ09NUEFSRShQeV9VQ1M0LCBQeV9VQ1MxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgQ09NUEFSRShQeV9VQ1M0LCBQeV9VQ1MyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICB7CisjaWYgZGVmaW5lZChIQVZFX1dNRU1DTVApICYmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICAgICAgICAgIGludCBjbXAgPSB3bWVtY21wKCh3Y2hhcl90ICopZGF0YTEsICh3Y2hhcl90ICopZGF0YTIsIGxlbik7CisgICAgICAgICAgICAvKiBub3JtYWxpemUgcmVzdWx0IG9mIHdtZW1jbXAoKSBpbnRvIHRoZSByYW5nZSBbLTE7IDFdICovCisgICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyNlbHNlCisgICAgICAgICAgICBDT01QQVJFKFB5X1VDUzQsIFB5X1VDUzQpOworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CiAgICAgfQogCi0gICAgcmV0dXJuIChsZW4xIDwgbGVuMikgPyAtMSA6IChsZW4xICE9IGxlbjIpOworICAgIGlmIChsZW4xID09IGxlbjIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChsZW4xIDwgbGVuMikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDE7CisKKyN1bmRlZiBDT01QQVJFCiB9CiAKK3N0YXRpYyBpbnQKK3VuaWNvZGVfY29tcGFyZV9lcShQeU9iamVjdCAqc3RyMSwgUHlPYmplY3QgKnN0cjIpCit7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTEsICpkYXRhMjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgY21wOworCisgICAgLyogYSBzdHJpbmcgaXMgZXF1YWwgdG8gaXRzZWxmICovCisgICAgaWYgKHN0cjEgPT0gc3RyMikKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgIT0gbGVuKQorICAgICAgICByZXR1cm4gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyMSk7CisgICAgaWYgKFB5VW5pY29kZV9LSU5EKHN0cjIpICE9IGtpbmQpCisgICAgICAgIHJldHVybiAwOworICAgIGRhdGExID0gUHlVbmljb2RlX0RBVEEoc3RyMSk7CisgICAgZGF0YTIgPSBQeVVuaWNvZGVfREFUQShzdHIyKTsKKworICAgIGNtcCA9IG1lbWNtcChkYXRhMSwgZGF0YTIsIGxlbiAqIGtpbmQpOworICAgIHJldHVybiAoY21wID09IDApOworfQorCisKIGludAogUHlVbmljb2RlX0NvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKQEAgLTEwNDgzLDM2ICsxMDU5NCwyNyBAQAogUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGludCBvcCkKIHsKICAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICp2OwogCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xIHx8Ci0gICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmlnaHQpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCkgfHwKLSAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKGxlZnQpICE9IFB5VW5pY29kZV9LSU5EKHJpZ2h0KSkgewotICAgICAgICAgICAgaWYgKG9wID09IFB5X0VRKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlfRmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAob3AgPT0gUHlfTkUpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5X1RydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCi0gICAgICAgICAgICByZXN1bHQgPSAwOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGxlZnQpIHx8ICFQeVVuaWNvZGVfQ2hlY2socmlnaHQpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxlZnQpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7CisgICAgICAgIHJlc3VsdCA9IHVuaWNvZGVfY29tcGFyZV9lcShsZWZ0LCByaWdodCk7CisgICAgICAgIGlmIChvcCA9PSBQeV9FUSkKKyAgICAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gdW5pY29kZV9jb21wYXJlKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIHYgPSBURVNUX0NPTkQoIXJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSB1bmljb2RlX2NvbXBhcmUobGVmdCwgcmlnaHQpOwogCiAgICAgICAgIC8qIENvbnZlcnQgdGhlIHJldHVybiB2YWx1ZSB0byBhIEJvb2xlYW4gKi8KICAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIFB5X0VROgotICAgICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPT0gMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQeV9ORToKLSAgICAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0ICE9IDApOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHlfTEU6CiAgICAgICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA8PSAwKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA1MjksMTggKzEwNjMxLDE2IEBACiAgICAgICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHYpOwotICAgICAgICByZXR1cm4gdjsKICAgICB9Ci0KLSAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgUHlfSU5DUkVGKHYpOworICAgIHJldHVybiB2OwogfQogCiBpbnQKIFB5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLCBQeU9iamVjdCAqZWxlbWVudCkKIHsKICAgICBQeU9iamVjdCAqc3RyLCAqc3ViOwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgaW50IHJlc3VsdDsKQEAgLTEwNTU5LDIzICsxMDY1OSwxOCBAQAogICAgICAgICBQeV9ERUNSRUYoc3ViKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7Ci0gICAga2luZCA9IGtpbmQxOwogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOwogICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOwotICAgIGlmIChraW5kMiAhPSBraW5kKSB7Ci0gICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKKyAgICAgICAgaWYgKGtpbmQyID4ga2luZDEpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kKTsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZDEpOwogICAgIH0KICAgICBpZiAoIWJ1ZjIpIHsKICAgICAgICAgUHlfREVDUkVGKHN1Yik7CkBAIC0xMDU4NSw3ICsxMDY4MCw3IEBACiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7CiAKLSAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgcmVzdWx0ID0gdWNzMWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOwogICAgICAgICBicmVhazsKQEAgLTEwNjAzLDcgKzEwNjk4LDcgQEAKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICBQeV9ERUNSRUYoc3ViKTsKIAotICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDY3OSw3ICsxMDc3NCw4IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGVmdCA9ICpwX2xlZnQ7Ci0gICAgaWYgKHJpZ2h0ID09IE5VTEwgfHwgbGVmdCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sobGVmdCkpIHsKKyAgICBpZiAocmlnaHQgPT0gTlVMTCB8fCBsZWZ0ID09IE5VTEwKKyAgICAgICAgfHwgIVB5VW5pY29kZV9DaGVjayhsZWZ0KSB8fCAhUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTEwNzE5LDE1ICsxMDgxNSw5IEBACiAgICAgICAgICYmICEoUHlVbmljb2RlX0lTX0FTQ0lJKGxlZnQpICYmICFQeVVuaWNvZGVfSVNfQVNDSUkocmlnaHQpKSkKICAgICB7CiAgICAgICAgIC8qIGFwcGVuZCBpbnBsYWNlICovCi0gICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShwX2xlZnQsIG5ld19sZW4pICE9IDApIHsKLSAgICAgICAgICAgIC8qIFhYWCBpZiBfUHlVbmljb2RlX1Jlc2l6ZSgpIGZhaWxzLCAnbGVmdCcgaGFzIGJlZW4KLSAgICAgICAgICAgICAqIGRlYWxsb2NhdGVkIHNvIGl0IGNhbm5vdCBiZSBwdXQgYmFjayBpbnRvCi0gICAgICAgICAgICAgKiAndmFyaWFibGUnLiAgVGhlIE1lbW9yeUVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZXJlCi0gICAgICAgICAgICAgKiBpcyBubyB2YWx1ZSBpbiAndmFyaWFibGUnLCB3aGljaCBtaWdodCAodmVyeQotICAgICAgICAgICAgICogcmVtb3RlbHkpIGJlIGEgY2F1c2Ugb2YgaW5jb21wYXRpYmlsaXRpZXMuCi0gICAgICAgICAgICAgKi8KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHBfbGVmdCwgbmV3X2xlbikgIT0gMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KKwogICAgICAgICAvKiBjb3B5ICdyaWdodCcgaW50byB0aGUgbmV3bHkgYWxsb2NhdGVkIGFyZWEgb2YgJ2xlZnQnICovCiAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKCpwX2xlZnQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKICAgICB9CkBAIC0xMDc4Myw4ICsxMDg3MywxMCBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQyID4ga2luZDEpCisgICAgaWYgKGtpbmQyID4ga2luZDEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgfQogICAgIGtpbmQgPSBraW5kMTsKICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CkBAIC0xMDk2MiwxMCArMTEwNTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCkBAIC0xMTA4OCwxMCArMTExODQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCkBAIC0xMTYyMSw2ICsxMTcyMSw3IEBACiAgICAgaW50IGtpbmQ7CiAgICAgUHlfc3NpemVfdCBpLCBqLCBsZW47CiAgICAgQkxPT01fTUFTSyBzZXBtYXNrOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc2Vwb2JqKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTYyOCwyNCArMTE3MjksMzUgQEAKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcG9iaik7CiAgICAgc2VwbWFzayA9IG1ha2VfYmxvb21fbWFzayhQeVVuaWNvZGVfS0lORChzZXBvYmopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoc2Vwb2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcG9iaikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwbGVuKTsKIAogICAgIGkgPSAwOwogICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgewotICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJgotICAgICAgICAgICAgICAgQkxPT01fTUVNQkVSKHNlcG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBzZXBvYmopKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICBpZiAoIUJMT09NKHNlcG1hc2ssIGNoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfRmluZENoYXIoc2Vwb2JqLCBjaCwgMCwgc2VwbGVuLCAxKSA8IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBqID0gbGVuOwogICAgIGlmIChzdHJpcHR5cGUgIT0gTEVGVFNUUklQKSB7Ci0gICAgICAgIGRvIHsKKyAgICAgICAgai0tOworICAgICAgICB3aGlsZSAoaiA+PSBpKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgICAgICBpZiAoIUJMT09NKHNlcG1hc2ssIGNoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfRmluZENoYXIoc2Vwb2JqLCBjaCwgMCwgc2VwbGVuLCAxKSA8IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBqLS07Ci0gICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJgotICAgICAgICAgICAgICAgICBCTE9PTV9NRU1CRVIoc2VwbWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaiksIHNlcG9iaikpOworICAgICAgICB9CisKICAgICAgICAgaisrOwogICAgIH0KIApAQCAtMTE2OTIsMzAgKzExODA0LDYzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZG9fc3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUpCiB7Ci0gICAgaW50IGtpbmQ7Ci0gICAgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbiwgaSwgajsKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIAotICAgIGkgPSAwOwotICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgewotICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7Ci0gICAgICAgICAgICBpKys7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkgeworICAgICAgICBQeV9VQ1MxICpkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisKKyAgICAgICAgaSA9IDA7CisgICAgICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgeworICAgICAgICAgICAgd2hpbGUgKGkgPCBsZW4pIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1MxIGNoID0gZGF0YVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIV9QeV9hc2NpaV93aGl0ZXNwYWNlW2NoXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaiA9IGxlbjsKKyAgICAgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKKyAgICAgICAgICAgIGotLTsKKyAgICAgICAgICAgIHdoaWxlIChqID49IGkpIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1MxIGNoID0gZGF0YVtqXTsKKyAgICAgICAgICAgICAgICBpZiAoIV9QeV9hc2NpaV93aGl0ZXNwYWNlW2NoXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgai0tOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaisrOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKLSAgICBqID0gbGVuOwotICAgIGlmIChzdHJpcHR5cGUgIT0gTEVGVFNUUklQKSB7Ci0gICAgICAgIGRvIHsKKyAgICAgICAgaSA9IDA7CisgICAgICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgeworICAgICAgICAgICAgd2hpbGUgKGkgPCBsZW4pIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBqID0gbGVuOworICAgICAgICBpZiAoc3RyaXB0eXBlICE9IExFRlRTVFJJUCkgewogICAgICAgICAgICAgai0tOwotICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopKSk7Ci0gICAgICAgIGorKzsKKyAgICAgICAgICAgIHdoaWxlIChqID49IGkpIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBqLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLCBpLCBqKTsKQEAgLTExOTM5LDcgKzEyMDg0LDcgQEAKICAgICBQeV9zc2l6ZV90IGlzaXplOwogICAgIFB5X3NzaXplX3Qgb3NpemUsIHNxdW90ZSwgZHF1b3RlLCBpLCBvOwogICAgIFB5X1VDUzQgbWF4LCBxdW90ZTsKLSAgICBpbnQgaWtpbmQsIG9raW5kOworICAgIGludCBpa2luZCwgb2tpbmQsIHVuY2hhbmdlZDsKICAgICB2b2lkICppZGF0YSwgKm9kYXRhOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKQEAgLTExOTUwLDcgKzEyMDk1LDcgQEAKIAogICAgIC8qIENvbXB1dGUgbGVuZ3RoIG9mIG91dHB1dCwgcXVvdGUgY2hhcmFjdGVycywgYW5kCiAgICAgICAgbWF4aW11bSBjaGFyYWN0ZXIgKi8KLSAgICBvc2l6ZSA9IDI7IC8qIHF1b3RlcyAqLworICAgIG9zaXplID0gMDsKICAgICBtYXggPSAxMjc7CiAgICAgc3F1b3RlID0gZHF1b3RlID0gMDsKICAgICBpa2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwpAQCAtMTE5ODEsNyArMTIxMjYsOSBAQAogICAgIH0KIAogICAgIHF1b3RlID0gJ1wnJzsKKyAgICB1bmNoYW5nZWQgPSAob3NpemUgPT0gaXNpemUpOwogICAgIGlmIChzcXVvdGUpIHsKKyAgICAgICAgdW5jaGFuZ2VkID0gMDsKICAgICAgICAgaWYgKGRxdW90ZSkKICAgICAgICAgICAgIC8qIEJvdGggc3F1b3RlIGFuZCBkcXVvdGUgcHJlc2VudC4gVXNlIHNxdW90ZSwKICAgICAgICAgICAgICAgIGFuZCBlc2NhcGUgdGhlbSAqLwpAQCAtMTE5ODksNiArMTIxMzYsNyBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBxdW90ZSA9ICciJzsKICAgICB9CisgICAgb3NpemUgKz0gMjsgICAvKiBxdW90ZXMgKi8KIAogICAgIHJlcHIgPSBQeVVuaWNvZGVfTmV3KG9zaXplLCBtYXgpOwogICAgIGlmIChyZXByID09IE5VTEwpCkBAIC0xMTk5OCw4MSArMTIxNDYsODcgQEAKIAogICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIDAsIHF1b3RlKTsKICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvc2l6ZS0xLCBxdW90ZSk7CisgICAgaWYgKHVuY2hhbmdlZCkgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXByLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGkgPSAwLCBvID0gMTsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChpa2luZCwgaWRhdGEsIGkpOwogCi0gICAgZm9yIChpID0gMCwgbyA9IDE7IGkgPCBpc2l6ZTsgaSsrKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChpa2luZCwgaWRhdGEsIGkpOwotCi0gICAgICAgIC8qIEVzY2FwZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzICovCi0gICAgICAgIGlmICgoY2ggPT0gcXVvdGUpIHx8IChjaCA9PSAnXFwnKSkgewotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwotICAgICAgICBpZiAoY2ggPT0gJ1x0JykgewotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3QnKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOwotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnbicpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7Ci0gICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdyJyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPT0gMHg3RikgewotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3gnKTsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl0pOwotICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIENvcHkgQVNDSUkgY2hhcmFjdGVycyBhcy1pcyAqLwotICAgICAgICBlbHNlIGlmIChjaCA8IDB4N0YpIHsKLSAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBNYXAgVW5pY29kZSB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMKLSAgICAgICAgICAgICAgIChjYXRlZ29yaWVzIFoqIGFuZCBDKiBleGNlcHQgQVNDSUkgc3BhY2UpCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKGNoKSkgeworICAgICAgICAgICAgLyogRXNjYXBlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgKi8KKyAgICAgICAgICAgIGlmICgoY2ggPT0gcXVvdGUpIHx8IChjaCA9PSAnXFwnKSkgewogICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7Ci0gICAgICAgICAgICAgICAgLyogTWFwIDgtYml0IGNoYXJhY3RlcnMgdG8gJ1x4aGgnICovCi0gICAgICAgICAgICAgICAgaWYgKGNoIDw9IDB4ZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAneCcpOwotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZmZmKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3UnKTsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0pOwotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweEZdKTsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhGXSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHhGXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnVScpOwotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhGXSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweEZdKTsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Rl0pOwotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhGXSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0pOwotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIENvcHkgY2hhcmFjdGVycyBhcy1pcyAqLwotICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCisgICAgICAgICAgICBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnbicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgeworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAncicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgJyAnIHx8IGNoID09IDB4N0YpIHsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3gnKTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb3B5IEFTQ0lJIGNoYXJhY3RlcnMgYXMtaXMgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHg3RikgeworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBOb24tQVNDSUkgY2hhcmFjdGVycyAqLworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogTWFwIFVuaWNvZGUgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICAgKGNhdGVnb3JpZXMgWiogYW5kIEMqIGV4Y2VwdCBBU0NJSSBzcGFjZSkKKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgICAgICAgICAgLyogTWFwIDgtYml0IGNoYXJhY3RlcnMgdG8gJ1x4aGgnICovCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA8PSAweGZmKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd4Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndScpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1UnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIENvcHkgY2hhcmFjdGVycyBhcy1pcyAqLworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjEwMiwxMCArMTIyNTYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIApAQCAtMTIxMzQsMTAgKzEyMjkyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKQEAgLTEyNzI2LDYgKzEyODg4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICAgICAgICAgIH0KQEAgLTEyNzQyLDYgKzEyOTA2LDggQEAKICAgICB9CiAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KIApAQCAtMTI3NzUsNiArMTI5NDEsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgKzEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICAgICAgfQpAQCAtMTI3OTAsMjcgKzEyOTU4LDM1IEBACiAgICAgfQogICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CiAKIFB5X0xPQ0FMX0lOTElORSh2b2lkKQogX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewotICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpCisgICAgICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogQ29weS1vbi13cml0ZSBtb2RlOiBzZXQgYnVmZmVyIHNpemUgdG8gMCBzbworICAgICAgICAgKiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKSB3aWxsIGNvcHkgKGFuZCBlbmxhcmdlKSB0aGUgYnVmZmVyIG9uCisgICAgICAgICAqIG5leHQgd3JpdGUuICovCisgICAgICAgIHdyaXRlci0+c2l6ZSA9IDA7CisgICAgfQogICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7CiAgICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOwogICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKIH0KIAogdm9pZAotX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBtaW5fbGVuZ3RoKQorX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBtZW1zZXQod3JpdGVyLCAwLCBzaXplb2YoKndyaXRlcikpOwogI2lmZGVmIFB5X0RFQlVHCiAgICAgd3JpdGVyLT5raW5kID0gNTsgICAgLyogaW52YWxpZCBraW5kICovCiAjZW5kaWYKLSAgICB3cml0ZXItPm1pbl9sZW5ndGggPSBQeV9NQVgobWluX2xlbmd0aCwgMTAwKTsKLSAgICB3cml0ZXItPm92ZXJhbGxvY2F0ZSA9IChtaW5fbGVuZ3RoID4gMCk7CisgICAgd3JpdGVyLT5taW5fY2hhciA9IDEyNzsKIH0KIAogaW50CkBAIC0xMjgyOCwyOSArMTMwMDQsMjggQEAKICAgICB9CiAgICAgbmV3bGVuID0gd3JpdGVyLT5wb3MgKyBsZW5ndGg7CiAKKyAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIHdyaXRlci0+bWluX2NoYXIpOworCiAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgIGFzc2VydCghd3JpdGVyLT5yZWFkb25seSk7CisgICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSAmJiBuZXdsZW4gPD0gKFBZX1NTSVpFX1RfTUFYIC0gbmV3bGVuIC8gNCkpIHsKICAgICAgICAgICAgIC8qIG92ZXJhbGxvY2F0ZSAyNSUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZXNpemUgKi8KLSAgICAgICAgICAgIGlmIChuZXdsZW4gPD0gKFBZX1NTSVpFX1RfTUFYIC0gbmV3bGVuIC8gNCkpCi0gICAgICAgICAgICAgICAgbmV3bGVuICs9IG5ld2xlbiAvIDQ7Ci0gICAgICAgICAgICBpZiAobmV3bGVuIDwgd3JpdGVyLT5taW5fbGVuZ3RoKQotICAgICAgICAgICAgICAgIG5ld2xlbiA9IHdyaXRlci0+bWluX2xlbmd0aDsKKyAgICAgICAgICAgIG5ld2xlbiArPSBuZXdsZW4gLyA0OwogICAgICAgICB9CisgICAgICAgIGlmIChuZXdsZW4gPCB3cml0ZXItPm1pbl9sZW5ndGgpCisgICAgICAgICAgICBuZXdsZW4gPSB3cml0ZXItPm1pbl9sZW5ndGg7CisKICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbiwgbWF4Y2hhcik7CiAgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOwotICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KLSAgICBpZiAobmV3bGVuID4gd3JpdGVyLT5zaXplKSB7Ci0gICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgIGVsc2UgaWYgKG5ld2xlbiA+IHdyaXRlci0+c2l6ZSkgeworICAgICAgICBpZiAod3JpdGVyLT5vdmVyYWxsb2NhdGUgJiYgbmV3bGVuIDw9IChQWV9TU0laRV9UX01BWCAtIG5ld2xlbiAvIDQpKSB7CiAgICAgICAgICAgICAvKiBvdmVyYWxsb2NhdGUgMjUlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVzaXplICovCi0gICAgICAgICAgICBpZiAobmV3bGVuIDw9IChQWV9TU0laRV9UX01BWCAtIG5ld2xlbiAvIDQpKQotICAgICAgICAgICAgICAgIG5ld2xlbiArPSBuZXdsZW4gLyA0OwotICAgICAgICAgICAgaWYgKG5ld2xlbiA8IHdyaXRlci0+bWluX2xlbmd0aCkKLSAgICAgICAgICAgICAgICBuZXdsZW4gPSB3cml0ZXItPm1pbl9sZW5ndGg7CisgICAgICAgICAgICBuZXdsZW4gKz0gbmV3bGVuIC8gNDsKICAgICAgICAgfQorICAgICAgICBpZiAobmV3bGVuIDwgd3JpdGVyLT5taW5fbGVuZ3RoKQorICAgICAgICAgICAgbmV3bGVuID0gd3JpdGVyLT5taW5fbGVuZ3RoOwogCiAgICAgICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IHdyaXRlci0+cmVhZG9ubHkpIHsKICAgICAgICAgICAgIC8qIHJlc2l6ZSArIHdpZGVuICovCkBAIC0xMjg2OCw3ICsxMzA0Myw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOwotICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOwogICAgIH0KICAgICBlbHNlIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyKSB7CiAgICAgICAgIGFzc2VydCghd3JpdGVyLT5yZWFkb25seSk7CkBAIC0xMjg3OSwxMSArMTMwNTMsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIDAsIHdyaXRlci0+cG9zKTsKICAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7Ci0gICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CiAgICAgfQorICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKK1B5X0xPQ0FMX0lOTElORShpbnQpCitfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpCit7CisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIDEsIGNoKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLT5raW5kLCB3cml0ZXItPmRhdGEsIHdyaXRlci0+cG9zLCBjaCk7CisgICAgd3JpdGVyLT5wb3MrKzsKKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKHdyaXRlciwgY2gpOworfQorCiBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqc3RyKQogewpAQCAtMTI4OTgsMTEgKzEzMDg4LDEwIEBACiAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOwogICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IGxlbiA+IHdyaXRlci0+c2l6ZSAtIHdyaXRlci0+cG9zKSB7CiAgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMICYmICF3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgd3JpdGVyLT5yZWFkb25seSA9IDE7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RyKTsKICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gc3RyOwogICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKLSAgICAgICAgICAgIHdyaXRlci0+cmVhZG9ubHkgPSAxOwotICAgICAgICAgICAgd3JpdGVyLT5zaXplID0gMDsKICAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IGxlbjsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMjkxNSwyOCArMTMxMDQsODIgQEAKICAgICByZXR1cm4gMDsKIH0KIAoraW50CitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3Vic3RyaW5nKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBhc3NlcnQoMCA8PSBzdGFydCk7CisgICAgYXNzZXJ0KGVuZCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKKyAgICBhc3NlcnQoc3RhcnQgPD0gZW5kKTsKKworICAgIGlmIChlbmQgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoc3RhcnQgPT0gMCAmJiBlbmQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBzdHIpOworCisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpID4gd3JpdGVyLT5tYXhjaGFyKQorICAgICAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcihzdHIsIHN0YXJ0LCBlbmQpOworICAgIGVsc2UKKyAgICAgICAgbWF4Y2hhciA9IHdyaXRlci0+bWF4Y2hhcjsKKyAgICBsZW4gPSBlbmQgLSBzdGFydDsKKworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBsZW4sIG1heGNoYXIpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgc3RhcnQsIGxlbik7CisgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgIHJldHVybiAwOworfQorCitpbnQKK19QeVVuaWNvZGVXcml0ZXJfV3JpdGVDc3RyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisKKyAgICBtYXhjaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKChQeV9VQ1MxKilzdHIsIChQeV9VQ1MxKilzdHIgKyBsZW4pOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBsZW4sIG1heGNoYXIpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgdW5pY29kZV93cml0ZV9jc3RyKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgc3RyLCBsZW4pOworICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICByZXR1cm4gMDsKK30KKwogUHlPYmplY3QgKgogX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogeworICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgaWYgKHdyaXRlci0+cG9zID09IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQogICAgIGlmICh3cml0ZXItPnJlYWRvbmx5KSB7Ci0gICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcikgPT0gd3JpdGVyLT5wb3MpOwotICAgICAgICByZXR1cm4gd3JpdGVyLT5idWZmZXI7CisgICAgICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IHdyaXRlci0+cG9zKTsKKyAgICAgICAgcmV0dXJuIHN0cjsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgewogICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwogICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOwogICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKICAgICB9Ci0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXItPmJ1ZmZlciwgMSkpOwotICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeSh3cml0ZXItPmJ1ZmZlcik7CisgICAgc3RyID0gd3JpdGVyLT5idWZmZXI7CisgICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3JlYWR5KHN0cik7CiB9CiAKIHZvaWQKQEAgLTEyOTcxLDcgKzEzMjE0LDcgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgcmV0ID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcigmd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgZm9ybWF0X3NwZWMsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOwpAQCAtMTMxOTAsMTYgKzEzNDMzLDM5IEBACiAKIC8qIEhlbHBlcnMgZm9yIFB5VW5pY29kZV9Gb3JtYXQoKSAqLwogCitzdHJ1Y3QgdW5pY29kZV9mb3JtYXR0ZXJfdCB7CisgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgaW50IGFyZ3Nfb3duZWQ7CisgICAgUHlfc3NpemVfdCBhcmdsZW4sIGFyZ2lkeDsKKyAgICBQeU9iamVjdCAqZGljdDsKKworICAgIGVudW0gUHlVbmljb2RlX0tpbmQgZm10a2luZDsKKyAgICBQeV9zc2l6ZV90IGZtdGNudCwgZm10cG9zOworICAgIHZvaWQgKmZtdGRhdGE7CisgICAgUHlPYmplY3QgKmZtdHN0cjsKKworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworfTsKKworc3RydWN0IHVuaWNvZGVfZm9ybWF0X2FyZ190IHsKKyAgICBQeV9VQ1M0IGNoOworICAgIGludCBmbGFnczsKKyAgICBQeV9zc2l6ZV90IHdpZHRoOworICAgIGludCBwcmVjOworICAgIGludCBzaWduOworfTsKKwogc3RhdGljIFB5T2JqZWN0ICoKLWdldG5leHRhcmcoUHlPYmplY3QgKmFyZ3MsIFB5X3NzaXplX3QgYXJnbGVuLCBQeV9zc2l6ZV90ICpwX2FyZ2lkeCkKK3VuaWNvZGVfZm9ybWF0X2dldG5leHRhcmcoc3RydWN0IHVuaWNvZGVfZm9ybWF0dGVyX3QgKmN0eCkKIHsKLSAgICBQeV9zc2l6ZV90IGFyZ2lkeCA9ICpwX2FyZ2lkeDsKLSAgICBpZiAoYXJnaWR4IDwgYXJnbGVuKSB7Ci0gICAgICAgICgqcF9hcmdpZHgpKys7Ci0gICAgICAgIGlmIChhcmdsZW4gPCAwKQotICAgICAgICAgICAgcmV0dXJuIGFyZ3M7CisgICAgUHlfc3NpemVfdCBhcmdpZHggPSBjdHgtPmFyZ2lkeDsKKworICAgIGlmIChhcmdpZHggPCBjdHgtPmFyZ2xlbikgeworICAgICAgICBjdHgtPmFyZ2lkeCsrOworICAgICAgICBpZiAoY3R4LT5hcmdsZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIGN0eC0+YXJnczsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5VHVwbGVfR2V0SXRlbShhcmdzLCBhcmdpZHgpOworICAgICAgICAgICAgcmV0dXJuIFB5VHVwbGVfR2V0SXRlbShjdHgtPmFyZ3MsIGFyZ2lkeCk7CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIGFyZ3VtZW50cyBmb3IgZm9ybWF0IHN0cmluZyIpOwpAQCAtMTMyMDgsMjMgKzEzNDc0LDM0IEBACiAKIC8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlVbmljb2RlIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLwogCisvKiBGb3JtYXQgYSBmbG9hdCBpbnRvIHRoZSB3cml0ZXIgaWYgdGhlIHdyaXRlciBpcyBub3QgTlVMTCwgb3IgaW50byAqcF9vdXRwdXQKKyAgIG90aGVyd2lzZS4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1mb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUsCi0gICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCitmb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgc3RydWN0IHVuaWNvZGVfZm9ybWF0X2FyZ190ICphcmcsCisgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAorICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIGNoYXIgKnA7CiAgICAgZG91YmxlIHg7CiAgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IHByZWM7CisgICAgaW50IGR0b2FfZmxhZ3M7CiAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIHByZWMgPSBhcmctPnByZWM7CiAgICAgaWYgKHByZWMgPCAwKQogICAgICAgICBwcmVjID0gNjsKIAotICAgIHAgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoeCwgdHlwZSwgcHJlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbGFncyAmIEZfQUxUKSA/IFB5X0RUU0ZfQUxUIDogMCwgTlVMTCk7CisgICAgaWYgKGFyZy0+ZmxhZ3MgJiBGX0FMVCkKKyAgICAgICAgZHRvYV9mbGFncyA9IFB5X0RUU0ZfQUxUOworICAgIGVsc2UKKyAgICAgICAgZHRvYV9mbGFncyA9IDA7CisgICAgcCA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCBhcmctPmNoLCBwcmVjLCBkdG9hX2ZsYWdzLCBOVUxMKTsKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbGVuID0gc3RybGVuKHApOwpAQCAtMTMyNjEsNyArMTM1MzgsNyBAQAogICogcHJvZHVjZSBhICctJyBzaWduLCBidXQgY2FuIGZvciBQeXRob24ncyB1bmJvdW5kZWQgaW50cy4KICAqLwogc3RhdGljIFB5T2JqZWN0KgotZm9ybWF0bG9uZyhQeU9iamVjdCAqdmFsLCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK2Zvcm1hdGxvbmcoUHlPYmplY3QgKnZhbCwgc3RydWN0IHVuaWNvZGVfZm9ybWF0X2FyZ190ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgY2hhciAqYnVmOwpAQCAtMTMyNzEsNiArMTM1NDgsOCBAQAogICAgIFB5X3NzaXplX3QgbGxlbjsKICAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KICAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKKyAgICBpbnQgcHJlYyA9IGFyZy0+cHJlYzsKKyAgICBpbnQgdHlwZSA9IGFyZy0+Y2g7CiAKICAgICAvKiBBdm9pZCBleGNlZWRpbmcgU1NJWkVfVF9NQVggKi8KICAgICBpZiAocHJlYyA+IElOVF9NQVgtMykgewpAQCAtMTMyODIsNyArMTM1NjEsMTAgQEAKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHZhbCkpOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KCEiJ3R5cGUnIG5vdCBpbiBbZGl1b3hYXSIpOwogICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ2knOgogICAgIGNhc2UgJ3UnOgogICAgICAgICAvKiBTcGVjaWFsLWNhc2UgYm9vbGVhbjogd2Ugd2FudCAwLzEgKi8KICAgICAgICAgaWYgKFB5Qm9vbF9DaGVjayh2YWwpKQpAQCAtMTMyOTksOCArMTM1ODEsNiBAQAogICAgICAgICBudW1ub25kaWdpdHMgPSAyOwogICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCAxNik7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGFzc2VydCghIid0eXBlJyBub3QgaW4gW2R1b3hYXSIpOwogICAgIH0KICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzMxMSwxMiArMTM1OTEsMTQgQEAKIAogICAgIC8qIFRvIG1vZGlmeSB0aGUgc3RyaW5nIGluLXBsYWNlLCB0aGVyZSBjYW4gb25seSBiZSBvbmUgcmVmZXJlbmNlLiAqLwogICAgIGlmIChQeV9SRUZDTlQocmVzdWx0KSAhPSAxKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CiAgICAgbGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAgICAgaWYgKGxsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeUJ5dGVzX0Zvcm1hdExvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzMyOCw3ICsxMzYxMCw3IEBACiAgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOwogCiAgICAgLyogR2V0IHJpZCBvZiBiYXNlIG1hcmtlciB1bmxlc3MgRl9BTFQgKi8KLSAgICBpZiAoKChmbGFncyAmIEZfQUxUKSA9PSAwICYmCisgICAgaWYgKCgoYXJnLT5mbGFncyAmIEZfQUxUKSA9PSAwICYmCiAgICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykpKSB7CiAgICAgICAgIGFzc2VydChidWZbc2lnbl0gPT0gJzAnKTsKICAgICAgICAgYXNzZXJ0KGJ1ZltzaWduKzFdID09ICd4JyB8fCBidWZbc2lnbisxXSA9PSAnWCcgfHwKQEAgLTEzMzczLDE1ICsxMzY1NSwxMDAgQEAKICAgICAgICAgICAgIGlmIChidWZbaV0gPj0gJ2EnICYmIGJ1ZltpXSA8PSAneCcpCiAgICAgICAgICAgICAgICAgYnVmW2ldIC09ICdhJy0nQSc7CiAgICAgfQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkgfHwgbGVuICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCkpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXN1bHQpCisgICAgICAgIHx8IGJ1ZiAhPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBsZW4pOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gdW5pY29kZTsKICAgICB9CisgICAgZWxzZSBpZiAobGVuICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgbGVuKSA8IDApCisgICAgICAgICAgICBQeV9DTEVBUihyZXN1bHQpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBGb3JtYXQgYW4gaW50ZWdlci4KKyAqIFJldHVybiAxIGlmIHRoZSBudW1iZXIgaGFzIGJlZW4gZm9ybWF0dGVkIGludG8gdGhlIHdyaXRlciwKKyAqICAgICAgICAwIGlmIHRoZSBudW1iZXIgaGFzIGJlZW4gZm9ybWF0dGVkIGludG8gKnBfb3V0cHV0CisgKiAgICAgICAtMSBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yICovCitzdGF0aWMgaW50CittYWluZm9ybWF0bG9uZyhQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgIHN0cnVjdCB1bmljb2RlX2Zvcm1hdF9hcmdfdCAqYXJnLAorICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwKKyAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeU9iamVjdCAqaW9iaiwgKnJlczsKKyAgICBjaGFyIHR5cGUgPSAoY2hhcilhcmctPmNoOworCisgICAgaWYgKCFQeU51bWJlcl9DaGVjayh2KSkKKyAgICAgICAgZ290byB3cm9uZ3R5cGU7CisKKyAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKKyAgICAgICAgaWYgKGlvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICBnb3RvIHdyb25ndHlwZTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKGlvYmopKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlvYmogPSB2OworICAgICAgICBQeV9JTkNSRUYoaW9iaik7CisgICAgfQorCisgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICYmIGFyZy0+d2lkdGggPT0gLTEgJiYgYXJnLT5wcmVjID09IC0xCisgICAgICAgICYmICEoYXJnLT5mbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkKKyAgICAgICAgJiYgdHlwZSAhPSAnWCcpCisgICAgeworICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgaW50IGFsdGVybmF0ZSA9IGFyZy0+ZmxhZ3MgJiBGX0FMVDsKKyAgICAgICAgaW50IGJhc2U7CisKKyAgICAgICAgc3dpdGNoKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIid0eXBlJyBub3QgaW4gW2RpdW94WF0iKTsKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICBiYXNlID0gODsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKHdyaXRlciwgdiwgYmFzZSwgYWx0ZXJuYXRlKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmVzID0gZm9ybWF0bG9uZyhpb2JqLCBhcmcpOworICAgIFB5X0RFQ1JFRihpb2JqKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAqcF9vdXRwdXQgPSByZXM7CisgICAgcmV0dXJuIDA7CisKK3dyb25ndHlwZToKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIiUlJWMgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgIgorICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAorICAgICAgICAgICAgdHlwZSwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIC0xOworfQorCiBzdGF0aWMgUHlfVUNTNAogZm9ybWF0Y2hhcihQeU9iamVjdCAqdikKIHsKQEAgLTEzNDE0LDU0MCArMTM3ODEsNTg3IEBACiAgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKIH0KIAorLyogUGFyc2Ugb3B0aW9ucyBvZiBhbiBhcmd1bWVudDogZmxhZ3MsIHdpZHRoLCBwcmVjaXNpb24uCisgICBIYW5kbGUgYWxzbyAiJShuYW1lKSIgc3ludGF4LgorCisgICBSZXR1cm4gMCBpZiB0aGUgYXJndW1lbnQgaGFzIGJlZW4gZm9ybWF0dGVkIGludG8gYXJnLT5zdHIuCisgICBSZXR1cm4gMSBpZiB0aGUgYXJndW1lbnQgaGFzIGJlZW4gd3JpdHRlbiBpbnRvIGN0eC0+d3JpdGVyLAorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitzdGF0aWMgaW50Cit1bmljb2RlX2Zvcm1hdF9hcmdfcGFyc2Uoc3RydWN0IHVuaWNvZGVfZm9ybWF0dGVyX3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdW5pY29kZV9mb3JtYXRfYXJnX3QgKmFyZykKK3sKKyNkZWZpbmUgRk9STUFUX1JFQUQoY3R4KSBcCisgICAgICAgIFB5VW5pY29kZV9SRUFEKChjdHgpLT5mbXRraW5kLCAoY3R4KS0+Zm10ZGF0YSwgKGN0eCktPmZtdHBvcykKKworICAgIFB5T2JqZWN0ICp2OworCisgICAgaWYgKGFyZy0+Y2ggPT0gJygnKSB7CisgICAgICAgIC8qIEdldCBhcmd1bWVudCB2YWx1ZSBmcm9tIGEgZGljdGlvbmFyeS4gRXhhbXBsZTogIiUobmFtZSlzIi4gKi8KKyAgICAgICAgUHlfc3NpemVfdCBrZXlzdGFydDsKKyAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CisgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgIGludCBwY291bnQgPSAxOworCisgICAgICAgIGlmIChjdHgtPmRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHJlcXVpcmVzIGEgbWFwcGluZyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgICsrY3R4LT5mbXRwb3M7CisgICAgICAgIC0tY3R4LT5mbXRjbnQ7CisgICAgICAgIGtleXN0YXJ0ID0gY3R4LT5mbXRwb3M7CisgICAgICAgIC8qIFNraXAgb3ZlciBiYWxhbmNlZCBwYXJlbnRoZXNlcyAqLworICAgICAgICB3aGlsZSAocGNvdW50ID4gMCAmJiAtLWN0eC0+Zm10Y250ID49IDApIHsKKyAgICAgICAgICAgIGFyZy0+Y2ggPSBGT1JNQVRfUkVBRChjdHgpOworICAgICAgICAgICAgaWYgKGFyZy0+Y2ggPT0gJyknKQorICAgICAgICAgICAgICAgIC0tcGNvdW50OworICAgICAgICAgICAgZWxzZSBpZiAoYXJnLT5jaCA9PSAnKCcpCisgICAgICAgICAgICAgICAgKytwY291bnQ7CisgICAgICAgICAgICBjdHgtPmZtdHBvcysrOworICAgICAgICB9CisgICAgICAgIGtleWxlbiA9IGN0eC0+Zm10cG9zIC0ga2V5c3RhcnQgLSAxOworICAgICAgICBpZiAoY3R4LT5mbXRjbnQgPCAwIHx8IHBjb3VudCA+IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCBrZXkiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBrZXkgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGN0eC0+Zm10c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN0YXJ0LCBrZXlzdGFydCArIGtleWxlbik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGN0eC0+YXJnc19vd25lZCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGN0eC0+YXJncyk7CisgICAgICAgICAgICBjdHgtPmFyZ3Nfb3duZWQgPSAwOworICAgICAgICB9CisgICAgICAgIGN0eC0+YXJncyA9IFB5T2JqZWN0X0dldEl0ZW0oY3R4LT5kaWN0LCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGN0eC0+YXJncyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBjdHgtPmFyZ3Nfb3duZWQgPSAxOworICAgICAgICBjdHgtPmFyZ2xlbiA9IC0xOworICAgICAgICBjdHgtPmFyZ2lkeCA9IC0yOworICAgIH0KKworICAgIC8qIFBhcnNlIGZsYWdzLiBFeGFtcGxlOiAiJStpIiA9PiBmbGFncz1GX1NJR04uICovCisgICAgd2hpbGUgKC0tY3R4LT5mbXRjbnQgPj0gMCkgeworICAgICAgICBhcmctPmNoID0gRk9STUFUX1JFQUQoY3R4KTsKKyAgICAgICAgY3R4LT5mbXRwb3MrKzsKKyAgICAgICAgc3dpdGNoIChhcmctPmNoKSB7CisgICAgICAgIGNhc2UgJy0nOiBhcmctPmZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOworICAgICAgICBjYXNlICcrJzogYXJnLT5mbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOworICAgICAgICBjYXNlICcgJzogYXJnLT5mbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnIyc6IGFyZy0+ZmxhZ3MgfD0gRl9BTFQ7IGNvbnRpbnVlOworICAgICAgICBjYXNlICcwJzogYXJnLT5mbGFncyB8PSBGX1pFUk87IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIFBhcnNlIHdpZHRoLiBFeGFtcGxlOiAiJTEwcyIgPT4gd2lkdGg9MTAgKi8KKyAgICBpZiAoYXJnLT5jaCA9PSAnKicpIHsKKyAgICAgICAgdiA9IHVuaWNvZGVfZm9ybWF0X2dldG5leHRhcmcoY3R4KTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogd2FudHMgaW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgYXJnLT53aWR0aCA9IFB5TG9uZ19Bc1NzaXplX3Qodik7CisgICAgICAgIGlmIChhcmctPndpZHRoID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChhcmctPndpZHRoIDwgMCkgeworICAgICAgICAgICAgYXJnLT5mbGFncyB8PSBGX0xKVVNUOworICAgICAgICAgICAgYXJnLT53aWR0aCA9IC1hcmctPndpZHRoOworICAgICAgICB9CisgICAgICAgIGlmICgtLWN0eC0+Zm10Y250ID49IDApIHsKKyAgICAgICAgICAgIGFyZy0+Y2ggPSBGT1JNQVRfUkVBRChjdHgpOworICAgICAgICAgICAgY3R4LT5mbXRwb3MrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChhcmctPmNoID49ICcwJyAmJiBhcmctPmNoIDw9ICc5JykgeworICAgICAgICBhcmctPndpZHRoID0gYXJnLT5jaCAtICcwJzsKKyAgICAgICAgd2hpbGUgKC0tY3R4LT5mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgYXJnLT5jaCA9IEZPUk1BVF9SRUFEKGN0eCk7CisgICAgICAgICAgICBjdHgtPmZtdHBvcysrOworICAgICAgICAgICAgaWYgKGFyZy0+Y2ggPCAnMCcgfHwgYXJnLT5jaCA+ICc5JykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qIFNpbmNlIGFyZy0+Y2ggaXMgdW5zaWduZWQsIHRoZSBSSFMgd291bGQgZW5kIHVwIGFzIHVuc2lnbmVkLAorICAgICAgICAgICAgICAgbWl4aW5nIHNpZ25lZCBhbmQgdW5zaWduZWQgY29tcGFyaXNvbi4gU2luY2UgYXJnLT5jaCBpcyBiZXR3ZWVuCisgICAgICAgICAgICAgICAnMCcgYW5kICc5JywgY2FzdGluZyB0byBpbnQgaXMgc2FmZS4gKi8KKyAgICAgICAgICAgIGlmIChhcmctPndpZHRoID4gKFBZX1NTSVpFX1RfTUFYIC0gKChpbnQpYXJnLT5jaCAtICcwJykpIC8gMTApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIHRvbyBiaWciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcmctPndpZHRoID0gYXJnLT53aWR0aCoxMCArIChhcmctPmNoIC0gJzAnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFBhcnNlIHByZWNpc2lvbi4gRXhhbXBsZTogIiUuM2YiID0+IHByZWM9MyAqLworICAgIGlmIChhcmctPmNoID09ICcuJykgeworICAgICAgICBhcmctPnByZWMgPSAwOworICAgICAgICBpZiAoLS1jdHgtPmZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICBhcmctPmNoID0gRk9STUFUX1JFQUQoY3R4KTsKKyAgICAgICAgICAgIGN0eC0+Zm10cG9zKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFyZy0+Y2ggPT0gJyonKSB7CisgICAgICAgICAgICB2ID0gdW5pY29kZV9mb3JtYXRfZ2V0bmV4dGFyZyhjdHgpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIHdhbnRzIGludCIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFyZy0+cHJlYyA9IF9QeUxvbmdfQXNJbnQodik7CisgICAgICAgICAgICBpZiAoYXJnLT5wcmVjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGFyZy0+cHJlYyA8IDApCisgICAgICAgICAgICAgICAgYXJnLT5wcmVjID0gMDsKKyAgICAgICAgICAgIGlmICgtLWN0eC0+Zm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICBhcmctPmNoID0gRk9STUFUX1JFQUQoY3R4KTsKKyAgICAgICAgICAgICAgICBjdHgtPmZtdHBvcysrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFyZy0+Y2ggPj0gJzAnICYmIGFyZy0+Y2ggPD0gJzknKSB7CisgICAgICAgICAgICBhcmctPnByZWMgPSBhcmctPmNoIC0gJzAnOworICAgICAgICAgICAgd2hpbGUgKC0tY3R4LT5mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgIGFyZy0+Y2ggPSBGT1JNQVRfUkVBRChjdHgpOworICAgICAgICAgICAgICAgIGN0eC0+Zm10cG9zKys7CisgICAgICAgICAgICAgICAgaWYgKGFyZy0+Y2ggPCAnMCcgfHwgYXJnLT5jaCA+ICc5JykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGFyZy0+cHJlYyA+IChJTlRfTUFYIC0gKChpbnQpYXJnLT5jaCAtICcwJykpIC8gMTApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIHRvbyBiaWciKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmctPnByZWMgPSBhcmctPnByZWMqMTAgKyAoYXJnLT5jaCAtICcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBJZ25vcmUgImgiLCAibCIgYW5kICJMIiBmb3JtYXQgcHJlZml4IChleDogIiVoaSIgb3IgIiVscyIpICovCisgICAgaWYgKGN0eC0+Zm10Y250ID49IDApIHsKKyAgICAgICAgaWYgKGFyZy0+Y2ggPT0gJ2gnIHx8IGFyZy0+Y2ggPT0gJ2wnIHx8IGFyZy0+Y2ggPT0gJ0wnKSB7CisgICAgICAgICAgICBpZiAoLS1jdHgtPmZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgYXJnLT5jaCA9IEZPUk1BVF9SRUFEKGN0eCk7CisgICAgICAgICAgICAgICAgY3R4LT5mbXRwb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoY3R4LT5mbXRjbnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImluY29tcGxldGUgZm9ybWF0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisKKyN1bmRlZiBGT1JNQVRfUkVBRAorfQorCisvKiBGb3JtYXQgb25lIGFyZ3VtZW50LiBTdXBwb3J0ZWQgY29udmVyc2lvbiBzcGVjaWZpZXJzOgorCisgICAtICJzIiwgInIiLCAiYSI6IGFueSB0eXBlCisgICAtICJpIiwgImQiLCAidSIsICJvIiwgIngiLCAiWCI6IGludAorICAgLSAiZSIsICJFIiwgImYiLCAiRiIsICJnIiwgIkciOiBmbG9hdAorICAgLSAiYyI6IGludCBvciBzdHIgKDEgY2hhcmFjdGVyKQorCisgICBXaGVuIHBvc3NpYmxlLCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW4gZGlyZWN0bHkgaW50byB0aGUgVW5pY29kZSB3cml0ZXIKKyAgIChjdHgtPndyaXRlcikuIEEgc3RyaW5nIGlzIGNyZWF0ZWQgd2hlbiBwYWRkaW5nIGlzIHJlcXVpcmVkLgorCisgICBSZXR1cm4gMCBpZiB0aGUgYXJndW1lbnQgaGFzIGJlZW4gZm9ybWF0dGVkIGludG8gKnBfc3RyLAorICAgICAgICAgIDEgaWYgdGhlIGFyZ3VtZW50IGhhcyBiZWVuIHdyaXR0ZW4gaW50byBjdHgtPndyaXRlciwKKyAgICAgICAgIC0xIG9uIGVycm9yLiAqLworc3RhdGljIGludAordW5pY29kZV9mb3JtYXRfYXJnX2Zvcm1hdChzdHJ1Y3QgdW5pY29kZV9mb3JtYXR0ZXJfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdW5pY29kZV9mb3JtYXRfYXJnX3QgKmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX3N0cikKK3sKKyAgICBQeU9iamVjdCAqdjsKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIgPSAmY3R4LT53cml0ZXI7CisKKyAgICBpZiAoY3R4LT5mbXRjbnQgPT0gMCkKKyAgICAgICAgY3R4LT53cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKworICAgIGlmIChhcmctPmNoID09ICclJykgeworICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUod3JpdGVyLCAnJScpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgdiA9IHVuaWNvZGVfZm9ybWF0X2dldG5leHRhcmcoY3R4KTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKworICAgIHN3aXRjaCAoYXJnLT5jaCkgeworICAgIGNhc2UgJ3MnOgorICAgIGNhc2UgJ3InOgorICAgIGNhc2UgJ2EnOgorICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikgJiYgYXJnLT53aWR0aCA9PSAtMSAmJiBhcmctPnByZWMgPT0gLTEpIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKHdyaXRlciwgdiwgMTAsIGFyZy0+ZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikgJiYgYXJnLT5jaCA9PSAncycpIHsKKyAgICAgICAgICAgICpwX3N0ciA9IHY7CisgICAgICAgICAgICBQeV9JTkNSRUYoKnBfc3RyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhcmctPmNoID09ICdzJykKKyAgICAgICAgICAgICAgICAqcF9zdHIgPSBQeU9iamVjdF9TdHIodik7CisgICAgICAgICAgICBlbHNlIGlmIChhcmctPmNoID09ICdyJykKKyAgICAgICAgICAgICAgICAqcF9zdHIgPSBQeU9iamVjdF9SZXByKHYpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICpwX3N0ciA9IFB5T2JqZWN0X0FTQ0lJKHYpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAnaSc6CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAndSc6CisgICAgY2FzZSAnbyc6CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgeworICAgICAgICBpbnQgcmV0ID0gbWFpbmZvcm1hdGxvbmcodiwgYXJnLCBwX3N0ciwgd3JpdGVyKTsKKyAgICAgICAgaWYgKHJldCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgYXJnLT5zaWduID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgICAgIGlmIChhcmctPndpZHRoID09IC0xICYmIGFyZy0+cHJlYyA9PSAtMQorICAgICAgICAgICAgJiYgIShhcmctPmZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgYXJnLCBOVUxMLCB3cml0ZXIpID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgYXJnLT5zaWduID0gMTsKKyAgICAgICAgaWYgKGZvcm1hdGZsb2F0KHYsIGFyZywgcF9zdHIsIE5VTEwpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgJ2MnOgorICAgIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IGZvcm1hdGNoYXIodik7CisgICAgICAgIGlmIChjaCA9PSAoUHlfVUNTNCkgLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChhcmctPndpZHRoID09IC0xICYmIGFyZy0+cHJlYyA9PSAtMSkgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUod3JpdGVyLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpwX3N0ciA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgJyVjJyAoMHgleCkgIgorICAgICAgICAgICAgICAgICAgICAgImF0IGluZGV4ICV6ZCIsCisgICAgICAgICAgICAgICAgICAgICAoMzE8PWFyZy0+Y2ggJiYgYXJnLT5jaDw9MTI2KSA/IChjaGFyKWFyZy0+Y2ggOiAnPycsCisgICAgICAgICAgICAgICAgICAgICAoaW50KWFyZy0+Y2gsCisgICAgICAgICAgICAgICAgICAgICBjdHgtPmZtdHBvcyAtIDEpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICgqcF9zdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKCpwX3N0cikpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX2Zvcm1hdF9hcmdfb3V0cHV0KHN0cnVjdCB1bmljb2RlX2Zvcm1hdHRlcl90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1bmljb2RlX2Zvcm1hdF9hcmdfdCAqYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyKQoreworICAgIFB5X3NzaXplX3QgbGVuOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpwYnVmOworICAgIFB5X3NzaXplX3QgcGluZGV4OworICAgIFB5X1VDUzQgc2lnbmNoYXI7CisgICAgUHlfc3NpemVfdCBidWZsZW47CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X3NzaXplX3Qgc3VibGVuOworICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciA9ICZjdHgtPndyaXRlcjsKKyAgICBQeV9VQ1M0IGZpbGw7CisKKyAgICBmaWxsID0gJyAnOworICAgIGlmIChhcmctPnNpZ24gJiYgYXJnLT5mbGFncyAmIEZfWkVSTykKKyAgICAgICAgZmlsbCA9ICcwJzsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBpZiAoKGFyZy0+d2lkdGggPT0gLTEgfHwgYXJnLT53aWR0aCA8PSBsZW4pCisgICAgICAgICYmIChhcmctPnByZWMgPT0gLTEgfHwgYXJnLT5wcmVjID49IGxlbikKKyAgICAgICAgJiYgIShhcmctPmZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHN0cikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFRydW5jYXRlIHRoZSBzdHJpbmcgZm9yICJzIiwgInIiIGFuZCAiYSIgZm9ybWF0cworICAgICAgIGlmIHRoZSBwcmVjaXNpb24gaXMgc2V0ICovCisgICAgaWYgKGFyZy0+Y2ggPT0gJ3MnIHx8IGFyZy0+Y2ggPT0gJ3InIHx8IGFyZy0+Y2ggPT0gJ2EnKSB7CisgICAgICAgIGlmIChhcmctPnByZWMgPj0gMCAmJiBsZW4gPiBhcmctPnByZWMpCisgICAgICAgICAgICBsZW4gPSBhcmctPnByZWM7CisgICAgfQorCisgICAgLyogQWRqdXN0IHNpZ24gYW5kIHdpZHRoICovCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgcGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgcGluZGV4ID0gMDsKKyAgICBzaWduY2hhciA9ICdcMCc7CisgICAgaWYgKGFyZy0+c2lnbikgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KTsKKyAgICAgICAgaWYgKGNoID09ICctJyB8fCBjaCA9PSAnKycpIHsKKyAgICAgICAgICAgIHNpZ25jaGFyID0gY2g7CisgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgICAgIHBpbmRleCsrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFyZy0+ZmxhZ3MgJiBGX1NJR04pCisgICAgICAgICAgICBzaWduY2hhciA9ICcrJzsKKyAgICAgICAgZWxzZSBpZiAoYXJnLT5mbGFncyAmIEZfQkxBTkspCisgICAgICAgICAgICBzaWduY2hhciA9ICcgJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJnLT5zaWduID0gMDsKKyAgICB9CisgICAgaWYgKGFyZy0+d2lkdGggPCBsZW4pCisgICAgICAgIGFyZy0+d2lkdGggPSBsZW47CisKKyAgICAvKiBQcmVwYXJlIHRoZSB3cml0ZXIgKi8KKyAgICBtYXhjaGFyID0gd3JpdGVyLT5tYXhjaGFyOworICAgIGlmICghKGFyZy0+ZmxhZ3MgJiBGX0xKVVNUKSkgeworICAgICAgICBpZiAoYXJnLT5zaWduKSB7CisgICAgICAgICAgICBpZiAoKGFyZy0+d2lkdGgtMSkgPiBsZW4pCisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBmaWxsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhcmctPndpZHRoID4gbGVuKQorICAgICAgICAgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgZmlsbCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpID4gbWF4Y2hhcikgeworICAgICAgICBQeV9VQ1M0IHN0cm1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHN0ciwgMCwgcGluZGV4K2xlbik7CisgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgc3RybWF4Y2hhcik7CisgICAgfQorCisgICAgYnVmbGVuID0gYXJnLT53aWR0aDsKKyAgICBpZiAoYXJnLT5zaWduICYmIGxlbiA9PSBhcmctPndpZHRoKQorICAgICAgICBidWZsZW4rKzsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgYnVmbGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogV3JpdGUgdGhlIHNpZ24gaWYgbmVlZGVkICovCisgICAgaWYgKGFyZy0+c2lnbikgeworICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgd3JpdGVyLT5wb3MsIHNpZ25jaGFyKTsKKyAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFyZy0+d2lkdGggPiBsZW4pCisgICAgICAgICAgICBhcmctPndpZHRoLS07CisgICAgfQorCisgICAgLyogV3JpdGUgdGhlIG51bWVyaWMgcHJlZml4IGZvciAieCIsICJYIiBhbmQgIm8iIGZvcm1hdHMKKyAgICAgICBpZiB0aGUgYWx0ZXJuYXRlIGZvcm0gaXMgdXNlZC4KKyAgICAgICBGb3IgZXhhbXBsZSwgd3JpdGUgIjB4IiBmb3IgdGhlICIlI3giIGZvcm1hdC4gKi8KKyAgICBpZiAoKGFyZy0+ZmxhZ3MgJiBGX0FMVCkgJiYgKGFyZy0+Y2ggPT0gJ3gnIHx8IGFyZy0+Y2ggPT0gJ1gnIHx8IGFyZy0+Y2ggPT0gJ28nKSkgeworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4ICsgMSkgPT0gYXJnLT5jaCk7CisgICAgICAgIGlmIChmaWxsICE9ICcgJykgeworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCB3cml0ZXItPnBvcywgJzAnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgd3JpdGVyLT5wb3MrMSwgYXJnLT5jaCk7CisgICAgICAgICAgICB3cml0ZXItPnBvcyArPSAyOworICAgICAgICAgICAgcGluZGV4ICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgYXJnLT53aWR0aCAtPSAyOworICAgICAgICBpZiAoYXJnLT53aWR0aCA8IDApCisgICAgICAgICAgICBhcmctPndpZHRoID0gMDsKKyAgICAgICAgbGVuIC09IDI7CisgICAgfQorCisgICAgLyogUGFkIGxlZnQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCisgICAgaWYgKGFyZy0+d2lkdGggPiBsZW4gJiYgIShhcmctPmZsYWdzICYgRl9MSlVTVCkpIHsKKyAgICAgICAgc3VibGVuID0gYXJnLT53aWR0aCAtIGxlbjsKKyAgICAgICAgRklMTCh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgZmlsbCwgd3JpdGVyLT5wb3MsIHN1Ymxlbik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHN1YmxlbjsKKyAgICAgICAgYXJnLT53aWR0aCA9IGxlbjsKKyAgICB9CisKKyAgICAvKiBJZiBwYWRkaW5nIHdpdGggc3BhY2VzOiB3cml0ZSBzaWduIGlmIG5lZWRlZCBhbmQvb3IgbnVtZXJpYyBwcmVmaXggaWYKKyAgICAgICB0aGUgYWx0ZXJuYXRlIGZvcm0gaXMgdXNlZCAqLworICAgIGlmIChmaWxsID09ICcgJykgeworICAgICAgICBpZiAoYXJnLT5zaWduKSB7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLT5raW5kLCB3cml0ZXItPmRhdGEsIHdyaXRlci0+cG9zLCBzaWduY2hhcik7CisgICAgICAgICAgICB3cml0ZXItPnBvcyArPSAxOworICAgICAgICB9CisgICAgICAgIGlmICgoYXJnLT5mbGFncyAmIEZfQUxUKSAmJiAoYXJnLT5jaCA9PSAneCcgfHwgYXJnLT5jaCA9PSAnWCcgfHwgYXJnLT5jaCA9PSAnbycpKSB7CisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCsxKSA9PSBhcmctPmNoKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgd3JpdGVyLT5wb3MsICcwJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLT5raW5kLCB3cml0ZXItPmRhdGEsIHdyaXRlci0+cG9zKzEsIGFyZy0+Y2gpOworICAgICAgICAgICAgd3JpdGVyLT5wb3MgKz0gMjsKKyAgICAgICAgICAgIHBpbmRleCArPSAyOworICAgICAgICB9CisgICAgfQorCisgICAgLyogV3JpdGUgY2hhcmFjdGVycyAqLworICAgIGlmIChsZW4pIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIHBpbmRleCwgbGVuKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgIH0KKworICAgIC8qIFBhZCByaWdodCB3aXRoIHRoZSBmaWxsIGNoYXJhY3RlciBpZiBuZWVkZWQgKi8KKyAgICBpZiAoYXJnLT53aWR0aCA+IGxlbikgeworICAgICAgICBzdWJsZW4gPSBhcmctPndpZHRoIC0gbGVuOworICAgICAgICBGSUxMKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCAnICcsIHdyaXRlci0+cG9zLCBzdWJsZW4pOworICAgICAgICB3cml0ZXItPnBvcyArPSBzdWJsZW47CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBIZWxwZXIgb2YgUHlVbmljb2RlX0Zvcm1hdCgpOiBmb3JtYXQgb25lIGFyZy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworc3RhdGljIGludAordW5pY29kZV9mb3JtYXRfYXJnKHN0cnVjdCB1bmljb2RlX2Zvcm1hdHRlcl90ICpjdHgpCit7CisgICAgc3RydWN0IHVuaWNvZGVfZm9ybWF0X2FyZ190IGFyZzsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGludCByZXQ7CisKKyAgICBhcmcuY2ggPSBQeVVuaWNvZGVfUkVBRChjdHgtPmZtdGtpbmQsIGN0eC0+Zm10ZGF0YSwgY3R4LT5mbXRwb3MpOworICAgIGFyZy5mbGFncyA9IDA7CisgICAgYXJnLndpZHRoID0gLTE7CisgICAgYXJnLnByZWMgPSAtMTsKKyAgICBhcmcuc2lnbiA9IDA7CisgICAgc3RyID0gTlVMTDsKKworICAgIHJldCA9IHVuaWNvZGVfZm9ybWF0X2FyZ19wYXJzZShjdHgsICZhcmcpOworICAgIGlmIChyZXQgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldCA9IHVuaWNvZGVfZm9ybWF0X2FyZ19mb3JtYXQoY3R4LCAmYXJnLCAmc3RyKTsKKyAgICBpZiAocmV0ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAocmV0ICE9IDEpIHsKKyAgICAgICAgcmV0ID0gdW5pY29kZV9mb3JtYXRfYXJnX291dHB1dChjdHgsICZhcmcsIHN0cik7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICBpZiAocmV0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChjdHgtPmRpY3QgJiYgKGN0eC0+YXJnaWR4IDwgY3R4LT5hcmdsZW4pICYmIGFyZy5jaCAhPSAnJScpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBmbXRjbnQsIGZtdHBvcywgYXJnbGVuLCBhcmdpZHg7Ci0gICAgaW50IGFyZ3Nfb3duZWQgPSAwOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdGVtcCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnNlY29uZCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnVmb3JtYXQ7Ci0gICAgdm9pZCAqZm10OwotICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCwgZm10a2luZDsKLSAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKLSAgICBQeV9zc2l6ZV90IHN1YmxlbjsKLSAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgc3RydWN0IHVuaWNvZGVfZm9ybWF0dGVyX3QgY3R4OwogCiAgICAgaWYgKGZvcm1hdCA9PSBOVUxMIHx8IGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHVmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwotICAgIGlmICh1Zm9ybWF0ID09IE5VTEwpCisKKyAgICBjdHguZm10c3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZm9ybWF0KTsKKyAgICBpZiAoY3R4LmZtdHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVmb3JtYXQpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGN0eC5mbXRzdHIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGN0eC5mbXRkYXRhID0gUHlVbmljb2RlX0RBVEEoY3R4LmZtdHN0cik7CisgICAgY3R4LmZtdGtpbmQgPSBQeVVuaWNvZGVfS0lORChjdHguZm10c3RyKTsKKyAgICBjdHguZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3R4LmZtdHN0cik7CisgICAgY3R4LmZtdHBvcyA9IDA7CiAKLSAgICBmbXQgPSBQeVVuaWNvZGVfREFUQSh1Zm9ybWF0KTsKLSAgICBmbXRraW5kID0gUHlVbmljb2RlX0tJTkQodWZvcm1hdCk7Ci0gICAgZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodWZvcm1hdCk7Ci0gICAgZm10cG9zID0gMDsKLQotICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCBmbXRjbnQgKyAxMDApOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmY3R4LndyaXRlcik7CisgICAgY3R4LndyaXRlci5taW5fbGVuZ3RoID0gY3R4LmZtdGNudCArIDEwMDsKKyAgICBjdHgud3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgewotICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX1NpemUoYXJncyk7Ci0gICAgICAgIGFyZ2lkeCA9IDA7CisgICAgICAgIGN0eC5hcmdsZW4gPSBQeVR1cGxlX1NpemUoYXJncyk7CisgICAgICAgIGN0eC5hcmdpZHggPSAwOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYXJnbGVuID0gLTE7Ci0gICAgICAgIGFyZ2lkeCA9IC0yOworICAgICAgICBjdHguYXJnbGVuID0gLTE7CisgICAgICAgIGN0eC5hcmdpZHggPSAtMjsKICAgICB9CisgICAgY3R4LmFyZ3Nfb3duZWQgPSAwOwogICAgIGlmIChQeU1hcHBpbmdfQ2hlY2soYXJncykgJiYgIVB5VHVwbGVfQ2hlY2soYXJncykgJiYgIVB5VW5pY29kZV9DaGVjayhhcmdzKSkKLSAgICAgICAgZGljdCA9IGFyZ3M7CisgICAgICAgIGN0eC5kaWN0ID0gYXJnczsKKyAgICBlbHNlCisgICAgICAgIGN0eC5kaWN0ID0gTlVMTDsKKyAgICBjdHguYXJncyA9IGFyZ3M7CiAKLSAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpICE9ICclJykgeworICAgIHdoaWxlICgtLWN0eC5mbXRjbnQgPj0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoY3R4LmZtdGtpbmQsIGN0eC5mbXRkYXRhLCBjdHguZm10cG9zKSAhPSAnJScpIHsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgbm9uZm10cG9zOwotICAgICAgICAgICAgbm9uZm10cG9zID0gZm10cG9zKys7Ci0gICAgICAgICAgICB3aGlsZSAoZm10Y250ID49IDAgJiYKLSAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcykgIT0gJyUnKSB7Ci0gICAgICAgICAgICAgICAgZm10cG9zKys7Ci0gICAgICAgICAgICAgICAgZm10Y250LS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZm10Y250IDwgMCkKLSAgICAgICAgICAgICAgICBmbXRwb3MtLTsKLSAgICAgICAgICAgIHN1YmxlbiA9IGZtdHBvcyAtIG5vbmZtdHBvczsKLSAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHVmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25mbXRwb3MsIG5vbmZtdHBvcyArIHN1Ymxlbik7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHN1YmxlbiwgbWF4Y2hhcikgPT0gLTEpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogCi0gICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXIuYnVmZmVyLCB3cml0ZXIucG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWZvcm1hdCwgbm9uZm10cG9zLCBzdWJsZW4pOwotICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47CisgICAgICAgICAgICBub25mbXRwb3MgPSBjdHguZm10cG9zKys7CisgICAgICAgICAgICB3aGlsZSAoY3R4LmZtdGNudCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoY3R4LmZtdGtpbmQsIGN0eC5mbXRkYXRhLCBjdHguZm10cG9zKSAhPSAnJScpIHsKKyAgICAgICAgICAgICAgICBjdHguZm10cG9zKys7CisgICAgICAgICAgICAgICAgY3R4LmZtdGNudC0tOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGN0eC5mbXRjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgY3R4LmZtdHBvcy0tOworICAgICAgICAgICAgICAgIGN0eC53cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdWJzdHJpbmcoJmN0eC53cml0ZXIsIGN0eC5mbXRzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25mbXRwb3MsIGN0eC5mbXRwb3MpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCi0gICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOwotICAgICAgICAgICAgUHlfc3NpemVfdCB3aWR0aCA9IC0xOwotICAgICAgICAgICAgaW50IHByZWMgPSAtMTsKLSAgICAgICAgICAgIFB5X1VDUzQgYyA9ICdcMCc7Ci0gICAgICAgICAgICBQeV9VQ1M0IGZpbGw7Ci0gICAgICAgICAgICBpbnQgc2lnbjsKLSAgICAgICAgICAgIFB5X1VDUzQgc2lnbmNoYXI7Ci0gICAgICAgICAgICBpbnQgaXNudW1vazsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKLSAgICAgICAgICAgIHZvaWQgKnBidWYgPSBOVUxMOwotICAgICAgICAgICAgUHlfc3NpemVfdCBwaW5kZXgsIGxlbjsKLSAgICAgICAgICAgIFB5X1VDUzQgYnVmbWF4Y2hhcjsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmbGVuOwotCi0gICAgICAgICAgICBmbXRwb3MrKzsKLSAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcyk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnKCcpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleXN0YXJ0OwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5bGVuOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICAgICAgaW50IHBjb3VudCA9IDE7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHJlcXVpcmVzIGEgbWFwcGluZyIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICsrZm10cG9zOwotICAgICAgICAgICAgICAgIC0tZm10Y250OwotICAgICAgICAgICAgICAgIGtleXN0YXJ0ID0gZm10cG9zOwotICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBiYWxhbmNlZCBwYXJlbnRoZXNlcyAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChwY291bnQgPiAwICYmIC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyknKQotICAgICAgICAgICAgICAgICAgICAgICAgLS1wY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJygnKQotICAgICAgICAgICAgICAgICAgICAgICAgKytwY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGZtdHBvcysrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXRwb3MgLSBrZXlzdGFydCAtIDE7Ci0gICAgICAgICAgICAgICAgaWYgKGZtdGNudCA8IDAgfHwgcGNvdW50ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCBrZXkiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBrZXkgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHVmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzdGFydCwga2V5c3RhcnQgKyBrZXlsZW4pOwotICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGlmIChhcmdzX293bmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgICAgICAgICAgYXJnc19vd25lZCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeU9iamVjdF9HZXRJdGVtKGRpY3QsIGtleSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFyZ3Nfb3duZWQgPSAxOwotICAgICAgICAgICAgICAgIGFyZ2xlbiA9IC0xOwotICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNhc2UgJysnOiBmbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNhc2UgJyAnOiBmbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBjYXNlICcjJzogZmxhZ3MgfD0gRl9BTFQ7IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBmbGFncyB8PSBGX1pFUk87IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjID09ICcqJykgewotICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiB3YW50cyBpbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3aWR0aCA9IFB5TG9uZ19Bc1NzaXplX3Qodik7Ci0gICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfTEpVU1Q7Ci0gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKLSAgICAgICAgICAgICAgICB3aWR0aCA9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwotICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFNpbmNlIGMgaXMgdW5zaWduZWQsIHRoZSBSSFMgd291bGQgZW5kIHVwIGFzIHVuc2lnbmVkLAotICAgICAgICAgICAgICAgICAgICAgICBtaXhpbmcgc2lnbmVkIGFuZCB1bnNpZ25lZCBjb21wYXJpc29uLiBTaW5jZSBjIGlzIGJldHdlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgJzAnIGFuZCAnOScsIGNhc3RpbmcgdG8gaW50IGlzIHNhZmUuICovCi0gICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChQWV9TU0laRV9UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggdG9vIGJpZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gd2lkdGgqMTAgKyAoYyAtICcwJyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgcHJlYyA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKLSAgICAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogd2FudHMgaW50Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHJlYyA9IF9QeUxvbmdfQXNJbnQodik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJlYyA9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPiAoSU5UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjIHRvbyBiaWciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gcHJlYyoxMCArIChjIC0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gLyogcHJlYyAqLwotICAgICAgICAgICAgaWYgKGZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2gnIHx8IGMgPT0gJ2wnIHx8IGMgPT0gJ0wnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCIpOworICAgICAgICAgICAgY3R4LmZtdHBvcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfZm9ybWF0X2FyZygmY3R4KSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZm10Y250ID09IDApCi0gICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgICAgIGlmIChjID09ICclJykgewotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgMSwgJyUnKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICclJyk7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwotICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0KLSAgICAgICAgICAgIHNpZ24gPSAwOwotICAgICAgICAgICAgc2lnbmNoYXIgPSAnXDAnOwotICAgICAgICAgICAgZmlsbCA9ICcgJzsKLSAgICAgICAgICAgIHN3aXRjaCAoYykgewotCi0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIGNhc2UgJ3InOgotICAgICAgICAgICAgY2FzZSAnYSc6Ci0gICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxMCwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikgJiYgYyA9PSAncycpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHY7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdzJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9TdHIodik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ3InKQotICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X1JlcHIodik7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9BU0NJSSh2KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBjYXNlICdYJzoKLSAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikKLSAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQotICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLwotICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDEwLCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDE2LCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDgsIGZsYWdzICYgRl9BTFQpID09IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dGFyZzsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaXNudW1vayA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKHYpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppb2JqPU5VTEw7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW9iaiA9IHY7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaW9iaik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoaW9iaiE9TlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhpb2JqKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKGlvYmosIGZsYWdzLCBwcmVjLCAoYyA9PSAnaSc/ICdkJzogYykpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWlzbnVtb2spIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlJSVjIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwgKGNoYXIpYywgUHlfVFlQRSh2KS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQotICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlICdlJzoKLSAgICAgICAgICAgIGNhc2UgJ0UnOgotICAgICAgICAgICAgY2FzZSAnZic6Ci0gICAgICAgICAgICBjYXNlICdGJzoKLSAgICAgICAgICAgIGNhc2UgJ2cnOgotICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKLSAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHNpZ24gPSAxOwotICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKLSAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKLSAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsICZ0ZW1wLCBOVUxMKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgdGVtcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBmb3JtYXRjaGFyKHYpOwotICAgICAgICAgICAgICAgIGlmIChjaCA9PSAoUHlfVUNTNCkgLTEpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCAxLCBjaCkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIGNoKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzE8PWMgJiYgYzw9MTI2KSA/IChjaGFyKWMgOiAnPycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10cG9zIC0gMSk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSk7Ci0KLSAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCi0gICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCi0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoJndyaXRlciwgdGVtcCkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGVtcCkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodGVtcCk7Ci0gICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0RBVEEodGVtcCk7Ci0gICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZW1wKTsKLQotICAgICAgICAgICAgaWYgKGMgPT0gJ3MnIHx8IGMgPT0gJ3InIHx8IGMgPT0gJ2EnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQotICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvKiBwYnVmIGlzIGluaXRpYWxpemVkIGhlcmUuICovCi0gICAgICAgICAgICBwaW5kZXggPSAwOwotICAgICAgICAgICAgaWYgKHNpZ24pIHsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJy0nIHx8IGNoID09ICcrJykgewotICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9IGNoOwotICAgICAgICAgICAgICAgICAgICBsZW4tLTsKLSAgICAgICAgICAgICAgICAgICAgcGluZGV4Kys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9TSUdOKQotICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9ICcrJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCi0gICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gJyAnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCi0gICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0KLSAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIGxlbmd0aCBhbmQgbWF4aW11bSBjaGFyYWN0ZXIgb2YgdGhlCi0gICAgICAgICAgICAgICB3cml0dGVuIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSAxMjc7Ci0gICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNpZ24pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aC0xKSA+IGxlbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBQeV9NQVgoYnVmbWF4Y2hhciwgZmlsbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICBidWZtYXhjaGFyID0gUHlfTUFYKGJ1Zm1heGNoYXIsIGZpbGwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHRlbXAsIDAsIHBpbmRleCtsZW4pOwotICAgICAgICAgICAgYnVmbWF4Y2hhciA9IFB5X01BWChidWZtYXhjaGFyLCBtYXhjaGFyKTsKLQotICAgICAgICAgICAgYnVmbGVuID0gd2lkdGg7Ci0gICAgICAgICAgICBpZiAoc2lnbiAmJiBsZW4gPT0gd2lkdGgpCi0gICAgICAgICAgICAgICAgYnVmbGVuKys7Ci0KLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgYnVmbGVuLCBidWZtYXhjaGFyKSA9PSAtMSkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0KLSAgICAgICAgICAgIC8qIFdyaXRlIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgIGlmIChzaWduKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIHNpZ25jaGFyKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCi0gICAgICAgICAgICAgICAgICAgIHdpZHRoLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJyB8fCBjID09ICdvJykpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOwotICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXggKyAxKSA9PSBjKTsKLSAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysxLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAyOwotICAgICAgICAgICAgICAgICAgICBwaW5kZXggKz0gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKLSAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQotICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICAgICAgbGVuIC09IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47Ci0gICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIGZpbGwsIHdyaXRlci5wb3MsIHN1Ymxlbik7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2lnbikgewotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBzaWduY2hhcik7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcgfHwgYyA9PSAnbycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgpID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBwYnVmLCBwaW5kZXgrMSkgPT0gYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrMSwgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAgcGluZGV4ICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobGVuKSB7Ci0gICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMod3JpdGVyLmJ1ZmZlciwgd3JpdGVyLnBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLCBwaW5kZXgsIGxlbik7Ci0gICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBsZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pIHsKLSAgICAgICAgICAgICAgICBzdWJsZW4gPSB3aWR0aCAtIGxlbjsKLSAgICAgICAgICAgICAgICBGSUxMKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgJyAnLCB3cml0ZXIucG9zLCBzdWJsZW4pOwotICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gc3VibGVuOwotICAgICAgICAgICAgfQotCi1uZXh0YXJnOgotICAgICAgICAgICAgaWYgKGRpY3QgJiYgKGFyZ2lkeCA8IGFyZ2xlbikgJiYgYyAhPSAnJScpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0NMRUFSKHRlbXApOwotICAgICAgICB9IC8qICclJyAqLwotICAgIH0gLyogdW50aWwgZW5kICovCi0gICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgeworICAgIGlmIChjdHguYXJnaWR4IDwgY3R4LmFyZ2xlbiAmJiAhY3R4LmRpY3QpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIik7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoYXJnc19vd25lZCkgewotICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKGN0eC5hcmdzX293bmVkKSB7CisgICAgICAgIFB5X0RFQ1JFRihjdHguYXJncyk7CiAgICAgfQotICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKLSAgICBQeV9YREVDUkVGKHRlbXApOwotICAgIFB5X1hERUNSRUYoc2Vjb25kKTsKLSAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CisgICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmY3R4LndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYodWZvcm1hdCk7Ci0gICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICBQeV9YREVDUkVGKHNlY29uZCk7Ci0gICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIGlmIChhcmdzX293bmVkKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZjdHgud3JpdGVyKTsKKyAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKKyAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC0xNDIzNiwxMiArMTQ2NTAsMTIgQEAKICAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIHMpOwogICAgIFB5X0VORF9BTExPV19SRUNVUlNJT04KIAotICAgICAgICBpZiAodCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHQpOwotICAgICAgICAgICAgUHlfREVDUkVGKCpwKTsKLSAgICAgICAgICAgICpwID0gdDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGlmICh0KSB7CisgICAgICAgIFB5X0lOQ1JFRih0KTsKKyAgICAgICAgUHlfREVDUkVGKCpwKTsKKyAgICAgICAgKnAgPSB0OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMTsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIHMsIHMpIDwgMCkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDQ2YTkyYmIuLjEwMDliYjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTE5MTksNyArMTkxOSw3IEBACiAgICAgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgOTUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAKICAgICAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAogICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTEzLCA1LCA1LCAKQEAgLTI1OTMsMTAgKzI1OTMsMTAgQEAKICAgICAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAogICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKICAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUyLCAyNTIsIDE0MSwgMTQxLCAxNDEsIAogICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKICAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMjUyLCAyNTIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCiAgICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjkyNSw2ICsyOTI1LDkgQEAKIGRvdWJsZSBfUHlVbmljb2RlX1RvTnVtZXJpYyhQeV9VQ1M0IGNoKQogewogICAgIHN3aXRjaCAoY2gpIHsKKyAgICBjYXNlIDB4MTI0NTY6CisgICAgY2FzZSAweDEyNDU3OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgLTEuMDsKICAgICBjYXNlIDB4MEYzMzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIC0xLjAvMi4wOwogICAgIGNhc2UgMHgwMDMwOgpAQCAtMzQyNyw2ICszNDMwLDggQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwMDAwLjA7CiAgICAgY2FzZSAweDMyNTE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMS4wOworICAgIGNhc2UgMHgxMjQzMjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDIxNjAwMC4wOwogICAgIGNhc2UgMHgzMjUyOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjIuMDsKICAgICBjYXNlIDB4MzI1MzoKQEAgLTM3MjEsNiArMzcyNiw4IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0Mi4wOwogICAgIGNhc2UgMHgzMkI4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDMuMDsKKyAgICBjYXNlIDB4MTI0MzM6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA0MzIwMDAuMDsKICAgICBjYXNlIDB4MzJCOToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQ0LjA7CiAgICAgY2FzZSAweDMyQkE6CmRpZmYgLS1naXQgYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCmluZGV4IGI0OWRjZWUuLmMwODNmOGYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCisrKyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCkBAIC0zMzgsNiArMzM4LDExIEBACiB9CiAKIAorc3RhdGljIFB5TWVtYmVyRGVmIHdlYWtyZWZfbWVtYmVyc1tdID0geworICAgIHsiX19jYWxsYmFja19fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2Vha1JlZmVyZW5jZSwgd3JfY2FsbGJhY2spLCBSRUFET05MWX0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QKIF9QeVdlYWtyZWZfUmVmVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQpAQCAtMzY5LDcgKzM3NCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLworICAgIHdlYWtyZWZfbWVtYmVycywgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCmRpZmYgLS1naXQgYS9QQy9WQzYvX2N0eXBlcy5kc3AgYi9QQy9WQzYvX2N0eXBlcy5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOThlYWMuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L19jdHlwZXMuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iX2N0eXBlcyIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz1fY3R5cGVzIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9jdHlwZXMubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9jdHlwZXMubWFrIiBDRkc9Il9jdHlwZXMgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX2N0eXBlcyAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJfY3R5cGVzIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiX2N0eXBlcyINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfY3R5cGVzIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VcX2N0eXBlcyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9JICIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZDFhMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fY3R5cGVzLnB5ZCINCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiX2N0eXBlcyAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1kZWJ1Z1xfY3R5cGVzIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvSSAiLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWQxYTAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vX2N0eXBlc19kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAiX2N0eXBlcyAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJfY3R5cGVzIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9WQzYvX2N0eXBlc190ZXN0LmRzcCBiL1BDL1ZDNi9fY3R5cGVzX3Rlc3QuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWViMjE3Li4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9fY3R5cGVzX3Rlc3QuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJfY3R5cGVzX3Rlc3QiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9X2N0eXBlc190ZXN0IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9jdHlwZXNfdGVzdC5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX2N0eXBlc190ZXN0Lm1hayIgQ0ZHPSJfY3R5cGVzX3Rlc3QgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX2N0eXBlc190ZXN0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgIl9jdHlwZXNfdGVzdCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIl9jdHlwZXNfdGVzdCINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfY3R5cGVzX3Rlc3QgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVxfY3R5cGVzX3Rlc3QiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJOREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fY3R5cGVzX3Rlc3QucHlkIg0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJfY3R5cGVzX3Rlc3QgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcX2N0eXBlc190ZXN0Ig0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fY3R5cGVzX3Rlc3RfZC5weWQiIC9wZGJ0eXBlOnNlcHQNCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgIl9jdHlwZXNfdGVzdCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJfY3R5cGVzX3Rlc3QgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9fZWxlbWVudHRyZWUuZHNwIGIvUEMvVkM2L19lbGVtZW50dHJlZS5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzBjZGQuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L19lbGVtZW50dHJlZS5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJfZWxlbWVudHRyZWUiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9X2VsZW1lbnR0cmVlIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9lbGVtZW50dHJlZS5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX2VsZW1lbnR0cmVlLm1hayIgQ0ZHPSJfZWxlbWVudHRyZWUgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX2VsZW1lbnR0cmVlIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgIl9lbGVtZW50dHJlZSAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIl9lbGVtZW50dHJlZSINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfZWxlbWVudHRyZWUgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVxfZWxlbWVudHRyZWUiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvSSAiLi5cLi5cTW9kdWxlc1xleHBhdCIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiTkRFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIlhNTF9OUyIgL0QgIlhNTF9EVEQiIC9EICJCWVRFT1JERVI9MTIzNCIgL0QgIlhNTF9DT05URVhUX0JZVEVTPTEwMjQiIC9EICJVU0VfUFlFWFBBVF9DQVBJIiAvRCAiWE1MX1NUQVRJQyIgL0QgIkhBVkVfTUVNTU9WRSIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFkMTAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL19lbGVtZW50dHJlZS5weWQiDQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIl9lbGVtZW50dHJlZSAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1kZWJ1Z1xfZWxlbWVudHRyZWUiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9JICIuLlwuLlxNb2R1bGVzXGV4cGF0IiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiWE1MX05TIiAvRCAiWE1MX0RURCIgL0QgIkJZVEVPUkRFUj0xMjM0IiAvRCAiWE1MX0NPTlRFWFRfQllURVM9MTAyNCIgL0QgIlVTRV9QWUVYUEFUX0NBUEkiIC9EICJYTUxfU1RBVElDIiAvRCAiSEFWRV9NRU1NT1ZFIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWQxMDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vX2VsZW1lbnR0cmVlX2QucHlkIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJfZWxlbWVudHRyZWUgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAiX2VsZW1lbnR0cmVlIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L19tc2kuZHNwIGIvUEMvVkM2L19tc2kuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmE2MWJjLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9fbXNpLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iX21zaSIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz1fbXNpIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9tc2kubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9tc2kubWFrIiBDRkc9Il9tc2kgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX21zaSAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJfbXNpIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiX21zaSINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfbXNpIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VcX21zaSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIgL25vbG9nbyAvYmFzZToiMHgxZDFhMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fbXNpLnB5ZCINCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiX21zaSAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1kZWJ1Z1xfbXNpIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWQxYTAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vX21zaV9kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAiX21zaSAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJfbXNpIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQQ1xfbXNpLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AgYi9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYjg0NzAuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L19tdWx0aXByb2Nlc3NpbmcuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0iX211bHRpcHJvY2Vzc2luZyIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz1fbXVsdGlwcm9jZXNzaW5nIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9tdWx0aXByb2Nlc3NpbmcubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9tdWx0aXByb2Nlc3NpbmcubWFrIiBDRkc9Il9tdWx0aXByb2Nlc3NpbmcgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX211bHRpcHJvY2Vzc2luZyAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJfbXVsdGlwcm9jZXNzaW5nIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiX211bHRpcHJvY2Vzc2luZyINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfbXVsdGlwcm9jZXNzaW5nIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VcX211bHRpcHJvY2Vzc2luZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgdXNlcjMyLmxpYiBrZXJuZWwzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgd3MyXzMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMUQwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL19tdWx0aXByb2Nlc3NpbmcucHlkIg0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJfbXVsdGlwcm9jZXNzaW5nIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXF9tdWx0aXByb2Nlc3NpbmciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIl9ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgdXNlcjMyLmxpYiBrZXJuZWwzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgd3MyXzMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMWQwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL19tdWx0aXByb2Nlc3NpbmdfZC5weWQiIC9wZGJ0eXBlOnNlcHQNCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgIl9tdWx0aXByb2Nlc3NpbmcgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAiX211bHRpcHJvY2Vzc2luZyAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcd2luMzJfZnVuY3Rpb25zLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9WQzYvX3NvY2tldC5kc3AgYi9QQy9WQzYvX3NvY2tldC5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZWU4ZjIuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L19zb2NrZXQuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJfc29ja2V0IiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPV9zb2NrZXQgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX3NvY2tldC5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX3NvY2tldC5tYWsiIENGRz0iX3NvY2tldCAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJfc29ja2V0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgIl9zb2NrZXQgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICJfc29ja2V0Ig0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIuLiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gIl9zb2NrZXQgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVxfc29ja2V0Ig0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiTkRFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiB1c2VyMzIubGliIGtlcm5lbDMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB3czJfMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWUxRDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vX3NvY2tldC5weWQiDQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIl9zb2NrZXQgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcX3NvY2tldCINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiX0RFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiB1c2VyMzIubGliIGtlcm5lbDMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB3czJfMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWUxRDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vX3NvY2tldF9kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAiX3NvY2tldCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJfc29ja2V0IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L19zcWxpdGUzLmRzcCBiL1BDL1ZDNi9fc3FsaXRlMy5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4Njk5MzguLjAwMDAwMDAKLS0tIGEvUEMvVkM2L19zcWxpdGUzLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9Il9zcWxpdGUzIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPV9zcWxpdGUzIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl9zcWxpdGUzLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJfc3FsaXRlMy5tYWsiIENGRz0iX3NxbGl0ZTMgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX3NxbGl0ZTMgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAiX3NxbGl0ZTMgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICJfc3FsaXRlMyINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfc3FsaXRlMyAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1yZWxlYXNlXF9zcWxpdGUzIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0kgIi4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjQiIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9EIE1PRFVMRV9OQU1FPVwic3FsaXRlM1wiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgdXNlcjMyLmxpYiBrZXJuZWwzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgLi5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNFxzcWxpdGUzLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMTgwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL19zcWxpdGUzLnB5ZCINCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiX3NxbGl0ZTMgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcX3NxbGl0ZTMiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9JICIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40IiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCBNT0RVTEVfTkFNRT1cInNxbGl0ZTNcIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIHVzZXIzMi5saWIga2VybmVsMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjRcc3FsaXRlMy5saWIgL25vbG9nbyAvYmFzZToiMHgxZTE4MDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fc3FsaXRlM19kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAiX3NxbGl0ZTMgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAiX3NxbGl0ZTMgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9fc3NsLmRzcCBiL1BDL1ZDNi9fc3NsLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThiYjk5My4uMDAwMDAwMAotLS0gYS9QQy9WQzYvX3NzbC5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9Il9zc2wiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIEV4dGVybmFsIFRhcmdldCIgMHgwMTA2DQotDQotQ0ZHPV9zc2wgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX3NzbC5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX3NzbC5tYWsiIENGRz0iX3NzbCAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJfc3NsIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBFeHRlcm5hbCBUYXJnZXQiKQ0KLSFNRVNTQUdFICJfc3NsIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRXh0ZXJuYWwgVGFyZ2V0IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gIl9zc2wgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBDbWRfTGluZSAiTk1BS0UgL2YgX3NzbC5tYWsiDQotIyBQUk9QIEJBU0UgUmVidWlsZF9PcHQgIi9hIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9GaWxlICJfc3NsLmV4ZSINCi0jIFBST1AgQkFTRSBCc2NfTmFtZSAiX3NzbC5ic2MiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VcX3NzbCINCi0jIFBST1AgQ21kX0xpbmUgInB5dGhvbiBidWlsZF9zc2wucHkiDQotIyBQUk9QIFJlYnVpbGRfT3B0ICItYSINCi0jIFBST1AgVGFyZ2V0X0ZpbGUgIl9zc2wucHlkIg0KLSMgUFJPUCBCc2NfTmFtZSAiIg0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIl9zc2wgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ4ODYtdGVtcC1kZWJ1Z1xfc3NsIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXF9zc2wiDQotIyBQUk9QIEJBU0UgQ21kX0xpbmUgIk5NQUtFIC9mIF9zc2wubWFrIg0KLSMgUFJPUCBCQVNFIFJlYnVpbGRfT3B0ICIvYSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRmlsZSAiX3NzbF9kLnB5ZCINCi0jIFBST1AgQkFTRSBCc2NfTmFtZSAiX3NzbF9kLmJzYyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcX3NzbCINCi0jIFBST1AgQ21kX0xpbmUgInB5dGhvbl9kIC11IGJ1aWxkX3NzbC5weSAtZCINCi0jIFBST1AgUmVidWlsZF9PcHQgIi1hIg0KLSMgUFJPUCBUYXJnZXRfRmlsZSAiX3NzbF9kLnB5ZCINCi0jIFBST1AgQnNjX05hbWUgIiINCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAiX3NzbCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJfc3NsIC0gV2luMzIgRGVidWciDQotDQotIUlGICAiJChDRkcpIiA9PSAiX3NzbCAtIFdpbjMyIFJlbGVhc2UiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIl9zc2wgLSBXaW4zMiBEZWJ1ZyINCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9zc2wuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9fc3NsLm1hayBiL1BDL1ZDNi9fc3NsLm1hawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3YTYxNC4uMDAwMDAwMAotLS0gYS9QQy9WQzYvX3NzbC5tYWsKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0KLSFJRkRFRiBERUJVRwotTU9EVUxFPV9zc2xfZC5weWQKLVRFTVBfRElSPXg4Ni10ZW1wLWRlYnVnL19zc2wKLUNGTEFHUz0vT2QgL1ppIC9NRGQgL0xEZCAvRERFQlVHIC9EX0RFQlVHIC9EV0lOMzIKLUxGTEFHUz0vbm9kZWZhdWx0bGliOiJtc3ZjcnQiCi0hRUxTRQotTU9EVUxFPV9zc2wucHlkCi1URU1QX0RJUj14ODYtdGVtcC1yZWxlYXNlL19zc2wKLUNGTEFHUz0vT3ggL01EIC9MRCAvRFdJTjMyCi1MRkxBR1M9Ci0hRU5ESUYKLQotSU5DTFVERVM9LUkgLi4vLi4vSW5jbHVkZSAtSSAuLiAtSSAkKFNTTF9ESVIpL2luYzMyCi1TU0xfTElCX0RJUj0kKFNTTF9ESVIpL291dDMyCi1MSUJTPWdkaTMyLmxpYiB3c29jazMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbGlicGF0aDokKFNTTF9MSUJfRElSKSBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliCi0KLVNPVVJDRT0uLi8uLi9Nb2R1bGVzL19zc2wuYyAkKFNTTF9MSUJfRElSKS9saWJlYXkzMi5saWIgJChTU0xfTElCX0RJUikvc3NsZWF5MzIubGliCi0KLSQoTU9EVUxFKTogJChTT1VSQ0UpIC4uLyouaCAuLi8uLi9JbmNsdWRlLyouaAotICAgIEBpZiBub3QgZXhpc3QgIiQoVEVNUF9ESVIpLy4iIG1rZGlyICIkKFRFTVBfRElSKSIKLSAgICBjbCAvbm9sb2dvICQoU09VUkNFKSAkKENGTEFHUykgL0ZvJChURU1QX0RJUilcJCoub2JqICQoSU5DTFVERVMpIC9saW5rIC9vdXQ6JChNT0RVTEUpICQoTElCUykgJChMRkxBR1MpCmRpZmYgLS1naXQgYS9QQy9WQzYvX3Rlc3RjYXBpLmRzcCBiL1BDL1ZDNi9fdGVzdGNhcGkuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWFhMjVhLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9fdGVzdGNhcGkuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJfdGVzdGNhcGkiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9X3Rlc3RjYXBpIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl90ZXN0Y2FwaS5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX3Rlc3RjYXBpLm1hayIgQ0ZHPSJfdGVzdGNhcGkgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiX3Rlc3RjYXBpIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgIl90ZXN0Y2FwaSAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIl90ZXN0Y2FwaSINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJfdGVzdGNhcGkgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVxfdGVzdGNhcGkiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTU1BUF9FWFBPUlRTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJNTUFQX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMUYwMDAwIiAvZGxsIC9tYWNoaW5lOkkzODYgL291dDoiLi9fdGVzdGNhcGkucHlkIg0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJfdGVzdGNhcGkgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcX3Rlc3RjYXBpIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIk1NQVBfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIk1NQVBfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMUYwMDAwIiAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vX3Rlc3RjYXBpX2QucHlkIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJfdGVzdGNhcGkgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAiX3Rlc3RjYXBpIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L190a2ludGVyLmRzcCBiL1BDL1ZDNi9fdGtpbnRlci5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNjlmNTkuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L190a2ludGVyLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9Il90a2ludGVyIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPV90a2ludGVyIC0gV2luMzIgUmVsZWFzZQ0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiX3RraW50ZXIubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIl90a2ludGVyLm1hayIgQ0ZHPSJfdGtpbnRlciAtIFdpbjMyIFJlbGVhc2UiDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgIl90a2ludGVyIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgIl90a2ludGVyIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiX3RraW50ZXIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIi4uXC4uXC4uIg0KLUNQUD1jbC5leGUNCi1NVEw9bWlkbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAiX3RraW50ZXIgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcX3RraW50ZXIiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuLlwuLlwuLlx0Y2x0a1xpbmNsdWRlIiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiV0lUSF9BUFBJTklUIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIC4uXC4uXC4uXHRjbHRrXGxpYlx0azg1Zy5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg1Zy5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgdXNlcjMyLmxpYiBrZXJuZWwzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgL25vbG9nbyAvYmFzZToiMHgxZTE5MDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fdGtpbnRlcl9kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJfdGtpbnRlciAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1yZWxlYXNlXF90a2ludGVyIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4uXC4uXC4uXHRjbHRrXGluY2x1ZGUiIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9EICJXSVRIX0FQUElOSVQiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgLi5cLi5cLi5cdGNsdGtcbGliXHRrODUubGliIC4uXC4uXC4uXHRjbHRrXGxpYlx0Y2w4NS5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgdXNlcjMyLmxpYiBrZXJuZWwzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgL25vbG9nbyAvYmFzZToiMHgxZTE5MDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9fdGtpbnRlci5weWQiDQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJfdGtpbnRlciAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJfdGtpbnRlciAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfdGtpbnRlci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9WQzYvYnVpbGRfc3NsLnB5IGIvUEMvVkM2L2J1aWxkX3NzbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVhZjA4NC4uMDAwMDAwMAotLS0gYS9QQy9WQzYvYnVpbGRfc3NsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLSMgU2NyaXB0IGZvciBidWlsZGluZyB0aGUgX3NzbCBtb2R1bGUgZm9yIFdpbmRvd3MuCi0jIFVzZXMgUGVybCB0byBzZXR1cCB0aGUgT3BlblNTTCBlbnZpcm9ubWVudCBjb3JyZWN0bHkKLSMgYW5kIGJ1aWxkIE9wZW5TU0wsIHRoZW4gaW52b2tlcyBhIHNpbXBsZSBubWFrZSBzZXNzaW9uCi0jIGZvciBfc3NsLnB5ZCBpdHNlbGYuCi0KLSMgVEhFT1JFVElDQUxMWSwgeW91IGNhbjoKLSMgKiBVbnBhY2sgdGhlIGxhdGVzdCBTU0wgcmVsZWFzZSBvbmUgbGV2ZWwgYWJvdmUgeW91ciBtYWluIFB5dGhvbiBzb3VyY2UKLSMgICBkaXJlY3RvcnkuICBJdCBpcyBsaWtlbHkgeW91IHdpbGwgYWxyZWFkeSBmaW5kIHRoZSB6bGliIGxpYnJhcnkgYW5kCi0jICAgYW55IG90aGVyIGV4dGVybmFsIHBhY2thZ2VzIHRoZXJlLgotIyAqIEluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGlzIHNvbWV3aGVyZSBvbiB5b3VyIHBhdGguCi0jICogUnVuIHRoaXMgc2NyaXB0IGZyb20gdGhlIFBDL1ZDNiBkaXJlY3RvcnkuCi0jCi0jIGl0IHNob3VsZCBjb25maWd1cmUgYW5kIGJ1aWxkIFNTTCwgdGhlbiBidWlsZCB0aGUgc3NsIFB5dGhvbiBleHRlbnNpb24KLSMgd2l0aG91dCBpbnRlcnZlbnRpb24uCi0KLSMgTW9kaWZpZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcwotIyBOb3cgdGhpcyBzY3JpcHQgc3VwcG9ydHMgcHJlLWdlbmVyYXRlZCBtYWtlZmlsZXMgYW5kIGFzc2VtYmx5IGZpbGVzLgotIyBEZXZlbG9wZXJzIGRvbid0IG5lZWQgYW4gaW5zdGFsbGF0aW9uIG9mIFBlcmwgYW55bW9yZSB0byBidWlsZCBQeXRob24uIEEgc3ZuCi0jIGNoZWNrb3V0IGZyb20gb3VyIHN2biByZXBvc2l0b3J5IGlzIGVub3VnaC4KLQotaW1wb3J0IG9zLCBzeXMsIHJlLCBzaHV0aWwKLQotIyBGaW5kIGFsbCAiZm9vLmV4ZSIgZmlsZXMgb24gdGhlIFBBVEguCi1kZWYgZmluZF9hbGxfb25fcGF0aChmaWxlbmFtZSwgZXh0cmFzID0gTm9uZSk6Ci0gICAgZW50cmllcyA9IG9zLmVudmlyb25bIlBBVEgiXS5zcGxpdChvcy5wYXRoc2VwKQotICAgIHJldCA9IFtdCi0gICAgZm9yIHAgaW4gZW50cmllczoKLSAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgotICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKLSAgICBpZiBleHRyYXM6Ci0gICAgICAgIGZvciBwIGluIGV4dHJhczoKLSAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKLSAgICByZXR1cm4gcmV0Ci0KLSMgRmluZCBhIHN1aXRhYmxlIFBlcmwgaW5zdGFsbGF0aW9uIGZvciBPcGVuU1NMLgotIyBjeWd3aW4gcGVybCBkb2VzICpub3QqIHdvcmsuICBBY3RpdmVQZXJsIGRvZXMuCi0jIEJlaW5nIGEgUGVybCBkdW1teSwgdGhlIHNpbXBsZXN0IHdheSBJIGNhbiBjaGVjayBpcyBpZiB0aGUgIldpbjMyIiBwYWNrYWdlCi0jIGlzIGF2YWlsYWJsZS4KLWRlZiBmaW5kX3dvcmtpbmdfcGVybChwZXJscyk6Ci0gICAgZm9yIHBlcmwgaW4gcGVybHM6Ci0gICAgICAgIGZoID0gb3MucG9wZW4oJyIlcyIgLWUgInVzZSBXaW4zMjsiJyAlIHBlcmwpCi0gICAgICAgIGZoLnJlYWQoKQotICAgICAgICByYyA9IGZoLmNsb3NlKCkKLSAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICByZXR1cm4gcGVybAotICAgIHByaW50KCJDYW4gbm90IGZpbmQgYSBzdWl0YWJsZSBQRVJMOiIpCi0gICAgaWYgcGVybHM6Ci0gICAgICAgIHByaW50KCIgdGhlIGZvbGxvd2luZyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kOiIpCi0gICAgICAgIGZvciBwIGluIHBlcmxzOgotICAgICAgICAgICAgcHJpbnQoIiAiLCBwKQotICAgICAgICBwcmludCgiIE5vbmUgb2YgdGhlc2UgdmVyc2lvbnMgYXBwZWFyIHN1aXRhYmxlIGZvciBidWlsZGluZyBPcGVuU1NMIikKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiIE5PIHBlcmwgaW50ZXJwcmV0ZXJzIHdlcmUgZm91bmQgb24gdGhpcyBtYWNoaW5lIGF0IGFsbCEiKQotICAgIHByaW50KCIgUGxlYXNlIGluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGFwcGVhcnMgb24geW91ciBwYXRoIikKLSAgICByZXR1cm4gTm9uZQotCi0jIExvY2F0ZSB0aGUgYmVzdCBTU0wgZGlyZWN0b3J5IGdpdmVuIGEgZmV3IHJvb3RzIHRvIGxvb2sgaW50by4KLWRlZiBmaW5kX2Jlc3Rfc3NsX2Rpcihzb3VyY2VzKToKLSAgICBjYW5kaWRhdGVzID0gW10KLSAgICBmb3IgcyBpbiBzb3VyY2VzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIG5vdGU6IGRvIG5vdCBhYnNwYXRoIHM7IHRoZSBidWlsZCB3aWxsIGZhaWwgaWYgYW55Ci0gICAgICAgICAgICAjIGhpZ2hlciB1cCBkaXJlY3RvcnkgbmFtZSBoYXMgc3BhY2VzIGluIGl0LgotICAgICAgICAgICAgZm5hbWVzID0gb3MubGlzdGRpcihzKQotICAgICAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgICAgICBmbmFtZXMgPSBbXQotICAgICAgICBmb3IgZm5hbWUgaW4gZm5hbWVzOgotICAgICAgICAgICAgZnFuID0gb3MucGF0aC5qb2luKHMsIGZuYW1lKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmcW4pIGFuZCBmbmFtZS5zdGFydHN3aXRoKCJvcGVuc3NsLSIpOgotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGZxbikKLSAgICAjIE5vdyB3ZSBoYXZlIGFsbCB0aGUgY2FuZGlkYXRlcywgbG9jYXRlIHRoZSBiZXN0LgotICAgIGJlc3RfcGFydHMgPSBbXQotICAgIGJlc3RfbmFtZSA9IE5vbmUKLSAgICBmb3IgYyBpbiBjYW5kaWRhdGVzOgotICAgICAgICBwYXJ0cyA9IHJlLnNwbGl0KCJbLi1dIiwgb3MucGF0aC5iYXNlbmFtZShjKSlbMTpdCi0gICAgICAgICMgZWcgLSBvcGVuc3NsLTAuOS43LWJldGExIC0gaWdub3JlIGFsbCAiYmV0YSIgb3IgYW55IG90aGVyIHF1YWxpZmllcnMKLSAgICAgICAgaWYgbGVuKHBhcnRzKSA+PSA0OgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgcGFydHMgPiBiZXN0X3BhcnRzOgotICAgICAgICAgICAgYmVzdF9wYXJ0cyA9IHBhcnRzCi0gICAgICAgICAgICBiZXN0X25hbWUgPSBjCi0gICAgaWYgYmVzdF9uYW1lIGlzIG5vdCBOb25lOgotICAgICAgICBwcmludCgiRm91bmQgYW4gU1NMIGRpcmVjdG9yeSBhdCAnJXMnIiAlIChiZXN0X25hbWUsKSkKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiQ291bGQgbm90IGZpbmQgYW4gU1NMIGRpcmVjdG9yeSBpbiAnJXMnIiAlIChzb3VyY2VzLCkpCi0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgcmV0dXJuIGJlc3RfbmFtZQotCi1kZWYgZml4X21ha2VmaWxlKG1ha2VmaWxlKToKLSAgICAiIiJGaXggc29tZSBzdHVmZiBpbiBhbGwgbWFrZWZpbGVzCi0gICAgIiIiCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKLSAgICAgICAgcmV0dXJuCi0gICAgd2l0aCBvcGVuKG1ha2VmaWxlKSBhcyBmaW46Ci0gICAgICAgIGxpbmVzID0gZmluLnJlYWRsaW5lcygpCi0gICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6Ci0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJQRVJMPSIpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkNQPSIpOgotICAgICAgICAgICAgICAgIGxpbmUgPSAiQ1A9Y29weVxuIgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJNS0RJUj0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gIk1LRElSPW1rZGlyXG4iCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIkNGTEFHPSIpOgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBmb3IgYWxnbyBpbiAoIlJDNSIsICJNREMyIiwgIklERUEiKToKLSAgICAgICAgICAgICAgICAgICAgbm9hbGdvID0gIiAtRE9QRU5TU0xfTk9fJXMiICUgYWxnbwotICAgICAgICAgICAgICAgICAgICBpZiBub2FsZ28gbm90IGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZSArIG5vYWxnbwotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgJ1xuJwotICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQotCi1kZWYgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCk6Ci0gICAgcHJpbnQoInBlcmwgQ29uZmlndXJlICIrY29uZmlndXJlKQotICAgIG9zLnN5c3RlbSgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUpCi0gICAgcHJpbnQoZG9fc2NyaXB0KQotICAgIG9zLnN5c3RlbShkb19zY3JpcHQpCi0KLWRlZiBjbXAoZjEsIGYyKToKLSAgICBidWZzaXplID0gMTAyNCAqIDgKLSAgICB3aXRoIG9wZW4oZjEsICdyYicpIGFzIGZwMSwgb3BlbihmMiwgJ3JiJykgYXMgZnAyOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYjEgPSBmcDEucmVhZChidWZzaXplKQotICAgICAgICAgICAgYjIgPSBmcDIucmVhZChidWZzaXplKQotICAgICAgICAgICAgaWYgYjEgIT0gYjI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBub3QgYjE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotZGVmIGNvcHkoc3JjLCBkc3QpOgotICAgIGlmIG9zLnBhdGguaXNmaWxlKGRzdCkgYW5kIGNtcChzcmMsIGRzdCk6Ci0gICAgICAgIHJldHVybgotICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQotCi1kZWYgbWFpbigpOgotICAgIGRlYnVnID0gIi1kIiBpbiBzeXMuYXJndgotICAgIGJ1aWxkX2FsbCA9ICItYSIgaW4gc3lzLmFyZ3YKLSAgICBpZiAxOiAjIFdpbjMyCi0gICAgICAgIGFyY2ggPSAieDg2IgotICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lOMzIiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fbmFzbSIKLSAgICAgICAgbWFrZWZpbGU9Im1zXFxudC5tYWsiCi0gICAgICAgIG0zMiA9IG1ha2VmaWxlCi0gICAgICAgIGRpcnN1ZmZpeCA9ICIzMiIKLSAgICBjb25maWd1cmUgKz0gIiBuby1pZGVhIG5vLXJjNSBuby1tZGMyIgotICAgIG1ha2VfZmxhZ3MgPSAiIgotICAgIGlmIGJ1aWxkX2FsbDoKLSAgICAgICAgbWFrZV9mbGFncyA9ICItYSIKLSAgICAjIHBlcmwgc2hvdWxkIGJlIG9uIHRoZSBwYXRoLCBidXQgd2UgYWxzbyBsb29rIGluICJccGVybCIgYW5kICJjOlxccGVybCIKLSAgICAjIGFzICJ3ZWxsIGtub3duIiBsb2NhdGlvbnMKLSAgICBwZXJscyA9IGZpbmRfYWxsX29uX3BhdGgoInBlcmwuZXhlIiwgWyJcXHBlcmxcXGJpbiIsICJDOlxccGVybFxcYmluIl0pCi0gICAgcGVybCA9IGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKQotICAgIGlmIHBlcmw6Ci0gICAgICAgIHByaW50KCJGb3VuZCBhIHdvcmtpbmcgcGVybCBhdCAnJXMnIiAlIChwZXJsLCkpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIk5vIFBlcmwgaW5zdGFsbGF0aW9uIHdhcyBmb3VuZC4gRXhpc3RpbmcgTWFrZWZpbGVzIGFyZSB1c2VkLiIpCi0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgIyBMb29rIGZvciBTU0wgMyBsZXZlbHMgdXAgZnJvbSBQQy9WQzYgLSBpZSwgc2FtZSBwbGFjZSB6bGliIGV0YyBhbGwgbGl2ZS4KLSAgICBzc2xfZGlyID0gZmluZF9iZXN0X3NzbF9kaXIoKCIuLlxcLi5cXC4uIiwpKQotICAgIGlmIHNzbF9kaXIgaXMgTm9uZToKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIG9sZF9jZCA9IG9zLmdldGN3ZCgpCi0gICAgdHJ5OgotICAgICAgICBvcy5jaGRpcihzc2xfZGlyKQotICAgICAgICAjIElmIHRoZSBzc2wgbWFrZWZpbGVzIGRvIG5vdCBleGlzdCwgd2UgaW52b2tlIFBlcmwgdG8gZ2VuZXJhdGUgdGhlbS4KLSAgICAgICAgIyBEdWUgdG8gYSBidWcgaW4gdGhpcyBzY3JpcHQsIHRoZSBtYWtlZmlsZSBzb21ldGltZXMgZW5kZWQgdXAgZW1wdHkKLSAgICAgICAgIyBGb3JjZSBhIHJlZ2VuZXJhdGlvbiBpZiBpdCBpcy4KLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKSBvciBvcy5wYXRoLmdldHNpemUobWFrZWZpbGUpPT0wOgotICAgICAgICAgICAgaWYgcGVybCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHByaW50KCJQZXJsIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSBtYWtlZmlsZXMhIikKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgICAgICBwcmludCgiQ3JlYXRpbmcgdGhlIG1ha2VmaWxlcy4uLiIpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgICMgUHV0IG91ciB3b3JraW5nIFBlcmwgYXQgdGhlIGZyb250IG9mIG91ciBwYXRoCi0gICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5wYXRoLmRpcm5hbWUocGVybCkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoc2VwICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdCi0gICAgICAgICAgICBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KQotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIk9wZW5TU0wgZGVidWcgYnVpbGRzIGFyZW4ndCBzdXBwb3J0ZWQuIikKLSAgICAgICAgICAgICNpZiBhcmNoPT0ieDg2IiBhbmQgZGVidWc6Ci0gICAgICAgICAgICAjICAgICMgdGhlIGRvX21hc20gc2NyaXB0IGluIG9wZW5zc2wgZG9lc24ndCBnZW5lcmF0ZSBhIGRlYnVnCi0gICAgICAgICAgICAjICAgICMgYnVpbGQgbWFrZWZpbGUgc28gd2UgZ2VuZXJhdGUgaXQgaGVyZToKLSAgICAgICAgICAgICMgICAgb3Muc3lzdGVtKCJwZXJsIHV0aWxcbWsxbWYucGwgZGVidWcgIitjb25maWd1cmUrIiA+IittYWtlZmlsZSkKLQotICAgICAgICAgICAgZml4X21ha2VmaWxlKG1ha2VmaWxlKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xvcGVuc3NsY29uZi5oIiwgciJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoKQotCi0gICAgICAgICMgSWYgdGhlIGFzc2VtYmxlciBmaWxlcyBkb24ndCBleGlzdCBpbiB0bXBYWCwgY29weSB0aGVtIHRoZXJlCi0gICAgICAgIGlmIHBlcmwgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygidG1wIitkaXJzdWZmaXgpOgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKCJ0bXAiK2RpcnN1ZmZpeCkKLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgICAgICBpZiBub3QgZi5lbmRzd2l0aCgiLmFzbSIpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHIidG1wJXNcJXMiICUgKGRpcnN1ZmZpeCwgZikpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KHIiYXNtJXNcJXMiICUgKGRpcnN1ZmZpeCwgZiksICJ0bXAiK2RpcnN1ZmZpeCkKLQotICAgICAgICAjIE5vdyBydW4gbWFrZS4KLSAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZl8lcy5oIiAlIGFyY2gsIHIiY3J5cHRvXGJ1aWxkaW5mLmgiKQotICAgICAgICBjb3B5KHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cb3BlbnNzbGNvbmYuaCIpCi0KLSAgICAgICAgI21ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gUEVSTD1cIiVzXCIgLWYgXCIlc1wiIiAlKHBlcmwsIG1ha2VmaWxlKQotICAgICAgICBtYWtlQ29tbWFuZCA9ICJubWFrZSAvbm9sb2dvIC1mIFwiJXNcIiIgJSBtYWtlZmlsZQotICAgICAgICBwcmludCgiRXhlY3V0aW5nIHNzbCBtYWtlZmlsZXM6IiwgbWFrZUNvbW1hbmQpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByYyA9IG9zLnN5c3RlbShtYWtlQ29tbWFuZCkKLSAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICBwcmludCgiRXhlY3V0aW5nICIrbWFrZWZpbGUrIiBmYWlsZWQiKQotICAgICAgICAgICAgcHJpbnQocmMpCi0gICAgICAgICAgICBzeXMuZXhpdChyYykKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy5jaGRpcihvbGRfY2QpCi0gICAgIyBBbmQgZmluYWxseSwgd2UgY2FuIGJ1aWxkIHRoZSBfc3NsIG1vZHVsZSBpdHNlbGYgZm9yIFB5dGhvbi4KLSAgICBkZWZzID0gIlNTTF9ESVI9JXMiICUgKHNzbF9kaXIsKQotICAgIGlmIGRlYnVnOgotICAgICAgICBkZWZzID0gZGVmcyArICIgIiArICJERUJVRz0xIgotICAgIHJjID0gb3Muc3lzdGVtKCdubWFrZSAvbm9sb2dvIC1mIF9zc2wubWFrICcgKyBkZWZzICsgIiAiICsgbWFrZV9mbGFncykKLSAgICBzeXMuZXhpdChyYykKLQotaWYgX19uYW1lX189PSdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQy9WQzYvYnVpbGRfdGtpbnRlci5weSBiL1BDL1ZDNi9idWlsZF90a2ludGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWNhOTJjLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9idWlsZF90a2ludGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3VicHJvY2VzcwotCi1UQ0xfTUFKT1IgPSA4Ci1UQ0xfTUlOT1IgPSA1Ci1UQ0xfUEFUQ0ggPSAyCi0KLVRJWF9NQUpPUiA9IDgKLVRJWF9NSU5PUiA9IDQKLVRJWF9QQVRDSCA9IDMKLQotZGVmIGFic3BhdGgobmFtZSk6Ci0gICAgcGFyID0gb3MucGF0aC5wYXJkaXIKLSAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihfX2ZpbGVfXywgcGFyLCBwYXIsIHBhciwgcGFyLCBuYW1lKSkKLQotVENMX0RJUiA9IGFic3BhdGgoInRjbCVkLiVkLiVkIiAlIChUQ0xfTUFKT1IsIFRDTF9NSU5PUiwgVENMX1BBVENIKSkKLVRLX0RJUiAgPSBhYnNwYXRoKCJ0ayVkLiVkLiVkIiAgJSAoVENMX01BSk9SLCBUQ0xfTUlOT1IsIFRDTF9QQVRDSCkpCi1USVhfRElSID0gYWJzcGF0aCgidGl4JWQuJWQuJWQiICUgKFRJWF9NQUpPUiwgVElYX01JTk9SLCBUSVhfUEFUQ0gpKQotT1VUX0RJUiA9IGFic3BhdGgoInRjbHRrIikKLQotZGVmIGhhdmVfYXJncygqYSk6Ci0gICAgcmV0dXJuIGFueShzIGluIHN5cy5hcmd2WzE6XSBmb3IgcyBpbiBhKQotCi1kZWYgZW50ZXIoZGlyKToKLSAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4oZGlyLCAid2luIikpCi0KLWRlZiBtYWluKCk6Ci0gICAgZGVidWcgPSBoYXZlX2FyZ3MoIi1kIiwgIi0tZGVidWciKQotICAgIGNsZWFuID0gaGF2ZV9hcmdzKCJjbGVhbiIpCi0gICAgaW5zdGFsbCA9IGhhdmVfYXJncygiaW5zdGFsbCIpCi0gICAgdGNsID0gaGF2ZV9hcmdzKCJ0Y2wiKQotICAgIHRrID0gaGF2ZV9hcmdzKCJ0ayIpCi0gICAgdGl4ID0gaGF2ZV9hcmdzKCJ0aXgiKQotICAgIGlmIG5vdCh0Y2wpIGFuZCBub3QodGspIGFuZCBub3QodGl4KToKLSAgICAgICAgdGNsID0gdGsgPSB0aXggPSBUcnVlCi0KLSAgICBkZWYgbm1ha2UobWFrZWZpbGUsICphKToKLSAgICAgICAgYXJncyA9IFsibm1ha2UiLCAiL25vbG9nbyIsICIvZiIsIG1ha2VmaWxlLCAiREVCVUc9JWQiICUgZGVidWddCi0gICAgICAgIGFyZ3MuZXh0ZW5kKGEpCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChhcmdzKQotCi0gICAgaWYgdGNsOgotICAgICAgICBlbnRlcihUQ0xfRElSKQotICAgICAgICBkZWYgbm1ha2VfdGNsKCphKToKLSAgICAgICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsICphKQotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIG5tYWtlX3RjbCgiY2xlYW4iKQotICAgICAgICBlbGlmIGluc3RhbGw6Ci0gICAgICAgICAgICBubWFrZV90Y2woImluc3RhbGwiLCAiSU5TVEFMTERJUj0iICsgT1VUX0RJUikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5tYWtlX3RjbCgpCi0KLSAgICBpZiB0azoKLSAgICAgICAgZW50ZXIoVEtfRElSKQotICAgICAgICBkZWYgbm1ha2VfdGsoKmEpOgotICAgICAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgIlRDTERJUj0iICsgVENMX0RJUiwgKmEpCi0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgbm1ha2VfdGsoImNsZWFuIikKLSAgICAgICAgZWxpZiBpbnN0YWxsOgotICAgICAgICAgICAgbm1ha2VfdGsoImluc3RhbGwiLCAiSU5TVEFMTERJUj0iICsgT1VUX0RJUikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5tYWtlX3RrKCkKLQotICAgIGlmIHRpeDoKLSAgICAgICAgZW50ZXIoVElYX0RJUikKLSAgICAgICAgZGVmIG5tYWtlX3RpeCgqYSk6Ci0gICAgICAgICAgICBubWFrZSgicHl0aG9uLm1hayIsCi0gICAgICAgICAgICAgICAgICAiVENMX01BSk9SPSVkIiAlIFRDTF9NQUpPUiwKLSAgICAgICAgICAgICAgICAgICJUQ0xfTUlOT1I9JWQiICUgVENMX01JTk9SLAotICAgICAgICAgICAgICAgICAgIlRDTF9QQVRDSD0lZCIgJSBUQ0xfUEFUQ0gsCi0gICAgICAgICAgICAgICAgICAiTUFDSElORT1JWDg2IiwgKmEpCi0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgbm1ha2VfdGl4KCJjbGVhbiIpCi0gICAgICAgIGVsaWYgaW5zdGFsbDoKLSAgICAgICAgICAgIG5tYWtlX3RpeCgiaW5zdGFsbCIsICJJTlNUQUxMX0RJUj0iICsgT1VUX0RJUikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5tYWtlX3RpeCgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQy9WQzYvYnoyLmRzcCBiL1BDL1ZDNi9iejIuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTJjYmFkLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9iejIuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJiejIiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9YnoyIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgImJ6Mi5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAiYnoyLm1hayIgQ0ZHPSJiejIgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAiYnoyIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgImJ6MiAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgImJ6MiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJiejIgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVxiejIiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvSSAiLi5cLi5cLi5cYnppcDItMS4wLjYiIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgLi5cLi5cLi5cYnppcDItMS4wLjZcbGliYnoyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFEMTcwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL2J6Mi5weWQiDQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lIC9ub2RlZmF1bHRsaWINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiYnoyIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXGJ6MiINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0kgIi4uXC4uXC4uXGJ6aXAyLTEuMC42IiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIC4uXC4uXC4uXGJ6aXAyLTEuMC42XGxpYmJ6Mi5saWIgL25vbG9nbyAvYmFzZToiMHgxRDE3MDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibXN2Y3J0IiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL2J6Ml9kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAiYnoyIC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgImJ6MiAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xiejJtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9tYWtlX3ZlcnNpb25pbmZvLmRzcCBiL1BDL1ZDNi9tYWtlX3ZlcnNpb25pbmZvLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTczNWUxMi4uMDAwMDAwMAotLS0gYS9QQy9WQzYvbWFrZV92ZXJzaW9uaW5mby5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMNCi0NCi1DRkc9bWFrZV92ZXJzaW9uaW5mbyAtIFdpbjMyIFJlbGVhc2UNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIm1ha2VfdmVyc2lvbmluZm8ubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIm1ha2VfdmVyc2lvbmluZm8ubWFrIiBDRkc9Im1ha2VfdmVyc2lvbmluZm8gLSBXaW4zMiBSZWxlYXNlIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJtYWtlX3ZlcnNpb25pbmZvIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCi0hTUVTU0FHRSAibWFrZV92ZXJzaW9uaW5mbyAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAibWFrZV92ZXJzaW9uaW5mbyINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJtYWtlX3ZlcnNpb25pbmZvIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VcbWFrZV92ZXJzaW9uaW5mbyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWQwMDAwMDAiIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4Ng0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLSMgQmVnaW4gQ3VzdG9tIEJ1aWxkDQotSW5wdXRQYXRoPS5cbWFrZV92ZXJzaW9uaW5mby5leGUNCi1TT1VSQ0U9IiQoSW5wdXRQYXRoKSINCi0NCi0iLi5ccHl0aG9ubnRfcmMuaCIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIgIiQoT1VURElSKSINCi0JLlxtYWtlX3ZlcnNpb25pbmZvLmV4ZSA+Li5ccHl0aG9ubnRfcmMuaA0KLQ0KLSMgRW5kIEN1c3RvbSBCdWlsZA0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJtYWtlX3ZlcnNpb25pbmZvIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXG1ha2VfdmVyc2lvbmluZm8iDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXEluY2x1ZGUiIC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFkMDAwMDAwIiAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi9tYWtlX3ZlcnNpb25pbmZvX2QuZXhlIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotIyBCZWdpbiBDdXN0b20gQnVpbGQNCi1JbnB1dFBhdGg9LlxtYWtlX3ZlcnNpb25pbmZvX2QuZXhlDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotDQotIi4uXHB5dGhvbm50X3JjX2QuaCIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIgIiQoT1VURElSKSINCi0JLlxtYWtlX3ZlcnNpb25pbmZvX2QuZXhlID4uLlxweXRob25udF9yY19kLmgNCi0NCi0jIEVuZCBDdXN0b20gQnVpbGQNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgIm1ha2VfdmVyc2lvbmluZm8gLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAibWFrZV92ZXJzaW9uaW5mbyAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cbWFrZV92ZXJzaW9uaW5mby5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L3BjYnVpbGQuZHN3IGIvUEMvVkM2L3BjYnVpbGQuZHN3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2IyZWJjLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9wY2J1aWxkLmRzdworKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi1NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBXb3Jrc3BhY2UgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgV0FSTklORzogRE8gTk9UIEVESVQgT1IgREVMRVRFIFRISVMgV09SS1NQQUNFIEZJTEUhDQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfY3R5cGVzIj0iLlxfY3R5cGVzLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfY3R5cGVzX3Rlc3QiPSIuXF9jdHlwZXNfdGVzdC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfZWxlbWVudHRyZWUiPSIuXF9lbGVtZW50dHJlZS5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfbXNpIj0iLlxfbXNpLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfbXVsdGlwcm9jZXNzaW5nIj0iLlxfbXVsdGlwcm9jZXNzaW5nLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfc29ja2V0Ij0iLlxfc29ja2V0LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfc3FsaXRlMyI9Ii5cX3NxbGl0ZTMuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAiX3NzbCI9Ii5cX3NzbC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBQcm9qZWN0X0RlcF9OYW1lIHB5dGhvbmNvcmUNCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gICAgUHJvamVjdF9EZXBfTmFtZSBweXRob24NCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gICAgUHJvamVjdF9EZXBfTmFtZSB3OXhwb3Blbg0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJfdGVzdGNhcGkiPSIuXF90ZXN0Y2FwaS5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBQcm9qZWN0X0RlcF9OYW1lIHB5dGhvbmNvcmUNCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAiX3RraW50ZXIiPSIuXF90a2ludGVyLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJiejIiPSIuXGJ6Mi5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJtYWtlX3ZlcnNpb25pbmZvIj0iLlxtYWtlX3ZlcnNpb25pbmZvLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogInB5ZXhwYXQiPSIuXHB5ZXhwYXQuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLSAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gICAgUHJvamVjdF9EZXBfTmFtZSBweXRob25jb3JlDQotICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogInB5dGhvbiI9Ii5ccHl0aG9uLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJweXRob25jb3JlIj0iLlxweXRob25jb3JlLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgbWFrZV92ZXJzaW9uaW5mbw0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJweXRob253Ij0iLlxweXRob253LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJzZWxlY3QiPSIuXHNlbGVjdC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBQcm9qZWN0X0RlcF9OYW1lIHB5dGhvbmNvcmUNCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAidW5pY29kZWRhdGEiPSIuXHVuaWNvZGVkYXRhLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJ3OXhwb3BlbiI9Ii5cdzl4cG9wZW4uZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAid2luc291bmQiPSIuXHdpbnNvdW5kLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi0gICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICAgIFByb2plY3RfRGVwX05hbWUgcHl0aG9uY29yZQ0KLSAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLUdsb2JhbDoNCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDM+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLQ0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9weWV4cGF0LmRzcCBiL1BDL1ZDNi9weWV4cGF0LmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYxYzllZi4uMDAwMDAwMAotLS0gYS9QQy9WQzYvcHlleHBhdC5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJweWV4cGF0IiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPXB5ZXhwYXQgLSBXaW4zMiBSZWxlYXNlDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweWV4cGF0Lm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweWV4cGF0Lm1hayIgQ0ZHPSJweWV4cGF0IC0gV2luMzIgUmVsZWFzZSINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAicHlleHBhdCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJweWV4cGF0IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAicHlleHBhdCINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJweWV4cGF0IC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VccHlleHBhdCINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9JICIuLlwuLlxNb2R1bGVzXGV4cGF0IiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJOREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiWE1MX05TIiAvRCAiWE1MX0RURCIgL0QgQllURU9SREVSPTEyMzQgL0QgWE1MX0NPTlRFWFRfQllURVM9MTAyNCAvRCAiWE1MX1NUQVRJQyIgL0QgIkhBVkVfTUVNTU9WRSIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiB1c2VyMzIubGliIGtlcm5lbDMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFEMTAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL3B5ZXhwYXQucHlkIg0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJweWV4cGF0IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXHB5ZXhwYXQiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9JICIuLlwuLlxNb2R1bGVzXGV4cGF0IiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJIQVZFX0VYUEFUX0giIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiWE1MX05TIiAvRCAiWE1MX0RURCIgL0QgQllURU9SREVSPTEyMzQgL0QgWE1MX0NPTlRFWFRfQllURVM9MTAyNCAvRCAiWE1MX1NUQVRJQyIgL0QgIkhBVkVfTUVNTU9WRSIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiB1c2VyMzIubGliIGtlcm5lbDMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFEMTAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL3B5ZXhwYXRfZC5weWQiIC9wZGJ0eXBlOnNlcHQNCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgInB5ZXhwYXQgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAicHlleHBhdCAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xweWV4cGF0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS9QQy9WQzYvcHl0aG9uLmRzcCBiL1BDL1ZDNi9weXRob24uZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYThiNzcyLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9weXRob24uZHNwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0icHl0aG9uIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMNCi0NCi1DRkc9cHl0aG9uIC0gV2luMzIgUmVsZWFzZQ0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAicHl0aG9uLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweXRob24ubWFrIiBDRkc9InB5dGhvbiAtIFdpbjMyIFJlbGVhc2UiDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgInB5dGhvbiAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgInB5dGhvbiAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAicHl0aG9uIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIuLiINCi1DUFA9Y2wuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gInB5dGhvbiAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1yZWxlYXNlXHB5dGhvbiINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWQwMDAwMDAiIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4Ng0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJweXRob24gLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdccHl0aG9uIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aaSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9pICIuLi4uXFxJbmNsdWRlIiAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgL25vbG9nbyAvYmFzZToiMHgxZDAwMDAwMCIgL3N0YWNrOjB4MjAwMDAwIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL3B5dGhvbl9kLmV4ZSIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAicHl0aG9uIC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgInB5dGhvbiAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5ccHljb24uaWNvDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNccHl0aG9uLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5ccHl0aG9uX2V4ZS5yYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9weXRob25jb3JlLmRzcCBiL1BDL1ZDNi9weXRob25jb3JlLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNlOThkMS4uMDAwMDAwMAotLS0gYS9QQy9WQzYvcHl0aG9uY29yZS5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSw3ODAgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJweXRob25jb3JlIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPXB5dGhvbmNvcmUgLSBXaW4zMiBSZWxlYXNlDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweXRob25jb3JlLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweXRob25jb3JlLm1hayIgQ0ZHPSJweXRob25jb3JlIC0gV2luMzIgUmVsZWFzZSINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAicHl0aG9uY29yZSAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJweXRob25jb3JlIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAicHl0aG9uY29yZSINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJweXRob25jb3JlIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VccHl0aG9uY29yZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi4iIC9JICIuLlwuLlxtb2R1bGVzXHpsaWIiIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9EICJVU0VfRExfRVhQT1JUIiAvWVggL0ZEIC9abTIwMCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vIC93aW4zMiAiTlVMIg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAvd2luMzIgIk5VTCINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvaSAiLi5cLi5cSW5jbHVkZSIgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMzLmRsbCINCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAicHl0aG9uY29yZSAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1kZWJ1Z1xweXRob25jb3JlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvSSAiLi5cLi5cbW9kdWxlc1x6bGliIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJfREVCVUciIC9EICJVU0VfRExfRVhQT1JUIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvWm0yMDAgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAvd2luMzIgIk5VTCINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL28gL3dpbjMyICJOVUwiDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2kgIi4uXC4uXEluY2x1ZGUiIC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGxhcmdlaW50LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZTAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL291dDoiLi9weXRob24zM19kLmRsbCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAicHl0aG9uY29yZSAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJweXRob25jb3JlIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfY3N2LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfZGF0ZXRpbWVtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2pzb24uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9sc3Byb2YuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tYXRoLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfcGlja2xlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfc3JlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfc3RydWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUENcX3N1YnByb2Nlc3MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF90aW1lLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXF93YXJuaW5ncy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX3dlYWtyZWYuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGFic3RyYWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xhY2N1LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUGFyc2VyXGFjY2VsZXIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cYXNkbC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxhc3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcYXVkaW9vcC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQYXJzZXJcYml0c2V0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xib29sb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGNhcHN1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGNlbGxvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cY2V2YWwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxjb2RlY3MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGNvZGVvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cY29tcGlsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXGNvbmZpZy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cZGxfbnQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cZHRvYS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxkeW5sb2FkX3dpbi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcZW51bW9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cZXJyb3JzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xleGNlcHRpb25zLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXGZpbGV1dGlscy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFBhcnNlclxmaXJzdHNldHMuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxmcm96ZW4uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cZnV0dXJlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xnY21vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXGdldGFyZ3MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jDQotIyBBREQgQ1BQIC9EIEJVSUxEPTQ2DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cZ2V0b3B0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cZ2V0cGF0aHAuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cZ2V0cGxhdGZvcm0uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cZ2V0dmVyc2lvbi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxncmFtaW5pdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFBhcnNlclxncmFtbWFyLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUGFyc2VyXGdyYW1tYXIxLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x6bGliXGd6aW8uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25caW1wb3J0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXGltcG9ydGRsLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQYXJzZXJcbGlzdG5vZGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGxpc3RvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXGxvbmdvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXG1haW4uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cbWFyc2hhbC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxtb2RzdXBwb3J0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlxtc3ZjcnRtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXG15c25wcmludGYuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cbXlzdHJ0b3VsLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUGFyc2VyXG5vZGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXG9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUGFyc2VyXHBhcnNlci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUGFyc2VyXHBhcnNldG9rLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXHBlZXBob2xlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxweWFyZW5hLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXHB5Y3R5cGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25ccHlmcGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25ccHltYXRoLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXHB5c3RhdGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25ccHlzdHJjbXAuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25ccHlzdHJ0b2QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5ccHl0aG9uX250LnJjDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxweXRob25ydW4uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25ccHl0aW1lLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXHJhbmRvbS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNccmFuZ2VvYmplY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcc2V0b2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcc3RydWN0c2VxLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUHl0aG9uXHN5bXRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblxzeXNtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxQeXRob25cdGhyZWFkLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cUGFyc2VyXHRva2VuaXplci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXFB5dGhvblx0cmFjZWJhY2suYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXHdpbnJlZy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNceHhzdWJ0eXBlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1x6aXBpbXBvcnQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9weXRob253LmRzcCBiL1BDL1ZDNi9weXRob253LmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljMzI1Yy4uMDAwMDAwMAotLS0gYS9QQy9WQzYvcHl0aG9udy5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJweXRob253IiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIgMHgwMTAxDQotDQotQ0ZHPXB5dGhvbncgLSBXaW4zMiBBbHBoYSBSZWxlYXNlDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweXRob253Lm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJweXRob253Lm1hayIgQ0ZHPSJweXRob253IC0gV2luMzIgQWxwaGEgUmVsZWFzZSINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAicHl0aG9udyAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJweXRob253IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAicHl0aG9udyINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi5ccGMiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJweXRob253IC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2VccHl0aG9udyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWQwMDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4Ng0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJweXRob253IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXHB5dGhvbnciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1ppIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZDAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vcHl0aG9ud19kLmV4ZSIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAicHl0aG9udyAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJweXRob253IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlxweXRob25fZXhlLnJjDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXFdpbk1haW4uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9yZWFkbWUudHh0IGIvUEMvVkM2L3JlYWRtZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NzhmODUuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L3JlYWRtZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotQnVpbGRpbmcgUHl0aG9uIHVzaW5nIFZDKysgNi4wIG9yIDUuMAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhpcyBkaXJlY3RvcnkgaXMgdXNlZCB0byBidWlsZCBQeXRob24gZm9yIFdpbjMyIHBsYXRmb3JtcywgZS5nLiBXaW5kb3dzCi0yMDAwIGFuZCBYUC4gIEl0IHJlcXVpcmVzIE1pY3Jvc29mdCBWaXN1YWwgQysrIDYueCBvciA1LnggYW5kIFBsYXRmb3JtCi1TREsgRmVicnVhcnkgMjAwMyBFZGl0aW9uIChDb3JlIFNESykuCi0oRm9yIG90aGVyIFdpbmRvd3MgcGxhdGZvcm1zIGFuZCBjb21waWxlcnMsIHNlZSAuLi9yZWFkbWUudHh0LikKLQotQWxsIHlvdSBuZWVkIHRvIGRvIGlzIG9wZW4gdGhlIHdvcmtzcGFjZSAicGNidWlsZC5kc3ciIGluIE1TVkMrKywgc2VsZWN0Ci10aGUgRGVidWcgb3IgUmVsZWFzZSBzZXR0aW5nICh1c2luZyBCdWlsZCAtPiBTZXQgQWN0aXZlIENvbmZpZ3VyYXRpb24uLi4pLAotYW5kIGJ1aWxkIHRoZSBwcm9qZWN0cy4KLQotVGhlIHByb3BlciBvcmRlciB0byBidWlsZCBzdWJwcm9qZWN0czoKLQotMSkgcHl0aG9uY29yZSAodGhpcyBidWlsZHMgdGhlIG1haW4gUHl0aG9uIERMTCBhbmQgbGlicmFyeSBmaWxlcywKLSAgICAgICAgICAgICAgIHB5dGhvbjMzLntkbGwsIGxpYn0gaW4gUmVsZWFzZSBtb2RlKQotCi0yKSBweXRob24gKHRoaXMgYnVpbGRzIHRoZSBtYWluIFB5dGhvbiBleGVjdXRhYmxlLAotICAgICAgICAgICBweXRob24uZXhlIGluIFJlbGVhc2UgbW9kZSkKLQotMykgdGhlIG90aGVyIHN1YnByb2plY3RzLCBhcyBkZXNpcmVkIG9yIG5lZWRlZCAobm90ZTogIHlvdSBwcm9iYWJseSBkb24ndAotICAgd2FudCB0byBidWlsZCBtb3N0IG9mIHRoZSBvdGhlciBzdWJwcm9qZWN0cywgdW5sZXNzIHlvdSdyZSBidWlsZGluZyBhbgotICAgZW50aXJlIFB5dGhvbiBkaXN0cmlidXRpb24gZnJvbSBzY3JhdGNoLCBvciBzcGVjaWZpY2FsbHkgbWFraW5nIGNoYW5nZXMKLSAgIHRvIHRoZSBzdWJzeXN0ZW1zIHRoZXkgaW1wbGVtZW50OyBzZWUgU1VCUFJPSkVDVFMgYmVsb3cpCi0KLVdoZW4gdXNpbmcgdGhlIERlYnVnIHNldHRpbmcsIHRoZSBvdXRwdXQgZmlsZXMgaGF2ZSBhIF9kIGFkZGVkIHRvCi10aGVpciBuYW1lOiAgcHl0aG9uMzNfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcHlleHBhdF9kLnB5ZCwgYW5kIHNvIG9uLgotCi1TVUJQUk9KRUNUUwotLS0tLS0tLS0tLS0KLVRoZXNlIHN1YnByb2plY3RzIHNob3VsZCBidWlsZCBvdXQgb2YgdGhlIGJveC4gIFN1YnByb2plY3RzIG90aGVyIHRoYW4gdGhlCi1tYWluIG9uZXMgKHB5dGhvbmNvcmUsIHB5dGhvbiwgcHl0aG9udykgZ2VuZXJhbGx5IGJ1aWxkIGEgRExMIChyZW5hbWVkIHRvCi0ucHlkKSBmcm9tIGEgc3BlY2lmaWMgbW9kdWxlIHNvIHRoYXQgdXNlcnMgZG9uJ3QgaGF2ZSB0byBsb2FkIHRoZSBjb2RlCi1zdXBwb3J0aW5nIHRoYXQgbW9kdWxlIHVubGVzcyB0aGV5IGltcG9ydCB0aGUgbW9kdWxlLgotCi1weXRob25jb3JlCi0gICAgLmRsbCBhbmQgLmxpYgotcHl0aG9uCi0gICAgLmV4ZQotcHl0aG9udwotICAgIHB5dGhvbncuZXhlLCBhIHZhcmlhbnQgb2YgcHl0aG9uLmV4ZSB0aGF0IGRvZXNuJ3QgcG9wIHVwIGEgRE9TIGJveAotX21zaQotICAgIF9tc2kuYy4gWW91IG5lZWQgdG8gaW5zdGFsbCBXaW5kb3dzIEluc3RhbGxlciBTREsgdG8gYnVpbGQgdGhpcyBtb2R1bGUuCi1fc29ja2V0Ci0gICAgc29ja2V0bW9kdWxlLmMKLV90ZXN0Y2FwaQotICAgIHRlc3RzIG9mIHRoZSBQeXRob24gQyBBUEksIHJ1biB2aWEgTGliL3Rlc3QvdGVzdF9jYXBpLnB5LCBhbmQKLSAgICBpbXBsZW1lbnRlZCBieSBtb2R1bGUgTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwotcHlleHBhdAotICAgIFB5dGhvbiB3cmFwcGVyIGZvciBhY2NlbGVyYXRlZCBYTUwgcGFyc2luZywgd2hpY2ggaW5jb3Jwb3JhdGVzIHN0YWJsZQotICAgIGNvZGUgZnJvbSB0aGUgRXhwYXQgcHJvamVjdDogIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZXhwYXQvCi1zZWxlY3QKLSAgICBzZWxlY3Rtb2R1bGUuYwotdW5pY29kZWRhdGEKLSAgICBsYXJnZSB0YWJsZXMgb2YgVW5pY29kZSBkYXRhCi13aW5zb3VuZAotICAgIHBsYXkgc291bmRzICh0eXBpY2FsbHkgLndhdiBmaWxlcykgdW5kZXIgV2luZG93cwotCi1UaGUgZm9sbG93aW5nIHN1YnByb2plY3RzIHdpbGwgZ2VuZXJhbGx5IE5PVCBidWlsZCBvdXQgb2YgdGhlIGJveC4gIFRoZXkKLXdyYXAgY29kZSBQeXRob24gZG9lc24ndCBjb250cm9sLCBhbmQgeW91J2xsIG5lZWQgdG8gZG93bmxvYWQgdGhlIGJhc2UKLXBhY2thZ2VzIGZpcnN0IGFuZCB1bnBhY2sgdGhlbSBpbnRvIHNpYmxpbmdzIG9mIFBDYnVpbGRzJ3MgcGFyZW50Ci1kaXJlY3Rvcnk7IGZvciBleGFtcGxlLCBpZiB5b3VyIFBDYnVpbGQgaXMgIC4uLi4uLi5cZGlzdFxzcmNcUENidWlsZFwsCi11bnBhY2sgaW50byBuZXcgc3ViZGlyZWN0b3JpZXMgb2YgZGlzdFwuCi0KLV90a2ludGVyCi0gICAgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLiAgUmVxdWlyZXMgYnVpbGRpbmcKLSAgICBUY2wvVGsgZmlyc3QuICBGb2xsb3dpbmcgYXJlIGluc3RydWN0aW9ucyBmb3IgVGNsL1RrIDguNS4yLgotCi0gICAgR2V0IHNvdXJjZQotICAgIC0tLS0tLS0tLS0KLSAgICBJbiB0aGUgZGlzdCBkaXJlY3RvcnksIHJ1bgotICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RjbC04LjUuMi4xIHRjbDguNS4yCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGstOC41LjIuMCB0azguNS4yCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGl4LTguNC4zLjEgdGl4OC40LjMKLQotICAgIERlYnVnIEJ1aWxkCi0gICAgLS0tLS0tLS0tLS0KLSAgICBUbyBidWlsZCBkZWJ1ZyB2ZXJzaW9uLCBhZGQgREVCVUc9MSB0byBhbGwgbm1ha2UgY2FsbCBiZWxsb3cuCi0KLSAgICBCdWlsZCBUY2wgZmlyc3QgKGRvbmUgaGVyZSB3LyBNU1ZDIDYgb24gV2luMkspCi0gICAgLS0tLS0tLS0tLS0tLS0tCi0gICAgSWYgeW91ciBlbnZpcm9ubWVudCBkb2Vzbid0IGhhdmUgc3RydWN0IF9zdGF0NjQsIHlvdSBuZWVkIHRvIGFwcGx5Ci0gICAgdGNsODUyLnBhdGNoIGluIHRoaXMgZGlyZWN0b3J5IHRvIGRpc3RcdGNsOC41LjJcZ2VuZXJpY1x0Y2wuaC4KLQotICAgIGNkIGRpc3RcdGNsOC41LjJcd2luCi0gICAgcnVuIHZjdmFyczMyLmJhdAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBpbnN0YWxsCi0KLSAgICBYWFggU2hvdWxkIHdlIGNvbXBpbGUgd2l0aCBPUFRTPXRocmVhZHM/Ci0KLSAgICBPcHRpb25hbDogIHJ1biB0ZXN0cywgdmlhCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIHRlc3QKLQotICAgICAgICBhbGwudGNsOiAgICAgICAgVG90YWwgICAyNDI0MiAgIFBhc3NlZCAgMjMzNTggICBTa2lwcGVkIDg3NyAgICAgRmFpbGVkICA3Ci0gICAgICAgIFNvdXJjZWQgMTM3IFRlc3QgRmlsZXMuCi0gICAgICAgIEZpbGVzIHdpdGggZmFpbGluZyB0ZXN0czogZXhlYy50ZXN0IGh0dHAudGVzdCBpby50ZXN0IG1haW4udGVzdCBzdHJpbmcudGVzdCBzdHJpCi0gICAgICAgIG5nT2JqLnRlc3QKLQotICAgIEJ1aWxkIFRrCi0gICAgLS0tLS0tLS0KLSAgICBjZCBkaXN0XHRrOC41LjJcd2luCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgVENMRElSPS4uXC4uXHRjbDguNS4yCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgVENMRElSPS4uXC4uXHRjbDguNS4yIElOU1RBTExESVI9Li5cLi5cdGNsdGsgaW5zdGFsbAotCi0gICAgWFhYIFNob3VsZCB3ZSBjb21waWxlIHdpdGggT1BUUz10aHJlYWRzPwotCi0gICAgWFhYIEkgaGF2ZSBubyBpZGVhIHdoZXRoZXIgIm5tYWtlIC1mIG1ha2VmaWxlLnZjIHRlc3QiIHBhc3NlZCBvcgotICAgIFhYWCBmYWlsZWQuICBJdCBwb3BwZWQgdXAgdG9ucyBvZiBsaXR0bGUgd2luZG93cywgYW5kIGRpZCBsb3RzIG9mCi0gICAgWFhYIHN0dWZmLCBhbmQgbm90aGluZyBibGV3IHVwLgotCi0gICAgQnVpbGQgVGl4Ci0gICAgLS0tLS0tLS0tCi0gICAgY2QgZGlzdFx0aXg4LjQuM1x3aW4KLSAgICBubWFrZSAtZiBweXRob24ubWFrIFRDTF9NQUpPUj04IFRDTF9NSU5PUj01IFRDTF9QQVRDSD0yIE1BQ0hJTkU9SVg4NiBERUJVRz0wCi0gICAgbm1ha2UgLWYgcHl0aG9uLm1hayBUQ0xfTUFKT1I9OCBUQ0xfTUlOT1I9NSBUQ0xfUEFUQ0g9MiBNQUNISU5FPUlYODYgREVCVUc9MCBJTlNUQUxMX0RJUj0uLlwuLlx0Y2x0ayBpbnN0YWxsCi0KLWJ6MgotICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGliYnoyIGNvbXByZXNzaW9uIGxpYnJhcnkuICBIb21lcGFnZQotICAgICAgICBodHRwOi8vd3d3LmJ6aXAub3JnLwotICAgIERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgcHl0aG9uLm9yZyBjb3B5IGludG8gdGhlIGRpc3QKLSAgICBkaXJlY3Rvcnk6Ci0KLSAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9iemlwMi0xLjAuNgotCi0gICAgQW5kIHJlcXVpcmVzIGJ1aWxkaW5nIGJ6MiBmaXJzdC4KLQotICAgIGNkIGRpc3RcYnppcDItMS4wLjYKLSAgICBubWFrZSAtZiBtYWtlZmlsZS5tc2MKLQotICAgIEFsbCBvZiB0aGlzIG1hbmFnZWQgdG8gYnVpbGQgYnppcDItMS4wLjZcbGliYnoyLmxpYiwgd2hpY2ggdGhlIFB5dGhvbgotICAgIHByb2plY3QgbGlua3MgaW4uCi0KLQotX3NxbGl0ZTMKLSAgICBQeXRob24gd3JhcHBlciBmb3IgU1FMaXRlIGxpYnJhcnkuCi0gICAgCi0gICAgR2V0IHRoZSBzb3VyY2UgY29kZSB0aHJvdWdoCi0gICAgCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvc3FsaXRlLXNvdXJjZS0zLjMuNAotICAgIAotICAgIFRvIHVzZSB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpbiBhIFB5dGhvbiBidWlsZCB0cmVlLCBjb3B5IHNxbGl0ZTMuZGxsIGludG8KLSAgICB0aGUgUEMvVkM2IGZvbGRlci4KLQotCi1fc3NsCi0gICAgUHl0aG9uIHdyYXBwZXIgZm9yIHRoZSBzZWN1cmUgc29ja2V0cyBsaWJyYXJ5LgotCi0gICAgR2V0IHRoZSBsYXRlc3Qgc291cmNlIGNvZGUgZm9yIE9wZW5TU0wgZnJvbQotICAgICAgICBodHRwOi8vd3d3Lm9wZW5zc2wub3JnCi0KLSAgICBZb3UgKHByb2JhYmx5KSBkb24ndCB3YW50IHRoZSAiZW5naW5lIiBjb2RlLiAgRm9yIGV4YW1wbGUsIGRvbid0IGdldAotICAgICAgICBvcGVuc3NsLWVuZ2luZS0wLjkuNmcudGFyLmd6Ci0KLSAgICBVbnBhY2sgaW50byB0aGUgImRpc3QiIGRpcmVjdG9yeSwgcmV0YWluaW5nIHRoZSBmb2xkZXIgbmFtZSBmcm9tCi0gICAgdGhlIGFyY2hpdmUgLSBmb3IgZXhhbXBsZSwgdGhlIGxhdGVzdCBzdGFibGUgT3BlblNTTCB3aWxsIGluc3RhbGwgYXMKLSAgICAgICAgZGlzdC9vcGVuc3NsLTEuMC4xZQotCi0gICAgWW91IG5lZWQgdG8gdXNlIHZlcnNpb24gMS4wLjFlIG9mIE9wZW5TU0wuCi0KLSAgICBZb3UgY2FuIGluc3RhbGwgdGhlIE5BU00gYXNzZW1ibGVyIGZyb20KLSAgICAgICAgaHR0cDovL3d3dy5uYXNtLnVzLwotICAgIGZvciB4ODYgYnVpbGRzLiAgUHV0IG5hc213LmV4ZSBhbnl3aGVyZSBpbiB5b3VyIFBBVEguCi0gICAgTm90ZTogcmVjZW50IHJlbGVhc2VzIG9mIG5hc20gb25seSBoYXZlIG5hc20uZXhlLiBKdXN0IHJlbmFtZSBpdCB0byAKLSAgICBuYXNtdy5leGUuCi0KLSAgICBZb3UgY2FuIGFsc28gaW5zdGFsbCBBY3RpdmVQZXJsIGZyb20KLSAgICAgICAgaHR0cDovL3d3dy5hY3RpdmVzdGF0ZS5jb20vYWN0aXZlcGVybC8KLSAgICBpZiB5b3UgbGlrZSB0byB1c2UgdGhlIG9mZmljaWFsIHNvdXJjZXMgaW5zdGVhZCBvZiB0aGUgZmlsZXMgZnJvbSAKLSAgICBweXRob24ncyBzdWJ2ZXJzaW9uIHJlcG9zaXRvcnkuIFRoZSBzdm4gdmVyc2lvbiBjb250YWlucyBwcmUtYnVpbGQKLSAgICBtYWtlZmlsZXMgYW5kIGFzc2VtYmx5IGZpbGVzLgotCi0gICAgVGhlIE1TVkMgcHJvamVjdCBzaW1wbHkgaW52b2tlcyBQQy9WQzYvYnVpbGRfc3NsLnB5IHRvIHBlcmZvcm0KLSAgICB0aGUgYnVpbGQuICBUaGlzIFB5dGhvbiBzY3JpcHQgbG9jYXRlcyBhbmQgYnVpbGRzIHlvdXIgT3BlblNTTAotICAgIGluc3RhbGxhdGlvbiwgdGhlbiBpbnZva2VzIGEgc2ltcGxlIG1ha2VmaWxlIHRvIGJ1aWxkIHRoZSBmaW5hbCAucHlkLgotCi0gICAgYnVpbGRfc3NsLnB5IGF0dGVtcHRzIHRvIGNhdGNoIHRoZSBtb3N0IGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgbm90Ci0gICAgYmVpbmcgYWJsZSB0byBmaW5kIE9wZW5TU0wgc291cmNlcywgb3Igbm90IGJlaW5nIGFibGUgdG8gZmluZCBhIFBlcmwKLSAgICB0aGF0IHdvcmtzIHdpdGggT3BlblNTTCkgYW5kIGdpdmUgYSByZWFzb25hYmxlIGVycm9yIG1lc3NhZ2UuCi0gICAgSWYgeW91IGhhdmUgYSBwcm9ibGVtIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIGhhbmRsZWQgY29ycmVjdGx5Ci0gICAgKGVnLCB5b3Uga25vdyB5b3UgaGF2ZSBBY3RpdmVQZXJsIGJ1dCB3ZSBjYW4ndCBmaW5kIGl0KSwgcGxlYXNlIHRha2UKLSAgICBhIHBlZWsgYXQgYnVpbGRfc3NsLnB5IGFuZCBzdWdnZXN0IHBhdGNoZXMuICBOb3RlIHRoYXQgYnVpbGRfc3NsLnB5Ci0gICAgc2hvdWxkIGJlIGFibGUgdG8gYmUgcnVuIGRpcmVjdGx5IGZyb20gdGhlIGNvbW1hbmQtbGluZS4KLQotICAgIGJ1aWxkX3NzbC5weS9NU1ZDIGlzbid0IGNsZXZlciBlbm91Z2ggdG8gY2xlYW4gT3BlblNTTCAtIHlvdSBtdXN0IGRvCi0gICAgdGhpcyBieSBoYW5kLgotCi0KLVlPVVIgT1dOIEVYVEVOU0lPTiBETExzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotSWYgeW91IHdhbnQgdG8gY3JlYXRlIHlvdXIgb3duIGV4dGVuc2lvbiBtb2R1bGUgRExMLCB0aGVyZSdzIGFuIGV4YW1wbGUKLXdpdGggZWFzeS10by1mb2xsb3cgaW5zdHJ1Y3Rpb25zIGluIC4uL1BDL2V4YW1wbGUvOyByZWFkIHRoZSBmaWxlCi1yZWFkbWUudHh0IHRoZXJlIGZpcnN0LgpkaWZmIC0tZ2l0IGEvUEMvVkM2L3JtcHljLnB5IGIvUEMvVkM2L3JtcHljLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGQ2ODIzLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9ybXB5Yy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgUmVtb3ZlIGFsbCB0aGUgLnB5YyBhbmQgLnB5byBmaWxlcyB1bmRlciAuLi9MaWIuCi0KLQotZGVmIGRlbHRyZWUocm9vdCk6Ci0gICAgaW1wb3J0IG9zCi0gICAgZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luCi0KLSAgICBucHljID0gbnB5byA9IDAKLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhyb290KToKLSAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICBkZWxldGUgPSBGYWxzZQotICAgICAgICAgICAgaWYgbmFtZS5lbmRzd2l0aCgnLnB5YycpOgotICAgICAgICAgICAgICAgIGRlbGV0ZSA9IFRydWUKLSAgICAgICAgICAgICAgICBucHljICs9IDEKLSAgICAgICAgICAgIGVsaWYgbmFtZS5lbmRzd2l0aCgnLnB5bycpOgotICAgICAgICAgICAgICAgIGRlbGV0ZSA9IFRydWUKLSAgICAgICAgICAgICAgICBucHlvICs9IDEKLQotICAgICAgICAgICAgaWYgZGVsZXRlOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShqb2luKHJvb3QsIG5hbWUpKQotCi0gICAgcmV0dXJuIG5weWMsIG5weW8KLQotbnB5YywgbnB5byA9IGRlbHRyZWUoIi4uLy4uL0xpYiIpCi1wcmludCBucHljLCAiLnB5YyBkZWxldGVkLCIsIG5weW8sICIucHlvIGRlbGV0ZWQiCmRpZmYgLS1naXQgYS9QQy9WQzYvcnQuYmF0IGIvUEMvVkM2L3J0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTllYWRkNy4uMDAwMDAwMAotLS0gYS9QQy9WQzYvcnQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotQHJlbSBSdW4gVGVzdHMuICBSdW4gdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZS4KLUByZW0gVXNhZ2U6ICBydCBbLWRdIFstT10gWy1xXSByZWdydGVzdF9hcmdzCi1AcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLgotQHJlbSAtTyAgIFJ1biBweXRob24uZXhlIG9yIHB5dGhvbl9kLmV4ZSAoc2VlIC1kKSB3aXRoIC1PLgotQHJlbSAtcSAgICJxdWljayIgLS0gbm9ybWFsbHkgdGhlIHRlc3RzIGFyZSBydW4gdHdpY2UsIHRoZSBmaXJzdCB0aW1lCi1AcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uCi1AcmVtICAgICAgLXEgcnVucyB0aGUgdGVzdHMganVzdCBvbmNlLCBhbmQgd2l0aG91dCBkZWxldGluZyAucHlbY29dIGZpbGVzLgotQHJlbSBBbGwgbGVhZGluZyBpbnN0YW5jZXMgb2YgdGhlc2Ugc3dpdGNoZXMgYXJlIHNoaWZ0ZWQgb2ZmLCBhbmQKLUByZW0gd2hhdGV2ZXIgcmVtYWlucyBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuICBGb3IgZXhhbXBsZSwKLUByZW0gICAgIHJ0IC1PIC1kIC14IHRlc3RfdGhyZWFkCi1AcmVtIHJ1bnMKLUByZW0gICAgIHB5dGhvbl9kIC1PIC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkCi1AcmVtIHR3aWNlLCBhbmQKLUByZW0gICAgIHJ0IC1xIC1nIHRlc3RfYmluYXNjaWkKLUByZW0gcnVucwotQHJlbSAgICAgcHl0aG9uX2QgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLWcgdGVzdF9iaW5hc2NpaQotQHJlbSB0byBnZW5lcmF0ZSB0aGUgZXhwZWN0ZWQtb3V0cHV0IGZpbGUgZm9yIGJpbmFzY2lpIHF1aWNrbHkuCi1Ac2V0IF9leGU9cHl0aG9uCi1Ac2V0IF9xbW9kZT1ubwotQHNldCBfZGFzaE89Ci1AZ290byBDaGVja09wdHMKLTpBZ2FpbgotQHNoaWZ0Ci06Q2hlY2tPcHRzCi1AaWYgIiUxIj09Ii1PIiBzZXQgX2Rhc2hPPS1PCi1AaWYgIiUxIj09Ii1PIiBnb3RvIEFnYWluCi1AaWYgIiUxIj09Ii1xIiBzZXQgX3Ftb2RlPXllcwotQGlmICIlMSI9PSItcSIgZ290byBBZ2FpbgotQGlmICIlMSI9PSItZCIgc2V0IF9leGU9cHl0aG9uX2QKLUBpZiAiJTEiPT0iLWQiIGdvdG8gQWdhaW4KLUBpZiAiJV9xbW9kZSUiPT0ieWVzIiBnb3RvIFFtb2RlCi1AZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uCi1AJV9leGUlIHJtcHljLnB5Ci0lX2V4ZSUgJV9kYXNoTyUgLUUgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKLUBlY2hvIEFib3V0IHRvIHJ1biBhZ2FpbiB3aXRob3V0IGRlbGV0aW5nIC5weWMvLnB5byBmaXJzdDoKLUBwYXVzZQotOlFtb2RlCi0lX2V4ZSUgJV9kYXNoTyUgLUUgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKLUBzZXQgX2V4ZT0KLUBzZXQgX3Ftb2RlPQotQHNldCBfZGFzaE89CmRpZmYgLS1naXQgYS9QQy9WQzYvc2VsZWN0LmRzcCBiL1BDL1ZDNi9zZWxlY3QuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGU1MjhjLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi9zZWxlY3QuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJzZWxlY3QiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9c2VsZWN0IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInNlbGVjdC5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAic2VsZWN0Lm1hayIgQ0ZHPSJzZWxlY3QgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAic2VsZWN0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgInNlbGVjdCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgInNlbGVjdCINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi4iDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJzZWxlY3QgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVxzZWxlY3QiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJOREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIHVzZXIzMi5saWIga2VybmVsMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHdzb2NrMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MUQxMTAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9vdXQ6Ii4vc2VsZWN0LnB5ZCINCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAic2VsZWN0IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLWRlYnVnXHNlbGVjdCINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiX0RFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvbyAiTlVMIiAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiB1c2VyMzIubGliIGtlcm5lbDMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiB3c29jazMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFEMTEwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvbm9kZWZhdWx0bGliOiJtc3ZjcnQiIC9vdXQ6Ii4vc2VsZWN0X2QucHlkIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJzZWxlY3QgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAic2VsZWN0IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L3RjbDg1Mi5wYXRjaCBiL1BDL1ZDNi90Y2w4NTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNjc4MGEuLjAwMDAwMDAKLS0tIGEvUEMvVkM2L3RjbDg1Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSB0Y2w4LjUuMlxnZW5lcmljXHRjbC5oCUZyaSBKdW4gMTMgMDM6MzU6MzkgMjAwOAotKysrIHRjbDguNS4yXGdlbmVyaWNcdGNsLmgJU3VuIEphbiAgNCAxNjo1MjozMCAyMDA5Ci1AQCAtMzY3LDcgKzM2Nyw3IEBACi0gdHlwZWRlZiBzdHJ1Y3Qgc3RhdGk2NCBUY2xfU3RhdEJ1ZjsKLSAjICAgICAgICAgZGVmaW5lIFRDTF9MTF9NT0RJRklFUgkiTCIKLSAjICAgICAgZWxzZSAvKiBfX0JPUkxBTkRDX18gKi8KLS0jICAgICAgICAgaWYgX01TQ19WRVIgPCAxNDAwICYmICFkZWZpbmVkKF9NX0lYODYpCi0rIyAgICAgICAgIGlmIF9NU0NfVkVSIDwgMTQwMCAvKiYmICFkZWZpbmVkKF9NX0lYODYpKi8KLSB0eXBlZGVmIHN0cnVjdCBfc3RhdGk2NAlUY2xfU3RhdEJ1ZjsKLSAjICAgICAgICAgZWxzZQotIHR5cGVkZWYgc3RydWN0IF9zdGF0NjQJVGNsX1N0YXRCdWY7CmRpZmYgLS1naXQgYS9QQy9WQzYvdW5pY29kZWRhdGEuZHNwIGIvUEMvVkM2L3VuaWNvZGVkYXRhLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA0ZGI2Ny4uMDAwMDAwMAotLS0gYS9QQy9WQzYvdW5pY29kZWRhdGEuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ1bmljb2RlZGF0YSIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz11bmljb2RlZGF0YSAtIFdpbjMyIERlYnVnDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ1bmljb2RlZGF0YS5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAidW5pY29kZWRhdGEubWFrIiBDRkc9InVuaWNvZGVkYXRhIC0gV2luMzIgRGVidWciDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgInVuaWNvZGVkYXRhIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgInVuaWNvZGVkYXRhIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAidW5pY29kZWRhdGEiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIi4uIg0KLUNQUD1jbC5leGUNCi1NVEw9bWlkbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAidW5pY29kZWRhdGEgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtcmVsZWFzZVx1bmljb2RlZGF0YSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJNTUFQX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIk1NQVBfRVhQT1JUUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MUQxMjAwMDAiIC9kbGwgL21hY2hpbmU6STM4NiAvb3V0OiIuL3VuaWNvZGVkYXRhLnB5ZCINCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAidW5pY29kZWRhdGEgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcdW5pY29kZWRhdGEiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLUY5MD1kZi5leGUNCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTU1BUF9FWFBPUlRTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTU1BUF9FWFBPUlRTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweGMwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MUQxMjAwMDAiIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi91bmljb2RlZGF0YV9kLnB5ZCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAidW5pY29kZWRhdGEgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAidW5pY29kZWRhdGEgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi93OXhwb3Blbi5kc3AgYi9QQy9WQzYvdzl4cG9wZW4uZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTY0MDNjLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi93OXhwb3Blbi5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9Inc5eHBvcGVuIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIgMHgwMTAxDQotDQotQ0ZHPXc5eHBvcGVuIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInc5eHBvcGVuLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ3OXhwb3Blbi5tYWsiIENGRz0idzl4cG9wZW4gLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAidzl4cG9wZW4gLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIEFwcGxpY2F0aW9uIikNCi0hTUVTU0FHRSAidzl4cG9wZW4gLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gInc5eHBvcGVuIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIng4Ni10ZW1wLXJlbGVhc2Vcdzl4cG9wZW4iDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweGMwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgdXNlcjMyLmxpYiAvbm9sb2dvIC9tYWNoaW5lOkkzODYNCi0jIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAidzl4cG9wZW4gLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiLiINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAieDg2LXRlbXAtZGVidWdcdzl4cG9wZW4iDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIHVzZXIzMi5saWIgL25vbG9nbyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL3c5eHBvcGVuX2QuZXhlIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJ3OXhwb3BlbiAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJ3OXhwb3BlbiAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cdzl4cG9wZW4uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi93aW5zb3VuZC5kc3AgYi9QQy9WQzYvd2luc291bmQuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTA5YjliLi4wMDAwMDAwCi0tLSBhL1BDL1ZDNi93aW5zb3VuZC5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9IndpbnNvdW5kIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPXdpbnNvdW5kIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIndpbnNvdW5kLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ3aW5zb3VuZC5tYWsiIENGRz0id2luc291bmQgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAid2luc291bmQgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAid2luc291bmQgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICJ3aW5zb3VuZCINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiLi5ccGMiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJ3aW5zb3VuZCAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1yZWxlYXNlXHdpbnNvdW5kIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi1GOTA9ZGYuZXhlDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIldJTlNPVU5EX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uXC4uXEluY2x1ZGUiIC9JICIuLiIgL0QgIlB5X0JVSUxEX0NPUkVfTU9EVUxFIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIldJTlNPVU5EX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHhjMDkgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgd2lubW0ubGliIHVzZXIzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxRDE2MDAwMCIgL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4vd2luc291bmQucHlkIg0KLSMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ3aW5zb3VuZCAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICIuIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ4ODYtdGVtcC1kZWJ1Z1x3aW5zb3VuZCINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotRjkwPWRmLmV4ZQ0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJQeV9CVUlMRF9DT1JFX01PRFVMRSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJXSU5TT1VORF9FWFBPUlRTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uIiAvRCAiUHlfQlVJTERfQ09SRV9NT0RVTEUiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiV0lOU09VTkRfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHhjMDkgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiB1c2VyMzIubGliIGtlcm5lbDMyLmxpYiB3aW5tbS5saWIgL25vbG9nbyAvYmFzZToiMHgxRDE2MDAwMCIgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuL3dpbnNvdW5kX2QucHlkIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJ3aW5zb3VuZCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJ3aW5zb3VuZCAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cd2luc291bmQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL1VuaW5zdGFsLndzZSBiL1BDL1ZTNy4xL1VuaW5zdGFsLndzZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2ZGQzMC4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9Vbmluc3RhbC53c2UKKysrIC9kZXYvbnVsbApAQCAtMSw1MTQgKzAsMCBAQAotRG9jdW1lbnQgVHlwZTogV1NFCi1pdGVtOiBHbG9iYWwKLSAgVmVyc2lvbj04LjE0Ci0gIEZsYWdzPTAwMDAwMTAwCi0gIFNwbGl0PTE0MjAKLSAgTGFuZ3VhZ2VzPTY1IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCi0gIENvcHkgRGVmYXVsdD0xCi0gIEphcGFuZXNlIEZvbnQgTmFtZT1NUyBHb3RoaWMKLSAgSmFwYW5lc2UgRm9udCBTaXplPTEwCi0gIFN0YXJ0IEdyYWRpZW50PTAgMCAyNTUKLSAgRW5kIEdyYWRpZW50PTAgMCAwCi0gIFdpbmRvd3MgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMDAwMDAxMDEwMDAwMDEwMDAKLSAgTWVzc2FnZSBGb250PU1TIFNhbnMgU2VyaWYKLSAgRm9udCBTaXplPTgKLSAgRGlzayBMYWJlbD1HTEJTCi0gIERpc2sgRmlsZW5hbWU9SU5TVEFMTAotICBQYXRjaCBGbGFncz0wMDAwMDAwMDAwMDAwMDAxCi0gIFBhdGNoIFRocmVzaG9sZD0yMDAKLSAgUGF0Y2ggTWVtb3J5PTQwOTYKLSAgUGVyLVVzZXIgVmVyc2lvbiBJRD0xCi0gIENyeXN0YWwgRm9ybWF0PTEwMTExMTAwMTAxMTAwMDAwMDEwMDAxMDAxMDAxMDAxCi0gIFN0ZXAgVmlldz0mUHJvcGVydGllcwotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1Ob3RlIGZyb20gVGltOiAgVGhpcyBpcyBhIHZlcmJhdGltIGNvcHkgb2YgV2lzZSdzIFVuaW5zdGFsLndzZSwgYWx0ZXJlZCBhdCB0aGUgZW5kIHRvIHdyaXRlCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PXVuaW5zdGFsbCBpbmZvIHVuZGVyIEhLQ1UgaW5zdGVhZCBvZiBIS0xNIGlmIG91ciBET0FETUlOIHZhciBpcyBmYWxzZS4KLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PSAgICAgSW5zdGFsbCBTdXBwb3J0IGZvciB1bmluc3RhbGxpbmcgdGhlIGFwcGxpY2F0aW9uLgotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVVOSU5TVEFMTF9QQVRICi0gIFZhbHVlPSVfTE9HRklMRV9QQVRIXyUKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVVOSU5TVEFMTF9QQVRICi0gIFZhbHVlPSVVTklOU1RBTExfUEFUSCVcVU5XSVNFLkVYRQotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYXJpYWJsZT1fRVhFX09TX1RZUEVfCi0gIFZhbHVlPVdJTjMyCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcVU5XSVNFMzIuRVhFCi0gIERlc3RpbmF0aW9uPSVVTklOU1RBTExfUEFUSCUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbHNlCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcVU5XSVNFLkVYRQotICBEZXN0aW5hdGlvbj0lVU5JTlNUQUxMX1BBVEglCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD0gICAgIEluc3RhbGwgU3VwcG9ydCBmb3IgbXVsdGlwbGUgbGFuZ3VhZ2VzCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9VU5JTlNUQUxMX0xBTkcKLSAgVmFsdWU9JVVOSU5TVEFMTF9QQVRIJQotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9VU5JTlNUQUxMX0xBTkcKLSAgVmFsdWU9JVVOSU5TVEFMTF9MQU5HJVxVTldJU0UuSU5JCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhcmlhYmxlPV9MQU5HX0xJU1RfCi0gIFZhbHVlPUMKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFsdWU9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLkZSQQotICBGbGFncz0wMDAwMDAxMQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9TEFORwotICBWYWx1ZT0lX0xBTkdfQ19OQU1FXyUKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuRlJBCi0gIERlc3RpbmF0aW9uPSVVTklOU1RBTExfTEFORyUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYXJpYWJsZT1fTEFOR19MSVNUXwotICBWYWx1ZT1ECi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhbHVlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5GUkEKLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUxBTkcKLSAgVmFsdWU9JV9MQU5HX0RfTkFNRV8lCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLkZSQQotICBEZXN0aW5hdGlvbj0lVU5JTlNUQUxMX0xBTkclCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFyaWFibGU9X0xBTkdfTElTVF8KLSAgVmFsdWU9RQotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYWx1ZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuREVVCi0gIEZsYWdzPTAwMDAwMDExCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1MQU5HCi0gIFZhbHVlPSVfTEFOR19FX05BTUVfJQotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5ERVUKLSAgRGVzdGluYXRpb249JVVOSU5TVEFMTF9MQU5HJQotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhcmlhYmxlPV9MQU5HX0xJU1RfCi0gIFZhbHVlPUYKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFsdWU9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLlBURwotICBGbGFncz0wMDAwMDAxMQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9TEFORwotICBWYWx1ZT0lX0xBTkdfRl9OQU1FXyUKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuUFRHCi0gIERlc3RpbmF0aW9uPSVVTklOU1RBTExfTEFORyUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYXJpYWJsZT1fTEFOR19MSVNUXwotICBWYWx1ZT1HCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhbHVlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5FU1AKLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUxBTkcKLSAgVmFsdWU9JV9MQU5HX0dfTkFNRV8lCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLkVTUAotICBEZXN0aW5hdGlvbj0lVU5JTlNUQUxMX0xBTkclCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFyaWFibGU9X0xBTkdfTElTVF8KLSAgVmFsdWU9SAotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYWx1ZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuRVNQCi0gIEZsYWdzPTAwMDAwMDExCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1MQU5HCi0gIFZhbHVlPSVfTEFOR19IX05BTUVfJQotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5FU1AKLSAgRGVzdGluYXRpb249JVVOSU5TVEFMTF9MQU5HJQotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhcmlhYmxlPV9MQU5HX0xJU1RfCi0gIFZhbHVlPUkKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFsdWU9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLklUQQotICBGbGFncz0wMDAwMDAxMQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9TEFORwotICBWYWx1ZT0lX0xBTkdfSV9OQU1FXyUKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuSVRBCi0gIERlc3RpbmF0aW9uPSVVTklOU1RBTExfTEFORyUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYXJpYWJsZT1fTEFOR19MSVNUXwotICBWYWx1ZT1KCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhbHVlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5EQU4KLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUxBTkcKLSAgVmFsdWU9JV9MQU5HX0pfTkFNRV8lCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLkRBTgotICBEZXN0aW5hdGlvbj0lVU5JTlNUQUxMX0xBTkclCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFyaWFibGU9X0xBTkdfTElTVF8KLSAgVmFsdWU9SwotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYWx1ZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuRklOCi0gIEZsYWdzPTAwMDAwMDExCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1MQU5HCi0gIFZhbHVlPSVfTEFOR19LX05BTUVfJQotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5GSU4KLSAgRGVzdGluYXRpb249JVVOSU5TVEFMTF9MQU5HJQotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhcmlhYmxlPV9MQU5HX0xJU1RfCi0gIFZhbHVlPUwKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFsdWU9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLklTTAotICBGbGFncz0wMDAwMDAxMQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9TEFORwotICBWYWx1ZT0lX0xBTkdfTF9OQU1FXyUKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuSVNMCi0gIERlc3RpbmF0aW9uPSVVTklOU1RBTExfTEFORyUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYXJpYWJsZT1fTEFOR19MSVNUXwotICBWYWx1ZT1NCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhbHVlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5OTEQKLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUxBTkcKLSAgVmFsdWU9JV9MQU5HX01fTkFNRV8lCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLk5MRAotICBEZXN0aW5hdGlvbj0lVU5JTlNUQUxMX0xBTkclCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFyaWFibGU9X0xBTkdfTElTVF8KLSAgVmFsdWU9TgotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYWx1ZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuTk9SCi0gIEZsYWdzPTAwMDAwMDExCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1MQU5HCi0gIFZhbHVlPSVfTEFOR19OX05BTUVfJQotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5OT1IKLSAgRGVzdGluYXRpb249JVVOSU5TVEFMTF9MQU5HJQotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhcmlhYmxlPV9MQU5HX0xJU1RfCi0gIFZhbHVlPU8KLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgSWYKLSAgVmFsdWU9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLlNWRQotICBGbGFncz0wMDAwMDAxMQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9TEFORwotICBWYWx1ZT0lX0xBTkdfT19OQU1FXyUKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0lX1dJU0VfJVxMQU5HVUFHRVxVTldJU0UuU1ZFCi0gIERlc3RpbmF0aW9uPSVVTklOU1RBTExfTEFORyUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogQ29tcGlsZXIgVmFyaWFibGUgRW5kCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBJZgotICBWYXJpYWJsZT1fTEFOR19MSVNUXwotICBWYWx1ZT1QCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIElmCi0gIFZhbHVlPSVfV0lTRV8lXExBTkdVQUdFXFVOV0lTRS5KUE4KLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUxBTkcKLSAgVmFsdWU9JV9MQU5HX1BfTkFNRV8lCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9XSVNFXyVcTEFOR1VBR0VcVU5XSVNFLkpQTgotICBEZXN0aW5hdGlvbj0lVU5JTlNUQUxMX0xBTkclCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IENvbXBpbGVyIFZhcmlhYmxlIEVuZAotZW5kCi1pdGVtOiBDb21waWxlciBWYXJpYWJsZSBFbmQKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PSAgICAgSW5zdGFsbCB0aGUgYWRkL3JlbW92ZSBvciB1bmluc3RhbGwgaWNvbgotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVVOSU5TVEFMTF9QQVRICi0gIFZhbHVlPSVVTklOU1RBTExfUEFUSCUKLSAgRmxhZ3M9MDAwMTAxMDAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPUlOU1RfTE9HX1BBVEgKLSAgVmFsdWU9JV9MT0dGSUxFX1BBVEhfJQotICBGbGFncz0wMDAxMDEwMAotZW5kCi1pdGVtOiBDaGVjayBDb25maWd1cmF0aW9uCi0gIEZsYWdzPTEwMTExMDExCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1ET0FETUlOCi0gIFZhbHVlPTEKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9V3JpdGUgdW5pbnN0YWxsIGluZm8gdW5kZXIgSEtMTS4gIFRoaXMgaWYvZWxzZS9lbmQgYmxvY2sgYWRkZWQgYnkgVGltLgotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cVW5pbnN0YWxsXCVBUFBUSVRMRSUKLSAgTmV3IFZhbHVlPSVBUFBUSVRMRSUKLSAgVmFsdWUgTmFtZT1EaXNwbGF5TmFtZQotICBSb290PTIKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gIE5ldyBWYWx1ZT0lVU5JTlNUQUxMX1BBVEglICVJTlNUX0xPR19QQVRIJQotICBOZXcgVmFsdWU9Ci0gIFZhbHVlIE5hbWU9VW5pbnN0YWxsU3RyaW5nCi0gIFJvb3Q9MgotZW5kCi1pdGVtOiBFbHNlIFN0YXRlbWVudAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1UaGUgc2FtZSwgYnV0IHdyaXRlIHVuZGVyIEhLQ1UgaW5zdGVhZC4KLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gIE5ldyBWYWx1ZT0lQVBQVElUTEUlCi0gIFZhbHVlIE5hbWU9RGlzcGxheU5hbWUKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJUFQUFRJVExFJQotICBOZXcgVmFsdWU9JVVOSU5TVEFMTF9QQVRIJSAlSU5TVF9MT0dfUEFUSCUKLSAgTmV3IFZhbHVlPQotICBWYWx1ZSBOYW1lPVVuaW5zdGFsbFN0cmluZwotICBSb290PTEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IEFkZCBQcm9nTWFuIEljb24KLSAgR3JvdXA9JUdST1VQJQotICBJY29uIE5hbWU9VW5pbnN0YWxsICVBUFBUSVRMRSUKLSAgQ29tbWFuZCBMaW5lPSVVTklOU1RBTExfUEFUSCUgJUlOU1RfTE9HX1BBVEglCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBDaGVjayBDb25maWd1cmF0aW9uCi0gIEZsYWdzPTExMTEwMDEwCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1ET0JSQU5ECi0gIFZhbHVlPTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTIKLSAgaXRlbTogS2V5Ci0gICAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gICAgTmV3IFZhbHVlPSVDT01QQU5ZJQotICAgIFZhbHVlIE5hbWU9UmVnQ29tcGFueQotICAgIFJvb3Q9MgotICBlbmQKLSAgaXRlbTogS2V5Ci0gICAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gICAgTmV3IFZhbHVlPSVOQU1FJQotICAgIFZhbHVlIE5hbWU9UmVnT3duZXIKLSAgICBSb290PTIKLSAgZW5kCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZApkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX2N0eXBlcy52Y3Byb2ogYi9QQy9WUzcuMS9fY3R5cGVzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM1OWQ4OC4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9fY3R5cGVzLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDMxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX2N0eXBlcyINCi0JUHJvamVjdEdVSUQ9IntGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9Ig0KLQlSb290TmFtZXNwYWNlPSJfY3R5cGVzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9jdHlwZXMiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlNaW5pbWFsUmVidWlsZD0iRkFMU0UiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlc19kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXNfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfY3R5cGVzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjAiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlcy5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IkZBTFNFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlcy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIwIg0KLQkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXMubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfY3R5cGVzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsgL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlcy5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IkZBTFNFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlcy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIwIg0KLQkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXMubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iaWE2NC10ZW1wLXJlbGVhc2VcX2N0eXBlcyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0iDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIC9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXMucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJGQUxTRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCINCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyI+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSI+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0iVFJVRSI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJQ29tbWFuZExpbmU9ImFtZDY0X21sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsNCi0iDQotCQkJCQlPdXRwdXRzPSImcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7Ii8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTNy4xL19jdHlwZXNfdGVzdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZThhMmMuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvX2N0eXBlc190ZXN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI0MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX2N0eXBlc190ZXN0Ig0KLQlQcm9qZWN0R1VJRD0iezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0iDQotCUtleXdvcmQ9IldpbjMyUHJvaiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcX2N0eXBlc190ZXN0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlNaW5pbWFsUmVidWlsZD0iRkFMU0UiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlc190ZXN0X2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlc190ZXN0X2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzX3Rlc3RfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9jdHlwZXNfdGVzdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMCINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlc190ZXN0LnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzX3Rlc3QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCINCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXNfdGVzdC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJpYTY0LXRlbXAtcmVsZWFzZVxfY3R5cGVzX3Rlc3QiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1MiDQotCQkJCU1pbmltYWxSZWJ1aWxkPSJGQUxTRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlc190ZXN0X2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlc190ZXN0X2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzX3Rlc3RfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9jdHlwZXNfdGVzdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04iDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXNfdGVzdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IkZBTFNFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlc190ZXN0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjAiDQotCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzX3Rlc3QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL19lbGVtZW50dHJlZS52Y3Byb2ogYi9QQy9WUzcuMS9fZWxlbWVudHRyZWUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTJiOWQ5Li4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL19lbGVtZW50dHJlZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNjQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Il9lbGVtZW50dHJlZSINCi0JUHJvamVjdEdVSUQ9InsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9Ig0KLQlTY2NQcm9qZWN0TmFtZT0iX2VsZW1lbnR0cmVlIg0KLQlTY2NMb2NhbFBhdGg9Ii4uIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfZWxlbWVudHRyZWUiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztIQVZFX0VYUEFUX0g7V0lOMzI7X1dJTkRPV1M7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiY2NwMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19lbGVtZW50dHJlZV9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19lbGVtZW50dHJlZV9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19lbGVtZW50dHJlZV9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX2VsZW1lbnR0cmVlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19lbGVtZW50dHJlZS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fZWxlbWVudHRyZWUubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9lbGVtZW50dHJlZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmNjcDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fZWxlbWVudHRyZWUucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2VsZW1lbnR0cmVlLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19lbGVtZW50dHJlZS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9lbGVtZW50dHJlZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19lbGVtZW50dHJlZS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fZWxlbWVudHRyZWUubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9fbXNpLnZjcHJvaiBiL1BDL1ZTNy4xL19tc2kudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGZkNDQ3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL19tc2kudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjUyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJfbXNpIg0KLQlQcm9qZWN0R1VJRD0iezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0iDQotCVNjY1Byb2plY3ROYW1lPSJfbXNpIg0KLQlTY2NMb2NhbFBhdGg9Ii4uXC4uXHBjIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfbXNpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fbXNpX2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX21zaV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfbXNpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fbXNpLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fbXNpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxfbXNpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIgYnVmZmVyb3ZlcmZsb3dVLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fbXNpLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fbXNpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX21zaSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiBidWZmZXJvdmVyZmxvd1UubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19tc2kucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19tc2kucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19tc2kubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL19zb2NrZXQudmNwcm9qIGIvUEMvVlM3LjEvX3NvY2tldC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZWQ4ZTQuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvX3NvY2tldC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Il9zb2NrZXQiDQotCVNjY1Byb2plY3ROYW1lPSJfc29ja2V0Ig0KLQlTY2NMb2NhbFBhdGg9Ii4uIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfc29ja2V0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fc29ja2V0X2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldF9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zb2NrZXRfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9zb2NrZXQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3NvY2tldC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc29ja2V0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zb2NrZXQubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9zb2NrZXQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zb2NrZXQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc29ja2V0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX3NvY2tldCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zb2NrZXQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc29ja2V0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM3LjEvX3NxbGl0ZTMudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjdkOTkxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL19zcWxpdGUzLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI4MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX3NxbGl0ZTMiDQotCVByb2plY3RHVUlEPSJ7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fSINCi0JU2NjUHJvamVjdE5hbWU9Il9zcWxpdGUzIg0KLQlTY2NMb2NhbFBhdGg9Ii4uIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfc3FsaXRlMyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsuLlwuLlxQQzsuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1dJTjMyO19XSU5ET1dTO01PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjRcc3FsaXRlMy5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3NxbGl0ZTNfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19zcWxpdGUzX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3NxbGl0ZTNfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9zcWxpdGUzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsuLlwuLlxQQzsuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO01PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40XHNxbGl0ZTMubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zcWxpdGUzLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NxbGl0ZTMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3NxbGl0ZTMubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9zcWxpdGUzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOy4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7TU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNFxpYTY0XHNxbGl0ZTMubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zcWxpdGUzLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NxbGl0ZTMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3NxbGl0ZTMubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfc3FsaXRlMyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsuLlwuLlxQQzsuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO01PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40XGFtZDY0XHNxbGl0ZTMubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zcWxpdGUzLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NxbGl0ZTMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3NxbGl0ZTMubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX3NzbC5tYWsgYi9QQy9WUzcuMS9fc3NsLm1hawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ3NmE2My4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9fc3NsLm1haworKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUVYVFJBX0xJQlM9Ci0KLSFJRkRFRiBERUJVRwotU1VGRklYPV9kLnB5ZAotVEVNUD14ODYtdGVtcC1kZWJ1Zy8KLUNGTEFHUz0vT2QgL1ppIC9NRGQgL0xEZCAvRERFQlVHIC9EX0RFQlVHIC9EV0lOMzIKLVNTTF9MSUJfRElSPSQoU1NMX0RJUikvb3V0MzIuZGJnCi0hRUxTRQotU1VGRklYPS5weWQKLVRFTVA9eDg2LXRlbXAtcmVsZWFzZS8KLUNGTEFHUz0vT3ggL01EIC9MRCAvRFdJTjMyCi1TU0xfTElCX0RJUj0kKFNTTF9ESVIpL291dDMyCi0hRU5ESUYKLQotSU5DTFVERVM9LUkgLi4vLi4vSW5jbHVkZSAtSSAuLi8uLi9QQyAtSSAkKFNTTF9ESVIpL2luYzMyCi0KLVNTTF9MSUJTPWdkaTMyLmxpYiB3c29jazMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvTElCUEFUSDokKFNTTF9MSUJfRElSKSBsaWJlYXkzMi5saWIgc3NsZWF5MzIubGliCi1TU0xfU09VUkNFPS4uLy4uL01vZHVsZXMvX3NzbC5jIAotCi1IQVNIX0xJQlM9Z2RpMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9saWJwYXRoOiQoU1NMX0xJQl9ESVIpIGxpYmVheTMyLmxpYgotSEFTSF9TT1VSQ0U9Li4vLi4vTW9kdWxlcy9faGFzaG9wZW5zc2wuYyAKLQotYWxsOiBfc3NsJChTVUZGSVgpIF9oYXNobGliJChTVUZGSVgpCi0KLSMgU3BsaXQgY29tcGlsZS9saW5rIGludG8gdHdvIHN0ZXBzIHRvIGJldHRlciBzdXBwb3J0IFZTRXh0Q29tcAotX3NzbCQoU1VGRklYKTogJChTU0xfU09VUkNFKSAkKFNTTF9MSUJfRElSKS9saWJlYXkzMi5saWIgJChTU0xfTElCX0RJUikvc3NsZWF5MzIubGliIC4uLy4uL1BDLyouaCAuLi8uLi9JbmNsdWRlLyouaAotCUBpZiBub3QgZXhpc3QgIiQoVEVNUCkvX3NzbC8uIiBta2RpciAiJChURU1QKS9fc3NsIgotCWNsIC9ub2xvZ28gL2MgJChTU0xfU09VUkNFKSAkKENGTEFHUykgL0ZvJChURU1QKVxfc3NsXCQqLm9iaiAkKElOQ0xVREVTKQotCWxpbmsgL25vbG9nbyBAPDwKLSAgICAgICAgICAgICAvZGxsIC9vdXQ6X3NzbCQoU1VGRklYKSAkKFRFTVApXF9zc2xcJCoub2JqICQoU1NMX0xJQlMpICQoRVhUUkFfTElCUykKLTw8Ci0KLV9oYXNobGliJChTVUZGSVgpOiAkKEhBU0hfU09VUkNFKSAkKFNTTF9MSUJfRElSKS9saWJlYXkzMi5saWIgLi4vLi4vUEMvKi5oIC4uLy4uL0luY2x1ZGUvKi5oCi0gICAgQGlmIG5vdCBleGlzdCAiJChURU1QKS9faGFzaGxpYi8uIiBta2RpciAiJChURU1QKS9faGFzaGxpYiIKLSAgICBjbCAvbm9sb2dvIC9jICQoSEFTSF9TT1VSQ0UpICQoQ0ZMQUdTKSAkKEVYVFJBX0NGTEFHUykgL0ZvJChURU1QKVxfaGFzaGxpYlwkKi5vYmogJChJTkNMVURFUykgCi0gICAgbGluayAvbm9sb2dvIEA8PAotCS9kbGwgL291dDpfaGFzaGxpYiQoU1VGRklYKSAkKEhBU0hfTElCUykgJChFWFRSQV9MSUJTKSAkKFRFTVApXF9oYXNobGliXCQqLm9iagotPDwKZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL19zc2wudmNwcm9qIGIvUEMvVlM3LjEvX3NzbC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZDY1ZmUuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvX3NzbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX3NzbCINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JU2NjUHJvamVjdE5hbWU9IiINCi0JU2NjTG9jYWxQYXRoPSIiDQotCUtleXdvcmQ9Ik1ha2VGaWxlUHJvaiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9zc2wiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIC1hIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iDQotCQkJCU91dHB1dD0iX3NzbC5weWQiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9zc2wiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIC1hIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iDQotCQkJCU91dHB1dD0iX3NzbF9kLnB5ZCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3NzbCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImJ1aWxkX3NzbC5iYXQgJChDb25maWd1cmF0aW9uTmFtZSkgLWEiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImVjaG8gTm90aGluZyB0byBkbyINCi0JCQkJT3V0cHV0PSJfc3NsLnB5ZCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9zc2wiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIC1hIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iDQotCQkJCU91dHB1dD0iX3NzbC5weWQiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NzbC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTNy4xL190ZXN0Y2FwaS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxOTc4NDIuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvX3Rlc3RjYXBpLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX3Rlc3RjYXBpIg0KLQlTY2NQcm9qZWN0TmFtZT0iX3Rlc3RjYXBpIg0KLQlTY2NMb2NhbFBhdGg9Ii4uIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX3Rlc3RjYXBpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3Rlc3RjYXBpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfdGVzdGNhcGkiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TU1BUF9FWFBPUlRTIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIuL190ZXN0Y2FwaV9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGVzdGNhcGlfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3Rlc3RjYXBpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO01NQVBfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3Rlc3RjYXBpLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGVzdGNhcGkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL190ZXN0Y2FwaS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF90ZXN0Y2FwaSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3Rlc3RjYXBpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX3RraW50ZXIudmNwcm9qIGIvUEMvVlM3LjEvX3RraW50ZXIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjczNDE2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL190a2ludGVyLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI2MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX3RraW50ZXIiDQotCVNjY1Byb2plY3ROYW1lPSJfdGtpbnRlciINCi0JU2NjTG9jYWxQYXRoPSIuLlwuLlwuLlwuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF90a2ludGVyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cdGNsdGtcaW5jbHVkZSwuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1dJVEhfQVBQSU5JVCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx0Y2x0a1xsaWJcdGs4NC5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg0LmxpYiBvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3RraW50ZXIucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGtpbnRlci5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxOTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGtpbnRlci5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcX3RraW50ZXIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHRjbHRrXGluY2x1ZGUsLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUztXSVRIX0FQUElOSVQiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx0Y2x0a1xsaWJcdGs4NC5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg0LmxpYiBvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3RraW50ZXJfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190a2ludGVyX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTkwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3RraW50ZXJfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3RraW50ZXIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHRjbHRrXGluY2x1ZGUsLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztXSVRIX0FQUElOSVQiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx0Y2x0a1xsaWJcdGs4NC5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg0LmxpYiBvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3RraW50ZXIucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGtpbnRlci5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxOTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGtpbnRlci5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF90a2ludGVyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlx0Y2x0a1xpbmNsdWRlLC4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7V0lUSF9BUFBJTklUIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHRjbHRrXGxpYlx0azg0LmxpYiAuLlwuLlwuLlx0Y2x0a1xsaWJcdGNsODQubGliIG9kYmNjcDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGtpbnRlci5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190a2ludGVyLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE5MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL190a2ludGVyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90a2ludGVyLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9hbWQ2NF9tbDY0LmJhdCBiL1BDL1ZTNy4xL2FtZDY0X21sNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTlhY2YxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL2FtZDY0X21sNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotQGVjaG8gb2ZmCi1yZW0gVHJ5IHRvIGZpbmQgdGhlIEFNRDY0IGFzc2VtYmxlciBhbmQgY2FsbCBpdCB3aXRoIHRoZSBzdXBwbGllZCBhcmd1bWVudHMuCi0KLXNldCBNTEVYRT1NaWNyb3NvZnQgUGxhdGZvcm0gU0RLXEJpblxXaW42NFx4ODZcQU1ENjRcbWw2NC5FWEUKLQotcmVtIEZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNlZSBhbHNvCi1yZW0gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9saWJyYXJ5L2VuLXVzL3dpbjY0L3dpbjY0L3dvdzY0X2ltcGxlbWVudGF0aW9uX2RldGFpbHMuYXNwCi0KLWlmIGV4aXN0ICIlUHJvZ3JhbUZpbGVzJVwlTUxFWEUlIiAoCi0gIHNldCBNTDY0PSIlUHJvZ3JhbUZpbGVzJVwlTUxFWEUlIgotKSBlbHNlIGlmIGV4aXN0ICIlUHJvZ3JhbVc2NDMyJVwlTUxFWEUlIiAoCi0gIHNldCBNTDY0PSIlUHJvZ3JhbVc2NDMyJVwlTUxFWEUlIgotKSBlbHNlICgKLSAgc2V0IE1MNjQ9bWw2NC5leGUKLSkKLQotJU1MNjQlICUqCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9idWlsZF9zc2wuYmF0IGIvUEMvVlM3LjEvYnVpbGRfc3NsLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZiZTNjMC4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9idWlsZF9zc2wuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotaWYgIiUxIiA9PSAiUmVsZWFzZUFNRDY0IiBjYWxsICIlTVNTZGslXFNldEVudiIgL1hQNjQgL1JFVEFJTAotCi1AZWNobyBvZmYKLWlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgKLSAgaWYgJTEgRVFVIERlYnVnICgKLSAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlCi0gICkgRUxTRSAoCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKLSAgKQotKQotJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIKLQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvYnVpbGRfc3NsLnB5IGIvUEMvVlM3LjEvYnVpbGRfc3NsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTlmNGUzLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL2J1aWxkX3NzbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi0jIFNjcmlwdCBmb3IgYnVpbGRpbmcgdGhlIF9zc2wgYW5kIF9oYXNobGliIG1vZHVsZXMgZm9yIFdpbmRvd3MuCi0jIFVzZXMgUGVybCB0byBzZXR1cCB0aGUgT3BlblNTTCBlbnZpcm9ubWVudCBjb3JyZWN0bHkKLSMgYW5kIGJ1aWxkIE9wZW5TU0wsIHRoZW4gaW52b2tlcyBhIHNpbXBsZSBubWFrZSBzZXNzaW9uCi0jIGZvciB0aGUgYWN0dWFsIF9zc2wucHlkIGFuZCBfaGFzaGxpYi5weWQgRExMcy4KLQotIyBUSEVPUkVUSUNBTExZLCB5b3UgY2FuOgotIyAqIFVucGFjayB0aGUgbGF0ZXN0IFNTTCByZWxlYXNlIG9uZSBsZXZlbCBhYm92ZSB5b3VyIG1haW4gUHl0aG9uIHNvdXJjZQotIyAgIGRpcmVjdG9yeS4gIEl0IGlzIGxpa2VseSB5b3Ugd2lsbCBhbHJlYWR5IGZpbmQgdGhlIHpsaWIgbGlicmFyeSBhbmQKLSMgICBhbnkgb3RoZXIgZXh0ZXJuYWwgcGFja2FnZXMgdGhlcmUuCi0jICogSW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgaXMgc29tZXdoZXJlIG9uIHlvdXIgcGF0aC4KLSMgKiBSdW4gdGhpcyBzY3JpcHQgZnJvbSB0aGUgUENCdWlsZCBkaXJlY3RvcnkuCi0jCi0jIGl0IHNob3VsZCBjb25maWd1cmUgYW5kIGJ1aWxkIFNTTCwgdGhlbiBidWlsZCB0aGUgX3NzbCBhbmQgX2hhc2hsaWIKLSMgUHl0aG9uIGV4dGVuc2lvbnMgd2l0aG91dCBpbnRlcnZlbnRpb24uCi0KLWltcG9ydCBvcywgc3lzLCByZQotCi0jIEZpbmQgYWxsICJmb28uZXhlIiBmaWxlcyBvbiB0aGUgUEFUSC4KLWRlZiBmaW5kX2FsbF9vbl9wYXRoKGZpbGVuYW1lLCBleHRyYXMgPSBOb25lKToKLSAgICBlbnRyaWVzID0gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0KG9zLnBhdGhzZXApCi0gICAgcmV0ID0gW10KLSAgICBmb3IgcCBpbiBlbnRyaWVzOgotICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICByZXQuYXBwZW5kKGZuYW1lKQotICAgIGlmIGV4dHJhczoKLSAgICAgICAgZm9yIHAgaW4gZXh0cmFzOgotICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKLSAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuYW1lKQotICAgIHJldHVybiByZXQKLQotIyBGaW5kIGEgc3VpdGFibGUgUGVybCBpbnN0YWxsYXRpb24gZm9yIE9wZW5TU0wuCi0jIGN5Z3dpbiBwZXJsIGRvZXMgKm5vdCogd29yay4gIEFjdGl2ZVBlcmwgZG9lcy4KLSMgQmVpbmcgYSBQZXJsIGR1bW15LCB0aGUgc2ltcGxlc3Qgd2F5IEkgY2FuIGNoZWNrIGlzIGlmIHRoZSAiV2luMzIiIHBhY2thZ2UKLSMgaXMgYXZhaWxhYmxlLgotZGVmIGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKToKLSAgICBmb3IgcGVybCBpbiBwZXJsczoKLSAgICAgICAgZmggPSBvcy5wb3BlbihwZXJsICsgJyAtZSAidXNlIFdpbjMyOyInKQotICAgICAgICBmaC5yZWFkKCkKLSAgICAgICAgcmMgPSBmaC5jbG9zZSgpCi0gICAgICAgIGlmIHJjOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmV0dXJuIHBlcmwKLSAgICBwcmludCAiQ2FuIG5vdCBmaW5kIGEgc3VpdGFibGUgUEVSTDoiCi0gICAgaWYgcGVybHM6Ci0gICAgICAgIHByaW50ICIgdGhlIGZvbGxvd2luZyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kOiIKLSAgICAgICAgZm9yIHAgaW4gcGVybHM6Ci0gICAgICAgICAgICBwcmludCAiICIsIHAKLSAgICAgICAgcHJpbnQgIiBOb25lIG9mIHRoZXNlIHZlcnNpb25zIGFwcGVhciBzdWl0YWJsZSBmb3IgYnVpbGRpbmcgT3BlblNTTCIKLSAgICBlbHNlOgotICAgICAgICBwcmludCAiIE5PIHBlcmwgaW50ZXJwcmV0ZXJzIHdlcmUgZm91bmQgb24gdGhpcyBtYWNoaW5lIGF0IGFsbCEiCi0gICAgcHJpbnQgIiBQbGVhc2UgaW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgYXBwZWFycyBvbiB5b3VyIHBhdGgiCi0gICAgcHJpbnQgIlRoZSBQeXRob24gU1NMIG1vZHVsZSB3YXMgbm90IGJ1aWx0IgotICAgIHJldHVybiBOb25lCi0KLSMgTG9jYXRlIHRoZSBiZXN0IFNTTCBkaXJlY3RvcnkgZ2l2ZW4gYSBmZXcgcm9vdHMgdG8gbG9vayBpbnRvLgotZGVmIGZpbmRfYmVzdF9zc2xfZGlyKHNvdXJjZXMpOgotICAgIGNhbmRpZGF0ZXMgPSBbXQotICAgIGZvciBzIGluIHNvdXJjZXM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgbm90ZTogZG8gbm90IGFic3BhdGggczsgdGhlIGJ1aWxkIHdpbGwgZmFpbCBpZiBhbnkKLSAgICAgICAgICAgICMgaGlnaGVyIHVwIGRpcmVjdG9yeSBuYW1lIGhhcyBzcGFjZXMgaW4gaXQuCi0gICAgICAgICAgICBmbmFtZXMgPSBvcy5saXN0ZGlyKHMpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKLSAgICAgICAgICAgIGZuYW1lcyA9IFtdCi0gICAgICAgIGZvciBmbmFtZSBpbiBmbmFtZXM6Ci0gICAgICAgICAgICBmcW4gPSBvcy5wYXRoLmpvaW4ocywgZm5hbWUpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZxbikgYW5kIGZuYW1lLnN0YXJ0c3dpdGgoIm9wZW5zc2wtIik6Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoZnFuKQotICAgICMgTm93IHdlIGhhdmUgYWxsIHRoZSBjYW5kaWRhdGVzLCBsb2NhdGUgdGhlIGJlc3QuCi0gICAgYmVzdF9wYXJ0cyA9IFtdCi0gICAgYmVzdF9uYW1lID0gTm9uZQotICAgIGZvciBjIGluIGNhbmRpZGF0ZXM6Ci0gICAgICAgIHBhcnRzID0gcmUuc3BsaXQoIlsuLV0iLCBvcy5wYXRoLmJhc2VuYW1lKGMpKVsxOl0KLSAgICAgICAgIyBlZyAtIG9wZW5zc2wtMC45LjctYmV0YTEgLSBpZ25vcmUgYWxsICJiZXRhIiBvciBhbnkgb3RoZXIgcXVhbGlmaWVycwotICAgICAgICBpZiBsZW4ocGFydHMpID49IDQ6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBwYXJ0cyA+IGJlc3RfcGFydHM6Ci0gICAgICAgICAgICBiZXN0X3BhcnRzID0gcGFydHMKLSAgICAgICAgICAgIGJlc3RfbmFtZSA9IGMKLSAgICBpZiBiZXN0X25hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByaW50ICJGb3VuZCBhbiBTU0wgZGlyZWN0b3J5IGF0ICclcyciICUgKGJlc3RfbmFtZSwpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQgIkNvdWxkIG5vdCBmaW5kIGFuIFNTTCBkaXJlY3RvcnkgaW4gJyVzJyIgJSAoc291cmNlcywpCi0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgcmV0dXJuIGJlc3RfbmFtZQotCi1kZWYgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCk6Ci0gICAgb3Muc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSkKLSAgICBvcy5zeXN0ZW0oZG9fc2NyaXB0KQotCi1kZWYgbWFpbigpOgotICAgIGJ1aWxkX2FsbCA9ICItYSIgaW4gc3lzLmFyZ3YKLSAgICBpZiBzeXMuYXJndlsxXSA9PSAiUmVsZWFzZSI6Ci0gICAgICAgIGFyY2ggPSAieDg2IgotICAgICAgICBkZWJ1ZyA9IEZhbHNlCi0gICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU4zMiIKLSAgICAgICAgZG9fc2NyaXB0ID0gIm1zXFxkb19tYXNtIgotICAgICAgICBtYWtlZmlsZSA9ICJtc1xcbnQubWFrIgotICAgIGVsaWYgc3lzLmFyZ3ZbMV0gPT0gIkRlYnVnIjoKLSAgICAgICAgYXJjaCA9ICJ4ODYiCi0gICAgICAgIGRlYnVnID0gVHJ1ZQotICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lOMzIiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fbWFzbSIKLSAgICAgICAgbWFrZWZpbGU9Im1zXFxkMzIubWFrIgotICAgIGVsaWYgc3lzLmFyZ3ZbMV0gPT0gIlJlbGVhc2VJdGFuaXVtIjoKLSAgICAgICAgYXJjaCA9ICJpYTY0IgotICAgICAgICBkZWJ1ZyA9IEZhbHNlCi0gICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU42NEkiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fd2luNjRpIgotICAgICAgICBtYWtlZmlsZSA9ICJtc1xcbnQubWFrIgotICAgICAgICBvcy5lbnZpcm9uWyJWU0VYVENPTVBfVVNFQ0wiXSA9ICJNU19JVEFOSVVNIgotICAgIGVsaWYgc3lzLmFyZ3ZbMV0gPT0gIlJlbGVhc2VBTUQ2NCI6Ci0gICAgICAgIGFyY2g9ImFtZDY0IgotICAgICAgICBkZWJ1Zz1GYWxzZQotICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lONjRBIgotICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX3dpbjY0YSIKLSAgICAgICAgbWFrZWZpbGUgPSAibXNcXG50Lm1hayIKLSAgICAgICAgb3MuZW52aXJvblsiVlNFWFRDT01QX1VTRUNMIl0gPSAiTVNfT1BURVJPTiIKLSAgICBtYWtlX2ZsYWdzID0gIiIKLSAgICBpZiBidWlsZF9hbGw6Ci0gICAgICAgIG1ha2VfZmxhZ3MgPSAiLWEiCi0gICAgIyBwZXJsIHNob3VsZCBiZSBvbiB0aGUgcGF0aCwgYnV0IHdlIGFsc28gbG9vayBpbiAiXHBlcmwiIGFuZCAiYzpcXHBlcmwiCi0gICAgIyBhcyAid2VsbCBrbm93biIgbG9jYXRpb25zCi0gICAgcGVybHMgPSBmaW5kX2FsbF9vbl9wYXRoKCJwZXJsLmV4ZSIsIFsiXFxwZXJsXFxiaW4iLCAiQzpcXHBlcmxcXGJpbiJdKQotICAgIHBlcmwgPSBmaW5kX3dvcmtpbmdfcGVybChwZXJscykKLSAgICBpZiBwZXJsIGlzIE5vbmU6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBwcmludCAiRm91bmQgYSB3b3JraW5nIHBlcmwgYXQgJyVzJyIgJSAocGVybCwpCi0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgIyBMb29rIGZvciBTU0wgMiBsZXZlbHMgdXAgZnJvbSBwY2J1aWxkIC0gaWUsIHNhbWUgcGxhY2UgemxpYiBldGMgYWxsIGxpdmUuCi0gICAgc3NsX2RpciA9IGZpbmRfYmVzdF9zc2xfZGlyKCgiLi5cXC4uXFwuLiIsKSkKLSAgICBpZiBzc2xfZGlyIGlzIE5vbmU6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBvbGRfY2QgPSBvcy5nZXRjd2QoKQotICAgIHRyeToKLSAgICAgICAgb3MuY2hkaXIoc3NsX2RpcikKLSAgICAgICAgIyBJZiB0aGUgc3NsIG1ha2VmaWxlcyBkbyBub3QgZXhpc3QsIHdlIGludm9rZSBQZXJsIHRvIGdlbmVyYXRlIHRoZW0uCi0gICAgICAgICMgRHVlIHRvIGEgYnVnIGluIHRoaXMgc2NyaXB0LCB0aGUgbWFrZWZpbGUgc29tZXRpbWVzIGVuZGVkIHVwIGVtcHR5Ci0gICAgICAgICMgRm9yY2UgYSByZWdlbmVyYXRpb24gaWYgaXQgaXMuCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSkgb3Igb3MucGF0aC5nZXRzaXplKG1ha2VmaWxlKT09MDoKLSAgICAgICAgICAgIHByaW50ICJDcmVhdGluZyB0aGUgbWFrZWZpbGVzLi4uIgotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAjIFB1dCBvdXIgd29ya2luZyBQZXJsIGF0IHRoZSBmcm9udCBvZiBvdXIgcGF0aAotICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MucGF0aC5kaXJuYW1lKHBlcmwpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aHNlcCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXQotICAgICAgICAgICAgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCkKLSAgICAgICAgICAgIGlmIGFyY2g9PSJ4ODYiIGFuZCBkZWJ1ZzoKLSAgICAgICAgICAgICAgICAjIHRoZSBkb19tYXNtIHNjcmlwdCBpbiBvcGVuc3NsIGRvZXNuJ3QgZ2VuZXJhdGUgYSBkZWJ1ZwotICAgICAgICAgICAgICAgICMgYnVpbGQgbWFrZWZpbGUgc28gd2UgZ2VuZXJhdGUgaXQgaGVyZToKLSAgICAgICAgICAgICAgICBvcy5zeXN0ZW0oInBlcmwgdXRpbFxtazFtZi5wbCBkZWJ1ZyAiK2NvbmZpZ3VyZSsiID4iK21ha2VmaWxlKQotCi0gICAgICAgICMgTm93IHJ1biBtYWtlLgotICAgICAgICBtYWtlQ29tbWFuZCA9ICJubWFrZSAvbm9sb2dvIFBFUkw9XCIlc1wiIC1mIFwiJXNcIiIgJShwZXJsLCBtYWtlZmlsZSkKLSAgICAgICAgcHJpbnQgIkV4ZWN1dGluZyBzc2wgbWFrZWZpbGVzOiIsIG1ha2VDb21tYW5kCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByYyA9IG9zLnN5c3RlbShtYWtlQ29tbWFuZCkKLSAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICBwcmludCAiRXhlY3V0aW5nICIrbWFrZWZpbGUrIiBmYWlsZWQiCi0gICAgICAgICAgICBwcmludCByYwotICAgICAgICAgICAgc3lzLmV4aXQocmMpCi0gICAgZmluYWxseToKLSAgICAgICAgb3MuY2hkaXIob2xkX2NkKQotICAgICMgQW5kIGZpbmFsbHksIHdlIGNhbiBidWlsZCB0aGUgX3NzbCBtb2R1bGUgaXRzZWxmIGZvciBQeXRob24uCi0gICAgZGVmcyA9ICJTU0xfRElSPVwiJXNcIiIgJSAoc3NsX2RpciwpCi0gICAgaWYgZGVidWc6Ci0gICAgICAgIGRlZnMgPSBkZWZzICsgIiAiICsgIkRFQlVHPTEiCi0gICAgaWYgYXJjaCBpbiAoJ2FtZDY0JywgJ2lhNjQnKToKLSAgICAgICAgZGVmcyA9IGRlZnMgKyAiIEVYVFJBX0NGTEFHUz0vR1MtIEVYVFJBX0xJQlM9YnVmZmVyb3ZlcmZsb3dVLmxpYiIKLSAgICBtYWtlQ29tbWFuZCA9ICdubWFrZSAvbm9sb2dvIC1mIF9zc2wubWFrICcgKyBkZWZzICsgIiAiICsgbWFrZV9mbGFncwotICAgIHByaW50ICJFeGVjdXRpbmc6IiwgbWFrZUNvbW1hbmQKLSAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICByYyA9IG9zLnN5c3RlbShtYWtlQ29tbWFuZCkKLSAgICBzeXMuZXhpdChyYykKLQotaWYgX19uYW1lX189PSdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9iejIudmNwcm9qIGIvUEMvVlM3LjEvYnoyLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGIwMDVhMS4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9iejIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJiejIiDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCi0JU2NjUHJvamVjdE5hbWU9ImJ6MiINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcYnoyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXC4uXGJ6aXAyLTEuMC4zIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cYnppcDItMS4wLjNcbGliYnoyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9iejJfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJtc3ZjcnQsbGliYyINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vYnoyX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vYnoyX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkIC4uXC4uXC4uXGJ6aXAyLTEuMC4zDQotbm1ha2UgL25vbG9nbyAvZiBtYWtlZmlsZS5tc2MNCi0iLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcYnoyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxiemlwMi0xLjAuM1xsaWJiejIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL2J6Mi5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9iejIucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vYnoyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAuLlwuLlwuLlxiemlwMi0xLjAuMw0KLW5tYWtlIC9ub2xvZ28gL2YgbWFrZWZpbGUubXNjIGxpYg0KLSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXGJ6MiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGJ6aXAyLTEuMC4zXGxpYmJ6Mi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vYnoyLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL2J6Mi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9iejIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkIC4uXC4uXC4uXGJ6aXAyLTEuMC4zDQotbm1ha2UgL25vbG9nbyAvZiBtYWtlZmlsZS5tc2MgbGliDQotIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXGJ6MiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxiemlwMi0xLjAuM1xsaWJiejIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL2J6Mi5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9iejIucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vYnoyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAuLlwuLlwuLlxiemlwMi0xLjAuMw0KLW5tYWtlIC9ub2xvZ28gL2YgbWFrZWZpbGUubXNjIGxpYg0KLSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYnoybW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9kYi5idWlsZCBiL1BDL1ZTNy4xL2RiLmJ1aWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTg3Zjc0Li4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL2RiLmJ1aWxkCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08cHJvamVjdD4KLSA8dGFyZ2V0IG5hbWU9ImFsbCIgZGVzY3JpcHRpb249IkJ1aWxkIGFsbCB0YXJnZXRzLiI+Ci0gICA8c29sdXRpb24gY29uZmlndXJhdGlvbj0icmVsZWFzZSI+Ci0gICAgIDxwcm9qZWN0cz4KLSAgICAgICA8aW5jbHVkZSBuYW1lPSJkYl9zdGF0aWMudmNwcm9qIiAvPgotICAgICA8L3Byb2plY3RzPgotICAgPC9zb2x1dGlvbj4KLSA8L3RhcmdldD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL2ZpZWxkMy5weSBiL1BDL1ZTNy4xL2ZpZWxkMy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdmMjRjYS4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9maWVsZDMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIEFuIGFic3VyZCB3b3JrYXJvdW5kIGZvciB0aGUgbGFjayBvZiBhcml0aG1ldGljIGluIE1TJ3MgcmVzb3VyY2UgY29tcGlsZXIuCi0jIEFmdGVyIGJ1aWxkaW5nIFB5dGhvbiwgcnVuIHRoaXMsIHRoZW4gcGFzdGUgdGhlIG91dHB1dCBpbnRvIHRoZSBhcHByb3ByaWF0ZQotIyBwYXJ0IG9mIFBDXHB5dGhvbl9udC5yYy4KLSMgRXhhbXBsZSBvdXRwdXQ6Ci0jCi0jICogRm9yIDIuM2EwLAotIyAqIFBZX01JQ1JPX1ZFUlNJT04gPSAwCi0jICogUFlfUkVMRUFTRV9MRVZFTCA9ICdhbHBoYScgPSAweEEKLSMgKiBQWV9SRUxFQVNFX1NFUklBTCA9IDEKLSMgKgotIyAqIGFuZCAwKjEwMDAgKyAxMCoxMCArIDEgPSAxMDEuCi0jICovCi0jICNkZWZpbmUgRklFTEQzIDEwMQotCi1pbXBvcnQgc3lzCi0KLW1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCi1sZXZlbG51bSA9IHsnYWxwaGEnOiAweEEsCi0gICAgICAgICAgICAnYmV0YSc6IDB4QiwKLSAgICAgICAgICAgICdjYW5kaWRhdGUnOiAweEMsCi0gICAgICAgICAgICAnZmluYWwnOiAweEYsCi0gICAgICAgICAgIH1bbGV2ZWxdCi1zdHJpbmcgPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdICMgbGlrZSAnMi4zYTAnCi0KLXByaW50ICIgKiBGb3IgJXMsIiAlIHN0cmluZwotcHJpbnQgIiAqIFBZX01JQ1JPX1ZFUlNJT04gPSAlZCIgJSBtaWNybwotcHJpbnQgIiAqIFBZX1JFTEVBU0VfTEVWRUwgPSAlciA9ICVzIiAlIChsZXZlbCwgaGV4KGxldmVsbnVtKSkKLXByaW50ICIgKiBQWV9SRUxFQVNFX1NFUklBTCA9ICVkIiAlIHNlcmlhbAotcHJpbnQgIiAqIgotCi1maWVsZDMgPSBtaWNybyAqIDEwMDAgKyBsZXZlbG51bSAqIDEwICsgc2VyaWFsCi0KLXByaW50ICIgKiBhbmQgJWQqMTAwMCArICVkKjEwICsgJWQgPSAlZCIgJSAobWljcm8sIGxldmVsbnVtLCBzZXJpYWwsIGZpZWxkMykKLXByaW50ICIgKi8iCi1wcmludCAiI2RlZmluZSBGSUVMRDMiLCBmaWVsZDMKZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL2luc3RhbGxlci5ibXAgYi9QQy9WUzcuMS9pbnN0YWxsZXIuYm1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODc1ZTE5Li4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL2luc3RhbGxlci5ibXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9tYWtlX2J1aWxkaW5mby5jIGIvUEMvVlM3LjEvbWFrZV9idWlsZGluZm8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFhMmI2Ni4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9tYWtlX2J1aWxkaW5mby5jCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIFRoaXMgZmlsZSBjcmVhdGVzIHRoZSBnZXRidWlsZGluZm8ubyBvYmplY3QsIGJ5IGZpcnN0Ci0gICBpbnZva2luZyBzdWJ3Y3Jldi5leGUgKGlmIGZvdW5kKSwgYW5kIHRoZW4gaW52b2tpbmcgY2wuZXhlLgotICAgQXMgYSBzaWRlIGVmZmVjdCwgaXQgbWlnaHQgZ2VuZXJhdGUgUENcVlM3LjFcZ2V0YnVpbGRpbmZvMi5jCi0gICBhbHNvLiBJZiB0aGlzIGlzbid0IGEgc3VidmVyc2lvbiBjaGVja291dCwgb3Igc3Vid2NyZXYgaXNuJ3QKLSAgIGZvdW5kLCBpdCBjb21waWxlcyAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIGluc3RlYWQuCi0KLSAgIEN1cnJlbnRseSwgc3Vid2NyZXYuZXhlIGlzIGZvdW5kIGZyb20gdGhlIHJlZ2lzdHJ5IGVudHJpZXMKLSAgIG9mIFRvcnRvaXNlU1ZOLgotCi0gICBObyBhdHRlbXB0IGlzIG1hZGUgdG8gcGxhY2UgZ2V0YnVpbGRpbmZvLm8gaW50byB0aGUgcHJvcGVyCi0gICBiaW5hcnkgZGlyZWN0b3J5LiBUaGlzIGlzbid0IG5lY2Vzc2FyeSwgYXMgdGhpcyB0b29sIGlzCi0gICBpbnZva2VkIGFzIGEgcHJlLWxpbmsgc3RlcCBmb3IgcHl0aG9uY29yZSwgc28gdGhhdCBvdmVyd3JpdGVzCi0gICBhbnkgcHJldmlvdXMgZ2V0YnVpbGRpbmZvLm8uCi0KLSovCi0KLWludCBtYWtlX2J1aWxkaW5mbzIoKQotewotICAgIHN0cnVjdCBfc3RhdCBzdDsKLSAgICBIS0VZIGhUb3J0b2lzZTsKLSAgICBjaGFyIGNvbW1hbmRbNTAwXTsKLSAgICBEV09SRCB0eXBlLCBzaXplOwotICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KLSAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCi0gICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLwotICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOwotICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKLSAgICAgICAgdHlwZSAhPSBSRUdfU1opCi0gICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXQoY29tbWFuZCwgImJpblxcc3Vid2NyZXYuZXhlIik7Ci0gICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCi0gICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXQoY29tbWFuZCwgIlwiIC4uXFwuLiAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIGdldGJ1aWxkaW5mbzIuYyIpOwotICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOwotICAgIGlmIChzeXN0ZW0oY29tbWFuZCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQotewotICAgIGNoYXIgY29tbWFuZFs1MDBdID0gImNsLmV4ZSAtYyAtRF9XSU4zMiAtRFVTRV9ETF9FWFBPUlQgLURfV0lORE9XUyAtRFdJTjMyIC1EX1dJTkRMTCAiOwotICAgIGludCBkb191bmxpbmssIHJlc3VsdDsKLSAgICBpZiAoYXJnYyAhPSAyKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAibWFrZV9idWlsZGluZm8gJChDb25maWd1cmF0aW9uTmFtZSlcbiIpOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIH0KLSAgICBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlIikgPT0gMCkgewotICAgICAgICBzdHJjYXQoY29tbWFuZCwgIi1NRCAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJEZWJ1ZyIpID09IDApIHsKLSAgICAgICAgc3RyY2F0KGNvbW1hbmQsICItRF9ERUJVRyAtTURkICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VJdGFuaXVtIikgPT0gMCkgewotICAgICAgICBzdHJjYXQoY29tbWFuZCwgIi1NRCAvVVNFQ0w6TVNfSVRBTklVTSAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlQU1ENjQiKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdChjb21tYW5kLCAiLU1EICIpOwotICAgICAgICBzdHJjYXQoY29tbWFuZCwgIi1NRCAvVVNFQ0w6TVNfT1BURVJPTiAiKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbiAlc1xuIiwgYXJndlsxXSk7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgfQotCi0gICAgaWYgKChkb191bmxpbmsgPSBtYWtlX2J1aWxkaW5mbzIoKSkpCi0gICAgICAgIHN0cmNhdChjb21tYW5kLCAiZ2V0YnVpbGRpbmZvMi5jIC1EU1VCV0NSRVYgIik7Ci0gICAgZWxzZQotICAgICAgICBzdHJjYXQoY29tbWFuZCwgIi4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMiKTsKLSAgICBzdHJjYXQoY29tbWFuZCwgIiAtRm9nZXRidWlsZGluZm8ubyAtSS4uXFwuLlxcSW5jbHVkZSAtSS4uXFwuLlxcUEMiKTsKLSAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gICAgaWYgKGRvX3VubGluaykKLSAgICAgICAgdW5saW5rKCJnZXRidWlsZGluZm8yLmMiKTsKLSAgICBpZiAocmVzdWx0IDwgMCkKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL21ha2VfYnVpbGRpbmZvLnZjcHJvaiBiL1BDL1ZTNy4xL21ha2VfYnVpbGRpbmZvLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBjOGE1ZC4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9tYWtlX2J1aWxkaW5mby52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUwIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Im1ha2VfYnVpbGRpbmZvIg0KLQlQcm9qZWN0R1VJRD0ie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotCUtleXdvcmQ9IldpbjMyUHJvaiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcbWFrZV9idWlsZGluZm8iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQotCQkJCU1pbmltYWxSZWJ1aWxkPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSI1Ig0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjQiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL21ha2VfYnVpbGRpbmZvLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXG1ha2VfYnVpbGRpbmZvIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjQiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQotCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLlxtYWtlX2J1aWxkaW5mby5jIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2ogYi9QQy9WUzcuMS9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZmYTRlYi4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JUm9vdE5hbWVzcGFjZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JU2NjUHJvamVjdE5hbWU9Im1ha2VfdmVyc2lvbmluZm8iDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxtYWtlX3ZlcnNpb25pbmZvIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJQ29tbWFuZExpbmU9Ii5cbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0Oy4uXC4uXFBDXHB5dGhvbm50X3JjLmgNCi0iDQotCQkJCU91dHB1dHM9Ii4uXC4uXFBDXHB5dGhvbm50X3JjLmgiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmNjcDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLlwuL21ha2VfdmVyc2lvbmluZm8uZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vbWFrZV92ZXJzaW9uaW5mby5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIkKFRhcmdldEZpbGVOYW1lKSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXG1ha2VfdmVyc2lvbmluZm8iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIuXG1ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0Oy4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaA0KLSINCi0JCQkJT3V0cHV0cz0iLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL21ha2VfdmVyc2lvbmluZm9fZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIkKFRhcmdldEZpbGVOYW1lKSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcGNidWlsZC5zbG4gYi9QQy9WUzcuMS9wY2J1aWxkLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIwZjE5Yy4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9wY2J1aWxkLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDI3NSArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA4LjAwDQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgInszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAie0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjcHJvaiIsICJ7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmNwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInc5eHBvcGVuIiwgInc5eHBvcGVuLnZjcHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjcHJvaiIsICJ7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmNwcm9qIiwgInsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjcHJvaiIsICJ7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3Byb2oiLCAie0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0gPSB7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjcHJvaiIsICJ7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24pID0gcHJlU29sdXRpb24NCi0JCURlYnVnID0gRGVidWcNCi0JCVJlbGVhc2UgPSBSZWxlYXNlDQotCQlSZWxlYXNlQU1ENjQgPSBSZWxlYXNlQU1ENjQNCi0JCVJlbGVhc2VJdGFuaXVtID0gUmVsZWFzZUl0YW5pdW0NCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uKSA9IHBvc3RTb2x1dGlvbg0KLQkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJe0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXs4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHBvc3RTb2x1dGlvbg0KLQkJLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCi0JCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24NCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9weWV4cGF0LnZjcHJvaiBiL1BDL1ZTNy4xL3B5ZXhwYXQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDczOWZhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL3B5ZXhwYXQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJweWV4cGF0Ig0KLQlTY2NQcm9qZWN0TmFtZT0icHlleHBhdCINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdccHlleHBhdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO0hBVkVfRVhQQVRfSDtXSU4zMjtfV0lORE9XUztYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiY2NwMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5ZXhwYXRfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weWV4cGF0X2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHlleHBhdF9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VccHlleHBhdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmNjcDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9weWV4cGF0LnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5ZXhwYXQucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHlleHBhdC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VccHlleHBhdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vcHlleHBhdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weWV4cGF0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5ZXhwYXQubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxweWV4cGF0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAgL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiY2NwMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5ZXhwYXQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHlleHBhdC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weWV4cGF0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3B5dGhvbi5idWlsZCBiL1BDL1ZTNy4xL3B5dGhvbi5idWlsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcxMTAxZC4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9weXRob24uYnVpbGQKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLTxwcm9qZWN0PgotIDx0YXJnZXQgbmFtZT0iYWxsIiBkZXNjcmlwdGlvbj0iQnVpbGQgYWxsIHRhcmdldHMuIj4KLSAgIDxzb2x1dGlvbiBjb25maWd1cmF0aW9uPSJyZWxlYXNlIj4KLSAgICAgPHByb2plY3RzPgotICAgICAgIDxpbmNsdWRlIG5hbWU9Im1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiAvPgotICAgICA8L3Byb2plY3RzPgotICAgPC9zb2x1dGlvbj4KLSAgIDxleGVjIHByb2dyYW09Im1ha2VfdmVyc2lvbmluZm8iIG91dHB1dD0icHl0aG9ubnRfcmMuaCIgLz4KLQotICAgPHNvbHV0aW9uIGNvbmZpZ3VyYXRpb249InJlbGVhc2UiIHNvbHV0aW9uZmlsZT0icGNidWlsZC5zbG4iPgotICAgICA8ZXhjbHVkZXByb2plY3RzPgotICAgICAgIDxpbmNsdWRlIG5hbWU9Il90a2ludGVyLnZjcHJvaiIgLz4KLSAgICAgICA8aW5jbHVkZSBuYW1lPSJiejIudmNwcm9qIiAvPgotICAgICAgIDxpbmNsdWRlIG5hbWU9Il9zcWxpdGUzLnZjcHJvaiIgLz4KLSAgICAgICA8aW5jbHVkZSBuYW1lPSJfc3NsLnZjcHJvaiIgLz4KLSAgICAgPC9leGNsdWRlcHJvamVjdHM+Ci0gICA8L3NvbHV0aW9uPgotIDwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHl0aG9uLmlzcyBiL1BDL1ZTNy4xL3B5dGhvbi5pc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNmEzYzAuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvcHl0aG9uLmlzcworKysgL2Rldi9udWxsCkBAIC0xLDM0MSArMCwwIEBACi07IFNjcmlwdCBnZW5lcmF0ZWQgYnkgdGhlIElubm8gU2V0dXAgU2NyaXB0IFdpemFyZC4KLTsgU0VFIFRIRSBET0NVTUVOVEFUSU9OIEZPUiBERVRBSUxTIE9OIENSRUFUSU5HIElOTk8gU0VUVVAgU0NSSVBUIEZJTEVTIQotCi07IFRoaXMgaXMgdGhlIHdob2xlIGJhbGwgb2Ygd2F4IGZvciBhbiBJbm5vIGluc3RhbGxlciBmb3IgUHl0aG9uLgotOyBUbyB1c2UsIGRvd25sb2FkIElubm8gU2V0dXAgZnJvbSBodHRwOi8vd3d3Lmpyc29mdHdhcmUub3JnL2lzZGwuaHRtLywKLTsgaW5zdGFsbCBpdCwgYW5kIGRvdWJsZS1jbGljayBvbiB0aGlzIGZpbGUuICBUaGF0IGxhdW5jaGVzIHRoZSBJbm5vCi07IHNjcmlwdCBjb21waWxlci4gIFRoZSBHVUkgaXMgZXh0ZW1lbHkgc2ltcGxlLCBhbmQgaGFzIG9ubHkgb25lIGJ1dHRvbgotOyB5b3UgbWF5IG5vdCByZWNvZ25pemUgaW5zdGFudGx5OiAgY2xpY2sgaXQuICBZb3UncmUgZG9uZS4gIEl0IGJ1aWxkcwotOyB0aGUgaW5zdGFsbGVyIGludG8gUENCdWlsZC9QeXRob24tMi4yYTEuZXhlLiAgU2l6ZSBhbmQgc3BlZWQgb2YgdGhlCi07IGluc3RhbGxlciBhcmUgY29tcGV0aXRpdmUgd2l0aCB0aGUgV2lzZSBpbnN0YWxsZXI7IElubm8gdW5pbnN0YWxsCi07IHNlZW1zIG11Y2ggcXVpY2tlciB0aGFuIFdpc2UgKGJ1dCBhbHNvIGZlZWJsZXIsIGFuZCB0aGUgdW5pbnN0YWxsCi07IGxvZyBpcyBpbiBzb21lIHVuKGh1bWFuKXJlYWRhYmxlIGJpbmFyeSBmb3JtYXQpLgotOwotOyBXaGF0J3MgRG9uZQotOyAtLS0tLS0tLS0tLQotOyBBbGwgdGhlIHVzdWFsIFdpbmRvd3MgUHl0aG9uIGZpbGVzIGFyZSBpbnN0YWxsZWQgYnkgdGhpcyBub3cuCi07IEFsbCB0aGUgdXN1YWwgV2luZG93cyBQeXRob24gU3RhcnQgbWVudSBlbnRyaWVzIGFyZSBjcmVhdGVkIGFuZAotOyB3b3JrIGZpbmUuCi07IC5weSwgLnB5dywgLnB5YyBhbmQgLnB5byBleHRlbnNpb25zIGFyZSByZWdpc3RlcmVkLgotOyAgICAgUFJPQkxFTTogIElubm8gdW5pbnN0YWxsIGRvZXMgbm90IHJlc3RvcmUgdGhlaXIgcHJldmlvdXMgcmVnaXN0cnkKLTsgICAgICAgICAgICAgICBhc3NvY2lhdGlvbnMgKGlmIGFueSkuICBXaXNlIGRpZC4gIFRoaXMgd2lsbCBtYWtlIGxpZmUKLTsgICAgICAgICAgICAgICBkaWZmaWN1bHQgZm9yIGFscGhhIChldGMpIHRlc3RlcnMuCi07IFRoZSBQeXRob24gaW5zdGFsbCBpcyBmdWxseSBmdW5jdGlvbmFsIGZvciAidHlwaWNhbCIgdXNlcy4KLTsKLTsgV2hhdCdzIE5vdCBEb25lCi07IC0tLS0tLS0tLS0tLS0tLQotOyBOb25lIG9mICJNYXJrIEhhbW1vbmQncyIgcmVnaXN0cnkgZW50cmllcyBhcmUgd3JpdHRlbi4KLTsgTm8gaW5zdGFsbGF0aW9uIG9mIGZpbGVzIGlzIGRvbmUgaW50byB0aGUgc3lzdGVtIGRpcjoKLTsgICAgIFRoZSBNUyBETExzIGFyZW4ndCBoYW5kbGVkIGF0IGFsbCBieSB0aGlzIHlldC4KLTsgICAgIFB5dGhvbjIyLmRsbCBpcyB1bnBhY2tlZCBpbnRvIHRoZSBtYWluIFB5dGhvbiBkaXIuCi07Ci07IElubm8gY2FuJ3QgZG8gZGlmZmVyZW50IHRoaW5ncyBvbiBOVC8yMDAwIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyCi07IGhhcyBBZG1pbiBwcml2aWxlZ2VzLCBzbyBJIGRvbid0IGtub3cgaG93IHRvICJzb2x2ZSIgZWl0aGVyIG9mIHRob3NlLAotOyBzaG9ydCBvZiBidWlsZGluZyB0d28gaW5zdGFsbGVycyAob25lICpyZXF1aXJpbmcqIEFkbWluIHByaXZzLCB0aGUKLTsgb3RoZXIgbm90IGRvaW5nIGFueXRoaW5nIHRoYXQgbmVlZHMgQWRtaW4gcHJpdnMpLgotOwotOyBJbm5vIGhhcyBubyBjb25jZXB0IG9mIHZhcmlhYmxlcywgc28gbG90cyBvZiBsaW5lcyBpbiB0aGlzIGZpbGUgbmVlZAotOyB0byBiZSBmaWRkbGVkIGJ5IGhhbmQgYWNyb3NzIHJlbGVhc2VzLiAgU2ltcGxlc3Qgd2F5IG91dDogIHN0aWNrIHRoaXMKLTsgZmlsZSBpbiBhIGdpYW50IHRyaXBsZS1xdW90ZWQgci1zdHJpbmcgKG5vdGUgdGhhdCBiYWNrc2xhc2hlcyBhcmUKLTsgcmVxdWlyZWQgYWxsIG92ZXIgdGhlIHBsYWNlIGhlcmUgLS0gZm9yd2FyZCBzbGFzaGVzIERPTidUIFdPUksgaW4KLTsgSW5ubyksIGFuZCB1c2UgJSh5YWRkYSlzIHN0cmluZyBpbnRlcnBvbGF0aW9uIHRvIGRvIHN1YnN0aXR1dGlvbnM7IGkuZS4sCi07IHdyaXRlIGEgdmVyeSBzaW1wbGUgUHl0aG9uIHByb2dyYW0gdG8gKnByb2R1Y2UqIHRoaXMgc2NyaXB0LgotCi1bU2V0dXBdCi1BcHBOYW1lPVB5dGhvbiBhbmQgY29tYmluZWQgV2luMzIgRXh0ZW5zaW9ucwotQXBwVmVyTmFtZT1QeXRob24gMi4yLjIgYW5kIGNvbWJpbmVkIFdpbjMyIEV4dGVuc2lvbnMgMTUwCi1BcHBJZD1QeXRob24gMi4yLjIuMTUwCi1BcHBWZXJzaW9uPTIuMi4yLjE1MAotQXBwQ29weXJpZ2h0PVB5dGhvbiBpcyBDb3B5cmlnaHQgqSAyMDAxIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBXaW4zMiBFeHRlbnNpb25zIGFyZSBDb3B5cmlnaHQgqSAxOTk2LTIwMDEgR3JlZyBTdGVpbiBhbmQgTWFyayBIYW1tb25kLgotCi07IERlZmF1bHQgaW5zdGFsbCBkaXI7IHZhbHVlIG9mIHthcHB9IGxhdGVyICh1bmxlc3MgdXNlciBvdmVycmlkZXMpLgotOyB7c2R9ID0gc3lzdGVtIHJvb3QgZHJpdmUsIHByb2JhYmx5ICJDOiIuCi1EZWZhdWx0RGlyTmFtZT17c2R9XFB5dGhvbjIyCi07RGVmYXVsdERpck5hbWU9e3BmfVxQeXRob24KLQotOyBTdGFydCBtZW51IGZvbGRlciBuYW1lOyB2YWx1ZSBvZiB7Z3JvdXB9IGxhdGVyICh1bmxlc3MgdXNlciBvdmVycmlkZXMpLgotRGVmYXVsdEdyb3VwTmFtZT1QeXRob24gMi4yCi0KLTsgUG9pbnQgU291cmNlRGlyIHRvIG9uZSBhYm92ZSBQQ0J1aWxkID0gc3JjLgotOyBtZWFucyB0aGlzIHNjcmlwdCBjYW4gcnVuIHVuY2hhbmdlZCBmcm9tIGFueW9uZSdzIENWUyB0cmVlLCBubyBtYXR0ZXIKLTsgd2hhdCB0aGV5IGNhbGxlZCB0aGUgdG9wLWxldmVsIGRpcmVjdG9yaWVzLgotU291cmNlRGlyPS4KLU91dHB1dERpcj0uLgotT3V0cHV0QmFzZUZpbGVuYW1lPVB5dGhvbi0yLjIuMi1XaW4zMi0xNTAtU2V0dXAKLQotQXBwUHVibGlzaGVyPVB5dGhvbkxhYnMgYXQgRGlnaXRhbCBDcmVhdGlvbnMKLUFwcFB1Ymxpc2hlclVSTD1odHRwOi8vd3d3LnB5dGhvbi5vcmcKLUFwcFN1cHBvcnRVUkw9aHR0cDovL3d3dy5weXRob24ub3JnCi1BcHBVcGRhdGVzVVJMPWh0dHA6Ly93d3cucHl0aG9uLm9yZwotCi1BbHdheXNDcmVhdGVVbmluc3RhbGxJY29uPXRydWUKLUNoYW5nZXNBc3NvY2lhdGlvbnM9dHJ1ZQotVW5pbnN0YWxsTG9nTW9kZT1uZXcKLUFsbG93Tm9JY29ucz10cnVlCi1BZG1pblByaXZpbGVnZXNSZXF1aXJlZD10cnVlCi1Vbmluc3RhbGxEaXNwbGF5SWNvbj17YXBwfVxweWMuaWNvCi1XaXphcmREZWJ1Zz1mYWxzZQotCi07IFRoZSBmZXdlciBzY3JlZW5zIHRoZSBiZXR0ZXI7IGxlYXZlIHRoZXNlIGNvbW1lbnRlZC4KLQotQ29tcHJlc3Npb249YnppcAotSW5mb0JlZm9yZUZpbGU9TElDRU5TRS50eHQKLTtJbmZvQmVmb3JlRmlsZT1NaXNjXE5FV1MKLQotOyB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIGlmIHlvdSB3YW50IHlvdXIgaW5zdGFsbGF0aW9uIHRvIHJ1biBvbiBOVCAzLjUxIHRvby4KLTsgTWluVmVyc2lvbj00LDMuNTEKLQotW1R5cGVzXQotTmFtZTogbm9ybWFsOyBEZXNjcmlwdGlvbjogU2VsZWN0IGRlc2lyZWQgY29tcG9uZW50czsgRmxhZ3M6IGlzY3VzdG9tCi0KLVtDb21wb25lbnRzXQotTmFtZTogbWFpbjsgRGVzY3JpcHRpb246IFB5dGhvbiBhbmQgV2luMzIgRXh0ZW5zaW9uczsgVHlwZXM6IG5vcm1hbAotTmFtZTogZG9jczsgRGVzY3JpcHRpb246IFB5dGhvbiBkb2N1bWVudGF0aW9uIChIVE1MKTsgVHlwZXM6IG5vcm1hbAotTmFtZTogdGs7IERlc2NyaXB0aW9uOiBUQ0wvVEssIHRraW50ZXIsIGFuZCBJZGxlOyBUeXBlczogbm9ybWFsCi1OYW1lOiB0b29sczsgRGVzY3JpcHRpb246IFB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzXCk7IFR5cGVzOiBub3JtYWwKLU5hbWU6IHRlc3Q7IERlc2NyaXB0aW9uOiBQeXRob24gdGVzdCBzdWl0ZSAoTGliXHRlc3RcKTsgVHlwZXM6IG5vcm1hbAotCi1bVGFza3NdCi1OYW1lOiBleHRlbnNpb25zOyBEZXNjcmlwdGlvbjogUmVnaXN0ZXIgZmlsZSBhc3NvY2lhdGlvbnMgKC5weSwgLnB5dywgLnB5YywgLnB5byk7IENvbXBvbmVudHM6IG1haW47IENoZWNrOiBJc0FkbWluTG9nZ2VkT24KLQotW0ZpbGVzXQotOyBDYXV0aW9uOiAgVXNpbmcgZm9yd2FyZCBzbGFzaGVzIGluc3RlYWQgc2NyZXdzIHVwIGluIGFtYXppbmcgd2F5cy4KLTsgVW5rbm93bjogIEJ5IHRoZSB0aW1lIENvbXBvbmVudHMgKGFuZCBvdGhlciBhdHRycykgYXJlIGFkZGVkIHRvIHRoZXNlIGxpbmVzLCB0aGV5J3JlCi07IGdvaW5nIHRvIGdldCBhd2Z1bGx5IGxvbmcuICBCdXQgZG9uJ3Qgc2VlIGEgd2F5IHRvIGNvbnRpbnVlIGxvZ2ljYWwgbGluZXMgYWNyb3NzCi07IHBoeXNpY2FsIGxpbmVzLgotCi1Tb3VyY2U6IExJQ0VOU0UudHh0OyBEZXN0RGlyOiB7YXBwfTsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZQotU291cmNlOiBSRUFETUUudHh0OyBEZXN0RGlyOiB7YXBwfTsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZQotU291cmNlOiBOZXdzLnR4dDsgRGVzdERpcjoge2FwcH07IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGUKLVNvdXJjZTogKi5pY287IERlc3REaXI6IHthcHB9OyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogcHl0aG9uLmV4ZTsgRGVzdERpcjoge2FwcH07IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLVNvdXJjZTogcHl0aG9udy5leGU7IERlc3REaXI6IHthcHB9OyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IHc5eHBvcGVuLmV4ZTsgRGVzdERpcjoge2FwcH07IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLQotCi1Tb3VyY2U6IERMTHNcdGNsODMuZGxsOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiB0awotU291cmNlOiBETExzXHRrODMuZGxsOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiB0awotU291cmNlOiB0Y2xcKi4qOyBEZXN0RGlyOiB7YXBwfVx0Y2w7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IHRrOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLQotU291cmNlOiBzeXNkaXJccHl0aG9uMjIuZGxsOyBEZXN0RGlyOiB7c3lzfTsgQ29weU1vZGU6IGFsd2F5c3NraXBpZnNhbWVvcm9sZGVyOyBDb21wb25lbnRzOiBtYWluOyBGbGFnczogc2hhcmVkZmlsZSByZXN0YXJ0cmVwbGFjZQotU291cmNlOiBzeXNkaXJcUHlXaW5UeXBlczIyLmRsbDsgRGVzdERpcjoge3N5c307IENvcHlNb2RlOiBhbHdheXNza2lwaWZzYW1lb3JvbGRlcjsgQ29tcG9uZW50czogbWFpbjsgRmxhZ3M6IHJlc3RhcnRyZXBsYWNlIHNoYXJlZGZpbGUKLVNvdXJjZTogc3lzZGlyXHB5dGhvbmNvbTIyLmRsbDsgRGVzdERpcjoge3N5c307IENvcHlNb2RlOiBhbHdheXNza2lwaWZzYW1lb3JvbGRlcjsgQ29tcG9uZW50czogbWFpbjsgRmxhZ3M6IHJlc3RhcnRyZXBsYWNlIHNoYXJlZGZpbGUKLQotU291cmNlOiBETExzXF9zb2NrZXQucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcX3NvY2tldC5saWI7IERlc3REaXI6IHthcHB9XGxpYnM7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLQotU291cmNlOiBETExzXF9zcmUucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcX3NyZS5saWI7IERlc3REaXI6IHthcHB9XGxpYnM7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLQotU291cmNlOiBETExzXF9zeW10YWJsZS5weWQ7IERlc3REaXI6IHthcHB9XERMTHM7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLVNvdXJjZTogbGlic1xfc3ltdGFibGUubGliOyBEZXN0RGlyOiB7YXBwfVxsaWJzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogRExMc1xfdGVzdGNhcGkucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcX3Rlc3RjYXBpLmxpYjsgRGVzdERpcjoge2FwcH1cbGliczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbgotCi1Tb3VyY2U6IERMTHNcX3RraW50ZXIucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiB0awotU291cmNlOiBsaWJzXF90a2ludGVyLmxpYjsgRGVzdERpcjoge2FwcH1cbGliczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogdGsKLQotU291cmNlOiBETExzXG1tYXAucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcbW1hcC5saWI7IERlc3REaXI6IHthcHB9XGxpYnM7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLQotU291cmNlOiBETExzXHBhcnNlci5weWQ7IERlc3REaXI6IHthcHB9XERMTHM7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLVNvdXJjZTogbGlic1xwYXJzZXIubGliOyBEZXN0RGlyOiB7YXBwfVxsaWJzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogRExMc1xweWV4cGF0LnB5ZDsgRGVzdERpcjoge2FwcH1cRExMczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbgotU291cmNlOiBsaWJzXHB5ZXhwYXQubGliOyBEZXN0RGlyOiB7YXBwfVxsaWJzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogRExMc1xzZWxlY3QucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcc2VsZWN0LmxpYjsgRGVzdERpcjoge2FwcH1cbGliczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbgotCi1Tb3VyY2U6IERMTHNcdW5pY29kZWRhdGEucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcdW5pY29kZWRhdGEubGliOyBEZXN0RGlyOiB7YXBwfVxsaWJzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogRExMc1x3aW5yZWcucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcd2lucmVnLmxpYjsgRGVzdERpcjoge2FwcH1cbGliczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbgotCi1Tb3VyY2U6IERMTHNcd2luc291bmQucHlkOyBEZXN0RGlyOiB7YXBwfVxETExzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IGxpYnNcd2luc291bmQubGliOyBEZXN0RGlyOiB7YXBwfVxsaWJzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogRExMc1x6bGliLnB5ZDsgRGVzdERpcjoge2FwcH1cRExMczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbgotU291cmNlOiBsaWJzXHpsaWIubGliOyBEZXN0RGlyOiB7YXBwfVxsaWJzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogbGlic1xweXRob24yMi5saWI7IERlc3REaXI6IHthcHB9XGxpYnM7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLQotU291cmNlOiBETExzXGV4cGF0LmRsbDsgRGVzdERpcjoge2FwcH1cRExMczsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbgotCi0KLQotU291cmNlOiBMaWJcKi5weTsgRGVzdERpcjoge2FwcH1cTGliOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi1Tb3VyY2U6IExpYlxjb21waWxlclwqLio7IERlc3REaXI6IHthcHB9XExpYlxjb21waWxlcjsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbjsgRmxhZ3M6IHJlY3Vyc2VzdWJkaXJzCi1Tb3VyY2U6IExpYlxkaXN0dXRpbHNcKi4qOyBEZXN0RGlyOiB7YXBwfVxMaWJcZGlzdHV0aWxzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLVNvdXJjZTogTGliXGVtYWlsXCouKjsgRGVzdERpcjoge2FwcH1cTGliXGVtYWlsOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLVNvdXJjZTogTGliXGVuY29kaW5nc1wqLio7IERlc3REaXI6IHthcHB9XExpYlxlbmNvZGluZ3M7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW47IEZsYWdzOiByZWN1cnNlc3ViZGlycwotU291cmNlOiBMaWJcaG90c2hvdFwqLio7IERlc3REaXI6IHthcHB9XExpYlxob3RzaG90OyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLVNvdXJjZTogTGliXGxpYi1vbGRcKi4qOyBEZXN0RGlyOiB7YXBwfVxMaWJcbGliLW9sZDsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbjsgRmxhZ3M6IHJlY3Vyc2VzdWJkaXJzCi1Tb3VyY2U6IExpYlx4bWxcKi4qOyBEZXN0RGlyOiB7YXBwfVxMaWJceG1sOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLVNvdXJjZTogTGliXGhvdHNob3RcKi4qOyBEZXN0RGlyOiB7YXBwfVxMaWJcaG90c2hvdDsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbjsgRmxhZ3M6IHJlY3Vyc2VzdWJkaXJzCi1Tb3VyY2U6IExpYlx0ZXN0XCouKjsgRGVzdERpcjoge2FwcH1cTGliXHRlc3Q7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IHRlc3Q7IEZsYWdzOiByZWN1cnNlc3ViZGlycwotU291cmNlOiBMaWJcdGtpbnRlclwqLnB5OyBEZXN0RGlyOiB7YXBwfVxMaWJcdGtpbnRlcjsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogdGs7IEZsYWdzOiByZWN1cnNlc3ViZGlycwotCi1Tb3VyY2U6IExpYlxzaXRlLXBhY2thZ2VzXFJFQURNRS50eHQ7IERlc3REaXI6IHthcHB9XExpYlxzaXRlLXBhY2thZ2VzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluCi0KLVNvdXJjZTogTGliXHNpdGUtcGFja2FnZXNcUHlXaW4zMi5jaG07IERlc3REaXI6IHthcHB9XExpYlxzaXRlLXBhY2thZ2VzOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBkb2NzCi1Tb3VyY2U6IExpYlxzaXRlLXBhY2thZ2VzXHdpbjMyXCouKjsgRGVzdERpcjoge2FwcH1cTGliXHNpdGUtcGFja2FnZXNcd2luMzI7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW47IEZsYWdzOiByZWN1cnNlc3ViZGlycwotU291cmNlOiBMaWJcc2l0ZS1wYWNrYWdlc1x3aW4zMmNvbVwqLio7IERlc3REaXI6IHthcHB9XExpYlxzaXRlLXBhY2thZ2VzXHdpbjMyY29tOyBDb3B5TW9kZTogYWx3YXlzb3ZlcndyaXRlOyBDb21wb25lbnRzOiBtYWluOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLVNvdXJjZTogTGliXHNpdGUtcGFja2FnZXNcd2luMzJjb21leHRcKi4qOyBEZXN0RGlyOiB7YXBwfVxMaWJcc2l0ZS1wYWNrYWdlc1x3aW4zMmNvbWV4dDsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogbWFpbjsgRmxhZ3M6IHJlY3Vyc2VzdWJkaXJzCi0KLVNvdXJjZTogaW5jbHVkZVwqLmg7IERlc3REaXI6IHthcHB9XGluY2x1ZGU7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IG1haW4KLQotU291cmNlOiBUb29sc1xpZGxlXCouKjsgRGVzdERpcjoge2FwcH1cVG9vbHNcaWRsZTsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogdGs7IEZsYWdzOiByZWN1cnNlc3ViZGlycwotCi1Tb3VyY2U6IFRvb2xzXHB5bmNoZVwqLio7IERlc3REaXI6IHthcHB9XFRvb2xzXHB5bmNoZTsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogdG9vbHM7IEZsYWdzOiByZWN1cnNlc3ViZGlycwotU291cmNlOiBUb29sc1xzY3JpcHRzXCouKjsgRGVzdERpcjoge2FwcH1cVG9vbHNcU2NyaXB0czsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogdG9vbHM7IEZsYWdzOiByZWN1cnNlc3ViZGlycwotU291cmNlOiBUb29sc1x3ZWJjaGVja2VyXCouKjsgRGVzdERpcjoge2FwcH1cVG9vbHNcd2ViY2hlY2tlcjsgQ29weU1vZGU6IGFsd2F5c292ZXJ3cml0ZTsgQ29tcG9uZW50czogdG9vbHM7IEZsYWdzOiByZWN1cnNlc3ViZGlycwotU291cmNlOiBUb29sc1x2ZXJzaW9uY2hlY2tcKi4qOyBEZXN0RGlyOiB7YXBwfVxUb29sc1x2ZXJzaW9uY2hlY2s7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IENvbXBvbmVudHM6IHRvb2xzOyBGbGFnczogcmVjdXJzZXN1YmRpcnMKLQotU291cmNlOiBEb2NcKi4qOyBEZXN0RGlyOiB7YXBwfVxEb2M7IENvcHlNb2RlOiBhbHdheXNvdmVyd3JpdGU7IEZsYWdzOiByZWN1cnNlc3ViZGlyczsgQ29tcG9uZW50czogZG9jcwotCi0KLVtJY29uc10KLU5hbWU6IHtncm91cH1cUHl0aG9uIChjb21tYW5kIGxpbmUpOyBGaWxlbmFtZToge2FwcH1ccHl0aG9uLmV4ZTsgV29ya2luZ0Rpcjoge2FwcH07IENvbXBvbmVudHM6IG1haW4KLU5hbWU6IHtncm91cH1cUHl0aG9uIE1hbnVhbHM7IEZpbGVuYW1lOiB7YXBwfVxEb2NcaW5kZXguaHRtbDsgV29ya2luZ0Rpcjoge2FwcH07IENvbXBvbmVudHM6IGRvY3MKLU5hbWU6IHtncm91cH1cV2luMzIgRXh0ZW5zaW9ucyBIZWxwOyBGaWxlbmFtZToge2FwcH1cTGliXHNpdGUtcGFja2FnZXNcUHlXaW4zMi5jaG07IFdvcmtpbmdEaXI6IHthcHB9XExpYlxzaXRlLXBhY2thZ2VzOyBDb21wb25lbnRzOiBkb2NzCi1OYW1lOiB7Z3JvdXB9XE1vZHVsZSBEb2NzOyBGaWxlbmFtZToge2FwcH1ccHl0aG9udy5leGU7IFdvcmtpbmdEaXI6IHthcHB9OyBQYXJhbWV0ZXJzOiAiIiJ7YXBwfVxUb29sc1xTY3JpcHRzXHB5ZG9jLnB5dyIiIjsgQ29tcG9uZW50czogdG9vbHMKLU5hbWU6IHtncm91cH1cSURMRSAoUHl0aG9uIEdVSSk7IEZpbGVuYW1lOiB7YXBwfVxweXRob253LmV4ZTsgV29ya2luZ0Rpcjoge2FwcH07IFBhcmFtZXRlcnM6ICIiInthcHB9XFRvb2xzXGlkbGVcaWRsZS5weXciIiI7IENvbXBvbmVudHM6IHRvb2xzCi0KLVtSZWdpc3RyeV0KLTsgUmVnaXN0ZXIgLnB5Ci1UYXNrczogZXh0ZW5zaW9uczsgUm9vdDogSEtDUjsgU3Via2V5OiAucHk7IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZU5hbWU6IDsgVmFsdWVEYXRhOiBQeXRob24gRmlsZTsgRmxhZ3M6IHVuaW5zZGVsZXRldmFsdWUKLVRhc2tzOiBleHRlbnNpb25zOyBSb290OiBIS0NSOyBTdWJrZXk6IC5weTsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogQ29udGVudCBUeXBlOyBWYWx1ZURhdGE6IHRleHQvcGxhaW47IEZsYWdzOiB1bmluc2RlbGV0ZXZhbHVlCi1UYXNrczogZXh0ZW5zaW9uczsgUm9vdDogSEtDUjsgU3Via2V5OiBQeXRob24gRmlsZTsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogOyBWYWx1ZURhdGE6IFB5dGhvbiBGaWxlOyBGbGFnczogdW5pbnNkZWxldGVrZXkKLVRhc2tzOiBleHRlbnNpb25zOyBSb290OiBIS0NSOyBTdWJrZXk6IFB5dGhvbiBGaWxlXERlZmF1bHRJY29uOyBWYWx1ZVR5cGU6IHN0cmluZzsgVmFsdWVOYW1lOiA7IFZhbHVlRGF0YToge2FwcH1cUHkuaWNvCi1UYXNrczogZXh0ZW5zaW9uczsgUm9vdDogSEtDUjsgU3Via2V5OiBQeXRob24gRmlsZVxzaGVsbFxvcGVuXGNvbW1hbmQ7IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZU5hbWU6IDsgVmFsdWVEYXRhOiAiIiJ7YXBwfVxweXRob24uZXhlIiIgIiIlMSIiICUqIgotCi07IFJlZ2lzdGVyIC5weWMKLVRhc2tzOiBleHRlbnNpb25zOyBSb290OiBIS0NSOyBTdWJrZXk6IC5weWM7IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZU5hbWU6IDsgVmFsdWVEYXRhOiBQeXRob24gQ29tcGlsZWRGaWxlOyBGbGFnczogdW5pbnNkZWxldGV2YWx1ZQotVGFza3M6IGV4dGVuc2lvbnM7IFJvb3Q6IEhLQ1I7IFN1YmtleTogUHl0aG9uIENvbXBpbGVkRmlsZTsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogOyBWYWx1ZURhdGE6IENvbXBpbGVkIFB5dGhvbiBGaWxlOyBGbGFnczogdW5pbnNkZWxldGVrZXkKLVRhc2tzOiBleHRlbnNpb25zOyBSb290OiBIS0NSOyBTdWJrZXk6IFB5dGhvbiBDb21waWxlZEZpbGVcRGVmYXVsdEljb247IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZU5hbWU6IDsgVmFsdWVEYXRhOiB7YXBwfVxweWMuaWNvCi1UYXNrczogZXh0ZW5zaW9uczsgUm9vdDogSEtDUjsgU3Via2V5OiBQeXRob24gQ29tcGlsZWRGaWxlXHNoZWxsXG9wZW5cY29tbWFuZDsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogOyBWYWx1ZURhdGE6ICIiInthcHB9XHB5dGhvbi5leGUiIiAiIiUxIiIgJSoiCi0KLTsgUmVnaXN0ZXIgLnB5bwotVGFza3M6IGV4dGVuc2lvbnM7IFJvb3Q6IEhLQ1I7IFN1YmtleTogLnB5bzsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogOyBWYWx1ZURhdGE6IFB5dGhvbiBDb21waWxlZEZpbGU7IEZsYWdzOiB1bmluc2RlbGV0ZXZhbHVlCi0KLTsgUmVnaXN0ZXIgLnB5dwotVGFza3M6IGV4dGVuc2lvbnM7IFJvb3Q6IEhLQ1I7IFN1YmtleTogLnB5dzsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogOyBWYWx1ZURhdGE6IFB5dGhvbiBOb0NvbkZpbGU7IEZsYWdzOiB1bmluc2RlbGV0ZXZhbHVlCi1UYXNrczogZXh0ZW5zaW9uczsgUm9vdDogSEtDUjsgU3Via2V5OiAucHl3OyBWYWx1ZVR5cGU6IHN0cmluZzsgVmFsdWVOYW1lOiBDb250ZW50IFR5cGU7IFZhbHVlRGF0YTogdGV4dC9wbGFpbjsgRmxhZ3M6IHVuaW5zZGVsZXRldmFsdWUKLVRhc2tzOiBleHRlbnNpb25zOyBSb290OiBIS0NSOyBTdWJrZXk6IFB5dGhvbiBOb0NvbkZpbGU7IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZU5hbWU6IDsgVmFsdWVEYXRhOiBQeXRob24gRmlsZSAobm8gY29uc29sZSk7IEZsYWdzOiB1bmluc2RlbGV0ZWtleQotVGFza3M6IGV4dGVuc2lvbnM7IFJvb3Q6IEhLQ1I7IFN1YmtleTogUHl0aG9uIE5vQ29uRmlsZVxEZWZhdWx0SWNvbjsgVmFsdWVUeXBlOiBzdHJpbmc7IFZhbHVlTmFtZTogOyBWYWx1ZURhdGE6IHthcHB9XFB5LmljbwotVGFza3M6IGV4dGVuc2lvbnM7IFJvb3Q6IEhLQ1I7IFN1YmtleTogUHl0aG9uIE5vQ29uRmlsZVxzaGVsbFxvcGVuXGNvbW1hbmQ7IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZU5hbWU6IDsgVmFsdWVEYXRhOiAiIiJ7YXBwfVxweXRob253LmV4ZSIiICIiJTEiIiAlKiIKLQotCi07IFB5dGhvbiBSZWdpc3RyeSBLZXlzCi1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvbjsgRmxhZ3M6IHVuaW5zZGVsZXRla2V5aWZlbXB0eTsgQ2hlY2s6IElzQWRtaW5Mb2dnZWRPbgotUm9vdDogSEtMTTsgU3Via2V5OiBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZTsgRmxhZ3M6IHVuaW5zZGVsZXRla2V5aWZlbXB0eQotUm9vdDogSEtMTTsgU3Via2V5OiBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVwyLjI7IEZsYWdzOiB1bmluc2RlbGV0ZWtleWlmZW1wdHkKLVJvb3Q6IEhLTE07IFN1YmtleTogU09GVFdBUkVcUHl0aG9uXFB5dGhvbkNvcmVcMi4yXFB5dGhvblBhdGg7IFZhbHVlRGF0YTogInthcHB9XExpYjt7YXBwfVxETExzIjsgRmxhZ3M6IHVuaW5zZGVsZXRla2V5aWZlbXB0eQotUm9vdDogSEtMTTsgU3Via2V5OiBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVwyLjJcUHl0aG9uUGF0aFx3aW4zMjsgVmFsdWVEYXRhOiAie2FwcH1cbGliXHNpdGUtcGFja2FnZXNcd2luMzI7e2FwcH1cbGliXHNpdGUtcGFja2FnZXNcd2luMzJcbGliIjsgRmxhZ3M6IHVuaW5zZGVsZXRla2V5Ci1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXDIuMlxQeXRob25QYXRoXHdpbjMyY29tOyBWYWx1ZURhdGE6IEM6XFB5dGhvblxsaWJcc2l0ZS1wYWNrYWdlczsgRmxhZ3M6IHVuaW5zZGVsZXRla2V5Ci1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXDIuMlxNb2R1bGVzOyBGbGFnczogdW5pbnNkZWxldGVrZXlpZmVtcHR5Ci1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXDIuMlxNb2R1bGVzXHB5dGhvbmNvbTsgVmFsdWVEYXRhOiB7c3lzfVxweXRob25jb20yMi5kbGw7IEZsYWdzOiB1bmluc2RlbGV0ZWtleQotUm9vdDogSEtMTTsgU3Via2V5OiBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVwyLjJcTW9kdWxlc1xweXdpbnR5cGVzOyBWYWx1ZURhdGE6IHtzeXN9XFB5V2luVHlwZXMyMi5kbGw7IEZsYWdzOiB1bmluc2RlbGV0ZWtleQotUm9vdDogSEtMTTsgU3Via2V5OiBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVwyLjJcSW5zdGFsbFBhdGg7IFZhbHVlRGF0YToge2FwcH07IEZsYWdzOiB1bmluc2RlbGV0ZWtleWlmZW1wdHk7IFZhbHVlVHlwZTogc3RyaW5nCi1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXDIuMlxJbnN0YWxsUGF0aFxJbnN0YWxsR3JvdXA7IFZhbHVlRGF0YToge2dyb3VwfTsgRmxhZ3M6IHVuaW5zZGVsZXRla2V5Ci1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXDIuMlxIZWxwOyBGbGFnczogdW5pbnNkZWxldGVrZXlpZmVtcHR5Ci1Sb290OiBIS0xNOyBTdWJrZXk6IFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXDIuMlxIZWxwXE1haW4gUHl0aG9uIERvY3VtZW50YXRpb247IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZURhdGE6IHthcHB9XERvY1xpbmRleC5odG1sOyBGbGFnczogdW5pbnNkZWxldGVrZXk7IENvbXBvbmVudHM6IGRvY3MKLVJvb3Q6IEhLTE07IFN1YmtleTogU09GVFdBUkVcUHl0aG9uXFB5dGhvbkNvcmVcMi4yXEhlbHBcUHl0aG9uIFdpbjMyIERvY3VtZW50YXRpb247IFZhbHVlVHlwZTogc3RyaW5nOyBWYWx1ZURhdGE6IHthcHB9XGxpYlxzaXRlLXBhY2thZ2VzXFB5V2luMzIuY2htOyBGbGFnczogdW5pbnNkZWxldGVrZXk7IENvbXBvbmVudHM6IGRvY3MKLQotW19JU1Rvb2xdCi1FbmFibGVJU1g9dHJ1ZQotCi0KLVtDb2RlXQotUHJvZ3JhbSBTZXR1cDsKLQotRnVuY3Rpb24gSXNBZG1pbk5vdExvZ2dlZE9uKCk6IEJvb2xlYW47Ci1iZWdpbgotICBSZXN1bHQgOj0gTm90IElzQWRtaW5Mb2dnZWRPbigpOwotZW5kOwotCi1iZWdpbgotZW5kLgotCi0KLQotCi1bVW5pbnN0YWxsRGVsZXRlXQotTmFtZToge2FwcH1cTGliXGNvbXBpbGVyXCoucHljOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXGNvbXBpbGVyXCoucHlvOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXGNvbXBpbGVyOyBUeXBlOiBkaXJpZmVtcHR5Ci1OYW1lOiB7YXBwfVxMaWJcZGlzdHV0aWxzXGNvbW1hbmRcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZGlzdHV0aWxzXGNvbW1hbmRcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZGlzdHV0aWxzXGNvbW1hbmQ7IFR5cGU6IGRpcmlmZW1wdHkKLU5hbWU6IHthcHB9XExpYlxkaXN0dXRpbHNcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZGlzdHV0aWxzXCoucHlvOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXGRpc3R1dGlsczsgVHlwZTogZGlyaWZlbXB0eQotTmFtZToge2FwcH1cTGliXGVtYWlsXHRlc3RcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZW1haWxcdGVzdFwqLnB5bzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlxlbWFpbFx0ZXN0OyBUeXBlOiBkaXJpZmVtcHR5Ci1OYW1lOiB7YXBwfVxMaWJcZW1haWxcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZW1haWxcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZW1haWw7IFR5cGU6IGRpcmlmZW1wdHkKLU5hbWU6IHthcHB9XExpYlxlbmNvZGluZ3NcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcZW5jb2RpbmdzXCoucHlvOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXGVuY29kaW5nczsgVHlwZTogZGlyaWZlbXB0eQotTmFtZToge2FwcH1cTGliXGhvdHNob3RcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcaG90c2hvdFwqLnB5bzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlxob3RzaG90OyBUeXBlOiBkaXJpZmVtcHR5Ci1OYW1lOiB7YXBwfVxMaWJcbGliLW9sZFwqLnB5YzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlxsaWItb2xkXCoucHlvOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXGxpYi1vbGQ7IFR5cGU6IGRpcmlmZW1wdHkKLU5hbWU6IHthcHB9XExpYlx0a2ludGVyXCoucHljOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXHRraW50ZXJcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcdGtpbnRlcjsgVHlwZTogZGlyaWZlbXB0eQotTmFtZToge2FwcH1cTGliXHRlc3RcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJcdGVzdFwqLnB5bzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlx0ZXN0OyBUeXBlOiBkaXJpZmVtcHR5Ci1OYW1lOiB7YXBwfVxMaWJceG1sXGRvbVwqLnB5YzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlx4bWxcZG9tXCoucHlvOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXHhtbFxkb207IFR5cGU6IGRpcmlmZW1wdHkKLU5hbWU6IHthcHB9XExpYlx4bWxccGFyc2Vyc1wqLnB5YzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlx4bWxccGFyc2Vyc1wqLnB5bzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlx4bWxccGFyc2VyczsgVHlwZTogZGlyaWZlbXB0eQotTmFtZToge2FwcH1cTGliXHhtbFxzYXhcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxMaWJceG1sXHNheFwqLnB5bzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlx4bWxcc2F4OyBUeXBlOiBkaXJpZmVtcHR5Ci1OYW1lOiB7YXBwfVxMaWJceG1sXCoucHljOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cTGliXHhtbFwqLnB5bzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlx4bWw7IFR5cGU6IGRpcmlmZW1wdHkKLQotTmFtZToge2FwcH1cTGliXHNpdGUtcGFja2FnZXNcd2luMzI7IFR5cGU6IGZpbGVzYW5kb3JkaXJzCi1OYW1lOiB7YXBwfVxMaWJcc2l0ZS1wYWNrYWdlc1x3aW4zMmNvbTsgVHlwZTogZmlsZXNhbmRvcmRpcnMKLU5hbWU6IHthcHB9XExpYlxzaXRlLXBhY2thZ2VzXHdpbjMyY29tZXh0OyBUeXBlOiBmaWxlc2FuZG9yZGlycwotTmFtZToge2FwcH1cTGliXHNpdGUtcGFja2FnZXNccHl0aG9uY29tLnB5KjsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYlxzaXRlLXBhY2thZ2VzOyBUeXBlOiBkaXJpZmVtcHR5Ci0KLU5hbWU6IHthcHB9XExpYlwqLnB5YzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XExpYjsgVHlwZTogZGlyaWZlbXB0eQotCi1OYW1lOiB7YXBwfVxUb29sc1xweW5jaGVcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1xweW5jaGVcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1xweW5jaGU7IFR5cGU6IGRpcmlmZW1wdHkKLQotTmFtZToge2FwcH1cVG9vbHNcaWRsZVwqLnB5YzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XFRvb2xzXGlkbGVcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1xpZGxlOyBUeXBlOiBkaXJpZmVtcHR5Ci0KLU5hbWU6IHthcHB9XFRvb2xzXHNjcmlwdHNcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1xzY3JpcHRzXCoucHlvOyBUeXBlOiBmaWxlcwotTmFtZToge2FwcH1cVG9vbHNcc2NyaXB0czsgVHlwZTogZGlyaWZlbXB0eQotCi1OYW1lOiB7YXBwfVxUb29sc1x2ZXJzaW9uY2hlY2tcKi5weWM7IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1x2ZXJzaW9uY2hlY2tcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1x2ZXJzaW9uY2hlY2s7IFR5cGU6IGRpcmlmZW1wdHkKLQotTmFtZToge2FwcH1cVG9vbHNcd2ViY2hlY2tlclwqLnB5YzsgVHlwZTogZmlsZXMKLU5hbWU6IHthcHB9XFRvb2xzXHdlYmNoZWNrZXJcKi5weW87IFR5cGU6IGZpbGVzCi1OYW1lOiB7YXBwfVxUb29sc1x3ZWJjaGVja2VyOyBUeXBlOiBkaXJpZmVtcHR5Ci0KLU5hbWU6IHthcHB9XFRvb2xzOyBUeXBlOiBkaXJpZmVtcHR5Ci0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3B5dGhvbi52Y3Byb2ogYi9QQy9WUzcuMS9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGI0NDAxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL3B5dGhvbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9InB5dGhvbiINCi0JU2NjUHJvamVjdE5hbWU9InB5dGhvbiINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHB5dGhvbiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmNjcDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLlwuL3B5dGhvbi5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24ucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHB5dGhvbiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiY2NwMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbl9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbl9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxweXRob24iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAgL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsgL1ZTRVhUQ09NUF9WRVJCT1NFIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjY3AzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob24uZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VccHl0aG9uIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiY2NwMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuXC4vcHl0aG9uLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb24uaWNvIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5dGhvbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHl0aG9uMjAud3NlIGIvUEMvVlM3LjEvcHl0aG9uMjAud3NlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTdmNmFkMy4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9weXRob24yMC53c2UKKysrIC9kZXYvbnVsbApAQCAtMSwzMTE3ICswLDAgQEAKLURvY3VtZW50IFR5cGU6IFdTRQotaXRlbTogR2xvYmFsCi0gIFZlcnNpb249OS4wCi0gIFRpdGxlPVB5dGhvbiAyLjRhMQotICBGbGFncz0wMDAxMDEwMAotICBMYW5ndWFnZXM9NjUgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKLSAgSmFwYW5lc2UgRm9udCBOYW1lPU1TIEdvdGhpYwotICBKYXBhbmVzZSBGb250IFNpemU9MTAKLSAgU3RhcnQgR3JhZGllbnQ9MCAyNTUgMAotICBFbmQgR3JhZGllbnQ9MCAxMjggMAotICBXaW5kb3dzIEZsYWdzPTAwMDAwMTAwMDAwMDExMDEwMDEwMDEwMTAwMDAxMDEwCi0gIExvZyBQYXRobmFtZT0lTUFJTkRJUiVcSU5TVEFMTC5MT0cKLSAgTWVzc2FnZSBGb250PU1TIFNhbnMgU2VyaWYKLSAgRm9udCBTaXplPTgKLSAgUGFnZXMgTW9kaWZpZWQ9MDAwMTAwMDAwMTExMDEwMDAwMDAwMDAxMDAwMDAxMTEKLSAgRXh0cmEgUGFnZXM9MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAxMTAwMTAKLSAgRGlzayBGaWxlbmFtZT1TRVRVUAotICBQYXRjaCBGbGFncz0wMDAwMDAwMDAwMDAxMDAxCi0gIFBhdGNoIFRocmVzaG9sZD04NQotICBQYXRjaCBNZW1vcnk9NDAwMAotICBNSUYgUERGIFZlcnNpb249MS4wCi0gIE1JRiBTTVMgVmVyc2lvbj0yLjAKLSAgRVhFIEZpbGVuYW1lPVB5dGhvbi0yLjRhMS5leGUKLSAgRGlhbG9ncyBWZXJzaW9uPTgKLSAgVmVyc2lvbiBGaWxlPTIuNGExCi0gIFZlcnNpb24gRGVzY3JpcHRpb249UHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlCi0gIFZlcnNpb24gQ29weXJpZ2h0PakyMDAxLTIwMDcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KLSAgVmVyc2lvbiBDb21wYW55PVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gIENyeXN0YWwgRm9ybWF0PTEwMTExMTAwMTAxMTAwMDAwMDEwMDAxMDAxMDAxMDAxCi0gIFN0ZXAgVmlldz0mQWxsCi0gIFZhcmlhYmxlIE5hbWUxPV9XSVNFXwotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjE9V0lTRSByb290IGRpcmVjdG9yeQotICBWYXJpYWJsZSBEZWZhdWx0MT1DOlxQcm9ncmFtbWVcV2lzZSBJbnN0YWxsYXRpb24gU3lzdGVtCi0gIFZhcmlhYmxlIEZsYWdzMT0wMDAwMTAwMAotICBWYXJpYWJsZSBOYW1lMj1fVENMRElSXwotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjI9VGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgVGNsL1RrIGluc3RhbGxhdGlvbgotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjI9bGl2ZXMuICBUaGlzIG11c3QgYmUgYSBzaWJsaW5nIG9mIHRoZSBQeXRob24KLSAgVmFyaWFibGUgRGVzY3JpcHRpb24yPWRpcmVjdG9yeS4KLSAgVmFyaWFibGUgRGVmYXVsdDI9dGNsODQKLSAgVmFyaWFibGUgRmxhZ3MyPTAwMDAxMDAwCi0gIFZhcmlhYmxlIE5hbWUzPV9ET0NfCi0gIFZhcmlhYmxlIERlc2NyaXB0aW9uMz1UaGUgdW5wYWNrZWQgSFRNTCBkb2MgZGlyZWN0b3J5LgotICBWYXJpYWJsZSBEZWZhdWx0Mz0uLlxodG1sCi0gIFZhcmlhYmxlIEZsYWdzMz0wMDAwMTAwMQotICBWYXJpYWJsZSBOYW1lND1fU1lTXwotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjQ9U3lzdGVtIGRpcmVjdG9yeSAod2hlcmUgdG8gZmluZCBNU1ZDUlQuRExMKQotICBWYXJpYWJsZSBEZWZhdWx0ND1DOlxXaW5kb3dzXFN5c3RlbQotICBWYXJpYWJsZSBWYWx1ZXM0PUM6XFdpbmRvd3NcU3lzdGVtCi0gIFZhcmlhYmxlIFZhbHVlczQ9QzpcV0lOTlRcU3lzdGVtMzIKLSAgVmFyaWFibGUgVmFsdWVzND1DOlxDb2RlXE1TRExMcwotICBWYXJpYWJsZSBWYWx1ZXM0PUM6XFdpbmRvd3NcU3lzdGVtMzIKLSAgVmFyaWFibGUgRmxhZ3M0PTAwMDAwMDEwCi0gIFZhcmlhYmxlIE5hbWU1PV9QWU1BSk9SXwotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjU9UHl0aG9uIG1ham9yIHZlcnNpb24gbnVtYmVyOyB0aGUgMiBpbiAyLjMuCi0gIFZhcmlhYmxlIERlZmF1bHQ1PTIKLSAgVmFyaWFibGUgRmxhZ3M1PTAwMDAxMDAwCi0gIFZhcmlhYmxlIE5hbWU2PV9QWU1JTk9SXwotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjY9UHl0aG9uIG1pbm9yIHZlcnNpb24gbnVtYmVyOyB0aGUgMyBpbiAyLjMKLSAgVmFyaWFibGUgRGVmYXVsdDY9MwotICBWYXJpYWJsZSBGbGFnczY9MDAwMDEwMDAKLSAgVmFyaWFibGUgTmFtZTc9X0RPQURNSU5fCi0gIFZhcmlhYmxlIERlc2NyaXB0aW9uNz1UaGUgaW5pdGlhbCB2YWx1ZSBmb3IgJURPQURNSU4lLgotICBWYXJpYWJsZSBEZXNjcmlwdGlvbjc9V2hlbiAwLCB3ZSBuZXZlciB0cnkgdG8gd3JpdGUgdW5kZXIgSEtMTSwKLSAgVmFyaWFibGUgRGVzY3JpcHRpb243PWFuZCBpbnN0YWxsIHRoZSBQeXRob24gKyBNUyBydW50aW1lIERMTHMgaW4KLSAgVmFyaWFibGUgRGVzY3JpcHRpb243PXRoZSBQeXRob24gZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIHN5c3RlbSBkaXIuCi0gIFZhcmlhYmxlIERlZmF1bHQ3PTEKLSAgVmFyaWFibGUgVmFsdWVzNz0xCi0gIFZhcmlhYmxlIFZhbHVlczc9MAotICBWYXJpYWJsZSBGbGFnczc9MDAwMDEwMTAKLSAgVmFyaWFibGUgTmFtZTg9X0FMSUFTTkFNRV8KLSAgVmFyaWFibGUgRmxhZ3M4PTAwMDAxMDAwCi0gIFZhcmlhYmxlIE5hbWU5PV9BTElBU1BBVEhfCi0gIFZhcmlhYmxlIEZsYWdzOT0wMDAwMTAwMAotICBWYXJpYWJsZSBOYW1lMTA9X0FMSUFTVFlQRV8KLSAgVmFyaWFibGUgRmxhZ3MxMD0wMDAwMTAwMAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9UFlWRVJfU1RSSU5HCi0gIFZhbHVlPTIuMwotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9V2hlbiB0aGUgdmVyc2lvbiBudW1iZXIgY2hhbmdlcywgc2V0IHRoZSBjb21waWxlcgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD12cmJscyBfUFlNQUpPUl8gYW5kICBfUFlNSU5PUl8uCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PU5vdGhpbmcgaW4gdGhlIHNjcmlwdCBiZWxvdyBzaG91bGQgbmVlZCBmaWRkbGluZyB0aGVuLgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1PdGhlciB0aGluZ3MgdGhhdCBuZWVkIGZpZGRsaW5nOgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD0gICAgUFlWRVJfU1RSSU5HIGFib3ZlLgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD0gICAgVGhlICJUaXRsZToiIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgR1VJLgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD0gICAgQnVpbGQgU2V0dGluZ3MgYW5kIFZlcnNpb24gUmVzb3VyY2Ugb24gc3RlcCA2IChGaW5pc2gpIG9mIHRoZSBJbnN0YWxsYXRpb24gRXhwZXJ0Ci1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PSAgICAgICAgQmUgc3VyZSB0byBzZWxlY3QgU3RlcHMtPkFsbCBvciB5b3UgbWF5IG5vdCBzZWUgdGhlc2UhCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1XaGVuIHRoZSB2ZXJzaW9uIG9mIFRjbC9UayBjaGFuZ2VzLCB0aGUgY29tcGlsZXIgdnJibAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1fVENMRElSXyBtYXkgYWxzbyBuZWVkIHRvIGJlIGNoYW5nZWQuCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9QVBQVElUTEUKLSAgVmFsdWU9UHl0aG9uICVQWVZFUl9TVFJJTkclCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVBZX1ZFUlNJT04gc2hvdWxkIGJlIG1ham9yLm1pbm9yIG9ubHk7IHVzZWQgdG8gY3JlYXRlIHRoZSByZWdpc3RyeSBrZXk7IG11c3QgbWF0Y2ggTVNfRExMX0lEIGluIHB5dGhvbl9udC5yYwotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9UFlfVkVSU0lPTgotICBWYWx1ZT0lX1BZTUFKT1JfJS4lX1BZTUlOT1JfJQotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1HUk9VUCBpcyB0aGUgU3RhcnQgbWVudSBncm91cCBuYW1lOyB1c2VyIGNhbiBvdmVycmlkZS4KLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPUdST1VQCi0gIFZhbHVlPVB5dGhvbiAlUFlfVkVSU0lPTiUKLSAgRmxhZ3M9MTAwMDAwMDAKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9TUFJTkRJUiBpcyB0aGUgYXBwIGRpcmVjdG9yeTsgdXNlciBjYW4gb3ZlcnJpZGUuCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1NQUlORElSCi0gIFZhbHVlPVB5dGhvbiVfUFlNQUpPUl8lJV9QWU1JTk9SXyUKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1ET0FETUlOCi0gIFZhbHVlPSVfRE9BRE1JTl8lCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUdpdmUgbm9uLWFkbWluIHVzZXJzIGEgY2hhbmNlIHRvIGFib3J0LgotZW5kCi1pdGVtOiBDaGVjayBDb25maWd1cmF0aW9uCi0gIEZsYWdzPTEwMDExMTExCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1ET0FETUlOCi0gIFZhbHVlPTAKLWVuZAotaXRlbTogRGlzcGxheSBNZXNzYWdlCi0gIFRpdGxlPURvaW5nIG5vbi1hZG1pbiBpbnN0YWxsCi0gIFRleHQ9VGhlIGN1cnJlbnQgbG9naW4gZG9lcyBub3QgaGF2ZSBBZG1pbmlzdHJhdG9yIFByaXZpbGVnZXMgb24gdGhpcyBtYWNoaW5lLiAgUHl0aG9uIHdpbGwgaW5zdGFsbCBpdHMgcmVnaXN0cnkgaW5mb3JtYXRpb24gaW50byB0aGUgcGVyLXVzZXIgYXJlYSBvbmx5IGZvciB0aGUgY3VycmVudCBsb2dpbiwgaW5zdGVhZCBvZiBpbnRvIHRoZSBwZXItbWFjaGluZSBhcmVhIGZvciBldmVyeSBhY2NvdW50IG9uIHRoaXMgbWFjaGluZS4gIFNvbWUgYWR2YW5jZWQgdXNlcyBvZiBQeXRob24gbWF5IG5vdCB3b3JrIGFzIGEgcmVzdWx0IChmb3IgZXhhbXBsZSwgcnVubmluZyBhIFB5dGhvbiBzY3JpcHQgYXMgYSBzZXJ2aWNlKS4KLSAgVGV4dD0KLSAgVGV4dD1JZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCBwbGVhc2UgY2xpY2sgQ2FuY2VsIHRvIGFib3J0IHRoaXMgaW5zdGFsbGF0aW9uLCBsb2cgb24gYXMgYW4gQWRtaW5pc3RyYXRvciwgYW5kIHN0YXJ0IHRoZSBpbnN0YWxsYXRpb24gYWdhaW4uCi0gIEZsYWdzPTAwMDAxMDAwCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9QkVHSU4gV0laQVJEIFNUVUZGIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PU5vdGUgZnJvbSBUaW06IHRoZSAic3RvcCIgb24gdGhlIG5leHQgbGluZSBpcyBhY3R1YWxseSAicGF1c2UiLgotZW5kCi1pdGVtOiBPcGVuL0Nsb3NlIElOU1RBTEwuTE9HCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUlmIHRoZSBkZXN0aW5hdGlvbiBzeXN0ZW0gZG9lcyBub3QgaGF2ZSBhIHdyaXRhYmxlIFdpbmRvd3NcU3lzdGVtIGRpcmVjdG9yeSwgc3lzdGVtIGZpbGVzIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgV2luZG93c1wgZGlyZWN0b3J5Ci1lbmQKLWl0ZW06IENoZWNrIGlmIEZpbGUvRGlyIEV4aXN0cwotICBQYXRobmFtZT0lU1lTJQotICBGbGFncz0xMDAwMDEwMAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9U1lTCi0gIFZhbHVlPSVXSU4lCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBDaGVjayBDb25maWd1cmF0aW9uCi0gIEZsYWdzPTEwMTExMDExCi1lbmQKLWl0ZW06IEdldCBSZWdpc3RyeSBLZXkgVmFsdWUKLSAgVmFyaWFibGU9Q09NTU9OCi0gIEtleT1TT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvbgotICBEZWZhdWx0PUM6XFByb2dyYW0gRmlsZXNcQ29tbW9uIEZpbGVzCi0gIFZhbHVlIE5hbWU9Q29tbW9uRmlsZXNEaXIKLSAgRmxhZ3M9MDAwMDAxMDAKLWVuZAotaXRlbTogR2V0IFJlZ2lzdHJ5IEtleSBWYWx1ZQotICBWYXJpYWJsZT1QUk9HUkFNX0ZJTEVTCi0gIEtleT1TT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvbgotICBEZWZhdWx0PUM6XFByb2dyYW0gRmlsZXMKLSAgVmFsdWUgTmFtZT1Qcm9ncmFtRmlsZXNEaXIKLSAgRmxhZ3M9MDAwMDAxMDAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPUVYUExPUkVSCi0gIFZhbHVlPTEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PU5vdGUgZnJvbSBUaW06ICBUaGUgV2l6YXJkIGhhcmRjb2QgIkM6IiBhdCB0aGUgc3RhcnQgb2YgdGhlIHJlcGxhY2VtZW50IHRleHQgZm9yIE1BSU5ESVIuCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRoYXQncyBub3QgYXBwcm9wcmlhdGUgaWYgdGhlIHN5c3RlbSBkcml2ZSBkb2Vzbid0IGhhcHBlbiB0byBiZSBDOi4KLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9SSByZW1vdmVkIHRoZSAiQzoiLCBhbmQgdGhhdCBkaWQgdGhlIHJpZ2h0IHRoaW5nIGZvciB0d28gcGVvcGxlIHdobyB0ZXN0ZWQgaXQgb24gbm9uLUM6IG1hY2hpbmVzLAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1idXQgaXQncyB1bmNsZWFyIHdoZXRoZXIgaXQgd2lsbCBhbHdheXMgZG8gdGhlIHJpZ2h0IHRoaW5nLgotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9TUFJTkRJUgotICBWYWx1ZT1cJU1BSU5ESVIlCi0gIEZsYWdzPTAwMDAxMTAwCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUJBQ0tVUCBpcyB0aGUgdmFyaWFibGUgdGhhdCBob2xkcyB0aGUgcGF0aCB0aGF0IGFsbCBiYWNrdXAgZmlsZXMgd2lsbCBiZSBjb3BpZWQgdG8gd2hlbiBvdmVyd3JpdHRlbgotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9QkFDS1VQCi0gIFZhbHVlPSVNQUlORElSJVxCQUNLVVAKLSAgRmxhZ3M9MTAwMDAwMDAKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9RE9CQUNLVVAgZGV0ZXJtaW5lcyBpZiBhIGJhY2t1cCB3aWxsIGJlIHBlcmZvcm1lZC4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIEEgKGRvIGJhY2t1cCkgb3IgQiAoZG8gbm90IGRvIGJhY2t1cCkKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPURPQkFDS1VQCi0gIFZhbHVlPUEKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9QlJBTkRJTkcgZGV0ZXJtaW5lcyBpZiB0aGUgaW5zdGFsbGF0aW9uIHdpbGwgYmUgYnJhbmRlZCB3aXRoIGEgbmFtZSBhbmQgY29tcGFueS4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgd3JpdHRlbiB0byB0aGUgSU5TVCBkaXJlY3RvcnkgKGluc3RhbGxhdGlvbiBtZWRpYSkuCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1CUkFORElORwotICBWYWx1ZT0wCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1CUkFORElORwotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IFJlYWQgSU5JIFZhbHVlCi0gIFZhcmlhYmxlPU5BTUUKLSAgUGF0aG5hbWU9JUlOU1QlXENVU1REQVRBLklOSQotICBTZWN0aW9uPVJlZ2lzdHJhdGlvbgotICBJdGVtPU5hbWUKLWVuZAotaXRlbTogUmVhZCBJTkkgVmFsdWUKLSAgVmFyaWFibGU9Q09NUEFOWQotICBQYXRobmFtZT0lSU5TVCVcQ1VTVERBVEEuSU5JCi0gIFNlY3Rpb249UmVnaXN0cmF0aW9uCi0gIEl0ZW09Q29tcGFueQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9TkFNRQotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9RE9CUkFORAotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IEdldCBTeXN0ZW0gSW5mb3JtYXRpb24KLSAgVmFyaWFibGU9TkFNRQotICBGbGFncz0wMDAwMDExMAotZW5kCi1pdGVtOiBHZXQgU3lzdGVtIEluZm9ybWF0aW9uCi0gIFZhcmlhYmxlPUNPTVBBTlkKLSAgRmxhZ3M9MDAwMDAxMTEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1FTkQgV0laQVJEIFNUVUZGIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1TZXQgdnJibHMgZm9yIHRoZSAiQWR2YW5jZWQgT3B0aW9ucyIgc3ViZGlhbG9nIG9mIENvbXBvbmVudHMuCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1TRUxFQ1RfQURNSU4KLSAgVmFsdWU9QQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9RE9BRE1JTgotICBWYWx1ZT0wCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1TRUxFQ1RfQURNSU4KLSAgVmFsdWU9QgotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRBU0tTIHZhbHVlczoKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9QTogUmVnaXN0ZXIgZmlsZSBleHRlbnNpb25zCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUI6IENyZWF0ZSBTdGFydCBNZW51IHNob3J0Y3V0cwotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9VEFTS1MKLSAgVmFsdWU9QUIKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUNPTVBPTkVOVFMgdmFsdWVzOgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1BOiBpbnRlcnByZXRlciBhbmQgbGlicmFyaWVzCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUI6IFRjbC9UawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1DOiBkb2NzCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUQ6IHRvb2xzCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUU6IHRlc3Qgc3VpdGUKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QUJDREUKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PU1hcmNoIHRocnUgdGhlIHVzZXIgR1VJLgotZW5kCi1pdGVtOiBXaXphcmQgQmxvY2sKLSAgRGlyZWN0aW9uIFZhcmlhYmxlPURJUkVDVElPTgotICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkKLSAgQml0bWFwIFBhdGhuYW1lPS5caW5zdGFsbGVyLmJtcAotICBYIFBvc2l0aW9uPTkKLSAgWSBQb3NpdGlvbj0xMAotICBGaWxsZXIgQ29sb3I9MTExNzM3NTkKLSAgRGlhbG9nPVNlbGVjdCBEZXN0aW5hdGlvbiBEaXJlY3RvcnkKLSAgRGlhbG9nPUJhY2t1cCBSZXBsYWNlZCBGaWxlcwotICBEaWFsb2c9U2VsZWN0IENvbXBvbmVudHMKLSAgRGlhbG9nPVNlbGVjdCBQcm9ncmFtIE1hbmFnZXIgR3JvdXAKLSAgVmFyaWFibGU9Ci0gIFZhcmlhYmxlPQotICBWYXJpYWJsZT0KLSAgVmFyaWFibGU9VEFTS1MKLSAgVmFsdWU9Ci0gIFZhbHVlPQotICBWYWx1ZT0KLSAgVmFsdWU9QgotICBDb21wYXJlPTAKLSAgQ29tcGFyZT0wCi0gIENvbXBhcmU9MAotICBDb21wYXJlPTMKLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPURJU1BMQVkKLSAgVmFsdWU9U3RhcnQgSW5zdGFsbGF0aW9uCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1TVU1NQVJZCi0gIFZhbHVlPUluc3RhbGwgZGlyZWN0b3J5OiAgJU1BSU5ESVIlJUNSTEYlCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9U0VMRUNUX0FETUlOCi0gIFZhbHVlPUEKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9JUNSTEYlRG9pbmcgYWRtaW4gaW5zdGFsbC4lQ1JMRiUKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRWxzZSBTdGF0ZW1lbnQKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9JUNSTEYlRG9pbmcgbm9uLWFkbWluIGluc3RhbGwuJUNSTEYlCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPURPQkFDS1VQCi0gIFZhbHVlPUEKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9JUNSTEYlTWFrZSBiYWNrdXBzLCBpbnRvICVCQUNLVVAlJUNSTEYlCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1TVU1NQVJZCi0gIFZhbHVlPSVDUkxGJURvbid0IG1ha2UgYmFja3Vwcy4lQ1JMRiUKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9U1VNTUFSWQotICBWYWx1ZT0lQ1JMRiVDb21wb25lbnRzOiVDUkxGJQotICBGbGFncz0wMDAwMDAwMQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9Q09NUE9ORU5UUwotICBWYWx1ZT1BCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1TVU1NQVJZCi0gIFZhbHVlPSAgICBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGxpYnJhcmllcyVDUkxGJQotICBGbGFncz0wMDAwMDAwMQotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QgotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9U1VNTUFSWQotICBWYWx1ZT0gICAgVGNsL1RrIChUa2ludGVyLCBJRExFLCBweWRvYyklQ1JMRiUKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1DT01QT05FTlRTCi0gIFZhbHVlPUMKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9ICAgIFB5dGhvbiBkb2N1bWVudGF0aW9uJUNSTEYlCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9Q09NUE9ORU5UUwotICBWYWx1ZT1ECi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1TVU1NQVJZCi0gIFZhbHVlPSAgICBUb29sIGFuZCB1dGlsaXR5IHNjcmlwdHMlQ1JMRiUKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1DT01QT05FTlRTCi0gIFZhbHVlPUUKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9ICAgIFB5dGhvbiB0ZXN0IHN1aXRlJUNSTEYlCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPVRBU0tTCi0gIFZhbHVlPUEKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9JUNSTEYlUmVnaXN0ZXIgZmlsZSBleHRlbnNpb25zLiVDUkxGJQotICBGbGFncz0wMDAwMDAwMQotZW5kCi1pdGVtOiBFbHNlIFN0YXRlbWVudAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9U1VNTUFSWQotICBWYWx1ZT0lQ1JMRiVEb24ndCByZWdpc3RlciBmaWxlIGV4dGVuc2lvbnMuJUNSTEYlCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPVRBU0tTCi0gIFZhbHVlPUIKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9JUNSTEYlU3RhcnQgTWVudSBncm91cDogICVHUk9VUCUlQ1JMRiUKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRWxzZSBTdGF0ZW1lbnQKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPVNVTU1BUlkKLSAgVmFsdWU9JUNSTEYlTm8gU3RhcnQgTWVudSBzaG9ydGN1dHMuJUNSTEYlCi0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEN1c3RvbSBEaWFsb2cgU2V0Ci0gIE5hbWU9U2VsZWN0IERlc3RpbmF0aW9uIERpcmVjdG9yeQotICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkKLSAgaXRlbTogRGlhbG9nCi0gICAgVGl0bGU9JUFQUFRJVExFJSBJbnN0YWxsYXRpb24KLSAgICBUaXRsZSBGcmVuY2g9SW5zdGFsbGF0aW9uIGRlICVBUFBUSVRMRSUKLSAgICBUaXRsZSBHZXJtYW49SW5zdGFsbGF0aW9uIHZvbiAlQVBQVElUTEUlCi0gICAgVGl0bGUgU3BhbmlzaD1JbnN0YWxhY2nzbiBkZSAlQVBQVElUTEUlCi0gICAgVGl0bGUgSXRhbGlhbj1JbnN0YWxsYXppb25lIGRpICVBUFBUSVRMRSUKLSAgICBXaWR0aD0zMzkKLSAgICBIZWlnaHQ9MjgwCi0gICAgRm9udCBOYW1lPUhlbHYKLSAgICBGb250IFNpemU9OAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTg4IDIzNCAyNDQgMjUzCi0gICAgICBWYXJpYWJsZT1ESVJFQ1RJT04KLSAgICAgIFZhbHVlPU4KLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD0mTmV4dCA+Ci0gICAgICBUZXh0IEZyZW5jaD0mU3VpdGUgPgotICAgICAgVGV4dCBHZXJtYW49JldlaXRlciA+Ci0gICAgICBUZXh0IFNwYW5pc2g9JlNpZ3VpZW50ZSA+Ci0gICAgICBUZXh0IEl0YWxpYW49JkF2YW50aSA+Ci0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0yNjQgMjM0IDMyMCAyNTMKLSAgICAgIEFjdGlvbj0zCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9JkNhbmNlbAotICAgICAgVGV4dCBGcmVuY2g9JkFubnVsZXIKLSAgICAgIFRleHQgR2VybWFuPSZBYmJyZWNoZW4KLSAgICAgIFRleHQgU3BhbmlzaD0mQ2FuY2VsYXIKLSAgICAgIFRleHQgSXRhbGlhbj0mQW5udWxsYQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgUmVjdGFuZ2xlPTEwIDIyNSAzMjAgMjI2Ci0gICAgICBBY3Rpb249MwotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTExCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTA4IDExIDMyMyAzMwotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBGbGFncz0wMDAwMDAwMDAwMDAwMDAxCi0gICAgICBOYW1lPVRpbWVzIE5ldyBSb21hbgotICAgICAgRm9udCBTdHlsZT0tMjQgMCAwIDAgNzAwIDI1NSAwIDAgMCAzIDIgMSAxOAotICAgICAgVGV4dD1TZWxlY3QgRGVzdGluYXRpb24gRGlyZWN0b3J5Ci0gICAgICBUZXh0IEZyZW5jaD1T6WxlY3Rpb25uZXIgbGUgculwZXJ0b2lyZSBkZSBkZXN0aW5hdGlvbgotICAgICAgVGV4dCBHZXJtYW49WmllbHZlcnplaWNobmlzIHfkaGxlbgotICAgICAgVGV4dCBTcGFuaXNoPVNlbGVjY2lvbmUgZWwgZGlyZWN0b3JpbyBkZSBkZXN0aW5vCi0gICAgICBUZXh0IEl0YWxpYW49U2VsZXppb25hcmUgRGlyZWN0b3J5IGRpIGRlc3RpbmF6aW9uZQotICAgIGVuZAotICAgIGl0ZW06IExpc3Rib3gKLSAgICAgIFJlY3RhbmdsZT0xMDggNTggMzIxIDIxOQotICAgICAgVmFyaWFibGU9TUFJTkRJUgotICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMTAwMDAwMDEwMDAwMDAwMTAxMDAwMDAxCi0gICAgICBGbGFncz0wMDAwMTEwMDAwMDAxMDEwCi0gICAgICBUZXh0PSVNQUlORElSJQotICAgICAgVGV4dD0KLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMDggNDAgMzEzIDU4Ci0gICAgICBFbmFibGVkIENvbG9yPTAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9UGxlYXNlIHNlbGVjdCBhIGRpcmVjdG9yeSBmb3IgdGhlICVBUFBUSVRMRSUgZmlsZXMuCi0gICAgZW5kCi0gIGVuZAotICBpdGVtOiBEaWFsb2cKLSAgICBUaXRsZT1TZWxlY3QgRGVzdGluYXRpb24gRGlyZWN0b3J5Ci0gICAgVGl0bGUgRnJlbmNoPVPpbGVjdGlvbm5lciBsZSBy6XBlcnRvaXJlIGRlIGRlc3RpbmF0aW9uCi0gICAgVGl0bGUgR2VybWFuPVppZWx2ZXJ6ZWljaG5pcyB35GhsZW4KLSAgICBUaXRsZSBTcGFuaXNoPVNlbGVjY2lvbmUgZWwgZGlyZWN0b3JpbyBkZSBkZXN0aW5vCi0gICAgVGl0bGUgSXRhbGlhbj1TZWxlemlvbmFyZSBEaXJlY3RvcnkgZGkgZGVzdGluYXppb25lCi0gICAgV2lkdGg9Mjc2Ci0gICAgSGVpZ2h0PTIxNgotICAgIEZvbnQgTmFtZT1IZWx2Ci0gICAgRm9udCBTaXplPTgKLSAgICBpdGVtOiBMaXN0Ym94Ci0gICAgICBSZWN0YW5nbGU9NiA2IDIwNCAxODYKLSAgICAgIFZhcmlhYmxlPU1BSU5ESVIKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDEwMDAwMDAxMDAwMDAwMDEwMTAwMDAwMAotICAgICAgRmxhZ3M9MDAwMDExMDAwMDEwMDAxMAotICAgICAgVGV4dD0lTUFJTkRJUiUKLSAgICAgIFRleHQgRnJlbmNoPSVNQUlORElSJQotICAgICAgVGV4dCBHZXJtYW49JU1BSU5ESVIlCi0gICAgICBUZXh0IFNwYW5pc2g9JU1BSU5ESVIlCi0gICAgICBUZXh0IEl0YWxpYW49JU1BSU5ESVIlCi0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0yMDkgOCAyNjUgMjYKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD1PSwotICAgICAgVGV4dCBGcmVuY2g9T0sKLSAgICAgIFRleHQgR2VybWFuPU9LCi0gICAgICBUZXh0IFNwYW5pc2g9QWNlcHRhcgotICAgICAgVGV4dCBJdGFsaWFuPU9LCi0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0yMDkgMzEgMjY1IDUwCi0gICAgICBWYXJpYWJsZT1NQUlORElSCi0gICAgICBWYWx1ZT0lTUFJTkRJUl9TQVZFJQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBGbGFncz0wMDAwMDAwMDAwMDAwMDAxCi0gICAgICBUZXh0PUNhbmNlbAotICAgICAgVGV4dCBGcmVuY2g9QW5udWxlcgotICAgICAgVGV4dCBHZXJtYW49QWJicmVjaGVuCi0gICAgICBUZXh0IFNwYW5pc2g9Q2FuY2VsYXIKLSAgICAgIFRleHQgSXRhbGlhbj1Bbm51bGxhCi0gICAgZW5kCi0gIGVuZAotZW5kCi1pdGVtOiBDdXN0b20gRGlhbG9nIFNldAotICBOYW1lPUJhY2t1cCBSZXBsYWNlZCBGaWxlcwotICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkKLSAgaXRlbTogRGlhbG9nCi0gICAgVGl0bGU9JUFQUFRJVExFJSBJbnN0YWxsYXRpb24KLSAgICBUaXRsZSBGcmVuY2g9RmljaGllcnMgZGUgU2F1dmVnYXJkZSBSZW1wbGFj6XMKLSAgICBUaXRsZSBHZXJtYW49U2ljaGVydW5nc2tvcGllIHZvbiBlcnNldHp0ZW4gRGF0ZWllbiBlcnN0ZWxsZW4KLSAgICBUaXRsZSBQb3J0dWd1ZXNlPUZpY2hlaXJvcyBzdWJzdGl0de1kb3MgZGUgc2VndXJhbudhCi0gICAgVGl0bGUgU3BhbmlzaD1Db3BpYXMgZGUgc2VndXJpZGFkIGRlIGxvcyBhcmNoaXZvcyByZWVtcGxhemFkb3MKLSAgICBUaXRsZSBJdGFsaWFuPUJhY2t1cCBmaWxlIHNvc3RpdHVpdGkKLSAgICBUaXRsZSBEYW5pc2g9U2lra2VyaGVkc2tvcGllcmluZyBhZiBlcnN0YXR0ZWRlIGZpbGVyCi0gICAgVGl0bGUgRHV0Y2g9VmVydmFuZ2VuIGJlc3RhbmRlbiBrb3Bp63JlbgotICAgIFRpdGxlIE5vcndlZ2lhbj1TaWtrZXJoZXRza29waWVyZSBlcnN0YXR0ZWRlIGZpbGVyCi0gICAgVGl0bGUgU3dlZGlzaD1T5GtlcmhldHNrb3BpZXJhIHV0Ynl0dGEgZmlsZXIKLSAgICBXaWR0aD0zNTAKLSAgICBIZWlnaHQ9MjgwCi0gICAgRm9udCBOYW1lPUhlbHYKLSAgICBGb250IFNpemU9OAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTg4IDIzNCAyNDQgMjUxCi0gICAgICBWYXJpYWJsZT1ESVJFQ1RJT04KLSAgICAgIFZhbHVlPU4KLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD0mTmV4dCA+Ci0gICAgICBUZXh0IEZyZW5jaD0mU3VpdmFudD4KLSAgICAgIFRleHQgR2VybWFuPSZXZWl0ZXI+Ci0gICAgICBUZXh0IFBvcnR1Z3Vlc2U9JlBy83hpbW8+Ci0gICAgICBUZXh0IFNwYW5pc2g9JlNpZ3VpZW50ZSA+Ci0gICAgICBUZXh0IEl0YWxpYW49JkF2YW50aSA+Ci0gICAgICBUZXh0IERhbmlzaD0mTuZzdGU+Ci0gICAgICBUZXh0IER1dGNoPSZWb2xnZW5kZT4KLSAgICAgIFRleHQgTm9yd2VnaWFuPSZOZXN0ZT4KLSAgICAgIFRleHQgU3dlZGlzaD0mTuRzdGEgPgotICAgIGVuZAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTMxIDIzNCAxODggMjUxCi0gICAgICBWYXJpYWJsZT1ESVJFQ1RJT04KLSAgICAgIFZhbHVlPUIKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMAotICAgICAgVGV4dD08ICZCYWNrCi0gICAgICBUZXh0IEZyZW5jaD08JlJldG91cgotICAgICAgVGV4dCBHZXJtYW49PCZadXL8Y2sKLSAgICAgIFRleHQgUG9ydHVndWVzZT08JlJldG9ybmFyCi0gICAgICBUZXh0IFNwYW5pc2g9PCZSZXRyb2NlZGVyCi0gICAgICBUZXh0IEl0YWxpYW49PCAmSW5kaWV0cm8KLSAgICAgIFRleHQgRGFuaXNoPTwmVGlsYmFnZQotICAgICAgVGV4dCBEdXRjaD08JlRlcnVnCi0gICAgICBUZXh0IE5vcndlZ2lhbj08JlRpbGJha2UKLSAgICAgIFRleHQgU3dlZGlzaD08ICZUaWxsYmFrYQotICAgIGVuZAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9Mjc4IDIzNCAzMzAgMjUxCi0gICAgICBBY3Rpb249MwotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PUNhbmNlbAotICAgICAgVGV4dCBGcmVuY2g9QW5udWxlcgotICAgICAgVGV4dCBHZXJtYW49QWJicmVjaGVuCi0gICAgICBUZXh0IFBvcnR1Z3Vlc2U9Q2FuY2VsYXIKLSAgICAgIFRleHQgU3BhbmlzaD1DYW5jZWxhcgotICAgICAgVGV4dCBJdGFsaWFuPUFubnVsbGEKLSAgICAgIFRleHQgRGFuaXNoPUFubnVsbGVyCi0gICAgICBUZXh0IER1dGNoPUFubnVsZXJlbgotICAgICAgVGV4dCBOb3J3ZWdpYW49QXZicnl0Ci0gICAgICBUZXh0IFN3ZWRpc2g9QXZicnl0Ci0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTEgMjIxIDMyOSAyMjMKLSAgICAgIEFjdGlvbj0zCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTEKLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMDggNDYgMzIwIDk4Ci0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9VGhpcyBpbnN0YWxsYXRpb24gcHJvZ3JhbSBjYW4gY3JlYXRlIGJhY2t1cCBjb3BpZXMgb2YgYWxsIGZpbGVzIHJlcGxhY2VkIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uLiBUaGVzZSBmaWxlcyB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgc29mdHdhcmUgaXMgdW5pbnN0YWxsZWQgYW5kIGEgcm9sbGJhY2sgaXMgcmVxdWVzdGVkLiAgSWYgYmFja3VwIGNvcGllcyBhcmUgbm90IGNyZWF0ZWQsIHlvdSB3aWxsIG9ubHkgYmUgYWJsZSB0byB1bmluc3RhbGwgdGhlIHNvZnR3YXJlIGFuZCBub3Qgcm9sbCB0aGUgc3lzdGVtIGJhY2sgdG8gYSBwcmV2aW91cyBzdGF0ZS4KLSAgICAgIFRleHQ9Ci0gICAgICBUZXh0PURvIHlvdSB3YW50IHRvIGNyZWF0ZSBiYWNrdXBzIG9mIHJlcGxhY2VkIGZpbGVzPwotICAgICAgVGV4dCBGcmVuY2g9TGUgcHJvZ3JhbW1lIGQnaW5zdGFsbGF0aW9uIHBldXQgY3LpZXIgZGVzIGNvcGllcyBkZSBzYXV2ZWdhcmRlIGRlIHRvdXMgbGVzIGZpY2hpZXJzIHJlbXBsYWPpcyBwZW5kYW50IGwnaW5zdGFsbGF0aW9uLiBDZXMgZmljaGllcnMgc29udCB1dGlsaXPpcyBhdSBjYXMgb/kgbGUgbG9naWNpZWwgZXN0IGTpc2luc3RhbGzpIGV0IHF1ZSBsJ29uIHByb2PoZGUg4CBsYSByZXByaXNlIGR1IHN5c3TobWUuIFNpIGxlcyBjb3BpZXMgZGUgc2F1dmVnYXJkZSBuZSBzb250IHBhcyBjcunpZXMsIG9uIG5lIHBvdXJyYSBxdWUgZOlzaW5zdGFsbGVyIGxlIGxvZ2ljaWVsIHNhbnMgcmVwcmVuZHJlIGxlIHN5c3TobWUg4CB1biDpdGF0IHBy6WPpZGVudC4gVm91bGV6LXZvdXMgY3LpZXIgdW5lIHNhdXZlZ2FyZGUgZGVzIGZpY2hpZXJzIHJlbXBsYWPpcyA/Ci0gICAgICBUZXh0IEdlcm1hbj1EaWVzZXMgSW5zdGFsbGF0aW9uc3Byb2dyYW1tIGthbm4gU2ljaGVydW5nc2tvcGllbiB2b24gYWxsZW4gd+RocmVuZCBkZXIgSW5zdGFsbGF0aW9uIGVyc2V0enRlbiBEYXRlaWVuIGVyc3RlbGxlbi4gRGllc2UgRGF0ZWllbiB3ZXJkZW4genVyIFL8Y2tn5G5naWdtYWNodW5nIGRlciBJbnN0YWxsYXRpb24gdW5kIGJlaSBBbmZvcmRlcnVuZyBlaW5lcyBSb2xsYmFja3MgdmVyd2VuZGV0LiBPaG5lIFNpY2hlcnVuZ3Nrb3BpZW4gaXN0IG51ciBlaW5lIFL8Y2tn5G5naWdtYWNodW5nIGRlciBJbnN0YWxsYXRpb24gbfZnbGljaCwgbmljaHQgYWJlciBlaW4gUm9sbGJhY2sgZGVzIFN5c3RlbXMuIFNpY2hlcnVuZ3Nrb3BpZW4gZGVyIGVyc2V0enRlbiBEYXRlaWVuIGVyc3RlbGxlbj8KLSAgICAgIFRleHQgUG9ydHVndWVzZT1Fc3RlIHByb2dyYW1hIGRlIGluc3RhbGHn428gcG9kZSBjcmlhciBj83BpYXMgZGUgc2VndXJhbudhIGRlIHRvZG9zIG9zIGZpY2hlaXJvcyBzdWJzdGl0de1kb3MgZHVyYW50ZSBhIGluc3RhbGHn428uIEVzdGVzIGZpY2hlaXJvcyBzZXLjbyB1dGlsaXphZG9zIHF1YW5kbyBvIHByb2dyYW1hIGZvciBkZXNpbnN0YWxhZG8gIGUgZm9yIHJlcXVpc2l0YWRhIHVtYSByZXRvbWFkYS4gU2UgYXMgY/NwaWFzIGRlIHNlZ3VyYW7nYSBu428gZm9yZW0gY3JpYWRhcywgc/MgcG9kZXLhIGRlc2luc3RhbGFyIG8gcHJvZ3JhbWEgZSBu428gcG9kZSByZXRvbWFyICB1bSBlc3RhZG8gYW50ZXJpb3IgZG8gc2lzdGVtYS4gRGVzZWphIGNyaWFyIGPzcGlhcyBkZSBzZWd1cmFu52EgZG9zIGZpY2hlaXJvcyBzdWJzdGl0de1kb3M/Ci0gICAgICBUZXh0IFNwYW5pc2g9RXN0ZSBwcm9ncmFtYSBkZSBpbnN0YWxhY2nzbiBwdWVkZSBjcmVhciBjb3BpYXMgZGUgc2VndXJpZGFkIGRlIHRvZG9zIGxvcyBhcmNoaXZvcyByZWVtcGxhemFkb3MgZHVyYW50ZSBsYSBpbnN0YWxhY2nzbi4gRXN0b3MgYXJjaGl2b3Mgc2UgdXRpbGl6YXLhbiBjdWFuZG8gc2UgZGVzaW5zdGFsZSBlbCBzb2Z0d2FyZSB5IHNlIHNvbGljaXRlIHZvbHZlciBhbCBlc3RhZG8gYW50ZXJpb3IuIFNpIG5vIHNlIGNyZWFuIGNvcGlhcyBkZSBzZWd1cmlkYWQsIPpuaWNhbWVudGUgcG9kcuEgZGVzaW5zdGFsYXIgZWwgc29mdHdhcmUgeSBubyBwb2Ry4SBkZXZvbHZlciBlbCBzaXN0ZW1hIGFsIGVzdGFkbyBhbnRlcmlvci4gv0Rlc2VhIGNyZWFyIGFyY2hpdm9zIGRlIHNlZ3VyaWRhZCBkZSBsb3MgYXJjaGl2b3MgcmVlbXBsYXphZG9zPwotICAgICAgVGV4dCBJdGFsaWFuPVF1ZXN0byBwcm9ncmFtbWEgZGkgaW5zdGFsbGF6aW9uZSBwdfIgY3JlYXJlIGNvcGllIGRpIGJhY2t1cCBkaSB0dXR0aSBpIGZpbGUgc29zdGl0dWl0aSBkdXJhbnRlIGySaW5zdGFsbGF6aW9uZS4gUXVlc3RpIGZpbGUgc2FyYW5ubyB1c2F0aSBxdWFuZG8gaWwgc29mdHdhcmUgc2Fy4CBkaXNpbnN0YWxsYXRvIGUgc2Fy4CByaWNoaWVzdG8gdW4gcml0b3JubyBhbGxvIHN0YXRvIHByZWNlZGVudGUuIFNlIG5vbiBjcmVpIGxlIGNvcGllIGRpIGJhY2t1cCwgcG90cmFpIHNvbG8gZGlzaW5zdGFsbGFyZSBpbCBzb2Z0d2FyZSwgbWEgbm9uIHBvdHJhaSByaXBvcnRhcmUgaWwgc2lzdGVtYSBhbGxvIHN0YXRvIHByZWNlZGVudGUuIFZ1b2kgY3JlYXJlIGkgZmlsZSBkaSBiYWNrdXAgZGVpIGZpbGUgc29zdGl0dWl0aT8KLSAgICAgIFRleHQgRGFuaXNoPURldHRlIGluc3RhbGxhdGlvbnNwcm9ncmFtIGthbiBvcHJldHRlIHNpa2tlcmhlZHNrb3BpZXIgYWYgYWxsZSBmaWxlciwgc29tIGVyc3RhdHRlcyB1bmRlciBpbnN0YWxsYXRpb25lbi4gRGlzc2UgZmlsZXIgYmVueXR0ZXMsIG7lciBzb2Z0d2FyZW4gZmplcm5lcywgb2cgZGVuIHRpZGxpZ2VyZSBzeXN0ZW1rb25maWd1cmF0aW9uIGdlbmV0YWJsZXJlcy4gSHZpcyBkZXIgaWtrZSBvcHJldHRlcyBzaWtrZXJoZWRza29waWVyLCBrYW4gZHUga3VuIGZqZXJuZSBkZW4gaW5zdGFsbGVyZWRlIHNvZnR3YXJlIG9nIGlra2UgZ2VuZXRhYmxlcmUgZGVuIHRpZGxpZ2VyZSBzeXN0ZW1rb25maWd1cmF0aW9uLiBWaWwgZHUgb3ByZXR0ZSBzaWtrZXJoZWRza29waWVyIGFmIGZpbGVyLCBzb20gZXJzdGF0dGVzPwotICAgICAgVGV4dCBEdXRjaD1EaXQgaW5zdGFsbGF0aWVwcm9ncmFtbWEga2FuIGtvcGll624gbWFrZW4gdmFuIGFsbGUgYmVzdGFuZGVuIGRpZSB0aWpkZW5zIGRlIGluc3RhbGxhdGllIHdvcmRlbiB2ZXJ2YW5nZW4uIERlemUgd29yZGVuIGRhbiBnZWJydWlrdCBhbHMgZGUgc29mdHdhcmUtaW5zdGFsbGF0aWUgb25nZWRhYW4gd29yZHQgZ2VtYWFrdCBlbiB1IGhldCBzeXN0ZWVtIHdpbHQgbGF0ZW4gdGVydWdrZXJlbiBuYWFyIGRlIG9vcnNwcm9ua2VsaWprZSBzdGFhdC4gQWxzIGVyIGdlZW4gYmFjay11cCBrb3BpZetuIHdvcmRlbiBnZW1hYWt0LCBrdW50IHUgZGUgc29mdHdhcmUgZW5rZWwgdmVyd2lqZGVyZW4gbWFhciBoZXQgc3lzdGVlbSBuaWV0IGluIGRlIG9vcnNwcm9ua2VsaWprZSBzdGFhdCB0ZXJ1Z2JyZW5nZW4uIFdpbHQgdSBlZW4gYmFjay11cCBtYWtlbiB2YW4gZGUgdmVydmFuZ2VuIGJlc3RhbmRlbj8KLSAgICAgIFRleHQgTm9yd2VnaWFuPURldHRlIGluc3RhbGxhc2pvbnNwcm9ncmFtbWV0IGthbiBsYWdlIHNpa2tlcmhldHNrb3BpZXIgYXYgYWxsZSBmaWxlciBzb20gYmxpciBlcnN0YXR0ZXQgdW5kZXIgaW5zdGFsbGFzam9uZW4uIERpc3NlIGZpbGVuZSB2aWwgdGFzIGkgYnJ1ayBu5XIgcHJvZ3JhbXZhcmVuIGVyIGF2aW5zdGFsbGVydCBvZyBkZXQgZXIgYmVob3YgZm9yIHRpbGJha2VzdGlsbGluZy4gSHZpcyBkZXQgaWtrZSBlciBsYWdldCBzaWtrZXJoZXRza29waWVyLCBrYW4gZHUga3VuIGF2aW5zdGFsbGVyZSBwcm9ncmFtdmFyZW4gb2cgaWtrZSBzdGlsbGUgc3lzdGVtZXQgdGlsYmFrZSB0aWwgdGlkbGlnZXJlIHN0YXR1cy4g2G5za2VyIGR1IOUgbGFnZSBzaWtrZXJoZXRza29waWVyIGF2IGRlIGZpbGVuZSBzb20gYmxpciBlcnN0YXR0ZXQgbuU/Ci0gICAgICBUZXh0IFN3ZWRpc2g9SW5zdGFsbGF0aW9uc3Byb2dyYW1tZXQga2FuIHNrYXBhIHPka2VyaGV0c2tvcGlvciBhdiBhbGxhIGZpbGVyIHNvbSBieXRzIHV0IHVuZGVyIGluc3RhbGxhdGlvbmVuLiBEZXNzYSBmaWxlciBrYW4gc2VkYW4gYW525G5kYXMgbuRyIHByb2dyYW12YXJhbiBhdmluc3RhbGxlcmFzIG9jaCBkdSBiZWfkciByb2xsYmFjay4gT20gZHUgZOUgaW50ZSBoYXIgbuVncmEgc+RrZXJoZXRza29waW9yIGthbiBkdSBiYXJhIGF2aW5zdGFsbGVyYSBwcm9ncmFtdmFyYW4sIGludGUg5XRlcnNrYXBhIHN5c3RlbWV0IGkgZGVzcyB0aWRpZ2FyZSBza2ljay4gVmlsbCBkdSBn9nJhIHPka2VyaGV0c2tvcGlvciBhdiBkZSBlcnNhdHRhIGZpbGVybmE/Ci0gICAgZW5kCi0gICAgaXRlbTogUmFkaW8gQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTQxIDEwNiAyNjUgMTM2Ci0gICAgICBWYXJpYWJsZT1ET0JBQ0tVUAotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAxMDAxCi0gICAgICBUZXh0PSZZZXMsIG1ha2UgYmFja3VwcwotICAgICAgVGV4dD1OJm8sIGRvIG5vdCBtYWtlIGJhY2t1cHMKLSAgICAgIFRleHQ9Ci0gICAgICBUZXh0IEZyZW5jaD0mT3VpCi0gICAgICBUZXh0IEZyZW5jaD1OJm9uCi0gICAgICBUZXh0IEZyZW5jaD0KLSAgICAgIFRleHQgR2VybWFuPSZKYQotICAgICAgVGV4dCBHZXJtYW49TiZlaW4KLSAgICAgIFRleHQgR2VybWFuPQotICAgICAgVGV4dCBQb3J0dWd1ZXNlPSZTaW0KLSAgICAgIFRleHQgUG9ydHVndWVzZT1O4yZvCi0gICAgICBUZXh0IFBvcnR1Z3Vlc2U9Ci0gICAgICBUZXh0IFNwYW5pc2g9JlPtCi0gICAgICBUZXh0IFNwYW5pc2g9TiZvCi0gICAgICBUZXh0IFNwYW5pc2g9Ci0gICAgICBUZXh0IEl0YWxpYW49JlPsCi0gICAgICBUZXh0IEl0YWxpYW49TiZvCi0gICAgICBUZXh0IEl0YWxpYW49Ci0gICAgICBUZXh0IERhbmlzaD0mSmEKLSAgICAgIFRleHQgRGFuaXNoPSZOZWoKLSAgICAgIFRleHQgRGFuaXNoPQotICAgICAgVGV4dCBEdXRjaD0mSmEKLSAgICAgIFRleHQgRHV0Y2g9TiZlZQotICAgICAgVGV4dCBEdXRjaD0KLSAgICAgIFRleHQgTm9yd2VnaWFuPSZKYQotICAgICAgVGV4dCBOb3J3ZWdpYW49Jk5laQotICAgICAgVGV4dCBOb3J3ZWdpYW49Ci0gICAgICBUZXh0IFN3ZWRpc2g9JkphCi0gICAgICBUZXh0IFN3ZWRpc2g9TiZlagotICAgICAgVGV4dCBTd2VkaXNoPQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgQ29udHJvbCBOYW1lPUJBQ0syCi0gICAgICBSZWN0YW5nbGU9MTA4IDE3MyAzMjAgMjA4Ci0gICAgICBBY3Rpb249MQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTExCi0gICAgICBUZXh0PUJhY2t1cCBGaWxlIERlc3RpbmF0aW9uIERpcmVjdG9yeQotICAgICAgVGV4dCBGcmVuY2g9UulwZXJ0b2lyZSBkZSBkZXN0aW5hdGlvbiBkZXMgZmljaGllcnMgZGUgc2F1dmVnYXJkZQotICAgICAgVGV4dCBHZXJtYW49WmllbHZlcnplaWNobmlzIGb8ciBkaWUgU2ljaGVydW5nc2RhdGVpCi0gICAgICBUZXh0IFBvcnR1Z3Vlc2U9RGlyZWN083JpbyBkZSBkZXN0aW5vIGRlIGZpY2hlaXJvIGRlIHNlZ3VyYW7nYQotICAgICAgVGV4dCBTcGFuaXNoPURpcmVjdG9yaW8gZGUgRGVzdGlubyBkZSBsb3MgQXJjaGl2b3MgZGUgU2VndXJpZGFkCi0gICAgICBUZXh0IEl0YWxpYW49RGlyZWN0b3J5IGRpIGRlc3RpbmF6aW9uZSBkZWkgZmlsZSBkaSBiYWNrdXAKLSAgICAgIFRleHQgRGFuaXNoPURlc3RpbmF0aW9uc2JpYmxpb3RlayB0aWwgc2lra2VyaGVkc2tvcGllcgotICAgICAgVGV4dCBEdXRjaD1Eb2VsZGlyZWN0b3J5IGJhY2t1cC1iZXN0YW5kCi0gICAgICBUZXh0IE5vcndlZ2lhbj1N5WxrYXRhbG9nIGZvciBzaWtrZXJoZXRza29waWVyCi0gICAgICBUZXh0IFN3ZWRpc2g9S2F0YWxvZyBm9nIgc+RrZXJoZXRza29waWVyYWRlIGZpbGVyCi0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIENvbnRyb2wgTmFtZT1CQUNLMwotICAgICAgUmVjdGFuZ2xlPTI2NSAxODUgMzE4IDIwMwotICAgICAgVmFyaWFibGU9QkFDS1VQX1NBVkUKLSAgICAgIFZhbHVlPSVCQUNLVVAlCi0gICAgICBEZXN0aW5hdGlvbiBEaWFsb2c9MQotICAgICAgQWN0aW9uPTIKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMAotICAgICAgVGV4dD1CJnJvd3NlLi4uCi0gICAgICBUZXh0IEZyZW5jaD1QJmFyY291cmlyCi0gICAgICBUZXh0IEdlcm1hbj1CJmzkdHRlcm4uLi4KLSAgICAgIFRleHQgUG9ydHVndWVzZT1QJnJvY3VyYXIKLSAgICAgIFRleHQgU3BhbmlzaD1WJmlzdWFsaXphci4uLgotICAgICAgVGV4dCBJdGFsaWFuPVNmb2dsaWEuLi4KLSAgICAgIFRleHQgRGFuaXNoPSZHZW5uZW1zZS4uLgotICAgICAgVGV4dCBEdXRjaD1CJmxhZGVyZW4uLi4KLSAgICAgIFRleHQgTm9yd2VnaWFuPUJsYSBpZ2plbm5vbQotICAgICAgVGV4dCBTd2VkaXNoPSZCbORkZHJhCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBDb250cm9sIE5hbWU9QkFDSzQKLSAgICAgIFJlY3RhbmdsZT0xMjkgMTg4IDI1NCAyMDAKLSAgICAgIERlc3RpbmF0aW9uIERpYWxvZz0yCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9JUJBQ0tVUCUKLSAgICAgIFRleHQgRnJlbmNoPSVCQUNLVVAlCi0gICAgICBUZXh0IEdlcm1hbj0lQkFDS1VQJQotICAgICAgVGV4dCBQb3J0dWd1ZXNlPSVCQUNLVVAlCi0gICAgICBUZXh0IFNwYW5pc2g9JUJBQ0tVUCUKLSAgICAgIFRleHQgSXRhbGlhbj0lQkFDS1VQJQotICAgICAgVGV4dCBEYW5pc2g9JUJBQ0tVUCUKLSAgICAgIFRleHQgRHV0Y2g9JUJBQ0tVUCUKLSAgICAgIFRleHQgTm9yd2VnaWFuPSVCQUNLVVAlCi0gICAgICBUZXh0IFN3ZWRpc2g9JUJBQ0tVUCUKLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMDggMTEgMzIzIDM2Ci0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIEZsYWdzPTAwMDAwMDAwMDAwMDAwMDEKLSAgICAgIE5hbWU9VGltZXMgTmV3IFJvbWFuCi0gICAgICBGb250IFN0eWxlPS0yNCAwIDAgMCA3MDAgMjU1IDAgMCAwIDMgMiAxIDE4Ci0gICAgICBUZXh0PUJhY2t1cCBSZXBsYWNlZCBGaWxlcwotICAgICAgVGV4dCBGcmVuY2g9U+lsZWN0aW9ubmVyIGxlcyBjb21wb3NhbnRzCi0gICAgICBUZXh0IEdlcm1hbj1Lb21wb25lbnRlbiBhdXN35GhsZW4KLSAgICAgIFRleHQgU3BhbmlzaD1TZWxlY2Npb25lIGNvbXBvbmVudGVzCi0gICAgICBUZXh0IEl0YWxpYW49U2VsZXppb25hcmUgaSBjb21wb25lbnRpCi0gICAgZW5kCi0gICAgaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gICAgICBWYXJpYWJsZT1ET0JBQ0tVUAotICAgICAgVmFsdWU9QgotICAgIGVuZAotICAgIGl0ZW06IFNldCBDb250cm9sIEF0dHJpYnV0ZQotICAgICAgQ29udHJvbCBOYW1lPUJBQ0szCi0gICAgICBPcGVyYXRpb249MQotICAgIGVuZAotICAgIGl0ZW06IFNldCBDb250cm9sIEF0dHJpYnV0ZQotICAgICAgQ29udHJvbCBOYW1lPUJBQ0s0Ci0gICAgICBPcGVyYXRpb249MQotICAgIGVuZAotICAgIGl0ZW06IEVsc2UgU3RhdGVtZW50Ci0gICAgZW5kCi0gICAgaXRlbTogU2V0IENvbnRyb2wgQXR0cmlidXRlCi0gICAgICBDb250cm9sIE5hbWU9QkFDSzMKLSAgICBlbmQKLSAgICBpdGVtOiBTZXQgQ29udHJvbCBBdHRyaWJ1dGUKLSAgICAgIENvbnRyb2wgTmFtZT1CQUNLNAotICAgIGVuZAotICAgIGl0ZW06IEVuZCBCbG9jawotICAgIGVuZAotICBlbmQKLSAgaXRlbTogRGlhbG9nCi0gICAgVGl0bGU9U2VsZWN0IERlc3RpbmF0aW9uIERpcmVjdG9yeQotICAgIFRpdGxlIEZyZW5jaD1DaG9pc2lzc2V6IGxlIHLpcGVydG9pcmUgZGUgZGVzdGluYXRpb24KLSAgICBUaXRsZSBHZXJtYW49WmllbHZlcnplaWNobmlzIHfkaGxlbgotICAgIFRpdGxlIFBvcnR1Z3Vlc2U9U2VsZWNjaW9uYXIgRGlyZWN083JpbyBkZSBEZXN0aW5vCi0gICAgVGl0bGUgU3BhbmlzaD1TZWxlY2Npb25lIGVsIERpcmVjdG9yaW8gZGUgRGVzdGlubwotICAgIFRpdGxlIEl0YWxpYW49U2VsZXppb25hIERpcmVjdG9yeSBkaSBkZXN0aW5hemlvbmUKLSAgICBUaXRsZSBEYW5pc2g9VuZsZyBEZXN0aW5hdGlvbnNiaWJsaW90ZWsKLSAgICBUaXRsZSBEdXRjaD1LaWVzIERvZWxkaXJlY3RvcnkKLSAgICBUaXRsZSBOb3J3ZWdpYW49VmVsZyBt5WxrYXRhbG9nCi0gICAgVGl0bGUgU3dlZGlzaD1W5GxqIGRlc3RpbmF0aW9uc2thbGF0b2cKLSAgICBXaWR0aD0yNzYKLSAgICBIZWlnaHQ9MjE2Ci0gICAgRm9udCBOYW1lPUhlbHYKLSAgICBGb250IFNpemU9OAotICAgIGl0ZW06IExpc3Rib3gKLSAgICAgIFJlY3RhbmdsZT02IDMgMjAwIDE4NgotICAgICAgVmFyaWFibGU9QkFDS1VQCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAxMDAwMDAwMTAwMDAwMDAxMDEwMDAwMDAKLSAgICAgIEZsYWdzPTAwMDAxMTAwMDAxMDAwMTAKLSAgICAgIFRleHQ9JUJBQ0tVUCUKLSAgICAgIFRleHQ9Ci0gICAgICBUZXh0IEZyZW5jaD0lQkFDS1VQJQotICAgICAgVGV4dCBGcmVuY2g9Ci0gICAgICBUZXh0IEdlcm1hbj0lQkFDS1VQJQotICAgICAgVGV4dCBHZXJtYW49Ci0gICAgICBUZXh0IFBvcnR1Z3Vlc2U9JUJBQ0tVUCUKLSAgICAgIFRleHQgUG9ydHVndWVzZT0KLSAgICAgIFRleHQgU3BhbmlzaD0lQkFDS1VQJQotICAgICAgVGV4dCBTcGFuaXNoPQotICAgICAgVGV4dCBJdGFsaWFuPSVCQUNLVVAlCi0gICAgICBUZXh0IEl0YWxpYW49Ci0gICAgICBUZXh0IERhbmlzaD0lQkFDS1VQJQotICAgICAgVGV4dCBEYW5pc2g9Ci0gICAgICBUZXh0IER1dGNoPSVCQUNLVVAlCi0gICAgICBUZXh0IER1dGNoPQotICAgICAgVGV4dCBOb3J3ZWdpYW49JUJBQ0tVUCUKLSAgICAgIFRleHQgTm9yd2VnaWFuPQotICAgICAgVGV4dCBTd2VkaXNoPSVCQUNLVVAlCi0gICAgICBUZXh0IFN3ZWRpc2g9Ci0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0yMDkgOCAyNjUgMjYKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD1PSwotICAgICAgVGV4dCBGcmVuY2g9T0sKLSAgICAgIFRleHQgR2VybWFuPU9LCi0gICAgICBUZXh0IFBvcnR1Z3Vlc2U9T0sKLSAgICAgIFRleHQgU3BhbmlzaD1BQ0VQVEFSCi0gICAgICBUZXh0IEl0YWxpYW49T0sKLSAgICAgIFRleHQgRGFuaXNoPU9LCi0gICAgICBUZXh0IER1dGNoPU9LCi0gICAgICBUZXh0IE5vcndlZ2lhbj1PSwotICAgICAgVGV4dCBTd2VkaXNoPU9LCi0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0yMDkgMzEgMjY1IDUwCi0gICAgICBWYXJpYWJsZT1CQUNLVVAKLSAgICAgIFZhbHVlPSVCQUNLVVBfU0FWRSUKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMAotICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD1DYW5jZWwKLSAgICAgIFRleHQgRnJlbmNoPUFubnVsZXIKLSAgICAgIFRleHQgR2VybWFuPUFiYnJlY2hlbgotICAgICAgVGV4dCBQb3J0dWd1ZXNlPUNhbmNlbGFyCi0gICAgICBUZXh0IFNwYW5pc2g9Q2FuY2VsYXIKLSAgICAgIFRleHQgSXRhbGlhbj1Bbm51bGxhCi0gICAgICBUZXh0IERhbmlzaD1TbGV0Ci0gICAgICBUZXh0IER1dGNoPUFubnVsZXJlbgotICAgICAgVGV4dCBOb3J3ZWdpYW49QXZicnl0Ci0gICAgICBUZXh0IFN3ZWRpc2g9QXZicnl0Ci0gICAgZW5kCi0gIGVuZAotZW5kCi1pdGVtOiBDdXN0b20gRGlhbG9nIFNldAotICBOYW1lPVNlbGVjdCBDb21wb25lbnRzCi0gIERpc3BsYXkgVmFyaWFibGU9RElTUExBWQotICBpdGVtOiBEaWFsb2cKLSAgICBUaXRsZT0lQVBQVElUTEUlIEluc3RhbGxhdGlvbgotICAgIFRpdGxlIEZyZW5jaD1JbnN0YWxsYXRpb24gZGUgJUFQUFRJVExFJQotICAgIFRpdGxlIEdlcm1hbj1JbnN0YWxsYXRpb24gdm9uICVBUFBUSVRMRSUKLSAgICBUaXRsZSBTcGFuaXNoPUluc3RhbGFjafNuIGRlICVBUFBUSVRMRSUKLSAgICBUaXRsZSBJdGFsaWFuPUluc3RhbGxhemlvbmUgZGkgJUFQUFRJVExFJQotICAgIFdpZHRoPTMzOQotICAgIEhlaWdodD0yODAKLSAgICBGb250IE5hbWU9SGVsdgotICAgIEZvbnQgU2l6ZT04Ci0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0xODggMjM0IDI0NCAyNTMKLSAgICAgIFZhcmlhYmxlPURJUkVDVElPTgotICAgICAgVmFsdWU9TgotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAxCi0gICAgICBUZXh0PSZOZXh0ID4KLSAgICAgIFRleHQgRnJlbmNoPSZTdWl0ZSA+Ci0gICAgICBUZXh0IEdlcm1hbj0mV2VpdGVyID4KLSAgICAgIFRleHQgU3BhbmlzaD0mU2lndWllbnRlID4KLSAgICAgIFRleHQgSXRhbGlhbj0mQXZhbnRpID4KLSAgICBlbmQKLSAgICBpdGVtOiBQdXNoIEJ1dHRvbgotICAgICAgUmVjdGFuZ2xlPTEzMSAyMzQgMTg4IDI1MwotICAgICAgVmFyaWFibGU9RElSRUNUSU9OCi0gICAgICBWYWx1ZT1CCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9PCAmQmFjawotICAgICAgVGV4dCBGcmVuY2g9PCAmUmV0b3VyCi0gICAgICBUZXh0IEdlcm1hbj08ICZadXL8Y2sKLSAgICAgIFRleHQgU3BhbmlzaD08ICZBdHLhcwotICAgICAgVGV4dCBJdGFsaWFuPTwgJkluZGlldHJvCi0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0yNjQgMjM0IDMyMCAyNTMKLSAgICAgIEFjdGlvbj0zCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9JkNhbmNlbAotICAgICAgVGV4dCBGcmVuY2g9JkFubnVsZXIKLSAgICAgIFRleHQgR2VybWFuPSZBYmJyZWNoZW4KLSAgICAgIFRleHQgU3BhbmlzaD0mQ2FuY2VsYXIKLSAgICAgIFRleHQgSXRhbGlhbj0mQW5udWxsYQotICAgIGVuZAotICAgIGl0ZW06IENoZWNrYm94Ci0gICAgICBSZWN0YW5nbGU9MTA4IDY2IDMxMyAxNTYKLSAgICAgIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAxMQotICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDExMAotICAgICAgVGV4dD1QeXRob24gaW50ZXJwcmV0ZXIgYW5kIGxpYnJhcmllcwotICAgICAgVGV4dD1UY2wvVGsgKFRraW50ZXIsIElETEUsIHB5ZG9jKQotICAgICAgVGV4dD1QeXRob24gSFRNTCBkb2NzCi0gICAgICBUZXh0PVB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzLykKLSAgICAgIFRleHQ9UHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykKLSAgICAgIFRleHQ9Ci0gICAgICBUZXh0IEZyZW5jaD1QeXRob24gaW50ZXJwcmV0ZXIsIGxpYnJhcnkgYW5kIElETEUKLSAgICAgIFRleHQgRnJlbmNoPVB5dGhvbiBIVE1MIGRvY3MKLSAgICAgIFRleHQgRnJlbmNoPVB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzLykKLSAgICAgIFRleHQgRnJlbmNoPVB5dGhvbiB0ZXN0IHN1aXRlIChMaWIvdGVzdC8pCi0gICAgICBUZXh0IEZyZW5jaD0KLSAgICAgIFRleHQgR2VybWFuPVB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyeSBhbmQgSURMRQotICAgICAgVGV4dCBHZXJtYW49UHl0aG9uIEhUTUwgZG9jcwotICAgICAgVGV4dCBHZXJtYW49UHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKQotICAgICAgVGV4dCBHZXJtYW49UHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykKLSAgICAgIFRleHQgR2VybWFuPQotICAgICAgVGV4dCBTcGFuaXNoPVB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyeSBhbmQgSURMRQotICAgICAgVGV4dCBTcGFuaXNoPVB5dGhvbiBIVE1MIGRvY3MKLSAgICAgIFRleHQgU3BhbmlzaD1QeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8pCi0gICAgICBUZXh0IFNwYW5pc2g9UHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykKLSAgICAgIFRleHQgU3BhbmlzaD0KLSAgICAgIFRleHQgSXRhbGlhbj1QeXRob24gaW50ZXJwcmV0ZXIsIGxpYnJhcnkgYW5kIElETEUKLSAgICAgIFRleHQgSXRhbGlhbj1QeXRob24gSFRNTCBkb2NzCi0gICAgICBUZXh0IEl0YWxpYW49UHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKQotICAgICAgVGV4dCBJdGFsaWFuPVB5dGhvbiB0ZXN0IHN1aXRlIChMaWIvdGVzdC8pCi0gICAgICBUZXh0IEl0YWxpYW49Ci0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTA4IDQ1IDMyMCA2MwotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PUNob29zZSB3aGljaCBjb21wb25lbnRzIHRvIGluc3RhbGwgYnkgY2hlY2tpbmcgdGhlIGJveGVzIGJlbG93LgotICAgICAgVGV4dCBGcmVuY2g9Q2hvaXNpc3NleiBsZXMgY29tcG9zYW50cyBxdWUgdm91cyB2b3VsZXogaW5zdGFsbGVyIGVuIGNvY2hhbnQgbGVzIGNhc2VzIGNpLWRlc3NvdXMuCi0gICAgICBUZXh0IEdlcm1hbj1X5GhsZW4gU2llIGRpZSB6dSBpbnN0YWxsaWVyZW5kZW4gS29tcG9uZW50ZW4sIGluZGVtIFNpZSBpbiBkaWUgZW50c3ByZWNoZW5kZW4gS+RzdGNoZW4ga2xpY2tlbi4KLSAgICAgIFRleHQgU3BhbmlzaD1FbGlqYSBsb3MgY29tcG9uZW50ZXMgcXVlIGRlc2VlIGluc3RhbGFyIG1hcmNhbmRvIGxvcyBjdWFkcm9zIGRlIGFiYWpvLgotICAgICAgVGV4dCBJdGFsaWFuPVNjZWdsaWVyZSBxdWFsaSBjb21wb25lbnRpIGluc3RhbGxhcmUgc2VsZXppb25hbmRvIGxlIGNhc2VsbGUgc290dG9zdGFudGkuCi0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0xODggMjAzIDI2OSAyMjAKLSAgICAgIERlc3RpbmF0aW9uIERpYWxvZz0xCi0gICAgICBBY3Rpb249MgotICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTExMTExMQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PUFkdmFuY2VkIE9wdGlvbnMgLi4uCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTAgMjI1IDMyMCAyMjYKLSAgICAgIEFjdGlvbj0zCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTEKLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMDggMTAgMzIzIDQzCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIEZsYWdzPTAwMDAwMDAwMDAwMDAwMDEKLSAgICAgIE5hbWU9VGltZXMgTmV3IFJvbWFuCi0gICAgICBGb250IFN0eWxlPS0yNCAwIDAgMCA3MDAgMjU1IDAgMCAwIDMgMiAxIDE4Ci0gICAgICBUZXh0PVNlbGVjdCBDb21wb25lbnRzCi0gICAgICBUZXh0IEZyZW5jaD1T6WxlY3Rpb25uZXIgbGVzIGNvbXBvc2FudHMKLSAgICAgIFRleHQgR2VybWFuPUtvbXBvbmVudGVuIGF1c3fkaGxlbgotICAgICAgVGV4dCBTcGFuaXNoPVNlbGVjY2lvbmUgY29tcG9uZW50ZXMKLSAgICAgIFRleHQgSXRhbGlhbj1TZWxlemlvbmFyZSBpIGNvbXBvbmVudGkKLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0yNTEgMTgwIDMxMSAxOTMKLSAgICAgIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgICAgIFZhbHVlPU1BSU5ESVIKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMAotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgUmVjdGFuZ2xlPTI1MSAxNjggMzExIDE3OQotICAgICAgVmFyaWFibGU9Q09NUE9ORU5UUwotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTIzIDE2OCAyMzQgMTgxCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9RGlzayBTcGFjZSBSZXF1aXJlZDoKLSAgICAgIFRleHQgRnJlbmNoPUVzcGFjZSBkaXNxdWUgcmVxdWlzIDoKLSAgICAgIFRleHQgR2VybWFuPU5vdHdlbmRpZ2VyIFNwZWljaGVycGxhdHo6Ci0gICAgICBUZXh0IFNwYW5pc2g9RXNwYWNpbyByZXF1ZXJpZG8gZW4gZWwgZGlzY286Ci0gICAgICBUZXh0IEl0YWxpYW49U3BhemlvIHN1IGRpc2NvIG5lY2Vzc2FyaW86Ci0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTIzIDE4MCAyMzQgMTkzCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9RGlzayBTcGFjZSBSZW1haW5pbmc6Ci0gICAgICBUZXh0IEZyZW5jaD1Fc3BhY2UgZGlzcXVlIGRpc3BvbmlibGUgOgotICAgICAgVGV4dCBHZXJtYW49VmVyYmxlaWJlbmRlciBTcGVpY2hlcnBsYXR6OgotICAgICAgVGV4dCBTcGFuaXNoPUVzcGFjaW8gZW4gZGlzY28gZGlzcG9uaWJsZToKLSAgICAgIFRleHQgSXRhbGlhbj1TcGF6aW8gc3UgZGlzY28gZGlzcG9uaWJpbGU6Ci0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTA4IDE1OCAzMjAgMTk2Ci0gICAgICBBY3Rpb249MQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTExCi0gICAgZW5kCi0gICAgaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gICAgICBWYXJpYWJsZT1ETEdfRVZFTlRfVFlQRQotICAgICAgVmFsdWU9VkVSSUZZCi0gICAgZW5kCi0gICAgaXRlbTogUmVtYXJrCi0gICAgICBUZXh0PUlmIHRoZXkncmUgaW5zdGFsbGluZyBUY2wvVGssIFRvb2xzLCBvciB0aGUgdGVzdCBzdWl0ZSwgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdW5sZXNzIHRoZXkncmUgaW5zdGFsbGluZyBQeXRob24gdG9vLgotICAgIGVuZAotICAgIGl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICAgICAgVmFyaWFibGU9Q09NUE9ORU5UUwotICAgICAgVmFsdWU9QkRFCi0gICAgICBGbGFncz0wMDAwMTAxMAotICAgIGVuZAotICAgIGl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICAgICAgVmFyaWFibGU9Q09NUE9ORU5UUwotICAgICAgVmFsdWU9QQotICAgICAgRmxhZ3M9MDAwMDAwMTEKLSAgICBlbmQKLSAgICBpdGVtOiBEaXNwbGF5IE1lc3NhZ2UKLSAgICAgIFRpdGxlPUFyZSB5b3Ugc3VyZT8KLSAgICAgIFRleHQ9SW5zdGFsbGluZyBUY2wvVGssIFRvb2xzIG9yIHRoZSB0ZXN0IHN1aXRlIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHVubGVzcyB5b3UgaW5zdGFsbCB0aGUgUHl0aG9uIGludGVycHJldGVyIGFuZCBsaWJyYXJpZXMgdG9vLgotICAgICAgVGV4dD0KLSAgICAgIFRleHQ9Q2xpY2sgWWVzIGlmIHRoYXQncyByZWFsbHkgd2hhdCB5b3Ugd2FudC4KLSAgICAgIEZsYWdzPTAwMTAxMTAxCi0gICAgZW5kCi0gICAgaXRlbTogUmVtYXJrCi0gICAgICBUZXh0PU5vdGhpbmcgLS0ganVzdCBwcm9jZWVkIHRvIHRoZSBuZXh0IGRpYWxvZy4KLSAgICBlbmQKLSAgICBpdGVtOiBFbHNlIFN0YXRlbWVudAotICAgIGVuZAotICAgIGl0ZW06IFJlbWFyawotICAgICAgVGV4dD1SZXR1cm4gdG8gdGhlIGRpYWxvZy4KLSAgICBlbmQKLSAgICBpdGVtOiBTZXQgVmFyaWFibGUKLSAgICAgIFZhcmlhYmxlPURMR19FVkVOVF9UWVBFCi0gICAgZW5kCi0gICAgaXRlbTogRW5kIEJsb2NrCi0gICAgZW5kCi0gICAgaXRlbTogRW5kIEJsb2NrCi0gICAgZW5kCi0gICAgaXRlbTogRW5kIEJsb2NrCi0gICAgZW5kCi0gICAgaXRlbTogRW5kIEJsb2NrCi0gICAgZW5kCi0gIGVuZAotICBpdGVtOiBEaWFsb2cKLSAgICBUaXRsZT1BZHZhbmNlZCBPcHRpb25zCi0gICAgV2lkdGg9MzM5Ci0gICAgSGVpZ2h0PTIxMwotICAgIEZvbnQgTmFtZT1IZWx2Ci0gICAgRm9udCBTaXplPTgKLSAgICBpdGVtOiBSYWRpbyBCdXR0b24KLSAgICAgIENvbnRyb2wgTmFtZT1BRE1JTjIKLSAgICAgIFJlY3RhbmdsZT0xMSA0NiA5MCA3NgotICAgICAgVmFyaWFibGU9U0VMRUNUX0FETUlOCi0gICAgICBFbmFibGVkIENvbG9yPTAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDEwMDEKLSAgICAgIFRleHQ9QWRtaW4gaW5zdGFsbAotICAgICAgVGV4dD1Ob24tQWRtaW4gaW5zdGFsbGwKLSAgICAgIFRleHQ9Ci0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0xODggMTcwIDI0NCAxODkKLSAgICAgIFZhcmlhYmxlPURJUkVDVElPTgotICAgICAgVmFsdWU9TgotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAxCi0gICAgICBUZXh0PU9LCi0gICAgICBUZXh0IEZyZW5jaD0mU3VpdGUgPgotICAgICAgVGV4dCBHZXJtYW49JldlaXRlciA+Ci0gICAgICBUZXh0IFNwYW5pc2g9JlNpZ3VpZW50ZSA+Ci0gICAgICBUZXh0IEl0YWxpYW49JkF2YW50aSA+Ci0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9NSAzIDMyNiA4MwotICAgICAgQWN0aW9uPTEKLSAgICAgIEVuYWJsZWQgQ29sb3I9MDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTExMTEKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgQ29udHJvbCBOYW1lPUFETUlOMQotICAgICAgUmVjdGFuZ2xlPTExIDExIDMyMSA0NQotICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PUJ5IGRlZmF1bHQsIHRoZSBpbnN0YWxsIHJlY29yZHMgc2V0dGluZ3MgaW4gdGhlIHBlci1tYWNoaW5lIGFyZWEgb2YgdGhlIHJlZ2lzdHJ5IChIS0xNKSwgYW5kIGluc3RhbGxzIHRoZSBQeXRob24gYW5kIEMgcnVudGltZSBETExzIHRvICVTWVMzMiUuICBDaG9vc2UgIk5vbi1BZG1pbiBpbnN0YWxsIiBpZiB5b3Ugd291bGQgcHJlZmVyIHNldHRpbmdzIG1hZGUgaW4gdGhlIHBlci11c2VyIHJlZ2lzdHJ5IChIS0NVKSwgYW5kIERMTHMgaW5zdGFsbGVkIGluICVNQUlORElSJS4KLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT01IDkwIDMyNiAxNTcKLSAgICAgIEFjdGlvbj0xCi0gICAgICBFbmFibGVkIENvbG9yPTAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTEKLSAgICBlbmQKLSAgICBpdGVtOiBDaGVja2JveAotICAgICAgUmVjdGFuZ2xlPTExIDEyMSAyNDMgMTUxCi0gICAgICBWYXJpYWJsZT1UQVNLUwotICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDExCi0gICAgICBUZXh0PVJlZ2lzdGVyIGZpbGUgZXh0ZW5zaW9ucyAoLnB5LCAucHl3LCAucHljLCAucHlvKQotICAgICAgVGV4dD1DcmVhdGUgU3RhcnQgTWVudSBzaG9ydGN1dHMKLSAgICAgIFRleHQ9Ci0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTEgMTAzIDMyMCAxMjEKLSAgICAgIEVuYWJsZWQgQ29sb3I9MDAwMDAwMDAwMDAwMDAwMDExMTExMTExMTExMTExMTEKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotICAgICAgVGV4dD1DaG9vc2UgdGFza3MgdG8gcGVyZm9ybSBieSBjaGVja2luZyB0aGUgYm94ZXMgYmVsb3cuCi0gICAgZW5kCi0gICAgaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gICAgICBWYXJpYWJsZT1ETEdfRVZFTlRfVFlQRQotICAgICAgVmFsdWU9SU5JVAotICAgIGVuZAotICAgIGl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICAgICAgVmFyaWFibGU9RE9BRE1JTgotICAgICAgVmFsdWU9MQotICAgIGVuZAotICAgIGl0ZW06IFNldCBDb250cm9sIEF0dHJpYnV0ZQotICAgICAgQ29udHJvbCBOYW1lPUFETUlOMgotICAgIGVuZAotICAgIGl0ZW06IEVsc2UgU3RhdGVtZW50Ci0gICAgZW5kCi0gICAgaXRlbTogU2V0IENvbnRyb2wgVGV4dAotICAgICAgQ29udHJvbCBOYW1lPUFETUlOMQotICAgICAgQ29udHJvbCBUZXh0PVRoaXMgc2VjdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiBsb2dnZWQgaW4gdG8gYW4gYWNjb3VudCB3aXRoIEFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcy4KLSAgICBlbmQKLSAgICBpdGVtOiBTZXQgQ29udHJvbCBBdHRyaWJ1dGUKLSAgICAgIENvbnRyb2wgTmFtZT1BRE1JTjIKLSAgICAgIE9wZXJhdGlvbj0xCi0gICAgZW5kCi0gICAgaXRlbTogRW5kIEJsb2NrCi0gICAgZW5kCi0gICAgaXRlbTogRW5kIEJsb2NrCi0gICAgZW5kCi0gIGVuZAotZW5kCi1pdGVtOiBDdXN0b20gRGlhbG9nIFNldAotICBOYW1lPVNlbGVjdCBQcm9ncmFtIE1hbmFnZXIgR3JvdXAKLSAgRGlzcGxheSBWYXJpYWJsZT1ESVNQTEFZCi0gIGl0ZW06IERpYWxvZwotICAgIFRpdGxlPSVBUFBUSVRMRSUgSW5zdGFsbGF0aW9uCi0gICAgVGl0bGUgRnJlbmNoPUluc3RhbGxhdGlvbiBkZSAlQVBQVElUTEUlCi0gICAgVGl0bGUgR2VybWFuPUluc3RhbGxhdGlvbiB2b24gJUFQUFRJVExFJQotICAgIFRpdGxlIFNwYW5pc2g9SW5zdGFsYWNp824gZGUgJUFQUFRJVExFJQotICAgIFRpdGxlIEl0YWxpYW49SW5zdGFsbGF6aW9uZSBkaSAlQVBQVElUTEUlCi0gICAgV2lkdGg9MzM5Ci0gICAgSGVpZ2h0PTI4MAotICAgIEZvbnQgTmFtZT1IZWx2Ci0gICAgRm9udCBTaXplPTgKLSAgICBpdGVtOiBQdXNoIEJ1dHRvbgotICAgICAgUmVjdGFuZ2xlPTE4OCAyMzQgMjQ0IDI1MwotICAgICAgVmFyaWFibGU9RElSRUNUSU9OCi0gICAgICBWYWx1ZT1OCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDEKLSAgICAgIFRleHQ9Jk5leHQgPgotICAgICAgVGV4dCBGcmVuY2g9JlN1aXRlID4KLSAgICAgIFRleHQgR2VybWFuPSZXZWl0ZXIgPgotICAgICAgVGV4dCBTcGFuaXNoPSZTaWd1aWVudGUgPgotICAgICAgVGV4dCBJdGFsaWFuPSZBdmFudGkgPgotICAgIGVuZAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTMxIDIzNCAxODggMjUzCi0gICAgICBWYXJpYWJsZT1ESVJFQ1RJT04KLSAgICAgIFZhbHVlPUIKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMAotICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD08ICZCYWNrCi0gICAgICBUZXh0IEZyZW5jaD08ICZSZXRvdXIKLSAgICAgIFRleHQgR2VybWFuPTwgJlp1cvxjawotICAgICAgVGV4dCBTcGFuaXNoPTwgJkF0cuFzCi0gICAgICBUZXh0IEl0YWxpYW49PCAmSW5kaWV0cm8KLSAgICBlbmQKLSAgICBpdGVtOiBQdXNoIEJ1dHRvbgotICAgICAgUmVjdGFuZ2xlPTI2NCAyMzQgMzIwIDI1MwotICAgICAgQWN0aW9uPTMKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMAotICAgICAgVGV4dD0mQ2FuY2VsCi0gICAgICBUZXh0IEZyZW5jaD0mQW5udWxlcgotICAgICAgVGV4dCBHZXJtYW49JkFiYnJlY2hlbgotICAgICAgVGV4dCBTcGFuaXNoPSZDYW5jZWxhcgotICAgICAgVGV4dCBJdGFsaWFuPSZBbm51bGxhCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTAgMjI1IDMyMCAyMjYKLSAgICAgIEFjdGlvbj0zCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTEKLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMDggMTAgMzIzIDUzCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIEZsYWdzPTAwMDAwMDAwMDAwMDAwMDEKLSAgICAgIE5hbWU9VGltZXMgTmV3IFJvbWFuCi0gICAgICBGb250IFN0eWxlPS0yNCAwIDAgMCA3MDAgMjU1IDAgMCAwIDMgMiAxIDE4Ci0gICAgICBUZXh0PVNlbGVjdCBTdGFydCBNZW51IEdyb3VwCi0gICAgICBUZXh0IEZyZW5jaD1T6WxlY3Rpb25uZXIgbGUgZ3JvdXBlIGR1IEdlc3Rpb25uYWlyZSBkZSBwcm9ncmFtbWUKLSAgICAgIFRleHQgR2VybWFuPUJlc3RpbW11bmcgZGVyIFByb2dyYW1tLU1hbmFnZXJncnVwcGUKLSAgICAgIFRleHQgU3BhbmlzaD1TZWxlY2Npb25lIGdydXBvIGRlbCBBZG1pbmlzdHJhZG9yIGRlIHByb2dyYW1hcwotICAgICAgVGV4dCBJdGFsaWFuPVNlbGV6aW9uYXJlIGlsIGdydXBwbyBQcm9nTWFuCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTA4IDM1IDMyMCA2NQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PUVudGVyIHRoZSBuYW1lIG9mIHRoZSBTdGFydCBNZW51IHByb2dyYW0gZ3JvdXAgdG8gd2hpY2ggdG8gYWRkIHRoZSAlQVBQVElUTEUlIGljb25zOgotICAgICAgVGV4dCBGcmVuY2g9RW50cmV6IGxlIG5vbSBkdSBncm91cGUgZHUgR2VzdGlvbm5haXJlIGRlIHByb2dyYW1tZSBkYW5zIGxlcXVlbCB2b3VzIHNvdWhhaXRleiBham91dGVyIGxlcyBpY/RuZXMgZGUgJUFQUFRJVExFJSA6Ci0gICAgICBUZXh0IEdlcm1hbj1HZWJlbiBTaWUgZGVuIE5hbWVuIGRlciBQcm9ncmFtbWdydXBwZSBlaW4sIGRlciBkYXMgU3ltYm9sICVBUFBUSVRMRSUgaGluenVnZWb8Z3Qgd2VyZGVuIHNvbGw6Ci0gICAgICBUZXh0IFNwYW5pc2g9RXNjcmliYSBlbCBub21icmUgZGVsIGdydXBvIGRlbCBBZG1pbmlzdHJhZG9yIGRlIHByb2dyYW1hcyBlbiBlbCBxdWUgZGVzZWEgYWdyZWdhciBsb3MgaWNvbm9zIGRlICVBUFBUSVRMRSU6Ci0gICAgICBUZXh0IEl0YWxpYW49SW5zZXJpcmUgaWwgbm9tZSBkZWwgZ3J1cHBvIFByb2dyYW0gTWFuYWdlciBwZXIgYWdnaXVuZ2VyZSBsZSBpY29uZSAlQVBQVElUTEUlIGE6Ci0gICAgZW5kCi0gICAgaXRlbTogQ29tYm9ib3gKLSAgICAgIFJlY3RhbmdsZT0xMDggNTYgMzIwIDIxOQotICAgICAgVmFyaWFibGU9R1JPVVAKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMTAwMDAxMDAwMDAwMTEwMDAwMDAwMQotICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD0lR1JPVVAlCi0gICAgICBUZXh0PQotICAgICAgVGV4dCBGcmVuY2g9JUdST1VQJQotICAgICAgVGV4dCBHZXJtYW49JUdST1VQJQotICAgICAgVGV4dCBTcGFuaXNoPSVHUk9VUCUKLSAgICAgIFRleHQgSXRhbGlhbj0lR1JPVVAlCi0gICAgZW5kCi0gIGVuZAotZW5kCi1pdGVtOiBDdXN0b20gRGlhbG9nIFNldAotICBOYW1lPVN0YXJ0IEluc3RhbGxhdGlvbgotICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkKLSAgaXRlbTogRGlhbG9nCi0gICAgVGl0bGU9JUFQUFRJVExFJSBJbnN0YWxsYXRpb24KLSAgICBUaXRsZSBGcmVuY2g9SW5zdGFsbGF0aW9uIGRlICVBUFBUSVRMRSUKLSAgICBUaXRsZSBHZXJtYW49SW5zdGFsbGF0aW9uIHZvbiAlQVBQVElUTEUlCi0gICAgVGl0bGUgU3BhbmlzaD1JbnN0YWxhY2nzbiBkZSAlQVBQVElUTEUlCi0gICAgVGl0bGUgSXRhbGlhbj1JbnN0YWxsYXppb25lIGRpICVBUFBUSVRMRSUKLSAgICBXaWR0aD0zMzkKLSAgICBIZWlnaHQ9MjgwCi0gICAgRm9udCBOYW1lPUhlbHYKLSAgICBGb250IFNpemU9OAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTg4IDIzNCAyNDQgMjUzCi0gICAgICBWYXJpYWJsZT1ESVJFQ1RJT04KLSAgICAgIFZhbHVlPU4KLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD0mTmV4dCA+Ci0gICAgICBUZXh0IEZyZW5jaD0mU3VpdGUgPgotICAgICAgVGV4dCBHZXJtYW49JldlaXRlciA+Ci0gICAgICBUZXh0IFNwYW5pc2g9JlNpZ3VpZW50ZSA+Ci0gICAgICBUZXh0IEl0YWxpYW49JkF2YW50aSA+Ci0gICAgZW5kCi0gICAgaXRlbTogUHVzaCBCdXR0b24KLSAgICAgIFJlY3RhbmdsZT0xMzEgMjM0IDE4OCAyNTMKLSAgICAgIFZhcmlhYmxlPURJUkVDVElPTgotICAgICAgVmFsdWU9QgotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PTwgJkJhY2sKLSAgICAgIFRleHQgRnJlbmNoPTwgJlJldG91cgotICAgICAgVGV4dCBHZXJtYW49PCAmWnVy/GNrCi0gICAgICBUZXh0IFNwYW5pc2g9PCAmQXRy4XMKLSAgICAgIFRleHQgSXRhbGlhbj08ICZJbmRpZXRybwotICAgIGVuZAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MjY0IDIzNCAzMjAgMjUzCi0gICAgICBBY3Rpb249MwotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PSZDYW5jZWwKLSAgICAgIFRleHQgRnJlbmNoPSZBbm51bGVyCi0gICAgICBUZXh0IEdlcm1hbj0mQWJicmVjaGVuCi0gICAgICBUZXh0IFNwYW5pc2g9JkNhbmNlbGFyCi0gICAgICBUZXh0IEl0YWxpYW49JkFubnVsbGEKLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMCAyMjUgMzIwIDIyNgotICAgICAgQWN0aW9uPTMKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgUmVjdGFuZ2xlPTEwOCAxMCAzMjMgNTMKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQotICAgICAgTmFtZT1UaW1lcyBOZXcgUm9tYW4KLSAgICAgIEZvbnQgU3R5bGU9LTI0IDAgMCAwIDcwMCAyNTUgMCAwIDAgMyAyIDEgMTgKLSAgICAgIFRleHQ9UmVhZHkgdG8gSW5zdGFsbCEKLSAgICAgIFRleHQgRnJlbmNoPVBy6nQg4CBpbnN0YWxsZXIgIQotICAgICAgVGV4dCBHZXJtYW49SW5zdGFsbGF0aW9uc2JlcmVpdCEKLSAgICAgIFRleHQgU3BhbmlzaD2hUHJlcGFyYWRvIHBhcmEgbGEgaW5zdGFsYWNp824hCi0gICAgICBUZXh0IEl0YWxpYW49UHJvbnRvIHBlciBsJ2luc3RhbGxhemlvbmUhCi0gICAgZW5kCi0gICAgaXRlbTogU3RhdGljCi0gICAgICBSZWN0YW5nbGU9MTA4IDQwIDMyMCA2MgotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PUNsaWNrIHRoZSBOZXh0IGJ1dHRvbiB0byBpbnN0YWxsICVBUFBUSVRMRSUsIG9yIHRoZSBCYWNrIGJ1dHRvbiB0byBjaGFuZ2UgY2hvaWNlczoKLSAgICAgIFRleHQgRnJlbmNoPVZvdXMg6nRlcyBtYWludGVuYW50IHBy6nQg4CBpbnN0YWxsZXIgbGVzIGZpY2hpZXJzICVBUFBUSVRMRSUuCi0gICAgICBUZXh0IEZyZW5jaD0KLSAgICAgIFRleHQgRnJlbmNoPUNsaXF1ZXogc3VyIGxlIGJvdXRvbiBTdWl0ZSBwb3VyIGNvbW1lbmNlciBsJ2luc3RhbGxhdGlvbiBvdSBzdXIgbGUgYm91dG9uIFJldG91ciBwb3VyIGVudHJlciBsZXMgaW5mb3JtYXRpb25zIGQnaW5zdGFsbGF0aW9uIOAgbm91dmVhdS4KLSAgICAgIFRleHQgR2VybWFuPVNpZSBr9m5uZW4gJUFQUFRJVExFJSBudW4gaW5zdGFsbGllcmVuLgotICAgICAgVGV4dCBHZXJtYW49Ci0gICAgICBUZXh0IEdlcm1hbj1LbGlja2VuIFNpZSBhdWYgIldlaXRlciIsIHVtIG1pdCBkZXIgSW5zdGFsbGF0aW9uIHp1IGJlZ2lubmVuLiBLbGlja2VuIFNpZSBhdWYgIlp1cvxjayIsIHVtIGRpZSBJbnN0YWxsYXRpb25zaW5mb3JtYXRpb25lbiBuZXUgZWluenVnZWJlbi4KLSAgICAgIFRleHQgU3BhbmlzaD1ZYSBlc3ThIGxpc3RvIHBhcmEgaW5zdGFsYXIgJUFQUFRJVExFJS4KLSAgICAgIFRleHQgU3BhbmlzaD0KLSAgICAgIFRleHQgU3BhbmlzaD1QcmVzaW9uZSBlbCBib3TzbiBTaWd1aWVudGUgcGFyYSBjb21lbnphciBsYSBpbnN0YWxhY2nzbiBvIHByZXNpb25lIEF0cuFzIHBhcmEgdm9sdmVyIGEgaW5ncmVzYXIgbGEgaW5mb3JtYWNp824gcGFyYSBsYSBpbnN0YWxhY2nzbi4KLSAgICAgIFRleHQgSXRhbGlhbj1PcmEg6CBwb3NzaWJpbGUgaW5zdGFsbGFyZSAlQVBQVElUTEUlLgotICAgICAgVGV4dCBJdGFsaWFuPQotICAgICAgVGV4dCBJdGFsaWFuPVByZW1lcmUgaWwgcHVsc2FudGUgQXZhbnRpIHBlciBhdnZpYXJlIGwnaW5zdGFsbGF6aW9uZSBvIGlsIHB1bHNhbnRlIEluZGlldHJvIHBlciByZWluc2VyaXJlIGxlIGluZm9ybWF6aW9uaSBkaSBpbnN0YWxsYXppb25lLgotICAgIGVuZAotICAgIGl0ZW06IEVkaXRib3gKLSAgICAgIFJlY3RhbmdsZT0xMDggNjYgMzI0IDIxOQotICAgICAgSGVscCBDb250ZXh0PTE2NzExNjgxCi0gICAgICBFbmFibGVkIENvbG9yPTAwMDAwMDAwMDAwMDAwMDAxMTExMTExMTExMTExMTExCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAxMDAwMDAwMDAwMDExMDAwMTEwMDAxMDAKLSAgICAgIFRleHQ9JVNVTU1BUlklCi0gICAgZW5kCi0gIGVuZAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPURJU1BMQVkKLSAgVmFsdWU9U2VsZWN0IERlc3RpbmF0aW9uIERpcmVjdG9yeQotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1Vc2VyIG1heSBoYXZlIGNoYW5nZWQgTUFJTkRJUiwgc28gcmVzZXQgQkFDS1VQIHRvIG1hdGNoLgotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9QkFDS1VQCi0gIFZhbHVlPSVNQUlORElSJVxCQUNLVVAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUJFR0lOIFdJWkFSRCBTVFVGRiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1XaGVuIHRoZSBCQUNLVVAgZmVhdHVyZSBpcyBlbmFibGVkLCB0aGUgQkFDS1VQRElSIGlzIGluaXRpYWxpemVkCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1ET0JBQ0tVUAotICBWYWx1ZT1BCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1CQUNLVVBESVIKLSAgVmFsdWU9JUJBQ0tVUCUKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRoZSBCUkFORElORyBpbmZvcm1hdGlvbiBpcyB3cml0dGVuIHRvIHRoZSBJTkkgZmlsZSBvbiB0aGUgaW5zdGFsbGF0aW9uIG1lZGlhLgotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9QlJBTkRJTkcKLSAgVmFsdWU9MQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9RE9CUkFORAotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IEVkaXQgSU5JIEZpbGUKLSAgUGF0aG5hbWU9JUlOU1QlXENVU1REQVRBLklOSQotICBTZXR0aW5ncz1bUmVnaXN0cmF0aW9uXQotICBTZXR0aW5ncz1OQU1FPSVOQU1FJQotICBTZXR0aW5ncz1DT01QQU5ZPSVDT01QQU5ZJQotICBTZXR0aW5ncz0KLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1CZWdpbiB3cml0aW5nIHRvIHRoZSBJTlNUQUxMLkxPRwotZW5kCi1pdGVtOiBPcGVuL0Nsb3NlIElOU1RBTEwuTE9HCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUNoZWNrIGZyZWUgZGlzayBzcGFjZSBjYWxjdWxhdGVzIGZyZWUgZGlzayBzcGFjZSBhcyB3ZWxsIGFzIGNvbXBvbmVudCBzaXplcy4KLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9SXQgc2hvdWxkIGJlIGxvY2F0ZWQgYmVmb3JlIGFsbCBJbnN0YWxsIEZpbGUgYWN0aW9ucy4KLWVuZAotaXRlbTogQ2hlY2sgRGlzayBTcGFjZQotICBDb21wb25lbnQ9Q09NUE9ORU5UUwotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1UaGlzIGluY2x1ZGUgc2NyaXB0IGFsbG93cyB1bmluc3RhbGwgc3VwcG9ydAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1Ob3RlIGZyb20gVGltOiAgdGhpcyBpcyBvdXIgb3duIFVuaW5zdGFsLndzZSwgYSBjb3B5IG9mIFdpc2UncyBleGNlcHQKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9aXQgd3JpdGVzIHRvIEhLQ1UgKGluc3RlYWQgb2YgSEtMTSkgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkbWluIHByaXZzLgotZW5kCi1pdGVtOiBJbmNsdWRlIFNjcmlwdAotICBQYXRobmFtZT0uXFVuaW5zdGFsLndzZQotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1Ob3RlIGZyb20gVGltOiB0aGVzZSBzZWVtaW5nIG5vLW9wcyBhY3R1YWxseSBjb252ZXJ0IHRvIHNob3J0IGZpbGVuYW1lcy4KLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPUNPTU1PTgotICBWYWx1ZT0lQ09NTU9OJQotICBGbGFncz0wMDAxMDEwMAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9TUFJTkRJUgotICBWYWx1ZT0lTUFJTkRJUiUKLSAgRmxhZ3M9MDAwMTAxMDAKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9VGhpcyBJRi9USEVOL0VMU0UgcmVhZHMgdGhlIGNvcnJlY3QgcmVnaXN0cnkgZW50cmllcyBmb3Igc2hvcnRjdXQvaWNvbiBwbGFjZW1lbnQKLWVuZAotaXRlbTogQ2hlY2sgQ29uZmlndXJhdGlvbgotICBGbGFncz0xMDExMTAxMQotZW5kCi1pdGVtOiBHZXQgUmVnaXN0cnkgS2V5IFZhbHVlCi0gIFZhcmlhYmxlPVNUQVJUVVBESVIKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEV4cGxvcmVyXFNoZWxsIEZvbGRlcnMKLSAgRGVmYXVsdD0lV0lOJVxTdGFydCBNZW51XFByb2dyYW1zXFN0YXJ0VXAKLSAgVmFsdWUgTmFtZT1TdGFydFVwCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IEdldCBSZWdpc3RyeSBLZXkgVmFsdWUKLSAgVmFyaWFibGU9REVTS1RPUERJUgotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cRXhwbG9yZXJcU2hlbGwgRm9sZGVycwotICBEZWZhdWx0PSVXSU4lXERlc2t0b3AKLSAgVmFsdWUgTmFtZT1EZXNrdG9wCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IEdldCBSZWdpc3RyeSBLZXkgVmFsdWUKLSAgVmFyaWFibGU9U1RBUlRNRU5VRElSCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxFeHBsb3JlclxTaGVsbCBGb2xkZXJzCi0gIERlZmF1bHQ9JVdJTiVcU3RhcnQgTWVudQotICBWYWx1ZSBOYW1lPVN0YXJ0IE1lbnUKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogR2V0IFJlZ2lzdHJ5IEtleSBWYWx1ZQotICBWYXJpYWJsZT1HUk9VUERJUgotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cRXhwbG9yZXJcU2hlbGwgRm9sZGVycwotICBEZWZhdWx0PSVXSU4lXFN0YXJ0IE1lbnVcUHJvZ3JhbXMKLSAgVmFsdWUgTmFtZT1Qcm9ncmFtcwotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBHZXQgUmVnaXN0cnkgS2V5IFZhbHVlCi0gIFZhcmlhYmxlPUNTVEFSVFVQRElSCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxFeHBsb3JlclxTaGVsbCBGb2xkZXJzCi0gIERlZmF1bHQ9JVNUQVJUVVBESVIlCi0gIFZhbHVlIE5hbWU9Q29tbW9uIFN0YXJ0dXAKLSAgRmxhZ3M9MDAwMDAxMDAKLWVuZAotaXRlbTogR2V0IFJlZ2lzdHJ5IEtleSBWYWx1ZQotICBWYXJpYWJsZT1DREVTS1RPUERJUgotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cRXhwbG9yZXJcU2hlbGwgRm9sZGVycwotICBEZWZhdWx0PSVERVNLVE9QRElSJQotICBWYWx1ZSBOYW1lPUNvbW1vbiBEZXNrdG9wCi0gIEZsYWdzPTAwMDAwMTAwCi1lbmQKLWl0ZW06IEdldCBSZWdpc3RyeSBLZXkgVmFsdWUKLSAgVmFyaWFibGU9Q1NUQVJUTUVOVURJUgotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cRXhwbG9yZXJcU2hlbGwgRm9sZGVycwotICBEZWZhdWx0PSVTVEFSVE1FTlVESVIlCi0gIFZhbHVlIE5hbWU9Q29tbW9uIFN0YXJ0IE1lbnUKLSAgRmxhZ3M9MDAwMDAxMDAKLWVuZAotaXRlbTogR2V0IFJlZ2lzdHJ5IEtleSBWYWx1ZQotICBWYXJpYWJsZT1DR1JPVVBESVIKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEV4cGxvcmVyXFNoZWxsIEZvbGRlcnMKLSAgRGVmYXVsdD0lR1JPVVBESVIlCi0gIFZhbHVlIE5hbWU9Q29tbW9uIFByb2dyYW1zCi0gIEZsYWdzPTAwMDAwMTAwCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PU5vdGUgZnJvbSBUaW06ICB0aGUgV2l6YXJkIGxlZnQgdGhpcyBibG9jayBlbXB0eSEKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9UGVyaGFwcyBpdCdzIG9ubHkgcmVsZXZhbnQgb24gV2luZG93cyAzLjEuCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1FTkQgV0laQVJEIFNUVUZGIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9U0VMRUNUX0FETUlOCi0gIFZhbHVlPUIKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9VGhlIHVzZXIgY2hvc2UgYSBub24tYWRtaW4gaW5zdGFsbCBpbiAiQWR2YW5jZWQgT3B0aW9ucyIuCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRoaXMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhlIGluY2x1ZGUgb2YgVW5pbnN0YWwud3NlIGFib3ZlLCBiZWNhdXNlCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PXdyaXRpbmcgdW5pbnN0YWxsIGluZm8gdG8gSEtDVSBpcyBpbmVmZmVjdGl2ZSBleGNlcHQgdW5kZXIgV2luMksuCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1ET0FETUlOCi0gIFZhbHVlPTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9Q0dST1VQX1NBVkUKLSAgVmFsdWU9JUdST1VQJQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9VEFTS1MKLSAgVmFsdWU9QgotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9RE9BRE1JTgotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1HUk9VUAotICBWYWx1ZT0lQ0dST1VQRElSJVwlR1JPVVAlCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1HUk9VUAotICBWYWx1ZT0lR1JPVVBESVIlXCVHUk9VUCUKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9TG9uZyBzZWN0aW9uIHRvIGluc3RhbGwgZmlsZXMuCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9RE9BRE1JTgotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1ETExERVNUCi0gIFZhbHVlPSVTWVMzMiUKLWVuZAotaXRlbTogRWxzZSBTdGF0ZW1lbnQKLWVuZAotaXRlbTogU2V0IFZhcmlhYmxlCi0gIFZhcmlhYmxlPURMTERFU1QKLSAgVmFsdWU9JU1BSU5ESVIlCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9SW5zdGFsbCB0aGUgbGljZW5zZSBldmVuIGlmIHRoZXkgZGVzZWxlY3QgZXZlcnl0aGluZyA8d2luaz4uCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGljZW5zZQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTElDRU5TRS50eHQKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHJlYWRtZQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcUkVBRE1FLnR4dAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbWlzY1xuZXdzCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxORVdTLnR4dAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUljb25zIC0tIGFsd2F5cyBpbnN0YWxsIHNvIHRoYXQgdGhlIHVuaW5zdGFsbGVyIGNhbiB1c2UgdGhlbSBmb3IgaXRzIG93biBkaXNwbGF5LgotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHBjXHB5Y29uLmljbwotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVccHljb24uaWNvCi0gIEZsYWdzPTAwMDAwMDAwMTAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxwY1xweWMuaWNvCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxweWMuaWNvCi0gIEZsYWdzPTAwMDAwMDAwMTAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxwY1xweS5pY28KLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXHB5LmljbwotICBGbGFncz0wMDAwMDAwMDEwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1UaGVzZSBhcnJhbmdlIHRvIChyZWN1cnNpdmVseSEpIGRlbGV0ZSBhbGwgLnB5YyBhbmQgLnB5byBmaWxlcyBhdCB1bmluc3RhbGwgdGltZS4KLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9VGhpcyAiZG9lcyB0aGUgcmlnaHQgdGhpbmciOiAgYW55IGRpcmVjdG9yaWVzIGxlZnQgZW1wdHkgYXQgdGhlIGVuZCBhcmUgcmVtb3ZlZC4KLWVuZAotaXRlbTogQWRkIFRleHQgdG8gSU5TVEFMTC5MT0cKLSAgVGV4dD1GaWxlIFRyZWU6ICVNQUlORElSJVwqLnB5YwotZW5kCi1pdGVtOiBBZGQgVGV4dCB0byBJTlNUQUxMLkxPRwotICBUZXh0PUZpbGUgVHJlZTogJU1BSU5ESVIlXCoucHlvCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1BOiBpbnRlcnByZXRlciBhbmQgbGlicmFyaWVzCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1DT01QT05FTlRTCi0gIFZhbHVlPUEKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9RXhlY3V0YWJsZXMKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXHB5dGhvbi5leGUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXHB5dGhvbi5leGUKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5ccHl0aG9udy5leGUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXHB5dGhvbncuZXhlCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXHc5eHBvcGVuLmV4ZQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcdzl4cG9wZW4uZXhlCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUV4dGVuc2lvbiBtb2R1bGUgRExMcyAoLnB5ZCk7IGtlZXAgaW4gc3luY2ggd2l0aCBsaWJzIGRpcmVjdG9yeSBuZXh0Ci1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Llx3aW5yZWcucHlkCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxETExzXHdpbnJlZy5weWQKLSAgRGVzY3JpcHRpb249RXh0ZW5zaW9uIG1vZHVsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cX2Nzdi5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcX2Nzdi5weWQKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cX3NyZS5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcX3NyZS5weWQKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cX3NzbC5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcX3NzbC5weWQKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cX3N5bXRhYmxlLnB5ZAotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcRExMc1xfc3ltdGFibGUucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXF90ZXN0Y2FwaS5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcX3Rlc3RjYXBpLnB5ZAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxfdGtpbnRlci5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcX3RraW50ZXIucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXF9zb2NrZXQucHlkCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxETExzXF9zb2NrZXQucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXGJ6Mi5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcYnoyLnB5ZAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxkYXRldGltZS5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcZGF0ZXRpbWUucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXG1tYXAucHlkCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxETExzXG1tYXAucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXHBhcnNlci5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNccGFyc2VyLnB5ZAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxweWV4cGF0LnB5ZAotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcRExMc1xweWV4cGF0LnB5ZAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxzZWxlY3QucHlkCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxETExzXHNlbGVjdC5weWQKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cdW5pY29kZWRhdGEucHlkCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxETExzXHVuaWNvZGVkYXRhLnB5ZAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Llx3aW5zb3VuZC5weWQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXERMTHNcd2luc291bmQucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXHpsaWIucHlkCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxETExzXHpsaWIucHlkCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUxpbmsgbGlicmFyaWVzICgubGliKTsga2VlcCBpbiBzeW5jaCB3aXRoIERMTHMgYWJvdmUsIGV4Y2VwdCB0aGF0IHRoZSBQeXRob24gbGliIGxpdmVzIGhlcmUuCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Llx3aW5yZWcubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXHdpbnJlZy5saWIKLSAgRGVzY3JpcHRpb249TGluayBsaWJyYXJ5IGZpbGVzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXF9jc3YubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXF9jc3YubGliCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXF9zcmUubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXF9zcmUubGliCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXF9zc2wubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXF9zc2wubGliCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXF9zeW10YWJsZS5saWIKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXGxpYnNcX3N5bXRhYmxlLmxpYgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxfdGVzdGNhcGkubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXF90ZXN0Y2FwaS5saWIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cX3RraW50ZXIubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXF90a2ludGVyLmxpYgotICBEZXNjcmlwdGlvbj1FeHRlbnNpb24gbW9kdWxlcwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Llxfc29ja2V0LmxpYgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcbGlic1xfc29ja2V0LmxpYgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxiejIubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXGJ6Mi5saWIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cZGF0ZXRpbWUubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXGRhdGV0aW1lLmxpYgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxtbWFwLmxpYgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcbGlic1xtbWFwLmxpYgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9LlxwYXJzZXIubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXHBhcnNlci5saWIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5ccHlleHBhdC5saWIKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXGxpYnNccHlleHBhdC5saWIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cc2VsZWN0LmxpYgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcbGlic1xzZWxlY3QubGliCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXHVuaWNvZGVkYXRhLmxpYgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcbGlic1x1bmljb2RlZGF0YS5saWIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5cd2luc291bmQubGliCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxsaWJzXHdpbnNvdW5kLmxpYgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Llx6bGliLmxpYgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcbGlic1x6bGliLmxpYgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS5ccHl0aG9uJV9weW1ham9yXyUlX3B5bWlub3JfJS5saWIKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXGxpYnNccHl0aG9uJV9QWU1BSk9SXyUlX1BZTUlOT1JfJS5saWIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9TWFpbiBQeXRob24gRExMCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRlbGwgV2lzZSBpdCdzIE9LIHRvIGRlbGV0ZSB0aGUgUHl0aG9uIERMTCBhdCB1bmluc3RhbGwgdGltZSwKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9ZGVzcGl0ZSB0aGF0IHdlIChtYXkpIHdyaXRlIGl0IGludG8gYSBzeXN0ZW0gZGlyZWN0b3J5LgotZW5kCi1pdGVtOiBBZGQgVGV4dCB0byBJTlNUQUxMLkxPRwotICBUZXh0PU5vbi1TeXN0ZW0gRmlsZToKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uXHB5dGhvbiVfcHltYWpvcl8lJV9weW1pbm9yXyUuZGxsCi0gIERlc3RpbmF0aW9uPSVETExERVNUJVxweXRob24lX1BZTUFKT1JfJSVfUFlNSU5PUl8lLmRsbAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1MaWJyYXJpZXMgKExpYi8pCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYgotICBEZXNjcmlwdGlvbj1MaWJyYXJ5IE1vZHVsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcY29tcGlsZXJcKi5weQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGNvbXBpbGVyCi0gIERlc2NyaXB0aW9uPVB5dGhvbiBjb21waWxlciB3cml0dGVuIGluIFB5dGhvbgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlxkaXN0dXRpbHNcKi5weQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGRpc3R1dGlscwotICBEZXNjcmlwdGlvbj1EaXN0cmlidXRpb24gdXRpbGl0eSBtb2R1bGVzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcZGlzdHV0aWxzXHJlYWRtZQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGRpc3R1dGlsc1xSRUFETUUudHh0Ci0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcKi5weQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGRpc3R1dGlsc1xjb21tYW5kCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC5leGUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LmV4ZQotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXGNvbW1hbmRfdGVtcGxhdGUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxkaXN0dXRpbHNcY29tbWFuZFxjb21tYW5kX3RlbXBsYXRlCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXGVtYWlsXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxlbWFpbAotICBEZXNjcmlwdGlvbj1MaWJyYXJ5IGVtYWlsIHBhY2thZ2UKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlxlbWFpbFx0ZXN0XCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxlbWFpbFx0ZXN0Ci0gIERlc2NyaXB0aW9uPWVtYWlsIHRlc3RzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcZW1haWxcdGVzdFxkYXRhXCoudHh0Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcZW1haWxcdGVzdFxkYXRhCi0gIERlc2NyaXB0aW9uPWVtYWlsIHRlc3QgZGF0YQotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXGVtYWlsXHRlc3RcZGF0YVwqLmdpZgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGVtYWlsXHRlc3RcZGF0YQotICBEZXNjcmlwdGlvbj1lbWFpbCB0ZXN0IGRhdGEKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlxlbWFpbFx0ZXN0XGRhdGFcKi5hdQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGVtYWlsXHRlc3RcZGF0YQotICBEZXNjcmlwdGlvbj1lbWFpbCB0ZXN0IGRhdGEKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcZW5jb2RpbmdzXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxlbmNvZGluZ3MKLSAgRGVzY3JpcHRpb249VW5pY29kZSBlbmNvZGluZyB0YWJsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcaG90c2hvdFwqLnB5Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcaG90c2hvdAotICBEZXNjcmlwdGlvbj1GYXN0IFB5dGhvbiBwcm9maWxlcgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlxsaWItb2xkXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxsaWItb2xkCi0gIERlc2NyaXB0aW9uPU9ic29sZXRlIG1vZHVsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcdGtpbnRlclwqLnB5Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcdGtpbnRlcgotICBEZXNjcmlwdGlvbj1Ua2ludGVyIHJlbGF0ZWQgbGlicmFyeSBtb2R1bGVzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXGxvZ2dpbmdcKi5weQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGxvZ2dpbmcKLSAgRGVzY3JpcHRpb249TG9nZ2luZyBwYWNrYWdlCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXHNpdGUtcGFja2FnZXNccmVhZG1lCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcc2l0ZS1wYWNrYWdlc1xSRUFETUUudHh0Ci0gIERlc2NyaXB0aW9uPVNpdGUgcGFja2FnZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJceG1sXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlx4bWwKLSAgRGVzY3JpcHRpb249WE1MIHN1cHBvcnQgcGFja2FnZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlx4bWxcZG9tXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlx4bWxcZG9tCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJceG1sXHBhcnNlcnNcKi5weQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXHhtbFxwYXJzZXJzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJceG1sXHNheFwqLnB5Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJceG1sXHNheAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1DIEluY2x1ZGUgZmlsZXMKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxpbmNsdWRlXCouaAotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcaW5jbHVkZQotICBEZXNjcmlwdGlvbj1IZWFkZXIgZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHBjXHB5Y29uZmlnLmgKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXGluY2x1ZGVccHljb25maWcuaAotICBEZXNjcmlwdGlvbj1IZWFkZXIgZmlsZXMgKHB5Y29uZmlnLmgpCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PU1pY3Jvc29mdCBDIHJ1bnRpbWUgbGlicmFyaWVzCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9JV9TWVNfJVxNU1ZDSVJULkRMTAotICBEZXN0aW5hdGlvbj0lRExMREVTVCVcTVNWQ0lSVC5ETEwKLSAgRGVzY3JpcHRpb249VmlzdWFsIEMrKyBSdW50aW1lIERMTHMKLSAgRmxhZ3M9MDAwMDAxMTAwMDAxMDAxMQotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPSVfU1lTXyVcTVNWQ1JULkRMTAotICBEZXN0aW5hdGlvbj0lRExMREVTVCVcTVNWQ1JULkRMTAotICBEZXNjcmlwdGlvbj1WaXN1YWwgQysrIFJ1bnRpbWUgRExMcwotICBGbGFncz0wMDAwMDExMDAwMDEwMDExCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9QjogVGNsL1RrIChUa2ludGVyLCBJRExFLCBweWRvYykKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QgotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1UY2wvVGsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlwuLlwlX3RjbGRpcl8lXGJpblwqLmRsbAotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcRExMcwotICBEZXNjcmlwdGlvbj1UY2wvVGsgYmluYXJpZXMgYW5kIGxpYnJhcmllcwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cLi5cJV90Y2xkaXJfJVxsaWJcKi4qCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVx0Y2wKLSAgRGVzY3JpcHRpb249VGNsL1RrIGJpbmFyaWVzIGFuZCBsaWJyYXJpZXMKLSAgRmxhZ3M9MDAwMDAwMDEwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9SURMRQotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXExpYlxpZGxlbGliXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxpZGxlbGliCi0gIERlc2NyaXB0aW9uPUludGVncmF0ZWQgRGV2ZUxvcG1lbnQgRW52aXJvbm1lbnQgZm9yIFB5dGhvbgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cTGliXGlkbGVsaWJcKi50eHQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxpZGxlbGliCi0gIERlc2NyaXB0aW9uPUludGVncmF0ZWQgRGV2ZUxvcG1lbnQgRW52aXJvbm1lbnQgZm9yIFB5dGhvbgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cTGliXGlkbGVsaWJcKi5kZWYKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxpZGxlbGliCi0gIERlc2NyaXB0aW9uPUludGVncmF0ZWQgRGV2ZUxvcG1lbnQgRW52aXJvbm1lbnQgZm9yIFB5dGhvbgotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cTGliXGlkbGVsaWJcSWNvbnNcKgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXGlkbGVsaWJcSWNvbnMKLSAgRGVzY3JpcHRpb249SW50ZWdyYXRlZCBEZXZlTG9wbWVudCBFbnZpcm9ubWVudCBmb3IgUHl0aG9uCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxUb29sc1xzY3JpcHRzXGlkbGUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlxpZGxlbGliXGlkbGUucHl3Ci0gIERlc2NyaXB0aW9uPUlETEUgYm9vdHN0cmFwIHNjcmlwdAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1XaW5kb3dzIHB5ZG9jIGRyaXZlcgotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHNjcmlwdHNcKi5weXcKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXFNjcmlwdHMKLSAgRGVzY3JpcHRpb249V2luZG93cyBweWRvYyBkcml2ZXIKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUM6IGRvY3MKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QwotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPSVfRE9DXyVcKi4qCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxEb2MKLSAgRGVzY3JpcHRpb249UHl0aG9uIERvY3VtZW50YXRpb24gKEhUTUwpCi0gIEZsYWdzPTAwMDAwMDAxMDAwMDAwMTAKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1EOiB0b29scwotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9Q09NUE9ORU5UUwotICBWYWx1ZT1ECi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cdG9vbHNcc2NyaXB0c1wqLnB5Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxUb29sc1xTY3JpcHRzCi0gIERlc2NyaXB0aW9uPVV0aWxpdHkgU2NyaXB0cwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cdG9vbHNcc2NyaXB0c1wqLmRvYwotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcVG9vbHNcU2NyaXB0cwotICBEZXNjcmlwdGlvbj1VdGlsaXR5IFNjcmlwdHMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHNjcmlwdHNccmVhZG1lCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxUb29sc1xTY3JpcHRzXFJFQURNRS50eHQKLSAgRGVzY3JpcHRpb249VXRpbGl0eSBTY3JpcHRzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cdG9vbHNcd2ViY2hlY2tlclwqLnB5Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxUb29sc1x3ZWJjaGVja2VyCi0gIERlc2NyaXB0aW9uPVdlYiBjaGVja2VyIHRvb2wKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHdlYmNoZWNrZXJccmVhZG1lCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxUb29sc1x3ZWJjaGVja2VyXFJFQURNRS50eHQKLSAgRGVzY3JpcHRpb249V2ViIGNoZWNrZXIgdG9vbAotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHZlcnNpb25jaGVja1wqLnB5Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxUb29sc1x2ZXJzaW9uY2hlY2sKLSAgRGVzY3JpcHRpb249VmVyc2lvbiBjaGVja2VyIHRvb2wKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHZlcnNpb25jaGVja1xyZWFkbWUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXHZlcnNpb25jaGVja1xSRUFETUUudHh0Ci0gIERlc2NyaXB0aW9uPVZlcnNpb24gY2hlY2tlciB0b29sCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cdG9vbHNccHluY2hlXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXHB5bmNoZQotICBEZXNjcmlwdGlvbj1weW5jaGUgY29sb3IgZWRpdG9yCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlx0b29sc1xweW5jaGVcKi50eHQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXHB5bmNoZQotICBEZXNjcmlwdGlvbj1weW5jaGUgY29sb3IgZWRpdG9yCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlx0b29sc1xweW5jaGVceFwqLnR4dAotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcVG9vbHNccHluY2hlXFgKLSAgRGVzY3JpcHRpb249cHluY2hlIGNvbG9yIGVkaXRvciAtIFggZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHB5bmNoZVxyZWFkbWUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXHB5bmNoZVxSRUFETUUudHh0Ci0gIERlc2NyaXB0aW9uPXB5bmNoZSBjb2xvciBlZGl0b3IgLSBSRUFETUUKLSAgRmxhZ3M9MDAwMDAwMDEwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHB5bmNoZVxweW5jaGUKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXHB5bmNoZVxweW5jaGUucHkKLSAgRGVzY3JpcHRpb249cHluY2hlIGNvbG9yIGVkaXRvciAtIG1haW4KLSAgRmxhZ3M9MDAwMDAwMDEwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXHRvb2xzXHB5bmNoZVxweW5jaGUucHl3Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxUb29sc1xweW5jaGVccHluY2hlLnB5dwotICBEZXNjcmlwdGlvbj1weW5jaGUgY29sb3IgZWRpdG9yIC0gbm9jb25zb2xlIG1haW4KLSAgRmxhZ3M9MDAwMDAwMDEwMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlx0b29sc1xpMThuXCoucHkKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXFRvb2xzXGkxOG4KLSAgRGVzY3JpcHRpb249SW50ZXJuYXRpb25hbGl6YXRpb24gaGVscGVycwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9RTogdGVzdCBzdWl0ZQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9Q09NUE9ORU5UUwotICBWYWx1ZT1FCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXHRlc3RcYXVkaW90ZXN0LmF1Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcdGVzdFxhdWRpb3Rlc3QuYXUKLSAgRGVzY3JpcHRpb249UHl0aG9uIFRlc3QgZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlx0ZXN0XCoudXVlCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcdGVzdAotICBEZXNjcmlwdGlvbj1QeXRob24gVGVzdCBmaWxlcwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXHRlc3RcKi5weQotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXHRlc3QKLSAgRGVzY3JpcHRpb249UHl0aG9uIFRlc3QgZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlx0ZXN0XCoueG1sCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcdGVzdAotICBEZXNjcmlwdGlvbj1QeXRob24gVGVzdCBmaWxlcwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXHRlc3RcKi5vdXQKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlx0ZXN0Ci0gIERlc2NyaXB0aW9uPVB5dGhvbiBUZXN0IGZpbGVzCi0gIEZsYWdzPTAwMDAwMDAwMDAwMDAwMTAKLWVuZAotaXRlbTogSW5zdGFsbCBGaWxlCi0gIFNvdXJjZT0uLlxsaWJcdGVzdFwqLmJ6MgotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXHRlc3QKLSAgRGVzY3JpcHRpb249UHl0aG9uIFRlc3QgZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlx0ZXN0XCoudGFyCi0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcdGVzdAotICBEZXNjcmlwdGlvbj1QeXRob24gVGVzdCBmaWxlcwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IEluc3RhbGwgRmlsZQotICBTb3VyY2U9Li5cbGliXHRlc3RcKi5negotICBEZXN0aW5hdGlvbj0lTUFJTkRJUiVcTGliXHRlc3QKLSAgRGVzY3JpcHRpb249UHl0aG9uIFRlc3QgZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlx0ZXN0XCoudHh0Ci0gIERlc3RpbmF0aW9uPSVNQUlORElSJVxMaWJcdGVzdAotICBEZXNjcmlwdGlvbj1QeXRob24gVGVzdCBmaWxlcwotICBGbGFncz0wMDAwMDAwMDAwMDAwMDEwCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJbnN0YWxsIEZpbGUKLSAgU291cmNlPS4uXGxpYlx0ZXN0XG91dHB1dFwqLioKLSAgRGVzdGluYXRpb249JU1BSU5ESVIlXExpYlx0ZXN0XG91dHB1dAotICBEZXNjcmlwdGlvbj1QeXRob24gVGVzdCBvdXRwdXQgZmlsZXMKLSAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAxMAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PURPTkUgd2l0aCBmaWxlIGNvcHlpbmcuCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRoZSByZXN0IGlzIHJlZ2lzdHJ5IGFuZCBTdGFydCBNZW51IGZpZGRsaW5nLgotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QQotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9VEFTS1MKLSAgVmFsdWU9QQotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1SZWdpc3RlciBmaWxlIGV4dGVuc2lvbnMuICBBcyB1c3VhbCwgQWRtaW4gcHJpdnMgZ2V0IGluIHRoZSB3YXksIGJ1dCB3aXRoIGEgdHdpc3Q6Ci1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVlvdSBkb24ndCBuZWVkIGFkbWluIHByaXZzIHRvIHdyaXRlIHRvIEhLRVlfQ0xBU1NFU19ST09UICpleGNlcHQqIHVuZGVyIFdpbjJLLgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1PbiBXaW4ySywgYSB1c2VyIHdpdGhvdXQgQWRtaW4gcHJpdnMgaGFzIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbnMgdW5kZXIgSEtDVVxTb2Z0d2FyZVxDTEFTU0VTIGluc3RlYWQuCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUJ1dCB3aGlsZSB5b3UgY2FuICpkbyogdGhhdCB1bmRlciBvdGhlciBmbGF2b3JzIG9mIFdpbmRvd3MgdG9vLCBpdCBoYXMgbm8gdXNlZnVsIGVmZmVjdCBleGNlcHQgaW4gV2luMksuCi1lbmQKLWl0ZW06IFNldCBWYXJpYWJsZQotICBWYXJpYWJsZT1VU0VfSEtDUgotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IENoZWNrIENvbmZpZ3VyYXRpb24KLSAgRmxhZ3M9MTExMTAwMTAKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPURPQURNSU4KLSAgVmFsdWU9MAotZW5kCi1pdGVtOiBTZXQgVmFyaWFibGUKLSAgVmFyaWFibGU9VVNFX0hLQ1IKLSAgVmFsdWU9MAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1VU0VfSEtDUgotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUZpbGUgdHlwZXMuCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1QeXRob24uRmlsZQotICBOZXcgVmFsdWU9UHl0aG9uIEZpbGUKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVB5dGhvbi5GaWxlXHNoZWxsXG9wZW5cY29tbWFuZAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXHB5dGhvbi5leGUgIiUlMSIgJSUqCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1QeXRob24uRmlsZVxEZWZhdWx0SWNvbgotICBOZXcgVmFsdWU9JU1BSU5ESVIlXFB5LmljbwotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVB5dGhvbi5Ob0NvbkZpbGUKLSAgTmV3IFZhbHVlPVB5dGhvbiBGaWxlIChubyBjb25zb2xlKQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9UHl0aG9uLk5vQ29uRmlsZVxzaGVsbFxvcGVuXGNvbW1hbmQKLSAgTmV3IFZhbHVlPSVNQUlORElSJVxweXRob253LmV4ZSAiJSUxIiAlJSoKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVB5dGhvbi5Ob0NvbkZpbGVcRGVmYXVsdEljb24KLSAgTmV3IFZhbHVlPSVNQUlORElSJVxQeS5pY28KLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1QeXRob24uQ29tcGlsZWRGaWxlCi0gIE5ldyBWYWx1ZT1Db21waWxlZCBQeXRob24gRmlsZQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9UHl0aG9uLkNvbXBpbGVkRmlsZVxzaGVsbFxvcGVuXGNvbW1hbmQKLSAgTmV3IFZhbHVlPSVNQUlORElSJVxweXRob24uZXhlICIlJTEiICUlKgotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9UHl0aG9uLkNvbXBpbGVkRmlsZVxEZWZhdWx0SWNvbgotICBOZXcgVmFsdWU9JU1BSU5ESVIlXHB5Yy5pY28KLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUZpbGUgZXh0ZW5zaW9ucy4KLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PS5weQotICBOZXcgVmFsdWU9UHl0aG9uLkZpbGUKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PS5weQotICBOZXcgVmFsdWU9dGV4dC9wbGFpbgotICBWYWx1ZSBOYW1lPUNvbnRlbnQgVHlwZQotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PS5weXcKLSAgTmV3IFZhbHVlPVB5dGhvbi5Ob0NvbkZpbGUKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PS5weXcKLSAgTmV3IFZhbHVlPXRleHQvcGxhaW4KLSAgVmFsdWUgTmFtZT1Db250ZW50IFR5cGUKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT0ucHljCi0gIE5ldyBWYWx1ZT1QeXRob24uQ29tcGlsZWRGaWxlCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT0ucHlvCi0gIE5ldyBWYWx1ZT1QeXRob24uQ29tcGlsZWRGaWxlCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUZpbGUgdHlwZXMuCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxDTEFTU0VTXFB5dGhvbi5GaWxlCi0gIE5ldyBWYWx1ZT1QeXRob24gRmlsZQotICBSb290PTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcUHl0aG9uLkZpbGVcc2hlbGxcb3Blblxjb21tYW5kCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiVccHl0aG9uLmV4ZSAiJSUxIiAlJSoKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxDTEFTU0VTXFB5dGhvbi5GaWxlXERlZmF1bHRJY29uCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiVcUHkuaWNvCi0gIFJvb3Q9MQotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcUHl0aG9uLk5vQ29uRmlsZQotICBOZXcgVmFsdWU9UHl0aG9uIEZpbGUgKG5vIGNvbnNvbGUpCi0gIFJvb3Q9MQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcQ0xBU1NFU1xQeXRob24uTm9Db25GaWxlXHNoZWxsXG9wZW5cY29tbWFuZAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXHB5dGhvbncuZXhlICIlJTEiICUlKgotICBSb290PTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcUHl0aG9uLk5vQ29uRmlsZVxEZWZhdWx0SWNvbgotICBOZXcgVmFsdWU9JU1BSU5ESVIlXFB5LmljbwotICBSb290PTEKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxDTEFTU0VTXFB5dGhvbi5Db21waWxlZEZpbGUKLSAgTmV3IFZhbHVlPUNvbXBpbGVkIFB5dGhvbiBGaWxlCi0gIFJvb3Q9MQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcQ0xBU1NFU1xQeXRob24uQ29tcGlsZWRGaWxlXHNoZWxsXG9wZW5cY29tbWFuZAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXHB5dGhvbi5leGUgIiUlMSIgJSUqCi0gIFJvb3Q9MQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcQ0xBU1NFU1xQeXRob24uQ29tcGlsZWRGaWxlXERlZmF1bHRJY29uCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiVccHljLmljbwotICBSb290PTEKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUZpbGUgZXh0ZW5zaW9ucy4KLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcLnB5Ci0gIE5ldyBWYWx1ZT1QeXRob24uRmlsZQotICBSb290PTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcLnB5Ci0gIE5ldyBWYWx1ZT10ZXh0L3BsYWluCi0gIFZhbHVlIE5hbWU9Q29udGVudCBUeXBlCi0gIFJvb3Q9MQotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcLnB5dwotICBOZXcgVmFsdWU9UHl0aG9uLk5vQ29uRmlsZQotICBSb290PTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXENMQVNTRVNcLnB5dwotICBOZXcgVmFsdWU9dGV4dC9wbGFpbgotICBWYWx1ZSBOYW1lPUNvbnRlbnQgVHlwZQotICBSb290PTEKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxDTEFTU0VTXC5weWMKLSAgTmV3IFZhbHVlPVB5dGhvbi5Db21waWxlZEZpbGUKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxDTEFTU0VTXC5weW8KLSAgTmV3IFZhbHVlPVB5dGhvbi5Db21waWxlZEZpbGUKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9SWYgd2UncmUgaW5zdGFsbGluZyBJRExFLCBhbHNvIHNldCBhbiBFZGl0IGNvbnRleHQgbWVudSBhY3Rpb24gdG8gdXNlIElETEUsIGZvciAucHkgYW5kIC5weXcgZmlsZXMuCi1lbmQKLWl0ZW06IElmL1doaWxlIFN0YXRlbWVudAotICBWYXJpYWJsZT1DT01QT05FTlRTCi0gIFZhbHVlPUIKLSAgRmxhZ3M9MDAwMDAwMTAKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPVVTRV9IS0NSCi0gIFZhbHVlPTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVB5dGhvbi5Ob0NvbkZpbGVcc2hlbGxcRWRpdCB3aXRoIElETEVcY29tbWFuZAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXHB5dGhvbncuZXhlICVNQUlORElSJVxMaWJcaWRsZWxpYlxpZGxlLnB5dyAtbiAtZSAiJSUxIgotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9UHl0aG9uLkZpbGVcc2hlbGxcRWRpdCB3aXRoIElETEVcY29tbWFuZAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXHB5dGhvbncuZXhlICVNQUlORElSJVxMaWJcaWRsZWxpYlxpZGxlLnB5dyAtbiAtZSAiJSUxIgotZW5kCi1pdGVtOiBFbHNlIFN0YXRlbWVudAotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcQ0xBU1NFU1xQeXRob24uTm9Db25GaWxlXHNoZWxsXEVkaXQgd2l0aCBJRExFXGNvbW1hbmQKLSAgTmV3IFZhbHVlPSVNQUlORElSJVxweXRob253LmV4ZSAlTUFJTkRJUiVcTGliXGlkbGVsaWJcaWRsZS5weXcgLW4gLWUgIiUlMSIKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxDTEFTU0VTXFB5dGhvbi5GaWxlXHNoZWxsXEVkaXQgd2l0aCBJRExFXGNvbW1hbmQKLSAgTmV3IFZhbHVlPSVNQUlORElSJVxweXRob253LmV4ZSAlTUFJTkRJUiVcTGliXGlkbGVsaWJcaWRsZS5weXcgLW4gLWUgIiUlMSIKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1SZWdpc3RlciBQeXRob24gcGF0aHMuCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVdyaXRlIHRvIEhLTE0gZm9yIGFkbWluLCBlbHNlIEhLQ1UuICBLZWVwIHRoZXNlIGJsb2NrcyBvdGhlcndpc2UgaWRlbnRpY2FsIQotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9RE9BRE1JTgotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVxDdXJyZW50VmVyc2lvbgotICBSb290PTEzMAotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJVBZX1ZFUlNJT04lXEluc3RhbGxQYXRoCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiUKLSAgUm9vdD0yCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwlUFlfVkVSU0lPTiVcSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwCi0gIE5ldyBWYWx1ZT0lQ0dST1VQX1NBVkUlCi0gIE5ldyBWYWx1ZT0KLSAgUm9vdD0yCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwlUFlfVkVSU0lPTiVcUHl0aG9uUGF0aAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXExpYjslTUFJTkRJUiVcRExMcwotICBOZXcgVmFsdWU9Ci0gIFJvb3Q9MgotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJVBZX1ZFUlNJT04lXE1vZHVsZXMKLSAgUm9vdD0yCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxBcHAgUGF0aHNcUHl0aG9uLmV4ZQotICBOZXcgVmFsdWU9JU1BSU5ESVIlXFB5dGhvbi5leGUKLSAgUm9vdD0yCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVxDdXJyZW50VmVyc2lvbgotICBSb290PTEyOQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJVBZX1ZFUlNJT04lXEluc3RhbGxQYXRoCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiUKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwlUFlfVkVSU0lPTiVcSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwCi0gIE5ldyBWYWx1ZT0lQ0dST1VQX1NBVkUlCi0gIE5ldyBWYWx1ZT0KLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwlUFlfVkVSU0lPTiVcUHl0aG9uUGF0aAotICBOZXcgVmFsdWU9JU1BSU5ESVIlXExpYjslTUFJTkRJUiVcRExMcwotICBOZXcgVmFsdWU9Ci0gIFJvb3Q9MQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJVBZX1ZFUlNJT04lXE1vZHVsZXMKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxBcHAgUGF0aHNcUHl0aG9uLmV4ZQotICBOZXcgVmFsdWU9JU1BSU5ESVIlXFB5dGhvbi5leGUKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVJlZ2lzdHJ5IGZpZGRsaW5nIGZvciBkb2NzLgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1Xcml0ZSB0byBIS0xNIGZvciBhZG1pbiwgZWxzZSBIS0NVLiAgS2VlcCB0aGVzZSBibG9ja3Mgb3RoZXJ3aXNlIGlkZW50aWNhbCEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QwotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9RE9BRE1JTgotICBWYWx1ZT0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwlUFlfVkVSU0lPTiVcSGVscFxNYWluIFB5dGhvbiBEb2N1bWVudGF0aW9uCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiVcRG9jXGluZGV4Lmh0bWwKLSAgUm9vdD0yCi1lbmQKLWl0ZW06IEVsc2UgU3RhdGVtZW50Ci1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwlUFlfVkVSU0lPTiVcSGVscFxNYWluIFB5dGhvbiBEb2N1bWVudGF0aW9uCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiVcRG9jXGluZGV4Lmh0bWwKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVNldCB0aGUgYXBwIHB1Ymxpc2hlciBhbmQgVVJMIGVudHJpZXMgZm9yIFdpbjJLIGFkZC9yZW1vdmUuCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUl0IGRvZXNuJ3QgaHVydCBvbiBvdGhlciBzeXN0ZW1zLgotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1BcyB1c3VhbCwgd3JpdGUgdG8gSEtMTSBvciBIS0NVIGRlcGVuZGluZyBvbiBBZG1pbiBwcml2cy4KLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9Q0FVVElPTjogIElmIHlvdSBzZXQgdGhpcyBpbmZvIG9uIHRoZSAiV2luZG93cyAyMDAwIiBwYWdlIChzdGVwIDYpIG9mIHRoZQotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1JbnN0YWxsYXRpb24gRXhwZXJ0LCBpdCBvbmx5IHNob3dzIHVwIGluIHRoZSAiSWYiIGJsb2NrIGJlbG93LiAgS2VlcCBpbiBzeW5jaCEKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPURPQURNSU4KLSAgVmFsdWU9MQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cVW5pbnN0YWxsXCVBUFBUSVRMRSUKLSAgTmV3IFZhbHVlPWh0dHA6Ly93d3cucHl0aG9uLm9yZy8KLSAgVmFsdWUgTmFtZT1IZWxwTGluawotICBSb290PTIKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gIE5ldyBWYWx1ZT1QeXRob25MYWJzIGF0IFpvcGUgQ29ycG9yYXRpb24KLSAgVmFsdWUgTmFtZT1QdWJsaXNoZXIKLSAgUm9vdD0yCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJUFQUFRJVExFJQotICBOZXcgVmFsdWU9aHR0cDovL3d3dy5weXRob24ub3JnLwotICBWYWx1ZSBOYW1lPVVSTEluZm9BYm91dAotICBSb290PTIKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gIE5ldyBWYWx1ZT0lUFlWRVJfU1RSSU5HJQotICBWYWx1ZSBOYW1lPURpc3BsYXlWZXJzaW9uCi0gIFJvb3Q9MgotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cVW5pbnN0YWxsXCVBUFBUSVRMRSUKLSAgTmV3IFZhbHVlPSVNQUlORElSJVxweS5pY28sLTAKLSAgVmFsdWUgTmFtZT1EaXNwbGF5SWNvbgotICBSb290PTIKLWVuZAotaXRlbTogRWxzZSBTdGF0ZW1lbnQKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gIE5ldyBWYWx1ZT1odHRwOi8vd3d3LnB5dGhvbi5vcmcvCi0gIFZhbHVlIE5hbWU9SGVscExpbmsKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJUFQUFRJVExFJQotICBOZXcgVmFsdWU9UHl0aG9uTGFicyBhdCBab3BlIENvcnBvcmF0aW9uCi0gIFZhbHVlIE5hbWU9UHVibGlzaGVyCi0gIFJvb3Q9MQotZW5kCi1pdGVtOiBFZGl0IFJlZ2lzdHJ5Ci0gIFRvdGFsIEtleXM9MQotICBLZXk9U29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cVW5pbnN0YWxsXCVBUFBUSVRMRSUKLSAgTmV3IFZhbHVlPWh0dHA6Ly93d3cucHl0aG9uLm9yZy8KLSAgVmFsdWUgTmFtZT1VUkxJbmZvQWJvdXQKLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVkaXQgUmVnaXN0cnkKLSAgVG90YWwgS2V5cz0xCi0gIEtleT1Tb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJUFQUFRJVExFJQotICBOZXcgVmFsdWU9JVBZVkVSX1NUUklORyUKLSAgVmFsdWUgTmFtZT1EaXNwbGF5VmVyc2lvbgotICBSb290PTEKLWVuZAotaXRlbTogRWRpdCBSZWdpc3RyeQotICBUb3RhbCBLZXlzPTEKLSAgS2V5PVNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlQVBQVElUTEUlCi0gIE5ldyBWYWx1ZT0lTUFJTkRJUiVccHkuaWNvLC0wCi0gIFZhbHVlIE5hbWU9RGlzcGxheUljb24KLSAgUm9vdD0xCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogUmVtYXJrCi0gIFRleHQ9UG9wdWxhdGUgU3RhcnQgTWVudSBncm91cAotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9VEFTS1MKLSAgVmFsdWU9QgotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBSZW1hcmsKLSAgVGV4dD1TaG9ydGN1dCB0byBpbnN0YWxsZXIgbm8gbWF0dGVyIHdoYXQuCi1lbmQKLWl0ZW06IENyZWF0ZSBTaG9ydGN1dAotICBTb3VyY2U9JU1BSU5ESVIlXHVud2lzZS5leGUKLSAgRGVzdGluYXRpb249JUdST1VQJVxVbmluc3RhbGwgUHl0aG9uLmxuawotICBXb3JraW5nIERpcmVjdG9yeT0lTUFJTkRJUiUKLSAgS2V5IFR5cGU9MTUzNgotICBGbGFncz0wMDAwMDAwMQotZW5kCi1pdGVtOiBSZW1hcmsKLWVuZAotaXRlbTogSWYvV2hpbGUgU3RhdGVtZW50Ci0gIFZhcmlhYmxlPUNPTVBPTkVOVFMKLSAgVmFsdWU9QQotICBGbGFncz0wMDAwMDAxMAotZW5kCi1pdGVtOiBDcmVhdGUgU2hvcnRjdXQKLSAgU291cmNlPSVNQUlORElSJVxweXRob24uZXhlCi0gIERlc3RpbmF0aW9uPSVHUk9VUCVcUHl0aG9uIChjb21tYW5kIGxpbmUpLmxuawotICBXb3JraW5nIERpcmVjdG9yeT0lTUFJTkRJUiUKLSAgSWNvbiBQYXRobmFtZT0lTUFJTkRJUiVccHljb24uaWNvCi0gIEtleSBUeXBlPTE1MzYKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9Q09NUE9ORU5UUwotICBWYWx1ZT1CCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENyZWF0ZSBTaG9ydGN1dAotICBTb3VyY2U9JU1BSU5ESVIlXHB5dGhvbncuZXhlCi0gIERlc3RpbmF0aW9uPSVHUk9VUCVcSURMRSAoUHl0aG9uIEdVSSkubG5rCi0gIENvbW1hbmQgT3B0aW9ucz0iJU1BSU5ESVIlXExpYlxpZGxlbGliXGlkbGUucHl3IgotICBXb3JraW5nIERpcmVjdG9yeT0lTUFJTkRJUiUKLSAgS2V5IFR5cGU9MTUzNgotICBGbGFncz0wMDAwMDAwMQotZW5kCi1pdGVtOiBDcmVhdGUgU2hvcnRjdXQKLSAgU291cmNlPSVNQUlORElSJVxweXRob253LmV4ZQotICBEZXN0aW5hdGlvbj0lR1JPVVAlXE1vZHVsZSBEb2NzLmxuawotICBDb21tYW5kIE9wdGlvbnM9IiVNQUlORElSJVxUb29sc1xTY3JpcHRzXHB5ZG9jZ3VpLnB5dyIKLSAgV29ya2luZyBEaXJlY3Rvcnk9JU1BSU5ESVIlCi0gIEtleSBUeXBlPTE1MzYKLSAgRmxhZ3M9MDAwMDAwMDEKLWVuZAotaXRlbTogRW5kIEJsb2NrCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBJZi9XaGlsZSBTdGF0ZW1lbnQKLSAgVmFyaWFibGU9Q09NUE9ORU5UUwotICBWYWx1ZT1DCi0gIEZsYWdzPTAwMDAwMDEwCi1lbmQKLWl0ZW06IENyZWF0ZSBTaG9ydGN1dAotICBTb3VyY2U9JU1BSU5ESVIlXERvY1xpbmRleC5odG1sCi0gIERlc3RpbmF0aW9uPSVHUk9VUCVcUHl0aG9uIE1hbnVhbHMubG5rCi0gIFdvcmtpbmcgRGlyZWN0b3J5PSVNQUlORElSJQotICBLZXkgVHlwZT0xNTM2Ci0gIEZsYWdzPTAwMDAwMDAxCi1lbmQKLWl0ZW06IEVuZCBCbG9jawotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogUmVtYXJrCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PUkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0aGlzLCBidXQgaGF2ZSBhbHdheXMgZG9uZSBpdC4KLWVuZAotaXRlbTogU2VsZi1SZWdpc3RlciBPQ1hzL0RMTHMKLSAgRGVzY3JpcHRpb249VXBkYXRpbmcgU3lzdGVtIENvbmZpZ3VyYXRpb24sIFBsZWFzZSBXYWl0Li4uCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1yZW1hcmtlZCBpdGVtOiBSZW1hcmsKLSAgVGV4dD1Eb24ndCBlbmFibGUgIkRlbGV0ZSBpbi11c2UgZmlsZXMiLiAgSGVyZSdzIHdoYXQgaGFwcGVuczoKLWVuZAotcmVtYXJrZWQgaXRlbTogUmVtYXJrCi0gIFRleHQ9SW5zdGFsbCBQeXRob247IHVuaW5zdGFsbCBQeXRob247IGluc3RhbGwgUHl0aG9uIGFnYWluLiAgUmVib290IHRoZSBtYWNoaW5lLgotZW5kCi1yZW1hcmtlZCBpdGVtOiBSZW1hcmsKLSAgVGV4dD1Ob3cgVU5XSVNFLkVYRSBpcyBtaXNzaW5nLiAgSSB0aGluayB0aGlzIGlzIGEgV2lzZSBidWcsIGJ1dCBzbyBpdCBnb2VzLgotZW5kCi1yZW1hcmtlZCBpdGVtOiBBZGQgVGV4dCB0byBJTlNUQUxMLkxPRwotICBUZXh0PURlbGV0ZSBpbi11c2UgZmlsZXM6IE9uCi1lbmQKLWl0ZW06IFJlbWFyawotZW5kCi1pdGVtOiBXaXphcmQgQmxvY2sKLSAgRGlyZWN0aW9uIFZhcmlhYmxlPURJUkVDVElPTgotICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkKLSAgQml0bWFwIFBhdGhuYW1lPS5caW5zdGFsbGVyLmJtcAotICBYIFBvc2l0aW9uPTkKLSAgWSBQb3NpdGlvbj0xMAotICBGaWxsZXIgQ29sb3I9MTExNzM3NTkKLSAgRmxhZ3M9MDAwMDAwMTEKLWVuZAotaXRlbTogQ3VzdG9tIERpYWxvZyBTZXQKLSAgTmFtZT1GaW5pc2hlZAotICBEaXNwbGF5IFZhcmlhYmxlPURJU1BMQVkKLSAgaXRlbTogRGlhbG9nCi0gICAgVGl0bGU9JUFQUFRJVExFJSBJbnN0YWxsYXRpb24KLSAgICBUaXRsZSBGcmVuY2g9SW5zdGFsbGF0aW9uIGRlICVBUFBUSVRMRSUKLSAgICBUaXRsZSBHZXJtYW49SW5zdGFsbGF0aW9uIHZvbiAlQVBQVElUTEUlCi0gICAgVGl0bGUgU3BhbmlzaD1JbnN0YWxhY2nzbiBkZSAlQVBQVElUTEUlCi0gICAgVGl0bGUgSXRhbGlhbj1JbnN0YWxsYXppb25lIGRpICVBUFBUSVRMRSUKLSAgICBXaWR0aD0zMzkKLSAgICBIZWlnaHQ9MjgwCi0gICAgRm9udCBOYW1lPUhlbHYKLSAgICBGb250IFNpemU9OAotICAgIGl0ZW06IFB1c2ggQnV0dG9uCi0gICAgICBSZWN0YW5nbGU9MTg4IDIzNCAyNDQgMjUzCi0gICAgICBWYXJpYWJsZT1ESVJFQ1RJT04KLSAgICAgIFZhbHVlPU4KLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMQotICAgICAgVGV4dD0mRmluaXNoCi0gICAgICBUZXh0IEZyZW5jaD0mRmluCi0gICAgICBUZXh0IEdlcm1hbj0mV2VpdGVyCi0gICAgICBUZXh0IFNwYW5pc2g9JlRlcm1pbmFyCi0gICAgICBUZXh0IEl0YWxpYW49JkZpbmUKLSAgICBlbmQKLSAgICBpdGVtOiBQdXNoIEJ1dHRvbgotICAgICAgUmVjdGFuZ2xlPTI2NCAyMzQgMzIwIDI1MwotICAgICAgVmFyaWFibGU9RElTQUJMRUQKLSAgICAgIFZhbHVlPSEKLSAgICAgIEFjdGlvbj0zCi0gICAgICBDcmVhdGUgRmxhZ3M9MDEwMTAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAKLSAgICAgIFRleHQ9JkNhbmNlbAotICAgICAgVGV4dCBGcmVuY2g9JkFubnVsZXIKLSAgICAgIFRleHQgR2VybWFuPSZBYmJyZWNoZW4KLSAgICAgIFRleHQgU3BhbmlzaD0mQ2FuY2VsYXIKLSAgICAgIFRleHQgSXRhbGlhbj0mQW5udWxsYQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgUmVjdGFuZ2xlPTEwOCAxMCAzMjMgNDgKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotICAgICAgRmxhZ3M9MDAwMDAwMDAwMDAwMDAwMQotICAgICAgTmFtZT1UaW1lcyBOZXcgUm9tYW4KLSAgICAgIEZvbnQgU3R5bGU9LTI0IDAgMCAwIDcwMCAyNTUgMCAwIDAgMyAyIDEgMTgKLSAgICAgIFRleHQ9SW5zdGFsbGF0aW9uIENvbXBsZXRlZCEKLSAgICAgIFRleHQgRnJlbmNoPUluc3RhbGxhdGlvbiB0ZXJtaW7pZSAhCi0gICAgICBUZXh0IEdlcm1hbj1EaWUgSW5zdGFsbGF0aW9uIGlzdCBhYmdlc2NobG9zc2VuIQotICAgICAgVGV4dCBTcGFuaXNoPaFJbnN0YWxhY2nzbiB0ZXJtaW5hZGEhCi0gICAgICBUZXh0IEl0YWxpYW49SW5zdGFsbGF6aW9uZSBjb21wbGV0YXRhIQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgUmVjdGFuZ2xlPTEwOCA0NCAzMjAgODIKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotICAgICAgVGV4dD0lQVBQVElUTEUlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQuCi0gICAgICBUZXh0PQotICAgICAgVGV4dD1QcmVzcyB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoaXMgaW5zdGFsbGF0aW9uLgotICAgICAgVGV4dCBGcmVuY2g9JUFQUFRJVExFJSBlc3QgbWFpbnRlbmFudCBpbnN0YWxs6S4KLSAgICAgIFRleHQgRnJlbmNoPQotICAgICAgVGV4dCBGcmVuY2g9Q2xpcXVleiBzdXIgbGUgYm91dG9uIEZpbiBwb3VyIHF1aXR0ZXIgbCdpbnN0YWxsYXRpb24uCi0gICAgICBUZXh0IEdlcm1hbj0lQVBQVElUTEUlIHd1cmRlIGVyZm9sZ3JlaWNoIGluc3RhbGxpZXJ0LgotICAgICAgVGV4dCBHZXJtYW49Ci0gICAgICBUZXh0IEdlcm1hbj1LbGlja2VuIFNpZSBhdWYgIldlaXRlciIsIHVtIGRpZSBJbnN0YWxsYXRpb24genUgYmVlbmRlbi4KLSAgICAgIFRleHQgU3BhbmlzaD0lQVBQVElUTEUlIHNlIGhhIGluc3RhbGFkbyBjb24g6XhpdG8uCi0gICAgICBUZXh0IFNwYW5pc2g9Ci0gICAgICBUZXh0IFNwYW5pc2g9UHJlc2lvbmUgZWwgYm90824gVGVybWluYXIgcGFyYSBzYWxpciBkZSBlc3RhIGluc3RhbGFjafNuLgotICAgICAgVGV4dCBJdGFsaWFuPUwnaW5zdGFsbGF6aW9uZSAlQVBQVElUTEUlIOggc3RhdGEgcG9ydGF0YSBhIHRlcm1pbmUgY29uIHN1Y2Nlc3NvLgotICAgICAgVGV4dCBJdGFsaWFuPQotICAgICAgVGV4dCBJdGFsaWFuPVByZW1lcmUgaWwgcHVsc2FudGUgRmluZSBwZXIgdXNjaXJlIGRhbGwnaW5zdGFsbGF6aW9uZS4KLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMCAyMjUgMzIwIDIyNgotICAgICAgQWN0aW9uPTMKLSAgICAgIENyZWF0ZSBGbGFncz0wMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMQotICAgIGVuZAotICAgIGl0ZW06IFN0YXRpYwotICAgICAgUmVjdGFuZ2xlPTEwNiAxMDUgMzEyIDIxMAotICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0gICAgICBUZXh0PVNwZWNpYWwgV2luZG93cyB0aGFua3MgdG86Ci0gICAgICBUZXh0PQotICAgICAgVGV4dD1XaXNlIFNvbHV0aW9ucywgZm9yIHRoZSB1c2Ugb2YgSW5zdGFsbE1hc3RlciA4LjEuCi0gICAgICBUZXh0PSAgICBodHRwOi8vd3d3Lndpc2Vzb2x1dGlvbnMuY29tLwotICAgICAgVGV4dD0KLSAgICAgIFRleHQ9Ci0gICAgICBUZXh0PUxldHRFcnJvciwgRXJpayB2YW4gQmxva2xhbmQsIGZvciB0aGUgUHl0aG9uIGZvciBXaW5kb3dzIGdyYXBoaWMuCi0gICAgICBUZXh0PSAgICBodHRwOi8vd3d3LmxldHRlcnJvci5jb20vCi0gICAgICBUZXh0PQotICAgICAgVGV4dD0KLSAgICAgIFRleHQ9TWFyayBIYW1tb25kLCB3aXRob3V0IHdob3NlIHllYXJzIG9mIGZyZWVseSBzaGFyZWQgV2luZG93cyBleHBlcnRpc2UsIFB5dGhvbiBmb3IgV2luZG93cyB3b3VsZCBzdGlsbCBiZSBQeXRob24gZm9yIERPUy4KLSAgICBlbmQKLSAgICBpdGVtOiBTdGF0aWMKLSAgICAgIFJlY3RhbmdsZT0xMDYgOTUgMzEyIDk2Ci0gICAgICBBY3Rpb249MwotICAgICAgRW5hYmxlZCBDb2xvcj0wMDAwMDAwMDAwMDAwMDAwMTExMTExMTExMTExMTExMQotICAgICAgQ3JlYXRlIEZsYWdzPTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAxCi0gICAgZW5kCi0gIGVuZAotZW5kCi1pdGVtOiBFbmQgQmxvY2sKLWVuZAotaXRlbTogTmV3IEV2ZW50Ci0gIE5hbWU9Q2FuY2VsCi1lbmQKLWl0ZW06IFJlbWFyawotICBUZXh0PVRoaXMgaW5jbHVkZSBzY3JpcHQgc3VwcG9ydHMgYSByb2xsYmFjayB0byBwcmVpbnN0YWxsYXRpb24gc3RhdGUgaWYgdGhlIHVzZXIgY2hvb3NlcyB0byBjYW5jZWwgYmVmb3JlIHRoZSBpbnN0YWxsYXRpb24gaXMgY29tcGxldGUuCi1lbmQKLWl0ZW06IEluY2x1ZGUgU2NyaXB0Ci0gIFBhdGhuYW1lPSVfV0lTRV8lXElOQ0xVREVccm9sbGJhY2sud3NlCi1lbmQKZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YzQxODQuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw4MjYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9InB5dGhvbmNvcmUiDQotCVByb2plY3RHVUlEPSJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTMwfSINCi0JUm9vdE5hbWVzcGFjZT0icHl0aG9uY29yZSINCi0JU2NjUHJvamVjdE5hbWU9InB5dGhvbmNvcmUiDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxweXRob25jb3JlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7VVNFX0RMX0VYUE9SVCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMy5kbGwiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iZ2VuZXJhdGUgYnVpbGRpbmZvIg0KLQkJCQlDb21tYW5kTGluZT0ibWFrZV9idWlsZGluZm8uZXhlICQoQ29uZmlndXJhdGlvbk5hbWUpIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdccHl0aG9uY29yZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtfREVCVUc7VVNFX0RMX0VYUE9SVDtXSU4zMjtfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzX2QuZGxsIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzNfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zM19kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJnZW5lcmF0ZSBidWlsZGluZm8iDQotCQkJCUNvbW1hbmRMaW5lPSJtYWtlX2J1aWxkaW5mby5leGUgJChDb25maWd1cmF0aW9uTmFtZSkiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLi8uIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxweXRob25jb3JlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1VTRV9ETF9FWFBPUlQiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMy5kbGwiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJGQUxTRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzMubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249ImdlbmVyYXRlIGJ1aWxkaW5mbyINCi0JCQkJQ29tbWFuZExpbmU9Im1ha2VfYnVpbGRpbmZvLmV4ZSAkKENvbmZpZ3VyYXRpb25OYW1lKSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLi8uIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxhbWQ2NC10ZW1wLXJlbGVhc2VccHl0aG9uY29yZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7VVNFX0RMX0VYUE9SVCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMy5kbGwiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iZ2VuZXJhdGUgYnVpbGRpbmZvIg0KLQkJCQlDb21tYW5kTGluZT0ibWFrZV9idWlsZGluZm8uZXhlICQoQ29uZmlndXJhdGlvbk5hbWUpIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iX2lvIg0KLSAgICAgICAgICAgIEZpbHRlcj0iIj4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCSAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotDQotCQk8RmlsdGVyDQotCQkJTmFtZT0iemxpYiINCi0JCQlGaWx0ZXI9IiI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemlvLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcemxpYiIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXHpsaWIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1x6bGliIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXHpsaWIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Nzdi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfanNvbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHNwcm9mLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcGlja2xlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcmUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3RydWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBjXF9zdWJwcm9jZXNzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RpbWUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXF93YXJuaW5ncy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhY2N1LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxhY2NlbGVyLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzZGwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiaW5hc2NpaS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxibHRpbm1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJvb2xvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjYXBzdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2VsbG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY2V2YWwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xjb25maWcuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZGxfbnQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR0b2EuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZW51bW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxlcnJvcnMuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZmlsZXV0aWxzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxmaXJzdHNldHMuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZyb3plbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGdjbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hcjEuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxsaXN0bm9kZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxpc3RvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWFpbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbWFyc2hhbC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotIAkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXNucHJpbnRmLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWFyZW5hLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHltYXRoLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cmNtcC5jIg0KLQkJCT4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJ0b2QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5dGltZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cUHl0aG9uLWFzdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fbnQucmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2V0b2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMjU2bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5bXRhYmxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5c21vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHRva2VuaXplci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdHJhY2ViYWNrLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQY1x3aW5yZWcuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemlwaW1wb3J0LmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9weXRob253LnZjcHJvaiBiL1BDL1ZTNy4xL3B5dGhvbncudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2Q3ZjUwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL3B5dGhvbncudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjYxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJweXRob253Ig0KLQlTY2NQcm9qZWN0TmFtZT0icHl0aG9udyINCi0JU2NjTG9jYWxQYXRoPSIuLlwuLlxwYyI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdccHl0aG9udyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9ud19kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbndfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHB5dGhvbnciDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob253LmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbncucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXHB5dGhvbnciDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlPdXRwdXRGaWxlPSIuXC4vcHl0aG9udy5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob253LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VccHl0aG9udyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLlwuL3B5dGhvbncuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9udy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcV2luTWFpbi5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcmVhZG1lLnR4dCBiL1BDL1ZTNy4xL3JlYWRtZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZDhhNzAuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvcmVhZG1lLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi1CdWlsZGluZyBQeXRob24gdXNpbmcgVkMrKyA3LjEKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRoaXMgZGlyZWN0b3J5IGlzIHVzZWQgdG8gYnVpbGQgUHl0aG9uIGZvciBXaW4zMiBwbGF0Zm9ybXMsIGUuZy4gV2luZG93cwotOTUsIDk4IGFuZCBOVC4gIEl0IHJlcXVpcmVzIE1pY3Jvc29mdCBWaXN1YWwgQysrIDcuMQotKGEuay5hLiBWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwMykuCi0oRm9yIG90aGVyIFdpbmRvd3MgcGxhdGZvcm1zIGFuZCBjb21waWxlcnMsIHNlZSAuLi9QQy9yZWFkbWUudHh0LikKLQotQWxsIHlvdSBuZWVkIHRvIGRvIGlzIG9wZW4gdGhlIHdvcmtzcGFjZSAicGNidWlsZC5zbG4iIGluIE1TVkMrKywgc2VsZWN0Ci10aGUgRGVidWcgb3IgUmVsZWFzZSBzZXR0aW5nICh1c2luZyAiU29sdXRpb24gQ29uZmlndXJhdGlvbiIgZnJvbQotdGhlICJTdGFuZGFyZCIgdG9vbGJhciIpLCBhbmQgYnVpbGQgdGhlIHByb2plY3RzLgotCi1UaGUgcHJvcGVyIG9yZGVyIHRvIGJ1aWxkIHN1YnByb2plY3RzOgotCi0xKSBweXRob25jb3JlICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gRExMIGFuZCBsaWJyYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgcHl0aG9uMzMue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCi0gICAgICAgICAgICAgIE5PVEU6ICBpbiBwcmV2aW91cyByZWxlYXNlcywgdGhpcyBzdWJwcm9qZWN0IHdhcwotICAgICAgICAgICAgICBuYW1lZCBhZnRlciB0aGUgcmVsZWFzZSBudW1iZXIsIGUuZy4gcHl0aG9uMjAuCi0KLTIpIHB5dGhvbiAodGhpcyBidWlsZHMgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUsCi0gICAgICAgICAgIHB5dGhvbi5leGUgaW4gUmVsZWFzZSBtb2RlKQotCi0zKSB0aGUgb3RoZXIgc3VicHJvamVjdHMsIGFzIGRlc2lyZWQgb3IgbmVlZGVkIChub3RlOiAgeW91IHByb2JhYmx5IGRvbid0Ci0gICB3YW50IHRvIGJ1aWxkIG1vc3Qgb2YgdGhlIG90aGVyIHN1YnByb2plY3RzLCB1bmxlc3MgeW91J3JlIGJ1aWxkaW5nIGFuCi0gICBlbnRpcmUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBmcm9tIHNjcmF0Y2gsIG9yIHNwZWNpZmljYWxseSBtYWtpbmcgY2hhbmdlcwotICAgdG8gdGhlIHN1YnN5c3RlbXMgdGhleSBpbXBsZW1lbnQsIG9yIGFyZSBydW5uaW5nIGEgUHl0aG9uIGNvcmUgYnVpbGRib3QKLSAgIHRlc3Qgc2xhdmU7IHNlZSBTVUJQUk9KRUNUUyBiZWxvdykKLQotV2hlbiB1c2luZyB0aGUgRGVidWcgc2V0dGluZywgdGhlIG91dHB1dCBmaWxlcyBoYXZlIGEgX2QgYWRkZWQgdG8KLXRoZWlyIG5hbWU6ICBweXRob24zM19kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4KLQotU1VCUFJPSkVDVFMKLS0tLS0tLS0tLS0tCi1UaGVzZSBzdWJwcm9qZWN0cyBzaG91bGQgYnVpbGQgb3V0IG9mIHRoZSBib3guICBTdWJwcm9qZWN0cyBvdGhlciB0aGFuIHRoZQotbWFpbiBvbmVzIChweXRob25jb3JlLCBweXRob24sIHB5dGhvbncpIGdlbmVyYWxseSBidWlsZCBhIERMTCAocmVuYW1lZCB0bwotLnB5ZCkgZnJvbSBhIHNwZWNpZmljIG1vZHVsZSBzbyB0aGF0IHVzZXJzIGRvbid0IGhhdmUgdG8gbG9hZCB0aGUgY29kZQotc3VwcG9ydGluZyB0aGF0IG1vZHVsZSB1bmxlc3MgdGhleSBpbXBvcnQgdGhlIG1vZHVsZS4KLQotcHl0aG9uY29yZQotICAgIC5kbGwgYW5kIC5saWIKLXB5dGhvbgotICAgIC5leGUKLXB5dGhvbncKLSAgICBweXRob253LmV4ZSwgYSB2YXJpYW50IG9mIHB5dGhvbi5leGUgdGhhdCBkb2Vzbid0IHBvcCB1cCBhIERPUyBib3gKLV9zb2NrZXQKLSAgICBzb2NrZXRtb2R1bGUuYwotX3Rlc3RjYXBpCi0gICAgdGVzdHMgb2YgdGhlIFB5dGhvbiBDIEFQSSwgcnVuIHZpYSBMaWIvdGVzdC90ZXN0X2NhcGkucHksIGFuZAotICAgIGltcGxlbWVudGVkIGJ5IG1vZHVsZSBNb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCi1weWV4cGF0Ci0gICAgUHl0aG9uIHdyYXBwZXIgZm9yIGFjY2VsZXJhdGVkIFhNTCBwYXJzaW5nLCB3aGljaCBpbmNvcnBvcmF0ZXMgc3RhYmxlCi0gICAgY29kZSBmcm9tIHRoZSBFeHBhdCBwcm9qZWN0OiAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9leHBhdC8KLXNlbGVjdAotICAgIHNlbGVjdG1vZHVsZS5jCi11bmljb2RlZGF0YQotICAgIGxhcmdlIHRhYmxlcyBvZiBVbmljb2RlIGRhdGEKLXdpbnNvdW5kCi0gICAgcGxheSBzb3VuZHMgKHR5cGljYWxseSAud2F2IGZpbGVzKSB1bmRlciBXaW5kb3dzCi0KLVRoZSBmb2xsb3dpbmcgc3VicHJvamVjdHMgd2lsbCBnZW5lcmFsbHkgTk9UIGJ1aWxkIG91dCBvZiB0aGUgYm94LiAgVGhleQotd3JhcCBjb2RlIFB5dGhvbiBkb2Vzbid0IGNvbnRyb2wsIGFuZCB5b3UnbGwgbmVlZCB0byBkb3dubG9hZCB0aGUgYmFzZQotcGFja2FnZXMgZmlyc3QgYW5kIHVucGFjayB0aGVtIGludG8gc2libGluZ3Mgb2YgUEMncyBwYXJlbnQKLWRpcmVjdG9yeTsgZm9yIGV4YW1wbGUsIGlmIHRoaXMgZGlyZWN0b3J5IGlzIC4uLi5cZGlzdFx0cnVua1xQQ1xWUzcuMSwKLXVucGFjayBpbnRvIG5ldyBzdWJkaXJlY3RvcmllcyBvZiBkaXN0XC4KLQotX3RraW50ZXIKLSAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uICBSZXF1aXJlcyBidWlsZGluZwotICAgIFRjbC9UayBmaXJzdC4gIEZvbGxvd2luZyBhcmUgaW5zdHJ1Y3Rpb25zIGZvciBUY2wvVGsgOC40LjEyLgotCi0gICAgR2V0IHNvdXJjZQotICAgIC0tLS0tLS0tLS0KLSAgICBJbiB0aGUgZGlzdCBkaXJlY3RvcnksIHJ1bgotICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RjbDguNC4xMgotICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RrOC40LjEyCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGl4LTguNC4wCi0KLSAgICBCdWlsZCBUY2wgZmlyc3QgKGRvbmUgaGVyZSB3LyBNU1ZDIDcuMSBvbiBXaW5kb3dzIFhQKQotICAgIC0tLS0tLS0tLS0tLS0tLQotICAgIFVzZSAiU3RhcnQgLT4gQWxsIFByb2dyYW1zIC0+IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIC5ORVQgMjAwMwotICAgICAgICAgLT4gVmlzdWFsIFN0dWRpbyAuTkVUIFRvb2xzIC0+IFZpc3VhbCBTdHVkaW8gLk5FVCAyMDAzIENvbW1hbmQgUHJvbXB0IgotICAgIHRvIGdldCBhIHNoZWxsIHdpbmRvdyB3aXRoIHRoZSBjb3JyZWN0IGVudmlyb25tZW50IHNldHRpbmdzCi0gICAgY2QgZGlzdFx0Y2w4LjQuMTJcd2luCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGluc3RhbGwKLQotICAgIFhYWCBTaG91bGQgd2UgY29tcGlsZSB3aXRoIE9QVFM9dGhyZWFkcz8KLQotICAgIE9wdGlvbmFsOiAgcnVuIHRlc3RzLCB2aWEKLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgdGVzdAotCi0gICAgICAgIE9uIFdpblhQIFBybywgd2hvbGx5IHVwIHRvIGRhdGUgYXMgb2YgMzAtQXVnLTIwMDQ6Ci0gICAgICAgIGFsbC50Y2w6ICAgICAgICBUb3RhbCAgIDEwNjc4ICAgUGFzc2VkICA5OTY5ICAgIFNraXBwZWQgNzA5ICAgICBGYWlsZWQgIDAKLSAgICAgICAgU291cmNlZCAxMjkgVGVzdCBGaWxlcy4KLQotICAgIEJ1aWxkIFRrCi0gICAgLS0tLS0tLS0KLSAgICBjZCBkaXN0XHRrOC40LjEyXHdpbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIFRDTERJUj0uLlwuLlx0Y2w4LjQuMTIKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBUQ0xESVI9Li5cLi5cdGNsOC40LjEyIElOU1RBTExESVI9Li5cLi5cdGNsdGsgaW5zdGFsbAotCi0gICAgWFhYIFNob3VsZCB3ZSBjb21waWxlIHdpdGggT1BUUz10aHJlYWRzPwotCi0gICAgWFhYIE91ciBpbnN0YWxsZXIgY29waWVzIGEgbG90IG9mIHN0dWZmIG91dCBvZiB0aGUgVGNsL1RrIGluc3RhbGwKLSAgICBYWFggZGlyZWN0b3J5LiAgSXMgYWxsIG9mIHRoYXQgcmVhbGx5IG5lZWRlZCBmb3IgUHl0aG9uIHVzZSBvZiBUY2wvVGs/Ci0KLSAgICBPcHRpb25hbDogIHJ1biB0ZXN0cywgdmlhCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIFRDTERJUj0uLlwuLlx0Y2w4LjQuMTIgdGVzdAotCi0gICAgICAgIE9uIFdpblhQIFBybywgd2hvbGx5IHVwIHRvIGRhdGUgYXMgb2YgMzAtQXVnLTIwMDQ6Ci0gICAgICAgIGFsbC50Y2w6ICAgICAgICBUb3RhbCAgIDg0MjAgICAgUGFzc2VkICA2ODI2ICAgIFNraXBwZWQgMTU4MSAgICBGYWlsZWQgIDEzCi0gICAgICAgIFNvdXJjZWQgOTEgVGVzdCBGaWxlcy4KLSAgICAgICAgRmlsZXMgd2l0aCBmYWlsaW5nIHRlc3RzOiBjYW52SW1nLnRlc3Qgc2Nyb2xsYmFyLnRlc3QgdGV4dFdpbmQudGVzdCB3aW5XbS50ZXN0Ci0KLSAgIEJ1aWx0IFRpeAotICAgLS0tLS0tLS0tCi0gICBjZCBkaXN0XHRpeC04LjQuMFx3aW4KLSAgIG5tYWtlIC1mIHB5dGhvbi5tYWsKLSAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgaW5zdGFsbAotCi1iejIKLSAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIGxpYmJ6MiBjb21wcmVzc2lvbiBsaWJyYXJ5LiAgSG9tZXBhZ2UKLSAgICAgICAgaHR0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9iemlwMi8KLSAgICBEb3dubG9hZCB0aGUgc291cmNlIGZyb20gdGhlIHB5dGhvbi5vcmcgY29weSBpbnRvIHRoZSBkaXN0Ci0gICAgZGlyZWN0b3J5OgotCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvYnppcDItMS4wLjMKLQotICAgIEEgY3VzdG9tIHByZS1saW5rIHN0ZXAgaW4gdGhlIGJ6MiBwcm9qZWN0IHNldHRpbmdzIHNob3VsZCBtYW5hZ2UgdG8KLSAgICBidWlsZCBiemlwMi0xLjAuM1xsaWJiejIubGliIGJ5IG1hZ2ljIGJlZm9yZSBiejIucHlkIChvciBiejJfZC5weWQpIGlzCi0gICAgbGlua2VkIGluIFZTNy4xXC4KLSAgICBIb3dldmVyLCB0aGUgYnoyIHByb2plY3QgaXMgbm90IHNtYXJ0IGVub3VnaCB0byByZW1vdmUgYW55dGhpbmcgdW5kZXIKLSAgICBiemlwMi0xLjAuM1wgd2hlbiB5b3UgZG8gYSBjbGVhbiwgc28gaWYgeW91IHdhbnQgdG8gcmVidWlsZCBiemlwMi5saWIKLSAgICB5b3UgbmVlZCB0byBjbGVhbiB1cCBiemlwMi0xLjAuM1wgYnkgaGFuZC4KLQotICAgIFRoZSBidWlsZCBzdGVwIHNob3VsZG4ndCB5aWVsZCBhbnkgd2FybmluZ3Mgb3IgZXJyb3JzLCBhbmQgc2hvdWxkIGVuZAotICAgIGJ5IGRpc3BsYXlpbmcgNiBibG9ja3MgZWFjaCB0ZXJtaW5hdGVkIHdpdGgKLSAgICAgICAgRkM6IG5vIGRpZmZlcmVuY2VzIGVuY291bnRlcmVkCi0KLSAgICBBbGwgb2YgdGhpcyBtYW5hZ2VkIHRvIGJ1aWxkIGJ6aXAyLTEuMC4zXGxpYmJ6Mi5saWIsIHdoaWNoIHRoZSBQeXRob24KLSAgICBwcm9qZWN0IGxpbmtzIGluLgotCi1fc3FsaXRlMwotICAgIFB5dGhvbiB3cmFwcGVyIGZvciBTUUxpdGUgbGlicmFyeS4KLSAgICAKLSAgICBHZXQgdGhlIHNvdXJjZSBjb2RlIHRocm91Z2gKLSAgICAKLSAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9zcWxpdGUtc291cmNlLTMuMy40Ci0gICAgCi0gICAgVG8gdXNlIHRoZSBleHRlbnNpb24gbW9kdWxlIGluIGEgUHl0aG9uIGJ1aWxkIHRyZWUsIGNvcHkgc3FsaXRlMy5kbGwgaW50bwotICAgIHRoZSBWUzcuMSBmb2xkZXIuCi0KLV9zc2wKLSAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIHNlY3VyZSBzb2NrZXRzIGxpYnJhcnkuCi0KLSAgICBHZXQgdGhlIHNvdXJjZSBjb2RlIHRocm91Z2gKLQotICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMC45LjhhCi0KLSAgICBBbHRlcm5hdGl2ZWx5LCBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gaHR0cDovL3d3dy5vcGVuc3NsLm9yZy4KLSAgICBZb3UgY2FuICh0aGVvcmV0aWNhbGx5KSB1c2UgYW55IHZlcnNpb24gb2YgT3BlblNTTCB5b3UgbGlrZSAtIHRoZQotICAgIGJ1aWxkIHByb2Nlc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IHNlbGVjdCB0aGUgbGF0ZXN0IHZlcnNpb24uCi0KLSAgICBZb3UgbXVzdCBhbHNvIGluc3RhbGwgQWN0aXZlUGVybCBmcm9tCi0gICAgICAgIGh0dHA6Ly93d3cuYWN0aXZlc3RhdGUuY29tL1Byb2R1Y3RzL0FjdGl2ZVBlcmwvCi0gICAgYXMgdGhpcyBpcyB1c2VkIGJ5IHRoZSBPcGVuU1NMIGJ1aWxkIHByb2Nlc3MuICBDb21wbGFpbiB0byB0aGVtIDx3aW5rPi4KLQotICAgIFRoZSBNU1ZDIHByb2plY3Qgc2ltcGx5IGludm9rZXMgYnVpbGRfc3NsLnB5IHRvIHBlcmZvcm0KLSAgICB0aGUgYnVpbGQuICBUaGlzIFB5dGhvbiBzY3JpcHQgbG9jYXRlcyBhbmQgYnVpbGRzIHlvdXIgT3BlblNTTAotICAgIGluc3RhbGxhdGlvbiwgdGhlbiBpbnZva2VzIGEgc2ltcGxlIG1ha2VmaWxlIHRvIGJ1aWxkIHRoZSBmaW5hbCAucHlkLgotCi0gICAgYnVpbGRfc3NsLnB5IGF0dGVtcHRzIHRvIGNhdGNoIHRoZSBtb3N0IGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgbm90Ci0gICAgYmVpbmcgYWJsZSB0byBmaW5kIE9wZW5TU0wgc291cmNlcywgb3Igbm90IGJlaW5nIGFibGUgdG8gZmluZCBhIFBlcmwKLSAgICB0aGF0IHdvcmtzIHdpdGggT3BlblNTTCkgYW5kIGdpdmUgYSByZWFzb25hYmxlIGVycm9yIG1lc3NhZ2UuCi0gICAgSWYgeW91IGhhdmUgYSBwcm9ibGVtIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIGhhbmRsZWQgY29ycmVjdGx5Ci0gICAgKGVnLCB5b3Uga25vdyB5b3UgaGF2ZSBBY3RpdmVQZXJsIGJ1dCB3ZSBjYW4ndCBmaW5kIGl0KSwgcGxlYXNlIHRha2UKLSAgICBhIHBlZWsgYXQgYnVpbGRfc3NsLnB5IGFuZCBzdWdnZXN0IHBhdGNoZXMuICBOb3RlIHRoYXQgYnVpbGRfc3NsLnB5Ci0gICAgc2hvdWxkIGJlIGFibGUgdG8gYmUgcnVuIGRpcmVjdGx5IGZyb20gdGhlIGNvbW1hbmQtbGluZS4KLQotICAgIGJ1aWxkX3NzbC5weS9NU1ZDIGlzbid0IGNsZXZlciBlbm91Z2ggdG8gY2xlYW4gT3BlblNTTCAtIHlvdSBtdXN0IGRvCi0gICAgdGhpcyBieSBoYW5kLgotCi1CdWlsZGluZyBmb3IgSXRhbml1bQotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIHByb2plY3QgZmlsZXMgc3VwcG9ydCBhIFJlbGVhc2VJdGFuaXVtIGNvbmZpZ3VyYXRpb24gd2hpY2ggY3JlYXRlcwotV2luNjQvSXRhbml1bSBiaW5hcmllcy4gRm9yIHRoaXMgdG8gd29yaywgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgUGxhdGZvcm0KLVNESywgaW4gcGFydGljdWxhciB0aGUgNjQtYml0IHN1cHBvcnQuIFRoaXMgaW5jbHVkZXMgYW4gSXRhbml1bSBjb21waWxlcgotKGZ1dHVyZSByZWxlYXNlcyBvZiB0aGUgU0RLIGxpa2VseSBpbmNsdWRlIGFuIEFNRDY0IGNvbXBpbGVyIGFzIHdlbGwpLgotSW4gYWRkaXRpb24sIHlvdSBuZWVkIHRoZSBWaXN1YWwgU3R1ZGlvIHBsdWdpbiBmb3IgZXh0ZXJuYWwgQyBjb21waWxlcnMsCi1mcm9tIGh0dHA6Ly9zZi5uZXQvcHJvamVjdHMvdnNleHRjb21wLiBUaGUgcGx1Z2luIHdpbGwgd3JhcCBjbC5leGUsIHRvCi1sb2NhdGUgdGhlIHByb3BlciB0YXJnZXQgY29tcGlsZXIsIGFuZCBjb252ZXJ0IGNvbXBpbGVyIG9wdGlvbnMKLWFjY29yZGluZ2x5LiBUaGUgcHJvamVjdCBmaWxlcyByZXF1aXJlIGF0bGVhc3QgdmVyc2lvbiAwLjkuCi0KLUJ1aWxkaW5nIGZvciBBTUQ2NAotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgUmVsZWFzZUFNRDY0IGNvbmZpZ3VyYXRpb24gaXMgdmVyeSBzaW1pbGFyCi10byB0aGUgSXRhbml1bSBjb25maWd1cmF0aW9uOyBtYWtlIHN1cmUgeW91IHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YKLXZzZXh0Y29tcC4KLQotQnVpbGRpbmcgUHl0aG9uIFVzaW5nIHRoZSBmcmVlIE1TIFRvb2xraXQgQ29tcGlsZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBidWlsZCBwcm9jZXNzIGZvciBWaXN1YWwgQysrIGNhbiBiZSB1c2VkIGFsbW9zdCB1bmNoYW5nZWQgd2l0aCB0aGUgZnJlZSBNUwotVG9vbGtpdCBDb21waWxlci4gVGhpcyBwcm92aWRlcyBhIHdheSBvZiBidWlsZGluZyBQeXRob24gdXNpbmcgZnJlZWx5Ci1hdmFpbGFibGUgc29mdHdhcmUuCi0KLU5vdGUgdGhhdCBNaWNyb3NvZnQgaGF2ZSB3aXRoZHJhd24gdGhlIGZyZWUgTVMgVG9vbGtpdCBDb21waWxlciwgc28gdGhpcyBjYW4KLW5vIGxvbmdlciBiZSBjb25zaWRlcmVkIGEgc3VwcG9ydGVkIG9wdGlvbi4gVGhlIGluc3RydWN0aW9ucyBhcmUgc3RpbGwKLWNvcnJlY3QsIGJ1dCB5b3UgbmVlZCB0byBhbHJlYWR5IGhhdmUgYSBjb3B5IG9mIHRoZSBjb21waWxlciBpbiBvcmRlciB0byB1c2UKLXRoZW0uIE1pY3Jvc29mdCBub3cgc3VwcGx5IFZpc3VhbCBDKysgMjAwOCBFeHByZXNzIEVkaXRpb24gZm9yIGZyZWUsIGJ1dCB0aGlzCi1pcyBOT1QgY29tcGF0aWJsZSB3aXRoIFZpc3VhbCBDKysgNy4xIChpdCB1c2VzIGEgZGlmZmVyZW50IEMgcnVudGltZSksIGFuZCBzbwotY2Fubm90IGJlIHVzZWQgdG8gYnVpbGQgYSB2ZXJzaW9uIG9mIFB5dGhvbiBjb21wYXRpYmxlIHdpdGggdGhlIHN0YW5kYXJkCi1weXRob24ub3JnIGJ1aWxkLiBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdXNpbmcgVmlzdWFsIEMrKyAyMDA4IEV4cHJlc3MKLUVkaXRpb24sIGhvd2V2ZXIsIHlvdSBzaG91bGQgbG9vayBhdCB0aGUgUENCdWlsZCBkaXJlY3RvcnkuCi0KLVJlcXVpcmVtZW50cwotCi0gICAgVG8gYnVpbGQgUHl0aG9uLCB0aGUgZm9sbG93aW5nIHRvb2xzIGFyZSByZXF1aXJlZDoKLQotICAgICogVGhlIFZpc3VhbCBDKysgVG9vbGtpdCBDb21waWxlcgotICAgICAgICBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHNlZSBhYm92ZQotICAgICogQSByZWNlbnQgUGxhdGZvcm0gU0RLCi0gICAgICAgIGZyb20gaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SUQ9NDg0MjY5ZTItM2I4OS00N2UzLThlYjctMWYyYmU2ZDcxMjNhCi0gICAgKiBUaGUgLk5FVCAxLjEgU0RLCi0gICAgICAgIGZyb20gaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SUQ9OWIzYTJjYTYtMzY0Ny00MDcwLTlmNDEtYTMzM2M2YjkxODFkCi0KLSAgICBbRG9lcyBhbnlvbmUgaGF2ZSBiZXR0ZXIgVVJMcyBmb3IgdGhlIGxhc3QgMiBvZiB0aGVzZT9dCi0KLSAgICBUaGUgdG9vbGtpdCBjb21waWxlciBpcyBuZWVkZWQgYXMgaXQgaXMgYW4gb3B0aW1pc2luZyBjb21waWxlciAodGhlCi0gICAgY29tcGlsZXIgc3VwcGxpZWQgd2l0aCB0aGUgLk5FVCBTREsgaXMgYSBub24tb3B0aW1pc2luZyB2ZXJzaW9uKS4gVGhlCi0gICAgcGxhdGZvcm0gU0RLIGlzIG5lZWRlZCB0byBwcm92aWRlIHRoZSBXaW5kb3dzIGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzCi0gICAgKHRoZSBXaW5kb3dzIDIwMDMgU2VydmVyIFNQMSBlZGl0aW9uLCB0eXBpY2FsIGluc3RhbGwsIGlzIGtub3duIHRvIHdvcmsgLQotICAgIG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIHZlcnNpb25zIGFyZSBwcm9iYWJseSBmaW5lIGFzIHdlbGwpLiBUaGUgLk5FVCAxLjEKLSAgICBTREsgaXMgbmVlZGVkIGJlY2F1c2UgaXQgY29udGFpbnMgYSB2ZXJzaW9uIG9mIG1zdmNydC5kbGwgd2hpY2ggbGlua3MgdG8KLSAgICB0aGUgbXN2Y3I3MS5kbGwgQ1JULiBOb3RlIHRoYXQgdGhlIC5ORVQgMi4wIFNESyBpcyBOT1QgYWNjZXB0YWJsZSwgYXMgaXQKLSAgICByZWZlcmVuY2VzIG1zdmNyODAuZGxsLgotCi0gICAgQWxsIG9mIHRoZSBhYm92ZSBpdGVtcyBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIG5vcm1hbC4KLQotICAgIElmIHlvdSBpbnRlbmQgdG8gYnVpbGQgdGhlIG9wZW5zc2wgKG5lZWRlZCBmb3IgdGhlIF9zc2wgZXh0ZW5zaW9uKSB5b3UKLSAgICB3aWxsIG5lZWQgdGhlIEMgcnVudGltZSBzb3VyY2VzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHRoZSBwbGF0Zm9ybSBTREsuCi0KLSAgICBJbiBhZGRpdGlvbiwgeW91IHdpbGwgbmVlZCBOYW50LCBhdmFpbGFibGUgZnJvbQotICAgIGh0dHA6Ly9uYW50LnNvdXJjZWZvcmdlLm5ldC4gVGhlIDAuODUgcmVsZWFzZSBjYW5kaWRhdGUgMyB2ZXJzaW9uIGlzIGtub3duCi0gICAgdG8gd29yay4gVGhpcyBpcyB0aGUgbGF0ZXN0IHJlbGVhc2VkIHZlcnNpb24gYXQgdGhlIHRpbWUgb2Ygd3JpdGluZy4gTGF0ZXIKLSAgICAibmlnaHRseSBidWlsZCIgdmVyc2lvbnMgYXJlIGtub3duIE5PVCB0byB3b3JrIC0gaXQgaXMgbm90IGNsZWFyIGF0Ci0gICAgcHJlc2VudCB3aGV0aGVyIGZ1dHVyZSByZWxlYXNlZCB2ZXJzaW9ucyB3aWxsIHdvcmsuCi0KLVNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50Ci0KLSAgICBTdGFydCBhIHBsYXRmb3JtIFNESyAiYnVpbGQgZW52aXJvbm1lbnQgd2luZG93IiBmcm9tIHRoZSBzdGFydCBtZW51LiBUaGUKLSAgICAiV2luZG93cyBYUCAzMi1iaXQgcmV0YWlsIiB2ZXJzaW9uIGlzIGtub3duIHRvIHdvcmsuCi0KLSAgICBBZGQgdGhlIGZvbGxvd2luZyBkaXJlY3RvcmllcyB0byB5b3VyIFBBVEg6Ci0gICAgICAgICogVGhlIHRvb2xraXQgY29tcGlsZXIgZGlyZWN0b3J5Ci0gICAgICAgICogVGhlIFNESyAiV2luNjQiIGJpbmFyaWVzIGRpcmVjdG9yeQotCSogVGhlIE5hbnQgZGlyZWN0b3J5Ci0gICAgQWRkIHRvIHlvdXIgSU5DTFVERSBlbnZpcm9ubWVudCB2YXJpYWJsZToKLSAgICAgICAgKiBUaGUgdG9vbGtpdCBjb21waWxlciBJTkNMVURFIGRpcmVjdG9yeQotICAgIEFkZCB0byB5b3VyIExJQiBlbnZpcm9ubWVudCB2YXJpYWJsZToKLSAgICAgICAgKiBUaGUgdG9vbGtpdCBjb21waWxlciBMSUIgZGlyZWN0b3J5Ci0JKiBUaGUgLk5FVCBTREsgVmlzdWFsIFN0dWRpbyAyMDAzIFZDN1xsaWIgZGlyZWN0b3J5Ci0KLSAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3VsZCBzZXQgdGhpbmdzIHVwIGFzIHlvdSBuZWVkIHRoZW06Ci0KLSAgICAgICAgcmVtIFNldCB0aGVzZSB2YWx1ZXMgYWNjb3JkaW5nIHRvIHdoZXJlIHlvdSBpbnN0YWxsZWQgdGhlIHNvZnR3YXJlCi0gICAgICAgIHNldCBUT09MS0lUPUM6XFByb2dyYW0gRmlsZXNcTWljcm9zb2Z0IFZpc3VhbCBDKysgVG9vbGtpdCAyMDAzCi0gICAgICAgIHNldCBTREs9QzpcUHJvZ3JhbSBGaWxlc1xNaWNyb3NvZnQgUGxhdGZvcm0gU0RLCi0gICAgICAgIHNldCBORVQ9QzpcUHJvZ3JhbSBGaWxlc1xNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAuTkVUIDIwMDMKLSAgICAgICAgc2V0IE5BTlQ9QzpcVXRpbHNcTmFudAotCi0gICAgICAgIHNldCBQQVRIPSVUT09MS0lUJVxiaW47JVBBVEglOyVTREslXEJpblx3aW42NDslTkFOVCVcYmluCi0gICAgICAgIHNldCBJTkNMVURFPSVUT09MS0lUJVxpbmNsdWRlOyVJTkNMVURFJQotICAgICAgICBzZXQgTElCPSVUT09MS0lUJVxsaWI7JU5FVCVcVkM3XGxpYjslTElCJQotCi0gICAgVGhlICJ3aW42NCIgZGlyZWN0b3J5IGZyb20gdGhlIFNESyBpcyBhZGRlZCB0byBzdXBwbHkgZXhlY3V0YWJsZXMgc3VjaCBhcwotICAgICJjdnRyZXMiIGFuZCAibGliIiwgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgZWxzZXdoZXJlLiBUaGUgdmVyc2lvbnMgaW4gdGhlCi0gICAgIndpbjY0IiBkaXJlY3RvcnkgYXJlIDMyLWJpdCBwcm9ncmFtcywgc28gdGhleSBhcmUgZmluZSB0byB1c2UgaGVyZS4KLQotICAgIFRoYXQncyBpdC4gVG8gYnVpbGQgUHl0aG9uICh0aGUgY29yZSBvbmx5LCBubyBiaW5hcnkgZXh0ZW5zaW9ucyB3aGljaAotICAgIGRlcGVuZCBvbiBleHRlcm5hbCBsaWJyYXJpZXMpIHlvdSBqdXN0IG5lZWQgdG8gaXNzdWUgdGhlIGNvbW1hbmQKLQotICAgICAgICBuYW50IC1idWlsZGZpbGU6cHl0aG9uLmJ1aWxkIGFsbAotCi0gICAgZnJvbSB3aXRoaW4gdGhlIFZTNy4xIGRpcmVjdG9yeS4KLQotRXh0ZW5zaW9uIG1vZHVsZXMKLQotICAgIFRvIGJ1aWxkIHRob3NlIGV4dGVuc2lvbiBtb2R1bGVzIHdoaWNoIHJlcXVpcmUgZXh0ZXJuYWwgbGlicmFyaWVzCi0gICAgKF90a2ludGVyLCBiejIsIF9zcWxpdGUzLCBfc3NsKSB5b3UgY2FuIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zCi0gICAgZm9yIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkIGFib3ZlLCB3aXRoIGEgZmV3IG1pbm9yIG1vZGlmaWNhdGlvbnMuIFRoZXNlCi0gICAgaW5zdHJ1Y3Rpb25zIGhhdmUgb25seSBiZWVuIHRlc3RlZCB1c2luZyB0aGUgc291cmNlcyBpbiB0aGUgUHl0aG9uCi0gICAgc3VidmVyc2lvbiByZXBvc2l0b3J5IC0gYnVpbGRpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2VzIHNob3VsZCB3b3JrLCBidXQKLSAgICBoYXMgbm90IGJlZW4gdGVzdGVkLgotCi0gICAgRm9yIGVhY2ggZXh0ZW5zaW9uIG1vZHVsZSB5b3Ugd2lzaCB0byBidWlsZCwgeW91IHNob3VsZCByZW1vdmUgdGhlCi0gICAgYXNzb2NpYXRlZCBpbmNsdWRlIGxpbmUgZnJvbSB0aGUgZXhjbHVkZXByb2plY3RzIHNlY3Rpb24gb2YgcGMuYnVpbGQuCi0KLSAgICBUaGUgY2hhbmdlcyByZXF1aXJlZCBhcmU6Ci0KLSAgICBfdGtpbnRlcgotICAgICAgICBUaGUgdGl4IG1ha2VmaWxlICh0aXgtOC40LjBcd2luXG1ha2VmaWxlLnZjKSBtdXN0IGJlIG1vZGlmaWVkIHRvCi0JcmVtb3ZlIHJlZmVyZW5jZXMgdG8gVE9PTFMzMi4gVGhlIHJlbGV2YW50IGxpbmVzIHNob3VsZCBiZSBjaGFuZ2VkIHRvCi0JcmVhZDoKLSAgICAgICAgICAgIGNjMzIgPSBjbC5leGUKLSAgICAgICAgICAgIGxpbmszMiA9IGxpbmsuZXhlCi0gICAgICAgICAgICBpbmNsdWRlMzIgPSAKLQlUaGUgcmVtYWluZGVyIG9mIHRoZSBidWlsZCBpbnN0cnVjdGlvbnMgd2lsbCB3b3JrIGFzIGdpdmVuLgotCi0gICAgYnoyCi0gICAgICAgIE5vIGNoYW5nZXMgYXJlIG5lZWRlZAotCi0gICAgX3NxbGl0ZTMKLSAgICAgICAgTm8gY2hhbmdlcyBhcmUgbmVlZGVkLiBIb3dldmVyLCBpbiBvcmRlciBmb3IgdGhlIHRlc3RzIHRvIHN1Y2NlZWQsIGEKLQljb3B5IG9mIHNxbGl0ZTMuZGxsIG11c3QgYmUgZG93bmxvYWRlZCwgYW5kIHBsYWNlZCBhbG9uZ3NpZGUKLQlweXRob24uZXhlLgotCi0gICAgX3NzbAotICAgICAgICBUaGUgZG9jdW1lbnRlZCBidWlsZCBwcm9jZXNzIHdvcmtzIGFzIHdyaXR0ZW4uIEhvd2V2ZXIsIGl0IG5lZWRzIGEKLQljb3B5IG9mIHRoZSBmaWxlIHNldGFyZ3Yub2JqLCB3aGljaCBpcyBub3Qgc3VwcGxpZWQgaW4gdGhlIHBsYXRmb3JtCi0JU0RLLiBIb3dldmVyLCB0aGUgc291cmNlcyBhcmUgYXZhaWxhYmxlIChpbiB0aGUgY3J0IHNvdXJjZSBjb2RlKS4gVG8KLQlidWlsZCBzZXRhcmd2Lm9iaiwgcHJvY2VlZCBhcyBmb2xsb3dzOgotCi0gICAgICAgIENvcHkgc2V0YXJndi5jLCBjcnVudGltZS5oIGFuZCBpbnRlcm5hbC5oIGZyb20gJVNESyVcc3JjXGNydCB0byBhCi0JdGVtcG9yYXJ5IGRpcmVjdG9yeS4KLQlDb21waWxlIHVzaW5nICJjbCAvYyAvSS4gL01EIC9EX0NSVEJMRCBzZXRhcmd2LmMiCi0JQ29weSB0aGUgcmVzdWx0aW5nIHNldGFyZ3Yub2JqIHRvIHNvbWV3aGVyZSBvbiB5b3VyIExJQiBlbnZpcm9ubWVudAotCSglU0RLJVxsaWIgaXMgYSByZWFzb25hYmxlIHBsYWNlKS4KLQotCVdpdGggc2V0YXJndi5vYmogaW4gcGxhY2UsIHRoZSBzdGFuZGFyZCBidWlsZCBwcm9jZXNzIHNob3VsZCB3b3JrCi0JZmluZS4KLQotWU9VUiBPV04gRVhURU5TSU9OIERMTHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1JZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBvd24gZXh0ZW5zaW9uIG1vZHVsZSBETEwsIHRoZXJlJ3MgYW4gZXhhbXBsZQotd2l0aCBlYXN5LXRvLWZvbGxvdyBpbnN0cnVjdGlvbnMgaW4gLi4vUEMvZXhhbXBsZS87IHJlYWQgdGhlIGZpbGUKLXJlYWRtZS50eHQgdGhlcmUgZmlyc3QuCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9ybXB5Yy5weSBiL1BDL1ZTNy4xL3JtcHljLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2M4NTc2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL3JtcHljLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyBSZW1vdmUgYWxsIHRoZSAucHljIGFuZCAucHlvIGZpbGVzIHVuZGVyIC4uL0xpYi4KLQotCi1kZWYgZGVsdHJlZShyb290KToKLSAgICBpbXBvcnQgb3MKLSAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGpvaW4KLQotICAgIG5weWMgPSBucHlvID0gMAotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHJvb3QpOgotICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgIGRlbGV0ZSA9IEZhbHNlCi0gICAgICAgICAgICBpZiBuYW1lLmVuZHN3aXRoKCcucHljJyk6Ci0gICAgICAgICAgICAgICAgZGVsZXRlID0gVHJ1ZQotICAgICAgICAgICAgICAgIG5weWMgKz0gMQotICAgICAgICAgICAgZWxpZiBuYW1lLmVuZHN3aXRoKCcucHlvJyk6Ci0gICAgICAgICAgICAgICAgZGVsZXRlID0gVHJ1ZQotICAgICAgICAgICAgICAgIG5weW8gKz0gMQotCi0gICAgICAgICAgICBpZiBkZWxldGU6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGpvaW4ocm9vdCwgbmFtZSkpCi0KLSAgICByZXR1cm4gbnB5YywgbnB5bwotCi1ucHljLCBucHlvID0gZGVsdHJlZSgiLi4vTGliIikKLXByaW50IG5weWMsICIucHljIGRlbGV0ZWQsIiwgbnB5bywgIi5weW8gZGVsZXRlZCIKZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3J0LmJhdCBiL1BDL1ZTNy4xL3J0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTkxMGE3OS4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9ydC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1AZWNobyBvZmYKLXJlbSBSdW4gVGVzdHMuICBSdW4gdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZS4KLXJlbSBVc2FnZTogIHJ0IFstZF0gWy1PXSBbLXFdIHJlZ3J0ZXN0X2FyZ3MKLXJlbSAtZCAgIFJ1biBEZWJ1ZyBidWlsZCAocHl0aG9uX2QuZXhlKS4gIEVsc2UgcmVsZWFzZSBidWlsZC4KLXJlbSAtTyAgIFJ1biBweXRob24uZXhlIG9yIHB5dGhvbl9kLmV4ZSAoc2VlIC1kKSB3aXRoIC1PLgotcmVtIC1xICAgInF1aWNrIiAtLSBub3JtYWxseSB0aGUgdGVzdHMgYXJlIHJ1biB0d2ljZSwgdGhlIGZpcnN0IHRpbWUKLXJlbSAgICAgIGFmdGVyIGRlbGV0aW5nIGFsbCB0aGUgLnB5W2NvXSBmaWxlcyByZWFjaGFibGUgZnJvbSBMaWIvLgotcmVtICAgICAgLXEgcnVucyB0aGUgdGVzdHMganVzdCBvbmNlLCBhbmQgd2l0aG91dCBkZWxldGluZyAucHlbY29dIGZpbGVzLgotcmVtIEFsbCBsZWFkaW5nIGluc3RhbmNlcyBvZiB0aGVzZSBzd2l0Y2hlcyBhcmUgc2hpZnRlZCBvZmYsIGFuZAotcmVtIHdoYXRldmVyIHJlbWFpbnMgaXMgcGFzc2VkIHRvIHJlZ3J0ZXN0LnB5LiAgRm9yIGV4YW1wbGUsCi1yZW0gICAgIHJ0IC1PIC1kIC14IHRlc3RfdGhyZWFkCi1yZW0gcnVucwotcmVtICAgICBweXRob25fZCAtTyAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAteCB0ZXN0X3RocmVhZAotcmVtIHR3aWNlLCBhbmQKLXJlbSAgICAgcnQgLXEgLWcgdGVzdF9iaW5hc2NpaQotcmVtIHJ1bnMKLXJlbSAgICAgcHl0aG9uX2QgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLWcgdGVzdF9iaW5hc2NpaQotcmVtIHRvIGdlbmVyYXRlIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBmb3IgYmluYXNjaWkgcXVpY2tseS4KLXJlbQotcmVtIENvbmZ1c2luZzogIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgbGlrZQotcmVtICAgICAtdSBuZXR3b3JrLGxhcmdlZmlsZQotcmVtIHRoZW4geW91IGhhdmUgdG8gcXVvdGUgaXQgb24gdGhlIHJ0IGxpbmUsIGxpa2UKLXJlbSAgICAgcnQgLXUgIm5ldHdvcmssbGFyZ2VmaWxlIgotCi1zZXRsb2NhbAotCi1zZXQgZXhlPXB5dGhvbgotc2V0IHFtb2RlPQotc2V0IGRhc2hPPQotUEFUSCAlUEFUSCU7JX5kcDAuLlwuLlwuLlx0Y2x0a1xiaW4KLQotOkNoZWNrT3B0cwotaWYgIiUxIj09Ii1PIiAoc2V0IGRhc2hPPS1PKSAgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCi1pZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwotCi1zZXQgY21kPSVleGUlICVkYXNoTyUgLUUgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKLWlmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQotCi1lY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4KLSVleGUlIHJtcHljLnB5Ci0KLWVjaG8gb24KLSVjbWQlCi1AZWNobyBvZmYKLQotZWNobyBBYm91dCB0byBydW4gYWdhaW4gd2l0aG91dCBkZWxldGluZyAucHljLy5weW8gZmlyc3Q6Ci1wYXVzZQotCi06UW1vZGUKLWVjaG8gb24KLSVjbWQlCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9zZWxlY3QudmNwcm9qIGIvUEMvVlM3LjEvc2VsZWN0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI1MmQ0NS4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS9zZWxlY3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJzZWxlY3QiDQotCVNjY1Byb2plY3ROYW1lPSJzZWxlY3QiDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxzZWxlY3QiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0LnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3NlbGVjdC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9zZWxlY3QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHNlbGVjdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0X2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyxtc3ZjcnQiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3NlbGVjdF9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3NlbGVjdF9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxzZWxlY3QiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3NlbGVjdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vc2VsZWN0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2Vcc2VsZWN0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3NlbGVjdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vc2VsZWN0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvdW5pY29kZWRhdGEudmNwcm9qIGIvUEMvVlM3LjEvdW5pY29kZWRhdGEudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjQ3ZjliLi4wMDAwMDAwCi0tLSBhL1BDL1ZTNy4xL3VuaWNvZGVkYXRhLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0idW5pY29kZWRhdGEiDQotCVNjY1Byb2plY3ROYW1lPSJ1bmljb2RlZGF0YSINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHVuaWNvZGVkYXRhIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi91bmljb2RlZGF0YS5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vdW5pY29kZWRhdGEucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3VuaWNvZGVkYXRhLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1x1bmljb2RlZGF0YSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vdW5pY29kZWRhdGFfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi91bmljb2RlZGF0YV9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVx1bmljb2RlZGF0YSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3VuaWNvZGVkYXRhLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vdW5pY29kZWRhdGEubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVx1bmljb2RlZGF0YSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLi91bmljb2RlZGF0YS5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vdW5pY29kZWRhdGEucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3VuaWNvZGVkYXRhLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzcuMS93OXhwb3Blbi52Y3Byb2ogYi9QQy9WUzcuMS93OXhwb3Blbi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZjNiNGUuLjAwMDAwMDAKLS0tIGEvUEMvVlM3LjEvdzl4cG9wZW4udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJ3OXhwb3BlbiINCi0JU2NjUHJvamVjdE5hbWU9IiINCi0JU2NjTG9jYWxQYXRoPSIiPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHc5eHBvcGVuIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vdzl4cG9wZW5fZC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi93OXhwb3Blbl9kLnBkYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2Vcdzl4cG9wZW4iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLlwuL3c5eHBvcGVuLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi93OXhwb3Blbi5wZGIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcdzl4cG9wZW4uYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3dpbnNvdW5kLnZjcHJvaiBiL1BDL1ZTNy4xL3dpbnNvdW5kLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0Y2YzOS4uMDAwMDAwMAotLS0gYS9QQy9WUzcuMS93aW5zb3VuZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNTEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9IndpbnNvdW5kIg0KLQlTY2NQcm9qZWN0TmFtZT0id2luc291bmQiDQotCVNjY0xvY2FsUGF0aD0iLi5cLi5ccGMiPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHdpbnNvdW5kIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1dJTlNPVU5EX0VYUE9SVFMiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZF9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3dpbnNvdW5kX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3dpbnNvdW5kX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVx3aW5zb3VuZCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vd2luc291bmQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3dpbnNvdW5kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi93aW5zb3VuZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2Vcd2luc291bmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vd2luc291bmQucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3dpbnNvdW5kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2Vcd2luc291bmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vd2luc291bmQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3dpbnNvdW5kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi93aW5zb3VuZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2luc291bmQuYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19jdHlwZXMudmNwcm9qIGIvUEMvVlM4LjAvX2N0eXBlcy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NzMyMzMuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX2N0eXBlcy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw3MDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9jdHlwZXMiDQotCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlcyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX2VsZW1lbnR0cmVlLnZjcHJvaiBiL1BDL1ZTOC4wL19lbGVtZW50dHJlZS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1N2RhNzIuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX2VsZW1lbnR0cmVlLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYxMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX2VsZW1lbnR0cmVlIg0KLQlQcm9qZWN0R1VJRD0iezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVJvb3ROYW1lc3BhY2U9Il9lbGVtZW50dHJlZSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9faGFzaGxpYi52Y3Byb2ogYi9QQy9WUzguMC9faGFzaGxpYi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMzFlMmUuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX2hhc2hsaWIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJfaGFzaGxpYiINCi0JUHJvamVjdEdVSUQ9Ins0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KLQlSb290TmFtZXNwYWNlPSJfaGFzaGxpYiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19tc2kudmNwcm9qIGIvUEMvVlM4LjAvX21zaS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5OTcxYzYuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX21zaS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9tc2kiDQotCVByb2plY3RHVUlEPSJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCi0JUm9vdE5hbWVzcGFjZT0iX21zaSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcX21zaS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMWNhZmMuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1NDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9tdWx0aXByb2Nlc3NpbmciDQotCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUm9vdE5hbWVzcGFjZT0iX211bHRpcHJvY2Vzc2luZyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcd2luMzJfZnVuY3Rpb25zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzguMC9fc29ja2V0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFiZDk4Mi4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9fc29ja2V0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOC4wL19zcWxpdGUzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmMTlmMS4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9fc3FsaXRlMy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9zcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0iezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19zc2wudmNwcm9qIGIvUEMvVlM4LjAvX3NzbC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MjY3YTQuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX3NzbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9zc2wiDQotCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9fdGtpbnRlci52Y3Byb2ogYi9QQy9WUzguMC9fdGtpbnRlci52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MDBiZGUuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvX3RraW50ZXIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTQxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJfdGtpbnRlciINCi0JUHJvamVjdEdVSUQ9Ins0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGtpbnRlciINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliRGVidWcpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYkRlYnVnKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGtpbnRlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0a2FwcGluaXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9iZGlzdF93aW5pbnN0LnZjcHJvaiBiL1BDL1ZTOC4wL2JkaXN0X3dpbmluc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTFlZGYyLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL2JkaXN0X3dpbmluc3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJiZGlzdF93aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC04LjAuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOC4wLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCU91dHB1dERpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOC4wLWFtZDY0LmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTguMC1hbWQ2NC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9InpsaWIiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2J1aWxkLmJhdCBiL1BDL1ZTOC4wL2J1aWxkLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJjODE4Ni4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9idWlsZC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1AZWNobyBvZmYKLXJlbSBBIGJhdGNoIHByb2dyYW0gdG8gYnVpbGQgb3IgcmVidWlsZCBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4KLXJlbSBqdXN0IGZvciBjb252ZW5pZW5jZS4KLQotc2V0bG9jYWwKLXNldCBwbGF0Zj1XaW4zMgotc2V0IGNvbmY9UmVsZWFzZQotc2V0IGJ1aWxkPS9idWlsZAotCi06Q2hlY2tPcHRzCi1pZiAiJTEiPT0iLWMiIChzZXQgY29uZj0lMikgICAgICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCi1pZiAiJTEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCi1pZiAiJTEiPT0iLXIiIChzZXQgYnVpbGQ9L3JlYnVpbGQpICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwotCi1zZXQgY21kPWRldmVudiBwY2J1aWxkLnNsbiAlYnVpbGQlICIlY29uZiV8JXBsYXRmJSIKLWVjaG8gJWNtZCUKLSVjbWQlCmRpZmYgLS1naXQgYS9QQy9WUzguMC9idWlsZF9lbnYuYmF0IGIvUEMvVlM4LjAvYnVpbGRfZW52LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM2N2FlMy4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9idWlsZF9lbnYuYmF0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotQCVjb21zcGVjJSAvayBlbnYuYmF0ICUqCmRpZmYgLS1naXQgYS9QQy9WUzguMC9idWlsZF9wZ28uYmF0IGIvUEMvVlM4LjAvYnVpbGRfcGdvLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM3YjViZi4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9idWlsZF9wZ28uYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotQGVjaG8gb2ZmCi1yZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGJ1aWxkIFBHTyAoUHJvZmlsZSBndWlkZWQgb3B0aW1pemF0aW9uKSBieSBmaXJzdAotcmVtIGJ1aWxkaW5nIGluc3RydW1lbnRlZCBiaW5hcmllcywgdGhlbiBydW5uaW5nIHRoZSB0ZXN0c3VpdGUsIGFuZAotcmVtIGZpbmFsbHkgYnVpbGRpbmcgdGhlIG9wdGltaXplZCBjb2RlLgotcmVtIE5vdGUsIGFmdGVyIHRoZSBmaXJzdCBpbnN0cnVtZW50ZWQgcnVuLCBvbmUgY2FuIGp1c3Qga2VlcCBvbgotcmVtIGJ1aWxkaW5nIHRoZSBQR1VwZGF0ZSBjb25maWd1cmF0aW9uIHdoaWxlIGRldmVsb3BpbmcuCi0KLXNldGxvY2FsCi1zZXQgcGxhdGY9V2luMzIKLQotcmVtIHVzZSB0aGUgcGVyZm9ybWFuY2UgdGVzdHN1aXRlLiAgVGhpcyBpcyBxdWljayBhbmQgc2ltcGxlCi1zZXQgam9iMT0uLlwuLlx0b29sc1xweWJlbmNoXHB5YmVuY2gucHkgLW4gMSAtQyAxIC0td2l0aC1nYwotc2V0IHBhdGgxPS4uXC4uXHRvb2xzXHB5YmVuY2gKLQotcmVtIG9yIHRoZSB3aG9sZSB0ZXN0c3VpdGUgZm9yIG1vcmUgdGhvcm91Z2ggdGVzdGluZwotc2V0IGpvYjI9Li5cLi5cbGliXHRlc3RccmVncnRlc3QucHkKLXNldCBwYXRoMj0uLlwuLlxsaWIKLQotc2V0IGpvYj0lam9iMSUKLXNldCBjbHJwYXRoPSVwYXRoMSUKLQotOkNoZWNrT3B0cwotaWYgIiUxIj09Ii1wIiAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwotaWYgIiUxIj09Ii0yIiAoc2V0IGpvYj0lam9iMiUpICYgKHNldCBjbHJwYXRoPSVwYXRoMiUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwotCi1zZXQgUEdJPSVwbGF0ZiUtcGdpCi1zZXQgUEdPPSVwbGF0ZiUtcGdvCi0KLUBlY2hvIG9uCi1yZW0gYnVpbGQgdGhlIGluc3RydW1lbnRlZCB2ZXJzaW9uCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdJbnN0cnVtZW50Ci0KLXJlbSByZW1vdmUgLnB5YyBmaWxlcywgLnBnYyBmaWxlcyBhbmQgZXhlY3V0ZSB0aGUgam9iCi0lUEdJJVxweXRob24uZXhlIHJtcHljLnB5ICVjbHJwYXRoJQotZGVsICVQR0klXCoucGdjCi0lUEdJJVxweXRob24uZXhlICVqb2IlCi0KLXJlbSBmaW5hbGx5IGJ1aWxkIHRoZSBvcHRpbWl6ZWQgdmVyc2lvbgotaWYgZXhpc3QgJVBHTyUgZGVsIC9zIC9xICVQR08lCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdVcGRhdGUKLQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdCBiL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1N2IwOGIuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUBlY2hvIG9mZgotaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKAotICBpZiAlMSBFUVUgRGVidWcgKAotICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzNfZC5kbGwgZXhpdCAxCi0gICkgRUxTRSAoCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzMuZGxsIGV4aXQgMQotICApCi0pCi0lSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMwotCmRpZmYgLS1naXQgYS9QQy9WUzguMC9idWlsZF9zc2wucHkgYi9QQy9WUzguMC9idWlsZF9zc2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMTNlZjUuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvYnVpbGRfc3NsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgU2NyaXB0IGZvciBidWlsZGluZyB0aGUgX3NzbCBhbmQgX2hhc2hsaWIgbW9kdWxlcyBmb3IgV2luZG93cy4KLSMgVXNlcyBQZXJsIHRvIHNldHVwIHRoZSBPcGVuU1NMIGVudmlyb25tZW50IGNvcnJlY3RseQotIyBhbmQgYnVpbGQgT3BlblNTTCwgdGhlbiBpbnZva2VzIGEgc2ltcGxlIG5tYWtlIHNlc3Npb24KLSMgZm9yIHRoZSBhY3R1YWwgX3NzbC5weWQgYW5kIF9oYXNobGliLnB5ZCBETExzLgotCi0jIFRIRU9SRVRJQ0FMTFksIHlvdSBjYW46Ci0jICogVW5wYWNrIHRoZSBsYXRlc3QgU1NMIHJlbGVhc2Ugb25lIGxldmVsIGFib3ZlIHlvdXIgbWFpbiBQeXRob24gc291cmNlCi0jICAgZGlyZWN0b3J5LiAgSXQgaXMgbGlrZWx5IHlvdSB3aWxsIGFscmVhZHkgZmluZCB0aGUgemxpYiBsaWJyYXJ5IGFuZAotIyAgIGFueSBvdGhlciBleHRlcm5hbCBwYWNrYWdlcyB0aGVyZS4KLSMgKiBJbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBpcyBzb21ld2hlcmUgb24geW91ciBwYXRoLgotIyAqIFJ1biB0aGlzIHNjcmlwdCBmcm9tIHRoZSBQQy9WUzguMCBkaXJlY3RvcnkuCi0jCi0jIGl0IHNob3VsZCBjb25maWd1cmUgYW5kIGJ1aWxkIFNTTCwgdGhlbiBidWlsZCB0aGUgX3NzbCBhbmQgX2hhc2hsaWIKLSMgUHl0aG9uIGV4dGVuc2lvbnMgd2l0aG91dCBpbnRlcnZlbnRpb24uCi0KLSMgTW9kaWZpZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcwotIyBOb3cgdGhpcyBzY3JpcHQgc3VwcG9ydHMgcHJlLWdlbmVyYXRlZCBtYWtlZmlsZXMgYW5kIGFzc2VtYmx5IGZpbGVzLgotIyBEZXZlbG9wZXJzIGRvbid0IG5lZWQgYW4gaW5zdGFsbGF0aW9uIG9mIFBlcmwgYW55bW9yZSB0byBidWlsZCBQeXRob24uIEEgc3ZuCi0jIGNoZWNrb3V0IGZyb20gb3VyIHN2biByZXBvc2l0b3J5IGlzIGVub3VnaC4KLSMKLSMgSW4gT3JkZXIgdG8gY3JlYXRlIHRoZSBmaWxlcyBpbiB0aGUgY2FzZSBvZiBhbiB1cGRhdGUgeW91IHN0aWxsIG5lZWQgUGVybC4KLSMgUnVuIGJ1aWxkX3NzbCBpbiB0aGlzIG9yZGVyOgotIyBweXRob24uZXhlIGJ1aWxkX3NzbC5weSBSZWxlYXNlIHg2NAotIyBweXRob24uZXhlIGJ1aWxkX3NzbC5weSBSZWxlYXNlIFdpbjMyCi0KLWltcG9ydCBvcywgc3lzLCByZSwgc2h1dGlsCi0KLSMgRmluZCBhbGwgImZvby5leGUiIGZpbGVzIG9uIHRoZSBQQVRILgotZGVmIGZpbmRfYWxsX29uX3BhdGgoZmlsZW5hbWUsIGV4dHJhcyA9IE5vbmUpOgotICAgIGVudHJpZXMgPSBvcy5lbnZpcm9uWyJQQVRIIl0uc3BsaXQob3MucGF0aHNlcCkKLSAgICByZXQgPSBbXQotICAgIGZvciBwIGluIGVudHJpZXM6Ci0gICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCi0gICAgaWYgZXh0cmFzOgotICAgICAgICBmb3IgcCBpbiBleHRyYXM6Ci0gICAgICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgotICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCi0gICAgcmV0dXJuIHJldAotCi0jIEZpbmQgYSBzdWl0YWJsZSBQZXJsIGluc3RhbGxhdGlvbiBmb3IgT3BlblNTTC4KLSMgY3lnd2luIHBlcmwgZG9lcyAqbm90KiB3b3JrLiAgQWN0aXZlUGVybCBkb2VzLgotIyBCZWluZyBhIFBlcmwgZHVtbXksIHRoZSBzaW1wbGVzdCB3YXkgSSBjYW4gY2hlY2sgaXMgaWYgdGhlICJXaW4zMiIgcGFja2FnZQotIyBpcyBhdmFpbGFibGUuCi1kZWYgZmluZF93b3JraW5nX3BlcmwocGVybHMpOgotICAgIGZvciBwZXJsIGluIHBlcmxzOgotICAgICAgICBmaCA9IG9zLnBvcGVuKCciJXMiIC1lICJ1c2UgV2luMzI7IicgJSBwZXJsKQotICAgICAgICBmaC5yZWFkKCkKLSAgICAgICAgcmMgPSBmaC5jbG9zZSgpCi0gICAgICAgIGlmIHJjOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmV0dXJuIHBlcmwKLSAgICBwcmludCgiQ2FuIG5vdCBmaW5kIGEgc3VpdGFibGUgUEVSTDoiKQotICAgIGlmIHBlcmxzOgotICAgICAgICBwcmludCgiIHRoZSBmb2xsb3dpbmcgcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZDoiKQotICAgICAgICBmb3IgcCBpbiBwZXJsczoKLSAgICAgICAgICAgIHByaW50KCIgIiwgcCkKLSAgICAgICAgcHJpbnQoIiBOb25lIG9mIHRoZXNlIHZlcnNpb25zIGFwcGVhciBzdWl0YWJsZSBmb3IgYnVpbGRpbmcgT3BlblNTTCIpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIiBOTyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kIG9uIHRoaXMgbWFjaGluZSBhdCBhbGwhIikKLSAgICBwcmludCgiIFBsZWFzZSBpbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBhcHBlYXJzIG9uIHlvdXIgcGF0aCIpCi0gICAgcmV0dXJuIE5vbmUKLQotIyBMb2NhdGUgdGhlIGJlc3QgU1NMIGRpcmVjdG9yeSBnaXZlbiBhIGZldyByb290cyB0byBsb29rIGludG8uCi1kZWYgZmluZF9iZXN0X3NzbF9kaXIoc291cmNlcyk6Ci0gICAgY2FuZGlkYXRlcyA9IFtdCi0gICAgZm9yIHMgaW4gc291cmNlczoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBub3RlOiBkbyBub3QgYWJzcGF0aCBzOyB0aGUgYnVpbGQgd2lsbCBmYWlsIGlmIGFueQotICAgICAgICAgICAgIyBoaWdoZXIgdXAgZGlyZWN0b3J5IG5hbWUgaGFzIHNwYWNlcyBpbiBpdC4KLSAgICAgICAgICAgIGZuYW1lcyA9IG9zLmxpc3RkaXIocykKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgotICAgICAgICAgICAgZm5hbWVzID0gW10KLSAgICAgICAgZm9yIGZuYW1lIGluIGZuYW1lczoKLSAgICAgICAgICAgIGZxbiA9IG9zLnBhdGguam9pbihzLCBmbmFtZSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZnFuKSBhbmQgZm5hbWUuc3RhcnRzd2l0aCgib3BlbnNzbC0iKToKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChmcW4pCi0gICAgIyBOb3cgd2UgaGF2ZSBhbGwgdGhlIGNhbmRpZGF0ZXMsIGxvY2F0ZSB0aGUgYmVzdC4KLSAgICBiZXN0X3BhcnRzID0gW10KLSAgICBiZXN0X25hbWUgPSBOb25lCi0gICAgZm9yIGMgaW4gY2FuZGlkYXRlczoKLSAgICAgICAgcGFydHMgPSByZS5zcGxpdCgiWy4tXSIsIG9zLnBhdGguYmFzZW5hbWUoYykpWzE6XQotICAgICAgICAjIGVnIC0gb3BlbnNzbC0wLjkuNy1iZXRhMSAtIGlnbm9yZSBhbGwgImJldGEiIG9yIGFueSBvdGhlciBxdWFsaWZpZXJzCi0gICAgICAgIGlmIGxlbihwYXJ0cykgPj0gNDoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHBhcnRzID4gYmVzdF9wYXJ0czoKLSAgICAgICAgICAgIGJlc3RfcGFydHMgPSBwYXJ0cwotICAgICAgICAgICAgYmVzdF9uYW1lID0gYwotICAgIGlmIGJlc3RfbmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgcHJpbnQoIkZvdW5kIGFuIFNTTCBkaXJlY3RvcnkgYXQgJyVzJyIgJSAoYmVzdF9uYW1lLCkpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIkNvdWxkIG5vdCBmaW5kIGFuIFNTTCBkaXJlY3RvcnkgaW4gJyVzJyIgJSAoc291cmNlcywpKQotICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgIHJldHVybiBiZXN0X25hbWUKLQotZGVmIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpOgotICAgICIiIkNyZWF0ZSBhbmQgZml4IG1ha2VmaWxlIGZvciA2NGJpdAotCi0gICAgUmVwbGFjZSAzMiB3aXRoIDY0Yml0IGRpcmVjdG9yaWVzCi0gICAgIiIiCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG0zMik6Ci0gICAgICAgIHJldHVybgotICAgIHdpdGggb3BlbihtMzIpIGFzIGZpbjoKLSAgICAgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPXRtcDMyIiwgIj10bXA2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPW91dDMyIiwgIj1vdXQ2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPWluYzMyIiwgIj1pbmM2NCIpCi0gICAgICAgICAgICAgICAgIyBmb3JjZSA2NCBiaXQgbWFjaGluZQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIk1LTElCPWxpYiIsICJNS0xJQj1saWIgL01BQ0hJTkU6WDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJMRkxBR1M9IiwgIkxGTEFHUz0vTUFDSElORTpYNjQgIikKLSAgICAgICAgICAgICAgICAjIGRvbid0IGxpbmsgYWdhaW5zdCB0aGUgbGliIG9uIDY0Yml0IHN5c3RlbXMKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJidWZmZXJvdmVyZmxvd3UubGliIiwgIiIpCi0gICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQotICAgIG9zLnVubGluayhtMzIpCi0KLWRlZiBmaXhfbWFrZWZpbGUobWFrZWZpbGUpOgotICAgICIiIkZpeCBzb21lIHN0dWZmIGluIGFsbCBtYWtlZmlsZXMKLSAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpOgotICAgICAgICByZXR1cm4KLSAgICB3aXRoIG9wZW4obWFrZWZpbGUpIGFzIGZpbjoKLSAgICAgICAgbGluZXMgPSBmaW4ucmVhZGxpbmVzKCkKLSAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBFUkw9Iik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ1A9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICJDUD1jb3B5XG4iCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk1LRElSPSIpOgotICAgICAgICAgICAgICAgIGxpbmUgPSAiTUtESVI9bWtkaXJcbiIKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ0ZMQUc9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgICAgIGZvciBhbGdvIGluICgiUkM1IiwgIk1EQzIiLCAiSURFQSIpOgotICAgICAgICAgICAgICAgICAgICBub2FsZ28gPSAiIC1ET1BFTlNTTF9OT18lcyIgJSBhbGdvCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vYWxnbyBub3QgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgbm9hbGdvCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyAnXG4nCi0gICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCi0KLWRlZiBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KToKLSAgICBwcmludCgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQotICAgIG9zLnN5c3RlbSgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQotICAgIHByaW50KGRvX3NjcmlwdCkKLSAgICBvcy5zeXN0ZW0oZG9fc2NyaXB0KQotCi1kZWYgY21wKGYxLCBmMik6Ci0gICAgYnVmc2l6ZSA9IDEwMjQgKiA4Ci0gICAgd2l0aCBvcGVuKGYxLCAncmInKSBhcyBmcDEsIG9wZW4oZjIsICdyYicpIGFzIGZwMjoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGIxID0gZnAxLnJlYWQoYnVmc2l6ZSkKLSAgICAgICAgICAgIGIyID0gZnAyLnJlYWQoYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIGIxICE9IGIyOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IGIxOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLWRlZiBjb3B5KHNyYywgZHN0KToKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShkc3QpIGFuZCBjbXAoc3JjLCBkc3QpOgotICAgICAgICByZXR1cm4KLSAgICBzaHV0aWwuY29weShzcmMsIGRzdCkKLQotZGVmIG1haW4oKToKLSAgICBidWlsZF9hbGwgPSAiLWEiIGluIHN5cy5hcmd2Ci0gICAgaWYgc3lzLmFyZ3ZbMV0gPT0gIlJlbGVhc2UiOgotICAgICAgICBkZWJ1ZyA9IEZhbHNlCi0gICAgZWxpZiBzeXMuYXJndlsxXSA9PSAiRGVidWciOgotICAgICAgICBkZWJ1ZyA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihzeXMuYXJndikpCi0KLSAgICBpZiBzeXMuYXJndlsyXSA9PSAiV2luMzIiOgotICAgICAgICBhcmNoID0gIng4NiIKLSAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjMyIgotICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX25hc20iCi0gICAgICAgIG1ha2VmaWxlPSJtc1xcbnQubWFrIgotICAgICAgICBtMzIgPSBtYWtlZmlsZQotICAgICAgICBkaXJzdWZmaXggPSAiMzIiCi0gICAgZWxpZiBzeXMuYXJndlsyXSA9PSAieDY0IjoKLSAgICAgICAgYXJjaD0iYW1kNjQiCi0gICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU42NEEiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fd2luNjRhIgotICAgICAgICBtYWtlZmlsZSA9ICJtc1xcbnQ2NC5tYWsiCi0gICAgICAgIG0zMiA9IG1ha2VmaWxlLnJlcGxhY2UoJzY0JywgJycpCi0gICAgICAgIGRpcnN1ZmZpeCA9ICI2NCIKLSAgICAgICAgI29zLmVudmlyb25bIlZTRVhUQ09NUF9VU0VDTCJdID0gIk1TX09QVEVST04iCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoc3lzLmFyZ3YpKQotCi0gICAgbWFrZV9mbGFncyA9ICIiCi0gICAgaWYgYnVpbGRfYWxsOgotICAgICAgICBtYWtlX2ZsYWdzID0gIi1hIgotICAgICMgcGVybCBzaG91bGQgYmUgb24gdGhlIHBhdGgsIGJ1dCB3ZSBhbHNvIGxvb2sgaW4gIlxwZXJsIiBhbmQgImM6XFxwZXJsIgotICAgICMgYXMgIndlbGwga25vd24iIGxvY2F0aW9ucwotICAgIHBlcmxzID0gZmluZF9hbGxfb25fcGF0aCgicGVybC5leGUiLCBbIlxccGVybFxcYmluIiwgIkM6XFxwZXJsXFxiaW4iXSkKLSAgICBwZXJsID0gZmluZF93b3JraW5nX3BlcmwocGVybHMpCi0gICAgaWYgcGVybDoKLSAgICAgICAgcHJpbnQoIkZvdW5kIGEgd29ya2luZyBwZXJsIGF0ICclcyciICUgKHBlcmwsKSkKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiTm8gUGVybCBpbnN0YWxsYXRpb24gd2FzIGZvdW5kLiBFeGlzdGluZyBNYWtlZmlsZXMgYXJlIHVzZWQuIikKLSAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAjIExvb2sgZm9yIFNTTCAzIGxldmVscyB1cCBmcm9tIFBDL1ZTOC4wIC0gaWUsIHNhbWUgcGxhY2UgemxpYiBldGMgYWxsIGxpdmUuCi0gICAgc3NsX2RpciA9IGZpbmRfYmVzdF9zc2xfZGlyKCgiLi5cXC4uXFwuLiIsKSkKLSAgICBpZiBzc2xfZGlyIGlzIE5vbmU6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBvbGRfY2QgPSBvcy5nZXRjd2QoKQotICAgIHRyeToKLSAgICAgICAgb3MuY2hkaXIoc3NsX2RpcikKLSAgICAgICAgIyByZWJ1aWxkIG1ha2VmaWxlIHdoZW4gd2UgZG8gdGhlIHJvbGUgb3ZlciBmcm9tIDMyIHRvIDY0IGJ1aWxkCi0gICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IiBhbmQgb3MucGF0aC5pc2ZpbGUobTMyKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKLSAgICAgICAgICAgIG9zLnVubGluayhtMzIpCi0KLSAgICAgICAgIyBJZiB0aGUgc3NsIG1ha2VmaWxlcyBkbyBub3QgZXhpc3QsIHdlIGludm9rZSBQZXJsIHRvIGdlbmVyYXRlIHRoZW0uCi0gICAgICAgICMgRHVlIHRvIGEgYnVnIGluIHRoaXMgc2NyaXB0LCB0aGUgbWFrZWZpbGUgc29tZXRpbWVzIGVuZGVkIHVwIGVtcHR5Ci0gICAgICAgICMgRm9yY2UgYSByZWdlbmVyYXRpb24gaWYgaXQgaXMuCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSkgb3Igb3MucGF0aC5nZXRzaXplKG1ha2VmaWxlKT09MDoKLSAgICAgICAgICAgIGlmIHBlcmwgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcmludCgiUGVybCBpcyByZXF1aXJlZCB0byBidWlsZCB0aGUgbWFrZWZpbGVzISIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICAgICAgcHJpbnQoIkNyZWF0aW5nIHRoZSBtYWtlZmlsZXMuLi4iKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAjIFB1dCBvdXIgd29ya2luZyBQZXJsIGF0IHRoZSBmcm9udCBvZiBvdXIgcGF0aAotICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MucGF0aC5kaXJuYW1lKHBlcmwpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aHNlcCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXQotICAgICAgICAgICAgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCkKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIHByaW50KCJPcGVuU1NMIGRlYnVnIGJ1aWxkcyBhcmVuJ3Qgc3VwcG9ydGVkLiIpCi0gICAgICAgICAgICAjaWYgYXJjaD09Ing4NiIgYW5kIGRlYnVnOgotICAgICAgICAgICAgIyAgICAjIHRoZSBkb19tYXNtIHNjcmlwdCBpbiBvcGVuc3NsIGRvZXNuJ3QgZ2VuZXJhdGUgYSBkZWJ1ZwotICAgICAgICAgICAgIyAgICAjIGJ1aWxkIG1ha2VmaWxlIHNvIHdlIGdlbmVyYXRlIGl0IGhlcmU6Ci0gICAgICAgICAgICAjICAgIG9zLnN5c3RlbSgicGVybCB1dGlsXG1rMW1mLnBsIGRlYnVnICIrY29uZmlndXJlKyIgPiIrbWFrZWZpbGUpCi0KLSAgICAgICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgICAgICBjcmVhdGVfbWFrZWZpbGU2NChtYWtlZmlsZSwgbTMyKQotICAgICAgICAgICAgZml4X21ha2VmaWxlKG1ha2VmaWxlKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xvcGVuc3NsY29uZi5oIiwgciJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoKQotCi0gICAgICAgICMgSWYgdGhlIGFzc2VtYmxlciBmaWxlcyBkb24ndCBleGlzdCBpbiB0bXBYWCwgY29weSB0aGVtIHRoZXJlCi0gICAgICAgIGlmIHBlcmwgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygidG1wIitkaXJzdWZmaXgpOgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKCJ0bXAiK2RpcnN1ZmZpeCkKLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgICAgICBpZiBub3QgZi5lbmRzd2l0aCgiLmFzbSIpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHIidG1wJXNcJXMiICUgKGRpcnN1ZmZpeCwgZikpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KHIiYXNtJXNcJXMiICUgKGRpcnN1ZmZpeCwgZiksICJ0bXAiK2RpcnN1ZmZpeCkKLQotICAgICAgICAjIE5vdyBydW4gbWFrZS4KLSAgICAgICAgaWYgYXJjaCA9PSAiYW1kNjQiOgotICAgICAgICAgICAgcmMgPSBvcy5zeXN0ZW0oIm1sNjQgLWMgLUZvbXNcXHVwdGFibGUub2JqIG1zXFx1cHRhYmxlLmFzbSIpCi0gICAgICAgICAgICBpZiByYzoKLSAgICAgICAgICAgICAgICBwcmludCgibWw2NCBhc3NlbWJsZXIgaGFzIGZhaWxlZC4iKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KHJjKQotCi0gICAgICAgIGNvcHkociJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoLCByImNyeXB0b1xidWlsZGluZi5oIikKLSAgICAgICAgY29weShyImNyeXB0b1xvcGVuc3NsY29uZl8lcy5oIiAlIGFyY2gsIHIiY3J5cHRvXG9wZW5zc2xjb25mLmgiKQotCi0gICAgICAgICNtYWtlQ29tbWFuZCA9ICJubWFrZSAvbm9sb2dvIFBFUkw9XCIlc1wiIC1mIFwiJXNcIiIgJShwZXJsLCBtYWtlZmlsZSkKLSAgICAgICAgbWFrZUNvbW1hbmQgPSAibm1ha2UgL25vbG9nbyAtZiBcIiVzXCIiICUgbWFrZWZpbGUKLSAgICAgICAgcHJpbnQoIkV4ZWN1dGluZyBzc2wgbWFrZWZpbGVzOiIsIG1ha2VDb21tYW5kKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmMgPSBvcy5zeXN0ZW0obWFrZUNvbW1hbmQpCi0gICAgICAgIGlmIHJjOgotICAgICAgICAgICAgcHJpbnQoIkV4ZWN1dGluZyAiK21ha2VmaWxlKyIgZmFpbGVkIikKLSAgICAgICAgICAgIHByaW50KHJjKQotICAgICAgICAgICAgc3lzLmV4aXQocmMpCi0gICAgZmluYWxseToKLSAgICAgICAgb3MuY2hkaXIob2xkX2NkKQotICAgIHN5cy5leGl0KHJjKQotCi1pZiBfX25hbWVfXz09J19fbWFpbl9fJzoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2J1aWxkX3RraW50ZXIucHkgYi9QQy9WUzguMC9idWlsZF90a2ludGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTU5MDM5Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL2J1aWxkX3RraW50ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0iIiJTY3JpcHQgdG8gY29tcGlsZSB0aGUgZGVwZW5kZW5jaWVzIG9mIF90a2ludGVyCi0KLUNvcHlyaWdodCAoYykgMjAwNyBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AY2hlaW1lcy5kZT4KLQotTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgotIiIiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1oZXJlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCi1wYXIgPSBvcy5wYXRoLnBhcmRpcgotCi1pZiAxOgotICAgIFRDTCA9ICJ0Y2w4LjQuMTYiCi0gICAgVEsgPSAidGs4LjQuMTYiCi0gICAgVElYID0gInRpeC04LjQuMCIKLWVsc2U6Ci0gICAgVENMID0gInRjbDguNWIzIgotICAgIFRLID0gInRjbDguNWIzIgotICAgIFRJWCA9ICJUaXg4LjQuMiIKLQotUk9PVCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgcGFyLCBwYXIsIHBhcikpCi0jIFdpbmRvd3MgMjAwMCBjb21wYXRpYmlsaXR5OiBXSU5WRVIgMHgwNTAwCi0jIGh0dHA6Ly9tc2RuMi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvYWEzODM3NDUuYXNweAotTk1BS0UgPSAibm1ha2UgL25vbG9nbyAvZiAlcyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCAlcyAlcyIKLQotZGVmIG5tYWtlKG1ha2VmaWxlLCBjb21tYW5kPSIiLCAqKmt3KToKLSAgICBkZWZpbmVzID0gJyAnLmpvaW4oaysnPScrdiBmb3IgaywgdiBpbiBrdy5pdGVtcygpKQotICAgIGNtZCA9IE5NQUtFICUgKG1ha2VmaWxlLCBkZWZpbmVzLCBjb21tYW5kKQotICAgIHByaW50KCJcblxuIitjbWQrIlxuIikKLSAgICBpZiBvcy5zeXN0ZW0oY21kKSAhPSAwOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoY21kKQotCi1kZWYgYnVpbGQocGxhdGZvcm0sIGNsZWFuKToKLSAgICBpZiBwbGF0Zm9ybSA9PSAiV2luMzIiOgotICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKFJPT1QsICJ0Y2x0ayIpCi0gICAgICAgIG1hY2hpbmUgPSAiWDg2IgotICAgIGVsaWYgcGxhdGZvcm0gPT0gIng2NCI6Ci0gICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oUk9PVCwgInRjbHRrNjQiKQotICAgICAgICBtYWNoaW5lID0gIlg2NCIKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHBsYXRmb3JtKQotCi0gICAgIyBUQ0wKLSAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4oUk9PVCwgVENMKQotICAgIGlmIDE6Ci0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbih0Y2xkaXIsICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiY2xlYW4iKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiaW5zdGFsbCIsIElOU1RBTExESVI9ZGVzdCkKLQotICAgICMgVEsKLSAgICBpZiAxOgotICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4oUk9PVCwgVEssICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiY2xlYW4iLCBUQ0xESVI9dGNsZGlyKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCBUQ0xESVI9dGNsZGlyKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiaW5zdGFsbCIsIFRDTERJUj10Y2xkaXIsIElOU1RBTExESVI9ZGVzdCkKLQotICAgICMgVElYCi0gICAgaWYgMToKLSAgICAgICAgIyBweXRob245Lm1hayBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3N2bi5weXRob24ub3JnCi0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihST09ULCBUSVgsICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgicHl0aG9uOS5tYWsiLCAiY2xlYW4iKQotICAgICAgICBubWFrZSgicHl0aG9uOS5tYWsiLCBNQUNISU5FPW1hY2hpbmUpCi0gICAgICAgIG5tYWtlKCJweXRob245Lm1hayIsICJpbnN0YWxsIikKLQotZGVmIG1haW4oKToKLSAgICBpZiBsZW4oc3lzLmFyZ3YpIDwgMiBvciBzeXMuYXJndlsxXSBub3QgaW4gKCJXaW4zMiIsICJ4NjQiKToKLSAgICAgICAgcHJpbnQoIiVzIFdpbjMyfHg2NCIgJSBzeXMuYXJndlswXSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmICItYyIgaW4gc3lzLmFyZ3Y6Ci0gICAgICAgIGNsZWFuID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIGNsZWFuID0gRmFsc2UKLQotICAgIGJ1aWxkKHN5cy5hcmd2WzFdLCBjbGVhbikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnoyLnZjcHJvaiBiL1BDL1ZTOC4wL2J6Mi52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMTE5NzkuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvYnoyLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU4MSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iYnoyIg0KLQlQcm9qZWN0R1VJRD0iezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiejJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJsb2Nrc29ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGRlY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxodWZmbWFuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvZGVidWcudnNwcm9wcyBiL1BDL1ZTOC4wL2RlYnVnLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjQzY2IuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvZGVidWcudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJkZWJ1ZyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IktpbGxQeXRob25FeGUiDQotCQlWYWx1ZT0iJChPdXREaXIpXGtpbGxfcHl0aG9uX2QuZXhlIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9lbnYuYmF0IGIvUEMvVlM4LjAvZW52LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ5OTBhOC4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9lbnYuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1AZWNobyBvZmYKLXNldCBWUzg9JVByb2dyYW1GaWxlcyVcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gOAotZWNobyBCdWlsZCBlbnZpcm9ubWVudHM6IHg4NiwgaWE2NCwgYW1kNjQsIHg4Nl9hbWQ2NCwgeDg2X2lhNjQKLWVjaG8uCi1jYWxsICIlVlM4JVxWQ1x2Y3ZhcnNhbGwuYmF0IiAlMQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvZmllbGQzLnB5IGIvUEMvVlM4LjAvZmllbGQzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGNiZTM2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL2ZpZWxkMy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQW4gYWJzdXJkIHdvcmthcm91bmQgZm9yIHRoZSBsYWNrIG9mIGFyaXRobWV0aWMgaW4gTVMncyByZXNvdXJjZSBjb21waWxlci4KLSMgQWZ0ZXIgYnVpbGRpbmcgUHl0aG9uLCBydW4gdGhpcywgdGhlbiBwYXN0ZSB0aGUgb3V0cHV0IGludG8gdGhlIGFwcHJvcHJpYXRlCi0jIHBhcnQgb2YgUENccHl0aG9uX250LnJjLgotIyBFeGFtcGxlIG91dHB1dDoKLSMKLSMgKiBGb3IgMi4zYTAsCi0jICogUFlfTUlDUk9fVkVSU0lPTiA9IDAKLSMgKiBQWV9SRUxFQVNFX0xFVkVMID0gJ2FscGhhJyA9IDB4QQotIyAqIFBZX1JFTEVBU0VfU0VSSUFMID0gMQotIyAqCi0jICogYW5kIDAqMTAwMCArIDEwKjEwICsgMSA9IDEwMS4KLSMgKi8KLSMgI2RlZmluZSBGSUVMRDMgMTAxCi0KLWltcG9ydCBzeXMKLQotbWFqb3IsIG1pbm9yLCBtaWNybywgbGV2ZWwsIHNlcmlhbCA9IHN5cy52ZXJzaW9uX2luZm8KLWxldmVsbnVtID0geydhbHBoYSc6IDB4QSwKLSAgICAgICAgICAgICdiZXRhJzogMHhCLAotICAgICAgICAgICAgJ2NhbmRpZGF0ZSc6IDB4QywKLSAgICAgICAgICAgICdmaW5hbCc6IDB4RiwKLSAgICAgICAgICAgfVtsZXZlbF0KLXN0cmluZyA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0gIyBsaWtlICcyLjNhMCcKLQotcHJpbnQoIiAqIEZvciAlcywiICUgc3RyaW5nKQotcHJpbnQoIiAqIFBZX01JQ1JPX1ZFUlNJT04gPSAlZCIgJSBtaWNybykKLXByaW50KCIgKiBQWV9SRUxFQVNFX0xFVkVMID0gJXIgPSAlcyIgJSAobGV2ZWwsIGhleChsZXZlbG51bSkpKQotcHJpbnQoIiAqIFBZX1JFTEVBU0VfU0VSSUFMID0gJWQiICUgc2VyaWFsKQotcHJpbnQoIiAqIikKLQotZmllbGQzID0gbWljcm8gKiAxMDAwICsgbGV2ZWxudW0gKiAxMCArIHNlcmlhbAotCi1wcmludCgiICogYW5kICVkKjEwMDAgKyAlZCoxMCArICVkID0gJWQiICUgKG1pY3JvLCBsZXZlbG51bSwgc2VyaWFsLCBmaWVsZDMpKQotcHJpbnQoIiAqLyIpCi1wcmludCgiI2RlZmluZSBGSUVMRDMiLCBmaWVsZDMpCmRpZmYgLS1naXQgYS9QQy9WUzguMC9pZGxlLmJhdCBiL1BDL1ZTOC4wL2lkbGUuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjNlNzA0Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL2lkbGUuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotQGVjaG8gb2ZmCi1yZW0gc3RhcnQgaWRsZQotcmVtIFVzYWdlOiAgaWRsZSBbLWRdCi1yZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuCi0KLXNldGxvY2FsCi1zZXQgZXhlPXB5dGhvbgotUEFUSCAlUEFUSCU7Li5cLi5cLi5cdGNsdGtcYmluCi0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQKLQotc2V0IGNtZD0lZXhlJSAuLi8uLi9MaWIvaWRsZWxpYi9pZGxlLnB5ICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5Ci0KLWVjaG8gb24KLSVjbWQlCmRpZmYgLS1naXQgYS9QQy9WUzguMC9raWxsX3B5dGhvbi5jIGIvUEMvVlM4LjAva2lsbF9weXRob24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIzMjNkMy4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9raWxsX3B5dGhvbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qCi0gKiBIZWxwZXIgcHJvZ3JhbSBmb3Iga2lsbGluZyBsaW5nZXJpbmcgcHl0aG9uW19kXS5leGUgcHJvY2Vzc2VzIGJlZm9yZQotICogYnVpbGRpbmcsIHRodXMgYXR0ZW1wdGluZyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBkdWUgdG8gZmlsZXMgYmVpbmcKLSAqIGxvY2tlZC4KLSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jaW5jbHVkZSA8dGxoZWxwMzIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jcHJhZ21hIGNvbW1lbnQobGliLCAicHNhcGkiKQotCi0jaWZkZWYgX0RFQlVHCi0jZGVmaW5lIFBZVEhPTl9FWEUgICAgICAgICAgKEwicHl0aG9uX2QuZXhlIikKLSNkZWZpbmUgUFlUSE9OX0VYRV9MRU4gICAgICAoMTIpCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRSAgICAgKEwia2lsbF9weXRob25fZC5leGUiKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNykKLSNlbHNlCi0jZGVmaW5lIFBZVEhPTl9FWEUgICAgICAgICAgKEwicHl0aG9uLmV4ZSIpCi0jZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEwKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uLmV4ZSIpCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRV9MRU4gKDE1KQotI2VuZGlmCi0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgSEFORExFICAgaHAsIGhzcCwgaHNtOyAvKiBwcm9jZXNzLCBzbmFwc2hvdCBwcm9jZXNzZXMsIHNuYXBzaG90IG1vZHVsZXMgKi8KLSAgICBEV09SRCAgICBkYWMsIG91cl9waWQ7Ci0gICAgc2l6ZV90ICAgbGVuOwotICAgIHdjaGFyX3QgIHBhdGhbTUFYX1BBVEgrMV07Ci0KLSAgICBNT0RVTEVFTlRSWTMyVyAgbWU7Ci0gICAgUFJPQ0VTU0VOVFJZMzJXIHBlOwotCi0gICAgbWUuZHdTaXplID0gc2l6ZW9mKE1PRFVMRUVOVFJZMzJXKTsKLSAgICBwZS5kd1NpemUgPSBzaXplb2YoUFJPQ0VTU0VOVFJZMzJXKTsKLQotICAgIG1lbXNldChwYXRoLCAwLCBNQVhfUEFUSCsxKTsKLQotICAgIG91cl9waWQgPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7Ci0KLSAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIG91cl9waWQpOwotICAgIGlmIChoc20gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMV0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgewotICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBFbnVtZXJhdGUgb3ZlciB0aGUgbW9kdWxlcyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpbiBvcmRlciB0byBmaW5kCi0gICAgICoga2lsbF9wcm9jZXNzW19kXS5leGUsIHRoZW4gdGFrZSBhIG5vdGUgb2YgdGhlIGRpcmVjdG9yeSBpdCBsaXZlcyBpbi4KLSAgICAgKi8KLSAgICBkbyB7Ci0gICAgICAgIGlmIChfd2NzbmljbXAobWUuc3pNb2R1bGUsIEtJTExfUFlUSE9OX0VYRSwgS0lMTF9QWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBsZW4gPSB3Y3NubGVuX3MobWUuc3pFeGVQYXRoLCBNQVhfUEFUSCkgLSBLSUxMX1BZVEhPTl9FWEVfTEVOOwotICAgICAgICB3Y3NuY3B5X3MocGF0aCwgTUFYX1BBVEgrMSwgbWUuc3pFeGVQYXRoLCBsZW4pOyAKLQotICAgICAgICBicmVhazsKLQotICAgIH0gd2hpbGUgKE1vZHVsZTMyTmV4dFcoaHNtLCAmbWUpKTsKLQotICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIHByaW50ZigiZmFpbGVkIHRvIGRpc2Nlcm4gZGlyZWN0b3J5IG9mIHJ1bm5pbmcgcHJvY2Vzc1xuIik7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogVGFrZSBhIHNuYXBzaG90IG9mIHN5c3RlbSBwcm9jZXNzZXMuICBFbnVtZXJhdGUgb3ZlciB0aGUgc25hcHNob3QsCi0gICAgICogbG9va2luZyBmb3IgcHl0aG9uIHByb2Nlc3Nlcy4gIFdoZW4gd2UgZmluZCBvbmUsIHZlcmlmeSBpdCBsaXZlcwotICAgICAqIGluIHRoZSBzYW1lIGRpcmVjdG9yeSB3ZSBsaXZlIGluLiAgSWYgaXQgZG9lcywga2lsbCBpdC4gIElmIHdlJ3JlCi0gICAgICogdW5hYmxlIHRvIGtpbGwgaXQsIHRyZWF0IHRoaXMgYXMgYSBmYXRhbCBlcnJvciBhbmQgcmV0dXJuIDEuCi0gICAgICogCi0gICAgICogVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBpcyB0aGF0IHdlJ3JlIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIAotICAgICAqIGJ1aWxkIHByb2Nlc3Mgb24gdGhlIGJhc2lzIHRoYXQgd2UnbGwgdGFrZSBjYXJlIG9mIGtpbGxpbmcgYW55Ci0gICAgICogcnVubmluZyBpbnN0YW5jZXMsIHN1Y2ggdGhhdCB0aGUgYnVpbGQgd29uJ3QgZW5jb3VudGVyIHBlcm1pc3Npb24KLSAgICAgKiBkZW5pZWQgZXJyb3JzIGR1cmluZyBsaW5raW5nLiBJZiB3ZSBjYW4ndCBraWxsIG9uZSBvZiB0aGUgcHJvY2Vzc2VzLAotICAgICAqIHdlIGNhbid0IHByb3ZpZGUgdGhpcyBhc3N1cmFuY2UsIGFuZCB0aGUgYnVpbGQgc2hvdWxkbid0IHN0YXJ0LgotICAgICAqLwotCi0gICAgaHNwID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQUFJPQ0VTUywgMCk7Ci0gICAgaWYgKGhzcCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBwcmludGYoIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdFsyXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGlmICghUHJvY2VzczMyRmlyc3RXKGhzcCwgJnBlKSkgewotICAgICAgICBwcmludGYoIlByb2Nlc3MzMkZpcnN0VyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGRhYyA9IFBST0NFU1NfUVVFUllfSU5GT1JNQVRJT04gfCBQUk9DRVNTX1ZNX1JFQUQgfCBQUk9DRVNTX1RFUk1JTkFURTsKLSAgICBkbyB7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKLSAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCi0gICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzNbX2RdLmRsbCksCi0gICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgotICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCi0gICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KLSAgICAgICAgICovCi0KLSAgICAgICAgaWYgKF93Y3NuaWNtcChwZS5zekV4ZUZpbGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBweXRob24gcHJvY2Vzcy4gKi8KLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8qIEl0J3MgYSBweXRob24gcHJvY2Vzcywgc28gZmlndXJlIG91dCB3aGljaCBkaXJlY3RvcnkgaXQncyBpbi4uLiAqLwotICAgICAgICBoc20gPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBNT0RVTEUsIHBlLnRoMzJQcm9jZXNzSUQpOwotICAgICAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgLyogCi0gICAgICAgICAgICAgKiBJZiBvdXIgbW9kdWxlIHNuYXBzaG90IGZhaWxzICh3aGljaCB3aWxsIGhhcHBlbiBpZiB3ZSBkb24ndCBvd24KLSAgICAgICAgICAgICAqIHRoZSBwcm9jZXNzKSwganVzdCBpZ25vcmUgaXQgYW5kIGNvbnRpbnVlLiAgKEl0IHNlZW1zIGRpZmZlcmVudAotICAgICAgICAgICAgICogdmVyc2lvbnMgb2YgV2luZG93cyByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBmb3IgR2V0TGFzdEVycm9yKCkKLSAgICAgICAgICAgICAqIGluIHRoaXMgc2l0dWF0aW9uOyBpdCdzIGVhc2llciB0byBqdXN0IGlnbm9yZSBpdCBhbmQgbW92ZSBvbiB2cy4KLSAgICAgICAgICAgICAqIHN0b3BwaW5nIHRoZSBidWlsZCBmb3Igd2hhdCBjb3VsZCBiZSBhIGZhbHNlIHBvc2l0aXZlLikKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7Ci0gICAgICAgICAgICBwcmludGYoIk1vZHVsZTMyRmlyc3RXWzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICAgICAgLyogV3JvbmcgbW9kdWxlLCB3ZSdyZSBsb29raW5nIGZvciBweXRob25bX2RdLmV4ZS4uLiAqLwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAoX3djc25pY21wKHBhdGgsIG1lLnN6RXhlUGF0aCwgbGVuKSkKLSAgICAgICAgICAgICAgICAvKiBQcm9jZXNzIGRvZXNuJ3QgbGl2ZSBpbiBvdXIgZGlyZWN0b3J5LiAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvKiBQeXRob24gcHJvY2VzcyByZXNpZGluZyBpbiB0aGUgcmlnaHQgZGlyZWN0b3J5LCBraWxsIGl0ISAgKi8KLSAgICAgICAgICAgIGhwID0gT3BlblByb2Nlc3MoZGFjLCBGQUxTRSwgcGUudGgzMlByb2Nlc3NJRCk7Ci0gICAgICAgICAgICBpZiAoIWhwKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJPcGVuUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIVRlcm1pbmF0ZVByb2Nlc3MoaHAsIDEpKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJUZXJtaW5hdGVQcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLQotICAgIH0gd2hpbGUgKFByb2Nlc3MzMk5leHRXKGhzcCwgJnBlKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc3ApOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIHZpOiBzZXQgdHM9OCBzdz00IHN0cz00IGV4cGFuZHRhYiAqLwpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAva2lsbF9weXRob24udmNwcm9qIGIvUEMvVlM4LjAva2lsbF9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWJlMzMwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0ia2lsbF9weXRob24iDQotCVByb2plY3RHVUlEPSJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCi0JUm9vdE5hbWVzcGFjZT0ia2lsbF9weXRob24iDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLlxraWxsX3B5dGhvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL21ha2VfYnVpbGRpbmZvLmMgYi9QQy9WUzguMC9tYWtlX2J1aWxkaW5mby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZhMDdhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL21ha2VfYnVpbGRpbmZvLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNkZWZpbmUgQ01EX1NJWkUgNTAwCi0KLS8qIFRoaXMgZmlsZSBjcmVhdGVzIHRoZSBnZXRidWlsZGluZm8ubyBvYmplY3QsIGJ5IGZpcnN0Ci0gICBpbnZva2luZyBzdWJ3Y3Jldi5leGUgKGlmIGZvdW5kKSwgYW5kIHRoZW4gaW52b2tpbmcgY2wuZXhlLgotICAgQXMgYSBzaWRlIGVmZmVjdCwgaXQgbWlnaHQgZ2VuZXJhdGUgUENCdWlsZFxnZXRidWlsZGluZm8yLmMKLSAgIGFsc28uIElmIHRoaXMgaXNuJ3QgYSBzdWJ2ZXJzaW9uIGNoZWNrb3V0LCBvciBzdWJ3Y3JldiBpc24ndAotICAgZm91bmQsIGl0IGNvbXBpbGVzIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgaW5zdGVhZC4KLQotICAgQ3VycmVudGx5LCBzdWJ3Y3Jldi5leGUgaXMgZm91bmQgZnJvbSB0aGUgcmVnaXN0cnkgZW50cmllcwotICAgb2YgVG9ydG9pc2VTVk4uCi0KLSAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBwbGFjZSBnZXRidWlsZGluZm8ubyBpbnRvIHRoZSBwcm9wZXIKLSAgIGJpbmFyeSBkaXJlY3RvcnkuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhcyB0aGlzIHRvb2wgaXMKLSAgIGludm9rZWQgYXMgYSBwcmUtbGluayBzdGVwIGZvciBweXRob25jb3JlLCBzbyB0aGF0IG92ZXJ3cml0ZXMKLSAgIGFueSBwcmV2aW91cyBnZXRidWlsZGluZm8uby4KLQotICAgSG93ZXZlciwgaWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCi0gICBhcyBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2hlcmUgYW55IGdldGJ1aWxkaW5mbzIuYyBhbmQKLSAgIGdldGJ1aWxkaW5mby5vIGZpbGVzIGFyZSBwdXQuICBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZQotICAgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGJ1aWx0IGluIHBhcmFsbGVsLCB0byBhdm9pZCB0aGVtCi0gICB0cmFtcGxpbmcgZWFjaCBvdGhlcidzIGZpbGVzLgotCi0qLwotCi1pbnQgbWFrZV9idWlsZGluZm8yKGNvbnN0IGNoYXIgKnRtcHBhdGgpCi17Ci0gICAgc3RydWN0IF9zdGF0IHN0OwotICAgIEhLRVkgaFRvcnRvaXNlOwotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRSsxXTsKLSAgICBEV09SRCB0eXBlLCBzaXplOwotICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KLSAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCi0gICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLwotICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOwotICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKLSAgICAgICAgdHlwZSAhPSBSRUdfU1opCi0gICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImJpblxcc3Vid2NyZXYuZXhlIik7Ci0gICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCi0gICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIC4uXFwuLiAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jICIpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuYyIpOwotICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOwotICAgIGlmIChzeXN0ZW0oY29tbWFuZCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQotewotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRV0gPSAiY2wuZXhlIC1jIC1EX1dJTjMyIC1EVVNFX0RMX0VYUE9SVCAtRF9XSU5ET1dTIC1EV0lOMzIgLURfV0lORExMICI7Ci0gICAgY2hhciB0bXBwYXRoW0NNRF9TSVpFXSA9ICIiOwotICAgIGludCBkb191bmxpbmssIHJlc3VsdDsKLSAgICBjaGFyICp0bXBkaXIgPSBOVUxMOwotICAgIGlmIChhcmdjIDw9IDIgfHwgYXJnYyA+IDMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWtlX2J1aWxkaW5mbyAkKENvbmZpZ3VyYXRpb25OYW1lKSBbdG1wZGlyXVxuIik7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgfQotICAgIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2UiKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIkRlYnVnIikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1EX0RFQlVHIC1NRGQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUl0YW5pdW0iKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19JVEFOSVVNICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VBTUQ2NCIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19PUFRFUk9OICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uICVzXG4iLCBhcmd2WzFdKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKGFyZ2MgPiAyKSB7Ci0gICAgICAgIHRtcGRpciA9IGFyZ3ZbMl07Ci0gICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCB0bXBkaXIpOwotICAgICAgICBzdHJjYXRfcyh0bXBwYXRoLCBfY291bnRvZih0bXBwYXRoKSwgIlxcIik7Ci0gICAgfQotCi0gICAgaWYgKChkb191bmxpbmsgPSBtYWtlX2J1aWxkaW5mbzIodG1wcGF0aCkpKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmMgLURTVUJXQ1JFViAiKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLUZvIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvLm8gLUkuLlxcLi5cXEluY2x1ZGUgLUkuLlxcLi5cXFBDIik7Ci0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmQpOwotICAgIGlmIChkb191bmxpbmspIHsKLSAgICAgICAgY29tbWFuZFswXSA9ICdcMCc7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmMiKTsKLSAgICAgICAgX3VubGluayhjb21tYW5kKTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9QQy9WUzguMC9tYWtlX2J1aWxkaW5mby52Y3Byb2ogYi9QQy9WUzguMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNWNjY2QuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJtYWtlX2J1aWxkaW5mbyINCi0JUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii5cbWFrZV9idWlsZGluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiBiL1BDL1ZTOC4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGJmMTBkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMzI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9wY2J1aWxkLnNsbiBiL1BDL1ZTOC4wL3BjYnVpbGQuc2xuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWNhNGFhLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3BjYnVpbGQuc2xuCisrKyAvZGV2L251bGwKQEAgLTEsNTYwICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDkuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAwNQ0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3Byb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9ID0ge0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3Byb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9ID0ge0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0NCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9ID0ge0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmNwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7MjE1MEUzMzMtOEZEQy00MkEzLTk0NzQtMUEzOTU2RDQ2REU4fSIpID0gIlNvbHV0aW9uIEl0ZW1zIiwgIlNvbHV0aW9uIEl0ZW1zIiwgIns1NTNFQzMzRS05ODE2LTQ5OTYtQTY2MC01RDYxODZBMEIwQjN9Ig0KLQlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QNCi0JCS4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMgPSAuLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jDQotCQlyZWFkbWUudHh0ID0gcmVhZG1lLnR4dA0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjcHJvaiIsICJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmNwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjcHJvaiIsICJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3Byb2oiLCAiezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3Byb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9ID0ge0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSA9IHs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3Byb2oiLCAiezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiejIiLCAiYnoyLnZjcHJvaiIsICJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmNwcm9qIiwgInsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmNwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjcHJvaiIsICJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmNwcm9qIiwgIns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3FsaXRlMyIsICJzcWxpdGUzLnZjcHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tdWx0aXByb2Nlc3NpbmciLCAiX211bHRpcHJvY2Vzc2luZy52Y3Byb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzc2wiLCAic3NsLnZjcHJvaiIsICJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImtpbGxfcHl0aG9uIiwgImtpbGxfcHl0aG9uLnZjcHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCi0JCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJUEdJbnN0cnVtZW50fHg2NCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCVBHVXBkYXRlfFdpbjMyID0gUEdVcGRhdGV8V2luMzINCi0JCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NA0KLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCi0JCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9WUzguMC9wZ2luc3RydW1lbnQudnNwcm9wcyBiL1BDL1ZTOC4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGM1ZjE4Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBnaW5zdHJ1bWVudCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKE91dERpclBHSSkiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC1wZ2lcJChQcm9qZWN0TmFtZSlcIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJRmF2b3JTaXplT3JTcGVlZD0iMiINCi0JCU9taXRGcmFtZVBvaW50ZXJzPSJ0cnVlIg0KLQkJRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz0iZmFsc2UiDQotCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQotCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCi0JCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSIyIg0KLQkJUHJvZmlsZUd1aWRlZERhdGFiYXNlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcJChUYXJnZXROYW1lKS5wZ2QiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSlcJChUYXJnZXROYW1lKS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9Ik91dERpclBHSSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9wZ3VwZGF0ZS52c3Byb3BzIGIvUEMvVlM4LjAvcGd1cGRhdGUudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjZmMyZC4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9wZ3VwZGF0ZS52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBndXBkYXRlIg0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1wiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzPSIiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSI0Ig0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9weWQudnNwcm9wcyBiL1BDL1ZTOC4wL3B5ZC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGMyMWUxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3B5ZC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMiINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5weWQiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkucGRiIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCUVtYmVkTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQlDb21tYW5kTGluZT0iIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9weWRfZC52c3Byb3BzIGIvUEMvVlM4LjAvcHlkX2QudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEzYTMwYi4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9weWRfZC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZF9kIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjAiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMyINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnB5ZCINCi0JCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnBkYiINCi0JCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKVwkKFRhcmdldE5hbWUpLmxpYiINCi0JCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJQ29tbWFuZExpbmU9IiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoU29sdXRpb25EaXIpcHl0aG9uX2QuZXhlIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9weWV4cGF0LnZjcHJvaiBiL1BDL1ZTOC4wL3B5ZXhwYXQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTllNGVjLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3B5ZXhwYXQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTUzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWV4cGF0Ig0KLQlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVJvb3ROYW1lc3BhY2U9InB5ZXhwYXQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcyBiL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFiZDNmLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5cHJvamVjdCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSINCi0JSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMiINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsgLi5cLi5cUEMiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjMyIg0KLQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCVdhcm5pbmdMZXZlbD0iMyINCi0JCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQlDb21waWxlQXM9IjAiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIkKE91dERpcikiDQotCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFRhcmdldE5hbWUpLnBkYiINCi0JCVN1YlN5c3RlbT0iMiINCi0JCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxJbmNsdWRlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeURsbE5hbWUiDQotCQlWYWx1ZT0icHl0aG9uMzMiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKVxweXRob24uZXhlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJleHRlcm5hbHNEaXIiDQotCQlWYWx1ZT0iLi5cLi5cLi4iDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InNxbGl0ZTNEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjYuMjEiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImJ6MkRpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjYiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9Im9wZW5zc2xEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjFlIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0RpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcdGNsdGsiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjREaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHRjbHRrNjQiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrTGliIg0KLQkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0a0RpcilcbGliXHRrODUubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0xpYkRlYnVnIg0KLQkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGtEaXIpXGxpYlx0azg1Zy5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjRMaWIiDQotCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODUubGliICQodGNsdGs2NERpcilcbGliXHRrODUubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0azY0TGliRGVidWciDQotCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODVnLmxpYiAkKHRjbHRrNjREaXIpXGxpYlx0azg1Zy5saWIiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3B5dGhvbi52Y3Byb2ogYi9QQy9WUzguMC9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjQ3YzBlLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3B5dGhvbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5dGhvbiINCi0JUHJvamVjdEdVSUQ9IntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIxMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbi5pY28iDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHl0aG9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2ogYi9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc1YmI5ZC4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE5MjEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5dGhvbmNvcmUiDQotCVByb2plY3RHVUlEPSJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUm9vdE5hbWVzcGFjZT0icHl0aG9uY29yZSINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJChJbnREaXIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKEludERpcilcZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJChJbnREaXIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKEludERpcilcZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgRGVidWcgJChJbnREaXIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKEludERpcilcZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSlfZC5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKV9kLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgRGVidWcgJChJbnREaXIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKEludERpcilcZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSlfZC5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKV9kLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJChJbnREaXIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKEludERpcilcZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICQoSW50RGlyKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChJbnREaXIpXGdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgKCRJbnREaXIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKEludERpcilcZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAkKEludERpcikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoSW50RGlyKVxnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSW5jbHVkZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFic3RyYWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFjY3UuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXNkbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhc3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYml0c2V0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJvb2xvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZXNfbWV0aG9kcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlYXJyYXlvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZXNvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2VsbG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZXZhbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvZGVjcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21waWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGF0ZXRpbWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGVzY3JvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGljdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkeW5hbWljX2Fubm90YXRpb25zLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGVudW1vYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZXJyY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxldmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZpbGVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZXV0aWxzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZsb2F0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZvcm1hdHRlcl91bmljb2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ2Vub2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdyYW1pbml0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdyYW1tYXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaW1wb3J0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGludHJjaGVjay5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpdGVyb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxpc3RvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbG9uZ2ludHJlcHIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtYXJzaGFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1lbW9yeW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZXRhZ3JhbW1hci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZXRob2RvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbm9kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqaW1wbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvcGNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3NkZWZzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhcnNldG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGdlbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweV9jdXJzZXMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlhcmVuYS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWNhcHN1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHljdHlwZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWRlYnVnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXhwYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlmcGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlnZXRvcHQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWN0b29sYm94LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWF0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRpbWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltZW0uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlwb3J0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RhdGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdHJjbXAuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdHJ0b2QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZHRvYS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRob25ydW4uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aHJlYWQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc2V0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHNsaWNlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzdHJ1Y3RzZXEuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3ltdGFibGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRpbWVmdW5jcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0b2tlbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0cmFjZWJhY2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdWNuaGFzaC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9Ik1vZHVsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jc3YuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2pzb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHNwcm9mLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tYXRoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tYXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9waWNrbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zdHJ1Y3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RpbWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RpbWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3dlYWtyZWYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGdjbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYWluLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcb3BlcmF0b3IuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHppcGltcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJfaW8iDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJ6bGliIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemlvLmMiDQotCQkJCQk+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW42NCINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJTmFtZT0iRGVidWd8V2luNjQiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luNjQiDQotCQkJCQkJPg0KLQkJCQkJCTxUb29sDQotCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUiDQotCQkJCQkJLz4NCi0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCQk+DQotCQkJCQkJPFRvb2wNCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSINCi0JCQkJCQkvPg0KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjY0Ig0KLQkJCQkJCT4NCi0JCQkJCQk8VG9vbA0KLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIg0KLQkJCQkJCS8+DQotCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmaXhlZC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6Y29uZi5pbi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6bGliLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9ImNqa2NvZGVjcyINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19oay5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9Ik9iamVjdHMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhYnN0cmFjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhY2N1LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJvb2xvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2Fwc3VsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvZGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZGVzY3JvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZGljdG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmluZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGdlbm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxpc3RvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbG9uZ29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzZXRvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlBhcnNlciINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGJpdHNldC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGZpcnN0c2V0cy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyMS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbm9kZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJQQyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfc3VicHJvY2Vzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2lucmVnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xjb25maWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGRsX250LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xlcnJtYXAuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGdldHBhdGhwLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtc3ZjcnRtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJQeXRob24iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXF93YXJuaW5ncy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzZGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxibHRpbm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNldmFsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY29kZWNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY29tcGlsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGVycm9ycy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZpbGV1dGlscy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZnJvemVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZnV0dXJlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0YXJncy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0b3B0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0cGxhdGZvcm0uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ3JhbWluaXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbWFyc2hhbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXNucHJpbnRmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzdHJ0b3VsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccGVlcGhvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWFyZW5hLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHljdHlwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5ZnBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHltYXRoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aW1lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdGF0ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RyY21wLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJ0b2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkdG9hLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cUHl0aG9uLWFzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5bXRhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkX250LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdHJhY2ViYWNrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fbnQucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHl0aG9udy52Y3Byb2ogYi9QQy9WUzguMC9weXRob253LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAzN2I3OC4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9weXRob253LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYxOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0icHl0aG9udyINCi0JUHJvamVjdEdVSUQ9IntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbndfZC5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xXaW5NYWluLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcmVsZWFzZS52c3Byb3BzIGIvUEMvVlM4LjAvcmVsZWFzZS52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRlZjkwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3JlbGVhc2UudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJyZWxlYXNlIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iS2lsbFB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKE91dERpcilca2lsbF9weXRob24uZXhlIg0KLQkvPgkNCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcm1weWMucHkgYi9QQy9WUzguMC9ybXB5Yy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThlMTcwNS4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC9ybXB5Yy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgUmVtb3ZlIGFsbCB0aGUgLnB5YyBhbmQgLnB5byBmaWxlcyB1bmRlciAuLi9MaWIuCi0KLQotZGVmIGRlbHRyZWUocm9vdCk6Ci0gICAgaW1wb3J0IG9zCi0gICAgZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luCi0KLSAgICBucHljID0gbnB5byA9IDAKLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhyb290KToKLSAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICBkZWxldGUgPSBGYWxzZQotICAgICAgICAgICAgaWYgbmFtZS5lbmRzd2l0aCgnLnB5YycpOgotICAgICAgICAgICAgICAgIGRlbGV0ZSA9IFRydWUKLSAgICAgICAgICAgICAgICBucHljICs9IDEKLSAgICAgICAgICAgIGVsaWYgbmFtZS5lbmRzd2l0aCgnLnB5bycpOgotICAgICAgICAgICAgICAgIGRlbGV0ZSA9IFRydWUKLSAgICAgICAgICAgICAgICBucHlvICs9IDEKLQotICAgICAgICAgICAgaWYgZGVsZXRlOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShqb2luKHJvb3QsIG5hbWUpKQotCi0gICAgcmV0dXJuIG5weWMsIG5weW8KLQotbnB5YywgbnB5byA9IGRlbHRyZWUoIi4uLy4uL0xpYiIpCi1wcmludChucHljLCAiLnB5YyBkZWxldGVkLCIsIG5weW8sICIucHlvIGRlbGV0ZWQiKQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcnQuYmF0IGIvUEMvVlM4LjAvcnQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDI5ZTE5Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3J0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUBlY2hvIG9mZgotcmVtIFJ1biBUZXN0cy4gIFJ1biB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLgotcmVtIFVzYWdlOiAgcnQgWy1kXSBbLU9dIFstcV0gcmVncnRlc3RfYXJncwotcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLgotcmVtIC1PICAgUnVuIHB5dGhvbi5leGUgb3IgcHl0aG9uX2QuZXhlIChzZWUgLWQpIHdpdGggLU8uCi1yZW0gLXEgICAicXVpY2siIC0tIG5vcm1hbGx5IHRoZSB0ZXN0cyBhcmUgcnVuIHR3aWNlLCB0aGUgZmlyc3QgdGltZQotcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uCi1yZW0gICAgICAtcSBydW5zIHRoZSB0ZXN0cyBqdXN0IG9uY2UsIGFuZCB3aXRob3V0IGRlbGV0aW5nIC5weVtjb10gZmlsZXMuCi1yZW0gQWxsIGxlYWRpbmcgaW5zdGFuY2VzIG9mIHRoZXNlIHN3aXRjaGVzIGFyZSBzaGlmdGVkIG9mZiwgYW5kCi1yZW0gd2hhdGV2ZXIgcmVtYWlucyBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuICBGb3IgZXhhbXBsZSwKLXJlbSAgICAgcnQgLU8gLWQgLXggdGVzdF90aHJlYWQKLXJlbSBydW5zCi1yZW0gICAgIHB5dGhvbl9kIC1PIC4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkCi1yZW0gdHdpY2UsIGFuZAotcmVtICAgICBydCAtcSAtZyB0ZXN0X2JpbmFzY2lpCi1yZW0gcnVucwotcmVtICAgICBweXRob25fZCAuLi9saWIvdGVzdC9yZWdydGVzdC5weSAtZyB0ZXN0X2JpbmFzY2lpCi1yZW0gdG8gZ2VuZXJhdGUgdGhlIGV4cGVjdGVkLW91dHB1dCBmaWxlIGZvciBiaW5hc2NpaSBxdWlja2x5LgotcmVtCi1yZW0gQ29uZnVzaW5nOiAgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCBsaWtlCi1yZW0gICAgIC11IG5ldHdvcmssbGFyZ2VmaWxlCi1yZW0gdGhlbiB5b3UgaGF2ZSB0byBxdW90ZSBpdCBvbiB0aGUgcnQgbGluZSwgbGlrZQotcmVtICAgICBydCAtdSAibmV0d29yayxsYXJnZWZpbGUiCi0KLXNldGxvY2FsCi0KLXNldCBleGU9cHl0aG9uCi1zZXQgcW1vZGU9Ci1zZXQgZGFzaE89Ci1QQVRIICVQQVRIJTslfmRwMC4uXC4uXC4uXHRjbHRrXGJpbgotCi06Q2hlY2tPcHRzCi1pZiAiJTEiPT0iLU8iIChzZXQgZGFzaE89LU8pICAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKLWlmICIlMSI9PSItcSIgKHNldCBxbW9kZT15ZXMpICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwotaWYgIiUxIj09Ii1kIiAoc2V0IGV4ZT1weXRob25fZCkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCi0KLXNldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtRSAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQotaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlCi0KLWVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgotJWV4ZSUgcm1weWMucHkKLQotZWNobyBvbgotJWNtZCUKLUBlY2hvIG9mZgotCi1lY2hvIEFib3V0IHRvIHJ1biBhZ2FpbiB3aXRob3V0IGRlbGV0aW5nIC5weWMvLnB5byBmaXJzdDoKLXBhdXNlCi0KLTpRbW9kZQotZWNobyBvbgotJWNtZCUKZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3NlbGVjdC52Y3Byb2ogYi9QQy9WUzguMC9zZWxlY3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzFmYzE2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3NlbGVjdC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InNlbGVjdCINCi0JUHJvamVjdEdVSUQ9InsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KLQlSb290TmFtZXNwYWNlPSJzZWxlY3QiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM4LjAvc3FsaXRlMy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZmJlNWQuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvc3FsaXRlMy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InNxbGl0ZTMiDQotCVByb2plY3RHVUlEPSJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCi0JUm9vdE5hbWVzcGFjZT0ic3FsaXRlMyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5cZGVidWcudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90Oy4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMVxzcWxpdGUzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxXHNxbGl0ZTNleHQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxXHNxbGl0ZTMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC9zcWxpdGUzLnZzcHJvcHMgYi9QQy9WUzguMC9zcWxpdGUzLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMDAzMjguLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvc3FsaXRlMy52c3Byb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InNxbGl0ZTMiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJTUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KSINCi0JCVdhcm5pbmdMZXZlbD0iMSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvc3NsLnZjcHJvaiBiL1BDL1ZTOC4wL3NzbC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZDYzNWUuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvc3NsLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0ic3NsIg0KLQlQcm9qZWN0R1VJRD0ie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQotCVJvb3ROYW1lc3BhY2U9InNzbCINCi0JS2V5d29yZD0iTWFrZUZpbGVQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzguMC91bmljb2RlZGF0YS52Y3Byb2ogYi9QQy9WUzguMC91bmljb2RlZGF0YS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjZjdkMjMuLjAwMDAwMDAKLS0tIGEvUEMvVlM4LjAvdW5pY29kZWRhdGEudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTMzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJ1bmljb2RlZGF0YSINCi0JUHJvamVjdEdVSUQ9IntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KLQlSb290TmFtZXNwYWNlPSJ1bmljb2RlZGF0YSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvdzl4cG9wZW4udmNwcm9qIGIvUEMvVlM4LjAvdzl4cG9wZW4udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTRkMjA2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOC4wL3c5eHBvcGVuLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU3NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0idzl4cG9wZW4iDQotCVByb2plY3RHVUlEPSJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCi0JUm9vdE5hbWVzcGFjZT0idzl4cG9wZW4iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3OXhwb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3dpbnNvdW5kLnZjcHJvaiBiL1BDL1ZTOC4wL3dpbnNvdW5kLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM3OTM1Ny4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC93aW5zb3VuZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9IndpbnNvdW5kIg0KLQlQcm9qZWN0R1VJRD0iezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVJvb3ROYW1lc3BhY2U9IndpbnNvdW5kIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnNvdW5kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAveDY0LnZzcHJvcHMgYi9QQy9WUzguMC94NjQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY4OGQ0NC4uMDAwMDAwMAotLS0gYS9QQy9WUzguMC94NjQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJhbWQ2NCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKVxhbWQ2NFwiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lONjQ7X01fWDY0Ig0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKEhPU1RfUFlUSE9OKSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTOS4wL19zaGEzLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBQQy9WUzguMC9fY3R5cGVzX3Rlc3QudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fc2hhMy52Y3Byb2oKaW5kZXggMDk3MjQxZS4uNWZlMThkNSAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvX2N0eXBlc190ZXN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fc2hhMy52Y3Byb2oKQEAgLTEsMTAgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJfY3R5cGVzX3Rlc3QiDQotCVByb2plY3RHVUlEPSJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlc190ZXN0Ig0KKwlWZXJzaW9uPSI5LDAwIg0KKwlOYW1lPSJfc2hhMyINCisJUHJvamVjdEdVSUQ9InswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9Ig0KKwlSb290TmFtZXNwYWNlPSJfc2hhMyINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQogCT4NCkBAIC01MDAsMTggKzUwMCwxMCBAQAogCTwvUmVmZXJlbmNlcz4NCiAJPEZpbGVzPg0KIAkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NoYTNcc2hhM21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9fc3NsLnZjcHJvagppbmRleCA5N2FhMjk0Li5iNDdkYzI3IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9fc3NsLnZjcHJvagorKysgYi9QQy9WUzkuMC9fc3NsLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KKwlWZXJzaW9uPSI5LDAwIg0KIAlOYW1lPSJfc3NsIg0KIAlQcm9qZWN0R1VJRD0ie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQogCVJvb3ROYW1lc3BhY2U9Il9zc2wiDQpAQCAtNTYsNyArNTYsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0xMTgsNyArMTE4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMTgwLDcgKzE4MCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTI0Myw3ICsyNDMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0zMDUsNyArMzA1LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMzY4LDcgKzM2OCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQzMSw3ICs0MzEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC00OTQsNyArNDk0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCiAJCQkvPg0KIAkJCTxUb29sDQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIFBDL1ZTOC4wL190ZXN0Y2FwaS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qCmluZGV4IDc2YWQyZDguLjE0ZDkxMGQgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL190ZXN0Y2FwaS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3Byb2oKQEAgLTEsMTAgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJfdGVzdGNhcGkiDQotCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlIg0KKwlQcm9qZWN0R1VJRD0iezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0iDQorCVJvb3ROYW1lc3BhY2U9Il90ZXN0aW1wb3J0bXVsdGlwbGUiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNTExLDcgKzUxMSw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0aW1wb3J0bXVsdGlwbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCmluZGV4IGJiMzIzZDMuLjYwNDczMWYgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMKKysrIGIvUEMvVlM5LjAva2lsbF9weXRob24uYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCiAgICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMzW19kXS5kbGwpLAorICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjM0W19kXS5kbGwpLAogICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KICAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAogICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wY2J1aWxkLnNsbiBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCmluZGV4IDhmOGNiYjYuLjNiNzNmY2UgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCisrKyBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCkBAIC0yMCwxMSArMjAsNiBAQAogCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQogCUVuZFByb2plY3RTZWN0aW9uDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7MjE1MEUzMzMtOEZEQy00MkEzLTk0NzQtMUEzOTU2RDQ2REU4fSIpID0gIlNvbHV0aW9uIEl0ZW1zIiwgIlNvbHV0aW9uIEl0ZW1zIiwgIns1NTNFQzMzRS05ODE2LTQ5OTYtQTY2MC01RDYxODZBMEIwQjN9Ig0KQEAgLTg3LDYgKzgyLDExIEBACiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCiAJRW5kUHJvamVjdFNlY3Rpb24NCiBFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGltcG9ydG11bHRpcGxlIiwgIl90ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qIiwgInszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KIAlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQogCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQpAQCAtMTUyLDYgKzE1Miw4IEBACiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCiAJRW5kUHJvamVjdFNlY3Rpb24NCiBFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc2hhMyIsICJfc2hhMy52Y3Byb2oiLCAiezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KIAkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KQEAgLTQyMCw2ICs0MjIsMjIgQEAKIAkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC02NTEsNiArNjY5LDIyIEBACiAJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzIGIvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMKaW5kZXggZmYzNzU5ZS4uYzU3OTNlZCAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMKKysrIGIvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMKQEAgLTM4LDcgKzM4LDcgQEAKIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJQeURsbE5hbWUiDQotCQlWYWx1ZT0icHl0aG9uMzMiDQorCQlWYWx1ZT0icHl0aG9uMzQiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9IlB5dGhvbkV4ZSINCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCmluZGV4IDlmYjYzZmYuLjY1MjRjOTIgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCkBAIC0xMTE5LDcgKzExMTksNyBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfb3BlcmF0b3IuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAgLTExNTUsNiArMTE1NSwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zdGF0LmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTU4Nyw2ICsxNTkxLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHJlcGxhY2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2V0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvdzl4cG9wZW4udmNwcm9qIGIvUEMvVlM5LjAvdzl4cG9wZW4udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTg1YjAwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU3NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0idzl4cG9wZW4iDQotCVByb2plY3RHVUlEPSJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCi0JUm9vdE5hbWVzcGFjZT0idzl4cG9wZW4iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3OXhwb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCAwYjViOTRlLi42YWJhOGIwIDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0xMDMwLDQwICsxMDMwLDQwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChpbnQpTVNJREJPUEVOX1RSQU5TQUNUKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1BBVENIRklMRSIsIChpbnQpTVNJREJPUEVOX1BBVENIRklMRSk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJQ09MSU5GT19OQU1FUyIsIE1TSUNPTElORk9fTkFNRVMpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lDT0xJTkZPX1RZUEVTIiwgTVNJQ09MSU5GT19UWVBFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJQ09MSU5GT19OQU1FUyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJQ09MSU5GT19UWVBFUyk7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJTU9ESUZZX1NFRUsiLCBNU0lNT0RJRllfU0VFSyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSU1PRElGWV9SRUZSRVNIIiwgTVNJTU9ESUZZX1JFRlJFU0gpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lNT0RJRllfSU5TRVJUIiwgTVNJTU9ESUZZX0lOU0VSVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSU1PRElGWV9VUERBVEUiLCBNU0lNT0RJRllfVVBEQVRFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJTU9ESUZZX0FTU0lHTiIsIE1TSU1PRElGWV9BU1NJR04pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lNT0RJRllfUkVQTEFDRSIsIE1TSU1PRElGWV9SRVBMQUNFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJTU9ESUZZX01FUkdFIiwgTVNJTU9ESUZZX01FUkdFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJTU9ESUZZX0RFTEVURSIsIE1TSU1PRElGWV9ERUxFVEUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lNT0RJRllfSU5TRVJUX1RFTVBPUkFSWSIsIE1TSU1PRElGWV9JTlNFUlRfVEVNUE9SQVJZKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJTU9ESUZZX1ZBTElEQVRFIiwgTVNJTU9ESUZZX1ZBTElEQVRFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJTU9ESUZZX1ZBTElEQVRFX05FVyIsIE1TSU1PRElGWV9WQUxJREFURV9ORVcpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lNT0RJRllfVkFMSURBVEVfRklFTEQiLCBNU0lNT0RJRllfVkFMSURBVEVfRklFTEQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lNT0RJRllfVkFMSURBVEVfREVMRVRFIiwgTVNJTU9ESUZZX1ZBTElEQVRFX0RFTEVURSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJTU9ESUZZX1NFRUspOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSU1PRElGWV9SRUZSRVNIKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfSU5TRVJUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfVVBEQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfQVNTSUdOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfUkVQTEFDRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJTU9ESUZZX01FUkdFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfREVMRVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfSU5TRVJUX1RFTVBPUkFSWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJTU9ESUZZX1ZBTElEQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfVkFMSURBVEVfTkVXKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lNT0RJRllfVkFMSURBVEVfRklFTEQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSU1PRElGWV9WQUxJREFURV9ERUxFVEUpOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9DT0RFUEFHRSIsIFBJRF9DT0RFUEFHRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9USVRMRSIsIFBJRF9USVRMRSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9TVUJKRUNUIiwgUElEX1NVQkpFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQSURfQVVUSE9SIiwgUElEX0FVVEhPUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9LRVlXT1JEUyIsIFBJRF9LRVlXT1JEUyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9DT01NRU5UUyIsIFBJRF9DT01NRU5UUyk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9URU1QTEFURSIsIFBJRF9URU1QTEFURSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9MQVNUQVVUSE9SIiwgUElEX0xBU1RBVVRIT1IpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQSURfUkVWTlVNQkVSIiwgUElEX1JFVk5VTUJFUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9MQVNUUFJJTlRFRCIsIFBJRF9MQVNUUFJJTlRFRCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9DUkVBVEVfRFRNIiwgUElEX0NSRUFURV9EVE0pOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQSURfTEFTVFNBVkVfRFRNIiwgUElEX0xBU1RTQVZFX0RUTSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9QQUdFQ09VTlQiLCBQSURfUEFHRUNPVU5UKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUElEX1dPUkRDT1VOVCIsIFBJRF9XT1JEQ09VTlQpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQSURfQ0hBUkNPVU5UIiwgUElEX0NIQVJDT1VOVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBJRF9BUFBOQU1FIiwgUElEX0FQUE5BTUUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQSURfU0VDVVJJVFkiLCBQSURfU0VDVVJJVFkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9DT0RFUEFHRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUElEX1RJVExFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQSURfU1VCSkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUElEX0FVVEhPUik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUElEX0tFWVdPUkRTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQSURfQ09NTUVOVFMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9URU1QTEFURSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUElEX0xBU1RBVVRIT1IpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9SRVZOVU1CRVIpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9MQVNUUFJJTlRFRCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUElEX0NSRUFURV9EVE0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9MQVNUU0FWRV9EVE0pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9QQUdFQ09VTlQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9XT1JEQ09VTlQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9DSEFSQ09VTlQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBJRF9BUFBOQU1FKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBQSURfU0VDVVJJVFkpOwogCiAgICAgTVNJRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24gKCJfbXNpLk1TSUVycm9yIiwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCFNU0lFcnJvcikKZGlmZiAtLWdpdCBhL1BDL2NvbmZpZy5jIGIvUEMvY29uZmlnLmMKaW5kZXggNTdiNTA3My4uNDJhMDdjOSAxMDA2NDQKLS0tIGEvUEMvY29uZmlnLmMKKysrIGIvUEMvY29uZmlnLmMKQEAgLTE3LDcgKzE3LDcgQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X21hdGgodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fbWQ1KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfbnQodm9pZCk7Ci1leHRlcm4gUHlPYmplY3QqIFB5SW5pdF9vcGVyYXRvcih2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19vcGVyYXRvcih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X3NpZ25hbCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGExKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTI1Nih2b2lkKTsKQEAgLTY0LDYgKzY0LDcgQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X2F0ZXhpdCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogX1B5V2FybmluZ3NfSW5pdCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zdHJpbmcodm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc3RhdCh2b2lkKTsKIAogLyogdG9vbHMvZnJlZXplL21ha2Vjb25maWcucHkgbWFya2VyIGZvciBhZGRpdGlvbmFsICJleHRlcm4iICovCiAvKiAtLSBBRERNT0RVTEUgTUFSS0VSIDEgLS0gKi8KQEAgLTg3LDcgKzg4LDcgQEAKICAgICB7ImdjIiwgUHlJbml0X2djfSwKICAgICB7Im1hdGgiLCBQeUluaXRfbWF0aH0sCiAgICAgeyJudCIsIFB5SW5pdF9udH0sIC8qIFVzZSB0aGUgTlQgb3MgZnVuY3Rpb25zLCBub3QgcG9zaXggKi8KLSAgICB7Im9wZXJhdG9yIiwgUHlJbml0X29wZXJhdG9yfSwKKyAgICB7Il9vcGVyYXRvciIsIFB5SW5pdF9fb3BlcmF0b3J9LAogICAgIHsic2lnbmFsIiwgUHlJbml0X3NpZ25hbH0sCiAgICAgeyJfbWQ1IiwgUHlJbml0X19tZDV9LAogICAgIHsiX3NoYTEiLCBQeUluaXRfX3NoYTF9LApAQCAtMTU0LDYgKzE1NSw3IEBACiAgICAgeyJfaW8iLCBQeUluaXRfX2lvfSwKICAgICB7Il9waWNrbGUiLCBQeUluaXRfX3BpY2tsZX0sCiAgICAgeyJhdGV4aXQiLCBQeUluaXRfYXRleGl0fSwKKyAgICB7Il9zdGF0IiwgUHlJbml0X19zdGF0fSwKIAogICAgIC8qIFNlbnRpbmVsICovCiAgICAgezAsIDB9CmRpZmYgLS1naXQgYS9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qIGIvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvagppbmRleCBmYmEwMGI2Li5kZjM2MzQxIDEwMDY0NAotLS0gYS9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qCisrKyBiL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2oKQEAgLTM5LDcgKzM5LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9leHBvcnQ6aW5pdGV4YW1wbGUiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjMzLmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMzQubGliIg0KIAkJCQlPdXRwdXRGaWxlPSIuXFJlbGVhc2UvZXhhbXBsZS5weWQiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KQEAgLTEwNSw3ICsxMDUsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL2V4cG9ydDppbml0ZXhhbXBsZSINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMzNfZC5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjM0X2QubGliIg0KIAkJCQlPdXRwdXRGaWxlPSIuXERlYnVnL2V4YW1wbGVfZC5weWQiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KZGlmZiAtLWdpdCBhL1BDL2dldHBhdGhwLmMgYi9QQy9nZXRwYXRocC5jCmluZGV4IGI1YmYzMjUuLmRlYjQwZTcgMTAwNjQ0Ci0tLSBhL1BDL2dldHBhdGhwLmMKKysrIGIvUEMvZ2V0cGF0aHAuYwpAQCAtMSw2ICsxLDYgQEAKIAogLyogUmV0dXJuIHRoZSBpbml0aWFsIG1vZHVsZSBzZWFyY2ggcGF0aC4gKi8KLS8qIFVzZWQgYnkgRE9TLCBPUy8yLCBXaW5kb3dzIDMuMSwgV2luZG93cyA5NS85OCwgV2luZG93cyBOVC4gKi8KKy8qIFVzZWQgYnkgRE9TLCBXaW5kb3dzIDMuMSwgV2luZG93cyA5NS85OCwgV2luZG93cyBOVC4gKi8KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUSCBSVUxFUyBGT1IgV0lORE9XUzoKQEAgLTI0NSw5ICsyNDUsOSBAQAogICAgIC8qIFRyaWVkIHRvIHVzZSBzeXNnZXQoIndpbnZlciIpIGJ1dCBoZXJlIGlzIHRvbyBlYXJseSA6LSggKi8KICAgICB2ZXJzaW9uTGVuID0gc3RybGVuKFB5V2luX0RMTFZlcnNpb25TdHJpbmcpOwogICAgIC8qIFNwYWNlIGZvciBhbGwgdGhlIGNoYXJzLCBwbHVzIG9uZSBcMCAqLwotICAgIGtleUJ1ZiA9IGtleUJ1ZlB0ciA9IG1hbGxvYyhzaXplb2Yoa2V5UHJlZml4KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihXQ0hBUikqKHZlcnNpb25MZW4tMSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5U3VmZml4KSk7CisgICAga2V5QnVmID0ga2V5QnVmUHRyID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZihrZXlQcmVmaXgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFdDSEFSKSoodmVyc2lvbkxlbi0xKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXlTdWZmaXgpKTsKICAgICBpZiAoa2V5QnVmPT1OVUxMKSBnb3RvIGRvbmU7CiAKICAgICBtZW1jcHkoa2V5QnVmUHRyLCBrZXlQcmVmaXgsIHNpemVvZihrZXlQcmVmaXgpLXNpemVvZihXQ0hBUikpOwpAQCAtMjcxLDcgKzI3MSw3IEBACiAgICAgLyogQWxsb2NhdGUgYSB0ZW1wIGFycmF5IG9mIGNoYXIgYnVmZmVycywgc28gd2Ugb25seSBuZWVkIHRvIGxvb3AKICAgICAgICByZWFkaW5nIHRoZSByZWdpc3RyeSBvbmNlCiAgICAgKi8KLSAgICBwcFBhdGhzID0gbWFsbG9jKCBzaXplb2YoV0NIQVIgKikgKiBudW1LZXlzICk7CisgICAgcHBQYXRocyA9IFB5TWVtX1Jhd01hbGxvYyggc2l6ZW9mKFdDSEFSICopICogbnVtS2V5cyApOwogICAgIGlmIChwcFBhdGhzPT1OVUxMKSBnb3RvIGRvbmU7CiAgICAgbWVtc2V0KHBwUGF0aHMsIDAsIHNpemVvZihXQ0hBUiAqKSAqIG51bUtleXMpOwogICAgIC8qIExvb3Agb3ZlciBhbGwgc3Via2V5cywgYWxsb2NhdGluZyBhIHRlbXAgc3ViLWJ1ZmZlci4gKi8KQEAgLTI5Myw3ICsyOTMsNyBAQAogICAgICAgICAvKiBGaW5kIHRoZSB2YWx1ZSBvZiB0aGUgYnVmZmVyIHNpemUsIG1hbGxvYywgdGhlbiByZWFkIGl0ICovCiAgICAgICAgIFJlZ1F1ZXJ5VmFsdWVFeFcoc3ViS2V5LCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmcmVxZFNpemUpOwogICAgICAgICBpZiAocmVxZFNpemUpIHsKLSAgICAgICAgICAgIHBwUGF0aHNbaW5kZXhdID0gbWFsbG9jKHJlcWRTaXplKTsKKyAgICAgICAgICAgIHBwUGF0aHNbaW5kZXhdID0gUHlNZW1fUmF3TWFsbG9jKHJlcWRTaXplKTsKICAgICAgICAgICAgIGlmIChwcFBhdGhzW2luZGV4XSkgewogICAgICAgICAgICAgICAgIFJlZ1F1ZXJ5VmFsdWVFeFcoc3ViS2V5LCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKXBwUGF0aHNbaW5kZXhdLApAQCAtMzA4LDcgKzMwOCw3IEBACiAgICAgaWYgKGRhdGFTaXplID09IDApIGdvdG8gZG9uZTsKIAogICAgIC8qIG9yaWdpbmFsIGRhdGFzaXplIGZyb20gUmVnUXVlcnlJbmZvIGRvZXNuJ3QgaW5jbHVkZSB0aGUgXDAgKi8KLSAgICBkYXRhQnVmID0gbWFsbG9jKChkYXRhU2l6ZSsxKSAqIHNpemVvZihXQ0hBUikpOworICAgIGRhdGFCdWYgPSBQeU1lbV9SYXdNYWxsb2MoKGRhdGFTaXplKzEpICogc2l6ZW9mKFdDSEFSKSk7CiAgICAgaWYgKGRhdGFCdWYpIHsKICAgICAgICAgV0NIQVIgKnN6Q3VyID0gZGF0YUJ1ZjsKICAgICAgICAgRFdPUkQgcmVxZFNpemUgPSBkYXRhU2l6ZTsKQEAgLTM0NiwxNCArMzQ2LDEzIEBACiBkb25lOgogICAgIC8qIExvb3AgZnJlZWluZyBteSB0ZW1wIGJ1ZmZlcnMgKi8KICAgICBpZiAocHBQYXRocykgewotICAgICAgICBmb3IoaW5kZXg9MDtpbmRleDxudW1LZXlzO2luZGV4KyspCi0gICAgICAgICAgICBpZiAocHBQYXRoc1tpbmRleF0pIGZyZWUocHBQYXRoc1tpbmRleF0pOwotICAgICAgICBmcmVlKHBwUGF0aHMpOworICAgICAgICBmb3IoaW5kZXg9MDsgaW5kZXg8bnVtS2V5czsgaW5kZXgrKykKKyAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUocHBQYXRoc1tpbmRleF0pOworICAgICAgICBQeU1lbV9SYXdGcmVlKHBwUGF0aHMpOwogICAgIH0KICAgICBpZiAobmV3S2V5KQogICAgICAgICBSZWdDbG9zZUtleShuZXdLZXkpOwotICAgIGlmIChrZXlCdWYpCi0gICAgICAgIGZyZWUoa2V5QnVmKTsKKyAgICBQeU1lbV9SYXdGcmVlKGtleUJ1Zik7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KICNlbmRpZiAvKiBQeV9FTkFCTEVfU0hBUkVEICovCkBAIC00MzQsNyArNDMzLDcgQEAKICAgICAgICAgY2hhciAqIHAgPSBmZ2V0cyhidWZmZXIsIE1BWFBBVEhMRU4qMiwgZW52X2ZpbGUpOwogICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07CiAgICAgICAgIFB5T2JqZWN0ICogZGVjb2RlZDsKLSAgICAgICAgaW50IG47CisgICAgICAgIHNpemVfdCBuOwogCiAgICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYxNiw3ICs2MTUsNyBAQAogICAgIGlmIChlbnZwYXRoICE9IE5VTEwpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihlbnZwYXRoKSArIDE7CiAKLSAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBidWYgPSBtYWxsb2MoYnVmc3oqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBidWYgPSBQeU1lbV9SYXdNYWxsb2MoYnVmc3oqc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZiAoYnVmID09IE5VTEwpIHsKICAgICAgICAgLyogV2UgY2FuJ3QgZXhpdCwgc28gcHJpbnQgYSB3YXJuaW5nIGFuZCBsaW1wIGFsb25nICovCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgbWFsbG9jIGR5bmFtaWMgUFlUSE9OUEFUSC5cbiIpOwpAQCAtNjI5LDEwICs2MjgsOCBAQAogICAgICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gUFlUSE9OUEFUSDsKICAgICAgICAgfQogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKG1hY2hpbmVwYXRoKQotICAgICAgICAgICAgZnJlZShtYWNoaW5lcGF0aCk7Ci0gICAgICAgIGlmICh1c2VycGF0aCkKLSAgICAgICAgICAgIGZyZWUodXNlcnBhdGgpOworICAgICAgICBQeU1lbV9SYXdGcmVlKG1hY2hpbmVwYXRoKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh1c2VycGF0aCk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjUyLDEzICs2NDksMTMgQEAKICAgICAgICAgd2NzY3B5KGJ1ZiwgdXNlcnBhdGgpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwotICAgICAgICBmcmVlKHVzZXJwYXRoKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh1c2VycGF0aCk7CiAgICAgfQogICAgIGlmIChtYWNoaW5lcGF0aCkgewogICAgICAgICB3Y3NjcHkoYnVmLCBtYWNoaW5lcGF0aCk7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgICAgIGZyZWUobWFjaGluZXBhdGgpOworICAgICAgICBQeU1lbV9SYXdGcmVlKG1hY2hpbmVwYXRoKTsKICAgICB9CiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIXNraXBkZWZhdWx0KSB7CkBAIC03NDUsNyArNzQyLDcgQEAKIFB5X1NldFBhdGgoY29uc3Qgd2NoYXJfdCAqcGF0aCkKIHsKICAgICBpZiAobW9kdWxlX3NlYXJjaF9wYXRoICE9IE5VTEwpIHsKLSAgICAgICAgZnJlZShtb2R1bGVfc2VhcmNoX3BhdGgpOworICAgICAgICBQeU1lbV9SYXdGcmVlKG1vZHVsZV9zZWFyY2hfcGF0aCk7CiAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IE5VTEw7CiAgICAgfQogICAgIGlmIChwYXRoICE9IE5VTEwpIHsKQEAgLTc1MywxMCArNzUwLDEwIEBACiAgICAgICAgIHdjaGFyX3QgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwogICAgICAgICB3Y3NuY3B5KHByb2dwYXRoLCBwcm9nLCBNQVhQQVRITEVOKTsKICAgICAgICAgcHJlZml4WzBdID0gTCdcMCc7Ci0gICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IG1hbGxvYygod2NzbGVuKHBhdGgpICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBQeU1lbV9SYXdNYWxsb2MoKHdjc2xlbihwYXRoKSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKG1vZHVsZV9zZWFyY2hfcGF0aCAhPSBOVUxMKQogICAgICAgICAgICAgd2NzY3B5KG1vZHVsZV9zZWFyY2hfcGF0aCwgcGF0aCk7Ci0JfQorICAgIH0KIH0KIAogd2NoYXJfdCAqCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCA0NDVlOTZlLi5jOGFmMTk3IDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluYXkgU2FqaXAuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMyBWaW5heSBTYWppcC4KICAqIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KICAqCiAgKiBCYXNlZCBvbiB0aGUgd29yayBvZjoKQEAgLTE4LDcgKzE4LDI4IEBACiAKIC8qIEJ1aWxkIG9wdGlvbnMuICovCiAjZGVmaW5lIFNLSVBfUFJFRklYCi0vKiAjZGVmaW5lIFNFQVJDSF9QQVRIICovCisjZGVmaW5lIFNFQVJDSF9QQVRICisKKy8qIEVycm9yIGNvZGVzICovCisKKyNkZWZpbmUgUkNfTk9fU1REX0hBTkRMRVMgICAxMDAKKyNkZWZpbmUgUkNfQ1JFQVRFX1BST0NFU1MgICAxMDEKKyNkZWZpbmUgUkNfQkFEX1ZJUlRVQUxfUEFUSCAxMDIKKyNkZWZpbmUgUkNfTk9fUFlUSE9OICAgICAgICAxMDMKKyNkZWZpbmUgUkNfTk9fTUVNT1JZICAgICAgICAxMDQKKy8qCisgKiBTQ1JJUFRfV1JBUFBFUiBpcyB1c2VkIHRvIGNob29zZSBiZXR3ZWVuIHR3byB2YXJpYW50cyBvZiBhbiBleGVjdXRhYmxlIGJ1aWx0CisgKiBmcm9tIHRoaXMgc291cmNlIGZpbGUuIElmIG5vdCBkZWZpbmVkLCB0aGUgUEVQIDM5NyBQeXRob24gbGF1bmNoZXIgaXMgYnVpbHQ7CisgKiBpZiBkZWZpbmVkLCBhIHNjcmlwdCBsYXVuY2hlciBvZiB0aGUgdHlwZSB1c2VkIGJ5IHNldHVwdG9vbHMgaXMgYnVpbHQsIHdoaWNoCisgKiBsb29rcyBmb3IgYSBzY3JpcHQgbmFtZSByZWxhdGVkIHRvIHRoZSBleGVjdXRhYmxlIG5hbWUgYW5kIHJ1bnMgdGhhdCBzY3JpcHQKKyAqIHdpdGggdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiBpbnRlcnByZXRlci4KKyAqCisgKiBTQ1JJUFRfV1JBUFBFUiBzaG91bGQgYmUgdW5kZWZpbmVkIGluIHRoZSBzb3VyY2UsIGFuZCBkZWZpbmVkIGluIGEgVlMgcHJvamVjdAorICogd2hpY2ggYnVpbGRzIHRoZSBzZXR1cHRvb2xzLXN0eWxlIGxhdW5jaGVyLgorICovCisjaWYgZGVmaW5lZChTQ1JJUFRfV1JBUFBFUikKKyNkZWZpbmUgUkNfTk9fU0NSSVBUICAgICAgICAxMDUKKyNlbmRpZgogCiAvKiBKdXN0IGZvciBub3cgLSBzdGF0aWMgZGVmaW5pdGlvbiAqLwogCkBAIC0zMiwzMiArNTMsNiBAQAogICAgIHJldHVybiBwOwogfQogCi0vKgotICogVGhpcyBmdW5jdGlvbiBpcyBoZXJlIHRvIHNpbXBsaWZ5IG1lbW9yeSBtYW5hZ2VtZW50Ci0gKiBhbmQgdG8gdHJlYXQgYmxhbmsgdmFsdWVzIGFzIGlmIHRoZXkgYXJlIGFic2VudC4KLSAqLwotc3RhdGljIHdjaGFyX3QgKiBnZXRfZW52KHdjaGFyX3QgKiBrZXkpCi17Ci0gICAgLyogVGhpcyBpcyBub3QgdGhyZWFkLXNhZmUsIGp1c3QgbGlrZSBnZXRlbnYgKi8KLSAgICBzdGF0aWMgd2NoYXJfdCBidWZbMjU2XTsKLSAgICBEV09SRCByZXN1bHQgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhrZXksIGJ1ZiwgMjU2KTsKLQotICAgIGlmIChyZXN1bHQgPiAyNTUpIHsKLSAgICAgICAgLyogTGFyZ2UgZW52aXJvbm1lbnQgdmFyaWFibGUuIEFjY2VwdCBzb21lIGxlYWthZ2UgKi8KLSAgICAgICAgd2NoYXJfdCAqYnVmMiA9ICh3Y2hhcl90KiltYWxsb2Moc2l6ZW9mKHdjaGFyX3QpICogKHJlc3VsdCsxKSk7Ci0gICAgICAgIEdldEVudmlyb25tZW50VmFyaWFibGVXKGtleSwgYnVmMiwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIGJ1ZjI7Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCA9PSAwKQotICAgICAgICAvKiBFaXRoZXIgc29tZSBlcnJvciwgZS5nLiBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5ELAotICAgICAgICAgICBvciBhbiBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gKi8KLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gYnVmOwotfQotCi0KIHN0YXRpYyB2b2lkCiBkZWJ1Zyh3Y2hhcl90ICogZm9ybWF0LCAuLi4pCiB7CkBAIC0xMDAsMTEgKzk1LDQwIEBACiAjaWYgIWRlZmluZWQoX1dJTkRPV1MpCiAgICAgZndwcmludGYoc3RkZXJyLCBMIiVzXG4iLCBtZXNzYWdlKTsKICNlbHNlCi0gICAgTWVzc2FnZUJveChOVUxMLCBtZXNzYWdlLCBURVhUKCJQeXRob24gTGF1bmNoZXIgaXMgc29ycnkgdG8gc2F5IC4uLiIpLCBNQl9PSyk7IAorICAgIE1lc3NhZ2VCb3goTlVMTCwgbWVzc2FnZSwgVEVYVCgiUHl0aG9uIExhdW5jaGVyIGlzIHNvcnJ5IHRvIHNheSAuLi4iKSwKKyAgICAgICAgICAgICAgIE1CX09LKTsgCiAjZW5kaWYKICAgICBFeGl0UHJvY2VzcyhyYyk7CiB9CiAKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGhlcmUgdG8gc2ltcGxpZnkgbWVtb3J5IG1hbmFnZW1lbnQKKyAqIGFuZCB0byB0cmVhdCBibGFuayB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgYWJzZW50LgorICovCitzdGF0aWMgd2NoYXJfdCAqIGdldF9lbnYod2NoYXJfdCAqIGtleSkKK3sKKyAgICAvKiBUaGlzIGlzIG5vdCB0aHJlYWQtc2FmZSwganVzdCBsaWtlIGdldGVudiAqLworICAgIHN0YXRpYyB3Y2hhcl90IGJ1ZltCVUZTSVpFXTsKKyAgICBEV09SRCByZXN1bHQgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhrZXksIGJ1ZiwgQlVGU0laRSk7CisKKyAgICBpZiAocmVzdWx0ID49IEJVRlNJWkUpIHsKKyAgICAgICAgLyogTGFyZ2UgZW52aXJvbm1lbnQgdmFyaWFibGUuIEFjY2VwdCBzb21lIGxlYWthZ2UgKi8KKyAgICAgICAgd2NoYXJfdCAqYnVmMiA9ICh3Y2hhcl90KiltYWxsb2Moc2l6ZW9mKHdjaGFyX3QpICogKHJlc3VsdCsxKSk7CisgICAgICAgIGlmIChidWYyID0gTlVMTCkgeworICAgICAgICAgICAgZXJyb3IoUkNfTk9fTUVNT1JZLCBMIkNvdWxkIG5vdCBhbGxvY2F0ZSBlbnZpcm9ubWVudCBidWZmZXIiKTsKKyAgICAgICAgfQorICAgICAgICBHZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhrZXksIGJ1ZjIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBidWYyOworICAgIH0KKworICAgIGlmIChyZXN1bHQgPT0gMCkKKyAgICAgICAgLyogRWl0aGVyIHNvbWUgZXJyb3IsIGUuZy4gRVJST1JfRU5WVkFSX05PVF9GT1VORCwKKyAgICAgICAgICAgb3IgYW4gZW1wdHkgZW52aXJvbm1lbnQgdmFyaWFibGUuICovCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIGJ1ZjsKK30KKwogI2lmIGRlZmluZWQoX1dJTkRPV1MpCiAKICNkZWZpbmUgUFlUSE9OX0VYRUNVVEFCTEUgTCJweXRob253LmV4ZSIKQEAgLTExNSwxMSArMTM5LDYgQEAKIAogI2VuZGlmCiAKLSNkZWZpbmUgUkNfTk9fU1REX0hBTkRMRVMgICAxMDAKLSNkZWZpbmUgUkNfQ1JFQVRFX1BST0NFU1MgICAxMDEKLSNkZWZpbmUgUkNfQkFEX1ZJUlRVQUxfUEFUSCAxMDIKLSNkZWZpbmUgUkNfTk9fUFlUSE9OICAgICAgICAxMDMKLQogI2RlZmluZSBNQVhfVkVSU0lPTl9TSVpFICAgIDQKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNDU3LDYgKzQ3Niw1MSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBkZWZpbmVkKFNDUklQVF9XUkFQUEVSKQorLyoKKyAqIENoZWNrIGZvciBhIHNjcmlwdCBsb2NhdGVkIGFsb25nc2lkZSB0aGUgZXhlY3V0YWJsZQorICovCisKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKQorI2RlZmluZSBTQ1JJUFRfU1VGRklYIEwiLXNjcmlwdC5weXciCisjZWxzZQorI2RlZmluZSBTQ1JJUFRfU1VGRklYIEwiLXNjcmlwdC5weSIKKyNlbmRpZgorCitzdGF0aWMgd2NoYXJfdCB3cmFwcGVkX3NjcmlwdF9wYXRoW01BWF9QQVRIXTsKKworLyogTG9jYXRlIHRoZSBzY3JpcHQgYmVpbmcgd3JhcHBlZC4KKyAqCisgKiBUaGlzIGNvZGUgc2hvdWxkIHN0b3JlIHRoZSBuYW1lIG9mIHRoZSB3cmFwcGVkIHNjcmlwdCBpbgorICogd3JhcHBlZF9zY3JpcHRfcGF0aCwgb3IgdGVybWluYXRlIHRoZSBwcm9ncmFtIHdpdGggYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8KKyAqIHZhbGlkIHdyYXBwZWQgc2NyaXB0IGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2NhdGVfd3JhcHBlZF9zY3JpcHQoKQoreworICAgIHdjaGFyX3QgKiBwOworICAgIHNpemVfdCBwbGVuOworICAgIERXT1JEIGF0dHJzOworCisgICAgcGxlbiA9IEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCB3cmFwcGVkX3NjcmlwdF9wYXRoLCBNQVhfUEFUSCk7CisgICAgcCA9IHdjc3JjaHIod3JhcHBlZF9zY3JpcHRfcGF0aCwgTCcuJyk7CisgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gZXh0ZW5zaW9uOiAlc1xuIiwKKyAgICAgICAgICAgICAgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGVycm9yKFJDX05PX1NDUklQVCwgTCJXcmFwcGVyIG5hbWUgJyVzJyBpcyBub3QgdmFsaWQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgfQorCisgICAgd2NzbmNweV9zKHAsIE1BWF9QQVRIIC0gKHAgLSB3cmFwcGVkX3NjcmlwdF9wYXRoKSArIDEsIFNDUklQVF9TVUZGSVgsIF9UUlVOQ0FURSk7CisgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1cod3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGVycm9yKFJDX05PX1NDUklQVCwgTCJTY3JpcHQgZmlsZSAnJXMnIGlzIG5vdCBwcmVzZW50LiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgIH0KKworICAgIGRlYnVnKEwiVXNpbmcgd3JhcHBlZCBzY3JpcHQgZmlsZSAnJXMnXG4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKK30KKyNlbmRpZgorCiAvKgogICogUHJvY2VzcyBjcmVhdGlvbiBjb2RlCiAgKi8KQEAgLTU1MCw3ICs2MTQsNyBAQAogICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJVbmFibGUgdG8gY3JlYXRlIHByb2Nlc3MgdXNpbmcgJyVzJyIsIGNtZGxpbmUpOwogICAgIEFzc2lnblByb2Nlc3NUb0pvYk9iamVjdChqb2IsIHBpLmhQcm9jZXNzKTsKICAgICBDbG9zZUhhbmRsZShwaS5oVGhyZWFkKTsKLSAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KHBpLmhQcm9jZXNzLCBJTkZJTklURSk7CisgICAgV2FpdEZvclNpbmdsZU9iamVjdEV4KHBpLmhQcm9jZXNzLCBJTkZJTklURSwgRkFMU0UpOwogICAgIG9rID0gR2V0RXhpdENvZGVQcm9jZXNzKHBpLmhQcm9jZXNzLCAmcmMpOwogICAgIGlmICghb2spCiAgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIkZhaWxlZCB0byBnZXQgZXhpdCBjb2RlIG9mIHByb2Nlc3MiKTsKQEAgLTU5NSwxMiArNjU5LDE3IEBACiAgICAgfQogfQogCi1zdGF0aWMgd2NoYXJfdCAqIGJ1aWx0aW5fdmlydHVhbF9wYXRocyBbXSA9IHsKLSAgICBMIi91c3IvYmluL2VudiBweXRob24iLAotICAgIEwiL3Vzci9iaW4vcHl0aG9uIiwKLSAgICBMIi91c3IvbG9jYWwvYmluL3B5dGhvbiIsCi0gICAgTCJweXRob24iLAotICAgIE5VTEwKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB3Y2hhcl90ICpzaGViYW5nOworICAgIEJPT0wgc2VhcmNoOworfSBTSEVCQU5HOworCitzdGF0aWMgU0hFQkFORyBidWlsdGluX3ZpcnR1YWxfcGF0aHMgW10gPSB7CisgICAgeyBMIi91c3IvYmluL2VudiBweXRob24iLCBUUlVFIH0sCisgICAgeyBMIi91c3IvYmluL3B5dGhvbiIsIEZBTFNFIH0sCisgICAgeyBMIi91c3IvbG9jYWwvYmluL3B5dGhvbiIsIEZBTFNFIH0sCisgICAgeyBMInB5dGhvbiIsIEZBTFNFIH0sCisgICAgeyBOVUxMLCBGQUxTRSB9LAogfTsKIAogLyogRm9yIG5vdywgYSBzdGF0aWMgYXJyYXkgb2YgY29tbWFuZHMuICovCkBAIC03NzYsMTAgKzg0NSwxMCBAQAogCiBzdGF0aWMgQk9PTAogcGFyc2Vfc2hlYmFuZyh3Y2hhcl90ICogc2hlYmFuZ19saW5lLCBpbnQgbmNoYXJzLCB3Y2hhcl90ICoqIGNvbW1hbmQsCi0gICAgICAgICAgICAgIHdjaGFyX3QgKiogc3VmZml4KQorICAgICAgICAgICAgICB3Y2hhcl90ICoqIHN1ZmZpeCwgQk9PTCAqc2VhcmNoKQogewogICAgIEJPT0wgcmMgPSBGQUxTRTsKLSAgICB3Y2hhcl90ICoqIHZwcDsKKyAgICBTSEVCQU5HICogdnBwOwogICAgIHNpemVfdCBwbGVuOwogICAgIHdjaGFyX3QgKiBwOwogICAgIHdjaGFyX3QgemFwcGVkOwpAQCAtNzg5LDE1ICs4NTgsMTcgQEAKIAogICAgICpjb21tYW5kID0gTlVMTDsgICAgLyogZmFpbHVyZSByZXR1cm4gKi8KICAgICAqc3VmZml4ID0gTlVMTDsKKyAgICAqc2VhcmNoID0gRkFMU0U7CiAKICAgICBpZiAoKCpzaGViYW5nX2xpbmUrKyA9PSBMJyMnKSAmJiAoKnNoZWJhbmdfbGluZSsrID09IEwnIScpKSB7CiAgICAgICAgIHNoZWJhbmdfbGluZSA9IHNraXBfd2hpdGVzcGFjZShzaGViYW5nX2xpbmUpOwogICAgICAgICBpZiAoKnNoZWJhbmdfbGluZSkgewogICAgICAgICAgICAgKmNvbW1hbmQgPSBzaGViYW5nX2xpbmU7Ci0gICAgICAgICAgICBmb3IgKHZwcCA9IGJ1aWx0aW5fdmlydHVhbF9wYXRoczsgKnZwcDsgKyt2cHApIHsKLSAgICAgICAgICAgICAgICBwbGVuID0gd2NzbGVuKCp2cHApOwotICAgICAgICAgICAgICAgIGlmICh3Y3NuY21wKHNoZWJhbmdfbGluZSwgKnZwcCwgcGxlbikgPT0gMCkgeworICAgICAgICAgICAgZm9yICh2cHAgPSBidWlsdGluX3ZpcnR1YWxfcGF0aHM7IHZwcC0+c2hlYmFuZzsgKyt2cHApIHsKKyAgICAgICAgICAgICAgICBwbGVuID0gd2NzbGVuKHZwcC0+c2hlYmFuZyk7CisgICAgICAgICAgICAgICAgaWYgKHdjc25jbXAoc2hlYmFuZ19saW5lLCB2cHAtPnNoZWJhbmcsIHBsZW4pID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmMgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAqc2VhcmNoID0gdnBwLT5zZWFyY2g7CiAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGNhbiBkbyB0aGlzIGJlY2F1c2UgYWxsIGJ1aWx0aW4gY29tbWFuZHMgY29udGFpbgogICAgICAgICAgICAgICAgICAgICAgKiAicHl0aG9uIi4KICAgICAgICAgICAgICAgICAgICAgICovCkBAIC04MDUsNyArODc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCp2cHAgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHZwcC0+c2hlYmFuZyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBOb3QgZm91bmQgaW4gYnVpbHRpbnMgLSBsb29rIGluIGN1c3RvbWlzZWQgY29tbWFuZHMuCiAgICAgICAgICAgICAgICAgICoKQEAgLTg1Niw3ICs5MjcsNyBAQAogfSBCT007CiAKIC8qCi0gKiBTdHJpY3RseSwgd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgVVRGLTE2IGFuZiBVVEYtMzIsIHNpbmNlIFB5dGhvbiBpdHNlbGYKKyAqIFN0cmljdGx5LCB3ZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBVVEYtMTYgYW5kIFVURi0zMiwgc2luY2UgUHl0aG9uIGl0c2VsZgogICogZG9lc24ndC4gTmV2ZXIgbWluZCwgb25lIGRheSBpdCBtaWdodCAtIHRoZXJlJ3Mgbm8gaGFybSBsZWF2aW5nIGl0IGluLgogICovCiBzdGF0aWMgQk9NIEJPTXNbXSA9IHsKQEAgLTEwMTIsOCArMTA4MywxMCBAQAogICAgIGludCBpLCBqLCBuY2hhcnMgPSAwOwogICAgIGludCBoZWFkZXJfbGVuOwogICAgIEJPT0wgaXNfdmlydDsKKyAgICBCT09MIHNlYXJjaDsKICAgICB3Y2hhcl90ICogY29tbWFuZDsKICAgICB3Y2hhcl90ICogc3VmZml4OworICAgIENPTU1BTkQgKmNtZCA9IE5VTEw7CiAgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwOwogCiAgICAgaWYgKHJjID09IDApIHsKQEAgLTExMjUsNyArMTE5OCw3IEBACiAgICAgICAgICAgICBpZiAobmNoYXJzID4gMCkgewogICAgICAgICAgICAgICAgIHNoZWJhbmdfbGluZVstLW5jaGFyc10gPSBMJ1wwJzsKICAgICAgICAgICAgICAgICBpc192aXJ0ID0gcGFyc2Vfc2hlYmFuZyhzaGViYW5nX2xpbmUsIG5jaGFycywgJmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1ZmZpeCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1ZmZpeCwgJnNlYXJjaCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMInBhcnNlX3NoZWJhbmc6IGZvdW5kIGNvbW1hbmQ6ICVzXG4iLCBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc192aXJ0KSB7CkBAIC0xMTQxLDYgKzEyMTQsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIlVua25vd24gdmlydHVhbCBcCiBwYXRoICclcyciLCBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgKz0gNjsgICAvKiBza2lwIHBhc3QgInB5dGhvbiIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWFyY2ggJiYgKCgqY29tbWFuZCA9PSBMJ1wwJykgfHwgaXNzcGFjZSgqY29tbWFuZCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29tbWFuZCBpcyBlbGlnaWJsZSBmb3IgcGF0aCBzZWFyY2gsIGFuZCB0aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIG5vIHZlcnNpb24gc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMInNlYXJjaGluZyBQQVRIIGZvciBweXRob24gZXhlY3V0YWJsZVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kID0gZmluZF9vbl9wYXRoKEwicHl0aG9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJQeXRob24gb24gcGF0aDogJXNcbiIsIGNtZCA/IGNtZC0+dmFsdWUgOiBMIjxub3QgZm91bmQ+Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZWQgcHl0aG9uIG9uIFBBVEg6ICVzXG4iLCBjbWQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGNtZC0+dmFsdWUsIHN1ZmZpeCwgY21kbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEV4aXQgaGVyZSwgYXMgd2UgaGF2ZSBmb3VuZCB0aGUgY29tbWFuZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSDogTm8gcHl0aG9uIGZvdW5kIG9uIFBBVEgsIHNvIGZhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBiYWNrIHRvIGxvY2F0aW5nIHRoZSBjb3JyZWN0IGluc3RhbGxlZCBweXRob24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmNvbW1hbmQgJiYgIXZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfQkFEX1ZJUlRVQUxfUEFUSCwgTCJJbnZhbGlkIHZlcnNpb24gXAogc3BlY2lmaWNhdGlvbjogJyVzJy5cbkluIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzY3JpcHQsICdweXRob24nIG5lZWRzIHRvIGJlIFwKQEAgLTEyMjMsNiArMTMxMywxMiBAQAogICAgIHZvaWQgKiB2ZXJzaW9uX2RhdGE7CiAgICAgVlNfRklYRURGSUxFSU5GTyAqIGZpbGVfaW5mbzsKICAgICBVSU5UIGJsb2NrX3NpemU7CisgICAgaW50IGluZGV4OworI2lmIGRlZmluZWQoU0NSSVBUX1dSQVBQRVIpCisgICAgaW50IG5ld2xlbjsKKyAgICB3Y2hhcl90ICogbmV3Y29tbWFuZDsKKyAgICB3Y2hhcl90ICogYXZbMl07CisjZW5kaWYKIAogICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CiAgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKQEAgLTEyNzEsOCArMTM2Nyw4IEBACiAgICAgICAgICAgICBpZiAoIXZhbGlkKQogICAgICAgICAgICAgICAgIGRlYnVnKEwiR2V0RmlsZVZlcnNpb25JbmZvIGZhaWxlZDogJVhcbiIsIEdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZhbGlkID0gVmVyUXVlcnlWYWx1ZVcodmVyc2lvbl9kYXRhLCBMIlxcIiwgJmZpbGVfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja19zaXplKTsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IFZlclF1ZXJ5VmFsdWVXKHZlcnNpb25fZGF0YSwgTCJcXCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTFBWT0lEICopICZmaWxlX2luZm8sICZibG9ja19zaXplKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKQogICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlZlclF1ZXJ5VmFsdWUgZmFpbGVkOiAlWFxuIiwgR2V0TGFzdEVycm9yKCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMTMwMiw3ICsxMzk4LDQwIEBACiAgICAgfQogCiAgICAgY29tbWFuZCA9IHNraXBfbWUoR2V0Q29tbWFuZExpbmVXKCkpOwotICAgIGRlYnVnKEwiQ2FsbGVkIHdpdGggY29tbWFuZCBsaW5lOiAlcyIsIGNvbW1hbmQpOworICAgIGRlYnVnKEwiQ2FsbGVkIHdpdGggY29tbWFuZCBsaW5lOiAlc1xuIiwgY29tbWFuZCk7CisKKyNpZiBkZWZpbmVkKFNDUklQVF9XUkFQUEVSKQorICAgIC8qIFRoZSBsYXVuY2hlciBpcyBiZWluZyB1c2VkIGluICJzY3JpcHQgd3JhcHBlciIgbW9kZS4KKyAgICAgKiBUaGVyZSBzaG91bGQgdGhlcmVmb3JlIGJlIGEgUHl0aG9uIHNjcmlwdCBuYW1lZCA8ZXhlbmFtZT4tc2NyaXB0LnB5IGluCisgICAgICogdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlciBleGVjdXRhYmxlLgorICAgICAqIFB1dCB0aGUgc2NyaXB0IG5hbWUgaW50byBhcmd2IGFzIHRoZSBmaXJzdCAoc2NyaXB0IG5hbWUpIGFyZ3VtZW50LgorICAgICAqLworCisgICAgLyogR2V0IHRoZSB3cmFwcGVkIHNjcmlwdCBuYW1lIC0gaWYgdGhlIHNjcmlwdCBpcyBub3QgcHJlc2VudCwgdGhpcyB3aWxsCisgICAgICogdGVybWluYXRlIHRoZSBwcm9ncmFtIHdpdGggYW4gZXJyb3IuCisgICAgICovCisgICAgbG9jYXRlX3dyYXBwZWRfc2NyaXB0KCk7CisKKyAgICAvKiBBZGQgdGhlIHdyYXBwZWQgc2NyaXB0IHRvIHRoZSBzdGFydCBvZiBjb21tYW5kICovCisgICAgbmV3bGVuID0gd2NzbGVuKHdyYXBwZWRfc2NyaXB0X3BhdGgpICsgd2NzbGVuKGNvbW1hbmQpICsgMjsgLyogJyAnICsgTlVMICovCisgICAgbmV3Y29tbWFuZCA9IG1hbGxvYyhzaXplb2Yod2NoYXJfdCkgKiBuZXdsZW4pOworICAgIGlmICghbmV3Y29tbWFuZCkgeworICAgICAgICBlcnJvcihSQ19OT19NRU1PUlksIEwiQ291bGQgbm90IGFsbG9jYXRlIG5ldyBjb21tYW5kIGxpbmUiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdjc2NweV9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIHdjc2NhdF9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgTCIgIik7CisgICAgICAgIHdjc2NhdF9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgY29tbWFuZCk7CisgICAgICAgIGRlYnVnKEwiUnVubmluZyB3cmFwcGVkIHNjcmlwdCB3aXRoIGNvbW1hbmQgbGluZSAnJXMnXG4iLCBuZXdjb21tYW5kKTsKKyAgICAgICAgcmVhZF9jb21tYW5kcygpOworICAgICAgICBhdlswXSA9IHdyYXBwZWRfc2NyaXB0X3BhdGg7CisgICAgICAgIGF2WzFdID0gTlVMTDsKKyAgICAgICAgbWF5YmVfaGFuZGxlX3NoZWJhbmcoYXYsIG5ld2NvbW1hbmQpOworICAgICAgICAvKiBSZXR1cm5zIGlmIG5vIHNoZWJhbmcgbGluZSAtIHBhc3MgdG8gZGVmYXVsdCBwcm9jZXNzaW5nICovCisgICAgICAgIGNvbW1hbmQgPSBuZXdjb21tYW5kOworICAgICAgICB2YWxpZCA9IEZBTFNFOworICAgIH0KKyNlbHNlCiAgICAgaWYgKGFyZ2MgPD0gMSkgewogICAgICAgICB2YWxpZCA9IEZBTFNFOwogICAgICAgICBwID0gTlVMTDsKQEAgLTEzMTAsMTMgKzE0MzksNiBAQAogICAgIGVsc2UgewogICAgICAgICBwID0gYXJndlsxXTsKICAgICAgICAgcGxlbiA9IHdjc2xlbihwKTsKLSAgICAgICAgaWYgKHBbMF0gIT0gTCctJykgewotICAgICAgICAgICAgcmVhZF9jb21tYW5kcygpOwotICAgICAgICAgICAgbWF5YmVfaGFuZGxlX3NoZWJhbmcoJmFyZ3ZbMV0sIGNvbW1hbmQpOwotICAgICAgICB9Ci0gICAgICAgIC8qIE5vIGZpbGUgd2l0aCBzaGViYW5nLCBvciBhbiB1bnJlY29nbmlzZWQgc2hlYmFuZy4KLSAgICAgICAgICogSXMgdGhlIGZpcnN0IGFyZyBhIHNwZWNpYWwgdmVyc2lvbiBxdWFsaWZpZXI/Ci0gICAgICAgICAqLwogICAgICAgICB2YWxpZCA9ICgqcCA9PSBMJy0nKSAmJiB2YWxpZGF0ZV92ZXJzaW9uKCZwWzFdKTsKICAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oJnBbMV0pOwpAQCAtMTMyNiw3ICsxNDQ4LDE5IEBACiAgICAgICAgICAgICBjb21tYW5kICs9IHdjc2xlbihwKTsKICAgICAgICAgICAgIGNvbW1hbmQgPSBza2lwX3doaXRlc3BhY2UoY29tbWFuZCk7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGluZGV4ID0gMTsgaW5kZXggPCBhcmdjOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKCphcmd2W2luZGV4XSAhPSBMJy0nKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCA8IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICByZWFkX2NvbW1hbmRzKCk7CisgICAgICAgICAgICAgICAgbWF5YmVfaGFuZGxlX3NoZWJhbmcoJmFyZ3ZbaW5kZXhdLCBjb21tYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCF2YWxpZCkgewogICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKICAgICAgICAgaWYgKGlwID09IE5VTEwpCkBAIC0xMzQ0LDcgKzE0NzgsNyBAQAogICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBWZXJzaW9uICVzXG5cbiIsIHZlcnNpb25fdGV4dCk7CiAgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAotdXNhZ2U6ICVzIFsgbGF1bmNoZXItYXJndW1lbnRzIF0gc2NyaXB0IFsgc2NyaXB0LWFyZ3VtZW50cyBdXG5cbiIsIGFyZ3ZbMF0pOwordXNhZ2U6ICVzIFsgbGF1bmNoZXItYXJndW1lbnRzIF0gWyBweXRob24tYXJndW1lbnRzIF0gc2NyaXB0IFsgc2NyaXB0LWFyZ3VtZW50cyBdXG5cbiIsIGFyZ3ZbMF0pOwogICAgICAgICAgICAgZnB1dHdzKEwiXAogTGF1bmNoZXIgYXJndW1lbnRzOlxuXG5cCiAtMiAgICAgOiBMYXVuY2ggdGhlIGxhdGVzdCBQeXRob24gMi54IHZlcnNpb25cblwKZGlmZiAtLWdpdCBhL1BDL21zdmNydG1vZHVsZS5jIGIvUEMvbXN2Y3J0bW9kdWxlLmMKaW5kZXggMDRkMjA4OC4uMThkZWM2ZCAxMDA3NTUKLS0tIGEvUEMvbXN2Y3J0bW9kdWxlLmMKKysrIGIvUEMvbXN2Y3J0bW9kdWxlLmMKQEAgLTExMywxMSArMTEzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBsb25nIGhhbmRsZTsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGZsYWdzOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6b3Blbl9vc2ZoYW5kbGUiLCAmaGFuZGxlLCAmZmxhZ3MpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfSU5UUFRSICJpOm9wZW5fb3NmaGFuZGxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmZCA9IF9vcGVuX29zZmhhbmRsZShoYW5kbGUsIGZsYWdzKTsKZGlmZiAtLWdpdCBhL1BDL29zMmVteC9NYWtlZmlsZSBiL1BDL29zMmVteC9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAwNjEwZS4uMDAwMDAwMAotLS0gYS9QQy9vczJlbXgvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSw2NzIgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjPT09PT09PT09PT09PT09PT09LS0tLS0tLS0tLS0tLS0tLQotIwotIyBUb3AtTGV2ZWwgTWFrZWZpbGUgZm9yIEJ1aWxkaW5nIFB5dGhvbiAyLjYgZm9yIE9TLzIgdXNpbmcgR0NDL0VNWAotIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQW5kcmV3IFphYm9sb3RueSwgPGJpdEBlbHRlY2gucnU+IGZvciBQeXRob24gMS41LjIKLSMgTW9kaWZpZWQgYnkgQW5kcmV3IE1hY0ludHlyZSwgPGFuZHltYWNAcGN1Zy5vcmcuYXU+IGZvciBQeXRob24gMi42Ci0jCi0jIFRoaXMgbWFrZWZpbGUgd2FzIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggW1BdR0NDL0VNWCBjb21waWxlciBhbnkKLSMgdmVyc2lvbiBhbmQgR05VIE1ha2UuCi0jCi0jIFRoZSBvdXRwdXQgb2YgdGhlIGJ1aWxkIGlzIGEgbGFyZ2lzaCBQeXRob24yNi5ETEwgY29udGFpbmluZyB0aGUKLSMgZXNzZW50aWFsIG1vZHVsZXMgb2YgUHl0aG9uIGFuZCBhIHNtYWxsIFB5dGhvbi5leGUgcHJvZ3JhbSB0byBzdGFydAotIyB0aGUgaW50ZXJwcmV0ZXIuIFdoZW4gZW1iZWRkaW5nIFB5dGhvbiB3aXRoaW4gYW5vdGhlciBwcm9ncmFtLCBvbmx5Ci0jIFB5dGhvbjI2LkRMTCBpcyBuZWVkZWQuIFdlIGFsc28gYnVpbGQgcHl0aG9uX3MuYSBzdGF0aWMgbGlicmFyeSAod2hpY2gKLSMgY2FuIGJlIGNvbnZlcnRlZCBpbnRvIE9NRiAoLmxpYikgZm9ybWF0IHVzaW5nIGVteG9tZiB0b29sKSBhbmQgYm90aAotIyBweXRob24uYSBhbmQgcHl0aG9uLmxpYiBpbXBvcnQgbGlicmFyaWVzLiAgVGhlbiB0aGUgb3B0aW9uYWwgCi0jIGV4dGVuc2lvbiBtb2R1bGVzLCB3aGljaCBhcmUgT1MvMiBETExzIHJlbmFtZWQgd2l0aCBhIFBZRCBmaWxlIGV4dGVuc2lvbi4KLSMKLSMgUmVjb21tZW5kZWQgYnVpbGQgb3JkZXI6Ci0jICAgbWFrZSBkZXBlbmQJCShpZiB5b3UgaGF2ZSBtYWtlZGVwKQotIyAgIG1ha2UgYWxsCi0jICAgbWFrZSBseAkJKGlmIHlvdSBoYXZlIGx4bGl0ZSkKLSMgICBtYWtlIHRlc3QJCShvcHRpb25hbCkKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIz09PT09PT09PT09PT09PT09PS0tLS0tLS0tLS0tLS0tLS0KLQotIyA9PT0gQ29tcGlsYXRpb24gbW9kZTogZGVidWcgb3IgcmVsZWFzZSA9PT0KLU1PREU9CQlvcHRpbWl6ZQotI01PREU9CQlkZWJ1ZwotIyA9PT0gQXNzZXJ0KCkgZW5hYmxlZCA9PT0KLUFTU0VSVElPTlM9bm8KLSNBU1NFUlRJT05TPXllcwotIyA9PT0gSGFyZC13aXJlIGluc3RhbGxhdGlvbiBsb2NhdGlvbiA9PT0KLUZJWEVEX1BZSE9NRT1ubwotI0ZJWEVEX1BZSE9NRT15ZXMKLQotIyA9PT0gT3B0aW9uYWwgbW9kdWxlcyA9PT0KLSMgRG8geW91IGhhdmUgdGhlIEluZm9aaXAgY29tcHJlc3Npb24gbGlicmFyeSBpbnN0YWxsZWQ/Ci1IQVZFX1pMSUI9CW5vCi0jIERvIHlvdSBoYXZlIHRoZSBVbHRyYSBGYXN0IENyeXB0IChVRkMpIGxpYnJhcnkgaW5zdGFsbGVkPwotSEFWRV9VRkM9CW5vCi0jIERvIHlvdSBoYXZlIHRoZSBUY2wvVGsgbGlicmFyeSBpbnN0YWxsZWQ/Ci1IQVZFX1RDTFRLPQlubwotIyBEbyB5b3UgaGF2ZSB0aGUgR05VIHJlYWRsaW5lIGxpYnJhcnkgaW5zdGFsbGVkPwotIyBOT1RFOiBJJ20gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIEthaSBVd2UgUm9tbWVsJ3MgcG9ydCB0aGF0IAotIyAgICAgICAtIGlzIGNvbXBpbGVkIHdpdGggbXVsdGl0aHJlYWRpbmcgZW5hYmxlZAotIyAgICAgICAtIGlzIGxpbmtlZCBzdGF0aWNhbGx5Ci0jICAgICAgIEkgaGF2ZSBoYWQgbm8gc3VjY2VzcyB0cnlpbmcgdG8gdXNlIGEgRExMIHZlcnNpb24sIGV2ZW4gd2hlbgotIyAgICAgICBjb21waWxlZCB3aXRoIG11bHRpdGhyZWFkaW5nIGVuYWJsZWQuCi1IQVZFX0dSRUFETElORT0Jbm8KLSMgRG8geW91IGhhdmUgdGhlIEJTRCBEQiBsaWJyYXJ5ICh2MS44NSkgYXMgaW5jbHVkZWQgaW4gdGhlIEVNWEJTRCBwYWNrYWdlPwotIyBOT1RFOiB0aGlzIGxpYnJhcnkgbmVlZHMgdG8gYmUgcmVjb21waWxlZCB3aXRoIGEgc3RydWN0dXJlIG1lbWJlcgotIyAgICAgICByZW5hbWVkIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggdGhlIG11bHRpdGhyZWFkZWQgZXJybm8gc3VwcG9ydAotIyAgICAgICAodGhlcmUgaXMgYSBzdHJ1Y3R1cmUgbWVtYmVyIGNhbGxlZCBlcnJubywgdXNlZCBmb3Igc2hhZG93aW5nIHRoZQotIyAgICAgICByZWFsIGVycm5vLCB3aGljaCBjb25mbGljdHMgd2l0aCB0aGUgZXJybm8gcmVkZWZpbml0aW9uIG9mIC1abXQpCi1IQVZFX0JTRERCPQlubwotIyBEbyB5b3UgaGF2ZSB0aGUgbmN1cnNlcyBsaWJyYXJ5IGluc3RhbGxlZD8gRU1YJ3MgQlNEIGN1cnNlcyBhcmVuJ3QgZW5vdWdoISAKLUhBVkVfTkNVUlNFUz0Jbm8KLSMgRG8geW91IGhhdmUgdGhlIEdEQk0gbGlicmFyeSBpbnN0YWxsZWQ/Ci1IQVZFX0dEQk09CW5vCi0jIERvIHlvdSBoYXZlIHRoZSBCWjIgY29tcHJlc3Npb24gbGlicmFyeSBpbnN0YWxsZWQ/Ci1IQVZFX0JaMj0Jbm8KLSMgRG8geW91IGhhdmUgdGhlIE9wZW5TU0wgbGlicmFyaWVzIGluc3RhbGxlZAotSEFWRV9PUEVOU1NMPQlubwotCi0jID09PSBpbnN0YWxsIGxvY2F0aW9ucyA9PT0KLSMgZGVmYXVsdCB2YWx1ZSBvZiBQWVRIT05IT01FCi1MSUJfRElSPUM6L1B5dGhvbjI2Ci0jIGRlZmF1bHQgaXMgdG8gaGF2ZSBldmVyeXRoaW5nIGluIG9yIHVuZGVyIFBZVEhPTkhPTUUKLUVYRV9ESVI9JChMSUJfRElSKQotRExMX0RJUj0kKEVYRV9ESVIpCi0KLQotIyA9PT0gVGhlIFRvb2xzID09PQotQ0M9CQlnY2MKLUNGTEFHUz0JCS1abXQgLVdhbGwgJChJTkNMVURFKQotQ0ZMQUdTLkxJQj0JJChDRkxBR1MpCi1MRD0JCWdjYwotTERGTEFHUz0JLVptdCAtWmNydGRsbCAtTC4gLWxnY2MKLUxERkxBR1MuRVhFPQkkKExERkxBR1MpCi1MREZMQUdTLkRMTD0JJChMREZMQUdTKSAtWmRsbAotTERGTEFHUy5BPQkkKExERkxBR1MpICQoTElCUykKLUFSRkxBR1M9CWNycwotSU1QTElCPQkJZW14aW1wCi1FWFBMSUI9CQllbXhleHAKLUVYRU9QVD0JCWVteGJpbmQKLVBZX0RFRj0JCS1EUHlfQlVJTERfQ09SRQotCi0KLSMgYWRqdXN0IEMgY29tcGlsZXIgc2V0dGluZ3MgYmFzZWQgb24gYnVpbGQgb3B0aW9ucwotaWZlcSAoJChNT0RFKSxkZWJ1ZykKLSAgQ0ZMQUdTKz0JLWcgLU8KLSAgTERGTEFHUys9CS1nCi1lbHNlCi0gIENGTEFHUys9CS1zIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtbXByb2JlCi0gIExERkxBR1MrPQktcwotZW5kaWYKLUNGTEFHUys9CSQoUFlfREVGKQotaWZlcSAoJChBU1NFUlRJT05TKSxubykKLSAgQ0ZMQUdTKz0JLUROREVCVUcKLWVuZGlmCi1pZmVxICgkKEZJWEVEX1BZSE9NRSkseWVzKQotICBDRkxBR1MrPQktRFBSRUZJWD0kKERRVU9URSkkKExJQl9ESVIpJChEUVVPVEUpCi1lbmRpZgotCi0jIFdlJ3JlIHVzaW5nIHRoZSBPTUYgZm9ybWF0IHNpbmNlIEVNWCdzIGxkIGhhcyBhIG9ic2N1cmUgYnVnCi0jIGJlY2F1c2Ugb2Ygd2hpY2ggaXQgc29tZXRpbWVzIGZhaWxzIHRvIGJ1aWxkIHJlbG9jYXRpb25zCi0jIGluIC5kYXRhIHNlZ21lbnQgdGhhdCBwb2ludCB0byBhbm90aGVyIC5kYXRhIGxvY2F0aW9ucwotIyAoZXhjZXB0IGZvciB0aGUgZmluYWwgbGlua2luZyBpZiB0aGUgLkVYRXMpCi1PTUY9CQl5ZXMKLQotIyBpZiBmb3JrKCkgc3VwcG9ydCBpcyByZXF1aXJlZCwgdGhlIG1haW4gZXhlY3V0YWJsZSBtdXN0IGJlIGxpbmtlZCB3aXRoIGxkCi1FWEVPTUY9CQlubwotCi0jIEZpbGUgZXh0ZW5zaW9ucwotTU9EVUxFLkVYVD0JLnB5ZAotTU9ETElCLkVYVD0JLmRsbAotaWZlcSAoJChPTUYpLHllcykKLSAgTz0JCS5vYmoKLSAgQT0JCS5saWIKLSAgQVI9CQllbXhvbWZhcgotICBDRkxBR1MrPQktWm9tZgotICBMREZMQUdTKz0JLVpvbWYKLSAgaWZlcSAoJChNT0RFKSxkZWJ1ZykKLSAgICBBUkZMQUdTPQktcDY0IGNycwotICBlbHNlCi0gICAgQVJGTEFHUz0JLXAzMiBjcnMKLSAgZW5kaWYKLWVsc2UKLSAgTz0JCS5vCi0gIEE9CQkuYQotICBBUj0JCWFyCi1lbmRpZgotCi0KLSMgPT09IEJ1aWxkIHRpbWUgcmVzb3VyY2Ugc2V0dGluZ3MgPT09Ci0KLSMgRU1YJ3MgZGVmYXVsdCBudW1iZXIgb2YgZmlsZSBoYW5kbGVzIGlzIDQwLCB3aGljaCBpcyBzb21ldGltZXMgaW5zdWZmaWNpZW50Ci0jICh0aGUgdGVtcGZpbGUgcmVncmVzc2lvbiB0ZXN0IHRyaWVzIHRvIGNyZWF0ZSAxMDAgdGVtcG9yYXJ5IGZpbGVzKQotTkZJTEVTPTI1MAotCi0jIFRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIGNoaWxkIHRocmVhZHMgaXMgNjRrIGJ5dGVzLCB3aGljaCBpcwotIyBpbnN1ZmZpY2llbnQgZm9yIHNvbWUgYXBwbGljYXRpb25zIHdoaWNoIGRvIGEgbG90IG9mIHdvcmsgaW4gdGhyZWFkcwotIyAoc3VjaCBhcyBab3BlLCBlc3BlY2lhbGx5IGluIGNvbmp1bmN0aW9uIHdpdGggUGxvbmUpLgotIyBOb3RlIHRoYXQgdGhpcyBzZXR0aW5nIGlzIGRpc3RpbmN0IGZyb20gdGhlIHN0YWNrIHNpemUgZm9yIHRoZSBtYWluCi0jIHRocmVhZCwgd2hpY2ggaXMgc2V0IHZpYSB0aGUgJS5kZWYgcnVsZSBiZWxvdy4KLSMgRU1YIGRvY3VtZW50cyB0aGF0IHRoZSB0aHJlYWQgc3RhY2sgc2l6ZSBzaG91bGQgYmUgYXQgbGVhc3QgMzI3NjggYnl0ZXM7Ci0jIGZvciBab3BlL1Bsb25lIGF0IGxlYXN0IDEyOGsgYnl0ZXMgaXMgcmVjb21tZW5kZWQuCi0jIFVuY29tbWVudCAmIGFkanVzdCB0aGUgbmV4dCBsaW5lIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemU6Ci0jQ0ZMQUdTKz0JLURUSFJFQURfU1RBQ0tfU0laRT0weDIwMDAwCi0KLQotIyA9PT0gVGhlIGVudmlyb25tZW50ID09PQotCi0jIFNvdXJjZSBmaWxlIHBhdGhzCi1TUkNQQVRIPS47Li4vLi4vUHl0aG9uOy4uLy4uL1BhcnNlcjsuLi8uLi9PYmplY3RzOy4uLy4uL0luY2x1ZGU7Li4vLi4vTW9kdWxlcwotIyBQeXRob24gY29udGFpbnMgdGhlIGNlbnRyYWwgY29yZSwgY29udGFpbmluZyB0aGUgYnVpbHRpbnMgYW5kIGludGVycHJldGVyLgotIyBQYXJzZXIgY29udGFpbnMgUHl0aG9uJ3MgSW50ZXJuYWwgUGFyc2VyIGFuZAotIyAgIFN0YW5kYWxvbmUgUGFyc2VyIEdlbmVyYXRvciBQcm9ncmFtIChTaGFyZXMgU29tZSBvZiBQeXRob24ncyBNb2R1bGVzKQotIyBPYmplY3RzIGNvbnRhaW5zIFB5dGhvbiBPYmplY3QgVHlwZXMKLSMgTW9kdWxlcyBjb250YWlucyBleHRlbnNpb24gTW9kdWxlcyAoQnVpbHQtSW4gb3IgYXMgU2VwYXJhdGUgRExMcykKLQotIyBVbml4IHNoZWxscyB0ZW5kIHRvIHVzZSAiJCIgYXMgZGVsaW1pdGVyIGZvciB2YXJpYWJsZSBuYW1lcy4KLSMgVGVzdCBmb3IgdGhpcyBiZWhhdmlvdXIgYW5kIHNldCAkKEJVQ0spIHZhcmlhYmxlIGNvcnJlc3BvbmRpZ2x5IC4uLgotX19UTVBfXzo9JChzaGVsbCBlY2hvICQkJCQpCi1pZmVxICgkKF9fVE1QX18pLCQkJCQpCi0gIEJVQ0s9CQkkJAotICBCUk89CQkoCi0gIEJSQz0JCSkKLWVsc2UKLSAgQlVDSz0JCVwkJAotICBCUk89CQlcKAotICBCUkM9CQlcKQotZW5kaWYKLSMgQ29tcHV0ZSB0aGUgImRvdWJsZSBxdW90ZSIgdmFyaWFibGUKLV9fVE1QX186PSQoc2hlbGwgZWNobyAiIikKLWlmZXEgKCQoX19UTVBfXyksIiIpCi0gIERRVU9URT0JIgotZWxzZQotICBEUVVPVEU9CVwiCi1lbmRpZgotCi0jIEluY2x1ZGUgcGF0aHMKLSNJTkNMVURFPQktSSQoc3Vic3QgOywgLUksICQoU1JDUEFUSCkpCi1JTkNMVURFPQktSS4gLUkuLi8uLi9JbmNsdWRlCi0KLSMgUGF0aCB0byBzZWFyY2ggZm9yIC5jIGZpbGVzCi12cGF0aCAlLmMgLjsuLjskKFNSQ1BBVEgpCi0KLSMgVG9wIG9mIHRoZSBwYWNrYWdlIHRyZWUKLVRPUD0JCS4uLy4uLwotCi0jIERpcmVjdG9yeSBmb3Igb3V0cHV0IGZpbGVzCi1PVVRCQVNFPQlvdXQvCi1PVVQ9CQkkKE9VVEJBU0UpJChNT0RFKS8KLQotIyBBZGRpdGlvbmFsIGxpYnJhcmllcwotTElCUz0JCS1sc29ja2V0Ci0KLSMgVXRpbGl0eSBtYWNybzogcmVwbGFjZW1lbnQgZm9yICReCi1eXj0JCSQoZmlsdGVyLW91dCAlJEEsJF4pCi0jIFVzZSAkKExeKSB0byBsaW5rIHdpdGggYWxsIGxpYnJhcmllcyBzcGVjaWZpZWQgYXMgZGVwZW5kZW5jaWVzCi1MXj0JCSQoYWRkcHJlZml4IC1sLCQoYmFzZW5hbWUgJChub3RkaXIgJChmaWx0ZXIgJSRBLCQrKSkpKQotCi0jIEJ1aWxkIHJ1bGVzCi0kKE9VVCklJE86ICUuYwotCSQoQ0MpICQoQ0ZMQUdTLkxJQikgLWMgJDwgLW8gJEAKLQotJS5hOgotCSQoTEQpICQoTERGTEFHUy5BKSAtbyAkQCAkKF5eKSAkKExeKQotCi0lLmRsbDoKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpCi0KLSUucHlkOiAkKE9VVCklbW9kdWxlJE8gJChPVVQpJV9tLmRlZgotCSQoTEQpICQoTERGTEFHUy5ETEwpIC1vICRAICQoXl4pICQoUFlUSE9OLklNUExJQikgJChMSUJTKQotCi0lLmV4ZToKLQkkKExEKSAkKExERkxBR1MuRVhFKSAtbyAkQCAkKF5eKSAkKExeKQotCi0lX20uZGVmOgotCUBlY2hvIENyZWF0aW5nIC5ERUYgZmlsZTogJEAKLQlAZWNobyBMSUJSQVJZICQobm90ZGlyICQqKSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFID4kQAotICAgICAgICBpZmVxICgkKERFU0NSSVBUSU9OLiQobm90ZGlyICQqKSQoTU9EVUxFLkVYVCkpLCkKLQkgIEBlY2hvIERFU0NSSVBUSU9OICQoRFFVT1RFKVB5dGhvbiBzdGFuZGFyZCBtb2R1bGUgJChub3RkaXIgJCopJChEUVVPVEUpID4+JEAKLSAgICAgICAgZWxzZQotCSAgQGVjaG8gREVTQ1JJUFRJT04gJChEUVVPVEUpJChERVNDUklQVElPTi4kKG5vdGRpciAkKikkKE1PRFVMRS5FWFQpKSQoRFFVT1RFKSA+PiRACi0gICAgICAgIGVuZGlmCi0JQGVjaG8gREFUQSBNVUxUSVBMRSBOT05TSEFSRUQgPj4kQAotCUBlY2hvIEVYUE9SVFMgPj4kQAotCUBlY2hvIAlpbml0JChub3RkaXIgJCopID4+JEAKLQotJS5kZWY6Ci0JQGVjaG8gQ3JlYXRpbmcgLkRFRiBmaWxlOiAkQAotCUBlY2hvIE5BTUUgJChub3RkaXIgJCopICQoRVhFVFlQRS4kKG5vdGRpciAkKikuZXhlKSA+JEAKLQlAZWNobyBERVNDUklQVElPTiAkKERRVU9URSkkKERFU0NSSVBUSU9OLiQobm90ZGlyICQqKS5leGUpJChEUVVPVEUpID4+JEAKLQlAZWNobyBTVEFDS1NJWkUgMjA5NzE1MiA+PiRACi0KLSMgT3V0cHV0IGZpbGUgbmFtZXMKLVBZVEhPTl9WRVI9CTIuNgotUFlUSE9OX0xJQj0JcHl0aG9uMzMKLVBZVEhPTi5MSUI9CSQoUFlUSE9OX0xJQilfcyRBCi1QWVRIT04uSU1QTElCPQkkKFBZVEhPTl9MSUIpJEEKLWlmZXEgKCQoRVhFT01GKSx5ZXMpCi0gIFBZVEhPTi5FWEVJTVA9CSQoUFlUSE9OLklNUExJQikKLSAgTERNT0RFLkVYRT0JCS1ab21mCi1lbHNlCi0gIFBZVEhPTi5FWEVJTVA9CSQoUFlUSE9OX0xJQikuYQotICBMRE1PREUuRVhFID0gCi1lbmRpZgotUFlUSE9OLkRMTD0JJChQWVRIT05fTElCKS5kbGwKLVBZVEhPTi5ERUY9CSQoUFlUSE9OX0xJQikuZGVmCi1QWVRIT04uRVhFPQlweXRob24uZXhlCi1QWVRIT05QTS5FWEU9CXB5dGhvbnBtLmV4ZQotUEdFTi5FWEU9CXBnZW4uZXhlCi1MSUJSQVJZPQkkKFBZVEhPTi5MSUIpCi1MRF9MSUJSQVJZPQkkKFBZVEhPTi5JTVBMSUIpCi0KLSMgQWRkaXRpb25hbCBleGVjdXRhYmxlIHBhcmFtZXRlcnMKLUVYRVRZUEUuJChQWVRIT04uRVhFKT0JCVdJTkRPV0NPTVBBVAotRVhFVFlQRS4kKFBZVEhPTlBNLkVYRSk9CVdJTkRPV0FQSQotRVhFVFlQRS4kKFBHRU4uRVhFKT0JCVdJTkRPV0NPTVBBVAotREVTQ1JJUFRJT04uJChQWVRIT04uRVhFKT0JUHl0aG9uIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSBpbnRlcnByZXRlciBmb3IgT1MvMgotREVTQ1JJUFRJT04uJChQWVRIT05QTS5FWEUpPQkkKERFU0NSSVBUSU9OLiQoUFlUSE9OLkVYRSkpCi1ERVNDUklQVElPTi4kKFBHRU4uRVhFKT0JUHl0aG9uIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSBwYXJzZXIgZ2VuZXJhdG9yIGZvciBPUy8yCi0KLSMgTW9kdWxlIGRlc2NyaXB0aW9ucwotREVTQ1JJUFRJT04uemxpYiQoTU9EVUxFLkVYVCk9CQlQeXRob24gRXh0ZW5zaW9uIERMTCBmb3IgYWNjZXNzaW5nIHRoZSBJbmZvWmlwIGNvbXByZXNzaW9uIGxpYnJhcnkKLURFU0NSSVBUSU9OLmNyeXB0JChNT0RVTEUuRVhUKT0JCVB5dGhvbiBFeHRlbnNpb24gRExMIGltcGxlbWVudGluZyB0aGUgY3J5cHQkKEJSTykkKEJSQykgZnVuY3Rpb24KLURFU0NSSVBUSU9OLl90a2ludGVyJChNT0RVTEUuRVhUKT0JUHl0aG9uIEV4dGVuc2lvbiBETEwgZm9yIGFjY2VzcyB0byBUY2wvVGsgRW52aXJvbm1lbnQKLURFU0NSSVBUSU9OLnJlYWRsaW5lJChNT0RVTEUuRVhUKT0JUHl0aG9uIEV4dGVuc2lvbiBETEwgZm9yIGFjY2VzcyB0byBHTlUgUmVhZExpbmUgbGlicmFyeQotREVTQ1JJUFRJT04uX2N1cnNlcyQoTU9ETElCLkVYVCk9CVB5dGhvbiBFeHRlbnNpb24gRExMIGZvciBhY2Nlc3MgdG8gbmN1cnNlcyBsaWJyYXJ5Ci1ERVNDUklQVElPTi5weWV4cGF0JChNT0RVTEUuRVhUKT0JUHl0aG9uIEV4dGVuc2lvbiBETEwgZm9yIGFjY2VzcyB0byBleHBhdCBsaWJyYXJ5Ci1ERVNDUklQVElPTi5iejIkKE1PRFVMRS5FWFQpPQkJUHl0aG9uIEV4dGVuc2lvbiBETEwgZm9yIGFjY2Vzc2luZyB0aGUgYnoyIGNvbXByZXNzaW9uIGxpYnJhcnkKLQotIyBTb3VyY2UgZmlsZXMKLVNSQy5PUzJFTVg9CWNvbmZpZy5jIGRsZmNuLmMgZ2V0cGF0aHAuYwotU1JDLk1BSU49CSQoYWRkcHJlZml4ICQoVE9QKSwgXAotCQlNb2R1bGVzL2dldGJ1aWxkaW5mby5jIFwKLQkJTW9kdWxlcy9tYWluLmMpCi1TUkMuTU9EVUxFUz0JJChhZGRwcmVmaXggJChUT1ApLCBcCi0JCU1vZHVsZXMvZ2Ntb2R1bGUuYyBcCi0JCU1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgXAotCQlNb2R1bGVzL3Bvc2l4bW9kdWxlLmMgXAotCQlNb2R1bGVzL190aHJlYWRtb2R1bGUuYyBcCi0JCU1vZHVsZXMvYXJyYXltb2R1bGUuYyBcCi0JCU1vZHVsZXMvYmluYXNjaWkuYyBcCi0JCU1vZHVsZXMvY21hdGhtb2R1bGUuYyBcCi0JCU1vZHVsZXMvX2NvZGVjc21vZHVsZS5jIFwKLQkJTW9kdWxlcy9jb2xsZWN0aW9uc21vZHVsZS5jIFwKLQkJTW9kdWxlcy9fY3N2LmMgXAotCQlNb2R1bGVzL2RhdGV0aW1lbW9kdWxlLmMgXAotCQlNb2R1bGVzL2Vycm5vbW9kdWxlLmMgXAotCQlNb2R1bGVzL2ZjbnRsbW9kdWxlLmMgXAotCQlNb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYyBcCi0JCU1vZHVsZXMvX2hlYXBxbW9kdWxlLmMgXAotCQlNb2R1bGVzL2ltYWdlb3AuYyBcCi0JCU1vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgXAotCQlNb2R1bGVzL19sb2NhbGVtb2R1bGUuYyBcCi0JCU1vZHVsZXMvbWF0aG1vZHVsZS5jIFwKLQkJTW9kdWxlcy9vcGVyYXRvci5jIFwKLQkJTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgXAotCQlNb2R1bGVzL3NoYTI1Nm1vZHVsZS5jIFwKLQkJTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBcCi0JCU1vZHVsZXMvX3NyZS5jIFwKLQkJTW9kdWxlcy9fc3RydWN0LmMgXAotCQlNb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMgXAotCQlNb2R1bGVzL3Rlcm1pb3MuYyBcCi0JCU1vZHVsZXMvdGltZW1vZHVsZS5jIFwKLQkJTW9kdWxlcy9fd2Vha3JlZi5jIFwKLQkJTW9kdWxlcy94eHN1YnR5cGUuYyBcCi0JCU1vZHVsZXMvemlwaW1wb3J0LmMpCi1TUkMuUEFSU0UxPQkkKGFkZHByZWZpeCAkKFRPUCksIFwKLQkJUGFyc2VyL2FjY2VsZXIuYyBcCi0JCVBhcnNlci9ncmFtbWFyMS5jIFwKLQkJUGFyc2VyL2xpc3Rub2RlLmMgXAotCQlQYXJzZXIvbm9kZS5jIFwKLQkJUGFyc2VyL3BhcnNlci5jIFwKLQkJUGFyc2VyL3BhcnNldG9rLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYykKLVNSQy5QQVJTRTI9CSQoYWRkcHJlZml4ICQoVE9QKSwgXAotCQlQYXJzZXIvdG9rZW5pemVyLmMgXAotCQlQYXJzZXIvbXlyZWFkbGluZS5jKQotU1JDLlBBUlNFUj0JJChTUkMuUEFSU0UxKSBcCi0JCSQoU1JDLlBBUlNFMikKLVNSQy5QWVRIT049CSQoYWRkcHJlZml4ICQoVE9QKSwgXAotCQlQeXRob24vUHl0aG9uLWFzdC5jIFwKLQkJUHl0aG9uL2FzZGwuYyBcCi0JCVB5dGhvbi9hc3QuYyBcCi0JCVB5dGhvbi9ibHRpbm1vZHVsZS5jIFwKLQkJUHl0aG9uL2V4Y2VwdGlvbnMuYyBcCi0JCVB5dGhvbi9jZXZhbC5jIFwKLQkJUHl0aG9uL2NvbXBpbGUuYyBcCi0JCVB5dGhvbi9jb2RlY3MuYyBcCi0JCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLmMgXAotCQlQeXRob24vZXJyb3JzLmMgXAotCQlQeXRob24vZnJvemVuLmMgXAotCQlQeXRob24vZnJvemVubWFpbi5jIFwKLQkJUHl0aG9uL2Z1dHVyZS5jIFwKLQkJUHl0aG9uL2dldGFyZ3MuYyBcCi0JCVB5dGhvbi9nZXRjb21waWxlci5jIFwKLQkJUHl0aG9uL2dldGNvcHlyaWdodC5jIFwKLQkJUHl0aG9uL2dldHBsYXRmb3JtLmMgXAotCQlQeXRob24vZ2V0dmVyc2lvbi5jIFwKLQkJUHl0aG9uL2dyYW1pbml0LmMgXAotCQlQeXRob24vaW1wb3J0LmMgXAotCQlQeXRob24vaW1wb3J0ZGwuYyBcCi0JCVB5dGhvbi9tYXJzaGFsLmMgXAotCQlQeXRob24vbW9kc3VwcG9ydC5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9teXN0cnRvdWwuYyBcCi0JCVB5dGhvbi9weWFyZW5hLmMgXAotCQlQeXRob24vcHljdHlwZS5jIFwKLQkJUHl0aG9uL3B5ZnBlLmMgXAotCQlQeXRob24vcHlzdGF0ZS5jIFwKLQkJUHl0aG9uL3B5c3RydG9kLmMgXAotCQlQeXRob24vcHl0aG9ucnVuLmMgXAotCQlQeXRob24vc3RydWN0bWVtYmVyLmMgXAotCQlQeXRob24vc3ltdGFibGUuYyBcCi0JCVB5dGhvbi9zeXNtb2R1bGUuYyBcCi0JCVB5dGhvbi90cmFjZWJhY2suYyBcCi0JCVB5dGhvbi9nZXRvcHQuYyBcCi0JCVB5dGhvbi9keW5sb2FkX3NobGliLmMgXAotCQlQeXRob24vdGhyZWFkLmMpCi1TUkMuT0JKRUNUPQkkKGFkZHByZWZpeCAkKFRPUCksIFwKLQkJT2JqZWN0cy9hYnN0cmFjdC5jIFwKLQkJT2JqZWN0cy9ib29sb2JqZWN0LmMgXAotCQlPYmplY3RzL2NlbGxvYmplY3QuYyBcCi0JCU9iamVjdHMvY2xhc3NvYmplY3QuYyBcCi0JCU9iamVjdHMvY29iamVjdC5jIFwKLQkJT2JqZWN0cy9jb2Rlb2JqZWN0LmMgXAotCQlPYmplY3RzL2NvbXBsZXhvYmplY3QuYyBcCi0JCU9iamVjdHMvZGVzY3JvYmplY3QuYyBcCi0JCU9iamVjdHMvZGljdG9iamVjdC5jIFwKLQkJT2JqZWN0cy9lbnVtb2JqZWN0LmMgXAotCQlPYmplY3RzL2ZpbGVvYmplY3QuYyBcCi0JCU9iamVjdHMvZmxvYXRvYmplY3QuYyBcCi0JCU9iamVjdHMvZnJhbWVvYmplY3QuYyBcCi0JCU9iamVjdHMvZnVuY29iamVjdC5jIFwKLQkJT2JqZWN0cy9nZW5vYmplY3QuYyBcCi0JCU9iamVjdHMvaXRlcm9iamVjdC5jIFwKLQkJT2JqZWN0cy9saXN0b2JqZWN0LmMgXAotCQlPYmplY3RzL2xvbmdvYmplY3QuYyBcCi0JCU9iamVjdHMvbWV0aG9kb2JqZWN0LmMgXAotCQlPYmplY3RzL21vZHVsZW9iamVjdC5jIFwKLQkJT2JqZWN0cy9vYmplY3QuYyBcCi0JCU9iamVjdHMvb2JtYWxsb2MuYyBcCi0JCU9iamVjdHMvcmFuZ2VvYmplY3QuYyBcCi0JCU9iamVjdHMvc2V0b2JqZWN0LmMgXAotCQlPYmplY3RzL3NsaWNlb2JqZWN0LmMgXAotCQlPYmplY3RzL3N0cmluZ29iamVjdC5jIFwKLQkJT2JqZWN0cy9zdHJ1Y3RzZXEuYyBcCi0JCU9iamVjdHMvdHVwbGVvYmplY3QuYyBcCi0JCU9iamVjdHMvdHlwZW9iamVjdC5jIFwKLQkJT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgXAotCQlPYmplY3RzL3VuaWNvZGVjdHlwZS5jIFwKLQkJT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMpCi0KLVNSQy5MSUI9CSQoU1JDLk9TMkVNWCkgXAotCQkkKFNSQy5NQUlOKSBcCi0JCSQoU1JDLlBBUlNFUikgXAotCQkkKFNSQy5PQkpFQ1QpIFwKLQkJJChTUkMuUFlUSE9OKSBcCi0JCSQoU1JDLk1PRFVMRVMpCi1PQkouTElCPQkkKGFkZHByZWZpeCAkKE9VVCksJChub3RkaXIgJChTUkMuTElCOi5jPSRPKSkpCi0KLVNSQy5QR0VOPQkkKFNSQy5QQVJTRTEpIFwKLQkJJChhZGRwcmVmaXggJChUT1ApLCBcCi0JCU9iamVjdHMvb2JtYWxsb2MuYykgXAotCQkkKGFkZHByZWZpeCAkKFRPUCksIFwKLQkJUHl0aG9uL215c25wcmludGYuYykgXAotCQkkKGFkZHByZWZpeCAkKFRPUCksIFwKLQkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYyBcCi0JCVBhcnNlci9wZ2VuLmMgXAotCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAotCQlQYXJzZXIvZ3JhbW1hci5jIFwKLQkJUGFyc2VyL2ZpcnN0c2V0cy5jKSBcCi0KLU9CSi5QR0VOPQkkKGFkZHByZWZpeCAkKE9VVCksJChub3RkaXIgJChTUkMuUEdFTjouYz0kTykpKQotCi1TUkMuRVhFPQkkKFRPUClNb2R1bGVzL3B5dGhvbi5jCi1TUkMuUE1FWEU9CXB5dGhvbnBtLmMKLQotIyBQeXRob24gbW9kdWxlcyB0byBiZSBkeW5hbWljYWxseSBsb2FkZWQgdGhhdDoKLSMgICAxKSBoYXZlIG9ubHkgc2luZ2xlIHNvdXJjZSBmaWxlIGFuZCByZXF1aXJlIG5vIGV4dHJhIGxpYnMKLSMgICAyKSB1c2UgdGhlIHN0YW5kYXJkIG1vZHVsZSBuYW1pbmcgY29udmVudGlvbgotIyAgICAgICh0aGUgJ21vZHVsZScgaW4gPz8/Pz9tb2R1bGUuYyBpcyBhc3N1bWVkKQotIyAtIHRoZXNlIGNhbiBiZSBidWlsdCB3aXRoIGltcGxpY2l0IHJ1bGVzCi1FQVNZRVhUTU9EVUxFUz0JZnBlY3RsIFwKLQkJZnBldGVzdCBcCi0JCXBhcnNlciBcCi0JCXB3ZCBcCi0JCXNlbGVjdCAKLQotIyBQeXRob24gbW9kdWxlcyB0byBiZSBkeW5hbWljYWxseSBsb2FkZWQgdGhhdCBuZWVkIGV4cGxpY2l0IGJ1aWxkIHJ1bGVzCi0jICAoZWl0aGVyIG11bHRpcGxlIHNvdXJjZSBmaWxlcyBhbmQvb3Igbm9uLXN0YW5kYXJkIG1vZHVsZSBuYW1pbmcpCi0jICAoTk9URTogdXNlIHNob3J0ZW5lZCBuYW1lcyBmb3IgbW9kdWxlcyBhZmZlY3RlZCBieSA4IGNoYXIgbmFtZSBsaW1pdCkKLUhBUkRFWFRNT0RVTEVTPQlfc29ja2V0IFwKLQkJX3Rlc3RjYXAgXAotCQl1bmljb2RlZAotCi0jIFB5dGhvbiBtb2R1bGVzIHRoYXQgYXJlIHVzZWQgYXMgbGlicmFyaWVzIGFuZCB0aGVyZWZvcmUgbXVzdCB1c2UKLSMgYSAuRExMIGV4dGVuc2lvbgotTElCRVhUTU9EVUxFUz0KLQotIyBQeXRob24gZXh0ZXJuYWwgKCQoTU9EVUxFLkVYVCkpIG1vZHVsZXMgLSBjYW4gYmUgRUFTWSBvciBIQVJECi1pZmVxICgkKEhBVkVfWkxJQikseWVzKQotICBIQVJERVhUTU9EVUxFUys9CXpsaWIKLWVuZGlmCi1pZmVxICgkKEhBVkVfVUZDKSx5ZXMpCi0gIEhBUkRFWFRNT0RVTEVTKz0JY3J5cHQKLWVuZGlmCi1pZmVxICgkKEhBVkVfVENMVEspLHllcykKLSAgSEFSREVYVE1PRFVMRVMrPQlfdGtpbnRlcgotICBDRkxBR1MrPQkJLURIQVNfRElSRU5UIC1JL1RjbFRrODAvaW5jbHVkZQotICBUS19MSUJTKz0JCS1ML1RjbFRrODAvbGliIC1sdGNsODAgLWx0azgwCi1lbmRpZgotaWZlcSAoJChIQVZFX0dSRUFETElORSkseWVzKQotICBIQVJERVhUTU9EVUxFUys9CXJlYWRsaW5lCi1lbmRpZgotaWZlcSAoJChIQVZFX05DVVJTRVMpLHllcykKLSAgTElCRVhUTU9EVUxFUys9CV9jdXJzZXMKLSAgSEFSREVYVE1PRFVMRVMrPQlfY3Vyc2VzXwotZW5kaWYKLWlmZXEgKCQoSEFWRV9HREJNKSx5ZXMpCi0gIEhBUkRFWFRNT0RVTEVTKz0JX2dkYm0gX2RibQotZW5kaWYKLWlmZXEgKCQoSEFWRV9CWjIpLHllcykKLSAgSEFSREVYVE1PRFVMRVMrPQliejIKLWVuZGlmCi1pZmVxICgkKEhBVkVfT1BFTlNTTCkseWVzKQotICBIQVJERVhUTU9EVUxFUys9CV9zc2wKLWVuZGlmCi0KLSMgRXhwYXQgaXMgbm93IGRpc3RyaWJ1dGVkIHdpdGggdGhlIFB5dGhvbiBzb3VyY2UKLUhBUkRFWFRNT0RVTEVTKz0JcHlleHBhdAotRVhQQVQuSU5DPQktSS4uLy4uL01vZHVsZXMvZXhwYXQKLUVYUEFULkRFRj0JLURIQVZFX0VYUEFUX0ggLURYTUxfTlM9MSAtRFhNTF9EVEQ9MSAtRFhNTF9CWVRFX09SREVSPTEyIFwKLQkJLURYTUxfQ09OVEVOVF9CWVRFUz0xMDI0IC1ESEFWRV9NRU1NT1ZFPTEgLURIQVZFX0JDT1BZPTEKLUVYUEFULlNSQz0JJChhZGRwcmVmaXggLi4vLi4vTW9kdWxlcy9leHBhdC8sIFwKLQkJeG1scGFyc2UuYyBcCi0JCXhtbHJvbGUuYyBcCi0JCXhtbHRvay5jKQotCi0jIGFsbCB0aGUgZXh0ZXJuYWwgbW9kdWxlcwotRVhURVJORExMUz0JJChhZGRzdWZmaXggJChNT0RVTEUuRVhUKSwkKHBhdHN1YnN0ICVtb2R1bGUsJSwkKEVBU1lFWFRNT0RVTEVTKSkpCi1FWFRFUk5ETExTKz0JJChhZGRzdWZmaXggJChNT0RVTEUuRVhUKSwkKHBhdHN1YnN0ICVtb2R1bGUsJSwkKEhBUkRFWFRNT0RVTEVTKSkpCi1FWFRFUk5ETExTKz0JJChhZGRzdWZmaXggJChNT0RMSUIuRVhUKSwkKHBhdHN1YnN0ICVtb2R1bGUsJSwkKExJQkVYVE1PRFVMRVMpKSkKLQotIyBUYXJnZXRzCi1hbGw6ICAkKE9VVCkgJChQWVRIT04uTElCKSAkKFBZVEhPTi5ERUYpICQoUFlUSE9OLklNUExJQikgJChQWVRIT04uRExMKSBcCi0JcHl0aG9uX25vbmNvcmUKLQotcHl0aG9uX25vbmNvcmU6Ci0JbWFrZSBQWV9ERUY9ICQoUFlUSE9OLkVYRSkgJChQWVRIT05QTS5FWEUpICQoUEdFTi5FWEUpICQoRVhURVJORExMUykKLQotY2xlYW46Ci0Jcm0gLWYgJChPVVQpKgotCXJtIC1mICQoUFlUSE9OLkxJQikgJChQWVRIT04uSU1QTElCKSAkKFBZVEhPTi5FWEVJTVApICQoUFlUSE9OLkRMTCkgXAotCSAgJChQWVRIT04uRVhFKSAkKFBZVEhPTlBNLkVYRSkgJChQR0VOLkVYRSkgKiQoTU9EVUxFLkVYVCkgKi5kbGwKLQlmaW5kIC4uLy4uL0xpYiAtbmFtZSAiKi5weVtjb10iIC1leGVjIHJtIHt9ICI7IgotCi1seDoKLQlAZWNobyBQYWNraW5nIGV2ZXJ5dGhpbmcgd2l0aCBseExpdGUuLi4KLQlseGxpdGUgJChQWVRIT04uRExMKSAkKFBZVEhPTi5FWEUpICQoUFlUSE9OUE0uRVhFKSAkKFBHRU4uRVhFKQotCi1kZXBlbmQ6ICQoT1VUQkFTRSkKLQltYWtlZGVwIC1mICQoT1VUQkFTRSlweXRob24uZGVwIC1vICQoQlVDSylPIC1wICQoQlVDSylcKE9VVFwpIFwKLQkgIC1yIC1jICQoSU5DTFVERSkgJChTUkMuTElCKSAkKFNSQy5QR0VOKQotCi0kKE9VVCk6ICQoT1VUQkFTRSkKLQotJChPVVQpICQoT1VUQkFTRSk6Ci0JbWtkaXIuZXhlICRACi0KLSQoUFlUSE9OLkxJQik6ICQoT0JKLkxJQikKLQlybS5leGUgLWYgJEAKLQkkKEFSKSAkKEFSRkxBR1MpICRAICReCi0KLSMgdGhlIFB5dGhvbiBjb3JlIERMTCAuZGVmIGZpbGUgbmVlZHMgdG8gaGF2ZSBhIG51bWJlciBvZiBub24tc3RhdGljCi0jIHN5bWJvbHMgdGhhdCBhcmVuJ3QgcGFydCBvZiB0aGUgUHl0aG9uIEMgQVBJIHJlbW92ZWQgKGNvbW1lbnRlZCBvdXQpCi0jIGZyb20gdGhlIERMTCBleHBvcnQgbGlzdC4KLSQoUFlUSE9OLkRFRik6ICQoUFlUSE9OLkxJQikKLQlAZWNobyBDcmVhdGluZyAuREVGIGZpbGU6ICRACi0JQGVjaG8gTElCUkFSWSAkKFBZVEhPTl9MSUIpIElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UgPiRACi0JQGVjaG8gREVTQ1JJUFRJT04gJChEUVVPVEUpUHl0aG9uICQoUFlUSE9OX1ZFUikgQ29yZSBETEwkKERRVU9URSkgPj4kQAotCUBlY2hvIFBST1RNT0RFID4+JEAKLQlAZWNobyBEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCA+PiRACi0JQGVjaG8gRVhQT1JUUyA+PiRACi0JJChFWFBMSUIpIC11ICQoUFlUSE9OLkxJQikgfFwKLQkgc2VkIC1lICIvXiAgLmluaXQuKi9zL14gLzsgLyIgXAotCQktZSAiL14gIC5wY3JlXy4qL3MvXiAvOyAvIiBcCi0JCS1lICIvXiAgLmFycmF5X21ldGhvZHMvcy9eIC87IC8iIFwKLQkJLWUgIi9eICAuZmFzdF9zYXZlX2xlYXZlL3MvXiAvOyAvIiBcCi0JCS1lICIvXiAgLmRsb3Blbi9zL14gLzsgLyIgXAotCQktZSAiL14gIC5kbHN5bS9zL14gLzsgLyIgXAotCQktZSAiL14gIC5kbGNsb3NlL3MvXiAvOyAvIiBcCi0JCS1lICIvXiAgLmRsZXJyb3Ivcy9eIC87IC8iIFwKLQkJLWUgIi9eICAuX1B5X3JlXy4qL3MvXiAvOyAvIiBcCi0JCS1lICIvXiAgLl9QeV9NRDUuKi9zL14gLzsgLyIgPj4kQAotCi0kKFBZVEhPTi5JTVBMSUIpOiAkKFBZVEhPTi5ERUYpCi0JJChJTVBMSUIpIC1vICRAICReCi0KLSQoUFlUSE9OLkVYRUlNUCk6ICQoUFlUSE9OLkRFRikKLQkkKElNUExJQikgLW8gJEAgJF4KLQotJChQWVRIT04uRExMKTogJChPVVQpZGxsZW50cnkkTyAkKFBZVEhPTi5MSUIpICQoUFlUSE9OLkRFRikKLQotIyBFeHBsaWNpdCBtYWtlIHRhcmdldHMgZm9yIHRoZSAuRVhFcyB0byBiZSBhYmxlIHRvIHVzZSBMRCB0byBsaW5rCi0jIChzbyB0aGF0IGZvcmsoKSB3aWxsIHdvcmsgaWYgcmVxdWlyZWQpCi0KLSQoUFlUSE9OLkVYRSk6ICQoU1JDLkVYRSkgJChQWVRIT04uRVhFSU1QKSAkKE9VVClweXRob24uZGVmCi0JJChDQykgLVptdCAkKExETU9ERS5FWEUpIC1aY3J0ZGxsIC1XYWxsICQoSU5DTFVERSkgLUwuIC1sZ2NjIC1vICRAICQoU1JDLkVYRSkgJChQWVRIT04uRVhFSU1QKSAkKExJQlMpICQoT1VUKXB5dGhvbi5kZWYKLQkkKEVYRU9QVCkgLWFxICQoUFlUSE9OLkVYRSkgLWgkKE5GSUxFUykKLQotJChQWVRIT05QTS5FWEUpOiAkKFNSQy5QTUVYRSkgJChQWVRIT04uRVhFSU1QKSAkKE9VVClweXRob25wbS5kZWYKLQkkKENDKSAtWm10ICQoTERNT0RFLkVYRSkgLVpjcnRkbGwgLVdhbGwgJChJTkNMVURFKSAtTC4gLWxnY2MgLW8gJEAgJChTUkMuUE1FWEUpICQoUFlUSE9OLkVYRUlNUCkgJChMSUJTKSAkKE9VVClweXRob25wbS5kZWYKLQkkKEVYRU9QVCkgLWFxICQoUFlUSE9OUE0uRVhFKSAtaCQoTkZJTEVTKQotCi0kKFBHRU4uRVhFKTogJChPQkouUEdFTikgJChPVVQpcGdlbi5kZWYKLQotIyBFeHBsaWNpdCBidWlsZGluZyBpbnN0cnVjdGlvbnMgZm9yIHRob3NlIGV4dGVybmFsIG1vZHVsZXMgdGhhdCByZXF1aXJlIAotIyBhd2t3YXJkIGhhbmRsaW5nIChkdWUgZS5nLiB0byBub24tc3RkIG5hbWluZywgb3IgbXVsdGlwbGUgc291cmNlIGZpbGVzKQotIyAtIHN0YW5kYXJkIG1vZHVsZXMKLQotX3NvY2tldCQoTU9EVUxFLkVYVCk6ICQoT1VUKXNvY2tldG1vZHVsZSRPICQoT1VUKV9zb2NrZXRfbS5kZWYgJChQWVRIT04uSU1QTElCKQotCSQoTEQpICQoTERGTEFHUy5ETEwpIC1vICRAICQoXl4pICQoTF4pICQoTElCUykKLQotIyBfdGVzdGNhcGkgbmVlZHMgdG8gYmUgcmVuYW1lZCB0byBiZSB1c2VmdWwKLV90ZXN0Y2FwaSQoTU9EVUxFLkVYVCk6ICQoT1VUKV90ZXN0Y2FwaW1vZHVsZSRPICQoT1VUKV90ZXN0Y2FwaV9tLmRlZiAkKFBZVEhPTi5JTVBMSUIpCi0JJChMRCkgJChMREZMQUdTLkRMTCkgLW8gJEAgJCheXikgJChMXikgJChMSUJTKQotCi1fdGVzdGNhcCQoTU9EVUxFLkVYVCk6IF90ZXN0Y2FwaSQoTU9EVUxFLkVYVCkKLQljcCAkXiAkQAotCi0jIHVuaWNvZGVkYXRhIG5lZWRzIHRvIGJlIHJlbmFtZWQgdG8gYmUgdXNlZnVsCi11bmljb2RlZGF0YSQoTU9EVUxFLkVYVCk6ICQoT1VUKXVuaWNvZGVkYXRhJE8gJChPVVQpdW5pY29kZWRhdGFfbS5kZWYgJChQWVRIT04uSU1QTElCKQotCSQoTEQpICQoTERGTEFHUy5ETEwpIC1vICRAICQoXl4pICQoTF4pICQoTElCUykgJChNT0RVTEVfTElCUykKLQotdW5pY29kZWQkKE1PRFVMRS5FWFQpOiB1bmljb2RlZGF0YSQoTU9EVUxFLkVYVCkKLQljcCAkXiAkQAotCi1jcnlwdCQoTU9EVUxFLkVYVCk6ICQoT1VUKWNyeXB0bW9kdWxlJE8gJChPVVQpY3J5cHRfbS5kZWYgJChQWVRIT04uSU1QTElCKQotCSQoTEQpICQoTERGTEFHUy5ETEwpIC1vICRAICQoXl4pICQoTF4pIC1sdWZjICQoTElCUykKLQotIyBUaGUgX2N1cnNlc19wYW5lbCBtb2R1bGUgcmVxdWlyZXMgYSBjb3VwbGUgb2YgbmN1cnNlcyBsaWJyYXJ5IGVudHJ5Ci0jIHBvaW50cywgd2hpY2ggYXJlIGJlc3QgZXhwb3NlZCBhcyBleHBvcnRzIGZyb20gdGhlIF9jdXJzZXMgbW9kdWxlIERMTAotJChPVVQpX2N1cnNlc19tLmRlZjoKLQlAZWNobyBDcmVhdGluZyAuREVGIGZpbGU6ICRACi0JQGVjaG8gTElCUkFSWSAkKG5vdGRpciAkKikgSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSA+JEAKLQlAZWNobyBERVNDUklQVElPTiAkKERRVU9URSkkKERFU0NSSVBUSU9OLiQobm90ZGlyICQqKSQoTU9ETElCLkVYVCkpJChEUVVPVEUpID4+JEAKLQlAZWNobyBEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCA+PiRACi0JQGVjaG8gRVhQT1JUUyA+PiRACi0JQGVjaG8gCWluaXRfY3Vyc2VzID4+JEAKLQlAZWNobyAJd25vdXRyZWZyZXNoID4+JEAKLQlAZWNobyAJX25jX3BhbmVsaG9vayA+PiRACi0JQGVjaG8gCWlzX2xpbmV0b3VjaGVkID4+JEAKLQlAZWNobyAJbXZ3aW4gPj4kQAotCUBlY2hvIAlzdGRzY3IgPj4kQAotCUBlY2hvIAl3dG91Y2hsbiA+PiRACi0KLSQoT1VUKV9jdXJzZXNfcGFuZWxfbS5kZWY6Ci0JQGVjaG8gQ3JlYXRpbmcgLkRFRiBmaWxlOiAkQAotCUBlY2hvIExJQlJBUlkgJChub3RkaXIgJCopIElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UgPiRACi0JQGVjaG8gREVTQ1JJUFRJT04gJChEUVVPVEUpUHl0aG9uIHN0YW5kYXJkIG1vZHVsZSAkKG5vdGRpciAkKikkKERRVU9URSkgPj4kQAotCUBlY2hvIERBVEEgTVVMVElQTEUgTk9OU0hBUkVEID4+JEAKLQlAZWNobyBJTVBPUlRTID4+JEAKLQlAZWNobyAJX2N1cnNlcy53bm91dHJlZnJlc2ggPj4kQAotCUBlY2hvIAlfY3Vyc2VzLl9uY19wYW5lbGhvb2sgPj4kQAotCUBlY2hvIAlfY3Vyc2VzLmlzX2xpbmV0b3VjaGVkID4+JEAKLQlAZWNobyAJX2N1cnNlcy5tdndpbiA+PiRACi0JQGVjaG8gCV9jdXJzZXMuc3Rkc2NyID4+JEAKLQlAZWNobyAJX2N1cnNlcy53dG91Y2hsbiA+PiRACi0JQGVjaG8gRVhQT1JUUyA+PiRACi0JQGVjaG8gCWluaXRfY3Vyc2VzX3BhbmVsID4+JEAKLQotX2N1cnNlcyQoTU9ETElCLkVYVCk6ICQoT1VUKV9jdXJzZXNtb2R1bGUkTyAkKE9VVClfY3Vyc2VzX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpIC1sbmN1cnNlcwotCi0jIGN1cnNlc19wYW5lbCBuZWVkcyB0byBiZSByZW5hbWVkIHRvIGJlIHVzZWZ1bAotX2N1cnNlc19wYW5lbCQoTU9EVUxFLkVYVCk6ICQoT1VUKV9jdXJzZXNfcGFuZWwkTyAkKE9VVClfY3Vyc2VzX3BhbmVsX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpIC1scGFuZWwKLQotX2N1cnNlc18kKE1PRFVMRS5FWFQpOiBfY3Vyc2VzX3BhbmVsJChNT0RVTEUuRVhUKQotCWNwICReICRACi0KLV9kYm0kKE1PRFVMRS5FWFQpOiAkKE9VVClfZGJtbW9kdWxlJE8gJChPVVQpZGJtX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpIC1sZ2RibQotCi1fZ2RibSQoTU9EVUxFLkVYVCk6ICQoT1VUKV9nZGJtbW9kdWxlJE8gJChPVVQpZ2RibV9tLmRlZiAkKFBZVEhPTi5JTVBMSUIpCi0JJChMRCkgJChMREZMQUdTLkRMTCkgLW8gJEAgJCheXikgJChMXikgJChMSUJTKSAtbGdkYm0KLQotCi0jIEV4cGF0IGlzIG5vdyBkaXN0cmlidXRlZCB3aXRoIFB5dGhvbiwgc28gdXNlIHRoZSBpbmNsdWRlZCB2ZXJzaW9uCi0kKE9VVClweWV4cGF0JE86CS4uLy4uL01vZHVsZXMvcHlleHBhdC5jCi0JJChDQykgJChDRkxBR1MpICQoRVhQQVQuSU5DKSAtYyAtbyAkQCAkXgotJChPVVQpeG1scGFyc2UkTzoJLi4vLi4vTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jCi0JJChDQykgJChDRkxBR1MpICQoRVhQQVQuSU5DKSAkKEVYUEFULkRFRikgLWMgLW8gJEAgJF4KLSQoT1VUKXhtbHJvbGUkTzoJLi4vLi4vTW9kdWxlcy9leHBhdC94bWxyb2xlLmMKLQkkKENDKSAkKENGTEFHUykgJChFWFBBVC5JTkMpICQoRVhQQVQuREVGKSAtYyAtbyAkQCAkXgotJChPVVQpeG1sdG9rJE86CS4uLy4uL01vZHVsZXMvZXhwYXQveG1sdG9rLmMKLQkkKENDKSAkKENGTEFHUykgJChFWFBBVC5JTkMpICQoRVhQQVQuREVGKSAtYyAtbyAkQCAkXgotcHlleHBhdCQoTU9EVUxFLkVYVCk6ICQoT1VUKXB5ZXhwYXQkTyAkKE9VVCl4bWxwYXJzZSRPICQoT1VUKXhtbHJvbGUkTyBcCi0JCSQoT1VUKXhtbHRvayRPICQoT1VUKXB5ZXhwYXRfbS5kZWYgJChQWVRIT04uSU1QTElCKQotCSQoTEQpICQoTERGTEFHUy5ETEwpIC1vICRAICQoXl4pICQoTF4pICQoTElCUykKLQotcmVhZGxpbmUkKE1PRFVMRS5FWFQpOiAkKE9VVClyZWFkbGluZSRPICQoT1VUKXJlYWRsaW5lX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpIC1scmVhZGxpbmUgLWxuY3Vyc2VzCi0KLSNfdGtpbnRlciQoTU9EVUxFLkVYVCk6ICQoT1VUKV90a2ludGVyJE8gJChPVVQpdGNsTm90aWZ5JE8gJChPVVQpdGthcHBpbml0JE8KLV90a2ludGVyJChNT0RVTEUuRVhUKTogJChPVVQpX3RraW50ZXIkTyAkKE9VVCl0Y2xOb3RpZnkkTyBcCi0JCSQoT1VUKV90a2ludGVyX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpICQoVEtfTElCUykKLQotemxpYiQoTU9EVUxFLkVYVCk6ICQoT1VUKXpsaWJtb2R1bGUkTyAkKE9VVCl6bGliX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpIC1segotCi1iejIkKE1PRFVMRS5FWFQpOiAkKE9VVCliejJtb2R1bGUkTyAkKE9VVCliejJfbS5kZWYgJChQWVRIT04uSU1QTElCKQotCSQoTEQpICQoTERGTEFHUy5ETEwpIC1vICRAICQoXl4pICQoTF4pICQoTElCUykgLWxiejIKLQotX3NzbCQoTU9EVUxFLkVYVCk6ICQoT1VUKV9zc2wkTyAkKE9VVClfc3NsX20uZGVmICQoUFlUSE9OLklNUExJQikKLQkkKExEKSAkKExERkxBR1MuRExMKSAtbyAkQCAkKF5eKSAkKExeKSAkKExJQlMpIC1sc3NsIC1sY3J5cHRvCi0KLSMgdGhlIHRlc3QgdGFyZ2V0Ci10ZXN0OgotCS1maW5kIC4uLy4uL0xpYiAtbmFtZSAiKi5weVtjb10iIC1leGVjIHJtIHt9ICI7IgotCS0uL3B5dGhvbiAtRSAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAtbCAtdSAibmV0d29yayIKLQkuL3B5dGhvbiAtRSAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAtbCAtdSAibmV0d29yayIKLQotLWluY2x1ZGUgJChPVVRCQVNFKXB5dGhvbi5kZXAKZGlmZiAtLWdpdCBhL1BDL29zMmVteC9SRUFETUUub3MyZW14IGIvUEMvb3MyZW14L1JFQURNRS5vczJlbXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxY2Y2ZGYuLjAwMDAwMDAKLS0tIGEvUEMvb3MyZW14L1JFQURNRS5vczJlbXgKKysrIC9kZXYvbnVsbApAQCAtMSw2NjMgKzAsMCBAQAotVGhpcyBpcyBhIHBvcnQgb2YgUHl0aG9uIDIuNiB0byBPUy8yIHVzaW5nIHRoZSBFTVggZGV2ZWxvcG1lbnQgdG9vbHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotV2hhdCdzIG5ldyBzaW5jZSB0aGUgcHJldmlvdXMgcmVsZWFzZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Bbm90aGVyIGRheSwgYW5vdGhlciB2ZXJzaW9uLi4uCi0KLQotTGljZW5zZXMgYW5kIGluZm8gYWJvdXQgUHl0aG9uIGFuZCBFTVgKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVBsZWFzZSByZWFkIHRoZSBmaWxlIFJFQURNRS5QeXRob24tMi42IGluY2x1ZGVkIGluIHRoaXMgcGFja2FnZSBmb3IgCi1pbmZvcm1hdGlvbiBhYm91dCBQeXRob24gMi42LiAgVGhpcyBmaWxlIGlzIHRoZSBSRUFETUUgZmlsZSBmcm9tIHRoZSAKLVB5dGhvbiAyLjYgc291cmNlIGRpc3RyaWJ1dGlvbiBhdmFpbGFibGUgdmlhIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8gCi1hbmQgaXRzIG1pcnJvcnMuICBUaGUgZmlsZSBMSUNFTkNFLlB5dGhvbi0yLjYgaXMgdGhlIHRleHQgb2YgdGhlIExpY2VuY2UgCi1mcm9tIHRoZSBQeXRob24gMi42IHNvdXJjZSBkaXN0cmlidXRpb24uCi0KLU5vdGUgdGhhdCB0aGUgRU1YIHBhY2thZ2UgdGhhdCB0aGlzIHBhY2thZ2UgZGVwZW5kcyBvbiBpcyByZWxlYXNlZCB1bmRlciAKLXRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5jZS4gIFBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiAKLWFjY29tcGFueWluZyB0aGUgRU1YIFJ1bnRpbWUgbGlicmFyaWVzIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSAKLWltcGxpY2F0aW9ucyBvZiB0aGlzLiAgQSBjb3B5IG9mIHZlcnNpb24gMiBvZiB0aGUgR1BMIGlzIGluY2x1ZGVkIGFzIHRoZSAKLWZpbGUgQ09QWUlORy5ncGwyLgotCi1SZWFkbGluZSBhbmQgR0RCTSBhcmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2VuY2UuICBJIHRoaW5rIAotRWJlcmhhcmQgTWF0dGVzJyBwb3J0aW5nIGNoYW5nZXMgdG8gQlNEIERCIHYxLjg1IGFyZSBhbHNvIEdQTCdlZCAoQlNEIERCIAotaXRzZWxmIGlzIEJTRCBMaWNlbmNlZCkuICBuY3Vyc2VzIGFuZCBleHBhdCBhcHBlYXIgdG8gYmUgY292ZXJlZCBieSBNSVQgCi1zdHlsZSBsaWNlbmNlcyAtIHBsZWFzZSByZWZlciB0byB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbnMgZm9yIG1vcmUgZGV0YWlsLiAgCi16bGliIGlzIGRpc3RyaWJ1dGFibGUgdW5kZXIgYSB2ZXJ5IGZyZWUgbGljZW5zZS4gIEdOVSBVRkMgaXMgdW5kZXIgdGhlIAotR05VIExHUEwgKHNlZSBmaWxlIENPUFlJTkcubGliKS4KLQotTXkgcGF0Y2hlcyB0byB0aGUgUHl0aG9uLTIueCBzb3VyY2UgZGlzdHJpYnV0aW9ucywgYW5kIGFueSBvdGhlciBwYWNrYWdlcyAKLXVzZWQgaW4gdGhpcyBwb3J0LCBhcmUgcGxhY2VkIGluIHRoZSBwdWJsaWMgZG9tYWluLgotCi1UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KLUluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvciBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSAKLXVzZSBvZiB0aGUgc29mdHdhcmUuCi0KLUkgZG8gaG9wZSBob3dldmVyIHRoYXQgaXQgcHJvdmVzIHVzZWZ1bCB0byBzb21lb25lLgotCi0KLU90aGVyIHBvcnRzCi0tLS0tLS0tLS0tLQotCi1UaGVyZSBoYXZlIGJlZW4gcG9ydHMgb2YgcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uIHRvIE9TLzIuCi0KLVRoZSBiZXN0IGtub3duIHdvdWxkIGJlIHRoYXQgYnkgSmVmZiBSdXNoLCBtb3N0IHJlY2VudGx5IG9mIHZlcnNpb24gCi0xLjUuMi4gIEplZmYgdXNlZCBJQk0ncyBWaXN1YWwgQWdlIEMrKyAodjMpIGZvciBoaXMgcG9ydHMsIGFuZCBoaXMgCi1wYXRjaGVzIGhhdmUgYmVlbiBpbmNsdWRlZCBpbiB0aGUgUHl0aG9uIDIuNiBzb3VyY2UgZGlzdHJpYnV0aW9uLgotCi1BbmR5IFphYm9sb3RueSBpbXBsZW1lbnRlZCBhIHBvcnQgb2YgUHl0aG9uIHYxLjUuMiB1c2luZyB0aGUgRU1YIAotZGV2ZWxvcG1lbnQgdG9vbHMuICBIaXMgcGF0Y2hlcyBhZ2FpbnN0IHRoZSBQeXRob24gdjEuNS4yIHNvdXJjZSAKLWRpc3RyaWJ1dGlvbiBoYXZlIGJlY29tZSB0aGUgY29yZSBvZiB0aGlzIHBvcnQsIGFuZCB3aXRob3V0IGhpcyBlZmZvcnRzIAotdGhpcyBwb3J0IHdvdWxkbid0IGV4aXN0LiAgQW5keSdzIHBvcnQgYWxzbyBhcHBlYXJzIHRvIGhhdmUgYmVlbiAKLWNvbXBpbGVkIHdpdGggaGlzIHBvcnQgb2YgZ2NjIDIuOTUuMiB0byBFTVgsIHdoaWNoIEkgaGF2ZSBidXQgaGF2ZSAKLWNob3NlbiBub3QgdG8gdXNlIGZvciB0aGUgYmluYXJ5IGRpc3RyaWJ1dGlvbiBvZiB0aGlzIHBvcnQgKHNlZSBpdGVtIDE2IAotb2YgdGhlICJZT1UgSEFWRSBCRUVOIFdBUk5FRCIgc2VjdGlvbiBiZWxvdykuCi0KLUl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgdGhlc2UgZWFybGllciBwb3J0cyBzdGlsbCB1c2FibGUgYWZ0ZXIgaW5zdGFsbGluZyAKLXRoaXMgcG9ydCAtIHNlZSB0aGUgUkVBRE1FLm9zMmVteC5tdWx0aXBsZV92ZXJzaW9ucyBmaWxlLCBjb250cmlidXRlZCBieQotRHIgRGF2aWQgTWVydHosIGZvciBhIHN1Z2dlc3RlZCBhcHByb2FjaCB0byBhY2hpZXZpbmcgdGhpcy4KLQotCi1Tb2Z0d2FyZSByZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHBhY2thZ2UgcmVxdWlyZXMgdGhlIEVNWCBSdW50aW1lIHBhY2thZ2UsIGF2YWlsYWJsZSBmcm9tIHRoZSAKLUhvYmJlcyAoaHR0cDovL2hvYmJlcy5ubXN1LmVkdS8pIGFuZCBMRU8gKGh0dHA6Ly9hcmNoaXYubGVvLm9yZy8pIAotYXJjaGl2ZXMgb2YgT1MvMiBzb2Z0d2FyZS4gIEkgaGF2ZSB1c2VkIEVNWCB2ZXJzaW9uIDAuOWQgZml4MDQgaW4gCi1kZXZlbG9waW5nIHRoaXMgcG9ydC4KLQotTXkgZGV2ZWxvcG1lbnQgc3lzdGVtIGlzIHJ1bm5pbmcgT1MvMiB2NCB3aXRoIGZpeHBhY2sgMTIuCi0KLTNyZCBwYXJ0eSBzb2Z0d2FyZSB3aGljaCBoYXMgYmVlbiBsaW5rZWQgaW50byBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlczoKLS0gbmN1cnNlcyAgICAgIChzZWUgaHR0cDovL2RpY2tleS5oaXMuY29tLyBmb3IgbW9yZSBpbmZvLCB2NS4yKQotLSBHTlUgUmVhZGxpbmUgKEthaSBVd2UgUm9tbWVsJ3MgcG9ydCBhdmFpbGFibGUgZnJvbSBIb2JiZXMgb3IgTEVPLCB2Mi4xKQotLSBHTlUgR0RCTSAgICAgKEthaSBVd2UgUm9tbWVsJ3MgcG9ydCBhdmFpbGFibGUgZnJvbSBIb2JiZXMgb3IgTEVPLCB2MS43LjMpCi0tIHpsaWIgICAgICAgICAoZGVyaXZlZCBmcm9tIEh1bmctQ2hpIENodSdzIHBvcnQgb2YgdjEuMS4zLCB2MS4xLjQpCi0tIGV4cGF0ICAgICAgICAoZGlzdHJpYnV0ZWQgd2l0aCBQeXRob24sIHYxLjk1LjYpCi0tIEdOVSBVRkMgICAgICAoS2FpIFV3ZSBSb21tZWwncyBwb3J0IGF2YWlsYWJsZSBmcm9tIExFTywgdjIuMC40KQotCi0KLUFib3V0IHRoaXMgcG9ydAotLS0tLS0tLS0tLS0tLS0tCi0KLUkgaGF2ZSBhdHRlbXB0ZWQgdG8gbWFrZSB0aGlzIHBvcnQgYXMgY29tcGxldGUgYW5kIGZ1bmN0aW9uYWwgYXMgSSBjYW4sIAotbm90d2l0aHN0YW5kaW5nIHRoZSBpc3N1ZXMgaW4gdGhlICJZT1UgSEFWRSBCRUVOIFdBUk5FRCIgc2VjdGlvbiBiZWxvdy4KLQotQ29yZSBjb21wb25lbnRzOgotCi1QeXRob24uZXhlIGlzIGxpbmtlZCBhcyBhbiBhLm91dCBleGVjdXRhYmxlLCBpZSB1c2luZyBFTVggbWV0aG9kIEUxIAotdG8gY29tcGlsZSAmIGxpbmsgdGhlIGV4ZWN1dGFibGUuICBUaGlzIGlzIHNvIHRoYXQgZm9yaygpIHdvcmtzIChzZWUgCi0iWU9VIEhBVkUgQkVFTiBXQVJORUQiIGl0ZW0gMSkuCi0KLVB5dGhvbjI2LmRsbCBpcyBjcmVhdGVkIGFzIGEgbm9ybWFsIE9NRiBETEwsIHdpdGggYW4gT01GIGltcG9ydCAKLWxpYnJhcnkgYW5kIG1vZHVsZSBkZWZpbml0aW9uIGZpbGUuICBUaGVyZSBpcyBhbHNvIGFuIGEub3V0ICguYSkgaW1wb3J0IAotbGlicmFyeSB0byBzdXBwb3J0IGxpbmtpbmcgdGhlIERMTCB0byBhLm91dCBleGVjdXRhYmxlcy4gIFRoZSBETEwgCi1yZXF1aXJlcyB0aGUgRU1YIHJ1bnRpbWUgRExMcy4KLQotVGhpcyBwb3J0IGhhcyBiZWVuIGJ1aWx0IHdpdGggY29tcGxldGUgc3VwcG9ydCBmb3IgbXVsdGl0aHJlYWRpbmcuCi0KLU1vZHVsZXM6Ci0KLVdpdGggdGhlIGV4Y2VwdGlvbiBvZiBtb2R1bGVzIHRoYXQgaGF2ZSBhIHNpZ25pZmljYW50IGNvZGUgc2l6ZSwgb3IgYXJlIAotbm90IHJlY29tbWVuZGVkIG9yIGRlc2lyZWQgZm9yIG5vcm1hbCB1c2UsIHRoZSBzdGFuZGFyZCBtb2R1bGVzIGFyZSBub3cgCi1idWlsdCBpbnRvIHRoZSBjb3JlIERMTCByYXRoZXIgdGhhbiBjb25maWd1cmVkIGFzIGR5bmFtaWNhbGx5IGxvYWRhYmxlIAotbW9kdWxlcy4gIFRoaXMgaXMgZm9yIGJvdGggcmVhc29ucyBvZiBwZXJmb3JtYW5jZSAoc3RhcnR1cCB0aW1lKSBhbmQgCi1tZW1vcnkgdXNlIChsb3RzIG9mIHNtYWxsIERMTHMgZnJhZ21lbnQgdGhlIGFkZHJlc3Mgc3BhY2UpLgotCi1JIGhhdmVuJ3QgeWV0IGNoYW5nZWQgdGhlIGJ1aWxkaW5nIG9mIFB5dGhvbidzIGR5bmFtaWNhbGx5IGxvYWRhYmxlIAotbW9kdWxlcyBvdmVyIHRvIHVzaW5nIHRoZSBEaXN0VXRpbHMuCi0KLVNlZSAiWU9VIEhBVkUgQkVFTiBXQVJORUQiIGl0ZW0gMyBmb3Igbm90ZXMgYWJvdXQgdGhlIGZjbnRsIG1vZHVsZSwgYW5kIAotIllPVSBIQVZFIEJFRU4gV0FSTkVEIiBpdGVtIDEwIGZvciBub3RlcyBhYm91dCB0aGUgcHdkIGFuZCBncnAgbW9kdWxlcy4KLQotVGhpcyBwb3J0IHN1cHBvcnRzIGNhc2Ugc2Vuc2l0aXZlIG1vZHVsZSBpbXBvcnQgc2VtYW50aWNzLCBtYXRjaGluZyAKLXRoZSBXaW5kb3dzIHJlbGVhc2UuICBUaGlzIGNhbiBiZSBkZWFjdGl2YXRlZCBieSBzZXR0aW5nIHRoZSBQWVRIT05DQVNFT0sgCi1lbnZpcm9ubWVudCB2YXJpYWJsZSAodGhlIHZhbHVlIGRvZXNuJ3QgbWF0dGVyKSAtIHNlZSAiWU9VIEhBVkUgQkVFTiBXQVJORUQiIAotaXRlbSAxMi4KLQotT3B0aW9uYWwgbW9kdWxlczoKLQotV2hlcmUgSSd2ZSBiZWVuIGFibGUgdG8gbG9jYXRlIHRoZSByZXF1aXJlZCAzcmQgcGFydHkgcGFja2FnZXMgYWxyZWFkeSAKLXBvcnRlZCB0byBPUy8yLCBJJ3ZlIGJ1aWx0IGFuZCBpbmNsdWRlZCB0aGVtLgotCi1UaGVzZSBpbmNsdWRlIG5jdXJzZXMgKF9jdXJzZXMsIF9jdXJzZXNfcGFuZWwpLAotR05VIEdEQk0gKGdkYm0sIGRibSksIHpsaWIgKHpsaWIpLCBHTlUgUmVhZGxpbmUgKHJlYWRsaW5lKSwgYW5kIEdOVSBVRkMgCi0oY3J5cHQpLgotCi1FeHBhdCBpcyBub3cgaW5jbHVkZWQgaW4gdGhlIFB5dGhvbiByZWxlYXNlIHNvdXJjZWJhbGwsIGFuZCB0aGUgcHlleHBhdCAKLW1vZHVsZSBpcyBhbHdheXMgYnVpbHQuCi0KLUkgaGF2ZSBidWlsdCB0aGVzZSBtb2R1bGVzIHN0YXRpY2FsbHkgbGlua2VkIGFnYWluc3QgdGhlIDNyZCBwYXJ0eSAKLWxpYnJhcmllcy4gIFVuZm9ydHVuYXRlbHkgbXkgYXR0ZW1wdHMgdG8gdXNlIHRoZSBkbGwgdmVyc2lvbiBvZiBHTlUgCi1yZWFkbGluZSBoYXZlIGJlZW4gYSBkaXNtYWwgZmFpbHVyZSwgaW4gdGhhdCB3aGVuIHRoZSBkeW5hbWljYWxseSAKLWxpbmtlZCByZWFkbGluZSBtb2R1bGUgaXMgYWN0aXZlIG90aGVyIG1vZHVsZXMgaW1tZWRpYXRlbHkgcHJvdm9rZSBhIAotY29yZSBkdW1wIHdoZW4gaW1wb3J0ZWQuCi0KLU9ubHkgdGhlIEJTRCBEQiBwYWNrYWdlIChwYXJ0IG9mIHRoZSBCU0QgcGFja2FnZSBkaXN0cmlidXRlZCB3aXRoIEVNWCkgCi1uZWVkcyBzb3VyY2UgbW9kaWZpY2F0aW9ucyB0byBiZSB1c2VkIGZvciB0aGlzIHBvcnQsIHBlcnRhaW5pbmcgdG8gdXNlIAotb2YgZXJybm8gd2l0aCBtdWx0aXRocmVhZGluZy4KLQotVGhlIG90aGVyIHBhY2thZ2VzLCBleGNlcHQgZm9yIG5jdXJzZXMgYW5kIHpsaWIsIG5lZWRlZCBNYWtlZmlsZSBjaGFuZ2VzIAotZm9yIG11bHRpdGhyZWFkaW5nIHN1cHBvcnQgYnV0IG5vIHNvdXJjZSBjaGFuZ2VzLgotCi1UaGUgX2N1cnNlc19wYW5lbCBtb2R1bGUgaXMgYSBwb3RlbnRpYWwgcHJvYmxlbSAtIHNlZSAiWU9VIEhBVkUgQkVFTiAKLVdBUk5FRCIgaXRlbSAxMy4KLQotVXBzdHJlYW0gc291cmNlIHBhdGNoZXM6Ci0KLU5vIHVwZGF0ZXMgdG8gdGhlIFB5dGhvbiAyLjYgcmVsZWFzZSBoYXZlIGJlY29tZSBhdmFpbGFibGUuCi0KLUxpYnJhcnkgYW5kIG90aGVyIGRpc3RyaWJ1dGVkIFB5dGhvbiBjb2RlOgotCi1UaGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkgbGl2ZXMgaW4gdGhlIExpYiBkaXJlY3RvcnkuICBBbGwgdGhlIHN0YW5kYXJkIAotbGlicmFyeSBjb2RlIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAyLjYgc291cmNlIGRpc3RyaWJ1dGlvbiBpcyBpbmNsdWRlZCAKLWluIHRoZSBiaW5hcnkgYXJjaGl2ZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBkb3MtOHgzIGFuZCB0a2ludGVyIAotc3ViZGlyZWN0b3JpZXMgd2hpY2ggaGF2ZSBiZWVuIG9taXR0ZWQgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBiaW5hcnkgCi1hcmNoaXZlIC0gdGhlIGRvcy04eDMgY29tcG9uZW50cyBhcmUgdW5uZWNlc3NhcnkgZHVwbGljYXRlcyBhbmQgVGtpbnRlciAKLWlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwb3J0ICh5ZXQpLiAgQWxsIHRoZSBwbGF0LSogc3ViZGlyZWN0b3JpZXMgaW4gdGhlIAotc291cmNlIGRpc3RyaWJ1dGlvbiBoYXZlIGFsc28gYmVlbiBvbWl0dGVkLCBleGNlcHQgZm9yIHRoZSBwbGF0LW9zMmVteCAKLXN1YmRpcmVjdG9yeS4KLQotVGhlIFRvb2xzIGFuZCBEZW1vIGRpcmVjdG9yaWVzIGNvbnRhaW4gYSBjb2xsZWN0aW9uIG9mIFB5dGhvbiBzY3JpcHRzLiAgCi1UbyByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGJpbmFyeSBhcmNoaXZlLCB0aGUgRGVtby9zZ2ksIERlbW8vVGl4LCAKLURlbW8vdGtpbnRlciwgVG9vbHMvYXVkaW9weSBhbmQgVG9vbHMvSURMRSBzdWJkaXJlY3RvcmllcyBoYXZlIGJlZW4gCi1vbWl0dGVkIGFzIG5vdCBiZWluZyBzdXBwb3J0ZWQgYnkgdGhpcyBwb3J0LiAgVGhlIE1pc2MgZGlyZWN0b3J5IGhhcyAKLWFsc28gYmVlbiBvbWl0dGVkLgotCi1BbGwgc3ViZGlyZWN0b3JpZXMgb21pdHRlZCBmcm9tIHRoZSBiaW5hcnkgYXJjaGl2ZSBjYW4gYmUgcmVjb25zdGl0dXRlZCAKLWZyb20gdGhlIFB5dGhvbiAyLjYgc291cmNlIGRpc3RyaWJ1dGlvbiwgaWYgZGVzaXJlZC4KLQotU3VwcG9ydCBmb3IgYnVpbGRpbmcgUHl0aG9uIGV4dGVuc2lvbnM6Ci0KLVRoZSBDb25maWcgc3ViZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBmaWxlcyBkZXNjcmliaW5nIHRoZSBjb25maWd1cmF0aW9uIAotb2YgdGhlIGludGVycHJldGVyIGFuZCB0aGUgTWFrZWZpbGUsIGltcG9ydCBsaWJyYXJpZXMgZm9yIHRoZSBQeXRob24gRExMLCAKLWFuZCB0aGUgbW9kdWxlIGRlZmluaXRpb24gZmlsZSB1c2VkIHRvIGNyZWF0ZSB0aGUgUHl0aG9uIERMTC4gIFRoZSAKLUluY2x1ZGUgc3ViZGlyZWN0b3J5IGNvbnRhaW5zIGFsbCB0aGUgc3RhbmRhcmQgUHl0aG9uIGhlYWRlciBmaWxlcyAKLW5lZWRlZCBmb3IgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KLQotQXMgSSBkb24ndCBoYXZlIHRoZSBWaXN1YWwgQWdlIEMrKyBjb21waWxlciwgSSd2ZSBtYWRlIG5vIGF0dGVtcHQgdG8gCi1oYXZlIHRoaXMgcG9ydCBzdXBwb3J0IGV4dGVuc2lvbnMgYnVpbHQgd2l0aCB0aGF0IGNvbXBpbGVyLgotCi0KLVBhY2thZ2luZwotLS0tLS0tLS0tCi0KLVRoaXMgcG9ydCBpcyBwYWNrYWdlZCBhcyBmb2xsb3dzOgotLSBweXRob24tMi42LW9zMmVteC1iaW4tMDM/Pz8/LnppcCAgKGJpbmFyaWVzLCBsaWJyYXJ5IG1vZHVsZXMpCi0tIHB5dGhvbi0yLjYtb3MyZW14LXNyYy0wMz8/Pz8gICAgICAocGF0Y2hlcyttYWtlZmlsZXMgZm9yIG5vbi1QeXRob24gY29kZSkKLQotQXMgYWxsIHRoZSBQeXRob24gc3BlY2lmaWMgcGF0Y2hlcyBmb3IgdGhlIHBvcnQgYXJlIG5vdyBwYXJ0IG9mIHRoZSAKLVB5dGhvbiByZWxlYXNlIHRhcmJhbGwsIG9ubHkgdGhlIHBhdGNoZXMgYW5kIG1ha2VmaWxlcyBpbnZvbHZlZCBpbiAKLWJ1aWxkaW5nIGV4dGVybmFsIGxpYnJhcmllcyBmb3Igb3B0aW9uYWwgZXh0ZW5zaW9ucyBhcmUgaW5jbHVkZWQgaW4gCi10aGUgc291cmNlIGFyY2hpdmUuCi0KLURvY3VtZW50YXRpb24gZm9yIHRoZSBQeXRob24gbGFuZ3VhZ2UsIGFzIHdlbGwgYXMgdGhlIFB5dGhvbiAyLjYgCi1zb3VyY2UgZGlzdGlidXRpb24sIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSBQeXRob24gd2Vic2l0ZSAKLShodHRwOi8vd3d3LnB5dGhvbi5vcmcvKSBvciB0aGUgUHl0aG9uIHByb2plY3QgcGFnZXMgYXQgU291cmNlZm9yZ2UgCi0oaHR0cDovL3NmLm5ldC9wcm9qZWN0cy9weXRob24vKS4KLQotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLQotCi1PYnRhaW4gYW5kIGluc3RhbGwsIGFzIHBlciB0aGUgaW5jbHVkZWQgaW5zdHJ1Y3Rpb25zLCB0aGUgRU1YIHJ1bnRpbWUgCi1wYWNrYWdlLgotCi1VbnBhY2sgdGhpcyBhcmNoaXZlLCBwcmVzZXJ2aW5nIHRoZSBzdWJkaXJlY3RvcmllcywgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IAotb2YgdGhlIGRyaXZlIHdoZXJlIHlvdSB3YW50IFB5dGhvbiB0byBsaXZlLgotCi1BZGQgdGhlIFB5dGhvbiBkaXJlY3RvcnkgKGVnIEM6XFB5dGhvbjI2KSB0byB0aGUgUEFUSCBhbmQgTElCUEFUSCAKLXZhcmlhYmxlcyBpbiBDT05GSUcuU1lTLgotCi1Zb3Ugc2hvdWxkIHRoZW4gc2V0IHRoZSBQWVRIT05IT01FIGFuZCBQWVRIT05QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlcyAKLWluIENPTkZJRy5TWVMuCi0KLVBZVEhPTkhPTUUgc2hvdWxkIGJlIHNldCB0byBQeXRob24ncyB0b3AgbGV2ZWwgZGlyZWN0b3J5LiAgUFlUSE9OUEFUSCAKLXNob3VsZCBiZSBzZXQgdG8gdGhlIHNlbWljb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBwcmluY2lwYWwgUHl0aG9uIGxpYnJhcnkgCi1kaXJlY3Rvcmllcy4KLUkgdXNlOgotICBTRVQgUFlUSE9OSE9NRT1GOi9QeXRob24yNgotICBTRVQgUFlUSE9OUEFUSD1GOi9QeXRob24yNi9MaWI7RjovUHl0aG9uMjYvTGliL3BsYXQtb3MyZW14OwotICAgICAgICAgICAgICAgICBGOi9QeXRob24yNi9MaWIvbGliLWR5bmxvYWQ7RjovUHl0aG9uMjYvTGliL3NpdGUtcGFja2FnZXMKLQotTk9URSE6ICB0aGUgUFlUSE9OUEFUSCBzZXR0aW5nIGFib3ZlIGlzIGxpbmV3cmFwcGVkIGZvciB0aGlzIGRvY3VtZW50IC0gaXQgCi1zaG91bGQgYWxsIGJlIG9uIG9uZSBsaW5lIGluIENPTkZJRy5TWVMhCi0KLUlmIHlvdSB3aXNoIHRvIHVzZSB0aGUgY3Vyc2VzIG1vZHVsZSwgeW91IHNob3VsZCBzZXQgdGhlIFRFUk0gYW5kIFRFUk1JTkZPIAotZW52aXJvbm1lbnQgdmFyaWFibGVzIGFwcHJvcHJpYXRlbHkuCi0KLUlmIHlvdSBkb24ndCBhbHJlYWR5IGhhdmUgbmN1cnNlcyBpbnN0YWxsZWQsIEkgaGF2ZSBpbmNsdWRlZCBhIGNvcHkgb2YgdGhlIAotRU1YIHN1YnNldCBvZiB0aGUgVGVybWluZm8gZGF0YWJhc2UgaW5jbHVkZWQgd2l0aCB0aGUgbmN1cnNlcy01LjIgc291cmNlIAotZGlzdHJpYnV0aW9uLiAgVGhpcyBjYW4gYmUgdXNlZCBieSBzZXR0aW5nIHRoZSBURVJNSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZSAKLXRvIHRoZSBwYXRoIG9mIHRoZSBUZXJtaW5mbyBzdWJkaXJlY3RvcnkgYmVsb3cgdGhlIFB5dGhvbiBob21lIGRpcmVjdG9yeS4KLU9uIG15IHN5c3RlbSB0aGlzIGxvb2tzIGxpa2U6Ci0gIFNFVCBURVJNSU5GTz1GOi9QeXRob24yNi9UZXJtaW5mbwotCi1Gb3IgdGhlIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUsIEkgd291bGQgdHJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nOgotICBTRVQgVEVSTT1hbnNpCi0gIFNFVCBURVJNPW9zMgotICBTRVQgVEVSTT13aW5kb3cKLQotWW91IHdpbGwgaGF2ZSB0byByZWJvb3QgeW91ciBzeXN0ZW0gZm9yIHRoZXNlIGNoYW5nZXMgdG8gQ09ORklHLlNZUyB0byB0YWtlIAotZWZmZWN0LgotCi1JZiB5b3Ugd2lzaCB0byBjb21waWxlIGFsbCB0aGUgaW5jbHVkZWQgUHl0aG9uIGxpYnJhcnkgbW9kdWxlcyB0byBieXRlY29kZSwgCi15b3UgY2FuIGNoYW5nZSBpbnRvIHRoZSBQeXRob24gaG9tZSBkaXJlY3RvcnkgYW5kIHJ1biB0aGUgQ09NUElMRUFMTC5DTUQgCi1iYXRjaCBmaWxlLgotCi1Zb3UgY2FuIGV4ZWN1dGUgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIDIuNiBzb3VyY2UgCi1kaXN0cmlidXRpb24gYnkgY2hhbmdpbmcgdG8gdGhlIFB5dGhvbiAyLjYgaG9tZSBkaXJlY3RvcnkgYW5kIGV4ZWN1dGluZyB0aGUgCi1SRUdSVEVTVC5DTUQgYmF0Y2ggZmlsZS4gIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIGtub3duIHRvIGZhaWwgYXQgdGhpcyAKLXRpbWU6Ci0tIHRlc3RfbWhsaWIgKEkgZG9uJ3Qga25vdyBvZiBhbnkgcG9ydCBvZiBNSCB0byBPUy8yKTsKLS0gdGVzdF9zdHJwdGltZSAoc2VlICJZT1UgSEFWRSBCRUVOIFdBUk5FRCIgaXRlbSAyMik7Ci0tIHRlc3RfdGltZSAoc2VlICJZT1UgSEFWRSBCRUVOIFdBUk5FRCIgaXRlbSAyMik7Ci0tIHRlc3RfcG9zaXhwYXRoIChzZWUgIllPVSBIQVZFIEJFRU4gV0FSTkVEIiBpdGVtIDIzKS4KLQotTm90ZSB0aGF0IHNvbWUgb2YgdGhlIG5ldHdvcmsgcmVsYXRlZCB0ZXN0cyBleHBlY3QgdGhlIGxvb3BiYWNrIGludGVyZmFjZQotKGludGVyZmFjZSAibG8iLCB3aXRoIElQIGFkZHJlc3MgMTI3LjAuMC4xKSB0byBiZSBlbmFibGVkLCB3aGljaCBmcm9tIG15Ci1leHBlcmllbmNlIGlzIG5vdCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLiAgQWRkaXRpb25hbGx5LCB0ZXN0X3BvcGVuMgotZXhwZWN0cyB0aGUgImNhdCIgdXRpbGl0eSAoc3VjaCBhcyBmb3VuZCBpbiBwb3J0cyBvZiB0aGUgR05VIHRvb2xzKSB0bwotYmUgaW5zdGFsbGVkLgotCi0KLUJ1aWxkaW5nIGZyb20gc291cmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XaXRoIHRoZSBFTVggcG9ydCBub3cgY2hlY2tlZCBpbnRvIFB5dGhvbidzIENWUyByZXBvc2l0b3J5LCB0aGUgYnVpbGQgCi1pbmZyYXN0cnVjdHVyZSBpcyBwYXJ0IG9mIHRoZSBQeXRob24gcmVsZWFzZSBzb3VyY2ViYWxsLgotCi1QcmVyZXF1aXNpdGVzCi0KLUZpcnN0IGFuZCBmb3JlbW9zdCwgeW91IG5lZWQgYW4gb3BlcmF0aW9uYWwgRU1YIGRldmVsb3BtZW50IGluc3RhbGxhdGlvbiAtIAotRU1YIHYwLjlkIHdpdGggZml4MDQgKHRoZSBsYXRlc3QgYXQgdGltZSBvZiB3cml0aW5nKSAmIHRoZSBnY2MgMi44LjEgCi1jb21waWxlciByZWxlYXNlZCBieSBFYmVyaGFyZCBNYXR0ZXMgaXMgdGhlIHJlY29tbWVuZGVkIHNldHVwLgotCi1JZiB5b3UgaGF2ZSBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIGdjYyBpbnN0YWxsZWQsIHNlZSAiWU9VIEhBVkUgQkVFTiAKLVdBUk5FRCIgaXRlbSAxNi4KLQotT3RoZXIgaXRlbXMgb2Ygc29mdHdhcmUgcmVxdWlyZWQ6LQotCi0tIEdOVSBtYWtlIChJJ20gdXNpbmcgdjMuNzYuMSkKLS0gcm0sIGNwLCBta2RpciBmcm9tIHRoZSBHTlUgZmlsZSB1dGlsaXRpZXMgcGFja2FnZQotLSBHTlUgZmluZAotLSBHTlUgc2VkCi0KLVByb2NlZHVyZQotCi0wLiBhbGwgY2hhbmdlcyBtZW50aW9uZWQgYXBwbHkgdG8gZmlsZXMgaW4gdGhlIFBDL29zMmVteCBzdWJkaXJlY3RvcnkgCi0gICBvZiB0aGUgUHl0aG9uIHJlbGVhc2Ugc291cmNlIHRyZWUuICBtYWtlIGlzIGFsc28gZXhlY3V0ZWQgZnJvbSB0aGlzIAotICAgZGlyZWN0b3J5LCBzbyBjaGFuZ2UgaW50byB0aGlzIGRpcmVjdG9yeSBiZWZvcmUgcHJvY2VlZGluZy4KLQotMS4gZGVjaWRlIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0gICBJZiB5b3Ugd2lzaCB0byBkbyB0aGlzLCBzZXQgdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBMSUJfRElSIAotICAgdG8gdGhlIGRpcmVjdG9yeSB5b3Ugd2lzaCB0byB1c2UgZm9yIFBZVEhPTkhPTUUgCi0gICAoZWcgL3Vzci9sb2NhbC9saWIvcHl0aG9uMi42KS4KLQotICAgSWYgeW91IHdhbnQgUHl0aG9uIHRvIGZpbmQgaXRzIGxpYnJhcnkgd2l0aG91dCB0aGUgUFlUSE9OSE9NRSAKLSAgIGVudmlyb25tZW50IHZhcmlhYmxlIHNldCwgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgCi0gICBGSVhFRF9QWUhPTUUgdG8gInllcyIgKHVuY29tbWVudCB0aGUgYXBwcm9wcmlhdGUgbGluZSkuCi0KLTIuIElmIHlvdSB3aXNoIHRoZSBQeXRob24gZXhlY3V0YWJsZXMgKHB5dGhvbi5leGUsIHB5dGhvbnBtLmV4ZSAmIHBnZW4uZXhlKSAKLSAgIHRvIGJlIGluc3RhbGxlZCBpbiBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBQWVRIT05IT01FIGRpcmVjdG9yeSwgc2V0IAotICAgdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBFWEVfRElSIHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkuCi0KLTMuIElmIHlvdSB3aXNoIHRoZSBQeXRob24gY29yZSBETEwgKHB5dGhvbjMzLmRsbCkgdG8gYmUgaW5zdGFsbGVkIGluIGEgCi0gICBkaXJlY3Rvcnkgb3RoZXIgdGhhbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBQeXRob24gZXhlY3V0YWJsZXMgYXJlIAotICAgaW5zdGFsbGVkIChieSBkZWZhdWx0LCB0aGUgUFlUSE9OSE9NRSBkaXJlY3RvcnkpLCBzZXQgdGhlIHZhbHVlIG9mIHRoZSAKLSAgIE1ha2VmaWxlIHZhcmlhYmxlIERMTF9ESVIgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeS4gIFRoaXMgRExMIG11c3QgCi0gICBiZSBwbGFjZWQgaW4gYSBkaXJlY3Rvcnkgb24gdGhlIHN5c3RlbSdzIExJQlBBVEgsIG9yIHRoYXQgZ2V0cyBzZXQgCi0gICB3aXRoIEJFR0lOTElCUEFUSCBvciBFTkRMSUJQQVRILgotCi00LiBJZiB5b3UgaGF2ZSBpbnN0YWxsZWQgYW55IG9mIHRoZSBsaWJyYXJpZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCAKLSAgIG9wdGlvbmFsIFB5dGhvbiBtb2R1bGVzLCBzZXQgdGhlIHZhbHVlIG9mIHRoZSByZWxldmFudCBIQVZFXzxwYWNrYWdlPiAKLSAgIE1ha2VmaWxlIHZhcmlhYmxlIHRvICJ5ZXMiLiAgVGhlIE1ha2VmaWxlIGN1cnJlbnRseSBzdXBwb3J0czoKLQotICAgbGlicmFyeSAgICAgICAgICAgICAgIE1ha2VmaWxlIHZhcmlhYmxlCi0gICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gICB6bGliICgxLjEuNCkgICAgICAgICAgSEFWRV9aTElCCi0gICBHTlUgVWx0cmFGYXN0IENyeXB0ICAgSEFWRV9VRkMKLSAgIFRjbC9UayAgICAgICAgICAgICAgICBIQVZFX1RDTFRLIChub3Qga25vd24gdG8gd29yaykKLSAgIEdOVSBSZWFkbGluZSAgICAgICAgICBIQVZFX0dSRUFETElORQotICAgbmN1cnNlcyAgICAgICAgICAgICAgIEhBVkVfTkNVUlNFUwotICAgR05VIGdkYm0gICAgICAgICAgICAgIEhBVkVfR0RCTQotICAgbGliYnoyICAgICAgICAgICAgICAgIEhBVkVfQloyCi0gICBPcGVuU1NMICAgICAgICAgICAgICAgSEFWRV9PUEVOU1NMCi0KLSAgIFBsZWFzZSBub3RlIHRoYXQgeW91IG5lZWQgdG8gY2hlY2sgdGhhdCB3aGF0IHlvdSBoYXZlIGluc3RhbGxlZCAKLSAgIGlzIGNvbXBhdGlibGUgd2l0aCBQeXRob24ncyBidWlsZCBvcHRpb25zLiAgSW4gcGFydGljdWxhciwgdGhlIAotICAgQlNEIERCIHYxLjg1IGxpYnJhcnkgbmVlZHMgdG8gYmUgcmVidWlsdCB3aXRoIGEgc291cmNlIHBhdGNoIGZvciAKLSAgIG11bHRpdGhyZWFkIHN1cHBvcnQgKGRvZXNuJ3QgY2hhbmdlIHRoZSBsaWJyYXJ5J3MgcmVlbnRyYW50IHN0YXR1cyAKLSAgIGJ1dCBhbGxvd3MgaXQgdG8gYmUgbGlua2VkIHRvIFB5dGhvbiB3aGljaCBpcyBtdWx0aXRocmVhZGVkKS4gIAotICAgV2lkZWx5IGF2YWlsYWJsZSBiaW5hcnkgcGFja2FnZXMgb2Ygb3RoZXIgbGlicmFyeXMgJiBETExzIGFyZSAKLSAgIG5vdCBidWlsdC9saW5rZWQgd2l0aCBtdWx0aXRocmVhZCBzdXBwb3J0LiAgQmV3YXJlIQotCi0gICBBbHNvIG5vdGUgdGhhdCB0aGUgTWFrZWZpbGUgY3VycmVudGx5IGV4cGVjdHMgYW55IGxpYnJhcmllcyB0byBiZSAKLSAgIGZvdW5kIHdpdGggdGhlIGRlZmF1bHQgbGlicmFyeSBzZWFyY2ggcGF0aC4gIFlvdSBtYXkgbmVlZCB0byBhZGQgCi0gICAtTCBzd2l0Y2hlcyB0byB0aGUgTERGTEFHUyBNYWtlZmlsZSB2YXJpYWJsZSBpZiB5b3UgaGF2ZSBpbnN0YWxsZWQgCi0gICBsaWJyYXJpZXMgaW4gZGlyZWN0b3JpZXMgbm90IGluIHRoZSBkZWZhdWx0IHNlYXJjaCBwYXRoICh3aGljaCBjYW4gCi0gICBiZSBjb250cm9sbGVkIGJ5IHRoZSBMSUJSQVJZX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgdXNlZCBieSBFTVgpLgotCi01LiBtYWtlCi0KLSAgIEl0IGlzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8gcmVkaXJlY3QgdGhlIHN0ZG91dCBhbmQgc3RkZXJyIHN0cmVhbXMgCi0gICBvZiB0aGUgbWFrZSBwcm9jZXNzIHRvIGxvZyBmaWxlcywgc28gdGhhdCB5b3UgY2FuIHJldmlldyBhbnkgbWVzc2FnZXMuIAotCi02LiBtYWtlIHRlc3QKLQotICAgVGhpcyBydW5zIHRoZSBQeXRob24gcmVncmVzc2lvbiB0ZXN0cywgYW5kIGNvbXBsZXRpb24gaXMgYSBzaWduIG9mIAotICAgYSB1c2FibGUgYnVpbGQuICBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBsaXN0IG9mIHNraXBwZWQgbW9kdWxlcyB0byAKLSAgIGVuc3VyZSB0aGF0IGFueSBvcHRpb25hbCBtb2R1bGVzIHlvdSBzZWxlY3RlZCBoYXZlIGJlZW4gYnVpbHQ7IAotICAgY2hlY2tpbmcgdGhlIGxpc3Qgb2YgZmFpbHVyZXMgYWdhaW5zdCB0aGUgbGlzdCBvZiBrbm93biBmYWlsdXJlcyAKLSAgIGVsc2V3aGVyZSBpbiB0aGlzIGRvY3VtZW50IGlzIGFsc28gcHJ1ZGVudC4KLQotNy4gbWFrZSBpbnN0YWxsCi0gICA+Pj4+Pj4gTk9UIFlFVCBDT01QTEVURSA8PDw8PDwgCi0KLTguIGNoYW5nZSB0byBhIGRpcmVjdG9yeSBvdXRzaWRlIHRoZSBQeXRob24gc291cmNlIHRyZWUgYW5kIHN0YXJ0IFB5dGhvbi4gCi0gICBDaGVjayB0aGUgdmVyc2lvbiBhbmQgYnVpbGQgZGF0ZSB0byBjb25maXJtIHNhdGlzZmFjdG9yeSBpbnN0YWxsYXRpb24uCi0KLQotWU9VIEhBVkUgQkVFTiBXQVJORUQhIQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1JIGtub3cgYWJvdXQgYSBudW1iZXIgb2YgbmFzdGllcyBpbiB0aGlzIHBvcnQuCi0KLTEuICBFYmVyaGFyZCBNYXR0ZXMsIGF1dGhvciBvZiBFTVgsIHdyaXRlcyBpbiBoaXMgZG9jdW1lbnRhdGlvbiB0aGF0IGZvcmsoKSAKLWlzIHZlcnkgaW5lZmZpY2llbnQgaW4gdGhlIE9TLzIgZW52aXJvbm1lbnQuICBJdCBhbHNvIHJlcXVpcmVzIHRoYXQgdGhlIAotZXhlY3V0YWJsZSBiZSBsaW5rZWQgaW4gYS5vdXQgZm9ybWF0IHJhdGhlciB0aGFuIE9NRi4gIFVzZSB0aGUgb3MuZXhlYyAKLWFuZC9vciB0aGUgb3Muc3Bhd24gZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aGVyZSBwb3NzaWJsZS4KLQotMi4gIEluIHRoZSBhYnNlbmNlIG9mIEdOVSBSZWFkbGluZSwgdGVybWluYXRpbmcgdGhlIGludGVycHJldGVyIHJlcXVpcmVzIGEgCi1jb250cm9sLVogKF5aKSBmb2xsb3dlZCBieSBhIGNhcnJpYWdlIHJldHVybi4gIEplZmYgUnVzaCBkb2N1bWVudGVkIHRoaXMgCi1wcm9ibGVtIGluIGhpcyBQeXRob24gMS41LjIgcG9ydC4gIFdpdGggUmVhZGxpbmUsIGEgY29udHJvbC1EICheRCkgd29ya3MgCi1hcyBwZXIgdGhlIHN0YW5kYXJkIFVuaXggZW52aXJvbm1lbnQuCi0KLTMuICBFTVggb25seSBoYXMgYSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIGZjbnRsKCkuICBUaGUgZmNudGwgbW9kdWxlIAotaW4gdGhpcyBwb3J0IHN1cHBvcnRzIHdoYXQgRU1YIHN1cHBvcnRzLiAgSWYgZmNudGwgaXMgaW1wb3J0YW50IHRvIHlvdSwgCi1wbGVhc2UgcmV2aWV3IHRoZSBFTVggQyBMaWJyYXJ5IFJlZmVyZW5jZSAoaW5jbHVkZWQgaW4gLklORiBmb3JtYXQgaW4gdGhlIAotRU1YVklFVy5aSVAgYXJjaGl2ZSBhcyBwYXJ0IG9mIHRoZSBjb21wbGV0ZSBFTVggZGV2ZWxvcG1lbnQgdG9vbHMgc3VpdGUpLgotQmVjYXVzZSBvZiBvdGhlciBzaWRlLWVmZmVjdHMgSSBoYXZlIG1vZGlmaWVkIHRoZSB0ZXN0X2ZjbnRsLnB5IHRlc3QgCi1zY3JpcHQgdG8gZGVhY3RpdmF0ZSB0aGUgZXhlcmNpc2luZyBvZiB0aGUgbWlzc2luZyBmdW5jdGlvbmFsaXR5LgotCi00LiAgVGhlIHJlYWRsaW5lIG1vZHVsZSBoYXMgYmVlbiBsaW5rZWQgYWdhaW5zdCBuY3Vyc2VzIHJhdGhlciB0aGFuIHRoZSAKLXRlcm1jYXAgbGlicmFyeSBzdXBwbGllZCB3aXRoIEVNWC4KLQotNS4gIEkgaGF2ZSBjb25maWd1cmVkIHRoaXMgcG9ydCB0byB1c2UgIi8iIGFzIHRoZSBwcmVmZXJyZWQgcGF0aCBzZXBhcmF0b3IgCi1jaGFyYWN0ZXIsIHJhdGhlciB0aGFuICJcIiAoJ1xcJyksIGluIGxpbmUgd2l0aCB0aGUgY29udmVudGlvbiBzdXBwb3J0ZWQgCi1ieSBFTVguICBCYWNrc2xhc2hlcyBhcmUgc3RpbGwgc3VwcG9ydGVkIG9mIGNvdXJzZSwgYW5kIHN0aWxsIGFwcGVhciBpbiAKLXVuZXhwZWN0ZWQgcGxhY2VzIGR1ZSB0byBvdXRzaWRlIHNvdXJjZXMgdGhhdCBkb24ndCBnZXQgbm9ybWFsaXNlZC4KLQotNi4gIFdoaWxlIHRoZSBEaXN0VXRpbHMgY29tcG9uZW50cyBhcmUgbm93IGZ1bmN0aW9uYWwsIG90aGVyIAotcGFja2FnaW5nL2JpbmFyeSBoYW5kbGluZyB0b29scyBhbmQgdXRpbGl0aWVzIHN1Y2ggYXMgdGhvc2UgaW5jbHVkZWQgaW4KLXRoZSBEZW1vIGFuZCBUb29scyBkaXJlY3RvcmllcyAtIGZyZWV6ZSBpbiBwYXJ0aWN1bGFyIC0gYXJlIHVubGlrZWx5IHRvIAotd29yay4gIElmIHlvdSBkbyBnZXQgdGhlbSBnb2luZywgSSdkIGxpa2UgdG8ga25vdyBhYm91dCB5b3VyIHN1Y2Nlc3MuCi0KLTcuICBJIGhhdmVuJ3Qgc2V0IG91dCB0byBzdXBwb3J0IHRoZSBbQkVHSU58RU5EXUxJQlBBVEggZnVuY3Rpb25hbGl0eSAKLXN1cHBvcnRlZCBieSBvbmUgb2YgdGhlIGVhcmxpZXIgcG9ydHMgKFJ1c2gncz8/KS4gIElmIGl0IHdvcmtzIGxldCBtZSBrbm93LgotCi04LiBBcyBhIHJlc3VsdCBvZiB0aGUgbGltaXRhdGlvbnMgaW1wb3NlZCBieSBFTVgncyBsaWJyYXJ5IHJvdXRpbmVzLCB0aGUgCi1zdGFuZGFyZCBleHRlbnNpb24gbW9kdWxlIHB3ZCBvbmx5IHN5bnRoZXNpc2VzIGEgc2ltcGxlIHBhc3N3ZCBkYXRhYmFzZSwgCi1hbmQgdGhlIGdycCBtb2R1bGUgY2Fubm90IGJlIHN1cHBvcnRlZCBhdCBhbGwuCi0KLUkgaGF2ZSB3cml0dGVuIHB1cmUgUHl0aG9uIHN1YnN0aXR1dGVzIGZvciBwd2QgYW5kIGdycCwgd2hpY2ggY2FuIHByb2Nlc3MgCi1yZWFsIHBhc3N3ZCBhbmQgZ3JvdXAgZmlsZXMgZm9yIHRob3NlIGFwcGxpY2F0aW9ucyAoc3VjaCBhcyBNYWlsTWFuKSB0aGF0IAotcmVxdWlyZSBtb3JlIHRoYW4gRU1YIGVtdWxhdGVzLiAgSSBoYXZlIHBsYWNlZCBwd2QucHkgYW5kIGdycC5weSBpbiAKLUxpYi9wbGF0LW9zMmVteCwgd2hpY2ggaXMgdXN1YWxseSBiZWZvcmUgTGliL2xpYi1keW5sb2FkICh3aGljaCBjb250YWlucyAKLXB3ZC5weWQpIGluIHRoZSBQWVRIT05QQVRILiAgSWYgeW91IGhhdmUgYmVjb21lIGF0dGFjaGVkIHRvIHdoYXQgcHdkLnB5ZCAKLXN1cHBvcnRzLCB5b3UgY2FuIHB1dCBMaWIvbGliLWR5bmxvYWQgYmVmb3JlIExpYi9wbGF0LW9zMmVteCBpbiBQWVRIT05QQVRIIAotb3IgZGVsZXRlL3JlbmFtZSBwd2QucHkgJiBncnAucHkuCi0KLXB3ZC5weSAmIGdycC5weSBzdXBwb3J0IGxvY2F0aW5nIHRoZWlyIGRhdGEgZmlsZXMgYnkgbG9va2luZyBpbiB0aGUgCi1lbnZpcm9ubWVudCBmb3IgdGhlbSBpbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgotcHdkLnB5OiAgJEVUQ19QQVNTV0QgICAgICAgICAgICAgKCVFVENfUEFTU1dEJSkKLSAgICAgICAgICRFVEMvcGFzc3dkICAgICAgICAgICAgICglRVRDJS9wYXNzd2QpCi0gICAgICAgICAkUFlUSE9OSE9NRS9FdGMvcGFzc3dkICAoJVBZVEhPTkhPTUUlL0V0Yy9wYXNzd2QpCi1ncnAucHk6ICAkRVRDX0dST1VQICAgICAgICAgICAgICAoJUVUQ19HUk9VUCUpCi0gICAgICAgICAkRVRDL2dyb3VwICAgICAgICAgICAgICAoJUVUQyUvZ3JvdXApCi0gICAgICAgICAkUFlUSE9OSE9NRS9FdGMvZ3JvdXAgICAoJVBZVEhPTkhPTUUlL0V0Yy9ncm91cCkKLQotVGhlIEVUQ19QQVNTV0QgYW5kIEVUQ19HUk9VUCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGludGVuZGVkIHRvIGFsbG93IAotc3VwcG9ydCBmb3IgbXVsdGlwbGUgcGFzc3dkL2dycCBmaWxlcywgd2hlcmUgb3RoZXIgYXBwbGljYXRpb25zIG1heSBub3QgCi1zdXBwb3J0IGFzIHdpZGUgYSB2YXJpZXR5IG9mIGlucHV0IHZhcmlhdGlvbnMgKGRyaXZlIHJlbWFwcGluZ3MsIAotc2VwYXJhdG9ycyBldGMpLgotCi1Cb3RoIG1vZHVsZXMgc3VwcG9ydCB1c2luZyBlaXRoZXIgdGhlICI6IiBjaGFyYWN0ZXIgKFVuaXggc3RhbmRhcmQpIG9yIAotIjsiIChPUy8yLCBET1MsIFdpbmRvd3Mgc3RhbmRhcmQpIGZpZWxkIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGFuZCBwd2QucHkgCi1pbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgZHJpdmUgbGV0dGVyIGNvbnZlcnNpb25zIGZvciB0aGUgaG9tZV9kaXJlY3RvcnkgYW5kIAotc2hlbGwgZmllbGRzIChmb3IgdGhlICI6IiBzZXBhcmF0b3Igb25seSk6Ci0gICAgICAgICAkeCAgLT4gIHg6Ci0gICAgICAgICB4OyAgLT4gIHg6Ci0KLUV4YW1wbGUgdmVyc2lvbnMgb2YgcGFzc3dkIGFuZCBncm91cCBhcmUgaW4gdGhlIEV0YyBzdWJkaXJlY3RvcnkuICBUaGUgCi1yZWdyZXNzaW9uIHRlc3RzICh0ZXN0X3B3ZCBhbmQgdGVzdF9ncnApIHdpbGwgZmFpbCBpZiB2YWxpZCBwYXNzd29yZCBhbmQgCi1ncm91cCBmaWxlcyBjYW5ub3QgYmUgZm91bmQsIGJ1dCBzaG91bGQgcGFzcyBvdGhlcndpc2UuCi0KLUJlIGF3YXJlIHRoYXQgUHl0aG9uJ3MgcHdkICYgZ3JvdXAgbW9kdWxlcyBhcmUgZm9yIHJlYWRpbmcgcGFzc3dvcmQgYW5kIAotZ3JvdXAgaW5mb3JtYXRpb24gb25seS4KLQotMTEuIEVNWCdzIHRlcm1pb3Mgcm91dGluZXMgZG9uJ3Qgc3VwcG9ydCBhbGwgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgbm93IAotZXhwb3NlZCBieSB0aGUgdGVybWlvcyBtb2R1bGUgLSByZWZlciB0byB0aGUgRU1YIGRvY3VtZW50YXRpb24gdG8gZmluZCAKLW91dCB3aGF0IGlzIHN1cHBvcnRlZC4KLQotMTIuIFRoZSBjYXNlIHNlbnNpdGl2ZSBpbXBvcnQgc2VtYW50aWNzIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuMSBmb3Igb3RoZXIgCi1jYXNlIGluc2Vuc2l0aXZlIGJ1dCBjYXNlIHByZXNlcnZpbmcgZmlsZS9vcGVyYXRpbmcgc3lzdGVtcyAoV2luZG93cyBldGMpLCAKLWhhdmUgYmVlbiBpbmNvcnBvcmF0ZWQgaW50byB0aGlzIHBvcnQsIGFuZCBhcmUgYWN0aXZlIGJ5IGRlZmF1bHQuICBTZXR0aW5nIAotdGhlIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZSAodG8gYW55IHZhbHVlKSByZXZlcnRzIHRvIHRoZSAKLXByZXZpb3VzIChjYXNlIGluc2Vuc2l0aXZlKSBzZW1hbnRpY3MuICBUaGlzIGNhbiBiZSBhbiBpc3N1ZSB3aXRoIHNvbWUgCi1maWxlIG1hbmFnZW1lbnQgdXRpbGl0aWVzIHRoYXQgZG8gbm90IHByZXNlcnZlIHRoZSBjYXNlIG9mIGZpbGUgYW5kCi1kaXJlY3RvcnkgbmFtZXMuCi0KLTEzLiBCZWNhdXNlIEkgYW0gc3RhdGljYWxseSBsaW5raW5nIG5jdXJzZXMsIHRoZSBfY3Vyc2VzX3BhbmVsIAotbW9kdWxlIGhhcyBwb3RlbnRpYWwgcHJvYmxlbXMgYXJpc2luZyBmcm9tIHNlcGFyYXRlIGxpYnJhcnkgZGF0YSBhcmVhcy4KLVRvIGF2b2lkIHRoaXMsIEkgaGF2ZSBjb25maWd1cmVkIHRoZSBfY3Vyc2VzXy5weWQgKGltcG9ydGVkIGFzIAotIl9jdXJzZXNfcGFuZWwiKSB0byBpbXBvcnQgdGhlIG5jdXJzZXMgc3ltYm9scyBpdCBuZWVkcyBmcm9tIF9jdXJzZXMuZGxsIAotKHdoaWNoIGlzIHRoZSBjdXJzZXMgbW9kdWxlLCBidXQgd2l0aCBhIC5kbGwgZXh0ZW5zaW9uIHJhdGhlciB0aGFuIC5weWQgCi1zbyB0aGF0IHRoZSBkeW5hbWljIGxvYWRlciBjYW4gYWN0dWFsbHkgaW1wb3J0IHRoZSBzeW1ib2xzIGZyb20gaXQgYXMgYSAKLURMTCkuCi0KLVRoZSBzaXRlIG1vZHVsZSAoTGliL3NpdGUucHkpIGhhcyBjb2RlIGFkZGVkIHRvIHR3ZWFrIEJFR0lOTElCUEFUSCBzbwotdGhhdCBfY3Vyc2VzLmRsbCBpcyBmb3VuZCB3aGVuIF9jdXJzZXNfcGFuZWwgaXMgaW1wb3J0ZWQuICBJZiB5b3UgaGF2ZQotcHJvYmxlbXMgYXR0ZW1wdGluZyB0byB1c2UgdGhlIF9jdXJzZXNfcGFuZWwgc3VwcG9ydCBwbGVhc2UgbGV0IG1lIGtub3csCi1hbmQgSSdsbCBoYXZlIGFub3RoZXIgbG9vayBhdCB0aGlzLgotCi0xNC4gc3lzLnBsYXRmb3JtIHJlcG9ydHMgIm9zMmVteCIgaW5zdGVhZCBvZiAib3MyIi4gIG9zLm5hbWUgc3RpbGwgCi1yZXBvcnRzICJvczIiLiAgVGhpcyBjaGFuZ2Ugd2FzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gCi10aGUgVkFDKysgYnVpbGQgKGZvcm1lcmx5IG1haW50YWluZWQgYnkgTWljaGFlbCBNdWxsZXIpIGFuZCB0aGUgRU1YIGJ1aWxkIAotKHRoaXMgcG9ydCksIHByaW5jaXBhbGx5IGZvciBEaXN0VXRpbHMuCi0KLTE1LiBpdCBhcHBlYXJzIHRoYXQgdGhlICVXIHN1YnN0aXR1dGlvbiBpbiB0aGUgRU1YIHN0cmZ0aW1lKCkgcm91dGluZSBoYXMgCi1hbiBvZmYtYnktb25lIGJ1Zy4gIHN0cmZ0aW1lIHdhcyBsaXN0ZWQgYXMgcGFzc2luZyB0aGUgcmVncmVzc2lvbiB0ZXN0cyAKLWluIHByZXZpb3VzIHJlbGVhc2VzLCBidXQgdGhpcyBmYWN0IGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGFuIG92ZXJzaWdodCBpbiAKLXRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuICBUbyBmaXggdGhpcyByZWFsbHkgcmVxdWlyZXMgYSBwb3J0YWJsZSAKLXN0cmZ0aW1lIHJvdXRpbmUgLSBJJ20gbG9va2luZyBpbnRvIHVzaW5nIG9uZSBmcm9tIEZyZWVCU0QsIGJ1dCBpdHMgbm90IAotcmVhZHkgeWV0LgotCi0xNi4gSSBoYXZlIHN1Y2Nlc3NmdWxseSBidWlsdCB0aGlzIHBvcnQgd2l0aCBBbmR5IFphYm9sb3RueSdzIHBvcnRzIG9mIAotcGdjYyAyLjk1IGFuZCBnY2MgMy4yLjEsIGluIGFkZGl0aW9uIHRvIEVNJ3MgZ2NjIDIuOC4xLgotCi1JIGhhdmUgbm90IGF0dGVtcHRlZCB0byBjb21waWxlIFB5dGhvbiB3aXRoIGFueSB2ZXJzaW9uIG9mIGdjYyBwcmlvciB0byAKLXYyLjguMS4KLQotVGhpcyByZWxlYXNlIHNlZXMgdGhlIGRlZmF1bHQgb3B0aW1pc2F0aW9uIGNoYW5nZSB0byAKLSItTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLW1wcm9iZSIuICBUaGlzIHdvcmtzIGZpbmUgdG9vIGZvciBwZ2NjIDIuOTUgCi1idXQgbm90IGZvciBnY2MgMy4yLjEuCi0KLVdpdGggZ2NjIDMuMi4xLCAtTzMgY2F1c2VzIDIgdW5leHBlY3RlZCB0ZXN0IGZhaWx1cmVzOiB0ZXN0X2Zvcm1hdCBhbmQgCi10ZXN0X3VuaWNvZGUuICBCb3RoIHRoZXNlIHRlc3RzIHBhc3MgaWYgLU8yIGlzIGluc3RlYWQgb2YgLU8zIHdpdGggdGhpcyAKLWNvbXBpbGVyLCBhbmQgdGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMgbmVnbGlnaWJsZSAoaW4gY29udHJhc3QgdG8gCi1nY2MgMi44LjEgYW5kIHBnY2MgMi45NSwgd2hlcmUgdGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgCi0yIG9wdGltaXNhdGlvbiBzZXR0aW5ncyBhcHByb2FjaGVzIDEwJSkuCi0KLTE3LiAgb3Muc3Bhd252KCkgYW5kIG9zLnNwYXdudmUoKSBleHBvc2UgRU1YJ3MgbGlicmFyeSByb3V0aW5lcyByYXRoZXIgCi10aGFuIHVzZSB0aGUgZW11bGF0aW9uIGluIG9zLnB5LgotCi1JbiBvcmRlciB0byBtYWtlIHVzZSBvZiBzb21lIG9mIHRoZSBmZWF0dXJlcyB0aGlzIG1ha2VzIGF2YWlsYWJsZSBpbiAKLXRoZSBPUy8yIGVudmlyb25tZW50LCB5b3Ugc2hvdWxkIHBlcnVzZSB0aGUgcmVsZXZhbnQgRU1YIGRvY3VtZW50YXRpb24gCi0oRU1YTElCLklORiBpbiB0aGUgRU1YVklFVy5aSVAgYXJjaGl2ZSBhY2NvbXBhbnlpbmcgdGhlIEVNWCBhcmNoaXZlcyAKLW9uIEhvYmJlcyBvciBMRU8pLiAgQmUgYXdhcmUgdGhhdCBJIGhhdmUgZXhwb3NlZCBhbGwgdGhlICJtb2RlIiBvcHRpb25zIAotc3VwcG9ydGVkIGJ5IEVNWCwgYnV0IHRoZXJlIGFyZSBjb21iaW5hdGlvbnMgdGhhdCBlaXRoZXIgY2Fubm90IGJlIAotcHJhY3RpY2FsbHkgdXNlZCBieS9pbiBQeXRob24gb3IgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIGNvbXByb21pc2UgeW91ciAKLXN5c3RlbSdzIHN0YWJpbGl0eS4KLQotMTguICBweXRob25wbS5leGUgdXNlZCB0byBiZSBqdXN0IHB5dGhvbi5leGUgd2l0aCB0aGUgV0lORE9XQVBJIGxpbmtlciAKLW9wdGlvbiBzZXQgaW4gdGhlIHB5dGhvbnBtLmRlZiBmaWxlLiAgSW4gcHJhY3RpY2UsIHRoaXMgdHVybnMgb3V0IHRvIGRvIAotbm90aGluZyB1c2VmdWwuCi0KLUkgaGF2ZSB3cml0dGVuIGEgcmVwbGFjZW1lbnQgd2hpY2ggd3JhcHMgdGhlIFB5dGhvbiBETEwgaW4gYSBnZW51aW5lIAotUHJlc2VudGF0aW9uIE1hbmFnZXIgYXBwbGljYXRpb24uICBUaGlzIHZlcnNpb24gYWN0dWFsbHkgcnVucyB0aGUgCi1QeXRob24gaW50ZXJwcmV0ZXIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgZnJvbSB0aGUgUE0gc2hlbGwsIGluIG9yZGVyIAotdGhhdCBQeXRob25QTSBoYXMgYSBmdW5jdGlvbmluZyBtZXNzYWdlIHF1ZXVlIGFzIGdvb2QgUE0gYXBwcyBzaG91bGQuCi1JbiBpdHMgY3VycmVudCBzdGF0ZSwgUHl0aG9uUE0ncyB3aW5kb3cgaXMgaGlkZGVuLiAgSXQgY2FuIGJlIGRpc3BsYXllZCwgCi1hbHRob3VnaCBpdCB3aWxsIGhhdmUgbm8gY29udGVudCBhcyBub3RoaW5nIGlzIGV2ZXIgd3JpdHRlbiB0byB0aGUgCi13aW5kb3cuICBPbmx5IHRoZSAiaGlkZSIgYnV0dG9uIGlzIGF2YWlsYWJsZS4gIEFsdGhvdWdoIHRoZSBjb2RlIAotaGFzIHN1cHBvcnQgZm9yIHNodXR0aW5nIFB5dGhvblBNIGRvd24gd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGlzIAotc3RpbGwgYnVzeSAodmlhIHRoZSAiY29udHJvbCIgbWVudSksIHRoaXMgaXMgbm90IHdlbGwgdGVzdGVkIGFuZCBnaXZlbiAKLWNvbW1lbnRzIEkndmUgY29tZSBhY3Jvc3MgaW4gRU1YIGRvY3VtZW50YXRpb24gc3VnZ2VzdGluZyB0aGF0IHRoZSAKLXRocmVhZCBraWxsaW5nIG9wZXJhdGlvbiBoYXMgcHJvYmxlbXMgSSB3b3VsZCBzdWdnZXN0IGNhdXRpb24gaW4gCi1yZWx5aW5nIG9uIHRoaXMgY2FwYWJpbGl0eS4KLQotUHl0aG9uUE0gcHJvY2Vzc2VzIGNvbW1hbmRsaW5lIHBhcmFtZXRlcnMgbm9ybWFsbHkuICBUaGUgc3RhbmRhcmQgaW5wdXQsIAotb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zIGFyZSBvbmx5IHVzZWZ1bCBpZiByZWRpcmVjdGVkLCBhcyBQeXRob25QTSdzIAotd2luZG93IGlzIG5vdCBhIGNvbnNvbGUgaW4gYW55IGZvcm0gYW5kIHNvIGNhbm5vdCBhY2NlcHQgb3IgZGlzcGxheSAKLWFueXRoaW5nLiAgVGhpcyBtZWFucyB0aGF0IHRoZSAtaSBvcHRpb24gaXMgaW5lZmZlY3RpdmUuCi0KLUJlY2F1c2UgdGhlIFB5dGhvbiB0aHJlYWQgZG9lc24ndCBjcmVhdGUgaXRzIG93biBtZXNzYWdlIHF1ZXVlLCBjcmVhdGluZyAKLVBNIFdpbmRvd3MgYW5kIHBlcmZvcm1pbmcgbW9zdCBQTSBvcGVyYXRpb25zIGlzIG5vdCBwb3NzaWJsZSBmcm9tIHdpdGhpbiAKLXRoaXMgdGhyZWFkLiAgSG93IHRoaXMgd2lsbCBhZmZlY3Qgc3VwcG9ydGluZyBQTSBleHRlbnNpb25zIChzdWNoIGFzIAotVGtpbnRlciB1c2luZyBhIFBNIHBvcnQgb2YgVGNsL1RrLCBvciB3eFB5dGhvbiB1c2luZyB0aGUgUE0gcG9ydCBvZiAKLVd4V2luZG93cykgaXMgc3RpbGwgYmVpbmcgcmVzZWFyY2hlZC4KLQotTm90ZSB0aGF0IG9zLmZvcmsoKSBfRE9FU19OT1RfV09SS18gaW4gUHl0aG9uUE0gLSBTWVMzMTc1cyBhcmUgdGhlIHJlc3VsdCAKLW9mIHRyeWluZy4gIG9zLnNwYXdudigpIF9kb2VzXyB3b3JrLiAgUHl0aG9uUE0gcGFzc2VzIGFsbCByZWdyZXNzaW9uIHRlc3RzIAotdGhhdCB0aGUgc3RhbmRhcmQgUHl0aG9uIGludGVycHJldGVyIChweXRob24uZXhlKSBwYXNzZXMsIHdpdGggdGhlIGV4Y2VwdGlvbiAKLW9mIHRlc3RfZm9yazEgYW5kIHRlc3Rfc29ja2V0IHdoaWNoIGJvdGggYXR0ZW1wdCB0byB1c2Ugb3MuZm9yaygpLgotCi1JIHZlcnkgbXVjaCB3YW50IGZlZWRiYWNrIG9uIHRoZSBwZXJmb3JtYW5jZSwgYmVoYXZpb3VyIGFuZCB1dGlsaXR5IG9mIAotUHl0aG9uUE0uICBJIHdvdWxkIGxpa2UgdG8gYWRkIGEgUE0gY29uc29sZSBjYXBhYmlsaXR5IHRvIGl0LCBidXQgdGhhdCAKLXdpbGwgYmUgYSBub24tdHJpdmlhbCBlZmZvcnQuICBJIG1heSBiZSBhYmxlIHRvIGxldmVyYWdlIHRoZSBjb2RlIGluIAotSWxseWEgVmFlcycgVGNsL1RrIHBvcnQsIHdoaWNoIHdvdWxkIG1ha2UgaXQgZWFzaWVyLgotCi0xOS4gIG9zLmNoZGlyKCkgdXNlcyBFTVgncyBfY2hkaXIyKCksIHdoaWNoIHN1cHBvcnRzIGNoYW5naW5nIGJvdGggZHJpdmUgCi1hbmQgZGlyZWN0b3J5IGF0IG9uY2UuICBTaW1pbGFybHksIG9zLmdldGN3ZCgpIHVzZXMgRU1YJ3MgX2dldGN3ZCgpIAotd2hpY2ggcmV0dXJucyBkcml2ZSBhcyB3ZWxsIGFzIHBhdGguCi0KLTIwLiAgcHljb25maWcuaCBpcyBpbnN0YWxsZWQgaW4gdGhlIEluY2x1ZGUgc3ViZGlyZWN0b3J5IHdpdGggYWxsIAotb3RoZXIgaW5jbHVkZSBmaWxlcy4KLQotMjEuICB0aGUgZGVmYXVsdCBidWlsZCBleHBsaWNpdGx5IHNldHMgdGhlIG51bWJlciBvZiBmaWxlIGhhbmRsZXMgCi1hdmFpbGFibGUgdG8gYSBQeXRob24gcHJvY2VzcyB0byAyNTAuICBFTVggZGVmYXVsdCBpcyA0MCwgd2hpY2ggaXMgCi1pbnN1ZmZpY2llbnQgZm9yIHRoZSB0ZW1wZmlsZSByZWdyZXNzaW9uIHRlc3QgKHRlc3RfdGVtcGZpbGUpIHdoaWNoIAotdHJpZXMgdG8gY3JlYXRlIDEwMCB0ZW1wb3JhcnkgZmlsZXMuCi0KLVRoaXMgc2V0dGluZyBjYW4gYmUgb3ZlcnJpZGRlbiB2aWEgdGhlIEVNWE9QVCBlbnZpcm9ubWVudCB2YXJpYWJsZToKLSAgc2V0IEVNWE9QVD0taDI1MAotaXMgZXF1aXZhbGVudCB0byB0aGUgc2V0dGluZyBjdXJyZW50bHkgdXNlZC4gIFRoZSBlbXhiaW5kIHV0aWxpdHkgKGlmIHlvdSAKLWhhdmUgaXQgaW5zdGFsbGVkKSBjYW4gYWxzbyBiZSB1c2VkIHRvIHBlcm1hbmVudGx5IGNoYW5nZSB0aGUgc2V0dGluZyBpbiAKLXB5dGhvbi5leGUgLSBwbGVhc2UgcmVmZXIgdG8gdGhlIEVNWCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi0yMi4gIGEgcHVyZSBweXRob24gc3RycHRpbWUgbW9kdWxlIGlzIG5vdyBwYXJ0IG9mIHRoZSBQeXRob24gc3RhbmRhcmQKLWxpYnJhcnksIHN1cGVyY2VkaW5nIGEgcGxhdGZvcm0gc3BlY2lmaWMgZXh0ZW5zaW9uIG1vZHVsZS4gVGhpcyBtb2R1bGUKLWxldmVyYWdlcyB0aGUgc3RyZnRpbWUgbW9kdWxlLCBhbmQgYXMgYSByZXN1bHQgdGVzdF9zdHJwdGltZSBmYWlscwotZHVlIHRvIHRoZSBFTVggc3RyZnRpbWUgYnVnIGluIGl0ZW0gMjAgYWJvdmUuCi0KLTIzLiAgdGVzdF9wb3NpeHBhdGggYXR0ZW1wdHMgdG8gZXhlcmNpc2UgdmFyaW91cyBQb3NpeCBwYXRoIHJlbGF0ZWQKLWZ1bmN0aW9uYWxpdHkuICBNb3N0IG9mIHRoZSBzdWItdGVzdHMgcGFzcywgYnV0IHRoZSAiaXNtb3VudCIgYW5kCi0ic2FtZXN0YXQiIHN1YnRlc3RzIGZhaWw6Ci0tIEVNWCBwcm92aWRlcyBub3Qgc2F0aXNmYWN0b3J5IG1vdW50IHBvaW50IGVtdWxhdGlvbiwgc28gImlzbW91bnQiCi0gIGNhbm5vdCBzdWNjZWVkOwotLSBFTVggZG9jdW1lbnRzIHRoYXQgc3VjY2Vzc2l2ZSBzdGF0KCkgY2FsbHMgd2lsbCBwcm9kdWNlIGRpZmZlcmVudAotICByZXN1bHRzLCBzbyAic2FtZXN0YXQiIGNhbm5vdCBzdWNjZWVkLgotCi10ZXN0X3Bvc2l4cGF0aCBzaG91bGQgc2tpcCB0aGVzZSB0ZXN0cyBvbiBFTVguCi0KLTI0LiAgSSBoYXZlIHJlcG9ydHMgb2YgQml0VG9ycmVudCBub3Qgd29ya2luZy4gIEl0IGFwcGVhcnMgdGhhdCB0aGUKLUVNWCBzZWxlY3QoKSBlbXVsYXRpb24sIHBvc3NpYmx5IGluIGNvbmNlcnQgd2l0aCBidWdzIGluIHRoZSBUQ1AvSVAKLXN0YWNrLCBydW5zIGludG8gcHJvYmxlbXMgdW5kZXIgdGhlIHN0cmVzcyBpbXBvc2VkIGJ5IHRoaXMgYXBwbGljYXRpb24uCi1JIHRoaW5rIGl0IHN1ZmZpY2VzIHRvIHNheSB0aGF0IEJpdFRvcnJlbnQgaXMgYSBmYWlyIHN0cmVzcyB0ZXN0IG9mIGEKLXN5c3RlbSdzIG5ldHdvcmtpbmcgY2FwYWJpbGl0eS4KLQotMjUuICBJbiB0aGUgYWJzZW5jZSBvZiBhbiBFTVggaW1wbGVtZW50YXRpb24gb2YgdGhlIGxpbmsoKSBmdW5jdGlvbiwgSSd2ZSAKLWltcGxlbWVudGVkIGEgY3J1ZGUgUHl0aG9uIGVtdWxhdGlvbiwgaW4gdGhlIGZpbGUgCi1MaWIvcGxhdC1vczJlbXgvX2VteF9saW5rLnB5LiAgVGhpcyBpcyBpbXBvcnRlZCBpbnRvIHRoZSBvcyBtb2R1bGUsIGFuZCAKLWJlY29tZXMgYXZhaWxhYmxlIGFzIG9zLmxpbmsoKSBpbiB0aGUgbm9ybWFsIHdheS4KLQotVGhlIGVtdWxhdGlvbiBjb3BpZXMgdGhlIHNvdXJjZSBmaWxlIGluIGJpbmFyeSBtb2RlLCBhbmQgd2lsbCBmYWlsIGlmIAotZGlzayBzcGFjZSBpcyBleGhhdXN0ZWQuIFRoZSBjYWxsIGZhaWxzIGlmIHRoZSB0YXJnZXQgYWxyZWFkeSBleGlzdHMuIAotVGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMgdG8gdGhyZWFkIHNhZmV0eSB3aXRoIHRoaXMgZW11bGF0aW9uIC0gYmV3YXJlIQotCi1UaGUgZW11bGF0aW9uIHdhcyB3cml0dGVuIHRvIHN1cHBvcnQgYSBsaW5rKCkgYmFzZWQgZmlsZSBsb2NraW5nIHN5c3RlbSAKLXVzZWQgaW4gR05VIE1haWxtYW4uCi0KLTI2LiAgQUZfVU5JWCBzb2NrZXRzLCBvdGhlcndpc2Uga25vd24gYXMgVW5peCBkb21haW4gc29ja2V0cywgYXJlIG5vdwotc3VwcG9ydGVkLiAgVW5mb3J0dW5hdGVseSwgdGhlcmUgYXJlIHNvbWUgdHJhcHMgYXJpc2luZyBmcm9tIHRoZQotaW1wbGVtZW50YXRpb24gaW4gSUJNJ3MgVENQL0lQIHN0YWNrOi0KLS0gdGhlIHBhdGggbmFtZSBtdXN0IHN0YXJ0IHdpdGggJ1xcc29ja2V0XFwnICgnL3NvY2tldC8nIHdvbid0IHdvcmshKSwKLSAgd2l0aCB0aGUgbGVuZ3RoIG9mIHRoZSBmdWxsIHBhdGggbmFtZSBsZXNzIHRoYW4gMTA4IGNoYXJhY3RlcnM7Ci0tIHVubGlrZSBVbml4LCB0aGUgc29ja2V0IGVuZHBvaW50cyBkb24ndCBleGlzdCBpbiB0aGUgZmlsZXN5c3RlbTsKLS0gYnkgZGVmYXVsdCwgc29ja2V0cyBhcmUgaW4gYmluYXJ5IG1vZGUuCi0KLTI3LiAgQXMgb2YgUHl0aG9uIDIuNCwgdGhlIG1weiwgcm90b3IgYW5kIHhyZWFkbGluZXMgbW9kdWxlcyBoYXZlIGJlZW4gCi1kcm9wcGVkIGZyb20gdGhlIFB5dGhvbiBzb3VyY2UgdHJlZS4KLQotMjguICBUaGUgc3VicHJvY2VzcyBtb2R1bGUgd2FzIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHJlbGF0aXZlbHkKLWxhdGUgaW4gdGhlIDIuNCBkZXZlbG9wbWVudCBjeWNsZS4gIFVuZm9ydHVuYXRlbHkgSSBoYXZlbid0IGhhZCB0aGUKLXJvdW5kIHR1aXRzIHRvIGFkYXB0IHRoZSBtb2R1bGUgdG8gdGhlIEVNWCBlbnZpcm9ubWVudCB5ZXQsIGFuZAotdGVzdF9zdWJwcm9jZXNzIGhhcyBhIG51bWJlciBvZiBmYWlsdXJlcyBhcyBhIHJlc3VsdC4KLQotMjkuICBUaGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciB0aHJlYWRzIGhhcyBiZWVuIDY0ay4gIFRoaXMgaXMgcHJvdmluZwotaW5zdWZmaWNpZW50IGZvciBzb21lIGNvZGViYXNlcywgc3VjaCBhcyBab3BlLiAgVGhlIHRocmVhZCBzdGFjayBzaXplCi1zdGlsbCBkZWZhdWx0cyB0byA2NGssIGJ1dCB0aGlzIGNhbiBub3cgYmUgaW5jcmVhc2VkIHZpYSB0aGUgc3RhY2tfc2l6ZSgpCi1mdW5jdGlvbiBleHBvc2VkIGJ5IHRoZSB0aHJlYWRpbmcgJiB0aHJlYWQgbW9kdWxlcyBhcyB3ZWxsIGFzIGJ5IGRlZmluaW5nCi1USFJFQURfU1RBQ0tfU0laRSB0byBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBpbiB0aGUgTWFrZWZpbGUgKHdoaWNoIGNvbnRhaW5zCi1hIGNvbW1lbnRlZCBvdXQgZGVmaW5pdGlvbiBmb3IgMTI4a0IgdGhyZWFkIHN0YWNrcykuICBJIGhhdmUgc2VlbgotcmVmZXJlbmNlcyB0byBoZWF2eSBab3BlL1Bsb25lIHVzYWdlIHJlcXVpcmluZyAxTUIgdGhyZWFkIHN0YWNrcyBvbgotRnJlZUJTRCBhbmQgTGludXgsIGJ1dCBkb3VidCB0aGF0IGZvciBtb3N0IGxpa2VseSB1c2FnZSBvbiBPUy8yIHRoYXQKLW1vcmUgdGhhbiAyNTZrQiBpcyBuZWNlc3NhcnkuICBUaGUgc2l6ZSBvZiB0aGUgcmVxdWlyZWQgc3RhY2tzIChtYWluIAotYW5kIHRocmVhZCkgY2FuIHZhcnkgc2lnbmlmaWNhbnRseSBkZXBlbmRpbmcgb24gd2hpY2ggdmVyc2lvbiBvZiBnY2MKLWlzIHVzZWQgYWxvbmcgd2l0aCB0aGUgY29tcGlsZXIgb3B0aW1pc2F0aW9ucyBzZWxlY3RlZC4gIE5vdGUgdGhhdCB0aGUKLW1haW4gdGhyZWFkIHN0YWNrIHNpemUgaXMgc2V0IGR1cmluZyBsaW5raW5nIGFuZCBpcyBjdXJyZW50bHkgMk1CLgotCi0uLi4gcHJvYmFibHkgb3RoZXIgaXNzdWVzIHRoYXQgSSd2ZSBub3QgZW5jb3VudGVyZWQsIG9yIGRvbid0IHJlbWVtYmVyIDotKAotCi1JZiB5b3UgZW5jb3VudGVyIG90aGVyIGRpZmZpY3VsdGllcyB3aXRoIHRoaXMgcG9ydCwgd2hpY2ggY2FuIGJlIAotY2hhcmFjdGVyaXNlZCBhcyBwZWN1bGlhciB0byB0aGlzIHBvcnQgcmF0aGVyIHRoYW4gdG8gdGhlIFB5dGhvbiByZWxlYXNlLAotSSB3b3VsZCBsaWtlIHRvIGhlYXIgYWJvdXQgdGhlbS4gIEhvd2V2ZXIgSSBjYW5ub3QgcHJvbWlzZSB0byBiZSBhYmxlIHRvIGRvIAotYW55dGhpbmcgdG8gcmVzb2x2ZSBzdWNoIHByb2JsZW1zLiAgU2VlIHRoZSBDb250YWN0IHNlY3Rpb24gYmVsb3cuLi4KLQotCi1UbyBkby4uLgotLS0tLS0tLS0KLQotSW4gbm8gcGFydGljdWxhciBvcmRlciBvZiBhcHBhcmVudCBpbXBvcnRhbmNlIG9yIGxpa2VsaWhvb2QuLi4KLQotLSBzdXBwb3J0IFRraW50ZXIgYW5kL29yIGFsdGVybmF0aXZlIEdVSSAod3hXaW5kb3dzPz8pCi0KLQotQ3JlZGl0cwotLS0tLS0tLQotCi1JbiBhZGRpdGlvbiB0byBwZW9wbGUgaWRlbnRpZmllZCBhYm92ZSwgSSdkIGxpa2UgdG8gdGhhbms6Ci0tIHRoZSBCREZMLCBHdWlkbyB2YW4gUm9zc3VtLCBhbmQgY3JldyBmb3IgUHl0aG9uOwotLSBEciBEYXZpZCBNZXJ0eiwgZm9yIHRyeWluZyBvdXQgYSBwcmUtcmVsZWFzZSBvZiB0aGlzIHBvcnQ7Ci0tIHRoZSBQeXRob24tbGlzdC9jb21wLmxhbmcucHl0aG9uIGNvbW11bml0eTsKLS0gSm9obiBQb2x0b3JhaywgZm9yIGlucHV0IGFib3V0IHB3ZC9ncnAuCi0KLUNvbnRhY3QKLS0tLS0tLS0KLQotQ29uc3RydWN0aXZlIGZlZWRiYWNrLCBuZWdhdGl2ZSBvciBwb3NpdGl2ZSwgYWJvdXQgdGhpcyBwb3J0IGlzIHdlbGNvbWUgCi1hbmQgc2hvdWxkIGJlIGFkZHJlc3NlZCB0byBtZSBhdCB0aGUgZS1tYWlsIGFkZHJlc3NlcyBiZWxvdy4KLQotSSBoYXZlIGEgcHJpdmF0ZSBtYWlsaW5nIGxpc3QgZm9yIGFubm91bmNlbWVudHMgb2YgZml4ZXMgJiB1cGRhdGVzIHRvIAotdGhpcyBwb3J0LiAgSWYgeW91IHdpc2ggdG8gcmVjZWl2ZSBzdWNoIGUtbWFpbCBhbm5vdW5jbWVudHMsIHBsZWFzZSBzZW5kIAotbWUgYW4gZS1tYWlsIHJlcXVlc3RpbmcgdGhhdCB5b3UgYmUgYWRkZWQgdG8gdGhpcyBsaXN0LgotCi1BbmRyZXcgTWFjSW50eXJlCi1FLW1haWw6IGFuZHltYWNAYnVsbHNleWUuYXBhbmEub3JnLmF1LCBvciBhbmR5bWFjQHBjdWcub3JnLmF1Ci1XZWI6ICAgIGh0dHA6Ly93d3cuYW5keW1hYy5vcmcvCi0KLTI4IEphbnVhcnksIDIwMDguCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvY29uZmlnLmMgYi9QQy9vczJlbXgvY29uZmlnLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NzkxMTAuLjAwMDAwMDAKLS0tIGEvUEMvb3MyZW14L2NvbmZpZy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8qIC0qLSBDIC0qLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQ29weXJpZ2h0IDE5OTEtMTk5NSBieSBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0sIEFtc3RlcmRhbSwKLVRoZSBOZXRoZXJsYW5kcy4KLQotICAgICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAotCi1QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKLWRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwKLXByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQKLWJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbgotc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZXMgb2YgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaAotQ2VudHJ1bSBvciBDV0kgb3IgQ29ycG9yYXRpb24gZm9yIE5hdGlvbmFsIFJlc2VhcmNoIEluaXRpYXRpdmVzIG9yCi1DTlJJIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCi1kaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKLXBlcm1pc3Npb24uCi0KLVdoaWxlIENXSSBpcyB0aGUgaW5pdGlhbCBzb3VyY2UgZm9yIHRoaXMgc29mdHdhcmUsIGEgbW9kaWZpZWQgdmVyc2lvbgotaXMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIENvcnBvcmF0aW9uIGZvciBOYXRpb25hbCBSZXNlYXJjaCBJbml0aWF0aXZlcwotKENOUkkpIGF0IHRoZSBJbnRlcm5ldCBhZGRyZXNzIGZ0cDovL2Z0cC5weXRob24ub3JnLgotCi1TVElDSFRJTkcgTUFUSEVNQVRJU0NIIENFTlRSVU0gQU5EIENOUkkgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSAotUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCi1NRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIFNUSUNIVElORyBNQVRIRU1BVElTQ0gKLUNFTlRSVU0gT1IgQ05SSSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMCi1EQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IKLVBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSCi1UT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCi1QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIE1vZHVsZSBjb25maWd1cmF0aW9uICovCi0KLS8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgdGFibGUgb2YgYnVpbHQtaW4gbW9kdWxlcy4KLSAgIFNlZSBpbml0X2J1aWx0aW4oKSBpbiBpbXBvcnQuYy4gKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotCi1leHRlcm4gdm9pZCBpbml0b3MyKCk7Ci1leHRlcm4gdm9pZCBpbml0c2lnbmFsKCk7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLWV4dGVybiB2b2lkIGluaXRfdGhyZWFkKCk7Ci0jZW5kaWYKLWV4dGVybiB2b2lkIGluaXRfY29kZWNzKCk7Ci1leHRlcm4gdm9pZCBpbml0X2NzdigpOwotZXh0ZXJuIHZvaWQgaW5pdF9sb2NhbGUoKTsKLWV4dGVybiB2b2lkIGluaXRfcmFuZG9tKCk7Ci1leHRlcm4gdm9pZCBpbml0X3NyZSgpOwotZXh0ZXJuIHZvaWQgaW5pdF9zeW10YWJsZSgpOwotZXh0ZXJuIHZvaWQgaW5pdF93ZWFrcmVmKCk7Ci1leHRlcm4gdm9pZCBpbml0YXJyYXkoKTsKLWV4dGVybiB2b2lkIGluaXRiaW5hc2NpaSgpOwotZXh0ZXJuIHZvaWQgaW5pdGNvbGxlY3Rpb25zKCk7Ci1leHRlcm4gdm9pZCBpbml0Y21hdGgoKTsKLWV4dGVybiB2b2lkIGluaXRkYXRldGltZSgpOwotZXh0ZXJuIHZvaWQgaW5pdGRsKCk7Ci1leHRlcm4gdm9pZCBpbml0ZXJybm8oKTsKLWV4dGVybiB2b2lkIGluaXRmY250bCgpOwotZXh0ZXJuIHZvaWQgaW5pdF9mdW5jdG9vbHMoKTsKLWV4dGVybiB2b2lkIGluaXRfaGVhcHEoKTsKLWV4dGVybiB2b2lkIGluaXRpbWFnZW9wKCk7Ci1leHRlcm4gdm9pZCBpbml0aXRlcnRvb2xzKCk7Ci1leHRlcm4gdm9pZCBpbml0bWF0aCgpOwotZXh0ZXJuIHZvaWQgaW5pdF9tZDUoKTsKLWV4dGVybiB2b2lkIGluaXRvcGVyYXRvcigpOwotZXh0ZXJuIHZvaWQgaW5pdF9zaGEoKTsKLWV4dGVybiB2b2lkIGluaXRfc2hhMjU2KCk7Ci1leHRlcm4gdm9pZCBpbml0X3NoYTUxMigpOwotZXh0ZXJuIHZvaWQgaW5pdF9zdHJ1Y3QoKTsKLWV4dGVybiB2b2lkIGluaXR0ZXJtaW9zKCk7Ci1leHRlcm4gdm9pZCBpbml0dGltZSgpOwotZXh0ZXJuIHZvaWQgaW5pdHh4c3VidHlwZSgpOwotZXh0ZXJuIHZvaWQgaW5pdHppcGltcG9ydCgpOwotI2lmICFIQVZFX0RZTkFNSUNfTE9BRElORwotZXh0ZXJuIHZvaWQgaW5pdF9jdXJzZXMoKTsKLWV4dGVybiB2b2lkIGluaXRfY3Vyc2VzX3BhbmVsKCk7Ci1leHRlcm4gdm9pZCBpbml0X3Rlc3RjYXBpKCk7Ci1leHRlcm4gdm9pZCBpbml0YnoyKCk7Ci1leHRlcm4gdm9pZCBpbml0ZnBlY3RsKCk7Ci1leHRlcm4gdm9pZCBpbml0ZnBldGVzdCgpOwotZXh0ZXJuIHZvaWQgaW5pdHBhcnNlcigpOwotZXh0ZXJuIHZvaWQgaW5pdHB3ZCgpOwotZXh0ZXJuIHZvaWQgaW5pdHVuaWNvZGVkYXRhKCk7Ci1leHRlcm4gdm9pZCBpbml0emxpYigpOwotI2lmZGVmIFVTRV9TT0NLRVQKLWV4dGVybiB2b2lkIGluaXRfc29ja2V0KCk7Ci1leHRlcm4gdm9pZCBpbml0c2VsZWN0KCk7Ci0jZW5kaWYKLSNlbmRpZgotLyogLS0gQURETU9EVUxFIE1BUktFUiAxIC0tICovCi0KLWV4dGVybiB2b2lkIFB5TWFyc2hhbF9Jbml0KCk7Ci1leHRlcm4gdm9pZCBpbml0aW1wKCk7Ci1leHRlcm4gdm9pZCBpbml0Z2MoKTsKLQotc3RydWN0IF9pbml0dGFiIF9QeUltcG9ydF9Jbml0dGFiW10gPSB7Ci0KLSAgICB7Im9zMiIsIGluaXRvczJ9LAotICAgIHsic2lnbmFsIiwgaW5pdHNpZ25hbH0sCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICB7Il90aHJlYWQiLCBpbml0X3RocmVhZH0sCi0jZW5kaWYKLSAgICB7Il9jb2RlY3MiLCBpbml0X2NvZGVjc30sCi0gICAgeyJfY3N2IiwgaW5pdF9jc3Z9LAotICAgIHsiX2xvY2FsZSIsIGluaXRfbG9jYWxlfSwKLSAgICB7Il9yYW5kb20iLCBpbml0X3JhbmRvbX0sCi0gICAgeyJfc3JlIiwgaW5pdF9zcmV9LAotICAgIHsiX3N5bXRhYmxlIiwgaW5pdF9zeW10YWJsZX0sCi0gICAgeyJfd2Vha3JlZiIsIGluaXRfd2Vha3JlZn0sCi0gICAgeyJhcnJheSIsIGluaXRhcnJheX0sCi0gICAgeyJiaW5hc2NpaSIsIGluaXRiaW5hc2NpaX0sCi0gICAgeyJjb2xsZWN0aW9ucyIsIGluaXRjb2xsZWN0aW9uc30sCi0gICAgeyJjbWF0aCIsIGluaXRjbWF0aH0sCi0gICAgeyJkYXRldGltZSIsIGluaXRkYXRldGltZX0sCi0gICAgeyJkbCIsIGluaXRkbH0sCi0gICAgeyJlcnJubyIsIGluaXRlcnJub30sCi0gICAgeyJmY250bCIsIGluaXRmY250bH0sCi0gICAgeyJfZnVuY3Rvb2xzIiwgaW5pdF9mdW5jdG9vbHN9LAotICAgIHsiX2hlYXBxIiwgaW5pdF9oZWFwcX0sCi0gICAgeyJpbWFnZW9wIiwgaW5pdGltYWdlb3B9LAotICAgIHsiaXRlcnRvb2xzIiwgaW5pdGl0ZXJ0b29sc30sCi0gICAgeyJtYXRoIiwgaW5pdG1hdGh9LAotICAgIHsib3BlcmF0b3IiLCBpbml0b3BlcmF0b3J9LAotICAgIHsiX3NoYTI1NiIsIGluaXRfc2hhMjU2fSwKLSAgICB7Il9zaGE1MTIiLCBpbml0X3NoYTUxMn0sCi0gICAgeyJfc3RydWN0IiwgaW5pdF9zdHJ1Y3R9LAotICAgIHsidGVybWlvcyIsIGluaXR0ZXJtaW9zfSwKLSAgICB7InRpbWUiLCBpbml0dGltZX0sCi0gICAgeyJ4eHN1YnR5cGUiLCBpbml0eHhzdWJ0eXBlfSwKLSAgICB7InppcGltcG9ydCIsIGluaXR6aXBpbXBvcnR9LAotI2lmICFIQVZFX0RZTkFNSUNfTE9BRElORwotICAgIHsiX2N1cnNlcyIsIGluaXRfY3Vyc2VzfSwKLSAgICB7Il9jdXJzZXNfcGFuZWwiLCBpbml0X2N1cnNlc19wYW5lbH0sCi0gICAgeyJfdGVzdGNhcGkiLCBpbml0X3Rlc3RjYXBpfSwKLSAgICB7ImJ6MiIsIGluaXRiejJ9LAotICAgIHsiZnBlY3RsIiwgaW5pdGZwZWN0bH0sCi0gICAgeyJmcGV0ZXN0IiwgaW5pdGZwZXRlc3R9LAotICAgIHsicGFyc2VyIiwgaW5pdHBhcnNlcn0sCi0gICAgeyJwd2QiLCBpbml0cHdkfSwKLSAgICB7InVuaWNvZGVkYXRhIiwgaW5pdHVuaWNvZGVkYXRhfSwKLSAgICB7InpsaWIiLCBpbml0emxpYn0sCi0jaWZkZWYgVVNFX1NPQ0tFVAotICAgIHsiX3NvY2tldCIsIGluaXRfc29ja2V0fSwKLSAgICB7InNlbGVjdCIsIGluaXRzZWxlY3R9LAotI2VuZGlmCi0jZW5kaWYKLS8qIC0tIEFERE1PRFVMRSBNQVJLRVIgMiAtLSAqLwotCi0gICAgLyogVGhpcyBtb2R1bGUgImxpdmVzIGluIiB3aXRoIG1hcnNoYWwuYyAqLwotICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwKLQotICAgIC8qIFRoaXMgbGl2ZXMgaXQgd2l0aCBpbXBvcnQuYyAqLwotICAgIHsiX2ltcCIsIGluaXRpbXB9LAotCi0gICAgLyogVGhlc2UgZW50cmllcyBhcmUgaGVyZSBmb3Igc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzICovCi0gICAgeyJidWlsdGlucyIsIE5VTEx9LAotICAgIHsic3lzIiwgTlVMTH0sCi0KLSAgICAvKiBUaGlzIGxpdmVzIGluIGdjbW9kdWxlLmMgKi8KLSAgICB7ImdjIiwgaW5pdGdjfSwKLQotICAgIC8qIFNlbnRpbmVsICovCi0gICAgezAsIDB9Ci19OwpkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L2RsZmNuLmMgYi9QQy9vczJlbXgvZGxmY24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJkYTljZC4uMDAwMDAwMAotLS0gYS9QQy9vczJlbXgvZGxmY24uYworKysgL2Rldi9udWxsCkBAIC0xLDIyMyArMCwwIEBACi0vKiAtKi0gQyAtKi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUNvcHlyaWdodCAxOTkxLTE5OTUgYnkgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaCBDZW50cnVtLCBBbXN0ZXJkYW0sCi1UaGUgTmV0aGVybGFuZHMuCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQKLQotUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCi1kb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCi1wcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0Ci1ib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4KLXN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWVzIG9mIFN0aWNodGluZyBNYXRoZW1hdGlzY2gKLUNlbnRydW0gb3IgQ1dJIG9yIENvcnBvcmF0aW9uIGZvciBOYXRpb25hbCBSZXNlYXJjaCBJbml0aWF0aXZlcyBvcgotQ05SSSBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0bwotZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCi1wZXJtaXNzaW9uLgotCi1XaGlsZSBDV0kgaXMgdGhlIGluaXRpYWwgc291cmNlIGZvciB0aGlzIHNvZnR3YXJlLCBhIG1vZGlmaWVkIHZlcnNpb24KLWlzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBDb3Jwb3JhdGlvbiBmb3IgTmF0aW9uYWwgUmVzZWFyY2ggSW5pdGlhdGl2ZXMKLShDTlJJKSBhdCB0aGUgSW50ZXJuZXQgYWRkcmVzcyBmdHA6Ly9mdHAucHl0aG9uLm9yZy4KLQotU1RJQ0hUSU5HIE1BVEhFTUFUSVNDSCBDRU5UUlVNIEFORCBDTlJJIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEgKLVJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgotTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBTVElDSFRJTkcgTUFUSEVNQVRJU0NICi1DRU5UUlVNIE9SIENOUkkgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTAotREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SCi1QUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgotVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgotUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyBkbG9wZW4oKSAtIFVuaXgtbGlrZSBkeW5hbWljIGxpbmtpbmcKLSAqIGVtdWxhdGlvbiBmdW5jdGlvbnMgZm9yIE9TLzIgdXNpbmcgRG9zTG9hZE1vZHVsZSgpIGFuZCBjb21wYW55LgotICovCi0KLSNkZWZpbmUgSU5DTF9ET1MKLSNkZWZpbmUgSU5DTF9ET1NFUlJPUlMKLSNkZWZpbmUgSU5DTF9ET1NTRVNNR1IKLSNkZWZpbmUgSU5DTF9XSU5QUk9HUkFNTElTVAotI2RlZmluZSBJTkNMX1dJTkZSQU1FTUdSCi0jaW5jbHVkZSA8b3MyLmg+Ci0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPG1hbGxvYy5oPgotCi10eXBlZGVmIHN0cnVjdCBfdHJhY2tfcmVjIHsKLSAgICBjaGFyICpuYW1lOwotICAgIEhNT0RVTEUgaGFuZGxlOwotICAgIHZvaWQgKmlkOwotICAgIHN0cnVjdCBfdHJhY2tfcmVjICpuZXh0OwotfSB0RExMY2hhaW4sICpETExjaGFpbjsKLQotc3RhdGljIERMTGNoYWluIGRsbG9hZCA9IE5VTEw7ICAvKiBBIHNpbXBsZSBjaGFpbmVkIGxpc3Qgb2YgRExMIG5hbWVzICovCi1zdGF0aWMgY2hhciBkbGVyciBbMjU2XTsgICAgICAgIC8qIGxhc3QgZXJyb3IgdGV4dCBzdHJpbmcgKi8KLXN0YXRpYyB2b2lkICpsYXN0X2lkOwotCi1zdGF0aWMgRExMY2hhaW4gZmluZF9pZCh2b2lkICppZCkKLXsKLSAgICBETExjaGFpbiB0bXA7Ci0KLSAgICBmb3IgKHRtcCA9IGRsbG9hZDsgdG1wOyB0bXAgPSB0bXAtPm5leHQpCi0gICAgICAgIGlmIChpZCA9PSB0bXAtPmlkKQotICAgICAgICAgICAgcmV0dXJuIHRtcDsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiBsb2FkIGEgZHluYW1pYy1saW5rIGxpYnJhcnkgYW5kIHJldHVybiBoYW5kbGUgKi8KLXZvaWQgKmRsb3BlbihjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzKQotewotICAgIEhNT0RVTEUgaG07Ci0gICAgRExMY2hhaW4gdG1wOwotICAgIGNoYXIgZXJyWzI1Nl07Ci0gICAgY2hhciAqZXJydHh0OwotICAgIGludCByYyA9IDAsIHNldF9jaGFpbiA9IDA7Ci0KLSAgICBmb3IgKHRtcCA9IGRsbG9hZDsgdG1wOyB0bXAgPSB0bXAtPm5leHQpCi0gICAgICAgIGlmIChzdHJuaWNtcCh0bXAtPm5hbWUsIGZpbGVuYW1lLCA5OTkpID09IDApCi0gICAgICAgICAgICBicmVhazsKLQotICAgIGlmICghdG1wKQotICAgIHsKLSAgICAgICAgdG1wID0gKERMTGNoYWluKSBtYWxsb2Moc2l6ZW9mKHRETExjaGFpbikpOwotICAgICAgICBpZiAoIXRtcCkKLSAgICAgICAgICAgIGdvdG8gbm9tZW07Ci0gICAgICAgIHRtcC0+bmFtZSA9IHN0cmR1cChmaWxlbmFtZSk7Ci0gICAgICAgIHRtcC0+bmV4dCA9IGRsbG9hZDsKLSAgICAgICAgc2V0X2NoYWluID0gMTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHJjID0gRG9zTG9hZE1vZHVsZSgoUFNaKSZlcnIsIHNpemVvZihlcnIpLCBmaWxlbmFtZSwgJmhtKSkKLSAgICB7Ci0gICAgICAgIGNhc2UgTk9fRVJST1I6Ci0gICAgICAgICAgICB0bXAtPmhhbmRsZSA9IGhtOwotICAgICAgICAgICAgaWYgKHNldF9jaGFpbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkbwotICAgICAgICAgICAgICAgICAgICBsYXN0X2lkKys7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKChsYXN0X2lkID09IDApIHx8IChmaW5kX2lkKGxhc3RfaWQpKSk7Ci0gICAgICAgICAgICAgICAgdG1wLT5pZCA9IGxhc3RfaWQ7Ci0gICAgICAgICAgICAgICAgZGxsb2FkID0gdG1wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRtcC0+aWQ7Ci0gICAgICAgIGNhc2UgRVJST1JfRklMRV9OT1RfRk9VTkQ6Ci0gICAgICAgIGNhc2UgRVJST1JfUEFUSF9OT1RfRk9VTkQ6Ci0gICAgICAgICAgICBlcnJ0eHQgPSAibW9kdWxlIGAlcycgbm90IGZvdW5kIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVSUk9SX1RPT19NQU5ZX09QRU5fRklMRVM6Ci0gICAgICAgIGNhc2UgRVJST1JfTk9UX0VOT1VHSF9NRU1PUlk6Ci0gICAgICAgIGNhc2UgRVJST1JfU0hBUklOR19CVUZGRVJfRVhDRUVERUQ6Ci1ub21lbToKLSAgICAgICAgICAgIGVycnR4dCA9ICJvdXQgb2Ygc3lzdGVtIHJlc291cmNlcyI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFUlJPUl9BQ0NFU1NfREVOSUVEOgotICAgICAgICAgICAgZXJydHh0ID0gImFjY2VzcyBkZW5pZWQiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVJST1JfQkFEX0ZPUk1BVDoKLSAgICAgICAgY2FzZSBFUlJPUl9JTlZBTElEX1NFR01FTlRfTlVNQkVSOgotICAgICAgICBjYXNlIEVSUk9SX0lOVkFMSURfT1JESU5BTDoKLSAgICAgICAgY2FzZSBFUlJPUl9JTlZBTElEX01PRFVMRVRZUEU6Ci0gICAgICAgIGNhc2UgRVJST1JfSU5WQUxJRF9FWEVfU0lHTkFUVVJFOgotICAgICAgICBjYXNlIEVSUk9SX0VYRV9NQVJLRURfSU5WQUxJRDoKLSAgICAgICAgY2FzZSBFUlJPUl9JVEVSQVRFRF9EQVRBX0VYQ0VFRFNfNjRLOgotICAgICAgICBjYXNlIEVSUk9SX0lOVkFMSURfTUlOQUxMT0NTSVpFOgotICAgICAgICBjYXNlIEVSUk9SX0lOVkFMSURfU0VHRFBMOgotICAgICAgICBjYXNlIEVSUk9SX0FVVE9EQVRBU0VHX0VYQ0VFRFNfNjRLOgotICAgICAgICBjYXNlIEVSUk9SX1JFTE9DU1JDX0NIQUlOX0VYQ0VFRFNfU0VHTElNSVQ6Ci0gICAgICAgICAgICBlcnJ0eHQgPSAiaW52YWxpZCBtb2R1bGUgZm9ybWF0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVSUk9SX0lOVkFMSURfTkFNRToKLSAgICAgICAgICAgIGVycnR4dCA9ICJmaWxlbmFtZSBkb2Vzbid0IG1hdGNoIG1vZHVsZSBuYW1lIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OOgotICAgICAgICBjYXNlIEVSUk9SX0xPQ0tfVklPTEFUSU9OOgotICAgICAgICAgICAgZXJydHh0ID0gInNoYXJpbmcgdmlvbGF0aW9uIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVSUk9SX0lOSVRfUk9VVElORV9GQUlMRUQ6Ci0gICAgICAgICAgICBlcnJ0eHQgPSAibW9kdWxlIGluaXRpYWxpemF0aW9uIGZhaWxlZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGVycnR4dCA9ICJjYXVzZSBgJXMnLCBlcnJvciBjb2RlID0gJWQiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHNucHJpbnRmKGRsZXJyLCBzaXplb2YoZGxlcnIpLCBlcnJ0eHQsICZlcnIsIHJjKTsKLSAgICBpZiAodG1wKQotICAgIHsKLSAgICAgICAgaWYgKHRtcC0+bmFtZSkKLSAgICAgICAgICAgIGZyZWUodG1wLT5uYW1lKTsKLSAgICAgICAgZnJlZSh0bXApOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgYHN5bWJvbCcgaW4gRExMICovCi12b2lkICpkbHN5bSh2b2lkICpoYW5kbGUsIGNoYXIgKnN5bWJvbCkKLXsKLSAgICBpbnQgcmMgPSAwOwotICAgIFBGTiBhZGRyOwotICAgIGNoYXIgKmVycnR4dDsKLSAgICBpbnQgc3ltb3JkID0gMDsKLSAgICBETExjaGFpbiB0bXAgPSBmaW5kX2lkKGhhbmRsZSk7Ci0KLSAgICBpZiAoIXRtcCkKLSAgICAgICAgZ290byBpbnZfaGFuZGxlOwotCi0gICAgaWYgKCpzeW1ib2wgPT0gJyMnKQotICAgICAgICBzeW1vcmQgPSBhdG9pKHN5bWJvbCArIDEpOwotCi0gICAgc3dpdGNoIChyYyA9IERvc1F1ZXJ5UHJvY0FkZHIodG1wLT5oYW5kbGUsIHN5bW9yZCwgc3ltYm9sLCAmYWRkcikpCi0gICAgewotICAgICAgICBjYXNlIE5PX0VSUk9SOgotICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYWRkcjsKLSAgICAgICAgY2FzZSBFUlJPUl9JTlZBTElEX0hBTkRMRToKLWludl9oYW5kbGU6Ci0gICAgICAgICAgICBlcnJ0eHQgPSAiaW52YWxpZCBtb2R1bGUgaGFuZGxlIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVSUk9SX1BST0NfTk9UX0ZPVU5EOgotICAgICAgICBjYXNlIEVSUk9SX0lOVkFMSURfTkFNRToKLSAgICAgICAgICAgIGVycnR4dCA9ICJubyBzeW1ib2wgYCVzJyBpbiBtb2R1bGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBlcnJ0eHQgPSAic3ltYm9sIGAlcycsIGVycm9yIGNvZGUgPSAlZCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgc25wcmludGYoZGxlcnIsIHNpemVvZihkbGVyciksIGVycnR4dCwgc3ltYm9sLCByYyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qIGZyZWUgZHluYW1pY2FsbHktbGlua2VkIGxpYnJhcnkgKi8KLWludCBkbGNsb3NlKHZvaWQgKmhhbmRsZSkKLXsKLSAgICBpbnQgcmM7Ci0gICAgRExMY2hhaW4gdG1wID0gZmluZF9pZChoYW5kbGUpOwotCi0gICAgaWYgKCF0bXApCi0gICAgICAgIGdvdG8gaW52X2hhbmRsZTsKLQotICAgIHN3aXRjaCAocmMgPSBEb3NGcmVlTW9kdWxlKHRtcC0+aGFuZGxlKSkKLSAgICB7Ci0gICAgICAgIGNhc2UgTk9fRVJST1I6Ci0gICAgICAgICAgICBmcmVlKHRtcC0+bmFtZSk7Ci0gICAgICAgICAgICBkbGxvYWQgPSB0bXAtPm5leHQ7Ci0gICAgICAgICAgICBmcmVlKHRtcCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY2FzZSBFUlJPUl9JTlZBTElEX0hBTkRMRToKLWludl9oYW5kbGU6Ci0gICAgICAgICAgICBzdHJjcHkoZGxlcnIsICJpbnZhbGlkIG1vZHVsZSBoYW5kbGUiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgY2FzZSBFUlJPUl9JTlZBTElEX0FDQ0VTUzoKLSAgICAgICAgICAgIHN0cmNweShkbGVyciwgImFjY2VzcyBkZW5pZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci19Ci0KLS8qIHJldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIGxhc3Qgb2NjdXJyZWQgZGwgZXJyb3IgKi8KLWNoYXIgKmRsZXJyb3IoKQotewotICAgIHJldHVybiBkbGVycjsKLX0KZGlmZiAtLWdpdCBhL1BDL29zMmVteC9kbGZjbi5oIGIvUEMvb3MyZW14L2RsZmNuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3M2FlNjkuLjAwMDAwMDAKLS0tIGEvUEMvb3MyZW14L2RsZmNuLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKiAtKi0gQyAtKi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUNvcHlyaWdodCAxOTkxLTE5OTUgYnkgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaCBDZW50cnVtLCBBbXN0ZXJkYW0sCi1UaGUgTmV0aGVybGFuZHMuCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQKLQotUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCi1kb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCi1wcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0Ci1ib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4KLXN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWVzIG9mIFN0aWNodGluZyBNYXRoZW1hdGlzY2gKLUNlbnRydW0gb3IgQ1dJIG9yIENvcnBvcmF0aW9uIGZvciBOYXRpb25hbCBSZXNlYXJjaCBJbml0aWF0aXZlcyBvcgotQ05SSSBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0bwotZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCi1wZXJtaXNzaW9uLgotCi1XaGlsZSBDV0kgaXMgdGhlIGluaXRpYWwgc291cmNlIGZvciB0aGlzIHNvZnR3YXJlLCBhIG1vZGlmaWVkIHZlcnNpb24KLWlzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBDb3Jwb3JhdGlvbiBmb3IgTmF0aW9uYWwgUmVzZWFyY2ggSW5pdGlhdGl2ZXMKLShDTlJJKSBhdCB0aGUgSW50ZXJuZXQgYWRkcmVzcyBmdHA6Ly9mdHAucHl0aG9uLm9yZy4KLQotU1RJQ0hUSU5HIE1BVEhFTUFUSVNDSCBDRU5UUlVNIEFORCBDTlJJIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEgKLVJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgotTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBTVElDSFRJTkcgTUFUSEVNQVRJU0NICi1DRU5UUlVNIE9SIENOUkkgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTAotREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SCi1QUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgotVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgotUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyBkbG9wZW4oKSAtIFVuaXgtbGlrZSBkeW5hbWljIGxpbmtpbmcKLSAqIGVtdWxhdGlvbiBmdW5jdGlvbnMgZm9yIE9TLzIgdXNpbmcgRG9zTG9hZE1vZHVsZSgpIGFuZCBjb21wYW55LgotICovCi0KLSNpZm5kZWYgX0RMRkNOX0gKLSNkZWZpbmUgX0RMRkNOX0gKLQotLyogbG9hZCBhIGR5bmFtaWMtbGluayBsaWJyYXJ5IGFuZCByZXR1cm4gaGFuZGxlICovCi12b2lkICpkbG9wZW4oY2hhciAqZmlsZW5hbWUsIGludCBmbGFncyk7Ci0KLS8qIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGBzeW1ib2wnIGluIERMTCAqLwotdm9pZCAqZGxzeW0odm9pZCAqaGFuZGxlLCBjaGFyICpzeW1ib2wpOwotCi0vKiBmcmVlIGR5bmFtaWNhbGx5LWxpbmtlZCBsaWJyYXJ5ICovCi1pbnQgZGxjbG9zZSh2b2lkICpoYW5kbGUpOwotCi0vKiByZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyBsYXN0IG9jY3VycmVkIGRsIGVycm9yICovCi1jaGFyICpkbGVycm9yKHZvaWQpOwotCi0jZW5kaWYgLyogIV9ETEZDTl9IICovCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvZGxsZW50cnkuYyBiL1BDL29zMmVteC9kbGxlbnRyeS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2NjYTFjLi4wMDAwMDAwCi0tLSBhL1BDL29zMmVteC9kbGxlbnRyeS5jCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIFRoaXMgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgUHl0aG9uIDIuMyBjb3JlIERMTC4KLSAqLwotCi0jZGVmaW5lIE5VTEwgMAotCi0jZGVmaW5lIFJFRihzKSAgZXh0ZXJuIHZvaWQgcygpOyB2b2lkICpfX19fcmVmXyMjcyA9ICZzOwotCi0vKiBNYWtlIHJlZmVyZW5jZXMgdG8gaW1wb3J0ZWQgc3ltYm9scyB0byBwdWxsIHRoZW0gZnJvbSBzdGF0aWMgbGlicmFyeSAqLwotUkVGKFB5X01haW4pOwotCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLWV4dGVybiBpbnQgX0NSVF9pbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgX0NSVF90ZXJtKHZvaWQpOwotZXh0ZXJuIHZvaWQgX19jdG9yZHRvckluaXQodm9pZCk7Ci1leHRlcm4gdm9pZCBfX2N0b3JkdG9yVGVybSh2b2lkKTsKLQotdW5zaWduZWQgbG9uZyBfRExMX0luaXRUZXJtKHVuc2lnbmVkIGxvbmcgbW9kX2hhbmRsZSwgdW5zaWduZWQgbG9uZyBmbGFnKQotewotICAgIHN3aXRjaCAoZmxhZykKLSAgICB7Ci0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGlmIChfQ1JUX2luaXQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIF9fY3RvcmR0b3JJbml0KCk7Ci0KLSAgICAgICAgICAgIC8qIElnbm9yZSBmYXRhbCBzaWduYWxzICovCi0gICAgICAgICAgICBzaWduYWwoU0lHU0VHViwgU0lHX0lHTik7Ci0gICAgICAgICAgICBzaWduYWwoU0lHRlBFLCBTSUdfSUdOKTsKLQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgX19jdG9yZHRvclRlcm0oKTsKLSAgICAgICAgICAgIF9DUlRfdGVybSgpOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1BDL29zMmVteC9nZXRwYXRocC5jIGIvUEMvb3MyZW14L2dldHBhdGhwLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNzM3NzQuLjAwMDAwMDAKLS0tIGEvUEMvb3MyZW14L2dldHBhdGhwLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MTggKzAsMCBAQAotCi0vKiBSZXR1cm4gdGhlIGluaXRpYWwgbW9kdWxlIHNlYXJjaCBwYXRoLiAqLwotLyogVGhpcyB2ZXJzaW9uIHVzZWQgYnkgT1MvMitFTVggKi8KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgUEFUSCBSVUxFUyBGT1IgT1MvMitFTVg6Ci0gICBUaGlzIGRlc2NyaWJlcyBob3cgc3lzLnBhdGggaXMgZm9ybWVkIG9uIE9TLzIrRU1YLiAgSXQgZGVzY3JpYmVzIHRoZQotICAgZnVuY3Rpb25hbGl0eSwgbm90IHRoZSBpbXBsZW1lbnRhdGlvbiAoaWUsIHRoZSBvcmRlciBpbiB3aGljaCB0aGVzZQotICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KQotCi0gICAqIFB5dGhvbiBhbHdheXMgYWRkcyBhbiBlbXB0eSBlbnRyeSBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzCi0gICAgIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLQotICAgKiBJZiB0aGUgUFlUSE9OUEFUSCBlbnYuIHZhci4gZXhpc3RzLCBpdHMgZW50cmllcyBhcmUgYWRkZWQgbmV4dC4KLQotICAgKiBXZSBhdHRlbXB0IHRvIGxvY2F0ZSB0aGUgIlB5dGhvbiBIb21lIiAtIGlmIHRoZSBQWVRIT05IT01FIGVudiB2YXIKLSAgICAgaXMgc2V0LCB3ZSBiZWxpZXZlIGl0LiAgT3RoZXJ3aXNlLCB3ZSB1c2UgdGhlIHBhdGggb2Ygb3VyIGhvc3QgLkVYRSdzCi0gICAgIHRvIHRyeSBhbmQgbG9jYXRlIG91ciAibGFuZG1hcmsiIChsaWJcXG9zLnB5KSBhbmQgZGVkdWNlIG91ciBob21lLgotICAgICAtIElmIHdlIERPIGhhdmUgYSBQeXRob24gSG9tZTogVGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyAoTGliLAotICAgICAgIHBsYXQtd2luLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKLSAgICAgLSBJZiB3ZSBETyBOT1QgaGF2ZSBhIFB5dGhvbiBIb21lLCB0aGUgY29yZSBQeXRob24gUGF0aCBpcwotICAgICAgIGxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS4gIFRoaXMgaXMgdGhlIG1haW4gUHl0aG9uUGF0aCBrZXksCi0gICAgICAgYW5kIGJvdGggSEtMTSBhbmQgSEtDVSBhcmUgY29tYmluZWQgdG8gZm9ybSB0aGUgcGF0aCkKLQotICAgKiBJZmYgLSB3ZSBjYW4gbm90IGxvY2F0ZSB0aGUgUHl0aG9uIEhvbWUsIGFuZCBoYXZlIG5vdCBoYWQgYSBQWVRIT05QQVRICi0gICAgIHNwZWNpZmllZCAoaWUsIHdlIGhhdmUgX25vdGhpbmdfIHdlIGNhbiBhc3N1bWUgaXMgYSBnb29kIHBhdGgpLCBhCi0gICAgIGRlZmF1bHQgcGF0aCB3aXRoIHJlbGF0aXZlIGVudHJpZXMgaXMgdXNlZCAoZWcuIC5cTGliOy5ccGxhdC13aW4sIGV0YykKLQotCi0gIFRoZSBlbmQgcmVzdWx0IG9mIGFsbCB0aGlzIGlzOgotICAqIFdoZW4gcnVubmluZyBweXRob24uZXhlLCBvciBhbnkgb3RoZXIgLmV4ZSBpbiB0aGUgbWFpbiBQeXRob24gZGlyZWN0b3J5Ci0gICAgKGVpdGhlciBhbiBpbnN0YWxsZWQgdmVyc2lvbiwgb3IgZGlyZWN0bHkgZnJvbSB0aGUgUENidWlsZCBkaXJlY3RvcnkpLAotICAgIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZC4KLQotICAqIFdoZW4gUHl0aG9uIGlzIGhvc3RlZCBpbiBhbm90aGVyIGV4ZSAoZGlmZmVyZW50IGRpcmVjdG9yeSwgZW1iZWRkZWQgdmlhCi0gICAgQ09NLCBldGMpLCB0aGUgUHl0aG9uIEhvbWUgd2lsbCBub3QgYmUgZGVkdWNlZCwgc28gdGhlIGNvcmUgcGF0aCBmcm9tCi0gICAgdGhlIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMgImluIHRoZSByZWdpc3RyeSBhcmUKLSAgICBhbHdheXMgcmVhZC4KLQotICAqIElmIFB5dGhvbiBjYW4ndCBmaW5kIGl0cyBob21lIGFuZCB0aGVyZSBpcyBubyByZWdpc3RyeSAoZWcsIGZyb3plbgotICAgIGV4ZSwgc29tZSB2ZXJ5IHN0cmFuZ2UgaW5zdGFsbGF0aW9uIHNldHVwKSB5b3UgZ2V0IGEgcGF0aCB3aXRoCi0gICAgc29tZSBkZWZhdWx0LCBidXQgcmVsYXRpdmUsIHBhdGhzLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIm9zZGVmcy5oIgotCi0jaWZuZGVmIFBZT1NfT1MyCi0jZXJyb3IgVGhpcyBmaWxlIG9ubHkgY29tcGlsYWJsZSBvbiBPUy8yCi0jZW5kaWYKLQotI2RlZmluZSBJTkNMX0RPUwotI2luY2x1ZGUgPG9zMi5oPgotCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2lmIEhBVkVfVU5JU1REX0gKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZiAvKiBIQVZFX1VOSVNURF9IICovCi0KLS8qIFNlYXJjaCBpbiBzb21lIGNvbW1vbiBsb2NhdGlvbnMgZm9yIHRoZSBhc3NvY2lhdGVkIFB5dGhvbiBsaWJyYXJpZXMuCi0gKgotICogUHlfR2V0UGF0aCgpIHRyaWVzIHRvIHJldHVybiBhIHNlbnNpYmxlIFB5dGhvbiBtb2R1bGUgc2VhcmNoIHBhdGguCi0gKgotICogVGhlIGFwcHJvYWNoIGlzIGFuIGFkYXB0YXRpb24gZm9yIFdpbmRvd3Mgb2YgdGhlIHN0cmF0ZWd5IHVzZWQgaW4KLSAqIC4uL01vZHVsZXMvZ2V0cGF0aC5jOyBpdCB1c2VzIHRoZSBXaW5kb3dzIFJlZ2lzdHJ5IGFzIG9uZSBvZiBpdHMKLSAqIGluZm9ybWF0aW9uIHNvdXJjZXMuCi0gKi8KLQotI2lmbmRlZiBMQU5ETUFSSwotI2lmIGRlZmluZWQoUFlDQ19HQ0MpCi0jZGVmaW5lIExBTkRNQVJLICJsaWIvb3MucHkiCi0jZWxzZQotI2RlZmluZSBMQU5ETUFSSyAibGliXFxvcy5weSIKLSNlbmRpZgotI2VuZGlmCi0KLXN0YXRpYyBjaGFyIHByZWZpeFtNQVhQQVRITEVOKzFdOwotc3RhdGljIGNoYXIgcHJvZ3BhdGhbTUFYUEFUSExFTisxXTsKLXN0YXRpYyBjaGFyICptb2R1bGVfc2VhcmNoX3BhdGggPSBOVUxMOwotCi0KLXN0YXRpYyBpbnQKLWlzX3NlcChjaGFyIGNoKSAvKiBkZXRlcm1pbmUgaWYgImNoIiBpcyBhIHNlcGFyYXRvciBjaGFyYWN0ZXIgKi8KLXsKLSNpZmRlZiBBTFRTRVAKLSAgICByZXR1cm4gY2ggPT0gU0VQIHx8IGNoID09IEFMVFNFUDsKLSNlbHNlCi0gICAgcmV0dXJuIGNoID09IFNFUDsKLSNlbmRpZgotfQotCi0vKiBhc3N1bWVzICdkaXInIG51bGwgdGVybWluYXRlZCBpbiBib3VuZHMuCi0gKiBOZXZlciB3cml0ZXMgYmV5b25kIGV4aXN0aW5nIHRlcm1pbmF0b3IuCi0gKi8KLXN0YXRpYyB2b2lkCi1yZWR1Y2UoY2hhciAqZGlyKQotewotICAgIHNpemVfdCBpID0gc3RybGVuKGRpcik7Ci0gICAgd2hpbGUgKGkgPiAwICYmICFpc19zZXAoZGlyW2ldKSkKLSAgICAgICAgLS1pOwotICAgIGRpcltpXSA9ICdcMCc7Ci19Ci0KLXN0YXRpYyBpbnQKLWV4aXN0cyhjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBzdHJ1Y3Qgc3RhdCBidWY7Ci0gICAgcmV0dXJuIHN0YXQoZmlsZW5hbWUsICZidWYpID09IDA7Ci19Ci0KLS8qIElzIG1vZHVsZSAgKGNoZWNrIGZvciAucHljLy5weW8gdG9vKQotICogQXNzdW1lcyAnZmlsZW5hbWUnIE1BWFBBVEhMRU4rMSBieXRlcyBsb25nIC0KLSAqIG1heSBleHRlbmQgJ2ZpbGVuYW1lJyBieSBvbmUgY2hhcmFjdGVyLgotICovCi1zdGF0aWMgaW50Ci1pc21vZHVsZShjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAvKiBDaGVjayBmb3IgdGhlIGNvbXBpbGVkIHZlcnNpb24gb2YgcHJlZml4LiAqLwotICAgIGlmIChzdHJsZW4oZmlsZW5hbWUpIDwgTUFYUEFUSExFTikgewotICAgICAgICBzdHJjYXQoZmlsZW5hbWUsIFB5X09wdGltaXplRmxhZyA/ICJvIiA6ICJjIik7Ci0gICAgICAgIGlmIChleGlzdHMoZmlsZW5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0vKiBBZGQgYSBwYXRoIGNvbXBvbmVudCwgYnkgYXBwZW5kaW5nIHN0dWZmIHRvIGJ1ZmZlci4KLSAgIGJ1ZmZlciBtdXN0IGhhdmUgYXQgbGVhc3QgTUFYUEFUSExFTiArIDEgYnl0ZXMgYWxsb2NhdGVkLCBhbmQgY29udGFpbiBhCi0gICBOVUwtdGVybWluYXRlZCBzdHJpbmcgd2l0aCBubyBtb3JlIHRoYW4gTUFYUEFUSExFTiBjaGFyYWN0ZXJzIChub3QgY291bnRpbmcKLSAgIHRoZSB0cmFpbGluZyBOVUwpLiAgSXQncyBhIGZhdGFsIGVycm9yIGlmIGl0IGNvbnRhaW5zIGEgc3RyaW5nIGxvbmdlciB0aGFuCi0gICB0aGF0IChjYWxsZXJzIG11c3QgYmUgY2FyZWZ1bCEpLiAgSWYgdGhlc2UgcmVxdWlyZW1lbnRzIGFyZSBtZXQsIGl0J3MKLSAgIGd1YXJhbnRlZWQgdGhhdCBidWZmZXIgd2lsbCBzdGlsbCBiZSBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyB3aXRoIG5vIG1vcmUKLSAgIHRoYW4gTUFYUEFUSExFTiBjaGFyYWN0ZXJzIGF0IGV4aXQuICBJZiBzdHVmZiBpcyB0b28gbG9uZywgb25seSBhcyBtdWNoIG9mCi0gICBzdHVmZiBhcyBmaXRzIHdpbGwgYmUgYXBwZW5kZWQuCi0qLwotCi1zdGF0aWMgdm9pZAotam9pbihjaGFyICpidWZmZXIsIGNoYXIgKnN0dWZmKQotewotICAgIHNpemVfdCBuLCBrOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgbiA9IHN0cmxlbihidWZmZXIpOwotICAgICAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbi0xXSkgJiYgbiA8IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBidWZmZXJbbisrXSA9IFNFUDsKLSAgICB9Ci0gICAgaWYgKG4gPiBNQVhQQVRITEVOKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW5wYXRoKCkiKTsKLSAgICBrID0gc3RybGVuKHN0dWZmKTsKLSAgICBpZiAobiArIGsgPiBNQVhQQVRITEVOKQotICAgICAgICBrID0gTUFYUEFUSExFTiAtIG47Ci0gICAgc3RybmNweShidWZmZXIrbiwgc3R1ZmYsIGspOwotICAgIGJ1ZmZlcltuK2tdID0gJ1wwJzsKLX0KLQotLyogZ290bGFuZG1hcmsgb25seSBjYWxsZWQgYnkgc2VhcmNoX2Zvcl9wcmVmaXgsIHdoaWNoIGVuc3VyZXMKLSAqICdwcmVmaXgnIGlzIG51bGwgdGVybWluYXRlZCBpbiBib3VuZHMuICBqb2luKCkgZW5zdXJlcwotICogJ2xhbmRtYXJrJyBjYW4gbm90IG92ZXJmbG93IHByZWZpeCBpZiB0b28gbG9uZy4KLSAqLwotc3RhdGljIGludAotZ290bGFuZG1hcmsoY2hhciAqbGFuZG1hcmspCi17Ci0gICAgaW50IG4sIG9rOwotCi0gICAgbiA9IHN0cmxlbihwcmVmaXgpOwotICAgIGpvaW4ocHJlZml4LCBsYW5kbWFyayk7Ci0gICAgb2sgPSBpc21vZHVsZShwcmVmaXgpOwotICAgIHByZWZpeFtuXSA9ICdcMCc7Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiBhc3N1bWVzIGFyZ3YwX3BhdGggaXMgTUFYUEFUSExFTisxIGJ5dGVzIGxvbmcsIGFscmVhZHkgXDAgdGVybSdkLgotICogYXNzdW1wdGlvbiBwcm92aWRlZCBieSBvbmx5IGNhbGxlciwgY2FsY3VsYXRlX3BhdGgoKQotICovCi1zdGF0aWMgaW50Ci1zZWFyY2hfZm9yX3ByZWZpeChjaGFyICphcmd2MF9wYXRoLCBjaGFyICpsYW5kbWFyaykKLXsKLSAgICAvKiBTZWFyY2ggZnJvbSBhcmd2MF9wYXRoLCB1bnRpbCBsYW5kbWFyayBpcyBmb3VuZCAqLwotICAgIHN0cmNweShwcmVmaXgsIGFyZ3YwX3BhdGgpOwotICAgIGRvIHsKLSAgICAgICAgaWYgKGdvdGxhbmRtYXJrKGxhbmRtYXJrKSkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICByZWR1Y2UocHJlZml4KTsKLSAgICB9IHdoaWxlIChwcmVmaXhbMF0pOwotICAgIHJldHVybiAwOwotfQotCi0KLXN0YXRpYyB2b2lkCi1nZXRfcHJvZ3BhdGgodm9pZCkKLXsKLSAgICBleHRlcm4gY2hhciAqUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7Ci0gICAgY2hhciAqcGF0aCA9IGdldGVudigiUEFUSCIpOwotICAgIGNoYXIgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwotCi0gICAgUFBJQiBwaWI7Ci0gICAgaWYgKChEb3NHZXRJbmZvQmxvY2tzKE5VTEwsICZwaWIpID09IDApICYmCi0gICAgICAgIChEb3NRdWVyeU1vZHVsZU5hbWUocGliLT5waWJfaG10ZSwgc2l6ZW9mKHByb2dwYXRoKSwgcHJvZ3BhdGgpID09IDApKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocHJvZyA9PSBOVUxMIHx8ICpwcm9nID09ICdcMCcpCi0gICAgICAgIHByb2cgPSAicHl0aG9uIjsKLQotICAgIC8qIElmIHRoZXJlIGlzIG5vIHNsYXNoIGluIHRoZSBhcmd2MCBwYXRoLCB0aGVuIHdlIGhhdmUgdG8KLSAgICAgKiBhc3N1bWUgcHl0aG9uIGlzIG9uIHRoZSB1c2VyJ3MgJFBBVEgsIHNpbmNlIHRoZXJlJ3Mgbm8KLSAgICAgKiBvdGhlciB3YXkgdG8gZmluZCBhIGRpcmVjdG9yeSB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uICBJZgotICAgICAqICRQQVRIIGlzbid0IGV4cG9ydGVkLCB5b3UgbG9zZS4KLSAgICAgKi8KLSNpZmRlZiBBTFRTRVAKLSAgICBpZiAoc3RyY2hyKHByb2csIFNFUCkgfHwgc3RyY2hyKHByb2csIEFMVFNFUCkpCi0jZWxzZQotICAgIGlmIChzdHJjaHIocHJvZywgU0VQKSkKLSNlbmRpZgotICAgICAgICBzdHJuY3B5KHByb2dwYXRoLCBwcm9nLCBNQVhQQVRITEVOKTsKLSAgICBlbHNlIGlmIChwYXRoKSB7Ci0gICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBjaGFyICpkZWxpbSA9IHN0cmNocihwYXRoLCBERUxJTSk7Ci0KLSAgICAgICAgICAgIGlmIChkZWxpbSkgewotICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBkZWxpbSAtIHBhdGg7Ci0gICAgICAgICAgICAgICAgLyogZW5zdXJlIHdlIGNhbid0IG92ZXJ3cml0ZSBidWZmZXIgKi8KLSNpZiAhZGVmaW5lZChQWUNDX0dDQykKLSAgICAgICAgICAgICAgICBsZW4gPSBtaW4oTUFYUEFUSExFTixsZW4pOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBsZW4gPSBNQVhQQVRITEVOIDwgbGVuID8gTUFYUEFUSExFTiA6IGxlbjsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHN0cm5jcHkocHJvZ3BhdGgsIHBhdGgsIGxlbik7Ci0gICAgICAgICAgICAgICAgKihwcm9ncGF0aCArIGxlbikgPSAnXDAnOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0cm5jcHkocHJvZ3BhdGgsIHBhdGgsIE1BWFBBVEhMRU4pOwotCi0gICAgICAgICAgICAvKiBqb2luKCkgaXMgc2FmZSBmb3IgTUFYUEFUSExFTisxIHNpemUgYnVmZmVyICovCi0gICAgICAgICAgICBqb2luKHByb2dwYXRoLCBwcm9nKTsKLSAgICAgICAgICAgIGlmIChleGlzdHMocHJvZ3BhdGgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBpZiAoIWRlbGltKSB7Ci0gICAgICAgICAgICAgICAgcHJvZ3BhdGhbMF0gPSAnXDAnOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcGF0aCA9IGRlbGltICsgMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHByb2dwYXRoWzBdID0gJ1wwJzsKLX0KLQotc3RhdGljIHZvaWQKLWNhbGN1bGF0ZV9wYXRoKHZvaWQpCi17Ci0gICAgY2hhciBhcmd2MF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgY2hhciAqYnVmOwotICAgIHNpemVfdCBidWZzejsKLSAgICBjaGFyICpweXRob25ob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwotICAgIGNoYXIgKmVudnBhdGggPSBnZXRlbnYoIlBZVEhPTlBBVEgiKTsKLSAgICBjaGFyIHppcF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgc2l6ZV90IGxlbjsKLQotICAgIGdldF9wcm9ncGF0aCgpOwotICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCi0gICAgc3RyY3B5KGFyZ3YwX3BhdGgsIHByb2dwYXRoKTsKLSAgICByZWR1Y2UoYXJndjBfcGF0aCk7Ci0gICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCB8fCAqcHl0aG9uaG9tZSA9PSAnXDAnKSB7Ci0gICAgICAgIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCi0gICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBweXRob25ob21lID0gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBzdHJuY3B5KHByZWZpeCwgcHl0aG9uaG9tZSwgTUFYUEFUSExFTik7Ci0KLSAgICBpZiAoZW52cGF0aCAmJiAqZW52cGF0aCA9PSAnXDAnKQotICAgICAgICBlbnZwYXRoID0gTlVMTDsKLQotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoICovCi0gICAgc3RybmNweSh6aXBfcGF0aCwgcHJvZ3BhdGgsIE1BWFBBVEhMRU4pOwotICAgIHppcF9wYXRoW01BWFBBVEhMRU5dID0gJ1wwJzsKLSAgICBsZW4gPSBzdHJsZW4oemlwX3BhdGgpOwotICAgIGlmIChsZW4gPiA0KSB7Ci0gICAgICAgIHppcF9wYXRoW2xlbi0zXSA9ICd6JzsgIC8qIGNoYW5nZSBlbmRpbmcgdG8gInppcCIgKi8KLSAgICAgICAgemlwX3BhdGhbbGVuLTJdID0gJ2knOwotICAgICAgICB6aXBfcGF0aFtsZW4tMV0gPSAncCc7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICB6aXBfcGF0aFswXSA9IDA7Ci0gICAgfQotCi0gICAgLyogV2UgbmVlZCB0byBjb25zdHJ1Y3QgYSBwYXRoIGZyb20gdGhlIGZvbGxvd2luZyBwYXJ0cy4KLSAgICAgKiAoMSkgdGhlIFBZVEhPTlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUsIGlmIHNldDsKLSAgICAgKiAoMikgdGhlIHppcCBhcmNoaXZlIGZpbGUgcGF0aDsKLSAgICAgKiAoMykgdGhlIFBZVEhPTlBBVEggY29uZmlnIG1hY3JvLCB3aXRoIHRoZSBsZWFkaW5nICIuIgotICAgICAqICAgICBvZiBlYWNoIGNvbXBvbmVudCByZXBsYWNlZCB3aXRoIHB5dGhvbmhvbWUsIGlmIHNldDsKLSAgICAgKiAoNCkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIChhcmd2MF9wYXRoKS4KLSAgICAgKiBUaGUgbGVuZ3RoIGNhbGN1bGF0aW9uIGNhbGN1bGF0ZXMgIzMgZmlyc3QuCi0gICAgICovCi0KLSAgICAvKiBDYWxjdWxhdGUgc2l6ZSBvZiByZXR1cm4gYnVmZmVyICovCi0gICAgaWYgKHB5dGhvbmhvbWUgIT0gTlVMTCkgewotICAgICAgICBjaGFyICpwOwotICAgICAgICBidWZzeiA9IDE7Ci0gICAgICAgIGZvciAocCA9IFBZVEhPTlBBVEg7ICpwOyBwKyspIHsKLSAgICAgICAgICAgIGlmICgqcCA9PSBERUxJTSkKLSAgICAgICAgICAgICAgICBidWZzeisrOyAvKiBudW1iZXIgb2YgREVMSU0gcGx1cyBvbmUgKi8KLSAgICAgICAgfQotICAgICAgICBidWZzeiAqPSBzdHJsZW4ocHl0aG9uaG9tZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgYnVmc3ogPSAwOwotICAgIGJ1ZnN6ICs9IHN0cmxlbihQWVRIT05QQVRIKSArIDE7Ci0gICAgYnVmc3ogKz0gc3RybGVuKGFyZ3YwX3BhdGgpICsgMTsKLSAgICBidWZzeiArPSBzdHJsZW4oemlwX3BhdGgpICsgMTsKLSAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQotICAgICAgICBidWZzeiArPSBzdHJsZW4oZW52cGF0aCkgKyAxOwotCi0gICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmID0gbWFsbG9jKGJ1ZnN6KTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgLyogV2UgY2FuJ3QgZXhpdCwgc28gcHJpbnQgYSB3YXJuaW5nIGFuZCBsaW1wIGFsb25nICovCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgbWFsbG9jIGR5bmFtaWMgUFlUSE9OUEFUSC5cbiIpOwotICAgICAgICBpZiAoZW52cGF0aCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2luZyBlbnZpcm9ubWVudCAkUFlUSE9OUEFUSC5cbiIpOwotICAgICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gZW52cGF0aDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVXNpbmcgZGVmYXVsdCBzdGF0aWMgcGF0aC5cbiIpOwotICAgICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gUFlUSE9OUEFUSDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGVudnBhdGgpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgZW52cGF0aCk7Ci0gICAgICAgIGJ1ZiA9IHN0cmNocihidWYsICdcMCcpOwotICAgICAgICAqYnVmKysgPSBERUxJTTsKLSAgICB9Ci0gICAgaWYgKHppcF9wYXRoWzBdKSB7Ci0gICAgICAgIHN0cmNweShidWYsIHppcF9wYXRoKTsKLSAgICAgICAgYnVmID0gc3RyY2hyKGJ1ZiwgJ1wwJyk7Ci0gICAgICAgICpidWYrKyA9IERFTElNOwotICAgIH0KLQotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHN0cmNocihidWYsICdcMCcpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciAqcCA9IFBZVEhPTlBBVEg7Ci0gICAgICAgIGNoYXIgKnE7Ci0gICAgICAgIHNpemVfdCBuOwotICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBxID0gc3RyY2hyKHAsIERFTElNKTsKLSAgICAgICAgICAgIGlmIChxID09IE5VTEwpCi0gICAgICAgICAgICAgICAgbiA9IHN0cmxlbihwKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuID0gcS1wOwotICAgICAgICAgICAgaWYgKHBbMF0gPT0gJy4nICYmIGlzX3NlcChwWzFdKSkgewotICAgICAgICAgICAgICAgIHN0cmNweShidWYsIHB5dGhvbmhvbWUpOwotICAgICAgICAgICAgICAgIGJ1ZiA9IHN0cmNocihidWYsICdcMCcpOwotICAgICAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAgICBuLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJuY3B5KGJ1ZiwgcCwgbik7Ci0gICAgICAgICAgICBidWYgKz0gbjsKLSAgICAgICAgICAgIGlmIChxID09IE5VTEwpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKLSAgICAgICAgICAgIHAgPSBxKzE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGFyZ3YwX3BhdGgpIHsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgICAgIHN0cmNweShidWYsIGFyZ3YwX3BhdGgpOwotICAgICAgICBidWYgPSBzdHJjaHIoYnVmLCAnXDAnKTsKLSAgICB9Ci0gICAgKmJ1ZiA9ICdcMCc7Ci19Ci0KLQotLyogRXh0ZXJuYWwgaW50ZXJmYWNlICovCi0KLWNoYXIgKgotUHlfR2V0UGF0aCh2b2lkKQotewotICAgIGlmICghbW9kdWxlX3NlYXJjaF9wYXRoKQotICAgICAgICBjYWxjdWxhdGVfcGF0aCgpOwotICAgIHJldHVybiBtb2R1bGVfc2VhcmNoX3BhdGg7Ci19Ci0KLWNoYXIgKgotUHlfR2V0UHJlZml4KHZvaWQpCi17Ci0gICAgaWYgKCFtb2R1bGVfc2VhcmNoX3BhdGgpCi0gICAgICAgIGNhbGN1bGF0ZV9wYXRoKCk7Ci0gICAgcmV0dXJuIHByZWZpeDsKLX0KLQotY2hhciAqCi1QeV9HZXRFeGVjUHJlZml4KHZvaWQpCi17Ci0gICAgcmV0dXJuIFB5X0dldFByZWZpeCgpOwotfQotCi1jaGFyICoKLVB5X0dldFByb2dyYW1GdWxsUGF0aCh2b2lkKQotewotICAgIGlmICghbW9kdWxlX3NlYXJjaF9wYXRoKQotICAgICAgICBjYWxjdWxhdGVfcGF0aCgpOwotICAgIHJldHVybiBwcm9ncGF0aDsKLX0KZGlmZiAtLWdpdCBhL1BDL29zMmVteC9weWNvbmZpZy5oIGIvUEMvb3MyZW14L3B5Y29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NjEwNWEuLjAwMDAwMDAKLS0tIGEvUEMvb3MyZW14L3B5Y29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMzIgKzAsMCBAQAotI2lmbmRlZiBQeV9DT05GSUdfSAotI2RlZmluZSBQeV9DT05GSUdfSAotCi0jZXJyb3IgIlBFUCAxMTogT1MvMiBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCi0KLS8qIGNvbmZpZy5oLgotICogQXQgc29tZSB0aW1lIGluIHRoZSBwYXN0LCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieS9mcm9tIGNvbmZpZ3VyZS4KLSAqIG5vdyBtYWludGFpbmVkIG1hbnVhbGx5LgotICovCi0KLS8qIGJ1aWxkIGVudmlyb25tZW50ICovCi0jZGVmaW5lIFBMQVRGT1JNCSJvczJlbXgiCi0jZGVmaW5lIENPTVBJTEVSCSJbRU1YIEdDQyAiIF9fVkVSU0lPTl9fICJdIgotI2RlZmluZSBQWU9TX09TMgkxCi0jZGVmaW5lIFBZQ0NfR0NDCTEKLQotLyogZGVmYXVsdCBsb2NhdGlvbihzKSAqLwotI2lmbmRlZiBQUkVGSVgKLSNkZWZpbmUgUFJFRklYCQkiIgotI2VuZGlmCi0jaWZuZGVmIFBZVEhPTlBBVEgKLSNkZWZpbmUgUFlUSE9OUEFUSAkiLi9MaWI7Li9MaWIvcGxhdC0iIFBMQVRGT1JNIFwKLQkJCSI7Li9MaWIvbGliLWR5bmxvYWQ7Li9MaWIvc2l0ZS1wYWNrYWdlcyIKLSNlbmRpZgotCi0vKiBEZWJ1Z2dpbmcgKi8KLSNpZm5kZWYgUHlfREVCVUcKLS8qI2RlZmluZSBQeV9ERUJVRyAxKi8KLSNlbmRpZgotCi0vKiBpZiBidWlsZGluZyBhbiBleHRlbnNpb24gb3Igd3JhcHBlciBleGVjdXRhYmxlLAotICogbWFyayBQeXRob24gQVBJIHN5bWJvbHMgImV4dGVybiIgc28gdGhhdCBzeW1ib2xzCi0gKiBpbXBvcnRlZCBmcm9tIHRoZSBQeXRob24gY29yZSBETEwgYXJlbid0IGR1cGxpY2F0ZWQuCi0gKi8KLSNpZmRlZiBQeV9CVUlMRF9DT1JFCi0jICBkZWZpbmUgUHlBUElfRlVOQyhSVFlQRSkJUlRZUEUKLSNlbHNlCi0jICBkZWZpbmUgUHlBUElfRlVOQyhSVFlQRSkJZXh0ZXJuIFJUWVBFCi0jZW5kaWYKLSNkZWZpbmUgUHlBUElfREFUQShSVFlQRSkJZXh0ZXJuIFJUWVBFCi0jZGVmaW5lIFB5TU9ESU5JVF9GVU5DCXZvaWQKLQotLyogVXNlIE9TLzIgZmxhdm91ciBvZiB0aHJlYWRzICovCi0jZGVmaW5lIFdJVEhfVEhSRUFECTEKLSNkZWZpbmUgT1MyX1RIUkVBRFMJMQotCi0vKiBXZSB3YW50IHNvY2tldHMgKi8KLSNkZWZpbmUgVENQSVBWNAkJMQotI2RlZmluZSBVU0VfU09DS0VUCTEKLSNkZWZpbmUgc29ja2xlbl90CWludAotI2RlZmluZSBGRF9TRVRTSVpFCTEwMjQKLQotLyogZW5hYmxlIHRoZSBQeXRob24gb2JqZWN0IGFsbG9jYXRvciAqLwotI2RlZmluZQlXSVRIX1BZTUFMTE9DCTEKLQotLyogZW5hYmxlIHRoZSBHQyBtb2R1bGUgKi8KLSNkZWZpbmUgV0lUSF9DWUNMRV9HQwkxCi0KLS8qIERlZmluZSBpZiB5b3Ugd2FudCBkb2N1bWVudGF0aW9uIHN0cmluZ3MgaW4gZXh0ZW5zaW9uIG1vZHVsZXMgKi8KLSNkZWZpbmUgV0lUSF9ET0NfU1RSSU5HUyAxCi0KLS8qIFVuaWNvZGUgcmVsYXRlZCAqLwotI2RlZmluZSBQWV9VTklDT0RFX1RZUEUJd2NoYXJfdAotI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgU0laRU9GX1NIT1JUCi0KLS8qIEVNWCBkZWZpbmVzIHNzaXplX3QgKi8KLSNkZWZpbmUgSEFWRV9TU0laRV9UCTEKLQotLyogc3lzdGVtIGNhcGFiaWxpdGllcyAqLwotI2RlZmluZSBIQVZFX1RUWU5BTUUJMQotI2RlZmluZSBIQVZFX1dBSVQJMQotI2RlZmluZSBIQVZFX0dFVEVHSUQgICAgMQotI2RlZmluZSBIQVZFX0dFVEVVSUQgICAgMQotI2RlZmluZSBIQVZFX0dFVEdJRCAgICAgMQotI2RlZmluZSBIQVZFX0dFVFBQSUQgICAgMQotI2RlZmluZSBIQVZFX0dFVFVJRCAgICAgMQotI2RlZmluZSBIQVZFX09QRU5ESVIgICAgMQotI2RlZmluZSBIQVZFX1BJUEUgICAgICAgMQotI2RlZmluZSBIQVZFX1BPUEVOICAgICAgMQotI2RlZmluZSBIQVZFX1NZU1RFTQkxCi0jZGVmaW5lIEhBVkVfVFRZTkFNRQkxCi0jZGVmaW5lIEhBVkVfRFlOQU1JQ19MT0FESU5HCTEKLQotLyogaWYgcG9ydCBvZiBHREJNIGluc3RhbGxlZCwgaXQgaW5jbHVkZXMgTkRCTSBlbXVsYXRpb24gKi8KLSNkZWZpbmUgSEFWRV9OREJNX0ggMQotCi0vKiBuZWVkIHRoaXMgZm9yIHNwYXdudiBjb2RlIGluIHBvc2l4bW9kdWxlIChjbG9uZWQgZnJvbSBXSU4zMiBkZWYnbikgKi8KLXR5cGVkZWYgbG9uZyBpbnRwdHJfdDsKLQotLyogd2UgZG9uJ3QgaGF2ZSB0bV96b25lIGJ1dCBkbyBoYXZlIHRoZSBleHRlcm5hbCBhcnJheSB0em5hbWUgKi8KLSNkZWZpbmUgSEFWRV9UWk5BTUUgMQotCi0vKiBEZWZpbmUgYXMgdGhlIHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycyAoaW50IG9yIHZvaWQpLiAqLwotI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwotI2RlZmluZSBTVERDX0hFQURFUlMgMQotCi0vKiBEZWZpbmUgaWYgeW91IGNhbiBzYWZlbHkgaW5jbHVkZSBib3RoIDxzeXMvdGltZS5oPiBhbmQgPHRpbWUuaD4uICovCi0jZGVmaW5lIFRJTUVfV0lUSF9TWVNfVElNRSAxCi0KLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy4gKi8KLSNkZWZpbmUgSEFWRV9MT05HX0xPTkcgMQotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyBmdW5jdGlvbiBwcm90b3R5cGVzLiAqLwotI2RlZmluZSBIQVZFX1BST1RPVFlQRVMgMQotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyB2YXJpYWJsZSBsZW5ndGggZnVuY3Rpb24gcHJvdG90eXBlcwotICogKGUuZy4gdm9pZCBmcHJpbnRmKEZJTEUgKiwgY2hhciAqLCAuLi4pOykgKmFuZCogPHN0ZGFyZy5oPi4KLSAqLwotI2RlZmluZSBIQVZFX1NUREFSR19QUk9UT1RZUEVTIDEKLQotLyogRGVmaW5lIGlmIG1hbGxvYygwKSByZXR1cm5zIGEgTlVMTCBwb2ludGVyLiAqLwotI2RlZmluZSBNQUxMT0NfWkVST19SRVRVUk5TX05VTEwgMQotCi0vKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zLiAqLwotI2RlZmluZSBfUkVFTlRSQU5UIDEKLQotLyogRGVmaW5lIGlmIHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3NlbGVjdC5oPiBhbmQgPHN5cy90aW1lLmg+Ci0gKiAod2hpY2ggeW91IGNhbid0IG9uIFNDTyBPRFQgMy4wKS4KLSAqLwotI2RlZmluZSBTWVNfU0VMRUNUX1dJVEhfU1lTX1RJTUUgMQotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGFuIG9mZl90LiAqLwotI2RlZmluZSBTSVpFT0ZfT0ZGX1QgNAotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGFuIHRpbWVfdC4gKi8KLSNkZWZpbmUgU0laRU9GX1RJTUVfVCA0Ci0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBzaG9ydC4gKi8KLSNkZWZpbmUgU0laRU9GX1NIT1JUIDIKLQotLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiBhIGludC4gKi8KLSNkZWZpbmUgU0laRU9GX0lOVCA0Ci0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBsb25nLiAqLwotI2RlZmluZSBTSVpFT0ZfTE9ORyA0Ci0KLS8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBsb25nIGxvbmcuICovCi0jZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgOAotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGEgdm9pZCAqLiAqLwotI2RlZmluZSBTSVpFT0ZfVk9JRF9QIDQKLQotLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiBhIHNpemVfdC4gKi8KLSNkZWZpbmUgU0laRU9GX1NJWkVfVCA0Ci0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgYWxhcm0gZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfQUxBUk0gMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGNsb2NrIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX0NMT0NLIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBkdXAyIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX0RVUDIgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGV4ZWN2IGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX0VYRUNWIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzcGF3bnYgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfU1BBV05WIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmbG9jayBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9GTE9DSyAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZm9yayBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9GT1JLIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBmc3luYyBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9GU1lOQyAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZnRpbWUgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfRlRJTUUgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGZ0cnVuY2F0ZSBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9GVFJVTkNBVEUgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldGN3ZCBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9HRVRDV0QgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldHBlZXJuYW1lIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX0dFVFBFRVJOQU1FIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRwZ3JwIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX0dFVFBHUlAgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldHBpZCBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9HRVRQSUQgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGdldHB3ZW50IGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX0dFVFBXRU5UIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXR0aW1lb2ZkYXkgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfR0VUVElNRU9GREFZIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXR3ZCBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9HRVRXRCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaHlwb3QgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfSFlQT1QgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGtpbGwgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfS0lMTCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbWVtbW92ZSBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9NRU1NT1ZFIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBta3RpbWUgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfTUtUSU1FIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwYXVzZSBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9QQVVTRSAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHV0ZW52IGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1BVVEVOViAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2VsZWN0IGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1NFTEVDVCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0Z2lkIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1NFVEdJRCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0bG9jYWxlIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1NFVExPQ0FMRSAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2V0cGdpZCBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9TRVRQR0lEIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzZXR1aWQgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfU0VUVUlEIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzZXR2YnVmIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1NFVFZCVUYgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNpZ2FjdGlvbiBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9TSUdBQ1RJT04gMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cmVycm9yIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1NUUkVSUk9SIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJmdGltZSBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9TVFJGVElNRSAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdGNnZXRwZ3JwIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1RDR0VUUEdSUCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdGNzZXRwZ3JwIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1RDU0VUUEdSUCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdG1wZmlsZSBmdW5jdGlvbi4gICovCi0jZGVmaW5lIEhBVkVfVE1QRklMRSAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdGltZXMgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfVElNRVMgMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRydW5jYXRlIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX1RSVU5DQVRFIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB1bmFtZSBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9VTkFNRSAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2FpdHBpZCBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9XQUlUUElEIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8Y29uaW8uaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9DT05JT19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX0RJUkVDVF9ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9ESVJFTlRfSCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGVycm5vLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX0VSUk5PX0ggMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8aW8uaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9JT19ICi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPG5jdXJzZXMuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfTkNVUlNFU19IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1BST0NFU1NfSCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TSUdOQUxfSCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9maWxlLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19GSUxFX0ggMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvc2VsZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdGltZS5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWVzLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19USU1FU19IIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19VTl9IIDEKLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3V0c25hbWUuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1lTX1VUU05BTUVfSCAxCi0KLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy93YWl0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NZU19XQUlUX0ggMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfVU5JU1REX0ggMQotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1dGltZS5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9VVElNRV9IIDEKLQotLyogRU1YIGhhcyBhbiBzbnByaW50ZigpLiAqLwotI2RlZmluZSBIQVZFX1NOUFJJTlRGIDEKLQotI2VuZGlmIC8qICFQeV9DT05GSUdfSCAqLwotCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvcHl0aG9uMzMuZGVmIGIvUEMvb3MyZW14L3B5dGhvbjMzLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2NzI2Yi4uMDAwMDAwMAotLS0gYS9QQy9vczJlbXgvcHl0aG9uMzMuZGVmCisrKyAvZGV2L251bGwKQEAgLTEsMTMxNCArMCwwIEBACi1MSUJSQVJZIHB5dGhvbjMzIElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UgCi1ERVNDUklQVElPTiAiUHl0aG9uIDIuNiBDb3JlIERMTCIgCi1QUk9UTU9ERSAKLURBVEEgTVVMVElQTEUgTk9OU0hBUkVEIAotRVhQT1JUUyAKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbmZpZykKLSAgIl9QeUltcG9ydF9Jbml0dGFiIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZGxmY24pCi07ICAiZGxvcGVuIgotOyAgImRsc3ltIgotOyAgImRsY2xvc2UiCi07ICAiZGxlcnJvciIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHBhdGhwKQotICAiUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoIgotICAiUHlfR2V0UHJlZml4IgotICAiUHlfR2V0RXhlY1ByZWZpeCIKLSAgIlB5X0dldFBhdGgiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihnZXRidWlsZGluZm8pCi0gICJQeV9HZXRCdWlsZEluZm8iCi0gICJfUHlfc3ZudmVyc2lvbiIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG1haW4pCi0gICJQeV9NYWluIgotICAiUHlfR2V0QXJnY0FyZ3YiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihhY2NlbGVyKQotICAiUHlHcmFtbWFyX0FkZEFjY2VsZXJhdG9ycyIKLSAgIlB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihncmFtbWFyMSkKLSAgIlB5R3JhbW1hcl9GaW5kREZBIgotICAiUHlHcmFtbWFyX0xhYmVsUmVwciIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGxpc3Rub2RlKQotICAiUHlOb2RlX0xpc3RUcmVlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIobm9kZSkKLSAgIlB5Tm9kZV9OZXciCi0gICJQeU5vZGVfQWRkQ2hpbGQiCi0gICJQeU5vZGVfRnJlZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHBhcnNlcikKLSAgIlB5UGFyc2VyX0FkZFRva2VuIgotICAiUHlQYXJzZXJfTmV3IgotICAiUHlQYXJzZXJfRGVsZXRlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIocGFyc2V0b2spCi0gICJQeVBhcnNlcl9QYXJzZVN0cmluZyIKLSAgIlB5UGFyc2VyX1BhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZSIKLSAgIlB5UGFyc2VyX1BhcnNlRmlsZSIKLSAgIlB5UGFyc2VyX1BhcnNlRmlsZUZsYWdzIgotICAiUHlQYXJzZXJfUGFyc2VTdHJpbmdGbGFncyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGJpdHNldCkKLSAgIl9QeV9uZXdiaXRzZXQiCi0gICJfUHlfZGVsYml0c2V0IgotICAiX1B5X2FkZGJpdCIKLSAgIl9QeV9zYW1lYml0c2V0IgotICAiX1B5X21lcmdlYml0c2V0IgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIobWV0YWdyYW1tYXIpCi0gICJfUHlfbWV0YV9ncmFtbWFyIgotICAiUHlfbWV0YV9ncmFtbWFyIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIodG9rZW5pemVyKQotICAiUHlUb2tlbl9PbmVDaGFyIgotICAiUHlUb2tlbl9Ud29DaGFycyIKLSAgIlB5VG9rZW5fVGhyZWVDaGFycyIKLSAgIlB5VG9rZW5pemVyX0Zyb21TdHJpbmciCi0gICJQeVRva2VuaXplcl9GcmVlIgotICAiUHlUb2tlbml6ZXJfRnJvbUZpbGUiCi0gICJQeVRva2VuaXplcl9HZXQiCi0gICJfUHlQYXJzZXJfVG9rZW5OYW1lcyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG15cmVhZGxpbmUpCi0gICJfUHlPU19SZWFkbGluZVRTdGF0ZSIKLSAgIlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIiCi0gICJQeU9TX1N0ZGlvUmVhZGxpbmUiCi0gICJQeU9TX1JlYWRsaW5lIgotICAiUHlPU19JbnB1dEhvb2siCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihhYnN0cmFjdCkKLSAgIl9QeU9iamVjdF9MZW5ndGhIaW50IgotICAiUHlNYXBwaW5nX1NpemUiCi0gICJQeU9iamVjdF9DYWxsTWV0aG9kIgotICAiUHlPYmplY3RfR2V0SXRlbSIKLSAgIlB5U2VxdWVuY2VfR2V0SXRlbSIKLSAgIlB5T2JqZWN0X1NldEl0ZW0iCi0gICJQeVNlcXVlbmNlX1NldEl0ZW0iCi0gICJQeU9iamVjdF9EZWxJdGVtIgotICAiUHlTZXF1ZW5jZV9EZWxJdGVtIgotICAiUHlOdW1iZXJfTXVsdGlwbHkiCi0gICJQeU51bWJlcl9JblBsYWNlQWRkIgotICAiUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5IgotICAiUHlOdW1iZXJfSW50IgotICAiUHlOdW1iZXJfTG9uZyIKLSAgIlB5TnVtYmVyX0Zsb2F0IgotICAiUHlTZXF1ZW5jZV9Db25jYXQiCi0gICJQeVNlcXVlbmNlX1JlcGVhdCIKLSAgIlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdCIKLSAgIlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdCIKLSAgIlB5U2VxdWVuY2VfR2V0U2xpY2UiCi0gICJQeVNlcXVlbmNlX1NldFNsaWNlIgotICAiUHlTZXF1ZW5jZV9UdXBsZSIKLSAgIlB5T2JqZWN0X0dldEl0ZXIiCi0gICJQeUl0ZXJfTmV4dCIKLSAgIlB5U2VxdWVuY2VfRmFzdCIKLSAgIl9QeVNlcXVlbmNlX0l0ZXJTZWFyY2giCi0gICJQeU9iamVjdF9DYWxsRnVuY3Rpb24iCi0gICJfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUIgotICAiX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQiCi0gICJQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyIKLSAgIlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MiCi0gICJQeU9iamVjdF9DbXAiCi0gICJQeU9iamVjdF9DYWxsIgotICAiUHlPYmplY3RfQ2FsbE9iamVjdCIKLSAgIlB5T2JqZWN0X1R5cGUiCi0gICJQeU9iamVjdF9TaXplIgotICAiUHlPYmplY3RfTGVuZ3RoIgotICAiUHlPYmplY3RfRGVsSXRlbVN0cmluZyIKLSAgIlB5T2JqZWN0X0FzQ2hhckJ1ZmZlciIKLSAgIlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlciIKLSAgIlB5T2JqZWN0X0FzUmVhZEJ1ZmZlciIKLSAgIlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIiCi0gICJQeU51bWJlcl9DaGVjayIKLSAgIlB5TnVtYmVyX0FkZCIKLSAgIlB5TnVtYmVyX1N1YnRyYWN0IgotICAiUHlOdW1iZXJfRGl2aWRlIgotICAiUHlOdW1iZXJfRmxvb3JEaXZpZGUiCi0gICJQeU51bWJlcl9UcnVlRGl2aWRlIgotICAiUHlOdW1iZXJfUmVtYWluZGVyIgotICAiUHlOdW1iZXJfRGl2bW9kIgotICAiUHlOdW1iZXJfUG93ZXIiCi0gICJQeU51bWJlcl9OZWdhdGl2ZSIKLSAgIlB5TnVtYmVyX1Bvc2l0aXZlIgotICAiUHlOdW1iZXJfQWJzb2x1dGUiCi0gICJQeU51bWJlcl9JbnZlcnQiCi0gICJQeU51bWJlcl9Mc2hpZnQiCi0gICJQeU51bWJlcl9Sc2hpZnQiCi0gICJQeU51bWJlcl9BbmQiCi0gICJQeU51bWJlcl9Yb3IiCi0gICJQeU51bWJlcl9PciIKLSAgIlB5TnVtYmVyX0luZGV4IgotICAiUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0IgotICAiUHlOdW1iZXJfSW5QbGFjZURpdmlkZSIKLSAgIlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZSIKLSAgIlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlIgotICAiUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlciIKLSAgIlB5TnVtYmVyX0luUGxhY2VQb3dlciIKLSAgIlB5TnVtYmVyX0luUGxhY2VMc2hpZnQiCi0gICJQeU51bWJlcl9JblBsYWNlUnNoaWZ0IgotICAiUHlOdW1iZXJfSW5QbGFjZUFuZCIKLSAgIlB5TnVtYmVyX0luUGxhY2VYb3IiCi0gICJQeU51bWJlcl9JblBsYWNlT3IiCi0gICJQeVNlcXVlbmNlX0NoZWNrIgotICAiUHlTZXF1ZW5jZV9TaXplIgotICAiUHlTZXF1ZW5jZV9MZW5ndGgiCi0gICJQeVNlcXVlbmNlX0RlbFNsaWNlIgotICAiUHlTZXF1ZW5jZV9MaXN0IgotICAiUHlTZXF1ZW5jZV9Db3VudCIKLSAgIlB5U2VxdWVuY2VfQ29udGFpbnMiCi0gICJQeVNlcXVlbmNlX0luIgotICAiUHlTZXF1ZW5jZV9JbmRleCIKLSAgIlB5TWFwcGluZ19DaGVjayIKLSAgIlB5TWFwcGluZ19MZW5ndGgiCi0gICJQeU1hcHBpbmdfSGFzS2V5U3RyaW5nIgotICAiUHlNYXBwaW5nX0hhc0tleSIKLSAgIlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nIgotICAiUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmciCi0gICJQeU9iamVjdF9Jc0luc3RhbmNlIgotICAiUHlPYmplY3RfSXNTdWJjbGFzcyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGJvb2xvYmplY3QpCi0gICJQeUJvb2xfRnJvbUxvbmciCi0gICJQeUJvb2xfVHlwZSIKLSAgIl9QeV9aZXJvU3RydWN0IgotICAiX1B5X1RydWVTdHJ1Y3QiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihidWZmZXJvYmplY3QpCi0gICJQeUJ1ZmZlcl9Gcm9tT2JqZWN0IgotICAiUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCIKLSAgIlB5QnVmZmVyX0Zyb21NZW1vcnkiCi0gICJQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlTWVtb3J5IgotICAiUHlCdWZmZXJfTmV3IgotICAiUHlCdWZmZXJfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNlbGxvYmplY3QpCi0gICJQeUNlbGxfTmV3IgotICAiUHlDZWxsX0dldCIKLSAgIlB5Q2VsbF9TZXQiCi0gICJQeUNlbGxfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNsYXNzb2JqZWN0KQotICAiUHlDbGFzc19OZXciCi0gICJQeUNsYXNzX0lzU3ViY2xhc3MiCi0gICJQeUluc3RhbmNlX05ldyIKLSAgIlB5SW5zdGFuY2VfTmV3UmF3IgotICAiUHlNZXRob2RfTmV3IgotICAiUHlNZXRob2RfRnVuY3Rpb24iCi0gICJQeU1ldGhvZF9TZWxmIgotICAiUHlNZXRob2RfQ2xhc3MiCi0gICJfUHlJbnN0YW5jZV9Mb29rdXAiCi0gICJQeU1ldGhvZF9GaW5pIgotICAiUHlDbGFzc19UeXBlIgotICAiUHlJbnN0YW5jZV9UeXBlIgotICAiUHlNZXRob2RfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNhcHN1bGUpCi0gICJQeUNhcHN1bGVfR2V0Q29udGV4dCIKLSAgIlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yIgotICAiUHlDYXBzdWxlX0dldE5hbWUiCi0gICJQeUNhcHN1bGVfR2V0UG9pbnRlciIKLSAgIlB5Q2Fwc3VsZV9JbXBvcnQiCi0gICJQeUNhcHN1bGVfSXNWYWxpZCIKLSAgIlB5Q2Fwc3VsZV9OZXciCi0gICJQeUNhcHN1bGVfU2V0Q29udGV4dCIKLSAgIlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yIgotICAiUHlDYXBzdWxlX1NldE5hbWUiCi0gICJQeUNhcHN1bGVfU2V0UG9pbnRlciIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvYmplY3QpCi0gICJQeUNPYmplY3RfRnJvbVZvaWRQdHIiCi0gICJQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjIgotICAiUHlDT2JqZWN0X0FzVm9pZFB0ciIKLSAgIlB5Q09iamVjdF9HZXREZXNjIgotICAiUHlDT2JqZWN0X0ltcG9ydCIKLSAgIlB5Q09iamVjdF9TZXRWb2lkUHRyIgotICAiUHlDT2JqZWN0X1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihjb2Rlb2JqZWN0KQotICAiUHlDb2RlX05ldyIKLSAgIlB5Q29kZV9BZGRyMkxpbmUiCi0gICJQeUNvZGVfQ2hlY2tMaW5lTnVtYmVyIgotICAiUHlDb2RlX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihjb21wbGV4b2JqZWN0KQotICAiX1B5X2NfcG93IgotICAiX1B5X2Nfc3VtIgotICAiX1B5X2NfZGlmZiIKLSAgIl9QeV9jX25lZyIKLSAgIl9QeV9jX3Byb2QiCi0gICJfUHlfY19xdW90IgotICAiUHlDb21wbGV4X0Zyb21DQ29tcGxleCIKLSAgIlB5Q29tcGxleF9Gcm9tRG91YmxlcyIKLSAgIlB5Q29tcGxleF9SZWFsQXNEb3VibGUiCi0gICJQeUNvbXBsZXhfSW1hZ0FzRG91YmxlIgotICAiUHlDb21wbGV4X0FzQ0NvbXBsZXgiCi0gICJQeUNvbXBsZXhfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGRlc2Nyb2JqZWN0KQotICAiUHlXcmFwcGVyX05ldyIKLSAgIlB5RGVzY3JfTmV3TWV0aG9kIgotICAiUHlEZXNjcl9OZXdDbGFzc01ldGhvZCIKLSAgIlB5RGVzY3JfTmV3TWVtYmVyIgotICAiUHlEZXNjcl9OZXdHZXRTZXQiCi0gICJQeURlc2NyX05ld1dyYXBwZXIiCi0gICJQeURpY3RQcm94eV9OZXciCi0gICJQeVdyYXBwZXJEZXNjcl9UeXBlIgotICAiUHlQcm9wZXJ0eV9UeXBlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZGljdG9iamVjdCkKLSAgIlB5RGljdF9OZXciCi0gICJQeURpY3RfR2V0SXRlbSIKLSAgIlB5RGljdF9TZXRJdGVtIgotICAiUHlEaWN0X0RlbEl0ZW0iCi0gICJQeURpY3RfQ2xlYXIiCi0gICJQeURpY3RfTWVyZ2VGcm9tU2VxMiIKLSAgIlB5RGljdF9NZXJnZSIKLSAgIlB5RGljdF9LZXlzIgotICAiUHlEaWN0X1ZhbHVlcyIKLSAgIlB5RGljdF9Db250YWlucyIKLSAgIlB5RGljdF9OZXh0IgotICAiUHlEaWN0X0l0ZW1zIgotICAiUHlEaWN0X1NpemUiCi0gICJQeURpY3RfQ29weSIKLSAgIlB5RGljdF9VcGRhdGUiCi0gICJQeURpY3RfR2V0SXRlbVN0cmluZyIKLSAgIlB5RGljdF9TZXRJdGVtU3RyaW5nIgotICAiUHlEaWN0X0RlbEl0ZW1TdHJpbmciCi0gICJQeURpY3RfVHlwZSIKLSAgIlB5RGljdEl0ZXJLZXlfVHlwZSIKLSAgIlB5RGljdEl0ZXJWYWx1ZV9UeXBlIgotICAiUHlEaWN0SXRlckl0ZW1fVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGVudW1vYmplY3QpCi0gICJQeUVudW1fVHlwZSIKLSAgIlB5UmV2ZXJzZWRfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGZpbGVvYmplY3QpCi0gICJQeUZpbGVfRnJvbVN0cmluZyIKLSAgIlB5X1VuaXZlcnNhbE5ld2xpbmVGcmVhZCIKLSAgIlB5RmlsZV9HZXRMaW5lIgotICAiUHlGaWxlX1NvZnRTcGFjZSIKLSAgIlB5RmlsZV9Xcml0ZU9iamVjdCIKLSAgIlB5RmlsZV9Xcml0ZVN0cmluZyIKLSAgIlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IiCi0gICJQeV9Vbml2ZXJzYWxOZXdsaW5lRmdldHMiCi0gICJQeUZpbGVfU2V0QnVmU2l6ZSIKLSAgIlB5RmlsZV9TZXRFbmNvZGluZyIKLSAgIlB5RmlsZV9Gcm9tRmlsZSIKLSAgIlB5RmlsZV9Bc0ZpbGUiCi0gICJQeUZpbGVfTmFtZSIKLSAgIlB5RmlsZV9UeXBlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZmxvYXRvYmplY3QpCi0gICJQeUZsb2F0X0Zyb21TdHJpbmciCi0gICJQeUZsb2F0X0FzRG91YmxlIgotICAiUHlGbG9hdF9GaW5pIgotICAiX1B5RmxvYXRfUGFjazQiCi0gICJfUHlGbG9hdF9QYWNrOCIKLSAgIl9QeUZsb2F0X1VucGFjazQiCi0gICJfUHlGbG9hdF9VbnBhY2s4IgotICAiUHlGbG9hdF9Gcm9tRG91YmxlIgotICAiUHlGbG9hdF9Bc1JlcHJTdHJpbmciCi0gICJQeUZsb2F0X0FzU3RyaW5nIgotICAiX1B5RmxvYXRfSW5pdCIKLSAgIlB5RmxvYXRfQXNTdHJpbmdFeCIKLSAgIlB5RmxvYXRfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGZyYW1lb2JqZWN0KQotICAiUHlGcmFtZV9OZXciCi0gICJQeUZyYW1lX0Zhc3RUb0xvY2FscyIKLSAgIlB5RnJhbWVfTG9jYWxzVG9GYXN0IgotICAiX1B5RnJhbWVfSW5pdCIKLSAgIlB5RnJhbWVfRmluaSIKLSAgIlB5RnJhbWVfQmxvY2tTZXR1cCIKLSAgIlB5RnJhbWVfQmxvY2tQb3AiCi0gICJQeUZyYW1lX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihmdW5jb2JqZWN0KQotICAiUHlGdW5jdGlvbl9OZXciCi0gICJQeUZ1bmN0aW9uX0dldENvZGUiCi0gICJQeUZ1bmN0aW9uX0dldEdsb2JhbHMiCi0gICJQeUZ1bmN0aW9uX0dldE1vZHVsZSIKLSAgIlB5RnVuY3Rpb25fR2V0RGVmYXVsdHMiCi0gICJQeUZ1bmN0aW9uX1NldERlZmF1bHRzIgotICAiUHlGdW5jdGlvbl9HZXRDbG9zdXJlIgotICAiUHlGdW5jdGlvbl9TZXRDbG9zdXJlIgotICAiUHlDbGFzc01ldGhvZF9OZXciCi0gICJQeVN0YXRpY01ldGhvZF9OZXciCi0gICJQeUZ1bmN0aW9uX1R5cGUiCi0gICJQeUNsYXNzTWV0aG9kX1R5cGUiCi0gICJQeVN0YXRpY01ldGhvZF9UeXBlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZ2Vub2JqZWN0KQotICAiUHlHZW5fTmV3IgotICAiUHlHZW5fTmVlZHNGaW5hbGl6aW5nIgotICAiUHlHZW5fVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGludG9iamVjdCkKLSAgIlB5SW50X0FzTG9uZyIKLSAgIlB5SW50X0FzVW5zaWduZWRMb25nTWFzayIKLSAgIlB5SW50X0FzVW5zaWduZWRMb25nTG9uZ01hc2siCi0gICJQeUludF9Gcm9tU3RyaW5nIgotICAiUHlJbnRfQXNTc2l6ZV90IgotICAiUHlJbnRfRmluaSIKLSAgIlB5SW50X0Zyb21Vbmljb2RlIgotICAiUHlJbnRfRnJvbUxvbmciCi0gICJQeUludF9Gcm9tU2l6ZV90IgotICAiUHlJbnRfRnJvbVNzaXplX3QiCi0gICJQeUludF9HZXRNYXgiCi0gICJfUHlJbnRfSW5pdCIKLSAgIlB5SW50X1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihpdGVyb2JqZWN0KQotICAiUHlTZXFJdGVyX05ldyIKLSAgIlB5Q2FsbEl0ZXJfTmV3IgotICAiUHlTZXFJdGVyX1R5cGUiCi0gICJQeUNhbGxJdGVyX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihsaXN0b2JqZWN0KQotICAiUHlMaXN0X05ldyIKLSAgIlB5TGlzdF9BcHBlbmQiCi0gICJQeUxpc3RfU2l6ZSIKLSAgIlB5TGlzdF9HZXRJdGVtIgotICAiUHlMaXN0X1NldEl0ZW0iCi0gICJQeUxpc3RfSW5zZXJ0IgotICAiUHlMaXN0X0dldFNsaWNlIgotICAiUHlMaXN0X1NldFNsaWNlIgotICAiUHlMaXN0X1NvcnQiCi0gICJQeUxpc3RfUmV2ZXJzZSIKLSAgIlB5TGlzdF9Bc1R1cGxlIgotICAiX1B5TGlzdF9FeHRlbmQiCi0gICJQeUxpc3RfRmluaSIKLSAgIlB5TGlzdF9UeXBlIgotICAiUHlMaXN0SXRlcl9UeXBlIgotICAiUHlMaXN0UmV2SXRlcl9UeXBlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIobG9uZ29iamVjdCkKLSAgIlB5TG9uZ19Gcm9tRG91YmxlIgotICAiUHlMb25nX0FzTG9uZyIKLSAgIl9QeUxvbmdfQXNTc2l6ZV90IgotICAiUHlMb25nX0FzVW5zaWduZWRMb25nIgotICAiX1B5TG9uZ19Gcm9tQnl0ZUFycmF5IgotICAiX1B5TG9uZ19Bc0J5dGVBcnJheSIKLSAgIlB5TG9uZ19Bc0RvdWJsZSIKLSAgIlB5TG9uZ19Gcm9tTG9uZ0xvbmciCi0gICJQeUxvbmdfQXNMb25nTG9uZyIKLSAgIlB5TG9uZ19Gcm9tU3RyaW5nIgotICAiUHlMb25nX0Zyb21Mb25nIgotICAiUHlMb25nX0Zyb21VbnNpZ25lZExvbmciCi0gICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrIgotICAiX1B5TG9uZ19Gcm9tU2l6ZV90IgotICAiX1B5TG9uZ19Gcm9tU3NpemVfdCIKLSAgIl9QeUxvbmdfQXNTY2FsZWREb3VibGUiCi0gICJQeUxvbmdfRnJvbVZvaWRQdHIiCi0gICJQeUxvbmdfQXNWb2lkUHRyIgotICAiUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nIgotICAiUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyIKLSAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrIgotICAiUHlMb25nX0Zyb21Vbmljb2RlIgotICAiX1B5TG9uZ19TaWduIgotICAiX1B5TG9uZ19OdW1CaXRzIgotICAiX1B5TG9uZ19OZXciCi0gICJfUHlMb25nX0NvcHkiCi0gICJQeUxvbmdfVHlwZSIKLSAgIl9QeUxvbmdfRGlnaXRWYWx1ZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG1ldGhvZG9iamVjdCkKLSAgIlB5Q0Z1bmN0aW9uX0NhbGwiCi0gICJQeV9GaW5kTWV0aG9kSW5DaGFpbiIKLSAgIlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uIgotICAiUHlDRnVuY3Rpb25fR2V0U2VsZiIKLSAgIlB5Q0Z1bmN0aW9uX0dldEZsYWdzIgotICAiUHlfRmluZE1ldGhvZCIKLSAgIlB5Q0Z1bmN0aW9uX05ld0V4IgotICAiUHlDRnVuY3Rpb25fRmluaSIKLSAgIlB5Q0Z1bmN0aW9uX05ldyIKLSAgIlB5Q0Z1bmN0aW9uX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihtb2R1bGVvYmplY3QpCi0gICJQeU1vZHVsZV9OZXciCi0gICJfUHlNb2R1bGVfQ2xlYXIiCi0gICJQeU1vZHVsZV9HZXREaWN0IgotICAiUHlNb2R1bGVfR2V0TmFtZSIKLSAgIlB5TW9kdWxlX0dldEZpbGVuYW1lIgotICAiUHlNb2R1bGVfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG9iamVjdCkKLSAgIlB5X0RpdmlzaW9uV2FybmluZ0ZsYWciCi0gICJQeU9iamVjdF9TdHIiCi0gICJQeU9iamVjdF9SZXByIgotICAiX1B5T2JqZWN0X1N0ciIKLSAgIlB5T2JqZWN0X1VuaWNvZGUiCi0gICJQeU9iamVjdF9HZXRBdHRyIgotICAiUHlPYmplY3RfSXNUcnVlIgotICAiUHlOdW1iZXJfQ29lcmNlRXgiCi0gICJQeU9iamVjdF9Db21wYXJlIgotICAiUHlPYmplY3RfUmljaENvbXBhcmUiCi0gICJfUHlfSGFzaERvdWJsZSIKLSAgIlB5T2JqZWN0X0hhc2giCi0gICJQeU9iamVjdF9TZXRBdHRyIgotICAiUHlPYmplY3RfR2VuZXJpY0dldEF0dHIiCi0gICJQeU9iamVjdF9HZW5lcmljU2V0QXR0ciIKLSAgIlB5Q2FsbGFibGVfQ2hlY2siCi0gICJQeU9iamVjdF9EaXIiCi0gICJQeU1lbV9NYWxsb2MiCi0gICJQeU1lbV9SZWFsbG9jIgotICAiUHlNZW1fRnJlZSIKLSAgIlB5T2JqZWN0X1ByaW50IgotICAiX1B5T2JqZWN0X0R1bXAiCi0gICJQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wiCi0gICJQeU9iamVjdF9HZXRBdHRyU3RyaW5nIgotICAiUHlPYmplY3RfU2V0QXR0clN0cmluZyIKLSAgIlB5T2JqZWN0X0hhc0F0dHJTdHJpbmciCi0gICJQeU9iamVjdF9IYXNBdHRyIgotICAiX1B5T2JqZWN0X0dldERpY3RQdHIiCi0gICJQeU9iamVjdF9TZWxmSXRlciIKLSAgIlB5T2JqZWN0X05vdCIKLSAgIlB5TnVtYmVyX0NvZXJjZSIKLSAgIlB5X1JlcHJFbnRlciIKLSAgIlB5X1JlcHJMZWF2ZSIKLSAgIl9QeV9IYXNoUG9pbnRlciIKLSAgIlB5X0luY1JlZiIKLSAgIlB5X0RlY1JlZiIKLSAgIl9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0IgotICAiX1B5VHJhc2hfZGVzdHJveV9jaGFpbiIKLSAgIlB5T2JqZWN0X0luaXQiCi0gICJQeU9iamVjdF9Jbml0VmFyIgotICAiX1B5T2JqZWN0X05ldyIKLSAgIl9QeU9iamVjdF9OZXdWYXIiCi0gICJfUHlPYmplY3RfRGVsIgotICAiX1B5X1JlYWR5VHlwZXMiCi0gICJfUHlfU3dhcHBlZE9wIgotICAiX1B5X05vdEltcGxlbWVudGVkU3RydWN0IgotICAiX1B5X05vbmVTdHJ1Y3QiCi0gICJfUHlfY29iamVjdF9oYWNrIgotICAiX1B5X2Fic3RyYWN0X2hhY2siCi0gICJfUHlUcmFzaF9kZWxldGVfbmVzdGluZyIKLSAgIl9QeVRyYXNoX2RlbGV0ZV9sYXRlciIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG9ibWFsbG9jKQotICAiUHlPYmplY3RfTWFsbG9jIgotICAiUHlPYmplY3RfRnJlZSIKLSAgIlB5T2JqZWN0X1JlYWxsb2MiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihyYW5nZW9iamVjdCkKLSAgIlB5UmFuZ2VfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHNldG9iamVjdCkKLSAgIlB5U2V0X1BvcCIKLSAgIlB5U2V0X05ldyIKLSAgIlB5RnJvemVuU2V0X05ldyIKLSAgIlB5U2V0X1NpemUiCi0gICJQeVNldF9DbGVhciIKLSAgIlB5U2V0X0NvbnRhaW5zIgotICAiUHlTZXRfRGlzY2FyZCIKLSAgIlB5U2V0X0FkZCIKLSAgIl9QeVNldF9OZXh0IgotICAiX1B5U2V0X1VwZGF0ZSIKLSAgIlB5U2V0X0ZpbmkiCi0gICJQeVNldF9UeXBlIgotICAiUHlGcm96ZW5TZXRfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHNsaWNlb2JqZWN0KQotICAiX1B5U2xpY2VfRnJvbUluZGljZXMiCi0gICJQeVNsaWNlX0dldEluZGljZXMiCi0gICJQeVNsaWNlX0dldEluZGljZXNFeCIKLSAgIlB5U2xpY2VfTmV3IgotICAiX1B5X0VsbGlwc2lzT2JqZWN0IgotICAiUHlTbGljZV9UeXBlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoc3RyaW5nb2JqZWN0KQotICAiUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUiCi0gICJQeVN0cmluZ19JbnRlcm5JblBsYWNlIgotICAiUHlTdHJpbmdfRnJvbVN0cmluZyIKLSAgIlB5U3RyaW5nX0Zyb21Gb3JtYXRWIgotICAiUHlTdHJpbmdfQXNTdHJpbmciCi0gICJfUHlTdHJpbmdfUmVzaXplIgotICAiUHlTdHJpbmdfRnJvbUZvcm1hdCIKLSAgIlB5U3RyaW5nX0FzRGVjb2RlZFN0cmluZyIKLSAgIlB5U3RyaW5nX0FzRW5jb2RlZFN0cmluZyIKLSAgIlB5U3RyaW5nX0RlY29kZUVzY2FwZSIKLSAgIlB5U3RyaW5nX1JlcHIiCi0gICJQeVN0cmluZ19Bc1N0cmluZ0FuZFNpemUiCi0gICJfUHlTdHJpbmdfRm9ybWF0TG9uZyIKLSAgIlB5U3RyaW5nX0Zvcm1hdCIKLSAgIl9QeV9SZWxlYXNlSW50ZXJuZWRTdHJpbmdzIgotICAiUHlTdHJpbmdfU2l6ZSIKLSAgIlB5U3RyaW5nX0NvbmNhdCIKLSAgIlB5U3RyaW5nX0NvbmNhdEFuZERlbCIKLSAgIl9QeVN0cmluZ19FcSIKLSAgIlB5U3RyaW5nX0ludGVybkltbW9ydGFsIgotICAiUHlTdHJpbmdfSW50ZXJuRnJvbVN0cmluZyIKLSAgIl9QeVN0cmluZ19Kb2luIgotICAiUHlTdHJpbmdfRGVjb2RlIgotICAiUHlTdHJpbmdfRW5jb2RlIgotICAiUHlTdHJpbmdfQXNFbmNvZGVkT2JqZWN0IgotICAiUHlTdHJpbmdfQXNEZWNvZGVkT2JqZWN0IgotICAiUHlTdHJpbmdfRmluaSIKLSAgIlB5U3RyaW5nX1R5cGUiCi0gICJQeUJhc2VTdHJpbmdfVHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cnVjdHNlcSkKLSAgIlB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUiCi0gICJQeVN0cnVjdFNlcXVlbmNlX05ldyIKLSAgIlB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIodHVwbGVvYmplY3QpCi0gICJQeVR1cGxlX05ldyIKLSAgIlB5VHVwbGVfUGFjayIKLSAgIl9QeVR1cGxlX1Jlc2l6ZSIKLSAgIlB5VHVwbGVfU2l6ZSIKLSAgIlB5VHVwbGVfR2V0SXRlbSIKLSAgIlB5VHVwbGVfU2V0SXRlbSIKLSAgIlB5VHVwbGVfR2V0U2xpY2UiCi0gICJQeVR1cGxlX0ZpbmkiCi0gICJQeVR1cGxlX1R5cGUiCi0gICJQeVR1cGxlSXRlcl9UeXBlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIodHlwZW9iamVjdCkKLSAgIlB5VHlwZV9Jc1N1YnR5cGUiCi0gICJfUHlUeXBlX0xvb2t1cCIKLSAgIlB5VHlwZV9SZWFkeSIKLSAgIlB5VHlwZV9HZW5lcmljQWxsb2MiCi0gICJfUHlPYmplY3RfU2xvdENvbXBhcmUiCi0gICJQeVR5cGVfR2VuZXJpY05ldyIKLSAgIlB5VHlwZV9UeXBlIgotICAiUHlCYXNlT2JqZWN0X1R5cGUiCi0gICJQeVN1cGVyX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYih1bmljb2Rlb2JqZWN0KQotICAiUHlVbmljb2RlVUNTMl9SZXNpemUiCi0gICJQeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsIgotICAiUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0IgotICAiUHlVbmljb2RlVUNTMl9Gcm9tRW5jb2RlZE9iamVjdCIKLSAgIlB5VW5pY29kZVVDUzJfRGVjb2RlIgotICAiUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmciCi0gICJQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjgiCi0gICJQeVVuaWNvZGVVQ1MyX0RlY29kZUxhdGluMSIKLSAgIlB5VW5pY29kZVVDUzJfRGVjb2RlQVNDSUkiCi0gICJQeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFN0cmluZyIKLSAgIlB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nIgotICAiUHlVbmljb2RlVUNTMl9Bc0xhdGluMVN0cmluZyIKLSAgIlB5VW5pY29kZVVDUzJfQXNBU0NJSVN0cmluZyIKLSAgIlB5VW5pY29kZV9EZWNvZGVVVEY3IgotICAiUHlVbmljb2RlX0VuY29kZVVURjciCi0gICJQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bCIKLSAgIlB5VW5pY29kZVVDUzJfRW5jb2RlVVRGOCIKLSAgIlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bCIKLSAgIlB5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZyIKLSAgIlB5VW5pY29kZVVDUzJfRGVjb2RlVW5pY29kZUVzY2FwZSIKLSAgIlB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZSIKLSAgIlB5VW5pY29kZVVDUzJfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSIKLSAgIl9QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUludGVybmFsIgotICAiUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwIgotICAiUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAiCi0gICJQeVVuaWNvZGVVQ1MyX0VuY29kZUNoYXJtYXAiCi0gICJQeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZUNoYXJtYXAiCi0gICJQeVVuaWNvZGVVQ1MyX0VuY29kZURlY2ltYWwiCi0gICJQeVVuaWNvZGVVQ1MyX0NvdW50IgotICAiUHlVbmljb2RlVUNTMl9GaW5kIgotICAiUHlVbmljb2RlVUNTMl9Kb2luIgotICAiUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzIgotICAiUHlVbmljb2RlVUNTMl9Db21wYXJlIgotICAiUHlVbmljb2RlVUNTMl9Db250YWlucyIKLSAgIlB5VW5pY29kZVVDUzJfQ29uY2F0IgotICAiX1B5VW5pY29kZV9YU3RyaXAiCi0gICJQeVVuaWNvZGVVQ1MyX1JlcGxhY2UiCi0gICJQeVVuaWNvZGVVQ1MyX1NwbGl0IgotICAiUHlVbmljb2RlVUNTMl9SU3BsaXQiCi0gICJQeVVuaWNvZGVVQ1MyX0Zvcm1hdCIKLSAgIl9QeVVuaWNvZGVVQ1MyX0luaXQiCi0gICJfUHlVbmljb2RlVUNTMl9GaW5pIgotICAiUHlVbmljb2RlVUNTMl9Gcm9tVW5pY29kZSIKLSAgIlB5VW5pY29kZVVDUzJfQXNVbmljb2RlIgotICAiUHlVbmljb2RlVUNTMl9HZXRTaXplIgotICAiUHlVbmljb2RlVUNTMl9HZXRNYXgiCi0gICJfUHlVbmljb2RlVUNTMl9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIgotICAiUHlVbmljb2RlVUNTMl9TZXREZWZhdWx0RW5jb2RpbmciCi0gICJQeVVuaWNvZGVVQ1MyX0VuY29kZSIKLSAgIlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0IgotICAiUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNiIKLSAgIlB5VW5pY29kZVVDUzJfRW5jb2RlVVRGMTYiCi0gICJQeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmluZyIKLSAgIlB5VW5pY29kZVVDUzJfRW5jb2RlVW5pY29kZUVzY2FwZSIKLSAgIlB5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nIgotICAiUHlVbmljb2RlVUNTMl9FbmNvZGVMYXRpbjEiCi0gICJQeVVuaWNvZGVVQ1MyX0VuY29kZUFTQ0lJIgotICAiUHlVbmljb2RlVUNTMl9Bc0NoYXJtYXBTdHJpbmciCi0gICJQeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbiIKLSAgIlB5VW5pY29kZVVDUzJfUlBhcnRpdGlvbiIKLSAgIlB5VW5pY29kZVVDUzJfVHJhbnNsYXRlIgotICAiUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2giCi0gICJQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IgotICAiUHlVbmljb2RlX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYih1bmljb2RlY3R5cGUpCi0gICJfUHlVbmljb2RlX1R5cGVSZWNvcmRzIgotICAiX1B5VW5pY29kZVVDUzJfVG9OdW1lcmljIgotICAiX1B5VW5pY29kZVVDUzJfSXNMb3dlcmNhc2UiCi0gICJfUHlVbmljb2RlVUNTMl9Jc1VwcGVyY2FzZSIKLSAgIl9QeVVuaWNvZGVVQ1MyX0lzVGl0bGVjYXNlIgotICAiX1B5VW5pY29kZVVDUzJfSXNXaGl0ZXNwYWNlIgotICAiX1B5VW5pY29kZVVDUzJfSXNMaW5lYnJlYWsiCi0gICJfUHlVbmljb2RlVUNTMl9Ub0xvd2VyY2FzZSIKLSAgIl9QeVVuaWNvZGVVQ1MyX1RvVXBwZXJjYXNlIgotICAiX1B5VW5pY29kZVVDUzJfVG9UaXRsZWNhc2UiCi0gICJfUHlVbmljb2RlVUNTMl9Ub0RlY2ltYWxEaWdpdCIKLSAgIl9QeVVuaWNvZGVVQ1MyX1RvRGlnaXQiCi0gICJfUHlVbmljb2RlVUNTMl9Jc0RlY2ltYWxEaWdpdCIKLSAgIl9QeVVuaWNvZGVVQ1MyX0lzRGlnaXQiCi0gICJfUHlVbmljb2RlVUNTMl9Jc051bWVyaWMiCi0gICJfUHlVbmljb2RlVUNTMl9Jc0FscGhhIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIod2Vha3JlZm9iamVjdCkKLSAgIlB5V2Vha3JlZl9OZXdSZWYiCi0gICJQeVdlYWtyZWZfTmV3UHJveHkiCi0gICJQeU9iamVjdF9DbGVhcldlYWtSZWZzIgotICAiUHlXZWFrcmVmX0dldE9iamVjdCIKLSAgIl9QeVdlYWtyZWZfR2V0V2Vha3JlZkNvdW50IgotICAiX1B5V2Vha3JlZl9DbGVhclJlZiIKLSAgIl9QeVdlYWtyZWZfUmVmVHlwZSIKLSAgIl9QeVdlYWtyZWZfUHJveHlUeXBlIgotICAiX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKFB5dGhvbi1hc3QpCi07ICAiaW5pdF9hc3QiCi0gICJNb2R1bGUiCi0gICJJbnRlcmFjdGl2ZSIKLSAgIkV4cHJlc3Npb24iCi0gICJTdWl0ZSIKLSAgIkZ1bmN0aW9uRGVmIgotICAiQ2xhc3NEZWYiCi0gICJSZXR1cm4iCi0gICJEZWxldGUiCi0gICJBc3NpZ24iCi0gICJBdWdBc3NpZ24iCi0gICJQcmludCIKLSAgIkZvciIKLSAgIldoaWxlIgotICAiSWYiCi0gICJXaXRoIgotICAiUmFpc2UiCi0gICJUcnlFeGNlcHQiCi0gICJUcnlGaW5hbGx5IgotICAiQXNzZXJ0IgotICAiSW1wb3J0IgotICAiSW1wb3J0RnJvbSIKLSAgIkV4ZWMiCi0gICJHbG9iYWwiCi0gICJFeHByIgotICAiUGFzcyIKLSAgIkJyZWFrIgotICAiQ29udGludWUiCi0gICJCb29sT3AiCi0gICJCaW5PcCIKLSAgIlVuYXJ5T3AiCi0gICJMYW1iZGEiCi0gICJJZkV4cCIKLSAgIkRpY3QiCi0gICJMaXN0Q29tcCIKLSAgIkdlbmVyYXRvckV4cCIKLSAgIllpZWxkIgotICAiQ29tcGFyZSIKLSAgIkNhbGwiCi0gICJSZXByIgotICAiTnVtIgotICAiU3RyIgotICAiQXR0cmlidXRlIgotICAiU3Vic2NyaXB0IgotICAiTmFtZSIKLSAgIkxpc3QiCi0gICJUdXBsZSIKLSAgIkVsbGlwc2lzIgotICAiU2xpY2UiCi0gICJFeHRTbGljZSIKLSAgIkluZGV4IgotICAiY29tcHJlaGVuc2lvbiIKLSAgImV4Y2VwdGhhbmRsZXIiCi0gICJhcmd1bWVudHMiCi0gICJrZXl3b3JkIgotICAiYWxpYXMiCi0gICJQeUFTVF9tb2Qyb2JqIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoYXNkbCkKLSAgImFzZGxfc2VxX25ldyIKLSAgImFzZGxfaW50X3NlcV9uZXciCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihhc3QpCi0gICJQeUFTVF9Gcm9tTm9kZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGJsdGlubW9kdWxlKQotICAiX1B5QnVpbHRpbl9Jbml0IgotICAiUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGV4Y2VwdGlvbnMpCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydCIKLSAgIlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0IgotICAiUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kIgotICAiUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kIgotICAiX1B5RXhjX0luaXQiCi0gICJQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUiCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9DcmVhdGUiCi0gICJQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUiCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZyIKLSAgIlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nIgotICAiUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0IgotICAiUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0IgotICAiUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0IgotICAiUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQiCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydCIKLSAgIlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0IgotICAiUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQiCi0gICJQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQiCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQiCi0gICJQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQiCi0gICJQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQiCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24iCi0gICJQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24iCi0gICJQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24iCi0gICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24iCi0gICJQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24iCi0gICJQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24iCi0gICJfUHlFeGNfRmluaSIKLSAgIlB5RXhjX0Jhc2VFeGNlcHRpb24iCi0gICJQeUV4Y19FeGNlcHRpb24iCi0gICJQeUV4Y19TdGFuZGFyZEVycm9yIgotICAiUHlFeGNfVHlwZUVycm9yIgotICAiUHlFeGNfU3RvcEl0ZXJhdGlvbiIKLSAgIlB5RXhjX0dlbmVyYXRvckV4aXQiCi0gICJQeUV4Y19TeXN0ZW1FeGl0IgotICAiUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQiCi0gICJQeUV4Y19JbXBvcnRFcnJvciIKLSAgIlB5RXhjX0Vudmlyb25tZW50RXJyb3IiCi0gICJQeUV4Y19JT0Vycm9yIgotICAiUHlFeGNfT1NFcnJvciIKLSAgIlB5RXhjX0VPRkVycm9yIgotICAiUHlFeGNfUnVudGltZUVycm9yIgotICAiUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciIKLSAgIlB5RXhjX05hbWVFcnJvciIKLSAgIlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIgotICAiUHlFeGNfQXR0cmlidXRlRXJyb3IiCi0gICJQeUV4Y19JbmRleEVycm9yIgotICAiUHlFeGNfU3ludGF4RXJyb3IiCi0gICJQeUV4Y19JbmRlbnRhdGlvbkVycm9yIgotICAiUHlFeGNfVGFiRXJyb3IiCi0gICJQeUV4Y19Mb29rdXBFcnJvciIKLSAgIlB5RXhjX0tleUVycm9yIgotICAiUHlFeGNfVmFsdWVFcnJvciIKLSAgIlB5RXhjX1VuaWNvZGVFcnJvciIKLSAgIlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciIKLSAgIlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciIKLSAgIlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciIKLSAgIlB5RXhjX0Fzc2VydGlvbkVycm9yIgotICAiUHlFeGNfQXJpdGhtZXRpY0Vycm9yIgotICAiUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIgotICAiUHlFeGNfT3ZlcmZsb3dFcnJvciIKLSAgIlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIgotICAiUHlFeGNfU3lzdGVtRXJyb3IiCi0gICJQeUV4Y19SZWZlcmVuY2VFcnJvciIKLSAgIlB5RXhjX01lbW9yeUVycm9yIgotICAiUHlFeGNfV2FybmluZyIKLSAgIlB5RXhjX1VzZXJXYXJuaW5nIgotICAiUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIgotICAiUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyIKLSAgIlB5RXhjX1N5bnRheFdhcm5pbmciCi0gICJQeUV4Y19SdW50aW1lV2FybmluZyIKLSAgIlB5RXhjX0Z1dHVyZVdhcm5pbmciCi0gICJQeUV4Y19JbXBvcnRXYXJuaW5nIgotICAiUHlFeGNfTWVtb3J5RXJyb3JJbnN0IgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoY2V2YWwpCi0gICJQeUV2YWxfRXZhbEZyYW1lRXgiCi0gICJQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyIKLSAgIlB5RXZhbF9FdmFsQ29kZUV4IgotICAiUHlFdmFsX0dldEZyYW1lIgotICAiUHlFdmFsX0NhbGxPYmplY3QiCi0gICJQeUV2YWxfU2V0UHJvZmlsZSIKLSAgIlB5RXZhbF9TZXRUcmFjZSIKLSAgIlB5RXZhbF9HZXRCdWlsdGlucyIKLSAgIlB5RXZhbF9HZXRHbG9iYWxzIgotICAiUHlFdmFsX0dldExvY2FscyIKLSAgIlB5RXZhbF9HZXRSZXN0cmljdGVkIgotICAiUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncyIKLSAgIlB5X0ZsdXNoTGluZSIKLSAgIlB5X0FkZFBlbmRpbmdDYWxsIgotICAiUHlfTWFrZVBlbmRpbmdDYWxscyIKLSAgIlB5X1NldFJlY3Vyc2lvbkxpbWl0IgotICAiUHlfR2V0UmVjdXJzaW9uTGltaXQiCi0gICJfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsIgotICAiUHlFdmFsX0dldEZ1bmNOYW1lIgotICAiUHlFdmFsX0dldEZ1bmNEZXNjIgotICAiUHlFdmFsX0dldENhbGxTdGF0cyIKLSAgIlB5RXZhbF9FdmFsRnJhbWUiCi0gICJQeUV2YWxfU2F2ZVRocmVhZCIKLSAgIlB5RXZhbF9SZXN0b3JlVGhyZWFkIgotICAiUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZCIKLSAgIlB5RXZhbF9Jbml0VGhyZWFkcyIKLSAgIlB5RXZhbF9BY3F1aXJlTG9jayIKLSAgIlB5RXZhbF9SZWxlYXNlTG9jayIKLSAgIlB5RXZhbF9BY3F1aXJlVGhyZWFkIgotICAiUHlFdmFsX1JlbGVhc2VUaHJlYWQiCi0gICJQeUV2YWxfUmVJbml0VGhyZWFkcyIKLSAgIl9QeUV2YWxfU2xpY2VJbmRleCIKLSAgIlB5RXZhbF9FdmFsQ29kZSIKLSAgIl9QeUV2YWxfQ2FsbFRyYWNpbmciCi0gICJfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCIKLSAgIl9QeV9DaGVja0ludGVydmFsIgotICAiX1B5X1RpY2tlciIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbXBpbGUpCi0gICJfUHlfTWFuZ2xlIgotICAiUHlBU1RfQ29tcGlsZSIKLSAgIlB5Tm9kZV9Db21waWxlIgotICAiUHlfT3B0aW1pemVGbGFnIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoY29kZWNzKQotICAiX1B5Q29kZWNfTG9va3VwIgotICAiUHlDb2RlY19FbmNvZGUiCi0gICJQeUNvZGVjX0RlY29kZSIKLSAgIlB5Q29kZWNfSWdub3JlRXJyb3JzIgotICAiUHlDb2RlY19SZXBsYWNlRXJyb3JzIgotICAiUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycyIKLSAgIlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyIKLSAgIlB5Q29kZWNfUmVnaXN0ZXIiCi0gICJQeUNvZGVjX0VuY29kZXIiCi0gICJQeUNvZGVjX0RlY29kZXIiCi0gICJQeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlciIKLSAgIlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyIgotICAiUHlDb2RlY19TdHJlYW1SZWFkZXIiCi0gICJQeUNvZGVjX1N0cmVhbVdyaXRlciIKLSAgIlB5Q29kZWNfUmVnaXN0ZXJFcnJvciIKLSAgIlB5Q29kZWNfTG9va3VwRXJyb3IiCi0gICJQeUNvZGVjX1N0cmljdEVycm9ycyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGVycm9ycykKLSAgIlB5RXJyX1NldE5vbmUiCi0gICJQeUVycl9TZXRTdHJpbmciCi0gICJQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMiCi0gICJQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24iCi0gICJQeUVycl9GZXRjaCIKLSAgIlB5RXJyX0NsZWFyIgotICAiUHlFcnJfTm9NZW1vcnkiCi0gICJQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QiCi0gICJQeUVycl9Gb3JtYXQiCi0gICJQeUVycl9OZXdFeGNlcHRpb24iCi0gICJQeUVycl9Xcml0ZVVucmFpc2FibGUiCi0gICJQeUVycl9TeW50YXhMb2NhdGlvbiIKLSAgIlB5RXJyX1Byb2dyYW1UZXh0IgotICAiUHlFcnJfU2V0T2JqZWN0IgotICAiUHlFcnJfT2NjdXJyZWQiCi0gICJQeUVycl9SZXN0b3JlIgotICAiUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyIKLSAgIlB5RXJyX0JhZEFyZ3VtZW50IgotICAiUHlFcnJfU2V0RnJvbUVycm5vIgotICAiUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lIgotICAiUHlFcnJfQmFkSW50ZXJuYWxDYWxsIgotICAiX1B5RXJyX0JhZEludGVybmFsQ2FsbCIKLSAgIlB5RXJyX1dhcm4iCi0gICJQeUVycl9XYXJuRXhwbGljaXQiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihmcm96ZW4pCi0gICJQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZnJvemVubWFpbikKLSAgIlB5X0Zyb3plbk1haW4iCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihmdXR1cmUpCi0gICJQeUZ1dHVyZV9Gcm9tQVNUIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0YXJncykKLSAgIlB5QXJnX1BhcnNlIgotICAiX1B5QXJnX1BhcnNlX1NpemVUIgotICAiUHlBcmdfUGFyc2VUdXBsZSIKLSAgIl9QeUFyZ19QYXJzZVR1cGxlX1NpemVUIgotICAiUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIgotICAiX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVCIKLSAgIlB5QXJnX1VucGFja1R1cGxlIgotICAiX1B5QXJnX05vS2V5d29yZHMiCi0gICJQeUFyZ19WYVBhcnNlIgotICAiUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMiCi0gICJfUHlBcmdfVmFQYXJzZV9TaXplVCIKLSAgIl9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVCIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGNvbXBpbGVyKQotICAiUHlfR2V0Q29tcGlsZXIiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihnZXRjb3B5cmlnaHQpCi0gICJQeV9HZXRDb3B5cmlnaHQiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihnZXRwbGF0Zm9ybSkKLSAgIlB5X0dldFBsYXRmb3JtIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0dmVyc2lvbikKLSAgIlB5X0dldFZlcnNpb24iCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihncmFtaW5pdCkKLSAgIl9QeVBhcnNlcl9HcmFtbWFyIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoaW1wb3J0KQotICAiX1B5SW1wb3J0X0luaXQiCi0gICJfUHlJbXBvcnRIb29rc19Jbml0IgotICAiUHlJbXBvcnRfSW1wb3J0TW9kdWxlIgotICAiUHlJbXBvcnRfQ2xlYW51cCIKLSAgIl9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbiIKLSAgIlB5SW1wb3J0X0FkZE1vZHVsZSIKLSAgIlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgiCi0gICJQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUiCi0gICJQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCIKLSAgIlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsIgotICAiUHlJbXBvcnRfUmVsb2FkTW9kdWxlIgotICAiUHlJbXBvcnRfSW1wb3J0IgotOyAgImluaXRpbXAiCi0gICJfUHlJbXBvcnRfRmluaSIKLSAgIlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyIgotICAiUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUiCi0gICJQeUltcG9ydF9HZXRNb2R1bGVEaWN0IgotICAiX1B5SW1wb3J0X0ZpbmRNb2R1bGUiCi0gICJfUHlJbXBvcnRfSXNTY3JpcHQiCi0gICJfUHlJbXBvcnRfUmVJbml0TG9jayIKLSAgIl9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uIgotICAiUHlJbXBvcnRfQXBwZW5kSW5pdHRhYiIKLSAgIlB5SW1wb3J0X0V4dGVuZEluaXR0YWIiCi0gICJQeUltcG9ydF9Jbml0dGFiIgotICAiX1B5SW1wb3J0X0ZpbGV0YWIiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihpbXBvcnRkbCkKLSAgIl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG1hcnNoYWwpCi0gICJQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZSIKLSAgIlB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nIgotICAiUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSIKLSAgIlB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvRmlsZSIKLSAgIlB5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmlsZSIKLSAgIlB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbUZpbGUiCi0gICJQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZSIKLSAgIlB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZyIKLSAgIlB5TWFyc2hhbF9Jbml0IgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIobW9kc3VwcG9ydCkKLSAgIlB5X0luaXRNb2R1bGU0IgotICAiUHlfQnVpbGRWYWx1ZSIKLSAgIl9QeV9CdWlsZFZhbHVlX1NpemVUIgotICAiUHlFdmFsX0NhbGxGdW5jdGlvbiIKLSAgIlB5RXZhbF9DYWxsTWV0aG9kIgotICAiX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVCIKLSAgIlB5X1ZhQnVpbGRWYWx1ZSIKLSAgIlB5TW9kdWxlX0FkZE9iamVjdCIKLSAgIlB5TW9kdWxlX0FkZEludENvbnN0YW50IgotICAiUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQiCi0gICJfUHlfUGFja2FnZUNvbnRleHQiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihteXNucHJpbnRmKQotICAiUHlPU19zbnByaW50ZiIKLSAgIlB5T1NfdnNucHJpbnRmIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIobXlzdHJ0b3VsKQotICAiUHlPU19zdHJ0b3VsIgotICAiUHlPU19zdHJ0b2wiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihweWFyZW5hKQotICAiUHlBcmVuYV9OZXciCi0gICJQeUFyZW5hX0ZyZWUiCi0gICJQeUFyZW5hX01hbGxvYyIKLSAgIlB5QXJlbmFfQWRkUHlPYmplY3QiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihweWZwZSkKLSAgIlB5RlBFX2R1bW15IgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIocHlzdGF0ZSkKLSAgIlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhciIKLSAgIlB5VGhyZWFkU3RhdGVfQ2xlYXIiCi0gICJfUHlUaHJlYWRfQ3VycmVudEZyYW1lcyIKLSAgIlB5R0lMU3RhdGVfRW5zdXJlIgotICAiUHlHSUxTdGF0ZV9SZWxlYXNlIgotICAiUHlJbnRlcnByZXRlclN0YXRlX05ldyIKLSAgIlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUiCi0gICJQeVRocmVhZFN0YXRlX0RlbGV0ZSIKLSAgIlB5VGhyZWFkU3RhdGVfTmV3IgotICAiUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50IgotICAiUHlUaHJlYWRTdGF0ZV9HZXQiCi0gICJQeVRocmVhZFN0YXRlX1N3YXAiCi0gICJQeVRocmVhZFN0YXRlX0dldERpY3QiCi0gICJQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjIgotICAiUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUiCi0gICJQeUludGVycHJldGVyU3RhdGVfSGVhZCIKLSAgIlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXh0IgotICAiUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQiCi0gICJQeVRocmVhZFN0YXRlX05leHQiCi0gICJfUHlHSUxTdGF0ZV9Jbml0IgotICAiX1B5R0lMU3RhdGVfRmluaSIKLSAgIl9QeVRocmVhZFN0YXRlX0N1cnJlbnQiCi0gICJfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHB5dGhvbnJ1bikKLSAgIlB5X0lnbm9yZUVudmlyb25tZW50RmxhZyIKLSAgIlB5X0RlYnVnRmxhZyIKLSAgIlB5X1ZlcmJvc2VGbGFnIgotICAiUHlfTm9TaXRlRmxhZyIKLSAgIlB5X0ludGVyYWN0aXZlRmxhZyIKLSAgIlB5X0Zyb3plbkZsYWciCi0gICJQeV9Jbml0aWFsaXplRXgiCi0gICJQeV9GYXRhbEVycm9yIgotICAiUHlfTmV3SW50ZXJwcmV0ZXIiCi0gICJQeUVycl9QcmludCIKLSAgIlB5UnVuX0ludGVyYWN0aXZlT25lRmxhZ3MiCi0gICJQeVBhcnNlcl9BU1RGcm9tRmlsZSIKLSAgIlB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzIgotICAiUHlSdW5fRmlsZUV4RmxhZ3MiCi0gICJQeV9FeGl0IgotICAiUHlFcnJfUHJpbnRFeCIKLSAgIlB5RXJyX0Rpc3BsYXkiCi0gICJQeV9TZXRQcm9ncmFtTmFtZSIKLSAgIlB5X0dldFByb2dyYW1OYW1lIgotICAiUHlfU2V0UHl0aG9uSG9tZSIKLSAgIlB5X0dldFB5dGhvbkhvbWUiCi0gICJQeV9Jbml0aWFsaXplIgotICAiUHlfRmluYWxpemUiCi0gICJQeV9Jc0luaXRpYWxpemVkIgotICAiUHlfRW5kSW50ZXJwcmV0ZXIiCi0gICJQeVJ1bl9BbnlGaWxlRmxhZ3MiCi0gICJQeV9GZElzSW50ZXJhY3RpdmUiCi0gICJQeVJ1bl9JbnRlcmFjdGl2ZUxvb3BGbGFncyIKLSAgIlB5UnVuX0FueUZpbGVFeEZsYWdzIgotICAiUHlSdW5fU2ltcGxlU3RyaW5nRmxhZ3MiCi0gICJQeVJ1bl9TdHJpbmdGbGFncyIKLSAgIlB5UGFyc2VyX0FTVEZyb21TdHJpbmciCi0gICJQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzIgotICAiUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MiCi0gICJQeV9Db21waWxlU3RyaW5nRmxhZ3MiCi0gICJQeV9TeW10YWJsZVN0cmluZyIKLSAgIlB5X0F0RXhpdCIKLSAgIlB5T1NfZ2V0c2lnIgotICAiUHlPU19zZXRzaWciCi0gICJQeVBhcnNlcl9TZXRFcnJvciIKLSAgIlB5TW9kdWxlX0dldFdhcm5pbmdzTW9kdWxlIgotICAiUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lIgotICAiUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGaWxlbmFtZSIKLSAgIlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZSIKLSAgIlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nIgotICAiUHlSdW5fQW55RmlsZSIKLSAgIlB5UnVuX0FueUZpbGVFeCIKLSAgIlB5UnVuX0ZpbGUiCi0gICJQeVJ1bl9GaWxlRXgiCi0gICJQeVJ1bl9GaWxlRmxhZ3MiCi0gICJQeVJ1bl9TaW1wbGVGaWxlIgotICAiUHlSdW5fU2ltcGxlRmlsZUV4IgotICAiUHlSdW5fU3RyaW5nIgotICAiUHlSdW5fU2ltcGxlU3RyaW5nIgotICAiUHlfQ29tcGlsZVN0cmluZyIKLSAgIlB5UnVuX0ludGVyYWN0aXZlT25lIgotICAiUHlSdW5fSW50ZXJhY3RpdmVMb29wIgotICAiUHlfVXNlQ2xhc3NFeGNlcHRpb25zRmxhZyIKLSAgIlB5X1VuaWNvZGVGbGFnIgotICAiX1B5X1FuZXdGbGFnIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoc3RydWN0bWVtYmVyKQotICAiUHlNZW1iZXJfR2V0IgotICAiUHlNZW1iZXJfR2V0T25lIgotICAiUHlNZW1iZXJfU2V0T25lIgotICAiUHlNZW1iZXJfU2V0IgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoc3ltdGFibGUpCi0gICJQeVN5bXRhYmxlX0J1aWxkIgotICAiUHlTeW10YWJsZV9GcmVlIgotICAiUHlTVF9HZXRTY29wZSIKLSAgIlB5U3ltdGFibGVfTG9va3VwIgotICAiUHlTVEVudHJ5X1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihzeXNtb2R1bGUpCi0gICJfUHlTeXNfSW5pdCIKLSAgIlB5U3lzX1dyaXRlU3RkZXJyIgotICAiUHlTeXNfU2V0UGF0aCIKLSAgIlB5U3lzX1NldEFyZ3YiCi0gICJQeVN5c19Xcml0ZVN0ZG91dCIKLSAgIlB5X1N1YnZlcnNpb25SZXZpc2lvbiIKLSAgIlB5X1N1YnZlcnNpb25TaG9ydEJyYW5jaCIKLSAgIlB5U3lzX0dldE9iamVjdCIKLSAgIlB5U3lzX1NldE9iamVjdCIKLSAgIlB5U3lzX0dldEZpbGUiCi0gICJQeVN5c19SZXNldFdhcm5PcHRpb25zIgotICAiUHlTeXNfQWRkV2Fybk9wdGlvbiIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHRyYWNlYmFjaykKLSAgIlB5VHJhY2VCYWNrX0hlcmUiCi0gICJQeVRyYWNlQmFja19QcmludCIKLSAgIlB5VHJhY2VCYWNrX1R5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihnZXRvcHQpCi0gICJfUHlPU19HZXRPcHQiCi0gICJfUHlPU19vcHRlcnIiCi0gICJfUHlPU19vcHRpbmQiCi0gICJfUHlPU19vcHRhcmciCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihkeW5sb2FkX3NobGliKQotICAiX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiIgotICAiX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIodGhyZWFkKQotICAiUHlUaHJlYWRfZGVsZXRlX2tleV92YWx1ZSIKLSAgIlB5VGhyZWFkX2luaXRfdGhyZWFkIgotICAiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCIKLSAgIlB5VGhyZWFkX2V4aXRfdGhyZWFkIgotICAiUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCIKLSAgIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2siCi0gICJQeVRocmVhZF9mcmVlX2xvY2siCi0gICJQeVRocmVhZF9hY3F1aXJlX2xvY2siCi0gICJQeVRocmVhZF9yZWxlYXNlX2xvY2siCi0gICJQeVRocmVhZF9nZXRfc3RhY2tzaXplIgotICAiUHlUaHJlYWRfc2V0X3N0YWNrc2l6ZSIKLSAgIlB5VGhyZWFkX2NyZWF0ZV9rZXkiCi0gICJQeVRocmVhZF9kZWxldGVfa2V5IgotICAiUHlUaHJlYWRfc2V0X2tleV92YWx1ZSIKLSAgIlB5VGhyZWFkX2dldF9rZXlfdmFsdWUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihnY21vZHVsZSkKLTsgICJpbml0Z2MiCi0gICJfUHlPYmplY3RfR0NfTmV3IgotICAiX1B5T2JqZWN0X0dDX05ld1ZhciIKLSAgIlB5R0NfQ29sbGVjdCIKLSAgIl9QeU9iamVjdF9HQ19SZXNpemUiCi0gICJfUHlPYmplY3RfR0NfTWFsbG9jIgotICAiUHlPYmplY3RfR0NfVHJhY2siCi0gICJQeU9iamVjdF9HQ19VblRyYWNrIgotICAiUHlPYmplY3RfR0NfRGVsIgotICAiX1B5R0NfRHVtcCIKLSAgIl9QeU9iamVjdF9HQ19UcmFjayIKLSAgIl9QeU9iamVjdF9HQ19VblRyYWNrIgotICAiX1B5T2JqZWN0X0dDX0RlbCIKLSAgIl9QeUdDX2dlbmVyYXRpb24wIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoc2lnbmFsbW9kdWxlKQotOyAgImluaXRzaWduYWwiCi0gICJQeUVycl9DaGVja1NpZ25hbHMiCi0gICJQeUVycl9TZXRJbnRlcnJ1cHQiCi0gICJQeU9TX0ZpbmlJbnRlcnJ1cHRzIgotICAiUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCIKLSAgIlB5T1NfSW5pdEludGVycnVwdHMiCi0gICJQeU9TX0FmdGVyRm9yayIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHBvc2l4bW9kdWxlKQotOyAgImluaXRvczIiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihfdGhyZWFkbW9kdWxlKQotOyAgImluaXRfdGhyZWFkIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoYXJyYXltb2R1bGUpCi07ICAiaW5pdGFycmF5IgotOyAgImFycmF5X21ldGhvZHMiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihiaW5hc2NpaSkKLTsgICJpbml0YmluYXNjaWkiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihjbWF0aG1vZHVsZSkKLTsgICJpbml0Y21hdGgiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihfY29kZWNzbW9kdWxlKQotOyAgImluaXRfY29kZWNzIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoY29sbGVjdGlvbnNtb2R1bGUpCi07ICAiaW5pdGNvbGxlY3Rpb25zIgotICAiZGVxdWVpdGVyX3R5cGUiCi0gICJkZXF1ZXJldml0ZXJfdHlwZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGNQaWNrbGUpCi07ICAiaW5pdGNQaWNrbGUiCi07ICAiZmFzdF9zYXZlX2xlYXZlIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoX2NzdikKLTsgICJpbml0X2NzdiIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGRhdGV0aW1lbW9kdWxlKQotOyAgImluaXRkYXRldGltZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGRsbW9kdWxlKQotOyAgImluaXRkbCIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGVycm5vbW9kdWxlKQotOyAgImluaXRlcnJubyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGZjbnRsbW9kdWxlKQotOyAgImluaXRmY250bCIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKF9mdW5jdG9vbHNtb2R1bGUpCi07ICAiaW5pdF9mdW5jdG9vbHMiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihfaGVhcHFtb2R1bGUpCi07ICAiaW5pdF9oZWFwcSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKGltYWdlb3ApCi07ICAiaW5pdGltYWdlb3AiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihpdGVydG9vbHNtb2R1bGUpCi07ICAiaW5pdGl0ZXJ0b29scyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKF9sb2NhbGVtb2R1bGUpCi07ICAiaW5pdF9sb2NhbGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihtYXRobW9kdWxlKQotOyAgImluaXRtYXRoIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIobWQ1KQotICAibWQ1X2ZpbmlzaCIKLSAgIm1kNV9pbml0IgotICAibWQ1X2FwcGVuZCIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG1kNW1vZHVsZSkKLTsgICJpbml0X21kNSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKG9wZXJhdG9yKQotOyAgImluaXRvcGVyYXRvciIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKF9yYW5kb21tb2R1bGUpCi07ICAiaW5pdF9yYW5kb20iCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihyZ2JpbWdtb2R1bGUpCi07ICAiaW5pdHJnYmltZyIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYW1vZHVsZSkKLTsgICJpbml0X3NoYSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYTI1Nm1vZHVsZSkKLTsgICJpbml0X3NoYTI1NiIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYTUxMm1vZHVsZSkKLTsgICJpbml0X3NoYTUxMiIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKF9zcmUpCi07ICAiaW5pdF9zcmUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihzdHJvcG1vZHVsZSkKLTsgICJpbml0c3Ryb3AiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYihfc3RydWN0KQotOyAgImluaXRfc3RydWN0IgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoc3ltdGFibGVtb2R1bGUpCi07ICAiaW5pdF9zeW10YWJsZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHRlcm1pb3MpCi07ICAiaW5pdHRlcm1pb3MiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYih0aW1lbW9kdWxlKQotOyAgImluaXR0aW1lIgotICAiX1B5VGltZV9Eb3VibGVUb1RpbWV0IgotOyAgImluaXR0aW1lem9uZSIKLQotOyBGcm9tIHB5dGhvbjMzX3MubGliKHRpbWluZ21vZHVsZSkKLTsgICJpbml0dGltaW5nIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoX3dlYWtyZWYpCi07ICAiaW5pdF93ZWFrcmVmIgotCi07IEZyb20gcHl0aG9uMzNfcy5saWIoeHhzdWJ0eXBlKQotOyAgImluaXR4eHN1YnR5cGUiCi0KLTsgRnJvbSBweXRob24zM19zLmxpYih6aXBpbXBvcnQpCi07ICAiaW5pdHppcGltcG9ydCIKZGlmZiAtLWdpdCBhL1BDL29zMmVteC9weXRob25wbS5jIGIvUEMvb3MyZW14L3B5dGhvbnBtLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNDdmNGIuLjAwMDAwMDAKLS0tIGEvUEMvb3MyZW14L3B5dGhvbnBtLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyogT1MvMiBQTSBtYWluIHByb2dyYW0gLSBjcmVhdGVzIGEgaGlkZGVuIHdpbmRvdywgYW5kIHN0YXJ0cyBQeXRob24KLSAqIGludGVycHJldGVyIGluIGEgc2VwYXJhdGUgdGhyZWFkLCBzbyB0aGF0IFB5dGhvbiBzY3JpcHRzIGNhbiBiZQotICogcnVuIGluIFBNIHByb2Nlc3Mgc3BhY2Ugd2l0aG91dCBhIGNvbnNvbGUgV2luZG93LiAgVGhlIGludGVycHJldGVyCi0gKiBpcyBpbmNvcnBvcmF0ZWQgYnkgbGlua2luZyBpbiB0aGUgUHl0aG9uIERMTC4KLSAqCi0gKiBBcyBpdCBzdGFuZHMsIEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBhZGVxdWF0ZSBmb3Igc3VwcG9ydGluZyBQeXRob24KLSAqIEdVSSBtb2R1bGVzLCBhcyB0aGUgUHl0aG9uIHRocmVhZCBkb2Vzbid0IGhhdmUgaXRzIG93biBtZXNzYWdlCi0gKiBxdWV1ZSAtIHdoaWNoIGlzIHJlcXVpcmVkIG9mIHRocmVhZHMgdGhhdCB3YW50IHRvIGNyZWF0ZS91c2UKLSAqIFBNIHdpbmRvd3MuCi0gKgotICogVGhpcyBjb2RlIG93ZXMgYSBsb3QgdG8gIk9TLzIgUHJlc2VudGF0aW9uIE1hbmFnZXIgUHJvZ3JhbW1pbmciLCBieQotICogQ2hhcmxlcyBQZXR6b2xkLgotICoKLSAqIEFuZHJldyBNYWNJbnR5cmUgPGFuZHltYWNAYnVsbHNleWUuYXBhbmEub3JnLmF1PiwgQXVndXN0IDIwMDEuCi0gKiBSZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFB5dGhvbiAyLjEuMSBsaWNlbmNlIC0gc2VlIHRoZSBMSUNFTkNFCi0gKiBmaWxlIGluIHRoZSBQeXRob24gdjIuMS4xIChvciBsYXRlcikgc291cmNlIGRpc3RyaWJ1dGlvbi4KLSAqIENvcHlyaWdodCBhc3NpZ25lZCB0byB0aGUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24sIDIwMDEuCi0gKi8KLQotI2RlZmluZSBJTkNMX0RPUwotI2RlZmluZSBJTkNMX1dJTgotI2luY2x1ZGUgPG9zMi5oPgotI2luY2x1ZGUgPHByb2Nlc3MuaD4KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotCi0vKiB1c2Ugc3RydWN0dXJlIHRvIHBhc3MgY29tbWFuZCBsaW5lIHRvIFB5dGhvbiB0aHJlYWQgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgaW50IGFyZ2M7Ci0gICAgY2hhciAqKmFyZ3Y7Ci0gICAgSFdORCBGcmFtZTsKLSAgICBpbnQgcnVubmluZzsKLX0gYXJnbGlzdDsKLQotLyogbWFrZSB0aGlzIGEgZ2xvYmFsIHRvIHNpbXBsaWZ5IGFjY2Vzcy4KLSAqIGl0IHNob3VsZCBvbmx5IGJlIHNldCBmcm9tIHRoZSBQeXRob24gdGhyZWFkLCBvciBieSB0aGUgY29kZSB0aGF0Ci0gKiBpbml0aWF0ZXMgdGhlIFB5dGhvbiB0aHJlYWQgd2hlbiB0aGUgdGhyZWFkIGNhbm5vdCBiZSBjcmVhdGVkLgotICovCi1pbnQgUHl0aG9uUkM7Ci0KLWV4dGVybiBETF9FWFBPUlQoaW50KSBQeV9NYWluKGludCwgY2hhciAqKik7Ci12b2lkIFB5dGhvblRocmVhZCh2b2lkICopOwotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIFVMT05HIEZyYW1lRmxhZ3MgPSBGQ0ZfVElUTEVCQVIgfAotICAgICAgICAgICAgICAgICAgICAgICBGQ0ZfU1lTTUVOVSB8Ci0gICAgICAgICAgICAgICAgICAgICAgIEZDRl9TSVpFQk9SREVSIHwKLSAgICAgICAgICAgICAgICAgICAgICAgRkNGX0hJREVCVVRUT04gfAotICAgICAgICAgICAgICAgICAgICAgICBGQ0ZfU0hFTExQT1NJVElPTiB8Ci0gICAgICAgICAgICAgICAgICAgICAgIEZDRl9UQVNLTElTVDsKLSAgICBIQUIgaGFiOwotICAgIEhNUSBobXE7Ci0gICAgSFdORCBDbGllbnQ7Ci0gICAgUU1TRyBxbXNnOwotICAgIGFyZ2xpc3QgYXJnczsKLSAgICBpbnQgcHl0aG9uX3RpZDsKLQotICAgIC8qIGluaXQgUE0gYW5kIGNyZWF0ZSBtZXNzYWdlIHF1ZXVlICovCi0gICAgaGFiID0gV2luSW5pdGlhbGl6ZSgwKTsKLSAgICBobXEgPSBXaW5DcmVhdGVNc2dRdWV1ZShoYWIsIDApOwotCi0gICAgLyogY3JlYXRlIGEgKGhpZGRlbikgV2luZG93IHRvIGhvdXNlIHRoZSB3aW5kb3cgcHJvY2VkdXJlICovCi0gICAgYXJncy5GcmFtZSA9IFdpbkNyZWF0ZVN0ZFdpbmRvdyhIV05EX0RFU0tUT1AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkZyYW1lRmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvblBNIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ2xpZW50KTsKLQotICAgIC8qIHJ1biBQeXRob24gaW50ZXJwcmV0ZXIgaW4gYSB0aHJlYWQgKi8KLSAgICBhcmdzLmFyZ2MgPSBhcmdjOwotICAgIGFyZ3MuYXJndiA9IGFyZ3Y7Ci0gICAgYXJncy5ydW5uaW5nID0gMDsKLSAgICBpZiAoLTEgPT0gKHB5dGhvbl90aWQgPSBfYmVnaW50aHJlYWQoUHl0aG9uVGhyZWFkLCBOVUxMLCAxMDI0ICogMTAyNCwgJmFyZ3MpKSkKLSAgICB7Ci0gICAgICAgIC8qIGNvdWxkbid0IHN0YXJ0IHRocmVhZCAqLwotICAgICAgICBXaW5BbGFybShIV05EX0RFU0tUT1AsIFdBX0VSUk9SKTsKLSAgICAgICAgUHl0aG9uUkMgPSAxOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvKiBwcm9jZXNzIFBNIG1lc3NhZ2VzLCB1bnRpbCBQeXRob24gZXhpdHMgKi8KLSAgICAgICAgd2hpbGUgKFdpbkdldE1zZyhoYWIsICZxbXNnLCBOVUxMSEFORExFLCAwLCAwKSkKLSAgICAgICAgICAgIFdpbkRpc3BhdGNoTXNnKGhhYiwgJnFtc2cpOwotICAgICAgICBpZiAoYXJncy5ydW5uaW5nID4gMCkKLSAgICAgICAgICAgIERvc0tpbGxUaHJlYWQocHl0aG9uX3RpZCk7Ci0gICAgfQotCi0gICAgLyogZGVzdHJveSB3aW5kb3csIHNodXRkb3duIG1lc3NhZ2UgcXVldWUgYW5kIFBNICovCi0gICAgV2luRGVzdHJveVdpbmRvdyhhcmdzLkZyYW1lKTsKLSAgICBXaW5EZXN0cm95TXNnUXVldWUoaG1xKTsKLSAgICBXaW5UZXJtaW5hdGUoaGFiKTsKLQotICAgIHJldHVybiBQeXRob25SQzsKLX0KLQotdm9pZCBQeXRob25UaHJlYWQodm9pZCAqYXJnbCkKLXsKLSAgICBIQUIgaGFiOwotICAgIGFyZ2xpc3QgKmFyZ3M7Ci0KLSAgICAvKiBQTSBpbml0aWFsaXNhdGlvbiAqLwotICAgIGhhYiA9IFdpbkluaXRpYWxpemUoMCk7Ci0KLSAgICAvKiBzdGFydCBQeXRob24gKi8KLSAgICBhcmdzID0gKGFyZ2xpc3QgKilhcmdsOwotICAgIGFyZ3MtPnJ1bm5pbmcgPSAxOwotICAgIFB5dGhvblJDID0gUHlfTWFpbihhcmdzLT5hcmdjLCBhcmdzLT5hcmd2KTsKLQotICAgIC8qIGVudGVyIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2VuZCB0aGUgdGVybWluYXRpb24gbWVzc2FnZSAqLwotICAgIERvc0VudGVyQ3JpdFNlYygpOwotICAgIGFyZ3MtPnJ1bm5pbmcgPSAwOwotICAgIFdpblBvc3RNc2coYXJncy0+RnJhbWUsIFdNX1FVSVQsIE5VTEwsIE5VTEwpOwotCi0gICAgLyogc2h1dGRvd24gUE0gYW5kIHRlcm1pbmF0ZSB0aHJlYWQgKi8KLSAgICBXaW5UZXJtaW5hdGUoaGFiKTsKLSAgICBfZW5kdGhyZWFkKCk7Ci19CmRpZmYgLS1naXQgYS9QQy9vczJ2YWNwcC9fdGtpbnRlci5kZWYgYi9QQy9vczJ2YWNwcC9fdGtpbnRlci5kZWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZGFiOGQuLjAwMDAwMDAKLS0tIGEvUEMvb3MydmFjcHAvX3RraW50ZXIuZGVmCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1MSUJSQVJZICAgICAgICBfVEtJTlRFUiBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFCi1ERVNDUklQVElPTiAgICAnUHl0aG9uIEV4dGVuc2lvbiBETEwgdjEuMCBmb3IgQWNjZXNzIHRvIFRjbC9UayBFbnZpcm9ubWVudCcKLVBST1RNT0RFCi1EQVRBICAgICAgICAgICBNVUxUSVBMRSBOT05TSEFSRUQKLQotRVhQT1JUUwotICAgICAgICAgICAgICAgaW5pdF90a2ludGVyCi0KZGlmZiAtLWdpdCBhL1BDL29zMnZhY3BwL2NvbmZpZy5jIGIvUEMvb3MydmFjcHAvY29uZmlnLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNmI1MjEuLjAwMDAwMDAKLS0tIGEvUEMvb3MydmFjcHAvY29uZmlnLmMKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKiAtKi0gQyAtKi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUNvcHlyaWdodCAoYykgMjAwMCwgQmVPcGVuLmNvbS4KLUNvcHlyaWdodCAoYykgMTk5NS0yMDAwLCBDb3Jwb3JhdGlvbiBmb3IgTmF0aW9uYWwgUmVzZWFyY2ggSW5pdGlhdGl2ZXMuCi1Db3B5cmlnaHQgKGMpIDE5OTAtMTk5NSwgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaCBDZW50cnVtLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotU2VlIHRoZSBmaWxlICJNaXNjL0NPUFlSSUdIVCIgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGFuZAotcmVkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCBhbmQgZm9yIGEgRElTQ0xBSU1FUiBPRiBBTEwgV0FSUkFOVElFUy4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogTW9kdWxlIGNvbmZpZ3VyYXRpb24gKi8KLQotLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLgotICAgU2VlIGluaXRfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0KLWV4dGVybiB2b2lkIGluaXRhcnJheSh2b2lkKTsKLWV4dGVybiB2b2lkIGluaXRhdWRpb29wKHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdGJpbmFzY2lpKHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdGNtYXRoKHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdGVycm5vKHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdGltYWdlb3Aodm9pZCk7Ci1leHRlcm4gdm9pZCBpbml0bWF0aCh2b2lkKTsKLWV4dGVybiB2b2lkIGluaXRtZDUodm9pZCk7Ci1leHRlcm4gdm9pZCBpbml0bnQodm9pZCk7Ci1leHRlcm4gdm9pZCBpbml0b3MyKHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdG9wZXJhdG9yKHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdHBvc2l4KHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdHJnYmltZyh2b2lkKTsKLWV4dGVybiB2b2lkIGluaXRzaWduYWwodm9pZCk7Ci1leHRlcm4gdm9pZCBpbml0c2VsZWN0KHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdF9zb2NrZXQodm9pZCk7Ci1leHRlcm4gdm9pZCBpbml0c3RydWN0KHZvaWQpOwotZXh0ZXJuIHZvaWQgaW5pdHRpbWUodm9pZCk7Ci1leHRlcm4gdm9pZCBpbml0X3RocmVhZCh2b2lkKTsKLWV4dGVybiB2b2lkIGluaXRwY3JlKHZvaWQpOwotI2lmZGVmIFdJTjMyCi1leHRlcm4gdm9pZCBpbml0bXN2Y3J0KHZvaWQpOwotI2VuZGlmCi0KLS8qIC0tIEFERE1PRFVMRSBNQVJLRVIgMSAtLSAqLwotCi1leHRlcm4gdm9pZCBQeU1hcnNoYWxfSW5pdCh2b2lkKTsKLWV4dGVybiB2b2lkIGluaXRpbXAodm9pZCk7Ci0KLXN0cnVjdCBfaW5pdHRhYiBfUHlJbXBvcnRfSW5pdHRhYltdID0gewotCi0gICAgICAgIHsiYXJyYXkiLCBpbml0YXJyYXl9LAotI2lmZGVmIE1fSTM4NgotICAgICAgICB7ImF1ZGlvb3AiLCBpbml0YXVkaW9vcH0sCi0jZW5kaWYKLSAgICAgICAgeyJiaW5hc2NpaSIsIGluaXRiaW5hc2NpaX0sCi0gICAgICAgIHsiY21hdGgiLCBpbml0Y21hdGh9LAotICAgICAgICB7ImVycm5vIiwgaW5pdGVycm5vfSwKLS8vICAgICAgICB7ImltYWdlb3AiLCBpbml0aW1hZ2VvcH0sCi0gICAgICAgIHsibWF0aCIsIGluaXRtYXRofSwKLSAgICAgICAgeyJtZDUiLCBpbml0bWQ1fSwKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fV0FUQ09NQ19fKQotICAgICAgICB7Im50IiwgaW5pdG50fSwgLyogVXNlIHRoZSBOVCBvcyBmdW5jdGlvbnMsIG5vdCBwb3NpeCAqLwotI2Vsc2UKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICB7Im9zMiIsIGluaXRvczJ9LAotI2Vsc2UKLSAgICAgICAgeyJwb3NpeCIsIGluaXRwb3NpeH0sCi0jZW5kaWYKLSNlbmRpZgotICAgICAgICB7Im9wZXJhdG9yIiwgaW5pdG9wZXJhdG9yfSwKLS8vICAgICAgICB7InJnYmltZyIsIGluaXRyZ2JpbWd9LAotICAgICAgICB7InNpZ25hbCIsIGluaXRzaWduYWx9LAotI2lmZGVmIFVTRV9TT0NLRVQKLSAgICAgICAgeyJfc29ja2V0IiwgaW5pdF9zb2NrZXR9LAotICAgICAgICB7InNlbGVjdCIsIGluaXRzZWxlY3R9LAotI2VuZGlmCi0gICAgICAgIHsic3RydWN0IiwgaW5pdHN0cnVjdH0sCi0gICAgICAgIHsidGltZSIsIGluaXR0aW1lfSwKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICB7Il90aHJlYWQiLCBpbml0X3RocmVhZH0sCi0jZW5kaWYKLSAgICAgICAgeyJwY3JlIiwgaW5pdHBjcmV9LAotI2lmZGVmIFdJTjMyCi0gICAgICAgIHsibXN2Y3J0IiwgaW5pdG1zdmNydH0sCi0jZW5kaWYKLQotLyogLS0gQURETU9EVUxFIE1BUktFUiAyIC0tICovCi0KLSAgICAgICAgLyogVGhpcyBtb2R1bGUgImxpdmVzIGluIiB3aXRoIG1hcnNoYWwuYyAqLwotICAgICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCi0KLSAgICAgICAgLyogVGhpcyBsaXZlcyBpdCB3aXRoIGltcG9ydC5jICovCi0gICAgICAgIHsiX2ltcCIsIGluaXRpbXB9LAotCi0gICAgICAgIC8qIFRoZXNlIGVudHJpZXMgYXJlIGhlcmUgZm9yIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyAqLwotICAgICAgICB7ImJ1aWx0aW5zIiwgTlVMTH0sCi0gICAgICAgIHsic3lzIiwgTlVMTH0sCi0KLSAgICAgICAgLyogU2VudGluZWwgKi8KLSAgICAgICAgezAsIDB9Ci19OwpkaWZmIC0tZ2l0IGEvUEMvb3MydmFjcHAvZ2V0cGF0aHAuYyBiL1BDL29zMnZhY3BwL2dldHBhdGhwLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViYzI4MjcuLjAwMDAwMDAKLS0tIGEvUEMvb3MydmFjcHAvZ2V0cGF0aHAuYworKysgL2Rldi9udWxsCkBAIC0xLDQ4MiArMCwwIEBACi0KLS8qIFJldHVybiB0aGUgaW5pdGlhbCBtb2R1bGUgc2VhcmNoIHBhdGguICovCi0vKiBVc2VkIGJ5IERPUywgT1MvMiwgV2luZG93cyAzLjEuICBXb3JrcyBvbiBOVCB0b28uICovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJvc2RlZnMuaCIKLQotI2lmZGVmIE1TX1dJTjMyCi0jaW5jbHVkZSA8d2luZG93cy5oPgotZXh0ZXJuIEJPT0wgUHlXaW5fSXNXaW4zMnModm9pZCk7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpZiBIQVZFX1VOSVNURF9ICi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYgLyogSEFWRV9VTklTVERfSCAqLwotCi0vKiBTZWFyY2ggaW4gc29tZSBjb21tb24gbG9jYXRpb25zIGZvciB0aGUgYXNzb2NpYXRlZCBQeXRob24gbGlicmFyaWVzLgotICoKLSAqIFR3byBkaXJlY3RvcmllcyBtdXN0IGJlIGZvdW5kLCB0aGUgcGxhdGZvcm0gaW5kZXBlbmRlbnQgZGlyZWN0b3J5Ci0gKiAocHJlZml4KSwgY29udGFpbmluZyB0aGUgY29tbW9uIC5weSBhbmQgLnB5YyBmaWxlcywgYW5kIHRoZSBwbGF0Zm9ybQotICogZGVwZW5kZW50IGRpcmVjdG9yeSAoZXhlY19wcmVmaXgpLCBjb250YWluaW5nIHRoZSBzaGFyZWQgbGlicmFyeQotICogbW9kdWxlcy4gIE5vdGUgdGhhdCBwcmVmaXggYW5kIGV4ZWNfcHJlZml4IGNhbiBiZSB0aGUgc2FtZSBkaXJlY3RvcnksCi0gKiBidXQgZm9yIHNvbWUgaW5zdGFsbGF0aW9ucywgdGhleSBhcmUgZGlmZmVyZW50LgotICoKLSAqIFB5X0dldFBhdGgoKSB0cmllcyB0byByZXR1cm4gYSBzZW5zaWJsZSBQeXRob24gbW9kdWxlIHNlYXJjaCBwYXRoLgotICoKLSAqIEZpcnN0LCB3ZSBsb29rIHRvIHNlZSBpZiB0aGUgZXhlY3V0YWJsZSBpcyBpbiBhIHN1YmRpcmVjdG9yeSBvZgotICogdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnkuICBXZSBjYWxjdWxhdGUgdGhlIGZ1bGwgcGF0aCBvZiB0aGUKLSAqIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIGFzIHByb2dwYXRoLiAgV2Ugd29yayBiYWNrd2FyZHMKLSAqIGFsb25nIHByb2dwYXRoIGFuZCBsb29rIGZvciAkZGlyL01vZHVsZXMvU2V0dXAuaW4sIGEgZGlzdGluY3RpdmUKLSAqIGxhbmRtYXJrLiAgSWYgZm91bmQsIHdlIHVzZSAkZGlyL0xpYiBhcyAkcm9vdC4gIFRoZSByZXR1cm5lZAotICogUHl0aG9uIHBhdGggaXMgdGhlIGNvbXBpbGVkICNkZWZpbmUgUFlUSE9OUEFUSCB3aXRoIGFsbCB0aGUgaW5pdGlhbAotICogIi4vbGliIiByZXBsYWNlZCBieSAkcm9vdC4KLSAqCi0gKiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIGEgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2UgcmV0dXJuIHRoYXQuCi0gKgotICogT3RoZXJ3aXNlIHdlIHRyeSB0byBmaW5kICRwcm9ncGF0aC9saWIvb3MucHksIGFuZCBpZiBmb3VuZCwgdGhlbgotICogcm9vdCBpcyAkcHJvZ3BhdGgvbGliLCBhbmQgd2UgcmV0dXJuIFB5dGhvbiBwYXRoIGFzIGNvbXBpbGVkIFBZVEhPTlBBVEgKLSAqIHdpdGggYWxsICIuL2xpYiIgcmVwbGFjZWQgYnkgJHJvb3QgKGFzIGFib3ZlKS4KLSAqCi0gKi8KLQotI2lmbmRlZiBMQU5ETUFSSwotI2RlZmluZSBMQU5ETUFSSyAibGliXFxvcy5weSIKLSNlbmRpZgotCi1zdGF0aWMgY2hhciBwcmVmaXhbTUFYUEFUSExFTisxXTsKLXN0YXRpYyBjaGFyIGV4ZWNfcHJlZml4W01BWFBBVEhMRU4rMV07Ci1zdGF0aWMgY2hhciBwcm9ncGF0aFtNQVhQQVRITEVOKzFdOwotc3RhdGljIGNoYXIgKm1vZHVsZV9zZWFyY2hfcGF0aCA9IE5VTEw7Ci0KLQotc3RhdGljIGludAotaXNfc2VwKGNoYXIgY2gpIC8qIGRldGVybWluZSBpZiAiY2giIGlzIGEgc2VwYXJhdG9yIGNoYXJhY3RlciAqLwotewotI2lmZGVmIEFMVFNFUAotICAgIHJldHVybiBjaCA9PSBTRVAgfHwgY2ggPT0gQUxUU0VQOwotI2Vsc2UKLSAgICByZXR1cm4gY2ggPT0gU0VQOwotI2VuZGlmCi19Ci0KLQotc3RhdGljIHZvaWQKLXJlZHVjZShjaGFyICpkaXIpCi17Ci0gICAgaW50IGkgPSBzdHJsZW4oZGlyKTsKLSAgICB3aGlsZSAoaSA+IDAgJiYgIWlzX3NlcChkaXJbaV0pKQotICAgICAgICAtLWk7Ci0gICAgZGlyW2ldID0gJ1wwJzsKLX0KLQotCi1zdGF0aWMgaW50Ci1leGlzdHMoY2hhciAqZmlsZW5hbWUpCi17Ci0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIHJldHVybiBzdGF0KGZpbGVuYW1lLCAmYnVmKSA9PSAwOwotfQotCi0KLS8qIEFkZCBhIHBhdGggY29tcG9uZW50LCBieSBhcHBlbmRpbmcgc3R1ZmYgdG8gYnVmZmVyLgotICAgYnVmZmVyIG11c3QgaGF2ZSBhdCBsZWFzdCBNQVhQQVRITEVOICsgMSBieXRlcyBhbGxvY2F0ZWQsIGFuZCBjb250YWluIGEKLSAgIE5VTC10ZXJtaW5hdGVkIHN0cmluZyB3aXRoIG5vIG1vcmUgdGhhbiBNQVhQQVRITEVOIGNoYXJhY3RlcnMgKG5vdCBjb3VudGluZwotICAgdGhlIHRyYWlsaW5nIE5VTCkuICBJdCdzIGEgZmF0YWwgZXJyb3IgaWYgaXQgY29udGFpbnMgYSBzdHJpbmcgbG9uZ2VyIHRoYW4KLSAgIHRoYXQgKGNhbGxlcnMgbXVzdCBiZSBjYXJlZnVsISkuICBJZiB0aGVzZSByZXF1aXJlbWVudHMgYXJlIG1ldCwgaXQncwotICAgZ3VhcmFudGVlZCB0aGF0IGJ1ZmZlciB3aWxsIHN0aWxsIGJlIGEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIHdpdGggbm8gbW9yZQotICAgdGhhbiBNQVhQQVRITEVOIGNoYXJhY3RlcnMgYXQgZXhpdC4gIElmIHN0dWZmIGlzIHRvbyBsb25nLCBvbmx5IGFzIG11Y2ggb2YKLSAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KLSovCi1zdGF0aWMgdm9pZAotam9pbihjaGFyICpidWZmZXIsIGNoYXIgKnN0dWZmKQotewotICAgIGludCBuLCBrOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgbiA9IHN0cmxlbihidWZmZXIpOwotICAgICAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbi0xXSkgJiYgbiA8IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBidWZmZXJbbisrXSA9IFNFUDsKLSAgICB9Ci0gICAgaWYgKG4gPiBNQVhQQVRITEVOKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW5wYXRoKCkiKTsKLSAgICBrID0gc3RybGVuKHN0dWZmKTsKLSAgICBpZiAobiArIGsgPiBNQVhQQVRITEVOKQotICAgICAgICBrID0gTUFYUEFUSExFTiAtIG47Ci0gICAgc3RybmNweShidWZmZXIrbiwgc3R1ZmYsIGspOwotICAgIGJ1ZmZlcltuK2tdID0gJ1wwJzsKLX0KLQotCi1zdGF0aWMgaW50Ci1zZWFyY2hfZm9yX3ByZWZpeChjaGFyICphcmd2MF9wYXRoLCBjaGFyICpsYW5kbWFyaykKLXsKLSAgICBpbnQgbjsKLQotICAgIC8qIFNlYXJjaCBmcm9tIGFyZ3YwX3BhdGgsIHVudGlsIHJvb3QgaXMgZm91bmQgKi8KLSAgICBzdHJjcHkocHJlZml4LCBhcmd2MF9wYXRoKTsKLSAgICBkbyB7Ci0gICAgICAgIG4gPSBzdHJsZW4ocHJlZml4KTsKLSAgICAgICAgam9pbihwcmVmaXgsIGxhbmRtYXJrKTsKLSAgICAgICAgaWYgKGV4aXN0cyhwcmVmaXgpKSB7Ci0gICAgICAgICAgICBwcmVmaXhbbl0gPSAnXDAnOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICAgICAgcHJlZml4W25dID0gJ1wwJzsKLSAgICAgICAgcmVkdWNlKHByZWZpeCk7Ci0gICAgfSB3aGlsZSAocHJlZml4WzBdKTsKLSAgICByZXR1cm4gMDsKLX0KLQotI2lmZGVmIE1TX1dJTjMyCi0jaW5jbHVkZSAibWFsbG9jLmgiIC8vIGZvciBhbGxvY2EgLSBzZWUgY29tbWVudHMgYmVsb3chCi1leHRlcm4gY29uc3QgY2hhciAqUHlXaW5fRExMVmVyc2lvblN0cmluZzsgLy8gYSBzdHJpbmcgbG9hZGVkIGZyb20gdGhlIERMTCBhdCBzdGFydHVwLgotCi0KLS8qIExvYWQgYSBQWVRIT05QQVRIIHZhbHVlIGZyb20gdGhlIHJlZ2lzdHJ5LgotICAgTG9hZCBmcm9tIGVpdGhlciBIS0VZX0xPQ0FMX01BQ0hJTkUgb3IgSEtFWV9DVVJSRU5UX1VTRVIuCi0KLSAgIFJldHVybnMgTlVMTCwgb3IgYSBwb2ludGVyIHRoYXQgc2hvdWxkIGJlIGZyZWVkLgotKi8KLQotc3RhdGljIGNoYXIgKgotZ2V0cHl0aG9ucmVncGF0aChIS0VZIGtleUJhc2UsIEJPT0wgYldpbjMycykKLXsKLSAgICBIS0VZIG5ld0tleSA9IDA7Ci0gICAgRFdPUkQgbmFtZVNpemUgPSAwOwotICAgIERXT1JEIGRhdGFTaXplID0gMDsKLSAgICBEV09SRCBudW1FbnRyaWVzID0gMDsKLSAgICBMT05HIHJjOwotICAgIGNoYXIgKnJldHZhbCA9IE5VTEw7Ci0gICAgY2hhciAqZGF0YUJ1ZjsKLSAgICBjb25zdCBjaGFyIGtleVByZWZpeFtdID0gIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCI7Ci0gICAgY29uc3QgY2hhciBrZXlTdWZmaXhbXSA9ICJcXFB5dGhvblBhdGgiOwotICAgIGludCB2ZXJzaW9uTGVuOwotICAgIGNoYXIgKmtleUJ1ZjsKLQotICAgIC8vIFRyaWVkIHRvIHVzZSBzeXNnZXQoIndpbnZlciIpIGJ1dCBoZXJlIGlzIHRvbyBlYXJseSA6LSgKLSAgICB2ZXJzaW9uTGVuID0gc3RybGVuKFB5V2luX0RMTFZlcnNpb25TdHJpbmcpOwotICAgIC8vIGFsbG9jYSA9PSBubyBmcmVlIHJlcXVpcmVkLCBidXQgbWVtb3J5IG9ubHkgbG9jYWwgdG8gZm4uCi0gICAgLy8gYWxzbyBubyBoZWFwIGZyYWdtZW50YXRpb24hICBBbSBJIGJlaW5nIHNpbGx5PwotICAgIGtleUJ1ZiA9IGFsbG9jYShzaXplb2Yoa2V5UHJlZml4KS0xICsgdmVyc2lvbkxlbiArIHNpemVvZihrZXlTdWZmaXgpKTsgLy8gY2hhcnMgb25seSwgcGx1cyAxIE5VTEwuCi0gICAgLy8gbG90cyBvZiBjb25zdGFudHMgaGVyZSBmb3IgdGhlIGNvbXBpbGVyIHRvIG9wdGltaXplIGF3YXkgOi0pCi0gICAgbWVtY3B5KGtleUJ1Ziwga2V5UHJlZml4LCBzaXplb2Yoa2V5UHJlZml4KS0xKTsKLSAgICBtZW1jcHkoa2V5QnVmK3NpemVvZihrZXlQcmVmaXgpLTEsIFB5V2luX0RMTFZlcnNpb25TdHJpbmcsIHZlcnNpb25MZW4pOwotICAgIG1lbWNweShrZXlCdWYrc2l6ZW9mKGtleVByZWZpeCktMSt2ZXJzaW9uTGVuLCBrZXlTdWZmaXgsIHNpemVvZihrZXlTdWZmaXgpKTsgLy8gTlVMTCBjb21lcyB3aXRoIHRoaXMgb25lIQotCi0gICAgcmM9UmVnT3BlbktleShrZXlCYXNlLAotICAgICAgICAgICAgICAgICAga2V5QnVmLAotICAgICAgICAgICAgICAgICAgJm5ld0tleSk7Ci0gICAgaWYgKHJjPT1FUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgIFJlZ1F1ZXJ5SW5mb0tleShuZXdLZXksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAmbnVtRW50cmllcywgJm5hbWVTaXplLCAmZGF0YVNpemUsIE5VTEwsIE5VTEwpOwotICAgIH0KLSAgICBpZiAoYldpbjMycyAmJiBudW1FbnRyaWVzPT0wICYmIGRhdGFTaXplPT0wKSB7Ci0gICAgICAgIC8qIG11c3QgaGFyZGNvZGUgZm9yIFdpbjMycyAqLwotICAgICAgICBudW1FbnRyaWVzID0gMTsKLSAgICAgICAgZGF0YVNpemUgPSA1MTE7Ci0gICAgfQotICAgIGlmIChudW1FbnRyaWVzKSB7Ci0gICAgICAgIC8qIExvb3Agb3ZlciBhbGwgc3Via2V5cy4gKi8KLSAgICAgICAgLyogV2luMzJzIGRvZXNudCBrbm93IGhvdyBtYW55IHN1YmtleXMsIHNvIHdlIGRvCi0gICAgICAgICAgIGl0IHR3aWNlICovCi0gICAgICAgIGNoYXIga2V5QnVmW01BWF9QQVRIKzFdOwotICAgICAgICBpbnQgaW5kZXggPSAwOwotICAgICAgICBpbnQgb2ZmID0gMDsKLSAgICAgICAgZm9yKGluZGV4PTA7O2luZGV4KyspIHsKLSAgICAgICAgICAgIGxvbmcgcmVxZFNpemUgPSAwOwotICAgICAgICAgICAgRFdPUkQgcmMgPSBSZWdFbnVtS2V5KG5ld0tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwga2V5QnVmLCBNQVhfUEFUSCsxKTsKLSAgICAgICAgICAgIGlmIChyYykgYnJlYWs7Ci0gICAgICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWUobmV3S2V5LCBrZXlCdWYsIE5VTEwsICZyZXFkU2l6ZSk7Ci0gICAgICAgICAgICBpZiAocmMpIGJyZWFrOwotICAgICAgICAgICAgaWYgKGJXaW4zMnMgJiYgcmVxZFNpemU9PTApIHJlcWRTaXplID0gNTEyOwotICAgICAgICAgICAgZGF0YVNpemUgKz0gcmVxZFNpemUgKyAxOyAvKiAxIGZvciB0aGUgIjsiICovCi0gICAgICAgIH0KLSAgICAgICAgZGF0YUJ1ZiA9IG1hbGxvYyhkYXRhU2l6ZSsxKTsKLSAgICAgICAgaWYgKGRhdGFCdWY9PU5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogcHJldHR5IHNlcmlvdXM/ICBSYWlzZSBlcnJvcj8gKi8KLSAgICAgICAgLyogTm93IGxvb3Agb3ZlciwgZ3JhYmJpbmcgdGhlIHBhdGhzLgotICAgICAgICAgICBTdWJrZXlzIGJlZm9yZSBtYWluIGxpYnJhcnkgKi8KLSAgICAgICAgZm9yKGluZGV4PTA7O2luZGV4KyspIHsKLSAgICAgICAgICAgIGludCBhZGp1c3Q7Ci0gICAgICAgICAgICBsb25nIHJlcWRTaXplID0gZGF0YVNpemU7Ci0gICAgICAgICAgICBEV09SRCByYyA9IFJlZ0VudW1LZXkobmV3S2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBrZXlCdWYsTUFYX1BBVEgrMSk7Ci0gICAgICAgICAgICBpZiAocmMpIGJyZWFrOwotICAgICAgICAgICAgcmMgPSBSZWdRdWVyeVZhbHVlKG5ld0tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlCdWYsIGRhdGFCdWYrb2ZmLCAmcmVxZFNpemUpOwotICAgICAgICAgICAgaWYgKHJjKSBicmVhazsKLSAgICAgICAgICAgIGlmIChyZXFkU2l6ZT4xKSB7Ci0gICAgICAgICAgICAgICAgLyogSWYgTm90aGluZywgb3Igb25seSAnXDAnIGNvcGllZC4gKi8KLSAgICAgICAgICAgICAgICBhZGp1c3QgPSBzdHJsZW4oZGF0YUJ1ZitvZmYpOwotICAgICAgICAgICAgICAgIGRhdGFTaXplIC09IGFkanVzdDsKLSAgICAgICAgICAgICAgICBvZmYgKz0gYWRqdXN0OwotICAgICAgICAgICAgICAgIGRhdGFCdWZbb2ZmKytdID0gJzsnOwotICAgICAgICAgICAgICAgIGRhdGFCdWZbb2ZmXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgZGF0YVNpemUtLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvKiBBZGRpdGlvbmFsbHksIHdpbjMycyBkb2VzbnQgd29yayBhcyBleHBlY3RlZCwgc28KLSAgICAgICAgICAgdGhlIHNwZWNpZmljIHN0cmxlbigpIGlzIHJlcXVpcmVkIGZvciAzLjEuICovCi0gICAgICAgIHJjID0gUmVnUXVlcnlWYWx1ZShuZXdLZXksICIiLCBkYXRhQnVmK29mZiwgJmRhdGFTaXplKTsKLSAgICAgICAgaWYgKHJjPT1FUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBpZiAoc3RybGVuKGRhdGFCdWYpPT0wKQotICAgICAgICAgICAgICAgIGZyZWUoZGF0YUJ1Zik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dmFsID0gZGF0YUJ1ZjsgLyogY2FsbGVyIHdpbGwgZnJlZSAqLwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyZWUoZGF0YUJ1Zik7Ci0gICAgfQotCi0gICAgaWYgKG5ld0tleSkKLSAgICAgICAgUmVnQ2xvc2VLZXkobmV3S2V5KTsKLSAgICByZXR1cm4gcmV0dmFsOwotfQotI2VuZGlmIC8qIE1TX1dJTjMyICovCi0KLXN0YXRpYyB2b2lkCi1nZXRfcHJvZ3BhdGgodm9pZCkKLXsKLSAgICBleHRlcm4gY2hhciAqUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7Ci0gICAgY2hhciAqcGF0aCA9IGdldGVudigiUEFUSCIpOwotICAgIGNoYXIgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwotCi0jaWZkZWYgTVNfV0lOMzIKLSAgICBpZiAoR2V0TW9kdWxlRmlsZU5hbWUoTlVMTCwgcHJvZ3BhdGgsIE1BWFBBVEhMRU4pKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBpZiAocHJvZyA9PSBOVUxMIHx8ICpwcm9nID09ICdcMCcpCi0gICAgICAgIHByb2cgPSAicHl0aG9uIjsKLQotICAgIC8qIElmIHRoZXJlIGlzIG5vIHNsYXNoIGluIHRoZSBhcmd2MCBwYXRoLCB0aGVuIHdlIGhhdmUgdG8KLSAgICAgKiBhc3N1bWUgcHl0aG9uIGlzIG9uIHRoZSB1c2VyJ3MgJFBBVEgsIHNpbmNlIHRoZXJlJ3Mgbm8KLSAgICAgKiBvdGhlciB3YXkgdG8gZmluZCBhIGRpcmVjdG9yeSB0byBzdGFydCB0aGUgc2VhcmNoIGZyb20uICBJZgotICAgICAqICRQQVRIIGlzbid0IGV4cG9ydGVkLCB5b3UgbG9zZS4KLSAgICAgKi8KLSNpZmRlZiBBTFRTRVAKLSAgICBpZiAoc3RyY2hyKHByb2csIFNFUCkgfHwgc3RyY2hyKHByb2csIEFMVFNFUCkpCi0jZWxzZQotICAgIGlmIChzdHJjaHIocHJvZywgU0VQKSkKLSNlbmRpZgotICAgICAgICBzdHJjcHkocHJvZ3BhdGgsIHByb2cpOwotICAgIGVsc2UgaWYgKHBhdGgpIHsKLSAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIGNoYXIgKmRlbGltID0gc3RyY2hyKHBhdGgsIERFTElNKTsKLQotICAgICAgICAgICAgaWYgKGRlbGltKSB7Ci0gICAgICAgICAgICAgICAgaW50IGxlbiA9IGRlbGltIC0gcGF0aDsKLSAgICAgICAgICAgICAgICBzdHJuY3B5KHByb2dwYXRoLCBwYXRoLCBsZW4pOwotICAgICAgICAgICAgICAgICoocHJvZ3BhdGggKyBsZW4pID0gJ1wwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzdHJjcHkocHJvZ3BhdGgsIHBhdGgpOwotCi0gICAgICAgICAgICBqb2luKHByb2dwYXRoLCBwcm9nKTsKLSAgICAgICAgICAgIGlmIChleGlzdHMocHJvZ3BhdGgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBpZiAoIWRlbGltKSB7Ci0gICAgICAgICAgICAgICAgcHJvZ3BhdGhbMF0gPSAnXDAnOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcGF0aCA9IGRlbGltICsgMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHByb2dwYXRoWzBdID0gJ1wwJzsKLX0KLQotc3RhdGljIHZvaWQKLWNhbGN1bGF0ZV9wYXRoKHZvaWQpCi17Ci0gICAgY2hhciBhcmd2MF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBidWZzejsKLSAgICBjaGFyICpweXRob25ob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwotICAgIGNoYXIgKmVudnBhdGggPSBQeV9HRVRFTlYoIlBZVEhPTlBBVEgiKTsKLSNpZmRlZiBNU19XSU4zMgotICAgIGNoYXIgKm1hY2hpbmVwYXRoLCAqdXNlcnBhdGg7Ci0KLSAgICAvKiBBcmUgd2UgcnVubmluZyB1bmRlciBXaW5kb3dzIDMuMSgxKSBXaW4zMnM/ICovCi0gICAgaWYgKFB5V2luX0lzV2luMzJzKCkpIHsKLSAgICAgICAgLyogT25seSBDTEFTU0VTX1JPT1QgaXMgc3VwcG9ydGVkICovCi0gICAgICAgIG1hY2hpbmVwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NMQVNTRVNfUk9PVCwgVFJVRSk7Ci0gICAgICAgIHVzZXJwYXRoID0gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBGQUxTRSk7Ci0gICAgICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgRkFMU0UpOwotICAgIH0KLSNlbmRpZgotCi0gICAgZ2V0X3Byb2dwYXRoKCk7Ci0gICAgc3RyY3B5KGFyZ3YwX3BhdGgsIHByb2dwYXRoKTsKLSAgICByZWR1Y2UoYXJndjBfcGF0aCk7Ci0gICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCB8fCAqcHl0aG9uaG9tZSA9PSAnXDAnKSB7Ci0gICAgICAgIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCi0gICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBweXRob25ob21lID0gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgY2hhciAqZGVsaW07Ci0KLSAgICAgICAgc3RyY3B5KHByZWZpeCwgcHl0aG9uaG9tZSk7Ci0KLSAgICAvKiBFeHRyYWN0IEFueSBPcHRpb25hbCBUcmFpbGluZyBFWEVDX1BSRUZJWCAqLwotICAgIC8qIGUuZy4gUFlUSE9OSE9NRT08cHJlZml4Pjo8ZXhlY19wcmVmaXg+ICAgKi8KLSAgICBkZWxpbSA9IHN0cmNocihwcmVmaXgsIERFTElNKTsKLSAgICBpZiAoZGVsaW0pIHsKLSAgICAgICAgKmRlbGltID0gJ1wwJzsKLSAgICAgICAgc3RyY3B5KGV4ZWNfcHJlZml4LCBkZWxpbSsxKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RyY3B5KGV4ZWNfcHJlZml4LCBFWEVDX1BSRUZJWCk7Ci0gICAgfQotCi0gICAgaWYgKGVudnBhdGggJiYgKmVudnBhdGggPT0gJ1wwJykKLSAgICAgICAgZW52cGF0aCA9IE5VTEw7Ci0KLSAgICAvKiBXZSBuZWVkIHRvIGNvbnN0cnVjdCBhIHBhdGggZnJvbSB0aGUgZm9sbG93aW5nIHBhcnRzOgotICAgICAgICgxKSB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaWYgc2V0OwotICAgICAgICgyKSBmb3IgV2luMzIsIHRoZSBtYWNoaW5lcGF0aCBhbmQgdXNlcnBhdGgsIGlmIHNldDsKLSAgICAgICAoMykgdGhlIFBZVEhPTlBBVEggY29uZmlnIG1hY3JvLCB3aXRoIHRoZSBsZWFkaW5nICIuIgotICAgICAgICAgICBvZiBlYWNoIGNvbXBvbmVudCByZXBsYWNlZCB3aXRoIHB5dGhvbmhvbWUsIGlmIHNldDsKLSAgICAgICAoNCkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBleGVjdXRhYmxlIChhcmd2MF9wYXRoKS4KLSAgICAgICBUaGUgbGVuZ3RoIGNhbGN1bGF0aW9uIGNhbGN1bGF0ZXMgIzMgZmlyc3QuCi0gICAgKi8KLQotICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KLSAgICBpZiAocHl0aG9uaG9tZSAhPSBOVUxMKSB7Ci0gICAgICAgIGNoYXIgKnA7Ci0gICAgICAgIGJ1ZnN6ID0gMTsKLSAgICAgICAgZm9yIChwID0gUFlUSE9OUEFUSDsgKnA7IHArKykgewotICAgICAgICAgICAgaWYgKCpwID09IERFTElNKQotICAgICAgICAgICAgICAgIGJ1ZnN6Kys7IC8qIG51bWJlciBvZiBERUxJTSBwbHVzIG9uZSAqLwotICAgICAgICB9Ci0gICAgICAgIGJ1ZnN6ICo9IHN0cmxlbihweXRob25ob21lKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBidWZzeiA9IDA7Ci0gICAgYnVmc3ogKz0gc3RybGVuKFBZVEhPTlBBVEgpICsgMTsKLSAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQotICAgICAgICBidWZzeiArPSBzdHJsZW4oZW52cGF0aCkgKyAxOwotICAgIGJ1ZnN6ICs9IHN0cmxlbihhcmd2MF9wYXRoKSArIDE7Ci0jaWZkZWYgTVNfV0lOMzIKLSAgICBpZiAobWFjaGluZXBhdGgpCi0gICAgICAgIGJ1ZnN6ICs9IHN0cmxlbihtYWNoaW5lcGF0aCkgKyAxOwotICAgIGlmICh1c2VycGF0aCkKLSAgICAgICAgYnVmc3ogKz0gc3RybGVuKHVzZXJwYXRoKSArIDE7Ci0jZW5kaWYKLQotICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IGJ1ZiA9IG1hbGxvYyhidWZzeik7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFdlIGNhbid0IGV4aXQsIHNvIHByaW50IGEgd2FybmluZyBhbmQgbGltcCBhbG9uZyAqLwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IG1hbGxvYyBkeW5hbWljIFBZVEhPTlBBVEguXG4iKTsKLSAgICAgICAgaWYgKGVudnBhdGgpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVXNpbmcgZGVmYXVsdCBzdGF0aWMgJFBZVEhPTlBBVEguXG4iKTsKLSAgICAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IGVudnBhdGg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGVudmlyb25tZW50ICRQWVRIT05QQVRILlxuIik7Ci0gICAgICAgICAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBQWVRIT05QQVRIOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZW52cGF0aCkgewotICAgICAgICBzdHJjcHkoYnVmLCBlbnZwYXRoKTsKLSAgICAgICAgYnVmID0gc3RyY2hyKGJ1ZiwgJ1wwJyk7Ci0gICAgICAgICpidWYrKyA9IERFTElNOwotICAgIH0KLSNpZmRlZiBNU19XSU4zMgotICAgIGlmIChtYWNoaW5lcGF0aCkgewotICAgICAgICBzdHJjcHkoYnVmLCBtYWNoaW5lcGF0aCk7Ci0gICAgICAgIGJ1ZiA9IHN0cmNocihidWYsICdcMCcpOwotICAgICAgICAqYnVmKysgPSBERUxJTTsKLSAgICB9Ci0gICAgaWYgKHVzZXJwYXRoKSB7Ci0gICAgICAgIHN0cmNweShidWYsIHVzZXJwYXRoKTsKLSAgICAgICAgYnVmID0gc3RyY2hyKGJ1ZiwgJ1wwJyk7Ci0gICAgICAgICpidWYrKyA9IERFTElNOwotICAgIH0KLSNlbmRpZgotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHN0cmNocihidWYsICdcMCcpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciAqcCA9IFBZVEhPTlBBVEg7Ci0gICAgICAgIGNoYXIgKnE7Ci0gICAgICAgIGludCBuOwotICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBxID0gc3RyY2hyKHAsIERFTElNKTsKLSAgICAgICAgICAgIGlmIChxID09IE5VTEwpCi0gICAgICAgICAgICAgICAgbiA9IHN0cmxlbihwKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuID0gcS1wOwotICAgICAgICAgICAgaWYgKHBbMF0gPT0gJy4nICYmIGlzX3NlcChwWzFdKSkgewotICAgICAgICAgICAgICAgIHN0cmNweShidWYsIHB5dGhvbmhvbWUpOwotICAgICAgICAgICAgICAgIGJ1ZiA9IHN0cmNocihidWYsICdcMCcpOwotICAgICAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgICAgICBuLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdHJuY3B5KGJ1ZiwgcCwgbik7Ci0gICAgICAgICAgICBidWYgKz0gbjsKLSAgICAgICAgICAgIGlmIChxID09IE5VTEwpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKLSAgICAgICAgICAgIHAgPSBxKzE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGFyZ3YwX3BhdGgpIHsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgICAgIHN0cmNweShidWYsIGFyZ3YwX3BhdGgpOwotICAgICAgICBidWYgPSBzdHJjaHIoYnVmLCAnXDAnKTsKLSAgICB9Ci0gICAgKmJ1ZiA9ICdcMCc7Ci19Ci0KLQotLyogRXh0ZXJuYWwgaW50ZXJmYWNlICovCi0KLWNoYXIgKgotUHlfR2V0UGF0aCh2b2lkKQotewotICAgIGlmICghbW9kdWxlX3NlYXJjaF9wYXRoKQotICAgICAgICBjYWxjdWxhdGVfcGF0aCgpOwotCi0gICAgcmV0dXJuIG1vZHVsZV9zZWFyY2hfcGF0aDsKLX0KLQotY2hhciAqCi1QeV9HZXRQcmVmaXgodm9pZCkKLXsKLSAgICBpZiAoIW1vZHVsZV9zZWFyY2hfcGF0aCkKLSAgICAgICAgY2FsY3VsYXRlX3BhdGgoKTsKLQotICAgIHJldHVybiBwcmVmaXg7Ci19Ci0KLWNoYXIgKgotUHlfR2V0RXhlY1ByZWZpeCh2b2lkKQotewotICAgIGlmICghbW9kdWxlX3NlYXJjaF9wYXRoKQotICAgICAgICBjYWxjdWxhdGVfcGF0aCgpOwotCi0gICAgcmV0dXJuIGV4ZWNfcHJlZml4OwotfQotCi1jaGFyICoKLVB5X0dldFByb2dyYW1GdWxsUGF0aCh2b2lkKQotewotICAgIGlmICghbW9kdWxlX3NlYXJjaF9wYXRoKQotICAgICAgICBjYWxjdWxhdGVfcGF0aCgpOwotCi0gICAgcmV0dXJuIHByb2dwYXRoOwotfQpkaWZmIC0tZ2l0IGEvUEMvb3MydmFjcHAvbWFrZWZpbGUgYi9QQy9vczJ2YWNwcC9tYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJmMGFkYy4uMDAwMDAwMAotLS0gYS9QQy9vczJ2YWNwcC9tYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDE1NDkgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyAgICAgICAgICBUb3AtTGV2ZWwgTWFrZWZpbGUgZm9yIEJ1aWxkaW5nIFB5dGhvbiBmb3IgT1MvMgotIwotIyBUaGlzIG1ha2VmaWxlIHdhcyBkZXZlbG9wZWQgZm9yIHVzZSB3aXRoIElCTSdzIFZpc3VhbEFnZSBDL0MrKwotIyBmb3IgT1MvMiBjb21waWxlciwgdmVyc2lvbiAzLjAsIHdpdGggRml4cGFjayA4IGFwcGxpZWQuICBJdCB1c2VzCi0jIHZlcnNpb24gNC4wIG9mIHRoZSBOTUFLRSB0b29sIHRoYXQgY29tZXMgd2l0aCB0aGF0IHBhY2thZ2UuCi0jCi0jIFRoZSBvdXRwdXQgb2YgdGhlIGJ1aWxkIGlzIGEgbGFyZ2lzaCBQeXRob24yMy5ETEwgY29udGFpbmluZyB0aGUKLSMgZXNzZW50aWFsIG1vZHVsZXMgb2YgUHl0aG9uIGFuZCBhIHNtYWxsIFB5dGhvbi5leGUgcHJvZ3JhbSB0byBzdGFydAotIyB0aGUgaW50ZXJwcmV0ZXIuICBXaGVuIGVtYmVkZGluZyBQeXRob24gd2l0aGluIGFub3RoZXIgcHJvZ3JhbSwgb25seQotIyBQeXRob24yMy5ETEwgaXMgbmVlZGVkLgotIwotIyBUaGVzZSB0d28gYmluYXJpZXMgY2FuIGJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggdGhlIFZpc3VhbEFnZSBDL0MrKwotIyBydW50aW1lIGxpYnJhcnkgKHByb2R1Y2luZyBsYXJnZXIgYmluYXJpZXMpLCBvciBkeW5hbWljYWxseSBsaW5rZWQKLSMgdG8gbWFrZSBzbWFsbGVyIG9uZXMgdGhhdCByZXF1aXJlIHRoZSBjb21waWxlciB0byBiZSBpbnN0YWxsZWQgb24KLSMgYW55IHN5c3RlbSBQeXRob24gaXMgdXNlZCBvbi4gIFJldmlldyB0aGUgL0dkKyBjb21waWxlciBvcHRpb24gZm9yCi0jIGhvdyB0byBkbyB0aGlzLgotIwotIyBOT1RFOiBJQk0ncyBOTUFLRSA0LjAgaXMgcmF0aGVyIGR1bWIsIHJlcXVpcmluZyB0aGlzIG1ha2VmaWxlIHRvCi0jICAgICAgIGJlIG11Y2ggbW9yZSBjb21wbGljYXRlZCB0aGFuIG5lY2Vzc2FyeS4gIEkgdXNlIE9wdXNNQUtFCi0jICAgICAgIG15c2VsZiBmb3IgYSBtdWNoIG1vcmUgcG93ZXJmdWwgTUFLRSB0b29sIGJ1dCBub3QgZXZlcnlvbmUKLSMgICAgICAgd2lzaGVzIHRvIGJ1eSBpdC4gIEhvd2V2ZXIsIGFzIGEgcmVzdWx0IEkgZGlkbid0IGhvb2sgaW4KLSMgICAgICAgdGhlIGRlcGVuZGVuY2llcyBvbiB0aGUgaW5jbHVkZSBmaWxlcyBhcyBOTUFLRSBoYXMgbm8gZWFzeQotIyAgICAgICB3YXkgdG8gZG8gdGhpcyB3aXRob3V0IGV4cGxpY2l0bHkgc3BlbGxpbmcgaXQgYWxsIG91dC4KLSMKLSMgSGlzdG9yeSAoTW9zdCBSZWNlbnQgRmlyc3QpCi0jCi0jIDI2LVNlcC05OCBqcnIgUmV0ZXN0ZWQgYW5kIGFkanVzdGVkIGZvciBidWlsZGluZyB3L1B5dGhvbiAxLjUuMmExCi0jIDIwLU5vdi05NyBqcnIgQ2xlYW5lZCBVcCBmb3IgQXBwbHlpbmcgdG8gRGlzdHJpYnV0aW9uCi0jIDI5LU9jdC05NyBqcnIgTW9kaWZpZWQgZm9yIFVzZSB3aXRoIFB5dGhvbiAxLjUgQWxwaGEgNAotIyAwMy1BdWctOTYganJyIE9yaWdpbmFsIGZvciBVc2Ugd2l0aCBQeXRob24gMS40IFJlbGVhc2UKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQbGFjZXMgYW5kIFRoaW5ncwotIyMjIyMjIyMjIyMjIyMjIyMjIwotUFlfTU9EVUxFUyAgICAgID0gLi5cLi5cTW9kdWxlcwotUFlfT0JKRUNUUyAgICAgID0gLi5cLi5cT2JqZWN0cwotUFlfUEFSU0VSICAgICAgID0gLi5cLi5cUGFyc2VyCi1QWV9QWVRIT04gICAgICAgPSAuLlwuLlxQeXRob24KLVBZX0lOQ0xVREUgICAgICA9IC4uXC4uXEluY2x1ZGUKLVBZX0lOQ0xVREVTICAgICA9IC47JChQWV9JTkNMVURFKTskKFBZX01PRFVMRVMpOyQoUFlfT0JKRUNUUyk7JChQWV9QQVJTRVIpOyQoUFlfUFlUSE9OKQotCi0jIEZpbGUgdG8gQ29sbGVjdCBXb3JkeSBDb21waWxlciBPdXRwdXQgcmUgRXJyb3JzCi1FUlJTCQk9IG1ha2Uub3V0Ci0KLSMgV2hlcmUgdG8gRmluZCB0aGUgSUJNIFRDUC9JUCBTb2NrZXQgSW5jbHVkZXMgYW5kIExpYnJhcmllcwotT1MyVENQSVAgICAgICAgID0gQzpcTVBUTgotCi0jIFdoZXJlIHRvIEZpbmQgdGhlIFRjbC9UayBCYXNlIERpcmVjdG9yeSBmb3IgTGlicy9JbmNsdWRlcwotVENMVEsJCT0gRDpcVGNsVGsKLVRDTEJBU0UJCT0gRDpcVGNsNy42XE9TMgotVEtCQVNFCQk9IEQ6XFRrNC4yXE9TMgotCi0jIFdoZXJlIHRvIFB1dCB0aGUgLk9CSiBGaWxlcywgVG8gS2VlcCBUaGVtIE91dCBvZiB0aGUgV2F5Ci1QQVRIT0JKCQk9IG9iagotCi0jIFNlYXJjaCBQYXRoIGZvciBJbmNsdWRlIEZpbGVzCi1QUk9KSU5DTFVERQk9IC47JChUQ0xCQVNFKTskKFRLQkFTRSk7JChPUzJUQ1BJUClcSW5jbHVkZTskKFBZX0lOQ0xVREVTKQotCi0jIFBsYWNlIHRvIFNlYXJjaCBmb3IgU291cmNlcyByZSBPcHVzTUFLRSBEZXBlbmRlbmN5IEdlbmVyYXRvciAoQ29tbWVyY2lhbCkKLU1LTUZfU1JDUwk9ICQoUFlfTU9EVUxFUylcKi5jICQoUFlfT0JKRUNUUylcKi5jICQoUFlfUEFSU0VSKVwqLmMgJChQWV9QWVRIT04pXCouYwotCi0jLkhEUlBBVEguYwk6PSAkKFBST0pJTkNMVURFLDs9ICkgJCguSERSUEFUSC5jKQotIy5QQVRILmMgICAgICAgICA9IC47JChQWV9NT0RVTEVTKTskKFBZX09CSkVDVFMpOyQoUFlfUEFSU0VSKTskKFBZX1BZVEhPTikKLU9USEVSTElCUwk9IHNvMzJkbGwubGliIHRjcDMyZGxsLmxpYiAjIFRjbDc2LmxpYiBUazQyLmxpYgotCi0jIyMjIyMjIyMjIyMjIyMjIwotIyBJbmZlcmVuY2UgUnVsZXMKLSMjIyMjIyMjIyMjIyMjIyMjCi17JChQWV9NT0RVTEVTKVx9LmN7JChQQVRIT0JKKVx9Lm9iajoJIyBDb21waWxlIEMgQ29kZSBpbnRvIGEgLk9CSiBGaWxlCi0JQCBFY2hvIENvbXBpbGluZyAkPAotCUAgJChDQykgLWMgJChDRkxBR1MpIC1GbyRAICQ8ID4+JChFUlJTKQotCi17JChQWV9PQkpFQ1RTKVx9LmN7JChQQVRIT0JKKVx9Lm9iajoJIyBDb21waWxlIEMgQ29kZSBpbnRvIGEgLk9CSiBGaWxlCi0JQCBFY2hvIENvbXBpbGluZyAkPAotCUAgJChDQykgLWMgJChDRkxBR1MpIC1GbyRAICQ8ID4+JChFUlJTKQotCi17JChQWV9QQVJTRVIpXH0uY3skKFBBVEhPQkopXH0ub2JqOgkjIENvbXBpbGUgQyBDb2RlIGludG8gYSAuT0JKIEZpbGUKLQlAIEVjaG8gQ29tcGlsaW5nICQ8Ci0JQCAkKENDKSAtYyAkKENGTEFHUykgLUZvJEAgJDwgPj4kKEVSUlMpCi0KLXskKFBZX1BZVEhPTilcfS5jeyQoUEFUSE9CSilcfS5vYmo6CSMgQ29tcGlsZSBDIENvZGUgaW50byBhIC5PQkogRmlsZQotCUAgRWNobyBDb21waWxpbmcgJDwKLQlAICQoQ0MpIC1jICQoQ0ZMQUdTKSAtRm8kQCAkPCA+PiQoRVJSUykKLQotLmN7JChQQVRIT0JKKVx9Lm9iajoJCQkjIENvbXBpbGUgQyBDb2RlIGludG8gYSAuT0JKIEZpbGUKLQlAIEVjaG8gQ29tcGlsaW5nICQ8Ci0JQCAkKENDKSAtYyAkKENGTEFHUykgLUZvJEAgJDwgPj4kKEVSUlMpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUHl0aG9uIFN1YnN5c3RlbXMKLSMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBQWVRIT04gaXMgdGhlIGNlbnRyYWwgY29yZSwgY29udGFpbmluZyB0aGUgYnVpbHRpbnMgYW5kIGludGVycHJldGVyLgotUFlUSE9OCQk9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQmx0aW5Nb2R1bGUub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQ0V2YWwub2JqICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQ29tcGlsZS5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcRXJyb3JzLm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcRnJvemVuLm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0YXJncy5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0Q29tcGlsZXIub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0Q29weXJpZ2h0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0TVRpbWUub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0T3B0Lm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0UGxhdGZvcm0ub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR2V0VmVyc2lvbi5vYmogICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR3JhbUluaXQub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcSW1wb3J0Lm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcSW1wb3J0REwub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTWFyc2hhbC5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTW9kU3VwcG9ydC5vYmogICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTXlTdHJ0b3VsLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcUHlTdGF0ZS5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcUHl0aG9uUnVuLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcU3RydWN0TWVtYmVyLm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcU3lzTW9kdWxlLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcVGhyZWFkLm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcVHJhY2VCYWNrLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcRnJvemVuTWFpbi5vYmogICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcZXhjZXB0aW9ucy5vYmogICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcc3ltdGFibGUub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcY29kZWNzLm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcZnV0dXJlLm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcZHlubG9hZF9vczIub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcbXlzbnByaW50Zi5vYmogICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcaXRlcm9iamVjdC5vYmoKLQotIyBQeXRob24ncyBJbnRlcm5hbCBQYXJzZXIKLVBBUlNFUgkJPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQWNjZWxlci5vYmogICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxHcmFtbWFyMS5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXExpc3ROb2RlLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTm9kZS5vYmogICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxQYXJzZXIub2JqICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFBhcnNlVG9rLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQml0U2V0Lm9iaiAgICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxNZXRhR3JhbW1hci5vYmogICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFRva2VuaXplci5vYmogICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTXlSZWFkbGluZS5vYmoKLQotIyBQeXRob24gT2JqZWN0IFR5cGVzCi1PQkpFQ1RTCQk9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxBYnN0cmFjdC5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEJvb2xPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQnVmZmVyT2JqZWN0Lm9iaiAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxDZWxsT2JqZWN0Lm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXENsYXNzT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQ09iamVjdC5vYmogICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxDb21wbGV4T2JqZWN0Lm9iaiBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXERlc2NyT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcRGljdE9iamVjdC5vYmogICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxFbnVtT2JqZWN0Lm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEZpbGVPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcRmxvYXRPYmplY3Qub2JqICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxGcmFtZU9iamVjdC5vYmogICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEZ1bmNPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcSXRlck9iamVjdC5vYmogICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxMaXN0T2JqZWN0Lm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXExvbmdPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTWV0aG9kT2JqZWN0Lm9iaiAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxNb2R1bGVPYmplY3Qub2JqICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXE9iamVjdC5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcT2JNYWxsb2Mub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxSYW5nZU9iamVjdC5vYmogICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFNsaWNlT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcU3RyaW5nT2JqZWN0Lm9iaiAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxTdHJ1Y3RTZXEub2JqICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFR1cGxlT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcVHlwZU9iamVjdC5vYmogICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxVbmljb2RlT2JqZWN0Lm9iaiBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFVuaWNvZGVDVHlwZS5vYmogIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcV2Vha3JlZk9iamVjdC5vYmoKLQotIyBFeHRlbnNpb24gTW9kdWxlcyAoQnVpbHQtSW4gb3IgYXMgU2VwYXJhdGUgRExMcykKLU1PRFVMRVMJCT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEFycmF5TW9kdWxlLm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcQmluQXNjaWkub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxDTWF0aE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEVycm5vTW9kdWxlLm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcR0NNb2R1bGUub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxHZXRCdWlsZEluZm8ub2JqICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEdldFBhdGhQLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTWFpbi5vYmogICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxNYXRoTW9kdWxlLm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXE1ENWMub2JqICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcTUQ1TW9kdWxlLm9iaiAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxPcGVyYXRvci5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFBDUkVNb2R1bGUub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcUHlQQ1JFLm9iaiAgICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxQb3NpeE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFJlZ2V4TW9kdWxlLm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcUmVnRXhwci5vYmogICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxTZWxlY3RNb2R1bGUub2JqICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFNpZ25hbE1vZHVsZS5vYmogIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcU29ja2V0TW9kdWxlLm9iaiAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxTdHJvcE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXFN0cnVjdE1vZHVsZS5vYmogIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcVGltZU1vZHVsZS5vYmogICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxUaHJlYWRNb2R1bGUub2JqCi0KLSMgU3RhbmRhbG9uZSBQYXJzZXIgR2VuZXJhdG9yIFByb2dyYW0gKFNoYXJlcyBTb21lIG9mIFB5dGhvbidzIE1vZHVsZXMpCi1QR0VOICAgICAgICAgICAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcUEdlbi5vYmogICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxQR2VuTWFpbi5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXE15U05QcmludGYub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcVG9rZW5pemVyX1BnZW4ub2JqIFwKLSAgICAgICAgICAgICAgICAgICQoUEFUSE9CSilcUHJpbnRHcmFtbWFyLm9iaiAgXAotICAgICAgICAgICAgICAgICAgJChQQVRIT0JKKVxHcmFtbWFyLm9iaiAgICAgICBcCi0gICAgICAgICAgICAgICAgICAkKFBBVEhPQkopXEZpcnN0U2V0cy5vYmoKLQotIyMjIyMjIyMjIyMjIyMjIyMjCi0jIE1hY3JvcyBhbmQgRmxhZ3MKLSMjIyMjIyMjIyMjIyMjIyMjIwotX0JBU0UJCT0gL1EgL1cyIC9JJChQUk9KSU5DTFVERSkKLQkJIyAvUSAgID0gT21pdCBJQk0gQ29weXJpZ2h0Ci0JCSMgL1cyICA9IFNob3cgV2FybmluZ3MvRXJyb3JzIE9ubHkKLQotX0dFTgkJPSAvRzQgL0dtIC9HZC0KLQkJIyAvRzQgID0gR2VuZXJhdGUgQ29kZSBmb3IgNDg2IChVc2UgMzg2IGZvciBEZWJ1Z2dlcikKLQkJIyAvR20gID0gVXNlIE11bHRpdGhyZWFkIFJ1bnRpbWUKLQkJIyAvR2QgID0gRHluYW1pY2FsbHkgTG9hZCBSdW50aW1lCi0JCSMgL01zICA9IFVzZSBfU3lzdGVtIENhbGxpbmcgQ29udmVudGlvbiAodnMgX09wdGxpbmspCi0JCSMgICAgICAgICh0byBhbGxvdyBub24tVkFDKysgY29kZSB0byBjYWxsIGludG8gUHl0aG9uMjMuZGxsKQotCi1fT1BUCQk9IC9PIC9HbAotCQkjIC9PICAgPSBFbmFibGUgU3BlZWQtT3B0aW1pemF0aW9ucwotCQkjIC9PbCAgPSBQYXNzIENvZGUgVGhydSBJbnRlcm1lZGlhdGUgTGlua2VyCi0JCSMgL0d1ICA9IEFkdmlzZSBMaW5rZXIgQWxsIEV4dCBEYXRhIGlzIElEJ2QKLQkJIyAvR2wgID0gSGF2ZSBMaW5rZXIgUmVtb3ZlIFVudXNlZCBGbnMKLQotX0RCRwkJPSAvV3Byby0gL1RpLSAvREhBVkVfQ09ORklHX0ggL0RVU0VfU09DS0VUCi0gICAgICAgICAgICAgICAgIyAvV3Bybz0gR2VuZXJhdGUgQ29tcGlsZXIgV2FybmluZ3MgcmUgTWlzc2luZyBQcm90b3R5cGVzCi0JCSMgL1RpICA9IEVtYmVkIERlYnVnZ2VyL0FuYWx5emVyIFJlY3MKLQkJIyAvVG0gID0gRW5hYmxlIERlYnVnIE1lbW9yeSBGbnMKLQkJIyAvVHggID0gUmVxdWVzdCBGdWxsIER1bXAgVXBvbiBFeGNlcHRpb24KLQkJIyAvREhBVkVfQ09ORklHX0ggPSBDYXVzZXMgVXNlIG9mIENPTkZJRy5IIFNldHRpbmdzCi0gICAgICAgICAgICAgICAgIyAvRFVTRV9TT0NLRVQgPSBFbmFibGVzIEJ1aWxkaW5nIEluIG9mIFNvY2tldCBBUEkKLQotX09VVAkJPSAKLQkJIyAvRmIgID0gRW1iZWQgQnJvd3NlciBSZWNzCi0JCSMgL0doICA9IEdlbmVyYXRlIENvZGUgZm9yIFByb2ZpbGVyIEhvb2tzCi0JCSMgL0ZsICA9IE91dHB1dCBDL0MrKyBMaXN0aW5nIEZpbGVzCi0gICAgICAgICAgICAgICAgIyAvTGYgID0gUHJvdmlkZSBGdWxsIChEZXRhaWxlZCkgTGlzdGluZyBGaWxlcwotCQkjIC9GbS4gPSBPdXRwdXQgTGlua2VyIE1hcCBGaWxlCi0JCSMgL0Z0LiA9IE91dHB1dCBDKysgVGVtcGxhdGUgUmVzb2x1dGlvbiBGaWxlcwotCi1fTUFQCQk9IC9GbU5vaXNlXCQoQFIpLm1hcAotCi1fRExMCQk9IC9HZS0KLV9FWEUJCT0gL0dlCi0JCSMgL0dlID0gQ3JlYXRlIGFuIEVYRSwgbm90IERMTAotCi1DRkxBR1MJCT0gJChfQkFTRSkgJChfR0VOKSAkKF9PUFQpICQoX0RCRykgJChfT1VUKSAkKF9FWEUpIC9TcwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFByaW1hcnkgVGFyZ2V0KHMpCi0jIyMjIyMjIyMjIyMjIyMjIyMjCi1BbGw6ICBvYmogbm9pc2UgUHlDb3JlLmxpYiBQeXRob24yMy5saWIgUEdlbi5leGUgXAotICAgICAgUHl0aG9uLmV4ZSBQeXRob25QTS5leGUgUHl0aG9uMjMuZGxsICMgX3RraW50ZXIuZGxsCi0KLU1vZHVsZXM6ICQoTU9EVUxFUykKLU9iamVjdHM6ICQoT0JKRUNUUykKLVBhcnNlcjogICQoUEFSU0VSKQotUHl0aG9uOiAgJChQWVRIT04pCi0KLSMgRGlyZWN0b3J5IHRvIEtlZXAgLk9CSiBGaWxlcyBPdXQgb2YgdGhlIFdheQotb2JqOgotCUAtbWtkaXIgb2JqID4+TlVMCi0KLSMgRGlyZWN0b3J5IHRvIEtlZXAgLk1BUCBhbmQgU3VjaCBUZXh0IEZpbGVzIE91dCBvZiB0aGUgV2F5Ci1ub2lzZToKLQlALW1rZGlyIG5vaXNlID4+TlVMCi0KLSMjIyMjIyMjIyMjIyMjCi0jCi0jIyMjIyMjIyMjIyMjIwotCi0jIFB5dGhvbiBFeHRlbnNpb24gRExMOiBUY2wvVGsgSW50ZXJmYWNlCi0jX3RraW50ZXIuZGxsOiAkKFBBVEhPQkopXF90a2ludGVyLm9iaiBQeXRob24yMy5saWIgX3RraW50ZXIuZGVmCi0jCUAgRWNobyBMaW5raW5nICRAIEFzIERMTAotIwlAICQoQ0MpICQoQ0ZMQUdTKSAvQiIvTk9FIiAkKF9ETEwpIC9GZSRAICQoX01BUCkgJCoqICQoT1RIRVJMSUJTKSA+PiQoRVJSUykKLQotIyQoUEFUSE9CSilcX3RraW50ZXIub2JqOiAkKFBZX01PRFVMRVMpXF90a2ludGVyLmMKLSMJQCBFY2hvIENvbXBpbGluZyAkKioKLSMJQCAkKENDKSAtYyAkKENGTEFHUykgJChfRExMKSAtRm8kQCAkKiogPj4kKEVSUlMpCi0KLSMgT2JqZWN0IExpYnJhcnkgb2YgQWxsIEVzc2VudGlhbCBQeXRob24gUm91dGluZXMKLVB5Q29yZS5saWI6ICQoTU9EVUxFUykgJChPQkpFQ1RTKSAkKFBBUlNFUikgJChQWVRIT04pICQoUEFUSE9CSilcQ29uZmlnLm9iagotCUAgRWNobyBBZGRpbmcgVXBkYXRlZCBPYmplY3QgRmlsZXMgdG8gTGluayBMaWJyYXJ5ICRACi0JQCAhIElMSUIgJEAgL05PTE9HTyAvTk9CQUNLVVAgLSskPyA7ID4+JChFUlJTKQotCi1QeXRob24yMy5kbGw6ICQoUEFUSE9CSilcQ29tcGlsZS5vYmogUHlDb3JlLmxpYiBQeXRob24uZGVmCi0JQCBFY2hvIExpbmtpbmcgJEAgQXMgRExMCi0JQCAkKENDKSAkKENGTEFHUykgL0IiL05PRSIgJChfRExMKSAvRmUkQCAkKF9NQVApICQqKiAkKE9USEVSTElCUykgPj4kKEVSUlMpCi0jCUAgRWNobyBDb21wcmVzc2luZyAkQCB3aXRoIEx4TGl0ZQotIwlAIGx4bGl0ZSAkQAotCi0jIElCTSBMaW5rZXIgUmVxdWlyZXMgT25lIEV4cGxpY2l0IC5PQkogVG8gQnVpbGQgYSAuRExMIGZyb20gYSAuTElCCi0kKFBBVEhPQkopXENvbXBpbGUub2JqOiAkKFBZX1BZVEhPTilcQ29tcGlsZS5jCi0JQCBFY2hvIENvbXBpbGluZyAkKioKLQlAICQoQ0MpIC1jICQoQ0ZMQUdTKSAkKF9ETEwpIC1GbyRAICQqKiA+PiQoRVJSUykKLQotIyBJbXBvcnQgTGlicmFyeSBmb3IgVXNpbmcgdGhlIFB5dGhvbjIzLmRsbAotUHl0aG9uMjMubGliOiBQeXRob24uZGVmCi0JQCBFY2hvIE1ha2luZyAkQAotCUAgSU1QTElCIC9OT0xPR08gL05PSUdOT1JFICRAICQqKiA+PiQoRVJSUykKLQlAIElMSUIgL05PTE9HTyAvQ09OVkZPUk1BVCAvTk9FWFRESUNUSU9OQVJZIC9OT0JST1dTRSAvTk9CQUNLVVAgJEA7ID4+JChFUlJTKQotCi0jIFNtYWxsIENvbW1hbmQtTGluZSBQcm9ncmFtIHRvIFN0YXJ0IEludGVycHJldGVyIGluIFB5dGhvbjIzLmRsbAotUHl0aG9uLmV4ZTogJChQQVRIT0JKKVxQeXRob24ub2JqIFB5dGhvbjIzLmxpYgotCUAgRWNobyBMaW5raW5nICRAIEFzIEVYRQotCUAgJChDQykgJChDRkxBR1MpICQoX0VYRSkgL0IiL1BNOlZJTyAvU1RBQ0s6MzYwMDAwIiAvRmUkQCAkKF9NQVApICQqKiAkKE9USEVSTElCUykgPj4kKEVSUlMpCi0KLSMgU21hbGwgUE0tR1VJIFByb2dyYW0gdG8gU3RhcnQgSW50ZXJwcmV0ZXIgaW4gUHl0aG9uMjMuZGxsCi1QeXRob25QTS5leGU6ICQoUEFUSE9CSilcUHl0aG9uLm9iaiBQeXRob24yMy5saWIKLQlAIEVjaG8gTGlua2luZyAkQCBBcyBFWEUKLQlAICQoQ0MpICQoQ0ZMQUdTKSAkKF9FWEUpIC9CIi9QTTpQTSAvU1RBQ0s6MzYwMDAwIiAvRmUkQCAkKF9NQVApICQqKiAkKE9USEVSTElCUykgPj4kKEVSUlMpCi0KLVBHZW4uZXhlOiAkKFBHRU4pIFB5Q29yZS5saWIKLQlAIEVjaG8gTGlua2luZyAkQCBBcyBFWEUKLQlAICQoQ0MpICQoQ0ZMQUdTKSAkKF9FWEUpIC9CIi9TVEFDSzozNjAwMDAiIC9GZSRAICQoX01BUCkgJCoqICQoT1RIRVJMSUJTKSA+PiQoRVJSUykKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgTWlzY2VsbGFuZW91cyBUYXJnZXRzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIFJlbW92ZSBJbnRlcm1lZGlhdGUgVGFyZ2V0cyBidXQgTGVhdmUgRXhlY3V0YWJsZSBCaW5hcmllcwotY2xlYW46Ci0JLS0gRGVsIC9RICQoUEFUSE9CSilcKi5vYmoJCT5OVUwgMj4mMQotCS0tIERlbCAvUSAvWSBOb2lzZQkJCT5OVUwgMj4mMQotCS0tIERlbCAvUSAkKEVSUlMpCQkJPk5VTCAyPiYxCi0KLSMgUmVtb3ZlIEFsbCBUYXJnZXRzLCBJbmNsdWRpbmcgRmluYWwgQmluYXJpZXMKLWRpc3RjbGVhbjogY2xlYW4KLSAgICAgICAgLS0gRGVsIC9RIFB5Q29yZS5saWIgUHl0aG9uMjMubGliICAgICAgID5OVUwgMj4mMQotICAgICAgICAtLSBEZWwgL1EgUHl0aG9uMjMuZGxsIFB5dGhvbi5leGUgUEdlbi5leGUgPk5VTCAyPiYxCi0KLXJlbGVhc2U6IFB5dGhvbi5leGUgUHl0aG9uMjMuZGxsIFB5dGhvbjIzLmxpYgotCS0tIEBFY2hvIFkgfCBjb3B5IC9VIFB5dGhvbi5leGUgICBEOlxFWEVzCi0JLS0gQEVjaG8gWSB8IGNvcHkgL1UgUHl0aG9uMjMuZGxsIEQ6XERMTHMKLQktLSBARWNobyBZIHwgY29weSAvVSBQeXRob24yMy5saWIgRTpcVGF1XExpYgotCS0tIEBFY2hvIFkgfCBjb3B5IC9VIF90a2ludGVyLmRsbCBEOlxQeXRob24KLQotdGVzdDoKLSAgICAgICAgcHl0aG9uIC4uXC4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5Ci0KLSMgVXBkYXRlIERlcGVuZGVuY2llcyBvbiBUYXJnZXRzIChVc2VzIE9wdXNNQUtFIENvbW1lcmNpYWwgUHJvZHVjdCkKLWRlcGVuZDoKLQlEOlxPcHVzTWFrZVxvczJta21mIC1jIC1zCi0KLSMjIyBPUFVTIE1LTUY6ICBEbyBub3QgcmVtb3ZlIHRoaXMgbGluZSEgIEdlbmVyYXRlZCBkZXBlbmRlbmNpZXMgZm9sbG93LgotCi1fdGtpbnRlci5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotYXJyYXltb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotYXVkaW9vcC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteW1hdGguaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWJpbmFzY2lpLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1jbWF0aG1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15bWF0aC5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWNwaWNrbGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteW1hdGguaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1jcnlwdG1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1jdXJzZXNtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotX2RibW1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZXJybm8ub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWVycm5vbW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWZjbnRsbW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoT1MyVENQSVApXEluY2x1ZGVcc3lzXGlvY3RsLmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZnBlY3RsbW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWZwZXRlc3Rtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotX2dkYm1tb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWdldGJ1aWxkaW5mby5vYmo6IHB5Y29uZmlnLmgKLQotZ2V0cGF0aC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlcb3NkZWZzLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWdycG1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoT1MyVENQSVApXEluY2x1ZGVcZ3JwLmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWltYWdlb3Aub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLW1haW4ub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLW1hdGhtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXltYXRoLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1tcHptb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25naW50cmVwci5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLW5pc21vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKE9TMlRDUElQKVxJbmNsdWRlXHN5c1x0aW1lLmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotb3BlcmF0b3Iub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLXBhcnNlcm1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21waWxlLmggXAotCSAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxncmFtaW5pdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG5vZGUuaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0b2tlbi5oIFwKLQkgJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotcG9zaXgub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxteXRpbWUuaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1wb3NpeG1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG15dGltZS5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLXB3ZG1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoT1MyVENQSVApXEluY2x1ZGVccHdkLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLXJlYWRsaW5lLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1yZXNvdXJjZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKE9TMlRDUElQKVxJbmNsdWRlXHN5c1x0aW1lLmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotc2VsZWN0bW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcbXlzZWxlY3QuaCAkKFBZX0lOQ0xVREUpXG15dGltZS5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLXNpZ25hbG1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zb2NrZXRtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChPUzJUQ1BJUClcSW5jbHVkZVxuZXRpbmV0XGluLmggXAotCSAkKE9TMlRDUElQKVxJbmNsdWRlXHN5c1xzb2NrZXQuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG15dGltZS5oICQoT1MyVENQSVApXEluY2x1ZGVcbmV0ZGIuaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zdHJ1Y3Rtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteW1hdGguaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zeXNsb2dtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKE9TMlRDUElQKVxJbmNsdWRlXHN5c2xvZy5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggXAotCSAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi10ZXJtaW9zLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1fdGhyZWFkbW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRocmVhZC5oIFwKLQkgJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotdGltZW1vZHVsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG15dGltZS5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLXh4bW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi16bGlibW9kdWxlLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1hYnN0cmFjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotY2xhc3NvYmplY3Qub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cnVjdG1lbWJlci5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1jb2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1jb21wbGV4b2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXltYXRoLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCBcCi0JICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZGljdG9iamVjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZmlsZW9iamVjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RydWN0bWVtYmVyLmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWZsb2F0b2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXltYXRoLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCBcCi0JICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZnJhbWVvYmplY3Qub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGlsZS5oIFwKLQkgJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnJhbWVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlcb3Bjb2RlLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3RydWN0bWVtYmVyLmggXAotCSAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWZ1bmNvYmplY3Qub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGlsZS5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cnVjdG1lbWJlci5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1saXN0b2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1sb25nb2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ2ludHJlcHIuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15bWF0aC5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotbWV0aG9kb2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRva2VuLmggXAotCSAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1tb2R1bGVvYmplY3Qub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotb2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1yYW5nZW9iamVjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zbGljZW9iamVjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zdHJpbmdvYmplY3Qub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteW1hdGguaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi10dXBsZW9iamVjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggXAotCSAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi10eXBlb2JqZWN0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi14eG9iamVjdC5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotYWNjZWxlci5vYmo6ICQoUFlfSU5DTFVERSlcYml0c2V0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCBcCi0JICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG5vZGUuaCBcCi0JICQoUFlfUEFSU0VSKVxwYXJzZXIuaCAkKFBZX0lOQ0xVREUpXHBnZW5oZWFkZXJzLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHRva2VuLmgKLQotYml0c2V0Lm9iajogJChQWV9JTkNMVURFKVxiaXRzZXQuaCBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaAotCi1maXJzdHNldHMub2JqOiAkKFBZX0lOQ0xVREUpXGJpdHNldC5oIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxncmFtbWFyLmggXAotCSAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxwZ2VuaGVhZGVycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVx0b2tlbi5oCi0KLWdyYW1tYXIub2JqOiAkKFBZX0lOQ0xVREUpXGJpdHNldC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXHBnZW5oZWFkZXJzLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVx0b2tlbi5oCi0KLWdyYW1tYXIxLm9iajogJChQWV9JTkNMVURFKVxiaXRzZXQuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxncmFtbWFyLmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxwZ2VuaGVhZGVycy5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlcdG9rZW4uaAotCi1pbnRyY2hlY2sub2JqOiBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmgKLQotbGlzdG5vZGUub2JqOiBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcbm9kZS5oICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlcdG9rZW4uaAotCi1tZXRhZ3JhbW1hci5vYmo6ICQoUFlfSU5DTFVERSlcYml0c2V0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0YWdyYW1tYXIuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX1BBUlNFUilccGdlbi5oICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaAotCi1teXJlYWRsaW5lLm9iajogcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oCi0KLW5vZGUub2JqOiBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG5vZGUuaCBcCi0JICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaAotCi1wYXJzZXIub2JqOiAkKFBZX0lOQ0xVREUpXGJpdHNldC5oIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxlcnJjb2RlLmggXAotCSAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG5vZGUuaCAkKFBZX1BBUlNFUilccGFyc2VyLmggJChQWV9JTkNMVURFKVxwZ2VuaGVhZGVycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVx0b2tlbi5oCi0KLXBhcnNldG9rLm9iajogJChQWV9JTkNMVURFKVxiaXRzZXQuaCBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZXJyY29kZS5oIFwKLQkgJChQWV9JTkNMVURFKVxncmFtbWFyLmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxub2RlLmggJChQWV9QQVJTRVIpXHBhcnNlci5oICQoUFlfSU5DTFVERSlccGFyc2V0b2suaCBcCi0JICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHRva2VuLmggXAotCSAkKFBZX1BBUlNFUilcdG9rZW5pemVyLmgKLQotcGdlbi5vYmo6ICQoUFlfSU5DTFVERSlcYml0c2V0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0YWdyYW1tYXIuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG5vZGUuaCAkKFBZX1BBUlNFUilccGdlbi5oICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlcdG9rZW4uaAotCi1wZ2VubWFpbi5vYmo6ICQoUFlfSU5DTFVERSlcYml0c2V0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCBcCi0JICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXG5vZGUuaCBcCi0JICQoUFlfSU5DTFVERSlccGFyc2V0b2suaCAkKFBZX1BBUlNFUilccGdlbi5oICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oCi0KLXByaW50Z3JhbW1hci5vYmo6ICQoUFlfSU5DTFVERSlcYml0c2V0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGdyYW1tYXIuaCBcCi0JICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCAkKFBZX0lOQ0xVREUpXHBnZW5oZWFkZXJzLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaAotCi10b2tlbml6ZXIub2JqOiBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZXJyY29kZS5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlccGdlbmhlYWRlcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCBcCi0JICQoUFlfSU5DTFVERSlcdG9rZW4uaCAkKFBZX1BBUlNFUilcdG9rZW5pemVyLmgKLQotYXRvZi5vYmo6IHB5Y29uZmlnLmgKLQotYmx0aW5tb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGlsZS5oIFwKLQkgJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZXZhbC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteW1hdGguaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcbm9kZS5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWNldmFsLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBpbGUuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZyYW1lb2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXG9wY29kZS5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCBcCi0JICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotY29tcGlsZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21waWxlLmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcZ3JhbWluaXQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oIFwKLQkgJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG5vZGUuaCAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oIFwKLQkgJChQWV9JTkNMVURFKVxvcGNvZGUuaCAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJ1Y3RtZW1iZXIuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0b2tlbi5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZXJyb3JzLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1mbW9kLm9iajogcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXG15bWF0aC5oCi0KLWZyb3plbi5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZnJvemVubWFpbi5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZ2V0YXJncy5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZ2V0Y29tcGlsZXIub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZ2V0Y29weXJpZ2h0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWdldHBsYXRmb3JtLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCBcCi0JICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCBcCi0JICQoUFlfSU5DTFVERSlcbXlwcm90by5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZGVidWcuaCAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXN0YXRlLmggJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oIFwKLQkgJChQWV9JTkNMVURFKVxyYW5nZW9iamVjdC5oICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3RyaW5nb2JqZWN0LmggJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oIFwKLQkgJChQWV9JTkNMVURFKVx0dXBsZW9iamVjdC5oCi0KLWdldHZlcnNpb24ub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXHBhdGNobGV2ZWwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN5c21vZHVsZS5oICQoUFlfSU5DTFVERSlcdHJhY2ViYWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotZ3JhbWluaXQub2JqOiAkKFBZX0lOQ0xVREUpXGJpdHNldC5oIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxncmFtbWFyLmggXAotCSAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxwZ2VuaGVhZGVycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmgKLQotaHlwb3Qub2JqOiBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcbXltYXRoLmggJChQWV9JTkNMVURFKVxteXByb3RvLmgKLQotaW1wb3J0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBpbGUuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxlcnJjb2RlLmggJChQWV9JTkNMVURFKVxldmFsLmggXAotCSAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfUFlUSE9OKVxpbXBvcnRkbC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtYXJzaGFsLmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxub2RlLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlcb3NkZWZzLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0b2tlbi5oIFwKLQkgJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotaW1wb3J0ZGwub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfUFlUSE9OKVxpbXBvcnRkbC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlcb3NkZWZzLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1tYXJzaGFsLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBpbGUuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbG9uZ2ludHJlcHIuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1hcnNoYWwuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1tb2RzdXBwb3J0Lm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIFwKLQkgJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5ZXJyb3JzLmggJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oIFwKLQkgJChQWV9JTkNMVURFKVxweXRob24uaCAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc2xpY2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1teXN0cnRvdWwub2JqOiBweWNvbmZpZy5oCi0KLXB5ZnBlLm9iajogcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmgKLQotcHlzdGF0ZS5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotcHl0aG9ucnVuLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcYml0c2V0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGlsZS5oIFwKLQkgJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZXJyY29kZS5oICQoUFlfSU5DTFVERSlcZXZhbC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmbG9hdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcZ3JhbW1hci5oIFwKLQkgJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggXAotCSAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1hcnNoYWwuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcbm9kZS5oICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggXAotCSAkKFBZX0lOQ0xVREUpXHBhcnNldG9rLmggJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWZwZS5oICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5dGhvbnJ1bi5oICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zaWdjaGVjay5vYmo6ICQoUFlfSU5DTFVERSlcYWJzdHJhY3QuaCAkKFBZX0lOQ0xVREUpXGNldmFsLmggJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxjb2JqZWN0LmggJChQWV9JTkNMVURFKVxjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBcCi0JICQoUFlfSU5DTFVERSlcZGljdG9iamVjdC5oICQoUFlfSU5DTFVERSlcZmlsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZnVuY29iamVjdC5oICQoUFlfSU5DTFVERSlcaW1wb3J0LmggJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcaW50cmNoZWNrLmggJChQWV9JTkNMVURFKVxsaXN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1ldGhvZG9iamVjdC5oICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxtb2R1bGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmggXAotCSAkKFBZX0lOQ0xVREUpXG9iamVjdC5oICQoUFlfSU5DTFVERSlcb2JqaW1wbC5oICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCAkKFBZX0lOQ0xVREUpXHR1cGxlb2JqZWN0LmgKLQotc3RyZHVwLm9iajogcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXG15bWFsbG9jLmggJChQWV9JTkNMVURFKVxteXByb3RvLmgKLQotc3RydG9kLm9iajogcHljb25maWcuaAotCi1zdHJ1Y3RtZW1iZXIub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oIFwKLQkgJChQWV9JTkNMVURFKVxjbGFzc29iamVjdC5oICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcZmxvYXRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxsb25nb2JqZWN0LmggJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kc3VwcG9ydC5oICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oIFwKLQkgJChQWV9JTkNMVURFKVxteXByb3RvLmggJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cnVjdG1lbWJlci5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi1zeXNtb2R1bGUub2JqOiAkKFBZX0lOQ0xVREUpXGFic3RyYWN0LmggJChQWV9JTkNMVURFKVxjZXZhbC5oICQoUFlfSU5DTFVERSlcY2xhc3NvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcY29iamVjdC5oICQoUFlfSU5DTFVERSlcY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggXAotCSAkKFBZX0lOQ0xVREUpXGRpY3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZpbGVvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZ1bmNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGltcG9ydC5oICQoUFlfSU5DTFVERSlcaW50b2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGludHJjaGVjay5oICQoUFlfSU5DTFVERSlcbGlzdG9iamVjdC5oICQoUFlfSU5DTFVERSlcbG9uZ29iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxtZXRob2RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG1vZHN1cHBvcnQuaCBcCi0JICQoUFlfSU5DTFVERSlcbW9kdWxlb2JqZWN0LmggJChQWV9JTkNMVURFKVxteW1hbGxvYy5oICQoUFlfSU5DTFVERSlcbXlwcm90by5oIFwKLQkgJChQWV9JTkNMVURFKVxvYmplY3QuaCAkKFBZX0lOQ0xVREUpXG9iamltcGwuaCAkKFBZX0lOQ0xVREUpXG9zZGVmcy5oIFwKLQkgJChQWV9JTkNMVURFKVxweWRlYnVnLmggJChQWV9JTkNMVURFKVxweWVycm9ycy5oICQoUFlfSU5DTFVERSlccHlmcGUuaCBcCi0JICQoUFlfSU5DTFVERSlccHlzdGF0ZS5oICQoUFlfSU5DTFVERSlccHl0aG9uLmggJChQWV9JTkNMVURFKVxweXRob25ydW4uaCBcCi0JICQoUFlfSU5DTFVERSlccmFuZ2VvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHNsaWNlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXHN0cmluZ29iamVjdC5oICQoUFlfSU5DTFVERSlcc3lzbW9kdWxlLmggJChQWV9JTkNMVURFKVx0cmFjZWJhY2suaCBcCi0JICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaAotCi10aHJlYWQub2JqOiBweWNvbmZpZy5oICQoUFlfSU5DTFVERSlcdGhyZWFkLmgKLQotdHJhY2ViYWNrLm9iajogJChQWV9JTkNMVURFKVxhYnN0cmFjdC5oICQoUFlfSU5DTFVERSlcY2V2YWwuaCAkKFBZX0lOQ0xVREUpXGNsYXNzb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGNvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGNvbXBpbGUuaCAkKFBZX0lOQ0xVREUpXGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggJChQWV9JTkNMVURFKVxkaWN0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmaWxlb2JqZWN0LmggXAotCSAkKFBZX0lOQ0xVREUpXGZsb2F0b2JqZWN0LmggJChQWV9JTkNMVURFKVxmcmFtZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxmdW5jb2JqZWN0LmggJChQWV9JTkNMVURFKVxpbXBvcnQuaCAkKFBZX0lOQ0xVREUpXGludG9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxpbnRyY2hlY2suaCAkKFBZX0lOQ0xVREUpXGxpc3RvYmplY3QuaCAkKFBZX0lOQ0xVREUpXGxvbmdvYmplY3QuaCBcCi0JICQoUFlfSU5DTFVERSlcbWV0aG9kb2JqZWN0LmggJChQWV9JTkNMVURFKVxtb2RzdXBwb3J0LmggXAotCSAkKFBZX0lOQ0xVREUpXG1vZHVsZW9iamVjdC5oICQoUFlfSU5DTFVERSlcbXltYWxsb2MuaCAkKFBZX0lOQ0xVREUpXG15cHJvdG8uaCBcCi0JICQoUFlfSU5DTFVERSlcb2JqZWN0LmggJChQWV9JTkNMVURFKVxvYmppbXBsLmggJChQWV9JTkNMVURFKVxvc2RlZnMuaCBcCi0JICQoUFlfSU5DTFVERSlccHlkZWJ1Zy5oICQoUFlfSU5DTFVERSlccHllcnJvcnMuaCAkKFBZX0lOQ0xVREUpXHB5ZnBlLmggXAotCSAkKFBZX0lOQ0xVREUpXHB5c3RhdGUuaCAkKFBZX0lOQ0xVREUpXHB5dGhvbi5oICQoUFlfSU5DTFVERSlccHl0aG9ucnVuLmggXAotCSAkKFBZX0lOQ0xVREUpXHJhbmdlb2JqZWN0LmggJChQWV9JTkNMVURFKVxzbGljZW9iamVjdC5oIFwKLQkgJChQWV9JTkNMVURFKVxzdHJpbmdvYmplY3QuaCAkKFBZX0lOQ0xVREUpXHN0cnVjdG1lbWJlci5oIFwKLQkgJChQWV9JTkNMVURFKVxzeXNtb2R1bGUuaCAkKFBZX0lOQ0xVREUpXHRyYWNlYmFjay5oICQoUFlfSU5DTFVERSlcdHVwbGVvYmplY3QuaApkaWZmIC0tZ2l0IGEvUEMvb3MydmFjcHAvbWFrZWZpbGUub21rIGIvUEMvb3MydmFjcHAvbWFrZWZpbGUub21rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTEyYzk2Li4wMDAwMDAwCi0tLSBhL1BDL29zMnZhY3BwL21ha2VmaWxlLm9taworKysgL2Rldi9udWxsCkBAIC0xLDEwNDcgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyAgICAgICAgICBUb3AtTGV2ZWwgTWFrZWZpbGUgZm9yIEJ1aWxkaW5nIFB5dGhvbiBmb3IgT1MvMgotIwotIyBUaGlzIG1ha2VmaWxlIHdhcyBkZXZlbG9wZWQgZm9yIHVzZSB3aXRoIElCTSdzIFZpc3VhbEFnZSBDL0MrKwotIyBmb3IgT1MvMiBjb21waWxlciwgdmVyc2lvbiAzLjAsIHdpdGggRml4cGFjayA4IGFwcGxpZWQuICBJdCB1c2VzCi0jIHRoZSBjb21tZXJjaWFsIE9wdXNNQUtFIHRvb2wuCi0jCi0jIFRoZSBvdXRwdXQgb2YgdGhlIGJ1aWxkIGlzIGEgbGFyZ2lzaCBQeXRob24xNS5ETEwgY29udGFpbmluZyB0aGUKLSMgZXNzZW50aWFsIG1vZHVsZXMgb2YgUHl0aG9uIGFuZCBhIHNtYWxsIFB5dGhvbi5leGUgcHJvZ3JhbSB0byBzdGFydAotIyB0aGUgaW50ZXJwcmV0ZXIuICBXaGVuIGVtYmVkZGluZyBQeXRob24gd2l0aGluIGFub3RoZXIgcHJvZ3JhbSwgb25seQotIyBQeXRob24xNS5ETEwgaXMgbmVlZGVkLgotIwotIyBUaGVzZSB0d28gYmluYXJpZXMgY2FuIGJlIHN0YXRpY2FsbHkgbGlua2VkIHdpdGggdGhlIFZpc3VhbEFnZSBDL0MrKwotIyBydW50aW1lIGxpYnJhcnkgKHByb2R1Y2luZyBsYXJnZXIgYmluYXJpZXMpLCBvciBkeW5hbWljYWxseSBsaW5rZWQKLSMgdG8gbWFrZSBzbWFsbGVyIG9uZXMgdGhhdCByZXF1aXJlIHRoZSBjb21waWxlciB0byBiZSBpbnN0YWxsZWQgb24KLSMgYW55IHN5c3RlbSBQeXRob24gaXMgdXNlZCBvbi4KLSMKLSMgSGlzdG9yeSAoTW9zdCBSZWNlbnQgRmlyc3QpCi0jCi0jIDIwLU5vdi05NyBqcnIgQ2xlYW5lZCBVcCBmb3IgQXBwbHlpbmcgdG8gRGlzdHJpYnV0aW9uCi0jIDI5LU9jdC05NyBqcnIgTW9kaWZpZWQgZm9yIFVzZSB3aXRoIFB5dGhvbiAxLjUgQWxwaGEgNAotIyAwMy1BdWctOTYganJyIE9yaWdpbmFsIGZvciBVc2Ugd2l0aCBQeXRob24gMS40IFJlbGVhc2UKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQbGFjZXMgYW5kIFRoaW5ncwotIyMjIyMjIyMjIyMjIyMjIyMjIwotUFlfTU9EVUxFUyAgICAgID0gLi5cLi5cTW9kdWxlcwotUFlfT0JKRUNUUyAgICAgID0gLi5cLi5cT2JqZWN0cwotUFlfUEFSU0VSICAgICAgID0gLi5cLi5cUGFyc2VyCi1QWV9QWVRIT04gICAgICAgPSAuLlwuLlxQeXRob24KLVBZX0lOQ0xVREUgICAgICA9IC4uXC4uXEluY2x1ZGUKLVBZX0lOQ0xVREVTICAgICA9IC47JChQWV9JTkNMVURFKTskKFBZX01PRFVMRVMpOyQoUFlfT0JKRUNUUyk7JChQWV9QQVJTRVIpOyQoUFlfUFlUSE9OKQotCi0jIFdoZXJlIHRvIEZpbmQgdGhlIElCTSBUQ1AvSVAgU29ja2V0IEluY2x1ZGVzIGFuZCBMaWJyYXJpZXMKLU9TMlRDUElQICAgICAgICA9IEM6XE1QVE4KLQotIyBXaGVyZSB0byBQdXQgdGhlIC5PQkogRmlsZXMsIFRvIEtlZXAgVGhlbSBPdXQgb2YgdGhlIFdheQotLlBBVEgub2JqCT0gb2JqCi0KLSMgU2VhcmNoIFBhdGggZm9yIEluY2x1ZGUgRmlsZXMKLVBST0pJTkNMVURFCT0gLjskKE9TMlRDUElQKVxJbmNsdWRlOyQoUFlfSU5DTFVERVMpCi0KLSMgUGxhY2UgdG8gU2VhcmNoIGZvciBTb3VyY2VzIHJlIE9wdXNNQUtFIERlcGVuZGVuY3kgR2VuZXJhdG9yIChDb21tZXJjaWFsKQotTUtNRl9TUkNTCT0gJChQWV9NT0RVTEVTKVwqLmMgJChQWV9PQkpFQ1RTKVwqLmMgJChQWV9QQVJTRVIpXCouYyAkKFBZX1BZVEhPTilcKi5jCi0KLS5IRFJQQVRILmMJOj0gJChQUk9KSU5DTFVERSw7PSApICQoLkhEUlBBVEguYykKLS5QQVRILmMgICAgICAgICA9IC47JChQWV9NT0RVTEVTKTskKFBZX09CSkVDVFMpOyQoUFlfUEFSU0VSKTskKFBZX1BZVEhPTikKLU9USEVSTElCUwk9ICQoT1MyVENQSVApXGxpYlxzbzMyZGxsLmxpYiAkKE9TMlRDUElQKVxsaWJcdGNwMzJkbGwubGliCi0KLSMjIyMjIyMjIyMjIyMjIyMjCi0jIEluZmVyZW5jZSBSdWxlcwotIyMjIyMjIyMjIyMjIyMjIyMKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFB5dGhvbiBTdWJzeXN0ZW1zCi0jIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgUFlUSE9OIGlzIHRoZSBjZW50cmFsIGNvcmUsIGNvbnRhaW5pbmcgdGhlIGJ1aWx0aW5zIGFuZCBpbnRlcnByZXRlci4KLVBZVEhPTgkJPSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgQmx0aW5Nb2R1bGUub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIENFdmFsLm9iaiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBDb21waWxlLm9iaiAgICAgICAgXAotICAgICAgICAgICAgICAgICAgRXJyb3JzLm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIEZyb3plbi5vYmogICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBHZXRhcmdzLm9iaiAgICAgICAgXAotICAgICAgICAgICAgICAgICAgR2V0Q29tcGlsZXIub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIEdldENvcHlyaWdodC5vYmogICBcCi0gICAgICAgICAgICAgICAgICBHZXRNVGltZS5vYmogICAgICAgXAotICAgICAgICAgICAgICAgICAgR2V0T3B0Lm9iaiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIEdldFBsYXRmb3JtLm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICBHZXRWZXJzaW9uLm9iaiAgICAgXAotICAgICAgICAgICAgICAgICAgR3JhbUluaXQub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIEltcG9ydC5vYmogICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBJbXBvcnRETC5vYmogICAgICAgXAotICAgICAgICAgICAgICAgICAgTWFyc2hhbC5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIE1vZFN1cHBvcnQub2JqICAgICBcCi0gICAgICAgICAgICAgICAgICBNeVN0cnRvdWwub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgUHlTdGF0ZS5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIFB5dGhvblJ1bi5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICBTdHJ1Y3RNZW1iZXIub2JqICAgXAotICAgICAgICAgICAgICAgICAgU3lzTW9kdWxlLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgIFRocmVhZC5vYmogICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBUcmFjZUJhY2sub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgRnJvemVuTWFpbi5vYmoKLQotIyBPbWl0dGVkIFB5dGhvbiBFbGVtZW50cyAoYW5kIFJlYXNvbik6Ci0gICMgYXRvZi5jICAgICAgICAgIC0tIEltcGxlbWVudGF0aW9uIGZvciBQbGF0Zm9ybXMgdy9vIFRoaXMgRnVuY3Rpb24KLSAgIyBkdXAyLmMgICAgICAgICAgLS0gSW1wbGVtZW50YXRpb24gZm9yIFBsYXRmb3JtcyB3L28gVGhpcyBGdW5jdGlvbgotICAjIGZtb2QuYyAgICAgICAgICAtLSBJbXBsZW1lbnRhdGlvbiBmb3IgUGxhdGZvcm1zIHcvbyBUaGlzIEZ1bmN0aW9uCi0gICMgZ2V0Y3dkLmMgICAgICAgIC0tIEltcGxlbWVudGF0aW9uIGZvciBQbGF0Zm9ybXMgdy9vIFRoaXMgRnVuY3Rpb24KLSAgIyBoeXBvdC5jICAgICAgICAgLS0gSW1wbGVtZW50YXRpb24gZm9yIFBsYXRmb3JtcyB3L28gVGhpcyBGdW5jdGlvbgotICAjIG1lbW1vdmUuYyAgICAgICAtLSBJbXBsZW1lbnRhdGlvbiBmb3IgUGxhdGZvcm1zIHcvbyBUaGlzIEZ1bmN0aW9uCi0gICMgc3RyZHVwLmMgICAgICAgIC0tIEltcGxlbWVudGF0aW9uIGZvciBQbGF0Zm9ybXMgdy9vIFRoaXMgRnVuY3Rpb24KLSAgIyBzdHJlcnJvci5jICAgICAgLS0gSW1wbGVtZW50YXRpb24gZm9yIFBsYXRmb3JtcyB3L28gVGhpcyBGdW5jdGlvbgotICAjIHN0cnRvZC5jICAgICAgICAtLSBJbXBsZW1lbnRhdGlvbiBmb3IgUGxhdGZvcm1zIHcvbyBUaGlzIEZ1bmN0aW9uCi0KLSAgIyBzaWdjaGVjay5jICAgICAgLS0gUHJpbWl0aXZlIFNpZ25hbCBDYXRjaGVyIChTaWduYWxNb2R1bGUuYyBVc2VkIEluc3RlYWQpCi0gICMgcHlmcGUuYyAgICAgICAgIC0tIFByaW1pdGl2ZSBGUEUgQ2F0Y2hlciAoTm90IFJlZmVyZW5jZWQgYnkgQW55b25lKQotICAjIGZyb3plbm1haW4uYwotCi0jIFB5dGhvbidzIEludGVybmFsIFBhcnNlcgotUEFSU0VSCQk9ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIEFjY2VsZXIub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIEdyYW1tYXIxLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgIE15UmVhZGxpbmUub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIE5vZGUub2JqICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIFBhcnNlci5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIFBhcnNlVG9rLm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgIFRva2VuaXplci5vYmoKLQotIyBQeXRob24gT2JqZWN0IFR5cGVzCi1PQkpFQ1RTCQk9ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIEFic3RyYWN0Lm9iaiAgICAgIFwKLSAgICAgICAgICAgICAgICAgIENsYXNzT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgIENPYmplY3Qub2JqICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIENvbXBsZXhPYmplY3Qub2JqIFwKLSAgICAgICAgICAgICAgICAgIERpY3RPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIEZpbGVPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIEZsb2F0T2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgIEZyYW1lT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgIEZ1bmNPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIExpc3RPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIExvbmdPYmplY3Qub2JqICAgIFwKLSAgICAgICAgICAgICAgICAgIE1ldGhvZE9iamVjdC5vYmogIFwKLSAgICAgICAgICAgICAgICAgIE1vZHVsZU9iamVjdC5vYmogIFwKLSAgICAgICAgICAgICAgICAgIE9iamVjdC5vYmogICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIFJhbmdlT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgIFNsaWNlT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgIFN0cmluZ09iamVjdC5vYmogIFwKLSAgICAgICAgICAgICAgICAgIFR1cGxlT2JqZWN0Lm9iaiAgIFwKLSAgICAgICAgICAgICAgICAgIFR5cGVPYmplY3Qub2JqCi0KLSMgT21pdHRlZCBPYmplY3RzIChhbmQgUmVhc29uKToKLSAgIyB4eG9iamVjdC5jICAgICAgLS0gVGVtcGxhdGUgdG8gQ3JlYXRlIFlvdXIgT3duIE9iamVjdCBUeXBlcwotCi0jIEV4dGVuc2lvbiBNb2R1bGVzIChCdWlsdC1JbiBvciBhcyBTZXBhcmF0ZSBETExzKQotTU9EVUxFUwkJPSAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBBcnJheU1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICBCaW5Bc2NpaS5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICBDTWF0aE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICBFcnJub01vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICBHZXRCdWlsZEluZm8ub2JqICBcCi0gICAgICAgICAgICAgICAgICBHZXRQYXRoUC5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICBNYWluLm9iaiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBNYXRoTW9kdWxlLm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICBNRDVjLm9iaiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICBNRDVNb2R1bGUub2JqICAgICBcCi0gICAgICAgICAgICAgICAgICBPcGVyYXRvci5vYmogICAgICBcCi0gICAgICAgICAgICAgICAgICBQb3NpeE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICBSZWdleE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICBSZWdFeHByLm9iaiAgICAgICBcCi0gICAgICAgICAgICAgICAgICBSZW9wTW9kdWxlLm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICBTZWxlY3RNb2R1bGUub2JqICBcCi0gICAgICAgICAgICAgICAgICBTaWduYWxNb2R1bGUub2JqICBcCi0gICAgICAgICAgICAgICAgICBTb2NrZXRNb2R1bGUub2JqICBcCi0gICAgICAgICAgICAgICAgICBTb3VuZEV4Lm9iaiAgICAgICBcCi0gICAgICAgICAgICAgICAgICBTdHJvcE1vZHVsZS5vYmogICBcCi0gICAgICAgICAgICAgICAgICBTdHJ1Y3RNb2R1bGUub2JqICBcCi0gICAgICAgICAgICAgICAgICBUaW1lTW9kdWxlLm9iaiAgICBcCi0gICAgICAgICAgICAgICAgICBUaHJlYWRNb2R1bGUub2JqCi0KLSMgT21pdHRlZCBNb2R1bGVzIChhbmQgRGVzY3JpcHRpb24vUmVhc29uKToKLSAgIwotICAjIE11bHRpbWVkaWE6Ci0gICMgYXVkaW9vcC5jICAgICAgIC0tIFZhcmlvdXMgQ29tcHV0ZSBPcGVyYXRpb25zIG9uIEF1ZGlvIFNhbXBsZXMKLQotICAjIERhdGFiYXNlOgotICAjIF9kYm1tb2R1bGUuYyAgICAtLSBXcmFwcGVyIG9mIERCTSBEYXRhYmFzZSBBUEkgKEdlbmVyaWMgRmxhdm9yKQotICAjIF9nZGJtbW9kdWxlLmMgICAtLSBXcmFwcGVyIG9mIERCTSBEYXRhYmFzZSBBUEkgKEdOVSBGbGF2b3IpCi0KLSAgIyBDcnlwdG9ncmFwaHk6Ci0gICMgY3J5cHRtb2R1bGUuYyAgIC0tIFNpbXBsZSBXcmFwcGVyIGZvciBjcnlwdCgpIEZ1bmN0aW9uCi0KLSMgICAgICAgICAgICAgICAgICBmY250bG1vZHVsZS5vYmogICBcCi0jICAgICAgICAgICAgICAgICAgZnBlY3RsbW9kdWxlLm9iaiAgXAotIyAgICAgICAgICAgICAgICAgIGZwZXRlc3Rtb2R1bGUub2JqIFwKLSMgVW5peC1TcGVjaWZpYyAgICBnZXRwYXRoLm9iaiAgICAgICBcCi0jICAgICAgICAgICAgICAgICAgZ3JwbW9kdWxlLm9iaiAgICAgXAotIyAgICAgICAgICAgICAgICAgIG1wem1vZHVsZS5vYmogICAgIFwKLSMgICAgICAgICAgICAgICAgICBuaXNtb2R1bGUub2JqICAgICBcCi0jICAgICAgICAgICAgICAgICAgcGFyc2VybW9kdWxlLm9iaiAgXAotIyAgICAgICAgICAgICAgICAgIHB3ZG1vZHVsZS5vYmogICAgIFwKLSMgICAgICAgICAgICAgICAgICByZWFkbGluZS5vYmogICAgICBcCi0jICAgICAgICAgICAgICAgICAgcmVzb3VyY2Uub2JqICAgICAgXAotIyAgICAgICAgICAgICAgICAgIHN5c2xvZ21vZHVsZS5vYmogIFwKLSMgICAgICAgICAgICAgICAgICB0ZXJtaW9zLm9iaiAgICAgICBcCi0KLSAgIyBVc2VyIEludGVyZmFjZToKLSMgICAgICAgICAgICAgICAgICBfdGtpbnRlci5vYmogICAgICBcICAgICAKLSMgICAgICAgICAgICAgICAgICBzdGR3aW5tb2R1bGUub2JqICBcCi0jICAgICAgICAgICAgICAgICAgY3Vyc2VzbW9kdWxlLm9iaiAgXAotIyAgICAgICAgICAgICAgICAgIHRjbE5vdGlmeS5vYmogICAgIFwKLSMgICAgICAgICAgICAgICAgICB0a2FwcGluaXQub2JqICAgICBcCi0gICMgZmxtb2R1bGUuYyAgICAgIC0tIFdyYXBwZXIgb2YgRk9STVMgTGlicmFyeSAoU2NyZWVuIEZvcm1zKQotCi0gICMgemxpYm1vZHVsZS5jICAgIC0tIFdyYXBwZXIgb2YgWkxpYiBDb21wcmVzc2lvbiBBUEkgKEdaaXAgRm9ybWF0KQotICAjIHB1cmVtb2R1bGUuYyAgICAtLSBXcmFwcGVyIG9mIFB1cmlmeSBEZWJ1Z2dpbmcgQVBJIChQcm9iYWJseSBOb24tT1MvMikKLSAgIyB4eG1vZHVsZS5jICAgICAgLS0gVGVtcGxhdGUgdG8gQ3JlYXRlIFlvdXIgT3duIE1vZHVsZQotCi0jCi0jIFN0YW5kYWxvbmUgUGFyc2VyIEdlbmVyYXRvciBQcm9ncmFtIChTaGFyZXMgU29tZSBvZiBQeXRob24ncyBNb2R1bGVzKQotUEdFTiAgICAgICAgICAgID0gICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgUEdlbk1haW4ub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgUEdlbi5vYmogICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgUHJpbnRHcmFtbWFyLm9iaiAgXAotICAgICAgICAgICAgICAgICAgTGlzdE5vZGUub2JqICAgICAgXAotICAgICAgICAgICAgICAgICAgR3JhbW1hci5vYmogICAgICAgXAotICAgICAgICAgICAgICAgICAgQml0U2V0Lm9iaiAgICAgICAgXAotICAgICAgICAgICAgICAgICAgRmlyc3RTZXRzLm9iaiAgICAgXAotICAgICAgICAgICAgICAgICAgTWV0YUdyYW1tYXIub2JqCi0KLSMgT21pdHRlZCBQYXJzZXIgRWxlbWVudHMgKGFuZCBSZWFzb24pOgotICAjIGludHJjaGVjay5jICAgICAtLSBOb3QgUmVmZXJlbmNlZCBieSBBbnlvbmUgKD8pCi0KLSMjIyMjIyMjIyMjIyMjIyMjIwotIyBNYWNyb3MgYW5kIEZsYWdzCi0jIyMjIyMjIyMjIyMjIyMjIyMKLV9CQVNFCQk9IC9RIC9XMiAvSSQoUFJPSklOQ0xVREUpCi0JCSMgL1EgICA9IE9taXQgSUJNIENvcHlyaWdodAotCQkjIC9XMiAgPSBTaG93IFdhcm5pbmdzL0Vycm9ycyBPbmx5Ci0JCSMgL0ZpICA9IENyZWF0ZSBQcmVjb21waWxlZCBIZWFkZXJzCi0JCSMgL1NpICA9IFV0aWxpemUgUHJlY29tcGlsZWQgSGVhZGVycwotCi1fR0VOCQk9IC9HNCAvR20gL0dkIC9CIi9TVEFDSzozNjAwMDAiCi0JCSMgL0c0ICA9IEdlbmVyYXRlIENvZGUgZm9yIDQ4NiAoVXNlIDM4NiBmb3IgRGVidWdnZXIpCi0JCSMgL0dtICA9IFVzZSBNdWx0aXRocmVhZCBSdW50aW1lCi0JCSMgL0dkICA9IER5bmFtaWNhbGx5IExvYWQgUnVudGltZQotCQkjIC9HcyAgPSBSZW1vdmUgQ29kZSBmb3IgU3RhY2sgUHJvYmVzCi0JCSMgL0d4ICA9IFJlbW92ZSBDKysgRXhjZXB0aW9uLUhhbmRsaW5nIEluZm8KLQkJIyAvVGRwID0gR2VuZXJhdGUgQ29kZSBmb3IgQysrIFRlbXBsYXRlcwotCQkjIC9SbiAgPSBHZW5lcmF0ZSBDb2RlIHdpdGhvdXQgYSBSdW50aW1lCi0JCSMgL0IiL1NUQUNLOm4iID0gU2V0IFN0YWNrIFNpemUKLQotX09QVAkJPSAvTyAvR2wKLQkJIyAvTyAgID0gRW5hYmxlIFNwZWVkLU9wdGltaXphdGlvbnMKLQkJIyAvT2wgID0gUGFzcyBDb2RlIFRocnUgSW50ZXJtZWRpYXRlIExpbmtlcgotCQkjIC9HdSAgPSBBZHZpc2UgTGlua2VyIEFsbCBFeHQgRGF0YSBpcyBJRCdkCi0JCSMgL0dsICA9IEhhdmUgTGlua2VyIFJlbW92ZSBVbnVzZWQgRm5zCi0KLV9EQkcJCT0gL0RIQVZFX0NPTkZJR19IIC9EVVNFX1NPQ0tFVAotCQkjIC9UaSAgPSBFbWJlZCBEZWJ1Z2dlci9BbmFseXplciBSZWNzCi0JCSMgL1RtICA9IEVuYWJsZSBEZWJ1ZyBNZW1vcnkgRm5zCi0JCSMgL1R4ICA9IFJlcXVlc3QgRnVsbCBEdW1wIFVwb24gRXhjZXB0aW9uCi0JCSMgL0RERUJVRyA9IEVuYWJsZSBBcHAtSW50ZXJuYWwgRGVidWdnaW5nIENvZGUKLSAgICAgICAgICAgICAgICAjIC9EVVNFX1NPQ0tFVCA9IAotICAgICAgICAgICAgICAgICMgL0RVU0VfRExfRVhQT1JUID0gCi0KLV9PVVQJCT0gCi0JCSMgL0ZiICA9IEVtYmVkIEJyb3dzZXIgUmVjcwotCQkjIC9HaCAgPSBHZW5lcmF0ZSBDb2RlIGZvciBQcm9maWxlciBIb29rcwotCQkjIC9GbCAgPSBPdXRwdXQgQy9DKysgTGlzdGluZyBGaWxlcwotICAgICAgICAgICAgICAgICMgL0xmICA9IFByb3ZpZGUgRnVsbCAoRGV0YWlsZWQpIExpc3RpbmcgRmlsZXMKLQkJIyAvRm0uID0gT3V0cHV0IExpbmtlciBNYXAgRmlsZQotCQkjIC9GdC4gPSBPdXRwdXQgQysrIFRlbXBsYXRlIFJlc29sdXRpb24gRmlsZXMKLQotX01BUAkJPSAvRm1Ob2lzZVwkKC5UQVJHRVQsQiw+Lm1hcCkKLQotX0RMTAkJPSAvR2UtCi1fRVhFCQk9IC9HZQotCQkjIC9HZSA9IENyZWF0ZSBhbiBFWEUsIG5vdCBETEwKLQotQ0ZMQUdTCQk9ICQoX0JBU0UpICQoX0dFTikgJChfT1BUKSAkKF9EQkcpICQoX09VVCkgJChfRVhFKSAvU3MKLUNQUEZMQUdTCT0gJChfQkFTRSkgJChfR0VOKSAkKF9PUFQpICQoX0RCRykgJChfT1VUKSAkKF9FWEUpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUHJpbWFyeSBUYXJnZXQocykKLSMjIyMjIyMjIyMjIyMjIyMjIyMKLUFsbDogIG9iaiBub2lzZSBQeUNvcmUubGliIFB5dGhvbjE1LmxpYiBQeXRob24xNS5kbGwgUHl0aG9uLmV4ZSBQR2VuLmV4ZQotCi0jIyMjIyMjIyMjIyMjIwotIwotIyMjIyMjIyMjIyMjIyMKLQotIyBPYmplY3QgTGlicmFyeSBvZiBBbGwgRXNzZW50aWFsIFB5dGhvbiBSb3V0aW5lcwotUHlDb3JlLmxpYjogJChNT0RVTEVTKSAkKE9CSkVDVFMpICQoUEFSU0VSKSAkKFBZVEhPTikgQ29uZmlnLm9iagotICAgICAgICAlZG8gIiUubGliIgotCi1QeXRob24xNS5kbGw6IENvbXBpbGUub2JqIFB5Q29yZS5saWIgUHl0aG9uLmRlZgotICAgICAgICAlZG8gIiUuZGxsIiBDUFBGTEFHUys9L0IiL05PRSIgQ1BQRkxBR1MrPSQoX01BUCkKLQotQ29tcGlsZS5vYmo6IENvbXBpbGUuYwotICAgICAgICAlZG8gIi5jLm9iaiIgQ0ZMQUdTKz0kKF9ETEwpCi0KLSMgSW1wb3J0IExpYnJhcnkgZm9yIFVzaW5nIHRoZSBQeXRob24xNS5kbGwKLVB5dGhvbjE1LmxpYjogUHl0aG9uLmRlZgotICAgICAgICAlZG8gIi5kZWYubGliIgotCi0jIFNtYWxsIFByb2dyYW0gdG8gU3RhcnQgSW50ZXJwcmV0ZXIgaW4gUHl0aG9uMTUuZGxsCi1QeXRob24uZXhlOiBQeXRob24ub2JqIFB5dGhvbjE1LmxpYgotICAgICAgICAlZG8gIiUuZXhlIiBDUFBGTEFHUys9JChfTUFQKQotCi0jUHl0aG9uLm9iajogUHl0aG9uLmMKLSMgICAgICAgICVkbyAiLmMub2JqIiBDRkxBR1MrPSQoX0VYRSkKLQotUEdlbi5leGU6ICQoUEdFTikgUHlDb3JlLmxpYgotICAgICAgICAlZG8gIiUuZXhlIiBDUFBGTEFHUys9JChfTUFQKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBNaXNjZWxsYW5lb3VzIFRhcmdldHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgUmVtb3ZlIEludGVybWVkaWF0ZSBUYXJnZXRzIGJ1dCBMZWF2ZSBFeGVjdXRhYmxlIEJpbmFyaWVzCi1jbGVhbjoKLQktLSBEZWwgL1EgJCguUEFUSC5vYmopXCoub2JqCQk+TlVMIDI+JjEKLQktLSBEZWwgL1EgL1kgTm9pc2UJCQk+TlVMIDI+JjEKLQktLSBEZWwgL1EgJChFUlJTKQkJCT5OVUwgMj4mMQotCi0jIFJlbW92ZSBBbGwgVGFyZ2V0cywgSW5jbHVkaW5nIEZpbmFsIEJpbmFyaWVzCi1kaXN0Y2xlYW46IGNsZWFuCi0gICAgICAgIC0tIERlbCAvUSBQeUNvcmUubGliIFB5dGhvbjE1LmxpYiAgICAgICA+TlVMIDI+JjEKLSAgICAgICAgLS0gRGVsIC9RIFB5dGhvbjE1LmRsbCBQeXRob24uZXhlICAgICAgID5OVUwgMj4mMQotCi1yZWxlYXNlOiBQeXRob24uZXhlIFB5dGhvbjE1LmRsbCBQeXRob24xNS5saWIKLQktLSBARWNobyBZIHwgY29weSAvVSAkKC5TT1VSQ0VTLE0iKi5leGUiKSBEOlxFWEVzCi0JLS0gQEVjaG8gWSB8IGNvcHkgL1UgJCguU09VUkNFUyxNIiouZGxsIikgRDpcRExMcwotCS0tIEBFY2hvIFkgfCBjb3B5IC9VICQoLlNPVVJDRVMsTSIqLmxpYiIpIEU6XFRhdVxMaWIKLQotdGVzdDoKLSAgICAgICAgcHl0aG9uIC4uXC4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5Ci0KLSMgVXBkYXRlIERlcGVuZGVuY2llcyBvbiBUYXJnZXRzIChVc2VzIE9wdXNNQUtFIENvbW1lcmNpYWwgUHJvZHVjdCkKLWRlcGVuZDoKLQlEOlxPcHVzTWFrZVxvczJta21mIC1jIC1zCi0KLSMjIyBPUFVTIE1LTUY6ICBEbyBub3QgcmVtb3ZlIHRoaXMgbGluZSEgIEdlbmVyYXRlZCBkZXBlbmRlbmNpZXMgZm9sbG93LgotCi1fdGtpbnRlci5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1hcnJheW1vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1hdWRpb29wLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteW1hdGguaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWJpbmFzY2lpLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWNtYXRobW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteW1hdGguaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWNwaWNrbGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIFwKLQkgbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIFwKLQkgbXltYXRoLmggbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotY3J5cHRtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotY3Vyc2VzbW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLV9kYm1tb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotZXJybm8ub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotZXJybm9tb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotZmNudGxtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGM6XG1wdG5caW5jbHVkZVxzeXNcaW9jdGwuaCBjZXZhbC5oIFwKLQkgY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIFwKLQkgZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIFwKLQkgaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggXAotCSBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIFwKLQkgcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIFwKLQkgc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWZwZWN0bG1vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggXAotCSBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1mcGV0ZXN0bW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLV9nZGJtbW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWdldGJ1aWxkaW5mby5vYmo6IHB5Y29uZmlnLmgKLQotZ2V0cGF0aC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIG9zZGVmcy5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIFwKLQkgcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIFwKLQkgc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1ncnBtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgZ3JwLmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotaW1hZ2VvcC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1tYWluLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLW1hdGhtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15bWF0aC5oIFwKLQkgbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotbXB6bW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdpbnRyZXByLmggbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBcCi0JIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggXAotCSBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0LmggXAotCSBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotbmlzbW9kdWxlLm9iajogYWJzdHJhY3QuaCBjOlxtcHRuXGluY2x1ZGVcc3lzXHRpbWUuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggXAotCSBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBcCi0JIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIFwKLQkgbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggXAotCSBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIFwKLQkgcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIFwKLQkgc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLW9wZXJhdG9yLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLXBhcnNlcm1vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21waWxlLmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggZ3JhbWluaXQuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBcCi0JIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIFwKLQkgbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggbm9kZS5oIG9iamVjdC5oIG9iamltcGwuaCBcCi0JIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIFwKLQkgcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRva2VuLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLXBvc2l4Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBteXRpbWUuaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggXAotCSBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0LmggXAotCSBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLXBvc2l4bW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBteXRpbWUuaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggXAotCSBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0LmggXAotCSBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLXB3ZG1vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB3ZC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIFwKLQkgcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIFwKLQkgc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1yZWFkbGluZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1yZXNvdXJjZS5vYmo6IGFic3RyYWN0LmggYzpcbXB0blxpbmNsdWRlXHN5c1x0aW1lLmggY2V2YWwuaCBjbGFzc29iamVjdC5oIFwKLQkgY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggXAotCSBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBcCi0JIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIFwKLQkgbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBcCi0JIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBcCi0JIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1zZWxlY3Rtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIFwKLQkgbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIFwKLQkgbXlwcm90by5oIG15c2VsZWN0LmggbXl0aW1lLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBcCi0JIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBcCi0JIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1zaWduYWxtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIFwKLQkgbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIFwKLQkgbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotc29ja2V0bW9kdWxlLm9iajogYWJzdHJhY3QuaCBjOlxtcHRuXGluY2x1ZGVcbmV0aW5ldFxpbi5oIFwKLQkgYzpcbXB0blxpbmNsdWRlXHN5c1xzb2NrZXQuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBteXRpbWUuaCBuZXRkYi5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBcCi0JIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotc3RydWN0bW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15bWF0aC5oIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLXN5c2xvZ21vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggXAotCSBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3lzbG9nLmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi10ZXJtaW9zLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLV90aHJlYWRtb2R1bGUub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIFwKLQkgbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIFwKLQkgbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRocmVhZC5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotdGltZW1vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgbXl0aW1lLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIFwKLQkgcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIFwKLQkgc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi14eG1vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi16bGlibW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWFic3RyYWN0Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWNsYXNzb2JqZWN0Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0LmggXAotCSBzdHJ1Y3RtZW1iZXIuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWNvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotY29tcGxleG9iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggXAotCSBteW1hdGguaCBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1kaWN0b2JqZWN0Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWZpbGVvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBcCi0JIHN0cnVjdG1lbWJlci5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotZmxvYXRvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15bWF0aC5oIFwKLQkgbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotZnJhbWVvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGlsZS5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnJhbWVvYmplY3QuaCBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggXAotCSBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBcCi0JIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBvcGNvZGUuaCBcCi0JIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIFwKLQkgcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN0cnVjdG1lbWJlci5oIFwKLQkgc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1mdW5jb2JqZWN0Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBpbGUuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggXAotCSBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3RydWN0bWVtYmVyLmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggXAotCSB0dXBsZW9iamVjdC5oCi0KLWxpc3RvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotbG9uZ29iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25naW50cmVwci5oIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggXAotCSBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15bWF0aC5oIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggXAotCSBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCBcCi0JIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCBcCi0JIHR1cGxlb2JqZWN0LmgKLQotbWV0aG9kb2JqZWN0Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0b2tlbi5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotbW9kdWxlb2JqZWN0Lm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLW9iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1yYW5nZW9iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1zbGljZW9iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1zdHJpbmdvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIFwKLQkgbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIFwKLQkgbXltYXRoLmggbXlwcm90by5oIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotdHVwbGVvYmplY3Qub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotdHlwZW9iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi14eG9iamVjdC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1hY2NlbGVyLm9iajogYml0c2V0LmggcHljb25maWcuaCBncmFtbWFyLmggbXltYWxsb2MuaCBteXByb3RvLmggbm9kZS5oIFwKLQkgcGFyc2VyLmggcGdlbmhlYWRlcnMuaCBweWRlYnVnLmggdG9rZW4uaAotCi1iaXRzZXQub2JqOiBiaXRzZXQuaCBweWNvbmZpZy5oIG15bWFsbG9jLmggbXlwcm90by5oIHBnZW5oZWFkZXJzLmggcHlkZWJ1Zy5oCi0KLWZpcnN0c2V0cy5vYmo6IGJpdHNldC5oIHB5Y29uZmlnLmggZ3JhbW1hci5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgcGdlbmhlYWRlcnMuaCBweWRlYnVnLmggdG9rZW4uaAotCi1ncmFtbWFyLm9iajogYml0c2V0LmggcHljb25maWcuaCBncmFtbWFyLmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBwZ2VuaGVhZGVycy5oIHB5ZGVidWcuaCB0b2tlbi5oCi0KLWdyYW1tYXIxLm9iajogYml0c2V0LmggcHljb25maWcuaCBncmFtbWFyLmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBwZ2VuaGVhZGVycy5oIHB5ZGVidWcuaCB0b2tlbi5oCi0KLWludHJjaGVjay5vYmo6IHB5Y29uZmlnLmggaW50cmNoZWNrLmggbXltYWxsb2MuaCBteXByb3RvLmgKLQotbGlzdG5vZGUub2JqOiBweWNvbmZpZy5oIG15bWFsbG9jLmggbXlwcm90by5oIG5vZGUuaCBwZ2VuaGVhZGVycy5oIHB5ZGVidWcuaCBcCi0JIHRva2VuLmgKLQotbWV0YWdyYW1tYXIub2JqOiBiaXRzZXQuaCBweWNvbmZpZy5oIGdyYW1tYXIuaCBtZXRhZ3JhbW1hci5oIG15bWFsbG9jLmggXAotCSBteXByb3RvLmggcGdlbi5oIHBnZW5oZWFkZXJzLmggcHlkZWJ1Zy5oCi0KLW15cmVhZGxpbmUub2JqOiBweWNvbmZpZy5oIGludHJjaGVjay5oIG15bWFsbG9jLmggbXlwcm90by5oCi0KLW5vZGUub2JqOiBweWNvbmZpZy5oIG15bWFsbG9jLmggbXlwcm90by5oIG5vZGUuaCBwZ2VuaGVhZGVycy5oIHB5ZGVidWcuaAotCi1wYXJzZXIub2JqOiBiaXRzZXQuaCBweWNvbmZpZy5oIGVycmNvZGUuaCBncmFtbWFyLmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBub2RlLmggcGFyc2VyLmggcGdlbmhlYWRlcnMuaCBweWRlYnVnLmggdG9rZW4uaAotCi1wYXJzZXRvay5vYmo6IGJpdHNldC5oIHB5Y29uZmlnLmggZXJyY29kZS5oIGdyYW1tYXIuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG5vZGUuaCBwYXJzZXIuaCBwYXJzZXRvay5oIHBnZW5oZWFkZXJzLmggcHlkZWJ1Zy5oIHRva2VuLmggXAotCSB0b2tlbml6ZXIuaAotCi1wZ2VuLm9iajogYml0c2V0LmggcHljb25maWcuaCBncmFtbWFyLmggbWV0YWdyYW1tYXIuaCBteW1hbGxvYy5oIFwKLQkgbXlwcm90by5oIG5vZGUuaCBwZ2VuLmggcGdlbmhlYWRlcnMuaCBweWRlYnVnLmggdG9rZW4uaAotCi1wZ2VubWFpbi5vYmo6IGJpdHNldC5oIHB5Y29uZmlnLmggZ3JhbW1hci5oIG15bWFsbG9jLmggbXlwcm90by5oIG5vZGUuaCBcCi0JIHBhcnNldG9rLmggcGdlbi5oIHBnZW5oZWFkZXJzLmggcHlkZWJ1Zy5oCi0KLXByaW50Z3JhbW1hci5vYmo6IGJpdHNldC5oIHB5Y29uZmlnLmggZ3JhbW1hci5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgcGdlbmhlYWRlcnMuaCBweWRlYnVnLmgKLQotdG9rZW5pemVyLm9iajogcHljb25maWcuaCBlcnJjb2RlLmggbXltYWxsb2MuaCBteXByb3RvLmggcGdlbmhlYWRlcnMuaCBcCi0JIHB5ZGVidWcuaCB0b2tlbi5oIHRva2VuaXplci5oCi0KLWF0b2Yub2JqOiBweWNvbmZpZy5oCi0KLWJsdGlubW9kdWxlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBpbGUuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBldmFsLmggZmlsZW9iamVjdC5oIFwKLQkgZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggXAotCSBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBcCi0JIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXltYXRoLmggbXlwcm90by5oIG5vZGUuaCBvYmplY3QuaCBcCi0JIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotY2V2YWwub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGlsZS5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGV2YWwuaCBmaWxlb2JqZWN0LmggXAotCSBmbG9hdG9iamVjdC5oIGZyYW1lb2JqZWN0LmggZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIFwKLQkgaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggXAotCSBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggb3Bjb2RlLmggXAotCSBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCBcCi0JIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCBcCi0JIHR1cGxlb2JqZWN0LmgKLQotY29tcGlsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21waWxlLmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmdW5jb2JqZWN0LmggZ3JhbWluaXQuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBcCi0JIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIFwKLQkgbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggbm9kZS5oIG9iamVjdC5oIG9iamltcGwuaCBcCi0JIG9wY29kZS5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIFwKLQkgc3RydWN0bWVtYmVyLmggc3lzbW9kdWxlLmggdG9rZW4uaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWVycm9ycy5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1mbW9kLm9iajogcHljb25maWcuaCBteW1hdGguaAotCi1mcm96ZW4ub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotZnJvemVubWFpbi5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1nZXRhcmdzLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWdldGNvbXBpbGVyLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLWdldGNvcHlyaWdodC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggXAotCSBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1nZXRwbGF0Zm9ybS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIHB5dGhvbi5oIFwKLQkgcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIFwKLQkgdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1nZXR2ZXJzaW9uLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcGF0Y2hsZXZlbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1ncmFtaW5pdC5vYmo6IGJpdHNldC5oIHB5Y29uZmlnLmggZ3JhbW1hci5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgcGdlbmhlYWRlcnMuaCBweWRlYnVnLmgKLQotaHlwb3Qub2JqOiBweWNvbmZpZy5oIG15bWF0aC5oIG15cHJvdG8uaAotCi1pbXBvcnQub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGlsZS5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGVycmNvZGUuaCBldmFsLmggXAotCSBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggaW1wb3J0LmggaW1wb3J0ZGwuaCBcCi0JIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggbWFyc2hhbC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgbm9kZS5oIG9iamVjdC5oIG9iamltcGwuaCBvc2RlZnMuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRva2VuLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi1pbXBvcnRkbC5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbXBvcnRkbC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdvYmplY3QuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBcCi0JIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggb3NkZWZzLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBcCi0JIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0LmggXAotCSBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLW1hcnNoYWwub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGlsZS5oIFwKLQkgY29tcGxleG9iamVjdC5oIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIFwKLQkgZnVuY29iamVjdC5oIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBcCi0JIGxvbmdpbnRyZXByLmggbG9uZ29iamVjdC5oIG1hcnNoYWwuaCBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggXAotCSBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIFwKLQkgcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIFwKLQkgc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLW1vZHN1cHBvcnQub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotbXlzdHJ0b3VsLm9iajogcHljb25maWcuaAotCi1weWZwZS5vYmo6IHB5Y29uZmlnLmggcHlmcGUuaAotCi1weXN0YXRlLm9iajogYWJzdHJhY3QuaCBjZXZhbC5oIGNsYXNzb2JqZWN0LmggY29iamVjdC5oIGNvbXBsZXhvYmplY3QuaCBcCi0JIHB5Y29uZmlnLmggZGljdG9iamVjdC5oIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBcCi0JIGltcG9ydC5oIGludG9iamVjdC5oIGludHJjaGVjay5oIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggXAotCSBtZXRob2RvYmplY3QuaCBtb2RzdXBwb3J0LmggbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggXAotCSBvYmplY3QuaCBvYmppbXBsLmggcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggXAotCSBweXRob25ydW4uaCByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3lzbW9kdWxlLmggXAotCSB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCi0KLXB5dGhvbnJ1bi5vYmo6IGFic3RyYWN0LmggYml0c2V0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBpbGUuaCBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZXJyY29kZS5oIGV2YWwuaCBcCi0JIGZpbGVvYmplY3QuaCBmbG9hdG9iamVjdC5oIGZ1bmNvYmplY3QuaCBncmFtbWFyLmggaW1wb3J0LmggXAotCSBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIG1hcnNoYWwuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG5vZGUuaCBvYmplY3QuaCBvYmppbXBsLmggcGFyc2V0b2suaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIFwKLQkgcHlzdGF0ZS5oIHB5dGhvbi5oIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBcCi0JIHN0cmluZ29iamVjdC5oIHN5c21vZHVsZS5oIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotc2lnY2hlY2sub2JqOiBhYnN0cmFjdC5oIGNldmFsLmggY2xhc3NvYmplY3QuaCBjb2JqZWN0LmggY29tcGxleG9iamVjdC5oIFwKLQkgcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggZnVuY29iamVjdC5oIFwKLQkgaW1wb3J0LmggaW50b2JqZWN0LmggaW50cmNoZWNrLmggbGlzdG9iamVjdC5oIGxvbmdvYmplY3QuaCBcCi0JIG1ldGhvZG9iamVjdC5oIG1vZHN1cHBvcnQuaCBtb2R1bGVvYmplY3QuaCBteW1hbGxvYy5oIG15cHJvdG8uaCBcCi0JIG9iamVjdC5oIG9iamltcGwuaCBweWRlYnVnLmggcHllcnJvcnMuaCBweWZwZS5oIHB5c3RhdGUuaCBweXRob24uaCBcCi0JIHB5dGhvbnJ1bi5oIHJhbmdlb2JqZWN0Lmggc2xpY2VvYmplY3QuaCBzdHJpbmdvYmplY3QuaCBzeXNtb2R1bGUuaCBcCi0JIHRyYWNlYmFjay5oIHR1cGxlb2JqZWN0LmgKLQotc3RyZHVwLm9iajogcHljb25maWcuaCBteW1hbGxvYy5oIG15cHJvdG8uaAotCi1zdHJ0b2Qub2JqOiBweWNvbmZpZy5oCi0KLXN0cnVjdG1lbWJlci5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBcCi0JIGNvbXBsZXhvYmplY3QuaCBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBcCi0JIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggXAotCSBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggXAotCSBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggXAotCSBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIFwKLQkgc3RyaW5nb2JqZWN0Lmggc3RydWN0bWVtYmVyLmggc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggXAotCSB0dXBsZW9iamVjdC5oCi0KLXN5c21vZHVsZS5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21wbGV4b2JqZWN0LmggXAotCSBweWNvbmZpZy5oIGRpY3RvYmplY3QuaCBmaWxlb2JqZWN0LmggZmxvYXRvYmplY3QuaCBmdW5jb2JqZWN0LmggXAotCSBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBsaXN0b2JqZWN0LmggbG9uZ29iamVjdC5oIFwKLQkgbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIG1vZHVsZW9iamVjdC5oIG15bWFsbG9jLmggbXlwcm90by5oIFwKLQkgb2JqZWN0Lmggb2JqaW1wbC5oIG9zZGVmcy5oIHB5ZGVidWcuaCBweWVycm9ycy5oIHB5ZnBlLmggcHlzdGF0ZS5oIFwKLQkgcHl0aG9uLmggcHl0aG9ucnVuLmggcmFuZ2VvYmplY3QuaCBzbGljZW9iamVjdC5oIHN0cmluZ29iamVjdC5oIFwKLQkgc3lzbW9kdWxlLmggdHJhY2ViYWNrLmggdHVwbGVvYmplY3QuaAotCi10aHJlYWQub2JqOiBweWNvbmZpZy5oIHRocmVhZC5oCi0KLXRyYWNlYmFjay5vYmo6IGFic3RyYWN0LmggY2V2YWwuaCBjbGFzc29iamVjdC5oIGNvYmplY3QuaCBjb21waWxlLmggXAotCSBjb21wbGV4b2JqZWN0LmggcHljb25maWcuaCBkaWN0b2JqZWN0LmggZmlsZW9iamVjdC5oIGZsb2F0b2JqZWN0LmggXAotCSBmcmFtZW9iamVjdC5oIGZ1bmNvYmplY3QuaCBpbXBvcnQuaCBpbnRvYmplY3QuaCBpbnRyY2hlY2suaCBcCi0JIGxpc3RvYmplY3QuaCBsb25nb2JqZWN0LmggbWV0aG9kb2JqZWN0LmggbW9kc3VwcG9ydC5oIFwKLQkgbW9kdWxlb2JqZWN0LmggbXltYWxsb2MuaCBteXByb3RvLmggb2JqZWN0Lmggb2JqaW1wbC5oIG9zZGVmcy5oIFwKLQkgcHlkZWJ1Zy5oIHB5ZXJyb3JzLmggcHlmcGUuaCBweXN0YXRlLmggcHl0aG9uLmggcHl0aG9ucnVuLmggXAotCSByYW5nZW9iamVjdC5oIHNsaWNlb2JqZWN0Lmggc3RyaW5nb2JqZWN0Lmggc3RydWN0bWVtYmVyLmggXAotCSBzeXNtb2R1bGUuaCB0cmFjZWJhY2suaCB0dXBsZW9iamVjdC5oCmRpZmYgLS1naXQgYS9QQy9vczJ2YWNwcC9weWNvbmZpZy5oIGIvUEMvb3MydmFjcHAvcHljb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc2NWI0NC4uMDAwMDAwMAotLS0gYS9QQy9vczJ2YWNwcC9weWNvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLSNpZm5kZWYgUHlfQ09ORklHX0gKLSNkZWZpbmUgUHlfQ09ORklHX0gKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHB5Y29uZmlnLmguICBOT1QgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlLgotICoKLSAqIFRoaXMgaXMgYSBtYW51YWxseSBtYWludGFpbmVkIHZlcnNpb24gdXNlZCBmb3IgdGhlIElCTSBWaXN1YWxBZ2UKLSAqIEMvQysrIGNvbXBpbGVyIG9uIHRoZSBPUy8yIHBsYXRmb3JtLiAgSXQgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mCi0gKiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBGSUxFU1lTVEVNIERFRklORVM6Ci0gKiBUaGUgY29kZSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgd2F5IG9mIG5hbWluZyBmaWxlcyBhbmQKLSAqIGRpcmVjdG9yeSBwYXRocyBzaG91bGQgYmUgd3JhcHBlZCBhcm91bmQgb25lIG9mIHRoZSBmb2xsb3dpbmcKLSAqICNkZWZpbmVzOgotICoKLSAqICAgICBET1NGSUxFU1lTICAgUENET1MtU3R5bGUgKGZvciBQQ0RPUywgV2luZG93cyBhbmQgT1MvMikKLSAqICAgICBNQUNGSUxFU1lTICAgTWFjaW50b3NoLVN0eWxlCi0gKiAgICAgVU5JWEZJTEVTWVMgIFVuaXgtU3R5bGUKLSAqICAgICBBTUlHQUZJTEVTWVMgQW1pZ2FET1MtU3R5bGUKLSAqIAotICogQmVjYXVzZSBvZiB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBhbmQgb3BlcmF0aW5nIHN5c3RlbXMgaW4KLSAqIHVzZSBvbiB0aGUgSW50ZWwgcGxhdGZvcm0sIG5laXRoZXIgdGhlIGNvbXBpbGVyIG5hbWUgbm9yCi0gKiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBuYW1lIGlzIHN1ZmZpY2llbnQuCi0gKgotICogT1MvMiBERUZJTkVTOgotICogVGhlIGNvZGUgc3BlY2lmaWMgdG8gT1MvMidzIFByb2dyYW0gQVBJIHNob3VsZCBiZSB3cmFwcGVkIGFyb3VuZAotICoKLSAqIF9fVE9TX09TMl9fICAgVGFyZ2V0IE9wZXJhdGluZyBTeXN0ZW0sIE9TLzIKLSAqCi0gKiBBbnkgY29kZSBzcGVjaWZpYyB0byB0aGUgY29tcGlsZXIgaXRzZWxmIHNob3VsZCBiZSB3cmFwcGVkIHdpdGgKLSAqCi0gKiBfX0lCTUNfXyAgICAgIElCTSBDIENvbXBpbGVyCi0gKiBfX0lCTUNQUF9fICAgIElCTSBDKysgQ29tcGlsZXIKLSAqCi0gKiBOb3RlIHRoYXQgc2luY2UgdGhlIFZpc3VhbEFnZSBDL0MrKyBjb21waWxlciBpcyBhbHNvIGF2YWlsYWJsZQotICogZm9yIHRoZSBXaW5kb3dzIHBsYXRmb3JtLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHVzZSBib3RoIGEKLSAqIF9fVE9TX09TMl9fIGFuZCBhIF9fSUJNQ19fIHRvIHNlbGVjdCBhIHZlcnkgc3BlY2lmaWMgZW52aXJvbm1lbnQuCi0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBTb21lIHN5c3RlbXMgcmVxdWlyZSBzcGVjaWFsIGRlY2xhcmF0aW9ucyBmb3IgZGF0YSBpdGVtcyBpbXBvcnRlZAotICogb3IgZXhwb3J0ZWQgZnJvbSBkeW5hbWljIGxpbmsgbGlicmFyaWVzLiAgTm90ZSB0aGF0IHRoZSBkZWZpbml0aW9uCi0gKiBvZiBETF9JTVBPUlQgY292ZXJzIGJvdGggY2FzZXMuICBEZWZpbmUgVVNFX0RMX0lNUE9SVCBmb3IgdGhlIGNsaWVudAotICogb2YgYSBETEwuICBEZWZpbmUgVVNFX0RMX0VYUE9SVCB3aGVuIG1ha2luZyBhIERMTC4KLSAqLwotCi0jaW5jbHVkZSA8aW8uaD4KLQotLyogQ29uZmlndXJhdGlvbiBPcHRpb25zIGZvciBGaW5kaW5nIE1vZHVsZXMgKi8KLSNkZWZpbmUgUFJFRklYICAgICAgICAgICAgICAgICAiIgotI2RlZmluZSBFWEVDX1BSRUZJWCAgICAgICAgICAgICIiCi0KLS8qIFByb3ZpZGUgYSBkZWZhdWx0IGxpYnJhcnkgc28gd3JpdGVycyBvZiBleHRlbnNpb24gbW9kdWxlcwotICogd29uJ3QgaGF2ZSB0byBleHBsaWNpdGx5IHNwZWNpZnkgaXQgYW55bW9yZQotICovCi0jcHJhZ21hIGxpYnJhcnkoIlB5dGhvbjI0LmxpYiIpCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgICAzMi1CaXQgSUJNIFZpc3VhbEFnZSBDL0MrKyB2My4wIGZvciBPUy8yICAgICAqLwotLyogIChDb252ZXJ0IENvbXBpbGVyIEZsYWdzIGludG8gVXNlZnVsIFN3aXRjaGVzKSAgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0jZGVmaW5lIFBMQVRGT1JNICAgICJvczIiCi0jZGVmaW5lIENPTVBJTEVSICAgICJbVmlzdWFsQWdlIEMvQysrXSIKLSNkZWZpbmUgUFlPU19PUzIgICAgLyogRGVmaW5lIEluZGljYXRvciBvZiBPcGVyYXRpbmcgU3lzdGVtICovCi0jZGVmaW5lIFBZQ0NfVkFDUFAgIC8qIERlZmluZSBJbmRpY2F0b3Igb2YgQyBDb21waWxlciAqLwotCi0gIC8qIFBsYXRmb3JtIEZpbGVzeXN0ZW0gKi8KLSNkZWZpbmUgUFlUSE9OUEFUSCAgIi47LlxcbGliOy5cXGxpYlxccGxhdC13aW4iCi0jZGVmaW5lIERPU0ZJTEVTWVMgIC8qIE9TLzIgVXNlcyB0aGUgRE9TIEZpbGUgTmFtaW5nIENvbnZlbnRpb25zICovCi0vKiAjZGVmaW5lIElNUE9SVF84eDNfTkFNRVMgKGxldCdzIG1vdmUgdXAgdG8gbG9uZyBmaWxlbmFtZXMpICovCi0KLSAgLyogUGxhdGZvcm0gQ1BVLU1vZGUgRGVwZW5kZW5jaWVzICovCi0jZGVmaW5lIFdPUkRfQklUICAgICAgICAgICAgICAgIDMyIC8qIE9TLzIgaXMgYSAzMi1CaXQgT3BlcmF0aW5nIFN5c3RlbSAqLwotI2RlZmluZSBMT05HX0JJVCAgICAgICAgICAgICAgICAzMgotI2RlZmluZSBTSVpFT0ZfSU5UICAgICAgICAgICAgICAgNCAvKiBDb3VudCBvZiBCeXRlcyBpbiBhbiAoaW50KSAgICAgICAgICAgICovCi0jZGVmaW5lIFNJWkVPRl9MT05HICAgICAgICAgICAgICA0IC8qIENvdW50IG9mIEJ5dGVzIGluIGEgKGxvbmcpICAgICAgICAgICAgKi8KLSNkZWZpbmUgU0laRU9GX1ZPSURfUCAgICAgICAgICAgIDQgLyogQ291bnQgb2YgQnl0ZXMgaW4gYSAodm9pZCAqKSAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAgICAgMSAqLyAvKiBWQUMrKyBkb2VzIG5vdCBzdXBwb3J0IChsb25nIGxvbmcpICAgICovCi0vKiAjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgICA4ICovIC8qIENvdW50IG9mIEJ5dGVzIGluIGEgKGxvbmcgbG9uZykgICAgICAgKi8KLQotLyogdW5pY29kZSBkZWZpbmluZXMgKi8KLSNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFICAgIHdjaGFyX3QKLSNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIFNJWkVPRl9TSE9SVAotCi0vKiBkeW5hbWljIGxvYWRpbmcgKi8KLSNkZWZpbmUgSEFWRV9EWU5BTUlDX0xPQURJTkcgMQotCi0vKiBEZWZpbmUgaWYgdHlwZSBjaGFyIGlzIHVuc2lnbmVkIGFuZCB5b3UgYXJlIG5vdCB1c2luZyBnY2MuICAqLwotI2lmbmRlZiBfX0NIQVJfVU5TSUdORURfXwotLyogI3VuZGVmIF9fQ0hBUl9VTlNJR05FRF9fICovCi0jZW5kaWYKLQotdHlwZWRlZiBpbnQgbW9kZV90OwotdHlwZWRlZiBpbnQgdWlkX3Q7Ci10eXBlZGVmIGludCBnaWRfdDsKLXR5cGVkZWYgaW50IHBpZF90OwotCi0jaWYgZGVmaW5lZChfX01VTFRJX18pICAgICAvKiBJZiBDb21waWxlciAvR3QrIE11bHRpdGhyZWFkIE9wdGlvbiBFbmFibGVkLCAgKi8KLSAgI2RlZmluZSBXSVRIX1RIUkVBRCAgICAgICAgICAgIDEgLyogRW5hYmxlIFRocmVhZGluZyBUaHJvdWdob3V0IFB5dGhvbiAgICAqLwotICAjZGVmaW5lIE9TMl9USFJFQURTICAgICAgICAgICAgMSAvKiBBbmQgVXNlIHRoZSBPUy8yIEZsYXZvciBvZiBUaHJlYWRzICAgICovCi0vKiAjZGVmaW5lIF9SRUVOVFJBTlQgMSAqLyAvKiBVc2UgdGhyZWFkLXNhZmUgZXJybm8sIGhfZXJybm8sIGFuZCBvdGhlciBmbnMgKi8KLSNlbmRpZgotCi0gIC8qIENvbXBpbGVyIFJ1bnRpbWUgTGlicmFyeSBDYXBhYmlsaXRpZXMgKi8KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPGRpcmVjdC5oPgotLyogI3VuZGVmIEJBRF9TVEFUSUNfRk9SV0FSRCAqLyAvKiBpZiBjb21waWxlciBib3RjaGVzIHN0YXRpYyBmd2QgZGVjbHMgKi8KLQotI2RlZmluZSBTVERDX0hFQURFUlMgICAgICAgICAgICAgMSAvKiBWQUMrKyBpcyBhbiBBTlNJIEMgQ29tcGlsZXIgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfSFlQT1QgICAgICAgICAgICAgICAxIC8qIGh5cG90KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9QVVRFTlYgICAgICAgICAgICAgIDEgLyogcHV0ZW52KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBWQV9MSVNUX0lTX0FSUkFZICAgMSAqLyAvKiBpZiB2YV9saXN0IGlzIGFuIGFycmF5IG9mIHNvbWUga2luZCAgICovCi0vKiAjZGVmaW5lIEhBVkVfQ09OSU9fSCAgICAgICAxICovIC8qICNpbmNsdWRlIDxjb25pby5oPiAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9FUlJOT19IICAgICAgICAgICAgIDEgLyogI2luY2x1ZGUgPGVycm5vLmg+ICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggICAgICAgICAgMSAvKiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4gICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggICAgICAgICAxIC8qICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gICAgICAgICAgICAgICAgKi8KLQotICAvKiBWYXJpYWJsZS1Bcmd1bWVudHMvUHJvdG90eXBlcyAqLwotI2RlZmluZSBIQVZFX1BST1RPVFlQRVMgICAgICAgICAgMSAvKiBWQUMrKyBzdXBwb3J0cyBDIEZ1bmN0aW9uIFByb3RvdHlwZXMgICovCi0jZGVmaW5lIEhBVkVfU1REQVJHX1BST1RPVFlQRVMgICAxIC8qIE91ciA8c3RkYXJnLmg+IGhhcyBwcm90b3R5cGVzICAgICAgICAgKi8KLQotICAvKiBTdHJpbmcvTWVtb3J5L0xvY2FsZSBPcGVyYXRpb25zICovCi0jZGVmaW5lIEhBVkVfTUVNTU9WRSAgICAgICAgICAgICAxIC8qIG1lbW1vdmUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9TVFJFUlJPUiAgICAgICAgICAgIDEgLyogc3RyZXJyb3IoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQVZFX1NFVExPQ0FMRSAgICAgICAgICAgMSAvKiBzZXRsb2NhbGUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIE1BTExPQ19aRVJPX1JFVFVSTlNfTlVMTCAxIC8qIE91ciBtYWxsb2MoMCkgcmV0dXJucyBhIE5VTEwgcHRyICAgICAgKi8KLQotICAvKiBTaWduYWwgSGFuZGxpbmcgKi8KLSNkZWZpbmUgSEFWRV9TSUdOQUxfSCAgICAgICAgICAgIDEgLyogc2lnbmFsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBSRVRTSUdUWVBFICAgICAgICAgICAgdm9pZCAvKiBSZXR1cm4gdHlwZSBvZiBoYW5kbGVycyAoaW50IG9yIHZvaWQpICovCi0vKiAjdW5kZWYgV0FOVF9TSUdGUEVfSEFORExFUiAgICovIC8qIEhhbmRsZSBTSUdGUEUgKHNlZSBJbmNsdWRlL3B5ZnBlLmgpICAgKi8KLS8qICNkZWZpbmUgSEFWRV9BTEFSTSAgICAgICAgIDEgKi8gLyogYWxhcm0oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX1NJR0lOVEVSUlVQVCAgMSAqLyAvKiBzaWdpbnRlcnJ1cHQoKSAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIEhBVkVfU0lHUkVMU0UgICAgICAxICovIC8qIHNpZ3JlbHNlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgRE9OVF9IQVZFX1NJR19BTEFSTSAgICAgIDEKLSNkZWZpbmUgRE9OVF9IQVZFX1NJR19QQVVTRSAgICAgIDEKLQotICAvKiBDbG9jay9UaW1lIFN1cHBvcnQgKi8KLSNkZWZpbmUgSEFWRV9GVElNRSAgICAgICAgICAgICAgIDEgLyogV2UgaGF2ZSBmdGltZSgpIGluIDxzeXMvdGltZWIuaD4gICAgICAqLwotI2RlZmluZSBIQVZFX0NMT0NLICAgICAgICAgICAgICAgMSAvKiBjbG9jaygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfU1RSRlRJTUUgICAgICAgICAgICAxIC8qIHN0cmZ0aW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9NS1RJTUUgICAgICAgICAgICAgIDEgLyogbWt0aW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQVZFX1RaTkFNRSAgICAgICAgICAgICAgMSAvKiBObyB0bV96b25lIGJ1dCBkbyBoYXZlIHR6bmFtZVtdICAgICAgICovCi0jZGVmaW5lIEhBVkVfVElNRVMgICAgICAgICAgICAgICAxIC8qICNpbmNsdWRlIDxzeXMvdGltZXMuaD4gICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9TWVNfVVRJTUVfSCAgICAgICAgIDEgLyogI2luY2x1ZGUgPHN5cy91dGltZS5oPiAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX1VUSU1FX0ggICAgICAgMSAqLyAvKiAjaW5jbHVkZSA8dXRpbWUuaD4gICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAgICAgICAgICAxIC8qICNpbmNsdWRlIDxzeXMvdGltZS5oPiAgICAgICAgICAgICAgICAgKi8KLS8qICNkZWZpbmUgVE1fSU5fU1lTX1RJTUUgICAgIDEgKi8gLyogPHN5cy90aW1lLmg+IGRlY2xhcmVzIHN0cnVjdCB0bSAgICAgICAqLwotI2RlZmluZSBIQVZFX0dFVFRJTUVPRkRBWSAgICAgICAgMSAvKiBnZXR0aW1lb2ZkYXkoKSAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIEdFVFRJTUVPRkRBWV9OT19UWiAxICovIC8qIGdldHRpbWVvZmRheSgpIGRvZXMgbm90IGhhdmUgMm5kIGFyZyAgKi8KLS8qICNkZWZpbmUgSEFWRV9USU1FR00gICAgICAgIDEgKi8gLyogdGltZWdtKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBUSU1FX1dJVEhfU1lTX1RJTUUgICAgICAgMSAvKiBNaXggPHN5cy90aW1lLmg+IGFuZCA8dGltZS5oPiAgICAgICAgICovCi0jZGVmaW5lIFNZU19TRUxFQ1RfV0lUSF9TWVNfVElNRSAxIC8qIE1peCA8c3lzL3NlbGVjdC5oPiBhbmQgPHN5cy90aW1lLmg+ICAgKi8KLS8qICNkZWZpbmUgSEFWRV9BTFRaT05FICAgICAgIDEgKi8gLyogaWYgPHRpbWUuaD4gZGVmaW5lcyBhbHR6b25lICAgICAgICAgICAqLwotCi0gIC8qIE5ldHdvcmsvU29ja2V0cyBTdXBwb3J0ICovCi0jZGVmaW5lIEhBVkVfU1lTX1NFTEVDVF9IICAgICAgIDEgLyogI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4gICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgQlNEX1NFTEVDVCAgICAgICAgICAgICAgMSAvKiBVc2UgQlNEIHZlcnN1cyBPUy8yIGZvcm0gb2Ygc2VsZWN0KCkgICAqLwotI2RlZmluZSBIQVZFX1NFTEVDVCAgICAgICAgICAgICAxIC8qIHNlbGVjdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfR0VUUEVFUk5BTUUgICAgICAgIDEgLyogZ2V0cGVlcm5hbWUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICN1bmRlZiBIQVZFX0dFVEhPU1ROQU1FX1IgMSAqLyAvKiBnZXRob3N0bmFtZV9yKCkgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0gIC8qIEZpbGUgSS9PICovCi0jZGVmaW5lIEhBVkVfRFVQMiAgICAgICAgICAgICAgICAxIC8qIGR1cDIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9FWEVDViAgICAgICAgICAgICAgIDEgLyogZXhlY3YoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQVZFX1NFVFZCVUYgICAgICAgICAgICAgMSAvKiBzZXR2YnVmKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfR0VUQ1dEICAgICAgICAgICAgICAxIC8qIGdldGN3ZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9QSVBFICAgICAgICAgICAgICAgIDEgLyogcGlwZSgpICAgICBbT1MvMi1zcGVjaWZpYyBjb2RlIGFkZGVkXSAqLwotI2RlZmluZSBIQVZFX0lPX0ggICAgICAgICAgICAgICAgMSAvKiAjaW5jbHVkZSA8aW8uaD4gICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfRkNOVExfSCAgICAgICAgICAgICAxIC8qICNpbmNsdWRlIDxmY250bC5oPiAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9ESVJFQ1RfSCAgICAgICAgICAgIDEgLyogI2luY2x1ZGUgPGRpcmVjdC5oPiAgICAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX0ZMT0NLICAgICAgICAgMSAqLyAvKiBmbG9jaygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIEhBVkVfVFJVTkNBVEUgICAgICAxICovIC8qIHRydW5jYXRlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICNkZWZpbmUgSEFWRV9GVFJVTkNBVEUgICAgIDEgKi8gLyogZnRydW5jYXRlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX0xTVEFUICAgICAgICAgMSAqLyAvKiBsc3RhdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIEhBVkVfRElSRU5UX0ggICAgICAxICovIC8qICNpbmNsdWRlIDxkaXJlbnQuaD4gICAgICAgICAgICAgICAgICAgKi8KLS8qICNkZWZpbmUgSEFWRV9PUEVORElSICAgICAgIDEgKi8gLyogb3BlbmRpcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0gIC8qIFByb2Nlc3MgT3BlcmF0aW9ucyAqLwotI2RlZmluZSBIQVZFX1BST0NFU1NfSCAgICAgICAgICAgMSAvKiAjaW5jbHVkZSA8cHJvY2Vzcy5oPiAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfR0VUUElEICAgICAgICAgICAgICAxIC8qIGdldHBpZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFWRV9TWVNURU0gICAgICAgICAgICAgIDEgLyogc3lzdGVtKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQVZFX1dBSVQgICAgICAgICAgICAgICAgMSAvKiB3YWl0KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBVkVfS0lMTCAgICAgICAgICAgICAgICAxIC8qIGtpbGwoKSAgICAgW09TLzItc3BlY2lmaWMgY29kZSBhZGRlZF0gKi8KLSNkZWZpbmUgSEFWRV9QT1BFTiAgICAgICAgICAgICAgIDEgLyogcG9wZW4oKSAgICBbT1MvMi1zcGVjaWZpYyBjb2RlIGFkZGVkXSAqLwotLyogI2RlZmluZSBIQVZFX0dFVFBQSUQgICAgICAgMSAqLyAvKiBnZXRwcGlkKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIEhBVkVfV0FJVFBJRCAgICAgICAxICovIC8qIHdhaXRwaWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICNkZWZpbmUgSEFWRV9GT1JLICAgICAgICAgIDEgKi8gLyogZm9yaygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0gIC8qIFVzZXIvR3JvdXAgSUQgUXVlcmllcyAqLwotLyogI2RlZmluZSBIQVZFX0dFVEVHSUQgICAgICAgMSAqLwotLyogI2RlZmluZSBIQVZFX0dFVEVVSUQgICAgICAgMSAqLwotLyogI2RlZmluZSBIQVZFX0dFVEdJRCAgICAgICAgMSAqLwotLyogI2RlZmluZSBIQVZFX0dFVFVJRCAgICAgICAgMSAqLwotCi0gIC8qIFVuaXgtU3BlY2lmaWMgKi8KLS8qICNkZWZpbmUgSEFWRV9TWVNfVU5fSCAgICAgICAgICAgIDEgLyogI2luY2x1ZGUgPHN5cy91bi5oPiAgICAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX1NZU19VVFNOQU1FX0ggMSAqLyAvKiAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4gICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIEhBVkVfU1lTX1dBSVRfSCAgICAxICovIC8qICNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgICAgICAgICAgKi8KLS8qICNkZWZpbmUgSEFWRV9VTklTVERfSCAgICAgIDEgKi8gLyogI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAgICAgICAgICAgICAgICAqLwotLyogI2RlZmluZSBIQVZFX1VOQU1FICAgICAgICAgMSAqLyAvKiB1bmFtZSAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLS8qIERlZmluZSBpZiB5b3Ugd2FudCBkb2N1bWVudGF0aW9uIHN0cmluZ3MgaW4gZXh0ZW5zaW9uIG1vZHVsZXMgKi8KLSNkZWZpbmUgV0lUSF9ET0NfU1RSSU5HUyAxCi0KLSNpZmRlZiBVU0VfRExfRVhQT1JUCi0gICNkZWZpbmUgRExfSU1QT1JUKFJUWVBFKSBSVFlQRSBfU3lzdGVtCi0jZW5kaWYKLQotI2VuZGlmIC8qICFQeV9DT05GSUdfSCAqLwotCmRpZmYgLS1naXQgYS9QQy9vczJ2YWNwcC9weXRob24uZGVmIGIvUEMvb3MydmFjcHAvcHl0aG9uLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUyNWMyYS4uMDAwMDAwMAotLS0gYS9QQy9vczJ2YWNwcC9weXRob24uZGVmCisrKyAvZGV2L251bGwKQEAgLTEsNDc5ICswLDAgQEAKLUxJQlJBUlkgICAgICAgIFBZVEhPTjI0IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UKLURFU0NSSVBUSU9OICAgICdQeXRob24gMi40IENvcmUgRExMJwotUFJPVE1PREUKLURBVEEgICAgICAgICAgIE1VTFRJUExFIE5PTlNIQVJFRAotCi1FWFBPUlRTCi0gICAgICAgICAgICAgICA7IERhdGEKLSAgICAgICAgICAgICAgIFB5Q0Z1bmN0aW9uX1R5cGUKLSAgICAgICAgICAgICAgIFB5Q2Fwc3VsZV9UeXBlCi0gICAgICAgICAgICAgICBQeUNPYmplY3RfVHlwZQotICAgICAgICAgICAgICAgUHlDbGFzc19UeXBlCi0gICAgICAgICAgICAgICBQeUNvZGVfVHlwZQotICAgICAgICAgICAgICAgUHlDb21wbGV4X1R5cGUKLSAgICAgICAgICAgICAgIFB5RGljdF9UeXBlCi0gICAgICAgICAgICAgICBQeUV4Y19Bcml0aG1ldGljRXJyb3IKLSAgICAgICAgICAgICAgIFB5RXhjX0Fzc2VydGlvbkVycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19BdHRyaWJ1dGVFcnJvcgotICAgICAgICAgICAgICAgUHlFeGNfRU9GRXJyb3IKLSAgICAgICAgICAgICAgIFB5RXhjX0Vudmlyb25tZW50RXJyb3IKLSAgICAgICAgICAgICAgIFB5RXhjX0V4Y2VwdGlvbgotICAgICAgICAgICAgICAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19JT0Vycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19JbXBvcnRFcnJvcgotICAgICAgICAgICAgICAgUHlFeGNfSW5kZXhFcnJvcgotICAgICAgICAgICAgICAgUHlFeGNfS2V5RXJyb3IKLSAgICAgICAgICAgICAgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0Ci0gICAgICAgICAgICAgICBQeUV4Y19Mb29rdXBFcnJvcgotICAgICAgICAgICAgICAgUHlFeGNfTWVtb3J5RXJyb3IKLSAgICAgICAgICAgICAgIFB5RXhjX01lbW9yeUVycm9ySW5zdAotICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19PdmVyZmxvd0Vycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IKLSAgICAgICAgICAgICAgIFB5RXhjX1N5bnRheEVycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvcgotICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXhpdAotICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yCi0gICAgICAgICAgICAgICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcgotICAgICAgICAgICAgICAgUHlGaWxlX1R5cGUKLSAgICAgICAgICAgICAgIFB5RmxvYXRfVHlwZQotICAgICAgICAgICAgICAgUHlGcmFtZV9UeXBlCi0gICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1R5cGUKLSAgICAgICAgICAgICAgIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMKLSAgICAgICAgICAgICAgIFB5SW1wb3J0X0luaXR0YWIKLSAgICAgICAgICAgICAgIFB5SW5zdGFuY2VfVHlwZQotICAgICAgICAgICAgICAgUHlJbnRfVHlwZQotICAgICAgICAgICAgICAgUHlMaXN0X1R5cGUKLSAgICAgICAgICAgICAgIFB5TG9uZ19UeXBlCi0gICAgICAgICAgICAgICBQeU1ldGhvZF9UeXBlCi0gICAgICAgICAgICAgICBQeU1vZHVsZV9UeXBlCi0gICAgICAgICAgICAgICBQeU9TX0lucHV0SG9vawotICAgICAgICAgICAgICAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcgotICAgICAgICAgICAgICAgUHlSYW5nZV9UeXBlCi0gICAgICAgICAgICAgICBQeVNsaWNlX1R5cGUKLSAgICAgICAgICAgICAgIFB5U3RyaW5nX1R5cGUKLSAgICAgICAgICAgICAgIFB5VHJhY2VCYWNrX1R5cGUKLSAgICAgICAgICAgICAgIFB5VHVwbGVfVHlwZQotICAgICAgICAgICAgICAgUHlUeXBlX1R5cGUKLSAgICAgICAgICAgICAgIFB5X0RlYnVnRmxhZwotICAgICAgICAgICAgICAgUHlfRnJvemVuRmxhZwotICAgICAgICAgICAgICAgUHlfSW50ZXJhY3RpdmVGbGFnCi0gICAgICAgICAgICAgICBQeV9Ob1NpdGVGbGFnCi0gICAgICAgICAgICAgICBQeV9PcHRpbWl6ZUZsYWcKLSAgICAgICAgICAgICAgIFB5X1VzZUNsYXNzRXhjZXB0aW9uc0ZsYWcKLSAgICAgICAgICAgICAgIFB5X1ZlcmJvc2VGbGFnCi0gICAgICAgICAgICAgICBfUHlJbXBvcnRfRmlsZXRhYgotICAgICAgICAgICAgICAgX1B5SW1wb3J0X0luaXR0YWIKLSAgICAgICAgICAgICAgIF9QeVBhcnNlcl9HcmFtbWFyCi0gICAgICAgICAgICAgICBfUHlQYXJzZXJfVG9rZW5OYW1lcwotICAgICAgICAgICAgICAgX1B5X0VsbGlwc2lzT2JqZWN0Ci0gICAgICAgICAgICAgICBfUHlfTm9uZVN0cnVjdAotICAgICAgICAgICAgICAgX1B5X1BhY2thZ2VDb250ZXh0Ci0gICAgICAgICAgICAgICBfUHlfVHJ1ZVN0cnVjdAotICAgICAgICAgICAgICAgX1B5X1plcm9TdHJ1Y3QKLSAgICAgICAgICAgICAgIF9QeV9hYnN0cmFjdF9oYWNrCi0gICAgICAgICAgICAgICBfUHlfY2Fwc3VsZV9oYWNrCi0gICAgICAgICAgICAgICBfUHlfcmVfc3ludGF4Ci0gICAgICAgICAgICAgICBfUHlfcmVfc3ludGF4X3RhYmxlCi0KLSAgICAgICAgICAgICAgIDsgQ29kZQotICAgICAgICAgICAgICAgUHlBcmdfUGFyc2UKLSAgICAgICAgICAgICAgIFB5QXJnX1BhcnNlVHVwbGUKLSAgICAgICAgICAgICAgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwotICAgICAgICAgICAgICAgUHlBcmdfVmFQYXJzZQotICAgICAgICAgICAgICAgUHlDRnVuY3Rpb25fRmluaQotICAgICAgICAgICAgICAgUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgICAgICAgICAgICAgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi0gICAgICAgICAgICAgICBQeUNGdW5jdGlvbl9HZXRTZWxmCi0gICAgICAgICAgICAgICBQeUNGdW5jdGlvbl9OZXcKLSAgICAgICAgICAgICAgIFB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci0gICAgICAgICAgICAgICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICAgICAgICAgICAgICAgUHlDYXBzdWxlX0dldE5hbWUKLSAgICAgICAgICAgICAgIFB5Q2Fwc3VsZV9HZXRQb2ludGVyCi0gICAgICAgICAgICAgICBQeUNhcHN1bGVfSW1wb3J0Ci0gICAgICAgICAgICAgICBQeUNhcHN1bGVfSXNWYWxpZAotICAgICAgICAgICAgICAgUHlDYXBzdWxlX05ldwotICAgICAgICAgICAgICAgUHlDYXBzdWxlX1NldENvbnRleHQKLSAgICAgICAgICAgICAgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gICAgICAgICAgICAgICBQeUNhcHN1bGVfU2V0TmFtZQotICAgICAgICAgICAgICAgUHlDYXBzdWxlX1NldFBvaW50ZXIKLSAgICAgICAgICAgICAgIFB5Q09iamVjdF9Bc1ZvaWRQdHIKLSAgICAgICAgICAgICAgIFB5Q09iamVjdF9Gcm9tVm9pZFB0ckFuZERlc2MKLSAgICAgICAgICAgICAgIFB5Q09iamVjdF9Gcm9tVm9pZFB0cgotICAgICAgICAgICAgICAgUHlDT2JqZWN0X0dldERlc2MKLSAgICAgICAgICAgICAgIFB5Q09iamVjdF9JbXBvcnQKLSAgICAgICAgICAgICAgIFB5Q2FsbGFibGVfQ2hlY2sKLSAgICAgICAgICAgICAgIFB5Q2xhc3NfSXNTdWJjbGFzcwotICAgICAgICAgICAgICAgUHlDbGFzc19OZXcKLSAgICAgICAgICAgICAgIFB5Q29kZV9BZGRyMkxpbmUKLSAgICAgICAgICAgICAgIFB5Q29kZV9OZXcKLSAgICAgICAgICAgICAgIFB5Q29tcGxleF9Bc0NDb21wbGV4Ci0gICAgICAgICAgICAgICBQeUNvbXBsZXhfRnJvbUNDb21wbGV4Ci0gICAgICAgICAgICAgICBQeUNvbXBsZXhfRnJvbURvdWJsZXMKLSAgICAgICAgICAgICAgIFB5Q29tcGxleF9JbWFnQXNEb3VibGUKLSAgICAgICAgICAgICAgIFB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgICAgICAgICAgICAgIFB5RGljdF9DbGVhcgotICAgICAgICAgICAgICAgUHlEaWN0X0RlbEl0ZW0KLSAgICAgICAgICAgICAgIFB5RGljdF9EZWxJdGVtU3RyaW5nCi0gICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbQotICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgICAgICAgICAgICAgIFB5RGljdF9JdGVtcwotICAgICAgICAgICAgICAgUHlEaWN0X0tleXMKLSAgICAgICAgICAgICAgIFB5RGljdF9OZXcKLSAgICAgICAgICAgICAgIFB5RGljdF9OZXh0Ci0gICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbQotICAgICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcKLSAgICAgICAgICAgICAgIFB5RGljdF9TaXplCi0gICAgICAgICAgICAgICBQeURpY3RfVmFsdWVzCi0gICAgICAgICAgICAgICBQeUVycl9CYWRBcmd1bWVudAotICAgICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gICAgICAgICAgICAgICBQeUVycl9DaGVja1NpZ25hbHMKLSAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyCi0gICAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzCi0gICAgICAgICAgICAgICBQeUVycl9GZXRjaAotICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0Ci0gICAgICAgICAgICAgICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLSAgICAgICAgICAgICAgIFB5RXJyX05ld0V4Y2VwdGlvbgotICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkKLSAgICAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotICAgICAgICAgICAgICAgUHlFcnJfT2NjdXJyZWQKLSAgICAgICAgICAgICAgIFB5RXJyX1ByaW50Ci0gICAgICAgICAgICAgICBQeUVycl9QcmludEV4Ci0gICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlCi0gICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8KLSAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQotICAgICAgICAgICAgICAgUHlFcnJfU2V0SW50ZXJydXB0Ci0gICAgICAgICAgICAgICBQeUVycl9TZXROb25lCi0gICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QKLSAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZwotICAgICAgICAgICAgICAgUHlFdmFsX0FjcXVpcmVMb2NrCi0gICAgICAgICAgICAgICBQeUV2YWxfQWNxdWlyZVRocmVhZAotICAgICAgICAgICAgICAgUHlFdmFsX0NhbGxGdW5jdGlvbgotICAgICAgICAgICAgICAgUHlFdmFsX0NhbGxNZXRob2QKLSAgICAgICAgICAgICAgIFB5RXZhbF9DYWxsT2JqZWN0Ci0gICAgICAgICAgICAgICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICAgICAgICAgICAgICAgUHlFdmFsX0V2YWxDb2RlCi0gICAgICAgICAgICAgICBQeUV2YWxfR2V0QnVpbHRpbnMKLSAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGcmFtZQotICAgICAgICAgICAgICAgUHlFdmFsX0dldEdsb2JhbHMKLSAgICAgICAgICAgICAgIFB5RXZhbF9HZXRMb2NhbHMKLSAgICAgICAgICAgICAgIFB5RXZhbF9HZXRSZXN0cmljdGVkCi0gICAgICAgICAgICAgICBQeUV2YWxfSW5pdFRocmVhZHMKLSAgICAgICAgICAgICAgIFB5RXZhbF9SZWxlYXNlTG9jawotICAgICAgICAgICAgICAgUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgICAgICAgICAgICAgIFB5RXZhbF9SZXN0b3JlVGhyZWFkCi0gICAgICAgICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZAotICAgICAgICAgICAgICAgUHlGaWxlX0FzRmlsZQotICAgICAgICAgICAgICAgUHlGaWxlX0Zyb21GaWxlCi0gICAgICAgICAgICAgICBQeUZpbGVfRnJvbVN0cmluZwotICAgICAgICAgICAgICAgUHlGaWxlX0dldExpbmUKLSAgICAgICAgICAgICAgIFB5RmlsZV9OYW1lCi0gICAgICAgICAgICAgICBQeUZpbGVfU2V0QnVmU2l6ZQotICAgICAgICAgICAgICAgUHlGaWxlX1NvZnRTcGFjZQotICAgICAgICAgICAgICAgUHlGaWxlX1dyaXRlT2JqZWN0Ci0gICAgICAgICAgICAgICBQeUZpbGVfV3JpdGVTdHJpbmcKLSAgICAgICAgICAgICAgIFB5RmxvYXRfQXNEb3VibGUKLSAgICAgICAgICAgICAgIFB5RmxvYXRfQXNTdHJpbmcKLSAgICAgICAgICAgICAgIFB5RmxvYXRfRmluaQotICAgICAgICAgICAgICAgUHlGbG9hdF9Gcm9tRG91YmxlCi0gICAgICAgICAgICAgICBQeUZyYW1lX0Jsb2NrUG9wCi0gICAgICAgICAgICAgICBQeUZyYW1lX0Jsb2NrU2V0dXAKLSAgICAgICAgICAgICAgIFB5RnJhbWVfRmFzdFRvTG9jYWxzCi0gICAgICAgICAgICAgICBQeUZyYW1lX0ZpbmkKLSAgICAgICAgICAgICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0Ci0gICAgICAgICAgICAgICBQeUZyYW1lX05ldwotICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HZXRDb2RlCi0gICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dldERlZmF1bHRzCi0gICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dldEdsb2JhbHMKLSAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fTmV3Ci0gICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldERlZmF1bHRzCi0gICAgICAgICAgICAgICBQeUdyYW1tYXJfQWRkQWNjZWxlcmF0b3JzCi0gICAgICAgICAgICAgICBQeUdyYW1tYXJfRmluZERGQQotICAgICAgICAgICAgICAgUHlHcmFtbWFyX0xhYmVsUmVwcgotICAgICAgICAgICAgICAgUHlHcmFtbWFyX1JlbW92ZUFjY2VsZXJhdG9ycwotICAgICAgICAgICAgICAgUHlJbXBvcnRfQWRkTW9kdWxlCi0gICAgICAgICAgICAgICBQeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gICAgICAgICAgICAgICBQeUltcG9ydF9DbGVhbnVwCi0gICAgICAgICAgICAgICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICAgICAgICAgICAgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotICAgICAgICAgICAgICAgUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYgotICAgICAgICAgICAgICAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgICAgICAgICAgICAgIFB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgICAgICAgICAgICAgIFB5SW1wb3J0X0ltcG9ydAotICAgICAgICAgICAgICAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gICAgICAgICAgICAgICBQeUltcG9ydF9JbXBvcnRNb2R1bGUKLSAgICAgICAgICAgICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4Ci0gICAgICAgICAgICAgICBQeUltcG9ydF9SZWxvYWRNb2R1bGUKLSAgICAgICAgICAgICAgIFB5SW5zdGFuY2VfRG9CaW5PcAotICAgICAgICAgICAgICAgUHlJbnN0YW5jZV9OZXcKLSAgICAgICAgICAgICAgIFB5SW50X0FzTG9uZwotICAgICAgICAgICAgICAgUHlJbnRfRmluaQotICAgICAgICAgICAgICAgUHlJbnRfRnJvbUxvbmcKLSAgICAgICAgICAgICAgIFB5SW50X0dldE1heAotICAgICAgICAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi0gICAgICAgICAgICAgICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gICAgICAgICAgICAgICBQeUludGVycHJldGVyU3RhdGVfTmV3Ci0gICAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kCi0gICAgICAgICAgICAgICBQeUxpc3RfQXNUdXBsZQotICAgICAgICAgICAgICAgUHlMaXN0X0dldEl0ZW0KLSAgICAgICAgICAgICAgIFB5TGlzdF9HZXRTbGljZQotICAgICAgICAgICAgICAgUHlMaXN0X0luc2VydAotICAgICAgICAgICAgICAgUHlMaXN0X05ldwotICAgICAgICAgICAgICAgUHlMaXN0X1JldmVyc2UKLSAgICAgICAgICAgICAgIFB5TGlzdF9TZXRJdGVtCi0gICAgICAgICAgICAgICBQeUxpc3RfU2V0U2xpY2UKLSAgICAgICAgICAgICAgIFB5TGlzdF9TaXplCi0gICAgICAgICAgICAgICBQeUxpc3RfU29ydAotICAgICAgICAgICAgICAgUHlMb25nX0FzRG91YmxlCi0gICAgICAgICAgICAgICBQeUxvbmdfQXNMb25nCi07ICAgICAgICAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcKLSAgICAgICAgICAgICAgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotOyAgICAgICAgICAgICAgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgICAgICAgICAgICAgIFB5TG9uZ19Bc1ZvaWRQdHIKLSAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tRG91YmxlCi0gICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcKLTsgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nCi0gICAgICAgICAgICAgICBQeUxvbmdfRnJvbVN0cmluZwotICAgICAgICAgICAgICAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLTsgICAgICAgICAgICAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVm9pZFB0cgotICAgICAgICAgICAgICAgUHlNYXBwaW5nX0NoZWNrCi0gICAgICAgICAgICAgICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotICAgICAgICAgICAgICAgUHlNYXBwaW5nX0hhc0tleQotICAgICAgICAgICAgICAgUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICAgICAgICAgICAgICAgUHlNYXBwaW5nX0xlbmd0aAotICAgICAgICAgICAgICAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLSAgICAgICAgICAgICAgIFB5TWFyc2hhbF9Jbml0Ci0gICAgICAgICAgICAgICBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZQotICAgICAgICAgICAgICAgUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tRmlsZQotICAgICAgICAgICAgICAgUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nCi0gICAgICAgICAgICAgICBQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlCi0gICAgICAgICAgICAgICBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUKLSAgICAgICAgICAgICAgIFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nCi0gICAgICAgICAgICAgICBQeU1lbV9GcmVlCi0gICAgICAgICAgICAgICBQeU1lbV9NYWxsb2MKLSAgICAgICAgICAgICAgIFB5TWVtX1JlYWxsb2MKLSAgICAgICAgICAgICAgIFB5TWV0aG9kX0NsYXNzCi0gICAgICAgICAgICAgICBQeU1ldGhvZF9GaW5pCi0gICAgICAgICAgICAgICBQeU1ldGhvZF9GdW5jdGlvbgotICAgICAgICAgICAgICAgUHlNZXRob2RfTmV3Ci0gICAgICAgICAgICAgICBQeU1ldGhvZF9TZWxmCi0gICAgICAgICAgICAgICBQeU1vZHVsZV9HZXREaWN0Ci0gICAgICAgICAgICAgICBQeU1vZHVsZV9HZXROYW1lCi0gICAgICAgICAgICAgICBQeU1vZHVsZV9OZXcKLSAgICAgICAgICAgICAgIFB5Tm9kZV9BZGRDaGlsZAotICAgICAgICAgICAgICAgUHlOb2RlX0NvbXBpbGUKLSAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlCi07ICAgICAgICAgICAgICAgUHlOb2RlX0xpc3RUcmVlCi0gICAgICAgICAgICAgICBQeU5vZGVfTmV3Ci0gICAgICAgICAgICAgICBQeU51bWJlcl9BYnNvbHV0ZQotICAgICAgICAgICAgICAgUHlOdW1iZXJfQWRkCi0gICAgICAgICAgICAgICBQeU51bWJlcl9BbmQKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX0NoZWNrCi0gICAgICAgICAgICAgICBQeU51bWJlcl9Db2VyY2UKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX0NvZXJjZUV4Ci0gICAgICAgICAgICAgICBQeU51bWJlcl9EaXZpZGUKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX0Rpdm1vZAotICAgICAgICAgICAgICAgUHlOdW1iZXJfRmxvYXQKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX0ludAotICAgICAgICAgICAgICAgUHlOdW1iZXJfSW52ZXJ0Ci0gICAgICAgICAgICAgICBQeU51bWJlcl9Mb25nCi0gICAgICAgICAgICAgICBQeU51bWJlcl9Mc2hpZnQKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX011bHRpcGx5Ci0gICAgICAgICAgICAgICBQeU51bWJlcl9OZWdhdGl2ZQotICAgICAgICAgICAgICAgUHlOdW1iZXJfT3IKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX1Bvc2l0aXZlCi0gICAgICAgICAgICAgICBQeU51bWJlcl9Qb3dlcgotICAgICAgICAgICAgICAgUHlOdW1iZXJfUmVtYWluZGVyCi0gICAgICAgICAgICAgICBQeU51bWJlcl9Sc2hpZnQKLSAgICAgICAgICAgICAgIFB5TnVtYmVyX1N1YnRyYWN0Ci0gICAgICAgICAgICAgICBQeU51bWJlcl9Yb3IKLSAgICAgICAgICAgICAgIFB5T1NfQWZ0ZXJGb3JrCi0gICAgICAgICAgICAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzCi0gICAgICAgICAgICAgICBQeU9TX0luaXRJbnRlcnJ1cHRzCi0gICAgICAgICAgICAgICBQeU9TX0ludGVycnVwdE9jY3VycmVkCi0gICAgICAgICAgICAgICBQeU9TX1JlYWRsaW5lCi0gICAgICAgICAgICAgICBQeU9TX1N0ZGlvUmVhZGxpbmUKLSAgICAgICAgICAgICAgIFB5T1Nfc3RydG9sCi0gICAgICAgICAgICAgICBQeU9TX3N0cnRvdWwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbgotICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZAotICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE9iamVjdAotICAgICAgICAgICAgICAgUHlPYmplY3RfQ21wCi0gICAgICAgICAgICAgICBQeU9iamVjdF9Db21wYXJlCi0gICAgICAgICAgICAgICBQeU9iamVjdF9EZWxJdGVtCi0gICAgICAgICAgICAgICBQeU9iamVjdF9HZXRBdHRyCi0gICAgICAgICAgICAgICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nCi0gICAgICAgICAgICAgICBQeU9iamVjdF9HZXRJdGVtCi0gICAgICAgICAgICAgICBQeU9iamVjdF9IYXNBdHRyCi0gICAgICAgICAgICAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gICAgICAgICAgICAgICBQeU9iamVjdF9IYXNoCi0gICAgICAgICAgICAgICBQeU9iamVjdF9Jc1RydWUKLSAgICAgICAgICAgICAgIFB5T2JqZWN0X0xlbmd0aAotICAgICAgICAgICAgICAgUHlPYmplY3RfTm90Ci0gICAgICAgICAgICAgICBQeU9iamVjdF9QcmludAotICAgICAgICAgICAgICAgUHlPYmplY3RfUmVwcgotICAgICAgICAgICAgICAgUHlPYmplY3RfU2V0QXR0cgotICAgICAgICAgICAgICAgUHlPYmplY3RfU2V0QXR0clN0cmluZwotICAgICAgICAgICAgICAgUHlPYmplY3RfU2V0SXRlbQotICAgICAgICAgICAgICAgUHlPYmplY3RfU3RyCi0gICAgICAgICAgICAgICBQeU9iamVjdF9UeXBlCi0gICAgICAgICAgICAgICBQeVBhcnNlcl9BZGRUb2tlbgotICAgICAgICAgICAgICAgUHlQYXJzZXJfRGVsZXRlCi0gICAgICAgICAgICAgICBQeVBhcnNlcl9OZXcKLSAgICAgICAgICAgICAgIFB5UGFyc2VyX1BhcnNlRmlsZQotICAgICAgICAgICAgICAgUHlQYXJzZXJfUGFyc2VTdHJpbmcKLSAgICAgICAgICAgICAgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZQotICAgICAgICAgICAgICAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmcKLSAgICAgICAgICAgICAgIFB5UmFuZ2VfTmV3Ci0gICAgICAgICAgICAgICBQeVJ1bl9BbnlGaWxlCi0gICAgICAgICAgICAgICBQeVJ1bl9GaWxlCi0gICAgICAgICAgICAgICBQeVJ1bl9JbnRlcmFjdGl2ZUxvb3AKLSAgICAgICAgICAgICAgIFB5UnVuX0ludGVyYWN0aXZlT25lCi0gICAgICAgICAgICAgICBQeVJ1bl9TaW1wbGVGaWxlCi0gICAgICAgICAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcKLSAgICAgICAgICAgICAgIFB5UnVuX1N0cmluZwotICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9DaGVjawotICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9Db25jYXQKLSAgICAgICAgICAgICAgIFB5U2VxdWVuY2VfQ29udGFpbnMKLSAgICAgICAgICAgICAgIFB5U2VxdWVuY2VfQ291bnQKLSAgICAgICAgICAgICAgIFB5U2VxdWVuY2VfRGVsSXRlbQotICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9EZWxTbGljZQotICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9HZXRJdGVtCi0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX0dldFNsaWNlCi0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX0luCi0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX0luZGV4Ci0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX0xlbmd0aAotICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MaXN0Ci0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX1JlcGVhdAotICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9TZXRJdGVtCi0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX1NldFNsaWNlCi0gICAgICAgICAgICAgICBQeVNlcXVlbmNlX1R1cGxlCi0gICAgICAgICAgICAgICBQeVNsaWNlX0dldEluZGljZXMKLSAgICAgICAgICAgICAgIFB5U2xpY2VfTmV3Ci0gICAgICAgICAgICAgICBQeVN0cmluZ19Bc1N0cmluZwotICAgICAgICAgICAgICAgUHlTdHJpbmdfQ29uY2F0Ci0gICAgICAgICAgICAgICBQeVN0cmluZ19Db25jYXRBbmREZWwKLSAgICAgICAgICAgICAgIFB5U3RyaW5nX0ZpbmkKLSAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zvcm1hdAotICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZwotICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUKLSAgICAgICAgICAgICAgIFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcKLSAgICAgICAgICAgICAgIFB5U3RyaW5nX0ludGVybkluUGxhY2UKLSAgICAgICAgICAgICAgIFB5U3RyaW5nX1NpemUKLSAgICAgICAgICAgICAgIFB5U3lzX0dldEZpbGUKLSAgICAgICAgICAgICAgIFB5U3lzX0dldE9iamVjdAotICAgICAgICAgICAgICAgUHlTeXNfU2V0QXJndgotICAgICAgICAgICAgICAgUHlTeXNfU2V0T2JqZWN0Ci0gICAgICAgICAgICAgICBQeVN5c19TZXRQYXRoCi0gICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycgotICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRvdXQKLSAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGVfQ2xlYXIKLSAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlX0dldAotICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0Ci0gICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlX05ldwotICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwCi0gICAgICAgICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sKLSAgICAgICAgICAgICAgIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sKLSAgICAgICAgICAgICAgIFB5VGhyZWFkX2FsbG9jYXRlX3NlbWEKLSAgICAgICAgICAgICAgIFB5VGhyZWFkX2Rvd25fc2VtYQotICAgICAgICAgICAgICAgUHlUaHJlYWRfZXhpdF90aHJlYWQKLSAgICAgICAgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jawotICAgICAgICAgICAgICAgUHlUaHJlYWRfZnJlZV9zZW1hCi0gICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50Ci0gICAgICAgICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZAotICAgICAgICAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrCi0gICAgICAgICAgICAgICBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkCi0gICAgICAgICAgICAgICBQeVRocmVhZF91cF9zZW1hCi0gICAgICAgICAgICAgICBQeVRva2VuX09uZUNoYXIKLSAgICAgICAgICAgICAgIFB5VG9rZW5fVHdvQ2hhcnMKLSAgICAgICAgICAgICAgIFB5VG9rZW5pemVyX0ZyZWUKLSAgICAgICAgICAgICAgIFB5VG9rZW5pemVyX0Zyb21GaWxlCi0gICAgICAgICAgICAgICBQeVRva2VuaXplcl9Gcm9tU3RyaW5nCi0gICAgICAgICAgICAgICBQeVRva2VuaXplcl9HZXQKLSAgICAgICAgICAgICAgIFB5VHJhY2VCYWNrX0hlcmUKLSAgICAgICAgICAgICAgIFB5VHJhY2VCYWNrX1ByaW50Ci0gICAgICAgICAgICAgICBQeVR1cGxlX0ZpbmkKLSAgICAgICAgICAgICAgIFB5VHVwbGVfR2V0SXRlbQotICAgICAgICAgICAgICAgUHlUdXBsZV9HZXRTbGljZQotICAgICAgICAgICAgICAgUHlUdXBsZV9OZXcKLSAgICAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbQotICAgICAgICAgICAgICAgUHlUdXBsZV9TaXplCi0gICAgICAgICAgICAgICBQeV9BZGRQZW5kaW5nQ2FsbAotICAgICAgICAgICAgICAgUHlfQXRFeGl0Ci0gICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlCi0gICAgICAgICAgICAgICBQeV9Db21waWxlU3RyaW5nCi0gICAgICAgICAgICAgICBQeV9FbmRJbnRlcnByZXRlcgotICAgICAgICAgICAgICAgUHlfRXhpdAotICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcgotICAgICAgICAgICAgICAgUHlfRmRJc0ludGVyYWN0aXZlCi0gICAgICAgICAgICAgICBQeV9GaW5hbGl6ZQotICAgICAgICAgICAgICAgUHlfRmluZE1ldGhvZAotICAgICAgICAgICAgICAgUHlfRmluZE1ldGhvZEluQ2hhaW4KLSAgICAgICAgICAgICAgIFB5X0ZsdXNoTGluZQotICAgICAgICAgICAgICAgUHlfRnJlZQotICAgICAgICAgICAgICAgUHlfR2V0QXJnY0FyZ3YKLSAgICAgICAgICAgICAgIFB5X0dldEJ1aWxkSW5mbwotICAgICAgICAgICAgICAgUHlfR2V0Q29tcGlsZXIKLSAgICAgICAgICAgICAgIFB5X0dldENvcHlyaWdodAotICAgICAgICAgICAgICAgUHlfR2V0RXhlY1ByZWZpeAotICAgICAgICAgICAgICAgUHlfR2V0UGF0aAotICAgICAgICAgICAgICAgUHlfR2V0UGxhdGZvcm0KLSAgICAgICAgICAgICAgIFB5X0dldFByZWZpeAotICAgICAgICAgICAgICAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gICAgICAgICAgICAgICBQeV9HZXRQcm9ncmFtTmFtZQotICAgICAgICAgICAgICAgUHlfR2V0UHl0aG9uSG9tZQotICAgICAgICAgICAgICAgUHlfR2V0VmVyc2lvbgotICAgICAgICAgICAgICAgUHlfSW5pdE1vZHVsZTQKLSAgICAgICAgICAgICAgIFB5X0luaXRpYWxpemUKLSAgICAgICAgICAgICAgIFB5X0lzSW5pdGlhbGl6ZWQKLSAgICAgICAgICAgICAgIFB5X01haW4KLSAgICAgICAgICAgICAgIFB5X01ha2VQZW5kaW5nQ2FsbHMKLSAgICAgICAgICAgICAgIFB5X01hbGxvYwotICAgICAgICAgICAgICAgUHlfTmV3SW50ZXJwcmV0ZXIKLSAgICAgICAgICAgICAgIFB5X1JlYWxsb2MKLSAgICAgICAgICAgICAgIFB5X1JlcHJFbnRlcgotICAgICAgICAgICAgICAgUHlfUmVwckxlYXZlCi0gICAgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZQotICAgICAgICAgICAgICAgUHlfU2V0UHl0aG9uSG9tZQotICAgICAgICAgICAgICAgUHlfVmFCdWlsZFZhbHVlCi0gICAgICAgICAgICAgICBfUHlCdWlsdGluX0ZpbmlfMQotICAgICAgICAgICAgICAgX1B5QnVpbHRpbl9GaW5pXzIKLSAgICAgICAgICAgICAgIF9QeUJ1aWx0aW5fSW5pdF8xCi0gICAgICAgICAgICAgICBfUHlCdWlsdGluX0luaXRfMgotICAgICAgICAgICAgICAgX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb24KLSAgICAgICAgICAgICAgIF9QeUltcG9ydF9GaW5pCi0gICAgICAgICAgICAgICBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb24KLSAgICAgICAgICAgICAgIF9QeUltcG9ydF9Jbml0Ci0gICAgICAgICAgICAgICBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUKLSAgICAgICAgICAgICAgIF9QeUxvbmdfTmV3Ci0gICAgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIKLSAgICAgICAgICAgICAgIF9QeU9iamVjdF9OZXcKLSAgICAgICAgICAgICAgIF9QeU9iamVjdF9OZXdWYXIKLSAgICAgICAgICAgICAgIF9QeVN0cmluZ19SZXNpemUKLSAgICAgICAgICAgICAgIF9QeVN5c19Jbml0Ci0gICAgICAgICAgICAgICBfUHlUdXBsZV9SZXNpemUKLSAgICAgICAgICAgICAgIF9QeV9NRDVGaW5hbAotICAgICAgICAgICAgICAgX1B5X01ENUluaXQKLSAgICAgICAgICAgICAgIF9QeV9NRDVVcGRhdGUKLTsgICAgICAgICAgICAgICBfUHlfYWRkYml0Ci0gICAgICAgICAgICAgICBfUHlfY19kaWZmCi0gICAgICAgICAgICAgICBfUHlfY19uZWcKLSAgICAgICAgICAgICAgIF9QeV9jX3BvdwotICAgICAgICAgICAgICAgX1B5X2NfcHJvZAotICAgICAgICAgICAgICAgX1B5X2NfcXVvdAotICAgICAgICAgICAgICAgX1B5X2Nfc3VtCi07ICAgICAgICAgICAgICAgX1B5X2RlbGJpdHNldAotOyAgICAgICAgICAgICAgIF9QeV9tZXJnZWJpdHNldAotOyAgICAgICAgICAgICAgIF9QeV9tZXRhX2dyYW1tYXIKLTsgICAgICAgICAgICAgICBfUHlfbmV3Yml0c2V0Ci07ICAgICAgICAgICAgICAgX1B5X3NhbWViaXRzZXQKLSAgICAgICAgICAgICAgIFB5QnVmZmVyX1R5cGUKLSAgICAgICAgICAgICAgIFB5QnVmZmVyX0Zyb21PYmplY3QKLSAgICAgICAgICAgICAgIFB5QnVmZmVyX0Zyb21NZW1vcnkKLSAgICAgICAgICAgICAgIFB5QnVmZmVyX0Zyb21SZWFkV3JpdGVNZW1vcnkKLSAgICAgICAgICAgICAgIFB5QnVmZmVyX05ldwotCmRpZmYgLS1naXQgYS9QQy9vczJ2YWNwcC9yZWFkbWUudHh0IGIvUEMvb3MydmFjcHAvcmVhZG1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM1ODYwNC4uMDAwMDAwMAotLS0gYS9QQy9vczJ2YWNwcC9yZWFkbWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUlCTSBWaXN1YWxBZ2UgQy9DKysgZm9yIE9TLzIKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVG8gYnVpbGQgUHl0aG9uIGZvciBPUy8yLCBjaGFuZ2UgaW50byAuL29zMnZhY3BwIGFuZCBpc3N1ZSBhbiAnTk1BS0UnCi1jb21tYW5kLiAgVGhpcyB3aWxsIGJ1aWxkIGEgUFlUSE9OMTUuRExMIGNvbnRhaW5pbmcgdGhlIHNldCBvZiBQeXRob24KLW1vZHVsZXMgbGlzdGVkIGluIGNvbmZpZy5jIGFuZCBhIHNtYWxsIFBZVEhPTi5FWEUgdG8gc3RhcnQgdGhlCi1pbnRlcnByZXRlci4KLQotQnkgY2hhbmdpbmcgdGhlIEMgY29tcGlsZXIgZmxhZyAvR2QtIGluIHRoZSBtYWtlZmlsZSB0byAvR2QrLCB5b3UgY2FuCi1yZWR1Y2UgdGhlIHNpemUgb2YgdGhlc2UgYnkgY2F1c2luZyBQeXRob24gdG8gZHluYW1pY2FsbHkgbGluayB0byB0aGUKLUMgcnVudGltZSBETExzIGluc3RlYWQgb2YgaW5jbHVkaW5nIHRoZWlyIGJ1bGsgaW4geW91ciBiaW5hcmllcy4gCi1Ib3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgYW55IHN5c3RlbSBvbiB3aGljaCB5b3UgcnVuIFB5dGhvbiBtdXN0IGhhdmUKLXRoZSBWQUMrKyBjb21waWxlciBpbnN0YWxsZWQgaW4gb3JkZXIgdG8gaGF2ZSB0aG9zZSBETExzIGF2YWlsYWJsZS4KLQotRHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIHlvdSBtYXkgc2VlIGEgY291cGxlIG9mIGhhcm1sZXNzIHdhcm5pbmdzOgotCi0gIEZyb20gdGhlIEMgQ29tcGlsZXIsICJObyBmdW5jdGlvbiBwcm90b3R5cGUgZ2l2ZW4gZm9yIFhYWCIsIHdoaWNoCi0gIGNvbWVzIGZyb20gdGhlIHVzZSBvZiBLJlIgcGFyYW1ldGVycyB3aXRoaW4gUHl0aG9uIGZvciBwb3J0YWJpbGl0eS4KLQotICBGcm9tIHRoZSBJTElCIGxpYnJhcmlhbiwgIk1vZHVsZSBOb3QgRm91bmQgKFhYWCkiLCB3aGljaCBjb21lcwotICBmcm9tIGl0cyBhdHRlbXB0IHRvIHBlcmZvcm0gdGhlICgtKykgb3BlcmF0aW9uLCB3aGljaCByZW1vdmVzIGFuZAotICB0aGVuIGFkZHMgYSAuT0JKIHRvIHRoZSBsaWJyYXJ5LiAgVGhlIGZpcnN0IHRpbWUgYSBidWlsZCBpcyBkb25lLAotICBpdCBvYnZpb3VzbHkgY2Fubm90IHJlbW92ZSB3aGF0IGlzIG5vdCB5ZXQgYnVpbHQuCi0KLVRoaXMgYnVpbGQgaW5jbHVkZXMgc3VwcG9ydCBmb3IgbW9zdCBQeXRob24gZnVuY3Rpb25hbGl0eSBhcyB3ZWxsIGFzCi1UQ1AvSVAgc29ja2V0cy4gIEl0IG9taXRzIHRoZSBQb3NpeCBhYmlsaXR5IHRvICdmb3JrJyBhIHByb2Nlc3MgYnV0Ci1zdXBwb3J0cyB0aHJlYWRzIHVzaW5nIE9TLzIgbmF0aXZlIGNhcGFiaWxpdGllcy4gIEkgaGF2ZSB0cmllZCB0bwotc3VwcG9ydCBldmVyeXRoaW5nIHBvc3NpYmxlIGJ1dCBoZXJlIGFyZSBhIGZldyB1c2FnZSBub3Rlcy4KLQotCi0tLSBvcy5wb3BlbigpIFVzYWdlIFdhcm5pbmdzCi0KLVdpdGggcmVzcGVjdCB0byBteSBpbXBsZW1lbnRhdGlvbiBvZiBwb3BlbigpIHVuZGVyIE9TLzI6Ci0KLSAgICBpbXBvcnQgb3MKLQotICAgIGZkID0gb3MucG9wZW4oInBremlwLmV4ZSAtQCBqdW5rLnppcCIsICd3YicpCi0gICAgZmQud3JpdGUoImZpbGUxLnR4dFxuIikKLSAgICBmZC53cml0ZSgiZmlsZTIudHh0XG4iKQotICAgIGZkLndyaXRlKCJmaWxlMy50eHRcbiIpCi0gICAgZmQud3JpdGUoIlx4MWEiKSAgIyBTaG91bGQgTm90IEJlIE5lY2Vzc2FyeSBCdXQgSXMKLSAgICBmZC5jbG9zZSgpCi0KLVRoZXJlIGlzIGEgYnVnLCBlaXRoZXIgaW4gdGhlIFZBQysrIGNvbXBpbGVyIG9yIE9TLzIgaXRzZWxmLCB3aGVyZSB0aGUKLXNpbXBsZSBjbG9zdXJlIG9mIHRoZSB3cml0ZS1zaWRlIG9mIGEgcGlwZSAtdG8tIGEgcHJvY2VzcyBkb2VzIG5vdAotc2VuZCBhbiBFT0YgdG8gdGhhdCBwcm9jZXNzLiAgSSBmaW5kIEkgbXVzdCBleHBsaWNpdGx5IHdyaXRlIGEKLWNvbnRyb2wtWiAoRU9GKSBiZWZvcmUgY2xvc2luZyB0aGUgcGlwZS4gIFRoaXMgaXMgbm90IGEgcHJvYmxlbSB3aGVuCi11c2luZyBwb3BlbigpIGluIHJlYWQgbW9kZS4KLQotT25lIG90aGVyIHNsaWdodCBkaWZmZXJlbmNlIHdpdGggbXkgcG9wZW4oKSBpcyB0aGF0IEkgcmV0dXJuIE5vbmUKLWZyb20gdGhlIGNsb3NlKCksIGluc3RlYWQgb2YgdGhlIFVuaXggY29udmVudGlvbiBvZiB0aGUgcmV0dXJuIGNvZGUKLW9mIHRoZSBzcGF3bmVkIHByb2dyYW0uICBJIGNvdWxkIGZpbmQgbm8gZWFzeSB3YXkgdG8gZG8gdGhpcyB1bmRlcgotT1MvMi4KLQotCi0tLSBCRUdJTkxJQlBBVEgvRU5ETElCUEFUSAotCi1XaXRoIHJlc3BlY3QgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLCB0aGlzIE9TLzIgcG9ydCBzdXBwb3J0cyB0aGUKLXNwZWNpYWwtdG8tT1MvMiBtYWdpYyBuYW1lcyBvZiAnQkVHSU5MSUJQQVRIJyBhbmQgJ0VORExJQlBBVEgnIHRvCi1jb250cm9sIHdoZXJlIHRvIGxvYWQgY29udmVudGlvbmFsIERMTHMgZnJvbS4gIFRob3NlIG5hbWVzIGFyZQotaW50ZXJjZXB0ZWQgYW5kIGNvbnZlcnRlZCB0byBjYWxscyBvbiB0aGUgT1MvMiBrZXJuZWwgQVBJcyBhbmQKLWFyZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2Vzc2VzLCB3aGV0aGVyIFB5dGhvbi1iYXNlZCBvciBub3QuCi0KLUEgZmV3IG5ldyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgb3MgbW9kdWxlOgotCi0gICAgb3MubWVtaW5zdGFsbGVkICAjIENvdW50IG9mIEJ5dGVzIG9mIFJBTSBJbnN0YWxsZWQgb24gTWFjaGluZQotICAgIG9zLm1lbWtlcm5lbCAgICAgIyBDb3VudCBvZiBCeXRlcyBvZiBSQU0gUmVzZXJ2ZWQgKE5vbi1Td2FwcGFibGUpCi0gICAgb3MubWVtdmlydHVhbCAgICAjIENvdW50IG9mIEJ5dGVzIG9mIFZpcnR1YWwgUkFNIFBvc3NpYmxlCi0gICAgb3MudGltZXNsaWNlICAgICAjIER1cmF0aW9uIG9mIFNjaGVkdWxlciBUaW1lc2xpY2UsIGluIE1pbGxpc2Vjb25kcwotICAgIG9zLm1heHBhdGhsZW4gICAgIyBNYXhpbXVtIExlbmd0aCBvZiBhIFBhdGggU3BlY2lmaWNhdGlvbiwgaW4gY2hhcnMKLSAgICBvcy5tYXhuYW1lbGVuICAgICMgTWF4aW11bSBMZW5ndGggb2YgYSBTaW5nbGUgRGlyL0ZpbGUgTmFtZSwgaW4gY2hhcnMKLSAgICBvcy52ZXJzaW9uICAgICAgICMgVmVyc2lvbiBvZiBPUy8yIEJlaW5nIFJ1biBlLmcuICI0LjAwIgotICAgIG9zLnJldmlzaW9uICAgICAgIyBSZXZpc2lvbiBvZiBPUy8yIEJlaW5nIFJ1biAodXN1YWxseSB6ZXJvKQotICAgIG9zLmJvb3Rkcml2ZSAgICAgIyBEcml2ZSB0aGF0IFN5c3RlbSBCb290ZWQgRnJvbSBlLmcuICJDOiIKLSAgICAgICAgICAgICAgICAgICAgICMgKHVzZWZ1bCB0byBmaW5kIHRoZSBDT05GSUcuU1lTIHVzZWQgdG8gYm9vdCB3aXRoKQotCi0KLS0tIFVzaW5nIFB5dGhvbiBhcyB0aGUgRGVmYXVsdCBPUy8yIEJhdGNoIExhbmd1YWdlCi0KLU5vdGUgdGhhdCBPUy8yIHN1cHBvcnRzIHRoZSBVbml4IHRlY2huaXF1ZSBvZiBwdXR0aW5nIHRoZSBzcGVjaWFsCi1jb21tZW50IGxpbmUgYXQgdGhlIHRpbWUgb2Ygc2NyaXB0cyBlLmcuICIjIS91c3IvYmluL3B5dGhvbiIgaW4KLWEgZGlmZmVyZW50IHN5bnRhY3RpYyBmb3JtLiAgVG8gZG8gdGhpcywgcHV0IHlvdXIgc2NyaXB0IGludG8gYSBmaWxlCi13aXRoIGEgLkNNRCBleHRlbnNpb24gYW5kIGFkZGVkICdleHRwcm9jJyB0byB0aGUgdG9wIGFzIGZvbGxvd3M6Ci0KLSAgICBleHRwcm9jIEM6XFB5dGhvblxQeXRob24uZXhlIC14Ci0gICAgaW1wb3J0IG9zCi0gICAgcHJpbnQgIkhlbGxvIGZyb20gUHl0aG9uIgotCi1UaGUgJy14JyBvcHRpb24gdGVsbHMgUHl0aG9uIHRvIHNraXAgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGZpbGUKLXdoaWxlIHByb2Nlc3NpbmcgdGhlIHJlc3QgYXMgbm9ybWFsIFB5dGhvbiBzb3VyY2UuCi0KLQotLS0gU3VnZ2VzdGVkIEVudmlyb25tZW50IFZhcmlhYmxlIFNldHVwCi0KLVdpdGggcmVzcGVjdCB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBQeXRob24sIEkgdXNlIHRoZQotZm9sbG93aW5nIHNldHVwOgotCi0gICAgU2V0IFBZVEhPTkhPTUU9RTpcVGF1XFByb2plY3RzXFB5dGhvbjtEOlxETExzCi0gICAgU2V0IFBZVEhPTlBBVEg9LjtFOlxUYXVcUHJvamVjdHNcUHl0aG9uXExpYjsgXAotICAgICAgICAgICAgICAgICAgICAgRTpcVGF1XFByb2plY3RzXFB5dGhvblxMaWJccGxhdC13aW4KLQotVGhlIEVYRUNfUFJFRklYIChvcHRpb25hbCBzZWNvbmQgcGF0aHNwZWMgb24gUFlUSE9OSE9NRSkgaXMgd2hlcmUKLXlvdSBwdXQgYW55IFB5dGhvbiBleHRlbnNpb24gRExMcyB5b3UgbWF5IGNyZWF0ZS9vYnRhaW4uICBUaGVyZQotYXJlIG5vbmUgcHJvdmlkZWQgd2l0aCB0aGlzIHJlbGVhc2UuCi0KLQotLS0gQ29udGFjdCBJbmZvCi0KLUplZmYgUnVzaCBpcyBubyBsb25nZXIgc3VwcG9ydGluZyB0aGUgVkFDUFAgcG9ydCA6LSgKLQotSSBkb24ndCBoYXZlIHRoZSBWQUNQUCBjb21waWxlciwgc28gY2FuJ3QgcmVsaWFibHkgbWFpbnRhaW4gdGhpcyBwb3J0LiAKLQotQW55b25lIHdpdGggVkFDUFAgd2hvIGNhbiBjb250cmlidXRlIHBhdGNoZXMgdG8ga2VlcCB0aGlzIHBvcnQgYnVpbGRhYmxlCi1zaG91bGQgdXBsb2FkIHRoZW0gdG8gdGhlIFB5dGhvbiBQYXRjaCBNYW5hZ2VyIGF0IFNvdXJjZWZvcmdlIGFuZCAKLWFzc2lnbiB0aGVtIHRvIG1lIGZvciByZXZpZXcvY2hlY2tpbi4KLQotQW5kcmV3IE1hY0ludHlyZQotYWltYWNpbnR5cmUgYXQgdXNlcnMuc291cmNlZm9yZ2UubmV0Ci1BdWd1c3QgMTgsIDIwMDIuCmRpZmYgLS1naXQgYS9QQy9weWNvbmZpZy5oIGIvUEMvcHljb25maWcuaAppbmRleCBkNmRlNWYwLi4zNjVkZGJiIDEwMDY0NAotLS0gYS9QQy9weWNvbmZpZy5oCisrKyBiL1BDL3B5Y29uZmlnLmgKQEAgLTE1NiwxNSArMTU2LDkgQEAKICNlbmRpZiAvKiBNU19XSU42NCAqLwogCiAvKiBzZXQgdGhlIHZlcnNpb24gbWFjcm9zIGZvciB0aGUgd2luZG93cyBoZWFkZXJzICovCi0jaWZkZWYgTVNfV0lOWDY0Ci0vKiA2NCBiaXQgb25seSBydW5zIG9uIFhQIG9yIGdyZWF0ZXIgKi8KKy8qIFB5dGhvbiAzLjQrIHJlcXVpcmVzIFdpbmRvd3MgWFAgb3IgZ3JlYXRlciAqLwogI2RlZmluZSBQeV9XSU5WRVIgMHgwNTAxIC8qIF9XSU4zMl9XSU5OVF9XSU5YUCAqLwogI2RlZmluZSBQeV9OVERESSBOVERESV9XSU5YUAotI2Vsc2UKLS8qIFB5dGhvbiAyLjYrIHJlcXVpcmVzIFdpbmRvd3MgMjAwMCBvciBncmVhdGVyICovCi0jZGVmaW5lIFB5X1dJTlZFUiAweDA1MDAgLyogX1dJTjMyX1dJTk5UX1dJTjJLICovCi0jZGVmaW5lIFB5X05URERJIE5URERJX1dJTjJLU1A0Ci0jZW5kaWYKIAogLyogV2Ugb25seSBzZXQgdGhlc2UgdmFsdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIC0gd2UgZG9uJ3Qgd2FudCB0byBmb3JjZQogICAgdGhlc2UgdmFsdWVzIG9uIGV4dGVuc2lvbnMsIGFzIHRoYXQgd2lsbCBhZmZlY3QgdGhlIHByb3RvdHlwZXMgYW5kCkBAIC0xOTksOCArMTkzLDEwIEBACiAjZGVmaW5lIEhBVkVfU1NJWkVfVCAxCiAKICNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKLSNpZmRlZiBfTV9JWDg2CisjaWYgZGVmaW5lZChfTV9JWDg2KQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiMzIgYml0IChJbnRlbCkiKQorI2VsaWYgZGVmaW5lZChfTV9BUk0pCisjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCIzMiBiaXQgKEFSTSkiKQogI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjMyIGJpdCAoVW5rbm93bikiKQogI2VuZGlmCkBAIC0zMjQsMTEgKzMyMCwxMSBAQAogCQkJdGhlaXIgTWFrZWZpbGUgKG90aGVyIGNvbXBpbGVycyBhcmUgZ2VuZXJhbGx5CiAJCQl0YWtlbiBjYXJlIG9mIGJ5IGRpc3R1dGlscy4pICovCiAjCQkJaWYgZGVmaW5lZChfREVCVUcpCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzNfZC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM0X2QubGliIikKICMJCQllbGlmIGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMy5saWIiKQogIwkJCWVsc2UKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zMy5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM0LmxpYiIpCiAjCQkJZW5kaWYgLyogX0RFQlVHICovCiAjCQllbmRpZiAvKiBfTVNDX1ZFUiAqLwogIwllbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCkBAIC03MjcsNiArNzIzLDkgQEAKIC8qIFRoZSBzaXplIG9mIGB3Y2hhcl90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfV0NIQVJfVCAyCiAKKy8qIFRoZSBzaXplIG9mIGBwaWRfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX1BJRF9UIFNJWkVPRl9JTlQKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBkbCBsaWJyYXJ5ICgtbGRsKS4gICovCiAvKiAjdW5kZWYgSEFWRV9MSUJETCAqLwogCmRpZmYgLS1naXQgYS9QQy9weXRob24ubWsgYi9QQy9weXRob24ubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjUxMDYuLjAwMDAwMDAKLS0tIGEvUEMvcHl0aG9uLm1rCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1wcm9qZWN0IDogbjpccHl0aG9uXHB5dGhvbi0xLjUuMVxwY1x3YXRfb3MyXHB5dGhfb3MyLmV4ZSBuOlxweXRob25ccHl0aG9uLTEuJg0KLTUuMVxwY1x3YXRfZG9zXHB5dGhfZG9zLmV4ZSAuU1lNQk9MSUMNCi0NCi0haW5jbHVkZSBuOlxweXRob25ccHl0aG9uLTEuNS4xXHBjXHdhdF9vczJccHl0aF9vczIubWsxDQotIWluY2x1ZGUgbjpccHl0aG9uXHB5dGhvbi0xLjUuMVxwY1x3YXRfZG9zXHB5dGhfZG9zLm1rMQ0KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMuZGVmIGIvUEMvcHl0aG9uMy5kZWYKaW5kZXggZDcyNjUyNS4uMGNmMGQ5NCAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5kZWYKKysrIGIvUEMvcHl0aG9uMy5kZWYKQEAgLTEsNjk5ICsxLDcwMCBAQAotOyBXaGVuIGNoYW5naW5nIHRoaXMgZmlsZSwgcnVuIHB5dGhvbjMzZ2VuLnB5Cis7IFdoZW4gY2hhbmdpbmcgdGhpcyBmaWxlLCBydW4gcHl0aG9uMzRnZW4ucHkKIExJQlJBUlkJInB5dGhvbjMiCiBFWFBPUlRTCi0gIFB5QXJnX1BhcnNlPXB5dGhvbjMzLlB5QXJnX1BhcnNlCi0gIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzMuUHlBcmdfUGFyc2VUdXBsZQotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzMuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjMzLlB5QXJnX1VucGFja1R1cGxlCi0gIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzMuUHlBcmdfVmFQYXJzZQotICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zMy5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzMuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCi0gIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjMzLlB5QmFzZU9iamVjdF9UeXBlIERBVEEKLSAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjMzLlB5Qm9vbF9Gcm9tTG9uZwotICBQeUJvb2xfVHlwZT1weXRob24zMy5QeUJvb2xfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjMzLlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzMuUHlCeXRlQXJyYXlfQXNTdHJpbmcKLSAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0NvbmNhdAotICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKLSAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzMuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X1Jlc2l6ZQotICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X1NpemUKLSAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zMy5QeUJ5dGVBcnJheV9UeXBlIERBVEEKLSAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zMy5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zMy5QeUJ5dGVzX0FzU3RyaW5nCi0gIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjMzLlB5Qnl0ZXNfQ29uY2F0Ci0gIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjMzLlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCi0gIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjMzLlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCi0gIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zMy5QeUJ5dGVzX0Zyb21Gb3JtYXQKLSAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zMy5QeUJ5dGVzX0Zyb21Gb3JtYXRWCi0gIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zMy5QeUJ5dGVzX0Zyb21PYmplY3QKLSAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbVN0cmluZwotICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19SZXByPXB5dGhvbjMzLlB5Qnl0ZXNfUmVwcgotICBQeUJ5dGVzX1NpemU9cHl0aG9uMzMuUHlCeXRlc19TaXplCi0gIFB5Qnl0ZXNfVHlwZT1weXRob24zMy5QeUJ5dGVzX1R5cGUgREFUQQotICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0NhbGwKLSAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zMy5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0Ci0gIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0dldEZsYWdzCi0gIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi0gIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzMuUHlDRnVuY3Rpb25fR2V0U2VsZgotICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zMy5QeUNGdW5jdGlvbl9OZXdFeAotICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQotICBQeUNhbGxJdGVyX05ldz1weXRob24zMy5QeUNhbGxJdGVyX05ldwotICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzMuUHlDYWxsSXRlcl9UeXBlIERBVEEKLSAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zMy5QeUNhbGxhYmxlX0NoZWNrCi0gIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXROYW1lCi0gIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjMzLlB5Q2Fwc3VsZV9HZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzMuUHlDYXBzdWxlX0ltcG9ydAotICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zMy5QeUNhcHN1bGVfSXNWYWxpZAotICBQeUNhcHN1bGVfTmV3PXB5dGhvbjMzLlB5Q2Fwc3VsZV9OZXcKLSAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzMuUHlDYXBzdWxlX1NldENvbnRleHQKLSAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzMuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzMuUHlDYXBzdWxlX1NldE5hbWUKLSAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzMuUHlDYXBzdWxlX1NldFBvaW50ZXIKLSAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzMuUHlDYXBzdWxlX1R5cGUgREFUQQotICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zMy5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zMy5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzMuUHlDb2RlY19EZWNvZGUKLSAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfRGVjb2RlcgotICBQeUNvZGVjX0VuY29kZT1weXRob24zMy5QeUNvZGVjX0VuY29kZQotICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzMuUHlDb2RlY19FbmNvZGVyCi0gIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfSWdub3JlRXJyb3JzCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCi0gIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zMy5QeUNvZGVjX0tub3duRW5jb2RpbmcKLSAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zMy5QeUNvZGVjX0xvb2t1cEVycm9yCi0gIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzMuUHlDb2RlY19SZWdpc3RlcgotICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzMuUHlDb2RlY19SZWdpc3RlckVycm9yCi0gIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zMy5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzMuUHlDb2RlY19TdHJlYW1SZWFkZXIKLSAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzMuUHlDb2RlY19TdHJlYW1Xcml0ZXIKLSAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19TdHJpY3RFcnJvcnMKLSAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zMy5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCi0gIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zMy5QeUNvbXBsZXhfRnJvbURvdWJsZXMKLSAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zMy5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi0gIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzMuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQotICBQeUNvbXBsZXhfVHlwZT1weXRob24zMy5QeUNvbXBsZXhfVHlwZSBEQVRBCi0gIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzMuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotICBQeURlc2NyX05ld0dldFNldD1weXRob24zMy5QeURlc2NyX05ld0dldFNldAotICBQeURlc2NyX05ld01lbWJlcj1weXRob24zMy5QeURlc2NyX05ld01lbWJlcgotICBQeURlc2NyX05ld01ldGhvZD1weXRob24zMy5QeURlc2NyX05ld01ldGhvZAotICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZW1zX1R5cGUgREFUQQotICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQotICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzMuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzMuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQotICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzMuUHlEaWN0S2V5c19UeXBlIERBVEEKLSAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjMzLlB5RGljdFByb3h5X05ldwotICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjMzLlB5RGljdFByb3h5X1R5cGUgREFUQQotICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zMy5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5RGljdF9DbGVhcj1weXRob24zMy5QeURpY3RfQ2xlYXIKLSAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjMzLlB5RGljdF9Db250YWlucwotICBQeURpY3RfQ29weT1weXRob24zMy5QeURpY3RfQ29weQotICBQeURpY3RfRGVsSXRlbT1weXRob24zMy5QeURpY3RfRGVsSXRlbQotICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zMy5QeURpY3RfRGVsSXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbT1weXRob24zMy5QeURpY3RfR2V0SXRlbQotICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zMy5QeURpY3RfR2V0SXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zMy5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotICBQeURpY3RfSXRlbXM9cHl0aG9uMzMuUHlEaWN0X0l0ZW1zCi0gIFB5RGljdF9LZXlzPXB5dGhvbjMzLlB5RGljdF9LZXlzCi0gIFB5RGljdF9NZXJnZT1weXRob24zMy5QeURpY3RfTWVyZ2UKLSAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzMuUHlEaWN0X01lcmdlRnJvbVNlcTIKLSAgUHlEaWN0X05ldz1weXRob24zMy5QeURpY3RfTmV3Ci0gIFB5RGljdF9OZXh0PXB5dGhvbjMzLlB5RGljdF9OZXh0Ci0gIFB5RGljdF9TZXRJdGVtPXB5dGhvbjMzLlB5RGljdF9TZXRJdGVtCi0gIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5RGljdF9TZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9TaXplPXB5dGhvbjMzLlB5RGljdF9TaXplCi0gIFB5RGljdF9UeXBlPXB5dGhvbjMzLlB5RGljdF9UeXBlIERBVEEKLSAgUHlEaWN0X1VwZGF0ZT1weXRob24zMy5QeURpY3RfVXBkYXRlCi0gIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzMuUHlEaWN0X1ZhbHVlcwotICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzMuUHlFbGxpcHNpc19UeXBlIERBVEEKLSAgUHlFbnVtX1R5cGU9cHl0aG9uMzMuUHlFbnVtX1R5cGUgREFUQQotICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zMy5QeUVycl9CYWRBcmd1bWVudAotICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzMuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zMy5QeUVycl9DaGVja1NpZ25hbHMKLSAgUHlFcnJfQ2xlYXI9cHl0aG9uMzMuUHlFcnJfQ2xlYXIKLSAgUHlFcnJfRGlzcGxheT1weXRob24zMy5QeUVycl9EaXNwbGF5Ci0gIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzMuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9GZXRjaD1weXRob24zMy5QeUVycl9GZXRjaAotICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzMuUHlFcnJfRm9ybWF0Ci0gIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zMy5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjMzLlB5RXJyX05ld0V4Y2VwdGlvbgotICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjMzLlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKLSAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzMuUHlFcnJfTm9NZW1vcnkKLSAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjMzLlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotICBQeUVycl9PY2N1cnJlZD1weXRob24zMy5QeUVycl9PY2N1cnJlZAotICBQeUVycl9QcmludD1weXRob24zMy5QeUVycl9QcmludAotICBQeUVycl9QcmludEV4PXB5dGhvbjMzLlB5RXJyX1ByaW50RXgKLSAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzMuUHlFcnJfUHJvZ3JhbVRleHQKLSAgUHlFcnJfUmVzdG9yZT1weXRob24zMy5QeUVycl9SZXN0b3JlCi0gIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zMy5QeUVycl9TZXRGcm9tRXJybm8KLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjMzLlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzMuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0Ci0gIFB5RXJyX1NldEludGVycnVwdD1weXRob24zMy5QeUVycl9TZXRJbnRlcnJ1cHQKLSAgUHlFcnJfU2V0Tm9uZT1weXRob24zMy5QeUVycl9TZXROb25lCi0gIFB5RXJyX1NldE9iamVjdD1weXRob24zMy5QeUVycl9TZXRPYmplY3QKLSAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjMzLlB5RXJyX1NldFN0cmluZwotICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zMy5QeUVycl9TeW50YXhMb2NhdGlvbgotICBQeUVycl9XYXJuRXg9cHl0aG9uMzMuUHlFcnJfV2FybkV4Ci0gIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zMy5QeUVycl9XYXJuRXhwbGljaXQKLSAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zMy5QeUVycl9XYXJuRm9ybWF0Ci0gIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zMy5QeUVycl9Xcml0ZVVucmFpc2FibGUKLSAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjMzLlB5RXZhbF9BY3F1aXJlTG9jawotICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zMy5QeUV2YWxfQWNxdWlyZVRocmVhZAotICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjMzLlB5RXZhbF9DYWxsRnVuY3Rpb24KLSAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzMuUHlFdmFsX0NhbGxNZXRob2QKLSAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzMuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKLSAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjMzLlB5RXZhbF9FdmFsQ29kZQotICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zMy5QeUV2YWxfRXZhbENvZGVFeAotICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjMzLlB5RXZhbF9FdmFsRnJhbWUKLSAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjMzLlB5RXZhbF9FdmFsRnJhbWVFeAotICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzMuUHlFdmFsX0dldEJ1aWx0aW5zCi0gIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzMuUHlFdmFsX0dldENhbGxTdGF0cwotICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzMuUHlFdmFsX0dldEZyYW1lCi0gIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zMy5QeUV2YWxfR2V0RnVuY0Rlc2MKLSAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjMzLlB5RXZhbF9HZXRGdW5jTmFtZQotICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zMy5QeUV2YWxfR2V0R2xvYmFscwotICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjMzLlB5RXZhbF9HZXRMb2NhbHMKLSAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjMzLlB5RXZhbF9Jbml0VGhyZWFkcwotICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zMy5QeUV2YWxfUmVJbml0VGhyZWFkcwotICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzMuUHlFdmFsX1JlbGVhc2VMb2NrCi0gIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9SZWxlYXNlVGhyZWFkCi0gIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9SZXN0b3JlVGhyZWFkCi0gIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9TYXZlVGhyZWFkCi0gIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzMuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAotICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzMuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKLSAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzMuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQotICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zMy5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCi0gIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzMuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjMzLlB5RXhjX0J1ZmZlckVycm9yIERBVEEKLSAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCi0gIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zMy5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19FT0ZFcnJvcj1weXRob24zMy5QeUV4Y19FT0ZFcnJvciBEQVRBCi0gIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzMuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCi0gIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zMy5QeUV4Y19FeGNlcHRpb24gREFUQQotICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzMuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKLSAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zMy5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKLSAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zMy5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKLSAgUHlFeGNfSU9FcnJvcj1weXRob24zMy5QeUV4Y19JT0Vycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzMuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQotICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjMzLlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQotICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjMzLlB5RXhjX0luZGV4RXJyb3IgREFUQQotICBQeUV4Y19LZXlFcnJvcj1weXRob24zMy5QeUV4Y19LZXlFcnJvciBEQVRBCi0gIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjMzLlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKLSAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzMuUHlFeGNfTG9va3VwRXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zMy5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zMy5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQotICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzMuUHlFeGNfTmFtZUVycm9yIERBVEEKLSAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zMy5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKLSAgUHlFeGNfT1NFcnJvcj1weXRob24zMy5QeUV4Y19PU0Vycm9yIERBVEEKLSAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zMy5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKLSAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zMy5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjMzLlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjMzLlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjMzLlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zMy5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKLSAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzMuUHlFeGNfU3ludGF4RXJyb3IgREFUQQotICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQotICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zMy5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCi0gIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzMuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCi0gIFB5RXhjX1RhYkVycm9yPXB5dGhvbjMzLlB5RXhjX1RhYkVycm9yIERBVEEKLSAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjMzLlB5RXhjX1R5cGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjMzLlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKLSAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzMuUHlFeGNfVXNlcldhcm5pbmcgREFUQQotICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjMzLlB5RXhjX1ZhbHVlRXJyb3IgREFUQQotICBQeUV4Y19XYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1dhcm5pbmcgREFUQQotICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zMy5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCi0gIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjMzLlB5RXhjZXB0aW9uX0dldENhdXNlCi0gIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzMuUHlFeGNlcHRpb25fR2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzMuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCi0gIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjMzLlB5RXhjZXB0aW9uX1NldENhdXNlCi0gIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzMuUHlFeGNlcHRpb25fU2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzMuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCi0gIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzMuUHlGaWxlX0Zyb21GZAotICBQeUZpbGVfR2V0TGluZT1weXRob24zMy5QeUZpbGVfR2V0TGluZQotICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzMuUHlGaWxlX1dyaXRlT2JqZWN0Ci0gIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zMy5QeUZpbGVfV3JpdGVTdHJpbmcKLSAgUHlGaWx0ZXJfVHlwZT1weXRob24zMy5QeUZpbHRlcl9UeXBlIERBVEEKLSAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zMy5QeUZsb2F0X0FzRG91YmxlCi0gIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zMy5QeUZsb2F0X0Zyb21Eb3VibGUKLSAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5RmxvYXRfRnJvbVN0cmluZwotICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzMuUHlGbG9hdF9HZXRJbmZvCi0gIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjMzLlB5RmxvYXRfR2V0TWF4Ci0gIFB5RmxvYXRfR2V0TWluPXB5dGhvbjMzLlB5RmxvYXRfR2V0TWluCi0gIFB5RmxvYXRfVHlwZT1weXRob24zMy5QeUZsb2F0X1R5cGUgREFUQQotICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzMuUHlGcm96ZW5TZXRfTmV3Ci0gIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzMuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCi0gIFB5R0NfQ29sbGVjdD1weXRob24zMy5QeUdDX0NvbGxlY3QKLSAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzMuUHlHSUxTdGF0ZV9FbnN1cmUKLSAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzMuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKLSAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjMzLlB5R0lMU3RhdGVfUmVsZWFzZQotICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzMuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKLSAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0FkZE1vZHVsZQotICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjMzLlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKLSAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zMy5QeUltcG9ydF9DbGVhbnVwCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzMuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzMuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCi0gIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjMzLlB5SW1wb3J0X0dldEltcG9ydGVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjMzLlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjMzLlB5SW1wb3J0X0dldE1hZ2ljVGFnCi0gIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzMuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAotICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0Ci0gIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zMy5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydE1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zMy5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKLSAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X1JlbG9hZE1vZHVsZQotICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzMuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzMuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQotICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjMzLlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLSAgUHlJdGVyX05leHQ9cHl0aG9uMzMuUHlJdGVyX05leHQKLSAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjMzLlB5TGlzdEl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zMy5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQotICBQeUxpc3RfQXBwZW5kPXB5dGhvbjMzLlB5TGlzdF9BcHBlbmQKLSAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzMuUHlMaXN0X0FzVHVwbGUKLSAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzMuUHlMaXN0X0dldEl0ZW0KLSAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjMzLlB5TGlzdF9HZXRTbGljZQotICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjMzLlB5TGlzdF9JbnNlcnQKLSAgUHlMaXN0X05ldz1weXRob24zMy5QeUxpc3RfTmV3Ci0gIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjMzLlB5TGlzdF9SZXZlcnNlCi0gIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjMzLlB5TGlzdF9TZXRJdGVtCi0gIFB5TGlzdF9TZXRTbGljZT1weXRob24zMy5QeUxpc3RfU2V0U2xpY2UKLSAgUHlMaXN0X1NpemU9cHl0aG9uMzMuUHlMaXN0X1NpemUKLSAgUHlMaXN0X1NvcnQ9cHl0aG9uMzMuUHlMaXN0X1NvcnQKLSAgUHlMaXN0X1R5cGU9cHl0aG9uMzMuUHlMaXN0X1R5cGUgREFUQQotICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zMy5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zMy5QeUxvbmdfQXNEb3VibGUKLSAgUHlMb25nX0FzTG9uZz1weXRob24zMy5QeUxvbmdfQXNMb25nCi0gIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zMy5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0FzTG9uZ0xvbmcKLSAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zMy5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc1NpemVfdD1weXRob24zMy5QeUxvbmdfQXNTaXplX3QKLSAgUHlMb25nX0FzU3NpemVfdD1weXRob24zMy5QeUxvbmdfQXNTc2l6ZV90Ci0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjMzLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawotICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjMzLlB5TG9uZ19Bc1ZvaWRQdHIKLSAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzMuUHlMb25nX0Zyb21Eb3VibGUKLSAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tTG9uZwotICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzMuUHlMb25nX0Zyb21TaXplX3QKLSAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjMzLlB5TG9uZ19Gcm9tU3NpemVfdAotICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zMy5QeUxvbmdfRnJvbVN0cmluZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zMy5QeUxvbmdfRnJvbVZvaWRQdHIKLSAgUHlMb25nX0dldEluZm89cHl0aG9uMzMuUHlMb25nX0dldEluZm8KLSAgUHlMb25nX1R5cGU9cHl0aG9uMzMuUHlMb25nX1R5cGUgREFUQQotICBQeU1hcF9UeXBlPXB5dGhvbjMzLlB5TWFwX1R5cGUgREFUQQotICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzMuUHlNYXBwaW5nX0NoZWNrCi0gIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzMuUHlNYXBwaW5nX0hhc0tleQotICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjMzLlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKLSAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjMzLlB5TWFwcGluZ19JdGVtcwotICBQeU1hcHBpbmdfS2V5cz1weXRob24zMy5QeU1hcHBpbmdfS2V5cwotICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjMzLlB5TWFwcGluZ19MZW5ndGgKLSAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzMuUHlNYXBwaW5nX1NpemUKLSAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zMy5QeU1hcHBpbmdfVmFsdWVzCi0gIFB5TWVtX0ZyZWU9cHl0aG9uMzMuUHlNZW1fRnJlZQotICBQeU1lbV9NYWxsb2M9cHl0aG9uMzMuUHlNZW1fTWFsbG9jCi0gIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzMuUHlNZW1fUmVhbGxvYwotICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzMuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKLSAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzMuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKLSAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzMuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQotICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzMuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzMuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKLSAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjMzLlB5TW9kdWxlX0FkZE9iamVjdAotICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zMy5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAotICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjMzLlB5TW9kdWxlX0NyZWF0ZTIKLSAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjMzLlB5TW9kdWxlX0dldERlZgotICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjMzLlB5TW9kdWxlX0dldERpY3QKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzMuUHlNb2R1bGVfR2V0RmlsZW5hbWUKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzMuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKLSAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zMy5QeU1vZHVsZV9HZXROYW1lCi0gIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjMzLlB5TW9kdWxlX0dldFN0YXRlCi0gIFB5TW9kdWxlX05ldz1weXRob24zMy5QeU1vZHVsZV9OZXcKLSAgUHlNb2R1bGVfVHlwZT1weXRob24zMy5QeU1vZHVsZV9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zMy5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzMuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjMzLlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzMuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zMy5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzMuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjMzLlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zMy5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zMy5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zMy5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zMy5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zMy5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzMuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjMzLlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjMzLlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjMzLlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zMy5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zMy5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zMy5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zMy5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zMy5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzMuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zMy5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzMuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjMzLlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjMzLlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjMzLlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zMy5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjMzLlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzMuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjMzLlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zMy5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjMzLlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zMy5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zMy5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzMuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjMzLlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzMuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzMuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjMzLlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zMy5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzMuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzMuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjMzLlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzMuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zMy5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zMy5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zMy5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zMy5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjMzLlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjMzLlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zMy5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzMuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zMy5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zMy5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zMy5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzMuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zMy5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzMuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjMzLlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zMy5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzMuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zMy5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzMuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzMuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzMuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjMzLlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zMy5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzMuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzMuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zMy5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjMzLlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzMuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzMuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjMzLlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzMuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjMzLlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zMy5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zMy5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzMuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjMzLlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjMzLlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjMzLlB5T2JqZWN0X1R5cGUgREFUQQotICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zMy5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncwotICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjMzLlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKLSAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjMzLlB5UHJvcGVydHlfVHlwZSBEQVRBCi0gIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzMuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5UmFuZ2VfVHlwZT1weXRob24zMy5QeVJhbmdlX1R5cGUgREFUQQotICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzMuUHlSZXZlcnNlZF9UeXBlIERBVEEKLSAgUHlTZXFJdGVyX05ldz1weXRob24zMy5QeVNlcUl0ZXJfTmV3Ci0gIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjMzLlB5U2VxSXRlcl9UeXBlIERBVEEKLSAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zMy5QeVNlcXVlbmNlX0NoZWNrCi0gIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjMzLlB5U2VxdWVuY2VfQ29uY2F0Ci0gIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzMuUHlTZXF1ZW5jZV9Db250YWlucwotICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjMzLlB5U2VxdWVuY2VfQ291bnQKLSAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjMzLlB5U2VxdWVuY2VfRGVsSXRlbQotICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjMzLlB5U2VxdWVuY2VfRGVsU2xpY2UKLSAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjMzLlB5U2VxdWVuY2VfRmFzdAotICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzMuUHlTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzMuUHlTZXF1ZW5jZV9HZXRTbGljZQotICBQeVNlcXVlbmNlX0luPXB5dGhvbjMzLlB5U2VxdWVuY2VfSW4KLSAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjMzLlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzMuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci0gIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzMuUHlTZXF1ZW5jZV9JbmRleAotICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zMy5QeVNlcXVlbmNlX0xlbmd0aAotICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzMuUHlTZXF1ZW5jZV9MaXN0Ci0gIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjMzLlB5U2VxdWVuY2VfUmVwZWF0Ci0gIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zMy5QeVNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zMy5QeVNlcXVlbmNlX1NldFNsaWNlCi0gIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zMy5QeVNlcXVlbmNlX1NpemUKLSAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zMy5QeVNlcXVlbmNlX1R1cGxlCi0gIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjMzLlB5U2V0SXRlcl9UeXBlIERBVEEKLSAgUHlTZXRfQWRkPXB5dGhvbjMzLlB5U2V0X0FkZAotICBQeVNldF9DbGVhcj1weXRob24zMy5QeVNldF9DbGVhcgotICBQeVNldF9Db250YWlucz1weXRob24zMy5QeVNldF9Db250YWlucwotICBQeVNldF9EaXNjYXJkPXB5dGhvbjMzLlB5U2V0X0Rpc2NhcmQKLSAgUHlTZXRfTmV3PXB5dGhvbjMzLlB5U2V0X05ldwotICBQeVNldF9Qb3A9cHl0aG9uMzMuUHlTZXRfUG9wCi0gIFB5U2V0X1NpemU9cHl0aG9uMzMuUHlTZXRfU2l6ZQotICBQeVNldF9UeXBlPXB5dGhvbjMzLlB5U2V0X1R5cGUgREFUQQotICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzMuUHlTbGljZV9HZXRJbmRpY2VzCi0gIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjMzLlB5U2xpY2VfR2V0SW5kaWNlc0V4Ci0gIFB5U2xpY2VfTmV3PXB5dGhvbjMzLlB5U2xpY2VfTmV3Ci0gIFB5U2xpY2VfVHlwZT1weXRob24zMy5QeVNsaWNlX1R5cGUgREFUQQotICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzMuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKLSAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjMzLlB5U3RhdGVfRmluZE1vZHVsZQotICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zMy5QeVN0YXRlX0FkZE1vZHVsZQotICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zMy5QeVN0YXRlX1JlbW92ZU1vZHVsZQotICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzMuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfTmV3Ci0gIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQotICBQeVN1cGVyX1R5cGU9cHl0aG9uMzMuUHlTdXBlcl9UeXBlIERBVEEKLSAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zMy5QeVN5c19BZGRXYXJuT3B0aW9uCi0gIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjMzLlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi0gIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zMy5QeVN5c19Gb3JtYXRTdGRlcnIKLSAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjMzLlB5U3lzX0Zvcm1hdFN0ZG91dAotICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzMuUHlTeXNfR2V0T2JqZWN0Ci0gIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjMzLlB5U3lzX0hhc1dhcm5PcHRpb25zCi0gIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzMuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucwotICBQeVN5c19TZXRBcmd2PXB5dGhvbjMzLlB5U3lzX1NldEFyZ3YKLSAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjMzLlB5U3lzX1NldEFyZ3ZFeAotICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzMuUHlTeXNfU2V0T2JqZWN0Ci0gIFB5U3lzX1NldFBhdGg9cHl0aG9uMzMuUHlTeXNfU2V0UGF0aAotICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zMy5QeVN5c19Xcml0ZVN0ZGVycgotICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zMy5QeVN5c19Xcml0ZVN0ZG91dAotICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfQ2xlYXIKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9EZWxldGUKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAotICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zMy5QeVRocmVhZFN0YXRlX0dldAotICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9HZXREaWN0Ci0gIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfTmV3Ci0gIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YwotICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9Td2FwCi0gIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzMuUHlUcmFjZUJhY2tfSGVyZQotICBQeVRyYWNlQmFja19QcmludD1weXRob24zMy5QeVRyYWNlQmFja19QcmludAotICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjMzLlB5VHJhY2VCYWNrX1R5cGUgREFUQQotICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjMzLlB5VHVwbGVJdGVyX1R5cGUgREFUQQotICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzMuUHlUdXBsZV9DbGVhckZyZWVMaXN0Ci0gIFB5VHVwbGVfR2V0SXRlbT1weXRob24zMy5QeVR1cGxlX0dldEl0ZW0KLSAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zMy5QeVR1cGxlX0dldFNsaWNlCi0gIFB5VHVwbGVfTmV3PXB5dGhvbjMzLlB5VHVwbGVfTmV3Ci0gIFB5VHVwbGVfUGFjaz1weXRob24zMy5QeVR1cGxlX1BhY2sKLSAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjMzLlB5VHVwbGVfU2V0SXRlbQotICBQeVR1cGxlX1NpemU9cHl0aG9uMzMuUHlUdXBsZV9TaXplCi0gIFB5VHVwbGVfVHlwZT1weXRob24zMy5QeVR1cGxlX1R5cGUgREFUQQotICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zMy5QeVR5cGVfQ2xlYXJDYWNoZQotICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzMuUHlUeXBlX0Zyb21TcGVjCi0gIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zMy5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKLSAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zMy5QeVR5cGVfR2VuZXJpY0FsbG9jCi0gIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjMzLlB5VHlwZV9HZW5lcmljTmV3Ci0gIFB5VHlwZV9HZXRGbGFncz1weXRob24zMy5QeVR5cGVfR2V0RmxhZ3MKLSAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zMy5QeVR5cGVfSXNTdWJ0eXBlCi0gIFB5VHlwZV9Nb2RpZmllZD1weXRob24zMy5QeVR5cGVfTW9kaWZpZWQKLSAgUHlUeXBlX1JlYWR5PXB5dGhvbjMzLlB5VHlwZV9SZWFkeQotICBQeVR5cGVfVHlwZT1weXRob24zMy5QeVR5cGVfVHlwZSBEQVRBCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzMuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NvbXBhcmUKLSAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db3VudAotICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCi0gIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgotICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0VgotICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0dldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0pvaW4KLSAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JTcGxpdAotICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SaWNoQ29tcGFyZQotICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfU3BsaXRsaW5lcwotICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzMuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzMuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzMuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzMuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjMzLlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjMzLlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zMy5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjMzLlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjMzLlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zMy5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zMy5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzMuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjMzLlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zMy5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zMy5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzMuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzMuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjMzLlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzMuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjMzLlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzMuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjMzLlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zMy5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzMuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzMuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjMzLlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzMuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjMzLlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzMuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjMzLlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzMuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zMy5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjMzLlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjMzLlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjMzLlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjMzLlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjMzLlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zMy5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzMuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zMy5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzMuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zMy5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzMuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zMy5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjMzLlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjMzLlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zMy5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMy5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzMuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zMy5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjMzLl9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zMy5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzMuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjMzLl9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zMy5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzMuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzMuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzMuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zMy5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzMuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzMuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zMy5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjMzLl9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zMy5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzMuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzMuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzMuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzMuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjMzLl9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzMuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjMzLl9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zMy5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zMy5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zMy5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjMzLl9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zMy5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzMuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1BhcnNlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zMy5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMzLl9QeV9CdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjM0LlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzQuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzQuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM0LlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzQuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNC5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzQuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM0LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM0LlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zNC5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM0LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzQuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM0LlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNC5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNC5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNC5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM0LlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM0LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM0LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNC5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNC5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNC5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjM0LlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzQuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zNC5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNC5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzQuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzQuUHlDRnVuY3Rpb25fTmV3CisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzQuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM0LlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNC5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM0LlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzQuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzQuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzQuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzQuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNC5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM0LlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzQuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNC5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNC5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNC5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNC5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zNC5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM0LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zNC5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzQuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM0LlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNC5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzQuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzQuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM0LlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM0LlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNC5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNC5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNC5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNC5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNC5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM0LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM0LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNC5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM0LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNC5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM0LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM0LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM0LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzQuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzQuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNC5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNC5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNC5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzQuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzQuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM0LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM0LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzQuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM0LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM0LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM0LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM0LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM0LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM0LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNC5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzQuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM0LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNC5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM0LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzQuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzQuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzQuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzQuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM0LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNC5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNC5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNC5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM0LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNC5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM0LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNC5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM0LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNC5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM0LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNC5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM0LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzQuUHlFcnJfTmV3RXhjZXB0aW9uCisgIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzQuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYworICBQeUVycl9Ob01lbW9yeT1weXRob24zNC5QeUVycl9Ob01lbW9yeQorICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzQuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCisgIFB5RXJyX09jY3VycmVkPXB5dGhvbjM0LlB5RXJyX09jY3VycmVkCisgIFB5RXJyX1ByaW50PXB5dGhvbjM0LlB5RXJyX1ByaW50CisgIFB5RXJyX1ByaW50RXg9cHl0aG9uMzQuUHlFcnJfUHJpbnRFeAorICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNC5QeUVycl9Qcm9ncmFtVGV4dAorICBQeUVycl9SZXN0b3JlPXB5dGhvbjM0LlB5RXJyX1Jlc3RvcmUKKyAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM0LlB5RXJyX1NldEZyb21FcnJubworICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzQuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNC5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM0LlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjM0LlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM0LlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzQuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM0LlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1dhcm5FeD1weXRob24zNC5QeUVycl9XYXJuRXgKKyAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM0LlB5RXJyX1dhcm5FeHBsaWNpdAorICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM0LlB5RXJyX1dhcm5Gb3JtYXQKKyAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM0LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQorICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzQuUHlFdmFsX0FjcXVpcmVMb2NrCisgIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM0LlB5RXZhbF9BY3F1aXJlVGhyZWFkCisgIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzQuUHlFdmFsX0NhbGxGdW5jdGlvbgorICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNC5QeUV2YWxfQ2FsbE1ldGhvZAorICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNC5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcworICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzQuUHlFdmFsX0V2YWxDb2RlCisgIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM0LlB5RXZhbF9FdmFsQ29kZUV4CisgIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzQuUHlFdmFsX0V2YWxGcmFtZQorICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzQuUHlFdmFsX0V2YWxGcmFtZUV4CisgIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNC5QeUV2YWxfR2V0QnVpbHRpbnMKKyAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNC5QeUV2YWxfR2V0Q2FsbFN0YXRzCisgIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNC5QeUV2YWxfR2V0RnJhbWUKKyAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM0LlB5RXZhbF9HZXRGdW5jRGVzYworICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzQuUHlFdmFsX0dldEZ1bmNOYW1lCisgIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM0LlB5RXZhbF9HZXRHbG9iYWxzCisgIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzQuUHlFdmFsX0dldExvY2FscworICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzQuUHlFdmFsX0luaXRUaHJlYWRzCisgIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM0LlB5RXZhbF9SZUluaXRUaHJlYWRzCisgIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNC5QeUV2YWxfUmVsZWFzZUxvY2sKKyAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX1JlbGVhc2VUaHJlYWQKKyAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKKyAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX1NhdmVUaHJlYWQKKyAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNC5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCisgIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNC5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQorICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNC5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCisgIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM0LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKKyAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNC5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzQuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzQuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM0LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM0LlB5RXhjX0VPRkVycm9yIERBVEEKKyAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNC5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKKyAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM0LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNC5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQorICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQorICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM0LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQorICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM0LlB5RXhjX0lPRXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNC5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCisgIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzQuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCisgIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzQuUHlFeGNfSW5kZXhFcnJvciBEQVRBCisgIFB5RXhjX0tleUVycm9yPXB5dGhvbjM0LlB5RXhjX0tleUVycm9yIERBVEEKKyAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzQuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQorICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNC5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM0LlB5RXhjX01lbW9yeUVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM0LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zNC5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM0LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQorICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM0LlB5RXhjX09TRXJyb3IgREFUQQorICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM0LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQorICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzQuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzQuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzQuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM0LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQorICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNC5QeUV4Y19TeW50YXhFcnJvciBEQVRBCisgIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCisgIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM0LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKKyAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNC5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKKyAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzQuUHlFeGNfVGFiRXJyb3IgREFUQQorICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVHlwZUVycm9yIERBVEEKKyAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQorICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNC5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCisgIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVmFsdWVFcnJvciBEQVRBCisgIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzQuUHlFeGNfV2FybmluZyBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM0LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzQuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNC5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNC5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzQuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNC5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNC5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zNC5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM0LlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNC5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM0LlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM0LlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM0LlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM0LlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNC5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzQuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzQuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjM0LlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zNC5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNC5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjM0LlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNC5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNC5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzQuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNC5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzQuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgorICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM0LlB5SW1wb3J0X0NsZWFudXAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNC5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4CisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNC5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKKyAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzQuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzQuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzQuUHlJbXBvcnRfR2V0TWFnaWNUYWcKKyAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNC5QeUltcG9ydF9HZXRNb2R1bGVEaWN0CisgIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNC5QeUltcG9ydF9JbXBvcnQKKyAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaworICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNC5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKKyAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNC5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzQuUHlJbnRlcnByZXRlclN0YXRlX05ldworICBQeUl0ZXJfTmV4dD1weXRob24zNC5QeUl0ZXJfTmV4dAorICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzQuUHlMaXN0SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM0LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzQuUHlMaXN0X0FwcGVuZAorICBQeUxpc3RfQXNUdXBsZT1weXRob24zNC5QeUxpc3RfQXNUdXBsZQorICBQeUxpc3RfR2V0SXRlbT1weXRob24zNC5QeUxpc3RfR2V0SXRlbQorICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzQuUHlMaXN0X0dldFNsaWNlCisgIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzQuUHlMaXN0X0luc2VydAorICBQeUxpc3RfTmV3PXB5dGhvbjM0LlB5TGlzdF9OZXcKKyAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzQuUHlMaXN0X1JldmVyc2UKKyAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzQuUHlMaXN0X1NldEl0ZW0KKyAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM0LlB5TGlzdF9TZXRTbGljZQorICBQeUxpc3RfU2l6ZT1weXRob24zNC5QeUxpc3RfU2l6ZQorICBQeUxpc3RfU29ydD1weXRob24zNC5QeUxpc3RfU29ydAorICBQeUxpc3RfVHlwZT1weXRob24zNC5QeUxpc3RfVHlwZSBEQVRBCisgIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM0LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM0LlB5TG9uZ19Bc0RvdWJsZQorICBQeUxvbmdfQXNMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmcKKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNC5QeUxvbmdfQXNMb25nTG9uZworICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Bc1NpemVfdAorICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Bc1NzaXplX3QKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNC5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCisgIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzQuUHlMb25nX0FzVm9pZFB0cgorICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNC5QeUxvbmdfRnJvbURvdWJsZQorICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21Mb25nCisgIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21Mb25nTG9uZworICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNC5QeUxvbmdfRnJvbVNpemVfdAorICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzQuUHlMb25nX0Zyb21Tc2l6ZV90CisgIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tU3RyaW5nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM0LlB5TG9uZ19Gcm9tVm9pZFB0cgorICBQeUxvbmdfR2V0SW5mbz1weXRob24zNC5QeUxvbmdfR2V0SW5mbworICBQeUxvbmdfVHlwZT1weXRob24zNC5QeUxvbmdfVHlwZSBEQVRBCisgIFB5TWFwX1R5cGU9cHl0aG9uMzQuUHlNYXBfVHlwZSBEQVRBCisgIFB5TWFwcGluZ19DaGVjaz1weXRob24zNC5QeU1hcHBpbmdfQ2hlY2sKKyAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNC5QeU1hcHBpbmdfSGFzS2V5CisgIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzQuUHlNYXBwaW5nX0hhc0tleVN0cmluZworICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzQuUHlNYXBwaW5nX0l0ZW1zCisgIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM0LlB5TWFwcGluZ19LZXlzCisgIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzQuUHlNYXBwaW5nX0xlbmd0aAorICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNC5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNC5QeU1hcHBpbmdfU2l6ZQorICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM0LlB5TWFwcGluZ19WYWx1ZXMKKyAgUHlNZW1fRnJlZT1weXRob24zNC5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zNC5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zNC5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNC5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNC5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNC5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNC5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNC5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNC5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzQuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM0LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzQuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzQuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzQuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNC5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNC5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM0LlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzQuUHlNb2R1bGVfR2V0U3RhdGUKKyAgUHlNb2R1bGVfTmV3PXB5dGhvbjM0LlB5TW9kdWxlX05ldworICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM0LlB5TW9kdWxlX1R5cGUgREFUQQorICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjM0LlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQorICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zNC5QeU51bWJlcl9BYnNvbHV0ZQorICBQeU51bWJlcl9BZGQ9cHl0aG9uMzQuUHlOdW1iZXJfQWRkCisgIFB5TnVtYmVyX0FuZD1weXRob24zNC5QeU51bWJlcl9BbmQKKyAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjM0LlB5TnVtYmVyX0FzU3NpemVfdAorICBQeU51bWJlcl9DaGVjaz1weXRob24zNC5QeU51bWJlcl9DaGVjaworICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzQuUHlOdW1iZXJfRGl2bW9kCisgIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjM0LlB5TnVtYmVyX0Zsb2F0CisgIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX0Zsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUFkZAorICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VBbmQKKyAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQorICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZU9yCisgIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlUG93ZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCisgIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAorICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0CisgIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVhvcgorICBQeU51bWJlcl9JbmRleD1weXRob24zNC5QeU51bWJlcl9JbmRleAorICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzQuUHlOdW1iZXJfSW52ZXJ0CisgIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzQuUHlOdW1iZXJfTG9uZworICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfTHNoaWZ0CisgIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjM0LlB5TnVtYmVyX011bHRpcGx5CisgIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjM0LlB5TnVtYmVyX05lZ2F0aXZlCisgIFB5TnVtYmVyX09yPXB5dGhvbjM0LlB5TnVtYmVyX09yCisgIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjM0LlB5TnVtYmVyX1Bvc2l0aXZlCisgIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjM0LlB5TnVtYmVyX1Bvd2VyCisgIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zNC5QeU51bWJlcl9SZW1haW5kZXIKKyAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjM0LlB5TnVtYmVyX1JzaGlmdAorICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zNC5QeU51bWJlcl9TdWJ0cmFjdAorICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzQuUHlOdW1iZXJfVG9CYXNlCisgIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfVHJ1ZURpdmlkZQorICBQeU51bWJlcl9Yb3I9cHl0aG9uMzQuUHlOdW1iZXJfWG9yCisgIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM0LlB5T1NfQWZ0ZXJGb3JrCisgIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzQuUHlPU19Jbml0SW50ZXJydXB0cworICBQeU9TX0lucHV0SG9vaz1weXRob24zNC5QeU9TX0lucHV0SG9vayBEQVRBCisgIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzQuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAorICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjM0LlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQorICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzQuUHlPU19kb3VibGVfdG9fc3RyaW5nCisgIFB5T1NfZ2V0c2lnPXB5dGhvbjM0LlB5T1NfZ2V0c2lnCisgIFB5T1NfbXlzdHJpY21wPXB5dGhvbjM0LlB5T1NfbXlzdHJpY21wCisgIFB5T1NfbXlzdHJuaWNtcD1weXRob24zNC5QeU9TX215c3RybmljbXAKKyAgUHlPU19zZXRzaWc9cHl0aG9uMzQuUHlPU19zZXRzaWcKKyAgUHlPU19zbnByaW50Zj1weXRob24zNC5QeU9TX3NucHJpbnRmCisgIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zNC5QeU9TX3N0cmluZ190b19kb3VibGUKKyAgUHlPU19zdHJ0b2w9cHl0aG9uMzQuUHlPU19zdHJ0b2wKKyAgUHlPU19zdHJ0b3VsPXB5dGhvbjM0LlB5T1Nfc3RydG91bAorICBQeU9TX3ZzbnByaW50Zj1weXRob24zNC5QeU9TX3ZzbnByaW50ZgorICBQeU9iamVjdF9BU0NJST1weXRob24zNC5QeU9iamVjdF9BU0NJSQorICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQXNDaGFyQnVmZmVyCisgIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzQuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgorICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQXNSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgorICBQeU9iamVjdF9CeXRlcz1weXRob24zNC5QeU9iamVjdF9CeXRlcworICBQeU9iamVjdF9DYWxsPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGwKKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxGdW5jdGlvbgorICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zNC5QeU9iamVjdF9DYWxsTWV0aG9kCisgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbE9iamVjdAorICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzQuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzQuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcworICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjM0LlB5T2JqZWN0X0RlbEl0ZW0KKyAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zNC5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCisgIFB5T2JqZWN0X0Rpcj1weXRob24zNC5QeU9iamVjdF9EaXIKKyAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjM0LlB5T2JqZWN0X0Zvcm1hdAorICBQeU9iamVjdF9GcmVlPXB5dGhvbjM0LlB5T2JqZWN0X0ZyZWUKKyAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjM0LlB5T2JqZWN0X0dDX0RlbAorICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zNC5QeU9iamVjdF9HQ19UcmFjaworICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjM0LlB5T2JqZWN0X0dDX1VuVHJhY2sKKyAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKKyAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9HZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfR2V0QXR0clN0cmluZworICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjM0LlB5T2JqZWN0X0dldEl0ZW0KKyAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zNC5QeU9iamVjdF9HZXRJdGVyCisgIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzQuUHlPYmplY3RfSGFzQXR0cgorICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKKyAgUHlPYmplY3RfSGFzaD1weXRob24zNC5QeU9iamVjdF9IYXNoCisgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zNC5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKKyAgUHlPYmplY3RfSW5pdD1weXRob24zNC5QeU9iamVjdF9Jbml0CisgIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzQuUHlPYmplY3RfSW5pdFZhcgorICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjM0LlB5T2JqZWN0X0lzSW5zdGFuY2UKKyAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zNC5QeU9iamVjdF9Jc1N1YmNsYXNzCisgIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zNC5QeU9iamVjdF9Jc1RydWUKKyAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjM0LlB5T2JqZWN0X0xlbmd0aAorICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzQuUHlPYmplY3RfTWFsbG9jCisgIFB5T2JqZWN0X05vdD1weXRob24zNC5QeU9iamVjdF9Ob3QKKyAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zNC5QeU9iamVjdF9SZWFsbG9jCisgIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzQuUHlPYmplY3RfUmVwcgorICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zNC5QeU9iamVjdF9SaWNoQ29tcGFyZQorICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzQuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCisgIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjM0LlB5T2JqZWN0X1NlbGZJdGVyCisgIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfU2V0QXR0cgorICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zNC5QeU9iamVjdF9TZXRJdGVtCisgIFB5T2JqZWN0X1NpemU9cHl0aG9uMzQuUHlPYmplY3RfU2l6ZQorICBQeU9iamVjdF9TdHI9cHl0aG9uMzQuUHlPYmplY3RfU3RyCisgIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzQuUHlPYmplY3RfVHlwZSBEQVRBCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM0LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzQuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncworICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzQuUHlQcm9wZXJ0eV9UeXBlIERBVEEKKyAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNC5QeVJhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlSYW5nZV9UeXBlPXB5dGhvbjM0LlB5UmFuZ2VfVHlwZSBEQVRBCisgIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNC5QeVJldmVyc2VkX1R5cGUgREFUQQorICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM0LlB5U2VxSXRlcl9OZXcKKyAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzQuUHlTZXFJdGVyX1R5cGUgREFUQQorICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM0LlB5U2VxdWVuY2VfQ2hlY2sKKyAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9Db25jYXQKKyAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNC5QeVNlcXVlbmNlX0NvbnRhaW5zCisgIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9Db3VudAorICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzQuUHlTZXF1ZW5jZV9EZWxJdGVtCisgIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzQuUHlTZXF1ZW5jZV9EZWxTbGljZQorICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzQuUHlTZXF1ZW5jZV9GYXN0CisgIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNC5QeVNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNC5QeVNlcXVlbmNlX0dldFNsaWNlCisgIFB5U2VxdWVuY2VfSW49cHl0aG9uMzQuUHlTZXF1ZW5jZV9JbgorICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0CisgIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNC5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKKyAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNC5QeVNlcXVlbmNlX0luZGV4CisgIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM0LlB5U2VxdWVuY2VfTGVuZ3RoCisgIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNC5QeVNlcXVlbmNlX0xpc3QKKyAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9SZXBlYXQKKyAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM0LlB5U2VxdWVuY2VfU2V0SXRlbQorICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM0LlB5U2VxdWVuY2VfU2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM0LlB5U2VxdWVuY2VfU2l6ZQorICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM0LlB5U2VxdWVuY2VfVHVwbGUKKyAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzQuUHlTZXRJdGVyX1R5cGUgREFUQQorICBQeVNldF9BZGQ9cHl0aG9uMzQuUHlTZXRfQWRkCisgIFB5U2V0X0NsZWFyPXB5dGhvbjM0LlB5U2V0X0NsZWFyCisgIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM0LlB5U2V0X0NvbnRhaW5zCisgIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzQuUHlTZXRfRGlzY2FyZAorICBQeVNldF9OZXc9cHl0aG9uMzQuUHlTZXRfTmV3CisgIFB5U2V0X1BvcD1weXRob24zNC5QeVNldF9Qb3AKKyAgUHlTZXRfU2l6ZT1weXRob24zNC5QeVNldF9TaXplCisgIFB5U2V0X1R5cGU9cHl0aG9uMzQuUHlTZXRfVHlwZSBEQVRBCisgIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNC5QeVNsaWNlX0dldEluZGljZXMKKyAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzQuUHlTbGljZV9HZXRJbmRpY2VzRXgKKyAgUHlTbGljZV9OZXc9cHl0aG9uMzQuUHlTbGljZV9OZXcKKyAgUHlTbGljZV9UeXBlPXB5dGhvbjM0LlB5U2xpY2VfVHlwZSBEQVRBCisgIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNC5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQorICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzQuUHlTdGF0ZV9GaW5kTW9kdWxlCisgIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM0LlB5U3RhdGVfQWRkTW9kdWxlCisgIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM0LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCisgIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM0LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQorICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U3VwZXJfVHlwZT1weXRob24zNC5QeVN1cGVyX1R5cGUgREFUQQorICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM0LlB5U3lzX0FkZFdhcm5PcHRpb24KKyAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzQuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKKyAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM0LlB5U3lzX0Zvcm1hdFN0ZGVycgorICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzQuUHlTeXNfRm9ybWF0U3Rkb3V0CisgIFB5U3lzX0dldE9iamVjdD1weXRob24zNC5QeVN5c19HZXRPYmplY3QKKyAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzQuUHlTeXNfSGFzV2Fybk9wdGlvbnMKKyAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNC5QeVN5c19SZXNldFdhcm5PcHRpb25zCisgIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzQuUHlTeXNfU2V0QXJndgorICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzQuUHlTeXNfU2V0QXJndkV4CisgIFB5U3lzX1NldE9iamVjdD1weXRob24zNC5QeVN5c19TZXRPYmplY3QKKyAgUHlTeXNfU2V0UGF0aD1weXRob24zNC5QeVN5c19TZXRQYXRoCisgIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM0LlB5U3lzX1dyaXRlU3RkZXJyCisgIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM0LlB5U3lzX1dyaXRlU3Rkb3V0CisgIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9DbGVhcgorICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNC5QeVRocmVhZFN0YXRlX0RlbGV0ZQorICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50CisgIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfR2V0CisgIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNC5QeVRocmVhZFN0YXRlX0dldERpY3QKKyAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9OZXcKKyAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNC5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCisgIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNC5QeVRocmVhZFN0YXRlX1N3YXAKKyAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNC5QeVRyYWNlQmFja19IZXJlCisgIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM0LlB5VHJhY2VCYWNrX1ByaW50CisgIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzQuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCisgIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzQuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCisgIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNC5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKKyAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM0LlB5VHVwbGVfR2V0SXRlbQorICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM0LlB5VHVwbGVfR2V0U2xpY2UKKyAgUHlUdXBsZV9OZXc9cHl0aG9uMzQuUHlUdXBsZV9OZXcKKyAgUHlUdXBsZV9QYWNrPXB5dGhvbjM0LlB5VHVwbGVfUGFjaworICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzQuUHlUdXBsZV9TZXRJdGVtCisgIFB5VHVwbGVfU2l6ZT1weXRob24zNC5QeVR1cGxlX1NpemUKKyAgUHlUdXBsZV9UeXBlPXB5dGhvbjM0LlB5VHVwbGVfVHlwZSBEQVRBCisgIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM0LlB5VHlwZV9DbGVhckNhY2hlCisgIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNC5QeVR5cGVfRnJvbVNwZWMKKyAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM0LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcworICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM0LlB5VHlwZV9HZW5lcmljQWxsb2MKKyAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzQuUHlUeXBlX0dlbmVyaWNOZXcKKyAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM0LlB5VHlwZV9HZXRGbGFncworICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM0LlB5VHlwZV9Jc1N1YnR5cGUKKyAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM0LlB5VHlwZV9Nb2RpZmllZAorICBQeVR5cGVfUmVhZHk9cHl0aG9uMzQuUHlUeXBlX1JlYWR5CisgIFB5VHlwZV9UeXBlPXB5dGhvbjM0LlB5VHlwZV9UeXBlIERBVEEKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNC5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfQXBwZW5kQW5kRGVsCisgIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfQXNBU0NJSVN0cmluZworICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFN0cmluZworICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FzVVRGMTZTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Bc1VURjhTdHJpbmcKKyAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0CisgIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfQ29tcGFyZQorICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0NvbnRhaW5zCisgIFB5VW5pY29kZV9Db3VudD1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0NvdW50CisgIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfRGVjb2RlQVNDSUkKKyAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwCisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCisgIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVMYXRpbjEKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2CisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyU3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4CisgIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9EZWNvZGVVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCisgIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9GaW5kCisgIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXRWCisgIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9Gcm9tT3JkaW5hbAorICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmcKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNC5QeVVuaWNvZGVVQ1MyX0Zyb21XaWRlQ2hhcgorICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfR2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfSXNJZGVudGlmaWVyCisgIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfSm9pbgorICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfUlBhcnRpdGlvbgorICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfUlNwbGl0CisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfUmVzaXplCisgIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNC5QeVVuaWNvZGVVQ1MyX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM0LlB5VW5pY29kZVVDUzJfU3BsaXQKKyAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzQuUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNC5QeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZQorICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNC5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAorICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZworICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGNworICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKKyAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNC5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNC5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKKyAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzQuUHlVbmljb2RlX0ludGVybkluUGxhY2UKKyAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzQuUHlVbmljb2RlX1R5cGUgREFUQQorICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM0LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQorICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzQuUHlXZWFrcmVmX05ld1Byb3h5CisgIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzQuUHlXZWFrcmVmX05ld1JlZgorICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM0LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQorICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM0LlB5V3JhcHBlcl9OZXcKKyAgUHlaaXBfVHlwZT1weXRob24zNC5QeVppcF9UeXBlIERBVEEKKyAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzQuUHlfQWRkUGVuZGluZ0NhbGwKKyAgUHlfQXRFeGl0PXB5dGhvbjM0LlB5X0F0RXhpdAorICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM0LlB5X0J1aWxkVmFsdWUKKyAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNC5QeV9Db21waWxlU3RyaW5nCisgIFB5X0RlY1JlZj1weXRob24zNC5QeV9EZWNSZWYKKyAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzQuUHlfRW5kSW50ZXJwcmV0ZXIKKyAgUHlfRXhpdD1weXRob24zNC5QeV9FeGl0CisgIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzQuUHlfRmF0YWxFcnJvcgorICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9GaW5hbGl6ZT1weXRob24zNC5QeV9GaW5hbGl6ZQorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzQuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM0LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNC5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNC5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzQuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNC5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzQuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNC5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzQuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNC5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM0LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzQuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzQuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzQuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzQuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzQuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM0LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNC5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM0LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNC5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM0LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNC5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM0LlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzQuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzQuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM0LlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM0Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNC5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM0Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM0Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNC5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM0Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNC5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNC5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNC5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM0Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNC5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNC5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM0Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzQuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM0Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNC5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNC5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNC5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzQuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zNC5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzQuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM0Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM0Ll9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM0Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzQuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM0Ll9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNC5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzQuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMubWFrIGIvUEMvcHl0aG9uMy5tYWsKaW5kZXggMmVjOTE4NS4uOGY5ZDQ2OCAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5tYWsKKysrIGIvUEMvcHl0aG9uMy5tYWsKQEAgLTEsMTAgKzEsMTAgQEAKLSQoT3V0RGlyKXB5dGhvbjMuZGxsOglweXRob24zLmRlZiAkKE91dERpcilweXRob24zM3N0dWIubGliCi0JY2wgL0xEIC9GZSQoT3V0RGlyKXB5dGhvbjMuZGxsIHB5dGhvbjNkbGwuYyBweXRob24zLmRlZiAkKE91dERpcilweXRob24zM3N0dWIubGliCiskKE91dERpcilweXRob24zLmRsbDoJcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYgorCWNsIC9MRCAvRmUkKE91dERpcilweXRob24zLmRsbCBweXRob24zZGxsLmMgcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYgogCi0kKE91dERpcilweXRob24zM3N0dWIubGliOglweXRob24zM3N0dWIuZGVmCi0JbGliIC9kZWY6cHl0aG9uMzNzdHViLmRlZiAvb3V0OiQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIgL01BQ0hJTkU6JChNQUNISU5FKQorJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYjoJcHl0aG9uMzRzdHViLmRlZgorCWxpYiAvZGVmOnB5dGhvbjM0c3R1Yi5kZWYgL291dDokKE91dERpcilweXRob24zNHN0dWIubGliIC9NQUNISU5FOiQoTUFDSElORSkKIAogY2xlYW46Ci0JZGVsICQoT3V0RGlyKXB5dGhvbjMuZGxsICQoT3V0RGlyKXB5dGhvbjMubGliICQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIgJChPdXREaXIpcHl0aG9uMy5leHAgJChPdXREaXIpcHl0aG9uMzNzdHViLmV4cAorCWRlbCAkKE91dERpcilweXRob24zLmRsbCAkKE91dERpcilweXRob24zLmxpYiAkKE91dERpcilweXRob24zNHN0dWIubGliICQoT3V0RGlyKXB5dGhvbjMuZXhwICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5leHAKIAogcmVidWlsZDogY2xlYW4gJChPdXREaXIpcHl0aG9uMy5kbGwKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMzZ2VuLnB5IGIvUEMvcHl0aG9uMzRnZW4ucHkKc2ltaWxhcml0eSBpbmRleCA3NyUKcmVuYW1lIGZyb20gUEMvcHl0aG9uMzNnZW4ucHkKcmVuYW1lIHRvIFBDL3B5dGhvbjM0Z2VuLnB5CmluZGV4IDIxYjlmNTYuLjE4MGNlMTEgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMzZ2VuLnB5CisrKyBiL1BDL3B5dGhvbjM0Z2VuLnB5CkBAIC0xLDkgKzEsOSBAQAotIyBHZW5lcmF0ZSBweXRob24zM3N0dWIuZGVmIG91dCBvZiBweXRob24zLmRlZgorIyBHZW5lcmF0ZSBweXRob24zNHN0dWIuZGVmIG91dCBvZiBweXRob24zLmRlZgogIyBUaGUgcmVndWxhciBpbXBvcnQgbGlicmFyeSBjYW5ub3QgYmUgdXNlZCwKICMgc2luY2UgaXQgZG9lc24ndCBwcm92aWRlIHRoZSByaWdodCBzeW1ib2xzIGZvcgogIyBkYXRhIGZvcndhcmRpbmcKLW91dCA9IG9wZW4oInB5dGhvbjMzc3R1Yi5kZWYiLCAidyIpCi1vdXQud3JpdGUoJ0xJQlJBUlkgInB5dGhvbjMzIlxuJykKK291dCA9IG9wZW4oInB5dGhvbjM0c3R1Yi5kZWYiLCAidyIpCitvdXQud3JpdGUoJ0xJQlJBUlkgInB5dGhvbjM0IlxuJykKIG91dC53cml0ZSgnRVhQT1JUU1xuJykKIAogaW5wID0gb3BlbigicHl0aG9uMy5kZWYiKQpAQCAtMTQsNyArMTQsNyBAQAogYXNzZXJ0IGxpbmUuc3RyaXAoKT09J0VYUE9SVFMnCiAKIGZvciBsaW5lIGluIGlucDoKLSAgICAjIFNZTTE9cHl0aG9uMzMuU1lNMlsgREFUQV0KKyAgICAjIFNZTTE9cHl0aG9uMzQuU1lNMlsgREFUQV0KICAgICBoZWFkLCB0YWlsID0gbGluZS5zcGxpdCgnLicpCiAgICAgaWYgJ0RBVEEnIGluIHRhaWw6CiAgICAgICAgIHN5bWJvbCwgdGFpbCA9IHRhaWwuc3BsaXQoJyAnKQpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMzNzdHViLmRlZiBiL1BDL3B5dGhvbjM0c3R1Yi5kZWYKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUEMvcHl0aG9uMzNzdHViLmRlZgpyZW5hbWUgdG8gUEMvcHl0aG9uMzRzdHViLmRlZgppbmRleCA1YjhjY2Y2Li5jMGYzYjM1IDEwMDY0NAotLS0gYS9QQy9weXRob24zM3N0dWIuZGVmCisrKyBiL1BDL3B5dGhvbjM0c3R1Yi5kZWYKQEAgLTEsNCArMSw0IEBACi1MSUJSQVJZICJweXRob24zMyIKK0xJQlJBUlkgInB5dGhvbjM0IgogRVhQT1JUUwogUHlBcmdfUGFyc2UKIFB5QXJnX1BhcnNlVHVwbGUKQEAgLTM3LDYgKzM3LDcgQEAKIFB5Q0Z1bmN0aW9uX0dldEZsYWdzCiBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgogUHlDRnVuY3Rpb25fR2V0U2VsZgorUHlDRnVuY3Rpb25fTmV3CiBQeUNGdW5jdGlvbl9OZXdFeAogUHlDRnVuY3Rpb25fVHlwZQogUHlDYWxsSXRlcl9OZXcKZGlmZiAtLWdpdCBhL1BDL3JlYWRtZS50eHQgYi9QQy9yZWFkbWUudHh0CmluZGV4IGZkYzA5YWIuLjYwZjIzMWUgMTAwNjQ0Ci0tLSBhL1BDL3JlYWRtZS50eHQKKysrIGIvUEMvcmVhZG1lLnR4dApAQCAtNzksMTkgKzc5LDYgQEAKIFRoZSBzdWJkaXJlY3RvcmllcyBWQzYsIFZTNy4xIGFuZCBWUzguMCBjb250YWluIGxlZ2FjeSBzdXBwb3J0IG9sZGVyCiB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpby4gU2VlIFBDYnVpbGQvcmVhZG1lLnR4dC4KIAotRU1YIGRldmVsb3BtZW50IHRvb2xzIGZvciBPUy8yCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotU2VlIG9zMmVteC9yZWFkbWUudHh0LiBUaGlzIHBsYXRmb3JtIGlzIG1haW50YWluZWQgYnkgQW5kcmV3IE1hY0ludHlyZS4KLQotSUJNIFZpc3VhbEFnZSBDL0MrKyBmb3IgT1MvMgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1TZWUgb3MydmFjcHAvcmVhZG1lLnR4dC4gIFRoaXMgcGxhdGZvcm0gaXMgc3VwcG9ydGVkIGJ5IEplZmYgUnVzaC4KLQotTk9URTogU3VwcG9ydCBmb3Igb3MydmFjcHAgbWF5IGJlIGRyb3BwZWQgaW4gdGhlIG5lYXIgZnV0dXJlLiBQbGVhc2UgbW92ZQotICAgICAgdG8gRU1YLgotCiBOb3RlIGZvciBXaW5kb3dzIDMueCBhbmQgRE9TIHVzZXJzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL1BDL3c5eHBvcGVuLmMgYi9QQy93OXhwb3Blbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzk3OGRkLi4wMDAwMDAwCi0tLSBhL1BDL3c5eHBvcGVuLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLyoKLSAqIHc5eHBvcGVuLmMKLSAqCi0gKiBTZXJ2ZXMgYXMgYW4gaW50ZXJtZWRpYXRlIHN0dWIgV2luMzIgY29uc29sZSBhcHBsaWNhdGlvbiB0bwotICogYXZvaWQgYSBoYW5naW5nIHBpcGUgd2hlbiByZWRpcmVjdGluZyAxNi1iaXQgY29uc29sZSBiYXNlZAotICogcHJvZ3JhbXMgKGluY2x1ZGluZyBNUy1ET1MgY29uc29sZSBiYXNlZCBwcm9ncmFtcyBhbmQgYmF0Y2gKLSAqIGZpbGVzKSBvbiBXaW5kb3cgOTUgYW5kIFdpbmRvd3MgOTguCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIHRvIGJlIGxhdW5jaGVkIHdpdGggcmVkaXJlY3RlZCBzdGFuZGFyZAotICogaGFuZGxlcy4gSXQgd2lsbCBsYXVuY2ggdGhlIGNvbW1hbmQgbGluZSBzcGVjaWZpZWQgMTYtYml0Ci0gKiBjb25zb2xlIGJhc2VkIGFwcGxpY2F0aW9uIGluIHRoZSBzYW1lIGNvbnNvbGUsIGZvcndhcmRpbmcKLSAqIGl0cyBvd24gcmVkaXJlY3RlZCBzdGFuZGFyZCBoYW5kbGVzIHRvIHRoZSAxNi1iaXQgY2hpbGQuCi0KLSAqIEFLQSBzb2x1dGlvbiB0byB0aGUgcHJvYmxlbSBkZXNjcmliZWQgaW4gS0I6IFExNTA5NTYuCi0gKi8gICAgCi0KLSNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPiAgLyogZm9yIG1hbGxvYyBhbmQgaXRzIGZyaWVuZHMgKi8KLQotY29uc3QgY2hhciAqdXNhZ2UgPQotIlRoaXMgcHJvZ3JhbSBpcyB1c2VkIGJ5IFB5dGhvbidzIG9zLnBvcGVuIGZ1bmN0aW9uXG4iCi0idG8gd29yayBhcm91bmQgYSBsaW1pdGF0aW9uIGluIFdpbmRvd3MgOTUvOTguICBJdCBpc1xuIgotIm5vdCBkZXNpZ25lZCB0byBiZSB1c2VkIGFzIGEgc3RhbmQtYWxvbmUgcHJvZ3JhbS4iOwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotICAgIEJPT0wgYlJldDsKLSAgICBTVEFSVFVQSU5GTyBzaTsKLSAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOwotICAgIERXT1JEIGV4aXRfY29kZT0wOwotICAgIHNpemVfdCBjbWRsZW4gPSAwOwotICAgIGludCBpOwotICAgIGNoYXIgKmNtZGxpbmUsICpjbWRsaW5lZmlsbDsKLQotICAgIGlmIChhcmdjIDwgMikgewotICAgICAgICBpZiAoR2V0RmlsZVR5cGUoR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpKT09RklMRV9UWVBFX0NIQVIpCi0gICAgICAgICAgICAvKiBBdHRhY2hlZCB0byBhIGNvbnNvbGUsIGFuZCB0aGVyZWZvcmUgbm90IGV4ZWN1dGVkIGJ5IFB5dGhvbgotICAgICAgICAgICAgICAgRGlzcGxheSBhIG1lc3NhZ2UgYm94IGZvciB0aGUgaW5xdWlzaXRpdmUgdXNlcgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIE1lc3NhZ2VCb3goTlVMTCwgdXNhZ2UsIGFyZ3ZbMF0sIE1CX09LKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBFZWVrIC0gZXhlY3V0ZWQgYnkgUHl0aG9uLCBidXQgYXJncyBhcmUgc2NyZXdlZCEKLSAgICAgICAgICAgICAgIFdyaXRlIGFuIGVycm9yIG1lc3NhZ2UgdG8gc3Rkb3V0IHNvIHRoZXJlIGlzIGF0Ci0gICAgICAgICAgICAgICBsZWFzdCBzb21lIGNsdWUgZm9yIHRoZSBlbmQgdXNlciB3aGVuIGl0IGFwcGVhcnMKLSAgICAgICAgICAgICAgIGluIHRoZWlyIG91dHB1dC4KLSAgICAgICAgICAgICAgIEEgbWVzc2FnZSBib3ggd291bGQgYmUgaGlkZGVuIGFuZCBibG9ja3MgdGhlIGFwcC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJJbnRlcm5hbCBwb3BlbiBlcnJvciAtIG5vIGFyZ3Mgc3BlY2lmaWVkXG4lc1xuIiwgdXNhZ2UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICAvKiBCdWlsZCB1cCB0aGUgY29tbWFuZC1saW5lIGZyb20gdGhlIGFyZ3MuCi0gICAgICAgQXJncyB3aXRoIGEgc3BhY2UgYXJlIHF1b3RlZCwgZXhpc3RpbmcgcXVvdGVzIGFyZSBlc2NhcGVkLgotICAgICAgIFRvIGtlZXAgdGhpbmdzIHNpbXBsZSBjYWxjdWxhdGluZyB0aGUgYnVmZmVyIHNpemUsIHdlIGFzc3VtZQotICAgICAgIGV2ZXJ5IGNoYXJhY3RlciBpcyBhIHF1b3RlIC0gaWUsIHdlIGFsbG9jYXRlIGRvdWJsZSB3aGF0IHdlIG5lZWQKLSAgICAgICBpbiB0aGUgd29yc3QgY2FzZS4gIEFzIHRoaXMgaXMgb25seSBkb3VibGUgdGhlIGNvbW1hbmQgbGluZSBwYXNzZWQKLSAgICAgICB0byB1cywgdGhlcmUgaXMgYSBnb29kIGNoYW5jZSB0aGlzIGlzIHJlYXNvbmFibHkgc21hbGwsIHNvIHRoZSB0b3RhbCAKLSAgICAgICBhbGxvY2F0aW9uIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSA8IDUxMiBieXRlcy4KLSAgICAqLwotICAgIGZvciAoaT0xO2k8YXJnYztpKyspCi0gICAgICAgIGNtZGxlbiArPSBzdHJsZW4oYXJndltpXSkqMiArIDM7IC8qIG9uZSBzcGFjZSwgbWF5YmUgMiBxdW90ZXMgKi8KLSAgICBjbWRsaW5lID0gY21kbGluZWZpbGwgPSAoY2hhciAqKW1hbGxvYyhjbWRsZW4rMSk7Ci0gICAgaWYgKGNtZGxpbmUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGZvciAoaT0xO2k8YXJnYztpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqYXJnbG9vazsKLSAgICAgICAgaW50IGJRdW90ZSA9IHN0cmNocihhcmd2W2ldLCAnICcpICE9IE5VTEw7Ci0gICAgICAgIGlmIChiUXVvdGUpCi0gICAgICAgICAgICAqY21kbGluZWZpbGwrKyA9ICciJzsKLSAgICAgICAgLyogZXNjYXBlIHF1b3RlcyAqLwotICAgICAgICBmb3IgKGFyZ2xvb2s9YXJndltpXTsqYXJnbG9vazthcmdsb29rKyspIHsKLSAgICAgICAgICAgIGlmICgqYXJnbG9vaz09JyInKQotICAgICAgICAgICAgICAgICpjbWRsaW5lZmlsbCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpjbWRsaW5lZmlsbCsrID0gKmFyZ2xvb2s7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJRdW90ZSkKLSAgICAgICAgICAgICpjbWRsaW5lZmlsbCsrID0gJyInOwotICAgICAgICAqY21kbGluZWZpbGwrKyA9ICcgJzsKLSAgICB9Ci0gICAgKmNtZGxpbmVmaWxsID0gJ1wwJzsKLQotICAgIC8qIE1ha2UgY2hpbGQgcHJvY2VzcyB1c2UgdGhpcyBhcHAncyBzdGFuZGFyZCBmaWxlcy4gKi8KLSAgICBaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mIHNpKTsKLSAgICBzaS5jYiA9IHNpemVvZiBzaTsKLSAgICBzaS5kd0ZsYWdzID0gU1RBUlRGX1VTRVNUREhBTkRMRVM7Ci0gICAgc2kuaFN0ZElucHV0ID0gR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpOwotICAgIHNpLmhTdGRPdXRwdXQgPSBHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpOwotICAgIHNpLmhTdGRFcnJvciA9IEdldFN0ZEhhbmRsZShTVERfRVJST1JfSEFORExFKTsKLQotICAgIGJSZXQgPSBDcmVhdGVQcm9jZXNzKAotICAgICAgICBOVUxMLCBjbWRsaW5lLAotICAgICAgICBOVUxMLCBOVUxMLAotICAgICAgICBUUlVFLCAwLAotICAgICAgICBOVUxMLCBOVUxMLAotICAgICAgICAmc2ksICZwaQotICAgICAgICApOwotCi0gICAgZnJlZShjbWRsaW5lKTsKLQotICAgIGlmIChiUmV0KSB7Ci0gICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KHBpLmhQcm9jZXNzLCBJTkZJTklURSkgIT0gV0FJVF9GQUlMRUQpIHsKLQkgICAgR2V0RXhpdENvZGVQcm9jZXNzKHBpLmhQcm9jZXNzLCAmZXhpdF9jb2RlKTsKLQl9Ci0gICAgICAgIENsb3NlSGFuZGxlKHBpLmhQcm9jZXNzKTsKLSAgICAgICAgQ2xvc2VIYW5kbGUocGkuaFRocmVhZCk7Ci0gICAgICAgIHJldHVybiBleGl0X2NvZGU7Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19CmRpZmYgLS1naXQgYS9QQy93aW5yZWcuYyBiL1BDL3dpbnJlZy5jCmluZGV4IDM4YTllNjkuLjc5ZjA4YTYgMTAwNjQ0Ci0tLSBhL1BDL3dpbnJlZy5jCisrKyBiL1BDL3dpbnJlZy5jCkBAIC05MzgsNyArOTM4LDcgQEAKICAgICAgICAgICAgICAgICB3Y2hhcl90ICpkYXRhID0gKHdjaGFyX3QgKilyZXREYXRhQnVmOwogICAgICAgICAgICAgICAgIGludCBsZW4gPSByZXREYXRhU2l6ZSAvIDI7CiAgICAgICAgICAgICAgICAgaW50IHMgPSBjb3VudFN0cmluZ3MoZGF0YSwgbGVuKTsKLSAgICAgICAgICAgICAgICB3Y2hhcl90ICoqc3RyID0gKHdjaGFyX3QgKiopbWFsbG9jKHNpemVvZih3Y2hhcl90ICopKnMpOworICAgICAgICAgICAgICAgIHdjaGFyX3QgKipzdHIgPSAod2NoYXJfdCAqKilQeU1lbV9NYWxsb2Moc2l6ZW9mKHdjaGFyX3QgKikqcyk7CiAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIApAQCAtOTU5LDcgKzk1OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHN0cltpbmRleF0sIGxlbikpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmcmVlKHN0cik7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShzdHIpOwogCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNzk0LDkgKzE3OTQsOSBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSEtFWVR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlIS0VZX1R5cGUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRihQeUV4Y19XaW5kb3dzRXJyb3IpOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfV2luZG93c0Vycm9yKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCB0aGUgcmVsZXZhbnQgY29uc3RhbnRzICovCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ogYi9QQ2J1aWxkL19zaGEzLnZjeHByb2oKc2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gUENidWlsZC93OXhwb3Blbi52Y3hwcm9qCnJlbmFtZSB0byBQQ2J1aWxkL19zaGEzLnZjeHByb2oKaW5kZXggZDFhZmUyMi4uZjI0Y2JkYyAxMDA2NDQKLS0tIGEvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3NoYTMudmN4cHJvagpAQCAtMzUsMTA0ICszNSw5NSBAQAogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT53OXhwb3BlbjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8UHJvamVjdEd1aWQ+ezI1NEEwQzA1LTY2OTYtNEIwOC04Q0IyLUVGN0Q1MzNBRUUwMX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9zaGEzPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgogICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KICAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CkBAIC0xNTksMTI3ICsxNTAsNjcgQEAKICAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CiAgICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KICAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgogICAgIDxNaWRsPgogICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CiAgICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KICAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHc5eHBvcGVuLmMiIC8+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc2hhM1xzaGEzbW9kdWxlLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3NsLnZjeHByb2ogYi9QQ2J1aWxkL19zc2wudmN4cHJvagppbmRleCBhZTcxZDE5Li43Mzc4Nzk0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zc2wudmN4cHJvagorKysgYi9QQ2J1aWxkL19zc2wudmN4cHJvagpAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgICA8L0NvbW1hbmQ+CiAgICAgPC9QcmVMaW5rRXZlbnQ+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CkBAIC0xNzMsNyArMTczLDcgQEAKICAgICAgIDwvQ29tbWFuZD4KICAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CkBAIC0xODUsNyArMTg1LDcgQEAKICAgICAgIDwvQ29tbWFuZD4KICAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgpAQCAtMjAwLDcgKzIwMCw3IEBACiAgICAgICA8L0NvbW1hbmQ+CiAgICAgPC9QcmVMaW5rRXZlbnQ+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CkBAIC0yMTIsNyArMjEyLDcgQEAKICAgICAgIDwvQ29tbWFuZD4KICAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICAgIDwvQ29tbWFuZD4KICAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICAgIDwvQ29tbWFuZD4KICAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KQEAgLTI1NSw3ICsyNTUsNyBAQAogICAgICAgPC9Db21tYW5kPgogICAgIDwvUHJlTGlua0V2ZW50PgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjUlCmNvcHkgZnJvbSBQQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2oKY29weSB0byBQQ2J1aWxkL190ZXN0aW1wb3J0bXVsdGlwbGUudmN4cHJvagppbmRleCBkMWFmZTIyLi44NDk4NGZmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2oKKysrIGIvUENidWlsZC9fdGVzdGltcG9ydG11bHRpcGxlLnZjeHByb2oKQEAgLTM1LDEwNCArMzUsOTUgQEAKICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+dzl4cG9wZW48L1Jvb3ROYW1lc3BhY2U+CisgICAgPFByb2plY3RHdWlkPnszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGltcG9ydG11bHRpcGxlPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgogICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KICAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CkBAIC0xNTksMTI5ICsxNTAsNjkgQEAKICAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KICAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CiAgICAgPE1pZGw+CiAgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KICAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgogICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KICAgICA8TWlkbD4KICAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgogICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KICAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3OXhwb3Blbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGltcG9ydG11bHRpcGxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qLmZpbHRlcnMKc2ltaWxhcml0eSBpbmRleCA3MiUKcmVuYW1lIGZyb20gUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMKcmVuYW1lIHRvIFBDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZGVjNjdhZC4uZGIwZDBhNiAxMDA2NDQKLS0tIGEvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9fdGVzdGltcG9ydG11bHRpcGxlLnZjeHByb2ouZmlsdGVycwpAQCAtMiwxMiArMiwxMiBAQAogPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KLSAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthYmMyZGZmZC0zZjJhLTQ3YmQtYjg5Yi0wMzE0Yzk5ZWYyMWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezFlYzM4YWQ5LTFhYmYtNGI4MC04NjI4LWFjNDNjY2JhMzI0Yn08L1VuaXF1ZUlkZW50aWZpZXI+CiAgICAgPC9GaWx0ZXI+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcdzl4cG9wZW4uYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0aW1wb3J0bXVsdGlwbGUuYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQgYi9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKaW5kZXggMzU3YjA4Yi4uODA1ZDc3YSAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF9zc2wuYmF0CisrKyBiL1BDYnVpbGQvYnVpbGRfc3NsLmJhdApAQCAtMiwxMCArMiwxMCBAQAogaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKAogICBpZiAlMSBFUVUgRGVidWcgKAogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzNfZC5kbGwgZXhpdCAxCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM0X2QuZGxsIGV4aXQgMQogICApIEVMU0UgKAogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjMzLmRsbCBleGl0IDEKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzQuZGxsIGV4aXQgMQogICApCiApCiAlSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMwpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5IGIvUENidWlsZC9idWlsZF90a2ludGVyLnB5CmluZGV4IDQxOTZjZjMuLjlmMDg2MzEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQorKysgYi9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKQEAgLTE2LDExICsxNiw3IEBACiBUSVggPSAidGl4LTguNC4zLngiCiAKIFJPT1QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIHBhciwgcGFyKSkKLSMgV2luZG93cyAyMDAwIGNvbXBhdGliaWxpdHk6IFdJTlZFUiAweDA1MDAKLSMgaHR0cDovL21zZG4yLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9hYTM4Mzc0NS5hc3B4Ci1OTUFLRSA9ICgnbm1ha2UgL25vbG9nbyAvZiAlcyAnCi0gICAgJ0NPTVBJTEVSRkxBR1M9XCItRFdJTlZFUj0weDA1MDAgLURfV0lOMzJfV0lOTlQ9MHgwNTAwIC1ETlRERElfVkVSU0lPTj1OVERESV9XSU4yS1NQNFwiICcKLSAgICAnJXMgJXMnKQorTk1BS0UgPSAoJ25tYWtlIC9ub2xvZ28gL2YgJXMgJXMgJXMnKQogCiBkZWYgbm1ha2UobWFrZWZpbGUsIGNvbW1hbmQ9IiIsICoqa3cpOgogICAgIGRlZmluZXMgPSAnICcuam9pbihrKyc9JytzdHIodikgZm9yIGssIHYgaW4ga3cuaXRlbXMoKSkKZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24uYyBiL1BDYnVpbGQva2lsbF9weXRob24uYwppbmRleCBiYjMyM2QzLi42MDQ3MzFmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMKKysrIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKICAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCi0gICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzNbX2RdLmRsbCksCisgICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzRbX2RdLmRsbCksCiAgICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgogICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCiAgICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5zbG4gYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCmluZGV4IGQ2YTAyMmYuLjk5Mzk4ZGIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5zbG4KKysrIGIvUENidWlsZC9wY2J1aWxkLnNsbgpAQCAtMTQsOCArMTQsNiBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjeHByb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmN4cHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCi1FbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3hwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjeHByb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQpAQCAtMzgsNiArMzYsOCBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3hwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0aW1wb3J0bXVsdGlwbGUiLCAiX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qIiwgInszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9Ig0KK0VuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjeHByb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2J6MiIsICJfYnoyLnZjeHByb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQpAQCAtNzQsNiArNzQsOCBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2ZyZWV6ZV9pbXBvcnRsaWIiLCAiX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiIsICJ7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfSINCiBFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc2hhMyIsICJfc2hhMy52Y3hwcm9qIiwgInsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9Ig0KK0VuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCiAJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCkBAIC0zNDIsNiArMzQ0LDIyIEBACiAJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQpAQCAtNjExLDYgKzYyOSwyMiBAQAogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezI1NEEwQzA1LTY2OTYtNEIwOC04Q0IyLUVGN0Q1MzNBRUUwMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezI1NEEwQzA1LTY2OTYtNEIwOC04Q0IyLUVGN0Q1MzNBRUUwMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezI1NEEwQzA1LTY2OTYtNEIwOC04Q0IyLUVGN0Q1MzNBRUUwMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MjU0QTBDMDUtNjY5Ni00QjA4LThDQjItRUY3RDUzM0FFRTAxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MjU0QTBDMDUtNjY5Ni00QjA4LThDQjItRUY3RDUzM0FFRTAxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MjU0QTBDMDUtNjY5Ni00QjA4LThDQjItRUY3RDUzM0FFRTAxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsyNTRBMEMwNS02Njk2LTRCMDgtOENCMi1FRjdENTMzQUVFMDF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MjU0QTBDMDUtNjY5Ni00QjA4LThDQjItRUY3RDUzM0FFRTAxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwppbmRleCA4MTU1MjMxLi42YmUwYmEyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcworKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtMTMsNyArMTMsNyBAQAogICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KLSAgICA8UHlEbGxOYW1lPnB5dGhvbjMzJChQeURlYnVnRXh0KTwvUHlEbGxOYW1lPgorICAgIDxQeURsbE5hbWU+cHl0aG9uMzQkKFB5RGVidWdFeHQpPC9QeURsbE5hbWU+CiAgICAgPFB5dGhvbkV4ZT4kKE91dERpcilweXRob24kKFB5RGVidWdFeHQpLmV4ZTwvUHl0aG9uRXhlPgogICAgIDxLaWxsUHl0aG9uRXhlPiQoT3V0RGlyKWtpbGxfcHl0aG9uJChQeURlYnVnRXh0KS5leGU8L0tpbGxQeXRob25FeGU+CiAgICAgPGV4dGVybmFsc0Rpcj4uLlwuLjwvZXh0ZXJuYWxzRGlyPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKaW5kZXggZDBhOWRlMC4uYmQxMjYyNCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24udmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCkBAIC0yNDMsNyArMjQzLDcgQEAKICAgICA8TGluaz4KICAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjEwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjQxOTQzMDQ8L1N0YWNrUmVzZXJ2ZVNpemU+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CkBAIC0zNTcsMTIgKzM1Nyw4IEBACiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Inc5eHBvcGVuLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2U5ZTBhMWY2LTAwMDktNGU4Yy1iOGY4LTFiOGY1ZDQ5YTA1OH08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagppbmRleCAyOTQ5M2UzLi40ODgyMDQ1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpAQCAtNDc1LDYgKzQ3NSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHJlcGxhY2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmgiIC8+CkBAIC01MDAsNiArNTAxLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0YXQuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfd2Vha3JlZi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhcnJheW1vZHVsZS5jIiAvPgpAQCAtNTE2LDcgKzUxOCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcb3BlcmF0b3IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX29wZXJhdG9yLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDA5YjRiYjQuLmQ3NjJmMDYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzc4LDYgKzM3OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCI+CiAgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHJlcGxhY2UuaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiPgogICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00OTgsNyArNTAxLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xvcGVyYXRvci5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX29wZXJhdG9yLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIj4KQEAgLTkxNiw2ICs5MTksOSBAQAogICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0YXQuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IDg5ZmNhM2UuLjg4NjkwZTkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTM3LDcgKzM3LDcgQEAKICAgIHJ1bm5pbmcgYSBQeXRob24gY29yZSBidWlsZGJvdCB0ZXN0IHNsYXZlOyBzZWUgU1VCUFJPSkVDVFMgYmVsb3cpCiAKIFdoZW4gdXNpbmcgdGhlIERlYnVnIHNldHRpbmcsIHRoZSBvdXRwdXQgZmlsZXMgaGF2ZSBhIF9kIGFkZGVkIHRvCi10aGVpciBuYW1lOiAgcHl0aG9uMzNfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uIEJvdGgKK3RoZWlyIG5hbWU6ICBweXRob24zNF9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gQm90aAogdGhlIGJ1aWxkIGFuZCBydCBiYXRjaCBmaWxlcyBhY2NlcHQgYSAtZCBvcHRpb24gZm9yIGRlYnVnIGJ1aWxkcy4KIAogVGhlIDMyYml0IGJ1aWxkcyBlbmQgdXAgaW4gdGhlIHNvbHV0aW9uIGZvbGRlciBQQ2J1aWxkIHdoaWxlIHRoZSB4NjQgYnVpbGRzCmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggYzI0ZDg0MC4uZGViZDg5ZSAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtMSw0ICsxLDQgQEAKLS0tIEFTREwncyBmaXZlIGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0CistLSBBU0RMJ3Mgc2l4IGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0LCBzaW5nbGV0b24KIAogbW9kdWxlIFB5dGhvbgogewpAQCAtNjksOCArNjksOCBAQAogICAgICAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCiAgICAgICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPwogICAgICAgICAgfCBCeXRlcyhieXRlcyBzKQorICAgICAgICAgfCBOYW1lQ29uc3RhbnQoc2luZ2xldG9uIHZhbHVlKQogICAgICAgICAgfCBFbGxpcHNpcwotICAgICAgICAgLS0gb3RoZXIgbGl0ZXJhbHM/IGJvb2xzPwogCiAgICAgICAgICAtLSB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2FuIGFwcGVhciBpbiBhc3NpZ25tZW50IGNvbnRleHQKICAgICAgICAgIHwgQXR0cmlidXRlKGV4cHIgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0IGN0eCkKQEAgLTEwMywxMSArMTAzLDExIEBACiAgICAgZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLSAgICBhcmd1bWVudHMgPSAoYXJnKiBhcmdzLCBpZGVudGlmaWVyPyB2YXJhcmcsIGV4cHI/IHZhcmFyZ2Fubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICBhcmcqIGt3b25seWFyZ3MsIGlkZW50aWZpZXI/IGt3YXJnLAotICAgICAgICAgICAgICAgICAgICAgZXhwcj8ga3dhcmdhbm5vdGF0aW9uLCBleHByKiBkZWZhdWx0cywKLSAgICAgICAgICAgICAgICAgICAgIGV4cHIqIGt3X2RlZmF1bHRzKQorICAgIGFyZ3VtZW50cyA9IChhcmcqIGFyZ3MsIGFyZz8gdmFyYXJnLCBhcmcqIGt3b25seWFyZ3MsIGV4cHIqIGt3X2RlZmF1bHRzLAorICAgICAgICAgICAgICAgICBhcmc/IGt3YXJnLCBleHByKiBkZWZhdWx0cykKKwogICAgIGFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKKyAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKICAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCiAgICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsLnB5IGIvUGFyc2VyL2FzZGwucHkKaW5kZXggMDhhYTA1Yi4uN2RmNzZjMCAxMDA2NDQKLS0tIGEvUGFyc2VyL2FzZGwucHkKKysrIGIvUGFyc2VyL2FzZGwucHkKQEAgLTE1OCwxMSArMTU4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCBhdHRyaWJ1dGVzLCBmb3VuZCAlcyIgJSBpZCkKICAgICAgICAgcmV0dXJuIFN1bShzdW0sIGF0dHJpYnV0ZXMpCiAKLSAgICBkZWYgcF9wcm9kdWN0KHNlbGYsIGluZm8pOgorICAgIGRlZiBwX3Byb2R1Y3RfMChzZWxmLCBpbmZvKToKICAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApICIKICAgICAgICAgXzAsIGZpZWxkcywgXzEgPSBpbmZvCiAgICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcykKIAorICAgIGRlZiBwX3Byb2R1Y3RfMShzZWxmLCBpbmZvKToKKyAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApIElkICggZmllbGRzICkgIgorICAgICAgICBfMCwgZmllbGRzLCBfMSwgaWQsIF8yLCBhdHRyaWJ1dGVzLCBfMyA9IGluZm8KKyAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgorICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQorICAgICAgICByZXR1cm4gUHJvZHVjdChmaWVsZHMsIGF0dHJpYnV0ZXMpCisKICAgICBkZWYgcF9zdW1fMChzZWxmLCBjb25zdHJ1Y3Rvcik6CiAgICAgICAgICIgc3VtIDo6PSBjb25zdHJ1Y3RvciAiCiAgICAgICAgIHJldHVybiBbY29uc3RydWN0b3JbMF1dCkBAIC0yMjIsNyArMjMwLDcgQEAKICAgICAgICAgIiBmaWVsZCA6Oj0gSWQgPyAiCiAgICAgICAgIHJldHVybiBGaWVsZCh0eXBlWzBdLCBvcHQ9VHJ1ZSkKIAotYnVpbHRpbl90eXBlcyA9ICgiaWRlbnRpZmllciIsICJzdHJpbmciLCAiYnl0ZXMiLCAiaW50IiwgIm9iamVjdCIpCitidWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJieXRlcyIsICJpbnQiLCAib2JqZWN0IiwgInNpbmdsZXRvbiIpCiAKICMgYmVsb3cgaXMgYSBjb2xsZWN0aW9uIG9mIGNsYXNzZXMgdG8gY2FwdHVyZSB0aGUgQVNUIG9mIGFuIEFTVCA6LSkKICMgbm90IHN1cmUgaWYgYW55IG9mIHRoZSBtZXRob2RzIGFyZSB1c2VmdWwgeWV0LCBidXQgSSdtIGFkZGluZyB0aGVtCkBAIC0yODksMTEgKzI5NywxNSBAQAogICAgICAgICAgICAgcmV0dXJuICJTdW0oJXMsICVzKSIgJSAoc2VsZi50eXBlcywgc2VsZi5hdHRyaWJ1dGVzKQogCiBjbGFzcyBQcm9kdWN0KEFTVCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpZWxkcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpZWxkcywgYXR0cmlidXRlcz1Ob25lKToKICAgICAgICAgc2VsZi5maWVsZHMgPSBmaWVsZHMKKyAgICAgICAgc2VsZi5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyBvciBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIlByb2R1Y3QoJXMpIiAlIHNlbGYuZmllbGRzCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlcyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICJQcm9kdWN0KCVzKSIgJSBzZWxmLmZpZWxkcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICJQcm9kdWN0KCVzLCAlcykiICUgKHNlbGYuZmllbGRzLCBzZWxmLmF0dHJpYnV0ZXMpCiAKIGNsYXNzIFZpc2l0b3JCYXNlKG9iamVjdCk6CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5CmluZGV4IGU2MWFhZTIuLmY1Y2Q4ZTQgMTAwNzU1Ci0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtMjA5LDYgKzIwOSwxMSBAQAogICAgICAgICBzZWxmLmVtaXQoInN0cnVjdCBfJShuYW1lKXMgeyIgJSBsb2NhbHMoKSwgZGVwdGgpCiAgICAgICAgIGZvciBmIGluIHByb2R1Y3QuZmllbGRzOgogICAgICAgICAgICAgc2VsZi52aXNpdChmLCBkZXB0aCArIDEpCisgICAgICAgIGZvciBmaWVsZCBpbiBwcm9kdWN0LmF0dHJpYnV0ZXM6CisgICAgICAgICAgICAjIHJ1ZGltZW50YXJ5IGF0dHJpYnV0ZSBoYW5kbGluZworICAgICAgICAgICAgdHlwZSA9IHN0cihmaWVsZC50eXBlKQorICAgICAgICAgICAgYXNzZXJ0IHR5cGUgaW4gYXNkbC5idWlsdGluX3R5cGVzLCB0eXBlCisgICAgICAgICAgICBzZWxmLmVtaXQoIiVzICVzOyIgJSAodHlwZSwgZmllbGQubmFtZSksIGRlcHRoICsgMSk7CiAgICAgICAgIHNlbGYuZW1pdCgifTsiLCBkZXB0aCkKICAgICAgICAgc2VsZi5lbWl0KCIiLCBkZXB0aCkKIApAQCAtNDkzLDcgKzQ5OCwxMSBAQAogCiAgICAgZGVmIHZpc2l0RmllbGQoc2VsZiwgZmllbGQsIG5hbWUsIHN1bT1Ob25lLCBwcm9kPU5vbmUsIGRlcHRoPTApOgogICAgICAgICBjdHlwZSA9IGdldF9jX3R5cGUoZmllbGQudHlwZSkKLSAgICAgICAgc2VsZi5lbWl0KCJpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkXyVzKSkgeyIgJSBmaWVsZC5uYW1lLCBkZXB0aCkKKyAgICAgICAgaWYgZmllbGQub3B0OgorICAgICAgICAgICAgY2hlY2sgPSAiZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfJXMpIiAlIChmaWVsZC5uYW1lLCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNoZWNrID0gIl9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF8lcykiICUgKGZpZWxkLm5hbWUsKQorICAgICAgICBzZWxmLmVtaXQoImlmICglcykgeyIgJSAoY2hlY2ssKSwgZGVwdGgsIHJlZmxvdz1GYWxzZSkKICAgICAgICAgc2VsZi5lbWl0KCJpbnQgcmVzOyIsIGRlcHRoKzEpCiAgICAgICAgIGlmIGZpZWxkLnNlcToKICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBsZW47IiwgZGVwdGgrMSkKQEAgLTU1OCw2ICs1NjcsMTMgQEAKICAgICBkZWYgdmlzaXRQcm9kdWN0KHNlbGYsIHByb2QsIG5hbWUpOgogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIG5hbWUsIDApCiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqXyVzKHZvaWQqKTsiICUgbmFtZSwgMCkKKyAgICAgICAgaWYgcHJvZC5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgZm9yIGEgaW4gcHJvZC5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKGEubmFtZSkKKyAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2F0dHJpYnV0ZXNbXSA9IHsiICUgbmFtZSwgMCkKKyAgICAgICAgICAgIGZvciBhIGluIHByb2QuYXR0cmlidXRlczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIGEubmFtZSwgMSkKKyAgICAgICAgICAgIHNlbGYuZW1pdCgifTsiLCAwKQogICAgICAgICBpZiBwcm9kLmZpZWxkczoKICAgICAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKGYubmFtZSkKQEAgLTgxOSw2ICs4MzUsNyBAQAogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKW8pOwogICAgIHJldHVybiAoUHlPYmplY3QqKW87CiB9CisjZGVmaW5lIGFzdDJvYmpfc2luZ2xldG9uIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CkBAIC04MzAsNiArODQ3LDE3IEBACiAKIC8qIENvbnZlcnNpb24gUHl0aG9uIC0+IEFTVCAqLwogCitzdGF0aWMgaW50IG9iajJhc3Rfc2luZ2xldG9uKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAob2JqICE9IFB5X05vbmUgJiYgb2JqICE9IFB5X1RydWUgJiYgb2JqICE9IFB5X0ZhbHNlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkFTVCBzaW5nbGV0b24gbXVzdCBiZSBUcnVlLCBGYWxzZSwgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X29iamVjdChQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKQpAQCAtOTA0LDYgKzkzMiwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGV4aXN0c19ub3Rfbm9uZShQeU9iamVjdCAqb2JqLCBfUHlfSWRlbnRpZmllciAqaWQpCit7CisgICAgaW50IGlzbm9uZTsKKyAgICBQeU9iamVjdCAqYXR0ciA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCBpZCk7CisgICAgaWYgKCFhdHRyKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpc25vbmUgPSBhdHRyID09IFB5X05vbmU7CisgICAgUHlfREVDUkVGKGF0dHIpOworICAgIHJldHVybiAhaXNub25lOworfQorCiAiIiIsIDAsIHJlZmxvdz1GYWxzZSkKIAogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBpbnQgaW5pdF90eXBlcyh2b2lkKSIsMCkKQEAgLTkyNSw2ICs5NjYsMTEgQEAKICAgICAgICAgc2VsZi5lbWl0KCclc190eXBlID0gbWFrZV90eXBlKCIlcyIsICZBU1RfdHlwZSwgJXMsICVkKTsnICUKICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBuYW1lLCBmaWVsZHMsIGxlbihwcm9kLmZpZWxkcykpLCAxKQogICAgICAgICBzZWxmLmVtaXQoImlmICghJXNfdHlwZSkgcmV0dXJuIDA7IiAlIG5hbWUsIDEpCisgICAgICAgIGlmIHByb2QuYXR0cmlidXRlczoKKyAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCFhZGRfYXR0cmlidXRlcyglc190eXBlLCAlc19hdHRyaWJ1dGVzLCAlZCkpIHJldHVybiAwOyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBuYW1lLCBsZW4ocHJvZC5hdHRyaWJ1dGVzKSksIDEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghYWRkX2F0dHJpYnV0ZXMoJXNfdHlwZSwgTlVMTCwgMCkpIHJldHVybiAwOyIgJSBuYW1lLCAxKQogCiAgICAgZGVmIHZpc2l0U3VtKHNlbGYsIHN1bSwgbmFtZSk6CiAgICAgICAgIHNlbGYuZW1pdCgnJXNfdHlwZSA9IG1ha2VfdHlwZSgiJXMiLCAmQVNUX3R5cGUsIE5VTEwsIDApOycgJQpAQCAtOTY4LDcgKzEwMTQsNyBAQAogICAgICAgICBzZWxmLmVtaXQoImlmICghbSkgcmV0dXJuIE5VTEw7IiwgMSkKICAgICAgICAgc2VsZi5lbWl0KCJkID0gUHlNb2R1bGVfR2V0RGljdChtKTsiLCAxKQogICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQVNUIiwgKFB5T2JqZWN0KikmQVNUX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7JywgMSkKLSAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5Q0ZfT05MWV9BU1QiLCBQeUNGX09OTFlfQVNUKSA8IDApJywgMSkKKyAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUHlDRl9PTkxZX0FTVCkgPCAwKScsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIE5VTEw7IiwgMikKICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKICAgICAgICAgICAgIHNlbGYudmlzaXQoZGZuKQpAQCAtMTA4MCw2ICsxMTI2LDEyIEBACiAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOyIsIDEpCiAgICAgICAgIGZvciBmaWVsZCBpbiBwcm9kLmZpZWxkczoKICAgICAgICAgICAgIHNlbGYudmlzaXRGaWVsZChmaWVsZCwgbmFtZSwgMSwgVHJ1ZSkKKyAgICAgICAgZm9yIGEgaW4gcHJvZC5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgc2VsZi5lbWl0KCJ2YWx1ZSA9IGFzdDJvYmpfJXMoby0+JXMpOyIgJSAoYS50eXBlLCBhLm5hbWUpLCAxKQorICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCAxKQorICAgICAgICAgICAgc2VsZi5lbWl0KCdpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkXyVzLCB2YWx1ZSkgPCAwKScgJSBhLm5hbWUsIDEpCisgICAgICAgICAgICBzZWxmLmVtaXQoJ2dvdG8gZmFpbGVkOycsIDIpCisgICAgICAgICAgICBzZWxmLmVtaXQoJ1B5X0RFQ1JFRih2YWx1ZSk7JywgMSkKICAgICAgICAgc2VsZi5mdW5jX2VuZCgpCiAKICAgICBkZWYgdmlzaXRDb25zdHJ1Y3RvcihzZWxmLCBjb25zLCBlbnVtLCBuYW1lKToKQEAgLTExNDIsNyArMTE5NCw4IEBACiAgICAgQ09ERSA9ICIiIgogUHlPYmplY3QqIFB5QVNUX21vZDJvYmoobW9kX3R5IHQpCiB7Ci0gICAgaW5pdF90eXBlcygpOworICAgIGlmICghaW5pdF90eXBlcygpKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gYXN0Mm9ial9tb2QodCk7CiB9CiAKQEAgLTExNTYsNyArMTIwOSw4IEBACiAgICAgaW50IGlzaW5zdGFuY2U7CiAgICAgYXNzZXJ0KDAgPD0gbW9kZSAmJiBtb2RlIDw9IDIpOwogCi0gICAgaW5pdF90eXBlcygpOworICAgIGlmICghaW5pdF90eXBlcygpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGFzdCwgcmVxX3R5cGVbbW9kZV0pOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKQpAQCAtMTE3NCw3ICsxMjI4LDggQEAKIAogaW50IFB5QVNUX0NoZWNrKFB5T2JqZWN0KiBvYmopCiB7Ci0gICAgaW5pdF90eXBlcygpOworICAgIGlmICghaW5pdF90eXBlcygpKQorICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKSZBU1RfdHlwZSk7CiB9CiAiIiIKZGlmZiAtLWdpdCBhL1BhcnNlci9ncmFtbWFyMS5jIGIvUGFyc2VyL2dyYW1tYXIxLmMKaW5kZXggNDQwYmE0NC4uNzEzNjQ2MyAxMDA2NDQKLS0tIGEvUGFyc2VyL2dyYW1tYXIxLmMKKysrIGIvUGFyc2VyL2dyYW1tYXIxLmMKQEAgLTMwLDcgKzMwLDcgQEAKICNlbmRpZgogfQogCi1jaGFyICoKK2NvbnN0IGNoYXIgKgogUHlHcmFtbWFyX0xhYmVsUmVwcihsYWJlbCAqbGIpCiB7CiAgICAgc3RhdGljIGNoYXIgYnVmWzEwMF07CmRpZmYgLS1naXQgYS9QYXJzZXIvbXlyZWFkbGluZS5jIGIvUGFyc2VyL215cmVhZGxpbmUuYwppbmRleCA5ZjFmYzFlLi4zY2YzMzRkIDEwMDY0NAotLS0gYS9QYXJzZXIvbXlyZWFkbGluZS5jCisrKyBiL1BhcnNlci9teXJlYWRsaW5lLmMKQEAgLTY4LDcgKzY4LDcgQEAKICAgICAgICAgKi8KICAgICAgICAgaWYgKEdldExhc3RFcnJvcigpPT1FUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkgewogICAgICAgICAgICAgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKLSAgICAgICAgICAgIHN3aXRjaCAoV2FpdEZvclNpbmdsZU9iamVjdChoSW50ZXJydXB0RXZlbnQsIDEwKSkgeworICAgICAgICAgICAgc3dpdGNoIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMCwgRkFMU0UpKSB7CiAgICAgICAgICAgICBjYXNlIFdBSVRfT0JKRUNUXzA6CiAgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBJbnRlcnJ1cHQgKi8KZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRvay5jIGIvUGFyc2VyL3BhcnNldG9rLmMKaW5kZXggN2JlYjczNS4uZDYxYmE5MiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNldG9rLmMKKysrIGIvUGFyc2VyL3BhcnNldG9rLmMKQEAgLTEzOCw3ICsxMzgsNiBAQAogICAgIGludCBzdGFydGVkID0gMDsKIAogICAgIGlmICgocHMgPSBQeVBhcnNlcl9OZXcoZywgc3RhcnQpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAibm8gbWVtIGZvciBuZXcgcGFyc2VyXG4iKTsKICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX05PTUVNOwogICAgICAgICBQeVRva2VuaXplcl9GcmVlKHRvayk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTc4LDcgKzE3Nyw2IEBACiAgICAgICAgIGxlbiA9IGIgLSBhOyAvKiBYWFggdGhpcyBtYXkgY29tcHV0ZSBOVUxMIC0gTlVMTCAqLwogICAgICAgICBzdHIgPSAoY2hhciAqKSBQeU9iamVjdF9NQUxMT0MobGVuICsgMSk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJubyBtZW0gZm9yIG5leHQgdG9rZW5cbiIpOwogICAgICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX05PTUVNOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VubWFpbi5jIGIvUGFyc2VyL3BnZW5tYWluLmMKaW5kZXggNTJiODM4MC4uYTYyNGRkMiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW5tYWluLmMKKysrIGIvUGFyc2VyL3BnZW5tYWluLmMKQEAgLTExMyw2ICsxMTMsNyBAQAogICAgICAgICBQeV9FeGl0KDEpOwogICAgIH0KICAgICBnID0gcGdlbihuKTsKKyAgICBQeU5vZGVfRnJlZShuKTsKICAgICBpZiAoZyA9PSBOVUxMKSB7CiAgICAgICAgIHByaW50ZigiQmFkIGdyYW1tYXIuXG4iKTsKICAgICAgICAgUHlfRXhpdCgxKTsKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCA1YzBiZDZlLi5jNDE2MGZjIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC00Nyw3ICs0Nyw3IEBACiAKIC8qIFRva2VuIG5hbWVzICovCiAKLWNoYXIgKl9QeVBhcnNlcl9Ub2tlbk5hbWVzW10gPSB7Citjb25zdCBjaGFyICpfUHlQYXJzZXJfVG9rZW5OYW1lc1tdID0gewogICAgICJFTkRNQVJLRVIiLAogICAgICJOQU1FIiwKICAgICAiTlVNQkVSIiwKQEAgLTY3MSw3ICs2NzEsOCBAQAogCiBzdGF0aWMgY2hhciAqCiB0cmFuc2xhdGVfbmV3bGluZXMoY29uc3QgY2hhciAqcywgaW50IGV4ZWNfaW5wdXQsIHN0cnVjdCB0b2tfc3RhdGUgKnRvaykgewotICAgIGludCBza2lwX25leHRfbGYgPSAwLCBuZWVkZWRfbGVuZ3RoID0gc3RybGVuKHMpICsgMiwgZmluYWxfbGVuZ3RoOworICAgIGludCBza2lwX25leHRfbGYgPSAwOworICAgIHNpemVfdCBuZWVkZWRfbGVuZ3RoID0gc3RybGVuKHMpICsgMiwgZmluYWxfbGVuZ3RoOwogICAgIGNoYXIgKmJ1ZiwgKmN1cnJlbnQ7CiAgICAgY2hhciBjID0gJ1wwJzsKICAgICBidWYgPSBQeU1lbV9NQUxMT0MobmVlZGVkX2xlbmd0aCk7CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCA3YmYyYzUwLi5hZmE2ZDJlIDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTI3MSw2ICsyNzEsMTAgQEAKIHN0YXRpYyBjaGFyICpCeXRlc19maWVsZHNbXT17CiAgICAgInMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKk5hbWVDb25zdGFudF90eXBlOworc3RhdGljIGNoYXIgKk5hbWVDb25zdGFudF9maWVsZHNbXT17CisgICAgInZhbHVlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFbGxpcHNpc190eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqQXR0cmlidXRlX3R5cGU7CiBfUHlfSURFTlRJRklFUihhdHRyKTsKQEAgLTQwOCwyNCArNDEyLDI0IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICphcmd1bWVudHNfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hcmd1bWVudHModm9pZCopOwogX1B5X0lERU5USUZJRVIodmFyYXJnKTsKLV9QeV9JREVOVElGSUVSKHZhcmFyZ2Fubm90YXRpb24pOwogX1B5X0lERU5USUZJRVIoa3dvbmx5YXJncyk7Ci1fUHlfSURFTlRJRklFUihrd2FyZyk7Ci1fUHlfSURFTlRJRklFUihrd2FyZ2Fubm90YXRpb24pOwotX1B5X0lERU5USUZJRVIoZGVmYXVsdHMpOwogX1B5X0lERU5USUZJRVIoa3dfZGVmYXVsdHMpOworX1B5X0lERU5USUZJRVIoa3dhcmcpOworX1B5X0lERU5USUZJRVIoZGVmYXVsdHMpOwogc3RhdGljIGNoYXIgKmFyZ3VtZW50c19maWVsZHNbXT17CiAgICAgImFyZ3MiLAogICAgICJ2YXJhcmciLAotICAgICJ2YXJhcmdhbm5vdGF0aW9uIiwKICAgICAia3dvbmx5YXJncyIsCi0gICAgImt3YXJnIiwKLSAgICAia3dhcmdhbm5vdGF0aW9uIiwKLSAgICAiZGVmYXVsdHMiLAogICAgICJrd19kZWZhdWx0cyIsCisgICAgImt3YXJnIiwKKyAgICAiZGVmYXVsdHMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFyZ190eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2FyZyh2b2lkKik7CitzdGF0aWMgY2hhciAqYXJnX2F0dHJpYnV0ZXNbXSA9IHsKKyAgICAibGluZW5vIiwKKyAgICAiY29sX29mZnNldCIsCit9OwogX1B5X0lERU5USUZJRVIoYXJnKTsKIF9QeV9JREVOVElGSUVSKGFubm90YXRpb24pOwogc3RhdGljIGNoYXIgKmFyZ19maWVsZHNbXT17CkBAIC02NzMsNiArNjc3LDcgQEAKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KilvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0KilvOwogfQorI2RlZmluZSBhc3Qyb2JqX3NpbmdsZXRvbiBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtNjg0LDYgKzY4OSwxNyBAQAogCiAvKiBDb252ZXJzaW9uIFB5dGhvbiAtPiBBU1QgKi8KIAorc3RhdGljIGludCBvYmoyYXN0X3NpbmdsZXRvbihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKG9iaiAhPSBQeV9Ob25lICYmIG9iaiAhPSBQeV9UcnVlICYmIG9iaiAhPSBQeV9GYWxzZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJBU1Qgc2luZ2xldG9uIG11c3QgYmUgVHJ1ZSwgRmFsc2UsIG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgICpvdXQgPSBvYmo7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9vYmplY3QoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmIChvYmogPT0gUHlfTm9uZSkKQEAgLTc1OCw2ICs3NzQsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBleGlzdHNfbm90X25vbmUoUHlPYmplY3QgKm9iaiwgX1B5X0lkZW50aWZpZXIgKmlkKQoreworICAgIGludCBpc25vbmU7CisgICAgUHlPYmplY3QgKmF0dHIgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgaWQpOworICAgIGlmICghYXR0cikgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaXNub25lID0gYXR0ciA9PSBQeV9Ob25lOworICAgIFB5X0RFQ1JFRihhdHRyKTsKKyAgICByZXR1cm4gIWlzbm9uZTsKK30KKwogCiBzdGF0aWMgaW50IGluaXRfdHlwZXModm9pZCkKIHsKQEAgLTg2Miw2ICs4OTEsOSBAQAogICAgIGlmICghU3RyX3R5cGUpIHJldHVybiAwOwogICAgIEJ5dGVzX3R5cGUgPSBtYWtlX3R5cGUoIkJ5dGVzIiwgZXhwcl90eXBlLCBCeXRlc19maWVsZHMsIDEpOwogICAgIGlmICghQnl0ZXNfdHlwZSkgcmV0dXJuIDA7CisgICAgTmFtZUNvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIk5hbWVDb25zdGFudCIsIGV4cHJfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfZmllbGRzLCAxKTsKKyAgICBpZiAoIU5hbWVDb25zdGFudF90eXBlKSByZXR1cm4gMDsKICAgICBFbGxpcHNpc190eXBlID0gbWFrZV90eXBlKCJFbGxpcHNpcyIsIGV4cHJfdHlwZSwgTlVMTCwgMCk7CiAgICAgaWYgKCFFbGxpcHNpc190eXBlKSByZXR1cm4gMDsKICAgICBBdHRyaWJ1dGVfdHlwZSA9IG1ha2VfdHlwZSgiQXR0cmlidXRlIiwgZXhwcl90eXBlLCBBdHRyaWJ1dGVfZmllbGRzLCAzKTsKQEAgLTEwMzksNiArMTA3MSw3IEBACiAgICAgY29tcHJlaGVuc2lvbl90eXBlID0gbWFrZV90eXBlKCJjb21wcmVoZW5zaW9uIiwgJkFTVF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFjb21wcmVoZW5zaW9uX3R5cGUpIHJldHVybiAwOworICAgIGlmICghYWRkX2F0dHJpYnV0ZXMoY29tcHJlaGVuc2lvbl90eXBlLCBOVUxMLCAwKSkgcmV0dXJuIDA7CiAgICAgZXhjZXB0aGFuZGxlcl90eXBlID0gbWFrZV90eXBlKCJleGNlcHRoYW5kbGVyIiwgJkFTVF90eXBlLCBOVUxMLCAwKTsKICAgICBpZiAoIWV4Y2VwdGhhbmRsZXJfdHlwZSkgcmV0dXJuIDA7CiAgICAgaWYgKCFhZGRfYXR0cmlidXRlcyhleGNlcHRoYW5kbGVyX3R5cGUsIGV4Y2VwdGhhbmRsZXJfYXR0cmlidXRlcywgMikpCkBAIC0xMDQ2LDE2ICsxMDc5LDIxIEBACiAgICAgRXhjZXB0SGFuZGxlcl90eXBlID0gbWFrZV90eXBlKCJFeGNlcHRIYW5kbGVyIiwgZXhjZXB0aGFuZGxlcl90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRIYW5kbGVyX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFFeGNlcHRIYW5kbGVyX3R5cGUpIHJldHVybiAwOwotICAgIGFyZ3VtZW50c190eXBlID0gbWFrZV90eXBlKCJhcmd1bWVudHMiLCAmQVNUX3R5cGUsIGFyZ3VtZW50c19maWVsZHMsIDgpOworICAgIGFyZ3VtZW50c190eXBlID0gbWFrZV90eXBlKCJhcmd1bWVudHMiLCAmQVNUX3R5cGUsIGFyZ3VtZW50c19maWVsZHMsIDYpOwogICAgIGlmICghYXJndW1lbnRzX3R5cGUpIHJldHVybiAwOworICAgIGlmICghYWRkX2F0dHJpYnV0ZXMoYXJndW1lbnRzX3R5cGUsIE5VTEwsIDApKSByZXR1cm4gMDsKICAgICBhcmdfdHlwZSA9IG1ha2VfdHlwZSgiYXJnIiwgJkFTVF90eXBlLCBhcmdfZmllbGRzLCAyKTsKICAgICBpZiAoIWFyZ190eXBlKSByZXR1cm4gMDsKKyAgICBpZiAoIWFkZF9hdHRyaWJ1dGVzKGFyZ190eXBlLCBhcmdfYXR0cmlidXRlcywgMikpIHJldHVybiAwOwogICAgIGtleXdvcmRfdHlwZSA9IG1ha2VfdHlwZSgia2V5d29yZCIsICZBU1RfdHlwZSwga2V5d29yZF9maWVsZHMsIDIpOwogICAgIGlmICgha2V5d29yZF90eXBlKSByZXR1cm4gMDsKKyAgICBpZiAoIWFkZF9hdHRyaWJ1dGVzKGtleXdvcmRfdHlwZSwgTlVMTCwgMCkpIHJldHVybiAwOwogICAgIGFsaWFzX3R5cGUgPSBtYWtlX3R5cGUoImFsaWFzIiwgJkFTVF90eXBlLCBhbGlhc19maWVsZHMsIDIpOwogICAgIGlmICghYWxpYXNfdHlwZSkgcmV0dXJuIDA7CisgICAgaWYgKCFhZGRfYXR0cmlidXRlcyhhbGlhc190eXBlLCBOVUxMLCAwKSkgcmV0dXJuIDA7CiAgICAgd2l0aGl0ZW1fdHlwZSA9IG1ha2VfdHlwZSgid2l0aGl0ZW0iLCAmQVNUX3R5cGUsIHdpdGhpdGVtX2ZpZWxkcywgMik7CiAgICAgaWYgKCF3aXRoaXRlbV90eXBlKSByZXR1cm4gMDsKKyAgICBpZiAoIWFkZF9hdHRyaWJ1dGVzKHdpdGhpdGVtX3R5cGUsIE5VTEwsIDApKSByZXR1cm4gMDsKICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xOTIzLDYgKzE5NjEsMjUgQEAKIH0KIAogZXhwcl90eQorTmFtZUNvbnN0YW50KHNpbmdsZXRvbiB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBOYW1lQ29uc3RhbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gTmFtZUNvbnN0YW50X2tpbmQ7CisgICAgcC0+di5OYW1lQ29uc3RhbnQudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIEVsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CkBAIC0yMTc3LDkgKzIyMzQsOCBAQAogfQogCiBhcmd1bWVudHNfdHkKLWFyZ3VtZW50cyhhc2RsX3NlcSAqIGFyZ3MsIGlkZW50aWZpZXIgdmFyYXJnLCBleHByX3R5IHZhcmFyZ2Fubm90YXRpb24sCi0gICAgICAgICAgYXNkbF9zZXEgKiBrd29ubHlhcmdzLCBpZGVudGlmaWVyIGt3YXJnLCBleHByX3R5IGt3YXJnYW5ub3RhdGlvbiwKLSAgICAgICAgICBhc2RsX3NlcSAqIGRlZmF1bHRzLCBhc2RsX3NlcSAqIGt3X2RlZmF1bHRzLCBQeUFyZW5hICphcmVuYSkKK2FyZ3VtZW50cyhhc2RsX3NlcSAqIGFyZ3MsIGFyZ190eSB2YXJhcmcsIGFzZGxfc2VxICoga3dvbmx5YXJncywgYXNkbF9zZXEgKgorICAgICAgICAgIGt3X2RlZmF1bHRzLCBhcmdfdHkga3dhcmcsIGFzZGxfc2VxICogZGVmYXVsdHMsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFyZ3VtZW50c190eSBwOwogICAgIHAgPSAoYXJndW1lbnRzX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKQEAgLTIxODcsMTIgKzIyNDMsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcC0+YXJncyA9IGFyZ3M7CiAgICAgcC0+dmFyYXJnID0gdmFyYXJnOwotICAgIHAtPnZhcmFyZ2Fubm90YXRpb24gPSB2YXJhcmdhbm5vdGF0aW9uOwogICAgIHAtPmt3b25seWFyZ3MgPSBrd29ubHlhcmdzOwotICAgIHAtPmt3YXJnID0ga3dhcmc7Ci0gICAgcC0+a3dhcmdhbm5vdGF0aW9uID0ga3dhcmdhbm5vdGF0aW9uOwotICAgIHAtPmRlZmF1bHRzID0gZGVmYXVsdHM7CiAgICAgcC0+a3dfZGVmYXVsdHMgPSBrd19kZWZhdWx0czsKKyAgICBwLT5rd2FyZyA9IGt3YXJnOworICAgIHAtPmRlZmF1bHRzID0gZGVmYXVsdHM7CiAgICAgcmV0dXJuIHA7CiB9CiAKQEAgLTI5NDMsNiArMjk5NywxNSBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KE5hbWVDb25zdGFudF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfc2luZ2xldG9uKG8tPnYuTmFtZUNvbnN0YW50LnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEVsbGlwc2lzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMzYxLDI5ICszNDI0LDI0IEBACiAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+dmFyYXJnKTsKKyAgICB2YWx1ZSA9IGFzdDJvYmpfYXJnKG8tPnZhcmFyZyk7CiAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CiAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YXJhcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52YXJhcmdhbm5vdGF0aW9uKTsKLSAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5rd29ubHlhcmdzLCBhc3Qyb2JqX2FyZyk7CiAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CiAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd29ubHlhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+a3dhcmcpOworICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmt3X2RlZmF1bHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmcsIHZhbHVlKSA9PSAtMSkKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3X2RlZmF1bHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+a3dhcmdhbm5vdGF0aW9uKTsKKyAgICB2YWx1ZSA9IGFzdDJvYmpfYXJnKG8tPmt3YXJnKTsKICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJnYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5kZWZhdWx0cywgYXN0Mm9ial9leHByKTsKQEAgLTMzOTEsMTEgKzM0NDksNiBAQAogICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVmYXVsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5rd19kZWZhdWx0cywgYXN0Mm9ial9leHByKTsKLSAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3X2RlZmF1bHRzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgIGdvdG8gZmFpbGVkOwotICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIGZhaWxlZDoKICAgICBQeV9YREVDUkVGKHZhbHVlKTsKQEAgLTM0MjUsNiArMzQ3OCwxNiBAQAogICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICBnb3RvIGZhaWxlZDsKICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+bGluZW5vKTsKKyAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xpbmVubywgdmFsdWUpIDwgMCkKKyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmNvbF9vZmZzZXQpOworICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29sX29mZnNldCwgdmFsdWUpIDwgMCkKKyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogZmFpbGVkOgogICAgIFB5X1hERUNSRUYodmFsdWUpOwpAQCAtMzc4MSw3ICszODQ0LDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3JldHVybnMpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9yZXR1cm5zKSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yZXR1cm5zKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC0zODY4LDcgKzM5MzEsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTM4NzgsNyArMzk0MSw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9rd2FyZ3MpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJncyk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtMzk0OCw3ICs0MDExLDcgQEAKICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTQzODYsNyArNDQ0OSw3IEBACiAgICAgICAgIGV4cHJfdHkgZXhjOwogICAgICAgICBleHByX3R5IGNhdXNlOwogCi0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZXhjKSkgeworICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfZXhjKSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9leGMpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTQzOTYsNyArNDQ1OSw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBleGMgPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY2F1c2UpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9jYXVzZSkpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY2F1c2UpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTQ1NDAsNyArNDYwMyw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0ZXN0XCIgbWlzc2luZyBmcm9tIEFzc2VydCIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9tc2cpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9tc2cpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX21zZyk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtNDU5OCw3ICs0NjYxLDcgQEAKICAgICAgICAgYXNkbF9zZXEqIG5hbWVzOwogICAgICAgICBpbnQgbGV2ZWw7CiAKLSAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9tb2R1bGUpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9tb2R1bGUpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX21vZHVsZSk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtNDYzMiw3ICs0Njk1LDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVzXCIgbWlzc2luZyBmcm9tIEltcG9ydEZyb20iKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGV2ZWwpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9sZXZlbCkpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGV2ZWwpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTUzMTksNyArNTM4Miw3IEBACiAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC01NDk3LDcgKzU1NjAsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3N0YXJhcmdzKSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtNTUwNyw3ICs1NTcwLDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJncykpIHsKKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2t3YXJncykpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC01NTg4LDYgKzU2NTEsMjggQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopTmFtZUNvbnN0YW50X3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBzaW5nbGV0b24gdmFsdWU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc2luZ2xldG9uKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIE5hbWVDb25zdGFudCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IE5hbWVDb25zdGFudCh2YWx1ZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUVsbGlwc2lzX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNTkzNyw3ICs2MDIyLDcgQEAKICAgICAgICAgZXhwcl90eSB1cHBlcjsKICAgICAgICAgZXhwcl90eSBzdGVwOwogCi0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbG93ZXIpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9sb3dlcikpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbG93ZXIpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTU5NDcsNyArNjAzMiw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsb3dlciA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF91cHBlcikpIHsKKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3VwcGVyKSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF91cHBlcik7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtNTk1Nyw3ICs2MDQyLDcgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHVwcGVyID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3N0ZXApKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9zdGVwKSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGVwKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC02NDA0LDcgKzY0ODksNyBAQAogICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdHlwZSkpIHsKKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3R5cGUpKSB7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3R5cGUpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTY0MTQsNyArNjQ5OSw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0eXBlID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC02NDY0LDEzICs2NTQ5LDExIEBACiB7CiAgICAgUHlPYmplY3QqIHRtcCA9IE5VTEw7CiAgICAgYXNkbF9zZXEqIGFyZ3M7Ci0gICAgaWRlbnRpZmllciB2YXJhcmc7Ci0gICAgZXhwcl90eSB2YXJhcmdhbm5vdGF0aW9uOworICAgIGFyZ190eSB2YXJhcmc7CiAgICAgYXNkbF9zZXEqIGt3b25seWFyZ3M7Ci0gICAgaWRlbnRpZmllciBrd2FyZzsKLSAgICBleHByX3R5IGt3YXJnYW5ub3RhdGlvbjsKLSAgICBhc2RsX3NlcSogZGVmYXVsdHM7CiAgICAgYXNkbF9zZXEqIGt3X2RlZmF1bHRzOworICAgIGFyZ190eSBrd2FyZzsKKyAgICBhc2RsX3NlcSogZGVmYXVsdHM7CiAKICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgIGludCByZXM7CkBAIC02NDk2LDI2ICs2NTc5LDE2IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhcmFyZykpIHsKKyAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfdmFyYXJnKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJnZhcmFyZywgYXJlbmEpOworICAgICAgICByZXMgPSBvYmoyYXN0X2FyZyh0bXAsICZ2YXJhcmcsIGFyZW5hKTsKICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfQ0xFQVIodG1wKTsKICAgICB9IGVsc2UgewogICAgICAgICB2YXJhcmcgPSBOVUxMOwogICAgIH0KLSAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24pKSB7Ci0gICAgICAgIGludCByZXM7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YXJhcmdhbm5vdGF0aW9uKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhcmFyZ2Fubm90YXRpb24sIGFyZW5hKTsKLSAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICB9IGVsc2UgewotICAgICAgICB2YXJhcmdhbm5vdGF0aW9uID0gTlVMTDsKLSAgICB9CiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd29ubHlhcmdzKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTY1NDAsNTAgKzY2MTMsNiBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrd29ubHlhcmdzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZykpIHsKLSAgICAgICAgaW50IHJlczsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJnKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmt3YXJnLCBhcmVuYSk7Ci0gICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAga3dhcmcgPSBOVUxMOwotICAgIH0KLSAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJnYW5ub3RhdGlvbikpIHsKLSAgICAgICAgaW50IHJlczsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJnYW5ub3RhdGlvbik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ2Fubm90YXRpb24sIGFyZW5hKTsKLSAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICB9IGVsc2UgewotICAgICAgICBrd2FyZ2Fubm90YXRpb24gPSBOVUxMOwotICAgIH0KLSAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlZmF1bHRzKSkgewotICAgICAgICBpbnQgcmVzOwotICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVmYXVsdHMpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwiZGVmYXVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICB9Ci0gICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwotICAgICAgICBkZWZhdWx0cyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKLSAgICAgICAgaWYgKGRlZmF1bHRzID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIGFzZGxfc2VxX1NFVChkZWZhdWx0cywgaSwgdmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVmYXVsdHNcIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzIik7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3X2RlZmF1bHRzKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTY2MDgsOCArNjYzNyw0MiBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrd19kZWZhdWx0c1wiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgICpvdXQgPSBhcmd1bWVudHMoYXJncywgdmFyYXJnLCB2YXJhcmdhbm5vdGF0aW9uLCBrd29ubHlhcmdzLCBrd2FyZywKLSAgICAgICAgICAgICAgICAgICAgIGt3YXJnYW5ub3RhdGlvbiwgZGVmYXVsdHMsIGt3X2RlZmF1bHRzLCBhcmVuYSk7CisgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2t3YXJnKSkgeworICAgICAgICBpbnQgcmVzOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmcpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXMgPSBvYmoyYXN0X2FyZyh0bXAsICZrd2FyZywgYXJlbmEpOworICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9DTEVBUih0bXApOworICAgIH0gZWxzZSB7CisgICAgICAgIGt3YXJnID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kZWZhdWx0cykpIHsKKyAgICAgICAgaW50IHJlczsKKyAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlZmF1bHRzKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImRlZmF1bHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgfQorICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgZGVmYXVsdHMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgIGlmIChkZWZhdWx0cyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZGVmYXVsdHMsIGksIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBQeV9DTEVBUih0bXApOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlZmF1bHRzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgKm91dCA9IGFyZ3VtZW50cyhhcmdzLCB2YXJhcmcsIGt3b25seWFyZ3MsIGt3X2RlZmF1bHRzLCBrd2FyZywgZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICBhcmVuYSk7CiAgICAgcmV0dXJuIDA7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih0bXApOwpAQCAtNjYzNCw3ICs2Njk3LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnXCIgbWlzc2luZyBmcm9tIGFyZyIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKSkgeworICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9hbm5vdGF0aW9uKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC02NzA1LDcgKzY3NjgsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lXCIgbWlzc2luZyBmcm9tIGFsaWFzIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FzbmFtZSkpIHsKKyAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfYXNuYW1lKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXNuYW1lKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTY3NDAsNyArNjgwMyw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImNvbnRleHRfZXhwclwiIG1pc3NpbmcgZnJvbSB3aXRoaXRlbSIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcHRpb25hbF92YXJzKSkgeworICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9vcHRpb25hbF92YXJzKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3B0aW9uYWxfdmFycyk7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CkBAIC02NzcwLDcgKzY4MzMsNyBAQAogICAgIGlmICghbSkgcmV0dXJuIE5VTEw7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBU1QiLCAoUHlPYmplY3QqKSZBU1RfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5Q0ZfT05MWV9BU1QiLCBQeUNGX09OTFlfQVNUKSA8IDApCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFB5Q0ZfT05MWV9BU1QpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtb2QiLCAoUHlPYmplY3QqKW1vZF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTW9kdWxlIiwgKFB5T2JqZWN0KilNb2R1bGVfdHlwZSkgPCAwKSByZXR1cm4KQEAgLTY4NTAsNiArNjkxMyw4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTdHIiLCAoUHlPYmplY3QqKVN0cl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQnl0ZXMiLCAoUHlPYmplY3QqKUJ5dGVzX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJOYW1lQ29uc3RhbnQiLCAoUHlPYmplY3QqKU5hbWVDb25zdGFudF90eXBlKSA8CisgICAgICAgIDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRWxsaXBzaXMiLCAoUHlPYmplY3QqKUVsbGlwc2lzX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBdHRyaWJ1dGUiLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKSA8IDApCkBAIC02OTQ5LDcgKzcwMTQsOCBAQAogCiBQeU9iamVjdCogUHlBU1RfbW9kMm9iaihtb2RfdHkgdCkKIHsKLSAgICBpbml0X3R5cGVzKCk7CisgICAgaWYgKCFpbml0X3R5cGVzKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBhc3Qyb2JqX21vZCh0KTsKIH0KIApAQCAtNjk2Myw3ICs3MDI5LDggQEAKICAgICBpbnQgaXNpbnN0YW5jZTsKICAgICBhc3NlcnQoMCA8PSBtb2RlICYmIG1vZGUgPD0gMik7CiAKLSAgICBpbml0X3R5cGVzKCk7CisgICAgaWYgKCFpbml0X3R5cGVzKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2UoYXN0LCByZXFfdHlwZVttb2RlXSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpCkBAIC02OTgxLDcgKzcwNDgsOCBAQAogCiBpbnQgUHlBU1RfQ2hlY2soUHlPYmplY3QqIG9iaikKIHsKLSAgICBpbml0X3R5cGVzKCk7CisgICAgaWYgKCFpbml0X3R5cGVzKCkpCisgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopJkFTVF90eXBlKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IGYzM2U0NzcuLmY5M2VkZTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTI4Myw5ICsyODMsOSBAQAogICAgICAgICBQeUZpbGVfV3JpdGVTdHJpbmcoc291cmNlX2xpbmVfc3RyLCBmX3N0ZGVycik7CiAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiXG4iLCBmX3N0ZGVycik7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgaWYgKF9QeV9EaXNwbGF5U291cmNlTGluZShmX3N0ZGVyciwgZmlsZW5hbWUsIGxpbmVubywgMikgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0Rpc3BsYXlTb3VyY2VMaW5lKGZfc3RkZXJyLCBmaWxlbmFtZSwgbGluZW5vLCAyKTsKKyAgICB9CiAgICAgUHlFcnJfQ2xlYXIoKTsKIH0KIApAQCAtODAwLDggKzgwMCw4IEBACiAgICAgICAgIGdvdG8gZXhpdDsKICAgICBpZiAobW9kdWxlX3N0ciAhPSBOVUxMKSB7CiAgICAgICAgIG1vZHVsZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZHVsZV9zdHIpOwotICAgICAgICAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQpAQCAtODIwLDYgKzgyMCw0OSBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKK2ludAorUHlFcnJfV2FybkV4cGxpY2l0Rm9ybWF0KFB5T2JqZWN0ICpjYXRlZ29yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZV9zdHIsIGludCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kdWxlX3N0ciwgUHlPYmplY3QgKnJlZ2lzdHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWVfc3RyKTsKKyAgICBpbnQgcmV0ID0gLTE7CisgICAgdmFfbGlzdCB2YXJnczsKKworICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKG1vZHVsZV9zdHIgIT0gTlVMTCkgeworICAgICAgICBtb2R1bGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2R1bGVfc3RyKTsKKyAgICAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKKyAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldCA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgdmFfZW5kKHZhcmdzKTsKK2V4aXQ6CisgICAgUHlfWERFQ1JFRihtb2R1bGUpOworICAgIFB5X1hERUNSRUYoZmlsZW5hbWUpOworICAgIHJldHVybiByZXQ7Cit9CisKIAogUHlEb2NfU1RSVkFSKHdhcm5fZG9jLAogIklzc3VlIGEgd2FybmluZywgb3IgbWF5YmUgaWdub3JlIGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4iKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc3QuYyBiL1B5dGhvbi9hc3QuYwppbmRleCA5YTBiMDY0Li5hNzJiYTIwIDEwMDY0NAotLS0gYS9QeXRob24vYXN0LmMKKysrIGIvUHl0aG9uL2FzdC5jCkBAIC0xMDksMjIgKzEwOSwxNCBAQAogewogICAgIGlmICghdmFsaWRhdGVfYXJncyhhcmdzLT5hcmdzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24pIHsKLSAgICAgICAgaWYgKCFhcmdzLT52YXJhcmcpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidmFyYXJnYW5ub3RhdGlvbiBidXQgbm8gdmFyYXJnIG9uIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24sIExvYWQpKQorICAgIGlmIChhcmdzLT52YXJhcmcgJiYgYXJncy0+dmFyYXJnLT5hbm5vdGF0aW9uCisgICAgICAgICYmICF2YWxpZGF0ZV9leHByKGFyZ3MtPnZhcmFyZy0+YW5ub3RhdGlvbiwgTG9hZCkpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhcmdzLT5rd2FyZ2Fubm90YXRpb24pIHsKLSAgICAgICAgaWYgKCFhcmdzLT5rd2FyZykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJrd2FyZ2Fubm90YXRpb24gYnV0IG5vIGt3YXJnIG9uIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGFyZ3MtPmt3YXJnYW5ub3RhdGlvbiwgTG9hZCkpCisgICAgaWYgKGFyZ3MtPmt3YXJnICYmIGFyZ3MtPmt3YXJnLT5hbm5vdGF0aW9uIAorICAgICAgICAmJiAhdmFsaWRhdGVfZXhwcihhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiwgTG9hZCkpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSA+IGFzZGxfc2VxX0xFTihhcmdzLT5hcmdzKSkgewpAQCAtMjgyLDYgKzI3NCw3IEBACiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuVHVwbGUuZWx0cywgY3R4LCAwKTsKICAgICAvKiBUaGVzZSBsYXN0IGNhc2VzIGRvbid0IGhhdmUgYW55IGNoZWNraW5nLiAqLwogICAgIGNhc2UgTmFtZV9raW5kOgorICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CiAgICAgY2FzZSBFbGxpcHNpc19raW5kOgogICAgICAgICByZXR1cm4gMTsKICAgICBkZWZhdWx0OgpAQCAtNTY3LDcgKzU2MCwxMCBAQAogICAgICAgICBpZCA9IGlkMjsKICAgICB9CiAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJmlkKTsKLSAgICBQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIGlkKTsKKyAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBpZCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gaWQ7CiB9CiAKQEAgLTkwMyw3ICs4OTksNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmFtZV9raW5kOgogICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSkgewotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIG4sIDEpKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIG4sIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsgLyogZm9yYmlkZGVuX25hbWUoKSBjYWxscyBhc3RfZXJyb3IoKSAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZS0+di5OYW1lLmN0eCA9IGN0eDsKQEAgLTk1NSw2ICs5NTEsOSBAQAogICAgICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGl0ZXJhbCI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJrZXl3b3JkIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAiRWxsaXBzaXMiOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTE5LDYgKzExMTgsNyBAQAogICAgIGlkZW50aWZpZXIgbmFtZTsKICAgICBleHByX3R5IGFubm90YXRpb24gPSBOVUxMOwogICAgIG5vZGUgKmNoOworICAgIGFyZ190eSB0bXA7CiAKICAgICBhc3NlcnQoVFlQRShuKSA9PSB0ZnBkZWYgfHwgVFlQRShuKSA9PSB2ZnBkZWYpOwogICAgIGNoID0gQ0hJTEQobiwgMCk7CkBAIC0xMTM0LDcgKzExMzQsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiBhcmcobmFtZSwgYW5ub3RhdGlvbiwgYy0+Y19hcmVuYSk7CisgICAgdG1wID0gYXJnKG5hbWUsIGFubm90YXRpb24sIGMtPmNfYXJlbmEpOworICAgIGlmICghdG1wKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRtcC0+bGluZW5vID0gTElORU5PKG4pOworICAgIHRtcC0+Y29sX29mZnNldCA9IG4tPm5fY29sX29mZnNldDsKKyAgICByZXR1cm4gdG1wOwogfQogCiAvKiByZXR1cm5zIC0xIGlmIGZhaWxlZCB0byBoYW5kbGUga2V5d29yZCBvbmx5IGFyZ3VtZW50cwpAQCAtMTIzMCwxNSArMTIzNiwxMyBAQAogICAgIGludCBpLCBqLCBrLCBucG9zYXJncyA9IDAsIG5rd29ubHlhcmdzID0gMDsKICAgICBpbnQgbnBvc2RlZmF1bHRzID0gMCwgZm91bmRfZGVmYXVsdCA9IDA7CiAgICAgYXNkbF9zZXEgKnBvc2FyZ3MsICpwb3NkZWZhdWx0cywgKmt3b25seWFyZ3MsICprd2RlZmF1bHRzOwotICAgIGlkZW50aWZpZXIgdmFyYXJnID0gTlVMTCwga3dhcmcgPSBOVUxMOworICAgIGFyZ190eSB2YXJhcmcgPSBOVUxMLCBrd2FyZyA9IE5VTEw7CiAgICAgYXJnX3R5IGFyZzsKLSAgICBleHByX3R5IHZhcmFyZ2Fubm90YXRpb24gPSBOVUxMLCBrd2FyZ2Fubm90YXRpb24gPSBOVUxMOwogICAgIG5vZGUgKmNoOwogCiAgICAgaWYgKFRZUEUobikgPT0gcGFyYW1ldGVycykgewogICAgICAgICBpZiAoTkNIKG4pID09IDIpIC8qICgpIGFzIGFyZ3VtZW50IGxpc3QgKi8KLSAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMoTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzKE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGMtPmNfYXJlbmEpOwogICAgICAgICBuID0gQ0hJTEQobiwgMSk7CiAgICAgfQogICAgIGFzc2VydChUWVBFKG4pID09IHR5cGVkYXJnc2xpc3QgfHwgVFlQRShuKSA9PSB2YXJhcmdzbGlzdCk7CkBAIC0xMzQ0LDE3ICsxMzQ4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGkgPSByZXM7IC8qIHJlcyBoYXMgbmV3IHBvc2l0aW9uIHRvIHByb2Nlc3MgKi8KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhcmFyZyA9IE5FV19JREVOVElGSUVSKENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmFyZyA9IGFzdF9mb3JfYXJnKGMsIGNoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJhcmcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIHZhcmFyZywgQ0hJTEQoY2gsIDApLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICBpZiAoTkNIKGNoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRoZXJlIGlzIGFuIGFubm90YXRpb24gb24gdGhlIHZhcmFyZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyYXJnYW5ub3RhdGlvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgMikpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJhcmdhbm5vdGF0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IE5DSChuKSAmJiAoVFlQRShDSElMRChuLCBpKSkgPT0gdGZwZGVmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBUWVBFKENISUxEKG4sIGkpKSA9PSB2ZnBkZWYpKSB7CkBAIC0xMzY5LDE3ICsxMzY2LDkgQEAKICAgICAgICAgICAgIGNhc2UgRE9VQkxFU1RBUjoKICAgICAgICAgICAgICAgICBjaCA9IENISUxEKG4sIGkrMSk7ICAvKiB0ZnBkZWYgKi8KICAgICAgICAgICAgICAgICBhc3NlcnQoVFlQRShjaCkgPT0gdGZwZGVmIHx8IFRZUEUoY2gpID09IHZmcGRlZik7Ci0gICAgICAgICAgICAgICAga3dhcmcgPSBORVdfSURFTlRJRklFUihDSElMRChjaCwgMCkpOworICAgICAgICAgICAgICAgIGt3YXJnID0gYXN0X2Zvcl9hcmcoYywgY2gpOwogICAgICAgICAgICAgICAgIGlmICgha3dhcmcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChOQ0goY2gpID4gMSkgewotICAgICAgICAgICAgICAgICAgICAvKiB0aGVyZSBpcyBhbiBhbm5vdGF0aW9uIG9uIHRoZSBrd2FyZyAqLwotICAgICAgICAgICAgICAgICAgICBrd2FyZ2Fubm90YXRpb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIDIpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFrd2FyZ2Fubm90YXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGt3YXJnLCBDSElMRChjaCwgMCksIDApKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMTM4OSw4ICsxMzc4LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gYXJndW1lbnRzKHBvc2FyZ3MsIHZhcmFyZywgdmFyYXJnYW5ub3RhdGlvbiwga3dvbmx5YXJncywga3dhcmcsCi0gICAgICAgICAgICAgICAgICAgIGt3YXJnYW5ub3RhdGlvbiwgcG9zZGVmYXVsdHMsIGt3ZGVmYXVsdHMsIGMtPmNfYXJlbmEpOworICAgIHJldHVybiBhcmd1bWVudHMocG9zYXJncywgdmFyYXJnLCBrd29ubHlhcmdzLCBrd2RlZmF1bHRzLCBrd2FyZywgcG9zZGVmYXVsdHMsIGMtPmNfYXJlbmEpOwogfQogCiBzdGF0aWMgZXhwcl90eQpAQCAtMTU1NSw4ICsxNTQzLDcgQEAKICAgICBleHByX3R5IGV4cHJlc3Npb247CiAKICAgICBpZiAoTkNIKG4pID09IDMpIHsKLSAgICAgICAgYXJncyA9IGFyZ3VtZW50cyhOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGMtPmNfYXJlbmEpOworICAgICAgICBhcmdzID0gYXJndW1lbnRzKE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGMtPmNfYXJlbmEpOwogICAgICAgICBpZiAoIWFyZ3MpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAyKSk7CkBAIC0xODE5LDExICsxODA2LDIxIEBACiAKICAgICBzd2l0Y2ggKFRZUEUoY2gpKSB7CiAgICAgY2FzZSBOQU1FOiB7Ci0gICAgICAgIC8qIEFsbCBuYW1lcyBzdGFydCBpbiBMb2FkIGNvbnRleHQsIGJ1dCBtYXkgbGF0ZXIgYmUKLSAgICAgICAgICAgY2hhbmdlZC4gKi8KLSAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBORVdfSURFTlRJRklFUihjaCk7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lOworICAgICAgICBjb25zdCBjaGFyICpzID0gU1RSKGNoKTsKKyAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzKTsKKyAgICAgICAgaWYgKGxlbiA+PSA0ICYmIGxlbiA8PSA1KSB7CisgICAgICAgICAgICBpZiAoIXN0cmNtcChzLCAiTm9uZSIpKQorICAgICAgICAgICAgICAgIHJldHVybiBOYW1lQ29uc3RhbnQoUHlfTm9uZSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgaWYgKCFzdHJjbXAocywgIlRydWUiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTmFtZUNvbnN0YW50KFB5X1RydWUsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGlmICghc3RyY21wKHMsICJGYWxzZSIpKQorICAgICAgICAgICAgICAgIHJldHVybiBOYW1lQ29uc3RhbnQoUHlfRmFsc2UsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgfQorICAgICAgICBuYW1lID0gbmV3X2lkZW50aWZpZXIocywgYyk7CiAgICAgICAgIGlmICghbmFtZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAvKiBBbGwgbmFtZXMgc3RhcnQgaW4gTG9hZCBjb250ZXh0LCBidXQgbWF5IGxhdGVyIGJlIGNoYW5nZWQuICovCiAgICAgICAgIHJldHVybiBOYW1lKG5hbWUsIExvYWQsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKQEAgLTE4NDgsMTIgKzE4NDUsMTUgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0YmFjayk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cik7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGlmIChieXRlc21vZGUpCiAgICAgICAgICAgICByZXR1cm4gQnl0ZXMoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGVsc2UKQEAgLTE4NjQsNyArMTg2NCwxMCBAQAogICAgICAgICBpZiAoIXB5bnVtKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBweW51bSk7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHB5bnVtKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihweW51bSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTnVtKHB5bnVtLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogICAgIGNhc2UgRUxMSVBTSVM6IC8qIEVsbGlwc2lzICovCkBAIC0yMDkzLDE1ICsyMDk2LDIyIEBACiAgICAgICAgIGlmIChOQ0gobikgPT0gMikKICAgICAgICAgICAgIHJldHVybiBDYWxsKGxlZnRfZXhwciwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTElORU5PKG4pLAogICAgICAgICAgICAgICAgICAgICAgICAgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfY2FsbChjLCBDSElMRChuLCAxKSwgbGVmdF9leHByKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBleHByX3R5IHRtcCA9IGFzdF9mb3JfY2FsbChjLCBDSElMRChuLCAxKSwgbGVmdF9leHByKTsKKyAgICAgICAgICAgIGlmICghdG1wKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgICAgICB0bXAtPmxpbmVubyA9IExJTkVOTyhuKTsKKyAgICAgICAgICAgIHRtcC0+Y29sX29mZnNldCA9IG4tPm5fY29sX29mZnNldDsKKyAgICAgICAgICAgIHJldHVybiB0bXA7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gRE9UICkgewogICAgICAgICBQeU9iamVjdCAqYXR0cl9pZCA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIDEpKTsKICAgICAgICAgaWYgKCFhdHRyX2lkKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBBdHRyaWJ1dGUobGVmdF9leHByLCBhdHRyX2lkLCBMb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8oQ0hJTEQobiwgMSkpLCBDSElMRChuLCAxKS0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFJFUShDSElMRChuLCAwKSwgTFNRQik7CkBAIC0yMjAyLDggKzIyMTIsNiBAQAogICAgICAgICB0bXAgPSBhc3RfZm9yX3RyYWlsZXIoYywgY2gsIGUpOwogICAgICAgICBpZiAoIXRtcCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0bXAtPmxpbmVubyA9IGUtPmxpbmVubzsKLSAgICAgICAgdG1wLT5jb2xfb2Zmc2V0ID0gZS0+Y29sX29mZnNldDsKICAgICAgICAgZSA9IHRtcDsKICAgICB9CiAgICAgaWYgKFRZUEUoQ0hJTEQobiwgTkNIKG4pIC0gMSkpID09IGZhY3RvcikgewpAQCAtMjg0NiwxMyArMjg1NCwxOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBzdHIgPSB1bmk7CiAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJnN0cik7Ci0gICAgICAgICAgICAgICAgUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBzdHIpOworICAgICAgICAgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzKHN0ciwgTlVMTCwgYy0+Y19hcmVuYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTVEFSOgogICAgICAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIioiKTsKLSAgICAgICAgICAgIFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgc3RyKTsKKyAgICAgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYWxpYXMoc3RyLCBOVUxMLCBjLT5jX2FyZW5hKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggYjA3ZWU4ZS4uZmIzYWJhZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTU3LDYgKzU3LDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBmdW5jID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsgLyogQmV0dGVyIGJlIGNhbGxhYmxlICovCisgICAgaWYgKCFQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9fY2xhc3NfXzogZnVuYyBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNTUsNyArMTYwLDkgQEAKICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNlbGwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIG5zLCBOVUxMKTsKKyAgICBjZWxsID0gUHlFdmFsX0V2YWxDb2RlRXgoUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSwgUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKSwgbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYykpOwogICAgIGlmIChjZWxsICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKm1hcmdzOwogICAgICAgICBtYXJncyA9IFB5VHVwbGVfUGFjaygzLCBuYW1lLCBiYXNlcywgbnMpOwpAQCAtNjU5LDcgKzY2Niw3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcywgQVNUIG9yIGNvZGUiLCAmY2YpOworICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoY21kLCAiY29tcGlsZSIsICJzdHJpbmcsIGJ5dGVzIG9yIEFTVCIsICZjZik7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xMzIyLDI2ICsxMzI5LDM1IEBACiBtaW5fbWF4KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICp2LCAqaXQsICppdGVtLCAqdmFsLCAqbWF4aXRlbSwgKm1heHZhbCwgKmtleWZ1bmM9TlVMTDsKKyAgICBQeU9iamVjdCAqZW1wdHl0dXBsZSwgKmRlZmF1bHR2YWwgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2V5IiwgImRlZmF1bHQiLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpuYW1lID0gb3AgPT0gUHlfTFQgPyAibWluIiA6ICJtYXgiOworICAgIGNvbnN0IGludCBwb3NpdGlvbmFsID0gUHlUdXBsZV9TaXplKGFyZ3MpID4gMTsKKyAgICBpbnQgcmV0OwogCi0gICAgaWYgKFB5VHVwbGVfU2l6ZShhcmdzKSA+IDEpCisgICAgaWYgKHBvc2l0aW9uYWwpCiAgICAgICAgIHYgPSBhcmdzOwogICAgIGVsc2UgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAoY2hhciAqKW5hbWUsIDEsIDEsICZ2KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSkgewotICAgICAgICBrZXlmdW5jID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoa3dkcywgImtleSIpOwotICAgICAgICBpZiAoUHlEaWN0X1NpemUoa3dkcykhPTEgIHx8ICBrZXlmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIiVzKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCIsIG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKGtleWZ1bmMpOworICAgIGVtcHR5dHVwbGUgPSBQeVR1cGxlX05ldygwKTsKKyAgICBpZiAoZW1wdHl0dXBsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXQgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZW1wdHl0dXBsZSwga3dkcywgInwkT08iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXlmdW5jLCAmZGVmYXVsdHZhbCk7CisgICAgUHlfREVDUkVGKGVtcHR5dHVwbGUpOworICAgIGlmICghcmV0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChwb3NpdGlvbmFsICYmIGRlZmF1bHR2YWwgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGEgZGVmYXVsdCBmb3IgJXMoKSB3aXRoIG11bHRpcGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50cyIsIG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodik7CiAgICAgaWYgKGl0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfWERFQ1JFRihrZXlmdW5jKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMzg1LDE0ICsxNDAxLDE4IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gRmFpbF9pdDsKICAgICBpZiAobWF4dmFsID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJXMoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UiLCBuYW1lKTsKICAgICAgICAgYXNzZXJ0KG1heGl0ZW0gPT0gTlVMTCk7CisgICAgICAgIGlmIChkZWZhdWx0dmFsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0dmFsKTsKKyAgICAgICAgICAgIG1heGl0ZW0gPSBkZWZhdWx0dmFsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVzKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlIiwgbmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9ERUNSRUYobWF4dmFsKTsKICAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYoa2V5ZnVuYyk7CiAgICAgcmV0dXJuIG1heGl0ZW07CiAKIEZhaWxfaXRfaXRlbV9hbmRfdmFsOgpAQCAtMTQwMyw3ICsxNDIzLDYgQEAKICAgICBQeV9YREVDUkVGKG1heHZhbCk7CiAgICAgUHlfWERFQ1JFRihtYXhpdGVtKTsKICAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYoa2V5ZnVuYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE1MzEsNiArMTU1MCwxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgewogICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKKyAgICAgICAgaWYgKGZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImxvc3Qgc3lzLnN0ZG91dCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICAvKiBzeXMuc3Rkb3V0IG1heSBiZSBOb25lIHdoZW4gRklMRSogc3Rkb3V0IGlzbid0IGNvbm5lY3RlZCAqLwogICAgICAgICBpZiAoZmlsZSA9PSBQeV9Ob25lKQogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xODEwLDEwICsxODM0LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9yb3VuZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqcm91bmRfc3RyID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmRpZ2l0cyA9IE5VTEw7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJudW1iZXIiLCAibmRpZ2l0cyIsIDB9OwotICAgIFB5T2JqZWN0ICpudW1iZXIsICpyb3VuZDsKKyAgICBQeU9iamVjdCAqbnVtYmVyLCAqcm91bmQsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX19yb3VuZF9fKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86cm91bmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm51bWJlciwgJm5kaWdpdHMpKQpAQCAtMTgyNCwyNCArMTg0OCwyMSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHJvdW5kX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHJvdW5kX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3JvdW5kX18iKTsKLSAgICAgICAgaWYgKHJvdW5kX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcm91bmQgPSBfUHlUeXBlX0xvb2t1cChQeV9UWVBFKG51bWJlciksIHJvdW5kX3N0cik7CisgICAgcm91bmQgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICZQeUlkX19fcm91bmRfXyk7CiAgICAgaWYgKHJvdW5kID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ0eXBlICUuMTAwcyBkb2Vzbid0IGRlZmluZSBfX3JvdW5kX18gbWV0aG9kIiwKLSAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobnVtYmVyKS0+dHBfbmFtZSk7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUgJS4xMDBzIGRvZXNuJ3QgZGVmaW5lIF9fcm91bmRfXyBtZXRob2QiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobnVtYmVyKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChuZGlnaXRzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24ocm91bmQsICJPIiwgbnVtYmVyKTsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhyb3VuZCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHJvdW5kLCAiT08iLCBudW1iZXIsIG5kaWdpdHMpOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHJvdW5kLCBuZGlnaXRzLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYocm91bmQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihyb3VuZF9kb2MsCkBAIC0yNDEzLDYgKzI0MzQsMTIgQEAKIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKQogewogICAgIFB5T2JqZWN0ICptb2QsICpkaWN0LCAqZGVidWc7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZpbHRlcl9UeXBlKSA8IDAgfHwKKyAgICAgICAgUHlUeXBlX1JlYWR5KCZQeU1hcF9UeXBlKSA8IDAgfHwKKyAgICAgICAgUHlUeXBlX1JlYWR5KCZQeVppcF9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgbW9kID0gUHlNb2R1bGVfQ3JlYXRlKCZidWlsdGluc21vZHVsZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbC5jIGIvUHl0aG9uL2NldmFsLmMKaW5kZXggZDI4YWUyYi4uNDY1ODc2YiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsLmMKKysrIGIvUHl0aG9uL2NldmFsLmMKQEAgLTE0Miw4ICsxNDIsNiBAQAogCiAjZGVmaW5lIE5BTUVfRVJST1JfTVNHIFwKICAgICAibmFtZSAnJS4yMDBzJyBpcyBub3QgZGVmaW5lZCIKLSNkZWZpbmUgR0xPQkFMX05BTUVfRVJST1JfTVNHIFwKLSAgICAiZ2xvYmFsIG5hbWUgJyUuMjAwcycgaXMgbm90IGRlZmluZWQiCiAjZGVmaW5lIFVOQk9VTkRMT0NBTF9FUlJPUl9NU0cgXAogICAgICJsb2NhbCB2YXJpYWJsZSAnJS4yMDBzJyByZWZlcmVuY2VkIGJlZm9yZSBhc3NpZ25tZW50IgogI2RlZmluZSBVTkJPVU5ERlJFRV9FUlJPUl9NU0cgXApAQCAtMzY0LDI5ICszNjIsMjggQEAKICAgICBkcm9wX2dpbCh0c3RhdGUpOwogfQogCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIFB5T1NfQWZ0ZXJGb3JrIHRvIGVuc3VyZSB0aGF0IG5ld2x5Ci0gICBjcmVhdGVkIGNoaWxkIHByb2Nlc3NlcyBkb24ndCBob2xkIGxvY2tzIHJlZmVycmluZyB0byB0aHJlYWRzIHdoaWNoCi0gICBhcmUgbm90IHJ1bm5pbmcgaW4gdGhlIGNoaWxkIHByb2Nlc3MuICAoVGhpcyBjb3VsZCBhbHNvIGJlIGRvbmUgdXNpbmcKLSAgIHB0aHJlYWRfYXRmb3JrIG1lY2hhbmlzbSwgYXQgbGVhc3QgZm9yIHRoZSBwdGhyZWFkcyBpbXBsZW1lbnRhdGlvbi4pICovCisvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIFB5T1NfQWZ0ZXJGb3JrIHRvIGRlc3Ryb3kgYWxsIHRocmVhZHMgd2hpY2ggYXJlCisgKiBub3QgcnVubmluZyBpbiB0aGUgY2hpbGQgcHJvY2VzcywgYW5kIGNsZWFyIGludGVybmFsIGxvY2tzIHdoaWNoIG1pZ2h0IGJlCisgKiBoZWxkIGJ5IHRob3NlIHRocmVhZHMuIChUaGlzIGNvdWxkIGFsc28gYmUgZG9uZSB1c2luZyBwdGhyZWFkX2F0Zm9yaworICogbWVjaGFuaXNtLCBhdCBsZWFzdCBmb3IgdGhlIHB0aHJlYWRzIGltcGxlbWVudGF0aW9uLikgKi8KIAogdm9pZAogUHlFdmFsX1JlSW5pdFRocmVhZHModm9pZCkKIHsKICAgICBfUHlfSURFTlRJRklFUihfYWZ0ZXJfZm9yayk7CiAgICAgUHlPYmplY3QgKnRocmVhZGluZywgKnJlc3VsdDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKIAogICAgIGlmICghZ2lsX2NyZWF0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlY3JlYXRlX2dpbCgpOwogICAgIHBlbmRpbmdfbG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICB0YWtlX2dpbCh0c3RhdGUpOworICAgIHRha2VfZ2lsKGN1cnJlbnRfdHN0YXRlKTsKICAgICBtYWluX3RocmVhZCA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKIAogICAgIC8qIFVwZGF0ZSB0aGUgdGhyZWFkaW5nIG1vZHVsZSB3aXRoIHRoZSBuZXcgc3RhdGUuCiAgICAgICovCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSAgICB0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyh0c3RhdGUtPmludGVycC0+bW9kdWxlcywKKyAgICB0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyhjdXJyZW50X3RzdGF0ZS0+aW50ZXJwLT5tb2R1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aHJlYWRpbmciKTsKICAgICBpZiAodGhyZWFkaW5nID09IE5VTEwpIHsKICAgICAgICAgLyogdGhyZWFkaW5nIG5vdCBpbXBvcnRlZCAqLwpAQCAtMzk5LDYgKzM5Niw5IEBACiAgICAgZWxzZQogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICBQeV9ERUNSRUYodGhyZWFkaW5nKTsKKworICAgIC8qIERlc3Ryb3kgYWxsIHRocmVhZHMgZXhjZXB0IHRoZSBjdXJyZW50IG9uZSAqLworICAgIF9QeVRocmVhZFN0YXRlX0RlbGV0ZUV4Y2VwdChjdXJyZW50X3RzdGF0ZSk7CiB9CiAKICNlbHNlCkBAIC03NDIsNyArNzQyLDYgQEAKIGVudW0gd2h5X2NvZGUgewogICAgICAgICBXSFlfTk9UID0gICAgICAgMHgwMDAxLCAvKiBObyBlcnJvciAqLwogICAgICAgICBXSFlfRVhDRVBUSU9OID0gMHgwMDAyLCAvKiBFeGNlcHRpb24gb2NjdXJyZWQgKi8KLSAgICAgICAgV0hZX1JFUkFJU0UgPSAgIDB4MDAwNCwgLyogRXhjZXB0aW9uIHJlLXJhaXNlZCBieSAnZmluYWxseScgKi8KICAgICAgICAgV0hZX1JFVFVSTiA9ICAgIDB4MDAwOCwgLyogJ3JldHVybicgc3RhdGVtZW50ICovCiAgICAgICAgIFdIWV9CUkVBSyA9ICAgICAweDAwMTAsIC8qICdicmVhaycgc3RhdGVtZW50ICovCiAgICAgICAgIFdIWV9DT05USU5VRSA9ICAweDAwMjAsIC8qICdjb250aW51ZScgc3RhdGVtZW50ICovCkBAIC03NTMsNyArNzUyLDcgQEAKIHN0YXRpYyB2b2lkIHNhdmVfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIHN3YXBfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7Ci1zdGF0aWMgZW51bSB3aHlfY29kZSBkb19yYWlzZShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgZG9fcmFpc2UoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVucGFja19pdGVyYWJsZShQeU9iamVjdCAqLCBpbnQsIGludCwgUHlPYmplY3QgKiopOwogCiAvKiBSZWNvcmRzIHdoZXRoZXIgdHJhY2luZyBpcyBvbiBmb3IgYW55IHRocmVhZC4gIENvdW50cyB0aGUgbnVtYmVyIG9mCkBAIC03OTgsMTIgKzc5Nyw2IEBACiAgICAgcmVnaXN0ZXIgaW50IG9wY29kZTsgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlICovCiAgICAgcmVnaXN0ZXIgaW50IG9wYXJnOyAgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlIGFyZ3VtZW50LCBpZiBhbnkgKi8KICAgICByZWdpc3RlciBlbnVtIHdoeV9jb2RlIHdoeTsgLyogUmVhc29uIGZvciBibG9jayBzdGFjayB1bndpbmQgKi8KLSAgICByZWdpc3RlciBpbnQgZXJyOyAgICAgICAgICAgLyogRXJyb3Igc3RhdHVzIC0tIG5vbnplcm8gaWYgZXJyb3IgKi8KLSAgICByZWdpc3RlciBQeU9iamVjdCAqeDsgICAgICAgLyogUmVzdWx0IG9iamVjdCAtLSBOVUxMIGlmIGVycm9yICovCi0gICAgcmVnaXN0ZXIgUHlPYmplY3QgKnY7ICAgICAgIC8qIFRlbXBvcmFyeSBvYmplY3RzIHBvcHBlZCBvZmYgc3RhY2sgKi8KLSAgICByZWdpc3RlciBQeU9iamVjdCAqdzsKLSAgICByZWdpc3RlciBQeU9iamVjdCAqdTsKLSAgICByZWdpc3RlciBQeU9iamVjdCAqdDsKICAgICByZWdpc3RlciBQeU9iamVjdCAqKmZhc3Rsb2NhbHMsICoqZnJlZXZhcnM7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7ICAgICAgICAgICAgLyogUmV0dXJuIHZhbHVlICovCiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKQEAgLTExODksNiArMTE4Miw3IEBACiAgICAgc3RhY2tfcG9pbnRlciA9IGYtPmZfc3RhY2t0b3A7CiAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgIT0gTlVMTCk7CiAgICAgZi0+Zl9zdGFja3RvcCA9IE5VTEw7ICAgICAgIC8qIHJlbWFpbnMgTlVMTCB1bmxlc3MgeWllbGQgc3VzcGVuZHMgZnJhbWUgKi8KKyAgICBmLT5mX2V4ZWN1dGluZyA9IDE7CiAKICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SICYmICF0aHJvd2ZsYWcpIHsKICAgICAgICAgaWYgKGYtPmZfZXhjX3R5cGUgIT0gTlVMTCAmJiBmLT5mX2V4Y190eXBlICE9IFB5X05vbmUpIHsKQEAgLTEyMDYsMTQgKzEyMDAsMTYgQEAKICNlbmRpZgogCiAgICAgd2h5ID0gV0hZX05PVDsKLSAgICBlcnIgPSAwOwotICAgIHggPSBQeV9Ob25lOyAgICAgICAgLyogTm90IGEgcmVmZXJlbmNlLCBqdXN0IGFueXRoaW5nIG5vbi1OVUxMICovCi0gICAgdyA9IE5VTEw7CiAKLSAgICBpZiAodGhyb3dmbGFnKSB7IC8qIHN1cHBvcnQgZm9yIGdlbmVyYXRvci50aHJvdygpICovCi0gICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047Ci0gICAgICAgIGdvdG8gb25fZXJyb3I7Ci0gICAgfQorICAgIGlmICh0aHJvd2ZsYWcpIC8qIHN1cHBvcnQgZm9yIGdlbmVyYXRvci50aHJvdygpICovCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIFB5RXZhbF9FdmFsRnJhbWVFeCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9vc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworI2VuZGlmCiAKICAgICBmb3IgKDs7KSB7CiAjaWZkZWYgV0lUSF9UU0MKQEAgLTEyMzUsNiArMTIzMSw3IEBACiAjZW5kaWYKICAgICAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgPj0gZi0+Zl92YWx1ZXN0YWNrKTsgLyogZWxzZSB1bmRlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPD0gY28tPmNvX3N0YWNrc2l6ZSk7ICAvKiBlbHNlIG92ZXJmbG93ICovCisgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKICAgICAgICAgLyogRG8gcGVyaW9kaWMgdGhpbmdzLiAgRG9pbmcgdGhpcyBldmVyeSB0aW1lIHRocm91Z2gKICAgICAgICAgICAgdGhlIGxvb3Agd291bGQgYWRkIHRvbyBtdWNoIG92ZXJoZWFkLCBzbyB3ZSBkbyBpdApAQCAtMTI1NSwxMCArMTI1Miw4IEBACiAgICAgICAgICAgICB0aWNrZWQgPSAxOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJnBlbmRpbmdjYWxsc190b19kbykpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uX2Vycm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICNpZmRlZiBXSVRIX1RIUkVBRAogICAgICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfZHJvcF9yZXF1ZXN0KSkgewpAQCAtMTI3NiwxMyArMTI3MSwxMiBAQAogI2VuZGlmCiAgICAgICAgICAgICAvKiBDaGVjayBmb3IgYXN5bmNocm9ub3VzIGV4Y2VwdGlvbnMuICovCiAgICAgICAgICAgICBpZiAodHN0YXRlLT5hc3luY19leGMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHggPSB0c3RhdGUtPmFzeW5jX2V4YzsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gdHN0YXRlLT5hc3luY19leGM7CiAgICAgICAgICAgICAgICAgdHN0YXRlLT5hc3luY19leGMgPSBOVUxMOwogICAgICAgICAgICAgICAgIFVOU0lHTkFMX0FTWU5DX0VYQygpOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoeCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047Ci0gICAgICAgICAgICAgICAgZ290byBvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKGV4Yyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMjkzLDYgKzEyODcsNyBAQAogCiAgICAgICAgIGlmIChfUHlfVHJhY2luZ1Bvc3NpYmxlICYmCiAgICAgICAgICAgICB0c3RhdGUtPmNfdHJhY2VmdW5jICE9IE5VTEwgJiYgIXRzdGF0ZS0+dHJhY2luZykgeworICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIC8qIHNlZSBtYXliZV9jYWxsX2xpbmVfdHJhY2UKICAgICAgICAgICAgICAgIGZvciBleHBvc2l0b3J5IGNvbW1lbnRzICovCiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKQEAgLTEzMDcsMTAgKzEzMDIsOSBAQAogICAgICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBmLT5mX3N0YWNrdG9wOwogICAgICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgaWYgKGVycikKICAgICAgICAgICAgICAgICAvKiB0cmFjZSBmdW5jdGlvbiByYWlzZWQgYW4gZXhjZXB0aW9uICovCi0gICAgICAgICAgICAgICAgZ290byBvbl9lcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAKICAgICAgICAgLyogRXh0cmFjdCBvcGNvZGUgYW5kIGFyZ3VtZW50ICovCkBAIC0xMzU3LDg3ICsxMzUxLDk5IEBACiAgICAgICAgIFRBUkdFVChOT1ApCiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAKLSAgICAgICAgVEFSR0VUKExPQURfRkFTVCkKLSAgICAgICAgICAgIHggPSBHRVRMT0NBTChvcGFyZyk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOworICAgICAgICBUQVJHRVQoTE9BRF9GQVNUKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBHRVRMT0NBTChvcGFyZyk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX1VuYm91bmRMb2NhbEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOQk9VTkRMT0NBTF9FUlJPUl9NU0csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HZXRJdGVtKGNvLT5jb192YXJuYW1lcywgb3BhcmcpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IsCi0gICAgICAgICAgICAgICAgVU5CT1VORExPQ0FMX0VSUk9SX01TRywKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dldEl0ZW0oY28tPmNvX3Zhcm5hbWVzLCBvcGFyZykpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgVEFSR0VUKExPQURfQ09OU1QpCi0gICAgICAgICAgICB4ID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgIFBVU0goeCk7CisgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICAgICAgUFVTSCh2YWx1ZSk7CiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoTE9BRF9DT05TVCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBQVVNIKHZhbHVlKTsKKyAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKKyAgICAgICAgfQogCiAgICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhTVE9SRV9GQVNUKTsKLSAgICAgICAgVEFSR0VUKFNUT1JFX0ZBU1QpCi0gICAgICAgICAgICB2ID0gUE9QKCk7Ci0gICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgdik7CisgICAgICAgIFRBUkdFVChTVE9SRV9GQVNUKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQT1AoKTsKKyAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCB2YWx1ZSk7CiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoUE9QX1RPUCkKLSAgICAgICAgICAgIHYgPSBQT1AoKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgVEFSR0VUKFBPUF9UT1ApIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFBPUCgpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChST1RfVFdPKQotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgdyA9IFNFQ09ORCgpOwotICAgICAgICAgICAgU0VUX1RPUCh3KTsKLSAgICAgICAgICAgIFNFVF9TRUNPTkQodik7CisgICAgICAgIFRBUkdFVChST1RfVFdPKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG9wID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqc2Vjb25kID0gU0VDT05EKCk7CisgICAgICAgICAgICBTRVRfVE9QKHNlY29uZCk7CisgICAgICAgICAgICBTRVRfU0VDT05EKHRvcCk7CiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoUk9UX1RIUkVFKQotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgdyA9IFNFQ09ORCgpOwotICAgICAgICAgICAgeCA9IFRISVJEKCk7Ci0gICAgICAgICAgICBTRVRfVE9QKHcpOwotICAgICAgICAgICAgU0VUX1NFQ09ORCh4KTsKLSAgICAgICAgICAgIFNFVF9USElSRCh2KTsKKyAgICAgICAgVEFSR0VUKFJPVF9USFJFRSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnRvcCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnNlY29uZCA9IFNFQ09ORCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnRoaXJkID0gVEhJUkQoKTsKKyAgICAgICAgICAgIFNFVF9UT1Aoc2Vjb25kKTsKKyAgICAgICAgICAgIFNFVF9TRUNPTkQodGhpcmQpOworICAgICAgICAgICAgU0VUX1RISVJEKHRvcCk7CiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoRFVQX1RPUCkKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICAgICAgICAgIFBVU0godik7CisgICAgICAgIFRBUkdFVChEVVBfVE9QKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG9wID0gVE9QKCk7CisgICAgICAgICAgICBQeV9JTkNSRUYodG9wKTsKKyAgICAgICAgICAgIFBVU0godG9wKTsKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChEVVBfVE9QX1RXTykKLSAgICAgICAgICAgIHggPSBUT1AoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgIHcgPSBTRUNPTkQoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih3KTsKKyAgICAgICAgVEFSR0VUKERVUF9UT1BfVFdPKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG9wID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqc2Vjb25kID0gU0VDT05EKCk7CisgICAgICAgICAgICBQeV9JTkNSRUYodG9wKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWNvbmQpOwogICAgICAgICAgICAgU1RBQ0tBREooMik7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgU0VUX1NFQ09ORCh3KTsKKyAgICAgICAgICAgIFNFVF9UT1AodG9wKTsKKyAgICAgICAgICAgIFNFVF9TRUNPTkQoc2Vjb25kKTsKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChVTkFSWV9QT1NJVElWRSkKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9Qb3NpdGl2ZSh2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRBUkdFVChVTkFSWV9QT1NJVElWRSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlOdW1iZXJfUG9zaXRpdmUodmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChVTkFSWV9ORUdBVElWRSkKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRBUkdFVChVTkFSWV9ORUdBVElWRSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlOdW1iZXJfTmVnYXRpdmUodmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChVTkFSWV9OT1QpCi0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9Jc1RydWUodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIFRBUkdFVChVTkFSWV9OT1QpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFRPUCgpOworICAgICAgICAgICAgaW50IGVyciA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGVyciA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X1RydWUpOwogICAgICAgICAgICAgICAgIFNFVF9UT1AoUHlfVHJ1ZSk7CkBAIC0xNDUwLDQxNiArMTQ1Niw0NjAgQEAKICAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgU1RBQ0tBREooLTEpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFVOQVJZX0lOVkVSVCkKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9JbnZlcnQodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoVU5BUllfSU5WRVJUKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JbnZlcnQodmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChCSU5BUllfUE9XRVIpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfUG93ZXIodiwgdywgUHlfTm9uZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoQklOQVJZX1BPV0VSKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhwID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX1Bvd2VyKGJhc2UsIGV4cCwgUHlfTm9uZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhwKTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChCSU5BUllfTVVMVElQTFkpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfTXVsdGlwbHkodiwgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoQklOQVJZX01VTFRJUExZKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZWZ0ID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlOdW1iZXJfTXVsdGlwbHkobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChCSU5BUllfVFJVRV9ESVZJREUpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfVHJ1ZURpdmlkZSh2LCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRBUkdFVChCSU5BUllfVFJVRV9ESVZJREUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaXZpc29yID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZGl2aWRlbmQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpxdW90aWVudCA9IFB5TnVtYmVyX1RydWVEaXZpZGUoZGl2aWRlbmQsIGRpdmlzb3IpOworICAgICAgICAgICAgUHlfREVDUkVGKGRpdmlkZW5kKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkaXZpc29yKTsKKyAgICAgICAgICAgIFNFVF9UT1AocXVvdGllbnQpOworICAgICAgICAgICAgaWYgKHF1b3RpZW50ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoQklOQVJZX0ZMT09SX0RJVklERSkKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9GbG9vckRpdmlkZSh2LCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRBUkdFVChCSU5BUllfRkxPT1JfRElWSURFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVvdGllbnQgPSBQeU51bWJlcl9GbG9vckRpdmlkZShkaXZpZGVuZCwgZGl2aXNvcik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGl2aWRlbmQpOworICAgICAgICAgICAgUHlfREVDUkVGKGRpdmlzb3IpOworICAgICAgICAgICAgU0VUX1RPUChxdW90aWVudCk7CisgICAgICAgICAgICBpZiAocXVvdGllbnQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChCSU5BUllfTU9EVUxPKQotICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpKQotICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfRm9ybWF0KHYsIHcpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHggPSBQeU51bWJlcl9SZW1haW5kZXIodiwgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoQklOQVJZX01PRFVMTykgeworICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlzb3IgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaXZpZGVuZCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5VW5pY29kZV9DaGVja0V4YWN0KGRpdmlkZW5kKSA/CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zvcm1hdChkaXZpZGVuZCwgZGl2aXNvcikgOgorICAgICAgICAgICAgICAgIFB5TnVtYmVyX1JlbWFpbmRlcihkaXZpZGVuZCwgZGl2aXNvcik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGl2aXNvcik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGl2aWRlbmQpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEJJTkFSWV9BREQpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikgJiYKLSAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVja0V4YWN0KHcpKSB7Ci0gICAgICAgICAgICAgICAgeCA9IHVuaWNvZGVfY29uY2F0ZW5hdGUodiwgdywgZiwgbmV4dF9pbnN0cik7CisgICAgICAgIFRBUkdFVChCSU5BUllfQUREKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZWZ0ID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqc3VtOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGxlZnQpICYmCisgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChyaWdodCkpIHsKKyAgICAgICAgICAgICAgICBzdW0gPSB1bmljb2RlX2NvbmNhdGVuYXRlKGxlZnQsIHJpZ2h0LCBmLCBuZXh0X2luc3RyKTsKICAgICAgICAgICAgICAgICAvKiB1bmljb2RlX2NvbmNhdGVuYXRlIGNvbnN1bWVkIHRoZSByZWYgdG8gdiAqLwotICAgICAgICAgICAgICAgIGdvdG8gc2tpcF9kZWNyZWZfdng7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB4ID0gUHlOdW1iZXJfQWRkKHYsIHcpOworICAgICAgICAgICAgICAgIHN1bSA9IFB5TnVtYmVyX0FkZChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1Aoc3VtKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCSU5BUllfU1VCVFJBQ1QpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaWZmID0gUHlOdW1iZXJfU3VidHJhY3QobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFNFVF9UT1AoZGlmZik7CisgICAgICAgICAgICBpZiAoZGlmZiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJJTkFSWV9TVUJTQ1IpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb250YWluZXIgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9HZXRJdGVtKGNvbnRhaW5lciwgc3ViKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjb250YWluZXIpOworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQklOQVJZX0xTSElGVCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX0xzaGlmdChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmlnaHQpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJJTkFSWV9SU0hJRlQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9Sc2hpZnQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCSU5BUllfQU5EKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZWZ0ID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlOdW1iZXJfQW5kKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQklOQVJZX1hPUikgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX1hvcihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmlnaHQpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJJTkFSWV9PUikgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX09yKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoTElTVF9BUFBFTkQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGlzdCA9IFBFRUsob3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQobGlzdCwgdik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgc2tpcF9kZWNyZWZfdng6Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQUkVESUNUKEpVTVBfQUJTT0xVVEUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChCSU5BUllfU1VCVFJBQ1QpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfU3VidHJhY3Qodiwgdyk7CisgICAgICAgIFRBUkdFVChTRVRfQUREKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnNldCA9IHN0YWNrX3BvaW50ZXJbLW9wYXJnXTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBlcnIgPSBQeVNldF9BZGQoc2V0LCB2KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFBSRURJQ1QoSlVNUF9BQlNPTFVURSk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEJJTkFSWV9TVUJTQ1IpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbSh2LCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRBUkdFVChJTlBMQUNFX1BPV0VSKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhwID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX0luUGxhY2VQb3dlcihiYXNlLCBleHAsIFB5X05vbmUpOworICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4cCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoQklOQVJZX0xTSElGVCkKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9Mc2hpZnQodiwgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoSU5QTEFDRV9NVUxUSVBMWSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseShsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmlnaHQpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEJJTkFSWV9SU0hJRlQpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfUnNoaWZ0KHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgVEFSR0VUKElOUExBQ0VfVFJVRV9ESVZJREUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaXZpc29yID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZGl2aWRlbmQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpxdW90aWVudCA9IFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlKGRpdmlkZW5kLCBkaXZpc29yKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkaXZpZGVuZCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGl2aXNvcik7CisgICAgICAgICAgICBTRVRfVE9QKHF1b3RpZW50KTsKKyAgICAgICAgICAgIGlmIChxdW90aWVudCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEJJTkFSWV9BTkQpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfQW5kKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgVEFSR0VUKElOUExBQ0VfRkxPT1JfRElWSURFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVvdGllbnQgPSBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUoZGl2aWRlbmQsIGRpdmlzb3IpOworICAgICAgICAgICAgUHlfREVDUkVGKGRpdmlkZW5kKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkaXZpc29yKTsKKyAgICAgICAgICAgIFNFVF9UT1AocXVvdGllbnQpOworICAgICAgICAgICAgaWYgKHF1b3RpZW50ID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoQklOQVJZX1hPUikKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9Yb3Iodiwgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoSU5QTEFDRV9NT0RVTE8pIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptb2QgPSBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKG1vZCk7CisgICAgICAgICAgICBpZiAobW9kID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoQklOQVJZX09SKQotICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IFB5TnVtYmVyX09yKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoTElTVF9BUFBFTkQpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gUEVFSyhvcGFyZyk7Ci0gICAgICAgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgaWYgKGVyciA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUFJFRElDVChKVU1QX0FCU09MVVRFKTsKLSAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgVEFSR0VUKFNFVF9BREQpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gc3RhY2tfcG9pbnRlclstb3BhcmddOwotICAgICAgICAgICAgZXJyID0gUHlTZXRfQWRkKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgaWYgKGVyciA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUFJFRElDVChKVU1QX0FCU09MVVRFKTsKLSAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgVEFSR0VUKElOUExBQ0VfUE9XRVIpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZVBvd2VyKHYsIHcsIFB5X05vbmUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoSU5QTEFDRV9NVUxUSVBMWSkKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHkodiwgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIFRBUkdFVChJTlBMQUNFX1RSVUVfRElWSURFKQotICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoSU5QTEFDRV9GTE9PUl9ESVZJREUpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoSU5QTEFDRV9NT0RVTE8pCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcih2LCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgVEFSR0VUKElOUExBQ0VfQUREKQotICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpICYmCi0gICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdCh3KSkgewotICAgICAgICAgICAgICAgIHggPSB1bmljb2RlX2NvbmNhdGVuYXRlKHYsIHcsIGYsIG5leHRfaW5zdHIpOworICAgICAgICBUQVJHRVQoSU5QTEFDRV9BREQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdW07CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QocmlnaHQpKSB7CisgICAgICAgICAgICAgICAgc3VtID0gdW5pY29kZV9jb25jYXRlbmF0ZShsZWZ0LCByaWdodCwgZiwgbmV4dF9pbnN0cik7CiAgICAgICAgICAgICAgICAgLyogdW5pY29kZV9jb25jYXRlbmF0ZSBjb25zdW1lZCB0aGUgcmVmIHRvIHYgKi8KLSAgICAgICAgICAgICAgICBnb3RvIHNraXBfZGVjcmVmX3Y7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZUFkZCh2LCB3KTsKKyAgICAgICAgICAgICAgICBzdW0gPSBQeU51bWJlcl9JblBsYWNlQWRkKGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGVmdCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgc2tpcF9kZWNyZWZfdjoKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBQeV9ERUNSRUYocmlnaHQpOworICAgICAgICAgICAgU0VUX1RPUChzdW0pOworICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKElOUExBQ0VfU1VCVFJBQ1QpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0KHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgVEFSR0VUKElOUExBQ0VfU1VCVFJBQ1QpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpkaWZmID0gUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKGRpZmYpOworICAgICAgICAgICAgaWYgKGRpZmYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChJTlBMQUNFX0xTSElGVCkKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9JblBsYWNlTHNoaWZ0KHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgVEFSR0VUKElOUExBQ0VfTFNISUZUKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZWZ0ID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlOdW1iZXJfSW5QbGFjZUxzaGlmdChsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmlnaHQpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKElOUExBQ0VfUlNISUZUKQotICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IFB5TnVtYmVyX0luUGxhY2VSc2hpZnQodiwgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoSU5QTEFDRV9SU0hJRlQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JblBsYWNlUnNoaWZ0KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoSU5QTEFDRV9BTkQpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZUFuZCh2LCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIFRBUkdFVChJTlBMQUNFX0FORCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX0luUGxhY2VBbmQobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChJTlBMQUNFX1hPUikKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBQeU51bWJlcl9JblBsYWNlWG9yKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgVEFSR0VUKElOUExBQ0VfWE9SKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZWZ0ID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlOdW1iZXJfSW5QbGFjZVhvcihsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGVmdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmlnaHQpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKElOUExBQ0VfT1IpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlOdW1iZXJfSW5QbGFjZU9yKHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgVEFSR0VUKElOUExBQ0VfT1IpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JblBsYWNlT3IobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9TVUJTQ1IpCi0gICAgICAgICAgICB3ID0gVE9QKCk7Ci0gICAgICAgICAgICB2ID0gU0VDT05EKCk7Ci0gICAgICAgICAgICB1ID0gVEhJUkQoKTsKKyAgICAgICAgVEFSR0VUKFNUT1JFX1NVQlNDUikgeworICAgICAgICAgICAgUHlPYmplY3QgKnN1YiA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRhaW5lciA9IFNFQ09ORCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBUSElSRCgpOworICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIFNUQUNLQURKKC0zKTsKICAgICAgICAgICAgIC8qIHZbd10gPSB1ICovCi0gICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9TZXRJdGVtKHYsIHcsIHUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0SXRlbShjb250YWluZXIsIHN1Yiwgdik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBpZiAoZXJyID09IDApIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjb250YWluZXIpOworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoREVMRVRFX1NVQlNDUikKLSAgICAgICAgICAgIHcgPSBUT1AoKTsKLSAgICAgICAgICAgIHYgPSBTRUNPTkQoKTsKKyAgICAgICAgVEFSR0VUKERFTEVURV9TVUJTQ1IpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb250YWluZXIgPSBTRUNPTkQoKTsKKyAgICAgICAgICAgIGludCBlcnI7CiAgICAgICAgICAgICBTVEFDS0FESigtMik7CiAgICAgICAgICAgICAvKiBkZWwgdlt3XSAqLwotICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfRGVsSXRlbSh2LCB3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIGlmIChlcnIgPT0gMCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfRGVsSXRlbShjb250YWluZXIsIHN1Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoY29udGFpbmVyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFBSSU5UX0VYUFIpCi0gICAgICAgICAgICB2ID0gUE9QKCk7Ci0gICAgICAgICAgICB3ID0gUHlTeXNfR2V0T2JqZWN0KCJkaXNwbGF5aG9vayIpOwotICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgeworICAgICAgICBUQVJHRVQoUFJJTlRfRVhQUikgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqaG9vayA9IFB5U3lzX0dldE9iamVjdCgiZGlzcGxheWhvb2siKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgICAgICBpZiAoaG9vayA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvc3Qgc3lzLmRpc3BsYXlob29rIik7Ci0gICAgICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgICAgICAgICAgeCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVyciA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgeCA9IFB5VHVwbGVfUGFjaygxLCB2KTsKLSAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBlcnIgPSAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnIgPT0gMCkgewotICAgICAgICAgICAgICAgIHcgPSBQeUV2YWxfQ2FsbE9iamVjdCh3LCB4KTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHcpOwotICAgICAgICAgICAgICAgIGlmICh3ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhob29rLCB2YWx1ZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAogI2lmZGVmIENBU0VfVE9PX0JJRwogICAgICAgICBkZWZhdWx0OiBzd2l0Y2ggKG9wY29kZSkgewogI2VuZGlmCi0gICAgICAgIFRBUkdFVChSQUlTRV9WQVJBUkdTKQotICAgICAgICAgICAgdiA9IHcgPSBOVUxMOworICAgICAgICBUQVJHRVQoUkFJU0VfVkFSQVJHUykgeworICAgICAgICAgICAgUHlPYmplY3QgKmNhdXNlID0gTlVMTCwgKmV4YyA9IE5VTEw7CiAgICAgICAgICAgICBzd2l0Y2ggKG9wYXJnKSB7CiAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgdiA9IFBPUCgpOyAvKiBjYXVzZSAqLworICAgICAgICAgICAgICAgIGNhdXNlID0gUE9QKCk7IC8qIGNhdXNlICovCiAgICAgICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICAgICAgdyA9IFBPUCgpOyAvKiBleGMgKi8KKyAgICAgICAgICAgICAgICBleGMgPSBQT1AoKTsgLyogZXhjICovCiAgICAgICAgICAgICBjYXNlIDA6IC8qIEZhbGx0aHJvdWdoICovCi0gICAgICAgICAgICAgICAgd2h5ID0gZG9fcmFpc2Uodywgdik7CisgICAgICAgICAgICAgICAgaWYgKGRvX3JhaXNlKGV4YywgY2F1c2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIFJBSVNFX1ZBUkFSR1Mgb3BhcmciKTsKLSAgICAgICAgICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFNUT1JFX0xPQ0FMUykKLSAgICAgICAgICAgIHggPSBQT1AoKTsKLSAgICAgICAgICAgIHYgPSBmLT5mX2xvY2FsczsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodik7Ci0gICAgICAgICAgICBmLT5mX2xvY2FscyA9IHg7Ci0gICAgICAgICAgICBESVNQQVRDSCgpOwotCi0gICAgICAgIFRBUkdFVChSRVRVUk5fVkFMVUUpCisgICAgICAgIFRBUkdFVChSRVRVUk5fVkFMVUUpIHsKICAgICAgICAgICAgIHJldHZhbCA9IFBPUCgpOwogICAgICAgICAgICAgd2h5ID0gV0hZX1JFVFVSTjsKICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkKLSAgICAgICAgICAgIHUgPSBQT1AoKTsKLSAgICAgICAgICAgIHggPSBUT1AoKTsKLSAgICAgICAgICAgIC8qIHNlbmQgdSB0byB4ICovCi0gICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh4KSkgewotICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXgsIHUpOworICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNpZXZlciA9IFRPUCgpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2lldmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRSh4KS0+dHBfaXRlcm5leHQoeCk7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNpZXZlciktPnRwX2l0ZXJuZXh0KHJlY2lldmVyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoeCwgJlB5SWRfc2VuZCwgIk8iLCB1KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZWNpZXZlciwgJlB5SWRfc2VuZCwgIk8iLCB2KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsOwotICAgICAgICAgICAgICAgIHggPSBQT1AoKTsgLyogUmVtb3ZlIGl0ZXIgZnJvbSBzdGFjayAqLwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgICAgICBlcnIgPSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB4ID0gdmFsOwotICAgICAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlY2lldmVyKTsKKyAgICAgICAgICAgICAgICBTRVRfVE9QKHZhbCk7CisgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIHggcmVtYWlucyBvbiBzdGFjaywgcmV0dmFsIGlzIHZhbHVlIHRvIGJlIHlpZWxkZWQgKi8KICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwpAQCAtMTg2NywzOSArMTkxNywzOCBAQAogICAgICAgICAgICAgLyogYW5kIHJlcGVhdC4uLiAqLwogICAgICAgICAgICAgZi0+Zl9sYXN0aS0tOwogICAgICAgICAgICAgZ290byBmYXN0X3lpZWxkOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFlJRUxEX1ZBTFVFKQorICAgICAgICBUQVJHRVQoWUlFTERfVkFMVUUpIHsKICAgICAgICAgICAgIHJldHZhbCA9IFBPUCgpOwogICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CiAgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoUE9QX0VYQ0VQVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeVRyeUJsb2NrICpiID0gUHlGcmFtZV9CbG9ja1BvcChmKTsKLSAgICAgICAgICAgICAgICBpZiAoYi0+Yl90eXBlICE9IEVYQ0VQVF9IQU5ETEVSKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3BwZWQgYmxvY2sgaXMgbm90IGFuIGV4Y2VwdCBoYW5kbGVyIik7Ci0gICAgICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBVTldJTkRfRVhDRVBUX0hBTkRMRVIoYik7CisgICAgICAgIFRBUkdFVChQT1BfRVhDRVBUKSB7CisgICAgICAgICAgICBQeVRyeUJsb2NrICpiID0gUHlGcmFtZV9CbG9ja1BvcChmKTsKKyAgICAgICAgICAgIGlmIChiLT5iX3R5cGUgIT0gRVhDRVBUX0hBTkRMRVIpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3BwZWQgYmxvY2sgaXMgbm90IGFuIGV4Y2VwdCBoYW5kbGVyIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFVOV0lORF9FWENFUFRfSEFORExFUihiKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoUE9QX0JMT0NLKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5VHJ5QmxvY2sgKmIgPSBQeUZyYW1lX0Jsb2NrUG9wKGYpOwotICAgICAgICAgICAgICAgIFVOV0lORF9CTE9DSyhiKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgVEFSR0VUKFBPUF9CTE9DSykgeworICAgICAgICAgICAgUHlUcnlCbG9jayAqYiA9IFB5RnJhbWVfQmxvY2tQb3AoZik7CisgICAgICAgICAgICBVTldJTkRfQkxPQ0soYik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKICAgICAgICAgUFJFRElDVEVEKEVORF9GSU5BTExZKTsKLSAgICAgICAgVEFSR0VUKEVORF9GSU5BTExZKQotICAgICAgICAgICAgdiA9IFBPUCgpOwotICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgewotICAgICAgICAgICAgICAgIHdoeSA9IChlbnVtIHdoeV9jb2RlKSBQeUxvbmdfQVNfTE9ORyh2KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQod2h5ICE9IFdIWV9ZSUVMRCk7CisgICAgICAgIFRBUkdFVChFTkRfRklOQUxMWSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0YXR1cyA9IFBPUCgpOworICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgd2h5ID0gKGVudW0gd2h5X2NvZGUpIFB5TG9uZ19BU19MT05HKHN0YXR1cyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHdoeSAhPSBXSFlfWUlFTEQgJiYgd2h5ICE9IFdIWV9FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIGlmICh3aHkgPT0gV0hZX1JFVFVSTiB8fAogICAgICAgICAgICAgICAgICAgICB3aHkgPT0gV0hZX0NPTlRJTlVFKQogICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQT1AoKTsKQEAgLTE5MTIsMjQ4ICsxOTYxLDI4MCBAQAogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoYi0+Yl90eXBlID09IEVYQ0VQVF9IQU5ETEVSKTsKICAgICAgICAgICAgICAgICAgICAgVU5XSU5EX0VYQ0VQVF9IQU5ETEVSKGIpOwogICAgICAgICAgICAgICAgICAgICB3aHkgPSBXSFlfTk9UOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2sodikpIHsKLSAgICAgICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgdSA9IFBPUCgpOwotICAgICAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUodiwgdywgdSk7Ci0gICAgICAgICAgICAgICAgd2h5ID0gV0hZX1JFUkFJU0U7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlbHNlIGlmIChQeUV4Y2VwdGlvbkNsYXNzX0NoZWNrKHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gUE9QKCk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRiID0gUE9QKCk7CisgICAgICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShzdGF0dXMsIGV4YywgdGIpOworICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CisgICAgICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHYgIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICInZmluYWxseScgcG9wcyBiYWQgZXhjZXB0aW9uIik7Ci0gICAgICAgICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdHVzKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoTE9BRF9CVUlMRF9DTEFTUykKLSAgICAgICAgeworICAgICAgICBUQVJHRVQoTE9BRF9CVUlMRF9DTEFTUykgewogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19idWlsZF9jbGFzc19fKTsKIAorICAgICAgICAgICAgUHlPYmplY3QgKmJjOwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7Ci0gICAgICAgICAgICAgICAgeCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19fYnVpbGRfY2xhc3NfXyk7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGJjID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19idWlsZF9jbGFzc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYmMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYmMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmJ1aWxkX2NsYXNzX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fYnVpbGRfY2xhc3NfXyk7CiAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkX2NsYXNzX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCBidWlsZF9jbGFzc19zdHIpOwotICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBiYyA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgYnVpbGRfY2xhc3Nfc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoYmMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2J1aWxkX2NsYXNzX18gbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFBVU0goYmMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9OQU1FKQotICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIHYgPSBQT1AoKTsKLSAgICAgICAgICAgIGlmICgoeCA9IGYtPmZfbG9jYWxzKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KHgpKQotICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbSh4LCB3LCB2KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oeCwgdywgdik7CisgICAgICAgIFRBUkdFVChTVE9SRV9OQU1FKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbnMgPSBmLT5mX2xvY2FsczsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBpZiAobnMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCB3aGVuIHN0b3JpbmcgJVIiLCBuYW1lKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgaWYgKGVyciA9PSAwKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCB3aGVuIHN0b3JpbmcgJVIiLCB3KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG5zKSkKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShucywgbmFtZSwgdik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0SXRlbShucywgbmFtZSwgdik7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoREVMRVRFX05BTUUpCi0gICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgaWYgKCh4ID0gZi0+Zl9sb2NhbHMpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGVyciA9IFB5T2JqZWN0X0RlbEl0ZW0oeCwgdykpICE9IDApCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBUQVJHRVQoREVMRVRFX05BTUUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgUHlPYmplY3QgKm5zID0gZi0+Zl9sb2NhbHM7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgaWYgKG5zID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgd2hlbiBkZWxldGluZyAlUiIsIG5hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyB3aGVuIGRlbGV0aW5nICVSIiwgdyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X0RlbEl0ZW0obnMsIG5hbWUpOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKICAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFVOUEFDS19TRVFVRU5DRSk7Ci0gICAgICAgIFRBUkdFVChVTlBBQ0tfU0VRVUVOQ0UpCi0gICAgICAgICAgICB2ID0gUE9QKCk7Ci0gICAgICAgICAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHYpICYmCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRSh2KSA9PSBvcGFyZykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqaXRlbXMgPSBcCi0gICAgICAgICAgICAgICAgICAgICgoUHlUdXBsZU9iamVjdCAqKXYpLT5vYl9pdGVtOworICAgICAgICBUQVJHRVQoVU5QQUNLX1NFUVVFTkNFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc2VxID0gUE9QKCksICppdGVtLCAqKml0ZW1zOworICAgICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChzZXEpICYmCisgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShzZXEpID09IG9wYXJnKSB7CisgICAgICAgICAgICAgICAgaXRlbXMgPSAoKFB5VHVwbGVPYmplY3QgKilzZXEpLT5vYl9pdGVtOwogICAgICAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIHcgPSBpdGVtc1tvcGFyZ107Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih3KTsKLSAgICAgICAgICAgICAgICAgICAgUFVTSCh3KTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW29wYXJnXTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgICAgICBQVVNIKGl0ZW0pOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoUHlMaXN0X0NoZWNrRXhhY3QodikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9TSVpFKHYpID09IG9wYXJnKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKippdGVtcyA9IFwKLSAgICAgICAgICAgICAgICAgICAgKChQeUxpc3RPYmplY3QgKil2KS0+b2JfaXRlbTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoUHlMaXN0X0NoZWNrRXhhY3Qoc2VxKSAmJgorICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX1NJWkUoc2VxKSA9PSBvcGFyZykgeworICAgICAgICAgICAgICAgIGl0ZW1zID0gKChQeUxpc3RPYmplY3QgKilzZXEpLT5vYl9pdGVtOwogICAgICAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIHcgPSBpdGVtc1tvcGFyZ107Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih3KTsKLSAgICAgICAgICAgICAgICAgICAgUFVTSCh3KTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW29wYXJnXTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgICAgICBQVVNIKGl0ZW0pOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAodW5wYWNrX2l0ZXJhYmxlKHYsIG9wYXJnLCAtMSwKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodW5wYWNrX2l0ZXJhYmxlKHNlcSwgb3BhcmcsIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfcG9pbnRlciArIG9wYXJnKSkgewogICAgICAgICAgICAgICAgIFNUQUNLQURKKG9wYXJnKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogdW5wYWNrX2l0ZXJhYmxlKCkgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLwotICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFVOUEFDS19FWCkKLSAgICAgICAgeworICAgICAgICBUQVJHRVQoVU5QQUNLX0VYKSB7CiAgICAgICAgICAgICBpbnQgdG90YWxhcmdzID0gMSArIChvcGFyZyAmIDB4RkYpICsgKG9wYXJnID4+IDgpOwotICAgICAgICAgICAgdiA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnNlcSA9IFBPUCgpOwogCi0gICAgICAgICAgICBpZiAodW5wYWNrX2l0ZXJhYmxlKHYsIG9wYXJnICYgMHhGRiwgb3BhcmcgPj4gOCwKKyAgICAgICAgICAgIGlmICh1bnBhY2tfaXRlcmFibGUoc2VxLCBvcGFyZyAmIDB4RkYsIG9wYXJnID4+IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgKyB0b3RhbGFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgc3RhY2tfcG9pbnRlciArPSB0b3RhbGFyZ3M7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFNUT1JFX0FUVFIpCi0gICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgdSA9IFNFQ09ORCgpOworICAgICAgICBUQVJHRVQoU1RPUkVfQVRUUikgeworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CisgICAgICAgICAgICBQeU9iamVjdCAqb3duZXIgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gU0VDT05EKCk7CisgICAgICAgICAgICBpbnQgZXJyOwogICAgICAgICAgICAgU1RBQ0tBREooLTIpOwotICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0QXR0cih2LCB3LCB1KTsgLyogdi53ID0gdSAqLworICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0QXR0cihvd25lciwgbmFtZSwgdik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICBpZiAoZXJyID09IDApIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvd25lcik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoREVMRVRFX0FUVFIpCi0gICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgdiA9IFBPUCgpOwotICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0QXR0cih2LCB3LCAoUHlPYmplY3QgKilOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGVsIHYudyAqLworICAgICAgICBUQVJHRVQoREVMRVRFX0FUVFIpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgUHlPYmplY3QgKm93bmVyID0gUE9QKCk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0QXR0cihvd25lciwgbmFtZSwgKFB5T2JqZWN0ICopTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob3duZXIpOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKFNUT1JFX0dMT0JBTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGYtPmZfZ2xvYmFscywgbmFtZSwgdik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9HTE9CQUwpCi0gICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgdiA9IFBPUCgpOwotICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3LCB2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGlmIChlcnIgPT0gMCkgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIFRBUkdFVChERUxFVEVfR0xPQkFMKQotICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIGlmICgoZXJyID0gUHlEaWN0X0RlbEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KSkgIT0gMCkKKyAgICAgICAgVEFSR0VUKERFTEVURV9HTE9CQUwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGVyciA9IFB5RGljdF9EZWxJdGVtKGYtPmZfZ2xvYmFscywgbmFtZSk7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKLSAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLCBHTE9CQUxfTkFNRV9FUlJPUl9NU0csIHcpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgVEFSR0VUKExPQURfTkFNRSkKLSAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICBpZiAoKHYgPSBmLT5mX2xvY2FscykgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyB3aGVuIGxvYWRpbmcgJVIiLCB3KTsKLSAgICAgICAgICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsIE5BTUVfRVJST1JfTVNHLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KHYpKSB7Ci0gICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKHYsIHcpOwotICAgICAgICAgICAgICAgIFB5X1hJTkNSRUYoeCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKExPQURfTkFNRSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CisgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzID0gZi0+Zl9sb2NhbHM7CisgICAgICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgICAgIGlmIChsb2NhbHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyB3aGVuIGxvYWRpbmcgJVIiLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGxvY2FscykpIHsKKyAgICAgICAgICAgICAgICB2ID0gUHlEaWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9YSU5DUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0odiwgdyk7Ci0gICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0tleUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGxvY2FscywgbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKLSAgICAgICAgICAgICAgICBQeV9YSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICB2ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9YSU5DUkVGKHYpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCB3KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSCh4KTsKKyAgICAgICAgICAgIFBVU0godik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKExPQURfR0xPQkFMKQotICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKKyAgICAgICAgVEFSR0VUKExPQURfR0xPQkFMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2OwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfZ2xvYmFscykKICAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgewotICAgICAgICAgICAgICAgIHggPSBfUHlEaWN0X0xvYWRHbG9iYWwoKFB5RGljdE9iamVjdCAqKWYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICB2ID0gX1B5RGljdF9Mb2FkR2xvYmFsKChQeURpY3RPYmplY3QgKilmLT5mX2dsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEaWN0T2JqZWN0ICopZi0+Zl9idWlsdGlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcpOwotICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCi0gICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKLSAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSCh4KTsKKyAgICAgICAgICAgIFBVU0godik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKERFTEVURV9GQVNUKQotICAgICAgICAgICAgeCA9IEdFVExPQ0FMKG9wYXJnKTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKKyAgICAgICAgVEFSR0VUKERFTEVURV9GQVNUKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IEdFVExPQ0FMKG9wYXJnKTsKKyAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgTlVMTCk7CiAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KQEAgLTIxNjIsMjUyICsyMjQzLDMxMCBAQAogICAgICAgICAgICAgICAgIFVOQk9VTkRMT0NBTF9FUlJPUl9NU0csCiAgICAgICAgICAgICAgICAgUHlUdXBsZV9HZXRJdGVtKGNvLT5jb192YXJuYW1lcywgb3BhcmcpCiAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChERUxFVEVfREVSRUYpCi0gICAgICAgICAgICB4ID0gZnJlZXZhcnNbb3BhcmddOwotICAgICAgICAgICAgaWYgKFB5Q2VsbF9HRVQoeCkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5Q2VsbF9TZXQoeCwgTlVMTCk7CisgICAgICAgIFRBUkdFVChERUxFVEVfREVSRUYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsID0gZnJlZXZhcnNbb3BhcmddOworICAgICAgICAgICAgaWYgKFB5Q2VsbF9HRVQoY2VsbCkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVyciA9IC0xOwogICAgICAgICAgICAgZm9ybWF0X2V4Y191bmJvdW5kKGNvLCBvcGFyZyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoTE9BRF9DTE9TVVJFKQotICAgICAgICAgICAgeCA9IGZyZWV2YXJzW29wYXJnXTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgVEFSR0VUKExPQURfREVSRUYpCi0gICAgICAgICAgICB4ID0gZnJlZXZhcnNbb3BhcmddOwotICAgICAgICAgICAgdyA9IFB5Q2VsbF9HZXQoeCk7Ci0gICAgICAgICAgICBpZiAodyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUFVTSCh3KTsKLSAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgICAgICBmb3JtYXRfZXhjX3VuYm91bmQoY28sIG9wYXJnKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIFRBUkdFVChTVE9SRV9ERVJFRikKLSAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgIHggPSBmcmVldmFyc1tvcGFyZ107Ci0gICAgICAgICAgICBQeUNlbGxfU2V0KHgsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICBUQVJHRVQoTE9BRF9DTE9TVVJFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IGZyZWV2YXJzW29wYXJnXTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihjZWxsKTsKKyAgICAgICAgICAgIFBVU0goY2VsbCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFKQotICAgICAgICAgICAgeCA9IFB5VHVwbGVfTmV3KG9wYXJnKTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgLS1vcGFyZyA+PSAwOykgewotICAgICAgICAgICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oeCwgb3BhcmcsIHcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQVVNIKHgpOwotICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIFRBUkdFVChMT0FEX0NMQVNTREVSRUYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCAqdmFsdWUsICpsb2NhbHMgPSBmLT5mX2xvY2FsczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4OworICAgICAgICAgICAgYXNzZXJ0KGxvY2Fscyk7CisgICAgICAgICAgICBhc3NlcnQob3BhcmcgPj0gUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpKTsKKyAgICAgICAgICAgIGlkeCA9IG9wYXJnIC0gUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpOworICAgICAgICAgICAgYXNzZXJ0KGlkeCA+PSAwICYmIGlkeCA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKSk7CisgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fZnJlZXZhcnMsIGlkeCk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobG9jYWxzKSkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gUHlEaWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIFRBUkdFVChCVUlMRF9MSVNUKQotICAgICAgICAgICAgeCA9ICBQeUxpc3RfTmV3KG9wYXJnKTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgLS1vcGFyZyA+PSAwOykgewotICAgICAgICAgICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh4LCBvcGFyZywgdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQVVNIKHgpOwotICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoQlVJTERfU0VUKQotICAgICAgICAgICAgeCA9IFB5U2V0X05ldyhOVUxMKTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgLS1vcGFyZyA+PSAwOykgewotICAgICAgICAgICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5U2V0X0FkZCh4LCB3KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsID0gZnJlZXZhcnNbb3BhcmddOworICAgICAgICAgICAgICAgIHZhbHVlID0gUHlDZWxsX0dFVChjZWxsKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX3VuYm91bmQoY28sIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBQVVNIKHZhbHVlKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoQlVJTERfTUFQKQotICAgICAgICAgICAgeCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOwotICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoU1RPUkVfTUFQKQotICAgICAgICAgICAgdyA9IFRPUCgpOyAgICAgLyoga2V5ICovCi0gICAgICAgICAgICB1ID0gU0VDT05EKCk7ICAvKiB2YWx1ZSAqLwotICAgICAgICAgICAgdiA9IFRISVJEKCk7ICAgLyogZGljdCAqLwotICAgICAgICAgICAgU1RBQ0tBREooLTIpOwotICAgICAgICAgICAgYXNzZXJ0IChQeURpY3RfQ2hlY2tFeGFjdCh2KSk7Ci0gICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbSh2LCB3LCB1KTsgIC8qIHZbd10gPSB1ICovCi0gICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICBpZiAoZXJyID09IDApIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBUQVJHRVQoTUFQX0FERCkKLSAgICAgICAgICAgIHcgPSBUT1AoKTsgICAgIC8qIGtleSAqLwotICAgICAgICAgICAgdSA9IFNFQ09ORCgpOyAgLyogdmFsdWUgKi8KLSAgICAgICAgICAgIFNUQUNLQURKKC0yKTsKLSAgICAgICAgICAgIHYgPSBzdGFja19wb2ludGVyWy1vcGFyZ107ICAvKiBkaWN0ICovCi0gICAgICAgICAgICBhc3NlcnQgKFB5RGljdF9DaGVja0V4YWN0KHYpKTsKLSAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKHYsIHcsIHUpOyAgLyogdlt3XSA9IHUgKi8KLSAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIGlmIChlcnIgPT0gMCkgewotICAgICAgICAgICAgICAgIFBSRURJQ1QoSlVNUF9BQlNPTFVURSk7Ci0gICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgVEFSR0VUKExPQURfREVSRUYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsID0gZnJlZXZhcnNbb3BhcmddOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUHlDZWxsX0dFVChjZWxsKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y191bmJvdW5kKGNvLCBvcGFyZyk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFBVU0godmFsdWUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChMT0FEX0FUVFIpCi0gICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEF0dHIodiwgdyk7CisgICAgICAgIFRBUkdFVChTVE9SRV9ERVJFRikgeworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsID0gZnJlZXZhcnNbb3BhcmddOworICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCB2KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKENPTVBBUkVfT1ApCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gY21wX291dGNvbWUob3BhcmcsIHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIGJyZWFrOworICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBQeVR1cGxlX05ldyhvcGFyZyk7CisgICAgICAgICAgICBpZiAodHVwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHdoaWxlICgtLW9wYXJnID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFBPUCgpOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwLCBvcGFyZywgaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKHR1cCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1QpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsaXN0ID0gIFB5TGlzdF9OZXcob3BhcmcpOworICAgICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgd2hpbGUgKC0tb3BhcmcgPj0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUE9QKCk7CisgICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIG9wYXJnLCBpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0gobGlzdCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NFVCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnNldCA9IFB5U2V0X05ldyhOVUxMKTsKKyAgICAgICAgICAgIGludCBlcnIgPSAwOworICAgICAgICAgICAgaWYgKHNldCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB3aGlsZSAoLS1vcGFyZyA+PSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyID09IDApCisgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5U2V0X0FkZChzZXQsIGl0ZW0pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzZXQpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKHNldCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX01BUCkgeworICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOworICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQVVNIKG1hcCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKFNUT1JFX01BUCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gU0VDT05EKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbWFwID0gVEhJUkQoKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBTVEFDS0FESigtMik7CisgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QobWFwKSk7CisgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKE1BUF9BREQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFNFQ09ORCgpOworICAgICAgICAgICAgUHlPYmplY3QgKm1hcDsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBTVEFDS0FESigtMik7CisgICAgICAgICAgICBtYXAgPSBzdGFja19wb2ludGVyWy1vcGFyZ107ICAvKiBkaWN0ICovCisgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QobWFwKSk7CisgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOyAgLyogdlt3XSA9IHUgKi8KKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUFJFRElDVChKVU1QX0FCU09MVVRFKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoTE9BRF9BVFRSKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvd25lciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0dldEF0dHIob3duZXIsIG5hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKG93bmVyKTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChDT01QQVJFX09QKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZWZ0ID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gY21wX291dGNvbWUob3BhcmcsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBSRURJQ1QoUE9QX0pVTVBfSUZfRkFMU0UpOwogICAgICAgICAgICAgUFJFRElDVChQT1BfSlVNUF9JRl9UUlVFKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7Ci0KLSAgICAgICAgVEFSR0VUKElNUE9SVF9OQU1FKQotICAgICAgICB7Ci0gICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKLSAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICB4ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7Ci0gICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgIHYgPSBQT1AoKTsKLSAgICAgICAgICAgIHUgPSBUT1AoKTsKLSAgICAgICAgICAgIGlmIChQeUxvbmdfQXNMb25nKHUpICE9IC0xIHx8IFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgdyA9IFB5VHVwbGVfUGFjayg1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHcgPSBQeVR1cGxlX1BhY2soNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgdSA9IFBPUCgpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKLSAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHYgPSB4OwotICAgICAgICAgICAgeCA9IFB5RXZhbF9DYWxsT2JqZWN0KHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChJTVBPUlRfU1RBUikKLSAgICAgICAgICAgIHYgPSBQT1AoKTsKKyAgICAgICAgVEFSR0VUKElNUE9SVF9OQU1FKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCAqbGV2ZWwsICphcmdzLCAqcmVzOworICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIGZyb20gPSBQT1AoKTsKKyAgICAgICAgICAgIGxldmVsID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoUHlMb25nX0FzTG9uZyhsZXZlbCkgIT0gLTEgfHwgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGV2ZWwpOworICAgICAgICAgICAgUHlfREVDUkVGKGZyb20pOworICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgICAgICBTVEFDS0FESigtMSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKKyAgICAgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIGFyZ3MpOworICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOworICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgU0VUX1RPUChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKElNUE9SVF9TVEFSKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSA9IFBPUCgpLCAqbG9jYWxzOworICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIFB5RnJhbWVfRmFzdFRvTG9jYWxzKGYpOwotICAgICAgICAgICAgaWYgKCh4ID0gZi0+Zl9sb2NhbHMpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGxvY2FscyA9IGYtPmZfbG9jYWxzOworICAgICAgICAgICAgaWYgKGxvY2FscyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIGR1cmluZyAnaW1wb3J0IConIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIGVyciA9IGltcG9ydF9hbGxfZnJvbSh4LCB2KTsKKyAgICAgICAgICAgIGVyciA9IGltcG9ydF9hbGxfZnJvbShsb2NhbHMsIGZyb20pOwogICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZiwgMCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBpZiAoZXJyID09IDApIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChJTVBPUlRfRlJPTSkKLSAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICB2ID0gVE9QKCk7CisgICAgICAgIFRBUkdFVChJTVBPUlRfRlJPTSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHggPSBpbXBvcnRfZnJvbSh2LCB3KTsKKyAgICAgICAgICAgIHJlcyA9IGltcG9ydF9mcm9tKGZyb20sIG5hbWUpOwogICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwotICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFBVU0gocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChKVU1QX0ZPUldBUkQpCisgICAgICAgIFRBUkdFVChKVU1QX0ZPUldBUkQpIHsKICAgICAgICAgICAgIEpVTVBCWShvcGFyZyk7CiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CisgICAgICAgIH0KIAogICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfRkFMU0UpOwotICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfRkFMU0UpCi0gICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICBpZiAodyA9PSBQeV9UcnVlKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfRkFMU0UpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgaWYgKGNvbmQgPT0gUHlfVHJ1ZSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjb25kKTsKICAgICAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodyA9PSBQeV9GYWxzZSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKKyAgICAgICAgICAgIGlmIChjb25kID09IFB5X0ZhbHNlKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CiAgICAgICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKGNvbmQpOworICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgaWYgKGVyciA+IDApCiAgICAgICAgICAgICAgICAgZXJyID0gMDsKICAgICAgICAgICAgIGVsc2UgaWYgKGVyciA9PSAwKQogICAgICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAogICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfVFJVRSk7Ci0gICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9UUlVFKQotICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgaWYgKHcgPT0gUHlfRmFsc2UpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9UUlVFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChjb25kID09IFB5X0ZhbHNlKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh3ID09IFB5X1RydWUpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgICAgICBpZiAoY29uZCA9PSBQeV9UcnVlKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CiAgICAgICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKGNvbmQpOworICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgaWYgKGVyciA+IDApIHsKICAgICAgICAgICAgICAgICBlcnIgPSAwOwogICAgICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CkBAIC0yNDE1LDU4ICsyNTU0LDYzIEBACiAgICAgICAgICAgICBlbHNlIGlmIChlcnIgPT0gMCkKICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoSlVNUF9JRl9GQUxTRV9PUl9QT1ApCi0gICAgICAgICAgICB3ID0gVE9QKCk7Ci0gICAgICAgICAgICBpZiAodyA9PSBQeV9UcnVlKSB7CisgICAgICAgIFRBUkdFVChKVU1QX0lGX0ZBTFNFX09SX1BPUCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNvbmQgPSBUT1AoKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBpZiAoY29uZCA9PSBQeV9UcnVlKSB7CiAgICAgICAgICAgICAgICAgU1RBQ0tBREooLTEpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY29uZCk7CiAgICAgICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHcgPT0gUHlfRmFsc2UpIHsKKyAgICAgICAgICAgIGlmIChjb25kID09IFB5X0ZhbHNlKSB7CiAgICAgICAgICAgICAgICAgSlVNUFRPKG9wYXJnKTsKICAgICAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9Jc1RydWUodyk7CisgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9Jc1RydWUoY29uZCk7CiAgICAgICAgICAgICBpZiAoZXJyID4gMCkgewogICAgICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgICAgIGVyciA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChlcnIgPT0gMCkKICAgICAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEpVTVBfSUZfVFJVRV9PUl9QT1ApCi0gICAgICAgICAgICB3ID0gVE9QKCk7Ci0gICAgICAgICAgICBpZiAodyA9PSBQeV9GYWxzZSkgeworICAgICAgICBUQVJHRVQoSlVNUF9JRl9UUlVFX09SX1BPUCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNvbmQgPSBUT1AoKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBpZiAoY29uZCA9PSBQeV9GYWxzZSkgewogICAgICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNvbmQpOwogICAgICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh3ID09IFB5X1RydWUpIHsKKyAgICAgICAgICAgIGlmIChjb25kID09IFB5X1RydWUpIHsKICAgICAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogICAgICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X0lzVHJ1ZSh3KTsKKyAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X0lzVHJ1ZShjb25kKTsKICAgICAgICAgICAgIGlmIChlcnIgPiAwKSB7CiAgICAgICAgICAgICAgICAgZXJyID0gMDsKICAgICAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoZXJyID09IDApIHsKICAgICAgICAgICAgICAgICBTVEFDS0FESigtMSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjb25kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCiAgICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhKVU1QX0FCU09MVVRFKTsKLSAgICAgICAgVEFSR0VUKEpVTVBfQUJTT0xVVEUpCisgICAgICAgIFRBUkdFVChKVU1QX0FCU09MVVRFKSB7CiAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogI2lmIEZBU1RfTE9PUFMKICAgICAgICAgICAgIC8qIEVuYWJsaW5nIHRoaXMgcGF0aCBzcGVlZHMtdXAgYWxsIHdoaWxlIGFuZCBmb3ItbG9vcHMgYnkgYnlwYXNzaW5nCkBAIC0yNDgwLDYwICsyNjI0LDYwIEBACiAjZWxzZQogICAgICAgICAgICAgRElTUEFUQ0goKTsKICNlbmRpZgorICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEdFVF9JVEVSKQorICAgICAgICBUQVJHRVQoR0VUX0lURVIpIHsKICAgICAgICAgICAgIC8qIGJlZm9yZTogW29ial07IGFmdGVyIFtnZXRpdGVyKG9iaildICovCi0gICAgICAgICAgICB2ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlcih2KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgICAgIFBSRURJQ1QoRk9SX0lURVIpOwotICAgICAgICAgICAgICAgIERJU1BBVENIKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTVEFDS0FESigtMSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CisgICAgICAgICAgICBTRVRfVE9QKGl0ZXIpOworICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUFJFRElDVChGT1JfSVRFUik7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKICAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKEZPUl9JVEVSKTsKLSAgICAgICAgVEFSR0VUKEZPUl9JVEVSKQorICAgICAgICBUQVJHRVQoRk9SX0lURVIpIHsKICAgICAgICAgICAgIC8qIGJlZm9yZTogW2l0ZXJdOyBhZnRlcjogW2l0ZXIsIGl0ZXIoKV0gKm9yKiBbXSAqLwotICAgICAgICAgICAgdiA9IFRPUCgpOwotICAgICAgICAgICAgeCA9ICgqdi0+b2JfdHlwZS0+dHBfaXRlcm5leHQpKHYpOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFBVU0goeCk7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKm5leHQgPSAoKml0ZXItPm9iX3R5cGUtPnRwX2l0ZXJuZXh0KShpdGVyKTsKKyAgICAgICAgICAgIGlmIChuZXh0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQVVNIKG5leHQpOwogICAgICAgICAgICAgICAgIFBSRURJQ1QoU1RPUkVfRkFTVCk7CiAgICAgICAgICAgICAgICAgUFJFRElDVChVTlBBQ0tfU0VRVUVOQ0UpOwogICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogaXRlcmF0b3IgZW5kZWQgbm9ybWFsbHkgKi8KLSAgICAgICAgICAgIHggPSB2ID0gUE9QKCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBTVEFDS0FESigtMSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICBKVU1QQlkob3BhcmcpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChCUkVBS19MT09QKQorICAgICAgICBUQVJHRVQoQlJFQUtfTE9PUCkgewogICAgICAgICAgICAgd2h5ID0gV0hZX0JSRUFLOwogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChDT05USU5VRV9MT09QKQorICAgICAgICBUQVJHRVQoQ09OVElOVUVfTE9PUCkgewogICAgICAgICAgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Mb25nKG9wYXJnKTsKLSAgICAgICAgICAgIGlmICghcmV0dmFsKSB7Ci0gICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9DT05USU5VRTsKICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CisgICAgICAgIH0KIAogICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0xPT1AsIF9zZXR1cF9maW5hbGx5KQogICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0VYQ0VQVCwgX3NldHVwX2ZpbmFsbHkpCiAgICAgICAgIFRBUkdFVChTRVRVUF9GSU5BTExZKQotICAgICAgICBfc2V0dXBfZmluYWxseToKKyAgICAgICAgX3NldHVwX2ZpbmFsbHk6IHsKICAgICAgICAgICAgIC8qIE5PVEU6IElmIHlvdSBhZGQgYW55IG5ldyBibG9jay1zZXR1cCBvcGNvZGVzIHRoYXQKICAgICAgICAgICAgICAgIGFyZSBub3QgdHJ5L2V4Y2VwdC9maW5hbGx5IGhhbmRsZXJzLCB5b3UgbWF5IG5lZWQKICAgICAgICAgICAgICAgIHRvIHVwZGF0ZSB0aGUgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKCkgZnVuY3Rpb24uCkBAIC0yNTQyLDM3ICsyNjg2LDM1IEBACiAgICAgICAgICAgICBQeUZyYW1lX0Jsb2NrU2V0dXAoZiwgb3Bjb2RlLCBJTlNUUl9PRkZTRVQoKSArIG9wYXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUNLX0xFVkVMKCkpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKQotICAgICAgICB7CisgICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwotICAgICAgICAgICAgdyA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IHNwZWNpYWxfbG9va3VwKHcsICZQeUlkX19fZXhpdF9fKTsKLSAgICAgICAgICAgIGlmICgheCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICB1ID0gc3BlY2lhbF9sb29rdXAodywgJlB5SWRfX19lbnRlcl9fKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIGlmICghdSkgewotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3ModSwgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICBpZiAoIXgpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBQeU9iamVjdCAqbWdyID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhpdCA9IHNwZWNpYWxfbG9va3VwKG1nciwgJlB5SWRfX19leGl0X18pLCAqZW50ZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgaWYgKGV4aXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgU0VUX1RPUChleGl0KTsKKyAgICAgICAgICAgIGVudGVyID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2VudGVyX18pOworICAgICAgICAgICAgUHlfREVDUkVGKG1ncik7CisgICAgICAgICAgICBpZiAoZW50ZXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhlbnRlciwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZW50ZXIpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAvKiBTZXR1cCB0aGUgZmluYWxseSBibG9jayBiZWZvcmUgcHVzaGluZyB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBvZiBfX2VudGVyX18gb24gdGhlIHN0YWNrLiAqLwogICAgICAgICAgICAgUHlGcmFtZV9CbG9ja1NldHVwKGYsIFNFVFVQX0ZJTkFMTFksIElOU1RSX09GRlNFVCgpICsgb3BhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBQ0tfTEVWRUwoKSk7CiAKLSAgICAgICAgICAgIFBVU0goeCk7CisgICAgICAgICAgICBQVVNIKHJlcyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKFdJVEhfQ0xFQU5VUCkKLSAgICAgICAgeworICAgICAgICBUQVJHRVQoV0lUSF9DTEVBTlVQKSB7CiAgICAgICAgICAgICAvKiBBdCB0aGUgdG9wIG9mIHRoZSBzdGFjayBhcmUgMS0zIHZhbHVlcyBpbmRpY2F0aW5nCiAgICAgICAgICAgICAgICBob3cvd2h5IHdlIGVudGVyZWQgdGhlIGZpbmFsbHkgY2xhdXNlOgogICAgICAgICAgICAgICAgLSBUT1AgPSBOb25lCkBAIC0yNTk5LDQyICsyNzQxLDQyIEBACiAgICAgICAgICAgICAqLwogCiAgICAgICAgICAgICBQeU9iamVjdCAqZXhpdF9mdW5jOwotICAgICAgICAgICAgdSA9IFRPUCgpOwotICAgICAgICAgICAgaWYgKHUgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YyA9IFRPUCgpLCAqdmFsID0gUHlfTm9uZSwgKnRiID0gUHlfTm9uZSwgKnJlczsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBpZiAoZXhjID09IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICAodm9pZClQT1AoKTsKICAgICAgICAgICAgICAgICBleGl0X2Z1bmMgPSBUT1AoKTsKLSAgICAgICAgICAgICAgICBTRVRfVE9QKHUpOwotICAgICAgICAgICAgICAgIHYgPSB3ID0gUHlfTm9uZTsKKyAgICAgICAgICAgICAgICBTRVRfVE9QKGV4Yyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodSkpIHsKLSAgICAgICAgICAgICAgICAodm9pZClQT1AoKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2goUHlMb25nX0FzTG9uZyh1KSkgeworICAgICAgICAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKGV4YykpIHsKKyAgICAgICAgICAgICAgICBTVEFDS0FESigtMSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChQeUxvbmdfQXNMb25nKGV4YykpIHsKICAgICAgICAgICAgICAgICBjYXNlIFdIWV9SRVRVUk46CiAgICAgICAgICAgICAgICAgY2FzZSBXSFlfQ09OVElOVUU6CiAgICAgICAgICAgICAgICAgICAgIC8qIFJldHZhbCBpbiBUT1AuICovCiAgICAgICAgICAgICAgICAgICAgIGV4aXRfZnVuYyA9IFNFQ09ORCgpOwogICAgICAgICAgICAgICAgICAgICBTRVRfU0VDT05EKFRPUCgpKTsKLSAgICAgICAgICAgICAgICAgICAgU0VUX1RPUCh1KTsKKyAgICAgICAgICAgICAgICAgICAgU0VUX1RPUChleGMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBleGl0X2Z1bmMgPSBUT1AoKTsKLSAgICAgICAgICAgICAgICAgICAgU0VUX1RPUCh1KTsKKyAgICAgICAgICAgICAgICAgICAgU0VUX1RPUChleGMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdSA9IHYgPSB3ID0gUHlfTm9uZTsKKyAgICAgICAgICAgICAgICBleGMgPSBQeV9Ob25lOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRwLCAqZXhjLCAqdGI7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRwMiwgKmV4YzIsICp0YjI7CiAgICAgICAgICAgICAgICAgUHlUcnlCbG9jayAqYmxvY2s7Ci0gICAgICAgICAgICAgICAgdiA9IFNFQ09ORCgpOwotICAgICAgICAgICAgICAgIHcgPSBUSElSRCgpOwotICAgICAgICAgICAgICAgIHRwID0gRk9VUlRIKCk7Ci0gICAgICAgICAgICAgICAgZXhjID0gUEVFSyg1KTsKLSAgICAgICAgICAgICAgICB0YiA9IFBFRUsoNik7CisgICAgICAgICAgICAgICAgdmFsID0gU0VDT05EKCk7CisgICAgICAgICAgICAgICAgdGIgPSBUSElSRCgpOworICAgICAgICAgICAgICAgIHRwMiA9IEZPVVJUSCgpOworICAgICAgICAgICAgICAgIGV4YzIgPSBQRUVLKDUpOworICAgICAgICAgICAgICAgIHRiMiA9IFBFRUsoNik7CiAgICAgICAgICAgICAgICAgZXhpdF9mdW5jID0gUEVFSyg3KTsKLSAgICAgICAgICAgICAgICBTRVRfVkFMVUUoNywgdGIpOwotICAgICAgICAgICAgICAgIFNFVF9WQUxVRSg2LCBleGMpOwotICAgICAgICAgICAgICAgIFNFVF9WQUxVRSg1LCB0cCk7CisgICAgICAgICAgICAgICAgU0VUX1ZBTFVFKDcsIHRiMik7CisgICAgICAgICAgICAgICAgU0VUX1ZBTFVFKDYsIGV4YzIpOworICAgICAgICAgICAgICAgIFNFVF9WQUxVRSg1LCB0cDIpOwogICAgICAgICAgICAgICAgIC8qIFVOV0lORF9FWENFUFRfSEFORExFUiB3aWxsIHBvcCB0aGlzIG9mZi4gKi8KICAgICAgICAgICAgICAgICBTRVRfRk9VUlRIKE5VTEwpOwogICAgICAgICAgICAgICAgIC8qIFdlIGp1c3Qgc2hpZnRlZCB0aGUgc3RhY2sgZG93biwgc28gd2UgaGF2ZQpAQCAtMjY0NSw1NiArMjc4Nyw1MyBAQAogICAgICAgICAgICAgICAgIGJsb2NrLT5iX2xldmVsLS07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBYWFggTm90IHRoZSBmYXN0ZXN0IHdheSB0byBjYWxsIGl0Li4uICovCi0gICAgICAgICAgICB4ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhleGl0X2Z1bmMsIHUsIHYsIHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZXhpdF9mdW5jLCBleGMsIHZhbCwgdGIsIE5VTEwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGV4aXRfZnVuYyk7Ci0gICAgICAgICAgICBpZiAoeCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBHbyB0byBlcnJvciBleGl0ICovCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIAotICAgICAgICAgICAgaWYgKHUgIT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9Jc1RydWUoeCk7CisgICAgICAgICAgICBpZiAoZXhjICE9IFB5X05vbmUpCisgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXJyID0gMDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogCiAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKLSAgICAgICAgICAgICAgICBicmVhazsgLyogR28gdG8gZXJyb3IgZXhpdCAqLworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBlbHNlIGlmIChlcnIgPiAwKSB7CiAgICAgICAgICAgICAgICAgZXJyID0gMDsKICAgICAgICAgICAgICAgICAvKiBUaGVyZSB3YXMgYW4gZXhjZXB0aW9uIGFuZCBhIFRydWUgcmV0dXJuICovCiAgICAgICAgICAgICAgICAgUFVTSChQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIFdIWV9TSUxFTkNFRCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUFJFRElDVChFTkRfRklOQUxMWSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTikKLSAgICAgICAgewotICAgICAgICAgICAgUHlPYmplY3QgKipzcDsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqc3AsICpyZXM7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwogI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICB4ID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCAmaW50cjAsICZpbnRyMSk7CisgICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsICZpbnRyMCwgJmludHIxKTsKICNlbHNlCi0gICAgICAgICAgICB4ID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnKTsKKyAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZyk7CiAjZW5kaWYKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKLSAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICAgICAgICAgIERJU1BBVENIKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFBVU0gocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQ0FMTF9GVU5DVElPTl9WQVIsIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKICAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX0tXLCBfY2FsbF9mdW5jdGlvbl92YXJfa3cpCiAgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX1ZBUl9LVykKLSAgICAgICAgX2NhbGxfZnVuY3Rpb25fdmFyX2t3OgotICAgICAgICB7CisgICAgICAgIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdzogewogICAgICAgICAgICAgaW50IG5hID0gb3BhcmcgJiAweGZmOwogICAgICAgICAgICAgaW50IG5rID0gKG9wYXJnPj44KSAmIDB4ZmY7CiAgICAgICAgICAgICBpbnQgZmxhZ3MgPSAob3Bjb2RlIC0gQ0FMTF9GVU5DVElPTikgJiAzOwogICAgICAgICAgICAgaW50IG4gPSBuYSArIDIgKiBuazsKLSAgICAgICAgICAgIFB5T2JqZWN0ICoqcGZ1bmMsICpmdW5jLCAqKnNwOworICAgICAgICAgICAgUHlPYmplY3QgKipwZnVuYywgKmZ1bmMsICoqc3AsICpyZXM7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwogICAgICAgICAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikKICAgICAgICAgICAgICAgICBuKys7CkBAIC0yNzE3LDEzNyArMjg1NiwxNTYgQEAKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7CiAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICB4ID0gZXh0X2RvX2NhbGwoZnVuYywgJnNwLCBmbGFncywgbmEsIG5rKTsKKyAgICAgICAgICAgIHJlcyA9IGV4dF9kb19jYWxsKGZ1bmMsICZzcCwgZmxhZ3MsIG5hLCBuayk7CiAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICAgICAgICAgIHdoaWxlIChzdGFja19wb2ludGVyID4gcGZ1bmMpIHsKLSAgICAgICAgICAgICAgICB3ID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUE9QKCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChNQUtFX0NMT1NVUkUsIF9tYWtlX2Z1bmN0aW9uKQogICAgICAgICBUQVJHRVQoTUFLRV9GVU5DVElPTikKLSAgICAgICAgX21ha2VfZnVuY3Rpb246Ci0gICAgICAgIHsKKyAgICAgICAgX21ha2VfZnVuY3Rpb246IHsKICAgICAgICAgICAgIGludCBwb3NkZWZhdWx0cyA9IG9wYXJnICYgMHhmZjsKICAgICAgICAgICAgIGludCBrd2RlZmF1bHRzID0gKG9wYXJnPj44KSAmIDB4ZmY7CiAgICAgICAgICAgICBpbnQgbnVtX2Fubm90YXRpb25zID0gKG9wYXJnID4+IDE2KSAmIDB4N2ZmZjsKIAotICAgICAgICAgICAgdyA9IFBPUCgpOyAvKiBxdWFsbmFtZSAqLwotICAgICAgICAgICAgdiA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgeCA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKHYsIGYtPmZfZ2xvYmFscywgdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsgLyogcXVhbG5hbWUgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlID0gUE9QKCk7IC8qIGNvZGUgb2JqZWN0ICovCisgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGUsIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKGNvZGUpOworICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKIAotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCAmJiBvcGNvZGUgPT0gTUFLRV9DTE9TVVJFKSB7Ci0gICAgICAgICAgICAgICAgdiA9IFBPUCgpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldENsb3N1cmUoeCwgdikgIT0gMCkgeworICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBpZiAob3Bjb2RlID09IE1BS0VfQ0xPU1VSRSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbG9zdXJlID0gUE9QKCk7CisgICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0Q2xvc3VyZShmdW5jLCBjbG9zdXJlKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MgYnl0ZWNvZGUgaXMgY29ycnVwdC4gKi8KLSAgICAgICAgICAgICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwgJiYgbnVtX2Fubm90YXRpb25zID4gMCkgeworICAgICAgICAgICAgaWYgKG51bV9hbm5vdGF0aW9ucyA+IDApIHsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hbWVfaXg7Ci0gICAgICAgICAgICAgICAgdSA9IFBPUCgpOyAvKiBuYW1lcyBvZiBhcmdzIHdpdGggYW5ub3RhdGlvbnMgKi8KLSAgICAgICAgICAgICAgICB2ID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzID0gUE9QKCk7IC8qIG5hbWVzIG9mIGFyZ3Mgd2l0aCBhbm5vdGF0aW9ucyAqLworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphbm5zID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgIGlmIChhbm5zID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYW1lX2l4ID0gUHlUdXBsZV9TaXplKHUpOworICAgICAgICAgICAgICAgIG5hbWVfaXggPSBQeVR1cGxlX1NpemUobmFtZXMpOwogICAgICAgICAgICAgICAgIGFzc2VydChudW1fYW5ub3RhdGlvbnMgPT0gbmFtZV9peCsxKTsKICAgICAgICAgICAgICAgICB3aGlsZSAobmFtZV9peCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsICp2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgICAgICAgICAgLS1uYW1lX2l4OwotICAgICAgICAgICAgICAgICAgICB0ID0gUHlUdXBsZV9HRVRfSVRFTSh1LCBuYW1lX2l4KTsKLSAgICAgICAgICAgICAgICAgICAgdyA9IFBPUCgpOwotICAgICAgICAgICAgICAgICAgICAvKiBYWFgobm5vcndpdHopOiBjaGVjayBmb3IgZXJyb3JzICovCi0gICAgICAgICAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKHYsIHQsIHcpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKG5hbWVzLCBuYW1lX2l4KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKKyAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oYW5ucywgbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyh4LCB2KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoZnVuYywgYW5ucykgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCiAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIFhYWCBNYXliZSB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG9wY29kZT8gKi8KLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwgJiYgcG9zZGVmYXVsdHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VHVwbGVfTmV3KHBvc2RlZmF1bHRzKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3aGlsZSAoLS1wb3NkZWZhdWx0cyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHcgPSBQT1AoKTsKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh2LCBwb3NkZWZhdWx0cywgdyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldERlZmF1bHRzKHgsIHYpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldERlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwgJiYga3dkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoa3dkZWZhdWx0cyA+IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0ta3dkZWZhdWx0cyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHcgPSBQT1AoKTsgLyogZGVmYXVsdCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICB1ID0gUE9QKCk7IC8qIGt3IG9ubHkgYXJnIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgLyogWFhYKG5ub3J3aXR6KTogY2hlY2sgZm9yIGVycm9ycyAqLwotICAgICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbSh2LCB1LCB3KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7IC8qIGRlZmF1bHQgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFBPUCgpOyAvKiBrdyBvbmx5IGFyZyBuYW1lICovCisgICAgICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeURpY3RfU2V0SXRlbShkZWZzLCBrZXksIHYpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyh4LCB2KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHBvc2RlZmF1bHRzID4gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZzID0gUHlUdXBsZV9OZXcocG9zZGVmYXVsdHMpOworICAgICAgICAgICAgICAgIGlmIChkZWZzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAoLS1wb3NkZWZhdWx0cyA+PSAwKQorICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGRlZnMsIHBvc2RlZmF1bHRzLCBQT1AoKSk7CisgICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMoZnVuYywgZGVmcykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCisgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMgY2hhbmdlcy4gKi8KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0goZnVuYyk7CisgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUKEJVSUxEX1NMSUNFKQorICAgICAgICBUQVJHRVQoQlVJTERfU0xJQ0UpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydCwgKnN0b3AsICpzdGVwLCAqc2xpY2U7CiAgICAgICAgICAgICBpZiAob3BhcmcgPT0gMykKLSAgICAgICAgICAgICAgICB3ID0gUE9QKCk7CisgICAgICAgICAgICAgICAgc3RlcCA9IFBPUCgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHcgPSBOVUxMOwotICAgICAgICAgICAgdiA9IFBPUCgpOwotICAgICAgICAgICAgdSA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IFB5U2xpY2VfTmV3KHUsIHYsIHcpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgUHlfWERFQ1JFRih3KTsKLSAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgc3RlcCA9IE5VTEw7CisgICAgICAgICAgICBzdG9wID0gUE9QKCk7CisgICAgICAgICAgICBzdGFydCA9IFRPUCgpOworICAgICAgICAgICAgc2xpY2UgPSBQeVNsaWNlX05ldyhzdGFydCwgc3RvcCwgc3RlcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0b3ApOworICAgICAgICAgICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICAgICAgICAgIFNFVF9UT1Aoc2xpY2UpOworICAgICAgICAgICAgaWYgKHNsaWNlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoRVhURU5ERURfQVJHKQorICAgICAgICBUQVJHRVQoRVhURU5ERURfQVJHKSB7CiAgICAgICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKICAgICAgICAgICAgIG9wYXJnID0gb3Bhcmc8PDE2IHwgTkVYVEFSRygpOwogICAgICAgICAgICAgZ290byBkaXNwYXRjaF9vcGNvZGU7CisgICAgICAgIH0KIAogI2lmIFVTRV9DT01QVVRFRF9HT1RPUwogICAgICAgICBfdW5rbm93bl9vcGNvZGU6CkBAIC0yODU4LDggKzMwMTYsNyBAQAogICAgICAgICAgICAgICAgIFB5RnJhbWVfR2V0TGluZU51bWJlcihmKSwKICAgICAgICAgICAgICAgICBvcGNvZGUpOwogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAidW5rbm93biBvcGNvZGUiKTsKLSAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICNpZmRlZiBDQVNFX1RPT19CSUcKICAgICAgICAgfQpAQCAtMjg2Nyw3MSArMzAyNCwzNSBAQAogCiAgICAgICAgIH0gLyogc3dpdGNoICovCiAKLSAgICAgICAgb25fZXJyb3I6CisgICAgICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuIEV2ZXJ5IG9wY29kZSBzaG91bGQgZW5kIHdpdGggRElTUEFUQ0goKQorICAgICAgICAgICBvciBnb3RvIGVycm9yLiAqLworICAgICAgICBhc3NlcnQoMCk7CiAKK2Vycm9yOgogICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7CiAKLSAgICAgICAgLyogUXVpY2tseSBjb250aW51ZSBpZiBubyBlcnJvciBvY2N1cnJlZCAqLworICAgICAgICBhc3NlcnQod2h5ID09IFdIWV9OT1QpOworICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOwogCi0gICAgICAgIGlmICh3aHkgPT0gV0hZX05PVCkgewotICAgICAgICAgICAgaWYgKGVyciA9PSAwICYmIHggIT0gTlVMTCkgewotI2lmZGVmIENIRUNLRVhDCi0gICAgICAgICAgICAgICAgLyogVGhpcyBjaGVjayBpcyBleHBlbnNpdmUhICovCi0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAgICAgIlhYWCB1bmRldGVjdGVkIGVycm9yXG4iKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBOb3JtYWwsIGZhc3QgcGF0aCAqLwotI2lmZGVmIENIRUNLRVhDCi0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOwotICAgICAgICAgICAgeCA9IFB5X05vbmU7Ci0gICAgICAgICAgICBlcnIgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogRG91YmxlLWNoZWNrIGV4Y2VwdGlvbiBzdGF0dXMgKi8KLQotICAgICAgICBpZiAod2h5ID09IFdIWV9FWENFUFRJT04gfHwgd2h5ID09IFdIWV9SRVJBSVNFKSB7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJlcnJvciByZXR1cm4gd2l0aG91dCBleGNlcHRpb24gc2V0Iik7Ci0gICAgICAgICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmZGVmIENIRUNLRVhDCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogVGhpcyBjaGVjayBpcyBleHBlbnNpdmUhICovCi0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGNoYXIgYnVmWzEyOF07Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihidWYsICJTdGFjayB1bndpbmQgd2l0aCBleGNlcHRpb24gIgotICAgICAgICAgICAgICAgICAgICAic2V0IGFuZCB3aHk9JWQiLCB3aHkpOwotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoYnVmKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAvKiBEb3VibGUtY2hlY2sgZXhjZXB0aW9uIHN0YXR1cy4gKi8KKyNpZmRlZiBOREVCVUcKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciByZXR1cm4gd2l0aG91dCBleGNlcHRpb24gc2V0Iik7CisjZWxzZQorICAgICAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CiAjZW5kaWYKIAotICAgICAgICAvKiBMb2cgdHJhY2ViYWNrIGluZm8gaWYgdGhpcyBpcyBhIHJlYWwgZXhjZXB0aW9uICovCisgICAgICAgIC8qIExvZyB0cmFjZWJhY2sgaW5mby4gKi8KKyAgICAgICAgUHlUcmFjZUJhY2tfSGVyZShmKTsKIAotICAgICAgICBpZiAod2h5ID09IFdIWV9FWENFUFRJT04pIHsKLSAgICAgICAgICAgIFB5VHJhY2VCYWNrX0hlcmUoZik7Ci0KLSAgICAgICAgICAgIGlmICh0c3RhdGUtPmNfdHJhY2VmdW5jICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgY2FsbF9leGNfdHJhY2UodHN0YXRlLT5jX3RyYWNlZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c3RhdGUtPmNfdHJhY2VvYmosIGYpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogRm9yIHRoZSByZXN0LCB0cmVhdCBXSFlfUkVSQUlTRSBhcyBXSFlfRVhDRVBUSU9OICovCi0KLSAgICAgICAgaWYgKHdoeSA9PSBXSFlfUkVSQUlTRSkKLSAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047Ci0KLSAgICAgICAgLyogVW53aW5kIHN0YWNrcyBpZiBhIChwc2V1ZG8pIGV4Y2VwdGlvbiBvY2N1cnJlZCAqLworICAgICAgICBpZiAodHN0YXRlLT5jX3RyYWNlZnVuYyAhPSBOVUxMKQorICAgICAgICAgICAgY2FsbF9leGNfdHJhY2UodHN0YXRlLT5jX3RyYWNlZnVuYywgdHN0YXRlLT5jX3RyYWNlb2JqLCBmKTsKIAogZmFzdF9ibG9ja19lbmQ6CisgICAgICAgIGFzc2VydCh3aHkgIT0gV0hZX05PVCk7CisKKyAgICAgICAgLyogVW53aW5kIHN0YWNrcyBpZiBhIChwc2V1ZG8pIGV4Y2VwdGlvbiBvY2N1cnJlZCAqLwogICAgICAgICB3aGlsZSAod2h5ICE9IFdIWV9OT1QgJiYgZi0+Zl9pYmxvY2sgPiAwKSB7CiAgICAgICAgICAgICAvKiBQZWVrIGF0IHRoZSBjdXJyZW50IGJsb2NrLiAqLwogICAgICAgICAgICAgUHlUcnlCbG9jayAqYiA9ICZmLT5mX2Jsb2Nrc3RhY2tbZi0+Zl9pYmxvY2sgLSAxXTsKQEAgLTI5NzgsNyArMzA5OSwxMCBAQAogICAgICAgICAgICAgICAgICAgIFB5dGhvbiBtYWluIGxvb3AuICovCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKKyAgICAgICAgICAgICAgICBpZiAodGIgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgUHlfTm9uZSk7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGV4Yyk7CiAgICAgICAgICAgICAgICAgdHN0YXRlLT5leGNfdHlwZSA9IGV4YzsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKQEAgLTMwMTAsMTggKzMxMzQsMjMgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7CiAKKyAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKwogICAgIH0gLyogbWFpbiBsb29wICovCiAKICAgICBhc3NlcnQod2h5ICE9IFdIWV9ZSUVMRCk7CiAgICAgLyogUG9wIHJlbWFpbmluZyBzdGFjayBlbnRyaWVzLiAqLwogICAgIHdoaWxlICghRU1QVFkoKSkgewotICAgICAgICB2ID0gUE9QKCk7Ci0gICAgICAgIFB5X1hERUNSRUYodik7CisgICAgICAgIFB5T2JqZWN0ICpvID0gUE9QKCk7CisgICAgICAgIFB5X1hERUNSRUYobyk7CiAgICAgfQogCiAgICAgaWYgKHdoeSAhPSBXSFlfUkVUVVJOKQogICAgICAgICByZXR2YWwgPSBOVUxMOwogCisgICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHx8IChyZXR2YWwgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CisKIGZhc3RfeWllbGQ6CiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUiAmJiAod2h5ID09IFdIWV9ZSUVMRCB8fCB3aHkgPT0gV0hZX1JFVFVSTikpIHsKICAgICAgICAgLyogVGhlIHB1cnBvc2Ugb2YgdGhpcyBibG9jayBpcyB0byBwdXQgYXNpZGUgdGhlIGdlbmVyYXRvcidzIGV4Y2VwdGlvbgpAQCAtMzA3OCw2ICszMjA3LDcgQEAKICAgICAvKiBwb3AgZnJhbWUgKi8KIGV4aXRfZXZhbF9mcmFtZToKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKKyAgICBmLT5mX2V4ZWN1dGluZyA9IDA7CiAgICAgdHN0YXRlLT5mcmFtZSA9IGYtPmZfYmFjazsKIAogICAgIHJldHVybiByZXR2YWw7CkBAIC0zNTIyLDcgKzM2NTIsNyBAQAogCiAvKiBMb2dpYyBmb3IgdGhlIHJhaXNlIHN0YXRlbWVudCAodG9vIGNvbXBsaWNhdGVkIGZvciBpbmxpbmluZykuCiAgICBUaGlzICpjb25zdW1lcyogYSByZWZlcmVuY2UgY291bnQgdG8gZWFjaCBvZiBpdHMgYXJndW1lbnRzLiAqLwotc3RhdGljIGVudW0gd2h5X2NvZGUKK3N0YXRpYyBpbnQKIGRvX3JhaXNlKFB5T2JqZWN0ICpleGMsIFB5T2JqZWN0ICpjYXVzZSkKIHsKICAgICBQeU9iamVjdCAqdHlwZSA9IE5VTEwsICp2YWx1ZSA9IE5VTEw7CkBAIC0zNTM3LDEzICszNjY3LDEzIEBACiAgICAgICAgIGlmICh0eXBlID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGFjdGl2ZSBleGNlcHRpb24gdG8gcmVyYWlzZSIpOwotICAgICAgICAgICAgcmV0dXJuIFdIWV9FWENFUFRJT047Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBQeV9YSU5DUkVGKHR5cGUpOwogICAgICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICAgICAgUHlfWElOQ1JFRih0Yik7CiAgICAgICAgIFB5RXJyX1Jlc3RvcmUodHlwZSwgdmFsdWUsIHRiKTsKLSAgICAgICAgcmV0dXJuIFdIWV9SRVJBSVNFOworICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKICAgICAvKiBXZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgZm9ybXMgb2YgcmFpc2U6CkBAIC0zNjA2LDEzICszNzM2LDEzIEBACiAgICAgLyogUHlFcnJfU2V0T2JqZWN0IGluY3JlZidzIGl0cyBhcmd1bWVudHMgKi8KICAgICBQeV9YREVDUkVGKHZhbHVlKTsKICAgICBQeV9YREVDUkVGKHR5cGUpOwotICAgIHJldHVybiBXSFlfRVhDRVBUSU9OOworICAgIHJldHVybiAwOwogCiByYWlzZV9lcnJvcjoKICAgICBQeV9YREVDUkVGKHZhbHVlKTsKICAgICBQeV9YREVDUkVGKHR5cGUpOwogICAgIFB5X1hERUNSRUYoY2F1c2UpOwotICAgIHJldHVybiBXSFlfRVhDRVBUSU9OOworICAgIHJldHVybiAwOwogfQogCiAvKiBJdGVyYXRlIHYgYXJnY250IHRpbWVzIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBvbiB0aGUgc3RhY2sgKHZpYSBkZWNyZWFzaW5nCkBAIC0zNzExLDcgKzM4NDEsNyBAQAogc3RhdGljIHZvaWQKIGNhbGxfZXhjX3RyYWNlKFB5X3RyYWNlZnVuYyBmdW5jLCBQeU9iamVjdCAqc2VsZiwgUHlGcmFtZU9iamVjdCAqZikKIHsKLSAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrLCAqYXJnOworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0cmFjZWJhY2ssICpvcmlnX3RyYWNlYmFjaywgKmFyZzsKICAgICBpbnQgZXJyOwogICAgIFB5RXJyX0ZldGNoKCZ0eXBlLCAmdmFsdWUsICZ0cmFjZWJhY2spOwogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CkBAIC0zNzE5LDYgKzM4NDksMTEgQEAKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICB9CiAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZ0eXBlLCAmdmFsdWUsICZ0cmFjZWJhY2spOworICAgIG9yaWdfdHJhY2ViYWNrID0gdHJhY2ViYWNrOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHRyYWNlYmFjayA9IFB5X05vbmU7CisgICAgfQogICAgIGFyZyA9IFB5VHVwbGVfUGFjaygzLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKTsKICAgICBpZiAoYXJnID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKTsKQEAgLTM3MjcsMTEgKzM4NjIsMTEgQEAKICAgICBlcnIgPSBjYWxsX3RyYWNlKGZ1bmMsIHNlbGYsIGYsIFB5VHJhY2VfRVhDRVBUSU9OLCBhcmcpOwogICAgIFB5X0RFQ1JFRihhcmcpOwogICAgIGlmIChlcnIgPT0gMCkKLSAgICAgICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKTsKKyAgICAgICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWx1ZSwgb3JpZ190cmFjZWJhY2spOwogICAgIGVsc2UgewogICAgICAgICBQeV9YREVDUkVGKHR5cGUpOwogICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOworICAgICAgICBQeV9YREVDUkVGKG9yaWdfdHJhY2ViYWNrKTsKICAgICB9CiB9CiAKQEAgLTM5MjYsNiArNDA2MSwxMyBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCisgICAgICAgc2V0LCBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKKyAgICAgICBhbmQgc28gdGhlIGNhbGxlciBsb29zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisjZW5kaWYKKwogICAgIGlmIChhcmcgPT0gTlVMTCkgewogICAgICAgICBhcmcgPSBQeVR1cGxlX05ldygwKTsKICAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQpAQCAtMzk0OCw2ICs0MDkwLDkgQEAKIAogICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJnLCBrdyk7CiAgICAgUHlfREVDUkVGKGFyZyk7CisKKyAgICBhc3NlcnQoKHJlc3VsdCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQwNjUsMTAgKzQyMTAsMTUgQEAKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY2FsbGFyZ3M7CiAgICAgICAgICAgICBjYWxsYXJncyA9IGxvYWRfYXJncyhwcF9zdGFjaywgbmEpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMCk7Ci0gICAgICAgICAgICBDX1RSQUNFKHgsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYyxjYWxsYXJncyxOVUxMKSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgaWYgKGNhbGxhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIwKTsKKyAgICAgICAgICAgICAgICBDX1RSQUNFKHgsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYyxjYWxsYXJncyxOVUxMKSk7CisgICAgICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB4ID0gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7CkBAIC00MDkzLDYgKzQyNDMsOCBAQAogICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIH0KKyAgICBhc3NlcnQoKHggIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgfHwgKHggPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CiAKICAgICAvKiBDbGVhciB0aGUgc3RhY2sgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIEFsc28gcmVtb3ZlcwogICAgICAgIHRoZSBhcmd1bWVudHMgaW4gY2FzZSB0aGV5IHdlcmVuJ3QgY29uc3VtZWQgYWxyZWFkeQpAQCAtNDEwMyw2ICs0MjU1LDkgQEAKICAgICAgICAgUHlfREVDUkVGKHcpOwogICAgICAgICBQQ0FMTChQQ0FMTF9QT1ApOwogICAgIH0KKworICAgIGFzc2VydCgoeCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICB8fCAoeCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKICAgICByZXR1cm4geDsKIH0KIApAQCAtNDM4Niw2ICs0NTQxLDggQEAKICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKICAgICBQeV9YREVDUkVGKGt3ZGljdCk7CiAgICAgUHlfWERFQ1JFRihzdGFyYXJnKTsKKyAgICBhc3NlcnQoKHJlc3VsdCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ0ODIsNyArNDYzOSw3IEBACiAKICAgICB4ID0gUHlPYmplY3RfR2V0QXR0cih2LCBuYW1lKTsKICAgICBpZiAoeCA9PSBOVUxMICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwgImNhbm5vdCBpbXBvcnQgbmFtZSAlUyIsIG5hbWUpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsICJjYW5ub3QgaW1wb3J0IG5hbWUgJVIiLCBuYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIHg7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vY29kZWNzLmMgYi9QeXRob24vY29kZWNzLmMKaW5kZXggZmQ2N2QxYi4uODk5ZjBhYSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvZGVjcy5jCisrKyBiL1B5dGhvbi9jb2RlY3MuYwpAQCAtNjUsNyArNjUsNyBAQAogCiAgICAgcCA9IFB5TWVtX01hbGxvYyhsZW4gKyAxKTsKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIHJlZ2lzdGVyIGNoYXIgY2ggPSBzdHJpbmdbaV07CiAgICAgICAgIGlmIChjaCA9PSAnICcpCkBAIC03NjEsNyArNzYxLDcgQEAKICAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgewogICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLwogICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKLSAgICAgICAgICAgIGlmIChjaCA8IDB4ZDgwMCB8fCBjaCA+IDB4ZGZmZikgeworICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKICAgICAgICAgICAgICAgICAvKiBOb3QgYSBzdXJyb2dhdGUsIGZhaWwgd2l0aCBvcmlnaW5hbCBleGNlcHRpb24gKi8KICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNzk3LDcgKzc5Nyw3IEBACiAgICAgICAgICAgICAocFsyXSAmIDB4YzApID09IDB4ODApIHsKICAgICAgICAgICAgIC8qIGl0J3MgYSB0aHJlZS1ieXRlIGNvZGUgKi8KICAgICAgICAgICAgIGNoID0gKChwWzBdICYgMHgwZikgPDwgMTIpICsgKChwWzFdICYgMHgzZikgPDwgNikgKyAocFsyXSAmIDB4M2YpOwotICAgICAgICAgICAgaWYgKGNoIDwgMHhkODAwIHx8IGNoID4gMHhkZmZmKQorICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpCiAgICAgICAgICAgICAgICAgLyogaXQncyBub3QgYSBzdXJyb2dhdGUgLSBmYWlsICovCiAgICAgICAgICAgICAgICAgY2ggPSAwOwogICAgICAgICB9CkBAIC0xMDI2LDcgKzEwMjYsNyBAQAogCiAgICAgaWYgKGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X0FSUkFZX0xFTkdUSChtZXRob2RzKTsgKytpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5Q0Z1bmN0aW9uX05ldygmbWV0aG9kc1tpXS5kZWYsIE5VTEwpOworICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeCgmbWV0aG9kc1tpXS5kZWYsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIGlmICghZnVuYykKICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBpbml0aWFsaXplIGNvZGVjIGVycm9yIHJlZ2lzdHJ5Iik7CmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCBkZDQyNjJjLi5kMTFlM2FiIDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTUzNSw2ICs1MzUsMzcgQEAKICAgICAgICAgY29tcGlsZXJfdW5pdF9mcmVlKHUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKHUtPnVfc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSkgeworICAgICAgICAvKiBDb29rIHVwIGEgaW1wbGljaXQgX19jbGFzc19fIGNlbGwuICovCisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CisgICAgICAgIFB5T2JqZWN0ICp0dXBsZSwgKm5hbWUsICp6ZXJvOworICAgICAgICBpbnQgcmVzOworICAgICAgICBhc3NlcnQodS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKTsKKyAgICAgICAgYXNzZXJ0KFB5RGljdF9TaXplKHUtPnVfY2VsbHZhcnMpID09IDApOworICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19jbGFzc19fKTsKKyAgICAgICAgaWYgKCFuYW1lKSB7CisgICAgICAgICAgICBjb21waWxlcl91bml0X2ZyZWUodSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB0dXBsZSA9IFB5VHVwbGVfUGFjaygyLCBuYW1lLCBQeV9UWVBFKG5hbWUpKTsKKyAgICAgICAgaWYgKCF0dXBsZSkgeworICAgICAgICAgICAgY29tcGlsZXJfdW5pdF9mcmVlKHUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICAgICAgaWYgKCF6ZXJvKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICAgICAgY29tcGlsZXJfdW5pdF9mcmVlKHUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0odS0+dV9jZWxsdmFycywgdHVwbGUsIHplcm8pOworICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICBQeV9ERUNSRUYoemVybyk7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBjb21waWxlcl91bml0X2ZyZWUodSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHUtPnVfZnJlZXZhcnMgPSBkaWN0Ynl0eXBlKHUtPnVfc3RlLT5zdGVfc3ltYm9scywgRlJFRSwgREVGX0ZSRUVfQ0xBU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X1NpemUodS0+dV9jZWxsdmFycykpOwpAQCAtODYyLDggKzg5Myw2IEBACiAgICAgICAgICAgICByZXR1cm4gNzsKICAgICAgICAgY2FzZSBXSVRIX0NMRUFOVVA6CiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIFhYWCBTb21ldGltZXMgbW9yZSAqLwotICAgICAgICBjYXNlIFNUT1JFX0xPQ0FMUzoKLSAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBSRVRVUk5fVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgSU1QT1JUX1NUQVI6CkBAIC05NzAsNiArOTk5LDcgQEAKICAgICAgICAgY2FzZSBMT0FEX0NMT1NVUkU6CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBMT0FEX0RFUkVGOgorICAgICAgICBjYXNlIExPQURfQ0xBU1NERVJFRjoKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICBjYXNlIFNUT1JFX0RFUkVGOgogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTMzMCw3ICsxMzYwLDExIEBACiBzdGF0aWMgaW50CiBnZXRfcmVmX3R5cGUoc3RydWN0IGNvbXBpbGVyICpjLCBQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBpbnQgc2NvcGUgPSBQeVNUX0dldFNjb3BlKGMtPnUtPnVfc3RlLCBuYW1lKTsKKyAgICBpbnQgc2NvcGU7CisgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUyAmJgorICAgICAgICAhUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIl9fY2xhc3NfXyIpKQorICAgICAgICByZXR1cm4gQ0VMTDsKKyAgICBzY29wZSA9IFB5U1RfR2V0U2NvcGUoYy0+dS0+dV9zdGUsIG5hbWUpOwogICAgIGlmIChzY29wZSA9PSAwKSB7CiAgICAgICAgIGNoYXIgYnVmWzM1MF07CiAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKQEAgLTE1MDEsMTUgKzE1MzUsMTUgQEAKIAogICAgIGlmIChjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9ucyhjLCBhcmdzLT5hcmdzLCBuYW1lcykpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24gJiYKLSAgICAgICAgY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCBhcmdzLT52YXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+dmFyYXJnYW5ub3RhdGlvbiwgbmFtZXMpKQorICAgIGlmIChhcmdzLT52YXJhcmcgJiYgYXJncy0+dmFyYXJnLT5hbm5vdGF0aW9uICYmCisgICAgICAgIGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oYywgYXJncy0+dmFyYXJnLT5hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+dmFyYXJnLT5hbm5vdGF0aW9uLCBuYW1lcykpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmt3b25seWFyZ3MsIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoYXJncy0+a3dhcmdhbm5vdGF0aW9uICYmCi0gICAgICAgIGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oYywgYXJncy0+a3dhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dhcmdhbm5vdGF0aW9uLCBuYW1lcykpCisgICAgaWYgKGFyZ3MtPmt3YXJnICYmIGFyZ3MtPmt3YXJnLT5hbm5vdGF0aW9uICYmCisgICAgICAgIGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oYywgYXJncy0+a3dhcmctPmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiwgbmFtZXMpKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKCFyZXR1cm5fc3RyKSB7CkBAIC0xNTY4LDYgKzE2MDIsOCBAQAogCiAgICAgaWYgKCFjb21waWxlcl9kZWNvcmF0b3JzKGMsIGRlY29zKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQorICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwogICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7CiAgICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwpAQCAtMTU3NSw4ICsxNjExLDYgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzOwogICAgIH0KLSAgICBpZiAoYXJncy0+ZGVmYXVsdHMpCi0gICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7CiAgICAgbnVtX2Fubm90YXRpb25zID0gY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoYywgYXJncywgcmV0dXJucyk7CiAgICAgaWYgKG51bV9hbm5vdGF0aW9ucyA8IDApCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2MSwxMiArMTY5NSw2IEBACiAgICAgICAgIFB5X0lOQ1JFRihzLT52LkNsYXNzRGVmLm5hbWUpOwogICAgICAgICBQeV9YREVDUkVGKGMtPnUtPnVfcHJpdmF0ZSk7CiAgICAgICAgIGMtPnUtPnVfcHJpdmF0ZSA9IHMtPnYuQ2xhc3NEZWYubmFtZTsKLSAgICAgICAgLyogZm9yY2UgaXQgdG8gaGF2ZSBvbmUgbWFuZGF0b3J5IGFyZ3VtZW50ICovCi0gICAgICAgIGMtPnUtPnVfYXJnY291bnQgPSAxOwotICAgICAgICAvKiBsb2FkIHRoZSBmaXJzdCBhcmd1bWVudCAoX19sb2NhbHNfXykgLi4uICovCi0gICAgICAgIEFERE9QX0koYywgTE9BRF9GQVNULCAwKTsKLSAgICAgICAgLyogLi4uIGFuZCBzdG9yZSBpdCBpbnRvIGZfbG9jYWxzICovCi0gICAgICAgIEFERE9QX0lOX1NDT1BFKGMsIFNUT1JFX0xPQ0FMUyk7CiAgICAgICAgIC8qIGxvYWQgKGdsb2JhbCkgX19uYW1lX18gLi4uICovCiAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOwogICAgICAgICBpZiAoIXN0ciB8fCAhY29tcGlsZXJfbmFtZW9wKGMsIHN0ciwgTG9hZCkpIHsKQEAgLTE3MDMsMjQgKzE3MzEsMjQgQEAKICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICAvKiByZXR1cm4gdGhlIChlbXB0eSkgX19jbGFzc19fIGNlbGwgKi8KLSAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NfXyIpOwotICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2NlbGx2YXJzLCBzdHIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgaWYgKGkgPT0gLTEpIHsKLSAgICAgICAgICAgIC8qIFRoaXMgaGFwcGVucyB3aGVuIG5vYm9keSByZWZlcmVuY2VzIHRoZSBjZWxsICovCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgLyogUmV0dXJuIE5vbmUgKi8KLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSkgeworICAgICAgICAgICAgLyogcmV0dXJuIHRoZSAoZW1wdHkpIF9fY2xhc3NfXyBjZWxsICovCisgICAgICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19jbGFzc19fIik7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9jZWxsdmFycywgc3RyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAgICAgYXNzZXJ0KGkgPT0gMCk7CiAgICAgICAgICAgICAvKiBSZXR1cm4gdGhlIGNlbGwgd2hlcmUgdG8gc3RvcmUgX19jbGFzc19fICovCiAgICAgICAgICAgICBBRERPUF9JKGMsIExPQURfQ0xPU1VSRSwgaSk7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X1NpemUoYy0+dS0+dV9jZWxsdmFycykgPT0gMCk7CisgICAgICAgICAgICAvKiBUaGlzIGhhcHBlbnMgd2hlbiBub2JvZHkgcmVmZXJlbmNlcyB0aGUgY2VsbC4gUmV0dXJuIE5vbmUuICovCisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIH0KICAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKICAgICAgICAgLyogY3JlYXRlIHRoZSBjb2RlIG9iamVjdCAqLwogICAgICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOwpAQCAtMTc5NywxNCArMTgyNSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQorICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwogICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7CiAgICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwogICAgICAgICBpZiAocmVzIDwgMCkgcmV0dXJuIDA7CiAgICAgICAgIGt3X2RlZmF1bHRfY291bnQgPSByZXM7CiAgICAgfQotICAgIGlmIChhcmdzLT5kZWZhdWx0cykKLSAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKICAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIyODgsOCArMjMxNiwxMSBAQAogICAgICAgICAgICAgaWRlbnRpZmllciB0bXAgPSBhbGlhcy0+bmFtZTsKICAgICAgICAgICAgIFB5X3NzaXplX3QgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKAogICAgICAgICAgICAgICAgIGFsaWFzLT5uYW1lLCAnLicsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGFsaWFzLT5uYW1lKSwgMSk7Ci0gICAgICAgICAgICBpZiAoZG90ICE9IC0xKQorICAgICAgICAgICAgaWYgKGRvdCAhPSAtMSkgewogICAgICAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWxpYXMtPm5hbWUsIDAsIGRvdCk7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHIgPSBjb21waWxlcl9uYW1lb3AoYywgdG1wLCBTdG9yZSk7CiAgICAgICAgICAgICBpZiAoZG90ICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CkBAIC0yNjM4LDYgKzI2NjksMTAgQEAKICAgICBpZiAoIW1hbmdsZWQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXNzZXJ0KFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJOb25lIikgJiYKKyAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIlRydWUiKSAmJgorICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiRmFsc2UiKSk7CisKICAgICBvcCA9IDA7CiAgICAgb3B0eXBlID0gT1BfTkFNRTsKICAgICBzY29wZSA9IFB5U1RfR2V0U2NvcGUoYy0+dS0+dV9zdGUsIG1hbmdsZWQpOwpAQCAtMjY3Myw3ICsyNzA4LDkgQEAKICAgICBzd2l0Y2ggKG9wdHlwZSkgewogICAgIGNhc2UgT1BfREVSRUY6CiAgICAgICAgIHN3aXRjaCAoY3R4KSB7Ci0gICAgICAgIGNhc2UgTG9hZDogb3AgPSBMT0FEX0RFUkVGOyBicmVhazsKKyAgICAgICAgY2FzZSBMb2FkOgorICAgICAgICAgICAgb3AgPSAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlID09IENsYXNzQmxvY2spID8gTE9BRF9DTEFTU0RFUkVGIDogTE9BRF9ERVJFRjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0b3JlOiBvcCA9IFNUT1JFX0RFUkVGOyBicmVhazsKICAgICAgICAgY2FzZSBBdWdMb2FkOgogICAgICAgICBjYXNlIEF1Z1N0b3JlOgpAQCAtMzE5NywxMiArMzIzNCwxOCBAQAogICAgIGNhc2UgTmFtZV9raW5kOgogICAgICAgICAvKiBvcHRpbWl6ZSBhd2F5IG5hbWVzIHRoYXQgY2FuJ3QgYmUgcmVhc3NpZ25lZCAqLwogICAgICAgICBpZCA9IFB5VW5pY29kZV9Bc1VURjgoZS0+di5OYW1lLmlkKTsKLSAgICAgICAgaWYgKHN0cmNtcChpZCwgIlRydWUiKSA9PSAwKSByZXR1cm4gMTsKLSAgICAgICAgaWYgKHN0cmNtcChpZCwgIkZhbHNlIikgPT0gMCkgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChzdHJjbXAoaWQsICJOb25lIikgPT0gMCkgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChzdHJjbXAoaWQsICJfX2RlYnVnX18iKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuICEgYy0+Y19vcHRpbWl6ZTsKLSAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgICAgIGlmIChpZCAmJiBzdHJjbXAoaWQsICJfX2RlYnVnX18iKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuICFjLT5jX29wdGltaXplOworICAgICAgICByZXR1cm4gLTE7CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDogeworICAgICAgICBQeU9iamVjdCAqbyA9IGUtPnYuTmFtZUNvbnN0YW50LnZhbHVlOworICAgICAgICBpZiAobyA9PSBQeV9Ob25lKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVsc2UgaWYgKG8gPT0gUHlfVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBlbHNlIGlmIChvID09IFB5X0ZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zMzc4LDYgKzM0MjEsOSBAQAogICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9FbGxpcHNpcywgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52Lk5hbWVDb25zdGFudC52YWx1ZSwgY29uc3RzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgLyogVGhlIGZvbGxvd2luZyBleHBycyBjYW4gYmUgYXNzaWdubWVudCB0YXJnZXRzLiAqLwogICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CiAgICAgICAgIGlmIChlLT52LkF0dHJpYnV0ZS5jdHggIT0gQXVnU3RvcmUpCkBAIC00MDYwLDkgKzQxMDYsOCBAQAogewogICAgIFB5U1RFbnRyeU9iamVjdCAqc3RlID0gYy0+dS0+dV9zdGU7CiAgICAgaW50IGZsYWdzID0gMCwgbjsKLSAgICBpZiAoc3RlLT5zdGVfdHlwZSAhPSBNb2R1bGVCbG9jaykKLSAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTOwogICAgIGlmIChzdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2spIHsKKyAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTOwogICAgICAgICBpZiAoIXN0ZS0+c3RlX3Vub3B0aW1pemVkKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fT1BUSU1JWkVEOwogICAgICAgICBpZiAoc3RlLT5zdGVfbmVzdGVkKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbmR2YXIuaCBiL1B5dGhvbi9jb25kdmFyLmgKaW5kZXggYmJiNDBiYS4uZTAyMmRjNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbmR2YXIuaAorKysgYi9QeXRob24vY29uZHZhci5oCkBAIC0yNDEsNyArMjQxLDcgQEAKICAgICAgKiBidXQgd2UgYXJlIHNhZmUgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzZW1hcGhvcmUgd2ljaCBoYXMgYW4gaW50ZXJuYWwKICAgICAgKiBjb3VudC4KICAgICAgKi8KLSAgICB3YWl0ID0gV2FpdEZvclNpbmdsZU9iamVjdChjdi0+c2VtLCBtcyk7CisgICAgd2FpdCA9IFdhaXRGb3JTaW5nbGVPYmplY3RFeChjdi0+c2VtLCBtcywgRkFMU0UpOwogICAgIFB5TVVURVhfTE9DSyhjcyk7CiAgICAgaWYgKHdhaXQgIT0gV0FJVF9PQkpFQ1RfMCkKICAgICAgICAgLS1jdi0+d2FpdGluZzsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX29zMi5jIGIvUHl0aG9uL2R5bmxvYWRfb3MyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMWI5MDcuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL2R5bmxvYWRfb3MyLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLS8qIFN1cHBvcnQgZm9yIGR5bmFtaWMgbG9hZGluZyBvZiBleHRlbnNpb24gbW9kdWxlcyAqLwotCi0jZGVmaW5lICBJTkNMX0RPU0VSUk9SUwotI2RlZmluZSAgSU5DTF9ET1NNT0RVTEVNR1IKLSNpbmNsdWRlIDxvczIuaD4KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgImltcG9ydGRsLmgiCi0KLQotY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5weWQiLCAiLmRsbCIsIE5VTEx9OwotCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgZGxfZnVuY3B0ciBwOwotICAgIEFQSVJFVCAgcmM7Ci0gICAgSE1PRFVMRSBoRExMOwotICAgIGNoYXIgZmFpbHJlYXNvblsyNTZdOwotICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKLQotICAgIHJjID0gRG9zTG9hZE1vZHVsZShmYWlscmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZmFpbHJlYXNvbiksCi0gICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAmaERMTCk7Ci0KLSAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgY2hhciBlcnJCdWZbMjU2XTsKLSAgICAgICAgUHlPU19zbnByaW50ZihlcnJCdWYsIHNpemVvZihlcnJCdWYpLAotICAgICAgICAgICAgICAgICAgICAgICJETEwgbG9hZCBmYWlsZWQsIHJjID0gJWQ6ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgcmMsIGZhaWxyZWFzb24pOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsIGVyckJ1Zik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKLSAgICByYyA9IERvc1F1ZXJ5UHJvY0FkZHIoaERMTCwgMEwsIGZ1bmNuYW1lLCAmcCk7Ci0gICAgaWYgKHJjICE9IE5PX0VSUk9SKQotICAgICAgICBwID0gTlVMTDsgLyogU2lnbmlmeSBGYWlsdXJlIHRvIEFjcXVpcmUgRW50cnlwb2ludCAqLwotICAgIHJldHVybiBwOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYyBiL1B5dGhvbi9keW5sb2FkX3NobGliLmMKaW5kZXggNzU1NDRlZC4uODg4ZmJmYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYworKysgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCkBAIC0xOCwxMCArMTgsNiBAQAogCiAjaWZkZWYgSEFWRV9ETEZDTl9ICiAjaW5jbHVkZSA8ZGxmY24uaD4KLSNlbHNlCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSNpbmNsdWRlICJkbGZjbi5oIgotI2VuZGlmCiAjZW5kaWYKIAogI2lmIChkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pKSAmJiAhZGVmaW5lZChfX0VMRl9fKQpAQCAtNDAsMTAgKzM2LDYgQEAKICNpZmRlZiBfX0NZR1dJTl9fCiAgICAgIi5kbGwiLAogI2Vsc2UgIC8qICFfX0NZR1dJTl9fICovCi0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICAiLnB5ZCIsCi0gICAgIi5kbGwiLAotI2Vsc2UgIC8qICEoZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykpICovCiAjaWZkZWYgX19WTVMKICAgICAiLmV4ZSIsCiAgICAgIi5FWEUiLApAQCAtNTIsNyArNDQsNiBAQAogICAgICIuYWJpIiBQWVRIT05fQUJJX1NUUklORyAiLnNvIiwKICAgICAiLnNvIiwKICNlbmRpZiAgLyogX19WTVMgKi8KLSNlbmRpZiAgLyogZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykgKi8KICNlbmRpZiAgLyogX19DWUdXSU5fXyAqLwogICAgIE5VTEwsCiB9OwpAQCAtMTE0LDkgKzEwNSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSNpZiAhKGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpKQogICAgIGRsb3BlbmZsYWdzID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5kbG9wZW5mbGFnczsKLSNlbmRpZgogCiAjaWZkZWYgX19WTVMKICAgICAvKiBWTVMgY3VycmVudGx5IGRvbid0IGFsbG93IGEgcGF0aG5hbWUsIHVzZSBhIGxvZ2ljYWwgbmFtZSBpbnN0ZWFkICovCkBAIC0xMzIsMTkgKzEyMSwzMCBAQAogICAgIGhhbmRsZSA9IGRsb3BlbihwYXRobmFtZSwgZGxvcGVuZmxhZ3MpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptb2RfbmFtZSA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKLSAgICAgICAgUHlPYmplY3QgKmVycm9yX29iID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKm1vZF9uYW1lOworICAgICAgICBQeU9iamVjdCAqcGF0aDsKKyAgICAgICAgUHlPYmplY3QgKmVycm9yX29iOwogICAgICAgICBjb25zdCBjaGFyICplcnJvciA9IGRsZXJyb3IoKTsKICAgICAgICAgaWYgKGVycm9yID09IE5VTEwpCiAgICAgICAgICAgICBlcnJvciA9ICJ1bmtub3duIGRsb3BlbigpIGVycm9yIjsKICAgICAgICAgZXJyb3Jfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJvcik7Ci0gICAgICAgIHBhdGggPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgICAgIGlmIChlcnJvcl9vYiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIG1vZF9uYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKTsKKyAgICAgICAgaWYgKG1vZF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlcnJvcl9vYik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocGF0aG5hbWUpOworICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXJyb3Jfb2IpOworICAgICAgICAgICAgUHlfREVDUkVGKG1vZF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKGVycm9yX29iLCBtb2RfbmFtZSwgcGF0aCk7Ci0gICAgICAgIFB5X1hERUNSRUYoZXJyb3Jfb2IpOwotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICBQeV9YREVDUkVGKG1vZF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGVycm9yX29iKTsKKyAgICAgICAgUHlfREVDUkVGKG1vZF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGZwICE9IE5VTEwgJiYgbmhhbmRsZXMgPCAxMjgpCmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggNjI2YjE2ZS4uOGMwYzAxOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtNzEsNiArNzEsMTEgQEAKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IG5vcm1hbGl6ZSB0aGUgdmFsdWUgcmlnaHQgbm93ICovCiAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKmZpeGVkX3ZhbHVlOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbgorICAgICAgICAgICAgICAgZXJyb3IgaWYgYW4gZXhjZXB0aW9uIGlzIHNldCB3aGVuIGl0IGlzIGNhbGxlZCAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewpAQCAtMjI3LDEyICsyMzIsMjEgQEAKICAgICAgICB2YWx1ZSB3aWxsIGJlIGFuIGluc3RhbmNlLgogICAgICovCiAgICAgaWYgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2sodHlwZSkpIHsKKyAgICAgICAgaW50IGlzX3N1YmNsYXNzOworICAgICAgICBpZiAoaW5jbGFzcykgeworICAgICAgICAgICAgaXNfc3ViY2xhc3MgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGluY2xhc3MsIHR5cGUpOworICAgICAgICAgICAgaWYgKGlzX3N1YmNsYXNzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXNfc3ViY2xhc3MgPSAwOworCiAgICAgICAgIC8qIGlmIHRoZSB2YWx1ZSB3YXMgbm90IGFuIGluc3RhbmNlLCBvciBpcyBub3QgYW4gaW5zdGFuY2UKICAgICAgICAgICAgd2hvc2UgY2xhc3MgaXMgKG9yIGlzIGRlcml2ZWQgZnJvbSkgdHlwZSwgdGhlbiB1c2UgdGhlCiAgICAgICAgICAgIHZhbHVlIGFzIGFuIGFyZ3VtZW50IHRvIGluc3RhbnRpYXRpb24gb2YgdGhlIHR5cGUKICAgICAgICAgICAgY2xhc3MuCiAgICAgICAgICovCi0gICAgICAgIGlmICghaW5jbGFzcyB8fCAhUHlPYmplY3RfSXNTdWJjbGFzcyhpbmNsYXNzLCB0eXBlKSkgeworICAgICAgICBpZiAoIWluY2xhc3MgfHwgIWlzX3N1YmNsYXNzKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKnJlczsKIAogICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCkBAIC0zNjYsNiArMzgwLDEyIEBACiBQeU9iamVjdCAqCiBQeUVycl9Ob01lbW9yeSh2b2lkKQogeworICAgIGlmIChQeV9UWVBFKFB5RXhjX01lbW9yeUVycm9yKSA9PSBOVUxMKSB7CisgICAgICAgIC8qIFB5RXJyX05vTWVtb3J5KCkgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSBQeUV4Y19NZW1vcnlFcnJvciBoYXMgYmVlbgorICAgICAgICAgICBpbml0aWFsaXplZCBieSBfUHlFeGNfSW5pdCgpICovCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIk91dCBvZiBtZW1vcnkgYW5kIFB5RXhjX01lbW9yeUVycm9yIGlzIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemVkIHlldCIpOworICAgIH0KICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTU4OCw3ICs2MDgsNyBAQAogCiBQeU9iamVjdCAqUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoaW50IGllcnIpCiB7Ci0gICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWVyciwgTlVMTCk7CiB9CiBQeU9iamVjdCAqUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCkBAIC01OTcsNyArNjE3LDcgQEAKIHsKICAgICBQeU9iamVjdCAqbmFtZSA9IGZpbGVuYW1lID8gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlbmFtZSkgOiBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZXJyLCBuYW1lKTsKICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MTEsNyArNjMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZShmaWxlbmFtZSwgd2NzbGVuKGZpbGVuYW1lKSkgOgogICAgICAgICAgICAgIE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19XaW5kb3dzRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllcnIsIG5hbWUpOwogICAgIFB5X1hERUNSRUYobmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY0Niw4ICs2NjYsMTEgQEAKIAogICAgIFB5X0lOQ1JFRihtc2cpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpOworCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgIm5hbWUiLCBuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbChQeUV4Y19JbXBvcnRFcnJvciwgYXJncywga3dhcmdzKTsKICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewpAQCAtNjc1LDYgKzY5OCw3IEBACiB2b2lkCiBQeUVycl9CYWRJbnRlcm5hbENhbGwodm9pZCkKIHsKKyAgICBhc3NlcnQoMCAmJiAiYmFkIGFyZ3VtZW50IHRvIGludGVybmFsIGZ1bmN0aW9uIik7CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAiYmFkIGFyZ3VtZW50IHRvIGludGVybmFsIGZ1bmN0aW9uIik7CiB9CkBAIC02OTQsNiArNzE4LDEyIEBACiAgICAgdmFfc3RhcnQodmFyZ3MpOwogI2VuZGlmCiAKKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIGluIGRlYnVnIG1vZGUsIFB5RXZhbF9FdmFsRnJhbWVFeCgpIGZhaWxzIHdpdGggYW4gYXNzZXJ0aW9uIGVycm9yCisgICAgICAgaWYgYW4gZXhjZXB0aW9uIGlzIHNldCB3aGVuIGl0IGlzIGNhbGxlZCAqLworICAgIFB5RXJyX0NsZWFyKCk7CisjZW5kaWYKKwogICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKICAgICBQeUVycl9TZXRPYmplY3QoZXhjZXB0aW9uLCBzdHJpbmcpOwogICAgIFB5X1hERUNSRUYoc3RyaW5nKTsKQEAgLTc5OCw3ICs4MjgsMTIgQEAKICAgICBQeUVycl9GZXRjaCgmdCwgJnYsICZ0Yik7CiAgICAgZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CiAgICAgaWYgKGYgIT0gTlVMTCAmJiBmICE9IFB5X05vbmUpIHsKLSAgICAgICAgUHlGaWxlX1dyaXRlU3RyaW5nKCJFeGNlcHRpb24gIiwgZik7CisgICAgICAgIGlmIChvYmopIHsKKyAgICAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiRXhjZXB0aW9uIGlnbm9yZWQgaW46ICIsIGYpOworICAgICAgICAgICAgUHlGaWxlX1dyaXRlT2JqZWN0KG9iaiwgZiwgMCk7CisgICAgICAgICAgICBQeUZpbGVfV3JpdGVTdHJpbmcoIlxuIiwgZik7CisgICAgICAgIH0KKyAgICAgICAgUHlUcmFjZUJhY2tfUHJpbnQodGIsIGYpOwogICAgICAgICBpZiAodCkgewogICAgICAgICAgICAgUHlPYmplY3QqIG1vZHVsZU5hbWU7CiAgICAgICAgICAgICBjaGFyKiBjbGFzc05hbWU7CkBAIC04MjgsMTUgKzg2MywxMSBAQAogICAgICAgICAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZyhjbGFzc05hbWUsIGYpOwogICAgICAgICAgICAgaWYgKHYgJiYgdiAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgUHlGaWxlX1dyaXRlU3RyaW5nKCI6ICIsIGYpOwotICAgICAgICAgICAgICAgIFB5RmlsZV9Xcml0ZU9iamVjdCh2LCBmLCAwKTsKKyAgICAgICAgICAgICAgICBQeUZpbGVfV3JpdGVPYmplY3QodiwgZiwgUHlfUFJJTlRfUkFXKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiXG4iLCBmKTsKICAgICAgICAgICAgIFB5X1hERUNSRUYobW9kdWxlTmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgUHlGaWxlX1dyaXRlU3RyaW5nKCIgaW4gIiwgZik7Ci0gICAgICAgICAgICBQeUZpbGVfV3JpdGVPYmplY3Qob2JqLCBmLCAwKTsKLSAgICAgICAgfQotICAgICAgICBQeUZpbGVfV3JpdGVTdHJpbmcoIiBpZ25vcmVkXG4iLCBmKTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogSnVzdCBpbiBjYXNlICovCiAgICAgfQogICAgIFB5X1hERUNSRUYodCk7CmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggYjdjNDJlOC4uNjk4Mzg1NSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMTYsMTMgKzE2LDEzIEBACiBQeU9iamVjdCAqCiBfUHlfZGV2aWNlX2VuY29kaW5nKGludCBmZCkKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoTVNfV0lONjQpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIFVJTlQgY3A7CiAjZW5kaWYKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaWYgKGZkID09IDApCiAgICAgICAgIGNwID0gR2V0Q29uc29sZUNQKCk7CiAgICAgZWxzZSBpZiAoZmQgPT0gMSB8fCBmZCA9PSAyKQpAQCAtNjAsNyArNjAsNyBAQAogICAgd29ya2Fyb3VuZCBpcyBhbHNvIGVuYWJsZWQgb24gZXJyb3IsIGZvciBleGFtcGxlIGlmIGdldHRpbmcgdGhlIGxvY2FsZQogICAgZmFpbGVkLgogCi0gICBWYWx1ZXMgb2YgbG9jYWxlX2lzX2FzY2lpOgorICAgVmFsdWVzIG9mIGZvcmNlX2FzY2lpOgogCiAgICAgICAgMTogdGhlIHdvcmthcm91bmQgaXMgdXNlZDogX1B5X3djaGFyMmNoYXIoKSB1c2VzCiAgICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBfUHlfY2hhcjJ3Y2hhcigpIHVzZXMKQEAgLTIwMSw3ICsyMDEsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgKmluOwogICAgIHdjaGFyX3QgKm91dDsKIAotICAgIHJlcyA9IFB5TWVtX01hbGxvYygoc3RybGVuKGFyZykrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICByZXMgPSBQeU1lbV9SYXdNYWxsb2MoKHN0cmxlbihhcmcpKzEpKnNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCFyZXMpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yMjksNyArMjI5LDcgQEAKICAgIFVzZSBfUHlfd2NoYXIyY2hhcigpIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyIHN0cmluZyBiYWNrIHRvIGEgYnl0ZSBzdHJpbmcuCiAKICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICh1c2UKLSAgIFB5TWVtX0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkpIGFuZCB3cml0ZSB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gd2lkZQorICAgUHlNZW1fUmF3RnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSkgYW5kIHdyaXRlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiB3aWRlCiAgICBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byAqc2l6ZSBpZiBzaXplIGlzIG5vdCBOVUxMLCBvcgogICAgTlVMTCBvbiBlcnJvciAoZGVjb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLiBJZiBzaXplIGlzIG5vdCBOVUxMLAogICAgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIGFuZCAoc2l6ZV90KS0yIG9uIGRlY29kaW5nCkBAIC0yNTQsOSArMjU0LDkgQEAKICAgICB3Y2hhcl90ICpyZXM7CiAgICAgc2l6ZV90IGFyZ3NpemU7CiAgICAgc2l6ZV90IGNvdW50OworI2lmZGVmIEhBVkVfTUJSVE9XQwogICAgIHVuc2lnbmVkIGNoYXIgKmluOwogICAgIHdjaGFyX3QgKm91dDsKLSNpZmRlZiBIQVZFX01CUlRPV0MKICAgICBtYnN0YXRlX3QgbWJzOwogI2VuZGlmCiAKQEAgLTI4Myw3ICsyODMsNyBAQAogICAgIGFyZ3NpemUgPSBtYnN0b3djcyhOVUxMLCBhcmcsIDApOwogI2VuZGlmCiAgICAgaWYgKGFyZ3NpemUgIT0gKHNpemVfdCktMSkgewotICAgICAgICByZXMgPSAod2NoYXJfdCAqKVB5TWVtX01hbGxvYygoYXJnc2l6ZSsxKSpzaXplb2Yod2NoYXJfdCkpOworICAgICAgICByZXMgPSAod2NoYXJfdCAqKVB5TWVtX1Jhd01hbGxvYygoYXJnc2l6ZSsxKSpzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgIGdvdG8gb29tOwogICAgICAgICBjb3VudCA9IG1ic3Rvd2NzKHJlcywgYXJnLCBhcmdzaXplKzEpOwpAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgICAgICAgICAvKiBPbmx5IHVzZSB0aGUgcmVzdWx0IGlmIGl0IGNvbnRhaW5zIG5vCiAgICAgICAgICAgICAgICBzdXJyb2dhdGUgY2hhcmFjdGVycy4gKi8KICAgICAgICAgICAgIGZvciAodG1wID0gcmVzOyAqdG1wICE9IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAoKnRtcCA8IDB4ZDgwMCB8fCAqdG1wID4gMHhkZmZmKTsgdG1wKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgIVB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKCp0bXApOyB0bXArKykKICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICBpZiAoKnRtcCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpemUgIT0gTlVMTCkKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgUHlNZW1fRnJlZShyZXMpOworICAgICAgICBQeU1lbV9SYXdGcmVlKHJlcyk7CiAgICAgfQogICAgIC8qIENvbnZlcnNpb24gZmFpbGVkLiBGYWxsIGJhY2sgdG8gZXNjYXBpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUuICovCiAjaWZkZWYgSEFWRV9NQlJUT1dDCkBAIC0zMDksNyArMzA5LDcgQEAKICAgICAvKiBPdmVyYWxsb2NhdGU7IGFzIG11bHRpLWJ5dGUgY2hhcmFjdGVycyBhcmUgaW4gdGhlIGFyZ3VtZW50LCB0aGUKICAgICAgICBhY3R1YWwgb3V0cHV0IGNvdWxkIHVzZSBsZXNzIG1lbW9yeS4gKi8KICAgICBhcmdzaXplID0gc3RybGVuKGFyZykgKyAxOwotICAgIHJlcyA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2MoYXJnc2l6ZSpzaXplb2Yod2NoYXJfdCkpOworICAgIHJlcyA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoYXJnc2l6ZSpzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghcmVzKQogICAgICAgICBnb3RvIG9vbTsKICAgICBpbiA9ICh1bnNpZ25lZCBjaGFyKilhcmc7CkBAIC0zMjUsNyArMzI1LDcgQEAKICAgICAgICAgICAgICAgIHNpbmNlIHdlIHByb3ZpZGUgZXZlcnl0aGluZyB0aGF0IHdlIGhhdmUgLQogICAgICAgICAgICAgICAgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDIGxpYnJhcnksIG9yIEkKICAgICAgICAgICAgICAgIG1pc3VuZGVyc3Rvb2QgaG93IG1icnRvd2Mgd29ya3MuICovCi0gICAgICAgICAgICBQeU1lbV9GcmVlKHJlcyk7CisgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHJlcyk7CiAgICAgICAgICAgICBpZiAoc2l6ZSAhPSBOVUxMKQogICAgICAgICAgICAgICAgICpzaXplID0gKHNpemVfdCktMjsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzM4LDcgKzMzOCw3IEBACiAgICAgICAgICAgICBtZW1zZXQoJm1icywgMCwgc2l6ZW9mIG1icyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoKm91dCA+PSAweGQ4MDAgJiYgKm91dCA8PSAweGRmZmYpIHsKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKCpvdXQpKSB7CiAgICAgICAgICAgICAvKiBTdXJyb2dhdGUgY2hhcmFjdGVyLiAgRXNjYXBlIHRoZSBvcmlnaW5hbAogICAgICAgICAgICAgICAgYnl0ZSBzZXF1ZW5jZSB3aXRoIHN1cnJvZ2F0ZWVzY2FwZS4gKi8KICAgICAgICAgICAgIGFyZ3NpemUgLT0gY29udmVydGVkOwpAQCAtNjQ4LDEyICs2NDgsMTIgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoYnVmc2l6IDw9IHIxKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHdjc25jcHkoYnVmLCB3YnVmLCBidWZzaXopOwotICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKICAgICByZXR1cm4gKGludClyMTsKIH0KICNlbmRpZgpAQCAtNjg5LDEyICs2ODksMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChyZXNvbHZlZF9wYXRoX3NpemUgPD0gcikgewotICAgICAgICBQeU1lbV9GcmVlKHdyZXNvbHZlZF9wYXRoKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3cmVzb2x2ZWRfcGF0aCk7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgd2NzbmNweShyZXNvbHZlZF9wYXRoLCB3cmVzb2x2ZWRfcGF0aCwgcmVzb2x2ZWRfcGF0aF9zaXplKTsKLSAgICBQeU1lbV9GcmVlKHdyZXNvbHZlZF9wYXRoKTsKKyAgICBQeU1lbV9SYXdGcmVlKHdyZXNvbHZlZF9wYXRoKTsKICAgICByZXR1cm4gcmVzb2x2ZWRfcGF0aDsKIH0KICNlbmRpZgpAQCAtNzA3LDcgKzcwNyw4IEBACiBfUHlfd2dldGN3ZCh3Y2hhcl90ICpidWYsIHNpemVfdCBzaXplKQogewogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gX3dnZXRjd2QoYnVmLCBzaXplKTsKKyAgICBpbnQgaXNpemUgPSAoaW50KVB5X01JTihzaXplLCBJTlRfTUFYKTsKKyAgICByZXR1cm4gX3dnZXRjd2QoYnVmLCBpc2l6ZSk7CiAjZWxzZQogICAgIGNoYXIgZm5hbWVbUEFUSF9NQVhdOwogICAgIHdjaGFyX3QgKnduYW1lOwpAQCAtNzE5LDExICs3MjAsMTEgQEAKICAgICBpZiAod25hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPD0gbGVuKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUod25hbWUpOworICAgICAgICBQeU1lbV9SYXdGcmVlKHduYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHdjc25jcHkoYnVmLCB3bmFtZSwgc2l6ZSk7Ci0gICAgUHlNZW1fRnJlZSh3bmFtZSk7CisgICAgUHlNZW1fUmF3RnJlZSh3bmFtZSk7CiAgICAgcmV0dXJuIGJ1ZjsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwppbmRleCAyZmU0NDZhLi45YjVhZmY1IDEwMDY0NAotLS0gYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYworKysgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwpAQCAtMzE1LDcgKzMxNSw3IEBACiAKIC8qIERvIHRoZSBwYWRkaW5nLCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgY2FsbGVyLXN1cHBsaWVkCiAgICBjb250ZW50IGdvZXMuICovCi1zdGF0aWMgUHlfc3NpemVfdAorc3RhdGljIGludAogZmlsbF9wYWRkaW5nKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5jaGFycywKICAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhciwgUHlfc3NpemVfdCBuX2xwYWRkaW5nLApAQCAtNTU2LDcgKzU1Niw3IEBACiB7CiAgICAgLyogVXNlZCB0byBrZWVwIHRyYWNrIG9mIGRpZ2l0cywgZGVjaW1hbCwgYW5kIHJlbWFpbmRlci4gKi8KICAgICBQeV9zc2l6ZV90IGRfcG9zID0gZF9zdGFydDsKLSAgICBjb25zdCBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgY29uc3QgdW5zaWduZWQgaW50IGtpbmQgPSB3cml0ZXItPmtpbmQ7CiAgICAgY29uc3Qgdm9pZCAqZGF0YSA9IHdyaXRlci0+ZGF0YTsKICAgICBQeV9zc2l6ZV90IHI7CiAKQEAgLTc1Nyw3ICs3NTcsOCBAQAogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdC0+d2lkdGggPT0gLTEgJiYgZm9ybWF0LT5wcmVjaXNpb24gPT0gLTEpIHsKKyAgICBpZiAoKGZvcm1hdC0+d2lkdGggPT0gLTEgfHwgZm9ybWF0LT53aWR0aCA8PSBsZW4pCisgICAgICAgICYmIChmb3JtYXQtPnByZWNpc2lvbiA9PSAtMSB8fCBmb3JtYXQtPnByZWNpc2lvbiA+PSBsZW4pKSB7CiAgICAgICAgIC8qIEZhc3QgcGF0aCAqLwogICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHZhbHVlKTsKICAgICB9CkBAIC03NzAsOSArNzcxLDEzIEBACiAKICAgICBjYWxjX3BhZGRpbmcobGVuLCBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7CiAKLSAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih2YWx1ZSwgMCwgbGVuKTsKKyAgICBtYXhjaGFyID0gd3JpdGVyLT5tYXhjaGFyOwogICAgIGlmIChscGFkICE9IDAgfHwgcnBhZCAhPSAwKQogICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHZhbHVlKSA+IG1heGNoYXIpIHsKKyAgICAgICAgUHlfVUNTNCB2YWxtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih2YWx1ZSwgMCwgbGVuKTsKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCB2YWxtYXhjaGFyKTsKKyAgICB9CiAKICAgICAvKiBhbGxvY2F0ZSB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLwogICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB0b3RhbCwgbWF4Y2hhcikgPT0gLTEpCkBAIC05NzcsOCArOTgyLDcgQEAKICAgICBQeV9zc2l6ZV90IG5fdG90YWw7CiAgICAgaW50IGhhc19kZWNpbWFsOwogICAgIGRvdWJsZSB2YWw7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb247Ci0gICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CisgICAgaW50IHByZWNpc2lvbiwgZGVmYXVsdF9wcmVjaXNpb24gPSA2OwogICAgIFB5X1VDUzQgdHlwZSA9IGZvcm1hdC0+dHlwZTsKICAgICBpbnQgYWRkX3BjdCA9IDA7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKQEAgLTExMzMsOCArMTEzNyw3IEBACiAgICAgUHlfc3NpemVfdCBuX2ltX3RvdGFsOwogICAgIGludCByZV9oYXNfZGVjaW1hbDsKICAgICBpbnQgaW1faGFzX2RlY2ltYWw7Ci0gICAgaW50IHByZWNpc2lvbjsKLSAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKKyAgICBpbnQgcHJlY2lzaW9uLCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CiAgICAgUHlfVUNTNCB0eXBlID0gZm9ybWF0LT50eXBlOwogICAgIFB5X3NzaXplX3QgaV9yZTsKICAgICBQeV9zc2l6ZV90IGlfaW07CmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggMjVmZGMxNy4uOWJjNjYyYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMjgsNyArMjgsNyBAQAogCiAjZGVmaW5lIFNJWkUgKGludClzaXplb2YoTV9fX2hlbGxvX18pCiAKLXN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CiAgICAgLyogaW1wb3J0bGliICovCiAgICAgeyJfZnJvemVuX2ltcG9ydGxpYiIsIF9QeV9NX19pbXBvcnRsaWIsIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWIpfSwKICAgICAvKiBUZXN0IG1vZHVsZSAqLwpAQCAtNDIsNCArNDIsNCBAQAogLyogRW1iZWRkaW5nIGFwcHMgbWF5IGNoYW5nZSB0aGlzIHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlaXIgZmF2b3JpdGUKICAgIGNvbGxlY3Rpb24gb2YgZnJvemVuIG1vZHVsZXM6ICovCiAKLXN0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzID0gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXM7Citjb25zdCBzdHJ1Y3QgX2Zyb3plbiAqUHlJbXBvcnRfRnJvemVuTW9kdWxlcyA9IF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbm1haW4uYyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKaW5kZXggOGIxZjJkNC4uNTVkMDVmYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbm1haW4uYworKysgYi9QeXRob24vZnJvemVubWFpbi5jCkBAIC0xNiwxOSArMTYsMTkgQEAKIFB5X0Zyb3plbk1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogICAgIGNoYXIgKnA7Ci0gICAgaW50IGksIG4sIHN0czsKKyAgICBpbnQgaSwgbiwgc3RzID0gMTsKICAgICBpbnQgaW5zcGVjdCA9IDA7CiAgICAgaW50IHVuYnVmZmVyZWQgPSAwOwotICAgIGNoYXIgKm9sZGxvYzsKLSAgICB3Y2hhcl90ICoqYXJndl9jb3B5OworICAgIGNoYXIgKm9sZGxvYyA9IE5VTEw7CisgICAgd2NoYXJfdCAqKmFyZ3ZfY29weSA9IE5VTEw7CiAgICAgLyogV2UgbmVlZCBhIHNlY29uZCBjb3BpZXMsIGFzIFB5dGhvbiBtaWdodCBtb2RpZnkgdGhlIGZpcnN0IG9uZS4gKi8KLSAgICB3Y2hhcl90ICoqYXJndl9jb3B5MjsKKyAgICB3Y2hhcl90ICoqYXJndl9jb3B5MiA9IE5VTEw7CiAKLSAgICBhcmd2X2NvcHkgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKHdjaGFyX3QqKSphcmdjKTsKLSAgICBhcmd2X2NvcHkyID0gUHlNZW1fTWFsbG9jKHNpemVvZih3Y2hhcl90KikqYXJnYyk7CisgICAgYXJndl9jb3B5ID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiBhcmdjKTsKKyAgICBhcmd2X2NvcHkyID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiBhcmdjKTsKICAgICBpZiAoIWFyZ3ZfY29weSB8fCAhYXJndl9jb3B5MikgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnlcbiIpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBQeV9Gcm96ZW5GbGFnID0gMTsgLyogU3VwcHJlc3MgZXJyb3JzIGZyb20gZ2V0cGF0aC5jICovCkBAIC00NCwzMiArNDQsMjYgQEAKICAgICAgICAgc2V0YnVmKHN0ZGVyciwgKGNoYXIgKilOVUxMKTsKICAgICB9CiAKLSAgICBvbGRsb2MgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKKyAgICBvbGRsb2MgPSBfUHlNZW1fUmF3U3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKKyAgICBpZiAoIW9sZGxvYykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm91dCBvZiBtZW1vcnlcbiIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKwogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0jaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKLSAgICAgICAgc2l6ZV90IGFyZ3NpemUgPSBzdHJsZW4oYXJndltpXSk7Ci0jZWxzZQotICAgICAgICBzaXplX3QgYXJnc2l6ZSA9IG1ic3Rvd2NzKE5VTEwsIGFyZ3ZbaV0sIDApOwotI2VuZGlmCi0gICAgICAgIHNpemVfdCBjb3VudDsKLSAgICAgICAgaWYgKGFyZ3NpemUgPT0gKHNpemVfdCktMSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCAlZCB0byBzdHJpbmdcbiIsIGkpOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICAgICAgYXJndl9jb3B5W2ldID0gUHlNZW1fTWFsbG9jKChhcmdzaXplKzEpKnNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGFyZ3ZfY29weVtpXSA9IF9QeV9jaGFyMndjaGFyKGFyZ3ZbaV0sIE5VTEwpOwogICAgICAgICBhcmd2X2NvcHkyW2ldID0gYXJndl9jb3B5W2ldOwogICAgICAgICBpZiAoIWFyZ3ZfY29weVtpXSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJvdXQgb2YgbWVtb3J5XG4iKTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGNvdW50ID0gbWJzdG93Y3MoYXJndl9jb3B5W2ldLCBhcmd2W2ldLCBhcmdzaXplKzEpOwotICAgICAgICBpZiAoY291bnQgPT0gKHNpemVfdCktMSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgY29udmVydCBhcmd1bWVudCAlZCB0byBzdHJpbmdcbiIsIGkpOwotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpOworICAgICAgICAgICAgYXJnYyA9IGk7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQogICAgIHNldGxvY2FsZShMQ19BTEwsIG9sZGxvYyk7CisgICAgUHlNZW1fUmF3RnJlZShvbGRsb2MpOworICAgIG9sZGxvYyA9IE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlJbml0RnJvemVuRXh0ZW5zaW9ucygpOwpAQCAtMTAzLDEwICs5NywxNCBAQAogICAgIFB5V2luRnJlZXplX0V4ZVRlcm0oKTsKICNlbmRpZgogICAgIFB5X0ZpbmFsaXplKCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBQeU1lbV9GcmVlKGFyZ3ZfY29weTJbaV0pOworCitlcnJvcjoKKyAgICBQeU1lbV9SYXdGcmVlKGFyZ3ZfY29weSk7CisgICAgaWYgKGFyZ3ZfY29weTIpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKyAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5MltpXSk7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5Mik7CiAgICAgfQotICAgIFB5TWVtX0ZyZWUoYXJndl9jb3B5KTsKLSAgICBQeU1lbV9GcmVlKGFyZ3ZfY29weTIpOworICAgIFB5TWVtX1Jhd0ZyZWUob2xkbG9jKTsKICAgICByZXR1cm4gc3RzOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Z1dHVyZS5jIGIvUHl0aG9uL2Z1dHVyZS5jCmluZGV4IGQyNGFlNDEuLjgwOTc4MTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mdXR1cmUuYworKysgYi9QeXRob24vZnV0dXJlLmMKQEAgLTU4LDExICs1OCwxNSBAQAogc3RhdGljIGludAogZnV0dXJlX3BhcnNlKFB5RnV0dXJlRmVhdHVyZXMgKmZmLCBtb2RfdHkgbW9kLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKLSAgICBpbnQgaSwgZm91bmRfZG9jc3RyaW5nID0gMCwgZG9uZSA9IDAsIHByZXZfbGluZSA9IDA7CisgICAgaW50IGksIGRvbmUgPSAwLCBwcmV2X2xpbmUgPSAwOworICAgIHN0bXRfdHkgZmlyc3Q7CiAKICAgICBpZiAoIShtb2QtPmtpbmQgPT0gTW9kdWxlX2tpbmQgfHwgbW9kLT5raW5kID09IEludGVyYWN0aXZlX2tpbmQpKQogICAgICAgICByZXR1cm4gMTsKIAorICAgIGlmIChhc2RsX3NlcV9MRU4obW9kLT52Lk1vZHVsZS5ib2R5KSA9PSAwKQorICAgICAgICByZXR1cm4gMTsKKwogICAgIC8qIEEgc3Vic2VxdWVudCBwYXNzIHdpbGwgZGV0ZWN0IGZ1dHVyZSBpbXBvcnRzIHRoYXQgZG9uJ3QKICAgICAgICBhcHBlYXIgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gIFRoZXJlJ3Mgb25lIGNhc2UsCiAgICAgICAgaG93ZXZlciwgdGhhdCBpcyBlYXNpZXIgdG8gaGFuZGxlIGhlcmU6IEEgc2VyaWVzIG9mIGltcG9ydHMKQEAgLTcxLDggKzc1LDEzIEBACiAgICAgICAgYnV0IGlzIHByZWNlZGVkIGJ5IGEgcmVndWxhciBpbXBvcnQuCiAgICAgKi8KIAorICAgIGkgPSAwOworICAgIGZpcnN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKG1vZC0+di5Nb2R1bGUuYm9keSwgaSk7CisgICAgaWYgKGZpcnN0LT5raW5kID09IEV4cHJfa2luZCAmJiBmaXJzdC0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kKQorICAgICAgICBpKys7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKG1vZC0+di5Nb2R1bGUuYm9keSk7IGkrKykgeworCisgICAgZm9yICg7IGkgPCBhc2RsX3NlcV9MRU4obW9kLT52Lk1vZHVsZS5ib2R5KTsgaSsrKSB7CiAgICAgICAgIHN0bXRfdHkgcyA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChtb2QtPnYuTW9kdWxlLmJvZHksIGkpOwogCiAgICAgICAgIGlmIChkb25lICYmIHMtPmxpbmVubyA+IHByZXZfbGluZSkKQEAgLTk5LDE4ICsxMDgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgZmYtPmZmX2xpbmVubyA9IHMtPmxpbmVubzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGRvbmUgPSAxOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHMtPmtpbmQgPT0gRXhwcl9raW5kICYmICFmb3VuZF9kb2NzdHJpbmcpIHsKLSAgICAgICAgICAgIGV4cHJfdHkgZSA9IHMtPnYuRXhwci52YWx1ZTsKLSAgICAgICAgICAgIGlmIChlLT5raW5kICE9IFN0cl9raW5kKQotICAgICAgICAgICAgICAgIGRvbmUgPSAxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvdW5kX2RvY3N0cmluZyA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGRvbmUgPSAxOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAxOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGFyZ3MuYyBiL1B5dGhvbi9nZXRhcmdzLmMKaW5kZXggYWU5MzFiOS4uMmMyNjI4ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGFyZ3MuYworKysgYi9QeXRob24vZ2V0YXJncy5jCkBAIC00NiwxNCArNDYsMTYgQEAKIH0gZnJlZWxpc3RlbnRyeV90OwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gIGludCBmaXJzdF9hdmFpbGFibGU7CiAgIGZyZWVsaXN0ZW50cnlfdCAqZW50cmllczsKKyAgaW50IGZpcnN0X2F2YWlsYWJsZTsKKyAgaW50IGVudHJpZXNfbWFsbG9jZWQ7CiB9IGZyZWVsaXN0X3Q7CiAKKyNkZWZpbmUgU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMgOAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKLXN0YXRpYyB2b2lkIHNldGVycm9yKGludCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworc3RhdGljIHZvaWQgc2V0ZXJyb3IoUHlfc3NpemVfdCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKIHN0YXRpYyBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCkBAIC0xODcsNyArMTg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uaXRlbSk7CiAgICAgICB9CiAgICAgfQotICAgIFB5TWVtX0ZSRUUoZnJlZWxpc3QtPmVudHJpZXMpOworICAgIGlmIChmcmVlbGlzdC0+ZW50cmllc19tYWxsb2NlZCkKKyAgICAgICAgUHlNZW1fRlJFRShmcmVlbGlzdC0+ZW50cmllcyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMTk3LDYgKzIwMCw4IEBACiB7CiAgICAgY2hhciBtc2didWZbMjU2XTsKICAgICBpbnQgbGV2ZWxzWzMyXTsKKyAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3QgPSB7c3RhdGljX2VudHJpZXMsIDAsIDB9OwogICAgIGNvbnN0IGNoYXIgKmZuYW1lID0gTlVMTDsKICAgICBjb25zdCBjaGFyICptZXNzYWdlID0gTlVMTDsKICAgICBpbnQgbWluID0gLTE7CkBAIC0yMDYsNyArMjExLDYgQEAKICAgICBjb25zdCBjaGFyICpmb3JtYXRzYXZlID0gZm9ybWF0OwogICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIGNoYXIgKm1zZzsKLSAgICBmcmVlbGlzdF90IGZyZWVsaXN0ID0gezAsIE5VTEx9OwogICAgIGludCBjb21wYXQgPSBmbGFncyAmIEZMQUdfQ09NUEFUOwogCiAgICAgYXNzZXJ0KGNvbXBhdCB8fCAoYXJncyAhPSAoUHlPYmplY3QqKU5VTEwpKTsKQEAgLTI0MCwxNSArMjQ0LDE1IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gZm9ybWF0OwogICAgICAgICAgICAgZW5kZm10ID0gMTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd8JzoKKyAgICAgICAgICAgIGlmIChsZXZlbCA9PSAwKQorICAgICAgICAgICAgICAgIG1pbiA9IG1heDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnTycpCi0gICAgICAgICAgICAgICAgICAgIG1heCsrOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTQUxQSEEoUHlfQ0hBUk1BU0soYykpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5X0lTQUxQSEEoUHlfQ0hBUk1BU0soYykpKQogICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSAnZScpIC8qIHNraXAgZW5jb2RlZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgbWF4Kys7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICd8JykKLSAgICAgICAgICAgICAgICAgICAgbWluID0gbWF4OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI2MiwxMCArMjY2LDEzIEBACiAKICAgICBmb3JtYXQgPSBmb3JtYXRzYXZlOwogCi0gICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIG1heCk7Ci0gICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobWF4ID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKKyAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIG1heCk7CisgICAgICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMTsKICAgICB9CiAKICAgICBpZiAoY29tcGF0KSB7CkBAIC0zNTAsNyArMzU3LDcgQEAKIAogCiBzdGF0aWMgdm9pZAotc2V0ZXJyb3IoaW50IGlhcmcsIGNvbnN0IGNoYXIgKm1zZywgaW50ICpsZXZlbHMsIGNvbnN0IGNoYXIgKmZuYW1lLAorc2V0ZXJyb3IoUHlfc3NpemVfdCBpYXJnLCBjb25zdCBjaGFyICptc2csIGludCAqbGV2ZWxzLCBjb25zdCBjaGFyICpmbmFtZSwKICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgY2hhciBidWZbNTEyXTsKQEAgLTM2Niw3ICszNzMsNyBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChpYXJnICE9IDApIHsKICAgICAgICAgICAgIFB5T1Nfc25wcmludGYocCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAlZCIsIGlhcmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsIGlhcmcpOwogICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICBwICs9IHN0cmxlbihwKTsKICAgICAgICAgICAgIHdoaWxlIChsZXZlbHNbaV0gPiAwICYmIGkgPCAzMiAmJiAoaW50KShwLWJ1ZikgPCAyMjApIHsKQEAgLTU2Myw3ICs1NzAsNyBAQAogICAgICAgICAgICAgICAgICJzaXplIGRvZXMgbm90IGZpdCBpbiBhbiBpbnQiKTsgXAogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIiIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsgXAogICAgICAgICB9IFwKLSAgICAgICAgKnE9czsgXAorICAgICAgICAqcSA9IChpbnQpczsgXAogICAgIH0KICNkZWZpbmUgQlVGRkVSX0xFTiAgICAgICgoZmxhZ3MgJiBGTEFHX1NJWkVfVCkgPyAqcTI6KnEpCiAjZGVmaW5lIFJFVFVSTl9FUlJfT0NDVVJSRUQgcmV0dXJuIG1zZ2J1ZgpAQCAtMTQyMSw3ICsxNDI4LDggQEAKICAgICBpbnQgbWF4ID0gSU5UX01BWDsKICAgICBpbnQgaSwgbGVuLCBuYXJncywgbmtleXdvcmRzOwogICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKLSAgICBmcmVlbGlzdF90IGZyZWVsaXN0ID0gezAsIE5VTEx9OworICAgIGZyZWVsaXN0ZW50cnlfdCBzdGF0aWNfZW50cmllc1tTVEFUSUNfRlJFRUxJU1RfRU5UUklFU107CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdCA9IHtzdGF0aWNfZW50cmllcywgMCwgMH07CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrZXl3b3JkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrZXl3b3JkcykpOwpAQCAtMTQ0NSwxMCArMTQ1MywxMyBAQAogICAgIGZvciAobGVuPTA7IGt3bGlzdFtsZW5dOyBsZW4rKykKICAgICAgICAgY29udGludWU7CiAKLSAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbGVuKTsKLSAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmIChsZW4gPiBTVEFUSUNfRlJFRUxJU1RfRU5UUklFUykgeworICAgICAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbGVuKTsKKyAgICAgICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZyZWVsaXN0LmVudHJpZXNfbWFsbG9jZWQgPSAxOwogICAgIH0KIAogICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKQEAgLTE1NzQsMjAgKzE1ODUsMTYgQEAKICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQoa2V5d29yZHMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgICAgIGludCBtYXRjaCA9IDA7Ci0gICAgICAgICAgICBjaGFyICprczsKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBjaGVjayB0aGF0IF9QeVVuaWNvZGVfQXNTdHJpbmcoKSByZXN1bHQgaXMgbm90IE5VTEwgKi8KLSAgICAgICAgICAgIGtzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwotICAgICAgICAgICAgaWYgKGtzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoa3MsIGt3bGlzdFtpXSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgeworICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghbWF0Y2gpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCBlOTFjZWY4Li5iZTczZDRiIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC0xOSwxNCArMTksNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmZGVmIE1TX1dJTkRPV1MKLS8qIGZvciBzdGF0LnN0X21vZGUgKi8KLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbW9kZV90OwotLyogZm9yIF9ta2RpciAqLwotI2luY2x1ZGUgPGRpcmVjdC5oPgotI2VuZGlmCi0KLQogI2RlZmluZSBDQUNIRURJUiAiX19weWNhY2hlX18iCiAKIC8qIFNlZSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoKSBiZWxvdyAqLwpAQCAtOTMsOCArODUsMTAgQEAKICAgICBpbnQgZXJyID0gMDsKIAogICAgIHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKTsKLSAgICBpZiAocGF0aF9ob29rcyA9PSBOVUxMKQorICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLnBhdGhfaG9va3MiKTsKICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGluc3RhbGxpbmcgemlwaW1wb3J0IGhvb2tcbiIpOwpAQCAtMjA0LDggKzE5OCwxMSBAQAogICAgIGlmIChpbXBvcnRfbG9ja19sZXZlbCA+IDEpIHsKICAgICAgICAgLyogRm9ya2VkIGFzIGEgc2lkZSBlZmZlY3Qgb2YgaW1wb3J0ICovCiAgICAgICAgIGxvbmcgbWUgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7Ci0gICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhpbXBvcnRfbG9jaywgMCk7Ci0gICAgICAgIC8qIFhYWDogY2FuIHRoZSBwcmV2aW91cyBsaW5lIGZhaWw/ICovCisgICAgICAgIC8qIFRoZSBmb2xsb3dpbmcgY291bGQgZmFpbCBpZiB0aGUgbG9jayBpcyBhbHJlYWR5IGhlbGQsIGJ1dCBmb3JraW5nIGFzCisgICAgICAgICAgIGEgc2lkZS1lZmZlY3Qgb2YgYW4gaW1wb3J0IGlzIGEpIHJhcmUsIGIpIG51dHMsIGFuZCBjKSBkaWZmaWN1bHQgdG8KKyAgICAgICAgICAgZG8gdGhhbmtzIHRvIHRoZSBsb2NrIG9ubHkgYmVpbmcgaGVsZCB3aGVuIGRvaW5nIGluZGl2aWR1YWwgbW9kdWxlCisgICAgICAgICAgIGxvY2tzIHBlciBpbXBvcnQuICovCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhpbXBvcnRfbG9jaywgTk9XQUlUX0xPQ0spOwogICAgICAgICBpbXBvcnRfbG9ja190aHJlYWQgPSBtZTsKICAgICAgICAgaW1wb3J0X2xvY2tfbGV2ZWwtLTsKICAgICB9IGVsc2UgewpAQCAtMjgwLDYgKzI3Nyw3IEBACiAgICAgInBhdGgiLCAiYXJndiIsICJwczEiLCAicHMyIiwKICAgICAibGFzdF90eXBlIiwgImxhc3RfdmFsdWUiLCAibGFzdF90cmFjZWJhY2siLAogICAgICJwYXRoX2hvb2tzIiwgInBhdGhfaW1wb3J0ZXJfY2FjaGUiLCAibWV0YV9wYXRoIiwKKyAgICAiX19pbnRlcmFjdGl2ZWhvb2tfXyIsCiAgICAgLyogbWlzYyBzdHVmZiAqLwogICAgICJmbGFncyIsICJmbG9hdF9pbmZvIiwKICAgICBOVUxMCkBAIC0yOTIsMTYgKzI5MCwxNyBAQAogICAgIE5VTEwKIH07CiAKLQogLyogVW4taW5pdGlhbGl6ZSB0aGluZ3MsIGFzIGdvb2QgYXMgd2UgY2FuICovCiAKIHZvaWQKIFB5SW1wb3J0X0NsZWFudXAodm9pZCkKIHsKLSAgICBQeV9zc2l6ZV90IHBvcywgbmRvbmU7CisgICAgUHlfc3NpemVfdCBwb3M7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZGljdDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnMgPSBpbnRlcnAtPmJ1aWx0aW5zOworICAgIFB5T2JqZWN0ICp3ZWFrbGlzdCA9IE5VTEw7CiAKICAgICBpZiAobW9kdWxlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm47IC8qIEFscmVhZHkgZG9uZSAqLwpAQCAtMzEyLDYgKzMxMSw4IEBACiAgICAgICAgZGVsZXRlZCAqbGFzdCogb2YgYWxsLCB0aGV5IHdvdWxkIGNvbWUgdG9vIGxhdGUgaW4gdGhlIG5vcm1hbAogICAgICAgIGRlc3RydWN0aW9uIG9yZGVyLiAgU2lnaC4gKi8KIAorICAgIC8qIFhYWCBQZXJoYXBzIHRoZXNlIHByZWNhdXRpb25zIGFyZSBvYnNvbGV0ZS4gV2hvIGtub3dzPyAqLworCiAgICAgdmFsdWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiYnVpbHRpbnMiKTsKICAgICBpZiAodmFsdWUgIT0gTlVMTCAmJiBQeU1vZHVsZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QodmFsdWUpOwpAQCAtMzM5LDg3ICszNDAsODUgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIEZpcnN0LCBkZWxldGUgX19tYWluX18gKi8KLSAgICB2YWx1ZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsICJfX21haW5fXyIpOwotICAgIGlmICh2YWx1ZSAhPSBOVUxMICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhbnVwIF9fbWFpbl9fXG4iKTsKLSAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgIl9fbWFpbl9fIiwgUHlfTm9uZSk7CisgICAgLyogV2UgcHJlcGFyZSBhIGxpc3Qgd2hpY2ggd2lsbCByZWNlaXZlIChuYW1lLCB3ZWFrcmVmKSB0dXBsZXMgb2YKKyAgICAgICBtb2R1bGVzIHdoZW4gdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzLiAgVGhlIG5hbWUgaXMgdXNlZAorICAgICAgIGZvciBkaWFnbm9zaXMgbWVzc2FnZXMgKGluIHZlcmJvc2UgbW9kZSksIHdoaWxlIHRoZSB3ZWFrcmVmIGhlbHBzCisgICAgICAgZGV0ZWN0IHRob3NlIG1vZHVsZXMgd2hpY2ggaGF2ZSBiZWVuIGhlbGQgYWxpdmUuICovCisgICAgd2Vha2xpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICh3ZWFrbGlzdCA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworCisjZGVmaW5lIFNUT1JFX01PRFVMRV9XRUFLUkVGKG5hbWUsIG1vZCkgXAorICAgIGlmICh3ZWFrbGlzdCAhPSBOVUxMKSB7IFwKKyAgICAgICAgUHlPYmplY3QgKndyID0gUHlXZWFrcmVmX05ld1JlZihtb2QsIE5VTEwpOyBcCisgICAgICAgIGlmIChuYW1lICYmIHdyKSB7IFwKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBQeVR1cGxlX1BhY2soMiwgbmFtZSwgd3IpOyBcCisgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHdlYWtsaXN0LCB0dXApOyBcCisgICAgICAgICAgICBQeV9YREVDUkVGKHR1cCk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFB5X1hERUNSRUYod3IpOyBcCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSBcCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOyBcCiAgICAgfQogCi0gICAgLyogVGhlIHNwZWNpYWwgdHJlYXRtZW50IG9mICJidWlsdGlucyIgaGVyZSBpcyBiZWNhdXNlIGV2ZW4KLSAgICAgICB3aGVuIGl0J3Mgbm90IHJlZmVyZW5jZWQgYXMgYSBtb2R1bGUsIGl0cyBkaWN0aW9uYXJ5IGlzCi0gICAgICAgcmVmZXJlbmNlZCBieSBhbG1vc3QgZXZlcnkgbW9kdWxlJ3MgX19idWlsdGluc19fLiAgU2luY2UKLSAgICAgICBkZWxldGluZyBhIG1vZHVsZSBjbGVhcnMgaXRzIGRpY3Rpb25hcnkgKGV2ZW4gaWYgdGhlcmUgYXJlCi0gICAgICAgcmVmZXJlbmNlcyBsZWZ0IHRvIGl0KSwgd2UgbmVlZCB0byBkZWxldGUgdGhlICJidWlsdGlucyIKLSAgICAgICBtb2R1bGUgbGFzdC4gIExpa2V3aXNlLCB3ZSBkb24ndCBkZWxldGUgc3lzIHVudGlsIHRoZSB2ZXJ5Ci0gICAgICAgZW5kIGJlY2F1c2UgaXQgaXMgaW1wbGljaXRseSByZWZlcmVuY2VkIChlLmcuIGJ5IHByaW50KS4KLQotICAgICAgIEFsc28gbm90ZSB0aGF0IHdlICdkZWxldGUnIG1vZHVsZXMgYnkgcmVwbGFjaW5nIHRoZWlyIGVudHJ5Ci0gICAgICAgaW4gdGhlIG1vZHVsZXMgZGljdCB3aXRoIE5vbmUsIHJhdGhlciB0aGFuIHJlYWxseSBkZWxldGluZwotICAgICAgIHRoZW07IHRoaXMgYXZvaWRzIGEgcmVoYXNoIG9mIHRoZSBtb2R1bGVzIGRpY3Rpb25hcnkgYW5kCi0gICAgICAgYWxzbyBtYXJrcyB0aGVtIGFzICJub24gZXhpc3RlbnQiIHNvIHRoZXkgd29uJ3QgYmUKLSAgICAgICByZS1pbXBvcnRlZC4gKi8KLQotICAgIC8qIE5leHQsIHJlcGVhdGVkbHkgZGVsZXRlIG1vZHVsZXMgd2l0aCBhIHJlZmVyZW5jZSBjb3VudCBvZgotICAgICAgIG9uZSAoc2tpcHBpbmcgYnVpbHRpbnMgYW5kIHN5cykgYW5kIGRlbGV0ZSB0aGVtICovCi0gICAgZG8gewotICAgICAgICBuZG9uZSA9IDA7Ci0gICAgICAgIHBvcyA9IDA7Ci0gICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChtb2R1bGVzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAodmFsdWUtPm9iX3JlZmNudCAhPSAxKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJidWlsdGlucyIpID09IDApCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJzeXMiKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigKLSAgICAgICAgICAgICAgICAgICAgICAgICIjIGNsZWFudXBbMV0gJVVcbiIsIGtleSk7Ci0gICAgICAgICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpOwotICAgICAgICAgICAgICAgIG5kb25lKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlIChuZG9uZSA+IDApOwotCi0gICAgLyogTmV4dCwgZGVsZXRlIGFsbCBtb2R1bGVzIChzdGlsbCBza2lwcGluZyBidWlsdGlucyBhbmQgc3lzKSAqLworICAgIC8qIFJlbW92ZSBhbGwgbW9kdWxlcyBmcm9tIHN5cy5tb2R1bGVzLCBob3BpbmcgdGhhdCBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICBjYW4gcmVjbGFpbSBtb3N0IG9mIHRoZW0uICovCiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQobW9kdWxlcywgJnBvcywgJmtleSwgJnZhbHVlKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiYnVpbHRpbnMiKSA9PSAwKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgInN5cyIpID09IDApCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIGNsZWFudXBbMl0gJVVcbiIsIGtleSk7Ci0gICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIodmFsdWUpOworICAgICAgICBpZiAoUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgJiYgUHlVbmljb2RlX0NoZWNrKGtleSkpCisgICAgICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIGNsZWFudXBbMl0gcmVtb3ZpbmcgJVVcbiIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgU1RPUkVfTU9EVUxFX1dFQUtSRUYoa2V5LCB2YWx1ZSk7CiAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogTmV4dCwgZGVsZXRlIHN5cyBhbmQgYnVpbHRpbnMgKGluIHRoYXQgb3JkZXIpICovCi0gICAgdmFsdWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAic3lzIik7Ci0gICAgaWYgKHZhbHVlICE9IE5VTEwgJiYgUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGNsZWFudXAgc3lzXG4iKTsKLSAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgInN5cyIsIFB5X05vbmUpOwotICAgIH0KLSAgICB2YWx1ZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsICJidWlsdGlucyIpOwotICAgIGlmICh2YWx1ZSAhPSBOVUxMICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhbnVwIGJ1aWx0aW5zXG4iKTsKLSAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgImJ1aWx0aW5zIiwgUHlfTm9uZSk7CisgICAgLyogQ2xlYXIgdGhlIG1vZHVsZXMgZGljdC4gKi8KKyAgICBQeURpY3RfQ2xlYXIobW9kdWxlcyk7CisgICAgLyogUmVwbGFjZSB0aGUgaW50ZXJwcmV0ZXIncyByZWZlcmVuY2UgdG8gYnVpbHRpbnMgd2l0aCBhbiBlbXB0eSBkaWN0CisgICAgICAgKG1vZHVsZSBnbG9iYWxzIHN0aWxsIGhhdmUgYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIGJ1aWx0aW5zKS4gKi8KKyAgICBidWlsdGlucyA9IGludGVycC0+YnVpbHRpbnM7CisgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5RGljdF9OZXcoKTsKKyAgICBQeV9ERUNSRUYoYnVpbHRpbnMpOworICAgIC8qIENvbGxlY3QgcmVmZXJlbmNlcyAqLworICAgIF9QeUdDX0NvbGxlY3ROb0ZhaWwoKTsKKyAgICAvKiBEdW1wIEdDIHN0YXRzIGJlZm9yZSBpdCdzIHRvbyBsYXRlLCBzaW5jZSBpdCB1c2VzIHRoZSB3YXJuaW5ncworICAgICAgIG1hY2hpbmVyeS4gKi8KKyAgICBfUHlHQ19EdW1wU2h1dGRvd25TdGF0cygpOworCisgICAgLyogTm93LCBpZiB0aGVyZSBhcmUgYW55IG1vZHVsZXMgbGVmdCBhbGl2ZSwgY2xlYXIgdGhlaXIgZ2xvYmFscyB0bworICAgICAgIG1pbmltaXplIHBvdGVudGlhbCBsZWFrcy4gIEFsbCBDIGV4dGVuc2lvbiBtb2R1bGVzIGFjdHVhbGx5IGVuZAorICAgICAgIHVwIGhlcmUsIHNpbmNlIHRoZXkgYXJlIGtlcHQgYWxpdmUgaW4gdGhlIGludGVycHJldGVyIHN0YXRlLiAqLworICAgIGlmICh3ZWFrbGlzdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICAgICAgbiA9IFB5TGlzdF9HRVRfU0laRSh3ZWFrbGlzdCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBQeUxpc3RfR0VUX0lURU0od2Vha2xpc3QsIGkpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKHR1cCwgMCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbW9kID0gUHlXZWFrcmVmX0dFVF9PQkpFQ1QoUHlUdXBsZV9HRVRfSVRFTSh0dXAsIDEpKTsKKyAgICAgICAgICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAgICAgYXNzZXJ0KFB5TW9kdWxlX0NoZWNrKG1vZCkpOworICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnICYmIFB5VW5pY29kZV9DaGVjayhuYW1lKSkKKyAgICAgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgY2xlYW51cFszXSB3aXBpbmcgJVVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIG1vZCk7CisgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIobW9kKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtb2QpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih3ZWFrbGlzdCk7CiAgICAgfQogCi0gICAgLyogRmluYWxseSwgY2xlYXIgYW5kIGRlbGV0ZSB0aGUgbW9kdWxlcyBkaXJlY3RvcnkgKi8KLSAgICBQeURpY3RfQ2xlYXIobW9kdWxlcyk7CisgICAgLyogQ2xlYXIgYW5kIGRlbGV0ZSB0aGUgbW9kdWxlcyBkaXJlY3RvcnkuICBBY3R1YWwgbW9kdWxlcyB3aWxsCisgICAgICAgc3RpbGwgYmUgdGhlcmUgb25seSBpZiBpbXBvcnRlZCBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiBzb21lCisgICAgICAgZGVzdHJ1Y3Rvci4gKi8KICAgICBpbnRlcnAtPm1vZHVsZXMgPSBOVUxMOwogICAgIFB5X0RFQ1JFRihtb2R1bGVzKTsKKworICAgIC8qIE9uY2UgbW9yZSAqLworICAgIF9QeUdDX0NvbGxlY3ROb0ZhaWwoKTsKKworI3VuZGVmIFNUT1JFX01PRFVMRV9XRUFLUkVGCiB9CiAKIApAQCAtNDUxLDEyICs0NTAsMTIgQEAKIAogLyogTWFnaWMgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIChidWlsdC1pbiBhcyB3ZWxsIGFzIGR5bmFtaWNhbGx5CiAgICBsb2FkZWQpLiAgVG8gcHJldmVudCBpbml0aWFsaXppbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZSBtb3JlIHRoYW4KLSAgIG9uY2UsIHdlIGtlZXAgYSBzdGF0aWMgZGljdGlvbmFyeSAnZXh0ZW5zaW9ucycga2V5ZWQgYnkgbW9kdWxlIG5hbWUKLSAgIChmb3IgYnVpbHQtaW4gbW9kdWxlcykgb3IgYnkgZmlsZW5hbWUgKGZvciBkeW5hbWljYWxseSBsb2FkZWQKLSAgIG1vZHVsZXMpLCBjb250YWluaW5nIHRoZXNlIG1vZHVsZXMuICBBIGNvcHkgb2YgdGhlIG1vZHVsZSdzCi0gICBkaWN0aW9uYXJ5IGlzIHN0b3JlZCBieSBjYWxsaW5nIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdCgpCi0gICBpbW1lZGlhdGVseSBhZnRlciB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHN1Y2NlZWRzLiAgQQotICAgY29weSBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlcmUgYnkgY2FsbGluZworICAgb25jZSwgd2Uga2VlcCBhIHN0YXRpYyBkaWN0aW9uYXJ5ICdleHRlbnNpb25zJyBrZXllZCBieSB0aGUgdHVwbGUKKyAgIChtb2R1bGUgbmFtZSwgbW9kdWxlIG5hbWUpICAoZm9yIGJ1aWx0LWluIG1vZHVsZXMpIG9yIGJ5CisgICAoZmlsZW5hbWUsIG1vZHVsZSBuYW1lKSAoZm9yIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzKSwgY29udGFpbmluZyB0aGVzZQorICAgbW9kdWxlcy4gIEEgY29weSBvZiB0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyBzdG9yZWQgYnkgY2FsbGluZworICAgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KCkgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbgorICAgZnVuY3Rpb24gc3VjY2VlZHMuICBBIGNvcHkgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZXJlIGJ5IGNhbGxpbmcKICAgIF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KCkuCiAKICAgIE1vZHVsZXMgd2hpY2ggZG8gc3VwcG9ydCBtdWx0aXBsZSBpbml0aWFsaXphdGlvbiBzZXQgdGhlaXIgbV9zaXplCkBAIC00NjksOCArNDY4LDkgQEAKIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMsICpkaWN0OworICAgIFB5T2JqZWN0ICptb2R1bGVzLCAqZGljdCwgKmtleTsKICAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKKyAgICBpbnQgcmVzOwogICAgIGlmIChleHRlbnNpb25zID09IE5VTEwpIHsKICAgICAgICAgZXh0ZW5zaW9ucyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKGV4dGVuc2lvbnMgPT0gTlVMTCkKQEAgLTUwNyw3ICs1MDcsMTMgQEAKICAgICAgICAgaWYgKGRlZi0+bV9iYXNlLm1fY29weSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBQeURpY3RfU2V0SXRlbShleHRlbnNpb25zLCBmaWxlbmFtZSwgKFB5T2JqZWN0KilkZWYpOworICAgIGtleSA9IFB5VHVwbGVfUGFjaygyLCBmaWxlbmFtZSwgbmFtZSk7CisgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZXh0ZW5zaW9ucywga2V5LCAoUHlPYmplY3QgKilkZWYpOworICAgIFB5X0RFQ1JFRihrZXkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTUyNywxMSArNTMzLDE1IEBACiBQeU9iamVjdCAqCiBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQogewotICAgIFB5T2JqZWN0ICptb2QsICptZGljdDsKKyAgICBQeU9iamVjdCAqbW9kLCAqbWRpY3QsICprZXk7CiAgICAgUHlNb2R1bGVEZWYqIGRlZjsKICAgICBpZiAoZXh0ZW5zaW9ucyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkZWYgPSAoUHlNb2R1bGVEZWYqKVB5RGljdF9HZXRJdGVtKGV4dGVuc2lvbnMsIGZpbGVuYW1lKTsKKyAgICBrZXkgPSBQeVR1cGxlX1BhY2soMiwgZmlsZW5hbWUsIG5hbWUpOworICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZGVmID0gKFB5TW9kdWxlRGVmICopUHlEaWN0X0dldEl0ZW0oZXh0ZW5zaW9ucywga2V5KTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKICAgICBpZiAoZGVmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChkZWYtPm1fc2l6ZSA9PSAtMSkgewpAQCAtNjkzLDcgKzcwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBpbnRlcnByZXRlciEiKTsKICAgICAgICAgfQogCi0gICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgcGF0aG9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQpAQCAtODM1LDcgKzg0NSw3IEBACiAKIAogLyogRm9yd2FyZCAqLwotc3RhdGljIHN0cnVjdCBfZnJvemVuICogZmluZF9mcm96ZW4oUHlPYmplY3QgKik7CitzdGF0aWMgY29uc3Qgc3RydWN0IF9mcm96ZW4gKiBmaW5kX2Zyb3plbihQeU9iamVjdCAqKTsKIAogCiAvKiBIZWxwZXIgdG8gdGVzdCBmb3IgYnVpbHQtaW4gbW9kdWxlICovCkBAIC05MTcsMTEgKzkyNywxMSBAQAogUHlJbXBvcnRfR2V0SW1wb3J0ZXIoUHlPYmplY3QgKnBhdGgpIHsKICAgICBQeU9iamVjdCAqaW1wb3J0ZXI9TlVMTCwgKnBhdGhfaW1wb3J0ZXJfY2FjaGU9TlVMTCwgKnBhdGhfaG9va3M9TlVMTDsKIAotICAgIGlmICgocGF0aF9pbXBvcnRlcl9jYWNoZSA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9pbXBvcnRlcl9jYWNoZSIpKSkgewotICAgICAgICBpZiAoKHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKSkpIHsKLSAgICAgICAgICAgIGltcG9ydGVyID0gZ2V0X3BhdGhfaW1wb3J0ZXIocGF0aF9pbXBvcnRlcl9jYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcywgcGF0aCk7Ci0gICAgICAgIH0KKyAgICBwYXRoX2ltcG9ydGVyX2NhY2hlID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoX2ltcG9ydGVyX2NhY2hlIik7CisgICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOworICAgIGlmIChwYXRoX2ltcG9ydGVyX2NhY2hlICE9IE5VTEwgJiYgcGF0aF9ob29rcyAhPSBOVUxMKSB7CisgICAgICAgIGltcG9ydGVyID0gZ2V0X3BhdGhfaW1wb3J0ZXIocGF0aF9pbXBvcnRlcl9jYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzLCBwYXRoKTsKICAgICB9CiAgICAgUHlfWElOQ1JFRihpbXBvcnRlcik7IC8qIGdldF9wYXRoX2ltcG9ydGVyIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UgKi8KICAgICByZXR1cm4gaW1wb3J0ZXI7CkBAIC05NzIsMTAgKzk4MiwxMCBAQAogCiAvKiBGcm96ZW4gbW9kdWxlcyAqLwogCi1zdGF0aWMgc3RydWN0IF9mcm96ZW4gKgorc3RhdGljIGNvbnN0IHN0cnVjdCBfZnJvemVuICoKIGZpbmRfZnJvemVuKFB5T2JqZWN0ICpuYW1lKQogewotICAgIHN0cnVjdCBfZnJvemVuICpwOworICAgIGNvbnN0IHN0cnVjdCBfZnJvemVuICpwOwogCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05OTIsNyArMTAwMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKKyAgICBjb25zdCBzdHJ1Y3QgX2Zyb3plbiAqcCA9IGZpbmRfZnJvemVuKG5hbWUpOwogICAgIGludCBzaXplOwogCiAgICAgaWYgKHAgPT0gTlVMTCkgewpAQCAtMTAxNiw3ICsxMDI2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpc19mcm96ZW5fcGFja2FnZShQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdHJ1Y3QgX2Zyb3plbiAqcCA9IGZpbmRfZnJvemVuKG5hbWUpOworICAgIGNvbnN0IHN0cnVjdCBfZnJvemVuICpwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgaW50IHNpemU7CiAKICAgICBpZiAocCA9PSBOVUxMKSB7CkBAIC0xMDQzLDcgKzEwNTMsNyBAQAogaW50CiBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgc3RydWN0IF9mcm96ZW4gKnA7CisgICAgY29uc3Qgc3RydWN0IF9mcm96ZW4gKnA7CiAgICAgUHlPYmplY3QgKmNvLCAqbSwgKnBhdGg7CiAgICAgaW50IGlzcGFja2FnZTsKICAgICBpbnQgc2l6ZTsKQEAgLTEwNzIsMTkgKzEwODIsMTcgQEAKICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNwYWNrYWdlKSB7Ci0gICAgICAgIC8qIFNldCBfX3BhdGhfXyB0byB0aGUgcGFja2FnZSBuYW1lICovCisgICAgICAgIC8qIFNldCBfX3BhdGhfXyB0byB0aGUgZW1wdHkgbGlzdCAqLwogICAgICAgICBQeU9iamVjdCAqZCwgKmw7CiAgICAgICAgIGludCBlcnI7CiAgICAgICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgICAgICBsID0gUHlMaXN0X05ldygxKTsKKyAgICAgICAgbCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgICAgIGlmIChsID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobmFtZSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShsLCAwLCBuYW1lKTsKICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fcGF0aF9fIiwgbCk7CiAgICAgICAgIFB5X0RFQ1JFRihsKTsKICAgICAgICAgaWYgKGVyciAhPSAwKQpAQCAtMTQzMCw3ICsxNDM4LDcgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID4gMCkgewogICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCi0gICAgICAgICAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCkBAIC0xNDQ4LDcgKzE0NTYsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogX2Jvb3RzdHJhcC5fZmluZF9hbmRfbG9hZCgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLwotICAgICAgICBtb2QgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19maW5kX2FuZF9sb2FkLCBhYnNfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNfaW1wb3J0LCBOVUxMKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CkBAIC0xNTE3LDcgKzE1MjUsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBmaW5hbF9tb2QgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CkBAIC0xNzcxLDcgKzE3NzksNyBAQAogaW1wX2lzX2Zyb3plbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgc3RydWN0IF9mcm96ZW4gKnA7CisgICAgY29uc3Qgc3RydWN0IF9mcm96ZW4gKnA7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcCA9IGZpbmRfZnJvemVuKG5hbWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCAwZWE5NTRjLi5iNjBmMWM3IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtNzcsNiArNzcsOCBAQAogICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiAoUHlJbml0XyVzKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWUsIHBhdGgpOwogICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgZ290byBlcnJvcjsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5oIGIvUHl0aG9uL2ltcG9ydGRsLmgKaW5kZXggNmI5Y2Y3NS4uNmE1MWE5MSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmgKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmgKQEAgLTE4LDEzICsxOCw4IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogdHlwZWRlZiBGQVJQUk9DIGRsX2Z1bmNwdHI7CiAjZWxzZQotI2lmIGRlZmluZWQoUFlPU19PUzIpICYmICFkZWZpbmVkKFBZQ0NfR0NDKQotI2luY2x1ZGUgPG9zMmRlZi5oPgotdHlwZWRlZiBpbnQgKCogQVBJRU5UUlkgZGxfZnVuY3B0cikoKTsKLSNlbHNlCiB0eXBlZGVmIHZvaWQgKCpkbF9mdW5jcHRyKSh2b2lkKTsKICNlbmRpZgotI2VuZGlmCiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliLmggYi9QeXRob24vaW1wb3J0bGliLmgKaW5kZXggOGY4YzZjNi4uNTFhYWU3ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGxpYi5oCisrKyBiL1B5dGhvbi9pbXBvcnRsaWIuaApAQCAtMSw4ICsxLDggQEAKIC8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwotdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7Citjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKICAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwyMDYsMywwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEzMSwwLDkwLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKKyAgICAwLDY0LDAsMCwwLDExNSw3Miw0LDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsMTQ1LDAsOTAsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAogICAgIDIsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCwzLDAsMTAwLDgsCiAgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAogICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCkBAIC0xMSw0MTYgKzExLDM1MCBAQAogICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEwMCwyMiwwLDEzMiwKICAgICAxLDAsOTAsMTAsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMCwwLDkwLDExLAogICAgIDAsMTAxLDEyLDAsMTAxLDExLDAsMTA2LDEzLDAsMTMxLDEsMCw5MCwxNCwwLAotICAgIDEwMCwyNSwwLDEwMCwyNiwwLDEzMiwwLDAsOTAsMTUsMCwxMDUsMCwwLDkwLAotICAgIDE2LDAsMTA1LDAsMCw5MCwxNywwLDcxLDEwMCwyNywwLDEwMCwyOCwwLDEzMiwKLSAgICAwLDAsMTAwLDI4LDAsMTAxLDE4LDAsMTMxLDMsMCw5MCwxOSwwLDcxLDEwMCwKLSAgICAyOSwwLDEwMCwzMCwwLDEzMiwwLDAsMTAwLDMwLDAsMTMxLDIsMCw5MCwyMCwKLSAgICAwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLDAsMTAwLDMyLDAsMTMxLDIsCisgICAgMTA1LDAsMCw5MCwxNSwwLDEwNSwwLDAsOTAsMTYsMCw3MSwxMDAsMjUsMCwKKyAgICAxMDAsMjYsMCwxMzIsMCwwLDEwMCwyNiwwLDEwMSwxNywwLDEzMSwzLDAsOTAsCisgICAgMTgsMCw3MSwxMDAsMjcsMCwxMDAsMjgsMCwxMzIsMCwwLDEwMCwyOCwwLDEzMSwKKyAgICAyLDAsOTAsMTksMCw3MSwxMDAsMjksMCwxMDAsMzAsMCwxMzIsMCwwLDEwMCwKKyAgICAzMCwwLDEzMSwyLDAsOTAsMjAsMCwxMDAsMzEsMCwxMDAsMzIsMCwxMzIsMCwKICAgICAwLDkwLDIxLDAsMTAwLDMzLDAsMTAwLDM0LDAsMTMyLDAsMCw5MCwyMiwwLAotICAgIDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwwLDAsOTAsMjMsMCwxMDAsMzcsMCwxMDAsCi0gICAgMzgsMCwxMzIsMCwwLDkwLDI0LDAsMTAwLDM5LDAsMTAxLDI1LDAsMTAwLDQwLAotICAgIDAsMTMxLDEsMCwxMDAsNDEsMCw2Miw2NiwxMDEsMjUsMCwxMDAsNDIsMCwxMzEsCi0gICAgMSwwLDEwMCw0MywwLDYyLDY2LDkwLDI2LDAsMTAxLDI3LDAsMTAwLDQ0LDAsCi0gICAgMTAwLDQ1LDAsMTMyLDAsMCwxMDEsMjgsMCwxMDAsNDYsMCwxMDAsNDcsMCwxMDAsCi0gICAgNDgsMCwxMzEsMywwLDY4LDEzMSwxLDAsMTMxLDEsMCw5MCwyOSwwLDEwMCwKLSAgICA0OSwwLDkwLDMwLDAsMTAwLDUwLDAsMTAzLDEsMCw5MCwzMSwwLDEwMCw1MSwKLSAgICAwLDEwMywxLDAsOTAsMzIsMCwxMDAsNTIsMCwxMDMsMSwwLDkwLDMzLDAsCi0gICAgMTAwLDEzMCwwLDEwMCw1MywwLDEwMCw1NCwwLDEzMiwxLDAsOTAsMzUsMCwxMDAsCi0gICAgNTUsMCwxMDAsNTYsMCwxMzIsMCwwLDkwLDM2LDAsMTAwLDU3LDAsMTAwLDU4LAotICAgIDAsMTMyLDAsMCw5MCwzNywwLDEwMCw1OSwwLDEwMCw2MCwwLDEwMCw2MSwwLAotICAgIDEwMCw2MiwwLDEzMiwwLDEsOTAsMzgsMCwxMDAsNjMsMCwxMDAsNjQsMCwxMzIsCi0gICAgMCwwLDkwLDM5LDAsMTAwLDY1LDAsMTAwLDY2LDAsMTMyLDAsMCw5MCw0MCwKLSAgICAwLDEwMCw2NywwLDEwMCw2OCwwLDEzMiwwLDAsOTAsNDEsMCwxMDAsNjksMCwKLSAgICAxMDAsNzAsMCwxMzIsMCwwLDkwLDQyLDAsMTAwLDcxLDAsMTAwLDcyLDAsMTMyLAotICAgIDAsMCw5MCw0MywwLDEwMCw3MywwLDEwMCw3NCwwLDEzMiwwLDAsOTAsNDQsCi0gICAgMCwxMDAsNzUsMCwxMDAsNzYsMCwxMzIsMCwwLDkwLDQ1LDAsNzEsMTAwLDc3LAotICAgIDAsMTAwLDc4LDAsMTMyLDAsMCwxMDAsNzgsMCwxMzEsMiwwLDkwLDQ2LDAsCi0gICAgNzEsMTAwLDc5LDAsMTAwLDgwLDAsMTMyLDAsMCwxMDAsODAsMCwxMzEsMiwwLAotICAgIDkwLDQ3LDAsNzEsMTAwLDgxLDAsMTAwLDgyLDAsMTMyLDAsMCwxMDAsODIsMCwKLSAgICAxMzEsMiwwLDkwLDQ4LDAsNzEsMTAwLDgzLDAsMTAwLDg0LDAsMTMyLDAsMCwKLSAgICAxMDAsODQsMCwxMzEsMiwwLDkwLDQ5LDAsNzEsMTAwLDg1LDAsMTAwLDg2LDAsCi0gICAgMTMyLDAsMCwxMDAsODYsMCwxMDEsNDksMCwxMzEsMywwLDkwLDUwLDAsNzEsCi0gICAgMTAwLDg3LDAsMTAwLDg4LDAsMTMyLDAsMCwxMDAsODgsMCwxMzEsMiwwLDkwLAotICAgIDUxLDAsNzEsMTAwLDg5LDAsMTAwLDkwLDAsMTMyLDAsMCwxMDAsOTAsMCwxMDEsCi0gICAgNTEsMCwxMDEsNTAsMCwxMzEsNCwwLDkwLDUyLDAsNzEsMTAwLDkxLDAsMTAwLAotICAgIDkyLDAsMTMyLDAsMCwxMDAsOTIsMCwxMDEsNTEsMCwxMDEsNDksMCwxMzEsNCwKLSAgICAwLDkwLDUzLDAsMTAzLDAsMCw5MCw1NCwwLDcxLDEwMCw5MywwLDEwMCw5NCwKLSAgICAwLDEzMiwwLDAsMTAwLDk0LDAsMTMxLDIsMCw5MCw1NSwwLDcxLDEwMCw5NSwKLSAgICAwLDEwMCw5NiwwLDEzMiwwLDAsMTAwLDk2LDAsMTMxLDIsMCw5MCw1NiwwLAotICAgIDcxLDEwMCw5NywwLDEwMCw5OCwwLDEzMiwwLDAsMTAwLDk4LDAsMTMxLDIsMCwKLSAgICA5MCw1NywwLDcxLDEwMCw5OSwwLDEwMCwxMDAsMCwxMzIsMCwwLDEwMCwxMDAsMCwKLSAgICAxMzEsMiwwLDkwLDU4LDAsNzEsMTAwLDEwMSwwLDEwMCwxMDIsMCwxMzIsMCwwLAotICAgIDEwMCwxMDIsMCwxMzEsMiwwLDkwLDU5LDAsNzEsMTAwLDEwMywwLDEwMCwxMDQsMCwKLSAgICAxMzIsMCwwLDEwMCwxMDQsMCwxMzEsMiwwLDkwLDYwLDAsMTAwLDEwNSwwLDEwMCwKLSAgICAxMDYsMCwxMzIsMCwwLDkwLDYxLDAsMTAwLDEwNywwLDEwMCwxMDgsMCwxMzIsMCwKLSAgICAwLDkwLDYyLDAsMTAwLDEwOSwwLDEwMCwxMTAsMCwxMzIsMCwwLDkwLDYzLDAsCi0gICAgMTAwLDExMSwwLDkwLDY0LDAsMTAwLDExMiwwLDEwMCwxMTMsMCwxMzIsMCwwLDkwLAotICAgIDY1LDAsMTAwLDExNCwwLDEwMCwxMTUsMCwxMzIsMCwwLDkwLDY2LDAsMTAwLDEzMCwKLSAgICAwLDEwMCw0NiwwLDEwMCwxMTYsMCwxMDAsMTE3LDAsMTMyLDIsMCw5MCw2NywwLAotICAgIDEwMCwxMTgsMCwxMDAsMTE5LDAsMTMyLDAsMCw5MCw2OCwwLDEwMCwxMjAsMCwxMDAsCi0gICAgMTIxLDAsMTMyLDAsMCw5MCw2OSwwLDEwMCwxMjIsMCwxMDAsMTIzLDAsMTMyLDAsCi0gICAgMCw5MCw3MCwwLDEwMCwxMzAsMCwxMDAsMTMwLDAsMTAyLDAsMCwxMDAsNDYsMCwKLSAgICAxMDAsMTI0LDAsMTAwLDEyNSwwLDEzMiw0LDAsOTAsNzEsMCwxMDAsMTI2LDAsMTAwLAotICAgIDEyNywwLDEzMiwwLDAsOTAsNzIsMCwxMDAsMTI4LDAsMTAwLDEyOSwwLDEzMiwwLAotICAgIDAsOTAsNzMsMCwxMDAsMTMwLDAsODMsNDAsMTMyLDAsMCwwLDExNyw4MywxLAotICAgIDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICAxMDAsMzUsMCwxMDAsMzYsMCwxMzIsMCwwLDkwLDIzLDAsMTAwLDM3LDAsMTA2LAorICAgIDI0LDAsMTAwLDM4LDAsMTAwLDM5LDAsMTMxLDIsMCwxMDAsNDAsMCwyMyw5MCwKKyAgICAyNSwwLDEwMSwyNiwwLDEwNiwyNywwLDEwMSwyNSwwLDEwMCwzOSwwLDEzMSwyLAorICAgIDAsOTAsMjgsMCwxMDAsNDEsMCw5MCwyOSwwLDEwMCw0MiwwLDEwMywxLDAsCisgICAgOTAsMzAsMCwxMDAsNDMsMCwxMDMsMSwwLDkwLDMxLDAsMTAwLDQ0LDAsMTAzLAorICAgIDEsMCw5MCwzMiwwLDEwMCw0NSwwLDEwMCw0NiwwLDEwMCw0NywwLDEzMiwxLAorICAgIDAsOTAsMzMsMCwxMDAsNDgsMCwxMDAsNDksMCwxMzIsMCwwLDkwLDM0LDAsCisgICAgMTAwLDUwLDAsMTAwLDUxLDAsMTMyLDAsMCw5MCwzNSwwLDEwMCw1MiwwLDEwMCwKKyAgICA1MywwLDEzMiwwLDAsOTAsMzYsMCwxMDAsNTQsMCwxMDAsNTUsMCwxMDAsNTYsCisgICAgMCwxMDAsNTcsMCwxMzIsMCwxLDkwLDM3LDAsNzEsMTAwLDU4LDAsMTAwLDU5LAorICAgIDAsMTMyLDAsMCwxMDAsNTksMCwxMzEsMiwwLDkwLDM4LDAsNzEsMTAwLDYwLAorICAgIDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsNjEsMCwxMDEsMzgsMCwxMzEsMywwLAorICAgIDkwLDM5LDAsMTAwLDYyLDAsMTAwLDYzLDAsMTAwLDY0LDAsMTAwLDY1LDAsMTMyLAorICAgIDAsMSw5MCw0MCwwLDEwMCw2NiwwLDEwMCw2NywwLDEzMiwwLDAsOTAsNDEsCisgICAgMCwxMDAsNjgsMCwxMDAsNjksMCwxMzIsMCwwLDkwLDQyLDAsMTAwLDcwLDAsCisgICAgMTAwLDcxLDAsMTMyLDAsMCw5MCw0MywwLDEwMCw3MiwwLDEwMCw3MywwLDEzMiwKKyAgICAwLDAsOTAsNDQsMCwxMDAsNzQsMCwxMDAsNzUsMCwxMzIsMCwwLDkwLDQ1LAorICAgIDAsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCw5MCw0NiwwLDEwMCw3OCwwLAorICAgIDEwMCw3OSwwLDEzMiwwLDAsOTAsNDcsMCwxMDAsODAsMCwxMDAsODEsMCwxMzIsCisgICAgMCwwLDkwLDQ4LDAsMTAwLDQ1LDAsMTAwLDQ1LDAsMTAwLDQ1LDAsMTAwLDgyLAorICAgIDAsMTAwLDgzLDAsMTMyLDMsMCw5MCw0OSwwLDEwMCw0NSwwLDEwMCw0NSwwLAorICAgIDEwMCw0NSwwLDEwMCw4NCwwLDEwMCw4NSwwLDEzMiwzLDAsOTAsNTAsMCwxMDAsCisgICAgODYsMCwxMDAsODYsMCwxMDAsODcsMCwxMDAsODgsMCwxMzIsMiwwLDkwLDUxLAorICAgIDAsMTAwLDg5LDAsMTAwLDkwLDAsMTMyLDAsMCw5MCw1MiwwLDcxLDEwMCw5MSwKKyAgICAwLDEwMCw5MiwwLDEzMiwwLDAsMTAwLDkyLDAsMTMxLDIsMCw5MCw1MywwLAorICAgIDcxLDEwMCw5MywwLDEwMCw5NCwwLDEzMiwwLDAsMTAwLDk0LDAsMTMxLDIsMCwKKyAgICA5MCw1NCwwLDcxLDEwMCw5NSwwLDEwMCw5NiwwLDEzMiwwLDAsMTAwLDk2LDAsCisgICAgMTMxLDIsMCw5MCw1NSwwLDcxLDEwMCw5NywwLDEwMCw5OCwwLDEzMiwwLDAsCisgICAgMTAwLDk4LDAsMTMxLDIsMCw5MCw1NiwwLDcxLDEwMCw5OSwwLDEwMCwxMDAsMCwKKyAgICAxMzIsMCwwLDEwMCwxMDAsMCwxMDEsNTYsMCwxMzEsMywwLDkwLDU3LDAsNzEsCisgICAgMTAwLDEwMSwwLDEwMCwxMDIsMCwxMzIsMCwwLDEwMCwxMDIsMCwxMzEsMiwwLDkwLAorICAgIDU4LDAsNzEsMTAwLDEwMywwLDEwMCwxMDQsMCwxMzIsMCwwLDEwMCwxMDQsMCwxMDEsCisgICAgNTgsMCwxMDEsNTcsMCwxMzEsNCwwLDkwLDU5LDAsNzEsMTAwLDEwNSwwLDEwMCwKKyAgICAxMDYsMCwxMzIsMCwwLDEwMCwxMDYsMCwxMDEsNTgsMCwxMDEsNTYsMCwxMzEsNCwKKyAgICAwLDkwLDYwLDAsMTAzLDAsMCw5MCw2MSwwLDcxLDEwMCwxMDcsMCwxMDAsMTA4LAorICAgIDAsMTMyLDAsMCwxMDAsMTA4LDAsMTMxLDIsMCw5MCw2MiwwLDcxLDEwMCwxMDksCisgICAgMCwxMDAsMTEwLDAsMTMyLDAsMCwxMDAsMTEwLDAsMTMxLDIsMCw5MCw2MywwLAorICAgIDcxLDEwMCwxMTEsMCwxMDAsMTEyLDAsMTMyLDAsMCwxMDAsMTEyLDAsMTMxLDIsMCwKKyAgICA5MCw2NCwwLDcxLDEwMCwxMTMsMCwxMDAsMTE0LDAsMTMyLDAsMCwxMDAsMTE0LDAsCisgICAgMTMxLDIsMCw5MCw2NSwwLDcxLDEwMCwxMTUsMCwxMDAsMTE2LDAsMTMyLDAsMCwKKyAgICAxMDAsMTE2LDAsMTMxLDIsMCw5MCw2NiwwLDcxLDEwMCwxMTcsMCwxMDAsMTE4LDAsCisgICAgMTMyLDAsMCwxMDAsMTE4LDAsMTMxLDIsMCw5MCw2NywwLDEwMCwxMTksMCwxMDAsCisgICAgMTIwLDAsMTMyLDAsMCw5MCw2OCwwLDEwMCwxMjEsMCwxMDAsMTIyLDAsMTMyLDAsCisgICAgMCw5MCw2OSwwLDEwMCwxMjMsMCwxMDAsMTI0LDAsMTMyLDAsMCw5MCw3MCwwLAorICAgIDEwMCwxMjUsMCw5MCw3MSwwLDEwMSw3MSwwLDEwMCwxMjYsMCwyMyw5MCw3MiwwLAorICAgIDEwMCwxMjcsMCwxMDAsMTI4LDAsMTMyLDAsMCw5MCw3MywwLDEwMCwxMjksMCwxMDAsCisgICAgMTMwLDAsMTMyLDAsMCw5MCw3NCwwLDEwMCw0NSwwLDEwMCw4NiwwLDEwMCwxMzEsCisgICAgMCwxMDAsMTMyLDAsMTMyLDIsMCw5MCw3NSwwLDEwMCwxMzMsMCwxMDAsMTM0LDAsCisgICAgMTMyLDAsMCw5MCw3NiwwLDEwMCwxMzUsMCwxMDAsMTM2LDAsMTMyLDAsMCw5MCwKKyAgICA3NywwLDEwMCwxMzcsMCwxMDAsMTM4LDAsMTMyLDAsMCw5MCw3OCwwLDEwMCw0NSwKKyAgICAwLDEwMCw0NSwwLDEwMiwwLDAsMTAwLDg2LDAsMTAwLDEzOSwwLDEwMCwxNDAsMCwKKyAgICAxMzIsNCwwLDkwLDc5LDAsMTAwLDE0MSwwLDEwMCwxNDIsMCwxMzIsMCwwLDkwLAorICAgIDgwLDAsMTAwLDE0MywwLDEwMCwxNDQsMCwxMzIsMCwwLDkwLDgxLDAsMTAwLDQ1LAorICAgIDAsODMsNDAsMTQ2LDAsMCwwLDExNyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsCisgICAgMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwKKyAgICAxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksCisgICAgMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsCisgICAgMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwKKyAgICAxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsCisgICAgOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAogICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LAotICAgIDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCi0gICAgMzIsNzgsNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLAotICAgIDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLAotICAgIDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCwKLSAgICA5NywxMTYsMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsCi0gICAgMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwKLSAgICAxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCi0gICAgMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksCi0gICAgMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwKLSAgICAxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLAotICAgIDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LAotICAgIDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw0NiwxMCwxMCwxMTcsMywwLDAsMCwxMTksMTA1LDExMCwxMTcsNiwwLAotICAgIDAsMCw5OSwxMjEsMTAzLDExOSwxMDUsMTEwLDExNyw2LDAsMCwwLDEwMCw5NywxMTQsCi0gICAgMTE5LDEwNSwxMTAsOTksMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNDksMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEwNiwyLDAsMTE2LDMsMCwxMzEsMSwwLDExNCwzMywwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNSwwLDAsMTEwLDEyLDAsMTAwLDMsCi0gICAgMCwxMDAsMiwwLDEzMiwwLDAsMTI1LDAsMCwxMjQsMCwwLDgzLDQwLDQsCi0gICAgMCwwLDAsNzgsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw4MywwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDEsCi0gICAgMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCw4Myw0MCwyLDAsMCwwLAotICAgIDExNyw1MywwLDAsMCw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwKLSAgICAxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLAotICAgIDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDExNSwxMiwwLDAsMCw4MCwKLSAgICA4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSw0MCwyLDAsMCwwLAotICAgIDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDcsMCwwLDAsMTAxLDExMCwxMTgsCi0gICAgMTA1LDExNCwxMTEsMTEwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCw0MCwwLAotICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLAotICAgIDk1LDk5LDk3LDExNSwxMDEsMzQsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLAotICAgIDExNywzNywwLDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsCi0gICAgOTUsOTksOTcsMTE1LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsCi0gICAgMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsCi0gICAgMCwwLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKLSAgICAxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksCi0gICAgMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsCi0gICAgMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsNDAsMSwwLDAsMCwxMTcsNSwwLAotICAgIDAsMCw3MCw5NywxMDgsMTE1LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAotICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsCi0gICAgMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDM4LDAsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsMiw0MCw0LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LAotICAgIDExNyw4LDAsMCwwLDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwxMTcsMTAsMCwKLSAgICAwLDAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDI3LDAsMCwKLSAgICAwLDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLAotICAgIDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDQwLDEsMCwwLAotICAgIDAsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCi0gICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsCi0gICAgMCwwLDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywKLSAgICAxMTUsMTAxLDMyLDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxOCwxLDE1LAotICAgIDQsMTIsMywxMTcsMTYsMCwwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwKLSAgICAxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTA4LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwwLDAsMTAzLDAsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwxLDAsCi0gICAgNjQsMTMxLDEsMCwxLDEyNCwxLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwyLAotICAgIDAsNjMsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEyNCwwLDAsMTAwLDMsMCw2MywxMDAsMSwwLDY0LDEzMSwxLDAsMSwxMjQsCi0gICAgMSwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsNCwwLDYzLDEwMCwxLDAsNjQsCi0gICAgMTMxLDEsMCwxLDExNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDUsCi0gICAgMCwwLDAsMTE3LDExMSwwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiwKLSAgICA5NywzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwKLSAgICAzMiwxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywKLSAgICAxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODgsODgsODgsMzIsODQsMTAxLDEwOSwxMTIsCi0gICAgMTExLDExNCw5NywxMTQsMTIxLDMyLDExNywxMTAsMTE2LDEwNSwxMDgsMzIsMTA5LDk3LDExNCwxMTUsCi0gICAgMTA0LDk3LDEwOCwzOSwxMTUsMzIsMTA4LDExMSwxMTAsMTAzLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwKLSAgICAxMDUsMTExLDExMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExMiwxMTEsMTE1LDEwMSwxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDI1NSwwLDAsMCwxMDUsOCwwLDAsCi0gICAgMCwxMDUsMTYsMCwwLDAsMTA1LDI0LDAsMCwwLDQwLDMsMCwwLDAsCi0gICAgMTE3LDMsMCwwLDAsMTA1LDExMCwxMTYsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwKLSAgICAxMDEsMTEwLDEwMCwxMTcsOSwwLDAsMCw5OCwxMjEsMTE2LDEwMSw5NywxMTQsMTE0LDk3LAotICAgIDEyMSw0MCwyLDAsMCwwLDExNywxLDAsMCwwLDEyMCwxMTcsOSwwLDAsCi0gICAgMCwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsNDAsMCwwLDAsMCw0MCwKLSAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAotICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwKLSAgICAxMTAsMTAzLDQ1LDAsMCwwLDExNSwxNCwwLDAsMCwwLDYsMTIsMSw2LAotICAgIDEsMTcsMSwyMSwxLDIxLDEsMjEsMSwxMTcsNywwLDAsMCw5NSwxMTksCi0gICAgOTUsMTA4LDExMSwxMTAsMTAzLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY4LDAsMCwwLDEyNCwKLSAgICAwLDAsMTAwLDEsMCwyNSwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsCi0gICAgMiwwLDI1LDEwMCwzLDAsNjIsNzksMTI1LDEsMCwxMjQsMSwwLDEyNCwwLAotICAgIDAsMTAwLDQsMCwyNSwxMDAsNSwwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDEwMCw2LDAsMjUsMTAwLDcsMCw2Miw3OSwxMjUsMSwwLDEyNCwKLSAgICAxLDAsODMsNDAsOCwwLDAsMCwxMTcsMTE1LDAsMCwwLDY3LDExMSwxMTAsCi0gICAgMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDg4LDg4LDg4LDMyLDg0LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwKLSAgICAxMTcsMTEwLDExNiwxMDUsMTA4LDMyLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsMzksMTE1LDMyLAotICAgIDEwOCwxMTEsMTEwLDEwMywzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTE0LAotICAgIDEwMSwzMiwxMDEsMTIwLDExMiwxMTEsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsMTA1LDgsMCwwLDAsMTA1LAotICAgIDIsMCwwLDAsMTA1LDE2LDAsMCwwLDEwNSwzLDAsMCwwLDEwNSwyNCwKLSAgICAwLDAsMCw0MCwwLDAsMCwwLDQwLDIsMCwwLDAsMTE3LDksMCwKLSAgICAwLDAsMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNywxLDAsMCwwLAotICAgIDEyMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAotICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCi0gICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsCi0gICAgMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNjEsMCwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsNiwxMCwxLDE4LDEsMTgsMSwxOCwxLDExNyw3LDAsMCwKLSAgICAwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsOTksMCwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw3MSwwLDAsMCwxMTUsMTAzLDAsCi0gICAgMCwwLDEwMywwLDAsMTI1LDEsMCwxMjAsNzEsMCwxMjQsMCwwLDY4LDkzLAotICAgIDYzLDAsMTI1LDIsMCwxMjQsMiwwLDExNSwzMSwwLDExMywxMywwLDExMCwwLAotICAgIDAsMTI0LDEsMCwxMDYsMCwwLDEyNCwyLDAsMTMxLDEsMCwxLDEyNCwyLAotICAgIDAsMTAwLDQsMCwyNSwxMTYsMSwwLDEwNyw3LDAsMTE0LDEzLDAsMTI0LDEsCi0gICAgMCwxMDYsMCwwLDExNiwyLDAsMTMxLDEsMCwxLDExMywxMywwLDExMywxMywKLSAgICAwLDg3LDEwMCwyLDAsMTA2LDMsMCwxMjQsMSwwLDEwMCwzLDAsMTAwLDUsCi0gICAgMCwxMzMsMiwwLDI1LDEzMSwxLDAsODMsNDAsNiwwLDAsMCwxMTcsMzEsCi0gICAgMCwwLDAsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCwKLSAgICA0MSw0NiwxMDUsMSwwLDAsMCwxMTcsMCwwLDAsMCw3OCwxMDUsMjU1LDI1NSwKLSAgICAyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsNCwwLDAsMCwxMTcsNiwwLDAsCi0gICAgMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNywxNSwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDExNyw4LDAsMCwwLAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDExNyw0LDAsMCwwLDEwNiwxMTEsMTA1LAotICAgIDExMCw0MCwzLDAsMCwwLDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMTIsOTcsMTE0LDExNiwxMTUsMTE3LDksMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEyLDk3LAotICAgIDExNCwxMTYsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTQsMTE2LDQwLDAsMCwwLAotICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw3NCwwLDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMCwyLDYsMSwxMywxLDYsMSw2LDEsMTMsMSwxNiwxLDIwLDEsCi0gICAgMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw4NSwwLDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCw2OCw5MywyOCwwLDEyNSwxLDAsMTI0LDEsMCwxMTYsCi0gICAgMSwwLDEwNyw2LDAsMTE0LDEzLDAsMTI0LDEsMCwxMjUsMiwwLDgwLDExMywKLSAgICAxMywwLDExMywxMywwLDg3LDExNiwyLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwKLSAgICAzLDAsMTI0LDIsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMywwLDEyNSw0LAotICAgIDAsMTI1LDUsMCwxMjQsMywwLDEyNCw1LDAsMTAyLDIsMCw4Myw0MCwxLAotICAgIDAsMCwwLDExNywzMiwwLDAsMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsCi0gICAgMTE1LDExMiwxMDgsMTA1LDExNiw0MCw0MSw0Niw0MCw0LDAsMCwwLDExNyw4LDAsCi0gICAgMCwwLDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsMTE3LDE1LDAsMCwwLDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsCi0gICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMTE3LDEwLDAsMCwwLAotICAgIDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDYsMCwwLDAsMTE3LAotICAgIDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDEsMCwwLDAsMTIwLDExNywzLAotICAgIDAsMCwwLDExNSwxMDEsMTEyLDExNyw1LDAsMCwwLDEwMiwxMTQsMTExLDExMCwxMTYsCi0gICAgMTE3LDEsMCwwLDAsOTUsMTE3LDQsMCwwLDAsMTE2LDk3LDEwNSwxMDgsNDAsCi0gICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAotICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiw4NiwwLDAsMCwxMTUsCi0gICAgMTQsMCwwLDAsMCwyLDE5LDEsMTIsMSw2LDEsOCwyLDYsMSwKLSAgICAyNCwxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwKLSAgICAxMDUsMTE2LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw2MSwwLDAsMCwxMjEsMTksMCwxMTYsCi0gICAgMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLAotICAgIDIyLDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDEwMCwKLSAgICAyLDAsODMsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiw0LDAsMTAwLDEsCi0gICAgMCw2NCwxMjQsMSwwLDEwNywyLDAsODMsNDAsMywwLDAsMCwxMTcsNDksCi0gICAgMCwwLDAsODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LAotICAgIDEyMSwxMTIsMTAxLDQ2LDEwNSwwLDI0MCwwLDAsNzAsNDAsNSwwLDAsMCwxMTcsCi0gICAgMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LAotICAgIDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNSwwLDAsCi0gICAgMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDEwOSwxMTEsCi0gICAgMTAwLDEwMSw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LAotICAgIDExNyw0LDAsMCwwLDEwOSwxMTEsMTAwLDEwMSwxMTcsOSwwLDAsMCwxMTUsMTE2LAotICAgIDk3LDExNiw5NSwxMDUsMTEwLDEwMiwxMTEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKLSAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAotICAgIDk3LDExMiw2MiwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwKLSAgICA5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk4LDAsMCwwLDExNSwxMCwKLSAgICAwLDAsMCwwLDIsMywxLDE5LDEsMTMsMSw5LDEsMTE3LDE4LDAsCi0gICAgMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LAotICAgIDExNiwxMjEsMTEyLDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQwLDIsMCwwLDAsCi0gICAgMTE3LDMxLDAsMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NiwxMDUsMCwxMjgsMCwwLDQwLDEsMCwwLDAsMTE3LDE4LAotICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLAotICAgIDk1LDExNiwxMjEsMTEyLDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExMiwKLSAgICA5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsCisgICAgOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywKKyAgICAxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsCisgICAgOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDI0NCwKKyAgICAzLDAsMCwwLDExOSwxMDUsMTEwLDI0NCw2LDAsMCwwLDk5LDEyMSwxMDMsMTE5LAorICAgIDEwNSwxMTAsMjQ0LDYsMCwwLDAsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0OSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwKKyAgICAxMTYsMywwLDEzMSwxLDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKKyAgICAwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsCisgICAgMCwxMjUsMCwwLDEyNCwwLDAsODMsNDAsNCwwLDAsMCw3OCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDgzLAorICAgIDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNiwwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsMCwwLDg0LAorICAgIDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsCisgICAgMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsCisgICAgMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LDc4LDY3LAorICAgIDY1LDgzLDY5LDc5LDc1LDQwLDIsMCwwLDAsMjQ0LDMsMCwwLDAsOTUsCisgICAgMTExLDExNSwxMTYsNywwLDAsMCwxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsMTY4LDAsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMjQ1LDI5LDAsCiAgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKLSAgICAxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICAxMDgsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywxMiwwLDAsMCwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwxMjQsMCwwLDExNSwyMSwwLDExNiwwLDAsMTA2LAotICAgIDEsMCwxMzEsMCwwLDEyNSwwLDAsMTEwLDAsMCwxMTYsMiwwLDEyNCwwLAotICAgIDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQwLDIsMCwwLDAsMTE3LDMwLDAsCi0gICAgMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LAotICAgIDEwNSwwLDY0LDAsMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk1LAotICAgIDExMSwxMTUsMTE3LDYsMCwwLDAsMTAzLDEwMSwxMTYsOTksMTE5LDEwMCwxMTcsMTgsMCwKLSAgICAwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LAotICAgIDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCi0gICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCi0gICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsCi0gICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTQsMCwKLSAgICAwLDAsMTE1LDYsMCwwLDAsMCwyLDYsMSwxNSwxLDExNywxMSwwLAotICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDEwNSwxODIsMSwKLSAgICAwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE5MiwwLDAsMCwxMDAsMSwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwKLSAgICAwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTE2LDIsMCwKLSAgICAxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwwLDEwNiw2LDAsCi0gICAgNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LDQsMCwxMjEsNjAsCi0gICAgMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywwLDEzMSwyLDAsCi0gICAgMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEsODcsMTAwLDQsMCw4MSw4OCwxMTYsMiwwLDEwNiwxMCwwLDEyNCwKLSAgICAzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLDU5LDAsNCwxMTYsMTEsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTg3LDAsMSwxLDEsMTIxLDE3LDAsMTE2LDIsMCwKLSAgICAxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMTgsMCw0LDExNiwKLSAgICAxMSwwLDEwNywxMCwwLDExNCwxNzksMCwxLDEsMSw4OSwxMTAsMSwwLDg4LAotICAgIDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQwLDUsMCwwLAotICAgIDAsMTE3LDE2MiwwLDAsMCw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LAotICAgIDEwNSwxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsCi0gICAgMTE2LDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsCi0gICAgMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksCi0gICAgMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsCi0gICAgMTEwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwKLSAgICAxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LAotICAgIDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMTcsNSwwLDAsMCwxMjMsMTI1LDQ2LAotICAgIDEyMywxMjUsMTA1LDE4MiwxLDAsMCwxMTcsMiwwLDAsMCwxMTksOTgsNzgsNDAsCi0gICAgMTMsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsCi0gICAgMiwwLDAsMCwxMDUsMTAwLDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsCi0gICAgMCwwLDAsMTExLDExMiwxMDEsMTEwLDExNyw2LDAsMCwwLDc5LDk1LDY5LDg4LAotICAgIDY3LDc2LDExNyw3LDAsMCwwLDc5LDk1LDY3LDgyLDY5LDY1LDg0LDExNyw4LAotICAgIDAsMCwwLDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDExNywzLDAsMCwwLAotICAgIDk1LDEwNSwxMTEsMTE3LDYsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzMsNzksMTE3LDUsCi0gICAgMCwwLDAsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLDExMiwKLSAgICAxMDgsOTcsOTksMTAxLDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAxMTcsNiwwLDAsMCwxMTcsMTEwLDEwOCwxMDUsMTEwLDEwNyw0MCw2LDAsMCwwLAotICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywKLSAgICAxMTYsOTcsMTE3LDQsMCwwLDAsMTA5LDExMSwxMDAsMTAxLDExNyw4LDAsMCwwLAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLDExNywyLDAsMCwwLDEwMiwxMDAsMTE3LAotICAgIDQsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAotICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAotICAgIDExNCw5NywxMTIsNjIsMTE3LDEzLDAsMCwwLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsCi0gICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDEyMSwwLDAsMCwxMTUsMjYsMCwwLDAsMCwKLSAgICA1LDI0LDEsOSwxLDMzLDEsMywzLDIxLDEsMTksMSwyMCwxLDEzLAotICAgIDEsMywxLDE3LDEsMTMsMSw1LDEsMTE3LDEzLDAsMCwwLDk1LDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDk1LDAsMCwwLDEyMCw2OSwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEwMCw0LDAsMTAzLDQsMCw2OCw5Myw0OSwwLDEyNSwyLDAsMTE2LDAsCi0gICAgMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwwLAotICAgIDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsCi0gICAgMiwwLDEzMSwzLDAsMSwxMTMsMTksMCwxMTMsMTksMCw4NywxMjQsMCwwLAotICAgIDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxLAotICAgIDEwMCw1LDAsODMsNDAsNiwwLDAsMCwxMTcsNDcsMCwwLDAsODMsMTA1LAotICAgIDEwOSwxMTIsMTA4LDEwMSwzMiwxMTUsMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwKLSAgICAxMDIsMTExLDExNCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsCi0gICAgMTAwLDk3LDExNiwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMTE3LDEwLDAsCi0gICAgMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNyw4LDAsMCwKLSAgICAwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwKLSAgICAxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSwKLSAgICA5NSwxMDAsMTExLDk5LDk1LDk1LDc4LDQwLDUsMCwwLDAsMTE3LDcsMCwwLAotICAgIDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsNywwLDAsMCwxMTUsMTAxLDExNiwKLSAgICA5NywxMTYsMTE2LDExNCwxMTcsNywwLDAsMCwxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKLSAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwxMTcsNiwwLAotICAgIDAsMCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQwLDMsMCwwLDAsMTE3LDMsMCwKLSAgICAwLDAsMTEwLDEwMSwxMTksMTE3LDMsMCwwLDAsMTExLDEwOCwxMDAsMTE3LDcsMCwKLSAgICAwLDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSw0MCwwLDAsMCwwLDQwLDAsCi0gICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAotICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw1LDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDE0MywKLSAgICAwLDAsMCwxMTUsOCwwLDAsMCwwLDIsMjUsMSwxNSwxLDMyLDEsCi0gICAgMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDc1LDAsMCwwLDY3LDExNCwKLSAgICAxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAxLDExMCwxMTYsMTAxLDExNCwxMDEsCi0gICAgMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNDAsMiwwLDAsMCwxMTcsNCwKLSAgICAwLDAsMCwxMTYsMTIxLDExMiwxMDEsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSw0MCwKLSAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDAsMCwKLSAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKLSAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMCwxMDEsCi0gICAgMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1NCwwLDAsMCwxMTUsMiwwLDAsCi0gICAgMCwwLDYsMTE3LDEwLDAsMCwwLDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsCi0gICAgMCwwLDAsNjYsMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsNjksCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw4MywKLSAgICA0MCwyLDAsMCwwLDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwKLSAgICAxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCw3OCw0MCwzLDAsMCwwLDExNyw4LAotICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCwKLSAgICA5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsCi0gICAgOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsNDAsMSwwLDAsMCwKLSAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLAotICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE0LDAsMCwwLAotICAgIDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDE3MSwwLAotICAgIDAsMCwxMTUsMiwwLDAsMCwxNiwxLDExNywxNCwwLDAsMCw5NSw2OCwKLSAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwKLSAgICAwLDExNSw4NiwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsCi0gICAgMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLAotICAgIDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTEsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCw4Myw0MCwxMywwLDAsCi0gICAgMCwxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksCi0gICAgMTA3LDExNywxNjksMCwwLDAsNjUsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LAotICAgIDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKLSAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTcsCi0gICAgOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMzIsMTAwLDEwMSwKLSAgICA5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSw0NiwxMDMsCi0gICAgNDYsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw0OSwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLAotICAgIDEwMywzMiwxMTYsMTExLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiwKLSAgICA2NSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjYsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LAotICAgIDExNCwxMDEsOTcsMTAwLDMyLDUwLDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLAotICAgIDY2LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2NSw0MSw0NiwxMCwzMiwzMiwzMiwzMiw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw3MCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxMjQsMCwwLDk1LDIsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsCi0gICAgMCwxMjQsMCwwLDk1LDMsMCwxMjQsMSwwLDEyNCwwLDAsOTUsNCwwLAotICAgIDEwMCwwLDAsMTI0LDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LAotICAgIDcsMCwxMDAsMSwwLDEyNCwwLDAsOTUsOCwwLDEwMCwwLDAsODMsNDAsCi0gICAgMiwwLDAsMCw3OCwxMDUsMCwwLDAsMCw0MCw5LDAsMCwwLDExNywKLSAgICA3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDEzLDAsMCwwLAotICAgIDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDQsMCwKLSAgICAwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDYsMCwwLDAsMTE5LDk3LDEwNywxMDEsMTE3LAotICAgIDExMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCw3OCwKLSAgICAxMTEsMTEwLDEwMSwxMTcsNSwwLDAsMCwxMTEsMTE5LDExMCwxMDEsMTE0LDExNyw1LDAsCi0gICAgMCwwLDk5LDExMSwxMTcsMTEwLDExNiwxMTcsNywwLDAsMCwxMTksOTcsMTA1LDExNiwKLSAgICAxMDEsMTE0LDExNSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAotICAgIDEwMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLAotICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCi0gICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSw5NSwxODEsMCwwLDAsMTE1LDEyLDAsMCwwLDAsMSwxNSwxLAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDI0NCwKKyAgICAxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzMCwKKyAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDM3LDAsMCwwLDk1LAorICAgIDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCisgICAgOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNTMsMCwwLDAsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw3MCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAzNCwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsNDAsNCwwLDAsMCwKKyAgICAyNDQsMywwLDAsMCwxMTUsMTIxLDExNSwyNDQsOCwwLDAsMCwxMTIsMTA4LDk3LAorICAgIDExNiwxMDIsMTExLDExNCwxMDksMjQ0LDEwLDAsMCwwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsCisgICAgMTE5LDEwNSwxMTYsMTA0LDI0NCwyNywwLDAsMCw5NSw2Nyw2NSw4Myw2OSw5NSw3MywKKyAgICA3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCwKKyAgICA3OSw4Miw3Nyw4Myw0MCwxLDAsMCwwLDExNCw2LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxNiwwLAorICAgIDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsCisgICAgMTE1LDEwMSwyOCwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTgsMSwxNSwKKyAgICA0LDEyLDMsMTE0LDExLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEwMCwxLDAsNjQsMTA2LAorICAgIDEsMCwxMDAsMiwwLDEwMCwzLDAsMTMxLDIsMCw4Myw0MCw0LDAsMCwKKyAgICAwLDExNyw0MiwwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiwKKyAgICA1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsNDYsCisgICAgMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCwyMzMsNCwwLDAsMCwKKyAgICAyNDQsNiwwLDAsMCwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0MCwyLDAsMCwwLAorICAgIDI0NCwzLDAsMCwwLDEwNSwxMTAsMTE2LDI0NCw4LDAsMCwwLDExNiwxMTEsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDQwLDEsMCwwLDAsMjQ0LDEsMCwwLDAsMTIwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwKKyAgICA3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDAsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDExNCwxNywwLDAsMCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsODMsNDAsMiwwLDAsMCwxMTcsNDcsMCwwLDAsNjcsCisgICAgMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwKKyAgICAxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwKKyAgICAxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDEzLAorICAgIDAsMCwwLDQwLDIsMCwwLDAsMTE0LDE0LDAsMCwwLDI0NCwxMCwwLAorICAgIDAsMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQwLDEsMCwwLAorICAgIDAsMTE2LDksMCwwLDAsMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCw3LAorICAgIDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNDUsMCwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwyLDExNCwxOSwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwKKyAgICAyNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDAsMiwwLAorICAgIDEzMiwwLDAsMTI0LDAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDAsMywKKyAgICAwLDAsMCwxMTcsMzEsMCwwLDAsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LAorICAgIDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCw0LDAsMCwwLDgzLDAsMCwwLDExNSwzNywwLDAsCisgICAgMCwxMDMsMCwwLDEyNCwwLDAsOTMsMjcsMCwxMjUsMSwwLDEyNCwxLDAsCisgICAgMTE0LDYsMCwxMjQsMSwwLDEwNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDE0NSwKKyAgICAyLDAsMTEzLDYsMCw4MywxMTQsNCwwLDAsMCw0MCwyLDAsMCwwLAorICAgIDI0NCw2LDAsMCwwLDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDI0NCwxNSwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQwLAorICAgIDIsMCwwLDAsMjQ0LDIsMCwwLDAsNDYsNDgsMjQ0LDQsMCwwLDAsCisgICAgMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjQ1LDEwLDAsMCwwLDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LAorICAgIDExMiw2Miw1MiwwLDAsMCwxMTUsMiwwLDAsMCw5LDEsMTE3LDMwLDAsCisgICAgMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLAorICAgIDQwLDIsMCwwLDAsMjQ0LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsMjQ0LDQsMCwwLDAsMTA2LDExMSwxMDUsMTEwLDQwLDEsMCwwLDAsCisgICAgMjQ0LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTAsCisgICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDUwLDAsMCwKKyAgICAwLDExNSw0LDAsMCwwLDAsMiwxNSwxLDExNCwyOCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMzQsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwKKyAgICAxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MiwwLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxMTYsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwKKyAgICAxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEyMCw2OSwwLAorICAgIDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDY4LDkzLDU1LDAsMTI1LDQsMCwKKyAgICAxMjQsNCwwLDExNiwxLDAsMTA3LDYsMCwxMTQsNjUsMCwxMjQsMCwwLDEwNiwKKyAgICA1LDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDEsMSw5MiwyLAorICAgIDAsMTI1LDEsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLAorICAgIDgzLDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LDAsMCwxMDIsMiwwLDgzLDQwLAorICAgIDQsMCwwLDAsMTE3LDMyLDAsMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLDQxLDQ2LDIzMywxLDAsMCwwLDExNiw4LAorICAgIDAsMCwwLDEwOSw5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyNDQsMCwwLDAsMCwKKyAgICA0MCw2LDAsMCwwLDI0NCwzLDAsMCwwLDEwOCwxMDEsMTEwLDExNCwyMSwwLAorICAgIDAsMCwyNDQsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE0LDI1LDAsMCwwLDI0NCw4LDAsMCwwLDExNCwxMDEsMTE4LDEwMSwxMTQsCisgICAgMTE1LDEwMSwxMDAsMjQ0LDYsMCwwLDAsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDAsNSwKKyAgICAwLDAsMCwyNDQsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTYsNSwwLDAsCisgICAgMCwxMDIsMTE0LDExMSwxMTAsMTE2LDI0NCwxLDAsMCwwLDk1LDI0NCw0LDAsMCwKKyAgICAwLDExNiw5NywxMDUsMTA4LDExNCwxNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTEsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiw1NiwwLDAsMCwxMTUsMTYsMCwKKyAgICAwLDAsMCwyLDE4LDEsMjQsMSwxMCwxLDE5LDEsMTIsMSwyNywxLAorICAgIDE0LDEsMTE0LDM4LDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw2MSwwLDAsCisgICAgMCwxMjEsMTksMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw0MywKKyAgICAwLDEsMSwxLDEwMCwxLDAsODMsODksMTEwLDEsMCw4OCwxMjQsMiwwLAorICAgIDEwNiwzLDAsMTAwLDIsMCw2NCwxMjQsMSwwLDEwNywyLDAsODMsNDAsMywKKyAgICAwLDAsMCwxMTcsNDksMCwwLDAsODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsCisgICAgMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDAsCisgICAgNCwwLDAsMCwxMTQsMywwLDAsMCwyNDQsNCwwLDAsMCwxMTUsMTE2LAorICAgIDk3LDExNiwyNDQsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMjQ0LDcsCisgICAgMCwwLDAsMTE1LDExNiw5NSwxMDksMTExLDEwMCwxMDEsNDAsMywwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMjQ0LDQsMCwwLDAsMTA5LDExMSwxMDAsMTAxLDExNiw5LDAsCisgICAgMCwwLDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTgsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsCisgICAgMTAxLDY4LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywxLDE5LDEsCisgICAgMTMsMSw5LDEsMTE0LDQzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLAorICAgIDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsCisgICAgNDAsMiwwLDAsMCwxMTcsMzEsMCwwLDAsODIsMTAxLDExMiwxMDgsOTcsOTksCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsCisgICAgMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLDAsNDAsMSwKKyAgICAwLDAsMCwxMTQsNDMsMCwwLDAsNDAsMSwwLDAsMCwxMTQsMzUsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMjQ0LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDc4LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsNDQsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMCwxMTUsCisgICAgMjEsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMCwwLDExMCwwLAorICAgIDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MCwyLAorICAgIDAsMCwwLDExNywzMCwwLDAsMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsCisgICAgMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwwLDAsNDAsMywwLDAsMCwKKyAgICAxMTQsMywwLDAsMCwxMTYsNiwwLDAsMCwxMDMsMTAxLDExNiw5OSwxMTksMTAwLAorICAgIDExNCw0MywwLDAsMCw0MCwxLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTEsCisgICAgMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw4NCwwLAorICAgIDAsMCwxMTUsNiwwLDAsMCwwLDIsNiwxLDE1LDEsMTE0LDQ1LDAsCisgICAgMCwwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLAorICAgIDYsMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MiwwLDAsCisgICAgMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsCisgICAgMTMxLDEsMCwxMzEsMiwwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwKKyAgICAzLDAsMTE2LDIsMCwxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsCisgICAgMiwwLDEwNiw2LDAsNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsCisgICAgMTI1LDQsMCwxMjEsNjAsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsCisgICAgMywwLDEzMSwyLDAsMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDQsMCw4MSw4OCwxMTYsMiwKKyAgICAwLDEwNiwxMCwwLDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLAorICAgIDU5LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTg3LDAsMSwxLDEsMTIxLAorICAgIDE3LDAsMTE2LDIsMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywKKyAgICAxMTAsMTgsMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxNzksMCwxLDEsMSwKKyAgICA4OSwxMTAsMSwwLDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLAorICAgIDgzLDQwLDUsMCwwLDAsMTE3LDE2MiwwLDAsMCw2NiwxMDEsMTE1LDExNiw0NSwKKyAgICAxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsCisgICAgMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwKKyAgICAzMiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LAorICAgIDEwOCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywKKyAgICAxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsCisgICAgNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsCisgICAgMTA1LDEwMiwzMiw5OSwxMTEsMTEwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsCisgICAgMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLAorICAgIDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMTcsNSwwLAorICAgIDAsMCwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwxLDAsMCwxMTYsMiwwLDAsCisgICAgMCwxMTksOTgsNzgsNDAsMTMsMCwwLDAsMjQ0LDYsMCwwLDAsMTAyLDExMSwKKyAgICAxMTQsMTA5LDk3LDExNiwyNDQsMiwwLDAsMCwxMDUsMTAwLDExNCwzLDAsMCwwLAorICAgIDExNiw0LDAsMCwwLDExMSwxMTIsMTAxLDExMCwxMTYsNiwwLDAsMCw3OSw5NSwKKyAgICA2OSw4OCw2Nyw3NiwxMTYsNywwLDAsMCw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwKKyAgICAxMTYsOCwwLDAsMCw3OSw5NSw4Nyw4Miw3OSw3OCw3Niw4OSwyNDQsMywwLAorICAgIDAsMCw5NSwxMDUsMTExLDI0NCw2LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDczLDc5LAorICAgIDI0NCw1LDAsMCwwLDExOSwxMTQsMTA1LDExNiwxMDEsMjQ0LDcsMCwwLDAsMTE0LAorICAgIDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTQsNDAsMCwwLDAsMTE2LDYsMCwwLDAsCisgICAgMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsNDAsNiwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgMjQ0LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwwLDAsMTE2LDgsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsMTE2LDIsMCwwLDAsCisgICAgMTAyLDEwMCwyNDQsNCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDEzLDAsMCwwLDk1LAorICAgIDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDkxLDAsMCwwLAorICAgIDExNSwyNiwwLDAsMCwwLDUsMjQsMSw5LDEsMzMsMSwzLDMsMjEsCisgICAgMSwxOSwxLDIwLDEsMTMsMSwzLDEsMTcsMSwxMywxLDUsMSwxMTQsCisgICAgNTQsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsNywwLDAsMCw2NywwLDAsMCwxMTUsOTUsMCwwLDAsMTIwLDY5LAorICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLAorICAgIDY4LDkzLDQ5LDAsMTI1LDIsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwKKyAgICAxMzEsMiwwLDExNCwxOSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwKKyAgICAyLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywKKyAgICAxOSwwLDExMywxOSwwLDg3LDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLDEyNCwKKyAgICAxLDAsMTA2LDMsMCwxMzEsMSwwLDEsMTAwLDUsMCw4Myw0MCw2LDAsCisgICAgMCwwLDExNyw0NywwLDAsMCw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwxMTcsCisgICAgOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0NiwyNDQsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsOTUsMjQ0LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgOTUsOTUsMjQ0LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDk1LDk1LDI0NCw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNzgsCisgICAgNDAsNSwwLDAsMCwyNDQsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsCisgICAgMTE0LDI0NCw3LDAsMCwwLDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDI0NCw3LDAsCisgICAgMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDI0NCw4LDAsMCwwLDk1LDk1LAorICAgIDEwMCwxMDUsOTksMTE2LDk1LDk1LDI0NCw2LDAsMCwwLDExNywxMTIsMTAwLDk3LDExNiwKKyAgICAxMDEsNDAsMywwLDAsMCwxMTYsMywwLDAsMCwxMTAsMTAxLDExOSwxMTYsMywKKyAgICAwLDAsMCwxMTEsMTA4LDEwMCwxMTQsNTEsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDUsMCwwLDAsOTUsCisgICAgMTE5LDExNCw5NywxMTIsMTEzLDAsMCwwLDExNSw4LDAsMCwwLDAsMiwyNSwKKyAgICAxLDE1LDEsMzIsMSwxMTQsNjQsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDI0NCwxNCwwLDAsMCw5NSw2OCwKKyAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCw3OCw0MCwzLDAsCisgICAgMCwwLDExNCw1NiwwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LDU3LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDExNCw2NSwwLDAsMCwxMzIsMCwwLDAsMTE1LDIsCisgICAgMCwwLDAsMTIsMSwxMTQsNjUsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgODIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCisgICAgOCwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDI0NCwxMSwwLDAsMCwKKyAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDE2OSwwLDAsMCwKKyAgICA2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsCisgICAgMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsMTA0LDExNCwxMDEsCisgICAgOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMzIsMTE2LAorICAgIDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwxMDQsMTAxLDExMCwKKyAgICAzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNTAsCisgICAgMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsCisgICAgOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LDEwNCwxMDEsMTEwLAorICAgIDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDcwLAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsCisgICAgMiwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsMywKKyAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSw0LDAsMTAwLDAsMCwxMjQsMCwwLAorICAgIDk1LDUsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNiwwLDEwMCwxLDAsMTI0LAorICAgIDAsMCw5NSw3LDAsMTAwLDAsMCw4Myw0MCwyLDAsMCwwLDc4LDIzMywKKyAgICAwLDAsMCwwLDQwLDgsMCwwLDAsMjQ0LDcsMCwwLDAsOTUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwxMTYsMTMsMCwwLDAsOTcsMTA4LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyNDQsNCwwLDAsMCwxMDgsMTExLDk5LDEwNywKKyAgICAyNDQsNiwwLDAsMCwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDI0NCw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDI0NCw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsMjQ0LDUsCisgICAgMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDI0NCw3LDAsMCwwLDExOSw5NywxMDUsCisgICAgMTE2LDEwMSwxMTQsMTE1LDQwLDIsMCwwLDAsMjQ0LDQsMCwwLDAsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyNDQsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsMTQyLDAsMCwwLDExNSwxMiwwLDAsMCwwLDEsMTUsMSwKICAgICAxNSwxLDksMSw5LDEsOSwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsCiAgICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAogICAgIDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwKQEAgLTQzMCwxMTgyICszNjQsMTIzMiBAQAogICAgIDMsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwKICAgICAwLDgzLDEyNCwzLDAsMTA2LDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDEsCiAgICAgMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwyLDAsODMsMTEzLDI0LDAsMTAwLDAsCi0gICAgMCw4Myw0MCwzLDAsMCwwLDc4LDcwLDg0LDQwLDgsMCwwLDAsMTE3LAotICAgIDcsMCwwLDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsOSwwLDAsMCwKLSAgICAxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNyw1LDAsMCwwLDExMSwxMTksCi0gICAgMTEwLDEwMSwxMTQsMTE3LDEyLDAsMCwwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsCi0gICAgMTAzLDk1LDExMSwxMTAsMTE3LDMsMCwwLDAsMTAzLDEwMSwxMTYsMTE3LDQsMCwwLAotICAgIDAsNzgsMTExLDExMCwxMDEsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsMTE3LAotICAgIDQsMCwwLDAsODQsMTE0LDExNywxMDEsNDAsNCwwLDAsMCwxMTcsNCwwLAotICAgIDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDIsMCwwLDAsMTA5LDEwMSwxMTcsMywwLAotICAgIDAsMCwxMTYsMTA1LDEwMCwxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLAotICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCi0gICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwxMDQsCi0gICAgOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDE4OSwwLDAsMCwxMTUsCi0gICAgMTgsMCwwLDAsMCwyLDEyLDEsOSwxLDMsMSwxNSwxLDEyLDEsCi0gICAgNCwxLDksMSwxMiwxLDExNywyNCwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsCi0gICAgMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAxNywwLDAsMCw2NywwLDAsMCwxMTUsMjE0LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMTYsMiwwLDEyNCwKLSAgICAxLDAsNjAsMTIyLDE3NywwLDEyMCwxNzAsMCwxMjQsMCwwLDEwNiwzLDAsMTQzLAotICAgIDEzMCwwLDEsMTI0LDAsMCwxMDYsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTUsCi0gICAgNjgsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDEsMCwxMDcsMiwwLDExNCw5NiwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSw1LDAsMTI0LDAsMCw0LDEwNiw0LAotICAgIDAsMTAwLDIsMCw1NSwyLDk1LDQsMCwxMDAsNSwwLDgzLDEyNCwwLDAsCi0gICAgMTA2LDcsMCwxMzEsMCwwLDExNCwxMjcsMCwxMTYsOCwwLDEwMCwzLDAsMTI0LAotICAgIDAsMCwyMiwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICA5LDAsMTA2LDEwLDAsMTAwLDYsMCwxMzEsMSwwLDExNCwxNjMsMCwxMjQsMCwKLSAgICAwLDQsMTA2LDEyLDAsMTAwLDIsMCw1NSwyLDk1LDEyLDAsMTEwLDAsMCwKLSAgICA4NywxMDAsNCwwLDgxLDg4LDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMzEsCi0gICAgMCwwLDEsMTI0LDAsMCwxMDYsOSwwLDEwNiwxMywwLDEzMSwwLDAsMSwKLSAgICAxMTMsMjgsMCw4NywxMDAsNCwwLDExNiwyLDAsMTI0LDEsMCw2MSw4OCwxMDAsCi0gICAgNCwwLDgzLDQwLDcsMCwwLDAsMTE3LDE4NSwwLDAsMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDQ2LDMyLDMyLAotICAgIDczLDEwMiwzMiw5NywzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwMCwKLSAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LAotICAgIDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDMyLDk1LAotICAgIDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsCi0gICAgMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExOSw5NywxMjEsMTE1LDMyLDk3LAotICAgIDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDk3LDExMCwxMDAsMzIsODQsMTE0LDExNywxMDEsCi0gICAgMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDQ2LDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDEwNSwwLDAsMCwwLDEwNSwxLDAsMCwwLAotICAgIDExNywyMywwLDAsMCwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLAotICAgIDExNiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDM3LDExNCw3OCw4NCw3MCw0MCwKLSAgICAxNCwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLAotICAgIDExNyw5LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLDExMCwxMTYsMTE3LDEyLAotICAgIDAsMCwwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LAotICAgIDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDUsMCwwLDAsOTksMTExLDExNywKLSAgICAxMTAsMTE2LDExNyw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDQsMCwwLAotICAgIDAsODQsMTE0LDExNywxMDEsMTE3LDEyLDAsMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSwKLSAgICA5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsCi0gICAgMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDExOSw5NywKLSAgICAxMDcsMTAxLDExNywxMTIsMTE3LDcsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKLSAgICAxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsNywwLDAsMCwxMTksCi0gICAgOTcsMTA1LDExNiwxMDEsMTE0LDExNSwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsCi0gICAgMTE1LDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKLSAgICAxMTcsMywwLDAsMCwxMTYsMTA1LDEwMCw0MCwwLDAsMCwwLDQwLDAsMCwKLSAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKLSAgICAxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMjAxLDAsMCwwLDExNSwzMiwwLDAsMCwwLDYsMTIsMSwxMCwxLDMsCi0gICAgMSwzLDEsMTAsMSwzMCwxLDksMSwxNSwxLDQsMSwxMiwxLDE5LAotICAgIDEsMTgsMSwyNCwyLDEzLDEsMjAsMiwxMTcsMTksMCwwLDAsOTUsNzcsCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTAsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE2NSwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsMCwxNDMsMTM4LDAsCi0gICAgMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMDcsMywwLDExNCw1MiwwLAotICAgIDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MywwLDExNiw2LAotICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAotICAgIDE1NSwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsOCwKLSAgICAwLDExNCwxNTUsMCwxMjQsMCwwLDQsMTA2LDgsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsOCwwLDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMzEsMCwwLDEsCi0gICAgMTEzLDE1NSwwLDExMCwwLDAsODcsMTAwLDAsMCw4MSw4OCwxMDAsMCwwLDgzLAotICAgIDQwLDQsMCwwLDAsNzgsMTE3LDMxLDAsMCwwLDk5LDk3LDExMCwxMTAsMTExLAotICAgIDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDEwNSwwLDAsMCwwLDEwNSwKLSAgICAxLDAsMCwwLDQwLDExLDAsMCwwLDExNyw3LDAsMCwwLDk1LDExNiwKLSAgICAxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDksMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwKLSAgICAxMDEsMTEwLDExNiwxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNywxMTcsNSwwLDAsCi0gICAgMCwxMTEsMTE5LDExMCwxMDEsMTE0LDExNywxMiwwLDAsMCw4MiwxMTcsMTEwLDExNiwxMDUsCi0gICAgMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsCi0gICAgMTE2LDExNywxNCwwLDAsMCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLAotICAgIDAsMCwxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSwxMTcsNiwwLDAsMCwxMTksOTcsCi0gICAgMTA3LDEwMSwxMTcsMTEyLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLAotICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywzLAotICAgIDAsMCwwLDExNiwxMDUsMTAwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMjI2LDAsCi0gICAgMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLDE1LDEsMTUsCi0gICAgMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsMTE3LDE5LDAsCi0gICAgMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMDIsMiwwLDIyLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDIxLDAsMCwKLSAgICAwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwzNywxMTQsNDEsCi0gICAgMzIsOTcsMTE2LDMyLDM3LDEwMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLAotICAgIDExMCw5NywxMDksMTAxLDExNywyLDAsMCwwLDEwNSwxMDAsNDAsMSwwLDAsMCwKLSAgICAxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLAotICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgOTUsOTUsMjM5LDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMjAsMCwKKyAgICAwLDgzLDQwLDMsMCwwLDAsNzgsNzAsODQsNDAsNSwwLDAsMCwxMTQsCisgICAgNjgsMCwwLDAsMjQ0LDksMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsCisgICAgMTEwLDExNiwxMTQsNzIsMCwwLDAsMjQ0LDEyLDAsMCwwLDk1LDk4LDEwOCwxMTEsCisgICAgOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMjQ0LDMsMCwwLDAsMTAzLDEwMSwxMTYsCisgICAgNDAsNCwwLDAsMCwxMTQsNzUsMCwwLDAsMjQ0LDIsMCwwLDAsMTA5LAorICAgIDEwMSwyNDQsMywwLDAsMCwxMTYsMTA1LDEwMCwxMTQsNjksMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDEyLDAsCisgICAgMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMTUwLDAsCisgICAgMCwwLDExNSwxOCwwLDAsMCwwLDIsMTIsMSw5LDEsMywxLDE1LAorICAgIDEsMTIsMSw0LDEsOSwxLDEyLDEsMTE3LDI0LDAsMCwwLDk1LDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsCisgICAgOTcsMTAwLDEwOCwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwyMTQsMCwwLDAsCisgICAgMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDExNiwKKyAgICAyLDAsMTI0LDEsMCw2MCwxMjIsMTc3LDAsMTIwLDE3MCwwLDEyNCwwLDAsMTA2LAorICAgIDMsMCwxNDMsMTMwLDAsMSwxMjQsMCwwLDEwNiw0LDAsMTAwLDEsMCwxMDcsCisgICAgMiwwLDExNSw2OCwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMSwwLDEwNywyLAorICAgIDAsMTE0LDk2LDAsMTI0LDEsMCwxMjQsMCwwLDk1LDUsMCwxMjQsMCwwLAorICAgIDQsMTA2LDQsMCwxMDAsMiwwLDU1LDIsOTUsNCwwLDEwMCwzLDAsODMsCisgICAgMTI0LDAsMCwxMDYsNiwwLDEzMSwwLDAsMTE0LDEyNywwLDExNiw3LDAsMTAwLAorICAgIDQsMCwxMjQsMCwwLDIyLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDgsMCwxMDYsOSwwLDEwMCw1LDAsMTMxLDEsMCwxMTQsMTYzLAorICAgIDAsMTI0LDAsMCw0LDEwNiwxMCwwLDEwMCwyLDAsNTUsMiw5NSwxMCwwLAorICAgIDExMCwwLDAsODcsMTAwLDYsMCw4MSw4OCwxMjQsMCwwLDEwNiw4LDAsMTA2LAorICAgIDksMCwxMzEsMCwwLDEsMTI0LDAsMCwxMDYsOCwwLDEwNiwxMSwwLDEzMSwKKyAgICAwLDAsMSwxMTMsMjgsMCw4NywxMDAsNiwwLDExNiwyLDAsMTI0LDEsMCwKKyAgICA2MSw4OCwxMDAsNiwwLDgzLDQwLDcsMCwwLDAsMTE3LDE4NSwwLDAsMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAorICAgIDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsCisgICAgMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExOSw5NywxMjEsCisgICAgMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDk3LDExMCwxMDAsMzIsODQsCisgICAgMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw2NywwLDAsMCwxMTQsMjksCisgICAgMCwwLDAsODQsMTE3LDIzLDAsMCwwLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksCisgICAgMTA3LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LAorICAgIDcwLDc4LDQwLDEyLDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsNzcsMCwwLAorICAgIDAsMTE0LDc4LDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsNzMsMCwwLDAsCisgICAgMTE0LDcyLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LAorICAgIDcwLDAsMCwwLDI0NCw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE0LDc0LDAsMCwwLDI0NCw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw4MSwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTYyLDAsMCwwLDExNSwzMiwwLDAsMCwwLDYsMTIsCisgICAgMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwxLDksMSwxNSwxLDQsCisgICAgMSwxMiwxLDE5LDEsMTgsMSwyNCwyLDEzLDEsMjAsMiwxMTcsMTksMCwKKyAgICAwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE2NSwwLDAsMCwxMTYsCisgICAgMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxNDMsMTM4LDAsMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMDcsMywKKyAgICAwLDExNCw1MiwwLDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsCisgICAgMTEwLDAsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSwKKyAgICA3MywwLDExNiw2LDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsCisgICAgMywwLDU2LDIsOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLAorICAgIDEwNywyLDAsMTE0LDE1NSwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LAorICAgIDAsMCwxMDYsNywwLDExNCwxNTUsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsCisgICAgMywwLDU2LDIsOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAorICAgIDEzMSwwLDAsMSwxMTMsMTU1LDAsMTEwLDAsMCw4NywxMDAsMCwwLDgxLDg4LAorICAgIDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwxMTcsMzEsMCwwLDAsOTksCisgICAgOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsCisgICAgNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LDY3LAorICAgIDAsMCwwLDExNCwyOSwwLDAsMCw0MCwxMCwwLDAsMCwxMTQsNjgsMCwKKyAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsNzIsMCwwLAorICAgIDAsMjQ0LDEyLDAsMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTQsNzMsMCwwLDAsMjQ0LDE0LDAsMCwwLDY1LDExNSwxMTUsMTAxLAorICAgIDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCw3NCwwLDAsMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDg0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDc1LAorICAgIDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsODQsMCwwLDAsMTg3LDAsMCwwLAorICAgIDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLDE1LDEsMTUsMSwyMSwKKyAgICAxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsMTE3LDE5LDAsMCwwLAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsMSwwLAorICAgIDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsMCwxMzEsCisgICAgMSwwLDEzMSwyLDAsODMsNDAsMiwwLDAsMCw3OCwxMTcsMjMsMCwwLAorICAgIDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsCisgICAgMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQwLDMsMCwwLDAsMTE0LDQ2LDAsCisgICAgMCwwLDExNCw3MSwwLDAsMCwxMTQsNDcsMCwwLDAsNDAsMSwwLDAsCisgICAgMCwxMTQsNzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjQ0LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDk1LDk1LDIwMCwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDIwLDAsCiAgICAgMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwKLSAgICAxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDAsOSwwLDAsMCwxMTcsOCwwLDAsCi0gICAgMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywKLSAgICAxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LAotICAgIDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDExNywxMiwwLDAsMCwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwKLSAgICAxMTEsOTksMTA3LDExNyw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE3LAotICAgIDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMTE3LDgsMCwwLDAsCi0gICAgOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsCi0gICAgMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwKLSAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSw3NywxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTc1LDAsMCwwLDExNSwxMiwwLDAsCi0gICAgMCwxNiw0LDYsMiwxMiw4LDEyLDEyLDEyLDI1LDEyLDEzLDExNywxMSwwLAotICAgIDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLAotICAgIDAsMCwxMTUsNzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKLSAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsCi0gICAgODMsNDAsMTEsMCwwLDAsMTE3LDE2LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LAotICAgIDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDg2LDAsMCwwLAotICAgIDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKLSAgICAxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk4LDExNywxMDUsMTA4LDEwMCwKLSAgICAxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwxMTcsMTE2LDEwLDMyLDMyLDMyLDMyLDEwOSwxMTcsCi0gICAgMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTE3LAotICAgIDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsCi0gICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMSwwLDEyNCwwLDAsOTUsCi0gICAgMSwwLDEwMCwwLDAsODMsNDAsMiwwLDAsMCw3OCwxMDUsMCwwLDAsCi0gICAgMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywKLSAgICA1LDAsMCwwLDk5LDExMSwxMTcsMTEwLDExNiw0MCwyLDAsMCwwLDExNyw0LAotICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKLSAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKLSAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwyNDcsMCwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMCwxLDksMSwxMTcsMjUsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksCi0gICAgMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LDAsCi0gICAgMCw0LDEwNiwwLDAsMTAwLDEsMCw1NSwyLDk1LDAsMCwxMDAsMiwwLAotICAgIDgzLDQwLDMsMCwwLDAsNzgsMTA1LDEsMCwwLDAsODQsNDAsMiwwLAotICAgIDAsMCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDQsMCwwLAotICAgIDAsODQsMTE0LDExNywxMDEsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCi0gICAgMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAotICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCi0gICAgNywwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDI1MSwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsMTUsMSwxMTcsMjQsMCwwLDAsOTUsNjgsMTE3LAotICAgIDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwKLSAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ5LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDMwLDAsMTE2LDEsCi0gICAgMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsCi0gICAgNCwxMDYsMCwwLDEwMCwzLDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4MywKLSAgICA0MCw0LDAsMCwwLDc4LDEwNSwwLDAsMCwwLDExNywzMSwwLDAsMCwKLSAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LAotICAgIDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMSwwLDAsMCw0MCwyLDAsMCwwLDExNyw1LDAsMCwwLDk5LDExMSwKLSAgICAxMTcsMTEwLDExNiwxMTcsMTIsMCwwLDAsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKLSAgICAxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAotICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAotICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsCi0gICAgMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMjU1LDAsMCwwLDExNSw2LAotICAgIDAsMCwwLDAsMSwxNSwxLDE1LDEsMTE3LDI0LDAsMCwwLDk1LDY4LAotICAgIDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LAotICAgIDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjMsMCwwLDAsCi0gICAgMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTAyLDIsMCwyMiw4Myw0MCwyLDAsMCwwLDc4LDExNywyNiwwLAotICAgIDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTksMTA3LDQwLDM3LDExNCw0MSwzMiw5NywxMTYsMzIsMzcsMTAwLDQwLDIsMCwwLAotICAgIDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDIsMCwwLDAsMTA1LAotICAgIDEwMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwKLSAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCi0gICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0LDEsMCwwLDExNSwyLDAsMCwKKyAgICAxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDAsOSwwLDAsMCwxMTQsNTYsMCwwLAorICAgIDAsMTE0LDU1LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsCisgICAgMTE0LDc2LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LAorICAgIDg0LDAsMCwwLDExNCw4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNjYsMCwKKyAgICAwLDAsMTM2LDAsMCwwLDExNSwxMiwwLDAsMCwxMiw0LDYsMiwxMiwKKyAgICA4LDEyLDEyLDEyLDI1LDEyLDEzLDExNCw2NiwwLDAsMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKKyAgICAwLDExNSw3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCisgICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAorICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKKyAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsNDAsMTEsMCwwLAorICAgIDAsMjQ0LDE2LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDg2LDAsMCwwLDY1LDMyLDExNSwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDMyLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywzMiwKKyAgICAxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiw4MCwKKyAgICAxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk4LDExNywxMDUsMTA4LDEwMCwxMTUsMzIsMTE5LDEwNSwxMTYsCisgICAgMTA0LDExMSwxMTcsMTE2LDEwLDMyLDMyLDMyLDMyLDEwOSwxMTcsMTA4LDExNiwxMDUsNDUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsCisgICAgNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwKKyAgICAwLDk1LDAsMCwxMDAsMSwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsCisgICAgODMsNDAsMiwwLDAsMCw3OCwxMTQsNjcsMCwwLDAsNDAsMiwwLDAsCisgICAgMCwxMTQsNzEsMCwwLDAsMTE0LDczLDAsMCwwLDQwLDIsMCwwLDAsCisgICAgMTE0LDc1LDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzYsMCwwLDAsMjA4LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTE3LDI1LDAsMCwwLAorICAgIDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LAorICAgIDAsMCwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwKKyAgICAwLDAsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDc4LDExNCwyOSwwLDAsCisgICAgMCw4NCw0MCwxLDAsMCwwLDExNCw3MywwLDAsMCw0MCwxLDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwxMTQsODMsMCwwLDAsMjEyLDAsMCwwLDExNSw0LAorICAgIDAsMCwwLDAsMSwxNSwxLDExNywyNCwwLDAsMCw5NSw2OCwxMTcsMTA5LAorICAgIDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDksMCwwLDAsMTI0LDAsCisgICAgMCwxMDYsMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMzAsMCwxMTYsMSwwLAorICAgIDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDAsMCw0LAorICAgIDEwNiwwLDAsMTAwLDMsMCw1NiwyLDk1LDAsMCwxMDAsMCwwLDgzLDQwLAorICAgIDQsMCwwLDAsNzgsMTE0LDY3LDAsMCwwLDExNywzMSwwLDAsMCw5OSwKKyAgICA5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCwKKyAgICA0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsMjksCisgICAgMCwwLDAsNDAsMiwwLDAsMCwxMTQsNzMsMCwwLDAsMTE0LDg1LDAsCisgICAgMCwwLDQwLDEsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw4NCwwLDAsMCwKKyAgICAyMTYsMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTUsMSwxMTcsCisgICAgMjQsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwyNSwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsODMsNDAsCisgICAgMiwwLDAsMCw3OCwxMTcsMjgsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAorICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwxMjMsMzMsMTE0LDEyNSw0MSwKKyAgICAzMiw5NywxMTYsMzIsMTIzLDEyNSw0MCwzLDAsMCwwLDExNCw0NiwwLDAsMCwKKyAgICAxMTQsNzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQwLDEsMCwwLDAsMTE0LAorICAgIDc1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCw4NywwLDAsMCwyMjEsMCwwLDAsMTE1LDIsMCwwLAogICAgIDAsMCwxLDExNywyNSwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLAogICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSwKLSAgICA5NSw3OCw0MCw4LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LAotICAgIDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwKLSAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDcsMCwKLSAgICAwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgOTUsOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSwKLSAgICA5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMjQzLDAsMCwwLDExNSwxMCwwLDAsMCwKLSAgICAxNiwyLDYsMiwxMiw0LDEyLDQsMTIsNSwxMTcsMTYsMCwwLDAsOTUsCi0gICAgNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCwKLSAgICAzLDAsMCwwLDExNSwxNDIsMCwwLDAsMTAwLDMsMCwxMjUsMSwwLDEyMSwKLSAgICAxNywwLDExNiwxLDAsMTM2LDAsMCwyNSwxMzEsMCwwLDEyNSwxLDAsODcsCi0gICAgMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw0MywwLDEsMSwxLAotICAgIDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDEzOCwKLSAgICAwLDExNiwzLDAsMTAwLDMsMCwxMDcsOCwwLDExNCw4MywwLDExNiw0LDAsCi0gICAgMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLDAsMTE2LDUsMCwxMzYsCi0gICAgMCwwLDEzMSwxLDAsMTI1LDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDIsMCwxMTYsNiwwLDEwNiw3LDAsCi0gICAgMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE2LDEsMCwxMzYsMCwwLDYwLAotICAgIDExMCwwLDAsMTI0LDEsMCw4Myw0MCw0LDAsMCwwLDExNywxMDksMCwwLAotICAgIDAsNzEsMTAxLDExNiwzMiwxMTEsMTE0LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsCi0gICAgMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsCi0gICAgMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDE5LAotICAgIDAsMCwwLDExNSwxMSwwLDAsMCwxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLAotICAgIDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDEsMCwwLDAsMTE3LDEzLAotICAgIDAsMCwwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSwKLSAgICA0MCwxLDAsMCwwLDExNywxLDAsMCwwLDk1LDQwLDEsMCwwLDAsCi0gICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwxMTcsMjksCi0gICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCi0gICAgMTE3LDIsMCwwLDAsOTksOTgsMjQsMSwwLDAsMTE1LDIsMCwwLDAsCisgICAgOTUsNzgsNDAsOCwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwKKyAgICAwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDc2LDAsMCwwLAorICAgIDExNCw4MywwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDg3LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCw4OCwwLDAsMCwyMDQsMCwwLDAsMTE1LDEwLDAsMCwKKyAgICAwLDEyLDIsNiwyLDEyLDQsMTIsNCwxMiw1LDExNCw4OCwwLDAsMCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsCisgICAgMCwzLDAsMCwwLDExNSwxNDIsMCwwLDAsMTAwLDEsMCwxMjUsMSwwLAorICAgIDEyMSwxNywwLDExNiwwLDAsMTM2LDAsMCwyNSwxMzEsMCwwLDEyNSwxLDAsCisgICAgODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCw0MywwLDEsMSwKKyAgICAxLDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAorICAgIDEzOCwwLDExNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCw4MywwLDExNiwzLAorICAgIDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLDAsMTE2LDQsMCwKKyAgICAxMzYsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLAorICAgIDIsMCwxMDAsMywwLDEzNCwwLDAsMTI1LDIsMCwxMTYsNSwwLDEwNiw2LAorICAgIDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE2LDAsMCwxMzYsMCwwLAorICAgIDYwLDExMCwwLDAsMTI0LDEsMCw4Myw0MCw0LDAsMCwwLDExNywxMDksMCwKKyAgICAwLDAsNzEsMTAxLDExNiwzMiwxMTEsMTE0LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwKKyAgICAxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsCisgICAgMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwKKyAgICAwLDE5LDAsMCwwLDExNSwxMSwwLDAsMCwxMTYsMCwwLDEzNiwwLDAsCisgICAgNjEsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDEsMCwwLDAsCisgICAgMjQ0LDEzLDAsMCwwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDExNSw0MCwxLDAsMCwwLDExNCwzNiwwLDAsMCw0MCwxLDAsMCwKKyAgICAwLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAyNDQsMiwwLDAsMCw5OSw5OCwyNDEsMCwwLDAsMTE1LDIsMCwwLDAsCiAgICAgMCwxLDExNywyOCwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsCiAgICAgMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCi0gICAgNDYsOTksOTgsNzgsNDAsOCwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsCi0gICAgMTEwLDEwMSwxMTcsMTMsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDExNyw4LDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDExNyw3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDE2LDAsCi0gICAgMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKLSAgICA5OSwxMDcsMTE3LDExLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAotICAgIDk5LDEwNywxMTcsOCwwLDAsMCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiwxMTcsCi0gICAgMywwLDAsMCwxMTQsMTAxLDEwMiw0MCwzLDAsMCwwLDExNyw0LDAsMCwKLSAgICAwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDExNywyLAotICAgIDAsMCwwLDk5LDk4LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsCi0gICAgNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKLSAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKLSAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDEwLAotICAgIDEsMCwwLDExNSwyNCwwLDAsMCwwLDQsNiwxLDMsMSwxNywxLAotICAgIDEzLDEsNSwxLDEyLDEsMTIsMSwxNSwyLDEyLDEsMTgsMiwyNSwxLAotICAgIDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5NSwxMDgsMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNzEsMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTMxLDAsMCwxLDEyMSwxNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMCwKLSAgICAwLDEsODcsMTEwLDE4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NiwwLAotICAgIDEsMSwxLDg5LDExMCwxMSwwLDg4LDEyNCwxLDAsMTA2LDUsMCwxMzEsMCwKLSAgICAwLDEsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywyMSwxLDAsMCwKLSAgICA4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LAotICAgIDk3LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwKLSAgICAzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAotICAgIDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwKLSAgICAxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsCi0gICAgMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKLSAgICAxMDUsMTIyLDEwMSwxMDAsNDQsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LAotICAgIDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsCi0gICAgMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiwKLSAgICA5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsCi0gICAgOTcsMTA3LDEwMSwxMTAsNDYsNzgsNDAsNiwwLDAsMCwxMTcsMTYsMCwwLDAsCi0gICAgOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsCi0gICAgMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDExNCwxMDEsCi0gICAgMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw3LDAsMCwwLDk3LAotICAgIDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsCi0gICAgMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDExNCwxMDEsCi0gICAgMTA4LDEwMSw5NywxMTUsMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsNDAsMCwwLDAsCi0gICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKLSAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSwKLSAgICA5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAyOSwxLDAsMCwxMTUsMTQsMCwwLDAsMCw3LDEyLDEsMTAsMSwzLAotICAgIDEsMTQsMSwxMywzLDUsMiwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwKLSAgICAxMDcsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLAotICAgIDc5LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LAotICAgIDIsMCwxNDIsMCwwLDgzLDQwLDEsMCwwLDAsMTE3LDQ2LDEsMCwwLAotICAgIDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsCi0gICAgMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCi0gICAgOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLAotICAgIDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCi0gICAgOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSwKLSAgICA5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsCi0gICAgMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDEwLDMyLDMyLDMyLDMyLAotICAgIDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwKLSAgICAxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsCi0gICAgMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LAotICAgIDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsCi0gICAgMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLDEwLDMyLDMyLDMyLDMyLDQwLDAsCi0gICAgMCwwLDAsNDAsMywwLDAsMCwxMTcsMSwwLDAsMCwxMDIsMTE3LDQsCi0gICAgMCwwLDAsOTcsMTE0LDEwMywxMTUsMTE3LDQsMCwwLDAsMTA3LDExOSwxMDAsMTE1LAotICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKLSAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI1LDAsMCwKLSAgICAwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LAotICAgIDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDQ5LDEsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsOCwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwKLSAgICAxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsCi0gICAgMTE4LDEwMSwxMDAsMTA1LDE1OCwxMiwwLDAsMTE3LDEsMCwwLDAsMTMsMTA1LDE2LAotICAgIDAsMCwwLDExNywxLDAsMCwwLDEwLDEwNSwyNCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDk5LAotICAgIDAsMCwwLDExNSwyOSwwLDAsMCwxMjQsMCwwLDkzLDE5LDAsMTI1LDEsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsNjMsMTAwLDAsMCw2NCw4NiwxLDExMywzLAotICAgIDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDEwNSwyNTUsMCwwLDAsNzgsCi0gICAgNDAsMSwwLDAsMCwxMTcsMTcsMCwwLDAsOTUsODIsNjUsODcsOTUsNzcsCi0gICAgNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsNDAsMiwwLDAsMCwKLSAgICAxMTcsMiwwLDAsMCw0Niw0OCwxMTcsMSwwLDAsMCwxMTAsNDAsMCwwLAotICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAotICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsCi0gICAgMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTUwLDEsMCwwLDExNSwyLDAsMCwwLAotICAgIDYsMCwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsCi0gICAgMTA1LDAsMCwwLDAsMTA1LDI1LDAsMCwwLDEwNSw4LDAsMCwwLDExNywKLSAgICAxMSwwLDAsMCw5NSw5NSwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsOTUsMTE3LAotICAgIDMsMCwwLDAsNDYsMTEyLDEyMSwxMTcsNCwwLDAsMCw0NiwxMTIsMTIxLDk5LAotICAgIDExNyw0LDAsMCwwLDQ2LDExMiwxMjEsMTExLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwxMSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxODAsCi0gICAgMCwwLDAsMTI0LDEsMCwxMDAsNSwwLDEwNyw4LDAsMTE0LDI1LDAsMTE2LAotICAgIDEsMCwxMDYsMiwwLDEwNiwzLDAsMTIsMTEwLDMsMCwxMjQsMSwwLDEyNSwKLSAgICAyLDAsMTI0LDIsMCwxMTQsNDYsMCwxMTYsNCwwLDEyNSwzLDAsMTEwLDYsCi0gICAgMCwxMTYsNSwwLDEyNSwzLDAsMTE2LDYsMCwxMjQsMCwwLDEzMSwxLDAsCi0gICAgOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw3LDAsMTAwLAotICAgIDEsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNiwwLDEyNSw3LDAsMTI1LDgsCi0gICAgMCwxMTYsMSwwLDEwNiw4LDAsMTA2LDksMCwxMjUsOSwwLDEyNCw5LDAsCi0gICAgMTAwLDUsMCwxMDcsOCwwLDExNCwxMzMsMCwxMTYsMTAsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMTMwLDEsMCwxMTAsMCwwLDEwMCwzLDAsMTA2LDExLDAsMTI0LDYsCi0gICAgMCwxMjQsNywwLDEyNCw5LDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEwMyw0LAotICAgIDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsMTIsMCwxMjQsNCwwLDExNiwxMywwLAotICAgIDEyNCwxMCwwLDEzMSwzLDAsODMsNDAsNiwwLDAsMCwxMTcsMjQ0LDEsMCwKLSAgICAwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKLSAgICAxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwKLSAgICAxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwKLSAgICAxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsCi0gICAgMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwKLSAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLAotICAgIDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwKLSAgICAxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCi0gICAgMTExLDExMCwxMCwzMiwzMiwzMiwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDQ2LAotICAgIDExMiwxMjEsOTksMzIsMTE3LDExMCwxMDgsMTAxLDExNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLAotICAgIDEwOCw5NywxMDMsMTE1LDQ2LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTExLDExMCw0NSwxMjIsMTAxLDExNCwxMTEsNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLAotICAgIDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiw0NiwxMTIsMTIxLDExMSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwKLSAgICAxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwKLSAgICAxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDk3LDMyLDk4LDExMSwxMTEsMTA4LDEwMSw5NywxMTAsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDExMiwxMDgsOTcsOTksMTAxLDMyLDExMSwxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLAotICAgIDEwOCw5NywxMDMsMTE1LDQ2LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LAotICAgIDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsCi0gICAgMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTcsMSwwLDAsMCw0NiwxMTcsMzYsMCwwLDAsCi0gICAgMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLAotICAgIDc4LDExMSwxMTAsMTAxLDExNywwLDAsMCwwLDEwNSwwLDAsMCwwLDc4LDQwLAotICAgIDE0LDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsCi0gICAgMCwwLDExNSwxMjEsMTE1LDExNyw1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsCi0gICAgOCwwLDAsMCwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNywyMywwLDAsCi0gICAgMCw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSwKLSAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjcsMCwwLDAsNzksODAsODQsCi0gICAgNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsCi0gICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDExLDAsMCwwLDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwKLSAgICAxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywxMTcsMTksMCwwLDAsNzgsMTExLDExNiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywKLSAgICA0LDAsMCwwLDEwNiwxMTEsMTA1LDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LAotICAgIDY1LDY3LDcyLDY5LDQwLDExLDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywKLSAgICAxMTYsMTA0LDExNywxNCwwLDAsMCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsCi0gICAgMTE0LDExNCwxMDUsMTAwLDEwMSwxMTcsNSwwLDAsMCwxMDAsMTAxLDk4LDExNywxMDMsMTE3LAotICAgIDgsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsNCwwLDAsCi0gICAgMCwxMDQsMTAxLDk3LDEwMCwxMTcsNCwwLDAsMCwxMTYsOTcsMTA1LDEwOCwxMTcsMTMsCisgICAgNDYsOTksOTgsNDAsNywwLDAsMCwxMTQsODksMCwwLDAsMjQ0LDgsMCwKKyAgICAwLDAsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDY4LDAsMCwwLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsNjYsMCwwLDAsMjQ0LDgsMCwwLDAsOTUsMTE5LAorICAgIDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsMTE2LDMsMCwwLDAsMTE0LDEwMSwxMDIsNDAsMywKKyAgICAwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDY5LDAsMCwwLDExNCw5MCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCw0MCwxLDAsMCwwLDExNCw3MSwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyNDQsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMjI3LDAsMCwwLDExNSwKKyAgICAyNCwwLDAsMCwwLDQsNiwxLDMsMSwxNywxLDEzLDEsNSwxLAorICAgIDEyLDEsMTIsMSwxNSwyLDEyLDEsMTgsMiwyNSwxLDExNCw5MywwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwKKyAgICAxLDEyMSwxNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLAorICAgIDE4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LAorICAgIDExMCwxMSwwLDg4LDEyNCwxLDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsCisgICAgMCw4Myw0MCwyLDAsMCwwLDExNywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwKKyAgICAxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksCisgICAgMTAxLDQ2LDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LAorICAgIDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLAorICAgIDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsCisgICAgNDQsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwKKyAgICAxMTAsMTE2LDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LAorICAgIDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksCisgICAgOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsCisgICAgNDYsNzgsNDAsNiwwLDAsMCwxMTQsOTMsMCwwLDAsMjQ0LDQsMCwwLAorICAgIDAsOTUsMTA1LDEwOSwxMTIsMjQ0LDEyLDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw4MywwLDAsMCwxMTQsNjUsMCwwLDAsCisgICAgMTE0LDg0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwKKyAgICA2OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwyNDQsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwKKyAgICAxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyNDYsMCwwLDAsMTE1LAorICAgIDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsMywKKyAgICA1LDIsMTE0LDk2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsMCwKKyAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCwxMTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLAorICAgIDEwNSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwxMDgsMTA4LAorICAgIDMyLDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwzMiwxMTUsCisgICAgMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LAorICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw5NywKKyAgICAzMiw5OSw5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsMTAxLDMyLAorICAgIDEwNSwxMTYsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiw5NywzMiwKKyAgICAxMTAsMTExLDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwzMiwxMTIsCisgICAgMTA4LDk3LDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLDk5LDEwOCwKKyAgICAxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsCisgICAgMTEwLDExNiwxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywxMTAsMTE2LAorICAgIDEwMSwxMDAsMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSw0NiwxMDMsCisgICAgNDYsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMCwxMDMsCisgICAgMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsCisgICAgNDEsMTAsMzIsMzIsMzIsMzIsMTE0LDQsMCwwLDAsNDAsMywwLDAsMCwKKyAgICAyNDQsMSwwLDAsMCwxMDIsMjQ0LDQsMCwwLDAsOTcsMTE0LDEwMywxMTUsMTE2LAorICAgIDQsMCwwLDAsMTA3LDExOSwxMDAsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDI0NCwyNSwwLDAsMCw5NSw5OSw5NywxMDgsCisgICAgMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsCisgICAgMTA5LDExMSwxMTgsMTAxLDEwMCwxMCwxLDAsMCwxMTUsMiwwLDAsMCwwLDgsCisgICAgMTE0LDk5LDAsMCwwLDEwNSwyMDgsMTIsMCwwLDIzMywyLDAsMCwwLDExNCwKKyAgICAxMywwLDAsMCwxMTUsMiwwLDAsMCwxMywxMCwxMTYsMTEsMCwwLDAsCisgICAgOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk1LDExNywzLDAsMCwwLAorICAgIDQ2LDExMiwxMjEsMTE3LDQsMCwwLDAsNDYsMTEyLDEyMSw5OSwxMTcsNCwwLDAsCisgICAgMCw0NiwxMTIsMTIxLDExMSw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsMTEsCisgICAgMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTgwLDAsMCwwLAorICAgIDEyNCwxLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyNSwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMDYsMiwwLDEyLDExMCwzLDAsMTI0LDEsMCwxMjUsMiwwLDEyNCwKKyAgICAyLDAsMTE0LDQ2LDAsMTE2LDMsMCwxMjUsMywwLDExMCw2LDAsMTE2LDQsCisgICAgMCwxMjUsMywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwKKyAgICAxMjUsNCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsNiwwLDEwMCwyLDAsMTMxLAorICAgIDEsMCw5MiwzLDAsMTI1LDYsMCwxMjUsNywwLDEyNSw4LDAsMTE2LDAsCisgICAgMCwxMDYsNywwLDEwNiw4LDAsMTI1LDksMCwxMjQsOSwwLDEwMCwxLDAsCisgICAgMTA3LDgsMCwxMTQsMTMzLDAsMTE2LDksMCwxMDAsMywwLDEzMSwxLDAsMTMwLAorICAgIDEsMCwxMTAsMCwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LDYsMCwxMjQsNywKKyAgICAwLDEyNCw5LDAsMTI0LDMsMCwxMDAsNSwwLDI1LDEwMyw0LDAsMTMxLDEsCisgICAgMCwxMjUsMTAsMCwxMTYsMTEsMCwxMjQsNCwwLDExNiwxMiwwLDEyNCwxMCwwLAorICAgIDEzMSwzLDAsODMsNDAsNiwwLDAsMCwxMTcsMjQ0LDEsMCwwLDcxLDEwNSwKKyAgICAxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLAorICAgIDk3LDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LAorICAgIDExNiwxMTUsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwKKyAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCisgICAgMTAsMzIsMzIsMzIsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsOTcsCisgICAgMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNDYsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsOTksCisgICAgMzIsMTE3LDExMCwxMDgsMTAxLDExNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsCisgICAgMTE1LDQ2LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLAorICAgIDExMCw0NSwxMjIsMTAxLDExNCwxMTEsNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDEwNSwxMTYsMzIsCisgICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiw0NiwxMTIsMTIxLDExMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKKyAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSwKKyAgICA0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDk3LDMyLDk4LDExMSwxMTEsMTA4LDEwMSw5NywxMTAsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDMyLDExMSwxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsCisgICAgMTE1LDQ2LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLAorICAgIDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw3OCwyNDQsMSwwLDAsMCw0NiwxMTcsMzYsMCwwLDAsMTE1LDEyMSwKKyAgICAxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwKKyAgICAxMTAsMTAxLDExNCwzMCwwLDAsMCwxMTQsNjcsMCwwLDAsNDAsMTMsMCwwLAorICAgIDAsMTE0LDcsMCwwLDAsMjQ0LDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LAorICAgIDI0NCw4LDAsMCwwLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjQ0LDIzLDAsCisgICAgMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LAorICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDI0NCwyNywwLDAsMCw3OSw4MCwKKyAgICA4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSwKKyAgICA5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsMzgsMCwwLDAsMjQ0LDksCisgICAgMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwyNDQsMTQsMCwwLAorICAgIDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDI0NCwKKyAgICA5LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywyNDQsMTksMCwKKyAgICAwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCwyNiwwLDAsMCwxMTQsMjgsMCwwLDAsMjQ0LAorICAgIDgsMCwwLDAsOTUsODAsODksNjcsNjUsNjcsNzIsNjksNDAsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDExNiwxNCwwLDAsMCwxMDAsMTAxLDk4LDExNywxMDMsCisgICAgOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwyNDQsNSwwLDAsMCwxMDAsMTAxLAorICAgIDk4LDExNywxMDMsMjQ0LDgsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwKKyAgICAyNDQsNCwwLDAsMCwxMDQsMTAxLDk3LDEwMCwxMTQsMzcsMCwwLDAsMjQ0LDEzLAogICAgIDAsMCwwLDk4LDk3LDExNSwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAotICAgIDExNywzLDAsMCwwLDExNSwxMDEsMTEyLDExNywxLDAsMCwwLDk1LDExNywzLAotICAgIDAsMCwwLDExNiw5NywxMDMsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKLSAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAotICAgIDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTU5LDEsMCwwLDExNSwyMiwwLDAsMCwwLDEzLAotICAgIDMxLDEsNiwxLDksMiw2LDEsMTgsMSwyNCwxLDEyLDEsMTIsMSwKLSAgICAxNSwxLDMxLDEsMTE3LDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLAotICAgIDExNCwxMTEsMTA5LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTkzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEwMCw3LDAsCi0gICAgMTA3LDgsMCwxMTQsMzMsMCwxMTYsNCwwLDEwMCwxLDAsMTMxLDEsMCwxMzAsCi0gICAgMSwwLDExMCwwLDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwKLSAgICAwLDEyNSwxLDAsMTI1LDIsMCwxMTYsNSwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICA5MiwyLDAsMTI1LDEsMCwxMjUsMywwLDEyNCwzLDAsMTE2LDYsMCwxMDcsCi0gICAgMywwLDExNCwxMDgsMCwxMTYsNywwLDEwMCwyLDAsMTA2LDgsMCwxMTYsNiwKLSAgICAwLDEyNCwwLDAsMTMxLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwKLSAgICAxMjQsMiwwLDEwNiw5LDAsMTAwLDMsMCwxMzEsMSwwLDEwMCw0LDAsMTA3LAotICAgIDMsMCwxMTQsMTUzLDAsMTE2LDcsMCwxMDAsNSwwLDEwNiw4LDAsMTI0LDIsCi0gICAgMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsCi0gICAgMTA2LDEwLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCw2LDAsMjUsMTI1LDQsMCwKLSAgICAxMTYsMTEsMCwxMjQsMSwwLDEyNCw0LDAsMTE2LDEyLDAsMTAwLDYsMCwyNSwKLSAgICAyMywxMzEsMiwwLDgzLDQwLDgsMCwwLDAsMTE3LDEyMSwxLDAsMCw3MSwKLSAgICAxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwKLSAgICAzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsMTEyLAotICAgIDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsCi0gICAgMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLAotICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsCi0gICAgMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLAotICAgIDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LAotICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLAotICAgIDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLAotICAgIDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksODAsMzIsNTEsNDksNTIsNTUsMzIsCi0gICAgMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsCi0gICAgMTAwLDQ2LDMyLDczLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAotICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCi0gICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKLSAgICAxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE3LDM2LDAsMCwwLDExNSwxMjEsMTE1LAotICAgIDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0NiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLAotICAgIDEwMSwxMTcsMzcsMCwwLDAsMTIzLDEyNSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMTEsMTE2LAotICAgIDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKLSAgICAxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDExNywxLDAsMCwwLAotICAgIDQ2LDEwNSwyLDAsMCwwLDExNywyOCwwLDAsMCwxMDEsMTIwLDExMiwxMDEsOTksCi0gICAgMTE2LDEwMSwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDUwLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwKLSAgICAxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEwNSwwLDAsMCwwLDc4LDQwLDEzLDAsCi0gICAgMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywxNCwwLDAsMCwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMTE3LDksMCwKLSAgICAwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDExNyw0LDAsMCwwLAotICAgIDc4LDExMSwxMTAsMTAxLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwKLSAgICAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDgsMCwwLAotICAgIDAsOTUsODAsODksNjcsNjUsNjcsNzIsNjksMTE3LDEwLDAsMCwwLDg2LDk3LAotICAgIDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwKLSAgICAxMDksOTcsMTE2LDExNyw1LDAsMCwwLDk5LDExMSwxMTcsMTEwLDExNiwxMTcsOSwwLAotICAgIDAsMCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNywxMCwwLDAsMCwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsMTE3LDE1LDAsMCwwLDgzLAotICAgIDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLDUsCi0gICAgMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLAotICAgIDAsMTA0LDEwMSw5NywxMDAsMTE3LDE2LDAsMCwwLDExMiwxMjEsOTksOTcsOTksMTA0LAotICAgIDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwwLDAsMTEyLAotICAgIDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMywwLDAsMCw5OCw5NywxMTUsMTAxLDk1LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwKLSAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKLSAgICAxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAotICAgIDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDE4NiwxLDAsMCwxMTUsMjQsCi0gICAgMCwwLDAsMCw5LDE4LDEsMTUsMSwxOCwxLDE4LDEsMTIsMSw5LAotICAgIDEsMTgsMSwyMSwxLDksMSwxNSwxLDE5LDEsMTE3LDE3LDAsMCwwLAorICAgIDI0NCwzLDAsMCwwLDExNSwxMDEsMTEyLDExNCwzNiwwLDAsMCwxMTYsMywwLAorICAgIDAsMCwxMTYsOTcsMTAzLDI0NCw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwyNDQsMTcsMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMzEsMSwwLDAsMTE1LDIyLDAsMCwwLAorICAgIDAsMTMsMzEsMSw2LDEsOSwyLDYsMSwxOCwxLDI0LDEsMTIsMSwKKyAgICAxMiwxLDE1LDEsMzEsMSwxMTQsMTE3LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE5MywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwKKyAgICAwLDEwNyw4LDAsMTE0LDMzLDAsMTE2LDMsMCwxMDAsMiwwLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTAsMCwwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDkyLAorICAgIDIsMCwxMjUsMSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsOTIsMiwwLDEyNSwxLDAsMTI1LDMsMCwxMjQsMywwLDExNiw1LDAsCisgICAgMTA3LDMsMCwxMTQsMTA4LDAsMTE2LDYsMCwxMDAsMywwLDEwNiw3LDAsMTE2LAorICAgIDUsMCwxMjQsMCwwLDEzMSwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLAorICAgIDAsMTI0LDIsMCwxMDYsOCwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsNSwwLAorICAgIDEwNywzLDAsMTE0LDE1MywwLDExNiw2LDAsMTAwLDYsMCwxMDYsNywwLDEyNCwKKyAgICAyLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwKKyAgICAwLDEwNiw5LDAsMTAwLDQsMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDQsCisgICAgMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCw0LDAsMTE2LDExLDAsMTAwLDcsMCwKKyAgICAyNSwyMywxMzEsMiwwLDgzLDQwLDgsMCwwLDAsMTE3LDEyMSwxLDAsMCwKKyAgICA3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAorICAgIDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsCisgICAgMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwKKyAgICAxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwKKyAgICAxMjAsMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsCisgICAgMTIxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwKKyAgICAxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsCisgICAgMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExMSwxMTAsCisgICAgMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksODAsMzIsNTEsNDksNTIsNTUsCisgICAgMzIsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwKKyAgICAxMDEsMTAwLDQ2LDMyLDczLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsCisgICAgOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsCisgICAgMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LAorICAgIDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE3LDM2LDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAorICAgIDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSwxMTcsMzcsMCwwLDAsMTIzLDEyNSwzMiwxMTAsMTExLDExNiwzMiw5OCwKKyAgICAxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTAwLDEwNSwxMTQsMTAxLAorICAgIDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDExNCwxMDEsMCwKKyAgICAwLDAsMTE0LDEwMCwwLDAsMCwxMTcsMjgsMCwwLDAsMTAxLDEyMCwxMTIsMTAxLAorICAgIDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMDAsMTExLDExNiwxMTUsCisgICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNjcsMCwwLDAsNDAsMTIsMCwKKyAgICAwLDAsMTE0LDcsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMDksMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwxMTAsMCwwLDAsCisgICAgMjQ0LDEwLDAsMCwwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsCisgICAgNDYsMCwwLDAsMTE0LDczLDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDI4LAorICAgIDAsMCwwLDI0NCwxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4MywKKyAgICA4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCw1LDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCwxMTQsMTEzLDAsMCwwLDExNiwxNiwwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNiw3LDAsMCwwLAorICAgIDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSwxMTQsMTE0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxNywwLDAsMCwKICAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDEzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwwLDEwMCw2LDAsCi0gICAgODMsMTI0LDAsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsCi0gICAgMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwKLSAgICAxMjQsMywwLDEwNiwzLDAsMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLAotICAgIDIsMCwyNSwxMDAsNSwwLDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywKLSAgICAxMjEsMTYsMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LAotICAgIDExMCw0MCwwLDQsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTA3LDEwLDAsCi0gICAgMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDYsMCwxMDAsOSwwLDEzMywKLSAgICAyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiw3LDAsMTI0LDQsCi0gICAgMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDAsCi0gICAgMTAsMCwwLDAsMTE3LDE4OCwwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwKKyAgICAxMDEsMTU4LDEsMCwwLDExNSwyNCwwLDAsMCwwLDksMTgsMSwxNSwxLAorICAgIDE4LDEsMTgsMSwxMiwxLDMsMSwyNCwxLDIxLDEsMywxLDIxLDEsCisgICAgMTksMSwxMTQsMTIwLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICA1LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLAorICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLAorICAgIDExNCwyMiwwLDEwMCwyLDAsODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsCisgICAgMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LAorICAgIDEsMCwxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsCisgICAgNywwLDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LAorICAgIDg1LDAsMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLAorICAgIDEsMCwxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLAorICAgIDEwMiwyLDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLAorICAgIDIsMCwxMDAsOSwwLDEzMywyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLAorICAgIDg4LDExNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLAorICAgIDgzLDEyNCwwLDAsODMsNDAsMTAsMCwwLDAsMTE3LDE4OCwwLDAsMCw2NywKKyAgICAxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywKKyAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsCisgICAgMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsCisgICAgMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LAorICAgIDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwKKyAgICAzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwKKyAgICAxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsCisgICAgMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDY3LDAsMCwwLAorICAgIDc4LDExNCwxMDEsMCwwLDAsMjMzLDMsMCwwLDAsMTE0LDI5LDAsMCwwLAorICAgIDExNiwyLDAsMCwwLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LDI1NSwyMzMsMjU1LDI1NSwyNTUsCisgICAgMjU1LDExNCwxMjMsMCwwLDAsNDAsNywwLDAsMCwxMTQsMzEsMCwwLDAsCisgICAgMTE0LDMyLDAsMCwwLDI0NCw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE0LAorICAgIDEyMCwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMTgsMCwwLDAsMTE0LDQ0LAorICAgIDAsMCwwLDQwLDUsMCwwLDAsMjQ0LDEzLDAsMCwwLDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNiw0LDAsMCwwLDExNCwKKyAgICAxMDEsMTE1LDExNiwxMTQsMzYsMCwwLDAsMTE2LDksMCwwLDAsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMjQ0LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjQ0LDE1LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsMTAxLDE4MSwxLDAsMCwxMTUsMjAsMCwKKyAgICAwLDAsMCw3LDE4LDEsNCwxLDI0LDEsMzUsMSw0LDEsMywxLAorICAgIDE2LDEsMTksMSwyMSwxLDExNCwxMjcsMCwwLDAsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYzLDAsMCwwLDEyMSwyMiwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsMTA2LDIsMCwxMjUsMSwwLDg3LDExMCwyNCwwLDQsMTE2LAorICAgIDMsMCwxMDcsMTAsMCwxMTQsNDgsMCwxLDEsMSwxMDAsMSwwLDEyNSwxLAorICAgIDAsODksMTEwLDEsMCw4OCwxMjQsMSwwLDEwMCwyLDAsNzksMTI1LDEsMCwKKyAgICAxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDUxLDAsMCwwLDY3LDk3LAorICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsCiAgICAgMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsCi0gICAgOTgsMTA4LDEwMSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwKLSAgICAxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsCi0gICAgMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSwKLSAgICA5NywxMTQsMTAwLDExNSw0NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LAotICAgIDExNiwxMjEsMzIsMTAyLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsOTUsNjksMTIwLDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCwKLSAgICA0MSwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwwLDAsMCwwLDExNywxLDAsMCwwLDQ2LAotICAgIDEwNSwzLDAsMCwwLDEwNSwxLDAsMCwwLDExNywyLDAsMCwwLDExMiwKLSAgICAxMjEsNzgsMTA1LDI1MywyNTUsMjU1LDI1NSwxMDUsMjU1LDI1NSwyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwKLSAgICAyNTUsNDAsOCwwLDAsMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNCwKLSAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsCi0gICAgMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDUsMCwwLDAsMTA4LDExMSwxMTksMTAxLDExNCwKLSAgICAxMTcsMTcsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksCi0gICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTksMCwwLDAsNzgsMTExLDExNiw3MywxMDksCi0gICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMCwKLSAgICAwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDEyLDAsCi0gICAgMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQwLDUsCi0gICAgMCwwLDAsMTE3LDEzLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDExNCwxMDEsMTE1LDExNiwxMTcsMSwKLSAgICAwLDAsMCw5NSwxMTcsOSwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCi0gICAgMTExLDExMCwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwKLSAgICAwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwyMDksMSwwLDAsMTE1LDIwLDAsMCwwLDAsNywxOCwxLDQsCi0gICAgMSwyNCwxLDM1LDEsNCwxLDMsMSwxNiwxLDE5LDEsMjEsMSwxMTcsCi0gICAgMTUsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTE3LDksMCwwLDAsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LAotICAgIDEyMSwxMDUsMSwwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw0LDAsMCwwLDcxLDAsMCwwLDExNSw4MSwwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LAotICAgIDc3LDAsMTI0LDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDYsCi0gICAgMCwxMDAsMywwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTAsMCwwLDExNiw0LAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLAotICAgIDExNiwwLDAsMTA2LDYsMCwxMzEsMSwxLDEsMTEwLDAsMCwxMDAsNSwwLAotICAgIDgzLDQwLDcsMCwwLDAsMTE3LDYxLDAsMCwwLDgwLDExNCwxMDUsMTEwLDExNiwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLAotICAgIDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LAotICAgIDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywKLSAgICAxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwxMTcsMSwwLDAsMCwzNSwxMTcsNywKLSAgICAwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTcsMiwwLDAsMCwzNSwKLSAgICAzMiwxMTcsNCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsNzgsNDAsMiwwLDAsMCwKLSAgICAxMTcsMSwwLDAsMCwzNSwxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiw0MCw3LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywKLSAgICA1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsNywwLDAsMCwxMTgsMTAxLAotICAgIDExNCw5OCwxMTEsMTE1LDEwMSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwKLSAgICAxMTksMTA1LDExNiwxMDQsMTE3LDUsMCwwLDAsMTEyLDExNCwxMDUsMTEwLDExNiwxMTcsNiwKLSAgICAwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw2LDAsMCwwLDExNSwxMTYsCi0gICAgMTAwLDEwMSwxMTQsMTE0LDQwLDMsMCwwLDAsMTE3LDcsMCwwLDAsMTA5LDEwMSwKLSAgICAxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDksMCwwLDAsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKLSAgICAxMDUsMTE2LDEyMSwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLDExNSw0MCwwLDAsMCwKLSAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLAotICAgIDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMjgsMSwwLAotICAgIDAsMTE1LDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMywxLDExNywxNiwKLSAgICAwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsCi0gICAgOTcsMTAzLDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsCi0gICAgMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwKLSAgICAwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLAotICAgIDQwLDMsMCwwLDAsMTE3LDM5LDAsMCwwLDgzLDEwMSwxMTYsMzIsOTUsOTUsCi0gICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0Niw5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0LDAsCi0gICAgMCwwLDMxLDAsMCwwLDExNSwxMDEsMCwwLDAsMTM2LDAsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTQyLDAsMCwxMjUsMiwwLDExNiwwLDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDk3LDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwyLDAsOTUsMywwLDExNiw0LAotICAgIDAsMTI0LDIsMCwxMDAsMiwwLDEzMSwyLDAsMTE1LDk3LDAsMTI0LDIsMCwKLSAgICAxMDYsMywwLDEwNiw1LDAsMTAwLDMsMCwxMzEsMSwwLDEwMCw0LDAsMjUsCi0gICAgMTI0LDIsMCw5NSwzLDAsMTEzLDk3LDAsMTEwLDAsMCwxMjQsMiwwLDgzLAotICAgIDQwLDUsMCwwLDAsNzgsMTE3LDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSw5NSwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsMCw0MCw2LAotICAgIDAsMCwwLDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNywKLSAgICA0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw4LDAsMCwwLDk1LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LAotICAgIDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LAotICAgIDExNCwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCi0gICAgNDAsMywwLDAsMCwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLDExNSwxMTcsNiwKLSAgICAwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LDAsMCwwLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwKLSAgICAxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsMCwwLDExNSwxMDEsMTE2LAotICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKLSAgICAyMzgsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSwxNSwxLDI0LDEsMTIsCi0gICAgMSwxNSwxLDMxLDEsMTE3LDQwLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTE1LAotICAgIDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwKLSAgICAxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywKLSAgICAxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMTksCi0gICAgMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwKLSAgICAxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKLSAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKLSAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDExNSwKLSAgICAxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMzYsMSwwLDAsMTE1LDYsCi0gICAgMCwwLDAsMCwyLDE4LDcsMTMsMSwxMTcsMTEsMCwwLDAsMTE1LDEwMSwKLSAgICAxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsCi0gICAgMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsCi0gICAgMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsCi0gICAgMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwxMTcsMzgsMCwwLDAsCi0gICAgODMsMTAxLDExNiwzMiw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDMyLDExMSwKLSAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsNCwKLSAgICAwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSw0OSwwLDAsMCwKLSAgICAxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwxLDAsMTI1LAotICAgIDMsMCwxMTYsMCwwLDEyNCwzLDAsMTAwLDEsMCwxMzEsMiwwLDExNSw0NSwKLSAgICAwLDEyNCwwLDAsMTI0LDMsMCw5NSwxLDAsMTEwLDAsMCwxMjQsMywwLAotICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsMiwwLDAsMCwxMTcsNywwLDAsMCwKLSAgICAxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsCi0gICAgMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDk3LDExNCwxMDMsMTE1LDExNyw2LDAsCi0gICAgMCwwLDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwKLSAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwyNTEsMSwKLSAgICAwLDAsMTE1LDgsMCwwLDAsMCwxLDE4LDEsMTUsMSwxMiwxLDExNywKLSAgICAzOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDYwLAotICAgIDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LAotICAgIDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywKLSAgICAwLDAsMCwxMDIsMTIwLDExMCwxMTcsMTgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwwLDAsCi0gICAgMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LAotICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAotICAgIDYyLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDI0OSwxLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNywKLSAgICAxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywKLSAgICAwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwKLSAgICAxMTcsNDIsMywwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDExNSwxMDEsMTA4LDEwMSw5OSwxMTYsMTA1LAotICAgIDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMTQsCi0gICAgOTcsMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsCi0gICAgMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LAotICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTA1LAotICAgIDExNSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA1LDExNiwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwMSwxMjAsMTA1LDExNSwKLSAgICAxMTYsMTE1LDMyLDExMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDExOSw0NCwzMiwxMTYsMTA0LDEwMSwKLSAgICAxMTAsMzIsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTAsMzIsMzIsMzIsMzIsMTA1LAotICAgIDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExNCwxMTUsMTE2LDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDQ0LDMyLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTUsOTUsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDExNSwxMDEsMTA4LAotICAgIDEwMiw0NCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDMyLDk3LDk5LAotICAgIDk5LDExMSwxMTQsMTAwLDEwNSwxMTAsMTAzLDEwOCwxMjEsMzIsNDAsMTA1LDEwMiwzMiwxMTUsMTAxLAotICAgIDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsNDEsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsNDEsMzIsMTE5LDEwNSwxMDgsMTA4LAotICAgIDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTAyLDExMSwKLSAgICAxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMDEsMTAwLAotICAgIDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw0MCwxMDUsMTAyLDMyLDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCw0MSwzMiwKLSAgICAxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwxMTYsMzIsMTE5LDExMSwxMTQsCi0gICAgMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwKLSAgICAxMTIsMTExLDExNSwxMTYsNDUsMTA4LDExMSw5NywxMDAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsNzMsMTAyLDMyLDk3LDExMCwzMiwxMDEsMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAotICAgIDEwNSwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsMTE3LDk4LDExNSwxMDEsMTEzLAotICAgIDExNywxMDEsMTEwLDExNiwxMDgsMTIxLDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwzMiwxMDIsCi0gICAgMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTE0LDk3LAotICAgIDExNiwxMTEsMTE0LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTAxLDEwMCwzMiwxMDIsCi0gICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDk3LDEwNywxMDEsMTE1LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExNSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsNywwLDAsMCwyNSwwLDAsMCwKLSAgICAzMSwwLDAsMCwxMTUsMjU0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsCi0gICAgMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsCi0gICAgMCwxMDcsOSwwLDEyNSw1LDAsMTI0LDUsMCwxMTUsMTY4LDAsMTE2LDQsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMDAsMywwLDEyNCw0LDAsOTUsCi0gICAgNiwwLDEyNCw0LDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsNjAsMTI0LAotICAgIDAsMCwxMjQsNCwwLDk1LDcsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw4LAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw2LDAsODcsMTEwLDI0LDAsNCwxMTYsCi0gICAgOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDEyNCwwLDEsMSwKLSAgICAxLDg5LDExMywxNzcsMCw4OCwxMjQsNiwwLDExNCwxNDMsMCwxMjQsMSwwLDEyNCwKLSAgICA0LDAsOTUsMTEsMCwxMTMsMTc3LDAsMTI0LDEsMCwxMDYsMTIsMCwxMDAsMSwKLSAgICAwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjQsNCwwLDk1LDExLDAsMTEwLDksCi0gICAgMCwxMDAsMywwLDEyNCw0LDAsOTUsNiwwLDEyMiw2MCwwLDEyMSwyMywwLAotICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsNCwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsCi0gICAgMiwwLDgzLDg3LDExMCwzMCwwLDEsMSwxLDEyNCw1LDAsMTE1LDIyOCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwwLDAsMTMwLDAsMCwKLSAgICA4OSwxMTAsMSwwLDg4LDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsNCwwLDk1LAotICAgIDYsMCw4OCwxMDAsMCwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LDEsMCwKLSAgICAwLDAsNDYsMTA1LDAsMCwwLDAsODQsNzAsNDAsMTQsMCwwLDAsMTE3LAotICAgIDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTE1LDExNywzLDAsMCwwLDEwMywxMDEsMTE2LDExNyw0LDAsMCwwLAotICAgIDc4LDExMSwxMTAsMTAxLDExNywxMCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsMTYsMCwwLAotICAgIDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLDEwMyw5NSwKLSAgICA5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwKLSAgICAxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LAotICAgIDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywKLSAgICAxNCwwLDAsMCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgOTUsOTUsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLDQwLDcsMCwwLDAsCi0gICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsCi0gICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLDExNSwxMTcsCi0gICAgNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LDAsMCwwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCw0MCwKLSAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAotICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LAotICAgIDExMiwxMTIsMTAxLDExNCwyMiwyLDAsMCwxMTUsNDQsMCwwLDAsMCwxLDE4LAotICAgIDEsMTIsMSw2LDQsMTIsMyw5LDEsMTMsMSw5LDEsMywxLDE5LAotICAgIDEsMTksMSw1LDIsNiwxLDEyLDIsMjUsMiw5LDEsNiwyLDIzLAotICAgIDEsMywxLDYsMSwxMywxLDEyLDIsMTE3LDUyLDAsMCwwLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLAotICAgIDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTksMTE0LDk3LAotICAgIDExMiw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDExNywyNSwKLSAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwwLAotICAgIDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjksCi0gICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCi0gICAgMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNCwyLDAsMCwxMTUsNiwwLDAsMCwwLAotICAgIDE4LDE4LDMzLDEzLDEsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDExNSwzOCwwLDAsMCwxMDAsMywwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTM0LDEsMCwxMjUsMSwwLDExNiwxLDAsMTI0LDEsMCwKLSAgICAxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQwLDQsMCwwLDAsCi0gICAgMTE3LDI1MiwwLDAsMCw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsCi0gICAgMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMTQsCi0gICAgMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywxMTAsMTAwLAotICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDExNCwKLSAgICAxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk1LAotICAgIDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCi0gICAgMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsCi0gICAgMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLDMyLDk3LAotICAgIDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsMTE1LDMyLAotICAgIDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLAotICAgIDAsMCwzMSwwLDAsMCwxMTUsODMsMCwwLDAsMTI0LDEsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwxLDAsCi0gICAgMTEwLDQwLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA3LDMsMCwxMTQsCi0gICAgNjQsMCwxMTYsMiwwLDEwMCwxLDAsMTI0LDEsMCwyMiwxMDAsMiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwyLDAsODMsNDAsMywKLSAgICAwLDAsMCw3OCwxMTcsMjMsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKLSAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwzNywxMTUsCi0gICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMywwLDAsMCwxMTcsNCwKLSAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsCi0gICAgMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsOTcsMTE0LDEwMywxMTUsCi0gICAgMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MCwxLDAsMCwwLAotICAgIDExNyw2LDAsMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDQwLDAsMCwwLDAsCi0gICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCi0gICAgMTEyLDYyLDExNywxOSwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCi0gICAgMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw2NywyLDAsMCwxMTUsMTAsCi0gICAgMCwwLDAsMCwxLDEyLDEsMTIsMSwxNSwxLDI1LDEsMTE3LDQwLDAsCi0gICAgMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwKLSAgICAxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCi0gICAgMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3OCw0MCwyLDAsMCwwLAotICAgIDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LDAsMCwwLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMTE3LDE5LDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsCi0gICAgNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDU5LDIsMCwwLDExNSw2LDAsMCwwLDAsOCwyMSw2LDEzLAotICAgIDEsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKLSAgICAwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsMywKLSAgICAwLDAsMCwxMTcsNDksMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwKLSAgICAxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwKLSAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwKLSAgICAwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNywwLDExNCwKLSAgICA0NSwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsCi0gICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MCwzLDAsCi0gICAgMCwwLDc4LDExNywyNywwLDAsMCwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsNCwwLDAsCi0gICAgMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMjAsMCwwLDAsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE1LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQwLDIsMCwKLSAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLAotICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsMCwwLDExNywzLDAsCi0gICAgMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyNSwwLDAsCi0gICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDc5LDIsMCwwLDExNSw4LAotICAgIDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwxMTcsNTIsMCwwLDAsCisgICAgNDYsMTA1LDE4MiwxLDAsMCwyMzMsMTI4LDAsMCwwLDQwLDQsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDM5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsCisgICAgNDAsMCwwLDAsNDAsMiwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQyLAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDI0NCwxMCwwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTAxLDIwMCwxLDAsMCwxMTUsMTIsMCwwLDAsMCwyLDMsMSwyMiwxLAorICAgIDEzLDEsMTEsMywxMCwxLDExNCwxMjksMCwwLDAsMjQ0LDksMCwwLDAsCisgICAgMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSwxMTQsMjksMCwwLDAsOTksMSwKKyAgICAwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw3MSwKKyAgICAwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLAorICAgIDAsMTI0LDEsMCwxMDcsNSwwLDExNCw3NywwLDEyNCwwLDAsMTA2LDMsMCwKKyAgICAxMDAsNiwwLDEzMSwxLDAsMTE1LDQ2LDAsMTAwLDMsMCwxMjQsMCwwLDIzLAorICAgIDEyNSwwLDAsMTEwLDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsCisgICAgMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsMTMxLDEsCisgICAgMSwxLDExMCwwLDAsMTAwLDUsMCw4Myw0MCw3LDAsMCwwLDExNyw2MSwKKyAgICAwLDAsMCw4MCwxMTQsMTA1LDExMCwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsCisgICAgMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsCisgICAgMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSw4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSwKKyAgICA4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsCisgICAgMjQ1LDEsMCwwLDAsMzUsMjQ1LDcsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMzIsMTE3LDIsMCwwLDAsMzUsMzIsMTE0LDUzLDAsMCwwLDc4LDQwLAorICAgIDIsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTMyLDAsMCwwLDQwLDcsCisgICAgMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDEwMiwwLDAsMCwyNDQsNywwLAorICAgIDAsMCwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTQsOSwwLDAsMCwyNDQsNSwKKyAgICAwLDAsMCwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw0NiwwLDAsMCwyNDQsNiwwLAorICAgIDAsMCwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCw0MCwzLDAsMCwwLDI0NCw3LDAsCisgICAgMCwwLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCwxMzAsMCwwLDAsMTE0LDk4LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDI0NCwxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwKKyAgICAxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMTIsMSwwLDAsMTE1LDgsMCwwLDAsCisgICAgMCwyLDE4LDEsMTUsMSwxMywxLDExNCwxMzcsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLAorICAgIDAsMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKKyAgICA5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwKKyAgICAzLDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LAorICAgIDAsMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MCw4LDAsMCwwLAorICAgIDI0NCwxMywwLDAsMCw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSwKKyAgICA5NywxMDAsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LDEsMCwxMjQsCisgICAgMCwwLDk1LDAsMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsCisgICAgMSwwLDAsMCwyNDQsNSwwLDAsMCw5NSwxMTAsOTcsMTA5LDEwMSw0MCwyLAorICAgIDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc2LDAsMCwKKyAgICAwLDIyMiwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDIyLDAsMCwKKyAgICAwLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwwLAorICAgIDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNiwwLAorICAgIDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCwKKyAgICA0MCw0LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDcsMCwwLDAsMjQ0LAorICAgIDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDI0NCwxMCwwLDAsMCwKKyAgICA5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsNDAsMSwwLDAsMCwxMTQsCisgICAgNzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjQ0LDksMCwwLDAsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSwKKyAgICA5NSwyMjUsMSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyMywwLDAsCisgICAgMCw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsCisgICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxMiwwLDAsMCw3MSwwLDAsMCwxMTUsODAsMCwKKyAgICAwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMSwKKyAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTQsNzYsMCwxMjQsMCwwLDEwNiwxLAorICAgIDAsMTIsMTE0LDc2LDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwwLAorICAgIDAsMTA2LDQsMCw2MSw4NywxMTMsNzYsMCw0LDExNiw1LDAsMTA3LDEwLDAsCisgICAgMTE0LDcyLDAsMSwxLDEsODksMTEzLDc2LDAsODgsMTEwLDAsMCwxMDAsMCwKKyAgICAwLDgzLDQwLDMsMCwwLDAsNzgsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LDI3LDAsCisgICAgMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsCisgICAgMCwxMDcsOSwwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsMTE0LDQsMCwwLDAsNDAsMiwwLDAsMCwxMTQsMjIsMCwKKyAgICAwLDAsMTE2LDMsMCwwLDAsOTcsMTE0LDEwMywxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDUsOSwwLDAsMCw2MCwxMDMsCisgICAgMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMjI5LDEsMCwwLDExNSwyLDAsMCwwLAorICAgIDYsMCwxMTcsNDEsMCwwLDAsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLAorICAgIDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsCisgICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLAorICAgIDQwLDYsMCwwLDAsMjQ0LDMsMCwwLDAsOTcsMTEwLDEyMSwxMTQsMTQxLDAsCisgICAgMCwwLDExNCw3LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDEzOSwwLDAsCisgICAgMCwxMTQsOTEsMCwwLDAsNDAsMiwwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDk4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDI0NCw4LDAsMCwwLDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSwKKyAgICA5NSwyMjgsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMSwzNSwxLDMsMSwKKyAgICAxNywxLDEzLDEsMTE3LDIyLDAsMCwwLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLAorICAgIDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsCisgICAgNDAsNiwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCwKKyAgICA1NywwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTQ1LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxMzgsMCwwLDAsMjIwLDEsMCwwLAorICAgIDExNSw2LDAsMCwwLDEyLDIsMTIsMywxMiwzLDExNCwxMzgsMCwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCwwLDAsMCwwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKKyAgICAzLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzQsMCwKKyAgICAxLDkwLDQsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDYsMCwxMDAsNywwLAorICAgIDEzNCwwLDAsOTAsNSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsOCwwLDEwMCwKKyAgICA5LDAsMTM0LDAsMCw5MCw2LDAsMTM1LDAsMCw4Myw0MCwxMCwwLDAsCisgICAgMCwyNDQsMTQsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3Nyw5NywxMTAsCisgICAgOTcsMTAzLDEwMSwxMTQsMTE3LDEyMiwwLDAsMCw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwKKyAgICAzMiwxMDksOTcsMTEwLDk3LDEwMywxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTQsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw2OCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LAorICAgIDExMSwxMTIsMTAxLDExNCwzMiwxMTcsMTEwLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDEwMiwKKyAgICAxMTQsMTExLDEwOSwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCisgICAgMTE3LDExMiwxMTEsMTEwLDMyLDEwMiw5NywxMDUsMTA4LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDI0NCwxMCwwLDAsMCwxMTQsMTAxLDExNSwxMDEsMTE2LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDg0LDk5LDIsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAorICAgIDIsMCwwLDAsMywwLDAsMCwxMTUsMjksMCwwLDAsMTE2LDAsMCwKKyAgICAxMzEsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEsMTI0LDIsMCwKKyAgICAxMjQsMCwwLDk1LDIsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDE4MywwLDAsMCw4MCwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDMyLDEwOSw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTQsMTAxLAorICAgIDExNSwxMDEsMTE2LDk1LDExMCw5NywxMDksMTAxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNiwKKyAgICAxMDQsMTAxLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTAsOTksMTExLDExMCwxMDAsMTA1LDExNiwxMDUsCisgICAgMTExLDExMCw5NywxMDgsMTA4LDEyMSwzMiwxMTQsMTAxLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAyLDExMSwxMTcsCisgICAgMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCwxMTEsOTcsCisgICAgMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQwLDMsMCwwLAorICAgIDAsMjQ0LDUsMCwwLDAsMTE1LDExNywxMTIsMTAxLDExNCwxMTQsNzYsMCwwLDAsCisgICAgMjQ0LDExLDAsMCwwLDk1LDExNCwxMDEsMTE1LDEwMSwxMTYsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMywwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwKKyAgICAxNDcsMCwwLDAsNDAsMSwwLDAsMCwyNDQsOSwwLDAsMCw5NSw5NSwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsNzYsMCwwLDAsMjQ1LDEsMCwwLDExNSw0LDAsMCwwLDAsCisgICAgNiwxNiwxLDExNywyMywwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc3LAorICAgIDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMTEsMCwwLDAsCisgICAgMywwLDAsMCwxMTUsMTYzLDAsMCwwLDExNiwwLDAsMTMxLDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMSwxMTYsMiwwLDEwNiwzLDAsMTA2LDQsMCwxMjQsCisgICAgMCwwLDEwNiw1LDAsMTMxLDEsMCwxMjQsMCwwLDk1LDYsMCwxMjQsMCwKKyAgICAwLDEwNiw3LDAsMTE1LDEwNCwwLDExNiw4LDAsMTE2LDksMCwxMzEsMSwwLAorICAgIDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLDEyNCwwLDAsOTUsNiwwLDEwMCwKKyAgICAxLDAsMTI0LDAsMCwxMDYsNiwwLDk1LDEwLDAsMTI0LDAsMCwxMDYsNiwKKyAgICAwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw1LDAsNjAsMTEwLDUyLAorICAgIDAsMTI0LDAsMCwxMDYsMTEsMCwxMTQsMTU2LDAsMTIxLDE5LDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCw5NSwxMiwwLDg3LDExMywxNTYsMCwKKyAgICA0LDExNiwxMywwLDEwNywxMCwwLDExNCwxNTIsMCwxLDEsMSw4OSwxMTMsMTU2LAorICAgIDAsODgsMTEwLDAsMCwxMjQsMCwwLDEwNiw2LDAsODMsNDAsMiwwLDAsCisgICAgMCw3OCw4NCw0MCwxNCwwLDAsMCwxMTQsMTQ4LDAsMCwwLDExNCwxNDIsMCwKKyAgICAwLDAsMTE0LDcsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsNzksMCwwLAorICAgIDAsMTE0LDEzOSwwLDAsMCwyNDQsNywwLDAsMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTQsMTQxLDAsMCwwLDI0NCw0LDAsMCwwLDExNiwxMjEsMTEyLDEwMSwKKyAgICAxMTQsNDgsMCwwLDAsMjQ0LDE2LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICAxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwxMDMsOTUsOTUsMTE0LDE0OSwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsMjQ0LDE0LDAsMCwwLDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCisgICAgMTE2LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDAsMSwwLDAsMCwxMTQsNzUsMCwwLAorICAgIDAsNDAsMSwwLDAsMCwxMTQsMTUwLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDExNCwxNDIsMCwwLDAsMjU0LDEsMCwwLDExNSwyNCwKKyAgICAwLDAsMCwwLDEsMTMsMSwyNCwxLDksNCwyNCwzLDEyLDEsMjIsCisgICAgMSw5LDEsMywxLDE5LDEsMTMsMSw4LDEsMTE3LDI0LDAsMCwwLAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LAorICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMiwwLDAsMCw3LDAsMCwwLDExNSwzOCwwLAorICAgIDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsCisgICAgMCw5NiwwLDAsMTE2LDIsMCwxMzEsMCwwLDEwNiwzLDAsMTI0LDEsMCwKKyAgICAxNDAsMCwwLDEsMTAwLDAsMCw4Myw0MCwyLDAsMCwwLDc4LDcwLDQwLAorICAgIDQsMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxNDgsCisgICAgMCwwLDAsMTE0LDE0NSwwLDAsMCw0MCwyLDAsMCwwLDExNCw3NSwwLAorICAgIDAsMCwxMTQsOTgsMCwwLDAsNDAsMSwwLDAsMCwxMTQsMTUwLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNDUsMCwwLDAsCisgICAgMTcsMiwwLDAsMTE1LDYsMCwwLDAsMCwxLDEyLDEsNiwxLDExNywKKyAgICAyMywwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc3LDk3LDExMCw5NywxMDMsCisgICAgMTAxLDExNCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDAsNywwLDAsMCwKKyAgICAxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsCisgICAgNTgsMCwwLDAsMTE0LDc2LDAsMCwwLDExNCwxNDIsMCwwLDAsMTE0LDE0NSwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCw0MCwxLDAsCisgICAgMCwwLDExNCwxNTAsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE0NiwwLDAsCisgICAgMCwyMzcsMSwwLDAsMTE1LDgsMCwwLDAsMTIsNiw2LDIsMjQsOSwKKyAgICAxOCwxOSwxMTQsMTQ2LDAsMCwwLDExNCwxNDcsMCwwLDAsODQsOTksMSwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsCisgICAgMTI0LDEsMCwxMzEsMSwxLDgzLDQwLDIsMCwwLDAsMTE3LDEzOCwwLDAsCisgICAgMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDk5LDExMSwxMTAsMTE2LDEwMSwxMjAsCisgICAgMTE2LDMyLDEwOSw5NywxMTAsOTcsMTAzLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLAorICAgIDExMiwxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDExNiwxMTEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNCwxMDEsMTE1LDEwMSwKKyAgICAxMTYsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTE0LDExNywxMDEsNDQsMzIsCisgICAgMTE0LDEwMSwxMTUsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzOSwxMTUsMzIsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMzIsMTE2LDExMSwzMiwzOSwKKyAgICAxMTAsOTcsMTA5LDEwMSwzOSw0NiwxMCwzMiwzMiwzMiwzMiwxMTQsMTQ3LDAsMCwwLAorICAgIDQwLDEsMCwwLDAsMTE0LDE0NiwwLDAsMCw0MCwyLDAsMCwwLDExNCwKKyAgICA3MSwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxNCwwLDAsMCwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSwxMTYsMTExLDk1LDEwOCwxMTEsOTcsMTAwLDIzLDIsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsNiwxMTQsMTU1LDAsMCwwLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMDIsMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEyNSwyLDAsMTIxLDE5LAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLAorICAgIDg3LDExMCwxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNDgsMCwxLDEsCisgICAgMSw4OSwxMTAsNTAsMCw4OCwxMjQsMywwLDExNCw3NiwwLDEyNCwyLDAsMTI0LAorICAgIDEsMCw5NSwzLDAsMTAzLDAsMCwxMjQsMSwwLDk1LDQsMCwxMTAsMjIsCisgICAgMCwxMjQsMiwwLDEwNiw1LDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsCisgICAgMjUsMTI0LDEsMCw5NSwzLDAsMTAwLDMsMCw4Myw0MCw0LDAsMCwwLAorICAgIDExNyw2OCwwLDAsMCw4MywxMDEsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw5NSw5NSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDk1LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE5LDEwNCw5NywxMTYsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw0MCw0MSwzMiwxMTUsOTcsMTIxLDExNSw0NiwxMTQsMTAxLDAsMCwwLDExNCw2NywKKyAgICAwLDAsMCw3OCw0MCw2LDAsMCwwLDExNCw1NiwwLDAsMCwyNDQsMTAsCisgICAgMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjQ0LDExLDAsCisgICAgMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDI0NCwxMSwwLAorICAgIDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMjQ0LDgsMCwKKyAgICAwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDMyLDAsMCwwLDQwLAorICAgIDQsMCwwLDAsMjQ0LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwyNDQsCisgICAgNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNzEsMCwwLDAsMTE0LAorICAgIDE1NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwyNDQsMTksMCwwLDAsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NywxMTYsMTE2LDExNCwxMTUsMzIsMiwwLDAsMTE1LAorICAgIDE4LDAsMCwwLDAsMiw5LDEsMywxLDE5LDEsMTMsMSw1LDIsCisgICAgNiwxLDksMSwxMiwyLDExNCwxNjIsMCwwLDAsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwMCwwLDAsMCwxMjEsMjUsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCisgICAgMCwxMDYsMSwwLDEzMSwxLDAsMTI0LDEsMCw5NSwyLDAsODcsMTEwLDE4LAorICAgIDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw0NSwwLDEsMSwxLDg5LDExMCwKKyAgICA1MSwwLDg4LDEyNCwxLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiw0LDAsMTA3LAorICAgIDIsMCwxMTQsOTYsMCwxMjQsMSwwLDEwNiw1LDAsMTA2LDYsMCwxMTYsNywKKyAgICAwLDEyNCwxLDAsMTA2LDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsCisgICAgMCwxLDExMCwwLDAsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNyw1NywKKyAgICAwLDAsMCw4MywxMDEsMTE2LDMyLDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDMyLDk4LDk3LDExNSwKKyAgICAxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDAsNDEsNDYsMTE0LDY3LDAsMCwKKyAgICAwLDc4LDQwLDgsMCwwLDAsMjQ0LDEyLDAsMCwwLDEwMywxMDEsMTE2LDk1LAorICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNTYsMCwwLDAsMjQ0LDgsMCwKKyAgICAwLDAsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCwxNTcsMCwwLDAsMTE0LAorICAgIDE1OCwwLDAsMCwxMTQsMTU5LDAsMCwwLDI0NCw2LDAsMCwwLDk3LDExMiwKKyAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDM4LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDE2MCwKKyAgICAwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDI0NCwxNiwwLDAsMCw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSw0NywyLDAsMCwKKyAgICAxMTUsMTIsMCwwLDAsMCwyLDMsMSwyNSwxLDEzLDEsNSwyLDE4LAorICAgIDEsMTE0LDE2NiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLAorICAgIDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsCisgICAgMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsCisgICAgMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDM5LDAsMCwwLDgzLDEwMSwxMTYsCisgICAgMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMSwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0Niw5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw0LDAsMCwwLDMxLDAsMCwwLDExNSwxMDEsMCwwLDAsMTM2LDAsCisgICAgMCwxMjQsMCwwLDEyNCwxLDAsMTQyLDAsMCwxMjUsMiwwLDExNiwwLDAsCisgICAgMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDk3LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwyLDAsOTUsMiwKKyAgICAwLDExNiwzLDAsMTI0LDIsMCwxMDAsMiwwLDEzMSwyLDAsMTE1LDk3LDAsCisgICAgMTI0LDIsMCwxMDYsMiwwLDEwNiw0LDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwKKyAgICA0LDAsMjUsMTI0LDIsMCw5NSwyLDAsMTEzLDk3LDAsMTEwLDAsMCwxMjQsCisgICAgMiwwLDgzLDQwLDUsMCwwLDAsNzgsMTE0LDE1OCwwLDAsMCwxMTQsMTU5LAorICAgIDAsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDY3LDAsMCwwLDQwLDUsMCwKKyAgICAwLDAsMTE0LDYxLDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsMTU4LDAsMCwKKyAgICAwLDExNCw1OSwwLDAsMCwxMTQsMzIsMCwwLDAsNDAsMywwLDAsMCwKKyAgICAxMTQsOTgsMCwwLDAsMjQ0LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwKKyAgICAxMTQsMTYxLDAsMCwwLDQwLDEsMCwwLDAsMjQ0LDMsMCwwLDAsMTAyLAorICAgIDEyMCwxMTAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDE5LDAsMCwKKyAgICAwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCw2MCwyLDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LAorICAgIDEsMjQsMSwxMiwxLDE1LDEsMzEsMSwxMTcsNDAsMCwwLDAsMTE1LDEwMSwKKyAgICAxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAorICAgIDExNSw2Miw0NiwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsMTE5LAorICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTQsNjQsMCwwLDAsCisgICAgNDAsMiwwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsNDAsMSwwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDI0NCwxMSwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsNTgsMiwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDcsCisgICAgMTMsMSwxMTQsMTcwLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLAorICAgIDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLAorICAgIDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLAorICAgIDEyNCwxLDAsODMsNDAsMywwLDAsMCwxMTcsMzgsMCwwLDAsODMsMTAxLAorICAgIDExNiwzMiw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDMyLDExMSwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw0LDAsMCwwLDMxLDAsMCwwLDExNSw1OCwwLDAsMCwxMzYsMCwKKyAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwxLDAsMTI1LDMsMCwKKyAgICAxMTYsMCwwLDEyNCwzLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCw1NCwwLDEyNCwwLDAsMTI0LDMsMCw5NSwxLAorICAgIDAsMTEwLDAsMCwxMjQsMywwLDgzLDQwLDIsMCwwLDAsNzgsMjQ0LDEwLAorICAgIDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsMiwwLAorICAgIDAsMCwxMTQsNjEsMCwwLDAsMTE0LDE3MSwwLDAsMCw0MCw0LDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDE2NywwLDAsMCwKKyAgICAxMTQsMTYxLDAsMCwwLDQwLDEsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTgsMCwwLDAsMTE1LDEwMSwKKyAgICAxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKKyAgICA3MywyLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTgsMSwyNCwxLDEyLAorICAgIDEsMTE3LDM4LDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsCisgICAgMCwxMTQsNjQsMCwwLDAsNDAsMiwwLDAsMCwxMTQsMTY4LDAsMCwwLAorICAgIDExNCwxNzIsMCwwLDAsMTE0LDQsMCwwLDAsNDAsMSwwLDAsMCwxMTQsCisgICAgMTY4LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxMCwwLDAsMCwxMTUsMTAxLAorICAgIDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDcxLDIsMCwwLDExNSw2LDAsMCwKKyAgICAwLDAsMiwxOCw1LDEzLDEsMTE0LDE3MywwLDAsMCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDM4LDAsMCwwLDEwMCwxLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKKyAgICAyLDAsMTAwLDMsMCwxMzQsMSwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKKyAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsNCwwLDAsCisgICAgMCwxMTcsMjUyLDAsMCwwLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLAorICAgIDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLAorICAgIDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwxMDUsCisgICAgMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwxMDEsCisgICAgMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLAorICAgIDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsCisgICAgOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICA1LDAsMCwwLDMxLDAsMCwwLDExNSw4MywwLDAsMCwxMjQsMSwwLAorICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LAorICAgIDEsMCwxMTAsNDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsMywKKyAgICAwLDExNCw2NCwwLDExNiwxLDAsMTAwLDEsMCwxMjQsMSwwLDIyLDEwMCwyLAorICAgIDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLAorICAgIDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTQyLDIsMCw4MywKKyAgICA0MCwzLDAsMCwwLDc4LDExNywyMywwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLAorICAgIDM3LDExNSwxMTQsNzEsMCwwLDAsNDAsMiwwLDAsMCwxMTQsNzEsMCwwLAorICAgIDAsMTE0LDE1NywwLDAsMCw0MCw0LDAsMCwwLDExNCw3NSwwLDAsMCwKKyAgICAxMTQsNzEsMCwwLDAsMTE0LDk4LDAsMCwwLDExNCwxNjcsMCwwLDAsNDAsCisgICAgMSwwLDAsMCwyNDQsNiwwLDAsMCwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTksMCwwLDAsOTUsOTksCisgICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwKKyAgICAxMTQsOTAsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMSwxMiwxLDEyLDEsCisgICAgMTUsMSwyNSwxLDExNyw0MCwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsOTksCisgICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwKKyAgICAxMTQsNDAsMSwwLDAsMCwxMTQsNjQsMCwwLDAsNDAsMiwwLDAsMCwKKyAgICAxMTQsMTc0LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDQsMCwwLDAsNDAsCisgICAgMSwwLDAsMCwxMTQsMTc0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxMSwKKyAgICAwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw4MiwyLAorICAgIDAsMCwxMTUsNiwwLDAsMCwwLDgsMjEsNiwxMywxLDExNCwxNzYsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKKyAgICAwLDAsMCwzLDAsMCwwLDExNSwzNSwwLDAsMCwxMzUsMCwwLDEwMiwKKyAgICAxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDEsMCwxMTYsMCwKKyAgICAwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCw4Myw0MCwKKyAgICAzLDAsMCwwLDExNyw0OSwwLDAsMCw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsCisgICAgMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAorICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LAorICAgIDU4LDAsMCwwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw3LDAsCisgICAgMTE0LDQ1LDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsCisgICAgMSwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsCisgICAgMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQwLDMsCisgICAgMCwwLDAsNzgsMTE3LDI3LDAsMCwwLDEyMywxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsNzEsMCwwLDAsNDAsNCwwLDAsMCwxMTQsNywKKyAgICAwLDAsMCwyNDQsMjAsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNCwxNTcsMCwwLAorICAgIDAsMTE0LDQ2LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDc1LDAsMCwwLAorICAgIDI0NCw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsCisgICAgMCwwLDExNCwxNjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMjQ0LDI1LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMTAyLAorICAgIDIsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwKKyAgICAxMTcsNTIsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCiAgICAgOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAotICAgIDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LAotICAgIDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LAotICAgIDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsCi0gICAgMTE3LDI1LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMCwKLSAgICAwLDAsMCw0MCwxLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLAotICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAotICAgIDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwKLSAgICA5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3NywyLDAsMCwxMTUsNiwwLDAsCi0gICAgMCwwLDIsMTgsNSwxMywxLDExNywxNywwLDAsMCw5NSwxMTQsMTAxLDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywwLAotICAgIDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsCi0gICAgMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwKLSAgICAwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwxMTcsCi0gICAgNDcsMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwKLSAgICAzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICA0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0NSwwLDExNiwyLDAsMTAwLAotICAgIDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLAotICAgIDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsMCwwLAotICAgIDEyNCwxLDAsMTMxLDIsMCw4Myw0MCwzLDAsMCwwLDc4LDExNywyNSwwLAotICAgIDAsMCwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwKLSAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsCi0gICAgMTEwLDk3LDEwOSwxMDEsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCw5NSwxMDUsCi0gICAgMTA5LDExMiwxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQwLDIsMCwwLDAsCi0gICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsCi0gICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsMCwwLDExNywzLDAsMCwwLAotICAgIDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCi0gICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyNCwwLDAsMCw5NSwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LAotICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDkwLDIsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsMSwxNSwxLDE4LDEsMTIsMSwxMTcsNTAsMCwwLDAsOTUsMTE0LDEwMSwKLSAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw2MCwxMDgsCi0gICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwKLSAgICAxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsCi0gICAgMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDI0LDAsMCwwLAotICAgIDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCi0gICAgOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsCi0gICAgMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwKLSAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAotICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLAotICAgIDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw4OCwyLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLAotICAgIDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDg3LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwyLAotICAgIDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsODMsMCwKLSAgICAxMTYsMiwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODMsMCwxMDAsMSwwLDEyNSwKLSAgICA0LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCw0LDAsMTA2LDUsMCwxMjQsMywKLSAgICAwLDEwMCwyLDAsMjUsMTMxLDEsMCwxMTYsNiwwLDEzMSwyLDAsMSwxMTAsCi0gICAgMCwwLDEyNCwyLDAsODMsNDAsNCwwLDAsMCwxMTcsODYsMCwwLDAsCi0gICAgODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTIxLAotICAgIDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDExNyw0NCwwLDAsMCw3OCwxMTEsMTE2LDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLAotICAgIDExNCwxMjEsMzIsMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDEwNSwwLDAsMCwwLDc4LDQwLDcsMCwKLSAgICAwLDAsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLAotICAgIDEwOCwxMDEsMTEwLDExNyw5LDAsMCwwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAotICAgIDExNSwxMTcsNCwwLDAsMCwxMTksOTcsMTE0LDExMCwxMTcsNiwwLDAsMCwxMDIsCi0gICAgMTExLDExNCwxMDksOTcsMTE2LDExNywxMywwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDAsNSwwLDAsMCwxMTcsNCwwLDAsCi0gICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKLSAgICAxMDksMTAxLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDgsMCwKLSAgICAwLDAsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwxMTcsMywwLDAsMCwxMDksCi0gICAgMTE1LDEwMyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywKLSAgICAwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCi0gICAgMTE1LDEwNCwxMDUsMTA5LDk5LDIsMCwwLDExNSwxMCwwLDAsMCwwLDYsMjEsCi0gICAgMSwyNCwxLDYsMSwzMiwxLDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDYsMCwwLDAsNjYsMCwKLSAgICAwLDAsMTE1LDE3MywwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsCi0gICAgMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLAotICAgIDQsMCwxMDAsMTQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDEsMCwxMzEsMSwKLSAgICAwLDkwLDcsMCwxMDEsNCwwLDEwMSw4LDAsMTAxLDksMCwxMDEsMTAsMCwKLSAgICAxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwKLSAgICAxMDEsNCwwLDEwMSwxMCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTIsCi0gICAgMCwxMDAsMTMsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLAotICAgIDEwMCwxNCwwLDgzLDQwLDE1LDAsMCwwLDExNywxNSwwLDAsMCw2NiwxMTcsCi0gICAgMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0NCwwLAotICAgIDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsCi0gICAgMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsCi0gICAgMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiwKLSAgICA5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLAotICAgIDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LAotICAgIDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKLSAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDAsMiwwLDAsCi0gICAgMCw3OCwxMTcsMjQsMCwwLDAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMzksCi0gICAgMTIzLDEyNSwzOSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MCwKLSAgICAyLDAsMCwwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LAotICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsNDAsMiwwLDAsCi0gICAgMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw2LDAsMCwwLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCi0gICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCi0gICAgMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICAxMjUsMiwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNywwLDAsMCwKLSAgICA2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDMsMCwwLDAsCi0gICAgMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDM5LDAsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNiwKLSAgICAwLDEwMCwxLDAsODMsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMTQsMzUsMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDAsMiwwLDAsCi0gICAgMCwxMTcsMTEzLDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LAotICAgIDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsCi0gICAgMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLAotICAgIDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsCi0gICAgMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MCwzLDAsMCwwLDExNyw0LDAsCi0gICAgMCwwLDc4LDExMSwxMTAsMTAxLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywKLSAgICAxMCwwLDAsMCwxMDUsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQwLDMsCi0gICAgMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwKLSAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKLSAgICAxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKLSAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAotICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwKLSAgICAwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyOSwyLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDcsMTIsMSw0LDEsMTE3LDI3LDAsMCwKKyAgICAxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTQsNjQsCisgICAgMCwwLDAsNDAsMiwwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNzksMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsNDAsMSwwLDAsMCwxMTQsMTY4LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDI0NCwxNywwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDEwMCwyLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNCwxODAsMCwwLDAsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCisgICAgMCwzLDAsMCwwLDExNSwzNSwwLDAsMCwxMzUsMCwwLDEwMiwxLDAsCisgICAgMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKKyAgICAxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCw4Myw0MCwzLDAsCisgICAgMCwwLDExNyw0NywwLDAsMCw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDU4LDAsMCwwLAorICAgIDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDQ1LDAsMTE2LAorICAgIDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwyLAorICAgIDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLAorICAgIDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQwLDMsMCwwLDAsNzgsCisgICAgMTE3LDI1LDAsMCwwLDEyMywxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywKKyAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNzEsCisgICAgMCwwLDAsNDAsNCwwLDAsMCwxMTQsOTQsMCwwLDAsMjQ0LDksMCwKKyAgICAwLDAsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTQsMTU3LDAsMCwwLAorICAgIDExNCw0NiwwLDAsMCw0MCwyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCisgICAgMTc4LDAsMCwwLDQwLDEsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMjQsMCwwLDAsOTUsMTE0LDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCwxMTMsMiwwLDAsMTE1LDgsMCwwLDAsMCwxLAorICAgIDE1LDEsMTgsMSwxMiwxLDExNyw1MCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDYwLDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwKKyAgICAwLDAsMTE0LDY0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDE2OCwwLDAsCisgICAgMCwxMTQsMTgyLDAsMCwwLDExNCw0LDAsMCwwLDQwLDEsMCwwLDAsCisgICAgMTE0LDE2OCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTYsMCwwLDAsOTUsCisgICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTEsCisgICAgMiwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTQsMTgzLAorICAgIDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDUsMCwwLDAsNjcsMCwwLDAsMTE1LDg3LDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwyLDAsMTI1LAorICAgIDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsODMsMCwxMTYsMSwKKyAgICAwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODMsMCwxMDAsMiwwLDEyNSw0LDAsCisgICAgMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsMCwxMjQsMywwLDEwMCwKKyAgICAzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLDAsMSwxMTAsMCwwLAorICAgIDEyNCwyLDAsODMsNDAsNCwwLDAsMCwxMTcsODYsMCwwLDAsODQsMTE0LAorICAgIDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKKyAgICAxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwKKyAgICAxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQwLDQxLDQ2LDc4LDExNyw0NCwwLDAsMCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKKyAgICAxMjEsMzIsMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsCisgICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNCw2NywwLDAsMCw0MCw2LDAsMCwwLAorICAgIDI0NCwxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTQsMzEsMCwwLDAsMjQ0LDksMCwwLDAsOTUsMTE5LDk3LDExNCwxMTAsMTA1LAorICAgIDExMCwxMDMsMTE1LDI0NCw0LDAsMCwwLDExOSw5NywxMTQsMTEwLDExNCw0NiwwLDAsCisgICAgMCwyNDQsMTMsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLAorICAgIDEwNSwxMTAsMTAzLDQwLDUsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwxNzgsMCwKKyAgICAwLDAsMTE0LDE2MCwwLDAsMCwyNDQsOCwwLDAsMCwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMSwxMTAsMTE1LDI0NCwzLDAsMCwwLDEwOSwxMTUsMTAzLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxNywwLDAsMCwKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsCisgICAgMTA5LDEyMiwyLDAsMCwxMTUsMTAsMCwwLDAsMCw2LDIxLDEsMjQsMSwKKyAgICA2LDEsMzIsMSwxMTQsMTkwLDAsMCwwLDk5LDQsMCwwLDAsMCwwLAorICAgIDAsMCwxMSwwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMjQzLAorICAgIDEsMCwwLDEwNSwwLDAsMTI1LDQsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LAorICAgIDksMCwxMTQsMzEsMCwxMjQsMiwwLDEyNCw0LDAsMTAwLDIsMCw2MCwxMTAsCisgICAgNiwwLDEwMCwzLDAsMTI1LDIsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksCisgICAgMCwxMTQsNjIsMCwxMjQsMywwLDEyNCw0LDAsMTAwLDQsMCw2MCwxMTAsMCwKKyAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTI1LDUsCisgICAgMCwxMjQsMCwwLDEwMCw1LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw2LAorICAgIDAsMTI0LDAsMCwxMDAsNiwwLDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsNywKKyAgICAwLDEyNCw1LDAsMTE2LDAsMCwxMDcsMywwLDExNCwxNjgsMCwxMDAsOCwwLAorICAgIDEwNiwxLDAsMTI0LDIsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsCisgICAgMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsCisgICAgNCwwLDE0MSwxLDAsMTMwLDEsMCwxMTAsMTE2LDAsMTE2LDQsMCwxMjQsNiwKKyAgICAwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwyMjYsMCwxMDAsOSwwLAorICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMSwxMTYsNSwwLDEyNCw4LDAsMTMxLDEsMCwxMzAsCisgICAgMSwwLDExMCw1OCwwLDExNiw0LDAsMTI0LDcsMCwxMzEsMSwwLDEwMCw1LAorICAgIDAsMTA3LDMsMCwxMTQsMjgsMSwxMDAsMTAsMCwxMDYsMSwwLDEyNCwyLDAsCisgICAgMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTI0LDgsMCwxMzEsMSwwLDEsCisgICAgMTE2LDUsMCwxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwKKyAgICAxLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwyMjksMSwxMjEsMjAsMCwxMTYsNiwKKyAgICAwLDEyNCwxLDAsMTAwLDExLDAsMjUsMTMxLDEsMCwxMjUsOSwwLDg3LDExMCwKKyAgICAxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsODAsMSwxLDEsMSw4OSwKKyAgICAxMTAsNjIsMCw4OCwxMTYsOCwwLDEyNCw2LDAsMTMxLDEsMCwxMjQsOSwwLAorICAgIDEwNywzLDAsMTE0LDE0MiwxLDEwMCwxMiwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsCisgICAgMSwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTYsCisgICAgMywwLDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTEwLDAsCisgICAgMCwxMjEsMTgsMCwxMjQsMSwwLDEwMCwxMywwLDI1LDEwMCwxNCwwLDY0LDEyNSwKKyAgICAxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTgwLDEsCisgICAgMSwxLDEsODksMTEzLDIyOSwxLDg4LDExNiw4LDAsMTI0LDcsMCwxMzEsMSwKKyAgICAwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDIyOSwxLDExNiwzLDAsMTAwLDEyLDAsCisgICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwKKyAgICAxLDAsMTEzLDIyOSwxLDExMCwwLDAsMTI0LDAsMCwxMDAsNywwLDEwMCwxLAorICAgIDAsMTMzLDIsMCwyNSw4Myw0MCwxNSwwLDAsMCwxMTcsMTIyLDEsMCwwLAorICAgIDg2LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywKKyAgICAxMDAsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwKKyAgICAxMDAsNDUsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsCisgICAgOTcsMTA1LDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywKKyAgICAxMTYsMTE1LDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwKKyAgICA0MSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsCisgICAgMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgMTAwLDMyLDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsCisgICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsCisgICAgMTExLDExNCwzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LAorICAgIDExNiw5NywxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLAorICAgIDExNiwxMTEsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywKKyAgICAxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsNzEsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDYyLDExNCwKKyAgICAzNSwwLDAsMCwxMTQsMTIsMCwwLDAsMjMzLDgsMCwwLDAsMjMzLDEyLAorICAgIDAsMCwwLDExNywzMCwwLDAsMCw5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsCisgICAgOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDU4LDMyLDEyMywzMywxMTQsMTI1LDExNyw0MywwLDAsMCwxMTQsMTAxLDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywKKyAgICAxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsCisgICAgMTEwLDMyLDEyMywzMywxMTQsMTI1LDExNyw0OCwwLDAsMCwxMTQsMTAxLDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywKKyAgICAxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDExMSwxMDIsMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDI0NCw1LDAsMCwwLAorICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDI2LDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDEyMywzMywxMTQsMTI1LDI0NCw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLAorICAgIDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQwLDksMCwwLDAsMjQ0LDEyLDAsCisgICAgMCwwLDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNCw0NiwKKyAgICAwLDAsMCwxMTQsMTM3LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDMxLDAsCisgICAgMCwwLDI0NCw4LDAsMCwwLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsCisgICAgMTQsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCwxOSwwLDAsMCw0MCwxMSwKKyAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMjQ0LDEyLDAsMCwwLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNCw3MSwwLDAsMCwxMTQsMzUsCisgICAgMCwwLDAsMTE2LDExLDAsMCwwLDEwMSwxMjAsOTksOTUsMTAwLDEwMSwxMTYsOTcsCisgICAgMTA1LDEwOCwxMTUsMTE2LDUsMCwwLDAsMTA5LDk3LDEwMywxMDUsOTksMTE2LDEzLDAsCisgICAgMCwwLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwxMTYsCisgICAgOCwwLDAsMCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsMTM2LDAsMCwKKyAgICAwLDI0NCwxMiwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsMjQ0LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwKKyAgICAxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDI0NCwyNSwwLDAsMCw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDEzNSwKKyAgICAyLDAsMCwxMTUsNzYsMCwwLDAsMCwxMSw2LDEsMTIsMSwxMywzLAorICAgIDYsMSwxMiwxLDEzLDEsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLAorICAgIDEwLDEsMTgsMSwxOCwxLDE1LDEsMTAsMSwxNSwxLDE4LDEsMTUsMSwKKyAgICAxMCwxLDE1LDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLAorICAgIDE1LDEsMTAsMSwxOCwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsCisgICAgMTUsMSwxNSwxLDExNCwyMDAsMCwwLDAsOTksNCwwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTE1LAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAorICAgIDQsMCwxMTYsMiwwLDEyNCw0LDAsMTE2LDMsMCwxMzEsMiwwLDExNCw3OCwKKyAgICAwLDExNiw0LDAsMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsMywKKyAgICAwLDEwMCwyLDAsMTA3LDksMCwxMTQsNzQsMCwxMTYsNSwwLDEwNiw2LDAsCisgICAgMTI0LDQsMCwxMjQsMywwLDEzMSwyLDAsMSwxMTAsMCwwLDEyNCw0LDAsCisgICAgODMsMTE2LDcsMCwxMDAsMywwLDEwNiw4LDAsMTI0LDIsMCwxMzEsMSwwLAorICAgIDEwMCw0LDAsMTI0LDEsMCwxMDAsNSwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsCisgICAgMSwwLDEwMCwyLDAsODMsNDAsNiwwLDAsMCwxMTcsNjAsMCwwLDAsCisgICAgNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLAorICAgIDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTE3LDIxLDAsMCwKKyAgICAwLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTE3LDIzLDAsMCwwLDc4LDExMSwxMTAsNDUsCisgICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsMCw0MCw5LDAsCisgICAgMCwwLDI0NCw3LDAsMCwwLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsMTE2LDUsCisgICAgMCwwLDAsMTA4LDExMSw5NywxMDAsMTE1LDI0NCwxMCwwLDAsMCwxMDUsMTE1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDI0NCwxMCwwLDAsMCw5NSw5OSwxMTEsMTAwLAorICAgIDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDEzNywwLDAsMCwxMTQsOTQsMCwwLDAsCisgICAgMTE2LDE2LDAsMCwwLDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDE1NywwLDAsMCwxMTQsNDYsMCwwLDAsNDAsCisgICAgNSwwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMjUsCisgICAgMCwwLDAsMTE0LDEyNiwwLDAsMCwyNDQsNCwwLDAsMCw5OSwxMTEsMTAwLAorICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAyNDQsMTcsMCwwLDAsOTUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsOTUsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTkwLDIsMCwwLDExNSwxNiwwLDAsMCwwLAorICAgIDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxOSwxLDQsMiwxOCwxLDExNCwKKyAgICAyMDUsMCwwLDAsMTE0LDY3LDAsMCwwLDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDc2LAorICAgIDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwzLDAsMTI0LAorICAgIDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLAorICAgIDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwxMjQsMiwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwxMTYsNCwwLDEwNiw1LAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDgzLDQwLAorICAgIDEsMCwwLDAsMTE3LDgwLDAsMCwwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAorICAgIDMyLDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsCisgICAgMTEwLDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsCisgICAgOTcsMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MCw2LDAsMCwwLDI0NCw5LAorICAgIDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNCwxOTUsMCwwLAorICAgIDAsMjQ0LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE3LDAsMCwKKyAgICAwLDExNCwyMDEsMCwwLDAsMTE2LDUsMCwwLDAsMTAwLDExNywxMDksMTEyLDExNSwKKyAgICA0MCw0LDAsMCwwLDExNCwyMDQsMCwwLDAsMTE0LDE5MywwLDAsMCwxMTQsCisgICAgMTk5LDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTcsMCwwLDAsOTUsOTksMTExLAorICAgIDEwMCwxMDEsOTUsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMDIsMiwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDAsMywxMiwxLDE5LDEsMTksMSwyMiwKKyAgICAxLDExNCwyMDgsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODksMCwwLDAsCisgICAgMTAwLDEsMCwxMDAsMiwwLDEwOCwwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwKKyAgICAyLDAsMTI0LDAsMCwxMzEsMSwwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwKKyAgICAwLDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwKKyAgICAxMDYsNSwwLDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LAorICAgIDQsMCwxMDYsNiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLAorICAgIDAsMjUsMTMxLDEsMCwxMzEsMSwwLDgzLDQwLDQsMCwwLDAsMTE3LDEyMSwKKyAgICAwLDAsMCw2OCwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLAorICAgIDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NSwxMTAsMTA1LDExOCwxMDEsMTE0LDExNSw5NywxMDgsMzIsMTEwLAorICAgIDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwzMiwxMDUsCisgICAgMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsCisgICAgOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwzMiwzMiwzMiwzMiwxMTQsNjcsMCwwLAorICAgIDAsNzgsODQsNDAsNywwLDAsMCwyNDQsOCwwLDAsMCwxMTYsMTExLDEwNywKKyAgICAxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw0OCwwLDAsMCwxMTYsNywwLDAsMCw2NiwKKyAgICAxMjEsMTE2LDEwMSwxMTUsNzMsNzksMTE2LDgsMCwwLDAsMTE0LDEwMSw5NywxMDAsMTA4LAorICAgIDEwNSwxMTAsMTAxLDExNiwxNSwwLDAsMCwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDk1LDEwMSwKKyAgICAxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTYsMjUsMCwwLDAsNzMsMTEwLDk5LDExNCwKKyAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw2OCwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTE0LDI0NCw2LDAsMCwwLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgNDAsNSwwLDAsMCwyNDQsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDIwOSwwLDAsMCwxMTYsMjEsMCwwLDAsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTE0LDEwMSw5NywKKyAgICAxMDAsMTA4LDEwNSwxMTAsMTAxLDI0NCw4LDAsMCwwLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsCisgICAgMTEwLDEwMywxMTYsMTUsMCwwLDAsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDk1LDEwMCwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDI0NCwxMywwLDAsMCwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjEyLDIsMCwwLDExNSwxMCwwLDAsMCwKKyAgICAwLDUsMTIsMSwxOCwxLDE1LDEsMTgsMSwxMTQsMjEzLDAsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsCisgICAgNjQsMCwwLDAsMTE1LDE2OSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCisgICAgMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLAorICAgIDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsCisgICAgMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDEsMCwxMzEsMSwwLDkwLAorICAgIDYsMCwxMDEsNCwwLDEwMSw3LDAsMTAxLDgsMCwxMDEsOSwwLDEwMCw3LAorICAgIDAsMTAwLDgsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEzMSwxLDAsOTAsMTAsMCwxMDEsNCwwLDEwMSw5LDAsMTAwLDksMCwxMDAsCisgICAgMTAsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw0LAorICAgIDAsMTAxLDksMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwxLDAsCisgICAgMTMxLDEsMCw5MCwxMiwwLDEwMSw0LDAsMTAxLDksMCwxMDAsMTMsMCwxMDAsCisgICAgMTQsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMCw0LAorICAgIDAsODMsNDAsMTUsMCwwLDAsMjQ0LDE1LDAsMCwwLDY2LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTQ0LDAsMCwwLAorICAgIDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsCisgICAgMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LAorICAgIDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwKKyAgICAxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LAorICAgIDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwKKyAgICAxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MCwyLDAsMCwwLDc4LAorICAgIDExNywyNCwwLDAsMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MCwyLDAsCisgICAgMCwwLDExNCw0NiwwLDAsMCwxMTQsNTYsMCwwLDAsNDAsMiwwLDAsCisgICAgMCwyNDQsMywwLDAsMCw5OSwxMDgsMTE1LDExNCwxNjEsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDExLDAsCisgICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyMzUsMiwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM5LAorICAgIDAsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNiwwLDEwMCwKKyAgICAxLDAsODMsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTQsCisgICAgMzUsMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMTEzLDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsCisgICAgMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwKKyAgICAzMiwxMDUsMTE1LDMyLDEwMSwxMTgsMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwKKyAgICAxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwKKyAgICAzMiw5NywzMiwxMDIsOTcsMTA1LDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3OCw0MCwyLDAsMCwwLDExNCw5NCwwLDAsMCwKKyAgICAxMTYsMTAsMCwwLDAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MCwKKyAgICAzLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMzUsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMjQ0LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwyMzksMiwwLDAsMTE1LDYsMCwwLDAsMCw3LDEyLDEsNCwKKyAgICAxLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMTYsMCwwLDEyNCwxLAorICAgIDAsMTMxLDEsMCwxNDMsMjEsMCwxLDExNiwxLDAsMTE2LDIsMCwxMDYsMywKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMDAsMSwwLDgxLDg4LDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsMjMsMCwwLDAsNzYsMTExLDk3LDEwMCwKKyAgICAzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0Niw3OCw0MCw0LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LDk5LAorICAgIDAsMCwwLDExNCw5NCwwLDAsMCwxMTYsMTIsMCwwLDAsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQwLDIsMCwwLDAsMTE0LDIxNSwKKyAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDI0NCwxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyNTAsMiwwLDAsMTE1LDQsMCwwLDAsCisgICAgMCw2LDEzLDEsMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNTcsMCwwLDAsODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDExNSw0Niw3OCwxMTQsNCwwLDAsMCw0MCwyLDAsMCwwLAorICAgIDExNCwyMTUsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsOCwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSwzLDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNCwxMTcsMjQsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwKKyAgICAwLDExNyw1NiwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LAorICAgIDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwKKyAgICA0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDIxNSwwLDAsMCwxMTQsMTc4LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDI0NCwxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDksMywwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywyNiwwLDAsCiAgICAgMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCi0gICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDksMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDg4LDAsMCwwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNywKLSAgICA2LDAsMTI1LDIsMCwxMjEsMjAsMCwxMTYsMiwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsMTEwLDQ2LDAsMSwxLDEsMTI0LAotICAgIDIsMCwxMiwxMTQsNzYsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsCi0gICAgNiwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwKLSAgICAwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCwxLDAsODMsNDAsMiwKLSAgICAwLDAsMCwxMTcsMjMsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwKLSAgICA0MCw1LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsCi0gICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsMCwwLDAsOTUsOTksCi0gICAgOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwKLSAgICAxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsCi0gICAgMTE3LDEyLDAsMCwwLDEwNSwxMTAsMTA1LDExNiw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAotICAgIDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsCi0gICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw5LDAsMCwwLAotICAgIDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCw0MCwwLDAsMCwwLDQwLDAsCi0gICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAotICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNDAsMiwwLDAsMTE1LDE0LDAsMCwwLDAsNiwKLSAgICAxNSwxLDMsMSwyMCwxLDMsMSwyMiwxLDEzLDEsMTE3LDI3LDAsMCwKLSAgICAwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKLSAgICA0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCi0gICAgNTcsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKKyAgICA0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1MiwKKyAgICAwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLAogICAgIDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LDQwLDEsCi0gICAgMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsCi0gICAgMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsCi0gICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCi0gICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCi0gICAgMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDE1NCwKLSAgICAyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LDI0LDAsMCwwLDY2LAotICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsCi0gICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKLSAgICAwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTYsMCwwLDAsODIsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwKLSAgICAxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsCi0gICAgMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCi0gICAgOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCi0gICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKLSAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAotICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLAotICAgIDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxNjAsMiwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCw0LDExNywyNiwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwKLSAgICAxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTIsMCwwLDAsODIsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExNCwKLSAgICAxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LAotICAgIDQ2LDcwLDQwLDEsMCwwLDAsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwKLSAgICAxMDEsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LAotICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLAotICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKLSAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxNjYsMiwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICA0LDExNywyNiwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgNzgsNDAsMTUsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywKLSAgICAxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsCi0gICAgMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDExNywKLSAgICA0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDExNSwxMDEsMTE2LAotICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsCi0gICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTcsMCwwLDAsOTUsMTE0LDEwMSwxMTMsCi0gICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTcsMTEsMCwKLSAgICAwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwKLSAgICAwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDEwLDAsMCwwLDEwNSwxMTUsCi0gICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsCi0gICAgMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwKLSAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LAotICAgIDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE2LDIsMCwwLAotICAgIDExNSwyOCwwLDAsMCwxNiw3LDYsMiwxOCw0LDMsMSwxOCwxMCwzLAotICAgIDEsMywxLDMsMSwyNywxMSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE3LDE1LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw2LDAsMCwwLDY2LDAsMCwwLDExNSwxNzMsMCwwLDAsMTI0LAotICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCi0gICAgMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwKLSAgICAwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLDE0LDAsMTAwLDQsMCwKLSAgICAxMDAsNSwwLDEzMiwxLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDEsCi0gICAgOCwwLDEwMSw5LDAsMTAxLDEwLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLAotICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMSwwLAotICAgIDEwMSw0LDAsMTAxLDEwLDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDEyLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTAsCi0gICAgMCwxMDAsMTEsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLAotICAgIDEwMSw0LDAsMTAxLDEwLDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDAsMTQsMCw4Myw0MCwxNSwwLDAsCi0gICAgMCwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsMTE3LDE0MiwwLDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiw5NywKLSAgICAxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLAotICAgIDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsCi0gICAgMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNSwxMTYsOTcsCi0gICAgMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsCi0gICAgMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsCi0gICAgODMsNDAsMiwwLDAsMCw3OCwxMTcsMjIsMCwwLDAsNjAsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMzksMTIzLDEyNSwzOSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICA0MSw2Miw0MCwyLDAsMCwwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSwKLSAgICA5NywxMTYsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsNDAsCi0gICAgMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywxLDAsMCwKLSAgICAwLDEwOSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwKLSAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTgyLDIsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjYsMCwwLDAsNzAsMTE0LAotICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDMsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLDAsCi0gICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDE5LAotICAgIDAsMTI0LDAsMCw4MywxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDIxLAotICAgIDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDQwLDMsMCwwLDAsMTE3LDQsCi0gICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwzLAotICAgIDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsCi0gICAgMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsCi0gICAgMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCi0gICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsCi0gICAgMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxODYsMiwwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwzLDExNywyNiwwLDAsMCw3MCwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsMTAwLDAsMCwKLSAgICAwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsMTI1LDIsMCwKLSAgICAxMjEsMzIsMCwxMTYsMiwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsMTI1LDMsMCwxMjQsMywwLDk2LDUsMCwxMjQsMywwLDgzLDg3LAotICAgIDExMCw0NiwwLDEsMSwxLDEyNCwyLDAsMTIsMTE0LDg4LDAsMTI0LDEsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCwxMTQsODgsMCwxMTYsMCwwLDEwNiwKLSAgICAxLDAsMTI0LDEsMCw2MSwxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCwKLSAgICA4OCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDIxLDAsMCwwLDc2LAotICAgIDExMSw5NywxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDYsNzgsNDAsNiwwLDAsMCwxMTcsMywwLDAsMCwxMTUsCi0gICAgMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LAotICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCi0gICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwKLSAgICAwLDk1LDEwNSwxMDksMTEyLDExNywxMSwwLDAsMCwxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDgsMCwwLDAsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDk1LDk1LDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsCi0gICAgOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwwLAotICAgIDAsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNywxLDAsMCwwLDEwOSwKLSAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsCi0gICAgMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTEsMiwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsNiwxNSwxLDMsMSwxOCwyLDYsMSw4LAotICAgIDEsMywxLDIyLDEsMTMsMSwxMTcsMjYsMCwwLDAsNzAsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MCwxLDAsCi0gICAgMCwwLDExNyw0NSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw0Niw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwKLSAgICAxMDksMTEyLDExNywxNywwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDAsMiwwLDAsMCwxMTcsMywwLAotICAgIDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsCi0gICAgMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LAotICAgIDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIwOCwyLDAsMCwxMTUsCisgICAgMTA4LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsNzAsMTE0LDQsMCwwLDAsNDAsMiwwLAorICAgIDAsMCwxMTQsMjE1LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE1NiwwLDAsMCwKKyAgICAxNSwzLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LDI2LDAsMCwwLAorICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwxNCwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsCisgICAgMCwwLDAsMjQ0LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDExNCwyMTYsMCwwLDAsMTE0LDIxNywwLDAsMCwxMTQsMTcwLDAsCisgICAgMCwwLDExNCwxNzMsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMjE4LDAsMCwKKyAgICAwLDExNCwyMTksMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsMTU2LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwyMTQsMCwwLDAsMjI2LDIsMCwwLDExNSwyOCwwLAorICAgIDAsMCwxMiw3LDYsMiwxOCw0LDMsMSwxOCwxMCwzLDEsMywxLAorICAgIDMsMSwyNyw2LDMsMSwyMSw1LDMsMSwyMSw1LDMsMSwxMTQsMjE0LAorICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDYsMCwwLDAsNjQsMCwwLDAsMTE1LDE2OSwwLDAsMCwxMDEsMCwwLAorICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsCisgICAgNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwKKyAgICAwLDEwMSw0LDAsMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDEsMCwKKyAgICAxMzEsMSwwLDkwLDYsMCwxMDEsNCwwLDEwMSw3LDAsMTAxLDgsMCwxMDEsCisgICAgOSwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNCwwLDEwMSw5LDAsCisgICAgMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwKKyAgICAxMSwwLDEwMSw0LDAsMTAxLDksMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwKKyAgICAwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw0LDAsMTAxLDksMCwKKyAgICAxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwKKyAgICAxMywwLDEwMCw0LDAsODMsNDAsMTUsMCwwLDAsMjQ0LDE0LDAsMCwwLAorICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxNDIsCisgICAgMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwKKyAgICAxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsCisgICAgMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywKKyAgICAxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsCisgICAgMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwKKyAgICAwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQwLDIsMCwwLDAsCisgICAgNzgsMTE3LDIyLDAsMCwwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDYyLDQwLDIsMCwwLAorICAgIDAsMTE0LDQ2LDAsMCwwLDExNCw1NiwwLDAsMCw0MCwyLDAsMCwwLAorICAgIDExNCwyMTUsMCwwLDAsMjQ0LDEsMCwwLDAsMTA5LDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMTYsMCwwLDAsMzEsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNiwwLDAsMCw3MCwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMTQsMTksMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwKKyAgICAxMTcsMjEsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsNDAsMiwwLDAsMCwKKyAgICAxMTQsOTQsMCwwLDAsMTE0LDE4MSwwLDAsMCw0MCwzLDAsMCwwLDExNCwKKyAgICAyMTUsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxNywwLAorICAgIDAsMCwzNSwzLDAsMCwxMTUsMiwwLDAsMCwwLDMsMTE3LDI2LDAsCisgICAgMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwxMCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNTEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTQzLAorICAgIDMzLDAsMSwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwKKyAgICAyLDAsMTI1LDIsMCwxMjQsMiwwLDk2LDQsMCwxMjQsMiwwLDgzLDg3LAorICAgIDEwMCwxLDAsODEsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywyMSwKKyAgICAwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDQwLDUsMCwwLDAsMTE0LDEzOCwKKyAgICAwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDk0LDAsMCwwLDExNiwxMSwwLAorICAgIDAsMCwxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LDE2NCwwLAorICAgIDAsMCw0MCwzLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsMjIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDExNCwyMTgsMCwwLDAsNDAsMywwLDAsMTE1LDgsCisgICAgMCwwLDAsMCw2LDEzLDEsMTgsMiw2LDEsMTE3LDI2LDAsMCwwLAorICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgODMsNDAsMSwwLDAsMCwxMTcsNDUsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwKKyAgICAxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNDAsMiwwLDAsMCwxMTQsOTQsMCwKKyAgICAwLDAsMTE2LDE3LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiw0MCwyLDAsMCwwLDExNCwyMTUsMCwKKyAgICAwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwxMTQsMjE5LDAsMCwwLDUyLDMsMCwwLDExNSwKICAgICAyLDAsMCwwLDAsNCwxMTcsMjMsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLAogICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAogICAgIDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKQEAgLTE2MTQsNDU0ICsxNTk4LDMwOCBAQAogICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKICAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsCiAgICAgOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LAotICAgIDc4LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsCi0gICAgMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwKLSAgICAwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsCi0gICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAotICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAotICAgIDExNywxMTQsOTksMTAxLDIxNCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LAorICAgIDc4LDExNCw0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDIxNSwwLDAsMCwKKyAgICAxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwyMjAsMCwwLDAsNTgsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDExNywyNSwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsNDYsCisgICAgMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQ2LDQwLDIsMCwwLDAsMTE0LDk0LDAsMCwwLDExNiwxNywwLDAsMCwKKyAgICAxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw0MCwyLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE3OCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMTU2LDAsMCwwLDY0LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsCiAgICAgMjUsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDQ2LDAsMCwwLDgyLDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MCwyLDAsMCwKLSAgICAwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxNywwLDAsMCwxMDUsCi0gICAgMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICA0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwKLSAgICAwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsCi0gICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKLSAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDIyMCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCi0gICAgMTE3LDI1LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDc4LDQwLAotICAgIDE1LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAotICAgIDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwKLSAgICAxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTEsMCwKLSAgICAwLDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDExLDAsCi0gICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxMTcsNCwwLAotICAgIDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsCi0gICAgMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDExLDAsMCwwLDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw4LDAsMCwwLDEwMywKLSAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwKLSAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLAotICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTczLDIsMCwwLDExNSwyOCwwLDAsCi0gICAgMCwxNiw3LDYsMiwxOCw0LDMsMSwxOCw0LDMsMSwzLDEsMywKLSAgICAxLDI3LDE0LDMsMSwyMSw1LDMsMSwyMSw1LDMsMSwxMTcsMTQsMCwKLSAgICAwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsCi0gICAgMCw2NiwwLDAsMCwxMTUsMTAxLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsCi0gICAgMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsCi0gICAgMTAwLDIsMCw5MCw0LDAsMTAwLDMsMCw5MCw1LDAsMTAwLDExLDAsOTAsCi0gICAgNywwLDEwMSw4LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCw5MCw5LDAsMTAxLDgsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwKLSAgICAxMzEsMSwwLDkwLDEwLDAsMTAxLDgsMCwxMDAsMTAsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDEyLDAsMTAwLDEwLDAsODMsNDAsCi0gICAgMTIsMCwwLDAsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LAotICAgIDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNyw2NywKLSAgICAwLDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICAxMDAsMTAxLDk5LDEwOCw5NywxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMTE3LDU5LDAsMCwwLDgzLDExMSwxMDIsMTE2LDExOSwKLSAgICA5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsODAsMTIxLDExNiwxMDQsMTExLAotICAgIDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsMTAyLDExNywxMDgsCi0gICAgMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMTcsNjUsMCwwLDAsODMsMTExLDEwMiwxMTYsMTE5LAotICAgIDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsCi0gICAgMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LAotICAgIDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsMTE3LDEwOCwKLSAgICAxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LAotICAgIDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMTAsMzcsMCwKLSAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLDEsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsCi0gICAgNSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywKLSAgICAxMTcsNywwLDAsMCw3OSwxMTIsMTAxLDExMCw3NSwxMDEsMTIxLDExNywxNywwLDAsCi0gICAgMCw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCw4NCw5NSw4NSw4MywKLSAgICA2OSw4MiwxMTcsMTIsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNywxOCwwLDAsMCw3Miw3NSw2OSw4OSw5NSw3Niw3OSw2NywKLSAgICA2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSw0MCwyLDAsMCwwLDExNywKLSAgICAzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDMsMCwwLDAsMTA3LDEwMSwxMjEsNDAsCi0gICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAotICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwwLDAsCi0gICAgOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMjQwLDIsCi0gICAgMCwwLDExNSw4LDAsMCwwLDAsMiwzLDEsMjMsMSwxMywxLDExNywKLSAgICAzNiwwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsCi0gICAgMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsCi0gICAgMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsNiwwLDAsMCwxNiwwLDAsMCw2NywwLDAsMCwxMTUsMTQyLDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMTQsMjEsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTI1LDIsMCwxMTAsOSwwLDEyNCwwLDAsMTA2LDIsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsMTA2LDMsMCwxMDAsMSwwLDEyNCwxLDAsMTAwLDIsMCwxMTYsCi0gICAgNCwwLDEwNiw1LDAsMTAwLDAsMCwxMDAsMywwLDEzMywyLDAsMjUsMTMxLAotICAgIDAsMiwxMjUsMywwLDEyMSw0NiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywKLSAgICAwLDEzMSwxLDAsMTQzLDI1LDAsMTI1LDQsMCwxMTYsNywwLDEwNiw4LDAsCi0gICAgMTI0LDQsMCwxMDAsNCwwLDEzMSwyLDAsMTI1LDUsMCw4NywxMDAsMCwwLAotICAgIDgxLDg4LDg3LDExMCwyMiwwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMTM3LDAsCi0gICAgMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsODMsCi0gICAgNDAsNSwwLDAsMCw3OCwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwKLSAgICAxMDUsMTExLDExMCwxMDUsMywwLDAsMCwxMTcsMCwwLDAsMCw0MCwxMSwwLAotICAgIDAsMCwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsCi0gICAgNzYsNjgsMTE3LDE4LDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LAotICAgIDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDExNywxMiwwLDAsMCw4Miw2OSwKLSAgICA3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTcsNiwwLDAsMCwxMDIsCi0gICAgMTExLDExNCwxMDksOTcsMTE2LDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsCi0gICAgMCwwLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTcsMTQsMCwwLDAsOTUsMTExLAotICAgIDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDcsMCwwLAotICAgIDAsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDEwLDAsMCwwLDgxLDExNywxMDEsCi0gICAgMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTcsMTIsMCwwLDAsODcsMTA1LDExMCwxMDAsCi0gICAgMTExLDExOSwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCi0gICAgMTAxLDQwLDYsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwKLSAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDEyLDAsMCwwLAotICAgIDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsMTA3LDEwMSwxMjEsMTE3LDMsMCwwLAotICAgIDAsMTA3LDEwMSwxMjEsMTE3LDQsMCwwLDAsMTA0LDEwNywxMDEsMTIxLDExNyw4LDAsCi0gICAgMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLAotICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCi0gICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCw5NSwxMTUsMTAxLDk3LDExNCwKLSAgICA5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwyNDcsMiwwLDAsMTE1LAotICAgIDIyLDAsMCwwLDAsMiw5LDEsMTIsMiw5LDEsMTUsMSwyMiwxLAotICAgIDMsMSwxOCwxLDI4LDEsMTMsMSw5LDEsMTE3LDM4LDAsMCwwLDg3LAotICAgIDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywKLSAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDMsMCwwLDAsMCwwLDAsMCw3LDAsCi0gICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxNDAsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwzLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMSwwLDEwMCwxLDAsODMsMTIxLDE3LAotICAgIDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTMxLDEsMCwxLDg3LDExMCwKLSAgICAyMiwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsNzIsMCwxLDEsMSwxMDAsCi0gICAgMSwwLDgzLDg5LDExMCwxLDAsODgsMTIwLDYwLDAsMTE2LDUsMCwxMzEsMCwKLSAgICAwLDY4LDkzLDQ5LDAsOTIsMywwLDEyNSw0LDAsMTI1LDUsMCwxMjUsNiwKLSAgICAwLDEyNCwzLDAsMTA2LDYsMCwxMTYsNywwLDEyNCw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDExNCw4MywwLDEyNCw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwKLSAgICAyLDAsODMsMTEzLDgzLDAsODcsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLAotICAgIDExNywzNCwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLAotICAgIDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDc4LDQwLDgsMCwwLDAsMTE3LDE2LDAsCi0gICAgMCwwLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwKLSAgICAxMTQsMTIxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLAotICAgIDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsMTE3LDcsMCwwLAotICAgIDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNywyNywwLDAsMCw5NSwxMDMsMTAxLAorICAgIDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMTQsMCwKKyAgICAwLDAsMTE0LDU2LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsNTcsMCwwLAorICAgIDAsMTE0LDU4LDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDIxNiwwLDAsMCwKKyAgICAxMTQsMjE3LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDE3MywwLDAsMCwxMTQsCisgICAgMTgzLDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIxOSwwLDAsMCwxMTQsMjIwLAorICAgIDAsMCwwLDExNCwxNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyMiwwLDAsCisgICAgMCwyMiwzLDAsMCwxMTUsMjgsMCwwLDAsMTIsNyw2LDIsMTgsNCwKKyAgICAzLDEsMTgsNCwzLDEsMywxLDMsMSwyNyw5LDMsMSwyMSw1LAorICAgIDMsMSwyMSw1LDMsMSwxMTQsMjIyLDAsMCwwLDk5LDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsCisgICAgMTE1LDk3LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKKyAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsOTAsNCwwLDEwMCwzLDAsCisgICAgOTAsNSwwLDEwMCw0LDAsOTAsNiwwLDEwMSw3LDAsMTAwLDUsMCwxMDAsCisgICAgNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsNywKKyAgICAwLDEwMCw4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNywwLAorICAgIDEwMCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDEsMCwxMzEsMSwwLDkwLAorICAgIDEwLDAsMTAwLDksMCw4Myw0MCwxMiwwLDAsMCwyNDQsMjEsMCwwLDAsCisgICAgODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDY3LDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwxMDEsMTAwLDMyLAorICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsMzIsMTE0LAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiwxMTcsNTksMCwKKyAgICAwLDAsODMsMTExLDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLAorICAgIDExMCw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLAorICAgIDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDExNyw2NSwwLAorICAgIDAsMCw4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsCisgICAgMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsCisgICAgMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLAorICAgIDk4LDExNywxMDMsNzAsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLDEyMSwyMywKKyAgICAwLDExNiwwLDAsMTA2LDEsMCwxMTYsMCwwLDEwNiwyLDAsMTI0LDEsMCwKKyAgICAxMzEsMiwwLDgzLDg3LDExMCwzNywwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCisgICAgNjIsMCwxLDEsMSwxMTYsMCwwLDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsCisgICAgODMsNDAsMSwwLDAsMCw3OCw0MCw1LDAsMCwwLDI0NCw3LDAsMCwKKyAgICAwLDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDExNiw3LDAsMCwwLDc5LDExMiwxMDEsCisgICAgMTEwLDc1LDEwMSwxMjEsMTE2LDE3LDAsMCwwLDcyLDc1LDY5LDg5LDk1LDY3LDg1LAorICAgIDgyLDgyLDY5LDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNCw0MCwwLDAsMCwxMTYsCisgICAgMTgsMCwwLDAsNzIsNzUsNjksODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsCisgICAgNjUsNjcsNzIsNzMsNzgsNjksNDAsMiwwLDAsMCwxMTQsMjE1LDAsMCwwLAorICAgIDI0NCwzLDAsMCwwLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDI0NCwxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwKKyAgICAxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw4NCwzLDAsMCwxMTUsOCwKKyAgICAwLDAsMCwwLDIsMywxLDIzLDEsMTMsMSwxMTcsMzYsMCwwLDAsCisgICAgODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwKKyAgICAxMTUsMTE2LDExNCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDE0MiwwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTE0LDIxLDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsCisgICAgMTEwLDksMCwxMjQsMCwwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwKKyAgICAzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwKKyAgICAwLDEwMCwwLDAsMTAwLDMsMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsCisgICAgMCwxMjEsNDYsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLAorICAgIDE0MywyNSwwLDEyNSw0LDAsMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLAorICAgIDQsMCwxMzEsMiwwLDEyNSw1LDAsODcsMTAwLDAsMCw4MSw4OCw4NywxMTAsCisgICAgMjIsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDEzNywwLDEsMSwxLDEwMCwKKyAgICAwLDAsODMsODksMTEwLDEsMCw4OCwxMjQsNSwwLDgzLDQwLDUsMCwwLAorICAgIDAsNzgsMTE0LDE3OCwwLDAsMCwxMTYsMTEsMCwwLDAsMTE1LDEyMSwxMTUsOTUsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxMjEsMCwwLDAsMTE0LDMwLDAsMCwKKyAgICAwLDQwLDEwLDAsMCwwLDI0NCwxMSwwLDAsMCw2OCw2OSw2Niw4NSw3MSwKKyAgICA5NSw2Niw4NSw3Myw3Niw2OCwyNDQsMTgsMCwwLDAsODIsNjksNzEsNzMsODMsCisgICAgODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMjQ0LDEyLDAsCisgICAgMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0NiwKKyAgICAwLDAsMCwxMTQsNywwLDAsMCwyNDQsNywwLDAsMCwxMTgsMTAxLDExNCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMTE0LDIyNywwLDAsMCwxMTQsMjI1LDAsMCwwLDExNiwxMCwKKyAgICAwLDAsMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LDExNywxMDEsMTE0LDQwLDAsCisgICAgMCwwLDQwLDYsMCwwLDAsMTE0LDIxNSwwLDAsMCwxMTQsMTc4LDAsMCwKKyAgICAwLDExNiwxMiwwLDAsMCwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LDEwNywKKyAgICAxMDEsMTIxLDExNCwyMjYsMCwwLDAsMTE2LDQsMCwwLDAsMTA0LDEwNywxMDEsMTIxLAorICAgIDI0NCw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTYsMCwwLAorICAgIDAsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsOTEsMywwLDAsMTE1LDIyLDAsMCwwLDAsMiw5LDEsMTIsMiwKKyAgICA5LDEsMTUsMSwyMiwxLDMsMSwxOCwxLDI4LDEsMTMsMSw5LDEsCisgICAgMTE3LDM4LDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LAorICAgIDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDc4LDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw3LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNDAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLAorICAgIDEsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMSwKKyAgICAwLDEwMCwxLDAsODMsMTIxLDE3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLAorICAgIDAsMTMxLDEsMCwxLDg3LDExMCwyMiwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKKyAgICAxMTQsNzIsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LDExMCwxLDAsODgsMTIwLAorICAgIDYwLDAsMTE2LDQsMCwxMzEsMCwwLDY4LDkzLDQ5LDAsOTIsMywwLDEyNSwKKyAgICA0LDAsMTI1LDUsMCwxMjUsNiwwLDEyNCwzLDAsMTA2LDUsMCwxMTYsNiwKKyAgICAwLDEyNCw1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4MywwLDEyNCw0LDAsCisgICAgMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsMTEzLDgzLDAsODcsMTAwLDEsCisgICAgMCw4Myw0MCwyLDAsMCwwLDExNywzNCwwLDAsMCw3MCwxMDUsMTEwLDEwMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDc4LDQwLAorICAgIDcsMCwwLDAsMTE0LDIzMywwLDAsMCwxMTQsMywwLDAsMCwxMTQsMzksCisgICAgMCwwLDAsMTE0LDQwLDAsMCwwLDI0NCwyNywwLDAsMCw5NSwxMDMsMTAxLAogICAgIDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsCi0gICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDgsMCwwLDAsMTAxLDExMCwxMDAsCi0gICAgMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTYsMTE3LDExMiwxMDgsMTAxLDQwLAotICAgIDcsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsCi0gICAgMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAotICAgIDExNiwxMDQsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMiw5NywxMTYsMTA0LDExNywKLSAgICA2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDgsMCwwLDAsMTE1LAotICAgIDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsMSwwLDAsMCw5NSw0MCwwLDAsCi0gICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCi0gICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNiwzLDAsMCwxMTUsMjAsMCwKLSAgICAwLDAsMCwzLDE1LDEsMTIsMSw0LDEsMywxLDE3LDEsMTMsMSwKLSAgICA5LDEsMjUsMSwyMSwxLDExNywzMywwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsCi0gICAgMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNzAsNDAsMTMsCi0gICAgMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCi0gICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywKLSAgICAxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKLSAgICAxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywxMiwwLDAsCi0gICAgMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTcsMTgsMCwKLSAgICAwLDAsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsNjksODksOTUsNjgsCi0gICAgNjksNjYsODUsNzEsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsMTE3LDExLAotICAgIDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg1LDczLDc2LDY4LDExNywxMSwKLSAgICAwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMTQsCi0gICAgMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKLSAgICAxMjEsMTE3LDE2LDAsMCwwLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLAotICAgIDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywKLSAgICAxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsCi0gICAgMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKLSAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAotICAgIDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKLSAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIyNywyLDAsMCwxMTUsMTYsMCwKLSAgICAwLDAsMTYsMyw2LDMsNiwzLDYsMiw2LDIsMTgsNywxOCwxNSwKLSAgICAzLDEsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwKLSAgICAxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDUsMCwwLDAsNjYsMCwwLAotICAgIDAsMTE1LDc0LDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDEsNiwwLDEwMCw2LDAsMTAwLDEwLDAsMTAwLDcsMCwKLSAgICAxMDAsOCwwLDEzMiwwLDEsMTMxLDEsMCw5MCw4LDAsMTAwLDksMCw4MywKLSAgICA0MCwxMSwwLDAsMCwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDExNyw4MywwLDAsMCw2Niw5NywxMTUsMTAxLAotICAgIDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksMTExLDEwOSwxMDksMTExLDExMCwKLSAgICAzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsCi0gICAgOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICAxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTI1LAotICAgIDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwxMDAsMSwwLDEzMSwyLAotICAgIDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsMTA2LDMsMCwxMDAsMiwKLSAgICAwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLDEyNCwzLDAsMTAwLDUsCi0gICAgMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLDUsMCwxMDcsMywwLAotICAgIDgzLDQwLDYsMCwwLDAsMTE3LDE0MSwwLDAsMCw2NywxMTEsMTEwLDk5LDExNCwKLSAgICAxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LAotICAgIDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwKLSAgICAxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMDUsMSwwLDAsMCwxMTcsMSwwLAotICAgIDAsMCw0NiwxMDUsMCwwLDAsMCwxMDUsMiwwLDAsMCwxMTcsOCwwLAotICAgIDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNCwwLDAsMCwxMTcsCi0gICAgMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsCi0gICAgMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAotICAgIDExNyw2LDAsMCwwLDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywxMCwwLDAsMCwKLSAgICAxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCw1LDAsMCwwLDExNywKLSAgICA0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwKLSAgICAxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKLSAgICAxMDksMTAxLDExNywxMywwLDAsMCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgOTgsOTcsMTE1LDEwMSwxMTcsOSwwLDAsMCwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsCi0gICAgMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwKLSAgICAwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyNiwzLDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDMsMjUsMSwyMiwxLDE5LDEsMTE3LDI0LAotICAgIDAsMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwKLSAgICA0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSw1LDAsMCwwLAotICAgIDAsMCwwLDAsMTIsMCwwLDAsMjIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDIwOCwxLDAsMCwxMjQsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzMsMiwKLSAgICAwLDI1LDEyNSw1LDAsMTI0LDIsMCwxMDAsMiwwLDEwMCwzLDAsMTMzLDIsCi0gICAgMCwyNSwxMjUsNiwwLDEyNCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEzMywyLAotICAgIDAsMjUsMTI1LDcsMCwxMjQsNSwwLDExNiwwLDAsMTA3LDMsMCwxMTQsMTE1LAotICAgIDAsMTAwLDUsMCwxMDYsMSwwLDEyNCwxLDAsMTI0LDUsMCwxMzEsMiwwLAotICAgIDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTYsMywwLAotICAgIDEyNCw4LDAsMTAwLDYsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsCi0gICAgMSwyLDEzMCwxLDAsMTEwLDExNiwwLDExNiw0LDAsMTI0LDYsMCwxMzEsMSwKLSAgICAwLDEwMCwyLDAsMTA3LDMsMCwxMTQsMTczLDAsMTAwLDgsMCwxMDYsMSwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsOSwwLDExNiwyLDAsMTI0LDksMCwxMzEsCi0gICAgMSwwLDEsMTE2LDUsMCwxMjQsOSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCi0gICAgNTgsMCwxMTYsNCwwLDEyNCw3LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywzLAotICAgIDAsMTE0LDIzMSwwLDEwMCw5LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMTI1LDksMCwxMTYsMiwwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LDAsCi0gICAgMTI0LDksMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwMCwKLSAgICAxLDAsMTA3LDksMCwxMTQsMTk0LDEsMTIxLDIwLDAsMTE2LDcsMCwxMjQsNCwKLSAgICAwLDEwMCwxMCwwLDI1LDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwKLSAgICAxMTYsOCwwLDEwNywxMCwwLDExNCwyNywxLDEsMSwxLDg5LDExMCw3MSwwLAotICAgIDg4LDExNiw5LDAsMTI0LDYsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsCi0gICAgMTE0LDk4LDEsMTAwLDExLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LAotICAgIDksMCwxMTYsMiwwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiwzLDAsMTI0LAotICAgIDksMCwxMDAsNiwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLAotICAgIDIsMTMwLDEsMCwxMTAsMCwwLDEyMSwxOCwwLDEyNCw0LDAsMTAwLDEyLDAsCi0gICAgMjUsMTAwLDEzLDAsNjQsMTI1LDExLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLAotICAgIDEwNywxMCwwLDExNCwxMzYsMSwxLDEsMSw4OSwxMTMsMTk0LDEsODgsMTE2LDksCi0gICAgMCwxMjQsNywwLDEzMSwxLDAsMTI0LDExLDAsMTA3LDMsMCwxMTQsMTk0LDEsCi0gICAgMTE2LDMsMCwxMDAsMTEsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgNiwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsCi0gICAgMCwxMTMsMTk0LDEsMTEwLDAsMCwxMjQsMiwwLDEwMCw0LDAsMTAwLDEsMCwKLSAgICAxMzMsMiwwLDI1LDgzLDQwLDE0LDAsMCwwLDExNywxOTMsMCwwLDAsODIsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsCi0gICAgMTA4LDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCw0NCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDk3LDExMCwxMDAsMzIsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsOTcsMTA4LDExMSwxMTAsMTAzLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExOSw5NywxMjEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLAotICAgIDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNSwxMDcsMTA1LAotICAgIDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLAotICAgIDk5LDEwNCwxMDEsOTksMTA3LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDEwNSw0LDAsMCwwLDEwNSw4LDAsMCwwLDEwNSwxMiwwLDAsMCwKLSAgICAxMTcsMzAsMCwwLDAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwKLSAgICAxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsCi0gICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsMTksMCwwLDAsOTgsOTcsMTAwLDMyLDExNiwxMDUsCi0gICAgMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNywxNCwwLAotICAgIDAsMCw5OCw5NywxMDAsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwKLSAgICAxMTcsNSwwLDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNywyNCwwLDAsMCw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwKLSAgICAxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQwLDEwLDAsMCwwLAotICAgIDExNywxMiwwLDAsMCw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSwKLSAgICA4MywxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxNiwwLDAsCi0gICAgMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLAotICAgIDEwMSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDgsMCwwLDAsNjksNzksCi0gICAgNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywKLSAgICAzLDAsMCwwLDEwNSwxMTAsMTE2LDExNyw4LDAsMCwwLDc1LDEwMSwxMjEsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsCi0gICAgNDAsMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAotICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwKLSAgICAxMDAsOTcsMTE2LDk3LDExNywxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAotICAgIDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE3LDUsMCwwLDAsMTA5LDk3LDEwMywxMDUsCi0gICAgOTksMTE3LDEzLDAsMCwwLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsCi0gICAgOTcsMTA5LDExMiwxMTcsOCwwLDAsMCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwKLSAgICAxMTcsMywwLDAsMCwxMDksMTE1LDEwMywxMTcsNywwLDAsMCwxMDksMTAxLDExNSwKLSAgICAxMTUsOTcsMTAzLDEwMSwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKLSAgICAxMDksMTE2LDEwNSwxMDksMTAxLDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDExNSwxMDUsMTIyLDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAotICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAotICAgIDYyLDExNywyMCwwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCi0gICAgMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDM0LDMsMCwwLDExNSw2OCwKLSAgICAwLDAsMCwwLDcsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEwLAotICAgIDEsMjcsMSwxOCwxLDE1LDEsMTAsMSwxNSwxLDE4LDEsMTUsMSwxMCwKLSAgICAxLDE1LDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LAotICAgIDEsMTAsMSwxNSwxLDEyLDEsMywxLDE4LDEsMTMsMSw1LDIsMTgsCi0gICAgMSwzLDEsMTUsMSwyMSwzLDExNywzNCwwLDAsMCw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LAotICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsMTAsCi0gICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsOTksMiwwLAotICAgIDAsMCwxLDAsMCwwLDUsMCwwLDAsMTIsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIyNywwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTI1LDMsMCwKLSAgICAxMjQsMCwwLDEwNiwxLDAsMTI0LDMsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LAotICAgIDAsMCwxMDYsMiwwLDEyNCwzLDAsMTMxLDEsMCwxMjQsMSwwLDk1LDMsCi0gICAgMCwxMjQsMiwwLDExNSwxMDYsMCwxMjEsMjIsMCwxMTYsNCwwLDEyNCwxLDAsCi0gICAgMTA2LDMsMCwxMzEsMSwwLDEyNCwxLDAsOTUsNSwwLDg3LDExMywxMTgsMCwKLSAgICA0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDEwMiwwLDEsMSwxLDEyNCwxLDAsCi0gICAgMTA2LDMsMCwxMjQsMSwwLDk1LDUsMCw4OSwxMTMsMTE4LDAsODgsMTEwLDEyLAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEyNCwxLDAsOTUsNSwwLDEyNCwzLDAsCi0gICAgMTI0LDEsMCw5NSw3LDAsMTI0LDAsMCwxMDYsOCwwLDEyNCwzLDAsMTMxLAotICAgIDEsMCwxMTQsMTcwLDAsMTE2LDksMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsCi0gICAgMCwxMDAsMSwwLDI1LDEwMywxLDAsMTI0LDEsMCw5NSwxMCwwLDExMCwyNSwKLSAgICAwLDEyNCwxLDAsMTA2LDcsMCwxMDYsMTEsMCwxMDAsMiwwLDEzMSwxLDAsCi0gICAgMTAwLDEsMCwyNSwxMjQsMSwwLDk1LDcsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgOTUsMTIsMCwxMTYsMTMsMCwxMTYsMTQsMCwxMjQsNCwwLDEyNCwxLDAsMTA2LAotICAgIDE1LDAsMTMxLDMsMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwxMTcsCi0gICAgODIsMCwwLDAsNzIsMTAxLDEwOCwxMTIsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5Nyw5OCwxMDgsMTAxLDMyLAotICAgIDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwKLSAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMSwxMTQsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTA1LDExMCwxMDMsNDYsMTA1LDAsMCwwLDAsMTE3LDEsMCwwLDAsCi0gICAgNDYsNDAsMTYsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTUsOTUsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCi0gICAgMTE3LDEyLDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTcsOCwwLDAsMCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE3LDE3LAotICAgIDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMTE3LDEwLDAsMCwwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLAotICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDgsMCwwLDAsOTUsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LAotICAgIDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDk1LDk1LDExNywyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LAotICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKLSAgICAxMTgsMTAxLDEwMCwxMTcsNCwwLDAsMCwxMDEsMTIwLDEwMSw5OSwxMTcsOCwwLDAsCi0gICAgMCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSw0MCw1LDAsMCwwLDExNyw0LAotICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwxMTcsMTAsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwKLSAgICAxMTUsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDk5LAotICAgIDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiw0MCwwLDAsMCwwLDQwLAotICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCi0gICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw4MCwzLDAsMCwxMTUsMzIsMCwwLDAsCi0gICAgMCw0LDksMSwxNSwxLDE4LDEsNiwxLDMsMSwyMiwxLDEzLDEsCi0gICAgMjAsMiwxMiwxLDksMSwxNSwxLDI4LDIsMjUsMSw5LDEsMTksMSwKLSAgICAxMTcsMjYsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsCi0gICAgOTksMTE1LDQ2LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LAotICAgIDcwLDQwLDksMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywKLSAgICAxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMjAsCi0gICAgMCwwLDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsMTcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNSwwLAotICAgIDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsMTIsMCwwLDAsOTUsMTA4LDExMSw5NywKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwKLSAgICAwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLAotICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEzLDAsMCwwLDk1LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwyMSwzLDAsMCwxMTUsMTAsCi0gICAgMCwwLDAsMTYsMyw2LDIsMTIsOCwxMiw0Niw2LDEsMTE3LDEzLDAsCi0gICAgMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAotICAgIDY2LDAsMCwwLDExNSwxMDQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLAotICAgIDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsCi0gICAgMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDgsCi0gICAgMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTUsMCwKLSAgICA4Myw0MCwxNiwwLDAsMCwxMTcsMTIsMCwwLDAsODMsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsCi0gICAgMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLAotICAgIDExNywxMjEsMCwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsCi0gICAgMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsCi0gICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LAotICAgIDMyLDExNSwxMTYsMTE0LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQwLAotICAgIDEsMCwwLDAsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsCi0gICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCw0MCwyLDAsMCwKLSAgICAwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTIsCi0gICAgOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCi0gICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKLSAgICAxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDEwNiwzLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LDIzLDAsMCwwLDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLDAsMCwxMDUsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDEsCi0gICAgMCw1NCw4Myw0MCwyLDAsMCwwLDExNywxMTQsMSwwLDAsNzksMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiwKLSAgICA5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDgwLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDEwNywxMDEsMTIxLAotICAgIDExNSw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMDksMTE2LAotICAgIDEwNSwxMDksMTAxLDM5LDMyLDQwLDEwOSw5NywxMTAsMTAwLDk3LDExNiwxMTEsMTE0LDEyMSw0MSwKLSAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLAotICAgIDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTExLDEwMiwzMiwxMDgsOTcsMTE1LAotICAgIDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDk5LDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCw1OSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwKLSAgICAzOSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsNDAsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAotICAgIDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LAotICAgIDExMSwxMTksMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNywKLSAgICA1LDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsCi0gICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw0MCwyLDAsCi0gICAgMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwKLSAgICAxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAotICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAotICAgIDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTEyLAotICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMTAsMTE3LDIzLDAsMCwwLDgzLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDI0NCw4LDAsMCwwLDEwMSwxMTAsMTAwLAorICAgIDExNSwxMTksMTA1LDExNiwxMDQsMjQ0LDUsMCwwLDAsMTE2LDExNywxMTIsMTA4LDEwMSw0MCwKKyAgICA3LDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMzUsCisgICAgMCwwLDAsMTE0LDIzMiwwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxMTIsMCwKKyAgICAwLDAsMTE0LDM2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDExNCwyMTcsMCwwLDAsMTA2LDMsMCwwLDExNSwKKyAgICAyMCwwLDAsMCwwLDMsMTUsMSwxMiwxLDQsMSwzLDEsMTcsMSwKKyAgICAxMywxLDksMSwyNSwxLDIxLDEsMTE3LDMzLDAsMCwwLDg3LDEwNSwxMTAsCisgICAgMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxMSwKKyAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw1NywwLAorICAgIDAsMCwxMTQsNTgsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjI5LDAsMCwKKyAgICAwLDExNCwyMjgsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsMjI3LDAsMCwwLAorICAgIDExNCwyMzMsMCwwLDAsMTE0LDIxNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjI0LAorICAgIDAsMCwwLDcxLDMsMCwwLDExNSwxNiwwLDAsMCwxMiwzLDYsMywKKyAgICA2LDMsNiwyLDYsMiwxOCw3LDE4LDE1LDMsMSwxMTQsMjI0LDAsMCwKKyAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNjQsMCwwLDAsMTE1LDU4LDAsMCwwLDEwMSwwLDAsOTAsMSwKKyAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAorICAgIDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwKKyAgICAwLDEwMCw4LDAsODMsNDAsOSwwLDAsMCwyNDQsMTMsMCwwLDAsOTUsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDExNyw4MywwLDAsCisgICAgMCw2Niw5NywxMTUsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksCisgICAgMTExLDEwOSwxMDksMTExLDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEwMCwxLDAsMjUsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwKKyAgICAxMDAsMSwwLDEzMSwyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsCisgICAgMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLAorICAgIDEyNCwzLDAsMTAwLDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLAorICAgIDUsMCwxMDcsMywwLDgzLDQwLDYsMCwwLDAsMTE3LDE0MSwwLDAsMCwKKyAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCisgICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsMzIsCisgICAgMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LDExNSwKKyAgICAzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwzOSwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsMjksMCwKKyAgICAwLDAsMTE0LDEwMSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDEwMCwwLDAsCisgICAgMCwxMTQsNzYsMCwwLDAsNDAsNCwwLDAsMCwxMTQsMzgsMCwwLDAsCisgICAgMTE0LDE2MywwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDMyLDAsMCwwLDQwLAorICAgIDUsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDExNiwKKyAgICAwLDAsMCwxMTYsMTMsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAorICAgIDk1LDk4LDk3LDExNSwxMDEsMTE2LDksMCwwLDAsMTE2LDk3LDEwNSwxMDgsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMjYsMywwLDAsMTE1LDgsMCwwLDAsCisgICAgMCwzLDI1LDEsMjIsMSwxOSwxLDExNywyNCwwLDAsMCw5NSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA1LDExNSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDEwMCwwLDAsMCwxMjQsCisgICAgMCwwLDEyNCwxLDAsOTUsMCwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwKKyAgICAwLDEzMSwyLDAsMSwxMTYsMiwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDEsMTE2LDMsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsOTYsCisgICAgMCwxMjEsMjIsMCwxMTYsNCwwLDEyNCwxLDAsMTA2LDUsMCwxMzEsMSwwLAorICAgIDEyNCwxLDAsOTUsNiwwLDg3LDExMyw5NiwwLDQsMTE2LDcsMCwxMDcsMTAsCisgICAgMCwxMTQsOTIsMCwxLDEsMSw4OSwxMTMsOTYsMCw4OCwxMTAsMCwwLDEwMCwKKyAgICAyLDAsODMsNDAsMywwLDAsMCwxMTcsMiwxLDAsMCw4MywxMDEsMTE2LAorICAgIDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCisgICAgMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw2OSwxMjAsMTAxLDk5LAorICAgIDExNywxMTYsMTA1LDExMSwxMTAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LDExNCwxMTUsNDAsNDEsMzIsCisgICAgMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDExNiwzMiw5NSwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQ0LDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0NCwzMiwKKyAgICA5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTEsMTEyLAorICAgIDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA4LDEyMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICA5NSw0NiwzMiw4NCwxMDQsMTAxLDMyLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LAorICAgIDk1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDMyLDExNywxMTUsMTA1LDExMCwxMDMsCisgICAgMzIsMTA1LDEwOSwxMTIsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0MCw0MSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwMSw5NSw5NSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsCisgICAgMTY0LDAsMCwwLDc4LDQwLDgsMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsCisgICAgMTYyLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwxMTcsCisgICAgMCwwLDAsMTE0LDE2NCwwLDAsMCwyNDQsMTAsMCwwLDAsOTUsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMTE0LDEwOSwwLDAsMCw0MCwyLDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxNywwLDAsMCwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwxMTQsMTE1LAorICAgIDEzNCwzLDAsMCwxMTUsMTYsMCwwLDAsMCw3LDksMSwxMywxLDEzLAorICAgIDEsMTUsMSwzLDEsMjIsMSwxMywxLDExNywzMSwwLDAsMCw5NSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTEyLDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDE0Myw5NCwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLAorICAgIDEsMCwxLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LAorICAgIDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNzksMCwxMTYsMywKKyAgICAwLDEwMCwyLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwKKyAgICAxMzAsMSwwLDExMCwwLDAsMTE2LDUsMCwxMTYsNiwwLDEyNCwzLDAsMTI0LAorICAgIDIsMCwxMDYsNywwLDEzMSwzLDAsMSwxMjQsMiwwLDgzLDg3LDEwMCwxLAorICAgIDAsODEsODgsMTAwLDEsMCw4Myw0MCwzLDAsMCwwLDExNyw1NywwLDAsCisgICAgMCw3NiwxMTEsOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCisgICAgMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLAorICAgIDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDEwNSwxMTYsNDYsNzgsMTE3LDUyLDAsMCwwLAorICAgIDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsCisgICAgOTUsOTksMTExLDEwMCwxMDEsNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLAorICAgIDc4LDExMSwxMTAsMTAxLDQwLDgsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMjM5LAorICAgIDAsMCwwLDExNCwyMTksMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsNDYsMCwKKyAgICAwLDAsMTE0LDk5LDAsMCwwLDI0NCw0LDAsMCwwLDEwMSwxMjAsMTAxLDk5LAorICAgIDExNCw2MiwwLDAsMCw0MCw0LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCisgICAgMTc4LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDIwNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjE4LDAsCisgICAgMCwwLDE1MCwzLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDE1LDEsMTMsCisgICAgMSwxNSwxLDEyLDEsMywxLDIxLDEsMTksMSwxMTcsMjUsMCwwLDAsCisgICAgOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDcsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LAorICAgIDAsMCwwLDExNCwxNTYsMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjE4LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDExNCwyMzcsMCwwLDAsMTIxLDMsMCwwLDExNSwKKyAgICA4LDAsMCwwLDEyLDMsNiwyLDEyLDgsMTIsMTYsMTE0LDIzNywwLDAsCisgICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsCisgICAgMCwwLDY0LDAsMCwwLDExNSwxMDYsMCwwLDAsMTAxLDAsMCw5MCwxLAorICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsCisgICAgOTAsMywwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsCisgICAgNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCwxMDAsOCwKKyAgICAwLDEzMiwwLDAsOTAsNiwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwKKyAgICA5MCw3LDAsMTAwLDExLDAsMTAwLDE4LDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLAorICAgIDAsMSw5MCw4LDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsMCw5MCw5LAorICAgIDAsMTAwLDE3LDAsODMsNDAsMTksMCwwLDAsMjQ0LDEyLDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMTE2LDAsMCwxMzAsMSwwLDEwMCwxLDAsODMsNDAsCisgICAgMiwwLDAsMCwxMTcsMTc4LDAsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsCisgICAgMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwKKyAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLDMyLDQwLDk3LDExMCwzMiwKKyAgICAxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCisgICAgMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQwLDEsMCwwLAorICAgIDAsMjQ0LDcsMCwwLDAsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDQwLDIsMCwKKyAgICAwLDAsMTE0LDc1LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTAsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxNjQsMywwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw2LDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwKKyAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTA1LDEsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwxLDAsNTQsODMsNDAsCisgICAgMiwwLDAsMCwxMTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsCisgICAgMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwKKyAgICAxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAwLDEwNSwKKyAgICA5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LAorICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMTUsMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA4MCwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsNTgsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsMTA5LDEwMSwzOSwKKyAgICAzMiw0MCwxMDksOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsMTA1LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTE1LDExNiw5NywxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsMzIsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgNTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTE1LDEwNSwxMjIsCisgICAgMTAxLDM5LDMyLDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwzMiwxMDUsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMzIsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICA5NywxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwKKyAgICAxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExNCwxOTMsMCwwLDAsNDAsMSwwLDAsMCwxMTQsMjQzLDAsCisgICAgMCwwLDQwLDIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAyNDQsMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE3MiwKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDExLDExNywyMywwLDAsMCw4MywKICAgICAxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LAogICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNCwKICAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwKQEAgLTIwODEsMjY2ICsxOTE5LDE2MSBAQAogICAgIDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLAogICAgIDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwKICAgICAxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQwLDEsCi0gICAgMCwwLDAsMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKLSAgICA0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsCi0gICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTAsCi0gICAgMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLAotICAgIDAsMCwxMDAsOTcsMTE2LDk3LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLAotICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTI0LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMjQ0LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKKyAgICA0MCw0LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNiwKKyAgICAxMCwwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw1MiwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAorICAgIDAsMCwyNDQsMTUsMCwwLDAsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxODUsMywwLDAsMTE1LDIsMCwwLDAsMCwKICAgICA4LDExNywyOCwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwKICAgICAxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLAogICAgIDEwMCwxMDEsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMCwxMzAsCi0gICAgMSwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMTUxLDAsMCwwLAotICAgIDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LAotICAgIDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwKLSAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDAsMSwwLDAsMCwxMTcsMTksMCwKLSAgICAwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAotICAgIDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwKLSAgICAwLDEwMCw5NywxMTYsOTcsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKLSAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKLSAgICA2MiwxMTcsOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDEzNCwzLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDYsMTE3LDIxLDAsMCwwLDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLAotICAgIDk3LDExNiw5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsOSwwLDAsMCwKLSAgICA0NCwwLDAsMCw2NywwLDAsMCwxMTUsNjIsMSwwLDAsMTAwLDEsMCwKLSAgICAxMDAsMiwwLDEwOCwwLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCw1OCwwLDQsMTE2LAotICAgIDMsMCwxMDcsMTAsMCwxMTQsMTA2LDAsMSwxMjUsNSwwLDEsMTIyLDI2LDAsCi0gICAgMTE2LDQsMCwxMDAsMywwLDEwMCw0LDAsMTI0LDEsMCwxMzEsMSwxLDEyNCwKLSAgICA1LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LDUsMCwKLSAgICAxMjYsNSwwLDg4LDExMCwxLDAsODgsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LAotICAgIDAsMTMxLDEsMCwxMDYsNywwLDEyNSw2LDAsMTIxLDE5LDAsMTI0LDIsMCwKLSAgICAxMDYsOCwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCw1OCwwLAotICAgIDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMjA0LDAsMSwxMjUsNSwwLDEsMTIyLAotICAgIDI2LDAsMTE2LDQsMCwxMDAsNSwwLDEwMCw0LDAsMTI0LDEsMCwxMzEsMSwKLSAgICAxLDEyNCw1LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LAotICAgIDUsMCwxMjYsNSwwLDg4LDExMCwxLDAsODgsMTE2LDUsMCwxMDYsMTAsMCwKLSAgICAxMDAsMiwwLDEwMCw3LDAsMTMxLDIsMCwxMjUsOCwwLDEyMSwzMCwwLDEyNCwKLSAgICA4LDAsMTA2LDEzLDAsMTI0LDQsMCwxMDYsMTMsMCwxMjQsNywwLDEwMCwxLAotICAgIDAsMjUsMTMxLDEsMCwxMzEsMSwwLDgzLDg3LDExMCw1OCwwLDQsMTE2LDE0LAotICAgIDAsMTA3LDEwLDAsMTE0LDU3LDEsMSwxMjUsNSwwLDEsMTIyLDI2LDAsMTE2LAotICAgIDQsMCwxMDAsNiwwLDEwMCw0LDAsMTI0LDEsMCwxMzEsMSwxLDEyNCw1LAotICAgIDAsMTMwLDIsMCw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LDUsMCwxMjYsCi0gICAgNSwwLDg4LDExMCwxLDAsODgsMTAwLDIsMCw4Myw0MCw4LDAsMCwwLAotICAgIDExNyw1MiwwLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKLSAgICA3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAotICAgIDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LDEwNSwwLDAsMCwwLDc4LDExNywKLSAgICAzOSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLDExNywxMDMsMTA0LAotICAgIDMyLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsMTE3LDQsMCwwLDAsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE3LDI1LDAsMCwwLDcwLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMzIsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwKLSAgICAxMTAsMTAzLDExNywyOCwwLDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDg0LDQwLDE1LDAsMCwwLDExNyw4LDAsMCwwLDExNiwxMTEsCi0gICAgMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE3LDEyLDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDAsOTcsMTE2LDk3LDExNyw3LDAsMCwwLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsNywwLDAsMCw2NiwxMjEsMTE2LAotICAgIDEwMSwxMTUsNzMsNzksMTE3LDgsMCwwLDAsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsCi0gICAgMTAxLDExNywxNSwwLDAsMCwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDk1LDEwMSwxMTAsOTksCi0gICAgMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsMTEsMCwwLDAsODMsMTIxLDExMCwxMTYsOTcsMTIwLAotICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTcsMjUsMCwwLDAsNzMsMTEwLDk5LDExNCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw0LDAsMCwKLSAgICAwLDg0LDExNCwxMTcsMTAxLDExNyw2LDAsMCwwLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgMTE3LDE4LDAsMCwwLDg1LDExMCwxMDUsOTksMTExLDEwMCwxMDEsNjgsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MCw5LDAsMCwwLDExNyw0LDAsMCwKLSAgICAwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE3LDgsMCwwLDAsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTcsCi0gICAgNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDMsMCwwLDAsMTAxLDEyMCwKLSAgICA5OSwxMTcsMTAsMCwwLDAsMTE0LDEwMSw5NywxMDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICAxMTcsOCwwLDAsMCwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMTE3LDE1LDAsCi0gICAgMCwwLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLAotICAgIDExNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAotICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCi0gICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLAotICAgIDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDE0MywzLDAsMCwKLSAgICAxMTUsMzgsMCwwLDAsMCwyLDEyLDEsMTUsMSwzLDEsMTksMSwxOCwKLSAgICAxLDksMSwzMSwxLDE4LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsCi0gICAgMSwxOCwxLDMsMSwzMCwxLDE4LDEsOSwxLDExNywyMywwLDAsMCwKLSAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDEyLDAsMCwwLDQ1LDAsMCwwLDY3LDAsMCwwLDExNSw1MiwyLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsCi0gICAgMTAwLDEwLDAsMTI1LDMsMCwxMjEsMTYsMCwxMTYsMiwwLDEyNCwyLDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKLSAgICAxMTQsNjMsMCwxLDEsMSwxMDAsMTAsMCwxMjUsNCwwLDg5LDExMCwxNCwxLAotICAgIDg4LDEyMSwxOSwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDUsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDEwMywKLSAgICAwLDEsMSwxLDg5LDExMCwyMzAsMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLAotICAgIDEsMCwyNSwxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsCi0gICAgNiwwLDEyNCw0LDAsMTMxLDEsMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsCi0gICAgMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU5LDAsMSwxLDEsODksMTEwLDE3NCwwLAotICAgIDg4LDEyMSwyOCwwLDEyNCwwLDAsMTA2LDgsMCwxMjQsMSwwLDEyNCw2LDAsCi0gICAgMTI0LDQsMCwxMjQsNSwwLDEzMSw0LDAsMTI1LDcsMCw4NywxMTAsMjQsMCwKLSAgICA0LDExNiw5LDAsMTE2LDEwLDAsMTAyLDIsMCwxMDcsMTAsMCwxMTQsMjE0LDAsCi0gICAgMSwxLDEsODksMTEwLDExOSwwLDg4LDExNiwxMSwwLDEwMCwyLDAsMTI0LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMDYsMTMsMCwxMjQsNywKLSAgICAwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMTQsMCwxMjQsOCwwLDExNiwxNSwwLAotICAgIDEzMSwyLDAsMTE0LDM4LDEsMTE2LDE2LDAsMTA2LDE3LDAsMTI0LDgsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMSwxMTYsMTEsMCwxMDAsMywwLDEyNCw0LDAsMTMxLAotICAgIDIsMCwxLDEyNCw4LDAsODMsMTAwLDQsMCwxMjUsOSwwLDExNiw5LDAsCi0gICAgMTI0LDksMCwxMDYsMTgsMCwxMjQsNCwwLDEzMSwxLDAsMTAwLDUsMCwxMjQsCi0gICAgMSwwLDEwMCw2LDAsMTI0LDQsMCwxMzEsMSwyLDEzMCwxLDAsMTI0LDAsCi0gICAgMCwxMDYsNiwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsMTksMCwKLSAgICAxMTYsMjAsMCwxMjQsMTAsMCwxMjQsMiwwLDEwMCw3LDAsMTAwLDgsMCwxMDAsCi0gICAgMTEsMCwxMzEsNCwxLDEyNSwxMSwwLDExNiwxMSwwLDEwMCwzLDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEsMTE2LDIyLDAsMTA2LDIzLDAsMTIsMTE0LDQ4LDIsMTI0LAotICAgIDQsMCwxMDAsMTAsMCwxMDcsOSwwLDExNCw0OCwyLDEyNCwzLDAsMTAwLDEwLAotICAgIDAsMTA3LDksMCwxMTQsNDgsMiwxMTYsMjQsMCwxMTYsMjUsMCwxMzEsMSwwLAotICAgIDEyNSw2LDAsMTI0LDYsMCwxMDYsMjYsMCwxMTYsMjcsMCwxMjQsMywwLDEzMSwKLSAgICAxLDAsMTMxLDEsMCwxLDEyNCw2LDAsMTA2LDI2LDAsMTE2LDI3LDAsMTE2LAotICAgIDI4LDAsMTI0LDEwLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsCi0gICAgNiwwLDEwNiwyNiwwLDExNiwxMiwwLDEwNiwyOSwwLDEyNCwxMSwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxLDEyMSwzNiwwLDEyNCwwLDAsMTA2LDMwLDAsMTI0LDIsCi0gICAgMCwxMjQsNCwwLDEyNCw2LDAsMTMxLDMsMCwxLDExNiwxMSwwLDEwMCw5LAotICAgIDAsMTI0LDQsMCwxMzEsMiwwLDEsODcsMTEzLDQ4LDIsNCwxMTYsMywwLAotICAgIDEwNywxMCwwLDExNCw0NCwyLDEsMSwxLDg5LDExMyw0OCwyLDg4LDExMCwwLAotICAgIDAsMTI0LDExLDAsODMsNDAsMTIsMCwwLDAsMTE3LDE5MCwwLDAsMCw2NywKLSAgICAxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksCi0gICAgMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLDEwNSwKLSAgICAxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE0LAotICAgIDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LAotICAgIDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwKLSAgICAzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5NywKLSAgICAxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCi0gICAgMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsNSwwLAotICAgIDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNywxMywwLDAsMCwxMjMsMTI1LDMyLDEwOSwKLSAgICA5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTIzLDEyNSwxMTcsMTksMCwwLDAsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsCi0gICAgMTI1LDExNywyMSwwLDAsMCw3OCwxMTEsMTEwLDQ1LDk5LDExMSwxMDAsMTAxLDMyLDExMSwKLSAgICA5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywxMjUsMTE3LDQsMCwwLDAsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwKLSAgICAwLDAsMTAxLDEyMCwxMDEsOTksMTE3LDEyLDAsMCwwLDEwMCwxMTEsMTEwLDExNiw5NSwKLSAgICAxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsMTE3LDEwLDAsMCwwLDExOSwxMTQsMTExLDExNiwKLSAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsNzgsODQsNDAsMzEsMCwwLDAsMTE3LDEyLDAsCi0gICAgMCwwLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKLSAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTcsMCwwLDAsOTksOTcsOTksMTA0LAotICAgIDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTksMCwKLSAgICAwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsCi0gICAgMTE2LDk3LDExNiwxMTUsMTE3LDMsMCwwLDAsMTA1LDExMCwxMTYsMTE3LDgsMCwwLAotICAgIDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTcsNywwLDAsMCw3Myw3OSwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwxMTYsMTAxLDExNSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDExLAotICAgIDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw4LAotICAgIDAsMCwwLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTYsMCwwLDAsCi0gICAgOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCi0gICAgMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsNSwwLDAsCi0gICAgMCwxMDgsMTExLDk3LDEwMCwxMTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsMTA1LDExMCwxMTUsCi0gICAgMTE2LDk3LDExMCw5OSwxMDEsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwxMDAsMTAxLDk1LAotICAgIDExNiwxMjEsMTEyLDEwMSwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTYsMCwKLSAgICAwLDAsOTUsMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCi0gICAgMTA5LDEwMSwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywyNSwwLAotICAgIDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LAotICAgIDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsNywwLDAsMCwKLSAgICA5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwKLSAgICAxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTksMCwwLDAsMTAwLDExMSwxMTAsCi0gICAgMTE2LDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgMTE3LDksMCwwLDAsOTgsMTIxLDExNiwxMDEsOTcsMTE0LDExNCw5NywxMjEsMTE3LDEyLAotICAgIDAsMCwwLDk1LDc3LDY1LDcxLDczLDY3LDk1LDY2LDg5LDg0LDY5LDgzLDExNywKLSAgICA2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw3LDAsMCwwLDk1LAotICAgIDExOSw5NSwxMDgsMTExLDExMCwxMDMsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDUsCi0gICAgMCwwLDAsMTAwLDExNywxMDksMTEyLDExNSwxMTcsMTUsMCwwLDAsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0MCwxMiwwLDAsCi0gICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLAotICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDEzLDAsMCwwLDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywyLDAsMCwwLDExNSwKLSAgICAxMTYsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsMTAsMCwwLDAsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE3LDUsMCwwLDAsMTAyLDExMSwKLSAgICAxMTcsMTEwLDEwMCwxMTcsMywwLDAsMCwxMDksMTE1LDEwMywxMTcsMTIsMCwwLDAsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDExLDAsMCwKLSAgICAwLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiw0MCwwLDAsMCwKLSAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LAotICAgIDk1LDk5LDExMSwxMDAsMTAxLDE2NSwzLDAsMCwxMTUsOTgsMCwwLDAsMCw3LAotICAgIDE1LDEsNiwxLDMsMSwxNiwxLDEzLDEsMTEsMiwzLDEsMTksMSwKLSAgICAxMywxLDUsMiwxNiwxLDMsMSwxOSwxLDEzLDEsNSwyLDMsMSwKLSAgICAxMiwxLDMsMSwxMywxLDE5LDEsNSwyLDksMSw3LDEsMTUsMSwKLSAgICAxNSwxLDE2LDEsNiwxLDcsMSw0LDIsNiwxLDE4LDEsMTUsMSwKLSAgICAxNSwxLDYsMSwxMiwxLDksMSwxMywxLDIyLDEsMTIsMSwxMiwxLAotICAgIDE5LDEsMjUsMSwyMiwxLDMsMSwxOSwxLDE3LDEsMTMsMSw4LDEsCi0gICAgMTE3LDIxLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICA4Myw0MCwxLDAsMCwwLDExNywwLDEsMCwwLDY3LDExMSwxMTAsOTksMTE0LAotICAgIDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCi0gICAgMTExLDExMCwzMiwxMTEsMTAyLDMyLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LAotICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4MiwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsNjksMTIwLDEwMSw5OSwKLSAgICAxMTcsMTE2LDEwNSwxMTEsMTEwLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiw4MiwxMDEsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCi0gICAgMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDMyLDExNiwKLSAgICAxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsCi0gICAgMTAwLDEwMSw0NiwzMiw4NSwxMTUsMTAxLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMDAsMTA1LDk5LDExNiw5NywxMTYsMTAxLDEwMCwzMiwKLSAgICA5OCwxMjEsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDMyLDExNywxMTUsMTAxLDExNSwKLSAgICA0NywxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MCwxLDAsMCwwLAotICAgIDExNywxMiwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsCi0gICAgOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsCi0gICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKLSAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjI3LDMsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsOCwxMTcsMjQsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3OCw0MCwxMCwwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksCi0gICAgMTAxLDk1LDk1LDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwKLSAgICAxMDksMTAxLDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwKLSAgICAxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LAotICAgIDExNiw5NywxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTcsMTEsCi0gICAgMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMSwKLSAgICAwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LAotICAgIDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAotICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAotICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLAotICAgIDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTA0LAotICAgIDMsMCwwLDExNSwxNCwwLDAsMCwxNiwyLDEyLDYsMTIsMTIsMTIsMTAsCi0gICAgMTIsOSwxMiwyMiwxMiw2MiwxMTcsMTIsMCwwLDAsODMsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsMTE1LDkyLDAsMCwKLSAgICAwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCisgICAgNDAsMiwwLDAsMCwxMTcsMTUwLDAsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsCisgICAgOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKKyAgICAxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsCisgICAgMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LAorICAgIDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgNzgsMTE0LDQsMCwwLDAsNDAsMywwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDM1LDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjQ1LDAsMCwwLDE5NSwzLAorICAgIDAsMCwxMTUsMCwwLDAsMCwxMTcsMjEsMCwwLDAsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LAorICAgIDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDE2LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMSwxOSwwLDEyNCwwLDAsCisgICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCw4NywxMTAsNTgsMCwKKyAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxMjUsNCwwLDEsMTIyLAorICAgIDI2LDAsMTE2LDMsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAxLDEyNCw0LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMywwLDEwMCwzLDAsMTI1LAorICAgIDQsMCwxMjYsNCwwLDg4LDExMCwxLDAsODgsMTE2LDQsMCwxMjQsMywwLAorICAgIDEzMSwxLDAsODMsNDAsNCwwLDAsMCwxMTcsNTIsMCwwLDAsNjcsMTExLAorICAgIDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw0NiwxMTcsMzksMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLAorICAgIDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwKKyAgICAxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDExNCw3MSwKKyAgICAwLDAsMCw3OCw0MCw1LDAsMCwwLDExNCwxNjMsMCwwLDAsMjQ0LDgsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTQsNDAsMCwwLDAsCisgICAgMTE0LDE1NywwLDAsMCwxMTQsMjEzLDAsMCwwLDQwLDUsMCwwLDAsMTE0LAorICAgIDc1LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwyMTEsCisgICAgMCwwLDAsMjQ0LDMsMCwwLDAsMTAxLDEyMCw5OSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjIwLDAsMCwwLDIwMiwKKyAgICAzLDAsMCwxMTUsMTQsMCwwLDAsMCwyLDE1LDEsMywxLDE5LDEsCisgICAgMTgsMSw5LDEsMzEsMSwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDI0NCw5LDAsMCwwLDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsCisgICAgMTE0LDI5LDAsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw0LDAsCisgICAgMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDMxLDAsMCwwLDExNiwKKyAgICAwLDAsMTE2LDEsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMiwKKyAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMjQsMywwLDEzMSw0LDIsODMsNDAsNSwKKyAgICAwLDAsMCwxMTcsMTMwLDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LAorICAgIDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDM5LDEwMCw5NywxMTYsOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LAorICAgIDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwKKyAgICAxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsCisgICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDI0MCwwLDAsMCwyNDQsCisgICAgMTIsMCwwLDAsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKKyAgICA4NCwxMTQsMTAzLDAsMCwwLDQwLDIsMCwwLDAsMTE0LDk5LDAsMCwwLAorICAgIDI0NCw3LDAsMCwwLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQsMCwwLAorICAgIDAsMTE0LDc1LDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgMTE0LDI0OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyNDQsMTQsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKKyAgICAxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIxMiwzLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAwLDUsMTgsMSwxMTcsMjcsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsCisgICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwKKyAgICAwLDQ1LDAsMCwwLDY3LDAsMCwwLDExNSwxNzcsMSwwLDAsMTI0LDAsCisgICAgMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLDAsCisgICAgMTI1LDMsMCwxMjEsMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCisgICAgNCwwLDg3LDExMCwyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsMCwKKyAgICAxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwxOSwKKyAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsMCwKKyAgICA4NywxMTAsMTgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsMSwKKyAgICAxLDg5LDExMCwxNjIsMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwyNSwKKyAgICAxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwKKyAgICA0LDAsMTMxLDEsMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwKKyAgICAxMDcsMTAsMCwxMTQsMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwzNCwKKyAgICAwLDExNiw4LDAsMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsMCwKKyAgICAxMjQsMSwwLDEwMCw1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsODcsCisgICAgMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDIyMCwwLDEsMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCw2LAorICAgIDAsMTI0LDQsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsNywKKyAgICAwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsMCwKKyAgICAxMjQsMiwwLDEzMSwxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLDAsCisgICAgMTMxLDEsMCwxMjUsOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwxMjQsCisgICAgMiwwLDEzMSwyLDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwyLAorICAgIDAsMTMxLDIsMCwxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzMsMSwxMjQsCisgICAgNCwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMTczLDEsMTI0LDMsMCwxMDAsMSwKKyAgICAwLDEwNyw5LDAsMTE0LDE3MywxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsMCwKKyAgICAxMTYsMTcsMCwxMjQsOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyMSwKKyAgICAzNiwwLDEyNCwwLDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCw2LAorICAgIDAsMTMxLDMsMCwxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLDIsCisgICAgMCwxLDg3LDExMywxNzMsMSw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDE2OSwxLAorICAgIDEsMSwxLDg5LDExMywxNzMsMSw4OCwxMTAsMCwwLDEyNCw5LDAsODMsNDAsCisgICAgMTEsMCwwLDAsMTE3LDE5MCwwLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiwKKyAgICA4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsMTkzLDAsMCwwLDExNCwxOTcsMCwKKyAgICAwLDAsMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsMCwxMTcsMTMsMCwwLAorICAgIDAsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsMTE0LDEyNSwKKyAgICAwLDAsMCwxMTQsMTI2LDAsMCwwLDExNywxOSwwLDAsMCw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsCisgICAgMTE3LDEwLDAsMCwwLDExOSwxMTQsMTExLDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNDAsCisgICAgMTksMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTE3LDAsMCwwLDExNCwxMDksCisgICAgMCwwLDAsMTE0LDI0NCwwLDAsMCwxMTQsMjQyLDAsMCwwLDExNCwxNCwwLAorICAgIDAsMCwxMTQsMjQ3LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsMjAwLDAsMCwKKyAgICAwLDExNCwxNTcsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTM3LDAsMCwwLAorICAgIDExNCwyMDUsMCwwLDAsMTE0LDI1MiwwLDAsMCwxMTQsNywwLDAsMCwyNDQsCisgICAgMTksMCwwLDAsMTAwLDExMSwxMTAsMTE2LDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIwOCwwLDAsMCwxMTQsMzEsMCwwLAorICAgIDAsMTE0LDI0NiwwLDAsMCw0MCwxMCwwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDE3OCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwxOTgsMCwwLDAsMTE0LAorICAgIDEyNSwwLDAsMCwyNDQsMiwwLDAsMCwxMTUsMTE2LDExNCw1MiwwLDAsMCwKKyAgICAyNDQsMTAsMCwwLDAsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE0LAorICAgIDIxMSwwLDAsMCwxMTYsMTEsMCwwLDAsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LAorICAgIDEwNiwxMDEsOTksMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwyMTksMCwwLDAsMjIwLDMsMCwwLDExNSw3OCwwLDAsCisgICAgMCwwLDcsMTUsMSw2LDEsMywxLDE2LDEsMTMsMSwxMSwyLDMsCisgICAgMSwxOSwxLDEzLDEsNSwyLDE2LDEsMywxLDE5LDEsMTMsMSw1LAorICAgIDIsMywxLDksMSwxMiwxLDEzLDEsMTksMSw1LDIsOSwxLDcsCisgICAgMSwxNSwxLDYsMSw3LDEsMTUsMSwxOCwxLDEzLDEsMjIsMSwxMiwKKyAgICAxLDksMSwxNSwxLDMsMSwxOSwxLDE3LDEsMTMsMSw4LDEsMTE3LAorICAgIDIxLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNzgsMTE0LDEyMywwLDAsMCw0MCwKKyAgICAxMCwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw1NywKKyAgICAwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDQsMCwwLDAsMTE0LDI0NiwwLAorICAgIDAsMCwxMTQsMjQ1LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDI1MiwwLDAsCisgICAgMCwxMTQsMjE5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyNDEsMCwwLDAsMTYyLAorICAgIDMsMCwwLDExNSwxNCwwLDAsMCwxMiwyLDEyLDgsMTIsMTMsMTIsMTAsCisgICAgMTIsNywxMiwxMCwxOCw4LDExNCwyNDEsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwwLDAsMCwwLAorICAgIDExNSw4OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsCiAgICAgMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwKICAgICA5MCw0LDAsMTAxLDUsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDQsMCwxMDAsCiAgICAgNSwwLDEzNCwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDUsMCwxMDAsNiwKICAgICAwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDAsOCwwLAogICAgIDEwMCw5LDAsMTMyLDAsMCw5MCw4LDAsMTM1LDAsMCw4Myw0MCwxMCwwLAotICAgIDAsMCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMCwwLDI0NCwxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKICAgICAxMTQsMTE3LDEwMywwLDAsMCw2Niw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKICAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LAogICAgIDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwKQEAgLTIzNTYsMzA0ICsyMDg5LDIwNCBAQAogICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCiAgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwKICAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQ2LDc4LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMywwLDAsMCwxMTcsCi0gICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCi0gICAgMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsCi0gICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKLSAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKLSAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDI0MywzLDAsMCwxMTUsNCwwLDAsMCwKLSAgICAwLDMsOSwxLDExNywxOSwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywwLDAsCi0gICAgMCwxMTUsMjIsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDIsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwKLSAgICAwLDExNywyNiwwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCi0gICAgNDAsMywwLDAsMCwxMTcsNSwwLDAsMCwxMTUsMTE3LDExMiwxMDEsMTE0LDExNywKLSAgICAxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLAotICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDIsCi0gICAgMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwKLSAgICAwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsMCwwLDExNyw5LAotICAgIDAsMCwwLDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDQwLDAsMCwwLAotICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCi0gICAgOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwyNDksMywwLDAsMTE1LDIsMCwwLDAsMCw1LDExNywyMiwKLSAgICAwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKLSAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywKLSAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDAsMSwwLDAsMCwxMTcsCi0gICAgNTgsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLAotICAgIDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MCwxLAotICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDIsMCwwLAotICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwKLSAgICAxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAotICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCi0gICAgOTcsMTEyLDYyLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCi0gICAgMTEwLDk3LDEwOSwxMDEsMCw0LDAsMCwxMTUsMiwwLDAsMCwwLDMsMTE3LAotICAgIDIzLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsCi0gICAgMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDMsMCwwLDAsOCwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNDEsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMzEsMiwwLDE0MywxNywwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMiwwLAotICAgIDEzMSwwLDAsODMsODcsMTAwLDIsMCw4MSw4OCwxMDAsMiwwLDgzLDQwLDMsCi0gICAgMCwwLDAsMTE3LDM5LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsMTIxLDExNiwxMDEsMTE1LDQ2LDExNywKLSAgICAxLDAsMCwwLDExNCw3OCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLAotICAgIDk1LDEwNSwxMTEsMTE3LDYsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzMsNzksMTE3LDQsCi0gICAgMCwwLDAsMTE0LDEwMSw5NywxMDAsNDAsMywwLDAsMCwxMTcsNCwwLDAsCi0gICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsCi0gICAgMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCi0gICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKLSAgICA5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKLSAgICA1LDQsMCwwLDExNSw0LDAsMCwwLDAsMiwyMSwxLDExNywxOSwwLAotICAgIDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTAwLDk3LDExNiw5Nyw0MCw5LDAsMCwwLDExNyw4LDAsMCwwLDk1LAotICAgIDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywKLSAgICAxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSwKLSAgICA5OSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCi0gICAgMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLAotICAgIDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsMSwKLSAgICAwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LAotICAgIDk1LDk1LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsOSwwLDAsCi0gICAgMCw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTcsMjksMCwwLDAsNjAsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKLSAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwKLSAgICAwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwyMzgsMywwLDAsMTE1LAotICAgIDEwLDAsMCwwLDE2LDMsNiwyLDEyLDYsMjQsNywxOCw1LDExNywxMCwKLSAgICAwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NiwwLAotICAgIDAsMCwxMTUsNjgsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKLSAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMDAsOCwwLDEwMCw5LAotICAgIDAsMTMyLDAsMSw5MCw2LDAsMTAwLDEwLDAsODMsNDAsMTEsMCwwLDAsCi0gICAgMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDYyLDAsMCwwLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCi0gICAgMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzksMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwKLSAgICAwLDEwNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEwMCwxLDAsNTQsMTI0LDIsCi0gICAgMCwxMDYsMywwLDEwMCwyLDAsNTQsODMsNDAsMywwLDAsMCwxMTcsMzMsCi0gICAgMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLAotICAgIDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDQ2LDExNyw1LDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDQsCi0gICAgMCwwLDAsMTE1LDEwNSwxMjIsMTAxLDQwLDQsMCwwLDAsMTE3LDMsMCwwLAotICAgIDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LDExNiwxMTcsOCwwLAotICAgIDAsMCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDcsMCwwLDAsMTE1LAotICAgIDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwKLSAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDIsMCwKLSAgICAwLDAsMTE1LDExNiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAotICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAotICAgIDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTUsCi0gICAgNCwwLDAsMTE1LDQsMCwwLDAsMCwyLDE1LDEsMTE3LDI3LDAsMCwKLSAgICAwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw1LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw4MSwwLDAsMCwxMjEsMjIsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDEwNiwyLDAsMTI1LDQsMCw4NywxMTAsMjQsMCw0LAotICAgIDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ4LDAsMSwxLDEsMTAwLDEsMCwxMjUsCi0gICAgNCwwLDg5LDExMCwxLDAsODgsMTI0LDQsMCwxMDAsMiwwLDc5LDEyNSw0LAotICAgIDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMywwLAotICAgIDEyNCw0LDAsMTMxLDIsMSw4Myw0MCw0LDAsMCwwLDc4LDEwNSwxODIsMSwKLSAgICAwLDAsMTA1LDEyOCwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMDksMTExLDEwMCwKLSAgICAxMDEsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LAotICAgIDAsMCwwLDExNSwxMTYsOTcsMTE2LDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTA5LAotICAgIDExMSwxMDAsMTAxLDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwxMTcsCi0gICAgOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDUsMCwwLAotICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywxMSwwLDAsMCwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMywwLDAsMCw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsCi0gICAgMCwxMDAsOTcsMTE2LDk3LDExNyw0LDAsMCwwLDEwOSwxMTEsMTAwLDEwMSw0MCwwLAotICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCi0gICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCw5NSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIwLDQsCi0gICAgMCwwLDExNSwxMiwwLDAsMCwwLDIsMywxLDIyLDEsMTMsMSwxMSwKLSAgICAzLDEwLDEsMTE3LDMyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsNSwwLDAsMCw5NSwxMDksMTExLAotICAgIDEwMCwxMDEsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsCi0gICAgOSwwLDAsMCwxOCwwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLAotICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsCi0gICAgMTI1LDUsMCwxMDMsMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsCi0gICAgODAsMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsCi0gICAgMCwwLDEyNCw0LDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywKLSAgICAwLDEyNCw2LDAsMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsCi0gICAgMCw4NywxMjAsMTMyLDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsCi0gICAgMTE4LDAsMTI1LDcsMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwKLSAgICAwLDEyNSw0LDAsMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsCi0gICAgMTMxLDEsMCwxLDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCi0gICAgMTU1LDAsMSwxLDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLAotICAgIDEwNywxMCwwLDExNCwyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwKLSAgICAwLDEwMCwxLDAsMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwKLSAgICAwLDgzLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsCi0gICAgODgsMTEzLDk0LDAsODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LAotICAgIDEsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLAotICAgIDMsMCwxMjQsMSwwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LAotICAgIDAsMTA3LDEwLDAsMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LAotICAgIDksMCwxMDAsMSwwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsCi0gICAgODksMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwKLSAgICAwLDg4LDEwMCwyLDAsODMsNDAsNCwwLDAsMCwxMTcsMjcsMCwwLDAsCi0gICAgODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LAotICAgIDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDExNywyNywwLDAsMCwKLSAgICA5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLAotICAgIDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDc4LDExNywxMiwwLDAsCi0gICAgMCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQwLDExLDAsCi0gICAgMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwKLSAgICAxMDUsMTE2LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwKLSAgICAxMDUsMTE0LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDgsMCwKLSAgICAwLDAsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwxMTcsMTAsMCwwLDAsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDExNywzLDAsMCwwLDk1LDExMSwKLSAgICAxMTUsMTE3LDUsMCwwLDAsMTA5LDEwNywxMDAsMTA1LDExNCwxMTcsMTUsMCwwLDAsCi0gICAgNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LAotICAgIDcsMCwwLDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNywxNiwwLDAsMCwKLSAgICA5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKLSAgICAxMTcsMTMsMCwwLDAsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwKLSAgICAxMDUsOTksNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCi0gICAgMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LAotICAgIDExNiw5NywxMTcsNSwwLDAsMCw5NSwxMDksMTExLDEwMCwxMDEsMTE3LDYsMCwwLAotICAgIDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywKLSAgICAxMTQsMTE2LDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE0LDExNiwxMTcsMywwLDAsCi0gICAgMCwxMDEsMTIwLDk5LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCi0gICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCi0gICAgMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMSw0LDAsCi0gICAgMCwxMTUsMzgsMCwwLDAsMCwyLDE4LDEsNiwyLDIyLDEsMTgsMSwKLSAgICAxNywyLDE5LDEsMTUsMSwzLDEsMTcsMSwxMywyLDcsMSwxOCwzLAotICAgIDE2LDEsMjcsMSwzLDEsMTYsMSwxNywxLDE4LDIsMTE3LDI1LDAsMCwKLSAgICAwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw3OCw0MCw3LDAsMCwwLAotICAgIDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLAotICAgIDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLAotICAgIDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwKLSAgICAwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTAsMCwwLDAsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywxNSwwLDAsMCw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw4LDAsMCwKLSAgICAwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsMSwwLDAsMCwxMTcsMTAsCi0gICAgMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwKLSAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKLSAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTEsNCwKLSAgICAwLDAsMTE1LDgsMCwwLDAsMTYsMiw2LDIsMTIsNSwxMiwxMSwxMTcsCi0gICAgMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCi0gICAgMCwyLDAsMCwwLDY2LDAsMCwwLDExNSw2MiwwLDAsMCwxMjQsMCwKLSAgICAwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAotICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKLSAgICAxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsCi0gICAgNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsODMsNDAsOSwwLDAsCi0gICAgMCwxMTcsMjAsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDQ1LDAsMCwwLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA0LDk3LDExMCwxMDAsCi0gICAgMTA4LDEwMSwxMTUsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0Niw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxOSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDAsCi0gICAgMSwwLDEwMCwyLDAsMTMxLDEsMSw4Myw0MCwzLDAsMCwwLDc4LDExNywKLSAgICAxMCwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw4NCw0MCwKLSAgICAyLDAsMCwwLDExNywxMiwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSw0MCwyLAotICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsCi0gICAgMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLAotICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNjQsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDExNywzMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLAorICAgIDExNCw0Niw3OCw0MCwyLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMzUsMCwKKyAgICAwLDAsNDAsMywwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMTE0LDc2LDAsMCwwLDIxLDQsMCwwLDExNSw0LAorICAgIDAsMCwwLDAsMyw5LDEsMTE3LDE5LDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTI0LAorICAgIDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLAorICAgIDEsMCwwLDAsMTE3LDI2LDAsMCwwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0Niw0MCwzLDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDAsMSwKKyAgICAwLDAsMTE0LDIxOCwwLDAsMCw0MCwyLDAsMCwwLDExNCw3NSwwLDAsCisgICAgMCwxMTQsMTc4LDAsMCwwLDQwLDEsMCwwLDAsMTE0LDE1MCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjE4LDAsMCwwLDI3LAorICAgIDQsMCwwLDExNSwyLDAsMCwwLDAsNSwxMTcsMjIsMCwwLDAsNzAsCiAgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCw2LDAsCi0gICAgMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDEzOCwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsCi0gICAgMTA2LDIsMCwxMjQsMSwwLDEyNCwzLDAsMTI0LDIsMCwxMDAsMCwwLDEzMSwKLSAgICA0LDAsMTI1LDQsMCwxMTYsNCwwLDEwNiw1LDAsMTI0LDQsMCwxMzEsMSwKLSAgICAwLDEyNSw1LDAsMTE2LDYsMCwxMjQsNSwwLDExNiw3LDAsMTMxLDIsMCwKLSAgICAxMTQsMTAxLDAsMTE2LDgsMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLAotICAgIDEyNCw1LDAsODMsMTE2LDksMCwxMDAsMiwwLDEwNiwxMCwwLDEyNCwyLDAsCi0gICAgMTMxLDEsMCwxMDAsMywwLDEyNCwxLDAsMTAwLDQsMCwxMjQsMiwwLDEzMSwKLSAgICAxLDIsMTMwLDEsMCwxMDAsMCwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LAotICAgIDIxLDAsMCwwLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwKLSAgICAxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsMTE3LDIxLDAsMCwwLDc4LDExMSwKLSAgICAxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsCi0gICAgMzIsMTIzLDEyNSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsCi0gICAgMCwxMTIsOTcsMTE2LDEwNCw0MCwxMSwwLDAsMCwxMTcsMTIsMCwwLDAsMTAzLAotICAgIDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLAotICAgIDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwKLSAgICAxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKLSAgICAxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDcsMCwwLDAsMTA5LAotICAgIDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsNSwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMTUsCi0gICAgMTE3LDEwLDAsMCwwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMTE3LAotICAgIDEwLDAsMCwwLDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTcsMTYsCi0gICAgMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LAotICAgIDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDAsNiwKLSAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLAotICAgIDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywKLSAgICAxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLAotICAgIDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwKLSAgICAxMTEsMTE3LDExMCwxMDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKLSAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKLSAgICAxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw2Nyw0LDAsCi0gICAgMCwxMTUsMTgsMCwwLDAsMCwxLDE1LDEsMTUsMSwyNCwxLDE1LDEsCi0gICAgMTUsMSwxMywxLDQsMiwxOCwxLDExNywyOSwwLDAsMCw4MywxMTEsMTE3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsCisgICAgMCwwLDEwNiwwLDAsODMsNDAsMSwwLDAsMCwxMTcsNTgsMCwwLDAsCisgICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MCwxLDAsMCwwLDExNCwKKyAgICAzNSwwLDAsMCw0MCwyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsMTc4LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDExNCwxNjMsMCwwLDAsMzQsNCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwzLDExNywyMywwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDgsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQxLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwKKyAgICAwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsCisgICAgMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLDAsODEsODgsMTAwLDIsMCwKKyAgICA4Myw0MCwzLDAsMCwwLDExNywzOSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLAorICAgIDExNSw0NiwyNDQsMSwwLDAsMCwxMTQsNzgsNDAsMywwLDAsMCwxMTQsNDgsCisgICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNiw0LDAsMCwwLDExNCwxMDEsOTcsCisgICAgMTAwLDQwLDMsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICAxMTQsNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDI0NywwLDAsMCwzOSw0LDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDIsMjEsMSwxMTcsMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsOSwKKyAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw1NywwLAorICAgIDAsMCwxMTQsNTgsMCwwLDAsMTE0LDc2LDAsMCwwLDExNCwxNzYsMCwwLAorICAgIDAsMTE0LDIxOCwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwyNDcsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsNDAsMSwwLDAsMCwxMTQsCisgICAgMTUwLDAsMCwwLDExNCw1LDAsMCwwLDExNCwwLDEsMCwwLDE2LDQsCisgICAgMCwwLDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw2LDI0LDcsMTgsCisgICAgNSwxMTQsMCwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSw2NCwwLDAsMCwKKyAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAorICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCisgICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwKKyAgICAxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMSw5MCw2LDAsMTAwLDEwLDAsODMsCisgICAgNDAsMTEsMCwwLDAsMjQ0LDE2LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDYyLDAsMCwwLDY3LAorICAgIDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzksMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsCisgICAgMTMxLDEsMCwxMjUsMiwwLDEwNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEwMCwKKyAgICAxLDAsNTQsMTI0LDIsMCwxMDYsMywwLDEwMCwyLDAsNTQsODMsNDAsMywKKyAgICAwLDAsMCwxMTcsMzMsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LDExNCwxOTMsMCwwLDAsMTE0LDE5NCwKKyAgICAwLDAsMCw0MCw0LDAsMCwwLDExNCwzLDAsMCwwLDExNCwzOSwwLAorICAgIDAsMCwyNDQsOCwwLDAsMCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE2LAorICAgIDcsMCwwLDAsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDAsMywwLDAsMCwKKyAgICAxMTQsNzUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwyNTQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI0NCwKKyAgICAwLDAsMCw0OSw0LDAsMCwxMTUsNCwwLDAsMCwwLDIsMTUsMSwKKyAgICAxMTcsMjcsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsCisgICAgOTksNCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEzMSwxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMjQsCisgICAgMywwLDEwMCwxLDAsMTI0LDQsMCwxMzEsMiwxLDgzLDQwLDIsMCwwLAorICAgIDAsNzgsMjQ0LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDQwLDIsMCwwLAorICAgIDAsMTE0LDEyOSwwLDAsMCwxMTQsMjQ1LDAsMCwwLDQwLDUsMCwwLDAsCisgICAgMTE0LDc1LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsCisgICAgNTIsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDExNCwyNDYsMCwwLDAsNTQsNCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTE3LDMyLDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsCisgICAgNCwxLDAsMCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLDAsMSwwLAorICAgIDAsMCw5LDAsMCwwLDE4LDAsMCwwLDY3LDAsMCwwLDExNSw1MywKKyAgICAxLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LAorICAgIDQsMCwxMjUsNSwwLDEwMywwLDAsMTI1LDYsMCwxMjAsNTQsMCwxMjQsNCwKKyAgICAwLDExNCw4MCwwLDExNiwxLDAsMTI0LDQsMCwxMzEsMSwwLDEyLDExNCw4MCwKKyAgICAwLDExNiwwLDAsMTI0LDQsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLAorICAgIDEyNSw3LDAsMTI0LDYsMCwxMDYsMiwwLDEyNCw3LDAsMTMxLDEsMCwxLAorICAgIDExMywyNywwLDg3LDEyMCwxMzIsMCwxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCwKKyAgICA2OCw5MywxMTgsMCwxMjUsNywwLDExNiw0LDAsMTI0LDQsMCwxMjQsNywwLAorICAgIDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LAorICAgIDQsMCwxMzEsMSwwLDEsODcsMTEzLDk0LDAsNCwxMTYsNywwLDEwNywxMCwKKyAgICAwLDExNCwxNTUsMCwxLDEsMSwxMTksOTQsMCw4OSwxMTMsOTQsMCw0LDExNiwKKyAgICA4LDAsMTA3LDEwLDAsMTE0LDIxMSwwLDEsMTI1LDgsMCwxLDEyMiwyNSwwLAorICAgIDExNiw5LDAsMTAwLDEsMCwxMjQsNCwwLDEyNCw4LDAsMTMxLDMsMCwxLAorICAgIDEwMCwyLDAsODMsODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LAorICAgIDgsMCw4OCwxMTMsOTQsMCw4OCwxMTMsOTQsMCw4NywxMjEsMzMsMCwxMTYsMTAsCisgICAgMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEsMTE2LDksCisgICAgMCwxMDAsMywwLDEyNCwxLDAsMTMxLDIsMCwxLDg3LDExMCw1MywwLDQsCisgICAgMTE2LDgsMCwxMDcsMTAsMCwxMTQsNDgsMSwxLDEyNSw4LDAsMSwxMjIsMjEsCisgICAgMCwxMTYsOSwwLDEwMCwxLDAsMTI0LDEsMCwxMjQsOCwwLDEzMSwzLDAsCisgICAgMSw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LAorICAgIDExMCwxLDAsODgsMTAwLDIsMCw4Myw0MCw0LDAsMCwwLDExNywyNywwLAorICAgIDAsMCw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwMCw5NywKKyAgICAxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTE3LDI3LDAsCisgICAgMCwwLDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LAorICAgIDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsNzgsMTE3LDEyLAorICAgIDAsMCwwLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDAsCisgICAgMTEsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsMTY1LAorICAgIDAsMCwwLDExNCwzMywwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDMsMCwKKyAgICAwLDAsMTE2LDUsMCwwLDAsMTA5LDEwNywxMDAsMTA1LDExNCwyNDQsMTUsMCwwLAorICAgIDAsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDQwLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDU0LDAsMCwwLDQwLAorICAgIDksMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNTIsCisgICAgMCwwLDAsMTE0LDQsMSwwLDAsMjQ0LDYsMCwwLDAsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiwxMTQsMTE2LDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwKKyAgICAwLDAsMTE0LDI0OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwxMTQsMjQ1LDAsMCwwLDU5LDQsMCwwLDExNSwKKyAgICAzOCwwLDAsMCwwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsCisgICAgMTksMSwxNSwxLDMsMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwKKyAgICAyNywxLDMsMSwxNiwxLDE3LDEsMTgsMiwxMTcsMjUsMCwwLDAsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQwLDcsMCwwLDAsMTE0LDU2LAorICAgIDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsCisgICAgMCwwLDExNCwyNDQsMCwwLDAsMTE0LDI0NiwwLDAsMCwxMTQsMjQ1LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDExNCwyLDEsMCwwLDQ1LDQsMCwwLDExNSw4LAorICAgIDAsMCwwLDEyLDIsNiwyLDEyLDUsMTIsNSwxMTQsMiwxLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDAsMCwwLDAsMTE1LDY0LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEzNSwwLDAsMTAyLAorICAgIDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCw5MCw0LDAsMTAwLDQsCisgICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwKKyAgICAxMzIsMCwwLDkwLDYsMCwxMzUsMCwwLDgzLDQwLDgsMCwwLDAsMjQ0LAorICAgIDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw0NSwwLDAsMCw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCisgICAgMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKKyAgICAzMiwwLDAsMCwxMTYsMCwwLDEzMSwwLDAsMTA2LDEsMCwxMjQsMSwwLAorICAgIDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwyLDAsMTI0LDEsMCw5NSwzLDAsCisgICAgMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDQsMCwwLDAsMTE0LAorICAgIDE0OCwwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDIzOCwKKyAgICAwLDAsMCw0MCwyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsMTYxLDAsCisgICAgMCwwLDQwLDEsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwxMTQsMjM5LDAsMCwwLDkyLDQsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMSwxNiwxLDExNywzOCwwLDAsMCw4MywxMTEsMTE3LAogICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMzksMCwKLSAgICAwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNywKLSAgICA0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwKLSAgICAwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsCi0gICAgOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCi0gICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKLSAgICAxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc5LDQsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMzEsMCwwLDAsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCw3LAotICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LAotICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsCi0gICAgMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCi0gICAgMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLAotICAgIDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLAotICAgIDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsCi0gICAgMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwKLSAgICAwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLAotICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDYwLDQsMCwwLDExNSw4LDAsMCwwLDE2LDIsNiwyLDEyLDMsCi0gICAgMTIsMTIsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwKLSAgICAxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDUsMCwwLDAsNjYsMCwwLDAsCi0gICAgMTE1LDEwNCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwKKyAgICAxMTQsNDYsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKKyAgICA2LDAsMCwwLDY3LDAsMCwwLDExNSw3NiwwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiwyLDAsMTI0LDMsCisgICAgMCwxMDAsMSwwLDEyNCwxLDAsMTAwLDIsMCwxMjQsMiwwLDEzMSwxLDIsCisgICAgMTI1LDQsMCwxMTYsMywwLDEyNCw0LDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwKKyAgICAzLDAsMTI0LDIsMCwxMzEsMSwyLDgzLDQwLDQsMCwwLDAsNzgsMTE0LAorICAgIDcxLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTI1LDAsMCwwLDQwLDQsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwyMDAsMCwKKyAgICAwLDAsMTE0LDIwNSwwLDAsMCw0MCw1LDAsMCwwLDExNCw3NSwwLDAsCisgICAgMCwxMTQsMTc4LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNTIsMCwwLDAsCisgICAgMTE0LDI1NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMjE5LDAsMCwwLDk2LDQsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMSwxNSwxLDE1LDEsMjQsMSwxMTcsMjksMCwwLDAsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDM5LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDMyLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLAorICAgIDAsNDAsMiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDE3OCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMjIwLDAsMCwwLDEwMiw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LAorICAgIDMxLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNDAsNywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsCisgICAgMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDIzOSwwLDAsCisgICAgMCwxMTQsMjE5LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsNDAsMSwwLDAsMCwxMTQsMTUwLDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCw3LDEsMCwwLDg4LDQsMCwwLDExNSw4LDAsCisgICAgMCwwLDEyLDIsNiwyLDE4LDQsMTIsNiwxMTQsNywxLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDY0LDAsMCwwLDExNSwxMDAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLAogICAgIDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywKICAgICAwLDEzMiwwLDAsOTAsNCwwLDEwMSw1LDAsMTAxLDYsMCwxMDEsNywwLAogICAgIDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsCiAgICAgMSwwLDkwLDgsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw5LAogICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTAsMCwKICAgICAxMDAsMTEsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDEyLDAsODMsNDAsMTMsMCwKLSAgICAwLDAsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgMCwwLDI0NCwxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAogICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsOTMsMCwwLDAsNzYsCiAgICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAogICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwKQEAgLTI2NjQsMTA2ICsyMjk3LDc2IEBACiAgICAgMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsCiAgICAgMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsCiAgICAgMiwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDAsMSwwLDAsCi0gICAgMCw3OCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLAotICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDMsMCwwLDAsMTE3LDQsCi0gICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLAotICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwKLSAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCi0gICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk2LDQsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTE3LAotICAgIDI4LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKLSAgICA5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxMCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMTc1LDAsMCwwLDEyNCwxLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEwNyw2LDAsMTI1LDIsMCwxMjEsMTA3LDAsMTE2LDIsMCwxMTYsCi0gICAgMywwLDEwNiw0LDAsMTI0LDEsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDMsCi0gICAgMCwxMjUsMywwLDExNiw2LDAsMTAwLDEsMCwxMjQsMCwwLDEwNiw1LDAsCi0gICAgMTMxLDIsMCwxLDEyNCwwLDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMTE0LDExNywwLDExNiw4LDAsMTI0LDMsMCwxMDAsMiwwLDEzMSwyLDAsMTIsCi0gICAgMTE0LDExNywwLDExNiw5LDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwxLDAsMTAwLAotICAgIDMsMCwyNSwxMDMsMSwwLDEyNCwzLDAsOTUsMTAsMCwxMTAsMCwwLDEyNCwKLSAgICAzLDAsODMsODcsMTEwLDQ2LDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsMTYzLAotICAgIDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCwxMTQsMTYzLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsNjEsMTEwLDAsMCwxMzAsMCwwLAotICAgIDg5LDExMCwxLDAsODgsMTAwLDQsMCw4Myw0MCw1LDAsMCwwLDExNywyNSwKLSAgICAwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMTcsMzMsMCwwLAotICAgIDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTA1LAotICAgIDAsMCwwLDAsNzgsNDAsMTEsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LAotICAgIDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywyNSwKLSAgICAwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LAotICAgIDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsNCwwLDAsCi0gICAgMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTAwLAotICAgIDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsCi0gICAgMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsCi0gICAgMTE1LDk3LDEwMywxMDEsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKLSAgICA5NywxMDMsMTAxLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LAotICAgIDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LAotICAgIDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDAsNCwwLDAsCi0gICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLAotICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LAotICAgIDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsCi0gICAgMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMDAsNCwwLDAsCi0gICAgMTE1LDI0LDAsMCwwLDAsNSwxNSwxLDMsMSw5LDEsMTUsMSwxNiwKLSAgICAxLDMxLDEsMjgsMSw4LDEsMywxLDIyLDEsMTMsMSwxMTcsMzEsMCwKLSAgICAwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAotICAgIDAsMCwzLDAsMCwwLDExNSw0OCwwLDAsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTM3LDAsMCwxMTYsMiwKLSAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwKLSAgICAxMTYsMywwLDY4LDEzMSwxLDAsMTMxLDEsMCw4Myw0MCw0LDAsMCwwLAotICAgIDExNyw0OSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLAotICAgIDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsNDYsMTA1LDEsMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw1MSwwLDAsMCwKLSAgICAxMTUsMzEsMCwwLDAsMTI0LDAsMCw5MywyMSwwLDEyNSwxLDAsMTM2LDAsCi0gICAgMCwxMDAsMCwwLDEyNCwxLDAsMjMsMTA3LDIsMCw4NiwxLDExMywzLDAsCi0gICAgMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw3OCw0MCwwLDAsMCwwLDQwLDIsMCwwLAotICAgIDAsMTE3LDIsMCwwLDAsNDYsNDgsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsCi0gICAgMTAyLDEwNSwxMjAsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCwxMDIsMTA1LDEwOCwKLSAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCi0gICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwKLSAgICAwLDAsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDEyMSw0LDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDEsMTE3LDQ5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAwLDc4LDQwLDIsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCw0MCwzLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsNzEsMCwwLDAsCisgICAgMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCw3NiwwLDAsMCwxMTksNCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwxLDksMSwxMTcsMjgsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwxMjYsMCwwLAorICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDEwOCwwLDEsMTE2LDEsCisgICAgMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiw0LDAsCisgICAgMTMxLDMsMCwxMjUsMiwwLDExNiw1LDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwKKyAgICA0LDAsMTMxLDIsMCwxLDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsMTE0LDExMiwwLDExNiw3LDAsMTI0LDIsMCwxMDAsMiwwLDEzMSwyLAorICAgIDAsMTIsMTE0LDExMiwwLDExNiw4LDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLAorICAgIDAsMTAwLDMsMCwyNSwxMDMsMSwwLDEyNCwyLDAsOTUsOSwwLDExMCwwLAorICAgIDAsMTI0LDIsMCw4Myw4NywxMDAsNCwwLDgxLDg4LDEwMCw0LDAsODMsNDAsCisgICAgNSwwLDAsMCwxMTcsMjUsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywxMTAsCisgICAgMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDYsMTE3LDMzLDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLAorICAgIDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDExNCwxNTksMCwwLDAsMTE0LDY3LDAsCisgICAgMCwwLDc4LDQwLDEwLDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LDk5LDAsCisgICAgMCwwLDExNCw5NCwwLDAsMCwxMTYsMTIsMCwwLDAsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMzUsMCwwLDAsMTE0LDEzNywwLAorICAgIDAsMCwxMTQsMTU2LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsMzgsMCwwLAorICAgIDAsMTE0LDE1OSwwLDAsMCw0MCwzLDAsMCwwLDExNCw3NSwwLDAsMCwKKyAgICAxMTQsMTc4LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMjMsNCwKKyAgICAwLDAsMTE1LDE0LDAsMCwwLDAsNSwxMywxLDksMSwxNSwxLDE2LAorICAgIDEsMzEsMSwyOCwxLDExNywzMSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLAorICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsMTE1LDQ4LAorICAgIDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTAwLAorICAgIDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKKyAgICAyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwzLDAsNjgsMTMxLDEsMCwxMzEsCisgICAgMSwwLDgzLDQwLDQsMCwwLDAsMTE3LDQ5LDAsMCwwLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsMjksCisgICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgNCwwLDAsMCw1MSwwLDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsMCwKKyAgICA5MywyMSwwLDEyNSwxLDAsMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsMjMsCisgICAgMTA3LDIsMCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwKKyAgICAwLDExNCw3NiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MCwyLDAsMCwKKyAgICAwLDExNCwyMiwwLDAsMCwyNDQsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDEyMCw0MCwxLDAsMCwwLDI0NCw5LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTQzLAorICAgIDAsMCwwLDEzOSw0LDAsMCwxMTUsMiwwLDAsMCw2LDEsMTE3LDQ5LAorICAgIDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsNDAsNCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM1LAorICAgIDAsMCwwLDExNCwxNDQsMCwwLDAsMjQ0LDE4LDAsMCwwLDY5LDg4LDg0LAorICAgIDY5LDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLAorICAgIDIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsNDAsMSwwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMzYsNCwwLDAsMTE1LDYsMCwwLDAsCisgICAgMCwyLDE5LDEsMTgsMSwxMTcsMzAsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLAogICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LAotICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MCw0LDAsMCwKLSAgICAwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsCi0gICAgMTE2LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywzLDAsMCwwLDk3LAotICAgIDExMCwxMjEsMTE3LDE4LDAsMCwwLDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LAotICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLDIsMCwwLDAsMTE3LDQsCi0gICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwKLSAgICAxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDksCi0gICAgMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNywyOSwwLDAsCi0gICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCi0gICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsCi0gICAgMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE4LDQsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiwxOSwxLDE4LDEsMTE3LDMwLDAsMCwKLSAgICAwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsCi0gICAgMCwwLDExNyw2MywwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDk3LDExNSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LAotICAgIDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsCi0gICAgOTgsMTA2LDEwMSw5OSwxMTYsNDYsNzgsNDAsMSwwLDAsMCwxMTcsNCwwLDAsCi0gICAgMCw3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKLSAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCi0gICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKLSAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAotICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsCi0gICAgMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMjQsNCwwLDAsMTE1LDIsMCwKKyAgICAxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCisgICAgMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw2MywwLDAsCisgICAgMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKKyAgICA5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsCisgICAgNzgsMTE0LDQsMCwwLDAsNDAsMiwwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMjE5LDAsMCwwLDE0Miw0LDAsMCwxMTUsMiwwLAogICAgIDAsMCwwLDIsMTE3LDI4LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAogICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAogICAgIDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCkBAIC0yNzcyLDE2NjEgKzIzNzUsMTI3NyBAQAogICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsCiAgICAgMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LAogICAgIDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsCi0gICAgMTAxLDQ2LDc4LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwKLSAgICAxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LAotICAgIDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLAotICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTI4LDQsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMTcsMzAsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCwxMiwwLDAsMCwxMTcsOCwwLDAsMCwKLSAgICA5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsCi0gICAgOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAotICAgIDk1LDExNywxMSwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTcsMTEsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCi0gICAgMTAxLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LAotICAgIDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwKLSAgICAwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDAsMSwwLDAsMCwKLSAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLAotICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsMCwwLAotICAgIDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDg4LDQsMCwwLDExNSwxNiwwLDAsMCwxNiw2LDYsMiwKLSAgICAxMiw0LDMsMSwzLDEsMjQsMTYsMTIsNiwxMiw0LDExNywxOSwwLDAsCi0gICAgMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCi0gICAgMCwyLDAsMCwwLDY2LDAsMCwwLDExNSwxMzQsMCwwLDAsMTI0LDAsCi0gICAgMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwKLSAgICAwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsCi0gICAgMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLAotICAgIDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsCi0gICAgMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsCi0gICAgMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCw5LDAsMTAwLDE0LDAsMTAwLAotICAgIDE1LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLAotICAgIDAsOTAsMTEsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwwLDkwLDEyLDAsCi0gICAgMTAwLDIwLDAsODMsNDAsMjEsMCwwLDAsMTE3LDE0LDAsMCwwLDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwxMTcsMzgsMSwwLAotICAgIDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LAotICAgIDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LAotICAgIDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsCi0gICAgMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsCi0gICAgMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0Niw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsCi0gICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCwKLSAgICA5NSwxLDAsMTE2LDIsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsNCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LAotICAgIDAsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDYsMCwwLDAsCi0gICAgMTE3LDUsMCwwLDAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE3LDUsMCwwLDAsMTE2LDExNywxMTIsMTA4LDEwMSwxMTcsMTYsCisgICAgMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDc1LDAsCisgICAgMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMTE0LDIyMCwwLDAsMCwxNDYsNCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDExNywzMCwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQwLDEyLDAsMCwwLDExNCwKKyAgICA1NiwwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw1OCwKKyAgICAwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTcwLDAsCisgICAgMCwwLDExNCwxNzMsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMTU2LDAsMCwKKyAgICAwLDExNCwyMTksMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgOCwxLDAsMCwxMTEsNCwwLDAsMTE1LDE2LDAsMCwwLDEyLDYsNiwKKyAgICAyLDEyLDQsMywxLDMsMSwyNCwxMSwxMiw2LDEyLDQsMTE0LDgsMSwKKyAgICAwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCw2NCwwLDAsMCwxMTUsMTMwLDAsMCwwLDEwMSwwLDAsOTAsCisgICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLAorICAgIDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsCisgICAgMCwxMDAsMTEsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwKKyAgICAxMzIsMCwwLDkwLDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLAorICAgIDEwLDAsMTAwLDE2LDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwKKyAgICAwLDEwMCwxOSwwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MCwyMSwKKyAgICAwLDAsMCwyNDQsMTQsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDExNywzOCwxLDAsMCw4MiwxMDEsMTEyLDExNCwxMDEsCisgICAgMTE1LDEwMSwxMTAsMTE2LDExNSwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LAorICAgIDQ2LDMyLDMyLDczLDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LAorICAgIDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA4LDExMSwxMTEsMTA3LAorICAgIDExNSwzMiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzksCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQ2LDMyLAorICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiw5OSwxMDQsOTcsMTEwLDEwMywKKyAgICAxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwKKyAgICAzMiwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsOTksCisgICAgMTExLDEwOSwxMTIsMTE3LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDExNywxMTUsMTA1LAorICAgIDExMCwxMDMsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMzIsCisgICAgMzIsNzAsMTExLDExNCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDQ2LDk5LDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwwLDEyNCwxLDAsMTI0LDAsCisgICAgMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMTYsMiwwLAorICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMCwwLDEzMSwxLDAsMTI0LDAsMCw5NSwKKyAgICA0LDAsMTI0LDMsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDgzLDQwLAorICAgIDEsMCwwLDAsNzgsNDAsNiwwLDAsMCwxMTQsMTM5LDAsMCwwLDI0NCwKKyAgICA1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMzYsMCwwLDAsMjQ0LDE2LAogICAgIDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsMTE3LDE3LDAsMCwwLDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiw5NywKLSAgICAxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEyLDAsMCwwLDk1LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDQsMCwwLDAsMTE3LAotICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksCi0gICAgMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxMSwwLDAsMCwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLAotICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCi0gICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSw5NSwxNDAsNCwwLDAsMTE1LDgsMCwwLDAsMCwxLDksMSwKLSAgICA5LDEsMjEsMSwxMTcsMjMsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LAotICAgIDIsMCwxMjUsMywwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMiwwLDExNCw0MywKLSAgICAwLDEwMCw2LDAsODMsMTI0LDEsMCwxMDAsNSwwLDEwMiwyLDAsODMsNDAsCi0gICAgNywwLDAsMCwxMTcsNjIsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCi0gICAgMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiw5NywxMTQsCi0gICAgMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwxMDEsNDQsCi0gICAgMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywxMTYsMTE2LAotICAgIDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwxMTcsMSwwLDAsMCw0NiwxMTcsMCwwLAotICAgIDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsCi0gICAgOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwKLSAgICA0MCwyLDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw0LDAsCi0gICAgMCwwLDExMiw5NywxMTYsMTA0LDQwLDIsMCwwLDAsMTE3LDUsMCwwLDAsCi0gICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKLSAgICAxMDgsMTAyLDExNyw2LDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTE3LDMsMCwKLSAgICAwLDAsMTAwLDExMSwxMTYsMTE3LDIsMCwwLDAsMTA5LDEwMSw0MCwwLDAsMCwKLSAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTQ2LDQsMCwwLDExNSw4LDAsMCwwLDAsMiwyNywKLSAgICAxLDEyLDIsNCwzLDExNywzOCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwKLSAgICAxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMzEsMCwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsCi0gICAgMiwwLDEwNiwzLDAsMTI0LDEsMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsCi0gICAgNDAsMSwwLDAsMCw3OCw0MCw0LDAsMCwwLDExNywyMywwLDAsMCwKKyAgICA5NywxMTYsMTA0LDI0NCwxNywwLDAsMCw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDI0NCwxMiwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCw0LDAsMCwwLDExNCwKKyAgICA3NSwwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDI0NCwxMSwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzYsMCwKKyAgICAwLDAsMTU4LDQsMCwwLDExNSw4LDAsMCwwLDAsMSw5LDEsOSwKKyAgICAxLDIxLDEsMTE3LDIzLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwKKyAgICAxLDAsMTAwLDEsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLAorICAgIDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsNDMsMCwKKyAgICAxMDAsNiwwLDgzLDEyNCwxLDAsMTAwLDUsMCwxMDIsMiwwLDgzLDQwLDcsCisgICAgMCwwLDAsMTE3LDYyLDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLAorICAgIDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsCisgICAgNDUsMTEwLDk3LDEwOSwxMDEsNDEsMTE0LDEwMSwwLDAsMCwxMTQsMzAsMCwwLDAsCisgICAgMTE0LDcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNTksMCwwLDAsNDAsCisgICAgMiwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LAorICAgIDMyLDAsMCwwLDQwLDQsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw2LAorICAgIDEsMCwwLDI0NCwzLDAsMCwwLDEwMCwxMTEsMTE2LDExNCw4MCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsCisgICAgMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE2NCw0LDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDIsMjcsMSwxMiwyLDQsMywxMTcsMzgsMCwwLAorICAgIDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LAogICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsNywwLDAsMCwxMDMsMTAxLDExNiw5NywKLSAgICAxMTYsMTE2LDExNCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDAsMywwLDAsMCwxMTcsNCwwLDAsCi0gICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDE4LDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDE0LDAsMCwKLSAgICAwLDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDQwLAotICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLAotICAgIDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgMTU2LDQsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLDExNywzMSwwLAotICAgIDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCi0gICAgNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxMDMsMCwwLDAsMTE2LDAsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTA3LDMsMCwxMTQsOTYsMCwxMjQsMCwwLDEwNiwKLSAgICAzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCw5MiwyLAotICAgIDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwwLAotICAgIDExNCw4NCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw2LDAsMTEwLDAsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsNiwKLSAgICAwLDgzLDQwLDEsMCwwLDAsNzgsNDAsNywwLDAsMCwxMTcsNSwwLAotICAgIDAsMCwxMTYsMTE3LDExMiwxMDgsMTAxLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxNywwLDAsCi0gICAgMCw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDExNywxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCwxMTcsNSwwLDAsMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAotICAgIDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKLSAgICA0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsCi0gICAgMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNiwKLSAgICAwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw4LDAsMCwwLDExMCwxMDEsCi0gICAgMTE5LDk1LDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsCi0gICAgOTcsMTE2LDEwMSwxNjAsNCwwLDAsMTE1LDE0LDAsMCwwLDAsMiwxOCwxLAotICAgIDE1LDEsMjcsMywxMiwxLDEyLDEsMTIsMSwxMTcsMjcsMCwwLDAsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwKLSAgICAxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLAotICAgIDEzMSwxLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwyLDAsMCwwLDExNywKLSAgICA0LDAsMCwwLDEwNSwxMTYsMTAxLDExNCwxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSwKLSAgICA5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDQwLDEsMCwwLDAsMTE3LDQsCi0gICAgMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsCi0gICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKLSAgICA5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAotICAgIDE3Miw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDIzLDAsMCwwLAorICAgIDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLAorICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwxLDAsCisgICAgMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDI1LAorICAgIDEyNCwyLDAsMTMxLDIsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDQsMCwKKyAgICAwLDAsMTE0LDE5LDEsMCwwLDExNCw2MSwwLDAsMCwxMTQsNywwLDAsCisgICAgMCwxMTQsMTQwLDAsMCwwLDQwLDMsMCwwLDAsMTE0LDc1LDAsMCwwLAorICAgIDExNiwxOCwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNiwxNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTQsMSwwLDAsMTc0LDQsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLDExNywzMSwwLDAsMCwKICAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCi0gICAgOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwKLSAgICAwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwKLSAgICA4Myw0MCwxLDAsMCwwLDc4LDQwLDIsMCwwLDAsMTE3LDMsMCwwLAotICAgIDAsMTA4LDEwMSwxMTAsMTE3LDEyLDAsMCwwLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LAotICAgIDExNywxMDgsOTcsMTE2LDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKLSAgICAxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCi0gICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKLSAgICA3LDAsMCwwLDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDE3NSw0LDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDEsMTE3LDIyLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSwKLSAgICA5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDAsMiwwLDAsMCwKLSAgICA3OCwxMTcsMjAsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA4MCw5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQwLDIsMCwwLDAsMTE3LAotICAgIDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNSwwLDAsMCw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsCi0gICAgMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LAotICAgIDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwxNzgsNCwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDExNywyMywwLDAsMCw5NSw3OCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTAzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsCisgICAgMCwxMDYsMiwwLDEwNywzLDAsMTE0LDk2LDAsMTI0LDAsMCwxMDYsMywwLAorICAgIDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsOTIsMiwwLDEyNSwKKyAgICAyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsODQsCisgICAgMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDExMCwwLDAsMTI0LDEsMCwKKyAgICAxMjQsMCwwLDk1LDIsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDUsMCw4MywKKyAgICA0MCwxLDAsMCwwLDc4LDQwLDYsMCwwLDAsMTE0LDIzNiwwLDAsMCwKKyAgICAxMTQsMTQsMSwwLDAsMTE0LDE1LDEsMCwwLDExNCwxNiwxLDAsMCwxMTQsCisgICAgMTM5LDAsMCwwLDExNCwxMywxLDAsMCw0MCw0LDAsMCwwLDExNCw3NSwKKyAgICAwLDAsMCwxMTYsMTEsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTQsMTYwLDAsMCwwLDExNiw4LDAsMCwwLDExMCwxMDEsMTE5LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDI0NCwxMiwwLDAsMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwKKyAgICAxMTcsMTA4LDk3LDExNiwxMDEsMTc4LDQsMCwwLDExNSwxNCwwLDAsMCwwLDIsCisgICAgMTgsMSwxNSwxLDI3LDMsMTIsMSwxMiwxLDEyLDEsMTE3LDI3LDAsMCwKKyAgICAwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAorICAgIDAsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsMiwwLDAsCisgICAgMCwyNDQsNCwwLDAsMCwxMDUsMTE2LDEwMSwxMTQsMTE0LDIwLDEsMCwwLDQwLAorICAgIDEsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDI0NCw4LDAsMCwwLDk1LDk1LDEwNSwKKyAgICAxMTYsMTAxLDExNCw5NSw5NSwxOTAsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDExNywyMywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAwLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDIsMCwwLAorICAgIDAsMTE0LDMxLDAsMCwwLDExNCwyMCwxLDAsMCw0MCwxLDAsMCwwLAorICAgIDExNCw3NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyNDQsNywwLDAsMCw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwKKyAgICAxOTMsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyMiwwLDAsMCwKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCisgICAgOTUsMTA4LDEwMSwxMTAsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTE3LDIwLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MCwKKyAgICAyLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsMTMsMSwwLDAsNDAsMSwKKyAgICAwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDg3LDAsMCwwLDE5Niw0LDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDEsMTE3LDIzLDAsMCwwLDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwKKyAgICAxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMSwwLDAsMCwxMTQsMjAsMSwwLDAsNDAsMiwwLAorICAgIDAsMCwxMTQsNzUsMCwwLDAsMjQ0LDQsMCwwLDAsMTA1LDExNiwxMDEsMTA5LAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwKKyAgICAxMiwwLDAsMCw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwKKyAgICAxOTksNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyNywwLDAsMCwKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCisgICAgOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMjAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLAorICAgIDIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCwxNjUsMCwwLDAsNDAsMiwKKyAgICAwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDI0LDEsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNjUsMCwwLAorICAgIDAsMjAyLDQsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMjEsMCwwLAorICAgIDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LAorICAgIDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNzgsNDAsMTMsMCwwLDAsMTE0LDU2LDAsMCwKKyAgICAwLDExNCw1NSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLAorICAgIDExNCw3NiwwLDAsMCwxMTQsMTksMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwKKyAgICAyMCwxLDAsMCwxMTQsMjIsMSwwLDAsMTE0LDIzLDEsMCwwLDExNCw4NywKKyAgICAwLDAsMCwxMTQsMjUsMSwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTIsMSwwLDAsMTUxLDQsMCwwLDExNSwyMCwwLDAsMCwxMiwKKyAgICA1LDYsMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTIsMTIsMywxMiwzLDEyLAorICAgIDMsMTIsMywxMTQsMTIsMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsMTA2LDAsCisgICAgMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwwLDEwMCwzLDAsCisgICAgMTAwLDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMCw1LDAsMTAwLAorICAgIDYsMCwxMzIsMCwwLDkwLDYsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsCisgICAgMCw5MCw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDkwLDgsMCwKKyAgICAxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTMsMCwxMDAsCisgICAgMTQsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE1LDAsODMsNDAsMTYsMCwwLAorICAgIDAsMjQ0LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDk5LDQsMCwwLDAsMCwwLDAsMCw0LDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDExNiwKKyAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxMjQsMCwKKyAgICAwLDk1LDEsMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsMiwKKyAgICAwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDEzLDEsMCwwLDQwLDQsMCwKKyAgICAwLDAsMTE0LDc1LDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMzUsMCwwLAorICAgIDAsMTE0LDE3LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDExNCw3NiwwLDAsMCwyMDcsNCwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwxLDExNywyNCwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCiAgICAgOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwwLDgzLDQwLDEsMCwwLAotICAgIDAsNzgsNDAsMSwwLDAsMCwxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSwKLSAgICA5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwKLSAgICAwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDEwNSwxMTYsMTAxLDEwOSw0MCwKLSAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCi0gICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwKLSAgICA5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwxODEsNCwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwxLDExNywyNywwLDAsMCw5NSw3OCw5NywxMDksCi0gICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwKLSAgICAxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDIsMCwwLDAsCi0gICAgMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsOTcsCi0gICAgMTEyLDExMiwxMDEsMTEwLDEwMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKLSAgICAxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMDUsMTE2LDEwMSwxMDksNDAsMCwwLDAsCi0gICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKLSAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLAotICAgIDEwMSwxMTAsMTAwLDE4NCw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDIxLAotICAgIDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQwLDEzLDAsMCwwLDExNyw4LAotICAgIDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCwKLSAgICA5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsCi0gICAgOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsCi0gICAgOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsCi0gICAgOTksMTE3LDEwOCw5NywxMTYsMTAxLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTYsMTAxLAotICAgIDExNCw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwxMTcsCi0gICAgOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTE3LDEyLDAsMCwKLSAgICAwLDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDExNyw2LDAsCi0gICAgMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDAsMSwwLDAsMCwxMTcsMTAsMCwKLSAgICAwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLAotICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAotICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwxMzMsNCwwLDAsMTE1LAotICAgIDIwLDAsMCwwLDE2LDUsNiwyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMiwKLSAgICAxMiwzLDEyLDMsMTIsMywxMiwzLDExNywxNCwwLDAsMCw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NiwwLDAsMCwKLSAgICAxMTUsNjgsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLAotICAgIDAsMTAxLDQsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLAotICAgIDkwLDUsMCwxMDEsNiwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsNywwLDEwMCw3LDAsODMsNDAsOCwwLDAsMCwxMTcsMTUsCi0gICAgMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsCi0gICAgMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwKLSAgICAwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwyLDAsMCwwLAotICAgIDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAotICAgIDk3LDExNiwxMDQsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsNDAsNCwwLAotICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDExLDAsCi0gICAgMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwKLSAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKLSAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsCi0gICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE4OSw0LDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTE3LDI0LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDEsCi0gICAgMCwxMDYsMSwwLDEzMSwxLDAsODMsNDAsMiwwLDAsMCw3OCwxMTcsMjUsCi0gICAgMCwwLDAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMzksMTIzLDEyNSwzOSwzMiwKLSAgICA0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MCwyLDAsMCwKLSAgICAwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDgsMCwwLAotICAgIDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsNDAsMiwwLDAsMCwxMTcsMywKLSAgICAwLDAsMCw5OSwxMDgsMTE1LDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCi0gICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsCi0gICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxOTIsNCwwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNywwLDAsMCw3OCw5NywxMDksCi0gICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzIsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwKLSAgICAwLDEsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsOTUsMiwwLDEyNCwxLAotICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsMjQsMCwwLDAsNzYsMTExLDk3LDEwMCwKLSAgICAzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw0NiwxMTcsMzgsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDAsCi0gICAgMywwLDAsMCwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKLSAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCi0gICAgNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDYsCi0gICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLAotICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTk2LDQsMCwwLDExNSw2LDAsMCwwLDAsMywKLSAgICAxNiwxLDEyLDEsMTE3LDI3LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDc4LDQwLDgsMCwwLDAsMTE3LDgsMCwwLDAsOTUsCi0gICAgOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LAotICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsCi0gICAgMTE2LDEwNCwxMTEsMTAwLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTQsMTAxLDExMiwxMTQsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LAotICAgIDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLAotICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCi0gICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCw3OCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxODgsNCwKLSAgICAwLDAsMTE1LDYsMCwwLDAsMTYsMSwxMiwzLDE4LDQsMTE3LDE1LDAsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LAorICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MCwyLDAsMCwKKyAgICAwLDc4LDExNywyNSwwLDAsMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2MiwKKyAgICA0MCwyLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNTYsMCwwLDAsNDAsCisgICAgMiwwLDAsMCwxMTQsMjE1LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxNiwwLAorICAgIDAsMCwyMTAsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNywwLAogICAgIDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsCi0gICAgMCwwLDY2LDAsMCwwLDExNSwxMTksMCwwLDAsMTI0LDAsMCw2OSwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCi0gICAgMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsCi0gICAgOTAsNSwwLDEwMSw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCw2LDAsMTAxLDQsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDcsMCwxMDEsNCwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw0LDAsMTAwLDEyLDAsMTAwLAotICAgIDEwLDAsMTAwLDExLDAsMTMyLDEsMCwxMzEsMSwwLDkwLDEwLDAsMTAwLDEyLAotICAgIDAsODMsNDAsMTMsMCwwLDAsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsCi0gICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNjIsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsCi0gICAgMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU4LAotICAgIDAsMCwwLDEyMCw1MSwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwKLSAgICAwLDAsNjgsOTMsMzQsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsCi0gICAgMSwwLDEzMSwyLDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLAotICAgIDAsMSwxMTMsMTYsMCwxMTMsMTYsMCw4NywxMDAsMiwwLDgzLDQwLDMsMCwKLSAgICAwLDAsMTE3LDEyNSwwLDAsMCw2Nyw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICAxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMDgsCi0gICAgMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTYsMTExLAotICAgIDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwzMiwKLSAgICA0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwMSwxMDAsNDEsNDYsMTE3LDE3LDAsMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAotICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDAsNSwwLDAsMCwKLSAgICAxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTksMCwwLDAsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDExNyw2LDAsMCwwLDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE3LDcsMCwwLDAsCi0gICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTcsMCwwLDAsMTA1LDExMCwxMTgsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCwyLDAsCi0gICAgMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDYsMCwwLDAsMTAyLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKLSAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKLSAgICA2MiwxMTcsMTcsMCwwLDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwKLSAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwyMTAsNCwwLDAsMTE1LDYsMCwwLDAsCi0gICAgMCw0LDIyLDEsMTUsMSwxMTcsMjgsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCi0gICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDk0LDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMTUsMjgsMCwxMTYsMiwwLDEwNiwzLDAsCi0gICAgMTAwLDEsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMTAsMCwwLDEyMCw1OSwwLAotICAgIDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLDE0LDAsCi0gICAgMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDM4LDAsNCwxMTYsCi0gICAgNSwwLDEwNywxMCwwLDExNCw4MSwwLDEsMSwxLDExOSwzOCwwLDg5LDExMywKLSAgICAzOCwwLDg4LDExMywzOCwwLDg3LDEwMCwyLDAsODMsMTAwLDIsMCw4Myw0MCwKLSAgICAzLDAsMCwwLDExNywxMTMsMCwwLDAsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LAotICAgIDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMiw5NywxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsMjMsMCwwLDAsMTE1LAotICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LAotICAgIDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsNDAsNywwLDAsMCwxMTcsMywwLDAsCi0gICAgMCwxMTUsMTIxLDExNSwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwxMTcsOSwwLDAsMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKLSAgICAxMTUsMTE3LDQsMCwwLDAsMTE5LDk3LDExNCwxMTAsMTE3LDEzLDAsMCwwLDczLAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTcsMTEsMCwwLAotICAgIDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLAotICAgIDAsNzgsMTExLDExMCwxMDEsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwKLSAgICAxMDgsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLAotICAgIDEwNCwxMTEsMTExLDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAotICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAotICAgIDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LAotICAgIDIxOCw0LDAsMCwxMTUsMTYsMCwwLDAsMCw3LDksMSwxOSwxLDE2LAotICAgIDEsMywxLDE0LDEsMTMsMSwxMiwyLDExNywyMiwwLDAsMCw4MCw5NywKLSAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAotICAgIDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCi0gICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTEsMCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsMSwwLDEwNywyLDAsMTE0LDIxLDAsMTAwLDIsMCwxMjUsMSwwLAotICAgIDExMCwwLDAsMTIxLDE3LDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMjUsCi0gICAgMTI1LDIsMCw4NywxMTAsNDYsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDg2LAotICAgIDAsMSwxLDEsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsNjAsCi0gICAgODksMTEwLDEsMCw4OCwxMjQsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDIxMCwKLSAgICAwLDAsMCw3MSwxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwKLSAgICAxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKKyAgICAxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLAorICAgIDc4LDg0LDExNCw0LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDc1LDAsMCwKKyAgICAwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMTE0LDE1NiwwLDAsMCwyMTQsNCwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwxLDExNywyNiwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCw3OCwxMTQsMzAsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDAsMiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAxMTQsMjIwLDAsMCwwLDIxNyw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTE3LDI2LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwKKyAgICAyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMxLDMsMSw4Myw0MCwKKyAgICA2LDAsMCwwLDc4LDExNCwzMCwwLDAsMCwxMTcsOCwwLDAsMCw2MCwKKyAgICAxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw2MiwxMTQsMjQwLDAsMCwwLDExNCwyNTAsMCwwLAorICAgIDAsODQsNDAsMSwwLDAsMCwxMTQsMjUxLDAsMCwwLDQwLDIsMCwwLAorICAgIDAsMTE0LDc1LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxOSwwLDAsMCwyMjAsCisgICAgNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyNCwwLDAsMCw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsCisgICAgMCwxMjQsMCwwLDEyNCwxLDAsOTUsMCwwLDEyNCwxLDAsMTA2LDEsMCwKKyAgICAxMjQsMSwwLDk1LDIsMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsCisgICAgNDAsMywwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCisgICAgMTU4LDAsMCwwLDQwLDIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwxNjEsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDIzOSwwLDAsMCwyMjMsNCwwLDAsMTE1LDQsMCwwLDAsCisgICAgMCwxLDksMSwxMTcsMzMsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA3MCwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMSwwLAorICAgIDEzMSwyLDAsMSwxMTYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxNDMsMzYsMCwKKyAgICAxMjUsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMSwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCw5NSw0LDAsMTI0LDIsMCw4MywKKyAgICA4NywxMDAsMiwwLDgxLDg4LDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsCisgICAgMjQsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMTcsMzgsMCwwLAorICAgIDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNzgsNDAsNSwwLDAsMCwxMTQsMTM3LDAsCisgICAgMCwwLDExNCwxMywxLDAsMCwxMTQsMTU1LDAsMCwwLDExNCwyMzksMCwwLAorICAgIDAsMTE0LDE1OSwwLDAsMCw0MCwzLDAsMCwwLDExNCw3NSwwLDAsMCwKKyAgICAxMTQsMTc4LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxOCwwLDAsMCwyMjcsNCwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDAsMiwxNiwxLDE1LDEsMTMsMSwxMiwKKyAgICAxLDExNywyNywwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw0MCwxMSwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LDAsMCwKKyAgICAwLDExNCw1NywwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDIyMSwwLDAsMCwKKyAgICAxMTQsMjE2LDAsMCwwLDExNCwxNTYsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsCisgICAgMjE5LDAsMCwwLDExNCwyMzksMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAorICAgIDAsMCwxMTQsMjYsMSwwLDAsMjA2LDQsMCwwLDExNSwxNCwwLDAsMCwKKyAgICAxMiwxLDEyLDMsMTgsNCwxMiwzLDEyLDMsMTIsMywxMiw0LDExNCwyNiwKKyAgICAxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICA0LDAsMCwwLDY0LDAsMCwwLDExNSwxMTUsMCwwLDAsMTAxLDAsMCwKKyAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLAorICAgIDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsCisgICAgMCwxMDEsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsCisgICAgOTAsNiwwLDEwMSw0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLAorICAgIDEsMCw5MCw3LDAsMTAxLDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsCisgICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEwMCwxMiwwLDEzMiwxLDAsMTMxLDEsMCw5MCw5LDAsMTAwLDEwLDAsODMsCisgICAgNDAsMTMsMCwwLDAsMjQ0LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwxMTcsNjIsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwKKyAgICAxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwKKyAgICAwLDEyMCw1MSwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsCisgICAgNjgsOTMsMzQsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLAorICAgIDEzMSwyLDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwKKyAgICAxMTMsMTYsMCwxMTMsMTYsMCw4NywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsCisgICAgMTE3LDEyNSwwLDAsMCw2Nyw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsCisgICAgMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsCisgICAgNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsCisgICAgMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksCisgICAgMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCisgICAgNDEsNDYsMjQ0LDE3LDAsMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwKKyAgICAxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDAsNSwwLDAsMCwxMTQsNywKKyAgICAwLDAsMCwyNDQsMTksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDI0NCw2LDAsMCwwLAorICAgIDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LDU5LDAsMCwwLDExNCwyOCwxLDAsMCwKKyAgICA0MCwyLDAsMCwwLDExNCwyMTUsMCwwLDAsMjQ0LDYsMCwwLDAsMTAyLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDI4LDEsMCwwLDI0Miw0LDAsMCwxMTUsNiwwLAorICAgIDAsMCwwLDQsMjIsMSwxNSwxLDExNywyOCwwLDAsMCw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsCisgICAgMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsOTQsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNSwyOCwwLDExNiwyLDAsMTA2LAorICAgIDMsMCwxMDAsMSwwLDExNiw0LDAsMTMxLDIsMCwxLDExMCwwLDAsMTIwLAorICAgIDU5LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDQ0LDAsMTI1LDIsMCwxMjEsCisgICAgMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw4NywxMTMsMzgsMCwKKyAgICA0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDgxLDAsMSwxLDEsMTE5LDM4LDAsCisgICAgODksMTEzLDM4LDAsODgsMTEzLDM4LDAsODcsMTAwLDIsMCw4MywxMDAsMiwwLAorICAgIDgzLDQwLDMsMCwwLDAsMTE3LDExMywwLDAsMCw4MywxMDEsOTcsMTE0LDk5LAorICAgIDEwNCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLAorICAgIDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LAorICAgIDMyLDEwNSwxMTUsMzIsMTAyLDk3LDEwOCwxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsCisgICAgMTE1LDEwMSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsCisgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNywyMywwLDAsCisgICAgMCwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLAorICAgIDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw3OCw0MCw2LDAsMCwwLDExNCw3LAorICAgIDAsMCwwLDI0NCwxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKKyAgICAxMDcsMTE1LDExNCwxODUsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTg3LDAsMCwKKyAgICAwLDExNCwxNTcsMCwwLDAsNDAsMywwLDAsMCwxMTQsMjE1LDAsMCwwLAorICAgIDExNCwzNSwwLDAsMCwxMTYsNCwwLDAsMCwxMDQsMTExLDExMSwxMDcsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDExLDAsCisgICAgMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMjUwLDQsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwwLDcsOSwxLDE5LDEsMTYsMSwzLDEsCisgICAgMTQsMSwxMywxLDEyLDIsMTE3LDIyLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsCisgICAgMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw5MSwwLDAsMCwxMjQsMSwwLDEwMCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMjEsMCwxMDAsMiwwLDEyNSwxLDAsMTEwLDAsMCwKKyAgICAxMjEsMTcsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwyNSwxMjUsMiwwLAorICAgIDg3LDExMCw0NiwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsODYsMCwxLDEsCisgICAgMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsCisgICAgMTI0LDIsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCw2MCw4OSwxMTAsMSwKKyAgICAwLDg4LDEyNCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMjEwLDAsMCwwLAorICAgIDcxLDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LAorICAgIDEyMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwKKyAgICAxMDUsOTcsMTE2LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiwKKyAgICA0NiwzMiw3MywxMDIsMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsCisgICAgMTE0LDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTQsMzAsMCwwLDAsMTE0LDEwMSwwLDAsMCw0MCw0LDAsMCwKKyAgICAwLDExNCw3LDAsMCwwLDExNCwyOSwxLDAsMCwxMTQsOTEsMCwwLDAsCisgICAgMTE0LDMzLDEsMCwwLDQwLDMsMCwwLDAsMTE0LDIxNSwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDMxLDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDI0NCwyMCwwLDAsMCw5NSwxMTIsOTcsCiAgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExMiwxMTIsMTE0LAotICAgIDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsOTksOTcsOTksMTA0LDEwMSwKLSAgICAzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTAsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NCwzMiwKLSAgICAxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LDExMSwxMTAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNywwLDAsMCwwLDExNywxLDAsMCwwLDQ2LAotICAgIDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDE5LDAsCi0gICAgMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMTcsOCwwLDAsMCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCi0gICAgMTA3LDExNSw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LAotICAgIDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAotICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCi0gICAgMjAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIzNSw0LDAsMCwxMTUsMTYsMCwwLAotICAgIDAsMCw4LDEyLDEsOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwKLSAgICAxLDExNywzMSwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwwLDAsMCwwLDAsMCw4LDAsCi0gICAgMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE4OSwwLDAsMCwxMDMsCi0gICAgMCwwLDEyNSwzLDAsMTIwLDE3NiwwLDEyNCwyLDAsNjgsOTMsMTU4LDAsMTI1LAotICAgIDQsMCwxMTYsMCwwLDEyNCw0LDAsMTE2LDEsMCwxMTYsMiwwLDEwMiwyLAotICAgIDAsMTMxLDIsMCwxMTUsNDYsMCwxMTMsMTMsMCwxMTAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMjQsNCwwLDEzMSwxLDAsMTI1LDUsMCwxMjQsNSwwLDEwMCwKLSAgICAyLDAsMTA3LDksMCwxMTQsMTMsMCwxMTYsNSwwLDEyNCw1LDAsMTAwLDEsCi0gICAgMCwxMzEsMiwwLDExNCwxMTIsMCwxMjQsNSwwLDEwNiw2LDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDkyLDIsMCwxMjUsNiwwLDEyNSw3LDAsMTEwLDIxLDAsMTI0LAotICAgIDUsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNiwwLDEwMywwLAotICAgIDAsMTI1LDcsMCwxMjQsNiwwLDEwMCwyLDAsMTA3LDksMCwxMTQsMTU1LDAsCi0gICAgMTI0LDYsMCwxMjQsMywwLDEwMiwyLDAsODMsMTI0LDMsMCwxMDYsOCwwLAotICAgIDEyNCw3LDAsMTMxLDEsMCwxLDExMywxMywwLDExMywxMywwLDg3LDEwMCwyLAotICAgIDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEwMCwyLDAsODMsNDAsMywwLDAsCi0gICAgMCwxMTcsNjMsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCi0gICAgMTEwLDk3LDEwOSwxMDEsNDYsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDc4LDQwLDksMCwwLDAsMTE3LDEwLDAsMCwwLAotICAgIDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMTE3LDMsMCwwLDAsMTE1LAotICAgIDExNiwxMTQsMTE3LDUsMCwwLDAsOTgsMTIxLDExNiwxMDEsMTE1LDExNywyMCwwLDAsCi0gICAgMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDcsCi0gICAgMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTEsMCwwLDAsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDEwMiwKLSAgICAxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNiwwLDAsMCwxMDEsCi0gICAgMTIwLDExNiwxMDEsMTEwLDEwMCw0MCw4LDAsMCwwLDExNywzLDAsMCwwLDk5LAotICAgIDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNywKLSAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxNCwwLDAsMCwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNSwwLDAsMCwKLSAgICAxMDEsMTEwLDExNiwxMTQsMTIxLDExNyw2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDgsMCwwLDAsCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MCwwLDAsMCwwLDQwLDAsMCwKLSAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKLSAgICAxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDI1Miw0LDAsMCwxMTUsMjgsMCwwLDAsMCw1LDYsCi0gICAgMSwxMywxLDIxLDEsNiwxLDE1LDEsMTIsMSwxNSwxLDI0LDIsMTUsCi0gICAgMSw2LDEsMTIsMiwxMCw1LDIwLDIsMTE3LDIyLDAsMCwwLDgwLDk3LAotICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDk3LDAsMCwwLDEyNCwyLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyNCwwLDExNiwxLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsMTI0LAotICAgIDIsMCwxMzEsMiwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTI0LDMsCi0gICAgMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDY0LDAsMTI0LDMsMCw4MywxMjQsNCwKLSAgICAwLDExNCw4OSwwLDExNiw0LDAsMTI0LDEsMCwxMjQsNCwwLDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMzEsMywwLDgzLDEwMCwxLDAsODMsMTAwLDEsMCw4Myw0MCwKLSAgICAyLDAsMCwwLDExNyw5OCwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDc4LDQwLDUsMCwwLAotICAgIDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDMsMCwwLDAsMTE1LAotICAgIDEyMSwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDExLDAsMCwwLAotICAgIDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE1LDAsMCwwLAotICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQwLAotICAgIDUsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsCi0gICAgMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAotICAgIDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTQsMCwKKyAgICAxMDEsMTEsNSwwLDAsMTE1LDE2LDAsMCwwLDAsOCwxMiwxLDksMSwKKyAgICAzLDEsMTcsMSwxMywxLDE1LDEsMTgsMSwxMTcsMzEsMCwwLDAsODAsCisgICAgOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsOCwwLDAsMCw1LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxODksMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCwxNzYsCisgICAgMCwxMjQsMiwwLDY4LDkzLDE1OCwwLDEyNSw0LDAsMTE2LDAsMCwxMjQsNCwKKyAgICAwLDExNiwxLDAsMTE2LDIsMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQ2LDAsCisgICAgMTEzLDEzLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDQsMCwxMzEsCisgICAgMSwwLDEyNSw1LDAsMTI0LDUsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDEzLAorICAgIDAsMTE2LDQsMCwxMjQsNSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsMTEyLDAsCisgICAgMTI0LDUsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LAorICAgIDYsMCwxMjUsNywwLDExMCwyMSwwLDEyNCw1LDAsMTA2LDYsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTI1LDYsMCwxMDMsMCwwLDEyNSw3LDAsMTI0LDYsMCwKKyAgICAxMDAsMSwwLDEwNyw5LDAsMTE0LDE1NSwwLDEyNCw2LDAsMTI0LDMsMCwxMDIsCisgICAgMiwwLDgzLDEyNCwzLDAsMTA2LDcsMCwxMjQsNywwLDEzMSwxLDAsMSwKKyAgICAxMTMsMTMsMCwxMTMsMTMsMCw4NywxMDAsMSwwLDEyNCwzLDAsMTAyLDIsMCwKKyAgICA4MywxMDAsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDYzLDAsMCwwLDcwLAorICAgIDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLAorICAgIDExNCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDc4LDExNCwKKyAgICAxODQsMCwwLDAsNDAsOCwwLDAsMCwxMTQsMjAyLDAsMCwwLDI0NCwzLAorICAgIDAsMCwwLDExNSwxMTYsMTE0LDI0NCw1LDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICAxMTQsMzQsMSwwLDAsMTE0LDU5LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LAorICAgIDIxNywwLDAsMCwxMTQsMjA3LDAsMCwwLDQwLDgsMCwwLDAsMTE0LDIxNSwKKyAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwzNSwwLDAsMCwyNDQsMTQsMCwKICAgICAwLDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKLSAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAotICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLAotICAgIDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIzLDUsMCwwLAorICAgIDExNiw1LDAsMCwwLDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDMxLDEsMCwwLDExNCwKKyAgICAxNjAsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTEsMCwwLDAsOTUsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwyOCw1LDAsMCwxMTUsMjgsMCwwLAorICAgIDAsMCw1LDYsMSwxMywxLDIxLDEsNiwxLDE1LDEsMTIsMSwxNSwKKyAgICAxLDI0LDIsMTUsMSw2LDEsMTIsMiwxMCw1LDIwLDIsMTE3LDIyLDAsCisgICAgMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLAorICAgIDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDc4LDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDk3LAorICAgIDAsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyNCwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDkyLDIsMCwxMjUsMywwLAorICAgIDEyNSw0LDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDY0LDAsMTI0LAorICAgIDMsMCw4MywxMjQsNCwwLDExNCw4OSwwLDExNiwzLDAsMTI0LDEsMCwxMjQsCisgICAgNCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMywwLDgzLDEwMCwxLDAsODMsCisgICAgMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw5OCwwLDAsMCw3MCwxMDUsCisgICAgMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LAorICAgIDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LAorICAgIDc4LDQwLDQsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDExNCwzOCwxLDAsMCwxMTQsMjYsMSwwLDAsNDAsNSwwLDAsMCwxMTQsCisgICAgMjE1LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNjAsCisgICAgMCwwLDAsMTE0LDM3LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwyMTcsMCwwLDAsNTUsNSwwLDAsCiAgICAgMTE1LDE2LDAsMCwwLDAsNCwxMiwxLDEyLDEsMjQsMSwxMiwxLDQsCiAgICAgMiw2LDMsMTksMiwxMTcsMjIsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsCiAgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3OCw0MCwxMSwwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksCi0gICAgMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LAotICAgIDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywKLSAgICAxNywwLDAsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTE1LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDQsMTExLDExMSwxMDcsMTE1LDExNywyMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDExLAotICAgIDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDQsCi0gICAgMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsCi0gICAgMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCwKLSAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIwNiw0LDAsMCwxMTUsMTQsMCwwLDAsMTYsCi0gICAgMiw2LDIsMTgsOCwxOCwxNywxOCwxNywxOCwyNywzLDEsMTE3LDEwLDAsCi0gICAgMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY2LDAsMCwKLSAgICAwLDExNSwxMTAsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAotICAgIDAsOTAsNSwwLDEwMSw2LDAsOTAsNywwLDEwMCw2LDAsMTAwLDcsMCwKLSAgICAxMzIsMCwwLDkwLDgsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCwKLSAgICA5LDAsMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDExLDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwxMiwwLAotICAgIDEwMCwxNCwwLDgzLDQwLDE1LDAsMCwwLDExNywxMCwwLDAsMCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxNzIsMCwwLDAsNzAsMTA1LDEwOCwKLSAgICAxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksCi0gICAgMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwKLSAgICAxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LAotICAgIDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDUsMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsCi0gICAgMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsCi0gICAgOTMsNDQsMCw5MiwyLDAsMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LAotICAgIDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAotICAgIDAsMTI0LDQsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywKLSAgICAxMjQsMywwLDEyNCwwLDAsOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLAotICAgIDMsMCwxMjQsMCwwLDk1LDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywKLSAgICAwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLAotICAgIDEzMSwwLDAsMTI0LDAsMCw5NSw2LDAsMTAwLDUsMCw4Myw0MCw3LDAsCi0gICAgMCwwLDExNywxNTQsMCwwLDAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLAotICAgIDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCi0gICAgMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLAotICAgIDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsCi0gICAgMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LAotICAgIDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwKLSAgICAxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsCi0gICAgNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAotICAgIDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywKLSAgICAwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwwLDEwMiwyLDAsODYsMSwxMTMsCi0gICAgMywwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwwLDAsMCwKLSAgICAwLDQwLDIsMCwwLDAsMTE3LDIsMCwwLDAsNDYsNDgsMTE3LDYsMCwKLSAgICAwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDAsMSwwLDAsMCwxMTcsNiwwLAotICAgIDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsMTE3LDI5LDAsCi0gICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKLSAgICA5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw1Niw1LDAsCi0gICAgMCwxMTUsMiwwLDAsMCw2LDAsMTE3LDM4LDAsMCwwLDcwLDEwNSwxMDgsCi0gICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LAotICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLAotICAgIDExMiwxMTQsNjIsMTE3LDEsMCwwLDAsNDYsMTA1LDEsMCwwLDAsNzgsMTA1LAotICAgIDI1NSwyNTUsMjU1LDI1NSw0MCw3LDAsMCwwLDExNyw2LDAsMCwwLDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTAsMTAwLDExNyw4LDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxMSwwLDAsMCw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDExNywzLDAsMCwwLDExNSwKLSAgICAxMDEsMTE2LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDExNywxOSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQwLDUsMCwwLDAsMTE3LAotICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsCi0gICAgMTA0LDExNywxNCwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LAotICAgIDk3LDEwNSwxMDgsMTE1LDExNyw3LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAotICAgIDExNyw4LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDAsMCwwLAotICAgIDAsMCw0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKLSAgICAxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKLSAgICA5NSw1MCw1LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwxLAotICAgIDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTE3LDE5LDAsMCwwLDcwLAotICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsMTI0LAotICAgIDAsMCw5NSwwLDAsMTAwLDIsMCw4Myw0MCw0LDAsMCwwLDExNywzMSwKLSAgICAwLDAsMCw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksCi0gICAgMTAxLDQ2LDEwNSwxLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsMSwwLAotICAgIDAsMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsCi0gICAgMTA5LDEwMSw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKLSAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCi0gICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsCi0gICAgMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTE1LDY0LDUsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsMCwKLSAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCwKLSAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMjE2LDEsMCwwLDEwMCw4LDAsMTI1LDIsMCwxMjQsMSwKLSAgICAwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsCi0gICAgMCwxMjEsMjUsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLAotICAgIDEzMSwxLDAsMTA2LDUsMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDYsCi0gICAgMCwxMDcsMTAsMCwxMTQsNzYsMCwxLDEsMSwxMDAsOSwwLDEyNSw0LDAsCi0gICAgODksMTEwLDEsMCw4OCwxMjQsNCwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsMywKLSAgICAwLDExNCwxMTQsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCw0LAotICAgIDAsMTI0LDAsMCw5NSw3LDAsMTEwLDAsMCwxMTYsOSwwLDEzMSwwLDAsCi0gICAgMTE0LDE0NywwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDUsMCwxMjQsMywwLDEwNiwKLSAgICAxMSwwLDEzMSwwLDAsMTI1LDYsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwKLSAgICAwLDEyNSw1LDAsMTI0LDMsMCwxMjUsNiwwLDEyNCw2LDAsMTI0LDUsMCwKLSAgICAxMDcsNiwwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjQsCi0gICAgMywwLDEzMSwyLDAsMTI1LDcsMCwxMTYsMTQsMCwxMjQsNywwLDEzMSwxLAotICAgIDAsMTE0LDQ1LDEsMTIwLDkxLDAsMTI0LDAsMCwxMDYsMTUsMCw2OCw5Myw3MSwKLSAgICAwLDkyLDIsMCwxMjUsOCwwLDEyNSw5LDAsMTAwLDQsMCwxMjQsOCwwLAotICAgIDIzLDEyNSwxMCwwLDExNiwxMywwLDEyNCw3LDAsMTI0LDEwLDAsMTMxLDIsMCwKLSAgICAxMjUsMTEsMCwxMTYsMTYsMCwxMjQsMTEsMCwxMzEsMSwwLDExNCwyMTQsMCwxMjQsCi0gICAgOSwwLDEyNCwxLDAsMTI0LDExLDAsMTMxLDIsMCwxMjQsNywwLDEwMywxLAotICAgIDAsMTAyLDIsMCw4MywxMTMsMjE0LDAsODcsMTAwLDEwLDAsMTI1LDIsMCwxMTMsCi0gICAgNDUsMSwxMTAsMCwwLDEyMCwxMjAsMCwxMjQsMCwwLDEwNiwxNSwwLDY4LDkzLAotICAgIDEwOSwwLDkyLDIsMCwxMjUsOCwwLDEyNSw5LDAsMTE2LDEzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDEyNCwzLDAsMTI0LDgsMCwyMywxMzEsMiwwLDEyNSwxMSwKLSAgICAwLDExNiwxOCwwLDEwMCw1LDAsMTA2LDE5LDAsMTI0LDExLDAsMTMxLDEsMCwKLSAgICAxMDAsNiwwLDEwMCwyLDAsMTMxLDEsMSwxLDEyNCw2LDAsMTI0LDgsMCwKLSAgICAyMywxMjQsNSwwLDEwNyw2LDAsMTE0LDU1LDEsMTE2LDE2LDAsMTI0LDExLDAsCi0gICAgMTMxLDEsMCwxMTQsMTY0LDEsMTI0LDksMCwxMjQsMSwwLDEyNCwxMSwwLDEzMSwKLSAgICAyLDAsMTAzLDAsMCwxMDIsMiwwLDgzLDExMyw1NSwxLDExMyw1NSwxLDg3LAotICAgIDEyNCwyLDAsMTE0LDIwNiwxLDExNiwxOCwwLDEwMCw3LDAsMTA2LDE5LDAsMTI0LAotICAgIDcsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMDAsMTEsMCwxMjQsNywwLDEwMywKLSAgICAxLDAsMTAyLDIsMCw4MywxMDAsMTEsMCwxMDMsMCwwLDEwMiwyLDAsODMsCi0gICAgNDAsMTIsMCwwLDAsMTE3LDEyNSwwLDAsMCw4NCwxMTQsMTIxLDMyLDExNiwxMTEsCi0gICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwKLSAgICAxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwxMTcsMSwwLDAsMCw0NiwxMDUsMiwwLAotICAgIDAsMCwxMDUsMSwwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE3LDksMCwwLDAsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsCi0gICAgMTIzLDEyNSwxMTcsOSwwLDAsMCwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLAotICAgIDExNywyNSwwLDAsMCwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDEyNSw3MCwxMDUsCi0gICAgMjU1LDI1NSwyNTUsMjU1LDg0LDc4LDQwLDIxLDAsMCwwLDExNyw1LDAsMCwwLAotICAgIDcwLDk3LDEwOCwxMTUsMTAxLDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LAotICAgIDExNiwxMDUsMTExLDExMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwKLSAgICAwLDExNSwxMTYsOTcsMTE2LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LAotICAgIDAsMCwwLDExNSwxMTYsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNywwLDAsMCwKLSAgICA3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDExLDAsMCwwLDk1LDEwMiwxMDUsMTA4LAotICAgIDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCwKLSAgICA5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsMTksMCwwLDAsOTUsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsCi0gICAgNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMCwwLDAsMCw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsMTE3LDExLDAsMCwwLDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE3LDgsMCwwLDAsOTUsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwxMTUsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywKLSAgICAxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwKLSAgICAxMTUsOTcsMTAzLDEwMSwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywKLSAgICA0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDEyLDAsMCwwLDExNyw0LDAsCi0gICAgMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE3LDEyLDAsMCwwLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LAotICAgIDExMiw5Nyw5OSwxMDEsMTE3LDExLDAsMCwwLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNyw1LDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDUsCi0gICAgMCwwLDAsOTksOTcsOTksMTA0LDEwMSwxMTcsMTIsMCwwLDAsOTksOTcsOTksCi0gICAgMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOSwwLDAsMCw5OCw5NywKLSAgICAxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwKLSAgICAxMDUsMTIwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEzLDAsCi0gICAgMCwwLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LAotICAgIDksMCwwLDAsMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDQwLDAsMCwKLSAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKLSAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDcwLDUsMCwwLDExNSw2NiwwLAotICAgIDAsMCwwLDMsNiwxLDE5LDEsMywxLDI1LDEsMTMsMSwxMSwxLAotICAgIDE1LDEsMTAsMSwxMiwyLDksMSw5LDEsMTUsMiw5LDEsNiwyLAotICAgIDEyLDEsMTgsMSwxMiwxLDIyLDEsMTAsMSwxNSwxLDEyLDEsMjYsNCwKLSAgICAxMiwyLDIyLDEsMjIsMSwyNSwxLDE2LDEsMTIsMSwyNiwxLDYsMSwKLSAgICAxOSwxLDEzLDEsMTE3LDIyLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDksMCwwLDAsMTMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDgsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwKLSAgICAxLDAsMTIxLDE5LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LDMsMCwxMTYsNCwwLDExNiwKLSAgICA1LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNjMsMCwxLDEsMSwxMDMsMCwKLSAgICAwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEwNiw3LDAsMTA2LAotICAgIDgsMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDEwMCwwLDExNiw5LDAsMTI0LDIsCi0gICAgMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTAsMCwxMTAsMTExLDAsMTE2LDksMCwKLSAgICAxMzEsMCwwLDEyNSwzLDAsMTIwLDkwLDAsMTI0LDIsMCw2OCw5Myw4MiwwLAotICAgIDEyNSw0LDAsMTI0LDQsMCwxMDYsMTEsMCwxMDAsMiwwLDEzMSwxLDAsOTIsCi0gICAgMywwLDEyNSw1LDAsMTI1LDYsMCwxMjUsNywwLDEyNCw2LDAsMTE0LDE3OSwKLSAgICAwLDEwMCwzLDAsMTA2LDEyLDAsMTI0LDUsMCwxMjQsNywwLDEwNiwxMywwLAotICAgIDEzMSwwLDAsMTMxLDIsMCwxMjUsOCwwLDExMCw2LDAsMTI0LDUsMCwxMjUsCi0gICAgOCwwLDEyNCwzLDAsMTA2LDE0LDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLAotICAgIDExNiwwLDg3LDEyNCwzLDAsMTI0LDAsMCw5NSwxMCwwLDExNiw2LDAsMTA2LAotICAgIDcsMCwxMDYsOCwwLDExNiwxNSwwLDEzMSwxLDAsMTE0LDQsMSwxMTYsOSwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTYsMCwxMTAsMCwwLDEwMCw2LDAsCisgICAgNDAsMTAsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsCisgICAgNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDI4LAorICAgIDEsMCwwLDExNCwzMywxLDAsMCwxMTQsMzQsMSwwLDAsMTE0LDM4LDEsCisgICAgMCwwLDExNCwyMTcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI3LDEsMCwwLAorICAgIDIzOCw0LDAsMCwxMTUsMTQsMCwwLDAsMTIsMiw2LDIsMTgsOCwxOCwKKyAgICAxNywxOCwxNywxOCwyNywzLDEsMTE0LDI3LDEsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCisgICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAorICAgIDEwMSw2LDAsOTAsNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLAorICAgIDgsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAxLDEwLAorICAgIDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCisgICAgMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwxNCwwLDgzLAorICAgIDQwLDE1LDAsMCwwLDI0NCwxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDExNywxNzIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsCisgICAgMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwKKyAgICAxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsCisgICAgMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LAorICAgIDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsCisgICAgMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLAorICAgIDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICAzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LAorICAgIDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwKKyAgICAwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLAorICAgIDAsMCwxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwKKyAgICAyLDAsMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwKKyAgICAwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCwKKyAgICA2OCwxMzEsMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwKKyAgICAwLDAsOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwKKyAgICAwLDk1LDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LDAsCisgICAgMTMxLDAsMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LAorICAgIDAsMCw5NSw2LDAsMTAwLDUsMCw4Myw0MCw3LDAsMCwwLDExNywxNTQsCisgICAgMCwwLDAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LAorICAgIDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsCisgICAgMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCwKKyAgICA5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsCisgICAgMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwKKyAgICAxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw1MSwwLAorICAgIDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsCisgICAgMTI0LDEsMCwxMzYsMCwwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLAorICAgIDAsODMsNDAsMSwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MCwyLDAsCisgICAgMCwwLDExNCwyMiwwLDAsMCwxMTQsOSwxLDAsMCw0MCwxLDAsMCwKKyAgICAwLDExNCwxNjAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMTE0LDE0MywwLDAsMCw4OCw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsCisgICAgMTE3LDM4LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICA2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDEwMSwwLDAsMCwKKyAgICAxMTQsMjksMCwwLDAsNzgsMTE0LDEyMywwLDAsMCw0MCw3LDAsMCwwLAorICAgIDExNCwyMDcsMCwwLDAsMjQ0LDgsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMTUsMTE0LDM1LDAsMCwwLDI0NCwxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDI0NCwzLDAsMCwwLDExNSwxMDEsMTE2LDI0NCwKKyAgICAxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDI0NCwKKyAgICAxOSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQwLDUsMCwwLDAsMTE0LDc1LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwyNDQsMTQsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSwxMTYsNywwLDAsMCwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTEyLDAsMCwwLDExNCw0LDAsMCwwLDQwLAorICAgIDEsMCwwLDAsMTE0LDE2MCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzYsCisgICAgMCwwLDAsODIsNSwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LDEsCisgICAgMTksMSwzNiwxLDksMiwxNSwxLDksMSwxMiwxLDExNywxOSwwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywKKyAgICAwLDEyNCwwLDAsOTUsMCwwLDEwMCwyLDAsODMsNDAsNCwwLDAsMCwKKyAgICAxMTcsMzEsMCwwLDAsNzMsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwKKyAgICAxMDUsMTA5LDEwMSw0NiwxMTQsMjksMCwwLDAsNzgsMTE0LDEyMywwLDAsMCw0MCwKKyAgICAxLDAsMCwwLDExNCw0MSwxLDAsMCw0MCwxLDAsMCwwLDExNCw3NSwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAorICAgIDAsMCwxMTQsMjgsMSwwLDAsOTYsNSwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwyLDExNywyOCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLAorICAgIDEzLDAsMCwwLDY3LDAsMCwwLDExNSwyMTYsMSwwLDAsMTAwLDEsMCwKKyAgICAxMjUsMiwwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLAorICAgIDMsMCwyNSwxMjUsMywwLDEyMSwyNSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsCisgICAgMCwwLDEwNiwzLDAsMTMxLDEsMCwxMDYsNCwwLDEyNSw0LDAsODcsMTEwLAorICAgIDI0LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCw3NiwwLDEsMSwxLDEwMCwKKyAgICAxMSwwLDEyNSw0LDAsODksMTEwLDEsMCw4OCwxMjQsNCwwLDEyNCwwLDAsCisgICAgMTA2LDYsMCwxMDcsMywwLDExNCwxMTQsMCwxMjQsMCwwLDEwNiw3LDAsMTMxLAorICAgIDAsMCwxLDEyNCw0LDAsMTI0LDAsMCw5NSw2LDAsMTEwLDAsMCwxMTYsCisgICAgOCwwLDEzMSwwLDAsMTE0LDE0NywwLDEyNCwwLDAsMTA2LDksMCwxMjUsNSwKKyAgICAwLDEyNCwzLDAsMTA2LDEwLDAsMTMxLDAsMCwxMjUsNiwwLDExMCwxNSwwLAorICAgIDEyNCwwLDAsMTA2LDExLDAsMTI1LDUsMCwxMjQsMywwLDEyNSw2LDAsMTI0LAorICAgIDYsMCwxMjQsNSwwLDEwNyw2LDAsMTE0LDQ1LDEsMTE2LDEyLDAsMTI0LDAsCisgICAgMCwxMDYsMywwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExNiwxMywwLAorICAgIDEyNCw3LDAsMTMxLDEsMCwxMTQsNDUsMSwxMjAsOTEsMCwxMjQsMCwwLDEwNiwKKyAgICAxNCwwLDY4LDkzLDcxLDAsOTIsMiwwLDEyNSw4LDAsMTI1LDksMCwxMDAsCisgICAgNSwwLDEyNCw4LDAsMjMsMTI1LDEwLDAsMTE2LDEyLDAsMTI0LDcsMCwxMjQsCisgICAgMTAsMCwxMzEsMiwwLDEyNSwxMSwwLDExNiwxNSwwLDEyNCwxMSwwLDEzMSwxLAorICAgIDAsMTE0LDIxNCwwLDEyNCw5LDAsMTI0LDEsMCwxMjQsMTEsMCwxMzEsMiwwLAorICAgIDEyNCw3LDAsMTAzLDEsMCwxMDIsMiwwLDgzLDExMywyMTQsMCw4NywxMDAsNiwKKyAgICAwLDEyNSwyLDAsMTEzLDQ1LDEsMTEwLDAsMCwxMjAsMTIwLDAsMTI0LDAsMCwKKyAgICAxMDYsMTQsMCw2OCw5MywxMDksMCw5MiwyLDAsMTI1LDgsMCwxMjUsOSwwLAorICAgIDExNiwxMiwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMywwLDEyNCw4LDAsMjMsCisgICAgMTMxLDIsMCwxMjUsMTEsMCwxMTYsMTYsMCwxMDAsNywwLDEwNiwxNywwLDEyNCwKKyAgICAxMSwwLDEzMSwxLDAsMTAwLDgsMCwxMDAsMywwLDEzMSwxLDEsMSwxMjQsCisgICAgNiwwLDEyNCw4LDAsMjMsMTI0LDUsMCwxMDcsNiwwLDExNCw1NSwxLDExNiwKKyAgICAxNSwwLDEyNCwxMSwwLDEzMSwxLDAsMTE0LDE2NCwxLDEyNCw5LDAsMTI0LDEsCisgICAgMCwxMjQsMTEsMCwxMzEsMiwwLDEwMywwLDAsMTAyLDIsMCw4MywxMTMsNTUsCisgICAgMSwxMTMsNTUsMSw4NywxMjQsMiwwLDExNCwyMDYsMSwxMTYsMTYsMCwxMDAsOSwKKyAgICAwLDEwNiwxNywwLDEyNCw3LDAsMTMxLDEsMCwxMzEsMSwwLDEsMTAwLDEwLAorICAgIDAsMTI0LDcsMCwxMDMsMSwwLDEwMiwyLDAsODMsMTAwLDEwLDAsMTAzLDAsCisgICAgMCwxMDIsMiwwLDgzLDQwLDEyLDAsMCwwLDExNywxMjUsMCwwLDAsODQsCisgICAgMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLAorICAgIDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwKKyAgICAzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsCisgICAgMTAyLDQ1LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsNzAsMTE0LDEwMSwwLAorICAgIDAsMCwxMTQsMTAwLDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsNzYsMCwwLAorICAgIDAsODQsMTE3LDksMCwwLDAsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSwKKyAgICAxMTQsMTMwLDAsMCwwLDExNywyNSwwLDAsMCwxMTIsMTExLDExNSwxMTUsMTA1LDk4LAorICAgIDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTIzLDEyNSw3OCwxMTQsMTIzLDAsMCwwLDQwLDE4LDAsMCwwLDExNCwzMiwKKyAgICAwLDAsMCwxMTQsMywwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDM1LDAsCisgICAgMCwwLDExNCwzLDEsMCwwLDExNCw0MCwwLDAsMCwxMTQsNDEsMSwwLAorICAgIDAsMjQ0LDExLDAsMCwwLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNCw2LDAsMCwwLDExNCw0NCwxLDAsMCwxMTQsMTI0LDAsMCwwLAorICAgIDExNCw0MywxLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCwKKyAgICA0MCwxLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsNDYsCisgICAgMCwwLDAsNDAsMTIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwxNzgsMCwKKyAgICAwLDAsMTE2LDEyLDAsMCwwLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsMTE2LDExLDAsMCwwLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNCwxOTMsMCwwLDAsMTE2LDUsMCwwLDAsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTYsMTIsMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTYsOSwwLDAsMCw5OCw5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw5LDEsMCwwLDExNCwxNjAsMCwwLDAsMTE2LDEzLDAsMCwwLAorICAgIDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE2LDksMCwKKyAgICAwLDAsMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODQsMCwwLDAsMTAyLAorICAgIDUsMCwwLDExNSw2NiwwLDAsMCwwLDMsNiwxLDE5LDEsMywxLAorICAgIDI1LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwxMiwyLDksMSw5LDEsCisgICAgMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwxMiwxLDIyLDEsMTAsMSwKKyAgICAxNSwxLDEyLDEsMjYsNCwxMiwyLDIyLDEsMjIsMSwyNSwxLDE2LDEsCisgICAgMTIsMSwyNiwxLDYsMSwxOSwxLDEzLDEsMTE3LDIyLDAsMCwwLDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDksMCwKKyAgICAwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDIsMSwwLDAsMTI0LAorICAgIDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDE5LDAsMTE2LDEsMCwxMDYsMiwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LAorICAgIDMsMCwxMTYsNCwwLDExNiw1LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNjMsCisgICAgMCwxLDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsCisgICAgNiwwLDEwNiw3LDAsMTA2LDgsMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDEwMCwKKyAgICAwLDExNiw5LDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTAsMCwKKyAgICAxMTAsMTExLDAsMTE2LDksMCwxMzEsMCwwLDEyNSwzLDAsMTIwLDkwLDAsMTI0LAorICAgIDIsMCw2OCw5Myw4MiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsMTEsMCwxMDAsCisgICAgMiwwLDEzMSwxLDAsOTIsMywwLDEyNSw1LDAsMTI1LDYsMCwxMjUsNywKKyAgICAwLDEyNCw2LDAsMTE0LDE3OSwwLDEwMCwzLDAsMTA2LDEyLDAsMTI0LDUsMCwKKyAgICAxMjQsNywwLDEwNiwxMywwLDEzMSwwLDAsMTMxLDIsMCwxMjUsOCwwLDExMCwKKyAgICA2LDAsMTI0LDUsMCwxMjUsOCwwLDEyNCwzLDAsMTA2LDE0LDAsMTI0LDgsCisgICAgMCwxMzEsMSwwLDEsMTEzLDExNiwwLDg3LDEyNCwzLDAsMTI0LDAsMCw5NSwKKyAgICAxMCwwLDExNiw2LDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxNSwwLDEzMSwxLAorICAgIDAsMTE0LDI1NCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsCisgICAgNjgsMTMxLDEsMCwxMjQsMCwwLDk1LDE2LDAsMTEwLDAsMCwxMDAsNiwwLAogICAgIDgzLDQwLDcsMCwwLDAsMTE3LDY4LDAsMCwwLDcwLDEwNSwxMDgsMTA4LDMyLAogICAgIDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwKICAgICAxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywKICAgICAxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE3LAotICAgIDMsMCwwLDAsMTE5LDEwNSwxMTAsMTE3LDEsMCwwLDAsNDYsMTE3LDUsMCwKLSAgICAwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDIsMCwwLDAsMTE1LDAsMCwwLDExNSwyNywwLDAsCi0gICAgMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwwLDAsCi0gICAgMTMxLDAsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MCwxLDAsMCwKLSAgICAwLDc4LDQwLDEsMCwwLDAsMTE3LDUsMCwwLDAsMTA4LDExMSwxMTksMTAxLAotICAgIDExNCw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LDQ4LDExNywyLDAsCi0gICAgMCwwLDEwMiwxMTAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKLSAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKLSAgICAxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTQzLDUsCi0gICAgMCwwLDExNSwyLDAsMCwwLDYsMCwxMTcsNDEsMCwwLDAsNzAsMTA1LAotICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLAotICAgIDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDc4LDQwLDE3LDAsMCwwLDExNyw0LDAsCi0gICAgMCwwLDExMiw5NywxMTYsMTA0LDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDcsCi0gICAgMCwwLDAsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNywxNywwLDAsMCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMTE3LDE1LDAsMCwwLDgwLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTgsMCwwLDAsNzgsMTExLDExNiw2NSw2OCwxMDUsMTE0LAotICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwwLAotICAgIDExNSwxMjEsMTE1LDExNyw4LDAsMCwwLDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwKLSAgICAxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LAotICAgIDMsMCwwLDAsMTE1LDEwMSwxMTYsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsCi0gICAgMTA1LDExNiwxMDUsMTExLDExMCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LAotICAgIDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDMsMCwwLDAsOTcsCi0gICAgMTAwLDEwMCwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsCi0gICAgNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsCi0gICAgNzcsODMsMTE3LDE5LDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDAsOSwwLDAsMCwxMTcsCi0gICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKLSAgICAxMDQsMTE3LDgsMCwwLDAsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNywyMSwKLSAgICAwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDk1LAotICAgIDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwxMTcsNCwwLDAsMCwxMDUsMTE2LDEwMSwKLSAgICAxMDksMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDMsMCwwLDAsMTAwLAotICAgIDExMSwxMTYsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTE3LDgsMCwKLSAgICAwLDAsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwKLSAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAotICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LAotICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE0LDUsMCwwLDExNSwzNCwwLDAsMCwwLAotICAgIDIsOSwxLDMsMSwxOSwxLDIyLDMsMTEsMywxOCwxLDE4LDcsOSwKLSAgICAxLDEzLDEsMjQsMSw2LDEsMjcsMiw2LDEsMTcsMSw5LDEsMTgsCi0gICAgMSwxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsMCwxMDIsMiwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsMTI0LDIsMCw4Myw0MCwKLSAgICAzLDAsMCwwLDExNywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLAotICAgIDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCi0gICAgMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwKLSAgICAxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsCi0gICAgMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLAotICAgIDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLAotICAgIDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKLSAgICAxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LAotICAgIDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwxOSwwLAotICAgIDAsMCwxMTUsNDYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsCi0gICAgMTE1LDMzLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTM2LDEsCi0gICAgMCwxNDAsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDQ1LDAsMCwwLDgwLAotICAgIDk3LDExNiwxMDQsMzIsMTA0LDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLAotICAgIDQ2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTE3LDMwLDAsMCwKLSAgICAwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTcsCi0gICAgNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNywxMSwwLAotICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNywxMSwwLAotICAgIDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCw0MCwxLDAsCi0gICAgMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDIsMCwwLDAsCi0gICAgMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMTQsMCwwLDAsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw0MCwwLDAsMCwwLAotICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAotICAgIDExMiw2MiwxMTcsMjQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LAotICAgIDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTU1LAotICAgIDUsMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDIxLDEsMTE3LDU0LAotICAgIDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDMsCi0gICAgMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMTQsMCwwLDAsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSwxMTcsMjQsCi0gICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LAotICAgIDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCwKLSAgICA0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDE0LDAsCi0gICAgMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsCi0gICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCi0gICAgMTEyLDYyLDExNyw5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywKLSAgICAxNDUsNSwwLDAsMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDExNywyMCwwLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwKKyAgICAwLDAsMCwwLDExNCwxMDEsMCwwLDAsMTE3LDUsMCwwLDAsMTIzLDEyNSwKKyAgICA0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDMsMCwwLDAsODMsMCwwLDAsMTE1LDI4LDAsMCwwLDEwNCwwLDAsCisgICAgMTI0LDAsMCw5MywxOCwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwKKyAgICAwLDAsMTQ2LDIsMCwxMTMsNiwwLDgzLDExNCw0LDAsMCwwLDQwLDEsCisgICAgMCwwLDAsMTE0LDEyNCwwLDAsMCw0MCwyLDAsMCwwLDExNCwyMiwwLAorICAgIDAsMCwxMTYsMiwwLDAsMCwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDI0NSw5LDAsMCwwLDYwLDExNSwxMDEsCisgICAgMTE2LDk5LDExMSwxMDksMTEyLDYyLDE3NSw1LDAsMCwxMTUsMiwwLDAsMCw5LAorICAgIDAsMTE3LDQxLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsNjAsMTA4LDExMSwKKyAgICA5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDc4LAorICAgIDQwLDE3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMywwLDAsMCwxMTYsCisgICAgNywwLDAsMCwxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMjQ0LDE3LDAsMCwwLAorICAgIDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwyNDQsMTUsMCwwLDAsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDI0NCwxOCwwLDAsMCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwKKyAgICAxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDcsMCwwLAorICAgIDAsMTE0LDgsMCwwLDAsMTE0LDksMCwwLDAsMTE0LDQyLDEsMCwwLAorICAgIDExNCw0MywxLDAsMCwxMTQsMTA2LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCisgICAgMTI0LDAsMCwwLDI0NCwzLDAsMCwwLDk3LDEwMCwxMDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCw0NCwxLDAsMCw0MCw5LDAsMCwwLDExNCw3NSwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMTE2LDgsMCwwLDAsOTksMTExLDExMCwxMTYsMTAxLDExMCwKKyAgICAxMTYsMTE1LDExNiwyMSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDk1LDExNSwxMTcsMTAyLAorICAgIDEwMiwxMDUsMTIwLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwxMTQsMjQsMSwwLAorICAgIDAsMTE0LDcxLDAsMCwwLDExNCwxOCwxLDAsMCwxMTQsOSwxLDAsMCwKKyAgICAxMTYsOCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNDYsMSwwLAorICAgIDAsMTQ2LDUsMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsMSwKKyAgICAxOSwxLDIyLDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsMSwKKyAgICA2LDEsMjcsMiw2LDEsMTcsMSw5LDEsMTgsMSwxMTcsMjIsMCwwLAorICAgIDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMywwLDAsMCwzLDAsMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwKKyAgICAwLDEzNSwwLDAsMTM1LDEsMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwKKyAgICAxMzQsMCwwLDEyNSwyLDAsMTI0LDIsMCw4Myw0MCwzLDAsMCwwLDExNywKKyAgICAyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LAorICAgIDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwKKyAgICAxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLAorICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNDYsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTE1LDMzLDAsMTE2LDEsCisgICAgMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsCisgICAgMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTM2LDEsMCwxNDAsMSwwLDgzLAorICAgIDQwLDMsMCwwLDAsMTE3LDQ1LDAsMCwwLDgwLDk3LDExNiwxMDQsMzIsMTA0LAorICAgIDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTE3LDMwLDAsMCwwLDExMSwxMTAsMTA4LDEyMSwKKyAgICAzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwKKyAgICAzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzUsMCwwLDAsNDAsCisgICAgMiwwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDE1NywwLDAsMCw0MCwxLAorICAgIDAsMCwwLDExNCwzNSwwLDAsMCw0MCwyLDAsMCwwLDExNCwyMTUsMCwKKyAgICAwLDAsMTE0LDQ1LDEsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDI0NCwyNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsCisgICAgMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxODcsNSwKKyAgICAwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLDEsMjEsMSwxMTcsNTQsMCwKICAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwwLDAsCi0gICAgMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTAyLDEsMCwyMiw4Myw0MCwyLAotICAgIDAsMCwwLDc4LDExNywxNCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDQwLDM3LDExNCw0MSw0MCwxLDAsMCwwLDExNyw0LDAsMCwKLSAgICAwLDExMiw5NywxMTYsMTA0LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAotICAgIDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKLSAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAotICAgIDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDE2Myw1LDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTE3LDE5LDAsMCwwLDcwLDEwNSwxMDgsMTAxLAotICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LAotICAgIDQwLDEzLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLAotICAgIDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICA5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsCi0gICAgOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOCwKLSAgICAwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDE3LDAsMCwwLAotICAgIDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICAxMTUsMTE3LDE3LDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLAotICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDEwMiwxMDUsMTA4LAotICAgIDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LAotICAgIDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAotICAgIDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCi0gICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCi0gICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCi0gICAgMTEyLDYyLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQxLDUsMCwwLDExNSwxNiwwLDAsMCwxNiw3LDYsMiwxMiwxNCwKLSAgICAxMiw0LDYsMiwxMiw0NCwxMiwzMSwxOCwxOCwxMTcsMTAsMCwwLDAsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwwLDExNSw1MCwKLSAgICAwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCi0gICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCi0gICAgMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LAotICAgIDAsMTAwLDYsMCw4Myw0MCw3LDAsMCwwLDExNywxOCwwLDAsMCw5NSwKLSAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwKLSAgICAxMTYsMTE3LDM2LDAsMCwwLDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDMyLDEwOSw5NywKLSAgICAxMTAsOTcsMTAzLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMSwKLSAgICAwLDgzLDQwLDIsMCwwLDAsMTE3LDI0LDAsMCwwLDY1LDk5LDExMywxMTcsCi0gICAgMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsNDYsNzgsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCw5NSwKLSAgICAxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwKLSAgICAxMDgsMTExLDk5LDEwNyw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsCi0gICAgMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKLSAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LAotICAgIDAsMCwwLDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsMTczLDUsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsMCwwLDAsOTUsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LAotICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksNCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLAotICAgIDQwLDIsMCwwLDAsMTE3LDYwLDAsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKLSAgICAxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwzMiwKLSAgICA5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsMTEyLAotICAgIDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCi0gICAgMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwKLSAgICAxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwKLSAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTYsMTIxLDExMiwKLSAgICAxMDEsMTE3LDksMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsMTE3LAotICAgIDEzLDAsMCwwLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksCi0gICAgMTA3LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCi0gICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwKLSAgICAwLDAsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE3Nyw1LDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDIsMTE3LDI3LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDAsNiwwLDAsMCwxMTcsOCwwLDAsMCwKLSAgICA5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsCi0gICAgOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsMTE3LDksMCwwLDAsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCwKLSAgICA5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDAsCi0gICAgMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKLSAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAotICAgIDE4LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywKLSAgICAxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxNjksNSwwLDAsMTE1LDYsMCwwLDAsMTYsCi0gICAgMiw2LDIsMTIsNCwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDk5LDMsMCwwLAotICAgIDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMSwwLDEyNCwKLSAgICAyLDAsMTAwLDIsMCwyNCwxMzEsMiwwLDEyNSwzLDAsMTE2LDEsMCwxMjQsCi0gICAgMywwLDEzMSwxLDAsMTI0LDIsMCwxMDcsMCwwLDExNCw1NSwwLDExNiwyLAotICAgIDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMywwLAotICAgIDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMCwwLDExNCw4NywwLDEwMCw1LDAsCi0gICAgMTA2LDMsMCwxMjQsNCwwLDEyNCwwLDAsMTMxLDIsMCw4MywxMjQsNCwwLAotICAgIDgzLDQwLDYsMCwwLDAsMTE3LDUwLDAsMCwwLDgyLDEwMSwxMTUsMTExLDEwOCwKLSAgICAxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwKLSAgICA5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTcsMSwwLAotICAgIDAsMCw0NiwxMDUsMSwwLDAsMCwxMTcsNTAsMCwwLDAsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLAotICAgIDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMDUsCi0gICAgMCwwLDAsMCwxMTcsNSwwLDAsMCwxMjMsMTI1LDQ2LDEyMywxMjUsNDAsNCwKLSAgICAwLDAsMCwxMTcsNiwwLDAsMCwxMTQsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsMywKLSAgICAwLDAsMCwxMDgsMTAxLDExMCwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LDExNywxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCi0gICAgNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywKLSAgICAwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwxMTcsNCwwLDAsMCw5OCwxMDUsMTE2LDExNSwxMTcsNCwwLAotICAgIDAsMCw5OCw5NywxMTUsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDEzLDAsMCwwLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwKLSAgICAxMTAsOTcsMTA5LDEwMSwxODIsNSwwLDAsMTE1LDEwLDAsMCwwLDAsMiwyMiwKLSAgICAxLDE4LDEsMTUsMSwxMCwxLDExNywxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwKLSAgICAxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDQsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDEzOCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsMCwxMDYsCi0gICAgMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsMCwxMjAsCi0gICAgMTAzLDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDg4LDAsMTI1LDIsMCwxMTYsCi0gICAgNSwwLDEzMSwwLDAsMTQzLDIzLDAsMSwxMjQsMiwwLDEwNiw2LDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDMsMCw4NywxMDAsMiwwLDgxLAotICAgIDg4LDEyNCwzLDAsMTAwLDIsMCwxMDcsOSwwLDExNCwzOCwwLDEyNCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsOCwwLDEwNyw3LDAsMTE0LDEwOSwwLDEyNCwzLDAsODMsCi0gICAgMTE2LDAsMCwxMDYsOCwwLDEyNCwwLDAsMjUsMTA2LDksMCw4MywxMTMsMzgsCi0gICAgMCwxMTMsMzgsMCw4NywxMDAsMiwwLDgzLDEwMCwyLDAsODMsNDAsMywwLAotICAgIDAsMCwxMTcsMjMsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE3LDIyLAotICAgIDAsMCwwLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LAotICAgIDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw3OCw0MCwxMCwwLDAsMCwxMTcsCi0gICAgMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsOSwwLDAsMCwxMDksMTAxLDExNiw5NywKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTcsOSwwLDAsMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsCi0gICAgMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LDk3LDExNCwxMTAsMTE3LDEzLDAsMCwKLSAgICAwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTcsMTgsCisgICAgMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDAsMywwLAorICAgIDAsMCwxMTQsMjE1LDAsMCwwLDExNCw0NSwxLDAsMCwxMTQsNTIsMSwwLAorICAgIDAsMTE0LDQsMCwwLDAsNDAsMiwwLDAsMCwxMTQsMjE1LDAsMCwwLAorICAgIDExNCw0NSwxLDAsMCwxMTQsNSwwLDAsMCwyNDQsOSwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTc3LDUsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMTAsMjEsNiwxMTcsMjAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDE2LAorICAgIDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLAorICAgIDExNCwxMjUsNDEsNDAsMiwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDM1LDAsCisgICAgMCwwLDQwLDEsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw4NywwLDAsMCwKKyAgICAxOTUsNSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywxOSwwLDAsMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLAorICAgIDExNCw5NSw5NSw3OCw0MCwxMywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU1LAorICAgIDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDc2LDAsCisgICAgMCwwLDExNCwyOCwxLDAsMCwxMTQsMTkwLDAsMCwwLDExNCwyMTcsMCwwLAorICAgIDAsMTE0LDE4NCwwLDAsMCwxMTQsNDYsMSwwLDAsMTE0LDIyMSwwLDAsMCwKKyAgICAxMTQsNTMsMSwwLDAsMTE0LDg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwzOSwKKyAgICAxLDAsMCw3Myw1LDAsMCwxMTUsMTYsMCwwLDAsMTIsNyw2LDIsCisgICAgMTIsMTQsMTIsNCw2LDIsMTIsNDQsMTIsMzEsMTgsMTgsMTE0LDM5LDEsMCwKKyAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNjQsMCwwLDAsMTE1LDQ2LDAsMCwwLDEwMSwwLDAsOTAsMSwKKyAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAorICAgIDAsMCw5MCw1LDAsMTAwLDYsMCw4Myw0MCw3LDAsMCwwLDI0NCwxOCwKICAgICAwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLAotICAgIDExMCwxMTYsMTAxLDEyMCwxMTYsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywKLSAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDEwLDAsMCwwLDk1LAotICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsNCwwLDAsMCwxMTcsNCwKLSAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKLSAgICAxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNiwwLDAsMCwKLSAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKLSAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxOTEsNSwwLDAsMTE1LDIwLDAsMCwwLDAsMiw5LDEsCi0gICAgMTksMSwxNiwxLDEwLDEsMjQsMSwxMiwyLDE1LDEsNCwyLDIxLDIsCi0gICAgMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxOTQsMCwwLDAsMTE2LDAsMCwxMjQsMCwKLSAgICAwLDExNiwxLDAsMTMxLDIsMCwxMTUsNDUsMCwxMTYsMiwwLDEwMCwxLDAsCi0gICAgMTA2LDMsMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwKLSAgICAxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwKLSAgICAwLDExNCw3MiwwLDExNiw1LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTEwLDAsMCwxMjQsMSwwLDExNCwxNTYsMCwxMTYsMCwwLDEyNCwxLDAsMTE2LAotICAgIDEsMCwxMzEsMiwwLDExNSwxMDgsMCwxMTYsMiwwLDEwMCw0LDAsMTMxLDEsCi0gICAgMCwxMzAsMSwwLDExMywxNTYsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwKLSAgICAxMDcsNywwLDExNCwxNTYsMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsCi0gICAgMywwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsCi0gICAgMCwxMTMsMTU2LDAsMTEwLDAsMCwxMjQsMCwwLDEyLDExNCwxOTAsMCwxMjQsMiwKLSAgICAwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTkwLDAsMTE2LDUsMCwxMDAsNiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEwMCw3LDAsODMsNDAsOCwwLAotICAgIDAsMCwxMTcsMjgsMCwwLDAsODYsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiw5NywxMTQsCi0gICAgMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMzQsMTE1LDk3LDExMCwKLSAgICAxMDEsMzQsNDYsMTE3LDMxLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCwKLSAgICA5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDExNiwxMTQsNDQsCi0gICAgMzIsMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwxMDUsMCwwLDAsMCwxMTcsMTgsMCwwLAotICAgIDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLAotICAgIDYxLDMyLDQ4LDExNywzMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywKLSAgICAzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMTcsNjEsMCwwLDAsODAsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDE3LDAsMCwwLDY5LDEwOSwKLSAgICAxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCwKLSAgICA0MCw5LDAsMCwwLDExNywxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNywzLDAsMCwwLDExNSwxMTYsMTE0LDExNyw5LDAsMCwKLSAgICAwLDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsCi0gICAgMTExLDExNCwxMDksOTcsMTE2LDExNyw0LDAsMCwwLDExNiwxMjEsMTEyLDEwMSwxMTcsMTAsCi0gICAgMCwwLDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsCi0gICAgMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwxMTcsMTEsMCwwLDAsODMsMTIxLDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsCi0gICAgNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsCi0gICAgMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsMywwLDAsMCwxMDksMTE1LDEwMyw0MCwwLDAsCi0gICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCi0gICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywwLDAsMCw5NSwxMTUsCi0gICAgOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDIwOCw1LDAsMCwxMTUsCi0gICAgMjQsMCwwLDAsMCwyLDE1LDEsMzAsMSwxMiwxLDE1LDEsNiwxLAotICAgIDE1LDEsMTUsMSwxNSwxLDYsMiwyNywxLDE5LDEsMTE3LDEzLDAsMCwKLSAgICAwLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMTE3LDIwLAotICAgIDAsMCwwLDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDksMCwwLDAsMjcsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDIsMCwKLSAgICAwLDEwMCwwLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDEsMCwKLSAgICAxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsMCwxMjQsMywwLDExNCwxNzgsMCwKLSAgICAxMjQsMywwLDExNiwyLDAsMTA2LDMsMCwxMDcsNywwLDExNCw2MiwwLDExNiwKLSAgICA0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwKLSAgICAwLDAsMTE2LDIsMCwxMDYsMywwLDEwNyw2LDAsMTE0LDg4LDAsMTE2LDIsCi0gICAgMCwxMDYsMywwLDEyNCwwLDAsMjUsODMsMTE2LDIsMCwxMDYsMywwLDEyNCwKLSAgICAzLDAsMjUsMTI1LDQsMCwxMjEsMTMsMCwxMjQsNCwwLDEwNiw1LDAsMTI1LAotICAgIDIsMCw4NywxMTMsMTc4LDAsNCwxMTYsNiwwLDEwNywxMCwwLDExNCwxNzQsMCwKLSAgICAxLDEsMSwxMTYsNywwLDEwMCwzLDAsMjMsMTA2LDgsMCwxMjQsMCwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNSwwLDExNiw5LDAsMTI0LDUsMCwxMDAsCi0gICAgNCwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDg5LDExMywxNzgsMCw4OCwKLSAgICAxMTAsMCwwLDExNiwxMCwwLDEyNCwwLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwKLSAgICA2LDAsMTI0LDYsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI1MCwwLDExNiw5LAotICAgIDAsMTE2LDcsMCwxMDYsOCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsNCwwLAotICAgIDEyNCwwLDAsMTMxLDEsMSwxMjUsNywwLDEwMCwxMCwwLDEyNCw3LDAsOTUsCi0gICAgMTIsMCwxMjQsNywwLDEzMCwxLDAsMTEwLDQ3LDAsMTI0LDAsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTA3LDcsMCwxMTQsNDEsMSwxMjQsNiwwLDEwNiwxMywwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxLDExNiwxNCwwLDEwMCw1LDAsMTI0LDAsMCwKLSAgICAxMjQsNiwwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMCwwLDI1LDEyNSw4LDAsMTI0LDMsMCwxMTQsMTA1LDEsMTE2LDIsMCwKLSAgICAxMDYsMywwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTUsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDYsMCwyNSwKLSAgICAxMjQsOCwwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwxNiwwLDEyNCw4LDAsCi0gICAgMTAwLDcsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAyMTIsMSwxMjEsNTksMCwxMjQsOCwwLDEwNiwxNywwLDEyNCw4LDAsOTUsMTgsCi0gICAgMCwxMTYsMTksMCwxMjQsOCwwLDEwMCw4LDAsMTMxLDIsMCwxMTUsMTg3LDEsCi0gICAgMTI0LDgsMCwxMDYsMTgsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDI1LDEyNCw4LDAsOTUsMTgsMCwxMTAsMCwwLDg3LDExMywyMTIsMSwKLSAgICA0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDIwOCwxLDEsMSwxLDg5LDExMywyMTIsCi0gICAgMSw4OCwxMTAsMCwwLDExNiwxOSwwLDEyNCw4LDAsMTAwLDksMCwxMzEsMiwKLSAgICAwLDExNSw4LDIsMTIxLDEzLDAsMTI0LDYsMCwxMjQsOCwwLDk1LDIwLDAsCi0gICAgODcsMTEzLDgsMiw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDQsMiwxLDEsCi0gICAgMSw4OSwxMTMsOCwyLDg4LDExMCwwLDAsMTI0LDgsMCw4Myw0MCwxMSwwLAotICAgIDAsMCw3OCwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsMCwxMTcsMjEsCi0gICAgMCwwLDAsNTksMzIsMTIzLDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTcsMTgsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsMTA1LDIsMCwwLDAsMTE3LDExLDAsCi0gICAgMCwwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLAotICAgIDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsCi0gICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSw4NCw0MCwyMSwwLDAsMCwxMTcsCi0gICAgNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywKLSAgICAxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LAotICAgIDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCwKLSAgICA5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsCi0gICAgMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsOCwwLDAsMCw5NSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTQsMCwwLDAsNjUsMTE2LDExNiwxMTQsMTA1LAotICAgIDk4LDExNywxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCw5NSw2OSwKLSAgICA4Miw4Miw5NSw3Nyw4Myw3MSwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsCi0gICAgMTE2LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwxMTcsMTIsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywxMCwwLDAsMCwKLSAgICA5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsMTAwLDExNywxMSwwLDAsMCwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTYsMCwwLDAsOTUsCi0gICAgMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LAotICAgIDcsMCwwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDcsMCwwLDAsCi0gICAgMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTUsOTUsMTE3LDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSw5NSw5NSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAotICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLAotICAgIDksMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwKLSAgICAwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE3LDQsMCwwLDAsMTEyLDk3LAotICAgIDExNiwxMDQsMTE3LDYsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxMTcsMTMsMCwKLSAgICAwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsCi0gICAgMywwLDAsMCwxMDksMTE1LDEwMywxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDYsMCwwLDAsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKLSAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKLSAgICA2MiwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDIyNyw1LDAsCi0gICAgMCwxMTUsNzYsMCwwLDAsMCwxLDYsMSwxOSwxLDYsMSwxNSwxLAotICAgIDE2LDIsMTUsMSwxMSwyLDEzLDEsMywxLDEzLDEsMTMsMSwyMiwxLAotICAgIDI2LDEsMTUsMSwxMiwxLDI3LDMsOSwxLDksMSwxNSwyLDEzLDEsCi0gICAgMTksMiwxMywxLDYsMiwxMywxLDMyLDIsMjQsMSwzLDEsMTIsMSwKLSAgICAxNSwxLDMyLDEsMTMsMSw4LDIsMTUsMSwzLDEsMTMsMSwxMywxLAotICAgIDgsMSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsCi0gICAgOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDE4LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3NSwwLDAsMCwxMjIsMTYsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTMxLDEsMCwxMjUsMiwwLDg3LDEwMCwxLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEzMSwwLDAsMSw4OCwxMjQsMiwwLDEwNiwzLDAsMTMxLDAsMCwxLAotICAgIDEyMiwxNywwLDExNiw0LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODcsMTAwLDEsMCwxMjQsMiwwLDEwNiw1LDAsMTMxLDAsMCwxLDg4LDEwMCwKLSAgICAxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTQsMCwwLDAsNzAsMTA1LDExMCwKLSAgICAxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCi0gICAgOTksMTA3LDQ2LDc4LDQwLDYsMCwwLDAsMTE3LDE2LDAsMCwwLDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw0LAotICAgIDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMTQsMTAxLDEwOCwxMDEsCi0gICAgOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNywwLDAsMCw5Nyw5OSwxMTMsCi0gICAgMTE3LDEwNSwxMTQsMTAxLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsCi0gICAgMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsCi0gICAgMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsMywwLDAsCi0gICAgMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMDUsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNyw0MCwKLSAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCi0gICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCwKLSAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwyMSw2LAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMCwyLDMsMSwxNiwyLDExLDEsMTAsCi0gICAgMSwzLDEsMTcsMiwxMTcsMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTksMywwLDAsMCwwLDAsMCwKLSAgICAwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTcyLDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsCi0gICAgMCwxLDEyNCwyLDAsMTAwLDEsMCwxMDcsNCwwLDExNCw0OSwwLDExNiwxLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLAotICAgIDExMCwwLDAsMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLAotICAgIDExNiw0LDAsMTA2LDUsMCwxMDcsNywwLDExNCw4NywwLDExNiw2LDAsMTI0LAotICAgIDAsMCwxMTYsNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwKLSAgICAwLDAsMjUsMTI1LDMsMCwxMjQsMywwLDEwMCw0LDAsMTA3LDgsMCwxMTQsCi0gICAgMTU4LDAsMTE2LDIsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMDAsMiwwLDEwNiwKLSAgICAxMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwxMSwwLDEyNCw0LAotICAgIDAsMTAwLDMsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLAotICAgIDExNiwxMiwwLDEyNCwwLDAsMTMxLDEsMCwxLDEyNCwzLDAsODMsNDAsNSwKLSAgICAwLDAsMCwxMTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwKLSAgICAxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNywKLSAgICA5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwKLSAgICAzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLAotICAgIDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLAotICAgIDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsCi0gICAgMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDAsMCwwLDAsMTE3LAotICAgIDQwLDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwKLSAgICAzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw0LDAsMCwKLSAgICAwLDExMCw5NywxMDksMTAxLDc4LDQwLDEzLDAsMCwwLDExNywxMywwLDAsMCwKLSAgICA5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDExNywxMywwLAotICAgIDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LAotICAgIDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDk3LDk5LDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDMsMCwwLDAsMTE1LDEyMSwKLSAgICAxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywxNCwwLAotICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICAxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTIsMCwwLDAsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDYsMCwwLDAsMTAyLAotICAgIDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE5LDAsMCwwLDk1LDEwOCwxMTEsOTksMTA3LDk1LAotICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNSwwLAotICAgIDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwKLSAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLAotICAgIDEwOCwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsCi0gICAgMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwKLSAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKLSAgICAxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDM0LDYsMCwwLDExNSwyOCwwLDAsMCwwLDksMTYsCi0gICAgMSwxMiwxLDIxLDEsMTAsMSwxNSwxLDEzLDEsMTMsMSwxMiwxLDEwLAotICAgIDEsNiwxLDksMSwyMSwxLDEwLDEsMTE3LDExLDAsMCwwLDk1LDEwMywKLSAgICA5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTksMywwLDAsMCwwLDAsCi0gICAgMCwwLDYsMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDI1NCwKLSAgICAwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwKLSAgICAyNTAsMCwxMDAsMiwwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODksMCwxMTYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwKLSAgICAxMDAsMiwwLDEzMSwxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwKLSAgICAxMzEsMiwwLDExNCw4OSwwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKLSAgICA0LDAsMTMxLDEsMCwxLDExMyw4OSwwLDExMCwwLDAsMTIwLDE1OCwwLDEyNCwKLSAgICAxLDAsNjgsOTMsMTQ3LDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LAotICAgIDMsMCwxMzEsMiwwLDExNSw5NiwwLDEwMCw0LDAsMTA2LDUsMCwxMjQsMCwKLSAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLDE3LDAsCi0gICAgMTE2LDcsMCwxMjQsMiwwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMywyNDMsCi0gICAgMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzOSwwLDEsMTI1LDUsMCwxLAotICAgIDEyMiw1MCwwLDExNiw5LDAsMTI0LDUsMCwxMDAsNSwwLDEwMCw3LDAsMTMxLAotICAgIDMsMCwxMTQsMjE4LDAsMTI0LDUsMCwxMDYsMTEsMCwxMjQsNCwwLDEwNywyLAotICAgIDAsMTE0LDIxOCwwLDExOSw5NiwwLDExMywyMTgsMCwxMTAsMCwwLDEzMCwwLDAsCi0gICAgODcsODksMTAwLDYsMCwxMDAsNiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTMsCi0gICAgMjQzLDAsODgsMTEzLDk2LDAsMTEzLDk2LDAsODcsMTEwLDAsMCwxMjQsMCwwLAotICAgIDgzLDQwLDgsMCwwLDAsMTE3LDIzOCwwLDAsMCw3MCwxMDUsMTAzLDExNywxMTQsCi0gICAgMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLAotICAgIDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsCi0gICAgMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLAotICAgIDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsCi0gICAgMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLAotICAgIDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwKLSAgICAxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwKLSAgICAxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNyw4LDAsMCwwLDk1LDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywxLDAsMCwwLDQyLDExNyw3LDAsMCwKLSAgICAwLDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwKLSAgICAxMjMsMTI1LDExNywxMCwwLDAsMCw5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsCi0gICAgMTAwLDc4LDcwLDQwLDEyLDAsMCwwLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsCi0gICAgOTcsMTE2LDExNiwxMTQsMTE3LDQsMCwwLDAsMTA4LDEwNSwxMTUsMTE2LDExNyw2LDAsCi0gICAgMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTAwLDExNyw3LDAsMCwwLDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTE3LAotICAgIDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSwKLSAgICA5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LAotICAgIDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLAotICAgIDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsCi0gICAgMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLDExNyw0LDAsMCwwLAotICAgIDExMCw5NywxMDksMTAxLDQwLDYsMCwwLDAsMTE3LDYsMCwwLDAsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LAotICAgIDExNiwxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsMSwwLAotICAgIDAsMCwxMjAsMTE3LDksMCwwLDAsMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDExNywzLDAsMCwwLDEwMSwxMjAsOTksNDAsMCwwLDAsMCw0MCwwLAotICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LAotICAgIDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDU4LDYsMCwwLDExNSwzNCwKLSAgICAwLDAsMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsMSwyMiwKLSAgICAxLDEzLDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDYsMTgsMSwxNSwKLSAgICAxLDksMSwzMiwxLDExNywxNiwwLDAsMCw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsCi0gICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNzgsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwKLSAgICAxMjUsMSwwLDEyNCwxLDAsMTAwLDYsMCwxMDcsOCwwLDExNCw3NCwwLDEyNCwKLSAgICAwLDAsMTAwLDIsMCwyNSwxMjUsMSwwLDEwMCwzLDAsMTI0LDAsMCwxMDcsCi0gICAgNywwLDExNCw3NCwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsNCwwLDEzMSwxLAotICAgIDAsMTAwLDUsMCwyNSwxMjUsMSwwLDExMyw3NCwwLDExMCwwLDAsMTI0LDEsCi0gICAgMCw4Myw0MCw3LDAsMCwwLDExNywxNjcsMCwwLDAsNjcsOTcsMTA4LDk5LAotICAgIDExNywxMDgsOTcsMTE2LDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksCi0gICAgMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICA5NSw5NSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwKLSAgICAxMTYsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwKLSAgICAxMDEsMTAwLDMyLDExMSwxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsCi0gICAgMTAxLDExNiwzMiwxMTYsMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwKLSAgICAxMTEsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTA1LDExNiwxMTUsMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCi0gICAgMTE3LDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDEsMCwKLSAgICAwLDAsNDYsMTA1LDAsMCwwLDAsNzgsNDAsMywwLDAsMCwxMTcsMywKLSAgICAwLDAsMCwxMDMsMTAxLDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsCi0gICAgMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsMiwKLSAgICAwLDAsMCwxMTcsNywwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNywKLSAgICA3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwwLDAsMCwwLAotICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKLSAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsCi0gICAgOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDkyLDYsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsMTIsMSwKLSAgICAyNSwxLDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDk5LDAsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsCi0gICAgMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMTAyLDIsCi0gICAgMCwxMjUsMCwwLDExNiwzLDAsMTE2LDQsMCwxMDIsMiwwLDEyNSwxLDAsCi0gICAgMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTI1LDIsMCwxMjQsMCwwLDEyNCwKLSAgICAxLDAsMTI0LDIsMCwxMDMsMywwLDgzLDQwLDEsMCwwLDAsMTE3LDExMSwKLSAgICAwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwKLSAgICAxMTYsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQ0LDMyLDk3LDEwOCwxMDgsCi0gICAgMTExLDExOSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLAotICAgIDMyLDMyLDQwLDcsMCwwLDAsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywKLSAgICA0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxOCwwLDAsMCwxMDEsMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywKLSAgICAxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDExNywxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSwKLSAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjAsMCwwLDAsODMsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMTE3LDE3LDAsMCwwLDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLAotICAgIDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLDMsMCwwLDAsMTE3LDEwLDAsMCwKLSAgICAwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDExNSwxMTcsNiwwLDAsMCwKLSAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LAotICAgIDExMSwxMDAsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKLSAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAotICAgIDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMDcsCi0gICAgNiwwLDAsMTE1LDgsMCwwLDAsMCw1LDE4LDEsMTIsMSwxMiwxLAotICAgIDExNywyNywwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwKLSAgICAxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCi0gICAgOTksNSwwLDAsMCwwLDAsMCwwLDksMCwwLDAsNSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwwLDEyNCw0LDAsMTAwLDEsMCwKLSAgICAxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKLSAgICA1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsMywwLDEwNyw5LDAsMTE0LDQ1LAotICAgIDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLDAsMTI1LDYsMCwxMTYsMiwwLAotICAgIDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLDExNiwwLDAsMTI0LDAsMCwxMjQsCi0gICAgNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsNSwwLDEyNCwzLDAsMTE1LDIwNywKLSAgICAwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMjIsMCwxMTYsMCwwLAotICAgIDEyNCwwLDAsMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDEsMCwyNSwKLSAgICAxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwwLDEyNCw1LDAsODMsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiwzLDAsCi0gICAgMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwyNCwxMjUsOCwKLSAgICAwLDExNiw1LDAsMTA2LDYsMCwxMjQsNSwwLDEwNiw3LDAsMTAwLDMsMCwKLSAgICAxMTYsNCwwLDEyNCw1LDAsMTA2LDcsMCwxMzEsMSwwLDEyNCw4LDAsMjQsCi0gICAgMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwxMTYsOCwwLDEyNCw1LDAsMTI0LAotICAgIDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsMTAwLDMsMCw4Myw0MCw0LDAsCi0gICAgMCwwLDExNywyMTQsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLAotICAgIDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LAotICAgIDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LAotICAgIDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTA1LDExMCwKLSAgICAxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTA0LDk3LAotICAgIDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDExMSw5OSw5NywKLSAgICAxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLAotICAgIDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksMzIsOTcsMTE0LDEwMywxMTcsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMTUsMzIsMTE5LAotICAgIDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwKLSAgICAzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMTEsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLAotICAgIDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDYwLDEwMiwxMTQsMTExLDEwOSwKLSAgICAxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwKLSAgICAxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExNCwKLSAgICAxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDQwLDEwMSw0NiwxMDMsCi0gICAgNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LDExMiwxMDcsMTAzLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LDMyLDExOSwxMTEsMTE3LDEwOCwKLSAgICAxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwKLSAgICAzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDEwNSwwLDAsCi0gICAgMCwwLDExNywxLDAsMCwwLDQ2LDc4LDQwLDksMCwwLDAsMTE3LDExLAotICAgIDAsMCwwLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDQsCi0gICAgMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDE3LDAsMCwwLDk1LDk5LDk3LDEwOCwKLSAgICA5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDksMCwKLSAgICAwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMywwLDAsMCwKLSAgICAxMDgsMTAxLDExMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTUsOTUsMTE3LDE2LDAsMCwwLDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCi0gICAgOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw0MCw5LDAsMCwwLDExNyw0LAotICAgIDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDEwMywxMDgsMTExLDk4LAotICAgIDk3LDEwOCwxMTUsMTE3LDYsMCwwLDAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNyw4LAotICAgIDAsMCwwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE3LDUsMCwwLDAsCi0gICAgMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTcsOCwwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNyw3LDAsCi0gICAgMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNywwLDAsMCw5OSwxMTcsCi0gICAgMTE2LDk1LDExMSwxMDIsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCi0gICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCi0gICAgNjIsMTE3LDEwLDAsMCwwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LAotICAgIDExOCw2LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSwxMiwxLDE1LDIsMjQsCi0gICAgMSwxMiwxLDE4LDEsNiwzLDEyLDEsMjMsMSw2LDEsNCw0LDM1LAotICAgIDMsNDAsMiwxMTcsMTAsMCwwLDAsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDE2LDAsMCwwLDEzLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyNCwzLDAsMCwxMjQsMSwwLDk3LAotICAgIDAsMCwxMjQsMCwwLDk3LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsCi0gICAgMCwxMTQsMzMsMCwxMTYsNCwwLDk3LDUsMCwxMTAsNiwwLDExNiw2LDAsCi0gICAgOTcsNSwwLDExNiw3LDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIwLAotICAgIDExOSwwLDExNiwxLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsNjgsOTMsCi0gICAgMTAyLDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwKLSAgICAwLDEyNCwyLDAsMTMxLDIsMCwxMTQsNjcsMCwxMTYsMTEsMCwxMjQsNCwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMTUsMTY5LDAsMTI0LDMsMCwxMTYsMSwwLDEwNiwKLSAgICAxMiwwLDEwNyw2LDAsMTE0LDEzNiwwLDExNiwxMywwLDEyNCw0LDAsOTUsMTQsCi0gICAgMCwxMTMsMTY2LDAsMTE2LDAsMCwxMDYsMTUsMCwxMjQsMywwLDEzMSwxLDAsCi0gICAgMTE0LDE2NiwwLDExNiwxNiwwLDEyNCw0LDAsOTUsMTQsMCwxMTMsMTY2LDAsMTEzLAotICAgIDE2OSwwLDExMyw2NywwLDExMyw2NywwLDg3LDExNiwxLDAsMTA2LDgsMCwxMTYsCi0gICAgMTcsMCwyNSwxMjUsNSwwLDEyMCw3NiwwLDEwMCwyOCwwLDY4LDkzLDY4LDAsCi0gICAgMTI1LDYsMCwxMjQsNiwwLDExNiwxLDAsMTA2LDgsMCwxMDcsNywwLDExNCwKLSAgICAyMzIsMCwxMTYsMTMsMCwxMDYsMTgsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiw4LDAsMTI0LDYsMCwyNSwxMjUsNywKLSAgICAwLDExNiwxOSwwLDEyNCw1LDAsMTI0LDYsMCwxMjQsNywwLDEzMSwzLDAsCi0gICAgMSwxMTMsMTkzLDAsODcsMTAwLDYsMCwxMDAsNywwLDEwMywxLDAsMTAyLDIsCi0gICAgMCwxMDAsOCwwLDEwMCw5LDAsMTAwLDcsMCwxMDMsMiwwLDEwMiwyLDAsCi0gICAgMTAwLDEwLDAsMTAwLDksMCwxMDAsNywwLDEwMywyLDAsMTAyLDIsMCwxMDIsCi0gICAgMywwLDEyNSw4LDAsMTIwLDE4OSwwLDEyNCw4LDAsNjgsOTMsMTY5LDAsOTIsCi0gICAgMiwwLDEyNSw5LDAsMTI1LDEwLDAsMTE2LDIwLDAsMTAwLDExLDAsMTAwLDEyLAotICAgIDAsMTMyLDAsMCwxMjQsMTAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE1LDEwNywKLSAgICAxLDExNiwyMSwwLDEzMCwxLDAsMTI0LDEwLDAsMTAwLDEzLDAsMjUsMTI1LDExLAotICAgIDAsMTI0LDksMCwxMTYsMSwwLDEwNiw4LDAsMTA3LDYsMCwxMTQsMTQ5LDEsCi0gICAgMTE2LDEsMCwxMDYsOCwwLDEyNCw5LDAsMjUsMTI1LDEyLDAsODAsMTEzLDY0LAotICAgIDEsMTIxLDYwLDAsMTE2LDEzLDAsMTA2LDE4LDAsMTI0LDksMCwxMzEsMSwwLAotICAgIDEyNSwxMiwwLDEyNCw5LDAsMTAwLDEwLDAsMTA3LDIsMCwxMTQsMjA3LDEsMTAwLAotICAgIDE0LDAsMTE2LDEsMCwxMDYsMjIsMCwxMDcsNiwwLDExNCwyMDcsMSwxMjQsMTAsCi0gICAgMCwxMDAsMTUsMCwyNSwxMjUsMTEsMCwxMTAsMCwwLDgwLDg3LDExMyw2NCwxLAotICAgIDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LDIzMiwxLDEsMSwxLDExOSw2NCwxLAotICAgIDg5LDExMyw2NCwxLDg4LDExMyw2NCwxLDg3LDExNiwyMywwLDEwMCwxNiwwLDEzMSwKLSAgICAxLDAsMTMwLDEsMCwxMjEsMTksMCwxMTYsMTMsMCwxMDYsMTgsMCwxMDAsMTcsCi0gICAgMCwxMzEsMSwwLDEyNSwxMywwLDg3LDExMCwyNCwwLDQsMTE2LDIzLDAsMTA3LAotICAgIDEwLDAsMTE0LDM4LDIsMSwxLDEsMTAwLDI3LDAsMTI1LDEzLDAsODksMTEwLAotICAgIDEsMCw4OCwxMTYsMTMsMCwxMDYsMTgsMCwxMDAsMTgsMCwxMzEsMSwwLDEyNSwKLSAgICAxNCwwLDEyNCw5LDAsMTAwLDgsMCwxMDcsMiwwLDExNCwxMDAsMiwxMTYsMTMsCi0gICAgMCwxMDYsMTgsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxNSwwLDExNiwxOSwwLAotICAgIDEyNCw1LDAsMTAwLDIwLDAsMTI0LDE1LDAsMTMxLDMsMCwxLDExMCwwLDAsCi0gICAgMTE2LDE5LDAsMTI0LDUsMCwxMDAsMjEsMCwxMjQsMTIsMCwxMzEsMywwLDEsCi0gICAgMTE2LDE5LDAsMTI0LDUsMCwxMDAsMTcsMCwxMjQsMTMsMCwxMzEsMywwLDEsCi0gICAgMTE2LDE5LDAsMTI0LDUsMCwxMDAsMTgsMCwxMjQsMTQsMCwxMzEsMywwLDEsCi0gICAgMTE2LDE5LDAsMTI0LDUsMCwxMDAsMjIsMCwxMjQsMTEsMCwxMzEsMywwLDEsCi0gICAgMTE2LDE5LDAsMTI0LDUsMCwxMDAsMjMsMCwxMTYsMjUsMCwxMjQsMTAsMCwxMzEsCi0gICAgMSwwLDEzMSwzLDAsMSwxMTYsMTksMCwxMjQsNSwwLDEwMCwyNCwwLDExNiwKLSAgICAyNiwwLDEzMSwwLDAsMTMxLDMsMCwxLDExNiwyNywwLDEwNiwyOCwwLDExNiwKLSAgICAwLDAsMTA2LDI5LDAsMTMxLDAsMCwxMzEsMSwwLDEsMTI0LDksMCwxMDAsCi0gICAgOCwwLDEwNywyLDAsMTE0LDIwLDMsMTE2LDMwLDAsMTA2LDMxLDAsMTAwLDI1LAotICAgIDAsMTMxLDEsMCwxLDEwMCwyNiwwLDExNiwyNywwLDEwNyw2LDAsMTE0LDIwLAotICAgIDMsMTAwLDI5LDAsMTE2LDMzLDAsOTUsMzQsMCwxMTMsMjAsMywxMTAsMCwwLAotICAgIDEwMCwyNywwLDgzLDQwLDMwLDAsMCwwLDExNywyNTAsMCwwLDAsODMsMTAxLAotICAgIDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LAotICAgIDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LAotICAgIDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsCi0gICAgMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLAotICAgIDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsCi0gICAgMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLAotICAgIDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LAotICAgIDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNywKLSAgICA5LDAsMCwwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsOCwwLAotICAgIDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE3LDcsMCwwLDAsMTA5LAotICAgIDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsNSwwLDAsMCwxMTIsMTExLDExNSwxMDUsMTIwLAotICAgIDExNywxLDAsMCwwLDQ3LDExNywyLDAsMCwwLDExMCwxMTYsMTE3LDEsMCwKLSAgICAwLDAsOTIsMTE3LDMsMCwwLDAsMTExLDExNSw1MCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwKLSAgICAxMTUsMzMsMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLAotICAgIDMsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTA1LDEsMCwwLDAsCi0gICAgNzgsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCw0MCwyLAotICAgIDAsMCwwLDExNywyLDAsMCwwLDQ2LDQ4LDExNywzLDAsMCwwLDExNSwKLSAgICAxMDEsMTEyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAotICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAotICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksCi0gICAgMCwwLDAsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE5MSw2LDAsMCwKLSAgICAxMTUsMiwwLDAsMCw2LDAsMTE3LDI1LDAsMCwwLDk1LDExNSwxMDEsMTE2LAotICAgIDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMDUsMCwwLDAsMCwxMTcsNywwLDAsMCw2OSwKLSAgICA3Nyw4OCwzMiw3MSw2Nyw2NywxMDUsMSwwLDAsMCwxMTcsMzAsMCwwLDAsCisgICAgMTEwLDExNiwxMDEsMTIwLDExNiwxMTcsMzYsMCwwLDAsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwKKyAgICAxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsCisgICAgMCwxLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMjQsMCwwLDAsCisgICAgNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MCwyLDAsMCwwLDExNCw5NCwKKyAgICAwLDAsMCwyNDQsMTIsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwKKyAgICAxMDgsMTExLDk5LDEwNyw0MCwxLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTQyLDAsCisgICAgMCwwLDIwNSw1LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI4LDAsCisgICAgMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAorICAgIDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDQsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwKKyAgICAwLDEsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw2MCwwLDAsMCwKKyAgICA4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LDExNCwxMDAsMTA4LDEwMSwKKyAgICAxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDMyLDEwMSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQwLDIsMCwKKyAgICAwLDAsMTE0LDk0LDAsMCwwLDExNCw5NSwwLDAsMCw0MCw0LDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTYsOCwwLDAsMCwxMDEsMTIwLDk5LDk1LDExNiwKKyAgICAxMjEsMTEyLDEwMSwxMTYsOSwwLDAsMCwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LAorICAgIDEwMSwxMTYsMTMsMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCwKKyAgICA5Nyw5OSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDE0NSwwLDAsMCwyMDksNSwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwyLDExNywyNywwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSwKKyAgICA5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LAorICAgIDk1LDk1LDc4LDQwLDYsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1NSwwLAorICAgIDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwxNDIsMCwwLAorICAgIDAsMTE0LDE0NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNTQsMSwwLDAsMjAxLAorICAgIDUsMCwwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDQsMTE0LDU0LAorICAgIDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsCisgICAgMTA2LDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLDIsMCwyNCwxMzEsMiwwLAorICAgIDEyNSwzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTI0LDIsMCwxMDcsCisgICAgMCwwLDExNCw1NSwwLDExNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLAorICAgIDAsMTEwLDAsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMCwKKyAgICAwLDExNCw4NywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLDEyNCwwLDAsCisgICAgMTMxLDIsMCw4MywxMjQsNCwwLDgzLDQwLDYsMCwwLDAsMTE3LDUwLDAsCisgICAgMCwwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LAorICAgIDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwKKyAgICAxMTEsMTEwLDEwMSw0NiwxMTQsMTAxLDAsMCwwLDExNCwyOSwwLDAsMCwxMTcsNTAsCisgICAgMCwwLDAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCwKKyAgICA5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwKKyAgICAxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTQsNjcsMCwwLDAsMTE3LDUsMCwwLDAsMTIzLAorICAgIDEyNSw0NiwxMjMsMTI1LDQwLDQsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwzMSwKKyAgICAwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCw0NiwwLDAsMCw0MCw1LDAsCisgICAgMCwwLDExNCw3MSwwLDAsMCwyNDQsNywwLDAsMCwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMjQ0LDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTYsNCwwLAorICAgIDAsMCw5OCwxMDUsMTE2LDExNSwxMTYsNCwwLDAsMCw5OCw5NywxMTUsMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI0NCwxMywKKyAgICAwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMjE0LDUsMCwwLDExNSwxMCwwLDAsMCwwLDIsMjIsMSwxOCwxLDE1LAorICAgIDEsMTAsMSwxMTQsNTgsMSwwLDAsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDEzOCwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsMCwxMDYsMywKKyAgICAwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsMCwxMjAsMTAzLAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDg4LDAsMTI1LDIsMCwxMTYsNSwKKyAgICAwLDEzMSwwLDAsMTQzLDIzLDAsMSwxMjQsMiwwLDEwNiw2LDAsMTI0LDAsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDMsMCw4NywxMDAsMiwwLDgxLDg4LAorICAgIDEyNCwzLDAsMTAwLDIsMCwxMDcsOSwwLDExNCwzOCwwLDEyNCwwLDAsMTE2LAorICAgIDAsMCwxMDYsNywwLDEwNyw3LDAsMTE0LDEwOSwwLDEyNCwzLDAsODMsMTE2LAorICAgIDAsMCwxMDYsNywwLDEyNCwwLDAsMjUsMTA2LDgsMCw4MywxMTMsMzgsMCwKKyAgICAxMTMsMzgsMCw4NywxMDAsMiwwLDgzLDEwMCwyLDAsODMsNDAsMywwLDAsCisgICAgMCwxMTcsMjMsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE3LDIyLDAsCisgICAgMCwwLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLAorICAgIDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw3OCw0MCw5LDAsMCwwLDExNCw3LAorICAgIDAsMCwwLDI0NCw5LDAsMCwwLDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCwxODUsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTg3LDAsMCwwLAorICAgIDExNCw1NCwxLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LAorICAgIDE3MSwwLDAsMCw0MCw0LDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMzUsCisgICAgMCwwLDAsMTE0LDMxLDEsMCwwLDExNCwxNjAsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDEyLDAsMCwKKyAgICAwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMjMsNSwwLAorICAgIDAsMTE1LDIwLDAsMCwwLDAsMiw5LDEsMTksMSwxNiwxLDEwLDEsCisgICAgMjQsMSwxMiwyLDE1LDEsNCwyLDIxLDIsMTE0LDYwLDEsMCwwLDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE5NCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LAorICAgIDEsMCwxMzEsMiwwLDExNSw0NSwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywKKyAgICAwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwKKyAgICAxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LAorICAgIDcyLDAsMTE2LDUsMCwxMDAsMywwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwKKyAgICAwLDEyNCwxLDAsMTE0LDE1NiwwLDExNiwwLDAsMTI0LDEsMCwxMTYsMSwwLAorICAgIDEzMSwyLDAsMTE1LDEwOCwwLDExNiwyLDAsMTAwLDQsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTEzLDE1NiwwLDEyNCwxLDAsMTE2LDYsMCwxMDYsNywwLDEwNyw3LAorICAgIDAsMTE0LDE1NiwwLDEwMCw1LDAsMTI1LDMsMCwxMTYsOCwwLDEyNCwzLDAsCisgICAgMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMywKKyAgICAxNTYsMCwxMTAsMCwwLDEyNCwwLDAsMTIsMTE0LDE5MCwwLDEyNCwyLDAsMTAwLAorICAgIDIsMCwxMDcsMiwwLDExNCwxOTAsMCwxMTYsNSwwLDEwMCw2LDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTAwLDcsMCw4Myw0MCw4LDAsMCwwLAorICAgIDExNywyOCwwLDAsMCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsMTEwLDEwMSwzNCwKKyAgICA0NiwxMTcsMzEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwKKyAgICAxMDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsCisgICAgMTExLDExNiwzMiwxMjMsMTI1LDExNCw2NywwLDAsMCwxMTcsMTgsMCwwLDAsMTA4LAorICAgIDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLAorICAgIDQ4LDExNywzMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsCisgICAgOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsCisgICAgMTE2LDExNCwxMDUsMTEwLDEwMywxMTcsNjEsMCwwLDAsODAsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLAorICAgIDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDE3LDAsMCwwLDY5LDEwOSwxMTIsMTE2LAorICAgIDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MCw5LAorICAgIDAsMCwwLDExNCwyMDIsMCwwLDAsMTE0LDM1LDEsMCwwLDI0NCw5LDAsCisgICAgMCwwLDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDYsMCwwLDAsCisgICAgMTE0LDE1MiwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCw3LDAsMCwwLDExNCwKKyAgICAxNDAsMCwwLDAsMjQ0LDExLDAsMCwwLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDQwLDQsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCw1NiwKKyAgICAxLDAsMCwxMTQsNTcsMSwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsMTMsMCwwLAorICAgIDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywyNDAsNSwKKyAgICAwLDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDMwLDEsMTIsMSwxNSwKKyAgICAxLDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsMjcsMSwxOSwxLDExNCwKKyAgICA2MywxLDAsMCwxMTcsMTYsMCwwLDAsNzgsMTExLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMTcsNCwwLDAsMCwxMjMsMzMsCisgICAgMTE0LDEyNSw5OSwyLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwyNywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNiwyLDAsMCwxMDAsMCwwLDEyNSwKKyAgICAyLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsMiwKKyAgICAwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsMTc4LDAsMTI0LDMsMCwxMTYsMSwKKyAgICAwLDEwNiwyLDAsMTA3LDcsMCwxMTQsNjIsMCwxMTYsMywwLDEyNCwxLDAsCisgICAgMTI0LDMsMCwxMzEsMiwwLDEsMTEwLDAsMCwxMjQsMCwwLDExNiwxLDAsCisgICAgMTA2LDIsMCwxMDcsNiwwLDExNCw4OCwwLDExNiwxLDAsMTA2LDIsMCwxMjQsCisgICAgMCwwLDI1LDgzLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLDI1LDEyNSw0LAorICAgIDAsMTIxLDEzLDAsMTI0LDQsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEzLDE3OCwKKyAgICAwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDYsCisgICAgMCwxMDAsMywwLDIzLDEwNiw3LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLAorICAgIDAsMTI1LDUsMCwxMTYsOCwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLAorICAgIDEzMSwxLDEsMTMwLDEsMCw4OSwxMTMsMTc4LDAsODgsMTEwLDAsMCwxMTYsOSwKKyAgICAwLDEyNCwwLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw2LDAsMTI0LDYsMCwKKyAgICAxMDAsMCwwLDEwNyw4LDAsMTE0LDIzNSwwLDExNiw4LDAsMTE2LDYsMCwxMDYsCisgICAgNywwLDEyNCwwLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsCisgICAgMSwxMzAsMSwwLDExMCw0NywwLDEyNCwwLDAsMTE2LDEsMCwxMDYsMiwwLAorICAgIDEwNyw3LDAsMTE0LDI2LDEsMTI0LDYsMCwxMDYsMTAsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMSwxMTYsMTEsMCwxMDAsNSwwLDEyNCwwLDAsMTI0LDYsMCwxMzEsCisgICAgMywwLDEsMTEwLDAsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwyNSwKKyAgICAxMjUsNywwLDEyNCwzLDAsMTE0LDkwLDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwKKyAgICAzLDAsMjUsMTI1LDQsMCwxMTYsMTIsMCwxMjQsNCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDYsMCwyNSwxMjQsNywwLDEzMSwKKyAgICAzLDAsMSwxMTAsMCwwLDExNiwxMywwLDEyNCw3LDAsMTAwLDcsMCwxMDAsCisgICAgMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxOTcsMSwxMjEsNTksCisgICAgMCwxMjQsNywwLDEwNiwxNCwwLDEyNCw3LDAsOTUsMTUsMCwxMTYsMTYsMCwKKyAgICAxMjQsNywwLDEwMCw4LDAsMTMxLDIsMCwxMTUsMTcyLDEsMTI0LDcsMCwxMDYsCisgICAgMTUsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsMiwwLDI1LDEyNCwKKyAgICA3LDAsOTUsMTUsMCwxMTAsMCwwLDg3LDExMywxOTcsMSw0LDExNiw1LDAsCisgICAgMTA3LDEwLDAsMTE0LDE5MywxLDEsMSwxLDg5LDExMywxOTcsMSw4OCwxMTAsMCwKKyAgICAwLDExNiwxMywwLDEyNCw3LDAsMTAwLDksMCwxMDAsMCwwLDEzMSwzLDAsCisgICAgMTAwLDAsMCwxMDcsOCwwLDExNCwyLDIsMTIxLDEzLDAsMTI0LDYsMCwxMjQsCisgICAgNywwLDk1LDE3LDAsODcsMTEzLDIsMiw0LDExNiw1LDAsMTA3LDEwLDAsCisgICAgMTE0LDI1NCwxLDEsMSwxLDg5LDExMywyLDIsODgsMTEwLDAsMCwxMjQsNywKKyAgICAwLDgzLDQwLDEwLDAsMCwwLDc4LDExNCwxMDEsMCwwLDAsMTE0LDY3LDAsCisgICAgMCwwLDExNywyMSwwLDAsMCw1OSwzMiwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCw3MSwwLDAsCisgICAgMCwxMTcsMTgsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDEwMCwwLDAsMCwxMTQsMTU4LDAsCisgICAgMCwwLDExNCwxNTksMCwwLDAsMTE0LDE3MSwwLDAsMCw0MCwxOCwwLDAsCisgICAgMCwxMTQsMzIsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDE0MCwwLDAsMCwKKyAgICAxMTQsOTksMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTU0LDAsMCwwLDI0NCwKKyAgICA4LDAsMCwwLDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCw0NiwwLDAsCisgICAgMCwxMTQsMTU3LDAsMCwwLDExNCw2MCwxLDAsMCwxMTQsMjE4LDAsMCwwLAorICAgIDExNCwxMzcsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDE3MSwKKyAgICAwLDAsMCw0MCw4LDAsMCwwLDExNCw3MSwwLDAsMCwyNDQsNywwLAorICAgIDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTQsMzUsMCwwLDAsMTE0LDYsCisgICAgMSwwLDAsMTE2LDEzLDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE4OSwwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwKKyAgICAxNjEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjQ0LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsCisgICAgMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCw0LAorICAgIDYsMCwwLDExNSw3MiwwLDAsMCwwLDEsNiwxLDE5LDEsNiwxLAorICAgIDE1LDEsMTYsMiwxNSwxLDExLDIsMTMsMSwzLDEsMTMsMSwxMywxLAorICAgIDIyLDEsMjYsMSwxNSwxLDEyLDEsMzAsMSwxNSwyLDEzLDEsMTksMiwKKyAgICAxMywxLDYsMiwxMywxLDMyLDIsMjQsMSwzLDEsMTIsMSwxNSwxLAorICAgIDMyLDEsMTMsMSw4LDIsMjQsMSwzLDEsMTMsMSwxMywxLDgsMSwKKyAgICAxMTQsNjYsMSwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMTgsMCwwLDAsNjcsMCwwLDAsMTE1LDc1LDAsMCwwLDEyMiwKKyAgICAxNiwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTAwLAorICAgIDEsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDg4LDEyNCwyLDAsCisgICAgMTA2LDMsMCwxMzEsMCwwLDEsMTIyLDE3LDAsMTE2LDQsMCwxMjQsMCwwLAorICAgIDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMDAsMSwwLDEyNCwyLDAsMTA2LDUsCisgICAgMCwxMzEsMCwwLDEsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICA1NCwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwKKyAgICAxMDAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDAsNiwwLDAsMCwKKyAgICAxMTQsOTMsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCw5NSwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDY2LDEsMCwwLDExNCw4NCwwLDAsMCw0MCwzLAorICAgIDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsNjUsMSwwLDAsMTE0LDY5LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDI0NCwxNCwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCw1MCw2LDAsMCwxMTUsMTQsMCwwLDAsMCwyLDMsCisgICAgMSwxNiwyLDExLDEsMTAsMSwzLDEsMTcsMiwxMTQsNjcsMSwwLDAsCisgICAgOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTcyLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxLDEyNCwyLDAsMTAwLDEsMCwKKyAgICAxMDcsNCwwLDExNCw0OSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTMxLDMsMCwxMjUsMCwwLDExMCwwLDAsMTE2LDIsMCwxMDYsMywKKyAgICAwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsMTA2LDUsMCwxMDcsNywKKyAgICAwLDExNCw4NywwLDExNiw2LDAsMTI0LDAsMCwxMTYsNywwLDEzMSwyLDAsCisgICAgODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsMTI1LDMsMCwxMjQsMywKKyAgICAwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTU4LDAsMTE2LDIsMCwxMDYsOCwwLAorICAgIDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLAorICAgIDEsMSwxMzAsMSwwLDExMCwwLDAsMTE2LDExLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDEsMTI0LDMsMCw4Myw0MCw1LDAsMCwwLDExNyw1MCwxLDAsMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LAorICAgIDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLAorICAgIDEwMywzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwKKyAgICAxMTYsMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwKKyAgICAxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsCisgICAgMTE2LDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLAorICAgIDk3LDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAorICAgIDk3LDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLAorICAgIDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLAorICAgIDExNiwxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LAorICAgIDk1LDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTQsNjcsMCwwLDAsNzgsMTE3LDQwLDAsMCwwLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLAorICAgIDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDExNCw3MSwwLDAsMCw0MCwxMiwwLDAsMCwxMTQsCisgICAgNjMsMSwwLDAsMTE0LDU4LDEsMCwwLDExNCw5NCwwLDAsMCwxMTQsNTUsCisgICAgMSwwLDAsMTE0LDcsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsNjcsMSwKKyAgICAwLDAsMjQ0LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTE0LDk1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsMTU3LDAsMCwKKyAgICAwLDExNCw5NiwwLDAsMCw0MCw1LDAsMCwwLDExNCw3MSwwLDAsMCwKKyAgICAxMTQsNTYsMSwwLDAsMTE0LDU3LDEsMCwwLDExNCwxNjEsMCwwLDAsMTE0LAorICAgIDEzNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsNjgsMSwwLDAsNjMsNiwwLDAsMTE1LDI2LDAsMCwKKyAgICAwLDAsOSwxNiwxLDEyLDEsMjEsMSwxMCwxLDE1LDEsMTMsMSwxMywKKyAgICAxLDEyLDEsMTAsMiwxNSwxLDIxLDEsMTAsMSwxMTQsNjgsMSwwLDAsCisgICAgOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEsMSwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwMCwxLDAsMTMxLDIsMCwxMTQsMjUzLDAsMTAwLDIsMCwxMjQsMSwwLDEwNywKKyAgICA2LDAsMTE0LDg5LDAsMTE2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDEsCisgICAgMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsODksMCwxMjQsMSwwLAorICAgIDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLDAsMSwxMTMsODksMCwKKyAgICAxMTAsMCwwLDEyMCwxNjEsMCwxMjQsMSwwLDY4LDkzLDE1MCwwLDEyNSwzLDAsCisgICAgMTE2LDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTYsMCwxMDAsCisgICAgNCwwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsCisgICAgMCwxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLAorICAgIDEzMSwyLDAsMSw4NywxMTMsMjQ2LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKKyAgICAyNDIsMCwxLDEyNSw1LDAsMSwxMjIsNTMsMCwxMTYsOSwwLDEyNCw1LDAsCisgICAgMTMxLDEsMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwwLDExNCwyMjEsMCwxMjQsCisgICAgNSwwLDEwNiwxMiwwLDEyNCw0LDAsMTA3LDIsMCwxMTQsMjIxLDAsMTE5LDk2LAorICAgIDAsMTEzLDIyMSwwLDExMCwwLDAsMTMwLDAsMCw4Nyw4OSwxMDAsNSwwLDEwMCwKKyAgICA1LDAsMTI1LDUsMCwxMjYsNSwwLDg4LDExMywyNDYsMCw4OCwxMTMsOTYsMCwKKyAgICAxMTMsOTYsMCw4NywxMTAsMCwwLDEyNCwwLDAsODMsNDAsNiwwLDAsMCwKKyAgICAxMTcsMjM4LDAsMCwwLDcwLDEwNSwxMDMsMTE3LDExNCwxMDEsMzIsMTExLDExNywxMTYsMzIsCisgICAgMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMzIsCisgICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwzMiwKKyAgICAxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiw5OSwKKyAgICA5NywxMDgsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiw5NywKKyAgICAxMDcsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNDYsMzIsNzMsMTE2LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMCwxMDEsOTksMTExLDExNywxMTIsMTA4LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDM5LDExNSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE0LDE1OSwwLDAsMCwyNDUsMSwwLDAsMCw0MiwyNDQsNywKKyAgICAwLDAsMCw5NSw5NSw5NywxMDgsMTA4LDk1LDk1LDExNyw1LDAsMCwwLDEyMywKKyAgICAxMjUsNDYsMTIzLDEyNSw3OCw0MCwxMywwLDAsMCwxMTQsNTksMCwwLDAsMjQ0LAorICAgIDQsMCwwLDAsMTA4LDEwNSwxMTUsMTE2LDI0NCw2LDAsMCwwLDExNCwxMDEsMTA5LAorICAgIDExMSwxMTgsMTAxLDExNCwyMDcsMCwwLDAsMTE0LDcwLDEsMCwwLDExNCw0NiwwLAorICAgIDAsMCwxMTQsNTYsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxNTcsMCwwLAorICAgIDAsMTE0LDM1LDEsMCwwLDExNCw5LDAsMCwwLDI0NCwxNSwwLDAsMCwKKyAgICA5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwxMTQsCisgICAgNzEsMCwwLDAsNDAsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLDI0NCw4LAorICAgIDAsMCwwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE0LDY1LDEsMCwwLAorICAgIDExNCwxNiwwLDAsMCwxMTYsOSwwLDAsMCwxMDIsMTE0LDExMSwxMDksOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE0LDI0OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyNDQsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDg3LDYsMCwwLAorICAgIDExNSwzNCwwLDAsMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsCisgICAgMSwyMiwxLDEzLDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDQsMjEsCisgICAgMSwxNSwxLDksMSwzMiwxLDExNCw3NSwxLDAsMCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw3OCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsCisgICAgMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDc0LAorICAgIDAsMTI0LDAsMCwxMDAsMywwLDI1LDEyNSwxLDAsMTAwLDQsMCwxMjQsMCwKKyAgICAwLDEwNyw3LDAsMTE0LDc0LDAsMTI0LDEsMCwxMDYsMSwwLDEwMCw1LDAsCisgICAgMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSwxLDAsMTEzLDc0LDAsMTEwLDAsMCwKKyAgICAxMjQsMSwwLDgzLDQwLDcsMCwwLDAsMTE3LDE2NywwLDAsMCw2Nyw5NywKKyAgICAxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKKyAgICA5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsCisgICAgOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLAorICAgIDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsCisgICAgMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE0LDE1OCwwLDAsMCw3OCwxMTQsNTYsMCwwLDAsCisgICAgMTE0LDE1OSwwLDAsMCwxMTQsMTAxLDAsMCwwLDExNCw2NywwLDAsMCw0MCwKKyAgICAyLDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMzIsMCwwLDAsNDAsMiwKKyAgICAwLDAsMCwyNDQsNywwLDAsMCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNCwKKyAgICA1NiwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwyNDQsMTcsMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTksNiwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDAsNywxNSwxLDEyLDEsMTAsMSwxMiwxLDI1LDEsMTE0LDc3LAorICAgIDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsCisgICAgMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwKKyAgICAzLDAsMTE2LDQsMCwxMDIsMiwwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwKKyAgICAwLDEwMiwyLDAsMTI1LDIsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwKKyAgICAxMDMsMywwLDgzLDQwLDEsMCwwLDAsMTE3LDExMSwwLDAsMCw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwKKyAgICAxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQ0LDMyLDk3LDEwOCwxMDgsMTExLDExOSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDQwLDcsMCwKKyAgICAwLDAsMTE0LDgsMSwwLDAsMTE0LDk0LDAsMCwwLDI0NCwxOCwwLDAsCisgICAgMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDEyMCwxMDEsMTE1LDExNCwyLDEsMCwwLDExNCwxMTksMCwwLDAsMTE0LDcsMSwKKyAgICAwLDAsMjQ0LDE3LDAsMCwwLDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LAorICAgIDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLDMsMCwwLDAsMTE2LDEwLDAsCisgICAgMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDExNSwxMTYsNiwwLDAsCisgICAgMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNiw4LDAsMCwwLDk4LDEyMSwxMTYsMTAxLAorICAgIDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwyMzQsMCwwLDAsMTM0LDYsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsNSwxOCwxLDEyLDEsMTIsMSwxMTQsMjM0LDAsMCwwLDk5LDUsCisgICAgMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIyNywwLDAsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsCisgICAgMCwxMTQsMjcsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNSwwLAorICAgIDExMCw1NCwwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOSwwLDExNCw0NSwwLDEyNCwKKyAgICAxLDAsMTEwLDMsMCwxMDUsMCwwLDEyNSw2LDAsMTE2LDEsMCwxMjQsNiwKKyAgICAwLDEzMSwxLDAsMTI1LDcsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDcsMCwKKyAgICAxMjQsNCwwLDEzMSwzLDAsMTI1LDUsMCwxMjQsMywwLDExNSwyMDcsMCwxMjQsCisgICAgNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTIyLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsCisgICAgMCw4MywxMjQsMCwwLDExNSwxMzIsMCwxMjQsNSwwLDgzLDExNiwzLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDExNiwzLDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwzLAorICAgIDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMjQsMTI1LDgsMCwxMTYsCisgICAgNCwwLDEwNiw1LDAsMTI0LDUsMCwxMDYsNiwwLDEwMCwyLDAsMTE2LDMsCisgICAgMCwxMjQsNSwwLDEwNiw2LDAsMTMxLDEsMCwxMjQsOCwwLDI0LDEzMywyLAorICAgIDAsMjUsMjUsODMsMTEwLDE2LDAsMTE2LDcsMCwxMjQsNSwwLDEyNCwzLDAsCisgICAgMTE2LDAsMCwxMzEsMywwLDgzLDEwMCwyLDAsODMsNDAsNCwwLDAsMCwKKyAgICAxMTcsMjE0LDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKKyAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLAorICAgIDEwMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICAzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLAorICAgIDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwKKyAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsCisgICAgMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsCisgICAgMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsCisgICAgMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwKKyAgICAxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAorICAgIDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLAorICAgIDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLAorICAgIDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsNjcsMCwwLDAsCisgICAgNzgsMTE0LDEwMSwwLDAsMCw0MCw4LDAsMCwwLDExNCw2OCwxLDAsMCwKKyAgICAxMTQsNzcsMSwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LAorICAgIDcsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDc1LAorICAgIDEsMCwwLDQwLDksMCwwLDAsMTE0LDcxLDAsMCwwLDExNCw3NiwxLAorICAgIDAsMCwyNDQsNiwwLDAsMCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMTE0LDc0LDEsCisgICAgMCwwLDExNCw1NywxLDAsMCwxMTQsMTYxLDAsMCwwLDExNiw4LDAsMCwKKyAgICAwLDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE0LDU2LDEsMCwwLDExNiw3LAorICAgIDAsMCwwLDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDE0NSw2LDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMCwxMSwxMiwxLDE1LDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLAorICAgIDEsMjMsMSw2LDEsNCw0LDM1LDMsNDAsMiwxMTQsODEsMSwwLDAsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDE2LDAsMCwwLDEzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyMzcsMiwwLDAsMTI0LDEsMCw5NywwLDAsCisgICAgMTI0LDAsMCw5NywxLDAsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE0LAorICAgIDMzLDAsMTE2LDQsMCw5Nyw1LDAsMTEwLDYsMCwxMTYsNiwwLDk3LDUsCisgICAgMCwxMTYsNywwLDExNiwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMCwxMjgsMCwKKyAgICAxMTYsMSwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDY4LDkzLDExMSwwLAorICAgIDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsCisgICAgMiwwLDEzMSwyLDAsMTE0LDY3LDAsMTE2LDExLDAsMTI0LDQsMCwxMDAsMSwKKyAgICAwLDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE3OCwwLAorICAgIDEyNCwzLDAsMTE2LDEsMCwxMDYsMTIsMCwxMDcsNiwwLDExNCwxNDUsMCwxMTYsCisgICAgMTMsMCwxMjQsNCwwLDk1LDE0LDAsMTEzLDE3NSwwLDExNiwwLDAsMTA2LDE1LAorICAgIDAsMTI0LDMsMCwxMzEsMSwwLDExNCwxNzUsMCwxMTYsMTYsMCwxMjQsNCwwLAorICAgIDk1LDE0LDAsMTEzLDE3NSwwLDExMywxNzgsMCwxMTMsNjcsMCwxMTMsNjcsMCw4NywKKyAgICAxMTYsMSwwLDEwNiw4LDAsMTE2LDE3LDAsMjUsMTI1LDUsMCwxMjAsNzYsMCwKKyAgICAxMDAsMjcsMCw2OCw5Myw2OCwwLDEyNSw2LDAsMTI0LDYsMCwxMTYsMSwwLAorICAgIDEwNiw4LDAsMTA3LDcsMCwxMTQsMjQxLDAsMTE2LDEzLDAsMTA2LDE4LDAsMTI0LAorICAgIDYsMCwxMzEsMSwwLDEyNSw3LDAsMTEwLDEzLDAsMTE2LDEsMCwxMDYsOCwKKyAgICAwLDEyNCw2LDAsMjUsMTI1LDcsMCwxMTYsMTksMCwxMjQsNSwwLDEyNCw2LAorICAgIDAsMTI0LDcsMCwxMzEsMywwLDEsMTEzLDIwMiwwLDg3LDEwMCw3LDAsMTAwLAorICAgIDgsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDksMCwxMDAsMTAsMCwxMDAsOCwKKyAgICAwLDEwMywyLDAsMTAyLDIsMCwxMDIsMiwwLDEyNSw4LDAsMTIwLDE0OSwwLAorICAgIDEyNCw4LDAsNjgsOTMsMTI5LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsCisgICAgMTE2LDIwLDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMjQsMTAsMCw2OCwKKyAgICAxMzEsMSwwLDEzMSwxLDAsMTE1LDEwMSwxLDExNiwyMSwwLDEzMCwxLDAsMTI0LAorICAgIDEwLDAsMTAwLDEzLDAsMjUsMTI1LDExLDAsMTI0LDksMCwxMTYsMSwwLDEwNiwKKyAgICA4LDAsMTA3LDYsMCwxMTQsMTQzLDEsMTE2LDEsMCwxMDYsOCwwLDEyNCw5LAorICAgIDAsMjUsMTI1LDEyLDAsODAsMTEzLDU4LDEsMTIxLDIwLDAsMTE2LDEzLDAsMTA2LAorICAgIDE4LDAsMTI0LDksMCwxMzEsMSwwLDEyNSwxMiwwLDgwLDg3LDExMyw1OCwxLAorICAgIDQsMTE2LDIyLDAsMTA3LDEwLDAsMTE0LDE4NiwxLDEsMSwxLDExOSw1OCwxLAorICAgIDg5LDExMyw1OCwxLDg4LDExMyw1OCwxLDg3LDExNiwyMiwwLDEwMCwxNCwwLDEzMSwKKyAgICAxLDAsMTMwLDEsMCwxMjEsMTksMCwxMTYsMTMsMCwxMDYsMTgsMCwxMDAsMTUsCisgICAgMCwxMzEsMSwwLDEyNSwxMywwLDg3LDExMCwyNCwwLDQsMTE2LDIyLDAsMTA3LAorICAgIDEwLDAsMTE0LDI0OCwxLDEsMSwxLDEwMCwyLDAsMTI1LDEzLDAsODksMTEwLAorICAgIDEsMCw4OCwxMTYsMTMsMCwxMDYsMTgsMCwxMDAsMTYsMCwxMzEsMSwwLDEyNSwKKyAgICAxNCwwLDEyNCw5LDAsMTAwLDksMCwxMDcsMiwwLDExNCw1NCwyLDExNiwxMywKKyAgICAwLDEwNiwxOCwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDE1LDAsMTE2LDE5LDAsCisgICAgMTI0LDUsMCwxMDAsMTgsMCwxMjQsMTUsMCwxMzEsMywwLDEsMTEwLDAsMCwKKyAgICAxMTYsMTksMCwxMjQsNSwwLDEwMCwxOSwwLDEyNCwxMiwwLDEzMSwzLDAsMSwKKyAgICAxMTYsMTksMCwxMjQsNSwwLDEwMCwxNSwwLDEyNCwxMywwLDEzMSwzLDAsMSwKKyAgICAxMTYsMTksMCwxMjQsNSwwLDEwMCwxNiwwLDEyNCwxNCwwLDEzMSwzLDAsMSwKKyAgICAxMTYsMTksMCwxMjQsNSwwLDEwMCwyMCwwLDEyNCwxMSwwLDEzMSwzLDAsMSwKKyAgICAxMTYsMTksMCwxMjQsNSwwLDEwMCwyMSwwLDEwMCwyMiwwLDEwNiwyMywwLDEyNCwKKyAgICAxMCwwLDEzMSwxLDAsMTMxLDMsMCwxLDExNiwxOSwwLDEyNCw1LDAsMTAwLAorICAgIDIzLDAsMTE2LDI0LDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDI1LDAsMTA2LAorICAgIDI2LDAsMTE2LDAsMCwxMDYsMjcsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsCisgICAgOSwwLDEwMCw5LDAsMTA3LDIsMCwxMTQsMjMzLDIsMTE2LDI4LDAsMTA2LDI5LAorICAgIDAsMTAwLDI0LDAsMTMxLDEsMCwxLDEwMCwyNSwwLDExNiwyNSwwLDEwNyw2LAorICAgIDAsMTE0LDIzMywyLDEwMCwyNiwwLDExNiwzMCwwLDk1LDMxLDAsMTEzLDIzMywyLAorICAgIDExMCwwLDAsMTAwLDIsMCw4Myw0MCwyOCwwLDAsMCwxMTcsMjUwLDAsMCwKKyAgICAwLDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDMyLDk4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLAorICAgIDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwKKyAgICAxMTUsMTIxLDExNSwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSwKKyAgICA5OSwxMDEsMTE1LDExNSwzMiw5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsCisgICAgMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwKKyAgICAxMDEsMTIwLDExMiwxMDgsMTA1LDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsCisgICAgMTAwLDMyLDEwNSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE3MSwwLDAsMCwKKyAgICA3OCwxMTQsNDgsMCwwLDAsMTE0LDE4NSwwLDAsMCwyNDQsOCwwLDAsMCwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE0LDIwMSwwLDAsMCwxMTYsNSwwLAorICAgIDAsMCwxMTIsMTExLDExNSwxMDUsMTIwLDI0NSwxLDAsMCwwLDQ3LDI0NCwyLDAsCisgICAgMCwwLDExMCwxMTYsMjQ1LDEsMCwwLDAsOTIsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LAorICAgIDMzLDAsMCwwLDEyNCwwLDAsOTMsMjMsMCwxMjUsMSwwLDExNiwwLDAsCisgICAgMTI0LDEsMCwxMzEsMSwwLDEwMCwwLDAsMTA3LDIsMCw4NiwxLDExMywzLAorICAgIDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNCwyOSwwLDAsMCw3OCwKKyAgICA0MCwxLDAsMCwwLDExNCwzMSwwLDAsMCw0MCwyLDAsMCwwLDExNCwKKyAgICAyMiwwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNDMsMCwwLDAsMjE4LDYsMCwKKyAgICAwLDExNSwyLDAsMCwwLDYsMCwxMTcsMjUsMCwwLDAsOTUsMTE1LDEwMSwKKyAgICAxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwKKyAgICAxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw2NywwLDAsMCwxMTcsMzAsMCwwLDAsCiAgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNyw3LAotICAgIDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDgsMCwwLDAsOTUsCi0gICAgMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsMTE3LDYsMCwwLDAsMTE5LDEwNSwxMTAsMTE0LAotICAgIDEwMSwxMDMsMTE3LDcsMCwwLDAsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDMsCi0gICAgMCwwLDAsOTUsMTExLDExNSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMTUsMTAxLDExMiwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsCi0gICAgOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMTE3LDQsMCwwLDAsNDYsMTEyLDEyMSwxMTksCi0gICAgMTE3LDYsMCwwLDAsOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDc4LDQwLDQsMCwwLAotICAgIDAsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsOSwwLDAsMCw5NSwxMTksCi0gICAgOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDgsMCwwLDAsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsMTE1LDExNyw3LDAsMCwwLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsCi0gICAgODQsNDAsMzUsMCwwLDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LAotICAgIDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsCi0gICAgMTE1LDExNyw4LDAsMCwwLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE3LDI3LAotICAgIDAsMCwwLDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LAotICAgIDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywxNywKLSAgICAwLDAsMCw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCwKLSAgICA3Myw4OCw2OSw4MywxMTcsMjMsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsCi0gICAgODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsCi0gICAgMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsMTAxLDExNyw3LDAsMCwwLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNSwxMTcsNSwwLDAsMCwxMDUsMTE2LDEwMSwxMDksMTE1LDExNywKLSAgICAxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDExNyw3LAotICAgIDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDIwLDAsMCwwLDk4LAotICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywKLSAgICAxMDksMTAxLDExNSwxMTcsMTUsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDk1LDk1LDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTAyLDExNCwKLSAgICAxMTEsMTIyLDEwMSwxMTAsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsMCwxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKLSAgICAxMTcsMywwLDAsMCw5NywxMDgsMTA4LDExNywxNCwwLDAsMCw2NSwxMTUsMTE1LAotICAgIDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLDAsMCwKLSAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAotICAgIDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywxNiwwLDAsMCw5NSwxMDksOTcsCi0gICAgMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsMTgsMCwKLSAgICAwLDAsNjksODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsCi0gICAgNzMsODgsNjksODMsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LAotICAgIDE4LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsCi0gICAgMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE3LDE1LDAsMCwwLDgzLDc5LDg1LDgyLDY3LAotICAgIDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw2LDAsMCwwLDk3LAotICAgIDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDIxLAotICAgIDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsCi0gICAgMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCw2OCw2OSw2NiwKLSAgICA4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCw0MCwxNiwwLDAsMCwxMTcsMTAsMCwKLSAgICAwLDAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwKLSAgICAwLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsCi0gICAgMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDQsMCwwLAotICAgIDAsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE3LDExLDAsMCwwLDExNSwxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTcsMTIsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE3LDE0LDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNywxMCwwLDAsMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LDk3LAotICAgIDEwNSwxMDgsMTE1LDExNywxMCwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwKLSAgICAxMTEsMTE1LDExNywxNSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywKLSAgICAxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDExNyw4LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LAotICAgIDExNSwxMDEsMTEyLDExNyw5LDAsMCwwLDExMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTE3LDEzLDAsMCwwLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE3LDE0LDAsMCwwLDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMywwLDAsMCwxMTksMTA1LDExMCwxMTQsMTAxLAotICAgIDEwMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwKLSAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKLSAgICAxMTQsOTcsMTEyLDYyLDExNyw2LDAsMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsMTU0LAotICAgIDYsMCwwLDExNSwxMDYsMCwwLDAsMCw5LDYsMSw2LDIsMTIsMSwKLSAgICA5LDIsNiwyLDEyLDEsMjgsMSwxNSwxLDE1LDEsMTUsMSwxMiwxLAotICAgIDE1LDEsMjIsMiwxMywxLDEzLDEsMTUsMSwxOCwyLDEzLDEsMjAsMiwKLSAgICA0OCwxLDE5LDIsMzEsMSwxMCwxLDE1LDEsMTMsMSw0LDIsMywxLAotICAgIDE1LDIsMjcsMSwxMywxLDUsMSwxMywxLDEyLDIsMTIsMiwzLDEsCi0gICAgMTksMSwxMywyLDExLDEsMTUsMiwxMiwxLDE1LDEsMTksMiwxNiwxLAotICAgIDE2LDEsMTYsMSwxNiwxLDIyLDIsMTksMSwxOSwxLDEyLDEsMTMsMSwKLSAgICAxMiwxLDExNyw2LDAsMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTM2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsMSwxMTYsMSwwLDEzMSwwLDAsMTI1LDIsMCwxMTYsMiwwLAotICAgIDEwNiwzLDAsMTA2LDQsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDIsMCwxNDAsCi0gICAgMCwwLDEwMywxLDAsMTMxLDEsMCwxLDExNiwyLDAsMTA2LDcsMCwxMDYsCi0gICAgOCwwLDExNiw5LDAsMTMxLDEsMCwxLDExNiwyLDAsMTA2LDcsMCwxMDYsCi0gICAgOCwwLDExNiwxMCwwLDEzMSwxLDAsMSwxMTYsMTEsMCwxMDYsMTIsMCwxMDAsCi0gICAgMSwwLDEwNywyLDAsMTE0LDExNiwwLDExNiwyLDAsMTA2LDcsMCwxMDYsOCwKLSAgICAwLDExNiwxMywwLDEzMSwxLDAsMSwxMTAsMCwwLDExNiwyLDAsMTA2LDcsCi0gICAgMCwxMDYsOCwwLDExNiwxNCwwLDEzMSwxLDAsMSwxMDAsMiwwLDgzLDQwLAotICAgIDMsMCwwLDAsMTE3LDUwLDAsMCwwLDczLDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTE3LDIsMCwwLDAsCi0gICAgMTEwLDExNiw3OCw0MCwxNSwwLDAsMCwxMTcsNiwwLDAsMCw5NSwxMTUsMTAxLAotICAgIDExNiwxMTcsMTEyLDExNywyNywwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwxMTUsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDEwLDAsMCwwLAotICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMTE3LDYsMCwwLDAsMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsMTE3LDksMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNyw5LDAsMCwwLDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LAotICAgIDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDE1LDAsMCwwLAotICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsCi0gICAgMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwMSwxMTQsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsOCwwLDAsMCw5NSwKLSAgICA5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsCi0gICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0MCwzLDAsMCwwLDExNywxMCwwLDAsMCwxMTUsMTIxLDExNSw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE3LDE3LDAsMCwwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQwLDAsMCwwLDAsNDAsCi0gICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKLSAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMjMzLDYsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTMsMSwKLSAgICA5LDEsMjgsMSwxNiwxLDE2LDEsMTUsMSwxOSwxLDExNyw4LDAsMCwKLSAgICAwLDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDc4LDQwLDMsMCwwLDAsMTE3LAotICAgIDMsMCwwLDAsMTE5LDEwNSwxMTAsMTE3LDYsMCwwLDAsOTksMTIxLDEwMywxMTksCi0gICAgMTA1LDExMCwxMTcsNiwwLDAsMCwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDQwLDc0LDAsCi0gICAgMCwwLDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDI3LAotICAgIDAsMCwwLDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLAotICAgIDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDExNywxNiwKLSAgICAwLDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksCi0gICAgOTcsMTE1LDEwMSwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDExNywKLSAgICA3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsMTE3LDEwLDAsMCwwLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCwxMTcsMTEsMCwwLDAsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsMTgsMCwwLDAsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsCi0gICAgMTAxLDExNywxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsCi0gICAgMTA1LDExNCwxMTcsMTMsMCwwLDAsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsCi0gICAgMTExLDEwOSwxMDUsOTksMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsMTE3LDQsCi0gICAgMCwwLDAsMTE2LDEyMSwxMTIsMTAxLDExNyw4LDAsMCwwLDk1LDk1LDk5LDExMSwKLSAgICAxMDAsMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsCi0gICAgMTIxLDExMiwxMDEsMTE3LDEwLDAsMCwwLDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNywxMywwLDAsMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCi0gICAgMTExLDk5LDEwNywxMTUsMTE3LDEyLDAsMCwwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwKLSAgICAxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDEyLDAsMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksCi0gICAgMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwKLSAgICAxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLDk1LDc3LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTYsMCwwLDAsOTUsNjgsCi0gICAgMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTYsCi0gICAgMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE3LDE5LDAsMCwwLDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywxMTAsCi0gICAgMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDI1LDAsMCwwLAotICAgIDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwKLSAgICAxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNywzLDAsMCwwLDExMSwxMTQsCi0gICAgMTAwLDExNywxNywwLDAsMCw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2NywKLSAgICA5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTcsNSwwLDAsMCw5OCwxMjEsMTE2LDEwMSwKLSAgICAxMTUsMTE3LDUsMCwwLDAsMTE0LDk3LDExMCwxMDMsMTAxLDExNywxMiwwLDAsMCwKLSAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsOCwwLDAsCi0gICAgMCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwxMTcsMTUsMCwwLDAsODMsNzksCi0gICAgODUsODIsNjcsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDIzLDAsCi0gICAgMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LAotICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywyNywwLDAsMCw3OSw4MCwKLSAgICA4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSwKLSAgICA5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsNCwwLDAsMCw3OCwxMTEsCi0gICAgMTEwLDEwMSwxMTcsMTcsMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwKLSAgICAxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTcsMCwwLDAsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTUsCi0gICAgMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LAotICAgIDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMSwwLDAsMCwxMTUsMTAxLDExNiw5NSwKLSAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsMCwwLDExNSwxMDEsMTE2LDk1LAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwKLSAgICAwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDExNywxNywwLDAsCi0gICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAotICAgIDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDExNywxNSwwLAotICAgIDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDExNywyMSwwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSwKLSAgICA4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTMsCi0gICAgMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LAotICAgIDExNywxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICAxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxOCwKLSAgICAwLDAsMCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCwKLSAgICA3MCw3Myw4OCw2OSw4MywxMTcsMTksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE0LDAsCi0gICAgMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwKLSAgICAxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsCi0gICAgOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDExNywxMywwLDAsMCw5NSwxMTQsCi0gICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDEyLDAsMCwwLAotICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTMsMCwwLAotICAgIDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywxMTcsOCwKLSAgICAwLDAsMCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTcsMjMsMCwwLDAsCi0gICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDExNywxNCwwLDAsMCw5NSwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMTcsMTEsMCwwLDAsOTUsCi0gICAgMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTcsMTYsMCwwLDAsOTUsCi0gICAgMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNywKLSAgICAxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNywKLSAgICA5NywxMDMsMTAxLDk1LDk1LDExNywyNywwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwxMTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDk1LDk1LDExNyw2LDAsMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsMTE3LAotICAgIDgsMCwwLDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsNDAsMCwwLDAsCi0gICAgMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAotICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCi0gICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsCi0gICAgMCwwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDEzMiwKLSAgICAwLDAsMCw2LDIxLDYsMywxMiwxMywxMiwxNiwxMiwxMywxMiwxMiwxMiwKLSAgICAxMiwxMiwxMCwxMiw2LDEyLDcsMTUsMjIsMTIsOCwxNSwzLDEyLDEyLDYsCi0gICAgMiw2LDMsMjIsNCwxOSw2OCwxOSwyMywxMiwxOSwxMiwyMCwxMiwxMDAsMzQsCi0gICAgMSwzNywyLDYsMiw5LDIsOSwxLDksMiwxNSwyNywxMiwyMywxMiwKLSAgICAxOSwxOCw4LDEyLDEzLDEyLDExLDEyLDU1LDEyLDE4LDEyLDExLDEyLDExLDEyLAotICAgIDE3LDE5LDU3LDE5LDU0LDE5LDUwLDE5LDgzLDIyLDEzNCwxOSwyOSwyNSw0OSwyNSwKLSAgICAyNSw2LDMsMTksNDUsMTksNTUsMTksMTgsMTksOTEsMTksMTI4LDE5LDEzLDEyLAotICAgIDksMTIsMTcsMTIsMTcsNiwyLDEyLDUwLDEyLDEzLDE4LDI0LDEyLDM0LDEyLAotICAgIDE1LDEyLDExLDI0LDM2LDEyLDc5LAorICAgIDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LDY4LAorICAgIDAsMCwwLDExNCw5MiwwLDAsMCwxMTYsNiwwLDAsMCwxMTksMTA1LDExMCwKKyAgICAxMTQsMTAxLDEwMywxMTQsMjI1LDAsMCwwLDExNCwzLDAsMCwwLDExNCwyNSwwLAorICAgIDAsMCwxMTQsMjEsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDQ2LDExMiwxMjEsMTE5LDExNyw2LDAsMCwwLDk1LAorICAgIDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MCw0LDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk1LDEwNSwxMTEsMTE3LDksMCwwLDAsOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCisgICAgMTE1LDExNyw4LDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTcsNywKKyAgICAwLDAsMCwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDQwLDMyLDAsMCwwLDExNCwKKyAgICA5NCwwLDAsMCwxMTQsNywwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMDMsCisgICAgMCwwLDAsMTE0LDEwNSwwLDAsMCwxMTQsNzksMSwwLDAsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNDAsMCwwLDAsMjQ0LDUsMCwwLAorICAgIDAsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMjAyLDAsMCwwLDExNCw2MSwwLDAsMCwKKyAgICAxMTQsMTc3LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsCisgICAgMTgxLDAsMCwwLDExNCwyMjIsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCwyMTgsCisgICAgMCwwLDAsMTE0LDYwLDAsMCwwLDI0NCwzLDAsMCwwLDk3LDEwOCwxMDgsCisgICAgMTE0LDg2LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDI2LDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsMTEsMSwwLDAsMTE0LDIwNywwLDAsMCwxMTQsNzgsCisgICAgMSwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwyMjQsMCwKKyAgICAwLDAsMTE0LDIyOCwwLDAsMCw0MCwxNiwwLDAsMCwyNDQsMTAsMCwwLAorICAgIDAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjQ0LDExLDAsMCwwLAorICAgIDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNiwxMSwwLDAsMCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDcxLDAsMCwwLAorICAgIDExNCwxNjEsMCwwLDAsMTE2LDExLDAsMCwwLDExNSwxMDEsMTA4LDEwMiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTYsMTIsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsOTUsMTEwLDk3LDEwOSwxMDEsMTE2LDE0LDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNiwxMCwwLDAsMCwxMTEsMTE1LAorICAgIDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDExNiwxMCwwLDAsMCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LDExNCwyMSwwLDAsMCwxMTQsMjUsMCwwLAorICAgIDAsMTE2LDksMCwwLDAsMTExLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTYsCisgICAgMTMsMCwwLDAsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTYsMTQsMCwwLDAsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE2LDEzLDAsMCwwLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDI0NCw2LDAsMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsCisgICAgMTgxLDYsMCwwLDExNSwxMDIsMCwwLDAsMCw5LDYsMSw2LDIsMTIsCisgICAgMSw5LDIsNiwyLDEyLDEsMjgsMSwxNSwxLDI0LDEsMTUsMSwxMiwKKyAgICAxLDE1LDEsMjIsMiwxMywxLDEzLDEsMTUsMSwxOCwyLDEzLDEsMjAsCisgICAgMiwzMywxLDE5LDIsMzEsMSwxMCwxLDE1LDEsMTMsMSw0LDIsMywKKyAgICAxLDE1LDEsNSwxLDEzLDEsMTIsMiwxMiwyLDMsMSwxOSwxLDEzLAorICAgIDIsMTEsMSwxNSwyLDEyLDEsMTUsMSwxOSwyLDE2LDEsMTYsMSwxNiwKKyAgICAxLDE2LDEsMjUsMiwxOSwxLDE5LDEsMTIsMSwxMywxLDEyLDEsMTE0LAorICAgIDkwLDEsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMTYsMCwKKyAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDEsMTE2LDEsMCwxMzEsMCwKKyAgICAwLDEyNSwyLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsMTE2LDUsMCwKKyAgICAxMDYsNiwwLDEyNCwyLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwxLDAsMSwKKyAgICAxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsOSwwLDEzMSwxLDAsMSwKKyAgICAxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTAsMCwxMzEsMSwwLDEsCisgICAgMTE2LDExLDAsMTA2LDEyLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMTYsMCwxMTYsCisgICAgMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTMsMCwxMzEsMSwwLDEsMTEwLAorICAgIDAsMCwxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTQsMCwxMzEsMSwKKyAgICAwLDEsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNyw1MCwwLDAsMCwKKyAgICA3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDQ2LDExNCw4NCwxLDAsMCw3OCw0MCwxNSwwLDAsMCwxMTQsOTAsMSwKKyAgICAwLDAsMTE0LDIzNCwwLDAsMCwxMTQsNywwLDAsMCwxMTQsMzIsMSwwLAorICAgIDAsMTE0LDIwNywwLDAsMCwxMTQsMzksMSwwLDAsMTE0LDUzLDEsMCwwLAorICAgIDExNCw1OSwxLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LAorICAgIDIyMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDIyNCwKKyAgICAwLDAsMCwxMTQsMjcsMSwwLDAsNDAsMywwLDAsMCwxMTQsODgsMSwKKyAgICAwLDAsMTE0LDg5LDEsMCwwLDExNiwxNywwLDAsMCwxMTUsMTE3LDExMiwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNDQsOCwwLDAsCisgICAgMCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxLDcsMCwwLDExNSwxNiwwLAorICAgIDAsMCwwLDIsMTMsMSw5LDEsMjgsMSwxNiwxLDE2LDEsMTUsMSwKKyAgICAxOSwxLDExNCw5MSwxLDAsMCw0MCwzLDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDExOSwxMDUsMTEwLDExNCwxLDAsMCwwLDExNCwyLDAsMCwwLDQwLDgyLAorICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDExNCwxNywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LDI4LDAsMCwKKyAgICAwLDExNCwzOCwwLDAsMCwxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLAorICAgIDExNCw0NSwwLDAsMCwxMTQsNTQsMCwwLDAsMTE0LDY0LDAsMCwwLDExNCwKKyAgICAxNTIsMCwwLDAsMjQ0LDgsMCwwLDAsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsCisgICAgOTUsMTE0LDIwMywwLDAsMCwxMTQsODksMCwwLDAsMTE0LDc4LDAsMCwwLAorICAgIDExNCw4NSwwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDY2LDAsMCwwLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5OSwKKyAgICAwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMTQsMCwKKyAgICAwLDAsMTE0LDE4LDAsMCwwLDExNiwxNywwLDAsMCw5NSw4Miw2NSw4NywKKyAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsMTEwLDAsCisgICAgMCwwLDExNCwxMTksMCwwLDAsMTE0LDEwNCwwLDAsMCwxMTQsMTA1LDAsMCwKKyAgICAwLDExNCwxMTcsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTI3LDAsMCwwLAorICAgIDExNCwxMjksMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsMTM4LDAsMCwwLDExNCwKKyAgICAxNDYsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNjYsCisgICAgMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwKKyAgICAwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxOTAsMCwwLAorICAgIDAsMTE0LDIwMCwwLDAsMCwxMTQsMjA1LDAsMCwwLDExNCwyMDgsMCwwLDAsCisgICAgMTE0LDIxMywwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMjIsMCwwLDAsMTE0LAorICAgIDIyNCwwLDAsMCwxMTQsMjM3LDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDAsCisgICAgMSwwLDAsMTE0LDIsMSwwLDAsMTE0LDcsMSwwLDAsMTE0LDExLDEsCisgICAgMCwwLDExNCw4LDEsMCwwLDExNCwxMiwxLDAsMCwxMTQsMjYsMSwwLAorICAgIDAsMTE0LDI3LDEsMCwwLDExNCwzOSwxLDAsMCwxMTQsNTQsMSwwLDAsCisgICAgMTE0LDU4LDEsMCwwLDExNCw2MCwxLDAsMCwxMTQsNjMsMSwwLDAsMTE0LAorICAgIDczLDEsMCwwLDExNCw2NCwxLDAsMCwxMTQsNjYsMSwwLDAsMTE0LDY3LAorICAgIDEsMCwwLDExNCw2OCwxLDAsMCwxMTQsNzUsMSwwLDAsMTE0LDc3LDEsCisgICAgMCwwLDExNCwyMzQsMCwwLDAsMTE0LDgxLDEsMCwwLDExNCw5MCwxLDAsCisgICAgMCwxMTQsOTEsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjQ0LDgsMCwwLDAsNjAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsMTUwLDAsMCwwLAorICAgIDYsMTcsNiwzLDEyLDEyLDEyLDUsMTIsNSwxMiw2LDEyLDEyLDEyLDEwLAorICAgIDEyLDYsMTIsNywxNSwyMiwxMiw4LDE1LDYsNiwyLDYsMywyMiw0LAorICAgIDE5LDY4LDE5LDIzLDEyLDE5LDEyLDIwLDEyLDExMSwyMiwxLDE4LDIsNiwyLAorICAgIDksMiw5LDEsOSwyLDE1LDI3LDEyLDIzLDEyLDE5LDEyLDEyLDE4LDgsCisgICAgMTksMTcsMjIsNDIsMTgsOSwxMiwxNSwxMiwxMSwxMiwxMywxMiwxMSwxMiwxOCwKKyAgICAxMiwxMSwxMiwxMSwxMiwxMywyMSw1NSwyMSwxMiwxOCwxMCwxMiwxNCwxOSw1MiwKKyAgICAxOSw0OSwxOSw1MCwxOSw0MSwyMiwxMTAsMTksMjksMjUsNDMsMjUsMjAsNiwzLAorICAgIDE5LDQwLDE5LDU1LDE5LDMyLDE5LDkxLDE5LDEyOCwxOSwxMywxMiw5LDEyLDE3LAorICAgIDEyLDE3LDYsMSwxMCwyLDEyLDQ2LDEyLDEzLDE4LDI0LDEyLDMyLDEyLDE1LAorICAgIDEyLDExLDI0LDM2LDEyLDc2LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IGEwZTUyN2YuLjE5OTdlMTkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMSw4ICsxLDEwIEBACiAKIC8qIFdyaXRlIFB5dGhvbiBvYmplY3RzIHRvIGZpbGVzIGFuZCByZWFkIHRoZW0gYmFjay4KLSAgIFRoaXMgaXMgaW50ZW5kZWQgZm9yIHdyaXRpbmcgYW5kIHJlYWRpbmcgY29tcGlsZWQgUHl0aG9uIGNvZGUgb25seTsKLSAgIGEgdHJ1ZSBwZXJzaXN0ZW50IHN0b3JhZ2UgZmFjaWxpdHkgd291bGQgYmUgbXVjaCBoYXJkZXIsIHNpbmNlCi0gICBpdCB3b3VsZCBoYXZlIHRvIHRha2UgY2lyY3VsYXIgbGlua3MgYW5kIHNoYXJpbmcgaW50byBhY2NvdW50LiAqLworICAgVGhpcyBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHdyaXRpbmcgYW5kIHJlYWRpbmcgY29tcGlsZWQgUHl0aG9uIGNvZGUsCisgICBldmVuIHRob3VnaCBkaWN0cywgbGlzdHMsIHNldHMgYW5kIGZyb3plbnNldHMsIG5vdCBjb21tb25seSBzZWVuIGluCisgICBjb2RlIG9iamVjdHMsIGFyZSBzdXBwb3J0ZWQuCisgICBWZXJzaW9uIDMgb2YgdGhpcyBwcm90b2NvbCBwcm9wZXJseSBzdXBwb3J0cyBjaXJjdWxhciBsaW5rcworICAgYW5kIHNoYXJpbmcuICovCiAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCkBAIC0zMSwxNiArMzMsMTQgQEAKICNkZWZpbmUgVFlQRV9TVE9QSVRFUiAgICAgICAgICAgJ1MnCiAjZGVmaW5lIFRZUEVfRUxMSVBTSVMgICAgICAgICAgICcuJwogI2RlZmluZSBUWVBFX0lOVCAgICAgICAgICAgICAgICAnaScKLS8qIFRZUEVfSU5UNjQgaXMgZGVwcmVjYXRlZC4gSXQgaXMgbm90Ci0gICBnZW5lcmF0ZWQgYW55bW9yZSwgYW5kIHN1cHBvcnQgZm9yIHJlYWRpbmcgaXQKLSAgIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40LiAqLwotI2RlZmluZSBUWVBFX0lOVDY0ICAgICAgICAgICAgICAnSScKICNkZWZpbmUgVFlQRV9GTE9BVCAgICAgICAgICAgICAgJ2YnCiAjZGVmaW5lIFRZUEVfQklOQVJZX0ZMT0FUICAgICAgICdnJwogI2RlZmluZSBUWVBFX0NPTVBMRVggICAgICAgICAgICAneCcKICNkZWZpbmUgVFlQRV9CSU5BUllfQ09NUExFWCAgICAgJ3knCiAjZGVmaW5lIFRZUEVfTE9ORyAgICAgICAgICAgICAgICdsJwogI2RlZmluZSBUWVBFX1NUUklORyAgICAgICAgICAgICAncycKKyNkZWZpbmUgVFlQRV9JTlRFUk5FRCAgICAgICAgICAgJ3QnCisjZGVmaW5lIFRZUEVfUkVGICAgICAgICAgICAgICAgICdyJwogI2RlZmluZSBUWVBFX1RVUExFICAgICAgICAgICAgICAnKCcKICNkZWZpbmUgVFlQRV9MSVNUICAgICAgICAgICAgICAgJ1snCiAjZGVmaW5lIFRZUEVfRElDVCAgICAgICAgICAgICAgICd7JwpAQCAtNDksNiArNDksNyBAQAogI2RlZmluZSBUWVBFX1VOS05PV04gICAgICAgICAgICAnPycKICNkZWZpbmUgVFlQRV9TRVQgICAgICAgICAgICAgICAgJzwnCiAjZGVmaW5lIFRZUEVfRlJPWkVOU0VUICAgICAgICAgICc+JworI2RlZmluZSBGTEFHX1JFRiAgICAgICAgICAgICAgICAnXHg4MCcgLyogd2l0aCBhIHR5cGUsIGFkZCBvYmogdG8gaW5kZXggKi8KIAogI2RlZmluZSBXRkVSUl9PSyAwCiAjZGVmaW5lIFdGRVJSX1VOTUFSU0hBTExBQkxFIDEKQEAgLTY1LDYgKzY2LDcgQEAKICAgICBQeU9iamVjdCAqY3VycmVudF9maWxlbmFtZTsKICAgICBjaGFyICpwdHI7CiAgICAgY2hhciAqZW5kOworICAgIFB5T2JqZWN0ICpyZWZzOyAvKiBkaWN0IG9uIG1hcnNoYWwsIGxpc3Qgb24gdW5tYXJzaGFsICovCiAgICAgaW50IHZlcnNpb247CiB9IFdGSUxFOwogCkBAIC0xNTgsMTMgKzE2MCwxNyBAQAogI2VuZGlmCiAjZGVmaW5lIFB5TG9uZ19NQVJTSEFMX1JBVElPIChQeUxvbmdfU0hJRlQgLyBQeUxvbmdfTUFSU0hBTF9TSElGVCkKIAorI2RlZmluZSBXX1RZUEUodCwgcCkgZG8geyBcCisgICAgd19ieXRlKCh0KSB8IGZsYWcsIChwKSk7IFwKK30gd2hpbGUoMCkKKwogc3RhdGljIHZvaWQKLXdfUHlMb25nKGNvbnN0IFB5TG9uZ09iamVjdCAqb2IsIFdGSUxFICpwKQord19QeUxvbmcoY29uc3QgUHlMb25nT2JqZWN0ICpvYiwgY2hhciBmbGFnLCBXRklMRSAqcCkKIHsKICAgICBQeV9zc2l6ZV90IGksIGosIG4sIGw7CiAgICAgZGlnaXQgZDsKIAotICAgIHdfYnl0ZShUWVBFX0xPTkcsIHApOworICAgIFdfVFlQRShUWVBFX0xPTkcsIHApOwogICAgIGlmIChQeV9TSVpFKG9iKSA9PSAwKSB7CiAgICAgICAgIHdfbG9uZygobG9uZykwLCBwKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAxLDEwICsyMDcsNjQgQEAKICAgICB9IHdoaWxlIChkICE9IDApOwogfQogCitzdGF0aWMgaW50Cit3X3JlZihQeU9iamVjdCAqdiwgY2hhciAqZmxhZywgV0ZJTEUgKnApCit7CisgICAgUHlPYmplY3QgKmlkOworICAgIFB5T2JqZWN0ICppZHg7CisKKyAgICBpZiAocC0+dmVyc2lvbiA8IDMgfHwgcC0+cmVmcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsgLyogbm90IHdyaXRpbmcgb2JqZWN0IHJlZmVyZW5jZXMgKi8KKworICAgIC8qIGlmIGl0IGhhcyBvbmx5IG9uZSByZWZlcmVuY2UsIGl0IGRlZmluaXRlbHkgaXNuJ3Qgc2hhcmVkICovCisgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlkID0gUHlMb25nX0Zyb21Wb2lkUHRyKCh2b2lkKil2KTsKKyAgICBpZiAoaWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgaWR4ID0gUHlEaWN0X0dldEl0ZW0ocC0+cmVmcywgaWQpOworICAgIGlmIChpZHggIT0gTlVMTCkgeworICAgICAgICAvKiB3cml0ZSB0aGUgcmVmZXJlbmNlIGluZGV4IHRvIHRoZSBzdHJlYW0gKi8KKyAgICAgICAgbG9uZyB3ID0gUHlMb25nX0FzTG9uZyhpZHgpOworICAgICAgICBQeV9ERUNSRUYoaWQpOworICAgICAgICBpZiAodyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgICAgICAvKiB3ZSBkb24ndCBzdG9yZSAibG9uZyIgaW5kaWNlcyBpbiB0aGUgZGljdCAqLworICAgICAgICBhc3NlcnQoMCA8PSB3ICYmIHcgPD0gMHg3ZmZmZmZmZik7CisgICAgICAgIHdfYnl0ZShUWVBFX1JFRiwgcCk7CisgICAgICAgIHdfbG9uZyh3LCBwKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG9rOworICAgICAgICBQeV9zc2l6ZV90IHMgPSBQeURpY3RfU2l6ZShwLT5yZWZzKTsKKyAgICAgICAgLyogd2UgZG9uJ3Qgc3VwcG9ydCBsb25nIGluZGljZXMgKi8KKyAgICAgICAgaWYgKHMgPj0gMHg3ZmZmZmZmZikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0b28gbWFueSBvYmplY3RzIik7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgICAgICBpZHggPSBQeUxvbmdfRnJvbVNzaXplX3Qocyk7CisgICAgICAgIG9rID0gaWR4ICYmIFB5RGljdF9TZXRJdGVtKHAtPnJlZnMsIGlkLCBpZHgpID09IDA7CisgICAgICAgIFB5X0RFQ1JFRihpZCk7CisgICAgICAgIFB5X1hERUNSRUYoaWR4KTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAqZmxhZyB8PSBGTEFHX1JFRjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorZXJyOgorICAgIHAtPmVycm9yID0gV0ZFUlJfVU5NQVJTSEFMTEFCTEU7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkCit3X2NvbXBsZXhfb2JqZWN0KFB5T2JqZWN0ICp2LCBjaGFyIGZsYWcsIFdGSUxFICpwKTsKKwogc3RhdGljIHZvaWQKIHdfb2JqZWN0KFB5T2JqZWN0ICp2LCBXRklMRSAqcCkKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47CisgICAgY2hhciBmbGFnID0gJ1wwJzsKIAogICAgIHAtPmRlcHRoKys7CiAKQEAgLTIyOSwyNCArMjg5LDM1IEBACiAgICAgZWxzZSBpZiAodiA9PSBQeV9UcnVlKSB7CiAgICAgICAgIHdfYnl0ZShUWVBFX1RSVUUsIHApOwogICAgIH0KLSAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KSkgeworICAgIGVsc2UgaWYgKCF3X3JlZih2LCAmZmxhZywgcCkpCisgICAgICAgIHdfY29tcGxleF9vYmplY3QodiwgZmxhZywgcCk7CisKKyAgICBwLT5kZXB0aC0tOworfQorCitzdGF0aWMgdm9pZAord19jb21wbGV4X29iamVjdChQeU9iamVjdCAqdiwgY2hhciBmbGFnLCBXRklMRSAqcCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikpIHsKICAgICAgICAgbG9uZyB4ID0gUHlMb25nX0FzTG9uZyh2KTsKICAgICAgICAgaWYgKCh4ID09IC0xKSAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgUHlMb25nT2JqZWN0ICpvYiA9IChQeUxvbmdPYmplY3QgKil2OwogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIHdfUHlMb25nKG9iLCBwKTsKKyAgICAgICAgICAgIHdfUHlMb25nKG9iLCBmbGFnLCBwKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICNpZiBTSVpFT0ZfTE9ORyA+IDQKICAgICAgICAgICAgIGxvbmcgeSA9IFB5X0FSSVRITUVUSUNfUklHSFRfU0hJRlQobG9uZywgeCwgMzEpOwogICAgICAgICAgICAgaWYgKHkgJiYgeSAhPSAtMSkgewogICAgICAgICAgICAgICAgIC8qIFRvbyBsYXJnZSBmb3IgVFlQRV9JTlQgKi8KLSAgICAgICAgICAgICAgICB3X1B5TG9uZygoUHlMb25nT2JqZWN0Kil2LCBwKTsKKyAgICAgICAgICAgICAgICB3X1B5TG9uZygoUHlMb25nT2JqZWN0Kil2LCBmbGFnLCBwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHdfYnl0ZShUWVBFX0lOVCwgcCk7CisgICAgICAgICAgICAgICAgV19UWVBFKFRZUEVfSU5ULCBwKTsKICAgICAgICAgICAgICAgICB3X2xvbmcoeCwgcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI1OSw3ICszMzAsNyBAQAogICAgICAgICAgICAgICAgIHAtPmVycm9yID0gV0ZFUlJfVU5NQVJTSEFMTEFCTEU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgd19ieXRlKFRZUEVfQklOQVJZX0ZMT0FULCBwKTsKKyAgICAgICAgICAgIFdfVFlQRShUWVBFX0JJTkFSWV9GTE9BVCwgcCk7CiAgICAgICAgICAgICB3X3N0cmluZygoY2hhciopYnVmLCA4LCBwKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTI3MCw3ICszNDEsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG4gPSBzdHJsZW4oYnVmKTsKLSAgICAgICAgICAgIHdfYnl0ZShUWVBFX0ZMT0FULCBwKTsKKyAgICAgICAgICAgIFdfVFlQRShUWVBFX0ZMT0FULCBwKTsKICAgICAgICAgICAgIHdfYnl0ZSgoaW50KW4sIHApOwogICAgICAgICAgICAgd19zdHJpbmcoYnVmLCBuLCBwKTsKICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKQEAgLTI4NCw3ICszNTUsNyBAQAogICAgICAgICAgICAgICAgIHAtPmVycm9yID0gV0ZFUlJfVU5NQVJTSEFMTEFCTEU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgd19ieXRlKFRZUEVfQklOQVJZX0NPTVBMRVgsIHApOworICAgICAgICAgICAgV19UWVBFKFRZUEVfQklOQVJZX0NPTVBMRVgsIHApOwogICAgICAgICAgICAgd19zdHJpbmcoKGNoYXIqKWJ1ZiwgOCwgcCk7CiAgICAgICAgICAgICBpZiAoX1B5RmxvYXRfUGFjazgoUHlDb21wbGV4X0ltYWdBc0RvdWJsZSh2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIDEpIDwgMCkgewpAQCAtMjk1LDcgKzM2Niw3IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjaGFyICpidWY7Ci0gICAgICAgICAgICB3X2J5dGUoVFlQRV9DT01QTEVYLCBwKTsKKyAgICAgICAgICAgIFdfVFlQRShUWVBFX0NPTVBMRVgsIHApOwogICAgICAgICAgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKFB5Q29tcGxleF9SZWFsQXNEb3VibGUodiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2cnLCAxNywgMCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZikgewpAQCAtMzE5LDcgKzM5MCw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHYpKSB7Ci0gICAgICAgIHdfYnl0ZShUWVBFX1NUUklORywgcCk7CisgICAgICAgIFdfVFlQRShUWVBFX1NUUklORywgcCk7CiAgICAgICAgIHdfcHN0cmluZyhQeUJ5dGVzX0FTX1NUUklORyh2KSwgUHlCeXRlc19HRVRfU0laRSh2KSwgcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpKSB7CkBAIC0zMzAsMTIgKzQwMSwxNSBAQAogICAgICAgICAgICAgcC0+ZXJyb3IgPSBXRkVSUl9VTk1BUlNIQUxMQUJMRTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB3X2J5dGUoVFlQRV9VTklDT0RFLCBwKTsKKyAgICAgICAgaWYgKHAtPnZlcnNpb24gPj0gMyAmJiAgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHYpKQorICAgICAgICAgICAgV19UWVBFKFRZUEVfSU5URVJORUQsIHApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXX1RZUEUoVFlQRV9VTklDT0RFLCBwKTsKICAgICAgICAgd19wc3RyaW5nKFB5Qnl0ZXNfQVNfU1RSSU5HKHV0ZjgpLCBQeUJ5dGVzX0dFVF9TSVpFKHV0ZjgpLCBwKTsKICAgICAgICAgUHlfREVDUkVGKHV0ZjgpOwogICAgIH0KICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodikpIHsKLSAgICAgICAgd19ieXRlKFRZUEVfVFVQTEUsIHApOworICAgICAgICBXX1RZUEUoVFlQRV9UVVBMRSwgcCk7CiAgICAgICAgIG4gPSBQeVR1cGxlX1NpemUodik7CiAgICAgICAgIFdfU0laRShuLCBwKTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMzQzLDcgKzQxNyw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoUHlMaXN0X0NoZWNrRXhhY3QodikpIHsKLSAgICAgICAgd19ieXRlKFRZUEVfTElTVCwgcCk7CisgICAgICAgIFdfVFlQRShUWVBFX0xJU1QsIHApOwogICAgICAgICBuID0gUHlMaXN0X0dFVF9TSVpFKHYpOwogICAgICAgICBXX1NJWkUobiwgcCk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKQEAgLTM1Myw3ICs0MjcsNyBAQAogICAgIGVsc2UgaWYgKFB5RGljdF9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgcG9zOwogICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7Ci0gICAgICAgIHdfYnl0ZShUWVBFX0RJQ1QsIHApOworICAgICAgICBXX1RZUEUoVFlQRV9ESUNULCBwKTsKICAgICAgICAgLyogVGhpcyBvbmUgaXMgTlVMTCBvYmplY3QgdGVybWluYXRlZCEgKi8KICAgICAgICAgcG9zID0gMDsKICAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KHYsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKQEAgLTM2Niw5ICs0NDAsOSBAQAogICAgICAgICBQeU9iamVjdCAqdmFsdWUsICppdDsKIAogICAgICAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKHYsICZQeVNldF9UeXBlKSkKLSAgICAgICAgICAgIHdfYnl0ZShUWVBFX1NFVCwgcCk7CisgICAgICAgICAgICBXX1RZUEUoVFlQRV9TRVQsIHApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3X2J5dGUoVFlQRV9GUk9aRU5TRVQsIHApOworICAgICAgICAgICAgV19UWVBFKFRZUEVfRlJPWkVOU0VULCBwKTsKICAgICAgICAgbiA9IFB5T2JqZWN0X1NpemUodik7CiAgICAgICAgIGlmIChuID09IC0xKSB7CiAgICAgICAgICAgICBwLT5kZXB0aC0tOwpAQCAtMzk1LDcgKzQ2OSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5Q29kZV9DaGVjayh2KSkgewogICAgICAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKXY7Ci0gICAgICAgIHdfYnl0ZShUWVBFX0NPREUsIHApOworICAgICAgICBXX1RZUEUoVFlQRV9DT0RFLCBwKTsKICAgICAgICAgd19sb25nKGNvLT5jb19hcmdjb3VudCwgcCk7CiAgICAgICAgIHdfbG9uZyhjby0+Y29fa3dvbmx5YXJnY291bnQsIHApOwogICAgICAgICB3X2xvbmcoY28tPmNvX25sb2NhbHMsIHApOwpAQCAtNDIxLDE1ICs0OTUsMTQgQEAKICAgICAgICAgICAgIHAtPmVycm9yID0gV0ZFUlJfVU5NQVJTSEFMTEFCTEU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgd19ieXRlKFRZUEVfU1RSSU5HLCBwKTsKKyAgICAgICAgV19UWVBFKFRZUEVfU1RSSU5HLCBwKTsKICAgICAgICAgd19wc3RyaW5nKHZpZXcuYnVmLCB2aWV3LmxlbiwgcCk7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgd19ieXRlKFRZUEVfVU5LTk9XTiwgcCk7CisgICAgICAgIFdfVFlQRShUWVBFX1VOS05PV04sIHApOwogICAgICAgICBwLT5lcnJvciA9IFdGRVJSX1VOTUFSU0hBTExBQkxFOwogICAgIH0KLSAgICBwLT5kZXB0aC0tOwogfQogCiAvKiB2ZXJzaW9uIGN1cnJlbnRseSBoYXMgbm8gZWZmZWN0IGZvciB3cml0aW5nIGxvbmdzLiAqLwpAQCAtNDQwLDYgKzUxMyw3IEBACiAgICAgd2YuZnAgPSBmcDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKKyAgICB3Zi5yZWZzID0gTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB3X2xvbmcoeCwgJndmKTsKIH0KQEAgLTQ1MSw4ICs1MjUsMTQgQEAKICAgICB3Zi5mcCA9IGZwOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7CiAgICAgd2YuZGVwdGggPSAwOworICAgIGlmICh2ZXJzaW9uID49IDMpIHsKKyAgICAgICAgaWYgKCh3Zi5yZWZzID0gUHlEaWN0X05ldygpKSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOyAvKiBjYWxsZXIgbXVzaCBjaGVjayBQeUVycl9PY2N1cnJlZCgpICovCisgICAgfSBlbHNlCisgICAgICAgIHdmLnJlZnMgPSBOVUxMOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOwogICAgIHdfb2JqZWN0KHgsICZ3Zik7CisgICAgUHlfWERFQ1JFRih3Zi5yZWZzKTsKIH0KIAogdHlwZWRlZiBXRklMRSBSRklMRTsgLyogU2FtZSBzdHJ1Y3Qgd2l0aCBkaWZmZXJlbnQgaW52YXJpYW50cyAqLwpAQCAtNDg4LDcgKzU2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVhZCA9IFB5Qnl0ZXNfR0VUX1NJWkUoZGF0YSk7CisgICAgICAgICAgICAgICAgcmVhZCA9IChpbnQpUHlCeXRlc19HRVRfU0laRShkYXRhKTsKICAgICAgICAgICAgICAgICBpZiAocmVhZCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWQgPiBuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTU2Miw0MiArNjQyLDYgQEAKICAgICByZXR1cm4geDsKIH0KIAotLyogcl9sb25nNjQgZGVhbHMgd2l0aCB0aGUgVFlQRV9JTlQ2NCBjb2RlLiAgT24gYSBtYWNoaW5lIHdpdGgKLSAgIHNpemVvZihsb25nKSA+IDQsIGl0IHJldHVybnMgYSBQeXRob24gaW50IG9iamVjdCwgZWxzZSBhIFB5dGhvbiBsb25nCi0gICBvYmplY3QuICBOb3RlIHRoYXQgd19sb25nNjQgd3JpdGVzIG91dCBUWVBFX0lOVCBpZiAzMiBiaXRzIGlzIGVub3VnaCwKLSAgIHNvIHRoZXJlJ3Mgbm8gaW5lZmZpY2llbmN5IGhlcmUgaW4gcmV0dXJuaW5nIGEgUHlMb25nIG9uIDMyLWJpdCBib3hlcwotICAgZm9yIGV2ZXJ5dGhpbmcgd3JpdHRlbiB2aWEgVFlQRV9JTlQ2NCAoaS5lLiwgaWYgYW4gaW50IGlzIHdyaXR0ZW4gdmlhCi0gICBUWVBFX0lOVDY0LCBpdCAqbmVlZHMqIG1vcmUgdGhhbiAzMiBiaXRzKS4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotcl9sb25nNjQoUkZJTEUgKnApCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgbG9uZyBsbzQgPSByX2xvbmcocCk7Ci0gICAgbG9uZyBoaTQgPSByX2xvbmcocCk7Ci0KLSAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKLSNpZiBTSVpFT0ZfTE9ORyA+IDQKLSAgICAgICAgbG9uZyB4ID0gKGhpNCA8PCAzMikgfCAobG80ICYgMHhGRkZGRkZGRkwpOwotICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcoeCk7Ci0jZWxzZQotICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1Zls4XTsKLSAgICAgICAgaW50IG9uZSA9IDE7Ci0gICAgICAgIGludCBpc19saXR0bGVfZW5kaWFuID0gKGludCkqKGNoYXIqKSZvbmU7Ci0gICAgICAgIGlmIChpc19saXR0bGVfZW5kaWFuKSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmLCAmbG80LCA0KTsKLSAgICAgICAgICAgIG1lbWNweShidWYrNCwgJmhpNCwgNCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmLCAmaGk0LCA0KTsKLSAgICAgICAgICAgIG1lbWNweShidWYrNCwgJmxvNCwgNCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KGJ1ZiwgOCwgaXNfbGl0dGxlX2VuZGlhbiwgMSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHJfUHlMb25nKFJGSUxFICpwKQogewpAQCAtNjY3LDYgKzcxMSw2MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBhbGxvY2F0ZSB0aGUgcmVmbGlzdCBpbmRleCBmb3IgYSBuZXcgb2JqZWN0LiBSZXR1cm4gLTEgb24gZmFpbHVyZSAqLworc3RhdGljIFB5X3NzaXplX3QKK3JfcmVmX3Jlc2VydmUoaW50IGZsYWcsIFJGSUxFICpwKQoreworICAgIGlmIChmbGFnKSB7IC8qIGN1cnJlbnRseSBvbmx5IEZMQUdfUkVGIGlzIGRlZmluZWQgKi8KKyAgICAgICAgUHlfc3NpemVfdCBpZHggPSBQeUxpc3RfU2l6ZShwLT5yZWZzKTsKKyAgICAgICAgaWYgKGlkeCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChpZHggPj0gMHg3ZmZmZmZmZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJiYWQgbWFyc2hhbCBkYXRhIChpbmRleCBsaXN0IHRvbyBsYXJnZSkiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChwLT5yZWZzLCBQeV9Ob25lKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBpZHg7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCisvKiBpbnNlcnQgdGhlIG5ldyBvYmplY3QgJ28nIHRvIHRoZSByZWZsaXN0IGF0IHByZXZpb3VzbHkKKyAqIGFsbG9jYXRlZCBpbmRleCAnaWR4Jy4KKyAqICdvJyBjYW4gYmUgTlVMTCwgaW4gd2hpY2ggY2FzZSBub3RoaW5nIGlzIGRvbmUuCisgKiBpZiAnbycgd2FzIG5vbi1OVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCAnbycgaXMgcmV0dXJuZWQuCisgKiBpZiAnbycgd2FzIG5vbi1OVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIGZhaWxzLCAnbycgaXMgcmVsZWFzZWQgYW5kCisgKiBOVUxMIHJldHVybmVkLiBUaGlzIHNpbXBsaWZpZXMgZXJyb3IgY2hlY2tpbmcgYXQgdGhlIGNhbGwgc2l0ZSBzaW5jZQorICogYSBzaW5nbGUgdGVzdCBmb3IgTlVMTCBmb3IgdGhlIGZ1bmN0aW9uIHJlc3VsdCBpcyBlbm91Z2guCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCityX3JlZl9pbnNlcnQoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgaWR4LCBpbnQgZmxhZywgUkZJTEUgKnApCit7CisgICAgaWYgKG8gIT0gTlVMTCAmJiBmbGFnKSB7IC8qIGN1cnJlbnRseSBvbmx5IEZMQUdfUkVGIGlzIGRlZmluZWQgKi8KKyAgICAgICAgaWYgKFB5TGlzdF9TZXRJdGVtKHAtPnJlZnMsIGlkeCwgbykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobyk7IC8qIHJlbGVhc2UgdGhlIG5ldyBvYmplY3QgKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKG8pOyAvKiBhIHJlZmVyZW5jZSBmb3IgdGhlIGxpc3QgKi8KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbzsKK30KKworLyogY29tYmluYXRpb24gb2YgYm90aCBhYm92ZSwgdXNlZCB3aGVuIGFuIG9iamVjdCBjYW4gYmUKKyAqIGNyZWF0ZWQgd2hlbmV2ZXIgaXQgaXMgc2VlbiBpbiB0aGUgZmlsZSwgYXMgb3Bwb3NlZCB0bworICogYWZ0ZXIgaGF2aW5nIGxvYWRlZCBpdHMgc3ViLW9iamVjdHMuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCityX3JlZihQeU9iamVjdCAqbywgaW50IGZsYWcsIFJGSUxFICpwKQoreworICAgIGlmIChvICE9IE5VTEwgJiYgZmxhZykgeyAvKiBjdXJyZW50bHkgb25seSBGTEFHX1JFRiBpcyBkZWZpbmVkICovCisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHAtPnJlZnMsIG8pIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG8pOyAvKiByZWxlYXNlIHRoZSBuZXcgb2JqZWN0ICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbzsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIHJfb2JqZWN0KFJGSUxFICpwKQpAQCAtNjc0LDEwICs3NzQsMTggQEAKICAgICAvKiBOVUxMIGlzIGEgdmFsaWQgcmV0dXJuIHZhbHVlLCBpdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFucyB0aGF0CiAgICAgICAgYW4gZXhjZXB0aW9uIGlzIHNldC4gKi8KICAgICBQeU9iamVjdCAqdiwgKnYyOworICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKICAgICBsb25nIGksIG47Ci0gICAgaW50IHR5cGUgPSByX2J5dGUocCk7CisgICAgaW50IHR5cGUsIGNvZGUgPSByX2J5dGUocCk7CisgICAgaW50IGZsYWc7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAorICAgIGlmIChjb2RlID09IEVPRikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiRU9GIHJlYWQgd2hlcmUgb2JqZWN0IGV4cGVjdGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIHAtPmRlcHRoKys7CiAKICAgICBpZiAocC0+ZGVwdGggPiBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCkgewpAQCAtNjg2LDEzICs3OTQsMTUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgc3dpdGNoICh0eXBlKSB7CisgICAgZmxhZyA9IGNvZGUgJiBGTEFHX1JFRjsKKyAgICB0eXBlID0gY29kZSAmIH5GTEFHX1JFRjsKIAotICAgIGNhc2UgRU9GOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiRU9GIHJlYWQgd2hlcmUgb2JqZWN0IGV4cGVjdGVkIik7Ci0gICAgICAgIHJldHZhbCA9IE5VTEw7Ci0gICAgICAgIGJyZWFrOworI2RlZmluZSBSX1JFRihPKSBkb3tcCisgICAgaWYgKGZsYWcpIFwKKyAgICAgICAgTyA9IHJfcmVmKE8sIGZsYWcsIHApO1wKK30gd2hpbGUgKDApCisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKIAogICAgIGNhc2UgVFlQRV9OVUxMOgogICAgICAgICByZXR2YWwgPSBOVUxMOwpAQCAtNzI2LDE0ICs4MzYsMTIgQEAKICAgICBjYXNlIFRZUEVfSU5UOgogICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICByZXR2YWwgPSBQeUVycl9PY2N1cnJlZCgpID8gTlVMTCA6IFB5TG9uZ19Gcm9tTG9uZyhuKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFRZUEVfSU5UNjQ6Ci0gICAgICAgIHJldHZhbCA9IHJfbG9uZzY0KHApOworICAgICAgICBSX1JFRihyZXR2YWwpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9MT05HOgogICAgICAgICByZXR2YWwgPSByX1B5TG9uZyhwKTsKKyAgICAgICAgUl9SRUYocmV0dmFsKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfRkxPQVQ6CkBAIC03NTQsNiArODYyLDcgQEAKICAgICAgICAgICAgIGlmIChkeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICByZXR2YWwgPSBQeUZsb2F0X0Zyb21Eb3VibGUoZHgpOworICAgICAgICAgICAgUl9SRUYocmV0dmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTc3MSw2ICs4ODAsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dmFsID0gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOworICAgICAgICAgICAgUl9SRUYocmV0dmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTgwNCw2ICs5MTQsNyBAQAogICAgICAgICAgICAgaWYgKGMuaW1hZyA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICByZXR2YWwgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGMpOworICAgICAgICAgICAgUl9SRUYocmV0dmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTgzMCw2ICs5NDEsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dmFsID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChjKTsKKyAgICAgICAgICAgIFJfUkVGKHJldHZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC04NTUsOSArOTY3LDExIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICByZXR2YWwgPSB2OworICAgICAgICBSX1JFRihyZXR2YWwpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9VTklDT0RFOgorICAgIGNhc2UgVFlQRV9JTlRFUk5FRDoKICAgICAgICAgewogICAgICAgICBjaGFyICpidWZmZXI7CiAKQEAgLTg3MSwxOSArOTg1LDMxIEBACiAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgYnVmZmVyID0gUHlNZW1fTkVXKGNoYXIsIG4pOwotICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIHJldHZhbCA9IFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAocl9zdHJpbmcoYnVmZmVyLCBuLCBwKSAhPSBuKSB7CisgICAgICAgIGlmIChuICE9IDApIHsKKyAgICAgICAgICAgIGJ1ZmZlciA9IFB5TWVtX05FVyhjaGFyLCBuKTsKKyAgICAgICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocl9zdHJpbmcoYnVmZmVyLCBuLCBwKSAhPSBuKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fREVMKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChidWZmZXIsIG4sICJzdXJyb2dhdGVwYXNzIik7CiAgICAgICAgICAgICBQeU1lbV9ERUwoYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgICAgICB9CisgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVVURjgoYnVmZmVyLCBuLCAic3Vycm9nYXRlcGFzcyIpOwotICAgICAgICBQeU1lbV9ERUwoYnVmZmVyKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9JTlRFUk5FRCkKKyAgICAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZ2KTsKICAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgUl9SRUYocmV0dmFsKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtODk5LDYgKzEwMjUsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgdiA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBSX1JFRih2KTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTMwLDYgKzEwNTcsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgdiA9IFB5TGlzdF9OZXcobik7CisgICAgICAgIFJfUkVGKHYpOwogICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NTEsNiArMTA3OSw3IEBACiAKICAgICBjYXNlIFRZUEVfRElDVDoKICAgICAgICAgdiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgUl9SRUYodik7CiAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk4Niw2ICsxMTE1LDE2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOworICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgeworICAgICAgICAgICAgUl9SRUYodik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0CisgICAgICAgICAgICAgKiBiZSBpbml0IHdpdGggYSByZWZjb3VudCBvZiAxCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7CisgICAgICAgICAgICBpZiAoaWR4IDwgMCkKKyAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCisgICAgICAgIH0KICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAwOCw2ICsxMTQ3LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUgIT0gVFlQRV9TRVQpCisgICAgICAgICAgICB2ID0gcl9yZWZfaW5zZXJ0KHYsIGlkeCwgZmxhZywgcCk7CiAgICAgICAgIHJldHZhbCA9IHY7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xMDI5LDYgKzExNzAsMTIgQEAKICAgICAgICAgICAgIGludCBmaXJzdGxpbmVubzsKICAgICAgICAgICAgIFB5T2JqZWN0ICpsbm90YWIgPSBOVUxMOwogCisgICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOworICAgICAgICAgICAgaWYgKGlkeCA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2ID0gTlVMTDsKIAogICAgICAgICAgICAgLyogWFhYIGlnbm9yZSBsb25nLT5pbnQgb3ZlcmZsb3dzIGZvciBub3cgKi8KQEAgLTEwOTQsNiArMTI0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSwgY29uc3RzLCBuYW1lcywgdmFybmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZXZhcnMsIGNlbGx2YXJzLCBmaWxlbmFtZSwgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdGxpbmVubywgbG5vdGFiKTsKKyAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKIAogICAgICAgICAgIGNvZGVfZXJyb3I6CiAgICAgICAgICAgICBQeV9YREVDUkVGKGNvZGUpOwpAQCAtMTEwOSw2ICsxMjU3LDIzIEBACiAgICAgICAgIHJldHZhbCA9IHY7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUWVBFX1JFRjoKKyAgICAgICAgbiA9IHJfbG9uZyhwKTsKKyAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gUHlMaXN0X0dFVF9TSVpFKHAtPnJlZnMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJhZCBtYXJzaGFsIGRhdGEgKGludmFsaWQgcmVmZXJlbmNlKSIpOworICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHYgPSBQeUxpc3RfR0VUX0lURU0ocC0+cmVmcywgbik7CisgICAgICAgIGlmICh2ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIG1hcnNoYWwgZGF0YSAoaW52YWxpZCByZWZlcmVuY2UpIik7CisgICAgICAgICAgICByZXR2YWwgPSBOVUxMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR2YWwgPSB2OworICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8qIEJvZ3VzIGRhdGEgZ290IHdyaXR0ZW4sIHdoaWNoIGlzbid0IGlkZWFsLgogICAgICAgICAgICBUaGlzIHdpbGwgbGV0IHlvdSBrZWVwIHdvcmtpbmcgYW5kIHJlY292ZXIuICovCkBAIC0xMjE0LDcgKzEzNzksMTEgQEAKICAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmYucHRyID0gcmYuZW5kID0gTlVMTDsKKyAgICByZi5yZWZzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAocmYucmVmcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOworICAgIFB5X0RFQ1JFRihyZi5yZWZzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjI5LDcgKzEzOTgsMTEgQEAKICAgICByZi5wdHIgPSBzdHI7CiAgICAgcmYuZW5kID0gc3RyICsgbGVuOwogICAgIHJmLmRlcHRoID0gMDsKKyAgICByZi5yZWZzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAocmYucmVmcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOworICAgIFB5X0RFQ1JFRihyZi5yZWZzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjQ4LDcgKzE0MjEsMTMgQEAKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKKyAgICBpZiAodmVyc2lvbiA+PSAzKSB7CisgICAgICAgIGlmICgod2YucmVmcyA9IFB5RGljdF9OZXcoKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZQorICAgICAgICB3Zi5yZWZzID0gTlVMTDsKICAgICB3X29iamVjdCh4LCAmd2YpOworICAgIFB5X1hERUNSRUYod2YucmVmcyk7CiAgICAgaWYgKHdmLnN0ciAhPSBOVUxMKSB7CiAgICAgICAgIGNoYXIgKmJhc2UgPSBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXdmLnN0cik7CiAgICAgICAgIGlmICh3Zi5wdHIgLSBiYXNlID4gUFlfU1NJWkVfVF9NQVgpIHsKQEAgLTEzMjAsNiArMTQ5OSw4IEBACiAgICAgICogTWFrZSBhIGNhbGwgdG8gdGhlIHJlYWQgbWV0aG9kLCBidXQgcmVhZCB6ZXJvIGJ5dGVzLgogICAgICAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIG9iamVjdCBwYXNzZWQgaW4gYXQgbGVhc3QKICAgICAgKiBoYXMgYSByZWFkIG1ldGhvZCB3aGljaCByZXR1cm5zIGJ5dGVzLgorICAgICAqIFRoaXMgY2FuIGJlIHJlbW92ZWQgaWYgd2UgZ3VhcmFudGVlIGdvb2QgZXJyb3IgaGFuZGxpbmcKKyAgICAgKiBmb3Igcl9zdHJpbmcoKQogICAgICAqLwogICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJpIiwgMCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKQEAgLTEzMzUsNyArMTUxNiwxMSBAQAogICAgICAgICByZi5mcCA9IE5VTEw7CiAgICAgICAgIHJmLnJlYWRhYmxlID0gZjsKICAgICAgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IHJlYWRfb2JqZWN0KCZyZik7CisgICAgICAgIGlmICgocmYucmVmcyA9IFB5TGlzdF9OZXcoMCkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRfb2JqZWN0KCZyZik7CisgICAgICAgICAgICBQeV9ERUNSRUYocmYucmVmcyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICB9CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzkyLDggKzE1NzcsMTEgQEAKICAgICByZi5wdHIgPSBzOwogICAgIHJmLmVuZCA9IHMgKyBuOwogICAgIHJmLmRlcHRoID0gMDsKKyAgICBpZiAoKHJmLnJlZnMgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXN1bHQgPSByZWFkX29iamVjdCgmcmYpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnApOworICAgIFB5X0RFQ1JFRihyZi5yZWZzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDMzLDYgKzE2MjEsNyBAQAogdmVyc2lvbiAtLSBpbmRpY2F0ZXMgdGhlIGZvcm1hdCB0aGF0IHRoZSBtb2R1bGUgdXNlcy4gVmVyc2lvbiAwIGlzIHRoZVxuXAogICAgIGhpc3RvcmljYWwgZm9ybWF0LCB2ZXJzaW9uIDEgc2hhcmVzIGludGVybmVkIHN0cmluZ3MgYW5kIHZlcnNpb24gMlxuXAogICAgIHVzZXMgYSBiaW5hcnkgZm9ybWF0IGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLlxuXAorICAgIFZlcnNpb24gMyBzaGFyZXMgY29tbW9uIG9iamVjdCByZWZlcmVuY2VzIChOZXcgaW4gdmVyc2lvbiAzLjQpLlxuXAogXG5cCiBGdW5jdGlvbnM6XG5cCiBcblwKZGlmZiAtLWdpdCBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKaW5kZXggMmQ2YmNkYS4uZjkwYTE3YSAxMDA2NDQKLS0tIGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKKysrIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKQEAgLTY4LDcgKzY4LDcgQEAKICAgICAmJlRBUkdFVF9CSU5BUllfT1IsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9QT1dFUiwKICAgICAmJlRBUkdFVF9HRVRfSVRFUiwKLSAgICAmJlRBUkdFVF9TVE9SRV9MT0NBTFMsCisgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfUFJJTlRfRVhQUiwKICAgICAmJlRBUkdFVF9MT0FEX0JVSUxEX0NMQVNTLAogICAgICYmVEFSR0VUX1lJRUxEX0ZST00sCkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICAmJlRBUkdFVF9MSVNUX0FQUEVORCwKICAgICAmJlRBUkdFVF9TRVRfQURELAogICAgICYmVEFSR0VUX01BUF9BREQsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfTE9BRF9DTEFTU0RFUkVGLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCA1ZDUzNjc3Li5hNDk3OTBhIDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtMzI3LDM3ICszMjcsNiBAQAogICAgIHJldHVybiBibG9ja3M7CiB9CiAKLS8qIEhlbHBlciB0byByZXBsYWNlIExPQURfTkFNRSBOb25lL1RydWUvRmFsc2Ugd2l0aCBMT0FEX0NPTlNUCi0gICBSZXR1cm5zOiAwIGlmIG5vIGNoYW5nZSwgMSBpZiBjaGFuZ2UsIC0xIGlmIGVycm9yICovCi1zdGF0aWMgaW50Ci1sb2FkX2dsb2JhbCh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjb25zdHMpCi17Ci0gICAgUHlfc3NpemVfdCBqOwotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHN0cmNtcChuYW1lLCAiTm9uZSIpID09IDApCi0gICAgICAgIG9iaiA9IFB5X05vbmU7Ci0gICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJUcnVlIikgPT0gMCkKLSAgICAgICAgb2JqID0gUHlfVHJ1ZTsKLSAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgIkZhbHNlIikgPT0gMCkKLSAgICAgICAgb2JqID0gUHlfRmFsc2U7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKLSAgICBmb3IgKGogPSAwOyBqIDwgUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7IGorKykgewotICAgICAgICBpZiAoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgaikgPT0gb2JqKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChqID09IFB5TGlzdF9HRVRfU0laRShjb25zdHMpKSB7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGNvbnN0cywgb2JqKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGFzc2VydChQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBqKSA9PSBvYmopOwotICAgIGNvZGVzdHJbaV0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKLSAgICByZXR1cm4gMTsKLX0KLQogLyogUGVyZm9ybSBiYXNpYyBwZWVwaG9sZSBvcHRpbWl6YXRpb25zIHRvIGNvbXBvbmVudHMgb2YgYSBjb2RlIG9iamVjdC4KICAgIFRoZSBjb25zdHMgb2JqZWN0IHNob3VsZCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gdG8gYWxsb3cgbmV3IGNvbnN0YW50cwogICAgdG8gYmUgYXBwZW5kZWQuCkBAIC0zOTIsNyArMzYxLDYgQEAKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOwogICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBOVUxMOwotICAgIGNoYXIgKm5hbWU7CiAKICAgICAvKiBCYWlsIG91dCBpZiBhbiBleGNlcHRpb24gaXMgc2V0ICovCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCkBAIC00MTMsOCArMzgxLDEwIEBACiAKICAgICAvKiBNYWtlIGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSBjb2RlIHN0cmluZyAqLwogICAgIGNvZGVzdHIgPSAodW5zaWduZWQgY2hhciAqKVB5TWVtX01hbGxvYyhjb2RlbGVuKTsKLSAgICBpZiAoY29kZXN0ciA9PSBOVUxMKQorICAgIGlmIChjb2Rlc3RyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0RXJyb3I7CisgICAgfQogICAgIGNvZGVzdHIgPSAodW5zaWduZWQgY2hhciAqKW1lbWNweShjb2Rlc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7CiAKQEAgLTQyOCw4ICszOTgsMTAgQEAKIAogICAgIC8qIE1hcHBpbmcgdG8gbmV3IGp1bXAgdGFyZ2V0cyBhZnRlciBOT1BzIGFyZSByZW1vdmVkICovCiAgICAgYWRkcm1hcCA9IChpbnQgKilQeU1lbV9NYWxsb2MoY29kZWxlbiAqIHNpemVvZihpbnQpKTsKLSAgICBpZiAoYWRkcm1hcCA9PSBOVUxMKQorICAgIGlmIChhZGRybWFwID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0RXJyb3I7CisgICAgfQogCiAgICAgYmxvY2tzID0gbWFya2Jsb2Nrcyhjb2Rlc3RyLCBjb2RlbGVuKTsKICAgICBpZiAoYmxvY2tzID09IE5VTEwpCkBAIC00NzUsMjAgKzQ0Nyw2IEBACiAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdID0gTk9QOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgLyogUmVwbGFjZSBMT0FEX0dMT0JBTC9MT0FEX05BTUUgTm9uZS9UcnVlL0ZhbHNlCi0gICAgICAgICAgICAgICAgICAgd2l0aCBMT0FEX0NPTlNUIE5vbmUvVHJ1ZS9GYWxzZSAqLwotICAgICAgICAgICAgY2FzZSBMT0FEX05BTUU6Ci0gICAgICAgICAgICBjYXNlIExPQURfR0xPQkFMOgotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoUHlUdXBsZV9HRVRfSVRFTShuYW1lcywgaikpOwotICAgICAgICAgICAgICAgIGggPSBsb2FkX2dsb2JhbChjb2Rlc3RyLCBpLCBuYW1lLCBjb25zdHMpOwotICAgICAgICAgICAgICAgIGlmIChoIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0RXJyb3I7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaCA9PSAwKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0CiAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKICAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCmRpZmYgLS1naXQgYS9QeXRob24vcHlhcmVuYS5jIGIvUHl0aG9uL3B5YXJlbmEuYwppbmRleCAwMmEzMWQ4Li4xMDM2MDNmIDEwMDY0NAotLS0gYS9QeXRob24vcHlhcmVuYS5jCisrKyBiL1B5dGhvbi9weWFyZW5hLmMKQEAgLTc3LDcgKzc3LDcgQEAKIHsKICAgICAvKiBBbGxvY2F0ZSBoZWFkZXIgYW5kIGJsb2NrIGFzIG9uZSB1bml0LgogICAgICAgIGFiX21lbSBwb2ludHMganVzdCBwYXN0IGhlYWRlci4gKi8KLSAgICBibG9jayAqYiA9IChibG9jayAqKW1hbGxvYyhzaXplb2YoYmxvY2spICsgc2l6ZSk7CisgICAgYmxvY2sgKmIgPSAoYmxvY2sgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKGJsb2NrKSArIHNpemUpOwogICAgIGlmICghYikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYi0+YWJfc2l6ZSA9IHNpemU7CkBAIC05Miw3ICs5Miw3IEBACiBibG9ja19mcmVlKGJsb2NrICpiKSB7CiAgICAgd2hpbGUgKGIpIHsKICAgICAgICAgYmxvY2sgKm5leHQgPSBiLT5hYl9uZXh0OwotICAgICAgICBmcmVlKGIpOworICAgICAgICBQeU1lbV9GcmVlKGIpOwogICAgICAgICBiID0gbmV4dDsKICAgICB9CiB9CkBAIC0xMjcsMjAgKzEyNywyMCBAQAogUHlBcmVuYSAqCiBQeUFyZW5hX05ldygpCiB7Ci0gICAgUHlBcmVuYSogYXJlbmEgPSAoUHlBcmVuYSAqKW1hbGxvYyhzaXplb2YoUHlBcmVuYSkpOworICAgIFB5QXJlbmEqIGFyZW5hID0gKFB5QXJlbmEgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKFB5QXJlbmEpKTsKICAgICBpZiAoIWFyZW5hKQogICAgICAgICByZXR1cm4gKFB5QXJlbmEqKVB5RXJyX05vTWVtb3J5KCk7CiAKICAgICBhcmVuYS0+YV9oZWFkID0gYmxvY2tfbmV3KERFRkFVTFRfQkxPQ0tfU0laRSk7CiAgICAgYXJlbmEtPmFfY3VyID0gYXJlbmEtPmFfaGVhZDsKICAgICBpZiAoIWFyZW5hLT5hX2hlYWQpIHsKLSAgICAgICAgZnJlZSgodm9pZCAqKWFyZW5hKTsKKyAgICAgICAgUHlNZW1fRnJlZSgodm9pZCAqKWFyZW5hKTsKICAgICAgICAgcmV0dXJuIChQeUFyZW5hKilQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICBhcmVuYS0+YV9vYmplY3RzID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAoIWFyZW5hLT5hX29iamVjdHMpIHsKICAgICAgICAgYmxvY2tfZnJlZShhcmVuYS0+YV9oZWFkKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKWFyZW5hKTsKKyAgICAgICAgUHlNZW1fRnJlZSgodm9pZCAqKWFyZW5hKTsKICAgICAgICAgcmV0dXJuIChQeUFyZW5hKilQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICNpZiBkZWZpbmVkKFB5X0RFQlVHKQpAQCAtMTczLDcgKzE3Myw3IEBACiAgICAgKi8KIAogICAgIFB5X0RFQ1JFRihhcmVuYS0+YV9vYmplY3RzKTsKLSAgICBmcmVlKGFyZW5hKTsKKyAgICBQeU1lbV9GcmVlKGFyZW5hKTsKIH0KIAogdm9pZCAqCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCA3NzJhYTUzLi40MDYwNmJmIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTYsMTEgKzYsMTEgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDQVVUSU9OCiAKLUFsd2F5cyB1c2UgbWFsbG9jKCkgYW5kIGZyZWUoKSBkaXJlY3RseSBpbiB0aGlzIGZpbGUuICBBIG51bWJlciBvZiB0aGVzZQotZnVuY3Rpb25zIGFyZSBhZHZlcnRpc2VkIGFzIHNhZmUgdG8gY2FsbCB3aGVuIHRoZSBHSUwgaXNuJ3QgaGVsZCwgYW5kIGluCi1hIGRlYnVnIGJ1aWxkIFB5dGhvbiByZWRpcmVjdHMgKGUuZy4pIFB5TWVtX05FVyAoZXRjKSB0byBQeXRob24ncyBkZWJ1Z2dpbmcKLW9ibWFsbG9jIGZ1bmN0aW9ucy4gIFRob3NlIGFyZW4ndCB0aHJlYWQtc2FmZSAodGhleSByZWx5IG9uIHRoZSBHSUwgdG8gYXZvaWQKLXRoZSBleHBlbnNlIG9mIGRvaW5nIHRoZWlyIG93biBsb2NraW5nKS4KK0Fsd2F5cyB1c2UgUHlNZW1fUmF3TWFsbG9jKCkgYW5kIFB5TWVtX1Jhd0ZyZWUoKSBkaXJlY3RseSBpbiB0aGlzIGZpbGUuICBBCitudW1iZXIgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBhZHZlcnRpc2VkIGFzIHNhZmUgdG8gY2FsbCB3aGVuIHRoZSBHSUwgaXNuJ3QKK2hlbGQsIGFuZCBpbiBhIGRlYnVnIGJ1aWxkIFB5dGhvbiByZWRpcmVjdHMgKGUuZy4pIFB5TWVtX05FVyAoZXRjKSB0byBQeXRob24ncworZGVidWdnaW5nIG9ibWFsbG9jIGZ1bmN0aW9ucy4gIFRob3NlIGFyZW4ndCB0aHJlYWQtc2FmZSAodGhleSByZWx5IG9uIHRoZSBHSUwKK3RvIGF2b2lkIHRoZSBleHBlbnNlIG9mIGRvaW5nIHRoZWlyIG93biBsb2NraW5nKS4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZmRlZiBIQVZFX0RMT1BFTgpAQCAtNjAsNyArNjAsNyBAQAogUHlJbnRlcnByZXRlclN0YXRlX05ldyh2b2lkKQogewogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFsbG9jKHNpemVvZihQeUludGVycHJldGVyU3RhdGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX1Jhd01hbGxvYyhzaXplb2YoUHlJbnRlcnByZXRlclN0YXRlKSk7CiAKICAgICBpZiAoaW50ZXJwICE9IE5VTEwpIHsKICAgICAgICAgSEVBRF9JTklUKCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZTogcmVtYWluaW5nIHRocmVhZHMiKTsKICAgICAqcCA9IGludGVycC0+bmV4dDsKICAgICBIRUFEX1VOTE9DSygpOwotICAgIGZyZWUoaW50ZXJwKTsKKyAgICBQeU1lbV9SYXdGcmVlKGludGVycCk7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoaW50ZXJwX2hlYWQgPT0gTlVMTCAmJiBoZWFkX211dGV4ICE9IE5VTEwpIHsKICAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGhlYWRfbXV0ZXgpOwpAQCAtMTY4LDcgKzE2OCw3IEBACiBzdGF0aWMgUHlUaHJlYWRTdGF0ZSAqCiBuZXdfdGhyZWFkc3RhdGUoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIGludCBpbml0KQogewotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IChQeVRocmVhZFN0YXRlICopbWFsbG9jKHNpemVvZihQeVRocmVhZFN0YXRlKSk7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gKFB5VGhyZWFkU3RhdGUgKilQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKFB5VGhyZWFkU3RhdGUpKTsKIAogICAgIGlmIChfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSA9PSBOVUxMKQogICAgICAgICBfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSA9IHRocmVhZHN0YXRlX2dldGZyYW1lOwpAQCAtMjEzLDcgKzIxMywxMCBAQAogICAgICAgICAgICAgX1B5VGhyZWFkU3RhdGVfSW5pdCh0c3RhdGUpOwogCiAgICAgICAgIEhFQURfTE9DSygpOworICAgICAgICB0c3RhdGUtPnByZXYgPSBOVUxMOwogICAgICAgICB0c3RhdGUtPm5leHQgPSBpbnRlcnAtPnRzdGF0ZV9oZWFkOworICAgICAgICBpZiAodHN0YXRlLT5uZXh0KQorICAgICAgICAgICAgdHN0YXRlLT5uZXh0LT5wcmV2ID0gdHN0YXRlOwogICAgICAgICBpbnRlcnAtPnRzdGF0ZV9oZWFkID0gdHN0YXRlOwogICAgICAgICBIRUFEX1VOTE9DSygpOwogICAgIH0KQEAgLTM0OSwzNyArMzUyLDIwIEBACiB0c3RhdGVfZGVsZXRlX2NvbW1vbihQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqKnA7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqcHJldl9wID0gTlVMTDsKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5VGhyZWFkU3RhdGVfRGVsZXRlOiBOVUxMIHRzdGF0ZSIpOwogICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwogICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlUaHJlYWRTdGF0ZV9EZWxldGU6IE5VTEwgaW50ZXJwIik7CiAgICAgSEVBRF9MT0NLKCk7Ci0gICAgZm9yIChwID0gJmludGVycC0+dHN0YXRlX2hlYWQ7IDsgcCA9ICYoKnApLT5uZXh0KSB7Ci0gICAgICAgIGlmICgqcCA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKLSAgICAgICAgICAgICAgICAiUHlUaHJlYWRTdGF0ZV9EZWxldGU6IGludmFsaWQgdHN0YXRlIik7Ci0gICAgICAgIGlmICgqcCA9PSB0c3RhdGUpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLyogU2FuaXR5IGNoZWNrLiAgVGhlc2Ugc3RhdGVzIHNob3VsZCBuZXZlciBoYXBwZW4gYnV0IGlmCi0gICAgICAgICAqIHRoZXkgZG8gd2UgbXVzdCBhYm9ydC4gIE90aGVyd2lzZSB3ZSdsbCBlbmQgdXAgc3Bpbm5pbmcgaW4KLSAgICAgICAgICogaW4gYSB0aWdodCBsb29wIHdpdGggdGhlIGxvY2sgaGVsZC4gIEEgc2ltaWxhciBjaGVjayBpcyBkb25lCi0gICAgICAgICAqIGluIHRocmVhZC5jIGZpbmRfa2V5KCkuICAqLwotICAgICAgICBpZiAoKnAgPT0gcHJldl9wKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKLSAgICAgICAgICAgICAgICAiUHlUaHJlYWRTdGF0ZV9EZWxldGU6IHNtYWxsIGNpcmN1bGFyIGxpc3QoISkiCi0gICAgICAgICAgICAgICAgIiBhbmQgdHN0YXRlIG5vdCBmb3VuZC4iKTsKLSAgICAgICAgcHJldl9wID0gKnA7Ci0gICAgICAgIGlmICgoKnApLT5uZXh0ID09IGludGVycC0+dHN0YXRlX2hlYWQpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgICAgICJQeVRocmVhZFN0YXRlX0RlbGV0ZTogY2lyY3VsYXIgbGlzdCghKSBhbmQiCi0gICAgICAgICAgICAgICAgIiB0c3RhdGUgbm90IGZvdW5kLiIpOwotICAgIH0KLSAgICAqcCA9IHRzdGF0ZS0+bmV4dDsKKyAgICBpZiAodHN0YXRlLT5wcmV2KQorICAgICAgICB0c3RhdGUtPnByZXYtPm5leHQgPSB0c3RhdGUtPm5leHQ7CisgICAgZWxzZQorICAgICAgICBpbnRlcnAtPnRzdGF0ZV9oZWFkID0gdHN0YXRlLT5uZXh0OworICAgIGlmICh0c3RhdGUtPm5leHQpCisgICAgICAgIHRzdGF0ZS0+bmV4dC0+cHJldiA9IHRzdGF0ZS0+cHJldjsKICAgICBIRUFEX1VOTE9DSygpOwotICAgIGZyZWUodHN0YXRlKTsKKyAgICBQeU1lbV9SYXdGcmVlKHRzdGF0ZSk7CiB9CiAKIApAQCAtNDE0LDYgKzQwMCw0MyBAQAogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCiAKIAorLyoKKyAqIERlbGV0ZSBhbGwgdGhyZWFkIHN0YXRlcyBleGNlcHQgdGhlIG9uZSBwYXNzZWQgYXMgYXJndW1lbnQuCisgKiBOb3RlIHRoYXQsIGlmIHRoZXJlIGlzIGEgY3VycmVudCB0aHJlYWQgc3RhdGUsIGl0ICptdXN0KiBiZSB0aGUgb25lCisgKiBwYXNzZWQgYXMgYXJndW1lbnQuICBBbHNvLCB0aGlzIHdvbid0IHRvdWNoIGFueSBvdGhlciBpbnRlcnByZXRlcnMKKyAqIHRoYW4gdGhlIGN1cnJlbnQgb25lLCBzaW5jZSB3ZSBkb24ndCBrbm93IHdoaWNoIHRocmVhZCBzdGF0ZSBzaG91bGQKKyAqIGJlIGtlcHQgaW4gdGhvc2Ugb3RoZXIgaW50ZXJwcmV0ZXJlcy4KKyAqLwordm9pZAorX1B5VGhyZWFkU3RhdGVfRGVsZXRlRXhjZXB0KFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnAsICpuZXh0LCAqZ2FyYmFnZTsKKyAgICBIRUFEX0xPQ0soKTsKKyAgICAvKiBSZW1vdmUgYWxsIHRocmVhZCBzdGF0ZXMsIGV4Y2VwdCB0c3RhdGUsIGZyb20gdGhlIGxpbmtlZCBsaXN0IG9mCisgICAgICAgdGhyZWFkIHN0YXRlcy4gIFRoaXMgd2lsbCBhbGxvdyBjYWxsaW5nIFB5VGhyZWFkU3RhdGVfQ2xlYXIoKQorICAgICAgIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jay4gKi8KKyAgICBnYXJiYWdlID0gaW50ZXJwLT50c3RhdGVfaGVhZDsKKyAgICBpZiAoZ2FyYmFnZSA9PSB0c3RhdGUpCisgICAgICAgIGdhcmJhZ2UgPSB0c3RhdGUtPm5leHQ7CisgICAgaWYgKHRzdGF0ZS0+cHJldikKKyAgICAgICAgdHN0YXRlLT5wcmV2LT5uZXh0ID0gdHN0YXRlLT5uZXh0OworICAgIGlmICh0c3RhdGUtPm5leHQpCisgICAgICAgIHRzdGF0ZS0+bmV4dC0+cHJldiA9IHRzdGF0ZS0+cHJldjsKKyAgICB0c3RhdGUtPnByZXYgPSB0c3RhdGUtPm5leHQgPSBOVUxMOworICAgIGludGVycC0+dHN0YXRlX2hlYWQgPSB0c3RhdGU7CisgICAgSEVBRF9VTkxPQ0soKTsKKyAgICAvKiBDbGVhciBhbmQgZGVhbGxvY2F0ZSBhbGwgc3RhbGUgdGhyZWFkIHN0YXRlcy4gIEV2ZW4gaWYgdGhpcworICAgICAgIGV4ZWN1dGVzIFB5dGhvbiBjb2RlLCB3ZSBzaG91bGQgYmUgc2FmZSBzaW5jZSBpdCBleGVjdXRlcworICAgICAgIGluIHRoZSBjdXJyZW50IHRocmVhZCwgbm90IG9uZSBvZiB0aGUgc3RhbGUgdGhyZWFkcy4gKi8KKyAgICBmb3IgKHAgPSBnYXJiYWdlOyBwOyBwID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gcC0+bmV4dDsKKyAgICAgICAgUHlUaHJlYWRTdGF0ZV9DbGVhcihwKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShwKTsKKyAgICB9Cit9CisKKwogUHlUaHJlYWRTdGF0ZSAqCiBQeVRocmVhZFN0YXRlX0dldCh2b2lkKQogewpAQCAtNjk3LDYgKzcyMCwxNSBAQAogICAgIHJldHVybiAoUHlUaHJlYWRTdGF0ZSAqKVB5VGhyZWFkX2dldF9rZXlfdmFsdWUoYXV0b1RMU2tleSk7CiB9CiAKK2ludAorUHlHSUxTdGF0ZV9DaGVjayh2b2lkKQoreworICAgIC8qIGNhbid0IHVzZSBQeVRocmVhZFN0YXRlX0dldCgpIHNpbmNlIGl0IHdpbGwgYXNzZXJ0IHRoYXQgaXQgaGFzIHRoZSBHSUwgKi8KKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoCisgICAgICAgICZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICByZXR1cm4gdHN0YXRlICYmICh0c3RhdGUgPT0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSk7Cit9CisKIFB5R0lMU3RhdGVfU1RBVEUKIFB5R0lMU3RhdGVfRW5zdXJlKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDRhYjhmMDguLmY4ZDNiMzUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC05MjMsNyArOTIzLDcgQEAKIAogc3RhdGljIGNoYXIgKgogZm9ybWF0X2Zsb2F0X3Nob3J0KGRvdWJsZSBkLCBjaGFyIGZvcm1hdF9jb2RlLAotICAgICAgICAgICAgICAgICAgIGludCBtb2RlLCBQeV9zc2l6ZV90IHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSwgaW50IHByZWNpc2lvbiwKICAgICAgICAgICAgICAgICAgICBpbnQgYWx3YXlzX2FkZF9zaWduLCBpbnQgYWRkX2RvdF8wX2lmX2ludGVnZXIsCiAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9hbHRfZm9ybWF0dGluZywgY2hhciAqKmZsb2F0X3N0cmluZ3MsIGludCAqdHlwZSkKIHsKQEAgLTEwNTksNyArMTA1OSw3IEBACiAgICAgLyogaWYgdXNpbmcgYW4gZXhwb25lbnQsIHJlc2V0IGRlY2ltYWwgcG9pbnQgcG9zaXRpb24gdG8gMSBhbmQgYWRqdXN0CiAgICAgICAgZXhwb25lbnQgYWNjb3JkaW5nbHkuKi8KICAgICBpZiAodXNlX2V4cCkgewotICAgICAgICBleHAgPSBkZWNwdCAtIDE7CisgICAgICAgIGV4cCA9IChpbnQpZGVjcHQgLSAxOwogICAgICAgICBkZWNwdCA9IDE7CiAgICAgfQogICAgIC8qIGVuc3VyZSB2ZGlnaXRzX3N0YXJ0IDwgZGVjcHQgPD0gdmRpZ2l0c19lbmQsIG9yIHZkaWdpdHNfc3RhcnQgPApkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDllZjY1M2IuLmIwYmM1NDkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTM1LDEyICszNSwzMCBAQAogI2RlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCiAjZW5kaWYKIAorI2lmZGVmIFB5X1JFRl9ERUJVRworc3RhdGljCit2b2lkIF9wcmludF90b3RhbF9yZWZzKHZvaWQpIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICprZXksICp2YWx1ZTsKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hvd3JlZmNvdW50Iik7CisgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBQeURpY3RfR2V0SXRlbSh4b3B0aW9ucywga2V5KTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBpZiAodmFsdWUgPT0gUHlfVHJ1ZSkKKyAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgIlslIiBQWV9GT1JNQVRfU0laRV9UICJkIHJlZnMsICIKKyAgICAgICAgICAgICAgICAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBibG9ja3NdXG4iLAorICAgICAgICAgICAgICAgIF9QeV9HZXRSZWZUb3RhbCgpLCBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKCkpOworfQorI2VuZGlmCisKICNpZm5kZWYgUHlfUkVGX0RFQlVHCiAjZGVmaW5lIFBSSU5UX1RPVEFMX1JFRlMoKQogI2Vsc2UgLyogUHlfUkVGX0RFQlVHICovCi0jZGVmaW5lIFBSSU5UX1RPVEFMX1JFRlMoKSBmcHJpbnRmKHN0ZGVyciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIlslIiBQWV9GT1JNQVRfU0laRV9UICJkIHJlZnNdXG4iLCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgX1B5X0dldFJlZlRvdGFsKCkpCisjZGVmaW5lIFBSSU5UX1RPVEFMX1JFRlMoKSBfcHJpbnRfdG90YWxfcmVmcygpCiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC02OCw2ICs4Niw3IEBACiBzdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7CiBzdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKIGV4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOwogZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKQEAgLTkzLDYgKzExMiw3IEBACiBpbnQgUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeSA9IDA7IC8qIGZvciAtcyBhbmQgc2l0ZS5weSAqLwogaW50IFB5X1VuYnVmZmVyZWRTdGRpb0ZsYWcgPSAwOyAvKiBVbmJ1ZmZlcmVkIGJpbmFyeSBzdGR7aW4sb3V0LGVycn0gKi8KIGludCBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSAwOyAvKiBmb3IgLVIgYW5kIFBZVEhPTkhBU0hTRUVEICovCitpbnQgUHlfSXNvbGF0ZWRGbGFnID0gMDsgLyogZm9yIC1JLCBpc29sYXRlIGZyb20gdXNlcidzIGVudiAqLwogCiBQeVRocmVhZFN0YXRlICpfUHlfRmluYWxpemluZyA9IE5VTEw7CiAKQEAgLTE1Niw3ICsxNzYsNyBAQAogICAgIG5hbWVfdXRmOCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CiAgICAgaWYgKG5hbWVfdXRmOCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIG5hbWVfc3RyID0gc3RyZHVwKG5hbWVfdXRmOCk7CisgICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0zMDksNyArMzI5LDggQEAKICAgICBpZiAoIVB5Qnl0ZUFycmF5X0luaXQoKSkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBieXRlYXJyYXkiKTsKIAotICAgIF9QeUZsb2F0X0luaXQoKTsKKyAgICBpZiAoIV9QeUZsb2F0X0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmbG9hdCIpOwogCiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwogICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKQEAgLTMxOCw2ICszMzksOCBAQAogICAgIC8qIEluaXQgVW5pY29kZSBpbXBsZW1lbnRhdGlvbjsgcmVsaWVzIG9uIHRoZSBjb2RlYyByZWdpc3RyeSAqLwogICAgIGlmIChfUHlVbmljb2RlX0luaXQoKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdW5pY29kZSIpOworICAgIGlmIChfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN0cnVjdHNlcSIpOwogCiAgICAgYmltb2QgPSBfUHlCdWlsdGluX0luaXQoKTsKICAgICBpZiAoYmltb2QgPT0gTlVMTCkKQEAgLTUyNiwxMCArNTQ5LDYgQEAKICAgICB3aGlsZSAoUHlHQ19Db2xsZWN0KCkgPiAwKQogICAgICAgICAvKiBub3RoaW5nICovOwogI2VuZGlmCi0gICAgLyogV2UgcnVuIHRoaXMgd2hpbGUgbW9zdCBpbnRlcnByZXRlciBzdGF0ZSBpcyBzdGlsbCBhbGl2ZSwgc28gdGhhdAotICAgICAgIGRlYnVnIGluZm9ybWF0aW9uIGNhbiBiZSBwcmludGVkIG91dCAqLwotICAgIF9QeUdDX0ZpbmkoKTsKLQogICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KICAgICBQeUltcG9ydF9DbGVhbnVwKCk7CiAKQEAgLTU5MiwxMSArNjExLDYgQEAKIAogICAgIF9QeUV4Y19GaW5pKCk7CiAKLSAgICAvKiBDbGVhbnVwIGF1dG8tdGhyZWFkLXN0YXRlICovCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBfUHlHSUxTdGF0ZV9GaW5pKCk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQogICAgIC8qIFN1bmRyeSBmaW5hbGl6ZXJzICovCiAgICAgUHlNZXRob2RfRmluaSgpOwogICAgIFB5RnJhbWVfRmluaSgpOwpAQCAtNjEwLDE3ICs2MjQsMTQgQEAKICAgICBQeUZsb2F0X0ZpbmkoKTsKICAgICBQeURpY3RfRmluaSgpOwogICAgIFB5U2xpY2VfRmluaSgpOworICAgIF9QeUdDX0ZpbmkoKTsKIAogICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwogICAgIF9QeVVuaWNvZGVfRmluaSgpOwogCi0gICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCi0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQogICAgIC8qIHJlc2V0IGZpbGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcgKi8KICAgICBpZiAoIVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgewotICAgICAgICBmcmVlKChjaGFyKilQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZSgoY2hhciopUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CiAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBOVUxMOwogICAgIH0KIApAQCAtNjMyLDYgKzY0MywxNSBAQAogCiAgICAgUHlHcmFtbWFyX1JlbW92ZUFjY2VsZXJhdG9ycygmX1B5UGFyc2VyX0dyYW1tYXIpOwogCisgICAgLyogQ2xlYW51cCBhdXRvLXRocmVhZC1zdGF0ZSAqLworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgX1B5R0lMU3RhdGVfRmluaSgpOworI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCisKKyAgICAvKiBEZWxldGUgY3VycmVudCB0aHJlYWQuIEFmdGVyIHRoaXMsIG1hbnkgQyBBUEkgY2FsbHMgYmVjb21lIGNyYXNoeS4gKi8KKyAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7CisgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOworCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIC8qIERpc3BsYXkgYWRkcmVzc2VzICgmIHJlZmNudHMpIG9mIGFsbCBvYmplY3RzIHN0aWxsIGFsaXZlLgogICAgICAqIEFuIGFkZHJlc3MgY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgcmVwciBvZiB0aGUgb2JqZWN0LCBwcmludGVkCkBAIC04MjcsNyArODQ3LDcgQEAKIHN0YXRpYyB2b2lkCiBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQ7CisgICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwpAQCAtODQ4LDcgKzg2OCw4IEBACiAgICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAogICAgICAqIHByb2Nlc3MuCiAgICAgICovCi0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIikgPT0gTlVMTCkgeworICAgIGxvYWRlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIik7CisgICAgaWYgKGxvYWRlciA9PSBOVUxMIHx8IGxvYWRlciA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbHRpbkltcG9ydGVyIik7CiAgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewpAQCAtODk4LDYgKzkxOSw3IEBACiAgICAgUHlPYmplY3QgKm07CiAgICAgbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2l0ZSIpOwogICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZVxuIik7CiAgICAgICAgIFB5RXJyX1ByaW50KCk7CiAgICAgICAgIFB5X0ZpbmFsaXplKCk7CiAgICAgICAgIGV4aXQoMSk7CkBAIC0xMDY1LDcgKzEwODcsMTEgQEAKICAgICBlbmNvZGluZyA9IFB5X0dFVEVOVigiUFlUSE9OSU9FTkNPRElORyIpOwogICAgIGVycm9ycyA9IE5VTEw7CiAgICAgaWYgKGVuY29kaW5nKSB7Ci0gICAgICAgIGVuY29kaW5nID0gc3RyZHVwKGVuY29kaW5nKTsKKyAgICAgICAgZW5jb2RpbmcgPSBfUHlNZW1fU3RyZHVwKGVuY29kaW5nKTsKKyAgICAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgICAgIGVycm9ycyA9IHN0cmNocihlbmNvZGluZywgJzonKTsKICAgICAgICAgaWYgKGVycm9ycykgewogICAgICAgICAgICAgKmVycm9ycyA9ICdcMCc7CkBAIC0xMTI0LDE4ICsxMTUwLDI0IEBACiAgICAgICAgd2hlbiBpbXBvcnQuYyB0cmllcyB0byB3cml0ZSB0byBzdGRlcnIgaW4gdmVyYm9zZSBtb2RlLiAqLwogICAgIGVuY29kaW5nX2F0dHIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0ZCwgImVuY29kaW5nIik7CiAgICAgaWYgKGVuY29kaW5nX2F0dHIgIT0gTlVMTCkgewotICAgICAgICBjb25zdCBjaGFyICogZW5jb2Rpbmc7Ci0gICAgICAgIGVuY29kaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZyhlbmNvZGluZ19hdHRyKTsKLSAgICAgICAgaWYgKGVuY29kaW5nICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlY19pbmZvID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKKyAgICAgICAgY29uc3QgY2hhciAqIHN0ZF9lbmNvZGluZzsKKyAgICAgICAgc3RkX2VuY29kaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZyhlbmNvZGluZ19hdHRyKTsKKyAgICAgICAgaWYgKHN0ZF9lbmNvZGluZyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY29kZWNfaW5mbyA9IF9QeUNvZGVjX0xvb2t1cChzdGRfZW5jb2RpbmcpOwogICAgICAgICAgICAgUHlfWERFQ1JFRihjb2RlY19pbmZvKTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmdfYXR0cik7CiAgICAgfQogICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBOb3QgYSBmYXRhbCBlcnJvciBpZiBjb2RlYyBpc24ndCBhdmFpbGFibGUgKi8KIAotICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRlcnJfXyIsIHN0ZCk7Ci0gICAgUHlTeXNfU2V0T2JqZWN0KCJzdGRlcnIiLCBzdGQpOworICAgIGlmIChQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBzdGQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RkKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5U3lzX1NldE9iamVjdCgic3RkZXJyIiwgc3RkKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0ZCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogICAgIFB5X0RFQ1JFRihzdGQpOwogI2VuZGlmCiAKQEAgLTExNDQsOCArMTE3Niw3IEBACiAgICAgICAgIHN0YXR1cyA9IC0xOwogICAgIH0KIAotICAgIGlmIChlbmNvZGluZykKLSAgICAgICAgZnJlZShlbmNvZGluZyk7CisgICAgUHlNZW1fRnJlZShlbmNvZGluZyk7CiAgICAgUHlfWERFQ1JFRihiaW1vZCk7CiAgICAgUHlfWERFQ1JFRihpb21vZCk7CiAgICAgcmV0dXJuIHN0YXR1czsKQEAgLTEzNTIsOCArMTM4Myw4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludAotc3RhdGljIHNldF9tYWluX2xvYWRlcihQeU9iamVjdCAqZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmxvYWRlcl9uYW1lKQorc3RhdGljIGludAorc2V0X21haW5fbG9hZGVyKFB5T2JqZWN0ICpkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbG9hZGVyX25hbWUpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwpAQCAtMjQ1OSw2ICsyNDkwLDkgQEAKICAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfSUdOKTsKICNlbmRpZgogICAgIFB5T1NfSW5pdEludGVycnVwdHMoKTsgLyogTWF5IGltcGx5IGluaXRzaWduYWwoKSAqLworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBzaWduYWwiKTsKKyAgICB9CiB9CiAKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3JhbmRvbS5jIGIvUHl0aG9uL3JhbmRvbS5jCmluZGV4IDUzNTE4YzIuLjFhZDRjM2QgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9yYW5kb20uYworKysgYi9QeXRob24vcmFuZG9tLmMKQEAgLTEyLDEzICsxMiw2IEBACiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICpDUllQVEFDUVVJUkVDT05URVhUQSkoSENSWVBUUFJPViAqcGhQcm92LFwKLSAgICAgICAgICAgICAgTFBDU1RSIHBzekNvbnRhaW5lciwgTFBDU1RSIHBzelByb3ZpZGVyLCBEV09SRCBkd1Byb3ZUeXBlLFwKLSAgICAgICAgICAgICAgRFdPUkQgZHdGbGFncyApOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKkNSWVBUR0VOUkFORE9NKShIQ1JZUFRQUk9WIGhQcm92LCBEV09SRCBkd0xlbixcCi0gICAgICAgICAgICAgIEJZVEUgKnBiQnVmZmVyICk7Ci0KLXN0YXRpYyBDUllQVEdFTlJBTkRPTSBwQ3J5cHRHZW5SYW5kb20gPSBOVUxMOwogLyogVGhpcyBoYW5kbGUgaXMgbmV2ZXIgZXhwbGljaXRseSByZWxlYXNlZC4gSW5zdGVhZCwgdGhlIG9wZXJhdGluZwogICAgc3lzdGVtIHdpbGwgcmVsZWFzZSBpdCB3aGVuIHRoZSBwcm9jZXNzIHRlcm1pbmF0ZXMuICovCiBzdGF0aWMgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0gMDsKQEAgLTI2LDI5ICsxOSw5IEBACiBzdGF0aWMgaW50CiB3aW4zMl91cmFuZG9tX2luaXQoaW50IHJhaXNlKQogewotICAgIEhJTlNUQU5DRSBoQWR2QVBJMzIgPSBOVUxMOwotICAgIENSWVBUQUNRVUlSRUNPTlRFWFRBIHBDcnlwdEFjcXVpcmVDb250ZXh0ID0gTlVMTDsKLQotICAgIC8qIE9idGFpbiBoYW5kbGUgdG8gdGhlIERMTCBjb250YWluaW5nIENyeXB0b0FQSS4gVGhpcyBzaG91bGQgbm90IGZhaWwuICovCi0gICAgaEFkdkFQSTMyID0gR2V0TW9kdWxlSGFuZGxlKCJhZHZhcGkzMi5kbGwiKTsKLSAgICBpZihoQWR2QVBJMzIgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIC8qIE9idGFpbiBwb2ludGVycyB0byB0aGUgQ3J5cHRvQVBJIGZ1bmN0aW9ucy4gVGhpcyB3aWxsIGZhaWwgb24gc29tZSBlYXJseQotICAgICAgIHZlcnNpb25zIG9mIFdpbjk1LiAqLwotICAgIHBDcnlwdEFjcXVpcmVDb250ZXh0ID0gKENSWVBUQUNRVUlSRUNPTlRFWFRBKUdldFByb2NBZGRyZXNzKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhBZHZBUEkzMiwgIkNyeXB0QWNxdWlyZUNvbnRleHRBIik7Ci0gICAgaWYgKHBDcnlwdEFjcXVpcmVDb250ZXh0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBwQ3J5cHRHZW5SYW5kb20gPSAoQ1JZUFRHRU5SQU5ET00pR2V0UHJvY0FkZHJlc3MoaEFkdkFQSTMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3J5cHRHZW5SYW5kb20iKTsKLSAgICBpZiAocENyeXB0R2VuUmFuZG9tID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KICAgICAvKiBBY3F1aXJlIGNvbnRleHQgKi8KLSAgICBpZiAoISBwQ3J5cHRBY3F1aXJlQ29udGV4dCgmaENyeXB0UHJvdiwgTlVMTCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9WX1JTQV9GVUxMLCBDUllQVF9WRVJJRllDT05URVhUKSkKKyAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmhDcnlwdFByb3YsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1ZfUlNBX0ZVTEwsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgcmV0dXJuIDA7CkBAIC03Nyw3ICs1MCw3IEBACiAgICAgd2hpbGUgKHNpemUgPiAwKQogICAgIHsKICAgICAgICAgY2h1bmsgPSBzaXplID4gSU5UX01BWCA/IElOVF9NQVggOiBzaXplOwotICAgICAgICBpZiAoIXBDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCBjaHVuaywgYnVmZmVyKSkKKyAgICAgICAgaWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCBjaHVuaywgYnVmZmVyKSkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KICAgICAgICAgICAgIGlmIChyYWlzZSkKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeW10YWJsZS5jIGIvUHl0aG9uL3N5bXRhYmxlLmMKaW5kZXggNDg0OTVmNy4uMTgzYmY2OSAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5bXRhYmxlLmMKKysrIGIvUHl0aG9uL3N5bXRhYmxlLmMKQEAgLTM3LDI0ICszNywxNCBAQAogICAgIHN0ZS0+c3RlX3RhYmxlID0gc3Q7CiAgICAgc3RlLT5zdGVfaWQgPSBrOyAvKiBzdGUgb3ducyByZWZlcmVuY2UgdG8gayAqLwogCi0gICAgc3RlLT5zdGVfbmFtZSA9IG5hbWU7CiAgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIHN0ZS0+c3RlX25hbWUgPSBuYW1lOwogCiAgICAgc3RlLT5zdGVfc3ltYm9scyA9IE5VTEw7CiAgICAgc3RlLT5zdGVfdmFybmFtZXMgPSBOVUxMOwogICAgIHN0ZS0+c3RlX2NoaWxkcmVuID0gTlVMTDsKIAotICAgIHN0ZS0+c3RlX3N5bWJvbHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKHN0ZS0+c3RlX3N5bWJvbHMgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCi0gICAgc3RlLT5zdGVfdmFybmFtZXMgPSBQeUxpc3RfTmV3KDApOwotICAgIGlmIChzdGUtPnN0ZV92YXJuYW1lcyA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KLSAgICBzdGUtPnN0ZV9jaGlsZHJlbiA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKHN0ZS0+c3RlX2NoaWxkcmVuID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKKyAgICBzdGUtPnN0ZV9kaXJlY3RpdmVzID0gTlVMTDsKIAogICAgIHN0ZS0+c3RlX3R5cGUgPSBibG9jazsKICAgICBzdGUtPnN0ZV91bm9wdGltaXplZCA9IDA7CkBAIC03NSw2ICs2NSwxNSBAQAogICAgIHN0ZS0+c3RlX2NoaWxkX2ZyZWUgPSAwOwogICAgIHN0ZS0+c3RlX2dlbmVyYXRvciA9IDA7CiAgICAgc3RlLT5zdGVfcmV0dXJuc192YWx1ZSA9IDA7CisgICAgc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSA9IDA7CisKKyAgICBzdGUtPnN0ZV9zeW1ib2xzID0gUHlEaWN0X05ldygpOworICAgIHN0ZS0+c3RlX3Zhcm5hbWVzID0gUHlMaXN0X05ldygwKTsKKyAgICBzdGUtPnN0ZV9jaGlsZHJlbiA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKHN0ZS0+c3RlX3N5bWJvbHMgPT0gTlVMTAorICAgICAgICB8fCBzdGUtPnN0ZV92YXJuYW1lcyA9PSBOVUxMCisgICAgICAgIHx8IHN0ZS0+c3RlX2NoaWxkcmVuID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIGlmIChQeURpY3RfU2V0SXRlbShzdC0+c3RfYmxvY2tzLCBzdGUtPnN0ZV9pZCwgKFB5T2JqZWN0ICopc3RlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTEwMiw2ICsxMDEsNyBAQAogICAgIFB5X1hERUNSRUYoc3RlLT5zdGVfc3ltYm9scyk7CiAgICAgUHlfWERFQ1JFRihzdGUtPnN0ZV92YXJuYW1lcyk7CiAgICAgUHlfWERFQ1JFRihzdGUtPnN0ZV9jaGlsZHJlbik7CisgICAgUHlfWERFQ1JFRihzdGUtPnN0ZV9kaXJlY3RpdmVzKTsKICAgICBQeU9iamVjdF9EZWwoc3RlKTsKIH0KIApAQCAtMTg4LDcgKzE4OCw3IEBACiAKIHN0YXRpYyBpZGVudGlmaWVyIHRvcCA9IE5VTEwsIGxhbWJkYSA9IE5VTEwsIGdlbmV4cHIgPSBOVUxMLAogICAgIGxpc3Rjb21wID0gTlVMTCwgc2V0Y29tcCA9IE5VTEwsIGRpY3Rjb21wID0gTlVMTCwKLSAgICBfX2NsYXNzX18gPSBOVUxMLCBfX2xvY2Fsc19fID0gTlVMTDsKKyAgICBfX2NsYXNzX18gPSBOVUxMOwogCiAjZGVmaW5lIEdFVF9JREVOVElGSUVSKFZBUikgXAogICAgICgoVkFSKSA/IChWQVIpIDogKChWQVIpID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIyBWQVIpKSkKQEAgLTM0Miw2ICszNDIsMjQgQEAKICAgICByZXR1cm4gKFB5TG9uZ19BU19MT05HKHYpID4+IFNDT1BFX09GRlNFVCkgJiBTQ09QRV9NQVNLOwogfQogCitzdGF0aWMgaW50CitlcnJvcl9hdF9kaXJlY3RpdmUoUHlTVEVudHJ5T2JqZWN0ICpzdGUsIFB5T2JqZWN0ICpuYW1lKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBhc3NlcnQoc3RlLT5zdGVfZGlyZWN0aXZlcyk7CisgICAgZm9yIChpID0gMDsgOyBpKyspIHsKKyAgICAgICAgZGF0YSA9IFB5TGlzdF9HRVRfSVRFTShzdGUtPnN0ZV9kaXJlY3RpdmVzLCBpKTsKKyAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChkYXRhKSk7CisgICAgICAgIGlmIChQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDApID09IG5hbWUpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgUHlFcnJfU3ludGF4TG9jYXRpb25FeChzdGUtPnN0ZV90YWJsZS0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oZGF0YSwgMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDIpKSk7CisgICAgcmV0dXJuIDA7Cit9CisKIAogLyogQW5hbHl6ZSByYXcgc3ltYm9sIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBzY29wZSBvZiBlYWNoIG5hbWUuCiAKQEAgLTQxNiwxNiArNDM0LDEzIEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSAnJVUnIGlzIHBhcmFtZXRlciBhbmQgZ2xvYmFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25FeChzdGUtPnN0ZV90YWJsZS0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZS0+c3RlX2xpbmVubywgc3RlLT5zdGVfY29sX29mZnNldCk7Ci0KLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGVycm9yX2F0X2RpcmVjdGl2ZShzdGUsIG5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmbGFncyAmIERFRl9OT05MT0NBTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lICclVScgaXMgbm9ubG9jYWwgYW5kIGdsb2JhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcl9hdF9kaXJlY3RpdmUoc3RlLCBuYW1lKTsKICAgICAgICAgfQogICAgICAgICBTRVRfU0NPUEUoc2NvcGVzLCBuYW1lLCBHTE9CQUxfRVhQTElDSVQpOwogICAgICAgICBpZiAoUHlTZXRfQWRkKGdsb2JhbCwgbmFtZSkgPCAwKQpAQCAtNDM5LDE5ICs0NTQsMTkgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSAnJVUnIGlzIHBhcmFtZXRlciBhbmQgbm9ubG9jYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gZXJyb3JfYXRfZGlyZWN0aXZlKHN0ZSwgbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFib3VuZCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJub25sb2NhbCBkZWNsYXJhdGlvbiBub3QgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGVycm9yX2F0X2RpcmVjdGl2ZShzdGUsIG5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGlmICghUHlTZXRfQ29udGFpbnMoYm91bmQsIG5hbWUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGJpbmRpbmcgZm9yIG5vbmxvY2FsICclVScgZm91bmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcl9hdF9kaXJlY3RpdmUoc3RlLCBuYW1lKTsKICAgICAgICAgfQogICAgICAgICBTRVRfU0NPUEUoc2NvcGVzLCBuYW1lLCBGUkVFKTsKICAgICAgICAgc3RlLT5zdGVfZnJlZSA9IDE7CkBAIC00OTYsMTMgKzUxMSwxMCBAQAogCiAgICBOb3RlIHRoYXQgdGhlIGN1cnJlbnQgYmxvY2sncyBmcmVlIHZhcmlhYmxlcyBhcmUgaW5jbHVkZWQgaW4gZnJlZS4KICAgIFRoYXQncyBzYWZlIGJlY2F1c2Ugbm8gbmFtZSBjYW4gYmUgZnJlZSBhbmQgbG9jYWwgaW4gdGhlIHNhbWUgc2NvcGUuCi0KLSAgIFRoZSAncmVzdHJpY3RlZCcgYXJndW1lbnQgbWF5IGJlIHNldCB0byBhIHN0cmluZyB0byByZXN0cmljdCB0aGUgYW5hbHlzaXMKLSAgIHRvIHRoZSBvbmUgdmFyaWFibGUgd2hvc2UgbmFtZSBlcXVhbHMgdGhhdCBzdHJpbmcgKGUuZy4gIl9fY2xhc3NfXyIpLgogKi8KIAogc3RhdGljIGludAotYW5hbHl6ZV9jZWxscyhQeU9iamVjdCAqc2NvcGVzLCBQeU9iamVjdCAqZnJlZSwgY29uc3QgY2hhciAqcmVzdHJpY3RlZCkKK2FuYWx5emVfY2VsbHMoUHlPYmplY3QgKnNjb3BlcywgUHlPYmplY3QgKmZyZWUpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUsICp2LCAqdl9jZWxsOwogICAgIGludCBzdWNjZXNzID0gMDsKQEAgLTUxOSw5ICs1MzEsNiBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghUHlTZXRfQ29udGFpbnMoZnJlZSwgbmFtZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHJlc3RyaWN0ZWQgIT0gTlVMTCAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcmVzdHJpY3RlZCkpCi0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgLyogUmVwbGFjZSBMT0NBTCB3aXRoIENFTEwgZm9yIHRoaXMgbmFtZSwgYW5kIHJlbW92ZQogICAgICAgICAgICBmcm9tIGZyZWUuIEl0IGlzIHNhZmUgdG8gcmVwbGFjZSB0aGUgdmFsdWUgb2YgbmFtZQogICAgICAgICAgICBpbiB0aGUgZGljdCwgYmVjYXVzZSBpdCB3aWxsIG5vdCBjYXVzZSBhIHJlc2l6ZS4KQEAgLTUzNyw2ICs1NDYsMjAgQEAKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAorc3RhdGljIGludAorZHJvcF9jbGFzc19mcmVlKFB5U1RFbnRyeU9iamVjdCAqc3RlLCBQeU9iamVjdCAqZnJlZSkKK3sKKyAgICBpbnQgcmVzOworICAgIGlmICghR0VUX0lERU5USUZJRVIoX19jbGFzc19fKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmVzID0gUHlTZXRfRGlzY2FyZChmcmVlLCBfX2NsYXNzX18pOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAocmVzKQorICAgICAgICBzdGUtPnN0ZV9uZWVkc19jbGFzc19jbG9zdXJlID0gMTsKKyAgICByZXR1cm4gMTsKK30KKwogLyogQ2hlY2sgZm9yIGlsbGVnYWwgc3RhdGVtZW50cyBpbiB1bm9wdGltaXplZCBuYW1lc3BhY2VzICovCiBzdGF0aWMgaW50CiBjaGVja191bm9wdGltaXplZChjb25zdCBQeVNURW50cnlPYmplY3QqIHN0ZSkgewpAQCAtNzY3LDcgKzc5MCw2IEBACiAgICAgICAgIC8qIFNwZWNpYWwtY2FzZSBfX2NsYXNzX18gKi8KICAgICAgICAgaWYgKCFHRVRfSURFTlRJRklFUihfX2NsYXNzX18pKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgYXNzZXJ0KFB5U2V0X0NvbnRhaW5zKGxvY2FsLCBfX2NsYXNzX18pID09IDEpOwogICAgICAgICBpZiAoUHlTZXRfQWRkKG5ld2JvdW5kLCBfX2NsYXNzX18pIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtODAwLDExICs4MjIsOSBAQAogICAgIFB5X0RFQ1JFRih0ZW1wKTsKIAogICAgIC8qIENoZWNrIGlmIGFueSBsb2NhbCB2YXJpYWJsZXMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gY2VsbCB2YXJpYWJsZXMgKi8KLSAgICBpZiAoc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrICYmICFhbmFseXplX2NlbGxzKHNjb3BlcywgbmV3ZnJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKQorICAgIGlmIChzdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2sgJiYgIWFuYWx5emVfY2VsbHMoc2NvcGVzLCBuZXdmcmVlKSkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBlbHNlIGlmIChzdGUtPnN0ZV90eXBlID09IENsYXNzQmxvY2sgJiYgIWFuYWx5emVfY2VsbHMoc2NvcGVzLCBuZXdmcmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19jbGFzc19fIikpCisgICAgZWxzZSBpZiAoc3RlLT5zdGVfdHlwZSA9PSBDbGFzc0Jsb2NrICYmICFkcm9wX2NsYXNzX2ZyZWUoc3RlLCBuZXdmcmVlKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICAvKiBSZWNvcmRzIHRoZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcyBpbiB0aGUgc3ltYm9sIHRhYmxlIGVudHJ5ICovCiAgICAgaWYgKCF1cGRhdGVfc3ltYm9scyhzdGUtPnN0ZV9zeW1ib2xzLCBzY29wZXMsIGJvdW5kLCBuZXdmcmVlLApAQCAtMTA5OCw2ICsxMTE4LDI1IEBACiAKIAogc3RhdGljIGludAorc3ltdGFibGVfcmVjb3JkX2RpcmVjdGl2ZShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsIHN0bXRfdHkgcykKK3sKKyAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBpbnQgcmVzOworICAgIGlmICghc3QtPnN0X2N1ci0+c3RlX2RpcmVjdGl2ZXMpIHsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2RpcmVjdGl2ZXMgPSBQeUxpc3RfTmV3KDApOworICAgICAgICBpZiAoIXN0LT5zdF9jdXItPnN0ZV9kaXJlY3RpdmVzKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGRhdGEgPSBQeV9CdWlsZFZhbHVlKCIoT2lpKSIsIG5hbWUsIHMtPmxpbmVubywgcy0+Y29sX29mZnNldCk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXMgPSBQeUxpc3RfQXBwZW5kKHN0LT5zdF9jdXItPnN0ZV9kaXJlY3RpdmVzLCBkYXRhKTsKKyAgICBQeV9ERUNSRUYoZGF0YSk7CisgICAgcmV0dXJuIHJlcyA9PSAwOworfQorCisKK3N0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X3N0bXQoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKQogewogICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7CkBAIC0xMTQyLDEzICsxMTgxLDYgQEAKICAgICAgICAgaWYgKCFzeW10YWJsZV9lbnRlcl9ibG9jayhzdCwgcy0+di5DbGFzc0RlZi5uYW1lLCBDbGFzc0Jsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopcywgcy0+bGluZW5vLCBzLT5jb2xfb2Zmc2V0KSkKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICBpZiAoIUdFVF9JREVOVElGSUVSKF9fY2xhc3NfXykgfHwKLSAgICAgICAgICAgICFzeW10YWJsZV9hZGRfZGVmKHN0LCBfX2NsYXNzX18sIERFRl9MT0NBTCkgfHwKLSAgICAgICAgICAgICFHRVRfSURFTlRJRklFUihfX2xvY2Fsc19fKSB8fAotICAgICAgICAgICAgIXN5bXRhYmxlX2FkZF9kZWYoc3QsIF9fbG9jYWxzX18sIERFRl9QQVJBTSkpIHsKLSAgICAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpOwotICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgIH0KICAgICAgICAgdG1wID0gc3QtPnN0X3ByaXZhdGU7CiAgICAgICAgIHN0LT5zdF9wcml2YXRlID0gcy0+di5DbGFzc0RlZi5uYW1lOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQ2xhc3NEZWYuYm9keSk7CkBAIC0xMjM2LDE0ICsxMjY4LDcgQEAKICAgICAgICAgYXNkbF9zZXEgKnNlcSA9IHMtPnYuR2xvYmFsLm5hbWVzOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgewogICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lID0gKGlkZW50aWZpZXIpYXNkbF9zZXFfR0VUKHNlcSwgaSk7Ci0gICAgICAgICAgICBsb25nIGN1cjsKLSAgICAgICAgICAgIGlmIChzdC0+c3RfY3VyLT5zdGVfdHlwZSA9PSBDbGFzc0Jsb2NrICYmCi0gICAgICAgICAgICAgICAgIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2NsYXNzX18iKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwgImNhbm5vdCBtYWtlIF9fY2xhc3NfXyBnbG9iYWwiKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbkV4KHN0LT5zdF9maWxlbmFtZSwgcy0+bGluZW5vLCBzLT5jb2xfb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1ciA9IHN5bXRhYmxlX2xvb2t1cChzdCwgbmFtZSk7CisgICAgICAgICAgICBsb25nIGN1ciA9IHN5bXRhYmxlX2xvb2t1cChzdCwgbmFtZSk7CiAgICAgICAgICAgICBpZiAoY3VyIDwgMCkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIGlmIChjdXIgJiAoREVGX0xPQ0FMIHwgVVNFKSkgewpAQCAtMTI2NCw2ICsxMjg5LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX0dMT0JBTCkpCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3JlY29yZF9kaXJlY3RpdmUoc3QsIG5hbWUsIHMpKQorICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyOTMsNiArMTMyMCw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX2FkZF9kZWYoc3QsIG5hbWUsIERFRl9OT05MT0NBTCkpCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3JlY29yZF9kaXJlY3RpdmUoc3QsIG5hbWUsIHMpKQorICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE0MDMsNiArMTQzMiw3IEBACiAgICAgY2FzZSBTdHJfa2luZDoKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CiAgICAgICAgIC8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gKi8KICAgICAgICAgYnJlYWs7CiAgICAgLyogVGhlIGZvbGxvd2luZyBleHBycyBjYW4gYmUgYXNzaWdubWVudCB0YXJnZXRzLiAqLwpAQCAtMTQ5NSwxMCArMTUyNSwxMCBAQAogCiAgICAgaWYgKGEtPmFyZ3MgJiYgIXN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0LCBhLT5hcmdzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGEtPnZhcmFyZ2Fubm90YXRpb24pCi0gICAgICAgIFZJU0lUKHN0LCBleHByLCBhLT52YXJhcmdhbm5vdGF0aW9uKTsKLSAgICBpZiAoYS0+a3dhcmdhbm5vdGF0aW9uKQotICAgICAgICBWSVNJVChzdCwgZXhwciwgYS0+a3dhcmdhbm5vdGF0aW9uKTsKKyAgICBpZiAoYS0+dmFyYXJnICYmIGEtPnZhcmFyZy0+YW5ub3RhdGlvbikKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIGEtPnZhcmFyZy0+YW5ub3RhdGlvbik7CisgICAgaWYgKGEtPmt3YXJnICYmIGEtPmt3YXJnLT5hbm5vdGF0aW9uKQorICAgICAgICBWSVNJVChzdCwgZXhwciwgYS0+a3dhcmctPmFubm90YXRpb24pOwogICAgIGlmIChhLT5rd29ubHlhcmdzICYmICFzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdCwgYS0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpCkBAIC0xNTE3LDEyICsxNTQ3LDEyIEBACiAgICAgaWYgKGEtPmt3b25seWFyZ3MgJiYgIXN5bXRhYmxlX3Zpc2l0X3BhcmFtcyhzdCwgYS0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhLT52YXJhcmcpIHsKLSAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBhLT52YXJhcmcsIERFRl9QQVJBTSkpCisgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgYS0+dmFyYXJnLT5hcmcsIERFRl9QQVJBTSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX3ZhcmFyZ3MgPSAxOwogICAgIH0KICAgICBpZiAoYS0+a3dhcmcpIHsKLSAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBhLT5rd2FyZywgREVGX1BBUkFNKSkKKyAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBhLT5rd2FyZy0+YXJnLCBERUZfUEFSQU0pKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV92YXJrZXl3b3JkcyA9IDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IGVkZDY2NDkuLjcyMDA0ZjhhIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC03NzQsNyArNzc0LDcgQEAKIGludGVycHJldGVyIGxvYWRzIGV4dGVuc2lvbiBtb2R1bGVzLiAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIHdpbGwgZW5hYmxlXG5cCiBhIGxhenkgcmVzb2x2aW5nIG9mIHN5bWJvbHMgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUsIGlmIGNhbGxlZCBhc1xuXAogc3lzLnNldGRsb3BlbmZsYWdzKDApLiAgVG8gc2hhcmUgc3ltYm9scyBhY3Jvc3MgZXh0ZW5zaW9uIG1vZHVsZXMsIGNhbGwgYXNcblwKLXN5cy5zZXRkbG9wZW5mbGFncyhjdHlwZXMuUlRMRF9HTE9CQUwpLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFnIG1vZHVsZXNcblwKK3N5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTCkuICBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWcgbW9kdWxlc1xuXAogY2FuIGJlIGZvdW5kIGluIHRoZSBvcyBtb2R1bGUgKFJUTERfeHh4IGNvbnN0YW50cywgZS5nLiBvcy5SVExEX0xBWlkpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzkwLDcgKzc5MCw3IEBACiAiZ2V0ZGxvcGVuZmxhZ3MoKSAtPiBpbnRcblwKIFxuXAogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmbGFncyB0aGF0IGFyZSB1c2VkIGZvciBkbG9wZW4gY2FsbHMuXG5cCi1UaGUgZmxhZyBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gdGhlIGN0eXBlcyBhbmQgRExGQ04gbW9kdWxlcy4iKTsKK1RoZSBmbGFnIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUgb3MgbW9kdWxlLiIpOwogCiAjZW5kaWYgIC8qIEhBVkVfRExPUEVOICovCiAKQEAgLTg5NCw2ICs4OTQsMTkgQEAKIHJlZmVyZW5jZSBhcyBhbiBhcmd1bWVudCB0byBnZXRyZWZjb3VudCgpLiIKICk7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZ2V0YWxsb2NhdGVkYmxvY2tzKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoX1B5X0dldEFsbG9jYXRlZEJsb2NrcygpKTsKK30KKworUHlEb2NfU1RSVkFSKGdldGFsbG9jYXRlZGJsb2Nrc19kb2MsCisiZ2V0YWxsb2NhdGVkYmxvY2tzKCkgLT4gaW50ZWdlclxuXAorXG5cCitSZXR1cm4gdGhlIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzIGN1cnJlbnRseSBhbGxvY2F0ZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlaXJcblwKK3NpemUuIgorKTsKKwogI2lmZGVmIENPVU5UX0FMTE9DUwogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19nZXRjb3VudHMoUHlPYmplY3QgKnNlbGYpCkBAIC0xMDYyLDYgKzEwNzUsOCBAQAogICAgIHsiZ2V0ZGxvcGVuZmxhZ3MiLCAoUHlDRnVuY3Rpb24pc3lzX2dldGRsb3BlbmZsYWdzLCBNRVRIX05PQVJHUywKICAgICAgZ2V0ZGxvcGVuZmxhZ3NfZG9jfSwKICNlbmRpZgorICAgIHsiZ2V0YWxsb2NhdGVkYmxvY2tzIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXRhbGxvY2F0ZWRibG9ja3MsIE1FVEhfTk9BUkdTLAorICAgICAgZ2V0YWxsb2NhdGVkYmxvY2tzX2RvY30sCiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgeyJnZXRjb3VudHMiLCAgICAgICAoUHlDRnVuY3Rpb24pc3lzX2dldGNvdW50cywgTUVUSF9OT0FSR1N9LAogI2VuZGlmCkBAIC0xMzQ5LDE0ICsxMzY0LDEyIEBACiAgICAgeyJub19zaXRlIiwgICAgICAgICAgICAgICAgICItUyJ9LAogICAgIHsiaWdub3JlX2Vudmlyb25tZW50IiwgICAgICAiLUUifSwKICAgICB7InZlcmJvc2UiLCAgICAgICAgICAgICAgICAgIi12In0sCi0jaWZkZWYgUklTQ09TCi0gICAgeyJyaXNjb3Nfd2ltcCIsICAgICAgICAgICAgICI/Pz8ifSwKLSNlbmRpZgogICAgIC8qIHsidW5idWZmZXJlZCIsICAgICAgICAgICAgICAgICAgICItdSJ9LCAqLwogICAgIC8qIHsic2tpcF9maXJzdCIsICAgICAgICAgICAgICAgICAgICIteCJ9LCAqLwogICAgIHsiYnl0ZXNfd2FybmluZyIsICAgICAgICAgICAiLWIifSwKICAgICB7InF1aWV0IiwgICAgICAgICAgICAgICAgICAgIi1xIn0sCiAgICAgeyJoYXNoX3JhbmRvbWl6YXRpb24iLCAgICAgICItUiJ9LAorICAgIHsiaXNvbGF0ZWQiLCAgICAgICAgICAgICAgICAiLUkifSwKICAgICB7MH0KIH07CiAKQEAgLTEzNjQsMTEgKzEzNzcsNyBAQAogICAgICJzeXMuZmxhZ3MiLCAgICAgICAgLyogbmFtZSAqLwogICAgIGZsYWdzX19kb2NfXywgICAgICAgLyogZG9jICovCiAgICAgZmxhZ3NfZmllbGRzLCAgICAgICAvKiBmaWVsZHMgKi8KLSNpZmRlZiBSSVNDT1MKICAgICAxMwotI2Vsc2UKLSAgICAxMgotI2VuZGlmCiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0xMzkzLDE0ICsxNDAyLDEyIEBACiAgICAgU2V0RmxhZyhQeV9Ob1NpdGVGbGFnKTsKICAgICBTZXRGbGFnKFB5X0lnbm9yZUVudmlyb25tZW50RmxhZyk7CiAgICAgU2V0RmxhZyhQeV9WZXJib3NlRmxhZyk7Ci0jaWZkZWYgUklTQ09TCi0gICAgU2V0RmxhZyhQeV9SSVNDT1NXaW1wRmxhZyk7Ci0jZW5kaWYKICAgICAvKiBTZXRGbGFnKHNhd191bmJ1ZmZlcmVkX2ZsYWcpOyAqLwogICAgIC8qIFNldEZsYWcoc2tpcGZpcnN0bGluZSk7ICovCiAgICAgU2V0RmxhZyhQeV9CeXRlc1dhcm5pbmdGbGFnKTsKICAgICBTZXRGbGFnKFB5X1F1aWV0RmxhZyk7CiAgICAgU2V0RmxhZyhQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcpOworICAgIFNldEZsYWcoUHlfSXNvbGF0ZWRGbGFnKTsKICN1bmRlZiBTZXRGbGFnCiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMTU2MCwxOCArMTU2NywyNCBAQAogUHlPYmplY3QgKgogX1B5U3lzX0luaXQodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKnYsICpzeXNkaWN0LCAqdmVyc2lvbl9pbmZvOwotICAgIGNoYXIgKnM7CisgICAgUHlPYmplY3QgKm0sICpzeXNkaWN0LCAqdmVyc2lvbl9pbmZvOwogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmc3lzbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSNkZWZpbmUgU0VUX1NZU19GUk9NX1NUUklORyhrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgXAotICAgIHYgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHYgIT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoc3lzZGljdCwga2V5LCB2KTsgICAgICAgICAgXAotICAgIFB5X1hERUNSRUYodikKKyNkZWZpbmUgU0VUX1NZU19GUk9NX1NUUklORyhrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGludCByZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKnYgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAodiA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoc3lzZGljdCwga2V5LCB2KTsgICAgICAgXAorICAgICAgICBpZiAocmVzIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBQeV9ERUNSRUYodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKIAogICAgIC8qIENoZWNrIHRoYXQgc3RkaW4gaXMgbm90IGEgZGlyZWN0b3J5CiAgICAgVXNpbmcgc2hlbGwgcmVkaXJlY3Rpb24sIHlvdSBjYW4gcmVkaXJlY3Qgc3RkaW4gdG8gYSBkaXJlY3RvcnksCkBAIC0xNTkzLDEwICsxNjA2LDEwIEBACiAKICAgICAvKiBzdGRpbi9zdGRvdXQvc3RkZXJyIGFyZSBub3cgc2V0IGJ5IHB5dGhvbnJ1bi5jICovCiAKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhzeXNkaWN0LCAiX19kaXNwbGF5aG9va19fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbVN0cmluZyhzeXNkaWN0LCAiZGlzcGxheWhvb2siKSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoc3lzZGljdCwgIl9fZXhjZXB0aG9va19fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbVN0cmluZyhzeXNkaWN0LCAiZXhjZXB0aG9vayIpKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJfX2Rpc3BsYXlob29rX18iLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW1TdHJpbmcoc3lzZGljdCwgImRpc3BsYXlob29rIikpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIl9fZXhjZXB0aG9va19fIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtU3RyaW5nKHN5c2RpY3QsICJleGNlcHRob29rIikpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFZlcnNpb24oKSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImhleHZlcnNpb24iLApAQCAtMTYzMCwyOCArMTY0MywyNCBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImludF9pbmZvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19HZXRJbmZvKCkpOwogICAgIC8qIGluaXRpYWxpemUgaGFzaF9pbmZvICovCi0gICAgaWYgKEhhc2hfSW5mb1R5cGUudHBfbmFtZSA9PSAwKQotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZIYXNoX0luZm9UeXBlLCAmaGFzaF9pbmZvX2Rlc2MpOworICAgIGlmIChIYXNoX0luZm9UeXBlLnRwX25hbWUgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJkhhc2hfSW5mb1R5cGUsICZoYXNoX2luZm9fZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImhhc2hfaW5mbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaGFzaF9pbmZvKCkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIm1heHVuaWNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKDB4MTBGRkZGKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiYnVpbHRpbl9tb2R1bGVfbmFtZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9idWlsdGluX21vZHVsZV9uYW1lcygpKTsKLSAgICB7Ci0gICAgICAgIC8qIEFzc3VtZXMgdGhhdCBsb25ncyBhcmUgYXQgbGVhc3QgMiBieXRlcyBsb25nLgotICAgICAgICAgICBTaG91bGQgYmUgc2FmZSEgKi8KLSAgICAgICAgdW5zaWduZWQgbG9uZyBudW1iZXIgPSAxOwotICAgICAgICBjaGFyICp2YWx1ZTsKKyNpZiBQWV9CSUdfRU5ESUFOCisgICAgU0VUX1NZU19GUk9NX1NUUklORygiYnl0ZW9yZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJiaWciKSk7CisjZWxzZQorICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJ5dGVvcmRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZygibGl0dGxlIikpOworI2VuZGlmCiAKLSAgICAgICAgcyA9IChjaGFyICopICZudW1iZXI7Ci0gICAgICAgIGlmIChzWzBdID09IDApCi0gICAgICAgICAgICB2YWx1ZSA9ICJiaWciOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2YWx1ZSA9ICJsaXR0bGUiOwotICAgICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJieXRlb3JkZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHZhbHVlKSk7Ci0gICAgfQogI2lmZGVmIE1TX0NPUkVETEwKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJkbGxoYW5kbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Wb2lkUHRyKFB5V2luX0RMTGhNb2R1bGUpKTsKQEAgLTE2NjQsMjIgKzE2NzMsMjIgQEAKICNlbmRpZgogICAgIGlmICh3YXJub3B0aW9ucyA9PSBOVUxMKSB7CiAgICAgICAgIHdhcm5vcHRpb25zID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKHdhcm5vcHRpb25zID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRih3YXJub3B0aW9ucyk7CiAgICAgfQotICAgIGlmICh3YXJub3B0aW9ucyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c2RpY3QsICJ3YXJub3B0aW9ucyIsIHdhcm5vcHRpb25zKTsKLSAgICB9CisgICAgU0VUX1NZU19GUk9NX1NUUklORygid2Fybm9wdGlvbnMiLCB3YXJub3B0aW9ucyk7CiAKLSAgICB2ID0gZ2V0X3hvcHRpb25zKCk7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhzeXNkaWN0LCAiX3hvcHRpb25zIiwgdik7Ci0gICAgfQorICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIl94b3B0aW9ucyIsIGdldF94b3B0aW9ucygpKTsKIAogICAgIC8qIHZlcnNpb25faW5mbyAqLwotICAgIGlmIChWZXJzaW9uSW5mb1R5cGUudHBfbmFtZSA9PSAwKQotICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZWZXJzaW9uSW5mb1R5cGUsICZ2ZXJzaW9uX2luZm9fZGVzYyk7CisgICAgaWYgKFZlcnNpb25JbmZvVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZWZXJzaW9uSW5mb1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmVyc2lvbl9pbmZvX2Rlc2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICB2ZXJzaW9uX2luZm8gPSBtYWtlX3ZlcnNpb25faW5mbygpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInZlcnNpb25faW5mbyIsIHZlcnNpb25faW5mbyk7CiAgICAgLyogcHJldmVudCB1c2VyIGZyb20gY3JlYXRpbmcgbmV3IGluc3RhbmNlcyAqLwpAQCAtMTY5MCw4ICsxNjk5LDEwIEBACiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiaW1wbGVtZW50YXRpb24iLCBtYWtlX2ltcGxfaW5mbyh2ZXJzaW9uX2luZm8pKTsKIAogICAgIC8qIGZsYWdzICovCi0gICAgaWYgKEZsYWdzVHlwZS50cF9uYW1lID09IDApCi0gICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJkZsYWdzVHlwZSwgJmZsYWdzX2Rlc2MpOworICAgIGlmIChGbGFnc1R5cGUudHBfbmFtZSA9PSAwKSB7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmRmxhZ3NUeXBlLCAmZmxhZ3NfZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImZsYWdzIiwgbWFrZV9mbGFncygpKTsKICAgICAvKiBwcmV2ZW50IHVzZXIgZnJvbSBjcmVhdGluZyBuZXcgaW5zdGFuY2VzICovCiAgICAgRmxhZ3NUeXBlLnRwX2luaXQgPSBOVUxMOwpAQCAtMTcwMSw3ICsxNzEyLDkgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgLyogZ2V0d2luZG93c3ZlcnNpb24gKi8KICAgICBpZiAoV2luZG93c1ZlcnNpb25UeXBlLnRwX25hbWUgPT0gMCkKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmV2luZG93c1ZlcnNpb25UeXBlLCAmd2luZG93c192ZXJzaW9uX2Rlc2MpOworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJldpbmRvd3NWZXJzaW9uVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3aW5kb3dzX3ZlcnNpb25fZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogcHJldmVudCB1c2VyIGZyb20gY3JlYXRpbmcgbmV3IGluc3RhbmNlcyAqLwogICAgIFdpbmRvd3NWZXJzaW9uVHlwZS50cF9pbml0ID0gTlVMTDsKICAgICBXaW5kb3dzVmVyc2lvblR5cGUudHBfbmV3ID0gTlVMTDsKQEAgLTE5MzMsNyArMTk0Niw3IEBACiB2b2lkCiBQeVN5c19TZXRBcmd2KGludCBhcmdjLCB3Y2hhcl90ICoqYXJndikKIHsKLSAgICBQeVN5c19TZXRBcmd2RXgoYXJnYywgYXJndiwgMSk7CisgICAgUHlTeXNfU2V0QXJndkV4KGFyZ2MsIGFyZ3YsIFB5X0lzb2xhdGVkRmxhZyA9PSAwKTsKIH0KIAogLyogUmVpbXBsZW1lbnRhdGlvbiBvZiBQeUZpbGVfV3JpdGVTdHJpbmcoKSBubyBjYWxsaW5nIGluZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWQuYyBiL1B5dGhvbi90aHJlYWQuYwppbmRleCBlNTVkMzQyLi44NTQwOTQyIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkLmMKKysrIGIvUHl0aG9uL3RocmVhZC5jCkBAIC05MSwxMCArOTEsNiBAQAogI2luY2x1ZGUgInRocmVhZF9udC5oIgogI2VuZGlmCiAKLSNpZmRlZiBPUzJfVEhSRUFEUwotI2RlZmluZSBQWVRIUkVBRF9OQU1FICJvczIiCi0jaW5jbHVkZSAidGhyZWFkX29zMi5oIgotI2VuZGlmCiAKIC8qCiAjaWZkZWYgRk9PQkFSX1RIUkVBRFMKQEAgLTIzNSw3ICsyMzEsNyBAQAogICAgICAgICBhc3NlcnQocCA9PSBOVUxMKTsKICAgICAgICAgZ290byBEb25lOwogICAgIH0KLSAgICBwID0gKHN0cnVjdCBrZXkgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBrZXkpKTsKKyAgICBwID0gKHN0cnVjdCBrZXkgKilQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKHN0cnVjdCBrZXkpKTsKICAgICBpZiAocCAhPSBOVUxMKSB7CiAgICAgICAgIHAtPmlkID0gaWQ7CiAgICAgICAgIHAtPmtleSA9IGtleTsKQEAgLTI3NCw3ICsyNzAsNyBAQAogICAgIHdoaWxlICgocCA9ICpxKSAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChwLT5rZXkgPT0ga2V5KSB7CiAgICAgICAgICAgICAqcSA9IHAtPm5leHQ7Ci0gICAgICAgICAgICBmcmVlKCh2b2lkICopcCk7CisgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKCh2b2lkICopcCk7CiAgICAgICAgICAgICAvKiBOQiBUaGlzIGRvZXMgKm5vdCogZnJlZSBwLT52YWx1ZSEgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0zMjgsNyArMzI0LDcgQEAKICAgICB3aGlsZSAoKHAgPSAqcSkgIT0gTlVMTCkgewogICAgICAgICBpZiAocC0+a2V5ID09IGtleSAmJiBwLT5pZCA9PSBpZCkgewogICAgICAgICAgICAgKnEgPSBwLT5uZXh0OwotICAgICAgICAgICAgZnJlZSgodm9pZCAqKXApOworICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSgodm9pZCAqKXApOwogICAgICAgICAgICAgLyogTkIgVGhpcyBkb2VzICpub3QqIGZyZWUgcC0+dmFsdWUhICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzYxLDcgKzM1Nyw3IEBACiAgICAgd2hpbGUgKChwID0gKnEpICE9IE5VTEwpIHsKICAgICAgICAgaWYgKHAtPmlkICE9IGlkKSB7CiAgICAgICAgICAgICAqcSA9IHAtPm5leHQ7Ci0gICAgICAgICAgICBmcmVlKCh2b2lkICopcCk7CisgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKCh2b2lkICopcCk7CiAgICAgICAgICAgICAvKiBOQiBUaGlzIGRvZXMgKm5vdCogZnJlZSBwLT52YWx1ZSEgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC00MDMsOCArMzk5LDEwIEBACiAgICAgaW50IGxlbjsKICNlbmRpZgogCi0gICAgaWYgKFRocmVhZEluZm9UeXBlLnRwX25hbWUgPT0gMCkKLSAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGhyZWFkSW5mb1R5cGUsICZ0aHJlYWRpbmZvX2Rlc2MpOworICAgIGlmIChUaHJlYWRJbmZvVHlwZS50cF9uYW1lID09IDApIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZUaHJlYWRJbmZvVHlwZSwgJnRocmVhZGluZm9fZGVzYykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgdGhyZWFkaW5mbyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUaHJlYWRJbmZvVHlwZSk7CiAgICAgaWYgKHRocmVhZGluZm8gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbnQuaCBiL1B5dGhvbi90aHJlYWRfbnQuaAppbmRleCA5MzhiZjFlLi5hYjVhMDgxIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX250LmgKKysrIGIvUHl0aG9uL3RocmVhZF9udC5oCkBAIC0zNCw3ICszNCw3IEBACiBQTlJNVVRFWAogQWxsb2NOb25SZWN1cnNpdmVNdXRleCgpCiB7Ci0gICAgUE5STVVURVggbSA9IChQTlJNVVRFWCltYWxsb2Moc2l6ZW9mKE5STVVURVgpKTsKKyAgICBQTlJNVVRFWCBtID0gKFBOUk1VVEVYKVB5TWVtX1Jhd01hbGxvYyhzaXplb2YoTlJNVVRFWCkpOwogICAgIGlmICghbSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5Q09ORF9JTklUKCZtLT5jdikpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgbS0+bG9ja2VkID0gMDsKICAgICByZXR1cm4gbTsKIGZhaWw6Ci0gICAgZnJlZShtKTsKKyAgICBQeU1lbV9SYXdGcmVlKG0pOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC01Niw3ICs1Niw3IEBACiAgICAgaWYgKG11dGV4KSB7CiAgICAgICAgIFB5Q09ORF9GSU5JKCZtdXRleC0+Y3YpOwogICAgICAgICBQeU1VVEVYX0ZJTkkoJm11dGV4LT5jcyk7Ci0gICAgICAgIGZyZWUobXV0ZXgpOworICAgICAgICBQeU1lbV9SYXdGcmVlKG11dGV4KTsKICAgICB9CiB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIHJlc3VsdCA9IFB5Q09ORF9TSUdOQUwoJm11dGV4LT5jdik7CiAgICAgcmVzdWx0ICY9IFB5TVVURVhfVU5MT0NLKCZtdXRleC0+Y3MpOwogICAgIHJldHVybiByZXN1bHQ7Ci19ICAgIAorfQogCiAjZWxzZSAvKiBpZiAhIF9QWV9VU0VfQ1ZfTE9DS1MgKi8KIApAQCAtMTMwLDcgKzEzMCw3IEBACiBEV09SRAogRW50ZXJOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCwgRFdPUkQgbWlsbGlzZWNvbmRzKQogewotICAgIHJldHVybiBXYWl0Rm9yU2luZ2xlT2JqZWN0KG11dGV4LCBtaWxsaXNlY29uZHMpOworICAgIHJldHVybiBXYWl0Rm9yU2luZ2xlT2JqZWN0RXgobXV0ZXgsIG1pbGxpc2Vjb25kcywgRkFMU0UpOwogfQogCiBCT09MCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX29zMi5oIGIvUHl0aG9uL3RocmVhZF9vczIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIyNjRiNS4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX29zMi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLS8qIFRoaXMgY29kZSBpbXBsZW1lbnRlZCBieSBjdmFsZUBuZXRjb20uY29tICovCi0KLSNkZWZpbmUgSU5DTF9ET1NQUk9DRVNTCi0jZGVmaW5lIElOQ0xfRE9TU0VNQVBIT1JFUwotI2luY2x1ZGUgIm9zMi5oIgotI2luY2x1ZGUgImxpbWl0cy5oIgotCi0jaW5jbHVkZSAicHJvY2Vzcy5oIgotCi0jaWYgZGVmaW5lZChQWUNDX0dDQykKLSNpbmNsdWRlIDxzeXMvYnVpbHRpbi5oPgotI2luY2x1ZGUgPHN5cy9mbXV0ZXguaD4KLSNlbHNlCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7Ci0jZW5kaWYKLQotLyogZGVmYXVsdCB0aHJlYWQgc3RhY2sgc2l6ZSBvZiA2NGtCICovCi0jaWYgIWRlZmluZWQoVEhSRUFEX1NUQUNLX1NJWkUpCi0jZGVmaW5lIFRIUkVBRF9TVEFDS19TSVpFICAgICAgIDB4MTAwMDAKLSNlbmRpZgotCi0jZGVmaW5lIE9TMl9TVEFDS1NJWkUoeCkgICAgICAgICh4ID8geCA6IFRIUkVBRF9TVEFDS19TSVpFKQotCi0vKgotICogSW5pdGlhbGl6YXRpb24gb2YgdGhlIEMgcGFja2FnZSwgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gKi8KLXN0YXRpYyB2b2lkCi1QeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1sb25nCi1QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgaW50IHRocmVhZF9pZDsKLQotICAgIHRocmVhZF9pZCA9IF9iZWdpbnRocmVhZChmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT1MyX1NUQUNLU0laRShfcHl0aHJlYWRfc3RhY2tzaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpOwotCi0gICAgaWYgKHRocmVhZF9pZCA9PSAtMSkgewotICAgICAgICBkcHJpbnRmKCgiX2JlZ2ludGhyZWFkIGZhaWxlZC4gcmV0dXJuICVsZFxuIiwgZXJybm8pKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGhyZWFkX2lkOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0jaWYgIWRlZmluZWQoUFlDQ19HQ0MpCi0gICAgUFBJQiBwaWI7Ci0gICAgUFRJQiB0aWI7Ci0jZW5kaWYKLQotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSNpZiBkZWZpbmVkKFBZQ0NfR0NDKQotICAgIHJldHVybiBfZ2V0dGlkKCk7Ci0jZWxzZQotICAgIERvc0dldEluZm9CbG9ja3MoJnRpYiwgJnBpYik7Ci0gICAgcmV0dXJuIHRpYi0+dGliX3B0aWIyLT50aWIyX3VsdGlkOwotI2VuZGlmCi19Ci0KLXZvaWQKLVB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iLAotICAgICAgICAgICAgIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgX2VuZHRocmVhZCgpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LiAgVGhpcyBpcyBpbXBsZW1lbnRlZCB3aXRoIGFuIGV2ZW50IHNlbWFwaG9yZSBhbmQgY3JpdGljYWwKLSAqIHNlY3Rpb25zIHRvIG1ha2UgaXQgYmVoYXZlIG1vcmUgbGlrZSBhIHBvc2l4IG11dGV4IHRoYW4gaXRzIE9TLzIKLSAqIGNvdW50ZXJwYXJ0cy4KLSAqLwotCi10eXBlZGVmIHN0cnVjdCBvczJfbG9ja190IHsKLSAgICBpbnQgaXNfc2V0OwotICAgIEhFViBjaGFuZ2VkOwotfSAqdHlwZV9vczJfbG9jazsKLQotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0jaWYgZGVmaW5lZChQWUNDX0dDQykKLSAgICBfZm11dGV4ICpzZW0gPSBtYWxsb2Moc2l6ZW9mKF9mbXV0ZXgpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlbHhcbiIsCi0gICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLAotICAgICAgICAgICAgIChsb25nKXNlbSkpOwotICAgIGlmIChfZm11dGV4X2NyZWF0ZShzZW0sIDApKSB7Ci0gICAgICAgIGZyZWUoc2VtKTsKLSAgICAgICAgc2VtID0gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spc2VtOwotI2Vsc2UKLSAgICBBUElSRVQgcmM7Ci0gICAgdHlwZV9vczJfbG9jayBsb2NrID0gKHR5cGVfb3MyX2xvY2spbWFsbG9jKHNpemVvZihzdHJ1Y3Qgb3MyX2xvY2tfdCkpOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGxvY2stPmlzX3NldCA9IDA7Ci0KLSAgICBEb3NDcmVhdGVFdmVudFNlbShOVUxMLCAmbG9jay0+Y2hhbmdlZCwgMCwgMCk7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsCi0gICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLAotICAgICAgICAgICAgIGxvY2stPmNoYW5nZWQpKTsKLQotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKWxvY2s7Ci0jZW5kaWYKLX0KLQotdm9pZAotUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBhTG9jaykKLXsKLSNpZiAhZGVmaW5lZChQWUNDX0dDQykKLSAgICB0eXBlX29zMl9sb2NrIGxvY2sgPSAodHlwZV9vczJfbG9jaylhTG9jazsKLSNlbmRpZgotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsCi0gICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLGFMb2NrKSk7Ci0KLSNpZiBkZWZpbmVkKFBZQ0NfR0NDKQotICAgIGlmIChhTG9jaykgewotICAgICAgICBfZm11dGV4X2Nsb3NlKChfZm11dGV4ICopYUxvY2spOwotICAgICAgICBmcmVlKChfZm11dGV4ICopYUxvY2spOwotICAgIH0KLSNlbHNlCi0gICAgRG9zQ2xvc2VFdmVudFNlbShsb2NrLT5jaGFuZ2VkKTsKLSAgICBmcmVlKGFMb2NrKTsKLSNlbmRpZgotfQotCi0vKgotICogUmV0dXJuIDEgb24gc3VjY2VzcyBpZiB0aGUgbG9jayB3YXMgYWNxdWlyZWQKLSAqCi0gKiBhbmQgMCBpZiB0aGUgbG9jayB3YXMgbm90IGFjcXVpcmVkLgotICovCi1pbnQKLVB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSNpZiAhZGVmaW5lZChQWUNDX0dDQykKLSAgICBpbnQgICBkb25lID0gMDsKLSAgICBVTE9ORyBjb3VudDsKLSAgICBQSUQgICBwaWQgPSAwOwotICAgIFRJRCAgIHRpZCA9IDA7Ci0gICAgdHlwZV9vczJfbG9jayBsb2NrID0gKHR5cGVfb3MyX2xvY2spYUxvY2s7Ci0jZW5kaWYKLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwKLSAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksCi0gICAgICAgICAgICAgYUxvY2ssCi0gICAgICAgICAgICAgd2FpdGZsYWcpKTsKLQotI2lmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgLyogYWx3YXlzIHN1Y2Nlc3NmdWwgaWYgdGhlIGxvY2sgZG9lc24ndCBleGlzdCAqLwotICAgIGlmIChhTG9jayAmJgotICAgICAgICBfZm11dGV4X3JlcXVlc3QoKF9mbXV0ZXggKilhTG9jaywgd2FpdGZsYWcgPyAwIDogX0ZNUl9OT1dBSVQpKQotICAgICAgICByZXR1cm4gMDsKLSNlbHNlCi0gICAgd2hpbGUgKCFkb25lKSB7Ci0gICAgICAgIC8qIGlmIHRoZSBsb2NrIGlzIGN1cnJlbnRseSBzZXQsIHdlIGhhdmUgdG8gd2FpdCBmb3IKLSAgICAgICAgICogdGhlIHN0YXRlIHRvIGNoYW5nZQotICAgICAgICAgKi8KLSAgICAgICAgaWYgKGxvY2stPmlzX3NldCkgewotICAgICAgICAgICAgaWYgKCF3YWl0ZmxhZykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIERvc1dhaXRFdmVudFNlbShsb2NrLT5jaGFuZ2VkLCBTRU1fSU5ERUZJTklURV9XQUlUKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIGVudGVyIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgdHJ5IHRvIGdldCB0aGUgc2VtYXBob3JlLiAgSWYKLSAgICAgICAgICogaXQgaXMgc3RpbGwgbG9ja2VkLCB3ZSB3aWxsIHRyeSBhZ2Fpbi4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChEb3NFbnRlckNyaXRTZWMoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGlmICghbG9jay0+aXNfc2V0KSB7Ci0gICAgICAgICAgICBsb2NrLT5pc19zZXQgPSAxOwotICAgICAgICAgICAgRG9zUmVzZXRFdmVudFNlbShsb2NrLT5jaGFuZ2VkLCAmY291bnQpOwotICAgICAgICAgICAgZG9uZSA9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBEb3NFeGl0Q3JpdFNlYygpOwotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2spCi17Ci0jaWYgIWRlZmluZWQoUFlDQ19HQ0MpCi0gICAgdHlwZV9vczJfbG9jayBsb2NrID0gKHR5cGVfb3MyX2xvY2spYUxvY2s7Ci0jZW5kaWYKLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLAotICAgICAgICAgICAgIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwKLSAgICAgICAgICAgICBhTG9jaykpOwotCi0jaWYgZGVmaW5lZChQWUNDX0dDQykKLSAgICBpZiAoYUxvY2spCi0gICAgICAgIF9mbXV0ZXhfcmVsZWFzZSgoX2ZtdXRleCAqKWFMb2NrKTsKLSNlbHNlCi0gICAgaWYgKCFsb2NrLT5pc19zZXQpIHsKLSAgICAgICAgZHByaW50ZigoIiVsZDogQ291bGQgbm90IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgZXJyb3I6ICVsXG4iLAotICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksCi0gICAgICAgICAgICAgICAgIGFMb2NrLAotICAgICAgICAgICAgICAgICBHZXRMYXN0RXJyb3IoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKERvc0VudGVyQ3JpdFNlYygpKSB7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IENvdWxkIG5vdCBQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGVycm9yOiAlbFxuIiwKLSAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLAotICAgICAgICAgICAgICAgICBhTG9jaywKLSAgICAgICAgICAgICAgICAgR2V0TGFzdEVycm9yKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGxvY2stPmlzX3NldCA9IDA7Ci0gICAgRG9zUG9zdEV2ZW50U2VtKGxvY2stPmNoYW5nZWQpOwotCi0gICAgRG9zRXhpdENyaXRTZWMoKTsKLSNlbmRpZgotfQotCi0vKiBtaW5pbXVtL21heGltdW0gdGhyZWFkIHN0YWNrIHNpemVzIHN1cHBvcnRlZCAqLwotI2RlZmluZSBUSFJFQURfTUlOX1NUQUNLU0laRSAgICAweDgwMDAgICAgICAgICAgLyogMzJrQiAqLwotI2RlZmluZSBUSFJFQURfTUFYX1NUQUNLU0laRSAgICAweDIwMDAwMDAgICAgICAgLyogMzJNQiAqLwotCi0vKiBzZXQgdGhlIHRocmVhZCBzdGFjayBzaXplLgotICogUmV0dXJuIDAgaWYgc2l6ZSBpcyB2YWxpZCwgLTEgb3RoZXJ3aXNlLgotICovCi1zdGF0aWMgaW50Ci1fcHl0aHJlYWRfb3MyX3NldF9zdGFja3NpemUoc2l6ZV90IHNpemUpCi17Ci0gICAgLyogc2V0IHRvIGRlZmF1bHQgKi8KLSAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgIF9weXRocmVhZF9zdGFja3NpemUgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvKiB2YWxpZCByYW5nZT8gKi8KLSAgICBpZiAoc2l6ZSA+PSBUSFJFQURfTUlOX1NUQUNLU0laRSAmJiBzaXplIDwgVEhSRUFEX01BWF9TVEFDS1NJWkUpIHsKLSAgICAgICAgX3B5dGhyZWFkX3N0YWNrc2l6ZSA9IHNpemU7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiAtMTsKLX0KLQotI2RlZmluZSBUSFJFQURfU0VUX1NUQUNLU0laRSh4KSBfcHl0aHJlYWRfb3MyX3NldF9zdGFja3NpemUoeCkKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKaW5kZXggZTkwYWU3ZS4uMjBmODUzNSAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKQEAgLTI4MiwxNCArMjgyLDE0IEBACiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKIAotICAgIGxvY2sgPSAoc2VtX3QgKiltYWxsb2Moc2l6ZW9mKHNlbV90KSk7CisgICAgbG9jayA9IChzZW1fdCAqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yoc2VtX3QpKTsKIAogICAgIGlmIChsb2NrKSB7CiAgICAgICAgIHN0YXR1cyA9IHNlbV9pbml0KGxvY2ssMCwxKTsKICAgICAgICAgQ0hFQ0tfU1RBVFVTKCJzZW1faW5pdCIpOwogCiAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgZnJlZSgodm9pZCAqKWxvY2spOworICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSgodm9pZCAqKWxvY2spOwogICAgICAgICAgICAgbG9jayA9IE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICBzdGF0dXMgPSBzZW1fZGVzdHJveSh0aGVsb2NrKTsKICAgICBDSEVDS19TVEFUVVMoInNlbV9kZXN0cm95Iik7CiAKLSAgICBmcmVlKCh2b2lkICopdGhlbG9jayk7CisgICAgUHlNZW1fUmF3RnJlZSgodm9pZCAqKXRoZWxvY2spOwogfQogCiAvKgpAQCAtNDEwLDcgKzQxMCw3IEBACiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKIAotICAgIGxvY2sgPSAocHRocmVhZF9sb2NrICopIG1hbGxvYyhzaXplb2YocHRocmVhZF9sb2NrKSk7CisgICAgbG9jayA9IChwdGhyZWFkX2xvY2sgKikgUHlNZW1fUmF3TWFsbG9jKHNpemVvZihwdGhyZWFkX2xvY2spKTsKICAgICBpZiAobG9jaykgewogICAgICAgICBtZW1zZXQoKHZvaWQgKilsb2NrLCAnXDAnLCBzaXplb2YocHRocmVhZF9sb2NrKSk7CiAgICAgICAgIGxvY2stPmxvY2tlZCA9IDA7CkBAIC00MzAsNyArNDMwLDcgQEAKICAgICAgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX2NvbmRfaW5pdCIpOwogCiAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgZnJlZSgodm9pZCAqKWxvY2spOworICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSgodm9pZCAqKWxvY2spOwogICAgICAgICAgICAgbG9jayA9IDA7CiAgICAgICAgIH0KICAgICB9CkBAIC00NTcsNyArNDU3LDcgQEAKICAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOwogCi0gICAgZnJlZSgodm9pZCAqKXRoZWxvY2spOworICAgIFB5TWVtX1Jhd0ZyZWUoKHZvaWQgKil0aGVsb2NrKTsKIH0KIAogUHlMb2NrU3RhdHVzCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggNzQwNzVjOS4uNGYyZTczMiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMTMsNyArMTMsNyBAQAogCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeVRyYWNlYmFja09iamVjdCwgeCkKIAotI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCiAjZGVmaW5lIE1BWF9TVFJJTkdfTEVOR1RIIDUwMAogI2RlZmluZSBNQVhfRlJBTUVfREVQVEggMTAwCiAjZGVmaW5lIE1BWF9OVEhSRUFEUyAxMDAKQEAgLTI0NiwxMCArMjQ2LDEyIEBACiAgICAgYmluYXJ5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgIk9zIiwgZmlsZW5hbWUsICJyYiIpOwogCiAgICAgaWYgKGJpbmFyeSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKICAgICAgICAgYmluYXJ5ID0gX1B5X0ZpbmRTb3VyY2VGaWxlKGZpbGVuYW1lLCBidWYsIHNpemVvZihidWYpLCBpbyk7CiAgICAgICAgIGlmIChiaW5hcnkgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGlvKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNWQ2YjNkNy4uN2JhZTM1ZCAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw1ICsxLDUgQEAKLVRoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy4zLjIKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy40LjAgYWxwaGEgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKIDIwMTIsIDIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTIsOSArNTIsOSBAQAogLS0tLS0tLS0tLQogCiBXZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy4zIiBkb2N1bWVudCwgZm91bmQgYXQKK1B5dGhvbiAzLjQiIGRvY3VtZW50LCBmb3VuZCBhdAogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjMvd2hhdHNuZXcvMy4zLmh0bWwKKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC93aGF0c25ldy8zLjQuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sIGlzCiBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNyByZWxlYXNlIHVuZGVyCkBAIC02Nyw5ICs2Nyw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjMgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNCBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC04Nyw3ICs4Nyw3IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zL2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwpAQCAtMTI1LDcgKzEyNSw3IEBACiBJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCiAibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjMgd2l0aCAyLjcgYmVpbmcgdGhlCitGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuNCB3aXRoIDIuNyBiZWluZyB0aGUKIHByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjcgYnVpbGQgZGlyZWN0b3J5CiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgaW4gdGhlIG90aGVycy4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmluZGV4IGQyZmYyNTUuLmE0NGM2NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKQEAgLTYsMTYgKzYsMTYgQEAKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRjbDg1Zy5kbGwgKAogICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IGNsZWFuIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgaW5zdGFsbAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgY2xlYW4gYWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBpbnN0YWxsCiAgICAgY2QgLi5cLi4KICkKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRrODVnLmRsbCAoCiAgICAgY2QgdGstOC41LjExLjBcd2luICAgIAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgaW5zdGFsbAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGFsbAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAppbmRleCBlZDVjMTBlLi44M2IzODYxIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CkBAIC03LDE1ICs3LDE1IEBACiBpZiBub3QgZXhpc3QgdGNsdGtcYmluXHRjbDg1Zy5kbGwgKAogICAgIEByZW0gYWxsIGFuZCBpbnN0YWxsIG5lZWQgdG8gYmUgc2VwYXJhdGUgaW52b2NhdGlvbnMsIG90aGVyd2lzZSBubWFrZWhscCBpcyBub3QgZm91bmQgb24gaW5zdGFsbAogICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgY2xlYW4gYWxsIAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBjbGVhbiBhbGwgCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCiBpZiBub3QgZXhpc3QgdGNsdGtcYmluXHRrODVnLmRsbCAoCiAgICAgY2QgdGstOC41LjExLjBcd2luCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBpbnN0YWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGFsbAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBpbnN0YWxsCiAgICAgY2QgLi5cLi4KICkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkgYi9Ub29scy9mcmVlemUvYmtmaWxlLnB5CmluZGV4IDBlODk1ZjIuLjU4MjQ2ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkKKysrIGIvVG9vbHMvZnJlZXplL2JrZmlsZS5weQpAQCAtNywxMSArNywxMSBAQAogICAgICAgICBzZWxmLl9fYmFja3VwID0gZmlsZSArICd+JwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fX2JhY2t1cCkKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MucmVuYW1lKGZpbGUsIHNlbGYuX19iYWNrdXApCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBzZWxmLl9fYmFja3VwID0gTm9uZQogICAgICAgICBzZWxmLl9fZmlsZSA9IF9vcmlnX29wZW4oZmlsZSwgbW9kZSwgYnVmc2l6ZSkKICAgICAgICAgc2VsZi5jbG9zZWQgPSBzZWxmLl9fZmlsZS5jbG9zZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IGE0MTI2N2EuLjQ3OWNhM2MgMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMTI1LDcgKzEyNSw3IEBACiAgICAgIyBkZWZhdWx0IHRoZSBleGNsdWRlIGxpc3QgZm9yIGVhY2ggcGxhdGZvcm0KICAgICBpZiB3aW46IGV4Y2x1ZGUgPSBleGNsdWRlICsgWwogICAgICAgICAnZG9zJywgJ2Rvc3BhdGgnLCAnbWFjJywgJ21hY3BhdGgnLCAnbWFjZnMnLCAnTUFDRlMnLCAncG9zaXgnLAotICAgICAgICAnb3MyJywgJ2NlJywKKyAgICAgICAgJ2NlJywKICAgICAgICAgXQogCiAgICAgZmFpbF9pbXBvcnQgPSBleGNsdWRlWzpdCkBAIC0zMTEsNyArMzExLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubWtkaXIob2RpcikKICAgICAgICAgICAgIHByaW50KCJDcmVhdGVkIG91dHB1dCBkaXJlY3RvcnkiLCBvZGlyKQotICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgbXNnOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICB1c2FnZSgnJXM6IG1rZGlyIGZhaWxlZCAoJXMpJyAlIChvZGlyLCBzdHIobXNnKSkpCiAgICAgYmFzZSA9ICcnCiAgICAgaWYgb2RpcjoKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CmluZGV4IDg0ZDRmYTMuLmVmNjkzNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkKKysrIGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQpAQCAtMTE2MCw3ICsxMTYwLDkgQEAKICAgICAgICAgIyBDb252ZXJ0IHRoZSBpbnQgY29kZSBwb2ludHMgdG8gdW5pY29kZSBjaGFyYWN0ZXJzLCBhbmQgZ2VuZXJhdGUgYQogICAgICAgICAjIGxvY2FsIHVuaWNvZGUgaW5zdGFuY2UuCiAgICAgICAgICMgVGhpcyBzcGxpdHMgc3Vycm9nYXRlIHBhaXJzIGlmIHNpemVvZihQeV9VTklDT0RFKSBpcyAyIGhlcmUgKGluIGdkYikuCi0gICAgICAgIHJlc3VsdCA9IHUnJy5qb2luKFtfdW5pY2hyKHVjcykgZm9yIHVjcyBpbiBQeV9VTklDT0RFc10pCisgICAgICAgIHJlc3VsdCA9IHUnJy5qb2luKFsKKyAgICAgICAgICAgIChfdW5pY2hyKHVjcykgaWYgdWNzIDw9IDB4MTBmZmZmIGVsc2UgJ1x1ZmZmZCcpCisgICAgICAgICAgICBmb3IgdWNzIGluIFB5X1VOSUNPREVzXSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKZGlmZiAtLWdpdCBhL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5IGIvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkKaW5kZXggNzE0YzBlNC4uNjM1ZGQ1NiAxMDA2NDQKLS0tIGEvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkKKysrIGIvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkKQEAgLTQ2LDggKzQ2LDcgQEAKICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJwogICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKKyAgICAgICAgeWllbGQgZnJvbSBiZW5jaChuYW1lLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpCiAKIAogZGVmIGJ1aWx0aW5fbW9kKHNlY29uZHMsIHJlcGVhdCk6CkBAIC01Niw5ICs1NSw4IEBACiAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCiAgICAgIyBSZWx5aW5nIG9uIGJ1aWx0LWluIGltcG9ydGVyIGJlaW5nIGltcGxpY2l0LgotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICB5aWVsZCByZXN1bHQKKyAgICB5aWVsZCBmcm9tIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKQogCiAKIGRlZiBzb3VyY2Vfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKQEAgLTczLDkgKzcxLDggQEAKICAgICAgICAgICAgIGxvYWRlciA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMsIFRydWUpCiAgICAgICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vayhsb2FkZXIpKQotICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICB5aWVsZCByZXN1bHQKKyAgICAgICAgICAgIHlpZWxkIGZyb20gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcykKICAgICBmaW5hbGx5OgogICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCiAKQEAgLTg5LDkgKzg2LDggQEAKICAgICAgICAgICAgIG9zLnVubGluayhieXRlY29kZV9wYXRoKQogICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICB5aWVsZCByZXN1bHQKKyAgICAgICAgICAgIHlpZWxkIGZyb20gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKIApAQCAtMTI3LDggKzEyMyw3IEBACiAgICAgICAgIGRlZiBjbGVhbnVwKCk6CiAgICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKICAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKSkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0CisgICAgICAgIHlpZWxkIGZyb20gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKQogCiAgICAgd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXy5mb3JtYXQobmFtZSkpCkBAIC0xNDgsOSArMTQzLDggQEAKICAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCiAgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgICAgICB5aWVsZCBmcm9tIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcykKIAogCiBkZWYgX3VzaW5nX2J5dGVjb2RlKG1vZHVsZSk6CkBAIC0xNTgsOSArMTUyLDggQEAKICAgICBkZWYgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrKHNlY29uZHMsIHJlcGVhdCk6CiAgICAgICAgICIiIlNvdXJjZSB3LyBieXRlY29kZToge30iIiIKICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1vZHVsZS5fX2ZpbGVfXykKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0CisgICAgICAgIHlpZWxkIGZyb20gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKQogCiAgICAgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18gPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHkgYi9Ub29scy9tc2kvbXNpLnB5CmluZGV4IDVlZDAyNWQuLjczZjFjODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHkKKysrIGIvVG9vbHMvbXNpL21zaS5weQpAQCAtOTksNyArOTksOSBAQAogICAgICdfbXVsdGlwcm9jZXNzaW5nLnB5ZCcsCiAgICAgJ19sem1hLnB5ZCcsCiAgICAgJ19kZWNpbWFsLnB5ZCcsCi0gICAgJ190ZXN0YnVmZmVyLnB5ZCcKKyAgICAnX3Rlc3RidWZmZXIucHlkJywKKyAgICAnX3NoYTMucHlkJywKKyAgICAnX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQnLAogXQogCiAjIFdlbGwta25vd24gY29tcG9uZW50IFVVSURzCkBAIC0xMTksNiArMTIxLDcgQEAKICAgICAiMzEiOiJ7NGFmY2JhMGItMTNlNC00N2MzLWJlYmUtNDc3NDI4YjQ2OTEzfSIsCiAgICAgIjMyIjoiezNmZjk1MzE1LTEwOTYtNGQzMS1iZDg2LTYwMWQ1NDM4YWQ1ZX0iLAogICAgICIzMyI6IntmNzU4MWNhNC1kMzY4LTRlZWEtOGY4Mi1kNDhjNjRjNGYwNDd9IiwKKyAgICAiMzQiOiJ7N0EwQzU4MTItMjU4My00MEQ5LUJDQkItQ0Q3NDg1RjExMzc3fSIsCiAgICAgfSBbbWFqb3IrbWlub3JdCiAKICMgQ29tcHV0ZSB0aGUgbmFtZSB0aGF0IFNwaGlueCBnaXZlcyB0byB0aGUgZG9jZmlsZQpAQCAtOTU0LDggKzk1Nyw2IEBACiAgICAgIyBBZGQgYWxsIGV4ZWN1dGFibGVzLCBpY29ucywgdGV4dCBmaWxlcyBpbnRvIHRoZSBUQVJHRVRESVIgY29tcG9uZW50CiAgICAgcm9vdCA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIE5vbmUsIHNyY2RpciwgIlRBUkdFVERJUiIsICJTb3VyY2VEaXIiKQogICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCi0gICAgaWYgbm90IG1zaWxpYi5XaW42NDoKLSAgICAgICAgcm9vdC5hZGRfZmlsZSgiJXMvdzl4cG9wZW4uZXhlIiAlIFBDQlVJTEQpCiAgICAgcm9vdC5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKICAgICByb290LmFkZF9maWxlKCJORVdTLnR4dCIsIHNyYz0iTWlzYy9ORVdTIikKICAgICBnZW5lcmF0ZV9saWNlbnNlKCkKQEAgLTEyNjksNiArMTI3MCwxMCBAQAogICAgICAgICAgICAgICAiezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICBdKQogCisgICAgIyBQQVRIRVhUCisgICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCisgICAgICAgICAgICAgWygiUGF0aEV4dEFkZGl0aW9uIiwgIj0tKlBhdGhFeHQiLCAiW35dOy5QWSIsICJSRUdJU1RSWS5kZWYiKV0pCisKICAgICAjIFJlZ2lzdHJ5IGtleXMKICAgICBwcmVmaXggPSByIlNvZnR3YXJlXCVzUHl0aG9uXFB5dGhvbkNvcmVcJXMiICUgKHRlc3RwcmVmaXgsIHNob3J0X3ZlcnNpb24pCiAgICAgYWRkX2RhdGEoZGIsICJSZWdpc3RyeSIsCmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IGI1NWUyYzYuLjgzN2NkODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0zMDcsNiArMzA3LDkgQEAKICAgICBkZWYgX05hbWUoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUodC5pZCkKIAorICAgIGRlZiBfTmFtZUNvbnN0YW50KHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKHJlcHIodC52YWx1ZSkpCisKICAgICBkZWYgX051bShzZWxmLCB0KToKICAgICAgICAgIyBTdWJzdGl0dXRlIG92ZXJmbG93aW5nIGRlY2ltYWwgbGl0ZXJhbCBmb3IgQVNUIGluZmluaXRpZXMuCiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0Lm4pLnJlcGxhY2UoImluZiIsIElORlNUUikpCkBAIC01MTUsMTAgKzUxOCwxMCBAQAogICAgICAgICAgICAgZWxzZTogc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgc2VsZi53cml0ZSgiKiIpCiAgICAgICAgICAgICBpZiB0LnZhcmFyZzoKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHQudmFyYXJnKQotICAgICAgICAgICAgICAgIGlmIHQudmFyYXJnYW5ub3RhdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHQudmFyYXJnLmFyZykKKyAgICAgICAgICAgICAgICBpZiB0LnZhcmFyZy5hbm5vdGF0aW9uOgogICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCI6ICIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YXJhcmdhbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFyYXJnLmFubm90YXRpb24pCiAKICAgICAgICAgIyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzCiAgICAgICAgIGlmIHQua3dvbmx5YXJnczoKQEAgLTUzNCwxMCArNTM3LDEwIEBACiAgICAgICAgIGlmIHQua3dhcmc6CiAgICAgICAgICAgICBpZiBmaXJzdDpmaXJzdCA9IEZhbHNlCiAgICAgICAgICAgICBlbHNlOiBzZWxmLndyaXRlKCIsICIpCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIrdC5rd2FyZykKLSAgICAgICAgICAgIGlmIHQua3dhcmdhbm5vdGF0aW9uOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiKioiK3Qua3dhcmcuYXJnKQorICAgICAgICAgICAgaWYgdC5rd2FyZy5hbm5vdGF0aW9uOgogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIjogIikKLSAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmdhbm5vdGF0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5rd2FyZy5hbm5vdGF0aW9uKQogCiAgICAgZGVmIF9rZXl3b3JkKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHQuYXJnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ieWV4dC5weSBiL1Rvb2xzL3NjcmlwdHMvYnlleHQucHkKaW5kZXggYjc5ZmYzNy4uNzM2YTQ0MSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9ieWV4dC5weQorKysgYi9Ub29scy9zY3JpcHRzL2J5ZXh0LnB5CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICAgIHNlbGYuYWRkc3RhdHMoIjxkaXI+IiwgImRpcnMiLCAxKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQotICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW4ndCBsaXN0ICVzOiAlc1xuIiAlIChkaXIsIGVycikpCiAgICAgICAgICAgICBzZWxmLmFkZHN0YXRzKCI8ZGlyPiIsICJ1bmxpc3RhYmxlIiwgMSkKICAgICAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ieXRleWVhcnMucHkgYi9Ub29scy9zY3JpcHRzL2J5dGV5ZWFycy5weQppbmRleCA0OTBiMzdmLi5mNThjMzQ2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2J5dGV5ZWFycy5weQorKysgYi9Ub29scy9zY3JpcHRzL2J5dGV5ZWFycy5weQpAQCAtNDMsNyArNDMsNyBAQAogICAgIGZvciBmaWxlbmFtZSBpbiBzeXMuYXJndlsxOl06CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN0ID0gc3RhdGZ1bmMoZmlsZW5hbWUpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBtc2c6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoImNhbid0IHN0YXQgJXI6ICVyXG4iICUgKGZpbGVuYW1lLCBtc2cpKQogICAgICAgICAgICAgc3RhdHVzID0gMQogICAgICAgICAgICAgc3QgPSAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9jaGVja3B5Yy5weSBiL1Rvb2xzL3NjcmlwdHMvY2hlY2tweWMucHkKaW5kZXggZDRmZGNlMi4uYmJhYTNkMSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9jaGVja3B5Yy5weQorKysgYi9Ub29scy9zY3JpcHRzL2NoZWNrcHljLnB5CkBAIC01LDExICs1LDExIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGZyb20gc3RhdCBpbXBvcnQgU1RfTVRJTUUKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogCiAjIFBFUCAzMTQ3IGNvbXBhdGliaWxpdHkgKFBZQyBSZXBvc2l0b3J5IERpcmVjdG9yaWVzKQotY2FjaGVfZnJvbV9zb3VyY2UgPSAoaW1wLmNhY2hlX2Zyb21fc291cmNlIGlmIGhhc2F0dHIoaW1wLCAnZ2V0X3RhZycpIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBwYXRoOiBwYXRoICsgJ2MnKQorY2FjaGVfZnJvbV9zb3VyY2UgPSAoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgICAgICAgICAgICAgICAgICAgZWxzZSBsYW1iZGEgcGF0aDogcGF0aCArICdjJykKIAogCiBkZWYgbWFpbigpOgpAQCAtMTgsMTMgKzE4LDEzIEBACiAgICAgICAgIHNpbGVudCA9IChzeXMuYXJndlsxXSA9PSAnLXMnKQogICAgIGVsc2U6CiAgICAgICAgIHZlcmJvc2UgPSBzaWxlbnQgPSBGYWxzZQotICAgIE1BR0lDID0gaW1wLmdldF9tYWdpYygpCisgICAgTUFHSUMgPSBpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVIKICAgICBpZiBub3Qgc2lsZW50OgogICAgICAgICBwcmludCgnVXNpbmcgTUFHSUMgd29yZCcsIHJlcHIoTUFHSUMpKQogICAgIGZvciBkaXJuYW1lIGluIHN5cy5wYXRoOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHByaW50KCdDYW5ub3QgbGlzdCBkaXJlY3RvcnknLCByZXByKGRpcm5hbWUpKQogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgbm90IHNpbGVudDoKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIG5hbWUpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzdCA9IG9zLnN0YXQobmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCdDYW5ub3Qgc3RhdCcsIHJlcHIobmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvY29weXRpbWUucHkgYi9Ub29scy9zY3JpcHRzL2NvcHl0aW1lLnB5CmluZGV4IGUwMjIwYjUuLjcxNTY4M2YgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvY29weXRpbWUucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9jb3B5dGltZS5weQpAQCAtMTMsMTIgKzEzLDEyIEBACiAgICAgZmlsZTEsIGZpbGUyID0gc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdCiAgICAgdHJ5OgogICAgICAgICBzdGF0MSA9IG9zLnN0YXQoZmlsZTEpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGZpbGUxICsgJzogY2Fubm90IHN0YXRcbicpCiAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgdHJ5OgogICAgICAgICBvcy51dGltZShmaWxlMiwgKHN0YXQxW1NUX0FUSU1FXSwgc3RhdDFbU1RfTVRJTUVdKSkKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZmlsZTIgKyAnOiBjYW5ub3QgY2hhbmdlIHRpbWVcbicpCiAgICAgICAgIHN5cy5leGl0KDIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZmluZGRpdi5weSBiL1Rvb2xzL3NjcmlwdHMvZmluZGRpdi5weQppbmRleCBmMjRhNzAyLi5hNzA1ZjU2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpbmRkaXYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maW5kZGl2LnB5CkBAIC03MCw3ICs3MCw3IEBACiBkZWYgcHJvY2Vzc2RpcihkaXIsIGxpc3RuYW1lcyk6CiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBtc2c6CisgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJDYW4ndCBsaXN0IGRpcmVjdG9yeTogJXNcbiIgJSBkaXIpCiAgICAgICAgIHJldHVybiAxCiAgICAgZmlsZXMgPSBbXQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maW5kbGlua3N0by5weSBiL1Rvb2xzL3NjcmlwdHMvZmluZGxpbmtzdG8ucHkKaW5kZXggYjRjMDllZi4uYjkyNGYyNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maW5kbGlua3N0by5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpbmRsaW5rc3RvLnB5CkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgICAgICBsaW5rdG8gPSBvcy5yZWFkbGluayhuYW1lKQogICAgICAgICAgICAgaWYgcHJvZy5zZWFyY2gobGlua3RvKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBwcmludChuYW1lLCAnLT4nLCBsaW5rdG8pCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpeGNpZC5weSBiL1Rvb2xzL3NjcmlwdHMvZml4Y2lkLnB5CmluZGV4IDg3ZTJhMDkuLjFlNGM0MjggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZml4Y2lkLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZml4Y2lkLnB5CkBAIC05Nyw3ICs5Nyw3IEBACiAgICAgYmFkID0gMAogICAgIHRyeToKICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIGVycihkaXJuYW1lICsgJzogY2Fubm90IGxpc3QgZGlyZWN0b3J5OiAnICsgc3RyKG1zZykgKyAnXG4nKQogICAgICAgICByZXR1cm4gMQogICAgIG5hbWVzLnNvcnQoKQpAQCAtMTc1LDE3ICsxNzUsMTcgQEAKICAgICB0cnk6CiAgICAgICAgIHN0YXRidWYgPSBvcy5zdGF0KGZpbGVuYW1lKQogICAgICAgICBvcy5jaG1vZCh0ZW1wbmFtZSwgc3RhdGJ1ZltTVF9NT0RFXSAmIDBvNzc3NykKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgbXNnOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgZXJyKHRlbXBuYW1lICsgJzogd2FybmluZzogY2htb2QgZmFpbGVkICgnICsgc3RyKG1zZykgKyAnKVxuJykKICAgICAjIFRoZW4gbWFrZSBhIGJhY2t1cCBvZiB0aGUgb3JpZ2luYWwgZmlsZSBhcyBmaWxlbmFtZX4KICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZSwgZmlsZW5hbWUgKyAnficpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIGVycihmaWxlbmFtZSArICc6IHdhcm5pbmc6IGJhY2t1cCBmYWlsZWQgKCcgKyBzdHIobXNnKSArICcpXG4nKQogICAgICMgTm93IG1vdmUgdGhlIHRlbXAgZmlsZSB0byB0aGUgb3JpZ2luYWwgZmlsZQogICAgIHRyeToKICAgICAgICAgb3MucmVuYW1lKHRlbXBuYW1lLCBmaWxlbmFtZSkKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgbXNnOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgZXJyKGZpbGVuYW1lICsgJzogcmVuYW1lIGZhaWxlZCAoJyArIHN0cihtc2cpICsgJylcbicpCiAgICAgICAgIHJldHVybiAxCiAgICAgIyBSZXR1cm4gc3VjY2VzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9mdHBtaXJyb3IucHkgYi9Ub29scy9zY3JpcHRzL2Z0cG1pcnJvci5weQppbmRleCA5ZThiZTFkLi5hMWI2ODNhIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2Z0cG1pcnJvci5weQorKysgYi9Ub29scy9zY3JpcHRzL2Z0cG1pcnJvci5weQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCdDcmVhdGluZyBsb2NhbCBkaXJlY3RvcnknLCByZXByKGxvY2FsZGlyKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbWFrZWRpcihsb2NhbGRpcikKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgcHJpbnQoIkZhaWxlZCB0byBlc3RhYmxpc2ggbG9jYWwgZGlyZWN0b3J5IiwgcmVwcihsb2NhbGRpcikpCiAgICAgICAgICAgICByZXR1cm4KICAgICBpbmZvZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4obG9jYWxkaXIsICcubWlycm9yaW5mbycpCkBAIC0xODMsNyArMTgzLDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51bmxpbmsodGVtcG5hbWUpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGlmIG1vZGVbMF0gPT0gJ2wnOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKQEAgLTIxOCwxMSArMjE4LDExIEBACiAgICAgICAgICAgICAgICAgZnAxLmNsb3NlKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudW5saW5rKGZ1bGxuYW1lKQotICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcyAgICAgICAgICAgICMgSWdub3JlIHRoZSBlcnJvcgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5yZW5hbWUodGVtcG5hbWUsIGZ1bGxuYW1lKQotICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgbXNnOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBwcmludCgiQ2FuJ3QgcmVuYW1lICVyIHRvICVyOiAlcyIgJSAodGVtcG5hbWUsIGZ1bGxuYW1lLCBtc2cpKQogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaW5mb1tmaWxlbmFtZV0gPSBpbmZvc3R1ZmYKQEAgLTI1NSw3ICsyNTUsNyBAQAogICAgIHRyeToKICAgICAgICAgaWYgbm90IGxvY2FsZGlyOiBuYW1lcyA9IG9zLmxpc3RkaXIob3MuY3VyZGlyKQogICAgICAgICBlbHNlOiBuYW1lcyA9IG9zLmxpc3RkaXIobG9jYWxkaXIpCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBuYW1lcyA9IFtdCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgIGlmIG5hbWVbMF0gPT0gJy4nIG9yIG5hbWUgaW4gaW5mbyBvciBuYW1lIGluIHN1YmRpcnM6CkBAIC0zMTIsNyArMzEyLDcgQEAKICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxuYW1lKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKGZ1bGxuYW1lKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGZ1bGxuYW1lKQotICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgbmFtZXMgPSBbXQogICAgICAgICBvayA9IDEKICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CkBAIC0zMjIsMTMgKzMyMiwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3Mucm1kaXIoZnVsbG5hbWUpCi0gICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBtc2c6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHByaW50KCJDYW4ndCByZW1vdmUgbG9jYWwgZGlyZWN0b3J5ICVyOiAlcyIgJSAoZnVsbG5hbWUsIG1zZykpCiAgICAgICAgICAgICByZXR1cm4gMAogICAgIGVsc2U6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnVubGluayhmdWxsbmFtZSkKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgcHJpbnQoIkNhbid0IHJlbW92ZSBsb2NhbCBmaWxlICVyOiAlcyIgJSAoZnVsbG5hbWUsIG1zZykpCiAgICAgICAgICAgICByZXR1cm4gMAogICAgIHJldHVybiAxCkBAIC0zODYsNyArMzg2LDcgQEAKICAgICBiYWNrdXAgPSBvcy5wYXRoLmpvaW4oZGlyLCBmbmFtZSArICd+JykKICAgICB0cnk6CiAgICAgICAgIG9zLnVubGluayhiYWNrdXApCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBwYXNzCiAgICAgZnAgPSBvcGVuKHRlbXBuYW1lLCAndycpCiAgICAgZnAud3JpdGUoJ3tcbicpCkBAIC0zOTYsNyArMzk2LDcgQEAKICAgICBmcC5jbG9zZSgpCiAgICAgdHJ5OgogICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIGJhY2t1cCkKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBvcy5yZW5hbWUodGVtcG5hbWUsIGZpbGVuYW1lKQogCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2xpbmt0cmVlLnB5IGIvVG9vbHMvc2NyaXB0cy9saW5rdHJlZS5weQppbmRleCA5ODJmNDgwLi5lODNmMTk4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2xpbmt0cmVlLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbGlua3RyZWUucHkKQEAgLTMyLDEzICszMiwxMyBAQAogICAgICAgICByZXR1cm4gMQogICAgIHRyeToKICAgICAgICAgb3MubWtkaXIobmV3dHJlZSwgMG83NzcpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIHByaW50KG5ld3RyZWUgKyAnOiBjYW5ub3QgbWtkaXI6JywgbXNnKQogICAgICAgICByZXR1cm4gMQogICAgIGxpbmtuYW1lID0gb3MucGF0aC5qb2luKG5ld3RyZWUsIGxpbmspCiAgICAgdHJ5OgogICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguam9pbihvcy5wYXJkaXIsIG9sZHRyZWUpLCBsaW5rbmFtZSkKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgbXNnOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgaWYgbm90IGxpbmtfbWF5X2ZhaWw6CiAgICAgICAgICAgICBwcmludChsaW5rbmFtZSArICc6IGNhbm5vdCBzeW1saW5rOicsIG1zZykKICAgICAgICAgICAgIHJldHVybiAxCkBAIC01MSw3ICs1MSw3IEBACiAgICAgaWYgZGVidWc6IHByaW50KCdsaW5rbmFtZXMnLCAob2xkLCBuZXcsIGxpbmspKQogICAgIHRyeToKICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKG9sZCkKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgbXNnOgorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgcHJpbnQob2xkICsgJzogd2FybmluZzogY2Fubm90IGxpc3RkaXI6JywgbXNnKQogICAgICAgICByZXR1cm4KICAgICBmb3IgbmFtZSBpbiBuYW1lczoKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VfaHRtbDVfZW50aXRpZXMucHkgYi9Ub29scy9zY3JpcHRzL3BhcnNlX2h0bWw1X2VudGl0aWVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMTEzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL3BhcnNlX2h0bWw1X2VudGl0aWVzLnB5CkBAIC0wLDAgKzEsMTA1IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisiIiIKK1V0aWxpdHkgZm9yIHBhcnNpbmcgSFRNTDUgZW50aXR5IGRlZmluaXRpb25zIGF2YWlsYWJsZSBmcm9tOgorCisgICAgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9lbnRpdGllcy5qc29uCisKK1dyaXR0ZW4gYnkgRXppbyBNZWxvdHRpIGFuZCBJdWxpaWEgUHJvc2t1cm5pYS4KKworIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IGpzb24KK2Zyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Zyb20gaHRtbC5lbnRpdGllcyBpbXBvcnQgaHRtbDUKKworZW50aXRpZXNfdXJsID0gJ2h0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvZW50aXRpZXMuanNvbicKKworZGVmIGdldF9qc29uKHVybCk6CisgICAgIiIiRG93bmxvYWQgdGhlIGpzb24gZmlsZSBmcm9tIHRoZSB1cmwgYW5kIHJldHVybnMgYSBkZWNvZGVkIG9iamVjdC4iIiIKKyAgICB3aXRoIHVybG9wZW4odXJsKSBhcyBmOgorICAgICAgICBkYXRhID0gZi5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCisgICAgcmV0dXJuIGpzb24ubG9hZHMoZGF0YSkKKworZGVmIGNyZWF0ZV9kaWN0KGVudGl0aWVzKToKKyAgICAiIiJDcmVhdGUgdGhlIGh0bWw1IGRpY3QgZnJvbSB0aGUgZGVjb2RlZCBqc29uIG9iamVjdC4iIiIKKyAgICBuZXdfaHRtbDUgPSB7fQorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBlbnRpdGllcy5pdGVtcygpOgorICAgICAgICBuZXdfaHRtbDVbbmFtZS5sc3RyaXAoJyYnKV0gPSB2YWx1ZVsnY2hhcmFjdGVycyddCisgICAgcmV0dXJuIG5ld19odG1sNQorCitkZWYgY29tcGFyZV9kaWN0cyhvbGQsIG5ldyk6CisgICAgIiIiQ29tcGFyZSB0aGUgb2xkIGFuZCBuZXcgZGljdHMgYW5kIHByaW50IHRoZSBkaWZmZXJlbmNlcy4iIiIKKyAgICBhZGRlZCA9IG5ldy5rZXlzKCkgLSBvbGQua2V5cygpCisgICAgaWYgYWRkZWQ6CisgICAgICAgIHByaW50KCd7fSBlbnRpdGllKHMpIGhhdmUgYmVlbiBhZGRlZDonLmZvcm1hdChsZW4oYWRkZWQpKSkKKyAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGFkZGVkKToKKyAgICAgICAgICAgIHByaW50KCcgIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBuZXdbbmFtZV0pKQorICAgIHJlbW92ZWQgPSBvbGQua2V5cygpIC0gbmV3LmtleXMoKQorICAgIGlmIHJlbW92ZWQ6CisgICAgICAgIHByaW50KCd7fSBlbnRpdGllKHMpIGhhdmUgYmVlbiByZW1vdmVkOicuZm9ybWF0KGxlbihyZW1vdmVkKSkpCisgICAgICAgIGZvciBuYW1lIGluIHNvcnRlZChyZW1vdmVkKToKKyAgICAgICAgICAgIHByaW50KCcgIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBvbGRbbmFtZV0pKQorICAgIGNoYW5nZWQgPSBzZXQoKQorICAgIGZvciBuYW1lIGluIChvbGQua2V5cygpICYgbmV3LmtleXMoKSk6CisgICAgICAgIGlmIG9sZFtuYW1lXSAhPSBuZXdbbmFtZV06CisgICAgICAgICAgICBjaGFuZ2VkLmFkZCgobmFtZSwgb2xkW25hbWVdLCBuZXdbbmFtZV0pKQorICAgIGlmIGNoYW5nZWQ6CisgICAgICAgIHByaW50KCd7fSBlbnRpdGllKHMpIGhhdmUgYmVlbiBtb2RpZmllZDonLmZvcm1hdChsZW4oY2hhbmdlZCkpKQorICAgICAgICBmb3IgaXRlbSBpbiBzb3J0ZWQoY2hhbmdlZCk6CisgICAgICAgICAgICBwcmludCgnICB7IXJ9OiB7IXJ9IC0+IHshcn0nLmZvcm1hdCgqaXRlbSkpCisKK2RlZiB3cml0ZV9pdGVtcyhlbnRpdGllcywgZmlsZT1zeXMuc3Rkb3V0KToKKyAgICAiIiJXcml0ZSB0aGUgaXRlbXMgb2YgdGhlIGRpY3Rpb25hcnkgaW4gdGhlIHNwZWNpZmllZCBmaWxlLiIiIgorICAgICMgVGhlIGtleXMgaW4gdGhlIGdlbmVyYXRlZCBkaWN0aW9uYXJ5IHNob3VsZCBiZSBzb3J0ZWQKKyAgICAjIGluIGEgY2FzZS1pbnNlbnNpdGl2ZSB3YXksIGhvd2V2ZXIsIHdoZW4gdHdvIGtleXMgYXJlIGVxdWFsLAorICAgICMgdGhlIHVwcGVyY2FzZSB2ZXJzaW9uIHNob3VsZCBjb21lIGZpcnN0IHNvIHRoYXQgdGhlIHJlc3VsdAorICAgICMgbG9va3MgbGlrZTogWydBYWN1dGUnLCAnYWFjdXRlJywgJ0FhY3V0ZTsnLCAnYWFjdXRlOycsIC4uLl0KKyAgICAjIFRvIGRvIHRoaXMgd2UgZmlyc3Qgc29ydCBpbiBhIGNhc2Utc2Vuc2l0aXZlIHdheSAoc28gYWxsIHRoZQorICAgICMgdXBwZXJjYXNlIGNoYXJzIGNvbWUgZmlyc3QpIGFuZCB0aGVuIHNvcnQgd2l0aCBrZXk9c3RyLmxvd2VyLgorICAgICMgU2luY2UgdGhlIHNvcnRpbmcgaXMgc3RhYmxlIHRoZSB1cHBlcmNhc2Uga2V5cyB3aWxsIGV2ZW50dWFsbHkKKyAgICAjIGJlIGJlZm9yZSB0aGVpciBlcXVpdmFsZW50IGxvd2VyY2FzZSB2ZXJzaW9uLgorICAgIGtleXMgPSBzb3J0ZWQoZW50aXRpZXMua2V5cygpKQorICAgIGtleXMgPSBzb3J0ZWQoa2V5cywga2V5PXN0ci5sb3dlcikKKyAgICBwcmludCgnaHRtbDUgPSB7JywgZmlsZT1maWxlKQorICAgIGZvciBuYW1lIGluIGtleXM6CisgICAgICAgIHByaW50KCcgICAgeyFyfTogeyFhfSwnLmZvcm1hdChuYW1lLCBlbnRpdGllc1tuYW1lXSksIGZpbGU9ZmlsZSkKKyAgICBwcmludCgnfScsIGZpbGU9ZmlsZSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgd2l0aG91dCBhcmdzIHByaW50IGEgZGlmZiBiZXR3ZWVuIGh0bWwuZW50aXRpZXMuaHRtbDUgYW5kIG5ld19odG1sNQorICAgICMgd2l0aCAtLWNyZWF0ZSBwcmludCB0aGUgbmV3IGh0bWw1IGRpY3QKKyAgICAjIHdpdGggLS1wYXRjaCBwYXRjaCB0aGUgTGliL2h0bWwvZW50aXRpZXMucHkgZmlsZQorICAgIG5ld19odG1sNSA9IGNyZWF0ZV9kaWN0KGdldF9qc29uKGVudGl0aWVzX3VybCkpCisgICAgaWYgJy0tY3JlYXRlJyBpbiBzeXMuYXJndjoKKyAgICAgICAgcHJpbnQoJyMgbWFwIHRoZSBIVE1MNSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyB0byB0aGUgJworICAgICAgICAgICAgICAnZXF1aXZhbGVudCBVbmljb2RlIGNoYXJhY3RlcihzKScpCisgICAgICAgIHByaW50KCcjIEdlbmVyYXRlZCBieSB7fS4gIERvIG5vdCBlZGl0IG1hbnVhbGx5LicuZm9ybWF0KF9fZmlsZV9fKSkKKyAgICAgICAgd3JpdGVfaXRlbXMobmV3X2h0bWw1KQorICAgIGVsaWYgJy0tcGF0Y2gnIGluIHN5cy5hcmd2OgorICAgICAgICBmbmFtZSA9ICdMaWIvaHRtbC9lbnRpdGllcy5weScKKyAgICAgICAgdGVtcF9mbmFtZSA9IGZuYW1lICsgJy50ZW1wJworICAgICAgICB3aXRoIG9wZW4oZm5hbWUpIGFzIGYxLCBvcGVuKHRlbXBfZm5hbWUsICd3JykgYXMgZjI6CisgICAgICAgICAgICBza2lwID0gRmFsc2UKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGYxOgorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnaHRtbDUgPSB7Jyk6CisgICAgICAgICAgICAgICAgICAgIHdyaXRlX2l0ZW1zKG5ld19odG1sNSwgZmlsZT1mMikKKyAgICAgICAgICAgICAgICAgICAgc2tpcCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBza2lwOgorICAgICAgICAgICAgICAgICAgICAjIHNraXAgdGhlIG9sZCBpdGVtcyB1bnRpbCB0aGUgfQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ30nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGYyLndyaXRlKGxpbmUpCisgICAgICAgIG9zLnJlbW92ZShmbmFtZSkKKyAgICAgICAgb3MucmVuYW1lKHRlbXBfZm5hbWUsIGZuYW1lKQorICAgIGVsc2U6CisgICAgICAgIGlmIGh0bWw1ID09IG5ld19odG1sNToKKyAgICAgICAgICAgIHByaW50KCdUaGUgY3VycmVudCBkaWN0aW9uYXJ5IGlzIHVwZGF0ZWQuJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbXBhcmVfZGljdHMoaHRtbDUsIG5ld19odG1sNSkKKyAgICAgICAgICAgIHByaW50KCdSdW4gIi4vcHl0aG9uIHswfSAtLXBhdGNoIiB0byB1cGRhdGUgTGliL2h0bWwvZW50aXRpZXMuaHRtbCAnCisgICAgICAgICAgICAgICAgICAnb3IgIi4vcHl0aG9uIHswfSAtLWNyZWF0ZSIgdG8gc2VlIHRoZSBnZW5lcmF0ZWQgJyAnZGljdGlvbmFyeS4nLmZvcm1hdChfX2ZpbGVfXykpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkgYi9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKaW5kZXggZGQwOGUwYS4uYWUxNTU2MSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQpAQCAtNzMsNyArNzMsNyBAQAogICAgIGJhZCA9IDAKICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBtc2c6CisgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICBlcnIoJyVzOiBjYW5ub3QgbGlzdCBkaXJlY3Rvcnk6ICVyXG4nICUgKGRpcm5hbWUsIG1zZykpCiAgICAgICAgIHJldHVybiAxCiAgICAgbmFtZXMuc29ydCgpCkBAIC0xMzEsMjQgKzEzMSwyNCBAQAogICAgICAgICBtdGltZSA9IHN0YXRidWYuc3RfbXRpbWUKICAgICAgICAgYXRpbWUgPSBzdGF0YnVmLnN0X2F0aW1lCiAgICAgICAgIG9zLmNobW9kKHRlbXBuYW1lLCBzdGF0YnVmW1NUX01PREVdICYgMG83Nzc3KQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBtc2c6CisgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICBlcnIoJyVzOiB3YXJuaW5nOiBjaG1vZCBmYWlsZWQgKCVyKVxuJyAlICh0ZW1wbmFtZSwgbXNnKSkKICAgICAjIFRoZW4gbWFrZSBhIGJhY2t1cCBvZiB0aGUgb3JpZ2luYWwgZmlsZSBhcyBmaWxlbmFtZX4KICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZSwgZmlsZW5hbWUgKyAnficpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIGVycignJXM6IHdhcm5pbmc6IGJhY2t1cCBmYWlsZWQgKCVyKVxuJyAlIChmaWxlbmFtZSwgbXNnKSkKICAgICAjIE5vdyBtb3ZlIHRoZSB0ZW1wIGZpbGUgdG8gdGhlIG9yaWdpbmFsIGZpbGUKICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZSh0ZW1wbmFtZSwgZmlsZW5hbWUpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgIGVycignJXM6IHJlbmFtZSBmYWlsZWQgKCVyKVxuJyAlIChmaWxlbmFtZSwgbXNnKSkKICAgICAgICAgcmV0dXJuIDEKICAgICBpZiBwcmVzZXJ2ZV90aW1lc3RhbXBzOgogICAgICAgICBpZiBhdGltZSBhbmQgbXRpbWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIChhdGltZSwgbXRpbWUpKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgICAgICBlcnIoJyVzOiByZXNldCBvZiB0aW1lc3RhbXAgZmFpbGVkICglcilcbicgJSAoZmlsZW5hbWUsIG1zZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDEKICAgICAjIFJldHVybiBzdWNjZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGluZGVudC5weSBiL1Rvb2xzL3NjcmlwdHMvcGluZGVudC5weQppbmRleCAyODcyZGMwLi4zMzMzNDIwIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BpbmRlbnQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9waW5kZW50LnB5CkBAIC0zNzYsMTMgKzM3NiwxMyBAQAogICAgIGlmIG9zLnBhdGgubGV4aXN0cyhiYWNrdXApOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5yZW1vdmUoYmFja3VwKQotICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcHJpbnQoIkNhbid0IHJlbW92ZSBiYWNrdXAgJXIiICUgKGJhY2t1cCwpLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgICMgZW5kIHRyeQogICAgICMgZW5kIGlmCiAgICAgdHJ5OgogICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIGJhY2t1cCkKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHByaW50KCJDYW4ndCByZW5hbWUgJXIgdG8gJXIiICUgKGZpbGVuYW1lLCBiYWNrdXApLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgIyBlbmQgdHJ5CiAjIGVuZCBkZWYgbWFrZV9iYWNrdXAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgYi9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CmluZGV4IDRhOTE2ZWEuLjE4NDI0ZGUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQpAQCAtNTIsOCArNTIsOCBAQAogcmVjdXJzZSA9IEZhbHNlCiBkcnlydW4gPSBGYWxzZQogbWFrZWJhY2t1cCA9IFRydWUKKyMgQSBzcGVjaWZpZWQgbmV3bGluZSB0byBiZSB1c2VkIGluIHRoZSBvdXRwdXQgKHNldCBieSAtLW5ld2xpbmUgb3B0aW9uKQogc3BlY19uZXdsaW5lID0gTm9uZQotIiIiQSBzcGVjaWZpZWQgbmV3bGluZSB0byBiZSB1c2VkIGluIHRoZSBvdXRwdXQgKHNldCBieSAtLW5ld2xpbmUgb3B0aW9uKSIiIgogCiAKIGRlZiB1c2FnZShtc2c9Tm9uZSk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3RyZWVzeW5jLnB5IGIvVG9vbHMvc2NyaXB0cy90cmVlc3luYy5weQppbmRleCBiMjY0OWM0Li42NTJkMzk0IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3RyZWVzeW5jLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvdHJlZXN5bmMucHkKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgcHJpbnQoImNyZWF0aW5nIHNsYXZlIGRpcmVjdG9yeSIsIHNsYXZlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5ta2RpcihzbGF2ZSkKLSAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIG1zZzoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgcHJpbnQoImNhbid0IG1ha2Ugc2xhdmUgZGlyZWN0b3J5Iiwgc2xhdmUsICI6IiwgbXNnKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3VudGFiaWZ5LnB5IGIvVG9vbHMvc2NyaXB0cy91bnRhYmlmeS5weQppbmRleCA0YjY3YzE1Li44NjFjODNjIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3VudGFiaWZ5LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvdW50YWJpZnkucHkKQEAgLTM5LDExICszOSwxMSBAQAogICAgIGJhY2t1cCA9IGZpbGVuYW1lICsgIn4iCiAgICAgdHJ5OgogICAgICAgICBvcy51bmxpbmsoYmFja3VwKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcGFzcwogICAgIHRyeToKICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lLCBiYWNrdXApCi0gICAgZXhjZXB0IG9zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBwYXNzCiAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmOgogICAgICAgICBmLndyaXRlKG5ld3RleHQpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3doaWNoLnB5IGIvVG9vbHMvc2NyaXB0cy93aGljaC5weQppbmRleCA0ZmMzN2EwLi5kZjU0Y2UwIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3doaWNoLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvd2hpY2gucHkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGRpciwgcHJvZykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbm90IFNfSVNSRUcoc3RbU1RfTU9ERV0pOgogICAgICAgICAgICAgICAgIG1zZyhmaWxlbmFtZSArICc6IG5vdCBhIGRpc2sgZmlsZScpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weSBiL1Rvb2xzL3NjcmlwdHMvd2luX2FkZDJwYXRoLnB5CmluZGV4IDkyNTliNDQuLmM4NWJlYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvd2luX2FkZDJwYXRoLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvd2luX2FkZDJwYXRoLnB5CkBAIC0zMCw3ICszMCw3IEBACiAgICAgd2l0aCB3aW5yZWcuQ3JlYXRlS2V5KEhLQ1UsIEVOVikgYXMga2V5OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlbnZwYXRoID0gd2lucmVnLlF1ZXJ5VmFsdWVFeChrZXksIFBBVEgpWzBdCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgZW52cGF0aCA9IERFRkFVTFQKIAogICAgICAgICBwYXRocyA9IFtlbnZwYXRoXQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkgYi9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQppbmRleCBhMGEyMWZhLi5jNzJlMTZkIDEwMDc1NQotLS0gYS9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQorKysgYi9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQpAQCAtODA4LDcgKzgwOCw3IEBACiBwcm9ncmFtbWVycyByZXBvcnQgc3Vic3RhbnRpYWwgcHJvZHVjdGl2aXR5IGdhaW5zIGFuZCBmZWVsIHRoZSBsYW5ndWFnZQogZW5jb3VyYWdlcyB0aGUgZGV2ZWxvcG1lbnQgb2YgaGlnaGVyIHF1YWxpdHksIG1vcmUgbWFpbnRhaW5hYmxlIGNvZGUuCiAKLVB5dGhvbiBydW5zIG9uIFdpbmRvd3MsIExpbnV4L1VuaXgsIE1hYyBPUyBYLCBPUy8yLCBBbWlnYSwgUGFsbQorUHl0aG9uIHJ1bnMgb24gV2luZG93cywgTGludXgvVW5peCwgTWFjIE9TIFgsIEFtaWdhLCBQYWxtCiBIYW5kaGVsZHMsIGFuZCBOb2tpYSBtb2JpbGUgcGhvbmVzLiBQeXRob24gaGFzIGFsc28gYmVlbiBwb3J0ZWQgdG8gdGhlCiBKYXZhIGFuZCAuTkVUIHZpcnR1YWwgbWFjaGluZXMuCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKaW5kZXggZDgzY2Y2My4uMmY4ZTYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKKysrIGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKQEAgLTM3LDcgKzM3LDcgQEAKIFZFUlNJT04gPSAiMy4yIgogCiAjIFRoZSBVbmljb2RlIERhdGFiYXNlCi1VTklEQVRBX1ZFUlNJT04gPSAiNi4xLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiNi4yLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCBhMWI3YmZmLi4yODFkZmUxIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjMuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNC4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU4MCw4ICs1ODAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjMnCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuMycKK1BBQ0tBR0VfVkVSU0lPTj0nMy40JworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjQnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02MjUsNiArNjI1LDggQEAKIGFjX3N1YnN0X3ZhcnM9J0xUTElCT0JKUwogU1JDRElSUwogVEhSRUFESEVBREVSUworTElCUEwKK1BZX0VOQUJMRV9TSEFSRUQKIEVYVF9TVUZGSVgKIFNPQUJJCiBMSUJDCkBAIC0xMzU4LDcgKzEzNjAsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjMgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNCB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDIzLDcgKzE0MjUsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjM6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy40OiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE1NjIsNyArMTU2NCw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjMKK3B5dGhvbiBjb25maWd1cmUgMy40CiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjQwMSw3ICsyNDAzLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNCwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0yOTcxLDcgKzI5NzMsNyBAQAogbXYgY29uZmRlZnMuaC5uZXcgY29uZmRlZnMuaAogCiAKLVZFUlNJT049My4zCitWRVJTSU9OPTMuNAogCiAjIFZlcnNpb24gbnVtYmVyIG9mIFB5dGhvbidzIG93biBzaGFyZWQgbGlicmFyeSBmaWxlLgogCkBAIC01NTc2LDYgKzU1NzgsNyBAQAogCiAjIE90aGVyIHBsYXRmb3JtcyBmb2xsb3cKIGlmIHRlc3QgJGVuYWJsZV9zaGFyZWQgPSAieWVzIjsgdGhlbgorICBQWV9FTkFCTEVfU0hBUkVEPTEKIAogJGFzX2VjaG8gIiNkZWZpbmUgUHlfRU5BQkxFX1NIQVJFRCAxIiA+PmNvbmZkZWZzLmgKIApAQCAtNTYzMyw2ICs1NjM2LDcgQEAKIAogICBlc2FjCiBlbHNlICMgc2hhcmVkIGlzIGRpc2FibGVkCisgIFBZX0VOQUJMRV9TSEFSRUQ9MAogICBjYXNlICRhY19zeXNfc3lzdGVtIGluCiAgICAgQ1lHV0lOKikKICAgICAgICAgICBCTERMSUJSQVJZPSckKExJQlJBUlkpJwpAQCAtNjM3Myw2ICs2Mzc3LDQ5IEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudC4uLiAiID4mNjsgfQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBpZiAke2FjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgIGZpCisKICAgICAjIGlmIHVzaW5nIGdjYyBvbiBhbHBoYSwgdXNlIC1taWVlZSB0byBnZXQgKG5lYXIpIGZ1bGwgSUVFRSA3NTQKICAgICAjIHN1cHBvcnQuICBXaXRob3V0IHRoaXMsIHRyZWF0bWVudCBvZiBzdWJub3JtYWxzIGRvZXNuJ3QgZm9sbG93CiAgICAgIyB0aGUgc3RhbmRhcmQuCkBAIC02NTE5LDQ0ICs2NTY2LDYgQEAKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAkYWNfYXJjaF9mbGFncyIKIGZpCiAKLSMgQ2hlY2sgd2hldGhlciBHQ0Mgc3VwcG9ydHMgUHlBcmdfUGFyc2VUdXBsZSBmb3JtYXQKLWlmIHRlc3QgIiRHQ0MiID0gInllcyIKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGdjYyBzdXBwb3J0cyBQYXJzZVR1cGxlIF9fZm9ybWF0X18iID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBnY2Mgc3VwcG9ydHMgUGFyc2VUdXBsZSBfX2Zvcm1hdF9fLi4uICIgPiY2OyB9Ci0gIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAgIHZvaWQgZihjaGFyKiwuLi4pX19hdHRyaWJ1dGUoKGZvcm1hdChQeUFyZ19QYXJzZVR1cGxlLCAxLCAyKSkpOwotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BVFRSSUJVVEVfRk9STUFUX1BBUlNFVFVQTEUgMSIgPj5jb25mZGVmcy5oCi0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotCi1lbHNlCi0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCi1maQotCiAjIE9uIHNvbWUgY29tcGlsZXJzLCBwdGhyZWFkcyBhcmUgYXZhaWxhYmxlIHdpdGhvdXQgZnVydGhlciBvcHRpb25zCiAjIChlLmcuIE1hY09TIFgpLiBPbiBzb21lIG9mIHRoZXNlIHN5c3RlbXMsIHRoZSBjb21waWxlciB3aWxsIG5vdAogIyBjb21wbGFpbiBpZiB1bmFjY2VwdGVkIG9wdGlvbnMgYXJlIHBhc3NlZCAoZS5nLiBnY2Mgb24gTWFjIE9TIFgpLgpAQCAtNzIyMSw3ICs3MjMwLDcgQEAKIAogCiAjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCi1mb3IgYWNfaGVhZGVyIGluIGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaAorZm9yIGFjX2hlYWRlciBpbiBsaW51eC9jYW4uaCBsaW51eC9jYW4vcmF3LmggbGludXgvY2FuL2JjbS5oCiBkbyA6CiAgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIgpAQCAtODYwNSw2ICs4NjE0LDEyIEBACiAJIyAtdSBsaWJzeXNfcyBwdWxscyBpbiBhbGwgc3ltYm9scyBpbiBsaWJzeXMKIAlEYXJ3aW4vKikKIAkJTElOS0ZPUlNIQVJFRD0iJGV4dHJhX3VuZGVmcyAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIgorCisJCSMgSXNzdWUgIzE4MDc1OiB0aGUgZGVmYXVsdCBtYXhpbXVtIHN0YWNrIHNpemUgKDhNQnl0ZXMpIGlzIHRvbworCQkjIHNtYWxsIGZvciB0aGUgZGVmYXVsdCByZWN1cnNpb24gbGltaXQuIEluY3JlYXNlIHRoZSBzdGFjayBzaXplCisJCSMgdG8gZW5zdXJlIHRoYXQgdGVzdHMgZG9uJ3QgY3Jhc2gKKwkJTElOS0ZPUlNIQVJFRD0iLVdsLC1zdGFja19zaXplLDEwMDAwMDAgJExJTktGT1JTSEFSRUQiCisKIAkJaWYgdGVzdCAiJGVuYWJsZV9mcmFtZXdvcmsiCiAJCXRoZW4KIAkJCUxJTktGT1JTSEFSRUQ9IiRMSU5LRk9SU0hBUkVEICInJChQWVRIT05GUkFNRVdPUktESVIpL1ZlcnNpb25zLyQoVkVSU0lPTikvJChQWVRIT05GUkFNRVdPUkspJwpAQCAtMTAyNjksNyArMTAyODQsNyBAQAogIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCiAgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCi0gd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5Cisgd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdtZW1jbXAgd3JpdGV2IF9nZXRwdHkKIGRvIDoKICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCkBAIC0xMzcxOSw2ICsxMzczNCwxMCBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMRFZFUlNJT04iID4mNQogJGFzX2VjaG8gIiRMRFZFUlNJT04iID4mNjsgfQogCisKK0xJQlBMPSIke3ByZWZpeH0vbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKKworCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CiAjIG9yIGZpbGxzIHdpdGggemVyb3MgKGxpa2UgdGhlIENyYXkgSjkwLCBhY2NvcmRpbmcgdG8gVGltIFBldGVycykuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcmlnaHQgc2hpZnQgZXh0ZW5kcyB0aGUgc2lnbiBiaXQiID4mNQpAQCAtMTUxMjcsNyArMTUxNDYsNyBAQAogZmkKIAogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMiCithY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjIE1pc2MvcHl0aG9uLWNvbmZpZy5zaCIKIAogYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1vZHVsZXMvbGRfc29fYWl4IgogCkBAIC0xNTYzOCw3ICsxNTY1Nyw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy40LCB3aGljaCB3YXMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKQEAgLTE1NzAwLDcgKzE1NzE5LDcgQEAKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKIGFjX2NzX3ZlcnNpb249IlxcCi1weXRob24gY29uZmlnLnN0YXR1cyAzLjMKK3B5dGhvbiBjb25maWcuc3RhdHVzIDMuNAogY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LAogICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKIApAQCAtMTU4MzEsNiArMTU4NTAsNyBAQAogICAgICJNYWtlZmlsZS5wcmUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUucHJlIiA7OwogICAgICJNb2R1bGVzL1NldHVwLmNvbmZpZyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNb2R1bGVzL1NldHVwLmNvbmZpZyIgOzsKICAgICAiTWlzYy9weXRob24ucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWlzYy9weXRob24ucGMiIDs7CisgICAgIk1pc2MvcHl0aG9uLWNvbmZpZy5zaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNaXNjL3B5dGhvbi1jb25maWcuc2giIDs7CiAgICAgIk1vZHVsZXMvbGRfc29fYWl4IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIE1vZHVsZXMvbGRfc29fYWl4IiA7OwogCiAgICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDUwMWMxZGEuLjAzMGI5MjMgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMykKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy40KQogCiBBQ19QUkVSRVEoMi42NSkKIApAQCAtOTE3LDYgKzkxNyw3IEBACiAKICMgT3RoZXIgcGxhdGZvcm1zIGZvbGxvdwogaWYgdGVzdCAkZW5hYmxlX3NoYXJlZCA9ICJ5ZXMiOyB0aGVuCisgIFBZX0VOQUJMRV9TSEFSRUQ9MQogICBBQ19ERUZJTkUoUHlfRU5BQkxFX1NIQVJFRCwgMSwgW0RlZmluZWQgaWYgUHl0aG9uIGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnkuXSkKICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgIENZR1dJTiopCkBAIC05NzIsNiArOTczLDcgQEAKIAogICBlc2FjCiBlbHNlICMgc2hhcmVkIGlzIGRpc2FibGVkCisgIFBZX0VOQUJMRV9TSEFSRUQ9MAogICBjYXNlICRhY19zeXNfc3lzdGVtIGluCiAgICAgQ1lHV0lOKikKICAgICAgICAgICBCTERMSUJSQVJZPSckKExJQlJBUlkpJwpAQCAtMTE4Miw2ICsxMTg0LDI4IEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAorICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKwkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgIGZpCisKICAgICAjIGlmIHVzaW5nIGdjYyBvbiBhbHBoYSwgdXNlIC1taWVlZSB0byBnZXQgKG5lYXIpIGZ1bGwgSUVFRSA3NTQKICAgICAjIHN1cHBvcnQuICBXaXRob3V0IHRoaXMsIHRyZWF0bWVudCBvZiBzdWJub3JtYWxzIGRvZXNuJ3QgZm9sbG93CiAgICAgIyB0aGUgc3RhbmRhcmQuCkBAIC0xMzI2LDI0ICsxMzUwLDYgQEAKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAkYWNfYXJjaF9mbGFncyIKIGZpCiAKLSMgQ2hlY2sgd2hldGhlciBHQ0Mgc3VwcG9ydHMgUHlBcmdfUGFyc2VUdXBsZSBmb3JtYXQKLWlmIHRlc3QgIiRHQ0MiID0gInllcyIKLXRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgZ2NjIHN1cHBvcnRzIFBhcnNlVHVwbGUgX19mb3JtYXRfXykKLSAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKLSAgQUNfQ09NUElMRV9JRkVMU0UoWwotICAgIEFDX0xBTkdfUFJPR1JBTShbW3ZvaWQgZihjaGFyKiwuLi4pX19hdHRyaWJ1dGUoKGZvcm1hdChQeUFyZ19QYXJzZVR1cGxlLCAxLCAyKSkpO11dLCBbW11dKQotICBdLFsKLSAgICBBQ19ERUZJTkUoSEFWRV9BVFRSSUJVVEVfRk9STUFUX1BBUlNFVFVQTEUsIDEsCi0gICAgICBbRGVmaW5lIGlmIEdDQyBzdXBwb3J0cyBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoUHlBcmdfUGFyc2VUdXBsZSwgMiwgMykpKV0pCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gIF0sWwotICAgIEFDX01TR19SRVNVTFQobm8pCi0gIF0pCi0gIENGTEFHUz0kc2F2ZV9DRkxBR1MKLWZpCi0KICMgT24gc29tZSBjb21waWxlcnMsIHB0aHJlYWRzIGFyZSBhdmFpbGFibGUgd2l0aG91dCBmdXJ0aGVyIG9wdGlvbnMKICMgKGUuZy4gTWFjT1MgWCkuIE9uIHNvbWUgb2YgdGhlc2Ugc3lzdGVtcywgdGhlIGNvbXBpbGVyIHdpbGwgbm90CiAjIGNvbXBsYWluIGlmIHVuYWNjZXB0ZWQgb3B0aW9ucyBhcmUgcGFzc2VkIChlLmcuIGdjYyBvbiBNYWMgT1MgWCkuCkBAIC0xNTY2LDcgKzE1NzIsNyBAQAogXSkKIAogIyBPbiBMaW51eCwgY2FuLmggYW5kIGNhbi9yYXcuaCByZXF1aXJlIHN5cy9zb2NrZXQuaAotQUNfQ0hFQ0tfSEVBREVSUyhsaW51eC9jYW4uaCBsaW51eC9jYW4vcmF3LmgsLCxbCitBQ19DSEVDS19IRUFERVJTKGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaCBsaW51eC9jYW4vYmNtLmgsLCxbCiAjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjZW5kaWYKQEAgLTIxMDgsNiArMjExNCwxMiBAQAogCSMgLXUgbGlic3lzX3MgcHVsbHMgaW4gYWxsIHN5bWJvbHMgaW4gbGlic3lzCiAJRGFyd2luLyopIAogCQlMSU5LRk9SU0hBUkVEPSIkZXh0cmFfdW5kZWZzIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24iCisKKwkJIyBJc3N1ZSAjMTgwNzU6IHRoZSBkZWZhdWx0IG1heGltdW0gc3RhY2sgc2l6ZSAoOE1CeXRlcykgaXMgdG9vCisJCSMgc21hbGwgZm9yIHRoZSBkZWZhdWx0IHJlY3Vyc2lvbiBsaW1pdC4gSW5jcmVhc2UgdGhlIHN0YWNrIHNpemUKKwkJIyB0byBlbnN1cmUgdGhhdCB0ZXN0cyBkb24ndCBjcmFzaAorCQlMSU5LRk9SU0hBUkVEPSItV2wsLXN0YWNrX3NpemUsMTAwMDAwMCAkTElOS0ZPUlNIQVJFRCIKKwogCQlpZiB0ZXN0ICIkZW5hYmxlX2ZyYW1ld29yayIKIAkJdGhlbgogCQkJTElOS0ZPUlNIQVJFRD0iJExJTktGT1JTSEFSRUQgIickKFBZVEhPTkZSQU1FV09SS0RJUikvVmVyc2lvbnMvJChWRVJTSU9OKS8kKFBZVEhPTkZSQU1FV09SSyknCkBAIC0yODE0LDcgKzI4MjYsNyBAQAogIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCiAgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCi0gd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5KQorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3bWVtY21wIHdyaXRldiBfZ2V0cHR5KQogCiBBQ19DSEVDS19ERUNMKGRpcmZkLAogICAgIEFDX0RFRklORShIQVZFX0RJUkZELCAxLApAQCAtMzk1NCw2ICszOTY2LDExIEBACiBMRFZFUlNJT049JyQoVkVSU0lPTikkKEFCSUZMQUdTKScKIEFDX01TR19SRVNVTFQoJExEVkVSU0lPTikKIAorZG5sIGRlZmluZSBMSUJQTCBhZnRlciBBQklGTEFHUyBhbmQgTERWRVJTSU9OIGlzIGRlZmluZWQuCitBQ19TVUJTVChQWV9FTkFCTEVfU0hBUkVEKQorTElCUEw9IiR7cHJlZml4fS9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorQUNfU1VCU1QoTElCUEwpCisKICMgQ2hlY2sgd2hldGhlciByaWdodCBzaGlmdGluZyBhIG5lZ2F0aXZlIGludGVnZXIgZXh0ZW5kcyB0aGUgc2lnbiBiaXQKICMgb3IgZmlsbHMgd2l0aCB6ZXJvcyAobGlrZSB0aGUgQ3JheSBKOTAsIGFjY29yZGluZyB0byBUaW0gUGV0ZXJzKS4KIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHJpZ2h0IHNoaWZ0IGV4dGVuZHMgdGhlIHNpZ24gYml0KQpAQCAtNDYzMyw3ICs0NjUwLDcgQEAKIGZpCiAKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCi1BQ19DT05GSUdfRklMRVMoTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjKQorQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyBNaXNjL3B5dGhvbi1jb25maWcuc2gpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKIEFDX09VVFBVVAogCmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCBiYTA2ZmY0Li4xNjBlYzc5IDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTY0LDkgKzY0LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYXRhbmgnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQVRBTkgKIAotLyogRGVmaW5lIGlmIEdDQyBzdXBwb3J0cyBfX2F0dHJpYnV0ZV9fKChmb3JtYXQoUHlBcmdfUGFyc2VUdXBsZSwgMiwgMykpKSAqLwotI3VuZGVmIEhBVkVfQVRUUklCVVRFX0ZPUk1BVF9QQVJTRVRVUExFCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQklORF9URVhURE9NQUlOX0NPREVTRVQKIApAQCAtNTA0LDYgKzUwMSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxpbmthdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9MSU5LQVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4vYmNtLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX0JDTV9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElOVVhfQ0FOX0gKIApAQCAtMTExOCw2ICsxMTE4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2NzeGZybScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9XQ1NYRlJNCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd21lbWNtcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9XTUVNQ01QCisKIC8qIERlZmluZSBpZiB0enNldCgpIGFjdHVhbGx5IHN3aXRjaGVzIHRoZSBsb2NhbCB0aW1lem9uZSBpbiBhIG1lYW5pbmdmdWwgd2F5LgogICAgKi8KICN1bmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggNDYxZDM3OS4uZDQ3MGU4ZiAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTEsNyArMSw3IEBACiAjIEF1dG9kZXRlY3Rpbmcgc2V0dXAucHkgc2NyaXB0IGZvciBidWlsZGluZyB0aGUgUHl0aG9uIGV4dGVuc2lvbnMKICMKIAotaW1wb3J0IHN5cywgb3MsIGltcCwgcmUsIG9wdHBhcnNlCitpbXBvcnQgc3lzLCBvcywgaW1wb3J0bGliLm1hY2hpbmVyeSwgcmUsIG9wdHBhcnNlCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIGltcG9ydCBzeXNjb25maWcKIApAQCAtMjU5LDggKzI1OSw5IEBACiAKICAgICAgICAgaWYgbWlzc2luZzoKICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgIHByaW50KCJQeXRob24gYnVpbGQgZmluaXNoZWQsIGJ1dCB0aGUgbmVjZXNzYXJ5IGJpdHMgdG8gYnVpbGQgIgotICAgICAgICAgICAgICAgICAgICJ0aGVzZSBtb2R1bGVzIHdlcmUgbm90IGZvdW5kOiIpCisgICAgICAgICAgICBwcmludCgiUHl0aG9uIGJ1aWxkIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSEiKQorICAgICAgICAgICAgcHJpbnQoIlRoZSBuZWNlc3NhcnkgYml0cyB0byBidWlsZCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIHdlcmUgbm90ICIKKyAgICAgICAgICAgICAgICAgICJmb3VuZDoiKQogICAgICAgICAgICAgcHJpbnRfdGhyZWVfY29sdW1uKG1pc3NpbmcpCiAgICAgICAgICAgICBwcmludCgiVG8gZmluZCB0aGUgbmVjZXNzYXJ5IGJpdHMsIGxvb2sgaW4gc2V0dXAucHkgaW4iCiAgICAgICAgICAgICAgICAgICAiIGRldGVjdF9tb2R1bGVzKCkgZm9yIHRoZSBtb2R1bGUncyBuYW1lLiIpCkBAIC0zMjUsOCArMzI2LDkgQEAKICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKGV4dC5uYW1lLCBleHRfZmlsZW5hbWUpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcC5sb2FkX2R5bmFtaWMoZXh0Lm5hbWUsIGV4dF9maWxlbmFtZSkKKyAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZSgpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCcqKiogV0FSTklORzogcmVuYW1pbmcgIiVzIiBzaW5jZSBpbXBvcnRpbmcgaXQnCkBAIC01ODgsNiArNTkwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsndGVzdGNhcGlfbG9uZy5oJ10pICkKICAgICAgICAgIyBQeXRob24gUEVQLTMxMTggKGJ1ZmZlciBwcm90b2NvbCkgdGVzdCBtb2R1bGUKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3Rlc3RidWZmZXInLCBbJ190ZXN0YnVmZmVyLmMnXSkgKQorICAgICAgICAjIFRlc3QgbG9hZGluZyBtdWx0aXBsZSBtb2R1bGVzIGZyb20gb25lIGNvbXBpbGVkIGZpbGUgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNjQyMSkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3Rlc3RpbXBvcnRtdWx0aXBsZScsIFsnX3Rlc3RpbXBvcnRtdWx0aXBsZS5jJ10pICkKICAgICAgICAgIyBwcm9maWxlciAoX2xzcHJvZiBpcyBmb3IgY1Byb2ZpbGUucHkpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sc3Byb2YnLCBbJ19sc3Byb2YuYycsICdyb3RhdGluZ3RyZWUuYyddKSApCiAgICAgICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCkBAIC03ODQsMTAgKzc4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBpbmNmaWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG9wZW5zc2xfdmVyX3JlLm1hdGNoKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zc2xfdmVyID0gZXZhbChtLmdyb3VwKDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zc2xfdmVyID0gaW50KG0uZ3JvdXAoMSksIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBtc2c6CiAgICAgICAgICAgICAgICAgcHJpbnQoIklPRXJyb3Igd2hpbGUgcmVhZGluZyBvcGVuc3Nodi5oOiIsIG1zZykKLSAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgI3ByaW50KCdvcGVuc3NsX3ZlciA9IDB4JTA4eCcgJSBvcGVuc3NsX3ZlcikKICAgICAgICAgbWluX29wZW5zc2xfdmVyID0gMHgwMDkwNzAwMApAQCAtODIxLDYgKzgyNSwxNSBAQAogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCiAKKyAgICAgICAgIyBTSEEtMyAoS2VjY2FrKSBtb2R1bGUKKyAgICAgICAgc2hhM19kZXBlbmRzID0gWydoYXNobGliLmgnXQorICAgICAgICBrZWNjYWsgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwgJ01vZHVsZXMnLCAnX3NoYTMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tlY2NhaycpCisgICAgICAgIGZvciBwYXR0ZXJuIGluICgnKi5jJywgJyouaCcsICcqLm1hY3JvcycpOgorICAgICAgICAgICAgc2hhM19kZXBlbmRzLmV4dGVuZChnbG9iKG9zLnBhdGguam9pbihrZWNjYWssIHBhdHRlcm4pKSkKKyAgICAgICAgZXh0cy5hcHBlbmQoRXh0ZW5zaW9uKCJfc2hhMyIsIFsiX3NoYTMvc2hhM21vZHVsZS5jIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPXNoYTNfZGVwZW5kcykpCisKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICMgeW91ciBtYWNoaW5lLCB0aG91Z2ggbm9uZSBhcmUgZGVmaW5lZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgbGlicmFyeQpAQCAtMTUwNywxMCArMTUyMCw2IEBACiAKICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24oJ19nZXN0YWx0JywgWydfZ2VzdGFsdC5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1bJy1mcmFtZXdvcmsnLCAnQ2FyYm9uJ10pCi0gICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24oJ19zY3Byb3h5JywgWydfc2Nwcm94eS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1bCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZyYW1ld29yaycsICdTeXN0ZW1Db25maWd1cmF0aW9uJywKQEAgLTIxMTMsNyArMjEyMiw3IEBACiBwcm9ncmFtbWFibGUgaW50ZXJmYWNlLgogCiBUaGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGlzIHBvcnRhYmxlOiBpdCBydW5zIG9uIG1hbnkgYnJhbmRzIG9mIFVOSVgsCi1vbiBXaW5kb3dzLCBET1MsIE9TLzIsIE1hYywgQW1pZ2EuLi4gSWYgeW91ciBmYXZvcml0ZSBzeXN0ZW0gaXNuJ3QKK29uIFdpbmRvd3MsIERPUywgTWFjLCBBbWlnYS4uLiBJZiB5b3VyIGZhdm9yaXRlIHN5c3RlbSBpc24ndAogbGlzdGVkIGhlcmUsIGl0IG1heSBzdGlsbCBiZSBzdXBwb3J0ZWQsIGlmIHRoZXJlJ3MgYSBDIGNvbXBpbGVyIGZvcgogaXQuIEFzayBhcm91bmQgb24gY29tcC5sYW5nLnB5dGhvbiAtLSBvciBqdXN0IHRyeSBjb21waWxpbmcgUHl0aG9uCiB5b3Vyc2VsZi4K